qemu/hw/timer
Peter Maydell 1a9b30646e hw/timer/cmsdk-apb-timer: run or stop timer on writes to RELOAD and VALUE
If the CMSDK APB timer is set up with a zero RELOAD value
then it will count down to zero, fire once and then stay
at zero. From the point of view of the ptimer system, the
timer is disabled; but the enable bit in the CTRL register
is still set and if the guest subsequently writes to the
RELOAD or VALUE registers this should cause the timer to
start counting down again.

Add code to the write paths for RELOAD and VALUE so that
we correctly restart the timer in this situation.

Conversely, if the new RELOAD and VALUE are both zero,
we should stop the ptimer.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Tested-by: Guenter Roeck <linux@roeck-us.net>
Message-id: 20180703171044.9503-5-peter.maydell@linaro.org
2018-07-09 14:51:34 +01:00
..
Makefile.objs hw/timer: Add basic M41T80 emulation 2018-07-03 09:56:52 +10:00
a9gtimer.c maint: Fix macros with broken 'do/while(0); ' usage 2018-01-16 14:54:52 +01:00
allwinner-a10-pit.c hw/ptimer: Introduce timer policy feature 2016-09-22 18:13:06 +01:00
altera_timer.c altera_timer: fix incorrect memset 2017-06-04 18:42:55 +03:00
arm_mptimer.c arm_mptimer: Convert to use ptimer 2016-10-24 16:26:53 +01:00
arm_timer.c hw/ptimer: Introduce timer policy feature 2016-09-22 18:13:06 +01:00
armv7m_systick.c armv7m: Split systick out from NVIC 2017-02-28 16:18:49 +00:00
aspeed_timer.c aspeed/timer: use the APB frequency from the SCU 2018-06-26 17:50:42 +01:00
cadence_ttc.c maint: Fix macros with broken 'do/while(0); ' usage 2018-01-16 14:54:52 +01:00
cmsdk-apb-timer.c hw/timer/cmsdk-apb-timer: run or stop timer on writes to RELOAD and VALUE 2018-07-09 14:51:34 +01:00
digic-timer.c hw/digic: Add trailing '\n' to qemu_log() calls 2018-06-08 13:15:33 +01:00
ds1338.c i2c: Allow I2C devices to NAK start events 2017-01-09 11:40:20 +00:00
etraxfs_timer.c shutdown: Add source information to SHUTDOWN and RESET 2017-05-23 13:28:17 +02:00
exynos4210_mct.c hw/timer/exynos4210_mct: Remove unused defines 2017-06-13 14:56:57 +01:00
exynos4210_pwm.c hw/arm/exynos: Convert fprintf to qemu_log_mask/error_report 2017-04-20 17:39:17 +01:00
exynos4210_rtc.c hw/arm/exynos: Convert fprintf to qemu_log_mask/error_report 2017-04-20 17:39:17 +01:00
grlib_gptimer.c clean-up: removed duplicate #includes 2016-10-28 18:17:24 +03:00
hpet.c hpet: recover timer offset correctly 2018-01-12 13:22:02 +01:00
i8254.c qdev: use device_class_set_parent_realize/unrealize/reset() 2018-02-05 13:54:38 +01:00
i8254_common.c hw/timer/i8254: rename pit_init() -> i8254_pit_init() 2017-12-18 17:07:02 +03:00
imx_epit.c imx: Use 'const char', not 'char const' 2016-09-22 18:13:09 +01:00
imx_gpt.c i.MX: Add i.MX7 GPT variant 2018-02-09 10:40:30 +00:00
lm32_timer.c hw/ptimer: Introduce timer policy feature 2016-09-22 18:13:06 +01:00
m41t80.c hw/timer: Add basic M41T80 emulation 2018-07-03 09:56:52 +10:00
m48t59-internal.h hw/timer/mt48t59: Fix bit-rotten NVRAM_PRINTF format strings 2018-05-20 08:50:16 +03:00
m48t59-isa.c Split ISA and sysbus versions of m48t59 device 2017-02-06 12:33:21 +11:00
m48t59.c hw/timer/mt48t59: Fix bit-rotten NVRAM_PRINTF format strings 2018-05-20 08:50:16 +03:00
mc146818rtc.c qapi: Empty out qapi-schema.json 2018-03-02 13:45:50 -06:00
milkymist-sysctl.c shutdown: Add source information to SHUTDOWN and RESET 2017-05-23 13:28:17 +02:00
mips_gictimer.c hw/mips_gictimer: provide API for retrieving frequency 2017-02-21 22:24:58 +00:00
mss-timer.c maint: Fix macros with broken 'do/while(0); ' usage 2018-01-16 14:54:52 +01:00
omap_gptimer.c Replace all occurances of __FUNCTION__ with __func__ 2018-01-22 09:46:18 +01:00
omap_synctimer.c hw/timer/omap_synctimer.c: Don't use old_mmio 2017-09-21 16:34:27 +01:00
pl031.c migration: pre_save return int 2017-09-27 11:35:59 +01:00
puv3_ost.c hw/ptimer: Introduce timer policy feature 2016-09-22 18:13:06 +01:00
pxa2xx_timer.c hw/timer/pxa2xx_timer: replace hw_error() -> qemu_log_mask() 2018-01-11 13:25:38 +00:00
sh_timer.c hw: Do not include "exec/address-spaces.h" if it is not necessary 2018-06-01 14:15:10 +02:00
slavio_timer.c sun4m: remove include/hw/sparc/sun4m.h and all references to it 2018-01-09 21:48:20 +00:00
stm32f2xx_timer.c maint: Fix macros with broken 'do/while(0); ' usage 2018-01-16 14:54:52 +01:00
sun4v-rtc.c target-sparc: move common cpu initialisation routines to sparc64.c 2017-01-18 22:03:44 +01:00
trace-events xlnx-zynqmp-rtc: Add basic time support 2018-03-02 10:45:34 +00:00
twl92230.c hw/i2c: Use DeviceClass::realize instead of I2CSlaveClass::init 2018-06-01 15:14:31 +02:00
xilinx_timer.c hw/ptimer: Introduce timer policy feature 2016-09-22 18:13:06 +01:00
xlnx-zynqmp-rtc.c xlnx-zynqmp-rtc: Add basic time support 2018-03-02 10:45:34 +00:00