| 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 32
|
|---|
| 64 | #define ALSHORT 16
|
|---|
| 65 | #define ALPOINT 32
|
|---|
| 66 | #define ALSTRUCT 32
|
|---|
| 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 ENUMSIZE(high,low) INT
|
|---|
| 91 |
|
|---|
| 92 | typedef long long CONSZ;
|
|---|
| 93 | typedef unsigned long long U_CONSZ;
|
|---|
| 94 | typedef long long OFFSZ;
|
|---|
| 95 |
|
|---|
| 96 | #define CONFMT "%lld" /* format for printing constants */
|
|---|
| 97 | #define LABFMT ".L%d" /* format for printing labels */
|
|---|
| 98 | #define STABLBL ".LL%d" /* format for stab (debugging) labels */
|
|---|
| 99 |
|
|---|
| 100 | #undef BACKAUTO /* stack grows upwards */
|
|---|
| 101 | #undef BACKTEMP /* stack grows upwards */
|
|---|
| 102 |
|
|---|
| 103 | #define FIELDOPS /* have bit field ops */
|
|---|
| 104 | #define LTORBYTES /* big endian */
|
|---|
| 105 |
|
|---|
| 106 | #define BYTEOFF(x) ((x)&03)
|
|---|
| 107 | #define wdal(k) (BYTEOFF(k)==0)
|
|---|
| 108 | #define BITOOR(x) (x) /* bit offset to oreg offset XXX die! */
|
|---|
| 109 |
|
|---|
| 110 | #define STOARG(p)
|
|---|
| 111 | #define STOFARG(p)
|
|---|
| 112 | #define STOSTARG(p)
|
|---|
| 113 |
|
|---|
| 114 | #define szty(t) (((t) == DOUBLE || (t) == LONGLONG || (t) == ULONGLONG) ? 2 : \
|
|---|
| 115 | (t) == LDOUBLE ? 2 : 1)
|
|---|
| 116 |
|
|---|
| 117 | #define R0 0
|
|---|
| 118 | #define R1 1
|
|---|
| 119 | #define RP 2
|
|---|
| 120 | #define FP 3
|
|---|
| 121 | #define R4 4
|
|---|
| 122 | #define R5 5
|
|---|
| 123 | #define R6 6
|
|---|
| 124 | #define R7 7
|
|---|
| 125 | #define R8 8
|
|---|
| 126 | #define R9 9
|
|---|
| 127 | #define R10 10
|
|---|
| 128 | #define R11 11
|
|---|
| 129 | #define R12 12
|
|---|
| 130 | #define R13 13
|
|---|
| 131 | #define R14 14
|
|---|
| 132 | #define R15 15
|
|---|
| 133 | #define R16 16
|
|---|
| 134 | #define R17 17
|
|---|
| 135 | #define R18 18
|
|---|
| 136 | #define T4 19
|
|---|
| 137 | #define T3 20
|
|---|
| 138 | #define T2 21
|
|---|
| 139 | #define T1 22
|
|---|
| 140 | #define ARG3 23
|
|---|
| 141 | #define ARG2 24
|
|---|
| 142 | #define ARG1 25
|
|---|
| 143 | #define ARG0 26
|
|---|
| 144 | #define DP 27
|
|---|
| 145 | #define RET0 28
|
|---|
| 146 | #define RET1 29
|
|---|
| 147 | #define SP 30
|
|---|
| 148 | #define R31 31
|
|---|
| 149 |
|
|---|
| 150 | /* double regs overlay */
|
|---|
| 151 | #define RD0 32 /* r0:r0 */
|
|---|
| 152 | #define RD1 33 /* r1:r31 */
|
|---|
| 153 | #define RD2 34 /* r1:t4 */
|
|---|
| 154 | #define RD3 35 /* r1:t3 */
|
|---|
| 155 | #define RD4 36 /* r1:t2 */
|
|---|
| 156 | #define RD5 37 /* r1:t1 */
|
|---|
| 157 | #define RD6 38 /* r31:t4 */
|
|---|
| 158 | #define RD7 39 /* r31:t3 */
|
|---|
| 159 | #define RD8 40 /* r31:t2 */
|
|---|
| 160 | #define RD9 41 /* r31:t1 */
|
|---|
| 161 | #define RD10 42 /* r4:r18 */
|
|---|
| 162 | #define RD11 43 /* r5:r4 */
|
|---|
| 163 | #define RD12 44 /* r6:r5 */
|
|---|
| 164 | #define RD13 45 /* r7:r6 */
|
|---|
| 165 | #define RD14 46 /* r8:r7 */
|
|---|
| 166 | #define RD15 47 /* r9:r8 */
|
|---|
| 167 | #define RD16 48 /* r10:r9 */
|
|---|
| 168 | #define RD17 49 /* r11:r10 */
|
|---|
| 169 | #define RD18 50 /* r12:r11 */
|
|---|
| 170 | #define RD19 51 /* r13:r12 */
|
|---|
| 171 | #define RD20 52 /* r14:r13 */
|
|---|
| 172 | #define RD21 53 /* r15:r14 */
|
|---|
| 173 | #define RD22 54 /* r16:r15 */
|
|---|
| 174 | #define RD23 55 /* r17:r16 */
|
|---|
| 175 | #define RD24 56 /* r18:r17 */
|
|---|
| 176 | #define TD4 57 /* t1:t4 */
|
|---|
| 177 | #define TD3 58 /* t4:t3 */
|
|---|
| 178 | #define TD2 59 /* t3:t2 */
|
|---|
| 179 | #define TD1 60 /* t2:t1 */
|
|---|
| 180 | #define AD2 61 /* arg3:arg2 */
|
|---|
| 181 | #define AD1 62 /* arg1:arg0 */
|
|---|
| 182 | #define RETD0 63 /* ret1:ret0 */
|
|---|
| 183 |
|
|---|
| 184 | /* FPU regs */
|
|---|
| 185 | #define FR0 64
|
|---|
| 186 | #define FR4 65
|
|---|
| 187 | #define FR5 66
|
|---|
| 188 | #define FR6 67
|
|---|
| 189 | #define FR7 68
|
|---|
| 190 | #define FR8 69
|
|---|
| 191 | #define FR9 70
|
|---|
| 192 | #define FR10 71
|
|---|
| 193 | #define FR11 72
|
|---|
| 194 | #define FR12 73
|
|---|
| 195 | #define FR13 74
|
|---|
| 196 | #define FR14 75
|
|---|
| 197 | #define FR15 76
|
|---|
| 198 | #define FR16 77
|
|---|
| 199 | #define FR17 78
|
|---|
| 200 | #define FR18 79
|
|---|
| 201 | #define FR19 80
|
|---|
| 202 | #define FR20 81
|
|---|
| 203 | #define FR21 82
|
|---|
| 204 | #define FR22 83
|
|---|
| 205 | #define FR23 84
|
|---|
| 206 | #define FR24 85
|
|---|
| 207 | #define FR25 86
|
|---|
| 208 | #define FR26 87
|
|---|
| 209 | #define FR27 88
|
|---|
| 210 | #define FR28 89
|
|---|
| 211 | #define FR29 90
|
|---|
| 212 | #define FR30 91
|
|---|
| 213 | #define FR31 92
|
|---|
| 214 |
|
|---|
| 215 | #define FR0L 93
|
|---|
| 216 | #define FR0R 94
|
|---|
| 217 | #define FR4L 95
|
|---|
| 218 | #define FR4R 96
|
|---|
| 219 | #define FR5L 97
|
|---|
| 220 | #define FR5R 98
|
|---|
| 221 | #define FR6L 99
|
|---|
| 222 | #define FR6R 100
|
|---|
| 223 | #define FR7L 101
|
|---|
| 224 | #define FR7R 102
|
|---|
| 225 | #define FR8L 103
|
|---|
| 226 | #define FR8R 104
|
|---|
| 227 | #define FR9L 105
|
|---|
| 228 | #define FR9R 106
|
|---|
| 229 | #define FR10L 107
|
|---|
| 230 | #define FR10R 108
|
|---|
| 231 | #define FR11L 109
|
|---|
| 232 | #define FR11R 110
|
|---|
| 233 | #define FR12L 111
|
|---|
| 234 | #define FR12R 112
|
|---|
| 235 | #define FR13L 113
|
|---|
| 236 | #define FR13R 114
|
|---|
| 237 | #define FR14L 115
|
|---|
| 238 | #define FR14R 116
|
|---|
| 239 | #define FR15L 117
|
|---|
| 240 | #define FR15R 118
|
|---|
| 241 | #define FR16L 119
|
|---|
| 242 | #define FR16R 120
|
|---|
| 243 | #define FR17L 121
|
|---|
| 244 | #define FR17R 122
|
|---|
| 245 | #define FR18L 123
|
|---|
| 246 | #define FR18R 124
|
|---|
| 247 | #ifdef __hppa64__
|
|---|
| 248 | #define FR19L 125
|
|---|
| 249 | #define FR19R 126
|
|---|
| 250 | #define FR20L 127
|
|---|
| 251 | #define FR20R 128
|
|---|
| 252 | #define FR21L 129
|
|---|
| 253 | #define FR21R 130
|
|---|
| 254 | #define FR22L 131
|
|---|
| 255 | #define FR22R 132
|
|---|
| 256 | #define FR23L 133
|
|---|
| 257 | #define FR23R 134
|
|---|
| 258 | #define FR24L 135
|
|---|
| 259 | #define FR24R 136
|
|---|
| 260 | #define FR25L 137
|
|---|
| 261 | #define FR25R 138
|
|---|
| 262 | #define FR26L 139
|
|---|
| 263 | #define FR26R 140
|
|---|
| 264 | #define FR27L 141
|
|---|
| 265 | #define FR27R 142
|
|---|
| 266 | #define FR28L 143
|
|---|
| 267 | #define FR28R 144
|
|---|
| 268 | #define FR29L 145
|
|---|
| 269 | #define FR29R 146
|
|---|
| 270 | #define FR30L 147
|
|---|
| 271 | #define FR30R 148
|
|---|
| 272 | #define FR31L 149
|
|---|
| 273 | #define FR31R 150
|
|---|
| 274 |
|
|---|
| 275 | #define MAXREGS 151
|
|---|
| 276 | #else
|
|---|
| 277 | #define MAXREGS 125
|
|---|
| 278 | #endif
|
|---|
| 279 |
|
|---|
| 280 | #define RSTATUS \
|
|---|
| 281 | 0, SAREG|TEMPREG, 0, 0, SAREG|PERMREG, SAREG|PERMREG, \
|
|---|
| 282 | SAREG|PERMREG, SAREG|PERMREG, SAREG|PERMREG, SAREG|PERMREG, \
|
|---|
| 283 | SAREG|PERMREG, SAREG|PERMREG, SAREG|PERMREG, SAREG|PERMREG, \
|
|---|
| 284 | SAREG|PERMREG, SAREG|PERMREG, SAREG|PERMREG, SAREG|PERMREG, \
|
|---|
| 285 | SAREG|PERMREG, \
|
|---|
| 286 | SAREG|TEMPREG, SAREG|TEMPREG, SAREG|TEMPREG, SAREG|TEMPREG, \
|
|---|
| 287 | SAREG|TEMPREG, SAREG|TEMPREG, SAREG|TEMPREG, SAREG|TEMPREG, \
|
|---|
| 288 | 0, SAREG|TEMPREG, SAREG|TEMPREG, 0, SAREG|TEMPREG, \
|
|---|
| 289 | /* double overlays */ \
|
|---|
| 290 | 0, \
|
|---|
| 291 | SBREG, SBREG, SBREG, SBREG, SBREG, SBREG, SBREG, SBREG, \
|
|---|
| 292 | SBREG, SBREG, SBREG, SBREG, SBREG, SBREG, SBREG, SBREG, \
|
|---|
| 293 | SBREG, SBREG, SBREG, SBREG, SBREG, SBREG, SBREG, SBREG, \
|
|---|
| 294 | SBREG, SBREG, SBREG, SBREG, SBREG, SBREG, SBREG, \
|
|---|
| 295 | /* double-precision floats */ \
|
|---|
| 296 | 0, \
|
|---|
| 297 | SDREG|TEMPREG, SDREG|TEMPREG, SDREG|TEMPREG, SDREG|TEMPREG, \
|
|---|
| 298 | SDREG|TEMPREG, SDREG|TEMPREG, SDREG|TEMPREG, SDREG|TEMPREG, \
|
|---|
| 299 | SDREG|PERMREG, SDREG|PERMREG, SDREG|PERMREG, SDREG|PERMREG, \
|
|---|
| 300 | SDREG|PERMREG, SDREG|PERMREG, SDREG|PERMREG, SDREG|PERMREG, \
|
|---|
| 301 | SDREG|PERMREG, SDREG|PERMREG, \
|
|---|
| 302 | SDREG|TEMPREG, SDREG|TEMPREG, SDREG|TEMPREG, SDREG|TEMPREG, \
|
|---|
| 303 | SDREG|TEMPREG, SDREG|TEMPREG, SDREG|TEMPREG, SDREG|TEMPREG, \
|
|---|
| 304 | SDREG|TEMPREG, SDREG|TEMPREG, \
|
|---|
| 305 | /* single-precision floats */ \
|
|---|
| 306 | 0, 0, \
|
|---|
| 307 | SCREG, SCREG, SCREG, SCREG, SCREG, SCREG, SCREG, SCREG, \
|
|---|
| 308 | SCREG, SCREG, SCREG, SCREG, SCREG, SCREG, SCREG, SCREG, \
|
|---|
| 309 | SCREG, SCREG, SCREG, SCREG, SCREG, SCREG, SCREG, SCREG, \
|
|---|
| 310 | SCREG, SCREG, SCREG, SCREG, SCREG, SCREG,
|
|---|
| 311 | #ifdef __hppa64__
|
|---|
| 312 | SCREG, SCREG, \
|
|---|
| 313 | SCREG, SCREG, SCREG, SCREG, SCREG, SCREG, SCREG, SCREG, \
|
|---|
| 314 | SCREG, SCREG, SCREG, SCREG, SCREG, SCREG, SCREG, SCREG, \
|
|---|
| 315 | SCREG, SCREG, SCREG, SCREG, SCREG, SCREG, SCREG, SCREG,
|
|---|
| 316 | #endif
|
|---|
| 317 |
|
|---|
| 318 | #define ROVERLAP \
|
|---|
| 319 | { -1 }, \
|
|---|
| 320 | { RD1, RD2, RD3, RD4, RD5, -1 },\
|
|---|
| 321 | { -1 }, { -1 }, \
|
|---|
| 322 | { RD10, RD11, -1 }, \
|
|---|
| 323 | { RD11, RD12, -1 }, \
|
|---|
| 324 | { RD12, RD13, -1 }, \
|
|---|
| 325 | { RD13, RD14, -1 }, \
|
|---|
| 326 | { RD14, RD15, -1 }, \
|
|---|
| 327 | { RD15, RD16, -1 }, \
|
|---|
| 328 | { RD16, RD17, -1 }, \
|
|---|
| 329 | { RD17, RD18, -1 }, \
|
|---|
| 330 | { RD18, RD19, -1 }, \
|
|---|
| 331 | { RD19, RD20, -1 }, \
|
|---|
| 332 | { RD20, RD21, -1 }, \
|
|---|
| 333 | { RD21, RD22, -1 }, \
|
|---|
| 334 | { RD22, RD23, -1 }, \
|
|---|
| 335 | { RD23, RD24, -1 }, \
|
|---|
| 336 | { RD24, RD10, -1 }, \
|
|---|
| 337 | { TD1, TD4, -1 }, \
|
|---|
| 338 | { TD3, TD2, -1 }, \
|
|---|
| 339 | { TD1, TD2, -1 }, \
|
|---|
| 340 | { TD1, TD4, -1 }, \
|
|---|
| 341 | { AD2, -1 }, { AD2, -1 }, \
|
|---|
| 342 | { AD1, -1 }, { AD1, -1 }, \
|
|---|
| 343 | { -1 }, \
|
|---|
| 344 | { RETD0, -1 }, { RETD0, -1 }, \
|
|---|
| 345 | { -1 }, \
|
|---|
| 346 | { RD1, RD5, RD6, RD7, RD8, -1 },\
|
|---|
| 347 | { -1 }, \
|
|---|
| 348 | { R1, R31, -1 }, \
|
|---|
| 349 | { R1, T4, -1 }, \
|
|---|
| 350 | { R1, T3, -1 }, \
|
|---|
| 351 | { R1, T2, -1 }, \
|
|---|
| 352 | { R1, T1, -1 }, \
|
|---|
| 353 | { R31, T4, -1 }, \
|
|---|
| 354 | { R31, T3, -1 }, \
|
|---|
| 355 | { R31, T2, -1 }, \
|
|---|
| 356 | { R31, T1, -1 }, \
|
|---|
| 357 | { R4, R18, -1 }, \
|
|---|
| 358 | { R5, R4, -1 }, \
|
|---|
| 359 | { R6, R5, -1 }, \
|
|---|
| 360 | { R7, R6, -1 }, \
|
|---|
| 361 | { R8, R7, -1 }, \
|
|---|
| 362 | { R9, R8, -1 }, \
|
|---|
| 363 | { R10, R9, -1 }, \
|
|---|
| 364 | { R11, R10, -1 }, \
|
|---|
| 365 | { R12, R11, -1 }, \
|
|---|
| 366 | { R13, R12, -1 }, \
|
|---|
| 367 | { R14, R15, -1 }, \
|
|---|
| 368 | { R15, R14, -1 }, \
|
|---|
| 369 | { R16, R15, -1 }, \
|
|---|
| 370 | { R17, R16, -1 }, \
|
|---|
| 371 | { R18, R17, -1 }, \
|
|---|
| 372 | { T1, T4, -1 }, \
|
|---|
| 373 | { T4, T3, -1 }, \
|
|---|
| 374 | { T3, T2, -1 }, \
|
|---|
| 375 | { T2, T1, -1 }, \
|
|---|
| 376 | { ARG3, ARG2, -1 }, \
|
|---|
| 377 | { ARG1, ARG0, -1 }, \
|
|---|
| 378 | { RET1, RET0, -1 }, \
|
|---|
| 379 | { -1 }, \
|
|---|
| 380 | { FR4L, FR4R, -1 }, \
|
|---|
| 381 | { FR5L, FR5R, -1 }, \
|
|---|
| 382 | { FR6L, FR6R, -1 }, \
|
|---|
| 383 | { FR7L, FR7R, -1 }, \
|
|---|
| 384 | { FR8L, FR8R, -1 }, \
|
|---|
| 385 | { FR9L, FR9R, -1 }, \
|
|---|
| 386 | { FR10L, FR10R, -1 }, \
|
|---|
| 387 | { FR11L, FR11R, -1 }, \
|
|---|
| 388 | { FR12L, FR12R, -1 }, \
|
|---|
| 389 | { FR13L, FR13R, -1 }, \
|
|---|
| 390 | { FR14L, FR14R, -1 }, \
|
|---|
| 391 | { FR15L, FR15R, -1 }, \
|
|---|
| 392 | { FR16L, FR16R, -1 }, \
|
|---|
| 393 | { FR17L, FR17R, -1 }, \
|
|---|
| 394 | { FR18L, FR18R, -1 }, \
|
|---|
| 395 | { -1 }, \
|
|---|
| 396 | { -1 }, \
|
|---|
| 397 | { -1 }, \
|
|---|
| 398 | { -1 }, \
|
|---|
| 399 | { -1 }, \
|
|---|
| 400 | { -1 }, \
|
|---|
| 401 | { -1 }, \
|
|---|
| 402 | { -1 }, \
|
|---|
| 403 | { -1 }, \
|
|---|
| 404 | { -1 }, \
|
|---|
| 405 | { -1 }, \
|
|---|
| 406 | { -1 }, \
|
|---|
| 407 | { -1 }, \
|
|---|
| 408 | { -1 }, { -1 }, \
|
|---|
| 409 | { FR4, -1 }, { FR4, -1 }, \
|
|---|
| 410 | { FR5, -1 }, { FR5, -1 }, \
|
|---|
| 411 | { FR6, -1 }, { FR6, -1 }, \
|
|---|
| 412 | { FR7, -1 }, { FR7, -1 }, \
|
|---|
| 413 | { FR8, -1 }, { FR8, -1 }, \
|
|---|
| 414 | { FR9, -1 }, { FR9, -1 }, \
|
|---|
| 415 | { FR10, -1 }, { FR10, -1 }, \
|
|---|
| 416 | { FR11, -1 }, { FR11, -1 }, \
|
|---|
| 417 | { FR12, -1 }, { FR12, -1 }, \
|
|---|
| 418 | { FR13, -1 }, { FR13, -1 }, \
|
|---|
| 419 | { FR14, -1 }, { FR14, -1 }, \
|
|---|
| 420 | { FR15, -1 }, { FR15, -1 }, \
|
|---|
| 421 | { FR16, -1 }, { FR16, -1 }, \
|
|---|
| 422 | { FR17, -1 }, { FR17, -1 }, \
|
|---|
| 423 | { FR18, -1 }, { FR18, -1 },
|
|---|
| 424 | #ifdef __hppa64__
|
|---|
| 425 | { FR19, -1 }, { FR19, -1 }, \
|
|---|
| 426 | { FR20, -1 }, { FR20, -1 }, \
|
|---|
| 427 | { FR21, -1 }, { FR21, -1 }, \
|
|---|
| 428 | { FR22, -1 }, { FR22, -1 }, \
|
|---|
| 429 | { FR23, -1 }, { FR23, -1 }, \
|
|---|
| 430 | { FR24, -1 }, { FR24, -1 }, \
|
|---|
| 431 | { FR25, -1 }, { FR25, -1 }, \
|
|---|
| 432 | { FR26, -1 }, { FR26, -1 }, \
|
|---|
| 433 | { FR27, -1 }, { FR27, -1 }, \
|
|---|
| 434 | { FR28, -1 }, { FR28, -1 }, \
|
|---|
| 435 | { FR29, -1 }, { FR29, -1 }, \
|
|---|
| 436 | { FR30, -1 }, { FR30, -1 }, \
|
|---|
| 437 | { FR31, -1 }, { FR31, -1 },
|
|---|
| 438 | #endif
|
|---|
| 439 |
|
|---|
| 440 | #define PCLASS(p) \
|
|---|
| 441 | (p->n_type == LONGLONG || p->n_type == ULONGLONG ? SBREG : \
|
|---|
| 442 | (p->n_type == FLOAT ? SCREG : \
|
|---|
| 443 | (p->n_type == DOUBLE || p->n_type == LDOUBLE ? SDREG : SAREG)))
|
|---|
| 444 |
|
|---|
| 445 | #define NUMCLASS 4 /* highest number of reg classes used */
|
|---|
| 446 |
|
|---|
| 447 | int COLORMAP(int c, int *r);
|
|---|
| 448 | #define PERMTYPE(x) ((x) < 32? INT : ((x) < 64? LONGLONG : ((x) < 93? LDOUBLE : FLOAT)))
|
|---|
| 449 | #define GCLASS(x) ((x) < 32? CLASSA : ((x) < 64? CLASSB : ((x) < 93? CLASSD : CLASSC)))
|
|---|
| 450 | #define DECRA(x,y) (((x) >> (y*8)) & 255) /* decode encoded regs */
|
|---|
| 451 | #define ENCRD(x) (x) /* Encode dest reg in n_reg */
|
|---|
| 452 | #define ENCRA1(x) ((x) << 8) /* A1 */
|
|---|
| 453 | #define ENCRA2(x) ((x) << 16) /* A2 */
|
|---|
| 454 | #define ENCRA(x,y) ((x) << (8+y*8)) /* encode regs in int */
|
|---|
| 455 | #define RETREG(x) (x == LONGLONG || x == ULONGLONG ? RETD0 : \
|
|---|
| 456 | x == FLOAT? FR4L : \
|
|---|
| 457 | x == DOUBLE || x == LDOUBLE ? FR4 : RET0)
|
|---|
| 458 |
|
|---|
| 459 | #define FPREG FP /* frame pointer */
|
|---|
| 460 | #define STKREG SP /* stack pointer */
|
|---|
| 461 |
|
|---|
| 462 | #define MYREADER(p) myreader(p)
|
|---|
| 463 | #define MYCANON(p) mycanon(p)
|
|---|
| 464 | #define MYOPTIM
|
|---|
| 465 |
|
|---|
| 466 | #define SFUNCALL (MAXSPECIAL+1) /* struct assign after function call */
|
|---|
| 467 | #define SPCNHI (MAXSPECIAL+2) /* high 21bits constant */
|
|---|
| 468 | #define SPCON (MAXSPECIAL+3) /* smaller constant */
|
|---|
| 469 | #define SPICON (MAXSPECIAL+4) /* even smaller constant */
|
|---|
| 470 | #define SPCNHW (MAXSPECIAL+5) /* LL const w/ 0 in low word */
|
|---|
| 471 | #define SPCNLW (MAXSPECIAL+6) /* LL const w/ 0 in high word */
|
|---|
| 472 | #define SPIMM (MAXSPECIAL+7) /* immidiate const for depi/comib */
|
|---|
| 473 | #define SPNAME (MAXSPECIAL+8) /* ext symbol reference load/store */
|
|---|