mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-20 01:50:24 +08:00
From J.T.: Convert i386 to updated frame_saved_regs.
This commit is contained in:
@ -1,3 +1,12 @@
|
|||||||
|
Wed Mar 1 00:06:19 2000 Andrew Cagney <cagney@b1.cygnus.com>
|
||||||
|
|
||||||
|
From 1999-08-13 J.T. Conklin <jtc@redback.com>:
|
||||||
|
* config/i386/tm-i386.h (FRAME_INIT_SAVED_REGS): Replace
|
||||||
|
FRAME_FIND_SAVED_REGS.
|
||||||
|
(i386_frame_init_saved_regs): Replace i386_frame_find_saved_regs.
|
||||||
|
* i386-tdep.c (i386_frame_init_saved_regs, i386_pop_frame):
|
||||||
|
Update.
|
||||||
|
|
||||||
Tue Feb 29 23:56:41 2000 Andrew Cagney <cagney@b1.cygnus.com>
|
Tue Feb 29 23:56:41 2000 Andrew Cagney <cagney@b1.cygnus.com>
|
||||||
|
|
||||||
From 2000-02-23 Peter Schauer <pes@regent.e-technik.tu-muenchen.de>:
|
From 2000-02-23 Peter Schauer <pes@regent.e-technik.tu-muenchen.de>:
|
||||||
|
@ -357,11 +357,9 @@ extern int i386_frame_num_args PARAMS ((struct frame_info *));
|
|||||||
ways in the stack frame. sp is even more special:
|
ways in the stack frame. sp is even more special:
|
||||||
the address we return for it IS the sp for the next frame. */
|
the address we return for it IS the sp for the next frame. */
|
||||||
|
|
||||||
#define FRAME_FIND_SAVED_REGS(frame_info, frame_saved_regs) \
|
extern void i386_frame_init_saved_regs PARAMS ((struct frame_info *));
|
||||||
{ i386_frame_find_saved_regs ((frame_info), &(frame_saved_regs)); }
|
#define FRAME_INIT_SAVED_REGS(FI) i386_frame_init_saved_regs (FI)
|
||||||
|
|
||||||
extern void i386_frame_find_saved_regs PARAMS ((struct frame_info *,
|
|
||||||
struct frame_saved_regs *));
|
|
||||||
|
|
||||||
|
|
||||||
/* Things needed for making the inferior call functions. */
|
/* Things needed for making the inferior call functions. */
|
||||||
|
@ -475,9 +475,8 @@ i386_frame_num_args (fi)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
i386_frame_find_saved_regs (fip, fsrp)
|
i386_frame_init_saved_regs (fip)
|
||||||
struct frame_info *fip;
|
struct frame_info *fip;
|
||||||
struct frame_saved_regs *fsrp;
|
|
||||||
{
|
{
|
||||||
long locals = -1;
|
long locals = -1;
|
||||||
unsigned char op;
|
unsigned char op;
|
||||||
@ -486,7 +485,10 @@ i386_frame_find_saved_regs (fip, fsrp)
|
|||||||
CORE_ADDR pc;
|
CORE_ADDR pc;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
memset (fsrp, 0, sizeof *fsrp);
|
if (fip->saved_regs)
|
||||||
|
return;
|
||||||
|
|
||||||
|
frame_saved_regs_zalloc (fip);
|
||||||
|
|
||||||
/* if frame is the end of a dummy, compute where the
|
/* if frame is the end of a dummy, compute where the
|
||||||
* beginning would be
|
* beginning would be
|
||||||
@ -501,7 +503,7 @@ i386_frame_find_saved_regs (fip, fsrp)
|
|||||||
for (i = 0; i < NUM_REGS; i++)
|
for (i = 0; i < NUM_REGS; i++)
|
||||||
{
|
{
|
||||||
adr -= REGISTER_RAW_SIZE (i);
|
adr -= REGISTER_RAW_SIZE (i);
|
||||||
fsrp->regs[i] = adr;
|
fip->saved_regs[i] = adr;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -520,16 +522,16 @@ i386_frame_find_saved_regs (fip, fsrp)
|
|||||||
break;
|
break;
|
||||||
#ifdef I386_REGNO_TO_SYMMETRY
|
#ifdef I386_REGNO_TO_SYMMETRY
|
||||||
/* Dynix uses different internal numbering. Ick. */
|
/* Dynix uses different internal numbering. Ick. */
|
||||||
fsrp->regs[I386_REGNO_TO_SYMMETRY (op - 0x50)] = adr;
|
fip->saved_regs[I386_REGNO_TO_SYMMETRY (op - 0x50)] = adr;
|
||||||
#else
|
#else
|
||||||
fsrp->regs[op - 0x50] = adr;
|
fip->saved_regs[op - 0x50] = adr;
|
||||||
#endif
|
#endif
|
||||||
adr -= 4;
|
adr -= 4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fsrp->regs[PC_REGNUM] = fip->frame + 4;
|
fip->saved_regs[PC_REGNUM] = fip->frame + 4;
|
||||||
fsrp->regs[FP_REGNUM] = fip->frame;
|
fip->saved_regs[FP_REGNUM] = fip->frame;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* return pc of first real instruction */
|
/* return pc of first real instruction */
|
||||||
@ -640,15 +642,15 @@ i386_pop_frame ()
|
|||||||
struct frame_info *frame = get_current_frame ();
|
struct frame_info *frame = get_current_frame ();
|
||||||
CORE_ADDR fp;
|
CORE_ADDR fp;
|
||||||
int regnum;
|
int regnum;
|
||||||
struct frame_saved_regs fsr;
|
|
||||||
char regbuf[MAX_REGISTER_RAW_SIZE];
|
char regbuf[MAX_REGISTER_RAW_SIZE];
|
||||||
|
|
||||||
fp = FRAME_FP (frame);
|
fp = FRAME_FP (frame);
|
||||||
get_frame_saved_regs (frame, &fsr);
|
i386_frame_init_saved_regs (frame);
|
||||||
|
|
||||||
for (regnum = 0; regnum < NUM_REGS; regnum++)
|
for (regnum = 0; regnum < NUM_REGS; regnum++)
|
||||||
{
|
{
|
||||||
CORE_ADDR adr;
|
CORE_ADDR adr;
|
||||||
adr = fsr.regs[regnum];
|
adr = frame->saved_regs[regnum];
|
||||||
if (adr)
|
if (adr)
|
||||||
{
|
{
|
||||||
read_memory (adr, regbuf, REGISTER_RAW_SIZE (regnum));
|
read_memory (adr, regbuf, REGISTER_RAW_SIZE (regnum));
|
||||||
|
Reference in New Issue
Block a user