aboutsummaryrefslogtreecommitdiff
path: root/sim/ft32
diff options
context:
space:
mode:
authorJames Bowman <james.bowman@ftdichip.com>2015-09-28 23:49:36 +0000
committerMike Frysinger <vapier@gentoo.org>2015-09-29 23:36:56 -0400
commit71c34ca7a0f54c8c8ad39b72ea1badf9f9a1ade7 (patch)
treea65c1c798fd07be0509996cf3ea421cf784e1bc6 /sim/ft32
parentAutomatic date update in version.in (diff)
downloadbinutils-gdb-71c34ca7a0f54c8c8ad39b72ea1badf9f9a1ade7.tar.gz
binutils-gdb-71c34ca7a0f54c8c8ad39b72ea1badf9f9a1ade7.tar.bz2
binutils-gdb-71c34ca7a0f54c8c8ad39b72ea1badf9f9a1ade7.zip
sim: ft32: correctly simulate PM write port
The FT32 simulator was not correctly simulating the behavior of the program memory (PM) write port. When it is locked, writes to the data register do nothing.
Diffstat (limited to 'sim/ft32')
-rw-r--r--sim/ft32/ChangeLog4
-rw-r--r--sim/ft32/interp.c8
2 files changed, 10 insertions, 2 deletions
diff --git a/sim/ft32/ChangeLog b/sim/ft32/ChangeLog
index 29f661fca23..47218b4e652 100644
--- a/sim/ft32/ChangeLog
+++ b/sim/ft32/ChangeLog
@@ -1,3 +1,7 @@
+2015-09-29 James Bowman <james.bowman@ftdichip.com>
+
+ * interp.c (cpu_mem_write): Do no write PM when locked.
+
2015-09-22 James Bowman <james.bowman@ftdichip.com>
* ft32/interp.c (cpu_mem_read): Call getchar when ea is 0x10000.
diff --git a/sim/ft32/interp.c b/sim/ft32/interp.c
index a20907c5c86..c769ff7a3be 100644
--- a/sim/ft32/interp.c
+++ b/sim/ft32/interp.c
@@ -205,8 +205,12 @@ static void cpu_mem_write (SIM_DESC sd, uint32_t dw, uint32_t ea, uint32_t d)
cpu->state.pm_addr = d;
break;
case 0x1fc88:
- /* Write to PM */
- ft32_write_item (sd, dw, cpu->state.pm_addr, d);
+ if (cpu->state.pm_unlock)
+ {
+ /* Write to PM. */
+ ft32_write_item (sd, dw, cpu->state.pm_addr, d);
+ cpu->state.pm_addr += 4;
+ }
break;
case 0x1fffc:
/* Normal exit. */