Add sim_set_callbacks.
authorSteve Chamberlain <sac@cygnus>
Fri, 13 Oct 1995 22:06:30 +0000 (22:06 +0000)
committerSteve Chamberlain <sac@cygnus>
Fri, 13 Oct 1995 22:06:30 +0000 (22:06 +0000)
sim/arm/ChangeLog
sim/arm/wrapper.c [new file with mode: 0644]
sim/w65/interp.c

index d961fbaf59e8729022063d9f2c688772967e1346..41f70321b77fb637fc3fb456f62d641fdfcc044b 100644 (file)
@@ -1,3 +1,12 @@
+Fri Oct 13 15:04:05 1995  steve chamberlain  <sac@slash.cygnus.com>
+
+       * wrapper.c (sim_set_callbacks): New.
+
+Thu Sep 28 19:45:56 1995  Doug Evans  <dje@deneb.cygnus.com>
+
+       * armos.c (ARMul_OSHandleSWI): Result of read/write calls is
+       number of bytes not read/written (or -1).
+
 Wed Sep 20 13:35:54 1995  Ian Lance Taylor  <ian@cygnus.com>
 
        * Makefile.in (maintainer-clean): New synonym for realclean.
diff --git a/sim/arm/wrapper.c b/sim/arm/wrapper.c
new file mode 100644 (file)
index 0000000..fdbff86
--- /dev/null
@@ -0,0 +1,259 @@
+/* run front end support for arm
+   Copyright (C) 1995 Free Software Foundation, Inc.
+
+This file is part of ARM SIM
+
+GNU CC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU CC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU CC; see the file COPYING.  If not, write to
+Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111, USA.  */
+
+#include <stdio.h>
+#include <stdarg.h>
+#include <armdefs.h>
+#include <bfd.h>
+#include <signal.h>
+#include "callback.h"
+#include "remote-sim.h"
+static struct ARMul_State *state;
+
+static void 
+init ()
+{
+  static int done;
+  if (!done)
+    {
+      ARMul_EmulateInit();
+      state = ARMul_NewState ();
+      ARMul_MemoryInit(state, 1<<21);
+      ARMul_OSInit(state);
+      ARMul_CoProInit(state); 
+      done = 1;
+    }
+
+}
+void 
+ARMul_ConsolePrint (ARMul_State * state, const char *format,...)
+{
+  va_list ap;
+  va_start (ap, format);
+  vprintf (format, ap);
+  va_end (ap);
+}
+
+ARMword 
+ARMul_Debug (ARMul_State * state, ARMword pc, ARMword instr)
+{
+
+}
+
+void 
+sim_size (size)
+     int size;
+{
+  init ();
+  ARMul_MemoryInit (state, 1 << size);
+}
+
+
+void 
+sim_set_profile ()
+{
+}
+void 
+sim_set_profile_size ()
+{
+}
+
+int
+sim_write (addr, buffer, size)
+     SIM_ADDR addr;
+     unsigned char *buffer;
+     int size;
+{
+  int i;
+  init ();
+  for (i = 0; i < size; i++)
+    {
+      ARMul_WriteByte (state, addr+i, buffer[i]);
+    }
+  return size;
+}
+
+int
+sim_read (addr, buffer, size)
+     SIM_ADDR addr;
+     unsigned char *buffer;
+     int size;
+{
+  int i;
+  init ();
+  for (i = 0; i < size; i++)
+    {
+      buffer[i] = ARMul_ReadByte (state, addr + i);
+    }
+  return size;
+}
+
+void 
+sim_trace ()
+{
+}
+
+static int rc;
+void
+sim_resume (step, siggnal)
+     int step, siggnal;
+{
+  if (step)
+    {
+      rc = SIGTRAP;
+      state->Reg[15] =       ARMul_DoInstr (state);
+    }
+  else
+    {
+      state->Reg[15] =       ARMul_DoProg (state);
+    }
+}
+
+void
+sim_create_inferior (start_address, argv, env)
+     SIM_ADDR start_address;
+     char **argv;
+     char **env;
+{
+  ARMul_SetPC(state, start_address);
+}
+
+void
+sim_info (verbose)
+     int verbose;
+{
+}
+
+
+int 
+frommem (state, memory)
+     struct ARMul_State *state;
+     unsigned char *memory;
+{
+  if (state->bigendSig == HIGH)
+    {
+      return (memory[0] << 24)
+       | (memory[1] << 16)
+       | (memory[2] << 8)
+       | (memory[3] << 0);
+    }
+  else
+    {
+      return (memory[3] << 24)
+       | (memory[2] << 16)
+       | (memory[1] << 8)
+       | (memory[0] << 0);
+    }
+}
+
+
+void 
+tomem (state, memory,  val)
+     struct ARMul_State *state;
+     unsigned char *memory;
+     int val;
+{
+  if (state->bigendSig == HIGH)
+    {
+      memory[0] = val >> 24;
+      memory[1] = val >> 16;
+      memory[2] = val >> 8;
+      memory[3] = val >> 0;
+    }
+  else
+    {
+      memory[3] = val >> 24;
+      memory[2] = val >> 16;
+      memory[1] = val >> 8;
+      memory[0] = val >> 0;
+    }
+}
+
+void
+sim_store_register (rn, memory)
+     int rn;
+     unsigned char *memory;
+{
+  init ();
+  ARMul_SetReg(state, state->Mode, rn, frommem (state, memory));
+}
+
+void
+sim_fetch_register (rn, memory)
+     int rn;
+     unsigned char *memory;
+{
+  init ();
+  tomem (state, memory, ARMul_GetReg(state, state->Mode, rn));
+}
+
+
+
+
+void
+sim_open (name)
+     char *name;
+{
+  /* nothing to do */
+}
+
+void
+sim_close (quitting)
+     int quitting;
+{
+  /* nothing to do */
+}
+
+int
+sim_load (prog, from_tty)
+     char *prog;
+     int from_tty;
+{
+  /* Return nonzero so GDB will handle it.  */
+  return 1;
+}
+
+void
+sim_stop_reason (reason, sigrc)
+     enum sim_stop *reason;
+     int *sigrc;
+{
+  *reason = sim_stopped;
+  *sigrc = rc;
+}
+void
+sim_kill ()
+{
+  /* nothing to do */
+}
+
+void
+sim_do_command (cmd)
+     char *cmd;
+{
+  printf_filtered ("This simulator does not accept any commands.\n");
+}
+
+
+void
+sim_set_callbacks (ptr)
+struct host_callback_struct *ptr;
+{
+
+}
index 7b2bf8ad8929718a50871914b183453bf5cdfaaf..c1be8d9803ff6fc7fa54df04ca424b713ff2ea1c 100644 (file)
@@ -33,6 +33,7 @@
 #endif
 #include <sys/param.h>
 #include "bfd.h"
+#include "callback.h"
 #include "remote-sim.h"
 #include "../../newlib/libc/sys/w65/sys/syscall.h"
 
@@ -373,3 +374,10 @@ sim_create_inferior (start_address, argv, env)
   pc = start_address;
   sim_store_register (16, (unsigned char *) &pc);
 }
+
+void
+sim_set_callbacks (ptr)
+struct host_callback_struct *ptr;
+{
+
+}