From: Keith Packard Date: Fri, 16 Oct 2009 03:56:45 +0000 (+0900) Subject: Save some DSEG space by marking cmd functions __reentrant X-Git-Tag: 0.6~21 X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=commitdiff_plain;h=d709a0688eff84e25e24d755850ef045d6b0c3de;hp=69b6f6bb465163cf767bb68e0e4a716d8ad2b39c Save some DSEG space by marking cmd functions __reentrant __reentrant causes the compiler to place args and locals on the stack instead of in the data segment. Signed-off-by: Keith Packard --- diff --git a/src/ao_adc.c b/src/ao_adc.c index 26209dcf..d9672671 100644 --- a/src/ao_adc.c +++ b/src/ao_adc.c @@ -61,9 +61,9 @@ ao_adc_isr(void) interrupt 1 } static void -ao_adc_dump(void) +ao_adc_dump(void) __reentrant { - __xdata struct ao_adc packet; + static __xdata struct ao_adc packet; ao_adc_get(&packet); printf("tick: %5u accel: %4d pres: %4d temp: %4d batt: %4d drogue: %4d main: %4d\n", packet.tick, packet.accel >> 4, packet.pres >> 4, packet.temp >> 4, diff --git a/src/ao_ee.c b/src/ao_ee.c index 9b6db234..26cfb7fd 100644 --- a/src/ao_ee.c +++ b/src/ao_ee.c @@ -351,11 +351,11 @@ ao_ee_read_config(uint8_t *buf, uint16_t len) __reentrant } static void -ee_dump(void) +ee_dump(void) __reentrant { - __xdata uint8_t b; - __xdata uint16_t block; - __xdata uint8_t i; + uint8_t b; + uint16_t block; + uint8_t i; ao_cmd_hex(); block = ao_cmd_lex_i; @@ -377,13 +377,13 @@ ee_dump(void) } static void -ee_store(void) +ee_store(void) __reentrant { - __xdata uint16_t block; - __xdata uint8_t i; - __xdata uint16_t len; - __xdata uint8_t b; - __xdata uint32_t addr; + uint16_t block; + uint8_t i; + uint16_t len; + uint8_t b; + uint32_t addr; ao_cmd_hex(); block = ao_cmd_lex_i; diff --git a/src/ao_flight.c b/src/ao_flight.c index ec89e7c2..c43d0711 100644 --- a/src/ao_flight.c +++ b/src/ao_flight.c @@ -458,7 +458,7 @@ ao_flight(void) #define AO_VEL_COUNT_TO_MS(count) ((int16_t) ((count) / 2700)) static void -ao_flight_status(void) +ao_flight_status(void) __reentrant { printf("STATE: %7s accel: %d speed: %d altitude: %d main: %d\n", ao_state_names[ao_flight_state], diff --git a/src/ao_gps_sirf.c b/src/ao_gps_sirf.c index 2b3a5178..58438760 100644 --- a/src/ao_gps_sirf.c +++ b/src/ao_gps_sirf.c @@ -302,7 +302,7 @@ static const char ao_gps_set_message_rate[] = { }; void -ao_sirf_set_message_rate(uint8_t msg, uint8_t rate) +ao_sirf_set_message_rate(uint8_t msg, uint8_t rate) __reentrant { uint16_t cksum = 0x00a6; uint8_t i; diff --git a/src/ao_log.c b/src/ao_log.c index 7945ace4..b2bfbd6f 100644 --- a/src/ao_log.c +++ b/src/ao_log.c @@ -192,7 +192,7 @@ ao_log_stop(void) } static void -dump_log(void) +dump_log(void) __reentrant { uint8_t more; diff --git a/src/ao_usb.c b/src/ao_usb.c index 22665725..8926b9ca 100644 --- a/src/ao_usb.c +++ b/src/ao_usb.c @@ -72,7 +72,7 @@ uint8_t * __xdata ao_usb_ep0_in_data; __xdata uint8_t ao_usb_ep0_in_len; __xdata uint8_t ao_usb_ep0_in_buf[2]; __xdata uint8_t ao_usb_ep0_out_len; -__xdata uint8_t *__data ao_usb_ep0_out_data; +__xdata uint8_t *__xdata ao_usb_ep0_out_data; __xdata uint8_t ao_usb_configuration; /* Send an IN data packet */