aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-powerpc/kprobes.h
diff options
context:
space:
mode:
authorAnanth N Mavinakayanahalli <ananth@in.ibm.com>2005-11-07 04:00:10 -0500
committerLinus Torvalds <torvalds@g5.osdl.org>2005-11-07 10:53:45 -0500
commit0dc036c91ac11b2b76bb91b59d8c7af919aa4a8d (patch)
tree88318deadc78c7dd416b60f2fac4b8eef1f61a28 /include/asm-powerpc/kprobes.h
parent8a5c4dc5e5d72b7802f5647082ccf3861a94f013 (diff)
[PATCH] Kprobes: Track kprobe on a per_cpu basis - ppc64 changes
PPC64 changes to track kprobe execution on a per-cpu basis. We now track the kprobe state machine independently on each cpu using an arch specific kprobe control block. Signed-off-by: Ananth N Mavinakayanahalli <ananth@in.ibm.com> Signed-off-by: Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include/asm-powerpc/kprobes.h')
-rw-r--r--include/asm-powerpc/kprobes.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/include/asm-powerpc/kprobes.h b/include/asm-powerpc/kprobes.h
index b2f09f17fbe0..6cd0a3bfa280 100644
--- a/include/asm-powerpc/kprobes.h
+++ b/include/asm-powerpc/kprobes.h
@@ -27,6 +27,7 @@
27 */ 27 */
28#include <linux/types.h> 28#include <linux/types.h>
29#include <linux/ptrace.h> 29#include <linux/ptrace.h>
30#include <linux/percpu.h>
30 31
31struct pt_regs; 32struct pt_regs;
32 33
@@ -53,6 +54,20 @@ struct arch_specific_insn {
53 kprobe_opcode_t *insn; 54 kprobe_opcode_t *insn;
54}; 55};
55 56
57struct prev_kprobe {
58 struct kprobe *kp;
59 unsigned long status;
60 unsigned long saved_msr;
61};
62
63/* per-cpu kprobe control block */
64struct kprobe_ctlblk {
65 unsigned long kprobe_status;
66 unsigned long kprobe_saved_msr;
67 struct pt_regs jprobe_saved_regs;
68 struct prev_kprobe prev_kprobe;
69};
70
56#ifdef CONFIG_KPROBES 71#ifdef CONFIG_KPROBES
57extern int kprobe_exceptions_notify(struct notifier_block *self, 72extern int kprobe_exceptions_notify(struct notifier_block *self,
58 unsigned long val, void *data); 73 unsigned long val, void *data);