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