1/*
2 * Copyright 2017, Data61, CSIRO (ABN 41 687 119 230)
3 *
4 * SPDX-License-Identifier: GPL-2.0-only
5 */
6
7#pragma once
8
9/*control fields in vmcs*/
10#define VMX_GUEST_ES_SELECTOR 0x00000800
11#define VMX_GUEST_CS_SELECTOR 0x00000802
12#define VMX_GUEST_SS_SELECTOR 0x00000804
13#define VMX_GUEST_DS_SELECTOR 0x00000806
14#define VMX_GUEST_FS_SELECTOR 0x00000808
15#define VMX_GUEST_GS_SELECTOR 0x0000080A
16#define VMX_GUEST_LDTR_SELECTOR 0x0000080C
17#define VMX_GUEST_TR_SELECTOR 0x0000080E
18#define VMX_GUEST_DEBUGCTRL 0x00002802
19#define VMX_GUEST_PAT 0x00002804
20#define VMX_GUEST_EFER 0x00002806
21#define VMX_GUEST_PERF_GLOBAL_CTRL 0x00002808
22#define VMX_GUEST_ES_LIMIT 0x00004800
23#define VMX_GUEST_CS_LIMIT 0x00004802
24#define VMX_GUEST_SS_LIMIT 0x00004804
25#define VMX_GUEST_DS_LIMIT 0x00004806
26#define VMX_GUEST_FS_LIMIT 0x00004808
27#define VMX_GUEST_GS_LIMIT 0x0000480A
28#define VMX_GUEST_LDTR_LIMIT 0x0000480C
29#define VMX_GUEST_TR_LIMIT 0x0000480E
30#define VMX_GUEST_GDTR_LIMIT 0x00004810
31#define VMX_GUEST_IDTR_LIMIT 0x00004812
32#define VMX_GUEST_ES_ACCESS_RIGHTS 0x00004814
33#define VMX_GUEST_CS_ACCESS_RIGHTS 0x00004816
34#define VMX_GUEST_SS_ACCESS_RIGHTS 0x00004818
35#define VMX_GUEST_DS_ACCESS_RIGHTS 0x0000481A
36#define VMX_GUEST_FS_ACCESS_RIGHTS 0x0000481C
37#define VMX_GUEST_GS_ACCESS_RIGHTS 0x0000481E
38#define VMX_GUEST_LDTR_ACCESS_RIGHTS 0x00004820
39#define VMX_GUEST_TR_ACCESS_RIGHTS 0x00004822
40#define VMX_GUEST_INTERRUPTABILITY 0x00004824
41#define VMX_GUEST_ACTIVITY 0x00004826
42#define VMX_GUEST_SMBASE 0x00004828
43#define VMX_GUEST_SYSENTER_CS 0x0000482A
44#define VMX_GUEST_CR0 0x00006800
45#define VMX_GUEST_CR3 0x00006802
46#define VMX_GUEST_CR4 0x00006804
47#define VMX_GUEST_ES_BASE 0x00006806
48#define VMX_GUEST_CS_BASE 0x00006808
49#define VMX_GUEST_SS_BASE 0x0000680A
50#define VMX_GUEST_DS_BASE 0x0000680C
51#define VMX_GUEST_FS_BASE 0x0000680E
52#define VMX_GUEST_GS_BASE 0x00006810
53#define VMX_GUEST_LDTR_BASE 0x00006812
54#define VMX_GUEST_TR_BASE 0x00006814
55#define VMX_GUEST_GDTR_BASE 0x00006816
56#define VMX_GUEST_IDTR_BASE 0x00006818
57#define VMX_GUEST_PENDING_DEBUG_EXCEPTIONS 0x00006822
58#define VMX_GUEST_DR7 0x0000681A
59#define VMX_GUEST_RSP 0x0000681C
60#define VMX_GUEST_RIP 0x0000681E
61#define VMX_GUEST_RFLAGS 0x00006820
62#define VMX_GUEST_SYSENTER_ESP 0x00006824
63#define VMX_GUEST_SYSENTER_EIP 0x00006826
64#define VMX_GUEST_VMX_PREEMPTION_TIMER_VALUE 0x0000482E
65
66#define VMX_DATA_INSTRUCTION_ERROR 0x00004400
67#define VMX_DATA_EXIT_REASON 0x00004402
68#define VMX_DATA_EXIT_INTERRUPT_INFO 0x00004404
69#define VMX_DATA_EXIT_INTERRUPT_ERROR 0x00004406
70#define VMX_DATA_IDT_VECTOR_INFO 0x00004408
71#define VMX_DATA_IDT_VECTOR_ERROR 0x0000440A
72#define VMX_DATA_EXIT_INSTRUCTION_LENGTH 0x0000440C
73#define VMX_DATA_EXIT_INSTRUCTION_INFO 0x0000440E
74
75#define VMX_DATA_EXIT_QUALIFICATION 0x00006400
76#define VMX_DATA_IO_RCX 0x00006402
77#define VMX_DATA_IO_RSI 0x00006404
78#define VMX_DATA_IO_RDI 0x00006406
79#define VMX_DATA_IO_RIP 0x00006408
80#define VMX_DATA_GUEST_LINEAR_ADDRESS 0x0000640A
81#define VMX_DATA_GUEST_PHYSICAL 0x00002400
82
83#define VMX_CONTROL_CR0_MASK 0x00006000
84#define VMX_CONTROL_CR4_MASK 0x00006002
85#define VMX_CONTROL_CR0_READ_SHADOW 0x00006004
86#define VMX_CONTROL_CR4_READ_SHADOW 0x00006006
87
88#define VMX_CONTROL_PIN_EXECUTION_CONTROLS 0x00004000
89#define VMX_CONTROL_PRIMARY_PROCESSOR_CONTROLS 0x00004002
90#define VMX_CONTROL_PPC_HLT_EXITING BIT(7)
91#define VMX_CONTROL_PPC_CR3_LOAD_EXITING BIT(15)
92#define VMX_CONTROL_PPC_CR3_STORE_EXITING BIT(16)
93#define VMX_CONTROL_SECONDARY_PROCESSOR_CONTROLS 0x0000401E
94#define VMX_CONTROL_EXCEPTION_BITMAP 0x00004004
95#define VMX_CONTROL_EXIT_CONTROLS 0x0000400C
96#define VMX_CONTROL_ENTRY_INTERRUPTION_INFO 0x00004016
97#define VMX_CONTROL_ENTRY_EXCEPTION_ERROR_CODE 0x00004018
98