vectors.S (1151B)
1 #include "core-isa.h" 2 3 .macro vector name 4 5 .section .vector.\name, "ax" 6 .global vector_\name 7 vector_\name\(): 8 j 1f 9 .literal_position 10 1: 11 wsr a0, excsave1 12 movi a0, 1f 13 ret.n 14 15 .section .vector.\name\().text, "ax" 16 .literal_position 17 1: 18 rsr a0, excsave1 19 wsr a2, excsave1 20 movi a2, handler_\name 21 l32i a2, a2, 0 22 beqz a2, 1f 23 jx a2 24 1: 25 movi a3, 1b 26 movi a2, 1 27 simcall 28 29 .align 4 30 .global handler_\name 31 handler_\name\(): .word 0 32 33 .endm 34 35 #if XCHAL_HAVE_WINDOWED 36 vector window_overflow_4 37 vector window_overflow_8 38 vector window_overflow_12 39 vector window_underflow_4 40 vector window_underflow_8 41 vector window_underflow_12 42 #endif 43 44 #if XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI >= 2 45 vector level2 46 #endif 47 #if XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI >= 3 48 vector level3 49 #endif 50 #if XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI >= 4 51 vector level4 52 #endif 53 #if XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI >= 5 54 vector level5 55 #endif 56 #if XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI >= 6 57 vector level6 58 #endif 59 #if XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI >= 7 60 vector level7 61 #endif 62 63 vector kernel 64 vector user 65 vector double