X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fi386v4-nat.c;h=c21b9ea1d5598d5689ea6dbb27f38d97826c6fa9;hb=e8a38df5d8d2502c3d3b3cd4054019d8d5748a90;hp=7de8c148034272e83bcbfb888e7d9d76002e6a36;hpb=fcc9bf013998c9e543db3f3b50ec59fb1f30e318;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/i386v4-nat.c b/gdb/i386v4-nat.c index 7de8c14803..c21b9ea1d5 100644 --- a/gdb/i386v4-nat.c +++ b/gdb/i386v4-nat.c @@ -1,6 +1,7 @@ -/* Native-dependent code for SVR4 Unix running on i386's. +/* Native-dependent code for Unix SVR4 running on i386's. + Copyright 1988, 1989, 1991, 1992, 1996, 1997, 1998, 1999, 2000, - 2001, 2002 + 2001, 2002, 2004 Free Software Foundation, Inc. This file is part of GDB. @@ -36,7 +37,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 @@ -95,7 +98,7 @@ static int regmap[] = EAX, ECX, EDX, EBX, UESP, EBP, ESI, EDI, EIP, EFL, CS, SS, - DS, ES, FS, GS, + DS, ES, FS, GS }; /* Fill GDB's register array with the general-purpose register values @@ -105,25 +108,25 @@ void supply_gregset (gregset_t *gregsetp) { greg_t *regp = (greg_t *) gregsetp; - int i; + int regnum; - for (i = 0; i < I386_NUM_GREGS; i++) - supply_register (i, (char *) (regp + regmap[i])); + for (regnum = 0; regnum < I386_NUM_GREGS; regnum++) + regcache_raw_supply (current_regcache, regnum, regp + regmap[regnum]); } -/* Fill register REGNO (if it is a general-purpose register) in - *GREGSETPS with the value in GDB's register array. If REGNO is -1, +/* Fill register REGNUM (if it is a general-purpose register) in + *GREGSETPS with the value in GDB's register array. If REGNUM is -1, do this for all registers. */ void -fill_gregset (gregset_t *gregsetp, int regno) +fill_gregset (gregset_t *gregsetp, int regnum) { greg_t *regp = (greg_t *) gregsetp; int i; for (i = 0; i < I386_NUM_GREGS; i++) - if (regno == -1 || regno == i) - regcache_collect (i, regp + regmap[i]); + if (regnum == -1 || regnum == i) + regcache_raw_collect (current_regcache, i, regp + regmap[i]); } #endif /* HAVE_GREGSET_T */ @@ -139,7 +142,7 @@ supply_fpregset (fpregset_t *fpregsetp) if (FP0_REGNUM == 0) return; - i387_supply_fsave ((char *) fpregsetp); + i387_supply_fsave (current_regcache, -1, fpregsetp); } /* Fill register REGNO (if it is a floating-point register) in @@ -157,4 +160,6 @@ fill_fpregset (fpregset_t *fpregsetp, int regno) #endif /* HAVE_FPREGSET_T */ +#endif /* not 64-bit. */ + #endif /* HAVE_SYS_PROCFS_H */