[ARM] 5221/1: fix ldm/stm emulation for kprobes
authorNicolas Pitre <nico@cam.org>
Thu, 21 Aug 2008 22:22:49 +0000 (23:22 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Mon, 1 Sep 2008 11:06:33 +0000 (12:06 +0100)
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>
arch/arm/kernel/kprobes-decode.c

index b4565bb..da1f949 100644 (file)
@@ -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;
        }
 }