On Wed, 27 Aug 2025 04:04, Richard Henderson <richard.hender...@linaro.org> 
wrote:
>All invocations were required to pass the same value,
>CP_REG_ARM64_SYSREG_CP.  Bake that in to the result directly.
>Remove CP_REG_ARM64_SYSREG_CP as unused.
>
>Signed-off-by: Richard Henderson <richard.hender...@linaro.org>
>---

Reviewed-by: Manos Pitsidianakis <manos.pitsidiana...@linaro.org>

> target/arm/cpregs.h            |  5 ++---
> target/arm/kvm-consts.h        |  3 ---
> target/arm/helper.c            | 11 +++++------
> target/arm/hvf/hvf.c           |  3 +--
> target/arm/tcg/translate-a64.c |  6 ++----
> 5 files changed, 10 insertions(+), 18 deletions(-)
>
>diff --git a/target/arm/cpregs.h b/target/arm/cpregs.h
>index 7ebe404163..95b0b9c78e 100644
>--- a/target/arm/cpregs.h
>+++ b/target/arm/cpregs.h
>@@ -187,9 +187,8 @@ enum {
>      ((is64) << CP_REG_AA32_64BIT_SHIFT) |                  \
>      ((cp) << 16) | ((crn) << 11) | ((crm) << 7) | ((opc1) << 3) | (opc2))
> 
>-#define ENCODE_AA64_CP_REG(cp, crn, crm, op0, op1, op2) \
>-    (CP_REG_AA64_MASK |                                 \
>-     ((cp) << CP_REG_ARM_COPROC_SHIFT) |                \
>+#define ENCODE_AA64_CP_REG(crn, crm, op0, op1, op2) \
>+    (CP_REG_AA64_MASK | CP_REG_ARM64_SYSREG |           \
>      ((op0) << CP_REG_ARM64_SYSREG_OP0_SHIFT) |         \
>      ((op1) << CP_REG_ARM64_SYSREG_OP1_SHIFT) |         \
>      ((crn) << CP_REG_ARM64_SYSREG_CRN_SHIFT) |         \
>diff --git a/target/arm/kvm-consts.h b/target/arm/kvm-consts.h
>index fdb305eea1..54ae5da7ce 100644
>--- a/target/arm/kvm-consts.h
>+++ b/target/arm/kvm-consts.h
>@@ -160,9 +160,6 @@ MISMATCH_CHECK(QEMU_KVM_ARM_TARGET_CORTEX_A53, 
>KVM_ARM_TARGET_CORTEX_A53);
> #define CP_REG_ARM64_SYSREG_OP2_MASK   0x0000000000000007
> #define CP_REG_ARM64_SYSREG_OP2_SHIFT  0
> 
>-/* No kernel define but it's useful to QEMU */
>-#define CP_REG_ARM64_SYSREG_CP (CP_REG_ARM64_SYSREG >> 
>CP_REG_ARM_COPROC_SHIFT)
>-
> MISMATCH_CHECK(CP_REG_ARM64, KVM_REG_ARM64);
> MISMATCH_CHECK(CP_REG_ARM_COPROC_MASK, KVM_REG_ARM_COPROC_MASK);
> MISMATCH_CHECK(CP_REG_ARM_COPROC_SHIFT, KVM_REG_ARM_COPROC_SHIFT);
>diff --git a/target/arm/helper.c b/target/arm/helper.c
>index 268cad905f..93cae888e2 100644
>--- a/target/arm/helper.c
>+++ b/target/arm/helper.c
>@@ -4527,7 +4527,7 @@ static void define_arm_vh_e2h_redirects_aliases(ARMCPU 
>*cpu)
>     };
> 
> #define K(op0, op1, crn, crm, op2) \
>-    ENCODE_AA64_CP_REG(CP_REG_ARM64_SYSREG_CP, crn, crm, op0, op1, op2)
>+    ENCODE_AA64_CP_REG(crn, crm, op0, op1, op2)
> 
>     static const struct E2HAlias aliases[] = {
>         { K(3, 0,  1, 0, 0), K(3, 4,  1, 0, 0), K(3, 5, 1, 0, 0),
>@@ -7297,10 +7297,9 @@ static void add_cpreg_to_hashtable(ARMCPU *cpu, const 
>ARMCPRegInfo *r,
>          * in their AArch64 view (the .cp value may be non-zero for the
>          * benefit of the AArch32 view).
>          */
>-        if (cp == 0 || r->state == ARM_CP_STATE_BOTH) {
>-            cp = CP_REG_ARM64_SYSREG_CP;
>-        }
>-        key = ENCODE_AA64_CP_REG(cp, r->crn, crm, r->opc0, opc1, opc2);
>+        assert(cp == 0 || r->state == ARM_CP_STATE_BOTH);
>+        cp = 0;
>+        key = ENCODE_AA64_CP_REG(r->crn, crm, r->opc0, opc1, opc2);
>         break;
>     default:
>         g_assert_not_reached();
>@@ -7525,7 +7524,7 @@ void define_one_arm_cp_reg(ARMCPU *cpu, const 
>ARMCPRegInfo *r)
>         }
>         break;
>     case ARM_CP_STATE_AA64:
>-        assert(r->cp == 0 || r->cp == CP_REG_ARM64_SYSREG_CP);
>+        assert(r->cp == 0);
>         break;
>     default:
>         g_assert_not_reached();
>diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c
>index 9dffa99ed1..af03fc7fc1 100644
>--- a/target/arm/hvf/hvf.c
>+++ b/target/arm/hvf/hvf.c
>@@ -1124,8 +1124,7 @@ static bool is_id_sysreg(uint32_t reg)
> 
> static uint32_t hvf_reg2cp_reg(uint32_t reg)
> {
>-    return ENCODE_AA64_CP_REG(CP_REG_ARM64_SYSREG_CP,
>-                              (reg >> SYSREG_CRN_SHIFT) & SYSREG_CRN_MASK,
>+    return ENCODE_AA64_CP_REG((reg >> SYSREG_CRN_SHIFT) & SYSREG_CRN_MASK,
>                               (reg >> SYSREG_CRM_SHIFT) & SYSREG_CRM_MASK,
>                               (reg >> SYSREG_OP0_SHIFT) & SYSREG_OP0_MASK,
>                               (reg >> SYSREG_OP1_SHIFT) & SYSREG_OP1_MASK,
>diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c
>index dbf47595db..743c5a10e1 100644
>--- a/target/arm/tcg/translate-a64.c
>+++ b/target/arm/tcg/translate-a64.c
>@@ -2466,8 +2466,7 @@ static void handle_sys(DisasContext *s, bool isread,
>                        unsigned int op0, unsigned int op1, unsigned int op2,
>                        unsigned int crn, unsigned int crm, unsigned int rt)
> {
>-    uint32_t key = ENCODE_AA64_CP_REG(CP_REG_ARM64_SYSREG_CP,
>-                                      crn, crm, op0, op1, op2);
>+    uint32_t key = ENCODE_AA64_CP_REG(crn, crm, op0, op1, op2);
>     const ARMCPRegInfo *ri = get_arm_cp_reginfo(s->cp_regs, key);
>     bool need_exit_tb = false;
>     bool nv_trap_to_el2 = false;
>@@ -2603,8 +2602,7 @@ static void handle_sys(DisasContext *s, bool isread,
>          * We don't use the EL1 register's access function, and
>          * fine-grained-traps on EL1 also do not apply here.
>          */
>-        key = ENCODE_AA64_CP_REG(CP_REG_ARM64_SYSREG_CP,
>-                                 crn, crm, op0, 0, op2);
>+        key = ENCODE_AA64_CP_REG(crn, crm, op0, 0, op2);
>         ri = get_arm_cp_reginfo(s->cp_regs, key);
>         assert(ri);
>         assert(cp_access_ok(s->current_el, ri, isread));
>-- 
>2.43.0
>
>

Reply via email to