summaryrefslogtreecommitdiff
path: root/gdb/alphabsd-tdep.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/alphabsd-tdep.c')
-rw-r--r--gdb/alphabsd-tdep.c63
1 files changed, 8 insertions, 55 deletions
diff --git a/gdb/alphabsd-tdep.c b/gdb/alphabsd-tdep.c
index 39a9b1ae77e..89c9c30c1b3 100644
--- a/gdb/alphabsd-tdep.c
+++ b/gdb/alphabsd-tdep.c
@@ -19,84 +19,37 @@
Boston, MA 02111-1307, USA. */
#include "defs.h"
-#include "regcache.h"
#include "alpha-tdep.h"
#include "alphabsd-tdep.h"
-/* Number of general-purpose registers. */
-#define NUM_GREGS 32
-
-/* Number of floating-point registers. */
-#define NUM_FPREGS 31
-
/* Conviently, GDB uses the same register numbering as the
ptrace register structure used by BSD on Alpha. */
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));
- }
- }
-
- /* The PC travels in the ZERO slot. */
- if (regno == PC_REGNUM || regno == -1)
- supply_register (PC_REGNUM, regs + (31 * 8));
+ /* PC is at slot 32; UNIQUE not present. */
+ alpha_supply_int_regs (regno, regs, regs + 31*8, NULL);
}
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));
-
- /* The PC travels in the ZERO slot. */
- if (regno == PC_REGNUM || regno == -1)
- regcache_collect (PC_REGNUM, regs + (31 * 8));
+ /* PC is at slot 32; UNIQUE not present. */
+ alpha_fill_int_regs (regno, regs, regs + 31*8, NULL);
}
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));
+ /* FPCR is at slot 33; slot 32 unused. */
+ alpha_supply_fp_regs (regno, regs, regs + 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));
+ /* FPCR is at slot 33; slot 32 unused. */
+ alpha_fill_fp_regs (regno, regs, regs + 32*8);
}