From eb21c70c3bfb729e26dc7fb383e33a9c88eda5db Mon Sep 17 00:00:00 2001 From: Alwin Berger Date: Thu, 6 Jun 2024 14:41:38 +0200 Subject: [PATCH] read shift for timers, bump interrupt count --- hw/timer/armv7m_systick.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/hw/timer/armv7m_systick.c b/hw/timer/armv7m_systick.c index f540bad782..0feb3b7077 100644 --- a/hw/timer/armv7m_systick.c +++ b/hw/timer/armv7m_systick.c @@ -310,10 +310,12 @@ static void armv7m_systick_register_types(void) type_init(armv7m_systick_register_types) /* Begin LibAFL instrumentation */ -#define MAX_NUM_INTERRUPT 32 +#include "qemu/seqlock.h" +#include "sysemu/cpu-timers-internal.h" +#define MAX_NUM_INTERRUPT 128 extern void libafl_send_irq(int irqn); volatile uint32_t libafl_interrupt_offsets[MAX_NUM_INTERRUPT]; -volatile uint64_t libafl_num_interrupts; +volatile uint64_t libafl_num_interrupts = 0; static ptimer_state* libafl_interrupt_timers[MAX_NUM_INTERRUPT] = {0}; /* This can be moved to a helper function later */ static void libafl_timed_int_hook(void*); @@ -332,7 +334,7 @@ void libafl_start_int_timer( void ) { ptimer_transaction_begin(libafl_interrupt_timers[i]); ptimer_stop(libafl_interrupt_timers[i]); ptimer_set_period(libafl_interrupt_timers[i], libafl_interrupt_offsets[i]); - ptimer_set_count(libafl_interrupt_timers[i], 16); // needs to be in sync with shift + ptimer_set_count(libafl_interrupt_timers[i], 1 << timers_state.icount_time_shift); // needs to be in sync with shift ptimer_run(libafl_interrupt_timers[i], 1); ptimer_transaction_commit(libafl_interrupt_timers[i]); }