summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorAnil S Keshavamurthy <anil.s.keshavamurthy@intel.com>2005-06-23 00:09:33 -0700
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-06-23 09:45:23 -0700
commit1674eafcbd3e3c68556cf19fbf4a2c30f7add729 (patch)
treed57a4698902a4bc2c2e6a08d24c42ec2a5c67706 /include
parenta5403183d84d419651672f1aee5ff2273d185efa (diff)
downloadlinux-1674eafcbd3e3c68556cf19fbf4a2c30f7add729.tar.gz
linux-1674eafcbd3e3c68556cf19fbf4a2c30f7add729.tar.bz2
linux-1674eafcbd3e3c68556cf19fbf4a2c30f7add729.zip
[PATCH] Kprobes IA64: cmp ctype unc support
The current Kprobes when patching the original instruction with the break instruction tries to retain the original qualifying predicate(qp), however for cmp.crel.ctype where ctype == unc, which is a special instruction always needs to be executed irrespective of qp. Hence, if the instruction we are patching is of this type, then we should not copy the original qp to the break instruction, this is because we always want the break fault to happen so that we can emulate the instruction. This patch is based on the feedback given by David Mosberger 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')
-rw-r--r--include/asm-ia64/kprobes.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/include/asm-ia64/kprobes.h b/include/asm-ia64/kprobes.h
index cec4d9958307..7b700035e36d 100644
--- a/include/asm-ia64/kprobes.h
+++ b/include/asm-ia64/kprobes.h
@@ -30,6 +30,23 @@
#define BREAK_INST (long)(__IA64_BREAK_KPROBE << 6)
+typedef union cmp_inst {
+ struct {
+ unsigned long long qp : 6;
+ unsigned long long p1 : 6;
+ unsigned long long c : 1;
+ unsigned long long r2 : 7;
+ unsigned long long r3 : 7;
+ unsigned long long p2 : 6;
+ unsigned long long ta : 1;
+ unsigned long long x2 : 2;
+ unsigned long long tb : 1;
+ unsigned long long opcode : 4;
+ unsigned long long reserved : 23;
+ }f;
+ unsigned long long l;
+} cmp_inst_t;
+
struct kprobe;
typedef struct _bundle {