.option norvc .global _entry .global fromhost .global tohost .text _entry: la t0, exception_handler csrw mtvec, t0 csrr t1, mstatus # Setting bit number 9 (mstatus.VS) li t2, 1 slli t2, t2, 9 or t1, t1, t2 # Setting bit number 13 (mstatus.FS) li t3, 1 slli t3, t3, 13 or t1, t1, t3 csrw mstatus, t1 la t0, SNIPPY_ENTRY jalr t0 exception_handler: csrr x10, mcause # In case of breakpoint (Interrupt = 0, Exception code = 3) we finalize. # Otherwise it's not the expected behavior and we go into an infinite loop. li x11, 3 beq x10, x11, exit j infinite_loop exit: li ra, 1 la sp, tohost sd ra, 0(sp) infinite_loop: j infinite_loop .balign 64 tohost: .8byte 0x0 .balign 64 fromhost: .8byte 0x0