]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/sparc64-linux-nat.c
Skip gdb.server/ tests if lack of XML support
[thirdparty/binutils-gdb.git] / gdb / sparc64-linux-nat.c
CommitLineData
386c036b 1/* Native-dependent code for GNU/Linux UltraSPARC.
8b39fe56 2
618f726f 3 Copyright (C) 2003-2016 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
72/* Provide a prototype to silence -Wmissing-prototypes. */
73void _initialize_sparc64_linux_nat (void);
74
75void
76_initialize_sparc64_linux_nat (void)
77{
10d6c8cd
DJ
78 struct target_ops *t;
79
80 /* Fill in the generic GNU/Linux methods. */
81 t = linux_target ();
82
b4fd25c9 83 sparc_fpregmap = &sparc64_bsd_fpregmap;
c2853f3d 84
10d6c8cd 85 /* Add our register access methods. */
6f7a27d5
UW
86 t->to_fetch_registers = sparc_fetch_inferior_registers;
87 t->to_store_registers = sparc_store_inferior_registers;
10d6c8cd
DJ
88
89 /* Register the target. */
f973ed9c 90 linux_nat_add_target (t);
10d6c8cd 91
b4fd25c9 92 sparc_gregmap = &sparc64_linux_ptrace_gregmap;
386c036b 93}