File tree Expand file tree Collapse file tree 1 file changed +3
-2
lines changed
page_table_multiarch/src/arch Expand file tree Collapse file tree 1 file changed +3
-2
lines changed Original file line number Diff line number Diff line change @@ -23,14 +23,15 @@ impl PagingMetaData for A64PagingMetaData {
2323
2424 #[ inline]
2525 fn flush_tlb ( vaddr : Option < VirtAddr > ) {
26+ // make sure all previous page table writes are visible
2627 unsafe {
2728 if let Some ( vaddr) = vaddr {
2829 // TLB Invalidate by VA, All ASID, EL1, Inner Shareable
2930 const VA_MASK : usize = ( 1 << 44 ) - 1 ; // VA[55:12] => bits[43:0]
30- asm ! ( "tlbi vaae1is, {}; dsb sy ; isb" , in( reg) ( ( vaddr. as_usize( ) >> 12 ) & VA_MASK ) )
31+ asm ! ( "dsb ishst; tlbi vaae1is, {}; dsb ish ; isb" , in( reg) ( ( vaddr. as_usize( ) >> 12 ) & VA_MASK ) )
3132 } else {
3233 // TLB Invalidate by VMID, All at stage 1, EL1
33- asm ! ( "tlbi vmalle1 ; dsb sy ; isb" )
34+ asm ! ( "dsb ishst; tlbi vmalle1is ; dsb ish ; isb" )
3435 }
3536 }
3637 }
You can’t perform that action at this time.
0 commit comments