This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Fix simulator


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=6c869779dad0cf028bd787e6ebbc0780ee4afe13

commit 6c869779dad0cf028bd787e6ebbc0780ee4afe13
Author: Anthony Green <green@moxielogic.com>
Date:   Mon Sep 4 10:00:37 2017 -0400

    Fix simulator

Diff:
---
 sim/moxie/ChangeLog |  5 +++++
 sim/moxie/interp.c  | 18 +++++++++++-------
 2 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/sim/moxie/ChangeLog b/sim/moxie/ChangeLog
index 2371ff1..ba228ce 100644
--- a/sim/moxie/ChangeLog
+++ b/sim/moxie/ChangeLog
@@ -1,3 +1,8 @@
+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.
+
 2016-01-10  Mike Frysinger  <vapier@gentoo.org>
 
 	* config.in, configure: Regenerate.
diff --git a/sim/moxie/interp.c b/sim/moxie/interp.c
index c9605d4..217aef3 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);
 }


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]