/* Native-dependent code for SVR4 Unix running on i386's, for GDB.
- Copyright 1988, 1989, 1991, 1992 Free Software Foundation, Inc.
+ Copyright 1988, 1989, 1991, 1992, 1996 Free Software Foundation, Inc.
This file is part of GDB.
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., 675 Mass Ave, Cambridge, MA 02139, USA. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "defs.h"
+
+#ifdef HAVE_SYS_REG_H
+#include <sys/reg.h>
+#endif
+
+#ifdef HAVE_SYS_PROCFS_H
+
#include <sys/procfs.h>
/* The /proc interface divides the target machine's register set up into
*/
+#ifdef HAVE_GREGSET_T
+
/* This is a duplicate of the table in i386-xdep.c. */
static int regmap[] =
};
+/* FIXME: These routine absolutely depends upon (NUM_REGS - NUM_FREGS)
+ being less than or equal to the number of registers that can be stored
+ in a gregset_t. Note that with the current scheme there will typically
+ be more registers actually stored in a gregset_t that what we know
+ about. This is bogus and should be fixed. */
+
/* Given a pointer to a general register set in /proc format (gregset_t *),
unpack the register contents and supply them as gdb's idea of the current
register values. */
register greg_t *regp = (greg_t *) gregsetp;
extern int regmap[];
- for (regi = 0 ; regi < NUM_REGS ; regi++)
+ for (regi = 0 ; regi < (NUM_REGS - NUM_FREGS) ; regi++)
{
supply_register (regi, (char *) (regp + regmap[regi]));
}
extern char registers[];
extern int regmap[];
- for (regi = 0 ; regi < NUM_REGS ; regi++)
+ for (regi = 0 ; regi < (NUM_REGS - NUM_FREGS) ; regi++)
{
if ((regno == -1) || (regno == regi))
{
}
}
-#if defined (FP0_REGNUM)
+#endif /* HAVE_GREGSET_T */
+
+#if defined (FP0_REGNUM) && defined (HAVE_FPREGSET_T)
/* Given a pointer to a floating point register set in /proc format
(fpregset_t *), unpack the register contents and supply them as gdb's
supply_fpregset (fpregsetp)
fpregset_t *fpregsetp;
{
- register int regi;
-
/* FIXME: see m68k-tdep.c for an example, for the m68k. */
}
fpregset_t *fpregsetp;
int regno;
{
- int regi;
- char *to;
- char *from;
- extern char registers[];
-
/* FIXME: see m68k-tdep.c for an example, for the m68k. */
}
-#endif /* defined (FP0_REGNUM) */
+#endif /* defined (FP0_REGNUM) && defined (HAVE_FPREGSET_T) */
+
+#endif /* HAVE_SYS_PROCFS_H */