Home | History | Annotate | Line # | Download | only in include
asm.h revision 1.8
      1  1.8     skrll /*	$NetBSD: asm.h,v 1.8 2007/11/12 12:58:11 skrll Exp $	*/
      2  1.1  fredette 
      3  1.1  fredette /*	$OpenBSD: asm.h,v 1.12 2001/03/29 02:15:57 mickey Exp $	*/
      4  1.1  fredette 
      5  1.1  fredette /*
      6  1.1  fredette  * Copyright (c) 1990,1991,1994 The University of Utah and
      7  1.1  fredette  * the Computer Systems Laboratory (CSL).  All rights reserved.
      8  1.1  fredette  *
      9  1.1  fredette  * Permission to use, copy, modify and distribute this software is hereby
     10  1.1  fredette  * granted provided that (1) source code retains these copyright, permission,
     11  1.1  fredette  * and disclaimer notices, and (2) redistributions including binaries
     12  1.1  fredette  * reproduce the notices in supporting documentation, and (3) all advertising
     13  1.1  fredette  * materials mentioning features or use of this software display the following
     14  1.1  fredette  * acknowledgement: ``This product includes software developed by the
     15  1.1  fredette  * Computer Systems Laboratory at the University of Utah.''
     16  1.1  fredette  *
     17  1.1  fredette  * THE UNIVERSITY OF UTAH AND CSL ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS
     18  1.1  fredette  * IS" CONDITION.  THE UNIVERSITY OF UTAH AND CSL DISCLAIM ANY LIABILITY OF
     19  1.1  fredette  * ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
     20  1.1  fredette  *
     21  1.1  fredette  * CSL requests users of this software to return to csl-dist (at) cs.utah.edu any
     22  1.1  fredette  * improvements that they make and grant CSL redistribution rights.
     23  1.1  fredette  *
     24  1.1  fredette  *	Utah $Hdr: asm.h 1.8 94/12/14$
     25  1.1  fredette  */
     26  1.1  fredette 
     27  1.1  fredette #ifndef _HPPA_ASM_H_
     28  1.1  fredette #define _HPPA_ASM_H_
     29  1.1  fredette 
     30  1.8     skrll #include <machine/frame.h>
     31  1.1  fredette /*
     32  1.1  fredette  *	hppa assembler definitions
     33  1.1  fredette  */
     34  1.1  fredette 
     35  1.1  fredette #ifdef __STDC__
     36  1.1  fredette #define	__CONCAT(a,b)	a ## b
     37  1.1  fredette #else
     38  1.1  fredette #define	__CONCAT(a,b)	a/**/b
     39  1.1  fredette #endif
     40  1.1  fredette 
     41  1.8     skrll #define	LEAF_ENTRY_NOPROFILE(x)				!\
     42  1.8     skrll 	 ! .text ! .align 4				!\
     43  1.1  fredette 	.export	x, entry ! .label x ! .proc		!\
     44  1.8     skrll 	.callinfo frame=0, no_calls, save_rp		!\
     45  1.8     skrll 	.entry
     46  1.2   thorpej 
     47  1.8     skrll #define	ENTRY_NOPROFILE(x,n)				!\
     48  1.8     skrll 	 ! .text ! .align 4				!\
     49  1.2   thorpej 	.export x, entry ! .label x ! .proc		!\
     50  1.8     skrll 	.callinfo frame=n, calls, save_rp, save_sp	!\
     51  1.2   thorpej 	.entry
     52  1.1  fredette 
     53  1.8     skrll #ifdef GPROF
     54  1.8     skrll 
     55  1.8     skrll #define	_PROF_PROLOGUE				!\
     56  1.8     skrll 1:						!\
     57  1.8     skrll 	stw	%rp, HPPA_FRAME_CRP(%sp)	!\
     58  1.8     skrll 	stw	%arg0, HPPA_FRAME_ARG(0)(%sp)	!\
     59  1.8     skrll 	stw	%arg1, HPPA_FRAME_ARG(1)(%sp)	!\
     60  1.8     skrll 	stw	%arg2, HPPA_FRAME_ARG(2)(%sp)	!\
     61  1.8     skrll 	stw	%arg3, HPPA_FRAME_ARG(3)(%sp)	!\
     62  1.8     skrll 	ldo	HPPA_FRAME_SIZE(%sp), %sp	!\
     63  1.8     skrll 	copy	%rp, %arg0			!\
     64  1.8     skrll 	bl	2f, %arg1			!\
     65  1.8     skrll 	depi	0, 31, 2, %arg1			!\
     66  1.8     skrll 2:						!\
     67  1.8     skrll 	bl	_mcount, %rp			!\
     68  1.8     skrll 	 ldo	1b - 2b(%arg1), %arg1		!\
     69  1.8     skrll 	ldo	-HPPA_FRAME_SIZE(%sp), %sp	!\
     70  1.8     skrll 	ldw	HPPA_FRAME_ARG(3)(%sp), %arg3	!\
     71  1.8     skrll 	ldw	HPPA_FRAME_ARG(2)(%sp), %arg2	!\
     72  1.8     skrll 	ldw	HPPA_FRAME_ARG(1)(%sp), %arg1	!\
     73  1.8     skrll 	ldw	HPPA_FRAME_ARG(0)(%sp), %arg0	!\
     74  1.8     skrll 	ldw	HPPA_FRAME_CRP(%sp), %rp	!\
     75  1.8     skrll 
     76  1.8     skrll #define LEAF_ENTRY(x) 				!\
     77  1.8     skrll 	ENTRY_NOPROFILE(x,HPPA_FRAME_SIZE)	!\
     78  1.8     skrll 	_PROF_PROLOGUE
     79  1.8     skrll 
     80  1.8     skrll #else /* GPROF */
     81  1.8     skrll 
     82  1.8     skrll #define _PROF_PROLOGUE
     83  1.8     skrll 
     84  1.8     skrll #define LEAF_ENTRY(x) 				!\
     85  1.8     skrll 	LEAF_ENTRY_NOPROFILE(x)
     86  1.8     skrll 
     87  1.8     skrll #endif /* GPROF */
     88  1.8     skrll 
     89  1.8     skrll #define ENTRY(x,n) 				!\
     90  1.8     skrll 	ENTRY_NOPROFILE(x,n)			!\
     91  1.8     skrll 	_PROF_PROLOGUE
     92  1.8     skrll 
     93  1.7     skrll #define ALTENTRY(x) ! .export x, entry ! .label x
     94  1.7     skrll #define EXIT(x) ! .exit ! .procend ! .size x, .-x
     95  1.1  fredette 
     96  1.4       chs #define RCSID(x)	.text				!\
     97  1.4       chs 			.asciz x			!\
     98  1.1  fredette 			.align	4
     99  1.1  fredette 
    100  1.1  fredette #define WEAK_ALIAS(alias,sym)				\
    101  1.1  fredette 	.weak alias !					\
    102  1.1  fredette 	alias = sym
    103  1.1  fredette 
    104  1.6  christos /*
    105  1.6  christos  * STRONG_ALIAS: create a strong alias.
    106  1.6  christos  */
    107  1.6  christos #define STRONG_ALIAS(alias,sym)				\
    108  1.6  christos 	.globl alias !					\
    109  1.6  christos 	alias = sym
    110  1.6  christos 
    111  1.4       chs #define CALL(func,tmp)					!\
    112  1.4       chs 	ldil	L%func, tmp				!\
    113  1.4       chs 	ldo	R%func(tmp), tmp			!\
    114  1.4       chs 	.call						!\
    115  1.4       chs 	blr	%r0, %rp				!\
    116  1.4       chs 	bv,n	%r0(tmp)				!\
    117  1.4       chs 	nop
    118  1.4       chs 
    119  1.4       chs #ifdef PIC
    120  1.4       chs #define PIC_CALL(func)					!\
    121  1.4       chs 	addil	LT%func, %r19				!\
    122  1.4       chs 	ldw	RT%func(%r1), %r1			!\
    123  1.4       chs 	.call						!\
    124  1.4       chs 	blr	%r0, %rp				!\
    125  1.4       chs 	bv,n	%r0(%r1)				!\
    126  1.4       chs 	nop
    127  1.4       chs #else
    128  1.4       chs #define PIC_CALL(func)					!\
    129  1.4       chs 	CALL(func,%r1)
    130  1.4       chs #endif
    131  1.4       chs 
    132  1.7     skrll #ifdef __STDC__
    133  1.7     skrll #define	WARN_REFERENCES(sym,msg)					\
    134  1.7     skrll 	.stabs msg ## ,30,0,0,0 ;					\
    135  1.7     skrll 	.stabs __STRING(sym) ## ,1,0,0,0
    136  1.7     skrll #else
    137  1.7     skrll #define	WARN_REFERENCES(sym,msg)					\
    138  1.7     skrll 	.stabs msg,30,0,0,0 ;						\
    139  1.7     skrll 	.stabs __STRING(sym),1,0,0,0
    140  1.7     skrll #endif
    141  1.1  fredette 
    142  1.7     skrll #define	BSS(n,s)	! .data ! .label n ! .comm s
    143  1.4       chs #define	SZREG	4
    144  1.4       chs 
    145  1.1  fredette #endif /* _HPPA_ASM_H_ */
    146