diff options
author | Mike Frysinger <vapier@gentoo.org> | 2010-09-22 20:59:00 +0000 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2010-09-22 20:59:00 +0000 |
commit | 73a63ccf2f0f856eebf7fee67309fe2a276c39d6 (patch) | |
tree | 0ef34ab3fbb1c9e11d03994bf9ff5de520987243 /opcodes/bfin-dis.c | |
parent | 59a82d2333aec12b174ad37f2f385afbfe06cf45 (diff) | |
download | gdb-73a63ccf2f0f856eebf7fee67309fe2a276c39d6.zip gdb-73a63ccf2f0f856eebf7fee67309fe2a276c39d6.tar.gz gdb-73a63ccf2f0f856eebf7fee67309fe2a276c39d6.tar.bz2 |
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 <vapier@gentoo.org>
Diffstat (limited to 'opcodes/bfin-dis.c')
-rw-r--r-- | opcodes/bfin-dis.c | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/opcodes/bfin-dis.c b/opcodes/bfin-dis.c index 00799d2..19b1925 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) @@ -4570,6 +4570,21 @@ decode_pseudoDEBUG_0 (TIword iw0, disassemble_info *outf) } 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) { /* pseudodbg_assert @@ -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); |