119 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			119 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
SYS.h
 | 
						|
*/
 | 
						|
 | 
						|
#ifndef SYS_H
 | 
						|
#define SYS_H
 | 
						|
 | 
						|
#define SYS_call_0(x) \
 | 
						|
	LABEL_(x); \
 | 
						|
	BODY(x)
 | 
						|
 | 
						|
#define _SYS_call_0(x) \
 | 
						|
	LABEL__(x); \
 | 
						|
	BODY(x)
 | 
						|
 | 
						|
#define SYS_call_1(x) \
 | 
						|
	LABEL_(x); \
 | 
						|
	ENTRY1; \
 | 
						|
	BODY(x)
 | 
						|
 | 
						|
#define _SYS_call_1(x) \
 | 
						|
	LABEL__(x); \
 | 
						|
	ENTRY1; \
 | 
						|
	BODY(x)
 | 
						|
 | 
						|
#define SYS_call_2(x) \
 | 
						|
	LABEL_(x); \
 | 
						|
	ENTRY2; \
 | 
						|
	BODY(x)
 | 
						|
 | 
						|
#define _SYS_call_2(x) \
 | 
						|
	LABEL__(x); \
 | 
						|
	ENTRY2; \
 | 
						|
	BODY(x)
 | 
						|
 | 
						|
#define SYS_call_3(x) \
 | 
						|
	LABEL_(x); \
 | 
						|
	ENTRY3; \
 | 
						|
	BODY(x)
 | 
						|
 | 
						|
#define _SYS_call_3(x) \
 | 
						|
	LABEL__(x); \
 | 
						|
	ENTRY3; \
 | 
						|
	BODY(x)
 | 
						|
 | 
						|
#define SYS_call_4(x) \
 | 
						|
	LABEL_(x); \
 | 
						|
	ENTRY4; \
 | 
						|
	BODY(x)
 | 
						|
 | 
						|
#define _SYS_call_4(x) \
 | 
						|
	LABEL__(x); \
 | 
						|
	ENTRY4; \
 | 
						|
	BODY(x)
 | 
						|
 | 
						|
#define SYS_call_5(x) \
 | 
						|
	LABEL_(x); \
 | 
						|
	ENTRY5; \
 | 
						|
	BODY(x)
 | 
						|
 | 
						|
#define _SYS_call_5(x) \
 | 
						|
	LABEL__(x); \
 | 
						|
	ENTRY5; \
 | 
						|
	BODY(x)
 | 
						|
 | 
						|
#define SYS_call_6(x) \
 | 
						|
	LABEL_(x); \
 | 
						|
	ENTRY6; \
 | 
						|
	BODY(x)
 | 
						|
 | 
						|
#define _SYS_call_6(x) \
 | 
						|
	LABEL__(x); \
 | 
						|
	ENTRY6; \
 | 
						|
	BODY(x)
 | 
						|
 | 
						|
#define BODY(x) \
 | 
						|
	b x; \
 | 
						|
	nop
 | 
						|
 | 
						|
#if __STDC__
 | 
						|
#define LABEL_(x) \
 | 
						|
	.global $ ## x; \
 | 
						|
	$ ## x:
 | 
						|
#define LABEL__(x) \
 | 
						|
	.global $_ ## x; \
 | 
						|
	$_ ## x:
 | 
						|
#else
 | 
						|
#define LABEL_(x) \
 | 
						|
	.global $/**/x; \
 | 
						|
	$/**/x:
 | 
						|
#define LABEL__(x) \
 | 
						|
	.global $_/**/x; \
 | 
						|
	$_/**/x:
 | 
						|
#endif
 | 
						|
 | 
						|
#define ENTRY1 \
 | 
						|
	ld	[%l0], %o0 \
 | 
						|
 | 
						|
#define ENTRY2 \
 | 
						|
	ENTRY1; \
 | 
						|
	ld	[%l0+4], %o1 \
 | 
						|
 | 
						|
#define ENTRY3 \
 | 
						|
	ENTRY2; \
 | 
						|
	ld	[%l0+8], %o2 \
 | 
						|
 | 
						|
#define ENTRY4 \
 | 
						|
	ENTRY3; \
 | 
						|
	ld	[%l0+12], %o3 \
 | 
						|
 | 
						|
#define ENTRY5 \
 | 
						|
	ENTRY4; \
 | 
						|
	ld	[%l0+16], %o4 \
 | 
						|
 | 
						|
#define ENTRY6 \
 | 
						|
	ENTRY5; \
 | 
						|
	ld	[%l0+20], %o5 \
 | 
						|
 | 
						|
#endif /* SYS_H */
 |