summaryrefslogtreecommitdiff
path: root/src/drivers/ao_gps_skytraq.c
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2011-11-11 22:30:17 -0800
committerKeith Packard <keithp@keithp.com>2011-11-11 22:30:17 -0800
commitb132eefc5f63412bb4a98a4bb72b9055e40d5d42 (patch)
tree53f0d529cf30b21649b69cee3e5f8966adf86642 /src/drivers/ao_gps_skytraq.c
parent7ecde50fbebe68a2e2200a2f8d081fd37074f840 (diff)
altos: Make ao_xmem funcs require __xdata void * instead of casting
Having an explicit cast in the ao_xmem wrapper macros caused the compiler to generate garbage values for pdata addresses, making the upper byte 0x00 instead of the required 0xf0. Removing the casts from the ao_xmem macros exposed this problem, so a new PDATA_TO_XDATA macros was added, along with a CODE_TO_XDATA macro which serve to cast pointers, with suitable address modifications, so that things work again. Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src/drivers/ao_gps_skytraq.c')
-rw-r--r--src/drivers/ao_gps_skytraq.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/src/drivers/ao_gps_skytraq.c b/src/drivers/ao_gps_skytraq.c
index 1d457a1f..62909606 100644
--- a/src/drivers/ao_gps_skytraq.c
+++ b/src/drivers/ao_gps_skytraq.c
@@ -285,7 +285,7 @@ ao_nmea_gga(void)
if (!ao_gps_error) {
ao_mutex_get(&ao_gps_mutex);
ao_gps_tick = ao_gps_next_tick;
- ao_xmemcpy(&ao_gps_data, &ao_gps_next, sizeof (ao_gps_data));
+ ao_xmemcpy(&ao_gps_data, PDATA_TO_XDATA(&ao_gps_next), sizeof (ao_gps_data));
ao_mutex_put(&ao_gps_mutex);
ao_wakeup(&ao_gps_data);
}
@@ -343,8 +343,7 @@ ao_nmea_gsv(void)
ao_gps_tracking_next.channels = 0;
else if (done) {
ao_mutex_get(&ao_gps_mutex);
- ao_xmemcpy(&ao_gps_tracking_data, &ao_gps_tracking_next,
- sizeof(ao_gps_tracking_data));
+ ao_xmemcpy(&ao_gps_tracking_data, PDATA_TO_XDATA(&ao_gps_tracking_next), sizeof(ao_gps_tracking_data));
ao_mutex_put(&ao_gps_mutex);
ao_wakeup(&ao_gps_tracking_data);
}