diff options
author | Mark Kettenis <kettenis@gnu.org> | 2006-12-29 21:00:47 +0000 |
---|---|---|
committer | Mark Kettenis <kettenis@gnu.org> | 2006-12-29 21:00:47 +0000 |
commit | 2d45707707d2f6b57a3d6a11100c17b23c0a7a08 (patch) | |
tree | 3f03f0e4056c1d853e2845dc2d74eb694e82c70a /gdb/sparc-tdep.c | |
parent | 83ad0046cfa785068be98b08efadcad6854c1a12 (diff) | |
download | gdb-2d45707707d2f6b57a3d6a11100c17b23c0a7a08.zip gdb-2d45707707d2f6b57a3d6a11100c17b23c0a7a08.tar.gz gdb-2d45707707d2f6b57a3d6a11100c17b23c0a7a08.tar.bz2 |
* sparc-tdep.c (sparc_psr_type, sparc_fsr_type): New variables.
(sparc_init_types): New function.
(sparc32_register_type): Use appropriate flag types for %fsr and
%prs.
(_initialize_sparc_tdep): Call sparc_init_types.
Diffstat (limited to 'gdb/sparc-tdep.c')
-rw-r--r-- | gdb/sparc-tdep.c | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/gdb/sparc-tdep.c b/gdb/sparc-tdep.c index 27c852f..a53c464 100644 --- a/gdb/sparc-tdep.c +++ b/gdb/sparc-tdep.c @@ -294,6 +294,48 @@ sparc32_register_name (int regnum) return NULL; } + + +/* Type for %psr. */ +struct type *sparc_psr_type; + +/* Type for %fsr. */ +struct type *sparc_fsr_type; + +/* Construct types for ISA-specific registers. */ + +static void +sparc_init_types (void) +{ + struct type *type; + + type = init_flags_type ("builtin_type_sparc_psr", 4); + append_flags_type_flag (type, 5, "ET"); + append_flags_type_flag (type, 6, "PS"); + append_flags_type_flag (type, 7, "S"); + append_flags_type_flag (type, 12, "EF"); + append_flags_type_flag (type, 13, "EC"); + sparc_psr_type = type; + + type = init_flags_type ("builtin_type_sparc_fsr", 4); + append_flags_type_flag (type, 0, "NXA"); + append_flags_type_flag (type, 1, "DZA"); + append_flags_type_flag (type, 2, "UFA"); + append_flags_type_flag (type, 3, "OFA"); + append_flags_type_flag (type, 4, "NVA"); + append_flags_type_flag (type, 5, "NXC"); + append_flags_type_flag (type, 6, "DZC"); + append_flags_type_flag (type, 7, "UFC"); + append_flags_type_flag (type, 8, "OFC"); + append_flags_type_flag (type, 9, "NVC"); + append_flags_type_flag (type, 22, "NS"); + append_flags_type_flag (type, 23, "NXM"); + append_flags_type_flag (type, 24, "DZM"); + append_flags_type_flag (type, 25, "UFM"); + append_flags_type_flag (type, 26, "OFM"); + append_flags_type_flag (type, 27, "NVM"); + sparc_fsr_type = type; +} /* Return the GDB type object for the "standard" data type of data in register REGNUM. */ @@ -313,6 +355,12 @@ sparc32_register_type (struct gdbarch *gdbarch, int regnum) if (regnum == SPARC32_PC_REGNUM || regnum == SPARC32_NPC_REGNUM) return builtin_type_void_func_ptr; + if (regnum == SPARC32_PSR_REGNUM) + return sparc_psr_type; + + if (regnum == SPARC32_FSR_REGNUM) + return sparc_fsr_type; + return builtin_type_int32; } @@ -1621,4 +1669,7 @@ void _initialize_sparc_tdep (void) { register_gdbarch_init (bfd_arch_sparc, sparc32_gdbarch_init); + + /* Initialize the SPARC-specific register types. */ + sparc_init_types(); } |