Something went wrong. Try again.
Cider Isn't Darwin Emulation, Really
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778.text.globl _linux_syscall.private_extern _linux_syscall
_linux_syscall:
#if defined(__x86_64__)
movl 8(%rsp), %eax movq %rcx, %r10 syscall ret
#elif defined(__i386__)
// With 32in64, we cannot use sysenter, because our process doesn't have a 32-bit VDSO mapped // and sysenter needs that for returning to user space.
// eax, ecx and edx are caller saved, the rest is calee saved push %ebx push %esi push %edi push %ebp
mov 20(%esp), %ebx mov 24(%esp), %ecx mov 28(%esp), %edx mov 32(%esp), %esi mov 36(%esp), %edi mov 40(%esp), %ebp mov 44(%esp), %eax
int $0x80
pop %ebp pop %edi pop %esi pop %ebx ret
#elif 0 //defined(__i386__)
push %ebp push %ebx push %esi push %edi call 1f1: pop %ebp addl $(2f-1b), %ebp push %ebp push %ecx push %edx movl 28+28(%esp), %eax movl 4+28(%esp), %ebx movl 8+28(%esp), %ecx movl 12+28(%esp), %edx movl 16+28(%esp), %esi movl 20+28(%esp), %edi push %ebp movl 24+28(%esp), %ebp movl %ebp, -4(%esp) movl %esp, %ebp sysenter2: pop %edi pop %esi pop %ebx pop %ebp ret
#else
# error Missing assembly!
#endif