Quick Search:

View

Revision:
Expand:  
Changeset: MAIN:ragge:20060417132352

Diff

Diff from 1.1 to:

Annotations

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

Annotated File View

ragge
1.1
1 /*      $Id: macdefs.h,v 1.1 2006/04/17 13:23:52 ragge Exp $    */
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
45 #define ARGINIT         64      /* # bits above fp where arguments start */
46 #define AUTOINIT        0       /* # bits below fp where automatics start */
47
48 /*
49  * Storage space requirements
50  */
51 #define SZCHAR          8
52 #define SZINT           32
53 #define SZFLOAT         32
54 #define SZDOUBLE        64
55 #define SZLDOUBLE       96
56 #define SZLONG          32
57 #define SZSHORT         16
58 #define SZLONGLONG      64
59 #define SZPOINT(t)      32
60
61 /*
62  * Alignment constraints
63  */
64 #define ALCHAR          8
65 #define ALINT           32
66 #define ALFLOAT         32
67 #define ALDOUBLE        32
68 #define ALLDOUBLE       32
69 #define ALLONG          32
70 #define ALLONGLONG      32
71 #define ALSHORT         16
72 #define ALPOINT         32
73 #define ALSTRUCT        32
74 #define ALSTACK         32 
75
76 /*
77  * Min/max values.
78  */
79 #define MIN_CHAR        -128
80 #define MAX_CHAR        127
81 #define MAX_UCHAR       255
82 #define MIN_SHORT       -32768
83 #define MAX_SHORT       32767
84 #define MAX_USHORT      65535
85 #define MIN_INT         -1
86 #define MAX_INT         0x7fffffff
87 #define MAX_UNSIGNED    0xffffffff
88 #define MIN_LONG        MIN_INT
89 #define MAX_LONG        MAX_INT
90 #define MAX_ULONG       MAX_UNSIGNED
91 #define MIN_LONGLONG    0x8000000000000000LL
92 #define MAX_LONGLONG    0x7fffffffffffffffLL
93 #define MAX_ULONGLONG   0xffffffffffffffffULL
94
95 /* Default char is unsigned */
96 #undef  CHAR_UNSIGNED
97
98 /*
99  * Use large-enough types.
100  */
101 typedef long long CONSZ;
102 typedef unsigned long long U_CONSZ;
103 typedef long long OFFSZ;
104
105 #define CONFMT  "%lld"          /* format for printing constants */
106 #define LABFMT  ".L%d"          /* format for printing labels */
107 #define STABLBL ".LL%d"         /* format for stab (debugging) labels */
108 #ifdef FORTRAN
109 #define XL 8
110 #define FLABELFMT "%s:\n"
111 #define USETEXT ".text"
112 #define USECONST ".data\t0"     /* XXX - fix */
113 #define USEBSS  ".data\t1"      /* XXX - fix */
114 #define USEINIT ".data\t2"      /* XXX - fix */
115 #define MAXREGVAR 3             /* XXX - fix */
116 #define BLANKCOMMON "_BLNK_"
117 #define MSKIREG  (M(TYSHORT)|M(TYLONG))
118 #define TYIREG TYLONG
119 #define FSZLENG  FSZLONG
120 #define FUDGEOFFSET 1
121 #define AUTOREG EBP
122 #define ARGREG  EBP
123 #define ARGOFFSET 4
124 #endif
125
126 #define BACKAUTO                /* stack grows negatively for automatics */
127 #define BACKTEMP                /* stack grows negatively for temporaries */
128
129 #define MYP2TREE(p) myp2tree(p);
130
131 #undef  FIELDOPS                /* no bit-field instructions */
132 #define RTOLBYTES               /* bytes are numbered right to left */
133
134 #define ENUMSIZE(high,low) INT  /* enums are always stored in full int */
135
136 /* Definitions mostly used in pass2 */
137
138 #define BYTEOFF(x)      ((x)&03)
139 #define wdal(k)         (BYTEOFF(k)==0)
140 #define BITOOR(x)       ((x)/SZCHAR)    /* bit offset to oreg offset */
141
142 #define STOARG(p)
143 #define STOFARG(p)
144 #define STOSTARG(p)
145 #define genfcall(a,b)   gencall(a,b)
146
147 #define szty(t) (((t) == DOUBLE || (t) == FLOAT || \
148         (t) == LONGLONG || (t) == ULONGLONG) ? 2 : 1)
149
150 /*
151  * Register names.  These must match rnames[] and rstatus[] in local2.c.
152  * The crazy order of the registers are due to the current register
153  * allocations strategy and should be fixed.
154  */
155 #define T0 0    
156 #define T1 1    
157 #define T2 2    
158 #define T3 3    
159 #define T4 4    
160 #define T5 5    
161 #define T6 6    
162 #define T7 7
163 #define T8 8
164 #define T9 9
165
166 #define V0 10
167 #define V1 11
168
169 #define ZERO 12
170 #define AT 13
171
172 #define A0 14
173 #define A1 15
174 #define A2 16
175 #define A3 17
176
177 #define S0 18
178 #define S1 19
179 #define S2 20
180 #define S3 21
181 #define S4 22
182 #define S5 23
183 #define S6 24
184 #define S7 25
185
186 #define K0 26
187 #define K1 27
188
189 #define GP 28
190 #define SP 29
191 #define FP 30
192 #define RA 31
193
194 #define RETREG  V0      /* Return register */
195 #define REGSZ   32      /* number of registers */
196 #define FPREG   FP      /* frame pointer */
197 #define STKREG  SP      /* stack pointer */
198 #define MINRVAR S0      /* first register variable */
199 #define MAXRVAR S7      /* last register variable */
200
201 #define NREGREG (MAXRVAR-MINRVAR+1)
202
203 /*
204  * Register types are described by bitmasks.
205  */
206 #define AREGS   (REGBIT(T0)|REGBIT(T1)|REGBIT(T2)|REGBIT(T3)| \
207         REGBIT(T4)|REGBIT(T5)|REGBIT(T6)|REGBIT(T7)|REGBIT(T8)|REGBIT(T9)|\
208         REGBIT(V0)|REGBIT(V1)|REGBIT(A0)|REGBIT(A1)|REGBIT(A2)|REGBIT(A3)|\
209         REGBIT(S0)|REGBIT(S1)|REGBIT(S2)|REGBIT(S3)|REGBIT(S4)|REGBIT(S5)|\
210         REGBIT(S6)|REGBIT(S7))
211 #define TAREGS  (REGBIT(T0)|REGBIT(T1)|REGBIT(T2)|REGBIT(T3)|REGBIT(T4)|\
212                  REGBIT(T5)|REGBIT(T6)|REGBIT(T7)|REGBIT(T8)|REGBIT(T9)|\
213                  REGBIT(V0)|REGBIT(V1))
214
215 /* For floating point? */
216 #define BREGS   0xff00
217 #define TBREGS  BREGS   
218
219 //#define       MYADDEDGE(x, t) if (t < INT) { AddEdge(x, ESI); AddEdge(x, EDI); }
220 #define MYADDEDGE(x, t)
221 #define PCLASS(p) SAREG
222
223 #define MYREADER(p) myreader(p)
224 #define MYCANON(p) mycanon(p)
225 #define MYOPTIM
226
227 #define special(a, b)   SRNOPE
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-08-23 20:12 +0200