Rephrase error message in infcall.c:call_function_by_hand
[deliverable/binutils-gdb.git] / gdb / i386-linux-tdep.h
CommitLineData
0542c381
AC
1/* Target-dependent code for GNU/Linux x86.
2
7b6bb8da 3 Copyright (C) 2002, 2003, 2007, 2008, 2009, 2010, 2011
4c38e0a4 4 Free Software Foundation, Inc.
8201327c
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
8201327c
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/>. */
8201327c
MK
20
21#ifndef I386_LINUX_TDEP_H
22#define I386_LINUX_TDEP_H
23
24/* The Linux kernel pretends there is an additional "orig_eax"
25 register. Since GDB needs access to that register to be able to
26 properly restart system calls when necessary (see
27 i386-linux-tdep.c) we need our own versions of a number of
28 functions that deal with GDB's register cache. */
29
30/* Register number for the "orig_eax" pseudo-register. If this
31 pseudo-register contains a value >= 0 it is interpreted as the
32 system call number that the kernel is supposed to restart. */
c131fcee 33#define I386_LINUX_ORIG_EAX_REGNUM I386_AVX_NUM_REGS
8201327c 34
60fac5b8
MK
35/* Total number of registers for GNU/Linux. */
36#define I386_LINUX_NUM_REGS (I386_LINUX_ORIG_EAX_REGNUM + 1)
37
c131fcee
L
38/* Get XSAVE extended state xcr0 from core dump. */
39extern uint64_t i386_linux_core_read_xcr0
40 (struct gdbarch *gdbarch, struct target_ops *target, bfd *abfd);
41
90884b2b
L
42/* Linux target description. */
43extern struct target_desc *tdesc_i386_linux;
3a13a53b 44extern struct target_desc *tdesc_i386_mmx_linux;
c131fcee
L
45extern struct target_desc *tdesc_i386_avx_linux;
46
47/* Format of XSAVE extended state is:
48 struct
49 {
50 fxsave_bytes[0..463]
51 sw_usable_bytes[464..511]
52 xstate_hdr_bytes[512..575]
53 avx_bytes[576..831]
54 future_state etc
55 };
56
57 Same memory layout will be used for the coredump NT_X86_XSTATE
58 representing the XSAVE extended state registers.
59
60 The first 8 bytes of the sw_usable_bytes[464..467] is the OS enabled
61 extended state mask, which is the same as the extended control register
62 0 (the XFEATURE_ENABLED_MASK register), XCR0. We can use this mask
63 together with the mask saved in the xstate_hdr_bytes to determine what
64 states the processor/OS supports and what state, used or initialized,
65 the process/thread is in. */
66#define I386_LINUX_XSAVE_XCR0_OFFSET 464
90884b2b 67
be0d2954
L
68extern int i386_linux_gregset_reg_offset[];
69
8201327c 70#endif /* i386-linux-tdep.h */
This page took 0.675401 seconds and 4 git commands to generate.