static void fetch_core_registers (struct regcache *, char *,
unsigned int, int, CORE_ADDR);
-/* Size of elements in jmpbuf */
-
-#define JB_ELEMENT_SIZE 4
/*
* See the comment in m68k-tdep.c regarding the utility of these functions.
*(regp + regi) = extract_signed_integer (buf, size);
}
- if ((regno == -1) || (regno == PC_REGNUM))
+ if ((regno == -1) || (regno == gdbarch_pc_regnum (current_gdbarch)))
{
regi = mips_regnum (current_gdbarch)->pc;
size = register_size (current_gdbarch, regi);
/*
* Now we do the same thing for floating-point registers.
- * We don't bother to condition on FP0_REGNUM since any
+ * We don't bother to condition on gdbarch_fp0_regnum since any
* reasonable MIPS configuration has an R3010 in it.
*
* Again, see the comments in m68k-tdep.c.
/* FIXME, this is wrong for the N32 ABI which has 64 bit FP regs. */
for (regi = 0; regi < 32; regi++)
- regcache_raw_supply (regcache, FP0_REGNUM + regi,
+ regcache_raw_supply (regcache, gdbarch_fp0_regnum (current_gdbarch) + regi,
(const char *) &fpregsetp->fp_r.fp_regs[regi]);
/* We can't supply the FSR register directly to the regcache,
/* FIXME, this is wrong for the N32 ABI which has 64 bit FP regs. */
- for (regi = FP0_REGNUM; regi < FP0_REGNUM + 32; regi++)
+ for (regi = gdbarch_fp0_regnum (current_gdbarch);
+ regi < gdbarch_fp0_regnum (current_gdbarch) + 32; regi++)
{
if ((regno == -1) || (regno == regi))
{
- to = (char *) &(fpregsetp->fp_r.fp_regs[regi - FP0_REGNUM]);
+ to = (char *) &(fpregsetp->fp_r.fp_regs[regi - gdbarch_fp0_regnum
+ (current_gdbarch)]);
regcache_raw_collect (regcache, regi, to);
}
}
}
-/* Figure out where the longjmp will land.
- We expect the first arg to be a pointer to the jmp_buf structure from which
- we extract the pc (JB_PC) that we will land at. The pc is copied into PC.
- This routine returns true on success. */
-
-int
-get_longjmp_target (CORE_ADDR *pc)
-{
- char *buf;
- CORE_ADDR jb_addr;
-
- buf = alloca (TARGET_PTR_BIT / TARGET_CHAR_BIT);
- jb_addr = read_register (MIPS_A0_REGNUM);
-
- if (target_read_memory (jb_addr + JB_PC * JB_ELEMENT_SIZE, buf,
- TARGET_PTR_BIT / TARGET_CHAR_BIT))
- return 0;
-
- *pc = extract_unsigned_integer (buf, TARGET_PTR_BIT / TARGET_CHAR_BIT);
-
- return 1;
-}
-
/* Provide registers to GDB from a core file.
CORE_REG_SECT points to an array of bytes, which were obtained from
/* If regsize is 8, this is a N32 or N64 core file.
If regsize is 4, this is an O32 core file. */
- if (core_reg_size != regsize * NUM_REGS)
+ if (core_reg_size != regsize * gdbarch_num_regs (current_gdbarch))
{
warning (_("wrong size gregset struct in core file"));
return;
}
- for (regno = 0; regno < NUM_REGS; regno++)
+ for (regno = 0; regno < gdbarch_num_regs (current_gdbarch); regno++)
{
regcache_raw_supply (regcache, regno, srcp);
srcp += regsize;