X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Falpha-linux-nat.c;h=4037788c76caba92e6cdd32aec7ef9f223fb50b4;hb=b0c4170911beec5bdad9a622b8ae8053a8dcc55e;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..4037788c76 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, 2006, 2007, 2008 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,12 +14,11 @@
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"
@@ -30,13 +29,6 @@
#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
@@ -46,23 +38,22 @@
*/
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 +62,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 (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);