* mips-tdep.c (mips_find_saved_regs): Make static.
(mips_frame_init_saved_regs): New function. (mips_gdbarch_init): Setup FRAME_INIT_SAVED_REGS method. * config/mips/tm-mips.h (FRAME_INIT_SAVED_REGS): Delete macro. (mips_find_saved_regs): Delete declaration.
This commit is contained in:
parent
7dc213a6bb
commit
d28e01f471
2 changed files with 19 additions and 14 deletions
|
@ -304,19 +304,6 @@ extern int mips_frame_num_args (struct frame_info *);
|
|||
|
||||
#define FRAME_ARGS_SKIP 0
|
||||
|
||||
/* Put here the code to store, into a struct frame_saved_regs,
|
||||
the addresses of the saved registers of frame described by FRAME_INFO.
|
||||
This includes special registers such as pc and fp saved in special
|
||||
ways in the stack frame. sp is even more special:
|
||||
the address we return for it IS the sp for the next frame. */
|
||||
|
||||
#define FRAME_INIT_SAVED_REGS(frame_info) \
|
||||
do { \
|
||||
if ((frame_info)->saved_regs == NULL) \
|
||||
mips_find_saved_regs (frame_info); \
|
||||
(frame_info)->saved_regs[SP_REGNUM] = (frame_info)->frame; \
|
||||
} while (0)
|
||||
extern void mips_find_saved_regs (struct frame_info *);
|
||||
|
||||
|
||||
/* Things needed for making the inferior call functions. */
|
||||
|
|
|
@ -1259,7 +1259,7 @@ mips_next_pc (CORE_ADDR pc)
|
|||
/* Guaranteed to set fci->saved_regs to some values (it never leaves it
|
||||
NULL). */
|
||||
|
||||
void
|
||||
static void
|
||||
mips_find_saved_regs (struct frame_info *fci)
|
||||
{
|
||||
int ireg;
|
||||
|
@ -1437,6 +1437,23 @@ mips_find_saved_regs (struct frame_info *fci)
|
|||
fci->saved_regs[PC_REGNUM] = fci->saved_regs[RA_REGNUM];
|
||||
}
|
||||
|
||||
/* Set up the 'saved_regs' array. This is a data structure containing
|
||||
the addresses on the stack where each register has been saved, for
|
||||
each stack frame. Registers that have not been saved will have
|
||||
zero here. The stack pointer register is special: rather than the
|
||||
address where the stack register has been saved, saved_regs[SP_REGNUM]
|
||||
will have the actual value of the previous frame's stack register. */
|
||||
|
||||
static void
|
||||
mips_frame_init_saved_regs (struct frame_info *frame)
|
||||
{
|
||||
if (frame->saved_regs == NULL)
|
||||
{
|
||||
mips_find_saved_regs (frame);
|
||||
}
|
||||
frame->saved_regs[SP_REGNUM] = frame->frame;
|
||||
}
|
||||
|
||||
static CORE_ADDR
|
||||
read_next_frame_reg (struct frame_info *fi, int regno)
|
||||
{
|
||||
|
@ -4715,6 +4732,7 @@ mips_gdbarch_init (struct gdbarch_info info,
|
|||
|
||||
/* Initialize a frame */
|
||||
set_gdbarch_init_extra_frame_info (gdbarch, mips_init_extra_frame_info);
|
||||
set_gdbarch_frame_init_saved_regs (gdbarch, mips_frame_init_saved_regs);
|
||||
|
||||
/* MIPS version of CALL_DUMMY */
|
||||
|
||||
|
|
Loading…
Reference in a new issue