Message ID | 20220715205439.161110-4-victor.colombo@eldorado.org.br (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Implement Power ISA 3.1B hash insns | expand |
Reviewed-by: Lucas Mateus Castro <lucas.araujo@eldorado.org.br> On 15/07/2022 17:54, Víctor Colombo wrote: > Implementation for instructions hashstp and hashchkp, the privileged > versions of hashst and hashchk, which were added in Power ISA 3.1B. > > Signed-off-by: Víctor Colombo<victor.colombo@eldorado.org.br> > --- > target/ppc/excp_helper.c | 2 ++ > target/ppc/helper.h | 2 ++ > target/ppc/insn32.decode | 2 ++ > target/ppc/translate/fixedpoint-impl.c.inc | 2 ++ > 4 files changed, 8 insertions(+) > > diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c > index fa5a737e22..847eff9213 100644 > --- a/target/ppc/excp_helper.c > +++ b/target/ppc/excp_helper.c > @@ -2255,6 +2255,8 @@ void helper_##op(CPUPPCState *env, target_ulong ea, target_ulong ra, \ > > HELPER_HASH(HASHST, env->spr[SPR_HASHKEYR], true) > HELPER_HASH(HASHCHK, env->spr[SPR_HASHKEYR], false) > +HELPER_HASH(HASHSTP, env->spr[SPR_HASHPKEYR], true) > +HELPER_HASH(HASHCHKP, env->spr[SPR_HASHPKEYR], false) > > #if !defined(CONFIG_USER_ONLY) > > diff --git a/target/ppc/helper.h b/target/ppc/helper.h > index 5817af632b..122b2e9359 100644 > --- a/target/ppc/helper.h > +++ b/target/ppc/helper.h > @@ -6,6 +6,8 @@ DEF_HELPER_FLAGS_4(td, TCG_CALL_NO_WG, void, env, tl, tl, i32) > #endif > DEF_HELPER_4(HASHST, void, env, tl, tl, tl) > DEF_HELPER_4(HASHCHK, void, env, tl, tl, tl) > +DEF_HELPER_4(HASHSTP, void, env, tl, tl, tl) > +DEF_HELPER_4(HASHCHKP, void, env, tl, tl, tl) > #if !defined(CONFIG_USER_ONLY) > DEF_HELPER_2(store_msr, void, env, tl) > DEF_HELPER_1(rfi, void, env) > diff --git a/target/ppc/insn32.decode b/target/ppc/insn32.decode > index 544514565c..da08960fca 100644 > --- a/target/ppc/insn32.decode > +++ b/target/ppc/insn32.decode > @@ -330,6 +330,8 @@ PEXTD 011111 ..... ..... ..... 0010111100 - @X > > HASHST 011111 ..... ..... ..... 1011010010 . @X_DW > HASHCHK 011111 ..... ..... ..... 1011110010 . @X_DW > +HASHSTP 011111 ..... ..... ..... 1010010010 . @X_DW > +HASHCHKP 011111 ..... ..... ..... 1010110010 . @X_DW > > ## BCD Assist > > diff --git a/target/ppc/translate/fixedpoint-impl.c.inc b/target/ppc/translate/fixedpoint-impl.c.inc > index 41c06de8a2..1ba56cbed5 100644 > --- a/target/ppc/translate/fixedpoint-impl.c.inc > +++ b/target/ppc/translate/fixedpoint-impl.c.inc > @@ -572,3 +572,5 @@ static bool do_hash(DisasContext *ctx, arg_X *a, bool priv, > > TRANS(HASHST, do_hash, false, gen_helper_HASHST) > TRANS(HASHCHK, do_hash, false, gen_helper_HASHCHK) > +TRANS(HASHSTP, do_hash, true, gen_helper_HASHSTP) > +TRANS(HASHCHKP, do_hash, true, gen_helper_HASHCHKP) > -- > 2.25.1 > >
diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index fa5a737e22..847eff9213 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -2255,6 +2255,8 @@ void helper_##op(CPUPPCState *env, target_ulong ea, target_ulong ra, \ HELPER_HASH(HASHST, env->spr[SPR_HASHKEYR], true) HELPER_HASH(HASHCHK, env->spr[SPR_HASHKEYR], false) +HELPER_HASH(HASHSTP, env->spr[SPR_HASHPKEYR], true) +HELPER_HASH(HASHCHKP, env->spr[SPR_HASHPKEYR], false) #if !defined(CONFIG_USER_ONLY) diff --git a/target/ppc/helper.h b/target/ppc/helper.h index 5817af632b..122b2e9359 100644 --- a/target/ppc/helper.h +++ b/target/ppc/helper.h @@ -6,6 +6,8 @@ DEF_HELPER_FLAGS_4(td, TCG_CALL_NO_WG, void, env, tl, tl, i32) #endif DEF_HELPER_4(HASHST, void, env, tl, tl, tl) DEF_HELPER_4(HASHCHK, void, env, tl, tl, tl) +DEF_HELPER_4(HASHSTP, void, env, tl, tl, tl) +DEF_HELPER_4(HASHCHKP, void, env, tl, tl, tl) #if !defined(CONFIG_USER_ONLY) DEF_HELPER_2(store_msr, void, env, tl) DEF_HELPER_1(rfi, void, env) diff --git a/target/ppc/insn32.decode b/target/ppc/insn32.decode index 544514565c..da08960fca 100644 --- a/target/ppc/insn32.decode +++ b/target/ppc/insn32.decode @@ -330,6 +330,8 @@ PEXTD 011111 ..... ..... ..... 0010111100 - @X HASHST 011111 ..... ..... ..... 1011010010 . @X_DW HASHCHK 011111 ..... ..... ..... 1011110010 . @X_DW +HASHSTP 011111 ..... ..... ..... 1010010010 . @X_DW +HASHCHKP 011111 ..... ..... ..... 1010110010 . @X_DW ## BCD Assist diff --git a/target/ppc/translate/fixedpoint-impl.c.inc b/target/ppc/translate/fixedpoint-impl.c.inc index 41c06de8a2..1ba56cbed5 100644 --- a/target/ppc/translate/fixedpoint-impl.c.inc +++ b/target/ppc/translate/fixedpoint-impl.c.inc @@ -572,3 +572,5 @@ static bool do_hash(DisasContext *ctx, arg_X *a, bool priv, TRANS(HASHST, do_hash, false, gen_helper_HASHST) TRANS(HASHCHK, do_hash, false, gen_helper_HASHCHK) +TRANS(HASHSTP, do_hash, true, gen_helper_HASHSTP) +TRANS(HASHCHKP, do_hash, true, gen_helper_HASHCHKP)
Implementation for instructions hashstp and hashchkp, the privileged versions of hashst and hashchk, which were added in Power ISA 3.1B. Signed-off-by: Víctor Colombo <victor.colombo@eldorado.org.br> --- target/ppc/excp_helper.c | 2 ++ target/ppc/helper.h | 2 ++ target/ppc/insn32.decode | 2 ++ target/ppc/translate/fixedpoint-impl.c.inc | 2 ++ 4 files changed, 8 insertions(+)