1 module syscalld.arch.syscall_x86;
2 
3 version(Posix):
4 version(D_InlineAsm_X86):
5 @nogc:
6 nothrow:
7 
8 int syscall(int ident)
9 {
10     int ret;
11 
12     synchronized asm @nogc nothrow
13     {
14         mov EAX, ident;
15         int 0x80;
16         mov ret, EAX;
17     }
18     return ret;
19 }
20 
21 int syscall(int ident, int n)
22 {
23     int ret;
24 
25     synchronized asm @nogc nothrow
26     {
27         mov EAX, ident;
28         mov EBX, n[EBP];
29         int 0x80;
30         mov ret, EAX;
31     }
32     return ret;
33 }
34 
35 int syscall(int ident, int n, int arg1)
36 {
37     int ret;
38 
39     synchronized asm @nogc nothrow
40     {
41         mov EAX, ident;
42         mov EBX, n[EBP];
43         mov ECX, arg1[EBP];
44         int 0x80;
45         mov ret, EAX;
46     }
47     return ret;
48 }
49 
50 int syscall(int ident, int n, int arg1, int arg2)
51 {
52     int ret;
53 
54     synchronized asm @nogc nothrow
55     {
56         mov EAX, ident;
57         mov EBX, n[EBP];
58         mov ECX, arg1[EBP];
59         mov EDX, arg2[EBP];
60         int 0x80;
61         mov ret, EAX;
62     }
63     return ret;
64 }
65 
66 int syscall(int ident, int n, int arg1, int arg2, int arg3)
67 {
68     int ret;
69 
70     synchronized asm @nogc nothrow
71     {
72         mov EAX, ident;
73         mov EBX, n[EBP];
74         mov ECX, arg1[EBP];
75         mov EDX, arg2[EBP];
76         mov ESI, arg3[EBP];
77         int 0x80;
78         mov ret, EAX;
79     }
80     return ret;
81 }
82 
83 int syscall(int ident, int n, int arg1, int arg2, int arg3, int arg4)
84 {
85     int ret;
86 
87     synchronized asm @nogc nothrow
88     {
89         mov EAX, ident;
90         mov EBX, n[EBP];
91         mov ECX, arg1[EBP];
92         mov EDX, arg2[EBP];
93         mov ESI, arg3[EBP];
94         mov EDI, arg4[EBP];
95         int 0x80;
96         mov ret, EAX;
97     }
98     return ret;
99 }
100 
101 int syscall(int ident, int n, int arg1, int arg2, int arg3, int arg4, int arg5)
102 {
103     int ret;
104 
105     synchronized asm @nogc nothrow
106     {
107         mov EAX, ident;
108         mov EBX, n[EBP];
109         mov ECX, arg1[EBP];
110         mov EDX, arg2[EBP];
111         mov ESI, arg3[EBP];
112         mov EDI, arg4[EBP];
113         mov EBP, arg5[EBP];
114         int 0x80;
115         mov ret, EAX;
116     }
117     return ret;
118 }
119 
120 
121 
122 
123