| Index: sandbox/linux/services/android_x86_64_ucontext.h
|
| diff --git a/sandbox/linux/services/android_x86_64_ucontext.h b/sandbox/linux/services/android_x86_64_ucontext.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..ef328e55d6f492511c14f6e5f20086726463a52f
|
| --- /dev/null
|
| +++ b/sandbox/linux/services/android_x86_64_ucontext.h
|
| @@ -0,0 +1,88 @@
|
| +// Copyright 2014 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef SANDBOX_LINUX_SERVICES_ANDROID_X86_64_UCONTEXT_H_
|
| +#define SANDBOX_LINUX_SERVICES_ANDROID_X86_64_UCONTEXT_H_
|
| +
|
| +// We do something compatible with glibc. Hopefully, at some point Android will
|
| +// provide that for us, and __BIONIC_HAVE_UCONTEXT_T should be defined.
|
| +// Spec:
|
| +// http://refspecs.linuxfoundation.org/LSB_4.1.0/LSB-Core-AMD64/LSB-Core-AMD64/libc-ddefs.html#AEN5668
|
| +
|
| +#if !defined(__BIONIC_HAVE_UCONTEXT_T)
|
| +#include <asm/sigcontext.h>
|
| +
|
| +struct _libc_fpxreg {
|
| + unsigned short significand[4];
|
| + unsigned short exponent;
|
| + unsigned short padding[3];
|
| +};
|
| +
|
| +struct _libc_xmmreg {
|
| + uint32_t element[4];
|
| +};
|
| +
|
| +struct _libc_fpstate {
|
| + uint16_t cwd;
|
| + uint16_t swd;
|
| + uint16_t twd;
|
| + uint16_t fop;
|
| + uint64_t rip;
|
| + uint64_t rdp;
|
| + uint32_t mxcsr;
|
| + uint32_t mxcsr_mask;
|
| + struct _libc_fpxreg _st[8];
|
| + struct _libc_xmmreg _xmm[16];
|
| + uint32_t padding[24];
|
| +};
|
| +
|
| +typedef uint64_t greg_t;
|
| +
|
| +typedef struct {
|
| + greg_t gregs[23];
|
| + struct _libc_fpstate* fpregs;
|
| + unsigned long __reserved1[8];
|
| +} mcontext_t;
|
| +
|
| +enum {
|
| + REG_R8 = 0,
|
| + REG_R9,
|
| + REG_R10,
|
| + REG_R11,
|
| + REG_R12,
|
| + REG_R13,
|
| + REG_R14,
|
| + REG_R15,
|
| + REG_RDI,
|
| + REG_RSI,
|
| + REG_RBP,
|
| + REG_RBX,
|
| + REG_RDX,
|
| + REG_RAX,
|
| + REG_RCX,
|
| + REG_RSP,
|
| + REG_RIP,
|
| + REG_EFL,
|
| + REG_CSGSFS,
|
| + REG_ERR,
|
| + REG_TRAPNO,
|
| + REG_OLDMASK,
|
| + REG_CR2,
|
| + NGREG,
|
| +};
|
| +
|
| +typedef struct ucontext {
|
| + unsigned long uc_flags;
|
| + struct ucontext* uc_link;
|
| + stack_t uc_stack;
|
| + mcontext_t uc_mcontext;
|
| + sigset_t uc_sigmask;
|
| + struct _libc_fpstate __fpregs_mem;
|
| +} ucontext_t;
|
| +
|
| +#else
|
| +#include <sys/ucontext.h>
|
| +#endif // __BIONIC_HAVE_UCONTEXT_T
|
| +
|
| +#endif // SANDBOX_LINUX_SERVICES_ANDROID_X86_64_UCONTEXT_H_
|
|
|