X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fi386v4-nat.c;h=e4b66b846e4b16c8e55adfd8dca132814cb1de9e;hb=09be204ecc3169d95a9cb1311d495888408b3173;hp=a2f3cd323ea447ffc3e9835f4af0e59bce05986d;hpb=40e2047218f16d9bdf4fb452f614cf12c7d2e1b2;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/i386v4-nat.c b/gdb/i386v4-nat.c index a2f3cd323e..e4b66b846e 100644 --- a/gdb/i386v4-nat.c +++ b/gdb/i386v4-nat.c @@ -1,14 +1,13 @@ /* Native-dependent code for Unix SVR4 running on i386's. - Copyright 1988, 1989, 1991, 1992, 1996, 1997, 1998, 1999, 2000, - 2001, 2002, 2004 - Free Software Foundation, Inc. + Copyright (C) 1988, 1989, 1991, 1992, 1996, 1997, 1998, 1999, 2000, 2001, + 2002, 2004, 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, @@ -17,9 +16,7 @@ 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., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + along with this program. If not, see . */ #include "defs.h" #include "value.h" @@ -37,7 +34,9 @@ #include -/* Prototypes for supply_gregset etc. */ +/* We must not compile this code for 64-bit Solaris x86. */ +#if !defined (PR_MODEL_NATIVE) || (PR_MODEL_NATIVE == PR_MODEL_ILP32) + #include "gregset.h" /* The `/proc' interface divides the target machine's register set up @@ -103,13 +102,13 @@ static int regmap[] = in *GREGSETP. */ void -supply_gregset (gregset_t *gregsetp) +supply_gregset (struct regcache *regcache, const gregset_t *gregsetp) { - greg_t *regp = (greg_t *) gregsetp; + const greg_t *regp = (const greg_t *) gregsetp; int regnum; for (regnum = 0; regnum < I386_NUM_GREGS; regnum++) - regcache_raw_supply (current_regcache, regnum, regp + regmap[regnum]); + regcache_raw_supply (regcache, regnum, regp + regmap[regnum]); } /* Fill register REGNUM (if it is a general-purpose register) in @@ -117,14 +116,15 @@ supply_gregset (gregset_t *gregsetp) do this for all registers. */ void -fill_gregset (gregset_t *gregsetp, int regnum) +fill_gregset (const struct regcache *regcache, + gregset_t *gregsetp, int regnum) { greg_t *regp = (greg_t *) gregsetp; int i; for (i = 0; i < I386_NUM_GREGS; i++) if (regnum == -1 || regnum == i) - regcache_raw_collect (current_regcache, i, regp + regmap[i]); + regcache_raw_collect (regcache, i, regp + regmap[i]); } #endif /* HAVE_GREGSET_T */ @@ -135,12 +135,12 @@ fill_gregset (gregset_t *gregsetp, int regnum) *FPREGSETP. */ void -supply_fpregset (fpregset_t *fpregsetp) +supply_fpregset (struct regcache *regcache, const fpregset_t *fpregsetp) { - if (FP0_REGNUM == 0) + if (gdbarch_fp0_regnum (get_regcache_arch (regcache)) == 0) return; - i387_supply_fsave (current_regcache, -1, fpregsetp); + i387_supply_fsave (regcache, -1, fpregsetp); } /* Fill register REGNO (if it is a floating-point register) in @@ -148,14 +148,17 @@ supply_fpregset (fpregset_t *fpregsetp) do this for all registers. */ void -fill_fpregset (fpregset_t *fpregsetp, int regno) +fill_fpregset (const struct regcache *regcache, + fpregset_t *fpregsetp, int regno) { - if (FP0_REGNUM == 0) + if (gdbarch_fp0_regnum (get_regcache_arch (regcache)) == 0) return; - i387_fill_fsave ((char *) fpregsetp, regno); + i387_collect_fsave (regcache, regno, fpregsetp); } #endif /* HAVE_FPREGSET_T */ +#endif /* not 64-bit. */ + #endif /* HAVE_SYS_PROCFS_H */