1*b725ae77Skettenis /* Native support for GNU/Linux x86-64.
2*b725ae77Skettenis 
3*b725ae77Skettenis    Copyright 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
4*b725ae77Skettenis 
5*b725ae77Skettenis    Contributed by Jiri Smid, SuSE Labs.
6*b725ae77Skettenis 
7*b725ae77Skettenis    This file is part of GDB.
8*b725ae77Skettenis 
9*b725ae77Skettenis    This program is free software; you can redistribute it and/or modify
10*b725ae77Skettenis    it under the terms of the GNU General Public License as published by
11*b725ae77Skettenis    the Free Software Foundation; either version 2 of the License, or
12*b725ae77Skettenis    (at your option) any later version.
13*b725ae77Skettenis 
14*b725ae77Skettenis    This program is distributed in the hope that it will be useful,
15*b725ae77Skettenis    but WITHOUT ANY WARRANTY; without even the implied warranty of
16*b725ae77Skettenis    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17*b725ae77Skettenis    GNU General Public License for more details.
18*b725ae77Skettenis 
19*b725ae77Skettenis    You should have received a copy of the GNU General Public License
20*b725ae77Skettenis    along with this program; if not, write to the Free Software
21*b725ae77Skettenis    Foundation, Inc., 59 Temple Place - Suite 330,
22*b725ae77Skettenis    Boston, MA 02111-1307, USA.  */
23*b725ae77Skettenis 
24*b725ae77Skettenis #ifndef NM_LINUX64_H
25*b725ae77Skettenis #define NM_LINUX64_H
26*b725ae77Skettenis 
27*b725ae77Skettenis /* GNU/Linux supports the i386 hardware debugging registers.  */
28*b725ae77Skettenis #define I386_USE_GENERIC_WATCHPOINTS
29*b725ae77Skettenis 
30*b725ae77Skettenis #include "i386/nm-i386.h"
31*b725ae77Skettenis #include "config/nm-linux.h"
32*b725ae77Skettenis 
33*b725ae77Skettenis /* Support for 8-byte wide hardware watchpoints.  */
34*b725ae77Skettenis #define TARGET_HAS_DR_LEN_8 1
35*b725ae77Skettenis 
36*b725ae77Skettenis /* Provide access to the i386 hardware debugging registers.  */
37*b725ae77Skettenis 
38*b725ae77Skettenis extern void amd64_linux_dr_set_control (unsigned long control);
39*b725ae77Skettenis #define I386_DR_LOW_SET_CONTROL(control) \
40*b725ae77Skettenis   amd64_linux_dr_set_control (control)
41*b725ae77Skettenis 
42*b725ae77Skettenis extern void amd64_linux_dr_set_addr (int regnum, CORE_ADDR addr);
43*b725ae77Skettenis #define I386_DR_LOW_SET_ADDR(regnum, addr) \
44*b725ae77Skettenis   amd64_linux_dr_set_addr (regnum, addr)
45*b725ae77Skettenis 
46*b725ae77Skettenis extern void amd64_linux_dr_reset_addr (int regnum);
47*b725ae77Skettenis #define I386_DR_LOW_RESET_ADDR(regnum) \
48*b725ae77Skettenis   amd64_linux_dr_reset_addr (regnum)
49*b725ae77Skettenis 
50*b725ae77Skettenis extern unsigned long amd64_linux_dr_get_status (void);
51*b725ae77Skettenis #define I386_DR_LOW_GET_STATUS() \
52*b725ae77Skettenis   amd64_linux_dr_get_status ()
53*b725ae77Skettenis 
54*b725ae77Skettenis 
55*b725ae77Skettenis /* Override copies of {fetch,store}_inferior_registers in `infptrace.c'.  */
56*b725ae77Skettenis #define FETCH_INFERIOR_REGISTERS
57*b725ae77Skettenis 
58*b725ae77Skettenis /* `linux-nat.c' and `i386-nat.c' have their own versions of
59*b725ae77Skettenis    child_post_startup_inferior.  Define this to use the copy in
60*b725ae77Skettenis    `x86-86-linux-nat.c' instead, which calls both.  */
61*b725ae77Skettenis #define LINUX_CHILD_POST_STARTUP_INFERIOR
62*b725ae77Skettenis 
63*b725ae77Skettenis #endif /* nm-linux64.h */
64