Introduce ref_ptr::new_reference
[deliverable/binutils-gdb.git] / gdb / sparc64-linux-nat.c
CommitLineData
386c036b 1/* Native-dependent code for GNU/Linux UltraSPARC.
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 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
b4fd25c9 33static const struct sparc_gregmap sparc64_linux_ptrace_gregmap =
386c036b
MK
34{
35 16 * 8, /* "tstate" */
36 17 * 8, /* %pc */
37 18 * 8, /* %npc */
38 19 * 8, /* %y */
39 -1, /* %wim */
40 -1, /* %tbr */
41 0 * 8, /* %g1 */
42 -1, /* %l0 */
43 4 /* sizeof (%y) */
44};
45\f
46
75e192e6 47void
7f7fe91e 48supply_gregset (struct regcache *regcache, const prgregset_t *gregs)
75e192e6 49{
b4fd25c9 50 sparc64_supply_gregset (sparc_gregmap, regcache, -1, gregs);
75e192e6
DM
51}
52
53void
7f7fe91e 54supply_fpregset (struct regcache *regcache, const prfpregset_t *fpregs)
75e192e6 55{
b4fd25c9 56 sparc64_supply_fpregset (&sparc64_bsd_fpregmap, regcache, -1, fpregs);
75e192e6
DM
57}
58
59void
7f7fe91e 60fill_gregset (const struct regcache *regcache, prgregset_t *gregs, int regnum)
75e192e6 61{
b4fd25c9 62 sparc64_collect_gregset (sparc_gregmap, regcache, regnum, gregs);
75e192e6
DM
63}
64
65void
7f7fe91e
UW
66fill_fpregset (const struct regcache *regcache,
67 prfpregset_t *fpregs, int regnum)
75e192e6 68{
b4fd25c9 69 sparc64_collect_fpregset (&sparc64_bsd_fpregmap, regcache, regnum, fpregs);
75e192e6
DM
70}
71
386c036b
MK
72void
73_initialize_sparc64_linux_nat (void)
74{
10d6c8cd
DJ
75 struct target_ops *t;
76
77 /* Fill in the generic GNU/Linux methods. */
78 t = linux_target ();
79
b4fd25c9 80 sparc_fpregmap = &sparc64_bsd_fpregmap;
c2853f3d 81
10d6c8cd 82 /* Add our register access methods. */
6f7a27d5
UW
83 t->to_fetch_registers = sparc_fetch_inferior_registers;
84 t->to_store_registers = sparc_store_inferior_registers;
10d6c8cd
DJ
85
86 /* Register the target. */
f973ed9c 87 linux_nat_add_target (t);
10d6c8cd 88
58afddc6
WP
89 /* ADI support */
90 linux_nat_set_forget_process (t, sparc64_forget_process);
91
b4fd25c9 92 sparc_gregmap = &sparc64_linux_ptrace_gregmap;
386c036b 93}
This page took 1.393143 seconds and 4 git commands to generate.