Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


modified copyright tags
[palacios.git] / palacios / include / palacios / svm_handler.h
1 /* (c) 2008, Jack Lange <jarusl@cs.northwestern.edu> */
2 /* (c) 2008, The V3VEE Project <http://www.v3vee.org> */
3
4 #ifndef __SVM_HANDLER_H
5 #define __SVM_HANDLER_H
6
7 #ifdef __V3VEE__
8
9 #include <palacios/svm.h>
10 #include <palacios/vmcb.h>
11 #include <palacios/vmm.h>
12
13
14
15 /******************************************/
16 /* SVM Intercept Exit Codes               */
17 /* AMD Arch Vol 3, Appendix C, pg 477-478 */
18 /******************************************/
19 #define VMEXIT_CR_READ_MASK 0xfffffff0
20 #define VMEXIT_CR0_READ   0x00000000
21 #define VMEXIT_CR1_READ   0x00000001
22 #define VMEXIT_CR2_READ   0x00000002
23 #define VMEXIT_CR3_READ   0x00000003
24 #define VMEXIT_CR4_READ   0x00000004
25 #define VMEXIT_CR5_READ   0x00000005
26 #define VMEXIT_CR6_READ   0x00000006
27 #define VMEXIT_CR7_READ   0x00000007
28 #define VMEXIT_CR8_READ   0x00000008
29 #define VMEXIT_CR9_READ   0x00000009
30 #define VMEXIT_CR10_READ  0x0000000a
31 #define VMEXIT_CR11_READ  0x0000000b
32 #define VMEXIT_CR12_READ  0x0000000c
33 #define VMEXIT_CR13_READ  0x0000000d
34 #define VMEXIT_CR14_READ  0x0000000e
35 #define VMEXIT_CR15_READ  0x0000000f
36
37 #define VMEXIT_CR_WRITE_MASK 0xffffffe0
38 #define VMEXIT_CR0_WRITE   0x00000010
39 #define VMEXIT_CR1_WRITE   0x00000011
40 #define VMEXIT_CR2_WRITE   0x00000012
41 #define VMEXIT_CR3_WRITE   0x00000013
42 #define VMEXIT_CR4_WRITE   0x00000014
43 #define VMEXIT_CR5_WRITE   0x00000015
44 #define VMEXIT_CR6_WRITE   0x00000016
45 #define VMEXIT_CR7_WRITE   0x00000017
46 #define VMEXIT_CR8_WRITE   0x00000018
47 #define VMEXIT_CR9_WRITE   0x00000019
48 #define VMEXIT_CR10_WRITE  0x0000001a
49 #define VMEXIT_CR11_WRITE  0x0000001b
50 #define VMEXIT_CR12_WRITE  0x0000001c
51 #define VMEXIT_CR13_WRITE  0x0000001d
52 #define VMEXIT_CR14_WRITE  0x0000001e
53 #define VMEXIT_CR15_WRITE  0x0000001f
54
55 #define VMEXIT_DR_READ_MASK 0xffffffd0
56 #define VMEXIT_DR0_READ   0x00000020
57 #define VMEXIT_DR1_READ   0x00000021
58 #define VMEXIT_DR2_READ   0x00000022
59 #define VMEXIT_DR3_READ   0x00000023
60 #define VMEXIT_DR4_READ   0x00000024
61 #define VMEXIT_DR5_READ   0x00000025
62 #define VMEXIT_DR6_READ   0x00000026
63 #define VMEXIT_DR7_READ   0x00000027
64 #define VMEXIT_DR8_READ   0x00000028
65 #define VMEXIT_DR9_READ   0x00000029
66 #define VMEXIT_DR10_READ  0x0000002a
67 #define VMEXIT_DR11_READ  0x0000002b
68 #define VMEXIT_DR12_READ  0x0000002c
69 #define VMEXIT_DR13_READ  0x0000002d
70 #define VMEXIT_DR14_READ  0x0000002e
71 #define VMEXIT_DR15_READ  0x0000002f
72
73 #define VMEXIT_DR_WRITE_MASK     0xffffffc0
74 #define VMEXIT_DR0_WRITE   0x00000030 // ? this was previously 3f
75 #define VMEXIT_DR1_WRITE   0x00000031
76 #define VMEXIT_DR2_WRITE   0x00000032
77 #define VMEXIT_DR3_WRITE   0x00000033
78 #define VMEXIT_DR4_WRITE   0x00000034
79 #define VMEXIT_DR5_WRITE   0x00000035
80 #define VMEXIT_DR6_WRITE   0x00000036
81 #define VMEXIT_DR7_WRITE   0x00000037
82 #define VMEXIT_DR8_WRITE   0x00000038
83 #define VMEXIT_DR9_WRITE   0x00000039
84 #define VMEXIT_DR10_WRITE  0x0000003a
85 #define VMEXIT_DR11_WRITE  0x0000003b
86 #define VMEXIT_DR12_WRITE  0x0000003c
87 #define VMEXIT_DR13_WRITE  0x0000003d
88 #define VMEXIT_DR14_WRITE  0x0000003e
89 #define VMEXIT_DR15_WRITE  0x0000003f
90
91 #define VMEXIT_EXCP_MASK   0xffffffa0
92 #define VMEXIT_EXCP0       0x00000040
93 #define VMEXIT_EXCP1       0x00000041
94 #define VMEXIT_EXCP2       0x00000042
95 #define VMEXIT_EXCP3       0x00000043
96 #define VMEXIT_EXCP4       0x00000044
97 #define VMEXIT_EXCP5       0x00000045
98 #define VMEXIT_EXCP6       0x00000046
99 #define VMEXIT_EXCP7       0x00000047
100 #define VMEXIT_EXCP8       0x00000048
101 #define VMEXIT_EXCP9       0x00000049
102 #define VMEXIT_EXCP10      0x0000004a
103 #define VMEXIT_EXCP11      0x0000004b
104 #define VMEXIT_EXCP12      0x0000004c
105 #define VMEXIT_EXCP13      0x0000004d
106 #define VMEXIT_EXCP14      0x0000004e
107 #define VMEXIT_EXCP15      0x0000004f
108 #define VMEXIT_EXCP16      0x00000050
109 #define VMEXIT_EXCP17      0x00000051
110 #define VMEXIT_EXCP18      0x00000052
111 #define VMEXIT_EXCP19      0x00000053
112 #define VMEXIT_EXCP20      0x00000054
113 #define VMEXIT_EXCP21      0x00000055
114 #define VMEXIT_EXCP22      0x00000056
115 #define VMEXIT_EXCP23      0x00000057
116 #define VMEXIT_EXCP24      0x00000058
117 #define VMEXIT_EXCP25      0x00000059
118 #define VMEXIT_EXCP26      0x0000005a
119 #define VMEXIT_EXCP27      0x0000005b
120 #define VMEXIT_EXCP28      0x0000005c
121 #define VMEXIT_EXCP29      0x0000005d
122 #define VMEXIT_EXCP30      0x0000005e
123 #define VMEXIT_EXCP31      0x0000005f
124
125
126 #define VMEXIT_INTR                 0x00000060
127 #define VMEXIT_NMI                  0x00000061
128 #define VMEXIT_SMI                  0x00000062
129 #define VMEXIT_INIT                 0x00000063
130 #define VMEXIT_VINITR               0x00000064
131 #define VMEXIT_CR0_SEL_WRITE        0x00000065
132 #define VMEXIT_IDTR_READ            0x00000066
133 #define VMEXIT_GDTR_READ            0x00000067
134 #define VMEXIT_LDTR_READ            0x00000068
135 #define VMEXIT_TR_READ              0x00000069
136 #define VMEXIT_IDTR_WRITE           0x0000006a
137 #define VMEXIT_GDTR_WRITE           0x0000006b
138 #define VMEXIT_LDTR_WRITE           0x0000006c
139 #define VMEXIT_TR_WRITE             0x0000006d
140 #define VMEXIT_RDTSC                0x0000006e
141 #define VMEXIT_RDPMC                0x0000006f
142 #define VMEXIT_PUSHF                0x00000070
143 #define VMEXIT_POPF                 0x00000071
144 #define VMEXIT_CPUID                0x00000072
145 #define VMEXIT_RSM                  0x00000073
146 #define VMEXIT_IRET                 0x00000074
147 #define VMEXIT_SWINT                0x00000075
148 #define VMEXIT_INVD                 0x00000076
149 #define VMEXIT_PAUSE                0x00000077
150 #define VMEXIT_HLT                  0x00000078
151 #define VMEXIT_INVLPG               0x00000079
152 #define VMEXIT_INVLPGA              0x0000007a
153 #define VMEXIT_IOIO                 0x0000007b
154 #define VMEXIT_MSR                  0x0000007c
155 #define VMEXIT_TASK_SWITCH          0x0000007d
156 #define VMEXIT_FERR_FREEZE          0x0000007e
157 #define VMEXIT_SHUTDOWN             0x0000007f
158 #define VMEXIT_VMRUN                0x00000080
159 #define VMEXIT_VMMCALL              0x00000081
160 #define VMEXIT_VMLOAD               0x00000082
161 #define VMEXIT_VMSAVE               0x00000083
162 #define VMEXIT_STGI                 0x00000084
163 #define VMEXIT_CLGI                 0x00000085
164 #define VMEXIT_SKINIT               0x00000086
165 #define VMEXIT_RDTSCP               0x00000087
166 #define VMEXIT_ICEBP                0x00000088
167 #define VMEXIT_WBINVD               0x00000089
168 #define VMEXIT_MONITOR              0x0000008a
169 #define VMEXIT_MWAIT                0x0000008b
170 #define VMEXIT_MWAIT_CONDITIONAL    0x0000008c
171
172 #define VMEXIT_NPF                  0x00000400
173
174 #define VMEXIT_INVALID_VMCB         -1
175
176 /******************************************/
177
178
179
180
181 static const uchar_t VMEXIT_CR0_READ_STR[] = "VMEXIT_CR0_READ";
182 static const uchar_t VMEXIT_CR1_READ_STR[] = "VMEXIT_CR1_READ";
183 static const uchar_t VMEXIT_CR2_READ_STR[] = "VMEXIT_CR2_READ";
184 static const uchar_t VMEXIT_CR3_READ_STR[] = "VMEXIT_CR3_READ";
185 static const uchar_t VMEXIT_CR4_READ_STR[] = "VMEXIT_CR4_READ";
186 static const uchar_t VMEXIT_CR5_READ_STR[] = "VMEXIT_CR5_READ";
187 static const uchar_t VMEXIT_CR6_READ_STR[] = "VMEXIT_CR6_READ";
188 static const uchar_t VMEXIT_CR7_READ_STR[] = "VMEXIT_CR7_READ";
189 static const uchar_t VMEXIT_CR8_READ_STR[] = "VMEXIT_CR8_READ";
190 static const uchar_t VMEXIT_CR9_READ_STR[] = "VMEXIT_CR9_READ";
191 static const uchar_t VMEXIT_CR10_READ_STR[] = "VMEXIT_CR10_READ";
192 static const uchar_t VMEXIT_CR11_READ_STR[] = "VMEXIT_CR11_READ";
193 static const uchar_t VMEXIT_CR12_READ_STR[] = "VMEXIT_CR12_READ";
194 static const uchar_t VMEXIT_CR13_READ_STR[] = "VMEXIT_CR13_READ";
195 static const uchar_t VMEXIT_CR14_READ_STR[] = "VMEXIT_CR14_READ";
196 static const uchar_t VMEXIT_CR15_READ_STR[] = "VMEXIT_CR15_READ";
197 static const uchar_t VMEXIT_CR0_WRITE_STR[] = "VMEXIT_CR0_WRITE";
198 static const uchar_t VMEXIT_CR1_WRITE_STR[] = "VMEXIT_CR1_WRITE";
199 static const uchar_t VMEXIT_CR2_WRITE_STR[] = "VMEXIT_CR2_WRITE";
200 static const uchar_t VMEXIT_CR3_WRITE_STR[] = "VMEXIT_CR3_WRITE";
201 static const uchar_t VMEXIT_CR4_WRITE_STR[] = "VMEXIT_CR4_WRITE";
202 static const uchar_t VMEXIT_CR5_WRITE_STR[] = "VMEXIT_CR5_WRITE";
203 static const uchar_t VMEXIT_CR6_WRITE_STR[] = "VMEXIT_CR6_WRITE";
204 static const uchar_t VMEXIT_CR7_WRITE_STR[] = "VMEXIT_CR7_WRITE";
205 static const uchar_t VMEXIT_CR8_WRITE_STR[] = "VMEXIT_CR8_WRITE";
206 static const uchar_t VMEXIT_CR9_WRITE_STR[] = "VMEXIT_CR9_WRITE";
207 static const uchar_t VMEXIT_CR10_WRITE_STR[] = "VMEXIT_CR10_WRITE";
208 static const uchar_t VMEXIT_CR11_WRITE_STR[] = "VMEXIT_CR11_WRITE";
209 static const uchar_t VMEXIT_CR12_WRITE_STR[] = "VMEXIT_CR12_WRITE";
210 static const uchar_t VMEXIT_CR13_WRITE_STR[] = "VMEXIT_CR13_WRITE";
211 static const uchar_t VMEXIT_CR14_WRITE_STR[] = "VMEXIT_CR14_WRITE";
212 static const uchar_t VMEXIT_CR15_WRITE_STR[] = "VMEXIT_CR15_WRITE";
213 static const uchar_t VMEXIT_DR0_READ_STR[] = "VMEXIT_DR0_READ";
214 static const uchar_t VMEXIT_DR1_READ_STR[] = "VMEXIT_DR1_READ";
215 static const uchar_t VMEXIT_DR2_READ_STR[] = "VMEXIT_DR2_READ";
216 static const uchar_t VMEXIT_DR3_READ_STR[] = "VMEXIT_DR3_READ";
217 static const uchar_t VMEXIT_DR4_READ_STR[] = "VMEXIT_DR4_READ";
218 static const uchar_t VMEXIT_DR5_READ_STR[] = "VMEXIT_DR5_READ";
219 static const uchar_t VMEXIT_DR6_READ_STR[] = "VMEXIT_DR6_READ";
220 static const uchar_t VMEXIT_DR7_READ_STR[] = "VMEXIT_DR7_READ";
221 static const uchar_t VMEXIT_DR8_READ_STR[] = "VMEXIT_DR8_READ";
222 static const uchar_t VMEXIT_DR9_READ_STR[] = "VMEXIT_DR9_READ";
223 static const uchar_t VMEXIT_DR10_READ_STR[] = "VMEXIT_DR10_READ";
224 static const uchar_t VMEXIT_DR11_READ_STR[] = "VMEXIT_DR11_READ";
225 static const uchar_t VMEXIT_DR12_READ_STR[] = "VMEXIT_DR12_READ";
226 static const uchar_t VMEXIT_DR13_READ_STR[] = "VMEXIT_DR13_READ";
227 static const uchar_t VMEXIT_DR14_READ_STR[] = "VMEXIT_DR14_READ";
228 static const uchar_t VMEXIT_DR15_READ_STR[] = "VMEXIT_DR15_READ";
229 static const uchar_t VMEXIT_DR0_WRITE_STR[] = "VMEXIT_DR0_WRITE";
230 static const uchar_t VMEXIT_DR1_WRITE_STR[] = "VMEXIT_DR1_WRITE";
231 static const uchar_t VMEXIT_DR2_WRITE_STR[] = "VMEXIT_DR2_WRITE";
232 static const uchar_t VMEXIT_DR3_WRITE_STR[] = "VMEXIT_DR3_WRITE";
233 static const uchar_t VMEXIT_DR4_WRITE_STR[] = "VMEXIT_DR4_WRITE";
234 static const uchar_t VMEXIT_DR5_WRITE_STR[] = "VMEXIT_DR5_WRITE";
235 static const uchar_t VMEXIT_DR6_WRITE_STR[] = "VMEXIT_DR6_WRITE";
236 static const uchar_t VMEXIT_DR7_WRITE_STR[] = "VMEXIT_DR7_WRITE";
237 static const uchar_t VMEXIT_DR8_WRITE_STR[] = "VMEXIT_DR8_WRITE";
238 static const uchar_t VMEXIT_DR9_WRITE_STR[] = "VMEXIT_DR9_WRITE";
239 static const uchar_t VMEXIT_DR10_WRITE_STR[] = "VMEXIT_DR10_WRITE";
240 static const uchar_t VMEXIT_DR11_WRITE_STR[] = "VMEXIT_DR11_WRITE";
241 static const uchar_t VMEXIT_DR12_WRITE_STR[] = "VMEXIT_DR12_WRITE";
242 static const uchar_t VMEXIT_DR13_WRITE_STR[] = "VMEXIT_DR13_WRITE";
243 static const uchar_t VMEXIT_DR14_WRITE_STR[] = "VMEXIT_DR14_WRITE";
244 static const uchar_t VMEXIT_DR15_WRITE_STR[] = "VMEXIT_DR15_WRITE";
245 static const uchar_t VMEXIT_EXCP0_STR[] = "VMEXIT_EXCP0";
246 static const uchar_t VMEXIT_EXCP1_STR[] = "VMEXIT_EXCP1";
247 static const uchar_t VMEXIT_EXCP2_STR[] = "VMEXIT_EXCP2";
248 static const uchar_t VMEXIT_EXCP3_STR[] = "VMEXIT_EXCP3";
249 static const uchar_t VMEXIT_EXCP4_STR[] = "VMEXIT_EXCP4";
250 static const uchar_t VMEXIT_EXCP5_STR[] = "VMEXIT_EXCP5";
251 static const uchar_t VMEXIT_EXCP6_STR[] = "VMEXIT_EXCP6";
252 static const uchar_t VMEXIT_EXCP7_STR[] = "VMEXIT_EXCP7";
253 static const uchar_t VMEXIT_EXCP8_STR[] = "VMEXIT_EXCP8";
254 static const uchar_t VMEXIT_EXCP9_STR[] = "VMEXIT_EXCP9";
255 static const uchar_t VMEXIT_EXCP10_STR[] = "VMEXIT_EXCP10";
256 static const uchar_t VMEXIT_EXCP11_STR[] = "VMEXIT_EXCP11";
257 static const uchar_t VMEXIT_EXCP12_STR[] = "VMEXIT_EXCP12";
258 static const uchar_t VMEXIT_EXCP13_STR[] = "VMEXIT_EXCP13";
259 static const uchar_t VMEXIT_EXCP14_STR[] = "VMEXIT_EXCP14";
260 static const uchar_t VMEXIT_EXCP15_STR[] = "VMEXIT_EXCP15";
261 static const uchar_t VMEXIT_EXCP16_STR[] = "VMEXIT_EXCP16";
262 static const uchar_t VMEXIT_EXCP17_STR[] = "VMEXIT_EXCP17";
263 static const uchar_t VMEXIT_EXCP18_STR[] = "VMEXIT_EXCP18";
264 static const uchar_t VMEXIT_EXCP19_STR[] = "VMEXIT_EXCP19";
265 static const uchar_t VMEXIT_EXCP20_STR[] = "VMEXIT_EXCP20";
266 static const uchar_t VMEXIT_EXCP21_STR[] = "VMEXIT_EXCP21";
267 static const uchar_t VMEXIT_EXCP22_STR[] = "VMEXIT_EXCP22";
268 static const uchar_t VMEXIT_EXCP23_STR[] = "VMEXIT_EXCP23";
269 static const uchar_t VMEXIT_EXCP24_STR[] = "VMEXIT_EXCP24";
270 static const uchar_t VMEXIT_EXCP25_STR[] = "VMEXIT_EXCP25";
271 static const uchar_t VMEXIT_EXCP26_STR[] = "VMEXIT_EXCP26";
272 static const uchar_t VMEXIT_EXCP27_STR[] = "VMEXIT_EXCP27";
273 static const uchar_t VMEXIT_EXCP28_STR[] = "VMEXIT_EXCP28";
274 static const uchar_t VMEXIT_EXCP29_STR[] = "VMEXIT_EXCP29";
275 static const uchar_t VMEXIT_EXCP30_STR[] = "VMEXIT_EXCP30";
276 static const uchar_t VMEXIT_EXCP31_STR[] = "VMEXIT_EXCP31";
277 static const uchar_t VMEXIT_INTR_STR[] = "VMEXIT_INTR";
278 static const uchar_t VMEXIT_NMI_STR[] = "VMEXIT_NMI";
279 static const uchar_t VMEXIT_SMI_STR[] = "VMEXIT_SMI";
280 static const uchar_t VMEXIT_INIT_STR[] = "VMEXIT_INIT";
281 static const uchar_t VMEXIT_VINITR_STR[] = "VMEXIT_VINITR";
282 static const uchar_t VMEXIT_CR0_SEL_WRITE_STR[] = "VMEXIT_CR0_SEL_WRITE";
283 static const uchar_t VMEXIT_IDTR_READ_STR[] = "VMEXIT_IDTR_READ";
284 static const uchar_t VMEXIT_GDTR_READ_STR[] = "VMEXIT_GDTR_READ";
285 static const uchar_t VMEXIT_LDTR_READ_STR[] = "VMEXIT_LDTR_READ";
286 static const uchar_t VMEXIT_TR_READ_STR[] = "VMEXIT_TR_READ";
287 static const uchar_t VMEXIT_IDTR_WRITE_STR[] = "VMEXIT_IDTR_WRITE";
288 static const uchar_t VMEXIT_GDTR_WRITE_STR[] = "VMEXIT_GDTR_WRITE";
289 static const uchar_t VMEXIT_LDTR_WRITE_STR[] = "VMEXIT_LDTR_WRITE";
290 static const uchar_t VMEXIT_TR_WRITE_STR[] = "VMEXIT_TR_WRITE";
291 static const uchar_t VMEXIT_RDTSC_STR[] = "VMEXIT_RDTSC";
292 static const uchar_t VMEXIT_RDPMC_STR[] = "VMEXIT_RDPMC";
293 static const uchar_t VMEXIT_PUSHF_STR[] = "VMEXIT_PUSHF";
294 static const uchar_t VMEXIT_POPF_STR[] = "VMEXIT_POPF";
295 static const uchar_t VMEXIT_CPUID_STR[] = "VMEXIT_CPUID";
296 static const uchar_t VMEXIT_RSM_STR[] = "VMEXIT_RSM";
297 static const uchar_t VMEXIT_IRET_STR[] = "VMEXIT_IRET";
298 static const uchar_t VMEXIT_SWINT_STR[] = "VMEXIT_SWINT";
299 static const uchar_t VMEXIT_INVD_STR[] = "VMEXIT_INVD";
300 static const uchar_t VMEXIT_PAUSE_STR[] = "VMEXIT_PAUSE";
301 static const uchar_t VMEXIT_HLT_STR[] = "VMEXIT_HLT";
302 static const uchar_t VMEXIT_INVLPG_STR[] = "VMEXIT_INVLPG";
303 static const uchar_t VMEXIT_INVLPGA_STR[] = "VMEXIT_INVLPGA";
304 static const uchar_t VMEXIT_IOIO_STR[] = "VMEXIT_IOIO";
305 static const uchar_t VMEXIT_MSR_STR[] = "VMEXIT_MSR";
306 static const uchar_t VMEXIT_TASK_SWITCH_STR[] = "VMEXIT_TASK_SWITCH";
307 static const uchar_t VMEXIT_FERR_FREEZE_STR[] = "VMEXIT_FERR_FREEZE";
308 static const uchar_t VMEXIT_SHUTDOWN_STR[] = "VMEXIT_SHUTDOWN";
309 static const uchar_t VMEXIT_VMRUN_STR[] = "VMEXIT_VMRUN";
310 static const uchar_t VMEXIT_VMMCALL_STR[] = "VMEXIT_VMMCALL";
311 static const uchar_t VMEXIT_VMLOAD_STR[] = "VMEXIT_VMLOAD";
312 static const uchar_t VMEXIT_VMSAVE_STR[] = "VMEXIT_VMSAVE";
313 static const uchar_t VMEXIT_STGI_STR[] = "VMEXIT_STGI";
314 static const uchar_t VMEXIT_CLGI_STR[] = "VMEXIT_CLGI";
315 static const uchar_t VMEXIT_SKINIT_STR[] = "VMEXIT_SKINIT";
316 static const uchar_t VMEXIT_RDTSCP_STR[] = "VMEXIT_RDTSCP";
317 static const uchar_t VMEXIT_ICEBP_STR[] = "VMEXIT_ICEBP";
318 static const uchar_t VMEXIT_WBINVD_STR[] = "VMEXIT_WBINVD";
319 static const uchar_t VMEXIT_MONITOR_STR[] = "VMEXIT_MONITOR";
320 static const uchar_t VMEXIT_MWAIT_STR[] = "VMEXIT_MWAIT";
321 static const uchar_t VMEXIT_MWAIT_CONDITIONAL_STR[] = "VMEXIT_MWAIT_CONDITIONAL";
322 static const uchar_t VMEXIT_NPF_STR[] = "VMEXIT_NPF";
323 static const uchar_t VMEXIT_INVALID_VMCB_STR[] = "VMEXIT_INVALID_VMCB";
324
325
326 const uchar_t * vmexit_code_to_str(uint_t exit_code);
327
328
329
330 int handle_shadow_paging(struct guest_info * info);
331
332 int handle_svm_intr(struct guest_info * info);
333
334 int handle_svm_exit(struct guest_info * info);
335
336 #endif // ! __V3VEE__
337
338 #endif