bsps/aarch64: Flush cache before disabling MMU

To ensure data consistency, the cache much be flushed before disabling
the MMU. When the MMU is disabled, all accesses are treated as
non-cachced and thus will bypass the cache.
This commit is contained in:
Kinsey Moore
2023-02-14 08:33:52 -06:00
committed by Joel Sherrill
parent 7629760e49
commit b44e26baa7
+7 -1
View File
@@ -420,7 +420,13 @@ aarch64_mmu_disable( void )
{
uint64_t sctlr;
/* Enable MMU and cache */
/*
* Flush data cache before disabling the MMU. While the MMU is disabled, all
* accesses are treated as uncached device memory.
*/
rtems_cache_flush_entire_data();
/* Disable MMU */
sctlr = _AArch64_Read_sctlr_el1();
sctlr &= ~(AARCH64_SCTLR_EL1_M);
_AArch64_Write_sctlr_el1( sctlr );