Annotation of src/sys/arch/mips/include/asm.h, Revision 1.9
1.9 ! christos 1: /* $NetBSD: asm.h,v 1.8 1996/03/25 02:50:50 jonathan Exp $ */
1.4 cgd 2:
1.1 deraadt 3: /*
1.2 glass 4: * Copyright (c) 1992, 1993
5: * The Regents of the University of California. All rights reserved.
1.1 deraadt 6: *
7: * This code is derived from software contributed to Berkeley by
8: * Ralph Campbell.
9: *
10: * Redistribution and use in source and binary forms, with or without
11: * modification, are permitted provided that the following conditions
12: * are met:
13: * 1. Redistributions of source code must retain the above copyright
14: * notice, this list of conditions and the following disclaimer.
15: * 2. Redistributions in binary form must reproduce the above copyright
16: * notice, this list of conditions and the following disclaimer in the
17: * documentation and/or other materials provided with the distribution.
18: * 3. All advertising materials mentioning features or use of this software
19: * must display the following acknowledgement:
20: * This product includes software developed by the University of
21: * California, Berkeley and its contributors.
22: * 4. Neither the name of the University nor the names of its contributors
23: * may be used to endorse or promote products derived from this software
24: * without specific prior written permission.
25: *
26: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
27: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
29: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
30: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
31: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
32: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
34: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
35: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
36: * SUCH DAMAGE.
37: *
1.4 cgd 38: * @(#)machAsmDefs.h 8.1 (Berkeley) 6/10/93
1.1 deraadt 39: */
40:
41: /*
42: * machAsmDefs.h --
43: *
44: * Macros used when writing assembler programs.
45: *
46: * Copyright (C) 1989 Digital Equipment Corporation.
47: * Permission to use, copy, modify, and distribute this software and
48: * its documentation for any purpose and without fee is hereby granted,
49: * provided that the above copyright notice appears in all copies.
50: * Digital Equipment Corporation makes no representations about the
51: * suitability of this software for any purpose. It is provided "as is"
52: * without express or implied warranty.
53: *
54: * from: Header: /sprite/src/kernel/mach/ds3100.md/RCS/machAsmDefs.h,
1.2 glass 55: * v 1.2 89/08/15 18:28:24 rab Exp SPRITE (DECWRL)
1.1 deraadt 56: */
57:
1.8 jonathan 58: #ifndef _MIPS_ASM_H
59: #define _MIPS_ASM_H
1.1 deraadt 60:
61: #include <machine/regdef.h>
62:
63: /*
64: * Define -pg profile entry code.
65: */
1.2 glass 66: #if defined(GPROF) || defined(PROF)
1.1 deraadt 67: #define MCOUNT .set noreorder; \
68: .set noat; \
69: move $1,$31; \
70: jal _mcount; \
71: subu sp,sp,8; \
72: .set reorder; \
73: .set at;
74: #else
75: #define MCOUNT
1.2 glass 76: #endif
1.1 deraadt 77:
1.7 mellon 78: #ifdef __NO_LEADING_UNDERSCORES__
1.6 mycroft 79: # define _C_LABEL(x) x
80: #else
81: # ifdef __STDC__
82: # define _C_LABEL(x) _ ## x
83: # else
84: # define _C_LABEL(x) _/**/x
85: # endif
86: #endif
87:
1.1 deraadt 88: /*
89: * LEAF(x)
90: *
91: * Declare a leaf routine.
92: */
93: #define LEAF(x) \
1.6 mycroft 94: .globl _C_LABEL(x); \
95: .ent _C_LABEL(x), 0; \
96: _C_LABEL(x): ; \
1.1 deraadt 97: .frame sp, 0, ra; \
98: MCOUNT
99:
100: /*
101: * NLEAF(x)
102: *
103: * Declare a non-profiled leaf routine.
104: */
105: #define NLEAF(x) \
1.6 mycroft 106: .globl _C_LABEL(x); \
107: .ent _C_LABEL(x), 0; \
108: _C_LABEL(x): ; \
1.1 deraadt 109: .frame sp, 0, ra
110:
111: /*
112: * ALEAF -- declare alternate entry to a leaf routine.
113: */
1.7 mellon 114: #ifdef USE_AENT
115: #define AENT(x) \
116: .aent x, 0
117: #else
118: #define AENT(x)
119: #endif
1.1 deraadt 120: #define ALEAF(x) \
1.6 mycroft 121: .globl _C_LABEL(x); \
1.7 mellon 122: AENT (_C_LABEL(x)) \
1.6 mycroft 123: _C_LABEL(x):
1.1 deraadt 124:
125: /*
126: * NON_LEAF(x)
127: *
128: * Declare a non-leaf routine (a routine that makes other C calls).
129: */
130: #define NON_LEAF(x, fsize, retpc) \
1.6 mycroft 131: .globl _C_LABEL(x); \
132: .ent _C_LABEL(x), 0; \
133: _C_LABEL(x): ; \
1.1 deraadt 134: .frame sp, fsize, retpc; \
135: MCOUNT
1.2 glass 136:
137: /*
138: * NNON_LEAF(x)
139: *
140: * Declare a non-profiled non-leaf routine
141: * (a routine that makes other C calls).
142: */
143: #define NNON_LEAF(x, fsize, retpc) \
1.6 mycroft 144: .globl _C_LABEL(x); \
145: .ent _C_LABEL(x), 0; \
146: _C_LABEL(x): ; \
1.2 glass 147: .frame sp, fsize, retpc
1.1 deraadt 148:
149: /*
150: * END(x)
151: *
152: * Mark end of a procedure.
153: */
154: #define END(x) \
1.6 mycroft 155: .end _C_LABEL(x)
1.1 deraadt 156:
157: #define STAND_FRAME_SIZE 24
158: #define STAND_RA_OFFSET 20
159:
160: /*
1.9 ! christos 161: * Macros to panic and kprintf from assembly language.
1.1 deraadt 162: */
163: #define PANIC(msg) \
164: la a0, 9f; \
1.6 mycroft 165: jal _C_LABEL(panic); \
1.1 deraadt 166: MSG(msg)
167:
168: #define PRINTF(msg) \
169: la a0, 9f; \
1.9 ! christos 170: jal _C_LABEL(kprintf); \
1.1 deraadt 171: MSG(msg)
172:
173: #define MSG(msg) \
174: .rdata; \
175: 9: .asciiz msg; \
176: .text
177:
178: #define ASMSTR(str) \
179: .asciiz str; \
180: .align 2
181:
1.8 jonathan 182: #endif /* _MIPS_ASM_H */
CVSweb <webmaster@jp.NetBSD.org>