📄 syscall-i386-linux-1.0.s
字号:
#define SYS_rt_sigaction 174
#define SYS_rt_sigprocmask 175
#define SYS_rt_sigpending 176
#define SYS_rt_sigtimedwait 177
#define SYS_rt_sigqueueinfo 178
#define SYS_rt_sigsuspend 179
#define SYS_pread 180
#define SYS_pwrite 181
#define SYS_chown 182
#define SYS_getcwd 183
#define SYS_capget 184
#define SYS_capset 185
#define SYS_sigaltstack 186
#define SYS_sendfile 187
#define SYS_getpmsg 188
#define SYS_putpmsg 189
#define SYS_vfork 190
#define SYS_ugetrlimit 191
#define SYS_mmap2 192
#define SYS_truncate64 193
#define SYS_ftruncate64 194
#define SYS_stat64 195
#define SYS_lstat64 196
#define SYS_fstat64 197
#define SYS_lchown32 198
#define SYS_getuid32 199
#define SYS_getgid32 200
#define SYS_geteuid32 201
#define SYS_getegid32 202
#define SYS_setreuid32 203
#define SYS_setregid32 204
#define SYS_getgroups32 205
#define SYS_setgroups32 206
#define SYS_fchown32 207
#define SYS_setresuid32 208
#define SYS_getresuid32 209
#define SYS_setresgid32 210
#define SYS_getresgid32 211
#define SYS_chown32 212
#define SYS_setuid32 213
#define SYS_setgid32 214
#define SYS_setfsuid32 215
#define SYS_setfsgid32 216
#define SYS_pivot_root 217
#define SYS_mincore 218
#define SYS_madvise 219
#define SYS_madvise1 219
#define SYS_getdents64 220
#define SYS_fcntl64 221
#define NAME(X) cyg_hal_sys_##X
#define END(X) 1: ; .type NAME(X),@function ; .size NAME(X),1b - NAME(X)
#define SYSCALL0(x) \
.globl NAME(x) ; \
\
NAME(x): \
\
push %ebx; \
lea SYS_##x, %eax; \
int $0x80; \
pop %ebx; \
ret; \
\
END(x)
#define SYSCALL1(x) \
.globl NAME(x) ; \
\
NAME(x): \
\
push %ebx; \
mov 8(%esp), %ebx; \
lea SYS_##x, %eax; \
int $0x80; \
pop %ebx; \
ret; \
\
END(x)
#define SYSCALL2(x) \
.globl NAME(x) ; \
\
NAME(x): \
\
push %ebx; \
mov 8(%esp), %ebx; \
mov 12(%esp), %ecx; \
lea SYS_##x, %eax; \
int $0x80; \
pop %ebx; \
ret; \
\
END(x)
#define SYSCALL3(x) \
.globl NAME(x) ; \
\
NAME(x): \
\
push %ebx; \
mov 8(%esp), %ebx; \
mov 12(%esp), %ecx; \
mov 16(%esp), %edx; \
lea SYS_##x, %eax; \
int $0x80; \
pop %ebx; \
ret; \
END(x)
#define SYSCALL4(x) \
.globl NAME(x) ; \
\
NAME(x): \
\
push %ebx; \
push %esi; \
mov 12(%esp), %ebx; \
mov 16(%esp), %ecx; \
mov 20(%esp), %edx; \
mov 24(%esp), %esi; \
lea SYS_##x, %eax; \
int $0x80; \
pop %esi; \
pop %ebx; \
ret; \
END(x)
#define SYSCALL5(x) \
.globl NAME(x) ; \
\
NAME(x): \
\
push %ebx; \
push %esi; \
push %edi; \
mov 16(%esp), %ebx; \
mov 20(%esp), %ecx; \
mov 24(%esp), %edx; \
mov 28(%esp), %esi; \
mov 32(%esp), %edi; \
lea SYS_##x, %eax; \
int $0x80; \
pop %edi; \
pop %esi; \
pop %ebx; \
ret; \
END(x)
//==========================================================================
// Initial asm stuff for all functions.
.text
.align 2
SYSCALL1(exit)
SYSCALL0(fork)
SYSCALL3(read)
SYSCALL3(write)
SYSCALL3(open)
SYSCALL1(close)
SYSCALL3(waitpid)
SYSCALL2(creat)
SYSCALL2(link)
SYSCALL1(unlink)
SYSCALL3(execve)
SYSCALL1(chdir)
SYSCALL1(time)
SYSCALL2(chmod)
SYSCALL3(lseek)
SYSCALL0(getpid)
SYSCALL0(getuid)
SYSCALL1(nice)
SYSCALL2(kill)
SYSCALL1(dup)
SYSCALL1(pipe)
SYSCALL1(brk)
SYSCALL3(ioctl)
SYSCALL3(fcntl)
SYSCALL1(chroot)
SYSCALL2(dup2)
SYSCALL3(sigaction)
SYSCALL2(gettimeofday)
SYSCALL1(mmapx)
SYSCALL2(socketcall)
SYSCALL3(setitimer)
SYSCALL3(sigprocmask)
SYSCALL5(_newselect)
SYSCALL3(readv)
SYSCALL3(writev)
SYSCALL1(fdatasync)
SYSCALL2(getcwd)
SYSCALL2(access)
SYSCALL3(readdir)
SYSCALL2(oldlstat)
SYSCALL2(oldfstat)
SYSCALL2(oldstat)
SYSCALL2(newlstat)
SYSCALL2(newfstat)
SYSCALL2(newstat)
SYSCALL2(mkdir)
SYSCALL5(ipc)
// ----------------------------------------------------------------------------
// Special support for returning from a signal handler. In theory no special
// action is needed, but with some versions of the kernel on some
// architectures that is not good enough. Instead returning has to happen
// via another system call.
.align 16
.global cyg_hal_sys_restore_rt
cyg_hal_sys_restore_rt:
movl $SYS_rt_sigreturn, %eax
int $0x80
1:
.type __restore_rt,@function
.size __restore_rt,1b - __restore_rt
.align 8
.global cyg_hal_sys_restore
cyg_hal_sys_restore:
popl %eax
movl $SYS_sigreturn, %eax
int $0x80
1:
.type __restore,@function
.size __restore,1b - __restore
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -