1 /* $NetBSD: asm.h,v 1.9 2007/12/02 15:55:09 skrll Exp $ */
3 /* $OpenBSD: asm.h,v 1.12 2001/03/29 02:15:57 mickey Exp $ */
6 * Copyright (c) 1990,1991,1994 The University of Utah and
7 * the Computer Systems Laboratory (CSL). All rights reserved.
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.''
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.
21 * CSL requests users of this software to return to csl-dist@cs.utah.edu any
22 * improvements that they make and grant CSL redistribution rights.
24 * Utah $Hdr: asm.h 1.8 94/12/14$
30 #include <machine/frame.h>
32 * hppa assembler definitions
36 #define __CONCAT(a,b) a ## b
38 #define __CONCAT(a,b) a/**/b
43 #define _ASM_LS_CHAR !
45 #define LEAF_ENTRY_NOPROFILE(x) !\
47 .export x, entry ! .label x ! .proc !\
48 .callinfo frame=0, no_calls, save_rp !\
51 #define ENTRY_NOPROFILE(x,n) !\
53 .export x, entry ! .label x ! .proc !\
54 .callinfo frame=n, calls, save_rp, save_sp !\
59 #define _PROF_PROLOGUE !\
61 stw %rp, HPPA_FRAME_CRP(%sp) !\
62 stw %arg0, HPPA_FRAME_ARG(0)(%sp) !\
63 stw %arg1, HPPA_FRAME_ARG(1)(%sp) !\
64 stw %arg2, HPPA_FRAME_ARG(2)(%sp) !\
65 stw %arg3, HPPA_FRAME_ARG(3)(%sp) !\
66 ldo HPPA_FRAME_SIZE(%sp), %sp !\
69 depi 0, 31, 2, %arg1 !\
72 ldo 1b - 2b(%arg1), %arg1 !\
73 ldo -HPPA_FRAME_SIZE(%sp), %sp !\
74 ldw HPPA_FRAME_ARG(3)(%sp), %arg3 !\
75 ldw HPPA_FRAME_ARG(2)(%sp), %arg2 !\
76 ldw HPPA_FRAME_ARG(1)(%sp), %arg1 !\
77 ldw HPPA_FRAME_ARG(0)(%sp), %arg0 !\
78 ldw HPPA_FRAME_CRP(%sp), %rp !\
80 #define LEAF_ENTRY(x) !\
81 ENTRY_NOPROFILE(x,HPPA_FRAME_SIZE) !\
86 #define _PROF_PROLOGUE
88 #define LEAF_ENTRY(x) !\
89 LEAF_ENTRY_NOPROFILE(x)
94 ENTRY_NOPROFILE(x,n) !\
97 #define ALTENTRY(x) ! .export x, entry ! .label x
98 #define EXIT(x) ! .exit ! .procend ! .size x, .-x
100 #define RCSID(x) .text !\
104 #define WEAK_ALIAS(alias,sym) \
109 * STRONG_ALIAS: create a strong alias.
111 #define STRONG_ALIAS(alias,sym) \
115 #define CALL(func,tmp) !\
117 ldo R%func(tmp), tmp !\
124 #define PIC_CALL(func) !\
125 addil LT%func, %r19 !\
126 ldw RT%func(%r1), %r1 !\
132 #define PIC_CALL(func) !\
137 #define WARN_REFERENCES(sym,msg) \
138 .stabs msg ## ,30,0,0,0 ; \
139 .stabs __STRING(sym) ## ,1,0,0,0
141 #define WARN_REFERENCES(sym,msg) \
142 .stabs msg,30,0,0,0 ; \
143 .stabs __STRING(sym),1,0,0,0
146 #define BSS(n,s) ! .data ! .label n ! .comm s
149 #endif /* _HPPA_ASM_H_ */