diff options
author | Richard Henderson <rth@redhat.com> | 2003-06-02 20:57:16 +0000 |
---|---|---|
committer | Richard Henderson <rth@redhat.com> | 2003-06-02 20:57:16 +0000 |
commit | 98a8e1e505088778f916f11803481c42b0d696b5 (patch) | |
tree | 1b3204c7ce17814bf0650c86b366d34fdec9c4ef /gdb/alphabsd-tdep.c | |
parent | f75d70ccb305eff2b50813ee81d2602394f57983 (diff) | |
download | gdb-98a8e1e505088778f916f11803481c42b0d696b5.zip gdb-98a8e1e505088778f916f11803481c42b0d696b5.tar.gz gdb-98a8e1e505088778f916f11803481c42b0d696b5.tar.bz2 |
* alpha-tdep.c (alpha_supply_int_regs, alpha_fill_int_regs): New.
(alpha_supply_fp_regs, alpha_fill_fp_regs): New.
* alpha-tdep.h: Declare them.
* alpha-nat.c (fetch_osf_core_registers): Constify core_reg_mapping.
Remove zerobuf. Don't error on UNIQUE.
(fetch_elf_core_registers): Use alpha_supply_{int,fp}_regs.
(ALPHA_REGSET_UNIQUE): Provide default.
(supply_gregset): Use alpha_supply_int_regs.
(fill_gregset): Use alpha_fill_int_regs.
(supply_fpregset): Use alpha_supply_fp_regs.
(fill_fpregset): Use alpha_fill_fp_regs.
* alphabsd-tdep.c (NUM_GREGS, NUM_FPREGS): Remove.
(alphabsd_supply_reg): Use alpha_supply_int_regs.
(alphabsd_fill_reg): Use alpha_fill_int_regs.
(alphabsd_supply_fpreg): Use alpha_supply_fp_regs.
(alphabsd_fill_fpreg): Use alpha_fill_fp_regs.
* config/alpha/nm-linux.h (ALPHA_REGSET_UNIQUE): New.
Diffstat (limited to 'gdb/alphabsd-tdep.c')
-rw-r--r-- | gdb/alphabsd-tdep.c | 63 |
1 files changed, 8 insertions, 55 deletions
diff --git a/gdb/alphabsd-tdep.c b/gdb/alphabsd-tdep.c index 39a9b1a..89c9c30 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); } |