1 /* Instruction opcode header for openrisc. 2 3 THIS FILE IS MACHINE GENERATED WITH CGEN. 4 5 Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. 6 7 This file is part of the GNU Binutils and/or GDB, the GNU debugger. 8 9 This program is free software; you can redistribute it and/or modify 10 it under the terms of the GNU General Public License as published by 11 the Free Software Foundation; either version 2, or (at your option) 12 any later version. 13 14 This program is distributed in the hope that it will be useful, 15 but WITHOUT ANY WARRANTY; without even the implied warranty of 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 GNU General Public License for more details. 18 19 You should have received a copy of the GNU General Public License along 20 with this program; if not, write to the Free Software Foundation, Inc., 21 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 22 23 */ 24 25 #ifndef OPENRISC_OPC_H 26 #define OPENRISC_OPC_H 27 28 /* -- opc.h */ 29 #undef CGEN_DIS_HASH_SIZE 30 #define CGEN_DIS_HASH_SIZE 64 31 #undef CGEN_DIS_HASH 32 #define CGEN_DIS_HASH(buffer, value) (((unsigned char *) (buffer))[0] >> 2) 33 34 extern long openrisc_sign_extend_16bit PARAMS ((long)); 35 /* -- */ 36 /* Enum declaration for openrisc instruction types. */ 37 typedef enum cgen_insn_type { 38 OPENRISC_INSN_INVALID, OPENRISC_INSN_L_J, OPENRISC_INSN_L_JAL, OPENRISC_INSN_L_JR 39 , OPENRISC_INSN_L_JALR, OPENRISC_INSN_L_BAL, OPENRISC_INSN_L_BNF, OPENRISC_INSN_L_BF 40 , OPENRISC_INSN_L_BRK, OPENRISC_INSN_L_RFE, OPENRISC_INSN_L_SYS, OPENRISC_INSN_L_NOP 41 , OPENRISC_INSN_L_MOVHI, OPENRISC_INSN_L_MFSR, OPENRISC_INSN_L_MTSR, OPENRISC_INSN_L_LW 42 , OPENRISC_INSN_L_LBZ, OPENRISC_INSN_L_LBS, OPENRISC_INSN_L_LHZ, OPENRISC_INSN_L_LHS 43 , OPENRISC_INSN_L_SW, OPENRISC_INSN_L_SB, OPENRISC_INSN_L_SH, OPENRISC_INSN_L_SLL 44 , OPENRISC_INSN_L_SLLI, OPENRISC_INSN_L_SRL, OPENRISC_INSN_L_SRLI, OPENRISC_INSN_L_SRA 45 , OPENRISC_INSN_L_SRAI, OPENRISC_INSN_L_ROR, OPENRISC_INSN_L_RORI, OPENRISC_INSN_L_ADD 46 , OPENRISC_INSN_L_ADDI, OPENRISC_INSN_L_SUB, OPENRISC_INSN_L_SUBI, OPENRISC_INSN_L_AND 47 , OPENRISC_INSN_L_ANDI, OPENRISC_INSN_L_OR, OPENRISC_INSN_L_ORI, OPENRISC_INSN_L_XOR 48 , OPENRISC_INSN_L_XORI, OPENRISC_INSN_L_MUL, OPENRISC_INSN_L_MULI, OPENRISC_INSN_L_DIV 49 , OPENRISC_INSN_L_DIVU, OPENRISC_INSN_L_SFGTS, OPENRISC_INSN_L_SFGTU, OPENRISC_INSN_L_SFGES 50 , OPENRISC_INSN_L_SFGEU, OPENRISC_INSN_L_SFLTS, OPENRISC_INSN_L_SFLTU, OPENRISC_INSN_L_SFLES 51 , OPENRISC_INSN_L_SFLEU, OPENRISC_INSN_L_SFGTSI, OPENRISC_INSN_L_SFGTUI, OPENRISC_INSN_L_SFGESI 52 , OPENRISC_INSN_L_SFGEUI, OPENRISC_INSN_L_SFLTSI, OPENRISC_INSN_L_SFLTUI, OPENRISC_INSN_L_SFLESI 53 , OPENRISC_INSN_L_SFLEUI, OPENRISC_INSN_L_SFEQ, OPENRISC_INSN_L_SFEQI, OPENRISC_INSN_L_SFNE 54 , OPENRISC_INSN_L_SFNEI 55 } CGEN_INSN_TYPE; 56 57 /* Index of `invalid' insn place holder. */ 58 #define CGEN_INSN_INVALID OPENRISC_INSN_INVALID 59 60 /* Total number of insns in table. */ 61 #define MAX_INSNS ((int) OPENRISC_INSN_L_SFNEI + 1) 62 63 /* This struct records data prior to insertion or after extraction. */ 64 struct cgen_fields 65 { 66 int length; 67 long f_nil; 68 long f_anyof; 69 long f_class; 70 long f_sub; 71 long f_r1; 72 long f_r2; 73 long f_r3; 74 long f_simm16; 75 long f_uimm16; 76 long f_uimm5; 77 long f_hi16; 78 long f_lo16; 79 long f_op1; 80 long f_op2; 81 long f_op3; 82 long f_op4; 83 long f_op5; 84 long f_op6; 85 long f_op7; 86 long f_i16_1; 87 long f_i16_2; 88 long f_disp26; 89 long f_abs26; 90 long f_i16nc; 91 long f_f_15_8; 92 long f_f_10_3; 93 long f_f_4_1; 94 long f_f_7_3; 95 long f_f_10_7; 96 long f_f_10_11; 97 }; 98 99 #define CGEN_INIT_PARSE(od) \ 100 {\ 101 } 102 #define CGEN_INIT_INSERT(od) \ 103 {\ 104 } 105 #define CGEN_INIT_EXTRACT(od) \ 106 {\ 107 } 108 #define CGEN_INIT_PRINT(od) \ 109 {\ 110 } 111 112 113 #endif /* OPENRISC_OPC_H */ 114