gdb: add target_ops::supports_displaced_step
[deliverable/binutils-gdb.git] / gdb / sparc-nat.h
CommitLineData
386c036b 1/* Native-dependent code for SPARC.
8b39fe56 2
b811d2c2 3 Copyright (C) 2003-2020 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
ab89b5a5
SM
23#include "target.h"
24
b4fd25c9
AA
25struct sparc_gregmap;
26struct sparc_fpregmap;
8b39fe56 27
b4fd25c9
AA
28extern const struct sparc_gregmap *sparc_gregmap;
29extern const struct sparc_fpregmap *sparc_fpregmap;
30extern void (*sparc_supply_gregset) (const struct sparc_gregmap *,
386c036b 31 struct regcache *, int , const void *);
b4fd25c9 32extern void (*sparc_collect_gregset) (const struct sparc_gregmap *,
386c036b 33 const struct regcache *, int, void *);
b4fd25c9 34extern void (*sparc_supply_fpregset) (const struct sparc_fpregmap *,
db75c717 35 struct regcache *, int , const void *);
b4fd25c9 36extern void (*sparc_collect_fpregset) (const struct sparc_fpregmap *,
db75c717 37 const struct regcache *, int , void *);
ec22ec34
UW
38extern int (*sparc_gregset_supplies_p) (struct gdbarch *gdbarch, int);
39extern int (*sparc_fpregset_supplies_p) (struct gdbarch *gdbarch, int);
8b39fe56 40
ec22ec34
UW
41extern int sparc32_gregset_supplies_p (struct gdbarch *gdbarch, int regnum);
42extern int sparc32_fpregset_supplies_p (struct gdbarch *gdbarch, int regnum);
386c036b 43
f6ac5f3d
PA
44extern void sparc_fetch_inferior_registers (struct regcache *, int);
45extern void sparc_store_inferior_registers (struct regcache *, int);
46
47extern target_xfer_status sparc_xfer_wcookie (enum target_object object,
48 const char *annex,
49 gdb_byte *readbuf,
50 const gdb_byte *writebuf,
51 ULONGEST offset,
52 ULONGEST len,
53 ULONGEST *xfered_len);
54
55/* A prototype generic SPARC target. The client can override
1b9445c2
MK
56 it with local methods. */
57
f6ac5f3d
PA
58template<typename BaseTarget>
59struct sparc_target : public BaseTarget
60{
61 void fetch_registers (struct regcache *regcache, int regnum) override
62 { sparc_fetch_inferior_registers (regcache, regnum); }
63
64 void store_registers (struct regcache *regcache, int regnum) override
65 { sparc_store_inferior_registers (regcache, regnum); }
66
67 enum target_xfer_status xfer_partial (enum target_object object,
68 const char *annex,
69 gdb_byte *readbuf,
70 const gdb_byte *writebuf,
71 ULONGEST offset, ULONGEST len,
72 ULONGEST *xfered_len) override
73 {
74 if (object == TARGET_OBJECT_WCOOKIE)
75 return sparc_xfer_wcookie (object, annex, readbuf, writebuf,
76 offset, len, xfered_len);
1b9445c2 77
c6a42d11
CB
78 return BaseTarget::xfer_partial (object, annex, readbuf, writebuf,
79 offset, len, xfered_len);
f6ac5f3d
PA
80 }
81};
6f7a27d5 82
386c036b 83#endif /* sparc-nat.h */
This page took 1.837733 seconds and 4 git commands to generate.