gdb/
[deliverable/binutils-gdb.git] / gdb / sparc64-tdep.h
CommitLineData
8b39fe56
MK
1/* Target-dependent code for UltraSPARC.
2
4c38e0a4 3 Copyright (C) 2003, 2004, 2006, 2007, 2008, 2009, 2010
0fb0cc75 4 Free Software Foundation, Inc.
8b39fe56
MK
5
6 This file is part of GDB.
7
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
a9762ec7 10 the Free Software Foundation; either version 3 of the License, or
8b39fe56
MK
11 (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
a9762ec7 19 along with this program. If not, see <http://www.gnu.org/licenses/>. */
8b39fe56
MK
20
21#ifndef SPARC64_TDEP_H
386c036b 22#define SPARC64_TDEP_H 1
8b39fe56 23
1e067c66 24struct frame_info;
1a111ce3 25struct gdbarch;
1a111ce3 26struct regcache;
1e067c66
MK
27struct sparc_gregset;
28struct trad_frame_saved_reg;
1a111ce3 29
386c036b 30#include "sparc-tdep.h"
8b39fe56 31
386c036b
MK
32/* The stack pointer is offset from the stack frame by a BIAS of 2047
33 (0x7ff) for 64-bit code. BIAS is likely to be defined on SPARC
34 hosts, so undefine it first. */
35#undef BIAS
36#define BIAS 2047
37
38/* Register offsets for the general-purpose register set. */
39
40/* UltraSPARC doesn't have %psr. */
41#define r_tstate_offset r_psr_offset
42
43/* UltraSPARC doesn't have %wim either. */
44#define r_fprs_offset r_wim_offset
45
46/* Register numbers of various important registers. */
8b39fe56
MK
47
48enum sparc64_regnum
49{
386c036b
MK
50 SPARC64_F32_REGNUM /* %f32 */
51 = SPARC_F0_REGNUM + 32,
52 SPARC64_F62_REGNUM /* %f62 */
53 = SPARC64_F32_REGNUM + 15,
8b39fe56
MK
54 SPARC64_PC_REGNUM, /* %pc */
55 SPARC64_NPC_REGNUM, /* %npc */
56 SPARC64_STATE_REGNUM,
57 SPARC64_FSR_REGNUM, /* %fsr */
58 SPARC64_FPRS_REGNUM, /* %fprs */
59 SPARC64_Y_REGNUM, /* %y */
386c036b 60
8b39fe56
MK
61 /* Pseudo registers. */
62 SPARC64_CWP_REGNUM, /* %cwp */
63 SPARC64_PSTATE_REGNUM, /* %pstate */
64 SPARC64_ASI_REGNUM, /* %asi */
65 SPARC64_CCR_REGNUM, /* %ccr */
66 SPARC64_D0_REGNUM, /* %d0 */
386c036b
MK
67 SPARC64_D10_REGNUM /* %d10 */
68 = SPARC64_D0_REGNUM + 5,
69 SPARC64_D30_REGNUM /* %d30 */
70 = SPARC64_D0_REGNUM + 15,
71 SPARC64_D32_REGNUM /* %d32 */
72 = SPARC64_D0_REGNUM + 16,
73 SPARC64_D62_REGNUM /* %d62 */
74 = SPARC64_D0_REGNUM + 31,
8b39fe56 75 SPARC64_Q0_REGNUM, /* %q0 */
386c036b
MK
76 SPARC64_Q8_REGNUM /* %q8 */
77 = SPARC64_Q0_REGNUM + 2,
78 SPARC64_Q28_REGNUM /* %q28 */
79 = SPARC64_Q0_REGNUM + 7,
80 SPARC64_Q32_REGNUM /* %q32 */
81 = SPARC64_Q0_REGNUM + 8,
82 SPARC64_Q60_REGNUM /* %q60 */
83 = SPARC64_Q0_REGNUM + 15
8b39fe56
MK
84};
85
6df5070e
MK
86/* Processor state bits. */
87#define SPARC64_PSTATE_AG 0x001
88#define SPARC64_PSTATE_IE 0x002
89#define SPARC64_PSTATE_PRIV 0x004
90#define SPARC64_PSTATE_AM 0x008
91#define SPARC64_PSTATE_PEF 0x010
92#define SPARC64_PSTATE_RED 0x020
93#define SPARC64_PSTATE_TLE 0x100
94#define SPARC64_PSTATE_CLE 0x200
95#define SPARC64_PSTATE_PID0 0x400
96#define SPARC64_PSTATE_PID1 0x800
97
386c036b
MK
98extern void sparc64_init_abi (struct gdbarch_info info,
99 struct gdbarch *gdbarch);
100
101extern void sparc64_supply_gregset (const struct sparc_gregset *gregset,
102 struct regcache *regcache,
103 int regnum, const void *gregs);
104extern void sparc64_collect_gregset (const struct sparc_gregset *gregset,
105 const struct regcache *regcache,
106 int regnum, void *gregs);
107extern void sparc64_supply_fpregset (struct regcache *regcache,
108 int regnum, const void *fpregs);
109extern void sparc64_collect_fpregset (const struct regcache *regcache,
110 int regnum, void *fpregs);
111
112/* Functions and variables exported from sparc64-sol2-tdep.c. */
113
114/* Register offsets for Solaris 2. */
115extern const struct sparc_gregset sparc64_sol2_gregset;
116
117extern void sparc64_sol2_init_abi (struct gdbarch_info info,
118 struct gdbarch *gdbarch);
119
120/* Variables exported from sparc64fbsd-tdep.c. */
121
122/* Register offsets for FreeBSD/sparc64. */
123extern const struct sparc_gregset sparc64fbsd_gregset;
8b39fe56 124
1e067c66 125/* Functions and variables exported from sparc64nbsd-tdep.c. */
8b39fe56 126
386c036b
MK
127/* Register offsets for NetBSD/sparc64. */
128extern const struct sparc_gregset sparc64nbsd_gregset;
8b39fe56 129
1e067c66
MK
130extern struct trad_frame_saved_reg *
131 sparc64nbsd_sigcontext_saved_regs (CORE_ADDR sigcontext_addr,
132 struct frame_info *next_frame);
133
8b39fe56 134#endif /* sparc64-tdep.h */
This page took 0.723025 seconds and 4 git commands to generate.