- Timestamp:
- Sep 11, 2008 2:58:38 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/SELMAll.cpp
r10171 r12404 127 127 } 128 128 } 129 return (RTGCPTR)(pHiddenSel->u64Base + (RTGCUINTPTR)Addr); 129 /* AMD64 manual: compatibility mode ignores the high 32 bits when calculating an effective address. */ 130 Assert(pHiddenSel->u64Base <= 0xffffffff); 131 return ((pHiddenSel->u64Base + (RTGCUINTPTR)Addr) & 0xffffffff); 130 132 } 131 133 … … 208 210 } 209 211 else 210 pvFlat = (RTGCPTR)(pHiddenSel->u64Base + (RTGCUINTPTR)Addr); 212 { 213 /* AMD64 manual: compatibility mode ignores the high 32 bits when calculating an effective address. */ 214 Assert(pHiddenSel->u64Base <= 0xffffffff); 215 pvFlat = (RTGCPTR)((pHiddenSel->u64Base + (RTGCUINTPTR)Addr) & 0xffffffff); 216 } 211 217 212 218 /* … … 489 495 u32Limit = pHiddenSel->u32Limit; 490 496 pvFlat = (RTGCPTR)(pHiddenSel->u64Base + (RTGCUINTPTR)Addr); 497 498 if ( !CPUMIsGuestInLongMode(pVM) 499 || !pHiddenSel->Attr.n.u1Long) 500 { 501 /* AMD64 manual: compatibility mode ignores the high 32 bits when calculating an effective address. */ 502 pvFlat &= 0xffffffff; 503 } 491 504 } 492 505 else
Note:
See TracChangeset
for help on using the changeset viewer.