Home | History | Annotate | Line # | Download | only in hppa
      1 /*	$NetBSD: prefix.h,v 1.2 2013/09/12 15:36:17 joerg Exp $	*/
      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