clear data segment only if we are running from ROM/flash

This commit is contained in:
Markus Fröschle
2013-10-15 05:07:18 +00:00
parent 58cbdef3d8
commit 17f423d777

View File

@@ -840,17 +840,12 @@ extern uint8_t _BAS_RESIDENT_TEXT_SIZE[];
void clear_datasegment(void)
{
uint16_t *p;
extern uint16_t _BAS_DATA_START[];
uint16_t *BAS_DATA_START = &_BAS_DATA_START[0];
extern uint16_t _BAS_DATA_END[];
uint16_t *BAS_DATA_END = &_BAS_DATA_END[0];
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];
p = BAS_DATA_START;
while (p < BAS_DATA_END)
{
*p++ = 0L;
}
bzero(BAS_DATA_START, BAS_DATA_END - BAS_DATA_START);
}
void initialize_hardware(void) {
@@ -882,7 +877,10 @@ void initialize_hardware(void) {
return;
}
clear_datasegment();
if (BAS_LMA != BAS_IN_RAM)
{
clear_datasegment();
}
init_gpio();
init_serial();