diff --git a/hw/timer/armv7m_systick.c b/hw/timer/armv7m_systick.c index b66199dce9..f540bad782 100644 --- a/hw/timer/armv7m_systick.c +++ b/hw/timer/armv7m_systick.c @@ -310,9 +310,11 @@ static void armv7m_systick_register_types(void) type_init(armv7m_systick_register_types) /* Begin LibAFL instrumentation */ +#define MAX_NUM_INTERRUPT 32 extern void libafl_send_irq(int irqn); -volatile unsigned int libafl_int_offset = 0; -static ptimer_state* mytimer; +volatile uint32_t libafl_interrupt_offsets[MAX_NUM_INTERRUPT]; +volatile uint64_t libafl_num_interrupts; +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*); static void libafl_timed_int_hook(void* arg) @@ -321,15 +323,18 @@ static void libafl_timed_int_hook(void* arg) } void libafl_start_int_timer( void ); void libafl_start_int_timer( void ) { - if (libafl_int_offset==0) {return;} - if (!mytimer) { - mytimer = ptimer_init(&libafl_timed_int_hook, NULL, 0); + if (libafl_num_interrupts == 0) {return;} + for (int i=0; i