Mercurial > ecos
changeset 2773:4db2c98d89f8
* src/vectors.S (start): The loop to initialize BSS was using a
BLS to terminate. This caused an extra zero to be stored beyond
the end of __bss_end. Usually this is benign, but when __bss_end
is at the very top of RAM, and the hardware generates an exception
for illegal accesses, this can crash the program before it even
starts. The fix is to use a BLT instructions which will terminate
the loop 1 word earlier.
| author | nickg |
|---|---|
| date | Mon, 09 Feb 2009 15:34:49 +0000 |
| parents | 7337b9f24edf |
| children | 1a58c9c41c50 |
| files | packages/hal/arm/arch/current/ChangeLog packages/hal/arm/arch/current/src/vectors.S |
| diffstat | 2 files changed, 11 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/packages/hal/arm/arch/current/ChangeLog +++ b/packages/hal/arm/arch/current/ChangeLog @@ -1,3 +1,13 @@ +2009-02-09 Nick Garnett <nickg@ecoscentric.com> + + * src/vectors.S (start): The loop to initialize BSS was using a + BLS to terminate. This caused an extra zero to be stored beyond + the end of __bss_end. Usually this is benign, but when __bss_end + is at the very top of RAM, and the hardware generates an exception + for illegal accesses, this can crash the program before it even + starts. The fix is to use a BLT instructions which will terminate + the loop 1 word earlier. + 2009-02-02 Bart Veer <bartv@ecoscentric.com> * cdl/hal_arm.cdl: add new architectural CFLAGS and LDFLAGS
