Change decode_compound_collector to use std::vector
[deliverable/binutils-gdb.git] / sim / ppc / sim_calls.c
index b5cb72d6ee1ef81152f4af8d8f8a24f09f6c94a8..eb5d1a792b26d21a6807f63215e36dd6377ac410 100644 (file)
@@ -4,7 +4,7 @@
 
     This program 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 of the License, or
+    the Free Software Foundation; either version 3 of the License, or
     (at your option) any later version.
 
     This program is distributed in the hope that it will be useful,
@@ -13,8 +13,7 @@
     GNU General Public License for more details.
  
     You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+    along with this program; if not, see <http://www.gnu.org/licenses/>.
  
     */
 
@@ -25,7 +24,6 @@
 
 #include "psim.h"
 #include "options.h"
-#include "registers.h"
 
 #undef printf_filtered /* blow away the mapping */
 
 #endif
 #endif
 
+#include "libiberty.h"
 #include "bfd.h"
 #include "gdb/callback.h"
 #include "gdb/remote-sim.h"
-#include "gdb/sim-ppc.h"
+#include "gdb/signals.h"
 
 /* Define the rate at which the simulator should poll the host
    for a quit. */
@@ -56,7 +55,7 @@ static int poll_quit_count = POLL_QUIT_INTERVAL;
 
 /* Structures used by the simulator, for gdb just have static structures */
 
-static psim *simulator;
+psim *simulator;
 static device *root_device;
 static host_callback *callbacks;
 
