Changeset 41905 in vbox for trunk/src/VBox
- Timestamp:
- Jun 24, 2012 1:19:25 AM (13 years ago)
- svn:sync-xref-src-repo-rev:
- 78758
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/CPUMAllRegs.cpp ¶
r41836 r41905 114 114 pVCpu->cpum.s.Hyper.gdtr.cbGdt = limit; 115 115 pVCpu->cpum.s.Hyper.gdtr.pGdt = addr; 116 pVCpu->cpum.s.Hyper.gdtrPadding = 0;117 116 } 118 117 … … 122 121 pVCpu->cpum.s.Hyper.idtr.cbIdt = limit; 123 122 pVCpu->cpum.s.Hyper.idtr.pIdt = addr; 124 pVCpu->cpum.s.Hyper.idtrPadding = 0;125 123 } 126 124 -
trunk/src/VBox/VMM/VMMR3/CPUM.cpp ¶
r41904 r41905 87 87 #define CPUM_SAVED_STATE_VERSION_VER1_6 6 88 88 89 //#define CPUM_WITH_CHANGED_CPUMCTX89 #define CPUM_WITH_CHANGED_CPUMCTX 90 90 91 91 /******************************************************************************* -
trunk/src/VBox/VMM/VMMSwitcher/AMD64andLegacy.mac ¶
r37969 r41905 542 542 lidt [edx + CPUMCPU.Hyper.idtr] 543 543 544 ; Setup stack ; use the lss_esp, ss pair for lss544 ; Setup stack. 545 545 DEBUG_CHAR('3') 546 mov eax, [edx + CPUMCPU.Hyper.esp]547 mov [edx + CPUMCPU.Hyper.lss_esp], eax548 lss esp, [edx + CPUMCPU.Hyper.lss_esp]546 mov ax, [edx + CPUMCPU.Hyper.ss] 547 mov ss, ax 548 mov esp, [edx + CPUMCPU.Hyper.esp] 549 549 550 550 ; Restore TSS selector; must mark it as not busy before using ltr (!) -
trunk/src/VBox/VMM/VMMSwitcher/LegacyandAMD64.mac ¶
r37955 r41905 380 380 %endif 381 381 382 ; Setup stack ; use the lss_esp, ss pair for lss382 ; Setup stack. 383 383 DEBUG_CHAR('7') 384 384 mov rsp, 0 385 mov eax, [rdx + CPUMCPU.Hyper. esp]386 mov [rdx + CPUMCPU.Hyper.lss_esp], eax387 lss esp, [rdx + CPUMCPU.Hyper.lss_esp]385 mov eax, [rdx + CPUMCPU.Hyper.ss] 386 mov ss, ax 387 mov esp, [rdx + CPUMCPU.Hyper.esp] 388 388 389 389 %ifdef VBOX_WITH_CRASHDUMP_MAGIC -
trunk/src/VBox/VMM/VMMSwitcher/PAEand32Bit.mac ¶
r37955 r41905 385 385 mov fs, eax 386 386 387 ; Setup stack ; use the lss_esp, ss pair for lss387 ; Setup stack. 388 388 DEBUG_CHAR('3') 389 mov eax, [edx + CPUMCPU.Hyper. esp]390 mov [edx + CPUMCPU.Hyper.lss_esp], eax391 lss esp, [edx + CPUMCPU.Hyper.lss_esp]389 mov eax, [edx + CPUMCPU.Hyper.ss] 390 mov ss, ax 391 mov esp, [edx + CPUMCPU.Hyper.esp] 392 392 393 393 ; Restore TSS selector; must mark it as not busy before using ltr (!) -
trunk/src/VBox/VMM/include/CPUMInternal.h ¶
r41271 r41905 329 329 RTHCPTR pvApicBase; 330 330 uint32_t fApicDisVectors; 331 uint8_t abPadding3[HC_ARCH_BITS == 32 ? 56 : 52]; 332 #endif 333 334 /** 335 * Guest context on raw mode entry. 64-byte aligned! 336 * This a debug feature, see CPUMR3SaveEntryCtx. 337 */ 338 CPUMCTX GuestEntry; 331 uint8_t abPadding3[4]; 332 #endif 339 333 } CPUM; 340 334 /** Pointer to the CPUM instance data residing in the shared VM structure. */ -
trunk/src/VBox/VMM/include/CPUMInternal.mac ¶
r40234 r41905 90 90 .pvApicBase RTR0PTR_RES 1 91 91 .fApicDisVectors resd 1 92 %endif 93 94 alignb 64 95 ; CPUMCTX debug stuff... 96 .GuestEntry resb 1024 92 .abPadding3 resb 4 93 %endif 97 94 endstruc 98 95 … … 101 98 ; Hypervisor Context. 102 99 ; 103 alignb 64 ; the padding 104 .Hyper.fpu resb FPUSTATE_SIZE 105 106 .Hyper.edi resq 1 107 .Hyper.esi resq 1 108 .Hyper.ebp resq 1 109 .Hyper.eax resq 1 110 .Hyper.ebx resq 1 111 .Hyper.edx resq 1 112 .Hyper.ecx resq 1 113 .Hyper.esp resq 1 114 .Hyper.lss_esp resd 1 115 .Hyper.ss resw 1 116 .Hyper.ssPadding resw 1 117 .Hyper.gs resw 1 118 .Hyper.gsPadding resw 1 119 .Hyper.fs resw 1 120 .Hyper.fsPadding resw 1 121 .Hyper.es resw 1 122 .Hyper.esPadding resw 1 123 .Hyper.ds resw 1 124 .Hyper.dsPadding resw 1 125 .Hyper.cs resw 1 126 .Hyper.csPadding resw 3 127 .Hyper.eflags resq 1 128 .Hyper.eip resq 1 129 .Hyper.r8 resq 1 130 .Hyper.r9 resq 1 131 .Hyper.r10 resq 1 132 .Hyper.r11 resq 1 133 .Hyper.r12 resq 1 134 .Hyper.r13 resq 1 135 .Hyper.r14 resq 1 136 .Hyper.r15 resq 1 137 100 .Hyper.fpu resb 512 101 .Hyper.eax resq 1 102 .Hyper.ecx resq 1 103 .Hyper.edx resq 1 104 .Hyper.ebx resq 1 105 .Hyper.esp resq 1 106 .Hyper.ebp resq 1 107 .Hyper.esi resq 1 108 .Hyper.edi resq 1 109 .Hyper.r8 resq 1 110 .Hyper.r9 resq 1 111 .Hyper.r10 resq 1 112 .Hyper.r11 resq 1 113 .Hyper.r12 resq 1 114 .Hyper.r13 resq 1 115 .Hyper.r14 resq 1 116 .Hyper.r15 resq 1 117 .Hyper.es resw 1 118 .Hyper.esPadding resw 3 138 119 .Hyper.esHid.u64Base resq 1 139 120 .Hyper.esHid.u32Limit resd 1 140 121 .Hyper.esHid.Attr resd 1 141 122 .Hyper.cs resw 1 123 .Hyper.csPadding resw 3 142 124 .Hyper.csHid.u64Base resq 1 143 125 .Hyper.csHid.u32Limit resd 1 144 126 .Hyper.csHid.Attr resd 1 145 127 .Hyper.ss resw 1 128 .Hyper.ssPadding resw 3 146 129 .Hyper.ssHid.u64Base resq 1 147 130 .Hyper.ssHid.u32Limit resd 1 148 131 .Hyper.ssHid.Attr resd 1 149 132 .Hyper.ds resw 1 133 .Hyper.dsPadding resw 3 150 134 .Hyper.dsHid.u64Base resq 1 151 135 .Hyper.dsHid.u32Limit resd 1 152 136 .Hyper.dsHid.Attr resd 1 153 137 .Hyper.fs resw 1 138 .Hyper.fsPadding resw 3 154 139 .Hyper.fsHid.u64Base resq 1 155 140 .Hyper.fsHid.u32Limit resd 1 156 141 .Hyper.fsHid.Attr resd 1 157 142 .Hyper.gs resw 1 143 .Hyper.gsPadding resw 3 158 144 .Hyper.gsHid.u64Base resq 1 159 145 .Hyper.gsHid.u32Limit resd 1 160 146 .Hyper.gsHid.Attr resd 1 161 162 .Hyper.cr0 resq 1 163 .Hyper.cr2 resq 1 164 .Hyper.cr3 resq 1 165 .Hyper.cr4 resq 1 166 167 .Hyper.dr resq 8 168 169 .Hyper.gdtr resb 10 ; GDT limit + linear address 170 .Hyper.gdtrPadding resw 1 171 .Hyper.idtr resb 10 ; IDT limit + linear address 172 .Hyper.idtrPadding resw 1 173 .Hyper.ldtr resw 1 174 .Hyper.ldtrPadding resw 1 175 .Hyper.tr resw 1 176 .Hyper.trPadding resw 1 177 147 .Hyper.eip resq 1 148 .Hyper.eflags resq 1 149 .Hyper.cr0 resq 1 150 .Hyper.cr2 resq 1 151 .Hyper.cr3 resq 1 152 .Hyper.cr4 resq 1 153 .Hyper.dr resq 8 154 .Hyper.gdtrPadding resw 3 155 .Hyper.gdtr resw 0 156 .Hyper.gdtr.cbGdt resw 1 157 .Hyper.gdtr.pGdt resq 1 158 .Hyper.idtrPadding resw 3 159 .Hyper.idtr resw 0 160 .Hyper.idtr.cbIdt resw 1 161 .Hyper.idtr.pIdt resq 1 162 .Hyper.ldtr resw 1 163 .Hyper.ldtrPadding resw 3 164 .Hyper.ldtrHid.u64Base resq 1 165 .Hyper.ldtrHid.u32Limit resd 1 166 .Hyper.ldtrHid.Attr resd 1 167 .Hyper.tr resw 1 168 .Hyper.trPadding resw 3 169 .Hyper.trHid.u64Base resq 1 170 .Hyper.trHid.u32Limit resd 1 171 .Hyper.trHid.Attr resd 1 178 172 .Hyper.SysEnter.cs resb 8 179 173 .Hyper.SysEnter.eip resb 8 180 174 .Hyper.SysEnter.esp resb 8 181 182 175 .Hyper.msrEFER resb 8 183 176 .Hyper.msrSTAR resb 8 … … 188 181 .Hyper.msrKERNELGSBASE resb 8 189 182 190 .Hyper.ldtrHid.u64Base resq 1191 .Hyper.ldtrHid.u32Limit resd 1192 .Hyper.ldtrHid.Attr resd 1193 194 .Hyper.trHid.u64Base resq 1195 .Hyper.trHid.u32Limit resd 1196 .Hyper.trHid.Attr resd 1197 198 183 ; 199 184 ; Host context state 200 185 ; 186 alignb 64 201 187 .Host.fpu resb FPUSTATE_SIZE 202 188 … … 316 302 ; 317 303 alignb 64 318 .Guest.fpu resb FPUSTATE_SIZE 319 320 .Guest.edi resq 1 321 .Guest.esi resq 1 322 .Guest.ebp resq 1 323 .Guest.eax resq 1 324 .Guest.ebx resq 1 325 .Guest.edx resq 1 326 .Guest.ecx resq 1 327 .Guest.esp resq 1 328 .Guest.lss_esp resd 1 329 .Guest.ss resw 1 330 .Guest.ssPadding resw 1 331 .Guest.gs resw 1 332 .Guest.gsPadding resw 1 333 .Guest.fs resw 1 334 .Guest.fsPadding resw 1 335 .Guest.es resw 1 336 .Guest.esPadding resw 1 337 .Guest.ds resw 1 338 .Guest.dsPadding resw 1 339 .Guest.cs resw 1 340 .Guest.csPadding resw 3 341 .Guest.eflags resq 1 342 .Guest.eip resq 1 343 .Guest.r8 resq 1 344 .Guest.r9 resq 1 345 .Guest.r10 resq 1 346 .Guest.r11 resq 1 347 .Guest.r12 resq 1 348 .Guest.r13 resq 1 349 .Guest.r14 resq 1 350 .Guest.r15 resq 1 351 304 .Guest.fpu resb 512 305 .Guest.eax resq 1 306 .Guest.ecx resq 1 307 .Guest.edx resq 1 308 .Guest.ebx resq 1 309 .Guest.esp resq 1 310 .Guest.ebp resq 1 311 .Guest.esi resq 1 312 .Guest.edi resq 1 313 .Guest.r8 resq 1 314 .Guest.r9 resq 1 315 .Guest.r10 resq 1 316 .Guest.r11 resq 1 317 .Guest.r12 resq 1 318 .Guest.r13 resq 1 319 .Guest.r14 resq 1 320 .Guest.r15 resq 1 321 .Guest.es resw 1 322 .Guest.esPadding resw 3 352 323 .Guest.esHid.u64Base resq 1 353 324 .Guest.esHid.u32Limit resd 1 354 325 .Guest.esHid.Attr resd 1 355 326 .Guest.cs resw 1 327 .Guest.csPadding resw 3 356 328 .Guest.csHid.u64Base resq 1 357 329 .Guest.csHid.u32Limit resd 1 358 330 .Guest.csHid.Attr resd 1 359 331 .Guest.ss resw 1 332 .Guest.ssPadding resw 3 360 333 .Guest.ssHid.u64Base resq 1 361 334 .Guest.ssHid.u32Limit resd 1 362 335 .Guest.ssHid.Attr resd 1 363 336 .Guest.ds resw 1 337 .Guest.dsPadding resw 3 364 338 .Guest.dsHid.u64Base resq 1 365 339 .Guest.dsHid.u32Limit resd 1 366 340 .Guest.dsHid.Attr resd 1 367 341 .Guest.fs resw 1 342 .Guest.fsPadding resw 3 368 343 .Guest.fsHid.u64Base resq 1 369 344 .Guest.fsHid.u32Limit resd 1 370 345 .Guest.fsHid.Attr resd 1 371 346 .Guest.gs resw 1 347 .Guest.gsPadding resw 3 372 348 .Guest.gsHid.u64Base resq 1 373 349 .Guest.gsHid.u32Limit resd 1 374 350 .Guest.gsHid.Attr resd 1 375 376 .Guest.cr0 resq 1 377 .Guest.cr2 resq 1 378 .Guest.cr3 resq 1 379 .Guest.cr4 resq 1 380 381 .Guest.dr resq 8 382 383 .Guest.gdtr.cbGdt resw 1 384 .Guest.gdtr.pGdt resq 1 385 .Guest.gdtrPadding resw 1 386 .Guest.idtr.cbIdt resw 1 387 .Guest.idtr.pIdt resq 1 388 .Guest.idtrPadding resw 1 389 .Guest.ldtr resw 1 390 .Guest.ldtrPadding resw 1 391 .Guest.tr resw 1 392 .Guest.trPadding resw 1 393 351 .Guest.eip resq 1 352 .Guest.eflags resq 1 353 .Guest.cr0 resq 1 354 .Guest.cr2 resq 1 355 .Guest.cr3 resq 1 356 .Guest.cr4 resq 1 357 .Guest.dr resq 8 358 .Guest.gdtrPadding resw 3 359 .Guest.gdtr resw 0 360 .Guest.gdtr.cbGdt resw 1 361 .Guest.gdtr.pGdt resq 1 362 .Guest.idtrPadding resw 3 363 .Guest.idtr resw 0 364 .Guest.idtr.cbIdt resw 1 365 .Guest.idtr.pIdt resq 1 366 .Guest.ldtr resw 1 367 .Guest.ldtrPadding resw 3 368 .Guest.ldtrHid.u64Base resq 1 369 .Guest.ldtrHid.u32Limit resd 1 370 .Guest.ldtrHid.Attr resd 1 371 .Guest.tr resw 1 372 .Guest.trPadding resw 3 373 .Guest.trHid.u64Base resq 1 374 .Guest.trHid.u32Limit resd 1 375 .Guest.trHid.Attr resd 1 394 376 .Guest.SysEnter.cs resb 8 395 377 .Guest.SysEnter.eip resb 8 396 378 .Guest.SysEnter.esp resb 8 397 398 379 .Guest.msrEFER resb 8 399 380 .Guest.msrSTAR resb 8 … … 404 385 .Guest.msrKERNELGSBASE resb 8 405 386 406 .Guest.ldtrHid.u64Base resq 1 407 .Guest.ldtrHid.u32Limit resd 1 408 .Guest.ldtrHid.Attr resd 1 409 410 .Guest.trHid.u64Base resq 1 411 .Guest.trHid.u32Limit resd 1 412 .Guest.trHid.Attr resd 1 413 387 388 alignb 64 414 389 .GuestMsrs.au64 resq 64 415 390 … … 417 392 ; Other stuff. 418 393 ; 419 alignb 64420 394 ; hypervisor core context. 421 395 .pHyperCoreR3 RTR3PTR_RES 1 -
trunk/src/VBox/VMM/testcase/tstVMStruct.h ¶
r41899 r41905 49 49 GEN_CHECK_OFF(CPUM, fApicDisVectors); 50 50 #endif 51 GEN_CHECK_OFF(CPUM, GuestEntry);52 51 53 52 GEN_CHECK_SIZE(CPUMCPU); // has .mac … … 149 148 GEN_CHECK_OFF(CPUMCTX, rcx); 150 149 GEN_CHECK_OFF(CPUMCTX, rsp); 151 GEN_CHECK_OFF(CPUMCTX, lss_esp);152 150 GEN_CHECK_OFF(CPUMCTX, ss); 153 151 GEN_CHECK_OFF(CPUMCTX, gs); -
trunk/src/VBox/VMM/testcase/tstVMStructSize.cpp ¶
r41692 r41905 101 101 #define CHECK_CPUMCTXCORE(member) \ 102 102 do { \ 103 if (RT_OFFSETOF(CPUMCTX, member) - RT_OFFSETOF(CPUMCTX, edi) != RT_OFFSETOF(CPUMCTXCORE, member)) \ 103 unsigned off1 = RT_OFFSETOF(CPUMCTX, member) - RT_OFFSETOF(CPUMCTX, rax); \ 104 unsigned off2 = RT_OFFSETOF(CPUMCTXCORE, member); \ 105 if (off1 != off2) \ 104 106 { \ 105 printf("error! CPUMCTX/CORE:: %s! \n", #member); \107 printf("error! CPUMCTX/CORE:: %s! (%#x vs %#x (ctx))\n", #member, off1, off2); \ 106 108 rc++; \ 107 109 } \ … … 269 271 CHECK_MEMBER_ALIGNMENT(VM, cpum.s.pvApicBase, 8); 270 272 #endif 271 CHECK_MEMBER_ALIGNMENT(VM, cpum.s.GuestEntry, 64);272 273 273 274 CHECK_MEMBER_ALIGNMENT(VMCPU, vmm.s.u64CallRing3Arg, 8); … … 289 290 /* cpumctx */ 290 291 CHECK_MEMBER_ALIGNMENT(CPUMCTX, fpu, 32); 291 CHECK_MEMBER_ALIGNMENT(CPUMCTX, edi, 32); 292 CHECK_MEMBER_ALIGNMENT(CPUMCTX, idtr, 4); 292 CHECK_MEMBER_ALIGNMENT(CPUMCTX, rax, 32); 293 CHECK_MEMBER_ALIGNMENT(CPUMCTX, idtr.pIdt, 8); 294 CHECK_MEMBER_ALIGNMENT(CPUMCTX, gdtr.pGdt, 8); 293 295 CHECK_MEMBER_ALIGNMENT(CPUMCTX, SysEnter, 8); 294 CHECK_CPUMCTXCORE( eax);295 CHECK_CPUMCTXCORE( ebx);296 CHECK_CPUMCTXCORE( ecx);297 CHECK_CPUMCTXCORE( edx);298 CHECK_CPUMCTXCORE( ebp);299 CHECK_CPUMCTXCORE( esp);300 CHECK_CPUMCTXCORE( edi);301 CHECK_CPUMCTXCORE( esi);302 CHECK_CPUMCTXCORE( eip);303 CHECK_CPUMCTXCORE( eflags);296 CHECK_CPUMCTXCORE(rax); 297 CHECK_CPUMCTXCORE(rbx); 298 CHECK_CPUMCTXCORE(rcx); 299 CHECK_CPUMCTXCORE(rdx); 300 CHECK_CPUMCTXCORE(rbp); 301 CHECK_CPUMCTXCORE(rsp); 302 CHECK_CPUMCTXCORE(rdi); 303 CHECK_CPUMCTXCORE(rsi); 304 CHECK_CPUMCTXCORE(rip); 305 CHECK_CPUMCTXCORE(rflags); 304 306 CHECK_CPUMCTXCORE(cs); 305 307 CHECK_CPUMCTXCORE(ds);
Note:
See TracChangeset
for help on using the changeset viewer.