Changeset 30180 in vbox for trunk/src/VBox/VMM
- Timestamp:
- Jun 14, 2010 2:13:50 PM (15 years ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/CPUMInternal.mac
r30164 r30180 436 436 437 437 ;; 438 ; Converts the CPUMCPU pointer to CPUM (for the first VMCPU) 438 ; Converts the CPUM pointer to CPUMCPU 439 ; @param %1 register name (PVM) 440 ; @param %2 register name (CPUMCPU offset) 441 %macro CPUMCPU_FROM_CPUM_WITH_OFFSET 2 442 add %1, %2 443 %endmacro 444 445 ;; 446 ; Converts the CPUMCPU pointer to CPUM 439 447 ; @param %1 register name 440 448 %macro CPUM_FROM_CPUMCPU 1 -
trunk/src/VBox/VMM/HWACCMInternal.h
r30105 r30180 231 231 * Switcher function, HC to RC. 232 232 * 233 * @param pVM The VM handle. 233 * @param pVM The VM handle. 234 * @param uOffsetVMCPU VMCPU offset from pVM 234 235 * @returns Return code indicating the action to take. 235 236 */ 236 typedef DECLASMTYPE(int) FNHWACCMSWITCHERHC(PVM pVM);237 typedef VMMDECL(int) FNHWACCMSWITCHERHC(PVM pVM, uint32_t uOffsetVMCPU); 237 238 /** Pointer to switcher function. */ 238 239 typedef FNHWACCMSWITCHERHC *PFNHWACCMSWITCHERHC; -
trunk/src/VBox/VMM/VMMR0/HWSVMR0.cpp
r30165 r30180 2874 2874 STAM_PROFILE_ADV_START(&pVCpu->hwaccm.s.StatWorldSwitch3264, z); 2875 2875 /* Call switcher. */ 2876 rc = pVM->hwaccm.s.pfnHost32ToGuest64R0(pVM );2876 rc = pVM->hwaccm.s.pfnHost32ToGuest64R0(pVM, RT_OFFSETOF(VM, aCpus[pVCpu->idCpu].cpum) - RT_OFFSETOF(VM, cpum)); 2877 2877 STAM_PROFILE_ADV_STOP(&pVCpu->hwaccm.s.StatWorldSwitch3264, z); 2878 2878 -
trunk/src/VBox/VMM/VMMR0/HWVMXR0.cpp
r30160 r30180 4619 4619 STAM_PROFILE_ADV_START(&pVCpu->hwaccm.s.StatWorldSwitch3264, z); 4620 4620 /* Call switcher. */ 4621 rc = pVM->hwaccm.s.pfnHost32ToGuest64R0(pVM );4621 rc = pVM->hwaccm.s.pfnHost32ToGuest64R0(pVM, RT_OFFSETOF(VM, aCpus[pVCpu->idCpu].cpum) - RT_OFFSETOF(VM, cpum)); 4622 4622 STAM_PROFILE_ADV_STOP(&pVCpu->hwaccm.s.StatWorldSwitch3264, z); 4623 4623 -
trunk/src/VBox/VMM/VMMSwitcher/LegacyandAMD64.mac
r30146 r30180 52 52 ;; 53 53 ; The C interface. 54 ; @param [esp + 04h] Param 1 - VM handle 55 ; @param [esp + 08h] Param 2 - VMCPU offset 54 56 ; 55 57 BEGINPROC vmmR0HostToGuest … … 68 70 %endif 69 71 72 push ebp 73 mov ebp, [esp + 12] ; VMCPU offset 74 70 75 ; turn off interrupts 71 76 pushf … … 82 87 ; restore original flags 83 88 popf 89 pop ebp 84 90 85 91 %ifdef VBOX_WITH_STATISTICS … … 103 109 ; INPUT: 104 110 ; - edx virtual address of CPUM structure (valid in host context) 111 ; - ebp offset of the CPUMCPU structure 105 112 ; 106 113 ; USES/DESTROYS: … … 117 124 ;; Skip eax, edx and ecx as these are not preserved over calls. 118 125 ;; 119 CPUMCPU_FROM_CPUM (edx)126 CPUMCPU_FROM_CPUM_WITH_OFFSET edx, ebp 120 127 %ifdef VBOX_WITH_CRASHDUMP_MAGIC 121 128 ; phys address of scratch page … … 224 231 225 232 ; 4. Enable long mode. 226 mov e bp, edx233 mov esi, edx 227 234 mov ecx, MSR_K6_EFER 228 235 rdmsr … … 231 238 and eax, ~(MSR_K6_EFER_FFXSR) ; turn off fast fxsave/fxrstor (skipping xmm regs) 232 239 wrmsr 233 mov edx, e bp240 mov edx, esi 234 241 DEBUG_CHAR('4') 235 242 … … 280 287 ; Load CPUM pointer into rdx 281 288 mov rdx, [NAME(pCpumIC) wrt rip] 282 CPUMCPU_FROM_CPUM (edx)289 CPUMCPU_FROM_CPUM_WITH_OFFSET edx, ebp 283 290 284 291 mov rax, cs … … 362 369 ; Load CPUM pointer into rdx 363 370 mov rdx, [NAME(pCpumIC) wrt rip] 364 CPUMCPU_FROM_CPUM (edx)371 CPUMCPU_FROM_CPUM_WITH_OFFSET edx, ebp 365 372 366 373 %ifdef VBOX_WITH_CRASHDUMP_MAGIC … … 507 514 mov es, eax 508 515 509 FIXUP FIX_GC_CPUM CPU_OFF, 1, 0516 FIXUP FIX_GC_CPUM_OFF, 1, 0 510 517 mov edx, 0ffffffffh 518 CPUMCPU_FROM_CPUM_WITH_OFFSET edx, ebp 511 519 mov esi, [edx + CPUMCPU.Host.cr3] 512 520 mov cr3, esi … … 515 523 FIXUP FIX_HC_CPUM_OFF, 1, 0 516 524 mov edx, 0ffffffffh 517 CPUMCPU_FROM_CPUM (edx)525 CPUMCPU_FROM_CPUM_WITH_OFFSET edx, ebp 518 526 519 527 ; restore the host EFER
Note:
See TracChangeset
for help on using the changeset viewer.