1+ package org .eclipse .tracecompass .incubator .internal .virtual .machine .analysis .core .flow .analysis ;
2+
3+ import java .util .HashMap ;
4+ import java .util .Map ;
5+
6+
7+ /**
8+ * Mapping of Exit reason number to their text description
9+ * @author Francois Belias
10+ */
11+ public class ExitReasonMap {
12+
13+ private static final Map <Integer , String > exitReasonMap = new HashMap <>();
14+
15+ static {
16+ // VMX specific reasons
17+ exitReasonMap .put (0x80000000 , "VMX_EXIT_REASONS_FAILED_VMENTRY" ); //$NON-NLS-1$
18+ exitReasonMap .put (0x08000000 , "VMX_EXIT_REASONS_SGX_ENCLAVE_MODE" ); //$NON-NLS-1$
19+
20+ // General exit reasons
21+ exitReasonMap .put (0 , "EXIT_REASON_EXCEPTION_NMI" ); //$NON-NLS-1$
22+ exitReasonMap .put (1 , "EXIT_REASON_EXTERNAL_INTERRUPT" ); //$NON-NLS-1$
23+ exitReasonMap .put (2 , "EXIT_REASON_TRIPLE_FAULT" ); //$NON-NLS-1$
24+ exitReasonMap .put (3 , "EXIT_REASON_INIT_SIGNAL" ); //$NON-NLS-1$
25+ exitReasonMap .put (4 , "EXIT_REASON_SIPI_SIGNAL" ); //$NON-NLS-1$
26+
27+ exitReasonMap .put (7 , "EXIT_REASON_INTERRUPT_WINDOW" ); //$NON-NLS-1$
28+ exitReasonMap .put (8 , "EXIT_REASON_NMI_WINDOW" ); //$NON-NLS-1$
29+ exitReasonMap .put (9 , "EXIT_REASON_TASK_SWITCH" ); //$NON-NLS-1$
30+ exitReasonMap .put (10 , "EXIT_REASON_CPUID" ); //$NON-NLS-1$
31+ exitReasonMap .put (12 , "EXIT_REASON_HLT" ); //$NON-NLS-1$
32+ exitReasonMap .put (13 , "EXIT_REASON_INVD" ); //$NON-NLS-1$
33+ exitReasonMap .put (14 , "EXIT_REASON_INVLPG" ); //$NON-NLS-1$
34+ exitReasonMap .put (15 , "EXIT_REASON_RDPMC" ); //$NON-NLS-1$
35+ exitReasonMap .put (16 , "EXIT_REASON_RDTSC" ); //$NON-NLS-1$
36+ exitReasonMap .put (18 , "EXIT_REASON_VMCALL" ); //$NON-NLS-1$
37+ exitReasonMap .put (19 , "EXIT_REASON_VMCLEAR" ); //$NON-NLS-1$
38+ exitReasonMap .put (20 , "EXIT_REASON_VMLAUNCH" ); //$NON-NLS-1$
39+ exitReasonMap .put (21 , "EXIT_REASON_VMPTRLD" ); //$NON-NLS-1$
40+ exitReasonMap .put (22 , "EXIT_REASON_VMPTRST" ); //$NON-NLS-1$
41+ exitReasonMap .put (23 , "EXIT_REASON_VMREAD" ); //$NON-NLS-1$
42+ exitReasonMap .put (24 , "EXIT_REASON_VMRESUME" ); //$NON-NLS-1$
43+ exitReasonMap .put (25 , "EXIT_REASON_VMWRITE" ); //$NON-NLS-1$
44+ exitReasonMap .put (26 , "EXIT_REASON_VMOFF" ); //$NON-NLS-1$
45+ exitReasonMap .put (27 , "EXIT_REASON_VMON" ); //$NON-NLS-1$
46+ exitReasonMap .put (28 , "EXIT_REASON_CR_ACCESS" ); //$NON-NLS-1$
47+ exitReasonMap .put (29 , "EXIT_REASON_DR_ACCESS" ); //$NON-NLS-1$
48+ exitReasonMap .put (30 , "EXIT_REASON_IO_INSTRUCTION" ); //$NON-NLS-1$
49+ exitReasonMap .put (31 , "EXIT_REASON_MSR_READ" ); //$NON-NLS-1$
50+ exitReasonMap .put (32 , "EXIT_REASON_MSR_WRITE" ); //$NON-NLS-1$
51+ exitReasonMap .put (33 , "EXIT_REASON_INVALID_STATE" ); //$NON-NLS-1$
52+ exitReasonMap .put (34 , "EXIT_REASON_MSR_LOAD_FAIL" ); //$NON-NLS-1$
53+ exitReasonMap .put (36 , "EXIT_REASON_MWAIT_INSTRUCTION" ); //$NON-NLS-1$
54+ exitReasonMap .put (37 , "EXIT_REASON_MONITOR_TRAP_FLAG" ); //$NON-NLS-1$
55+ exitReasonMap .put (39 , "EXIT_REASON_MONITOR_INSTRUCTION" ); //$NON-NLS-1$
56+ exitReasonMap .put (40 , "EXIT_REASON_PAUSE_INSTRUCTION" ); //$NON-NLS-1$
57+ exitReasonMap .put (41 , "EXIT_REASON_MCE_DURING_VMENTRY" ); //$NON-NLS-1$
58+ exitReasonMap .put (43 , "EXIT_REASON_TPR_BELOW_THRESHOLD" ); //$NON-NLS-1$
59+ exitReasonMap .put (44 , "EXIT_REASON_APIC_ACCESS" ); //$NON-NLS-1$
60+ exitReasonMap .put (45 , "EXIT_REASON_EOI_INDUCED" ); //$NON-NLS-1$
61+ exitReasonMap .put (46 , "EXIT_REASON_GDTR_IDTR" ); //$NON-NLS-1$
62+ exitReasonMap .put (47 , "EXIT_REASON_LDTR_TR" ); //$NON-NLS-1$
63+ exitReasonMap .put (48 , "EXIT_REASON_EPT_VIOLATION" ); //$NON-NLS-1$
64+ exitReasonMap .put (49 , "EXIT_REASON_EPT_MISCONFIG" ); //$NON-NLS-1$
65+ exitReasonMap .put (50 , "EXIT_REASON_INVEPT" ); //$NON-NLS-1$
66+ exitReasonMap .put (51 , "EXIT_REASON_RDTSCP" ); //$NON-NLS-1$
67+ exitReasonMap .put (52 , "EXIT_REASON_PREEMPTION_TIMER" ); //$NON-NLS-1$
68+ exitReasonMap .put (53 , "EXIT_REASON_INVVPID" ); //$NON-NLS-1$
69+ exitReasonMap .put (54 , "EXIT_REASON_WBINVD" ); //$NON-NLS-1$
70+ exitReasonMap .put (55 , "EXIT_REASON_XSETBV" ); //$NON-NLS-1$
71+ exitReasonMap .put (56 , "EXIT_REASON_APIC_WRITE" ); //$NON-NLS-1$
72+ exitReasonMap .put (57 , "EXIT_REASON_RDRAND" ); //$NON-NLS-1$
73+ exitReasonMap .put (58 , "EXIT_REASON_INVPCID" ); //$NON-NLS-1$
74+ exitReasonMap .put (59 , "EXIT_REASON_VMFUNC" ); //$NON-NLS-1$
75+ exitReasonMap .put (60 , "EXIT_REASON_ENCLS" ); //$NON-NLS-1$
76+ exitReasonMap .put (61 , "EXIT_REASON_RDSEED" ); //$NON-NLS-1$
77+ exitReasonMap .put (62 , "EXIT_REASON_PML_FULL" ); //$NON-NLS-1$
78+ exitReasonMap .put (63 , "EXIT_REASON_XSAVES" ); //$NON-NLS-1$
79+ exitReasonMap .put (64 , "EXIT_REASON_XRSTORS" ); //$NON-NLS-1$
80+ exitReasonMap .put (67 , "EXIT_REASON_UMWAIT" ); //$NON-NLS-1$
81+ exitReasonMap .put (68 , "EXIT_REASON_TPAUSE" ); //$NON-NLS-1$
82+ exitReasonMap .put (74 , "EXIT_REASON_BUS_LOCK" ); //$NON-NLS-1$
83+ exitReasonMap .put (75 , "EXIT_REASON_NOTIFY" ); //$NON-NLS-1$
84+ }
85+
86+ /**
87+ * @param code The code of the exit type
88+ * @return The text describing the exit type
89+ */
90+ public static String getExitReasonName (int code ) {
91+ return exitReasonMap .getOrDefault (code , "UNKNOWN_EXIT_REASON" ); //$NON-NLS-1$
92+ }
93+ }
0 commit comments