gdb: add target_ops::supports_displaced_step
[deliverable/binutils-gdb.git] / gdb / sparc64-linux-nat.c
CommitLineData
386c036b 1/* Native-dependent code for GNU/Linux UltraSPARC.
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 20#include "defs.h"
75e192e6
DM
21#include "regcache.h"
22
23#include <sys/procfs.h>
24#include "gregset.h"
386c036b
MK
25
26#include "sparc64-tdep.h"
75e192e6 27#include "sparc-tdep.h"
386c036b 28#include "sparc-nat.h"
10d6c8cd
DJ
29#include "inferior.h"
30#include "target.h"
31#include "linux-nat.h"
386c036b 32
f6ac5f3d
PA
33class sparc64_linux_nat_target final : public linux_nat_target
34{
35public:
36 /* Add our register access methods. */
37 void fetch_registers (struct regcache *regcache, int regnum) override
ab89b5a5 38 { sparc_fetch_inferior_registers (regcache, regnum); }
f6ac5f3d 39
ab89b5a5
SM
40 void store_registers (struct regcache *regcache, int regnum) override
41 { sparc_store_inferior_registers (regcache, regnum); }
135340af
PA
42
43 /* Override linux_nat_target low methods. */
44
45 /* ADI support */
46 void low_forget_process (pid_t pid) override
ab89b5a5 47 { sparc64_forget_process (pid); }
f6ac5f3d
PA
48};
49
50static sparc64_linux_nat_target the_sparc64_linux_nat_target;
51
b4fd25c9 52static const struct sparc_gregmap sparc64_linux_ptrace_gregmap =
386c036b
MK
53{
54 16 * 8, /* "tstate" */
55 17 * 8, /* %pc */
56 18 * 8, /* %npc */
57 19 * 8, /* %y */
58 -1, /* %wim */
59 -1, /* %tbr */
60 0 * 8, /* %g1 */
61 -1, /* %l0 */
62 4 /* sizeof (%y) */
63};
64\f
65
75e192e6 66void
7f7fe91e 67supply_gregset (struct regcache *regcache, const prgregset_t *gregs)
75e192e6 68{
b4fd25c9 69 sparc64_supply_gregset (sparc_gregmap, regcache, -1, gregs);
75e192e6
DM
70}
71
72void
7f7fe91e 73supply_fpregset (struct regcache *regcache, const prfpregset_t *fpregs)
75e192e6 74{
b4fd25c9 75 sparc64_supply_fpregset (&sparc64_bsd_fpregmap, regcache, -1, fpregs);
75e192e6
DM
76}
77
78void
7f7fe91e 79fill_gregset (const struct regcache *regcache, prgregset_t *gregs, int regnum)
75e192e6 80{
b4fd25c9 81 sparc64_collect_gregset (sparc_gregmap, regcache, regnum, gregs);
75e192e6
DM
82}
83
84void
7f7fe91e
UW
85fill_fpregset (const struct regcache *regcache,
86 prfpregset_t *fpregs, int regnum)
75e192e6 87{
b4fd25c9 88 sparc64_collect_fpregset (&sparc64_bsd_fpregmap, regcache, regnum, fpregs);
75e192e6
DM
89}
90
6c265988 91void _initialize_sparc64_linux_nat ();
386c036b 92void
6c265988 93_initialize_sparc64_linux_nat ()
386c036b 94{
b4fd25c9 95 sparc_fpregmap = &sparc64_bsd_fpregmap;
c2853f3d 96
10d6c8cd 97 /* Register the target. */
f6ac5f3d 98 linux_target = &the_sparc64_linux_nat_target;
d9f719f1 99 add_inf_child_target (&the_sparc64_linux_nat_target);
10d6c8cd 100
b4fd25c9 101 sparc_gregmap = &sparc64_linux_ptrace_gregmap;
386c036b 102}
This page took 1.708518 seconds and 4 git commands to generate.