00001 #define sign_extend(N,SIZE) (((int)((N) << (sizeof(unsigned)*8-(SIZE)))) >> (sizeof(unsigned)*8-(SIZE)))
00002 #include <assert.h>
00003
00004 #line 2 "machine/sparc/disassembler.m"
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "global.h"
00019 #include "decoder.h"
00020 #include "sparc-names.h"
00021 #include "BinaryFile.h"
00022
00023
00024 extern char _assembly[81];
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 DWord getDword(ADDRESS lc)
00038 {
00039 Byte* p = (Byte*)lc;
00040 return (p[0] << 24) + (p[1] << 16) + (p[2] << 8) + p[3];
00041 }
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052 char *NJMCDecoder::dis_RegImm (ADDRESS pc)
00053 {
00054 static char _buffer[11];
00055
00056
00057
00058 #line 54 "machine/sparc/disassembler.m"
00059 {
00060 dword MATCH_p =
00061
00062 #line 54 "machine/sparc/disassembler.m"
00063 pc
00064 ;
00065 unsigned MATCH_w_32_0;
00066 {
00067 MATCH_w_32_0 = getDword(MATCH_p);
00068 if ((MATCH_w_32_0 >> 13 & 0x1) == 1) {
00069 int i =
00070 sign_extend((MATCH_w_32_0 & 0x1fff) , 13);
00071
00072 #line 55 "machine/sparc/disassembler.m"
00073 sprintf (_buffer, "%d", i);
00074
00075
00076
00077
00078 }
00079 else {
00080 unsigned rs2 = (MATCH_w_32_0 & 0x1f) ;
00081
00082 #line 56 "machine/sparc/disassembler.m"
00083 sprintf (_buffer, "%s", DIS_RS2);
00084
00085
00086
00087
00088 }
00089
00090 }goto MATCH_finished_c;
00091
00092 MATCH_finished_c: (void)0;
00093
00094 }
00095
00096 #line 59 "machine/sparc/disassembler.m"
00097 return _buffer;
00098 }
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108 char* NJMCDecoder::dis_Eaddr (ADDRESS pc)
00109 {
00110 static char _buffer[21];
00111
00112
00113
00114 #line 73 "machine/sparc/disassembler.m"
00115 {
00116 dword MATCH_p =
00117
00118 #line 73 "machine/sparc/disassembler.m"
00119 pc
00120 ;
00121 unsigned MATCH_w_32_0;
00122 {
00123 MATCH_w_32_0 = getDword(MATCH_p);
00124 if ((MATCH_w_32_0 >> 13 & 0x1) == 1)
00125 if ((MATCH_w_32_0 >> 14 & 0x1f) == 0) {
00126 int i =
00127 sign_extend((MATCH_w_32_0 & 0x1fff) , 13);
00128
00129 #line 78 "machine/sparc/disassembler.m"
00130 sprintf (_buffer, "[0x%x]", i);
00131
00132 strcat(constrName, "absoluteA ");
00133
00134
00135
00136
00137 }
00138 else {
00139 int i =
00140 sign_extend((MATCH_w_32_0 & 0x1fff) , 13);
00141 unsigned rs1 = (MATCH_w_32_0 >> 14 & 0x1f) ;
00142
00143 #line 80 "machine/sparc/disassembler.m"
00144 sprintf (_buffer, "[%s+%d]", DIS_RS1, i);
00145
00146 strcat(constrName, "dispA ");
00147
00148
00149
00150
00151 }
00152 else
00153 if ((MATCH_w_32_0 & 0x1f) == 0) {
00154 unsigned rs1 = (MATCH_w_32_0 >> 14 & 0x1f) ;
00155
00156 #line 74 "machine/sparc/disassembler.m"
00157 sprintf (_buffer, "[%s]", DIS_RS1);
00158
00159 strcat(constrName, "indirectA ");
00160
00161
00162
00163
00164 }
00165 else {
00166 unsigned rs1 = (MATCH_w_32_0 >> 14 & 0x1f) ;
00167 unsigned rs2 = (MATCH_w_32_0 & 0x1f) ;
00168
00169 #line 76 "machine/sparc/disassembler.m"
00170 sprintf (_buffer, "%s[%s]", DIS_RS1, DIS_RS2);
00171
00172 strcat(constrName, "indexA ");
00173
00174
00175
00176
00177 }
00178
00179 }goto MATCH_finished_b;
00180
00181 MATCH_finished_b: (void)0;
00182
00183 }
00184
00185 #line 84 "machine/sparc/disassembler.m"
00186 return _buffer;
00187 }
00188
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200 int NJMCDecoder::decodeAssemblyInstruction (ADDRESS pc, int delta)
00201 {
00202 ADDRESS hostPC = pc + delta;
00203 ADDRESS nextPC;
00204
00205 sprintf(_assembly, "%X: %08X ", pc, getDword(hostPC) );
00206 char* str = _assembly + strlen(_assembly);
00207
00208
00209
00210 #line 105 "machine/sparc/disassembler.m"
00211 {
00212 dword MATCH_p =
00213
00214 #line 105 "machine/sparc/disassembler.m"
00215 hostPC
00216 ;
00217 char *MATCH_name;
00218 static char *MATCH_name_cond_1[] = {
00219 "BN", "BE", "BLE", "BL", "BLEU", "BCS", "BNEG", "BVS", "BA", "BNE", "BG",
00220 "BGE", "BGU", "BCC", "BPOS", "BVC",
00221 };
00222 static char *MATCH_name_cond_2[] = {
00223 "BN,a", "BE,a", "BLE,a", "BL,a", "BLEU,a", "BCS,a", "BNEG,a", "BVS,a",
00224 "BA,a", "BNE,a", "BG,a", "BGE,a", "BGU,a", "BCC,a", "BPOS,a", "BVC,a",
00225 };
00226 static char *MATCH_name_cond_3[] = {
00227 "FBN", "FBNE", "FBLG", "FBUL", "FBL", "FBUG", "FBG", "FBU", "FBA", "FBE",
00228 "FBUE", "FBGE", "FBUGE", "FBLE", "FBULE", "FBO",
00229 };
00230 static char *MATCH_name_cond_4[] = {
00231 "FBN,a", "FBNE,a", "FBLG,a", "FBUL,a", "FBL,a", "FBUG,a", "FBG,a",
00232 "FBU,a", "FBA,a", "FBE,a", "FBUE,a", "FBGE,a", "FBUGE,a", "FBLE,a",
00233 "FBULE,a", "FBO,a",
00234 };
00235 static char *MATCH_name_cond_5[] = {
00236 "CBN", "CB123", "CB12", "CB13", "CB1", "CB23", "CB2", "CB3", "CBA",
00237 "CB0", "CB03", "CB02", "CB023", "CB01", "CB013", "CB012",
00238 };
00239 static char *MATCH_name_cond_6[] = {
00240 "CBN,a", "CB123,a", "CB12,a", "CB13,a", "CB1,a", "CB23,a", "CB2,a",
00241 "CB3,a", "CBA,a", "CB0,a", "CB03,a", "CB02,a", "CB023,a", "CB01,a",
00242 "CB013,a", "CB012,a",
00243 };
00244 static char *MATCH_name_rs1_43[] = {
00245 "RDY", "JMPL", "JMPL", "JMPL", "JMPL", "JMPL", "JMPL", "JMPL", "JMPL",
00246 "JMPL", "JMPL", "JMPL", "JMPL", "JMPL", "JMPL", (char *)0, "JMPL",
00247 "JMPL", "JMPL", "JMPL", "JMPL", "JMPL", "JMPL", "JMPL", "JMPL", "JMPL",
00248 "JMPL", "JMPL", "JMPL", "JMPL", "JMPL",
00249 };
00250 static char *MATCH_name_op3_44[] = {
00251 (char *)0, (char *)0, (char *)0, (char *)0, (char *)0, (char *)0,
00252 (char *)0, (char *)0, (char *)0, (char *)0, (char *)0, (char *)0,
00253 (char *)0, (char *)0, (char *)0, (char *)0, (char *)0, (char *)0,
00254 (char *)0, (char *)0, (char *)0, (char *)0, (char *)0, (char *)0,
00255 (char *)0, (char *)0, (char *)0, (char *)0, (char *)0, (char *)0,
00256 (char *)0, (char *)0, (char *)0, (char *)0, (char *)0, (char *)0,
00257 (char *)0, (char *)0, (char *)0, (char *)0, (char *)0, "RDPSR", "RDWIM",
00258 "RDTBR",
00259 };
00260 static char *MATCH_name_opf_49[] = {
00261 (char *)0, "FMOVs", (char *)0, (char *)0, (char *)0, "FNEGs", (char *)0,
00262 (char *)0, (char *)0, "FABSs", (char *)0, (char *)0, (char *)0,
00263 (char *)0, (char *)0, (char *)0, (char *)0, (char *)0, (char *)0,
00264 (char *)0, (char *)0, (char *)0, (char *)0, (char *)0, (char *)0,
00265 (char *)0, (char *)0, (char *)0, (char *)0, (char *)0, (char *)0,
00266 (char *)0, (char *)0, (char *)0, (char *)0, (char *)0, (char *)0,
00267 (char *)0, (char *)0, (char *)0, (char *)0, "FSQRTs", (char *)0,
00268 (char *)0, (char *)0, (char *)0, (char *)0, (char *)0, (char *)0,
00269 (char *)0, (char *)0, (char *)0, (char *)0, (char *)0, (char *)0,
00270 (char *)0, (char *)0, (char *)0, (char *)0, (char *)0, (char *)0,
00271 (char *)0, (char *)0, (char *)0, (char *)0, "FADDs", "FADDd", "FADDq",
00272 (char *)0, "FSUBs", "FSUBd", "FSUBq", (char *)0, "FMULs", "FMULd",
00273 "FMULq", (char *)0, "FDIVs", "FDIVd", "FDIVq", (char *)0, "FCMPs",
00274 "FCMPd", "FCMPq", (char *)0, "FCMPEs", "FCMPEd", "FCMPEq", (char *)0,
00275 (char *)0, (char *)0, (char *)0, (char *)0, (char *)0, (char *)0,
00276 (char *)0, (char *)0, (char *)0, (char *)0, (char *)0, (char *)0,
00277 (char *)0, (char *)0, (char *)0, (char *)0, (char *)0, (char *)0,
00278 (char *)0, (char *)0, (char *)0, (char *)0, (char *)0, (char *)0,
00279 (char *)0, (char *)0, (char *)0, (char *)0, (char *)0, (char *)0,
00280 (char *)0, (char *)0, (char *)0, (char *)0, (char *)0, (char *)0,
00281 (char *)0, (char *)0, (char *)0, (char *)0, (char *)0, (char *)0,
00282 (char *)0, (char *)0, (char *)0, (char *)0, (char *)0, (char *)0,
00283 (char *)0, (char *)0, (char *)0, (char *)0, (char *)0, (char *)0,
00284 (char *)0, (char *)0, (char *)0, (char *)0, (char *)0, (char *)0,
00285 (char *)0, (char *)0, (char *)0, (char *)0, (char *)0, (char *)0,
00286 (char *)0, (char *)0, (char *)0, (char *)0, (char *)0, (char *)0,
00287 (char *)0, (char *)0, (char *)0, (char *)0, (char *)0, (char *)0,
00288 (char *)0, (char *)0, (char *)0, (char *)0, (char *)0, (char *)0,
00289 (char *)0, (char *)0, (char *)0, (char *)0, (char *)0, (char *)0,
00290 (char *)0, (char *)0, (char *)0, (char *)0, (char *)0, (char *)0,
00291 (char *)0, (char *)0, (char *)0, (char *)0, (char *)0, (char *)0,
00292 (char *)0, (char *)0, (char *)0, (char *)0, (char *)0, "FiTOs",
00293 (char *)0, "FdTOs", "FqTOs", "FiTOd", "FsTOd", (char *)0, "FqTOd",
00294 "FiTOq", "FsTOq", "FdTOq", (char *)0, (char *)0, "FsTOi", "FdTOi",
00295 "FqTOi",
00296 };
00297 static char *MATCH_name_i_50[] = {"JMPL", "RETT", };
00298 static char *MATCH_name_rs1_51[] = {
00299 "JMPL", "SAVE", "SAVE", "SAVE", "SAVE", "SAVE", "SAVE", "SAVE", "SAVE",
00300 "SAVE", "SAVE", "SAVE", "SAVE", "SAVE", "SAVE", "SAVE", "SAVE", "SAVE",
00301 "SAVE", "SAVE", "SAVE", "SAVE", "SAVE", "SAVE", "SAVE", "SAVE", "SAVE",
00302 "SAVE", "SAVE", "SAVE", "SAVE", "SAVE",
00303 };
00304 static char *MATCH_name_i_54[] = {"RETT", "SAVE", };
00305 static char *MATCH_name_cond_55[] = {
00306 "TN", "TE", "TLE", "TL", "TLEU", "TCS", "TNEG", "TVS", "TA", "TNE", "TG",
00307 "TGE", "TGU", "TCC", "TPOS", "TVC",
00308 };
00309 static char *MATCH_name_i_61[] = {"LD", "RESTORE", };
00310 static char *MATCH_name_i_62[] = {"LDUB", "LD", };
00311 static char *MATCH_name_i_63[] = {"LDUH", "LDUB", };
00312 static char *MATCH_name_i_64[] = {"LDD", "LDUH", };
00313 static char *MATCH_name_i_65[] = {"ST", "LDD", };
00314 static char *MATCH_name_i_66[] = {"STB", "ST", };
00315 static char *MATCH_name_i_67[] = {"STH", "STB", };
00316 static char *MATCH_name_i_68[] = {"STD", "STH", };
00317 static char *MATCH_name_i_69[] = {"LDSB", "STD", };
00318 static char *MATCH_name_i_70[] = {"LDSH", "LDSB", };
00319 static char *MATCH_name_i_71[] = {"LDSTUB", "LDSH", };
00320 static char *MATCH_name_i_72[] = {"SWAP.", "LDSTUB", };
00321 static char *MATCH_name_i_73[] = {"LDA", "SWAP.", };
00322 static char *MATCH_name_i_74[] = {"LDUBA", "LDF", };
00323 static char *MATCH_name_i_75[] = {"LDUHA", "LDFSR", };
00324 static char *MATCH_name_i_76[] = {"LDDA", "LDDF", };
00325 static char *MATCH_name_i_77[] = {"STA", "STF", };
00326 static char *MATCH_name_i_78[] = {"STBA", "STFSR", };
00327 static char *MATCH_name_i_79[] = {"STHA", "STDFQ", };
00328 static char *MATCH_name_i_80[] = {"STDA", "STDF", };
00329 static char *MATCH_name_i_81[] = {"LDSBA", "LDC", };
00330 static char *MATCH_name_i_82[] = {"LDSHA", "LDCSR", };
00331 static char *MATCH_name_i_83[] = {"LDSTUBA", "LDDC", };
00332 static char *MATCH_name_i_84[] = {"SWAPA", "STC", };
00333 static char *MATCH_name_i_85[] = {"LDF", "STCSR", };
00334 static char *MATCH_name_i_86[] = {"LDFSR", "STDCQ", };
00335 static char *MATCH_name_i_87[] = {"LDDF", "STDC", };
00336 unsigned MATCH_w_32_0;
00337 {
00338 MATCH_w_32_0 = getDword(MATCH_p);
00339
00340 switch((MATCH_w_32_0 >> 30 & 0x3) ) {
00341 case 0:
00342
00343 switch((MATCH_w_32_0 >> 22 & 0x7) ) {
00344 case 0:
00345 MATCH_name = "UNIMP";
00346 {
00347 char *name = MATCH_name;
00348 unsigned n = (MATCH_w_32_0 & 0x3fffff) ;
00349 nextPC = 4 + MATCH_p;
00350
00351 #line 276 "machine/sparc/disassembler.m"
00352
00353
00354 sprintf (str, "%s %d", name, n);
00355
00356
00357
00358
00359
00360
00361 }
00362
00363 break;
00364 case 1: case 3: case 5:
00365 goto MATCH_label_a0; break;
00366 case 2:
00367 if ((MATCH_w_32_0 >> 29 & 0x1) == 1 &&
00368 (0 <= (MATCH_w_32_0 >> 25 & 0xf) &&
00369 (MATCH_w_32_0 >> 25 & 0xf) < 16)) {
00370 MATCH_name = MATCH_name_cond_2[(MATCH_w_32_0 >> 25 & 0xf)
00371 ];
00372 goto MATCH_label_a2;
00373
00374 }
00375 else {
00376 MATCH_name = MATCH_name_cond_1[(MATCH_w_32_0 >> 25 & 0xf)
00377 ];
00378 goto MATCH_label_a1;
00379
00380 }
00381
00382 break;
00383 case 4:
00384 if ((MATCH_w_32_0 & 0x3fffff) == 0 &&
00385 (MATCH_w_32_0 >> 25 & 0x1f) == 0) {
00386 nextPC = 4 + MATCH_p;
00387
00388 #line 108 "machine/sparc/disassembler.m"
00389
00390
00391 sprintf (str, "NOP");
00392
00393
00394
00395
00396
00397
00398 }
00399 else
00400 goto MATCH_label_a3;
00401
00402 break;
00403 case 6:
00404 if ((MATCH_w_32_0 >> 29 & 0x1) == 1 &&
00405 (0 <= (MATCH_w_32_0 >> 25 & 0xf) &&
00406 (MATCH_w_32_0 >> 25 & 0xf) < 16)) {
00407 MATCH_name = MATCH_name_cond_4[(MATCH_w_32_0 >> 25 & 0xf)
00408 ];
00409 goto MATCH_label_a2;
00410
00411 }
00412 else {
00413 MATCH_name = MATCH_name_cond_3[(MATCH_w_32_0 >> 25 & 0xf)
00414 ];
00415 goto MATCH_label_a1;
00416
00417 }
00418
00419 break;
00420 case 7:
00421 if ((MATCH_w_32_0 >> 29 & 0x1) == 1 &&
00422 (0 <= (MATCH_w_32_0 >> 25 & 0xf) &&
00423 (MATCH_w_32_0 >> 25 & 0xf) < 16)) {
00424 MATCH_name = MATCH_name_cond_6[(MATCH_w_32_0 >> 25 & 0xf)
00425 ];
00426 goto MATCH_label_a2;
00427
00428 }
00429 else {
00430 MATCH_name = MATCH_name_cond_5[(MATCH_w_32_0 >> 25 & 0xf)
00431 ];
00432 goto MATCH_label_a1;
00433
00434 }
00435
00436 break;
00437 default: assert(0);
00438 }
00439 break;
00440 case 1:
00441 {
00442 unsigned tgt =
00443 4 * sign_extend((MATCH_w_32_0 & 0x3fffffff) ,
00444 30) + addressToPC(MATCH_p);
00445 nextPC = 4 + MATCH_p;
00446
00447 #line 207 "machine/sparc/disassembler.m"
00448 {
00449
00450
00451
00452 ADDRESS dest = tgt - delta;
00453
00454
00455
00456 const char* dsym = pBF->SymbolByAddress(dest);
00457
00458 char hexsym[128];
00459
00460 if (dsym == 0)
00461
00462 sprintf(hexsym, "0x%x", dest);
00463
00464 sprintf (str, "%s %s", "call", (dsym ? dsym : hexsym));
00465
00466 }
00467
00468
00469
00470
00471
00472
00473 }
00474
00475 break;
00476 case 2:
00477
00478 switch((MATCH_w_32_0 >> 19 & 0x3f) ) {
00479 case 0:
00480 MATCH_name = "ADD"; goto MATCH_label_a4; break;
00481 case 1:
00482 MATCH_name = "AND"; goto MATCH_label_a4; break;
00483 case 2:
00484 MATCH_name = "OR"; goto MATCH_label_a4; break;
00485 case 3:
00486 MATCH_name = "XOR"; goto MATCH_label_a4; break;
00487 case 4:
00488 MATCH_name = "SUB"; goto MATCH_label_a4; break;
00489 case 5:
00490 MATCH_name = "ANDN"; goto MATCH_label_a4; break;
00491 case 6:
00492 MATCH_name = "ORN"; goto MATCH_label_a4; break;
00493 case 7:
00494 MATCH_name = "XNOR"; goto MATCH_label_a4; break;
00495 case 8:
00496 MATCH_name = "ADDX"; goto MATCH_label_a4; break;
00497 case 9: case 13: case 25: case 29: case 44: case 45: case 46:
00498 case 47: case 54: case 55: case 59: case 62: case 63:
00499 goto MATCH_label_a0; break;
00500 case 10:
00501 MATCH_name = "UMUL"; goto MATCH_label_a4; break;
00502 case 11:
00503 MATCH_name = "SMUL"; goto MATCH_label_a4; break;
00504 case 12:
00505 MATCH_name = "SUBX"; goto MATCH_label_a4; break;
00506 case 14:
00507 MATCH_name = "UDIV"; goto MATCH_label_a4; break;
00508 case 15:
00509 MATCH_name = "SDIV"; goto MATCH_label_a4; break;
00510 case 16:
00511 MATCH_name = "ADDcc"; goto MATCH_label_a4; break;
00512 case 17:
00513 MATCH_name = "ANDcc"; goto MATCH_label_a4; break;
00514 case 18:
00515 MATCH_name = "ORcc"; goto MATCH_label_a4; break;
00516 case 19:
00517 MATCH_name = "XORcc"; goto MATCH_label_a4; break;
00518 case 20:
00519 MATCH_name = "SUBcc"; goto MATCH_label_a4; break;
00520 case 21:
00521 MATCH_name = "ANDNcc"; goto MATCH_label_a4; break;
00522 case 22:
00523 MATCH_name = "ORNcc"; goto MATCH_label_a4; break;
00524 case 23:
00525 MATCH_name = "XNORcc"; goto MATCH_label_a4; break;
00526 case 24:
00527 MATCH_name = "ADDXcc"; goto MATCH_label_a4; break;
00528 case 26:
00529 MATCH_name = "UMULcc"; goto MATCH_label_a4; break;
00530 case 27:
00531 MATCH_name = "SMULcc"; goto MATCH_label_a4; break;
00532 case 28:
00533 MATCH_name = "SUBXcc"; goto MATCH_label_a4; break;
00534 case 30:
00535 MATCH_name = "UDIVcc"; goto MATCH_label_a4; break;
00536 case 31:
00537 MATCH_name = "SDIVcc"; goto MATCH_label_a4; break;
00538 case 32:
00539 MATCH_name = "TADDcc"; goto MATCH_label_a4; break;
00540 case 33:
00541 MATCH_name = "TSUBcc"; goto MATCH_label_a4; break;
00542 case 34:
00543 MATCH_name = "TADDccTV"; goto MATCH_label_a4; break;
00544 case 35:
00545 MATCH_name = "TSUBccTV"; goto MATCH_label_a4; break;
00546 case 36:
00547 MATCH_name = "MULScc"; goto MATCH_label_a4; break;
00548 case 37:
00549 MATCH_name = "SLL"; goto MATCH_label_a4; break;
00550 case 38:
00551 MATCH_name = "SRL"; goto MATCH_label_a4; break;
00552 case 39:
00553 MATCH_name = "SRA"; goto MATCH_label_a4; break;
00554 case 40:
00555 if ((MATCH_w_32_0 >> 14 & 0x1f) == 0) {
00556 MATCH_name = MATCH_name_rs1_43[(MATCH_w_32_0 >> 14 & 0x1f)
00557 ];
00558 {
00559 char *name = MATCH_name;
00560 unsigned rd = (MATCH_w_32_0 >> 25 & 0x1f) ;
00561 nextPC = 4 + MATCH_p;
00562
00563 #line 174 "machine/sparc/disassembler.m"
00564
00565
00566 sprintf (str, "%s %s", name, DIS_RD);
00567
00568
00569
00570
00571
00572
00573 }
00574
00575 }
00576 else
00577 goto MATCH_label_a0;
00578
00579 break;
00580 case 41:
00581 MATCH_name = MATCH_name_op3_44[(MATCH_w_32_0 >> 19 & 0x3f)
00582 ];
00583 {
00584 char *name = MATCH_name;
00585 unsigned rd = (MATCH_w_32_0 >> 25 & 0x1f) ;
00586 nextPC = 4 + MATCH_p;
00587
00588 #line 177 "machine/sparc/disassembler.m"
00589
00590
00591 sprintf (str, "%s %s", name, DIS_RD);
00592
00593
00594
00595
00596
00597
00598 }
00599
00600 break;
00601 case 42:
00602 MATCH_name = MATCH_name_op3_44[(MATCH_w_32_0 >> 19 & 0x3f)
00603 ];
00604 {
00605 char *name = MATCH_name;
00606 unsigned rd = (MATCH_w_32_0 >> 25 & 0x1f) ;
00607 nextPC = 4 + MATCH_p;
00608
00609 #line 180 "machine/sparc/disassembler.m"
00610
00611
00612 sprintf (str, "%s %s", name, DIS_RD);
00613
00614
00615
00616
00617
00618
00619 }
00620
00621 break;
00622 case 43:
00623 MATCH_name = MATCH_name_op3_44[(MATCH_w_32_0 >> 19 & 0x3f)
00624 ];
00625 {
00626 char *name = MATCH_name;
00627 unsigned rd = (MATCH_w_32_0 >> 25 & 0x1f) ;
00628 nextPC = 4 + MATCH_p;
00629
00630 #line 183 "machine/sparc/disassembler.m"
00631
00632
00633 sprintf (str, "%s %s", name, DIS_RD);
00634
00635
00636
00637
00638
00639
00640 }
00641
00642 break;
00643 case 48:
00644 if (1 <= (MATCH_w_32_0 >> 25 & 0x1f) &&
00645 (MATCH_w_32_0 >> 25 & 0x1f) < 32)
00646 goto MATCH_label_a0;
00647 else {
00648 MATCH_name = "WRY";
00649 {
00650 char *name = MATCH_name;
00651 unsigned roi = addressToPC(MATCH_p);
00652 unsigned rs1 = (MATCH_w_32_0 >> 14 & 0x1f) ;
00653 nextPC = 4 + MATCH_p;
00654
00655 #line 186 "machine/sparc/disassembler.m"
00656
00657
00658 sprintf (str, "%s %s,%s", name, DIS_RS1, DIS_ROI);
00659
00660
00661
00662
00663
00664
00665 }
00666
00667 }
00668
00669 break;
00670 case 49:
00671 MATCH_name = "WRPSR";
00672 {
00673 char *name = MATCH_name;
00674 unsigned roi = addressToPC(MATCH_p);
00675 unsigned rs1 = (MATCH_w_32_0 >> 14 & 0x1f) ;
00676 nextPC = 4 + MATCH_p;
00677
00678 #line 189 "machine/sparc/disassembler.m"
00679
00680
00681 sprintf (str, "%s %s,%s", name, DIS_RS1, DIS_ROI);
00682
00683
00684
00685
00686
00687
00688 }
00689
00690 break;
00691 case 50:
00692 MATCH_name = "WRWIM";
00693 {
00694 char *name = MATCH_name;
00695 unsigned roi = addressToPC(MATCH_p);
00696 unsigned rs1 = (MATCH_w_32_0 >> 14 & 0x1f) ;
00697 nextPC = 4 + MATCH_p;
00698
00699 #line 192 "machine/sparc/disassembler.m"
00700
00701
00702 sprintf (str, "%s %s,%s", name, DIS_RS1, DIS_ROI);
00703
00704
00705
00706
00707
00708
00709 }
00710
00711 break;
00712 case 51:
00713 MATCH_name = "WRTBR";
00714 {
00715 char *name = MATCH_name;
00716 unsigned roi = addressToPC(MATCH_p);
00717 unsigned rs1 = (MATCH_w_32_0 >> 14 & 0x1f) ;
00718 nextPC = 4 + MATCH_p;
00719
00720 #line 195 "machine/sparc/disassembler.m"
00721
00722
00723 sprintf (str, "%s %s,%s", name, DIS_RS1, DIS_ROI);
00724
00725
00726
00727
00728
00729
00730 }
00731
00732 break;
00733 case 52:
00734 if (80 <= (MATCH_w_32_0 >> 5 & 0x1ff) &&
00735 (MATCH_w_32_0 >> 5 & 0x1ff) < 196 ||
00736 212 <= (MATCH_w_32_0 >> 5 & 0x1ff) &&
00737 (MATCH_w_32_0 >> 5 & 0x1ff) < 512)
00738 goto MATCH_label_a0;
00739 else
00740 switch((MATCH_w_32_0 >> 5 & 0x1ff) ) {
00741 case 0: case 2: case 3: case 4: case 6: case 7: case 8:
00742 case 10: case 11: case 12: case 13: case 14: case 15:
00743 case 16: case 17: case 18: case 19: case 20: case 21:
00744 case 22: case 23: case 24: case 25: case 26: case 27:
00745 case 28: case 29: case 30: case 31: case 32: case 33:
00746 case 34: case 35: case 36: case 37: case 38: case 39:
00747 case 40: case 42: case 43: case 44: case 45: case 46:
00748 case 47: case 48: case 49: case 50: case 51: case 52:
00749 case 53: case 54: case 55: case 56: case 57: case 58:
00750 case 59: case 60: case 61: case 62: case 63: case 64:
00751 case 68: case 72: case 76: case 197: case 202: case 207:
00752 case 208:
00753 goto MATCH_label_a0; break;
00754 case 1: case 5: case 9: case 41:
00755 MATCH_name =
00756 MATCH_name_opf_49[(MATCH_w_32_0 >> 5 & 0x1ff)
00757 ];
00758 {
00759 char *name = MATCH_name;
00760 unsigned fds =
00761 (MATCH_w_32_0 >> 25 & 0x1f) ;
00762 unsigned fs2s = (MATCH_w_32_0 & 0x1f) ;
00763 nextPC = 4 + MATCH_p;
00764
00765 #line 218 "machine/sparc/disassembler.m"
00766
00767
00768 sprintf (str, "%s %s,%s", name, DIS_FS2S, DIS_FDS);
00769
00770
00771
00772
00773
00774
00775 }
00776
00777 break;
00778 case 65: case 69: case 73: case 77:
00779 MATCH_name =
00780 MATCH_name_opf_49[(MATCH_w_32_0 >> 5 & 0x1ff)
00781 ];
00782 {
00783 char *name = MATCH_name;
00784 unsigned fds =
00785 (MATCH_w_32_0 >> 25 & 0x1f) ;
00786 unsigned fs1s =
00787 (MATCH_w_32_0 >> 14 & 0x1f) ;
00788 unsigned fs2s = (MATCH_w_32_0 & 0x1f) ;
00789 nextPC = 4 + MATCH_p;
00790
00791 #line 221 "machine/sparc/disassembler.m"
00792
00793
00794 sprintf (str, "%s %s,%s,%s", name, DIS_FS1S, DIS_FS2S, DIS_FDS);
00795
00796
00797
00798
00799
00800
00801 }
00802
00803 break;
00804 case 66: case 70: case 74: case 78:
00805 MATCH_name =
00806 MATCH_name_opf_49[(MATCH_w_32_0 >> 5 & 0x1ff)
00807 ];
00808 {
00809 char *name = MATCH_name;
00810 unsigned fdd =
00811 (MATCH_w_32_0 >> 25 & 0x1f) ;
00812 unsigned fs1d =
00813 (MATCH_w_32_0 >> 14 & 0x1f) ;
00814 unsigned fs2d = (MATCH_w_32_0 & 0x1f) ;
00815 nextPC = 4 + MATCH_p;
00816
00817 #line 224 "machine/sparc/disassembler.m"
00818
00819
00820 sprintf (str, "%s %s,%s,%s", name, DIS_FS1D, DIS_FS2D, DIS_FDD);
00821
00822
00823
00824
00825
00826
00827 }
00828
00829 break;
00830 case 67: case 71: case 75: case 79:
00831 MATCH_name =
00832 MATCH_name_opf_49[(MATCH_w_32_0 >> 5 & 0x1ff)
00833 ];
00834 {
00835 char *name = MATCH_name;
00836 unsigned fdq =
00837 (MATCH_w_32_0 >> 25 & 0x1f) ;
00838 unsigned fs1q =
00839 (MATCH_w_32_0 >> 14 & 0x1f) ;
00840 unsigned fs2q = (MATCH_w_32_0 & 0x1f) ;
00841 nextPC = 4 + MATCH_p;
00842
00843 #line 227 "machine/sparc/disassembler.m"
00844
00845
00846 sprintf (str, "%s %s,%s,%s", name, DIS_FS1Q, DIS_FS2Q, DIS_FDQ);
00847
00848
00849
00850
00851
00852
00853 }
00854
00855 break;
00856 case 196: case 209:
00857 MATCH_name =
00858 MATCH_name_opf_49[(MATCH_w_32_0 >> 5 & 0x1ff)
00859 ];
00860 {
00861 char *name = MATCH_name;
00862 unsigned fds =
00863 (MATCH_w_32_0 >> 25 & 0x1f) ;
00864 unsigned fs2s = (MATCH_w_32_0 & 0x1f) ;
00865 nextPC = 4 + MATCH_p;
00866
00867 #line 239 "machine/sparc/disassembler.m"
00868
00869
00870 sprintf (str, "%s %s,%s", name, DIS_FS2S, DIS_FDS);
00871
00872
00873
00874
00875
00876
00877 }
00878
00879 break;
00880 case 198:
00881 MATCH_name =
00882 MATCH_name_opf_49[(MATCH_w_32_0 >> 5 & 0x1ff)
00883 ];
00884 {
00885 char *name = MATCH_name;
00886 unsigned fds =
00887 (MATCH_w_32_0 >> 25 & 0x1f) ;
00888 unsigned fs2d = (MATCH_w_32_0 & 0x1f) ;
00889 nextPC = 4 + MATCH_p;
00890
00891 #line 254 "machine/sparc/disassembler.m"
00892
00893
00894 sprintf (str, "%s %s,%s", name, DIS_FS2D, DIS_FDS);
00895
00896
00897
00898
00899
00900
00901 }
00902
00903 break;
00904 case 199:
00905 MATCH_name =
00906 MATCH_name_opf_49[(MATCH_w_32_0 >> 5 & 0x1ff)
00907 ];
00908 {
00909 char *name = MATCH_name;
00910 unsigned fds =
00911 (MATCH_w_32_0 >> 25 & 0x1f) ;
00912 unsigned fs2q = (MATCH_w_32_0 & 0x1f) ;
00913 nextPC = 4 + MATCH_p;
00914
00915 #line 259 "machine/sparc/disassembler.m"
00916
00917
00918 sprintf (str, "%s %s,%s", name, DIS_FS2Q, DIS_FDS);
00919
00920
00921
00922
00923
00924
00925 }
00926
00927 break;
00928 case 200:
00929 MATCH_name =
00930 MATCH_name_opf_49[(MATCH_w_32_0 >> 5 & 0x1ff)
00931 ];
00932 {
00933 char *name = MATCH_name;
00934 unsigned fdd =
00935 (MATCH_w_32_0 >> 25 & 0x1f) ;
00936 unsigned fs2s = (MATCH_w_32_0 & 0x1f) ;
00937 nextPC = 4 + MATCH_p;
00938
00939 #line 241 "machine/sparc/disassembler.m"
00940
00941
00942 sprintf (str, "%s %s,%s", name, DIS_FS2S, DIS_FDD);
00943
00944
00945
00946
00947 }
00948
00949 break;
00950 case 201:
00951 MATCH_name =
00952 MATCH_name_opf_49[(MATCH_w_32_0 >> 5 & 0x1ff)
00953 ];
00954 {
00955 char *name = MATCH_name;
00956 unsigned fdd =
00957 (MATCH_w_32_0 >> 25 & 0x1f) ;
00958 unsigned fs2s = (MATCH_w_32_0 & 0x1f) ;
00959 nextPC = 4 + MATCH_p;
00960
00961 #line 251 "machine/sparc/disassembler.m"
00962
00963
00964 sprintf (str, "%s %s,%s", name, DIS_FS2S, DIS_FDD);
00965
00966
00967
00968
00969 }
00970
00971 break;
00972 case 203:
00973 MATCH_name =
00974 MATCH_name_opf_49[(MATCH_w_32_0 >> 5 & 0x1ff)
00975 ];
00976 {
00977 char *name = MATCH_name;
00978 unsigned fdd =
00979 (MATCH_w_32_0 >> 25 & 0x1f) ;
00980 unsigned fs2q = (MATCH_w_32_0 & 0x1f) ;
00981 nextPC = 4 + MATCH_p;
00982
00983 #line 264 "machine/sparc/disassembler.m"
00984
00985
00986 sprintf (str, "%s %s,%s", name, DIS_FS2Q, DIS_FDD);
00987
00988
00989
00990
00991
00992
00993 }
00994
00995 break;
00996 case 204:
00997 MATCH_name =
00998 MATCH_name_opf_49[(MATCH_w_32_0 >> 5 & 0x1ff)
00999 ];
01000 {
01001 char *name = MATCH_name;
01002 unsigned fdq =
01003 (MATCH_w_32_0 >> 25 & 0x1f) ;
01004 unsigned fs2s = (MATCH_w_32_0 & 0x1f) ;
01005 nextPC = 4 + MATCH_p;
01006
01007 #line 246 "machine/sparc/disassembler.m"
01008
01009
01010 sprintf (str, "%s %s,%s", name, DIS_FS2S, DIS_FDQ);
01011
01012
01013
01014
01015 }
01016
01017 break;
01018 case 205:
01019 MATCH_name =
01020 MATCH_name_opf_49[(MATCH_w_32_0 >> 5 & 0x1ff)
01021 ];
01022 {
01023 char *name = MATCH_name;
01024 unsigned fdq =
01025 (MATCH_w_32_0 >> 25 & 0x1f) ;
01026 unsigned fs2s = (MATCH_w_32_0 & 0x1f) ;
01027 nextPC = 4 + MATCH_p;
01028
01029 #line 256 "machine/sparc/disassembler.m"
01030
01031
01032 sprintf (str, "%s %s,%s", name, DIS_FS2S, DIS_FDQ);
01033
01034
01035
01036
01037 }
01038
01039 break;
01040 case 206:
01041 MATCH_name =
01042 MATCH_name_opf_49[(MATCH_w_32_0 >> 5 & 0x1ff)
01043 ];
01044 {
01045 char *name = MATCH_name;
01046 unsigned fdq =
01047 (MATCH_w_32_0 >> 25 & 0x1f) ;
01048 unsigned fs2d = (MATCH_w_32_0 & 0x1f) ;
01049 nextPC = 4 + MATCH_p;
01050
01051 #line 261 "machine/sparc/disassembler.m"
01052
01053
01054 sprintf (str, "%s %s,%s", name, DIS_FS2D, DIS_FDQ);
01055
01056
01057
01058
01059 }
01060
01061 break;
01062 case 210:
01063 MATCH_name =
01064 MATCH_name_opf_49[(MATCH_w_32_0 >> 5 & 0x1ff)
01065 ];
01066 {
01067 char *name = MATCH_name;
01068 unsigned fds =
01069 (MATCH_w_32_0 >> 25 & 0x1f) ;
01070 unsigned fs2d = (MATCH_w_32_0 & 0x1f) ;
01071 nextPC = 4 + MATCH_p;
01072
01073 #line 244 "machine/sparc/disassembler.m"
01074
01075
01076 sprintf (str, "%s %s,%s", name, DIS_FS2D, DIS_FDS);
01077
01078
01079
01080
01081
01082
01083 }
01084
01085 break;
01086 case 211:
01087 MATCH_name =
01088 MATCH_name_opf_49[(MATCH_w_32_0 >> 5 & 0x1ff)
01089 ];
01090 {
01091 char *name = MATCH_name;
01092 unsigned fds =
01093 (MATCH_w_32_0 >> 25 & 0x1f) ;
01094 unsigned fs2q = (MATCH_w_32_0 & 0x1f) ;
01095 nextPC = 4 + MATCH_p;
01096
01097 #line 249 "machine/sparc/disassembler.m"
01098
01099
01100 sprintf (str, "%s %s,%s", name, DIS_FS2Q, DIS_FDS);
01101
01102
01103
01104
01105
01106
01107 }
01108
01109 break;
01110 default: assert(0);
01111 }
01112 break;
01113 case 53:
01114 if (0 <= (MATCH_w_32_0 >> 5 & 0x1ff) &&
01115 (MATCH_w_32_0 >> 5 & 0x1ff) < 81 ||
01116 88 <= (MATCH_w_32_0 >> 5 & 0x1ff) &&
01117 (MATCH_w_32_0 >> 5 & 0x1ff) < 512)
01118 goto MATCH_label_a0;
01119 else
01120 switch((MATCH_w_32_0 >> 5 & 0x1ff) ) {
01121 case 84:
01122 goto MATCH_label_a0; break;
01123 case 81: case 85:
01124 MATCH_name =
01125 MATCH_name_opf_49[(MATCH_w_32_0 >> 5 & 0x1ff)
01126 ];
01127 {
01128 char *name = MATCH_name;
01129 unsigned fs1s =
01130 (MATCH_w_32_0 >> 14 & 0x1f) ;
01131 unsigned fs2s = (MATCH_w_32_0 & 0x1f) ;
01132 nextPC = 4 + MATCH_p;
01133
01134 #line 230 "machine/sparc/disassembler.m"
01135
01136
01137 sprintf (str, "%s %s,%s", name, DIS_FS1S, DIS_FS2S);
01138
01139
01140
01141
01142
01143
01144 }
01145
01146 break;
01147 case 82: case 86:
01148 MATCH_name =
01149 MATCH_name_opf_49[(MATCH_w_32_0 >> 5 & 0x1ff)
01150 ];
01151 {
01152 char *name = MATCH_name;
01153 unsigned fs1d =
01154 (MATCH_w_32_0 >> 14 & 0x1f) ;
01155 unsigned fs2d = (MATCH_w_32_0 & 0x1f) ;
01156 nextPC = 4 + MATCH_p;
01157
01158 #line 233 "machine/sparc/disassembler.m"
01159
01160
01161 sprintf (str, "%s %s,%s", name, DIS_FS1D, DIS_FS2D);
01162
01163
01164
01165
01166
01167
01168 }
01169
01170 break;
01171 case 83: case 87:
01172 MATCH_name =
01173 MATCH_name_opf_49[(MATCH_w_32_0 >> 5 & 0x1ff)
01174 ];
01175 {
01176 char *name = MATCH_name;
01177 unsigned fs1q =
01178 (MATCH_w_32_0 >> 14 & 0x1f) ;
01179 unsigned fs2q = (MATCH_w_32_0 & 0x1f) ;
01180 nextPC = 4 + MATCH_p;
01181
01182 #line 236 "machine/sparc/disassembler.m"
01183
01184
01185 sprintf (str, "%s %s,%s", name, DIS_FS1Q, DIS_FS2Q);
01186
01187
01188
01189
01190
01191
01192 }
01193
01194 break;
01195 default: assert(0);
01196 }
01197 break;
01198 case 56:
01199 if ((MATCH_w_32_0 >> 13 & 0x1) == 1)
01200
01201 switch((MATCH_w_32_0 >> 14 & 0x1f) ) {
01202 case 0:
01203 MATCH_name =
01204 MATCH_name_rs1_51[(MATCH_w_32_0 >> 14 & 0x1f)
01205 ];
01206 goto MATCH_label_a5;
01207
01208 break;
01209 case 1: case 2: case 3: case 4: case 5: case 6: case 7:
01210 case 8: case 9: case 10: case 11: case 12: case 13:
01211 case 14: case 16: case 17: case 18: case 19: case 20:
01212 case 21: case 22: case 23: case 24: case 25: case 26:
01213 case 27: case 28: case 29: case 30:
01214 MATCH_name =
01215 MATCH_name_rs1_43[(MATCH_w_32_0 >> 14 & 0x1f)
01216 ];
01217 goto MATCH_label_a5;
01218
01219 break;
01220 case 15:
01221 if ((MATCH_w_32_0 & 0x1fff) == 8 &&
01222 (MATCH_w_32_0 >> 25 & 0x1f) == 0) {
01223 nextPC = 4 + MATCH_p;
01224
01225 #line 120 "machine/sparc/disassembler.m"
01226
01227
01228 sprintf (str, "retl");
01229
01230
01231
01232
01233
01234
01235 }
01236 else {
01237 MATCH_name = "JMPL";
01238 goto MATCH_label_a5;
01239
01240 }
01241
01242 break;
01243 case 31:
01244 if ((MATCH_w_32_0 & 0x1fff) == 8 &&
01245 (MATCH_w_32_0 >> 25 & 0x1f) == 0) {
01246 nextPC = 4 + MATCH_p;
01247
01248 #line 117 "machine/sparc/disassembler.m"
01249
01250
01251 sprintf (str, "ret");
01252
01253
01254
01255
01256
01257
01258 }
01259 else {
01260 MATCH_name = "JMPL";
01261 goto MATCH_label_a5;
01262
01263 }
01264
01265 break;
01266 default: assert(0);
01267 }
01268 else {
01269 MATCH_name =
01270 MATCH_name_i_50[(MATCH_w_32_0 >> 13 & 0x1) ];
01271 goto MATCH_label_a5;
01272
01273 }
01274 break;
01275 case 57:
01276 if ((MATCH_w_32_0 >> 13 & 0x1) == 0) {
01277 MATCH_name =
01278 MATCH_name_i_54[(MATCH_w_32_0 >> 13 & 0x1) ];
01279 goto MATCH_label_a6;
01280
01281 }
01282 else {
01283 MATCH_name =
01284 MATCH_name_i_50[(MATCH_w_32_0 >> 13 & 0x1) ];
01285 goto MATCH_label_a6;
01286
01287 }
01288
01289 break;
01290 case 58:
01291 MATCH_name = MATCH_name_cond_55[(MATCH_w_32_0 >> 25 & 0xf)
01292 ];
01293 {
01294 char *name = MATCH_name;
01295 unsigned addr = addressToPC(MATCH_p);
01296 nextPC = 4 + MATCH_p;
01297
01298 #line 273 "machine/sparc/disassembler.m"
01299
01300
01301 sprintf (str, "%s %s", name, DIS_ADDR);
01302
01303
01304
01305
01306
01307
01308 }
01309
01310 break;
01311 case 60:
01312 if ((MATCH_w_32_0 >> 13 & 0x1) == 1) {
01313 MATCH_name =
01314 MATCH_name_i_54[(MATCH_w_32_0 >> 13 & 0x1) ];
01315 goto MATCH_label_a4;
01316
01317 }
01318 else
01319 if ((MATCH_w_32_0 >> 25 & 0x1f) == 0)
01320 if ((MATCH_w_32_0 >> 14 & 0x1f) == 0)
01321 if ((MATCH_w_32_0 & 0x1f) == 0) {
01322 MATCH_name = "SAVE";
01323 {
01324 char *name = MATCH_name;
01325 nextPC = 4 + MATCH_p;
01326
01327 #line 123 "machine/sparc/disassembler.m"
01328
01329
01330 sprintf (str, "%s %s,%s", name, "%g0", "%g0", "%g0");
01331
01332
01333
01334
01335
01336
01337 }
01338
01339 }
01340 else {
01341 MATCH_name = "SAVE";
01342 goto MATCH_label_a4;
01343
01344 }
01345 else {
01346 MATCH_name =
01347 MATCH_name_rs1_51[(MATCH_w_32_0 >> 14 & 0x1f)
01348 ];
01349 goto MATCH_label_a4;
01350
01351 }
01352 else {
01353 MATCH_name = "SAVE";
01354 goto MATCH_label_a4;
01355
01356 }
01357 break;
01358 case 61:
01359 if ((MATCH_w_32_0 >> 13 & 0x1) == 1) {
01360 MATCH_name =
01361 MATCH_name_i_61[(MATCH_w_32_0 >> 13 & 0x1) ];
01362 goto MATCH_label_a4;
01363
01364 }
01365 else
01366 if ((MATCH_w_32_0 >> 25 & 0x1f) == 0 &&
01367 (MATCH_w_32_0 >> 14 & 0x1f) == 0 &&
01368 (MATCH_w_32_0 & 0x1f) == 0) {
01369 nextPC = 4 + MATCH_p;
01370
01371 #line 114 "machine/sparc/disassembler.m"
01372
01373
01374 sprintf (str, "restore");
01375
01376
01377
01378
01379
01380
01381 }
01382 else {
01383 MATCH_name = "RESTORE";
01384 goto MATCH_label_a4;
01385
01386 }
01387 break;
01388 default: assert(0);
01389 }
01390 break;
01391 case 3:
01392
01393 switch((MATCH_w_32_0 >> 19 & 0x3f) ) {
01394 case 0:
01395 if ((MATCH_w_32_0 >> 13 & 0x1) == 1) {
01396 MATCH_name =
01397 MATCH_name_i_62[(MATCH_w_32_0 >> 13 & 0x1) ];
01398 goto MATCH_label_a7;
01399
01400 }
01401 else {
01402 MATCH_name =
01403 MATCH_name_i_61[(MATCH_w_32_0 >> 13 & 0x1) ];
01404 goto MATCH_label_a7;
01405
01406 }
01407
01408 break;
01409 case 1:
01410 if ((MATCH_w_32_0 >> 13 & 0x1) == 1) {
01411 MATCH_name =
01412 MATCH_name_i_63[(MATCH_w_32_0 >> 13 & 0x1) ];
01413 goto MATCH_label_a7;
01414
01415 }
01416 else {
01417 MATCH_name =
01418 MATCH_name_i_62[(MATCH_w_32_0 >> 13 & 0x1) ];
01419 goto MATCH_label_a7;
01420
01421 }
01422
01423 break;
01424 case 2:
01425 if ((MATCH_w_32_0 >> 13 & 0x1) == 1) {
01426 MATCH_name =
01427 MATCH_name_i_64[(MATCH_w_32_0 >> 13 & 0x1) ];
01428 goto MATCH_label_a7;
01429
01430 }
01431 else {
01432 MATCH_name =
01433 MATCH_name_i_63[(MATCH_w_32_0 >> 13 & 0x1) ];
01434 goto MATCH_label_a7;
01435
01436 }
01437
01438 break;
01439 case 3:
01440 if ((MATCH_w_32_0 >> 13 & 0x1) == 1) {
01441 MATCH_name =
01442 MATCH_name_i_65[(MATCH_w_32_0 >> 13 & 0x1) ];
01443 goto MATCH_label_a7;
01444
01445 }
01446 else {
01447 MATCH_name =
01448 MATCH_name_i_64[(MATCH_w_32_0 >> 13 & 0x1) ];
01449 goto MATCH_label_a7;
01450
01451 }
01452
01453 break;
01454 case 4:
01455 if ((MATCH_w_32_0 >> 13 & 0x1) == 1) {
01456 MATCH_name =
01457 MATCH_name_i_66[(MATCH_w_32_0 >> 13 & 0x1) ];
01458 goto MATCH_label_a8;
01459
01460 }
01461 else {
01462 MATCH_name =
01463 MATCH_name_i_65[(MATCH_w_32_0 >> 13 & 0x1) ];
01464 goto MATCH_label_a8;
01465
01466 }
01467
01468 break;
01469 case 5:
01470 if ((MATCH_w_32_0 >> 13 & 0x1) == 1) {
01471 MATCH_name =
01472 MATCH_name_i_67[(MATCH_w_32_0 >> 13 & 0x1) ];
01473 goto MATCH_label_a8;
01474
01475 }
01476 else {
01477 MATCH_name =
01478 MATCH_name_i_66[(MATCH_w_32_0 >> 13 & 0x1) ];
01479 goto MATCH_label_a8;
01480
01481 }
01482
01483 break;
01484 case 6:
01485 if ((MATCH_w_32_0 >> 13 & 0x1) == 1) {
01486 MATCH_name =
01487 MATCH_name_i_68[(MATCH_w_32_0 >> 13 & 0x1) ];
01488 goto MATCH_label_a8;
01489
01490 }
01491 else {
01492 MATCH_name =
01493 MATCH_name_i_67[(MATCH_w_32_0 >> 13 & 0x1) ];
01494 goto MATCH_label_a8;
01495
01496 }
01497
01498 break;
01499 case 7:
01500 if ((MATCH_w_32_0 >> 13 & 0x1) == 1) {
01501 MATCH_name =
01502 MATCH_name_i_69[(MATCH_w_32_0 >> 13 & 0x1) ];
01503 goto MATCH_label_a8;
01504
01505 }
01506 else {
01507 MATCH_name =
01508 MATCH_name_i_68[(MATCH_w_32_0 >> 13 & 0x1) ];
01509 goto MATCH_label_a8;
01510
01511 }
01512
01513 break;
01514 case 8: case 11: case 12: case 14: case 24: case 27: case 28:
01515 case 30: case 34: case 40: case 41: case 42: case 43: case 44:
01516 case 45: case 46: case 47: case 50: case 56: case 57: case 58:
01517 case 59: case 60: case 61: case 62: case 63:
01518 goto MATCH_label_a0; break;
01519 case 9:
01520 if ((MATCH_w_32_0 >> 13 & 0x1) == 1) {
01521 MATCH_name =
01522 MATCH_name_i_70[(MATCH_w_32_0 >> 13 & 0x1) ];
01523 goto MATCH_label_a7;
01524
01525 }
01526 else {
01527 MATCH_name =
01528 MATCH_name_i_69[(MATCH_w_32_0 >> 13 & 0x1) ];
01529 goto MATCH_label_a7;
01530
01531 }
01532
01533 break;
01534 case 10:
01535 if ((MATCH_w_32_0 >> 13 & 0x1) == 1) {
01536 MATCH_name =
01537 MATCH_name_i_71[(MATCH_w_32_0 >> 13 & 0x1) ];
01538 goto MATCH_label_a7;
01539
01540 }
01541 else {
01542 MATCH_name =
01543 MATCH_name_i_70[(MATCH_w_32_0 >> 13 & 0x1) ];
01544 goto MATCH_label_a7;
01545
01546 }
01547
01548 break;
01549 case 13:
01550 if ((MATCH_w_32_0 >> 13 & 0x1) == 1) {
01551 MATCH_name =
01552 MATCH_name_i_72[(MATCH_w_32_0 >> 13 & 0x1) ];
01553 goto MATCH_label_a7;
01554
01555 }
01556 else {
01557 MATCH_name =
01558 MATCH_name_i_71[(MATCH_w_32_0 >> 13 & 0x1) ];
01559 goto MATCH_label_a7;
01560
01561 }
01562
01563 break;
01564 case 15:
01565 if ((MATCH_w_32_0 >> 13 & 0x1) == 1) {
01566 MATCH_name =
01567 MATCH_name_i_73[(MATCH_w_32_0 >> 13 & 0x1) ];
01568 goto MATCH_label_a7;
01569
01570 }
01571 else {
01572 MATCH_name =
01573 MATCH_name_i_72[(MATCH_w_32_0 >> 13 & 0x1) ];
01574 goto MATCH_label_a7;
01575
01576 }
01577
01578 break;
01579 case 16:
01580 if ((MATCH_w_32_0 >> 13 & 0x1) == 0) {
01581 MATCH_name =
01582 MATCH_name_i_73[(MATCH_w_32_0 >> 13 & 0x1) ];
01583 goto MATCH_label_a9;
01584
01585 }
01586 else
01587 goto MATCH_label_a0;
01588
01589 break;
01590 case 17:
01591 if ((MATCH_w_32_0 >> 13 & 0x1) == 0) {
01592 MATCH_name =
01593 MATCH_name_i_74[(MATCH_w_32_0 >> 13 & 0x1) ];
01594 goto MATCH_label_a9;
01595
01596 }
01597 else
01598 goto MATCH_label_a0;
01599
01600 break;
01601 case 18:
01602 if ((MATCH_w_32_0 >> 13 & 0x1) == 0) {
01603 MATCH_name =
01604 MATCH_name_i_75[(MATCH_w_32_0 >> 13 & 0x1) ];
01605 goto MATCH_label_a9;
01606
01607 }
01608 else
01609 goto MATCH_label_a0;
01610
01611 break;
01612 case 19:
01613 if ((MATCH_w_32_0 >> 13 & 0x1) == 0) {
01614 MATCH_name =
01615 MATCH_name_i_76[(MATCH_w_32_0 >> 13 & 0x1) ];
01616 goto MATCH_label_a9;
01617
01618 }
01619 else
01620 goto MATCH_label_a0;
01621
01622 break;
01623 case 20:
01624 if ((MATCH_w_32_0 >> 13 & 0x1) == 0) {
01625 MATCH_name =
01626 MATCH_name_i_77[(MATCH_w_32_0 >> 13 & 0x1) ];
01627 goto MATCH_label_a10;
01628
01629 }
01630 else
01631 goto MATCH_label_a0;
01632
01633 break;
01634 case 21:
01635 if ((MATCH_w_32_0 >> 13 & 0x1) == 0) {
01636 MATCH_name =
01637 MATCH_name_i_78[(MATCH_w_32_0 >> 13 & 0x1) ];
01638 goto MATCH_label_a10;
01639
01640 }
01641 else
01642 goto MATCH_label_a0;
01643
01644 break;
01645 case 22:
01646 if ((MATCH_w_32_0 >> 13 & 0x1) == 0) {
01647 MATCH_name =
01648 MATCH_name_i_79[(MATCH_w_32_0 >> 13 & 0x1) ];
01649 goto MATCH_label_a10;
01650
01651 }
01652 else
01653 goto MATCH_label_a0;
01654
01655 break;
01656 case 23:
01657 if ((MATCH_w_32_0 >> 13 & 0x1) == 0) {
01658 MATCH_name =
01659 MATCH_name_i_80[(MATCH_w_32_0 >> 13 & 0x1) ];
01660 goto MATCH_label_a10;
01661
01662 }
01663 else
01664 goto MATCH_label_a0;
01665
01666 break;
01667 case 25:
01668 if ((MATCH_w_32_0 >> 13 & 0x1) == 0) {
01669 MATCH_name =
01670 MATCH_name_i_81[(MATCH_w_32_0 >> 13 & 0x1) ];
01671 goto MATCH_label_a9;
01672
01673 }
01674 else
01675 goto MATCH_label_a0;
01676
01677 break;
01678 case 26:
01679 if ((MATCH_w_32_0 >> 13 & 0x1) == 0) {
01680 MATCH_name =
01681 MATCH_name_i_82[(MATCH_w_32_0 >> 13 & 0x1) ];
01682 goto MATCH_label_a9;
01683
01684 }
01685 else
01686 goto MATCH_label_a0;
01687
01688 break;
01689 case 29:
01690 if ((MATCH_w_32_0 >> 13 & 0x1) == 0) {
01691 MATCH_name =
01692 MATCH_name_i_83[(MATCH_w_32_0 >> 13 & 0x1) ];
01693 goto MATCH_label_a9;
01694
01695 }
01696 else
01697 goto MATCH_label_a0;
01698
01699 break;
01700 case 31:
01701 if ((MATCH_w_32_0 >> 13 & 0x1) == 0) {
01702 MATCH_name =
01703 MATCH_name_i_84[(MATCH_w_32_0 >> 13 & 0x1) ];
01704 goto MATCH_label_a9;
01705
01706 }
01707 else
01708 goto MATCH_label_a0;
01709
01710 break;
01711 case 32:
01712 if ((MATCH_w_32_0 >> 13 & 0x1) == 0) {
01713 MATCH_name =
01714 MATCH_name_i_85[(MATCH_w_32_0 >> 13 & 0x1) ];
01715 goto MATCH_label_a11;
01716
01717 }
01718 else {
01719 MATCH_name =
01720 MATCH_name_i_74[(MATCH_w_32_0 >> 13 & 0x1) ];
01721 goto MATCH_label_a11;
01722
01723 }
01724
01725 break;
01726 case 33:
01727 if ((MATCH_w_32_0 >> 13 & 0x1) == 0) {
01728 MATCH_name =
01729 MATCH_name_i_86[(MATCH_w_32_0 >> 13 & 0x1) ];
01730 goto MATCH_label_a12;
01731
01732 }
01733 else {
01734 MATCH_name =
01735 MATCH_name_i_75[(MATCH_w_32_0 >> 13 & 0x1) ];
01736 goto MATCH_label_a12;
01737
01738 }
01739
01740 break;
01741 case 35:
01742 if ((MATCH_w_32_0 >> 13 & 0x1) == 0) {
01743 MATCH_name =
01744 MATCH_name_i_87[(MATCH_w_32_0 >> 13 & 0x1) ];
01745 goto MATCH_label_a13;
01746
01747 }
01748 else {
01749 MATCH_name =
01750 MATCH_name_i_76[(MATCH_w_32_0 >> 13 & 0x1) ];
01751 goto MATCH_label_a13;
01752
01753 }
01754
01755 break;
01756 case 36:
01757 if ((MATCH_w_32_0 >> 13 & 0x1) == 1) {
01758 MATCH_name =
01759 MATCH_name_i_77[(MATCH_w_32_0 >> 13 & 0x1) ];
01760 goto MATCH_label_a14;
01761
01762 }
01763 else {
01764 MATCH_name = "STF";
01765 goto MATCH_label_a14;
01766
01767 }
01768
01769 break;
01770 case 37:
01771 if ((MATCH_w_32_0 >> 13 & 0x1) == 1) {
01772 MATCH_name =
01773 MATCH_name_i_78[(MATCH_w_32_0 >> 13 & 0x1) ];
01774 goto MATCH_label_a15;
01775
01776 }
01777 else {
01778 MATCH_name = "STFSR";
01779 goto MATCH_label_a15;
01780
01781 }
01782
01783 break;
01784 case 38:
01785 if ((MATCH_w_32_0 >> 13 & 0x1) == 1) {
01786 MATCH_name =
01787 MATCH_name_i_79[(MATCH_w_32_0 >> 13 & 0x1) ];
01788 goto MATCH_label_a16;
01789
01790 }
01791 else {
01792 MATCH_name = "STDFQ";
01793 goto MATCH_label_a16;
01794
01795 }
01796
01797 break;
01798 case 39:
01799 if ((MATCH_w_32_0 >> 13 & 0x1) == 1) {
01800 MATCH_name =
01801 MATCH_name_i_80[(MATCH_w_32_0 >> 13 & 0x1) ];
01802 goto MATCH_label_a17;
01803
01804 }
01805 else {
01806 MATCH_name = "STDF";
01807 goto MATCH_label_a17;
01808
01809 }
01810
01811 break;
01812 case 48:
01813 if ((MATCH_w_32_0 >> 13 & 0x1) == 1) {
01814 MATCH_name =
01815 MATCH_name_i_81[(MATCH_w_32_0 >> 13 & 0x1) ];
01816 goto MATCH_label_a18;
01817
01818 }
01819 else {
01820 MATCH_name = "LDC";
01821 goto MATCH_label_a18;
01822
01823 }
01824
01825 break;
01826 case 49:
01827 if ((MATCH_w_32_0 >> 13 & 0x1) == 1) {
01828 MATCH_name =
01829 MATCH_name_i_82[(MATCH_w_32_0 >> 13 & 0x1) ];
01830 goto MATCH_label_a19;
01831
01832 }
01833 else {
01834 MATCH_name = "LDCSR";
01835 goto MATCH_label_a19;
01836
01837 }
01838
01839 break;
01840 case 51:
01841 if ((MATCH_w_32_0 >> 13 & 0x1) == 1) {
01842 MATCH_name =
01843 MATCH_name_i_83[(MATCH_w_32_0 >> 13 & 0x1) ];
01844 goto MATCH_label_a18;
01845
01846 }
01847 else {
01848 MATCH_name = "LDDC";
01849 goto MATCH_label_a18;
01850
01851 }
01852
01853 break;
01854 case 52:
01855 if ((MATCH_w_32_0 >> 13 & 0x1) == 1) {
01856 MATCH_name =
01857 MATCH_name_i_84[(MATCH_w_32_0 >> 13 & 0x1) ];
01858 goto MATCH_label_a20;
01859
01860 }
01861 else {
01862 MATCH_name = "STC";
01863 goto MATCH_label_a20;
01864
01865 }
01866
01867 break;
01868 case 53:
01869 if ((MATCH_w_32_0 >> 13 & 0x1) == 1) {
01870 MATCH_name =
01871 MATCH_name_i_85[(MATCH_w_32_0 >> 13 & 0x1) ];
01872 goto MATCH_label_a21;
01873
01874 }
01875 else {
01876 MATCH_name = "STCSR";
01877 goto MATCH_label_a21;
01878
01879 }
01880
01881 break;
01882 case 54:
01883 if ((MATCH_w_32_0 >> 13 & 0x1) == 1) {
01884 MATCH_name =
01885 MATCH_name_i_86[(MATCH_w_32_0 >> 13 & 0x1) ];
01886 goto MATCH_label_a22;
01887
01888 }
01889 else {
01890 MATCH_name = "STDCQ";
01891 goto MATCH_label_a22;
01892
01893 }
01894
01895 break;
01896 case 55:
01897 if ((MATCH_w_32_0 >> 13 & 0x1) == 1) {
01898 MATCH_name =
01899 MATCH_name_i_87[(MATCH_w_32_0 >> 13 & 0x1) ];
01900 goto MATCH_label_a20;
01901
01902 }
01903 else {
01904 MATCH_name = "STDC";
01905 goto MATCH_label_a20;
01906
01907 }
01908
01909 break;
01910 default: assert(0);
01911 }
01912 break;
01913 default: assert(0);
01914 }
01915
01916 }goto MATCH_finished_a;
01917
01918 MATCH_label_a0: (void)0;
01919 {
01920 unsigned n = MATCH_w_32_0 ;
01921 nextPC = 4 + MATCH_p;
01922
01923 #line 279 "machine/sparc/disassembler.m"
01924
01925
01926
01927
01928 NULL;
01929
01930
01931
01932
01933
01934
01935 }
01936 goto MATCH_finished_a;
01937
01938 MATCH_label_a1: (void)0;
01939 {
01940 char *name = MATCH_name;
01941 unsigned tgt =
01942 4 * sign_extend((MATCH_w_32_0 & 0x3fffff) , 22) +
01943 addressToPC(MATCH_p);
01944 nextPC = 4 + MATCH_p;
01945
01946 #line 204 "machine/sparc/disassembler.m"
01947
01948
01949 sprintf (str, "%s %X", name, tgt-delta);
01950
01951
01952
01953
01954
01955
01956 }
01957 goto MATCH_finished_a;
01958
01959 MATCH_label_a2: (void)0;
01960 {
01961 char *name = MATCH_name;
01962 unsigned tgt =
01963 4 * sign_extend((MATCH_w_32_0 & 0x3fffff) , 22) +
01964 addressToPC(MATCH_p);
01965 nextPC = 4 + MATCH_p;
01966
01967 #line 201 "machine/sparc/disassembler.m"
01968
01969
01970 sprintf (str, "%s %X", name, tgt-delta);
01971
01972
01973
01974
01975
01976
01977 }
01978 goto MATCH_finished_a;
01979
01980 MATCH_label_a3: (void)0;
01981 {
01982 unsigned imm22 = (MATCH_w_32_0 & 0x3fffff) << 10;
01983 unsigned rd = (MATCH_w_32_0 >> 25 & 0x1f) ;
01984 nextPC = 4 + MATCH_p;
01985
01986 #line 111 "machine/sparc/disassembler.m"
01987
01988
01989 sprintf (str, "%s 0x%X,%s", "sethi", (imm22), DIS_RD);
01990
01991
01992
01993
01994
01995
01996 }
01997 goto MATCH_finished_a;
01998
01999 MATCH_label_a4: (void)0;
02000 {
02001 char *name = MATCH_name;
02002 unsigned rd = (MATCH_w_32_0 >> 25 & 0x1f) ;
02003 unsigned roi = addressToPC(MATCH_p);
02004 unsigned rs1 = (MATCH_w_32_0 >> 14 & 0x1f) ;
02005 nextPC = 4 + MATCH_p;
02006
02007 #line 198 "machine/sparc/disassembler.m"
02008
02009
02010 sprintf (str, "%s %s,%s,%s", name, DIS_RS1, DIS_ROI, DIS_RD);
02011
02012
02013
02014
02015
02016
02017 }
02018 goto MATCH_finished_a;
02019
02020 MATCH_label_a5: (void)0;
02021 {
02022 char *name = MATCH_name;
02023 unsigned addr = addressToPC(MATCH_p);
02024 unsigned rd = (MATCH_w_32_0 >> 25 & 0x1f) ;
02025 nextPC = 4 + MATCH_p;
02026
02027 #line 267 "machine/sparc/disassembler.m"
02028
02029
02030 sprintf (str, "%s %s,%s", name, DIS_ADDR, DIS_RD);
02031
02032
02033
02034
02035
02036
02037 }
02038 goto MATCH_finished_a;
02039
02040 MATCH_label_a6: (void)0;
02041 {
02042 char *name = MATCH_name;
02043 unsigned addr = addressToPC(MATCH_p);
02044 nextPC = 4 + MATCH_p;
02045
02046 #line 270 "machine/sparc/disassembler.m"
02047
02048
02049 sprintf (str, "%s", name);
02050
02051
02052
02053
02054
02055
02056 }
02057 goto MATCH_finished_a;
02058
02059 MATCH_label_a7: (void)0;
02060 {
02061 char *name = MATCH_name;
02062 unsigned addr = addressToPC(MATCH_p);
02063 unsigned rd = (MATCH_w_32_0 >> 25 & 0x1f) ;
02064 nextPC = 4 + MATCH_p;
02065
02066 #line 126 "machine/sparc/disassembler.m"
02067
02068
02069 sprintf (str, "%s %s,%s", name, DIS_ADDR, DIS_RD);
02070
02071
02072
02073
02074
02075
02076 }
02077 goto MATCH_finished_a;
02078
02079 MATCH_label_a8: (void)0;
02080 {
02081 char *name = MATCH_name;
02082 unsigned addr = addressToPC(MATCH_p);
02083 unsigned rd = (MATCH_w_32_0 >> 25 & 0x1f) ;
02084 nextPC = 4 + MATCH_p;
02085
02086 #line 141 "machine/sparc/disassembler.m"
02087
02088
02089 sprintf (str, "%s %s,%s", name, DIS_RD, DIS_ADDR);
02090
02091
02092
02093
02094
02095
02096 }
02097 goto MATCH_finished_a;
02098
02099 MATCH_label_a9: (void)0;
02100 {
02101 char *name = MATCH_name;
02102 unsigned addr = addressToPC(MATCH_p);
02103 unsigned asi = (MATCH_w_32_0 >> 5 & 0xff) ;
02104 unsigned rd = (MATCH_w_32_0 >> 25 & 0x1f) ;
02105 nextPC = 4 + MATCH_p;
02106
02107 #line 138 "machine/sparc/disassembler.m"
02108
02109
02110 sprintf (str, "%s %s,%s", name, DIS_RD, DIS_ADDR);
02111
02112
02113
02114
02115
02116
02117 }
02118 goto MATCH_finished_a;
02119
02120 MATCH_label_a10: (void)0;
02121 {
02122 char *name = MATCH_name;
02123 unsigned addr = addressToPC(MATCH_p);
02124 unsigned asi = (MATCH_w_32_0 >> 5 & 0xff) ;
02125 unsigned rd = (MATCH_w_32_0 >> 25 & 0x1f) ;
02126 nextPC = 4 + MATCH_p;
02127
02128 #line 153 "machine/sparc/disassembler.m"
02129
02130
02131 sprintf (str, "%s %s,%s", name, DIS_RD, DIS_ADDR);
02132
02133
02134
02135
02136
02137
02138 }
02139 goto MATCH_finished_a;
02140
02141 MATCH_label_a11: (void)0;
02142 {
02143 char *name = MATCH_name;
02144 unsigned addr = addressToPC(MATCH_p);
02145 unsigned fds = (MATCH_w_32_0 >> 25 & 0x1f) ;
02146 nextPC = 4 + MATCH_p;
02147
02148 #line 129 "machine/sparc/disassembler.m"
02149
02150
02151 sprintf (str, "%s %s,%s", name, DIS_ADDR, DIS_FDS);
02152
02153
02154
02155
02156
02157
02158 }
02159 goto MATCH_finished_a;
02160
02161 MATCH_label_a12: (void)0;
02162 {
02163 char *name = MATCH_name;
02164 unsigned addr = addressToPC(MATCH_p);
02165 nextPC = 4 + MATCH_p;
02166
02167 #line 156 "machine/sparc/disassembler.m"
02168
02169
02170 sprintf (str, "%s %s", name, DIS_ADDR);
02171
02172
02173
02174
02175
02176
02177 }
02178 goto MATCH_finished_a;
02179
02180 MATCH_label_a13: (void)0;
02181 {
02182 char *name = MATCH_name;
02183 unsigned addr = addressToPC(MATCH_p);
02184 unsigned fdd = (MATCH_w_32_0 >> 25 & 0x1f) ;
02185 nextPC = 4 + MATCH_p;
02186
02187 #line 132 "machine/sparc/disassembler.m"
02188
02189
02190 sprintf (str, "%s %s,%s", name, DIS_ADDR, DIS_FDD);
02191
02192
02193
02194
02195
02196
02197 }
02198 goto MATCH_finished_a;
02199
02200 MATCH_label_a14: (void)0;
02201 {
02202 char *name = MATCH_name;
02203 unsigned addr = addressToPC(MATCH_p);
02204 unsigned fds = (MATCH_w_32_0 >> 25 & 0x1f) ;
02205 nextPC = 4 + MATCH_p;
02206
02207 #line 144 "machine/sparc/disassembler.m"
02208
02209
02210 sprintf (str, "%s %s,%s", name, DIS_FDS, DIS_ADDR);
02211
02212
02213
02214
02215
02216
02217 }
02218 goto MATCH_finished_a;
02219
02220 MATCH_label_a15: (void)0;
02221 {
02222 char *name = MATCH_name;
02223 unsigned addr = addressToPC(MATCH_p);
02224 nextPC = 4 + MATCH_p;
02225
02226 #line 162 "machine/sparc/disassembler.m"
02227
02228
02229 sprintf (str, "%s %s", name, DIS_ADDR);
02230
02231
02232
02233
02234
02235
02236 }
02237 goto MATCH_finished_a;
02238
02239 MATCH_label_a16: (void)0;
02240 {
02241 char *name = MATCH_name;
02242 unsigned addr = addressToPC(MATCH_p);
02243 nextPC = 4 + MATCH_p;
02244
02245 #line 168 "machine/sparc/disassembler.m"
02246
02247
02248 sprintf (str, "%s %s", name, DIS_ADDR);
02249
02250
02251
02252
02253
02254
02255 }
02256 goto MATCH_finished_a;
02257
02258 MATCH_label_a17: (void)0;
02259 {
02260 char *name = MATCH_name;
02261 unsigned addr = addressToPC(MATCH_p);
02262 unsigned fdd = (MATCH_w_32_0 >> 25 & 0x1f) ;
02263 nextPC = 4 + MATCH_p;
02264
02265 #line 147 "machine/sparc/disassembler.m"
02266
02267
02268 sprintf (str, "%s %s,%s", name, DIS_FDD, DIS_ADDR);
02269
02270
02271
02272
02273
02274
02275 }
02276 goto MATCH_finished_a;
02277
02278 MATCH_label_a18: (void)0;
02279 {
02280 char *name = MATCH_name;
02281 unsigned addr = addressToPC(MATCH_p);
02282 unsigned cd = (MATCH_w_32_0 >> 25 & 0x1f) ;
02283 nextPC = 4 + MATCH_p;
02284
02285 #line 135 "machine/sparc/disassembler.m"
02286
02287
02288 sprintf (str, "%s %s,%s", name, DIS_ADDR, DIS_CD);
02289
02290
02291
02292
02293
02294
02295 }
02296 goto MATCH_finished_a;
02297
02298 MATCH_label_a19: (void)0;
02299 {
02300 char *name = MATCH_name;
02301 unsigned addr = addressToPC(MATCH_p);
02302 nextPC = 4 + MATCH_p;
02303
02304 #line 159 "machine/sparc/disassembler.m"
02305
02306
02307 sprintf (str, "%s %s", name, DIS_ADDR);
02308
02309
02310
02311
02312
02313
02314 }
02315 goto MATCH_finished_a;
02316
02317 MATCH_label_a20: (void)0;
02318 {
02319 char *name = MATCH_name;
02320 unsigned addr = addressToPC(MATCH_p);
02321 unsigned cd = (MATCH_w_32_0 >> 25 & 0x1f) ;
02322 nextPC = 4 + MATCH_p;
02323
02324 #line 150 "machine/sparc/disassembler.m"
02325
02326
02327 sprintf (str, "%s %s,%s", name, DIS_CD, DIS_ADDR);
02328
02329
02330
02331
02332
02333
02334 }
02335 goto MATCH_finished_a;
02336
02337 MATCH_label_a21: (void)0;
02338 {
02339 char *name = MATCH_name;
02340 unsigned addr = addressToPC(MATCH_p);
02341 nextPC = 4 + MATCH_p;
02342
02343 #line 165 "machine/sparc/disassembler.m"
02344
02345
02346 sprintf (str, "%s %s", name, DIS_ADDR);
02347
02348
02349
02350
02351
02352
02353 }
02354 goto MATCH_finished_a;
02355
02356 MATCH_label_a22: (void)0;
02357 {
02358 char *name = MATCH_name;
02359 unsigned addr = addressToPC(MATCH_p);
02360 nextPC = 4 + MATCH_p;
02361
02362 #line 171 "machine/sparc/disassembler.m"
02363
02364
02365 sprintf (str, "%s %s", name, DIS_ADDR);
02366
02367
02368
02369
02370
02371
02372 }
02373 goto MATCH_finished_a;
02374
02375 MATCH_finished_a: (void)0;
02376
02377 }
02378
02379 #line 287 "machine/sparc/disassembler.m"
02380
02381 return (nextPC - hostPC);
02382 }
02383
02384
02385