Merge master.kernel.org:/home/rmk/linux-2.6-serial
[linux-2.6] / include / asm-sparc64 / kdebug.h
1 #ifndef _SPARC64_KDEBUG_H
2 #define _SPARC64_KDEBUG_H
3
4 /* Nearly identical to x86_64/i386 code. */
5
6 #include <linux/notifier.h>
7
8 struct pt_regs;
9
10 struct die_args {
11         struct pt_regs *regs;
12         const char *str;
13         long err;
14         int trapnr;
15         int signr;
16 };
17
18 /* Note - you should never unregister because that can race with NMIs.
19  * If you really want to do it first unregister - then synchronize_sched
20  * - then free.
21  */
22 int register_die_notifier(struct notifier_block *nb);
23 extern struct notifier_block *sparc64die_chain;
24
25 extern void bad_trap(struct pt_regs *, long);
26
27 /* Grossly misnamed. */
28 enum die_val {
29         DIE_OOPS = 1,
30         DIE_DEBUG,      /* ta 0x70 */
31         DIE_DEBUG_2,    /* ta 0x71 */
32         DIE_DIE,
33         DIE_TRAP,
34         DIE_TRAP_TL1,
35         DIE_GPF,
36         DIE_CALL,
37         DIE_PAGE_FAULT,
38 };
39
40 static inline int notify_die(enum die_val val,char *str, struct pt_regs *regs,
41                              long err, int trap, int sig)
42 {
43         struct die_args args = { .regs          = regs,
44                                  .str           = str,
45                                  .err           = err,
46                                  .trapnr        = trap,
47                                  .signr         = sig };
48
49         return notifier_call_chain(&sparc64die_chain, val, &args);
50 }
51
52 #endif