From edf625929c33f272dd0e5163bc5422882660e662 Mon Sep 17 00:00:00 2001 From: Daniel Beer Date: Tue, 13 Sep 2011 13:36:19 +1200 Subject: [PATCH] Fix immediate-mode addressing with byte instructions. Immediate mode is implemented using auto-increment register indexing, but the advance is always 2 for PC-indexed operands. Bug introduced in 2aed1b90a48cb794641c2a6ff1308c0fcc8904f8. --- sim.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sim.c b/sim.c index b775348..18afe3b 100644 --- a/sim.c +++ b/sim.c @@ -110,7 +110,7 @@ static int fetch_operand(struct sim_device *dev, return 0; } addr = dev->regs[reg]; - dev->regs[reg] += is_byte ? 1 : 2; + dev->regs[reg] += (is_byte && reg != MSP430_REG_PC) ? 1 : 2; break; }