|
|
1.1 root 1: #ifndef _MINTBIND_H
2:
3: #define _MINTBIND_H
4:
5:
6:
7: #ifdef __TURBOC__
8:
9: # ifndef __TOS
10:
11: # include <tos.h>
12:
13: # endif
14:
15: #else
16:
17: #ifndef _OSBIND_H
18:
19: #include <osbind.h>
20:
21: #endif
22:
23: #endif
24:
25:
26:
27: #ifdef __GNUC_INLINE__
28:
29: #define trap_1_wwlw(n, a, b, c) \
30:
31: ({ \
32:
33: register long retvalue __asm__("d0"); \
34:
35: short _a = (short)(a); \
36:
37: long _b = (long) (b); \
38:
39: short _c = (short) (c); \
40:
41: \
42:
43: __asm__ volatile \
44:
45: ("\
46:
47: movw %4,sp@-; \
48:
49: movl %3,sp@-; \
50:
51: movw %2,sp@-; \
52:
53: movw %1,sp@-; \
54:
55: trap #1; \
56:
57: lea 10(sp),sp " \
58:
59: : "=r"(retvalue) /* outputs */ \
60:
61: : "g"(n), "r"(_a), "r"(_b), "r"(_c) /* inputs */ \
62:
63: : "d0", "d1", "d2", "a0", "a1", "a2" /* clobbered regs */ \
64:
65: ); \
66:
67: retvalue; \
68:
69: })
70:
71:
72:
73: #define trap_1_wwww(n, a, b, c) \
74:
75: ({ \
76:
77: register long retvalue __asm__("d0"); \
78:
79: short _a = (short)(a); \
80:
81: short _b = (short)(b); \
82:
83: short _c = (short)(c); \
84:
85: \
86:
87: __asm__ volatile \
88:
89: ("\
90:
91: movw %4,sp@-; \
92:
93: movw %3,sp@-; \
94:
95: movw %2,sp@-; \
96:
97: movw %1,sp@-; \
98:
99: trap #1; \
100:
101: addqw #8,sp " \
102:
103: : "=r"(retvalue) /* outputs */ \
104:
105: : "g"(n), "r"(_a), "r"(_b), "r"(_c) /* inputs */ \
106:
107: : "d0", "d1", "d2", "a0", "a1", "a2" /* clobbered regs */ \
108:
109: ); \
110:
111: retvalue; \
112:
113: })
114:
115:
116:
117: #define trap_1_wwwl(n, a, b, c) \
118:
119: ({ \
120:
121: register long retvalue __asm__("d0"); \
122:
123: short _a = (short)(a); \
124:
125: short _b = (short)(b); \
126:
127: long _c = (long)(c); \
128:
129: \
130:
131: __asm__ volatile \
132:
133: ("\
134:
135: movl %4,sp@-; \
136:
137: movw %3,sp@-; \
138:
139: movw %2,sp@-; \
140:
141: movw %1,sp@-; \
142:
143: trap #1; \
144:
145: lea sp@(10),sp " \
146:
147: : "=r"(retvalue) /* outputs */ \
148:
149: : "g"(n), "r"(_a), "r"(_b), "r"(_c) /* inputs */ \
150:
151: : "d0", "d1", "d2", "a0", "a1", "a2" /* clobbered regs */ \
152:
153: ); \
154:
155: retvalue; \
156:
157: })
158:
159:
160:
161: #define trap_1_wwl(n, a, b) \
162:
163: ({ \
164:
165: register long retvalue __asm__("d0"); \
166:
167: short _a = (short)(a); \
168:
169: long _b = (long) (b); \
170:
171: \
172:
173: __asm__ volatile \
174:
175: ("\
176:
177: movl %3,sp@-; \
178:
179: movw %2,sp@-; \
180:
181: movw %1,sp@-; \
182:
183: trap #1; \
184:
185: addqw #8,sp " \
186:
187: : "=r"(retvalue) /* outputs */ \
188:
189: : "g"(n), "r"(_a), "r"(_b) /* inputs */ \
190:
191: : "d0", "d1", "d2", "a0", "a1", "a2" /* clobbered regs */ \
192:
193: ); \
194:
195: retvalue; \
196:
197: })
198:
199:
200:
201: #else
202:
203:
204:
205: #ifdef __GNUC__
206:
207: # ifndef __MSHORT__
208:
209: # define __LONG_TRAPS__
210:
211: # endif
212:
213: #endif
214:
215:
216:
217: #ifndef __LONG_TRAPS__
218:
219: # ifndef trap_1_w
220:
221: # define trap_1_w(n) gemdos(n)
222:
223: # define trap_1_wl(n,a) gemdos(n, (long)(a))
224:
225: # define trap_1_wll(n, a, b) gemdos(n, (long)(a), (long)(b))
226:
227: # define trap_1_ww(n,a) gemdos(n, a)
228:
229: # define trap_1_www(n,a,b) gemdos(n, a, b)
230:
231: # define trap_1_wwlll(n,a,b,c,d) gemdos(n, a, (long)(b), (long)(c), (long)(d))
232:
233: # define trap_1_wwll(n, a, b, c) gemdos(n, a, (long)(b), (long)(c))
234:
235: # define trap_1_wlw(n, a, b) gemdos(n, (long)(a), b)
236:
237: # define trap_1_wlww(n, a, b, c) gemdos(n, (long)(a), b, c)
238:
239: # define trap_13_w(n) bios(n)
240:
241: # define trap_14_w(n) xbios(n)
242:
243: # endif
244:
245: # define trap_1_wwlw(n,a,b,c) gemdos(n, a, (long)(b), c)
246:
247: # define trap_1_wwww(n,a,b,c) gemdos(n, a, b, c)
248:
249: # define trap_1_wwl(n, a, b) gemdos(n, a, (long)(b))
250:
251: # define trap_1_wwwl(n,a,b,c) gemdos(n, a, b, (long)(c))
252:
253: #endif /* __LONG_TRAPS__ */
254:
255:
256:
257: #endif /* __GNUC_INLINE__ */
258:
259:
260:
261: /* note: none of these functions is declared as (void), despite
262:
263: * what the man pages say; this is so that programs can check
264:
265: * for a -32 return error from TOS if MiNT is not installed
266:
267: */
268:
269:
270:
271: #define Syield() \
272:
273: (short)trap_1_w(0xff)
274:
275: #define Fpipe(ptr) \
276:
277: (short)trap_1_wl(0x100, (long)(ptr))
278:
279: #define Fcntl(f, arg, cmd) \
280:
281: trap_1_wwlw(0x104, (short)(f), (long)(arg), (short)(cmd))
282:
283: #define Finstat(f) \
284:
285: trap_1_ww(0x105, (short)(f))
286:
287: #define Foutstat(f) \
288:
289: trap_1_ww(0x106, (short)(f))
290:
291: #define Fgetchar(f, mode) \
292:
293: trap_1_www(0x107, (short)(f), (short)(mode))
294:
295: #define Fputchar(f, ch, mode) \
296:
297: trap_1_wwlw(0x108, (short)(f), (long)(ch), (short)(mode))
298:
299:
300:
301: #define Pwait() \
302:
303: trap_1_w(0x109)
304:
305: #define Pnice(delta) \
306:
307: (short)trap_1_ww(0x10a, (short)(delta))
308:
309: #define Pgetpid() \
310:
311: (short)trap_1_w(0x10b)
312:
313: #define Pgetppid() \
314:
315: (short)trap_1_w(0x10c)
316:
317: #define Pgetpgrp() \
318:
319: (short)trap_1_w(0x10d)
320:
321: #define Psetpgrp(pid, grp) \
322:
323: (short)trap_1_www(0x10e, (short)(pid), (short)(grp))
324:
325: #define Pgetuid() \
326:
327: (short)trap_1_w(0x10f)
328:
329: #define Psetuid(id) \
330:
331: (short)trap_1_ww(0x110, (short)(id))
332:
333: #define Pkill(pid, sig) \
334:
335: (short)trap_1_www(0x111, (short)(pid), (short)(sig))
336:
337: #define Psignal(sig, handler) \
338:
339: trap_1_wwl(0x112, (short)(sig), (long)(handler))
340:
341: #define Pvfork() \
342:
343: (short)trap_1_w(0x113)
344:
345: #define Pgetgid() \
346:
347: (short)trap_1_w(0x114)
348:
349: #define Psetgid(id) \
350:
351: (short)trap_1_ww(0x115, (short)(id))
352:
353: #define Psigblock(mask) \
354:
355: trap_1_wl(0x116, (unsigned long)(mask))
356:
357: #define Psigsetmask(mask) \
358:
359: trap_1_wl(0x117, (unsigned long)(mask))
360:
361: #define Pusrval(arg) \
362:
363: trap_1_wl(0x118, (long)(arg))
364:
365: #define Pdomain(arg) \
366:
367: (short)trap_1_ww(0x119, (short)(arg))
368:
369: #define Psigreturn() \
370:
371: (short)trap_1_w(0x11a)
372:
373: #define Pfork() \
374:
375: (short)trap_1_w(0x11b)
376:
377: #define Pwait3(flag, rusage) \
378:
379: trap_1_wwl(0x11c, (short)(flag), (long)(rusage))
380:
381: #define Fselect(time, rfd, wfd, xfd) \
382:
383: (short)trap_1_wwlll(0x11d, (unsigned short)(time), (long)(rfd), \
384:
385: (long)(wfd), (long)(xfd))
386:
387: #define Prusage(rsp) \
388:
389: (short)trap_1_wl(0x11e, (long)(rsp))
390:
391: #define Psetlimit(i, val) \
392:
393: trap_1_wwl(0x11f, (short)(i), (long)(val))
394:
395:
396:
397: #define Talarm(sec) \
398:
399: trap_1_wl(0x120, (long)(sec))
400:
401: #define Pause() \
402:
403: (short)trap_1_w(0x121)
404:
405: #define Sysconf(n) \
406:
407: trap_1_ww(0x122, (short)(n))
408:
409: #define Psigpending() \
410:
411: trap_1_w(0x123)
412:
413: #define Dpathconf(name, which) \
414:
415: trap_1_wlw(0x124, (long)(name), (short)(which))
416:
417:
418:
419: #define Pmsg(mode, mbox, msg) \
420:
421: trap_1_wwll(0x125, (short)(mode), (long)(mbox), (long)(msg))
422:
423: #define Fmidipipe(pid, in, out) \
424:
425: trap_1_wwww(0x126, (short)(pid), (short)(in),(short)(out))
426:
427: #define Prenice(pid, delta) \
428:
429: (short)trap_1_www(0x127, (short)(pid), (short)(delta))
430:
431: #define Dopendir(name, flag) \
432:
433: trap_1_wlw(0x128, (long)(name), (short)(flag))
434:
435: #define Dreaddir(len, handle, buf) \
436:
437: trap_1_wwll(0x129, (short)(len), (long)(handle), (long)(buf))
438:
439: #define Drewinddir(handle) \
440:
441: trap_1_wl(0x12a, (long)(handle))
442:
443: #define Dclosedir(handle) \
444:
445: trap_1_wl(0x12b, (long)(handle))
446:
447: #define Fxattr(flag, name, buf) \
448:
449: trap_1_wwll(0x12c, (short)(flag), (long)(name), (long)(buf))
450:
451: #define Flink(old, new) \
452:
453: trap_1_wll(0x12d, (long)(old), (long)(new))
454:
455: #define Fsymlink(old, new) \
456:
457: trap_1_wll(0x12e, (long)(old), (long)(new))
458:
459: #define Freadlink(siz, buf, linknm) \
460:
461: trap_1_wwll(0x12f, (short)(siz), (long)(buf), (long)(linknm))
462:
463: #define Dcntl(cmd, name, arg) \
464:
465: trap_1_wwll(0x130, (short)(cmd), (long)(name), (long)(arg))
466:
467: #define Fchown(name, uid, gid) \
468:
469: trap_1_wlww(0x131, (long)(name), (short)(uid), (short)(gid))
470:
471: #define Fchmod(name, mode) \
472:
473: trap_1_wlw(0x132, (long)(name), (short)(mode))
474:
475: #define Pumask(mask) \
476:
477: (short)trap_1_ww(0x133, (short)(mask))
478:
479: #define Psemaphore(mode, id, tmout) \
480:
481: trap_1_wwll(0x134, (short)(mode), (long)(id), (long)(tmout))
482:
483: #define Dlock(mode, drive) \
484:
485: trap_1_www(0x135, (short)(mode), (short)(drive))
486:
487: #define Psigpause(mask) \
488:
489: (short)trap_1_wl(0x136, (unsigned long)(mask))
490:
491: #define Psigaction(sig, act, oact) \
492:
493: trap_1_wwll(0x137, (short)(sig), (long)(act), (long)(oact))
494:
495: #define Pgeteuid() \
496:
497: (short)trap_1_w(0x138)
498:
499: #define Pgetegid() \
500:
501: (short)trap_1_w(0x139)
502:
503: #define Pwaitpid(pid,flag, rusage) \
504:
505: trap_1_wwwl(0x13a, (short)(pid), (short)(flag), (long)(rusage))
506:
507:
508:
509: #endif /* _MINTBIND_H */
510:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.