Changeset 62000 in vbox for trunk/include/VBox/vmm
- Timestamp:
- Jul 4, 2016 11:25:53 AM (9 years ago)
- Location:
- trunk/include/VBox/vmm
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/vmm/vm.h
r61628 r62000 123 123 uint32_t volatile iHostCpuSet; /* 60 / 40 */ 124 124 125 /** Trace groups enable flags. */ 126 uint32_t fTraceGroups; /* 64 / 44 */ 125 #if HC_ARCH_BITS == 32 127 126 /** Align the structures below bit on a 64-byte boundary and make sure it starts 128 127 * at the same offset in both 64-bit and 32-bit builds. … … 133 132 * following it (to grow into and align the struct size). 134 133 */ 135 uint8_t abAlignment1[HC_ARCH_BITS == 64 ? 56 : 12+64]; 134 uint8_t abAlignment1[HC_ARCH_BITS == 64 ? 0 : 20]; 135 #endif 136 137 /** IEM part. 138 * @remarks This comes first as it allows the use of 8-bit immediates for the 139 * first 64 bytes of the structure, reducing code size a wee bit. */ 140 union 141 { 142 #ifdef ___IEMInternal_h 143 struct IEMCPU s; 144 #endif 145 uint8_t padding[18432]; /* multiple of 64 */ 146 } iem; 147 148 /** HM part. */ 149 union 150 { 151 #ifdef ___HMInternal_h 152 struct HMCPU s; 153 #endif 154 uint8_t padding[5760]; /* multiple of 64 */ 155 } hm; 156 157 /** EM part. */ 158 union 159 { 160 #ifdef ___EMInternal_h 161 struct EMCPU s; 162 #endif 163 uint8_t padding[1408]; /* multiple of 64 */ 164 } em; 165 166 /** TRPM part. */ 167 union 168 { 169 #ifdef ___TRPMInternal_h 170 struct TRPMCPU s; 171 #endif 172 uint8_t padding[128]; /* multiple of 64 */ 173 } trpm; 174 175 /** TM part. */ 176 union 177 { 178 #ifdef ___TMInternal_h 179 struct TMCPU s; 180 #endif 181 uint8_t padding[384]; /* multiple of 64 */ 182 } tm; 183 184 /** VMM part. */ 185 union 186 { 187 #ifdef ___VMMInternal_h 188 struct VMMCPU s; 189 #endif 190 uint8_t padding[704]; /* multiple of 64 */ 191 } vmm; 192 193 /** PDM part. */ 194 union 195 { 196 #ifdef ___PDMInternal_h 197 struct PDMCPU s; 198 #endif 199 uint8_t padding[256]; /* multiple of 64 */ 200 } pdm; 201 202 /** IOM part. */ 203 union 204 { 205 #ifdef ___IOMInternal_h 206 struct IOMCPU s; 207 #endif 208 uint8_t padding[512]; /* multiple of 64 */ 209 } iom; 210 211 /** DBGF part. 212 * @todo Combine this with other tiny structures. */ 213 union 214 { 215 #ifdef ___DBGFInternal_h 216 struct DBGFCPU s; 217 #endif 218 uint8_t padding[256]; /* multiple of 64 */ 219 } dbgf; 220 221 /** GIM part. */ 222 union 223 { 224 #ifdef ___GIMInternal_h 225 struct GIMCPU s; 226 #endif 227 uint8_t padding[64]; /* multiple of 64 */ 228 } gim; 229 230 /** APIC part. */ 231 union 232 { 233 #ifdef ___APICInternal_h 234 struct APICCPU s; 235 #endif 236 uint8_t padding[768]; /* multiple of 64 */ 237 } apic; 238 239 /* 240 * Some less frequently used global members that doesn't need to take up 241 * precious space at the head of the structure. 242 */ 243 244 /** Trace groups enable flags. */ 245 uint32_t fTraceGroups; /* 64 / 44 */ 136 246 /** State data for use by ad hoc profiling. */ 137 247 uint32_t uAdHoc; … … 139 249 STAMPROFILEADV aStatAdHoc[8]; /* size: 40*8 = 320 */ 140 250 141 /** HM part. */142 union143 {144 #ifdef ___HMInternal_h145 struct HMCPU s;146 #endif147 uint8_t padding[5760]; /* multiple of 64 */148 } hm;149 150 /** EM part. */151 union152 {153 #ifdef ___EMInternal_h154 struct EMCPU s;155 #endif156 uint8_t padding[1408]; /* multiple of 64 */157 } em;158 159 /** IEM part. */160 union161 {162 #ifdef ___IEMInternal_h163 struct IEMCPU s;164 #endif165 uint8_t padding[3072]; /* multiple of 64 */166 } iem;167 168 /** TRPM part. */169 union170 {171 #ifdef ___TRPMInternal_h172 struct TRPMCPU s;173 #endif174 uint8_t padding[128]; /* multiple of 64 */175 } trpm;176 177 /** TM part. */178 union179 {180 #ifdef ___TMInternal_h181 struct TMCPU s;182 #endif183 uint8_t padding[384]; /* multiple of 64 */184 } tm;185 186 /** VMM part. */187 union188 {189 #ifdef ___VMMInternal_h190 struct VMMCPU s;191 #endif192 uint8_t padding[704]; /* multiple of 64 */193 } vmm;194 195 /** PDM part. */196 union197 {198 #ifdef ___PDMInternal_h199 struct PDMCPU s;200 #endif201 uint8_t padding[256]; /* multiple of 64 */202 } pdm;203 204 /** IOM part. */205 union206 {207 #ifdef ___IOMInternal_h208 struct IOMCPU s;209 #endif210 uint8_t padding[512]; /* multiple of 64 */211 } iom;212 213 /** DBGF part.214 * @todo Combine this with other tiny structures. */215 union216 {217 #ifdef ___DBGFInternal_h218 struct DBGFCPU s;219 #endif220 uint8_t padding[256]; /* multiple of 64 */221 } dbgf;222 223 /** GIM part. */224 union225 {226 #ifdef ___GIMInternal_h227 struct GIMCPU s;228 #endif229 uint8_t padding[64]; /* multiple of 64 */230 } gim;231 232 #ifdef VBOX_WITH_NEW_APIC233 /** APIC part. */234 union235 {236 # ifdef ___APICInternal_h237 struct APICCPU s;238 # endif239 uint8_t padding[768]; /* multiple of 64 */240 } apic;241 #endif242 243 251 /** Align the following members on page boundary. */ 244 #ifdef VBOX_WITH_NEW_APIC 245 uint8_t abAlignment2[2624]; 246 #else 247 uint8_t abAlignment2[3392]; 248 #endif 252 uint8_t abAlignment2[3704]; 249 253 250 254 /** PGM part. */ … … 1153 1157 } iom; 1154 1158 1155 /** PATM part. */1156 union1157 {1158 #ifdef ___PATMInternal_h1159 struct PATM s;1160 #endif1161 uint8_t padding[768]; /* multiple of 64 */1162 } patm;1163 1164 /** CSAM part. */1165 union1166 {1167 #ifdef ___CSAMInternal_h1168 struct CSAM s;1169 #endif1170 uint8_t padding[1088]; /* multiple of 64 */1171 } csam;1172 1173 1159 /** EM part. */ 1174 1160 union … … 1236 1222 } ftm; 1237 1223 1224 //#ifdef VBOX_WITH_REM 1225 /** PATM part. */ 1226 union 1227 { 1228 # ifdef ___PATMInternal_h 1229 struct PATM s; 1230 # endif 1231 uint8_t padding[768]; /* multiple of 64 */ 1232 } patm; 1233 1234 /** CSAM part. */ 1235 union 1236 { 1237 # ifdef ___CSAMInternal_h 1238 struct CSAM s; 1239 # endif 1240 uint8_t padding[1088]; /* multiple of 64 */ 1241 } csam; 1242 1238 1243 /** REM part. */ 1239 1244 union 1240 1245 { 1241 # ifdef ___REMInternal_h1246 # ifdef ___REMInternal_h 1242 1247 struct REM s; 1243 # endif1248 # endif 1244 1249 uint8_t padding[0x11100]; /* multiple of 64 */ 1245 1250 } rem; 1251 //#endif 1246 1252 1247 1253 union … … 1253 1259 } gim; 1254 1260 1261 union 1262 { 1263 #ifdef ___APICInternal_h 1264 struct APIC s; 1265 #endif 1266 uint8_t padding[128]; /* multiple of 8 */ 1267 } apic; 1268 1255 1269 /* ---- begin small stuff ---- */ 1256 1270 … … 1273 1287 } cfgm; 1274 1288 1275 #ifdef VBOX_WITH_NEW_APIC1276 union1277 {1278 # ifdef ___APICInternal_h1279 struct APIC s;1280 # endif1281 uint8_t padding[128]; /* multiple of 8 */1282 } apic;1283 #endif1284 1285 1289 /** Padding for aligning the cpu array on a page boundary. */ 1286 #ifdef VBOX_WITH_NEW_APIC 1290 //#ifdef VBOX_WITH_REM 1287 1291 uint8_t abAlignment2[3870]; 1288 #else1289 uint8_t abAlignment2[3998];1290 #endif1292 //#else 1293 // uint8_t abAlignment2[3870 + 1984]; 1294 //#endif 1291 1295 1292 1296 /* ---- end small stuff ---- */ -
trunk/include/VBox/vmm/vm.mac
r61150 r62000 38 38 ; * thread or requests which must be executed in another context. */ 39 39 %define VMCPU_FF_REQUEST (1 << 9) 40 41 ;; 42 ; This is part of the VMCPU structure. 43 struc VMCPU 44 .fLocalForcedActions resd 1 45 .enmState resd 1 46 .pUVCpu RTR3PTR_RES 1 47 .pVMR3 RTR3PTR_RES 1 48 .pVMR0 RTR0PTR_RES 1 49 .pVMRC RTRCPTR_RES 1 50 .idCpu resd 1 51 52 .hNativeThread RTR0PTR_RES 1 53 .hNativeThreadR0 RTR0PTR_RES 1 54 .idHostCpu resd 1 55 .iHostCpuSet resd 1 56 %if HC_ARCH_BITS == 32 57 .abAlignment1 resb 12 58 %else 59 ; .abAlignment1 resb 0 60 %endif 61 62 alignb 64 63 .iem resb 18432 64 .hm resb 5760 65 .em resb 1408 66 .trpm resb 128 67 .tm resb 384 68 .vmm resb 704 69 .pdm resb 256 70 .iom resb 512 71 .dbgf resb 256 72 .gim resb 64 73 .apic resb 768 74 75 .fTraceGroups resd 1 76 .uAdHoc resd 1 77 alignb 8 78 .aStatAdHoc resb STAMPROFILEADV_size * 8 79 80 alignb 4096 81 .pgm resb 4096 82 alignb 4096 83 .cpum resb 4096 84 alignb 4096 85 endstruc 40 86 41 87 ;; … … 105 151 alignb 64 106 152 .cpum resb 1536 107 .vmm resb 1536 108 109 endstruc 110 111 ;; 112 ; This is part of the VMCPU structure. 113 struc VMCPU 114 .fLocalForcedActions resd 1 115 .enmState resd 1 116 .pUVCpu RTR3PTR_RES 1 117 .pVMR3 RTR3PTR_RES 1 118 .pVMR0 RTR0PTR_RES 1 119 .pVMRC RTRCPTR_RES 1 120 .idCpu resd 1 121 122 .hNativeThread RTR0PTR_RES 1 123 .hNativeThreadR0 RTR0PTR_RES 1 124 .idHostCpu resd 1 125 .iHostCpuSet resd 1 126 .fTraceGroups resd 1 127 %if HC_ARCH_BITS == 32 128 .abAlignment1 resb 12+64 129 %else 130 .abAlignment1 resb 56 131 %endif 132 .uAdHoc resd 1 133 .aStatAdHoc resb STAMPROFILEADV_size * 8 134 135 alignb 64 136 .hm resb 5760 137 .em resb 1408 138 .iem resb 3072 139 .trpm resb 128 140 .tm resb 384 141 .vmm resb 704 142 .pdm resb 256 143 .iom resb 512 144 .dbgf resb 256 145 .gim resb 64 146 %ifdef VBOX_WITH_NEW_APIC 147 .apic resb 768 148 %endif 149 153 .vmm resb 1600 154 .pgm resb (4096*2+6080) 155 .hm resb 5440 156 .trpm resb 5248 157 .selm resb 768 158 .mm resb 192 159 .pdm resb 1920 160 .iom resb 896 161 .em resb 256 162 .tm resb 2496 163 .dbgf resb 2368 164 .ssm resb 128 165 .ftm resb 512 166 ;%ifdef VBOX_WITH_REM 167 .patm resb 768 168 .csam resb 1088 169 .rem resb 0x11100 170 ;%endif 171 .gim resb 448 172 .apic resb 128 173 .vm resb 24 174 .cfgm resb 8 150 175 alignb 4096 151 .pgm resb 4096 152 alignb 4096 153 .cpum resb 4096 154 alignb 4096 176 .aCpus resb VMCPU_size 155 177 endstruc 156 178
Note:
See TracChangeset
for help on using the changeset viewer.