diff options
author | Wolfgang Denk <wd@denx.de> | 2008-09-22 22:23:06 +0200 |
---|---|---|
committer | Wolfgang Denk <wd@denx.de> | 2008-09-22 22:23:06 +0200 |
commit | 5fdc215f0b351b0c36cc3f8a0fa5850f24454bed (patch) | |
tree | e3098bd82da0b380a0daa3042b6776ab9254990e /cpu/mpc8xx/scc.c | |
parent | a07faf7b9ad5a86763a577c79922c4ff9a70ef23 (diff) |
Fix DPRAM memory leak when CFG_ALLOC_DPRAM is defined, which
eventually leads to a machine check. This change assures that DPRAM
is allocated only once in that case.
Signed-off-by: Gary Jennejohn <garyj@denx.de>
Signed-off-by: Wolfgang Denk <wd@denx.de>
Diffstat (limited to 'cpu/mpc8xx/scc.c')
-rw-r--r-- | cpu/mpc8xx/scc.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/cpu/mpc8xx/scc.c b/cpu/mpc8xx/scc.c index 09a3db107b7..09a6348fd0e 100644 --- a/cpu/mpc8xx/scc.c +++ b/cpu/mpc8xx/scc.c @@ -215,12 +215,14 @@ static int scc_init (struct eth_device *dev, bd_t * bis) rxIdx = 0; txIdx = 0; + if (!rtx) { #ifdef CFG_ALLOC_DPRAM - rtx = (RTXBD *) (immr->im_cpm.cp_dpmem + - dpram_alloc_align (sizeof (RTXBD), 8)); + rtx = (RTXBD *) (immr->im_cpm.cp_dpmem + + dpram_alloc_align (sizeof (RTXBD), 8)); #else - rtx = (RTXBD *) (immr->im_cpm.cp_dpmem + CPM_SCC_BASE); -#endif /* 0 */ + rtx = (RTXBD *) (immr->im_cpm.cp_dpmem + CPM_SCC_BASE); +#endif + } #if (defined(PA_ENET_RXD) && defined(PA_ENET_TXD)) /* Configure port A pins for Txd and Rxd. |