Improve NetBSD support: Allow VMA determination with fewer system calls.
[libsigsegv/ericb.git] / src / fault-linux-ia64.h
blob99bced2d1572ab789fe6e0048d717e2bcefb4033
1 /* Fault handler information. Linux/IA-64 version.
2 Copyright (C) 2002-2003, 2009 Bruno Haible <bruno@clisp.org>
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2, or (at your option)
7 any later version.
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software Foundation,
16 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
18 #include "fault-posix-ucontext.h"
20 /* See glibc/sysdeps/unix/sysv/linux/ia64/sys/ucontext.h.
21 Note that the 'mcontext_t' defined in
22 glibc/sysdeps/unix/sysv/linux/ia64/sys/ucontext.h
23 and the 'struct sigcontext' defined in
24 glibc/sysdeps/unix/sysv/linux/ia64/ia64/bits/sigcontext.h
25 (see also <asm/sigcontext.h>)
26 are actually the same. */
28 /* IA-64 has two stack pointers, one that grows down, called $r12, and one
29 that grows up, called $bsp/$bspstore. */
30 #define SIGSEGV_FAULT_STACKPOINTER ((ucontext_t *) ucp)->uc_mcontext.sc_gr[12]
32 /* It would be better to access $bspstore instead of $bsp but I don't know
33 where to find it in 'struct sigcontext'. Anyway, it doesn't matter
34 because $bsp and $bspstore never differ by more than ca. 1 KB. */
35 #define SIGSEGV_FAULT_BSP_POINTER ((ucontext_t *) ucp)->uc_mcontext.sc_ar_bsp