[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 06/10] target-s390: Implement EPSW
From: |
Richard Henderson |
Subject: |
[Qemu-devel] [PATCH 06/10] target-s390: Implement EPSW |
Date: |
Mon, 23 Sep 2013 07:04:41 -0700 |
Signed-off-by: Richard Henderson <address@hidden>
---
target-s390x/insn-data.def | 2 ++
target-s390x/translate.c | 18 ++++++++++++++++++
2 files changed, 20 insertions(+)
diff --git a/target-s390x/insn-data.def b/target-s390x/insn-data.def
index c528eb4..48850ff 100644
--- a/target-s390x/insn-data.def
+++ b/target-s390x/insn-data.def
@@ -287,6 +287,8 @@
C(0xb24f, EAR, RRE, Z, 0, 0, new, r1_32, ear, 0)
/* EXTRACT FPC */
C(0xb38c, EFPC, RRE, Z, 0, 0, new, r1_32, efpc, 0)
+/* EXTRACT PSW */
+ C(0xb98d, EPSW, RRE, Z, 0, 0, 0, 0, epsw, 0)
/* FIND LEFTMOST ONE */
C(0xb983, FLOGR, RRE, EI, 0, r2_o, r1_P, 0, flogr, 0)
diff --git a/target-s390x/translate.c b/target-s390x/translate.c
index 6ca8f0b..192d54e 100644
--- a/target-s390x/translate.c
+++ b/target-s390x/translate.c
@@ -2036,6 +2036,24 @@ static ExitStatus op_efpc(DisasContext *s, DisasOps *o)
return NO_EXIT;
}
+static ExitStatus op_epsw(DisasContext *s, DisasOps *o)
+{
+ int r1 = get_field(s->fields, r1);
+ int r2 = get_field(s->fields, r2);
+ TCGv_i64 t = tcg_temp_new_i64();
+
+ /* Note the "subsequently" in the PoO, which implies a defined result
+ if r1 == r2. Thus we cannot defer these writes to an output hook. */
+ tcg_gen_shri_i64(t, psw_mask, 32);
+ store_reg32_i64(r1, t);
+ if (r2 != 0) {
+ store_reg32_i64(r2, psw_mask);
+ }
+
+ tcg_temp_free_i64(t);
+ return NO_EXIT;
+}
+
static ExitStatus op_ex(DisasContext *s, DisasOps *o)
{
/* ??? Perhaps a better way to implement EXECUTE is to set a bit in
--
1.8.1.4
- [Qemu-devel] [PATCH 0/9] target-s390 tcg improvements, Richard Henderson, 2013/09/23
- [Qemu-devel] [PATCH 04/10] target-s390: Raise OPERATION exception for disabled insns, Richard Henderson, 2013/09/23
- [Qemu-devel] [PATCH 02/10] target-s390: Implement STFLE, Richard Henderson, 2013/09/23
- [Qemu-devel] [PATCH 01/10] target-s390: Move facilities bits to env, Richard Henderson, 2013/09/23
- [Qemu-devel] [PATCH 03/10] target-s390: Add facilities bits and sets, Richard Henderson, 2013/09/23
- [Qemu-devel] [PATCH 06/10] target-s390: Implement EPSW,
Richard Henderson <=
- [Qemu-devel] [PATCH 05/10] target-s390: Implement SAM31 and SAM64, Richard Henderson, 2013/09/23
- [Qemu-devel] [PATCH 07/10] target-s390: Fix STIDP, Richard Henderson, 2013/09/23
- [Qemu-devel] [PATCH 10/10] target-s390: Implement ECAG, Richard Henderson, 2013/09/23
- [Qemu-devel] [PATCH 09/10] target-s390: Implement LURA, LURAG, STURG, Richard Henderson, 2013/09/23
- [Qemu-devel] [PATCH 08/10] target-s390: Fix STURA, Richard Henderson, 2013/09/23
- Re: [Qemu-devel] [PATCH 0/9] target-s390 tcg improvements, Alexander Graf, 2013/09/30