ldr r4, =BOOT_FDT_VIRT_START
mov r4, r4, lsr #(SECOND_SHIFT - 3) /* Slot for BOOT_FDT_VIRT_START */
strd r2, r3, [r1, r4] /* Map it in the early fdt slot */
- dsb
1:
+ /*
+ * Flush the TLB in case the 1:1 mapping happens to clash with
+ * the virtual addresses used by the fixmap or DTB.
+ */
+ dsb /* Ensure any page table updates made above
+ * have occurred. */
+
+ isb
+ mcr CP32(r0, TLBIALLH) /* Flush hypervisor TLB */
+ dsb /* Ensure completion of TLB flush */
+ isb
+
PRINT("- Ready -\r\n")
/* The boot CPU should go straight into C now */
ldr x1, =BOOT_FDT_VIRT_START
lsr x1, x1, #(SECOND_SHIFT - 3) /* x4 := Slot for BOOT_FDT_VIRT_START */
str x2, [x4, x1] /* Map it in the early fdt slot */
- dsb sy
1:
+ /*
+ * Flush the TLB in case the 1:1 mapping happens to clash with
+ * the virtual addresses used by the fixmap or DTB.
+ */
+ dsb sy /* Ensure any page table updates made above
+ * have occurred. */
+
+ isb
+ tlbi alle2
+ dsb sy /* Ensure completion of TLB flush */
+ isb
+
PRINT("- Ready -\r\n")
/* The boot CPU should go straight into C now */