linux/arch/x86/include/asm/traps.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2#ifndef _ASM_X86_TRAPS_H
   3#define _ASM_X86_TRAPS_H
   4
   5#include <linux/context_tracking_state.h>
   6#include <linux/kprobes.h>
   7
   8#include <asm/debugreg.h>
   9#include <asm/idtentry.h>
  10#include <asm/siginfo.h>                        /* TRAP_TRACE, ... */
  11#include <asm/trap_pf.h>
  12
  13#ifdef CONFIG_X86_64
  14asmlinkage __visible notrace struct pt_regs *sync_regs(struct pt_regs *eregs);
  15asmlinkage __visible notrace
  16struct pt_regs *fixup_bad_iret(struct pt_regs *bad_regs);
  17void __init trap_init(void);
  18asmlinkage __visible noinstr struct pt_regs *vc_switch_off_ist(struct pt_regs *eregs);
  19#endif
  20
  21extern bool ibt_selftest(void);
  22
  23#ifdef CONFIG_X86_F00F_BUG
  24/* For handling the FOOF bug */
  25void handle_invalid_op(struct pt_regs *regs);
  26#endif
  27
  28static inline int get_si_code(unsigned long condition)
  29{
  30        if (condition & DR_STEP)
  31                return TRAP_TRACE;
  32        else if (condition & (DR_TRAP0|DR_TRAP1|DR_TRAP2|DR_TRAP3))
  33                return TRAP_HWBKPT;
  34        else
  35                return TRAP_BRKPT;
  36}
  37
  38extern int panic_on_unrecovered_nmi;
  39
  40void math_emulate(struct math_emu_info *);
  41
  42bool fault_in_kernel_space(unsigned long address);
  43
  44#ifdef CONFIG_VMAP_STACK
  45void __noreturn handle_stack_overflow(struct pt_regs *regs,
  46                                      unsigned long fault_address,
  47                                      struct stack_info *info);
  48#endif
  49
  50#endif /* _ASM_X86_TRAPS_H */
  51