1*f5d1667bSmpi /* $OpenBSD: asm.h,v 1.19 2017/06/23 09:55:10 mpi Exp $ */ 2e55ab885Smickey 3523f2185Smickey /* 4523f2185Smickey * Copyright (c) 1990,1991,1994 The University of Utah and 5523f2185Smickey * the Computer Systems Laboratory (CSL). All rights reserved. 6523f2185Smickey * 7523f2185Smickey * Permission to use, copy, modify and distribute this software is hereby 8523f2185Smickey * granted provided that (1) source code retains these copyright, permission, 9523f2185Smickey * and disclaimer notices, and (2) redistributions including binaries 10523f2185Smickey * reproduce the notices in supporting documentation, and (3) all advertising 11523f2185Smickey * materials mentioning features or use of this software display the following 12523f2185Smickey * acknowledgement: ``This product includes software developed by the 13523f2185Smickey * Computer Systems Laboratory at the University of Utah.'' 14523f2185Smickey * 15523f2185Smickey * THE UNIVERSITY OF UTAH AND CSL ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS 16523f2185Smickey * IS" CONDITION. THE UNIVERSITY OF UTAH AND CSL DISCLAIM ANY LIABILITY OF 17523f2185Smickey * ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. 18523f2185Smickey * 19523f2185Smickey * CSL requests users of this software to return to csl-dist@cs.utah.edu any 20523f2185Smickey * improvements that they make and grant CSL redistribution rights. 21523f2185Smickey * 22523f2185Smickey * Utah $Hdr: asm.h 1.8 94/12/14$ 23523f2185Smickey */ 24523f2185Smickey 25cddff70fSmickey #ifndef _MACHINE_ASM_H_ 26cddff70fSmickey #define _MACHINE_ASM_H_ 272a1b6665Smickey 28523f2185Smickey /* 292a1b6665Smickey * hppa assembler definitions 30523f2185Smickey */ 31523f2185Smickey 32523f2185Smickey /* 33523f2185Smickey * Hardware General Registers 34523f2185Smickey */ 35523f2185Smickey r0 .reg %r0 36523f2185Smickey r1 .reg %r1 37523f2185Smickey r2 .reg %r2 38523f2185Smickey r3 .reg %r3 39523f2185Smickey r4 .reg %r4 40523f2185Smickey r5 .reg %r5 41523f2185Smickey r6 .reg %r6 42523f2185Smickey r7 .reg %r7 43523f2185Smickey r8 .reg %r8 44523f2185Smickey r9 .reg %r9 45523f2185Smickey r10 .reg %r10 46523f2185Smickey r11 .reg %r11 47523f2185Smickey r12 .reg %r12 48523f2185Smickey r13 .reg %r13 49523f2185Smickey r14 .reg %r14 50523f2185Smickey r15 .reg %r15 51523f2185Smickey r16 .reg %r16 52523f2185Smickey r17 .reg %r17 53523f2185Smickey r18 .reg %r18 54523f2185Smickey r19 .reg %r19 55523f2185Smickey r20 .reg %r20 56523f2185Smickey r21 .reg %r21 57523f2185Smickey r22 .reg %r22 58523f2185Smickey r23 .reg %r23 59523f2185Smickey r24 .reg %r24 60523f2185Smickey r25 .reg %r25 61523f2185Smickey r26 .reg %r26 62523f2185Smickey r27 .reg %r27 63523f2185Smickey r28 .reg %r28 64523f2185Smickey r29 .reg %r29 65523f2185Smickey r30 .reg %r30 66523f2185Smickey r31 .reg %r31 67523f2185Smickey 68523f2185Smickey /* 69523f2185Smickey * Hardware Space Registers 70523f2185Smickey */ 71523f2185Smickey sr0 .reg %sr0 72523f2185Smickey sr1 .reg %sr1 73523f2185Smickey sr2 .reg %sr2 74523f2185Smickey sr3 .reg %sr3 75523f2185Smickey sr4 .reg %sr4 76523f2185Smickey sr5 .reg %sr5 77523f2185Smickey sr6 .reg %sr6 78523f2185Smickey sr7 .reg %sr7 79523f2185Smickey 80523f2185Smickey /* 81523f2185Smickey * Hardware Floating Point Registers 82523f2185Smickey */ 83523f2185Smickey fr0 .reg %fr0 84523f2185Smickey fr1 .reg %fr1 85523f2185Smickey fr2 .reg %fr2 86523f2185Smickey fr3 .reg %fr3 87523f2185Smickey fr4 .reg %fr4 88523f2185Smickey fr5 .reg %fr5 89523f2185Smickey fr6 .reg %fr6 90523f2185Smickey fr7 .reg %fr7 91523f2185Smickey fr8 .reg %fr8 92523f2185Smickey fr9 .reg %fr9 93523f2185Smickey fr10 .reg %fr10 94523f2185Smickey fr11 .reg %fr11 95523f2185Smickey fr12 .reg %fr12 96523f2185Smickey fr13 .reg %fr13 97523f2185Smickey fr14 .reg %fr14 98523f2185Smickey fr15 .reg %fr15 99523f2185Smickey fr16 .reg %fr16 100523f2185Smickey fr17 .reg %fr17 101523f2185Smickey fr18 .reg %fr18 102523f2185Smickey fr19 .reg %fr19 103523f2185Smickey fr20 .reg %fr20 104523f2185Smickey fr21 .reg %fr21 105523f2185Smickey fr22 .reg %fr22 106523f2185Smickey fr23 .reg %fr23 107523f2185Smickey fr24 .reg %fr24 108523f2185Smickey fr25 .reg %fr25 109523f2185Smickey fr26 .reg %fr26 110523f2185Smickey fr27 .reg %fr27 111523f2185Smickey fr28 .reg %fr28 112523f2185Smickey fr29 .reg %fr29 113523f2185Smickey fr30 .reg %fr30 114523f2185Smickey fr31 .reg %fr31 115523f2185Smickey 116523f2185Smickey /* 117523f2185Smickey * Hardware Control Registers 118523f2185Smickey */ 119523f2185Smickey cr0 .reg %cr0 120523f2185Smickey cr8 .reg %cr8 121523f2185Smickey cr9 .reg %cr9 122523f2185Smickey cr10 .reg %cr10 123523f2185Smickey cr11 .reg %cr11 124523f2185Smickey cr12 .reg %cr12 125523f2185Smickey cr13 .reg %cr13 126523f2185Smickey cr14 .reg %cr14 127523f2185Smickey cr15 .reg %cr15 128523f2185Smickey cr16 .reg %cr16 129523f2185Smickey cr17 .reg %cr17 130523f2185Smickey cr18 .reg %cr18 131523f2185Smickey cr19 .reg %cr19 132523f2185Smickey cr20 .reg %cr20 133523f2185Smickey cr21 .reg %cr21 134523f2185Smickey cr22 .reg %cr22 135523f2185Smickey cr23 .reg %cr23 136523f2185Smickey cr24 .reg %cr24 137523f2185Smickey cr25 .reg %cr25 138523f2185Smickey cr26 .reg %cr26 139523f2185Smickey cr27 .reg %cr27 140523f2185Smickey cr28 .reg %cr28 141523f2185Smickey cr29 .reg %cr29 142523f2185Smickey cr30 .reg %cr30 143523f2185Smickey cr31 .reg %cr31 144523f2185Smickey 145523f2185Smickey rctr .reg %cr0 146523f2185Smickey pidr1 .reg %cr8 147523f2185Smickey pidr2 .reg %cr9 148523f2185Smickey ccr .reg %cr10 149523f2185Smickey sar .reg %cr11 150523f2185Smickey pidr3 .reg %cr12 151523f2185Smickey pidr4 .reg %cr13 152523f2185Smickey iva .reg %cr14 153523f2185Smickey eiem .reg %cr15 154523f2185Smickey itmr .reg %cr16 155523f2185Smickey pcsq .reg %cr17 156523f2185Smickey pcoq .reg %cr18 157523f2185Smickey iir .reg %cr19 158523f2185Smickey isr .reg %cr20 159523f2185Smickey ior .reg %cr21 160523f2185Smickey ipsw .reg %cr22 161523f2185Smickey eirr .reg %cr23 162523f2185Smickey tr0 .reg %cr24 163523f2185Smickey vtop .reg %cr25 164523f2185Smickey tr1 .reg %cr25 165523f2185Smickey tr2 .reg %cr26 166523f2185Smickey tr3 .reg %cr27 167523f2185Smickey tr4 .reg %cr28 168523f2185Smickey tr5 .reg %cr29 169523f2185Smickey tr6 .reg %cr30 170523f2185Smickey tr7 .reg %cr31 171523f2185Smickey 172523f2185Smickey /* 173523f2185Smickey * Calling Convention 174523f2185Smickey */ 175523f2185Smickey rp .reg %r2 176523f2185Smickey arg3 .reg %r23 177523f2185Smickey arg2 .reg %r24 178523f2185Smickey arg1 .reg %r25 179523f2185Smickey arg0 .reg %r26 180523f2185Smickey dp .reg %r27 181523f2185Smickey ret0 .reg %r28 182523f2185Smickey ret1 .reg %r29 183523f2185Smickey sl .reg %r29 184523f2185Smickey sp .reg %r30 185523f2185Smickey 186523f2185Smickey /* 187523f2185Smickey * Temporary registers 188523f2185Smickey */ 189523f2185Smickey t1 .reg %r22 190523f2185Smickey t2 .reg %r21 191523f2185Smickey t3 .reg %r20 192523f2185Smickey t4 .reg %r19 193523f2185Smickey 194523f2185Smickey /* 195523f2185Smickey * Temporary space registers 196523f2185Smickey */ 197523f2185Smickey ts1 .reg %sr2 198523f2185Smickey 199523f2185Smickey /* 200523f2185Smickey * Space Registers - SW Conventions 201523f2185Smickey */ 202523f2185Smickey sret .reg %sr1 ; return value 203523f2185Smickey sarg .reg %sr1 ; argument 204523f2185Smickey 205523f2185Smickey /* 206523f2185Smickey * Floating Point Registers - SW Conventions 207523f2185Smickey */ 208523f2185Smickey farg0 .reg %fr5 209523f2185Smickey farg1 .reg %fr6 210523f2185Smickey farg2 .reg %fr7 211523f2185Smickey farg3 .reg %fr8 212523f2185Smickey fret .reg %fr4 213523f2185Smickey 214523f2185Smickey /* 215523f2185Smickey * Temporary floating point registers 216523f2185Smickey */ 217523f2185Smickey tf1 .reg %fr11 218523f2185Smickey tf2 .reg %fr10 219523f2185Smickey tf3 .reg %fr9 220523f2185Smickey tf4 .reg %fr8 221523f2185Smickey 2222a1b6665Smickey #ifdef __STDC__ 2232a1b6665Smickey #define __CONCAT(a,b) a ## b 2242a1b6665Smickey #else 2252a1b6665Smickey #define __CONCAT(a,b) a/**/b 2262a1b6665Smickey #endif 2272a1b6665Smickey 228*f5d1667bSmpi #if defined(PROF) || defined(GPROF) 2292a1b6665Smickey #define _PROF_PROLOGUE !\ 23052863597Skettenis 1: !\ 2310e6eee61Smickey stw rp, HPPA_FRAME_CRP(sr0,sp) !\ 23252863597Skettenis stw arg0, HPPA_FRAME_ARG(0)(sr0,sp) !\ 23352863597Skettenis stw arg1, HPPA_FRAME_ARG(1)(sr0,sp) !\ 23452863597Skettenis stw arg2, HPPA_FRAME_ARG(2)(sr0,sp) !\ 23552863597Skettenis stw arg3, HPPA_FRAME_ARG(3)(sr0,sp) !\ 2360e6eee61Smickey ldo HPPA_FRAME_SIZE(sp), sp !\ 23752863597Skettenis copy rp, arg0 !\ 23852863597Skettenis bl 2f, arg1 !\ 23952863597Skettenis depi 0, 31, 2, arg1 !\ 24052863597Skettenis 2: !\ 24152863597Skettenis bl _mcount, rp !\ 24252863597Skettenis ldo 1b - 2b(arg1), arg1 !\ 24352863597Skettenis ldo -HPPA_FRAME_SIZE(sp), sp !\ 24452863597Skettenis ldw HPPA_FRAME_ARG(3)(sr0,sp), arg3 !\ 24552863597Skettenis ldw HPPA_FRAME_ARG(2)(sr0,sp), arg2 !\ 24652863597Skettenis ldw HPPA_FRAME_ARG(1)(sr0,sp), arg1 !\ 24752863597Skettenis ldw HPPA_FRAME_ARG(0)(sr0,sp), arg0 !\ 2480e6eee61Smickey ldw HPPA_FRAME_CRP(sr0,sp) ,rp 249523f2185Smickey #else 2502a1b6665Smickey #define _PROF_PROLOGUE 2512a1b6665Smickey #endif 2522a1b6665Smickey 2530150d9dbSmickey #define LEAF_ENTRY(x) ! .text ! .align 4 !\ 2540150d9dbSmickey .export x, entry ! .label x ! .proc !\ 2550150d9dbSmickey .callinfo frame=0,no_calls,save_rp !\ 2560150d9dbSmickey .entry ! _PROF_PROLOGUE 257523f2185Smickey 2580150d9dbSmickey #define ENTRY(x,n) ! .text ! .align 4 !\ 2590150d9dbSmickey .export x, entry ! .label x ! .proc !\ 2600150d9dbSmickey .callinfo frame=n,calls, save_rp, save_sp !\ 2610150d9dbSmickey .entry ! _PROF_PROLOGUE 262523f2185Smickey 2630150d9dbSmickey #define ALTENTRY(x) ! .export x, entry ! .label x 26481ea1217Smickey #define EXIT(x) ! .exit ! .procend ! .size x, .-x 265523f2185Smickey 266940d0b17Smickey #define BSS(n,s) ! .data ! .label n ! .comm s 267940d0b17Smickey 2685a25e2caSmartynas #define STRONG_ALIAS(alias,sym) ! .global alias ! .set alias, sym 269eca0a8dbSguenther #define WEAK_ALIAS(alias,sym) ! .weak alias ! .set alias, sym 270eca0a8dbSguenther 271cddff70fSmickey #endif /* _MACHINE_ASM_H_ */ 272