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