* rs6000-nat.c (exec_one_dummy_insn, regmap): Add gdbarch as parameter
and replace current_gdbarch by gdbarch. (store_register): Update call for exec_one_dummy_insn. (fetch_register, store_register): Update call of regmap. * ppcnbsd-nat.c (getregs_supplies, getfpregs_supplies): Add gdbarch as parameter and replace current_gdbarch by gdbarch. (ppcnbsd_store_inferior_registers): Use get_regcache_arch to get at the current architecture. Update call for getregs_supplies and getfpregs_supplies. (ppcnbsd_fetch_inferior_registers): Likewise. * ppcobsd-nat.c (getfpregs_supplies): Add gdbarch as parameter and replace current_gdbarch by gdbarch. (ppcobsd_fetch_registers, ppcobsd_store_registers): Use get_regcache_arch to get at the current architecture. Update call for getfpregs_supplies.
This commit is contained in:
parent
f642be6b2e
commit
206988c434
4 changed files with 52 additions and 24 deletions
|
@ -1,3 +1,25 @@
|
|||
2008-02-18 Markus Deuling <deuling@de.ibm.com>
|
||||
|
||||
* rs6000-nat.c (exec_one_dummy_insn, regmap): Add gdbarch as parameter
|
||||
and replace current_gdbarch by gdbarch.
|
||||
|
||||
(store_register): Update call for exec_one_dummy_insn.
|
||||
(fetch_register, store_register): Update call of regmap.
|
||||
|
||||
* ppcnbsd-nat.c (getregs_supplies, getfpregs_supplies): Add gdbarch as
|
||||
parameter and replace current_gdbarch by gdbarch.
|
||||
|
||||
(ppcnbsd_store_inferior_registers): Use get_regcache_arch to get at
|
||||
the current architecture. Update call for getregs_supplies and
|
||||
getfpregs_supplies.
|
||||
(ppcnbsd_fetch_inferior_registers): Likewise.
|
||||
|
||||
* ppcobsd-nat.c (getfpregs_supplies): Add gdbarch as parameter and
|
||||
replace current_gdbarch by gdbarch.
|
||||
(ppcobsd_fetch_registers, ppcobsd_store_registers): Use
|
||||
get_regcache_arch to get at the current architecture. Update call for
|
||||
getfpregs_supplies.
|
||||
|
||||
2008-02-18 Markus Deuling <deuling@de.ibm.com>
|
||||
|
||||
* arch-utils.c (gdbarch_from_bfd): Remove unnecessary {old,new}_gdbarch
|
||||
|
|
|
@ -41,9 +41,9 @@
|
|||
/* Returns true if PT_GETREGS fetches this register. */
|
||||
|
||||
static int
|
||||
getregs_supplies (int regnum)
|
||||
getregs_supplies (struct gdbarch *gdbarch, int regnum)
|
||||
{
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
||||
|
||||
return ((regnum >= tdep->ppc_gp0_regnum
|
||||
&& regnum < tdep->ppc_gp0_regnum + ppc_num_gprs)
|
||||
|
@ -51,15 +51,15 @@ getregs_supplies (int regnum)
|
|||
|| regnum == tdep->ppc_cr_regnum
|
||||
|| regnum == tdep->ppc_xer_regnum
|
||||
|| regnum == tdep->ppc_ctr_regnum
|
||||
|| regnum == gdbarch_pc_regnum (current_gdbarch));
|
||||
|| regnum == gdbarch_pc_regnum (gdbarch));
|
||||
}
|
||||
|
||||
/* Like above, but for PT_GETFPREGS. */
|
||||
|
||||
static int
|
||||
getfpregs_supplies (int regnum)
|
||||
getfpregs_supplies (struct gdbarch *gdbarch, int regnum)
|
||||
{
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
||||
|
||||
/* FIXME: jimb/2004-05-05: Some PPC variants don't have floating
|
||||
point registers. Traditionally, GDB's register set has still
|
||||
|
@ -71,7 +71,7 @@ getfpregs_supplies (int regnum)
|
|||
It's not clear to me how best to update this code, so this assert
|
||||
will alert the first person to encounter the NetBSD/E500
|
||||
combination to the problem. */
|
||||
gdb_assert (ppc_floating_point_unit_p (current_gdbarch));
|
||||
gdb_assert (ppc_floating_point_unit_p (gdbarch));
|
||||
|
||||
return ((regnum >= tdep->ppc_fp0_regnum
|
||||
&& regnum < tdep->ppc_fp0_regnum + ppc_num_fprs)
|
||||
|
@ -81,7 +81,9 @@ getfpregs_supplies (int regnum)
|
|||
static void
|
||||
ppcnbsd_fetch_inferior_registers (struct regcache *regcache, int regnum)
|
||||
{
|
||||
if (regnum == -1 || getregs_supplies (regnum))
|
||||
struct gdbarch *gdbarch = get_regcache_arch (regcache);
|
||||
|
||||
if (regnum == -1 || getregs_supplies (gdbarch, regnum))
|
||||
{
|
||||
struct reg regs;
|
||||
|
||||
|
@ -93,7 +95,7 @@ ppcnbsd_fetch_inferior_registers (struct regcache *regcache, int regnum)
|
|||
regnum, ®s, sizeof regs);
|
||||
}
|
||||
|
||||
if (regnum == -1 || getfpregs_supplies (regnum))
|
||||
if (regnum == -1 || getfpregs_supplies (gdbarch, regnum))
|
||||
{
|
||||
struct fpreg fpregs;
|
||||
|
||||
|
@ -109,7 +111,9 @@ ppcnbsd_fetch_inferior_registers (struct regcache *regcache, int regnum)
|
|||
static void
|
||||
ppcnbsd_store_inferior_registers (struct regcache *regcache, int regnum)
|
||||
{
|
||||
if (regnum == -1 || getregs_supplies (regnum))
|
||||
struct gdbarch *gdbarch = get_regcache_arch (regcache);
|
||||
|
||||
if (regnum == -1 || getregs_supplies (gdbarch, regnum))
|
||||
{
|
||||
struct reg regs;
|
||||
|
||||
|
@ -125,7 +129,7 @@ ppcnbsd_store_inferior_registers (struct regcache *regcache, int regnum)
|
|||
perror_with_name (_("Couldn't write registers"));
|
||||
}
|
||||
|
||||
if (regnum == -1 || getfpregs_supplies (regnum))
|
||||
if (regnum == -1 || getfpregs_supplies (gdbarch, regnum))
|
||||
{
|
||||
struct fpreg fpregs;
|
||||
|
||||
|
|
|
@ -45,9 +45,9 @@
|
|||
/* Returns true if PT_GETFPREGS fetches this register. */
|
||||
|
||||
static int
|
||||
getfpregs_supplies (int regnum)
|
||||
getfpregs_supplies (struct gdbarch *gdbarch, int regnum)
|
||||
{
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
||||
|
||||
/* FIXME: jimb/2004-05-05: Some PPC variants don't have floating
|
||||
point registers. Traditionally, GDB's register set has still
|
||||
|
@ -59,7 +59,7 @@ getfpregs_supplies (int regnum)
|
|||
It's not clear to me how best to update this code, so this assert
|
||||
will alert the first person to encounter the NetBSD/E500
|
||||
combination to the problem. */
|
||||
gdb_assert (ppc_floating_point_unit_p (current_gdbarch));
|
||||
gdb_assert (ppc_floating_point_unit_p (gdbarch));
|
||||
|
||||
return ((regnum >= tdep->ppc_fp0_regnum
|
||||
&& regnum < tdep->ppc_fp0_regnum + ppc_num_fprs)
|
||||
|
@ -88,7 +88,8 @@ ppcobsd_fetch_registers (struct regcache *regcache, int regnum)
|
|||
#endif
|
||||
|
||||
#ifdef PT_GETFPREGS
|
||||
if (regnum == -1 || getfpregs_supplies (regnum))
|
||||
if (regnum == -1
|
||||
|| getfpregs_supplies (get_regcache_arch (regcache), regnum))
|
||||
{
|
||||
struct fpreg fpregs;
|
||||
|
||||
|
@ -126,7 +127,8 @@ ppcobsd_store_registers (struct regcache *regcache, int regnum)
|
|||
perror_with_name (_("Couldn't write registers"));
|
||||
|
||||
#ifdef PT_GETFPREGS
|
||||
if (regnum == -1 || getfpregs_supplies (regnum))
|
||||
if (regnum == -1
|
||||
|| getfpregs_supplies (get_regcache_arch (regcache), regnum))
|
||||
{
|
||||
struct fpreg fpregs;
|
||||
|
||||
|
|
|
@ -130,7 +130,7 @@ static int objfile_symbol_add (void *);
|
|||
|
||||
static void vmap_symtab (struct vmap *);
|
||||
|
||||
static void exec_one_dummy_insn (void);
|
||||
static void exec_one_dummy_insn (struct gdbarch *);
|
||||
|
||||
extern void fixup_breakpoints (CORE_ADDR low, CORE_ADDR high, CORE_ADDR delta);
|
||||
|
||||
|
@ -140,9 +140,9 @@ extern void fixup_breakpoints (CORE_ADDR low, CORE_ADDR high, CORE_ADDR delta);
|
|||
ISFLOAT to indicate whether REGNO is a floating point register. */
|
||||
|
||||
static int
|
||||
regmap (int regno, int *isfloat)
|
||||
regmap (struct gdbarch *gdbarch, int regno, int *isfloat)
|
||||
{
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
||||
|
||||
*isfloat = 0;
|
||||
if (tdep->ppc_gp0_regnum <= regno
|
||||
|
@ -155,7 +155,7 @@ regmap (int regno, int *isfloat)
|
|||
*isfloat = 1;
|
||||
return regno - tdep->ppc_fp0_regnum + FPR0;
|
||||
}
|
||||
else if (regno == gdbarch_pc_regnum (current_gdbarch))
|
||||
else if (regno == gdbarch_pc_regnum (gdbarch))
|
||||
return IAR;
|
||||
else if (regno == tdep->ppc_ps_regnum)
|
||||
return MSR;
|
||||
|
@ -218,7 +218,7 @@ fetch_register (struct regcache *regcache, int regno)
|
|||
/* Retrieved values may be -1, so infer errors from errno. */
|
||||
errno = 0;
|
||||
|
||||
nr = regmap (regno, &isfloat);
|
||||
nr = regmap (gdbarch, regno, &isfloat);
|
||||
|
||||
/* Floating-point registers. */
|
||||
if (isfloat)
|
||||
|
@ -279,7 +279,7 @@ store_register (const struct regcache *regcache, int regno)
|
|||
/* -1 can be a successful return value, so infer errors from errno. */
|
||||
errno = 0;
|
||||
|
||||
nr = regmap (regno, &isfloat);
|
||||
nr = regmap (gdbarch, regno, &isfloat);
|
||||
|
||||
/* Floating-point registers. */
|
||||
if (isfloat)
|
||||
|
@ -303,7 +303,7 @@ store_register (const struct regcache *regcache, int regno)
|
|||
Otherwise the following ptrace(2) calls will mess up user stack
|
||||
since kernel will get confused about the bottom of the stack
|
||||
(%sp). */
|
||||
exec_one_dummy_insn ();
|
||||
exec_one_dummy_insn (gdbarch);
|
||||
|
||||
/* The PT_WRITE_GPR operation is rather odd. For 32-bit inferiors,
|
||||
the register's value is passed by value, but for 64-bit inferiors,
|
||||
|
@ -576,9 +576,9 @@ rs6000_wait (ptid_t ptid, struct target_waitstatus *ourstatus)
|
|||
including u_area. */
|
||||
|
||||
static void
|
||||
exec_one_dummy_insn (void)
|
||||
exec_one_dummy_insn (struct gdbarch *gdbarch)
|
||||
{
|
||||
#define DUMMY_INSN_ADDR gdbarch_tdep (current_gdbarch)->text_segment_base+0x200
|
||||
#define DUMMY_INSN_ADDR gdbarch_tdep (gdbarch)->text_segment_base+0x200
|
||||
|
||||
int ret, status, pid;
|
||||
CORE_ADDR prev_pc;
|
||||
|
|
Loading…
Reference in a new issue