summaryrefslogtreecommitdiffstats
path: root/c
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2009-11-25 22:55:51 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2009-11-25 22:55:51 +0000
commit7455087f4f6801aec719b6e8c5022b9dea8eeed3 (patch)
treeb87dd63ec6e46d3b6cd8e0373aa61e5b5b8c74dc /c
parent2009-11-24 Ralf Corsépius <ralf.corsepius@rtems.org> (diff)
downloadrtems-7455087f4f6801aec719b6e8c5022b9dea8eeed3.tar.bz2
2009-11-25 Michael Walle <michael@walle.cc>
* shared/gdbstub/lm32-stub.c: Fix wrong computation of negative branch targets (thanks to Manfred Scheible <mscheible@husware.de>.
Diffstat (limited to 'c')
-rw-r--r--c/src/lib/libbsp/lm32/ChangeLog5
-rw-r--r--c/src/lib/libbsp/lm32/shared/gdbstub/lm32-stub.c4
2 files changed, 7 insertions, 2 deletions
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 <michael@walle.cc>
+
+ * shared/gdbstub/lm32-stub.c: Fix wrong computation of negative branch
+ targets (thanks to Manfred Scheible <mscheible@husware.de>.
+
2009-11-24 Ralf Corsépius <ralf.corsepius@rtems.org>
* 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)