diff options
author | Aaron Lindsay OS | 2019-02-01 15:55:45 +0100 |
---|---|---|
committer | Peter Maydell | 2019-02-01 15:55:45 +0100 |
commit | 4e7beb0cc0f3fb05f1c055113debaa0c7d34fc89 (patch) | |
tree | 25458d54a3b9c7dd01cac5c7bc666d9fde85cc7d /target/arm/cpu.h | |
parent | target/arm: Send interrupts on PMU counter overflow (diff) | |
download | qemu-4e7beb0cc0f3fb05f1c055113debaa0c7d34fc89.tar.gz qemu-4e7beb0cc0f3fb05f1c055113debaa0c7d34fc89.tar.xz qemu-4e7beb0cc0f3fb05f1c055113debaa0c7d34fc89.zip |
target/arm: Add a timer to predict PMU counter overflow
Make PMU overflow interrupts more accurate by using a timer to predict
when they will overflow rather than waiting for an event to occur which
allows us to otherwise check them.
Signed-off-by: Aaron Lindsay <aaron@os.amperecomputing.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20190124162401.5111-3-aaron@os.amperecomputing.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'target/arm/cpu.h')
-rw-r--r-- | target/arm/cpu.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/target/arm/cpu.h b/target/arm/cpu.h index b8161cb6d7..63934a200a 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -746,6 +746,11 @@ struct ARMCPU { /* Timers used by the generic (architected) timer */ QEMUTimer *gt_timer[NUM_GTIMERS]; + /* + * Timer used by the PMU. Its state is restored after migration by + * pmu_op_finish() - it does not need other handling during migration + */ + QEMUTimer *pmu_timer; /* GPIO outputs for generic timer */ qemu_irq gt_timer_outputs[NUM_GTIMERS]; /* GPIO output for GICv3 maintenance interrupt signal */ @@ -1005,6 +1010,11 @@ void pmccntr_op_finish(CPUARMState *env); void pmu_op_start(CPUARMState *env); void pmu_op_finish(CPUARMState *env); +/* + * Called when a PMU counter is due to overflow + */ +void arm_pmu_timer_cb(void *opaque); + /** * Functions to register as EL change hooks for PMU mode filtering */ |