Home | History | Annotate | Line # | Download | only in include
asm.h revision 1.4
      1 /*	$NetBSD: asm.h,v 1.4 2004/07/18 23:21:35 chs Exp $	*/
      2 
      3 /*	$OpenBSD: asm.h,v 1.12 2001/03/29 02:15:57 mickey Exp $	*/
      4 
      5 /*
      6  * Copyright (c) 1990,1991,1994 The University of Utah and
      7  * the Computer Systems Laboratory (CSL).  All rights reserved.
      8  *
      9  * Permission to use, copy, modify and distribute this software is hereby
     10  * granted provided that (1) source code retains these copyright, permission,
     11  * and disclaimer notices, and (2) redistributions including binaries
     12  * reproduce the notices in supporting documentation, and (3) all advertising
     13  * materials mentioning features or use of this software display the following
     14  * acknowledgement: ``This product includes software developed by the
     15  * Computer Systems Laboratory at the University of Utah.''
     16  *
     17  * THE UNIVERSITY OF UTAH AND CSL ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS
     18  * IS" CONDITION.  THE UNIVERSITY OF UTAH AND CSL DISCLAIM ANY LIABILITY OF
     19  * ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
     20  *
     21  * CSL requests users of this software to return to csl-dist (at) cs.utah.edu any
     22  * improvements that they make and grant CSL redistribution rights.
     23  *
     24  *	Utah $Hdr: asm.h 1.8 94/12/14$
     25  */
     26 
     27 #ifndef _HPPA_ASM_H_
     28 #define _HPPA_ASM_H_
     29 
     30 /*
     31  *	hppa assembler definitions
     32  */
     33 
     34 #ifdef __STDC__
     35 #define	__CONCAT(a,b)	a ## b
     36 #else
     37 #define	__CONCAT(a,b)	a/**/b
     38 #endif
     39 
     40 #ifdef PROF
     41 #define	_PROF_PROLOGUE !\
     42 	stw %rp, HPPA_FRAME_CRP(%sr0,%sp)	!\
     43 	ldil L%_mcount,%r1		!\
     44 	ble R%_mcount(%sr0,%r1)		!\
     45 	ldo HPPA_FRAME_SIZE(%sp),%sp	!\
     46 	ldw HPPA_FRAME_CRP(%sr0,%sp),%rp
     47 #else
     48 #define	_PROF_PROLOGUE
     49 #endif
     50 
     51 #define	LEAF_ENTRY(x) ! .text ! .align	4	!\
     52 	.export	x, entry ! .label x ! .proc	!\
     53 	.callinfo frame=0,no_calls,save_rp	!\
     54 	.entry ! _PROF_PROLOGUE
     55 
     56 #define	ENTRY(x,n) ! .text ! .align 4			!\
     57 	.export	x, entry ! .label x ! .proc		!\
     58 	.callinfo frame=n,calls, save_rp, save_sp	!\
     59 	.entry ! _PROF_PROLOGUE
     60 
     61 #define	ENTRY_NOPROFILE(x,n) ! .text ! .align 4		!\
     62 	.export x, entry ! .label x ! .proc		!\
     63 	.callinfo frame=n,calls, save_rp, save_sp	!\
     64 	.entry
     65 
     66 #define ALTENTRY(x) ! .export x, entry ! .label  x
     67 #define EXIT(x) ! .exit ! .procend
     68 
     69 #define RCSID(x)	.text				!\
     70 			.asciz x			!\
     71 			.align	4
     72 
     73 #define WEAK_ALIAS(alias,sym)				\
     74 	.weak alias !					\
     75 	alias = sym
     76 
     77 #define CALL(func,tmp)					!\
     78 	ldil	L%func, tmp				!\
     79 	ldo	R%func(tmp), tmp			!\
     80 	.call						!\
     81 	blr	%r0, %rp				!\
     82 	bv,n	%r0(tmp)				!\
     83 	nop
     84 
     85 #ifdef PIC
     86 #define PIC_CALL(func)					!\
     87 	addil	LT%func, %r19				!\
     88 	ldw	RT%func(%r1), %r1			!\
     89 	.call						!\
     90 	blr	%r0, %rp				!\
     91 	bv,n	%r0(%r1)				!\
     92 	nop
     93 #else
     94 #define PIC_CALL(func)					!\
     95 	CALL(func,%r1)
     96 #endif
     97 
     98 /* XXX unimplemented */
     99 #define WARN_REFERENCES(sym, msg)
    100 
    101 #define	SZREG	4
    102 
    103 #endif /* _HPPA_ASM_H_ */
    104