X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fgdbserver%2Flinux-sh-low.c;h=fbd67c657ee2a1413e225df8feaa19fa8d5c87c8;hb=623b6bdf12dec583722ca6615e5ff26581597d6c;hp=d488a52a1f144bee881404b6778e18681f25d806;hpb=9b254dd1ce46c19dde1dde5b8d1e22e862dfacce;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/gdbserver/linux-sh-low.c b/gdb/gdbserver/linux-sh-low.c index d488a52a1f..fbd67c657e 100644 --- a/gdb/gdbserver/linux-sh-low.c +++ b/gdb/gdbserver/linux-sh-low.c @@ -1,6 +1,6 @@ /* 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. + Copyright (C) 1995-1996, 1998-2003, 2005, 2007-2012 Free Software + Foundation, Inc. This file is part of GDB. @@ -20,6 +20,9 @@ #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 #endif @@ -56,18 +59,18 @@ sh_cannot_fetch_register (int regno) } 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. */ @@ -91,25 +94,28 @@ sh_breakpoint_at (CORE_ADDR where) /* 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, + NULL, sh_cannot_fetch_register, sh_cannot_store_register, + NULL, /* fetch_register */ sh_get_pc, sh_set_pc, (const unsigned char *) &sh_breakpoint,