aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jonas Schievink <jonasschievink@gmail.com> 2021-01-06 17:38:26 +0100
committerGravatar Jonas Schievink <jonasschievink@gmail.com> 2021-01-06 17:38:26 +0100
commitbf037b3f4b9993aa6d00d39543b410d1d9d18cdd (patch)
tree56e2247f88f10c9a4ed9dfc271975f8fe91496fd
parent35dc34beed25f633b322e273140f6a9e4123acd3 (diff)
downloadcortex-m-bf037b3f4b9993aa6d00d39543b410d1d9d18cdd.tar.gz
cortex-m-bf037b3f4b9993aa6d00d39543b410d1d9d18cdd.tar.zst
cortex-m-bf037b3f4b9993aa6d00d39543b410d1d9d18cdd.zip
Restore LR after __pre_init call
-rw-r--r--cortex-m-rt/asm.s8
-rw-r--r--cortex-m-rt/bin/thumbv6m-none-eabi.abin1946 -> 1950 bytes
-rw-r--r--cortex-m-rt/bin/thumbv7em-none-eabi.abin1922 -> 1926 bytes
-rw-r--r--cortex-m-rt/bin/thumbv7em-none-eabihf.abin1922 -> 1926 bytes
-rw-r--r--cortex-m-rt/bin/thumbv7m-none-eabi.abin1922 -> 1926 bytes
-rw-r--r--cortex-m-rt/bin/thumbv8m.base-none-eabi.abin1966 -> 1970 bytes
-rw-r--r--cortex-m-rt/bin/thumbv8m.main-none-eabi.abin1926 -> 1930 bytes
-rw-r--r--cortex-m-rt/bin/thumbv8m.main-none-eabihf.abin1926 -> 1930 bytes
8 files changed, 6 insertions, 2 deletions
diff --git a/cortex-m-rt/asm.s b/cortex-m-rt/asm.s
index 7a36197..1cb310a 100644
--- a/cortex-m-rt/asm.s
+++ b/cortex-m-rt/asm.s
@@ -60,12 +60,16 @@ FpuTrampoline:
.cfi_startproc
PreResetTrampoline:
# set LR to the initial value used by the ARMv7-M (0xFFFF_FFFF)
- ldr r0,=0xffffffff
- mov lr,r0
+ ldr r4,=0xffffffff
+ mov lr,r4
# run the pre-init code
bl __pre_init
+ # the call above clobbers LR, but tools may expect LR to be 0xFFFFFFFF when reaching the first
+ # call frame, so we restore it to its previous value (r4 is preserved by subroutines)
+ mov lr,r4
+
# initialize .data and .bss memory
ldr r0,=__sbss
ldr r1,=__ebss
diff --git a/cortex-m-rt/bin/thumbv6m-none-eabi.a b/cortex-m-rt/bin/thumbv6m-none-eabi.a
index 674b34a..207dad2 100644
--- a/cortex-m-rt/bin/thumbv6m-none-eabi.a
+++ b/cortex-m-rt/bin/thumbv6m-none-eabi.a
Binary files differ
diff --git a/cortex-m-rt/bin/thumbv7em-none-eabi.a b/cortex-m-rt/bin/thumbv7em-none-eabi.a
index a0302b1..18509c1 100644
--- a/cortex-m-rt/bin/thumbv7em-none-eabi.a
+++ b/cortex-m-rt/bin/thumbv7em-none-eabi.a
Binary files differ
diff --git a/cortex-m-rt/bin/thumbv7em-none-eabihf.a b/cortex-m-rt/bin/thumbv7em-none-eabihf.a
index a0302b1..18509c1 100644
--- a/cortex-m-rt/bin/thumbv7em-none-eabihf.a
+++ b/cortex-m-rt/bin/thumbv7em-none-eabihf.a
Binary files differ
diff --git a/cortex-m-rt/bin/thumbv7m-none-eabi.a b/cortex-m-rt/bin/thumbv7m-none-eabi.a
index 0298e64..59fdb28 100644
--- a/cortex-m-rt/bin/thumbv7m-none-eabi.a
+++ b/cortex-m-rt/bin/thumbv7m-none-eabi.a
Binary files differ
diff --git a/cortex-m-rt/bin/thumbv8m.base-none-eabi.a b/cortex-m-rt/bin/thumbv8m.base-none-eabi.a
index 8a3cfcf..4c28721 100644
--- a/cortex-m-rt/bin/thumbv8m.base-none-eabi.a
+++ b/cortex-m-rt/bin/thumbv8m.base-none-eabi.a
Binary files differ
diff --git a/cortex-m-rt/bin/thumbv8m.main-none-eabi.a b/cortex-m-rt/bin/thumbv8m.main-none-eabi.a
index 02bcf02..5a23da5 100644
--- a/cortex-m-rt/bin/thumbv8m.main-none-eabi.a
+++ b/cortex-m-rt/bin/thumbv8m.main-none-eabi.a
Binary files differ
diff --git a/cortex-m-rt/bin/thumbv8m.main-none-eabihf.a b/cortex-m-rt/bin/thumbv8m.main-none-eabihf.a
index 02bcf02..5a23da5 100644
--- a/cortex-m-rt/bin/thumbv8m.main-none-eabihf.a
+++ b/cortex-m-rt/bin/thumbv8m.main-none-eabihf.a
Binary files differ