diff options
| author | Keith Packard <keithp@keithp.com> | 2014-05-15 23:34:17 -0600 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2014-05-15 23:38:40 -0600 | 
| commit | 211d9af507daf9a8611ed1813415bee27e3839eb (patch) | |
| tree | 5d0873cea2e3d2a0cf2a41be748ef29a792c64eb | |
| parent | 0bf1c74e83fe49a11916b52596363f4dd56c522c (diff) | |
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 <keithp@keithp.com>
| -rw-r--r-- | src/lpc/ao_boot.h | 4 | ||||
| -rw-r--r-- | src/lpc/ao_boot_chain.c | 4 | ||||
| -rw-r--r-- | src/stm/ao_boot.h | 4 | ||||
| -rw-r--r-- | src/stm/ao_boot_chain.c | 2 | 
4 files changed, 9 insertions, 5 deletions
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);  	}  | 
