* solib-svr4.c (LM_ADDR_CHECK): Relax prelink recognition heuristic.
[deliverable/binutils-gdb.git] / gdb / alpha-linux-nat.c
index 8307a69d6df686ab63f3adc3c2d403ad5f95de65..aafd198f1762f5590ff69cc910318aacbd112667 100644 (file)
@@ -20,6 +20,7 @@
 
 #include "defs.h"
 #include "target.h"
+#include "regcache.h"
 #include "linux-nat.h"
 
 #include "alpha-tdep.h"
 #include <sys/procfs.h>
 #include "gregset.h"
 
-/* Given a pointer to either a gregset_t or fpregset_t, return a
-   pointer to the first register.  */
-#define ALPHA_REGSET_BASE(regsetp)  ((long *) (regsetp))
-
-/* Given a pointer to a gregset_t, locate the UNIQUE value.  */
-#define ALPHA_REGSET_UNIQUE(regsetp)  ((long *)(regsetp) + 32)
-
 /* The address of UNIQUE for ptrace.  */
 #define ALPHA_UNIQUE_PTRACE_ADDR 65
 
  */
 
 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 = (const long *)gregsetp;
 
-  /* PC is in slot 32.  */
-  alpha_supply_int_regs (-1, regp, regp + 31, unique);
+  /* PC is in slot 32, UNIQUE is in slot 33.  */
+  alpha_supply_int_regs (regcache, -1, regp, regp + 31, regp + 32);
 }
 
 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 = (long *)gregsetp;
 
-  /* PC is in slot 32.  */
-  alpha_fill_int_regs (regno, regp, regp + 31, unique);
+  /* PC is in slot 32, UNIQUE is in slot 33.  */
+  alpha_fill_int_regs (regcache, regno, regp, regp + 31, regp + 32);
 }
 
 /*
@@ -71,35 +64,36 @@ 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 = (const long *)fpregsetp;
 
   /* 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 = (long *)fpregsetp;
 
   /* FPCR is in slot 32.  */
-  alpha_fill_fp_regs (regno, regp, regp + 31);
+  alpha_fill_fp_regs (regcache, regno, regp, regp + 31);
 }
 
 
 static CORE_ADDR
-alpha_linux_register_u_offset (int regno)
+alpha_linux_register_u_offset (struct gdbarch *gdbarch, int regno, int store_p)
 {
-  if (regno == PC_REGNUM)
+  if (regno == gdbarch_pc_regnum (current_gdbarch))
     return PC;
   if (regno == ALPHA_UNIQUE_REGNUM)
     return ALPHA_UNIQUE_PTRACE_ADDR;
-  if (regno < FP0_REGNUM)
+  if (regno < gdbarch_fp0_regnum (current_gdbarch))
     return GPR_BASE + regno;
   else
-    return FPR_BASE + regno - FP0_REGNUM;
+    return FPR_BASE + regno - gdbarch_fp0_regnum (current_gdbarch);
 }
 
 void _initialialize_alpha_linux_nat (void);
This page took 0.024909 seconds and 4 git commands to generate.