* alpha-tdep.c (alpha_register_reggroup_p): New.

(alpha_gdbarch_init): Register it.
This commit is contained in:
Richard Henderson 2003-06-02 04:32:19 +00:00
parent b59661bd15
commit 615967cb25
2 changed files with 42 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2003-06-01 Richard Henderson <rth@redhat.com>
* alpha-tdep.c (alpha_register_reggroup_p): New.
(alpha_gdbarch_init): Register it.
2003-06-02 Andrew Cagney <cagney@redhat.com>
* dwarfread.c: Eliminate "register"

View File

@ -20,6 +20,7 @@
Boston, MA 02111-1307, USA. */
#include "defs.h"
#include "doublest.h"
#include "frame.h"
#include "frame-unwind.h"
#include "frame-base.h"
@ -34,7 +35,7 @@
#include "gdb_string.h"
#include "linespec.h"
#include "regcache.h"
#include "doublest.h"
#include "reggroups.h"
#include "arch-utils.h"
#include "osabi.h"
#include "block.h"
@ -92,6 +93,39 @@ alpha_register_virtual_type (int regno)
? builtin_type_double : builtin_type_long);
}
/* Is REGNUM a member of REGGROUP? */
static int
alpha_register_reggroup_p (struct gdbarch *gdbarch, int regnum,
struct reggroup *group)
{
/* Filter out any registers eliminated, but whose regnum is
reserved for backward compatibility, e.g. the vfp. */
if (REGISTER_NAME (regnum) == NULL || *REGISTER_NAME (regnum) == '\0')
return 0;
/* Since we implement no pseudo registers, save/restore is equal to all. */
if (group == all_reggroup
|| group == save_reggroup
|| group == restore_reggroup)
return 1;
/* All other groups are non-overlapping. */
/* Since this is really a PALcode memory slot... */
if (regnum == ALPHA_UNIQUE_REGNUM)
return group == system_reggroup;
/* Force the FPCR to be considered part of the floating point state. */
if (regnum == ALPHA_FPCR_REGNUM)
return group == float_reggroup;
if (regnum >= ALPHA_FP0_REGNUM && regnum < ALPHA_FP0_REGNUM + 31)
return group == float_reggroup;
else
return group == general_reggroup;
}
static int
alpha_register_byte (int regno)
{
@ -1260,6 +1294,8 @@ alpha_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
alpha_register_convert_to_virtual);
set_gdbarch_register_convert_to_raw (gdbarch, alpha_register_convert_to_raw);
set_gdbarch_register_reggroup_p (gdbarch, alpha_register_reggroup_p);
/* Prologue heuristics. */
set_gdbarch_skip_prologue (gdbarch, alpha_skip_prologue);