From: "Alex Bennée" <alex.bennee@linaro.org>
To: Byron Lathi <bslathi19@gmail.com>
Cc: qemu-devel@nongnu.org, peter.maydell@linaro.org, qemu-arm@nongnu.org
Subject: Re: [PATCH] Target/arm: Implement Cortex-A5
Date: Mon, 13 Dec 2021 21:02:07 +0000 [thread overview]
Message-ID: <87wnk8i4x7.fsf@linaro.org> (raw)
In-Reply-To: <20211213182449.7068-1-bslathi19@gmail.com>
Byron Lathi <bslathi19@gmail.com> writes:
> Add support for the Cortex-A5. These changes are based off of the A7 and
> A9 init functions, using the appropriate values from the technical
> reference manual for the A5.
>
> Signed-off-by: Byron Lathi <bslathi19@gmail.com>
> ---
> target/arm/cpu_tcg.c | 37 +++++++++++++++++++++++++++++++++++++
> 1 file changed, 37 insertions(+)
>
> diff --git a/target/arm/cpu_tcg.c b/target/arm/cpu_tcg.c
> index 13d0e9b195..38f0fc3977 100644
> --- a/target/arm/cpu_tcg.c
> +++ b/target/arm/cpu_tcg.c
> @@ -304,6 +304,42 @@ static void cortex_a8_initfn(Object *obj)
> define_arm_cp_regs(cpu, cortexa8_cp_reginfo);
> }
>
> +static void cortex_a5_initfn(Object *obj)
> +{
> + ARMCPU *cpu = ARM_CPU(obj);
> +
> + cpu->dtb_compatible = "arm,cortex-a5";
> + set_feature(&cpu->env, ARM_FEATURE_V7);
> + set_feature(&cpu->env, ARM_FEATURE_NEON);
> + set_feature(&cpu->env, ARM_FEATURE_THUMB2EE);
> + set_feature(&cpu->env, ARM_FEATURE_GENERIC_TIMER);
> + set_feature(&cpu->env, ARM_FEATURE_DUMMY_C15_REGS);
> + set_feature(&cpu->env, ARM_FEATURE_PMU);
> + cpu->midr = 0x410fc0f1;
hmm wikipedia lists the part number as 0xc05 (and the a15 as 0xc0f) but
I can't find the actual value in the TRM.
> + cpu->reset_fpsid = 0x41023051;
I think for the a5 the FPU is optional so maybe we need a cpu option
here? Or maybe just assume it's enabled on QEMUs version?
> + cpu->isar.mvfr0 = 0x10110221;
> + cpu->isar.mvfr1 = 0x11000011;
> + cpu->ctr = 0x83338003;
> + cpu->reset_sctlr = 0x00c50078;
> + cpu->isar.id_pfr0 = 0x00001231;
> + cpu->isar.id_pfr1 = 0x00000011;
> + cpu->isar.id_dfr0 = 0x02010444;
> + cpu->id_afr0 = 0x00000000;
> + cpu->isar.id_mmfr0 = 0x00100103;
the TRM says [11:8] Outermost shareability 0x0 L1 cache coherency not supported.
> + cpu->isar.id_mmfr1 = 0x40000000;
> + cpu->isar.id_mmfr2 = 0x01230000;
> + cpu->isar.id_mmfr3 = 0x00102211;
> + cpu->isar.id_isar0 = 0x00101111;
> + cpu->isar.id_isar1 = 0x13112111;
> + cpu->isar.id_isar2 = 0x21232041;
> + cpu->isar.id_isar3 = 0x11112131;
> + cpu->isar.id_isar4 = 0x00011142;
> + cpu->isar.dbgdidr = 0x1203f001;
> + cpu->clidr = 0x09200003;
I'm fairly sure these depend on the part as well although it makes no
difference to our emulation.
> + cpu->ccsidr[0] = 0x701fe00a;
> + cpu->ccsidr[1] = 0x203fe00a;
> +}
> +
> static const ARMCPRegInfo cortexa9_cp_reginfo[] = {
> /*
> * power_control should be set to maximum latency. Again,
> @@ -1019,6 +1055,7 @@ static const ARMCPUInfo arm_tcg_cpus[] = {
> { .name = "arm1136", .initfn = arm1136_initfn },
> { .name = "arm1176", .initfn = arm1176_initfn },
> { .name = "arm11mpcore", .initfn = arm11mpcore_initfn },
> + { .name = "cortext-a5", .initfn = cortex_a5_initfn },
Extra 't'
> { .name = "cortex-a7", .initfn = cortex_a7_initfn },
> { .name = "cortex-a8", .initfn = cortex_a8_initfn },
> { .name = "cortex-a9", .initfn = cortex_a9_initfn },
--
Alex Bennée
WARNING: multiple messages have this Message-ID (diff)
From: "Alex Bennée" <alex.bennee@linaro.org>
To: Byron Lathi <bslathi19@gmail.com>
Cc: peter.maydell@linaro.org, qemu-arm@nongnu.org, qemu-devel@nongnu.org
Subject: Re: [PATCH] Target/arm: Implement Cortex-A5
Date: Mon, 13 Dec 2021 21:02:07 +0000 [thread overview]
Message-ID: <87wnk8i4x7.fsf@linaro.org> (raw)
In-Reply-To: <20211213182449.7068-1-bslathi19@gmail.com>
Byron Lathi <bslathi19@gmail.com> writes:
> Add support for the Cortex-A5. These changes are based off of the A7 and
> A9 init functions, using the appropriate values from the technical
> reference manual for the A5.
>
> Signed-off-by: Byron Lathi <bslathi19@gmail.com>
> ---
> target/arm/cpu_tcg.c | 37 +++++++++++++++++++++++++++++++++++++
> 1 file changed, 37 insertions(+)
>
> diff --git a/target/arm/cpu_tcg.c b/target/arm/cpu_tcg.c
> index 13d0e9b195..38f0fc3977 100644
> --- a/target/arm/cpu_tcg.c
> +++ b/target/arm/cpu_tcg.c
> @@ -304,6 +304,42 @@ static void cortex_a8_initfn(Object *obj)
> define_arm_cp_regs(cpu, cortexa8_cp_reginfo);
> }
>
> +static void cortex_a5_initfn(Object *obj)
> +{
> + ARMCPU *cpu = ARM_CPU(obj);
> +
> + cpu->dtb_compatible = "arm,cortex-a5";
> + set_feature(&cpu->env, ARM_FEATURE_V7);
> + set_feature(&cpu->env, ARM_FEATURE_NEON);
> + set_feature(&cpu->env, ARM_FEATURE_THUMB2EE);
> + set_feature(&cpu->env, ARM_FEATURE_GENERIC_TIMER);
> + set_feature(&cpu->env, ARM_FEATURE_DUMMY_C15_REGS);
> + set_feature(&cpu->env, ARM_FEATURE_PMU);
> + cpu->midr = 0x410fc0f1;
hmm wikipedia lists the part number as 0xc05 (and the a15 as 0xc0f) but
I can't find the actual value in the TRM.
> + cpu->reset_fpsid = 0x41023051;
I think for the a5 the FPU is optional so maybe we need a cpu option
here? Or maybe just assume it's enabled on QEMUs version?
> + cpu->isar.mvfr0 = 0x10110221;
> + cpu->isar.mvfr1 = 0x11000011;
> + cpu->ctr = 0x83338003;
> + cpu->reset_sctlr = 0x00c50078;
> + cpu->isar.id_pfr0 = 0x00001231;
> + cpu->isar.id_pfr1 = 0x00000011;
> + cpu->isar.id_dfr0 = 0x02010444;
> + cpu->id_afr0 = 0x00000000;
> + cpu->isar.id_mmfr0 = 0x00100103;
the TRM says [11:8] Outermost shareability 0x0 L1 cache coherency not supported.
> + cpu->isar.id_mmfr1 = 0x40000000;
> + cpu->isar.id_mmfr2 = 0x01230000;
> + cpu->isar.id_mmfr3 = 0x00102211;
> + cpu->isar.id_isar0 = 0x00101111;
> + cpu->isar.id_isar1 = 0x13112111;
> + cpu->isar.id_isar2 = 0x21232041;
> + cpu->isar.id_isar3 = 0x11112131;
> + cpu->isar.id_isar4 = 0x00011142;
> + cpu->isar.dbgdidr = 0x1203f001;
> + cpu->clidr = 0x09200003;
I'm fairly sure these depend on the part as well although it makes no
difference to our emulation.
> + cpu->ccsidr[0] = 0x701fe00a;
> + cpu->ccsidr[1] = 0x203fe00a;
> +}
> +
> static const ARMCPRegInfo cortexa9_cp_reginfo[] = {
> /*
> * power_control should be set to maximum latency. Again,
> @@ -1019,6 +1055,7 @@ static const ARMCPUInfo arm_tcg_cpus[] = {
> { .name = "arm1136", .initfn = arm1136_initfn },
> { .name = "arm1176", .initfn = arm1176_initfn },
> { .name = "arm11mpcore", .initfn = arm11mpcore_initfn },
> + { .name = "cortext-a5", .initfn = cortex_a5_initfn },
Extra 't'
> { .name = "cortex-a7", .initfn = cortex_a7_initfn },
> { .name = "cortex-a8", .initfn = cortex_a8_initfn },
> { .name = "cortex-a9", .initfn = cortex_a9_initfn },
--
Alex Bennée
next prev parent reply other threads:[~2021-12-13 21:13 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-13 18:24 [PATCH] Target/arm: Implement Cortex-A5 Byron Lathi
2021-12-13 20:06 ` Philippe Mathieu-Daudé
2021-12-13 20:46 ` Richard Henderson
2021-12-13 21:02 ` Alex Bennée [this message]
2021-12-13 21:02 ` Alex Bennée
2021-12-13 21:46 ` Richard Henderson
2021-12-13 22:34 ` Byron Lathi
2021-12-13 22:34 ` Byron Lathi
2021-12-17 18:12 ` Alex Bennée
2021-12-17 18:12 ` Alex Bennée
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87wnk8i4x7.fsf@linaro.org \
--to=alex.bennee@linaro.org \
--cc=bslathi19@gmail.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.