Changeset 609 for branches/GNU/src/binutils/opcodes/m32r-desc.c
- Timestamp:
- Aug 16, 2003, 6:59:22 PM (22 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/GNU/src/binutils/opcodes/m32r-desc.c
-
Property cvs2svn:cvs-rev
changed from
1.1
to1.1.1.2
r608 r609 3 3 THIS FILE IS MACHINE GENERATED WITH CGEN. 4 4 5 Copyright 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.5 Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. 6 6 7 7 This file is part of the GNU Binutils and/or GDB, the GNU debugger. … … 24 24 25 25 #include "sysdep.h" 26 #include <ctype.h>27 26 #include <stdio.h> 28 27 #include <stdarg.h> … … 34 33 #include "opintl.h" 35 34 #include "libiberty.h" 35 #include "xregex.h" 36 36 37 37 /* Attributes. */ … … 137 137 138 138 static const CGEN_MACH m32r_cgen_mach_table[] = { 139 { "m32r", "m32r", MACH_M32R },140 { "m32rx", "m32rx", MACH_M32RX },141 { 0, 0, 0 }139 { "m32r", "m32r", MACH_M32R, 0 }, 140 { "m32rx", "m32rx", MACH_M32RX, 0 }, 141 { 0, 0, 0, 0 } 142 142 }; 143 143 … … 169 169 & m32r_cgen_opval_gr_names_entries[0], 170 170 19, 171 0, 0, 0, 0 171 0, 0, 0, 0, "" 172 172 }; 173 173 … … 203 203 & m32r_cgen_opval_cr_names_entries[0], 204 204 23, 205 0, 0, 0, 0 205 0, 0, 0, 0, "" 206 206 }; 207 207 … … 216 216 & m32r_cgen_opval_h_accums_entries[0], 217 217 2, 218 0, 0, 0, 0 219 }; 220 218 0, 0, 0, 0, "" 219 }; 221 220 222 221 223 222 /* The hardware table. */ 224 223 225 #define A(a) (1 << CONCAT2 (CGEN_HW_,a)) 224 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE) 225 #define A(a) (1 << CGEN_HW_##a) 226 #else 227 #define A(a) (1 << CGEN_HW_/**/a) 228 #endif 226 229 227 230 const CGEN_HW_ENTRY m32r_cgen_hw_table[] = … … 250 253 #undef A 251 254 255 252 256 /* The instruction field table. */ 253 257 254 #define A(a) (1 << CONCAT2 (CGEN_IFLD_,a)) 258 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE) 259 #define A(a) (1 << CGEN_IFLD_##a) 260 #else 261 #define A(a) (1 << CGEN_IFLD_/**/a) 262 #endif 255 263 256 264 const CGEN_IFLD m32r_cgen_ifld_table[] = … … 287 295 #undef A 288 296 297 298 299 /* multi ifield declarations */ 300 301 302 303 /* multi ifield definitions */ 304 305 289 306 /* The operand table. */ 290 307 291 #define A(a) (1 << CONCAT2 (CGEN_OPERAND_,a)) 292 #define OPERAND(op) CONCAT2 (M32R_OPERAND_,op) 308 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE) 309 #define A(a) (1 << CGEN_OPERAND_##a) 310 #else 311 #define A(a) (1 << CGEN_OPERAND_/**/a) 312 #endif 313 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE) 314 #define OPERAND(op) M32R_OPERAND_##op 315 #else 316 #define OPERAND(op) M32R_OPERAND_/**/op 317 #endif 293 318 294 319 const CGEN_OPERAND m32r_cgen_operand_table[] = … … 296 321 /* pc: program counter */ 297 322 { "pc", M32R_OPERAND_PC, HW_H_PC, 0, 0, 323 { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_NIL] } }, 298 324 { 0|A(SEM_ONLY), { (1<<MACH_BASE) } } }, 299 325 /* sr: source register */ 300 326 { "sr", M32R_OPERAND_SR, HW_H_GR, 12, 4, 327 { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_R2] } }, 301 328 { 0, { (1<<MACH_BASE) } } }, 302 329 /* dr: destination register */ 303 330 { "dr", M32R_OPERAND_DR, HW_H_GR, 4, 4, 331 { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_R1] } }, 304 332 { 0, { (1<<MACH_BASE) } } }, 305 333 /* src1: source register 1 */ 306 334 { "src1", M32R_OPERAND_SRC1, HW_H_GR, 4, 4, 335 { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_R1] } }, 307 336 { 0, { (1<<MACH_BASE) } } }, 308 337 /* src2: source register 2 */ 309 338 { "src2", M32R_OPERAND_SRC2, HW_H_GR, 12, 4, 339 { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_R2] } }, 310 340 { 0, { (1<<MACH_BASE) } } }, 311 341 /* scr: source control register */ 312 342 { "scr", M32R_OPERAND_SCR, HW_H_CR, 12, 4, 343 { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_R2] } }, 313 344 { 0, { (1<<MACH_BASE) } } }, 314 345 /* dcr: destination control register */ 315 346 { "dcr", M32R_OPERAND_DCR, HW_H_CR, 4, 4, 347 { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_R1] } }, 316 348 { 0, { (1<<MACH_BASE) } } }, 317 349 /* simm8: 8 bit signed immediate */ 318 350 { "simm8", M32R_OPERAND_SIMM8, HW_H_SINT, 8, 8, 351 { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_SIMM8] } }, 319 352 { 0|A(HASH_PREFIX), { (1<<MACH_BASE) } } }, 320 353 /* simm16: 16 bit signed immediate */ 321 354 { "simm16", M32R_OPERAND_SIMM16, HW_H_SINT, 16, 16, 355 { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_SIMM16] } }, 322 356 { 0|A(HASH_PREFIX), { (1<<MACH_BASE) } } }, 323 357 /* uimm4: 4 bit trap number */ 324 358 { "uimm4", M32R_OPERAND_UIMM4, HW_H_UINT, 12, 4, 359 { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_UIMM4] } }, 325 360 { 0|A(HASH_PREFIX), { (1<<MACH_BASE) } } }, 326 361 /* uimm5: 5 bit shift count */ 327 362 { "uimm5", M32R_OPERAND_UIMM5, HW_H_UINT, 11, 5, 363 { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_UIMM5] } }, 328 364 { 0|A(HASH_PREFIX), { (1<<MACH_BASE) } } }, 329 365 /* uimm16: 16 bit unsigned immediate */ 330 366 { "uimm16", M32R_OPERAND_UIMM16, HW_H_UINT, 16, 16, 367 { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_UIMM16] } }, 331 368 { 0|A(HASH_PREFIX), { (1<<MACH_BASE) } } }, 332 369 /* imm1: 1 bit immediate */ 333 370 { "imm1", M32R_OPERAND_IMM1, HW_H_UINT, 15, 1, 371 { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_IMM1] } }, 334 372 { 0|A(HASH_PREFIX), { (1<<MACH_M32RX) } } }, 335 373 /* accd: accumulator destination register */ 336 374 { "accd", M32R_OPERAND_ACCD, HW_H_ACCUMS, 4, 2, 375 { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_ACCD] } }, 337 376 { 0, { (1<<MACH_M32RX) } } }, 338 377 /* accs: accumulator source register */ 339 378 { "accs", M32R_OPERAND_ACCS, HW_H_ACCUMS, 12, 2, 379 { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_ACCS] } }, 340 380 { 0, { (1<<MACH_M32RX) } } }, 341 381 /* acc: accumulator reg (d) */ 342 382 { "acc", M32R_OPERAND_ACC, HW_H_ACCUMS, 8, 1, 383 { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_ACC] } }, 343 384 { 0, { (1<<MACH_M32RX) } } }, 344 385 /* hash: # prefix */ 345 386 { "hash", M32R_OPERAND_HASH, HW_H_SINT, 0, 0, 387 { 0, { (const PTR) 0 } }, 346 388 { 0, { (1<<MACH_BASE) } } }, 347 389 /* hi16: high 16 bit immediate, sign optional */ 348 390 { "hi16", M32R_OPERAND_HI16, HW_H_HI16, 16, 16, 391 { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_HI16] } }, 349 392 { 0|A(SIGN_OPT), { (1<<MACH_BASE) } } }, 350 393 /* slo16: 16 bit signed immediate, for low() */ 351 394 { "slo16", M32R_OPERAND_SLO16, HW_H_SLO16, 16, 16, 395 { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_SIMM16] } }, 352 396 { 0, { (1<<MACH_BASE) } } }, 353 397 /* ulo16: 16 bit unsigned immediate, for low() */ 354 398 { "ulo16", M32R_OPERAND_ULO16, HW_H_ULO16, 16, 16, 399 { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_UIMM16] } }, 355 400 { 0, { (1<<MACH_BASE) } } }, 356 401 /* uimm24: 24 bit address */ 357 402 { "uimm24", M32R_OPERAND_UIMM24, HW_H_ADDR, 8, 24, 403 { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_UIMM24] } }, 358 404 { 0|A(HASH_PREFIX)|A(RELOC)|A(ABS_ADDR), { (1<<MACH_BASE) } } }, 359 405 /* disp8: 8 bit displacement */ 360 406 { "disp8", M32R_OPERAND_DISP8, HW_H_IADDR, 8, 8, 407 { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_DISP8] } }, 361 408 { 0|A(RELAX)|A(RELOC)|A(PCREL_ADDR), { (1<<MACH_BASE) } } }, 362 409 /* disp16: 16 bit displacement */ 363 410 { "disp16", M32R_OPERAND_DISP16, HW_H_IADDR, 16, 16, 411 { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_DISP16] } }, 364 412 { 0|A(RELOC)|A(PCREL_ADDR), { (1<<MACH_BASE) } } }, 365 413 /* disp24: 24 bit displacement */ 366 414 { "disp24", M32R_OPERAND_DISP24, HW_H_IADDR, 8, 24, 415 { 0, { (const PTR) &m32r_cgen_ifld_table[M32R_F_DISP24] } }, 367 416 { 0|A(RELAX)|A(RELOC)|A(PCREL_ADDR), { (1<<MACH_BASE) } } }, 368 417 /* condbit: condition bit */ 369 418 { "condbit", M32R_OPERAND_CONDBIT, HW_H_COND, 0, 0, 419 { 0, { (const PTR) 0 } }, 370 420 { 0|A(SEM_ONLY), { (1<<MACH_BASE) } } }, 371 421 /* accum: accumulator */ 372 422 { "accum", M32R_OPERAND_ACCUM, HW_H_ACCUM, 0, 0, 423 { 0, { (const PTR) 0 } }, 373 424 { 0|A(SEM_ONLY), { (1<<MACH_BASE) } } }, 374 { 0, 0, 0, 0, 0, {0, {0}} } 425 /* sentinel */ 426 { 0, 0, 0, 0, 0, 427 { 0, { (const PTR) 0 } }, 428 { 0, { 0 } } } 375 429 }; 376 430 377 431 #undef A 378 432 379 #define A(a) (1 << CONCAT2 (CGEN_INSN_,a)) 433 434 /* The instruction table. */ 435 380 436 #define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field)) 381 382 /* The instruction table. */ 437 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE) 438 #define A(a) (1 << CGEN_INSN_##a) 439 #else 440 #define A(a) (1 << CGEN_INSN_/**/a) 441 #endif 383 442 384 443 static const CGEN_IBASE m32r_cgen_insn_table[MAX_INSNS] = … … 1060 1119 }; 1061 1120 1121 #undef OP 1062 1122 #undef A 1063 #undef MNEM1064 #undef OP1065 1123 1066 1124 /* Initialize anything needed to be done once, before any cpu_open call. */ 1125 static void init_tables PARAMS ((void)); 1067 1126 1068 1127 static void … … 1070 1129 { 1071 1130 } 1131 1132 static const CGEN_MACH * lookup_mach_via_bfd_name 1133 PARAMS ((const CGEN_MACH *, const char *)); 1134 static void build_hw_table PARAMS ((CGEN_CPU_TABLE *)); 1135 static void build_ifield_table PARAMS ((CGEN_CPU_TABLE *)); 1136 static void build_operand_table PARAMS ((CGEN_CPU_TABLE *)); 1137 static void build_insn_table PARAMS ((CGEN_CPU_TABLE *)); 1138 static void m32r_cgen_rebuild_tables PARAMS ((CGEN_CPU_TABLE *)); 1072 1139 1073 1140 /* Subroutine of m32r_cgen_cpu_open to look up a mach via its bfd name. */ … … 1180 1247 CGEN_CPU_TABLE *cd; 1181 1248 { 1182 int i ,n_isas;1249 int i; 1183 1250 unsigned int isas = cd->isas; 1184 #if 01185 1251 unsigned int machs = cd->machs; 1186 #endif1187 1252 1188 1253 cd->int_insn_p = CGEN_INT_INSN_P; … … 1199 1264 const CGEN_ISA *isa = & m32r_cgen_isa_table[i]; 1200 1265 1201 /* Default insn sizes of all selected isas must be equal or we set1202 the result to 0, meaning "unknown". */1266 /* Default insn sizes of all selected isas must be 1267 equal or we set the result to 0, meaning "unknown". */ 1203 1268 if (cd->default_insn_bitsize == UNSET) 1204 1269 cd->default_insn_bitsize = isa->default_insn_bitsize; … … 1208 1273 cd->default_insn_bitsize = CGEN_SIZE_UNKNOWN; 1209 1274 1210 /* Base insn sizes of all selected isas must be equal or we set1211 the result to 0, meaning "unknown". */1275 /* Base insn sizes of all selected isas must be equal 1276 or we set the result to 0, meaning "unknown". */ 1212 1277 if (cd->base_insn_bitsize == UNSET) 1213 1278 cd->base_insn_bitsize = isa->base_insn_bitsize; … … 1222 1287 if (isa->max_insn_bitsize > cd->max_insn_bitsize) 1223 1288 cd->max_insn_bitsize = isa->max_insn_bitsize; 1224 1225 ++n_isas;1226 1289 } 1227 1290 1228 #if 0 /* Does nothing?? */1229 1291 /* Data derived from the mach spec. */ 1230 1292 for (i = 0; i < MAX_MACHS; ++i) … … 1233 1295 const CGEN_MACH *mach = & m32r_cgen_mach_table[i]; 1234 1296 1235 ++n_machs; 1297 if (mach->insn_chunk_bitsize != 0) 1298 { 1299 if (cd->insn_chunk_bitsize != 0 && cd->insn_chunk_bitsize != mach->insn_chunk_bitsize) 1300 { 1301 fprintf (stderr, "m32r_cgen_rebuild_tables: conflicting insn-chunk-bitsize values: `%d' vs. `%d'\n", 1302 cd->insn_chunk_bitsize, mach->insn_chunk_bitsize); 1303 abort (); 1304 } 1305 1306 cd->insn_chunk_bitsize = mach->insn_chunk_bitsize; 1307 } 1236 1308 } 1237 #endif1238 1309 1239 1310 /* Determine which hw elements are used by MACH. */ … … 1304 1375 lookup_mach_via_bfd_name (m32r_cgen_mach_table, name); 1305 1376 1306 machs |= mach->num << 1;1377 machs |= 1 << mach->num; 1307 1378 break; 1308 1379 } … … 1375 1446 CGEN_CPU_DESC cd; 1376 1447 { 1448 unsigned int i; 1449 const CGEN_INSN *insns; 1450 1451 if (cd->macro_insn_table.init_entries) 1452 { 1453 insns = cd->macro_insn_table.init_entries; 1454 for (i = 0; i < cd->macro_insn_table.num_init_entries; ++i, ++insns) 1455 { 1456 if (CGEN_INSN_RX ((insns))) 1457 regfree (CGEN_INSN_RX (insns)); 1458 } 1459 } 1460 1461 if (cd->insn_table.init_entries) 1462 { 1463 insns = cd->insn_table.init_entries; 1464 for (i = 0; i < cd->insn_table.num_init_entries; ++i, ++insns) 1465 { 1466 if (CGEN_INSN_RX (insns)) 1467 regfree (CGEN_INSN_RX (insns)); 1468 } 1469 } 1470 1471 1472 1473 if (cd->macro_insn_table.init_entries) 1474 free ((CGEN_INSN *) cd->macro_insn_table.init_entries); 1475 1377 1476 if (cd->insn_table.init_entries) 1378 1477 free ((CGEN_INSN *) cd->insn_table.init_entries); 1478 1379 1479 if (cd->hw_table.entries) 1380 1480 free ((CGEN_HW_ENTRY *) cd->hw_table.entries); 1481 1482 if (cd->operand_table.entries) 1483 free ((CGEN_HW_ENTRY *) cd->operand_table.entries); 1484 1381 1485 free (cd); 1382 1486 } -
Property cvs2svn:cvs-rev
changed from
Note:
See TracChangeset
for help on using the changeset viewer.