gnu-nat: Move local functions inside gnu_nat_target class
[deliverable/binutils-gdb.git] / gdb / sparc-nat.h
index 805ea219e83e0cb663d60c9c00fc3080e3059037..d07bd86d039776b99dc4105ee03eca1ca86ef294 100644 (file)
@@ -1,12 +1,12 @@
 /* Native-dependent code for SPARC.
 
-   Copyright (C) 2003, 2004 Free Software Foundation, Inc.
+   Copyright (C) 2003-2020 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
+   the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
    GNU General Public License for more details.
 
    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., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #ifndef SPARC_NAT_H
 #define SPARC_NAT_H 1
 
-struct sparc_gregset;
+#include "target.h"
 
-extern const struct sparc_gregset *sparc_gregset;
-extern void (*sparc_supply_gregset) (const struct sparc_gregset *,
+struct sparc_gregmap;
+struct sparc_fpregmap;
+
+extern const struct sparc_gregmap *sparc_gregmap;
+extern const struct sparc_fpregmap *sparc_fpregmap;
+extern void (*sparc_supply_gregset) (const struct sparc_gregmap *,
                                     struct regcache *, int , const void *);
-extern void (*sparc_collect_gregset) (const struct sparc_gregset *,
+extern void (*sparc_collect_gregset) (const struct sparc_gregmap *,
                                      const struct regcache *, int, void *);
-extern void (*sparc_supply_fpregset) (struct regcache *, int , const void *);
-extern void (*sparc_collect_fpregset) (const struct regcache *, int , void *);
-extern int (*sparc_gregset_supplies_p) (int);
-extern int (*sparc_fpregset_supplies_p) (int);
+extern void (*sparc_supply_fpregset) (const struct sparc_fpregmap *,
+                                     struct regcache *, int , const void *);
+extern void (*sparc_collect_fpregset) (const struct sparc_fpregmap *,
+                                      const struct regcache *, int , void *);
+extern int (*sparc_gregset_supplies_p) (struct gdbarch *gdbarch, int);
+extern int (*sparc_fpregset_supplies_p) (struct gdbarch *gdbarch, int);
+
+extern int sparc32_gregset_supplies_p (struct gdbarch *gdbarch, int regnum);
+extern int sparc32_fpregset_supplies_p (struct gdbarch *gdbarch, int regnum);
+
+extern void sparc_fetch_inferior_registers (struct regcache *, int);
+extern void sparc_store_inferior_registers (struct regcache *, int);
 
-extern int sparc32_gregset_supplies_p (int regnum);
-extern int sparc32_fpregset_supplies_p (int regnum);
+extern target_xfer_status sparc_xfer_wcookie (enum target_object object,
+                                             const char *annex,
+                                             gdb_byte *readbuf,
+                                             const gdb_byte *writebuf,
+                                             ULONGEST offset,
+                                             ULONGEST len,
+                                             ULONGEST *xfered_len);
 
-/* Create a prototype generic SPARC target.  The client can override
+/* A prototype generic SPARC target.  The client can override
    it with local methods.  */
 
-extern struct target_ops *sparc_target (void);
+template<typename BaseTarget>
+struct sparc_target : public BaseTarget
+{
+  void fetch_registers (struct regcache *regcache, int regnum) override
+  { sparc_fetch_inferior_registers (regcache, regnum); }
+
+  void store_registers (struct regcache *regcache, int regnum) override
+  { sparc_store_inferior_registers (regcache, regnum); }
+
+  enum target_xfer_status xfer_partial (enum target_object object,
+                                       const char *annex,
+                                       gdb_byte *readbuf,
+                                       const gdb_byte *writebuf,
+                                       ULONGEST offset, ULONGEST len,
+                                       ULONGEST *xfered_len) override
+  {
+    if (object == TARGET_OBJECT_WCOOKIE)
+      return sparc_xfer_wcookie (object, annex, readbuf, writebuf,
+                                offset, len, xfered_len);
+
+    return BaseTarget::xfer_partial (object, annex, readbuf, writebuf,
+                                    offset, len, xfered_len);
+  }
+};
 
 #endif /* sparc-nat.h */
This page took 0.025351 seconds and 4 git commands to generate.