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