user.h revision afab3ffcce1054ec887fb347700819d69a9c8151
1e888de81df66036903cde08402ab8e93c910e337Elliott Hughes/*
2e888de81df66036903cde08402ab8e93c910e337Elliott Hughes * Copyright (C) 2013 The Android Open Source Project
3e888de81df66036903cde08402ab8e93c910e337Elliott Hughes * All rights reserved.
4e888de81df66036903cde08402ab8e93c910e337Elliott Hughes *
5e888de81df66036903cde08402ab8e93c910e337Elliott Hughes * Redistribution and use in source and binary forms, with or without
6e888de81df66036903cde08402ab8e93c910e337Elliott Hughes * modification, are permitted provided that the following conditions
7e888de81df66036903cde08402ab8e93c910e337Elliott Hughes * are met:
8e888de81df66036903cde08402ab8e93c910e337Elliott Hughes *  * Redistributions of source code must retain the above copyright
9e888de81df66036903cde08402ab8e93c910e337Elliott Hughes *    notice, this list of conditions and the following disclaimer.
10e888de81df66036903cde08402ab8e93c910e337Elliott Hughes *  * Redistributions in binary form must reproduce the above copyright
11e888de81df66036903cde08402ab8e93c910e337Elliott Hughes *    notice, this list of conditions and the following disclaimer in
12e888de81df66036903cde08402ab8e93c910e337Elliott Hughes *    the documentation and/or other materials provided with the
13e888de81df66036903cde08402ab8e93c910e337Elliott Hughes *    distribution.
14e888de81df66036903cde08402ab8e93c910e337Elliott Hughes *
15e888de81df66036903cde08402ab8e93c910e337Elliott Hughes * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
16e888de81df66036903cde08402ab8e93c910e337Elliott Hughes * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
17e888de81df66036903cde08402ab8e93c910e337Elliott Hughes * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
18e888de81df66036903cde08402ab8e93c910e337Elliott Hughes * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
19e888de81df66036903cde08402ab8e93c910e337Elliott Hughes * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
20e888de81df66036903cde08402ab8e93c910e337Elliott Hughes * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
21e888de81df66036903cde08402ab8e93c910e337Elliott Hughes * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
22e888de81df66036903cde08402ab8e93c910e337Elliott Hughes * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
23e888de81df66036903cde08402ab8e93c910e337Elliott Hughes * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24e888de81df66036903cde08402ab8e93c910e337Elliott Hughes * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
25e888de81df66036903cde08402ab8e93c910e337Elliott Hughes * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26e888de81df66036903cde08402ab8e93c910e337Elliott Hughes * SUCH DAMAGE.
27e888de81df66036903cde08402ab8e93c910e337Elliott Hughes */
28e888de81df66036903cde08402ab8e93c910e337Elliott Hughes
29e888de81df66036903cde08402ab8e93c910e337Elliott Hughes#ifndef _SYS_USER_H_
30e888de81df66036903cde08402ab8e93c910e337Elliott Hughes#define _SYS_USER_H_
31e888de81df66036903cde08402ab8e93c910e337Elliott Hughes
32e888de81df66036903cde08402ab8e93c910e337Elliott Hughes#include <sys/cdefs.h>
330e44bc3baeb1677e5fbdda87a737b9c508c95132Elliott Hughes#include <limits.h> /* For PAGE_SIZE. */
34aad1a39dfbdbb3cd2f9b1ba7f5c65fe68f179065David 'Digit' Turner#include <stddef.h> /* For size_t. */
35e888de81df66036903cde08402ab8e93c910e337Elliott Hughes
36e888de81df66036903cde08402ab8e93c910e337Elliott Hughes__BEGIN_DECLS
37e888de81df66036903cde08402ab8e93c910e337Elliott Hughes
38afab3ffcce1054ec887fb347700819d69a9c8151Elliott Hughes#define PAGE_SIZE 4096
39afab3ffcce1054ec887fb347700819d69a9c8151Elliott Hughes#define PAGE_MASK (~(PAGE_SIZE - 1))
40afab3ffcce1054ec887fb347700819d69a9c8151Elliott Hughes
41e888de81df66036903cde08402ab8e93c910e337Elliott Hughes#if __i386__
42e888de81df66036903cde08402ab8e93c910e337Elliott Hughes
4393e1907ae1794068c1018750603c9206cb700d1bElliott Hughesstruct user_fpregs_struct {
44e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  long cwd;
45e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  long swd;
46e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  long twd;
47e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  long fip;
48e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  long fcs;
49e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  long foo;
50e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  long fos;
51e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  long st_space[20];
52e888de81df66036903cde08402ab8e93c910e337Elliott Hughes};
53fef58353f4ecd7ef2b48ad7f4d80013dbf786606Elliott Hughesstruct user_fpxregs_struct {
54e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned short cwd;
55e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned short swd;
56e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned short twd;
57e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned short fop;
58e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  long fip;
59e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  long fcs;
60e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  long foo;
61e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  long fos;
62e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  long mxcsr;
63e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  long reserved;
64e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  long st_space[32];
65e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  long xmm_space[32];
66e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  long padding[56];
67e888de81df66036903cde08402ab8e93c910e337Elliott Hughes};
68e888de81df66036903cde08402ab8e93c910e337Elliott Hughesstruct user_regs_struct {
69f8b2b3c81ea4cebf1f9adbb47cc9dfb81a1ed309Elliott Hughes  long ebx;
70f8b2b3c81ea4cebf1f9adbb47cc9dfb81a1ed309Elliott Hughes  long ecx;
71f8b2b3c81ea4cebf1f9adbb47cc9dfb81a1ed309Elliott Hughes  long edx;
72f8b2b3c81ea4cebf1f9adbb47cc9dfb81a1ed309Elliott Hughes  long esi;
73f8b2b3c81ea4cebf1f9adbb47cc9dfb81a1ed309Elliott Hughes  long edi;
74f8b2b3c81ea4cebf1f9adbb47cc9dfb81a1ed309Elliott Hughes  long ebp;
75f8b2b3c81ea4cebf1f9adbb47cc9dfb81a1ed309Elliott Hughes  long eax;
76f8b2b3c81ea4cebf1f9adbb47cc9dfb81a1ed309Elliott Hughes  long xds;
77f8b2b3c81ea4cebf1f9adbb47cc9dfb81a1ed309Elliott Hughes  long xes;
78f8b2b3c81ea4cebf1f9adbb47cc9dfb81a1ed309Elliott Hughes  long xfs;
79f8b2b3c81ea4cebf1f9adbb47cc9dfb81a1ed309Elliott Hughes  long xgs;
80f8b2b3c81ea4cebf1f9adbb47cc9dfb81a1ed309Elliott Hughes  long orig_eax;
81f8b2b3c81ea4cebf1f9adbb47cc9dfb81a1ed309Elliott Hughes  long eip;
82f8b2b3c81ea4cebf1f9adbb47cc9dfb81a1ed309Elliott Hughes  long xcs;
83f8b2b3c81ea4cebf1f9adbb47cc9dfb81a1ed309Elliott Hughes  long eflags;
84f8b2b3c81ea4cebf1f9adbb47cc9dfb81a1ed309Elliott Hughes  long esp;
85f8b2b3c81ea4cebf1f9adbb47cc9dfb81a1ed309Elliott Hughes  long xss;
86e888de81df66036903cde08402ab8e93c910e337Elliott Hughes};
87ab797cb4fded31cd30f4cd778f0b850c6801e7dbElliott Hughesstruct user {
88e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  struct user_regs_struct regs;
89e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  int u_fpvalid;
9093e1907ae1794068c1018750603c9206cb700d1bElliott Hughes  struct user_fpregs_struct i387;
91e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned long int u_tsize;
92e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned long int u_dsize;
93e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned long int u_ssize;
94e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned long start_code;
95e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned long start_stack;
96e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  long int signal;
97e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  int reserved;
98e03950fa0c5567edf70d011b856a027e03b1c0f7Elliott Hughes  struct user_regs_struct* u_ar0;
9993e1907ae1794068c1018750603c9206cb700d1bElliott Hughes  struct user_fpregs_struct* u_fpstate;
100e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned long magic;
101e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  char u_comm[32];
102e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  int u_debugreg[8];
103e888de81df66036903cde08402ab8e93c910e337Elliott Hughes};
104e888de81df66036903cde08402ab8e93c910e337Elliott Hughes
105e888de81df66036903cde08402ab8e93c910e337Elliott Hughes#elif defined(__x86_64__)
106e888de81df66036903cde08402ab8e93c910e337Elliott Hughes
10793e1907ae1794068c1018750603c9206cb700d1bElliott Hughesstruct user_fpregs_struct {
108e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned short cwd;
109e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned short swd;
1100c8a5f82e6e77dfafba7f6054b2d6be0d82c45cbRoss McIlroy  unsigned short ftw;
111e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned short fop;
112e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  __u64 rip;
113e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  __u64 rdp;
114e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  __u32 mxcsr;
115f485547b9267263e1de220a3cc368deaec367191Elliott Hughes  __u32 mxcr_mask;
116e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  __u32 st_space[32];
117e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  __u32 xmm_space[64];
118e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  __u32 padding[24];
119e888de81df66036903cde08402ab8e93c910e337Elliott Hughes};
120e888de81df66036903cde08402ab8e93c910e337Elliott Hughesstruct user_regs_struct {
121e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned long r15;
122e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned long r14;
123e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned long r13;
124e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned long r12;
125eddc8ece3de370fc321d7b974f6565db3a91543bElliott Hughes  unsigned long rbp;
126eddc8ece3de370fc321d7b974f6565db3a91543bElliott Hughes  unsigned long rbx;
127e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned long r11;
128e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned long r10;
129e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned long r9;
130e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned long r8;
131eddc8ece3de370fc321d7b974f6565db3a91543bElliott Hughes  unsigned long rax;
132eddc8ece3de370fc321d7b974f6565db3a91543bElliott Hughes  unsigned long rcx;
133eddc8ece3de370fc321d7b974f6565db3a91543bElliott Hughes  unsigned long rdx;
134eddc8ece3de370fc321d7b974f6565db3a91543bElliott Hughes  unsigned long rsi;
135eddc8ece3de370fc321d7b974f6565db3a91543bElliott Hughes  unsigned long rdi;
136eddc8ece3de370fc321d7b974f6565db3a91543bElliott Hughes  unsigned long orig_rax;
137eddc8ece3de370fc321d7b974f6565db3a91543bElliott Hughes  unsigned long rip;
138e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned long cs;
139eddc8ece3de370fc321d7b974f6565db3a91543bElliott Hughes  unsigned long eflags;
140eddc8ece3de370fc321d7b974f6565db3a91543bElliott Hughes  unsigned long rsp;
141e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned long ss;
142e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned long fs_base;
143e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned long gs_base;
144e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned long ds;
145e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned long es;
146e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned long fs;
147e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned long gs;
148e888de81df66036903cde08402ab8e93c910e337Elliott Hughes};
149e888de81df66036903cde08402ab8e93c910e337Elliott Hughesstruct user {
150e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  struct user_regs_struct regs;
151e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  int u_fpvalid;
152e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  int pad0;
15393e1907ae1794068c1018750603c9206cb700d1bElliott Hughes  struct user_fpregs_struct i387;
154e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned long int u_tsize;
155e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned long int u_dsize;
156e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned long int u_ssize;
157e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned long start_code;
158e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned long start_stack;
159e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  long int signal;
160e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  int reserved;
161e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  int pad1;
162e03950fa0c5567edf70d011b856a027e03b1c0f7Elliott Hughes  struct user_regs_struct* u_ar0;
16393e1907ae1794068c1018750603c9206cb700d1bElliott Hughes  struct user_fpregs_struct* u_fpstate;
164e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned long magic;
165e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  char u_comm[32];
166e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned long u_debugreg[8];
167e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned long error_code;
168e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned long fault_address;
169e888de81df66036903cde08402ab8e93c910e337Elliott Hughes};
170e888de81df66036903cde08402ab8e93c910e337Elliott Hughes
171e888de81df66036903cde08402ab8e93c910e337Elliott Hughes#elif defined(__mips__)
172e888de81df66036903cde08402ab8e93c910e337Elliott Hughes
173e888de81df66036903cde08402ab8e93c910e337Elliott Hughesstruct user {
174e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned long regs[180 / sizeof(unsigned long) + 64];
175e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  size_t u_tsize;
176e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  size_t u_dsize;
177e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  size_t u_ssize;
178e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned long start_code;
179e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned long start_data;
180e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned long start_stack;
181e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  long int signal;
182e03950fa0c5567edf70d011b856a027e03b1c0f7Elliott Hughes  void* u_ar0;
183e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  unsigned long magic;
184e888de81df66036903cde08402ab8e93c910e337Elliott Hughes  char u_comm[32];
185e888de81df66036903cde08402ab8e93c910e337Elliott Hughes};
186e888de81df66036903cde08402ab8e93c910e337Elliott Hughes
187363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris#elif defined(__arm__)
188363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris
1893614424e107849c53759ef93b9166e69a76818dfElliott Hughesstruct user_fpregs {
190363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris  struct fp_reg {
191363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris    unsigned int sign1:1;
192363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris    unsigned int unused:15;
193363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris    unsigned int sign2:1;
194363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris    unsigned int exponent:14;
195363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris    unsigned int j:1;
196363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris    unsigned int mantissa1:31;
197363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris    unsigned int mantissa0:32;
198363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris  } fpregs[8];
199363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris  unsigned int fpsr:32;
200363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris  unsigned int fpcr:32;
201363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris  unsigned char ftype[8];
202363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris  unsigned int init_flag;
203363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris};
2043614424e107849c53759ef93b9166e69a76818dfElliott Hughesstruct user_regs {
2053614424e107849c53759ef93b9166e69a76818dfElliott Hughes  unsigned long uregs[18];
2063614424e107849c53759ef93b9166e69a76818dfElliott Hughes};
207ab797cb4fded31cd30f4cd778f0b850c6801e7dbElliott Hughesstruct user_vfp {
208ab797cb4fded31cd30f4cd778f0b850c6801e7dbElliott Hughes  unsigned long long fpregs[32];
209ab797cb4fded31cd30f4cd778f0b850c6801e7dbElliott Hughes  unsigned long fpscr;
210ab797cb4fded31cd30f4cd778f0b850c6801e7dbElliott Hughes};
211ab797cb4fded31cd30f4cd778f0b850c6801e7dbElliott Hughesstruct user_vfp_exc {
212ab797cb4fded31cd30f4cd778f0b850c6801e7dbElliott Hughes  unsigned long fpexc;
213ab797cb4fded31cd30f4cd778f0b850c6801e7dbElliott Hughes  unsigned long fpinst;
214ab797cb4fded31cd30f4cd778f0b850c6801e7dbElliott Hughes  unsigned long fpinst2;
215ab797cb4fded31cd30f4cd778f0b850c6801e7dbElliott Hughes};
216ab797cb4fded31cd30f4cd778f0b850c6801e7dbElliott Hughesstruct user {
2173614424e107849c53759ef93b9166e69a76818dfElliott Hughes  struct user_regs regs;
218363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris  int u_fpvalid;
219363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris  unsigned long int u_tsize;
220363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris  unsigned long int u_dsize;
221363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris  unsigned long int u_ssize;
222363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris  unsigned long start_code;
223363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris  unsigned long start_stack;
224363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris  long int signal;
225363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris  int reserved;
2263614424e107849c53759ef93b9166e69a76818dfElliott Hughes  struct user_regs* u_ar0;
227363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris  unsigned long magic;
228363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris  char u_comm[32];
229363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris  int u_debugreg[8];
2303614424e107849c53759ef93b9166e69a76818dfElliott Hughes  struct user_fpregs u_fp;
2313614424e107849c53759ef93b9166e69a76818dfElliott Hughes  struct user_fpregs* u_fp0;
232363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris};
233363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris
234363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris#elif defined(__aarch64__)
235363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris
236363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris// There are no user structures for 64 bit arm.
237363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris
238e888de81df66036903cde08402ab8e93c910e337Elliott Hughes#else
239e888de81df66036903cde08402ab8e93c910e337Elliott Hughes
240363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris#error "Unsupported architecture."
241e888de81df66036903cde08402ab8e93c910e337Elliott Hughes
242e888de81df66036903cde08402ab8e93c910e337Elliott Hughes#endif
243e888de81df66036903cde08402ab8e93c910e337Elliott Hughes
244e888de81df66036903cde08402ab8e93c910e337Elliott Hughes__END_DECLS
245e888de81df66036903cde08402ab8e93c910e337Elliott Hughes
246e888de81df66036903cde08402ab8e93c910e337Elliott Hughes#endif  /* _SYS_USER_H_ */
247