gdb: rename displaced_step_closure to displaced_step_copy_insn_closure
[deliverable/binutils-gdb.git] / gdb / amd64-tdep.h
CommitLineData
90f90721 1/* Target-dependent definitions for AMD64.
c4f35dd8 2
b811d2c2 3 Copyright (C) 2001-2020 Free Software Foundation, Inc.
53e95fcf
JS
4 Contributed by Jiri Smid, SuSE Labs.
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
53e95fcf
JS
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/>. */
53e95fcf 20
9c1488cb
MK
21#ifndef AMD64_TDEP_H
22#define AMD64_TDEP_H
53e95fcf 23
da3331ec
AC
24struct gdbarch;
25struct frame_info;
221c12ff 26struct regcache;
da3331ec 27
53e95fcf 28#include "i386-tdep.h"
fdb61c6c 29#include "infrun.h"
53e95fcf 30
402ecd56
MK
31/* Register numbers of various important registers. */
32
90f90721
MK
33enum amd64_regnum
34{
35 AMD64_RAX_REGNUM, /* %rax */
36 AMD64_RBX_REGNUM, /* %rbx */
37 AMD64_RCX_REGNUM, /* %rcx */
38 AMD64_RDX_REGNUM, /* %rdx */
39 AMD64_RSI_REGNUM, /* %rsi */
40 AMD64_RDI_REGNUM, /* %rdi */
41 AMD64_RBP_REGNUM, /* %rbp */
42 AMD64_RSP_REGNUM, /* %rsp */
e0c62198
L
43 AMD64_R8_REGNUM, /* %r8 */
44 AMD64_R9_REGNUM, /* %r9 */
45 AMD64_R10_REGNUM, /* %r10 */
46 AMD64_R11_REGNUM, /* %r11 */
47 AMD64_R12_REGNUM, /* %r12 */
48 AMD64_R13_REGNUM, /* %r13 */
49 AMD64_R14_REGNUM, /* %r14 */
50 AMD64_R15_REGNUM, /* %r15 */
90f90721
MK
51 AMD64_RIP_REGNUM, /* %rip */
52 AMD64_EFLAGS_REGNUM, /* %eflags */
296bc76f
MK
53 AMD64_CS_REGNUM, /* %cs */
54 AMD64_SS_REGNUM, /* %ss */
55 AMD64_DS_REGNUM, /* %ds */
56 AMD64_ES_REGNUM, /* %es */
57 AMD64_FS_REGNUM, /* %fs */
58 AMD64_GS_REGNUM, /* %gs */
90f90721 59 AMD64_ST0_REGNUM = 24, /* %st0 */
7f7930dd 60 AMD64_ST1_REGNUM, /* %st1 */
c6f4c129
JB
61 AMD64_FCTRL_REGNUM = AMD64_ST0_REGNUM + 8,
62 AMD64_FSTAT_REGNUM = AMD64_ST0_REGNUM + 9,
7f7930dd 63 AMD64_FTAG_REGNUM = AMD64_ST0_REGNUM + 10,
90f90721 64 AMD64_XMM0_REGNUM = 40, /* %xmm0 */
c6f4c129 65 AMD64_XMM1_REGNUM, /* %xmm1 */
a055a187
L
66 AMD64_MXCSR_REGNUM = AMD64_XMM0_REGNUM + 16,
67 AMD64_YMM0H_REGNUM, /* %ymm0h */
e43e105e
WT
68 AMD64_YMM15H_REGNUM = AMD64_YMM0H_REGNUM + 15,
69 AMD64_BND0R_REGNUM = AMD64_YMM15H_REGNUM + 1,
70 AMD64_BND3R_REGNUM = AMD64_BND0R_REGNUM + 3,
71 AMD64_BNDCFGU_REGNUM,
01f9f808
MS
72 AMD64_BNDSTATUS_REGNUM,
73 AMD64_XMM16_REGNUM,
74 AMD64_XMM31_REGNUM = AMD64_XMM16_REGNUM + 15,
75 AMD64_YMM16H_REGNUM,
76 AMD64_YMM31H_REGNUM = AMD64_YMM16H_REGNUM + 15,
77 AMD64_K0_REGNUM,
78 AMD64_K7_REGNUM = AMD64_K0_REGNUM + 7,
79 AMD64_ZMM0H_REGNUM,
2735833d 80 AMD64_ZMM31H_REGNUM = AMD64_ZMM0H_REGNUM + 31,
51547df6 81 AMD64_PKRU_REGNUM,
2735833d
WT
82 AMD64_FSBASE_REGNUM,
83 AMD64_GSBASE_REGNUM
90f90721 84};
402ecd56 85
c4f35dd8 86/* Number of general purpose registers. */
90f90721 87#define AMD64_NUM_GREGS 24
c4f35dd8 88
2735833d 89#define AMD64_NUM_REGS (AMD64_GSBASE_REGNUM + 1)
a055a187 90
588de28a 91extern displaced_step_copy_insn_closure_up amd64_displaced_step_copy_insn
35669430
DE
92 (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to,
93 struct regcache *regs);
94extern void amd64_displaced_step_fixup (struct gdbarch *gdbarch,
588de28a 95 struct displaced_step_copy_insn_closure *closure,
35669430
DE
96 CORE_ADDR from, CORE_ADDR to,
97 struct regcache *regs);
98
c55a47e7
PA
99/* Initialize the ABI for amd64. Uses DEFAULT_TDESC as fallback
100 tdesc, if INFO does not specify one. */
101extern void amd64_init_abi (struct gdbarch_info info,
102 struct gdbarch *gdbarch,
a04b5337 103 const target_desc *default_tdesc);
c55a47e7
PA
104
105/* Initialize the ABI for x32. Uses DEFAULT_TDESC as fallback tdesc,
106 if INFO does not specify one. */
fff4548b 107extern void amd64_x32_init_abi (struct gdbarch_info info,
c55a47e7 108 struct gdbarch *gdbarch,
a04b5337 109 const target_desc *default_tdesc);
de52b960
PA
110extern const struct target_desc *amd64_target_description (uint64_t xcr0,
111 bool segments);
53e95fcf 112
41d041d6 113/* Fill register REGNUM in REGCACHE with the appropriate
0485f6ad
MK
114 floating-point or SSE register value from *FXSAVE. If REGNUM is
115 -1, do this for all registers. This function masks off any of the
116 reserved bits in *FXSAVE. */
b64bbf8c 117
90f90721
MK
118extern void amd64_supply_fxsave (struct regcache *regcache, int regnum,
119 const void *fxsave);
baed091b 120
a055a187
L
121/* Similar to amd64_supply_fxsave, but use XSAVE extended state. */
122extern void amd64_supply_xsave (struct regcache *regcache, int regnum,
123 const void *xsave);
124
3c017e40
MK
125/* Fill register REGNUM (if it is a floating-point or SSE register) in
126 *FXSAVE with the value from REGCACHE. If REGNUM is -1, do this for
127 all registers. This function doesn't touch any of the reserved
128 bits in *FXSAVE. */
129
130extern void amd64_collect_fxsave (const struct regcache *regcache, int regnum,
131 void *fxsave);
7a9dd1b2 132/* Similar to amd64_collect_fxsave, but use XSAVE extended state. */
a055a187
L
133extern void amd64_collect_xsave (const struct regcache *regcache,
134 int regnum, void *xsave, int gcore);
b246147c 135\f
8f0435f7
AA
136/* Floating-point register set. */
137extern const struct regset amd64_fpregset;
b246147c 138
6cd6a2ae
L
139/* Variables exported from amd64-linux-tdep.c. */
140extern int amd64_linux_gregset_reg_offset[];
141
03b62bbb 142/* Variables exported from amd64-nbsd-tdep.c. */
cced5e27
MK
143extern int amd64nbsd_r_reg_offset[];
144
03b62bbb 145/* Variables exported from amd64-obsd-tdep.c. */
971218cd
MK
146extern int amd64obsd_r_reg_offset[];
147
03b62bbb 148/* Variables exported from amd64-fbsd-tdep.c. */
10fc94a4
MK
149extern CORE_ADDR amd64fbsd_sigtramp_start_addr;
150extern CORE_ADDR amd64fbsd_sigtramp_end_addr;
b246147c 151extern int amd64fbsd_sc_reg_offset[];
53e95fcf 152
9c1488cb 153#endif /* amd64-tdep.h */
This page took 1.22743 seconds and 4 git commands to generate.