linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / include / asm-i386 / kdebug.h
1 #ifndef _I386_KDEBUG_H
2 #define _I386_KDEBUG_H 1
3
4 /*
5  * Aug-05 2004 Ported by Prasanna S Panchamukhi <prasanna@in.ibm.com>
6  * from x86_64 architecture.
7  */
8 #include <linux/notifier.h>
9
10 struct pt_regs;
11
12 struct die_args {
13         struct pt_regs *regs;
14         const char *str;
15         long err;
16         int trapnr;
17         int signr;
18 };
19
20 /* Note - you should never unregister because that can race with NMIs.
21    If you really want to do it first unregister - then synchronize_sched - then free.
22   */
23 int register_die_notifier(struct notifier_block *nb);
24 extern struct notifier_block *i386die_chain;
25
26
27 /* Grossly misnamed. */
28 enum die_val {
29         DIE_OOPS = 1,
30         DIE_INT3,
31         DIE_DEBUG,
32         DIE_PANIC,
33         DIE_NMI,
34         DIE_DIE,
35         DIE_NMIWATCHDOG,
36         DIE_KERNELDEBUG,
37         DIE_TRAP,
38         DIE_GPF,
39         DIE_CALL,
40         DIE_NMI_IPI,
41         DIE_PAGE_FAULT,
42 };
43
44 static inline int notify_die(enum die_val val, const char *str,
45                         struct pt_regs *regs, long err, int trap, int sig)
46 {
47         struct die_args args = {
48                 .regs = regs,
49                 .str = str,
50                 .err = err,
51                 .trapnr = trap,
52                 .signr = sig
53         };
54         return notifier_call_chain(&i386die_chain, val, &args);
55 }
56
57 #endif