]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/sparc-nat.h
Convert struct target_ops to C++
[thirdparty/binutils-gdb.git] / gdb / sparc-nat.h
CommitLineData
386c036b 1/* Native-dependent code for SPARC.
8b39fe56 2
e2882c85 3 Copyright (C) 2003-2018 Free Software Foundation, Inc.
8b39fe56
MK
4
5 This file is part of GDB.
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
a9762ec7 9 the Free Software Foundation; either version 3 of the License, or
8b39fe56
MK
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
a9762ec7 18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
8b39fe56 19
386c036b
MK
20#ifndef SPARC_NAT_H
21#define SPARC_NAT_H 1
8b39fe56 22
b4fd25c9
AA
23struct sparc_gregmap;
24struct sparc_fpregmap;
8b39fe56 25
b4fd25c9
AA
26extern const struct sparc_gregmap *sparc_gregmap;
27extern const struct sparc_fpregmap *sparc_fpregmap;
28extern void (*sparc_supply_gregset) (const struct sparc_gregmap *,
386c036b 29 struct regcache *, int , const void *);
b4fd25c9 30extern void (*sparc_collect_gregset) (const struct sparc_gregmap *,
386c036b 31 const struct regcache *, int, void *);
b4fd25c9 32extern void (*sparc_supply_fpregset) (const struct sparc_fpregmap *,
db75c717 33 struct regcache *, int , const void *);
b4fd25c9 34extern void (*sparc_collect_fpregset) (const struct sparc_fpregmap *,
db75c717 35 const struct regcache *, int , void *);
ec22ec34
UW
36extern int (*sparc_gregset_supplies_p) (struct gdbarch *gdbarch, int);
37extern int (*sparc_fpregset_supplies_p) (struct gdbarch *gdbarch, int);
8b39fe56 38
ec22ec34
UW
39extern int sparc32_gregset_supplies_p (struct gdbarch *gdbarch, int regnum);
40extern int sparc32_fpregset_supplies_p (struct gdbarch *gdbarch, int regnum);
386c036b 41
f6ac5f3d
PA
42extern void sparc_fetch_inferior_registers (struct regcache *, int);
43extern void sparc_store_inferior_registers (struct regcache *, int);
44
45extern target_xfer_status sparc_xfer_wcookie (enum target_object object,
46 const char *annex,
47 gdb_byte *readbuf,
48 const gdb_byte *writebuf,
49 ULONGEST offset,
50 ULONGEST len,
51 ULONGEST *xfered_len);
52
53/* A prototype generic SPARC target. The client can override
1b9445c2
MK
54 it with local methods. */
55
f6ac5f3d
PA
56template<typename BaseTarget>
57struct sparc_target : public BaseTarget
58{
59 void fetch_registers (struct regcache *regcache, int regnum) override
60 { sparc_fetch_inferior_registers (regcache, regnum); }
61
62 void store_registers (struct regcache *regcache, int regnum) override
63 { sparc_store_inferior_registers (regcache, regnum); }
64
65 enum target_xfer_status xfer_partial (enum target_object object,
66 const char *annex,
67 gdb_byte *readbuf,
68 const gdb_byte *writebuf,
69 ULONGEST offset, ULONGEST len,
70 ULONGEST *xfered_len) override
71 {
72 if (object == TARGET_OBJECT_WCOOKIE)
73 return sparc_xfer_wcookie (object, annex, readbuf, writebuf,
74 offset, len, xfered_len);
1b9445c2 75
f6ac5f3d
PA
76 return BaseTarget (object, annex, readbuf, writebuf,
77 offset, len, xfered_len);
78 }
79};
6f7a27d5 80
386c036b 81#endif /* sparc-nat.h */