summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMyungJoo Ham <myungjoo.ham@samsung.com>2016-04-15 13:28:29 +0900
committerMyungJoo Ham <myungjoo.ham@samsung.com>2016-04-15 13:28:29 +0900
commitf97d3b2c2ff27f421c3b0bb5565f262314fe8880 (patch)
treeff3e0372a1d6bdaaf6812956cd195a9f4951fd0e
parentb0d613888c6c1b78add096a0832ba6ae7928f56c (diff)
downloadcoreclr-f97d3b2c2ff27f421c3b0bb5565f262314fe8880.tar.gz
coreclr-f97d3b2c2ff27f421c3b0bb5565f262314fe8880.tar.bz2
coreclr-f97d3b2c2ff27f421c3b0bb5565f262314fe8880.zip
ARM/Linux: Mark r0-r3 Saved
Without this, exception handlers (try-catch) that try to get SP of ThePreStub's caller (managed frame) mislocate the caller's SP by 4 words (0x10) and get lost while traversing managed frames. Fix #4107 Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
-rw-r--r--src/pal/inc/unixasmmacrosarm.inc1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/pal/inc/unixasmmacrosarm.inc b/src/pal/inc/unixasmmacrosarm.inc
index 006c23ae21..169a5a727f 100644
--- a/src/pal/inc/unixasmmacrosarm.inc
+++ b/src/pal/inc/unixasmmacrosarm.inc
@@ -85,6 +85,7 @@ C_FUNC(\Name\()_End):
.macro PUSH_ARGUMENT_REGISTERS
push {r0-r3}
+ .save {r0-r3}
.endm
.macro pop_register Reg