/ test / asm / wfi_int.asm
wfi_int.asm
 1  .include "init_regs.s"
 2  
 3  _start:
 4      INIT_REGS_LOAD
 5  
 6      li x1, 0x100 # set handler vector
 7      csrw mtvec, x1
 8      li x1, 0x10000 # enable custom interrupt 0
 9      csrw mie, x1
10      csrsi mstatus, 0x8 # machine interrupt enable
11      csrr x29, mstatus
12      li x3, 0
13  loop:
14      wfi
15      beq x2, x3, loop
16  infloop:
17      j infloop
18  
19  handler:
20      addi x30, x30, 1
21      addi x27, x27, 1
22      li x1, 0x10000
23      csrc mip, x1 # clear edge reported interrupt
24      beq x2, x3, skip
25      addi x3, x3, 1
26  skip:
27      mret
28  
29  .org 0x100
30      j handler
31  
32  INIT_REGS_ALLOCATION