Home | History | Annotate | Line # | Download | only in powerpc
SYS.h revision 1.12
      1 /*	$NetBSD: SYS.h,v 1.12 2011/01/15 07:31:12 matt Exp $	*/
      2 
      3 #include <machine/asm.h>
      4 #include <sys/syscall.h>
      5 
      6 #ifdef __STDC__
      7 #define	_DOSYSCALL(x)		li	%r0,(SYS_ ## x)		;\
      8 				sc
      9 #else
     10 #define	_DOSYSCALL(x)		li	%r0,(SYS_/**/x)		;\
     11 				sc
     12 #endif /* __STDC__ */
     13 
     14 #define	_SYSCALL_NOERROR(x,y)	.text				;\
     15 				.align	2			;\
     16 			ENTRY(x)				;\
     17 				_DOSYSCALL(y)
     18 
     19 #define _SYSCALL(x,y)		.text				;\
     20 				.align	2			;\
     21 			2:	b	_C_LABEL(__cerror)	;\
     22 				_SYSCALL_NOERROR(x,y)		;\
     23 				bso	2b
     24 
     25 #define SYSCALL_NOERROR(x)	_SYSCALL_NOERROR(x,x)
     26 
     27 #define SYSCALL(x)		_SYSCALL(x,x)
     28 
     29 #define PSEUDO_NOERROR(x,y)	_SYSCALL_NOERROR(x,y)		;\
     30 				blr				;\
     31 				END(x)
     32 
     33 #define PSEUDO(x,y)		_SYSCALL_NOERROR(x,y)		;\
     34 				bnslr				;\
     35 				b	_C_LABEL(__cerror)	;\
     36 				END(x)
     37 
     38 #define RSYSCALL_NOERROR(x)	PSEUDO_NOERROR(x,x)
     39 
     40 #define RSYSCALL(x)		PSEUDO(x,x)
     41 
     42 #define	WSYSCALL(weak,strong)	WEAK_ALIAS(weak,strong)		;\
     43 				PSEUDO(strong,weak)
     44