disas/microblaze: Remove unused code
Signed-off-by: Stefan Weil <sw@weilnetz.de> Reviewed-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com> Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
This commit is contained in:
parent
2382053f1d
commit
76621d1faa
@ -603,25 +603,6 @@ char * get_field_special (long instr, struct op_code_struct * op);
|
|||||||
unsigned long read_insn_microblaze (bfd_vma memaddr,
|
unsigned long read_insn_microblaze (bfd_vma memaddr,
|
||||||
struct disassemble_info *info,
|
struct disassemble_info *info,
|
||||||
struct op_code_struct **opr);
|
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 *
|
static char *
|
||||||
get_field (long instr, long mask, unsigned short low)
|
get_field (long instr, long mask, unsigned short low)
|
||||||
@ -967,134 +948,3 @@ print_insn_microblaze (bfd_vma memaddr, struct disassemble_info * info)
|
|||||||
/* Say how many bytes we consumed? */
|
/* Say how many bytes we consumed? */
|
||||||
return 4;
|
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;
|
|
||||||
}
|
|
||||||
|
Loading…
Reference in New Issue
Block a user