Loading...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 | #ifndef _ASM_M68K_UNISTD_H_ #define _ASM_M68K_UNISTD_H_ /* XXX - _foo needs to be __foo, while __NR_bar could be _NR_bar. */ #define _syscall0(type,name) \ type name(void) \ { \ register long __res __asm__ ("d0") = __NR_##name; \ __asm__ __volatile__ ("trap #0" \ : "=g" (__res) \ : "0" (__NR_##name) \ : "d0"); \ if (__res >= 0) \ return (type) __res; \ errno = -__res; \ return -1; \ } #define _syscall1(type,name,atype,a) \ type name(atype a) \ { \ register long __res __asm__ ("d0") = __NR_##name; \ __asm__ __volatile__ ("movel %2,d1\n\t" \ "trap #0" \ : "=g" (__res) \ : "0" (__NR_##name), "g" ((long)(a)) \ : "d0", "d1"); \ if (__res >= 0) \ return (type) __res; \ errno = -__res; \ return -1; \ } #define _syscall2(type,name,atype,a,btype,b) \ type name(atype a,btype b) \ { \ register long __res __asm__ ("d0") = __NR_##name; \ __asm__ __volatile__ ("movel %2,d1\n\t" \ "movel %3,d2\n\t" \ "trap #0" \ : "=g" (__res) \ : "0" (__NR_##name), "g" ((long)(a)), \ "g" ((long)(b)) \ : "d0", "d1", "d2"); \ if (__res >= 0) \ return (type) __res; \ errno = -__res; \ return -1; \ } #define _syscall3(type,name,atype,a,btype,b,ctype,c) \ type name(atype a,btype b,ctype c) \ { \ register long __res __asm__ ("d0") = __NR_##name; \ __asm__ __volatile__ ("movel %2,d1\n\t" \ "movel %3,d2\n\t" \ "movel %4,d3\n\t" \ "trap #0" \ : "=g" (__res) \ : "0" (__NR_##name), "g" ((long)(a)), \ "g" ((long)(b)), \ "g" ((long)(c)) \ : "d0", "d1", "d2", "d3"); \ if (__res >= 0) \ return (type) __res; \ errno = -__res; \ return -1; \ } #define _syscall4(type,name,atype,a,btype,b,ctype,c,dtype,d) \ type name (atype a, btype b, ctype c, dtype d) \ { \ register long __res __asm__ ("d0") = __NR_##name; \ __asm__ __volatile__ ("movel %2,d1\n\t" \ "movel %3,d2\n\t" \ "movel %4,d3\n\t" \ "movel %5,d4\n\t" \ "trap #0" \ : "=g" (__res) \ : "0" (__NR_##name), "g" ((long)(a)), \ "g" ((long)(b)), \ "g" ((long)(c)), \ "g" ((long)(d)) \ : "d0", "d1", "d2", "d3", "d4"); \ if (__res >= 0) \ return (type) __res; \ errno = -__res; \ return -1; \ } #define _syscall5(type,name,atype,a,btype,b,ctype,c,dtype,d,etype,e) \ type name (atype a,btype b,ctype c,dtype d,etype e) \ { \ register long __res __asm__ ("d0") = __NR_##name; \ __asm__ __volatile__ ("movel %2,d1\n\t" \ "movel %3,d2\n\t" \ "movel %4,d3\n\t" \ "movel %5,d4\n\t" \ "movel %6,d5\n\t" \ "trap #0" \ : "=g" (__res) \ : "0" (__NR_##name), "g" ((long)(a)), \ "g" ((long)(b)), \ "g" ((long)(c)), \ "g" ((long)(d)), \ "g" ((long)(e)) \ : "d0", "d1", "d2", "d3", "d4", "d5"); \ if (__res >= 0) \ return (type) __res; \ errno = -__res; \ return -1; \ } #endif /* _ASM_M68K_UNISTD_H_ */ |