aboutsummaryrefslogtreecommitdiff
path: root/opcodes
diff options
context:
space:
mode:
Diffstat (limited to 'opcodes')
-rw-r--r--opcodes/ChangeLog6
-rw-r--r--opcodes/arm-dis.c66
2 files changed, 56 insertions, 16 deletions
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index db9f65e..c0c9835 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,9 @@
+2010-07-08 Tejas Belagod <tejas.belagod@arm.com>
+
+ * arm-dis.c (print_insn_arm): Add cases for printing more
+ symbolic operands.
+ (print_insn_thumb32): Likewise.
+
2010-07-06 Maciej W. Rozycki <macro@codesourcery.com>
* mips-dis.c (print_insn_mips): Correct branch instruction type
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':