xref: /openbsd-src/lib/libc/arch/amd64/sys/syscall.S (revision ce38bb7aeaffe4a092993e3c0db0f802ae5d1ee5)
1*ce38bb7aSguenther/*	$OpenBSD: syscall.S,v 1.9 2023/05/11 19:35:50 guenther Exp $	*/
2118f6189Smickey/*	$NetBSD: syscall.S,v 1.2 2002/06/03 18:30:33 fvdl Exp $	*/
3118f6189Smickey
4118f6189Smickey/*-
5118f6189Smickey * Copyright (c) 1990 The Regents of the University of California.
6118f6189Smickey * All rights reserved.
7118f6189Smickey *
8118f6189Smickey * This code is derived from software contributed to Berkeley by
9118f6189Smickey * William Jolitz.
10118f6189Smickey *
11118f6189Smickey * Redistribution and use in source and binary forms, with or without
12118f6189Smickey * modification, are permitted provided that the following conditions
13118f6189Smickey * are met:
14118f6189Smickey * 1. Redistributions of source code must retain the above copyright
15118f6189Smickey *    notice, this list of conditions and the following disclaimer.
16118f6189Smickey * 2. Redistributions in binary form must reproduce the above copyright
17118f6189Smickey *    notice, this list of conditions and the following disclaimer in the
18118f6189Smickey *    documentation and/or other materials provided with the distribution.
1924fdaee6Sjsg * 3. Neither the name of the University nor the names of its contributors
20118f6189Smickey *    may be used to endorse or promote products derived from this software
21118f6189Smickey *    without specific prior written permission.
22118f6189Smickey *
23118f6189Smickey * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
24118f6189Smickey * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25118f6189Smickey * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26118f6189Smickey * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
27118f6189Smickey * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28118f6189Smickey * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29118f6189Smickey * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30118f6189Smickey * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31118f6189Smickey * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32118f6189Smickey * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33118f6189Smickey * SUCH DAMAGE.
34118f6189Smickey *
35118f6189Smickey *	from: @(#)syscall.s	5.1 (Berkeley) 4/23/90
36118f6189Smickey */
37118f6189Smickey
38118f6189Smickey#include <machine/asm.h>
39118f6189Smickey
40118f6189Smickey#include "SYS.h"
41118f6189Smickey
42*ce38bb7aSguentherSYSENTRY(syscall)
43*ce38bb7aSguenther	RETGUARD_SETUP(_thread_sys_syscall, r11)
44*ce38bb7aSguenther#ifdef _RET_PROTECTOR
45*ce38bb7aSguenther	pushq	8(%rsp)		/* repush 6th argument */
46*ce38bb7aSguenther#endif
47*ce38bb7aSguenther	RETGUARD_PUSH(r11)
48*ce38bb7aSguenther	SYSTRAP(syscall)
49*ce38bb7aSguenther	HANDLE_ERRNO;
50*ce38bb7aSguenther	RETGUARD_POP(r11)
51*ce38bb7aSguenther#ifdef _RET_PROTECTOR
52*ce38bb7aSguenther	addq	$8,%rsp		/* repush 6th argument */
53*ce38bb7aSguenther#endif
54*ce38bb7aSguenther	RETGUARD_CHECK(_thread_sys_syscall, r11)
55*ce38bb7aSguenther	ret
56*ce38bb7aSguentherSYSCALL_END(syscall)
57