xref: /openbsd-src/lib/libc/arch/m88k/DEFS.h (revision 5bcead818ba71dc1c4fad02a24986a5b47ae1c58)
1*5bcead81Skettenis /*	$OpenBSD: DEFS.h,v 1.5 2023/12/11 22:24:15 kettenis Exp $ */
2443998a4Ssmurph 
3443998a4Ssmurph #include <machine/asm.h>
4ed4704d9Sguenther 
5ed4704d9Sguenther /*
6ed4704d9Sguenther  * We define a hidden alias with the prefix "_libc_" for each global symbol
7ed4704d9Sguenther  * that may be used internally.  By referencing _libc_x instead of x, other
8ed4704d9Sguenther  * parts of libc prevent overriding by the application and avoid unnecessary
9ed4704d9Sguenther  * relocations.
10ed4704d9Sguenther  */
11ed4704d9Sguenther #define _HIDDEN(x)		_libc_##x
12ed4704d9Sguenther #define _HIDDEN_ALIAS(x,y)			\
13ed4704d9Sguenther 	STRONG_ALIAS(_HIDDEN(x),y);		\
14ed4704d9Sguenther 	.hidden _HIDDEN(x)
15ed4704d9Sguenther #define _HIDDEN_FALIAS(x,y)			\
16ed4704d9Sguenther 	_HIDDEN_ALIAS(x,y);			\
17ed4704d9Sguenther 	.type _HIDDEN(x),@function
18ed4704d9Sguenther 
19ed4704d9Sguenther /*
20ed4704d9Sguenther  * For functions implemented in ASM that aren't syscalls.
21ed4704d9Sguenther  *   END_STRONG(x)	Like DEF_STRONG() in C; for standard/reserved C names
22ed4704d9Sguenther  *   END_WEAK(x)	Like DEF_WEAK() in C; for non-ISO C names
23ed4704d9Sguenther  */
24ed4704d9Sguenther #define	END_STRONG(x)	END(x); _HIDDEN_FALIAS(x,x); END(_HIDDEN(x))
25ed4704d9Sguenther #define	END_WEAK(x)	END_STRONG(x); .weak x
2683762a71Sderaadt 
2783762a71Sderaadt #define PINSYSCALL(sysno, label)					\
2883762a71Sderaadt 	.pushsection .openbsd.syscalls,"",@progbits;			\
29*5bcead81Skettenis 	.p2align 2;							\
3083762a71Sderaadt 	.long label;							\
3183762a71Sderaadt 	.long sysno;							\
3283762a71Sderaadt 	.popsection;
33