1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef SANDBOX_LINUX_SYSTEM_HEADERS_ARM_LINUX_UCONTEXT_H_
6 #define SANDBOX_LINUX_SYSTEM_HEADERS_ARM_LINUX_UCONTEXT_H_
8 #if !defined(__BIONIC_HAVE_UCONTEXT_T)
9 #if !defined(__native_client_nonsfi__)
10 #include <asm/sigcontext.h>
12 // In PNaCl toolchain, sigcontext and stack_t is not defined. So here declare
15 unsigned long trap_no
;
16 unsigned long error_code
;
17 unsigned long oldmask
;
28 unsigned long arm_r10
;
34 unsigned long arm_cpsr
;
35 unsigned long fault_address
;
38 typedef struct sigaltstack
{
46 // We also need greg_t for the sandbox, include it in this header as well.
47 typedef unsigned long greg_t
;
49 // typedef unsigned long sigset_t;
50 typedef struct ucontext
{
51 unsigned long uc_flags
;
52 struct ucontext
* uc_link
;
54 struct sigcontext uc_mcontext
;
56 /* Allow for uc_sigmask growth. Glibc uses a 1024-bit sigset_t. */
57 int __not_used
[32 - (sizeof(sigset_t
) / sizeof(int))];
58 /* Last for extensibility. Eight byte aligned because some
59 coprocessors require eight byte alignment. */
60 unsigned long uc_regspace
[128] __attribute__((__aligned__(8)));
64 #include <sys/ucontext.h>
65 #endif // __BIONIC_HAVE_UCONTEXT_T
67 #endif // SANDBOX_LINUX_SYSTEM_HEADERS_ARM_LINUX_UCONTEXT_H_