a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync .section ".data"
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync .globl linux_errno
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsynclinux_errno: .int 0
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync .section ".text"
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync .code32
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync .globl linux_syscall
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync .type linux_syscall, @function
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsynclinux_syscall:
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync /* Save registers */
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync pushl %ebx
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync pushl %esi
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync pushl %edi
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync pushl %ebp
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync movl 20(%esp), %eax // C arg1 -> syscall number
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync movl 24(%esp), %ebx // C arg2 -> syscall arg1
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync movl 28(%esp), %ecx // C arg3 -> syscall arg2
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync movl 32(%esp), %edx // C arg4 -> syscall arg3
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync movl 36(%esp), %esi // C arg5 -> syscall arg4
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync movl 40(%esp), %edi // C arg6 -> syscall arg5
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync movl 44(%esp), %ebp // C arg7 -> syscall arg6
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync int $0x80
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync /* Restore registers */
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync popl %ebp
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync popl %edi
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync popl %esi
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync popl %ebx
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync cmpl $-4095, %eax
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync jae 1f
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync ret
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync1:
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync negl %eax
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync movl %eax, linux_errno
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync movl $-1, %eax
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync ret
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync .size linux_syscall, . - linux_syscall