Changeset 52363 in vbox for trunk/src/VBox/VMM/VMMAll
- Timestamp:
- Aug 12, 2014 8:03:48 PM (11 years ago)
- svn:sync-xref-src-repo-rev:
- 95495
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/SELMAll.cpp
r50141 r52363 108 108 || CPUMIsGuestInRealMode(pVCpu)) 109 109 { 110 RTGCUINTPTR uFlat = (RTGCUINTPTR)Addr & 0xffff;110 uint32_t uFlat = (uint32_t)Addr & 0xffff; 111 111 if (CPUMSELREG_ARE_HIDDEN_PARTS_VALID(pVCpu, pSReg)) 112 uFlat += pSReg->u64Base;112 uFlat += (uint32_t)pSReg->u64Base; 113 113 else 114 uFlat += ( RTGCUINTPTR)pSReg->Sel << 4;114 uFlat += (uint32_t)pSReg->Sel << 4; 115 115 return (RTGCPTR)uFlat; 116 116 } … … 145 145 /* AMD64 manual: compatibility mode ignores the high 32 bits when calculating an effective address. */ 146 146 Assert(pSReg->u64Base <= 0xffffffff); 147 return ( (pSReg->u64Base + (RTGCUINTPTR)Addr) & 0xffffffff);147 return (uint32_t)pSReg->u64Base + (uint32_t)Addr; 148 148 } 149 149 … … 178 178 || CPUMIsGuestInRealMode(pVCpu)) 179 179 { 180 RTGCUINTPTR uFlat = (RTGCUINTPTR)Addr & 0xffff;181 180 if (ppvGC) 182 181 { 182 uint32_t uFlat = (uint32_t)Addr & 0xffff; 183 183 if (CPUMSELREG_ARE_HIDDEN_PARTS_VALID(pVCpu, pSReg)) 184 *ppvGC = pSReg->u64Base + uFlat;184 *ppvGC = (uint32_t)pSReg->u64Base + uFlat; 185 185 else 186 *ppvGC = (( RTGCUINTPTR)pSReg->Sel << 4) + uFlat;186 *ppvGC = ((uint32_t)pSReg->Sel << 4) + uFlat; 187 187 } 188 188 return VINF_SUCCESS; … … 223 223 /* AMD64 manual: compatibility mode ignores the high 32 bits when calculating an effective address. */ 224 224 Assert(pSReg->u64Base <= UINT32_C(0xffffffff)); 225 pvFlat = pSReg->u64Base +Addr;226 pvFlat &= UINT32_C(0xffffffff);225 pvFlat = (uint32_t)pSReg->u64Base + (uint32_t)Addr; 226 Assert(pvFlat <= UINT32_MAX); 227 227 } 228 228 … … 610 610 { 611 611 NOREF(pVCpu); 612 RTGCUINTPTRuFlat = Addr & 0xffff;612 uint32_t uFlat = Addr & 0xffff; 613 613 if (!pSReg || !CPUMSELREG_ARE_HIDDEN_PARTS_VALID(pVCpu, pSReg)) 614 uFlat += ( RTGCUINTPTR)SelCS << 4;614 uFlat += (uint32_t)SelCS << 4; 615 615 else 616 uFlat += pSReg->u64Base;616 uFlat += (uint32_t)pSReg->u64Base; 617 617 *ppvFlat = uFlat; 618 618 return VINF_SUCCESS; … … 740 740 */ 741 741 uint32_t u32Limit = pSRegCS->u32Limit; 742 if (( RTGCUINTPTR)Addr <= u32Limit)742 if ((uint32_t)Addr <= u32Limit) 743 743 { 744 *ppvFlat = Addr +pSRegCS->u64Base;744 *ppvFlat = (uint32_t)Addr + (uint32_t)pSRegCS->u64Base; 745 745 return VINF_SUCCESS; 746 746 }
Note:
See TracChangeset
for help on using the changeset viewer.