1pub const XEN_ELFNOTE_INFO: u64 = 0;
2pub const XEN_ELFNOTE_ENTRY: u64 = 1;
3pub const XEN_ELFNOTE_HYPERCALL_PAGE: u64 = 2;
4pub const XEN_ELFNOTE_VIRT_BASE: u64 = 3;
5pub const XEN_ELFNOTE_PADDR_OFFSET: u64 = 4;
6pub const XEN_ELFNOTE_XEN_VERSION: u64 = 5;
7pub const XEN_ELFNOTE_GUEST_OS: u64 = 6;
8pub const XEN_ELFNOTE_GUEST_VERSION: u64 = 7;
9pub const XEN_ELFNOTE_LOADER: u64 = 8;
10pub const XEN_ELFNOTE_PAE_MODE: u64 = 9;
11pub const XEN_ELFNOTE_FEATURES: u64 = 10;
12pub const XEN_ELFNOTE_BSD_SYMTAB: u64 = 11;
13pub const XEN_ELFNOTE_HV_START_LOW: u64 = 12;
14pub const XEN_ELFNOTE_L1_MFN_VALID: u64 = 13;
15pub const XEN_ELFNOTE_SUSPEND_CANCEL: u64 = 14;
16pub const XEN_ELFNOTE_INIT_P2M: u64 = 15;
17pub const XEN_ELFNOTE_MOD_START_PFN: u64 = 16;
18pub const XEN_ELFNOTE_SUPPORTED_FEATURES: u64 = 17;
19pub const XEN_ELFNOTE_PHYS32_ENTRY: u64 = 18;
20
21#[derive(Copy, Clone)]
22pub struct ElfNoteXenType {
23 pub id: u64,
24 pub name: &'static str,
25 pub is_string: bool,
26}
27
28pub const XEN_ELFNOTE_TYPES: &[ElfNoteXenType] = &[
29 ElfNoteXenType {
30 id: XEN_ELFNOTE_ENTRY,
31 name: "ENTRY",
32 is_string: false,
33 },
34 ElfNoteXenType {
35 id: XEN_ELFNOTE_HYPERCALL_PAGE,
36 name: "HYPERCALL_PAGE",
37 is_string: false,
38 },
39 ElfNoteXenType {
40 id: XEN_ELFNOTE_VIRT_BASE,
41 name: "VIRT_BASE",
42 is_string: false,
43 },
44 ElfNoteXenType {
45 id: XEN_ELFNOTE_INIT_P2M,
46 name: "INIT_P2M",
47 is_string: false,
48 },
49 ElfNoteXenType {
50 id: XEN_ELFNOTE_PADDR_OFFSET,
51 name: "PADDR_OFFSET",
52 is_string: false,
53 },
54 ElfNoteXenType {
55 id: XEN_ELFNOTE_HV_START_LOW,
56 name: "HV_START_LOW",
57 is_string: false,
58 },
59 ElfNoteXenType {
60 id: XEN_ELFNOTE_XEN_VERSION,
61 name: "XEN_VERSION",
62 is_string: true,
63 },
64 ElfNoteXenType {
65 id: XEN_ELFNOTE_GUEST_OS,
66 name: "GUEST_OS",
67 is_string: true,
68 },
69 ElfNoteXenType {
70 id: XEN_ELFNOTE_GUEST_VERSION,
71 name: "GUEST_VERSION",
72 is_string: true,
73 },
74 ElfNoteXenType {
75 id: XEN_ELFNOTE_LOADER,
76 name: "LOADER",
77 is_string: true,
78 },
79 ElfNoteXenType {
80 id: XEN_ELFNOTE_PAE_MODE,
81 name: "PAE_MODE",
82 is_string: true,
83 },
84 ElfNoteXenType {
85 id: XEN_ELFNOTE_FEATURES,
86 name: "FEATURES",
87 is_string: true,
88 },
89 ElfNoteXenType {
90 id: XEN_ELFNOTE_SUPPORTED_FEATURES,
91 name: "SUPPORTED_FEATURES",
92 is_string: false,
93 },
94 ElfNoteXenType {
95 id: XEN_ELFNOTE_BSD_SYMTAB,
96 name: "BSD_SYMTAB",
97 is_string: true,
98 },
99 ElfNoteXenType {
100 id: XEN_ELFNOTE_SUSPEND_CANCEL,
101 name: "SUSPEND_CANCEL",
102 is_string: false,
103 },
104 ElfNoteXenType {
105 id: XEN_ELFNOTE_MOD_START_PFN,
106 name: "MOD_START_PFN",
107 is_string: false,
108 },
109 ElfNoteXenType {
110 id: XEN_ELFNOTE_PHYS32_ENTRY,
111 name: "PHYS32_ENTRY",
112 is_string: false,
113 },
114];
115
116pub const XEN_PAGE_SHIFT: u64 = 12;
117pub const XEN_PAGE_SIZE: u64 = 1 << XEN_PAGE_SHIFT;
118pub const XEN_PAGE_MASK: u64 = !(XEN_PAGE_SIZE - 1);
119pub const SUPERPAGE_BATCH_SIZE: u64 = 512;
120pub const SUPERPAGE_2MB_SHIFT: u64 = 9;
121pub const SUPERPAGE_2MB_NR_PFNS: u64 = 1u64 << SUPERPAGE_2MB_SHIFT;
122pub const SUPERPAGE_1GB_SHIFT: u64 = 18;
123pub const SUPERPAGE_1GB_NR_PFNS: u64 = 1u64 << SUPERPAGE_1GB_SHIFT;
124pub const VGCF_IN_KERNEL: u64 = 1 << 2;
125pub const VGCF_ONLINE: u64 = 1 << 5;
126
127#[repr(C)]
128pub struct GrantEntry {
129 pub flags: u16,
130 pub domid: u16,
131 pub frame: u32,
132}
133
134pub const XEN_HVM_START_MAGIC_VALUE: u32 = 0x336ec578;
135
136pub const HVM_PARAM_STORE_PFN: u32 = 1;
137pub const HVM_PARAM_STORE_EVTCHN: u32 = 2;
138pub const HVM_PARAM_IOREQ_PFN: u32 = 5;
139pub const HVM_PARAM_BUFIOREQ_PFN: u32 = 6;
140pub const HVM_PARAM_CONSOLE_PFN: u32 = 17;
141pub const HVM_PARAM_CONSOLE_EVTCHN: u32 = 18;
142pub const HVM_PARAM_PAGING_RING_PFN: u32 = 27;
143pub const HVM_PARAM_MONITOR_RING_PFN: u32 = 28;
144pub const HVM_PARAM_SHARING_RING_PFN: u32 = 29;
145pub const HVM_PARAM_TIMER_MODE: u32 = 10;
146pub const HVM_PARAM_ALTP2M: u32 = 35;
147pub const HVM_PARAM_IDENT_PT: u32 = 12;