Changeset 41147 in vbox
- Timestamp:
- May 3, 2012 8:15:27 PM (13 years ago)
- svn:sync-xref-src-repo-rev:
- 77764
- Location:
- trunk
- Files:
-
- 20 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Config.kmk
r41134 r41147 625 625 endif 626 626 # Set this to enable dtrace probes raw-mode context code. 627 #VBOX_WITH_DTRACE_RC = 1 627 ##ifn1of ($(KBUILD_TARGET), os2) 628 ## VBOX_WITH_DTRACE_RC = 1 629 ##endif 628 630 # Set this to enable support for dtrace probes in guest code. 629 631 #VBOX_WITH_DTRACE_GST = 1 … … 2691 2693 TEMPLATE_VBoxRc_DTRACETOOL = VBoxTpG 2692 2694 TEMPLATE_VBoxRc_DEFS += VBOX_WITH_DTRACE VBOX_WITH_DTRACE_RC 2695 TEMPLATE_VBoxRc_DTRACE_OBJ_FLAGS = --probe-fn-name "VMMRCProbeFire" 2693 2696 else 2694 2697 TEMPLATE_VBoxRc_DTRACETOOL = VBoxTpG-Disabled -
trunk/include/VBox/err.h
r41117 r41147 1102 1102 /** The ring-3 call didn't set an RC. */ 1103 1103 #define VERR_VMM_RING3_CALL_NO_RC (-2711) 1104 /** Reason for leaving RC: Caller the tracer in ring-0. */ 1105 #define VINF_VMM_CALL_TRACER (2712) 1104 1106 /** @} */ 1105 1107 -
trunk/include/VBox/sup.h
r41130 r41147 1670 1670 SUPR0DECL(void) SUPR0TracerFireProbe(struct VTGPROBELOC *pVtgProbeLoc, uintptr_t uArg0, uintptr_t uArg1, uintptr_t uArg2, 1671 1671 uintptr_t uArg3, uintptr_t uArg4); 1672 SUPR0DECL(void) SUPR0TracerUmodProbeFire(PSUPDRVSESSION pSession, PSUPDRVTRACERUSRCTX pCtx); 1672 1673 /** @} */ 1673 1674 -
trunk/include/VBox/sup.mac
r40769 r41147 69 69 endstruc 70 70 71 struc SUPDRVTRACERUSRCTX32 72 .idProbe resd 1 73 .cBits resb 1 74 .abReserved resb 3 75 .u.X86.uVtgProbeLoc resd 1 76 .u.X86.aArgs resd 20 77 .u.X86.eip resd 1 78 .u.X86.eflags resd 1 79 .u.X86.eax resd 1 80 .u.X86.ecx resd 1 81 .u.X86.edx resd 1 82 .u.X86.ebx resd 1 83 .u.X86.esp resd 1 84 .u.X86.ebp resd 1 85 .u.X86.esi resd 1 86 .u.X86.edi resd 1 87 .u.X86.cs resw 1 88 .u.X86.ss resw 1 89 .u.X86.ds resw 1 90 .u.X86.es resw 1 91 .u.X86.fs resw 1 92 .u.X86.gs resw 1 93 endstruc 94 95 struc SUPDRVTRACERUSRCTX64 96 .idProbe resd 1 97 .cBits resb 1 98 .abReserved resb 3 99 .u.Amd64.uVtgProbeLoc resq 1 100 .u.Amd64.aArgs resq 10 101 .u.Amd64.rip resq 1 102 .u.Amd64.rflags resq 1 103 .u.Amd64.rax resq 1 104 .u.Amd64.rcx resq 1 105 .u.Amd64.rdx resq 1 106 .u.Amd64.rbx resq 1 107 .u.Amd64.rsp resq 1 108 .u.Amd64.rbp resq 1 109 .u.Amd64.rsi resq 1 110 .u.Amd64.rdi resq 1 111 .u.Amd64.r8 resq 1 112 .u.Amd64.r9 resq 1 113 .u.Amd64.r10 resq 1 114 .u.Amd64.r11 resq 1 115 .u.Amd64.r12 resq 1 116 .u.Amd64.r13 resq 1 117 .u.Amd64.r14 resq 1 118 .u.Amd64.r15 resq 1 119 endstruc 120 71 121 72 122 %endif -
trunk/include/VBox/vmm/vm.h
r40656 r41147 183 183 struct VMMCPU s; 184 184 #endif 185 uint8_t padding[ 384]; /* multiple of 64 */185 uint8_t padding[640]; /* multiple of 64 */ 186 186 } vmm; 187 187 … … 215 215 216 216 /** Align the following members on page boundary. */ 217 uint8_t abAlignment2[1024 - 64];217 uint8_t abAlignment2[1024 - 320]; 218 218 219 219 /** PGM part. */ -
trunk/include/VBox/vmm/vm.mac
r40405 r41147 138 138 alignb 64 139 139 140 .cpum resb 4096 140 .cpum resb 3456 141 .hwaccm resb 5376 142 .em resb 1472 143 .iem resb 3072 144 .trpm resb 128 145 .tm resb 384 146 .vmm resb 640 147 .pdm resb 128 148 .iom resb 512 149 .dbgf resb 64 150 alignb 4096 151 .pgm resb 4096 141 152 endstruc 142 153 -
trunk/include/VBox/vmm/vmm.h
r39917 r41147 111 111 VMMCALLRING3_32BIT_HACK = 0x7fffffff 112 112 } VMMCALLRING3; 113 114 115 /** 116 * VMMRZCallRing0 operations. 117 */ 118 typedef enum VMMCALLRING0 119 { 120 /** Invalid operation. */ 121 VMMCALLRING0_INVALID = 0, 122 /** A probe fired, call SUPR0TracerUmodProbeFire. */ 123 VMMCALLRING0_TRACER_UMOD_PROBE_FIRE, 124 /** The usual 32-bit hack. */ 125 VMMCALLRING0_32BIT_HACK = 0x7fffffff 126 } VMMCALLRING0; 127 113 128 114 129 /** … … 498 513 VMMRCDECL(void) VMMGCGuestToHost(PVM pVM, int rc); 499 514 VMMRCDECL(void) VMMGCLogFlushIfFull(PVM pVM); 515 VMMRZDECL(int) VMMRCCallRing0(PVM pVM, PVMCPU pVCpu, VMMCALLRING0 enmOperation, uint64_t uArg); 500 516 /** @} */ 501 517 #endif /* IN_RC */ -
trunk/src/VBox/HostDrivers/Support/SUPDrv.c
r41117 r41147 194 194 { "SUPR0TracerRegisterImpl", (void *)SUPR0TracerRegisterImpl }, 195 195 { "SUPR0TracerRegisterModule", (void *)SUPR0TracerRegisterModule }, 196 { "SUPR0TracerUmodProbeFire", (void *)SUPR0TracerUmodProbeFire }, 196 197 { "SUPR0UnlockMem", (void *)SUPR0UnlockMem }, 197 198 { "SUPSemEventClose", (void *)SUPSemEventClose }, -
trunk/src/VBox/HostDrivers/Support/SUPDrvIOC.h
r41117 r41147 194 194 * - Remove RTSpinlockReleaseNoInts. 195 195 */ 196 #define SUPDRV_IOC_VERSION 0x001a000 2196 #define SUPDRV_IOC_VERSION 0x001a0003 197 197 198 198 /** SUP_IOCTL_COOKIE. */ -
trunk/src/VBox/HostDrivers/Support/SUPDrvTracer.cpp
r41135 r41147 335 335 uint64_t u64Tmp = pVtgHdr->uProbeLocsEnd.u64 - pVtgHdr->uProbeLocs.u64; 336 336 if (u64Tmp >= UINT32_MAX) 337 { 338 SUPR0Printf("supdrvVtgValidateHdr: VERR_SUPDRV_VTG_BAD_HDR_TOO_MUCH - u64Tmp=%#llx ProbeLocs=%#llx ProbeLocsEnd=%#llx\n", 339 u64Tmp, pVtgHdr->uProbeLocs.u64, pVtgHdr->uProbeLocsEnd.u64); 337 340 return VERR_SUPDRV_VTG_BAD_HDR_TOO_MUCH; 341 } 338 342 pVtgHdr->cbProbeLocs = (uint32_t)u64Tmp; 339 343 340 344 u64Tmp = pVtgHdr->uProbeLocs.u64 - uVtgHdrAddr; 341 345 if ((int64_t)u64Tmp != (int32_t)u64Tmp) 346 { 347 SUPR0Printf("supdrvVtgValidateHdr: VERR_SUPDRV_VTG_BAD_HDR_PTR - u64Tmp=%#llx uProbeLocs=%#llx uVtgHdrAddr=%RTptr\n", 348 u64Tmp, pVtgHdr->uProbeLocs.u64, uVtgHdrAddr); 342 349 return VERR_SUPDRV_VTG_BAD_HDR_PTR; 350 } 343 351 pVtgHdr->offProbeLocs = (int32_t)u64Tmp; 344 352 } -
trunk/src/VBox/HostDrivers/Support/SUPLib.cpp
r41117 r41147 269 269 CookieReq.u.In.u32ReqVersion = SUPDRV_IOC_VERSION; 270 270 const uint32_t uMinVersion = (SUPDRV_IOC_VERSION & 0xffff0000) == 0x00190000 271 ? 0x0019000 2271 ? 0x00190003 272 272 : SUPDRV_IOC_VERSION & 0xffff0000; 273 273 CookieReq.u.In.u32MinVersion = uMinVersion; … … 2570 2570 pVtgHdr->cbProbeLocs = (uint32_t)u64Tmp; 2571 2571 2572 u64Tmp = pVtgHdr->uProbeLocs.u64 - (uintptr_t)pVtgHdr;2572 u64Tmp = pVtgHdr->uProbeLocs.u64 - uVtgHdrAddr; 2573 2573 if ((int64_t)u64Tmp != (int32_t)u64Tmp) 2574 { 2575 LogRel(("SUPR3TracerRegisterModule: VERR_SUPDRV_VTG_BAD_HDR_PTR - u64Tmp=%#llx uProbeLocs=%#llx uVtgHdrAddr=%RTptr\n", 2576 u64Tmp, pVtgHdr->uProbeLocs.u64, uVtgHdrAddr)); 2574 2577 return VERR_SUPDRV_VTG_BAD_HDR_PTR; 2578 } 2575 2579 pVtgHdr->offProbeLocs = (int32_t)u64Tmp; 2576 2580 } … … 2617 2621 Req.u.In.fFlags = fFlags; 2618 2622 2619 memcpy(Req.u.In.szName, pszModule, cchModule );2623 memcpy(Req.u.In.szName, pszModule, cchModule + 1); 2620 2624 if (!RTPathHasExt(Req.u.In.szName)) 2621 2625 { -
trunk/src/VBox/HostDrivers/Support/SUPLibTracerA.asm
r41127 r41147 29 29 ;******************************************************************************* 30 30 %include "iprt/asmdefs.mac" 31 %include "VBox/sup.mac" 31 32 32 33 ; This should go into asmdefs.mac … … 43 44 ;******************************************************************************* 44 45 struc SUPREQHDR 45 46 46 .u32Cookie resd 1 47 47 .u32SessionCookie resd 1 … … 50 50 .fFlags resd 1 51 51 .rc resd 1 52 endstruc53 54 struc SUPDRVTRACERUSRCTX3255 .idProbe resd 156 .cBits resb 157 .abReserved resb 358 .u.X86.uVtgProbeLoc resd 159 .u.X86.aArgs resd 2060 .u.X86.eip resd 161 .u.X86.eflags resd 162 .u.X86.eax resd 163 .u.X86.ecx resd 164 .u.X86.edx resd 165 .u.X86.ebx resd 166 .u.X86.esp resd 167 .u.X86.ebp resd 168 .u.X86.esi resd 169 .u.X86.edi resd 170 .u.X86.cs resw 171 .u.X86.ss resw 172 .u.X86.ds resw 173 .u.X86.es resw 174 .u.X86.fs resw 175 .u.X86.gs resw 176 endstruc77 78 struc SUPDRVTRACERUSRCTX6479 .idProbe resd 180 .cBits resb 181 .abReserved resb 382 .u.Amd64.uVtgProbeLoc resq 183 .u.Amd64.aArgs resq 1084 .u.Amd64.rip resq 185 .u.Amd64.rflags resq 186 .u.Amd64.rax resq 187 .u.Amd64.rcx resq 188 .u.Amd64.rdx resq 189 .u.Amd64.rbx resq 190 .u.Amd64.rsp resq 191 .u.Amd64.rbp resq 192 .u.Amd64.rsi resq 193 .u.Amd64.rdi resq 194 .u.Amd64.r8 resq 195 .u.Amd64.r9 resq 196 .u.Amd64.r10 resq 197 .u.Amd64.r11 resq 198 .u.Amd64.r12 resq 199 .u.Amd64.r13 resq 1100 .u.Amd64.r14 resq 1101 .u.Amd64.r15 resq 1102 52 endstruc 103 53 -
trunk/src/VBox/VMM/Makefile.kmk
r41076 r41147 53 53 ifdef VBOX_WITH_PCI_PASSTHROUGH 54 54 VMM_COMMON_DEFS += VBOX_WITH_PCI_PASSTHROUGH 55 endif 56 ifdef VBOX_WITH_DTRACE_RC 57 VMM_COMMON_DEFS += VBOX_WITH_DTRACE_RC 55 58 endif 56 59 # VMM_COMMON_DEFS += VBOX_WITH_NS_ACCOUNTING_STATS -
trunk/src/VBox/VMM/VMMR0/VMMR0.cpp
r40763 r41147 666 666 { 667 667 RTCCUINTREG uFlags = ASMIntDisableFlags(); 668 VMCPU_SET_STATE(pVCpu, VMCPUSTATE_STARTED_EXEC); 669 670 TMNotifyStartOfExecution(pVCpu); 671 rc = pVM->vmm.s.pfnHostToGuestR0(pVM); 672 pVCpu->vmm.s.iLastGZRc = rc; 673 TMNotifyEndOfExecution(pVCpu); 674 675 VMCPU_SET_STATE(pVCpu, VMCPUSTATE_STARTED); 668 669 for (;;) 670 { 671 VMCPU_SET_STATE(pVCpu, VMCPUSTATE_STARTED_EXEC); 672 TMNotifyStartOfExecution(pVCpu); 673 674 rc = pVM->vmm.s.pfnHostToGuestR0(pVM); 675 pVCpu->vmm.s.iLastGZRc = rc; 676 677 TMNotifyEndOfExecution(pVCpu); 678 VMCPU_SET_STATE(pVCpu, VMCPUSTATE_STARTED); 679 680 if (rc != VINF_VMM_CALL_TRACER) 681 break; 682 SUPR0TracerUmodProbeFire(pVM->pSession, &pVCpu->vmm.s.TracerCtx); 683 } 676 684 677 685 /* Re-enable VT-x if previously turned off. */ -
trunk/src/VBox/VMM/VMMR3/PDMLdr.cpp
r39078 r41147 32 32 #include <VBox/err.h> 33 33 #include <VBox/vmm/hwaccm.h> 34 #include <VBox/VBoxTpG.h> 34 35 35 36 #include <VBox/log.h> … … 168 169 169 170 /** 170 * Applies relocations to GC modules.171 * Applies relocations to RC modules. 171 172 * 172 173 * This must be done very early in the relocation 173 * process so that components can resolve GC symbols during relocation.174 * process so that components can resolve RC symbols during relocation. 174 175 * 175 176 * @param pUVM Pointer to the user mode VM structure. … … 182 183 183 184 /* 184 * GC Modules.185 * RC Modules. 185 186 */ 186 187 RTCritSectEnter(&pUVM->pdm.s.ListCritSect); … … 431 432 432 433 /** 433 * Loads a module into the guest context (i.e. into the Hypervisor memory region). 434 * Loads a module into the raw-mode context (i.e. into the Hypervisor memory 435 * region). 434 436 * 435 437 * @returns VBox status code. … … 528 530 if (RT_SUCCESS(rc)) 529 531 { 532 #ifdef VBOX_WITH_DTRACE_RC 533 /* 534 * Register the tracer bits if present. 535 */ 536 RTLDRADDR uValue; 537 rc = RTLdrGetSymbolEx(pModule->hLdrMod, pModule->pvBits, pModule->ImageBase, 538 "g_VTGObjHeader", &uValue); 539 if (RT_SUCCESS(rc)) 540 { 541 PVTGOBJHDR pVtgHdr = (PVTGOBJHDR)MMHyperRCToCC(pVM, (RTRCPTR)uValue); 542 if ( pVtgHdr 543 && !memcmp(pVtgHdr->szMagic, VTGOBJHDR_MAGIC, sizeof(pVtgHdr->szMagic))) 544 rc = SUPR3TracerRegisterModule(~(uintptr_t)0, pModule->szName, pVtgHdr, uValue, 545 SUP_TRACER_UMOD_FLAGS_SHARED); 546 else 547 rc = pVtgHdr ? VERR_INVALID_MAGIC : VERR_INVALID_POINTER; 548 if (RT_FAILURE(rc)) 549 LogRel(("PDM: Failed to register tracepoints for '%s': %Rrc\n", pModule->szName, rc)); 550 } 551 #endif 552 530 553 /* 531 554 * Insert the module. … … 542 565 pUVM->pdm.s.pModules = pModule; /* (pNext is zeroed by alloc) */ 543 566 Log(("PDM: RC Module at %RRv %s (%s)\n", (RTRCPTR)pModule->ImageBase, pszName, pszFilename)); 567 544 568 RTCritSectLeave(&pUVM->pdm.s.ListCritSect); 545 569 RTMemTmpFree(pszFile); 546 570 RTMemTmpFree(paPages); 571 547 572 return VINF_SUCCESS; 548 573 } -
trunk/src/VBox/VMM/VMMRC/VMMRC.cpp
r39078 r41147 210 210 211 211 /** 212 * Calls the ring-0 host code. 213 * 214 * @param pVM The VM handle. 215 */ 216 DECLASM(void) vmmRCProbeFireHelper(PVM pVM) 217 { 218 pVM->vmm.s.pfnGuestToHostRC(VINF_VMM_CALL_TRACER); 219 } 220 221 222 223 /** 212 224 * Execute the trap testcase. 213 225 * -
trunk/src/VBox/VMM/VMMRC/VMMRC.def
r39357 r41147 66 66 MMGCRamReadNoTrapHandler 67 67 VMMGetSvnRev 68 VMMRCProbeFire 68 69 vmmGCLoggerFlush 69 70 vmmGCLoggerWrapper -
trunk/src/VBox/VMM/VMMRC/VMMRCA.asm
r37955 r41147 4 4 ; 5 5 6 ; Copyright (C) 2006-2007 Oracle Corporation 6 ; 7 ; Copyright (C) 2006-2012 Oracle Corporation 7 8 ; 8 9 ; This file is part of VirtualBox Open Source Edition (OSE), as … … 20 21 %include "VBox/asmdefs.mac" 21 22 %include "iprt/x86.mac" 23 %include "VBox/sup.mac" 24 %include "VBox/vmm/vm.mac" 25 %include "VMMInternal.mac" 22 26 23 27 … … 48 52 ;* External Symbols * 49 53 ;******************************************************************************* 54 extern IMPNAME(g_VM) 50 55 extern IMPNAME(g_Logger) 51 56 extern IMPNAME(g_RelLogger) 52 57 extern NAME(RTLogLogger) 58 extern NAME(vmmRCProbeFireHelper) 53 59 54 60 … … 214 220 ENDPROC vmmGCTestTrap0e 215 221 222 223 224 ;; 225 ; The raw-mode context equivalent of SUPTracerFireProbe. 226 ; 227 ; See also SUPLibTracerA.asm. 228 ; 229 EXPORTEDNAME VMMRCProbeFire 230 push ebp 231 mov ebp, esp 232 233 ; 234 ; Save edx and eflags so we can use them. 235 ; 236 pushf 237 push edx 238 239 ; 240 ; Get the address of the tracer context record after first checking 241 ; that host calls hasn't been disabled. 242 ; 243 mov edx, IMP(g_VM) 244 add edx, [ecx + VM.offVMCPU] 245 cmp dword [edx + VMMCPU.cCallRing3Disabled], 0 246 jnz .return 247 add edx, [VMCPU.vmm + VMMCPU.TracerCtx] 248 249 ; 250 ; Save the X86 context. 251 ; 252 mov [edx + SUPDRVTRACERUSRCTX32.u.X86.eax], eax 253 mov [edx + SUPDRVTRACERUSRCTX32.u.X86.ecx], ecx 254 pop eax 255 mov [edx + SUPDRVTRACERUSRCTX32.u.X86.edx], eax 256 mov [edx + SUPDRVTRACERUSRCTX32.u.X86.ebx], ebx 257 mov [edx + SUPDRVTRACERUSRCTX32.u.X86.esi], esi 258 mov [edx + SUPDRVTRACERUSRCTX32.u.X86.edi], edi 259 pop eax 260 mov [edx + SUPDRVTRACERUSRCTX32.u.X86.eflags], eax 261 mov eax, [ebp + 4] 262 mov [edx + SUPDRVTRACERUSRCTX32.u.X86.eip], eax 263 mov eax, [ebp] 264 mov [edx + SUPDRVTRACERUSRCTX32.u.X86.ebp], eax 265 lea eax, [ebp + 4*2] 266 mov [edx + SUPDRVTRACERUSRCTX32.u.X86.esp], eax 267 268 mov ecx, [ebp + 4*2] 269 mov [edx + SUPDRVTRACERUSRCTX32.u.X86.uVtgProbeLoc], ecx 270 271 mov eax, [ecx + 4] ; VTGPROBELOC::idProbe. 272 mov [edx + SUPDRVTRACERUSRCTX32.idProbe], eax 273 mov dword [edx + SUPDRVTRACERUSRCTX32.cBits], 32 274 275 ; Copy the arguments off the stack. 276 %macro COPY_ONE_ARG 1 277 mov eax, [ebp + 8 + %1 * 4] 278 mov [edx + SUPDRVTRACERUSRCTX32.u.X86.aArgs + %1*4], eax 279 %endmacro 280 COPY_ONE_ARG 0 281 COPY_ONE_ARG 1 282 COPY_ONE_ARG 2 283 COPY_ONE_ARG 3 284 COPY_ONE_ARG 4 285 COPY_ONE_ARG 5 286 COPY_ONE_ARG 6 287 COPY_ONE_ARG 7 288 COPY_ONE_ARG 8 289 COPY_ONE_ARG 9 290 COPY_ONE_ARG 10 291 COPY_ONE_ARG 11 292 COPY_ONE_ARG 12 293 COPY_ONE_ARG 13 294 COPY_ONE_ARG 14 295 COPY_ONE_ARG 15 296 COPY_ONE_ARG 16 297 COPY_ONE_ARG 17 298 COPY_ONE_ARG 18 299 COPY_ONE_ARG 19 300 301 ; 302 ; Call the helper (too lazy to do the VMM structure stuff). 303 ; 304 mov ecx, IMP(g_VM) 305 push ecx 306 call NAME(vmmRCProbeFireHelper) 307 308 .return: 309 leave 310 ret 311 ENDPROC VMMRCProbeFire 312 -
trunk/src/VBox/VMM/include/VMMInternal.h
r39303 r41147 20 20 21 21 #include <VBox/cdefs.h> 22 #include <VBox/sup.h> 22 23 #include <VBox/vmm/stam.h> 23 24 #include <VBox/log.h> … … 425 426 * attempts at recursive rendezvous. */ 426 427 bool volatile fInRendezvous; 427 bool afPadding[HC_ARCH_BITS == 32 ? 7 : 3];428 bool afPadding[HC_ARCH_BITS == 32 ? 3 : 7]; 428 429 /** @} */ 430 431 /** @name Raw-mode context tracting data. 432 * @{ */ 433 SUPDRVTRACERUSRCTX TracerCtx; 434 /** @} */ 435 436 /** Alignment padding, making sure u64CallRing3Arg is nicly aligned. */ 437 uint32_t u32Padding1; 429 438 430 439 /** @name Call Ring-3 … … 439 448 /** The argument to the operation. */ 440 449 uint64_t u64CallRing3Arg; 441 /** The Ring-0 jmp buffer. */ 450 /** The Ring-0 jmp buffer. 451 * @remarks The size of this type isn't stable in assembly, so don't put 452 * anything that needs to be accessed from assembly after it. */ 442 453 VMMR0JMPBUF CallRing3JmpBufR0; 443 454 /** @} */ 444 455 445 456 } VMMCPU; 457 AssertCompileMemberAlignment(VMMCPU, TracerCtx, 8); 446 458 /** Pointer to VMMCPU. */ 447 459 typedef VMMCPU *PVMMCPU; -
trunk/src/VBox/VMM/include/VMMInternal.mac
r35333 r41147 17 17 18 18 %include "VBox/asmdefs.mac" 19 %include "VBox/sup.mac" 19 20 20 21 ; … … 95 96 endstruc 96 97 98 99 struc VMMCPU 100 101 .offVMCPU resd 1 102 .iLastGZRc resd 1 103 .pbEMTStackR3 RTR3PTR_RES 1 104 .pbEMTStackRC RTRCPTR_RES 1 105 .pbEMTStackBottomRC RTRCPTR_RES 1 106 %ifdef LOG_ENABLED 107 .pR0LoggerR3 RTR3PTR_RES 1 108 .pR0LoggerR0 RTR0PTR_RES 1 109 %endif 110 111 .fInRendezvous resb 1 112 %if HC_ARCH_BITS == 32 113 .afPadding resb 7 114 %else 115 .afPadding resb 3 116 %endif 117 118 alignb 8 119 .TracerCtx resb SUPDRVTRACERUSRCTX64_size 120 121 122 .cCallRing3Disabled resd 1 123 .enmCallRing3Operation resd 1 124 .rcCallRing3 resd 1 125 .u64CallRing3Arg resq 1 126 ; .CallRing3JmpBufR0 resb no-can-do 127 128 endstruc 129
Note:
See TracChangeset
for help on using the changeset viewer.