2010-11-19 Jan Kratochvil <jan.kratochvil@redhat.com>
[deliverable/binutils-gdb.git] / gdb / sparc64-nat.c
CommitLineData
386c036b
MK
1/* Native-dependent code for GNU/Linux UltraSPARC.
2
4c38e0a4 3 Copyright (C) 2003, 2007, 2008, 2009, 2010 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}
71\f
72
73/* Provide a prototype to silence -Wmissing-prototypes. */
74void _initialize_sparc64_nat (void);
75
76void
77_initialize_sparc64_nat (void)
78{
79 sparc_supply_gregset = sparc64_supply_gregset;
80 sparc_collect_gregset = sparc64_collect_gregset;
81 sparc_supply_fpregset = sparc64_supply_fpregset;
82 sparc_collect_fpregset = sparc64_collect_fpregset;
83 sparc_gregset_supplies_p = sparc64_gregset_supplies_p;
84 sparc_fpregset_supplies_p = sparc64_fpregset_supplies_p;
85}
This page took 0.640891 seconds and 4 git commands to generate.