prefix.h revision 1.2 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