diff options
| author | Jeff Epler <jepler@gmail.com> | 2018-04-03 21:20:42 -0500 |
|---|---|---|
| committer | Jeff Epler <jepler@gmail.com> | 2018-04-03 21:40:10 -0500 |
| commit | 5eb9f9d06074bf532683b268bc5370cfa33ce8ba (patch) | |
| tree | 8935c6a496ea0583cfcbb086a45f3947e5be69cb | |
| parent | 98c7d70fe406d66d80c3c9cc888602f96cf444c4 (diff) | |
atmel-samd: Fix rebooting to bootloader
Commit efbf08266b6 moved _estack in order to ensure 8-byte alignment
of the stack, but the address of _bootloader_dbl_tap must remain
right at the end of SRAM.
I verified by reading the source that the 4-byte-aligned address is
used for all samd21 / samd51 boards in
adafruit/circuitpython@efbf08266b. However, I only tested on
trinket_m0.
Closes: #739
9 files changed, 9 insertions, 9 deletions
diff --git a/ports/atmel-samd/boards/samd21x18-bootloader-crystalless.ld b/ports/atmel-samd/boards/samd21x18-bootloader-crystalless.ld index 3b3c58ad2..2adf4fa90 100644 --- a/ports/atmel-samd/boards/samd21x18-bootloader-crystalless.ld +++ b/ports/atmel-samd/boards/samd21x18-bootloader-crystalless.ld @@ -13,7 +13,7 @@ MEMORY /* top end of the stack */ /* stack must be double-word (8 byte) aligned */ _estack = ORIGIN(RAM) + LENGTH(RAM) - 8; -_bootloader_dbl_tap = _estack; +_bootloader_dbl_tap = ORIGIN(RAM) + LENGTH(RAM) - 4; /* define output sections */ SECTIONS diff --git a/ports/atmel-samd/boards/samd21x18-bootloader-external-flash-crystalless.ld b/ports/atmel-samd/boards/samd21x18-bootloader-external-flash-crystalless.ld index 7d86dea1f..bddaae99d 100644 --- a/ports/atmel-samd/boards/samd21x18-bootloader-external-flash-crystalless.ld +++ b/ports/atmel-samd/boards/samd21x18-bootloader-external-flash-crystalless.ld @@ -13,7 +13,7 @@ MEMORY /* top end of the stack */ /* stack must be double-word (8 byte) aligned */ _estack = ORIGIN(RAM) + LENGTH(RAM) - 8; -_bootloader_dbl_tap = _estack; +_bootloader_dbl_tap = ORIGIN(RAM) + LENGTH(RAM) - 4; /* define output sections */ SECTIONS diff --git a/ports/atmel-samd/boards/samd21x18-bootloader-external-flash.ld b/ports/atmel-samd/boards/samd21x18-bootloader-external-flash.ld index 66bceee00..4e677a079 100644 --- a/ports/atmel-samd/boards/samd21x18-bootloader-external-flash.ld +++ b/ports/atmel-samd/boards/samd21x18-bootloader-external-flash.ld @@ -13,7 +13,7 @@ MEMORY /* top end of the stack */ /* stack must be double-word (8 byte) aligned */ _estack = ORIGIN(RAM) + LENGTH(RAM) - 8; -_bootloader_dbl_tap = _estack; +_bootloader_dbl_tap = ORIGIN(RAM) + LENGTH(RAM) - 4; /* define output sections */ SECTIONS diff --git a/ports/atmel-samd/boards/samd21x18-bootloader.ld b/ports/atmel-samd/boards/samd21x18-bootloader.ld index 7e33ed007..3eb97ee02 100644 --- a/ports/atmel-samd/boards/samd21x18-bootloader.ld +++ b/ports/atmel-samd/boards/samd21x18-bootloader.ld @@ -13,7 +13,7 @@ MEMORY /* top end of the stack */ /* stack must be double-word (8 byte) aligned */ _estack = ORIGIN(RAM) + LENGTH(RAM) - 8; -_bootloader_dbl_tap = _estack; +_bootloader_dbl_tap = ORIGIN(RAM) + LENGTH(RAM) - 4; /* define output sections */ SECTIONS diff --git a/ports/atmel-samd/boards/samd51x18-bootloader-external-flash.ld b/ports/atmel-samd/boards/samd51x18-bootloader-external-flash.ld index 0fc476889..0bd2a8297 100644 --- a/ports/atmel-samd/boards/samd51x18-bootloader-external-flash.ld +++ b/ports/atmel-samd/boards/samd51x18-bootloader-external-flash.ld @@ -13,7 +13,7 @@ MEMORY /* top end of the stack */ /* stack must be double-word (8 byte) aligned */ _estack = ORIGIN(RAM) + LENGTH(RAM) - 8; -_bootloader_dbl_tap = _estack; +_bootloader_dbl_tap = ORIGIN(RAM) + LENGTH(RAM) - 4; /* define output sections */ SECTIONS diff --git a/ports/atmel-samd/boards/samd51x19-bootloader-external-flash.ld b/ports/atmel-samd/boards/samd51x19-bootloader-external-flash.ld index cd65e965d..b6b4f3265 100644 --- a/ports/atmel-samd/boards/samd51x19-bootloader-external-flash.ld +++ b/ports/atmel-samd/boards/samd51x19-bootloader-external-flash.ld @@ -13,7 +13,7 @@ MEMORY /* top end of the stack */ /* stack must be double-word (8 byte) aligned */ _estack = ORIGIN(RAM) + LENGTH(RAM) - 8; -_bootloader_dbl_tap = _estack; +_bootloader_dbl_tap = ORIGIN(RAM) + LENGTH(RAM) - 4; /* define output sections */ SECTIONS diff --git a/ports/atmel-samd/boards/samd51x19-bootloader.ld b/ports/atmel-samd/boards/samd51x19-bootloader.ld index 54e16a8f5..4876e8227 100644 --- a/ports/atmel-samd/boards/samd51x19-bootloader.ld +++ b/ports/atmel-samd/boards/samd51x19-bootloader.ld @@ -13,7 +13,7 @@ MEMORY /* top end of the stack */ /* stack must be double-word (8 byte) aligned */ _estack = ORIGIN(RAM) + LENGTH(RAM) - 8; -_bootloader_dbl_tap = _estack; +_bootloader_dbl_tap = ORIGIN(RAM) + LENGTH(RAM) - 4; /* define output sections */ SECTIONS diff --git a/ports/atmel-samd/boards/samd51x20-bootloader-external-flash.ld b/ports/atmel-samd/boards/samd51x20-bootloader-external-flash.ld index 148f4dd9f..3a1611279 100644 --- a/ports/atmel-samd/boards/samd51x20-bootloader-external-flash.ld +++ b/ports/atmel-samd/boards/samd51x20-bootloader-external-flash.ld @@ -13,7 +13,7 @@ MEMORY /* top end of the stack */ /* stack must be double-word (8 byte) aligned */ _estack = ORIGIN(RAM) + LENGTH(RAM) - 8; -_bootloader_dbl_tap = _estack; +_bootloader_dbl_tap = ORIGIN(RAM) + LENGTH(RAM) - 4; /* define output sections */ SECTIONS diff --git a/ports/atmel-samd/boards/samd51x20-bootloader.ld b/ports/atmel-samd/boards/samd51x20-bootloader.ld index c8a43e724..d3d37de3b 100644 --- a/ports/atmel-samd/boards/samd51x20-bootloader.ld +++ b/ports/atmel-samd/boards/samd51x20-bootloader.ld @@ -13,7 +13,7 @@ MEMORY /* top end of the stack */ /* stack must be double-word (8 byte) aligned */ _estack = ORIGIN(RAM) + LENGTH(RAM) - 8; -_bootloader_dbl_tap = _estack; +_bootloader_dbl_tap = ORIGIN(RAM) + LENGTH(RAM) - 4; /* define output sections */ SECTIONS |
