#include "defs.h"
#include "regcache.h"
#include "alpha-tdep.h"
#include "alphabsd-tdep.h"
#define NUM_GREGS 32
#define NUM_FPREGS 31
void
alphabsd_supply_reg (char *regs, int regno)
{
int i;
for (i = 0; i < NUM_GREGS; i++)
{
if (i == regno || regno == -1)
{
if (CANNOT_FETCH_REGISTER (i))
supply_register (i, NULL);
else
supply_register (i, regs + (i * 8));
}
}
if (regno == PC_REGNUM || regno == -1)
supply_register (PC_REGNUM, regs + (31 * 8));
}
void
alphabsd_fill_reg (char *regs, int regno)
{
int i;
for (i = 0; i < NUM_GREGS; i++)
if ((regno == i || regno == -1) && ! CANNOT_STORE_REGISTER (i))
regcache_collect (i, regs + (i * 8));
if (regno == PC_REGNUM || regno == -1)
regcache_collect (PC_REGNUM, regs + (31 * 8));
}
void
alphabsd_supply_fpreg (char *fpregs, int regno)
{
int i;
for (i = FP0_REGNUM; i < FP0_REGNUM + NUM_FPREGS; i++)
{
if (i == regno || regno == -1)
{
if (CANNOT_FETCH_REGISTER (i))
supply_register (i, NULL);
else
supply_register (i, fpregs + ((i - FP0_REGNUM) * 8));
}
}
if (regno == ALPHA_FPCR_REGNUM || regno == -1)
supply_register (ALPHA_FPCR_REGNUM, fpregs + (32 * 8));
}
void
alphabsd_fill_fpreg (char *fpregs, int regno)
{
int i;
for (i = FP0_REGNUM; i < FP0_REGNUM + NUM_FPREGS; i++)
if ((regno == i || regno == -1) && ! CANNOT_STORE_REGISTER (i))
regcache_collect (i, fpregs + ((i - FP0_REGNUM) * 8));
if (regno == ALPHA_FPCR_REGNUM || regno == -1)
regcache_collect (ALPHA_FPCR_REGNUM, fpregs + (32 * 8));
}