Add AVX512 registers support to GDB and GDBserver.
[deliverable/binutils-gdb.git] / gdb / mips64obsd-tdep.c
index ccc4d5bc3199a05454fd89b590aadf55fa4712bb..62853ce14179f678218d0bc06cb83f112f1031ed 100644 (file)
@@ -1,6 +1,6 @@
 /* Target-dependent code for OpenBSD/mips64.
 
-   Copyright (C) 2004, 2007 Free Software Foundation, Inc.
+   Copyright (C) 2004-2014 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -18,6 +18,7 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "defs.h"
+#include "gdbtypes.h"
 #include "osabi.h"
 #include "regcache.h"
 #include "regset.h"
 #include "tramp-frame.h"
 
 #include "gdb_assert.h"
-#include "gdb_string.h"
+#include <string.h>
 
+#include "obsd-tdep.h"
 #include "mips-tdep.h"
 #include "solib-svr4.h"
 
+/* The MIPS64 Floating-Point Quad-Precision format is similar to
+   big-endian IA-64 Quad-Precision format.  */
+#define floatformats_mips64_quad floatformats_ia64_quad
+
 #define MIPS64OBSD_NUM_REGS 73
 
 /* Core file support.  */
@@ -79,42 +85,41 @@ mips64obsd_regset_from_core_section (struct gdbarch *gdbarch,
 
 static void
 mips64obsd_sigframe_init (const struct tramp_frame *self,
-                         struct frame_info *next_frame,
+                         struct frame_info *this_frame,
                          struct trad_frame_cache *cache,
                          CORE_ADDR func)
 {
-  struct gdbarch *gdbarch = get_frame_arch (next_frame);
+  struct gdbarch *gdbarch = get_frame_arch (this_frame);
   CORE_ADDR sp, sigcontext_addr, addr;
   int regnum;
 
   /* We find the appropriate instance of `struct sigcontext' at a
      fixed offset in the signal frame.  */
-  sp = frame_unwind_register_signed (next_frame,
-                                    MIPS_SP_REGNUM
-                                    + gdbarch_num_regs (current_gdbarch));
+  sp = get_frame_register_signed (this_frame,
+                                 MIPS_SP_REGNUM + gdbarch_num_regs (gdbarch));
   sigcontext_addr = sp + 32;
 
   /* PC.  */
   regnum = mips_regnum (gdbarch)->pc;
   trad_frame_set_reg_addr (cache,
-                          regnum + gdbarch_num_regs (current_gdbarch),
+                          regnum + gdbarch_num_regs (gdbarch),
                            sigcontext_addr + 16);
 
   /* GPRs.  */
   for (regnum = MIPS_AT_REGNUM, addr = sigcontext_addr + 32;
        regnum <= MIPS_RA_REGNUM; regnum++, addr += 8)
     trad_frame_set_reg_addr (cache,
-                            regnum + gdbarch_num_regs (current_gdbarch),
+                            regnum + gdbarch_num_regs (gdbarch),
                             addr);
 
   /* HI and LO.  */
   regnum = mips_regnum (gdbarch)->lo;
   trad_frame_set_reg_addr (cache,
-                          regnum + gdbarch_num_regs (current_gdbarch),
+                          regnum + gdbarch_num_regs (gdbarch),
                           sigcontext_addr + 280);
   regnum = mips_regnum (gdbarch)->hi;
   trad_frame_set_reg_addr (cache,
-                          regnum + gdbarch_num_regs (current_gdbarch),
+                          regnum + gdbarch_num_regs (gdbarch),
                           sigcontext_addr + 288);
 
   /* TODO: Handle the floating-point registers.  */
@@ -148,6 +153,11 @@ mips64obsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
 
   tramp_frame_prepend_unwinder (gdbarch, &mips64obsd_sigframe);
 
+  set_gdbarch_long_double_bit (gdbarch, 128);
+  set_gdbarch_long_double_format (gdbarch, floatformats_mips64_quad);
+
+  obsd_init_abi(info, gdbarch);
+
   /* OpenBSD/mips64 has SVR4-style shared libraries.  */
   set_solib_svr4_fetch_link_map_offsets
     (gdbarch, svr4_lp64_fetch_link_map_offsets);
This page took 0.027345 seconds and 4 git commands to generate.