aboutsummaryrefslogtreecommitdiff
path: root/opcodes
diff options
context:
space:
mode:
authorJeff Law <law@redhat.com>1999-09-19 19:29:37 +0000
committerJeff Law <law@redhat.com>1999-09-19 19:29:37 +0000
commitd758242c739c1d9348ac6aed240e639f5c547be3 (patch)
treef6efebe4127bbe529fb9aeb063fce2fd057e3d1b /opcodes
parent61dd1d313e032875de06281b658aa11d2c709abf (diff)
downloadfsf-binutils-gdb-d758242c739c1d9348ac6aed240e639f5c547be3.zip
fsf-binutils-gdb-d758242c739c1d9348ac6aed240e639f5c547be3.tar.gz
fsf-binutils-gdb-d758242c739c1d9348ac6aed240e639f5c547be3.tar.bz2
* hppa-dis.c (print_insn_hppa): Handle '#', 'd', and 'cq'.
Diffstat (limited to 'opcodes')
-rw-r--r--opcodes/ChangeLog2
-rw-r--r--opcodes/hppa-dis.c37
2 files changed, 39 insertions, 0 deletions
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index c5aed2a..7e3d350 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,5 +1,7 @@
Sun Sep 19 10:41:27 1999 Jeffrey A Law (law@cygnus.com)
+ * hppa-dis.c (print_insn_hppa): Handle '#', 'd', and 'cq'.
+
* hppa-dis.c (print_insn_hppa): Handle 'm', 'h', '='.
* hppa-dis.c (print_insn_hppa): Handle 'X' operand.
diff --git a/opcodes/hppa-dis.c b/opcodes/hppa-dis.c
index 099186a..6e8df74 100644
--- a/opcodes/hppa-dis.c
+++ b/opcodes/hppa-dis.c
@@ -490,6 +490,12 @@ print_insn_hppa (memaddr, info)
(*info->fprintf_func) (info->stream, "%s ",
short_ldst_compl_names[GET_COMPL (insn)]);
break;
+ case 'q':
+ (*info->fprintf_func)
+ (info->stream, "%s ",
+ short_ldst_compl_names[(GET_FIELD (insn, 28, 28)
+ | GET_FIELD (insn, 29, 29))]);
+ break;
case 's':
(*info->fprintf_func) (info->stream, "%s ",
short_bytes_compl_names[GET_COMPL (insn)]);
@@ -902,6 +908,37 @@ print_insn_hppa (memaddr, info)
float_format_names[GET_FIELD
(insn, 20, 20)]);
break;
+ case '#':
+ {
+ int sign = GET_FIELD (insn, 31, 31);
+ int imm10 = GET_FIELD (insn, 18, 27);
+ int disp;
+
+ if (sign)
+ disp = (-1 << 10) | imm10;
+ else
+ disp = imm10;
+
+ disp <<= 3;
+ fput_const (disp, info);
+ break;
+ }
+ case 'd':
+ {
+ int sign = GET_FIELD (insn, 31, 31);
+ int imm11 = GET_FIELD (insn, 18, 28);
+ int disp;
+
+ if (sign)
+ disp = (-1 << 11) | imm11;
+ else
+ disp = imm11;
+
+ disp <<= 2;
+ fput_const (disp, info);
+ break;
+ }
+
/* ?!? FIXME */
case '_':
case '{':