Changeset 10010 in vbox for trunk/src/VBox/VMM
- Timestamp:
- Jun 30, 2008 9:39:04 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HWSVMR0.cpp
r9988 r10010 1868 1868 case PARMTYPE_IMMEDIATE: 1869 1869 case PARMTYPE_ADDRESS: 1870 if(!(param1.flags & PARAM_VAL32))1870 if(!(param1.flags & (PARAM_VAL32|PARAM_VAL64))) 1871 1871 return VERR_EM_INTERPRETER; 1872 addr = (RTGCPTR)param1.val.val32;1872 addr = param1.val.val64; 1873 1873 break; 1874 1874 … … 1908 1908 static int SVMR0InterpretInvpg(PVM pVM, PCPUMCTXCORE pRegFrame, uint32_t uASID) 1909 1909 { 1910 Assert(!CPUMIsGuestInLongMode(pVM)); /** @todo */1911 1910 /* 1912 * Only allow 32 -bitcode.1911 * Only allow 32 & 64 bits code. 1913 1912 */ 1914 if (SELMGetCpuModeFromSelector(pVM, pRegFrame->eflags, pRegFrame->cs, &pRegFrame->csHid) == CPUMODE_32BIT) 1913 DISCPUMODE enmMode = SELMGetCpuModeFromSelector(pVM, pCtx->eflags, pCtx->cs, &pCtx->csHid); 1914 if (enmMode != CPUMODE_16BIT) 1915 1915 { 1916 1916 RTGCPTR pbCode; … … 1921 1921 DISCPUSTATE Cpu; 1922 1922 1923 Cpu.mode = CPUMODE_32BIT;1923 Cpu.mode = enmMode; 1924 1924 rc = EMInterpretDisasOneEx(pVM, pbCode, pRegFrame, &Cpu, &cbOp); 1925 1925 Assert(VBOX_FAILURE(rc) || Cpu.pCurInstr->opcode == OP_INVLPG); … … 1985 1985 Assert(pVM->hwaccm.s.fNestedPaging); 1986 1986 1987 Assert(!CPUMIsGuestInLongMode(pVM)); /** @todo */1988 1989 1987 /* Skip it if a TLB flush is already pending. */ 1990 1988 if (!fFlushPending) … … 2005 2003 2006 2004 /* 2007 * Only allow 32-bit code. 2008 */ 2009 if (SELMGetCpuModeFromSelector(pVM, pCtx->eflags, pCtx->cs, &pCtx->csHid) == CPUMODE_32BIT) 2005 * Only allow 32 & 64 bits code. 2006 */ 2007 DISCPUMODE enmMode = SELMGetCpuModeFromSelector(pVM, pCtx->eflags, pCtx->cs, &pCtx->csHid); 2008 if (enmMode != CPUMODE_16BIT) 2010 2009 { 2011 2010 RTGCPTR pbCode; … … 2018 2017 RTGCPTR addr; 2019 2018 2020 Cpu.mode = CPUMODE_32BIT;2019 Cpu.mode = enmMode; 2021 2020 rc = EMInterpretDisasOneEx(pVM, pbCode, CPUMCTX2CORE(pCtx), &Cpu, &cbOp); 2022 2021 AssertRCReturn(rc, rc); … … 2030 2029 case PARMTYPE_IMMEDIATE: 2031 2030 case PARMTYPE_ADDRESS: 2032 AssertReturn((param1.flags & PARAM_VAL32), VERR_EM_INTERPRETER);2033 2034 addr = (RTGCPTR)param1.val.val32;2031 AssertReturn((param1.flags & (PARAM_VAL32|PARAM_VAL64)), VERR_EM_INTERPRETER); 2032 2033 addr = param1.val.val64; 2035 2034 break; 2036 2035
Note:
See TracChangeset
for help on using the changeset viewer.