summaryrefslogtreecommitdiff
path: root/src/internal/superh/syscall.s
blob: a8fda1c0ff13ae64506b86ecb7d637a95dc9a8aa (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
.global __syscall
.type   __syscall, @function
__syscall:
	! The kernel syscall entry point documents that the trap number indicates
	! the number of arguments being passed, but it then ignores that information.
	! Since we do not actually know how many arguments are being passed, we will
	! say there are six, since that is the maximum we support here.
	mov r4, r3
	mov r5, r4
	mov r6, r5
	mov r7, r6
	mov.l @r15, r7
	mov.l @(4,r15), r0
	mov.l @(8,r15), r1
	trapa #22
	or r0, r0
	or r0, r0
	or r0, r0
	or r0, r0
	or r0, r0
	rts
	 nop