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
|