@@ -64,7 +63,7 @@ SIM_DESC
 sim_open (SIM_OPEN_KIND kind,
          host_callback *callback,
          struct bfd *abfd,
-         char **argv)
+         char * const *argv)
 {
   callbacks = callback;
 
@@ -78,7 +77,8 @@ sim_open (SIM_OPEN_KIND kind,
   root_device = psim_tree();
   simulator = NULL;
 
-  psim_options(root_device, argv + 1);
+  if (psim_options (root_device, argv + 1, kind) == NULL)
+    return NULL;
 
   if (ppc_trace[trace_opts])
     print_options ();
@@ -98,7 +98,7 @@ sim_close (SIM_DESC sd, int quitting)
 
 
 SIM_RC
-sim_load (SIM_DESC sd, char *prog, bfd *abfd, int from_tty)
+sim_load (SIM_DESC sd, const char *prog, bfd *abfd, int from_tty)
 {
   TRACE(trace_gdb, ("sim_load(prog=%s, from_tty=%d) called\n",
                    prog, from_tty));
@@ -144,7 +144,7 @@ sim_read (SIM_DESC sd, SIM_ADDR mem, unsigned char *buf, int length)
 
 
 int
-sim_write (SIM_DESC sd, SIM_ADDR mem, unsigned char *buf, int length)
+sim_write (SIM_DESC sd, SIM_ADDR mem, const unsigned char *buf, int length)
 {
   int result = psim_write_memory(simulator, MAX_NR_PROCESSORS,
                                 buf, mem, length,
@@ -154,128 +154,6 @@ sim_write (SIM_DESC sd, SIM_ADDR mem, unsigned char *buf, int length)
   return result;
 }
 
-
-/* A table mapping register numbers (as received from GDB) to register
-   names.  This table does not handle special-purpose registers: the
-   SPR whose number is N is assigned the register number
-   sim_ppc_spr0_regnum + N.  */
-static const char *gdb_register_name_table[] = {
-
-  /* General-purpose registers: 0 .. 31.  */
-  "r0",   "r1",  "r2",  "r3",  "r4",  "r5",  "r6",  "r7", 
-  "r8",   "r9", "r10", "r11", "r12", "r13", "r14", "r15", 
-  "r16", "r17", "r18", "r19", "r20", "r21", "r22", "r23", 
-  "r24", "r25", "r26", "r27", "r28", "r29", "r30", "r31", 
-
-  /* Floating-point registers: 32 .. 63.  */
-  "f0",   "f1",  "f2",  "f3",  "f4",  "f5",  "f6",  "f7", 
-  "f8",   "f9", "f10", "f11", "f12", "f13", "f14", "f15", 
-  "f16", "f17", "f18", "f19", "f20", "f21", "f22", "f23", 
-  "f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31",
-
-  /* Altivec registers: 64 .. 95.  */
-  "vr0",   "vr1",  "vr2",  "vr3",  "vr4",  "vr5",  "vr6",  "vr7", 
-  "vr8",   "vr9", "vr10", "vr11", "vr12", "vr13", "vr14", "vr15", 
-  "vr16", "vr17", "vr18", "vr19", "vr20", "vr21", "vr22", "vr23", 
-  "vr24", "vr25", "vr26", "vr27", "vr28", "vr29", "vr30", "vr31", 
-  
-  /* SPE APU GPR upper halves: 96 .. 127.  */
-  "rh0",   "rh1",  "rh2",  "rh3",  "rh4",  "rh5",  "rh6",  "rh7", 
-  "rh8",   "rh9", "rh10", "rh11", "rh12", "rh13", "rh14", "rh15", 
-  "rh16", "rh17", "rh18", "rh19", "rh20", "rh21", "rh22", "rh23", 
-  "rh24", "rh25", "rh26", "rh27", "rh28", "rh29", "rh30", "rh31", 
-
-  /* SPE APU full 64-bit vector registers: 128 .. 159.  */
-  "ev0",   "ev1",  "ev2",  "ev3",  "ev4",  "ev5",  "ev6",  "ev7", 
-  "ev8",   "ev9", "ev10", "ev11", "ev12", "ev13", "ev14", "ev15", 
-  "ev16", "ev17", "ev18", "ev19", "ev20", "ev21", "ev22", "ev23", 
-  "ev24", "ev25", "ev26", "ev27", "ev28", "ev29", "ev30", "ev31", 
-
-  /* Segment registers: 160 .. 175.  */
-  "sr0", "sr1",  "sr2",  "sr3",  "sr4",  "sr5",  "sr6",  "sr7", 
-  "sr8", "sr9", "sr10", "sr11", "sr12", "sr13", "sr14", "sr15", 
-
-  /* Miscellaneous (not special-purpose!) registers: 176 .. 181.  */
-  "pc", "ps", "cr", "fpscr", "acc", "vscr"
-};
-
-enum {
-  gdb_register_name_table_size = (sizeof (gdb_register_name_table)
-                                  / sizeof (gdb_register_name_table[0])),
-};
-
-
-/* Return the name of the register whose number is REGNUM, or zero if
-   REGNUM is an invalid register number.  */
-static const char *
-gdb_register_name (int regnum)
-{
-  /* Is it a special-purpose register?  */
-  if (sim_ppc_spr0_regnum <= regnum
-      && regnum < sim_ppc_spr0_regnum + sim_ppc_num_sprs)
-    {
-      int spr = regnum - sim_ppc_spr0_regnum;
-      if (spr_is_valid (spr))
-        return spr_name (spr);
-      else
-        return 0;
-    }
-
-  /* Is it a valid non-SPR register number?  */
-  else if (0 <= regnum && regnum < gdb_register_name_table_size)
-    return gdb_register_name_table[regnum];
-
-  /* Not a valid register number at all.  */
-  else
-    return 0;
-}
-
-
-int
-sim_fetch_register (SIM_DESC sd, int regno, unsigned char *buf, int length)
-{
-  const char *regname;
-
-  if (simulator == NULL) {
-    return 0;
-  }
-
-  regname = gdb_register_name (regno);
-
-  /* Occasionally, GDB will pass invalid register numbers to us; it
-     wants us to ignore them.  */
-  if (! regname)
-    return -1;
-
-  TRACE(trace_gdb, ("sim_fetch_register(regno=%d(%s), buf=0x%lx)\n",
-                   regno, regname, (long)buf));
-  return psim_read_register(simulator, MAX_NR_PROCESSORS,
-                           buf, regname, raw_transfer);
-}
-
-
-int
-sim_store_register (SIM_DESC sd, int regno, unsigned char *buf, int length)
-{
-  const char *regname;
-
-  if (simulator == NULL)
-    return 0;
-
-  regname = gdb_register_name (regno);
-
-  /* Occasionally, GDB will pass invalid register numbers to us; it
-     wants us to ignore them.  */
-  if (! regname)
-    return -1;
-
-  TRACE(trace_gdb, ("sim_store_register(regno=%d(%s), buf=0x%lx)\n",
-                   regno, regname, (long)buf));
-  return psim_write_register(simulator, MAX_NR_PROCESSORS,
-                            buf, regname, raw_transfer);
-}
-
-
 void
 sim_info (SIM_DESC sd, int verbose)
 {
@@ -287,8 +165,8 @@ sim_info (SIM_DESC sd, int verbose)
 SIM_RC
 sim_create_inferior (SIM_DESC sd,
                     struct bfd *abfd,
-                    char **argv,
-                    char **envp)
+                    char * const *argv,
+                    char * const *envp)
 {
   unsigned_word entry_point;
   TRACE(trace_gdb, ("sim_create_inferior(start_address=0x%x, ...)\n",
@@ -320,13 +198,13 @@ sim_stop_reason (SIM_DESC sd, enum sim_stop *reason, int *sigrc)
   case was_continuing:
     *reason = sim_stopped;
     if (status.signal == 0)
-      *sigrc = SIGTRAP;
+      *sigrc = GDB_SIGNAL_TRAP;
     else
       *sigrc = status.signal;
     break;
   case was_trap:
     *reason = sim_stopped;
-    *sigrc = SIGTRAP;
+    *sigrc = GDB_SIGNAL_TRAP;
     break;
   case was_exited:
     *reason = sim_exited;
@@ -370,7 +248,7 @@ sim_resume (SIM_DESC sd, int step, int siggnal)
 }
 
 void
-sim_do_command (SIM_DESC sd, char *cmd)
+sim_do_command (SIM_DESC sd, const char *cmd)
 {
   TRACE(trace_gdb, ("sim_do_commands(cmd=%s) called\n",
                    cmd ? cmd : "(null)"));
@@ -381,6 +259,11 @@ sim_do_command (SIM_DESC sd, char *cmd)
   }
 }
 
+char **
+sim_complete_command (SIM_DESC sd, const char *text, const char *word)
+{
+  return NULL;
+}
 
 /* Polling, if required */
 
@@ -503,6 +386,16 @@ sim_io_error (SIM_DESC sd, const char *fmt, ...)
 
 /****/
 
+void NORETURN
+error (const char *msg, ...)
+{
+  va_list ap;
+  va_start(ap, msg);
+  callbacks->evprintf_filtered (callbacks, msg, ap);
+  va_end(ap);
+  callbacks->error (callbacks, "");
+}
+
 void *
 zalloc(long size)
 {
@@ -512,8 +405,3 @@ zalloc(long size)
   memset(memory, 0, size);
   return memory;
 }
-
-void zfree(void *data)
-{
-  free(data);
-}
This page took 0.026778 seconds and 4 git commands to generate.