summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authordanh-arm <dan.handley@arm.com>2016-12-08 12:20:21 +0000
committerGitHub <noreply@github.com>2016-12-08 12:20:21 +0000
commit535f185a5c7ed3ef1958b6382320418093c5f6eb (patch)
tree73d0286149b093d91c807f7880e7ee42d2a9bf2b /include
parent7ffd088fe3267e56c42838e19222bde7321bd406 (diff)
parent69d59e0ce9f713b0fd4929908ec1649d29f2cbd4 (diff)
Merge pull request #770 from yatharth-arm/yk/AArch32_fixes
AArch32: Miscellaneous fixes in the AArch32 code
Diffstat (limited to 'include')
-rw-r--r--include/lib/aarch32/smcc_macros.S8
1 files changed, 7 insertions, 1 deletions
diff --git a/include/lib/aarch32/smcc_macros.S b/include/lib/aarch32/smcc_macros.S
index c80c3e47..4d329f5d 100644
--- a/include/lib/aarch32/smcc_macros.S
+++ b/include/lib/aarch32/smcc_macros.S
@@ -109,7 +109,13 @@
msr spsr_und, r9
msr sp_und, r10
msr lr_und, r11
- msr spsr, r12
+ /*
+ * Use the `_fsxc` suffix explicitly to instruct the assembler
+ * to update all the 32 bits of SPSR. Else, by default, the
+ * assembler assumes `_fc` suffix which only modifies
+ * f->[31:24] and c->[7:0] bits of SPSR.
+ */
+ msr spsr_fsxc, r12
/* Restore the rest of the general purpose registers */
ldm r0, {r0-r12}