diff options
author | Christoph Hellwig <hch@infradead.org> | 2007-04-30 06:56:46 -0400 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2007-05-02 06:57:39 -0400 |
commit | 9f90b997de4efd5404a8c52f89c400f0f4e2d216 (patch) | |
tree | 7dd6adc27b196e672fedd464a42700e336cd210a /include/asm-powerpc | |
parent | eb609e52d188775da738a1ffd1e982e6212c77d7 (diff) |
[POWERPC] Minor fault path optimization
Call the kprobes pagefault handler directly instead of going through
the complex notifier chain.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'include/asm-powerpc')
-rw-r--r-- | include/asm-powerpc/kdebug.h | 17 | ||||
-rw-r--r-- | include/asm-powerpc/kprobes.h | 1 |
2 files changed, 15 insertions, 3 deletions
diff --git a/include/asm-powerpc/kdebug.h b/include/asm-powerpc/kdebug.h index 532bfee934f4..df996b933def 100644 --- a/include/asm-powerpc/kdebug.h +++ b/include/asm-powerpc/kdebug.h | |||
@@ -18,8 +18,20 @@ struct die_args { | |||
18 | 18 | ||
19 | extern int register_die_notifier(struct notifier_block *); | 19 | extern int register_die_notifier(struct notifier_block *); |
20 | extern int unregister_die_notifier(struct notifier_block *); | 20 | extern int unregister_die_notifier(struct notifier_block *); |
21 | extern int register_page_fault_notifier(struct notifier_block *); | 21 | |
22 | extern int unregister_page_fault_notifier(struct notifier_block *); | 22 | /* |
23 | * These are only here because kprobes.c wants them to implement a | ||
24 | * blatant layering violation. Will hopefully go away soon once all | ||
25 | * architectures are updated. | ||
26 | */ | ||
27 | static inline int register_page_fault_notifier(struct notifier_block *nb) | ||
28 | { | ||
29 | return 0; | ||
30 | } | ||
31 | static inline int unregister_page_fault_notifier(struct notifier_block *nb) | ||
32 | { | ||
33 | return 0; | ||
34 | } | ||
23 | extern struct atomic_notifier_head powerpc_die_chain; | 35 | extern struct atomic_notifier_head powerpc_die_chain; |
24 | 36 | ||
25 | /* Grossly misnamed. */ | 37 | /* Grossly misnamed. */ |
@@ -29,7 +41,6 @@ enum die_val { | |||
29 | DIE_DABR_MATCH, | 41 | DIE_DABR_MATCH, |
30 | DIE_BPT, | 42 | DIE_BPT, |
31 | DIE_SSTEP, | 43 | DIE_SSTEP, |
32 | DIE_PAGE_FAULT, | ||
33 | }; | 44 | }; |
34 | 45 | ||
35 | static inline int notify_die(enum die_val val,char *str,struct pt_regs *regs,long err,int trap, int sig) | 46 | static inline int notify_die(enum die_val val,char *str,struct pt_regs *regs,long err,int trap, int sig) |
diff --git a/include/asm-powerpc/kprobes.h b/include/asm-powerpc/kprobes.h index fc713e595982..b0e40ff32ee0 100644 --- a/include/asm-powerpc/kprobes.h +++ b/include/asm-powerpc/kprobes.h | |||
@@ -116,5 +116,6 @@ struct kprobe_ctlblk { | |||
116 | 116 | ||
117 | extern int kprobe_exceptions_notify(struct notifier_block *self, | 117 | extern int kprobe_exceptions_notify(struct notifier_block *self, |
118 | unsigned long val, void *data); | 118 | unsigned long val, void *data); |
119 | extern int kprobe_fault_handler(struct pt_regs *regs, int trapnr); | ||
119 | #endif /* __KERNEL__ */ | 120 | #endif /* __KERNEL__ */ |
120 | #endif /* _ASM_POWERPC_KPROBES_H */ | 121 | #endif /* _ASM_POWERPC_KPROBES_H */ |