target-arm: add cpu feature EL3 to CPUs with Security Extensions

Set ARM_FEATURE_EL3 feature for CPUs that implement Security Extensions.

Backports commit c0ccb02db46c72b4b0fa8a475a6890c1e28064f0 from qemu
This commit is contained in:
Fabian Aggeler 2018-02-12 10:20:42 -05:00 committed by Lioncash
parent e1576f314e
commit 912d271a9b
No known key found for this signature in database
GPG key ID: 4E3C3CC1031BA9C7

View file

@ -603,6 +603,7 @@ static void arm1176_initfn(struct uc_struct *uc, Object *obj, void *opaque)
set_feature(&cpu->env, ARM_FEATURE_DUMMY_C15_REGS); set_feature(&cpu->env, ARM_FEATURE_DUMMY_C15_REGS);
set_feature(&cpu->env, ARM_FEATURE_CACHE_DIRTY_REG); set_feature(&cpu->env, ARM_FEATURE_CACHE_DIRTY_REG);
set_feature(&cpu->env, ARM_FEATURE_CACHE_BLOCK_OPS); set_feature(&cpu->env, ARM_FEATURE_CACHE_BLOCK_OPS);
set_feature(&cpu->env, ARM_FEATURE_EL3);
cpu->midr = 0x410fb767; cpu->midr = 0x410fb767;
cpu->reset_fpsid = 0x410120b5; cpu->reset_fpsid = 0x410120b5;
cpu->mvfr0 = 0x11111111; cpu->mvfr0 = 0x11111111;
@ -691,6 +692,7 @@ static void cortex_a8_initfn(struct uc_struct *uc, Object *obj, void *opaque)
set_feature(&cpu->env, ARM_FEATURE_NEON); set_feature(&cpu->env, ARM_FEATURE_NEON);
set_feature(&cpu->env, ARM_FEATURE_THUMB2EE); set_feature(&cpu->env, ARM_FEATURE_THUMB2EE);
set_feature(&cpu->env, ARM_FEATURE_DUMMY_C15_REGS); set_feature(&cpu->env, ARM_FEATURE_DUMMY_C15_REGS);
set_feature(&cpu->env, ARM_FEATURE_EL3);
cpu->midr = 0x410fc080; cpu->midr = 0x410fc080;
cpu->reset_fpsid = 0x410330c0; cpu->reset_fpsid = 0x410330c0;
cpu->mvfr0 = 0x11110222; cpu->mvfr0 = 0x11110222;
@ -755,6 +757,7 @@ static void cortex_a9_initfn(struct uc_struct *uc, Object *obj, void *opaque)
set_feature(&cpu->env, ARM_FEATURE_VFP_FP16); set_feature(&cpu->env, ARM_FEATURE_VFP_FP16);
set_feature(&cpu->env, ARM_FEATURE_NEON); set_feature(&cpu->env, ARM_FEATURE_NEON);
set_feature(&cpu->env, ARM_FEATURE_THUMB2EE); set_feature(&cpu->env, ARM_FEATURE_THUMB2EE);
set_feature(&cpu->env, ARM_FEATURE_EL3);
/* Note that A9 supports the MP extensions even for /* Note that A9 supports the MP extensions even for
* A9UP and single-core A9MP (which are both different * A9UP and single-core A9MP (which are both different
* and valid configurations; we don't model A9UP). * and valid configurations; we don't model A9UP).
@ -822,6 +825,7 @@ static void cortex_a15_initfn(struct uc_struct *uc, Object *obj, void *opaque)
set_feature(&cpu->env, ARM_FEATURE_DUMMY_C15_REGS); set_feature(&cpu->env, ARM_FEATURE_DUMMY_C15_REGS);
set_feature(&cpu->env, ARM_FEATURE_CBAR_RO); set_feature(&cpu->env, ARM_FEATURE_CBAR_RO);
set_feature(&cpu->env, ARM_FEATURE_LPAE); set_feature(&cpu->env, ARM_FEATURE_LPAE);
set_feature(&cpu->env, ARM_FEATURE_EL3);
cpu->kvm_target = QEMU_KVM_ARM_TARGET_CORTEX_A15; cpu->kvm_target = QEMU_KVM_ARM_TARGET_CORTEX_A15;
cpu->midr = 0x412fc0f1; cpu->midr = 0x412fc0f1;
cpu->reset_fpsid = 0x410430f0; cpu->reset_fpsid = 0x410430f0;