#ifdef __ASSEMBLER__ #include #else #include #endif #ifdef __i386__ #define syscall_weak(name,wsym,sym) \ .text; \ .weak wsym; \ wsym: ; \ .global sym; \ sym: \ movb $__NR_##name,%al; \ jmp __unified_syscall #define syscall(name,sym) \ .text; \ .global sym; \ sym: \ movb $__NR_##name,%al; \ jmp __unified_syscall #endif #ifdef __sparc__ #define syscall_weak(name,wsym,sym) \ .text; \ .weak wsym; \ wsym: ; \ .global sym; \ sym: \ b __unified_syscall; \ mov __NR_##name, %g1 #define syscall(name,sym) \ .text; \ .global sym; \ sym: \ b __unified_syscall; \ mov __NR_##name, %g1 #endif #ifdef __powerpc__ #define syscall_weak(name,wsym,sym) \ .text; \ .weak wsym; \ wsym: ; \ .global sym; \ sym: \ li 0,__NR_##name; \ b __unified_syscall #define syscall(name,sym) \ .text; \ .global sym; \ sym: \ li 0,__NR_##name; \ b __unified_syscall #endif #ifdef __mips__ #define syscall_weak(name,wsym,sym) \ .text; \ .weak wsym; \ wsym: ; \ .global sym; \ .ent sym; \ sym: \ li $2,__NR_##name; \ la $25,__unified_syscall; \ jr $25; \ .end sym #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_weak(name,wsym,sym) \ .text; \ .weak wsym; \ wsym: ; \ .global sym; \ sym: \ swi __NR_##name; \ b __unified_syscall #define syscall(name,sym) \ .text; \ .global sym; \ sym: \ swi __NR_##name; \ b __unified_syscall #endif #ifdef __alpha__ #define syscall_weak(name,wsym,sym) \ .text ; \ .align 2 ; \ .weak wsym; \ .type wsym,@function ; \ wsym: ; \ .global sym ; \ .type sym,@function ; \ sym: ; \ lda $0, __NR_##name($31) ; \ br __unified_syscall #define syscall(name,sym) \ .text ; \ .align 2 ; \ .global sym ; \ .type sym,@function ; \ sym: ; \ lda $0, __NR_##name($31) ; \ br __unified_syscall #endif