/* GNU/Linux/SH specific low level interface, for the remote server for GDB.
Copyright (C) 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2007,
- 2008 Free Software Foundation, Inc.
+ 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
This file is part of GDB.
#include "server.h"
#include "linux-low.h"
+/* Defined in auto-generated file reg-sh.c. */
+void init_registers_sh (void);
+
#ifdef HAVE_SYS_REG_H
#include <sys/reg.h>
#endif
}
static CORE_ADDR
-sh_get_pc ()
+sh_get_pc (struct regcache *regcache)
{
unsigned long pc;
- collect_register_by_name ("pc", &pc);
+ collect_register_by_name (regcache, "pc", &pc);
return pc;
}
static void
-sh_set_pc (CORE_ADDR pc)
+sh_set_pc (struct regcache *regcache, CORE_ADDR pc)
{
unsigned long newpc = pc;
- supply_register_by_name ("pc", &newpc);
+ supply_register_by_name (regcache, "pc", &newpc);
}
/* Correct in either endianness, obviously. */
/* Provide only a fill function for the general register set. ps_lgetregs
will use this for NPTL support. */
-static void sh_fill_gregset (void *buf)
+static void sh_fill_gregset (struct regcache *regcache, void *buf)
{
int i;
for (i = 0; i < 23; i++)
if (sh_regmap[i] != -1)
- collect_register (i, (char *) buf + sh_regmap[i]);
+ collect_register (regcache, i, (char *) buf + sh_regmap[i]);
}
struct regset_info target_regsets[] = {
- { 0, 0, 0, GENERAL_REGS, sh_fill_gregset, NULL },
- { 0, 0, -1, -1, NULL, NULL }
+ { 0, 0, 0, 0, GENERAL_REGS, sh_fill_gregset, NULL },
+ { 0, 0, 0, -1, -1, NULL, NULL }
};
struct linux_target_ops the_low_target = {
+ init_registers_sh,
sh_num_regs,
sh_regmap,
sh_cannot_fetch_register,