user.h revision 3614424e107849c53759ef93b9166e69a76818df
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> 33e888de81df66036903cde08402ab8e93c910e337Elliott Hughes 34e888de81df66036903cde08402ab8e93c910e337Elliott Hughes__BEGIN_DECLS 35e888de81df66036903cde08402ab8e93c910e337Elliott Hughes 36e888de81df66036903cde08402ab8e93c910e337Elliott Hughes#if __i386__ 37e888de81df66036903cde08402ab8e93c910e337Elliott Hughes 38e888de81df66036903cde08402ab8e93c910e337Elliott Hughesstruct user_i387_struct { 39e888de81df66036903cde08402ab8e93c910e337Elliott Hughes long cwd; 40e888de81df66036903cde08402ab8e93c910e337Elliott Hughes long swd; 41e888de81df66036903cde08402ab8e93c910e337Elliott Hughes long twd; 42e888de81df66036903cde08402ab8e93c910e337Elliott Hughes long fip; 43e888de81df66036903cde08402ab8e93c910e337Elliott Hughes long fcs; 44e888de81df66036903cde08402ab8e93c910e337Elliott Hughes long foo; 45e888de81df66036903cde08402ab8e93c910e337Elliott Hughes long fos; 46e888de81df66036903cde08402ab8e93c910e337Elliott Hughes long st_space[20]; 47e888de81df66036903cde08402ab8e93c910e337Elliott Hughes}; 48e888de81df66036903cde08402ab8e93c910e337Elliott Hughesstruct user_fxsr_struct { 49e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned short cwd; 50e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned short swd; 51e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned short twd; 52e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned short fop; 53e888de81df66036903cde08402ab8e93c910e337Elliott Hughes long fip; 54e888de81df66036903cde08402ab8e93c910e337Elliott Hughes long fcs; 55e888de81df66036903cde08402ab8e93c910e337Elliott Hughes long foo; 56e888de81df66036903cde08402ab8e93c910e337Elliott Hughes long fos; 57e888de81df66036903cde08402ab8e93c910e337Elliott Hughes long mxcsr; 58e888de81df66036903cde08402ab8e93c910e337Elliott Hughes long reserved; 59e888de81df66036903cde08402ab8e93c910e337Elliott Hughes long st_space[32]; 60e888de81df66036903cde08402ab8e93c910e337Elliott Hughes long xmm_space[32]; 61e888de81df66036903cde08402ab8e93c910e337Elliott Hughes long padding[56]; 62e888de81df66036903cde08402ab8e93c910e337Elliott Hughes}; 63e888de81df66036903cde08402ab8e93c910e337Elliott Hughesstruct user_regs_struct { 64f8b2b3c81ea4cebf1f9adbb47cc9dfb81a1ed309Elliott Hughes long ebx; 65f8b2b3c81ea4cebf1f9adbb47cc9dfb81a1ed309Elliott Hughes long ecx; 66f8b2b3c81ea4cebf1f9adbb47cc9dfb81a1ed309Elliott Hughes long edx; 67f8b2b3c81ea4cebf1f9adbb47cc9dfb81a1ed309Elliott Hughes long esi; 68f8b2b3c81ea4cebf1f9adbb47cc9dfb81a1ed309Elliott Hughes long edi; 69f8b2b3c81ea4cebf1f9adbb47cc9dfb81a1ed309Elliott Hughes long ebp; 70f8b2b3c81ea4cebf1f9adbb47cc9dfb81a1ed309Elliott Hughes long eax; 71f8b2b3c81ea4cebf1f9adbb47cc9dfb81a1ed309Elliott Hughes long xds; 72f8b2b3c81ea4cebf1f9adbb47cc9dfb81a1ed309Elliott Hughes long xes; 73f8b2b3c81ea4cebf1f9adbb47cc9dfb81a1ed309Elliott Hughes long xfs; 74f8b2b3c81ea4cebf1f9adbb47cc9dfb81a1ed309Elliott Hughes long xgs; 75f8b2b3c81ea4cebf1f9adbb47cc9dfb81a1ed309Elliott Hughes long orig_eax; 76f8b2b3c81ea4cebf1f9adbb47cc9dfb81a1ed309Elliott Hughes long eip; 77f8b2b3c81ea4cebf1f9adbb47cc9dfb81a1ed309Elliott Hughes long xcs; 78f8b2b3c81ea4cebf1f9adbb47cc9dfb81a1ed309Elliott Hughes long eflags; 79f8b2b3c81ea4cebf1f9adbb47cc9dfb81a1ed309Elliott Hughes long esp; 80f8b2b3c81ea4cebf1f9adbb47cc9dfb81a1ed309Elliott Hughes long xss; 81e888de81df66036903cde08402ab8e93c910e337Elliott Hughes}; 82ab797cb4fded31cd30f4cd778f0b850c6801e7dbElliott Hughesstruct user { 83e888de81df66036903cde08402ab8e93c910e337Elliott Hughes struct user_regs_struct regs; 84e888de81df66036903cde08402ab8e93c910e337Elliott Hughes int u_fpvalid; 85e888de81df66036903cde08402ab8e93c910e337Elliott Hughes struct user_i387_struct i387; 86e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned long int u_tsize; 87e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned long int u_dsize; 88e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned long int u_ssize; 89e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned long start_code; 90e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned long start_stack; 91e888de81df66036903cde08402ab8e93c910e337Elliott Hughes long int signal; 92e888de81df66036903cde08402ab8e93c910e337Elliott Hughes int reserved; 93e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned long u_ar0; 94ab797cb4fded31cd30f4cd778f0b850c6801e7dbElliott Hughes struct user_i387_struct* u_fpstate; 95e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned long magic; 96e888de81df66036903cde08402ab8e93c910e337Elliott Hughes char u_comm[32]; 97e888de81df66036903cde08402ab8e93c910e337Elliott Hughes int u_debugreg[8]; 98e888de81df66036903cde08402ab8e93c910e337Elliott Hughes}; 99e888de81df66036903cde08402ab8e93c910e337Elliott Hughes 100e888de81df66036903cde08402ab8e93c910e337Elliott Hughes#elif defined(__x86_64__) 101e888de81df66036903cde08402ab8e93c910e337Elliott Hughes 102e888de81df66036903cde08402ab8e93c910e337Elliott Hughesstruct user_i387_struct { 103e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned short cwd; 104e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned short swd; 105e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned short twd; 106e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned short fop; 107e888de81df66036903cde08402ab8e93c910e337Elliott Hughes __u64 rip; 108e888de81df66036903cde08402ab8e93c910e337Elliott Hughes __u64 rdp; 109e888de81df66036903cde08402ab8e93c910e337Elliott Hughes __u32 mxcsr; 110e888de81df66036903cde08402ab8e93c910e337Elliott Hughes __u32 mxcsr_mask; 111e888de81df66036903cde08402ab8e93c910e337Elliott Hughes __u32 st_space[32]; 112e888de81df66036903cde08402ab8e93c910e337Elliott Hughes __u32 xmm_space[64]; 113e888de81df66036903cde08402ab8e93c910e337Elliott Hughes __u32 padding[24]; 114e888de81df66036903cde08402ab8e93c910e337Elliott Hughes}; 115e888de81df66036903cde08402ab8e93c910e337Elliott Hughesstruct user_regs_struct { 116e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned long r15; 117e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned long r14; 118e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned long r13; 119e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned long r12; 120eddc8ece3de370fc321d7b974f6565db3a91543bElliott Hughes unsigned long rbp; 121eddc8ece3de370fc321d7b974f6565db3a91543bElliott Hughes unsigned long rbx; 122e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned long r11; 123e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned long r10; 124e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned long r9; 125e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned long r8; 126eddc8ece3de370fc321d7b974f6565db3a91543bElliott Hughes unsigned long rax; 127eddc8ece3de370fc321d7b974f6565db3a91543bElliott Hughes unsigned long rcx; 128eddc8ece3de370fc321d7b974f6565db3a91543bElliott Hughes unsigned long rdx; 129eddc8ece3de370fc321d7b974f6565db3a91543bElliott Hughes unsigned long rsi; 130eddc8ece3de370fc321d7b974f6565db3a91543bElliott Hughes unsigned long rdi; 131eddc8ece3de370fc321d7b974f6565db3a91543bElliott Hughes unsigned long orig_rax; 132eddc8ece3de370fc321d7b974f6565db3a91543bElliott Hughes unsigned long rip; 133e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned long cs; 134eddc8ece3de370fc321d7b974f6565db3a91543bElliott Hughes unsigned long eflags; 135eddc8ece3de370fc321d7b974f6565db3a91543bElliott Hughes unsigned long rsp; 136e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned long ss; 137e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned long fs_base; 138e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned long gs_base; 139e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned long ds; 140e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned long es; 141e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned long fs; 142e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned long gs; 143e888de81df66036903cde08402ab8e93c910e337Elliott Hughes}; 144e888de81df66036903cde08402ab8e93c910e337Elliott Hughesstruct user { 145e888de81df66036903cde08402ab8e93c910e337Elliott Hughes struct user_regs_struct regs; 146e888de81df66036903cde08402ab8e93c910e337Elliott Hughes int u_fpvalid; 147e888de81df66036903cde08402ab8e93c910e337Elliott Hughes int pad0; 148e888de81df66036903cde08402ab8e93c910e337Elliott Hughes struct user_i387_struct i387; 149e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned long int u_tsize; 150e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned long int u_dsize; 151e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned long int u_ssize; 152e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned long start_code; 153e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned long start_stack; 154e888de81df66036903cde08402ab8e93c910e337Elliott Hughes long int signal; 155e888de81df66036903cde08402ab8e93c910e337Elliott Hughes int reserved; 156e888de81df66036903cde08402ab8e93c910e337Elliott Hughes int pad1; 157e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned long u_ar0; 158ab797cb4fded31cd30f4cd778f0b850c6801e7dbElliott Hughes struct user_i387_struct* u_fpstate; 159e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned long magic; 160e888de81df66036903cde08402ab8e93c910e337Elliott Hughes char u_comm[32]; 161e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned long u_debugreg[8]; 162e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned long error_code; 163e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned long fault_address; 164e888de81df66036903cde08402ab8e93c910e337Elliott Hughes}; 165e888de81df66036903cde08402ab8e93c910e337Elliott Hughes 166e888de81df66036903cde08402ab8e93c910e337Elliott Hughes#elif defined(__mips__) 167e888de81df66036903cde08402ab8e93c910e337Elliott Hughes 168e888de81df66036903cde08402ab8e93c910e337Elliott Hughesstruct user { 169e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned long regs[180 / sizeof(unsigned long) + 64]; 170e888de81df66036903cde08402ab8e93c910e337Elliott Hughes size_t u_tsize; 171e888de81df66036903cde08402ab8e93c910e337Elliott Hughes size_t u_dsize; 172e888de81df66036903cde08402ab8e93c910e337Elliott Hughes size_t u_ssize; 173e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned long start_code; 174e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned long start_data; 175e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned long start_stack; 176e888de81df66036903cde08402ab8e93c910e337Elliott Hughes long int signal; 177e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned long u_ar0; 178e888de81df66036903cde08402ab8e93c910e337Elliott Hughes unsigned long magic; 179e888de81df66036903cde08402ab8e93c910e337Elliott Hughes char u_comm[32]; 180e888de81df66036903cde08402ab8e93c910e337Elliott Hughes}; 181e888de81df66036903cde08402ab8e93c910e337Elliott Hughes 182363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris#elif defined(__arm__) 183363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris 1843614424e107849c53759ef93b9166e69a76818dfElliott Hughesstruct user_fpregs { 185363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris struct fp_reg { 186363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris unsigned int sign1:1; 187363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris unsigned int unused:15; 188363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris unsigned int sign2:1; 189363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris unsigned int exponent:14; 190363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris unsigned int j:1; 191363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris unsigned int mantissa1:31; 192363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris unsigned int mantissa0:32; 193363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris } fpregs[8]; 194363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris unsigned int fpsr:32; 195363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris unsigned int fpcr:32; 196363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris unsigned char ftype[8]; 197363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris unsigned int init_flag; 198363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris}; 1993614424e107849c53759ef93b9166e69a76818dfElliott Hughesstruct user_regs { 2003614424e107849c53759ef93b9166e69a76818dfElliott Hughes unsigned long uregs[18]; 2013614424e107849c53759ef93b9166e69a76818dfElliott Hughes}; 202ab797cb4fded31cd30f4cd778f0b850c6801e7dbElliott Hughesstruct user_vfp { 203ab797cb4fded31cd30f4cd778f0b850c6801e7dbElliott Hughes unsigned long long fpregs[32]; 204ab797cb4fded31cd30f4cd778f0b850c6801e7dbElliott Hughes unsigned long fpscr; 205ab797cb4fded31cd30f4cd778f0b850c6801e7dbElliott Hughes}; 206ab797cb4fded31cd30f4cd778f0b850c6801e7dbElliott Hughesstruct user_vfp_exc { 207ab797cb4fded31cd30f4cd778f0b850c6801e7dbElliott Hughes unsigned long fpexc; 208ab797cb4fded31cd30f4cd778f0b850c6801e7dbElliott Hughes unsigned long fpinst; 209ab797cb4fded31cd30f4cd778f0b850c6801e7dbElliott Hughes unsigned long fpinst2; 210ab797cb4fded31cd30f4cd778f0b850c6801e7dbElliott Hughes}; 211ab797cb4fded31cd30f4cd778f0b850c6801e7dbElliott Hughesstruct user { 2123614424e107849c53759ef93b9166e69a76818dfElliott Hughes struct user_regs regs; 213363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris int u_fpvalid; 214363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris unsigned long int u_tsize; 215363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris unsigned long int u_dsize; 216363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris unsigned long int u_ssize; 217363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris unsigned long start_code; 218363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris unsigned long start_stack; 219363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris long int signal; 220363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris int reserved; 2213614424e107849c53759ef93b9166e69a76818dfElliott Hughes struct user_regs* u_ar0; 222363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris unsigned long magic; 223363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris char u_comm[32]; 224363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris int u_debugreg[8]; 2253614424e107849c53759ef93b9166e69a76818dfElliott Hughes struct user_fpregs u_fp; 2263614424e107849c53759ef93b9166e69a76818dfElliott Hughes struct user_fpregs* u_fp0; 227363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris}; 228363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris 229363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris#elif defined(__aarch64__) 230363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris 231363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris// There are no user structures for 64 bit arm. 232363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris 233e888de81df66036903cde08402ab8e93c910e337Elliott Hughes#else 234e888de81df66036903cde08402ab8e93c910e337Elliott Hughes 235363390eaffaf991b13c9666bb82af7ab793976f6Christopher Ferris#error "Unsupported architecture." 236e888de81df66036903cde08402ab8e93c910e337Elliott Hughes 237e888de81df66036903cde08402ab8e93c910e337Elliott Hughes#endif 238e888de81df66036903cde08402ab8e93c910e337Elliott Hughes 239e888de81df66036903cde08402ab8e93c910e337Elliott Hughes__END_DECLS 240e888de81df66036903cde08402ab8e93c910e337Elliott Hughes 241e888de81df66036903cde08402ab8e93c910e337Elliott Hughes#endif /* _SYS_USER_H_ */ 242