*** empty log message ***
[deliverable/binutils-gdb.git] / gdb / sparc64-tdep.h
index e7b910d55fe305327d1b2f31094d0e5a9adb850d..776964dd5392702d56f1023ed1a2bde3d97fa49a 100644 (file)
@@ -1,6 +1,6 @@
 /* Target-dependent code for UltraSPARC.
 
-   Copyright 2003 Free Software Foundation, Inc.
+   Copyright (C) 2003, 2004 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
 
 #ifndef SPARC64_TDEP_H
-#define SPARC62_TDEP_H 1
+#define SPARC64_TDEP_H 1
 
-/* Register numbers of various important registers.  */
+struct frame_info;
+struct gdbarch;
+struct regcache;
+struct sparc_gregset;
+struct trad_frame_saved_reg;
 
-enum sparc_regnum
-{
-  SPARC_G0_REGNUM,             /* %g0 */
-  SPARC_G1_REGNUM,
-  SPARC_G2_REGNUM,
-  SPARC_G3_REGNUM,
-  SPARC_G4_REGNUM,
-  SPARC_G5_REGNUM,
-  SPARC_G6_REGNUM,
-  SPARC_G7_REGNUM,             /* %g7 */
-  SPARC_O0_REGNUM,             /* %o0 */
-  SPARC_O1_REGNUM,
-  SPARC_O2_REGNUM,
-  SPARC_O3_REGNUM,
-  SPARC_O4_REGNUM,
-  SPARC_O5_REGNUM,
-  SPARC_SP_REGNUM,             /* %sp (%o6) */
-  SPARC_O7_REGNUM,             /* %o7 */
-  SPARC_L0_REGNUM,             /* %l0 */
-  SPARC_L1_REGNUM,
-  SPARC_L2_REGNUM,
-  SPARC_L3_REGNUM,
-  SPARC_L4_REGNUM,
-  SPARC_L5_REGNUM,
-  SPARC_L6_REGNUM,
-  SPARC_L7_REGNUM,             /* %l7 */
-  SPARC_I0_REGNUM,             /* %i0 */
-  SPARC_I1_REGNUM,
-  SPARC_I2_REGNUM,
-  SPARC_I3_REGNUM,
-  SPARC_I4_REGNUM,
-  SPARC_I5_REGNUM,
-  SPARC_FP_REGNUM,             /* %fp (%i6) */
-  SPARC_I7_REGNUM,             /* %i7 */
-  SPARC_F0_REGNUM,             /* %f0 */
-  SPARC_F31_REGNUM = SPARC_F0_REGNUM + 31 /* %f31 */
-};
+#include "sparc-tdep.h"
+
+/* The stack pointer is offset from the stack frame by a BIAS of 2047
+   (0x7ff) for 64-bit code.  BIAS is likely to be defined on SPARC
+   hosts, so undefine it first.  */
+#undef BIAS
+#define BIAS 2047
+
+/* Register offsets for the general-purpose register set.  */
+
+/* UltraSPARC doesn't have %psr.  */
+#define r_tstate_offset r_psr_offset
+
+/* UltraSPARC doesn't have %wim either.  */
+#define r_fprs_offset r_wim_offset
+
+/* Register numbers of various important registers.  */
 
 enum sparc64_regnum
 {
-  SPARC64_F32_REGNUM = SPARC_F0_REGNUM + 32,   /* %f32 */
-  SPARC64_F62_REGNUM = SPARC64_F32_REGNUM + 15,        /* %f62 */
+  SPARC64_F32_REGNUM           /* %f32 */
+  = SPARC_F0_REGNUM + 32,
+  SPARC64_F62_REGNUM           /* %f62 */
+  = SPARC64_F32_REGNUM + 15,
   SPARC64_PC_REGNUM,           /* %pc */
   SPARC64_NPC_REGNUM,          /* %npc */
   SPARC64_STATE_REGNUM,
   SPARC64_FSR_REGNUM,          /* %fsr */
   SPARC64_FPRS_REGNUM,         /* %fprs */
   SPARC64_Y_REGNUM,            /* %y */
-  
+
   /* Pseudo registers.  */
   SPARC64_CWP_REGNUM,          /* %cwp */
   SPARC64_PSTATE_REGNUM,       /* %pstate */
   SPARC64_ASI_REGNUM,          /* %asi */
   SPARC64_CCR_REGNUM,          /* %ccr */
   SPARC64_D0_REGNUM,           /* %d0 */
-  SPARC64_D10_REGNUM = SPARC64_D0_REGNUM + 5, /* %d10 */
-  SPARC64_D30_REGNUM = SPARC64_D0_REGNUM + 15, /* %d30 */
-  SPARC64_D32_REGNUM = SPARC64_D0_REGNUM + 16, /* %d32 */
-  SPARC64_D62_REGNUM = SPARC64_D0_REGNUM + 31, /* %d62 */
+  SPARC64_D10_REGNUM           /* %d10 */
+  = SPARC64_D0_REGNUM + 5,
+  SPARC64_D30_REGNUM           /* %d30 */
+  = SPARC64_D0_REGNUM + 15,
+  SPARC64_D32_REGNUM           /* %d32 */
+  = SPARC64_D0_REGNUM + 16,
+  SPARC64_D62_REGNUM           /* %d62 */
+  = SPARC64_D0_REGNUM + 31,
   SPARC64_Q0_REGNUM,           /* %q0 */
-  SPARC64_Q8_REGNUM = SPARC64_Q0_REGNUM + 2, /* %q8 */
-  SPARC64_Q28_REGNUM = SPARC64_Q0_REGNUM + 7, /* %q28 */
-  SPARC64_Q32_REGNUM = SPARC64_Q0_REGNUM + 8, /* %q32 */
-  SPARC64_Q60_REGNUM = SPARC64_Q0_REGNUM + 15 /* %q60 */
+  SPARC64_Q8_REGNUM            /* %q8 */
+  = SPARC64_Q0_REGNUM + 2,
+  SPARC64_Q28_REGNUM           /* %q28 */
+  = SPARC64_Q0_REGNUM + 7,
+  SPARC64_Q32_REGNUM           /* %q32 */
+  = SPARC64_Q0_REGNUM + 8,
+  SPARC64_Q60_REGNUM           /* %q60 */
+  = SPARC64_Q0_REGNUM + 15
 };
 
