aboutsummaryrefslogtreecommitdiff
path: root/gdb/hppa-tdep.c
diff options
context:
space:
mode:
authorRandolph Chung <tausq@debian.org>2005-12-09 11:10:25 +0000
committerRandolph Chung <tausq@debian.org>2005-12-09 11:10:25 +0000
commit1ef7fcb5adf312dad7f75dff3a5f05c338b93b30 (patch)
tree5e9e17391b51367aa393b92aae8e6c4b7807ce3e /gdb/hppa-tdep.c
parent9fdb1f509e56d4408647c62e12ae0fc027f94a4b (diff)
downloadgdb-1ef7fcb5adf312dad7f75dff3a5f05c338b93b30.zip
gdb-1ef7fcb5adf312dad7f75dff3a5f05c338b93b30.tar.gz
gdb-1ef7fcb5adf312dad7f75dff3a5f05c338b93b30.tar.bz2
2005-12-09 Randolph Chung <tausq@debian.org>
* hppa-tdep.c (hppa64_dwarf_reg_to_regnum): New funtion. (hppa_gdbarch_init): Set dwarf_reg_to_regnum and dwarf2_reg_to_regnum methods.
Diffstat (limited to 'gdb/hppa-tdep.c')
-rw-r--r--gdb/hppa-tdep.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/gdb/hppa-tdep.c b/gdb/hppa-tdep.c
index 94de581..88eb1dc 100644
--- a/gdb/hppa-tdep.c
+++ b/gdb/hppa-tdep.c
@@ -662,6 +662,21 @@ hppa64_register_name (int i)
return names[i];
}
+static int
+hppa64_dwarf_reg_to_regnum (int reg)
+{
+ /* r0-r31 and sar map one-to-one. */
+ if (reg <= 32)
+ return reg;
+
+ /* fr4-fr31 are mapped from 72 in steps of 2. */
+ if (reg >= 72 || reg < 72 + 28 * 2)
+ return HPPA64_FP4_REGNUM + (reg - 72) / 2;
+
+ error ("Invalid DWARF register num %d.", reg);
+ return -1;
+}
+
/* This function pushes a stack frame with arguments as part of the
inferior function calling mechanism.
@@ -2747,6 +2762,8 @@ hppa_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_num_regs (gdbarch, hppa64_num_regs);
set_gdbarch_register_name (gdbarch, hppa64_register_name);
set_gdbarch_register_type (gdbarch, hppa64_register_type);
+ set_gdbarch_dwarf_reg_to_regnum (gdbarch, hppa64_dwarf_reg_to_regnum);
+ set_gdbarch_dwarf2_reg_to_regnum (gdbarch, hppa64_dwarf_reg_to_regnum);
set_gdbarch_cannot_store_register (gdbarch,
hppa64_cannot_store_register);
set_gdbarch_cannot_fetch_register (gdbarch,