}
static void
-ppc_collect_ptrace_register (int regno, char *buf)
+ppc_collect_ptrace_register (struct regcache *regcache, int regno, char *buf)
{
int size = register_size (regno);
memset (buf, 0, sizeof (long));
if (size < sizeof (long))
- collect_register (regno, buf + sizeof (long) - size);
+ collect_register (regcache, regno, buf + sizeof (long) - size);
else
- collect_register (regno, buf);
+ collect_register (regcache, regno, buf);
}
static void
-ppc_supply_ptrace_register (int regno, const char *buf)
+ppc_supply_ptrace_register (struct regcache *regcache,
+ int regno, const char *buf)
{
int size = register_size (regno);
if (size < sizeof (long))
- supply_register (regno, buf + sizeof (long) - size);
+ supply_register (regcache, regno, buf + sizeof (long) - size);
else
- supply_register (regno, buf);
+ supply_register (regcache, regno, buf);
}
return to FD and ADDR the file handle and NPC parameter address
used with the system call. Return non-zero if successful. */
static int
-parse_spufs_run (int *fd, CORE_ADDR *addr)
+parse_spufs_run (struct regcache *regcache, int *fd, CORE_ADDR *addr)
{
CORE_ADDR curr_pc;
int curr_insn;
if (register_size (0) == 4)
{
unsigned int pc, r0, r3, r4;
- collect_register_by_name ("pc", &pc);
- collect_register_by_name ("r0", &r0);
- collect_register_by_name ("orig_r3", &r3);
- collect_register_by_name ("r4", &r4);
+ collect_register_by_name (regcache, "pc", &pc);
+ collect_register_by_name (regcache, "r0", &r0);
+ collect_register_by_name (regcache, "orig_r3", &r3);
+ collect_register_by_name (regcache, "r4", &r4);
curr_pc = (CORE_ADDR) pc;
curr_r0 = (int) r0;
*fd = (int) r3;
else
{
unsigned long pc, r0, r3, r4;
- collect_register_by_name ("pc", &pc);
- collect_register_by_name ("r0", &r0);
- collect_register_by_name ("orig_r3", &r3);
- collect_register_by_name ("r4", &r4);
+ collect_register_by_name (regcache, "pc", &pc);
+ collect_register_by_name (regcache, "r0", &r0);
+ collect_register_by_name (regcache, "orig_r3", &r3);
+ collect_register_by_name (regcache, "r4", &r4);
curr_pc = (CORE_ADDR) pc;
curr_r0 = (int) r0;
*fd = (int) r3;
}
static CORE_ADDR
-ppc_get_pc (void)
+ppc_get_pc (struct regcache *regcache)
{
CORE_ADDR addr;
int fd;
- if (parse_spufs_run (&fd, &addr))
+ if (parse_spufs_run (regcache, &fd, &addr))
{
unsigned int pc;
(*the_target->read_memory) (addr, (unsigned char *) &pc, 4);
else if (register_size (0) == 4)
{
unsigned int pc;
- collect_register_by_name ("pc", &pc);
+ collect_register_by_name (regcache, "pc", &pc);
return (CORE_ADDR) pc;
}
else
{
unsigned long pc;
- collect_register_by_name ("pc", &pc);
+ collect_register_by_name (regcache, "pc", &pc);
return (CORE_ADDR) pc;
}
}
static void
-ppc_set_pc (CORE_ADDR pc)
+ppc_set_pc (struct regcache *regcache, CORE_ADDR pc)
{
CORE_ADDR addr;
int fd;
- if (parse_spufs_run (&fd, &addr))
+ if (parse_spufs_run (regcache, &fd, &addr))
{
unsigned int newpc = pc;
(*the_target->write_memory) (addr, (unsigned char *) &newpc, 4);
else if (register_size (0) == 4)
{
unsigned int newpc = pc;
- supply_register_by_name ("pc", &newpc);
+ supply_register_by_name (regcache, "pc", &newpc);
}
else
{
unsigned long newpc = pc;
- supply_register_by_name ("pc", &newpc);
+ supply_register_by_name (regcache, "pc", &newpc);
}
}
/* Provide only a fill function for the general register set. ps_lgetregs
will use this for NPTL support. */
-static void ppc_fill_gregset (void *buf)
+static void ppc_fill_gregset (struct regcache *regcache, void *buf)
{
int i;
for (i = 0; i < 32; i++)
- ppc_collect_ptrace_register (i, (char *) buf + ppc_regmap[i]);
+ ppc_collect_ptrace_register (regcache, i, (char *) buf + ppc_regmap[i]);
for (i = 64; i < 70; i++)
- ppc_collect_ptrace_register (i, (char *) buf + ppc_regmap[i]);
+ ppc_collect_ptrace_register (regcache, i, (char *) buf + ppc_regmap[i]);
for (i = 71; i < 73; i++)
- ppc_collect_ptrace_register (i, (char *) buf + ppc_regmap[i]);
+ ppc_collect_ptrace_register (regcache, i, (char *) buf + ppc_regmap[i]);
}
#ifndef PTRACE_GETVSXREGS
#define SIZEOF_VSXREGS 32*8
static void
-ppc_fill_vsxregset (void *buf)
+ppc_fill_vsxregset (struct regcache *regcache, void *buf)
{
int i, base;
char *regset = buf;
base = find_regno ("vs0h");
for (i = 0; i < 32; i++)
- collect_register (base + i, ®set[i * 8]);
+ collect_register (regcache, base + i, ®set[i * 8]);
}
static void
-ppc_store_vsxregset (const void *buf)
+ppc_store_vsxregset (struct regcache *regcache, const void *buf)
{
int i, base;
const char *regset = buf;
base = find_regno ("vs0h");
for (i = 0; i < 32; i++)
- supply_register (base + i, ®set[i * 8]);
+ supply_register (regcache, base + i, ®set[i * 8]);
}
#ifndef PTRACE_GETVRREGS
#define SIZEOF_VRREGS 33*16+4
static void
-ppc_fill_vrregset (void *buf)
+ppc_fill_vrregset (struct regcache *regcache, void *buf)
{
int i, base;
char *regset = buf;
base = find_regno ("vr0");
for (i = 0; i < 32; i++)
- collect_register (base + i, ®set[i * 16]);
+ collect_register (regcache, base + i, ®set[i * 16]);
- collect_register_by_name ("vscr", ®set[32 * 16 + 12]);
- collect_register_by_name ("vrsave", ®set[33 * 16]);
+ collect_register_by_name (regcache, "vscr", ®set[32 * 16 + 12]);
+ collect_register_by_name (regcache, "vrsave", ®set[33 * 16]);
}
static void
-ppc_store_vrregset (const void *buf)
+ppc_store_vrregset (struct regcache *regcache, const void *buf)
{
int i, base;
const char *regset = buf;
base = find_regno ("vr0");
for (i = 0; i < 32; i++)
- supply_register (base + i, ®set[i * 16]);
+ supply_register (regcache, base + i, ®set[i * 16]);
- supply_register_by_name ("vscr", ®set[32 * 16 + 12]);
- supply_register_by_name ("vrsave", ®set[33 * 16]);
+ supply_register_by_name (regcache, "vscr", ®set[32 * 16 + 12]);
+ supply_register_by_name (regcache, "vrsave", ®set[33 * 16]);
}
#ifndef PTRACE_GETEVRREGS
};
static void
-ppc_fill_evrregset (void *buf)
+ppc_fill_evrregset (struct regcache *regcache, void *buf)
{
int i, ev0;
struct gdb_evrregset_t *regset = buf;
ev0 = find_regno ("ev0h");
for (i = 0; i < 32; i++)
- collect_register (ev0 + i, ®set->evr[i]);
+ collect_register (regcache, ev0 + i, ®set->evr[i]);
- collect_register_by_name ("acc", ®set->acc);
- collect_register_by_name ("spefscr", ®set->spefscr);
+ collect_register_by_name (regcache, "acc", ®set->acc);
+ collect_register_by_name (regcache, "spefscr", ®set->spefscr);
}
static void
-ppc_store_evrregset (const void *buf)
+ppc_store_evrregset (struct regcache *regcache, const void *buf)
{
int i, ev0;
const struct gdb_evrregset_t *regset = buf;
ev0 = find_regno ("ev0h");
for (i = 0; i < 32; i++)
- supply_register (ev0 + i, ®set->evr[i]);
+ supply_register (regcache, ev0 + i, ®set->evr[i]);
- supply_register_by_name ("acc", ®set->acc);
- supply_register_by_name ("spefscr", ®set->spefscr);
+ supply_register_by_name (regcache, "acc", ®set->acc);
+ supply_register_by_name (regcache, "spefscr", ®set->spefscr);
}
struct regset_info target_regsets[] = {