summaryrefslogtreecommitdiff
path: root/lib/cpus
diff options
context:
space:
mode:
Diffstat (limited to 'lib/cpus')
-rw-r--r--lib/cpus/aarch64/cpu_helpers.S14
1 files changed, 13 insertions, 1 deletions
diff --git a/lib/cpus/aarch64/cpu_helpers.S b/lib/cpus/aarch64/cpu_helpers.S
index f053d44f..5680bce6 100644
--- a/lib/cpus/aarch64/cpu_helpers.S
+++ b/lib/cpus/aarch64/cpu_helpers.S
@@ -120,7 +120,19 @@ func init_cpu_ops
cmp x0, #0
ASM_ASSERT(ne)
#endif
- str x0, [x6, #CPU_DATA_CPU_OPS_PTR]
+ str x0, [x6, #CPU_DATA_CPU_OPS_PTR]!
+
+ /*
+ * Make sure that any pre-fetched cache copies are invalidated.
+ * Ensure that we are running with cache disable else we
+ * invalidate our own update.
+ */
+#if ASM_ASSERTION
+ mrs x1, sctlr_el3
+ tst x1, #SCTLR_C_BIT
+ ASM_ASSERT(eq)
+#endif
+ dc ivac, x6
mov x30, x10
1:
ret