From db94eab4b27d1c9808b0233fd2803e4e7c46bd6c Mon Sep 17 00:00:00 2001 From: "Bruce G. Burns" Date: Mon, 14 Jan 2013 16:47:59 +1300 Subject: [PATCH] Simulator bug fixes. Fix handling of V flag, and ensure that high byte is discarded for byte operations. --- drivers/sim.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/sim.c b/drivers/sim.c index acf1b3f..ed7ce4d 100644 --- a/drivers/sim.c +++ b/drivers/sim.c @@ -172,7 +172,7 @@ static int store_operand(struct sim_device *dev, uint16_t addr, uint16_t data) { if (amode == MSP430_AMODE_REGISTER) { - dev->regs[reg] = data; + dev->regs[reg] = is_byte ? data & 0xFF : data; return 0; } @@ -266,7 +266,7 @@ static int step_double(struct sim_device *dev, uint16_t ins) if (res_data & (msb << 1)) dev->regs[MSP430_REG_SR] |= MSP430_SR_C; if (!((src_data ^ dst_data) & msb) && - (src_data ^ dst_data) & msb) + (src_data ^ res_data) & msb) dev->regs[MSP430_REG_SR] |= MSP430_SR_V; break;