From 3a2e117e220f000f95187ea1e1bbe83b0ed5fdfb Mon Sep 17 00:00:00 2001 From: Paul Mundt Date: Tue, 1 May 2007 16:33:10 +0900 Subject: sh: Add die chain notifiers. Add the atomic die chains in, kprobes needs these. Signed-off-by: Paul Mundt --- include/asm-sh/kdebug.h | 35 +++++++++++++++++++++++++++++++++++ include/asm-sh/system.h | 3 +++ 2 files changed, 38 insertions(+) create mode 100644 include/asm-sh/kdebug.h (limited to 'include/asm-sh') diff --git a/include/asm-sh/kdebug.h b/include/asm-sh/kdebug.h new file mode 100644 index 000000000000..ef009baf5a11 --- /dev/null +++ b/include/asm-sh/kdebug.h @@ -0,0 +1,35 @@ +#ifndef __ASM_SH_KDEBUG_H +#define __ASM_SH_KDEBUG_H + +#include + +struct pt_regs; + +struct die_args { + struct pt_regs *regs; + int trapnr; +}; + +int register_die_notifier(struct notifier_block *nb); +int unregister_die_notifier(struct notifier_block *nb); +int register_page_fault_notifier(struct notifier_block *nb); +int unregister_page_fault_notifier(struct notifier_block *nb); +extern struct atomic_notifier_head shdie_chain; + +/* Grossly misnamed. */ +enum die_val { + DIE_TRAP, + DIE_PAGE_FAULT, +}; + +static inline int notify_die(enum die_val val, struct pt_regs *regs, + int trap, int sig) +{ + struct die_args args = { + .regs = regs, + .trapnr = trap, + }; + + return atomic_notifier_call_chain(&shdie_chain, val, &args); +} +#endif /* __ASM_SH_KDEBUG_H */ diff --git a/include/asm-sh/system.h b/include/asm-sh/system.h index 4a6a19f4f8a4..127af304865f 100644 --- a/include/asm-sh/system.h +++ b/include/asm-sh/system.h @@ -9,6 +9,7 @@ #include #include #include +#include /* * switch_to() should switch tasks to task nr n, first @@ -255,6 +256,8 @@ static inline unsigned long __cmpxchg(volatile void * ptr, unsigned long old, (unsigned long)_n_, sizeof(*(ptr))); \ }) +extern void die(const char *str, struct pt_regs *regs, long err) __attribute__ ((noreturn)); + extern void *set_exception_table_vec(unsigned int vec, void *handler); static inline void *set_exception_table_evt(unsigned int evt, void *handler) -- cgit v1.2.3