diff options
author | Nicolas Pitre <nico@cam.org> | 2008-08-21 22:22:49 (GMT) |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2008-09-01 11:06:33 (GMT) |
commit | 2d4b6c9aeb94cb9cb5c250f23e81e6d00b461372 (patch) | |
tree | 5ed34ac92f126090e1f54e6112d590ce98ea41a4 /arch/arm/kernel | |
parent | d81030a1badb4e4d08358ff2c2bda9b11d5a6559 (diff) | |
download | linux-2d4b6c9aeb94cb9cb5c250f23e81e6d00b461372.tar.xz |
[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>
Diffstat (limited to 'arch/arm/kernel')
-rw-r--r-- | arch/arm/kernel/kprobes-decode.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/arm/kernel/kprobes-decode.c b/arch/arm/kernel/kprobes-decode.c index b4565bb..da1f949 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; } } |