]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/sparc64-nat.c
Automatic date update in version.in
[thirdparty/binutils-gdb.git] / gdb / sparc64-nat.c
CommitLineData
386c036b
MK
1/* Native-dependent code for GNU/Linux UltraSPARC.
2
b811d2c2 3 Copyright (C) 2003-2020 Free Software Foundation, Inc.
386c036b
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
386c036b
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/>. */
386c036b
MK
19
20#include "defs.h"
21#include "gdbarch.h"
22
23#include "sparc64-tdep.h"
24#include "sparc-nat.h"
25
26/* Determine whether `gregset_t' contains register REGNUM. */
27
28static int
ec22ec34 29sparc64_gregset_supplies_p (struct gdbarch *gdbarch, int regnum)
386c036b 30{
ec22ec34
UW
31 if (gdbarch_ptr_bit (gdbarch) == 32)
32 return sparc32_gregset_supplies_p (gdbarch, regnum);
386c036b
MK
33
34 /* Integer registers. */
35 if ((regnum >= SPARC_G1_REGNUM && regnum <= SPARC_G7_REGNUM)
36 || (regnum >= SPARC_O0_REGNUM && regnum <= SPARC_O7_REGNUM)
37 || (regnum >= SPARC_L0_REGNUM && regnum <= SPARC_L7_REGNUM)
38 || (regnum >= SPARC_I0_REGNUM && regnum <= SPARC_I7_REGNUM))
39 return 1;
40
41 /* Control registers. */
42 if (regnum == SPARC64_PC_REGNUM
43 || regnum == SPARC64_NPC_REGNUM
44 || regnum == SPARC64_STATE_REGNUM
45 || regnum == SPARC64_Y_REGNUM
46 || regnum == SPARC64_FPRS_REGNUM)
47 return 1;
48
49 return 0;
50}
51
52/* Determine whether `fpregset_t' contains register REGNUM. */
53
54static int
ec22ec34 55sparc64_fpregset_supplies_p (struct gdbarch *gdbarch, int regnum)
386c036b 56{
ec22ec34
UW
57 if (gdbarch_ptr_bit (gdbarch) == 32)
58 return sparc32_fpregset_supplies_p (gdbarch, regnum);
386c036b
MK
59
60 /* Floating-point registers. */
61 if ((regnum >= SPARC_F0_REGNUM && regnum <= SPARC_F31_REGNUM)
62 || (regnum >= SPARC64_F32_REGNUM && regnum <= SPARC64_F62_REGNUM))
63 return 1;
64
65 /* Control registers. */
66 if (regnum == SPARC64_FSR_REGNUM)
67 return 1;
68
69 return 0;
70}
386c036b 71
6c265988 72void _initialize_sparc64_nat ();
386c036b 73void
6c265988 74_initialize_sparc64_nat ()
386c036b
MK
75{
76 sparc_supply_gregset = sparc64_supply_gregset;
77 sparc_collect_gregset = sparc64_collect_gregset;
78 sparc_supply_fpregset = sparc64_supply_fpregset;
79 sparc_collect_fpregset = sparc64_collect_fpregset;
80 sparc_gregset_supplies_p = sparc64_gregset_supplies_p;
81 sparc_fpregset_supplies_p = sparc64_fpregset_supplies_p;
82}