Skip to content

Commit 6bf8f37

Browse files
AsakuraMizumingzi47
andcommitted
fix(aarch64): TLB flush VA bits
Co-authored-by: mingzi <[email protected]>
1 parent 85fb75e commit 6bf8f37

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

page_table_multiarch/src/arch/aarch64.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ impl PagingMetaData for A64PagingMetaData {
2424
unsafe {
2525
if let Some(vaddr) = vaddr {
2626
// TLB Invalidate by VA, All ASID, EL1, Inner Shareable
27-
asm!("tlbi vaae1is, {}; dsb sy; isb", in(reg) vaddr.as_usize())
27+
const VA_MASK: usize = (1 << 44) - 1; // VA[55:12] => bits[43:0]
28+
asm!("tlbi vaae1is, {}; dsb sy; isb", in(reg) ((vaddr.as_usize() >> 12) & VA_MASK))
2829
} else {
2930
// TLB Invalidate by VMID, All at stage 1, EL1
3031
asm!("tlbi vmalle1; dsb sy; isb")

0 commit comments

Comments
 (0)