Merge remote-tracking branch 'origin/master' into amd-common
[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
386c036b
MK
91void
92_initialize_sparc64_linux_nat (void)
93{
b4fd25c9 94 sparc_fpregmap = &sparc64_bsd_fpregmap;
c2853f3d 95
10d6c8cd 96 /* Register the target. */
f6ac5f3d 97 linux_target = &the_sparc64_linux_nat_target;
d9f719f1 98 add_inf_child_target (&the_sparc64_linux_nat_target);
10d6c8cd 99
b4fd25c9 100 sparc_gregmap = &sparc64_linux_ptrace_gregmap;
386c036b 101}
This page took 2.189076 seconds and 4 git commands to generate.