From de2b926e5b19ed66ed6c039e28470a7012783715 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Wed, 22 Sep 2010 20:58:59 +0000 Subject: opcodes/gas: blackfin: support OUTC debug insn The disassembler has partial (but incomplete/broken) support already for the pseudo debug insn OUTC, so let's fix it up and finish it. And now that the disassembler can handle it, make sure our assembler can output it too. Signed-off-by: Mike Frysinger --- opcodes/bfin-dis.c | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) (limited to 'opcodes/bfin-dis.c') diff --git a/opcodes/bfin-dis.c b/opcodes/bfin-dis.c index 00799d254c..19b19259b0 100644 --- a/opcodes/bfin-dis.c +++ b/opcodes/bfin-dis.c @@ -4550,7 +4550,7 @@ decode_pseudoDEBUG_0 (TIword iw0, disassemble_info *outf) else if (grp == 0 && fn == 2) { - OUTS (outf, "OUTC"); + OUTS (outf, "OUTC "); OUTS (outf, dregs (reg)); } else if (fn == 0) @@ -4569,6 +4569,21 @@ decode_pseudoDEBUG_0 (TIword iw0, disassemble_info *outf) return 2; } +static int +decode_pseudoOChar_0 (TIword iw0, disassemble_info *outf) +{ + /* psedoOChar + +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ + | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 |.ch............................| + +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+ */ + int ch = ((iw0 >> PseudoChr_ch_bits) & PseudoChr_ch_mask); + + OUTS (outf, "OUTC "); + OUTS (outf, uimm8 (ch)); + + return 2; +} + static int decode_pseudodbg_assert_0 (TIword iw0, TIword iw1, disassemble_info *outf) { @@ -4713,10 +4728,8 @@ _print_insn_bfin (bfd_vma pc, disassemble_info *outf) rv = decode_dsp32shiftimm_0 (iw0, iw1, outf); else if ((iw0 & 0xff00) == 0xf800) rv = decode_pseudoDEBUG_0 (iw0, outf); -#if 0 else if ((iw0 & 0xFF00) == 0xF900) - rv = decode_pseudoOChar_0 (iw0, iw1, pc, outf); -#endif + rv = decode_pseudoOChar_0 (iw0, outf); else if ((iw0 & 0xFF00) == 0xf000 && (iw1 & 0x0000) == 0x0000) rv = decode_pseudodbg_assert_0 (iw0, iw1, outf); -- cgit v1.2.1