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