From a95d909878576c6467ba8ade52fedadeccb87b9c Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Thu, 10 Aug 2017 07:51:17 +0200 Subject: arm: Validate IT[7:0] bit field of PSR Update #3093. --- cpukit/score/cpu/arm/arm-context-validate.S | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) 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 -- cgit v1.2.3