Changeset 86463 in vbox
- Timestamp:
- Oct 6, 2020 10:23:59 PM (4 years ago)
- svn:sync-xref-src-repo-rev:
- 140768
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/PGMAllShw.h
r86461 r86463 33 33 #undef SHW_PDE_ATOMIC_SET 34 34 #undef SHW_PDE_ATOMIC_SET2 35 #undef SHW_PDE_IS_BIG 35 36 #undef SHW_PTE_PG_MASK 36 37 #undef SHW_PTE_IS_P … … 69 70 # define SHW_PD_MASK X86_PD_MASK 70 71 # define SHW_TOTAL_PD_ENTRIES X86_PG_ENTRIES 72 # define SHW_PDE_IS_BIG(Pde) ( (Pde).b.u1Size ) 71 73 # define SHW_PDE_ATOMIC_SET(Pde, uNew) do { ASMAtomicWriteU32(&(Pde).u, (uNew)); } while (0) 72 74 # define SHW_PDE_ATOMIC_SET2(Pde, Pde2) do { ASMAtomicWriteU32(&(Pde).u, (Pde2).u); } while (0) … … 102 104 # define SHW_PD_SHIFT EPT_PD_SHIFT 103 105 # define SHW_PD_MASK EPT_PD_MASK 106 # define SHW_PDE_IS_BIG(Pde) ( (Pde).u & EPT_E_LEAF ) 104 107 # define SHW_PDE_ATOMIC_SET(Pde, uNew) do { ASMAtomicWriteU64(&(Pde).u, (uNew)); } while (0) 105 108 # define SHW_PDE_ATOMIC_SET2(Pde, Pde2) do { ASMAtomicWriteU64(&(Pde).u, (Pde2).u); } while (0) 106 109 # define SHW_PTE_PG_MASK EPT_PTE_PG_MASK 107 # define SHW_PTE_IS_P(Pte) ( (Pte). n.u1Present )/* Approximation, works for us. */108 # define SHW_PTE_IS_RW(Pte) ( (Pte). n.u1Write)110 # define SHW_PTE_IS_P(Pte) ( (Pte).u & EPT_E_READ ) /* Approximation, works for us. */ 111 # define SHW_PTE_IS_RW(Pte) ( (Pte).u & EPT_E_WRITE ) 109 112 # define SHW_PTE_IS_US(Pte) ( true ) 110 113 # define SHW_PTE_IS_A(Pte) ( true ) 111 114 # define SHW_PTE_IS_D(Pte) ( true ) 112 # define SHW_PTE_IS_P_RW(Pte) ( ( Pte).n.u1Present && (Pte).n.u1Write)115 # define SHW_PTE_IS_P_RW(Pte) ( ((Pte).u & (EPT_E_READ | EPT_E_WRITE)) == (EPT_E_READ | EPT_E_WRITE) ) 113 116 # define SHW_PTE_IS_TRACK_DIRTY(Pte) ( false ) 114 # define SHW_PTE_GET_HCPHYS(Pte) ( (Pte).u & X86_PTE_PG_MASK )117 # define SHW_PTE_GET_HCPHYS(Pte) ( (Pte).u & EPT_PTE_PG_MASK ) 115 118 # define SHW_PTE_LOG64(Pte) ( (Pte).u ) 116 119 # define SHW_PTE_GET_U(Pte) ( (Pte).u ) /**< Use with care. */ … … 118 121 # define SHW_PTE_ATOMIC_SET(Pte, uNew) do { ASMAtomicWriteU64(&(Pte).u, (uNew)); } while (0) 119 122 # define SHW_PTE_ATOMIC_SET2(Pte, Pte2) do { ASMAtomicWriteU64(&(Pte).u, (Pte2).u); } while (0) 120 # define SHW_PTE_SET_RO(Pte) do { (Pte). n.u1Write = 0; } while (0)121 # define SHW_PTE_SET_RW(Pte) do { (Pte). n.u1Write = 1; } while (0)123 # define SHW_PTE_SET_RO(Pte) do { (Pte).u &= ~EPT_E_WRITE; } while (0) 124 # define SHW_PTE_SET_RW(Pte) do { (Pte).u |= EPT_E_WRITE; } while (0) 122 125 # define SHW_PT_SHIFT EPT_PT_SHIFT 123 126 # define SHW_PT_MASK EPT_PT_MASK … … 125 128 # define SHW_PDPT_MASK EPT_PDPT_MASK 126 129 # define SHW_PDPE_PG_MASK EPT_PDPE_PG_MASK 127 # define SHW_TOTAL_PD_ENTRIES (EPT_PG_AMD64_ENTRIES *EPT_PG_AMD64_PDPE_ENTRIES)130 # define SHW_TOTAL_PD_ENTRIES (EPT_PG_AMD64_ENTRIES * EPT_PG_AMD64_PDPE_ENTRIES) 128 131 129 132 #else … … 139 142 # define SHW_PD_SHIFT X86_PD_PAE_SHIFT 140 143 # define SHW_PD_MASK X86_PD_PAE_MASK 144 # define SHW_PDE_IS_BIG(Pde) ( (Pde).u & X86_PDE_PS ) 141 145 # define SHW_PDE_ATOMIC_SET(Pde, uNew) do { ASMAtomicWriteU64(&(Pde).u, (uNew)); } while (0) 142 146 # define SHW_PDE_ATOMIC_SET2(Pde, Pde2) do { ASMAtomicWriteU64(&(Pde).u, (Pde2).u); } while (0) … … 368 372 369 373 /* Deal with large pages. */ 370 if ( Pde.b.u1Size)374 if (SHW_PDE_IS_BIG(Pde)) 371 375 { 372 376 /* … … 544 548 return VERR_PAGE_TABLE_NOT_PRESENT; 545 549 546 AssertFatal(! Pde.b.u1Size);550 AssertFatal(!SHW_PDE_IS_BIG(Pde)); 547 551 548 552 /*
Note:
See TracChangeset
for help on using the changeset viewer.