/* Save the register info in the cache. */
for (reg = 0; reg < fs->regs.num_regs; reg++)
{
int regnum;
/* Skip the return address column. */
if (reg == fs->retaddr_column)
continue;
/* Use the GDB register number as index. */
regnum = DWARF2_REG_TO_REGNUM (reg);
if (regnum >= 0 && regnum < num_regs)
cache->reg[regnum] = fs->regs.reg[reg];
}
/* Store the location of the return addess. If the return address
column (adjusted) is not the same as gdb's PC_REGNUM, then this
implies a copy from the ra column register. */
if (fs->retaddr_column < fs->regs.num_regs
&& fs->regs.reg[fs->retaddr_column].how != REG_UNSAVED)
cache->reg[PC_REGNUM] = fs->regs.reg[fs->retaddr_column];
else
{
reg = DWARF2_REG_TO_REGNUM (fs->retaddr_column);
if (reg != PC_REGNUM)
{
cache->reg[PC_REGNUM].loc.reg = reg;
cache->reg[PC_REGNUM].how = REG_SAVED_REG;
}
}