00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 struct a29k_opcode {
00021
00022 char *name;
00023
00024
00025 unsigned long opcode;
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062 char *args;
00063 };
00064
00065 static const struct a29k_opcode a29k_opcodes[] =
00066 {
00067
00068 { "add", 0x14000000, "c,a,b" },
00069 { "add", 0x15000000, "c,a,i" },
00070 { "addc", 0x1c000000, "c,a,b" },
00071 { "addc", 0x1d000000, "c,a,i" },
00072 { "addcs", 0x18000000, "c,a,b" },
00073 { "addcs", 0x19000000, "c,a,i" },
00074 { "addcu", 0x1a000000, "c,a,b" },
00075 { "addcu", 0x1b000000, "c,a,i" },
00076 { "adds", 0x10000000, "c,a,b" },
00077 { "adds", 0x11000000, "c,a,i" },
00078 { "addu", 0x12000000, "c,a,b" },
00079 { "addu", 0x13000000, "c,a,i" },
00080 { "and", 0x90000000, "c,a,b" },
00081 { "and", 0x91000000, "c,a,i" },
00082 { "andn", 0x9c000000, "c,a,b" },
00083 { "andn", 0x9d000000, "c,a,i" },
00084 { "aseq", 0x70000000, "v,a,b" },
00085 { "aseq", 0x71000000, "v,a,i" },
00086 { "asge", 0x5c000000, "v,a,b" },
00087 { "asge", 0x5d000000, "v,a,i" },
00088 { "asgeu", 0x5e000000, "v,a,b" },
00089 { "asgeu", 0x5f000000, "v,a,i" },
00090 { "asgt", 0x58000000, "v,a,b" },
00091 { "asgt", 0x59000000, "v,a,i" },
00092 { "asgtu", 0x5a000000, "v,a,b" },
00093 { "asgtu", 0x5b000000, "v,a,i" },
00094 { "asle", 0x54000000, "v,a,b" },
00095 { "asle", 0x55000000, "v,a,i" },
00096 { "asleu", 0x56000000, "v,a,b" },
00097 { "asleu", 0x57000000, "v,a,i" },
00098 { "aslt", 0x50000000, "v,a,b" },
00099 { "aslt", 0x51000000, "v,a,i" },
00100 { "asltu", 0x52000000, "v,a,b" },
00101 { "asltu", 0x53000000, "v,a,i" },
00102 { "asneq", 0x72000000, "v,a,b" },
00103 { "asneq", 0x73000000, "v,a,i" },
00104 { "call", 0xa8000000, "a,P" },
00105 { "call", 0xa9000000, "a,A" },
00106 { "calli", 0xc8000000, "a,b" },
00107 { "class", 0xe6000000, "c,a,f" },
00108 { "clz", 0x08000000, "c,b" },
00109 { "clz", 0x09000000, "c,i" },
00110 { "const", 0x03000000, "a,x" },
00111 { "consth", 0x02000000, "a,h" },
00112 { "consthz", 0x05000000, "a,h" },
00113 { "constn", 0x01000000, "a,X" },
00114 { "convert", 0xe4000000, "c,a,u,r,d,f" },
00115 { "cpbyte", 0x2e000000, "c,a,b" },
00116 { "cpbyte", 0x2f000000, "c,a,i" },
00117 { "cpeq", 0x60000000, "c,a,b" },
00118 { "cpeq", 0x61000000, "c,a,i" },
00119 { "cpge", 0x4c000000, "c,a,b" },
00120 { "cpge", 0x4d000000, "c,a,i" },
00121 { "cpgeu", 0x4e000000, "c,a,b" },
00122 { "cpgeu", 0x4f000000, "c,a,i" },
00123 { "cpgt", 0x48000000, "c,a,b" },
00124 { "cpgt", 0x49000000, "c,a,i" },
00125 { "cpgtu", 0x4a000000, "c,a,b" },
00126 { "cpgtu", 0x4b000000, "c,a,i" },
00127 { "cple", 0x44000000, "c,a,b" },
00128 { "cple", 0x45000000, "c,a,i" },
00129 { "cpleu", 0x46000000, "c,a,b" },
00130 { "cpleu", 0x47000000, "c,a,i" },
00131 { "cplt", 0x40000000, "c,a,b" },
00132 { "cplt", 0x41000000, "c,a,i" },
00133 { "cpltu", 0x42000000, "c,a,b" },
00134 { "cpltu", 0x43000000, "c,a,i" },
00135 { "cpneq", 0x62000000, "c,a,b" },
00136 { "cpneq", 0x63000000, "c,a,i" },
00137 { "dadd", 0xf1000000, "c,a,b" },
00138 { "ddiv", 0xf7000000, "c,a,b" },
00139 { "deq", 0xeb000000, "c,a,b" },
00140 { "dge", 0xef000000, "c,a,b" },
00141 { "dgt", 0xed000000, "c,a,b" },
00142 { "div", 0x6a000000, "c,a,b" },
00143 { "div", 0x6b000000, "c,a,i" },
00144 { "div0", 0x68000000, "c,b" },
00145 { "div0", 0x69000000, "c,i" },
00146 { "divide", 0xe1000000, "c,a,b" },
00147 { "dividu", 0xe3000000, "c,a,b" },
00148 { "divl", 0x6c000000, "c,a,b" },
00149 { "divl", 0x6d000000, "c,a,i" },
00150 { "divrem", 0x6e000000, "c,a,b" },
00151 { "divrem", 0x6f000000, "c,a,i" },
00152 { "dmac", 0xd9000000, "F,C,a,b" },
00153 { "dmsm", 0xdb000000, "c,a,b" },
00154 { "dmul", 0xf5000000, "c,a,b" },
00155 { "dsub", 0xf3000000, "c,a,b" },
00156 { "emulate", 0xd7000000, "v,a,b" },
00157 { "exbyte", 0x0a000000, "c,a,b" },
00158 { "exbyte", 0x0b000000, "c,a,i" },
00159 { "exhw", 0x7c000000, "c,a,b" },
00160 { "exhw", 0x7d000000, "c,a,i" },
00161 { "exhws", 0x7e000000, "c,a" },
00162 { "extract", 0x7a000000, "c,a,b" },
00163 { "extract", 0x7b000000, "c,a,i" },
00164 { "fadd", 0xf0000000, "c,a,b" },
00165 { "fdiv", 0xf6000000, "c,a,b" },
00166 { "fdmul", 0xf9000000, "c,a,b" },
00167 { "feq", 0xea000000, "c,a,b" },
00168 { "fge", 0xee000000, "c,a,b" },
00169 { "fgt", 0xec000000, "c,a,b" },
00170 { "fmac", 0xd8000000, "F,C,a,b" },
00171 { "fmsm", 0xda000000, "c,a,b" },
00172 { "fmul", 0xf4000000, "c,a,b" },
00173 { "fsub", 0xf2000000, "c,a,b" },
00174 { "halt", 0x89000000, "" },
00175 { "inbyte", 0x0c000000, "c,a,b" },
00176 { "inbyte", 0x0d000000, "c,a,i" },
00177 { "inhw", 0x78000000, "c,a,b" },
00178 { "inhw", 0x79000000, "c,a,i" },
00179 { "inv", 0x9f000000, "I" },
00180 { "iret", 0x88000000, "" },
00181 { "iretinv", 0x8c000000, "I" },
00182 { "jmp", 0xa0000000, "P" },
00183 { "jmp", 0xa1000000, "A" },
00184 { "jmpf", 0xa4000000, "a,P" },
00185 { "jmpf", 0xa5000000, "a,A" },
00186 { "jmpfdec", 0xb4000000, "a,P" },
00187 { "jmpfdec", 0xb5000000, "a,A" },
00188 { "jmpfi", 0xc4000000, "a,b" },
00189 { "jmpi", 0xc0000000, "b" },
00190 { "jmpt", 0xac000000, "a,P" },
00191 { "jmpt", 0xad000000, "a,A" },
00192 { "jmpti", 0xcc000000, "a,b" },
00193 { "load", 0x16000000, "e,n,a,b" },
00194 { "load", 0x17000000, "e,n,a,i" },
00195 { "loadl", 0x06000000, "e,n,a,b" },
00196 { "loadl", 0x07000000, "e,n,a,i" },
00197 { "loadm", 0x36000000, "e,n,a,b" },
00198 { "loadm", 0x37000000, "e,n,a,i" },
00199 { "loadset", 0x26000000, "e,n,a,b" },
00200 { "loadset", 0x27000000, "e,n,a,i" },
00201 { "mfacc", 0xe9000100, "c,d,f" },
00202 { "mfsr", 0xc6000000, "c,s" },
00203 { "mftlb", 0xb6000000, "c,a" },
00204 { "mtacc", 0xe8010000, "a,d,f" },
00205 { "mtsr", 0xce000000, "s,b" },
00206 { "mtsrim", 0x04000000, "s,x" },
00207 { "mttlb", 0xbe000000, "a,b" },
00208 { "mul", 0x64000000, "c,a,b" },
00209 { "mul", 0x65000000, "c,a,i" },
00210 { "mull", 0x66000000, "c,a,b" },
00211 { "mull", 0x67000000, "c,a,i" },
00212 { "multiplu", 0xe2000000, "c,a,b" },
00213 { "multiply", 0xe0000000, "c,a,b" },
00214 { "multm", 0xde000000, "c,a,b" },
00215 { "multmu", 0xdf000000, "c,a,b" },
00216 { "mulu", 0x74000000, "c,a,b" },
00217 { "mulu", 0x75000000, "c,a,i" },
00218 { "nand", 0x9a000000, "c,a,b" },
00219 { "nand", 0x9b000000, "c,a,i" },
00220 { "nop", 0x70400101, "" },
00221 { "nor", 0x98000000, "c,a,b" },
00222 { "nor", 0x99000000, "c,a,i" },
00223 { "or", 0x92000000, "c,a,b" },
00224 { "or", 0x93000000, "c,a,i" },
00225 { "orn", 0xaa000000, "c,a,b" },
00226 { "orn", 0xab000000, "c,a,i" },
00227
00228
00229
00230
00231
00232 { "setip", 0x9e000000, "c,a,b" },
00233
00234 { "sll", 0x80000000, "c,a,b" },
00235 { "sll", 0x81000000, "c,a,i" },
00236 { "sqrt", 0xe5000000, "c,a,f" },
00237 { "sra", 0x86000000, "c,a,b" },
00238 { "sra", 0x87000000, "c,a,i" },
00239 { "srl", 0x82000000, "c,a,b" },
00240 { "srl", 0x83000000, "c,a,i" },
00241 { "store", 0x1e000000, "e,n,a,b" },
00242 { "store", 0x1f000000, "e,n,a,i" },
00243 { "storel", 0x0e000000, "e,n,a,b" },
00244 { "storel", 0x0f000000, "e,n,a,i" },
00245 { "storem", 0x3e000000, "e,n,a,b" },
00246 { "storem", 0x3f000000, "e,n,a,i" },
00247 { "sub", 0x24000000, "c,a,b" },
00248 { "sub", 0x25000000, "c,a,i" },
00249 { "subc", 0x2c000000, "c,a,b" },
00250 { "subc", 0x2d000000, "c,a,i" },
00251 { "subcs", 0x28000000, "c,a,b" },
00252 { "subcs", 0x29000000, "c,a,i" },
00253 { "subcu", 0x2a000000, "c,a,b" },
00254 { "subcu", 0x2b000000, "c,a,i" },
00255 { "subr", 0x34000000, "c,a,b" },
00256 { "subr", 0x35000000, "c,a,i" },
00257 { "subrc", 0x3c000000, "c,a,b" },
00258 { "subrc", 0x3d000000, "c,a,i" },
00259 { "subrcs", 0x38000000, "c,a,b" },
00260 { "subrcs", 0x39000000, "c,a,i" },
00261 { "subrcu", 0x3a000000, "c,a,b" },
00262 { "subrcu", 0x3b000000, "c,a,i" },
00263 { "subrs", 0x30000000, "c,a,b" },
00264 { "subrs", 0x31000000, "c,a,i" },
00265 { "subru", 0x32000000, "c,a,b" },
00266 { "subru", 0x33000000, "c,a,i" },
00267 { "subs", 0x20000000, "c,a,b" },
00268 { "subs", 0x21000000, "c,a,i" },
00269 { "subu", 0x22000000, "c,a,b" },
00270 { "subu", 0x23000000, "c,a,i" },
00271 { "xnor", 0x96000000, "c,a,b" },
00272 { "xnor", 0x97000000, "c,a,i" },
00273 { "xor", 0x94000000, "c,a,b" },
00274 { "xor", 0x95000000, "c,a,i" },
00275
00276 { "", 0x0, "" }
00277
00278
00279 };
00280
00281 const unsigned int num_opcodes = (((sizeof a29k_opcodes) / (sizeof a29k_opcodes[0])) - 1);