Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
[linux-2.6] / include / asm-x86_64 / nmi.h
1 /*
2  *  linux/include/asm-i386/nmi.h
3  */
4 #ifndef ASM_NMI_H
5 #define ASM_NMI_H
6
7 #include <linux/pm.h>
8  
9 struct pt_regs;
10  
11 typedef int (*nmi_callback_t)(struct pt_regs * regs, int cpu);
12  
13 /** 
14  * set_nmi_callback
15  *
16  * Set a handler for an NMI. Only one handler may be
17  * set. Return 1 if the NMI was handled.
18  */
19 void set_nmi_callback(nmi_callback_t callback);
20  
21 /** 
22  * unset_nmi_callback
23  *
24  * Remove the handler previously set.
25  */
26 void unset_nmi_callback(void);
27  
28 #ifdef CONFIG_PM
29  
30 /** Replace the PM callback routine for NMI. */
31 struct pm_dev * set_nmi_pm_callback(pm_callback callback);
32
33 /** Unset the PM callback routine back to the default. */
34 void unset_nmi_pm_callback(struct pm_dev * dev);
35
36 #else
37
38 static inline struct pm_dev * set_nmi_pm_callback(pm_callback callback)
39 {
40         return 0;
41
42  
43 static inline void unset_nmi_pm_callback(struct pm_dev * dev)
44 {
45 }
46
47 #endif /* CONFIG_PM */
48  
49 extern void default_do_nmi(struct pt_regs *);
50 extern void die_nmi(char *str, struct pt_regs *regs);
51
52 #define get_nmi_reason() inb(0x61)
53
54 extern int panic_on_timeout;
55 extern int unknown_nmi_panic;
56
57 extern int check_nmi_watchdog(void);
58  
59 #endif /* ASM_NMI_H */