Quick Search:

View

Revision:
Expand:  
Changeset: MAIN:gmcgarry:20071105145703

Diff

Diff from 1.2 to:

Annotations

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

Annotated File View

gmcgarry
1.2
1 /*      $Id: macdefs.h,v 1.2 2007/11/05 14:57:03 gmcgarry Exp $ */
ragge
1.1
2 /*
3  * Copyright (c) 2003 Anders Magnusson (ragge@ludd.luth.se).
4  * All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  * 1. Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright
12  *    notice, this list of conditions and the following disclaimer in the
13  *    documentation and/or other materials provided with the distribution.
14  * 3. The name of the author may not be used to endorse or promote products
15  *    derived from this software without specific prior written permission
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27  */
28
29 /*
30  * MIPS port by Jan Enoksson (janeno-1@student.ltu.se) and
31  * Simon Olsson (simols-1@student.ltu.se) 2005.
32  */
33
34 /*
35  * Machine-dependent defines for both passes.
36  */
37
38 /*
39  * Convert (multi-)character constant to integer.
40  * Assume: If only one value; store at left side (char size), otherwise 
41  * treat it as an integer.
42  */
43 #define makecc(val,i)   lastcon = (lastcon<<8)|((val<<24)>>24);
44
gmcgarry
1.2
45 #define ARGINIT         (8*8)   /* # bits above fp where arguments start */
ragge
1.1
46 #define AUTOINIT        0       /* # bits below fp where automatics start */
47
48 /*
49  * Storage space requirements
50  */
51 #define SZCHAR          8
gmcgarry
1.2
52 #define SZBOOL          32
ragge
1.1
53 #define SZINT           32
54 #define SZFLOAT         32
55 #define SZDOUBLE        64
56 #define SZLDOUBLE       96
57 #define SZLONG          32
58 #define SZSHORT         16
59 #define SZLONGLONG      64
60 #define SZPOINT(t)      32
61
62 /*
63  * Alignment constraints
64  */
65 #define ALCHAR          8
gmcgarry
1.2
66 #define ALBOOL          32
ragge
1.1
67 #define ALINT           32
68 #define ALFLOAT         32
69 #define ALDOUBLE        32
70 #define ALLDOUBLE       32
71 #define ALLONG          32
72 #define ALLONGLONG      32
73 #define ALSHORT         16
74 #define ALPOINT         32
75 #define ALSTRUCT        32
76 #define ALSTACK         32 
77
78 /*
79  * Min/max values.
80  */
81 #define MIN_CHAR        -128
82 #define MAX_CHAR        127
83 #define MAX_UCHAR       255
84 #define MIN_SHORT       -32768
85 #define MAX_SHORT       32767
86 #define MAX_USHORT      65535
87 #define MIN_INT         -1
88 #define MAX_INT         0x7fffffff
89 #define MAX_UNSIGNED    0xffffffff
90 #define MIN_LONG        MIN_INT
91 #define MAX_LONG        MAX_INT
92 #define MAX_ULONG       MAX_UNSIGNED
93 #define MIN_LONGLONG    0x8000000000000000LL
94 #define MAX_LONGLONG    0x7fffffffffffffffLL
95 #define MAX_ULONGLONG   0xffffffffffffffffULL
96
97 #undef  CHAR_UNSIGNED
gmcgarry
1.2
98 #define TARGET_STDARGS
99 #define BOOL_TYPE       INT
100 #define WCHAR_TYPE      INT
ragge
1.1
101
102 /*
103  * Use large-enough types.
104  */
105 typedef long long CONSZ;
106 typedef unsigned long long U_CONSZ;
107 typedef long long OFFSZ;
108
109 #define CONFMT  "%lld"          /* format for printing constants */
gmcgarry
1.2
110 #define LABFMT  "L%d"           /* format for printing labels */
111 #define STABLBL "LL%d"          /* format for stab (debugging) labels */
ragge
1.1
112 #ifdef FORTRAN
113 #define XL 8
114 #define FLABELFMT "%s:\n"
115 #define USETEXT ".text"
116 #define USECONST ".data\t0"     /* XXX - fix */
117 #define USEBSS  ".data\t1"      /* XXX - fix */
118 #define USEINIT ".data\t2"      /* XXX - fix */
119 #define MAXREGVAR 3             /* XXX - fix */
120 #define BLANKCOMMON "_BLNK_"
121 #define MSKIREG  (M(TYSHORT)|M(TYLONG))
122 #define TYIREG TYLONG
123 #define FSZLENG  FSZLONG
124 #define FUDGEOFFSET 1
125 #define AUTOREG EBP
126 #define ARGREG  EBP
127 #define ARGOFFSET 4
128 #endif
129
130 #define BACKAUTO                /* stack grows negatively for automatics */
131 #define BACKTEMP                /* stack grows negatively for temporaries */
132
133 #define MYP2TREE(p) myp2tree(p);
134
135 #undef  FIELDOPS                /* no bit-field instructions */
136 #define RTOLBYTES               /* bytes are numbered right to left */
137
138 #define ENUMSIZE(high,low) INT  /* enums are always stored in full int */
139
140 /* Definitions mostly used in pass2 */
141
142 #define BYTEOFF(x)      ((x)&03)
143 #define wdal(k)         (BYTEOFF(k)==0)
144 #define BITOOR(x)       ((x)/SZCHAR)    /* bit offset to oreg offset */
145
146 #define STOARG(p)
147 #define STOFARG(p)
148 #define STOSTARG(p)
149 #define genfcall(a,b)   gencall(a,b)
150
151 #define szty(t) (((t) == DOUBLE || (t) == FLOAT || \
152         (t) == LONGLONG || (t) == ULONGLONG) ? 2 : 1)
153
154 /*
155  * Register names.  These must match rnames[] and rstatus[] in local2.c.
156  * The crazy order of the registers are due to the current register
157  * allocations strategy and should be fixed.
158  */
159 #define T0 0    
160 #define T1 1    
161 #define T2 2    
162 #define T3 3    
163 #define T4 4    
164 #define T5 5    
165 #define T6 6    
166 #define T7 7
167 #define T8 8
168 #define T9 9
169
170 #define V0 10
171 #define V1 11
172
173 #define ZERO 12
174 #define AT 13
175
176 #define A0 14
177 #define A1 15
178 #define A2 16
179 #define A3 17
180
181 #define S0 18
182 #define S1 19
183 #define S2 20
184 #define S3 21
185 #define S4 22
186 #define S5 23
187 #define S6 24
188 #define S7 25
189
190 #define K0 26
191 #define K1 27
192
193 #define GP 28
194 #define SP 29
195 #define FP 30
196 #define RA 31
197
gmcgarry
1.2
198 #define A0A1    32
199 #define A1A2    33
200 #define A2A3    34
201 #define T0T1    35
202 #define T1T2    36
203 #define T2T3    37
204 #define T3T4    38
205 #define T4T5    39
206 #define T5T6    40
207 #define T6T7    41
208
209 #define RETREG(x)       V0
ragge
1.1
210 #define FPREG   FP      /* frame pointer */
gmcgarry
1.2
211 #define STKREG  SP
212
ragge
1.1
213 #define MINRVAR S0      /* first register variable */
214 #define MAXRVAR S7      /* last register variable */
gmcgarry
1.2
215 #define NREGREG (MAXRVAR-MINRVAR+1)
216
217 #define MAXREGS 32
218 #define NUMCLASS 4
ragge
1.1
219
gmcgarry
1.2
220 #define RSTATUS \
221         SAREG|TEMPREGSAREG|TEMPREGSAREG|TEMPREGSAREG|TEMPREG,     \
222         SAREG|TEMPREGSAREG|TEMPREGSAREG|TEMPREGSAREG|TEMPREG,     \
223         SAREG|TEMPREGSAREG|TEMPREGSAREG|TEMPREGSAREG|TEMPREG,     \
224         00,                                                           \
225         SAREG|TEMPREGSAREG|TEMPREGSAREG|TEMPREGSAREG|TEMPREG,     \
226         SAREG|PERMREGSAREG|PERMREGSAREG|PERMREGSAREG|PERMREG,     \
227         SAREG|PERMREGSAREG|PERMREGSAREG|PERMREGSAREG|PERMREG,     \
228         00,                                                           \
229         0000
230
231 #define ROVERLAP \
232         { -1 }, { -1 }, { -1 }, { -1 },                                 \
233         { -1 }, { -1 }, { -1 }, { -1 },                                 \
234         { -1 }, { -1 }, { -1 }, { -1 },                                 \
235         { -1 }, { -1 }, { -1 }, { -1 },                                 \
236         { -1 }, { -1 }, { -1 }, { -1 },                                 \
237         { -1 }, { -1 }, { -1 }, { -1 },                                 \
238         { -1 }, { -1 }, { -1 }, { -1 },                                 \
239         { -1 }, { -1 }, { -1 }, { -1 }
240
241 #define GCLASS(x)       CLASSA
242 #define PCLASS(p)       SAREG
243 #define DECRA(x,y)      (((x) >> (y*6)) & 63)   /* decode encoded regs */
244 #define ENCRA(x,y)      ((x) << (6+y*6))        /* encode regs in int */
245 #if 0
246 #define GCLASS(x)       CLASSA
247 #define ENCRD(x)        (x)             /* Encode dest reg in n_reg */
248 #define ENCRA1(x)       ((x) << 6)      /* A1 */
249 #define ENCRA2(x)       ((x) << 12)     /* A2 */
250 #endif
ragge
1.1
251
gmcgarry
1.2
252 int COLORMAP(int cint *r);
ragge
1.1
253
254 #define MYREADER(p) myreader(p)
255 #define MYCANON(p) mycanon(p)
256 #define MYOPTIM
257
258 #define special(a, b)   SRNOPE
FishEye: Open Source License registered to PCC.
Atlassian FishEye, CVS analysis. (Version:1.6.3 Build:build-336 2008-11-04) - Administration - Page generated 2014-12-22 01:39 +0100