Back out change. The NetBSD changes need Jason Thorpe's approval, but
[deliverable/binutils-gdb.git] / gdb / ppc-bdm.c
index e10ebace770c1a7d0e7caa6e4879360a74814496..59fac1fde2dc07941abd0df588f6b7451a27bd6e 100644 (file)
@@ -1,6 +1,7 @@
 /* Remote target communications for the Macraigor Systems BDM Wiggler
    talking to a Motorola PPC 8xx ADS board
-   Copyright 1996, 1997 Free Software Foundation, Inc.
+   Copyright 1996, 1997, 1998, 1999, 2000, 2001
+   Free Software Foundation, Inc.
 
    This file is part of GDB.
 
 #include "bfd.h"
 #include "symfile.h"
 #include "target.h"
-#include "gdb_wait.h"
 #include "gdbcmd.h"
 #include "objfiles.h"
 #include "gdb-stabs.h"
 #include <sys/types.h>
-#include <signal.h>
 #include "serial.h"
 #include "ocd.h"
+#include "ppc-tdep.h"
+#include "regcache.h"
 
 static void bdm_ppc_open (char *name, int from_tty);
 
-static int bdm_ppc_wait (int pid, struct target_waitstatus *target_status);
+static ptid_t bdm_ppc_wait (ptid_t ptid,
+                            struct target_waitstatus *target_status);
 
 static void bdm_ppc_fetch_registers (int regno);
 
@@ -77,9 +79,7 @@ char nowatchdog[4] =
    NAME is the filename used for communication.  */
 
 static void
-bdm_ppc_open (name, from_tty)
-     char *name;
-     int from_tty;
+bdm_ppc_open (char *name, int from_tty)
 {
   CORE_ADDR watchdogaddr = 0xff000004;
 
@@ -98,10 +98,8 @@ bdm_ppc_open (name, from_tty)
    Returns "pid" (though it's not clear what, if anything, that
    means in the case of this target).  */
 
-static int
-bdm_ppc_wait (pid, target_status)
-     int pid;
-     struct target_waitstatus *target_status;
+static ptid_t
+bdm_ppc_wait (ptid_t ptid, struct target_waitstatus *target_status)
 {
   int stop_reason;
 
@@ -112,7 +110,7 @@ bdm_ppc_wait (pid, target_status)
   if (stop_reason)
     {
       target_status->value.sig = TARGET_SIGNAL_INT;
-      return inferior_pid;
+      return inferior_ptid;
     }
 
   target_status->value.sig = TARGET_SIGNAL_TRAP;       /* XXX for now */
@@ -127,7 +125,7 @@ bdm_ppc_wait (pid, target_status)
   }
 #endif
 
-  return inferior_pid;
+  return inferior_ptid;
 }
 \f
 static int bdm_regmap[] =
@@ -153,9 +151,9 @@ static int bdm_regmap[] =
  */
 
 static void
