mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-12-21 15:08:36 -07:00
Previous implementation of MIPS cp0_timer computes a cp0_count_ns based on input clock. However rounding error of cp0_count_ns can affect precision of cp0_timer. Using clock API and a divider for cp0_timer, so we can use clock_ns_to_ticks/clock_ns_to_ticks to avoid rounding issue. Also workaround the situation that in such handler flow: count = read_c0_count() write_c0_compare(count) If timer had not progressed when compare was written, the interrupt would trigger again. Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Message-Id: <20230521110037.90049-1-jiaxun.yang@flygoat.com> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> |
||
|---|---|---|
| .. | ||
| addr.c | ||
| cp0.c | ||
| cp0_timer.c | ||
| machine.c | ||
| meson.build | ||
| mips-qmp-cmds.c | ||
| physaddr.c | ||