79296ba02c9b226928d90f5c7dd8b6f2484e8c85
[musl] / src / internal / i386 / syscall.s
1 .hidden __sysinfo
2
3 .global __vsyscall
4 .type __vsyscall,@function
5 __vsyscall:
6         push %edi
7         push %ebx
8         mov %edx,%ebx
9         mov %edi,%edx
10         mov 12(%esp),%edi
11         push %eax
12         call 1f
13 2:      pop %ebx
14         pop %ebx
15         pop %edi
16         ret
17
18 1:      mov (%esp),%eax
19         add $[__sysinfo-2b],%eax
20         mov (%eax),%eax
21         test %eax,%eax
22         jz 1f
23         push %eax
24         mov 8(%esp),%eax
25         ret
26 1:      mov 4(%esp),%eax
27         int $128
28         ret
29
30 .global __vsyscall6
31 .type __vsyscall6,@function
32 __vsyscall6:
33         push %ebp
34         push %eax
35         mov 12(%esp), %ebp
36         mov (%ebp), %eax
37         mov 4(%ebp), %ebp
38         push %eax
39         mov 4(%esp),%eax
40         call __vsyscall
41         pop %ebp
42         pop %ebp
43         pop %ebp
44         ret
45
46 .global __syscall
47 .type __syscall,@function
48 __syscall:
49         lea 24(%esp),%eax
50         push %esi
51         push %edi
52         push %eax
53         mov 16(%esp),%eax
54         mov 20(%esp),%edx
55         mov 24(%esp),%ecx
56         mov 28(%esp),%edi
57         mov 32(%esp),%esi
58         call __vsyscall6
59         pop %edi
60         pop %edi
61         pop %esi
62         ret