summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2017-08-10 07:51:17 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2017-08-10 08:18:40 +0200
commita95d909878576c6467ba8ade52fedadeccb87b9c (patch)
treeac5ba82c3b13a8d345802f8e869b87ba3fed3b2b
parentbsp/imx: Fix UART interrupt (diff)
downloadrtems-a95d909878576c6467ba8ade52fedadeccb87b9c.tar.bz2
arm: Validate IT[7:0] bit field of PSR
Update #3093.
-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