1/* Copyright (C) 2000-2021 Free Software Foundation, Inc.
2   This file is part of the GNU C Library.
3
4   The GNU C Library is free software; you can redistribute it and/or
5   modify it under the terms of the GNU Lesser General Public
6   License as published by the Free Software Foundation; either
7   version 2.1 of the License, or (at your option) any later version.
8
9   The GNU C Library is distributed in the hope that it will be useful,
10   but WITHOUT ANY WARRANTY; without even the implied warranty of
11   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12   Lesser General Public License for more details.
13
14   You should have received a copy of the GNU Lesser General Public
15   License along with the GNU C Library; if not, see
16   <https://www.gnu.org/licenses/>.  */
17
18#include <sysdep.h>
19
20ENTRY (__syscall)
21	mov	r4, r3			// syscall number
22	mov	r5, r4			// p1
23	mov	r6, r5			// p2
24	mov	r7, r6			// p3
25	mov.l	@r15, r7		// p4
26	mov.l	@(4,r15), r0		// p5
27	mov.l	@(8,r15), r1		// p6
28	mov.l	@(12,r15), r2		// p7
29	trapa	#0x17
30	mov     r0, r1
31	mov	#-12, r2
32	shad	r2, r1
33	not	r1, r1			// r1=0 means r0 = -1 to -4095
34	tst	r1, r1			// i.e. error in linux
35	bf	.Lpseudo_end
36	SYSCALL_ERROR_HANDLER
37.Lpseudo_end:
38	rts
39	 nop
40
41PSEUDO_END (__syscall)
42
43weak_alias (__syscall, syscall)
44