OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [uclinux/] [uC-libc/] [include/] [m68k/] [syscall.h] - Blame information for rev 1778

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 199 simons
#ifndef _M68K_SYSCALL_H
2
#define _M68K_SYSCALL_H
3
 
4
#ifdef PTHREADS_SYSCALL
5
 
6
#define _syscall0(type,name) \
7
type name(void) \
8
{ \
9
register long __res __asm__ ("%d0"); \
10
__asm__ __volatile__ ("trap  #0" \
11
                      : "=g" (__res) \
12
                      : "0" (SYS_##name) \
13
                      : "%d0"); \
14
return (type) __res; \
15
}
16
 
17
#define _syscall1(type,name,atype,a) \
18
type name(atype a) \
19
{ \
20
register long __res __asm__ ("%d0"); \
21
__asm__ __volatile__ ("movel %2,%/d1\n\t" \
22
                      "trap  #0" \
23
                      : "=g" (__res) \
24
                      : "0" (SYS_##name), "g" ((long)(a)) \
25
                      : "%d0", "%d1"); \
26
return (type) __res; \
27
}
28
 
29
#define _syscall2(type,name,atype,a,btype,b) \
30
type name(atype a,btype b) \
31
{ \
32
register long __res __asm__ ("%d0"); \
33
__asm__ __volatile__ ("movel %2,%/d1\n\t" \
34
                      "movel %3,%/d2\n\t" \
35
                      "trap  #0" \
36
                      : "=g" (__res) \
37
                      : "0" (SYS_##name), "g" ((long)(a)), \
38
                                          "g" ((long)(b)) \
39
                      : "%d0", "%d1", "%d2"); \
40
return (type) __res; \
41
}
42
 
43
#define _syscall3(type,name,atype,a,btype,b,ctype,c) \
44
type name(atype a,btype b,ctype c) \
45
{ \
46
register long __res __asm__ ("%d0"); \
47
__asm__ __volatile__ ("movel %2,%/d1\n\t" \
48
                      "movel %3,%/d2\n\t" \
49
                      "movel %4,%/d3\n\t" \
50
                      "trap  #0" \
51
                      : "=g" (__res) \
52
                      : "0" (SYS_##name), "g" ((long)(a)), \
53
                                          "g" ((long)(b)), \
54
                                          "g" ((long)(c)) \
55
                      : "%d0", "%d1", "%d2", "%d3"); \
56
return (type) __res; \
57
}
58
 
59
#define _syscall4(type,name,atype,a,btype,b,ctype,c,dtype,d) \
60
type name (atype a, btype b, ctype c, dtype d) \
61
{ \
62
register long __res __asm__ ("%d0"); \
63
__asm__ __volatile__ ("movel %2,%/d1\n\t" \
64
                      "movel %3,%/d2\n\t" \
65
                      "movel %4,%/d3\n\t" \
66
                      "movel %5,%/d4\n\t" \
67
                      "trap  #0" \
68
                      : "=g" (__res) \
69
                      : "0" (SYS_##name), "g" ((long)(a)), \
70
                                          "g" ((long)(b)), \
71
                                          "g" ((long)(c)), \
72
                                          "g" ((long)(d))  \
73
                      : "%d0", "%d1", "%d2", "%d3", "%d4"); \
74
return (type) __res; \
75
}
76
 
77
#define _syscall5(type,name,atype,a,btype,b,ctype,c,dtype,d,etype,e) \
78
type name (atype a,btype b,ctype c,dtype d,etype e) \
79
{ \
80
register long __res __asm__ ("%d0"); \
81
__asm__ __volatile__ ("movel %2,%/d1\n\t" \
82
                      "movel %3,%/d2\n\t" \
83
                      "movel %4,%/d3\n\t" \
84
                      "movel %5,%/d4\n\t" \
85
                      "movel %6,%/d5\n\t" \
86
                      "trap  #0" \
87
                      : "=g" (__res) \
88
                      : "0" (SYS_##name), "g" ((long)(a)), \
89
                                          "g" ((long)(b)), \
90
                                          "g" ((long)(c)), \
91
                                          "g" ((long)(d)), \
92
                                          "g" ((long)(e))  \
93
                      : "%d0", "%d1", "%d2", "%d3", "%d4", "%d5"); \
94
return (type) __res; \
95
}
96
 
97
#else /* PTHREADS_SYSCALL */
98
 
99
#define _syscall0(type,name) \
100
type name(void) \
101
{ \
102
long __res; \
103
register long __d0 __asm__ ("%d0"); \
104
__asm__ __volatile__ ("trap  #0" \
105
                      : "=g" (__d0) \
106
                      : "0" (SYS_##name) \
107
                      : "%d0"); \
108
__res = __d0; \
109
if (__check_errno(__res)) \
110
        return (type) __res; \
111
errno = -__res; \
112
return -1; \
113
}
114
 
115
#define _syscall1(type,name,atype,a) \
116
type name(atype a) \
117
{ \
118
long __res; \
119
register long __d0 __asm__ ("%d0"); \
120
__asm__ __volatile__ ("movel %2,%/d1\n\t" \
121
                      "trap  #0" \
122
                      : "=g" (__d0) \
123
                      : "0" (SYS_##name), "g" ((long)(a)) \
124
                      : "%d0", "%d1"); \
125
__res = __d0; \
126
if (__check_errno(__res)) \
127
        return (type) __res; \
128
errno = -__res; \
129
return -1; \
130
}
131
 
132
#define _syscall2(type,name,atype,a,btype,b) \
133
type name(atype a,btype b) \
134
{ \
135
long __res; \
136
register long __d0 __asm__ ("%d0"); \
137
__asm__ __volatile__ ("movel %2,%/d1\n\t" \
138
                      "movel %3,%/d2\n\t" \
139
                      "trap  #0" \
140
                      : "=g" (__d0) \
141
                      : "0" (SYS_##name), "g" ((long)(a)), \
142
                                          "g" ((long)(b)) \
143
                      : "%d0", "%d1", "%d2"); \
144
__res = __d0; \
145
if (__check_errno(__res)) \
146
        return (type) __res; \
147
errno = -__res; \
148
return -1; \
149
}
150
 
151
#define _syscall3(type,name,atype,a,btype,b,ctype,c) \
152
type name(atype a,btype b,ctype c) \
153
{ \
154
long __res; \
155
register long __d0 __asm__ ("%d0"); \
156
__asm__ __volatile__ ("movel %2,%/d1\n\t" \
157
                      "movel %3,%/d2\n\t" \
158
                      "movel %4,%/d3\n\t" \
159
                      "trap  #0" \
160
                      : "=g" (__d0) \
161
                      : "0" (SYS_##name), "g" ((long)(a)), \
162
                                          "g" ((long)(b)), \
163
                                          "g" ((long)(c)) \
164
                      : "%d0", "%d1", "%d2", "%d3"); \
165
__res = __d0; \
166
if (__check_errno(__res)) \
167
        return (type) __res; \
168
errno = -__res; \
169
return -1; \
170
}
171
 
172
#define _syscall4(type,name,atype,a,btype,b,ctype,c,dtype,d) \
173
type name (atype a, btype b, ctype c, dtype d) \
174
{ \
175
long __res; \
176
register long __d0 __asm__ ("%d0"); \
177
__asm__ __volatile__ ("movel %2,%/d1\n\t" \
178
                      "movel %3,%/d2\n\t" \
179
                      "movel %4,%/d3\n\t" \
180
                      "movel %5,%/d4\n\t" \
181
                      "trap  #0" \
182
                      : "=g" (__d0) \
183
                      : "0" (SYS_##name), "g" ((long)(a)), \
184
                                          "g" ((long)(b)), \
185
                                          "g" ((long)(c)), \
186
                                          "g" ((long)(d))  \
187
                      : "%d0", "%d1", "%d2", "%d3", "%d4"); \
188
__res = __d0; \
189
if (__check_errno(__res)) \
190
        return (type) __res; \
191
errno = -__res; \
192
return -1; \
193
}
194
 
195
#define _syscall5(type,name,atype,a,btype,b,ctype,c,dtype,d,etype,e) \
196
type name (atype a,btype b,ctype c,dtype d,etype e) \
197
{ \
198
long __res; \
199
register long __d0 __asm__ ("%d0"); \
200
__asm__ __volatile__ ("movel %2,%/d1\n\t" \
201
                      "movel %3,%/d2\n\t" \
202
                      "movel %4,%/d3\n\t" \
203
                      "movel %5,%/d4\n\t" \
204
                      "movel %6,%/d5\n\t" \
205
                      "trap  #0" \
206
                      : "=g" (__d0) \
207
                      : "0" (SYS_##name), "g" ((long)(a)), \
208
                                          "g" ((long)(b)), \
209
                                          "g" ((long)(c)), \
210
                                          "g" ((long)(d)), \
211
                                          "g" ((long)(e))  \
212
                      : "%d0", "%d1", "%d2", "%d3", "%d4", "%d5"); \
213
__res = __d0; \
214
if (__check_errno(__res)) \
215
        return (type) __res; \
216
errno = -__res; \
217
return -1; \
218
}
219
 
220
#endif /* PTHREADS_SYSCALL */
221
 
222
#endif /* _M68K_SYSCALL_H */

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.