summaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
authorJon Medhurst <tixy@yxit.co.uk>2011-04-12 08:45:22 +0200
committerNicolas Pitre <nicolas.pitre@linaro.org>2011-04-29 05:40:57 +0200
commit0e384ed164bdc2ad832270e81dbd14a17c143e78 (patch)
treefe4b9460c9ff13c3c1e8fa2b3003971b0046f81e /arch/arm
parentARM: kprobes: Reject probing of LDRB instructions which load PC (diff)
downloadlinux-0e384ed164bdc2ad832270e81dbd14a17c143e78.tar.xz
linux-0e384ed164bdc2ad832270e81dbd14a17c143e78.zip
ARM: kprobes: Add emulation of RBIT instruction
The v6T2 RBIT instruction was accidentally being emulated correctly, this patch adds correct decoding for the instruction. Signed-off-by: Jon Medhurst <tixy@yxit.co.uk> Signed-off-by: Nicolas Pitre <nicolas.pitre@linaro.org>
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/kernel/kprobes-decode.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/arm/kernel/kprobes-decode.c b/arch/arm/kernel/kprobes-decode.c
index a37745f2abba..b6bbc0b5ecd6 100644
--- a/arch/arm/kernel/kprobes-decode.c
+++ b/arch/arm/kernel/kprobes-decode.c
@@ -1320,9 +1320,10 @@ space_cccc_0110__1(kprobe_opcode_t insn, struct arch_specific_insn *asi)
/* REV : cccc 0110 1011 xxxx xxxx xxxx 0011 xxxx */
/* REV16 : cccc 0110 1011 xxxx xxxx xxxx 1011 xxxx */
+ /* RBIT : cccc 0110 1111 xxxx xxxx xxxx 0011 xxxx */
/* REVSH : cccc 0110 1111 xxxx xxxx xxxx 1011 xxxx */
if ((insn & 0x0ff00070) == 0x06b00030 ||
- (insn & 0x0ff000f0) == 0x06f000b0)
+ (insn & 0x0ff00070) == 0x06f00030)
return prep_emulate_rd12rm0(insn, asi);
/* SADD16 : cccc 0110 0001 xxxx xxxx xxxx 0001 xxxx :GE */