Set cmderr when data is accessed while busy.
[riscv-isa-sim.git] / riscv / debug_module.cc
index 8d93e9e423385316cb2891233490989cf216461d..af719746a286495a3caf946e9a4161653223f056 100644 (file)
@@ -221,6 +221,10 @@ bool debug_module_t::dmi_read(unsigned address, uint32_t *value)
     unsigned i = address - DMI_DATA0;
     result = dmdata.read32(4 * i);
 
+    if (abstractcs.busy && abstractcs.cmderr == abstractcs.CMDERR_NONE) {
+      abstractcs.cmderr = abstractcs.CMDERR_BUSY;
+    }
+
     bool autoexec = false;
     switch (i) {
       case 0:   autoexec = abstractcs.autoexec0; break;
@@ -376,6 +380,10 @@ bool debug_module_t::dmi_write(unsigned address, uint32_t value)
     unsigned i = address - DMI_DATA0;
     dmdata.write32(4 * i, value);
 
+    if (abstractcs.busy && abstractcs.cmderr == abstractcs.CMDERR_NONE) {
+      abstractcs.cmderr = abstractcs.CMDERR_BUSY;
+    }
+
     bool autoexec = false;
     switch (i) {
       case 0:   autoexec = abstractcs.autoexec0; break;