summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cpukit/score/cpu/arm/arm-context-validate.S26
1 files changed, 25 insertions, 1 deletions
diff --git a/cpukit/score/cpu/arm/arm-context-validate.S b/cpukit/score/cpu/arm/arm-context-validate.S
index d735bc63e0..25266918b9 100644
--- a/cpukit/score/cpu/arm/arm-context-validate.S
+++ b/cpukit/score/cpu/arm/arm-context-validate.S
@@ -44,6 +44,7 @@
#define FRAME_SIZE (FRAME_OFFSET_LR + 4)
#endif
+ .syntax unified
.section .text
#ifdef __thumb__
@@ -174,11 +175,34 @@ check:
bne restore
.endm
- cmp r2, sp
+ /* A compare involving the stack pointer is deprecated */
+ mov r1, sp
+ cmp r2, r1
bne restore
mov r1, r0
+#ifdef __thumb2__
+ cmp r1, r1
+ itttt eq
+ addeq r1, #1
+ addeq r1, #2
+ addeq r1, #4
+ addeq r1, #8
+ subs r1, #15
+ cmp r1, r0
+ bne restore
+ cmp r1, r1
+ iteee eq
+ addeq r1, #1
+ addne r1, #2
+ addne r1, #4
+ addne r1, #8
+ subs r1, #1
+ cmp r1, r0
+ bne restore
+#endif
+
#ifndef ARM_MULTILIB_VFP
check_register r3
#endif