diff options
author | Christoph Hellwig <hch@lst.de> | 2007-05-12 17:56:11 +0200 |
---|---|---|
committer | Haavard Skinnemoen <hskinnemoen@atmel.com> | 2007-05-13 17:07:46 +0200 |
commit | 9caebec7b8093574fca5a334a1939530872d75e3 (patch) | |
tree | 344415b09f6c08dfc8741420f7410f4e6105b584 /include/asm-avr32 | |
parent | 5d1938c83ca826891a02badef7c9ea8ed57e01a2 (diff) | |
download | blackbird-op-linux-9caebec7b8093574fca5a334a1939530872d75e3.tar.gz blackbird-op-linux-9caebec7b8093574fca5a334a1939530872d75e3.zip |
[AVR32] optimize pagefault path
Avoid the costly notifier list in the pagefault path and call
the kprobes code directly. The same change went into the 2.6.22
cycle for powerpc, 2s390 and sparc64 already.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
Diffstat (limited to 'include/asm-avr32')
-rw-r--r-- | include/asm-avr32/kdebug.h | 17 | ||||
-rw-r--r-- | include/asm-avr32/kprobes.h | 1 |
2 files changed, 14 insertions, 4 deletions
diff --git a/include/asm-avr32/kdebug.h b/include/asm-avr32/kdebug.h index de419278fc39..7f54e2b15d13 100644 --- a/include/asm-avr32/kdebug.h +++ b/include/asm-avr32/kdebug.h @@ -5,13 +5,22 @@ /* Grossly misnamed. */ enum die_val { - DIE_FAULT, DIE_BREAKPOINT, DIE_SSTEP, - DIE_PAGE_FAULT, }; -int register_page_fault_notifier(struct notifier_block *nb); -int unregister_page_fault_notifier(struct notifier_block *nb); +/* + * These are only here because kprobes.c wants them to implement a + * blatant layering violation. Will hopefully go away soon once all + * architectures are updated. + */ +static inline int register_page_fault_notifier(struct notifier_block *nb) +{ + return 0; +} +static inline int unregister_page_fault_notifier(struct notifier_block *nb) +{ + return 0; +} #endif /* __ASM_AVR32_KDEBUG_H */ diff --git a/include/asm-avr32/kprobes.h b/include/asm-avr32/kprobes.h index 09a5cbe2f896..190a6377c809 100644 --- a/include/asm-avr32/kprobes.h +++ b/include/asm-avr32/kprobes.h @@ -26,6 +26,7 @@ struct arch_specific_insn { kprobe_opcode_t insn[MAX_INSN_SIZE]; }; +extern int kprobe_fault_handler(struct pt_regs *regs, int trapnr); extern int kprobe_exceptions_notify(struct notifier_block *self, unsigned long val, void *data); |