|
|
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.