asm.h revision 1.1 1 /* $NetBSD: asm.h,v 1.1 2002/06/05 01:04:21 fredette 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 /*
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 ALTENTRY(x) ! .export x, entry ! .label x
253 #define EXIT(x) ! .exit ! .procend
254
255 #define RCSID(x) .text ! \
256 .asciz x ! \
257 .align 4
258
259 #define WEAK_ALIAS(alias,sym) \
260 .weak alias ! \
261 alias = sym
262
263 /* XXX unimplemented */
264 #define WARN_REFERENCES(sym, msg)
265
266 #endif /* _HPPA_ASM_H_ */
267