[rtems commit] arm: Validate IT[7:0] bit field of PSR
Sebastian Huber
sebh at rtems.org
Thu Aug 10 07:25:24 UTC 2017
Module: rtems
Branch: 4.11
Commit: 7d097c5c693e8330b14ae2c0a10854c909b73060
Changeset: http://git.rtems.org/rtems/commit/?id=7d097c5c693e8330b14ae2c0a10854c909b73060
Author: Sebastian Huber <sebastian.huber at embedded-brains.de>
Date: Thu Aug 10 07:51:17 2017 +0200
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 1cf53ba..5c6ac21 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
More information about the vc
mailing list