.macro vector name

.section .vector.\name
    j       1f
.section .vector.\name\().text
1:
    wsr     a2, excsave1
    movi    a2, handler_\name
    l32i    a2, a2, 0
    beqz    a2, 1f
    jx      a2
1:
    movi    a3, 1b
    movi    a2, 1
    simcall

.align 4
.global handler_\name
handler_\name\(): .word 0

.endm

vector window_overflow_4
vector window_overflow_8
vector window_overflow_12
vector window_underflow_4
vector window_underflow_8
vector window_underflow_12

vector level2
vector level3
vector level4
vector level5
vector level6
vector level7

vector kernel
vector user
vector double