--- /dev/null
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef _ASM_X86_TRAPNR_H
+#define _ASM_X86_TRAPNR_H
+
+/* Interrupts/Exceptions */
+
+#define X86_TRAP_DE             0      /* Divide-by-zero */
+#define X86_TRAP_DB             1      /* Debug */
+#define X86_TRAP_NMI            2      /* Non-maskable Interrupt */
+#define X86_TRAP_BP             3      /* Breakpoint */
+#define X86_TRAP_OF             4      /* Overflow */
+#define X86_TRAP_BR             5      /* Bound Range Exceeded */
+#define X86_TRAP_UD             6      /* Invalid Opcode */
+#define X86_TRAP_NM             7      /* Device Not Available */
+#define X86_TRAP_DF             8      /* Double Fault */
+#define X86_TRAP_OLD_MF                 9      /* Coprocessor Segment Overrun */
+#define X86_TRAP_TS            10      /* Invalid TSS */
+#define X86_TRAP_NP            11      /* Segment Not Present */
+#define X86_TRAP_SS            12      /* Stack Segment Fault */
+#define X86_TRAP_GP            13      /* General Protection Fault */
+#define X86_TRAP_PF            14      /* Page Fault */
+#define X86_TRAP_SPURIOUS      15      /* Spurious Interrupt */
+#define X86_TRAP_MF            16      /* x87 Floating-Point Exception */
+#define X86_TRAP_AC            17      /* Alignment Check */
+#define X86_TRAP_MC            18      /* Machine Check */
+#define X86_TRAP_XF            19      /* SIMD Floating-Point Exception */
+#define X86_TRAP_VE            20      /* Virtualization Exception */
+#define X86_TRAP_CP            21      /* Control Protection Exception */
+#define X86_TRAP_IRET          32      /* IRET Exception */
+
+#endif
 
 
 #include <asm/debugreg.h>
 #include <asm/siginfo.h>                       /* TRAP_TRACE, ... */
+#include <asm/trapnr.h>
 
 #define dotraplinkage __visible
 
                                      unsigned long fault_address);
 #endif
 
-/* Interrupts/Exceptions */
-enum {
-       X86_TRAP_DE = 0,        /*  0, Divide-by-zero */
-       X86_TRAP_DB,            /*  1, Debug */
-       X86_TRAP_NMI,           /*  2, Non-maskable Interrupt */
-       X86_TRAP_BP,            /*  3, Breakpoint */
-       X86_TRAP_OF,            /*  4, Overflow */
-       X86_TRAP_BR,            /*  5, Bound Range Exceeded */
-       X86_TRAP_UD,            /*  6, Invalid Opcode */
-       X86_TRAP_NM,            /*  7, Device Not Available */
-       X86_TRAP_DF,            /*  8, Double Fault */
-       X86_TRAP_OLD_MF,        /*  9, Coprocessor Segment Overrun */
-       X86_TRAP_TS,            /* 10, Invalid TSS */
-       X86_TRAP_NP,            /* 11, Segment Not Present */
-       X86_TRAP_SS,            /* 12, Stack Segment Fault */
-       X86_TRAP_GP,            /* 13, General Protection Fault */
-       X86_TRAP_PF,            /* 14, Page Fault */
-       X86_TRAP_SPURIOUS,      /* 15, Spurious Interrupt */
-       X86_TRAP_MF,            /* 16, x87 Floating-Point Exception */
-       X86_TRAP_AC,            /* 17, Alignment Check */
-       X86_TRAP_MC,            /* 18, Machine Check */
-       X86_TRAP_XF,            /* 19, SIMD Floating-Point Exception */
-       X86_TRAP_IRET = 32,     /* 32, IRET Exception */
-};
-
 /*
  * Page fault error code bits:
  *