aboutsummaryrefslogtreecommitdiff
path: root/gdb/sparc64-sol2-tdep.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/sparc64-sol2-tdep.c')
-rw-r--r--gdb/sparc64-sol2-tdep.c53
1 files changed, 53 insertions, 0 deletions
diff --git a/gdb/sparc64-sol2-tdep.c b/gdb/sparc64-sol2-tdep.c
index 23e943d..d1d6d62 100644
--- a/gdb/sparc64-sol2-tdep.c
+++ b/gdb/sparc64-sol2-tdep.c
@@ -25,6 +25,7 @@
#include "objfiles.h"
#include "osabi.h"
#include "trad-frame.h"
+#include "regset.h"
#include "sol2-tdep.h"
#include "sparc64-tdep.h"
@@ -49,6 +50,52 @@ const struct sparc_fpregmap sparc64_sol2_fpregmap =
0 * 8, /* %f0 */
33 * 8, /* %fsr */
};
+
+static void
+sparc64_sol2_supply_core_gregset (const struct regset *regset,
+ struct regcache *regcache,
+ int regnum, const void *gregs, size_t len)
+{
+ sparc64_supply_gregset (&sparc64_sol2_gregmap, regcache, regnum, gregs);
+}
+
+static void
+sparc64_sol2_collect_core_gregset (const struct regset *regset,
+ const struct regcache *regcache,
+ int regnum, void *gregs, size_t len)
+{
+ sparc64_collect_gregset (&sparc64_sol2_gregmap, regcache, regnum, gregs);
+}
+
+static void
+sparc64_sol2_supply_core_fpregset (const struct regset *regset,
+ struct regcache *regcache,
+ int regnum, const void *fpregs, size_t len)
+{
+ sparc64_supply_fpregset (&sparc64_sol2_fpregmap, regcache, regnum, fpregs);
+}
+
+static void
+sparc64_sol2_collect_core_fpregset (const struct regset *regset,
+ const struct regcache *regcache,
+ int regnum, void *fpregs, size_t len)
+{
+ sparc64_collect_fpregset (&sparc64_sol2_fpregmap, regcache, regnum, fpregs);
+}
+
+static const struct regset sparc64_sol2_gregset =
+ {
+ NULL,
+ sparc64_sol2_supply_core_gregset,
+ sparc64_sol2_collect_core_gregset
+ };
+
+static const struct regset sparc64_sol2_fpregset =
+ {
+ NULL,
+ sparc64_sol2_supply_core_fpregset,
+ sparc64_sol2_collect_core_fpregset
+ };
static struct sparc_frame_cache *
@@ -159,6 +206,12 @@ sparc64_sol2_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
{
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+ tdep->gregset = &sparc64_sol2_gregset;
+ tdep->sizeof_gregset = 304;
+
+ tdep->fpregset = &sparc64_sol2_fpregset;
+ tdep->sizeof_fpregset = 544;
+
frame_unwind_append_unwinder (gdbarch, &sparc64_sol2_sigtramp_frame_unwind);
sparc64_init_abi (info, gdbarch);