]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/config/i386/nm-linux.h
Copyright updates for 2007.
[thirdparty/binutils-gdb.git] / gdb / config / i386 / nm-linux.h
CommitLineData
92362027
AC
1/* Native support for GNU/Linux x86.
2
6aba47ca
DJ
3 Copyright 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
4 2000, 2001, 2002, 2003, 2005, 2007 Free Software Foundation, Inc.
c906108c 5
c5aa993b 6 This file is part of GDB.
c906108c 7
c5aa993b
JM
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
10 the Free Software Foundation; either version 2 of the License, or
11 (at your option) any later version.
c906108c 12
c5aa993b
JM
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.
c906108c 17
c5aa993b
JM
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software
20 Foundation, Inc., 59 Temple Place - Suite 330,
21 Boston, MA 02111-1307, USA. */
c906108c
SS
22
23#ifndef NM_LINUX_H
24#define NM_LINUX_H
25
84346e11
MK
26/* GNU/Linux supports the i386 hardware debugging registers. */
27#define I386_USE_GENERIC_WATCHPOINTS
28
29#include "i386/nm-i386.h"
4f2e4a4f 30#include "config/nm-linux.h"
c906108c 31
1fe7ac85 32/* Support for the user area. */
c906108c 33
1fe7ac85 34/* Return the size of the user struct. */
a14ed312 35extern int kernel_u_size (void);
84346e11 36#define KERNEL_U_SIZE kernel_u_size()
c906108c 37
1fe7ac85
MK
38/* This is the amount to substract from u.u_ar0 to get the offset in
39 the core file of the register values. */
40#define KERNEL_U_ADDR 0
41
84346e11
MK
42extern CORE_ADDR register_u_addr (CORE_ADDR blockend, int regnum);
43#define REGISTER_U_ADDR(addr, blockend, regnum) \
44 (addr) = register_u_addr (blockend, regnum)
1fe7ac85 45\f
84346e11 46/* Provide access to the i386 hardware debugging registers. */
c906108c 47
7bf0983e 48extern void i386_linux_dr_set_control (unsigned long control);
84346e11
MK
49#define I386_DR_LOW_SET_CONTROL(control) \
50 i386_linux_dr_set_control (control)
c906108c 51
84346e11
MK
52extern void i386_linux_dr_set_addr (int regnum, CORE_ADDR addr);
53#define I386_DR_LOW_SET_ADDR(regnum, addr) \
54 i386_linux_dr_set_addr (regnum, addr)
c906108c 55
84346e11
MK
56extern void i386_linux_dr_reset_addr (int regnum);
57#define I386_DR_LOW_RESET_ADDR(regnum) \
58 i386_linux_dr_reset_addr (regnum)
c906108c 59
7bf0983e 60extern unsigned long i386_linux_dr_get_status (void);
84346e11
MK
61#define I386_DR_LOW_GET_STATUS() \
62 i386_linux_dr_get_status ()
a14bd2ea 63\f
c906108c 64
f60300e7 65/* Override copies of {fetch,store}_inferior_registers in `infptrace.c'. */
d4f3574e
SS
66#define FETCH_INFERIOR_REGISTERS
67
84346e11
MK
68/* Nevertheless, define CANNOT_{FETCH,STORE}_REGISTER, because we
69 might fall back on the code `infptrace.c' (well a copy of that code
70 in `i386-linux-nat.c' for now) and we can access only the
f60300e7 71 general-purpose registers in that way. */
d5d65353
PS
72extern int cannot_fetch_register (int regno);
73extern int cannot_store_register (int regno);
6ef7fa21
DJ
74#define CANNOT_FETCH_REGISTER(regno) cannot_fetch_register (regno)
75#define CANNOT_STORE_REGISTER(regno) cannot_store_register (regno)
f60300e7 76
322d4fe0
MK
77#ifdef HAVE_PTRACE_GETFPXREGS
78/* Include register set support for the SSE registers. */
79#define FILL_FPXREGSET
80#endif
81
a14bd2ea 82#endif /* nm-linux.h */