summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDietmar Eggemann <dietmar.eggemann@arm.com>2012-02-17 14:03:28 +0000
committerDave Martin <dave.martin@linaro.org>2012-03-09 11:09:29 +0000
commitb6dfb2b18ffafdbcffc3c8f64ed21d0abfed1aab (patch)
tree0deb7ebf1cf311765aed851dfedbbf15c3717164
parent24ed4da52b33d622deee5fdc6fc4796b24d225c6 (diff)
Bugfix: Fix race condition during enabling CCI coherency.
Signed-off-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
-rwxr-xr-x[-rw-r--r--]big-little/secure_world/monmode_vectors.s11
1 files changed, 8 insertions, 3 deletions
diff --git a/big-little/secure_world/monmode_vectors.s b/big-little/secure_world/monmode_vectors.s
index 4fe2ed1..b070e81 100644..100755
--- a/big-little/secure_world/monmode_vectors.s
+++ b/big-little/secure_world/monmode_vectors.s
@@ -331,18 +331,23 @@ warm_reset FUNCTION
MRC p15, 0, r0, c0, c0, 5
UBFX r1, r0, #0, #8
UBFX r2, r0, #8, #8
- CMP r1, #0
- BNE cci_snoop_status
MOV r3, #3
CMP r2, #0
BEQ a15_snoops
MOV r5, #0x5000
+ CMP r1, #0
+ BNE cci_snoop_status
STR r3, [r4, r5]
B cci_snoop_status
a15_snoops
- MOV r5, #0x4000
+ MOV r5, #0x4000
+ CMP r1, #0
+ BNE cci_snoop_status
STR r3, [r4, r5]
cci_snoop_status
+ LDR r0, [r4, r5]
+ TST r0, #3
+ BEQ cci_snoop_status
LDR r0, [r4, #0xc]
TST r0, #1
BNE cci_snoop_status