target/arm: Add cortex-a35
Add cortex A35 core and enable it for virt board. Signed-off-by: Hao Wu <wuhaotsh@google.com> Reviewed-by: Joe Komlodi <komlodi@google.com> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Message-Id: <20220819002015.1663247-1-wuhaotsh@google.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
79dfa177ae
commit
3b16766b5a
@ -52,6 +52,7 @@ Supported guest CPU types:
|
||||
|
||||
- ``cortex-a7`` (32-bit)
|
||||
- ``cortex-a15`` (32-bit; the default)
|
||||
- ``cortex-a35`` (64-bit)
|
||||
- ``cortex-a53`` (64-bit)
|
||||
- ``cortex-a57`` (64-bit)
|
||||
- ``cortex-a72`` (64-bit)
|
||||
|
@ -199,6 +199,7 @@ static const int a15irqmap[] = {
|
||||
static const char *valid_cpus[] = {
|
||||
ARM_CPU_TYPE_NAME("cortex-a7"),
|
||||
ARM_CPU_TYPE_NAME("cortex-a15"),
|
||||
ARM_CPU_TYPE_NAME("cortex-a35"),
|
||||
ARM_CPU_TYPE_NAME("cortex-a53"),
|
||||
ARM_CPU_TYPE_NAME("cortex-a57"),
|
||||
ARM_CPU_TYPE_NAME("cortex-a72"),
|
||||
|
@ -36,6 +36,85 @@
|
||||
#include "hw/qdev-properties.h"
|
||||
#include "internals.h"
|
||||
|
||||
static void aarch64_a35_initfn(Object *obj)
|
||||
{
|
||||
ARMCPU *cpu = ARM_CPU(obj);
|
||||
|
||||
cpu->dtb_compatible = "arm,cortex-a35";
|
||||
set_feature(&cpu->env, ARM_FEATURE_V8);
|
||||
set_feature(&cpu->env, ARM_FEATURE_NEON);
|
||||
set_feature(&cpu->env, ARM_FEATURE_GENERIC_TIMER);
|
||||
set_feature(&cpu->env, ARM_FEATURE_AARCH64);
|
||||
set_feature(&cpu->env, ARM_FEATURE_CBAR_RO);
|
||||
set_feature(&cpu->env, ARM_FEATURE_EL2);
|
||||
set_feature(&cpu->env, ARM_FEATURE_EL3);
|
||||
set_feature(&cpu->env, ARM_FEATURE_PMU);
|
||||
|
||||
/* From B2.2 AArch64 identification registers. */
|
||||
cpu->midr = 0x411fd040;
|
||||
cpu->revidr = 0;
|
||||
cpu->ctr = 0x84448004;
|
||||
cpu->isar.id_pfr0 = 0x00000131;
|
||||
cpu->isar.id_pfr1 = 0x00011011;
|
||||
cpu->isar.id_dfr0 = 0x03010066;
|
||||
cpu->id_afr0 = 0;
|
||||
cpu->isar.id_mmfr0 = 0x10201105;
|
||||
cpu->isar.id_mmfr1 = 0x40000000;
|
||||
cpu->isar.id_mmfr2 = 0x01260000;
|
||||
cpu->isar.id_mmfr3 = 0x02102211;
|
||||
cpu->isar.id_isar0 = 0x02101110;
|
||||
cpu->isar.id_isar1 = 0x13112111;
|
||||
cpu->isar.id_isar2 = 0x21232042;
|
||||
cpu->isar.id_isar3 = 0x01112131;
|
||||
cpu->isar.id_isar4 = 0x00011142;
|
||||
cpu->isar.id_isar5 = 0x00011121;
|
||||
cpu->isar.id_aa64pfr0 = 0x00002222;
|
||||
cpu->isar.id_aa64pfr1 = 0;
|
||||
cpu->isar.id_aa64dfr0 = 0x10305106;
|
||||
cpu->isar.id_aa64dfr1 = 0;
|
||||
cpu->isar.id_aa64isar0 = 0x00011120;
|
||||
cpu->isar.id_aa64isar1 = 0;
|
||||
cpu->isar.id_aa64mmfr0 = 0x00101122;
|
||||
cpu->isar.id_aa64mmfr1 = 0;
|
||||
cpu->clidr = 0x0a200023;
|
||||
cpu->dcz_blocksize = 4;
|
||||
|
||||
/* From B2.4 AArch64 Virtual Memory control registers */
|
||||
cpu->reset_sctlr = 0x00c50838;
|
||||
|
||||
/* From B2.10 AArch64 performance monitor registers */
|
||||
cpu->isar.reset_pmcr_el0 = 0x410a3000;
|
||||
|
||||
/* From B2.29 Cache ID registers */
|
||||
cpu->ccsidr[0] = 0x700fe01a; /* 32KB L1 dcache */
|
||||
cpu->ccsidr[1] = 0x201fe00a; /* 32KB L1 icache */
|
||||
cpu->ccsidr[2] = 0x703fe03a; /* 512KB L2 cache */
|
||||
|
||||
/* From B3.5 VGIC Type register */
|
||||
cpu->gic_num_lrs = 4;
|
||||
cpu->gic_vpribits = 5;
|
||||
cpu->gic_vprebits = 5;
|
||||
cpu->gic_pribits = 5;
|
||||
|
||||
/* From C6.4 Debug ID Register */
|
||||
cpu->isar.dbgdidr = 0x3516d000;
|
||||
/* From C6.5 Debug Device ID Register */
|
||||
cpu->isar.dbgdevid = 0x00110f13;
|
||||
/* From C6.6 Debug Device ID Register 1 */
|
||||
cpu->isar.dbgdevid1 = 0x2;
|
||||
|
||||
/* From Cortex-A35 SIMD and Floating-point Support r1p0 */
|
||||
/* From 3.2 AArch32 register summary */
|
||||
cpu->reset_fpsid = 0x41034043;
|
||||
|
||||
/* From 2.2 AArch64 register summary */
|
||||
cpu->isar.mvfr0 = 0x10110222;
|
||||
cpu->isar.mvfr1 = 0x12111111;
|
||||
cpu->isar.mvfr2 = 0x00000043;
|
||||
|
||||
/* These values are the same with A53/A57/A72. */
|
||||
define_cortex_a72_a57_a53_cp_reginfo(cpu);
|
||||
}
|
||||
|
||||
static void aarch64_a57_initfn(Object *obj)
|
||||
{
|
||||
@ -1158,6 +1237,7 @@ static void aarch64_a64fx_initfn(Object *obj)
|
||||
}
|
||||
|
||||
static const ARMCPUInfo aarch64_cpus[] = {
|
||||
{ .name = "cortex-a35", .initfn = aarch64_a35_initfn },
|
||||
{ .name = "cortex-a57", .initfn = aarch64_a57_initfn },
|
||||
{ .name = "cortex-a53", .initfn = aarch64_a53_initfn },
|
||||
{ .name = "cortex-a72", .initfn = aarch64_a72_initfn },
|
||||
|
Loading…
Reference in New Issue
Block a user