]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/sparc64-linux-nat.c
Switch the license of all .c files to GPLv3.
[thirdparty/binutils-gdb.git] / gdb / sparc64-linux-nat.c
CommitLineData
386c036b 1/* Native-dependent code for GNU/Linux UltraSPARC.
8b39fe56 2
6aba47ca 3 Copyright (C) 2003, 2005, 2006, 2007 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
MK
32
33static const struct sparc_gregset sparc64_linux_ptrace_gregset =
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{
7f7fe91e 50 sparc64_supply_gregset (sparc_gregset, regcache, -1, gregs);
75e192e6
DM
51}
52
53void
7f7fe91e 54supply_fpregset (struct regcache *regcache, const prfpregset_t *fpregs)
75e192e6 55{
7f7fe91e 56 sparc64_supply_fpregset (regcache, -1, fpregs);
75e192e6
DM
57}
58
59void
7f7fe91e 60fill_gregset (const struct regcache *regcache, prgregset_t *gregs, int regnum)
75e192e6 61{
7f7fe91e 62 sparc64_collect_gregset (sparc_gregset, regcache, regnum, gregs);
75e192e6
DM
63}
64
65void
7f7fe91e
UW
66fill_fpregset (const struct regcache *regcache,
67 prfpregset_t *fpregs, int regnum)
75e192e6 68{
7f7fe91e 69 sparc64_collect_fpregset (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
83 /* Add our register access methods. */
6f7a27d5
UW
84 t->to_fetch_registers = sparc_fetch_inferior_registers;
85 t->to_store_registers = sparc_store_inferior_registers;
10d6c8cd
DJ
86
87 /* Register the target. */
f973ed9c 88 linux_nat_add_target (t);
10d6c8cd 89
386c036b
MK
90 sparc_gregset = &sparc64_linux_ptrace_gregset;
91}