Changeset 99385 in vbox
- Timestamp:
- Apr 13, 2023 11:05:39 AM (20 months ago)
- Location:
- trunk
- Files:
-
- 3 added
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/vmm/cpum-armv8.h
r99383 r99385 66 66 kCpumSysRegRdFn_WriteOnly, 67 67 68 /** Read from a GICv3 PE ICC system register. */ 69 kCpumSysRegRdFn_GicV3Icc, 70 68 71 /** End of valid system register read function indexes. */ 69 72 kCpumSysRegRdFn_End … … 86 89 * kCpumSysRegRdFn_Alias. */ 87 90 kCpumSysRegWrFn_Alias, 91 92 /** Write to a GICv3 PE ICC system register. */ 93 kCpumSysRegWrFn_GicV3Icc, 88 94 89 95 /** End of valid system register write function indexes. */ -
trunk/include/VBox/vmm/vm.h
r98993 r99385 269 269 } gim; 270 270 271 #if defined(VBOX_VMM_TARGET_ARMV8) 272 /** GIC part. */ 273 union VMCPUUNIONGIC 274 { 275 # ifdef VMM_INCLUDED_SRC_include_GICInternal_h 276 struct GICCPU s; 277 # endif 278 uint8_t padding[3840]; /* multiple of 64 */ 279 } gic; 280 #else 271 281 /** APIC part. */ 272 282 union VMCPUUNIONAPIC 273 283 { 274 # ifdef VMM_INCLUDED_SRC_include_APICInternal_h284 # ifdef VMM_INCLUDED_SRC_include_APICInternal_h 275 285 struct APICCPU s; 276 # endif286 # endif 277 287 uint8_t padding[3840]; /* multiple of 64 */ 278 288 } apic; 289 #endif 279 290 280 291 /* … … 1433 1444 } gim; 1434 1445 1435 union 1436 { 1437 #ifdef VMM_INCLUDED_SRC_include_APICInternal_h 1446 #if defined(VBOX_VMM_TARGET_ARMV8) 1447 union 1448 { 1449 # ifdef VMM_INCLUDED_SRC_include_GICInternal_h 1450 struct GIC s; 1451 # endif 1452 uint8_t padding[128]; /* multiple of 8 */ 1453 } gic; 1454 #else 1455 union 1456 { 1457 # ifdef VMM_INCLUDED_SRC_include_APICInternal_h 1438 1458 struct APIC s; 1439 # endif1459 # endif 1440 1460 uint8_t padding[128]; /* multiple of 8 */ 1441 1461 } apic; 1462 #endif 1442 1463 1443 1464 /* ---- begin small stuff ---- */ -
trunk/include/VBox/vmm/vm.mac
r98103 r99385 89 89 .gim resb 512 90 90 alignb 64 91 %ifdef VBOX_VMM_TARGET_ARMV8 92 .gic resb 3840 93 %else 91 94 .apic resb 3840 95 %endif 92 96 93 97 alignb 64 … … 169 173 .gim resb 448 170 174 alignb 64 175 %ifdef VBOX_VMM_TARGET_ARMV8 176 .gic resb 128 177 %else 171 178 .apic resb 128 179 %endif 172 180 alignb 64 173 181 .vm resb 32 -
trunk/src/VBox/VMM/Makefile.kmk
r99383 r99385 375 375 VMMR3/EMR3Dbg.cpp \ 376 376 VMMR3/EMR3Nem.cpp \ 377 VMMR3/GICR3.cpp \ 377 378 VMMR3/GIM.cpp \ 378 379 VMMR3/IEMR3.cpp \ … … 432 433 VMMAll/PGMAllPool.cpp \ 433 434 VMMAll/EMAll.cpp \ 435 VMMAll/GICAll.cpp \ 434 436 VMMAll/GIMAll.cpp \ 435 437 VMMAll/TMAll.cpp \ -
trunk/src/VBox/VMM/VMMAll/CPUMAllSysRegs-armv8.cpp
r99196 r99385 33 33 #include <VBox/vmm/cpum.h> 34 34 #include "CPUMInternal-armv8.h" 35 #include <VBox/vmm/gic.h> 35 36 #include <VBox/vmm/vmcc.h> 36 37 #include <VBox/err.h> … … 143 144 144 145 146 /** @callback_method_impl{FNCPUMRDMSR} */ 147 static DECLCALLBACK(VBOXSTRICTRC) cpumSysRegRd_GicV3Icc(PVMCPUCC pVCpu, uint32_t idSysReg, PCCPUMSYSREGRANGE pRange, uint64_t *puValue) 148 { 149 RT_NOREF_PV(pRange); 150 return GICReadSysReg(pVCpu, idSysReg, puValue); 151 } 152 153 154 /** @callback_method_impl{FNCPUMWRMSR} */ 155 static DECLCALLBACK(VBOXSTRICTRC) cpumSysRegWr_GicV3Icc(PVMCPUCC pVCpu, uint32_t idSysReg, PCCPUMSYSREGRANGE pRange, uint64_t uValue, uint64_t uRawValue) 156 { 157 RT_NOREF_PV(pRange); RT_NOREF_PV(uRawValue); 158 return GICWriteSysReg(pVCpu, idSysReg, uValue); 159 } 160 145 161 146 162 /** … … 153 169 { NULL }, /* Alias */ 154 170 { cpumSysRegRd_WriteOnly }, 171 { cpumSysRegRd_GicV3Icc }, 155 172 }; 156 173 … … 165 182 { cpumSysRegWr_ReadOnly }, 166 183 { NULL }, /* Alias */ 184 { cpumSysRegWr_GicV3Icc }, 167 185 }; 168 186 … … 396 414 * @returns VINF_SUCCESS on success, error on failure. 397 415 */ 398 intcpumR3SysRegStrictInitChecks(void)416 DECLHIDDEN(int) cpumR3SysRegStrictInitChecks(void) 399 417 { 400 418 #define CPUM_ASSERT_RD_SYSREG_FN(a_Register) \ … … 406 424 CPUM_ASSERT_RD_SYSREG_FN(FixedValue); 407 425 CPUM_ASSERT_RD_SYSREG_FN(WriteOnly); 426 CPUM_ASSERT_RD_SYSREG_FN(GicV3Icc); 408 427 409 428 AssertReturn(g_aCpumWrSysRegFns[kCpumSysRegWrFn_Invalid].pfnWrSysReg == NULL, VERR_CPUM_IPE_2); 429 CPUM_ASSERT_WR_SYSREG_FN(IgnoreWrite); 430 CPUM_ASSERT_WR_SYSREG_FN(ReadOnly); 431 CPUM_ASSERT_WR_SYSREG_FN(GicV3Icc); 410 432 411 433 return VINF_SUCCESS; -
trunk/src/VBox/VMM/VMMR3/PDMDevice.cpp
r99051 r99385 34 34 #include "PDMInternal.h" 35 35 #include <VBox/vmm/pdm.h> 36 #include <VBox/vmm/apic.h> 36 #if defined(VBOX_VMM_TARGET_ARMV8) 37 # include <VBox/vmm/gic.h> 38 #else 39 # include <VBox/vmm/apic.h> 40 #endif 37 41 #include <VBox/vmm/cfgm.h> 38 42 #include <VBox/vmm/dbgf.h> … … 676 680 677 681 #if defined(VBOX_VMM_TARGET_ARMV8) 678 int rc; 682 /* 683 * Register the internal VMM GIC device. 684 */ 685 int rc = pdmR3DevReg_Register(&RegCB.Core, &g_DeviceGIC); 686 AssertRCReturn(rc, rc); 679 687 #else 680 688 /* -
trunk/src/VBox/VMM/VMMR3/VMM.cpp
r99051 r99385 130 130 #include <VBox/sup.h> 131 131 #include <VBox/vmm/dbgf.h> 132 #include <VBox/vmm/apic.h> 132 #if defined(VBOX_VMM_TARGET_ARMV8) 133 # include <VBox/vmm/gic.h> 134 #else 135 # include <VBox/vmm/apic.h> 136 #endif 133 137 #include <VBox/vmm/ssm.h> 134 138 #include <VBox/vmm/tm.h>
Note:
See TracChangeset
for help on using the changeset viewer.