1 1.2 joerg /* $NetBSD: prefix.h,v 1.2 2013/09/12 15:36:17 joerg Exp $ */ 2 1.1 fredette 3 1.1 fredette /* $OpenBSD: prefix.h,v 1.2 2001/03/29 04:08:21 mickey Exp $ */ 4 1.1 fredette 5 1.1 fredette /* 6 1.1 fredette * (c) Copyright 1985 HEWLETT-PACKARD COMPANY 7 1.1 fredette * 8 1.1 fredette * To anyone who acknowledges that this file is provided "AS IS" 9 1.1 fredette * without any express or implied warranty: 10 1.1 fredette * permission to use, copy, modify, and distribute this file 11 1.1 fredette * for any purpose is hereby granted without fee, provided that 12 1.1 fredette * the above copyright notice and this notice appears in all 13 1.1 fredette * copies, and that the name of Hewlett-Packard Company not be 14 1.1 fredette * used in advertising or publicity pertaining to distribution 15 1.1 fredette * of the software without specific, written prior permission. 16 1.1 fredette * Hewlett-Packard Company makes no representations about the 17 1.1 fredette * suitability of this software for any purpose. 18 1.1 fredette */ 19 1.1 fredette 20 1.1 fredette /* 21 1.1 fredette * STANDARD INCLUDE FILE FOR MILLICODE 22 1.1 fredette * Every source file must include this file. 23 1.1 fredette * 24 1.1 fredette * Hardware General Registers 25 1.1 fredette * 26 1.1 fredette * Frame Offsets (millicode convention!) 27 1.1 fredette * Used when calling other millicode routines. 28 1.1 fredette * Stack unwinding is dependent upon these definitions. 29 1.1 fredette * r31_slot .equ -20 30 1.1 fredette * sr0_slot .equ -16 31 1.1 fredette */ 32 1.1 fredette 33 1.1 fredette #include <machine/asm.h> 34 1.1 fredette 35 1.1 fredette #define DEFINE(name, value)name: .EQU value 36 1.1 fredette #ifdef milliext 37 1.2 joerg #ifdef __PIC__ 38 1.1 fredette #define MILLI_BE(lbl) \ 39 1.1 fredette BL .+8,r1\ 40 1.1 fredette ! ADDIL L%lbl-labl/**/lbl,r1\ 41 1.1 fredette ! .LABEL labl/**/lbl\ 42 1.1 fredette ! BE R%lbl-labl/**/lbl(sr7,r1) 43 1.1 fredette 44 1.1 fredette #define MILLI_BEN(lbl) \ 45 1.1 fredette BL .+8,r1\ 46 1.1 fredette ! ADDIL L%lbl-labl/**/lbl,r1\ 47 1.1 fredette ! .LABEL labl/**/lbl\ 48 1.1 fredette ! BE,N R%lbl-labl/**/lbl(sr7,r1) 49 1.1 fredette 50 1.1 fredette #define MILLI_BLE(lbl) \ 51 1.1 fredette BL .+8,r1\ 52 1.1 fredette ! ADDIL L%lbl-labl/**/lbl,r1\ 53 1.1 fredette ! .LABEL labl/**/lbl \ 54 1.1 fredette ! BLE R%lbl-labl/**/lbl(sr7,r1) 55 1.1 fredette 56 1.1 fredette #define MILLI_BLEN(lbl) \ 57 1.1 fredette BL .+8,r1\ 58 1.1 fredette ! ADDIL L%lbl-labl/**/lbl,r1\ 59 1.1 fredette ! .LABEL labl/**/lbl\ 60 1.1 fredette ! BLE,N R%lbl-labl/**/lbl(sr7,r1) 61 1.1 fredette #else 62 1.1 fredette #define MILLI_BE(lbl) BE lbl(sr7,r0) 63 1.1 fredette #define MILLI_BEN(lbl) BE,n lbl(sr7,r0) 64 1.1 fredette #define MILLI_BLE(lbl) BLE lbl(sr7,r0) 65 1.1 fredette #define MILLI_BLEN(lbl) BLE,n lbl(sr7,r0) 66 1.1 fredette #endif 67 1.1 fredette 68 1.1 fredette #define MILLIRETN BE,n 0(sr0,r31) 69 1.1 fredette #define MILLIRET BE 0(sr0,r31) 70 1.1 fredette #define MILLI_RETN BE,n 0(sr0,r31) 71 1.1 fredette #define MILLI_RET BE 0(sr0,r31) 72 1.1 fredette 73 1.1 fredette #else 74 1.1 fredette #define MILLI_BE(lbl) B lbl 75 1.1 fredette #define MILLI_BEN(lbl) B,n lbl 76 1.1 fredette #define MILLI_BLE(lbl) BL lbl,r31 77 1.1 fredette #define MILLI_BLEN(lbl) BL,n lbl,r31 78 1.1 fredette #define MILLIRETN BV,n 0(r31) 79 1.1 fredette #define MILLIRET BV 0(r31) 80 1.1 fredette #define MILLI_RETN BV,n 0(r31) 81 1.1 fredette #define MILLI_RET BV 0(r31) 82 1.1 fredette #endif 83 1.1 fredette ; VERSION is used wherever ".version" can appear in a routine 84 1.1 fredette ;#define VERSION .version 85 1.1 fredette #define VERSION ; 86