SYS.h revision 1.3
11.3Sthorpej/* $NetBSD: SYS.h,v 1.3 2002/01/14 00:55:55 thorpej Exp $ */ 21.1Sbjh21 31.1Sbjh21/*- 41.1Sbjh21 * Copyright (c) 1990 The Regents of the University of California. 51.1Sbjh21 * All rights reserved. 61.1Sbjh21 * 71.1Sbjh21 * This code is derived from software contributed to Berkeley by 81.1Sbjh21 * William Jolitz. 91.1Sbjh21 * 101.1Sbjh21 * Redistribution and use in source and binary forms, with or without 111.1Sbjh21 * modification, are permitted provided that the following conditions 121.1Sbjh21 * are met: 131.1Sbjh21 * 1. Redistributions of source code must retain the above copyright 141.1Sbjh21 * notice, this list of conditions and the following disclaimer. 151.1Sbjh21 * 2. Redistributions in binary form must reproduce the above copyright 161.1Sbjh21 * notice, this list of conditions and the following disclaimer in the 171.1Sbjh21 * documentation and/or other materials provided with the distribution. 181.1Sbjh21 * 3. All advertising materials mentioning features or use of this software 191.1Sbjh21 * must display the following acknowledgement: 201.1Sbjh21 * This product includes software developed by the University of 211.1Sbjh21 * California, Berkeley and its contributors. 221.1Sbjh21 * 4. Neither the name of the University nor the names of its contributors 231.1Sbjh21 * may be used to endorse or promote products derived from this software 241.1Sbjh21 * without specific prior written permission. 251.1Sbjh21 * 261.1Sbjh21 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 271.1Sbjh21 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 281.1Sbjh21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 291.1Sbjh21 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 301.1Sbjh21 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 311.1Sbjh21 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 321.1Sbjh21 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 331.1Sbjh21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 341.1Sbjh21 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 351.1Sbjh21 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 361.1Sbjh21 * SUCH DAMAGE. 371.1Sbjh21 * 381.1Sbjh21 * from: @(#)SYS.h 5.5 (Berkeley) 5/7/91 391.1Sbjh21 */ 401.1Sbjh21 411.1Sbjh21#include <machine/asm.h> 421.1Sbjh21#include <sys/syscall.h> 431.1Sbjh21 441.1Sbjh21#ifdef __STDC__ 451.1Sbjh21#define SYSTRAP(x) swi SYS_ ## x 461.1Sbjh21#else 471.1Sbjh21#define SYSTRAP(x) swi SYS_/**/x 481.1Sbjh21#endif 491.1Sbjh21 501.2Smatt#ifdef __ELF__ 511.2Smatt#define CERROR _C_LABEL(__cerror) 521.2Smatt#define CURBRK _C_LABEL(__curbrk) 531.2Smatt#else 541.2Smatt#define CERROR _ASM_LABEL(cerror) 551.2Smatt#define CURBRK _ASM_LABEL(curbrk) 561.2Smatt#endif 571.2Smatt 581.1Sbjh21#define _SYSCALL_NOERROR(x,y) \ 591.1Sbjh21 ENTRY(x); \ 601.1Sbjh21 SYSTRAP(y) 611.1Sbjh21 621.1Sbjh21#define _SYSCALL(x, y) \ 631.1Sbjh21 _SYSCALL_NOERROR(x,y); \ 641.2Smatt bcs PIC_SYM(CERROR, PLT) 651.1Sbjh21 661.1Sbjh21#define SYSCALL_NOERROR(x) \ 671.1Sbjh21 _SYSCALL_NOERROR(x,x) 681.1Sbjh21 691.1Sbjh21#define SYSCALL(x) \ 701.1Sbjh21 _SYSCALL(x,x) 711.1Sbjh21 721.1Sbjh21#ifdef __APCS_26__ 731.1Sbjh21 741.1Sbjh21#define PSEUDO_NOERROR(x,y) \ 751.1Sbjh21 _SYSCALL_NOERROR(x,y); \ 761.1Sbjh21 movs r15, r14 771.1Sbjh21 781.1Sbjh21#define PSEUDO(x,y) \ 791.1Sbjh21 _SYSCALL(x,y); \ 801.1Sbjh21 movs r15, r14 811.1Sbjh21 821.1Sbjh21#else /* !__APCS_26__ */ 831.1Sbjh21 841.1Sbjh21#define PSEUDO_NOERROR(x,y) \ 851.1Sbjh21 _SYSCALL_NOERROR(x,y); \ 861.1Sbjh21 mov r15, r14 871.1Sbjh21 881.1Sbjh21#define PSEUDO(x,y) \ 891.1Sbjh21 _SYSCALL(x,y); \ 901.1Sbjh21 mov r15, r14 911.1Sbjh21 921.1Sbjh21#endif /* !__APCS_26__ */ 931.1Sbjh21 941.1Sbjh21#define RSYSCALL_NOERROR(x) \ 951.1Sbjh21 PSEUDO_NOERROR(x,x) 961.1Sbjh21 971.1Sbjh21#define RSYSCALL(x) \ 981.1Sbjh21 PSEUDO(x,x) 991.3Sthorpej 1001.3Sthorpej#ifdef WEAK_ALIAS 1011.3Sthorpej#define WSYSCALL(weak,strong) \ 1021.3Sthorpej WEAK_ALIAS(weak,strong); \ 1031.3Sthorpej PSEUDO(strong,weak) 1041.3Sthorpej#else 1051.3Sthorpej#define WSYSCALL(weak,strong) \ 1061.3Sthorpej PSEUDO(weak,weak) 1071.3Sthorpej#endif 1081.1Sbjh21 1091.2Smatt .globl CERROR 110