diff options
author | Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com> | 2005-06-23 03:09:33 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-06-23 12:45:23 -0400 |
commit | 1674eafcbd3e3c68556cf19fbf4a2c30f7add729 (patch) | |
tree | d57a4698902a4bc2c2e6a08d24c42ec2a5c67706 /include/asm-ia64/kprobes.h | |
parent | a5403183d84d419651672f1aee5ff2273d185efa (diff) |
[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/kprobes.h')
-rw-r--r-- | include/asm-ia64/kprobes.h | 17 |
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 @@ | |||
30 | 30 | ||
31 | #define BREAK_INST (long)(__IA64_BREAK_KPROBE << 6) | 31 | #define BREAK_INST (long)(__IA64_BREAK_KPROBE << 6) |
32 | 32 | ||
33 | typedef union cmp_inst { | ||
34 | struct { | ||
35 | unsigned long long qp : 6; | ||
36 | unsigned long long p1 : 6; | ||
37 | unsigned long long c : 1; | ||
38 | unsigned long long r2 : 7; | ||
39 | unsigned long long r3 : 7; | ||
40 | unsigned long long p2 : 6; | ||
41 | unsigned long long ta : 1; | ||
42 | unsigned long long x2 : 2; | ||
43 | unsigned long long tb : 1; | ||
44 | unsigned long long opcode : 4; | ||
45 | unsigned long long reserved : 23; | ||
46 | }f; | ||
47 | unsigned long long l; | ||
48 | } cmp_inst_t; | ||
49 | |||
33 | struct kprobe; | 50 | struct kprobe; |
34 | 51 | ||
35 | typedef struct _bundle { | 52 | typedef struct _bundle { |