/root/src/xen/xen/arch/x86/x86_emulate/x86_emulate.h
Line | Count | Source (jump to first uncovered line) |
1 | | /****************************************************************************** |
2 | | * x86_emulate.h |
3 | | * |
4 | | * Generic x86 (32-bit and 64-bit) instruction decoder and emulator. |
5 | | * |
6 | | * Copyright (c) 2005-2007 Keir Fraser |
7 | | * Copyright (c) 2005-2007 XenSource Inc. |
8 | | * |
9 | | * This program is free software; you can redistribute it and/or modify |
10 | | * it under the terms of the GNU General Public License as published by |
11 | | * the Free Software Foundation; either version 2 of the License, or |
12 | | * (at your option) any later version. |
13 | | * |
14 | | * This program is distributed in the hope that it will be useful, |
15 | | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
16 | | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
17 | | * GNU General Public License for more details. |
18 | | * |
19 | | * You should have received a copy of the GNU General Public License |
20 | | * along with this program; If not, see <http://www.gnu.org/licenses/>. |
21 | | */ |
22 | | |
23 | | #ifndef __X86_EMULATE_H__ |
24 | | #define __X86_EMULATE_H__ |
25 | | |
26 | | #define MAX_INST_LEN 15 |
27 | | |
28 | | struct x86_emulate_ctxt; |
29 | | |
30 | | /* |
31 | | * Comprehensive enumeration of x86 segment registers. Various bits of code |
32 | | * rely on this order (general purpose before system, tr at the beginning of |
33 | | * system). |
34 | | */ |
35 | | enum x86_segment { |
36 | | /* General purpose. Matches the SReg3 encoding in opcode/ModRM bytes. */ |
37 | | x86_seg_es, |
38 | | x86_seg_cs, |
39 | | x86_seg_ss, |
40 | | x86_seg_ds, |
41 | | x86_seg_fs, |
42 | | x86_seg_gs, |
43 | | /* System: Valid to use for implicit table references. */ |
44 | | x86_seg_tr, |
45 | | x86_seg_ldtr, |
46 | | x86_seg_gdtr, |
47 | | x86_seg_idtr, |
48 | | /* No Segment: For accesses which are already linear. */ |
49 | | x86_seg_none |
50 | | }; |
51 | | |
52 | | static inline bool is_x86_user_segment(enum x86_segment seg) |
53 | 360k | { |
54 | 360k | unsigned int idx = seg; |
55 | 360k | |
56 | 360k | return idx <= x86_seg_gs; |
57 | 360k | } Unexecuted instantiation: dm.c:is_x86_user_segment Unexecuted instantiation: mmconfig-shared.c:is_x86_user_segment Unexecuted instantiation: mmconfig_64.c:is_x86_user_segment Unexecuted instantiation: mmconf-fam10h.c:is_x86_user_segment Unexecuted instantiation: acpi_mmcfg.c:is_x86_user_segment Unexecuted instantiation: ro-page-fault.c:is_x86_user_segment Unexecuted instantiation: misc-hypercalls.c:is_x86_user_segment Unexecuted instantiation: iret.c:is_x86_user_segment Unexecuted instantiation: emul-priv-op.c:is_x86_user_segment Unexecuted instantiation: emul-inv-op.c:is_x86_user_segment Unexecuted instantiation: emul-gate-op.c:is_x86_user_segment Unexecuted instantiation: descriptor-tables.c:is_x86_user_segment Unexecuted instantiation: callback.c:is_x86_user_segment Unexecuted instantiation: backtrace.c:is_x86_user_segment Unexecuted instantiation: op_model_athlon.c:is_x86_user_segment Unexecuted instantiation: op_model_ppro.c:is_x86_user_segment Unexecuted instantiation: op_model_p4.c:is_x86_user_segment Unexecuted instantiation: nmi_int.c:is_x86_user_segment Unexecuted instantiation: nested_ept.c:is_x86_user_segment Unexecuted instantiation: nested_hap.c:is_x86_user_segment Unexecuted instantiation: hap.c:is_x86_user_segment Unexecuted instantiation: multi.c:is_x86_user_segment Unexecuted instantiation: mem_sharing.c:is_x86_user_segment Unexecuted instantiation: mem_paging.c:is_x86_user_segment Unexecuted instantiation: guest_walk.c:is_x86_user_segment Unexecuted instantiation: altp2m.c:is_x86_user_segment Unexecuted instantiation: p2m-pod.c:is_x86_user_segment Unexecuted instantiation: p2m-ept.c:is_x86_user_segment Unexecuted instantiation: p2m-pt.c:is_x86_user_segment Unexecuted instantiation: p2m.c:is_x86_user_segment Unexecuted instantiation: paging.c:is_x86_user_segment Unexecuted instantiation: vvmx.c:is_x86_user_segment Unexecuted instantiation: vmx.c:is_x86_user_segment Unexecuted instantiation: vmcs.c:is_x86_user_segment Unexecuted instantiation: realmode.c:is_x86_user_segment Unexecuted instantiation: vmcb.c:is_x86_user_segment Unexecuted instantiation: svmdebug.c:is_x86_user_segment Unexecuted instantiation: svm.c:is_x86_user_segment Unexecuted instantiation: nestedsvm.c:is_x86_user_segment Unexecuted instantiation: intr.c:is_x86_user_segment Unexecuted instantiation: vpt.c:is_x86_user_segment Unexecuted instantiation: vpic.c:is_x86_user_segment Unexecuted instantiation: vmsi.c:is_x86_user_segment Unexecuted instantiation: vlapic.c:is_x86_user_segment Unexecuted instantiation: viridian.c:is_x86_user_segment Unexecuted instantiation: vioapic.c:is_x86_user_segment Unexecuted instantiation: stdvga.c:is_x86_user_segment Unexecuted instantiation: save.c:is_x86_user_segment Unexecuted instantiation: rtc.c:is_x86_user_segment Unexecuted instantiation: pmtimer.c:is_x86_user_segment Unexecuted instantiation: nestedhvm.c:is_x86_user_segment Unexecuted instantiation: mtrr.c:is_x86_user_segment Unexecuted instantiation: ioreq.c:is_x86_user_segment Unexecuted instantiation: intercept.c:is_x86_user_segment Unexecuted instantiation: i8254.c:is_x86_user_segment hvm.c:is_x86_user_segment Line | Count | Source | 53 | 360k | { | 54 | 360k | unsigned int idx = seg; | 55 | 360k | | 56 | 360k | return idx <= x86_seg_gs; | 57 | 360k | } |
Unexecuted instantiation: emulate.c:is_x86_user_segment Unexecuted instantiation: asid.c:is_x86_user_segment Unexecuted instantiation: probe.c:is_x86_user_segment Unexecuted instantiation: delivery.c:is_x86_user_segment Unexecuted instantiation: default.c:is_x86_user_segment Unexecuted instantiation: x2apic.c:is_x86_user_segment Unexecuted instantiation: bigsmp.c:is_x86_user_segment Unexecuted instantiation: main.c:is_x86_user_segment Unexecuted instantiation: generic.c:is_x86_user_segment Unexecuted instantiation: vmce.c:is_x86_user_segment Unexecuted instantiation: util.c:is_x86_user_segment Unexecuted instantiation: non-fatal.c:is_x86_user_segment Unexecuted instantiation: mce_intel.c:is_x86_user_segment Unexecuted instantiation: mce-apei.c:is_x86_user_segment Unexecuted instantiation: mce.c:is_x86_user_segment Unexecuted instantiation: mctelem.c:is_x86_user_segment Unexecuted instantiation: barrier.c:is_x86_user_segment Unexecuted instantiation: mcaction.c:is_x86_user_segment Unexecuted instantiation: mce_amd.c:is_x86_user_segment Unexecuted instantiation: amd_nonfatal.c:is_x86_user_segment Unexecuted instantiation: vpmu_intel.c:is_x86_user_segment Unexecuted instantiation: vpmu_amd.c:is_x86_user_segment Unexecuted instantiation: vpmu.c:is_x86_user_segment Unexecuted instantiation: mwait-idle.c:is_x86_user_segment Unexecuted instantiation: intel_cacheinfo.c:is_x86_user_segment Unexecuted instantiation: intel.c:is_x86_user_segment Unexecuted instantiation: common.c:is_x86_user_segment Unexecuted instantiation: centaur.c:is_x86_user_segment Unexecuted instantiation: amd.c:is_x86_user_segment Unexecuted instantiation: powernow.c:is_x86_user_segment Unexecuted instantiation: cpuidle_menu.c:is_x86_user_segment Unexecuted instantiation: cpu_idle.c:is_x86_user_segment Unexecuted instantiation: suspend.c:is_x86_user_segment Unexecuted instantiation: power.c:is_x86_user_segment Unexecuted instantiation: lib.c:is_x86_user_segment Unexecuted instantiation: xstate.c:is_x86_user_segment Unexecuted instantiation: hpet.c:is_x86_user_segment Unexecuted instantiation: tboot.c:is_x86_user_segment Unexecuted instantiation: x86_emulate.c:is_x86_user_segment Unexecuted instantiation: usercopy.c:is_x86_user_segment Unexecuted instantiation: traps.c:is_x86_user_segment Unexecuted instantiation: srat.c:is_x86_user_segment Unexecuted instantiation: smpboot.c:is_x86_user_segment Unexecuted instantiation: setup.c:is_x86_user_segment Unexecuted instantiation: psr.c:is_x86_user_segment Unexecuted instantiation: platform_hypercall.c:is_x86_user_segment Unexecuted instantiation: physdev.c:is_x86_user_segment Unexecuted instantiation: percpu.c:is_x86_user_segment Unexecuted instantiation: nmi.c:is_x86_user_segment Unexecuted instantiation: mpparse.c:is_x86_user_segment Unexecuted instantiation: mm.c:is_x86_user_segment Unexecuted instantiation: microcode.c:is_x86_user_segment Unexecuted instantiation: microcode_intel.c:is_x86_user_segment Unexecuted instantiation: microcode_amd.c:is_x86_user_segment Unexecuted instantiation: machine_kexec.c:is_x86_user_segment Unexecuted instantiation: ioport_emulate.c:is_x86_user_segment Unexecuted instantiation: msr.c:is_x86_user_segment Unexecuted instantiation: io_apic.c:is_x86_user_segment Unexecuted instantiation: i8259.c:is_x86_user_segment Unexecuted instantiation: i387.c:is_x86_user_segment Unexecuted instantiation: hypercall.c:is_x86_user_segment Unexecuted instantiation: flushtlb.c:is_x86_user_segment Unexecuted instantiation: extable.c:is_x86_user_segment Unexecuted instantiation: e820.c:is_x86_user_segment Unexecuted instantiation: domain_page.c:is_x86_user_segment Unexecuted instantiation: delay.c:is_x86_user_segment Unexecuted instantiation: debug.c:is_x86_user_segment Unexecuted instantiation: crash.c:is_x86_user_segment Unexecuted instantiation: compat.c:is_x86_user_segment Unexecuted instantiation: cpuid.c:is_x86_user_segment Unexecuted instantiation: apic.c:is_x86_user_segment Unexecuted instantiation: xsm_core.c:is_x86_user_segment Unexecuted instantiation: vesa.c:is_x86_user_segment Unexecuted instantiation: vga.c:is_x86_user_segment Unexecuted instantiation: apei-io.c:is_x86_user_segment Unexecuted instantiation: apei-base.c:is_x86_user_segment Unexecuted instantiation: hest.c:is_x86_user_segment Unexecuted instantiation: erst.c:is_x86_user_segment Unexecuted instantiation: utglobal.c:is_x86_user_segment Unexecuted instantiation: tbutils.c:is_x86_user_segment Unexecuted instantiation: reboot.c:is_x86_user_segment Unexecuted instantiation: hwregs.c:is_x86_user_segment Unexecuted instantiation: pmstat.c:is_x86_user_segment Unexecuted instantiation: osl.c:is_x86_user_segment Unexecuted instantiation: numa.c:is_x86_user_segment Unexecuted instantiation: iommu_guest.c:is_x86_user_segment Unexecuted instantiation: iommu_cmd.c:is_x86_user_segment Unexecuted instantiation: iommu_intr.c:is_x86_user_segment Unexecuted instantiation: pci_amd_iommu.c:is_x86_user_segment Unexecuted instantiation: iommu_map.c:is_x86_user_segment Unexecuted instantiation: iommu_init.c:is_x86_user_segment Unexecuted instantiation: ats.c:is_x86_user_segment Unexecuted instantiation: vtd.c:is_x86_user_segment Unexecuted instantiation: quirks.c:is_x86_user_segment Unexecuted instantiation: intremap.c:is_x86_user_segment Unexecuted instantiation: qinval.c:is_x86_user_segment Unexecuted instantiation: utils.c:is_x86_user_segment Unexecuted instantiation: dmar.c:is_x86_user_segment Unexecuted instantiation: io.c:is_x86_user_segment Unexecuted instantiation: iommu.c:is_x86_user_segment Unexecuted instantiation: msix.c:is_x86_user_segment Unexecuted instantiation: msi.c:is_x86_user_segment Unexecuted instantiation: header.c:is_x86_user_segment Unexecuted instantiation: vpci.c:is_x86_user_segment Unexecuted instantiation: pci.c:is_x86_user_segment Unexecuted instantiation: utility.c:is_x86_user_segment Unexecuted instantiation: cpufreq_misc_governors.c:is_x86_user_segment Unexecuted instantiation: cpufreq_ondemand.c:is_x86_user_segment Unexecuted instantiation: cpufreq.c:is_x86_user_segment Unexecuted instantiation: serial.c:is_x86_user_segment Unexecuted instantiation: ehci-dbgp.c:is_x86_user_segment Unexecuted instantiation: ns16550.c:is_x86_user_segment Unexecuted instantiation: console.c:is_x86_user_segment Unexecuted instantiation: libelf-loader.c:is_x86_user_segment Unexecuted instantiation: llvm.c:is_x86_user_segment Unexecuted instantiation: tmem_control.c:is_x86_user_segment Unexecuted instantiation: tmem_xen.c:is_x86_user_segment Unexecuted instantiation: tmem.c:is_x86_user_segment Unexecuted instantiation: xmalloc_tlsf.c:is_x86_user_segment Unexecuted instantiation: xenoprof.c:is_x86_user_segment Unexecuted instantiation: wait.c:is_x86_user_segment Unexecuted instantiation: vsprintf.c:is_x86_user_segment Unexecuted instantiation: vmap.c:is_x86_user_segment Unexecuted instantiation: vm_event.c:is_x86_user_segment Unexecuted instantiation: virtual_region.c:is_x86_user_segment Unexecuted instantiation: trace.c:is_x86_user_segment Unexecuted instantiation: timer.c:is_x86_user_segment Unexecuted instantiation: time.c:is_x86_user_segment Unexecuted instantiation: tasklet.c:is_x86_user_segment Unexecuted instantiation: sysctl.c:is_x86_user_segment Unexecuted instantiation: symbols.c:is_x86_user_segment Unexecuted instantiation: stop_machine.c:is_x86_user_segment Unexecuted instantiation: spinlock.c:is_x86_user_segment Unexecuted instantiation: smp.c:is_x86_user_segment Unexecuted instantiation: softirq.c:is_x86_user_segment Unexecuted instantiation: shutdown.c:is_x86_user_segment Unexecuted instantiation: schedule.c:is_x86_user_segment Unexecuted instantiation: sched_null.c:is_x86_user_segment Unexecuted instantiation: sched_rt.c:is_x86_user_segment Unexecuted instantiation: sched_credit2.c:is_x86_user_segment Unexecuted instantiation: sched_credit.c:is_x86_user_segment Unexecuted instantiation: sched_arinc653.c:is_x86_user_segment Unexecuted instantiation: rwlock.c:is_x86_user_segment Unexecuted instantiation: rcupdate.c:is_x86_user_segment Unexecuted instantiation: radix-tree.c:is_x86_user_segment Unexecuted instantiation: rangeset.c:is_x86_user_segment Unexecuted instantiation: random.c:is_x86_user_segment Unexecuted instantiation: preempt.c:is_x86_user_segment Unexecuted instantiation: pdx.c:is_x86_user_segment Unexecuted instantiation: page_alloc.c:is_x86_user_segment Unexecuted instantiation: notifier.c:is_x86_user_segment Unexecuted instantiation: multicall.c:is_x86_user_segment Unexecuted instantiation: monitor.c:is_x86_user_segment Unexecuted instantiation: memory.c:is_x86_user_segment Unexecuted instantiation: mem_access.c:is_x86_user_segment Unexecuted instantiation: kimage.c:is_x86_user_segment Unexecuted instantiation: kexec.c:is_x86_user_segment Unexecuted instantiation: keyhandler.c:is_x86_user_segment Unexecuted instantiation: kernel.c:is_x86_user_segment Unexecuted instantiation: irq.c:is_x86_user_segment Unexecuted instantiation: guestcopy.c:is_x86_user_segment Unexecuted instantiation: grant_table.c:is_x86_user_segment Unexecuted instantiation: event_fifo.c:is_x86_user_segment Unexecuted instantiation: event_channel.c:is_x86_user_segment Unexecuted instantiation: event_2l.c:is_x86_user_segment Unexecuted instantiation: domain.c:is_x86_user_segment Unexecuted instantiation: domctl.c:is_x86_user_segment Unexecuted instantiation: cpupool.c:is_x86_user_segment Unexecuted instantiation: cpu.c:is_x86_user_segment Unexecuted instantiation: core_parking.c:is_x86_user_segment |
58 | | static inline bool is_x86_system_segment(enum x86_segment seg) |
59 | 300k | { |
60 | 0 | return seg >= x86_seg_tr && seg < x86_seg_none; |
61 | 300k | } Unexecuted instantiation: mmconfig-shared.c:is_x86_system_segment Unexecuted instantiation: mmconfig_64.c:is_x86_system_segment Unexecuted instantiation: mmconf-fam10h.c:is_x86_system_segment Unexecuted instantiation: acpi_mmcfg.c:is_x86_system_segment Unexecuted instantiation: ro-page-fault.c:is_x86_system_segment Unexecuted instantiation: misc-hypercalls.c:is_x86_system_segment Unexecuted instantiation: iret.c:is_x86_system_segment Unexecuted instantiation: emul-priv-op.c:is_x86_system_segment Unexecuted instantiation: emul-inv-op.c:is_x86_system_segment Unexecuted instantiation: emul-gate-op.c:is_x86_system_segment Unexecuted instantiation: descriptor-tables.c:is_x86_system_segment Unexecuted instantiation: callback.c:is_x86_system_segment Unexecuted instantiation: backtrace.c:is_x86_system_segment Unexecuted instantiation: op_model_athlon.c:is_x86_system_segment Unexecuted instantiation: op_model_ppro.c:is_x86_system_segment Unexecuted instantiation: op_model_p4.c:is_x86_system_segment Unexecuted instantiation: nmi_int.c:is_x86_system_segment Unexecuted instantiation: nested_ept.c:is_x86_system_segment Unexecuted instantiation: nested_hap.c:is_x86_system_segment Unexecuted instantiation: hap.c:is_x86_system_segment Unexecuted instantiation: multi.c:is_x86_system_segment Unexecuted instantiation: mem_sharing.c:is_x86_system_segment Unexecuted instantiation: mem_paging.c:is_x86_system_segment Unexecuted instantiation: guest_walk.c:is_x86_system_segment Unexecuted instantiation: altp2m.c:is_x86_system_segment Unexecuted instantiation: p2m-pod.c:is_x86_system_segment Unexecuted instantiation: p2m-ept.c:is_x86_system_segment Unexecuted instantiation: p2m-pt.c:is_x86_system_segment Unexecuted instantiation: p2m.c:is_x86_system_segment Unexecuted instantiation: paging.c:is_x86_system_segment Unexecuted instantiation: vvmx.c:is_x86_system_segment Unexecuted instantiation: vmx.c:is_x86_system_segment Unexecuted instantiation: vmcs.c:is_x86_system_segment Unexecuted instantiation: realmode.c:is_x86_system_segment Unexecuted instantiation: vmcb.c:is_x86_system_segment Unexecuted instantiation: svmdebug.c:is_x86_system_segment Unexecuted instantiation: svm.c:is_x86_system_segment Unexecuted instantiation: nestedsvm.c:is_x86_system_segment Unexecuted instantiation: intr.c:is_x86_system_segment Unexecuted instantiation: vpt.c:is_x86_system_segment Unexecuted instantiation: vpic.c:is_x86_system_segment Unexecuted instantiation: vmsi.c:is_x86_system_segment Unexecuted instantiation: vlapic.c:is_x86_system_segment Unexecuted instantiation: viridian.c:is_x86_system_segment Unexecuted instantiation: vioapic.c:is_x86_system_segment Unexecuted instantiation: stdvga.c:is_x86_system_segment Unexecuted instantiation: save.c:is_x86_system_segment Unexecuted instantiation: rtc.c:is_x86_system_segment Unexecuted instantiation: pmtimer.c:is_x86_system_segment Unexecuted instantiation: nestedhvm.c:is_x86_system_segment Unexecuted instantiation: mtrr.c:is_x86_system_segment Unexecuted instantiation: ioreq.c:is_x86_system_segment Unexecuted instantiation: intercept.c:is_x86_system_segment Unexecuted instantiation: i8254.c:is_x86_system_segment hvm.c:is_x86_system_segment Line | Count | Source | 59 | 240k | { | 60 | 0 | return seg >= x86_seg_tr && seg < x86_seg_none; | 61 | 240k | } |
emulate.c:is_x86_system_segment Line | Count | Source | 59 | 60.1k | { | 60 | 0 | return seg >= x86_seg_tr && seg < x86_seg_none; | 61 | 60.1k | } |
Unexecuted instantiation: msr.c:is_x86_system_segment Unexecuted instantiation: dm.c:is_x86_system_segment Unexecuted instantiation: asid.c:is_x86_system_segment Unexecuted instantiation: probe.c:is_x86_system_segment Unexecuted instantiation: delivery.c:is_x86_system_segment Unexecuted instantiation: default.c:is_x86_system_segment Unexecuted instantiation: x2apic.c:is_x86_system_segment Unexecuted instantiation: bigsmp.c:is_x86_system_segment Unexecuted instantiation: main.c:is_x86_system_segment Unexecuted instantiation: generic.c:is_x86_system_segment Unexecuted instantiation: vmce.c:is_x86_system_segment Unexecuted instantiation: util.c:is_x86_system_segment Unexecuted instantiation: non-fatal.c:is_x86_system_segment Unexecuted instantiation: mce_intel.c:is_x86_system_segment Unexecuted instantiation: mce-apei.c:is_x86_system_segment Unexecuted instantiation: mce.c:is_x86_system_segment Unexecuted instantiation: mctelem.c:is_x86_system_segment Unexecuted instantiation: barrier.c:is_x86_system_segment Unexecuted instantiation: mcaction.c:is_x86_system_segment Unexecuted instantiation: mce_amd.c:is_x86_system_segment Unexecuted instantiation: amd_nonfatal.c:is_x86_system_segment Unexecuted instantiation: vpmu_intel.c:is_x86_system_segment Unexecuted instantiation: vpmu_amd.c:is_x86_system_segment Unexecuted instantiation: vpmu.c:is_x86_system_segment Unexecuted instantiation: mwait-idle.c:is_x86_system_segment Unexecuted instantiation: intel_cacheinfo.c:is_x86_system_segment Unexecuted instantiation: intel.c:is_x86_system_segment Unexecuted instantiation: common.c:is_x86_system_segment Unexecuted instantiation: centaur.c:is_x86_system_segment Unexecuted instantiation: amd.c:is_x86_system_segment Unexecuted instantiation: powernow.c:is_x86_system_segment Unexecuted instantiation: cpuidle_menu.c:is_x86_system_segment Unexecuted instantiation: cpu_idle.c:is_x86_system_segment Unexecuted instantiation: suspend.c:is_x86_system_segment Unexecuted instantiation: power.c:is_x86_system_segment Unexecuted instantiation: lib.c:is_x86_system_segment Unexecuted instantiation: xstate.c:is_x86_system_segment Unexecuted instantiation: hpet.c:is_x86_system_segment Unexecuted instantiation: tboot.c:is_x86_system_segment Unexecuted instantiation: x86_emulate.c:is_x86_system_segment Unexecuted instantiation: usercopy.c:is_x86_system_segment Unexecuted instantiation: traps.c:is_x86_system_segment Unexecuted instantiation: srat.c:is_x86_system_segment Unexecuted instantiation: smpboot.c:is_x86_system_segment Unexecuted instantiation: setup.c:is_x86_system_segment Unexecuted instantiation: psr.c:is_x86_system_segment Unexecuted instantiation: platform_hypercall.c:is_x86_system_segment Unexecuted instantiation: physdev.c:is_x86_system_segment Unexecuted instantiation: percpu.c:is_x86_system_segment Unexecuted instantiation: nmi.c:is_x86_system_segment Unexecuted instantiation: mpparse.c:is_x86_system_segment Unexecuted instantiation: mm.c:is_x86_system_segment Unexecuted instantiation: microcode.c:is_x86_system_segment Unexecuted instantiation: microcode_intel.c:is_x86_system_segment Unexecuted instantiation: microcode_amd.c:is_x86_system_segment Unexecuted instantiation: machine_kexec.c:is_x86_system_segment Unexecuted instantiation: ioport_emulate.c:is_x86_system_segment Unexecuted instantiation: io_apic.c:is_x86_system_segment Unexecuted instantiation: i8259.c:is_x86_system_segment Unexecuted instantiation: i387.c:is_x86_system_segment Unexecuted instantiation: hypercall.c:is_x86_system_segment Unexecuted instantiation: flushtlb.c:is_x86_system_segment Unexecuted instantiation: extable.c:is_x86_system_segment Unexecuted instantiation: e820.c:is_x86_system_segment Unexecuted instantiation: domain_page.c:is_x86_system_segment Unexecuted instantiation: delay.c:is_x86_system_segment Unexecuted instantiation: debug.c:is_x86_system_segment Unexecuted instantiation: crash.c:is_x86_system_segment Unexecuted instantiation: compat.c:is_x86_system_segment Unexecuted instantiation: cpuid.c:is_x86_system_segment Unexecuted instantiation: apic.c:is_x86_system_segment Unexecuted instantiation: xsm_core.c:is_x86_system_segment Unexecuted instantiation: vesa.c:is_x86_system_segment Unexecuted instantiation: vga.c:is_x86_system_segment Unexecuted instantiation: apei-io.c:is_x86_system_segment Unexecuted instantiation: apei-base.c:is_x86_system_segment Unexecuted instantiation: hest.c:is_x86_system_segment Unexecuted instantiation: erst.c:is_x86_system_segment Unexecuted instantiation: utglobal.c:is_x86_system_segment Unexecuted instantiation: tbutils.c:is_x86_system_segment Unexecuted instantiation: reboot.c:is_x86_system_segment Unexecuted instantiation: hwregs.c:is_x86_system_segment Unexecuted instantiation: pmstat.c:is_x86_system_segment Unexecuted instantiation: osl.c:is_x86_system_segment Unexecuted instantiation: numa.c:is_x86_system_segment Unexecuted instantiation: iommu_guest.c:is_x86_system_segment Unexecuted instantiation: iommu_cmd.c:is_x86_system_segment Unexecuted instantiation: iommu_intr.c:is_x86_system_segment Unexecuted instantiation: pci_amd_iommu.c:is_x86_system_segment Unexecuted instantiation: iommu_map.c:is_x86_system_segment Unexecuted instantiation: iommu_init.c:is_x86_system_segment Unexecuted instantiation: ats.c:is_x86_system_segment Unexecuted instantiation: vtd.c:is_x86_system_segment Unexecuted instantiation: quirks.c:is_x86_system_segment Unexecuted instantiation: intremap.c:is_x86_system_segment Unexecuted instantiation: qinval.c:is_x86_system_segment Unexecuted instantiation: utils.c:is_x86_system_segment Unexecuted instantiation: dmar.c:is_x86_system_segment Unexecuted instantiation: io.c:is_x86_system_segment Unexecuted instantiation: iommu.c:is_x86_system_segment Unexecuted instantiation: msix.c:is_x86_system_segment Unexecuted instantiation: msi.c:is_x86_system_segment Unexecuted instantiation: header.c:is_x86_system_segment Unexecuted instantiation: vpci.c:is_x86_system_segment Unexecuted instantiation: pci.c:is_x86_system_segment Unexecuted instantiation: utility.c:is_x86_system_segment Unexecuted instantiation: cpufreq_misc_governors.c:is_x86_system_segment Unexecuted instantiation: cpufreq_ondemand.c:is_x86_system_segment Unexecuted instantiation: cpufreq.c:is_x86_system_segment Unexecuted instantiation: serial.c:is_x86_system_segment Unexecuted instantiation: ehci-dbgp.c:is_x86_system_segment Unexecuted instantiation: ns16550.c:is_x86_system_segment Unexecuted instantiation: console.c:is_x86_system_segment Unexecuted instantiation: libelf-loader.c:is_x86_system_segment Unexecuted instantiation: llvm.c:is_x86_system_segment Unexecuted instantiation: tmem_control.c:is_x86_system_segment Unexecuted instantiation: tmem_xen.c:is_x86_system_segment Unexecuted instantiation: tmem.c:is_x86_system_segment Unexecuted instantiation: xmalloc_tlsf.c:is_x86_system_segment Unexecuted instantiation: xenoprof.c:is_x86_system_segment Unexecuted instantiation: wait.c:is_x86_system_segment Unexecuted instantiation: vsprintf.c:is_x86_system_segment Unexecuted instantiation: vmap.c:is_x86_system_segment Unexecuted instantiation: vm_event.c:is_x86_system_segment Unexecuted instantiation: virtual_region.c:is_x86_system_segment Unexecuted instantiation: trace.c:is_x86_system_segment Unexecuted instantiation: timer.c:is_x86_system_segment Unexecuted instantiation: time.c:is_x86_system_segment Unexecuted instantiation: tasklet.c:is_x86_system_segment Unexecuted instantiation: sysctl.c:is_x86_system_segment Unexecuted instantiation: symbols.c:is_x86_system_segment Unexecuted instantiation: stop_machine.c:is_x86_system_segment Unexecuted instantiation: spinlock.c:is_x86_system_segment Unexecuted instantiation: smp.c:is_x86_system_segment Unexecuted instantiation: softirq.c:is_x86_system_segment Unexecuted instantiation: shutdown.c:is_x86_system_segment Unexecuted instantiation: schedule.c:is_x86_system_segment Unexecuted instantiation: sched_null.c:is_x86_system_segment Unexecuted instantiation: sched_rt.c:is_x86_system_segment Unexecuted instantiation: sched_credit2.c:is_x86_system_segment Unexecuted instantiation: sched_credit.c:is_x86_system_segment Unexecuted instantiation: sched_arinc653.c:is_x86_system_segment Unexecuted instantiation: rwlock.c:is_x86_system_segment Unexecuted instantiation: rcupdate.c:is_x86_system_segment Unexecuted instantiation: radix-tree.c:is_x86_system_segment Unexecuted instantiation: rangeset.c:is_x86_system_segment Unexecuted instantiation: random.c:is_x86_system_segment Unexecuted instantiation: preempt.c:is_x86_system_segment Unexecuted instantiation: pdx.c:is_x86_system_segment Unexecuted instantiation: page_alloc.c:is_x86_system_segment Unexecuted instantiation: notifier.c:is_x86_system_segment Unexecuted instantiation: multicall.c:is_x86_system_segment Unexecuted instantiation: monitor.c:is_x86_system_segment Unexecuted instantiation: memory.c:is_x86_system_segment Unexecuted instantiation: mem_access.c:is_x86_system_segment Unexecuted instantiation: kimage.c:is_x86_system_segment Unexecuted instantiation: kexec.c:is_x86_system_segment Unexecuted instantiation: keyhandler.c:is_x86_system_segment Unexecuted instantiation: kernel.c:is_x86_system_segment Unexecuted instantiation: irq.c:is_x86_system_segment Unexecuted instantiation: guestcopy.c:is_x86_system_segment Unexecuted instantiation: grant_table.c:is_x86_system_segment Unexecuted instantiation: event_fifo.c:is_x86_system_segment Unexecuted instantiation: event_channel.c:is_x86_system_segment Unexecuted instantiation: event_2l.c:is_x86_system_segment Unexecuted instantiation: domain.c:is_x86_system_segment Unexecuted instantiation: domctl.c:is_x86_system_segment Unexecuted instantiation: cpupool.c:is_x86_system_segment Unexecuted instantiation: cpu.c:is_x86_system_segment Unexecuted instantiation: core_parking.c:is_x86_system_segment |
62 | | |
63 | | /* |
64 | | * x86 event types. This enumeration is valid for: |
65 | | * Intel VMX: {VM_ENTRY,VM_EXIT,IDT_VECTORING}_INTR_INFO[10:8] |
66 | | * AMD SVM: eventinj[10:8] and exitintinfo[10:8] (types 0-4 only) |
67 | | */ |
68 | | enum x86_event_type { |
69 | | X86_EVENTTYPE_EXT_INTR, /* External interrupt */ |
70 | | X86_EVENTTYPE_NMI = 2, /* NMI */ |
71 | | X86_EVENTTYPE_HW_EXCEPTION, /* Hardware exception */ |
72 | | X86_EVENTTYPE_SW_INTERRUPT, /* Software interrupt (CD nn) */ |
73 | | X86_EVENTTYPE_PRI_SW_EXCEPTION, /* ICEBP (F1) */ |
74 | | X86_EVENTTYPE_SW_EXCEPTION, /* INT3 (CC), INTO (CE) */ |
75 | | }; |
76 | 195k | #define X86_EVENT_NO_EC (-1) /* No error code. */ |
77 | | |
78 | | struct x86_event { |
79 | | int16_t vector; |
80 | | uint8_t type; /* X86_EVENTTYPE_* */ |
81 | | uint8_t insn_len; /* Instruction length */ |
82 | | int32_t error_code; /* X86_EVENT_NO_EC if n/a */ |
83 | | unsigned long cr2; /* Only for TRAP_page_fault h/w exception */ |
84 | | }; |
85 | | |
86 | | /* |
87 | | * Full state of a segment register (visible and hidden portions). |
88 | | * Chosen to match the format of an AMD SVM VMCB. |
89 | | */ |
90 | | struct segment_register { |
91 | | uint16_t sel; |
92 | | union { |
93 | | uint16_t attr; |
94 | | struct { |
95 | | uint16_t type:4; |
96 | | uint16_t s: 1; |
97 | | uint16_t dpl: 2; |
98 | | uint16_t p: 1; |
99 | | uint16_t avl: 1; |
100 | | uint16_t l: 1; |
101 | | uint16_t db: 1; |
102 | | uint16_t g: 1; |
103 | | uint16_t pad: 4; |
104 | | }; |
105 | | }; |
106 | | uint32_t limit; |
107 | | uint64_t base; |
108 | | }; |
109 | | |
110 | | struct x86_emul_fpu_aux { |
111 | | unsigned long ip, dp; |
112 | | uint16_t cs, ds; |
113 | | unsigned int op:11; |
114 | | unsigned int dval:1; |
115 | | }; |
116 | | |
117 | | /* |
118 | | * Return codes from state-accessor functions and from x86_emulate(). |
119 | | */ |
120 | | /* Completed successfully. State modified appropriately. */ |
121 | 1.56M | #define X86EMUL_OKAY 0 |
122 | | /* Unhandleable access or emulation. No state modified. */ |
123 | 122k | #define X86EMUL_UNHANDLEABLE 1 |
124 | | /* Exception raised and requires delivery. */ |
125 | 64.1k | #define X86EMUL_EXCEPTION 2 |
126 | | /* Retry the emulation for some reason. No state modified. */ |
127 | 180k | #define X86EMUL_RETRY 3 |
128 | | /* |
129 | | * Operation fully done by one of the hooks: |
130 | | * - validate(): operation completed (except common insn retire logic) |
131 | | * - read_segment(x86_seg_tr, ...): bypass I/O bitmap access |
132 | | * - read_io() / write_io(): bypass GPR update (non-string insns only) |
133 | | * Undefined behavior when used anywhere else. |
134 | | */ |
135 | 120k | #define X86EMUL_DONE 4 |
136 | | /* |
137 | | * Current instruction is not implemented by the emulator. |
138 | | * This value should only be returned by the core emulator when a valid |
139 | | * opcode is found but the execution logic for that instruction is missing. |
140 | | * It should NOT be returned by any of the x86_emulate_ops callbacks. |
141 | | */ |
142 | 0 | #define X86EMUL_UNIMPLEMENTED 5 |
143 | | /* |
144 | | * The current instruction's opcode is not valid. |
145 | | * If this error code is returned by a function, an #UD trap should be |
146 | | * raised by the final consumer of it. |
147 | | * |
148 | | * TODO: For the moment X86EMUL_UNRECOGNIZED and X86EMUL_UNIMPLEMENTED |
149 | | * can be used interchangeably therefore raising an #UD trap is not |
150 | | * strictly expected for now. |
151 | | */ |
152 | 0 | #define X86EMUL_UNRECOGNIZED X86EMUL_UNIMPLEMENTED |
153 | | |
154 | | /* FPU sub-types which may be requested via ->get_fpu(). */ |
155 | | enum x86_emulate_fpu_type { |
156 | | X86EMUL_FPU_fpu, /* Standard FPU coprocessor instruction set */ |
157 | | X86EMUL_FPU_wait, /* WAIT/FWAIT instruction */ |
158 | | X86EMUL_FPU_mmx, /* MMX instruction set (%mm0-%mm7) */ |
159 | | X86EMUL_FPU_xmm, /* SSE instruction set (%xmm0-%xmm7/15) */ |
160 | | X86EMUL_FPU_ymm, /* AVX/XOP instruction set (%ymm0-%ymm7/15) */ |
161 | | /* This sentinel will never be passed to ->get_fpu(). */ |
162 | | X86EMUL_FPU_none |
163 | | }; |
164 | | |
165 | | struct cpuid_leaf |
166 | | { |
167 | | uint32_t a, b, c, d; |
168 | | }; |
169 | | |
170 | | struct x86_emulate_state; |
171 | | |
172 | | /* |
173 | | * These operations represent the instruction emulator's interface to memory, |
174 | | * I/O ports, privileged state... pretty much everything other than GPRs. |
175 | | * |
176 | | * NOTES: |
177 | | * 1. If the access fails (cannot emulate, or a standard access faults) then |
178 | | * it is up to the memop to propagate the fault to the guest VM via |
179 | | * some out-of-band mechanism, unknown to the emulator. The memop signals |
180 | | * failure by returning X86EMUL_EXCEPTION to the emulator, which will |
181 | | * then immediately bail. |
182 | | * 2. The emulator cannot handle 64-bit mode emulation on an x86/32 system. |
183 | | */ |
184 | | struct x86_emulate_ops |
185 | | { |
186 | | /* |
187 | | * All functions: |
188 | | * @ctxt: [IN ] Emulation context info as passed to the emulator. |
189 | | * All memory-access functions: |
190 | | * @seg: [IN ] Segment being dereferenced (specified as x86_seg_??). |
191 | | * @offset:[IN ] Offset within segment. |
192 | | * @p_data:[IN ] Pointer to i/o data buffer (length is @bytes) |
193 | | * Read functions: |
194 | | * @val: [OUT] Value read, zero-extended to 'ulong'. |
195 | | * Write functions: |
196 | | * @val: [IN ] Value to write (low-order bytes used as req'd). |
197 | | * Variable-length access functions: |
198 | | * @bytes: [IN ] Number of bytes to read or write. Valid access sizes are |
199 | | * 1, 2, 4 and 8 (x86/64 only) bytes, unless otherwise |
200 | | * stated. |
201 | | */ |
202 | | |
203 | | /* |
204 | | * read: Emulate a memory read. |
205 | | * @bytes: Access length (0 < @bytes < 4096). |
206 | | */ |
207 | | int (*read)( |
208 | | enum x86_segment seg, |
209 | | unsigned long offset, |
210 | | void *p_data, |
211 | | unsigned int bytes, |
212 | | struct x86_emulate_ctxt *ctxt); |
213 | | |
214 | | /* |
215 | | * insn_fetch: Emulate fetch from instruction byte stream. |
216 | | * Except for @bytes, all parameters are the same as for 'read'. |
217 | | * @bytes: Access length (0 <= @bytes < 16, with zero meaning |
218 | | * "validate address only"). |
219 | | * @seg is always x86_seg_cs. |
220 | | */ |
221 | | int (*insn_fetch)( |
222 | | enum x86_segment seg, |
223 | | unsigned long offset, |
224 | | void *p_data, |
225 | | unsigned int bytes, |
226 | | struct x86_emulate_ctxt *ctxt); |
227 | | |
228 | | /* |
229 | | * write: Emulate a memory write. |
230 | | * @bytes: Access length (0 < @bytes < 4096). |
231 | | */ |
232 | | int (*write)( |
233 | | enum x86_segment seg, |
234 | | unsigned long offset, |
235 | | void *p_data, |
236 | | unsigned int bytes, |
237 | | struct x86_emulate_ctxt *ctxt); |
238 | | |
239 | | /* |
240 | | * cmpxchg: Emulate an atomic (LOCKed) CMPXCHG operation. |
241 | | * @p_old: [IN ] Pointer to value expected to be current at @addr. |
242 | | * @p_new: [IN ] Pointer to value to write to @addr. |
243 | | * @bytes: [IN ] Operation size (up to 8 (x86/32) or 16 (x86/64) bytes). |
244 | | */ |
245 | | int (*cmpxchg)( |
246 | | enum x86_segment seg, |
247 | | unsigned long offset, |
248 | | void *p_old, |
249 | | void *p_new, |
250 | | unsigned int bytes, |
251 | | struct x86_emulate_ctxt *ctxt); |
252 | | |
253 | | /* |
254 | | * validate: Post-decode, pre-emulate hook to allow caller controlled |
255 | | * filtering. |
256 | | */ |
257 | | int (*validate)( |
258 | | const struct x86_emulate_state *state, |
259 | | struct x86_emulate_ctxt *ctxt); |
260 | | |
261 | | /* |
262 | | * rep_ins: Emulate INS: <src_port> -> <dst_seg:dst_offset>. |
263 | | * @bytes_per_rep: [IN ] Bytes transferred per repetition. |
264 | | * @reps: [IN ] Maximum repetitions to be emulated. |
265 | | * [OUT] Number of repetitions actually emulated. |
266 | | */ |
267 | | int (*rep_ins)( |
268 | | uint16_t src_port, |
269 | | enum x86_segment dst_seg, |
270 | | unsigned long dst_offset, |
271 | | unsigned int bytes_per_rep, |
272 | | unsigned long *reps, |
273 | | struct x86_emulate_ctxt *ctxt); |
274 | | |
275 | | /* |
276 | | * rep_outs: Emulate OUTS: <src_seg:src_offset> -> <dst_port>. |
277 | | * @bytes_per_rep: [IN ] Bytes transferred per repetition. |
278 | | * @reps: [IN ] Maximum repetitions to be emulated. |
279 | | * [OUT] Number of repetitions actually emulated. |
280 | | */ |
281 | | int (*rep_outs)( |
282 | | enum x86_segment src_seg, |
283 | | unsigned long src_offset, |
284 | | uint16_t dst_port, |
285 | | unsigned int bytes_per_rep, |
286 | | unsigned long *reps, |
287 | | struct x86_emulate_ctxt *ctxt); |
288 | | |
289 | | /* |
290 | | * rep_movs: Emulate MOVS: <src_seg:src_offset> -> <dst_seg:dst_offset>. |
291 | | * @bytes_per_rep: [IN ] Bytes transferred per repetition. |
292 | | * @reps: [IN ] Maximum repetitions to be emulated. |
293 | | * [OUT] Number of repetitions actually emulated. |
294 | | */ |
295 | | int (*rep_movs)( |
296 | | enum x86_segment src_seg, |
297 | | unsigned long src_offset, |
298 | | enum x86_segment dst_seg, |
299 | | unsigned long dst_offset, |
300 | | unsigned int bytes_per_rep, |
301 | | unsigned long *reps, |
302 | | struct x86_emulate_ctxt *ctxt); |
303 | | |
304 | | /* |
305 | | * rep_stos: Emulate STOS: <*p_data> -> <seg:offset>. |
306 | | * @bytes_per_rep: [IN ] Bytes transferred per repetition. |
307 | | * @reps: [IN ] Maximum repetitions to be emulated. |
308 | | * [OUT] Number of repetitions actually emulated. |
309 | | */ |
310 | | int (*rep_stos)( |
311 | | void *p_data, |
312 | | enum x86_segment seg, |
313 | | unsigned long offset, |
314 | | unsigned int bytes_per_rep, |
315 | | unsigned long *reps, |
316 | | struct x86_emulate_ctxt *ctxt); |
317 | | |
318 | | /* |
319 | | * read_segment: Emulate a read of full context of a segment register. |
320 | | * @reg: [OUT] Contents of segment register (visible and hidden state). |
321 | | */ |
322 | | int (*read_segment)( |
323 | | enum x86_segment seg, |
324 | | struct segment_register *reg, |
325 | | struct x86_emulate_ctxt *ctxt); |
326 | | |
327 | | /* |
328 | | * write_segment: Emulate a read of full context of a segment register. |
329 | | * @reg: [OUT] Contents of segment register (visible and hidden state). |
330 | | */ |
331 | | int (*write_segment)( |
332 | | enum x86_segment seg, |
333 | | const struct segment_register *reg, |
334 | | struct x86_emulate_ctxt *ctxt); |
335 | | |
336 | | /* |
337 | | * read_io: Read from I/O port(s). |
338 | | * @port: [IN ] Base port for access. |
339 | | */ |
340 | | int (*read_io)( |
341 | | unsigned int port, |
342 | | unsigned int bytes, |
343 | | unsigned long *val, |
344 | | struct x86_emulate_ctxt *ctxt); |
345 | | |
346 | | /* |
347 | | * write_io: Write to I/O port(s). |
348 | | * @port: [IN ] Base port for access. |
349 | | */ |
350 | | int (*write_io)( |
351 | | unsigned int port, |
352 | | unsigned int bytes, |
353 | | unsigned long val, |
354 | | struct x86_emulate_ctxt *ctxt); |
355 | | |
356 | | /* |
357 | | * read_cr: Read from control register. |
358 | | * @reg: [IN ] Register to read (0-15). |
359 | | */ |
360 | | int (*read_cr)( |
361 | | unsigned int reg, |
362 | | unsigned long *val, |
363 | | struct x86_emulate_ctxt *ctxt); |
364 | | |
365 | | /* |
366 | | * write_cr: Write to control register. |
367 | | * @reg: [IN ] Register to write (0-15). |
368 | | */ |
369 | | int (*write_cr)( |
370 | | unsigned int reg, |
371 | | unsigned long val, |
372 | | struct x86_emulate_ctxt *ctxt); |
373 | | |
374 | | /* |
375 | | * read_dr: Read from debug register. |
376 | | * @reg: [IN ] Register to read (0-15). |
377 | | */ |
378 | | int (*read_dr)( |
379 | | unsigned int reg, |
380 | | unsigned long *val, |
381 | | struct x86_emulate_ctxt *ctxt); |
382 | | |
383 | | /* |
384 | | * write_dr: Write to debug register. |
385 | | * @reg: [IN ] Register to write (0-15). |
386 | | */ |
387 | | int (*write_dr)( |
388 | | unsigned int reg, |
389 | | unsigned long val, |
390 | | struct x86_emulate_ctxt *ctxt); |
391 | | |
392 | | /* |
393 | | * read_msr: Read from model-specific register. |
394 | | * @reg: [IN ] Register to read. |
395 | | */ |
396 | | int (*read_msr)( |
397 | | unsigned int reg, |
398 | | uint64_t *val, |
399 | | struct x86_emulate_ctxt *ctxt); |
400 | | |
401 | | /* |
402 | | * write_dr: Write to model-specific register. |
403 | | * @reg: [IN ] Register to write. |
404 | | */ |
405 | | int (*write_msr)( |
406 | | unsigned int reg, |
407 | | uint64_t val, |
408 | | struct x86_emulate_ctxt *ctxt); |
409 | | |
410 | | /* wbinvd: Write-back and invalidate cache contents. */ |
411 | | int (*wbinvd)( |
412 | | struct x86_emulate_ctxt *ctxt); |
413 | | |
414 | | /* cpuid: Emulate CPUID via given set of EAX-EDX inputs/outputs. */ |
415 | | int (*cpuid)( |
416 | | uint32_t leaf, |
417 | | uint32_t subleaf, |
418 | | struct cpuid_leaf *res, |
419 | | struct x86_emulate_ctxt *ctxt); |
420 | | |
421 | | /* |
422 | | * get_fpu: Load emulated environment's FPU state onto processor. |
423 | | * @exn_callback: On any FPU or SIMD exception, pass control to |
424 | | * (*exception_callback)(exception_callback_arg, regs). |
425 | | */ |
426 | | int (*get_fpu)( |
427 | | void (*exception_callback)(void *, struct cpu_user_regs *), |
428 | | void *exception_callback_arg, |
429 | | enum x86_emulate_fpu_type type, |
430 | | struct x86_emulate_ctxt *ctxt); |
431 | | |
432 | | /* |
433 | | * put_fpu: Relinquish the FPU. Unhook from FPU/SIMD exception handlers. |
434 | | * The handler, if installed, must be prepared to get called without |
435 | | * the get_fpu one having got called before! |
436 | | * @backout: Undo updates to the specified register file (can, besides |
437 | | * X86EMUL_FPU_none, only be X86EMUL_FPU_fpu at present); |
438 | | * @aux: Packaged up FIP/FDP/FOP values to load into FPU. |
439 | | */ |
440 | | void (*put_fpu)( |
441 | | struct x86_emulate_ctxt *ctxt, |
442 | | enum x86_emulate_fpu_type backout, |
443 | | const struct x86_emul_fpu_aux *aux); |
444 | | |
445 | | /* invlpg: Invalidate paging structures which map addressed byte. */ |
446 | | int (*invlpg)( |
447 | | enum x86_segment seg, |
448 | | unsigned long offset, |
449 | | struct x86_emulate_ctxt *ctxt); |
450 | | |
451 | | /* vmfunc: Emulate VMFUNC via given set of EAX ECX inputs */ |
452 | | int (*vmfunc)( |
453 | | struct x86_emulate_ctxt *ctxt); |
454 | | }; |
455 | | |
456 | | struct cpu_user_regs; |
457 | | |
458 | | struct x86_emulate_ctxt |
459 | | { |
460 | | /* |
461 | | * Input-only state: |
462 | | */ |
463 | | |
464 | | /* CPU vendor (X86_VENDOR_UNKNOWN for "don't care") */ |
465 | | unsigned char vendor; |
466 | | |
467 | | /* Set this if writes may have side effects. */ |
468 | | bool force_writeback; |
469 | | |
470 | | /* Caller data that can be used by x86_emulate_ops' routines. */ |
471 | | void *data; |
472 | | |
473 | | /* |
474 | | * Input/output state: |
475 | | */ |
476 | | |
477 | | /* Register state before/after emulation. */ |
478 | | struct cpu_user_regs *regs; |
479 | | |
480 | | /* Default address size in current execution mode (16, 32, or 64). */ |
481 | | unsigned int addr_size; |
482 | | |
483 | | /* Stack pointer width in bits (16, 32 or 64). */ |
484 | | unsigned int sp_size; |
485 | | |
486 | | /* Long mode active? */ |
487 | | bool lma; |
488 | | |
489 | | /* |
490 | | * Output-only state: |
491 | | */ |
492 | | |
493 | | /* Canonical opcode (see below) (valid only on X86EMUL_OKAY). */ |
494 | | unsigned int opcode; |
495 | | |
496 | | /* Retirement state, set by the emulator (valid only on X86EMUL_OKAY). */ |
497 | | union { |
498 | | uint8_t raw; |
499 | | struct { |
500 | | bool hlt:1; /* Instruction HLTed. */ |
501 | | bool mov_ss:1; /* Instruction sets MOV-SS irq shadow. */ |
502 | | bool sti:1; /* Instruction sets STI irq shadow. */ |
503 | | bool unblock_nmi:1; /* Instruction clears NMI blocking. */ |
504 | | bool singlestep:1; /* Singlestepping was active. */ |
505 | | }; |
506 | | } retire; |
507 | | |
508 | | bool event_pending; |
509 | | struct x86_event event; |
510 | | }; |
511 | | |
512 | | /* |
513 | | * Encode opcode extensions in the following way: |
514 | | * 0x0xxxx for one byte opcodes |
515 | | * 0x0fxxxx for 0f-prefixed opcodes (or their VEX/EVEX equivalents) |
516 | | * 0x0f38xxxx for 0f38-prefixed opcodes (or their VEX/EVEX equivalents) |
517 | | * 0x0f3axxxx for 0f3a-prefixed opcodes (or their VEX/EVEX equivalents) |
518 | | * 0x8f08xxxx for 8f/8-prefixed XOP opcodes |
519 | | * 0x8f09xxxx for 8f/9-prefixed XOP opcodes |
520 | | * 0x8f0axxxx for 8f/a-prefixed XOP opcodes |
521 | | * The low byte represents the base opcode withing the resepctive space, |
522 | | * and some of bits 8..15 are used for encoding further information (see |
523 | | * below). |
524 | | * Hence no separate #define-s get added. |
525 | | */ |
526 | | #define X86EMUL_OPC_EXT_MASK 0xffff0000 |
527 | 67.1k | #define X86EMUL_OPC(ext, byte) ((uint8_t)(byte) | \ |
528 | 67.1k | MASK_INSR((ext), X86EMUL_OPC_EXT_MASK)) |
529 | | /* |
530 | | * This includes the 66, F3, and F2 prefixes (see also below) |
531 | | * as well as VEX/EVEX: |
532 | | */ |
533 | 5.92k | #define X86EMUL_OPC_MASK (0x000000ff | X86EMUL_OPC_PFX_MASK | \ |
534 | 5.92k | X86EMUL_OPC_ENCODING_MASK) |
535 | | |
536 | | /* |
537 | | * Note that prefixes 66, F2, and F3 get encoded only when semantically |
538 | | * meaningful, to reduce the complexity of interpreting this representation. |
539 | | */ |
540 | 7.02k | #define X86EMUL_OPC_PFX_MASK 0x00000300 |
541 | 1.09k | # define X86EMUL_OPC_66(ext, byte) (X86EMUL_OPC(ext, byte) | 0x00000100) |
542 | 0 | # define X86EMUL_OPC_F3(ext, byte) (X86EMUL_OPC(ext, byte) | 0x00000200) |
543 | 0 | # define X86EMUL_OPC_F2(ext, byte) (X86EMUL_OPC(ext, byte) | 0x00000300) |
544 | | |
545 | 5.92k | #define X86EMUL_OPC_ENCODING_MASK 0x00003000 |
546 | | #define X86EMUL_OPC_LEGACY_ 0x00000000 |
547 | 0 | #define X86EMUL_OPC_VEX_ 0x00001000 |
548 | | # define X86EMUL_OPC_VEX(ext, byte) \ |
549 | 0 | (X86EMUL_OPC(ext, byte) | X86EMUL_OPC_VEX_) |
550 | | # define X86EMUL_OPC_VEX_66(ext, byte) \ |
551 | 0 | (X86EMUL_OPC_66(ext, byte) | X86EMUL_OPC_VEX_) |
552 | | # define X86EMUL_OPC_VEX_F3(ext, byte) \ |
553 | 0 | (X86EMUL_OPC_F3(ext, byte) | X86EMUL_OPC_VEX_) |
554 | | # define X86EMUL_OPC_VEX_F2(ext, byte) \ |
555 | 0 | (X86EMUL_OPC_F2(ext, byte) | X86EMUL_OPC_VEX_) |
556 | 0 | #define X86EMUL_OPC_EVEX_ 0x00002000 |
557 | | # define X86EMUL_OPC_EVEX(ext, byte) \ |
558 | | (X86EMUL_OPC(ext, byte) | X86EMUL_OPC_EVEX_) |
559 | | # define X86EMUL_OPC_EVEX_66(ext, byte) \ |
560 | | (X86EMUL_OPC_66(ext, byte) | X86EMUL_OPC_EVEX_) |
561 | | # define X86EMUL_OPC_EVEX_F3(ext, byte) \ |
562 | | (X86EMUL_OPC_F3(ext, byte) | X86EMUL_OPC_EVEX_) |
563 | | # define X86EMUL_OPC_EVEX_F2(ext, byte) \ |
564 | | (X86EMUL_OPC_F2(ext, byte) | X86EMUL_OPC_EVEX_) |
565 | | |
566 | 0 | #define X86EMUL_OPC_XOP(ext, byte) X86EMUL_OPC(0x8f##ext, byte) |
567 | | #define X86EMUL_OPC_XOP_66(ext, byte) X86EMUL_OPC_66(0x8f##ext, byte) |
568 | | #define X86EMUL_OPC_XOP_F3(ext, byte) X86EMUL_OPC_F3(0x8f##ext, byte) |
569 | | #define X86EMUL_OPC_XOP_F2(ext, byte) X86EMUL_OPC_F2(0x8f##ext, byte) |
570 | | |
571 | | struct x86_emulate_stub { |
572 | | union { |
573 | | void (*func)(void); |
574 | | uintptr_t addr; |
575 | | }; |
576 | | #ifdef __XEN__ |
577 | | void *ptr; |
578 | | #else |
579 | | /* Room for one insn and a (single byte) RET. */ |
580 | | uint8_t buf[MAX_INST_LEN + 1]; |
581 | | #endif |
582 | | }; |
583 | | |
584 | | /* |
585 | | * x86_emulate: Emulate an instruction. |
586 | | * Returns X86EMUL_* constants. |
587 | | */ |
588 | | int |
589 | | x86_emulate( |
590 | | struct x86_emulate_ctxt *ctxt, |
591 | | const struct x86_emulate_ops *ops); |
592 | | |
593 | | #ifndef NDEBUG |
594 | | /* |
595 | | * In debug builds, wrap x86_emulate() with some assertions about its expected |
596 | | * behaviour. |
597 | | */ |
598 | | int x86_emulate_wrapper( |
599 | | struct x86_emulate_ctxt *ctxt, |
600 | | const struct x86_emulate_ops *ops); |
601 | 60.1k | #define x86_emulate x86_emulate_wrapper |
602 | | #endif |
603 | | |
604 | | /* |
605 | | * Given the 'reg' portion of a ModRM byte, and a register block, return a |
606 | | * pointer into the block that addresses the relevant register. |
607 | | * @highbyte_regs specifies whether to decode AH,CH,DH,BH. |
608 | | */ |
609 | | void * |
610 | | decode_register( |
611 | | uint8_t modrm_reg, struct cpu_user_regs *regs, int highbyte_regs); |
612 | | |
613 | | /* Unhandleable read, write or instruction fetch */ |
614 | | int |
615 | | x86emul_unhandleable_rw( |
616 | | enum x86_segment seg, |
617 | | unsigned long offset, |
618 | | void *p_data, |
619 | | unsigned int bytes, |
620 | | struct x86_emulate_ctxt *ctxt); |
621 | | |
622 | | #ifdef __XEN__ |
623 | | |
624 | | struct x86_emulate_state * |
625 | | x86_decode_insn( |
626 | | struct x86_emulate_ctxt *ctxt, |
627 | | int (*insn_fetch)( |
628 | | enum x86_segment seg, unsigned long offset, |
629 | | void *p_data, unsigned int bytes, |
630 | | struct x86_emulate_ctxt *ctxt)); |
631 | | |
632 | | unsigned int |
633 | | x86_insn_opsize(const struct x86_emulate_state *state); |
634 | | int |
635 | | x86_insn_modrm(const struct x86_emulate_state *state, |
636 | | unsigned int *rm, unsigned int *reg); |
637 | | unsigned long |
638 | | x86_insn_operand_ea(const struct x86_emulate_state *state, |
639 | | enum x86_segment *seg); |
640 | | unsigned long |
641 | | x86_insn_immediate(const struct x86_emulate_state *state, |
642 | | unsigned int nr); |
643 | | unsigned int |
644 | | x86_insn_length(const struct x86_emulate_state *state, |
645 | | const struct x86_emulate_ctxt *ctxt); |
646 | | bool |
647 | | x86_insn_is_mem_access(const struct x86_emulate_state *state, |
648 | | const struct x86_emulate_ctxt *ctxt); |
649 | | bool |
650 | | x86_insn_is_mem_write(const struct x86_emulate_state *state, |
651 | | const struct x86_emulate_ctxt *ctxt); |
652 | | bool |
653 | | x86_insn_is_portio(const struct x86_emulate_state *state, |
654 | | const struct x86_emulate_ctxt *ctxt); |
655 | | bool |
656 | | x86_insn_is_cr_access(const struct x86_emulate_state *state, |
657 | | const struct x86_emulate_ctxt *ctxt); |
658 | | |
659 | | #ifdef NDEBUG |
660 | | static inline void x86_emulate_free_state(struct x86_emulate_state *state) {} |
661 | | #else |
662 | | void x86_emulate_free_state(struct x86_emulate_state *state); |
663 | | #endif |
664 | | |
665 | | #endif |
666 | | |
667 | | static inline void x86_emul_hw_exception( |
668 | | unsigned int vector, int error_code, struct x86_emulate_ctxt *ctxt) |
669 | 0 | { |
670 | 0 | ASSERT(!ctxt->event_pending); |
671 | 0 |
|
672 | 0 | ctxt->event.vector = vector; |
673 | 0 | ctxt->event.type = X86_EVENTTYPE_HW_EXCEPTION; |
674 | 0 | ctxt->event.error_code = error_code; |
675 | 0 |
|
676 | 0 | ctxt->event_pending = true; |
677 | 0 | } Unexecuted instantiation: mmconfig-shared.c:x86_emul_hw_exception Unexecuted instantiation: mmconfig_64.c:x86_emul_hw_exception Unexecuted instantiation: cpu.c:x86_emul_hw_exception Unexecuted instantiation: cpupool.c:x86_emul_hw_exception Unexecuted instantiation: domctl.c:x86_emul_hw_exception Unexecuted instantiation: domain.c:x86_emul_hw_exception Unexecuted instantiation: event_2l.c:x86_emul_hw_exception Unexecuted instantiation: event_channel.c:x86_emul_hw_exception Unexecuted instantiation: event_fifo.c:x86_emul_hw_exception Unexecuted instantiation: grant_table.c:x86_emul_hw_exception Unexecuted instantiation: guestcopy.c:x86_emul_hw_exception Unexecuted instantiation: irq.c:x86_emul_hw_exception Unexecuted instantiation: kernel.c:x86_emul_hw_exception Unexecuted instantiation: keyhandler.c:x86_emul_hw_exception Unexecuted instantiation: kexec.c:x86_emul_hw_exception Unexecuted instantiation: kimage.c:x86_emul_hw_exception Unexecuted instantiation: mem_access.c:x86_emul_hw_exception Unexecuted instantiation: memory.c:x86_emul_hw_exception Unexecuted instantiation: monitor.c:x86_emul_hw_exception Unexecuted instantiation: multicall.c:x86_emul_hw_exception Unexecuted instantiation: notifier.c:x86_emul_hw_exception Unexecuted instantiation: page_alloc.c:x86_emul_hw_exception Unexecuted instantiation: pdx.c:x86_emul_hw_exception Unexecuted instantiation: preempt.c:x86_emul_hw_exception Unexecuted instantiation: random.c:x86_emul_hw_exception Unexecuted instantiation: rangeset.c:x86_emul_hw_exception Unexecuted instantiation: radix-tree.c:x86_emul_hw_exception Unexecuted instantiation: rcupdate.c:x86_emul_hw_exception Unexecuted instantiation: rwlock.c:x86_emul_hw_exception Unexecuted instantiation: sched_arinc653.c:x86_emul_hw_exception Unexecuted instantiation: sched_credit.c:x86_emul_hw_exception Unexecuted instantiation: sched_credit2.c:x86_emul_hw_exception Unexecuted instantiation: sched_rt.c:x86_emul_hw_exception Unexecuted instantiation: sched_null.c:x86_emul_hw_exception Unexecuted instantiation: schedule.c:x86_emul_hw_exception Unexecuted instantiation: shutdown.c:x86_emul_hw_exception Unexecuted instantiation: softirq.c:x86_emul_hw_exception Unexecuted instantiation: smp.c:x86_emul_hw_exception Unexecuted instantiation: spinlock.c:x86_emul_hw_exception Unexecuted instantiation: stop_machine.c:x86_emul_hw_exception Unexecuted instantiation: symbols.c:x86_emul_hw_exception Unexecuted instantiation: sysctl.c:x86_emul_hw_exception Unexecuted instantiation: tasklet.c:x86_emul_hw_exception Unexecuted instantiation: time.c:x86_emul_hw_exception Unexecuted instantiation: timer.c:x86_emul_hw_exception Unexecuted instantiation: trace.c:x86_emul_hw_exception Unexecuted instantiation: virtual_region.c:x86_emul_hw_exception Unexecuted instantiation: vm_event.c:x86_emul_hw_exception Unexecuted instantiation: vmap.c:x86_emul_hw_exception Unexecuted instantiation: vsprintf.c:x86_emul_hw_exception Unexecuted instantiation: wait.c:x86_emul_hw_exception Unexecuted instantiation: xenoprof.c:x86_emul_hw_exception Unexecuted instantiation: xmalloc_tlsf.c:x86_emul_hw_exception Unexecuted instantiation: tmem.c:x86_emul_hw_exception Unexecuted instantiation: tmem_xen.c:x86_emul_hw_exception Unexecuted instantiation: tmem_control.c:x86_emul_hw_exception Unexecuted instantiation: llvm.c:x86_emul_hw_exception Unexecuted instantiation: libelf-loader.c:x86_emul_hw_exception Unexecuted instantiation: console.c:x86_emul_hw_exception Unexecuted instantiation: ns16550.c:x86_emul_hw_exception Unexecuted instantiation: ehci-dbgp.c:x86_emul_hw_exception Unexecuted instantiation: serial.c:x86_emul_hw_exception Unexecuted instantiation: cpufreq.c:x86_emul_hw_exception Unexecuted instantiation: cpufreq_ondemand.c:x86_emul_hw_exception Unexecuted instantiation: cpufreq_misc_governors.c:x86_emul_hw_exception Unexecuted instantiation: utility.c:x86_emul_hw_exception Unexecuted instantiation: pci.c:x86_emul_hw_exception Unexecuted instantiation: vpci.c:x86_emul_hw_exception Unexecuted instantiation: header.c:x86_emul_hw_exception Unexecuted instantiation: msi.c:x86_emul_hw_exception Unexecuted instantiation: msix.c:x86_emul_hw_exception Unexecuted instantiation: iommu.c:x86_emul_hw_exception Unexecuted instantiation: io.c:x86_emul_hw_exception Unexecuted instantiation: dmar.c:x86_emul_hw_exception Unexecuted instantiation: utils.c:x86_emul_hw_exception Unexecuted instantiation: qinval.c:x86_emul_hw_exception Unexecuted instantiation: intremap.c:x86_emul_hw_exception Unexecuted instantiation: quirks.c:x86_emul_hw_exception Unexecuted instantiation: vtd.c:x86_emul_hw_exception Unexecuted instantiation: ats.c:x86_emul_hw_exception Unexecuted instantiation: iommu_init.c:x86_emul_hw_exception Unexecuted instantiation: iommu_map.c:x86_emul_hw_exception Unexecuted instantiation: pci_amd_iommu.c:x86_emul_hw_exception Unexecuted instantiation: iommu_intr.c:x86_emul_hw_exception Unexecuted instantiation: iommu_cmd.c:x86_emul_hw_exception Unexecuted instantiation: iommu_guest.c:x86_emul_hw_exception Unexecuted instantiation: numa.c:x86_emul_hw_exception Unexecuted instantiation: osl.c:x86_emul_hw_exception Unexecuted instantiation: pmstat.c:x86_emul_hw_exception Unexecuted instantiation: hwregs.c:x86_emul_hw_exception Unexecuted instantiation: reboot.c:x86_emul_hw_exception Unexecuted instantiation: tbutils.c:x86_emul_hw_exception Unexecuted instantiation: utglobal.c:x86_emul_hw_exception Unexecuted instantiation: erst.c:x86_emul_hw_exception Unexecuted instantiation: hest.c:x86_emul_hw_exception Unexecuted instantiation: apei-base.c:x86_emul_hw_exception Unexecuted instantiation: apei-io.c:x86_emul_hw_exception Unexecuted instantiation: vga.c:x86_emul_hw_exception Unexecuted instantiation: vesa.c:x86_emul_hw_exception Unexecuted instantiation: xsm_core.c:x86_emul_hw_exception Unexecuted instantiation: apic.c:x86_emul_hw_exception Unexecuted instantiation: cpuid.c:x86_emul_hw_exception Unexecuted instantiation: compat.c:x86_emul_hw_exception Unexecuted instantiation: crash.c:x86_emul_hw_exception Unexecuted instantiation: debug.c:x86_emul_hw_exception Unexecuted instantiation: delay.c:x86_emul_hw_exception Unexecuted instantiation: domain_page.c:x86_emul_hw_exception Unexecuted instantiation: e820.c:x86_emul_hw_exception Unexecuted instantiation: extable.c:x86_emul_hw_exception Unexecuted instantiation: flushtlb.c:x86_emul_hw_exception Unexecuted instantiation: hypercall.c:x86_emul_hw_exception Unexecuted instantiation: i387.c:x86_emul_hw_exception Unexecuted instantiation: i8259.c:x86_emul_hw_exception Unexecuted instantiation: io_apic.c:x86_emul_hw_exception Unexecuted instantiation: msr.c:x86_emul_hw_exception Unexecuted instantiation: ioport_emulate.c:x86_emul_hw_exception Unexecuted instantiation: machine_kexec.c:x86_emul_hw_exception Unexecuted instantiation: microcode_amd.c:x86_emul_hw_exception Unexecuted instantiation: microcode_intel.c:x86_emul_hw_exception Unexecuted instantiation: microcode.c:x86_emul_hw_exception Unexecuted instantiation: mm.c:x86_emul_hw_exception Unexecuted instantiation: mpparse.c:x86_emul_hw_exception Unexecuted instantiation: nmi.c:x86_emul_hw_exception Unexecuted instantiation: percpu.c:x86_emul_hw_exception Unexecuted instantiation: physdev.c:x86_emul_hw_exception Unexecuted instantiation: platform_hypercall.c:x86_emul_hw_exception Unexecuted instantiation: psr.c:x86_emul_hw_exception Unexecuted instantiation: setup.c:x86_emul_hw_exception Unexecuted instantiation: smpboot.c:x86_emul_hw_exception Unexecuted instantiation: srat.c:x86_emul_hw_exception Unexecuted instantiation: traps.c:x86_emul_hw_exception Unexecuted instantiation: usercopy.c:x86_emul_hw_exception Unexecuted instantiation: x86_emulate.c:x86_emul_hw_exception Unexecuted instantiation: tboot.c:x86_emul_hw_exception Unexecuted instantiation: hpet.c:x86_emul_hw_exception Unexecuted instantiation: xstate.c:x86_emul_hw_exception Unexecuted instantiation: lib.c:x86_emul_hw_exception Unexecuted instantiation: power.c:x86_emul_hw_exception Unexecuted instantiation: suspend.c:x86_emul_hw_exception Unexecuted instantiation: cpu_idle.c:x86_emul_hw_exception Unexecuted instantiation: cpuidle_menu.c:x86_emul_hw_exception Unexecuted instantiation: powernow.c:x86_emul_hw_exception Unexecuted instantiation: amd.c:x86_emul_hw_exception Unexecuted instantiation: centaur.c:x86_emul_hw_exception Unexecuted instantiation: common.c:x86_emul_hw_exception Unexecuted instantiation: intel.c:x86_emul_hw_exception Unexecuted instantiation: intel_cacheinfo.c:x86_emul_hw_exception Unexecuted instantiation: mwait-idle.c:x86_emul_hw_exception Unexecuted instantiation: vpmu.c:x86_emul_hw_exception Unexecuted instantiation: vpmu_amd.c:x86_emul_hw_exception Unexecuted instantiation: vpmu_intel.c:x86_emul_hw_exception Unexecuted instantiation: amd_nonfatal.c:x86_emul_hw_exception Unexecuted instantiation: mce_amd.c:x86_emul_hw_exception Unexecuted instantiation: mcaction.c:x86_emul_hw_exception Unexecuted instantiation: barrier.c:x86_emul_hw_exception Unexecuted instantiation: mctelem.c:x86_emul_hw_exception Unexecuted instantiation: mce.c:x86_emul_hw_exception Unexecuted instantiation: mce-apei.c:x86_emul_hw_exception Unexecuted instantiation: mce_intel.c:x86_emul_hw_exception Unexecuted instantiation: non-fatal.c:x86_emul_hw_exception Unexecuted instantiation: util.c:x86_emul_hw_exception Unexecuted instantiation: vmce.c:x86_emul_hw_exception Unexecuted instantiation: generic.c:x86_emul_hw_exception Unexecuted instantiation: main.c:x86_emul_hw_exception Unexecuted instantiation: bigsmp.c:x86_emul_hw_exception Unexecuted instantiation: x2apic.c:x86_emul_hw_exception Unexecuted instantiation: default.c:x86_emul_hw_exception Unexecuted instantiation: delivery.c:x86_emul_hw_exception Unexecuted instantiation: probe.c:x86_emul_hw_exception Unexecuted instantiation: asid.c:x86_emul_hw_exception Unexecuted instantiation: dm.c:x86_emul_hw_exception Unexecuted instantiation: emulate.c:x86_emul_hw_exception Unexecuted instantiation: hvm.c:x86_emul_hw_exception Unexecuted instantiation: i8254.c:x86_emul_hw_exception Unexecuted instantiation: intercept.c:x86_emul_hw_exception Unexecuted instantiation: ioreq.c:x86_emul_hw_exception Unexecuted instantiation: mtrr.c:x86_emul_hw_exception Unexecuted instantiation: nestedhvm.c:x86_emul_hw_exception Unexecuted instantiation: pmtimer.c:x86_emul_hw_exception Unexecuted instantiation: rtc.c:x86_emul_hw_exception Unexecuted instantiation: save.c:x86_emul_hw_exception Unexecuted instantiation: stdvga.c:x86_emul_hw_exception Unexecuted instantiation: vioapic.c:x86_emul_hw_exception Unexecuted instantiation: viridian.c:x86_emul_hw_exception Unexecuted instantiation: vlapic.c:x86_emul_hw_exception Unexecuted instantiation: vmsi.c:x86_emul_hw_exception Unexecuted instantiation: vpic.c:x86_emul_hw_exception Unexecuted instantiation: vpt.c:x86_emul_hw_exception Unexecuted instantiation: intr.c:x86_emul_hw_exception Unexecuted instantiation: nestedsvm.c:x86_emul_hw_exception Unexecuted instantiation: svm.c:x86_emul_hw_exception Unexecuted instantiation: svmdebug.c:x86_emul_hw_exception Unexecuted instantiation: vmcb.c:x86_emul_hw_exception Unexecuted instantiation: realmode.c:x86_emul_hw_exception Unexecuted instantiation: vmcs.c:x86_emul_hw_exception Unexecuted instantiation: vmx.c:x86_emul_hw_exception Unexecuted instantiation: vvmx.c:x86_emul_hw_exception Unexecuted instantiation: paging.c:x86_emul_hw_exception Unexecuted instantiation: p2m.c:x86_emul_hw_exception Unexecuted instantiation: p2m-pt.c:x86_emul_hw_exception Unexecuted instantiation: p2m-ept.c:x86_emul_hw_exception Unexecuted instantiation: p2m-pod.c:x86_emul_hw_exception Unexecuted instantiation: altp2m.c:x86_emul_hw_exception Unexecuted instantiation: guest_walk.c:x86_emul_hw_exception Unexecuted instantiation: mem_paging.c:x86_emul_hw_exception Unexecuted instantiation: mem_sharing.c:x86_emul_hw_exception Unexecuted instantiation: multi.c:x86_emul_hw_exception Unexecuted instantiation: hap.c:x86_emul_hw_exception Unexecuted instantiation: nested_hap.c:x86_emul_hw_exception Unexecuted instantiation: nested_ept.c:x86_emul_hw_exception Unexecuted instantiation: nmi_int.c:x86_emul_hw_exception Unexecuted instantiation: op_model_p4.c:x86_emul_hw_exception Unexecuted instantiation: op_model_ppro.c:x86_emul_hw_exception Unexecuted instantiation: op_model_athlon.c:x86_emul_hw_exception Unexecuted instantiation: backtrace.c:x86_emul_hw_exception Unexecuted instantiation: callback.c:x86_emul_hw_exception Unexecuted instantiation: descriptor-tables.c:x86_emul_hw_exception Unexecuted instantiation: emul-gate-op.c:x86_emul_hw_exception Unexecuted instantiation: emul-inv-op.c:x86_emul_hw_exception Unexecuted instantiation: emul-priv-op.c:x86_emul_hw_exception Unexecuted instantiation: iret.c:x86_emul_hw_exception Unexecuted instantiation: misc-hypercalls.c:x86_emul_hw_exception Unexecuted instantiation: ro-page-fault.c:x86_emul_hw_exception Unexecuted instantiation: acpi_mmcfg.c:x86_emul_hw_exception Unexecuted instantiation: mmconf-fam10h.c:x86_emul_hw_exception Unexecuted instantiation: core_parking.c:x86_emul_hw_exception |
678 | | |
679 | | static inline void x86_emul_pagefault( |
680 | | int error_code, unsigned long cr2, struct x86_emulate_ctxt *ctxt) |
681 | 0 | { |
682 | 0 | ASSERT(!ctxt->event_pending); |
683 | 0 |
|
684 | 0 | ctxt->event.vector = 14; /* TRAP_page_fault */ |
685 | 0 | ctxt->event.type = X86_EVENTTYPE_HW_EXCEPTION; |
686 | 0 | ctxt->event.error_code = error_code; |
687 | 0 | ctxt->event.cr2 = cr2; |
688 | 0 |
|
689 | 0 | ctxt->event_pending = true; |
690 | 0 | } Unexecuted instantiation: core_parking.c:x86_emul_pagefault Unexecuted instantiation: cpu.c:x86_emul_pagefault Unexecuted instantiation: cpupool.c:x86_emul_pagefault Unexecuted instantiation: domctl.c:x86_emul_pagefault Unexecuted instantiation: domain.c:x86_emul_pagefault Unexecuted instantiation: event_2l.c:x86_emul_pagefault Unexecuted instantiation: event_channel.c:x86_emul_pagefault Unexecuted instantiation: event_fifo.c:x86_emul_pagefault Unexecuted instantiation: grant_table.c:x86_emul_pagefault Unexecuted instantiation: guestcopy.c:x86_emul_pagefault Unexecuted instantiation: irq.c:x86_emul_pagefault Unexecuted instantiation: kernel.c:x86_emul_pagefault Unexecuted instantiation: keyhandler.c:x86_emul_pagefault Unexecuted instantiation: kexec.c:x86_emul_pagefault Unexecuted instantiation: kimage.c:x86_emul_pagefault Unexecuted instantiation: mem_access.c:x86_emul_pagefault Unexecuted instantiation: memory.c:x86_emul_pagefault Unexecuted instantiation: monitor.c:x86_emul_pagefault Unexecuted instantiation: multicall.c:x86_emul_pagefault Unexecuted instantiation: notifier.c:x86_emul_pagefault Unexecuted instantiation: page_alloc.c:x86_emul_pagefault Unexecuted instantiation: pdx.c:x86_emul_pagefault Unexecuted instantiation: preempt.c:x86_emul_pagefault Unexecuted instantiation: random.c:x86_emul_pagefault Unexecuted instantiation: rangeset.c:x86_emul_pagefault Unexecuted instantiation: radix-tree.c:x86_emul_pagefault Unexecuted instantiation: rcupdate.c:x86_emul_pagefault Unexecuted instantiation: rwlock.c:x86_emul_pagefault Unexecuted instantiation: sched_arinc653.c:x86_emul_pagefault Unexecuted instantiation: sched_credit.c:x86_emul_pagefault Unexecuted instantiation: sched_credit2.c:x86_emul_pagefault Unexecuted instantiation: sched_rt.c:x86_emul_pagefault Unexecuted instantiation: sched_null.c:x86_emul_pagefault Unexecuted instantiation: schedule.c:x86_emul_pagefault Unexecuted instantiation: shutdown.c:x86_emul_pagefault Unexecuted instantiation: softirq.c:x86_emul_pagefault Unexecuted instantiation: smp.c:x86_emul_pagefault Unexecuted instantiation: spinlock.c:x86_emul_pagefault Unexecuted instantiation: stop_machine.c:x86_emul_pagefault Unexecuted instantiation: symbols.c:x86_emul_pagefault Unexecuted instantiation: sysctl.c:x86_emul_pagefault Unexecuted instantiation: tasklet.c:x86_emul_pagefault Unexecuted instantiation: time.c:x86_emul_pagefault Unexecuted instantiation: timer.c:x86_emul_pagefault Unexecuted instantiation: trace.c:x86_emul_pagefault Unexecuted instantiation: virtual_region.c:x86_emul_pagefault Unexecuted instantiation: vm_event.c:x86_emul_pagefault Unexecuted instantiation: vmap.c:x86_emul_pagefault Unexecuted instantiation: vsprintf.c:x86_emul_pagefault Unexecuted instantiation: wait.c:x86_emul_pagefault Unexecuted instantiation: xenoprof.c:x86_emul_pagefault Unexecuted instantiation: xmalloc_tlsf.c:x86_emul_pagefault Unexecuted instantiation: tmem.c:x86_emul_pagefault Unexecuted instantiation: tmem_xen.c:x86_emul_pagefault Unexecuted instantiation: tmem_control.c:x86_emul_pagefault Unexecuted instantiation: llvm.c:x86_emul_pagefault Unexecuted instantiation: console.c:x86_emul_pagefault Unexecuted instantiation: ns16550.c:x86_emul_pagefault Unexecuted instantiation: ehci-dbgp.c:x86_emul_pagefault Unexecuted instantiation: serial.c:x86_emul_pagefault Unexecuted instantiation: cpufreq.c:x86_emul_pagefault Unexecuted instantiation: cpufreq_ondemand.c:x86_emul_pagefault Unexecuted instantiation: cpufreq_misc_governors.c:x86_emul_pagefault Unexecuted instantiation: utility.c:x86_emul_pagefault Unexecuted instantiation: pci.c:x86_emul_pagefault Unexecuted instantiation: vpci.c:x86_emul_pagefault Unexecuted instantiation: header.c:x86_emul_pagefault Unexecuted instantiation: msi.c:x86_emul_pagefault Unexecuted instantiation: msix.c:x86_emul_pagefault Unexecuted instantiation: iommu.c:x86_emul_pagefault Unexecuted instantiation: io.c:x86_emul_pagefault Unexecuted instantiation: dmar.c:x86_emul_pagefault Unexecuted instantiation: utils.c:x86_emul_pagefault Unexecuted instantiation: qinval.c:x86_emul_pagefault Unexecuted instantiation: intremap.c:x86_emul_pagefault Unexecuted instantiation: quirks.c:x86_emul_pagefault Unexecuted instantiation: vtd.c:x86_emul_pagefault Unexecuted instantiation: ats.c:x86_emul_pagefault Unexecuted instantiation: iommu_init.c:x86_emul_pagefault Unexecuted instantiation: iommu_map.c:x86_emul_pagefault Unexecuted instantiation: pci_amd_iommu.c:x86_emul_pagefault Unexecuted instantiation: iommu_intr.c:x86_emul_pagefault Unexecuted instantiation: iommu_cmd.c:x86_emul_pagefault Unexecuted instantiation: iommu_guest.c:x86_emul_pagefault Unexecuted instantiation: numa.c:x86_emul_pagefault Unexecuted instantiation: osl.c:x86_emul_pagefault Unexecuted instantiation: pmstat.c:x86_emul_pagefault Unexecuted instantiation: hwregs.c:x86_emul_pagefault Unexecuted instantiation: reboot.c:x86_emul_pagefault Unexecuted instantiation: tbutils.c:x86_emul_pagefault Unexecuted instantiation: utglobal.c:x86_emul_pagefault Unexecuted instantiation: erst.c:x86_emul_pagefault Unexecuted instantiation: hest.c:x86_emul_pagefault Unexecuted instantiation: apei-base.c:x86_emul_pagefault Unexecuted instantiation: apei-io.c:x86_emul_pagefault Unexecuted instantiation: vga.c:x86_emul_pagefault Unexecuted instantiation: vesa.c:x86_emul_pagefault Unexecuted instantiation: xsm_core.c:x86_emul_pagefault Unexecuted instantiation: apic.c:x86_emul_pagefault Unexecuted instantiation: cpuid.c:x86_emul_pagefault Unexecuted instantiation: compat.c:x86_emul_pagefault Unexecuted instantiation: crash.c:x86_emul_pagefault Unexecuted instantiation: debug.c:x86_emul_pagefault Unexecuted instantiation: delay.c:x86_emul_pagefault Unexecuted instantiation: domain_page.c:x86_emul_pagefault Unexecuted instantiation: e820.c:x86_emul_pagefault Unexecuted instantiation: extable.c:x86_emul_pagefault Unexecuted instantiation: flushtlb.c:x86_emul_pagefault Unexecuted instantiation: hypercall.c:x86_emul_pagefault Unexecuted instantiation: i387.c:x86_emul_pagefault Unexecuted instantiation: i8259.c:x86_emul_pagefault Unexecuted instantiation: io_apic.c:x86_emul_pagefault Unexecuted instantiation: mmconfig-shared.c:x86_emul_pagefault Unexecuted instantiation: msr.c:x86_emul_pagefault Unexecuted instantiation: ioport_emulate.c:x86_emul_pagefault Unexecuted instantiation: machine_kexec.c:x86_emul_pagefault Unexecuted instantiation: microcode_amd.c:x86_emul_pagefault Unexecuted instantiation: microcode_intel.c:x86_emul_pagefault Unexecuted instantiation: microcode.c:x86_emul_pagefault Unexecuted instantiation: mm.c:x86_emul_pagefault Unexecuted instantiation: mpparse.c:x86_emul_pagefault Unexecuted instantiation: nmi.c:x86_emul_pagefault Unexecuted instantiation: percpu.c:x86_emul_pagefault Unexecuted instantiation: physdev.c:x86_emul_pagefault Unexecuted instantiation: platform_hypercall.c:x86_emul_pagefault Unexecuted instantiation: psr.c:x86_emul_pagefault Unexecuted instantiation: setup.c:x86_emul_pagefault Unexecuted instantiation: smpboot.c:x86_emul_pagefault Unexecuted instantiation: srat.c:x86_emul_pagefault Unexecuted instantiation: traps.c:x86_emul_pagefault Unexecuted instantiation: usercopy.c:x86_emul_pagefault Unexecuted instantiation: x86_emulate.c:x86_emul_pagefault Unexecuted instantiation: tboot.c:x86_emul_pagefault Unexecuted instantiation: hpet.c:x86_emul_pagefault Unexecuted instantiation: xstate.c:x86_emul_pagefault Unexecuted instantiation: lib.c:x86_emul_pagefault Unexecuted instantiation: power.c:x86_emul_pagefault Unexecuted instantiation: suspend.c:x86_emul_pagefault Unexecuted instantiation: cpu_idle.c:x86_emul_pagefault Unexecuted instantiation: cpuidle_menu.c:x86_emul_pagefault Unexecuted instantiation: powernow.c:x86_emul_pagefault Unexecuted instantiation: amd.c:x86_emul_pagefault Unexecuted instantiation: centaur.c:x86_emul_pagefault Unexecuted instantiation: common.c:x86_emul_pagefault Unexecuted instantiation: intel.c:x86_emul_pagefault Unexecuted instantiation: intel_cacheinfo.c:x86_emul_pagefault Unexecuted instantiation: mwait-idle.c:x86_emul_pagefault Unexecuted instantiation: vpmu.c:x86_emul_pagefault Unexecuted instantiation: vpmu_amd.c:x86_emul_pagefault Unexecuted instantiation: vpmu_intel.c:x86_emul_pagefault Unexecuted instantiation: amd_nonfatal.c:x86_emul_pagefault Unexecuted instantiation: mce_amd.c:x86_emul_pagefault Unexecuted instantiation: mcaction.c:x86_emul_pagefault Unexecuted instantiation: barrier.c:x86_emul_pagefault Unexecuted instantiation: mctelem.c:x86_emul_pagefault Unexecuted instantiation: mce.c:x86_emul_pagefault Unexecuted instantiation: mce-apei.c:x86_emul_pagefault Unexecuted instantiation: mce_intel.c:x86_emul_pagefault Unexecuted instantiation: non-fatal.c:x86_emul_pagefault Unexecuted instantiation: util.c:x86_emul_pagefault Unexecuted instantiation: vmce.c:x86_emul_pagefault Unexecuted instantiation: generic.c:x86_emul_pagefault Unexecuted instantiation: main.c:x86_emul_pagefault Unexecuted instantiation: bigsmp.c:x86_emul_pagefault Unexecuted instantiation: x2apic.c:x86_emul_pagefault Unexecuted instantiation: default.c:x86_emul_pagefault Unexecuted instantiation: delivery.c:x86_emul_pagefault Unexecuted instantiation: probe.c:x86_emul_pagefault Unexecuted instantiation: asid.c:x86_emul_pagefault Unexecuted instantiation: libelf-loader.c:x86_emul_pagefault Unexecuted instantiation: dm.c:x86_emul_pagefault Unexecuted instantiation: emulate.c:x86_emul_pagefault Unexecuted instantiation: hvm.c:x86_emul_pagefault Unexecuted instantiation: i8254.c:x86_emul_pagefault Unexecuted instantiation: intercept.c:x86_emul_pagefault Unexecuted instantiation: ioreq.c:x86_emul_pagefault Unexecuted instantiation: mtrr.c:x86_emul_pagefault Unexecuted instantiation: nestedhvm.c:x86_emul_pagefault Unexecuted instantiation: pmtimer.c:x86_emul_pagefault Unexecuted instantiation: rtc.c:x86_emul_pagefault Unexecuted instantiation: save.c:x86_emul_pagefault Unexecuted instantiation: stdvga.c:x86_emul_pagefault Unexecuted instantiation: vioapic.c:x86_emul_pagefault Unexecuted instantiation: viridian.c:x86_emul_pagefault Unexecuted instantiation: vlapic.c:x86_emul_pagefault Unexecuted instantiation: vmsi.c:x86_emul_pagefault Unexecuted instantiation: vpic.c:x86_emul_pagefault Unexecuted instantiation: vpt.c:x86_emul_pagefault Unexecuted instantiation: intr.c:x86_emul_pagefault Unexecuted instantiation: nestedsvm.c:x86_emul_pagefault Unexecuted instantiation: svm.c:x86_emul_pagefault Unexecuted instantiation: svmdebug.c:x86_emul_pagefault Unexecuted instantiation: vmcb.c:x86_emul_pagefault Unexecuted instantiation: realmode.c:x86_emul_pagefault Unexecuted instantiation: vmcs.c:x86_emul_pagefault Unexecuted instantiation: vmx.c:x86_emul_pagefault Unexecuted instantiation: vvmx.c:x86_emul_pagefault Unexecuted instantiation: paging.c:x86_emul_pagefault Unexecuted instantiation: p2m.c:x86_emul_pagefault Unexecuted instantiation: p2m-pt.c:x86_emul_pagefault Unexecuted instantiation: p2m-ept.c:x86_emul_pagefault Unexecuted instantiation: p2m-pod.c:x86_emul_pagefault Unexecuted instantiation: altp2m.c:x86_emul_pagefault Unexecuted instantiation: guest_walk.c:x86_emul_pagefault Unexecuted instantiation: mem_paging.c:x86_emul_pagefault Unexecuted instantiation: mem_sharing.c:x86_emul_pagefault Unexecuted instantiation: multi.c:x86_emul_pagefault Unexecuted instantiation: hap.c:x86_emul_pagefault Unexecuted instantiation: nested_hap.c:x86_emul_pagefault Unexecuted instantiation: nested_ept.c:x86_emul_pagefault Unexecuted instantiation: nmi_int.c:x86_emul_pagefault Unexecuted instantiation: op_model_p4.c:x86_emul_pagefault Unexecuted instantiation: op_model_ppro.c:x86_emul_pagefault Unexecuted instantiation: op_model_athlon.c:x86_emul_pagefault Unexecuted instantiation: backtrace.c:x86_emul_pagefault Unexecuted instantiation: callback.c:x86_emul_pagefault Unexecuted instantiation: descriptor-tables.c:x86_emul_pagefault Unexecuted instantiation: emul-gate-op.c:x86_emul_pagefault Unexecuted instantiation: emul-inv-op.c:x86_emul_pagefault Unexecuted instantiation: emul-priv-op.c:x86_emul_pagefault Unexecuted instantiation: iret.c:x86_emul_pagefault Unexecuted instantiation: misc-hypercalls.c:x86_emul_pagefault Unexecuted instantiation: ro-page-fault.c:x86_emul_pagefault Unexecuted instantiation: acpi_mmcfg.c:x86_emul_pagefault Unexecuted instantiation: mmconf-fam10h.c:x86_emul_pagefault Unexecuted instantiation: mmconfig_64.c:x86_emul_pagefault |
691 | | |
692 | | static inline void x86_emul_reset_event(struct x86_emulate_ctxt *ctxt) |
693 | 60.1k | { |
694 | 60.1k | ctxt->event_pending = false; |
695 | 60.1k | ctxt->event = (struct x86_event){}; |
696 | 60.1k | } Unexecuted instantiation: cpu.c:x86_emul_reset_event Unexecuted instantiation: cpupool.c:x86_emul_reset_event Unexecuted instantiation: domctl.c:x86_emul_reset_event Unexecuted instantiation: domain.c:x86_emul_reset_event Unexecuted instantiation: event_2l.c:x86_emul_reset_event Unexecuted instantiation: event_channel.c:x86_emul_reset_event Unexecuted instantiation: event_fifo.c:x86_emul_reset_event Unexecuted instantiation: grant_table.c:x86_emul_reset_event Unexecuted instantiation: guestcopy.c:x86_emul_reset_event Unexecuted instantiation: irq.c:x86_emul_reset_event Unexecuted instantiation: kernel.c:x86_emul_reset_event Unexecuted instantiation: keyhandler.c:x86_emul_reset_event Unexecuted instantiation: kexec.c:x86_emul_reset_event Unexecuted instantiation: kimage.c:x86_emul_reset_event Unexecuted instantiation: mem_access.c:x86_emul_reset_event Unexecuted instantiation: memory.c:x86_emul_reset_event Unexecuted instantiation: monitor.c:x86_emul_reset_event Unexecuted instantiation: multicall.c:x86_emul_reset_event Unexecuted instantiation: notifier.c:x86_emul_reset_event Unexecuted instantiation: page_alloc.c:x86_emul_reset_event Unexecuted instantiation: pdx.c:x86_emul_reset_event Unexecuted instantiation: preempt.c:x86_emul_reset_event Unexecuted instantiation: random.c:x86_emul_reset_event Unexecuted instantiation: rangeset.c:x86_emul_reset_event Unexecuted instantiation: radix-tree.c:x86_emul_reset_event Unexecuted instantiation: rcupdate.c:x86_emul_reset_event Unexecuted instantiation: rwlock.c:x86_emul_reset_event Unexecuted instantiation: sched_arinc653.c:x86_emul_reset_event Unexecuted instantiation: sched_credit.c:x86_emul_reset_event Unexecuted instantiation: sched_credit2.c:x86_emul_reset_event Unexecuted instantiation: sched_rt.c:x86_emul_reset_event Unexecuted instantiation: sched_null.c:x86_emul_reset_event Unexecuted instantiation: schedule.c:x86_emul_reset_event Unexecuted instantiation: shutdown.c:x86_emul_reset_event Unexecuted instantiation: softirq.c:x86_emul_reset_event Unexecuted instantiation: smp.c:x86_emul_reset_event Unexecuted instantiation: spinlock.c:x86_emul_reset_event Unexecuted instantiation: stop_machine.c:x86_emul_reset_event Unexecuted instantiation: symbols.c:x86_emul_reset_event Unexecuted instantiation: sysctl.c:x86_emul_reset_event Unexecuted instantiation: tasklet.c:x86_emul_reset_event Unexecuted instantiation: time.c:x86_emul_reset_event Unexecuted instantiation: timer.c:x86_emul_reset_event Unexecuted instantiation: trace.c:x86_emul_reset_event Unexecuted instantiation: virtual_region.c:x86_emul_reset_event Unexecuted instantiation: vm_event.c:x86_emul_reset_event Unexecuted instantiation: vmap.c:x86_emul_reset_event Unexecuted instantiation: vsprintf.c:x86_emul_reset_event Unexecuted instantiation: wait.c:x86_emul_reset_event Unexecuted instantiation: xenoprof.c:x86_emul_reset_event Unexecuted instantiation: xmalloc_tlsf.c:x86_emul_reset_event Unexecuted instantiation: tmem.c:x86_emul_reset_event Unexecuted instantiation: tmem_xen.c:x86_emul_reset_event Unexecuted instantiation: tmem_control.c:x86_emul_reset_event Unexecuted instantiation: llvm.c:x86_emul_reset_event Unexecuted instantiation: libelf-loader.c:x86_emul_reset_event Unexecuted instantiation: console.c:x86_emul_reset_event Unexecuted instantiation: ns16550.c:x86_emul_reset_event Unexecuted instantiation: ehci-dbgp.c:x86_emul_reset_event Unexecuted instantiation: serial.c:x86_emul_reset_event Unexecuted instantiation: cpufreq.c:x86_emul_reset_event Unexecuted instantiation: cpufreq_ondemand.c:x86_emul_reset_event Unexecuted instantiation: cpufreq_misc_governors.c:x86_emul_reset_event Unexecuted instantiation: utility.c:x86_emul_reset_event Unexecuted instantiation: pci.c:x86_emul_reset_event Unexecuted instantiation: vpci.c:x86_emul_reset_event Unexecuted instantiation: header.c:x86_emul_reset_event Unexecuted instantiation: msi.c:x86_emul_reset_event Unexecuted instantiation: msix.c:x86_emul_reset_event Unexecuted instantiation: iommu.c:x86_emul_reset_event Unexecuted instantiation: io.c:x86_emul_reset_event Unexecuted instantiation: dmar.c:x86_emul_reset_event Unexecuted instantiation: utils.c:x86_emul_reset_event Unexecuted instantiation: qinval.c:x86_emul_reset_event Unexecuted instantiation: intremap.c:x86_emul_reset_event Unexecuted instantiation: quirks.c:x86_emul_reset_event Unexecuted instantiation: vtd.c:x86_emul_reset_event Unexecuted instantiation: ats.c:x86_emul_reset_event Unexecuted instantiation: iommu_init.c:x86_emul_reset_event Unexecuted instantiation: iommu_map.c:x86_emul_reset_event Unexecuted instantiation: pci_amd_iommu.c:x86_emul_reset_event Unexecuted instantiation: iommu_intr.c:x86_emul_reset_event Unexecuted instantiation: iommu_cmd.c:x86_emul_reset_event Unexecuted instantiation: iommu_guest.c:x86_emul_reset_event Unexecuted instantiation: numa.c:x86_emul_reset_event Unexecuted instantiation: osl.c:x86_emul_reset_event Unexecuted instantiation: pmstat.c:x86_emul_reset_event Unexecuted instantiation: hwregs.c:x86_emul_reset_event Unexecuted instantiation: reboot.c:x86_emul_reset_event Unexecuted instantiation: tbutils.c:x86_emul_reset_event Unexecuted instantiation: utglobal.c:x86_emul_reset_event Unexecuted instantiation: erst.c:x86_emul_reset_event Unexecuted instantiation: hest.c:x86_emul_reset_event Unexecuted instantiation: apei-base.c:x86_emul_reset_event Unexecuted instantiation: apei-io.c:x86_emul_reset_event Unexecuted instantiation: vga.c:x86_emul_reset_event Unexecuted instantiation: vesa.c:x86_emul_reset_event Unexecuted instantiation: xsm_core.c:x86_emul_reset_event Unexecuted instantiation: apic.c:x86_emul_reset_event Unexecuted instantiation: cpuid.c:x86_emul_reset_event Unexecuted instantiation: compat.c:x86_emul_reset_event Unexecuted instantiation: crash.c:x86_emul_reset_event Unexecuted instantiation: debug.c:x86_emul_reset_event Unexecuted instantiation: delay.c:x86_emul_reset_event Unexecuted instantiation: domain_page.c:x86_emul_reset_event Unexecuted instantiation: e820.c:x86_emul_reset_event Unexecuted instantiation: extable.c:x86_emul_reset_event Unexecuted instantiation: flushtlb.c:x86_emul_reset_event Unexecuted instantiation: hypercall.c:x86_emul_reset_event Unexecuted instantiation: i387.c:x86_emul_reset_event Unexecuted instantiation: i8259.c:x86_emul_reset_event Unexecuted instantiation: io_apic.c:x86_emul_reset_event Unexecuted instantiation: msr.c:x86_emul_reset_event Unexecuted instantiation: ioport_emulate.c:x86_emul_reset_event Unexecuted instantiation: machine_kexec.c:x86_emul_reset_event Unexecuted instantiation: microcode_amd.c:x86_emul_reset_event Unexecuted instantiation: microcode_intel.c:x86_emul_reset_event Unexecuted instantiation: microcode.c:x86_emul_reset_event Unexecuted instantiation: mm.c:x86_emul_reset_event Unexecuted instantiation: mpparse.c:x86_emul_reset_event Unexecuted instantiation: nmi.c:x86_emul_reset_event Unexecuted instantiation: percpu.c:x86_emul_reset_event Unexecuted instantiation: physdev.c:x86_emul_reset_event Unexecuted instantiation: platform_hypercall.c:x86_emul_reset_event Unexecuted instantiation: psr.c:x86_emul_reset_event Unexecuted instantiation: setup.c:x86_emul_reset_event Unexecuted instantiation: smpboot.c:x86_emul_reset_event Unexecuted instantiation: srat.c:x86_emul_reset_event Unexecuted instantiation: traps.c:x86_emul_reset_event Unexecuted instantiation: usercopy.c:x86_emul_reset_event x86_emulate.c:x86_emul_reset_event Line | Count | Source | 693 | 60.1k | { | 694 | 60.1k | ctxt->event_pending = false; | 695 | 60.1k | ctxt->event = (struct x86_event){}; | 696 | 60.1k | } |
Unexecuted instantiation: tboot.c:x86_emul_reset_event Unexecuted instantiation: hpet.c:x86_emul_reset_event Unexecuted instantiation: xstate.c:x86_emul_reset_event Unexecuted instantiation: lib.c:x86_emul_reset_event Unexecuted instantiation: power.c:x86_emul_reset_event Unexecuted instantiation: suspend.c:x86_emul_reset_event Unexecuted instantiation: cpu_idle.c:x86_emul_reset_event Unexecuted instantiation: cpuidle_menu.c:x86_emul_reset_event Unexecuted instantiation: powernow.c:x86_emul_reset_event Unexecuted instantiation: amd.c:x86_emul_reset_event Unexecuted instantiation: centaur.c:x86_emul_reset_event Unexecuted instantiation: common.c:x86_emul_reset_event Unexecuted instantiation: intel.c:x86_emul_reset_event Unexecuted instantiation: intel_cacheinfo.c:x86_emul_reset_event Unexecuted instantiation: mwait-idle.c:x86_emul_reset_event Unexecuted instantiation: vpmu.c:x86_emul_reset_event Unexecuted instantiation: vpmu_amd.c:x86_emul_reset_event Unexecuted instantiation: vpmu_intel.c:x86_emul_reset_event Unexecuted instantiation: amd_nonfatal.c:x86_emul_reset_event Unexecuted instantiation: mce_amd.c:x86_emul_reset_event Unexecuted instantiation: mcaction.c:x86_emul_reset_event Unexecuted instantiation: barrier.c:x86_emul_reset_event Unexecuted instantiation: mctelem.c:x86_emul_reset_event Unexecuted instantiation: mce.c:x86_emul_reset_event Unexecuted instantiation: mce-apei.c:x86_emul_reset_event Unexecuted instantiation: mce_intel.c:x86_emul_reset_event Unexecuted instantiation: non-fatal.c:x86_emul_reset_event Unexecuted instantiation: util.c:x86_emul_reset_event Unexecuted instantiation: vmce.c:x86_emul_reset_event Unexecuted instantiation: generic.c:x86_emul_reset_event Unexecuted instantiation: main.c:x86_emul_reset_event Unexecuted instantiation: bigsmp.c:x86_emul_reset_event Unexecuted instantiation: x2apic.c:x86_emul_reset_event Unexecuted instantiation: default.c:x86_emul_reset_event Unexecuted instantiation: delivery.c:x86_emul_reset_event Unexecuted instantiation: probe.c:x86_emul_reset_event Unexecuted instantiation: asid.c:x86_emul_reset_event Unexecuted instantiation: dm.c:x86_emul_reset_event Unexecuted instantiation: emulate.c:x86_emul_reset_event Unexecuted instantiation: hvm.c:x86_emul_reset_event Unexecuted instantiation: i8254.c:x86_emul_reset_event Unexecuted instantiation: intercept.c:x86_emul_reset_event Unexecuted instantiation: ioreq.c:x86_emul_reset_event Unexecuted instantiation: mtrr.c:x86_emul_reset_event Unexecuted instantiation: nestedhvm.c:x86_emul_reset_event Unexecuted instantiation: pmtimer.c:x86_emul_reset_event Unexecuted instantiation: rtc.c:x86_emul_reset_event Unexecuted instantiation: save.c:x86_emul_reset_event Unexecuted instantiation: stdvga.c:x86_emul_reset_event Unexecuted instantiation: vioapic.c:x86_emul_reset_event Unexecuted instantiation: viridian.c:x86_emul_reset_event Unexecuted instantiation: vlapic.c:x86_emul_reset_event Unexecuted instantiation: vmsi.c:x86_emul_reset_event Unexecuted instantiation: vpic.c:x86_emul_reset_event Unexecuted instantiation: vpt.c:x86_emul_reset_event Unexecuted instantiation: intr.c:x86_emul_reset_event Unexecuted instantiation: nestedsvm.c:x86_emul_reset_event Unexecuted instantiation: svm.c:x86_emul_reset_event Unexecuted instantiation: svmdebug.c:x86_emul_reset_event Unexecuted instantiation: vmcb.c:x86_emul_reset_event Unexecuted instantiation: realmode.c:x86_emul_reset_event Unexecuted instantiation: vmcs.c:x86_emul_reset_event Unexecuted instantiation: vmx.c:x86_emul_reset_event Unexecuted instantiation: vvmx.c:x86_emul_reset_event Unexecuted instantiation: paging.c:x86_emul_reset_event Unexecuted instantiation: p2m.c:x86_emul_reset_event Unexecuted instantiation: p2m-pt.c:x86_emul_reset_event Unexecuted instantiation: p2m-ept.c:x86_emul_reset_event Unexecuted instantiation: p2m-pod.c:x86_emul_reset_event Unexecuted instantiation: altp2m.c:x86_emul_reset_event Unexecuted instantiation: guest_walk.c:x86_emul_reset_event Unexecuted instantiation: mem_paging.c:x86_emul_reset_event Unexecuted instantiation: mem_sharing.c:x86_emul_reset_event Unexecuted instantiation: multi.c:x86_emul_reset_event Unexecuted instantiation: hap.c:x86_emul_reset_event Unexecuted instantiation: nested_hap.c:x86_emul_reset_event Unexecuted instantiation: nested_ept.c:x86_emul_reset_event Unexecuted instantiation: nmi_int.c:x86_emul_reset_event Unexecuted instantiation: op_model_p4.c:x86_emul_reset_event Unexecuted instantiation: op_model_ppro.c:x86_emul_reset_event Unexecuted instantiation: op_model_athlon.c:x86_emul_reset_event Unexecuted instantiation: backtrace.c:x86_emul_reset_event Unexecuted instantiation: callback.c:x86_emul_reset_event Unexecuted instantiation: descriptor-tables.c:x86_emul_reset_event Unexecuted instantiation: emul-gate-op.c:x86_emul_reset_event Unexecuted instantiation: emul-inv-op.c:x86_emul_reset_event Unexecuted instantiation: emul-priv-op.c:x86_emul_reset_event Unexecuted instantiation: iret.c:x86_emul_reset_event Unexecuted instantiation: misc-hypercalls.c:x86_emul_reset_event Unexecuted instantiation: ro-page-fault.c:x86_emul_reset_event Unexecuted instantiation: acpi_mmcfg.c:x86_emul_reset_event Unexecuted instantiation: mmconf-fam10h.c:x86_emul_reset_event Unexecuted instantiation: mmconfig_64.c:x86_emul_reset_event Unexecuted instantiation: mmconfig-shared.c:x86_emul_reset_event Unexecuted instantiation: core_parking.c:x86_emul_reset_event |
697 | | |
698 | | #endif /* __X86_EMULATE_H__ */ |