From 7d097c5c693e8330b14ae2c0a10854c909b73060 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 Close #3093. --- cpukit/score/cpu/arm/arm-context-validate.S | 30 ++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/cpukit/score/cpu/arm/arm-context-validate.S b/cpukit/score/cpu/arm/arm-context-validate.S index 1cf53baea1..5c6ac217c5 100644 --- a/cpukit/score/cpu/arm/arm-context-validate.S +++ b/cpukit/score/cpu/arm/arm-context-validate.S @@ -44,9 +44,14 @@ #define FRAME_SIZE (FRAME_OFFSET_LR + 4) #endif + .syntax unified .section .text +#ifdef __thumb2__ FUNCTION_THUMB_ENTRY(_CPU_Context_validate) +#else +FUNCTION_ENTRY(_CPU_Context_validate) +#endif /* Save */ @@ -170,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