]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/amd64-tdep.h
Switch the license of all .c files to GPLv3.
[thirdparty/binutils-gdb.git] / gdb / amd64-tdep.h
CommitLineData
90f90721 1/* Target-dependent definitions for AMD64.
c4f35dd8 2
6aba47ca 3 Copyright (C) 2001, 2003, 2004, 2007 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"
53e95fcf 29
402ecd56
MK
30/* Register numbers of various important registers. */
31
90f90721
MK
32enum amd64_regnum
33{
34 AMD64_RAX_REGNUM, /* %rax */
35 AMD64_RBX_REGNUM, /* %rbx */
36 AMD64_RCX_REGNUM, /* %rcx */
37 AMD64_RDX_REGNUM, /* %rdx */
38 AMD64_RSI_REGNUM, /* %rsi */
39 AMD64_RDI_REGNUM, /* %rdi */
40 AMD64_RBP_REGNUM, /* %rbp */
41 AMD64_RSP_REGNUM, /* %rsp */
42 AMD64_R8_REGNUM = 8, /* %r8 */
43 AMD64_R15_REGNUM = 15, /* %r15 */
44 AMD64_RIP_REGNUM, /* %rip */
45 AMD64_EFLAGS_REGNUM, /* %eflags */
296bc76f
MK
46 AMD64_CS_REGNUM, /* %cs */
47 AMD64_SS_REGNUM, /* %ss */
48 AMD64_DS_REGNUM, /* %ds */
49 AMD64_ES_REGNUM, /* %es */
50 AMD64_FS_REGNUM, /* %fs */
51 AMD64_GS_REGNUM, /* %gs */
90f90721 52 AMD64_ST0_REGNUM = 24, /* %st0 */
c6f4c129
JB
53 AMD64_FCTRL_REGNUM = AMD64_ST0_REGNUM + 8,
54 AMD64_FSTAT_REGNUM = AMD64_ST0_REGNUM + 9,
90f90721 55 AMD64_XMM0_REGNUM = 40, /* %xmm0 */
c6f4c129
JB
56 AMD64_XMM1_REGNUM, /* %xmm1 */
57 AMD64_MXCSR_REGNUM = AMD64_XMM0_REGNUM + 16
90f90721 58};
402ecd56 59
c4f35dd8 60/* Number of general purpose registers. */
90f90721 61#define AMD64_NUM_GREGS 24
c4f35dd8 62
90f90721 63extern void amd64_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch);
53e95fcf 64
8695c747
DJ
65/* Functions from amd64-tdep.c which may be needed on architectures
66 with extra registers. */
67
68extern const char *amd64_register_name (int regnum);
69extern struct type *amd64_register_type (struct gdbarch *gdbarch, int regnum);
70
41d041d6 71/* Fill register REGNUM in REGCACHE with the appropriate
0485f6ad
MK
72 floating-point or SSE register value from *FXSAVE. If REGNUM is
73 -1, do this for all registers. This function masks off any of the
74 reserved bits in *FXSAVE. */
b64bbf8c 75
90f90721
MK
76extern void amd64_supply_fxsave (struct regcache *regcache, int regnum,
77 const void *fxsave);
baed091b 78
3c017e40
MK
79/* Fill register REGNUM (if it is a floating-point or SSE register) in
80 *FXSAVE with the value from REGCACHE. If REGNUM is -1, do this for
81 all registers. This function doesn't touch any of the reserved
82 bits in *FXSAVE. */
83
84extern void amd64_collect_fxsave (const struct regcache *regcache, int regnum,
85 void *fxsave);
b246147c
MK
86\f
87
cced5e27
MK
88/* Variables exported from amd64nbsd-tdep.c. */
89extern int amd64nbsd_r_reg_offset[];
90
971218cd
MK
91/* Variables exported from amd64obsd-tdep.c. */
92extern int amd64obsd_r_reg_offset[];
93
b246147c 94/* Variables exported from amd64fbsd-tdep.c. */
10fc94a4
MK
95extern CORE_ADDR amd64fbsd_sigtramp_start_addr;
96extern CORE_ADDR amd64fbsd_sigtramp_end_addr;
b246147c 97extern int amd64fbsd_sc_reg_offset[];
53e95fcf 98
9c1488cb 99#endif /* amd64-tdep.h */