summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas Pitre <nico@cam.org>2008-08-22 00:22:49 +0200
committerRussell King <rmk+kernel@arm.linux.org.uk>2008-09-01 13:06:33 +0200
commit2d4b6c9aeb94cb9cb5c250f23e81e6d00b461372 (patch)
tree5ed34ac92f126090e1f54e6112d590ce98ea41a4
parent[ARM] 5211/2: fix a couple warnings from BUG() usage (diff)
downloadlinux-2d4b6c9aeb94cb9cb5c250f23e81e6d00b461372.tar.xz
linux-2d4b6c9aeb94cb9cb5c250f23e81e6d00b461372.zip
[ARM] 5221/1: fix ldm/stm emulation for kprobes
Logic for the p bit was reversed. Signed-off-by: Nicolas Pitre <nico@marvell.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r--arch/arm/kernel/kprobes-decode.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/arm/kernel/kprobes-decode.c b/arch/arm/kernel/kprobes-decode.c
index b4565bb133c1..da1f94906a4e 100644
--- a/arch/arm/kernel/kprobes-decode.c
+++ b/arch/arm/kernel/kprobes-decode.c
@@ -488,7 +488,7 @@ static void __kprobes simulate_ldm1stm1(struct kprobe *p, struct pt_regs *regs)
if (!ubit)
addr -= reg_count;
- addr += (!pbit ^ !ubit);
+ addr += (!pbit == !ubit);
reg_bit_vector = insn & 0xffff;
while (reg_bit_vector) {
@@ -503,7 +503,7 @@ static void __kprobes simulate_ldm1stm1(struct kprobe *p, struct pt_regs *regs)
if (wbit) {
if (!ubit)
addr -= reg_count;
- addr -= (!pbit ^ !ubit);
+ addr -= (!pbit == !ubit);
regs->uregs[rn] = (long)addr;
}
}