blob: 9d264e6389e058b79521adddebcfca066260e74a [file] [log] [blame]
Pavel Chupine61d1062014-01-27 17:56:43 +04001/*
2 * Copyright (C) 2014 The Android Open Source Project
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in
12 * the documentation and/or other materials provided with the
13 * distribution.
14 *
15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
16 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
17 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
18 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
19 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
20 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
21 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
22 * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
23 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
25 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26 * SUCH DAMAGE.
27 */
28
29#ifndef _SYS_UCONTEXT_H_
30#define _SYS_UCONTEXT_H_
31
32#include <signal.h>
33#include <sys/user.h>
34
35__BEGIN_DECLS
36
37#if defined(__x86_64__)
38
39enum {
40 REG_R8 = 0,
41 REG_R9,
42 REG_R10,
43 REG_R11,
44 REG_R12,
45 REG_R13,
46 REG_R14,
47 REG_R15,
48 REG_RDI,
49 REG_RSI,
50 REG_RBP,
51 REG_RBX,
52 REG_RDX,
53 REG_RAX,
54 REG_RCX,
55 REG_RSP,
56 REG_RIP,
57 REG_EFL,
58 REG_CSGSFS,
59 REG_ERR,
60 REG_TRAPNO,
61 REG_OLDMASK,
62 REG_CR2,
63 NGREG
64};
65
66typedef long greg_t;
67typedef greg_t gregset_t[NGREG];
68
69typedef struct user_i387_struct* fpregset_t;
70
71typedef struct {
72 gregset_t gregs;
73 fpregset_t fpregs;
74 /* TODO: reserved space? */
75} mcontext_t;
76
77typedef struct ucontext {
78 unsigned long uc_flags;
79 struct ucontext* uc_link;
80 stack_t uc_stack;
81 mcontext_t uc_mcontext;
82 sigset_t uc_sigmask;
83 /* TODO: __fpregs_mem? */
84} ucontext_t;
85
86#endif /* x86_64 */
87
88__END_DECLS
89
90#endif /* _SYS_UCONTEXT_H_ */