X-Git-Url: http://drtracing.org/?a=blobdiff_plain;ds=sidebyside;f=gdb%2Falpha-linux-nat.c;h=66e2a96aed7dd8005bb6dde27e6803028481a095;hb=f42bf748e417cf9120fc57d144b6eaaf3adda247;hp=8307a69d6df686ab63f3adc3c2d403ad5f95de65;hpb=b02f9d57327dbea7322242fb23f3040d5376acec;p=deliverable%2Fbinutils-gdb.git
diff --git a/gdb/alpha-linux-nat.c b/gdb/alpha-linux-nat.c
index 8307a69d6d..66e2a96aed 100644
--- a/gdb/alpha-linux-nat.c
+++ b/gdb/alpha-linux-nat.c
@@ -1,11 +1,11 @@
/* Low level Alpha GNU/Linux interface, for GDB when running native.
- Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2005-2016 Free Software Foundation, Inc.
This file is part of GDB.
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,
@@ -14,95 +14,84 @@
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., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA. */
+ along with this program. If not, see . */
#include "defs.h"
#include "target.h"
+#include "regcache.h"
#include "linux-nat.h"
#include "alpha-tdep.h"
-#include
+#include "nat/gdb_ptrace.h"
#include
#include
#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
-/*
- * See the comment in m68k-tdep.c regarding the utility of these functions.
- */
+/* 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 = (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);
}
-/*
- * Now we do the same thing for floating-point registers.
- * Again, see the comments in m68k-tdep.c.
- */
+/* Now we do the same thing for floating-point registers.
+ Again, see the comments in m68k-tdep.c. */
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 (gdbarch))
return PC;
if (regno == ALPHA_UNIQUE_REGNUM)
return ALPHA_UNIQUE_PTRACE_ADDR;
- if (regno < FP0_REGNUM)
+ if (regno < gdbarch_fp0_regnum (gdbarch))
return GPR_BASE + regno;
else
- return FPR_BASE + regno - FP0_REGNUM;
+ return FPR_BASE + regno - gdbarch_fp0_regnum (gdbarch);
}
-void _initialialize_alpha_linux_nat (void);
+void _initialize_alpha_linux_nat (void);
void
_initialize_alpha_linux_nat (void)