summaryrefslogtreecommitdiffstats
path: root/target
diff options
context:
space:
mode:
authorSven Schnelle2019-03-11 20:15:57 +0100
committerRichard Henderson2019-03-12 17:13:43 +0100
commit15da177bb40aecd829f32354190eec759947dc30 (patch)
treee8e192524b32fafe1b766f6c8a4362109cbef40a /target
parenttarget/hppa: remove PSW I/R/Q bit check (diff)
downloadqemu-15da177bb40aecd829f32354190eec759947dc30.tar.gz
qemu-15da177bb40aecd829f32354190eec759947dc30.tar.xz
qemu-15da177bb40aecd829f32354190eec759947dc30.zip
target/hppa: ignore DIAG opcode
DIAG is usually only used by diagnostics software as it's CPU specific. In most of the cases it's better to ignore it and log a message that it's not implemented. Signed-off-by: Sven Schnelle <svens@stackframe.org> Message-Id: <20190311191602.25796-7-svens@stackframe.org> [rth: Free the nullify condition.] Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'target')
-rw-r--r--target/hppa/insns.decode3
-rw-r--r--target/hppa/translate.c7
2 files changed, 10 insertions, 0 deletions
diff --git a/target/hppa/insns.decode b/target/hppa/insns.decode
index 55ff39dd05..098370c2f0 100644
--- a/target/hppa/insns.decode
+++ b/target/hppa/insns.decode
@@ -525,3 +525,6 @@ fmpy_d 001110 ..... ..... 010 ..... ... ..... @f0e_d_3
fdiv_d 001110 ..... ..... 011 ..... ... ..... @f0e_d_3
xmpyu 001110 ..... ..... 010 .0111 .00 t:5 r1=%ra64 r2=%rb64
+
+# diag
+diag 000101 ----- ----- ---- ---- ---- ----
diff --git a/target/hppa/translate.c b/target/hppa/translate.c
index c4815d7e1a..f3e78b8e22 100644
--- a/target/hppa/translate.c
+++ b/target/hppa/translate.c
@@ -4048,6 +4048,13 @@ static bool trans_fmpyfadd_d(DisasContext *ctx, arg_fmpyfadd_d *a)
return nullify_end(ctx);
}
+static bool trans_diag(DisasContext *ctx, arg_diag *a)
+{
+ qemu_log_mask(LOG_UNIMP, "DIAG opcode ignored\n");
+ cond_free(&ctx->null_cond);
+ return true;
+}
+
static void hppa_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cs)
{
DisasContext *ctx = container_of(dcbase, DisasContext, base);