/usr/include/xen/foreign/x86_32.h is in libxen-dev 4.4.1-9+deb8u10.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 | /*
* public xen defines and struct for x86_32
* generated by mkheader.py -- DO NOT EDIT
*/
#ifndef __FOREIGN_X86_32_H__
#define __FOREIGN_X86_32_H__ 1
#define __i386___X86_32 1
#pragma pack(4)
#define FLAT_RING1_CS_X86_32 0xe019 /* GDT index 259 */
#define FLAT_RING1_DS_X86_32 0xe021 /* GDT index 260 */
#define FLAT_RING1_SS_X86_32 0xe021 /* GDT index 260 */
#define FLAT_KERNEL_CS_X86_32 FLAT_RING1_CS_X86_32
#define FLAT_KERNEL_DS_X86_32 FLAT_RING1_DS_X86_32
#define FLAT_KERNEL_SS_X86_32 FLAT_RING1_SS_X86_32
#define xen_pfn_to_cr3_x86_32(pfn) (((unsigned)(pfn) << 12) | ((unsigned)(pfn) >> 20))
#define xen_cr3_to_pfn_x86_32(cr3) (((unsigned)(cr3) >> 12) | ((unsigned)(cr3) << 20))
#define XEN_HAVE_PV_GUEST_ENTRY_X86_32 1
#define XEN_LEGACY_MAX_VCPUS_X86_32 32
#define _VGCF_i387_valid_X86_32 0
#define VGCF_i387_valid_X86_32 (1<<_VGCF_i387_valid_X86_32)
#define _VGCF_in_kernel_X86_32 2
#define VGCF_in_kernel_X86_32 (1<<_VGCF_in_kernel_X86_32)
#define _VGCF_failsafe_disables_events_X86_32 3
#define VGCF_failsafe_disables_events_X86_32 (1<<_VGCF_failsafe_disables_events_X86_32)
#define _VGCF_syscall_disables_events_X86_32 4
#define VGCF_syscall_disables_events_X86_32 (1<<_VGCF_syscall_disables_events_X86_32)
#define _VGCF_online_X86_32 5
#define VGCF_online_X86_32 (1<<_VGCF_online_X86_32)
#define MAX_GUEST_CMDLINE_X86_32 1024
#define x86_32_has_no_vcpu_cr_regs 1
#define x86_32_has_no_vcpu_ar_regs 1
struct start_info_x86_32 {
char magic[32];
uint32_t nr_pages;
uint32_t shared_info;
uint32_t flags;
uint32_t store_mfn;
uint32_t store_evtchn;
union {
struct {
uint32_t mfn;
uint32_t evtchn;
} domU;
struct {
uint32_t info_off;
uint32_t info_size;
} dom0;
} console;
uint32_t pt_base;
uint32_t nr_pt_frames;
uint32_t mfn_list;
uint32_t mod_start;
uint32_t mod_len;
int8_t cmd_line[MAX_GUEST_CMDLINE_X86_32];
uint32_t first_p2m_pfn;
uint32_t nr_p2m_frames;
};
typedef struct start_info_x86_32 start_info_x86_32_t;
struct trap_info_x86_32 {
uint8_t vector;
uint8_t flags;
uint16_t cs;
uint32_t address;
};
typedef struct trap_info_x86_32 trap_info_x86_32_t;
struct cpu_user_regs_x86_32 {
uint32_t ebx;
uint32_t ecx;
uint32_t edx;
uint32_t esi;
uint32_t edi;
uint32_t ebp;
uint32_t eax;
uint16_t error_code;
uint16_t entry_vector;
uint32_t eip;
uint16_t cs;
uint8_t saved_upcall_mask;
uint8_t _pad0;
uint32_t eflags;
uint32_t esp;
uint16_t ss, _pad1;
uint16_t es, _pad2;
uint16_t ds, _pad3;
uint16_t fs, _pad4;
uint16_t gs, _pad5;
};
typedef struct cpu_user_regs_x86_32 cpu_user_regs_x86_32_t;
#define x86_32_has_no_vcpu_guest_core_regs 1
struct vcpu_guest_context_x86_32 {
struct { char x[512]; } fpu_ctxt;
uint32_t flags;
struct cpu_user_regs_x86_32 user_regs;
struct trap_info_x86_32 trap_ctxt[256];
uint32_t ldt_base, ldt_ents;
uint32_t gdt_frames[16], gdt_ents;
uint32_t kernel_ss, kernel_sp;
uint32_t ctrlreg[8];
uint32_t debugreg[8];
#ifdef __i386___X86_32
uint32_t event_callback_cs;
uint32_t event_callback_eip;
uint32_t failsafe_callback_cs;
uint32_t failsafe_callback_eip;
#else
uint32_t event_callback_eip;
uint32_t failsafe_callback_eip;
#ifdef __XEN__
union {
uint32_t syscall_callback_eip;
struct {
unsigned int event_callback_cs;
unsigned int failsafe_callback_cs;
};
};
#else
uint32_t syscall_callback_eip;
#endif
#endif
uint32_t vm_assist;
#ifdef __x86_64___X86_32
uint64_t fs_base;
uint64_t gs_base_kernel;
uint64_t gs_base_user;
#endif
};
typedef struct vcpu_guest_context_x86_32 vcpu_guest_context_x86_32_t;
struct arch_vcpu_info_x86_32 {
uint32_t cr2;
uint32_t pad[5];
};
typedef struct arch_vcpu_info_x86_32 arch_vcpu_info_x86_32_t;
struct vcpu_time_info_x86_32 {
uint32_t version;
uint32_t pad0;
uint64_t tsc_timestamp;
uint64_t system_time;
uint32_t tsc_to_system_mul;
int8_t tsc_shift;
int8_t pad1[3];
};
typedef struct vcpu_time_info_x86_32 vcpu_time_info_x86_32_t;
struct vcpu_info_x86_32 {
uint8_t evtchn_upcall_pending;
#ifdef XEN_HAVE_PV_UPCALL_MASK
uint8_t evtchn_upcall_mask;
#else
uint8_t pad0;
#endif
uint32_t evtchn_pending_sel;
struct arch_vcpu_info_x86_32 arch;
struct vcpu_time_info_x86_32 time;
};
typedef struct vcpu_info_x86_32 vcpu_info_x86_32_t;
struct arch_shared_info_x86_32 {
uint32_t max_pfn;
uint32_t pfn_to_mfn_frame_list_list;
uint32_t nmi_reason;
uint64_t pad[32];
};
typedef struct arch_shared_info_x86_32 arch_shared_info_x86_32_t;
struct shared_info_x86_32 {
struct vcpu_info_x86_32 vcpu_info[XEN_LEGACY_MAX_VCPUS_X86_32];
uint32_t evtchn_pending[sizeof(uint32_t) * 8];
uint32_t evtchn_mask[sizeof(uint32_t) * 8];
uint32_t wc_version;
uint32_t wc_sec;
uint32_t wc_nsec;
struct arch_shared_info_x86_32 arch;
};
typedef struct shared_info_x86_32 shared_info_x86_32_t;
#pragma pack()
#endif /* __FOREIGN_X86_32_H__ */
|