windows-nat: Don't change current_event.dwThreadId in handle_output_debug_string()
[deliverable/binutils-gdb.git] / gdb / sparc64-tdep.h
CommitLineData
8b39fe56
MK
1/* Target-dependent code for UltraSPARC.
2
32d0add0 3 Copyright (C) 2003-2015 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
MK
19
20#ifndef SPARC64_TDEP_H
386c036b 21#define SPARC64_TDEP_H 1
8b39fe56 22
1e067c66 23struct frame_info;
1a111ce3 24struct gdbarch;
1a111ce3 25struct regcache;
b4fd25c9 26struct sparc_gregmap;
1e067c66 27struct trad_frame_saved_reg;
1a111ce3 28
386c036b 29#include "sparc-tdep.h"
8b39fe56 30
386c036b
MK
31/* The stack pointer is offset from the stack frame by a BIAS of 2047
32 (0x7ff) for 64-bit code. BIAS is likely to be defined on SPARC
33 hosts, so undefine it first. */
34#undef BIAS
35#define BIAS 2047
36
37/* Register offsets for the general-purpose register set. */
38
39/* UltraSPARC doesn't have %psr. */
40#define r_tstate_offset r_psr_offset
41
42/* UltraSPARC doesn't have %wim either. */
43#define r_fprs_offset r_wim_offset
44
45/* Register numbers of various important registers. */
8b39fe56
MK
46
47enum sparc64_regnum
48{
386c036b
MK
49 SPARC64_F32_REGNUM /* %f32 */
50 = SPARC_F0_REGNUM + 32,
51 SPARC64_F62_REGNUM /* %f62 */
52 = SPARC64_F32_REGNUM + 15,
8b39fe56
MK
53 SPARC64_PC_REGNUM, /* %pc */
54 SPARC64_NPC_REGNUM, /* %npc */
55 SPARC64_STATE_REGNUM,
56 SPARC64_FSR_REGNUM, /* %fsr */
57 SPARC64_FPRS_REGNUM, /* %fprs */
58 SPARC64_Y_REGNUM, /* %y */
386c036b 59
8b39fe56
MK
60 /* Pseudo registers. */
61 SPARC64_CWP_REGNUM, /* %cwp */
62 SPARC64_PSTATE_REGNUM, /* %pstate */
63 SPARC64_ASI_REGNUM, /* %asi */
64 SPARC64_CCR_REGNUM, /* %ccr */
65 SPARC64_D0_REGNUM, /* %d0 */
386c036b
MK
66 SPARC64_D10_REGNUM /* %d10 */
67 = SPARC64_D0_REGNUM + 5,
68 SPARC64_D30_REGNUM /* %d30 */
69 = SPARC64_D0_REGNUM + 15,
70 SPARC64_D32_REGNUM /* %d32 */
71 = SPARC64_D0_REGNUM + 16,
72 SPARC64_D62_REGNUM /* %d62 */
73 = SPARC64_D0_REGNUM + 31,
8b39fe56 74 SPARC64_Q0_REGNUM, /* %q0 */
386c036b
MK
75 SPARC64_Q8_REGNUM /* %q8 */
76 = SPARC64_Q0_REGNUM + 2,
77 SPARC64_Q28_REGNUM /* %q28 */
78 = SPARC64_Q0_REGNUM + 7,
79 SPARC64_Q32_REGNUM /* %q32 */
80 = SPARC64_Q0_REGNUM + 8,
81 SPARC64_Q60_REGNUM /* %q60 */
82 = SPARC64_Q0_REGNUM + 15
8b39fe56
MK
83};
84
6df5070e
MK
85/* Processor state bits. */
86#define SPARC64_PSTATE_AG 0x001
87#define SPARC64_PSTATE_IE 0x002
88#define SPARC64_PSTATE_PRIV 0x004
89#define SPARC64_PSTATE_AM 0x008
90#define SPARC64_PSTATE_PEF 0x010
91#define SPARC64_PSTATE_RED 0x020
92#define SPARC64_PSTATE_TLE 0x100
93#define SPARC64_PSTATE_CLE 0x200
94#define SPARC64_PSTATE_PID0 0x400
95#define SPARC64_PSTATE_PID1 0x800
96
386c036b
MK
97extern void sparc64_init_abi (struct gdbarch_info info,
98 struct gdbarch *gdbarch);
99
b4fd25c9 100extern void sparc64_supply_gregset (const struct sparc_gregmap *gregmap,
386c036b
MK
101 struct regcache *regcache,
102 int regnum, const void *gregs);
b4fd25c9 103extern void sparc64_collect_gregset (const struct sparc_gregmap *gregmap,
386c036b
MK
104 const struct regcache *regcache,
105 int regnum, void *gregs);
b4fd25c9 106extern void sparc64_supply_fpregset (const struct sparc_fpregmap *fpregmap,
db75c717 107 struct regcache *regcache,
386c036b 108 int regnum, const void *fpregs);
b4fd25c9 109extern void sparc64_collect_fpregset (const struct sparc_fpregmap *fpregmap,
db75c717 110 const struct regcache *regcache,
386c036b
MK
111 int regnum, void *fpregs);
112
113/* Functions and variables exported from sparc64-sol2-tdep.c. */
114
115/* Register offsets for Solaris 2. */
b4fd25c9
AA
116extern const struct sparc_gregmap sparc64_sol2_gregmap;
117extern const struct sparc_fpregmap sparc64_sol2_fpregmap;
386c036b
MK
118
119extern void sparc64_sol2_init_abi (struct gdbarch_info info,
120 struct gdbarch *gdbarch);
121
122/* Variables exported from sparc64fbsd-tdep.c. */
123
124/* Register offsets for FreeBSD/sparc64. */
b4fd25c9 125extern const struct sparc_gregmap sparc64fbsd_gregmap;
8b39fe56 126
1e067c66 127/* Functions and variables exported from sparc64nbsd-tdep.c. */
8b39fe56 128
386c036b 129/* Register offsets for NetBSD/sparc64. */
b4fd25c9 130extern const struct sparc_gregmap sparc64nbsd_gregmap;
8b39fe56 131
1e067c66
MK
132extern struct trad_frame_saved_reg *
133 sparc64nbsd_sigcontext_saved_regs (CORE_ADDR sigcontext_addr,
134 struct frame_info *next_frame);
135
b4fd25c9 136extern const struct sparc_fpregmap sparc64_bsd_fpregmap;
db75c717 137
8b39fe56 138#endif /* sparc64-tdep.h */
This page took 1.270729 seconds and 4 git commands to generate.