summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Epler <jepler@gmail.com>2018-04-03 21:20:42 -0500
committerJeff Epler <jepler@gmail.com>2018-04-03 21:40:10 -0500
commit5eb9f9d06074bf532683b268bc5370cfa33ce8ba (patch)
tree8935c6a496ea0583cfcbb086a45f3947e5be69cb
parent98c7d70fe406d66d80c3c9cc888602f96cf444c4 (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
-rw-r--r--ports/atmel-samd/boards/samd21x18-bootloader-crystalless.ld2
-rw-r--r--ports/atmel-samd/boards/samd21x18-bootloader-external-flash-crystalless.ld2
-rw-r--r--ports/atmel-samd/boards/samd21x18-bootloader-external-flash.ld2
-rw-r--r--ports/atmel-samd/boards/samd21x18-bootloader.ld2
-rw-r--r--ports/atmel-samd/boards/samd51x18-bootloader-external-flash.ld2
-rw-r--r--ports/atmel-samd/boards/samd51x19-bootloader-external-flash.ld2
-rw-r--r--ports/atmel-samd/boards/samd51x19-bootloader.ld2
-rw-r--r--ports/atmel-samd/boards/samd51x20-bootloader-external-flash.ld2
-rw-r--r--ports/atmel-samd/boards/samd51x20-bootloader.ld2
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