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