summaryrefslogtreecommitdiff
path: root/opcodes/hppa-dis.c
diff options
context:
space:
mode:
authorJeff Law <law@redhat.com>1999-08-28 08:47:50 +0000
committerJeff Law <law@redhat.com>1999-08-28 08:47:50 +0000
commit1eee34f59f8734c3f7aaeabcdfb8ba7cdb00a0b1 (patch)
tree0bcf01d9d36701f3171af1ad25d8f79c3d8bc2ef /opcodes/hppa-dis.c
parent96226a686f950a41b62a0c587d76c8b06e371475 (diff)
downloadbinutils-gdb-1eee34f59f8734c3f7aaeabcdfb8ba7cdb00a0b1.tar.gz
* hppa-dis.c (signed_unsigned_names,mix_half_names,
saturation_names): New. (print_insn_hppa): Add completer codes 'a', 'ch', 'cH', 'cS', and 'c*'.
Diffstat (limited to 'opcodes/hppa-dis.c')
-rw-r--r--opcodes/hppa-dis.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/opcodes/hppa-dis.c b/opcodes/hppa-dis.c
index 52bc8ce2b38..4a7fd06efb7 100644
--- a/opcodes/hppa-dis.c
+++ b/opcodes/hppa-dis.c
@@ -125,6 +125,10 @@ static const char float_comp_names[][8] =
",!?<=", ",>", ",?>", ",!<=", ",!?<", ",>=", ",?>=", ",!<",
",!?=", ",<>", ",!=", ",!=t", ",!?", ",<=>", ",true?", ",true"
};
+static const char *const signed_unsigned_names[][3] = {",u", ",s"};
+static const char *const mix_half_names[][3] = {",l", ",r"};
+static const char *const saturation_names[][3] = {",us", ",ss", 0, ""};
+
/* For a bunch of different instructions form an index into a
completer name table. */
@@ -346,6 +350,7 @@ print_insn_hppa (memaddr, info)
else
fput_fp_reg (GET_FIELD (insn, 11, 15), info);
break;
+ case 'a':
case 'b':
fput_reg (GET_FIELD (insn, 6, 10), info);
break;
@@ -441,6 +446,33 @@ print_insn_hppa (memaddr, info)
else
(*info->fprintf_func) (info->stream, " ");
break;
+ case 'S':
+ /* EXTRD/W has a following condition. */
+ if (*(s + 1) == '?')
+ (*info->fprintf_func)
+ (info->stream, "%s", signed_unsigned_names[GET_FIELD
+ (insn, 21, 21)]);
+ else
+ (*info->fprintf_func)
+ (info->stream, "%s ", signed_unsigned_names[GET_FIELD
+ (insn, 21, 21)]);
+ break;
+ case 'h':
+ (*info->fprintf_func)
+ (info->stream, "%s", mix_half_names[GET_FIELD
+ (insn, 17, 17)]);
+ break;
+ case 'H':
+ (*info->fprintf_func)
+ (info->stream, "%s", saturation_names[GET_FIELD
+ (insn, 24, 25)]);
+ break;
+ case '*':
+ (*info->fprintf_func)
+ (info->stream, ",%d%d%d%d ",
+ GET_FIELD (insn, 17, 18), GET_FIELD (insn, 20, 21),
+ GET_FIELD (insn, 22, 23), GET_FIELD (insn, 24, 25));
+ break;
}
break;