* ada-lang.c (resolve_subexp): Correct arity of binary operators.
[deliverable/binutils-gdb.git] / gdb / alpha-nat.c
index 40bc8746addd4b8d7d230bf9a1729a5ef559b075..f3196dca86baac107ad5ad9c122ef501060fd53e 100644 (file)
 #include "alpha-tdep.h"
 
 #include <sys/ptrace.h>
-#ifdef __linux__
-#include <asm/reg.h>
-#include <alpha/ptrace.h>
-#else
 #include <alpha/coreregs.h>
-#endif
 #include <sys/user.h>
 
-/* Prototypes for local functions. */
-
-static void fetch_osf_core_registers (char *, unsigned, int, CORE_ADDR);
-static void fetch_elf_core_registers (char *, unsigned, int, CORE_ADDR);
 
 /* Extract the register values out of the core file and store
-   them where `read_register' will find them.
+   them into REGCACHE.
 
    CORE_REG_SECT points to the register values themselves, read into memory.
    CORE_REG_SIZE is the size of that area.
@@ -56,7 +47,8 @@ static void fetch_elf_core_registers (char *, unsigned, int, CORE_ADDR);
  */
 
 static void
-fetch_osf_core_registers (char *core_reg_sect, unsigned core_reg_size,
+fetch_osf_core_registers (struct regcache *regcache,
+                         char *core_reg_sect, unsigned core_reg_size,
                          int which, CORE_ADDR reg_addr)
 {
   int regno;
@@ -97,9 +89,9 @@ fetch_osf_core_registers (char *core_reg_sect, unsigned core_reg_size,
 
   for (regno = 0; regno < ALPHA_NUM_REGS; regno++)
     {
-      if (CANNOT_FETCH_REGISTER (regno))
+      if (gdbarch_cannot_fetch_register (current_gdbarch, regno))
        {
-         regcache_raw_supply (current_regcache, regno, NULL);
+         regcache_raw_supply (regcache, regno, NULL);
          continue;
        }
       addr = 8 * core_reg_mapping[regno];
@@ -108,7 +100,7 @@ fetch_osf_core_registers (char *core_reg_sect, unsigned core_reg_size,
          /* ??? UNIQUE is a new addition.  Don't generate an error.  */
          if (regno == ALPHA_UNIQUE_REGNUM)
            {
-             regcache_raw_supply (current_regcache, regno, NULL);
+             regcache_raw_supply (regcache, regno, NULL);
              continue;
            }
          if (bad_reg < 0)
@@ -116,105 +108,42 @@ fetch_osf_core_registers (char *core_reg_sect, unsigned core_reg_size,
        }
       else
        {
-         regcache_raw_supply (current_regcache, regno, core_reg_sect + addr);
+         regcache_raw_supply (regcache, regno, core_reg_sect + addr);
        }
     }
   if (bad_reg >= 0)
     {
-      error (_("Register %s not found in core file."), REGISTER_NAME (bad_reg));
+      error (_("Register %s not found in core file."),
+            gdbarch_register_name (current_gdbarch, bad_reg));
     }
 }
 
-static void
-fetch_elf_core_registers (char *core_reg_sect, unsigned core_reg_size,
-                         int which, CORE_ADDR reg_addr)
-{
-  if (core_reg_size < 32 * 8)
-    {
-      error (_("Core file register section too small (%u bytes)."), core_reg_size);
-      return;
-    }
-
-  switch (which)
-    {
-    case 0: /* integer registers */
-      /* PC is in slot 32; UNIQUE is in slot 33, if present.  */
-      alpha_supply_int_regs (-1, core_reg_sect, core_reg_sect + 31*8,
-                            (core_reg_size >= 33 * 8
-                             ? core_reg_sect + 32*8 : NULL));
-      break;
-
-    case 2: /* floating-point registers */
-      /* FPCR is in slot 32.  */
-      alpha_supply_fp_regs (-1, core_reg_sect, core_reg_sect + 31*8);
-      break;
-
-    default:
-      break;
-    }
-}
-
-
-/* Map gdb internal register number to a ptrace ``address''.
-   These ``addresses'' are defined in <sys/ptrace.h>, with
-   the exception of ALPHA_UNIQUE_PTRACE_ADDR.  */
-
-#ifndef ALPHA_UNIQUE_PTRACE_ADDR
-#define ALPHA_UNIQUE_PTRACE_ADDR 0
-#endif
-
-CORE_ADDR
-register_addr (int regno, CORE_ADDR blockend)
-{
-  if (regno == PC_REGNUM)
-    return PC;
-  if (regno == ALPHA_UNIQUE_REGNUM)
-    return ALPHA_UNIQUE_PTRACE_ADDR;
-  if (regno < FP0_REGNUM)
-    return GPR_BASE + regno;
-  else
-    return FPR_BASE + regno - FP0_REGNUM;
-}
-
-int
-kernel_u_size (void)
-{
-  return (sizeof (struct user));
-}
 
-#if defined(USE_PROC_FS) || defined(HAVE_GREGSET_T)
 #include <sys/procfs.h>
-
 /* Prototypes for supply_gregset etc. */
 #include "gregset.h"
 
-/* Locate the UNIQUE value within the gregset_t.  */
-#ifndef ALPHA_REGSET_UNIQUE
-#define ALPHA_REGSET_UNIQUE(ptr) NULL
-#endif
-
 /*
  * See the comment in m68k-tdep.c regarding the utility of these functions.
  */
 
 void
-supply_gregset (gdb_gregset_t *gregsetp)
+supply_gregset (struct regcache *regcache, const gdb_gregset_t *gregsetp)
 {
-  long *regp = ALPHA_REGSET_BASE (gregsetp);
-  void *unique = ALPHA_REGSET_UNIQUE (gregsetp);
+  const long *regp = gregsetp->regs;
 
   /* PC is in slot 32.  */
-  alpha_supply_int_regs (-1, regp, regp + 31, unique);
+  alpha_supply_int_regs (regcache, -1, regp, regp + 31, NULL);
 }
 
 void
-fill_gregset (gdb_gregset_t *gregsetp, int regno)
+fill_gregset (const struct regcache *regcache,
+             gdb_gregset_t *gregsetp, int regno)
 {
-  long *regp = ALPHA_REGSET_BASE (gregsetp);
-  void *unique = ALPHA_REGSET_UNIQUE (gregsetp);
+  long *regp = gregsetp->regs;
 
   /* PC is in slot 32.  */
-  alpha_fill_int_regs (regno, regp, regp + 31, unique);
+  alpha_fill_int_regs (regcache, regno, regp, regp + 31, NULL);
 }
 
 /*
@@ -223,23 +152,23 @@ fill_gregset (gdb_gregset_t *gregsetp, int regno)
  */
 
 void
-supply_fpregset (gdb_fpregset_t *fpregsetp)
+supply_fpregset (struct regcache *regcache, const gdb_fpregset_t *fpregsetp)
 {
-  long *regp = ALPHA_REGSET_BASE (fpregsetp);
+  const long *regp = fpregsetp->regs;
 
   /* FPCR is in slot 32.  */
-  alpha_supply_fp_regs (-1, regp, regp + 31);
+  alpha_supply_fp_regs (regcache, -1, regp, regp + 31);
 }
 
 void
-fill_fpregset (gdb_fpregset_t *fpregsetp, int regno)
+fill_fpregset (const struct regcache *regcache,
+              gdb_fpregset_t *fpregsetp, int regno)
 {
-  long *regp = ALPHA_REGSET_BASE (fpregsetp);
+  long *regp = fpregsetp->regs;
 
   /* FPCR is in slot 32.  */
-  alpha_fill_fp_regs (regno, regp, regp + 31);
+  alpha_fill_fp_regs (regcache, regno, regp, regp + 31);
 }
-#endif
 \f
 
 /* Register that we are able to handle alpha core file formats. */
@@ -255,18 +184,8 @@ static struct core_fns alpha_osf_core_fns =
   NULL                                 /* next */
 };
 
-static struct core_fns alpha_elf_core_fns =
-{
-  bfd_target_elf_flavour,              /* core_flavour */
-  default_check_format,                        /* check_format */
-  default_core_sniffer,                        /* core_sniffer */
-  fetch_elf_core_registers,            /* core_read_registers */
-  NULL                                 /* next */
-};
-
 void
 _initialize_core_alpha (void)
 {
   deprecated_add_core_fns (&alpha_osf_core_fns);
-  deprecated_add_core_fns (&alpha_elf_core_fns);
 }
This page took 0.028566 seconds and 4 git commands to generate.