#include "defs.h"
#include "inferior.h"
#include "target.h"
+#include "gdbcore.h"
#include <signal.h>
#include <sys/ptrace.h>
#define STACK_REGS 2
#define FP_REGS 4
+static void
+fetch_core_registers PARAMS ((char *, unsigned int, int, CORE_ADDR));
+
/* Fetch one or more registers from the inferior. REGNO == -1 to get
them all. We actually fetch more than requested, when convenient,
marking them as valid so we won't fetch them again. */
all (16 ptrace calls!) if we really need them. */
if (regno == -1)
{
- target_xfer_memory (*(CORE_ADDR*)®isters[REGISTER_BYTE (SP_REGNUM)],
+ target_read_memory (*(CORE_ADDR*)®isters[REGISTER_BYTE (SP_REGNUM)],
®isters[REGISTER_BYTE (L0_REGNUM)],
- 16*REGISTER_RAW_SIZE (L0_REGNUM), 0);
+ 16*REGISTER_RAW_SIZE (L0_REGNUM));
for (i = L0_REGNUM; i <= I7_REGNUM; i++)
register_valid[i] = 1;
}
i = REGISTER_BYTE (regno);
if (register_valid[regno])
printf_unfiltered("register %d valid and read\n", regno);
- target_xfer_memory (sp + i - REGISTER_BYTE (L0_REGNUM),
- ®isters[i], REGISTER_RAW_SIZE (regno), 0);
+ target_read_memory (sp + i - REGISTER_BYTE (L0_REGNUM),
+ ®isters[i], REGISTER_RAW_SIZE (regno));
register_valid[regno] = 1;
}
}
if (regno < 0 || regno == SP_REGNUM)
{
if (!register_valid[L0_REGNUM+5]) abort();
- target_xfer_memory (sp,
- ®isters[REGISTER_BYTE (L0_REGNUM)],
- 16*REGISTER_RAW_SIZE (L0_REGNUM), 1);
+ target_write_memory (sp,
+ ®isters[REGISTER_BYTE (L0_REGNUM)],
+ 16*REGISTER_RAW_SIZE (L0_REGNUM));
}
else
{
if (!register_valid[regno]) abort();
- target_xfer_memory (sp + REGISTER_BYTE (regno) - REGISTER_BYTE (L0_REGNUM),
- ®isters[REGISTER_BYTE (regno)],
- REGISTER_RAW_SIZE (regno), 1);
+ target_write_memory (sp + REGISTER_BYTE (regno) - REGISTER_BYTE (L0_REGNUM),
+ ®isters[REGISTER_BYTE (regno)],
+ REGISTER_RAW_SIZE (regno));
}
}
}
-void
+static void
fetch_core_registers (core_reg_sect, core_reg_size, which, ignore)
char *core_reg_sect;
unsigned core_reg_size;
int which;
- unsigned int ignore; /* reg addr, unused in this version */
+ CORE_ADDR ignore; /* reg addr, unused in this version */
{
if (which == 0) {
{
return (sizeof (struct user));
}
+
+\f
+/* Register that we are able to handle sparc core file formats.
+ FIXME: is this really bfd_target_unknown_flavour? */
+
+static struct core_fns sparc_core_fns =
+{
+ bfd_target_unknown_flavour,
+ fetch_core_registers,
+ NULL
+};
+
+void
+_initialize_core_sparc ()
+{
+ add_core_fns (&sparc_core_fns);
+}