fixed .bss and .data copy; moved dma_init() back here
This commit is contained in:
@@ -921,16 +921,6 @@ extern uint8_t _BAS_RESIDENT_TEXT[];
|
|||||||
extern uint8_t _BAS_RESIDENT_TEXT_SIZE[];
|
extern uint8_t _BAS_RESIDENT_TEXT_SIZE[];
|
||||||
#define BAS_RESIDENT_TEXT_SIZE ((uint32_t) _BAS_RESIDENT_TEXT_SIZE)
|
#define BAS_RESIDENT_TEXT_SIZE ((uint32_t) _BAS_RESIDENT_TEXT_SIZE)
|
||||||
|
|
||||||
void clear_data_segment(void)
|
|
||||||
{
|
|
||||||
extern uint8_t _BAS_DATA_START[];
|
|
||||||
uint8_t *BAS_DATA_START = &_BAS_DATA_START[0];
|
|
||||||
extern uint8_t _BAS_DATA_END[];
|
|
||||||
uint8_t *BAS_DATA_END = &_BAS_DATA_END[0];
|
|
||||||
|
|
||||||
bzero(BAS_DATA_START, BAS_DATA_END - BAS_DATA_START);
|
|
||||||
}
|
|
||||||
|
|
||||||
void clear_bss_segment(void)
|
void clear_bss_segment(void)
|
||||||
{
|
{
|
||||||
extern uint8_t _BAS_BSS_START[];
|
extern uint8_t _BAS_BSS_START[];
|
||||||
@@ -938,7 +928,7 @@ void clear_bss_segment(void)
|
|||||||
extern uint8_t _BAS_BSS_END[];
|
extern uint8_t _BAS_BSS_END[];
|
||||||
uint8_t *BAS_BSS_END = &_BAS_BSS_END[0];
|
uint8_t *BAS_BSS_END = &_BAS_BSS_END[0];
|
||||||
|
|
||||||
bzero(BAS_BSS_START, BAS_BSS_END - BAS_BSS_END);
|
bzero(BAS_BSS_START, BAS_BSS_END - BAS_BSS_START - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void initialize_hardware(void)
|
void initialize_hardware(void)
|
||||||
@@ -972,9 +962,6 @@ void initialize_hardware(void)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif /* MACHINE_FIREBEE */
|
#endif /* MACHINE_FIREBEE */
|
||||||
|
|
||||||
clear_bss_segment();
|
|
||||||
|
|
||||||
init_gpio();
|
init_gpio();
|
||||||
init_serial();
|
init_serial();
|
||||||
|
|
||||||
@@ -1089,25 +1076,22 @@ void initialize_hardware(void)
|
|||||||
0 /* leave core clock enabled */
|
0 /* leave core clock enabled */
|
||||||
);
|
);
|
||||||
|
|
||||||
|
init_slt();
|
||||||
|
init_fbcs();
|
||||||
|
init_ddram();
|
||||||
|
|
||||||
|
/* the following only makes sense _after_ DDRAM has been initialized */
|
||||||
|
clear_bss_segment();
|
||||||
|
|
||||||
if (BAS_LMA != BAS_IN_RAM)
|
if (BAS_LMA != BAS_IN_RAM)
|
||||||
{
|
{
|
||||||
xprintf("copying BaS (%p - %p) to RAM (%p - %p)\r\n", BAS_LMA, BAS_LMA + BAS_SIZE, BAS_IN_RAM, BAS_IN_RAM + BAS_SIZE);
|
|
||||||
memcpy((void *) BAS_IN_RAM, BAS_LMA, BAS_SIZE);
|
memcpy((void *) BAS_IN_RAM, BAS_LMA, BAS_SIZE);
|
||||||
xprintf("finished.\r\n");
|
|
||||||
|
|
||||||
/* we have copied a code area, so flush the caches */
|
/* we have copied a code area, so flush the caches */
|
||||||
flush_and_invalidate_caches();
|
flush_and_invalidate_caches();
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
xprintf("no BaS copy necessary - running from RAM already\r\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
init_slt();
|
|
||||||
init_fbcs();
|
|
||||||
init_ddram();
|
|
||||||
#if MACHINE_FIREBEE
|
#if MACHINE_FIREBEE
|
||||||
init_fpga();
|
init_fpga();
|
||||||
init_pll();
|
init_pll();
|
||||||
@@ -1119,6 +1103,10 @@ void initialize_hardware(void)
|
|||||||
#if MACHINE_FIREBEE
|
#if MACHINE_FIREBEE
|
||||||
init_ac97();
|
init_ac97();
|
||||||
#endif /* MACHINE_FIREBEE */
|
#endif /* MACHINE_FIREBEE */
|
||||||
|
|
||||||
|
xprintf("initialize and test DMA\r\n");
|
||||||
|
dma_init();
|
||||||
|
|
||||||
/* jump into the BaS */
|
/* jump into the BaS */
|
||||||
extern void BaS(void);
|
extern void BaS(void);
|
||||||
BaS();
|
BaS();
|
||||||
|
|||||||
Reference in New Issue
Block a user