aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-ia64
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/asm-ia64
parenta5403183d84d419651672f1aee5ff2273d185efa (diff)
downloadkernel_samsung_aries-1674eafcbd3e3c68556cf19fbf4a2c30f7add729.zip
kernel_samsung_aries-1674eafcbd3e3c68556cf19fbf4a2c30f7add729.tar.gz
kernel_samsung_aries-1674eafcbd3e3c68556cf19fbf4a2c30f7add729.tar.bz2
[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/asm-ia64')
-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 cec4d99..7b70003 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 {