commit 371f0b5b497177e3cc399554a57c77d45294f4dd
parent ca1183c569009fafd9efbd0ef9afecbe911d98d7
Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
Date: Fri, 23 Oct 2020 18:26:58 +0200
os9/arm64: Do not invalidate tlb in break-before-make
The code had one invalidation after the break, and other after the make,
which is wrong because invtlb() uses DC CVAU which walks over the
page table to obtain the physical address of a specific virtual address.
If any of the descriptors in the walk is invalid then it produces an
exception.
Change-Id: Iafec027e30f9d53dfa1d18809e1e97cdb5315598
Diffstat:
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/os9/arch/arm64/mmu.c b/src/os9/arch/arm64/mmu.c
@@ -193,7 +193,7 @@ vmap(phyaddr_t pa, uintptr_t va, int perm)
* in multi processor systems.
*/
*p = INVALID;
- invtlb(va);
+ barrier(DATA);
*p = MASK(pa) | attr;
invtlb(va);