arm64_addrenv.c: Flush kernel page table copy to user mappings

Make sure the user L1 page is updated to system memory when the kernel
mappings are copied.

Also, flush the I-cache when switching address environments.
This commit is contained in:
Ville Juven
2024-09-10 22:56:06 +08:00
committed by Xiang Xiao
parent 20ce41d080
commit 00c4da73b3
+7 -1
View File
@@ -208,6 +208,10 @@ static int copy_kernel_mappings(arch_addrenv_t *addrenv)
memcpy((void *)user_mappings, (void *)g_kernel_mappings, MMU_PAGE_SIZE);
/* Update with memory by flushing the cache */
up_flush_dcache(user_mappings, user_mappings + MMU_PAGE_SIZE);
return OK;
}
@@ -737,7 +741,9 @@ int up_addrenv_select(const arch_addrenv_t *addrenv)
int up_addrenv_coherent(const arch_addrenv_t *addrenv)
{
/* Nothing needs to be done */
/* Invalidate I-Cache */
up_invalidate_icache_all();
return OK;
}