Changeset 107933 in vbox for trunk/src/VBox/VMM/VMMR3
- Timestamp:
- Jan 24, 2025 11:22:16 AM (4 weeks ago)
- svn:sync-xref-src-repo-rev:
- 167170
- Location:
- trunk/src/VBox/VMM/VMMR3
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR3/NEMR3Native-darwin-armv8.cpp
r107650 r107933 143 143 } hv_gic_intid_t; 144 144 145 #else 146 # define HV_GIC_ICC_REG_INVALID (hv_gic_icc_reg_t)UINT16_MAX 145 147 #endif 146 148 … … 1688 1690 DECLINLINE(uint64_t) nemR3DarwinGetGReg(PVMCPU pVCpu, uint8_t uReg) 1689 1691 { 1690 AssertReturn(uReg <= ARMV8_A ARCH64_REG_ZR, 0);1691 1692 if (uReg == ARMV8_A ARCH64_REG_ZR)1692 AssertReturn(uReg <= ARMV8_A64_REG_XZR, 0); 1693 1694 if (uReg == ARMV8_A64_REG_XZR) 1693 1695 return 0; 1694 1696 … … 1988 1990 /** @todo Raise exception to EL1 if PSCI not configured. */ 1989 1991 /** @todo Need a generic mechanism here to pass this to, GIM maybe?. */ 1990 uint32_t uFunId = pVCpu->cpum.GstCtx.aGRegs[ARMV8_A ARCH64_REG_X0].w;1992 uint32_t uFunId = pVCpu->cpum.GstCtx.aGRegs[ARMV8_A64_REG_X0].w; 1991 1993 bool fHvc64 = RT_BOOL(uFunId & ARM_SMCCC_FUNC_ID_64BIT); RT_NOREF(fHvc64); 1992 1994 uint32_t uEntity = ARM_SMCCC_FUNC_ID_ENTITY_GET(uFunId); … … 1997 1999 { 1998 2000 case ARM_PSCI_FUNC_ID_PSCI_VERSION: 1999 nemR3DarwinSetGReg(pVCpu, ARMV8_A ARCH64_REG_X0, false /*f64BitReg*/, false /*fSignExtend*/, ARM_PSCI_FUNC_ID_PSCI_VERSION_SET(1, 2));2001 nemR3DarwinSetGReg(pVCpu, ARMV8_A64_REG_X0, false /*f64BitReg*/, false /*fSignExtend*/, ARM_PSCI_FUNC_ID_PSCI_VERSION_SET(1, 2)); 2000 2002 break; 2001 2003 case ARM_PSCI_FUNC_ID_SYSTEM_OFF: … … 2022 2024 case ARM_PSCI_FUNC_ID_CPU_ON: 2023 2025 { 2024 uint64_t u64TgtCpu = nemR3DarwinGetGReg(pVCpu, ARMV8_A ARCH64_REG_X1);2025 RTGCPHYS GCPhysExecAddr = nemR3DarwinGetGReg(pVCpu, ARMV8_A ARCH64_REG_X2);2026 uint64_t u64CtxId = nemR3DarwinGetGReg(pVCpu, ARMV8_A ARCH64_REG_X3);2026 uint64_t u64TgtCpu = nemR3DarwinGetGReg(pVCpu, ARMV8_A64_REG_X1); 2027 RTGCPHYS GCPhysExecAddr = nemR3DarwinGetGReg(pVCpu, ARMV8_A64_REG_X2); 2028 uint64_t u64CtxId = nemR3DarwinGetGReg(pVCpu, ARMV8_A64_REG_X3); 2027 2029 VMMR3CpuOn(pVM, u64TgtCpu & 0xff, GCPhysExecAddr, u64CtxId); 2028 nemR3DarwinSetGReg(pVCpu, ARMV8_A ARCH64_REG_X0, true /*f64BitReg*/, false /*fSignExtend*/, ARM_PSCI_STS_SUCCESS);2030 nemR3DarwinSetGReg(pVCpu, ARMV8_A64_REG_X0, true /*f64BitReg*/, false /*fSignExtend*/, ARM_PSCI_STS_SUCCESS); 2029 2031 break; 2030 2032 } 2031 2033 case ARM_PSCI_FUNC_ID_PSCI_FEATURES: 2032 2034 { 2033 uint32_t u32FunNum = (uint32_t)nemR3DarwinGetGReg(pVCpu, ARMV8_A ARCH64_REG_X1);2035 uint32_t u32FunNum = (uint32_t)nemR3DarwinGetGReg(pVCpu, ARMV8_A64_REG_X1); 2034 2036 switch (u32FunNum) 2035 2037 { … … 2040 2042 case ARM_PSCI_FUNC_ID_CPU_ON: 2041 2043 case ARM_PSCI_FUNC_ID_MIGRATE_INFO_TYPE: 2042 nemR3DarwinSetGReg(pVCpu, ARMV8_A ARCH64_REG_X0,2044 nemR3DarwinSetGReg(pVCpu, ARMV8_A64_REG_X0, 2043 2045 false /*f64BitReg*/, false /*fSignExtend*/, 2044 2046 (uint64_t)ARM_PSCI_STS_SUCCESS); 2045 2047 break; 2046 2048 default: 2047 nemR3DarwinSetGReg(pVCpu, ARMV8_A ARCH64_REG_X0,2049 nemR3DarwinSetGReg(pVCpu, ARMV8_A64_REG_X0, 2048 2050 false /*f64BitReg*/, false /*fSignExtend*/, 2049 2051 (uint64_t)ARM_PSCI_STS_NOT_SUPPORTED); … … 2052 2054 } 2053 2055 case ARM_PSCI_FUNC_ID_MIGRATE_INFO_TYPE: 2054 nemR3DarwinSetGReg(pVCpu, ARMV8_A ARCH64_REG_X0, false /*f64BitReg*/, false /*fSignExtend*/, ARM_PSCI_MIGRATE_INFO_TYPE_TOS_NOT_PRESENT);2056 nemR3DarwinSetGReg(pVCpu, ARMV8_A64_REG_X0, false /*f64BitReg*/, false /*fSignExtend*/, ARM_PSCI_MIGRATE_INFO_TYPE_TOS_NOT_PRESENT); 2055 2057 break; 2056 2058 default: 2057 nemR3DarwinSetGReg(pVCpu, ARMV8_A ARCH64_REG_X0, false /*f64BitReg*/, false /*fSignExtend*/, (uint64_t)ARM_PSCI_STS_NOT_SUPPORTED);2059 nemR3DarwinSetGReg(pVCpu, ARMV8_A64_REG_X0, false /*f64BitReg*/, false /*fSignExtend*/, (uint64_t)ARM_PSCI_STS_NOT_SUPPORTED); 2058 2060 } 2059 2061 } 2060 2062 else 2061 nemR3DarwinSetGReg(pVCpu, ARMV8_A ARCH64_REG_X0, false /*f64BitReg*/, false /*fSignExtend*/, (uint64_t)ARM_PSCI_STS_NOT_SUPPORTED);2063 nemR3DarwinSetGReg(pVCpu, ARMV8_A64_REG_X0, false /*f64BitReg*/, false /*fSignExtend*/, (uint64_t)ARM_PSCI_STS_NOT_SUPPORTED); 2062 2064 } 2063 2065 -
trunk/src/VBox/VMM/VMMR3/NEMR3Native-linux-armv8.cpp
r107650 r107933 589 589 DECLINLINE(uint64_t) nemR3LnxGetGReg(PVMCPU pVCpu, uint8_t uReg) 590 590 { 591 AssertReturn(uReg <= ARMV8_A ARCH64_REG_ZR, 0);592 593 if (uReg == ARMV8_A ARCH64_REG_ZR)591 AssertReturn(uReg <= ARMV8_A64_REG_XZR, 0); 592 593 if (uReg == ARMV8_A64_REG_XZR) 594 594 return 0; 595 595 … … 1116 1116 { 1117 1117 case ARM_PSCI_FUNC_ID_PSCI_VERSION: 1118 nemR3LnxSetGReg(pVCpu, ARMV8_A ARCH64_REG_X0, false /*f64BitReg*/, false /*fSignExtend*/, ARM_PSCI_FUNC_ID_PSCI_VERSION_SET(1, 2));1118 nemR3LnxSetGReg(pVCpu, ARMV8_A64_REG_X0, false /*f64BitReg*/, false /*fSignExtend*/, ARM_PSCI_FUNC_ID_PSCI_VERSION_SET(1, 2)); 1119 1119 break; 1120 1120 case ARM_PSCI_FUNC_ID_SYSTEM_OFF: … … 1141 1141 case ARM_PSCI_FUNC_ID_CPU_ON: 1142 1142 { 1143 uint64_t u64TgtCpu = nemR3LnxGetGReg(pVCpu, ARMV8_A ARCH64_REG_X1);1144 RTGCPHYS GCPhysExecAddr = nemR3LnxGetGReg(pVCpu, ARMV8_A ARCH64_REG_X2);1145 uint64_t u64CtxId = nemR3LnxGetGReg(pVCpu, ARMV8_A ARCH64_REG_X3);1143 uint64_t u64TgtCpu = nemR3LnxGetGReg(pVCpu, ARMV8_A64_REG_X1); 1144 RTGCPHYS GCPhysExecAddr = nemR3LnxGetGReg(pVCpu, ARMV8_A64_REG_X2); 1145 uint64_t u64CtxId = nemR3LnxGetGReg(pVCpu, ARMV8_A64_REG_X3); 1146 1146 VMMR3CpuOn(pVM, u64TgtCpu & 0xff, GCPhysExecAddr, u64CtxId); 1147 nemR3LnxSetGReg(pVCpu, ARMV8_A ARCH64_REG_X0, true /*f64BitReg*/, false /*fSignExtend*/, ARM_PSCI_STS_SUCCESS);1147 nemR3LnxSetGReg(pVCpu, ARMV8_A64_REG_X0, true /*f64BitReg*/, false /*fSignExtend*/, ARM_PSCI_STS_SUCCESS); 1148 1148 break; 1149 1149 } 1150 1150 case ARM_PSCI_FUNC_ID_PSCI_FEATURES: 1151 1151 { 1152 uint32_t u32FunNum = (uint32_t)nemR3LnxGetGReg(pVCpu, ARMV8_A ARCH64_REG_X1);1152 uint32_t u32FunNum = (uint32_t)nemR3LnxGetGReg(pVCpu, ARMV8_A64_REG_X1); 1153 1153 switch (u32FunNum) 1154 1154 { … … 1158 1158 case ARM_PSCI_FUNC_ID_SYSTEM_RESET2: 1159 1159 case ARM_PSCI_FUNC_ID_CPU_ON: 1160 nemR3LnxSetGReg(pVCpu, ARMV8_A ARCH64_REG_X0,1160 nemR3LnxSetGReg(pVCpu, ARMV8_A64_REG_X0, 1161 1161 false /*f64BitReg*/, false /*fSignExtend*/, 1162 1162 (uint64_t)ARM_PSCI_STS_SUCCESS); 1163 1163 break; 1164 1164 default: 1165 nemR3LnxSetGReg(pVCpu, ARMV8_A ARCH64_REG_X0,1165 nemR3LnxSetGReg(pVCpu, ARMV8_A64_REG_X0, 1166 1166 false /*f64BitReg*/, false /*fSignExtend*/, 1167 1167 (uint64_t)ARM_PSCI_STS_NOT_SUPPORTED); … … 1170 1170 } 1171 1171 default: 1172 nemR3LnxSetGReg(pVCpu, ARMV8_A ARCH64_REG_X0, false /*f64BitReg*/, false /*fSignExtend*/, (uint64_t)ARM_PSCI_STS_NOT_SUPPORTED);1172 nemR3LnxSetGReg(pVCpu, ARMV8_A64_REG_X0, false /*f64BitReg*/, false /*fSignExtend*/, (uint64_t)ARM_PSCI_STS_NOT_SUPPORTED); 1173 1173 } 1174 1174 } 1175 1175 else 1176 nemR3LnxSetGReg(pVCpu, ARMV8_A ARCH64_REG_X0, false /*f64BitReg*/, false /*fSignExtend*/, (uint64_t)ARM_PSCI_STS_NOT_SUPPORTED);1176 nemR3LnxSetGReg(pVCpu, ARMV8_A64_REG_X0, false /*f64BitReg*/, false /*fSignExtend*/, (uint64_t)ARM_PSCI_STS_NOT_SUPPORTED); 1177 1177 1178 1178 -
trunk/src/VBox/VMM/VMMR3/NEMR3Native-win-armv8.cpp
r107650 r107933 2085 2085 DECLINLINE(uint64_t) nemR3WinGetGReg(PVMCPU pVCpu, uint8_t uReg) 2086 2086 { 2087 AssertReturn(uReg <= ARMV8_A ARCH64_REG_ZR, 0);2088 2089 if (uReg == ARMV8_A ARCH64_REG_ZR)2087 AssertReturn(uReg <= ARMV8_A64_REG_XZR, 0); 2088 2089 if (uReg == ARMV8_A64_REG_XZR) 2090 2090 return 0; 2091 2091 … … 2325 2325 { 2326 2326 case ARM_PSCI_FUNC_ID_PSCI_VERSION: 2327 nemR3WinSetGReg(pVCpu, ARMV8_A ARCH64_REG_X0, false /*f64BitReg*/, false /*fSignExtend*/, ARM_PSCI_FUNC_ID_PSCI_VERSION_SET(1, 2));2327 nemR3WinSetGReg(pVCpu, ARMV8_A64_REG_X0, false /*f64BitReg*/, false /*fSignExtend*/, ARM_PSCI_FUNC_ID_PSCI_VERSION_SET(1, 2)); 2328 2328 break; 2329 2329 case ARM_PSCI_FUNC_ID_SYSTEM_OFF: … … 2354 2354 uint64_t u64CtxId = pExit->Hypercall.X[3]; 2355 2355 VMMR3CpuOn(pVM, u64TgtCpu & 0xff, GCPhysExecAddr, u64CtxId); 2356 nemR3WinSetGReg(pVCpu, ARMV8_A ARCH64_REG_X0, true /*f64BitReg*/, false /*fSignExtend*/, ARM_PSCI_STS_SUCCESS);2356 nemR3WinSetGReg(pVCpu, ARMV8_A64_REG_X0, true /*f64BitReg*/, false /*fSignExtend*/, ARM_PSCI_STS_SUCCESS); 2357 2357 break; 2358 2358 } … … 2367 2367 case ARM_PSCI_FUNC_ID_SYSTEM_RESET2: 2368 2368 case ARM_PSCI_FUNC_ID_CPU_ON: 2369 nemR3WinSetGReg(pVCpu, ARMV8_A ARCH64_REG_X0,2369 nemR3WinSetGReg(pVCpu, ARMV8_A64_REG_X0, 2370 2370 false /*f64BitReg*/, false /*fSignExtend*/, 2371 2371 (uint64_t)ARM_PSCI_STS_SUCCESS); 2372 2372 break; 2373 2373 default: 2374 nemR3WinSetGReg(pVCpu, ARMV8_A ARCH64_REG_X0,2374 nemR3WinSetGReg(pVCpu, ARMV8_A64_REG_X0, 2375 2375 false /*f64BitReg*/, false /*fSignExtend*/, 2376 2376 (uint64_t)ARM_PSCI_STS_NOT_SUPPORTED); … … 2379 2379 } 2380 2380 default: 2381 nemR3WinSetGReg(pVCpu, ARMV8_A ARCH64_REG_X0, false /*f64BitReg*/, false /*fSignExtend*/, (uint64_t)ARM_PSCI_STS_NOT_SUPPORTED);2381 nemR3WinSetGReg(pVCpu, ARMV8_A64_REG_X0, false /*f64BitReg*/, false /*fSignExtend*/, (uint64_t)ARM_PSCI_STS_NOT_SUPPORTED); 2382 2382 } 2383 2383 } 2384 2384 else 2385 nemR3WinSetGReg(pVCpu, ARMV8_A ARCH64_REG_X0, false /*f64BitReg*/, false /*fSignExtend*/, (uint64_t)ARM_PSCI_STS_NOT_SUPPORTED);2385 nemR3WinSetGReg(pVCpu, ARMV8_A64_REG_X0, false /*f64BitReg*/, false /*fSignExtend*/, (uint64_t)ARM_PSCI_STS_NOT_SUPPORTED); 2386 2386 2387 2387 /** @todo What to do if immediate is != 0? */ -
trunk/src/VBox/VMM/VMMR3/VMM.cpp
r107308 r107933 1280 1280 PCPUMCTX pCtx = CPUMQueryGuestCtxPtr(pVCpu); 1281 1281 1282 pCtx->aGRegs[ARMV8_A ARCH64_REG_X0].x = u64CtxId;1283 pCtx->Pc.u64 1282 pCtx->aGRegs[ARMV8_A64_REG_X0].x = u64CtxId; 1283 pCtx->Pc.u64 = GCPhysExecAddr; 1284 1284 1285 1285 Log(("vmmR3CpuOn for VCPU %d with GCPhysExecAddr=%RGp u64CtxId=%#RX64\n", idCpu, GCPhysExecAddr, u64CtxId));
Note:
See TracChangeset
for help on using the changeset viewer.