[PATCH, committed] moxie sim: fix stepping

Anthony Green green@moxielogic.com
Mon Sep 4 14:17:00 GMT 2017


I'm checking in the attached patch which fixes stepping within the
moxie simulator.  I'm not sure when this regression was introduced,
but the simulator aborts in sim_events_preprocess() without this
change.

AG


2017-09-03  Anthony Green  <green@moxielogic.com>

* interp.c (sim_engine_run): Always pass scpu into
  sim_engine_halt.  Process events within inner loop.
-------------- next part --------------
diff --git a/sim/moxie/interp.c b/sim/moxie/interp.c
index c9605d4c47..217aef36f7 100644
--- a/sim/moxie/interp.c
+++ b/sim/moxie/interp.c
@@ -343,7 +343,7 @@ sim_engine_run (SIM_DESC sd,
 		default:
 		  {
 		    MOXIE_TRACE_INSN ("SIGILL3");
-		    sim_engine_halt (sd, NULL, NULL, pc, sim_stopped, SIM_SIGILL);
+		    sim_engine_halt (sd, scpu, NULL, pc, sim_stopped, SIM_SIGILL);
 		    break;
 		  }
 		}
@@ -394,7 +394,7 @@ sim_engine_run (SIM_DESC sd,
 		  break;
 		default:
 		  MOXIE_TRACE_INSN ("SIGILL2");
-		  sim_engine_halt (sd, NULL, NULL, pc, sim_stopped, SIM_SIGILL);
+		  sim_engine_halt (sd, scpu, NULL, pc, sim_stopped, SIM_SIGILL);
 		  break;
 		}
 	    }
@@ -408,7 +408,7 @@ sim_engine_run (SIM_DESC sd,
 	    case 0x00: /* bad */
 	      opc = opcode;
 	      MOXIE_TRACE_INSN ("SIGILL0");
-	      sim_engine_halt (sd, NULL, NULL, pc, sim_stopped, SIM_SIGILL);
+	      sim_engine_halt (sd, scpu, NULL, pc, sim_stopped, SIM_SIGILL);
 	      break;
 	    case 0x01: /* ldi.l (immediate) */
 	      {
@@ -666,7 +666,7 @@ sim_engine_run (SIM_DESC sd,
 	      {
 		opc = opcode;
 		MOXIE_TRACE_INSN ("SIGILL0");
-		sim_engine_halt (sd, NULL, NULL, pc, sim_stopped, SIM_SIGILL);
+		sim_engine_halt (sd, scpu, NULL, pc, sim_stopped, SIM_SIGILL);
 		break;
 	      }
 	    case 0x19: /* jsr */
@@ -933,7 +933,7 @@ sim_engine_run (SIM_DESC sd,
 		  {
 		  case 0x1: /* SYS_exit */
 		    {
-		      sim_engine_halt (sd, NULL, NULL, pc, sim_exited,
+		      sim_engine_halt (sd, scpu, NULL, pc, sim_exited,
 				       cpu.asregs.regs[2]);
 		      break;
 		    }
@@ -1046,7 +1046,7 @@ sim_engine_run (SIM_DESC sd,
 	      break;
 	    case 0x35: /* brk */
 	      MOXIE_TRACE_INSN ("brk");
-	      sim_engine_halt (sd, NULL, NULL, pc, sim_stopped, SIM_SIGTRAP);
+	      sim_engine_halt (sd, scpu, NULL, pc, sim_stopped, SIM_SIGTRAP);
 	      pc -= 2; /* Adjust pc */
 	      break;
 	    case 0x36: /* ldo.b */
@@ -1100,7 +1100,7 @@ sim_engine_run (SIM_DESC sd,
 	    default:
 	      opc = opcode;
 	      MOXIE_TRACE_INSN ("SIGILL1");
-	      sim_engine_halt (sd, NULL, NULL, pc, sim_stopped, SIM_SIGILL);
+	      sim_engine_halt (sd, scpu, NULL, pc, sim_stopped, SIM_SIGILL);
 	      break;
 	    }
 	}
@@ -1108,6 +1108,10 @@ sim_engine_run (SIM_DESC sd,
       cpu.asregs.insts++;
       pc += 2;
       cpu.asregs.regs[PC_REGNO] = pc;
+
+      if (sim_events_tick (sd))
+	sim_events_process (sd);
+
     } while (1);
 }
 


More information about the Gdb-patches mailing list