diff options
Diffstat (limited to 'mdk-stage1/dietlibc/syscalls.h')
-rw-r--r-- | mdk-stage1/dietlibc/syscalls.h | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/mdk-stage1/dietlibc/syscalls.h b/mdk-stage1/dietlibc/syscalls.h new file mode 100644 index 000000000..5e9782ee9 --- /dev/null +++ b/mdk-stage1/dietlibc/syscalls.h @@ -0,0 +1,82 @@ +#ifdef __ASSEMBLER__ + +#include <asm/unistd.h> + +#else + +#include <linux/unistd.h> + +#endif + +#ifdef __i386__ + +#define syscall(name,sym) \ +.text; \ +.global sym; \ +sym: \ + movb $__NR_##name,%al; \ + jmp __unified_syscall + +#endif + +#ifdef __sparc__ + +#define syscall(name,sym) \ +.text; \ +.global sym; \ +sym: \ + b __unified_syscall; \ + mov __NR_##name, %g1 + +#endif + +#ifdef __powerpc__ + +#define syscall(name,sym) \ +.text; \ +.global sym; \ +sym: \ + li 0,__NR_##name; \ + b __unified_syscall + +#endif + + +#ifdef __mips__ + +#define syscall(name,sym) \ +.text; \ +.global sym; \ +.ent sym; \ +sym: \ + li $2,__NR_##name; \ + la $25,__unified_syscall; \ + jr $25; \ +.end sym + +#endif + +#ifdef __arm__ + +#define syscall(name,sym) \ +.text; \ +.global sym; \ +sym: \ + swi __NR_##name; \ + b __unified_syscall + +#endif + + +#ifdef __alpha__ + +#define syscall(name,sym) \ +.text ; \ +.align 2 ; \ +.global sym ; \ +.type sym,@function ; \ +sym: ; \ + lda $0, __NR_##name($31) ; \ + br __unified_syscall + +#endif |