Changeset 107031 in vbox for trunk/src/VBox/VMM/VMMAll
- Timestamp:
- Nov 18, 2024 3:00:29 PM (3 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/CPUMAllSysRegs-armv8.cpp
r106476 r107031 53 53 #define CPUM_SYSREG_ASSERT_CPUMCPU_OFFSET_RETURN(a_pVCpu, a_pRange, a_Type, a_VarName) \ 54 54 AssertMsgReturn( (a_pRange)->offCpumCpu >= 8 \ 55 && (a_pRange)->offCpumCpu < sizeof(CPUMC PU) \55 && (a_pRange)->offCpumCpu < sizeof(CPUMCTX) \ 56 56 && !((a_pRange)->offCpumCpu & (RT_MIN(sizeof(a_Type), 8) - 1)) \ 57 57 , ("offCpumCpu=%#x %s\n", (a_pRange)->offCpumCpu, (a_pRange)->szName), \ 58 58 VERR_CPUM_MSR_BAD_CPUMCPU_OFFSET); \ 59 a_Type *a_VarName = (a_Type *)((uintptr_t)&(a_pVCpu)->cpum.s + (a_pRange)->offCpumCpu)59 a_Type *a_VarName = (a_Type *)((uintptr_t)&(a_pVCpu)->cpum.s.Guest + (a_pRange)->offCpumCpu) 60 60 61 61 … … 146 146 147 147 148 /** @callback_method_impl{FNCPUMRDSYSREG} */ 149 static DECLCALLBACK(VBOXSTRICTRC) cpumSysRegRd_ReadCpumOff(PVMCPUCC pVCpu, uint32_t idSysReg, PCCPUMSYSREGRANGE pRange, uint64_t *puValue) 150 { 151 RT_NOREF(idSysReg); 152 153 CPUM_SYSREG_ASSERT_CPUMCPU_OFFSET_RETURN(pVCpu, pRange, CPUMCTXSYSREG, pSysReg); 154 *puValue = pSysReg->u64; 155 return VINF_SUCCESS; 156 } 157 158 159 /** @callback_method_impl{FNCPUMWRSYSREG} */ 160 static DECLCALLBACK(VBOXSTRICTRC) cpumSysRegWr_WriteCpumOff(PVMCPUCC pVCpu, uint32_t idSysReg, PCCPUMSYSREGRANGE pRange, uint64_t uValue, uint64_t uRawValue) 161 { 162 RT_NOREF(idSysReg, uRawValue); 163 164 CPUM_SYSREG_ASSERT_CPUMCPU_OFFSET_RETURN(pVCpu, pRange, CPUMCTXSYSREG, pSysReg); 165 pSysReg->u64 = uValue; 166 return VINF_SUCCESS; 167 } 168 148 169 149 170 /** @callback_method_impl{FNCPUMRDSYSREG} */ … … 209 230 { NULL }, /* Alias */ 210 231 { cpumSysRegRd_WriteOnly }, 232 { cpumSysRegRd_ReadCpumOff }, 211 233 { cpumSysRegRd_GicV3Icc }, 212 234 { cpumSysRegRd_OslsrEl1 }, … … 224 246 { cpumSysRegWr_ReadOnly }, 225 247 { NULL }, /* Alias */ 248 { cpumSysRegWr_WriteCpumOff }, 226 249 { cpumSysRegWr_GicV3Icc }, 227 250 { cpumSysRegWr_OslarEl1 }, … … 468 491 CPUM_ASSERT_RD_SYSREG_FN(FixedValue); 469 492 CPUM_ASSERT_RD_SYSREG_FN(WriteOnly); 493 CPUM_ASSERT_RD_SYSREG_FN(ReadCpumOff); 470 494 CPUM_ASSERT_RD_SYSREG_FN(GicV3Icc); 471 495 CPUM_ASSERT_RD_SYSREG_FN(OslsrEl1); 496 CPUM_ASSERT_RD_SYSREG_FN(Pmu); 472 497 473 498 AssertReturn(g_aCpumWrSysRegFns[kCpumSysRegWrFn_Invalid].pfnWrSysReg == NULL, VERR_CPUM_IPE_2); 474 499 CPUM_ASSERT_WR_SYSREG_FN(IgnoreWrite); 475 500 CPUM_ASSERT_WR_SYSREG_FN(ReadOnly); 501 CPUM_ASSERT_WR_SYSREG_FN(WriteCpumOff); 476 502 CPUM_ASSERT_WR_SYSREG_FN(GicV3Icc); 477 503 CPUM_ASSERT_WR_SYSREG_FN(OslarEl1); 504 CPUM_ASSERT_WR_SYSREG_FN(Pmu); 478 505 479 506 return VINF_SUCCESS;
Note:
See TracChangeset
for help on using the changeset viewer.