1*0472e113SJosef 'Jeff' Sipek /* 2*0472e113SJosef 'Jeff' Sipek * This file and its contents are supplied under the terms of the 3*0472e113SJosef 'Jeff' Sipek * Common Development and Distribution License ("CDDL"), version 1.0. 4*0472e113SJosef 'Jeff' Sipek * You may only use this file in accordance with the terms of version 5*0472e113SJosef 'Jeff' Sipek * 1.0 of the CDDL. 6*0472e113SJosef 'Jeff' Sipek * 7*0472e113SJosef 'Jeff' Sipek * A full copy of the text of the CDDL should have accompanied this 8*0472e113SJosef 'Jeff' Sipek * source. A copy of the CDDL is also available via the Internet at 9*0472e113SJosef 'Jeff' Sipek * http://www.illumos.org/license/CDDL. 10*0472e113SJosef 'Jeff' Sipek */ 11*0472e113SJosef 'Jeff' Sipek 12*0472e113SJosef 'Jeff' Sipek /* 13*0472e113SJosef 'Jeff' Sipek * Copyright 2015 Josef 'Jeff' Sipek <jeffpc@josefsipek.net> 14*0472e113SJosef 'Jeff' Sipek */ 15*0472e113SJosef 'Jeff' Sipek 16*0472e113SJosef 'Jeff' Sipek #include <stdio.h> 17*0472e113SJosef 'Jeff' Sipek #include <libdisasm.h> 18*0472e113SJosef 'Jeff' Sipek #include <sys/sysmacros.h> 19*0472e113SJosef 'Jeff' Sipek #include <sys/debug.h> 20*0472e113SJosef 'Jeff' Sipek #include <sys/byteorder.h> 21*0472e113SJosef 'Jeff' Sipek 22*0472e113SJosef 'Jeff' Sipek #include "libdisasm_impl.h" 23*0472e113SJosef 'Jeff' Sipek 24*0472e113SJosef 'Jeff' Sipek #define ILC2LEN(ilc) (2 * ((ilc) >= 2 ? (ilc) : (ilc) + 1)) 25*0472e113SJosef 'Jeff' Sipek 26*0472e113SJosef 'Jeff' Sipek /* 27*0472e113SJosef 'Jeff' Sipek * Throughout this file, the instruction format names based on: 28*0472e113SJosef 'Jeff' Sipek * SA22-7832-09 z/Architecture Principles of Operation 29*0472e113SJosef 'Jeff' Sipek * 30*0472e113SJosef 'Jeff' Sipek * System/370, ESA/390, and earlier z/Architecture POP use slightly 31*0472e113SJosef 'Jeff' Sipek * different names for the formats (the variant names are numeric). For the 32*0472e113SJosef 'Jeff' Sipek * sake of simplicity, we use the most detailed definitions - z/Architecture. 33*0472e113SJosef 'Jeff' Sipek * 34*0472e113SJosef 'Jeff' Sipek * For ESA/390 we map the formats: 35*0472e113SJosef 'Jeff' Sipek * E -> E 36*0472e113SJosef 'Jeff' Sipek * I -> I 37*0472e113SJosef 'Jeff' Sipek * RR -> RR 38*0472e113SJosef 'Jeff' Sipek * RRE -> RRE 39*0472e113SJosef 'Jeff' Sipek * RRF -> RRD & RRFa-e 40*0472e113SJosef 'Jeff' Sipek * RX -> RXa-b 41*0472e113SJosef 'Jeff' Sipek * RXE -> RXE 42*0472e113SJosef 'Jeff' Sipek * RXF -> RXF 43*0472e113SJosef 'Jeff' Sipek * RS -> RSa-b 44*0472e113SJosef 'Jeff' Sipek * RSE -> RSYa-b 45*0472e113SJosef 'Jeff' Sipek * RSL -> RSLa 46*0472e113SJosef 'Jeff' Sipek * RSI -> RSI 47*0472e113SJosef 'Jeff' Sipek * RI -> RIa-c 48*0472e113SJosef 'Jeff' Sipek * RIL -> RILa-c 49*0472e113SJosef 'Jeff' Sipek * SI -> SI 50*0472e113SJosef 'Jeff' Sipek * S -> S 51*0472e113SJosef 'Jeff' Sipek * SS -> SSa-b & SSd-e 52*0472e113SJosef 'Jeff' Sipek * SSE -> SSE 53*0472e113SJosef 'Jeff' Sipek * 54*0472e113SJosef 'Jeff' Sipek * For System/370 we map the formats: 55*0472e113SJosef 'Jeff' Sipek * RR -> RR 56*0472e113SJosef 'Jeff' Sipek * RX -> RXa-b 57*0472e113SJosef 'Jeff' Sipek * RS -> RSa-b 58*0472e113SJosef 'Jeff' Sipek * SI -> SI 59*0472e113SJosef 'Jeff' Sipek * S -> S 60*0472e113SJosef 'Jeff' Sipek * SS -> SSa-c 61*0472e113SJosef 'Jeff' Sipek * 62*0472e113SJosef 'Jeff' Sipek * Disassembly begins in tbl_xx. The first byte of the instruction is used 63*0472e113SJosef 'Jeff' Sipek * as the index. This yields either an instruction or a sub-table. 64*0472e113SJosef 'Jeff' Sipek * 65*0472e113SJosef 'Jeff' Sipek * If an instruction is encountered, its format field is used to format the 66*0472e113SJosef 'Jeff' Sipek * instruction. 67*0472e113SJosef 'Jeff' Sipek * 68*0472e113SJosef 'Jeff' Sipek * There are two types of sub-tables: extended opcode tables (indicated with 69*0472e113SJosef 'Jeff' Sipek * IF_TBL) or a multiple mnemonics tables (indicated with IF_MULTI). 70*0472e113SJosef 'Jeff' Sipek * 71*0472e113SJosef 'Jeff' Sipek * Extended opcode tables indicade which additional bits of the instruction 72*0472e113SJosef 'Jeff' Sipek * should be inspected. These bits are used as an index into the sub table. 73*0472e113SJosef 'Jeff' Sipek * 74*0472e113SJosef 'Jeff' Sipek * Multiple mnemonic tables are used to print different mnemonics depending 75*0472e113SJosef 'Jeff' Sipek * on the architecture. Over the years, certain instructions got a new 76*0472e113SJosef 'Jeff' Sipek * preferred mnemonic. For example, 0xa70 is test-under-mask-high (tmh) on 77*0472e113SJosef 'Jeff' Sipek * System/390. On z/Architecture systems, the instruction behaves 78*0472e113SJosef 'Jeff' Sipek * identically (and the assembler hapilly accepts tmh), but the preferred 79*0472e113SJosef 'Jeff' Sipek * mnemonic is tmlh (test-under-mask-low-high) because z/Architecture 80*0472e113SJosef 'Jeff' Sipek * extended the general purpose registers from 32 bits to 64 bits. The 81*0472e113SJosef 'Jeff' Sipek * current architecture flag (e.g., F_390) is used to index into the 82*0472e113SJosef 'Jeff' Sipek * sub-table. 83*0472e113SJosef 'Jeff' Sipek * 84*0472e113SJosef 'Jeff' Sipek * Regardless of which sub-table is encountered, the selected entry in the 85*0472e113SJosef 'Jeff' Sipek * sub-table is interpreted using the same rules as the contents of tbl_xx. 86*0472e113SJosef 'Jeff' Sipek * 87*0472e113SJosef 'Jeff' Sipek * Finally, we use the extended opcode sub-table mechanism to pretty print 88*0472e113SJosef 'Jeff' Sipek * the branching instructions. All branches are conditional based on a 89*0472e113SJosef 'Jeff' Sipek * 4-bit mask indicating which value of the condition code will result in a 90*0472e113SJosef 'Jeff' Sipek * taken branch. In order to produce a more human friendly output, we use 91*0472e113SJosef 'Jeff' Sipek * the 4-bit mask as an extended opcode to break up the branching 92*0472e113SJosef 'Jeff' Sipek * instruction into 16 different ones. For example, instead of printing: 93*0472e113SJosef 'Jeff' Sipek * 94*0472e113SJosef 'Jeff' Sipek * bc 7,0x123(%r1,%r2) 95*0472e113SJosef 'Jeff' Sipek * 96*0472e113SJosef 'Jeff' Sipek * we print: 97*0472e113SJosef 'Jeff' Sipek * 98*0472e113SJosef 'Jeff' Sipek * bne 0x123(%r1,%r2) 99*0472e113SJosef 'Jeff' Sipek * 100*0472e113SJosef 'Jeff' Sipek * Note that we are using designated initializers via the INSTR/TABLE/MULTI 101*0472e113SJosef 'Jeff' Sipek * macros and therefore the below tables can be sparse. We rely on unset 102*0472e113SJosef 'Jeff' Sipek * entries having zero format fields (aka. IF_INVAL) per C99. 103*0472e113SJosef 'Jeff' Sipek */ 104*0472e113SJosef 'Jeff' Sipek 105*0472e113SJosef 'Jeff' Sipek /* BEGIN CSTYLED */ 106*0472e113SJosef 'Jeff' Sipek enum ifmt { 107*0472e113SJosef 'Jeff' Sipek /* invalid */ 108*0472e113SJosef 'Jeff' Sipek IF_INVAL = 0, 109*0472e113SJosef 'Jeff' Sipek 110*0472e113SJosef 'Jeff' Sipek /* indirection */ 111*0472e113SJosef 'Jeff' Sipek IF_TBL, 112*0472e113SJosef 'Jeff' Sipek IF_MULTI, 113*0472e113SJosef 'Jeff' Sipek 114*0472e113SJosef 'Jeff' Sipek /* 2-byte */ 115*0472e113SJosef 'Jeff' Sipek IF_ZERO, /* 370, 390, z */ 116*0472e113SJosef 'Jeff' Sipek IF_E, /* 390, z */ 117*0472e113SJosef 'Jeff' Sipek IF_I, /* 390, z */ 118*0472e113SJosef 'Jeff' Sipek IF_RR, /* 370, 390, z */ 119*0472e113SJosef 'Jeff' Sipek 120*0472e113SJosef 'Jeff' Sipek /* 4-byte */ 121*0472e113SJosef 'Jeff' Sipek IF_DIAG, /* 370, 390, z */ 122*0472e113SJosef 'Jeff' Sipek IF_IE, /* z */ 123*0472e113SJosef 'Jeff' Sipek IF_RIa, /* 390, z */ 124*0472e113SJosef 'Jeff' Sipek IF_RIb, /* 390, z */ 125*0472e113SJosef 'Jeff' Sipek IF_RIc, /* 390, z */ 126*0472e113SJosef 'Jeff' Sipek IF_RRD, /* 390, z */ /* on 390 these are RRF */ 127*0472e113SJosef 'Jeff' Sipek IF_RRE, /* 390, z */ 128*0472e113SJosef 'Jeff' Sipek IF_RRFa, /* 390, z */ 129*0472e113SJosef 'Jeff' Sipek IF_RRFb, /* 390, z */ 130*0472e113SJosef 'Jeff' Sipek IF_RRFc, /* 390, z */ 131*0472e113SJosef 'Jeff' Sipek IF_RRFd, /* 390, z */ 132*0472e113SJosef 'Jeff' Sipek IF_RRFe, /* 390, z */ 133*0472e113SJosef 'Jeff' Sipek IF_RSa, /* 370, 390, z */ 134*0472e113SJosef 'Jeff' Sipek IF_RSb, /* 370, 390, z */ 135*0472e113SJosef 'Jeff' Sipek IF_RSI, /* 390, z */ 136*0472e113SJosef 'Jeff' Sipek IF_RXa, /* 370, 390, z */ 137*0472e113SJosef 'Jeff' Sipek IF_RXb, /* 370, 390, z */ 138*0472e113SJosef 'Jeff' Sipek IF_S, /* 370, 390, z */ 139*0472e113SJosef 'Jeff' Sipek IF_SI, /* 370, 390, z */ 140*0472e113SJosef 'Jeff' Sipek 141*0472e113SJosef 'Jeff' Sipek /* 6-byte */ 142*0472e113SJosef 'Jeff' Sipek IF_MII, /* z */ 143*0472e113SJosef 'Jeff' Sipek IF_RIEa, /* z */ 144*0472e113SJosef 'Jeff' Sipek IF_RIEb, /* z */ 145*0472e113SJosef 'Jeff' Sipek IF_RIEc, /* z */ 146*0472e113SJosef 'Jeff' Sipek IF_RIEd, /* z */ 147*0472e113SJosef 'Jeff' Sipek IF_RIEe, /* z */ 148*0472e113SJosef 'Jeff' Sipek IF_RIEf, /* z */ 149*0472e113SJosef 'Jeff' Sipek IF_RILa, /* 390, z */ 150*0472e113SJosef 'Jeff' Sipek IF_RILb, /* 390, z */ 151*0472e113SJosef 'Jeff' Sipek IF_RILc, /* 390, z */ 152*0472e113SJosef 'Jeff' Sipek IF_RIS, /* z */ 153*0472e113SJosef 'Jeff' Sipek IF_RRS, /* z */ 154*0472e113SJosef 'Jeff' Sipek IF_RSLa, /* 390, z */ 155*0472e113SJosef 'Jeff' Sipek IF_RSLb, /* z */ 156*0472e113SJosef 'Jeff' Sipek IF_RSYa, /* z */ 157*0472e113SJosef 'Jeff' Sipek IF_RSYb, /* z */ 158*0472e113SJosef 'Jeff' Sipek IF_RXE, /* 390, z */ 159*0472e113SJosef 'Jeff' Sipek IF_RXF, /* 390, z */ 160*0472e113SJosef 'Jeff' Sipek IF_RXYa, /* z */ 161*0472e113SJosef 'Jeff' Sipek IF_RXYb, /* z */ 162*0472e113SJosef 'Jeff' Sipek IF_SIL, /* z */ 163*0472e113SJosef 'Jeff' Sipek IF_SIY, /* z */ 164*0472e113SJosef 'Jeff' Sipek IF_SMI, /* z */ 165*0472e113SJosef 'Jeff' Sipek IF_SSa, /* 370, 390, z */ 166*0472e113SJosef 'Jeff' Sipek IF_SSb, /* 370, 390, z */ 167*0472e113SJosef 'Jeff' Sipek IF_SSc, /* 370, 390, z */ 168*0472e113SJosef 'Jeff' Sipek IF_SSd, /* 390, z */ 169*0472e113SJosef 'Jeff' Sipek IF_SSe, /* 390, z */ 170*0472e113SJosef 'Jeff' Sipek IF_SSf, /* 390, z */ 171*0472e113SJosef 'Jeff' Sipek IF_SSE, /* 390, z */ 172*0472e113SJosef 'Jeff' Sipek IF_SSF, /* z */ 173*0472e113SJosef 'Jeff' Sipek }; 174*0472e113SJosef 'Jeff' Sipek 175*0472e113SJosef 'Jeff' Sipek #define IF_NFMTS (IF_SSF + 1) 176*0472e113SJosef 'Jeff' Sipek 177*0472e113SJosef 'Jeff' Sipek #define F_370 0x0001 /* 370 */ 178*0472e113SJosef 'Jeff' Sipek #define F_390 0x0002 /* 390 */ 179*0472e113SJosef 'Jeff' Sipek #define F_Z 0x0004 /* z */ 180*0472e113SJosef 'Jeff' Sipek #define F_SIGNED_IMM 0x0010 /* 370, 390, z */ 181*0472e113SJosef 'Jeff' Sipek #define F_CTL_REG 0x0020 /* 370, 390, z */ 182*0472e113SJosef 'Jeff' Sipek #define F_HIDE_MASK 0x0040 /* 370, 390, z */ 183*0472e113SJosef 'Jeff' Sipek #define F_R1_IS_MASK 0x0080 /* 370, 390, z */ 184*0472e113SJosef 'Jeff' Sipek /* END CSTYLED */ 185*0472e113SJosef 'Jeff' Sipek 186*0472e113SJosef 'Jeff' Sipek struct inst_table { 187*0472e113SJosef 'Jeff' Sipek union { 188*0472e113SJosef 'Jeff' Sipek struct { 189*0472e113SJosef 'Jeff' Sipek const char *it_name; 190*0472e113SJosef 'Jeff' Sipek unsigned it_flags; 191*0472e113SJosef 'Jeff' Sipek } it_inst; 192*0472e113SJosef 'Jeff' Sipek struct { 193*0472e113SJosef 'Jeff' Sipek const struct inst_table *it_ptr; 194*0472e113SJosef 'Jeff' Sipek uint8_t it_off:4; 195*0472e113SJosef 'Jeff' Sipek uint8_t it_shift:4; 196*0472e113SJosef 'Jeff' Sipek uint8_t it_mask; 197*0472e113SJosef 'Jeff' Sipek } it_table; 198*0472e113SJosef 'Jeff' Sipek struct { 199*0472e113SJosef 'Jeff' Sipek const struct inst_table *it_ptr; 200*0472e113SJosef 'Jeff' Sipek } it_multi; 201*0472e113SJosef 'Jeff' Sipek } it_u; 202*0472e113SJosef 'Jeff' Sipek enum ifmt it_fmt; 203*0472e113SJosef 'Jeff' Sipek }; 204*0472e113SJosef 'Jeff' Sipek 205*0472e113SJosef 'Jeff' Sipek #define BITFLD(a, b) DECL_BITFIELD2(b:4, a:4) 206*0472e113SJosef 'Jeff' Sipek 207*0472e113SJosef 'Jeff' Sipek union inst { 208*0472e113SJosef 'Jeff' Sipek uint8_t raw[6]; 209*0472e113SJosef 'Jeff' Sipek struct { 210*0472e113SJosef 'Jeff' Sipek uint8_t op; 211*0472e113SJosef 'Jeff' Sipek uint8_t par1; 212*0472e113SJosef 'Jeff' Sipek uint16_t par2; 213*0472e113SJosef 'Jeff' Sipek } diag; 214*0472e113SJosef 'Jeff' Sipek struct { 215*0472e113SJosef 'Jeff' Sipek uint8_t op; 216*0472e113SJosef 'Jeff' Sipek uint8_t i; 217*0472e113SJosef 'Jeff' Sipek } i; 218*0472e113SJosef 'Jeff' Sipek struct { 219*0472e113SJosef 'Jeff' Sipek uint16_t op; 220*0472e113SJosef 'Jeff' Sipek uint8_t pad; 221*0472e113SJosef 'Jeff' Sipek BITFLD(i1, i2); 222*0472e113SJosef 'Jeff' Sipek } ie; 223*0472e113SJosef 'Jeff' Sipek struct { 224*0472e113SJosef 'Jeff' Sipek uint8_t op; 225*0472e113SJosef 'Jeff' Sipek BITFLD(m1, ri2h); 226*0472e113SJosef 'Jeff' Sipek uint8_t ri2l; 227*0472e113SJosef 'Jeff' Sipek uint8_t ri3h; 228*0472e113SJosef 'Jeff' Sipek uint16_t ri3l; 229*0472e113SJosef 'Jeff' Sipek } mii; 230*0472e113SJosef 'Jeff' Sipek struct { 231*0472e113SJosef 'Jeff' Sipek uint8_t op; 232*0472e113SJosef 'Jeff' Sipek BITFLD(r1, r2); 233*0472e113SJosef 'Jeff' Sipek } rr; 234*0472e113SJosef 'Jeff' Sipek struct { 235*0472e113SJosef 'Jeff' Sipek uint16_t op; 236*0472e113SJosef 'Jeff' Sipek BITFLD(r1, pad); 237*0472e113SJosef 'Jeff' Sipek BITFLD(r3, r2); 238*0472e113SJosef 'Jeff' Sipek } rrd; 239*0472e113SJosef 'Jeff' Sipek struct { 240*0472e113SJosef 'Jeff' Sipek uint16_t op; 241*0472e113SJosef 'Jeff' Sipek uint8_t pad; 242*0472e113SJosef 'Jeff' Sipek BITFLD(r1, r2); 243*0472e113SJosef 'Jeff' Sipek } rre; 244*0472e113SJosef 'Jeff' Sipek struct { 245*0472e113SJosef 'Jeff' Sipek uint16_t op; 246*0472e113SJosef 'Jeff' Sipek BITFLD(r1, m4); 247*0472e113SJosef 'Jeff' Sipek BITFLD(r3, r2); 248*0472e113SJosef 'Jeff' Sipek } rrf_ab; 249*0472e113SJosef 'Jeff' Sipek struct { 250*0472e113SJosef 'Jeff' Sipek uint16_t op; 251*0472e113SJosef 'Jeff' Sipek BITFLD(m3, m4); 252*0472e113SJosef 'Jeff' Sipek BITFLD(r1, r2); 253*0472e113SJosef 'Jeff' Sipek } rrf_cde; 254*0472e113SJosef 'Jeff' Sipek struct { 255*0472e113SJosef 'Jeff' Sipek uint8_t op1; 256*0472e113SJosef 'Jeff' Sipek BITFLD(r1, r2); 257*0472e113SJosef 'Jeff' Sipek BITFLD(b4, d4h); 258*0472e113SJosef 'Jeff' Sipek uint8_t d4l; 259*0472e113SJosef 'Jeff' Sipek BITFLD(m3, pad); 260*0472e113SJosef 'Jeff' Sipek uint8_t op2; 261*0472e113SJosef 'Jeff' Sipek } rrs; 262*0472e113SJosef 'Jeff' Sipek struct { 263*0472e113SJosef 'Jeff' Sipek uint8_t op; 264*0472e113SJosef 'Jeff' Sipek BITFLD(r1, x2); 265*0472e113SJosef 'Jeff' Sipek BITFLD(b2, d2h); 266*0472e113SJosef 'Jeff' Sipek uint8_t d2l; 267*0472e113SJosef 'Jeff' Sipek } rx_a; 268*0472e113SJosef 'Jeff' Sipek struct { 269*0472e113SJosef 'Jeff' Sipek uint8_t op; 270*0472e113SJosef 'Jeff' Sipek BITFLD(m1, x2); 271*0472e113SJosef 'Jeff' Sipek BITFLD(b2, d2h); 272*0472e113SJosef 'Jeff' Sipek uint8_t d2l; 273*0472e113SJosef 'Jeff' Sipek } rx_b; 274*0472e113SJosef 'Jeff' Sipek struct { 275*0472e113SJosef 'Jeff' Sipek uint8_t op1; 276*0472e113SJosef 'Jeff' Sipek BITFLD(r1, x2); 277*0472e113SJosef 'Jeff' Sipek BITFLD(b2, d2h); 278*0472e113SJosef 'Jeff' Sipek uint8_t d2l; 279*0472e113SJosef 'Jeff' Sipek uint8_t pad; 280*0472e113SJosef 'Jeff' Sipek uint8_t op2; 281*0472e113SJosef 'Jeff' Sipek } rxe; 282*0472e113SJosef 'Jeff' Sipek struct { 283*0472e113SJosef 'Jeff' Sipek uint8_t op1; 284*0472e113SJosef 'Jeff' Sipek BITFLD(r3, x2); 285*0472e113SJosef 'Jeff' Sipek BITFLD(b2, d2h); 286*0472e113SJosef 'Jeff' Sipek uint8_t d2l; 287*0472e113SJosef 'Jeff' Sipek BITFLD(r1, pad); 288*0472e113SJosef 'Jeff' Sipek uint8_t op2; 289*0472e113SJosef 'Jeff' Sipek } rxf; 290*0472e113SJosef 'Jeff' Sipek struct { 291*0472e113SJosef 'Jeff' Sipek uint8_t op1; 292*0472e113SJosef 'Jeff' Sipek BITFLD(r1, x2); 293*0472e113SJosef 'Jeff' Sipek BITFLD(b2, dl2h); 294*0472e113SJosef 'Jeff' Sipek uint8_t dl2l; 295*0472e113SJosef 'Jeff' Sipek uint8_t dh2; 296*0472e113SJosef 'Jeff' Sipek uint8_t op2; 297*0472e113SJosef 'Jeff' Sipek } rxy_a; 298*0472e113SJosef 'Jeff' Sipek struct { 299*0472e113SJosef 'Jeff' Sipek uint8_t op1; 300*0472e113SJosef 'Jeff' Sipek BITFLD(m1, x2); 301*0472e113SJosef 'Jeff' Sipek BITFLD(b2, dl2h); 302*0472e113SJosef 'Jeff' Sipek uint8_t dl2l; 303*0472e113SJosef 'Jeff' Sipek uint8_t dh2; 304*0472e113SJosef 'Jeff' Sipek uint8_t op2; 305*0472e113SJosef 'Jeff' Sipek } rxy_b; 306*0472e113SJosef 'Jeff' Sipek struct { 307*0472e113SJosef 'Jeff' Sipek uint8_t op; 308*0472e113SJosef 'Jeff' Sipek BITFLD(r1, r3); 309*0472e113SJosef 'Jeff' Sipek BITFLD(b2, d2h); 310*0472e113SJosef 'Jeff' Sipek uint8_t d2l; 311*0472e113SJosef 'Jeff' Sipek } rs_a; 312*0472e113SJosef 'Jeff' Sipek struct { 313*0472e113SJosef 'Jeff' Sipek uint8_t op; 314*0472e113SJosef 'Jeff' Sipek BITFLD(r1, m3); 315*0472e113SJosef 'Jeff' Sipek BITFLD(b2, d2h); 316*0472e113SJosef 'Jeff' Sipek uint8_t d2l; 317*0472e113SJosef 'Jeff' Sipek } rs_b; 318*0472e113SJosef 'Jeff' Sipek struct { 319*0472e113SJosef 'Jeff' Sipek uint8_t op1; 320*0472e113SJosef 'Jeff' Sipek BITFLD(l1, pad1); 321*0472e113SJosef 'Jeff' Sipek BITFLD(b1, d1h); 322*0472e113SJosef 'Jeff' Sipek uint8_t d1l; 323*0472e113SJosef 'Jeff' Sipek uint8_t pad2; 324*0472e113SJosef 'Jeff' Sipek uint8_t op2; 325*0472e113SJosef 'Jeff' Sipek } rsl_a; 326*0472e113SJosef 'Jeff' Sipek struct { 327*0472e113SJosef 'Jeff' Sipek uint8_t op1; 328*0472e113SJosef 'Jeff' Sipek uint8_t l2; 329*0472e113SJosef 'Jeff' Sipek BITFLD(b2, d2h); 330*0472e113SJosef 'Jeff' Sipek uint8_t d2l; 331*0472e113SJosef 'Jeff' Sipek BITFLD(r1, m3); 332*0472e113SJosef 'Jeff' Sipek uint8_t op2; 333*0472e113SJosef 'Jeff' Sipek } rsl_b; 334*0472e113SJosef 'Jeff' Sipek struct { 335*0472e113SJosef 'Jeff' Sipek uint8_t op; 336*0472e113SJosef 'Jeff' Sipek BITFLD(r1, r3); 337*0472e113SJosef 'Jeff' Sipek uint16_t ri2; 338*0472e113SJosef 'Jeff' Sipek } rsi; 339*0472e113SJosef 'Jeff' Sipek struct { 340*0472e113SJosef 'Jeff' Sipek uint8_t op1; 341*0472e113SJosef 'Jeff' Sipek BITFLD(r1, r3); 342*0472e113SJosef 'Jeff' Sipek BITFLD(b2, dl2h); 343*0472e113SJosef 'Jeff' Sipek uint8_t dl2l; 344*0472e113SJosef 'Jeff' Sipek uint8_t dh2; 345*0472e113SJosef 'Jeff' Sipek uint8_t op2; 346*0472e113SJosef 'Jeff' Sipek } rsy_a; 347*0472e113SJosef 'Jeff' Sipek struct { 348*0472e113SJosef 'Jeff' Sipek uint8_t op1; 349*0472e113SJosef 'Jeff' Sipek BITFLD(r1, m3); 350*0472e113SJosef 'Jeff' Sipek BITFLD(b2, dl2h); 351*0472e113SJosef 'Jeff' Sipek uint8_t dl2l; 352*0472e113SJosef 'Jeff' Sipek uint8_t dh2; 353*0472e113SJosef 'Jeff' Sipek uint8_t op2; 354*0472e113SJosef 'Jeff' Sipek } rsy_b; 355*0472e113SJosef 'Jeff' Sipek struct { 356*0472e113SJosef 'Jeff' Sipek uint8_t op1; 357*0472e113SJosef 'Jeff' Sipek BITFLD(r1, op2); 358*0472e113SJosef 'Jeff' Sipek uint16_t i2; 359*0472e113SJosef 'Jeff' Sipek } ri_a; 360*0472e113SJosef 'Jeff' Sipek struct { 361*0472e113SJosef 'Jeff' Sipek uint8_t op1; 362*0472e113SJosef 'Jeff' Sipek BITFLD(r1, op2); 363*0472e113SJosef 'Jeff' Sipek uint16_t ri2; 364*0472e113SJosef 'Jeff' Sipek } ri_b; 365*0472e113SJosef 'Jeff' Sipek struct { 366*0472e113SJosef 'Jeff' Sipek uint8_t op1; 367*0472e113SJosef 'Jeff' Sipek BITFLD(m1, op2); 368*0472e113SJosef 'Jeff' Sipek uint16_t ri2; 369*0472e113SJosef 'Jeff' Sipek } ri_c; 370*0472e113SJosef 'Jeff' Sipek struct { 371*0472e113SJosef 'Jeff' Sipek uint8_t op1; 372*0472e113SJosef 'Jeff' Sipek BITFLD(r1, _pad0); 373*0472e113SJosef 'Jeff' Sipek uint16_t i2; 374*0472e113SJosef 'Jeff' Sipek BITFLD(m3, _pad1); 375*0472e113SJosef 'Jeff' Sipek uint8_t op2; 376*0472e113SJosef 'Jeff' Sipek } rie_a; 377*0472e113SJosef 'Jeff' Sipek struct { 378*0472e113SJosef 'Jeff' Sipek uint8_t op1; 379*0472e113SJosef 'Jeff' Sipek BITFLD(r1, r2); 380*0472e113SJosef 'Jeff' Sipek uint16_t ri4; 381*0472e113SJosef 'Jeff' Sipek BITFLD(m3, _pad); 382*0472e113SJosef 'Jeff' Sipek uint8_t op2; 383*0472e113SJosef 'Jeff' Sipek } rie_b; 384*0472e113SJosef 'Jeff' Sipek struct { 385*0472e113SJosef 'Jeff' Sipek uint8_t op1; 386*0472e113SJosef 'Jeff' Sipek BITFLD(r1, m3); 387*0472e113SJosef 'Jeff' Sipek uint16_t ri4; 388*0472e113SJosef 'Jeff' Sipek uint8_t i2; 389*0472e113SJosef 'Jeff' Sipek uint8_t op2; 390*0472e113SJosef 'Jeff' Sipek } rie_c; 391*0472e113SJosef 'Jeff' Sipek struct { 392*0472e113SJosef 'Jeff' Sipek uint8_t op1; 393*0472e113SJosef 'Jeff' Sipek BITFLD(r1, r3); 394*0472e113SJosef 'Jeff' Sipek uint16_t i2; 395*0472e113SJosef 'Jeff' Sipek uint8_t _pad; 396*0472e113SJosef 'Jeff' Sipek uint8_t op2; 397*0472e113SJosef 'Jeff' Sipek } rie_d; 398*0472e113SJosef 'Jeff' Sipek struct { 399*0472e113SJosef 'Jeff' Sipek uint8_t op1; 400*0472e113SJosef 'Jeff' Sipek BITFLD(r1, r3); 401*0472e113SJosef 'Jeff' Sipek uint16_t ri2; 402*0472e113SJosef 'Jeff' Sipek uint8_t _pad; 403*0472e113SJosef 'Jeff' Sipek uint8_t op2; 404*0472e113SJosef 'Jeff' Sipek } rie_e; 405*0472e113SJosef 'Jeff' Sipek struct { 406*0472e113SJosef 'Jeff' Sipek uint8_t op1; 407*0472e113SJosef 'Jeff' Sipek BITFLD(r1, r2); 408*0472e113SJosef 'Jeff' Sipek uint8_t i3; 409*0472e113SJosef 'Jeff' Sipek uint8_t i4; 410*0472e113SJosef 'Jeff' Sipek uint8_t i5; 411*0472e113SJosef 'Jeff' Sipek uint8_t op2; 412*0472e113SJosef 'Jeff' Sipek } rie_f; 413*0472e113SJosef 'Jeff' Sipek struct { 414*0472e113SJosef 'Jeff' Sipek uint8_t op1; 415*0472e113SJosef 'Jeff' Sipek BITFLD(r1, op2); 416*0472e113SJosef 'Jeff' Sipek uint16_t i2h; 417*0472e113SJosef 'Jeff' Sipek uint16_t i2l; 418*0472e113SJosef 'Jeff' Sipek } ril_a; 419*0472e113SJosef 'Jeff' Sipek struct { 420*0472e113SJosef 'Jeff' Sipek uint8_t op1; 421*0472e113SJosef 'Jeff' Sipek BITFLD(r1, op2); 422*0472e113SJosef 'Jeff' Sipek uint16_t ri2h; 423*0472e113SJosef 'Jeff' Sipek uint16_t ri2l; 424*0472e113SJosef 'Jeff' Sipek } ril_b; 425*0472e113SJosef 'Jeff' Sipek struct { 426*0472e113SJosef 'Jeff' Sipek uint8_t op1; 427*0472e113SJosef 'Jeff' Sipek BITFLD(m1, op2); 428*0472e113SJosef 'Jeff' Sipek uint16_t ri2h; 429*0472e113SJosef 'Jeff' Sipek uint16_t ri2l; 430*0472e113SJosef 'Jeff' Sipek } ril_c; 431*0472e113SJosef 'Jeff' Sipek struct { 432*0472e113SJosef 'Jeff' Sipek uint8_t op1; 433*0472e113SJosef 'Jeff' Sipek BITFLD(r1, m3); 434*0472e113SJosef 'Jeff' Sipek BITFLD(b4, d4h); 435*0472e113SJosef 'Jeff' Sipek uint8_t d4l; 436*0472e113SJosef 'Jeff' Sipek uint8_t i2; 437*0472e113SJosef 'Jeff' Sipek uint8_t op2; 438*0472e113SJosef 'Jeff' Sipek } ris; 439*0472e113SJosef 'Jeff' Sipek struct { 440*0472e113SJosef 'Jeff' Sipek uint8_t op; 441*0472e113SJosef 'Jeff' Sipek uint8_t i2; 442*0472e113SJosef 'Jeff' Sipek BITFLD(b1, d1h); 443*0472e113SJosef 'Jeff' Sipek uint8_t d1l; 444*0472e113SJosef 'Jeff' Sipek } si; 445*0472e113SJosef 'Jeff' Sipek struct { 446*0472e113SJosef 'Jeff' Sipek uint16_t op; 447*0472e113SJosef 'Jeff' Sipek BITFLD(b1, d1h); 448*0472e113SJosef 'Jeff' Sipek uint8_t d1l; 449*0472e113SJosef 'Jeff' Sipek uint16_t i2; 450*0472e113SJosef 'Jeff' Sipek } sil; 451*0472e113SJosef 'Jeff' Sipek struct { 452*0472e113SJosef 'Jeff' Sipek uint8_t op1; 453*0472e113SJosef 'Jeff' Sipek uint8_t i2; 454*0472e113SJosef 'Jeff' Sipek BITFLD(b1, dl1h); 455*0472e113SJosef 'Jeff' Sipek uint8_t dl1l; 456*0472e113SJosef 'Jeff' Sipek uint8_t dh1; 457*0472e113SJosef 'Jeff' Sipek uint8_t op2; 458*0472e113SJosef 'Jeff' Sipek } siy; 459*0472e113SJosef 'Jeff' Sipek struct { 460*0472e113SJosef 'Jeff' Sipek uint8_t op; 461*0472e113SJosef 'Jeff' Sipek BITFLD(m1, pad); 462*0472e113SJosef 'Jeff' Sipek BITFLD(b3, d3h); 463*0472e113SJosef 'Jeff' Sipek uint8_t d3l; 464*0472e113SJosef 'Jeff' Sipek uint16_t ri2; 465*0472e113SJosef 'Jeff' Sipek } smi; 466*0472e113SJosef 'Jeff' Sipek struct { 467*0472e113SJosef 'Jeff' Sipek uint8_t op1; 468*0472e113SJosef 'Jeff' Sipek uint8_t op2; 469*0472e113SJosef 'Jeff' Sipek BITFLD(b2, d2h); 470*0472e113SJosef 'Jeff' Sipek uint8_t d2l; 471*0472e113SJosef 'Jeff' Sipek } s; 472*0472e113SJosef 'Jeff' Sipek struct { 473*0472e113SJosef 'Jeff' Sipek uint8_t op; 474*0472e113SJosef 'Jeff' Sipek uint8_t l; 475*0472e113SJosef 'Jeff' Sipek BITFLD(b1, d1h); 476*0472e113SJosef 'Jeff' Sipek uint8_t d1l; 477*0472e113SJosef 'Jeff' Sipek BITFLD(b2, d2h); 478*0472e113SJosef 'Jeff' Sipek uint8_t d2l; 479*0472e113SJosef 'Jeff' Sipek } ss_a; 480*0472e113SJosef 'Jeff' Sipek struct { 481*0472e113SJosef 'Jeff' Sipek uint8_t op; 482*0472e113SJosef 'Jeff' Sipek BITFLD(l1, l2); 483*0472e113SJosef 'Jeff' Sipek BITFLD(b1, d1h); 484*0472e113SJosef 'Jeff' Sipek uint8_t d1l; 485*0472e113SJosef 'Jeff' Sipek BITFLD(b2, d2h); 486*0472e113SJosef 'Jeff' Sipek uint8_t d2l; 487*0472e113SJosef 'Jeff' Sipek } ss_b; 488*0472e113SJosef 'Jeff' Sipek struct { 489*0472e113SJosef 'Jeff' Sipek uint8_t op; 490*0472e113SJosef 'Jeff' Sipek BITFLD(l1, i3); 491*0472e113SJosef 'Jeff' Sipek BITFLD(b1, d1h); 492*0472e113SJosef 'Jeff' Sipek uint8_t d1l; 493*0472e113SJosef 'Jeff' Sipek BITFLD(b2, d2h); 494*0472e113SJosef 'Jeff' Sipek uint8_t d2l; 495*0472e113SJosef 'Jeff' Sipek } ss_c; 496*0472e113SJosef 'Jeff' Sipek struct { 497*0472e113SJosef 'Jeff' Sipek uint8_t op; 498*0472e113SJosef 'Jeff' Sipek BITFLD(r1, r3); 499*0472e113SJosef 'Jeff' Sipek BITFLD(b1, d1h); 500*0472e113SJosef 'Jeff' Sipek uint8_t d1l; 501*0472e113SJosef 'Jeff' Sipek BITFLD(b2, d2h); 502*0472e113SJosef 'Jeff' Sipek uint8_t d2l; 503*0472e113SJosef 'Jeff' Sipek } ss_d; 504*0472e113SJosef 'Jeff' Sipek struct { 505*0472e113SJosef 'Jeff' Sipek uint8_t op; 506*0472e113SJosef 'Jeff' Sipek BITFLD(r1, r3); 507*0472e113SJosef 'Jeff' Sipek BITFLD(b2, d2h); 508*0472e113SJosef 'Jeff' Sipek uint8_t d2l; 509*0472e113SJosef 'Jeff' Sipek BITFLD(b4, d4h); 510*0472e113SJosef 'Jeff' Sipek uint8_t d4l; 511*0472e113SJosef 'Jeff' Sipek } ss_e; 512*0472e113SJosef 'Jeff' Sipek struct { 513*0472e113SJosef 'Jeff' Sipek uint8_t op; 514*0472e113SJosef 'Jeff' Sipek uint8_t l2; 515*0472e113SJosef 'Jeff' Sipek BITFLD(b1, d1h); 516*0472e113SJosef 'Jeff' Sipek uint8_t d1l; 517*0472e113SJosef 'Jeff' Sipek BITFLD(b2, d2h); 518*0472e113SJosef 'Jeff' Sipek uint8_t d2l; 519*0472e113SJosef 'Jeff' Sipek } ss_f; 520*0472e113SJosef 'Jeff' Sipek struct { 521*0472e113SJosef 'Jeff' Sipek uint16_t op; 522*0472e113SJosef 'Jeff' Sipek BITFLD(b1, d1h); 523*0472e113SJosef 'Jeff' Sipek uint8_t d1l; 524*0472e113SJosef 'Jeff' Sipek BITFLD(b2, d2h); 525*0472e113SJosef 'Jeff' Sipek uint8_t d2l; 526*0472e113SJosef 'Jeff' Sipek } sse; 527*0472e113SJosef 'Jeff' Sipek struct { 528*0472e113SJosef 'Jeff' Sipek uint8_t op1; 529*0472e113SJosef 'Jeff' Sipek BITFLD(r3, op2); 530*0472e113SJosef 'Jeff' Sipek BITFLD(b1, d1h); 531*0472e113SJosef 'Jeff' Sipek uint8_t d1l; 532*0472e113SJosef 'Jeff' Sipek BITFLD(b2, d2h); 533*0472e113SJosef 'Jeff' Sipek uint8_t d2l; 534*0472e113SJosef 'Jeff' Sipek } ssf; 535*0472e113SJosef 'Jeff' Sipek }; 536*0472e113SJosef 'Jeff' Sipek 537*0472e113SJosef 'Jeff' Sipek #define INSTR(op, m, fm, fl) [op] = { \ 538*0472e113SJosef 'Jeff' Sipek .it_u.it_inst = { \ 539*0472e113SJosef 'Jeff' Sipek .it_name = (m), \ 540*0472e113SJosef 'Jeff' Sipek .it_flags = (fl), \ 541*0472e113SJosef 'Jeff' Sipek }, \ 542*0472e113SJosef 'Jeff' Sipek .it_fmt = (fm), \ 543*0472e113SJosef 'Jeff' Sipek } 544*0472e113SJosef 'Jeff' Sipek #define TABLE(op, tbl, o, s, m) [op] = { \ 545*0472e113SJosef 'Jeff' Sipek .it_u.it_table = { \ 546*0472e113SJosef 'Jeff' Sipek .it_ptr = (tbl), \ 547*0472e113SJosef 'Jeff' Sipek .it_off = (o), \ 548*0472e113SJosef 'Jeff' Sipek .it_shift = (s), \ 549*0472e113SJosef 'Jeff' Sipek .it_mask = (m), \ 550*0472e113SJosef 'Jeff' Sipek }, \ 551*0472e113SJosef 'Jeff' Sipek .it_fmt = IF_TBL, \ 552*0472e113SJosef 'Jeff' Sipek } 553*0472e113SJosef 'Jeff' Sipek #define MULTI(op, tbl) [op] = { \ 554*0472e113SJosef 'Jeff' Sipek .it_u.it_multi.it_ptr = (tbl), \ 555*0472e113SJosef 'Jeff' Sipek .it_fmt = IF_MULTI, \ 556*0472e113SJosef 'Jeff' Sipek } 557*0472e113SJosef 'Jeff' Sipek 558*0472e113SJosef 'Jeff' Sipek /* 559*0472e113SJosef 'Jeff' Sipek * Instruction tables based on: 560*0472e113SJosef 'Jeff' Sipek * GA22-7000-4 System/370 Principles of Operation 561*0472e113SJosef 'Jeff' Sipek * SA22-7201-08 ESA/390 Principles of Operation 562*0472e113SJosef 'Jeff' Sipek * SA22-7832-09 z/Architecture Principles of Operation 563*0472e113SJosef 'Jeff' Sipek */ 564*0472e113SJosef 'Jeff' Sipek 565*0472e113SJosef 'Jeff' Sipek /* BEGIN CSTYLED */ 566*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_01xx[256] = { 567*0472e113SJosef 'Jeff' Sipek INSTR(0x01, "pr", IF_E, F_390 | F_Z), 568*0472e113SJosef 'Jeff' Sipek INSTR(0x02, "upt", IF_E, F_390 | F_Z), 569*0472e113SJosef 'Jeff' Sipek INSTR(0x04, "ptff", IF_E, F_Z), 570*0472e113SJosef 'Jeff' Sipek INSTR(0x07, "sckpf", IF_E, F_390 | F_Z), 571*0472e113SJosef 'Jeff' Sipek INSTR(0x0a, "pfpo", IF_E, F_Z), 572*0472e113SJosef 'Jeff' Sipek INSTR(0x0b, "tam", IF_E, F_390 | F_Z), 573*0472e113SJosef 'Jeff' Sipek INSTR(0x0c, "sam24", IF_E, F_390 | F_Z), 574*0472e113SJosef 'Jeff' Sipek INSTR(0x0d, "sam31", IF_E, F_390 | F_Z), 575*0472e113SJosef 'Jeff' Sipek INSTR(0x0e, "sam64", IF_E, F_Z), 576*0472e113SJosef 'Jeff' Sipek INSTR(0xff, "trap2", IF_E, F_390 | F_Z), 577*0472e113SJosef 'Jeff' Sipek }; 578*0472e113SJosef 'Jeff' Sipek 579*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_07[] = { 580*0472e113SJosef 'Jeff' Sipek INSTR(0x0, "nopr", IF_RR, F_370 | F_390 | F_Z | F_HIDE_MASK), 581*0472e113SJosef 'Jeff' Sipek INSTR(0x1, "bor", IF_RR, F_370 | F_390 | F_Z | F_HIDE_MASK), 582*0472e113SJosef 'Jeff' Sipek INSTR(0x2, "bhr", IF_RR, F_370 | F_390 | F_Z | F_HIDE_MASK), 583*0472e113SJosef 'Jeff' Sipek INSTR(0x3, "bcr", IF_RR, F_370 | F_390 | F_Z | F_R1_IS_MASK), 584*0472e113SJosef 'Jeff' Sipek INSTR(0x4, "blr", IF_RR, F_370 | F_390 | F_Z | F_HIDE_MASK), 585*0472e113SJosef 'Jeff' Sipek INSTR(0x5, "bcr", IF_RR, F_370 | F_390 | F_Z | F_R1_IS_MASK), 586*0472e113SJosef 'Jeff' Sipek INSTR(0x6, "bcr", IF_RR, F_370 | F_390 | F_Z | F_R1_IS_MASK), 587*0472e113SJosef 'Jeff' Sipek INSTR(0x7, "bnzr", IF_RR, F_370 | F_390 | F_Z | F_HIDE_MASK), 588*0472e113SJosef 'Jeff' Sipek INSTR(0x8, "ber", IF_RR, F_370 | F_390 | F_Z | F_HIDE_MASK), 589*0472e113SJosef 'Jeff' Sipek INSTR(0x9, "bcr", IF_RR, F_370 | F_390 | F_Z | F_R1_IS_MASK), 590*0472e113SJosef 'Jeff' Sipek INSTR(0xa, "bcr", IF_RR, F_370 | F_390 | F_Z | F_R1_IS_MASK), 591*0472e113SJosef 'Jeff' Sipek INSTR(0xb, "bner", IF_RR, F_370 | F_390 | F_Z | F_HIDE_MASK), 592*0472e113SJosef 'Jeff' Sipek INSTR(0xc, "bcr", IF_RR, F_370 | F_390 | F_Z | F_R1_IS_MASK), 593*0472e113SJosef 'Jeff' Sipek INSTR(0xd, "bnhr", IF_RR, F_370 | F_390 | F_Z | F_HIDE_MASK), 594*0472e113SJosef 'Jeff' Sipek INSTR(0xe, "bnor", IF_RR, F_370 | F_390 | F_Z | F_HIDE_MASK), 595*0472e113SJosef 'Jeff' Sipek INSTR(0xf, "br", IF_RR, F_370 | F_390 | F_Z | F_HIDE_MASK), 596*0472e113SJosef 'Jeff' Sipek }; 597*0472e113SJosef 'Jeff' Sipek 598*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_47[] = { 599*0472e113SJosef 'Jeff' Sipek INSTR(0x0, "nop", IF_RXb, F_370 | F_390 | F_Z | F_HIDE_MASK), 600*0472e113SJosef 'Jeff' Sipek INSTR(0x1, "bo", IF_RXb, F_370 | F_390 | F_Z | F_HIDE_MASK), 601*0472e113SJosef 'Jeff' Sipek INSTR(0x2, "bh", IF_RXb, F_370 | F_390 | F_Z | F_HIDE_MASK), 602*0472e113SJosef 'Jeff' Sipek INSTR(0x3, "bc", IF_RXb, F_370 | F_390 | F_Z), 603*0472e113SJosef 'Jeff' Sipek INSTR(0x4, "bl", IF_RXb, F_370 | F_390 | F_Z | F_HIDE_MASK), 604*0472e113SJosef 'Jeff' Sipek INSTR(0x5, "bc", IF_RXb, F_370 | F_390 | F_Z), 605*0472e113SJosef 'Jeff' Sipek INSTR(0x6, "bc", IF_RXb, F_370 | F_390 | F_Z), 606*0472e113SJosef 'Jeff' Sipek INSTR(0x7, "bne", IF_RXb, F_370 | F_390 | F_Z | F_HIDE_MASK), 607*0472e113SJosef 'Jeff' Sipek INSTR(0x8, "be", IF_RXb, F_370 | F_390 | F_Z | F_HIDE_MASK), 608*0472e113SJosef 'Jeff' Sipek INSTR(0x9, "bc", IF_RXb, F_370 | F_390 | F_Z), 609*0472e113SJosef 'Jeff' Sipek INSTR(0xa, "bc", IF_RXb, F_370 | F_390 | F_Z), 610*0472e113SJosef 'Jeff' Sipek INSTR(0xb, "bnl", IF_RXb, F_370 | F_390 | F_Z | F_HIDE_MASK), 611*0472e113SJosef 'Jeff' Sipek INSTR(0xc, "bc", IF_RXb, F_370 | F_390 | F_Z), 612*0472e113SJosef 'Jeff' Sipek INSTR(0xd, "bnh", IF_RXb, F_370 | F_390 | F_Z | F_HIDE_MASK), 613*0472e113SJosef 'Jeff' Sipek INSTR(0xe, "bno", IF_RXb, F_370 | F_390 | F_Z | F_HIDE_MASK), 614*0472e113SJosef 'Jeff' Sipek INSTR(0xf, "b", IF_RXb, F_370 | F_390 | F_Z | F_HIDE_MASK), 615*0472e113SJosef 'Jeff' Sipek }; 616*0472e113SJosef 'Jeff' Sipek 617*0472e113SJosef 'Jeff' Sipek /* the preferred mnemonic changed over time */ 618*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_25[] = { 619*0472e113SJosef 'Jeff' Sipek INSTR(F_370, "lrdr", IF_RR, F_370), 620*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "ldxr", IF_RR, F_390), 621*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "ldxr", IF_RR, F_Z), 622*0472e113SJosef 'Jeff' Sipek }; 623*0472e113SJosef 'Jeff' Sipek 624*0472e113SJosef 'Jeff' Sipek /* the preferred mnemonic changed over time */ 625*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_35[] = { 626*0472e113SJosef 'Jeff' Sipek INSTR(F_370, "lrer", IF_RR, F_370), 627*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "ledr", IF_RR, F_390), 628*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "ledr", IF_RR, F_Z), 629*0472e113SJosef 'Jeff' Sipek }; 630*0472e113SJosef 'Jeff' Sipek 631*0472e113SJosef 'Jeff' Sipek /* the preferred mnemonic changed over time */ 632*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_3c[] = { 633*0472e113SJosef 'Jeff' Sipek INSTR(F_370, "mer", IF_RR, F_370), 634*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "mder", IF_RR, F_390), 635*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "mder", IF_RR, F_Z), 636*0472e113SJosef 'Jeff' Sipek }; 637*0472e113SJosef 'Jeff' Sipek 638*0472e113SJosef 'Jeff' Sipek /* the preferred mnemonic changed over time */ 639*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_7c[] = { 640*0472e113SJosef 'Jeff' Sipek INSTR(F_370, "me", IF_RXa, F_370), 641*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "mde", IF_RXa, F_390), 642*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "mde", IF_RXa, F_Z), 643*0472e113SJosef 'Jeff' Sipek }; 644*0472e113SJosef 'Jeff' Sipek 645*0472e113SJosef 'Jeff' Sipek /* the meaning of this instruction changed over time */ 646*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_84[] = { 647*0472e113SJosef 'Jeff' Sipek INSTR(F_370, "wrd", IF_SI, F_370), 648*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "brxh", IF_RSI, F_390), 649*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "brxh", IF_RSI, F_Z), 650*0472e113SJosef 'Jeff' Sipek }; 651*0472e113SJosef 'Jeff' Sipek 652*0472e113SJosef 'Jeff' Sipek /* the meaning of this instruction changed over time */ 653*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_85[] = { 654*0472e113SJosef 'Jeff' Sipek INSTR(F_370, "rdd", IF_SI, F_370), 655*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "brxle", IF_RSI, F_390), 656*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "brxle", IF_RSI, F_Z), 657*0472e113SJosef 'Jeff' Sipek }; 658*0472e113SJosef 'Jeff' Sipek 659*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_a5x[16] = { 660*0472e113SJosef 'Jeff' Sipek INSTR(0x0, "iihh", IF_RIa, F_Z), 661*0472e113SJosef 'Jeff' Sipek INSTR(0x1, "iihl", IF_RIa, F_Z), 662*0472e113SJosef 'Jeff' Sipek INSTR(0x2, "iilh", IF_RIa, F_Z), 663*0472e113SJosef 'Jeff' Sipek INSTR(0x3, "iill", IF_RIa, F_Z), 664*0472e113SJosef 'Jeff' Sipek INSTR(0x4, "nihh", IF_RIa, F_Z), 665*0472e113SJosef 'Jeff' Sipek INSTR(0x5, "nihl", IF_RIa, F_Z), 666*0472e113SJosef 'Jeff' Sipek INSTR(0x6, "nilh", IF_RIa, F_Z), 667*0472e113SJosef 'Jeff' Sipek INSTR(0x7, "nill", IF_RIa, F_Z), 668*0472e113SJosef 'Jeff' Sipek INSTR(0x8, "oihh", IF_RIa, F_Z), 669*0472e113SJosef 'Jeff' Sipek INSTR(0x9, "oihl", IF_RIa, F_Z), 670*0472e113SJosef 'Jeff' Sipek INSTR(0xa, "oilh", IF_RIa, F_Z), 671*0472e113SJosef 'Jeff' Sipek INSTR(0xb, "oill", IF_RIa, F_Z), 672*0472e113SJosef 'Jeff' Sipek INSTR(0xc, "llihh", IF_RIa, F_Z), 673*0472e113SJosef 'Jeff' Sipek INSTR(0xd, "llihl", IF_RIa, F_Z), 674*0472e113SJosef 'Jeff' Sipek INSTR(0xe, "llilh", IF_RIa, F_Z), 675*0472e113SJosef 'Jeff' Sipek INSTR(0xf, "llill", IF_RIa, F_Z), 676*0472e113SJosef 'Jeff' Sipek }; 677*0472e113SJosef 'Jeff' Sipek 678*0472e113SJosef 'Jeff' Sipek /* the preferred mnemonic changed over time */ 679*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_a70[] = { 680*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "tmh", IF_RIa, F_390), 681*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "tmlh", IF_RIa, F_Z), 682*0472e113SJosef 'Jeff' Sipek }; 683*0472e113SJosef 'Jeff' Sipek 684*0472e113SJosef 'Jeff' Sipek /* the preferred mnemonic changed over time */ 685*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_a71[] = { 686*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "tml", IF_RIa, F_390), 687*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "tmll", IF_RIa, F_Z), 688*0472e113SJosef 'Jeff' Sipek }; 689*0472e113SJosef 'Jeff' Sipek 690*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_a74[16] = { 691*0472e113SJosef 'Jeff' Sipek INSTR(0x0, "jnop", IF_RIc, F_390 | F_Z | F_HIDE_MASK), 692*0472e113SJosef 'Jeff' Sipek INSTR(0x1, "jo", IF_RIc, F_390 | F_Z | F_HIDE_MASK), 693*0472e113SJosef 'Jeff' Sipek INSTR(0x2, "jh", IF_RIc, F_390 | F_Z | F_HIDE_MASK), 694*0472e113SJosef 'Jeff' Sipek INSTR(0x3, "brc", IF_RIc, F_390 | F_Z), 695*0472e113SJosef 'Jeff' Sipek INSTR(0x4, "jl", IF_RIc, F_390 | F_Z | F_HIDE_MASK), 696*0472e113SJosef 'Jeff' Sipek INSTR(0x5, "brc", IF_RIc, F_390 | F_Z), 697*0472e113SJosef 'Jeff' Sipek INSTR(0x6, "brc", IF_RIc, F_390 | F_Z), 698*0472e113SJosef 'Jeff' Sipek INSTR(0x7, "jne", IF_RIc, F_390 | F_Z | F_HIDE_MASK), 699*0472e113SJosef 'Jeff' Sipek INSTR(0x8, "je", IF_RIc, F_390 | F_Z | F_HIDE_MASK), 700*0472e113SJosef 'Jeff' Sipek INSTR(0x9, "brc", IF_RIc, F_390 | F_Z), 701*0472e113SJosef 'Jeff' Sipek INSTR(0xa, "brc", IF_RIc, F_390 | F_Z), 702*0472e113SJosef 'Jeff' Sipek INSTR(0xb, "jnl", IF_RIc, F_390 | F_Z | F_HIDE_MASK), 703*0472e113SJosef 'Jeff' Sipek INSTR(0xc, "brc", IF_RIc, F_390 | F_Z), 704*0472e113SJosef 'Jeff' Sipek INSTR(0xd, "jnh", IF_RIc, F_390 | F_Z | F_HIDE_MASK), 705*0472e113SJosef 'Jeff' Sipek INSTR(0xe, "jno", IF_RIc, F_390 | F_Z | F_HIDE_MASK), 706*0472e113SJosef 'Jeff' Sipek INSTR(0xf, "j", IF_RIc, F_390 | F_Z | F_HIDE_MASK), 707*0472e113SJosef 'Jeff' Sipek }; 708*0472e113SJosef 'Jeff' Sipek 709*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_a7x[16] = { 710*0472e113SJosef 'Jeff' Sipek MULTI(0x0, tbl_a70), 711*0472e113SJosef 'Jeff' Sipek MULTI(0x1, tbl_a71), 712*0472e113SJosef 'Jeff' Sipek INSTR(0x2, "tmhh", IF_RIa, F_Z), 713*0472e113SJosef 'Jeff' Sipek INSTR(0x3, "tmhl", IF_RIa, F_Z), 714*0472e113SJosef 'Jeff' Sipek TABLE(0x4, tbl_a74, 1, 4, 0x0f), 715*0472e113SJosef 'Jeff' Sipek INSTR(0x5, "bras", IF_RIb, F_390 | F_Z), 716*0472e113SJosef 'Jeff' Sipek INSTR(0x6, "brct", IF_RIb, F_390 | F_Z), 717*0472e113SJosef 'Jeff' Sipek INSTR(0x7, "brctg", IF_RIb, F_Z), 718*0472e113SJosef 'Jeff' Sipek INSTR(0x8, "lhi", IF_RIa, F_390 | F_Z), 719*0472e113SJosef 'Jeff' Sipek INSTR(0x9, "lghi", IF_RIa, F_Z), 720*0472e113SJosef 'Jeff' Sipek INSTR(0xa, "ahi", IF_RIa, F_390 | F_Z | F_SIGNED_IMM), 721*0472e113SJosef 'Jeff' Sipek INSTR(0xb, "aghi", IF_RIa, F_Z | F_SIGNED_IMM), 722*0472e113SJosef 'Jeff' Sipek INSTR(0xc, "mhi", IF_RIa, F_390 | F_Z), 723*0472e113SJosef 'Jeff' Sipek INSTR(0xd, "mghi", IF_RIa, F_Z), 724*0472e113SJosef 'Jeff' Sipek INSTR(0xe, "chi", IF_RIa, F_390 | F_Z | F_SIGNED_IMM), 725*0472e113SJosef 'Jeff' Sipek INSTR(0xf, "cghi", IF_RIa, F_Z | F_SIGNED_IMM), 726*0472e113SJosef 'Jeff' Sipek }; 727*0472e113SJosef 'Jeff' Sipek 728*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_b2a6[] = { 729*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "cuutf", IF_RRFc, F_390), 730*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "c21", IF_RRFc, F_Z), 731*0472e113SJosef 'Jeff' Sipek }; 732*0472e113SJosef 'Jeff' Sipek 733*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_b2a7[] = { 734*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "cutfu", IF_RRFc, F_390), 735*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "cu12", IF_RRFc, F_Z), 736*0472e113SJosef 'Jeff' Sipek }; 737*0472e113SJosef 'Jeff' Sipek 738*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_b2xx[256] = { 739*0472e113SJosef 'Jeff' Sipek INSTR(0x02, "stidp", IF_S, F_370 | F_390 | F_Z), 740*0472e113SJosef 'Jeff' Sipek INSTR(0x04, "sck", IF_S, F_370 | F_390 | F_Z), 741*0472e113SJosef 'Jeff' Sipek INSTR(0x05, "stck", IF_S, F_370 | F_390 | F_Z), 742*0472e113SJosef 'Jeff' Sipek INSTR(0x06, "sckc", IF_S, F_370 | F_390 | F_Z), 743*0472e113SJosef 'Jeff' Sipek INSTR(0x07, "stckc", IF_S, F_370 | F_390 | F_Z), 744*0472e113SJosef 'Jeff' Sipek INSTR(0x08, "spt", IF_S, F_370 | F_390 | F_Z), 745*0472e113SJosef 'Jeff' Sipek INSTR(0x09, "stpt", IF_S, F_370 | F_390 | F_Z), 746*0472e113SJosef 'Jeff' Sipek INSTR(0x0a, "spka", IF_S, F_370 | F_390 | F_Z), 747*0472e113SJosef 'Jeff' Sipek INSTR(0x0b, "ipk", IF_S, F_370 | F_390 | F_Z), 748*0472e113SJosef 'Jeff' Sipek INSTR(0x0d, "ptlb", IF_S, F_370 | F_390 | F_Z), 749*0472e113SJosef 'Jeff' Sipek INSTR(0x10, "spx", IF_S, F_370 | F_390 | F_Z), 750*0472e113SJosef 'Jeff' Sipek INSTR(0x11, "stpx", IF_S, F_370 | F_390 | F_Z), 751*0472e113SJosef 'Jeff' Sipek INSTR(0x12, "stap", IF_S, F_370 | F_390 | F_Z), 752*0472e113SJosef 'Jeff' Sipek INSTR(0x13, "rrb", IF_S, F_370), 753*0472e113SJosef 'Jeff' Sipek INSTR(0x14, "sie", IF_S, F_390 | F_Z), 754*0472e113SJosef 'Jeff' Sipek INSTR(0x18, "pc", IF_S, F_390 | F_Z), 755*0472e113SJosef 'Jeff' Sipek INSTR(0x19, "sac", IF_S, F_390 | F_Z), 756*0472e113SJosef 'Jeff' Sipek INSTR(0x1a, "cfc", IF_S, F_390 | F_Z), 757*0472e113SJosef 'Jeff' Sipek INSTR(0x21, "ipte", IF_RRE, F_390 | F_Z), 758*0472e113SJosef 'Jeff' Sipek INSTR(0x22, "ipm", IF_RRE, F_390 | F_Z), 759*0472e113SJosef 'Jeff' Sipek INSTR(0x23, "ivsk", IF_RRE, F_390 | F_Z), 760*0472e113SJosef 'Jeff' Sipek INSTR(0x24, "iac", IF_RRE, F_390 | F_Z), 761*0472e113SJosef 'Jeff' Sipek INSTR(0x25, "ssar", IF_RRE, F_390 | F_Z), 762*0472e113SJosef 'Jeff' Sipek INSTR(0x26, "epar", IF_RRE, F_390 | F_Z), 763*0472e113SJosef 'Jeff' Sipek INSTR(0x27, "esar", IF_RRE, F_390 | F_Z), 764*0472e113SJosef 'Jeff' Sipek INSTR(0x28, "pt", IF_RRE, F_390 | F_Z), 765*0472e113SJosef 'Jeff' Sipek INSTR(0x29, "iske", IF_RRE, F_390 | F_Z), 766*0472e113SJosef 'Jeff' Sipek INSTR(0x2a, "rrbe", IF_RRE, F_390 | F_Z), 767*0472e113SJosef 'Jeff' Sipek INSTR(0x2b, "sske", IF_RRFc, F_390 | F_Z), 768*0472e113SJosef 'Jeff' Sipek INSTR(0x2c, "tb", IF_RRE, F_390 | F_Z), 769*0472e113SJosef 'Jeff' Sipek INSTR(0x2d, "dxr", IF_RRE, F_390 | F_Z), 770*0472e113SJosef 'Jeff' Sipek INSTR(0x2e, "pgin", IF_RRE, F_390 | F_Z), 771*0472e113SJosef 'Jeff' Sipek INSTR(0x2f, "pgout", IF_RRE, F_390 | F_Z), 772*0472e113SJosef 'Jeff' Sipek INSTR(0x30, "csch", IF_S, F_Z), 773*0472e113SJosef 'Jeff' Sipek INSTR(0x31, "hsch", IF_S, F_Z), 774*0472e113SJosef 'Jeff' Sipek INSTR(0x32, "msch", IF_S, F_Z), 775*0472e113SJosef 'Jeff' Sipek INSTR(0x33, "ssch", IF_S, F_Z), 776*0472e113SJosef 'Jeff' Sipek INSTR(0x34, "stsch", IF_S, F_Z), 777*0472e113SJosef 'Jeff' Sipek INSTR(0x35, "tsch", IF_S, F_Z), 778*0472e113SJosef 'Jeff' Sipek INSTR(0x36, "tpi", IF_S, F_Z), 779*0472e113SJosef 'Jeff' Sipek INSTR(0x37, "sal", IF_S, F_Z), 780*0472e113SJosef 'Jeff' Sipek INSTR(0x38, "rsch", IF_S, F_Z), 781*0472e113SJosef 'Jeff' Sipek INSTR(0x39, "stcrw", IF_S, F_Z), 782*0472e113SJosef 'Jeff' Sipek INSTR(0x3a, "stcps", IF_S, F_Z), 783*0472e113SJosef 'Jeff' Sipek INSTR(0x3b, "rchp", IF_S, F_Z), 784*0472e113SJosef 'Jeff' Sipek INSTR(0x3d, "schm", IF_S, F_Z), 785*0472e113SJosef 'Jeff' Sipek INSTR(0x40, "bakr", IF_RRE, F_390 | F_Z), 786*0472e113SJosef 'Jeff' Sipek INSTR(0x41, "cksm", IF_RRE, F_390 | F_Z), 787*0472e113SJosef 'Jeff' Sipek INSTR(0x44, "sqdr", IF_RRE, F_390 | F_Z), 788*0472e113SJosef 'Jeff' Sipek INSTR(0x45, "sqer", IF_RRE, F_390 | F_Z), 789*0472e113SJosef 'Jeff' Sipek INSTR(0x46, "stura", IF_RRE, F_390 | F_Z), 790*0472e113SJosef 'Jeff' Sipek INSTR(0x47, "msta", IF_RRE, F_390 | F_Z), 791*0472e113SJosef 'Jeff' Sipek INSTR(0x48, "palb", IF_RRE, F_390 | F_Z), 792*0472e113SJosef 'Jeff' Sipek INSTR(0x49, "ereg", IF_RRE, F_390 | F_Z), 793*0472e113SJosef 'Jeff' Sipek INSTR(0x4a, "esta", IF_RRE, F_390 | F_Z), 794*0472e113SJosef 'Jeff' Sipek INSTR(0x4b, "lura", IF_RRE, F_390 | F_Z), 795*0472e113SJosef 'Jeff' Sipek INSTR(0x4c, "tar", IF_RRE, F_390 | F_Z), 796*0472e113SJosef 'Jeff' Sipek INSTR(0x4d, "cpya", IF_RRE, F_390 | F_Z), 797*0472e113SJosef 'Jeff' Sipek INSTR(0x4e, "sar", IF_RRE, F_390 | F_Z), 798*0472e113SJosef 'Jeff' Sipek INSTR(0x4f, "ear", IF_RRE, F_390 | F_Z), 799*0472e113SJosef 'Jeff' Sipek INSTR(0x50, "csp", IF_RRE, F_390 | F_Z), 800*0472e113SJosef 'Jeff' Sipek INSTR(0x52, "msr", IF_RRE, F_390 | F_Z), 801*0472e113SJosef 'Jeff' Sipek INSTR(0x54, "mvpg", IF_RRE, F_390 | F_Z), 802*0472e113SJosef 'Jeff' Sipek INSTR(0x55, "mvst", IF_RRE, F_390 | F_Z), 803*0472e113SJosef 'Jeff' Sipek INSTR(0x57, "cuse", IF_RRE, F_390 | F_Z), 804*0472e113SJosef 'Jeff' Sipek INSTR(0x58, "bsg", IF_RRE, F_390 | F_Z), 805*0472e113SJosef 'Jeff' Sipek INSTR(0x5a, "bsa", IF_RRE, F_390 | F_Z), 806*0472e113SJosef 'Jeff' Sipek INSTR(0x5d, "clst", IF_RRE, F_390 | F_Z), 807*0472e113SJosef 'Jeff' Sipek INSTR(0x5e, "srst", IF_RRE, F_390 | F_Z), 808*0472e113SJosef 'Jeff' Sipek INSTR(0x63, "cmpsc", IF_RRE, F_Z), 809*0472e113SJosef 'Jeff' Sipek INSTR(0x76, "xsch", IF_S, F_Z), 810*0472e113SJosef 'Jeff' Sipek INSTR(0x77, "rp", IF_S, F_390 | F_Z), 811*0472e113SJosef 'Jeff' Sipek INSTR(0x78, "stcke", IF_S, F_390 | F_Z), 812*0472e113SJosef 'Jeff' Sipek INSTR(0x79, "sacf", IF_S, F_390 | F_Z), 813*0472e113SJosef 'Jeff' Sipek INSTR(0x7c, "stckf", IF_S, F_Z), 814*0472e113SJosef 'Jeff' Sipek INSTR(0x7d, "stsi", IF_S, F_390 | F_Z), 815*0472e113SJosef 'Jeff' Sipek INSTR(0x99, "srnm", IF_S, F_390 | F_Z), 816*0472e113SJosef 'Jeff' Sipek INSTR(0x9c, "stfpc", IF_S, F_390 | F_Z), 817*0472e113SJosef 'Jeff' Sipek INSTR(0x9d, "lfpc", IF_S, F_390 | F_Z), 818*0472e113SJosef 'Jeff' Sipek INSTR(0xa5, "tre", IF_RRE, F_390 | F_Z), 819*0472e113SJosef 'Jeff' Sipek MULTI(0xa6, tbl_b2a6), 820*0472e113SJosef 'Jeff' Sipek MULTI(0xa7, tbl_b2a7), 821*0472e113SJosef 'Jeff' Sipek INSTR(0xb0, "stfle", IF_S, F_Z), 822*0472e113SJosef 'Jeff' Sipek INSTR(0xb1, "stfl", IF_S, F_390 | F_Z), 823*0472e113SJosef 'Jeff' Sipek INSTR(0xb2, "lpswe", IF_S, F_Z), 824*0472e113SJosef 'Jeff' Sipek INSTR(0xb8, "srnmb", IF_S, F_Z), 825*0472e113SJosef 'Jeff' Sipek INSTR(0xb9, "srnmt", IF_S, F_Z), 826*0472e113SJosef 'Jeff' Sipek INSTR(0xbd, "lfas", IF_S, F_Z), 827*0472e113SJosef 'Jeff' Sipek INSTR(0xe8, "ppa", IF_RRFc, F_Z), 828*0472e113SJosef 'Jeff' Sipek INSTR(0xec, "etnd", IF_RRE, F_Z), 829*0472e113SJosef 'Jeff' Sipek INSTR(0xf8, "tend", IF_S, F_Z), 830*0472e113SJosef 'Jeff' Sipek INSTR(0xfa, "niai", IF_IE, F_Z), 831*0472e113SJosef 'Jeff' Sipek INSTR(0xfc, "tabort", IF_S, F_Z), 832*0472e113SJosef 'Jeff' Sipek INSTR(0xff, "trap4", IF_S, F_390 | F_Z), 833*0472e113SJosef 'Jeff' Sipek }; 834*0472e113SJosef 'Jeff' Sipek 835*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_b344[] = { 836*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "ledbr", IF_RRE, F_390), 837*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "ledbra", IF_RRFe, F_Z), 838*0472e113SJosef 'Jeff' Sipek }; 839*0472e113SJosef 'Jeff' Sipek 840*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_b345[] = { 841*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "ldxbr", IF_RRE, F_390), 842*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "ldxbra", IF_RRFe, F_Z), 843*0472e113SJosef 'Jeff' Sipek }; 844*0472e113SJosef 'Jeff' Sipek 845*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_b346[] = { 846*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "lexbr", IF_RRE, F_390), 847*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "lexbra", IF_RRFe, F_Z), 848*0472e113SJosef 'Jeff' Sipek }; 849*0472e113SJosef 'Jeff' Sipek 850*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_b347[] = { 851*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "fixbr", IF_RRFe, F_390), 852*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "fixbra", IF_RRFe, F_Z), 853*0472e113SJosef 'Jeff' Sipek }; 854*0472e113SJosef 'Jeff' Sipek 855*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_b357[] = { 856*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "fiebr", IF_RRFe, F_390), 857*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "fiebre", IF_RRFe, F_Z), 858*0472e113SJosef 'Jeff' Sipek }; 859*0472e113SJosef 'Jeff' Sipek 860*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_b35f[] = { 861*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "fidbr", IF_RRFe, F_390), 862*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "fidbra", IF_RRFe, F_Z), 863*0472e113SJosef 'Jeff' Sipek }; 864*0472e113SJosef 'Jeff' Sipek 865*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_b394[] = { 866*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "cefbr", IF_RRE, F_390), 867*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "cefbra", IF_RRFe, F_Z), 868*0472e113SJosef 'Jeff' Sipek }; 869*0472e113SJosef 'Jeff' Sipek 870*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_b395[] = { 871*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "cdfbr", IF_RRE, F_390), 872*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "cdfbra", IF_RRFe, F_Z), 873*0472e113SJosef 'Jeff' Sipek }; 874*0472e113SJosef 'Jeff' Sipek 875*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_b396[] = { 876*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "cxfbr", IF_RRE, F_390), 877*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "cxfbra", IF_RRFe, F_Z), 878*0472e113SJosef 'Jeff' Sipek }; 879*0472e113SJosef 'Jeff' Sipek 880*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_b398[] = { 881*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "cfebr", IF_RRFe, F_390), 882*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "cfebra", IF_RRFe, F_Z), 883*0472e113SJosef 'Jeff' Sipek }; 884*0472e113SJosef 'Jeff' Sipek 885*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_b399[] = { 886*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "cfdbr", IF_RRFe, F_390), 887*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "cfdbra", IF_RRFe, F_Z), 888*0472e113SJosef 'Jeff' Sipek }; 889*0472e113SJosef 'Jeff' Sipek 890*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_b39a[] = { 891*0472e113SJosef 'Jeff' Sipek INSTR(F_390, "cfxbr", IF_RRFe, F_390), 892*0472e113SJosef 'Jeff' Sipek INSTR(F_Z, "cfxbra", IF_RRFe, F_Z), 893*0472e113SJosef 'Jeff' Sipek }; 894*0472e113SJosef 'Jeff' Sipek 895*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_b3xx[256] = { 896*0472e113SJosef 'Jeff' Sipek INSTR(0x00, "lpebr", IF_RRE, F_390 | F_Z), 897*0472e113SJosef 'Jeff' Sipek INSTR(0x01, "lnebr", IF_RRE, F_390 | F_Z), 898*0472e113SJosef 'Jeff' Sipek INSTR(0x02, "ltebr", IF_RRE, F_390 | F_Z), 899*0472e113SJosef 'Jeff' Sipek INSTR(0x03, "lcebr", IF_RRE, F_390 | F_Z), 900*0472e113SJosef 'Jeff' Sipek INSTR(0x04, "ldebr", IF_RRE, F_390 | F_Z), 901*0472e113SJosef 'Jeff' Sipek INSTR(0x05, "lxdbr", IF_RRE, F_390 | F_Z), 902*0472e113SJosef 'Jeff' Sipek INSTR(0x06, "lxebr", IF_RRE, F_390 | F_Z), 903*0472e113SJosef 'Jeff' Sipek INSTR(0x07, "mxdbr", IF_RRE, F_390 | F_Z), 904*0472e113SJosef 'Jeff' Sipek INSTR(0x08, "kebr", IF_RRE, F_390 | F_Z), 905*0472e113SJosef 'Jeff' Sipek INSTR(0x09, "cebr", IF_RRE, F_390 | F_Z), 906*0472e113SJosef 'Jeff' Sipek INSTR(0x0a, "aebr", IF_RRE, F_390 | F_Z), 907*0472e113SJosef 'Jeff' Sipek INSTR(0x0b, "sebr", IF_RRE, F_390 | F_Z), 908*0472e113SJosef 'Jeff' Sipek INSTR(0x0c, "mdebr", IF_RRE, F_390 | F_Z), 909*0472e113SJosef 'Jeff' Sipek INSTR(0x0d, "debr", IF_RRE, F_390 | F_Z), 910*0472e113SJosef 'Jeff' Sipek INSTR(0x0e, "maebr", IF_RRD, F_390 | F_Z), 911*0472e113SJosef 'Jeff' Sipek INSTR(0x0f, "msebr", IF_RRD, F_390 | F_Z), 912*0472e113SJosef 'Jeff' Sipek INSTR(0x10, "lpdbr", IF_RRE, F_390 | F_Z), 913*0472e113SJosef 'Jeff' Sipek INSTR(0x11, "lndbr", IF_RRE, F_390 | F_Z), 914*0472e113SJosef 'Jeff' Sipek INSTR(0x12, "ltdbr", IF_RRE, F_390 | F_Z), 915*0472e113SJosef 'Jeff' Sipek INSTR(0x13, "lcdbr", IF_RRE, F_390 | F_Z), 916*0472e113SJosef 'Jeff' Sipek INSTR(0x14, "sqebr", IF_RRE, F_390 | F_Z), 917*0472e113SJosef 'Jeff' Sipek INSTR(0x15, "sqdbr", IF_RRE, F_390 | F_Z), 918*0472e113SJosef 'Jeff' Sipek INSTR(0x16, "sqxbr", IF_RRE, F_390 | F_Z), 919*0472e113SJosef 'Jeff' Sipek INSTR(0x17, "meebr", IF_RRE, F_390 | F_Z), 920*0472e113SJosef 'Jeff' Sipek INSTR(0x18, "kdbr", IF_RRE, F_390 | F_Z), 921*0472e113SJosef 'Jeff' Sipek INSTR(0x19, "cdbr", IF_RRE, F_390 | F_Z), 922*0472e113SJosef 'Jeff' Sipek INSTR(0x1a, "adbr", IF_RRE, F_390 | F_Z), 923*0472e113SJosef 'Jeff' Sipek INSTR(0x1b, "sdbr", IF_RRE, F_390 | F_Z), 924*0472e113SJosef 'Jeff' Sipek INSTR(0x1c, "mdbr", IF_RRE, F_390 | F_Z), 925*0472e113SJosef 'Jeff' Sipek INSTR(0x1d, "ddbr", IF_RRE, F_390 | F_Z), 926*0472e113SJosef 'Jeff' Sipek INSTR(0x1e, "madbr", IF_RRD, F_390 | F_Z), 927*0472e113SJosef 'Jeff' Sipek INSTR(0x1f, "msdbr", IF_RRD, F_390 | F_Z), 928*0472e113SJosef 'Jeff' Sipek INSTR(0x24, "lder", IF_RRE, F_390 | F_Z), 929*0472e113SJosef 'Jeff' Sipek INSTR(0x25, "lxdr", IF_RRE, F_390 | F_Z), 930*0472e113SJosef 'Jeff' Sipek INSTR(0x26, "lxer", IF_RRE, F_390 | F_Z), 931*0472e113SJosef 'Jeff' Sipek INSTR(0x2e, "maer", IF_RRD, F_390 | F_Z), 932*0472e113SJosef 'Jeff' Sipek INSTR(0x2f, "mser", IF_RRD, F_390 | F_Z), 933*0472e113SJosef 'Jeff' Sipek INSTR(0x36, "sqxr", IF_RRE, F_390 | F_Z), 934*0472e113SJosef 'Jeff' Sipek INSTR(0x37, "meer", IF_RRE, F_390 | F_Z), 935*0472e113SJosef 'Jeff' Sipek INSTR(0x38, "maylr", IF_RRD, F_Z), 936*0472e113SJosef 'Jeff' Sipek INSTR(0x39, "mylr", IF_RRD, F_Z), 937*0472e113SJosef 'Jeff' Sipek INSTR(0x3a, "mayr", IF_RRD, F_Z), 938*0472e113SJosef 'Jeff' Sipek INSTR(0x3b, "myr", IF_RRD, F_Z), 939*0472e113SJosef 'Jeff' Sipek INSTR(0x3c, "mayhr", IF_RRD, F_Z), 940*0472e113SJosef 'Jeff' Sipek INSTR(0x3d, "myhr", IF_RRD, F_Z), 941*0472e113SJosef 'Jeff' Sipek INSTR(0x3e, "madr", IF_RRD, F_390 | F_Z), 942*0472e113SJosef 'Jeff' Sipek INSTR(0x3f, "msdr", IF_RRD, F_390 | F_Z), 943*0472e113SJosef 'Jeff' Sipek INSTR(0x40, "lpxbr", IF_RRE, F_390 | F_Z), 944*0472e113SJosef 'Jeff' Sipek INSTR(0x41, "lnxbr", IF_RRE, F_390 | F_Z), 945*0472e113SJosef 'Jeff' Sipek INSTR(0x42, "ltxbr", IF_RRE, F_390 | F_Z), 946*0472e113SJosef 'Jeff' Sipek INSTR(0x43, "lcxbr", IF_RRE, F_390 | F_Z), 947*0472e113SJosef 'Jeff' Sipek MULTI(0x44, tbl_b344), 948*0472e113SJosef 'Jeff' Sipek MULTI(0x45, tbl_b345), 949*0472e113SJosef 'Jeff' Sipek MULTI(0x46, tbl_b346), 950*0472e113SJosef 'Jeff' Sipek MULTI(0x47, tbl_b347), 951*0472e113SJosef 'Jeff' Sipek INSTR(0x48, "kxbr", IF_RRE, F_390 | F_Z), 952*0472e113SJosef 'Jeff' Sipek INSTR(0x49, "cxbr", IF_RRE, F_390 | F_Z), 953*0472e113SJosef 'Jeff' Sipek INSTR(0x4a, "axbr", IF_RRE, F_390 | F_Z), 954*0472e113SJosef 'Jeff' Sipek INSTR(0x4b, "sxbr", IF_RRE, F_390 | F_Z), 955*0472e113SJosef 'Jeff' Sipek INSTR(0x4c, "mxbr", IF_RRE, F_390 | F_Z), 956*0472e113SJosef 'Jeff' Sipek INSTR(0x4d, "dxbr", IF_RRE, F_390 | F_Z), 957*0472e113SJosef 'Jeff' Sipek INSTR(0x50, "tbedr", IF_RRFe, F_390 | F_Z), 958*0472e113SJosef 'Jeff' Sipek INSTR(0x51, "tbdr", IF_RRFe, F_390 | F_Z), 959*0472e113SJosef 'Jeff' Sipek INSTR(0x53, "diebr", IF_RRFb, F_390 | F_Z), 960*0472e113SJosef 'Jeff' Sipek MULTI(0x57, tbl_b357), 961*0472e113SJosef 'Jeff' Sipek INSTR(0x58, "thder", IF_RRE, F_390 | F_Z), 962*0472e113SJosef 'Jeff' Sipek INSTR(0x59, "thdr", IF_RRE, F_390 | F_Z), 963*0472e113SJosef 'Jeff' Sipek INSTR(0x5b, "didbr", IF_RRFe, F_390 | F_Z), 964*0472e113SJosef 'Jeff' Sipek MULTI(0x5f, tbl_b35f), 965*0472e113SJosef 'Jeff' Sipek INSTR(0x60, "lpxr", IF_RRE, F_390 | F_Z), 966*0472e113SJosef 'Jeff' Sipek INSTR(0x61, "lnxr", IF_RRE, F_390 | F_Z), 967*0472e113SJosef 'Jeff' Sipek INSTR(0x62, "ltxr", IF_RRE, F_390 | F_Z), 968*0472e113SJosef 'Jeff' Sipek INSTR(0x63, "lcxr", IF_RRE, F_390 | F_Z), 969*0472e113SJosef 'Jeff' Sipek INSTR(0x65, "lxr", IF_RRE, F_390 | F_Z), 970*0472e113SJosef 'Jeff' Sipek INSTR(0x66, "lexr", IF_RRE, F_390 | F_Z), 971*0472e113SJosef 'Jeff' Sipek INSTR(0x67, "fixr", IF_RRE, F_390 | F_Z), 972*0472e113SJosef 'Jeff' Sipek INSTR(0x69, "cxr", IF_RRE, F_390 | F_Z), 973*0472e113SJosef 'Jeff' Sipek INSTR(0x70, "lpdfr", IF_RRE, F_Z), 974*0472e113SJosef 'Jeff' Sipek INSTR(0x71, "lndfr", IF_RRE, F_Z), 975*0472e113SJosef 'Jeff' Sipek INSTR(0x72, "cpsdr", IF_RRFe, F_Z), 976*0472e113SJosef 'Jeff' Sipek INSTR(0x73, "lcdfr", IF_RRE, F_Z), 977*0472e113SJosef 'Jeff' Sipek INSTR(0x74, "lzer", IF_RRE, F_390 | F_Z), 978*0472e113SJosef 'Jeff' Sipek INSTR(0x75, "lzdr", IF_RRE, F_390 | F_Z), 979*0472e113SJosef 'Jeff' Sipek INSTR(0x76, "lzxr", IF_RRE, F_390 | F_Z), 980*0472e113SJosef 'Jeff' Sipek INSTR(0x77, "fier", IF_RRE, F_390 | F_Z), 981*0472e113SJosef 'Jeff' Sipek INSTR(0x7f, "fidr", IF_RRE, F_390 | F_Z), 982*0472e113SJosef 'Jeff' Sipek INSTR(0x84, "sfpc", IF_RRE, F_390 | F_Z), 983*0472e113SJosef 'Jeff' Sipek INSTR(0x85, "sfasr", IF_RRE, F_Z), 984*0472e113SJosef 'Jeff' Sipek INSTR(0x8c, "efpc", IF_RRE, F_390 | F_Z), 985*0472e113SJosef 'Jeff' Sipek INSTR(0x90, "celfbr", IF_RRFe, F_Z), 986*0472e113SJosef 'Jeff' Sipek INSTR(0x91, "cdlfbr", IF_RRFe, F_Z), 987*0472e113SJosef 'Jeff' Sipek INSTR(0x92, "cxlfbr", IF_RRFe, F_Z), 988*0472e113SJosef 'Jeff' Sipek MULTI(0x94, tbl_b394), 989*0472e113SJosef 'Jeff' Sipek MULTI(0x95, tbl_b395), 990*0472e113SJosef 'Jeff' Sipek MULTI(0x96, tbl_b396), 991*0472e113SJosef 'Jeff' Sipek MULTI(0x98, tbl_b398), 992*0472e113SJosef 'Jeff' Sipek MULTI(0x99, tbl_b399), 993*0472e113SJosef 'Jeff' Sipek MULTI(0x9a, tbl_b39a), 994*0472e113SJosef 'Jeff' Sipek INSTR(0x9c, "clfebr", IF_RRFe, F_Z), 995*0472e113SJosef 'Jeff' Sipek INSTR(0x9d, "clfdbr", IF_RRFe, F_Z), 996*0472e113SJosef 'Jeff' Sipek INSTR(0x9e, "clfxbr", IF_RRFe, F_Z), 997*0472e113SJosef 'Jeff' Sipek INSTR(0xa0, "celgbr", IF_RRFe, F_Z), 998*0472e113SJosef 'Jeff' Sipek INSTR(0xa1, "cdlgbr", IF_RRFe, F_Z), 999*0472e113SJosef 'Jeff' Sipek INSTR(0xa2, "cxlgbr", IF_RRFe, F_Z), 1000*0472e113SJosef 'Jeff' Sipek INSTR(0xa4, "cegbra", IF_RRFe, F_Z), 1001*0472e113SJosef 'Jeff' Sipek INSTR(0xa5, "cdgbra", IF_RRFe, F_Z), 1002*0472e113SJosef 'Jeff' Sipek INSTR(0xa6, "cxgbra", IF_RRFe, F_Z), 1003*0472e113SJosef 'Jeff' Sipek INSTR(0xa8, "cgebra", IF_RRFe, F_Z), 1004*0472e113SJosef 'Jeff' Sipek INSTR(0xa9, "cgdbra", IF_RRFe, F_Z), 1005*0472e113SJosef 'Jeff' Sipek INSTR(0xaa, "cgxbra", IF_RRFe, F_Z), 1006*0472e113SJosef 'Jeff' Sipek INSTR(0xac, "clgebr", IF_RRFe, F_Z), 1007*0472e113SJosef 'Jeff' Sipek INSTR(0xad, "clgdbr", IF_RRFe, F_Z), 1008*0472e113SJosef 'Jeff' Sipek INSTR(0xae, "clgxbr", IF_RRFe, F_Z), 1009*0472e113SJosef 'Jeff' Sipek INSTR(0xb4, "cefr", IF_RRE, F_390 | F_Z), 1010*0472e113SJosef 'Jeff' Sipek INSTR(0xb5, "cdfr", IF_RRE, F_390 | F_Z), 1011*0472e113SJosef 'Jeff' Sipek INSTR(0xb6, "cxfr", IF_RRE, F_390 | F_Z), 1012*0472e113SJosef 'Jeff' Sipek INSTR(0xb8, "cfer", IF_RRFe, F_390 | F_Z), 1013*0472e113SJosef 'Jeff' Sipek INSTR(0xb9, "cfdr", IF_RRFe, F_390 | F_Z), 1014*0472e113SJosef 'Jeff' Sipek INSTR(0xba, "cfxr", IF_RRFe, F_390 | F_Z), 1015*0472e113SJosef 'Jeff' Sipek INSTR(0xc1, "ldgr", IF_RRE, F_Z), 1016*0472e113SJosef 'Jeff' Sipek INSTR(0xc4, "cegr", IF_RRE, F_Z), 1017*0472e113SJosef 'Jeff' Sipek INSTR(0xc5, "cdgr", IF_RRE, F_Z), 1018*0472e113SJosef 'Jeff' Sipek INSTR(0xc6, "cxgr", IF_RRE, F_Z), 1019*0472e113SJosef 'Jeff' Sipek INSTR(0xc8, "cger", IF_RRFe, F_Z), 1020*0472e113SJosef 'Jeff' Sipek INSTR(0xc9, "cgdr", IF_RRFe, F_Z), 1021*0472e113SJosef 'Jeff' Sipek INSTR(0xca, "cgxr", IF_RRFe, F_Z), 1022*0472e113SJosef 'Jeff' Sipek INSTR(0xcd, "lgdr", IF_RRE, F_Z), 1023*0472e113SJosef 'Jeff' Sipek INSTR(0xd0, "mdtra", IF_RRFa, F_Z), 1024*0472e113SJosef 'Jeff' Sipek INSTR(0xd1, "ddtra", IF_RRFa, F_Z), 1025*0472e113SJosef 'Jeff' Sipek INSTR(0xd2, "adtra", IF_RRFa, F_Z), 1026*0472e113SJosef 'Jeff' Sipek INSTR(0xd3, "sdtra", IF_RRFa, F_Z), 1027*0472e113SJosef 'Jeff' Sipek INSTR(0xd4, "ldetr", IF_RRFd, F_Z), 1028*0472e113SJosef 'Jeff' Sipek INSTR(0xd5, "ledtr", IF_RRFe, F_Z), 1029*0472e113SJosef 'Jeff' Sipek INSTR(0xd6, "ltdtr", IF_RRE, F_Z), 1030*0472e113SJosef 'Jeff' Sipek INSTR(0xd7, "fidtr", IF_RRFe, F_Z), 1031*0472e113SJosef 'Jeff' Sipek INSTR(0xd8, "mxtra", IF_RRFa, F_Z), 1032*0472e113SJosef 'Jeff' Sipek INSTR(0xd9, "dxtra", IF_RRFa, F_Z), 1033*0472e113SJosef 'Jeff' Sipek INSTR(0xda, "axtra", IF_RRFa, F_Z), 1034*0472e113SJosef 'Jeff' Sipek INSTR(0xdb, "sxtra", IF_RRFa, F_Z), 1035*0472e113SJosef 'Jeff' Sipek INSTR(0xdc, "lxdtr", IF_RRFd, F_Z), 1036*0472e113SJosef 'Jeff' Sipek INSTR(0xdd, "ldxtr", IF_RRFe, F_Z), 1037*0472e113SJosef 'Jeff' Sipek INSTR(0xde, "ltxtr", IF_RRE, F_Z), 1038*0472e113SJosef 'Jeff' Sipek INSTR(0xdf, "fixtr", IF_RRFe, F_Z), 1039*0472e113SJosef 'Jeff' Sipek INSTR(0xe0, "kdtr", IF_RRE, F_Z), 1040*0472e113SJosef 'Jeff' Sipek INSTR(0xe1, "cgdtra", IF_RRFe, F_Z), 1041*0472e113SJosef 'Jeff' Sipek INSTR(0xe2, "cudtr", IF_RRE, F_Z), 1042*0472e113SJosef 'Jeff' Sipek INSTR(0xe3, "csdtr", IF_RRFd, F_Z), 1043*0472e113SJosef 'Jeff' Sipek INSTR(0xe4, "cdtr", IF_RRE, F_Z), 1044*0472e113SJosef 'Jeff' Sipek INSTR(0xe5, "eedtr", IF_RRE, F_Z), 1045*0472e113SJosef 'Jeff' Sipek INSTR(0xe7, "esdtr", IF_RRE, F_Z), 1046*0472e113SJosef 'Jeff' Sipek INSTR(0xe8, "kxtr", IF_RRE, F_Z), 1047*0472e113SJosef 'Jeff' Sipek INSTR(0xe9, "cgxtra", IF_RRFe, F_Z), 1048*0472e113SJosef 'Jeff' Sipek INSTR(0xea, "cuxtr", IF_RRE, F_Z), 1049*0472e113SJosef 'Jeff' Sipek INSTR(0xeb, "csxtr", IF_RRFd, F_Z), 1050*0472e113SJosef 'Jeff' Sipek INSTR(0xec, "cxtr", IF_RRE, F_Z), 1051*0472e113SJosef 'Jeff' Sipek INSTR(0xed, "eextr", IF_RRE, F_Z), 1052*0472e113SJosef 'Jeff' Sipek INSTR(0xef, "esxtr", IF_RRE, F_Z), 1053*0472e113SJosef 'Jeff' Sipek INSTR(0xf1, "cdgtra", IF_RRE, F_Z), 1054*0472e113SJosef 'Jeff' Sipek INSTR(0xf2, "cdutr", IF_RRE, F_Z), 1055*0472e113SJosef 'Jeff' Sipek INSTR(0xf3, "cdstr", IF_RRE, F_Z), 1056*0472e113SJosef 'Jeff' Sipek INSTR(0xf4, "cedtr", IF_RRE, F_Z), 1057*0472e113SJosef 'Jeff' Sipek INSTR(0xf5, "qadtr", IF_RRFb, F_Z), 1058*0472e113SJosef 'Jeff' Sipek INSTR(0xf6, "iedtr", IF_RRFb, F_Z), 1059*0472e113SJosef 'Jeff' Sipek INSTR(0xf7, "rrdtr", IF_RRFb, F_Z), 1060*0472e113SJosef 'Jeff' Sipek INSTR(0xf9, "cxgtra", IF_RRE, F_Z), 1061*0472e113SJosef 'Jeff' Sipek INSTR(0xfa, "cxutr", IF_RRE, F_Z), 1062*0472e113SJosef 'Jeff' Sipek INSTR(0xfb, "cxstr", IF_RRE, F_Z), 1063*0472e113SJosef 'Jeff' Sipek INSTR(0xfc, "cextr", IF_RRE, F_Z), 1064*0472e113SJosef 'Jeff' Sipek INSTR(0xfd, "qaxtr", IF_RRFb, F_Z), 1065*0472e113SJosef 'Jeff' Sipek INSTR(0xfe, "iextr", IF_RRFb, F_Z), 1066*0472e113SJosef 'Jeff' Sipek INSTR(0xff, "rrxtr", IF_RRFb, F_Z), 1067*0472e113SJosef 'Jeff' Sipek }; 1068*0472e113SJosef 'Jeff' Sipek 1069*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_b9xx[256] = { 1070*0472e113SJosef 'Jeff' Sipek INSTR(0x00, "lpgr", IF_RRE, F_Z), 1071*0472e113SJosef 'Jeff' Sipek INSTR(0x01, "lngr", IF_RRE, F_Z), 1072*0472e113SJosef 'Jeff' Sipek INSTR(0x02, "ltgr", IF_RRE, F_Z), 1073*0472e113SJosef 'Jeff' Sipek INSTR(0x03, "lcgr", IF_RRE, F_Z), 1074*0472e113SJosef 'Jeff' Sipek INSTR(0x04, "lgr", IF_RRE, F_Z), 1075*0472e113SJosef 'Jeff' Sipek INSTR(0x05, "lurag", IF_RRE, F_Z), 1076*0472e113SJosef 'Jeff' Sipek INSTR(0x06, "lgbr", IF_RRE, F_Z), 1077*0472e113SJosef 'Jeff' Sipek INSTR(0x07, "lghr", IF_RRE, F_Z), 1078*0472e113SJosef 'Jeff' Sipek INSTR(0x08, "agr", IF_RRE, F_Z), 1079*0472e113SJosef 'Jeff' Sipek INSTR(0x09, "sgr", IF_RRE, F_Z), 1080*0472e113SJosef 'Jeff' Sipek INSTR(0x0a, "algr", IF_RRE, F_Z), 1081*0472e113SJosef 'Jeff' Sipek INSTR(0x0b, "slgr", IF_RRE, F_Z), 1082*0472e113SJosef 'Jeff' Sipek INSTR(0x0c, "msgr", IF_RRE, F_Z), 1083*0472e113SJosef 'Jeff' Sipek INSTR(0x0d, "dsgr", IF_RRE, F_Z), 1084*0472e113SJosef 'Jeff' Sipek INSTR(0x0e, "eregg", IF_RRE, F_Z), 1085*0472e113SJosef 'Jeff' Sipek INSTR(0x0f, "lrvgr", IF_RRE, F_Z), 1086*0472e113SJosef 'Jeff' Sipek INSTR(0x10, "lpgfr", IF_RRE, F_Z), 1087*0472e113SJosef 'Jeff' Sipek INSTR(0x11, "lngfr", IF_RRE, F_Z), 1088*0472e113SJosef 'Jeff' Sipek INSTR(0x12, "ltgfr", IF_RRE, F_Z), 1089*0472e113SJosef 'Jeff' Sipek INSTR(0x13, "lcgfr", IF_RRE, F_Z), 1090*0472e113SJosef 'Jeff' Sipek INSTR(0x14, "lgfr", IF_RRE, F_Z), 1091*0472e113SJosef 'Jeff' Sipek INSTR(0x16, "llgfr", IF_RRE, F_Z), 1092*0472e113SJosef 'Jeff' Sipek INSTR(0x17, "llgtr", IF_RRE, F_Z), 1093*0472e113SJosef 'Jeff' Sipek INSTR(0x18, "agfr", IF_RRE, F_Z), 1094*0472e113SJosef 'Jeff' Sipek INSTR(0x19, "sgfr", IF_RRE, F_Z), 1095*0472e113SJosef 'Jeff' Sipek INSTR(0x1a, "algfr", IF_RRE, F_Z), 1096*0472e113SJosef 'Jeff' Sipek INSTR(0x1b, "slgfr", IF_RRE, F_Z), 1097*0472e113SJosef 'Jeff' Sipek INSTR(0x1c, "msgfr", IF_RRE, F_Z), 1098*0472e113SJosef 'Jeff' Sipek INSTR(0x1d, "dsgfr", IF_RRE, F_Z), 1099*0472e113SJosef 'Jeff' Sipek INSTR(0x1e, "kmac", IF_RRE, F_390 | F_Z), 1100*0472e113SJosef 'Jeff' Sipek INSTR(0x1f, "lrvr", IF_RRE, F_390 | F_Z), 1101*0472e113SJosef 'Jeff' Sipek INSTR(0x20, "cgr", IF_RRE, F_Z), 1102*0472e113SJosef 'Jeff' Sipek INSTR(0x21, "clgr", IF_RRE, F_Z), 1103*0472e113SJosef 'Jeff' Sipek INSTR(0x25, "sturg", IF_RRE, F_Z), 1104*0472e113SJosef 'Jeff' Sipek INSTR(0x26, "lbr", IF_RRE, F_Z), 1105*0472e113SJosef 'Jeff' Sipek INSTR(0x27, "lhr", IF_RRE, F_Z), 1106*0472e113SJosef 'Jeff' Sipek INSTR(0x28, "pckmo", IF_RRE, F_Z), 1107*0472e113SJosef 'Jeff' Sipek INSTR(0x2a, "kmf", IF_RRE, F_Z), 1108*0472e113SJosef 'Jeff' Sipek INSTR(0x2b, "kmo", IF_RRE, F_Z), 1109*0472e113SJosef 'Jeff' Sipek INSTR(0x2c, "pcc", IF_RRE, F_Z), 1110*0472e113SJosef 'Jeff' Sipek INSTR(0x2d, "kmctr", IF_RRFd, F_Z), 1111*0472e113SJosef 'Jeff' Sipek INSTR(0x2e, "km", IF_RRE, F_390 | F_Z), 1112*0472e113SJosef 'Jeff' Sipek INSTR(0x2f, "kmc", IF_RRE, F_390 | F_Z), 1113*0472e113SJosef 'Jeff' Sipek INSTR(0x30, "cgfr", IF_RRE, F_Z), 1114*0472e113SJosef 'Jeff' Sipek INSTR(0x31, "clgfr", IF_RRE, F_Z), 1115*0472e113SJosef 'Jeff' Sipek INSTR(0x3e, "kimd", IF_RRE, F_390 | F_Z), 1116*0472e113SJosef 'Jeff' Sipek INSTR(0x3f, "klmd", IF_RRE, F_390 | F_Z), 1117*0472e113SJosef 'Jeff' Sipek INSTR(0x41, "cfdtr", IF_RRFe, F_Z), 1118*0472e113SJosef 'Jeff' Sipek INSTR(0x42, "clgdtr", IF_RRFe, F_Z), 1119*0472e113SJosef 'Jeff' Sipek INSTR(0x43, "clfdtr", IF_RRFe, F_Z), 1120*0472e113SJosef 'Jeff' Sipek INSTR(0x46, "bctgr", IF_RRE, F_Z), 1121*0472e113SJosef 'Jeff' Sipek INSTR(0x49, "cfxtr", IF_RRFe, F_Z), 1122*0472e113SJosef 'Jeff' Sipek INSTR(0x4a, "clgxtr", IF_RRFe, F_Z), 1123*0472e113SJosef 'Jeff' Sipek INSTR(0x4b, "clfxtr", IF_RRFe, F_Z), 1124*0472e113SJosef 'Jeff' Sipek INSTR(0x51, "cdftr", IF_RRE, F_Z), 1125*0472e113SJosef 'Jeff' Sipek INSTR(0x52, "cdlgtr", IF_RRFe, F_Z), 1126*0472e113SJosef 'Jeff' Sipek INSTR(0x53, "cdlftr", IF_RRFe, F_Z), 1127*0472e113SJosef 'Jeff' Sipek INSTR(0x59, "cxftr", IF_RRE, F_Z), 1128*0472e113SJosef 'Jeff' Sipek INSTR(0x5a, "cxlgtr", IF_RRFe, F_Z), 1129*0472e113SJosef 'Jeff' Sipek INSTR(0x5b, "cxlftr", IF_RRFe, F_Z), 1130*0472e113SJosef 'Jeff' Sipek INSTR(0x60, "cgrt", IF_RRFc, F_Z), 1131*0472e113SJosef 'Jeff' Sipek INSTR(0x61, "clgrt", IF_RRFc, F_Z), 1132*0472e113SJosef 'Jeff' Sipek INSTR(0x72, "crt", IF_RRFc, F_Z), 1133*0472e113SJosef 'Jeff' Sipek INSTR(0x73, "clrt", IF_RRFc, F_Z), 1134*0472e113SJosef 'Jeff' Sipek INSTR(0x80, "ngr", IF_RRE, F_Z), 1135*0472e113SJosef 'Jeff' Sipek INSTR(0x81, "ogr", IF_RRE, F_Z), 1136*0472e113SJosef 'Jeff' Sipek INSTR(0x82, "xgr", IF_RRE, F_Z), 1137*0472e113SJosef 'Jeff' Sipek INSTR(0x83, "flogr", IF_RRE, F_Z), 1138*0472e113SJosef 'Jeff' Sipek INSTR(0x84, "llgcr", IF_RRE, F_Z), 1139*0472e113SJosef 'Jeff' Sipek INSTR(0x85, "llghr", IF_RRE, F_Z), 1140*0472e113SJosef 'Jeff' Sipek INSTR(0x86, "mlgr", IF_RRE, F_Z), 1141*0472e113SJosef 'Jeff' Sipek INSTR(0x87, "dlgr", IF_RRE, F_Z), 1142*0472e113SJosef 'Jeff' Sipek INSTR(0x88, "alcgr", IF_RRE, F_Z), 1143*0472e113SJosef 'Jeff' Sipek INSTR(0x89, "slbgr", IF_RRE, F_Z), 1144*0472e113SJosef 'Jeff' Sipek INSTR(0x8a, "cspg", IF_RRE, F_Z), 1145*0472e113SJosef 'Jeff' Sipek INSTR(0x8d, "epsw", IF_RRE, F_390 | F_Z), 1146*0472e113SJosef 'Jeff' Sipek INSTR(0x8e, "idte", IF_RRFb, F_Z), 1147*0472e113SJosef 'Jeff' Sipek INSTR(0x8f, "crdte", IF_RRFb, F_Z), 1148*0472e113SJosef 'Jeff' Sipek INSTR(0x90, "trtt", IF_RRFc, F_390 | F_Z), 1149*0472e113SJosef 'Jeff' Sipek INSTR(0x91, "trto", IF_RRFc, F_390 | F_Z), 1150*0472e113SJosef 'Jeff' Sipek INSTR(0x92, "trot", IF_RRFc, F_390 | F_Z), 1151*0472e113SJosef 'Jeff' Sipek INSTR(0x93, "troo", IF_RRFc, F_390 | F_Z), 1152*0472e113SJosef 'Jeff' Sipek INSTR(0x94, "llcr", IF_RRE, F_Z), 1153*0472e113SJosef 'Jeff' Sipek INSTR(0x95, "llhr", IF_RRE, F_Z), 1154*0472e113SJosef 'Jeff' Sipek INSTR(0x96, "mlr", IF_RRE, F_390 | F_Z), 1155*0472e113SJosef 'Jeff' Sipek INSTR(0x97, "dlr", IF_RRE, F_390 | F_Z), 1156*0472e113SJosef 'Jeff' Sipek INSTR(0x98, "alcr", IF_RRE, F_390 | F_Z), 1157*0472e113SJosef 'Jeff' Sipek INSTR(0x99, "slbr", IF_RRE, F_390 | F_Z), 1158*0472e113SJosef 'Jeff' Sipek INSTR(0x9a, "epair", IF_RRE, F_Z), 1159*0472e113SJosef 'Jeff' Sipek INSTR(0x9b, "esair", IF_RRE, F_Z), 1160*0472e113SJosef 'Jeff' Sipek INSTR(0x9d, "esea", IF_RRE, F_Z), 1161*0472e113SJosef 'Jeff' Sipek INSTR(0x9e, "pti", IF_RRE, F_Z), 1162*0472e113SJosef 'Jeff' Sipek INSTR(0x9f, "ssair", IF_RRE, F_Z), 1163*0472e113SJosef 'Jeff' Sipek INSTR(0xa2, "ptf", IF_RRE, F_Z), 1164*0472e113SJosef 'Jeff' Sipek INSTR(0xaa, "lptea", IF_RRFb, F_Z), 1165*0472e113SJosef 'Jeff' Sipek INSTR(0xae, "rrbm", IF_RRE, F_Z), 1166*0472e113SJosef 'Jeff' Sipek INSTR(0xaf, "pfmf", IF_RRE, F_Z), 1167*0472e113SJosef 'Jeff' Sipek INSTR(0xb0, "cu14", IF_RRFc, F_Z), 1168*0472e113SJosef 'Jeff' Sipek INSTR(0xb1, "cu24", IF_RRFc, F_Z), 1169*0472e113SJosef 'Jeff' Sipek INSTR(0xb2, "cu41", IF_RRE, F_Z), 1170*0472e113SJosef 'Jeff' Sipek INSTR(0xb3, "cu42", IF_RRE, F_Z), 1171*0472e113SJosef 'Jeff' Sipek INSTR(0xbd, "trtre", IF_RRFc, F_Z), 1172*0472e113SJosef 'Jeff' Sipek INSTR(0xbe, "srstu", IF_RRE, F_Z), 1173*0472e113SJosef 'Jeff' Sipek INSTR(0xbf, "trte", IF_RRFc, F_Z), 1174*0472e113SJosef 'Jeff' Sipek INSTR(0xc8, "ahhhr", IF_RRFa, F_Z), 1175*0472e113SJosef 'Jeff' Sipek INSTR(0xc9, "shhhr", IF_RRFa, F_Z), 1176*0472e113SJosef 'Jeff' Sipek INSTR(0xca, "alhhhr", IF_RRFa, F_Z), 1177*0472e113SJosef 'Jeff' Sipek INSTR(0xcb, "slhhhr", IF_RRFa, F_Z), 1178*0472e113SJosef 'Jeff' Sipek INSTR(0xcd, "chhr", IF_RRE, F_Z), 1179*0472e113SJosef 'Jeff' Sipek INSTR(0xcf, "clhhr", IF_RRE, F_Z), 1180*0472e113SJosef 'Jeff' Sipek INSTR(0xd8, "ahhlr", IF_RRFa, F_Z), 1181*0472e113SJosef 'Jeff' Sipek INSTR(0xd9, "shhlr", IF_RRFa, F_Z), 1182*0472e113SJosef 'Jeff' Sipek INSTR(0xda, "alhhlr", IF_RRFa, F_Z), 1183*0472e113SJosef 'Jeff' Sipek INSTR(0xdb, "slhhlr", IF_RRFa, F_Z), 1184*0472e113SJosef 'Jeff' Sipek INSTR(0xdd, "chlr", IF_RRE, F_Z), 1185*0472e113SJosef 'Jeff' Sipek INSTR(0xdf, "clhlr", IF_RRE, F_Z), 1186*0472e113SJosef 'Jeff' Sipek INSTR(0xe1, "popcnt", IF_RRE, F_Z), 1187*0472e113SJosef 'Jeff' Sipek INSTR(0xe2, "locgr", IF_RRFc, F_Z), 1188*0472e113SJosef 'Jeff' Sipek INSTR(0xe4, "ngrk", IF_RRFa, F_Z), 1189*0472e113SJosef 'Jeff' Sipek INSTR(0xe6, "ogrk", IF_RRFa, F_Z), 1190*0472e113SJosef 'Jeff' Sipek INSTR(0xe7, "xgrk", IF_RRFa, F_Z), 1191*0472e113SJosef 'Jeff' Sipek INSTR(0xe8, "agrk", IF_RRFa, F_Z), 1192*0472e113SJosef 'Jeff' Sipek INSTR(0xe9, "sgrk", IF_RRFa, F_Z), 1193*0472e113SJosef 'Jeff' Sipek INSTR(0xea, "algrk", IF_RRFa, F_Z), 1194*0472e113SJosef 'Jeff' Sipek INSTR(0xeb, "slgrk", IF_RRFa, F_Z), 1195*0472e113SJosef 'Jeff' Sipek INSTR(0xf2, "locgr", IF_RRFc, F_Z), 1196*0472e113SJosef 'Jeff' Sipek INSTR(0xf4, "nrk", IF_RRFa, F_Z), 1197*0472e113SJosef 'Jeff' Sipek INSTR(0xf6, "ork", IF_RRFa, F_Z), 1198*0472e113SJosef 'Jeff' Sipek INSTR(0xf7, "xrk", IF_RRFa, F_Z), 1199*0472e113SJosef 'Jeff' Sipek INSTR(0xf8, "ark", IF_RRFa, F_Z), 1200*0472e113SJosef 'Jeff' Sipek INSTR(0xf9, "srk", IF_RRFa, F_Z), 1201*0472e113SJosef 'Jeff' Sipek INSTR(0xfa, "alrk", IF_RRFa, F_Z), 1202*0472e113SJosef 'Jeff' Sipek INSTR(0xfb, "slrk", IF_RRFa, F_Z), 1203*0472e113SJosef 'Jeff' Sipek }; 1204*0472e113SJosef 'Jeff' Sipek 1205*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_c0x[16] = { 1206*0472e113SJosef 'Jeff' Sipek INSTR(0x0, "larl", IF_RILb, F_390 | F_Z), 1207*0472e113SJosef 'Jeff' Sipek INSTR(0x1, "lgfi", IF_RILa, F_Z), 1208*0472e113SJosef 'Jeff' Sipek INSTR(0x4, "brcl", IF_RILc, F_390 | F_Z), 1209*0472e113SJosef 'Jeff' Sipek INSTR(0x5, "brasl", IF_RILb, F_390 | F_Z), 1210*0472e113SJosef 'Jeff' Sipek INSTR(0x6, "xihf", IF_RILa, F_Z), 1211*0472e113SJosef 'Jeff' Sipek INSTR(0x7, "xilf", IF_RILa, F_Z), 1212*0472e113SJosef 'Jeff' Sipek INSTR(0x8, "iihf", IF_RILa, F_Z), 1213*0472e113SJosef 'Jeff' Sipek INSTR(0x9, "iilf", IF_RILa, F_Z), 1214*0472e113SJosef 'Jeff' Sipek INSTR(0xa, "nihf", IF_RILa, F_Z), 1215*0472e113SJosef 'Jeff' Sipek INSTR(0xb, "nilf", IF_RILa, F_Z), 1216*0472e113SJosef 'Jeff' Sipek INSTR(0xc, "oihf", IF_RILa, F_Z), 1217*0472e113SJosef 'Jeff' Sipek INSTR(0xd, "oilf", IF_RILa, F_Z), 1218*0472e113SJosef 'Jeff' Sipek INSTR(0xe, "llihf", IF_RILa, F_Z), 1219*0472e113SJosef 'Jeff' Sipek INSTR(0xf, "llilf", IF_RILa, F_Z), 1220*0472e113SJosef 'Jeff' Sipek }; 1221*0472e113SJosef 'Jeff' Sipek 1222*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_c2x[16] = { 1223*0472e113SJosef 'Jeff' Sipek INSTR(0x0, "msgfi", IF_RILa, F_Z), 1224*0472e113SJosef 'Jeff' Sipek INSTR(0x1, "msfi", IF_RILa, F_Z), 1225*0472e113SJosef 'Jeff' Sipek INSTR(0x4, "slgfi", IF_RILa, F_Z), 1226*0472e113SJosef 'Jeff' Sipek INSTR(0x5, "slfi", IF_RILa, F_Z), 1227*0472e113SJosef 'Jeff' Sipek INSTR(0x8, "agfi", IF_RILa, F_Z), 1228*0472e113SJosef 'Jeff' Sipek INSTR(0x9, "afi", IF_RILa, F_Z), 1229*0472e113SJosef 'Jeff' Sipek INSTR(0xa, "algfi", IF_RILa, F_Z), 1230*0472e113SJosef 'Jeff' Sipek INSTR(0xb, "alfi", IF_RILa, F_Z), 1231*0472e113SJosef 'Jeff' Sipek INSTR(0xc, "cgfi", IF_RILa, F_Z), 1232*0472e113SJosef 'Jeff' Sipek INSTR(0xd, "cfi", IF_RILa, F_Z), 1233*0472e113SJosef 'Jeff' Sipek INSTR(0xe, "clgfi", IF_RILa, F_Z), 1234*0472e113SJosef 'Jeff' Sipek INSTR(0xf, "clfi", IF_RILa, F_Z), 1235*0472e113SJosef 'Jeff' Sipek }; 1236*0472e113SJosef 'Jeff' Sipek 1237*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_c4x[16] = { 1238*0472e113SJosef 'Jeff' Sipek INSTR(0x2, "llhrl", IF_RILb, F_Z), 1239*0472e113SJosef 'Jeff' Sipek INSTR(0x4, "lghrl", IF_RILb, F_Z), 1240*0472e113SJosef 'Jeff' Sipek INSTR(0x5, "lhrl", IF_RILb, F_Z), 1241*0472e113SJosef 'Jeff' Sipek INSTR(0x6, "llghrl", IF_RILb, F_Z), 1242*0472e113SJosef 'Jeff' Sipek INSTR(0x7, "sthrl", IF_RILb, F_Z), 1243*0472e113SJosef 'Jeff' Sipek INSTR(0x8, "lgrl", IF_RILb, F_Z), 1244*0472e113SJosef 'Jeff' Sipek INSTR(0xb, "stgrl", IF_RILb, F_Z), 1245*0472e113SJosef 'Jeff' Sipek INSTR(0xc, "lgfrl", IF_RILb, F_Z), 1246*0472e113SJosef 'Jeff' Sipek INSTR(0xd, "lrl", IF_RILb, F_Z), 1247*0472e113SJosef 'Jeff' Sipek INSTR(0xe, "llgfrl", IF_RILb, F_Z), 1248*0472e113SJosef 'Jeff' Sipek INSTR(0xf, "strl", IF_RILb, F_Z), 1249*0472e113SJosef 'Jeff' Sipek }; 1250*0472e113SJosef 'Jeff' Sipek 1251*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_c6x[16] = { 1252*0472e113SJosef 'Jeff' Sipek INSTR(0x0, "exrl", IF_RILb, F_Z), 1253*0472e113SJosef 'Jeff' Sipek INSTR(0x2, "pfdrl", IF_RILc, F_Z), 1254*0472e113SJosef 'Jeff' Sipek INSTR(0x4, "cghrl", IF_RILb, F_Z), 1255*0472e113SJosef 'Jeff' Sipek INSTR(0x5, "chrl", IF_RILb, F_Z), 1256*0472e113SJosef 'Jeff' Sipek INSTR(0x6, "clghrl", IF_RILb, F_Z), 1257*0472e113SJosef 'Jeff' Sipek INSTR(0x7, "clhrl", IF_RILb, F_Z), 1258*0472e113SJosef 'Jeff' Sipek INSTR(0x8, "cgrl", IF_RILb, F_Z), 1259*0472e113SJosef 'Jeff' Sipek INSTR(0xa, "clgrl", IF_RILb, F_Z), 1260*0472e113SJosef 'Jeff' Sipek INSTR(0xc, "cgfrl", IF_RILb, F_Z), 1261*0472e113SJosef 'Jeff' Sipek INSTR(0xd, "crl", IF_RILb, F_Z), 1262*0472e113SJosef 'Jeff' Sipek INSTR(0xe, "clgfrl", IF_RILb, F_Z), 1263*0472e113SJosef 'Jeff' Sipek INSTR(0xf, "clrl", IF_RILb, F_Z), 1264*0472e113SJosef 'Jeff' Sipek }; 1265*0472e113SJosef 'Jeff' Sipek 1266*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_c8x[16] = { 1267*0472e113SJosef 'Jeff' Sipek INSTR(0x0, "mvcos", IF_SSF, F_Z), 1268*0472e113SJosef 'Jeff' Sipek INSTR(0x1, "ectg", IF_SSF, F_Z), 1269*0472e113SJosef 'Jeff' Sipek INSTR(0x2, "csst", IF_SSF, F_Z), 1270*0472e113SJosef 'Jeff' Sipek INSTR(0x4, "lpd", IF_SSF, F_Z), 1271*0472e113SJosef 'Jeff' Sipek INSTR(0x5, "lpdg", IF_SSF, F_Z), 1272*0472e113SJosef 'Jeff' Sipek }; 1273*0472e113SJosef 'Jeff' Sipek 1274*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_ccx[16] = { 1275*0472e113SJosef 'Jeff' Sipek INSTR(0x6, "brcth", IF_RILb, F_Z), 1276*0472e113SJosef 'Jeff' Sipek INSTR(0x8, "aih", IF_RILa, F_Z), 1277*0472e113SJosef 'Jeff' Sipek INSTR(0xa, "alsih", IF_RILa, F_Z), 1278*0472e113SJosef 'Jeff' Sipek INSTR(0xb, "alsihn", IF_RILa, F_Z), 1279*0472e113SJosef 'Jeff' Sipek INSTR(0xd, "cih", IF_RILa, F_Z), 1280*0472e113SJosef 'Jeff' Sipek INSTR(0xf, "clih", IF_RILa, F_Z), 1281*0472e113SJosef 'Jeff' Sipek }; 1282*0472e113SJosef 'Jeff' Sipek 1283*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_e3xx[256] = { 1284*0472e113SJosef 'Jeff' Sipek INSTR(0x02, "ltg", IF_RXYa, F_Z), 1285*0472e113SJosef 'Jeff' Sipek INSTR(0x03, "lrag", IF_RXYa, F_Z), 1286*0472e113SJosef 'Jeff' Sipek INSTR(0x04, "lg", IF_RXYa, F_Z), 1287*0472e113SJosef 'Jeff' Sipek INSTR(0x06, "cvby", IF_RXYa, F_Z), 1288*0472e113SJosef 'Jeff' Sipek INSTR(0x08, "ag", IF_RXYa, F_Z), 1289*0472e113SJosef 'Jeff' Sipek INSTR(0x09, "sg", IF_RXYa, F_Z), 1290*0472e113SJosef 'Jeff' Sipek INSTR(0x0a, "alg", IF_RXYa, F_Z), 1291*0472e113SJosef 'Jeff' Sipek INSTR(0x0b, "slg", IF_RXYa, F_Z), 1292*0472e113SJosef 'Jeff' Sipek INSTR(0x0c, "msg", IF_RXYa, F_Z), 1293*0472e113SJosef 'Jeff' Sipek INSTR(0x0d, "dsg", IF_RXYa, F_Z), 1294*0472e113SJosef 'Jeff' Sipek INSTR(0x0e, "cvbg", IF_RXYa, F_Z), 1295*0472e113SJosef 'Jeff' Sipek INSTR(0x0f, "lrvg", IF_RXYa, F_Z), 1296*0472e113SJosef 'Jeff' Sipek INSTR(0x12, "lt", IF_RXYa, F_Z), 1297*0472e113SJosef 'Jeff' Sipek INSTR(0x13, "lray", IF_RXYa, F_Z), 1298*0472e113SJosef 'Jeff' Sipek INSTR(0x14, "lgf", IF_RXYa, F_Z), 1299*0472e113SJosef 'Jeff' Sipek INSTR(0x15, "lgh", IF_RXYa, F_Z), 1300*0472e113SJosef 'Jeff' Sipek INSTR(0x16, "llgf", IF_RXYa, F_Z), 1301*0472e113SJosef 'Jeff' Sipek INSTR(0x17, "llgt", IF_RXYa, F_Z), 1302*0472e113SJosef 'Jeff' Sipek INSTR(0x18, "agf", IF_RXYa, F_Z), 1303*0472e113SJosef 'Jeff' Sipek INSTR(0x19, "sgf", IF_RXYa, F_Z), 1304*0472e113SJosef 'Jeff' Sipek INSTR(0x1a, "algf", IF_RXYa, F_Z), 1305*0472e113SJosef 'Jeff' Sipek INSTR(0x1b, "slgf", IF_RXYa, F_Z), 1306*0472e113SJosef 'Jeff' Sipek INSTR(0x1c, "msgf", IF_RXYa, F_Z), 1307*0472e113SJosef 'Jeff' Sipek INSTR(0x1d, "dsgf", IF_RXYa, F_Z), 1308*0472e113SJosef 'Jeff' Sipek INSTR(0x1e, "lrv", IF_RXYa, F_390 | F_Z), 1309*0472e113SJosef 'Jeff' Sipek INSTR(0x1f, "lrvh", IF_RXYa, F_390 | F_Z), 1310*0472e113SJosef 'Jeff' Sipek INSTR(0x20, "cg", IF_RXYa, F_Z), 1311*0472e113SJosef 'Jeff' Sipek INSTR(0x21, "clg", IF_RXYa, F_Z), 1312*0472e113SJosef 'Jeff' Sipek INSTR(0x24, "stg", IF_RXYa, F_Z), 1313*0472e113SJosef 'Jeff' Sipek INSTR(0x25, "ntstg", IF_RXYa, F_Z), 1314*0472e113SJosef 'Jeff' Sipek INSTR(0x26, "cvdy", IF_RXYa, F_Z), 1315*0472e113SJosef 'Jeff' Sipek INSTR(0x2e, "cvdg", IF_RXYa, F_Z), 1316*0472e113SJosef 'Jeff' Sipek INSTR(0x2f, "strvg", IF_RXYa, F_Z), 1317*0472e113SJosef 'Jeff' Sipek INSTR(0x30, "cgf", IF_RXYa, F_Z), 1318*0472e113SJosef 'Jeff' Sipek INSTR(0x31, "clgf", IF_RXYa, F_Z), 1319*0472e113SJosef 'Jeff' Sipek INSTR(0x32, "ltgf", IF_RXYa, F_Z), 1320*0472e113SJosef 'Jeff' Sipek INSTR(0x34, "cgh", IF_RXYa, F_Z), 1321*0472e113SJosef 'Jeff' Sipek INSTR(0x36, "pfd", IF_RXYb, F_Z), 1322*0472e113SJosef 'Jeff' Sipek INSTR(0x3e, "strv", IF_RXYa, F_390 | F_Z), 1323*0472e113SJosef 'Jeff' Sipek INSTR(0x3f, "strvh", IF_RXYa, F_390 | F_Z), 1324*0472e113SJosef 'Jeff' Sipek INSTR(0x46, "bctg", IF_RXYa, F_Z), 1325*0472e113SJosef 'Jeff' Sipek INSTR(0x50, "sty", IF_RXYa, F_Z), 1326*0472e113SJosef 'Jeff' Sipek INSTR(0x51, "msy", IF_RXYa, F_Z), 1327*0472e113SJosef 'Jeff' Sipek INSTR(0x54, "ny", IF_RXYa, F_Z), 1328*0472e113SJosef 'Jeff' Sipek INSTR(0x55, "cly", IF_RXYa, F_Z), 1329*0472e113SJosef 'Jeff' Sipek INSTR(0x56, "oy", IF_RXYa, F_Z), 1330*0472e113SJosef 'Jeff' Sipek INSTR(0x57, "xy", IF_RXYa, F_Z), 1331*0472e113SJosef 'Jeff' Sipek INSTR(0x58, "ly", IF_RXYa, F_Z), 1332*0472e113SJosef 'Jeff' Sipek INSTR(0x59, "cy", IF_RXYa, F_Z), 1333*0472e113SJosef 'Jeff' Sipek INSTR(0x5a, "ay", IF_RXYa, F_Z), 1334*0472e113SJosef 'Jeff' Sipek INSTR(0x5b, "sy", IF_RXYa, F_Z), 1335*0472e113SJosef 'Jeff' Sipek INSTR(0x5c, "mfy", IF_RXYa, F_Z), 1336*0472e113SJosef 'Jeff' Sipek INSTR(0x5e, "aly", IF_RXYa, F_Z), 1337*0472e113SJosef 'Jeff' Sipek INSTR(0x5f, "sly", IF_RXYa, F_Z), 1338*0472e113SJosef 'Jeff' Sipek INSTR(0x70, "sthy", IF_RXYa, F_Z), 1339*0472e113SJosef 'Jeff' Sipek INSTR(0x71, "lay", IF_RXYa, F_Z), 1340*0472e113SJosef 'Jeff' Sipek INSTR(0x72, "stcy", IF_RXYa, F_Z), 1341*0472e113SJosef 'Jeff' Sipek INSTR(0x73, "icy", IF_RXYa, F_Z), 1342*0472e113SJosef 'Jeff' Sipek INSTR(0x75, "laey", IF_RXYa, F_Z), 1343*0472e113SJosef 'Jeff' Sipek INSTR(0x76, "lb", IF_RXYa, F_Z), 1344*0472e113SJosef 'Jeff' Sipek INSTR(0x77, "lgb", IF_RXYa, F_Z), 1345*0472e113SJosef 'Jeff' Sipek INSTR(0x78, "lhy", IF_RXYa, F_Z), 1346*0472e113SJosef 'Jeff' Sipek INSTR(0x79, "chy", IF_RXYa, F_Z), 1347*0472e113SJosef 'Jeff' Sipek INSTR(0x7a, "ahy", IF_RXYa, F_Z), 1348*0472e113SJosef 'Jeff' Sipek INSTR(0x7b, "shy", IF_RXYa, F_Z), 1349*0472e113SJosef 'Jeff' Sipek INSTR(0x7c, "mhy", IF_RXYa, F_Z), 1350*0472e113SJosef 'Jeff' Sipek INSTR(0x80, "ng", IF_RXYa, F_Z), 1351*0472e113SJosef 'Jeff' Sipek INSTR(0x81, "og", IF_RXYa, F_Z), 1352*0472e113SJosef 'Jeff' Sipek INSTR(0x82, "xg", IF_RXYa, F_Z), 1353*0472e113SJosef 'Jeff' Sipek INSTR(0x85, "lgat", IF_RXYa, F_Z), 1354*0472e113SJosef 'Jeff' Sipek INSTR(0x86, "mlg", IF_RXYa, F_Z), 1355*0472e113SJosef 'Jeff' Sipek INSTR(0x87, "dlg", IF_RXYa, F_Z), 1356*0472e113SJosef 'Jeff' Sipek INSTR(0x88, "alcg", IF_RXYa, F_Z), 1357*0472e113SJosef 'Jeff' Sipek INSTR(0x89, "slbg", IF_RXYa, F_Z), 1358*0472e113SJosef 'Jeff' Sipek INSTR(0x8e, "stpq", IF_RXYa, F_Z), 1359*0472e113SJosef 'Jeff' Sipek INSTR(0x8f, "lpq", IF_RXYa, F_Z), 1360*0472e113SJosef 'Jeff' Sipek INSTR(0x90, "llgc", IF_RXYa, F_Z), 1361*0472e113SJosef 'Jeff' Sipek INSTR(0x91, "llgh", IF_RXYa, F_Z), 1362*0472e113SJosef 'Jeff' Sipek INSTR(0x94, "llc", IF_RXYa, F_Z), 1363*0472e113SJosef 'Jeff' Sipek INSTR(0x95, "llh", IF_RXYa, F_Z), 1364*0472e113SJosef 'Jeff' Sipek INSTR(0x96, "ml", IF_RXYa, F_390 | F_Z), 1365*0472e113SJosef 'Jeff' Sipek INSTR(0x97, "dl", IF_RXYa, F_390 | F_Z), 1366*0472e113SJosef 'Jeff' Sipek INSTR(0x98, "alc", IF_RXYa, F_390 | F_Z), 1367*0472e113SJosef 'Jeff' Sipek INSTR(0x99, "slb", IF_RXYa, F_390 | F_Z), 1368*0472e113SJosef 'Jeff' Sipek INSTR(0x9c, "llgtat", IF_RXYa, F_Z), 1369*0472e113SJosef 'Jeff' Sipek INSTR(0x9d, "llgfat", IF_RXYa, F_Z), 1370*0472e113SJosef 'Jeff' Sipek INSTR(0x9f, "lat", IF_RXYa, F_Z), 1371*0472e113SJosef 'Jeff' Sipek INSTR(0xc0, "lbh", IF_RXYa, F_Z), 1372*0472e113SJosef 'Jeff' Sipek INSTR(0xc2, "llch", IF_RXYa, F_Z), 1373*0472e113SJosef 'Jeff' Sipek INSTR(0xc3, "stch", IF_RXYa, F_Z), 1374*0472e113SJosef 'Jeff' Sipek INSTR(0xc4, "lhh", IF_RXYa, F_Z), 1375*0472e113SJosef 'Jeff' Sipek INSTR(0xc6, "llhh", IF_RXYa, F_Z), 1376*0472e113SJosef 'Jeff' Sipek INSTR(0xc7, "sthh", IF_RXYa, F_Z), 1377*0472e113SJosef 'Jeff' Sipek INSTR(0xc8, "lfhat", IF_RXYa, F_Z), 1378*0472e113SJosef 'Jeff' Sipek INSTR(0xca, "lfh", IF_RXYa, F_Z), 1379*0472e113SJosef 'Jeff' Sipek INSTR(0xcb, "stfh", IF_RXYa, F_Z), 1380*0472e113SJosef 'Jeff' Sipek INSTR(0xcd, "chf", IF_RXYa, F_Z), 1381*0472e113SJosef 'Jeff' Sipek INSTR(0xcf, "clhf", IF_RXYa, F_Z), 1382*0472e113SJosef 'Jeff' Sipek }; 1383*0472e113SJosef 'Jeff' Sipek 1384*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_e5xx[256] = { 1385*0472e113SJosef 'Jeff' Sipek INSTR(0x00, "lasp", IF_SSE, F_390 | F_Z), 1386*0472e113SJosef 'Jeff' Sipek INSTR(0x01, "tprot", IF_SSE, F_390 | F_Z), 1387*0472e113SJosef 'Jeff' Sipek INSTR(0x02, "strag", IF_SSE, F_Z), 1388*0472e113SJosef 'Jeff' Sipek INSTR(0x0e, "mvcsk", IF_SSE, F_390 | F_Z), 1389*0472e113SJosef 'Jeff' Sipek INSTR(0x0f, "mvcdk", IF_SSE, F_390 | F_Z), 1390*0472e113SJosef 'Jeff' Sipek INSTR(0x44, "mvhhi", IF_SIL, F_Z), 1391*0472e113SJosef 'Jeff' Sipek INSTR(0x48, "mvghi", IF_SIL, F_Z), 1392*0472e113SJosef 'Jeff' Sipek INSTR(0x4c, "mvhi", IF_SIL, F_Z), 1393*0472e113SJosef 'Jeff' Sipek INSTR(0x54, "chhsi", IF_SIL, F_Z), 1394*0472e113SJosef 'Jeff' Sipek INSTR(0x55, "clhhsi", IF_SIL, F_Z), 1395*0472e113SJosef 'Jeff' Sipek INSTR(0x58, "cghsi", IF_SIL, F_Z), 1396*0472e113SJosef 'Jeff' Sipek INSTR(0x59, "clghsi", IF_SIL, F_Z), 1397*0472e113SJosef 'Jeff' Sipek INSTR(0x5c, "chsi", IF_SIL, F_Z), 1398*0472e113SJosef 'Jeff' Sipek INSTR(0x5d, "clfhsi", IF_SIL, F_Z), 1399*0472e113SJosef 'Jeff' Sipek INSTR(0x60, "tbegin", IF_SIL, F_Z), 1400*0472e113SJosef 'Jeff' Sipek INSTR(0x61, "tbeginc", IF_SIL, F_Z), 1401*0472e113SJosef 'Jeff' Sipek }; 1402*0472e113SJosef 'Jeff' Sipek 1403*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_ebxx[256] = { 1404*0472e113SJosef 'Jeff' Sipek INSTR(0x04, "lmg", IF_RSYa, F_Z), 1405*0472e113SJosef 'Jeff' Sipek INSTR(0x0a, "srag", IF_RSYa, F_Z), 1406*0472e113SJosef 'Jeff' Sipek INSTR(0x0b, "slag", IF_RSYa, F_Z), 1407*0472e113SJosef 'Jeff' Sipek INSTR(0x0c, "srlg", IF_RSYa, F_Z), 1408*0472e113SJosef 'Jeff' Sipek INSTR(0x0d, "sllg", IF_RSYa, F_Z), 1409*0472e113SJosef 'Jeff' Sipek INSTR(0x0f, "tracg", IF_RSYa, F_Z), 1410*0472e113SJosef 'Jeff' Sipek INSTR(0x14, "csy", IF_RSYa, F_Z), 1411*0472e113SJosef 'Jeff' Sipek INSTR(0x1c, "rllg", IF_RSYa, F_Z), 1412*0472e113SJosef 'Jeff' Sipek INSTR(0x1d, "rll", IF_RSYa, F_390 | F_Z), 1413*0472e113SJosef 'Jeff' Sipek INSTR(0x20, "clmh", IF_RSYb, F_Z), 1414*0472e113SJosef 'Jeff' Sipek INSTR(0x21, "clmy", IF_RSYb, F_Z), 1415*0472e113SJosef 'Jeff' Sipek INSTR(0x23, "clt", IF_RSYb, F_Z), 1416*0472e113SJosef 'Jeff' Sipek INSTR(0x24, "stmg", IF_RSYa, F_Z), 1417*0472e113SJosef 'Jeff' Sipek INSTR(0x25, "stctg", IF_RSYa, F_Z | F_CTL_REG), 1418*0472e113SJosef 'Jeff' Sipek INSTR(0x26, "stmh", IF_RSYa, F_Z), 1419*0472e113SJosef 'Jeff' Sipek INSTR(0x2b, "clgt", IF_RSYb, F_Z), 1420*0472e113SJosef 'Jeff' Sipek INSTR(0x2c, "stcmh", IF_RSYb, F_Z), 1421*0472e113SJosef 'Jeff' Sipek INSTR(0x2d, "stcmy", IF_RSYb, F_Z), 1422*0472e113SJosef 'Jeff' Sipek INSTR(0x2f, "lctlg", IF_RSYa, F_Z | F_CTL_REG), 1423*0472e113SJosef 'Jeff' Sipek INSTR(0x30, "csg", IF_RSYa, F_Z), 1424*0472e113SJosef 'Jeff' Sipek INSTR(0x31, "cdsy", IF_RSYa, F_Z), 1425*0472e113SJosef 'Jeff' Sipek INSTR(0x3e, "cdsg", IF_RSYa, F_Z), 1426*0472e113SJosef 'Jeff' Sipek INSTR(0x44, "bxhg", IF_RSYa, F_Z), 1427*0472e113SJosef 'Jeff' Sipek INSTR(0x45, "bxleg", IF_RSYa, F_Z), 1428*0472e113SJosef 'Jeff' Sipek INSTR(0x4c, "ecag", IF_RSYa, F_Z), 1429*0472e113SJosef 'Jeff' Sipek INSTR(0x51, "tmy", IF_SIY, F_Z), 1430*0472e113SJosef 'Jeff' Sipek INSTR(0x52, "mviy", IF_SIY, F_Z), 1431*0472e113SJosef 'Jeff' Sipek INSTR(0x54, "niy", IF_SIY, F_Z), 1432*0472e113SJosef 'Jeff' Sipek INSTR(0x55, "cliy", IF_SIY, F_Z), 1433*0472e113SJosef 'Jeff' Sipek INSTR(0x56, "oiy", IF_SIY, F_Z), 1434*0472e113SJosef 'Jeff' Sipek INSTR(0x57, "xiy", IF_SIY, F_Z), 1435*0472e113SJosef 'Jeff' Sipek INSTR(0x6a, "asi", IF_SIY, F_Z), 1436*0472e113SJosef 'Jeff' Sipek INSTR(0x6e, "alsi", IF_SIY, F_Z), 1437*0472e113SJosef 'Jeff' Sipek INSTR(0x80, "icmh", IF_RSYb, F_Z), 1438*0472e113SJosef 'Jeff' Sipek INSTR(0x81, "icmy", IF_RSYb, F_Z), 1439*0472e113SJosef 'Jeff' Sipek INSTR(0x8e, "mvclu", IF_RSYa, F_390 | F_Z), 1440*0472e113SJosef 'Jeff' Sipek INSTR(0x8f, "clclu", IF_RSYa, F_390 | F_Z), 1441*0472e113SJosef 'Jeff' Sipek INSTR(0x90, "stmy", IF_RSYa, F_Z), 1442*0472e113SJosef 'Jeff' Sipek INSTR(0x96, "lmh", IF_RSYa, F_Z), 1443*0472e113SJosef 'Jeff' Sipek INSTR(0x98, "lmy", IF_RSYa, F_Z), 1444*0472e113SJosef 'Jeff' Sipek INSTR(0x9a, "lamy", IF_RSYa, F_Z), 1445*0472e113SJosef 'Jeff' Sipek INSTR(0x9b, "stamy", IF_RSYa, F_Z), 1446*0472e113SJosef 'Jeff' Sipek INSTR(0xc0, "tp", IF_RSLa, F_390 | F_Z), 1447*0472e113SJosef 'Jeff' Sipek INSTR(0xdc, "srak", IF_RSYa, F_Z), 1448*0472e113SJosef 'Jeff' Sipek INSTR(0xdd, "slak", IF_RSYa, F_Z), 1449*0472e113SJosef 'Jeff' Sipek INSTR(0xde, "srlk", IF_RSYa, F_Z), 1450*0472e113SJosef 'Jeff' Sipek INSTR(0xdf, "sllk", IF_RSYa, F_Z), 1451*0472e113SJosef 'Jeff' Sipek INSTR(0xe2, "locg", IF_RSYb, F_Z), 1452*0472e113SJosef 'Jeff' Sipek INSTR(0xe3, "stocg", IF_RSYb, F_Z), 1453*0472e113SJosef 'Jeff' Sipek INSTR(0xe4, "lang", IF_RSYa, F_Z), 1454*0472e113SJosef 'Jeff' Sipek INSTR(0xe6, "laog", IF_RSYa, F_Z), 1455*0472e113SJosef 'Jeff' Sipek INSTR(0xe7, "laxg", IF_RSYa, F_Z), 1456*0472e113SJosef 'Jeff' Sipek INSTR(0xe8, "laag", IF_RSYa, F_Z), 1457*0472e113SJosef 'Jeff' Sipek INSTR(0xea, "laalg", IF_RSYa, F_Z), 1458*0472e113SJosef 'Jeff' Sipek INSTR(0xf2, "loc", IF_RSYb, F_Z), 1459*0472e113SJosef 'Jeff' Sipek INSTR(0xf3, "stoc", IF_RSYb, F_Z), 1460*0472e113SJosef 'Jeff' Sipek INSTR(0xf4, "lan", IF_RSYa, F_Z), 1461*0472e113SJosef 'Jeff' Sipek INSTR(0xf6, "lao", IF_RSYa, F_Z), 1462*0472e113SJosef 'Jeff' Sipek INSTR(0xf7, "lax", IF_RSYa, F_Z), 1463*0472e113SJosef 'Jeff' Sipek INSTR(0xf8, "laa", IF_RSYa, F_Z), 1464*0472e113SJosef 'Jeff' Sipek INSTR(0xfa, "laal", IF_RSYa, F_Z), 1465*0472e113SJosef 'Jeff' Sipek }; 1466*0472e113SJosef 'Jeff' Sipek 1467*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_ecxx[256] = { 1468*0472e113SJosef 'Jeff' Sipek INSTR(0x44, "brxhg", IF_RIEe, F_Z), 1469*0472e113SJosef 'Jeff' Sipek INSTR(0x45, "brxlg", IF_RIEe, F_Z), 1470*0472e113SJosef 'Jeff' Sipek INSTR(0x51, "risblg", IF_RIEf, F_Z), 1471*0472e113SJosef 'Jeff' Sipek INSTR(0x54, "rnsbg", IF_RIEf, F_Z), 1472*0472e113SJosef 'Jeff' Sipek INSTR(0x55, "risbg", IF_RIEf, F_Z), 1473*0472e113SJosef 'Jeff' Sipek INSTR(0x56, "rosbg", IF_RIEf, F_Z), 1474*0472e113SJosef 'Jeff' Sipek INSTR(0x57, "rxsbg", IF_RIEf, F_Z), 1475*0472e113SJosef 'Jeff' Sipek INSTR(0x59, "risbgn", IF_RIEf, F_Z), 1476*0472e113SJosef 'Jeff' Sipek INSTR(0x5d, "risbhg", IF_RIEf, F_Z), 1477*0472e113SJosef 'Jeff' Sipek INSTR(0x64, "cgrj", IF_RIEb, F_Z), 1478*0472e113SJosef 'Jeff' Sipek INSTR(0x65, "clgrj", IF_RIEb, F_Z), 1479*0472e113SJosef 'Jeff' Sipek INSTR(0x70, "cgit", IF_RIEa, F_Z), 1480*0472e113SJosef 'Jeff' Sipek INSTR(0x71, "clgit", IF_RIEa, F_Z), 1481*0472e113SJosef 'Jeff' Sipek INSTR(0x72, "cit", IF_RIEa, F_Z), 1482*0472e113SJosef 'Jeff' Sipek INSTR(0x73, "clfit", IF_RIEa, F_Z), 1483*0472e113SJosef 'Jeff' Sipek INSTR(0x76, "crj", IF_RIEb, F_Z), 1484*0472e113SJosef 'Jeff' Sipek INSTR(0x77, "clrj", IF_RIEb, F_Z), 1485*0472e113SJosef 'Jeff' Sipek INSTR(0x7c, "cgij", IF_RIEc, F_Z), 1486*0472e113SJosef 'Jeff' Sipek INSTR(0x7d, "clgij", IF_RIEc, F_Z), 1487*0472e113SJosef 'Jeff' Sipek INSTR(0x7e, "cij", IF_RIEc, F_Z), 1488*0472e113SJosef 'Jeff' Sipek INSTR(0x7f, "clij", IF_RIEc, F_Z), 1489*0472e113SJosef 'Jeff' Sipek INSTR(0xd8, "ahik", IF_RIEd, F_Z), 1490*0472e113SJosef 'Jeff' Sipek INSTR(0xd9, "aghik", IF_RIEd, F_Z), 1491*0472e113SJosef 'Jeff' Sipek INSTR(0xda, "alhsik", IF_RIEd, F_Z), 1492*0472e113SJosef 'Jeff' Sipek INSTR(0xdb, "alghsik", IF_RIEd, F_Z), 1493*0472e113SJosef 'Jeff' Sipek INSTR(0xe4, "cgrb", IF_RRS, F_Z), 1494*0472e113SJosef 'Jeff' Sipek INSTR(0xe5, "clgrb", IF_RRS, F_Z), 1495*0472e113SJosef 'Jeff' Sipek INSTR(0xf6, "crb", IF_RRS, F_Z), 1496*0472e113SJosef 'Jeff' Sipek INSTR(0xf7, "clrb", IF_RRS, F_Z), 1497*0472e113SJosef 'Jeff' Sipek INSTR(0xfc, "cgib", IF_RIS, F_Z), 1498*0472e113SJosef 'Jeff' Sipek INSTR(0xfd, "clgib", IF_RIS, F_Z), 1499*0472e113SJosef 'Jeff' Sipek INSTR(0xfe, "cib", IF_RIS, F_Z), 1500*0472e113SJosef 'Jeff' Sipek INSTR(0xff, "clib", IF_RIS, F_Z), 1501*0472e113SJosef 'Jeff' Sipek }; 1502*0472e113SJosef 'Jeff' Sipek 1503*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_edxx[256] = { 1504*0472e113SJosef 'Jeff' Sipek INSTR(0x04, "ldeb", IF_RXE, F_390 | F_Z), 1505*0472e113SJosef 'Jeff' Sipek INSTR(0x05, "lxdb", IF_RXE, F_390 | F_Z), 1506*0472e113SJosef 'Jeff' Sipek INSTR(0x06, "lxeb", IF_RXE, F_390 | F_Z), 1507*0472e113SJosef 'Jeff' Sipek INSTR(0x07, "mxdb", IF_RXE, F_390 | F_Z), 1508*0472e113SJosef 'Jeff' Sipek INSTR(0x08, "keb", IF_RXE, F_390 | F_Z), 1509*0472e113SJosef 'Jeff' Sipek INSTR(0x09, "ceb", IF_RXE, F_390 | F_Z), 1510*0472e113SJosef 'Jeff' Sipek INSTR(0x0a, "aeb", IF_RXE, F_390 | F_Z), 1511*0472e113SJosef 'Jeff' Sipek INSTR(0x0b, "seb", IF_RXE, F_390 | F_Z), 1512*0472e113SJosef 'Jeff' Sipek INSTR(0x0c, "mdeb", IF_RXE, F_390 | F_Z), 1513*0472e113SJosef 'Jeff' Sipek INSTR(0x0d, "deb", IF_RXE, F_390 | F_Z), 1514*0472e113SJosef 'Jeff' Sipek INSTR(0x0e, "maeb", IF_RXF, F_390 | F_Z), 1515*0472e113SJosef 'Jeff' Sipek INSTR(0x0f, "mseb", IF_RXF, F_390 | F_Z), 1516*0472e113SJosef 'Jeff' Sipek INSTR(0x10, "tceb", IF_RXE, F_390 | F_Z), 1517*0472e113SJosef 'Jeff' Sipek INSTR(0x11, "tcdb", IF_RXE, F_390 | F_Z), 1518*0472e113SJosef 'Jeff' Sipek INSTR(0x12, "tcxb", IF_RXE, F_390 | F_Z), 1519*0472e113SJosef 'Jeff' Sipek INSTR(0x14, "sqeb", IF_RXE, F_390 | F_Z), 1520*0472e113SJosef 'Jeff' Sipek INSTR(0x15, "sqdb", IF_RXE, F_390 | F_Z), 1521*0472e113SJosef 'Jeff' Sipek INSTR(0x17, "meeb", IF_RXE, F_390 | F_Z), 1522*0472e113SJosef 'Jeff' Sipek INSTR(0x18, "kdb", IF_RXE, F_390 | F_Z), 1523*0472e113SJosef 'Jeff' Sipek INSTR(0x19, "cdb", IF_RXE, F_390 | F_Z), 1524*0472e113SJosef 'Jeff' Sipek INSTR(0x1a, "adb", IF_RXE, F_390 | F_Z), 1525*0472e113SJosef 'Jeff' Sipek INSTR(0x1b, "sdb", IF_RXE, F_390 | F_Z), 1526*0472e113SJosef 'Jeff' Sipek INSTR(0x1c, "mdb", IF_RXE, F_390 | F_Z), 1527*0472e113SJosef 'Jeff' Sipek INSTR(0x1d, "ddb", IF_RXE, F_390 | F_Z), 1528*0472e113SJosef 'Jeff' Sipek INSTR(0x1e, "madb", IF_RXF, F_390 | F_Z), 1529*0472e113SJosef 'Jeff' Sipek INSTR(0x1f, "msdb", IF_RXF, F_390 | F_Z), 1530*0472e113SJosef 'Jeff' Sipek INSTR(0x24, "lde", IF_RXE, F_390 | F_Z), 1531*0472e113SJosef 'Jeff' Sipek INSTR(0x25, "lxd", IF_RXE, F_390 | F_Z), 1532*0472e113SJosef 'Jeff' Sipek INSTR(0x26, "lxe", IF_RXE, F_390 | F_Z), 1533*0472e113SJosef 'Jeff' Sipek INSTR(0x2e, "mae", IF_RXF, F_390 | F_Z), 1534*0472e113SJosef 'Jeff' Sipek INSTR(0x2f, "mse", IF_RXF, F_390 | F_Z), 1535*0472e113SJosef 'Jeff' Sipek INSTR(0x34, "sqe", IF_RXE, F_390 | F_Z), 1536*0472e113SJosef 'Jeff' Sipek INSTR(0x35, "sqd", IF_RXE, F_390 | F_Z), 1537*0472e113SJosef 'Jeff' Sipek INSTR(0x37, "mee", IF_RXE, F_390 | F_Z), 1538*0472e113SJosef 'Jeff' Sipek INSTR(0x38, "mayl", IF_RXF, F_Z), 1539*0472e113SJosef 'Jeff' Sipek INSTR(0x39, "myl", IF_RXF, F_Z), 1540*0472e113SJosef 'Jeff' Sipek INSTR(0x3a, "may", IF_RXF, F_Z), 1541*0472e113SJosef 'Jeff' Sipek INSTR(0x3b, "my", IF_RXF, F_Z), 1542*0472e113SJosef 'Jeff' Sipek INSTR(0x3c, "mayh", IF_RXF, F_Z), 1543*0472e113SJosef 'Jeff' Sipek INSTR(0x3d, "myh", IF_RXF, F_Z), 1544*0472e113SJosef 'Jeff' Sipek INSTR(0x3e, "mad", IF_RXF, F_390 | F_Z), 1545*0472e113SJosef 'Jeff' Sipek INSTR(0x3f, "msd", IF_RXF, F_390 | F_Z), 1546*0472e113SJosef 'Jeff' Sipek INSTR(0x40, "sldt", IF_RXF, F_Z), 1547*0472e113SJosef 'Jeff' Sipek INSTR(0x41, "srdt", IF_RXF, F_Z), 1548*0472e113SJosef 'Jeff' Sipek INSTR(0x48, "slxt", IF_RXF, F_Z), 1549*0472e113SJosef 'Jeff' Sipek INSTR(0x49, "srxt", IF_RXF, F_Z), 1550*0472e113SJosef 'Jeff' Sipek INSTR(0x50, "tdcet", IF_RXE, F_Z), 1551*0472e113SJosef 'Jeff' Sipek INSTR(0x51, "tdget", IF_RXE, F_Z), 1552*0472e113SJosef 'Jeff' Sipek INSTR(0x54, "tdcdt", IF_RXE, F_Z), 1553*0472e113SJosef 'Jeff' Sipek INSTR(0x55, "tdgdt", IF_RXE, F_Z), 1554*0472e113SJosef 'Jeff' Sipek INSTR(0x58, "tdcxt", IF_RXE, F_Z), 1555*0472e113SJosef 'Jeff' Sipek INSTR(0x59, "tdgxt", IF_RXE, F_Z), 1556*0472e113SJosef 'Jeff' Sipek INSTR(0x64, "ley", IF_RXYa, F_Z), 1557*0472e113SJosef 'Jeff' Sipek INSTR(0x65, "ldy", IF_RXYa, F_Z), 1558*0472e113SJosef 'Jeff' Sipek INSTR(0x66, "stey", IF_RXYa, F_Z), 1559*0472e113SJosef 'Jeff' Sipek INSTR(0x67, "stdy", IF_RXYa, F_Z), 1560*0472e113SJosef 'Jeff' Sipek INSTR(0xa8, "czdt", IF_RSLb, F_Z), 1561*0472e113SJosef 'Jeff' Sipek INSTR(0xa9, "czxt", IF_RSLb, F_Z), 1562*0472e113SJosef 'Jeff' Sipek INSTR(0xaa, "cdzt", IF_RSLb, F_Z), 1563*0472e113SJosef 'Jeff' Sipek INSTR(0xab, "cxzt", IF_RSLb, F_Z), 1564*0472e113SJosef 'Jeff' Sipek }; 1565*0472e113SJosef 'Jeff' Sipek 1566*0472e113SJosef 'Jeff' Sipek static const struct inst_table tbl_xx[256] = { 1567*0472e113SJosef 'Jeff' Sipek INSTR(0x00, ".byte", IF_ZERO, F_370 | F_390 | F_Z), 1568*0472e113SJosef 'Jeff' Sipek TABLE(0x01, tbl_01xx, 1, 0, 0xff), 1569*0472e113SJosef 'Jeff' Sipek INSTR(0x04, "spm", IF_RR, F_370 | F_Z), 1570*0472e113SJosef 'Jeff' Sipek INSTR(0x05, "balr", IF_RR, F_370 | F_Z), 1571*0472e113SJosef 'Jeff' Sipek INSTR(0x06, "bctr", IF_RR, F_370 | F_Z), 1572*0472e113SJosef 'Jeff' Sipek TABLE(0x07, tbl_07, 1, 4, 0x0f), 1573*0472e113SJosef 'Jeff' Sipek INSTR(0x08, "ssk", IF_RR, F_370), 1574*0472e113SJosef 'Jeff' Sipek INSTR(0x09, "isk", IF_RR, F_370), 1575*0472e113SJosef 'Jeff' Sipek INSTR(0x0a, "svc", IF_I, F_370 | F_390 | F_Z), 1576*0472e113SJosef 'Jeff' Sipek INSTR(0x0b, "bsm", IF_RR, F_390 | F_Z), 1577*0472e113SJosef 'Jeff' Sipek INSTR(0x0c, "bassm", IF_RR, F_390 | F_Z), 1578*0472e113SJosef 'Jeff' Sipek INSTR(0x0d, "basr", IF_RR, F_390 | F_Z), 1579*0472e113SJosef 'Jeff' Sipek INSTR(0x0e, "mvcl", IF_RR, F_370 | F_390 | F_Z), 1580*0472e113SJosef 'Jeff' Sipek INSTR(0x0f, "clcl", IF_RR, F_370 | F_390 | F_Z), 1581*0472e113SJosef 'Jeff' Sipek INSTR(0x10, "lpr", IF_RR, F_370 | F_390 | F_Z), 1582*0472e113SJosef 'Jeff' Sipek INSTR(0x11, "lnr", IF_RR, F_370 | F_390 | F_Z), 1583*0472e113SJosef 'Jeff' Sipek INSTR(0x12, "ltr", IF_RR, F_370 | F_390 | F_Z), 1584*0472e113SJosef 'Jeff' Sipek INSTR(0x13, "lcr", IF_RR, F_370 | F_390 | F_Z), 1585*0472e113SJosef 'Jeff' Sipek INSTR(0x14, "nr", IF_RR, F_370 | F_390 | F_Z), 1586*0472e113SJosef 'Jeff' Sipek INSTR(0x15, "clr", IF_RR, F_370 | F_390 | F_Z), 1587*0472e113SJosef 'Jeff' Sipek INSTR(0x16, "or", IF_RR, F_370 | F_390 | F_Z), 1588*0472e113SJosef 'Jeff' Sipek INSTR(0x17, "xr", IF_RR, F_370 | F_390 | F_Z), 1589*0472e113SJosef 'Jeff' Sipek INSTR(0x18, "lr", IF_RR, F_370 | F_390 | F_Z), 1590*0472e113SJosef 'Jeff' Sipek INSTR(0x19, "cr", IF_RR, F_370 | F_390 | F_Z), 1591*0472e113SJosef 'Jeff' Sipek INSTR(0x1a, "ar", IF_RR, F_370 | F_390 | F_Z), 1592*0472e113SJosef 'Jeff' Sipek INSTR(0x1b, "sr", IF_RR, F_370 | F_390 | F_Z), 1593*0472e113SJosef 'Jeff' Sipek INSTR(0x1c, "mr", IF_RR, F_370 | F_390 | F_Z), 1594*0472e113SJosef 'Jeff' Sipek INSTR(0x1d, "dr", IF_RR, F_370 | F_390 | F_Z), 1595*0472e113SJosef 'Jeff' Sipek INSTR(0x1e, "alr", IF_RR, F_370 | F_390 | F_Z), 1596*0472e113SJosef 'Jeff' Sipek INSTR(0x1f, "slr", IF_RR, F_370 | F_390 | F_Z), 1597*0472e113SJosef 'Jeff' Sipek INSTR(0x20, "lpdr", IF_RR, F_370 | F_390 | F_Z), 1598*0472e113SJosef 'Jeff' Sipek INSTR(0x21, "lndr", IF_RR, F_370 | F_390 | F_Z), 1599*0472e113SJosef 'Jeff' Sipek INSTR(0x22, "ltdr", IF_RR, F_370 | F_390 | F_Z), 1600*0472e113SJosef 'Jeff' Sipek INSTR(0x23, "lcdr", IF_RR, F_370 | F_390 | F_Z), 1601*0472e113SJosef 'Jeff' Sipek INSTR(0x24, "hdr", IF_RR, F_370 | F_390 | F_Z), 1602*0472e113SJosef 'Jeff' Sipek MULTI(0x25, tbl_25), 1603*0472e113SJosef 'Jeff' Sipek INSTR(0x26, "mxr", IF_RR, F_370 | F_390 | F_Z), 1604*0472e113SJosef 'Jeff' Sipek INSTR(0x27, "mxdr", IF_RR, F_370 | F_390 | F_Z), 1605*0472e113SJosef 'Jeff' Sipek INSTR(0x28, "ldr", IF_RR, F_370 | F_390 | F_Z), 1606*0472e113SJosef 'Jeff' Sipek INSTR(0x29, "cdr", IF_RR, F_370 | F_390 | F_Z), 1607*0472e113SJosef 'Jeff' Sipek INSTR(0x2a, "adr", IF_RR, F_370 | F_390 | F_Z), 1608*0472e113SJosef 'Jeff' Sipek INSTR(0x2b, "sdr", IF_RR, F_370 | F_390 | F_Z), 1609*0472e113SJosef 'Jeff' Sipek INSTR(0x2c, "mdr", IF_RR, F_370 | F_390 | F_Z), 1610*0472e113SJosef 'Jeff' Sipek INSTR(0x2d, "ddr", IF_RR, F_370 | F_390 | F_Z), 1611*0472e113SJosef 'Jeff' Sipek INSTR(0x2e, "awr", IF_RR, F_370 | F_390 | F_Z), 1612*0472e113SJosef 'Jeff' Sipek INSTR(0x2f, "swr", IF_RR, F_370 | F_390 | F_Z), 1613*0472e113SJosef 'Jeff' Sipek INSTR(0x30, "lper", IF_RR, F_370 | F_390 | F_Z), 1614*0472e113SJosef 'Jeff' Sipek INSTR(0x31, "lner", IF_RR, F_370 | F_390 | F_Z), 1615*0472e113SJosef 'Jeff' Sipek INSTR(0x32, "lter", IF_RR, F_370 | F_390 | F_Z), 1616*0472e113SJosef 'Jeff' Sipek INSTR(0x33, "lcer", IF_RR, F_370 | F_390 | F_Z), 1617*0472e113SJosef 'Jeff' Sipek INSTR(0x34, "her", IF_RR, F_370 | F_390 | F_Z), 1618*0472e113SJosef 'Jeff' Sipek MULTI(0x35, tbl_35), 1619*0472e113SJosef 'Jeff' Sipek INSTR(0x36, "axr", IF_RR, F_370 | F_390 | F_Z), 1620*0472e113SJosef 'Jeff' Sipek INSTR(0x37, "sxr", IF_RR, F_370 | F_390 | F_Z), 1621*0472e113SJosef 'Jeff' Sipek INSTR(0x38, "ler", IF_RR, F_370 | F_390 | F_Z), 1622*0472e113SJosef 'Jeff' Sipek INSTR(0x39, "cer", IF_RR, F_370 | F_390 | F_Z), 1623*0472e113SJosef 'Jeff' Sipek INSTR(0x3a, "aer", IF_RR, F_370 | F_390 | F_Z), 1624*0472e113SJosef 'Jeff' Sipek INSTR(0x3b, "ser", IF_RR, F_370 | F_390 | F_Z), 1625*0472e113SJosef 'Jeff' Sipek MULTI(0x3c, tbl_3c), 1626*0472e113SJosef 'Jeff' Sipek INSTR(0x3d, "der", IF_RR, F_370 | F_390 | F_Z), 1627*0472e113SJosef 'Jeff' Sipek INSTR(0x3e, "aur", IF_RR, F_370 | F_390 | F_Z), 1628*0472e113SJosef 'Jeff' Sipek INSTR(0x3f, "sur", IF_RR, F_370 | F_390 | F_Z), 1629*0472e113SJosef 'Jeff' Sipek INSTR(0x40, "sth", IF_RXa, F_370 | F_390 | F_Z), 1630*0472e113SJosef 'Jeff' Sipek INSTR(0x41, "la", IF_RXa, F_370 | F_390 | F_Z), 1631*0472e113SJosef 'Jeff' Sipek INSTR(0x42, "stc", IF_RXa, F_370 | F_390 | F_Z), 1632*0472e113SJosef 'Jeff' Sipek INSTR(0x43, "ic", IF_RXa, F_370 | F_390 | F_Z), 1633*0472e113SJosef 'Jeff' Sipek INSTR(0x44, "ex", IF_RXa, F_370 | F_390 | F_Z), 1634*0472e113SJosef 'Jeff' Sipek INSTR(0x45, "bal", IF_RXa, F_370 | F_390 | F_Z), 1635*0472e113SJosef 'Jeff' Sipek INSTR(0x46, "bct", IF_RXa, F_370 | F_390 | F_Z), 1636*0472e113SJosef 'Jeff' Sipek TABLE(0x47, tbl_47, 1, 4, 0x0f), 1637*0472e113SJosef 'Jeff' Sipek INSTR(0x48, "lh", IF_RXa, F_370 | F_390 | F_Z), 1638*0472e113SJosef 'Jeff' Sipek INSTR(0x49, "ch", IF_RXa, F_370 | F_390 | F_Z), 1639*0472e113SJosef 'Jeff' Sipek INSTR(0x4a, "ah", IF_RXa, F_370 | F_390 | F_Z), 1640*0472e113SJosef 'Jeff' Sipek INSTR(0x4b, "sh", IF_RXa, F_370 | F_390 | F_Z), 1641*0472e113SJosef 'Jeff' Sipek INSTR(0x4c, "mh", IF_RXa, F_370 | F_390 | F_Z), 1642*0472e113SJosef 'Jeff' Sipek INSTR(0x4d, "bas", IF_RXa, F_390 | F_Z), 1643*0472e113SJosef 'Jeff' Sipek INSTR(0x4e, "cvd", IF_RXa, F_370 | F_390 | F_Z), 1644*0472e113SJosef 'Jeff' Sipek INSTR(0x4f, "cvb", IF_RXa, F_370 | F_390 | F_Z), 1645*0472e113SJosef 'Jeff' Sipek INSTR(0x50, "st", IF_RXa, F_370 | F_390 | F_Z), 1646*0472e113SJosef 'Jeff' Sipek INSTR(0x51, "lae", IF_RXa, F_390 | F_Z), 1647*0472e113SJosef 'Jeff' Sipek INSTR(0x54, "n", IF_RXa, F_370 | F_390 | F_Z), 1648*0472e113SJosef 'Jeff' Sipek INSTR(0x55, "cl", IF_RXa, F_370 | F_390 | F_Z), 1649*0472e113SJosef 'Jeff' Sipek INSTR(0x56, "o", IF_RXa, F_370 | F_390 | F_Z), 1650*0472e113SJosef 'Jeff' Sipek INSTR(0x57, "x", IF_RXa, F_370 | F_390 | F_Z), 1651*0472e113SJosef 'Jeff' Sipek INSTR(0x58, "l", IF_RXa, F_370 | F_390 | F_Z), 1652*0472e113SJosef 'Jeff' Sipek INSTR(0x59, "c", IF_RXa, F_370 | F_390 | F_Z), 1653*0472e113SJosef 'Jeff' Sipek INSTR(0x5a, "a", IF_RXa, F_370 | F_390 | F_Z), 1654*0472e113SJosef 'Jeff' Sipek INSTR(0x5b, "s", IF_RXa, F_370 | F_390 | F_Z), 1655*0472e113SJosef 'Jeff' Sipek INSTR(0x5c, "m", IF_RXa, F_370 | F_390 | F_Z), 1656*0472e113SJosef 'Jeff' Sipek INSTR(0x5d, "d", IF_RXa, F_370 | F_390 | F_Z), 1657*0472e113SJosef 'Jeff' Sipek INSTR(0x5e, "al", IF_RXa, F_370 | F_390 | F_Z), 1658*0472e113SJosef 'Jeff' Sipek INSTR(0x5f, "sl", IF_RXa, F_370 | F_390 | F_Z), 1659*0472e113SJosef 'Jeff' Sipek INSTR(0x60, "std", IF_RXa, F_370 | F_390 | F_Z), 1660*0472e113SJosef 'Jeff' Sipek INSTR(0x67, "mxd", IF_RXa, F_370 | F_390 | F_Z), 1661*0472e113SJosef 'Jeff' Sipek INSTR(0x68, "ld", IF_RXa, F_370 | F_390 | F_Z), 1662*0472e113SJosef 'Jeff' Sipek INSTR(0x69, "cd", IF_RXa, F_370 | F_390 | F_Z), 1663*0472e113SJosef 'Jeff' Sipek INSTR(0x6a, "ad", IF_RXa, F_370 | F_390 | F_Z), 1664*0472e113SJosef 'Jeff' Sipek INSTR(0x6b, "sd", IF_RXa, F_370 | F_390 | F_Z), 1665*0472e113SJosef 'Jeff' Sipek INSTR(0x6c, "md", IF_RXa, F_370 | F_390 | F_Z), 1666*0472e113SJosef 'Jeff' Sipek INSTR(0x6d, "dd", IF_RXa, F_370 | F_390 | F_Z), 1667*0472e113SJosef 'Jeff' Sipek INSTR(0x6e, "aw", IF_RXa, F_370 | F_390 | F_Z), 1668*0472e113SJosef 'Jeff' Sipek INSTR(0x6f, "sw", IF_RXa, F_370 | F_390 | F_Z), 1669*0472e113SJosef 'Jeff' Sipek INSTR(0x70, "ste", IF_RXa, F_370 | F_390 | F_Z), 1670*0472e113SJosef 'Jeff' Sipek INSTR(0x71, "ms", IF_RXa, F_390 | F_Z), 1671*0472e113SJosef 'Jeff' Sipek INSTR(0x78, "le", IF_RXa, F_370 | F_390 | F_Z), 1672*0472e113SJosef 'Jeff' Sipek INSTR(0x79, "ce", IF_RXa, F_370 | F_390 | F_Z), 1673*0472e113SJosef 'Jeff' Sipek INSTR(0x7a, "ae", IF_RXa, F_370 | F_390 | F_Z), 1674*0472e113SJosef 'Jeff' Sipek INSTR(0x7b, "se", IF_RXa, F_370 | F_390 | F_Z), 1675*0472e113SJosef 'Jeff' Sipek MULTI(0x7c, tbl_7c), 1676*0472e113SJosef 'Jeff' Sipek INSTR(0x7d, "de", IF_RXa, F_370 | F_390 | F_Z), 1677*0472e113SJosef 'Jeff' Sipek INSTR(0x7e, "au", IF_RXa, F_370 | F_390 | F_Z), 1678*0472e113SJosef 'Jeff' Sipek INSTR(0x7f, "su", IF_RXa, F_370 | F_390 | F_Z), 1679*0472e113SJosef 'Jeff' Sipek INSTR(0x80, "ssm", IF_S, F_370 | F_390 | F_Z), 1680*0472e113SJosef 'Jeff' Sipek INSTR(0x82, "lpsw", IF_S, F_370 | F_390 | F_Z), 1681*0472e113SJosef 'Jeff' Sipek INSTR(0x83, "diag", IF_DIAG, F_370 | F_390 | F_Z), 1682*0472e113SJosef 'Jeff' Sipek MULTI(0x84, tbl_84), 1683*0472e113SJosef 'Jeff' Sipek MULTI(0x85, tbl_85), 1684*0472e113SJosef 'Jeff' Sipek INSTR(0x86, "bxh", IF_RSa, F_370 | F_390 | F_Z), 1685*0472e113SJosef 'Jeff' Sipek INSTR(0x87, "bxle", IF_RSa, F_370 | F_390 | F_Z), 1686*0472e113SJosef 'Jeff' Sipek INSTR(0x88, "srl", IF_RSa, F_370 | F_390 | F_Z), 1687*0472e113SJosef 'Jeff' Sipek INSTR(0x89, "sll", IF_RSa, F_370 | F_390 | F_Z), 1688*0472e113SJosef 'Jeff' Sipek INSTR(0x8a, "sra", IF_RSa, F_370 | F_390 | F_Z), 1689*0472e113SJosef 'Jeff' Sipek INSTR(0x8b, "sla", IF_RSa, F_370 | F_390 | F_Z), 1690*0472e113SJosef 'Jeff' Sipek INSTR(0x8c, "srdl", IF_RSa, F_370 | F_390 | F_Z), 1691*0472e113SJosef 'Jeff' Sipek INSTR(0x8d, "sldl", IF_RSa, F_370 | F_390 | F_Z), 1692*0472e113SJosef 'Jeff' Sipek INSTR(0x8e, "srda", IF_RSa, F_370 | F_390 | F_Z), 1693*0472e113SJosef 'Jeff' Sipek INSTR(0x8f, "slda", IF_RSa, F_370 | F_390 | F_Z), 1694*0472e113SJosef 'Jeff' Sipek INSTR(0x90, "stm", IF_RSa, F_370 | F_390 | F_Z), 1695*0472e113SJosef 'Jeff' Sipek INSTR(0x91, "tm", IF_SI, F_370 | F_390 | F_Z), 1696*0472e113SJosef 'Jeff' Sipek INSTR(0x92, "mvi", IF_SI, F_370 | F_390 | F_Z), 1697*0472e113SJosef 'Jeff' Sipek INSTR(0x93, "ts", IF_S, F_370 | F_390 | F_Z), 1698*0472e113SJosef 'Jeff' Sipek INSTR(0x94, "ni", IF_SI, F_370 | F_390 | F_Z), 1699*0472e113SJosef 'Jeff' Sipek INSTR(0x95, "cli", IF_SI, F_370 | F_390 | F_Z), 1700*0472e113SJosef 'Jeff' Sipek INSTR(0x96, "oi", IF_SI, F_370 | F_390 | F_Z), 1701*0472e113SJosef 'Jeff' Sipek INSTR(0x97, "xi", IF_SI, F_370 | F_390 | F_Z), 1702*0472e113SJosef 'Jeff' Sipek INSTR(0x98, "lm", IF_RSa, F_370 | F_390 | F_Z), 1703*0472e113SJosef 'Jeff' Sipek INSTR(0x99, "trace", IF_RSa, F_390 | F_Z), 1704*0472e113SJosef 'Jeff' Sipek INSTR(0x9a, "lam", IF_RSa, F_390 | F_Z), 1705*0472e113SJosef 'Jeff' Sipek INSTR(0x9b, "stam", IF_RSa, F_390 | F_Z), 1706*0472e113SJosef 'Jeff' Sipek TABLE(0xa5, tbl_a5x, 1, 0, 0x0f), 1707*0472e113SJosef 'Jeff' Sipek TABLE(0xa7, tbl_a7x, 1, 0, 0x0f), 1708*0472e113SJosef 'Jeff' Sipek INSTR(0xa8, "mvcle", IF_RSa, F_390 | F_Z), 1709*0472e113SJosef 'Jeff' Sipek INSTR(0xa9, "clcle", IF_RSa, F_390 | F_Z), 1710*0472e113SJosef 'Jeff' Sipek INSTR(0xac, "stnsm", IF_SI, F_370 | F_390 | F_Z), 1711*0472e113SJosef 'Jeff' Sipek INSTR(0xad, "stosm", IF_SI, F_370 | F_390 | F_Z), 1712*0472e113SJosef 'Jeff' Sipek INSTR(0xae, "sigp", IF_RSa, F_370 | F_390 | F_Z), 1713*0472e113SJosef 'Jeff' Sipek INSTR(0xaf, "mc", IF_SI, F_370 | F_390 | F_Z), 1714*0472e113SJosef 'Jeff' Sipek INSTR(0xb1, "lra", IF_RXa, F_370 | F_390 | F_Z), 1715*0472e113SJosef 'Jeff' Sipek TABLE(0xb2, tbl_b2xx, 1, 0, 0xff), 1716*0472e113SJosef 'Jeff' Sipek TABLE(0xb3, tbl_b3xx, 1, 0, 0xff), 1717*0472e113SJosef 'Jeff' Sipek INSTR(0xb6, "stctl", IF_RSa, F_370 | F_390 | F_Z | F_CTL_REG), 1718*0472e113SJosef 'Jeff' Sipek INSTR(0xb7, "lctl", IF_RSa, F_370 | F_390 | F_Z | F_CTL_REG), 1719*0472e113SJosef 'Jeff' Sipek TABLE(0xb9, tbl_b9xx, 1, 0, 0xff), 1720*0472e113SJosef 'Jeff' Sipek INSTR(0xba, "cs", IF_RSa, F_370 | F_390 | F_Z), 1721*0472e113SJosef 'Jeff' Sipek INSTR(0xbb, "cds", IF_RSa, F_370 | F_390 | F_Z), 1722*0472e113SJosef 'Jeff' Sipek INSTR(0xbd, "clm", IF_RSb, F_370 | F_390 | F_Z), 1723*0472e113SJosef 'Jeff' Sipek INSTR(0xbe, "stcm", IF_RSb, F_370 | F_390 | F_Z), 1724*0472e113SJosef 'Jeff' Sipek INSTR(0xbf, "icm", IF_RSb, F_370 | F_390 | F_Z), 1725*0472e113SJosef 'Jeff' Sipek TABLE(0xc0, tbl_c0x, 1, 0, 0x0f), 1726*0472e113SJosef 'Jeff' Sipek TABLE(0xc2, tbl_c2x, 1, 0, 0x0f), 1727*0472e113SJosef 'Jeff' Sipek TABLE(0xc4, tbl_c4x, 1, 0, 0x0f), 1728*0472e113SJosef 'Jeff' Sipek INSTR(0xc5, "bprp", IF_MII, F_Z), 1729*0472e113SJosef 'Jeff' Sipek TABLE(0xc6, tbl_c6x, 1, 0, 0x0f), 1730*0472e113SJosef 'Jeff' Sipek INSTR(0xc7, "bpp", IF_SMI, F_Z), 1731*0472e113SJosef 'Jeff' Sipek TABLE(0xc8, tbl_c8x, 1, 0, 0x0f), 1732*0472e113SJosef 'Jeff' Sipek TABLE(0xcc, tbl_ccx, 1, 0, 0x0f), 1733*0472e113SJosef 'Jeff' Sipek INSTR(0xd0, "trtr", IF_SSa, F_Z), 1734*0472e113SJosef 'Jeff' Sipek INSTR(0xd1, "mvn", IF_SSa, F_370 | F_390 | F_Z), 1735*0472e113SJosef 'Jeff' Sipek INSTR(0xd2, "mvc", IF_SSa, F_370 | F_390 | F_Z), 1736*0472e113SJosef 'Jeff' Sipek INSTR(0xd3, "mvz", IF_SSa, F_370 | F_390 | F_Z), 1737*0472e113SJosef 'Jeff' Sipek INSTR(0xd4, "nc", IF_SSa, F_370 | F_390 | F_Z), 1738*0472e113SJosef 'Jeff' Sipek INSTR(0xd5, "clc", IF_SSa, F_370 | F_390 | F_Z), 1739*0472e113SJosef 'Jeff' Sipek INSTR(0xd6, "oc", IF_SSa, F_370 | F_390 | F_Z), 1740*0472e113SJosef 'Jeff' Sipek INSTR(0xd7, "xc", IF_SSa, F_370 | F_390 | F_Z), 1741*0472e113SJosef 'Jeff' Sipek INSTR(0xd9, "mvck", IF_SSd, F_390 | F_Z), 1742*0472e113SJosef 'Jeff' Sipek INSTR(0xda, "mvcp", IF_SSd, F_390 | F_Z), 1743*0472e113SJosef 'Jeff' Sipek INSTR(0xdb, "mvcs", IF_SSd, F_390 | F_Z), 1744*0472e113SJosef 'Jeff' Sipek INSTR(0xdc, "tr", IF_SSa, F_370 | F_390 | F_Z), 1745*0472e113SJosef 'Jeff' Sipek INSTR(0xdd, "trt", IF_SSa, F_370 | F_390 | F_Z), 1746*0472e113SJosef 'Jeff' Sipek INSTR(0xde, "ed", IF_SSa, F_370 | F_390 | F_Z), 1747*0472e113SJosef 'Jeff' Sipek INSTR(0xdf, "edmk", IF_SSa, F_370 | F_390 | F_Z), 1748*0472e113SJosef 'Jeff' Sipek INSTR(0xe1, "pku", IF_SSf, F_390 | F_Z), 1749*0472e113SJosef 'Jeff' Sipek INSTR(0xe2, "unpku", IF_SSa, F_390 | F_Z), 1750*0472e113SJosef 'Jeff' Sipek TABLE(0xe3, tbl_e3xx, 5, 0, 0xff), 1751*0472e113SJosef 'Jeff' Sipek TABLE(0xe5, tbl_e5xx, 1, 0, 0xff), 1752*0472e113SJosef 'Jeff' Sipek INSTR(0xe8, "mvcin", IF_SSa, F_390 | F_Z), 1753*0472e113SJosef 'Jeff' Sipek INSTR(0xe9, "pka", IF_SSf, F_390 | F_Z), 1754*0472e113SJosef 'Jeff' Sipek INSTR(0xea, "unpka", IF_SSa, F_390 | F_Z), 1755*0472e113SJosef 'Jeff' Sipek TABLE(0xeb, tbl_ebxx, 5, 0, 0xff), 1756*0472e113SJosef 'Jeff' Sipek TABLE(0xec, tbl_ecxx, 5, 0, 0xff), 1757*0472e113SJosef 'Jeff' Sipek TABLE(0xed, tbl_edxx, 5, 0, 0xff), 1758*0472e113SJosef 'Jeff' Sipek INSTR(0xee, "plo", IF_SSe, F_390 | F_Z), 1759*0472e113SJosef 'Jeff' Sipek INSTR(0xef, "lmd", IF_SSe, F_Z), 1760*0472e113SJosef 'Jeff' Sipek INSTR(0xf0, "srp", IF_SSc, F_370 | F_390 | F_Z), 1761*0472e113SJosef 'Jeff' Sipek INSTR(0xf1, "mvo", IF_SSb, F_370 | F_390 | F_Z), 1762*0472e113SJosef 'Jeff' Sipek INSTR(0xf2, "pack", IF_SSb, F_370 | F_390 | F_Z), 1763*0472e113SJosef 'Jeff' Sipek INSTR(0xf3, "unpk", IF_SSb, F_370 | F_390 | F_Z), 1764*0472e113SJosef 'Jeff' Sipek INSTR(0xf8, "zap", IF_SSb, F_370 | F_390 | F_Z), 1765*0472e113SJosef 'Jeff' Sipek INSTR(0xf9, "cp", IF_SSb, F_370 | F_390 | F_Z), 1766*0472e113SJosef 'Jeff' Sipek INSTR(0xfa, "ap", IF_SSb, F_370 | F_390 | F_Z), 1767*0472e113SJosef 'Jeff' Sipek INSTR(0xfb, "sp", IF_SSb, F_370 | F_390 | F_Z), 1768*0472e113SJosef 'Jeff' Sipek INSTR(0xfc, "mp", IF_SSb, F_370 | F_390 | F_Z), 1769*0472e113SJosef 'Jeff' Sipek INSTR(0xfd, "dp", IF_SSb, F_370 | F_390 | F_Z), 1770*0472e113SJosef 'Jeff' Sipek }; 1771*0472e113SJosef 'Jeff' Sipek /* END CSTYLED */ 1772*0472e113SJosef 'Jeff' Sipek 1773*0472e113SJosef 'Jeff' Sipek /* how masks are printed */ 1774*0472e113SJosef 'Jeff' Sipek static const char *M[16] = { 1775*0472e113SJosef 'Jeff' Sipek "0", "1", "2", "3", "4", "5", "6", "7", 1776*0472e113SJosef 'Jeff' Sipek "8", "9", "10", "11", "12", "13", "14", "15", 1777*0472e113SJosef 'Jeff' Sipek }; 1778*0472e113SJosef 'Jeff' Sipek 1779*0472e113SJosef 'Jeff' Sipek /* how general purpose regs are printed */ 1780*0472e113SJosef 'Jeff' Sipek static const char *R[16] = { 1781*0472e113SJosef 'Jeff' Sipek "%r0", "%r1", "%r2", "%r3", "%r4", "%r5", "%r6", "%r7", 1782*0472e113SJosef 'Jeff' Sipek "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", "%r14", "%r15", 1783*0472e113SJosef 'Jeff' Sipek }; 1784*0472e113SJosef 'Jeff' Sipek 1785*0472e113SJosef 'Jeff' Sipek /* how control regs are printed */ 1786*0472e113SJosef 'Jeff' Sipek static const char *C[16] = { 1787*0472e113SJosef 'Jeff' Sipek "%c0", "%c1", "%c2", "%c3", "%c4", "%c5", "%c6", "%c7", 1788*0472e113SJosef 'Jeff' Sipek "%c8", "%c9", "%c10", "%c11", "%c12", "%c13", "%c14", "%c15", 1789*0472e113SJosef 'Jeff' Sipek }; 1790*0472e113SJosef 'Jeff' Sipek 1791*0472e113SJosef 'Jeff' Sipek /* B and X registers are still registers - print them the same way */ 1792*0472e113SJosef 'Jeff' Sipek #define B R 1793*0472e113SJosef 'Jeff' Sipek #define X R 1794*0472e113SJosef 'Jeff' Sipek 1795*0472e113SJosef 'Jeff' Sipek static inline uint32_t 1796*0472e113SJosef 'Jeff' Sipek val_8_4_8(uint32_t hi, uint32_t mid, uint32_t lo) 1797*0472e113SJosef 'Jeff' Sipek { 1798*0472e113SJosef 'Jeff' Sipek ASSERT0(hi & ~0xff); 1799*0472e113SJosef 'Jeff' Sipek ASSERT0(mid & ~0xf); 1800*0472e113SJosef 'Jeff' Sipek ASSERT0(lo & ~0xff); 1801*0472e113SJosef 'Jeff' Sipek return ((hi << 12) | (mid << 8) | lo); 1802*0472e113SJosef 'Jeff' Sipek } 1803*0472e113SJosef 'Jeff' Sipek 1804*0472e113SJosef 'Jeff' Sipek static inline uint32_t 1805*0472e113SJosef 'Jeff' Sipek val_16_16(uint32_t hi, uint32_t lo) 1806*0472e113SJosef 'Jeff' Sipek { 1807*0472e113SJosef 'Jeff' Sipek ASSERT0(hi & ~0xffff); 1808*0472e113SJosef 'Jeff' Sipek ASSERT0(lo & ~0xffff); 1809*0472e113SJosef 'Jeff' Sipek return ((BE_16(hi) << 16) | BE_16(lo)); 1810*0472e113SJosef 'Jeff' Sipek } 1811*0472e113SJosef 'Jeff' Sipek 1812*0472e113SJosef 'Jeff' Sipek static inline int32_t 1813*0472e113SJosef 'Jeff' Sipek sval_16_16(uint32_t hi, uint32_t lo) 1814*0472e113SJosef 'Jeff' Sipek { 1815*0472e113SJosef 'Jeff' Sipek return (val_16_16(hi, lo)); 1816*0472e113SJosef 'Jeff' Sipek } 1817*0472e113SJosef 'Jeff' Sipek 1818*0472e113SJosef 'Jeff' Sipek static inline uint32_t 1819*0472e113SJosef 'Jeff' Sipek val_8_16(uint32_t hi, uint32_t lo) 1820*0472e113SJosef 'Jeff' Sipek { 1821*0472e113SJosef 'Jeff' Sipek ASSERT0(hi & ~0xff); 1822*0472e113SJosef 'Jeff' Sipek ASSERT0(lo & ~0xffff); 1823*0472e113SJosef 'Jeff' Sipek return ((hi << 16) | BE_16(lo)); 1824*0472e113SJosef 'Jeff' Sipek } 1825*0472e113SJosef 'Jeff' Sipek 1826*0472e113SJosef 'Jeff' Sipek static inline int32_t 1827*0472e113SJosef 'Jeff' Sipek sval_8_16(uint32_t hi, uint32_t lo) 1828*0472e113SJosef 'Jeff' Sipek { 1829*0472e113SJosef 'Jeff' Sipek int32_t tmp = val_8_16(hi, lo); 1830*0472e113SJosef 'Jeff' Sipek 1831*0472e113SJosef 'Jeff' Sipek /* sign extend */ 1832*0472e113SJosef 'Jeff' Sipek if (tmp & 0x00800000) 1833*0472e113SJosef 'Jeff' Sipek return (0xff000000 | tmp); 1834*0472e113SJosef 'Jeff' Sipek return (tmp); 1835*0472e113SJosef 'Jeff' Sipek } 1836*0472e113SJosef 'Jeff' Sipek 1837*0472e113SJosef 'Jeff' Sipek static inline uint32_t 1838*0472e113SJosef 'Jeff' Sipek val_4_8(uint32_t hi, uint32_t lo) 1839*0472e113SJosef 'Jeff' Sipek { 1840*0472e113SJosef 'Jeff' Sipek ASSERT0(hi & ~0xf); 1841*0472e113SJosef 'Jeff' Sipek ASSERT0(lo & ~0xff); 1842*0472e113SJosef 'Jeff' Sipek return ((hi << 8) | lo); 1843*0472e113SJosef 'Jeff' Sipek } 1844*0472e113SJosef 'Jeff' Sipek 1845*0472e113SJosef 'Jeff' Sipek static inline int32_t 1846*0472e113SJosef 'Jeff' Sipek sval_4_8(uint32_t hi, uint32_t lo) 1847*0472e113SJosef 'Jeff' Sipek { 1848*0472e113SJosef 'Jeff' Sipek uint32_t tmp = val_4_8(hi, lo); 1849*0472e113SJosef 'Jeff' Sipek 1850*0472e113SJosef 'Jeff' Sipek /* sign extend */ 1851*0472e113SJosef 'Jeff' Sipek if (tmp & 0x800) 1852*0472e113SJosef 'Jeff' Sipek return (0xfffff000 | tmp); 1853*0472e113SJosef 'Jeff' Sipek return (tmp); 1854*0472e113SJosef 'Jeff' Sipek } 1855*0472e113SJosef 'Jeff' Sipek 1856*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 1857*0472e113SJosef 'Jeff' Sipek static void 1858*0472e113SJosef 'Jeff' Sipek fmt_zero(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 1859*0472e113SJosef 'Jeff' Sipek { 1860*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "0x00, 0x00"); 1861*0472e113SJosef 'Jeff' Sipek } 1862*0472e113SJosef 'Jeff' Sipek 1863*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 1864*0472e113SJosef 'Jeff' Sipek static void 1865*0472e113SJosef 'Jeff' Sipek fmt_diag(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 1866*0472e113SJosef 'Jeff' Sipek { 1867*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%#x", 1868*0472e113SJosef 'Jeff' Sipek val_8_16(inst->diag.par1, inst->diag.par2)); 1869*0472e113SJosef 'Jeff' Sipek } 1870*0472e113SJosef 'Jeff' Sipek 1871*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 1872*0472e113SJosef 'Jeff' Sipek static void 1873*0472e113SJosef 'Jeff' Sipek fmt_e(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 1874*0472e113SJosef 'Jeff' Sipek { 1875*0472e113SJosef 'Jeff' Sipek /* nothing to do */ 1876*0472e113SJosef 'Jeff' Sipek } 1877*0472e113SJosef 'Jeff' Sipek 1878*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 1879*0472e113SJosef 'Jeff' Sipek static void 1880*0472e113SJosef 'Jeff' Sipek fmt_i(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 1881*0472e113SJosef 'Jeff' Sipek { 1882*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%#x", inst->i.i); 1883*0472e113SJosef 'Jeff' Sipek } 1884*0472e113SJosef 'Jeff' Sipek 1885*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 1886*0472e113SJosef 'Jeff' Sipek static void 1887*0472e113SJosef 'Jeff' Sipek fmt_ie(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 1888*0472e113SJosef 'Jeff' Sipek { 1889*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%u,%u", inst->ie.i1, inst->ie.i2); 1890*0472e113SJosef 'Jeff' Sipek } 1891*0472e113SJosef 'Jeff' Sipek 1892*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 1893*0472e113SJosef 'Jeff' Sipek static void 1894*0472e113SJosef 'Jeff' Sipek fmt_mii(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 1895*0472e113SJosef 'Jeff' Sipek { 1896*0472e113SJosef 'Jeff' Sipek uint64_t ri2 = addr + 2 * sval_4_8(inst->mii.ri2h, inst->mii.ri2l); 1897*0472e113SJosef 'Jeff' Sipek uint64_t ri3 = addr + 2 * sval_8_16(inst->mii.ri3h, inst->mii.ri3l); 1898*0472e113SJosef 'Jeff' Sipek 1899*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%#x,%#x", M[inst->mii.m1], ri2, ri3); 1900*0472e113SJosef 'Jeff' Sipek } 1901*0472e113SJosef 'Jeff' Sipek 1902*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 1903*0472e113SJosef 'Jeff' Sipek static void 1904*0472e113SJosef 'Jeff' Sipek fmt_ril_a(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 1905*0472e113SJosef 'Jeff' Sipek { 1906*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%u", R[inst->ril_a.r1], 1907*0472e113SJosef 'Jeff' Sipek val_16_16(inst->ril_a.i2h, inst->ril_a.i2l)); 1908*0472e113SJosef 'Jeff' Sipek } 1909*0472e113SJosef 'Jeff' Sipek 1910*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 1911*0472e113SJosef 'Jeff' Sipek static void 1912*0472e113SJosef 'Jeff' Sipek fmt_ril_b(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 1913*0472e113SJosef 'Jeff' Sipek { 1914*0472e113SJosef 'Jeff' Sipek uint64_t ri2 = addr + 2 * 1915*0472e113SJosef 'Jeff' Sipek sval_16_16(inst->ril_b.ri2h, inst->ril_b.ri2l); 1916*0472e113SJosef 'Jeff' Sipek 1917*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%#x", R[inst->ril_b.r1], ri2); 1918*0472e113SJosef 'Jeff' Sipek } 1919*0472e113SJosef 'Jeff' Sipek 1920*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 1921*0472e113SJosef 'Jeff' Sipek static void 1922*0472e113SJosef 'Jeff' Sipek fmt_ril_c(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 1923*0472e113SJosef 'Jeff' Sipek { 1924*0472e113SJosef 'Jeff' Sipek uint64_t ri2 = addr + 2 * 1925*0472e113SJosef 'Jeff' Sipek sval_16_16(inst->ril_c.ri2h, inst->ril_c.ri2l); 1926*0472e113SJosef 'Jeff' Sipek 1927*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%#x", M[inst->ril_c.m1], ri2); 1928*0472e113SJosef 'Jeff' Sipek } 1929*0472e113SJosef 'Jeff' Sipek 1930*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 1931*0472e113SJosef 'Jeff' Sipek static void 1932*0472e113SJosef 'Jeff' Sipek fmt_ris(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 1933*0472e113SJosef 'Jeff' Sipek { 1934*0472e113SJosef 'Jeff' Sipek uint32_t d4 = val_4_8(inst->ris.d4h, inst->ris.d4l); 1935*0472e113SJosef 'Jeff' Sipek 1936*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%u,%s,%u(%s)", 1937*0472e113SJosef 'Jeff' Sipek R[inst->ris.r1], inst->ris.i2, M[inst->ris.m3], d4, 1938*0472e113SJosef 'Jeff' Sipek B[inst->ris.b4]); 1939*0472e113SJosef 'Jeff' Sipek } 1940*0472e113SJosef 'Jeff' Sipek 1941*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 1942*0472e113SJosef 'Jeff' Sipek static void 1943*0472e113SJosef 'Jeff' Sipek fmt_ri_a(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 1944*0472e113SJosef 'Jeff' Sipek { 1945*0472e113SJosef 'Jeff' Sipek uint16_t i2 = BE_16(inst->ri_a.i2); 1946*0472e113SJosef 'Jeff' Sipek 1947*0472e113SJosef 'Jeff' Sipek if (flags & F_SIGNED_IMM) 1948*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%d", R[inst->ri_a.r1], 1949*0472e113SJosef 'Jeff' Sipek (int16_t)i2); 1950*0472e113SJosef 'Jeff' Sipek else 1951*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%u", R[inst->ri_a.r1], 1952*0472e113SJosef 'Jeff' Sipek i2); 1953*0472e113SJosef 'Jeff' Sipek } 1954*0472e113SJosef 'Jeff' Sipek 1955*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 1956*0472e113SJosef 'Jeff' Sipek static void 1957*0472e113SJosef 'Jeff' Sipek fmt_ri_b(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 1958*0472e113SJosef 'Jeff' Sipek { 1959*0472e113SJosef 'Jeff' Sipek uint64_t ri2 = addr + 2 * (int16_t)BE_16(inst->ri_b.ri2); 1960*0472e113SJosef 'Jeff' Sipek 1961*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%#x", R[inst->ri_b.r1], ri2); 1962*0472e113SJosef 'Jeff' Sipek } 1963*0472e113SJosef 'Jeff' Sipek 1964*0472e113SJosef 'Jeff' Sipek static void 1965*0472e113SJosef 'Jeff' Sipek fmt_ri_c(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 1966*0472e113SJosef 'Jeff' Sipek { 1967*0472e113SJosef 'Jeff' Sipek uint64_t ri2 = addr + 2 * (int16_t)BE_16(inst->ri_c.ri2); 1968*0472e113SJosef 'Jeff' Sipek 1969*0472e113SJosef 'Jeff' Sipek if (flags & F_HIDE_MASK) 1970*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%#x", ri2); 1971*0472e113SJosef 'Jeff' Sipek else 1972*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%#x", M[inst->ri_c.m1], ri2); 1973*0472e113SJosef 'Jeff' Sipek } 1974*0472e113SJosef 'Jeff' Sipek 1975*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 1976*0472e113SJosef 'Jeff' Sipek static void 1977*0472e113SJosef 'Jeff' Sipek fmt_rie_a(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 1978*0472e113SJosef 'Jeff' Sipek { 1979*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%u,%s", R[inst->rie_a.r1], 1980*0472e113SJosef 'Jeff' Sipek BE_16(inst->rie_a.i2), M[inst->rie_a.m3]); 1981*0472e113SJosef 'Jeff' Sipek } 1982*0472e113SJosef 'Jeff' Sipek 1983*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 1984*0472e113SJosef 'Jeff' Sipek static void 1985*0472e113SJosef 'Jeff' Sipek fmt_rie_b(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 1986*0472e113SJosef 'Jeff' Sipek { 1987*0472e113SJosef 'Jeff' Sipek uint64_t ri4 = addr + 2 * (int16_t)BE_16(inst->rie_b.ri4); 1988*0472e113SJosef 'Jeff' Sipek 1989*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%s,%s,%#x", R[inst->rie_b.r1], 1990*0472e113SJosef 'Jeff' Sipek R[inst->rie_b.r2], M[inst->rie_b.m3], ri4); 1991*0472e113SJosef 'Jeff' Sipek } 1992*0472e113SJosef 'Jeff' Sipek 1993*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 1994*0472e113SJosef 'Jeff' Sipek static void 1995*0472e113SJosef 'Jeff' Sipek fmt_rie_c(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 1996*0472e113SJosef 'Jeff' Sipek { 1997*0472e113SJosef 'Jeff' Sipek uint64_t ri4 = addr + 2 * (int16_t)BE_16(inst->rie_c.ri4); 1998*0472e113SJosef 'Jeff' Sipek 1999*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%u,%s,%#x", R[inst->rie_c.r1], 2000*0472e113SJosef 'Jeff' Sipek inst->rie_c.i2, M[inst->rie_c.m3], ri4); 2001*0472e113SJosef 'Jeff' Sipek } 2002*0472e113SJosef 'Jeff' Sipek 2003*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 2004*0472e113SJosef 'Jeff' Sipek static void 2005*0472e113SJosef 'Jeff' Sipek fmt_rie_d(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 2006*0472e113SJosef 'Jeff' Sipek { 2007*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%s,%u", R[inst->rie_d.r1], 2008*0472e113SJosef 'Jeff' Sipek R[inst->rie_d.r3], BE_16(inst->rie_d.i2)); 2009*0472e113SJosef 'Jeff' Sipek } 2010*0472e113SJosef 'Jeff' Sipek 2011*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 2012*0472e113SJosef 'Jeff' Sipek static void 2013*0472e113SJosef 'Jeff' Sipek fmt_rie_e(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 2014*0472e113SJosef 'Jeff' Sipek { 2015*0472e113SJosef 'Jeff' Sipek uint64_t ri2 = addr + 2 * (int16_t)BE_16(inst->rie_e.ri2); 2016*0472e113SJosef 'Jeff' Sipek 2017*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%s,%#x", R[inst->rie_e.r1], 2018*0472e113SJosef 'Jeff' Sipek R[inst->rie_e.r3], ri2); 2019*0472e113SJosef 'Jeff' Sipek } 2020*0472e113SJosef 'Jeff' Sipek 2021*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 2022*0472e113SJosef 'Jeff' Sipek static void 2023*0472e113SJosef 'Jeff' Sipek fmt_rie_f(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 2024*0472e113SJosef 'Jeff' Sipek { 2025*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%s,%u,%u,%u", R[inst->rie_f.r1], 2026*0472e113SJosef 'Jeff' Sipek R[inst->rie_f.r2], inst->rie_f.i3, inst->rie_f.i4, 2027*0472e113SJosef 'Jeff' Sipek inst->rie_f.i5); 2028*0472e113SJosef 'Jeff' Sipek } 2029*0472e113SJosef 'Jeff' Sipek 2030*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 2031*0472e113SJosef 'Jeff' Sipek static void 2032*0472e113SJosef 'Jeff' Sipek fmt_rre(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 2033*0472e113SJosef 'Jeff' Sipek { 2034*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%s", R[inst->rre.r1], R[inst->rre.r2]); 2035*0472e113SJosef 'Jeff' Sipek } 2036*0472e113SJosef 'Jeff' Sipek 2037*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 2038*0472e113SJosef 'Jeff' Sipek static void 2039*0472e113SJosef 'Jeff' Sipek fmt_rrf_a(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 2040*0472e113SJosef 'Jeff' Sipek { 2041*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%s,%s", 2042*0472e113SJosef 'Jeff' Sipek R[inst->rrf_ab.r1], R[inst->rrf_ab.r2], R[inst->rrf_ab.r3]); 2043*0472e113SJosef 'Jeff' Sipek } 2044*0472e113SJosef 'Jeff' Sipek 2045*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 2046*0472e113SJosef 'Jeff' Sipek static void 2047*0472e113SJosef 'Jeff' Sipek fmt_rrf_b(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 2048*0472e113SJosef 'Jeff' Sipek { 2049*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%s,%s", 2050*0472e113SJosef 'Jeff' Sipek R[inst->rrf_ab.r1], R[inst->rrf_ab.r3], R[inst->rrf_ab.r2]); 2051*0472e113SJosef 'Jeff' Sipek } 2052*0472e113SJosef 'Jeff' Sipek 2053*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 2054*0472e113SJosef 'Jeff' Sipek static void 2055*0472e113SJosef 'Jeff' Sipek fmt_rrf_c(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 2056*0472e113SJosef 'Jeff' Sipek { 2057*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%s,%s", 2058*0472e113SJosef 'Jeff' Sipek R[inst->rrf_cde.r1], R[inst->rrf_cde.r2], M[inst->rrf_cde.m3]); 2059*0472e113SJosef 'Jeff' Sipek } 2060*0472e113SJosef 'Jeff' Sipek 2061*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 2062*0472e113SJosef 'Jeff' Sipek static void 2063*0472e113SJosef 'Jeff' Sipek fmt_rrf_d(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 2064*0472e113SJosef 'Jeff' Sipek { 2065*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%s,%s", 2066*0472e113SJosef 'Jeff' Sipek R[inst->rrf_cde.r1], R[inst->rrf_cde.r2], M[inst->rrf_cde.m4]); 2067*0472e113SJosef 'Jeff' Sipek } 2068*0472e113SJosef 'Jeff' Sipek 2069*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 2070*0472e113SJosef 'Jeff' Sipek static void 2071*0472e113SJosef 'Jeff' Sipek fmt_rrf_e(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 2072*0472e113SJosef 'Jeff' Sipek { 2073*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%s,%s,%s", 2074*0472e113SJosef 'Jeff' Sipek R[inst->rrf_cde.r1], M[inst->rrf_cde.m3], 2075*0472e113SJosef 'Jeff' Sipek R[inst->rrf_cde.r2], M[inst->rrf_cde.m4]); 2076*0472e113SJosef 'Jeff' Sipek } 2077*0472e113SJosef 'Jeff' Sipek 2078*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 2079*0472e113SJosef 'Jeff' Sipek static void 2080*0472e113SJosef 'Jeff' Sipek fmt_rrs(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 2081*0472e113SJosef 'Jeff' Sipek { 2082*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%s,%s,%u(%s)", R[inst->rrs.r1], 2083*0472e113SJosef 'Jeff' Sipek R[inst->rrs.r2], M[inst->rrs.m3], 2084*0472e113SJosef 'Jeff' Sipek val_4_8(inst->rrs.d4h, inst->rrs.d4l), B[inst->rrs.b4]); 2085*0472e113SJosef 'Jeff' Sipek } 2086*0472e113SJosef 'Jeff' Sipek 2087*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 2088*0472e113SJosef 'Jeff' Sipek static void 2089*0472e113SJosef 'Jeff' Sipek fmt_rr(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 2090*0472e113SJosef 'Jeff' Sipek { 2091*0472e113SJosef 'Jeff' Sipek /* a branch uses r1 as a mask */ 2092*0472e113SJosef 'Jeff' Sipek if (flags & F_HIDE_MASK) 2093*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s", R[inst->rr.r2]); 2094*0472e113SJosef 'Jeff' Sipek else if (flags & F_R1_IS_MASK) 2095*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%s", M[inst->rr.r1], 2096*0472e113SJosef 'Jeff' Sipek R[inst->rr.r2]); 2097*0472e113SJosef 'Jeff' Sipek else 2098*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%s", R[inst->rr.r1], 2099*0472e113SJosef 'Jeff' Sipek R[inst->rr.r2]); 2100*0472e113SJosef 'Jeff' Sipek } 2101*0472e113SJosef 'Jeff' Sipek 2102*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 2103*0472e113SJosef 'Jeff' Sipek static void 2104*0472e113SJosef 'Jeff' Sipek fmt_rrd(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 2105*0472e113SJosef 'Jeff' Sipek { 2106*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%s,%s", R[inst->rrd.r1], 2107*0472e113SJosef 'Jeff' Sipek R[inst->rrd.r3], R[inst->rrd.r2]); 2108*0472e113SJosef 'Jeff' Sipek } 2109*0472e113SJosef 'Jeff' Sipek 2110*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 2111*0472e113SJosef 'Jeff' Sipek static void 2112*0472e113SJosef 'Jeff' Sipek fmt_rx_a(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 2113*0472e113SJosef 'Jeff' Sipek { 2114*0472e113SJosef 'Jeff' Sipek uint32_t d2 = val_4_8(inst->rx_a.d2h, inst->rx_b.d2l); 2115*0472e113SJosef 'Jeff' Sipek 2116*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%u(%s,%s)", R[inst->rx_a.r1], 2117*0472e113SJosef 'Jeff' Sipek d2, X[inst->rx_a.x2], B[inst->rx_a.b2]); 2118*0472e113SJosef 'Jeff' Sipek } 2119*0472e113SJosef 'Jeff' Sipek 2120*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 2121*0472e113SJosef 'Jeff' Sipek static void 2122*0472e113SJosef 'Jeff' Sipek fmt_rx_b(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 2123*0472e113SJosef 'Jeff' Sipek { 2124*0472e113SJosef 'Jeff' Sipek uint32_t d2 = val_4_8(inst->rx_b.d2h, inst->rx_b.d2l); 2125*0472e113SJosef 'Jeff' Sipek 2126*0472e113SJosef 'Jeff' Sipek if (flags & F_HIDE_MASK) 2127*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%u(%s,%s)", 2128*0472e113SJosef 'Jeff' Sipek d2, X[inst->rx_b.x2], B[inst->rx_b.b2]); 2129*0472e113SJosef 'Jeff' Sipek else 2130*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%u(%s,%s)", M[inst->rx_b.m1], 2131*0472e113SJosef 'Jeff' Sipek d2, X[inst->rx_b.x2], B[inst->rx_b.b2]); 2132*0472e113SJosef 'Jeff' Sipek } 2133*0472e113SJosef 'Jeff' Sipek 2134*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 2135*0472e113SJosef 'Jeff' Sipek static void 2136*0472e113SJosef 'Jeff' Sipek fmt_rxe(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 2137*0472e113SJosef 'Jeff' Sipek { 2138*0472e113SJosef 'Jeff' Sipek uint32_t d2 = val_4_8(inst->rxe.d2h, inst->rxe.d2l); 2139*0472e113SJosef 'Jeff' Sipek 2140*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%u(%s,%s)", 2141*0472e113SJosef 'Jeff' Sipek R[inst->rxe.r1], d2, X[inst->rxe.x2], B[inst->rxe.b2]); 2142*0472e113SJosef 'Jeff' Sipek } 2143*0472e113SJosef 'Jeff' Sipek 2144*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 2145*0472e113SJosef 'Jeff' Sipek static void 2146*0472e113SJosef 'Jeff' Sipek fmt_rxf(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 2147*0472e113SJosef 'Jeff' Sipek { 2148*0472e113SJosef 'Jeff' Sipek uint32_t d2 = val_4_8(inst->rxf.d2h, inst->rxf.d2l); 2149*0472e113SJosef 'Jeff' Sipek 2150*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%s,%u(%s,%s)", 2151*0472e113SJosef 'Jeff' Sipek R[inst->rxf.r1], R[inst->rxf.r3], d2, X[inst->rxf.x2], 2152*0472e113SJosef 'Jeff' Sipek B[inst->rxf.b2]); 2153*0472e113SJosef 'Jeff' Sipek } 2154*0472e113SJosef 'Jeff' Sipek 2155*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 2156*0472e113SJosef 'Jeff' Sipek static void 2157*0472e113SJosef 'Jeff' Sipek fmt_rxy_a(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 2158*0472e113SJosef 'Jeff' Sipek { 2159*0472e113SJosef 'Jeff' Sipek uint32_t d2; 2160*0472e113SJosef 'Jeff' Sipek 2161*0472e113SJosef 'Jeff' Sipek d2 = val_8_4_8(inst->rxy_a.dh2, inst->rxy_a.dl2h, inst->rxy_a.dl2l); 2162*0472e113SJosef 'Jeff' Sipek 2163*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%u(%s,%s)", 2164*0472e113SJosef 'Jeff' Sipek R[inst->rxy_a.r1], d2, X[inst->rxy_a.x2], B[inst->rxy_a.b2]); 2165*0472e113SJosef 'Jeff' Sipek } 2166*0472e113SJosef 'Jeff' Sipek 2167*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 2168*0472e113SJosef 'Jeff' Sipek static void 2169*0472e113SJosef 'Jeff' Sipek fmt_rxy_b(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 2170*0472e113SJosef 'Jeff' Sipek { 2171*0472e113SJosef 'Jeff' Sipek uint32_t d2; 2172*0472e113SJosef 'Jeff' Sipek 2173*0472e113SJosef 'Jeff' Sipek d2 = val_8_4_8(inst->rxy_b.dh2, inst->rxy_b.dl2h, inst->rxy_b.dl2l); 2174*0472e113SJosef 'Jeff' Sipek 2175*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%u(%s,%s)", 2176*0472e113SJosef 'Jeff' Sipek M[inst->rxy_b.m1], d2, X[inst->rxy_b.x2], B[inst->rxy_b.b2]); 2177*0472e113SJosef 'Jeff' Sipek } 2178*0472e113SJosef 'Jeff' Sipek 2179*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 2180*0472e113SJosef 'Jeff' Sipek static void 2181*0472e113SJosef 'Jeff' Sipek fmt_rs_a(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 2182*0472e113SJosef 'Jeff' Sipek { 2183*0472e113SJosef 'Jeff' Sipek const char *r1, *r3; 2184*0472e113SJosef 'Jeff' Sipek 2185*0472e113SJosef 'Jeff' Sipek if (flags & F_CTL_REG) { 2186*0472e113SJosef 'Jeff' Sipek r1 = C[inst->rs_a.r1]; 2187*0472e113SJosef 'Jeff' Sipek r3 = C[inst->rs_a.r3]; 2188*0472e113SJosef 'Jeff' Sipek } else { 2189*0472e113SJosef 'Jeff' Sipek r1 = R[inst->rs_a.r1]; 2190*0472e113SJosef 'Jeff' Sipek r3 = R[inst->rs_a.r3]; 2191*0472e113SJosef 'Jeff' Sipek } 2192*0472e113SJosef 'Jeff' Sipek 2193*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%s,%u(%s)", r1, r3, 2194*0472e113SJosef 'Jeff' Sipek val_4_8(inst->rs_a.d2h, inst->rs_a.d2l), B[inst->rs_a.b2]); 2195*0472e113SJosef 'Jeff' Sipek } 2196*0472e113SJosef 'Jeff' Sipek 2197*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 2198*0472e113SJosef 'Jeff' Sipek static void 2199*0472e113SJosef 'Jeff' Sipek fmt_rs_b(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 2200*0472e113SJosef 'Jeff' Sipek { 2201*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%s,%u(%s)", R[inst->rs_b.r1], 2202*0472e113SJosef 'Jeff' Sipek M[inst->rs_b.m3], val_4_8(inst->rs_b.d2h, inst->rs_b.d2l), 2203*0472e113SJosef 'Jeff' Sipek B[inst->rs_b.b2]); 2204*0472e113SJosef 'Jeff' Sipek } 2205*0472e113SJosef 'Jeff' Sipek 2206*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 2207*0472e113SJosef 'Jeff' Sipek static void 2208*0472e113SJosef 'Jeff' Sipek fmt_rsl_a(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 2209*0472e113SJosef 'Jeff' Sipek { 2210*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%u(%u,%s)", 2211*0472e113SJosef 'Jeff' Sipek val_4_8(inst->rsl_a.d1h, inst->rsl_a.d1l), inst->rsl_a.l1, 2212*0472e113SJosef 'Jeff' Sipek B[inst->rsl_a.b1]); 2213*0472e113SJosef 'Jeff' Sipek } 2214*0472e113SJosef 'Jeff' Sipek 2215*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 2216*0472e113SJosef 'Jeff' Sipek static void 2217*0472e113SJosef 'Jeff' Sipek fmt_rsl_b(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 2218*0472e113SJosef 'Jeff' Sipek { 2219*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%u(%u,%s),%s", 2220*0472e113SJosef 'Jeff' Sipek R[inst->rsl_b.r1], 2221*0472e113SJosef 'Jeff' Sipek val_4_8(inst->rsl_b.d2h, inst->rsl_b.d2l), inst->rsl_b.l2, 2222*0472e113SJosef 'Jeff' Sipek B[inst->rsl_b.b2], M[inst->rsl_b.m3]); 2223*0472e113SJosef 'Jeff' Sipek } 2224*0472e113SJosef 'Jeff' Sipek 2225*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 2226*0472e113SJosef 'Jeff' Sipek static void 2227*0472e113SJosef 'Jeff' Sipek fmt_rsy_a(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 2228*0472e113SJosef 'Jeff' Sipek { 2229*0472e113SJosef 'Jeff' Sipek const char *r1, *r3; 2230*0472e113SJosef 'Jeff' Sipek uint32_t d2; 2231*0472e113SJosef 'Jeff' Sipek 2232*0472e113SJosef 'Jeff' Sipek d2 = val_8_4_8(inst->rsy_a.dh2, inst->rsy_a.dl2h, inst->rsy_a.dl2l); 2233*0472e113SJosef 'Jeff' Sipek 2234*0472e113SJosef 'Jeff' Sipek if (flags & F_CTL_REG) { 2235*0472e113SJosef 'Jeff' Sipek r1 = C[inst->rsy_a.r1]; 2236*0472e113SJosef 'Jeff' Sipek r3 = C[inst->rsy_a.r3]; 2237*0472e113SJosef 'Jeff' Sipek } else { 2238*0472e113SJosef 'Jeff' Sipek r1 = R[inst->rsy_a.r1]; 2239*0472e113SJosef 'Jeff' Sipek r3 = R[inst->rsy_a.r3]; 2240*0472e113SJosef 'Jeff' Sipek } 2241*0472e113SJosef 'Jeff' Sipek 2242*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%s,%u(%s)", r1, r3, d2, 2243*0472e113SJosef 'Jeff' Sipek B[inst->rsy_a.b2]); 2244*0472e113SJosef 'Jeff' Sipek } 2245*0472e113SJosef 'Jeff' Sipek 2246*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 2247*0472e113SJosef 'Jeff' Sipek static void 2248*0472e113SJosef 'Jeff' Sipek fmt_rsy_b(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 2249*0472e113SJosef 'Jeff' Sipek { 2250*0472e113SJosef 'Jeff' Sipek uint32_t d2; 2251*0472e113SJosef 'Jeff' Sipek 2252*0472e113SJosef 'Jeff' Sipek d2 = val_8_4_8(inst->rsy_b.dh2, inst->rsy_b.dl2h, inst->rsy_b.dl2l); 2253*0472e113SJosef 'Jeff' Sipek 2254*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%s,%u(%s)", 2255*0472e113SJosef 'Jeff' Sipek R[inst->rsy_b.r1], M[inst->rsy_b.m3], 2256*0472e113SJosef 'Jeff' Sipek d2, B[inst->rsy_b.b2]); 2257*0472e113SJosef 'Jeff' Sipek } 2258*0472e113SJosef 'Jeff' Sipek 2259*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 2260*0472e113SJosef 'Jeff' Sipek static void 2261*0472e113SJosef 'Jeff' Sipek fmt_rsi(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 2262*0472e113SJosef 'Jeff' Sipek { 2263*0472e113SJosef 'Jeff' Sipek uint64_t ri2 = addr + 2 * (int16_t)BE_16(inst->rsi.ri2); 2264*0472e113SJosef 'Jeff' Sipek 2265*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%s,%#x", R[inst->rsi.r1], 2266*0472e113SJosef 'Jeff' Sipek R[inst->rsi.r3], ri2); 2267*0472e113SJosef 'Jeff' Sipek } 2268*0472e113SJosef 'Jeff' Sipek 2269*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 2270*0472e113SJosef 'Jeff' Sipek static void 2271*0472e113SJosef 'Jeff' Sipek fmt_si(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 2272*0472e113SJosef 'Jeff' Sipek { 2273*0472e113SJosef 'Jeff' Sipek uint32_t d1 = val_4_8(inst->si.d1h, inst->si.d1l); 2274*0472e113SJosef 'Jeff' Sipek 2275*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%u(%s),%u", d1, B[inst->si.b1], 2276*0472e113SJosef 'Jeff' Sipek inst->si.i2); 2277*0472e113SJosef 'Jeff' Sipek } 2278*0472e113SJosef 'Jeff' Sipek 2279*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 2280*0472e113SJosef 'Jeff' Sipek static void 2281*0472e113SJosef 'Jeff' Sipek fmt_sil(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 2282*0472e113SJosef 'Jeff' Sipek { 2283*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%u(%s),%u", 2284*0472e113SJosef 'Jeff' Sipek val_4_8(inst->sil.d1h, inst->sil.d1l), B[inst->sil.b1], 2285*0472e113SJosef 'Jeff' Sipek BE_16(inst->sil.i2)); 2286*0472e113SJosef 'Jeff' Sipek } 2287*0472e113SJosef 'Jeff' Sipek 2288*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 2289*0472e113SJosef 'Jeff' Sipek static void 2290*0472e113SJosef 'Jeff' Sipek fmt_siy(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 2291*0472e113SJosef 'Jeff' Sipek { 2292*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%u(%s),%u", 2293*0472e113SJosef 'Jeff' Sipek val_8_4_8(inst->siy.dh1, inst->siy.dl1h, inst->siy.dl1l), 2294*0472e113SJosef 'Jeff' Sipek B[inst->siy.b1], inst->siy.i2); 2295*0472e113SJosef 'Jeff' Sipek } 2296*0472e113SJosef 'Jeff' Sipek 2297*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 2298*0472e113SJosef 'Jeff' Sipek static void 2299*0472e113SJosef 'Jeff' Sipek fmt_smi(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 2300*0472e113SJosef 'Jeff' Sipek { 2301*0472e113SJosef 'Jeff' Sipek uint64_t ri2 = addr + 2 * (int16_t)BE_16(inst->smi.ri2); 2302*0472e113SJosef 'Jeff' Sipek 2303*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%#x,%u(%s)", M[inst->smi.m1], ri2, 2304*0472e113SJosef 'Jeff' Sipek val_4_8(inst->smi.d3h, inst->smi.d3l), B[inst->smi.b3]); 2305*0472e113SJosef 'Jeff' Sipek } 2306*0472e113SJosef 'Jeff' Sipek 2307*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 2308*0472e113SJosef 'Jeff' Sipek static void 2309*0472e113SJosef 'Jeff' Sipek fmt_s(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 2310*0472e113SJosef 'Jeff' Sipek { 2311*0472e113SJosef 'Jeff' Sipek uint32_t d = val_4_8(inst->s.d2h, inst->s.d2l); 2312*0472e113SJosef 'Jeff' Sipek 2313*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%u(%s)", d, B[inst->s.b2]); 2314*0472e113SJosef 'Jeff' Sipek } 2315*0472e113SJosef 'Jeff' Sipek 2316*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 2317*0472e113SJosef 'Jeff' Sipek static void 2318*0472e113SJosef 'Jeff' Sipek fmt_ss_a(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 2319*0472e113SJosef 'Jeff' Sipek { 2320*0472e113SJosef 'Jeff' Sipek uint32_t d1, d2; 2321*0472e113SJosef 'Jeff' Sipek 2322*0472e113SJosef 'Jeff' Sipek d1 = val_4_8(inst->ss_a.d1h, inst->ss_a.d1l); 2323*0472e113SJosef 'Jeff' Sipek d2 = val_4_8(inst->ss_a.d2h, inst->ss_a.d2l); 2324*0472e113SJosef 'Jeff' Sipek 2325*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%u(%u,%s),%u(%s)", 2326*0472e113SJosef 'Jeff' Sipek d1, inst->ss_a.l + 1, B[inst->ss_a.b1], 2327*0472e113SJosef 'Jeff' Sipek d2, B[inst->ss_a.b2]); 2328*0472e113SJosef 'Jeff' Sipek } 2329*0472e113SJosef 'Jeff' Sipek 2330*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 2331*0472e113SJosef 'Jeff' Sipek static void 2332*0472e113SJosef 'Jeff' Sipek fmt_ss_b(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 2333*0472e113SJosef 'Jeff' Sipek { 2334*0472e113SJosef 'Jeff' Sipek uint32_t d1, d2; 2335*0472e113SJosef 'Jeff' Sipek 2336*0472e113SJosef 'Jeff' Sipek d1 = val_4_8(inst->ss_b.d1h, inst->ss_b.d1l); 2337*0472e113SJosef 'Jeff' Sipek d2 = val_4_8(inst->ss_b.d2h, inst->ss_b.d2l); 2338*0472e113SJosef 'Jeff' Sipek 2339*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%u(%u,%s),%u(%u,%s)", 2340*0472e113SJosef 'Jeff' Sipek d1, inst->ss_b.l1 + 1, B[inst->ss_b.b1], 2341*0472e113SJosef 'Jeff' Sipek d2, inst->ss_b.l2 + 1, B[inst->ss_b.b2]); 2342*0472e113SJosef 'Jeff' Sipek } 2343*0472e113SJosef 'Jeff' Sipek 2344*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 2345*0472e113SJosef 'Jeff' Sipek static void 2346*0472e113SJosef 'Jeff' Sipek fmt_ss_c(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 2347*0472e113SJosef 'Jeff' Sipek { 2348*0472e113SJosef 'Jeff' Sipek uint32_t d1, d2; 2349*0472e113SJosef 'Jeff' Sipek 2350*0472e113SJosef 'Jeff' Sipek d1 = val_4_8(inst->ss_c.d1h, inst->ss_c.d1l); 2351*0472e113SJosef 'Jeff' Sipek d2 = val_4_8(inst->ss_c.d2h, inst->ss_c.d2l); 2352*0472e113SJosef 'Jeff' Sipek 2353*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%u(%u,%s),%u(%s),%u", 2354*0472e113SJosef 'Jeff' Sipek d1, inst->ss_c.l1, B[inst->ss_c.b1], 2355*0472e113SJosef 'Jeff' Sipek d2, B[inst->ss_c.b2], inst->ss_c.i3); 2356*0472e113SJosef 'Jeff' Sipek } 2357*0472e113SJosef 'Jeff' Sipek 2358*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 2359*0472e113SJosef 'Jeff' Sipek static void 2360*0472e113SJosef 'Jeff' Sipek fmt_ss_d(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 2361*0472e113SJosef 'Jeff' Sipek { 2362*0472e113SJosef 'Jeff' Sipek uint32_t d1, d2; 2363*0472e113SJosef 'Jeff' Sipek 2364*0472e113SJosef 'Jeff' Sipek d1 = val_4_8(inst->ss_d.d1h, inst->ss_d.d1l); 2365*0472e113SJosef 'Jeff' Sipek d2 = val_4_8(inst->ss_d.d2h, inst->ss_d.d2l); 2366*0472e113SJosef 'Jeff' Sipek 2367*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%u(%s,%s),%u(%s),%s", 2368*0472e113SJosef 'Jeff' Sipek d1, R[inst->ss_d.r1], B[inst->ss_d.b1], 2369*0472e113SJosef 'Jeff' Sipek d2, B[inst->ss_d.b2], R[inst->ss_d.r3]); 2370*0472e113SJosef 'Jeff' Sipek } 2371*0472e113SJosef 'Jeff' Sipek 2372*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 2373*0472e113SJosef 'Jeff' Sipek static void 2374*0472e113SJosef 'Jeff' Sipek fmt_ss_e(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 2375*0472e113SJosef 'Jeff' Sipek { 2376*0472e113SJosef 'Jeff' Sipek uint32_t d2, d4; 2377*0472e113SJosef 'Jeff' Sipek 2378*0472e113SJosef 'Jeff' Sipek d2 = val_4_8(inst->ss_e.d2h, inst->ss_e.d2l); 2379*0472e113SJosef 'Jeff' Sipek d4 = val_4_8(inst->ss_e.d4h, inst->ss_e.d4l); 2380*0472e113SJosef 'Jeff' Sipek 2381*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%s,%u(%s),%s,%u(%s)", 2382*0472e113SJosef 'Jeff' Sipek R[inst->ss_e.r1], d2, B[inst->ss_e.b2], 2383*0472e113SJosef 'Jeff' Sipek R[inst->ss_e.r3], d4, B[inst->ss_e.b4]); 2384*0472e113SJosef 'Jeff' Sipek } 2385*0472e113SJosef 'Jeff' Sipek 2386*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 2387*0472e113SJosef 'Jeff' Sipek static void 2388*0472e113SJosef 'Jeff' Sipek fmt_ss_f(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 2389*0472e113SJosef 'Jeff' Sipek { 2390*0472e113SJosef 'Jeff' Sipek uint32_t d1, d2; 2391*0472e113SJosef 'Jeff' Sipek 2392*0472e113SJosef 'Jeff' Sipek d1 = val_4_8(inst->ss_f.d1h, inst->ss_f.d1l); 2393*0472e113SJosef 'Jeff' Sipek d2 = val_4_8(inst->ss_f.d2h, inst->ss_f.d2l); 2394*0472e113SJosef 'Jeff' Sipek 2395*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%u(%s),%u(%u,%s)", 2396*0472e113SJosef 'Jeff' Sipek d1, B[inst->ss_f.b1], d2, inst->ss_f.l2, 2397*0472e113SJosef 'Jeff' Sipek B[inst->ss_f.b2]); 2398*0472e113SJosef 'Jeff' Sipek } 2399*0472e113SJosef 'Jeff' Sipek 2400*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 2401*0472e113SJosef 'Jeff' Sipek static void 2402*0472e113SJosef 'Jeff' Sipek fmt_sse(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 2403*0472e113SJosef 'Jeff' Sipek { 2404*0472e113SJosef 'Jeff' Sipek uint32_t d1 = val_4_8(inst->sse.d1h, inst->sse.d1l); 2405*0472e113SJosef 'Jeff' Sipek uint32_t d2 = val_4_8(inst->sse.d2h, inst->sse.d2l); 2406*0472e113SJosef 'Jeff' Sipek 2407*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%u(%s),%u(%s)", 2408*0472e113SJosef 'Jeff' Sipek d1, B[inst->sse.b1], d2, B[inst->sse.b2]); 2409*0472e113SJosef 'Jeff' Sipek } 2410*0472e113SJosef 'Jeff' Sipek 2411*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 2412*0472e113SJosef 'Jeff' Sipek static void 2413*0472e113SJosef 'Jeff' Sipek fmt_ssf(uint64_t addr, union inst *inst, char *buf, size_t buflen, int flags) 2414*0472e113SJosef 'Jeff' Sipek { 2415*0472e113SJosef 'Jeff' Sipek uint32_t d1 = val_4_8(inst->ssf.d1h, inst->ssf.d1l); 2416*0472e113SJosef 'Jeff' Sipek uint32_t d2 = val_4_8(inst->ssf.d2h, inst->ssf.d2l); 2417*0472e113SJosef 'Jeff' Sipek 2418*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "%u(%s),%u(%s),%s", 2419*0472e113SJosef 'Jeff' Sipek d1, B[inst->ssf.b1], 2420*0472e113SJosef 'Jeff' Sipek d2, B[inst->ssf.b2], R[inst->ssf.r3]); 2421*0472e113SJosef 'Jeff' Sipek } 2422*0472e113SJosef 'Jeff' Sipek 2423*0472e113SJosef 'Jeff' Sipek static void (*fmt_fxns[IF_NFMTS])(uint64_t, union inst *, char *, size_t, 2424*0472e113SJosef 'Jeff' Sipek int) = { 2425*0472e113SJosef 'Jeff' Sipek [IF_ZERO] = fmt_zero, 2426*0472e113SJosef 'Jeff' Sipek [IF_DIAG] = fmt_diag, 2427*0472e113SJosef 'Jeff' Sipek [IF_E] = fmt_e, 2428*0472e113SJosef 'Jeff' Sipek [IF_I] = fmt_i, 2429*0472e113SJosef 'Jeff' Sipek [IF_IE] = fmt_ie, 2430*0472e113SJosef 'Jeff' Sipek [IF_MII] = fmt_mii, 2431*0472e113SJosef 'Jeff' Sipek [IF_RIa] = fmt_ri_a, 2432*0472e113SJosef 'Jeff' Sipek [IF_RIb] = fmt_ri_b, 2433*0472e113SJosef 'Jeff' Sipek [IF_RIc] = fmt_ri_c, 2434*0472e113SJosef 'Jeff' Sipek [IF_RIEa] = fmt_rie_a, 2435*0472e113SJosef 'Jeff' Sipek [IF_RIEb] = fmt_rie_b, 2436*0472e113SJosef 'Jeff' Sipek [IF_RIEc] = fmt_rie_c, 2437*0472e113SJosef 'Jeff' Sipek [IF_RIEd] = fmt_rie_d, 2438*0472e113SJosef 'Jeff' Sipek [IF_RIEe] = fmt_rie_e, 2439*0472e113SJosef 'Jeff' Sipek [IF_RIEf] = fmt_rie_f, 2440*0472e113SJosef 'Jeff' Sipek [IF_RILa] = fmt_ril_a, 2441*0472e113SJosef 'Jeff' Sipek [IF_RILb] = fmt_ril_b, 2442*0472e113SJosef 'Jeff' Sipek [IF_RILc] = fmt_ril_c, 2443*0472e113SJosef 'Jeff' Sipek [IF_RIS] = fmt_ris, 2444*0472e113SJosef 'Jeff' Sipek [IF_RR] = fmt_rr, 2445*0472e113SJosef 'Jeff' Sipek [IF_RRD] = fmt_rrd, 2446*0472e113SJosef 'Jeff' Sipek [IF_RRE] = fmt_rre, 2447*0472e113SJosef 'Jeff' Sipek [IF_RRFa] = fmt_rrf_a, 2448*0472e113SJosef 'Jeff' Sipek [IF_RRFb] = fmt_rrf_b, 2449*0472e113SJosef 'Jeff' Sipek [IF_RRFc] = fmt_rrf_c, 2450*0472e113SJosef 'Jeff' Sipek [IF_RRFd] = fmt_rrf_d, 2451*0472e113SJosef 'Jeff' Sipek [IF_RRFe] = fmt_rrf_e, 2452*0472e113SJosef 'Jeff' Sipek [IF_RRS] = fmt_rrs, 2453*0472e113SJosef 'Jeff' Sipek [IF_RSa] = fmt_rs_a, 2454*0472e113SJosef 'Jeff' Sipek [IF_RSb] = fmt_rs_b, 2455*0472e113SJosef 'Jeff' Sipek [IF_RSI] = fmt_rsi, 2456*0472e113SJosef 'Jeff' Sipek [IF_RSLa] = fmt_rsl_a, 2457*0472e113SJosef 'Jeff' Sipek [IF_RSLb] = fmt_rsl_b, 2458*0472e113SJosef 'Jeff' Sipek [IF_RSYa] = fmt_rsy_a, 2459*0472e113SJosef 'Jeff' Sipek [IF_RSYb] = fmt_rsy_b, 2460*0472e113SJosef 'Jeff' Sipek [IF_RXa] = fmt_rx_a, 2461*0472e113SJosef 'Jeff' Sipek [IF_RXb] = fmt_rx_b, 2462*0472e113SJosef 'Jeff' Sipek [IF_RXE] = fmt_rxe, 2463*0472e113SJosef 'Jeff' Sipek [IF_RXF] = fmt_rxf, 2464*0472e113SJosef 'Jeff' Sipek [IF_RXYa] = fmt_rxy_a, 2465*0472e113SJosef 'Jeff' Sipek [IF_RXYb] = fmt_rxy_b, 2466*0472e113SJosef 'Jeff' Sipek [IF_S] = fmt_s, 2467*0472e113SJosef 'Jeff' Sipek [IF_SI] = fmt_si, 2468*0472e113SJosef 'Jeff' Sipek [IF_SIL] = fmt_sil, 2469*0472e113SJosef 'Jeff' Sipek [IF_SIY] = fmt_siy, 2470*0472e113SJosef 'Jeff' Sipek [IF_SMI] = fmt_smi, 2471*0472e113SJosef 'Jeff' Sipek [IF_SSa] = fmt_ss_a, 2472*0472e113SJosef 'Jeff' Sipek [IF_SSb] = fmt_ss_b, 2473*0472e113SJosef 'Jeff' Sipek [IF_SSc] = fmt_ss_c, 2474*0472e113SJosef 'Jeff' Sipek [IF_SSd] = fmt_ss_d, 2475*0472e113SJosef 'Jeff' Sipek [IF_SSe] = fmt_ss_e, 2476*0472e113SJosef 'Jeff' Sipek [IF_SSf] = fmt_ss_f, 2477*0472e113SJosef 'Jeff' Sipek [IF_SSE] = fmt_sse, 2478*0472e113SJosef 'Jeff' Sipek [IF_SSF] = fmt_ssf, 2479*0472e113SJosef 'Jeff' Sipek }; 2480*0472e113SJosef 'Jeff' Sipek 2481*0472e113SJosef 'Jeff' Sipek /* 2482*0472e113SJosef 'Jeff' Sipek * Even if we don't know how to disassemble the instruction, we know how long 2483*0472e113SJosef 'Jeff' Sipek * it is, so we always succeed. That is why we can get away with returning 2484*0472e113SJosef 'Jeff' Sipek * void. 2485*0472e113SJosef 'Jeff' Sipek */ 2486*0472e113SJosef 'Jeff' Sipek static void 2487*0472e113SJosef 'Jeff' Sipek dis_s390(uint64_t addr, union inst *inst, char *buf, size_t buflen, int mach) 2488*0472e113SJosef 'Jeff' Sipek { 2489*0472e113SJosef 'Jeff' Sipek const struct inst_table *tbl = &tbl_xx[inst->raw[0]]; 2490*0472e113SJosef 'Jeff' Sipek int tmp; 2491*0472e113SJosef 'Jeff' Sipek 2492*0472e113SJosef 'Jeff' Sipek /* nothing to do */ 2493*0472e113SJosef 'Jeff' Sipek if (buflen == 0) 2494*0472e113SJosef 'Jeff' Sipek return; 2495*0472e113SJosef 'Jeff' Sipek 2496*0472e113SJosef 'Jeff' Sipek while (tbl->it_fmt == IF_TBL || tbl->it_fmt == IF_MULTI) { 2497*0472e113SJosef 'Jeff' Sipek if (tbl->it_fmt == IF_TBL) { 2498*0472e113SJosef 'Jeff' Sipek int idx; 2499*0472e113SJosef 'Jeff' Sipek 2500*0472e113SJosef 'Jeff' Sipek idx = inst->raw[tbl->it_u.it_table.it_off]; 2501*0472e113SJosef 'Jeff' Sipek idx >>= tbl->it_u.it_table.it_shift; 2502*0472e113SJosef 'Jeff' Sipek idx &= tbl->it_u.it_table.it_mask; 2503*0472e113SJosef 'Jeff' Sipek 2504*0472e113SJosef 'Jeff' Sipek tbl = &tbl->it_u.it_table.it_ptr[idx]; 2505*0472e113SJosef 'Jeff' Sipek } else if (tbl->it_fmt == IF_MULTI) { 2506*0472e113SJosef 'Jeff' Sipek tbl = &tbl->it_u.it_multi.it_ptr[mach]; 2507*0472e113SJosef 'Jeff' Sipek } 2508*0472e113SJosef 'Jeff' Sipek } 2509*0472e113SJosef 'Jeff' Sipek 2510*0472e113SJosef 'Jeff' Sipek if (tbl->it_fmt == IF_INVAL) 2511*0472e113SJosef 'Jeff' Sipek goto inval; 2512*0472e113SJosef 'Jeff' Sipek 2513*0472e113SJosef 'Jeff' Sipek if ((tbl->it_u.it_inst.it_flags & mach) == 0) 2514*0472e113SJosef 'Jeff' Sipek goto inval; 2515*0472e113SJosef 'Jeff' Sipek 2516*0472e113SJosef 'Jeff' Sipek tmp = snprintf(buf, buflen, "%-7s ", tbl->it_u.it_inst.it_name); 2517*0472e113SJosef 'Jeff' Sipek if (tmp < 0) 2518*0472e113SJosef 'Jeff' Sipek return; 2519*0472e113SJosef 'Jeff' Sipek 2520*0472e113SJosef 'Jeff' Sipek fmt_fxns[tbl->it_fmt](addr, inst, buf + tmp, buflen - tmp, 2521*0472e113SJosef 'Jeff' Sipek tbl->it_u.it_inst.it_flags); 2522*0472e113SJosef 'Jeff' Sipek 2523*0472e113SJosef 'Jeff' Sipek return; 2524*0472e113SJosef 'Jeff' Sipek 2525*0472e113SJosef 'Jeff' Sipek inval: 2526*0472e113SJosef 'Jeff' Sipek (void) snprintf(buf, buflen, "??"); 2527*0472e113SJosef 'Jeff' Sipek } 2528*0472e113SJosef 'Jeff' Sipek 2529*0472e113SJosef 'Jeff' Sipek static int 2530*0472e113SJosef 'Jeff' Sipek dis_s390_supports_flags(int flags) 2531*0472e113SJosef 'Jeff' Sipek { 2532*0472e113SJosef 'Jeff' Sipek int archflags = flags & DIS_ARCH_MASK; 2533*0472e113SJosef 'Jeff' Sipek 2534*0472e113SJosef 'Jeff' Sipek if (archflags == DIS_S370 || archflags == DIS_S390_31 || 2535*0472e113SJosef 'Jeff' Sipek archflags == DIS_S390_64) 2536*0472e113SJosef 'Jeff' Sipek return (1); 2537*0472e113SJosef 'Jeff' Sipek 2538*0472e113SJosef 'Jeff' Sipek return (0); 2539*0472e113SJosef 'Jeff' Sipek } 2540*0472e113SJosef 'Jeff' Sipek 2541*0472e113SJosef 'Jeff' Sipek static int 2542*0472e113SJosef 'Jeff' Sipek dis_s390_disassemble(dis_handle_t *dhp, uint64_t addr, char *buf, 2543*0472e113SJosef 'Jeff' Sipek size_t buflen) 2544*0472e113SJosef 'Jeff' Sipek { 2545*0472e113SJosef 'Jeff' Sipek union inst inst; 2546*0472e113SJosef 'Jeff' Sipek int mach; 2547*0472e113SJosef 'Jeff' Sipek int len; 2548*0472e113SJosef 'Jeff' Sipek 2549*0472e113SJosef 'Jeff' Sipek if (dhp->dh_read(dhp->dh_data, addr, &inst.raw[0], 2) != 2) 2550*0472e113SJosef 'Jeff' Sipek return (-1); 2551*0472e113SJosef 'Jeff' Sipek 2552*0472e113SJosef 'Jeff' Sipek len = ILC2LEN(inst.raw[0] >> 6) - 2; 2553*0472e113SJosef 'Jeff' Sipek 2554*0472e113SJosef 'Jeff' Sipek if (len > 0 && 2555*0472e113SJosef 'Jeff' Sipek dhp->dh_read(dhp->dh_data, addr + 2, &inst.raw[2], len) != len) 2556*0472e113SJosef 'Jeff' Sipek return (-1); 2557*0472e113SJosef 'Jeff' Sipek 2558*0472e113SJosef 'Jeff' Sipek switch (dhp->dh_flags & (DIS_S370 | DIS_S390_31 | DIS_S390_64)) { 2559*0472e113SJosef 'Jeff' Sipek case DIS_S370: 2560*0472e113SJosef 'Jeff' Sipek mach = F_370; 2561*0472e113SJosef 'Jeff' Sipek break; 2562*0472e113SJosef 'Jeff' Sipek case DIS_S390_31: 2563*0472e113SJosef 'Jeff' Sipek mach = F_390; 2564*0472e113SJosef 'Jeff' Sipek break; 2565*0472e113SJosef 'Jeff' Sipek case DIS_S390_64: 2566*0472e113SJosef 'Jeff' Sipek mach = F_Z; 2567*0472e113SJosef 'Jeff' Sipek break; 2568*0472e113SJosef 'Jeff' Sipek } 2569*0472e113SJosef 'Jeff' Sipek 2570*0472e113SJosef 'Jeff' Sipek dis_s390(addr, &inst, buf, buflen, mach); 2571*0472e113SJosef 'Jeff' Sipek 2572*0472e113SJosef 'Jeff' Sipek return (0); 2573*0472e113SJosef 'Jeff' Sipek } 2574*0472e113SJosef 'Jeff' Sipek 2575*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 2576*0472e113SJosef 'Jeff' Sipek static int 2577*0472e113SJosef 'Jeff' Sipek dis_s390_min_instrlen(dis_handle_t *dhp) 2578*0472e113SJosef 'Jeff' Sipek { 2579*0472e113SJosef 'Jeff' Sipek return (2); 2580*0472e113SJosef 'Jeff' Sipek } 2581*0472e113SJosef 'Jeff' Sipek 2582*0472e113SJosef 'Jeff' Sipek /* ARGSUSED */ 2583*0472e113SJosef 'Jeff' Sipek static int 2584*0472e113SJosef 'Jeff' Sipek dis_s390_max_instrlen(dis_handle_t *dhp) 2585*0472e113SJosef 'Jeff' Sipek { 2586*0472e113SJosef 'Jeff' Sipek return (6); 2587*0472e113SJosef 'Jeff' Sipek } 2588*0472e113SJosef 'Jeff' Sipek 2589*0472e113SJosef 'Jeff' Sipek dis_arch_t dis_arch_s390 = { 2590*0472e113SJosef 'Jeff' Sipek .da_supports_flags = dis_s390_supports_flags, 2591*0472e113SJosef 'Jeff' Sipek .da_disassemble = dis_s390_disassemble, 2592*0472e113SJosef 'Jeff' Sipek .da_min_instrlen = dis_s390_min_instrlen, 2593*0472e113SJosef 'Jeff' Sipek .da_max_instrlen = dis_s390_max_instrlen, 2594*0472e113SJosef 'Jeff' Sipek }; 2595