xref: /netbsd/sys/arch/hppa/include/asm.h (revision c4a72b64)
1 /*	$NetBSD: asm.h,v 1.2 2002/07/04 16:43:21 thorpej 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@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 /*
35  * Hardware General Registers
36  */
37 r0	.reg	%r0
38 r1	.reg	%r1
39 r2	.reg	%r2
40 r3	.reg	%r3
41 r4	.reg	%r4
42 r5	.reg	%r5
43 r6	.reg	%r6
44 r7	.reg	%r7
45 r8	.reg	%r8
46 r9	.reg	%r9
47 r10	.reg	%r10
48 r11	.reg	%r11
49 r12	.reg	%r12
50 r13	.reg	%r13
51 r14	.reg	%r14
52 r15	.reg	%r15
53 r16	.reg	%r16
54 r17	.reg	%r17
55 r18	.reg	%r18
56 r19	.reg	%r19
57 r20	.reg	%r20
58 r21	.reg	%r21
59 r22	.reg	%r22
60 r23	.reg	%r23
61 r24	.reg	%r24
62 r25	.reg	%r25
63 r26	.reg	%r26
64 r27	.reg	%r27
65 r28	.reg	%r28
66 r29	.reg	%r29
67 r30	.reg	%r30
68 r31	.reg	%r31
69 
70 /*
71  * Hardware Space Registers
72  */
73 sr0	.reg	%sr0
74 sr1	.reg	%sr1
75 sr2	.reg	%sr2
76 sr3	.reg	%sr3
77 sr4	.reg	%sr4
78 sr5	.reg	%sr5
79 sr6	.reg	%sr6
80 sr7	.reg	%sr7
81 
82 /*
83  * Hardware Floating Point Registers
84  */
85 fr0	.reg	%fr0
86 fr1	.reg	%fr1
87 fr2	.reg	%fr2
88 fr3	.reg	%fr3
89 fr4	.reg	%fr4
90 fr5	.reg	%fr5
91 fr6	.reg	%fr6
92 fr7	.reg	%fr7
93 fr8	.reg	%fr8
94 fr9	.reg	%fr9
95 fr10	.reg	%fr10
96 fr11	.reg	%fr11
97 fr12	.reg	%fr12
98 fr13	.reg	%fr13
99 fr14	.reg	%fr14
100 fr15	.reg	%fr15
101 fr16	.reg	%fr16
102 fr17	.reg	%fr17
103 fr18	.reg	%fr18
104 fr19	.reg	%fr19
105 fr20	.reg	%fr20
106 fr21	.reg	%fr21
107 fr22	.reg	%fr22
108 fr23	.reg	%fr23
109 fr24	.reg	%fr24
110 fr25	.reg	%fr25
111 fr26	.reg	%fr26
112 fr27	.reg	%fr27
113 fr28	.reg	%fr28
114 fr29	.reg	%fr29
115 fr30	.reg	%fr30
116 fr31	.reg	%fr31
117 
118 /*
119  * Hardware Control Registers
120  */
121 cr0	.reg	%cr0
122 cr8	.reg	%cr8
123 cr9	.reg	%cr9
124 cr10	.reg	%cr10
125 cr11	.reg	%cr11
126 cr12	.reg	%cr12
127 cr13	.reg	%cr13
128 cr14	.reg	%cr14
129 cr15	.reg	%cr15
130 cr16	.reg	%cr16
131 cr17	.reg	%cr17
132 cr18	.reg	%cr18
133 cr19	.reg	%cr19
134 cr20	.reg	%cr20
135 cr21	.reg	%cr21
136 cr22	.reg	%cr22
137 cr23	.reg	%cr23
138 cr24	.reg	%cr24
139 cr25	.reg	%cr25
140 cr26	.reg	%cr26
141 cr27	.reg	%cr27
142 cr28	.reg	%cr28
143 cr29	.reg	%cr29
144 cr30	.reg	%cr30
145 cr31	.reg	%cr31
146 
147 rctr	.reg	%cr0
148 pidr1	.reg	%cr8
149 pidr2	.reg	%cr9
150 ccr	.reg	%cr10
151 sar	.reg	%cr11
152 pidr3	.reg	%cr12
153 pidr4	.reg	%cr13
154 iva	.reg	%cr14
155 eiem	.reg	%cr15
156 itmr	.reg	%cr16
157 pcsq	.reg	%cr17
158 pcoq	.reg	%cr18
159 iir	.reg	%cr19
160 isr	.reg	%cr20
161 ior	.reg	%cr21
162 ipsw	.reg	%cr22
163 eirr	.reg	%cr23
164 hptmask	.reg	%cr24
165 tr0	.reg	%cr24
166 vtop	.reg	%cr25
167 tr1	.reg	%cr25
168 tr2	.reg	%cr26
169 tr3	.reg	%cr27
170 tr4	.reg	%cr28
171 tr5	.reg	%cr29
172 tr6	.reg	%cr30
173 tr7	.reg	%cr31
174 
175 /*
176  * Calling Convention
177  */
178 rp	.reg	%r2
179 arg3	.reg	%r23
180 arg2	.reg	%r24
181 arg1	.reg	%r25
182 arg0	.reg	%r26
183 dp	.reg	%r27
184 ret0	.reg	%r28
185 ret1	.reg	%r29
186 sl	.reg	%r29
187 sp	.reg	%r30
188 
189 /*
190  * Temporary registers
191  */
192 t1	.reg	%r22
193 t2	.reg	%r21
194 t3	.reg	%r20
195 t4	.reg	%r19
196 
197 /*
198  * Temporary space registers
199  */
200 ts1	.reg	%sr2
201 
202 /*
203  * Space Registers - SW Conventions
204  */
205 sret	.reg	%sr1	; return value
206 sarg	.reg	%sr1	; argument
207 
208 /*
209  * Floating Point Registers - SW Conventions
210  */
211 farg0	.reg	%fr5
212 farg1	.reg	%fr6
213 farg2	.reg	%fr7
214 farg3	.reg	%fr8
215 fret	.reg	%fr4
216 
217 /*
218  * Temporary floating point registers
219  */
220 tf1	.reg	%fr11
221 tf2	.reg	%fr10
222 tf3	.reg	%fr9
223 tf4	.reg	%fr8
224 
225 #ifdef __STDC__
226 #define	__CONCAT(a,b)	a ## b
227 #else
228 #define	__CONCAT(a,b)	a/**/b
229 #endif
230 
231 #ifdef PROF
232 #define	_PROF_PROLOGUE !\
233 	stw rp, HPPA_FRAME_CRP(sr0,sp)	!\
234 	ldil L%_mcount,r1		!\
235 	ble R%_mcount(sr0,r1)		!\
236 	ldo HPPA_FRAME_SIZE(sp),sp	!\
237 	ldw HPPA_FRAME_CRP(sr0,sp),rp
238 #else
239 #define	_PROF_PROLOGUE
240 #endif
241 
242 #define	LEAF_ENTRY(x) ! .text ! .align	4	!\
243 	.export	x, entry ! .label x ! .proc	!\
244 	.callinfo frame=0,no_calls,save_rp	!\
245 	.entry ! _PROF_PROLOGUE
246 
247 #define	ENTRY(x,n) ! .text ! .align 4			!\
248 	.export	x, entry ! .label x ! .proc		!\
249 	.callinfo frame=n,calls, save_rp, save_sp	!\
250 	.entry ! _PROF_PROLOGUE
251 
252 #define	ENTRY_NOPROFILE(x,n) ! .text ! .align 4		!\
253 	.export x, entry ! .label x ! .proc		!\
254 	.callinfo frame=n,calls, save_rp, save_sp	!\
255 	.entry
256 
257 #define ALTENTRY(x) ! .export x, entry ! .label  x
258 #define EXIT(x) ! .exit ! .procend
259 
260 #define RCSID(x)	.text			!	\
261 			.asciz x		!	\
262 			.align	4
263 
264 #define WEAK_ALIAS(alias,sym)				\
265 	.weak alias !					\
266 	alias = sym
267 
268 /* XXX unimplemented */
269 #define WARN_REFERENCES(sym, msg)
270 
271 #endif /* _HPPA_ASM_H_ */
272