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