Linux 4.13.16
[linux/fpc-iii.git] / arch / x86 / um / stub_32.S
blob98816804e131fcb8701f3b360055de2501a8300a
1 #include <as-layout.h>
3 .section .__syscall_stub, "ax"
5         .globl batch_syscall_stub
6 batch_syscall_stub:
7         /* load pointer to first operation */
8         mov     $(STUB_DATA+8), %esp
10 again:
11         /* load length of additional data */
12         mov     0x0(%esp), %eax
14         /* if(length == 0) : end of list */
15         /* write possible 0 to header */
16         mov     %eax, STUB_DATA+4
17         cmpl    $0, %eax
18         jz      done
20         /* save current pointer */
21         mov     %esp, STUB_DATA+4
23         /* skip additional data */
24         add     %eax, %esp
26         /* load syscall-# */
27         pop     %eax
29         /* load syscall params */
30         pop     %ebx
31         pop     %ecx
32         pop     %edx
33         pop     %esi
34         pop     %edi
35         pop     %ebp
37         /* execute syscall */
38         int     $0x80
40         /* check return value */
41         pop     %ebx
42         cmp     %ebx, %eax
43         je      again
45 done:
46         /* save return value */
47         mov     %eax, STUB_DATA
49         /* stop */
50         int3