RT-AC66 3.0.0.4.374.130 core
[tomato.git] / release / src-rt-6.x / linux / linux-2.6 / arch / um / sys-i386 / stub.S
blob6a70d9ab5c2905177429ba9b0f3ae2c1fc084fad
1 #include "uml-config.h"
3         .globl syscall_stub
4 .section .__syscall_stub, "x"
6         .globl batch_syscall_stub
7 batch_syscall_stub:
8         /* load pointer to first operation */
9         mov     $(UML_CONFIG_STUB_DATA+8), %esp
11 again:
12         /* load length of additional data */
13         mov     0x0(%esp), %eax
15         /* if(length == 0) : end of list */
16         /* write possible 0 to header */
17         mov     %eax, UML_CONFIG_STUB_DATA+4
18         cmpl    $0, %eax
19         jz      done
21         /* save current pointer */
22         mov     %esp, UML_CONFIG_STUB_DATA+4
24         /* skip additional data */
25         add     %eax, %esp
27         /* load syscall-# */
28         pop     %eax
30         /* load syscall params */
31         pop     %ebx
32         pop     %ecx
33         pop     %edx
34         pop     %esi
35         pop     %edi
36         pop     %ebp
38         /* execute syscall */
39         int     $0x80
41         /* check return value */
42         pop     %ebx
43         cmp     %ebx, %eax
44         je      again
46 done:
47         /* save return value */
48         mov     %eax, UML_CONFIG_STUB_DATA
50         /* stop */
51         int3