X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/a13ddcba315eaa75dca84dde30b17a78b2933354..0eabc11fcf240415e39f3873dfce7cd9384b3042:/lunaix-os/kernel/asm/x86/syscall.S diff --git a/lunaix-os/kernel/asm/x86/syscall.S b/lunaix-os/kernel/asm/x86/syscall.S index bd51976..62e0721 100644 --- a/lunaix-os/kernel/asm/x86/syscall.S +++ b/lunaix-os/kernel/asm/x86/syscall.S @@ -30,7 +30,7 @@ .long __lxsys_close /* 20 */ .long __lxsys_read .long __lxsys_write - .long __lxsys_readdir + .long __lxsys_sys_readdir .long __lxsys_mkdir .long __lxsys_lseek /* 25 */ .long __lxsys_geterrno @@ -59,8 +59,9 @@ .long __lxsys_getpgid .long __lxsys_setpgid /* 50 */ .long __lxsys_syslog - .long __lxsys_mmap + .long __lxsys_sys_mmap .long __lxsys_munmap + .long __lxsys_execve 2: .rept __SYSCALL_MAX - (2b - 1b)/4 .long 0 @@ -71,10 +72,11 @@ .section .text syscall_hndlr: pushl %ebp - movl 8(%esp), %ebp + movl 8(%esp), %ebp // isr_param* - movl (%ebp), %eax /* eax: call code as well as the return value from syscall */ - cmpl $__SYSCALL_MAX, %eax + addl $4, %ebp + movl (%ebp), %eax /* eax: call code as well as the return value from syscall */ + cmpl $__SYSCALL_MAX, %eax jae 2f shll $2, %eax @@ -86,8 +88,7 @@ popl %ebp ret 1: - pushl 24(%ebp) /* esi - #6 arg */ - pushl 20(%ebp) /* ebp - #5 arg */ + pushl 24(%ebp) /* esi - #5 arg */ pushl 16(%ebp) /* edi - #4 arg */ pushl 12(%ebp) /* edx - #3 arg */ pushl 8(%ebp) /* ecx - #2 arg */ @@ -97,7 +98,7 @@ movl %eax, (%ebp) /* save the return value */ - addl $24, %esp /* remove the parameters from stack */ + addl $20, %esp /* remove the parameters from stack */ popl %ebp