diff --git a/libcpu/arm/cortex-a/start_gcc.S b/libcpu/arm/cortex-a/start_gcc.S index 68a8099ea8b2fd3ea0a0c319845a1a9864c6fcad..703b34a8ae98602ce6653ac03c8516934468cd57 100644 --- a/libcpu/arm/cortex-a/start_gcc.S +++ b/libcpu/arm/cortex-a/start_gcc.S @@ -109,6 +109,19 @@ continue: msr cpsr_c, r0 #endif + /* invalid tlb before enable mmu */ + mrc p15, 0, r0, c1, c0, 0 + bic r0, #1 + mcr p15, 0, r0, c1, c0, 0 + dsb + isb + mov r0, #0 + mcr p15, 0, r0, c8, c7, 0 + mcr p15, 0, r0, c7, c5, 0 /* iciallu */ + mcr p15, 0, r0, c7, c5, 6 /* bpiall */ + dsb + isb + #ifdef RT_USING_USERSPACE ldr r5, =PV_OFFSET