diff options
author | Lennert Buytenhek <buytenh@wantstofly.org> | 2008-04-24 01:31:45 -0400 |
---|---|---|
committer | Nicolas Pitre <nico@cam.org> | 2008-04-28 15:54:55 -0400 |
commit | a3fd133c24e16d430ba21f3d9f5c0b8faeeb37fe (patch) | |
tree | 22e5141fbfa1f7be804a156d1ce79f900ebd5e98 /arch/arm/kernel/kprobes-decode.c | |
parent | 8f79ff0cb5330a92032c30ff586745d3016b34ca (diff) |
kprobes/arm: fix decoding of arithmetic immediate instructions
The ARM kprobes arithmetic immediate instruction decoder
(space_cccc_001x()) was accidentally zero'ing out not only the Rn and
Rd arguments, but the lower nibble of the immediate argument as well
-- this patch fixes this.
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Acked-by: Nicolas Pitre <nico@marvell.com>
Diffstat (limited to 'arch/arm/kernel/kprobes-decode.c')
-rw-r--r-- | arch/arm/kernel/kprobes-decode.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/arm/kernel/kprobes-decode.c b/arch/arm/kernel/kprobes-decode.c index d51bc8b60557..b4565bb133c1 100644 --- a/arch/arm/kernel/kprobes-decode.c +++ b/arch/arm/kernel/kprobes-decode.c | |||
@@ -1176,7 +1176,7 @@ space_cccc_001x(kprobe_opcode_t insn, struct arch_specific_insn *asi) | |||
1176 | * *S (bit 20) updates condition codes | 1176 | * *S (bit 20) updates condition codes |
1177 | * ADC/SBC/RSC reads the C flag | 1177 | * ADC/SBC/RSC reads the C flag |
1178 | */ | 1178 | */ |
1179 | insn &= 0xfff00ff0; /* Rn = r0, Rd = r0 */ | 1179 | insn &= 0xfff00fff; /* Rn = r0, Rd = r0 */ |
1180 | asi->insn[0] = insn; | 1180 | asi->insn[0] = insn; |
1181 | asi->insn_handler = (insn & (1 << 20)) ? /* S-bit */ | 1181 | asi->insn_handler = (insn & (1 << 20)) ? /* S-bit */ |
1182 | emulate_alu_imm_rwflags : emulate_alu_imm_rflags; | 1182 | emulate_alu_imm_rwflags : emulate_alu_imm_rflags; |