gdb: add target_ops::supports_displaced_step
[deliverable/binutils-gdb.git] / gdb / sparc-sol2-nat.c
CommitLineData
386c036b
MK
1/* Native-dependent code for Solaris SPARC.
2
b811d2c2 3 Copyright (C) 2003-2020 Free Software Foundation, Inc.
386c036b
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
386c036b
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/>. */
386c036b
MK
19
20#include "defs.h"
21#include "regcache.h"
22
23#include <sys/procfs.h>
24#include "gregset.h"
25
26#include "sparc-tdep.h"
d1a7880c
PA
27#include "target.h"
28#include "procfs.h"
386c036b
MK
29
30/* This file provids the (temporary) glue between the Solaris SPARC
31 target dependent code and the machine independent SVR4 /proc
32 support. */
33
34/* Solaris 7 (Solaris 2.7, SunOS 5.7) and up support two process data
35 models, the traditional 32-bit data model (ILP32) and the 64-bit
36 data model (LP64). The format of /proc depends on the data model
37 of the observer (the controlling process, GDB in our case). The
38 Solaris header files conveniently define PR_MODEL_NATIVE to the
39 data model of the controlling process. If its value is
40 PR_MODEL_LP64, we know that GDB is being compiled as a 64-bit
41 program.
42
386c036b
MK
43 Note that a 32-bit GDB won't be able to debug a 64-bit target
44 process using /proc on Solaris. */
45
c475f569 46#if PR_MODEL_NATIVE == PR_MODEL_LP64
386c036b
MK
47
48#include "sparc64-tdep.h"
49
50#define sparc_supply_gregset sparc64_supply_gregset
51#define sparc_supply_fpregset sparc64_supply_fpregset
52#define sparc_collect_gregset sparc64_collect_gregset
53#define sparc_collect_fpregset sparc64_collect_fpregset
54
b4fd25c9
AA
55#define sparc_sol2_gregmap sparc64_sol2_gregmap
56#define sparc_sol2_fpregmap sparc64_sol2_fpregmap
386c036b
MK
57
58#else
59
60#define sparc_supply_gregset sparc32_supply_gregset
61#define sparc_supply_fpregset sparc32_supply_fpregset
62#define sparc_collect_gregset sparc32_collect_gregset
63#define sparc_collect_fpregset sparc32_collect_fpregset
64
b4fd25c9
AA
65#define sparc_sol2_gregmap sparc32_sol2_gregmap
66#define sparc_sol2_fpregmap sparc32_sol2_fpregmap
386c036b
MK
67
68#endif
69
70void
7f7fe91e 71supply_gregset (struct regcache *regcache, const prgregset_t *gregs)
386c036b 72{
b4fd25c9 73 sparc_supply_gregset (&sparc_sol2_gregmap, regcache, -1, gregs);
386c036b
MK
74}
75
76void
7f7fe91e 77supply_fpregset (struct regcache *regcache, const prfpregset_t *fpregs)
386c036b 78{
b4fd25c9 79 sparc_supply_fpregset (&sparc_sol2_fpregmap, regcache, -1, fpregs);
386c036b
MK
80}
81
82void
7f7fe91e 83fill_gregset (const struct regcache *regcache, prgregset_t *gregs, int regnum)
386c036b 84{
b4fd25c9 85 sparc_collect_gregset (&sparc_sol2_gregmap, regcache, regnum, gregs);
386c036b
MK
86}
87
88void
c378eb4e
MS
89fill_fpregset (const struct regcache *regcache,
90 prfpregset_t *fpregs, int regnum)
386c036b 91{
b4fd25c9 92 sparc_collect_fpregset (&sparc_sol2_fpregmap, regcache, regnum, fpregs);
386c036b 93}
This page took 1.662928 seconds and 4 git commands to generate.