summaryrefslogtreecommitdiffstats
path: root/src/VBox/VMM/include/VMMInternal.mac
blob: 10b64c78cafc16e63d0f78cc2163accb69d1c006 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
; $Id: VMMInternal.mac $
;; @file
; VMM - Internal header file.
;

;
; Copyright (C) 2006-2020 Oracle Corporation
;
; This file is part of VirtualBox Open Source Edition (OSE), as
; available from http://www.virtualbox.org. This file is free software;
; you can redistribute it and/or modify it under the terms of the GNU
; General Public License (GPL) as published by the Free Software
; Foundation, in version 2 as it comes in the "COPYING" file of the
; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
;

%include "VBox/asmdefs.mac"
%include "VBox/sup.mac"

;
; Determine the default stack switching unless specified explicitly.
;
%ifndef VMM_R0_SWITCH_STACK
 %ifndef VMM_R0_NO_SWITCH_STACK
  %ifdef RT_OS_DARWIN
   %define VMM_R0_SWITCH_STACK
  %endif
 %endif
%endif


struc VMMR0JMPBUF
%ifdef RT_ARCH_X86
    ; traditional jmp_buf
    .ebx            resd 1
    .esi            resd 1
    .edi            resd 1
    .ebp            resd 1
    .esp            resd 1
    .eip            resd 1
    .eflags         resd 1

    ; additional state and stack info.
    .fInRing3Call   resd 1
    .cbSavedStack   resd 1
    .pvSavedStack   resd 1
    .SpCheck        resd 1
    .SpResume       resd 1
    .SavedEsp       resd 1
    .SavedEbp       resd 1
    .SavedEipForUnwind      resd 1
    .UnwindRetPcValue       resd 1
    .UnwindRetPcLocation    resd 1
%endif
%ifdef RT_ARCH_AMD64
    ; traditional jmp_buf
    .rbx            resq 1
 %ifdef RT_OS_WINDOWS
    .rsi            resq 1
    .rdi            resq 1
 %endif
    .rbp            resq 1
    .r12            resq 1
    .r13            resq 1
    .r14            resq 1
    .r15            resq 1
    .rsp            resq 1
    .rip            resq 1
 %ifdef RT_OS_WINDOWS
    .xmm6           resq 2
    .xmm7           resq 2
    .xmm8           resq 2
    .xmm9           resq 2
    .xmm10          resq 2
    .xmm11          resq 2
    .xmm12          resq 2
    .xmm13          resq 2
    .xmm14          resq 2
    .xmm15          resq 2
 %endif
    .rflags         resq 1

    ; additional state and stack info.
    .fInRing3Call   resd 1
    .cbSavedStack   resd 1
    .pvSavedStack   resq 1
    .SpCheck        resq 1
    .SpResume       resq 1
    .SavedEsp       resq 1
    .SavedEbp       resq 1
    .SavedEipForUnwind      resq 1
    .UnwindRetPcValue       resq 1
    .UnwindRetPcLocation    resq 1
%endif

    ; Statistics
    alignb 8
    .cbUsedMax      resd 1
    .cbUsedAvg      resd 1
    .cbUsedTotal    resq 1
    .cUsedTotal     resq 1
endstruc


struc VMMCPU

        .iLastGZRc              resd 1
        alignb 8
        .pbEMTStackR3           RTR3PTR_RES 1

        .pR0LoggerR3            RTR3PTR_RES 1
        .pR0LoggerR0            RTR0PTR_RES 1
        .pR0RelLoggerR3         RTR3PTR_RES 1
        .pR0RelLoggerR0         RTR0PTR_RES 1

        .hCtxHook               RTR0PTR_RES 1

        .fInRendezvous          resb 1
        .afPadding1             resb 10
        .fMayHaltInRing0        resb 1
        .cNsSpinBlockThreshold  resd 1
        .cR0Halts               resd 1
        .cR0HaltsSucceeded      resd 1
        .cR0HaltsToRing3        resd 1

        alignb 8
        .TracerCtx              resb SUPDRVTRACERUSRCTX64_size

        .au32Padding3           resd 1

        .cCallRing3Disabled     resd 1
        .enmCallRing3Operation  resd 1
        .rcCallRing3            resd 1
        alignb 8
        .u64CallRing3Arg        resq 1
        .pfnCallRing3CallbackR0         RTR0PTR_RES 1
        .pvCallRing3CallbackUserR0      RTR0PTR_RES 1
        ; .CallRing3JmpBufR0    resb no-can-do
endstruc