diff options
Diffstat (limited to 'arch/powerpc/include/asm/debug.h')
-rw-r--r-- | arch/powerpc/include/asm/debug.h | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/arch/powerpc/include/asm/debug.h b/arch/powerpc/include/asm/debug.h new file mode 100644 index 000000000000..716d2f089eb6 --- /dev/null +++ b/arch/powerpc/include/asm/debug.h | |||
@@ -0,0 +1,56 @@ | |||
1 | /* | ||
2 | * Copyright (C) 1999 Cort Dougan <cort@cs.nmt.edu> | ||
3 | */ | ||
4 | #ifndef _ASM_POWERPC_DEBUG_H | ||
5 | #define _ASM_POWERPC_DEBUG_H | ||
6 | |||
7 | struct pt_regs; | ||
8 | |||
9 | extern struct dentry *powerpc_debugfs_root; | ||
10 | |||
11 | #if defined(CONFIG_DEBUGGER) || defined(CONFIG_KEXEC) | ||
12 | |||
13 | extern int (*__debugger)(struct pt_regs *regs); | ||
14 | extern int (*__debugger_ipi)(struct pt_regs *regs); | ||
15 | extern int (*__debugger_bpt)(struct pt_regs *regs); | ||
16 | extern int (*__debugger_sstep)(struct pt_regs *regs); | ||
17 | extern int (*__debugger_iabr_match)(struct pt_regs *regs); | ||
18 | extern int (*__debugger_dabr_match)(struct pt_regs *regs); | ||
19 | extern int (*__debugger_fault_handler)(struct pt_regs *regs); | ||
20 | |||
21 | #define DEBUGGER_BOILERPLATE(__NAME) \ | ||
22 | static inline int __NAME(struct pt_regs *regs) \ | ||
23 | { \ | ||
24 | if (unlikely(__ ## __NAME)) \ | ||
25 | return __ ## __NAME(regs); \ | ||
26 | return 0; \ | ||
27 | } | ||
28 | |||
29 | DEBUGGER_BOILERPLATE(debugger) | ||
30 | DEBUGGER_BOILERPLATE(debugger_ipi) | ||
31 | DEBUGGER_BOILERPLATE(debugger_bpt) | ||
32 | DEBUGGER_BOILERPLATE(debugger_sstep) | ||
33 | DEBUGGER_BOILERPLATE(debugger_iabr_match) | ||
34 | DEBUGGER_BOILERPLATE(debugger_dabr_match) | ||
35 | DEBUGGER_BOILERPLATE(debugger_fault_handler) | ||
36 | |||
37 | #else | ||
38 | static inline int debugger(struct pt_regs *regs) { return 0; } | ||
39 | static inline int debugger_ipi(struct pt_regs *regs) { return 0; } | ||
40 | static inline int debugger_bpt(struct pt_regs *regs) { return 0; } | ||
41 | static inline int debugger_sstep(struct pt_regs *regs) { return 0; } | ||
42 | static inline int debugger_iabr_match(struct pt_regs *regs) { return 0; } | ||
43 | static inline int debugger_dabr_match(struct pt_regs *regs) { return 0; } | ||
44 | static inline int debugger_fault_handler(struct pt_regs *regs) { return 0; } | ||
45 | #endif | ||
46 | |||
47 | extern int set_dabr(unsigned long dabr); | ||
48 | #ifdef CONFIG_PPC_ADV_DEBUG_REGS | ||
49 | extern void do_send_trap(struct pt_regs *regs, unsigned long address, | ||
50 | unsigned long error_code, int signal_code, int brkpt); | ||
51 | #else | ||
52 | extern void do_dabr(struct pt_regs *regs, unsigned long address, | ||
53 | unsigned long error_code); | ||
54 | #endif | ||
55 | |||
56 | #endif /* _ASM_POWERPC_DEBUG_H */ | ||