mirror of https://github.com/xemu-project/xemu.git
target/arm: Handle HCR_EL2 accesses for bits introduced with FEAT_NV
FEAT_NV defines three new bits in HCR_EL2: NV, NV1 and AT. When the feature is enabled, allow these bits to be written, and flush the TLBs for the bits which affect page table interpretation. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Tested-by: Miguel Luis <miguel.luis@oracle.com>
This commit is contained in:
parent
82a65e3188
commit
67e55c73c3
|
@ -839,6 +839,11 @@ static inline bool isar_feature_aa64_e0pd(const ARMISARegisters *id)
|
|||
return FIELD_EX64(id->id_aa64mmfr2, ID_AA64MMFR2, E0PD) != 0;
|
||||
}
|
||||
|
||||
static inline bool isar_feature_aa64_nv(const ARMISARegisters *id)
|
||||
{
|
||||
return FIELD_EX64(id->id_aa64mmfr2, ID_AA64MMFR2, NV) != 0;
|
||||
}
|
||||
|
||||
static inline bool isar_feature_aa64_pmuv3p1(const ARMISARegisters *id)
|
||||
{
|
||||
return FIELD_EX64(id->id_aa64dfr0, ID_AA64DFR0, PMUVER) >= 4 &&
|
||||
|
|
|
@ -5815,6 +5815,9 @@ static void do_hcr_write(CPUARMState *env, uint64_t value, uint64_t valid_mask)
|
|||
if (cpu_isar_feature(aa64_rme, cpu)) {
|
||||
valid_mask |= HCR_GPF;
|
||||
}
|
||||
if (cpu_isar_feature(aa64_nv, cpu)) {
|
||||
valid_mask |= HCR_NV | HCR_NV1 | HCR_AT;
|
||||
}
|
||||
}
|
||||
|
||||
if (cpu_isar_feature(any_evt, cpu)) {
|
||||
|
@ -5833,9 +5836,10 @@ static void do_hcr_write(CPUARMState *env, uint64_t value, uint64_t valid_mask)
|
|||
* HCR_DC disables stage1 and enables stage2 translation
|
||||
* HCR_DCT enables tagging on (disabled) stage1 translation
|
||||
* HCR_FWB changes the interpretation of stage2 descriptor bits
|
||||
* HCR_NV and HCR_NV1 affect interpretation of descriptor bits
|
||||
*/
|
||||
if ((env->cp15.hcr_el2 ^ value) &
|
||||
(HCR_VM | HCR_PTW | HCR_DC | HCR_DCT | HCR_FWB)) {
|
||||
(HCR_VM | HCR_PTW | HCR_DC | HCR_DCT | HCR_FWB | HCR_NV | HCR_NV1)) {
|
||||
tlb_flush(CPU(cpu));
|
||||
}
|
||||
env->cp15.hcr_el2 = value;
|
||||
|
|
Loading…
Reference in New Issue