diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2024-07-10 10:53:05 +0200 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2024-07-22 19:19:44 +0200 |
commit | 9eb7fad3546a89ee7cf0e90f5b1daccf89725cea (patch) | |
tree | 4ffdf168c0322469c7824739a2495a4d41526d18 | |
parent | f0ccf770789e48b7a73497b465fdc892d28c1339 (diff) | |
download | qemu-9eb7fad3546a89ee7cf0e90f5b1daccf89725cea.zip qemu-9eb7fad3546a89ee7cf0e90f5b1daccf89725cea.tar.gz qemu-9eb7fad3546a89ee7cf0e90f5b1daccf89725cea.tar.bz2 |
hpet: ignore high bits of comparator in 32-bit mode
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r-- | hw/timer/hpet.c | 4 | ||||
-rw-r--r-- | hw/timer/trace-events | 1 |
2 files changed, 5 insertions, 0 deletions
diff --git a/hw/timer/hpet.c b/hw/timer/hpet.c index 58073df..bbb1e5f 100644 --- a/hw/timer/hpet.c +++ b/hw/timer/hpet.c @@ -585,6 +585,10 @@ static void hpet_ram_write(void *opaque, hwaddr addr, } break; case HPET_TN_CMP + 4: // comparator register high order + if (timer->config & HPET_TN_32BIT) { + trace_hpet_ram_write_invalid_tn_cmp(); + break; + } trace_hpet_ram_write_tn_cmp(4); if (!timer_is_periodic(timer) || (timer->config & HPET_TN_SETVAL)) { diff --git a/hw/timer/trace-events b/hw/timer/trace-events index de769f4..a5fafbc 100644 --- a/hw/timer/trace-events +++ b/hw/timer/trace-events @@ -111,6 +111,7 @@ hpet_ram_write_timer_id(uint64_t timer_id) "hpet_ram_writel timer_id = 0x%" PRIx hpet_ram_write_tn_cfg(void) "hpet_ram_writel HPET_TN_CFG" hpet_ram_write_invalid_tn_cfg(uint8_t reg_off) "invalid HPET_TN_CFG + %" PRIu8 " write" hpet_ram_write_tn_cmp(uint8_t reg_off) "hpet_ram_writel HPET_TN_CMP + %" PRIu8 +hpet_ram_write_invalid_tn_cmp(void) "invalid HPET_TN_CMP + 4 write" hpet_ram_write_invalid(void) "invalid hpet_ram_writel" hpet_ram_write_counter_write_while_enabled(void) "Writing counter while HPET enabled!" hpet_ram_write_counter_written(uint8_t reg_off, uint64_t value, uint64_t counter) "HPET counter + %" PRIu8 "written. crt = 0x%" PRIx64 " -> 0x%" PRIx64 |