Annotation of src/lib/libc/arch/sh3/SYS.h, Revision 1.5
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.5 ! marcus 37: * $NetBSD: SYS.h,v 1.4 2002/05/26 12:24:58 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:
1.5 ! marcus 69: #ifdef PIC
! 70: #define _SYSCALL(x,y) \
! 71: .text; \
! 72: 911: mov.l 912f, r3; \
! 73: braf r3; \
! 74: nop; \
! 75: .align 2; \
! 76: 912: .long cerror-(911b+6); \
! 77: _SYSCALL_NOERROR(x,y); \
! 78: bf 911b; \
! 79: nop
! 80: #else
1.1 msaitoh 81: #define _SYSCALL(x,y) \
82: .text; \
83: 911: mov.l 912f, r3; \
84: jmp @r3; \
85: nop; \
86: .align 2; \
87: 912: .long cerror; \
88: _SYSCALL_NOERROR(x,y); \
89: bf 911b; \
90: nop
1.5 ! marcus 91: #endif
1.1 msaitoh 92:
93: #define SYSCALL_NOERROR(x) \
94: _SYSCALL_NOERROR(x,x)
95:
96: #define SYSCALL(x) \
97: _SYSCALL(x,x)
98:
99: #define PSEUDO_NOERROR(x,y) \
100: _SYSCALL_NOERROR(x,y); \
101: rts; \
102: nop
103:
104: #define PSEUDO(x,y) \
105: _SYSCALL(x,y); \
106: rts; \
107: nop
108:
109: #define RSYSCALL_NOERROR(x) \
110: PSEUDO_NOERROR(x,x)
111:
112: #define RSYSCALL(x) \
113: PSEUDO(x,x)
1.2 thorpej 114:
115: #ifdef WEAK_ALIAS
116: #define WSYSCALL(weak,strong) \
117: WEAK_ALIAS(weak,strong); \
118: PSEUDO(strong,weak)
119: #else
120: #define WSYSCALL(weak,strong) \
121: PSEUDO(weak,weak)
122: #endif
1.1 msaitoh 123:
124: .globl cerror
CVSweb <webmaster@jp.NetBSD.org>