/* Intel 386 native support.
- Copyright (C) 1988, 1989, 1991, 1992 Free Software Foundation, Inc.
+ Copyright 1988, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999,
+ 2000, 2001 Free Software Foundation, Inc.
This file is part of GDB.
#include "inferior.h"
#include "language.h"
#include "gdbcore.h"
+#include "regcache.h"
#ifdef USG
#include <sys/types.h>
#include "target.h"
-static void fetch_core_registers PARAMS ((char *, unsigned, int, CORE_ADDR));
+static void fetch_core_registers (char *, unsigned, int, CORE_ADDR);
\f
/* this table must line up with REGISTER_NAMES in tm-i386v.h */
*/
int
-i386_register_u_addr (blockend, regnum)
- int blockend;
- int regnum;
+i386_register_u_addr (int blockend, int regnum)
{
#if 0
/* this will be needed if fp registers are reinstated */
};
static
-print_387_status (status, ep)
- unsigned short status;
- struct env387 *ep;
+print_387_status (unsigned short status, struct env387 *ep)
{
int i;
int bothstatus;
static struct env387 core_env387;
void
-i386_float_info ()
+i386_float_info (void)
{
struct env387 fps;
int fpsaved = 0;
struct env387 fps_fixed;
int i;
- if (inferior_pid)
+ if (! ptid_equal (inferior_ptid, null_ptid))
{
char buf[10];
unsigned short status;
- ptrace (PT_READ_FPR, inferior_pid, buf, offsetof (struct env387, status));
+ ptrace (PT_READ_FPR, PIDGET (inferior_ptid), buf,
+ offsetof (struct env387, status));
memcpy (&status, buf, sizeof (status));
fpsaved = status;
}
return;
}
- if (inferior_pid)
+ if (! ptid_equal (inferior_ptid, null_ptid))
{
int offset;
for (offset = 0; offset < sizeof (fps); offset += 10)
{
char buf[10];
- ptrace (PT_READ_FPR, inferior_pid, buf, offset);
+ ptrace (PT_READ_FPR, PIDGET (inferior_ptid), buf, offset);
memcpy ((char *) &fps.control + offset, buf,
MIN (10, sizeof (fps) - offset));
}
/* Fetch one register. */
static void
-fetch_register (regno)
- int regno;
+fetch_register (int regno)
{
char buf[MAX_REGISTER_RAW_SIZE];
if (regno < FP0_REGNUM)
- *(int *) buf = ptrace (PT_READ_GPR, inferior_pid,
+ *(int *) buf = ptrace (PT_READ_GPR, PIDGET (inferior_ptid),
PT_REG (regmap[regno]), 0, 0);
else
- ptrace (PT_READ_FPR, inferior_pid, buf,
+ ptrace (PT_READ_FPR, PIDGET (inferior_ptid), buf,
(regno - FP0_REGNUM) * 10 + offsetof (struct env387, regs));
supply_register (regno, buf);
}
void
-fetch_inferior_registers (regno)
- int regno;
+fetch_inferior_registers (int regno)
{
if (regno < 0)
for (regno = 0; regno < NUM_REGS; regno++)
/* store one register */
static void
-store_register (regno)
- int regno;
+store_register (int regno)
{
char buf[80];
errno = 0;
if (regno < FP0_REGNUM)
- ptrace (PT_WRITE_GPR, inferior_pid, PT_REG (regmap[regno]),
+ ptrace (PT_WRITE_GPR, PIDGET (inferior_ptid), PT_REG (regmap[regno]),
*(int *) ®isters[REGISTER_BYTE (regno)], 0);
else
- ptrace (PT_WRITE_FPR, inferior_pid, ®isters[REGISTER_BYTE (regno)],
+ ptrace (PT_WRITE_FPR, PIDGET (inferior_ptid),
+ ®isters[REGISTER_BYTE (regno)],
(regno - FP0_REGNUM) * 10 + offsetof (struct env387, regs));
if (errno != 0)
If REGNO is -1, do this for all registers.
Otherwise, REGNO specifies which register (so we can save time). */
void
-store_inferior_registers (regno)
- int regno;
+store_inferior_registers (int regno)
{
if (regno < 0)
for (regno = 0; regno < NUM_REGS; regno++)
CD_DS, CD_ES, CD_FS, CD_GS,
};
+/* Provide registers to GDB from a core file.
+
+ CORE_REG_SECT points to an array of bytes, which were obtained from
+ a core file which BFD thinks might contain register contents.
+ CORE_REG_SIZE is its size.
+
+ WHICH says which register set corelow suspects this is:
+ 0 --- the general-purpose register set
+ 2 --- the floating-point register set
+
+ REG_ADDR isn't used. */
+
static void
-fetch_core_registers (core_reg_sect, core_reg_size, which, reg_addr)
- char *core_reg_sect;
- unsigned core_reg_size;
- int which;
- CORE_ADDR reg_addr; /* ignored */
+fetch_core_registers (char *core_reg_sect, unsigned core_reg_size,
+ int which, CORE_ADDR reg_addr)
{
if (which == 0)
static struct core_fns i386aix_core_fns =
{
- bfd_target_unknown_flavour,
- fetch_core_registers,
- NULL
+ bfd_target_unknown_flavour, /* core_flavour */
+ default_check_format, /* check_format */
+ default_core_sniffer, /* core_sniffer */
+ fetch_core_registers, /* core_read_registers */
+ NULL /* next */
};
void
-_initialize_core_i386aix ()
+_initialize_core_i386aix (void)
{
add_core_fns (&i386aix_core_fns);
}