From: Keith Packard Date: Fri, 16 May 2014 05:34:17 +0000 (-0600) Subject: altos: Use explicit boot loader signal in ao_boot_reboot X-Git-Tag: 1.3.2.2~91 X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=commitdiff_plain;h=211d9af507daf9a8611ed1813415bee27e3839eb altos: Use explicit boot loader signal in ao_boot_reboot Instead of just "knowing" that ao_boot_loader will be passed zero when the application wants to get back to the boot loader, explicitly define the values so that both sides always agree. Signed-off-by: Keith Packard --- diff --git a/src/lpc/ao_boot.h b/src/lpc/ao_boot.h index e0ed4de7..62392d25 100644 --- a/src/lpc/ao_boot.h +++ b/src/lpc/ao_boot.h @@ -31,9 +31,11 @@ ao_boot_check_chain(void); void ao_boot_reboot(uint32_t *base); +#define AO_BOOT_FORCE_LOADER ((uint32_t *) 0) + static inline void ao_boot_loader(void) { - ao_boot_reboot(AO_BOOT_LOADER_BASE); + ao_boot_reboot(AO_BOOT_FORCE_LOADER); } #endif /* _AO_BOOT_H_ */ diff --git a/src/lpc/ao_boot_chain.c b/src/lpc/ao_boot_chain.c index a08d1f2c..9e45ba27 100644 --- a/src/lpc/ao_boot_chain.c +++ b/src/lpc/ao_boot_chain.c @@ -43,14 +43,14 @@ struct ao_boot { }; static struct ao_boot __attribute__ ((section(".boot"))) ao_boot; - + int ao_boot_check_chain(void) { if (ao_boot.signal == AO_BOOT_SIGNAL && ao_boot.check == AO_BOOT_CHECK) { ao_boot.signal = 0; ao_boot.check = 0; - if (ao_boot.base == 0) + if (ao_boot.base == AO_BOOT_FORCE_LOADER) return 0; ao_boot_chain(ao_boot.base); } diff --git a/src/stm/ao_boot.h b/src/stm/ao_boot.h index e0ed4de7..62392d25 100644 --- a/src/stm/ao_boot.h +++ b/src/stm/ao_boot.h @@ -31,9 +31,11 @@ ao_boot_check_chain(void); void ao_boot_reboot(uint32_t *base); +#define AO_BOOT_FORCE_LOADER ((uint32_t *) 0) + static inline void ao_boot_loader(void) { - ao_boot_reboot(AO_BOOT_LOADER_BASE); + ao_boot_reboot(AO_BOOT_FORCE_LOADER); } #endif /* _AO_BOOT_H_ */ diff --git a/src/stm/ao_boot_chain.c b/src/stm/ao_boot_chain.c index 6a3864a7..bcebf033 100644 --- a/src/stm/ao_boot_chain.c +++ b/src/stm/ao_boot_chain.c @@ -50,7 +50,7 @@ ao_boot_check_chain(void) if (ao_boot.signal == AO_BOOT_SIGNAL && ao_boot.check == AO_BOOT_CHECK) { ao_boot.signal = 0; ao_boot.check = 0; - if (ao_boot.base == 0) + if (ao_boot.base == AO_BOOT_FORCE_LOADER) return 0; ao_boot_chain(ao_boot.base); }