[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 03/26] target/arm: Add clear_pstate_bits, share g
From: |
Richard Henderson |
Subject: |
[Qemu-devel] [PATCH v2 03/26] target/arm: Add clear_pstate_bits, share gen_ss_advance |
Date: |
Sun, 10 Feb 2019 17:08:06 -0800 |
We do not need an out-of-line helper for clearing bits in pstate.
While changing things, share the implementation of gen_ss_advance.
Signed-off-by: Richard Henderson <address@hidden>
---
target/arm/helper.h | 2 --
target/arm/translate.h | 19 +++++++++++++++++++
target/arm/op_helper.c | 5 -----
target/arm/translate-a64.c | 11 -----------
target/arm/translate.c | 11 -----------
5 files changed, 19 insertions(+), 29 deletions(-)
diff --git a/target/arm/helper.h b/target/arm/helper.h
index 28b1dd6252..c21fa2edfe 100644
--- a/target/arm/helper.h
+++ b/target/arm/helper.h
@@ -77,8 +77,6 @@ DEF_HELPER_2(get_cp_reg, i32, env, ptr)
DEF_HELPER_3(set_cp_reg64, void, env, ptr, i64)
DEF_HELPER_2(get_cp_reg64, i64, env, ptr)
-DEF_HELPER_1(clear_pstate_ss, void, env)
-
DEF_HELPER_2(get_r13_banked, i32, env, i32)
DEF_HELPER_3(set_r13_banked, void, env, i32, i32)
diff --git a/target/arm/translate.h b/target/arm/translate.h
index 17748ddfb9..33af50a13f 100644
--- a/target/arm/translate.h
+++ b/target/arm/translate.h
@@ -202,6 +202,25 @@ static inline TCGv_i32 get_ahp_flag(void)
return ret;
}
+/* Clear bits within PSTATE. */
+static inline void clear_pstate_bits(uint32_t bits)
+{
+ TCGv_i32 p = tcg_temp_new_i32();
+
+ tcg_gen_ld_i32(p, cpu_env, offsetof(CPUARMState, pstate));
+ tcg_gen_andi_i32(p, p, ~bits);
+ tcg_gen_st_i32(p, cpu_env, offsetof(CPUARMState, pstate));
+ tcg_temp_free_i32(p);
+}
+
+/* If the singlestep state is Active-not-pending, advance to Active-pending. */
+static inline void gen_ss_advance(DisasContext *s)
+{
+ if (s->ss_active) {
+ s->pstate_ss = 0;
+ clear_pstate_bits(PSTATE_SS);
+ }
+}
/* Vector operations shared between ARM and AArch64. */
extern const GVecGen3 bsl_op;
diff --git a/target/arm/op_helper.c b/target/arm/op_helper.c
index c5721a866d..8698b4dc83 100644
--- a/target/arm/op_helper.c
+++ b/target/arm/op_helper.c
@@ -861,11 +861,6 @@ uint64_t HELPER(get_cp_reg64)(CPUARMState *env, void *rip)
return res;
}
-void HELPER(clear_pstate_ss)(CPUARMState *env)
-{
- env->pstate &= ~PSTATE_SS;
-}
-
void HELPER(pre_hvc)(CPUARMState *env)
{
ARMCPU *cpu = arm_env_get_cpu(env);
diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c
index 13e010d27b..ba139bba26 100644
--- a/target/arm/translate-a64.c
+++ b/target/arm/translate-a64.c
@@ -421,17 +421,6 @@ static void gen_exception_bkpt_insn(DisasContext *s, int
offset,
s->base.is_jmp = DISAS_NORETURN;
}
-static void gen_ss_advance(DisasContext *s)
-{
- /* If the singlestep state is Active-not-pending, advance to
- * Active-pending.
- */
- if (s->ss_active) {
- s->pstate_ss = 0;
- gen_helper_clear_pstate_ss(cpu_env);
- }
-}
-
static void gen_step_complete_exception(DisasContext *s)
{
/* We just completed step of an insn. Move from Active-not-pending
diff --git a/target/arm/translate.c b/target/arm/translate.c
index 66cf28c8cb..baf6068ec1 100644
--- a/target/arm/translate.c
+++ b/target/arm/translate.c
@@ -298,17 +298,6 @@ static void gen_exception(int excp, uint32_t syndrome,
uint32_t target_el)
tcg_temp_free_i32(tcg_excp);
}
-static void gen_ss_advance(DisasContext *s)
-{
- /* If the singlestep state is Active-not-pending, advance to
- * Active-pending.
- */
- if (s->ss_active) {
- s->pstate_ss = 0;
- gen_helper_clear_pstate_ss(cpu_env);
- }
-}
-
static void gen_step_complete_exception(DisasContext *s)
{
/* We just completed step of an insn. Move from Active-not-pending
--
2.17.2
- [Qemu-devel] [PATCH v2 00/26] target/arm: Implement ARMv8.5-MemTag, Richard Henderson, 2019/02/10
- [Qemu-devel] [PATCH v2 01/26] target/arm: Split out arm_sctlr, Richard Henderson, 2019/02/10
- [Qemu-devel] [PATCH v2 02/26] target/arm: Split helper_msr_i_pstate into 3, Richard Henderson, 2019/02/10
- [Qemu-devel] [PATCH v2 04/26] target/arm: Add MTE_ACTIVE to tb_flags, Richard Henderson, 2019/02/10
- [Qemu-devel] [PATCH v2 06/26] target/arm: Add MTE system registers, Richard Henderson, 2019/02/10
- [Qemu-devel] [PATCH v2 09/26] target/arm: Suppress tag check for sp+offset, Richard Henderson, 2019/02/10
- [Qemu-devel] [PATCH v2 14/26] target/arm: Define arm_cpu_do_unaligned_access for CONFIG_USER_ONLY, Richard Henderson, 2019/02/10
- [Qemu-devel] [PATCH v2 05/26] target/arm: Extract TCMA with ARMVAParameters, Richard Henderson, 2019/02/10
- [Qemu-devel] [PATCH v2 13/26] target/arm: Implement the SUBP instruction, Richard Henderson, 2019/02/10
- [Qemu-devel] [PATCH v2 03/26] target/arm: Add clear_pstate_bits, share gen_ss_advance,
Richard Henderson <=
- [Qemu-devel] [PATCH v2 10/26] target/arm: Implement the IRG instruction, Richard Henderson, 2019/02/10
- [Qemu-devel] [PATCH v2 11/26] target/arm: Implement ADDG, SUBG instructions, Richard Henderson, 2019/02/10
- [Qemu-devel] [PATCH v2 12/26] target/arm: Implement the GMI instruction, Richard Henderson, 2019/02/10
- [Qemu-devel] [PATCH v2 08/26] target/arm: Fill in helper_mte_check, Richard Henderson, 2019/02/10
- [Qemu-devel] [PATCH v2 25/26] target/arm: Enable MTE, Richard Henderson, 2019/02/10
- [Qemu-devel] [PATCH v2 16/26] target/arm: Implement the STGP instruction, Richard Henderson, 2019/02/10
- [Qemu-devel] [PATCH v2 07/26] target/arm: Assert no manual change to CACHED_PSTATE_BITS, Richard Henderson, 2019/02/10
- [Qemu-devel] [PATCH v2 26/26] tests/tcg/aarch64: Add mte smoke tests, Richard Henderson, 2019/02/10
- [Qemu-devel] [PATCH v2 17/26] target/arm: Implement the access tag cache flushes, Richard Henderson, 2019/02/10
- [Qemu-devel] [PATCH v2 20/26] tcg: Introduce target-specific page data for user-only, Richard Henderson, 2019/02/10