Helper functions to invoke the write128fn and read128fn methods of ARMCPRegInfo.
Signed-off-by: Richard Henderson <richard.hender...@linaro.org> --- target/arm/tcg/helper.h | 2 ++ target/arm/tcg/op_helper.c | 28 ++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/target/arm/tcg/helper.h b/target/arm/tcg/helper.h index 4da32db902..82592d070d 100644 --- a/target/arm/tcg/helper.h +++ b/target/arm/tcg/helper.h @@ -90,6 +90,8 @@ DEF_HELPER_3(set_cp_reg, void, env, cptr, i32) DEF_HELPER_2(get_cp_reg, i32, env, cptr) DEF_HELPER_3(set_cp_reg64, void, env, cptr, i64) DEF_HELPER_2(get_cp_reg64, i64, env, cptr) +DEF_HELPER_3(set_cp_reg128, void, env, cptr, i128) +DEF_HELPER_2(get_cp_reg128, i128, env, cptr) DEF_HELPER_2(get_r13_banked, i32, env, i32) DEF_HELPER_3(set_r13_banked, void, env, i32, i32) diff --git a/target/arm/tcg/op_helper.c b/target/arm/tcg/op_helper.c index 575e566280..a3ae175a45 100644 --- a/target/arm/tcg/op_helper.c +++ b/target/arm/tcg/op_helper.c @@ -1025,6 +1025,34 @@ uint64_t HELPER(get_cp_reg64)(CPUARMState *env, const void *rip) return res; } +void HELPER(set_cp_reg128)(CPUARMState *env, const void *rip, Int128 value) +{ + const ARMCPRegInfo *ri = rip; + + if (ri->type & ARM_CP_IO) { + bql_lock(); + ri->write128fn(env, ri, value); + bql_unlock(); + } else { + ri->write128fn(env, ri, value); + } +} + +Int128 HELPER(get_cp_reg128)(CPUARMState *env, const void *rip) +{ + const ARMCPRegInfo *ri = rip; + Int128 res; + + if (ri->type & ARM_CP_IO) { + bql_lock(); + res = ri->read128fn(env, ri); + bql_unlock(); + } else { + res = ri->read128fn(env, ri); + } + return res; +} + void HELPER(pre_hvc)(CPUARMState *env) { ARMCPU *cpu = env_archcpu(env); -- 2.43.0