diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2017-08-10 07:51:17 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2017-08-10 08:18:40 +0200 |
commit | a95d909878576c6467ba8ade52fedadeccb87b9c (patch) | |
tree | ac5ba82c3b13a8d345802f8e869b87ba3fed3b2b | |
parent | bsp/imx: Fix UART interrupt (diff) | |
download | rtems-a95d909878576c6467ba8ade52fedadeccb87b9c.tar.bz2 |
arm: Validate IT[7:0] bit field of PSR
Update #3093.
-rw-r--r-- | cpukit/score/cpu/arm/arm-context-validate.S | 26 |
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 |