xref: /netbsd-src/lib/libc/arch/or1k/sys/__syscall.S (revision 77abcafc06acf32ff7f9d66654bcf4d2a02cae84)
1*77abcafcSthorpej/*	$NetBSD: __syscall.S,v 1.2 2020/04/18 23:55:51 thorpej Exp $	*/
227620987Smatt
327620987Smatt#include <machine/asm.h>
427620987Smatt
527620987SmattENTRY(__syscall)
627620987Smatt	l.or	r13,r3,r0		/* syscall number */
727620987Smatt	l.or	r3,r4,r0
827620987Smatt	l.or	r4,r5,r0
927620987Smatt	l.or	r5,r6,r0
1027620987Smatt	l.or	r6,r7,r0
1127620987Smatt	l.or	r7,r8,r0
1227620987Smatt	// at most 5 arguments can be passed via registers so the others
1327620987Smatt	// must be on the stack.
1427620987Smatt	l.lwz	r8,0(r1)
1527620987Smatt	l.lwz	r11,4(r1)		/* use return value regs for last 2 */
1627620987Smatt	l.lwz	r12,8(r1)		/* use return value regs for last 2 */
1727620987Smatt	l.sys	0
1827620987Smatt	l.bf	_C_LABEL(__cerror)
1927620987Smatt	l.nop
2027620987Smatt	l.jr	lr
2127620987Smatt	l.nop
2227620987SmattEND(__syscall)
2327620987Smatt
24*77abcafcSthorpejSTRONG_ALIAS(_syscall,__syscall)
25*77abcafcSthorpejWEAK_ALIAS(syscall,__syscall)
26