1129202Scognet/*	$NetBSD: SYS.h,v 1.8 2003/08/07 16:42:02 agc Exp $	*/
2129202Scognet
3129202Scognet/*-
4129202Scognet * Copyright (c) 1990 The Regents of the University of California.
5129202Scognet * All rights reserved.
6129202Scognet *
7129202Scognet * This code is derived from software contributed to Berkeley by
8129202Scognet * William Jolitz.
9129202Scognet *
10129202Scognet * Redistribution and use in source and binary forms, with or without
11129202Scognet * modification, are permitted provided that the following conditions
12129202Scognet * are met:
13129202Scognet * 1. Redistributions of source code must retain the above copyright
14129202Scognet *    notice, this list of conditions and the following disclaimer.
15129202Scognet * 2. Redistributions in binary form must reproduce the above copyright
16129202Scognet *    notice, this list of conditions and the following disclaimer in the
17129202Scognet *    documentation and/or other materials provided with the distribution.
18129202Scognet * 3. Neither the name of the University nor the names of its contributors
19129202Scognet *    may be used to endorse or promote products derived from this software
20129202Scognet *    without specific prior written permission.
21129202Scognet *
22129202Scognet * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
23129202Scognet * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24129202Scognet * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25129202Scognet * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
26129202Scognet * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27129202Scognet * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28129202Scognet * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29129202Scognet * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30129202Scognet * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31129202Scognet * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32129202Scognet * SUCH DAMAGE.
33129202Scognet *
34129202Scognet *	from: @(#)SYS.h	5.5 (Berkeley) 5/7/91
35129202Scognet * $FreeBSD$
36129202Scognet */
37129202Scognet
38129202Scognet#include <machine/asm.h>
39129202Scognet#include <sys/syscall.h>
40129202Scognet#include <machine/swi.h>
41129202Scognet
42129202Scognet#define SYSTRAP(x)	swi 0 | SYS_ ## x
43129202Scognet
44129202Scognet#define	CERROR		_C_LABEL(cerror)
45129202Scognet#define	CURBRK		_C_LABEL(curbrk)
46129202Scognet
47129202Scognet#define _SYSCALL_NOERROR(x)						\
48129202Scognet	ENTRY(__CONCAT(__sys_, x));					\
49129202Scognet	.weak _C_LABEL(x);						\
50129202Scognet	.set _C_LABEL(x), _C_LABEL(__CONCAT(__sys_,x));			\
51129202Scognet	.weak _C_LABEL(__CONCAT(_,x));					\
52129202Scognet	.set _C_LABEL(__CONCAT(_,x)),_C_LABEL(__CONCAT(__sys_,x));	\
53129202Scognet	SYSTRAP(x)
54129202Scognet
55129202Scognet#define _SYSCALL(x)							\
56129202Scognet	_SYSCALL_NOERROR(x);						\
57129202Scognet	bcs PIC_SYM(CERROR, PLT)
58129202Scognet
59129202Scognet#define SYSCALL(x)							\
60129202Scognet	_SYSCALL(x)
61129202Scognet
62171217Speter#define PSEUDO(x)							\
63171217Speter	ENTRY(__CONCAT(__sys_, x));					\
64171217Speter	.weak _C_LABEL(__CONCAT(_,x));					\
65171217Speter	.set _C_LABEL(__CONCAT(_,x)),_C_LABEL(__CONCAT(__sys_,x));	\
66171261Speter	SYSTRAP(x);							\
67171261Speter	bcs PIC_SYM(CERROR, PLT);					\
68137464Scognet	RET
69129202Scognet
70171217Speter#define RSYSCALL(x)							\
71129202Scognet	_SYSCALL(x);							\
72137464Scognet	RET
73129202Scognet
74129202Scognet	.globl  CERROR
75