Quick Search:

View

Revision:
Expand:  
Changeset: MAIN:mickey:20071014111758

Diff

Diff from 1.1 to:

Annotations

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

Annotated File View

mickey
1.1
1 /*      $OpenBSD$       */
2
3 /*
4  * Copyright (c) 2007 Michael Shalayeff
5  * Copyright (c) 2003 Anders Magnusson (ragge@ludd.luth.se).
6  * All rights reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  * 1. Redistributions of source code must retain the above copyright
12  *    notice, this list of conditions and the following disclaimer.
13  * 2. Redistributions in binary form must reproduce the above copyright
14  *    notice, this list of conditions and the following disclaimer in the
15  *    documentation and/or other materials provided with the distribution.
16  * 3. The name of the author may not be used to endorse or promote products
17  *    derived from this software without specific prior written permission
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
20  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
21  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
22  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
23  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
24  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
28  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  */
30
31 /*
32  * Convert (multi-)character constant to integer.
33  */
34 #define makecc(val,i)   (lastcon = (lastcon<<8)|((val<<24)>>24))
35
36 #define ARGINIT         (32*8)  /* bits below fp where args start */
37 #define AUTOINIT        (4*8)   /* bits above fp where locals start */
38
39 /*
40  * storage sizes
41  */
42 #define SZCHAR          8
43 #define SZBOOL          8
44 #define SZINT           32
45 #define SZFLOAT         32
46 #define SZDOUBLE        64
47 #define SZLDOUBLE       64      /* or later 128 */
48 #define SZLONG          32
49 #define SZSHORT         16
50 #define SZLONGLONG      64
51 #define SZPOINT(t)      32
52
53 /*
54  * alignment requirements
55  */
56 #define ALCHAR          8
57 #define ALBOOL          8
58 #define ALINT           32
59 #define ALFLOAT         32
60 #define ALDOUBLE        64
61 #define ALLDOUBLE       64      /* 128 later */
62 #define ALLONG          32
63 #define ALLONGLONG      64
64 #define ALSHORT         16
65 #define ALPOINT         32
66 #define ALSTRUCT        64
67 #define ALSTACK         64
68
69 /*
70  * type value limits
71  */
72 #define MIN_CHAR        -128
73 #define MAX_CHAR        127
74 #define MAX_UCHAR       255
75 #define MIN_SHORT       -32768
76 #define MAX_SHORT       32767
77 #define MAX_USHORT      65535
78 #define MIN_INT         (-0x7fffffff-1)
79 #define MAX_INT         0x7fffffff
80 #define MAX_UNSIGNED    0xffffffff
81 #define MIN_LONG        MIN_INT
82 #define MAX_LONG        MAX_INT
83 #define MAX_ULONG       MAX_UNSIGNED
84 #define MIN_LONGLONG    (-0x7fffffffffffffffLL-1)
85 #define MAX_LONGLONG    0x7fffffffffffffffLL
86 #define MAX_ULONGLONG   0xffffffffffffffffULL
87
88 #undef  CHAR_UNSIGNED
89 #define BOOL_TYPE       CHAR
90 #define WCHAR_TYPE      INT
91 #define ENUMSIZE(high,low)      INT
92
93 typedef long long CONSZ;
94 typedef unsigned long long U_CONSZ;
95 typedef long long OFFSZ;
96
97 #define CONFMT  "%lld"          /* format for printing constants */
98 #define LABFMT  ".L%d"          /* format for printing labels */
99 #define STABLBL ".LL%d"         /* format for stab (debugging) labels */
100
101 #undef  BACKAUTO        /* stack grows upwards */
102 #undef  BACKTEMP        /* stack grows upwards */
103
104 #define MYP2TREE(p)     myp2tree(p)
105
106 #define FIELDOPS        /* have bit field ops */
107 #define LTORBYTES       /* big endian */
108
109 #define BYTEOFF(x)      ((x)&03)
110 #define wdal(k)         (BYTEOFF(k)==0)
111 #define BITOOR(x)       (x)     /* bit offset to oreg offset XXX die! */
112
113 #define STOARG(p)
114 #define STOFARG(p)
115 #define STOSTARG(p)
116
117 #define szty(t) (((t) == DOUBLE || (t) == FLOAT || \
118         (t) == LONGLONG || (t) == ULONGLONG) ? 2 : (t) == LDOUBLE ? 2 : 1)
119
120 #define R1      0
121 #define RP      1
122 #define FP      2
123 #define R4      3
124 #define R5      4
125 #define R6      5
126 #define R7      6
127 #define R8      7
128 #define R9      8
129 #define R10     9
130 #define R11     10
131 #define R12     11
132 #define R13     12
133 #define R14     13
134 #define R15     14
135 #define R16     15
136 #define R17     16
137 #define R18     17
138 #define T4      18
139 #define T3      19
140 #define T2      20
141 #define T1      21
142 #define ARG3    22
143 #define ARG2    23
144 #define ARG1    24
145 #define ARG0    25
146 #define DP      26
147 #define RET0    27
148 #define RET1    28
149 #define SP      29
150 #define R31     30
151
152 /* double regs overlay */
153 #define RD0     31      /* r1:r31 */
154 #define RD1     32      /* r5:r4 */
155 #define RD2     33      /* r7:r6 */
156 #define RD3     34      /* r9:r8 */
157 #define RD4     35      /* r11:r10 */
158 #define RD5     36      /* r13:r12 */
159 #define RD6     37      /* r15:r14 */
160 #define RD7     38      /* r17:r16 */
161 #define TD2     39      /* t4:t3 */
162 #define TD1     40      /* t2:t1 */
163 #define AD2     41      /* arg3:arg2 */
164 #define AD1     42      /* arg1:arg0 */
165 #define RETD0   43      /* ret1:ret0 */
166
167 /* FPU regs */
168 #define FR0     44
169 #define FR4     45
170 #define FR5     46
171 #define FR6     47
172 #define FR7     48
173 #define FR8     49
174 #define FR9     50
175 #define FR10    51
176 #define FR11    52
177 #define FR12    53
178 #define FR13    54
179 #define FR14    55
180 #define FR15    56
181 #define FR16    57
182 #define FR17    58
183 #define FR18    59
184 #define FR19    60
185 #define FR20    61
186 #define FR21    62
187 #define FR22    63
188 #define FR23    64
189 #define FR24    65
190 #define FR25    66
191 #define FR26    67
192 #define FR27    68
193 #define FR28    69
194 #define FR29    70
195 #define FR30    71
196 #define FR31    72
197
198 #define FR0L    73
199 #define FR0R    74
200 #define FR4L    75
201 #define FR4R    76
202 #define FR5L    77
203 #define FR5R    78
204 #define FR6L    79
205 #define FR6R    80
206 #define FR7L    81
207 #define FR7R    82
208 #define FR8L    83
209 #define FR8R    84
210 #define FR9L    85
211 #define FR9R    86
212 #define FR10L   87
213 #define FR10R   88
214 #define FR11L   89
215 #define FR11R   90
216 #define FR12L   91
217 #define FR12R   92
218 #define FR13L   93
219 #define FR13R   94
220 #define FR14L   95
221 #define FR14R   96
222 #define FR15L   97
223 #define FR15R   98
224 #define FR16L   99
225 #define FR16R   100
226 #define FR17L   101
227 #define FR17R   102
228 #ifdef __hppa64__
229 #define FR18L   103
230 #define FR18R   104
231 #define FR19L   105
232 #define FR19R   106
233 #define FR20L   107
234 #define FR20R   108
235 #define FR21L   109
236 #define FR21R   110
237 #define FR22L   111
238 #define FR22R   112
239 #define FR23L   113
240 #define FR23R   114
241 #define FR24L   115
242 #define FR24R   116
243 #define FR25L   117
244 #define FR25R   118
245 #define FR26L   119
246 #define FR26R   120
247 #define FR27L   121
248 #define FR27R   122
249 #define FR28L   123
250 #define FR28R   124
251 #define FR29L   125
252 #define FR29R   126
253 #define FR30L   127
254 #define FR30R   128
255 #define FR31L   129
256 #define FR31R   130
257
258 #define MAXREGS 131
259 #else
260 #define MAXREGS 103
261 #endif
262
263 #define RSTATUS \
264         SAREG|TEMPREG00SAREG|PERMREGSAREG|PERMREG, \
265         SAREG|PERMREGSAREG|PERMREGSAREG|PERMREGSAREG|PERMREG,     \
266         SAREG|PERMREGSAREG|PERMREGSAREG|PERMREGSAREG|PERMREG,     \
267         SAREG|PERMREGSAREG|PERMREGSAREG|PERMREGSAREG|PERMREG,     \
268         SAREG|PERMREG,                                                  \
269         SAREG|TEMPREGSAREG|TEMPREGSAREG|TEMPREGSAREG|TEMPREG,     \
270         SAREG|TEMPREGSAREG|TEMPREGSAREG|TEMPREGSAREG|TEMPREG,     \
271         0SAREG|TEMPREGSAREG|TEMPREG0SAREG|TEMPREG,              \
272         /* double overlays */                                           \
273         SBREGSBREGSBREGSBREGSBREGSBREGSBREG,                \
274         SBREGSBREGSBREGSBREGSBREGSBREG,                       \
275         /* double-precision floats */                                   \
276         0,                                                              \
277         SDREG|TEMPREGSDREG|TEMPREGSDREG|TEMPREGSDREG|TEMPREG,     \
278         SDREG|TEMPREGSDREG|TEMPREGSDREG|TEMPREGSDREG|TEMPREG,     \
279         SDREG|PERMREGSDREG|PERMREGSDREG|PERMREGSDREG|PERMREG,     \
280         SDREG|PERMREGSDREG|PERMREGSDREG|PERMREGSDREG|PERMREG,     \
281         SDREG|PERMREGSDREG|PERMREG,                                   \
282         SDREG|TEMPREGSDREG|TEMPREGSDREG|TEMPREGSDREG|TEMPREG,     \
283         SDREG|TEMPREGSDREG|TEMPREGSDREG|TEMPREGSDREG|TEMPREG,     \
284         SDREG|TEMPREGSDREG|TEMPREG,                                   \
285         /* single-precision floats */                                   \
286         00SCREGSCREGSCREGSCREGSCREGSCREGSCREG,          \
287         SCREGSCREGSCREGSCREGSCREGSCREGSCREGSCREG,         \
288         SCREGSCREGSCREGSCREGSCREGSCREGSCREGSCREG,         \
289         SCREGSCREGSCREGSCREGSCREG,
290 #ifdef __hppa64__
291         SCREGSCREGSCREG,            \
292         SCREGSCREGSCREGSCREGSCREGSCREGSCREGSCREG,         \
293         SCREGSCREGSCREGSCREGSCREGSCREGSCREGSCREG,         \
294         SCREGSCREGSCREGSCREGSCREGSCREGSCREGSCREGSCREG,
295 #endif
296
297 #define ROVERLAP \
298         { RD0, -1 }, { -1 }, { -1 },    \
299         { RD1, -1 }, { RD1, -1 },       \
300         { RD2, -1 }, { RD2, -1 },       \
301         { RD3, -1 }, { RD3, -1 },       \
302         { RD4, -1 }, { RD4, -1 },       \
303         { RD5, -1 }, { RD5, -1 },       \
304         { RD6, -1 }, { RD6, -1 },       \
305         { RD7, -1 }, { RD7, -1 },       \
306         { -1 },                         \
307         { TD2, -1 }, { TD2, -1 },       \
308         { TD1, -1 }, { TD1, -1 },       \
309         { AD2, -1 }, { AD2, -1 },       \
310         { AD1, -1 }, { AD1, -1 },       \
311         { -1 },                         \
312         { RETD0, -1 }, { RETD0, -1 },   \
313         { -1 }, { RD0, -1 },            \
314         { R1R31, -1 },                \
315         { R4R5, -1 },                 \
316         { R6R7, -1 },                 \
317         { R8R9, -1 },                 \
318         { R10R11, -1 },               \
319         { R12R13, -1 },               \
320         { R14R15, -1 },               \
321         { R16R17, -1 },               \
322         { T4T3, -1 },                 \
323         { T2T1, -1 },                 \
324         { ARG3ARG2, -1 },             \
325         { ARG1ARG0, -1 },             \
326         { RET1RET0, -1 },             \
327         { -1 },                         \
328         { FR4LFR4R, -1 },             \
329         { FR5LFR5R, -1 },             \
330         { FR6LFR6R, -1 },             \
331         { FR7LFR7R, -1 },             \
332         { FR8LFR8R, -1 },             \
333         { FR9LFR9R, -1 },             \
334         { FR10LFR10R, -1 },           \
335         { FR11LFR11R, -1 },           \
336         { FR12LFR12R, -1 },           \
337         { FR13LFR13R, -1 },           \
338         { FR14LFR14R, -1 },           \
339         { FR15LFR15R, -1 },           \
340         { FR16LFR16R, -1 },           \
341         { FR17LFR17R, -1 },           \
342         { -1 },                         \
343         { -1 },                         \
344         { -1 },                         \
345         { -1 },                         \
346         { -1 },                         \
347         { -1 },                         \
348         { -1 },                         \
349         { -1 },                         \
350         { -1 },                         \
351         { -1 },                         \
352         { -1 },                         \
353         { -1 },                         \
354         { -1 },                         \
355         { -1 },                         \
356         { -1 }, { -1 },                 \
357         { FR4, -1 }, { FR4, -1 },       \
358         { FR5, -1 }, { FR5, -1 },       \
359         { FR6, -1 }, { FR6, -1 },       \
360         { FR7, -1 }, { FR7, -1 },       \
361         { FR8, -1 }, { FR8, -1 },       \
362         { FR9, -1 }, { FR9, -1 },       \
363         { FR10, -1 }, { FR10, -1 },     \
364         { FR11, -1 }, { FR11, -1 },     \
365         { FR12, -1 }, { FR12, -1 },     \
366         { FR13, -1 }, { FR13, -1 },     \
367         { FR14, -1 }, { FR14, -1 },     \
368         { FR15, -1 }, { FR15, -1 },     \
369         { FR16, -1 }, { FR16, -1 },     \
370         { FR17, -1 }, { FR17, -1 },
371 #ifdef __hppa64__
372         { FR18, -1 }, { FR18, -1 },     \
373         { FR19, -1 }, { FR19, -1 },     \
374         { FR20, -1 }, { FR20, -1 },     \
375         { FR21, -1 }, { FR21, -1 },     \
376         { FR22, -1 }, { FR22, -1 },     \
377         { FR23, -1 }, { FR23, -1 },     \
378         { FR24, -1 }, { FR24, -1 },     \
379         { FR25, -1 }, { FR25, -1 },     \
380         { FR26, -1 }, { FR26, -1 },     \
381         { FR27, -1 }, { FR27, -1 },     \
382         { FR28, -1 }, { FR28, -1 },     \
383         { FR29, -1 }, { FR29, -1 },     \
384         { FR30, -1 }, { FR30, -1 },     \
385         { FR31, -1 }, { FR31, -1 },
386 #endif
387
388 #define PCLASS(p)       \
389         (p->n_type == LONGLONG || p->n_type == ULONGLONG ? SBREG : \
390         (p->n_type == FLOAT ? SCREG : \
391         (p->n_type == DOUBLE || p->n_type == LDOUBLE ? SDREG : SAREG)))
392
393 #define NUMCLASS        4       /* highest number of reg classes used */
394
395 int COLORMAP(int cint *r);
396 #define GCLASS(x) (x < 31? CLASSA : (x < 44? CLASSB : (x < 73? CLASSD : CLASSC)))
397 #define DECRA(x,y)      (((x) >> (y*8)) & 255)  /* decode encoded regs */
398 #define ENCRD(x)        (x)                     /* Encode dest reg in n_reg */
399 #define ENCRA1(x)       ((x) << 8)              /* A1 */
400 #define ENCRA2(x)       ((x) << 16)             /* A2 */
401 #define ENCRA(x,y)      ((x) << (8+y*8))        /* encode regs in int */
402 #define RETREG(x)       (x == LONGLONG || x == ULONGLONG ? RETD0 : \
403                          x == FLOATFR4L : \
404                          x == DOUBLE || x == LDOUBLE ? FR4 : RET0)
405
406 #define FPREG   FP      /* frame pointer */
407 #define STKREG  SP      /* stack pointer */
408
409 #define MYREADER(p)     myreader(p)
410 #define MYCANON(p)      mycanon(p)
411 #define MYOPTIM
412
413 #define SFUNCALL        (MAXSPECIAL+1)  /* struct assign after function call */
414 #define SPCON           (MAXSPECIAL+2)  /* smaller constant */
415 #define SPICON          (MAXSPECIAL+3)  /* even smaller constant */
416 #define SPNAME          (MAXSPECIAL+4)  /* ext symbol reference load/store */
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-10-31 11:41 +0100