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