xref: /linux/arch/x86/include/asm/kdebug.h (revision a06c3fad49a50d5d5eb078f93e70f4d3eca5d5a5)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _ASM_X86_KDEBUG_H
3 #define _ASM_X86_KDEBUG_H
4 
5 #include <linux/notifier.h>
6 
7 struct pt_regs;
8 
9 /* Grossly misnamed. */
10 enum die_val {
11 	DIE_OOPS = 1,
12 	DIE_INT3,
13 	DIE_DEBUG,
14 	DIE_PANIC,
15 	DIE_NMI,
16 	DIE_DIE,
17 	DIE_KERNELDEBUG,
18 	DIE_TRAP,
19 	DIE_GPF,
20 	DIE_CALL,
21 	DIE_PAGE_FAULT,
22 	DIE_NMIUNKNOWN,
23 };
24 
25 enum show_regs_mode {
26 	SHOW_REGS_SHORT,
27 	/*
28 	 * For when userspace crashed, but we don't think it's our fault, and
29 	 * therefore don't print kernel registers.
30 	 */
31 	SHOW_REGS_USER,
32 	SHOW_REGS_ALL
33 };
34 
35 extern void die(const char *, struct pt_regs *,long);
36 void die_addr(const char *str, struct pt_regs *regs, long err, long gp_addr);
37 extern int __must_check __die(const char *, struct pt_regs *, long);
38 extern void show_stack_regs(struct pt_regs *regs);
39 extern void __show_regs(struct pt_regs *regs, enum show_regs_mode,
40 			const char *log_lvl);
41 extern void show_iret_regs(struct pt_regs *regs, const char *log_lvl);
42 extern unsigned long oops_begin(void);
43 extern void oops_end(unsigned long, struct pt_regs *, int signr);
44 
45 #endif /* _ASM_X86_KDEBUG_H */
46