On Sat, Aug 29, 2015 at 09:44:33AM +0200, Stefan Weil wrote: > Signed-off-by: Stefan Weil <s...@weilnetz.de>
Reviewed-by: Edgar E. Iglesias <edgar.igles...@xilinx.com> > --- > disas/microblaze.c | 150 > ----------------------------------------------------- > 1 file changed, 150 deletions(-) > > diff --git a/disas/microblaze.c b/disas/microblaze.c > index c14ab89..3588235 100644 > --- a/disas/microblaze.c > +++ b/disas/microblaze.c > @@ -604,25 +604,6 @@ char * get_field_special (long instr, struct > op_code_struct * op); > unsigned long read_insn_microblaze (bfd_vma memaddr, > struct disassemble_info *info, > struct op_code_struct **opr); > -enum microblaze_instr get_insn_microblaze (long inst, > - bfd_boolean *isunsignedimm, > - enum microblaze_instr_type *insn_type, > - short *delay_slots); > -short get_delay_slots_microblaze (long inst); > -enum microblaze_instr microblaze_decode_insn (long insn, > - int *rd, > - int *ra, > - int *rb, > - int *imm); > -unsigned long > -microblaze_get_target_address (long inst, > - bfd_boolean immfound, > - int immval, > - long pcval, > - long r1val, > - long r2val, > - bfd_boolean *targetvalid, > - bfd_boolean *unconditionalbranch); > > static char * > get_field (long instr, long mask, unsigned short low) > @@ -968,134 +949,3 @@ print_insn_microblaze (bfd_vma memaddr, struct > disassemble_info * info) > /* Say how many bytes we consumed? */ > return 4; > } > - > -enum microblaze_instr > -get_insn_microblaze (long inst, > - bfd_boolean *isunsignedimm, > - enum microblaze_instr_type *insn_type, > - short *delay_slots) > -{ > - struct op_code_struct * op; > - *isunsignedimm = FALSE; > - > - /* Just a linear search of the table. */ > - for (op = opcodes; op->name != 0; op ++) > - if (op->bit_sequence == (inst & op->opcode_mask)) > - break; > - > - if (op->name == 0) > - return invalid_inst; > - else { > - *isunsignedimm = (op->inst_type == INST_TYPE_RD_R1_UNSIGNED_IMM); > - *insn_type = op->instr_type; > - *delay_slots = op->delay_slots; > - return op->instr; > - } > -} > - > -short > -get_delay_slots_microblaze (long inst) > -{ > - bfd_boolean isunsignedimm; > - enum microblaze_instr_type insn_type; > - enum microblaze_instr op; > - short delay_slots; > - > - op = get_insn_microblaze( inst, &isunsignedimm, &insn_type, &delay_slots); > - if (op == invalid_inst) > - return 0; > - else > - return delay_slots; > -} > - > -enum microblaze_instr > -microblaze_decode_insn (long insn, > - int *rd, > - int *ra, > - int *rb, > - int *imm) > -{ > - enum microblaze_instr op; > - bfd_boolean t1; > - enum microblaze_instr_type t2; > - short t3; > - > - op = get_insn_microblaze(insn, &t1, &t2, &t3); > - *rd = (insn & RD_MASK) >> RD_LOW; > - *ra = (insn & RA_MASK) >> RA_LOW; > - *rb = (insn & RB_MASK) >> RB_LOW; > - t3 = (insn & IMM_MASK) >> IMM_LOW; > - *imm = (int) t3; > - return (op); > -} > - > -unsigned long > -microblaze_get_target_address (long inst, > - bfd_boolean immfound, > - int immval, > - long pcval, > - long r1val, > - long r2val, > - bfd_boolean *targetvalid, > - bfd_boolean *unconditionalbranch) > -{ > - struct op_code_struct * op; > - long targetaddr = 0; > - > - *unconditionalbranch = FALSE; > - /* Just a linear search of the table. */ > - for (op = opcodes; op->name != 0; op ++) > - if (op->bit_sequence == (inst & op->opcode_mask)) > - break; > - > - if (op->name == 0) { > - *targetvalid = FALSE; > - } else if (op->instr_type == branch_inst) { > - switch (op->inst_type) { > - case INST_TYPE_R2: > - *unconditionalbranch = TRUE; > - /* fallthru */ > - case INST_TYPE_RD_R2: > - case INST_TYPE_R1_R2: > - targetaddr = r2val; > - *targetvalid = TRUE; > - if (op->inst_offset_type == INST_PC_OFFSET) > - targetaddr += pcval; > - break; > - case INST_TYPE_IMM: > - *unconditionalbranch = TRUE; > - /* fallthru */ > - case INST_TYPE_RD_IMM: > - case INST_TYPE_R1_IMM: > - if (immfound) { > - targetaddr = (immval << 16) & 0xffff0000; > - targetaddr |= (get_int_field_imm(inst) & 0x0000ffff); > - } else { > - targetaddr = get_int_field_imm(inst); > - if (targetaddr & 0x8000) > - targetaddr |= 0xFFFF0000; > - } > - if (op->inst_offset_type == INST_PC_OFFSET) > - targetaddr += pcval; > - *targetvalid = TRUE; > - break; > - default: > - *targetvalid = FALSE; > - break; > - } > - } else if (op->instr_type == return_inst) { > - if (immfound) { > - targetaddr = (immval << 16) & 0xffff0000; > - targetaddr |= (get_int_field_imm(inst) & 0x0000ffff); > - } else { > - targetaddr = get_int_field_imm(inst); > - if (targetaddr & 0x8000) > - targetaddr |= 0xFFFF0000; > - } > - targetaddr += r1val; > - *targetvalid = TRUE; > - } else { > - *targetvalid = FALSE; > - } > - return targetaddr; > -} > -- > 2.1.4 >