hvf: arm: Properly disable PMU
Setting pmu property used to have no effect for hvf so fix it. Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
e9e640148c
commit
e6fd3192ed
@ -1204,11 +1204,8 @@ static int hvf_sysreg_read(CPUState *cpu, uint32_t reg, uint64_t *val)
|
|||||||
ARMCPU *arm_cpu = ARM_CPU(cpu);
|
ARMCPU *arm_cpu = ARM_CPU(cpu);
|
||||||
CPUARMState *env = &arm_cpu->env;
|
CPUARMState *env = &arm_cpu->env;
|
||||||
|
|
||||||
|
if (arm_feature(env, ARM_FEATURE_PMU)) {
|
||||||
switch (reg) {
|
switch (reg) {
|
||||||
case SYSREG_CNTPCT_EL0:
|
|
||||||
*val = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) /
|
|
||||||
gt_cntfrq_period_ns(arm_cpu);
|
|
||||||
return 0;
|
|
||||||
case SYSREG_PMCR_EL0:
|
case SYSREG_PMCR_EL0:
|
||||||
*val = env->cp15.c9_pmcr;
|
*val = env->cp15.c9_pmcr;
|
||||||
return 0;
|
return 0;
|
||||||
@ -1243,6 +1240,14 @@ static int hvf_sysreg_read(CPUState *cpu, uint32_t reg, uint64_t *val)
|
|||||||
/* We can't really count anything yet, declare all events invalid */
|
/* We can't really count anything yet, declare all events invalid */
|
||||||
*val = 0;
|
*val = 0;
|
||||||
return 0;
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (reg) {
|
||||||
|
case SYSREG_CNTPCT_EL0:
|
||||||
|
*val = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) /
|
||||||
|
gt_cntfrq_period_ns(arm_cpu);
|
||||||
|
return 0;
|
||||||
case SYSREG_OSLSR_EL1:
|
case SYSREG_OSLSR_EL1:
|
||||||
*val = env->cp15.oslsr_el1;
|
*val = env->cp15.oslsr_el1;
|
||||||
return 0;
|
return 0;
|
||||||
@ -1486,6 +1491,7 @@ static int hvf_sysreg_write(CPUState *cpu, uint32_t reg, uint64_t val)
|
|||||||
SYSREG_OP2(reg),
|
SYSREG_OP2(reg),
|
||||||
val);
|
val);
|
||||||
|
|
||||||
|
if (arm_feature(env, ARM_FEATURE_PMU)) {
|
||||||
switch (reg) {
|
switch (reg) {
|
||||||
case SYSREG_PMCCNTR_EL0:
|
case SYSREG_PMCCNTR_EL0:
|
||||||
pmu_op_start(env);
|
pmu_op_start(env);
|
||||||
@ -1544,6 +1550,10 @@ static int hvf_sysreg_write(CPUState *cpu, uint32_t reg, uint64_t val)
|
|||||||
env->cp15.pmccfiltr_el0 = val & PMCCFILTR_EL0;
|
env->cp15.pmccfiltr_el0 = val & PMCCFILTR_EL0;
|
||||||
pmu_op_finish(env);
|
pmu_op_finish(env);
|
||||||
return 0;
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (reg) {
|
||||||
case SYSREG_OSLAR_EL1:
|
case SYSREG_OSLAR_EL1:
|
||||||
env->cp15.oslsr_el1 = val & 1;
|
env->cp15.oslsr_el1 = val & 1;
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user