aboutsummaryrefslogtreecommitdiff
path: root/target/s390x/translate.c
diff options
context:
space:
mode:
authorRichard Henderson <richard.henderson@linaro.org>2020-01-23 13:22:46 -1000
committerCornelia Huck <cohuck@redhat.com>2020-01-27 12:13:10 +0100
commitc30988d15bd6454b2e38f2e67d850f6450130da3 (patch)
treebcfe41ab50e4621b8d1a196885a25e1917947eb9 /target/s390x/translate.c
parent3f68884b56e96a8b9793dca47e33238bc930469f (diff)
target/s390x: Pass DisasContext to get_field and have_field
All callers pass s->fields, so we might as well pass s directly. Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20200123232248.1800-4-richard.henderson@linaro.org> Reviewed-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Cornelia Huck <cohuck@redhat.com>
Diffstat (limited to 'target/s390x/translate.c')
-rw-r--r--target/s390x/translate.c534
1 files changed, 265 insertions, 269 deletions
diff --git a/target/s390x/translate.c b/target/s390x/translate.c
index 7d3dcc4fab..51a1d865c0 100644
--- a/target/s390x/translate.c
+++ b/target/s390x/translate.c
@@ -1092,16 +1092,16 @@ typedef enum {
#define have_field(S, F) have_field1((S), FLD_O_##F)
#define get_field(S, F) get_field1((S), FLD_O_##F, FLD_C_##F)
-static bool have_field1(const DisasFields *f, enum DisasFieldIndexO c)
+static bool have_field1(const DisasContext *s, enum DisasFieldIndexO c)
{
- return (f->presentO >> c) & 1;
+ return (s->fields->presentO >> c) & 1;
}
-static int get_field1(const DisasFields *f, enum DisasFieldIndexO o,
+static int get_field1(const DisasContext *s, enum DisasFieldIndexO o,
enum DisasFieldIndexC c)
{
- assert(have_field1(f, o));
- return f->c[c];
+ assert(have_field1(s, o));
+ return s->fields->c[c];
}
/* Describe the layout of each field in each format. */
@@ -1245,8 +1245,8 @@ struct DisasInsn {
static void help_l2_shift(DisasContext *s, DisasOps *o, int mask)
{
- int b2 = get_field(s->fields, b2);
- int d2 = get_field(s->fields, d2);
+ int b2 = get_field(s, b2);
+ int d2 = get_field(s, d2);
if (b2 == 0) {
o->in2 = tcg_const_i64(d2 & mask);
@@ -1601,18 +1601,18 @@ static DisasJumpType op_bal(DisasContext *s, DisasOps *o)
static DisasJumpType op_basi(DisasContext *s, DisasOps *o)
{
pc_to_link_info(o->out, s, s->pc_tmp);
- return help_goto_direct(s, s->base.pc_next + 2 * get_field(s->fields, i2));
+ return help_goto_direct(s, s->base.pc_next + 2 * get_field(s, i2));
}
static DisasJumpType op_bc(DisasContext *s, DisasOps *o)
{
- int m1 = get_field(s->fields, m1);
- bool is_imm = have_field(s->fields, i2);
- int imm = is_imm ? get_field(s->fields, i2) : 0;
+ int m1 = get_field(s, m1);
+ bool is_imm = have_field(s, i2);
+ int imm = is_imm ? get_field(s, i2) : 0;
DisasCompare c;
/* BCR with R2 = 0 causes no branching */
- if (have_field(s->fields, r2) && get_field(s->fields, r2) == 0) {
+ if (have_field(s, r2) && get_field(s, r2) == 0) {
if (m1 == 14) {
/* Perform serialization */
/* FIXME: check for fast-BCR-serialization facility */
@@ -1632,9 +1632,9 @@ static DisasJumpType op_bc(DisasContext *s, DisasOps *o)
static DisasJumpType op_bct32(DisasContext *s, DisasOps *o)
{
- int r1 = get_field(s->fields, r1);
- bool is_imm = have_field(s->fields, i2);
- int imm = is_imm ? get_field(s->fields, i2) : 0;
+ int r1 = get_field(s, r1);
+ bool is_imm = have_field(s, i2);
+ int imm = is_imm ? get_field(s, i2) : 0;
DisasCompare c;
TCGv_i64 t;
@@ -1656,8 +1656,8 @@ static DisasJumpType op_bct32(DisasContext *s, DisasOps *o)
static DisasJumpType op_bcth(DisasContext *s, DisasOps *o)
{
- int r1 = get_field(s->fields, r1);
- int imm = get_field(s->fields, i2);
+ int r1 = get_field(s, r1);
+ int imm = get_field(s, i2);
DisasCompare c;
TCGv_i64 t;
@@ -1680,9 +1680,9 @@ static DisasJumpType op_bcth(DisasContext *s, DisasOps *o)
static DisasJumpType op_bct64(DisasContext *s, DisasOps *o)
{
- int r1 = get_field(s->fields, r1);
- bool is_imm = have_field(s->fields, i2);
- int imm = is_imm ? get_field(s->fields, i2) : 0;
+ int r1 = get_field(s, r1);
+ bool is_imm = have_field(s, i2);
+ int imm = is_imm ? get_field(s, i2) : 0;
DisasCompare c;
c.cond = TCG_COND_NE;
@@ -1699,10 +1699,10 @@ static DisasJumpType op_bct64(DisasContext *s, DisasOps *o)
static DisasJumpType op_bx32(DisasContext *s, DisasOps *o)
{
- int r1 = get_field(s->fields, r1);
- int r3 = get_field(s->fields, r3);
- bool is_imm = have_field(s->fields, i2);
- int imm = is_imm ? get_field(s->fields, i2) : 0;
+ int r1 = get_field(s, r1);
+ int r3 = get_field(s, r3);
+ bool is_imm = have_field(s, i2);
+ int imm = is_imm ? get_field(s, i2) : 0;
DisasCompare c;
TCGv_i64 t;
@@ -1725,10 +1725,10 @@ static DisasJumpType op_bx32(DisasContext *s, DisasOps *o)
static DisasJumpType op_bx64(DisasContext *s, DisasOps *o)
{
- int r1 = get_field(s->fields, r1);
- int r3 = get_field(s->fields, r3);
- bool is_imm = have_field(s->fields, i2);
- int imm = is_imm ? get_field(s->fields, i2) : 0;
+ int r1 = get_field(s, r1);
+ int r3 = get_field(s, r3);
+ bool is_imm = have_field(s, i2);
+ int imm = is_imm ? get_field(s, i2) : 0;
DisasCompare c;
c.cond = (s->insn->data ? TCG_COND_LE : TCG_COND_GT);
@@ -1751,7 +1751,7 @@ static DisasJumpType op_bx64(DisasContext *s, DisasOps *o)
static DisasJumpType op_cj(DisasContext *s, DisasOps *o)
{
- int imm, m3 = get_field(s->fields, m3);
+ int imm, m3 = get_field(s, m3);
bool is_imm;
DisasCompare c;
@@ -1763,13 +1763,13 @@ static DisasJumpType op_cj(DisasContext *s, DisasOps *o)
c.u.s64.a = o->in1;
c.u.s64.b = o->in2;
- is_imm = have_field(s->fields, i4);
+ is_imm = have_field(s, i4);
if (is_imm) {
- imm = get_field(s->fields, i4);
+ imm = get_field(s, i4);
} else {
imm = 0;
- o->out = get_address(s, 0, get_field(s->fields, b4),
- get_field(s->fields, d4));
+ o->out = get_address(s, 0, get_field(s, b4),
+ get_field(s, d4));
}
return help_branch(s, &c, is_imm, imm, o->out);
@@ -1800,8 +1800,8 @@ static TCGv_i32 fpinst_extract_m34(DisasContext *s, bool m3_with_fpe,
bool m4_with_fpe)
{
const bool fpe = s390_has_feat(S390_FEAT_FLOATING_POINT_EXT);
- uint8_t m3 = get_field(s->fields, m3);
- uint8_t m4 = get_field(s->fields, m4);
+ uint8_t m3 = get_field(s, m3);
+ uint8_t m4 = get_field(s, m4);
/* m3 field was introduced with FPE */
if (!fpe && m3_with_fpe) {
@@ -2053,7 +2053,7 @@ static DisasJumpType op_cxlgb(DisasContext *s, DisasOps *o)
static DisasJumpType op_cksm(DisasContext *s, DisasOps *o)
{
- int r2 = get_field(s->fields, r2);
+ int r2 = get_field(s, r2);
TCGv_i64 len = tcg_temp_new_i64();
gen_helper_cksm(len, cpu_env, o->in1, o->in2, regs[r2 + 1]);
@@ -2069,7 +2069,7 @@ static DisasJumpType op_cksm(DisasContext *s, DisasOps *o)
static DisasJumpType op_clc(DisasContext *s, DisasOps *o)
{
- int l = get_field(s->fields, l1);
+ int l = get_field(s, l1);
TCGv_i32 vl;
switch (l + 1) {
@@ -2102,8 +2102,8 @@ static DisasJumpType op_clc(DisasContext *s, DisasOps *o)
static DisasJumpType op_clcl(DisasContext *s, DisasOps *o)
{
- int r1 = get_field(s->fields, r1);
- int r2 = get_field(s->fields, r2);
+ int r1 = get_field(s, r1);
+ int r2 = get_field(s, r2);
TCGv_i32 t1, t2;
/* r1 and r2 must be even. */
@@ -2123,8 +2123,8 @@ static DisasJumpType op_clcl(DisasContext *s, DisasOps *o)
static DisasJumpType op_clcle(DisasContext *s, DisasOps *o)
{
- int r1 = get_field(s->fields, r1);
- int r3 = get_field(s->fields, r3);
+ int r1 = get_field(s, r1);
+ int r3 = get_field(s, r3);
TCGv_i32 t1, t3;
/* r1 and r3 must be even. */
@@ -2144,8 +2144,8 @@ static DisasJumpType op_clcle(DisasContext *s, DisasOps *o)
static DisasJumpType op_clclu(DisasContext *s, DisasOps *o)
{
- int r1 = get_field(s->fields, r1);
- int r3 = get_field(s->fields, r3);
+ int r1 = get_field(s, r1);
+ int r3 = get_field(s, r3);
TCGv_i32 t1, t3;
/* r1 and r3 must be even. */
@@ -2165,7 +2165,7 @@ static DisasJumpType op_clclu(DisasContext *s, DisasOps *o)
static DisasJumpType op_clm(DisasContext *s, DisasOps *o)
{
- TCGv_i32 m3 = tcg_const_i32(get_field(s->fields, m3));
+ TCGv_i32 m3 = tcg_const_i32(get_field(s, m3));
TCGv_i32 t1 = tcg_temp_new_i32();
tcg_gen_extrl_i64_i32(t1, o->in1);
gen_helper_clm(cc_op, cpu_env, t1, m3, o->in2);
@@ -2195,8 +2195,8 @@ static DisasJumpType op_cps(DisasContext *s, DisasOps *o)
static DisasJumpType op_cs(DisasContext *s, DisasOps *o)
{
- int d2 = get_field(s->fields, d2);
- int b2 = get_field(s->fields, b2);
+ int d2 = get_field(s, d2);
+ int b2 = get_field(s, b2);
TCGv_i64 addr, cc;
/* Note that in1 = R3 (new value) and
@@ -2220,10 +2220,10 @@ static DisasJumpType op_cs(DisasContext *s, DisasOps *o)
static DisasJumpType op_cdsg(DisasContext *s, DisasOps *o)
{
- int r1 = get_field(s->fields, r1);
- int r3 = get_field(s->fields, r3);
- int d2 = get_field(s->fields, d2);
- int b2 = get_field(s->fields, b2);
+ int r1 = get_field(s, r1);
+ int r3 = get_field(s, r3);
+ int d2 = get_field(s, d2);
+ int b2 = get_field(s, b2);
DisasJumpType ret = DISAS_NEXT;
TCGv_i64 addr;
TCGv_i32 t_r1, t_r3;
@@ -2250,7 +2250,7 @@ static DisasJumpType op_cdsg(DisasContext *s, DisasOps *o)
static DisasJumpType op_csst(DisasContext *s, DisasOps *o)
{
- int r3 = get_field(s->fields, r3);
+ int r3 = get_field(s, r3);
TCGv_i32 t_r3 = tcg_const_i32(r3);
if (tb_cflags(s->base.tb) & CF_PARALLEL) {
@@ -2323,7 +2323,7 @@ static DisasJumpType op_cvd(DisasContext *s, DisasOps *o)
static DisasJumpType op_ct(DisasContext *s, DisasOps *o)
{
- int m3 = get_field(s->fields, m3);
+ int m3 = get_field(s, m3);
TCGLabel *lab = gen_new_label();
TCGCond c;
@@ -2342,9 +2342,9 @@ static DisasJumpType op_ct(DisasContext *s, DisasOps *o)
static DisasJumpType op_cuXX(DisasContext *s, DisasOps *o)
{
- int m3 = get_field(s->fields, m3);
- int r1 = get_field(s->fields, r1);
- int r2 = get_field(s->fields, r2);
+ int m3 = get_field(s, m3);
+ int r1 = get_field(s, r1);
+ int r2 = get_field(s, r2);
TCGv_i32 tr1, tr2, chk;
/* R1 and R2 must both be even. */
@@ -2393,9 +2393,9 @@ static DisasJumpType op_cuXX(DisasContext *s, DisasOps *o)
#ifndef CONFIG_USER_ONLY
static DisasJumpType op_diag(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));
- TCGv_i32 func_code = tcg_const_i32(get_field(s->fields, i2));
+ TCGv_i32 r1 = tcg_const_i32(get_field(s, r1));
+ TCGv_i32 r3 = tcg_const_i32(get_field(s, r3));
+ TCGv_i32 func_code = tcg_const_i32(get_field(s, i2));
gen_helper_diag(cpu_env, r1, r3, func_code);
@@ -2455,7 +2455,7 @@ static DisasJumpType op_dxb(DisasContext *s, DisasOps *o)
static DisasJumpType op_ear(DisasContext *s, DisasOps *o)
{
- int r2 = get_field(s->fields, r2);
+ int r2 = get_field(s, r2);
tcg_gen_ld32u_i64(o->out, cpu_env, offsetof(CPUS390XState, aregs[r2]));
return DISAS_NEXT;
}
@@ -2475,8 +2475,8 @@ static DisasJumpType op_efpc(DisasContext *s, DisasOps *o)
static DisasJumpType op_epsw(DisasContext *s, DisasOps *o)
{
- int r1 = get_field(s->fields, r1);
- int r2 = get_field(s->fields, r2);
+ int r1 = get_field(s, r1);
+ int r2 = get_field(s, r2);
TCGv_i64 t = tcg_temp_new_i64();
/* Note the "subsequently" in the PoO, which implies a defined result
@@ -2493,7 +2493,7 @@ static DisasJumpType op_epsw(DisasContext *s, DisasOps *o)
static DisasJumpType op_ex(DisasContext *s, DisasOps *o)
{
- int r1 = get_field(s->fields, r1);
+ int r1 = get_field(s, r1);
TCGv_i32 ilen;
TCGv_i64 v1;
@@ -2582,7 +2582,7 @@ static DisasJumpType op_flogr(DisasContext *s, DisasOps *o)
static DisasJumpType op_icm(DisasContext *s, DisasOps *o)
{
- int m3 = get_field(s->fields, m3);
+ int m3 = get_field(s, m3);
int pos, len, base = s->insn->data;
TCGv_i64 tmp = tcg_temp_new_i64();
uint64_t ccm;
@@ -2670,7 +2670,7 @@ static DisasJumpType op_idte(DisasContext *s, DisasOps *o)
TCGv_i32 m4;
if (s390_has_feat(S390_FEAT_LOCAL_TLB_CLEARING)) {
- m4 = tcg_const_i32(get_field(s->fields, m4));
+ m4 = tcg_const_i32(get_field(s, m4));
} else {
m4 = tcg_const_i32(0);
}
@@ -2684,7 +2684,7 @@ static DisasJumpType op_ipte(DisasContext *s, DisasOps *o)
TCGv_i32 m4;
if (s390_has_feat(S390_FEAT_LOCAL_TLB_CLEARING)) {
- m4 = tcg_const_i32(get_field(s->fields, m4));
+ m4 = tcg_const_i32(get_field(s, m4));
} else {
m4 = tcg_const_i32(0);
}
@@ -2702,9 +2702,9 @@ static DisasJumpType op_iske(DisasContext *s, DisasOps *o)
static DisasJumpType op_msa(DisasContext *s, DisasOps *o)
{
- int r1 = have_field(s->fields, r1) ? get_field(s->fields, r1) : 0;
- int r2 = have_field(s->fields, r2) ? get_field(s->fields, r2) : 0;
- int r3 = have_field(s->fields, r3) ? get_field(s->fields, r3) : 0;
+ int r1 = have_field(s, r1) ? get_field(s, r1) : 0;
+ int r2 = have_field(s, r2) ? get_field(s, r2) : 0;
+ int r3 = have_field(s, r3) ? get_field(s, r3) : 0;
TCGv_i32 t_r1, t_r2, t_r3, type;
switch (s->insn->data) {
@@ -2930,7 +2930,7 @@ static DisasJumpType op_ld64(DisasContext *s, DisasOps *o)
static DisasJumpType op_lat(DisasContext *s, DisasOps *o)
{
TCGLabel *lab = gen_new_label();
- store_reg32_i64(get_field(s->fields, r1), o->in2);
+ store_reg32_i64(get_field(s, r1), o->in2);
/* The value is stored even in case of trap. */
tcg_gen_brcondi_i64(TCG_COND_NE, o->in2, 0, lab);
gen_trap(s);
@@ -2952,7 +2952,7 @@ static DisasJumpType op_lgat(DisasContext *s, DisasOps *o)
static DisasJumpType op_lfhat(DisasContext *s, DisasOps *o)
{
TCGLabel *lab = gen_new_label();
- store_reg32h_i64(get_field(s->fields, r1), o->in2);
+ store_reg32h_i64(get_field(s, r1), o->in2);
/* The value is stored even in case of trap. */
tcg_gen_brcondi_i64(TCG_COND_NE, o->in2, 0, lab);
gen_trap(s);
@@ -2986,7 +2986,7 @@ static DisasJumpType op_loc(DisasContext *s, DisasOps *o)
{
DisasCompare c;
- disas_jcc(s, &c, get_field(s->fields, m3));
+ disas_jcc(s, &c, get_field(s, m3));
if (c.is_64) {
tcg_gen_movcond_i64(c.cond, o->out, c.u.s64.a, c.u.s64.b,
@@ -3015,8 +3015,8 @@ static DisasJumpType op_loc(DisasContext *s, DisasOps *o)
#ifndef CONFIG_USER_ONLY
static DisasJumpType op_lctl(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));
+ TCGv_i32 r1 = tcg_const_i32(get_field(s, r1));
+ TCGv_i32 r3 = tcg_const_i32(get_field(s, r3));
gen_helper_lctl(cpu_env, r1, o->in2, r3);
tcg_temp_free_i32(r1);
tcg_temp_free_i32(r3);
@@ -3026,8 +3026,8 @@ static DisasJumpType op_lctl(DisasContext *s, DisasOps *o)
static DisasJumpType op_lctlg(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));
+ TCGv_i32 r1 = tcg_const_i32(get_field(s, r1));
+ TCGv_i32 r3 = tcg_const_i32(get_field(s, r3));
gen_helper_lctlg(cpu_env, r1, o->in2, r3);
tcg_temp_free_i32(r1);
tcg_temp_free_i32(r3);
@@ -3089,8 +3089,8 @@ static DisasJumpType op_lpswe(DisasContext *s, DisasOps *o)
static DisasJumpType 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));
+ TCGv_i32 r1 = tcg_const_i32(get_field(s, r1));
+ TCGv_i32 r3 = tcg_const_i32(get_field(s, r3));
gen_helper_lam(cpu_env, r1, o->in2, r3);
tcg_temp_free_i32(r1);
tcg_temp_free_i32(r3);
@@ -3099,8 +3099,8 @@ static DisasJumpType op_lam(DisasContext *s, DisasOps *o)
static DisasJumpType op_lm32(DisasContext *s, DisasOps *o)
{
- int r1 = get_field(s->fields, r1);
- int r3 = get_field(s->fields, r3);
+ int r1 = get_field(s, r1);
+ int r3 = get_field(s, r3);
TCGv_i64 t1, t2;
/* Only one register to read. */
@@ -3145,8 +3145,8 @@ static DisasJumpType op_lm32(DisasContext *s, DisasOps *o)
static DisasJumpType op_lmh(DisasContext *s, DisasOps *o)
{
- int r1 = get_field(s->fields, r1);
- int r3 = get_field(s->fields, r3);
+ int r1 = get_field(s, r1);
+ int r3 = get_field(s, r3);
TCGv_i64 t1, t2;
/* Only one register to read. */
@@ -3191,8 +3191,8 @@ static DisasJumpType op_lmh(DisasContext *s, DisasOps *o)
static DisasJumpType op_lm64(DisasContext *s, DisasOps *o)
{
- int r1 = get_field(s->fields, r1);
- int r3 = get_field(s->fields, r3);
+ int r1 = get_field(s, r1);
+ int r3 = get_field(s, r3);
TCGv_i64 t1, t2;
/* Only one register to read. */
@@ -3244,8 +3244,8 @@ static DisasJumpType op_lpd(DisasContext *s, DisasOps *o)
}
/* In a serial context, perform the two loads ... */
- a1 = get_address(s, 0, get_field(s->fields, b1), get_field(s->fields, d1));
- a2 = get_address(s, 0, get_field(s->fields, b2), get_field(s->fields, d2));
+ a1 = get_address(s, 0, get_field(s, b1), get_field(s, d1));
+ a2 = get_address(s, 0, get_field(s, b2), get_field(s, d2));
tcg_gen_qemu_ld_i64(o->out, a1, get_mem_index(s), mop | MO_ALIGN);
tcg_gen_qemu_ld_i64(o->out2, a2, get_mem_index(s), mop | MO_ALIGN);
tcg_temp_free_i64(a1);
@@ -3273,7 +3273,7 @@ static DisasJumpType op_lpq(DisasContext *s, DisasOps *o)
#ifndef CONFIG_USER_ONLY
static DisasJumpType op_lura(DisasContext *s, DisasOps *o)
{
- o->addr1 = get_address(s, 0, get_field(s->fields, r2), 0);
+ o->addr1 = get_address(s, 0, get_field(s, r2), 0);
tcg_gen_qemu_ld_tl(o->out, o->addr1, MMU_REAL_IDX, s->insn->data);
return DISAS_NEXT;
}
@@ -3287,9 +3287,9 @@ static DisasJumpType op_lzrb(DisasContext *s, DisasOps *o)
static DisasJumpType op_lcbb(DisasContext *s, DisasOps *o)
{
- const int64_t block_size = (1ull << (get_field(s->fields, m3) + 6));
+ const int64_t block_size = (1ull << (get_field(s, m3) + 6));
- if (get_field(s->fields, m3) > 6) {
+ if (get_field(s, m3) > 6) {
gen_program_exception(s, PGM_SPECIFICATION);
return DISAS_NORETURN;
}
@@ -3313,7 +3313,7 @@ static DisasJumpType op_mov2(DisasContext *s, DisasOps *o)
static DisasJumpType op_mov2e(DisasContext *s, DisasOps *o)
{
- int b2 = get_field(s->fields, b2);
+ int b2 = get_field(s, b2);
TCGv ar1 = tcg_temp_new_i64();
o->out = o->in2;
@@ -3360,7 +3360,7 @@ static DisasJumpType op_movx(DisasContext *s, DisasOps *o)
static DisasJumpType op_mvc(DisasContext *s, DisasOps *o)
{
- TCGv_i32 l = tcg_const_i32(get_field(s->fields, l1));
+ TCGv_i32 l = tcg_const_i32(get_field(s, l1));
gen_helper_mvc(cpu_env, l, o->addr1, o->in2);
tcg_temp_free_i32(l);
return DISAS_NEXT;
@@ -3368,7 +3368,7 @@ static DisasJumpType op_mvc(DisasContext *s, DisasOps *o)
static DisasJumpType op_mvcin(DisasContext *s, DisasOps *o)
{
- TCGv_i32 l = tcg_const_i32(get_field(s->fields, l1));
+ TCGv_i32 l = tcg_const_i32(get_field(s, l1));
gen_helper_mvcin(cpu_env, l, o->addr1, o->in2);
tcg_temp_free_i32(l);
return DISAS_NEXT;
@@ -3376,8 +3376,8 @@ static DisasJumpType op_mvcin(DisasContext *s, DisasOps *o)
static DisasJumpType op_mvcl(DisasContext *s, DisasOps *o)
{
- int r1 = get_field(s->fields, r1);
- int r2 = get_field(s->fields, r2);
+ int r1 = get_field(s, r1);
+ int r2 = get_field(s, r2);
TCGv_i32 t1, t2;
/* r1 and r2 must be even. */
@@ -3397,8 +3397,8 @@ static DisasJumpType op_mvcl(DisasContext *s, DisasOps *o)
static DisasJumpType op_mvcle(DisasContext *s, DisasOps *o)
{
- int r1 = get_field(s->fields, r1);
- int r3 = get_field(s->fields, r3);
+ int r1 = get_field(s, r1);
+ int r3 = get_field(s, r3);
TCGv_i32 t1, t3;
/* r1 and r3 must be even. */
@@ -3418,8 +3418,8 @@ static DisasJumpType op_mvcle(DisasContext *s, DisasOps *o)
static DisasJumpType op_mvclu(DisasContext *s, DisasOps *o)
{
- int r1 = get_field(s->fields, r1);
- int r3 = get_field(s->fields, r3);
+ int r1 = get_field(s, r1);
+ int r3 = get_field(s, r3);
TCGv_i32 t1, t3;
/* r1 and r3 must be even. */
@@ -3439,7 +3439,7 @@ static DisasJumpType op_mvclu(DisasContext *s, DisasOps *o)
static DisasJumpType op_mvcos(DisasContext *s, DisasOps *o)
{
- int r3 = get_field(s->fields, r3);
+ int r3 = get_field(s, r3);
gen_helper_mvcos(cc_op, cpu_env, o->addr1, o->in2, regs[r3]);
set_cc_static(s);
return DISAS_NEXT;
@@ -3448,7 +3448,7 @@ static DisasJumpType op_mvcos(DisasContext *s, DisasOps *o)
#ifndef CONFIG_USER_ONLY
static DisasJumpType op_mvcp(DisasContext *s, DisasOps *o)
{
- int r1 = get_field(s->fields, l1);
+ int r1 = get_field(s, l1);
gen_helper_mvcp(cc_op, cpu_env, regs[r1], o->addr1, o->in2);
set_cc_static(s);
return DISAS_NEXT;
@@ -3456,7 +3456,7 @@ static DisasJumpType op_mvcp(DisasContext *s, DisasOps *o)
static DisasJumpType op_mvcs(DisasContext *s, DisasOps *o)
{
- int r1 = get_field(s->fields, l1);
+ int r1 = get_field(s, l1);
gen_helper_mvcs(cc_op, cpu_env, regs[r1], o->addr1, o->in2);
set_cc_static(s);
return DISAS_NEXT;
@@ -3465,7 +3465,7 @@ static DisasJumpType op_mvcs(DisasContext *s, DisasOps *o)
static DisasJumpType op_mvn(DisasContext *s, DisasOps *o)
{
- TCGv_i32 l = tcg_const_i32(get_field(s->fields, l1));
+ TCGv_i32 l = tcg_const_i32(get_field(s, l1));
gen_helper_mvn(cpu_env, l, o->addr1, o->in2);
tcg_temp_free_i32(l);
return DISAS_NEXT;
@@ -3473,7 +3473,7 @@ static DisasJumpType op_mvn(DisasContext *s, DisasOps *o)
static DisasJumpType op_mvo(DisasContext *s, DisasOps *o)
{
- TCGv_i32 l = tcg_const_i32(get_field(s->fields, l1));
+ TCGv_i32 l = tcg_const_i32(get_field(s, l1));
gen_helper_mvo(cpu_env, l, o->addr1, o->in2);
tcg_temp_free_i32(l);
return DISAS_NEXT;
@@ -3488,8 +3488,8 @@ static DisasJumpType op_mvpg(DisasContext *s, DisasOps *o)
static DisasJumpType op_mvst(DisasContext *s, DisasOps *o)
{
- TCGv_i32 t1 = tcg_const_i32(get_field(s->fields, r1));
- TCGv_i32 t2 = tcg_const_i32(get_field(s->fields, r2));
+ TCGv_i32 t1 = tcg_const_i32(get_field(s, r1));
+ TCGv_i32 t2 = tcg_const_i32(get_field(s, r2));
gen_helper_mvst(cc_op, cpu_env, t1, t2);
tcg_temp_free_i32(t1);
@@ -3500,7 +3500,7 @@ static DisasJumpType op_mvst(DisasContext *s, DisasOps *o)
static DisasJumpType op_mvz(DisasContext *s, DisasOps *o)
{
- TCGv_i32 l = tcg_const_i32(get_field(s->fields, l1));
+ TCGv_i32 l = tcg_const_i32(get_field(s, l1));
gen_helper_mvz(cpu_env, l, o->addr1, o->in2);
tcg_temp_free_i32(l);
return DISAS_NEXT;
@@ -3552,7 +3552,7 @@ static DisasJumpType op_mxdb(DisasContext *s, DisasOps *o)
static DisasJumpType op_maeb(DisasContext *s, DisasOps *o)
{
- TCGv_i64 r3 = load_freg32_i64(get_field(s->fields, r3));
+ TCGv_i64 r3 = load_freg32_i64(get_field(s, r3));
gen_helper_maeb(o->out, cpu_env, o->in1, o->in2, r3);
tcg_temp_free_i64(r3);
return DISAS_NEXT;
@@ -3560,7 +3560,7 @@ static DisasJumpType op_maeb(DisasContext *s, DisasOps *o)
static DisasJumpType op_madb(DisasContext *s, DisasOps *o)
{
- TCGv_i64 r3 = load_freg(get_field(s->fields, r3));
+ TCGv_i64 r3 = load_freg(get_field(s, r3));
gen_helper_madb(o->out, cpu_env, o->in1, o->in2, r3);
tcg_temp_free_i64(r3);
return DISAS_NEXT;
@@ -3568,7 +3568,7 @@ static DisasJumpType op_madb(DisasContext *s, DisasOps *o)
static DisasJumpType op_mseb(DisasContext *s, DisasOps *o)
{
- TCGv_i64 r3 = load_freg32_i64(get_field(s->fields, r3));
+ TCGv_i64 r3 = load_freg32_i64(get_field(s, r3));
gen_helper_mseb(o->out, cpu_env, o->in1, o->in2, r3);
tcg_temp_free_i64(r3);
return DISAS_NEXT;
@@ -3576,7 +3576,7 @@ static DisasJumpType op_mseb(DisasContext *s, DisasOps *o)
static DisasJumpType op_msdb(DisasContext *s, DisasOps *o)
{
- TCGv_i64 r3 = load_freg(get_field(s->fields, r3));
+ TCGv_i64 r3 = load_freg(get_field(s, r3));
gen_helper_msdb(o->out, cpu_env, o->in1, o->in2, r3);
tcg_temp_free_i64(r3);
return DISAS_NEXT;
@@ -3615,7 +3615,7 @@ static DisasJumpType op_nabsf128(DisasContext *s, DisasOps *o)
static DisasJumpType op_nc(DisasContext *s, DisasOps *o)
{
- TCGv_i32 l = tcg_const_i32(get_field(s->fields, l1));
+ TCGv_i32 l = tcg_const_i32(get_field(s, l1));
gen_helper_nc(cc_op, cpu_env, l, o->addr1, o->in2);
tcg_temp_free_i32(l);
set_cc_static(s);
@@ -3649,7 +3649,7 @@ static DisasJumpType op_negf128(DisasContext *s, DisasOps *o)
static DisasJumpType op_oc(DisasContext *s, DisasOps *o)
{
- TCGv_i32 l = tcg_const_i32(get_field(s->fields, l1));
+ TCGv_i32 l = tcg_const_i32(get_field(s, l1));
gen_helper_oc(cc_op, cpu_env, l, o->addr1, o->in2);
tcg_temp_free_i32(l);
set_cc_static(s);
@@ -3701,7 +3701,7 @@ static DisasJumpType op_oi(DisasContext *s, DisasOps *o)
static DisasJumpType op_pack(DisasContext *s, DisasOps *o)
{
- TCGv_i32 l = tcg_const_i32(get_field(s->fields, l1));
+ TCGv_i32 l = tcg_const_i32(get_field(s, l1));
gen_helper_pack(cpu_env, l, o->addr1, o->in2);
tcg_temp_free_i32(l);
return DISAS_NEXT;
@@ -3709,7 +3709,7 @@ static DisasJumpType op_pack(DisasContext *s, DisasOps *o)
static DisasJumpType op_pka(DisasContext *s, DisasOps *o)
{
- int l2 = get_field(s->fields, l2) + 1;
+ int l2 = get_field(s, l2) + 1;
TCGv_i32 l;
/* The length must not exceed 32 bytes. */
@@ -3725,7 +3725,7 @@ static DisasJumpType op_pka(DisasContext *s, DisasOps *o)
static DisasJumpType op_pku(DisasContext *s, DisasOps *o)
{
- int l2 = get_field(s->fields, l2) + 1;
+ int l2 = get_field(s, l2) + 1;
TCGv_i32 l;
/* The length must be even and should not exceed 64 bytes. */
@@ -3755,9 +3755,9 @@ static DisasJumpType op_ptlb(DisasContext *s, DisasOps *o)
static DisasJumpType op_risbg(DisasContext *s, DisasOps *o)
{
- int i3 = get_field(s->fields, i3);
- int i4 = get_field(s->fields, i4);
- int i5 = get_field(s->fields, i5);
+ int i3 = get_field(s, i3);
+ int i4 = get_field(s, i4);
+ int i5 = get_field(s, i5);
int do_zero = i4 & 0x80;
uint64_t mask, imask, pmask;
int pos, len, rot;
@@ -3845,9 +3845,9 @@ static DisasJumpType op_risbg(DisasContext *s, DisasOps *o)
static DisasJumpType op_rosbg(DisasContext *s, DisasOps *o)
{
- int i3 = get_field(s->fields, i3);
- int i4 = get_field(s->fields, i4);
- int i5 = get_field(s->fields, i5);
+ int i3 = get_field(s, i3);
+ int i4 = get_field(s, i4);
+ int i5 = get_field(s, i5);
uint64_t mask;
/* If this is a test-only form, arrange to discard the result. */
@@ -3988,7 +3988,7 @@ static DisasJumpType op_sam(DisasContext *s, DisasOps *o)
static DisasJumpType op_sar(DisasContext *s, DisasOps *o)
{
- int r1 = get_field(s->fields, r1);
+ int r1 = get_field(s, r1);
tcg_gen_st32_i64(o->in2, cpu_env, offsetof(CPUS390XState, aregs[r1]));
return DISAS_NEXT;
}
@@ -4041,8 +4041,8 @@ static DisasJumpType op_servc(DisasContext *s, DisasOps *o)
static DisasJumpType op_sigp(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));
+ TCGv_i32 r1 = tcg_const_i32(get_field(s, r1));
+ TCGv_i32 r3 = tcg_const_i32(get_field(s, r3));
gen_helper_sigp(cc_op, cpu_env, o->in2, r1, r3);
set_cc_static(s);
tcg_temp_free_i32(r1);
@@ -4058,7 +4058,7 @@ static DisasJumpType op_soc(DisasContext *s, DisasOps *o)
TCGLabel *lab;
int r1;
- disas_jcc(s, &c, get_field(s->fields, m3));
+ disas_jcc(s, &c, get_field(s, m3));
/* We want to store when the condition is fulfilled, so branch
out when it's not */
@@ -4072,8 +4072,8 @@ static DisasJumpType op_soc(DisasContext *s, DisasOps *o)
}
free_compare(&c);
- r1 = get_field(s->fields, r1);
- a = get_address(s, 0, get_field(s->fields, b2), get_field(s->fields, d2));
+ r1 = get_field(s, r1);
+ a = get_address(s, 0, get_field(s, b2), get_field(s, d2));
switch (s->insn->data) {
case 1: /* STOCG */
tcg_gen_qemu_st64(regs[r1], a, get_mem_index(s));
@@ -4185,11 +4185,11 @@ static DisasJumpType op_spm(DisasContext *s, DisasOps *o)
static DisasJumpType op_ectg(DisasContext *s, DisasOps *o)
{
- int b1 = get_field(s->fields, b1);
- int d1 = get_field(s->fields, d1);
- int b2 = get_field(s->fields, b2);
- int d2 = get_field(s->fields, d2);
- int r3 = get_field(s->fields, r3);
+ int b1 = get_field(s, b1);
+ int d1 = get_field(s, d1);
+ int b2 = get_field(s, b2);
+ int d2 = get_field(s, d2);
+ int r3 = get_field(s, r3);
TCGv_i64 tmp = tcg_temp_new_i64();
/* fetch all operands first */
@@ -4305,8 +4305,8 @@ static DisasJumpType op_stckc(DisasContext *s, DisasOps *o)
static DisasJumpType op_stctg(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));
+ TCGv_i32 r1 = tcg_const_i32(get_field(s, r1));
+ TCGv_i32 r3 = tcg_const_i32(get_field(s, r3));
gen_helper_stctg(cpu_env, r1, o->in2, r3);
tcg_temp_free_i32(r1);
tcg_temp_free_i32(r3);
@@ -4315,8 +4315,8 @@ static DisasJumpType op_stctg(DisasContext *s, DisasOps *o)
static DisasJumpType op_stctl(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));
+ TCGv_i32 r1 = tcg_const_i32(get_field(s, r1));
+ TCGv_i32 r3 = tcg_const_i32(get_field(s, r3));
gen_helper_stctl(cpu_env, r1, o->in2, r3);
tcg_temp_free_i32(r1);
tcg_temp_free_i32(r3);
@@ -4478,7 +4478,7 @@ static DisasJumpType op_stpx(DisasContext *s, DisasOps *o)
static DisasJumpType op_stnosm(DisasContext *s, DisasOps *o)
{
- uint64_t i2 = get_field(s->fields, i2);
+ uint64_t i2 = get_field(s, i2);
TCGv_i64 t;
/* It is important to do what the instruction name says: STORE THEN.
@@ -4502,7 +4502,7 @@ static DisasJumpType op_stnosm(DisasContext *s, DisasOps *o)
static DisasJumpType op_stura(DisasContext *s, DisasOps *o)
{
- o->addr1 = get_address(s, 0, get_field(s->fields, r2), 0);
+ o->addr1 = get_address(s, 0, get_field(s, r2), 0);
tcg_gen_qemu_st_tl(o->in1, o->addr1, MMU_REAL_IDX, s->insn->data);
if (s->base.tb->flags & FLAG_MASK_PER) {
@@ -4546,8 +4546,8 @@ static DisasJumpType op_st64(DisasContext *s, DisasOps *o)
static DisasJumpType 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));
+ TCGv_i32 r1 = tcg_const_i32(get_field(s, r1));
+ TCGv_i32 r3 = tcg_const_i32(get_field(s, r3));
gen_helper_stam(cpu_env, r1, o->in2, r3);
tcg_temp_free_i32(r1);
tcg_temp_free_i32(r3);
@@ -4556,7 +4556,7 @@ static DisasJumpType op_stam(DisasContext *s, DisasOps *o)
static DisasJumpType op_stcm(DisasContext *s, DisasOps *o)
{
- int m3 = get_field(s->fields, m3);
+ int m3 = get_field(s, m3);
int pos, base = s->insn->data;
TCGv_i64 tmp = tcg_temp_new_i64();
@@ -4605,8 +4605,8 @@ static DisasJumpType op_stcm(DisasContext *s, DisasOps *o)
static DisasJumpType op_stm(DisasContext *s, DisasOps *o)
{
- int r1 = get_field(s->fields, r1);
- int r3 = get_field(s->fields, r3);
+ int r1 = get_field(s, r1);
+ int r3 = get_field(s, r3);
int size = s->insn->data;
TCGv_i64 tsize = tcg_const_i64(size);
@@ -4629,8 +4629,8 @@ static DisasJumpType op_stm(DisasContext *s, DisasOps *o)
static DisasJumpType op_stmh(DisasContext *s, DisasOps *o)
{
- int r1 = get_field(s->fields, r1);
- int r3 = get_field(s->fields, r3);
+ int r1 = get_field(s, r1);
+ int r3 = get_field(s, r3);
TCGv_i64 t = tcg_temp_new_i64();
TCGv_i64 t4 = tcg_const_i64(4);
TCGv_i64 t32 = tcg_const_i64(32);
@@ -4666,8 +4666,8 @@ static DisasJumpType op_stpq(DisasContext *s, DisasOps *o)
static DisasJumpType op_srst(DisasContext *s, DisasOps *o)
{
- TCGv_i32 r1 = tcg_const_i32(get_field(s->fields, r1));
- TCGv_i32 r2 = tcg_const_i32(get_field(s->fields, r2));
+ TCGv_i32 r1 = tcg_const_i32(get_field(s, r1));
+ TCGv_i32 r2 = tcg_const_i32(get_field(s, r2));
gen_helper_srst(cpu_env, r1, r2);
@@ -4679,8 +4679,8 @@ static DisasJumpType op_srst(DisasContext *s, DisasOps *o)
static DisasJumpType op_srstu(DisasContext *s, DisasOps *o)
{
- TCGv_i32 r1 = tcg_const_i32(get_field(s->fields, r1));
- TCGv_i32 r2 = tcg_const_i32(get_field(s->fields, r2));
+ TCGv_i32 r1 = tcg_const_i32(get_field(s, r1));
+ TCGv_i32 r2 = tcg_const_i32(get_field(s, r2));
gen_helper_srstu(cpu_env, r1, r2);
@@ -4729,7 +4729,7 @@ static DisasJumpType op_svc(DisasContext *s, DisasOps *o)
update_psw_addr(s);
update_cc_op(s);
- t = tcg_const_i32(get_field(s->fields, i1) & 0xff);
+ t = tcg_const_i32(get_field(s, i1) & 0xff);
tcg_gen_st_i32(t, cpu_env, offsetof(CPUS390XState, int_svc_code));
tcg_temp_free_i32(t);
@@ -4792,7 +4792,7 @@ static DisasJumpType op_tprot(DisasContext *s, DisasOps *o)
static DisasJumpType op_tp(DisasContext *s, DisasOps *o)
{
- TCGv_i32 l1 = tcg_const_i32(get_field(s->fields, l1) + 1);
+ TCGv_i32 l1 = tcg_const_i32(get_field(s, l1) + 1);
gen_helper_tp(cc_op, cpu_env, o->addr1, l1);
tcg_temp_free_i32(l1);
set_cc_static(s);
@@ -4801,7 +4801,7 @@ static DisasJumpType op_tp(DisasContext *s, DisasOps *o)
static DisasJumpType op_tr(DisasContext *s, DisasOps *o)
{
- TCGv_i32 l = tcg_const_i32(get_field(s->fields, l1));
+ TCGv_i32 l = tcg_const_i32(get_field(s, l1));
gen_helper_tr(cpu_env, l, o->addr1, o->in2);
tcg_temp_free_i32(l);
set_cc_static(s);
@@ -4818,7 +4818,7 @@ static DisasJumpType op_tre(DisasContext *s, DisasOps *o)
static DisasJumpType op_trt(DisasContext *s, DisasOps *o)
{
- TCGv_i32 l = tcg_const_i32(get_field(s->fields, l1));
+ TCGv_i32 l = tcg_const_i32(get_field(s, l1));
gen_helper_trt(cc_op, cpu_env, l, o->addr1, o->in2);
tcg_temp_free_i32(l);
set_cc_static(s);
@@ -4827,7 +4827,7 @@ static DisasJumpType op_trt(DisasContext *s, DisasOps *o)
static DisasJumpType op_trtr(DisasContext *s, DisasOps *o)
{
- TCGv_i32 l = tcg_const_i32(get_field(s->fields, l1));
+ TCGv_i32 l = tcg_const_i32(get_field(s, l1));
gen_helper_trtr(cc_op, cpu_env, l, o->addr1, o->in2);
tcg_temp_free_i32(l);
set_cc_static(s);
@@ -4836,11 +4836,11 @@ static DisasJumpType op_trtr(DisasContext *s, DisasOps *o)
static DisasJumpType op_trXX(DisasContext *s, DisasOps *o)
{
- TCGv_i32 r1 = tcg_const_i32(get_field(s->fields, r1));
- TCGv_i32 r2 = tcg_const_i32(get_field(s->fields, r2));
+ TCGv_i32 r1 = tcg_const_i32(get_field(s, r1));
+ TCGv_i32 r2 = tcg_const_i32(get_field(s, r2));
TCGv_i32 sizes = tcg_const_i32(s->insn->opc & 3);
TCGv_i32 tst = tcg_temp_new_i32();
- int m3 = get_field(s->fields, m3);
+ int m3 = get_field(s, m3);
if (!s390_has_feat(S390_FEAT_ETF2_ENH)) {
m3 = 0;
@@ -4877,7 +4877,7 @@ static DisasJumpType op_ts(DisasContext *s, DisasOps *o)
static DisasJumpType op_unpk(DisasContext *s, DisasOps *o)
{
- TCGv_i32 l = tcg_const_i32(get_field(s->fields, l1));
+ TCGv_i32 l = tcg_const_i32(get_field(s, l1));
gen_helper_unpk(cpu_env, l, o->addr1, o->in2);
tcg_temp_free_i32(l);
return DISAS_NEXT;
@@ -4885,7 +4885,7 @@ static DisasJumpType op_unpk(DisasContext *s, DisasOps *o)
static DisasJumpType op_unpka(DisasContext *s, DisasOps *o)
{
- int l1 = get_field(s->fields, l1) + 1;
+ int l1 = get_field(s, l1) + 1;
TCGv_i32 l;
/* The length must not exceed 32 bytes. */
@@ -4902,7 +4902,7 @@ static DisasJumpType op_unpka(DisasContext *s, DisasOps *o)
static DisasJumpType op_unpku(DisasContext *s, DisasOps *o)
{
- int l1 = get_field(s->fields, l1) + 1;
+ int l1 = get_field(s, l1) + 1;
TCGv_i32 l;
/* The length must be even and should not exceed 64 bytes. */
@@ -4920,11 +4920,11 @@ static DisasJumpType op_unpku(DisasContext *s, DisasOps *o)
static DisasJumpType op_xc(DisasContext *s, DisasOps *o)
{
- int d1 = get_field(s->fields, d1);
- int d2 = get_field(s->fields, d2);
- int b1 = get_field(s->fields, b1);
- int b2 = get_field(s->fields, b2);
- int l = get_field(s->fields, l1);
+ int d1 = get_field(s, d1);
+ int d2 = get_field(s, d2);
+ int b1 = get_field(s, b1);
+ int b2 = get_field(s, b2);
+ int l = get_field(s, l1);
TCGv_i32 t32;
o->addr1 = get_address(s, 0, b1, d1);
@@ -5031,7 +5031,7 @@ static DisasJumpType op_zero2(DisasContext *s, DisasOps *o)
#ifndef CONFIG_USER_ONLY
static DisasJumpType op_clp(DisasContext *s, DisasOps *o)
{
- TCGv_i32 r2 = tcg_const_i32(get_field(s->fields, r2));
+ TCGv_i32 r2 = tcg_const_i32(get_field(s, r2));
gen_helper_clp(cpu_env, r2);
tcg_temp_free_i32(r2);
@@ -5041,8 +5041,8 @@ static DisasJumpType op_clp(DisasContext *s, DisasOps *o)
static DisasJumpType op_pcilg(DisasContext *s, DisasOps *o)
{
- TCGv_i32 r1 = tcg_const_i32(get_field(s->fields, r1));
- TCGv_i32 r2 = tcg_const_i32(get_field(s->fields, r2));
+ TCGv_i32 r1 = tcg_const_i32(get_field(s, r1));
+ TCGv_i32 r2 = tcg_const_i32(get_field(s, r2));
gen_helper_pcilg(cpu_env, r1, r2);
tcg_temp_free_i32(r1);
@@ -5053,8 +5053,8 @@ static DisasJumpType op_pcilg(DisasContext *s, DisasOps *o)
static DisasJumpType op_pcistg(DisasContext *s, DisasOps *o)
{
- TCGv_i32 r1 = tcg_const_i32(get_field(s->fields, r1));
- TCGv_i32 r2 = tcg_const_i32(get_field(s->fields, r2));
+ TCGv_i32 r1 = tcg_const_i32(get_field(s, r1));
+ TCGv_i32 r2 = tcg_const_i32(get_field(s, r2));
gen_helper_pcistg(cpu_env, r1, r2);
tcg_temp_free_i32(r1);
@@ -5065,8 +5065,8 @@ static DisasJumpType op_pcistg(DisasContext *s, DisasOps *o)
static DisasJumpType op_stpcifc(DisasContext *s, DisasOps *o)
{
- TCGv_i32 r1 = tcg_const_i32(get_field(s->fields, r1));
- TCGv_i32 ar = tcg_const_i32(get_field(s->fields, b2));
+ TCGv_i32 r1 = tcg_const_i32(get_field(s, r1));
+ TCGv_i32 ar = tcg_const_i32(get_field(s, b2));
gen_helper_stpcifc(cpu_env, r1, o->addr1, ar);
tcg_temp_free_i32(ar);
@@ -5083,8 +5083,8 @@ static DisasJumpType op_sic(DisasContext *s, DisasOps *o)
static DisasJumpType op_rpcit(DisasContext *s, DisasOps *o)
{
- TCGv_i32 r1 = tcg_const_i32(get_field(s->fields, r1));
- TCGv_i32 r2 = tcg_const_i32(get_field(s->fields, r2));
+ TCGv_i32 r1 = tcg_const_i32(get_field(s, r1));
+ TCGv_i32 r2 = tcg_const_i32(get_field(s, r2));
gen_helper_rpcit(cpu_env, r1, r2);
tcg_temp_free_i32(r1);
@@ -5095,9 +5095,9 @@ static DisasJumpType op_rpcit(DisasContext *s, DisasOps *o)
static DisasJumpType op_pcistb(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));
- TCGv_i32 ar = tcg_const_i32(get_field(s->fields, b2));
+ TCGv_i32 r1 = tcg_const_i32(get_field(s, r1));
+ TCGv_i32 r3 = tcg_const_i32(get_field(s, r3));
+ TCGv_i32 ar = tcg_const_i32(get_field(s, b2));
gen_helper_pcistb(cpu_env, r1, r3, o->addr1, ar);
tcg_temp_free_i32(ar);
@@ -5109,8 +5109,8 @@ static DisasJumpType op_pcistb(DisasContext *s, DisasOps *o)
static DisasJumpType op_mpcifc(DisasContext *s, DisasOps *o)
{
- TCGv_i32 r1 = tcg_const_i32(get_field(s->fields, r1));
- TCGv_i32 ar = tcg_const_i32(get_field(s->fields, b2));
+ TCGv_i32 r1 = tcg_const_i32(get_field(s, r1));
+ TCGv_i32 ar = tcg_const_i32(get_field(s, b2));
gen_helper_mpcifc(cpu_env, r1, o->addr1, ar);
tcg_temp_free_i32(ar);
@@ -5304,14 +5304,14 @@ static void prep_new_P(DisasContext *s, DisasOps *o)
static void prep_r1(DisasContext *s, DisasOps *o)
{
- o->out = regs[get_field(s->fields, r1)];
+ o->out = regs[get_field(s, r1)];
o->g_out = true;
}
#define SPEC_prep_r1 0
static void prep_r1_P(DisasContext *s, DisasOps *o)
{
- int r1 = get_field(s->fields, r1);
+ int r1 = get_field(s, r1);
o->out = regs[r1];
o->out2 = regs[r1 + 1];
o->g_out = o->g_out2 = true;
@@ -5321,8 +5321,8 @@ static void prep_r1_P(DisasContext *s, DisasOps *o)
/* Whenever we need x1 in addition to other inputs, we'll load it to out/out2 */
static void prep_x1(DisasContext *s, DisasOps *o)
{
- o->out = load_freg(get_field(s->fields, r1));
- o->out2 = load_freg(get_field(s->fields, r1) + 2);
+ o->out = load_freg(get_field(s, r1));
+ o->out2 = load_freg(get_field(s, r1) + 2);
}
#define SPEC_prep_x1 SPEC_r1_f128
@@ -5334,39 +5334,39 @@ static void prep_x1(DisasContext *s, DisasOps *o)
static void wout_r1(DisasContext *s, DisasOps *o)
{
- store_reg(get_field(s->fields, r1), o->out);
+ store_reg(get_field(s, r1), o->out);
}
#define SPEC_wout_r1 0
static void wout_r1_8(DisasContext *s, DisasOps *o)
{
- int r1 = get_field(s->fields, r1);
+ int r1 = get_field(s, r1);
tcg_gen_deposit_i64(regs[r1], regs[r1], o->out, 0, 8);
}
#define SPEC_wout_r1_8 0
static void wout_r1_16(DisasContext *s, DisasOps *o)
{
- int r1 = get_field(s->fields, r1);
+ int r1 = get_field(s, r1);
tcg_gen_deposit_i64(regs[r1], regs[r1], o->out, 0, 16);
}
#define SPEC_wout_r1_16 0
static void wout_r1_32(DisasContext *s, DisasOps *o)
{
- store_reg32_i64(get_field(s->fields, r1), o->out);
+ store_reg32_i64(get_field(s, r1), o->out);
}
#define SPEC_wout_r1_32 0
static void wout_r1_32h(DisasContext *s, DisasOps *o)
{
- store_reg32h_i64(get_field(s->fields, r1), o->out);
+ store_reg32h_i64(get_field(s, r1), o->out);
}
#define SPEC_wout_r1_32h 0
static void wout_r1_P32(DisasContext *s, DisasOps *o)
{
- int r1 = get_field(s->fields, r1);
+ int r1 = get_field(s, r1);
store_reg32_i64(r1, o->out);
store_reg32_i64(r1 + 1, o->out2);
}
@@ -5374,7 +5374,7 @@ static void wout_r1_P32(DisasContext *s, DisasOps *o)
static void wout_r1_D32(DisasContext *s, DisasOps *o)
{
- int r1 = get_field(s->fields, r1);
+ int r1 = get_field(s, r1);
store_reg32_i64(r1 + 1, o->out);
tcg_gen_shri_i64(o->out, o->out, 32);
store_reg32_i64(r1, o->out);
@@ -5383,7 +5383,7 @@ static void wout_r1_D32(DisasContext *s, DisasOps *o)
static void wout_r3_P32(DisasContext *s, DisasOps *o)
{
- int r3 = get_field(s->fields, r3);
+ int r3 = get_field(s, r3);
store_reg32_i64(r3, o->out);
store_reg32_i64(r3 + 1, o->out2);
}
@@ -5391,7 +5391,7 @@ static void wout_r3_P32(DisasContext *s, DisasOps *o)
static void wout_r3_P64(DisasContext *s, DisasOps *o)
{
- int r3 = get_field(s->fields, r3);
+ int r3 = get_field(s, r3);
store_reg(r3, o->out);
store_reg(r3 + 1, o->out2);
}
@@ -5399,19 +5399,19 @@ static void wout_r3_P64(DisasContext *s, DisasOps *o)
static void wout_e1(DisasContext *s, DisasOps *o)
{
- store_freg32_i64(get_field(s->fields, r1), o->out);
+ store_freg32_i64(get_field(s, r1), o->out);
}
#define SPEC_wout_e1 0
static void wout_f1(DisasContext *s, DisasOps *o)
{
- store_freg(get_field(s->fields, r1), o->out);
+ store_freg(get_field(s, r1), o->out);
}
#define SPEC_wout_f1 0
static void wout_x1(DisasContext *s, DisasOps *o)
{
- int f1 = get_field(s->fields, r1);
+ int f1 = get_field(s, r1);
store_freg(f1, o->out);
store_freg(f1 + 2, o->out2);
}
@@ -5419,16 +5419,16 @@ static void wout_x1(DisasContext *s, DisasOps *o)
static void wout_cond_r1r2_32(DisasContext *s, DisasOps *o)
{
- if (get_field(s->fields, r1) != get_field(s->fields, r2)) {
- store_reg32_i64(get_field(s->fields, r1), o->out);
+ if (get_field(s, r1) != get_field(s, r2)) {
+ store_reg32_i64(get_field(s, r1), o->out);
}
}
#define SPEC_wout_cond_r1r2_32 0
static void wout_cond_e1e2(DisasContext *s, DisasOps *o)
{
- if (get_field(s->fields, r1) != get_field(s->fields, r2)) {
- store_freg32_i64(get_field(s->fields, r1), o->out);
+ if (get_field(s, r1) != get_field(s, r2)) {
+ store_freg32_i64(get_field(s, r1), o->out);
}
}
#define SPEC_wout_cond_e1e2 0
@@ -5489,13 +5489,13 @@ static void wout_m2_32(DisasContext *s, DisasOps *o)
static void wout_in2_r1(DisasContext *s, DisasOps *o)
{
- store_reg(get_field(s->fields, r1), o->in2);
+ store_reg(get_field(s, r1), o->in2);
}
#define SPEC_wout_in2_r1 0
static void wout_in2_r1_32(DisasContext *s, DisasOps *o)
{
- store_reg32_i64(get_field(s->fields, r1), o->in2);
+ store_reg32_i64(get_field(s, r1), o->in2);
}
#define SPEC_wout_in2_r1_32 0
@@ -5504,13 +5504,13 @@ static void wout_in2_r1_32(DisasContext *s, DisasOps *o)
static void in1_r1(DisasContext *s, DisasOps *o)
{
- o->in1 = load_reg(get_field(s->fields, r1));
+ o->in1 = load_reg(get_field(s, r1));
}
#define SPEC_in1_r1 0
static void in1_r1_o(DisasContext *s, DisasOps *o)
{
- o->in1 = regs[get_field(s->fields, r1)];
+ o->in1 = regs[get_field(s, r1)];
o->g_in1 = true;
}
#define SPEC_in1_r1_o 0
@@ -5518,47 +5518,47 @@ static void in1_r1_o(DisasContext *s, DisasOps *o)
static void in1_r1_32s(DisasContext *s, DisasOps *o)
{
o->in1 = tcg_temp_new_i64();
- tcg_gen_ext32s_i64(o->in1, regs[get_field(s->fields, r1)]);
+ tcg_gen_ext32s_i64(o->in1, regs[get_field(s, r1)]);
}
#define SPEC_in1_r1_32s 0
static void in1_r1_32u(DisasContext *s, DisasOps *o)
{
o->in1 = tcg_temp_new_i64();
- tcg_gen_ext32u_i64(o->in1, regs[get_field(s->fields, r1)]);
+ tcg_gen_ext32u_i64(o->in1, regs[get_field(s, r1)]);
}
#define SPEC_in1_r1_32u 0
static void in1_r1_sr32(DisasContext *s, DisasOps *o)
{
o->in1 = tcg_temp_new_i64();
- tcg_gen_shri_i64(o->in1, regs[get_field(s->fields, r1)], 32);
+ tcg_gen_shri_i64(o->in1, regs[get_field(s, r1)], 32);
}
#define SPEC_in1_r1_sr32 0
static void in1_r1p1(DisasContext *s, DisasOps *o)
{
- o->in1 = load_reg(get_field(s->fields, r1) + 1);
+ o->in1 = load_reg(get_field(s, r1) + 1);
}
#define SPEC_in1_r1p1 SPEC_r1_even
static void in1_r1p1_32s(DisasContext *s, DisasOps *o)
{
o->in1 = tcg_temp_new_i64();
- tcg_gen_ext32s_i64(o->in1, regs[get_field(s->fields, r1) + 1]);
+ tcg_gen_ext32s_i64(o->in1, regs[get_field(s, r1) + 1]);
}
#define SPEC_in1_r1p1_32s SPEC_r1_even
static void in1_r1p1_32u(DisasContext *s, DisasOps *o)
{
o->in1 = tcg_temp_new_i64();
- tcg_gen_ext32u_i64(o->in1, regs[get_field(s->fields, r1) + 1]);
+ tcg_gen_ext32u_i64(o->in1, regs[get_field(s, r1) + 1]);
}
#define SPEC_in1_r1p1_32u SPEC_r1_even
static void in1_r1_D32(DisasContext *s, DisasOps *o)
{
- int r1 = get_field(s->fields, r1);
+ int r1 = get_field(s, r1);
o->in1 = tcg_temp_new_i64();
tcg_gen_concat32_i64(o->in1, regs[r1 + 1], regs[r1]);
}
@@ -5566,26 +5566,26 @@ static void in1_r1_D32(DisasContext *s, DisasOps *o)
static void in1_r2(DisasContext *s, DisasOps *o)
{
- o->in1 = load_reg(get_field(s->fields, r2));
+ o->in1 = load_reg(get_field(s, r2));
}
#define SPEC_in1_r2 0
static void in1_r2_sr32(DisasContext *s, DisasOps *o)
{
o->in1 = tcg_temp_new_i64();
- tcg_gen_shri_i64(o->in1, regs[get_field(s->fields, r2)], 32);
+ tcg_gen_shri_i64(o->in1, regs[get_field(s, r2)], 32);
}
#define SPEC_in1_r2_sr32 0
static void in1_r3(DisasContext *s, DisasOps *o)
{
- o->in1 = load_reg(get_field(s->fields, r3));
+ o->in1 = load_reg(get_field(s, r3));
}
#define SPEC_in1_r3 0
static void in1_r3_o(DisasContext *s, DisasOps *o)
{
- o->in1 = regs[get_field(s->fields, r3)];
+ o->in1 = regs[get_field(s, r3)];
o->g_in1 = true;
}
#define SPEC_in1_r3_o 0
@@ -5593,20 +5593,20 @@ static void in1_r3_o(DisasContext *s, DisasOps *o)
static void in1_r3_32s(DisasContext *s, DisasOps *o)
{
o->in1 = tcg_temp_new_i64();
- tcg_gen_ext32s_i64(o->in1, regs[get_field(s->fields, r3)]);
+ tcg_gen_ext32s_i64(o->in1, regs[get_field(s, r3)]);
}
#define SPEC_in1_r3_32s 0
static void in1_r3_32u(DisasContext *s, DisasOps *o)
{
o->in1 = tcg_temp_new_i64();
- tcg_gen_ext32u_i64(o->in1, regs[get_field(s->fields, r3)]);
+ tcg_gen_ext32u_i64(o->in1, regs[get_field(s, r3)]);
}
#define SPEC_in1_r3_32u 0
static void in1_r3_D32(DisasContext *s, DisasOps *o)
{
- int r3 = get_field(s->fields, r3);
+ int r3 = get_field(s, r3);
o->in1 = tcg_temp_new_i64();
tcg_gen_concat32_i64(o->in1, regs[r3 + 1], regs[r3]);
}
@@ -5614,41 +5614,39 @@ static void in1_r3_D32(DisasContext *s, DisasOps *o)
static void in1_e1(DisasContext *s, DisasOps *o)
{
- o->in1 = load_freg32_i64(get_field(s->fields, r1));
+ o->in1 = load_freg32_i64(get_field(s, r1));
}
#define SPEC_in1_e1 0
static void in1_f1(DisasContext *s, DisasOps *o)
{
- o->in1 = load_freg(get_field(s->fields, r1));
+ o->in1 = load_freg(get_field(s, r1));
}
#define SPEC_in1_f1 0
/* Load the high double word of an extended (128-bit) format FP number */
static void in1_x2h(DisasContext *s, DisasOps *o)
{
- o->in1 = load_freg(get_field(s->fields, r2));
+ o->in1 = load_freg(get_field(s, r2));
}
#define SPEC_in1_x2h SPEC_r2_f128
static void in1_f3(DisasContext *s, DisasOps *o)
{
- o->in1 = load_freg(get_field(s->fields, r3));
+ o->in1 = load_freg(get_field(s, r3));
}
#define SPEC_in1_f3 0
static void in1_la1(DisasContext *s, DisasOps *o)
{
- o->addr1 = get_address(s, 0, get_field(s->fields, b1),
- get_field(s->fields, d1));
+ o->addr1 = get_address(s, 0, get_field(s, b1), get_field(s, d1));
}
#define SPEC_in1_la1 0
static void in1_la2(DisasContext *s, DisasOps *o)
{
- int x2 = have_field(s->fields, x2) ? get_field(s->fields, x2) : 0;
- o->addr1 = get_address(s, x2, get_field(s->fields, b2),
- get_field(s->fields, d2));
+ int x2 = have_field(s, x2) ? get_field(s, x2) : 0;
+ o->addr1 = get_address(s, x2, get_field(s, b2), get_field(s, d2));
}
#define SPEC_in1_la2 0
@@ -5705,7 +5703,7 @@ static void in1_m1_64(DisasContext *s, DisasOps *o)
static void in2_r1_o(DisasContext *s, DisasOps *o)
{
- o->in2 = regs[get_field(s->fields, r1)];
+ o->in2 = regs[get_field(s, r1)];
o->g_in2 = true;
}
#define SPEC_in2_r1_o 0
@@ -5713,20 +5711,20 @@ static void in2_r1_o(DisasContext *s, DisasOps *o)
static void in2_r1_16u(DisasContext *s, DisasOps *o)
{
o->in2 = tcg_temp_new_i64();
- tcg_gen_ext16u_i64(o->in2, regs[get_field(s->fields, r1)]);
+ tcg_gen_ext16u_i64(o->in2, regs[get_field(s, r1)]);
}
#define SPEC_in2_r1_16u 0
static void in2_r1_32u(DisasContext *s, DisasOps *o)
{
o->in2 = tcg_temp_new_i64();
- tcg_gen_ext32u_i64(o->in2, regs[get_field(s->fields, r1)]);
+ tcg_gen_ext32u_i64(o->in2, regs[get_field(s, r1)]);
}
#define SPEC_in2_r1_32u 0
static void in2_r1_D32(DisasContext *s, DisasOps *o)
{
- int r1 = get_field(s->fields, r1);
+ int r1 = get_field(s, r1);
o->in2 = tcg_temp_new_i64();
tcg_gen_concat32_i64(o->in2, regs[r1 + 1], regs[r1]);
}
@@ -5734,20 +5732,20 @@ static void in2_r1_D32(DisasContext *s, DisasOps *o)
static void in2_r2(DisasContext *s, DisasOps *o)
{
- o->in2 = load_reg(get_field(s->fields, r2));
+ o->in2 = load_reg(get_field(s, r2));
}
#define SPEC_in2_r2 0
static void in2_r2_o(DisasContext *s, DisasOps *o)
{
- o->in2 = regs[get_field(s->fields, r2)];
+ o->in2 = regs[get_field(s, r2)];
o->g_in2 = true;
}
#define SPEC_in2_r2_o 0
static void in2_r2_nz(DisasContext *s, DisasOps *o)
{
- int r2 = get_field(s->fields, r2);
+ int r2 = get_field(s, r2);
if (r2 != 0) {
o->in2 = load_reg(r2);
}
@@ -5757,109 +5755,107 @@ static void in2_r2_nz(DisasContext *s, DisasOps *o)
static void in2_r2_8s(DisasContext *s, DisasOps *o)
{
o->in2 = tcg_temp_new_i64();
- tcg_gen_ext8s_i64(o->in2, regs[get_field(s->fields, r2)]);
+ tcg_gen_ext8s_i64(o->in2, regs[get_field(s, r2)]);
}
#define SPEC_in2_r2_8s 0
static void in2_r2_8u(DisasContext *s, DisasOps *o)
{
o->in2 = tcg_temp_new_i64();
- tcg_gen_ext8u_i64(o->in2, regs[get_field(s->fields, r2)]);
+ tcg_gen_ext8u_i64(o->in2, regs[get_field(s, r2)]);
}
#define SPEC_in2_r2_8u 0
static void in2_r2_16s(DisasContext *s, DisasOps *o)
{
o->in2 = tcg_temp_new_i64();
- tcg_gen_ext16s_i64(o->in2, regs[get_field(s->fields, r2)]);
+ tcg_gen_ext16s_i64(o->in2, regs[get_field(s, r2)]);
}
#define SPEC_in2_r2_16s 0
static void in2_r2_16u(DisasContext *s, DisasOps *o)
{
o->in2 = tcg_temp_new_i64();
- tcg_gen_ext16u_i64(o->in2, regs[get_field(s->fields, r2)]);
+ tcg_gen_ext16u_i64(o->in2, regs[get_field(s, r2)]);
}
#define SPEC_in2_r2_16u 0
static void in2_r3(DisasContext *s, DisasOps *o)
{
- o->in2 = load_reg(get_field(s->fields, r3));
+ o->in2 = load_reg(get_field(s, r3));
}
#define SPEC_in2_r3 0
static void in2_r3_sr32(DisasContext *s, DisasOps *o)
{
o->in2 = tcg_temp_new_i64();
- tcg_gen_shri_i64(o->in2, regs[get_field(s->fields, r3)], 32);
+ tcg_gen_shri_i64(o->in2, regs[get_field(s, r3)], 32);
}
#define SPEC_in2_r3_sr32 0
static void in2_r3_32u(DisasContext *s, DisasOps *o)
{
o->in2 = tcg_temp_new_i64();
- tcg_gen_ext32u_i64(o->in2, regs[get_field(s->fields, r3)]);
+ tcg_gen_ext32u_i64(o->in2, regs[get_field(s, r3)]);
}
#define SPEC_in2_r3_32u 0
static void in2_r2_32s(DisasContext *s, DisasOps *o)
{
o->in2 = tcg_temp_new_i64();
- tcg_gen_ext32s_i64(o->in2, regs[get_field(s->fields, r2)]);
+ tcg_gen_ext32s_i64(o->in2, regs[get_field(s, r2)]);
}
#define SPEC_in2_r2_32s 0
static void in2_r2_32u(DisasContext *s, DisasOps *o)
{
o->in2 = tcg_temp_new_i64();
- tcg_gen_ext32u_i64(o->in2, regs[get_field(s->fields, r2)]);
+ tcg_gen_ext32u_i64(o->in2, regs[get_field(s, r2)]);
}
#define SPEC_in2_r2_32u 0
static void in2_r2_sr32(DisasContext *s, DisasOps *o)
{
o->in2 = tcg_temp_new_i64();
- tcg_gen_shri_i64(o->in2, regs[get_field(s->fields, r2)], 32);
+ tcg_gen_shri_i64(o->in2, regs[get_field(s, r2)], 32);
}
#define SPEC_in2_r2_sr32 0
static void in2_e2(DisasContext *s, DisasOps *o)
{
- o->in2 = load_freg32_i64(get_field(s->fields, r2));
+ o->in2 = load_freg32_i64(get_field(s, r2));
}
#define SPEC_in2_e2 0
static void in2_f2(DisasContext *s, DisasOps *o)
{
- o->in2 = load_freg(get_field(s->fields, r2));
+ o->in2 = load_freg(get_field(s, r2));
}
#define SPEC_in2_f2 0
/* Load the low double word of an extended (128-bit) format FP number */
static void in2_x2l(DisasContext *s, DisasOps *o)
{
- o->in2 = load_freg(get_field(s->fields, r2) + 2);
+ o->in2 = load_freg(get_field(s, r2) + 2);
}
#define SPEC_in2_x2l SPEC_r2_f128
static void in2_ra2(DisasContext *s, DisasOps *o)
{
- o->in2 = get_address(s, 0, get_field(s->fields, r2), 0);
+ o->in2 = get_address(s, 0, get_field(s, r2), 0);
}
#define SPEC_in2_ra2 0
static void in2_a2(DisasContext *s, DisasOps *o)
{
- int x2 = have_field(s->fields, x2) ? get_field(s->fields, x2) : 0;
- o->in2 = get_address(s, x2, get_field(s->fields, b2),
- get_field(s->fields, d2));
+ int x2 = have_field(s, x2) ? get_field(s, x2) : 0;
+ o->in2 = get_address(s, x2, get_field(s, b2), get_field(s, d2));
}
#define SPEC_in2_a2 0
static void in2_ri2(DisasContext *s, DisasOps *o)
{
- o->in2 = tcg_const_i64(s->base.pc_next +
- (int64_t)get_field(s->fields, i2) * 2);
+ o->in2 = tcg_const_i64(s->base.pc_next + (int64_t)get_field(s, i2) * 2);
}
#define SPEC_in2_ri2 0
@@ -5965,38 +5961,38 @@ static void in2_mri2_64(DisasContext *s, DisasOps *o)
static void in2_i2(DisasContext *s, DisasOps *o)
{
- o->in2 = tcg_const_i64(get_field(s->fields, i2));
+ o->in2 = tcg_const_i64(get_field(s, i2));
}
#define SPEC_in2_i2 0
static void in2_i2_8u(DisasContext *s, DisasOps *o)
{
- o->in2 = tcg_const_i64((uint8_t)get_field(s->fields, i2));
+ o->in2 = tcg_const_i64((uint8_t)get_field(s, i2));
}
#define SPEC_in2_i2_8u 0
static void in2_i2_16u(DisasContext *s, DisasOps *o)
{
- o->in2 = tcg_const_i64((uint16_t)get_field(s->fields, i2));
+ o->in2 = tcg_const_i64((uint16_t)get_field(s, i2));
}
#define SPEC_in2_i2_16u 0
static void in2_i2_32u(DisasContext *s, DisasOps *o)
{
- o->in2 = tcg_const_i64((uint32_t)get_field(s->fields, i2));
+ o->in2 = tcg_const_i64((uint32_t)get_field(s, i2));
}
#define SPEC_in2_i2_32u 0
static void in2_i2_16u_shl(DisasContext *s, DisasOps *o)
{
- uint64_t i2 = (uint16_t)get_field(s->fields, i2);
+ uint64_t i2 = (uint16_t)get_field(s, i2);
o->in2 = tcg_const_i64(i2 << s->insn->data);
}
#define SPEC_in2_i2_16u_shl 0
static void in2_i2_32u_shl(DisasContext *s, DisasOps *o)
{
- uint64_t i2 = (uint32_t)get_field(s->fields, i2);
+ uint64_t i2 = (uint32_t)get_field(s, i2);
o->in2 = tcg_const_i64(i2 << s->insn->data);
}
#define SPEC_in2_i2_32u_shl 0
@@ -6309,6 +6305,10 @@ static DisasJumpType translate_one(CPUS390XState *env, DisasContext *s)
/* Search for the insn in the table. */
insn = extract_insn(env, s, &f);
+ /* Set up the strutures we use to communicate with the helpers. */
+ s->insn = insn;
+ s->fields = &f;
+
/* Emit insn_start now that we know the ILEN. */
tcg_gen_insn_start(s->base.pc_next, s->cc_op, s->ilen);
@@ -6340,13 +6340,13 @@ static DisasJumpType translate_one(CPUS390XState *env, DisasContext *s)
if (!(s->base.tb->flags & FLAG_MASK_AFP)) {
uint8_t dxc = 0;
- if ((insn->flags & IF_AFP1) && is_afp_reg(get_field(&f, r1))) {
+ if ((insn->flags & IF_AFP1) && is_afp_reg(get_field(s, r1))) {
dxc = 1;
}
- if ((insn->flags & IF_AFP2) && is_afp_reg(get_field(&f, r2))) {
+ if ((insn->flags & IF_AFP2) && is_afp_reg(get_field(s, r2))) {
dxc = 1;
}
- if ((insn->flags & IF_AFP3) && is_afp_reg(get_field(&f, r3))) {
+ if ((insn->flags & IF_AFP3) && is_afp_reg(get_field(s, r3))) {
dxc = 1;
}
if (insn->flags & IF_BFP) {
@@ -6375,20 +6375,16 @@ static DisasJumpType translate_one(CPUS390XState *env, DisasContext *s)
/* Check for insn specification exceptions. */
if (insn->spec) {
- if ((insn->spec & SPEC_r1_even && get_field(&f, r1) & 1) ||
- (insn->spec & SPEC_r2_even && get_field(&f, r2) & 1) ||
- (insn->spec & SPEC_r3_even && get_field(&f, r3) & 1) ||
- (insn->spec & SPEC_r1_f128 && !is_fp_pair(get_field(&f, r1))) ||
- (insn->spec & SPEC_r2_f128 && !is_fp_pair(get_field(&f, r2)))) {
+ if ((insn->spec & SPEC_r1_even && get_field(s, r1) & 1) ||
+ (insn->spec & SPEC_r2_even && get_field(s, r2) & 1) ||
+ (insn->spec & SPEC_r3_even && get_field(s, r3) & 1) ||
+ (insn->spec & SPEC_r1_f128 && !is_fp_pair(get_field(s, r1))) ||
+ (insn->spec & SPEC_r2_f128 && !is_fp_pair(get_field(s, r2)))) {
gen_program_exception(s, PGM_SPECIFICATION);
return DISAS_NORETURN;
}
}
- /* Set up the strutures we use to communicate with the helpers. */
- s->insn = insn;
- s->fields = &f;
-
/* Implement the instruction. */
if (insn->help_in1) {
insn->help_in1(s, &o);