Changeset 7695 in vbox
- Timestamp:
- Apr 2, 2008 12:17:19 PM (17 years ago)
- svn:sync-xref-src-repo-rev:
- 29222
- Location:
- trunk
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/cpum.h
r7645 r7695 306 306 CPUMSYSENTER SysEnter; 307 307 308 /** System MSRs. 309 * @{ */ 310 uint64_t msrEFER; 311 uint64_t msrSTAR; 312 uint64_t msrPAT; 313 uint64_t msrLSTAR; 314 uint64_t msrCSTAR; 315 uint64_t msrSFMASK; 316 uint64_t msrFSBASE; 317 uint64_t msrGSBASE; 318 uint64_t msrKERNELGSBASE; 319 /** @} */ 320 308 321 /** Hidden selector registers. 309 322 * @{ */ … … 313 326 314 327 /* padding to get 32byte aligned size */ 315 uint32_t padding[ 4];328 uint32_t padding[2]; 316 329 } CPUMCTX; 317 330 #pragma pack() -
trunk/include/VBox/cpum.mac
r7097 r7695 185 185 .SysEnter.esp resb 8 186 186 187 .msrEFER resb 8 188 .msrSTAR resb 8 189 .msrPAT resb 8 190 .msrLSTAR resb 8 191 .msrCSTAR resb 8 192 .msrSFMASK resb 8 193 .msrFSBASE resb 8 194 .msrGSBASE resb 8 195 .msrKERNELGSBASE resb 8 196 187 197 .ldtrHid.u32Base resd 1 188 198 .ldtrHid.u32Limit resd 1 … … 194 204 195 205 ; padding 196 .padding resd 4206 .padding resd 2 197 207 endstruc 198 208 -
trunk/include/VBox/vm.h
r7124 r7695 392 392 struct CPUM s; 393 393 #endif 394 char padding[4 128]; /* multiple of 32 */394 char padding[4384]; /* multiple of 32 */ 395 395 } cpum; 396 396 -
trunk/include/VBox/vm.mac
r7124 r7695 88 88 89 89 alignb 32 90 .cpum resb 4 12890 .cpum resb 4384 91 91 .vmm resb 1024 92 92 -
trunk/include/VBox/x86.h
r7677 r7695 713 713 #endif 714 714 715 /* Page Attribute Table. */ 716 #define IA32_CR_PAT 0x277 717 715 718 /** Basic VMX information. */ 716 719 #define MSR_IA32_VMX_BASIC_INFO 0x480 -
trunk/src/VBox/VMM/CPUMInternal.mac
r7097 r7695 256 256 .Hyper.SysEnter.esp resb 8 257 257 258 .Hyper.msrEFER resb 8 259 .Hyper.msrSTAR resb 8 260 .Hyper.msrPAT resb 8 261 .Hyper.msrLSTAR resb 8 262 .Hyper.msrCSTAR resb 8 263 .Hyper.msrSFMASK resb 8 264 .Hyper.msrFSBASE resb 8 265 .Hyper.msrGSBASE resb 8 266 .Hyper.msrKERNELGSBASE resb 8 267 258 268 .Hyper.ldtrHid.u32Base resd 1 259 269 .Hyper.ldtrHid.u32Limit resd 1 … … 265 275 266 276 ; padding 267 .Hyper.padding resd 4277 .Hyper.padding resd 2 268 278 269 279 … … 362 372 .Guest.SysEnter.esp resb 8 363 373 374 .Guest.msrEFER resb 8 375 .Guest.msrSTAR resb 8 376 .Guest.msrPAT resb 8 377 .Guest.msrLSTAR resb 8 378 .Guest.msrCSTAR resb 8 379 .Guest.msrSFMASK resb 8 380 .Guest.msrFSBASE resb 8 381 .Guest.msrGSBASE resb 8 382 .Guest.msrKERNELGSBASE resb 8 383 364 384 .Guest.ldtrHid.u32Base resd 1 365 385 .Guest.ldtrHid.u32Limit resd 1 … … 371 391 372 392 ; padding 373 .Guest.padding resd 4393 .Guest.padding resd 2 374 394 375 395 … … 408 428 .GuestCpuIdDef resb 16 409 429 410 ; debug stuff...411 .GuestEntry resb 960430 ; CPUMCTX debug stuff... 431 .GuestEntry resb 1024 412 432 413 433 endstruc -
trunk/src/recompiler/VBoxRecompiler.c
r7649 r7695 1859 1859 } 1860 1860 1861 /* Update MSRs. */ 1862 pVM->rem.s.Env.efer = pCtx->msrEFER; 1863 pVM->rem.s.Env.star = pCtx->msrSTAR; 1864 pVM->rem.s.Env.pat = pCtx->msrPAT; 1865 #ifdef TARGET_X86_64 1866 pVM->rem.s.Env.lstar = pCtx->msrLSTAR; 1867 pVM->rem.s.Env.cstar = pCtx->msrCSTAR; 1868 pVM->rem.s.Env.fmask = pCtx->msrSFMASK; 1869 pVM->rem.s.Env.kernelgsbase = pCtx->msrKERNELGSBASE; 1870 #endif 1871 /* Note that FS_BASE & GS_BASE are already synced; QEmu keeps them in the hidden selector registers. 1872 * So we basically assume the hidden registers are in sync with these MSRs (vt-x & amd-v). Correct?? 1873 */ 1874 1861 1875 /* 1862 1876 * Check for traps. … … 2113 2127 pCtx->SysEnter.eip = pVM->rem.s.Env.sysenter_eip; 2114 2128 pCtx->SysEnter.esp = pVM->rem.s.Env.sysenter_esp; 2129 2130 /* System MSRs. */ 2131 pCtx->msrEFER = pVM->rem.s.Env.efer; 2132 pCtx->msrSTAR = pVM->rem.s.Env.star; 2133 pCtx->msrPAT = pVM->rem.s.Env.pat; 2134 #ifdef TARGET_X86_64 2135 pCtx->msrLSTAR = pVM->rem.s.Env.lstar; 2136 pCtx->msrCSTAR = pVM->rem.s.Env.cstar; 2137 pCtx->msrSFMASK = pVM->rem.s.Env.fmask; 2138 pCtx->msrFSBASE = pVM->rem.s.Env.segs[R_FS].base; 2139 pCtx->msrGSBASE = pVM->rem.s.Env.segs[R_GS].base; 2140 pCtx->msrKERNELGSBASE = pVM->rem.s.Env.kernelgsbase; 2141 #endif 2115 2142 2116 2143 remR3TrapClear(pVM);
Note:
See TracChangeset
for help on using the changeset viewer.