diff options
Diffstat (limited to 'libcpu')
| -rw-r--r-- | libcpu/aarch64/common/cache.h | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/libcpu/aarch64/common/cache.h b/libcpu/aarch64/common/cache.h index 06a2805c48..ef7b235d0e 100644 --- a/libcpu/aarch64/common/cache.h +++ b/libcpu/aarch64/common/cache.h @@ -23,9 +23,13 @@ void rt_hw_cpu_dcache_invalidate(void *start_addr, unsigned long size); static inline void rt_hw_icache_invalidate_all(void) { - /* wait for any modification complete */ + /* wait for previous modification to complete */ __asm__ volatile ("dsb ishst"); - __asm__ volatile ("ic iallu"); + + __asm__ volatile ("ic ialluis"); + /* wait for ic to retire */ + __asm__ volatile ("dsb nsh"); + /* flush instruction pipeline */ __asm__ volatile ("isb"); } |
