diff options
author | Richard Earnshaw <richard.earnshaw@arm.com> | 2010-07-08 22:40:28 +0000 |
---|---|---|
committer | Richard Earnshaw <richard.earnshaw@arm.com> | 2010-07-08 22:40:28 +0000 |
commit | 52e7f43db080a890fc08dde31235f7c7a86178b9 (patch) | |
tree | 22f39485e0fede72f384d445dce769a6fdbd8e2e /opcodes/arm-dis.c | |
parent | 7e6e39e562179fd655e1407bba89c957902b5a8b (diff) | |
download | gdb-52e7f43db080a890fc08dde31235f7c7a86178b9.zip gdb-52e7f43db080a890fc08dde31235f7c7a86178b9.tar.gz gdb-52e7f43db080a890fc08dde31235f7c7a86178b9.tar.bz2 |
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.
Diffstat (limited to 'opcodes/arm-dis.c')
-rw-r--r-- | opcodes/arm-dis.c | 66 |
1 files changed, 50 insertions, 16 deletions
diff --git a/opcodes/arm-dis.c b/opcodes/arm-dis.c index 1463c65..b16d50f 100644 --- a/opcodes/arm-dis.c +++ b/opcodes/arm-dis.c @@ -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': |