x86/entry: Convert Divide Error to IDTENTRY
Convert #DE to IDTENTRY: - Implement the C entry point with DEFINE_IDTENTRY - Emit the ASM stub with DECLARE_IDTENTRY - Remove the ASM idtentry in 64bit - Remove the open coded ASM entry code in 32bit - Fixup the XEN/PV code No functional change. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Alexandre Chartre <alexandre.chartre@oracle.com> Acked-by: Peter Zijlstra <peterz@infradead.org> Acked-by: Andy Lutomirski <luto@kernel.org> Link: https://lkml.kernel.org/r/20200505134904.663914713@linutronix.de
This commit is contained in:
@@ -604,6 +604,11 @@ struct trap_array_entry {
|
||||
bool ist_okay;
|
||||
};
|
||||
|
||||
#define TRAP_ENTRY(func, ist_ok) { \
|
||||
.orig = asm_##func, \
|
||||
.xen = xen_asm_##func, \
|
||||
.ist_okay = ist_ok }
|
||||
|
||||
static struct trap_array_entry trap_array[] = {
|
||||
{ debug, xen_xendebug, true },
|
||||
{ double_fault, xen_double_fault, true },
|
||||
@@ -617,7 +622,7 @@ static struct trap_array_entry trap_array[] = {
|
||||
{ entry_INT80_compat, xen_entry_INT80_compat, false },
|
||||
#endif
|
||||
{ page_fault, xen_page_fault, false },
|
||||
{ divide_error, xen_divide_error, false },
|
||||
TRAP_ENTRY(exc_divide_error, false ),
|
||||
{ bounds, xen_bounds, false },
|
||||
{ invalid_op, xen_invalid_op, false },
|
||||
{ device_not_available, xen_device_not_available, false },
|
||||
|
@@ -28,7 +28,7 @@ SYM_CODE_END(xen_\name)
|
||||
_ASM_NOKPROBE(xen_\name)
|
||||
.endm
|
||||
|
||||
xen_pv_trap divide_error
|
||||
xen_pv_trap asm_exc_divide_error
|
||||
xen_pv_trap debug
|
||||
xen_pv_trap xendebug
|
||||
xen_pv_trap int3
|
||||
|
Reference in New Issue
Block a user