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
7struct pt_regs;
8
9/* Grossly misnamed. */
10enum 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
25enum 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
35extern void die(const char *, struct pt_regs *,long);
36void die_addr(const char *str, struct pt_regs *regs, long err, long gp_addr);
37extern int __must_check __die(const char *, struct pt_regs *, long);
38extern void show_stack_regs(struct pt_regs *regs);
39extern void __show_regs(struct pt_regs *regs, enum show_regs_mode,
40			const char *log_lvl);
41extern void show_iret_regs(struct pt_regs *regs, const char *log_lvl);
42extern unsigned long oops_begin(void);
43extern void oops_end(unsigned long, struct pt_regs *, int signr);
44
45#endif /* _ASM_X86_KDEBUG_H */
46