Implement user space's printf stuff
[thunix.git] / include / syscall.h
blob7cf21cb6b4ae843c49fc2a26aa6887e74c8fdae9
1 #ifndef SYSCALL_H
2 #define SYSCALL_H
4 extern void syscall_interrupt(void);
6 #define _syscall0(type,name) \
7 type name(void) \
8 { \
9 long __res; \
10 __asm__ volatile ("int $0x80" \
11 : "=a" (__res) \
12 : "0" (__NR_##name)); \
13 if (__res >= 0) \
14 return (type) __res; \
15 return -1; \
18 #define _syscall1(type,name,atype,a) \
19 type name(atype a) \
20 { \
21 long __res; \
22 __asm__ volatile ("int $0x80" \
23 : "=a" (__res) \
24 : "0" (__NR_##name),"b" ((long)(a))); \
25 if (__res >= 0) \
26 return (type) __res; \
27 return -1; \
30 #define _syscall2(type,name,atype,a,btype,b) \
31 type name(atype a,btype b) \
32 { \
33 long __res; \
34 __asm__ volatile ("int $0x80" \
35 : "=a" (__res) \
36 : "0" (__NR_##name),"b" ((long)(a)),"c" ((long)(b))); \
37 if (__res >= 0) \
38 return (type) __res; \
39 return -1; \
42 #define _syscall3(type,name,atype,a,btype,b,ctype,c) \
43 type name(atype a,btype b,ctype c) \
44 { \
45 long __res; \
46 __asm__ volatile ("int $0x80" \
47 : "=a" (__res) \
48 : "a" (__NR_##name),"b" ((long)(a)),"c" ((long)(b)),"d" ((long)(c))); \
49 if (__res>=0) \
50 return (type) __res; \
51 return -1; \
54 #endif /* syscall.h */