1968cf8f2Schristos /* Opcode table header for Visium. 2968cf8f2Schristos 3*aab831ceSchristos Copyright (C) 2003-2024 Free Software Foundation, Inc. 4968cf8f2Schristos 5968cf8f2Schristos This file is part of GDB, GAS, and GNU binutils. 6968cf8f2Schristos 7968cf8f2Schristos GDB, GAS and the GNU binutils are free software; you can redistribute 8968cf8f2Schristos them and/or modify them under the terms of the GNU General Public 9968cf8f2Schristos License as published by the Free Software Foundation; either version 3, 10968cf8f2Schristos or (at your option) any later version. 11968cf8f2Schristos 12968cf8f2Schristos GDB, GAS, and the GNU binutils are distributed in the hope that they 13968cf8f2Schristos will be useful, but WITHOUT ANY WARRANTY; without even the implied 14968cf8f2Schristos warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See 15968cf8f2Schristos the GNU General Public License for more details. 16968cf8f2Schristos 17968cf8f2Schristos You should have received a copy of the GNU General Public License 18968cf8f2Schristos along with this file; see the file COPYING3. If not, write to the Free 19968cf8f2Schristos Software Foundation, 51 Franklin Street - Fifth Floor, Boston, 20968cf8f2Schristos MA 02110-1301, USA. */ 21968cf8f2Schristos 22968cf8f2Schristos enum visium_opcode_arch_val 23968cf8f2Schristos { 24968cf8f2Schristos VISIUM_OPCODE_ARCH_DEF = 0, 25968cf8f2Schristos VISIUM_OPCODE_ARCH_GR5, 26968cf8f2Schristos VISIUM_OPCODE_ARCH_GR6, 27968cf8f2Schristos VISIUM_OPCODE_ARCH_BAD 28968cf8f2Schristos }; 29968cf8f2Schristos 30968cf8f2Schristos /* The highest architecture in the table. */ 31968cf8f2Schristos #define VISIUM_OPCODE_ARCH_MAX (VISIUM_OPCODE_ARCH_BAD - 1) 32968cf8f2Schristos 33968cf8f2Schristos /* Given an enum visium_opcode_arch_val, return the bitmask to use in 34968cf8f2Schristos insn encoding/decoding. */ 35968cf8f2Schristos #define VISIUM_OPCODE_ARCH_MASK(arch) (1 << (arch)) 36968cf8f2Schristos 37968cf8f2Schristos /* Some defines to make life easy. */ 38968cf8f2Schristos #define MASK_DEF VISIUM_OPCODE_ARCH_MASK (VISIUM_OPCODE_ARCH_DEF) 39968cf8f2Schristos #define MASK_GR5 VISIUM_OPCODE_ARCH_MASK (VISIUM_OPCODE_ARCH_GR5) 40968cf8f2Schristos #define MASK_GR6 VISIUM_OPCODE_ARCH_MASK (VISIUM_OPCODE_ARCH_GR6) 41968cf8f2Schristos 42968cf8f2Schristos /* Bit masks of architectures supporting the insn. */ 43968cf8f2Schristos #define def (MASK_DEF | MASK_GR5 | MASK_GR6) 44968cf8f2Schristos #define gr5 (MASK_GR5 | MASK_GR6) 45968cf8f2Schristos #define gr6 (MASK_GR6) 46968cf8f2Schristos 47968cf8f2Schristos /* The condition code field is not used (zero) for most instructions. 48968cf8f2Schristos BRR and BRA make normal use of it. Floating point instructions use 49968cf8f2Schristos it as a sub-opcode. */ 50968cf8f2Schristos #define CC_MASK (0xf << 27) 51968cf8f2Schristos 52968cf8f2Schristos /* It seems a shame not to use these bits in a class 0 instruction, 53968cf8f2Schristos since they could be used to extend the range of the branch. */ 54968cf8f2Schristos #define CLASS0_UNUSED_MASK (0x1f << 16) 55968cf8f2Schristos 56968cf8f2Schristos /* For class 1 instructions the following bit is unused. */ 57968cf8f2Schristos #define CLASS1_UNUSED_MASK (1 << 9) 58968cf8f2Schristos 59968cf8f2Schristos /* For class 1 instructions this field gives the index for a write 60968cf8f2Schristos instruction, the specific operation for an EAM instruction, or 61968cf8f2Schristos the floating point destination register for a floating point 62968cf8f2Schristos instruction. */ 63968cf8f2Schristos #define CLASS1_INDEX_MASK (0x1f << 10) 64968cf8f2Schristos 65968cf8f2Schristos /* For class 3 instructions the following field gives the destination 66968cf8f2Schristos general register. */ 67968cf8f2Schristos #define CLASS3_DEST_MASK (0x1f << 10) 68968cf8f2Schristos 69968cf8f2Schristos /* For class 1 and class 3 instructions the following bit selects an 70968cf8f2Schristos EAM write/read rather than a memory write/read. */ 71968cf8f2Schristos #define EAM_SELECT_MASK (1 << 15) 72968cf8f2Schristos 73968cf8f2Schristos /* Floating point instructions are distinguished from general EAM 74968cf8f2Schristos instructions by the following bit. */ 75968cf8f2Schristos #define FP_SELECT_MASK (1 << 3) 76968cf8f2Schristos 77968cf8f2Schristos /* For both class 1 and class 3 the following fields give, where 78968cf8f2Schristos appropriate the srcA and srcB registers whether floating point 79968cf8f2Schristos or general. */ 80968cf8f2Schristos #define SRCA_MASK (0x1f << 16) 81968cf8f2Schristos #define SRCB_MASK (0x1f << 4) 82968cf8f2Schristos 83968cf8f2Schristos /* The class 3 interrupt bit. It turns a BRA into a SYS1, and an 84968cf8f2Schristos RFLAG into a SYS2. This bit should not be set in the user's 85968cf8f2Schristos class 3 instructions. This bit is also used in class 3 86968cf8f2Schristos to distinguish between floating point and other EAM operations. 87968cf8f2Schristos (see FP_SELECT_MASK). */ 88968cf8f2Schristos #define CLASS3_INT (1 << 3) 89968cf8f2Schristos 90968cf8f2Schristos /* Class 3 shift instructions use this bit to indicate that the 91968cf8f2Schristos srcB field is a 5 bit immediate shift count rather than a 92968cf8f2Schristos register number. */ 93968cf8f2Schristos #define CLASS3_SOURCEB_IMMED (1 << 9) 94968cf8f2Schristos 95968cf8f2Schristos #define BMD 0x02630004 96968cf8f2Schristos #define BMI 0x82230004 97968cf8f2Schristos #define DSI 0x82800004 98968cf8f2Schristos #define ENI 0x02a00004 99968cf8f2Schristos #define RFI 0x82fe01d4 100968cf8f2Schristos 101968cf8f2Schristos struct reg_entry 102968cf8f2Schristos { 103ba340e45Schristos const char *name; 104968cf8f2Schristos unsigned char code; 105968cf8f2Schristos }; 106968cf8f2Schristos 107ba340e45Schristos static const struct reg_entry gen_reg_table[] ATTRIBUTE_UNUSED = 108968cf8f2Schristos { 109968cf8f2Schristos {"fp", 0x16}, 110968cf8f2Schristos {"r0", 0x0}, 111968cf8f2Schristos {"r1", 0x1}, 112968cf8f2Schristos {"r10", 0xA}, 113968cf8f2Schristos {"r11", 0xB}, 114968cf8f2Schristos {"r12", 0xC}, 115968cf8f2Schristos {"r13", 0xD}, 116968cf8f2Schristos {"r14", 0xE}, 117968cf8f2Schristos {"r15", 0xF}, 118968cf8f2Schristos {"r16", 0x10}, 119968cf8f2Schristos {"r17", 0x11}, 120968cf8f2Schristos {"r18", 0x12}, 121968cf8f2Schristos {"r19", 0x13}, 122968cf8f2Schristos {"r2", 0x2}, 123968cf8f2Schristos {"r20", 0x14}, 124968cf8f2Schristos {"r21", 0x15}, 125968cf8f2Schristos {"r22", 0x16}, 126968cf8f2Schristos {"r23", 0x17}, 127968cf8f2Schristos {"r24", 0x18}, 128968cf8f2Schristos {"r25", 0x19}, 129968cf8f2Schristos {"r26", 0x1a}, 130968cf8f2Schristos {"r27", 0x1b}, 131968cf8f2Schristos {"r28", 0x1c}, 132968cf8f2Schristos {"r29", 0x1d}, 133968cf8f2Schristos {"r3", 0x3}, 134968cf8f2Schristos {"r30", 0x1e}, 135968cf8f2Schristos {"r31", 0x1f}, 136968cf8f2Schristos {"r4", 0x4}, 137968cf8f2Schristos {"r5", 0x5}, 138968cf8f2Schristos {"r6", 0x6}, 139968cf8f2Schristos {"r7", 0x7}, 140968cf8f2Schristos {"r8", 0x8}, 141968cf8f2Schristos {"r9", 0x9}, 142968cf8f2Schristos {"sp", 0x17}, 143968cf8f2Schristos }; 144968cf8f2Schristos 145ba340e45Schristos static const struct reg_entry fp_reg_table[] ATTRIBUTE_UNUSED = 146968cf8f2Schristos { 147968cf8f2Schristos {"f0", 0x0}, 148968cf8f2Schristos {"f1", 0x1}, 149968cf8f2Schristos {"f10", 0xa}, 150968cf8f2Schristos {"f11", 0xb}, 151968cf8f2Schristos {"f12", 0xc}, 152968cf8f2Schristos {"f13", 0xd}, 153968cf8f2Schristos {"f14", 0xe}, 154968cf8f2Schristos {"f15", 0xf}, 155968cf8f2Schristos {"f2", 0x2}, 156968cf8f2Schristos {"f3", 0x3}, 157968cf8f2Schristos {"f4", 0x4}, 158968cf8f2Schristos {"f5", 0x5}, 159968cf8f2Schristos {"f6", 0x6}, 160968cf8f2Schristos {"f7", 0x7}, 161968cf8f2Schristos {"f8", 0x8}, 162968cf8f2Schristos {"f9", 0x9}, 163968cf8f2Schristos }; 164968cf8f2Schristos 165ba340e45Schristos static const struct cc_entry 166968cf8f2Schristos { 167ba340e45Schristos const char *name; 168968cf8f2Schristos int code; 169ba340e45Schristos } cc_table [] ATTRIBUTE_UNUSED = 170968cf8f2Schristos { 171968cf8f2Schristos {"cc", 6}, 172968cf8f2Schristos {"cs", 2}, 173968cf8f2Schristos {"eq", 1}, 174968cf8f2Schristos {"fa", 0}, 175968cf8f2Schristos {"ge", 9}, 176968cf8f2Schristos {"gt", 10}, 177968cf8f2Schristos {"hi", 11}, 178968cf8f2Schristos {"le", 12}, 179968cf8f2Schristos {"ls", 13}, 180968cf8f2Schristos {"lt", 14}, 181968cf8f2Schristos {"nc", 8}, 182968cf8f2Schristos {"ne", 5}, 183968cf8f2Schristos {"ns", 4}, 184968cf8f2Schristos {"oc", 7}, 185968cf8f2Schristos {"os", 3}, 186968cf8f2Schristos {"tr", 15}, 187968cf8f2Schristos }; 188968cf8f2Schristos 189968cf8f2Schristos enum addressing_mode 190968cf8f2Schristos { 191968cf8f2Schristos mode_d, /* register := */ 192968cf8f2Schristos mode_a, /* op= register */ 193968cf8f2Schristos mode_da, /* register := register */ 194968cf8f2Schristos mode_ab, /* register * register */ 195968cf8f2Schristos mode_dab, /* register := register * register */ 196968cf8f2Schristos mode_iab, /* 5-bit immediate * register * register */ 197968cf8f2Schristos mode_0ab, /* zero * register * register */ 198968cf8f2Schristos mode_da0, /* register := register * zero */ 199968cf8f2Schristos mode_cad, /* condition * register * register */ 200968cf8f2Schristos mode_das, /* register := register * 5-bit immed/register shift count */ 201968cf8f2Schristos mode_di, /* register := 5-bit immediate */ 202968cf8f2Schristos mode_ir, /* 5-bit immediate * register */ 203968cf8f2Schristos mode_ai, /* register 16-bit unsigned immediate */ 204968cf8f2Schristos mode_i, /* 16-bit unsigned immediate */ 205968cf8f2Schristos mode_bax, /* register * register * 5-bit immediate */ 206968cf8f2Schristos mode_dax, /* register := register * 5-bit immediate */ 207968cf8f2Schristos mode_s, /* special mode */ 208968cf8f2Schristos mode_sr, /* special mode with register */ 209968cf8f2Schristos mode_ci, /* condition * 16-bit signed word displacement */ 210968cf8f2Schristos mode_fdab, /* float := float * float */ 211968cf8f2Schristos mode_ifdab, /* fpinst: 4-bit immediate * float * float * float */ 212968cf8f2Schristos mode_idfab, /* fpuread: 4-bit immediate * register * float * float */ 213968cf8f2Schristos mode_fda, /* float := float */ 214968cf8f2Schristos mode_fdra, /* float := register */ 215968cf8f2Schristos mode_rdfab, /* register := float * float */ 216968cf8f2Schristos mode_rdfa, /* register := float */ 217968cf8f2Schristos mode_rrr, /* 3 register sources and destinations (block move) */ 218968cf8f2Schristos }; 219968cf8f2Schristos 220968cf8f2Schristos #define class0 (0<<25) 221968cf8f2Schristos #define class1 (1<<25) 222968cf8f2Schristos #define class2 (2<<25) 223968cf8f2Schristos #define class3 (3<<25) 224968cf8f2Schristos 225968cf8f2Schristos static const struct opcode_entry 226968cf8f2Schristos { 227ba340e45Schristos const char *mnem; 228968cf8f2Schristos enum addressing_mode mode; 229968cf8f2Schristos unsigned code; 230968cf8f2Schristos char flags; 231968cf8f2Schristos } 232ba340e45Schristos opcode_table[] ATTRIBUTE_UNUSED = 233968cf8f2Schristos { 234968cf8f2Schristos { "adc.b", mode_dab, class3|(1<<21)|(1), def }, 235968cf8f2Schristos { "adc.l", mode_dab, class3|(1<<21)|(4), def }, 236968cf8f2Schristos { "adc.w", mode_dab, class3|(1<<21)|(2), def }, 237968cf8f2Schristos { "add.b", mode_dab, class3|(0<<21)|(1), def }, 238968cf8f2Schristos { "add.l", mode_dab, class3|(0<<21)|(4), def }, 239968cf8f2Schristos { "add.w", mode_dab, class3|(0<<21)|(2), def }, 240968cf8f2Schristos { "addi", mode_ai, class2, def }, 241968cf8f2Schristos { "and.b", mode_dab, class3|(10<<21)|(1), def}, 242968cf8f2Schristos { "and.l", mode_dab, class3|(10<<21)|(4), def }, 243968cf8f2Schristos { "and.w", mode_dab, class3|(10<<21)|(2), def }, 244968cf8f2Schristos { "asl.b", mode_das, class3|(7<<21)|(1), def }, 245968cf8f2Schristos { "asl.l", mode_das, class3|(7<<21)|(4), def }, 246968cf8f2Schristos { "asl.w", mode_das, class3|(7<<21)|(2), def }, 247968cf8f2Schristos { "asld", mode_a, class1|(15<<21)|(1<<15)|(11<<10)|(4), def }, 248968cf8f2Schristos { "asr.b", mode_das, class3|(5<<21)|(1), def }, 249968cf8f2Schristos { "asr.l", mode_das, class3|(5<<21)|(4), def }, 250968cf8f2Schristos { "asr.w", mode_das, class3|(5<<21)|(2), def }, 251968cf8f2Schristos { "asrd", mode_a, class1|(15<<21)|(1<<15)|(9<<10)|(4), def }, 252968cf8f2Schristos { "bmd", mode_rrr, class1|(3<<21)|(3<<16)|(4), gr6 }, 253968cf8f2Schristos { "bmi", mode_rrr, class1|(1<<21)|(3<<16)|(4), gr6 }, 254968cf8f2Schristos { "bra", mode_cad, class3|(12<<21)|(4), def }, 255968cf8f2Schristos { "brr", mode_ci, class0, def }, 256968cf8f2Schristos { "cmp.b", mode_0ab, class3|(2<<21)|(1), def }, 257968cf8f2Schristos { "cmp.l", mode_0ab, class3|(2<<21)|(4), def }, 258968cf8f2Schristos { "cmp.w", mode_0ab, class3|(2<<21)|(2), def }, 259968cf8f2Schristos { "cmpc.b", mode_0ab, class3|(3<<21)|(1), def }, 260968cf8f2Schristos { "cmpc.l", mode_0ab, class3|(3<<21)|(4), def }, 261968cf8f2Schristos { "cmpc.w", mode_0ab, class3|(3<<21)|(2), def }, 262968cf8f2Schristos { "divds", mode_a, class1|(15<<21)|(1<<15)|(6<<10)|(4), def }, 263968cf8f2Schristos { "divdu", mode_a, class1|(15<<21)|(1<<15)|(7<<10)|(4), def }, 264968cf8f2Schristos { "divs", mode_a, class1|(15<<21)|(1<<15)|(2<<10)|(4), def }, 265968cf8f2Schristos { "divu", mode_a, class1|(15<<21)|(1<<15)|(3<<10)|(4), def }, 266968cf8f2Schristos { "dsi", mode_s, class1|(4<<21)|(4), def }, 267968cf8f2Schristos { "eamread", mode_di, class3|(15<<21)|(1<<15)|(1<<9)|(4), def }, 268968cf8f2Schristos { "eamwrite", mode_iab, class1|(15<<21)|(1<<15)|(4), def }, 269968cf8f2Schristos { "eni", mode_s, class1|(5<<21)|(4), def }, 270968cf8f2Schristos { "extb.b", mode_da, class3|(14<<21)|(1), def }, 271968cf8f2Schristos { "extb.l", mode_da, class3|(14<<21)|(4), def }, 272968cf8f2Schristos { "extb.w", mode_da, class3|(14<<21)|(2), def }, 273968cf8f2Schristos { "extw.l", mode_da, class3|(4<<21)|(4), def }, 274968cf8f2Schristos { "extw.w", mode_da, class3|(4<<21)|(2), def }, 275968cf8f2Schristos { "fabs", mode_fda, class1|(7<<27)|(15<<21)|(1<<15)|(1<<3)|(4), gr5 }, 276968cf8f2Schristos { "fadd", mode_fdab, class1|(1<<27)|(15<<21)|(1<<15)|(1<<3)|(4), gr5 }, 277968cf8f2Schristos { "fcmp", mode_rdfab,class3|(10<<27)|(15<<21)|(1<<15)|(1<<9)|(1<<3)|(4), gr5 }, 278968cf8f2Schristos { "fcmpe", mode_rdfab,class3|(11<<27)|(15<<21)|(1<<15)|(1<<9)|(1<<3)|(4), gr5 }, 279968cf8f2Schristos { "fdiv", mode_fdab, class1|(4<<27)|(15<<21)|(1<<15)|(1<<3)|(4), gr5 }, 280968cf8f2Schristos { "fload", mode_fdra, class1|(15<<21)|(1<<15)|(1<<3)|(4), gr5 }, 281968cf8f2Schristos { "fmove", mode_fda, class1|(12<<27)|(15<<21)|(1<<15)|(1<<3)|(4), gr5}, 282968cf8f2Schristos { "fmult", mode_fdab, class1|(3<<27)|(15<<21)|(1<<15)|(1<<3)|(4), gr5 }, 283968cf8f2Schristos { "fneg", mode_fda, class1|(6<<27)|(15<<21)|(1<<15)|(1<<3)|(4), gr5 }, 284968cf8f2Schristos { "fpinst", mode_ifdab,class1|(15<<21)|(1<<15)|(1<<3)|(4), gr5 }, 285968cf8f2Schristos { "fpuread", mode_idfab,class3|(15<<21)|(1<<15)|(1<<9)|(1<<3)|(4), gr5 }, 286968cf8f2Schristos { "fsqrt", mode_fda, class1|(5<<27)|(15<<21)|(1<<15)|(1<<3)|(4), gr5 }, 287968cf8f2Schristos { "fstore", mode_rdfa, class3|(15<<21)|(1<<15)|(1<<9)|(1<<3)|(4), gr5 }, 288968cf8f2Schristos { "fsub", mode_fdab, class1|(2<<27)|(15<<21)|(1<<15)|(1<<3)|(4), gr5 }, 289968cf8f2Schristos { "ftoi", mode_fda, class1|(8<<27)|(15<<21)|(1<<15)|(1<<3)|(4), gr5 }, 290968cf8f2Schristos { "itof", mode_fda, class1|(9<<27)|(15<<21)|(1<<15)|(1<<3)|(4), gr5 }, 291968cf8f2Schristos { "lsr.b", mode_das, class3|(6<<21)|(1), def }, 292968cf8f2Schristos { "lsr.l", mode_das, class3|(6<<21)|(4), def }, 293968cf8f2Schristos { "lsr.w", mode_das, class3|(6<<21)|(2), def }, 294968cf8f2Schristos { "lsrd", mode_a, class1|(15<<21)|(1<<15)|(10<<10)|(4), def }, 295968cf8f2Schristos { "move.b", mode_da0, class3|(9<<21)|(1), def }, 296968cf8f2Schristos { "move.l", mode_da0, class3|(9<<21)|(4), def }, 297968cf8f2Schristos { "move.w", mode_da0, class3|(9<<21)|(2), def }, 298968cf8f2Schristos { "movil", mode_ai, class2|(4<<21), def }, 299968cf8f2Schristos { "moviq", mode_ai, class2|(6<<21), def }, 300968cf8f2Schristos { "moviu", mode_ai, class2|(5<<21), def }, 301968cf8f2Schristos { "mults", mode_ab, class1|(15<<21)|(1<<15)|(0<<10)|(4), def }, 302968cf8f2Schristos { "multu", mode_ab, class1|(15<<21)|(1<<15)|(1<<10)|(4), def }, 303968cf8f2Schristos { "nop", mode_s, class0, def }, 304968cf8f2Schristos { "not.b", mode_da, class3|(11<<21)|(1), def }, 305968cf8f2Schristos { "not.l", mode_da, class3|(11<<21)|(4), def }, 306968cf8f2Schristos { "not.w", mode_da, class3|(11<<21)|(2), def }, 307968cf8f2Schristos { "or.b", mode_dab, class3|(9<<21)|(1), def }, 308968cf8f2Schristos { "or.l", mode_dab, class3|(9<<21)|(4), def }, 309968cf8f2Schristos { "or.w", mode_dab, class3|(9<<21)|(2), def }, 310968cf8f2Schristos { "read.b", mode_dax, class3|(15<<21)|(1<<9)|(1), def }, 311968cf8f2Schristos { "read.l", mode_dax, class3|(15<<21)|(1<<9)|(4), def }, 312968cf8f2Schristos { "read.w", mode_dax, class3|(15<<21)|(1<<9)|(2), def }, 313968cf8f2Schristos { "readmda", mode_d, class3|(15<<21)|(1<<15)|(1<<9)|(4), def }, 314968cf8f2Schristos { "readmdb", mode_d, class3|(15<<21)|(1<<15)|(1<<9)|(1<<4)|(4), def }, 315968cf8f2Schristos { "readmdc", mode_d, class3|(15<<21)|(1<<15)|(1<<9)|(2<<4)|(4), def }, 316968cf8f2Schristos { "rfi", mode_s, class1|(7<<21)|(30<<16)|(29<<4)|(4), def }, 317968cf8f2Schristos { "rflag", mode_d, class3|(13<<21)|(4), def }, 318968cf8f2Schristos { "stop", mode_ir, class1|(0<<21)|(4), def }, 319968cf8f2Schristos { "sub.b", mode_dab, class3|(2<<21)|(1), def }, 320968cf8f2Schristos { "sub.l", mode_dab, class3|(2<<21)|(4), def }, 321968cf8f2Schristos { "sub.w", mode_dab, class3|(2<<21)|(2), def }, 322968cf8f2Schristos { "subc.b", mode_dab, class3|(3<<21)|(1), def }, 323968cf8f2Schristos { "subc.l", mode_dab, class3|(3<<21)|(4), def }, 324968cf8f2Schristos { "subc.w", mode_dab, class3|(3<<21)|(2), def }, 325968cf8f2Schristos { "subi", mode_ai, class2|(2<<21), def }, 326968cf8f2Schristos { "trace", mode_ir, class1|(13<<21), def }, 327968cf8f2Schristos { "write.b", mode_bax, class1|(15<<21)|(1), def }, 328968cf8f2Schristos { "write.l", mode_bax, class1|(15<<21)|(4), def }, 329968cf8f2Schristos { "write.w", mode_bax, class1|(15<<21)|(2), def }, 330968cf8f2Schristos { "writemd", mode_ab, class1|(15<<21)|(1<<15)|(4<<10)|(4), def }, 331968cf8f2Schristos { "writemdc", mode_a, class1|(15<<21)|(1<<15)|(5<<10)|(4), def }, 332968cf8f2Schristos { "wrtl", mode_i, class2|(8<<21), gr6 }, 333968cf8f2Schristos { "wrtu", mode_i, class2|(9<<21), gr6 }, 334968cf8f2Schristos { "xor.b", mode_dab, class3|(8<<21)|(1), def }, 335968cf8f2Schristos { "xor.l", mode_dab, class3|(8<<21)|(4), def }, 336968cf8f2Schristos { "xor.w", mode_dab, class3|(8<<21)|(2), def }, 337968cf8f2Schristos }; 338ba340e45Schristos 339