[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 051/126] target-s390: Convert LAM, STAM
From: |
Richard Henderson |
Subject: |
[Qemu-devel] [PATCH 051/126] target-s390: Convert LAM, STAM |
Date: |
Sun, 9 Sep 2012 14:05:09 -0700 |
Signed-off-by: Richard Henderson <address@hidden>
---
target-s390x/insn-data.def | 6 ++++++
target-s390x/translate.c | 46 ++++++++++++++++++++++------------------------
2 files changed, 28 insertions(+), 24 deletions(-)
diff --git a/target-s390x/insn-data.def b/target-s390x/insn-data.def
index 52f44e0..598447e 100644
--- a/target-s390x/insn-data.def
+++ b/target-s390x/insn-data.def
@@ -279,6 +279,9 @@
C(0xeb04, LMG, RSY_a, Z, 0, a2, 0, 0, lm64, 0)
/* LOAD MULTIPLE HIGH */
C(0xeb96, LMH, RSY_a, Z, 0, a2, 0, 0, lmh, 0)
+/* LOAD ACCESS MULTIPLE */
+ C(0x9a00, LAM, RS_a, Z, 0, a2, 0, 0, lam, 0)
+ C(0xeb9a, LAMY, RSY_a, LD, 0, a2, 0, 0, lam, 0)
/* MOVE */
C(0xe544, MVHHI, SIL, GIE, la1, i2, 0, m1_16, mov2, 0)
@@ -389,6 +392,9 @@
D(0xeb24, STMG, RSY_a, Z, 0, a2, 0, 0, stm, 0, 8)
/* STORE MULTIPLE HIGH */
C(0xeb26, STMH, RSY_a, Z, 0, a2, 0, 0, stmh, 0)
+/* STORE ACCESS MULTIPLE */
+ C(0x9b00, STAM, RS_a, Z, 0, a2, 0, 0, stam, 0)
+ C(0xeb9b, STAMY, RSY_a, LD, 0, a2, 0, 0, stam, 0)
/* SUBTRACT */
C(0x1b00, SR, RR_a, Z, r1, r2, new, r1_32, sub, subs32)
diff --git a/target-s390x/translate.c b/target-s390x/translate.c
index 295caec..43c7ec7 100644
--- a/target-s390x/translate.c
+++ b/target-s390x/translate.c
@@ -2226,30 +2226,6 @@ static void disas_s390_insn(DisasContext *s)
LOG_DISAS("opc 0x%x\n", opc);
switch (opc) {
- case 0x9a: /* LAM R1,R3,D2(B2) [RS] */
- insn = ld_code4(s->pc);
- decode_rs(s, insn, &r1, &r3, &b2, &d2);
- tmp = get_address(s, 0, b2, d2);
- tmp32_1 = tcg_const_i32(r1);
- tmp32_2 = tcg_const_i32(r3);
- potential_page_fault(s);
- gen_helper_lam(cpu_env, tmp32_1, tmp, tmp32_2);
- tcg_temp_free_i64(tmp);
- tcg_temp_free_i32(tmp32_1);
- tcg_temp_free_i32(tmp32_2);
- break;
- case 0x9b: /* STAM R1,R3,D2(B2) [RS] */
- insn = ld_code4(s->pc);
- decode_rs(s, insn, &r1, &r3, &b2, &d2);
- tmp = get_address(s, 0, b2, d2);
- tmp32_1 = tcg_const_i32(r1);
- tmp32_2 = tcg_const_i32(r3);
- potential_page_fault(s);
- gen_helper_stam(cpu_env, tmp32_1, tmp, tmp32_2);
- tcg_temp_free_i64(tmp);
- tcg_temp_free_i32(tmp32_1);
- tcg_temp_free_i32(tmp32_2);
- break;
case 0xa8: /* MVCLE R1,R3,D2(B2) [RS] */
insn = ld_code4(s->pc);
decode_rs(s, insn, &r1, &r3, &b2, &d2);
@@ -3212,6 +3188,17 @@ static ExitStatus op_lpsw(DisasContext *s, DisasOps *o)
}
#endif
+static ExitStatus op_lam(DisasContext *s, DisasOps *o)
+{
+ TCGv_i32 r1 = tcg_const_i32(get_field(s->fields, r1));
+ TCGv_i32 r3 = tcg_const_i32(get_field(s->fields, r3));
+ potential_page_fault(s);
+ gen_helper_lam(cpu_env, r1, o->in2, r3);
+ tcg_temp_free_i32(r1);
+ tcg_temp_free_i32(r3);
+ return NO_EXIT;
+}
+
static ExitStatus op_lm32(DisasContext *s, DisasOps *o)
{
int r1 = get_field(s->fields, r1);
@@ -3447,6 +3434,17 @@ static ExitStatus op_st64(DisasContext *s, DisasOps *o)
return NO_EXIT;
}
+static ExitStatus op_stam(DisasContext *s, DisasOps *o)
+{
+ TCGv_i32 r1 = tcg_const_i32(get_field(s->fields, r1));
+ TCGv_i32 r3 = tcg_const_i32(get_field(s->fields, r3));
+ potential_page_fault(s);
+ gen_helper_stam(cpu_env, r1, o->in2, r3);
+ tcg_temp_free_i32(r1);
+ tcg_temp_free_i32(r3);
+ return NO_EXIT;
+}
+
static ExitStatus op_stm(DisasContext *s, DisasOps *o)
{
int r1 = get_field(s->fields, r1);
--
1.7.11.4
- [Qemu-devel] [PATCH 028/126] target-s390: Convert BRANCH ON COUNT, (continued)
- [Qemu-devel] [PATCH 028/126] target-s390: Convert BRANCH ON COUNT, Richard Henderson, 2012/09/09
- [Qemu-devel] [PATCH 031/126] target-s390: Convert TEST UNDER MASK, Richard Henderson, 2012/09/09
- [Qemu-devel] [PATCH 034/126] target-s390: Convert MOVE LONG, Richard Henderson, 2012/09/09
- [Qemu-devel] [PATCH 036/126] target-s390: Convert INSERT CHARACTER, Richard Henderson, 2012/09/09
- [Qemu-devel] [PATCH 035/126] target-s390: Convert FP LOAD, Richard Henderson, 2012/09/09
- [Qemu-devel] [PATCH 033/126] target-s390: Convert SUPERVISOR CALL, Richard Henderson, 2012/09/09
- [Qemu-devel] [PATCH 038/126] target-s390: Convert INSERT CHARACTERS UNDER MASK, Richard Henderson, 2012/09/09
- [Qemu-devel] [PATCH 042/126] target-s390: Convert SET SYSTEM MASK, Richard Henderson, 2012/09/09
- [Qemu-devel] [PATCH 049/126] target-s390: Convert NI, XI, OI, Richard Henderson, 2012/09/09
- [Qemu-devel] [PATCH 037/126] target-s390: Cleanup cc computation helpers, Richard Henderson, 2012/09/09
- [Qemu-devel] [PATCH 051/126] target-s390: Convert LAM, STAM,
Richard Henderson <=
- [Qemu-devel] [PATCH 040/126] target-s390: Convert FP STORE, Richard Henderson, 2012/09/09
- [Qemu-devel] [PATCH 052/126] target-s390: Convert CLCLE, MVCLE, Richard Henderson, 2012/09/09
- [Qemu-devel] [PATCH 039/126] target-s390: Convert EXECUTE, Richard Henderson, 2012/09/09
- [Qemu-devel] [PATCH 041/126] target-s390: Convert CONVERT TO DECIMAL, Richard Henderson, 2012/09/09
- [Qemu-devel] [PATCH 043/126] target-s390: Convert LOAD PSW, Richard Henderson, 2012/09/09
- [Qemu-devel] [PATCH 053/126] target-s390: Convert MVC, Richard Henderson, 2012/09/09
- [Qemu-devel] [PATCH 057/126] target-s390: Convert LRA, Richard Henderson, 2012/09/09
- [Qemu-devel] [PATCH 055/126] target-s390: Convert CLC, Richard Henderson, 2012/09/09
- [Qemu-devel] [PATCH 056/126] target-s390: Convert MVCP, MVCS, Richard Henderson, 2012/09/09