lkml.org 
[lkml]   [2008]   [Jan]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 51/52] [microblaze] fcntl.h sockios.h ucontext.h unistd.h
    Date
    From: Michal Simek <monstr@monstr.eu>


    Signed-off-by: Michal Simek <monstr@monstr.eu>
    ---
    include/asm-microblaze/fcntl.h | 104 +++++++
    include/asm-microblaze/sockios.h | 23 ++
    include/asm-microblaze/ucontext.h | 24 ++
    include/asm-microblaze/unistd.h | 548 +++++++++++++++++++++++++++++++++++++
    4 files changed, 699 insertions(+), 0 deletions(-)
    create mode 100644 include/asm-microblaze/fcntl.h
    create mode 100644 include/asm-microblaze/sockios.h
    create mode 100644 include/asm-microblaze/ucontext.h
    create mode 100644 include/asm-microblaze/unistd.h

    diff --git a/include/asm-microblaze/fcntl.h b/include/asm-microblaze/fcntl.h
    new file mode 100644
    index 0000000..2b1fff2
    --- /dev/null
    +++ b/include/asm-microblaze/fcntl.h
    @@ -0,0 +1,104 @@
    +/*
    + * include/asm-microblaze/fcntl.h
    + *
    + * This file is subject to the terms and conditions of the GNU General Public
    + * License. See the file "COPYING" in the main directory of this archive
    + * for more details.
    + *
    + * Copyright (C) 2006 Atmark Techno, Inc.
    + */
    +
    +#ifndef _MICROBLAZE_FCNTL_H
    +#define _MICROBLAZE_FCNTL_H
    +
    +/* open/fcntl - O_SYNC is only implemented on blocks devices and on files
    + located on an ext2 file system */
    +#define O_ACCMODE 0003
    +#define O_RDONLY 00
    +#define O_WRONLY 01
    +#define O_RDWR 02
    +#define O_CREAT 0100 /* not fcntl */
    +#define O_EXCL 0200 /* not fcntl */
    +#define O_NOCTTY 0400 /* not fcntl */
    +#define O_TRUNC 01000 /* not fcntl */
    +#define O_APPEND 02000
    +#define O_NONBLOCK 04000
    +#define O_NDELAY O_NONBLOCK
    +#define O_SYNC 010000
    +#define FASYNC 020000 /* fcntl, for BSD compatibility */
    +#define O_DIRECTORY 040000 /* must be a directory */
    +#define O_NOFOLLOW 0100000 /* don't follow links */
    +#define O_LARGEFILE 0200000
    +#define O_DIRECT 0400000 /* direct disk access hint */
    +#define O_NOATIME 01000000
    +#define O_CLOEXEC 02000000
    +
    +#define F_DUPFD 0 /* dup */
    +#define F_GETFD 1 /* get close_on_exec */
    +#define F_SETFD 2 /* set/clear close_on_exec */
    +#define F_GETFL 3 /* get file->f_flags */
    +#define F_SETFL 4 /* set file->f_flags */
    +#define F_GETLK 5
    +#define F_SETLK 6
    +#define F_SETLKW 7
    +
    +#define F_SETOWN 8 /* for sockets. */
    +#define F_GETOWN 9 /* for sockets. */
    +#define F_SETSIG 10 /* for sockets. */
    +#define F_GETSIG 11 /* for sockets. */
    +
    +#define F_GETLK64 12 /* using 'struct flock64' */
    +#define F_SETLK64 13
    +#define F_SETLKW64 14
    +
    +/* for F_[GET|SET]FL */
    +#define FD_CLOEXEC 1 /* actually anything with low bit set goes */
    +
    +/* for posix fcntl() and lockf() */
    +#define F_RDLCK 0
    +#define F_WRLCK 1
    +#define F_UNLCK 2
    +
    +/* for old implementation of bsd flock () */
    +#define F_EXLCK 4 /* or 3 */
    +#define F_SHLCK 8 /* or 4 */
    +
    +/* for leases */
    +#define F_INPROGRESS 16
    +
    +/* operations for bsd flock(), also used by the kernel implementation */
    +#define LOCK_SH 1 /* shared lock */
    +#define LOCK_EX 2 /* exclusive lock */
    +#define LOCK_NB 4 /* or'd with one of the above to prevent blocking */
    +#define LOCK_UN 8 /* remove lock */
    +
    +#define LOCK_MAND 32 /* This is a mandatory flock */
    +#define LOCK_READ 64 /* ... Which allows concurrent read operations */
    +#define LOCK_WRITE 128 /* ... Which allows concurrent write operations */
    +#define LOCK_RW 192 /* ... Which allows concurrent read & write ops */
    +
    +#ifdef __KERNEL__
    +#define F_POSIX 1
    +#define F_FLOCK 2
    +#define F_BROKEN 4 /* broken flock() emulation */
    +#endif /* __KERNEL__ */
    +
    +struct flock {
    + short l_type;
    + short l_whence;
    + off_t l_start;
    + off_t l_len;
    + pid_t l_pid;
    +};
    +
    +struct flock64 {
    + short l_type;
    + short l_whence;
    + loff_t l_start;
    + loff_t l_len;
    + pid_t l_pid;
    +};
    +
    +#define F_LINUX_SPECIFIC_BASE 1024
    +
    +#endif /* _MICROBLAZE_FCNTL_H */
    diff --git a/include/asm-microblaze/sockios.h b/include/asm-microblaze/sockios.h
    new file mode 100644
    index 0000000..079e166
    --- /dev/null
    +++ b/include/asm-microblaze/sockios.h
    @@ -0,0 +1,23 @@
    +/*
    + * include/asm-microblaze/sockios.h
    + *
    + * This file is subject to the terms and conditions of the GNU General Public
    + * License. See the file "COPYING" in the main directory of this archive
    + * for more details.
    + *
    + * Copyright (C) 2006 Atmark Techno, Inc.
    + */
    +
    +#ifndef _ASM_SOCKIOS_H
    +#define _ASM_SOCKIOS_H
    +
    +#include <asm/ioctl.h>
    +
    +#define FIOSETOWN 0x8901
    +#define SIOCSPGRP 0x8902
    +#define FIOGETOWN 0x8903
    +#define SIOCGPGRP 0x8904
    +#define SIOCATMARK 0x8905
    +#define SIOCGSTAMP 0x8906 /* Get stamp */
    +
    +#endif /* _ASM_SOCKIOS_H */
    diff --git a/include/asm-microblaze/ucontext.h b/include/asm-microblaze/ucontext.h
    new file mode 100644
    index 0000000..da464cf
    --- /dev/null
    +++ b/include/asm-microblaze/ucontext.h
    @@ -0,0 +1,24 @@
    +/*
    + * include/asm-microblaze/ucontext.h
    + *
    + * This file is subject to the terms and conditions of the GNU General Public
    + * License. See the file "COPYING" in the main directory of this archive
    + * for more details.
    + *
    + * Copyright (C) 2006 Atmark Techno, Inc.
    + */
    +
    +#ifndef _ASM_UCONTEXT_H
    +#define _ASM_UCONTEXT_H
    +
    +#include <asm/sigcontext.h>
    +
    +struct ucontext {
    + unsigned long uc_flags;
    + struct ucontext *uc_link;
    + stack_t uc_stack;
    + struct sigcontext uc_mcontext;
    + sigset_t uc_sigmask; /* mask last for extensibility */
    +};
    +
    +#endif /* _ASM_UCONTEXT_H */
    diff --git a/include/asm-microblaze/unistd.h b/include/asm-microblaze/unistd.h
    new file mode 100644
    index 0000000..abaa2b7
    --- /dev/null
    +++ b/include/asm-microblaze/unistd.h
    @@ -0,0 +1,548 @@
    +/*
    + * include/asm-microblaze/unistd.h
    + *
    + * This file is subject to the terms and conditions of the GNU General Public
    + * License. See the file "COPYING" in the main directory of this archive
    + * for more details.
    + *
    + * Copyright (C) 2007 Michal Simek <monstr@monstr.eu>
    + * Copyright (C) 2006 Atmark Techno, Inc.
    + */
    +
    +#ifndef _ASM_UNISTD_H
    +#define _ASM_UNISTD_H
    +
    +#define __NR_restart_syscall 0
    +#define __NR_exit 1
    +#define __NR_fork 2
    +#define __NR_read 3
    +#define __NR_write 4
    +#define __NR_open 5
    +#define __NR_close 6
    +#define __NR_waitpid 7
    +#define __NR_creat 8
    +#define __NR_link 9
    +#define __NR_unlink 10
    +#define __NR_execve 11
    +#define __NR_chdir 12
    +#define __NR_time 13
    +#define __NR_mknod 14
    +#define __NR_chmod 15
    +#define __NR_lchown 16
    +#define __NR_break 17
    +#define __NR_oldstat 18
    +#define __NR_lseek 19
    +#define __NR_getpid 20
    +#define __NR_mount 21
    +#define __NR_umount 22
    +#define __NR_setuid 23
    +#define __NR_getuid 24
    +#define __NR_stime 25
    +#define __NR_ptrace 26
    +#define __NR_alarm 27
    +#define __NR_oldfstat 28
    +#define __NR_pause 29
    +#define __NR_utime 30
    +#define __NR_stty 31
    +#define __NR_gtty 32
    +#define __NR_access 33
    +#define __NR_nice 34
    +#define __NR_ftime 35
    +#define __NR_sync 36
    +#define __NR_kill 37
    +#define __NR_rename 38
    +#define __NR_mkdir 39
    +#define __NR_rmdir 40
    +#define __NR_dup 41
    +#define __NR_pipe 42
    +#define __NR_times 43
    +#define __NR_prof 44
    +#define __NR_brk 45
    +#define __NR_setgid 46
    +#define __NR_getgid 47
    +#define __NR_signal 48
    +#define __NR_geteuid 49
    +#define __NR_getegid 50
    +#define __NR_acct 51
    +#define __NR_umount2 52
    +#define __NR_lock 53
    +#define __NR_ioctl 54
    +#define __NR_fcntl 55
    +#define __NR_mpx 56
    +#define __NR_setpgid 57
    +#define __NR_ulimit 58
    +#define __NR_oldolduname 59
    +#define __NR_umask 60
    +#define __NR_chroot 61
    +#define __NR_ustat 62
    +#define __NR_dup2 63
    +#define __NR_getppid 64
    +#define __NR_getpgrp 65
    +#define __NR_setsid 66
    +#define __NR_sigaction 67
    +#define __NR_sgetmask 68
    +#define __NR_ssetmask 69
    +#define __NR_setreuid 70
    +#define __NR_setregid 71
    +#define __NR_sigsuspend 72
    +#define __NR_sigpending 73
    +#define __NR_sethostname 74
    +#define __NR_setrlimit 75
    +#define __NR_getrlimit 76 /* Back compatible 2Gig limited rlimit */
    +#define __NR_getrusage 77
    +#define __NR_gettimeofday 78
    +#define __NR_settimeofday 79
    +#define __NR_getgroups 80
    +#define __NR_setgroups 81
    +#define __NR_select 82
    +#define __NR_symlink 83
    +#define __NR_oldlstat 84
    +#define __NR_readlink 85
    +#define __NR_uselib 86
    +#define __NR_swapon 87
    +#define __NR_reboot 88
    +#define __NR_readdir 89
    +#define __NR_mmap 90
    +#define __NR_munmap 91
    +#define __NR_truncate 92
    +#define __NR_ftruncate 93
    +#define __NR_fchmod 94
    +#define __NR_fchown 95
    +#define __NR_getpriority 96
    +#define __NR_setpriority 97
    +#define __NR_profil 98
    +#define __NR_statfs 99
    +#define __NR_fstatfs 100
    +#define __NR_ioperm 101
    +#define __NR_socketcall 102
    +#define __NR_syslog 103
    +#define __NR_setitimer 104
    +#define __NR_getitimer 105
    +#define __NR_stat 106
    +#define __NR_lstat 107
    +#define __NR_fstat 108
    +#define __NR_olduname 109
    +#define __NR_iopl 110
    +#define __NR_vhangup 111
    +#define __NR_idle 112
    +#define __NR_vm86old 113
    +#define __NR_wait4 114
    +#define __NR_swapoff 115
    +#define __NR_sysinfo 116
    +#define __NR_ipc 117
    +#define __NR_fsync 118
    +#define __NR_sigreturn 119
    +#define __NR_clone 120
    +#define __NR_setdomainname 121
    +#define __NR_uname 122
    +#define __NR_modify_ldt 123
    +#define __NR_adjtimex 124
    +#define __NR_mprotect 125
    +#define __NR_sigprocmask 126
    +#define __NR_create_module 127
    +#define __NR_init_module 128
    +#define __NR_delete_module 129
    +#define __NR_get_kernel_syms 130
    +#define __NR_quotactl 131
    +#define __NR_getpgid 132
    +#define __NR_fchdir 133
    +#define __NR_bdflush 134
    +#define __NR_sysfs 135
    +#define __NR_personality 136
    +#define __NR_afs_syscall 137 /* Syscall for Andrew File System */
    +#define __NR_setfsuid 138
    +#define __NR_setfsgid 139
    +#define __NR__llseek 140
    +#define __NR_getdents 141
    +#define __NR__newselect 142
    +#define __NR_flock 143
    +#define __NR_msync 144
    +#define __NR_readv 145
    +#define __NR_writev 146
    +#define __NR_getsid 147
    +#define __NR_fdatasync 148
    +#define __NR__sysctl 149
    +#define __NR_mlock 150
    +#define __NR_munlock 151
    +#define __NR_mlockall 152
    +#define __NR_munlockall 153
    +#define __NR_sched_setparam 154
    +#define __NR_sched_getparam 155
    +#define __NR_sched_setscheduler 156
    +#define __NR_sched_getscheduler 157
    +#define __NR_sched_yield 158
    +#define __NR_sched_get_priority_max 159
    +#define __NR_sched_get_priority_min 160
    +#define __NR_sched_rr_get_interval 161
    +#define __NR_nanosleep 162
    +#define __NR_mremap 163
    +#define __NR_setresuid 164
    +#define __NR_getresuid 165
    +#define __NR_vm86 166
    +#define __NR_query_module 167
    +#define __NR_poll 168
    +#define __NR_nfsservctl 169
    +#define __NR_setresgid 170
    +#define __NR_getresgid 171
    +#define __NR_prctl 172
    +#define __NR_rt_sigreturn 173
    +#define __NR_rt_sigaction 174
    +#define __NR_rt_sigprocmask 175
    +#define __NR_rt_sigpending 176
    +#define __NR_rt_sigtimedwait 177
    +#define __NR_rt_sigqueueinfo 178
    +#define __NR_rt_sigsuspend 179
    +#define __NR_pread64 180
    +#define __NR_pwrite64 181
    +#define __NR_chown 182
    +#define __NR_getcwd 183
    +#define __NR_capget 184
    +#define __NR_capset 185
    +#define __NR_sigaltstack 186
    +#define __NR_sendfile 187
    +#define __NR_getpmsg 188 /* some people actually want streams */
    +#define __NR_putpmsg 189 /* some people actually want streams */
    +#define __NR_vfork 190
    +#define __NR_ugetrlimit 191 /* SuS compliant getrlimit */
    +#define __NR_mmap2 192
    +#define __NR_truncate64 193
    +#define __NR_ftruncate64 194
    +#define __NR_stat64 195
    +#define __NR_lstat64 196
    +#define __NR_fstat64 197
    +#define __NR_lchown32 198
    +#define __NR_getuid32 199
    +#define __NR_getgid32 200
    +#define __NR_geteuid32 201
    +#define __NR_getegid32 202
    +#define __NR_setreuid32 203
    +#define __NR_setregid32 204
    +#define __NR_getgroups32 205
    +#define __NR_setgroups32 206
    +#define __NR_fchown32 207
    +#define __NR_setresuid32 208
    +#define __NR_getresuid32 209
    +#define __NR_setresgid32 210
    +#define __NR_getresgid32 211
    +#define __NR_chown32 212
    +#define __NR_setuid32 213
    +#define __NR_setgid32 214
    +#define __NR_setfsuid32 215
    +#define __NR_setfsgid32 216
    +#define __NR_pivot_root 217
    +#define __NR_mincore 218
    +#define __NR_madvise 219
    +#define __NR_madvise1 219 /* delete when C lib stub is removed */
    +#define __NR_getdents64 220
    +#define __NR_fcntl64 221
    +/* 223 is unused */
    +#define __NR_gettid 224
    +#define __NR_readahead 225
    +#define __NR_setxattr 226
    +#define __NR_lsetxattr 227
    +#define __NR_fsetxattr 228
    +#define __NR_getxattr 229
    +#define __NR_lgetxattr 230
    +#define __NR_fgetxattr 231
    +#define __NR_listxattr 232
    +#define __NR_llistxattr 233
    +#define __NR_flistxattr 234
    +#define __NR_removexattr 235
    +#define __NR_lremovexattr 236
    +#define __NR_fremovexattr 237
    +#define __NR_tkill 238
    +#define __NR_sendfile64 239
    +#define __NR_futex 240
    +#define __NR_sched_setaffinity 241
    +#define __NR_sched_getaffinity 242
    +#define __NR_set_thread_area 243
    +#define __NR_get_thread_area 244
    +#define __NR_io_setup 245
    +#define __NR_io_destroy 246
    +#define __NR_io_getevents 247
    +#define __NR_io_submit 248
    +#define __NR_io_cancel 249
    +#define __NR_fadvise64 250
    +/* 251 is available for reuse (was briefly sys_set_zone_reclaim) */
    +#define __NR_exit_group 252
    +#define __NR_lookup_dcookie 253
    +#define __NR_epoll_create 254
    +#define __NR_epoll_ctl 255
    +#define __NR_epoll_wait 256
    +#define __NR_remap_file_pages 257
    +#define __NR_set_tid_address 258
    +#define __NR_timer_create 259
    +#define __NR_timer_settime (__NR_timer_create+1)
    +#define __NR_timer_gettime (__NR_timer_create+2)
    +#define __NR_timer_getoverrun (__NR_timer_create+3)
    +#define __NR_timer_delete (__NR_timer_create+4)
    +#define __NR_clock_settime (__NR_timer_create+5)
    +#define __NR_clock_gettime (__NR_timer_create+6)
    +#define __NR_clock_getres (__NR_timer_create+7)
    +#define __NR_clock_nanosleep (__NR_timer_create+8)
    +#define __NR_statfs64 268
    +#define __NR_fstatfs64 269
    +#define __NR_tgkill 270
    +#define __NR_utimes 271
    +#define __NR_fadvise64_64 272
    +#define __NR_vserver 273
    +#define __NR_mbind 274
    +#define __NR_get_mempolicy 275
    +#define __NR_set_mempolicy 276
    +#define __NR_mq_open 277
    +#define __NR_mq_unlink (__NR_mq_open+1)
    +#define __NR_mq_timedsend (__NR_mq_open+2)
    +#define __NR_mq_timedreceive (__NR_mq_open+3)
    +#define __NR_mq_notify (__NR_mq_open+4)
    +#define __NR_mq_getsetattr (__NR_mq_open+5)
    +#define __NR_kexec_load 283
    +#define __NR_waitid 284
    +/* #define __NR_sys_setaltroot 285 */
    +#define __NR_add_key 286
    +#define __NR_request_key 287
    +#define __NR_keyctl 288
    +#define __NR_ioprio_set 289
    +#define __NR_ioprio_get 290
    +#define __NR_inotify_init 291
    +#define __NR_inotify_add_watch 292
    +#define __NR_inotify_rm_watch 293
    +#define __NR_migrate_pages 294
    +#define __NR_openat 295
    +#define __NR_mkdirat 296
    +#define __NR_mknodat 297
    +#define __NR_fchownat 298
    +#define __NR_futimesat 299
    +#define __NR_fstatat64 300
    +#define __NR_unlinkat 301
    +#define __NR_renameat 302
    +#define __NR_linkat 303
    +#define __NR_symlinkat 304
    +#define __NR_readlinkat 305
    +#define __NR_fchmodat 306
    +#define __NR_faccessat 307
    +#define __NR_pselect6 308
    +#define __NR_ppoll 309
    +#define __NR_unshare 310
    +#define __NR_set_robust_list 311
    +#define __NR_get_robust_list 312
    +#define __NR_splice 313
    +#define __NR_sync_file_range 314
    +#define __NR_tee 315
    +#define __NR_vmsplice 316
    +#define __NR_move_pages 317
    +#define __NR_getcpu 318
    +#define __NR_epoll_pwait 319
    +#define __NR_utimensat 320
    +#define __NR_signalfd 321
    +#define __NR_timerfd 322
    +#define __NR_eventfd 323
    +#define __NR_fallocate 324
    +
    +#define NR_syscalls 324
    +
    +/*
    + * user-visible error numbers are in the range -1 - -128: see
    + * <asm-generic/errno.h>
    + *
    + * both i386 and microblaze use generic version * of errno.h. the
    + * generic version of errno.h has more than 128 of * numbers. not
    + * sure what the comment means.
    + *
    + * following code is taken from mb 2.4
    + */
    +#define __syscall_return(type, res) \
    +do { \
    + /* user-visible error numbers are in the range -1 - -124: \
    + see <asm-microblaze/errno.h> */ \
    + if ((unsigned long)(res) >= (unsigned long)(-125)) { \
    + errno = -(res); \
    + res = -1; \
    + } \
    + return (type) (res); \
    +} while (0)
    +
    +#define _syscall0(type, name) \
    +type name(void) \
    +{ \
    + long __ret; \
    + asm volatile ("addik r12, r0, %1 \n\t" \
    + "brki r14, 0x8 \n\t" \
    + "addk %0, r3, r0 \n\t" \
    + : "=r" (__ret) \
    + : "i" (__NR_##name) \
    + : "r3", "r4", "r5", "r6", "r7", "r8", "r9", \
    + "r10", "r12", "r14", "cc"); \
    + __syscall_return(type, __ret); \
    +}
    +
    +#define _syscall1(type, name, type1, arg1) \
    +type name(type1 arg1) \
    +{ \
    + long __ret; \
    + asm volatile ("addk r5, r0, %2 \n\t" \
    + "addik r12, r0, %1 \n\t" \
    + "brki r14, 0x8 \n\t" \
    + "addk %0, r3, r0 \n\t" \
    + : "=r" (__ret) \
    + : "i" (__NR_##name), \
    + "r" ((long)arg1) \
    + : "r3", "r4", "r5", "r6", "r7", "r8", "r9", \
    + "r10", "r12", "r14", "cc"); \
    + __syscall_return(type, __ret); \
    +}
    +
    +#define _syscall2(type, name, type1, arg1, type2, arg2) \
    +type name(type1 arg1, type2 arg2) \
    +{ \
    + long __ret; \
    + asm volatile ("addk r5, r0, %2 \n\t" \
    + "addk r6, r0, %3 \n\t" \
    + "addik r12, r0, %1 \n\t" \
    + "brki r14, 0x8 \n\t" \
    + "addk %0, r3, r0 \n\t" \
    + : "=r" (__ret) \
    + : "i" (__NR_##name), \
    + "r" ((long)arg1), \
    + "r" ((long)arg2) \
    + "r3", "r4", "r5", "r6", "r7", "r8", "r9", \
    + "r10", "r12", "r14", "cc"); \
    + __syscall_return(type, __ret); \
    +}
    +
    +#define _syscall3(type, name, type1, arg1, type2, arg2, type3, arg3) \
    +type name(type1 arg1, type2 arg2, type3 arg3) \
    +{ \
    + long __ret; \
    + asm volatile ("addk r5, r0, %2 \n\t" \
    + "addk r6, r0, %3 \n\t" \
    + "addk r7, r0, %4 \n\t" \
    + "addik r12, r0, %1 \n\t" \
    + "brki r14, 0x8 \n\t" \
    + "addk %0, r3, r0 \n\t" \
    + : "=r" (__ret) \
    + : "i" (__NR_##name), \
    + "r" ((long)arg1), \
    + "r" ((long)arg2), \
    + "r" ((long)arg3) \
    + : "r3", "r4", "r5", "r6", "r7", "r8", "r9", \
    + "r10", "r12", "r14", "cc"); \
    + __syscall_return(type, __ret); \
    +}
    +
    +#define _syscall4(type, name, type1, arg1, type2, arg2, type3, arg3, \
    + type4, arg4) \
    +type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) \
    +{ \
    + long __ret; \
    + asm volatile ("addk r5, r0, %2 \n\t" \
    + "addk r6, r0, %3 \n\t" \
    + "addk r7, r0, %4 \n\t" \
    + "addk r8, r0, %5 \n\t" \
    + "addik r12, r0, %1 \n\t" \
    + "brki r14, 0x8 \n\t" \
    + "addk %0, r3, r0 \n\t" \
    + : "=r" (__ret) \
    + : "i" (__NR_##name), \
    + "r" ((long)arg1), \
    + "r" ((long)arg2), \
    + "r" ((long)arg3), \
    + "r" ((long)arg4) \
    + : "r3", "r4", "r5", "r6", "r7", "r8", "r9", \
    + "r10", "r12", "r14", "cc"); \
    + __syscall_return(type, __ret); \
    +}
    +
    +#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) \
    +{ \
    + long __ret; \
    + asm volatile ("addk r5, r0, %2 \n\t" \
    + "addk r6, r0, %3 \n\t" \
    + "addk r7, r0, %4 \n\t" \
    + "addk r8, r0, %5 \n\t" \
    + "addk r9, r0, %6 \n\t" \
    + "addik r12, r0, %1 \n\t" \
    + "brki r14, 0x8 \n\t" \
    + "addk %0, r3, r0 \n\t" \
    + : "=r" (__ret) \
    + : "i" (__NR_##name), \
    + "r" ((long)arg1), \
    + "r" ((long)arg2), \
    + "r" ((long)arg3), \
    + "r" ((long)arg4), \
    + "r" ((long)arg5) \
    + : "r3", "r4", "r5", "r6", "r7", "r8", "r9", \
    + "r10", "r12", "r14", "cc"); \
    + __syscall_return(type, __ret); \
    +}
    +
    +#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) \
    +{ \
    + long __ret; \
    + asm volatile ("addk r5, r0, %2 \n\t" \
    + "addk r6, r0, %3 \n\t" \
    + "addk r7, r0, %4 \n\t" \
    + "addk r8, r0, %5 \n\t" \
    + "addk r9, r0, %6 \n\t" \
    + "addk r10, r0, %7 \n\t" \
    + "addik r12, r0, %1 \n\t" \
    + "brki r14, 0x8 \n\t" \
    + "addk %0, r3, r0 \n\t" \
    + : "=r" (__ret) \
    + : "i" (__NR_##name), \
    + "r" ((long)arg1), \
    + "r" ((long)arg2), \
    + "r" ((long)arg3), \
    + "r" ((long)arg4), \
    + "r" ((long)arg5), \
    + "r" ((long)arg6) \
    + : "r3", "r4", "r5", "r6", "r7", "r8", "r9", \
    + "r10", "r12", "r14", "cc"); \
    + __syscall_return(type, __ret); \
    +}
    +
    +#ifdef __KERNEL_SYSCALLS__
    +
    +extern long execve(const char *filename, char **argv, char **envp);
    +
    +#endif /* __KERNEL_SYSCALLS__ */
    +
    +#ifdef __KERNEL__
    +#define __ARCH_WANT_IPC_PARSE_VERSION
    +/* #define __ARCH_WANT_OLD_READDIR */
    +/* #define __ARCH_WANT_OLD_STAT */
    +#define __ARCH_WANT_STAT64
    +#define __ARCH_WANT_SYS_ALARM
    +#define __ARCH_WANT_SYS_GETHOSTNAME
    +#define __ARCH_WANT_SYS_PAUSE
    +#define __ARCH_WANT_SYS_SGETMASK
    +#define __ARCH_WANT_SYS_SIGNAL
    +#define __ARCH_WANT_SYS_TIME
    +#define __ARCH_WANT_SYS_UTIME
    +#define __ARCH_WANT_SYS_WAITPID
    +#define __ARCH_WANT_SYS_SOCKETCALL
    +#define __ARCH_WANT_SYS_FADVISE64
    +#define __ARCH_WANT_SYS_GETPGRP
    +#define __ARCH_WANT_SYS_LLSEEK
    +#define __ARCH_WANT_SYS_NICE
    +/* #define __ARCH_WANT_SYS_OLD_GETRLIMIT */
    +#define __ARCH_WANT_SYS_OLDUMOUNT
    +#define __ARCH_WANT_SYS_SIGPENDING
    +#define __ARCH_WANT_SYS_SIGPROCMASK
    +#define __ARCH_WANT_SYS_RT_SIGACTION
    +/* #define __ARCH_WANT_SYS_RT_SIGSUSPEND */
    +#endif
    +
    +/*
    + * "Conditional" syscalls
    + *
    + * What we want is __attribute__((weak,alias("sys_ni_syscall"))),
    + * but it doesn't work on all toolchains, so we just do it by hand
    + */
    +#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall");
    +
    +#endif /* _ASM_UNISTD_H */
    --
    1.5.4.rc4.14.g6fc74


    \
     
     \ /
      Last update: 2008-01-26 17:15    [W:0.060 / U:1.980 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site