Annotation of src/lib/libc/arch/sh3/SYS.h, Revision 1.4
1.1 msaitoh 1: /*-
2: * Copyright (c) 1990 The Regents of the University of California.
3: * All rights reserved.
4: *
5: * This code is derived from software contributed to Berkeley by
6: * William Jolitz.
7: *
8: * Redistribution and use in source and binary forms, with or without
9: * modification, are permitted provided that the following conditions
10: * are met:
11: * 1. Redistributions of source code must retain the above copyright
12: * notice, this list of conditions and the following disclaimer.
13: * 2. Redistributions in binary form must reproduce the above copyright
14: * notice, this list of conditions and the following disclaimer in the
15: * documentation and/or other materials provided with the distribution.
16: * 3. All advertising materials mentioning features or use of this software
17: * must display the following acknowledgement:
18: * This product includes software developed by the University of
19: * California, Berkeley and its contributors.
20: * 4. Neither the name of the University nor the names of its contributors
21: * may be used to endorse or promote products derived from this software
22: * without specific prior written permission.
23: *
24: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
25: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
28: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34: * SUCH DAMAGE.
35: *
36: * from: @(#)SYS.h 5.5 (Berkeley) 5/7/91
1.4 ! wiz 37: * $NetBSD: SYS.h,v 1.3 2002/05/26 11:48:03 wiz Exp $
1.1 msaitoh 38: */
39:
40: #include <machine/asm.h>
41: #include <sys/syscall.h>
42:
1.4 ! wiz 43: #ifdef __STDC__
1.1 msaitoh 44: #define SYSTRAP(x) \
45: mov.l 903f, r0; \
46: .long 0xc380; /* trapa #0x80 */ \
47: nop; \
48: bra 904f; \
49: nop; \
50: .align 2; \
51: 903: .long (SYS_ ## x); \
52: 904:
1.4 ! wiz 53: #else
! 54: #define SYSTRAP(x) \
! 55: mov.l 903f, r0; \
! 56: trapa #0x80; \
! 57: nop; \
! 58: bra 904f; \
! 59: nop; \
! 60: .align 2; \
! 61: 903: .long (SYS_/**/x); \
! 62: 904:
! 63: #endif
1.1 msaitoh 64:
65: #define _SYSCALL_NOERROR(x,y) \
66: ENTRY(x); \
67: SYSTRAP(y)
68:
69: #define _SYSCALL(x,y) \
70: .text; \
71: 911: mov.l 912f, r3; \
72: jmp @r3; \
73: nop; \
74: .align 2; \
75: 912: .long cerror; \
76: _SYSCALL_NOERROR(x,y); \
77: bf 911b; \
78: nop
79:
80: #define SYSCALL_NOERROR(x) \
81: _SYSCALL_NOERROR(x,x)
82:
83: #define SYSCALL(x) \
84: _SYSCALL(x,x)
85:
86: #define PSEUDO_NOERROR(x,y) \
87: _SYSCALL_NOERROR(x,y); \
88: rts; \
89: nop
90:
91: #define PSEUDO(x,y) \
92: _SYSCALL(x,y); \
93: rts; \
94: nop
95:
96: #define RSYSCALL_NOERROR(x) \
97: PSEUDO_NOERROR(x,x)
98:
99: #define RSYSCALL(x) \
100: PSEUDO(x,x)
1.2 thorpej 101:
102: #ifdef WEAK_ALIAS
103: #define WSYSCALL(weak,strong) \
104: WEAK_ALIAS(weak,strong); \
105: PSEUDO(strong,weak)
106: #else
107: #define WSYSCALL(weak,strong) \
108: PSEUDO(weak,weak)
109: #endif
1.1 msaitoh 110:
111: .globl cerror
CVSweb <webmaster@jp.NetBSD.org>