aboutsummaryrefslogtreecommitdiff
path: root/gdb/sparc-tdep.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/sparc-tdep.c')
-rw-r--r--gdb/sparc-tdep.c20
1 files changed, 8 insertions, 12 deletions
diff --git a/gdb/sparc-tdep.c b/gdb/sparc-tdep.c
index c83cbcd..172f98d 100644
--- a/gdb/sparc-tdep.c
+++ b/gdb/sparc-tdep.c
@@ -279,8 +279,13 @@ CORE_ADDR
sparc_extract_struct_value_address (regbuf)
char regbuf[REGISTER_BYTES];
{
+#ifdef GDB_TARGET_IS_SPARC64
+ return extract_address (regbuf + REGISTER_BYTE (O0_REGNUM),
+ REGISTER_RAW_SIZE (O0_REGNUM));
+#else
return read_memory_integer (((int *)(regbuf)) [SP_REGNUM] + (16 * SPARC_INTREG_SIZE),
TARGET_PTR_BIT / TARGET_CHAR_BIT);
+#endif
}
/* Find the pc saved in frame FRAME. */
@@ -1272,7 +1277,7 @@ get_longjmp_target (pc)
related to C++ mangling, it is done for C too. */
char *
-solaris_static_transform_name (name)
+sunpro_static_transform_name (name)
char *name;
{
char *p;
@@ -1295,20 +1300,11 @@ solaris_static_transform_name (name)
#ifdef GDB_TARGET_IS_SPARC64
-CORE_ADDR
-sparc64_extract_struct_value_address (regbuf)
- char regbuf[REGISTER_BYTES];
-{
- CORE_ADDR addr;
-
- /* FIXME: We assume a non-leaf function. */
- addr = read_register (I0_REGNUM);
- return addr;
-}
-
/* Utilities for printing registers.
Page numbers refer to the SPARC Architecture Manual. */
+static void dump_ccreg PARAMS ((char *, int));
+
static void
dump_ccreg (reg, val)
char *reg;