-extern void sparc_supply_rwindow (CORE_ADDR sp, int regnum);
-extern void sparc_fill_rwindow (CORE_ADDR sp, int regnum);
+extern void sparc64_init_abi (struct gdbarch_info info,
+                             struct gdbarch *gdbarch);
+
+extern void sparc64_supply_gregset (const struct sparc_gregset *gregset,
+                                   struct regcache *regcache,
+                                   int regnum, const void *gregs);
+extern void sparc64_collect_gregset (const struct sparc_gregset *gregset,
+                                    const struct regcache *regcache,
+                                    int regnum, void *gregs);
+extern void sparc64_supply_fpregset (struct regcache *regcache,
+                                    int regnum, const void *fpregs);
+extern void sparc64_collect_fpregset (const struct regcache *regcache,
+                                     int regnum, void *fpregs);
+
+/* Functions and variables exported from sparc64-sol2-tdep.c.  */
+
+/* Register offsets for Solaris 2.  */
+extern const struct sparc_gregset sparc64_sol2_gregset;
+
+extern void sparc64_sol2_init_abi (struct gdbarch_info info,
+                                  struct gdbarch *gdbarch);
+
+/* Variables exported from sparc64fbsd-tdep.c.  */
+
+/* Register offsets for FreeBSD/sparc64.  */
+extern const struct sparc_gregset sparc64fbsd_gregset;
+
+/* Functions and variables exported from sparc64nbsd-tdep.c.  */
 
-/* Functions exported from sparc64fbsd-tdep.c.  */
+/* Register offsets for NetBSD/sparc64.  */
+extern const struct sparc_gregset sparc64nbsd_gregset;
 
-extern void sparc64fbsd_supply_reg (const char *regs, int regnum);
-extern void sparc64fbsd_fill_reg (char *regs, int regnum);
-extern void sparc64fbsd_supply_fpreg (const char *regs, int regnum);
-extern void sparc64fbsd_fill_fpreg (char *regs, int regnum);
+extern struct trad_frame_saved_reg *
+  sparc64nbsd_sigcontext_saved_regs (CORE_ADDR sigcontext_addr,
+                                    struct frame_info *next_frame);
 
 #endif /* sparc64-tdep.h */
This page took 0.028146 seconds and 4 git commands to generate.