1 #include <palacios/vmcb.h>
2 #include <palacios/vmm.h>
3 #include <palacios/vmm_util.h>
6 void PrintDebugVMCB(vmcb_t * vmcb) {
9 vmcb_ctrl_t * ctrl_area = GET_VMCB_CTRL_AREA(vmcb);
10 vmcb_saved_state_t * guest_area = GET_VMCB_SAVE_STATE_AREA(vmcb);
12 PrintDebug("VMCB (0x%.8x)\n", vmcb);
14 PrintDebug("--Control Area--\n");
15 PrintDebug("CR Reads: %x\n", *(ushort_t*)&(ctrl_area->cr_reads));
16 PrintDebug("CR Writes: %x\n", *(ushort_t*)&(ctrl_area->cr_writes));
17 PrintDebug("DR Reads: %x\n", *(ushort_t*)&(ctrl_area->dr_reads));
18 PrintDebug("DR Writes: %x\n", *(ushort_t*)&(ctrl_area->dr_writes));
20 PrintDebug("Exception Bitmap: %x (at 0x%.8x)\n", *(uint_t*)&(ctrl_area->exceptions), &(ctrl_area->exceptions));
21 PrintDebug("\tDivide-by-Zero: %d\n", ctrl_area->exceptions.de);
22 PrintDebug("\tDebug: %d\n", ctrl_area->exceptions.db);
23 PrintDebug("\tNon-maskable interrupts: %d\n", ctrl_area->exceptions.nmi);
24 PrintDebug("\tBreakpoint: %d\n", ctrl_area->exceptions.bp);
25 PrintDebug("\tOverflow: %d\n", ctrl_area->exceptions.of);
26 PrintDebug("\tBound-Range: %d\n", ctrl_area->exceptions.br);
27 PrintDebug("\tInvalid Opcode: %d\n", ctrl_area->exceptions.ud);
28 PrintDebug("\tDevice not available: %d\n", ctrl_area->exceptions.nm);
29 PrintDebug("\tDouble Fault: %d\n", ctrl_area->exceptions.df);
30 PrintDebug("\tInvalid TSS: %d\n", ctrl_area->exceptions.ts);
31 PrintDebug("\tSegment not present: %d\n", ctrl_area->exceptions.np);
32 PrintDebug("\tStack: %d\n", ctrl_area->exceptions.ss);
33 PrintDebug("\tGPF: %d\n", ctrl_area->exceptions.gp);
34 PrintDebug("\tPage Fault: %d\n", ctrl_area->exceptions.pf);
35 PrintDebug("\tFloating Point: %d\n", ctrl_area->exceptions.mf);
36 PrintDebug("\tAlignment Check: %d\n", ctrl_area->exceptions.ac);
37 PrintDebug("\tMachine Check: %d\n", ctrl_area->exceptions.mc);
38 PrintDebug("\tSIMD floating point: %d\n", ctrl_area->exceptions.xf);
39 PrintDebug("\tSecurity: %d\n", ctrl_area->exceptions.sx);
41 PrintDebug("Instructions bitmap: %.8x (at 0x%.8x)\n", *(uint_t*)&(ctrl_area->instrs), &(ctrl_area->instrs));
42 PrintDebug("\tINTR: %d\n", ctrl_area->instrs.INTR);
43 PrintDebug("\tNMI: %d\n", ctrl_area->instrs.NMI);
44 PrintDebug("\tSMI: %d\n", ctrl_area->instrs.SMI);
45 PrintDebug("\tINIT: %d\n", ctrl_area->instrs.INIT);
46 PrintDebug("\tVINTR: %d\n", ctrl_area->instrs.VINTR);
47 PrintDebug("\tCR0: %d\n", ctrl_area->instrs.CR0);
48 PrintDebug("\tRD_IDTR: %d\n", ctrl_area->instrs.RD_IDTR);
49 PrintDebug("\tRD_GDTR: %d\n", ctrl_area->instrs.RD_GDTR);
50 PrintDebug("\tRD_LDTR: %d\n", ctrl_area->instrs.RD_LDTR);
51 PrintDebug("\tRD_TR: %d\n", ctrl_area->instrs.RD_TR);
52 PrintDebug("\tWR_IDTR: %d\n", ctrl_area->instrs.WR_IDTR);
53 PrintDebug("\tWR_GDTR: %d\n", ctrl_area->instrs.WR_GDTR);
54 PrintDebug("\tWR_LDTR: %d\n", ctrl_area->instrs.WR_LDTR);
55 PrintDebug("\tWR_TR: %d\n", ctrl_area->instrs.WR_TR);
56 PrintDebug("\tRDTSC: %d\n", ctrl_area->instrs.RDTSC);
57 PrintDebug("\tRDPMC: %d\n", ctrl_area->instrs.RDPMC);
58 PrintDebug("\tPUSHF: %d\n", ctrl_area->instrs.PUSHF);
59 PrintDebug("\tPOPF: %d\n", ctrl_area->instrs.POPF);
60 PrintDebug("\tCPUID: %d\n", ctrl_area->instrs.CPUID);
61 PrintDebug("\tRSM: %d\n", ctrl_area->instrs.RSM);
62 PrintDebug("\tIRET: %d\n", ctrl_area->instrs.IRET);
63 PrintDebug("\tINTn: %d\n", ctrl_area->instrs.INTn);
64 PrintDebug("\tINVD: %d\n", ctrl_area->instrs.INVD);
65 PrintDebug("\tPAUSE: %d\n", ctrl_area->instrs.PAUSE);
66 PrintDebug("\tHLT: %d\n", ctrl_area->instrs.HLT);
67 PrintDebug("\tINVLPG: %d\n", ctrl_area->instrs.INVLPG);
68 PrintDebug("\tINVLPGA: %d\n", ctrl_area->instrs.INVLPGA);
69 PrintDebug("\tIOIO_PROT: %d\n", ctrl_area->instrs.IOIO_PROT);
70 PrintDebug("\tMSR_PROT: %d\n", ctrl_area->instrs.MSR_PROT);
71 PrintDebug("\ttask_switch: %d\n", ctrl_area->instrs.task_switch);
72 PrintDebug("\tFERR_FREEZE: %d\n", ctrl_area->instrs.FERR_FREEZE);
73 PrintDebug("\tshutdown_evts: %d\n", ctrl_area->instrs.shutdown_evts);
75 PrintDebug("SVM Instruction Bitmap: %.8x (at 0x%.8x)\n", *(uint_t*)&(ctrl_area->svm_instrs), &(ctrl_area->svm_instrs));
76 PrintDebug("\tVMRUN: %d\n", ctrl_area->svm_instrs.VMRUN);
77 PrintDebug("\tVMMCALL: %d\n", ctrl_area->svm_instrs.VMMCALL);
78 PrintDebug("\tVMLOAD: %d\n", ctrl_area->svm_instrs.VMLOAD);
79 PrintDebug("\tVMSAVE: %d\n", ctrl_area->svm_instrs.VMSAVE);
80 PrintDebug("\tSTGI: %d\n", ctrl_area->svm_instrs.STGI);
81 PrintDebug("\tCLGI: %d\n", ctrl_area->svm_instrs.CLGI);
82 PrintDebug("\tSKINIT: %d\n", ctrl_area->svm_instrs.SKINIT);
83 PrintDebug("\tRDTSCP: %d\n", ctrl_area->svm_instrs.RDTSCP);
84 PrintDebug("\tICEBP: %d\n", ctrl_area->svm_instrs.ICEBP);
85 PrintDebug("\tWBINVD: %d\n", ctrl_area->svm_instrs.WBINVD);
86 PrintDebug("\tMONITOR: %d\n", ctrl_area->svm_instrs.MONITOR);
87 PrintDebug("\tMWAIT_always: %d\n", ctrl_area->svm_instrs.MWAIT_always);
88 PrintDebug("\tMWAIT_if_armed: %d\n", ctrl_area->svm_instrs.MWAIT_if_armed);
92 tmp_reg.r_reg = ctrl_area->IOPM_BASE_PA;
93 PrintDebug("IOPM_BASE_PA: lo: 0x%.8x, hi: 0x%.8x\n", tmp_reg.e_reg.low, tmp_reg.e_reg.high);
94 tmp_reg.r_reg = ctrl_area->MSRPM_BASE_PA;
95 PrintDebug("MSRPM_BASE_PA: lo: 0x%.8x, hi: 0x%.8x\n", tmp_reg.e_reg.low, tmp_reg.e_reg.high);
96 tmp_reg.r_reg = ctrl_area->TSC_OFFSET;
97 PrintDebug("TSC_OFFSET: lo: 0x%.8x, hi: 0x%.8x\n", tmp_reg.e_reg.low, tmp_reg.e_reg.high);
99 PrintDebug("guest_ASID: %d\n", ctrl_area->guest_ASID);
100 PrintDebug("TLB_CONTROL: %d\n", ctrl_area->TLB_CONTROL);
103 PrintDebug("Guest Control Bitmap: %x (at 0x%.8x)\n", *(uint_t*)&(ctrl_area->guest_ctrl), &(ctrl_area->guest_ctrl));
104 PrintDebug("\tV_TPR: %d\n", ctrl_area->guest_ctrl.V_TPR);
105 PrintDebug("\tV_IRQ: %d\n", ctrl_area->guest_ctrl.V_IRQ);
106 PrintDebug("\tV_INTR_PRIO: %d\n", ctrl_area->guest_ctrl.V_INTR_PRIO);
107 PrintDebug("\tV_IGN_TPR: %d\n", ctrl_area->guest_ctrl.V_IGN_TPR);
108 PrintDebug("\tV_INTR_MASKING: %d\n", ctrl_area->guest_ctrl.V_INTR_MASKING);
109 PrintDebug("\tV_INTR_VECTOR: %d\n", ctrl_area->guest_ctrl.V_INTR_VECTOR);
111 PrintDebug("Interrupt_shadow: %d\n", ctrl_area->interrupt_shadow);
114 tmp_reg.r_reg = ctrl_area->exit_code;
115 PrintDebug("exit_code: hi: 0x%.8x, lo: 0x%.8x\n", tmp_reg.e_reg.high, tmp_reg.e_reg.low);
116 tmp_reg.r_reg = ctrl_area->exit_info1;
117 PrintDebug("exit_info1: hi: 0x%.8x, lo: 0x%.8x\n", tmp_reg.e_reg.high, tmp_reg.e_reg.low);
118 tmp_reg.r_reg = ctrl_area->exit_info2;
119 PrintDebug("exit_info2: hi: 0x%.8x, lo: 0x%.8x\n", tmp_reg.e_reg.high, tmp_reg.e_reg.low);
122 PrintDebug("Exit Int Info: (at 0x%.8x)\n", &(ctrl_area->exit_int_info));
123 PrintDebug("Vector: %d\n", ctrl_area->exit_int_info.vector);
124 PrintDebug("(type=%d) (ev=%d) (valid=%d)\n", ctrl_area->exit_int_info.type,
125 ctrl_area->exit_int_info.ev, ctrl_area->exit_int_info.valid);
126 PrintDebug("Error Code: %d\n", ctrl_area->exit_int_info.error_code);
129 tmp_reg.r_reg = ctrl_area->NP_ENABLE;
130 PrintDebug("NP_ENABLE: hi: 0x%.8x, lo: 0x%.8x\n", tmp_reg.e_reg.high, tmp_reg.e_reg.low);
132 PrintDebug("Event Injection: (at 0x%.8x)\n", &(ctrl_area->EVENTINJ));
133 PrintDebug("Vector: %d\n", ctrl_area->EVENTINJ.vector);
134 PrintDebug("(type=%d) (ev=%d) (valid=%d)\n", ctrl_area->EVENTINJ.type,
135 ctrl_area->EVENTINJ.ev, ctrl_area->EVENTINJ.valid);
136 PrintDebug("Error Code: %d\n", ctrl_area->EVENTINJ.error_code);
139 tmp_reg.r_reg = ctrl_area->N_CR3;
140 PrintDebug("N_CR3: hi: 0x%.8x, lo: 0x%.8x\n", tmp_reg.e_reg.high, tmp_reg.e_reg.low);
142 PrintDebug("LBR_VIRTUALIZATION_ENABLE: %d\n", ctrl_area->LBR_VIRTUALIZATION_ENABLE);
145 PrintDebug("\n--Guest Saved State--\n");
147 PrintDebug("es Selector (at 0x%.8x): \n", &(guest_area->es));
148 PrintDebug("\tSelector: %d\n", guest_area->es.selector);
149 PrintDebug("\t(type=%x), (S=%d), (dpl=%d), (P=%d), (avl=%d), (L=%d), (db=%d), (G=%d)\n",
150 guest_area->es.attrib.fields.type, guest_area->es.attrib.fields.S,
151 guest_area->es.attrib.fields.dpl, guest_area->es.attrib.fields.P,
152 guest_area->es.attrib.fields.avl, guest_area->es.attrib.fields.L,
153 guest_area->es.attrib.fields.db, guest_area->es.attrib.fields.G);
154 PrintDebug("\tlimit: %lu\n", guest_area->es.limit);
155 tmp_reg.r_reg = guest_area->es.base;
156 PrintDebug("\tBase: hi: 0x%.8x, lo: 0x%.8x\n", tmp_reg.e_reg.high, tmp_reg.e_reg.low);
159 PrintDebug("cs Selector (at 0x%.8x): \n", &(guest_area->cs));
160 PrintDebug("\tSelector: %d\n", guest_area->cs.selector);
161 PrintDebug("\t(type=%x), (S=%d), (dpl=%d), (P=%d), (avl=%d), (L=%d), (db=%d), (G=%d)\n",
162 guest_area->cs.attrib.fields.type, guest_area->cs.attrib.fields.S,
163 guest_area->cs.attrib.fields.dpl, guest_area->cs.attrib.fields.P,
164 guest_area->cs.attrib.fields.avl, guest_area->cs.attrib.fields.L,
165 guest_area->cs.attrib.fields.db, guest_area->cs.attrib.fields.G);
166 PrintDebug("\tlimit: %lu\n", guest_area->cs.limit);
167 tmp_reg.r_reg = guest_area->cs.base;
168 PrintDebug("\tBase: hi: 0x%.8x, lo: 0x%.8x\n", tmp_reg.e_reg.high, tmp_reg.e_reg.low);
171 PrintDebug("ss Selector (at 0x%.8x): \n", &(guest_area->ss));
172 PrintDebug("\tSelector: %d\n", guest_area->ss.selector);
173 PrintDebug("\t(type=%x), (S=%d), (dpl=%d), (P=%d), (avl=%d), (L=%d), (db=%d), (G=%d)\n",
174 guest_area->ss.attrib.fields.type, guest_area->ss.attrib.fields.S,
175 guest_area->ss.attrib.fields.dpl, guest_area->ss.attrib.fields.P,
176 guest_area->ss.attrib.fields.avl, guest_area->ss.attrib.fields.L,
177 guest_area->ss.attrib.fields.db, guest_area->ss.attrib.fields.G);
178 PrintDebug("\tlimit: %lu\n", guest_area->ss.limit);
179 tmp_reg.r_reg = guest_area->ss.base;
180 PrintDebug("\tBase: hi: 0x%.8x, lo: 0x%.8x\n", tmp_reg.e_reg.high, tmp_reg.e_reg.low);
183 PrintDebug("ds Selector (at 0x%.8x): \n", &(guest_area->ds));
184 PrintDebug("\tSelector: %d\n", guest_area->ds.selector);
185 PrintDebug("\t(type=%x), (S=%d), (dpl=%d), (P=%d), (avl=%d), (L=%d), (db=%d), (G=%d)\n",
186 guest_area->ds.attrib.fields.type, guest_area->ds.attrib.fields.S,
187 guest_area->ds.attrib.fields.dpl, guest_area->ds.attrib.fields.P,
188 guest_area->ds.attrib.fields.avl, guest_area->ds.attrib.fields.L,
189 guest_area->ds.attrib.fields.db, guest_area->ds.attrib.fields.G);
190 PrintDebug("\tlimit: %lu\n", guest_area->ds.limit);
191 tmp_reg.r_reg = guest_area->ds.base;
192 PrintDebug("\tBase: hi: 0x%.8x, lo: 0x%.8x\n", tmp_reg.e_reg.high, tmp_reg.e_reg.low);
195 PrintDebug("fs Selector (at 0x%.8x): \n", &(guest_area->fs));
196 PrintDebug("\tSelector: %d\n", guest_area->fs.selector);
197 PrintDebug("\t(type=%x), (S=%d), (dpl=%d), (P=%d), (avl=%d), (L=%d), (db=%d), (G=%d)\n",
198 guest_area->fs.attrib.fields.type, guest_area->fs.attrib.fields.S,
199 guest_area->fs.attrib.fields.dpl, guest_area->fs.attrib.fields.P,
200 guest_area->fs.attrib.fields.avl, guest_area->fs.attrib.fields.L,
201 guest_area->fs.attrib.fields.db, guest_area->fs.attrib.fields.G);
202 PrintDebug("\tlimit: %lu\n", guest_area->fs.limit);
203 tmp_reg.r_reg = guest_area->fs.base;
204 PrintDebug("\tBase: hi: 0x%.8x, lo: 0x%.8x\n", tmp_reg.e_reg.high, tmp_reg.e_reg.low);
207 PrintDebug("gs Selector (at 0x%.8x): \n", &(guest_area->gs));
208 PrintDebug("\tSelector: %d\n", guest_area->gs.selector);
209 PrintDebug("\t(type=%x), (S=%d), (dpl=%d), (P=%d), (avl=%d), (L=%d), (db=%d), (G=%d)\n",
210 guest_area->gs.attrib.fields.type, guest_area->gs.attrib.fields.S,
211 guest_area->gs.attrib.fields.dpl, guest_area->gs.attrib.fields.P,
212 guest_area->gs.attrib.fields.avl, guest_area->gs.attrib.fields.L,
213 guest_area->gs.attrib.fields.db, guest_area->gs.attrib.fields.G);
214 PrintDebug("\tlimit: %lu\n", guest_area->gs.limit);
215 tmp_reg.r_reg = guest_area->gs.base;
216 PrintDebug("\tBase: hi: 0x%.8x, lo: 0x%.8x\n", tmp_reg.e_reg.high, tmp_reg.e_reg.low);
219 PrintDebug("gdtr Selector (at 0x%.8x): \n", &(guest_area->gdtr));
220 PrintDebug("\tSelector: %d\n", guest_area->gdtr.selector);
221 PrintDebug("\t(type=%x), (S=%d), (dpl=%d), (P=%d), (avl=%d), (L=%d), (db=%d), (G=%d)\n",
222 guest_area->gdtr.attrib.fields.type, guest_area->gdtr.attrib.fields.S,
223 guest_area->gdtr.attrib.fields.dpl, guest_area->gdtr.attrib.fields.P,
224 guest_area->gdtr.attrib.fields.avl, guest_area->gdtr.attrib.fields.L,
225 guest_area->gdtr.attrib.fields.db, guest_area->gdtr.attrib.fields.G);
226 PrintDebug("\tlimit: %lu\n", guest_area->gdtr.limit);
227 tmp_reg.r_reg = guest_area->gdtr.base;
228 PrintDebug("\tBase: hi: 0x%.8x, lo: 0x%.8x\n", tmp_reg.e_reg.high, tmp_reg.e_reg.low);
231 PrintDebug("ldtr Selector (at 0x%.8x): \n", &(guest_area->ldtr));
232 PrintDebug("\tSelector: %d\n", guest_area->ldtr.selector);
233 PrintDebug("\t(type=%x), (S=%d), (dpl=%d), (P=%d), (avl=%d), (L=%d), (db=%d), (G=%d)\n",
234 guest_area->ldtr.attrib.fields.type, guest_area->ldtr.attrib.fields.S,
235 guest_area->ldtr.attrib.fields.dpl, guest_area->ldtr.attrib.fields.P,
236 guest_area->ldtr.attrib.fields.avl, guest_area->ldtr.attrib.fields.L,
237 guest_area->ldtr.attrib.fields.db, guest_area->ldtr.attrib.fields.G);
238 PrintDebug("\tlimit: %lu\n", guest_area->ldtr.limit);
239 tmp_reg.r_reg = guest_area->ldtr.base;
240 PrintDebug("\tBase: hi: 0x%.8x, lo: 0x%.8x\n", tmp_reg.e_reg.high, tmp_reg.e_reg.low);
243 PrintDebug("idtr Selector (at 0x%.8x): \n", &(guest_area->idtr));
244 PrintDebug("\tSelector: %d\n", guest_area->idtr.selector);
245 PrintDebug("\t(type=%x), (S=%d), (dpl=%d), (P=%d), (avl=%d), (L=%d), (db=%d), (G=%d)\n",
246 guest_area->idtr.attrib.fields.type, guest_area->idtr.attrib.fields.S,
247 guest_area->idtr.attrib.fields.dpl, guest_area->idtr.attrib.fields.P,
248 guest_area->idtr.attrib.fields.avl, guest_area->idtr.attrib.fields.L,
249 guest_area->idtr.attrib.fields.db, guest_area->idtr.attrib.fields.G);
250 PrintDebug("\tlimit: %lu\n", guest_area->idtr.limit);
251 tmp_reg.r_reg = guest_area->idtr.base;
252 PrintDebug("\tBase: hi: 0x%.8x, lo: 0x%.8x\n", tmp_reg.e_reg.high, tmp_reg.e_reg.low);
255 PrintDebug("tr Selector (at 0x%.8x): \n", &(guest_area->tr));
256 PrintDebug("\tSelector: %d\n", guest_area->tr.selector);
257 PrintDebug("\t(type=%x), (S=%d), (dpl=%d), (P=%d), (avl=%d), (L=%d), (db=%d), (G=%d)\n",
258 guest_area->tr.attrib.fields.type, guest_area->tr.attrib.fields.S,
259 guest_area->tr.attrib.fields.dpl, guest_area->tr.attrib.fields.P,
260 guest_area->tr.attrib.fields.avl, guest_area->tr.attrib.fields.L,
261 guest_area->tr.attrib.fields.db, guest_area->tr.attrib.fields.G);
262 PrintDebug("\tlimit: %lu\n", guest_area->tr.limit);
263 tmp_reg.r_reg = guest_area->tr.base;
264 PrintDebug("\tBase: hi: 0x%.8x, lo: 0x%.8x\n", tmp_reg.e_reg.high, tmp_reg.e_reg.low);
267 PrintDebug("cpl: %d\n", guest_area->cpl);
270 tmp_reg.r_reg = guest_area->efer;
271 PrintDebug("EFER: hi: 0x%.8x, lo: 0x%.8x\n", tmp_reg.e_reg.high, tmp_reg.e_reg.low);
273 tmp_reg.r_reg = guest_area->cr4;
274 PrintDebug("CR4: hi: 0x%.8x, lo: 0x%.8x\n", tmp_reg.e_reg.high, tmp_reg.e_reg.low);
275 tmp_reg.r_reg = guest_area->cr3;
276 PrintDebug("CR3: hi: 0x%.8x, lo: 0x%.8x\n", tmp_reg.e_reg.high, tmp_reg.e_reg.low);
277 tmp_reg.r_reg = guest_area->cr0;
278 PrintDebug("CR0: hi: 0x%.8x, lo: 0x%.8x\n", tmp_reg.e_reg.high, tmp_reg.e_reg.low);
279 tmp_reg.r_reg = guest_area->dr7;
280 PrintDebug("DR7: hi: 0x%.8x, lo: 0x%.8x\n", tmp_reg.e_reg.high, tmp_reg.e_reg.low);
281 tmp_reg.r_reg = guest_area->dr6;
282 PrintDebug("DR6: hi: 0x%.8x, lo: 0x%.8x\n", tmp_reg.e_reg.high, tmp_reg.e_reg.low);
283 tmp_reg.r_reg = guest_area->rflags;
284 PrintDebug("RFLAGS: hi: 0x%.8x, lo: 0x%.8x\n", tmp_reg.e_reg.high, tmp_reg.e_reg.low);
285 tmp_reg.r_reg = guest_area->rip;
286 PrintDebug("RIP: hi: 0x%.8x, lo: 0x%.8x\n", tmp_reg.e_reg.high, tmp_reg.e_reg.low);
289 tmp_reg.r_reg = guest_area->rsp;
290 PrintDebug("RSP: hi: 0x%.8x, lo: 0x%.8x\n", tmp_reg.e_reg.high, tmp_reg.e_reg.low);
293 tmp_reg.r_reg = guest_area->rax;
294 PrintDebug("RAX: hi: 0x%.8x, lo: 0x%.8x\n", tmp_reg.e_reg.high, tmp_reg.e_reg.low);
295 tmp_reg.r_reg = guest_area->star;
296 PrintDebug("STAR: hi: 0x%.8x, lo: 0x%.8x\n", tmp_reg.e_reg.high, tmp_reg.e_reg.low);
297 tmp_reg.r_reg = guest_area->lstar;
298 PrintDebug("LSTAR: hi: 0x%.8x, lo: 0x%.8x\n", tmp_reg.e_reg.high, tmp_reg.e_reg.low);
299 tmp_reg.r_reg = guest_area->cstar;
300 PrintDebug("CSTAR: hi: 0x%.8x, lo: 0x%.8x\n", tmp_reg.e_reg.high, tmp_reg.e_reg.low);
301 tmp_reg.r_reg = guest_area->sfmask;
302 PrintDebug("SFMASK: hi: 0x%.8x, lo: 0x%.8x\n", tmp_reg.e_reg.high, tmp_reg.e_reg.low);
303 tmp_reg.r_reg = guest_area->KernelGsBase;
304 PrintDebug("KernelGsBase: hi: 0x%.8x, lo: 0x%.8x\n", tmp_reg.e_reg.high, tmp_reg.e_reg.low);
305 tmp_reg.r_reg = guest_area->sysenter_cs;
306 PrintDebug("sysenter_cs: hi: 0x%.8x, lo: 0x%.8x\n", tmp_reg.e_reg.high, tmp_reg.e_reg.low);
307 tmp_reg.r_reg = guest_area->sysenter_esp;
308 PrintDebug("sysenter_esp: hi: 0x%.8x, lo: 0x%.8x\n", tmp_reg.e_reg.high, tmp_reg.e_reg.low);
309 tmp_reg.r_reg = guest_area->sysenter_eip;
310 PrintDebug("sysenter_eip: hi: 0x%.8x, lo: 0x%.8x\n", tmp_reg.e_reg.high, tmp_reg.e_reg.low);
311 tmp_reg.r_reg = guest_area->cr2;
312 PrintDebug("CR2: hi: 0x%.8x, lo: 0x%.8x\n", tmp_reg.e_reg.high, tmp_reg.e_reg.low);
314 tmp_reg.r_reg = guest_area->g_pat;
315 PrintDebug("g_pat: hi: 0x%.8x, lo: 0x%.8x\n", tmp_reg.e_reg.high, tmp_reg.e_reg.low);
316 tmp_reg.r_reg = guest_area->dbgctl;
317 PrintDebug("dbgctl: hi: 0x%.8x, lo: 0x%.8x\n", tmp_reg.e_reg.high, tmp_reg.e_reg.low);
318 tmp_reg.r_reg = guest_area->br_from;
319 PrintDebug("br_from: hi: 0x%.8x, lo: 0x%.8x\n", tmp_reg.e_reg.high, tmp_reg.e_reg.low);
320 tmp_reg.r_reg = guest_area->br_to;
321 PrintDebug("br_to: hi: 0x%.8x, lo: 0x%.8x\n", tmp_reg.e_reg.high, tmp_reg.e_reg.low);
322 tmp_reg.r_reg = guest_area->lastexcpfrom;
323 PrintDebug("lastexcpfrom: hi: 0x%.8x, lo: 0x%.8x\n", tmp_reg.e_reg.high, tmp_reg.e_reg.low);
324 tmp_reg.r_reg = guest_area->lastexcpto;
325 PrintDebug("lastexcpto: hi: 0x%.8x, lo: 0x%.8x\n", tmp_reg.e_reg.high, tmp_reg.e_reg.low);