From 7455087f4f6801aec719b6e8c5022b9dea8eeed3 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Wed, 25 Nov 2009 22:55:51 +0000 Subject: 2009-11-25 Michael Walle * shared/gdbstub/lm32-stub.c: Fix wrong computation of negative branch targets (thanks to Manfred Scheible . --- c/src/lib/libbsp/lm32/ChangeLog | 5 +++++ c/src/lib/libbsp/lm32/shared/gdbstub/lm32-stub.c | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) (limited to 'c') diff --git a/c/src/lib/libbsp/lm32/ChangeLog b/c/src/lib/libbsp/lm32/ChangeLog index bfce5a3af0..1c7f2c77c6 100644 --- a/c/src/lib/libbsp/lm32/ChangeLog +++ b/c/src/lib/libbsp/lm32/ChangeLog @@ -1,3 +1,8 @@ +2009-11-25 Michael Walle + + * shared/gdbstub/lm32-stub.c: Fix wrong computation of negative branch + targets (thanks to Manfred Scheible . + 2009-11-24 Ralf Corsépius * shared/tsmac/tsmac.c: Remove unused vars. diff --git a/c/src/lib/libbsp/lm32/shared/gdbstub/lm32-stub.c b/c/src/lib/libbsp/lm32/shared/gdbstub/lm32-stub.c index 14c5fb0ea1..eeba61d1be 100644 --- a/c/src/lib/libbsp/lm32/shared/gdbstub/lm32-stub.c +++ b/c/src/lib/libbsp/lm32/shared/gdbstub/lm32-stub.c @@ -740,7 +740,7 @@ void handle_exception(void) { branch_step = 1; branch_target = registers[LM32_REG_PC] - + ((signed)(insn & 0x3ffffff) << 2); + + (((signed)insn << 6) >> 4); } else if ( (opcode == 0x44000000) || (opcode == 0x48000000) @@ -752,7 +752,7 @@ void handle_exception(void) { branch_step = 1; branch_target = registers[LM32_REG_PC] + - + ((signed)(insn & 0x0000ffff) << 2); + + (((signed)insn << 16) >> 14); } else if ( (opcode == 0xd8000000) || (opcode == 0xc0000000) -- cgit v1.2.3