[BACK]Return to asm.h CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / arch / mips / include

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>