4 static volatile unsigned interrupt_count
;
5 static volatile unsigned local
;
7 static unsigned delta
= 0x100;
8 void *increment_count(unsigned hartid
, unsigned mcause
, void *mepc
, void *sp
)
11 // There is no guarantee that the interrupt is cleared immediately when
12 // MTIMECMP is written, so stick around here until that happens.
13 while (csr_read(mip
) & MIP_MTIP
) {
14 MTIMECMP
[hartid
] = MTIME
+ delta
;
23 unsigned hartid
= csr_read(mhartid
);
25 set_trap_handler(increment_count
);
26 MTIMECMP
[hartid
] = MTIME
- 1;
27 enable_timer_interrupts();