Commit b6032afe authored by Ian Molton's avatar Ian Molton Committed by Linus Torvalds

[PATCH] arm26: better unistd.h (reimplemented based on arm32)

Some long overdue updates to this file. newer macros taken from arm32.
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent aacb872e
/* /*
* linux/include/asm-arm/unistd.h * linux/include/asm-arm/unistd.h
* *
* Copyright (C) 2001 Russell King * Copyright (C) 2001-2003 Russell King
* Modified 25/11/04 Ian Molton for arm26.
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as * it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation. * published by the Free Software Foundation.
* *
* Please forward _all_ changes to this file to rmk@arm.linux.org.uk, * Please forward _all_ changes to this file to spyro@f2s.com
* no matter what the change is. Thanks! * no matter what the change is. Thanks!
*/ */
#ifndef __ASM_ARM_UNISTD_H #ifndef __ASM_ARM_UNISTD_H
...@@ -28,7 +29,7 @@ ...@@ -28,7 +29,7 @@
#define __NR_write (__NR_SYSCALL_BASE+ 4) #define __NR_write (__NR_SYSCALL_BASE+ 4)
#define __NR_open (__NR_SYSCALL_BASE+ 5) #define __NR_open (__NR_SYSCALL_BASE+ 5)
#define __NR_close (__NR_SYSCALL_BASE+ 6) #define __NR_close (__NR_SYSCALL_BASE+ 6)
#define __NR_waitpid (__NR_SYSCALL_BASE+ 7) /* 7 was sys_waitpid */
#define __NR_creat (__NR_SYSCALL_BASE+ 8) #define __NR_creat (__NR_SYSCALL_BASE+ 8)
#define __NR_link (__NR_SYSCALL_BASE+ 9) #define __NR_link (__NR_SYSCALL_BASE+ 9)
#define __NR_unlink (__NR_SYSCALL_BASE+ 10) #define __NR_unlink (__NR_SYSCALL_BASE+ 10)
...@@ -38,8 +39,8 @@ ...@@ -38,8 +39,8 @@
#define __NR_mknod (__NR_SYSCALL_BASE+ 14) #define __NR_mknod (__NR_SYSCALL_BASE+ 14)
#define __NR_chmod (__NR_SYSCALL_BASE+ 15) #define __NR_chmod (__NR_SYSCALL_BASE+ 15)
#define __NR_lchown (__NR_SYSCALL_BASE+ 16) #define __NR_lchown (__NR_SYSCALL_BASE+ 16)
#define __NR_break (__NR_SYSCALL_BASE+ 17) /* 17 was sys_break */
/* 18 was sys_stat */
#define __NR_lseek (__NR_SYSCALL_BASE+ 19) #define __NR_lseek (__NR_SYSCALL_BASE+ 19)
#define __NR_getpid (__NR_SYSCALL_BASE+ 20) #define __NR_getpid (__NR_SYSCALL_BASE+ 20)
#define __NR_mount (__NR_SYSCALL_BASE+ 21) #define __NR_mount (__NR_SYSCALL_BASE+ 21)
...@@ -49,14 +50,14 @@ ...@@ -49,14 +50,14 @@
#define __NR_stime (__NR_SYSCALL_BASE+ 25) #define __NR_stime (__NR_SYSCALL_BASE+ 25)
#define __NR_ptrace (__NR_SYSCALL_BASE+ 26) #define __NR_ptrace (__NR_SYSCALL_BASE+ 26)
#define __NR_alarm (__NR_SYSCALL_BASE+ 27) #define __NR_alarm (__NR_SYSCALL_BASE+ 27)
/* 28 was sys_fstat */
#define __NR_pause (__NR_SYSCALL_BASE+ 29) #define __NR_pause (__NR_SYSCALL_BASE+ 29)
#define __NR_utime (__NR_SYSCALL_BASE+ 30) #define __NR_utime (__NR_SYSCALL_BASE+ 30)
#define __NR_stty (__NR_SYSCALL_BASE+ 31) /* 31 was sys_stty */
#define __NR_gtty (__NR_SYSCALL_BASE+ 32) /* 32 was sys_gtty */
#define __NR_access (__NR_SYSCALL_BASE+ 33) #define __NR_access (__NR_SYSCALL_BASE+ 33)
#define __NR_nice (__NR_SYSCALL_BASE+ 34) #define __NR_nice (__NR_SYSCALL_BASE+ 34)
#define __NR_ftime (__NR_SYSCALL_BASE+ 35) /* 35 was sys_ftime */
#define __NR_sync (__NR_SYSCALL_BASE+ 36) #define __NR_sync (__NR_SYSCALL_BASE+ 36)
#define __NR_kill (__NR_SYSCALL_BASE+ 37) #define __NR_kill (__NR_SYSCALL_BASE+ 37)
#define __NR_rename (__NR_SYSCALL_BASE+ 38) #define __NR_rename (__NR_SYSCALL_BASE+ 38)
...@@ -65,22 +66,22 @@ ...@@ -65,22 +66,22 @@
#define __NR_dup (__NR_SYSCALL_BASE+ 41) #define __NR_dup (__NR_SYSCALL_BASE+ 41)
#define __NR_pipe (__NR_SYSCALL_BASE+ 42) #define __NR_pipe (__NR_SYSCALL_BASE+ 42)
#define __NR_times (__NR_SYSCALL_BASE+ 43) #define __NR_times (__NR_SYSCALL_BASE+ 43)
#define __NR_prof (__NR_SYSCALL_BASE+ 44) /* 44 was sys_prof */
#define __NR_brk (__NR_SYSCALL_BASE+ 45) #define __NR_brk (__NR_SYSCALL_BASE+ 45)
#define __NR_setgid (__NR_SYSCALL_BASE+ 46) #define __NR_setgid (__NR_SYSCALL_BASE+ 46)
#define __NR_getgid (__NR_SYSCALL_BASE+ 47) #define __NR_getgid (__NR_SYSCALL_BASE+ 47)
#define __NR_signal (__NR_SYSCALL_BASE+ 48) /* 48 was sys_signal */
#define __NR_geteuid (__NR_SYSCALL_BASE+ 49) #define __NR_geteuid (__NR_SYSCALL_BASE+ 49)
#define __NR_getegid (__NR_SYSCALL_BASE+ 50) #define __NR_getegid (__NR_SYSCALL_BASE+ 50)
#define __NR_acct (__NR_SYSCALL_BASE+ 51) #define __NR_acct (__NR_SYSCALL_BASE+ 51)
#define __NR_umount2 (__NR_SYSCALL_BASE+ 52) #define __NR_umount2 (__NR_SYSCALL_BASE+ 52)
#define __NR_lock (__NR_SYSCALL_BASE+ 53) /* 53 was sys_lock */
#define __NR_ioctl (__NR_SYSCALL_BASE+ 54) #define __NR_ioctl (__NR_SYSCALL_BASE+ 54)
#define __NR_fcntl (__NR_SYSCALL_BASE+ 55) #define __NR_fcntl (__NR_SYSCALL_BASE+ 55)
#define __NR_mpx (__NR_SYSCALL_BASE+ 56) /* 56 was sys_mpx */
#define __NR_setpgid (__NR_SYSCALL_BASE+ 57) #define __NR_setpgid (__NR_SYSCALL_BASE+ 57)
#define __NR_ulimit (__NR_SYSCALL_BASE+ 58) /* 58 was sys_ulimit */
/* 59 was sys_olduname */
#define __NR_umask (__NR_SYSCALL_BASE+ 60) #define __NR_umask (__NR_SYSCALL_BASE+ 60)
#define __NR_chroot (__NR_SYSCALL_BASE+ 61) #define __NR_chroot (__NR_SYSCALL_BASE+ 61)
#define __NR_ustat (__NR_SYSCALL_BASE+ 62) #define __NR_ustat (__NR_SYSCALL_BASE+ 62)
...@@ -89,8 +90,8 @@ ...@@ -89,8 +90,8 @@
#define __NR_getpgrp (__NR_SYSCALL_BASE+ 65) #define __NR_getpgrp (__NR_SYSCALL_BASE+ 65)
#define __NR_setsid (__NR_SYSCALL_BASE+ 66) #define __NR_setsid (__NR_SYSCALL_BASE+ 66)
#define __NR_sigaction (__NR_SYSCALL_BASE+ 67) #define __NR_sigaction (__NR_SYSCALL_BASE+ 67)
#define __NR_sgetmask (__NR_SYSCALL_BASE+ 68) /* 68 was sys_sgetmask */
#define __NR_ssetmask (__NR_SYSCALL_BASE+ 69) /* 69 was sys_ssetmask */
#define __NR_setreuid (__NR_SYSCALL_BASE+ 70) #define __NR_setreuid (__NR_SYSCALL_BASE+ 70)
#define __NR_setregid (__NR_SYSCALL_BASE+ 71) #define __NR_setregid (__NR_SYSCALL_BASE+ 71)
#define __NR_sigsuspend (__NR_SYSCALL_BASE+ 72) #define __NR_sigsuspend (__NR_SYSCALL_BASE+ 72)
...@@ -105,7 +106,7 @@ ...@@ -105,7 +106,7 @@
#define __NR_setgroups (__NR_SYSCALL_BASE+ 81) #define __NR_setgroups (__NR_SYSCALL_BASE+ 81)
#define __NR_select (__NR_SYSCALL_BASE+ 82) #define __NR_select (__NR_SYSCALL_BASE+ 82)
#define __NR_symlink (__NR_SYSCALL_BASE+ 83) #define __NR_symlink (__NR_SYSCALL_BASE+ 83)
/* 84 was sys_lstat */
#define __NR_readlink (__NR_SYSCALL_BASE+ 85) #define __NR_readlink (__NR_SYSCALL_BASE+ 85)
#define __NR_uselib (__NR_SYSCALL_BASE+ 86) #define __NR_uselib (__NR_SYSCALL_BASE+ 86)
#define __NR_swapon (__NR_SYSCALL_BASE+ 87) #define __NR_swapon (__NR_SYSCALL_BASE+ 87)
...@@ -119,10 +120,10 @@ ...@@ -119,10 +120,10 @@
#define __NR_fchown (__NR_SYSCALL_BASE+ 95) #define __NR_fchown (__NR_SYSCALL_BASE+ 95)
#define __NR_getpriority (__NR_SYSCALL_BASE+ 96) #define __NR_getpriority (__NR_SYSCALL_BASE+ 96)
#define __NR_setpriority (__NR_SYSCALL_BASE+ 97) #define __NR_setpriority (__NR_SYSCALL_BASE+ 97)
#define __NR_profil (__NR_SYSCALL_BASE+ 98) /* 98 was sys_profil */
#define __NR_statfs (__NR_SYSCALL_BASE+ 99) #define __NR_statfs (__NR_SYSCALL_BASE+ 99)
#define __NR_fstatfs (__NR_SYSCALL_BASE+100) #define __NR_fstatfs (__NR_SYSCALL_BASE+100)
#define __NR_ioperm (__NR_SYSCALL_BASE+101) /* 101 was sys_ioperm */
#define __NR_socketcall (__NR_SYSCALL_BASE+102) #define __NR_socketcall (__NR_SYSCALL_BASE+102)
#define __NR_syslog (__NR_SYSCALL_BASE+103) #define __NR_syslog (__NR_SYSCALL_BASE+103)
#define __NR_setitimer (__NR_SYSCALL_BASE+104) #define __NR_setitimer (__NR_SYSCALL_BASE+104)
...@@ -130,10 +131,10 @@ ...@@ -130,10 +131,10 @@
#define __NR_stat (__NR_SYSCALL_BASE+106) #define __NR_stat (__NR_SYSCALL_BASE+106)
#define __NR_lstat (__NR_SYSCALL_BASE+107) #define __NR_lstat (__NR_SYSCALL_BASE+107)
#define __NR_fstat (__NR_SYSCALL_BASE+108) #define __NR_fstat (__NR_SYSCALL_BASE+108)
/* 109 was sys_uname */
/* 110 was sys_iopl */
#define __NR_vhangup (__NR_SYSCALL_BASE+111) #define __NR_vhangup (__NR_SYSCALL_BASE+111)
#define __NR_idle (__NR_SYSCALL_BASE+112) /* 112 was sys_idle */
#define __NR_syscall (__NR_SYSCALL_BASE+113) /* syscall to call a syscall! */ #define __NR_syscall (__NR_SYSCALL_BASE+113) /* syscall to call a syscall! */
#define __NR_wait4 (__NR_SYSCALL_BASE+114) #define __NR_wait4 (__NR_SYSCALL_BASE+114)
#define __NR_swapoff (__NR_SYSCALL_BASE+115) #define __NR_swapoff (__NR_SYSCALL_BASE+115)
...@@ -144,21 +145,21 @@ ...@@ -144,21 +145,21 @@
#define __NR_clone (__NR_SYSCALL_BASE+120) #define __NR_clone (__NR_SYSCALL_BASE+120)
#define __NR_setdomainname (__NR_SYSCALL_BASE+121) #define __NR_setdomainname (__NR_SYSCALL_BASE+121)
#define __NR_uname (__NR_SYSCALL_BASE+122) #define __NR_uname (__NR_SYSCALL_BASE+122)
#define __NR_modify_ldt (__NR_SYSCALL_BASE+123) /* 123 was sys_modify_ldt */
#define __NR_adjtimex (__NR_SYSCALL_BASE+124) #define __NR_adjtimex (__NR_SYSCALL_BASE+124)
#define __NR_mprotect (__NR_SYSCALL_BASE+125) #define __NR_mprotect (__NR_SYSCALL_BASE+125)
#define __NR_sigprocmask (__NR_SYSCALL_BASE+126) #define __NR_sigprocmask (__NR_SYSCALL_BASE+126)
#define __NR_create_module (__NR_SYSCALL_BASE+127) /* 127 was sys_create_module */
#define __NR_init_module (__NR_SYSCALL_BASE+128) #define __NR_init_module (__NR_SYSCALL_BASE+128)
#define __NR_delete_module (__NR_SYSCALL_BASE+129) #define __NR_delete_module (__NR_SYSCALL_BASE+129)
#define __NR_get_kernel_syms (__NR_SYSCALL_BASE+130) /* 130 was sys_get_kernel_syms */
#define __NR_quotactl (__NR_SYSCALL_BASE+131) #define __NR_quotactl (__NR_SYSCALL_BASE+131)
#define __NR_getpgid (__NR_SYSCALL_BASE+132) #define __NR_getpgid (__NR_SYSCALL_BASE+132)
#define __NR_fchdir (__NR_SYSCALL_BASE+133) #define __NR_fchdir (__NR_SYSCALL_BASE+133)
#define __NR_bdflush (__NR_SYSCALL_BASE+134) #define __NR_bdflush (__NR_SYSCALL_BASE+134)
#define __NR_sysfs (__NR_SYSCALL_BASE+135) #define __NR_sysfs (__NR_SYSCALL_BASE+135)
#define __NR_personality (__NR_SYSCALL_BASE+136) #define __NR_personality (__NR_SYSCALL_BASE+136)
#define __NR_afs_syscall (__NR_SYSCALL_BASE+137) /* Syscall for Andrew File System */ /* 137 was sys_afs_syscall */
#define __NR_setfsuid (__NR_SYSCALL_BASE+138) #define __NR_setfsuid (__NR_SYSCALL_BASE+138)
#define __NR_setfsgid (__NR_SYSCALL_BASE+139) #define __NR_setfsgid (__NR_SYSCALL_BASE+139)
#define __NR__llseek (__NR_SYSCALL_BASE+140) #define __NR__llseek (__NR_SYSCALL_BASE+140)
...@@ -187,8 +188,8 @@ ...@@ -187,8 +188,8 @@
#define __NR_mremap (__NR_SYSCALL_BASE+163) #define __NR_mremap (__NR_SYSCALL_BASE+163)
#define __NR_setresuid (__NR_SYSCALL_BASE+164) #define __NR_setresuid (__NR_SYSCALL_BASE+164)
#define __NR_getresuid (__NR_SYSCALL_BASE+165) #define __NR_getresuid (__NR_SYSCALL_BASE+165)
#define __NR_vm86 (__NR_SYSCALL_BASE+166) /* 166 was sys_vm86 */
#define __NR_query_module (__NR_SYSCALL_BASE+167) /* 167 was sys_query_module */
#define __NR_poll (__NR_SYSCALL_BASE+168) #define __NR_poll (__NR_SYSCALL_BASE+168)
#define __NR_nfsservctl (__NR_SYSCALL_BASE+169) #define __NR_nfsservctl (__NR_SYSCALL_BASE+169)
#define __NR_setresgid (__NR_SYSCALL_BASE+170) #define __NR_setresgid (__NR_SYSCALL_BASE+170)
...@@ -244,7 +245,7 @@ ...@@ -244,7 +245,7 @@
#define __NR_madvise (__NR_SYSCALL_BASE+220) #define __NR_madvise (__NR_SYSCALL_BASE+220)
#define __NR_fcntl64 (__NR_SYSCALL_BASE+221) #define __NR_fcntl64 (__NR_SYSCALL_BASE+221)
/* 222 for tux */ /* 222 for tux */
#define __NR_security (__NR_SYSCALL_BASE+223) /* 223 is unused */
#define __NR_gettid (__NR_SYSCALL_BASE+224) #define __NR_gettid (__NR_SYSCALL_BASE+224)
#define __NR_readahead (__NR_SYSCALL_BASE+225) #define __NR_readahead (__NR_SYSCALL_BASE+225)
#define __NR_setxattr (__NR_SYSCALL_BASE+226) #define __NR_setxattr (__NR_SYSCALL_BASE+226)
...@@ -260,21 +261,62 @@ ...@@ -260,21 +261,62 @@
#define __NR_lremovexattr (__NR_SYSCALL_BASE+236) #define __NR_lremovexattr (__NR_SYSCALL_BASE+236)
#define __NR_fremovexattr (__NR_SYSCALL_BASE+237) #define __NR_fremovexattr (__NR_SYSCALL_BASE+237)
#define __NR_tkill (__NR_SYSCALL_BASE+238) #define __NR_tkill (__NR_SYSCALL_BASE+238)
#define __NR_sendfile64 (__NR_SYSCALL_BASE+239)
#define __NR_futex (__NR_SYSCALL_BASE+240)
#define __NR_sched_setaffinity (__NR_SYSCALL_BASE+241)
#define __NR_sched_getaffinity (__NR_SYSCALL_BASE+242)
#define __NR_io_setup (__NR_SYSCALL_BASE+243)
#define __NR_io_destroy (__NR_SYSCALL_BASE+244)
#define __NR_io_getevents (__NR_SYSCALL_BASE+245)
#define __NR_io_submit (__NR_SYSCALL_BASE+246)
#define __NR_io_cancel (__NR_SYSCALL_BASE+247)
#define __NR_exit_group (__NR_SYSCALL_BASE+248)
#define __NR_lookup_dcookie (__NR_SYSCALL_BASE+249)
#define __NR_epoll_create (__NR_SYSCALL_BASE+250)
#define __NR_epoll_ctl (__NR_SYSCALL_BASE+251)
#define __NR_epoll_wait (__NR_SYSCALL_BASE+252)
#define __NR_remap_file_pages (__NR_SYSCALL_BASE+253)
/* 254 for set_thread_area */
/* 255 for get_thread_area */
/* 256 for set_tid_address */
#define __NR_timer_create (__NR_SYSCALL_BASE+257)
#define __NR_timer_settime (__NR_SYSCALL_BASE+258)
#define __NR_timer_gettime (__NR_SYSCALL_BASE+259)
#define __NR_timer_getoverrun (__NR_SYSCALL_BASE+260)
#define __NR_timer_delete (__NR_SYSCALL_BASE+261)
#define __NR_clock_settime (__NR_SYSCALL_BASE+262)
#define __NR_clock_gettime (__NR_SYSCALL_BASE+263)
#define __NR_clock_getres (__NR_SYSCALL_BASE+264)
#define __NR_clock_nanosleep (__NR_SYSCALL_BASE+265)
#define __NR_statfs64 (__NR_SYSCALL_BASE+266)
#define __NR_fstatfs64 (__NR_SYSCALL_BASE+267)
#define __NR_tgkill (__NR_SYSCALL_BASE+268)
#define __NR_utimes (__NR_SYSCALL_BASE+269)
#define __NR_fadvise64_64 (__NR_SYSCALL_BASE+270)
#define __NR_pciconfig_iobase (__NR_SYSCALL_BASE+271)
#define __NR_pciconfig_read (__NR_SYSCALL_BASE+272)
#define __NR_pciconfig_write (__NR_SYSCALL_BASE+273)
#define __NR_mq_open (__NR_SYSCALL_BASE+274)
#define __NR_mq_unlink (__NR_SYSCALL_BASE+275)
#define __NR_mq_timedsend (__NR_SYSCALL_BASE+276)
#define __NR_mq_timedreceive (__NR_SYSCALL_BASE+277)
#define __NR_mq_notify (__NR_SYSCALL_BASE+278)
#define __NR_mq_getsetattr (__NR_SYSCALL_BASE+279)
#define __NR_waitid (__NR_SYSCALL_BASE+280)
/* /*
* The following SWIs are ARM private. * The following SWIs are ARM private. FIXME - make appropriate for arm26
*/ */
#define __ARM_NR_BASE (__NR_SYSCALL_BASE+0x0f0000) #define __ARM_NR_BASE (__NR_SYSCALL_BASE+0x0f0000)
#define __ARM_NR_breakpoint (__ARM_NR_BASE+1) #define __ARM_NR_breakpoint (__ARM_NR_BASE+1)
#define __ARM_NR_cacheflush (__ARM_NR_BASE+2) #define __ARM_NR_cacheflush (__ARM_NR_BASE+2)
#define __ARM_NR_usr26 (__ARM_NR_BASE+3) #define __ARM_NR_usr26 (__ARM_NR_BASE+3)
#define __ARM_NR_usr32 (__ARM_NR_BASE+4)
#define __sys2(x) #x #define __sys2(x) #x
#define __sys1(x) __sys2(x) #define __sys1(x) __sys2(x)
#ifndef __syscall #ifndef __syscall
#define __syscall(name) "swi\t" __sys1(__NR_##name) "\n\t" #define __syscall(name) "swi\t" __sys1(__NR_##name) ""
#endif #endif
#define __syscall_return(type, res) \ #define __syscall_return(type, res) \
...@@ -288,106 +330,128 @@ do { \ ...@@ -288,106 +330,128 @@ do { \
#define _syscall0(type,name) \ #define _syscall0(type,name) \
type name(void) { \ type name(void) { \
register long __res_r0 __asm__("r0"); \
long __res; \ long __res; \
__asm__ __volatile__ ( \ __asm__ __volatile__ ( \
__syscall(name) \ __syscall(name) \
"mov %0,r0" \ : "=r" (__res_r0) \
:"=r" (__res) : : "r0","lr"); \ : \
: "lr"); \
__res = __res_r0; \
__syscall_return(type,__res); \ __syscall_return(type,__res); \
} }
#define _syscall1(type,name,type1,arg1) \ #define _syscall1(type,name,type1,arg1) \
type name(type1 arg1) { \ type name(type1 arg1) { \
register long __r0 __asm__("r0") = (long)arg1; \
register long __res_r0 __asm__("r0"); \
long __res; \ long __res; \
__asm__ __volatile__ ( \ __asm__ __volatile__ ( \
"mov\tr0,%1\n\t" \
__syscall(name) \ __syscall(name) \
"mov %0,r0" \ : "=r" (__res_r0) \
: "=r" (__res) \ : "r" (__r0) \
: "r" ((long)(arg1)) \ : "lr"); \
: "r0","lr"); \ __res = __res_r0; \
__syscall_return(type,__res); \ __syscall_return(type,__res); \
} }
#define _syscall2(type,name,type1,arg1,type2,arg2) \ #define _syscall2(type,name,type1,arg1,type2,arg2) \
type name(type1 arg1,type2 arg2) { \ type name(type1 arg1,type2 arg2) { \
register long __r0 __asm__("r0") = (long)arg1; \
register long __r1 __asm__("r1") = (long)arg2; \
register long __res_r0 __asm__("r0"); \
long __res; \ long __res; \
__asm__ __volatile__ ( \ __asm__ __volatile__ ( \
"mov\tr0,%1\n\t" \
"mov\tr1,%2\n\t" \
__syscall(name) \ __syscall(name) \
"mov\t%0,r0" \ : "=r" (__res_r0) \
: "=r" (__res) \ : "r" (__r0),"r" (__r1) \
: "r" ((long)(arg1)),"r" ((long)(arg2)) \ : "lr"); \
: "r0","r1","lr"); \ __res = __res_r0; \
__syscall_return(type,__res); \ __syscall_return(type,__res); \
} }
#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \ #define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \
type name(type1 arg1,type2 arg2,type3 arg3) { \ type name(type1 arg1,type2 arg2,type3 arg3) { \
register long __r0 __asm__("r0") = (long)arg1; \
register long __r1 __asm__("r1") = (long)arg2; \
register long __r2 __asm__("r2") = (long)arg3; \
register long __res_r0 __asm__("r0"); \
long __res; \ long __res; \
__asm__ __volatile__ ( \ __asm__ __volatile__ ( \
"mov\tr0,%1\n\t" \
"mov\tr1,%2\n\t" \
"mov\tr2,%3\n\t" \
__syscall(name) \ __syscall(name) \
"mov\t%0,r0" \ : "=r" (__res_r0) \
: "=r" (__res) \ : "r" (__r0),"r" (__r1),"r" (__r2) \
: "r" ((long)(arg1)),"r" ((long)(arg2)),"r" ((long)(arg3)) \ : "lr"); \
: "r0","r1","r2","lr"); \ __res = __res_r0; \
__syscall_return(type,__res); \ __syscall_return(type,__res); \
} }
#define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \ #define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4)\
type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) { \ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) { \
long __res; \ register long __r0 __asm__("r0") = (long)arg1; \
__asm__ __volatile__ ( \ register long __r1 __asm__("r1") = (long)arg2; \
"mov\tr0,%1\n\t" \ register long __r2 __asm__("r2") = (long)arg3; \
"mov\tr1,%2\n\t" \ register long __r3 __asm__("r3") = (long)arg4; \
"mov\tr2,%3\n\t" \ register long __res_r0 __asm__("r0"); \
"mov\tr3,%4\n\t" \ long __res; \
__syscall(name) \ __asm__ __volatile__ ( \
"mov\t%0,r0" \ __syscall(name) \
: "=r" (__res) \ : "=r" (__res_r0) \
: "r" ((long)(arg1)),"r" ((long)(arg2)),"r" ((long)(arg3)),"r" ((long)(arg4)) \ : "r" (__r0),"r" (__r1),"r" (__r2),"r" (__r3) \
: "r0","r1","r2","r3","lr"); \ : "lr"); \
__syscall_return(type,__res); \ __res = __res_r0; \
__syscall_return(type,__res); \
} }
#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,type5,arg5) \ #define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,type5,arg5) \
type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) { \ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) { \
long __res; \ register long __r0 __asm__("r0") = (long)arg1; \
__asm__ __volatile__ ( \ register long __r1 __asm__("r1") = (long)arg2; \
"mov\tr0,%1\n\t" \ register long __r2 __asm__("r2") = (long)arg3; \
"mov\tr1,%2\n\t" \ register long __r3 __asm__("r3") = (long)arg4; \
"mov\tr2,%3\n\t" \ register long __r4 __asm__("r4") = (long)arg5; \
"mov\tr3,%4\n\t" \ register long __res_r0 __asm__("r0"); \
"mov\tr4,%5\n\t" \ long __res; \
__syscall(name) \ __asm__ __volatile__ ( \
"mov\t%0,r0" \ __syscall(name) \
: "=r" (__res) \ : "=r" (__res_r0) \
: "r" ((long)(arg1)),"r" ((long)(arg2)),"r" ((long)(arg3)),"r" ((long)(arg4)), \ : "r" (__r0),"r" (__r1),"r" (__r2),"r" (__r3),"r" (__r4) \
"r" ((long)(arg5)) \ : "lr"); \
: "r0","r1","r2","r3","r4","lr"); \ __res = __res_r0; \
__syscall_return(type,__res); \ __syscall_return(type,__res); \
}
#define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,type5,arg5,type6,arg6) \
type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5, type6 arg6) { \
register long __r0 __asm__("r0") = (long)arg1; \
register long __r1 __asm__("r1") = (long)arg2; \
register long __r2 __asm__("r2") = (long)arg3; \
register long __r3 __asm__("r3") = (long)arg4; \
register long __r4 __asm__("r4") = (long)arg5; \
register long __r5 __asm__("r5") = (long)arg6; \
register long __res_r0 __asm__("r0"); \
long __res; \
__asm__ __volatile__ ( \
__syscall(name) \
: "=r" (__res_r0) \
: "r" (__r0),"r" (__r1),"r" (__r2),"r" (__r3), "r" (__r4),"r" (__r5) \
: "lr"); \
__res = __res_r0; \
__syscall_return(type,__res); \
} }
#ifdef __KERNEL__ #ifdef __KERNEL__
#define __ARCH_WANT_IPC_PARSE_VERSION #define __ARCH_WANT_IPC_PARSE_VERSION
#define __ARCH_WANT_OLD_READDIR #define __ARCH_WANT_OLD_READDIR
#define __ARCH_WANT_OLD_STAT
#define __ARCH_WANT_STAT64 #define __ARCH_WANT_STAT64
#define __ARCH_WANT_SYS_ALARM #define __ARCH_WANT_SYS_ALARM
#define __ARCH_WANT_SYS_GETHOSTNAME #define __ARCH_WANT_SYS_GETHOSTNAME
#define __ARCH_WANT_SYS_PAUSE #define __ARCH_WANT_SYS_PAUSE
#define __ARCH_WANT_SYS_SGETMASK
#define __ARCH_WANT_SYS_SIGNAL
#define __ARCH_WANT_SYS_TIME #define __ARCH_WANT_SYS_TIME
#define __ARCH_WANT_SYS_UTIME #define __ARCH_WANT_SYS_UTIME
#define __ARCH_WANT_SYS_WAITPID
#define __ARCH_WANT_SYS_SOCKETCALL #define __ARCH_WANT_SYS_SOCKETCALL
#define __ARCH_WANT_SYS_FADVISE64 #define __ARCH_WANT_SYS_FADVISE64
#define __ARCH_WANT_SYS_GETPGRP #define __ARCH_WANT_SYS_GETPGRP
...@@ -406,76 +470,7 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) { \ ...@@ -406,76 +470,7 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) { \
#include <linux/types.h> #include <linux/types.h>
#include <linux/syscalls.h> #include <linux/syscalls.h>
static inline long idle(void) extern long execve(const char *file, char **argv, char **envp);
{
extern long sys_idle(void);
return sys_idle();
}
static inline long pause(void)
{
return sys_pause();
}
static inline long sync(void)
{
return sys_sync();
}
static inline pid_t setsid(void)
{
return sys_setsid();
}
static inline long write(int fd, const char *buf, off_t count)
{
return sys_write(fd, buf, count);
}
static inline long read(int fd, char *buf, off_t count)
{
return sys_read(fd, buf, count);
}
static inline off_t lseek(int fd, off_t offset, int count)
{
return sys_lseek(fd, offset, count);
}
static inline long dup(int fd)
{
return sys_dup(fd);
}
static inline long open(const char *file, int flag, int mode)
{
return sys_open(file, flag, mode);
}
static inline long close(int fd)
{
return sys_close(fd);
}
static inline long _exit(int exitcode)
{
return sys_exit(exitcode);
}
static inline pid_t waitpid(pid_t pid, int *wait_stat, int options)
{
return sys_wait4((int)pid, wait_stat, options, NULL);
}
static inline long delete_module(const char *name)
{
return sys_delete_module(name, 0);
}
static inline pid_t wait(int * wait_stat)
{
return sys_wait4(-1, wait_stat, 0, NULL);
}
struct pt_regs; struct pt_regs;
asmlinkage int sys_execve(char *filenamei, char **argv, char **envp, asmlinkage int sys_execve(char *filenamei, char **argv, char **envp,
...@@ -492,12 +487,6 @@ asmlinkage long sys_rt_sigaction(int sig, ...@@ -492,12 +487,6 @@ asmlinkage long sys_rt_sigaction(int sig,
struct sigaction __user *oact, struct sigaction __user *oact,
size_t sigsetsize); size_t sigsetsize);
/*
* The following two can't be eliminated yet - they rely on
* specific conditions.
*/
static inline _syscall3(int,execve,const char *,file,char **,argv,char **,envp);
#endif #endif
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment