diff options
author | Andrew Cagney <cagney@redhat.com> | 2000-02-29 13:28:24 +0000 |
---|---|---|
committer | Andrew Cagney <cagney@redhat.com> | 2000-02-29 13:28:24 +0000 |
commit | 1211c4e429f8a2e8e70558160e94d6af6490c51f (patch) | |
tree | 151b4ec86fd2214335788ed929c7414d4694016e /gdb/i386-tdep.c | |
parent | 2fc18c15d20c966ea7df140334e182753c3bde0e (diff) | |
download | gdb-1211c4e429f8a2e8e70558160e94d6af6490c51f.zip gdb-1211c4e429f8a2e8e70558160e94d6af6490c51f.tar.gz gdb-1211c4e429f8a2e8e70558160e94d6af6490c51f.tar.bz2 |
From J.T.: Convert i386 to updated frame_saved_regs.
Diffstat (limited to 'gdb/i386-tdep.c')
-rw-r--r-- | gdb/i386-tdep.c | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c index 4df478e..c381961 100644 --- a/gdb/i386-tdep.c +++ b/gdb/i386-tdep.c @@ -475,9 +475,8 @@ i386_frame_num_args (fi) */ void -i386_frame_find_saved_regs (fip, fsrp) +i386_frame_init_saved_regs (fip) struct frame_info *fip; - struct frame_saved_regs *fsrp; { long locals = -1; unsigned char op; @@ -486,7 +485,10 @@ i386_frame_find_saved_regs (fip, fsrp) CORE_ADDR pc; 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 * beginning would be @@ -501,7 +503,7 @@ i386_frame_find_saved_regs (fip, fsrp) for (i = 0; i < NUM_REGS; i++) { adr -= REGISTER_RAW_SIZE (i); - fsrp->regs[i] = adr; + fip->saved_regs[i] = adr; } return; } @@ -520,16 +522,16 @@ i386_frame_find_saved_regs (fip, fsrp) break; #ifdef I386_REGNO_TO_SYMMETRY /* 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 - fsrp->regs[op - 0x50] = adr; + fip->saved_regs[op - 0x50] = adr; #endif adr -= 4; } } - fsrp->regs[PC_REGNUM] = fip->frame + 4; - fsrp->regs[FP_REGNUM] = fip->frame; + fip->saved_regs[PC_REGNUM] = fip->frame + 4; + fip->saved_regs[FP_REGNUM] = fip->frame; } /* return pc of first real instruction */ @@ -640,15 +642,15 @@ i386_pop_frame () struct frame_info *frame = get_current_frame (); CORE_ADDR fp; int regnum; - struct frame_saved_regs fsr; char regbuf[MAX_REGISTER_RAW_SIZE]; fp = FRAME_FP (frame); - get_frame_saved_regs (frame, &fsr); + i386_frame_init_saved_regs (frame); + for (regnum = 0; regnum < NUM_REGS; regnum++) { CORE_ADDR adr; - adr = fsr.regs[regnum]; + adr = frame->saved_regs[regnum]; if (adr) { read_memory (adr, regbuf, REGISTER_RAW_SIZE (regnum)); |