summaryrefslogtreecommitdiff
path: root/klibc/klibc/arch/cris/syscall.S
blob: d71495aba253568716cd438e8c88eff685dc1da9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/*
 * arch/cris/syscall.S
 *
 * On cris, r9 contains the syscall number (set by generated stub);
 * r10..r13 contain arguments 0-3 per the standard calling convention,
 * and arguments 4-5 are passed in $mof and $srp; however, we have
 * to save $srp around the system call.
 */

	.section ".text","ax"
	.balign	4
	.globl	__syscall_common
	.type	__syscall_common,@function
__syscall_common:
	push	$srp
	move	[$sp+4],$mof
	move	[$sp+8],$srp
	break	13

	cmps.w	-4096,$r10
	blo	1f
	neg.d	$r10,$r11
	move.d	$r11,[errno]
	moveq	-1,$r10
1:
	pop	$srp
	ret
	nop

	.size	__syscall_common,.-__syscall_common