-bdm_ppc_fetch_registers (regno)
-     int regno;
+bdm_ppc_fetch_registers (int regno)
 {
+  struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
   int i;
   unsigned char *regs, *beginregs, *endregs, *almostregs;
   unsigned char midregs[32];
@@ -165,7 +163,7 @@ bdm_ppc_fetch_registers (regno)
   int reglen, beginreglen, endreglen;
 
 #if 1
-  for (i = 0; i < (FPLAST_REGNUM - FP0_REGNUM + 1); i++)
+  for (i = 0; i < ppc_num_fprs; i++)
     {
       midregs[i] = -1;
     }
@@ -203,8 +201,10 @@ bdm_ppc_fetch_registers (regno)
 /*      printf("Asking for register %d\n", first_regno); */
 
       /* if asking for an invalid register */
-      if ((first_regno == MQ_REGNUM) ||
-         ((first_regno >= FP0_REGNUM) && (first_regno <= FPLAST_REGNUM)))
+      if ((first_regno == gdbarch_tdep (current_gdbarch)->ppc_mq_regnum)
+          || (first_regno == gdbarch_tdep (current_gdbarch)->ppc_fpscr_regnum)
+         || ((first_regno >= tdep->ppc_fp0_regnum)
+              && (first_regno < tdep->ppc_fp0_regnum + ppc_num_fprs)))
        {
 /*          printf("invalid reg request!\n"); */
          supply_register (first_regno, NULL);
@@ -221,10 +221,12 @@ bdm_ppc_fetch_registers (regno)
     {
 /*      printf("Asking for registers %d to %d\n", first_regno, last_regno); */
       beginregs = ocd_read_bdm_registers (first_bdm_regno,
-                                         FP0_REGNUM - 1, &beginreglen);
-      endregs = (strcat (midregs,
-                        ocd_read_bdm_registers (FPLAST_REGNUM + 1,
-                                         last_bdm_regno - 1, &endreglen)));
+                                         tdep->ppc_fp0_regnum - 1,
+                                          &beginreglen);
+      endregs
+        = (strcat (midregs,
+                   ocd_read_bdm_registers (tdep->ppc_fp0_regnum + ppc_num_fprs,
+                                           last_bdm_regno - 1, &endreglen)));
       almostregs = (strcat (beginregs, endregs));
       regs = (strcat (almostregs, mqreg));
       reglen = beginreglen + 32 + endreglen + 1;
@@ -258,9 +260,9 @@ bdm_ppc_fetch_registers (regno)
    of REGISTERS.  FIXME: ignores errors.  */
 
 static void
-bdm_ppc_store_registers (regno)
-     int regno;
+bdm_ppc_store_registers (int regno)
 {
+  struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
   int i;
   int first_regno, last_regno;
   int first_bdm_regno, last_bdm_regno;
@@ -293,14 +295,17 @@ bdm_ppc_store_registers (regno)
 
       /* only attempt to write if it's a valid ppc 8xx register */
       /* (need to avoid FP regs and MQ reg) */
-      if ((i != MQ_REGNUM) && ((i < FP0_REGNUM) || (i > FPLAST_REGNUM)))
+      if ((i != gdbarch_tdep (current_gdbarch)->ppc_mq_regnum) 
+          && (i != gdbarch_tdep (current_gdbarch)->ppc_fpscr_regnum) 
+          && ((i < tdep->ppc_fp0_regnum)
+              || (i >= tdep->ppc_fp0_regnum + ppc_num_fprs)))
        {
 /*          printf("write valid reg %d\n", bdm_regno); */
-         ocd_write_bdm_registers (bdm_regno, registers + REGISTER_BYTE (i), 4);
+         ocd_write_bdm_registers (bdm_regno, deprecated_registers + DEPRECATED_REGISTER_BYTE (i), 4);
        }
 /*
-   else if (i == MQ_REGNUM)
-   printf("don't write invalid reg %d (MQ_REGNUM)\n", bdm_regno);
+   else if (i == gdbarch_tdep (current_gdbarch)->ppc_mq_regnum)
+   printf("don't write invalid reg %d (PPC_MQ_REGNUM)\n", bdm_regno);
    else
    printf("don't write invalid reg %d\n", bdm_regno);
  */
@@ -322,14 +327,9 @@ a wiggler, specify wiggler and then the port it is connected to\n\
 (e.g. wiggler lpt1).";         /* to_doc */
   bdm_ppc_ops.to_open = bdm_ppc_open;
   bdm_ppc_ops.to_close = ocd_close;
-  bdm_ppc_ops.to_attach = NULL;
-  bdm_ppc_ops.to_post_attach = NULL;
-  bdm_ppc_ops.to_require_attach = NULL;
   bdm_ppc_ops.to_detach = ocd_detach;
-  bdm_ppc_ops.to_require_detach = NULL;
   bdm_ppc_ops.to_resume = ocd_resume;
   bdm_ppc_ops.to_wait = bdm_ppc_wait;
-  bdm_ppc_ops.to_post_wait = NULL;
   bdm_ppc_ops.to_fetch_registers = bdm_ppc_fetch_registers;
   bdm_ppc_ops.to_store_registers = bdm_ppc_store_registers;
   bdm_ppc_ops.to_prepare_to_store = ocd_prepare_to_store;
@@ -337,53 +337,25 @@ a wiggler, specify wiggler and then the port it is connected to\n\
   bdm_ppc_ops.to_files_info = ocd_files_info;
   bdm_ppc_ops.to_insert_breakpoint = ocd_insert_breakpoint;
   bdm_ppc_ops.to_remove_breakpoint = ocd_remove_breakpoint;
-  bdm_ppc_ops.to_terminal_init = NULL;
-  bdm_ppc_ops.to_terminal_inferior = NULL;
-  bdm_ppc_ops.to_terminal_ours_for_output = NULL;
-  bdm_ppc_ops.to_terminal_ours = NULL;
-  bdm_ppc_ops.to_terminal_info = NULL;
   bdm_ppc_ops.to_kill = ocd_kill;
   bdm_ppc_ops.to_load = ocd_load;
-  bdm_ppc_ops.to_lookup_symbol = NULL;
   bdm_ppc_ops.to_create_inferior = ocd_create_inferior;
-  bdm_ppc_ops.to_post_startup_inferior = NULL;
-  bdm_ppc_ops.to_acknowledge_created_inferior = NULL;
-  bdm_ppc_ops.to_clone_and_follow_inferior = NULL;
-  bdm_ppc_ops.to_post_follow_inferior_by_clone = NULL;
-  bdm_ppc_ops.to_insert_fork_catchpoint = NULL;
-  bdm_ppc_ops.to_remove_fork_catchpoint = NULL;
-  bdm_ppc_ops.to_insert_vfork_catchpoint = NULL;
-  bdm_ppc_ops.to_remove_vfork_catchpoint = NULL;
-  bdm_ppc_ops.to_has_forked = NULL;
-  bdm_ppc_ops.to_has_vforked = NULL;
-  bdm_ppc_ops.to_can_follow_vfork_prior_to_exec = NULL;
-  bdm_ppc_ops.to_post_follow_vfork = NULL;
-  bdm_ppc_ops.to_insert_exec_catchpoint = NULL;
-  bdm_ppc_ops.to_remove_exec_catchpoint = NULL;
-  bdm_ppc_ops.to_has_execd = NULL;
-  bdm_ppc_ops.to_reported_exec_events_per_exec_call = NULL;
-  bdm_ppc_ops.to_has_exited = NULL;
   bdm_ppc_ops.to_mourn_inferior = ocd_mourn;
-  bdm_ppc_ops.to_can_run = 0;
-  bdm_ppc_ops.to_notice_signals = 0;
   bdm_ppc_ops.to_thread_alive = ocd_thread_alive;
   bdm_ppc_ops.to_stop = ocd_stop;
-  bdm_ppc_ops.to_pid_to_exec_file = NULL;
-  bdm_ppc_ops.to_core_file_to_sym_file = NULL;
   bdm_ppc_ops.to_stratum = process_stratum;
-  bdm_ppc_ops.DONT_USE = NULL;
   bdm_ppc_ops.to_has_all_memory = 1;
   bdm_ppc_ops.to_has_memory = 1;
   bdm_ppc_ops.to_has_stack = 1;
   bdm_ppc_ops.to_has_registers = 1;
   bdm_ppc_ops.to_has_execution = 1;
-  bdm_ppc_ops.to_sections = NULL;
-  bdm_ppc_ops.to_sections_end = NULL;
   bdm_ppc_ops.to_magic = OPS_MAGIC;
 }                              /* init_bdm_ppc_ops */
 
+extern initialize_file_ftype _initialize_bdm_ppc; /* -Wmissing-prototypes */
+
 void
-_initialize_bdm_ppc ()
+_initialize_bdm_ppc (void)
 {
   init_bdm_ppc_ops ();
   add_target (&bdm_ppc_ops);
This page took 0.028233 seconds and 4 git commands to generate.