Lines Matching full:info

159 static unsigned int m68k_read_disassembler_16(const m68k_info *info, const uint64_t addr)  in m68k_read_disassembler_16()  argument
161 const uint16_t v0 = info->code[addr + 0]; in m68k_read_disassembler_16()
162 const uint16_t v1 = info->code[addr + 1]; in m68k_read_disassembler_16()
166 static unsigned int m68k_read_disassembler_32(const m68k_info *info, const uint64_t addr) in m68k_read_disassembler_32() argument
168 const uint32_t v0 = info->code[addr + 0]; in m68k_read_disassembler_32()
169 const uint32_t v1 = info->code[addr + 1]; in m68k_read_disassembler_32()
170 const uint32_t v2 = info->code[addr + 2]; in m68k_read_disassembler_32()
171 const uint32_t v3 = info->code[addr + 3]; in m68k_read_disassembler_32()
175 static uint64_t m68k_read_disassembler_64(const m68k_info *info, const uint64_t addr) in m68k_read_disassembler_64() argument
177 const uint64_t v0 = info->code[addr + 0]; in m68k_read_disassembler_64()
178 const uint64_t v1 = info->code[addr + 1]; in m68k_read_disassembler_64()
179 const uint64_t v2 = info->code[addr + 2]; in m68k_read_disassembler_64()
180 const uint64_t v3 = info->code[addr + 3]; in m68k_read_disassembler_64()
181 const uint64_t v4 = info->code[addr + 4]; in m68k_read_disassembler_64()
182 const uint64_t v5 = info->code[addr + 5]; in m68k_read_disassembler_64()
183 const uint64_t v6 = info->code[addr + 6]; in m68k_read_disassembler_64()
184 const uint64_t v7 = info->code[addr + 7]; in m68k_read_disassembler_64()
188 static unsigned int m68k_read_safe_16(const m68k_info *info, const uint64_t address) in m68k_read_safe_16() argument
190 const uint64_t addr = (address - info->baseAddress) & info->address_mask; in m68k_read_safe_16()
191 if (info->code_len < addr + 2) { in m68k_read_safe_16()
194 return m68k_read_disassembler_16(info, addr); in m68k_read_safe_16()
197 static unsigned int m68k_read_safe_32(const m68k_info *info, const uint64_t address) in m68k_read_safe_32() argument
199 const uint64_t addr = (address - info->baseAddress) & info->address_mask; in m68k_read_safe_32()
200 if (info->code_len < addr + 4) { in m68k_read_safe_32()
203 return m68k_read_disassembler_32(info, addr); in m68k_read_safe_32()
206 static uint64_t m68k_read_safe_64(const m68k_info *info, const uint64_t address) in m68k_read_safe_64() argument
208 const uint64_t addr = (address - info->baseAddress) & info->address_mask; in m68k_read_safe_64()
209 if (info->code_len < addr + 8) { in m68k_read_safe_64()
212 return m68k_read_disassembler_64(info, addr); in m68k_read_safe_64()
227 static void d68000_invalid(m68k_info *info);
228 static int instruction_is_valid(m68k_info *info, const unsigned int word_check);
232 void (*opcode_handler)(m68k_info *info); /* handler function */
241 void (*instruction)(m68k_info *info); /* handler function */
293 #define LIMIT_CPU_TYPES(info, ALLOWED_CPU_TYPES) \ argument
295 if (!(info->type & ALLOWED_CPU_TYPES)) { \
296 d68000_invalid(info); \
301 static unsigned int peek_imm_8(const m68k_info *info) { return (m68k_read_safe_16((info), (info)->… in peek_imm_8() argument
302 static unsigned int peek_imm_16(const m68k_info *info) { return m68k_read_safe_16((info), (info)->p… in peek_imm_16() argument
303 static unsigned int peek_imm_32(const m68k_info *info) { return m68k_read_safe_32((info), (info)->p… in peek_imm_32() argument
304 …atic unsigned long long peek_imm_64(const m68k_info *info) { return m68k_read_safe_64((info), (inf… in peek_imm_64() argument
306 static unsigned int read_imm_8(m68k_info *info) { const unsigned int value = peek_imm_8(info); (i… in read_imm_8() argument
307 static unsigned int read_imm_16(m68k_info *info) { const unsigned int value = peek_imm_16(info); (i… in read_imm_16() argument
308 static unsigned int read_imm_32(m68k_info *info) { const unsigned int value = peek_imm_32(info); (i… in read_imm_32() argument
309 …c unsigned long long read_imm_64(m68k_info *info) { const unsigned long long value = peek_imm_64(i… in read_imm_64() argument
336 static void get_with_index_address_mode(m68k_info *info, cs_m68k_op* op, uint instruction, uint siz… in get_with_index_address_mode() argument
338 uint extension = read_imm_16(info); in get_with_index_address_mode()
356 …T(extension) ? (EXT_BASE_DISPLACEMENT_LONG(extension) ? read_imm_32(info) : read_imm_16(info)) : 0; in get_with_index_address_mode()
357 …(extension) ? (EXT_OUTER_DISPLACEMENT_LONG(extension) ? read_imm_32(info) : read_imm_16(info)) : 0; in get_with_index_address_mode()
421 static void get_ea_mode_op(m68k_info *info, cs_m68k_op* op, uint instruction, uint size) in get_ea_mode_op() argument
464 op->mem.disp = (int16_t)read_imm_16(info); in get_ea_mode_op()
469 get_with_index_address_mode(info, op, instruction, size, false); in get_ea_mode_op()
475 op->imm = read_imm_16(info); in get_ea_mode_op()
481 op->imm = read_imm_32(info); in get_ea_mode_op()
487 op->mem.disp = (int16_t)read_imm_16(info); in get_ea_mode_op()
492 get_with_index_address_mode(info, op, instruction, size, true); in get_ea_mode_op()
500 op->imm = read_imm_8(info) & 0xff; in get_ea_mode_op()
502 op->imm = read_imm_16(info) & 0xffff; in get_ea_mode_op()
504 op->imm = read_imm_32(info); in get_ea_mode_op()
506 op->imm = read_imm_64(info); in get_ea_mode_op()
515 static void set_insn_group(m68k_info *info, m68k_group_type group) in set_insn_group() argument
517 info->groups[info->groups_count++] = (uint8_t)group; in set_insn_group()
520 static cs_m68k* build_init_op(m68k_info *info, int opcode, int count, int size) in build_init_op() argument
524 MCInst_setOpcode(info->inst, opcode); in build_init_op()
526 ext = &info->extension; in build_init_op()
535 static void build_re_gen_1(m68k_info *info, bool isDreg, int opcode, uint8_t size) in build_re_gen_1() argument
539 cs_m68k* ext = build_init_op(info, opcode, 2, size); in build_re_gen_1()
546 op0->reg = M68K_REG_D0 + ((info->ir >> 9 ) & 7); in build_re_gen_1()
549 op0->reg = M68K_REG_A0 + ((info->ir >> 9 ) & 7); in build_re_gen_1()
552 get_ea_mode_op(info, op1, info->ir, size); in build_re_gen_1()
555 static void build_re_1(m68k_info *info, int opcode, uint8_t size) in build_re_1() argument
557 build_re_gen_1(info, true, opcode, size); in build_re_1()
560 static void build_er_gen_1(m68k_info *info, bool isDreg, int opcode, uint8_t size) in build_er_gen_1() argument
564 cs_m68k* ext = build_init_op(info, opcode, 2, size); in build_er_gen_1()
569 get_ea_mode_op(info, op0, info->ir, size); in build_er_gen_1()
573 op1->reg = M68K_REG_D0 + ((info->ir >> 9) & 7); in build_er_gen_1()
576 op1->reg = M68K_REG_A0 + ((info->ir >> 9) & 7); in build_er_gen_1()
580 static void build_rr(m68k_info *info, int opcode, uint8_t size, int imm) in build_rr() argument
585 cs_m68k* ext = build_init_op(info, opcode, 2, size); in build_rr()
592 op0->reg = M68K_REG_D0 + (info->ir & 7); in build_rr()
595 op1->reg = M68K_REG_D0 + ((info->ir >> 9) & 7); in build_rr()
605 static void build_r(m68k_info *info, int opcode, uint8_t size) in build_r() argument
609 cs_m68k* ext = build_init_op(info, opcode, 2, size); in build_r()
615 op0->reg = M68K_REG_D0 + ((info->ir >> 9) & 7); in build_r()
618 op1->reg = M68K_REG_D0 + (info->ir & 7); in build_r()
621 static void build_imm_ea(m68k_info *info, int opcode, uint8_t size, int imm) in build_imm_ea() argument
625 cs_m68k* ext = build_init_op(info, opcode, 2, size); in build_imm_ea()
634 get_ea_mode_op(info, op1, info->ir, size); in build_imm_ea()
637 static void build_3bit_d(m68k_info *info, int opcode, int size) in build_3bit_d() argument
641 cs_m68k* ext = build_init_op(info, opcode, 2, size); in build_3bit_d()
648 op0->imm = g_3bit_qdata_table[(info->ir >> 9) & 7]; in build_3bit_d()
651 op1->reg = M68K_REG_D0 + (info->ir & 7); in build_3bit_d()
654 static void build_3bit_ea(m68k_info *info, int opcode, int size) in build_3bit_ea() argument
658 cs_m68k* ext = build_init_op(info, opcode, 2, size); in build_3bit_ea()
665 op0->imm = g_3bit_qdata_table[(info->ir >> 9) & 7]; in build_3bit_ea()
667 get_ea_mode_op(info, op1, info->ir, size); in build_3bit_ea()
670 static void build_mm(m68k_info *info, int opcode, uint8_t size, int imm) in build_mm() argument
675 cs_m68k* ext = build_init_op(info, opcode, 2, size); in build_mm()
682 op0->reg = M68K_REG_A0 + (info->ir & 7); in build_mm()
685 op1->reg = M68K_REG_A0 + ((info->ir >> 9) & 7); in build_mm()
695 static void build_ea(m68k_info *info, int opcode, uint8_t size) in build_ea() argument
697 cs_m68k* ext = build_init_op(info, opcode, 1, size); in build_ea()
698 get_ea_mode_op(info, &ext->operands[0], info->ir, size); in build_ea()
701 static void build_ea_a(m68k_info *info, int opcode, uint8_t size) in build_ea_a() argument
705 cs_m68k* ext = build_init_op(info, opcode, 2, size); in build_ea_a()
710 get_ea_mode_op(info, op0, info->ir, size); in build_ea_a()
713 op1->reg = M68K_REG_A0 + ((info->ir >> 9) & 7); in build_ea_a()
716 static void build_ea_ea(m68k_info *info, int opcode, int size) in build_ea_ea() argument
720 cs_m68k* ext = build_init_op(info, opcode, 2, size); in build_ea_ea()
725 get_ea_mode_op(info, op0, info->ir, size); in build_ea_ea()
726 get_ea_mode_op(info, op1, (((info->ir>>9) & 7) | ((info->ir>>3) & 0x38)), size); in build_ea_ea()
729 static void build_pi_pi(m68k_info *info, int opcode, int size) in build_pi_pi() argument
733 cs_m68k* ext = build_init_op(info, opcode, 2, size); in build_pi_pi()
739 op0->reg = M68K_REG_A0 + (info->ir & 7); in build_pi_pi()
742 op1->reg = M68K_REG_A0 + ((info->ir >> 9) & 7); in build_pi_pi()
745 static void build_imm_special_reg(m68k_info *info, int opcode, int imm, int size, m68k_reg reg) in build_imm_special_reg() argument
749 cs_m68k* ext = build_init_op(info, opcode, 2, size); in build_imm_special_reg()
762 static void build_relative_branch(m68k_info *info, int opcode, int size, int displacement) in build_relative_branch() argument
765 cs_m68k* ext = build_init_op(info, opcode, 1, size); in build_relative_branch()
774 set_insn_group(info, M68K_GRP_JUMP); in build_relative_branch()
775 set_insn_group(info, M68K_GRP_BRANCH_RELATIVE); in build_relative_branch()
778 static void build_absolute_jump_with_immediate(m68k_info *info, int opcode, int size, int immediate) in build_absolute_jump_with_immediate() argument
781 cs_m68k* ext = build_init_op(info, opcode, 1, size); in build_absolute_jump_with_immediate()
789 set_insn_group(info, M68K_GRP_JUMP); in build_absolute_jump_with_immediate()
792 static void build_bcc(m68k_info *info, int size, int displacement) in build_bcc() argument
794 build_relative_branch(info, s_branch_lut[(info->ir >> 8) & 0xf], size, displacement); in build_bcc()
797 static void build_trap(m68k_info *info, int size, int immediate) in build_trap() argument
799 build_absolute_jump_with_immediate(info, s_trap_lut[(info->ir >> 8) & 0xf], size, immediate); in build_trap()
802 static void build_dbxx(m68k_info *info, int opcode, int size, int displacement) in build_dbxx() argument
806 cs_m68k* ext = build_init_op(info, opcode, 2, size); in build_dbxx()
812 op0->reg = M68K_REG_D0 + (info->ir & 7); in build_dbxx()
819 set_insn_group(info, M68K_GRP_JUMP); in build_dbxx()
820 set_insn_group(info, M68K_GRP_BRANCH_RELATIVE); in build_dbxx()
823 static void build_dbcc(m68k_info *info, int size, int displacement) in build_dbcc() argument
825 build_dbxx(info, s_dbcc_lut[(info->ir >> 8) & 0xf], size, displacement); in build_dbcc()
828 static void build_d_d_ea(m68k_info *info, int opcode, int size) in build_d_d_ea() argument
833 uint extension = read_imm_16(info); in build_d_d_ea()
834 cs_m68k* ext = build_init_op(info, opcode, 3, size); in build_d_d_ea()
846 get_ea_mode_op(info, op2, info->ir, size); in build_d_d_ea()
849 static void build_bitfield_ins(m68k_info *info, int opcode, int has_d_arg) in build_bitfield_ins() argument
855 cs_m68k* ext = build_init_op(info, opcode, 1, 0); in build_bitfield_ins()
856 uint extension = read_imm_16(info); in build_bitfield_ins()
877 get_ea_mode_op(info, op_ea, info->ir, 1); in build_bitfield_ins()
884 static void build_d(m68k_info *info, int opcode, int size) in build_d() argument
886 cs_m68k* ext = build_init_op(info, opcode, 1, size); in build_d()
892 op->reg = M68K_REG_D0 + (info->ir & 7); in build_d()
924 static void build_movem_re(m68k_info *info, int opcode, int size) in build_movem_re() argument
928 cs_m68k* ext = build_init_op(info, opcode, 2, size); in build_movem_re()
934 op0->register_bits = read_imm_16(info); in build_movem_re()
936 get_ea_mode_op(info, op1, info->ir, size); in build_movem_re()
942 static void build_movem_er(m68k_info *info, int opcode, int size) in build_movem_er() argument
946 cs_m68k* ext = build_init_op(info, opcode, 2, size); in build_movem_er()
952 op1->register_bits = read_imm_16(info); in build_movem_er()
954 get_ea_mode_op(info, op0, info->ir, size); in build_movem_er()
957 static void build_imm(m68k_info *info, int opcode, int data) in build_imm() argument
960 cs_m68k* ext = build_init_op(info, opcode, 1, 0); in build_imm()
962 MCInst_setOpcode(info->inst, opcode); in build_imm()
971 static void build_illegal(m68k_info *info, int data) in build_illegal() argument
973 build_imm(info, M68K_INS_ILLEGAL, data); in build_illegal()
976 static void build_invalid(m68k_info *info, int data) in build_invalid() argument
978 build_imm(info, M68K_INS_INVALID, data); in build_invalid()
981 static void build_cas2(m68k_info *info, int size) in build_cas2() argument
988 cs_m68k* ext = build_init_op(info, M68K_INS_CAS2, 3, size); in build_cas2()
992 word3 = peek_imm_32(info) & 0xffff; in build_cas2()
993 if (!instruction_is_valid(info, word3)) in build_cas2()
1000 extension = read_imm_32(info); in build_cas2()
1021 static void build_chk2_cmp2(m68k_info *info, int size) in build_chk2_cmp2() argument
1025 cs_m68k* ext = build_init_op(info, M68K_INS_CHK2, 2, size); in build_chk2_cmp2()
1027 uint extension = read_imm_16(info); in build_chk2_cmp2()
1030 MCInst_setOpcode(info->inst, M68K_INS_CHK2); in build_chk2_cmp2()
1032 MCInst_setOpcode(info->inst, M68K_INS_CMP2); in build_chk2_cmp2()
1037 get_ea_mode_op(info, op0, info->ir, size); in build_chk2_cmp2()
1044 static void build_move16(m68k_info *info, int data[2], int modes[2]) in build_move16() argument
1046 cs_m68k* ext = build_init_op(info, M68K_INS_MOVE16, 2, 0); in build_move16()
1066 static void build_link(m68k_info *info, int disp, int size) in build_link() argument
1070 cs_m68k* ext = build_init_op(info, M68K_INS_LINK, 2, size); in build_link()
1076 op0->reg = M68K_REG_A0 + (info->ir & 7); in build_link()
1083 static void build_cpush_cinv(m68k_info *info, int op_offset) in build_cpush_cinv() argument
1087 cs_m68k* ext = build_init_op(info, M68K_INS_INVALID, 2, 0); in build_cpush_cinv()
1089 switch ((info->ir >> 3) & 3) { // scope in build_cpush_cinv()
1092 d68000_invalid(info); in build_cpush_cinv()
1096 MCInst_setOpcode(info->inst, op_offset + 0); in build_cpush_cinv()
1100 MCInst_setOpcode(info->inst, op_offset + 1); in build_cpush_cinv()
1105 MCInst_setOpcode(info->inst, op_offset + 2); in build_cpush_cinv()
1114 op0->imm = (info->ir >> 6) & 3; in build_cpush_cinv()
1118 op1->imm = M68K_REG_A0 + (info->ir & 7); in build_cpush_cinv()
1121 static void build_movep_re(m68k_info *info, int size) in build_movep_re() argument
1125 cs_m68k* ext = build_init_op(info, M68K_INS_MOVEP, 2, size); in build_movep_re()
1130 op0->reg = M68K_REG_D0 + ((info->ir >> 9) & 7); in build_movep_re()
1134 op1->mem.base_reg = M68K_REG_A0 + (info->ir & 7); in build_movep_re()
1135 op1->mem.disp = (int16_t)read_imm_16(info); in build_movep_re()
1138 static void build_movep_er(m68k_info *info, int size) in build_movep_er() argument
1142 cs_m68k* ext = build_init_op(info, M68K_INS_MOVEP, 2, size); in build_movep_er()
1149 op0->mem.base_reg = M68K_REG_A0 + (info->ir & 7); in build_movep_er()
1150 op0->mem.disp = (int16_t)read_imm_16(info); in build_movep_er()
1152 op1->reg = M68K_REG_D0 + ((info->ir >> 9) & 7); in build_movep_er()
1155 static void build_moves(m68k_info *info, int size) in build_moves() argument
1159 cs_m68k* ext = build_init_op(info, M68K_INS_MOVES, 2, size); in build_moves()
1160 uint extension = read_imm_16(info); in build_moves()
1167 get_ea_mode_op(info, op1, info->ir, size); in build_moves()
1169 get_ea_mode_op(info, op0, info->ir, size); in build_moves()
1174 static void build_er_1(m68k_info *info, int opcode, uint8_t size) in build_er_1() argument
1176 build_er_gen_1(info, true, opcode, size); in build_er_1()
1218 static void d68000_invalid(m68k_info *info) in d68000_invalid() argument
1220 build_invalid(info, info->ir); in d68000_invalid()
1223 static void d68000_illegal(m68k_info *info) in d68000_illegal() argument
1225 build_illegal(info, info->ir); in d68000_illegal()
1228 static void d68000_1010(m68k_info *info) in d68000_1010() argument
1230 build_invalid(info, info->ir); in d68000_1010()
1233 static void d68000_1111(m68k_info *info) in d68000_1111() argument
1235 build_invalid(info, info->ir); in d68000_1111()
1238 static void d68000_abcd_rr(m68k_info *info) in d68000_abcd_rr() argument
1240 build_rr(info, M68K_INS_ABCD, 1, 0); in d68000_abcd_rr()
1243 static void d68000_abcd_mm(m68k_info *info) in d68000_abcd_mm() argument
1245 build_mm(info, M68K_INS_ABCD, 1, 0); in d68000_abcd_mm()
1248 static void d68000_add_er_8(m68k_info *info) in d68000_add_er_8() argument
1250 build_er_1(info, M68K_INS_ADD, 1); in d68000_add_er_8()
1253 static void d68000_add_er_16(m68k_info *info) in d68000_add_er_16() argument
1255 build_er_1(info, M68K_INS_ADD, 2); in d68000_add_er_16()
1258 static void d68000_add_er_32(m68k_info *info) in d68000_add_er_32() argument
1260 build_er_1(info, M68K_INS_ADD, 4); in d68000_add_er_32()
1263 static void d68000_add_re_8(m68k_info *info) in d68000_add_re_8() argument
1265 build_re_1(info, M68K_INS_ADD, 1); in d68000_add_re_8()
1268 static void d68000_add_re_16(m68k_info *info) in d68000_add_re_16() argument
1270 build_re_1(info, M68K_INS_ADD, 2); in d68000_add_re_16()
1273 static void d68000_add_re_32(m68k_info *info) in d68000_add_re_32() argument
1275 build_re_1(info, M68K_INS_ADD, 4); in d68000_add_re_32()
1278 static void d68000_adda_16(m68k_info *info) in d68000_adda_16() argument
1280 build_ea_a(info, M68K_INS_ADDA, 2); in d68000_adda_16()
1283 static void d68000_adda_32(m68k_info *info) in d68000_adda_32() argument
1285 build_ea_a(info, M68K_INS_ADDA, 4); in d68000_adda_32()
1288 static void d68000_addi_8(m68k_info *info) in d68000_addi_8() argument
1290 build_imm_ea(info, M68K_INS_ADDI, 1, read_imm_8(info)); in d68000_addi_8()
1293 static void d68000_addi_16(m68k_info *info) in d68000_addi_16() argument
1295 build_imm_ea(info, M68K_INS_ADDI, 2, read_imm_16(info)); in d68000_addi_16()
1298 static void d68000_addi_32(m68k_info *info) in d68000_addi_32() argument
1300 build_imm_ea(info, M68K_INS_ADDI, 4, read_imm_32(info)); in d68000_addi_32()
1303 static void d68000_addq_8(m68k_info *info) in d68000_addq_8() argument
1305 build_3bit_ea(info, M68K_INS_ADDQ, 1); in d68000_addq_8()
1308 static void d68000_addq_16(m68k_info *info) in d68000_addq_16() argument
1310 build_3bit_ea(info, M68K_INS_ADDQ, 2); in d68000_addq_16()
1313 static void d68000_addq_32(m68k_info *info) in d68000_addq_32() argument
1315 build_3bit_ea(info, M68K_INS_ADDQ, 4); in d68000_addq_32()
1318 static void d68000_addx_rr_8(m68k_info *info) in d68000_addx_rr_8() argument
1320 build_rr(info, M68K_INS_ADDX, 1, 0); in d68000_addx_rr_8()
1323 static void d68000_addx_rr_16(m68k_info *info) in d68000_addx_rr_16() argument
1325 build_rr(info, M68K_INS_ADDX, 2, 0); in d68000_addx_rr_16()
1328 static void d68000_addx_rr_32(m68k_info *info) in d68000_addx_rr_32() argument
1330 build_rr(info, M68K_INS_ADDX, 4, 0); in d68000_addx_rr_32()
1333 static void d68000_addx_mm_8(m68k_info *info) in d68000_addx_mm_8() argument
1335 build_mm(info, M68K_INS_ADDX, 1, 0); in d68000_addx_mm_8()
1338 static void d68000_addx_mm_16(m68k_info *info) in d68000_addx_mm_16() argument
1340 build_mm(info, M68K_INS_ADDX, 2, 0); in d68000_addx_mm_16()
1343 static void d68000_addx_mm_32(m68k_info *info) in d68000_addx_mm_32() argument
1345 build_mm(info, M68K_INS_ADDX, 4, 0); in d68000_addx_mm_32()
1348 static void d68000_and_er_8(m68k_info *info) in d68000_and_er_8() argument
1350 build_er_1(info, M68K_INS_AND, 1); in d68000_and_er_8()
1353 static void d68000_and_er_16(m68k_info *info) in d68000_and_er_16() argument
1355 build_er_1(info, M68K_INS_AND, 2); in d68000_and_er_16()
1358 static void d68000_and_er_32(m68k_info *info) in d68000_and_er_32() argument
1360 build_er_1(info, M68K_INS_AND, 4); in d68000_and_er_32()
1363 static void d68000_and_re_8(m68k_info *info) in d68000_and_re_8() argument
1365 build_re_1(info, M68K_INS_AND, 1); in d68000_and_re_8()
1368 static void d68000_and_re_16(m68k_info *info) in d68000_and_re_16() argument
1370 build_re_1(info, M68K_INS_AND, 2); in d68000_and_re_16()
1373 static void d68000_and_re_32(m68k_info *info) in d68000_and_re_32() argument
1375 build_re_1(info, M68K_INS_AND, 4); in d68000_and_re_32()
1378 static void d68000_andi_8(m68k_info *info) in d68000_andi_8() argument
1380 build_imm_ea(info, M68K_INS_ANDI, 1, read_imm_8(info)); in d68000_andi_8()
1383 static void d68000_andi_16(m68k_info *info) in d68000_andi_16() argument
1385 build_imm_ea(info, M68K_INS_ANDI, 2, read_imm_16(info)); in d68000_andi_16()
1388 static void d68000_andi_32(m68k_info *info) in d68000_andi_32() argument
1390 build_imm_ea(info, M68K_INS_ANDI, 4, read_imm_32(info)); in d68000_andi_32()
1393 static void d68000_andi_to_ccr(m68k_info *info) in d68000_andi_to_ccr() argument
1395 build_imm_special_reg(info, M68K_INS_ANDI, read_imm_8(info), 1, M68K_REG_CCR); in d68000_andi_to_ccr()
1398 static void d68000_andi_to_sr(m68k_info *info) in d68000_andi_to_sr() argument
1400 build_imm_special_reg(info, M68K_INS_ANDI, read_imm_16(info), 2, M68K_REG_SR); in d68000_andi_to_sr()
1403 static void d68000_asr_s_8(m68k_info *info) in d68000_asr_s_8() argument
1405 build_3bit_d(info, M68K_INS_ASR, 1); in d68000_asr_s_8()
1408 static void d68000_asr_s_16(m68k_info *info) in d68000_asr_s_16() argument
1410 build_3bit_d(info, M68K_INS_ASR, 2); in d68000_asr_s_16()
1413 static void d68000_asr_s_32(m68k_info *info) in d68000_asr_s_32() argument
1415 build_3bit_d(info, M68K_INS_ASR, 4); in d68000_asr_s_32()
1418 static void d68000_asr_r_8(m68k_info *info) in d68000_asr_r_8() argument
1420 build_r(info, M68K_INS_ASR, 1); in d68000_asr_r_8()
1423 static void d68000_asr_r_16(m68k_info *info) in d68000_asr_r_16() argument
1425 build_r(info, M68K_INS_ASR, 2); in d68000_asr_r_16()
1428 static void d68000_asr_r_32(m68k_info *info) in d68000_asr_r_32() argument
1430 build_r(info, M68K_INS_ASR, 4); in d68000_asr_r_32()
1433 static void d68000_asr_ea(m68k_info *info) in d68000_asr_ea() argument
1435 build_ea(info, M68K_INS_ASR, 2); in d68000_asr_ea()
1438 static void d68000_asl_s_8(m68k_info *info) in d68000_asl_s_8() argument
1440 build_3bit_d(info, M68K_INS_ASL, 1); in d68000_asl_s_8()
1443 static void d68000_asl_s_16(m68k_info *info) in d68000_asl_s_16() argument
1445 build_3bit_d(info, M68K_INS_ASL, 2); in d68000_asl_s_16()
1448 static void d68000_asl_s_32(m68k_info *info) in d68000_asl_s_32() argument
1450 build_3bit_d(info, M68K_INS_ASL, 4); in d68000_asl_s_32()
1453 static void d68000_asl_r_8(m68k_info *info) in d68000_asl_r_8() argument
1455 build_r(info, M68K_INS_ASL, 1); in d68000_asl_r_8()
1458 static void d68000_asl_r_16(m68k_info *info) in d68000_asl_r_16() argument
1460 build_r(info, M68K_INS_ASL, 2); in d68000_asl_r_16()
1463 static void d68000_asl_r_32(m68k_info *info) in d68000_asl_r_32() argument
1465 build_r(info, M68K_INS_ASL, 4); in d68000_asl_r_32()
1468 static void d68000_asl_ea(m68k_info *info) in d68000_asl_ea() argument
1470 build_ea(info, M68K_INS_ASL, 2); in d68000_asl_ea()
1473 static void d68000_bcc_8(m68k_info *info) in d68000_bcc_8() argument
1475 build_bcc(info, 1, make_int_8(info->ir)); in d68000_bcc_8()
1478 static void d68000_bcc_16(m68k_info *info) in d68000_bcc_16() argument
1480 build_bcc(info, 2, make_int_16(read_imm_16(info))); in d68000_bcc_16()
1483 static void d68020_bcc_32(m68k_info *info) in d68020_bcc_32() argument
1485 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_bcc_32()
1486 build_bcc(info, 4, read_imm_32(info)); in d68020_bcc_32()
1489 static void d68000_bchg_r(m68k_info *info) in d68000_bchg_r() argument
1491 build_re_1(info, M68K_INS_BCHG, 1); in d68000_bchg_r()
1494 static void d68000_bchg_s(m68k_info *info) in d68000_bchg_s() argument
1496 build_imm_ea(info, M68K_INS_BCHG, 1, read_imm_8(info)); in d68000_bchg_s()
1499 static void d68000_bclr_r(m68k_info *info) in d68000_bclr_r() argument
1501 build_re_1(info, M68K_INS_BCLR, 1); in d68000_bclr_r()
1504 static void d68000_bclr_s(m68k_info *info) in d68000_bclr_s() argument
1506 build_imm_ea(info, M68K_INS_BCLR, 1, read_imm_8(info)); in d68000_bclr_s()
1509 static void d68010_bkpt(m68k_info *info) in d68010_bkpt() argument
1511 LIMIT_CPU_TYPES(info, M68010_PLUS); in d68010_bkpt()
1512 build_absolute_jump_with_immediate(info, M68K_INS_BKPT, 0, info->ir & 7); in d68010_bkpt()
1515 static void d68020_bfchg(m68k_info *info) in d68020_bfchg() argument
1517 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_bfchg()
1518 build_bitfield_ins(info, M68K_INS_BFCHG, false); in d68020_bfchg()
1522 static void d68020_bfclr(m68k_info *info) in d68020_bfclr() argument
1524 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_bfclr()
1525 build_bitfield_ins(info, M68K_INS_BFCLR, false); in d68020_bfclr()
1528 static void d68020_bfexts(m68k_info *info) in d68020_bfexts() argument
1530 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_bfexts()
1531 build_bitfield_ins(info, M68K_INS_BFEXTS, true); in d68020_bfexts()
1534 static void d68020_bfextu(m68k_info *info) in d68020_bfextu() argument
1536 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_bfextu()
1537 build_bitfield_ins(info, M68K_INS_BFEXTU, true); in d68020_bfextu()
1540 static void d68020_bfffo(m68k_info *info) in d68020_bfffo() argument
1542 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_bfffo()
1543 build_bitfield_ins(info, M68K_INS_BFFFO, true); in d68020_bfffo()
1546 static void d68020_bfins(m68k_info *info) in d68020_bfins() argument
1548 cs_m68k* ext = &info->extension; in d68020_bfins()
1551 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_bfins()
1552 build_bitfield_ins(info, M68K_INS_BFINS, true); in d68020_bfins()
1561 static void d68020_bfset(m68k_info *info) in d68020_bfset() argument
1563 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_bfset()
1564 build_bitfield_ins(info, M68K_INS_BFSET, false); in d68020_bfset()
1567 static void d68020_bftst(m68k_info *info) in d68020_bftst() argument
1569 build_bitfield_ins(info, M68K_INS_BFTST, false); in d68020_bftst()
1572 static void d68000_bra_8(m68k_info *info) in d68000_bra_8() argument
1574 build_relative_branch(info, M68K_INS_BRA, 1, make_int_8(info->ir)); in d68000_bra_8()
1577 static void d68000_bra_16(m68k_info *info) in d68000_bra_16() argument
1579 build_relative_branch(info, M68K_INS_BRA, 2, make_int_16(read_imm_16(info))); in d68000_bra_16()
1582 static void d68020_bra_32(m68k_info *info) in d68020_bra_32() argument
1584 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_bra_32()
1585 build_relative_branch(info, M68K_INS_BRA, 4, read_imm_32(info)); in d68020_bra_32()
1588 static void d68000_bset_r(m68k_info *info) in d68000_bset_r() argument
1590 build_re_1(info, M68K_INS_BSET, 1); in d68000_bset_r()
1593 static void d68000_bset_s(m68k_info *info) in d68000_bset_s() argument
1595 build_imm_ea(info, M68K_INS_BSET, 1, read_imm_8(info)); in d68000_bset_s()
1598 static void d68000_bsr_8(m68k_info *info) in d68000_bsr_8() argument
1600 build_relative_branch(info, M68K_INS_BSR, 1, make_int_8(info->ir)); in d68000_bsr_8()
1603 static void d68000_bsr_16(m68k_info *info) in d68000_bsr_16() argument
1605 build_relative_branch(info, M68K_INS_BSR, 2, make_int_16(read_imm_16(info))); in d68000_bsr_16()
1608 static void d68020_bsr_32(m68k_info *info) in d68020_bsr_32() argument
1610 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_bsr_32()
1611 build_relative_branch(info, M68K_INS_BSR, 4, peek_imm_32(info)); in d68020_bsr_32()
1614 static void d68000_btst_r(m68k_info *info) in d68000_btst_r() argument
1616 build_re_1(info, M68K_INS_BTST, 4); in d68000_btst_r()
1619 static void d68000_btst_s(m68k_info *info) in d68000_btst_s() argument
1621 build_imm_ea(info, M68K_INS_BTST, 1, read_imm_8(info)); in d68000_btst_s()
1624 static void d68020_callm(m68k_info *info) in d68020_callm() argument
1626 LIMIT_CPU_TYPES(info, M68020_ONLY); in d68020_callm()
1627 build_imm_ea(info, M68K_INS_CALLM, 0, read_imm_8(info)); in d68020_callm()
1630 static void d68020_cas_8(m68k_info *info) in d68020_cas_8() argument
1632 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_cas_8()
1633 build_d_d_ea(info, M68K_INS_CAS, 1); in d68020_cas_8()
1636 static void d68020_cas_16(m68k_info *info) in d68020_cas_16() argument
1638 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_cas_16()
1639 build_d_d_ea(info, M68K_INS_CAS, 2); in d68020_cas_16()
1642 static void d68020_cas_32(m68k_info *info) in d68020_cas_32() argument
1644 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_cas_32()
1645 build_d_d_ea(info, M68K_INS_CAS, 4); in d68020_cas_32()
1648 static void d68020_cas2_16(m68k_info *info) in d68020_cas2_16() argument
1650 build_cas2(info, 2); in d68020_cas2_16()
1653 static void d68020_cas2_32(m68k_info *info) in d68020_cas2_32() argument
1655 build_cas2(info, 4); in d68020_cas2_32()
1658 static void d68000_chk_16(m68k_info *info) in d68000_chk_16() argument
1660 build_er_1(info, M68K_INS_CHK, 2); in d68000_chk_16()
1663 static void d68020_chk_32(m68k_info *info) in d68020_chk_32() argument
1665 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_chk_32()
1666 build_er_1(info, M68K_INS_CHK, 4); in d68020_chk_32()
1669 static void d68020_chk2_cmp2_8(m68k_info *info) in d68020_chk2_cmp2_8() argument
1671 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_chk2_cmp2_8()
1672 build_chk2_cmp2(info, 1); in d68020_chk2_cmp2_8()
1675 static void d68020_chk2_cmp2_16(m68k_info *info) in d68020_chk2_cmp2_16() argument
1677 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_chk2_cmp2_16()
1678 build_chk2_cmp2(info, 2); in d68020_chk2_cmp2_16()
1681 static void d68020_chk2_cmp2_32(m68k_info *info) in d68020_chk2_cmp2_32() argument
1683 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_chk2_cmp2_32()
1684 build_chk2_cmp2(info, 4); in d68020_chk2_cmp2_32()
1687 static void d68040_cinv(m68k_info *info) in d68040_cinv() argument
1689 LIMIT_CPU_TYPES(info, M68040_PLUS); in d68040_cinv()
1690 build_cpush_cinv(info, M68K_INS_CINVL); in d68040_cinv()
1693 static void d68000_clr_8(m68k_info *info) in d68000_clr_8() argument
1695 build_ea(info, M68K_INS_CLR, 1); in d68000_clr_8()
1698 static void d68000_clr_16(m68k_info *info) in d68000_clr_16() argument
1700 build_ea(info, M68K_INS_CLR, 2); in d68000_clr_16()
1703 static void d68000_clr_32(m68k_info *info) in d68000_clr_32() argument
1705 build_ea(info, M68K_INS_CLR, 4); in d68000_clr_32()
1708 static void d68000_cmp_8(m68k_info *info) in d68000_cmp_8() argument
1710 build_er_1(info, M68K_INS_CMP, 1); in d68000_cmp_8()
1713 static void d68000_cmp_16(m68k_info *info) in d68000_cmp_16() argument
1715 build_er_1(info, M68K_INS_CMP, 2); in d68000_cmp_16()
1718 static void d68000_cmp_32(m68k_info *info) in d68000_cmp_32() argument
1720 build_er_1(info, M68K_INS_CMP, 4); in d68000_cmp_32()
1723 static void d68000_cmpa_16(m68k_info *info) in d68000_cmpa_16() argument
1725 build_ea_a(info, M68K_INS_CMPA, 2); in d68000_cmpa_16()
1728 static void d68000_cmpa_32(m68k_info *info) in d68000_cmpa_32() argument
1730 build_ea_a(info, M68K_INS_CMPA, 4); in d68000_cmpa_32()
1733 static void d68000_cmpi_8(m68k_info *info) in d68000_cmpi_8() argument
1735 build_imm_ea(info, M68K_INS_CMPI, 1, read_imm_8(info)); in d68000_cmpi_8()
1738 static void d68020_cmpi_pcdi_8(m68k_info *info) in d68020_cmpi_pcdi_8() argument
1740 LIMIT_CPU_TYPES(info, M68010_PLUS); in d68020_cmpi_pcdi_8()
1741 build_imm_ea(info, M68K_INS_CMPI, 1, read_imm_8(info)); in d68020_cmpi_pcdi_8()
1744 static void d68020_cmpi_pcix_8(m68k_info *info) in d68020_cmpi_pcix_8() argument
1746 LIMIT_CPU_TYPES(info, M68010_PLUS); in d68020_cmpi_pcix_8()
1747 build_imm_ea(info, M68K_INS_CMPI, 1, read_imm_8(info)); in d68020_cmpi_pcix_8()
1750 static void d68000_cmpi_16(m68k_info *info) in d68000_cmpi_16() argument
1752 build_imm_ea(info, M68K_INS_CMPI, 2, read_imm_16(info)); in d68000_cmpi_16()
1755 static void d68020_cmpi_pcdi_16(m68k_info *info) in d68020_cmpi_pcdi_16() argument
1757 LIMIT_CPU_TYPES(info, M68010_PLUS); in d68020_cmpi_pcdi_16()
1758 build_imm_ea(info, M68K_INS_CMPI, 2, read_imm_16(info)); in d68020_cmpi_pcdi_16()
1761 static void d68020_cmpi_pcix_16(m68k_info *info) in d68020_cmpi_pcix_16() argument
1763 LIMIT_CPU_TYPES(info, M68010_PLUS); in d68020_cmpi_pcix_16()
1764 build_imm_ea(info, M68K_INS_CMPI, 2, read_imm_16(info)); in d68020_cmpi_pcix_16()
1767 static void d68000_cmpi_32(m68k_info *info) in d68000_cmpi_32() argument
1769 build_imm_ea(info, M68K_INS_CMPI, 4, read_imm_32(info)); in d68000_cmpi_32()
1772 static void d68020_cmpi_pcdi_32(m68k_info *info) in d68020_cmpi_pcdi_32() argument
1774 LIMIT_CPU_TYPES(info, M68010_PLUS); in d68020_cmpi_pcdi_32()
1775 build_imm_ea(info, M68K_INS_CMPI, 4, read_imm_32(info)); in d68020_cmpi_pcdi_32()
1778 static void d68020_cmpi_pcix_32(m68k_info *info) in d68020_cmpi_pcix_32() argument
1780 LIMIT_CPU_TYPES(info, M68010_PLUS); in d68020_cmpi_pcix_32()
1781 build_imm_ea(info, M68K_INS_CMPI, 4, read_imm_32(info)); in d68020_cmpi_pcix_32()
1784 static void d68000_cmpm_8(m68k_info *info) in d68000_cmpm_8() argument
1786 build_pi_pi(info, M68K_INS_CMPM, 1); in d68000_cmpm_8()
1789 static void d68000_cmpm_16(m68k_info *info) in d68000_cmpm_16() argument
1791 build_pi_pi(info, M68K_INS_CMPM, 2); in d68000_cmpm_16()
1794 static void d68000_cmpm_32(m68k_info *info) in d68000_cmpm_32() argument
1796 build_pi_pi(info, M68K_INS_CMPM, 4); in d68000_cmpm_32()
1807 static void d68020_cpbcc_16(m68k_info *info) in d68020_cpbcc_16() argument
1811 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_cpbcc_16()
1814 info->inst->Opcode += (info->ir & 0x2f); in d68020_cpbcc_16()
1816 ext = build_init_op(info, M68K_INS_FBF, 1, 2); in d68020_cpbcc_16()
1819 make_cpbcc_operand(op0, M68K_OP_BR_DISP_SIZE_WORD, make_int_16(read_imm_16(info))); in d68020_cpbcc_16()
1821 set_insn_group(info, M68K_GRP_JUMP); in d68020_cpbcc_16()
1822 set_insn_group(info, M68K_GRP_BRANCH_RELATIVE); in d68020_cpbcc_16()
1825 static void d68020_cpbcc_32(m68k_info *info) in d68020_cpbcc_32() argument
1830 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_cpbcc_32()
1832 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_cpbcc_32()
1835 info->inst->Opcode += (info->ir & 0x2f); in d68020_cpbcc_32()
1837 ext = build_init_op(info, M68K_INS_FBF, 1, 4); in d68020_cpbcc_32()
1840 make_cpbcc_operand(op0, M68K_OP_BR_DISP_SIZE_LONG, read_imm_32(info)); in d68020_cpbcc_32()
1842 set_insn_group(info, M68K_GRP_JUMP); in d68020_cpbcc_32()
1843 set_insn_group(info, M68K_GRP_BRANCH_RELATIVE); in d68020_cpbcc_32()
1846 static void d68020_cpdbcc(m68k_info *info) in d68020_cpdbcc() argument
1853 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_cpdbcc()
1855 ext1 = read_imm_16(info); in d68020_cpdbcc()
1856 ext2 = read_imm_16(info); in d68020_cpdbcc()
1859 info->inst->Opcode += (ext1 & 0x2f); in d68020_cpdbcc()
1861 ext = build_init_op(info, M68K_INS_FDBF, 2, 0); in d68020_cpdbcc()
1865 op0->reg = M68K_REG_D0 + (info->ir & 7); in d68020_cpdbcc()
1869 set_insn_group(info, M68K_GRP_JUMP); in d68020_cpdbcc()
1870 set_insn_group(info, M68K_GRP_BRANCH_RELATIVE); in d68020_cpdbcc()
1873 static void fmove_fpcr(m68k_info *info, uint extension) in fmove_fpcr() argument
1881 cs_m68k* ext = build_init_op(info, M68K_INS_FMOVE, 2, 4); in fmove_fpcr()
1892 get_ea_mode_op(info, op_ea, info->ir, 4); in fmove_fpcr()
1902 static void fmovem(m68k_info *info, uint extension) in fmovem() argument
1909 cs_m68k* ext = build_init_op(info, M68K_INS_FMOVEM, 2, 0); in fmovem()
1922 get_ea_mode_op(info, op_ea, info->ir, 0); in fmovem()
1943 static void d68020_cpgen(m68k_info *info) in d68020_cpgen() argument
1953 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_cpgen()
1957 next = read_imm_16(info); in d68020_cpgen()
1966 if (BITFIELD(info->ir, 5, 0) == 0 && BITFIELD(next, 15, 10) == 0x17) { in d68020_cpgen()
1969 cs_m68k* ext = build_init_op(info, M68K_INS_FMOVECR, 2, 0); in d68020_cpgen()
1989 fmove_fpcr(info, next); in d68020_cpgen()
1995 fmovem(info, next); in d68020_cpgen()
2007 case 0x00: MCInst_setOpcode(info->inst, M68K_INS_FMOVE); supports_single_op = false; break; in d68020_cpgen()
2008 case 0x01: MCInst_setOpcode(info->inst, M68K_INS_FINT); break; in d68020_cpgen()
2009 case 0x02: MCInst_setOpcode(info->inst, M68K_INS_FSINH); break; in d68020_cpgen()
2010 case 0x03: MCInst_setOpcode(info->inst, M68K_INS_FINTRZ); break; in d68020_cpgen()
2011 case 0x04: MCInst_setOpcode(info->inst, M68K_INS_FSQRT); break; in d68020_cpgen()
2012 case 0x06: MCInst_setOpcode(info->inst, M68K_INS_FLOGNP1); break; in d68020_cpgen()
2013 case 0x08: MCInst_setOpcode(info->inst, M68K_INS_FETOXM1); break; in d68020_cpgen()
2014 case 0x09: MCInst_setOpcode(info->inst, M68K_INS_FATANH); break; in d68020_cpgen()
2015 case 0x0a: MCInst_setOpcode(info->inst, M68K_INS_FATAN); break; in d68020_cpgen()
2016 case 0x0c: MCInst_setOpcode(info->inst, M68K_INS_FASIN); break; in d68020_cpgen()
2017 case 0x0d: MCInst_setOpcode(info->inst, M68K_INS_FATANH); break; in d68020_cpgen()
2018 case 0x0e: MCInst_setOpcode(info->inst, M68K_INS_FSIN); break; in d68020_cpgen()
2019 case 0x0f: MCInst_setOpcode(info->inst, M68K_INS_FTAN); break; in d68020_cpgen()
2020 case 0x10: MCInst_setOpcode(info->inst, M68K_INS_FETOX); break; in d68020_cpgen()
2021 case 0x11: MCInst_setOpcode(info->inst, M68K_INS_FTWOTOX); break; in d68020_cpgen()
2022 case 0x12: MCInst_setOpcode(info->inst, M68K_INS_FTENTOX); break; in d68020_cpgen()
2023 case 0x14: MCInst_setOpcode(info->inst, M68K_INS_FLOGN); break; in d68020_cpgen()
2024 case 0x15: MCInst_setOpcode(info->inst, M68K_INS_FLOG10); break; in d68020_cpgen()
2025 case 0x16: MCInst_setOpcode(info->inst, M68K_INS_FLOG2); break; in d68020_cpgen()
2026 case 0x18: MCInst_setOpcode(info->inst, M68K_INS_FABS); break; in d68020_cpgen()
2027 case 0x19: MCInst_setOpcode(info->inst, M68K_INS_FCOSH); break; in d68020_cpgen()
2028 case 0x1a: MCInst_setOpcode(info->inst, M68K_INS_FNEG); break; in d68020_cpgen()
2029 case 0x1c: MCInst_setOpcode(info->inst, M68K_INS_FACOS); break; in d68020_cpgen()
2030 case 0x1d: MCInst_setOpcode(info->inst, M68K_INS_FCOS); break; in d68020_cpgen()
2031 case 0x1e: MCInst_setOpcode(info->inst, M68K_INS_FGETEXP); break; in d68020_cpgen()
2032 case 0x1f: MCInst_setOpcode(info->inst, M68K_INS_FGETMAN); break; in d68020_cpgen()
2033 case 0x20: MCInst_setOpcode(info->inst, M68K_INS_FDIV); supports_single_op = false; break; in d68020_cpgen()
2034 case 0x21: MCInst_setOpcode(info->inst, M68K_INS_FMOD); supports_single_op = false; break; in d68020_cpgen()
2035 case 0x22: MCInst_setOpcode(info->inst, M68K_INS_FADD); supports_single_op = false; break; in d68020_cpgen()
2036 case 0x23: MCInst_setOpcode(info->inst, M68K_INS_FMUL); supports_single_op = false; break; in d68020_cpgen()
2037 case 0x24: MCInst_setOpcode(info->inst, M68K_INS_FSGLDIV); supports_single_op = false; break; in d68020_cpgen()
2038 case 0x25: MCInst_setOpcode(info->inst, M68K_INS_FREM); break; in d68020_cpgen()
2039 case 0x26: MCInst_setOpcode(info->inst, M68K_INS_FSCALE); break; in d68020_cpgen()
2040 case 0x27: MCInst_setOpcode(info->inst, M68K_INS_FSGLMUL); break; in d68020_cpgen()
2041 case 0x28: MCInst_setOpcode(info->inst, M68K_INS_FSUB); supports_single_op = false; break; in d68020_cpgen()
2042 case 0x38: MCInst_setOpcode(info->inst, M68K_INS_FCMP); supports_single_op = false; break; in d68020_cpgen()
2043 case 0x3a: MCInst_setOpcode(info->inst, M68K_INS_FTST); break; in d68020_cpgen()
2054 info->inst->Opcode += 2; in d68020_cpgen()
2056 info->inst->Opcode += 1; in d68020_cpgen()
2059 ext = &info->extension; in d68020_cpgen()
2084 get_ea_mode_op(info, op0, info->ir, 4); in d68020_cpgen()
2089 get_ea_mode_op(info, op0, info->ir, 1); in d68020_cpgen()
2094 get_ea_mode_op(info, op0, info->ir, 2); in d68020_cpgen()
2100 get_ea_mode_op(info, op0, info->ir, 4); in d68020_cpgen()
2107 get_ea_mode_op(info, op0, info->ir, 8); in d68020_cpgen()
2123 static void d68020_cprestore(m68k_info *info) in d68020_cprestore() argument
2126 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_cprestore()
2128 ext = build_init_op(info, M68K_INS_FRESTORE, 1, 0); in d68020_cprestore()
2129 get_ea_mode_op(info, &ext->operands[0], info->ir, 1); in d68020_cprestore()
2132 static void d68020_cpsave(m68k_info *info) in d68020_cpsave() argument
2136 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_cpsave()
2138 ext = build_init_op(info, M68K_INS_FSAVE, 1, 0); in d68020_cpsave()
2139 get_ea_mode_op(info, &ext->operands[0], info->ir, 1); in d68020_cpsave()
2142 static void d68020_cpscc(m68k_info *info) in d68020_cpscc() argument
2146 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_cpscc()
2147 ext = build_init_op(info, M68K_INS_FSF, 1, 1); in d68020_cpscc()
2150 info->inst->Opcode += (read_imm_16(info) & 0x2f); in d68020_cpscc()
2152 get_ea_mode_op(info, &ext->operands[0], info->ir, 1); in d68020_cpscc()
2155 static void d68020_cptrapcc_0(m68k_info *info) in d68020_cptrapcc_0() argument
2158 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_cptrapcc_0()
2160 extension1 = read_imm_16(info); in d68020_cptrapcc_0()
2162 build_init_op(info, M68K_INS_FTRAPF, 0, 0); in d68020_cptrapcc_0()
2165 info->inst->Opcode += (extension1 & 0x2f); in d68020_cptrapcc_0()
2168 static void d68020_cptrapcc_16(m68k_info *info) in d68020_cptrapcc_16() argument
2174 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_cptrapcc_16()
2176 extension1 = read_imm_16(info); in d68020_cptrapcc_16()
2177 extension2 = read_imm_16(info); in d68020_cptrapcc_16()
2179 ext = build_init_op(info, M68K_INS_FTRAPF, 1, 2); in d68020_cptrapcc_16()
2182 info->inst->Opcode += (extension1 & 0x2f); in d68020_cptrapcc_16()
2191 static void d68020_cptrapcc_32(m68k_info *info) in d68020_cptrapcc_32() argument
2197 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_cptrapcc_32()
2199 extension1 = read_imm_16(info); in d68020_cptrapcc_32()
2200 extension2 = read_imm_32(info); in d68020_cptrapcc_32()
2202 ext = build_init_op(info, M68K_INS_FTRAPF, 1, 2); in d68020_cptrapcc_32()
2205 info->inst->Opcode += (extension1 & 0x2f); in d68020_cptrapcc_32()
2214 static void d68040_cpush(m68k_info *info) in d68040_cpush() argument
2216 LIMIT_CPU_TYPES(info, M68040_PLUS); in d68040_cpush()
2217 build_cpush_cinv(info, M68K_INS_CPUSHL); in d68040_cpush()
2220 static void d68000_dbra(m68k_info *info) in d68000_dbra() argument
2222 build_dbxx(info, M68K_INS_DBRA, 0, make_int_16(read_imm_16(info))); in d68000_dbra()
2225 static void d68000_dbcc(m68k_info *info) in d68000_dbcc() argument
2227 build_dbcc(info, 0, make_int_16(read_imm_16(info))); in d68000_dbcc()
2230 static void d68000_divs(m68k_info *info) in d68000_divs() argument
2232 build_er_1(info, M68K_INS_DIVS, 2); in d68000_divs()
2235 static void d68000_divu(m68k_info *info) in d68000_divu() argument
2237 build_er_1(info, M68K_INS_DIVU, 2); in d68000_divu()
2240 static void d68020_divl(m68k_info *info) in d68020_divl() argument
2248 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_divl()
2250 extension = read_imm_16(info); in d68020_divl()
2256 ext = build_init_op(info, insn_signed ? M68K_INS_DIVS : M68K_INS_DIVU, 2, 4); in d68020_divl()
2261 get_ea_mode_op(info, op0, info->ir, 4); in d68020_divl()
2277 static void d68000_eor_8(m68k_info *info) in d68000_eor_8() argument
2279 build_re_1(info, M68K_INS_EOR, 1); in d68000_eor_8()
2282 static void d68000_eor_16(m68k_info *info) in d68000_eor_16() argument
2284 build_re_1(info, M68K_INS_EOR, 2); in d68000_eor_16()
2287 static void d68000_eor_32(m68k_info *info) in d68000_eor_32() argument
2289 build_re_1(info, M68K_INS_EOR, 4); in d68000_eor_32()
2292 static void d68000_eori_8(m68k_info *info) in d68000_eori_8() argument
2294 build_imm_ea(info, M68K_INS_EORI, 1, read_imm_8(info)); in d68000_eori_8()
2297 static void d68000_eori_16(m68k_info *info) in d68000_eori_16() argument
2299 build_imm_ea(info, M68K_INS_EORI, 2, read_imm_16(info)); in d68000_eori_16()
2302 static void d68000_eori_32(m68k_info *info) in d68000_eori_32() argument
2304 build_imm_ea(info, M68K_INS_EORI, 4, read_imm_32(info)); in d68000_eori_32()
2307 static void d68000_eori_to_ccr(m68k_info *info) in d68000_eori_to_ccr() argument
2309 build_imm_special_reg(info, M68K_INS_EORI, read_imm_8(info), 1, M68K_REG_CCR); in d68000_eori_to_ccr()
2312 static void d68000_eori_to_sr(m68k_info *info) in d68000_eori_to_sr() argument
2314 build_imm_special_reg(info, M68K_INS_EORI, read_imm_16(info), 2, M68K_REG_SR); in d68000_eori_to_sr()
2317 static void d68000_exg_dd(m68k_info *info) in d68000_exg_dd() argument
2319 build_r(info, M68K_INS_EXG, 4); in d68000_exg_dd()
2322 static void d68000_exg_aa(m68k_info *info) in d68000_exg_aa() argument
2326 cs_m68k* ext = build_init_op(info, M68K_INS_EXG, 2, 4); in d68000_exg_aa()
2332 op0->reg = M68K_REG_A0 + ((info->ir >> 9) & 7); in d68000_exg_aa()
2335 op1->reg = M68K_REG_A0 + (info->ir & 7); in d68000_exg_aa()
2338 static void d68000_exg_da(m68k_info *info) in d68000_exg_da() argument
2342 cs_m68k* ext = build_init_op(info, M68K_INS_EXG, 2, 4); in d68000_exg_da()
2348 op0->reg = M68K_REG_D0 + ((info->ir >> 9) & 7); in d68000_exg_da()
2351 op1->reg = M68K_REG_A0 + (info->ir & 7); in d68000_exg_da()
2354 static void d68000_ext_16(m68k_info *info) in d68000_ext_16() argument
2356 build_d(info, M68K_INS_EXT, 2); in d68000_ext_16()
2359 static void d68000_ext_32(m68k_info *info) in d68000_ext_32() argument
2361 build_d(info, M68K_INS_EXT, 4); in d68000_ext_32()
2364 static void d68020_extb_32(m68k_info *info) in d68020_extb_32() argument
2366 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_extb_32()
2367 build_d(info, M68K_INS_EXTB, 4); in d68020_extb_32()
2370 static void d68000_jmp(m68k_info *info) in d68000_jmp() argument
2372 cs_m68k* ext = build_init_op(info, M68K_INS_JMP, 1, 0); in d68000_jmp()
2373 set_insn_group(info, M68K_GRP_JUMP); in d68000_jmp()
2374 get_ea_mode_op(info, &ext->operands[0], info->ir, 4); in d68000_jmp()
2377 static void d68000_jsr(m68k_info *info) in d68000_jsr() argument
2379 cs_m68k* ext = build_init_op(info, M68K_INS_JSR, 1, 0); in d68000_jsr()
2380 set_insn_group(info, M68K_GRP_JUMP); in d68000_jsr()
2381 get_ea_mode_op(info, &ext->operands[0], info->ir, 4); in d68000_jsr()
2384 static void d68000_lea(m68k_info *info) in d68000_lea() argument
2386 build_ea_a(info, M68K_INS_LEA, 4); in d68000_lea()
2389 static void d68000_link_16(m68k_info *info) in d68000_link_16() argument
2391 build_link(info, read_imm_16(info), 2); in d68000_link_16()
2394 static void d68020_link_32(m68k_info *info) in d68020_link_32() argument
2396 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_link_32()
2397 build_link(info, read_imm_32(info), 4); in d68020_link_32()
2400 static void d68000_lsr_s_8(m68k_info *info) in d68000_lsr_s_8() argument
2402 build_3bit_d(info, M68K_INS_LSR, 1); in d68000_lsr_s_8()
2405 static void d68000_lsr_s_16(m68k_info *info) in d68000_lsr_s_16() argument
2407 build_3bit_d(info, M68K_INS_LSR, 2); in d68000_lsr_s_16()
2410 static void d68000_lsr_s_32(m68k_info *info) in d68000_lsr_s_32() argument
2412 build_3bit_d(info, M68K_INS_LSR, 4); in d68000_lsr_s_32()
2415 static void d68000_lsr_r_8(m68k_info *info) in d68000_lsr_r_8() argument
2417 build_r(info, M68K_INS_LSR, 1); in d68000_lsr_r_8()
2420 static void d68000_lsr_r_16(m68k_info *info) in d68000_lsr_r_16() argument
2422 build_r(info, M68K_INS_LSR, 2); in d68000_lsr_r_16()
2425 static void d68000_lsr_r_32(m68k_info *info) in d68000_lsr_r_32() argument
2427 build_r(info, M68K_INS_LSR, 4); in d68000_lsr_r_32()
2430 static void d68000_lsr_ea(m68k_info *info) in d68000_lsr_ea() argument
2432 build_ea(info, M68K_INS_LSR, 2); in d68000_lsr_ea()
2435 static void d68000_lsl_s_8(m68k_info *info) in d68000_lsl_s_8() argument
2437 build_3bit_d(info, M68K_INS_LSL, 1); in d68000_lsl_s_8()
2440 static void d68000_lsl_s_16(m68k_info *info) in d68000_lsl_s_16() argument
2442 build_3bit_d(info, M68K_INS_LSL, 2); in d68000_lsl_s_16()
2445 static void d68000_lsl_s_32(m68k_info *info) in d68000_lsl_s_32() argument
2447 build_3bit_d(info, M68K_INS_LSL, 4); in d68000_lsl_s_32()
2450 static void d68000_lsl_r_8(m68k_info *info) in d68000_lsl_r_8() argument
2452 build_r(info, M68K_INS_LSL, 1); in d68000_lsl_r_8()
2455 static void d68000_lsl_r_16(m68k_info *info) in d68000_lsl_r_16() argument
2457 build_r(info, M68K_INS_LSL, 2); in d68000_lsl_r_16()
2460 static void d68000_lsl_r_32(m68k_info *info) in d68000_lsl_r_32() argument
2462 build_r(info, M68K_INS_LSL, 4); in d68000_lsl_r_32()
2465 static void d68000_lsl_ea(m68k_info *info) in d68000_lsl_ea() argument
2467 build_ea(info, M68K_INS_LSL, 2); in d68000_lsl_ea()
2470 static void d68000_move_8(m68k_info *info) in d68000_move_8() argument
2472 build_ea_ea(info, M68K_INS_MOVE, 1); in d68000_move_8()
2475 static void d68000_move_16(m68k_info *info) in d68000_move_16() argument
2477 build_ea_ea(info, M68K_INS_MOVE, 2); in d68000_move_16()
2480 static void d68000_move_32(m68k_info *info) in d68000_move_32() argument
2482 build_ea_ea(info, M68K_INS_MOVE, 4); in d68000_move_32()
2485 static void d68000_movea_16(m68k_info *info) in d68000_movea_16() argument
2487 build_ea_a(info, M68K_INS_MOVEA, 2); in d68000_movea_16()
2490 static void d68000_movea_32(m68k_info *info) in d68000_movea_32() argument
2492 build_ea_a(info, M68K_INS_MOVEA, 4); in d68000_movea_32()
2495 static void d68000_move_to_ccr(m68k_info *info) in d68000_move_to_ccr() argument
2499 cs_m68k* ext = build_init_op(info, M68K_INS_MOVE, 2, 2); in d68000_move_to_ccr()
2504 get_ea_mode_op(info, op0, info->ir, 1); in d68000_move_to_ccr()
2510 static void d68010_move_fr_ccr(m68k_info *info) in d68010_move_fr_ccr() argument
2516 LIMIT_CPU_TYPES(info, M68010_PLUS); in d68010_move_fr_ccr()
2518 ext = build_init_op(info, M68K_INS_MOVE, 2, 2); in d68010_move_fr_ccr()
2526 get_ea_mode_op(info, op1, info->ir, 1); in d68010_move_fr_ccr()
2529 static void d68000_move_fr_sr(m68k_info *info) in d68000_move_fr_sr() argument
2533 cs_m68k* ext = build_init_op(info, M68K_INS_MOVE, 2, 2); in d68000_move_fr_sr()
2541 get_ea_mode_op(info, op1, info->ir, 2); in d68000_move_fr_sr()
2544 static void d68000_move_to_sr(m68k_info *info) in d68000_move_to_sr() argument
2548 cs_m68k* ext = build_init_op(info, M68K_INS_MOVE, 2, 2); in d68000_move_to_sr()
2553 get_ea_mode_op(info, op0, info->ir, 2); in d68000_move_to_sr()
2559 static void d68000_move_fr_usp(m68k_info *info) in d68000_move_fr_usp() argument
2563 cs_m68k* ext = build_init_op(info, M68K_INS_MOVE, 2, 0); in d68000_move_fr_usp()
2572 op1->reg = M68K_REG_A0 + (info->ir & 7); in d68000_move_fr_usp()
2575 static void d68000_move_to_usp(m68k_info *info) in d68000_move_to_usp() argument
2579 cs_m68k* ext = build_init_op(info, M68K_INS_MOVE, 2, 0); in d68000_move_to_usp()
2585 op0->reg = M68K_REG_A0 + (info->ir & 7); in d68000_move_to_usp()
2591 static void d68010_movec(m68k_info *info) in d68010_movec() argument
2600 LIMIT_CPU_TYPES(info, M68010_PLUS); in d68010_movec()
2602 extension = read_imm_16(info); in d68010_movec()
2605 ext = build_init_op(info, M68K_INS_MOVEC, 2, 0); in d68010_movec()
2629 if (BIT_1(info->ir)) { in d68010_movec()
2638 static void d68000_movem_pd_16(m68k_info *info) in d68000_movem_pd_16() argument
2640 build_movem_re(info, M68K_INS_MOVEM, 2); in d68000_movem_pd_16()
2643 static void d68000_movem_pd_32(m68k_info *info) in d68000_movem_pd_32() argument
2645 build_movem_re(info, M68K_INS_MOVEM, 4); in d68000_movem_pd_32()
2648 static void d68000_movem_er_16(m68k_info *info) in d68000_movem_er_16() argument
2650 build_movem_er(info, M68K_INS_MOVEM, 2); in d68000_movem_er_16()
2653 static void d68000_movem_er_32(m68k_info *info) in d68000_movem_er_32() argument
2655 build_movem_er(info, M68K_INS_MOVEM, 4); in d68000_movem_er_32()
2658 static void d68000_movem_re_16(m68k_info *info) in d68000_movem_re_16() argument
2660 build_movem_re(info, M68K_INS_MOVEM, 2); in d68000_movem_re_16()
2663 static void d68000_movem_re_32(m68k_info *info) in d68000_movem_re_32() argument
2665 build_movem_re(info, M68K_INS_MOVEM, 4); in d68000_movem_re_32()
2668 static void d68000_movep_re_16(m68k_info *info) in d68000_movep_re_16() argument
2670 build_movep_re(info, 2); in d68000_movep_re_16()
2673 static void d68000_movep_re_32(m68k_info *info) in d68000_movep_re_32() argument
2675 build_movep_re(info, 4); in d68000_movep_re_32()
2678 static void d68000_movep_er_16(m68k_info *info) in d68000_movep_er_16() argument
2680 build_movep_er(info, 2); in d68000_movep_er_16()
2683 static void d68000_movep_er_32(m68k_info *info) in d68000_movep_er_32() argument
2685 build_movep_er(info, 4); in d68000_movep_er_32()
2688 static void d68010_moves_8(m68k_info *info) in d68010_moves_8() argument
2690 LIMIT_CPU_TYPES(info, M68010_PLUS); in d68010_moves_8()
2691 build_moves(info, 1); in d68010_moves_8()
2694 static void d68010_moves_16(m68k_info *info) in d68010_moves_16() argument
2697 LIMIT_CPU_TYPES(info, M68010_PLUS); in d68010_moves_16()
2698 build_moves(info, 2); in d68010_moves_16()
2701 static void d68010_moves_32(m68k_info *info) in d68010_moves_32() argument
2703 LIMIT_CPU_TYPES(info, M68010_PLUS); in d68010_moves_32()
2704 build_moves(info, 4); in d68010_moves_32()
2707 static void d68000_moveq(m68k_info *info) in d68000_moveq() argument
2712 cs_m68k* ext = build_init_op(info, M68K_INS_MOVEQ, 2, 0); in d68000_moveq()
2719 op0->imm = (info->ir & 0xff); in d68000_moveq()
2722 op1->reg = M68K_REG_D0 + ((info->ir >> 9) & 7); in d68000_moveq()
2725 static void d68040_move16_pi_pi(m68k_info *info) in d68040_move16_pi_pi() argument
2727 int data[] = { info->ir & 7, (read_imm_16(info) >> 12) & 7 }; in d68040_move16_pi_pi()
2730 LIMIT_CPU_TYPES(info, M68040_PLUS); in d68040_move16_pi_pi()
2732 build_move16(info, data, modes); in d68040_move16_pi_pi()
2735 static void d68040_move16_pi_al(m68k_info *info) in d68040_move16_pi_al() argument
2737 int data[] = { info->ir & 7, read_imm_32(info) }; in d68040_move16_pi_al()
2740 LIMIT_CPU_TYPES(info, M68040_PLUS); in d68040_move16_pi_al()
2742 build_move16(info, data, modes); in d68040_move16_pi_al()
2745 static void d68040_move16_al_pi(m68k_info *info) in d68040_move16_al_pi() argument
2747 int data[] = { read_imm_32(info), info->ir & 7 }; in d68040_move16_al_pi()
2750 LIMIT_CPU_TYPES(info, M68040_PLUS); in d68040_move16_al_pi()
2752 build_move16(info, data, modes); in d68040_move16_al_pi()
2755 static void d68040_move16_ai_al(m68k_info *info) in d68040_move16_ai_al() argument
2757 int data[] = { info->ir & 7, read_imm_32(info) }; in d68040_move16_ai_al()
2760 LIMIT_CPU_TYPES(info, M68040_PLUS); in d68040_move16_ai_al()
2762 build_move16(info, data, modes); in d68040_move16_ai_al()
2765 static void d68040_move16_al_ai(m68k_info *info) in d68040_move16_al_ai() argument
2767 int data[] = { read_imm_32(info), info->ir & 7 }; in d68040_move16_al_ai()
2770 LIMIT_CPU_TYPES(info, M68040_PLUS); in d68040_move16_al_ai()
2772 build_move16(info, data, modes); in d68040_move16_al_ai()
2775 static void d68000_muls(m68k_info *info) in d68000_muls() argument
2777 build_er_1(info, M68K_INS_MULS, 2); in d68000_muls()
2780 static void d68000_mulu(m68k_info *info) in d68000_mulu() argument
2782 build_er_1(info, M68K_INS_MULU, 2); in d68000_mulu()
2785 static void d68020_mull(m68k_info *info) in d68020_mull() argument
2794 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_mull()
2796 extension = read_imm_16(info); in d68020_mull()
2802 ext = build_init_op(info, insn_signed ? M68K_INS_MULS : M68K_INS_MULU, 2, 4); in d68020_mull()
2807 get_ea_mode_op(info, op0, info->ir, 4); in d68020_mull()
2823 static void d68000_nbcd(m68k_info *info) in d68000_nbcd() argument
2825 build_ea(info, M68K_INS_NBCD, 1); in d68000_nbcd()
2828 static void d68000_neg_8(m68k_info *info) in d68000_neg_8() argument
2830 build_ea(info, M68K_INS_NEG, 1); in d68000_neg_8()
2833 static void d68000_neg_16(m68k_info *info) in d68000_neg_16() argument
2835 build_ea(info, M68K_INS_NEG, 2); in d68000_neg_16()
2838 static void d68000_neg_32(m68k_info *info) in d68000_neg_32() argument
2840 build_ea(info, M68K_INS_NEG, 4); in d68000_neg_32()
2843 static void d68000_negx_8(m68k_info *info) in d68000_negx_8() argument
2845 build_ea(info, M68K_INS_NEGX, 1); in d68000_negx_8()
2848 static void d68000_negx_16(m68k_info *info) in d68000_negx_16() argument
2850 build_ea(info, M68K_INS_NEGX, 2); in d68000_negx_16()
2853 static void d68000_negx_32(m68k_info *info) in d68000_negx_32() argument
2855 build_ea(info, M68K_INS_NEGX, 4); in d68000_negx_32()
2858 static void d68000_nop(m68k_info *info) in d68000_nop() argument
2860 MCInst_setOpcode(info->inst, M68K_INS_NOP); in d68000_nop()
2863 static void d68000_not_8(m68k_info *info) in d68000_not_8() argument
2865 build_ea(info, M68K_INS_NOT, 1); in d68000_not_8()
2868 static void d68000_not_16(m68k_info *info) in d68000_not_16() argument
2870 build_ea(info, M68K_INS_NOT, 2); in d68000_not_16()
2873 static void d68000_not_32(m68k_info *info) in d68000_not_32() argument
2875 build_ea(info, M68K_INS_NOT, 4); in d68000_not_32()
2878 static void d68000_or_er_8(m68k_info *info) in d68000_or_er_8() argument
2880 build_er_1(info, M68K_INS_OR, 1); in d68000_or_er_8()
2883 static void d68000_or_er_16(m68k_info *info) in d68000_or_er_16() argument
2885 build_er_1(info, M68K_INS_OR, 2); in d68000_or_er_16()
2888 static void d68000_or_er_32(m68k_info *info) in d68000_or_er_32() argument
2890 build_er_1(info, M68K_INS_OR, 4); in d68000_or_er_32()
2893 static void d68000_or_re_8(m68k_info *info) in d68000_or_re_8() argument
2895 build_re_1(info, M68K_INS_OR, 1); in d68000_or_re_8()
2898 static void d68000_or_re_16(m68k_info *info) in d68000_or_re_16() argument
2900 build_re_1(info, M68K_INS_OR, 2); in d68000_or_re_16()
2903 static void d68000_or_re_32(m68k_info *info) in d68000_or_re_32() argument
2905 build_re_1(info, M68K_INS_OR, 4); in d68000_or_re_32()
2908 static void d68000_ori_8(m68k_info *info) in d68000_ori_8() argument
2910 build_imm_ea(info, M68K_INS_ORI, 1, read_imm_8(info)); in d68000_ori_8()
2913 static void d68000_ori_16(m68k_info *info) in d68000_ori_16() argument
2915 build_imm_ea(info, M68K_INS_ORI, 2, read_imm_16(info)); in d68000_ori_16()
2918 static void d68000_ori_32(m68k_info *info) in d68000_ori_32() argument
2920 build_imm_ea(info, M68K_INS_ORI, 4, read_imm_32(info)); in d68000_ori_32()
2923 static void d68000_ori_to_ccr(m68k_info *info) in d68000_ori_to_ccr() argument
2925 build_imm_special_reg(info, M68K_INS_ORI, read_imm_8(info), 1, M68K_REG_CCR); in d68000_ori_to_ccr()
2928 static void d68000_ori_to_sr(m68k_info *info) in d68000_ori_to_sr() argument
2930 build_imm_special_reg(info, M68K_INS_ORI, read_imm_16(info), 2, M68K_REG_SR); in d68000_ori_to_sr()
2933 static void d68020_pack_rr(m68k_info *info) in d68020_pack_rr() argument
2935 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_pack_rr()
2936 build_rr(info, M68K_INS_PACK, 0, read_imm_16(info)); in d68020_pack_rr()
2939 static void d68020_pack_mm(m68k_info *info) in d68020_pack_mm() argument
2941 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_pack_mm()
2942 build_mm(info, M68K_INS_PACK, 0, read_imm_16(info)); in d68020_pack_mm()
2945 static void d68000_pea(m68k_info *info) in d68000_pea() argument
2947 build_ea(info, M68K_INS_PEA, 4); in d68000_pea()
2950 static void d68000_reset(m68k_info *info) in d68000_reset() argument
2952 MCInst_setOpcode(info->inst, M68K_INS_RESET); in d68000_reset()
2955 static void d68000_ror_s_8(m68k_info *info) in d68000_ror_s_8() argument
2957 build_3bit_d(info, M68K_INS_ROR, 1); in d68000_ror_s_8()
2960 static void d68000_ror_s_16(m68k_info *info) in d68000_ror_s_16() argument
2962 build_3bit_d(info, M68K_INS_ROR, 2); in d68000_ror_s_16()
2965 static void d68000_ror_s_32(m68k_info *info) in d68000_ror_s_32() argument
2967 build_3bit_d(info, M68K_INS_ROR, 4); in d68000_ror_s_32()
2970 static void d68000_ror_r_8(m68k_info *info) in d68000_ror_r_8() argument
2972 build_r(info, M68K_INS_ROR, 1); in d68000_ror_r_8()
2975 static void d68000_ror_r_16(m68k_info *info) in d68000_ror_r_16() argument
2977 build_r(info, M68K_INS_ROR, 2); in d68000_ror_r_16()
2980 static void d68000_ror_r_32(m68k_info *info) in d68000_ror_r_32() argument
2982 build_r(info, M68K_INS_ROR, 4); in d68000_ror_r_32()
2985 static void d68000_ror_ea(m68k_info *info) in d68000_ror_ea() argument
2987 build_ea(info, M68K_INS_ROR, 2); in d68000_ror_ea()
2990 static void d68000_rol_s_8(m68k_info *info) in d68000_rol_s_8() argument
2992 build_3bit_d(info, M68K_INS_ROL, 1); in d68000_rol_s_8()
2995 static void d68000_rol_s_16(m68k_info *info) in d68000_rol_s_16() argument
2997 build_3bit_d(info, M68K_INS_ROL, 2); in d68000_rol_s_16()
3000 static void d68000_rol_s_32(m68k_info *info) in d68000_rol_s_32() argument
3002 build_3bit_d(info, M68K_INS_ROL, 4); in d68000_rol_s_32()
3005 static void d68000_rol_r_8(m68k_info *info) in d68000_rol_r_8() argument
3007 build_r(info, M68K_INS_ROL, 1); in d68000_rol_r_8()
3010 static void d68000_rol_r_16(m68k_info *info) in d68000_rol_r_16() argument
3012 build_r(info, M68K_INS_ROL, 2); in d68000_rol_r_16()
3015 static void d68000_rol_r_32(m68k_info *info) in d68000_rol_r_32() argument
3017 build_r(info, M68K_INS_ROL, 4); in d68000_rol_r_32()
3020 static void d68000_rol_ea(m68k_info *info) in d68000_rol_ea() argument
3022 build_ea(info, M68K_INS_ROL, 2); in d68000_rol_ea()
3025 static void d68000_roxr_s_8(m68k_info *info) in d68000_roxr_s_8() argument
3027 build_3bit_d(info, M68K_INS_ROXR, 1); in d68000_roxr_s_8()
3030 static void d68000_roxr_s_16(m68k_info *info) in d68000_roxr_s_16() argument
3032 build_3bit_d(info, M68K_INS_ROXR, 2); in d68000_roxr_s_16()
3035 static void d68000_roxr_s_32(m68k_info *info) in d68000_roxr_s_32() argument
3037 build_3bit_d(info, M68K_INS_ROXR, 4); in d68000_roxr_s_32()
3040 static void d68000_roxr_r_8(m68k_info *info) in d68000_roxr_r_8() argument
3042 build_3bit_d(info, M68K_INS_ROXR, 4); in d68000_roxr_r_8()
3045 static void d68000_roxr_r_16(m68k_info *info) in d68000_roxr_r_16() argument
3047 build_r(info, M68K_INS_ROXR, 2); in d68000_roxr_r_16()
3050 static void d68000_roxr_r_32(m68k_info *info) in d68000_roxr_r_32() argument
3052 build_r(info, M68K_INS_ROXR, 4); in d68000_roxr_r_32()
3055 static void d68000_roxr_ea(m68k_info *info) in d68000_roxr_ea() argument
3057 build_ea(info, M68K_INS_ROXR, 2); in d68000_roxr_ea()
3060 static void d68000_roxl_s_8(m68k_info *info) in d68000_roxl_s_8() argument
3062 build_3bit_d(info, M68K_INS_ROXL, 1); in d68000_roxl_s_8()
3065 static void d68000_roxl_s_16(m68k_info *info) in d68000_roxl_s_16() argument
3067 build_3bit_d(info, M68K_INS_ROXL, 2); in d68000_roxl_s_16()
3070 static void d68000_roxl_s_32(m68k_info *info) in d68000_roxl_s_32() argument
3072 build_3bit_d(info, M68K_INS_ROXL, 4); in d68000_roxl_s_32()
3075 static void d68000_roxl_r_8(m68k_info *info) in d68000_roxl_r_8() argument
3077 build_r(info, M68K_INS_ROXL, 1); in d68000_roxl_r_8()
3080 static void d68000_roxl_r_16(m68k_info *info) in d68000_roxl_r_16() argument
3082 build_r(info, M68K_INS_ROXL, 2); in d68000_roxl_r_16()
3085 static void d68000_roxl_r_32(m68k_info *info) in d68000_roxl_r_32() argument
3087 build_r(info, M68K_INS_ROXL, 4); in d68000_roxl_r_32()
3090 static void d68000_roxl_ea(m68k_info *info) in d68000_roxl_ea() argument
3092 build_ea(info, M68K_INS_ROXL, 2); in d68000_roxl_ea()
3095 static void d68010_rtd(m68k_info *info) in d68010_rtd() argument
3097 set_insn_group(info, M68K_GRP_RET); in d68010_rtd()
3098 LIMIT_CPU_TYPES(info, M68010_PLUS); in d68010_rtd()
3099 build_absolute_jump_with_immediate(info, M68K_INS_RTD, 0, read_imm_16(info)); in d68010_rtd()
3102 static void d68000_rte(m68k_info *info) in d68000_rte() argument
3104 set_insn_group(info, M68K_GRP_IRET); in d68000_rte()
3105 MCInst_setOpcode(info->inst, M68K_INS_RTE); in d68000_rte()
3108 static void d68020_rtm(m68k_info *info) in d68020_rtm() argument
3113 set_insn_group(info, M68K_GRP_RET); in d68020_rtm()
3115 LIMIT_CPU_TYPES(info, M68020_ONLY); in d68020_rtm()
3117 build_absolute_jump_with_immediate(info, M68K_INS_RTM, 0, 0); in d68020_rtm()
3119 ext = &info->extension; in d68020_rtm()
3125 if (BIT_3(info->ir)) { in d68020_rtm()
3126 op->reg = M68K_REG_A0 + (info->ir & 7); in d68020_rtm()
3128 op->reg = M68K_REG_D0 + (info->ir & 7); in d68020_rtm()
3132 static void d68000_rtr(m68k_info *info) in d68000_rtr() argument
3134 set_insn_group(info, M68K_GRP_RET); in d68000_rtr()
3135 MCInst_setOpcode(info->inst, M68K_INS_RTR); in d68000_rtr()
3138 static void d68000_rts(m68k_info *info) in d68000_rts() argument
3140 set_insn_group(info, M68K_GRP_RET); in d68000_rts()
3141 MCInst_setOpcode(info->inst, M68K_INS_RTS); in d68000_rts()
3144 static void d68000_sbcd_rr(m68k_info *info) in d68000_sbcd_rr() argument
3146 build_rr(info, M68K_INS_SBCD, 1, 0); in d68000_sbcd_rr()
3149 static void d68000_sbcd_mm(m68k_info *info) in d68000_sbcd_mm() argument
3151 build_mm(info, M68K_INS_SBCD, 0, read_imm_16(info)); in d68000_sbcd_mm()
3154 static void d68000_scc(m68k_info *info) in d68000_scc() argument
3156 cs_m68k* ext = build_init_op(info, s_scc_lut[(info->ir >> 8) & 0xf], 1, 1); in d68000_scc()
3157 get_ea_mode_op(info, &ext->operands[0], info->ir, 1); in d68000_scc()
3160 static void d68000_stop(m68k_info *info) in d68000_stop() argument
3162 build_absolute_jump_with_immediate(info, M68K_INS_STOP, 0, read_imm_16(info)); in d68000_stop()
3165 static void d68000_sub_er_8(m68k_info *info) in d68000_sub_er_8() argument
3167 build_er_1(info, M68K_INS_SUB, 1); in d68000_sub_er_8()
3170 static void d68000_sub_er_16(m68k_info *info) in d68000_sub_er_16() argument
3172 build_er_1(info, M68K_INS_SUB, 2); in d68000_sub_er_16()
3175 static void d68000_sub_er_32(m68k_info *info) in d68000_sub_er_32() argument
3177 build_er_1(info, M68K_INS_SUB, 4); in d68000_sub_er_32()
3180 static void d68000_sub_re_8(m68k_info *info) in d68000_sub_re_8() argument
3182 build_re_1(info, M68K_INS_SUB, 1); in d68000_sub_re_8()
3185 static void d68000_sub_re_16(m68k_info *info) in d68000_sub_re_16() argument
3187 build_re_1(info, M68K_INS_SUB, 2); in d68000_sub_re_16()
3190 static void d68000_sub_re_32(m68k_info *info) in d68000_sub_re_32() argument
3192 build_re_1(info, M68K_INS_SUB, 4); in d68000_sub_re_32()
3195 static void d68000_suba_16(m68k_info *info) in d68000_suba_16() argument
3197 build_ea_a(info, M68K_INS_SUBA, 2); in d68000_suba_16()
3200 static void d68000_suba_32(m68k_info *info) in d68000_suba_32() argument
3202 build_ea_a(info, M68K_INS_SUBA, 4); in d68000_suba_32()
3205 static void d68000_subi_8(m68k_info *info) in d68000_subi_8() argument
3207 build_imm_ea(info, M68K_INS_SUBI, 1, read_imm_8(info)); in d68000_subi_8()
3210 static void d68000_subi_16(m68k_info *info) in d68000_subi_16() argument
3212 build_imm_ea(info, M68K_INS_SUBI, 2, read_imm_16(info)); in d68000_subi_16()
3215 static void d68000_subi_32(m68k_info *info) in d68000_subi_32() argument
3217 build_imm_ea(info, M68K_INS_SUBI, 4, read_imm_32(info)); in d68000_subi_32()
3220 static void d68000_subq_8(m68k_info *info) in d68000_subq_8() argument
3222 build_3bit_ea(info, M68K_INS_SUBQ, 1); in d68000_subq_8()
3225 static void d68000_subq_16(m68k_info *info) in d68000_subq_16() argument
3227 build_3bit_ea(info, M68K_INS_SUBQ, 2); in d68000_subq_16()
3230 static void d68000_subq_32(m68k_info *info) in d68000_subq_32() argument
3232 build_3bit_ea(info, M68K_INS_SUBQ, 4); in d68000_subq_32()
3235 static void d68000_subx_rr_8(m68k_info *info) in d68000_subx_rr_8() argument
3237 build_rr(info, M68K_INS_SUBX, 1, 0); in d68000_subx_rr_8()
3240 static void d68000_subx_rr_16(m68k_info *info) in d68000_subx_rr_16() argument
3242 build_rr(info, M68K_INS_SUBX, 2, 0); in d68000_subx_rr_16()
3245 static void d68000_subx_rr_32(m68k_info *info) in d68000_subx_rr_32() argument
3247 build_rr(info, M68K_INS_SUBX, 4, 0); in d68000_subx_rr_32()
3250 static void d68000_subx_mm_8(m68k_info *info) in d68000_subx_mm_8() argument
3252 build_mm(info, M68K_INS_SUBX, 1, 0); in d68000_subx_mm_8()
3255 static void d68000_subx_mm_16(m68k_info *info) in d68000_subx_mm_16() argument
3257 build_mm(info, M68K_INS_SUBX, 2, 0); in d68000_subx_mm_16()
3260 static void d68000_subx_mm_32(m68k_info *info) in d68000_subx_mm_32() argument
3262 build_mm(info, M68K_INS_SUBX, 4, 0); in d68000_subx_mm_32()
3265 static void d68000_swap(m68k_info *info) in d68000_swap() argument
3267 build_d(info, M68K_INS_SWAP, 0); in d68000_swap()
3270 static void d68000_tas(m68k_info *info) in d68000_tas() argument
3272 build_ea(info, M68K_INS_TAS, 1); in d68000_tas()
3275 static void d68000_trap(m68k_info *info) in d68000_trap() argument
3277 build_absolute_jump_with_immediate(info, M68K_INS_TRAP, 0, info->ir&0xf); in d68000_trap()
3280 static void d68020_trapcc_0(m68k_info *info) in d68020_trapcc_0() argument
3282 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_trapcc_0()
3283 build_trap(info, 0, 0); in d68020_trapcc_0()
3285 info->extension.op_count = 0; in d68020_trapcc_0()
3288 static void d68020_trapcc_16(m68k_info *info) in d68020_trapcc_16() argument
3290 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_trapcc_16()
3291 build_trap(info, 2, read_imm_16(info)); in d68020_trapcc_16()
3294 static void d68020_trapcc_32(m68k_info *info) in d68020_trapcc_32() argument
3296 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_trapcc_32()
3297 build_trap(info, 4, read_imm_32(info)); in d68020_trapcc_32()
3300 static void d68000_trapv(m68k_info *info) in d68000_trapv() argument
3302 MCInst_setOpcode(info->inst, M68K_INS_TRAPV); in d68000_trapv()
3305 static void d68000_tst_8(m68k_info *info) in d68000_tst_8() argument
3307 build_ea(info, M68K_INS_TST, 1); in d68000_tst_8()
3310 static void d68020_tst_pcdi_8(m68k_info *info) in d68020_tst_pcdi_8() argument
3312 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_tst_pcdi_8()
3313 build_ea(info, M68K_INS_TST, 1); in d68020_tst_pcdi_8()
3316 static void d68020_tst_pcix_8(m68k_info *info) in d68020_tst_pcix_8() argument
3318 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_tst_pcix_8()
3319 build_ea(info, M68K_INS_TST, 1); in d68020_tst_pcix_8()
3322 static void d68020_tst_i_8(m68k_info *info) in d68020_tst_i_8() argument
3324 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_tst_i_8()
3325 build_ea(info, M68K_INS_TST, 1); in d68020_tst_i_8()
3328 static void d68000_tst_16(m68k_info *info) in d68000_tst_16() argument
3330 build_ea(info, M68K_INS_TST, 2); in d68000_tst_16()
3333 static void d68020_tst_a_16(m68k_info *info) in d68020_tst_a_16() argument
3335 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_tst_a_16()
3336 build_ea(info, M68K_INS_TST, 2); in d68020_tst_a_16()
3339 static void d68020_tst_pcdi_16(m68k_info *info) in d68020_tst_pcdi_16() argument
3341 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_tst_pcdi_16()
3342 build_ea(info, M68K_INS_TST, 2); in d68020_tst_pcdi_16()
3345 static void d68020_tst_pcix_16(m68k_info *info) in d68020_tst_pcix_16() argument
3347 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_tst_pcix_16()
3348 build_ea(info, M68K_INS_TST, 2); in d68020_tst_pcix_16()
3351 static void d68020_tst_i_16(m68k_info *info) in d68020_tst_i_16() argument
3353 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_tst_i_16()
3354 build_ea(info, M68K_INS_TST, 2); in d68020_tst_i_16()
3357 static void d68000_tst_32(m68k_info *info) in d68000_tst_32() argument
3359 build_ea(info, M68K_INS_TST, 4); in d68000_tst_32()
3362 static void d68020_tst_a_32(m68k_info *info) in d68020_tst_a_32() argument
3364 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_tst_a_32()
3365 build_ea(info, M68K_INS_TST, 4); in d68020_tst_a_32()
3368 static void d68020_tst_pcdi_32(m68k_info *info) in d68020_tst_pcdi_32() argument
3370 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_tst_pcdi_32()
3371 build_ea(info, M68K_INS_TST, 4); in d68020_tst_pcdi_32()
3374 static void d68020_tst_pcix_32(m68k_info *info) in d68020_tst_pcix_32() argument
3376 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_tst_pcix_32()
3377 build_ea(info, M68K_INS_TST, 4); in d68020_tst_pcix_32()
3380 static void d68020_tst_i_32(m68k_info *info) in d68020_tst_i_32() argument
3382 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_tst_i_32()
3383 build_ea(info, M68K_INS_TST, 4); in d68020_tst_i_32()
3386 static void d68000_unlk(m68k_info *info) in d68000_unlk() argument
3389 cs_m68k* ext = build_init_op(info, M68K_INS_UNLK, 1, 0); in d68000_unlk()
3394 op->reg = M68K_REG_A0 + (info->ir & 7); in d68000_unlk()
3397 static void d68020_unpk_rr(m68k_info *info) in d68020_unpk_rr() argument
3399 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_unpk_rr()
3400 build_rr(info, M68K_INS_UNPK, 0, read_imm_16(info)); in d68020_unpk_rr()
3403 static void d68020_unpk_mm(m68k_info *info) in d68020_unpk_mm() argument
3405 LIMIT_CPU_TYPES(info, M68020_PLUS); in d68020_unpk_mm()
3406 build_mm(info, M68K_INS_UNPK, 0, read_imm_16(info)); in d68020_unpk_mm()
3814 /* search through opcode info for a match */ in build_opcode_table()
3835 static int instruction_is_valid(m68k_info *info, const unsigned int word_check) in instruction_is_valid() argument
3837 const unsigned int instruction = info->ir; in instruction_is_valid()
3842 d68000_invalid(info); in instruction_is_valid()
3861 static void add_reg_to_rw_list(m68k_info *info, m68k_reg reg, int write) in add_reg_to_rw_list() argument
3868 if (exists_reg_list(info->regs_write, info->regs_write_count, reg)) in add_reg_to_rw_list()
3871 info->regs_write[info->regs_write_count] = (uint16_t)reg; in add_reg_to_rw_list()
3872 info->regs_write_count++; in add_reg_to_rw_list()
3876 if (exists_reg_list(info->regs_read, info->regs_read_count, reg)) in add_reg_to_rw_list()
3879 info->regs_read[info->regs_read_count] = (uint16_t)reg; in add_reg_to_rw_list()
3880 info->regs_read_count++; in add_reg_to_rw_list()
3884 static void update_am_reg_list(m68k_info *info, cs_m68k_op *op, int write) in update_am_reg_list() argument
3889 add_reg_to_rw_list(info, op->reg, write); in update_am_reg_list()
3894 add_reg_to_rw_list(info, op->reg, 1); in update_am_reg_list()
3899 add_reg_to_rw_list(info, op->reg, 0); in update_am_reg_list()
3910 add_reg_to_rw_list(info, op->mem.index_reg, 0); in update_am_reg_list()
3911 add_reg_to_rw_list(info, op->mem.base_reg, 0); in update_am_reg_list()
3920 static void update_bits_range(m68k_info *info, m68k_reg reg_start, uint8_t bits, int write) in update_bits_range() argument
3926 add_reg_to_rw_list(info, reg_start + i, write); in update_bits_range()
3931 static void update_reg_list_regbits(m68k_info *info, cs_m68k_op *op, int write) in update_reg_list_regbits() argument
3934 update_bits_range(info, M68K_REG_D0, bits & 0xff, write); in update_reg_list_regbits()
3935 update_bits_range(info, M68K_REG_A0, (bits >> 8) & 0xff, write); in update_reg_list_regbits()
3936 update_bits_range(info, M68K_REG_FP0, (bits >> 16) & 0xff, write); in update_reg_list_regbits()
3939 static void update_op_reg_list(m68k_info *info, cs_m68k_op *op, int write) in update_op_reg_list() argument
3943 add_reg_to_rw_list(info, op->reg, write); in update_op_reg_list()
3947 update_am_reg_list(info, op, write); in update_op_reg_list()
3951 update_reg_list_regbits(info, op, write); in update_op_reg_list()
3955 add_reg_to_rw_list(info, M68K_REG_D0 + op->reg_pair.reg_0, write); in update_op_reg_list()
3956 add_reg_to_rw_list(info, M68K_REG_D0 + op->reg_pair.reg_1, write); in update_op_reg_list()
3961 static void build_regs_read_write_counts(m68k_info *info) in build_regs_read_write_counts() argument
3965 if (!info->extension.op_count) in build_regs_read_write_counts()
3968 if (info->extension.op_count == 1) { in build_regs_read_write_counts()
3969 update_op_reg_list(info, &info->extension.operands[0], 1); in build_regs_read_write_counts()
3972 update_op_reg_list(info, &info->extension.operands[0], 0); in build_regs_read_write_counts()
3975 for (i = 1; i < info->extension.op_count; ++i) in build_regs_read_write_counts()
3976 update_op_reg_list(info, &info->extension.operands[i], 1); in build_regs_read_write_counts()
3980 static void m68k_setup_internals(m68k_info* info, MCInst* inst, unsigned int pc, unsigned int cpu_t… in m68k_setup_internals() argument
3982 info->inst = inst; in m68k_setup_internals()
3983 info->pc = pc; in m68k_setup_internals()
3984 info->ir = 0; in m68k_setup_internals()
3985 info->type = cpu_type; in m68k_setup_internals()
3986 info->address_mask = 0xffffffff; in m68k_setup_internals()
3988 switch(info->type) { in m68k_setup_internals()
3990 info->type = TYPE_68000; in m68k_setup_internals()
3991 info->address_mask = 0x00ffffff; in m68k_setup_internals()
3994 info->type = TYPE_68010; in m68k_setup_internals()
3995 info->address_mask = 0x00ffffff; in m68k_setup_internals()
3998 info->type = TYPE_68020; in m68k_setup_internals()
3999 info->address_mask = 0x00ffffff; in m68k_setup_internals()
4002 info->type = TYPE_68020; in m68k_setup_internals()
4003 info->address_mask = 0xffffffff; in m68k_setup_internals()
4006 info->type = TYPE_68030; in m68k_setup_internals()
4007 info->address_mask = 0xffffffff; in m68k_setup_internals()
4010 info->type = TYPE_68040; in m68k_setup_internals()
4011 info->address_mask = 0xffffffff; in m68k_setup_internals()
4014 info->address_mask = 0; in m68k_setup_internals()
4024 static unsigned int m68k_disassemble(m68k_info *info, uint64_t pc) in m68k_disassemble() argument
4026 MCInst *inst = info->inst; in m68k_disassemble()
4027 cs_m68k* ext = &info->extension; in m68k_disassemble()
4041 info->ir = peek_imm_16(info); in m68k_disassemble()
4042 if (instruction_is_valid(info, peek_imm_32(info) & 0xffff)) { in m68k_disassemble()
4043 info->ir = read_imm_16(info); in m68k_disassemble()
4044 g_instruction_table[info->ir].instruction(info); in m68k_disassemble()
4047 size = info->pc - (unsigned int)pc; in m68k_disassemble()
4048 info->pc = (unsigned int)pc; in m68k_disassemble()
4061 m68k_info *info = (m68k_info*)handle->printer_info; in M68K_getInstruction() local
4074 info->groups_count = 0; in M68K_getInstruction()
4075 info->regs_read_count = 0; in M68K_getInstruction()
4076 info->regs_write_count = 0; in M68K_getInstruction()
4077 info->code = code; in M68K_getInstruction()
4078 info->code_len = code_len; in M68K_getInstruction()
4079 info->baseAddress = address; in M68K_getInstruction()
4092 m68k_setup_internals(info, instr, (unsigned int)address, cpu_type); in M68K_getInstruction()
4093 s = m68k_disassemble(info, address); in M68K_getInstruction()
4100 build_regs_read_write_counts(info); in M68K_getInstruction()
4104 M68K_printInst(instr, &ss, info); in M68K_getInstruction()