Quick Search:

View

Revision:
Expand:  
Changeset: MAIN:ragge:20120818201800

Diff

Diff from 1.16 to:

Annotations

Annotate by Age | Author | Mixed | None
/fisheye/browse/pcc/pcc/arch/vax/macdefs.h

Annotated File View

ragge
1.16
1 /*      $Id: macdefs.h,v 1.16 2012/08/18 20:18:00 ragge Exp $   */
ragge
1.1
2 /*
3  * Copyright(C) Caldera International Inc. 2001-2002. All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * Redistributions of source code and documentation must retain the above
10  * copyright notice, this list of conditions and the following disclaimer.
11  * Redistributions in binary form must reproduce the above copyright
12  * notice, this list of conditionsand the following disclaimer in the
13  * documentation and/or other materials provided with the distribution.
14  * All advertising materials mentioning features or use of this software
15  * must display the following acknowledgement:
16  *      This product includes software developed or owned by Caldera
17  *      International, Inc.
18  * Neither the name of Caldera International, Inc. nor the names of other
19  * contributors may be used to endorse or promote products derived from
20  * this software without specific prior written permission.
21  *
22  * USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
23  * INTERNATIONAL, INC. AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR
24  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
25  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
26  * DISCLAIMED.  IN NO EVENT SHALL CALDERA INTERNATIONAL, INC. BE LIABLE
27  * FOR ANY DIRECT, INDIRECT INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30  * HOWEVER CAUSED AND ON ANY THEORY OFLIABILITY, WHETHER IN CONTRACT,
31  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
32  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
33  * POSSIBILITY OF SUCH DAMAGE.
34  */
35
36 # define makecc(val,i)  lastcon = (lastcon<<8)|((val<<24)>>24);  
37
38 # define  ARGINIT 32 
39 # define  AUTOINIT 0 
40 # define  SZCHAR 8
ragge
1.3
41 # define  SZBOOL 8
ragge
1.1
42 # define  SZINT 32
43 # define  SZFLOAT 32
44 # define  SZDOUBLE 64
ragge
1.3
45 # define  SZLDOUBLE 64  /* XXX use longer? */
ragge
1.1
46 # define  SZLONG 32
ragge
1.3
47 # define  SZLONGLONG 64
ragge
1.1
48 # define  SZSHORT 16
ragge
1.3
49 # define SZPOINT(t) 32
ragge
1.1
50 # define ALCHAR 8
ragge
1.3
51 # define ALBOOL 8
ragge
1.1
52 # define ALINT 32
53 # define ALFLOAT 32
54 # define ALDOUBLE 32
ragge
1.3
55 # define ALLDOUBLE 32
ragge
1.1
56 # define ALLONG 32
ragge
1.3
57 # define ALLONGLONG 32
ragge
1.1
58 # define ALSHORT 16
59 # define ALPOINT 32
60 # define ALSTRUCT 8
61 # define  ALSTACK 32 
62
ragge
1.3
63 /*
64  * Min/max values.
65  */
66 #define MIN_CHAR        -128
67 #define MAX_CHAR        127
68 #define MAX_UCHAR       255
69 #define MIN_SHORT       -32768
70 #define MAX_SHORT       32767
71 #define MAX_USHORT      65535
72 #define MIN_INT         (-0x7fffffff-1)
73 #define MAX_INT         0x7fffffff
74 #define MAX_UNSIGNED    0xffffffff
75 #define MIN_LONG        MIN_INT
76 #define MAX_LONG        MAX_INT
77 #define MAX_ULONG       MAX_UNSIGNED
78 #define MIN_LONGLONG    0x8000000000000000LL
79 #define MAX_LONGLONG    0x7fffffffffffffffLL
80 #define MAX_ULONGLONG   0xffffffffffffffffULL
81
82 /* Default char is signed */
83 #undef  CHAR_UNSIGNED
84 #define BOOL_TYPE       CHAR    /* what used to store _Bool */
ragge
1.11
85 #define HASP2ALIGN
ragge
1.1
86 /*      size in which constants are converted */
87 /*      should be long if feasable */
88
ragge
1.3
89 typedef long long CONSZ;
90 typedef unsigned long long U_CONSZ;
91
92 # define CONFMT "%lld"
93 # define LABFMT ".L%d"
94 # define STABLBL ".LL%d"
ragge
1.1
95
96 /*      size in which offsets are kept
ragge
1.2
97  *      should be large enough to cover address space in bits
98  */
ragge
1.3
99 typedef long long OFFSZ;
ragge
1.1
100
101 /* register cookie for stack poINTer */
102
103
104 /* show stack grows negatively */
105 #define BACKAUTO
106 #define BACKTEMP
107
108 /* show field hardware support on VAX */
ragge
1.10
109 /* XXX notyet */
110 #undef FIELDOPS
ragge
1.1
111
112 /* bytes are numbered from right to left */
ragge
1.7
113 #define TARGET_ENDIAN TARGET_LE
ragge
1.13
114 #define UNALIGNED_ACCESS
ragge
1.1
115
116 /* we want prtree included */
117 # define STDPRTREE
118
119 /*      VAX-11/780 Registers */
120
121         /* scratch registers */
122 # define R0 0
123 # define R1 1
124 # define R2 2
125 # define R3 3
126 # define R4 4
127 # define R5 5
128
129         /* register variables */
130 # define R6 6
131 # define R7 7
132 # define R8 8
133 # define R9 9
134 # define R10 10
135 # define R11 11
136
137         /* special purpose */
138 # define AP 12          /* argument pointer */
139 # define FP 13          /* frame pointer */
140 # define SP 14  /* stack pointer */
141 # define PC 15  /* program counter */
142
143         /* floating registers */
144
145         /* there are no floating point registers on the VAX */
ragge
1.3
146         /* but there are concatenated regs */
147         /* we call them XR? */
148 #define XR0     16
149 #define XR1     17
150 #define XR2     18
151 #define XR3     19
152 #define XR4     20
153 #define XR5     21
154 #define XR6     22
155 #define XR7     23
156 #define XR8     24
157 #define XR9     25
158 #define XR10    26
159
160
161
ragge
1.1
162
163 extern int fregs;
164 extern int maxargs;
165
166 # define BYTEOFF(x) ((x)&03)
167 # define wdal(k) (BYTEOFF(k)==0)
ragge
1.9
168 # define BITOOR(x) ((x))  /* bit offset to oreg offset XXX wrong */
ragge
1.1
169
170 # define REGSZ 16
171
172 # define TMPREG FP
173
ragge
1.3
174 //# define R2REGS   /* permit double indexing */
ragge
1.1
175
176 # define STOARG(p)     /* just evaluate the arguments, and be done with it... */
177 # define STOFARG(p)
178 # define STOSTARG(p)
179 # define genfcall(a,b) gencall(a,b)
180
181 # define NESTCALL
182
ragge
1.3
183 /*
184  * Register allocator stuff.
185  * The register allocator sees this as 16 general regs (AREGs)
186  * and 11 64-bit concatenated regs. (BREGs)
187  */
188 #define MAXREGS 033     /* 27 registers */
189
190 #define RSTATUS \
191         SAREG|TEMPREGSAREG|TEMPREGSAREG|TEMPREGSAREG|TEMPREG,     \
192         SAREG|TEMPREGSAREG|TEMPREGSAREG|PERMREGSAREG|PERMREG,     \
193         SAREG|PERMREGSAREG|PERMREGSAREG|PERMREGSAREG|PERMREG,     \
194         0000/* do not care about ap, fp, sp or pc */            \
195         SBREGSBREGSBREGSBREGSBREGSBREGSBREGSBREG,         \
196         SBREGSBREGSBREG,
197
198 #define ROVERLAP \
199         { XR0, -1 },                    \
200         { XR0XR1, -1 },               \
201         { XR1XR2, -1 },               \
202         { XR2XR3, -1 },               \
203         { XR3XR4, -1 },               \
204         { XR4XR5, -1 },               \
205         { XR5XR6, -1 },               \
206         { XR6XR7, -1 },               \
207         { XR7XR8, -1 },               \
208         { XR8XR9, -1 },               \
209         { XR9XR10, -1 },              \
210         { XR10, -1 },                   \
211         { -1 },                         \
212         { -1 },                         \
213         { -1 },                         \
214         { -1 },                         \
215         { R0R1XR1, -1 },            \
216         { R1R2XR0XR2, -1 },       \
217         { R2R3XR1XR3, -1 },       \
218         { R3R4XR2XR4, -1 },       \
219         { R4R5XR3XR5, -1 },       \
220         { R5R6XR4XR6, -1 },       \
221         { R6R7XR5XR7, -1 },       \
222         { R7R8XR6XR8, -1 },       \
223         { R8R9XR7XR9, -1 },       \
224         { R9R10XR8XR10, -1 },     \
225         { R10R11XR9, -1 },
226
227 #define NUMCLASS        2       /* highest number of reg classes used */
228
229 /* size, in registers, needed to hold thing of type t */
ragge
1.8
230 #define szty(t) (((t) == DOUBLE || (t) == LONGLONG || (t) == ULONGLONG) ? 2 : 1)
ragge
1.3
231 #define FPREG   FP      /* frame pointer */
ragge
1.9
232 #define STKREG  SP
233 #define ARGREG  AP
ragge
1.3
234
235 #define DECRA(x,y)      (((x) >> (y*6)) & 63)   /* decode encoded regs */
236 #define ENCRD(x)        (x)             /* Encode dest reg in n_reg */
237 #define ENCRA1(x)       ((x) << 6)      /* A1 */
238 #define ENCRA2(x)       ((x) << 12)     /* A2 */
239 #define ENCRA(x,y)      ((x) << (6+y*6))        /* encode regs in int */
240
241 #define PCLASS(p)       (szty(p->n_type) == 2 ? SBREG : SAREG)
242 #define RETREG(x)       (szty(x) == 2 ? XR0 : R0)
243 #define GCLASS(x)       (x < XR0 ? CLASSA : CLASSB)
ragge
1.10
244 int xasmconstregs(char *s);
245 #define XASMCONSTREGS(x) xasmconstregs(x)
ragge
1.3
246 int COLORMAP(int cint *r);
247
248 #define SNCON           (MAXSPECIAL+1)  /* named constand */
ragge
1.14
249
250 /*
251  * Builtins.
252  */
253 #define TARGET_BUILTINS                                                 \
254         { "__builtin_frame_address"vax_builtin_frame_address, -1 },   \
255         { "__builtin_return_address"vax_builtin_return_address, -1 },
256
257 #define NODE struct node
258 struct node;
ragge
1.16
259 struct bitable;
ragge
1.14
260
261 #define TARGET_FFS              /* target-specific ffs */
ragge
1.16
262 NODE *builtin_ffs(const struct bitable *, NODE *a);
263 NODE *builtin_ffsl(const struct bitable *, NODE *a);
264 NODE *builtin_ffsll(const struct bitable *, NODE *a);
ragge
1.14
265
ragge
1.16
266 NODE *vax_builtin_frame_address(const struct bitable *, NODE *a);
267 NODE *vax_builtin_return_address(const struct bitable *, NODE *a);
ragge
1.14
268
269 #undef NODE
FishEye: Open Source License registered to PCC.
Your maintenance has expired. You can renew your license at http://www.atlassian.com/fisheye/renew
Atlassian FishEye, CVS analysis. (Version:1.6.3 Build:build-336 2008-11-04) - Administration - Page generated 2014-07-10 20:18 +0200