2010-07-08 Tejas Belagod <tejas.belagod@arm.com>

gas/testsuite
	* gas/arm/barrier.s: New file.
	* gas/arm/barrier.d: New file.
	* gas/arm/barrier-thumb.s: New file.
	* gas/arm/barrier-thumb.d: New file.
	* gas/arm/barrier-bad.s: New file.
	* gas/arm/barrier-bad.d: New file.
	* gas/arm/barrier-bad.l: New file.
	* gas/arm/barrier-bad-thumb.s: New file.
	* gas/arm/barrier-bad-thumb.d: New file.
	* gas/arm/barrier-bad-thumb.l: New file.

	gas/config
	* tc-arm.c (OP_oBARRIER): Remove.
	(OP_oBARRIER_I15): Add.
	(po_barrier_or_imm): Add macro.
	(parse_operands): Improve OP_oBARRIER_I15 operand parsing.
	(do_barrier): Check correct immediate range.
	(do_t_barrier): Likewise.
	(barrier_opt_names): Add entries for more symbolic operands.
	(insns): Replace OP_oBARRIER with OP_oBARRIER_I15 for barriers.

	opcodes/
	* arm-dis.c (print_insn_arm): Add cases for printing more
	symbolic operands.
	(print_insn_thumb32): Likewise.
This commit is contained in:
Richard Earnshaw
2010-07-08 22:40:28 +00:00
parent 7e6e39e562
commit 52e7f43db0
15 changed files with 469 additions and 28 deletions

View File

@@ -3155,15 +3155,32 @@ print_insn_arm (bfd_vma pc, struct disassemble_info *info, long given)
break;
case 'U':
switch (given & 0xf)
if ((given & 0xf0) == 0x60)
{
case 0xf: func (stream, "sy"); break;
case 0x7: func (stream, "un"); break;
case 0xe: func (stream, "st"); break;
case 0x6: func (stream, "unst"); break;
default:
func (stream, "#%d", (int) given & 0xf);
break;
switch (given & 0xf)
{
case 0xf: func (stream, "sy"); break;
default:
func (stream, "#%d", (int) given & 0xf);
break;
}
}
else
{
switch (given & 0xf)
{
case 0xf: func (stream, "sy"); break;
case 0x7: func (stream, "un"); break;
case 0xe: func (stream, "st"); break;
case 0x6: func (stream, "unst"); break;
case 0xb: func (stream, "ish"); break;
case 0xa: func (stream, "ishst"); break;
case 0x3: func (stream, "osh"); break;
case 0x2: func (stream, "oshst"); break;
default:
func (stream, "#%d", (int) given & 0xf);
break;
}
}
break;
@@ -3998,16 +4015,33 @@ print_insn_thumb32 (bfd_vma pc, struct disassemble_info *info, long given)
break;
case 'U':
switch (given & 0xf)
if ((given & 0xf0) == 0x60)
{
case 0xf: func (stream, "sy"); break;
case 0x7: func (stream, "un"); break;
case 0xe: func (stream, "st"); break;
case 0x6: func (stream, "unst"); break;
default:
func (stream, "#%d", (int) given & 0xf);
break;
switch (given & 0xf)
{
case 0xf: func (stream, "sy"); break;
default:
func (stream, "#%d", (int) given & 0xf);
break;
}
}
else
{
switch (given & 0xf)
{
case 0xf: func (stream, "sy"); break;
case 0x7: func (stream, "un"); break;
case 0xe: func (stream, "st"); break;
case 0x6: func (stream, "unst"); break;
case 0xb: func (stream, "ish"); break;
case 0xa: func (stream, "ishst"); break;
case 0x3: func (stream, "osh"); break;
case 0x2: func (stream, "oshst"); break;
default:
func (stream, "#%d", (int) given & 0xf);
break;
}
}
break;
case 'C':