[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 27/71] target/arm: Add SMIDR_EL1, SMPRI_EL1, SMPRIMAP_EL2
From: |
Peter Maydell |
Subject: |
Re: [PATCH 27/71] target/arm: Add SMIDR_EL1, SMPRI_EL1, SMPRIMAP_EL2 |
Date: |
Mon, 6 Jun 2022 16:55:54 +0100 |
On Thu, 2 Jun 2022 at 23:28, Richard Henderson
<richard.henderson@linaro.org> wrote:
>
> Implement the streaming mode identification register, and the
> two streaming priority registers. For QEMU, they are all RES0.
>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
> target/arm/helper.c | 33 +++++++++++++++++++++++++++++++++
> 1 file changed, 33 insertions(+)
>
> diff --git a/target/arm/helper.c b/target/arm/helper.c
> index 4149570b95..f852fd7644 100644
> --- a/target/arm/helper.c
> +++ b/target/arm/helper.c
> @@ -6355,6 +6355,18 @@ static CPAccessResult access_tpidr2(CPUARMState *env,
> const ARMCPRegInfo *ri,
> return CP_ACCESS_OK;
> }
>
> +static CPAccessResult access_esm(CPUARMState *env, const ARMCPRegInfo *ri,
> + bool isread)
> +{
> + /* TODO: FEAT_FGT for SMPRI_EL1 but not SMPRIMAP_EL2 */
> + if (arm_current_el(env) < 3
> + && arm_feature(env, ARM_FEATURE_EL3)
> + && !FIELD_EX64(env->cp15.cptr_el[3], CPTR_EL3, ESM)) {
> + return CP_ACCESS_TRAP_EL3;
> + }
> + return CP_ACCESS_OK;
> +}
> +
> static void svcr_write(CPUARMState *env, const ARMCPRegInfo *ri,
> uint64_t value)
> {
> @@ -6412,6 +6424,27 @@ static const ARMCPRegInfo sme_reginfo[] = {
> .access = PL3_RW, .type = ARM_CP_SME,
> .fieldoffset = offsetof(CPUARMState, vfp.smcr_el[3]),
> .writefn = smcr_write, .raw_writefn = raw_write },
> + { .name = "SMIDR_EL1", .state = ARM_CP_STATE_AA64,
> + .opc0 = 3, .opc1 = 1, .crn = 0, .crm = 0, .opc2 = 6,
> + .access = PL1_RW, .accessfn = access_aa64_tid1,
Shouldn't this be PL1_R, not _RW ?
> + /*
> + * IMPLEMENTOR = 0 (software)
> + * REVISION = 0 (implementation defined)
> + * SMPS = 0 (no streaming execution priority in QEMU)
> + * AFFINITY = 0 (streaming sve mode not shared with other PEs)
> + */
> + .type = ARM_CP_CONST, .resetvalue = 0, },
> + /*
> + * Because SMIDR_EL1.SMPS is 0, SMPRI_EL1 and SMPRIMAP_EL2 are RES 0.
> + */
> + { .name = "SMPRI_EL1", .state = ARM_CP_STATE_AA64,
> + .opc0 = 3, .opc1 = 0, .crn = 1, .crm = 2, .opc2 = 4,
> + .access = PL1_RW, .accessfn = access_esm,
> + .type = ARM_CP_CONST, .resetvalue = 0 },
> + { .name = "SMPRIMAP_EL2", .state = ARM_CP_STATE_AA64,
> + .opc0 = 3, .opc1 = 4, .crn = 1, .crm = 2, .opc2 = 5,
> + .access = PL2_RW, .accessfn = access_esm,
> + .type = ARM_CP_CONST, .resetvalue = 0 },
> };
> #endif /* TARGET_AARCH64 */
Otherwise
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
thanks
-- PMM
- Re: [PATCH 21/71] target/arm: Implement TPIDR2_EL0, (continued)
- [PATCH 23/71] target/arm: Add syn_smetrap, Richard Henderson, 2022/06/02
- [PATCH 25/71] target/arm: Add SVCR, Richard Henderson, 2022/06/02
- [PATCH 24/71] target/arm: Add ARM_CP_SME, Richard Henderson, 2022/06/02
- [PATCH 27/71] target/arm: Add SMIDR_EL1, SMPRI_EL1, SMPRIMAP_EL2, Richard Henderson, 2022/06/02
- Re: [PATCH 27/71] target/arm: Add SMIDR_EL1, SMPRI_EL1, SMPRIMAP_EL2,
Peter Maydell <=
- [PATCH 29/71] target/arm: Add the SME ZA storage to CPUARMState, Richard Henderson, 2022/06/02
- [PATCH 30/71] target/arm: Implement SMSTART, SMSTOP, Richard Henderson, 2022/06/02
- [PATCH 33/71] target/arm: Generalize cpu_arm_{get,set}_vq, Richard Henderson, 2022/06/02
- [PATCH 31/71] target/arm: Move error for sve%d property to arm_cpu_sve_finalize, Richard Henderson, 2022/06/02
- [PATCH 32/71] target/arm: Create ARMVQMap, Richard Henderson, 2022/06/02