read shift for timers, bump interrupt count

This commit is contained in:
Alwin Berger 2024-06-06 14:41:38 +02:00
parent 8e14d45910
commit eb21c70c3b

View File

@ -310,10 +310,12 @@ static void armv7m_systick_register_types(void)
type_init(armv7m_systick_register_types) type_init(armv7m_systick_register_types)
/* Begin LibAFL instrumentation */ /* 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); extern void libafl_send_irq(int irqn);
volatile uint32_t libafl_interrupt_offsets[MAX_NUM_INTERRUPT]; 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}; static ptimer_state* libafl_interrupt_timers[MAX_NUM_INTERRUPT] = {0};
/* This can be moved to a helper function later */ /* This can be moved to a helper function later */
static void libafl_timed_int_hook(void*); 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_transaction_begin(libafl_interrupt_timers[i]);
ptimer_stop(libafl_interrupt_timers[i]); ptimer_stop(libafl_interrupt_timers[i]);
ptimer_set_period(libafl_interrupt_timers[i], libafl_interrupt_offsets[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_run(libafl_interrupt_timers[i], 1);
ptimer_transaction_commit(libafl_interrupt_timers[i]); ptimer_transaction_commit(libafl_interrupt_timers[i]);
} }