From 395b0d8a3fdd8915a4897b9b925d56fa42745dcc Mon Sep 17 00:00:00 2001 From: James Bowman Date: Tue, 29 Sep 2015 23:47:34 +0000 Subject: sim: ft32: correct simulation of MEMCPY and MEMSET The MEMCPY and MEMSET instructions should only examine the low 15 bits of their length arguments. --- sim/ft32/ChangeLog | 5 +++++ sim/ft32/interp.c | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) (limited to 'sim/ft32') diff --git a/sim/ft32/ChangeLog b/sim/ft32/ChangeLog index 47218b4..f5b14ec 100644 --- a/sim/ft32/ChangeLog +++ b/sim/ft32/ChangeLog @@ -1,5 +1,10 @@ 2015-09-29 James Bowman + * interp.c (step_once): Correct length for MEMSET and MEMCPY + instructions. + +2015-09-29 James Bowman + * interp.c (cpu_mem_write): Do no write PM when locked. 2015-09-22 James Bowman diff --git a/sim/ft32/interp.c b/sim/ft32/interp.c index c769ff7..f7daf1c 100644 --- a/sim/ft32/interp.c +++ b/sim/ft32/interp.c @@ -602,7 +602,7 @@ step_once (SIM_DESC sd) uint32_t src = r_1v; uint32_t dst = cpu->state.regs[r_d]; uint32_t i; - for (i = 0; i < rimmv; i++) + for (i = 0; i < (rimmv & 0x7fff); i++) PUT_BYTE (dst + i, GET_BYTE (src + i)); } break; @@ -621,7 +621,7 @@ step_once (SIM_DESC sd) /* memset instruction. */ uint32_t dst = cpu->state.regs[r_d]; uint32_t i; - for (i = 0; i < rimmv; i++) + for (i = 0; i < (rimmv & 0x7fff); i++) PUT_BYTE (dst + i, r_1v); } break; -- cgit v1.1