| #include "core-isa.h" |
| |
| .macro vector name |
| |
| .section .vector.\name, "ax" |
| .global vector_\name |
| vector_\name\(): |
| j 1f |
| .literal_position |
| 1: |
| wsr a0, excsave1 |
| movi a0, 1f |
| ret.n |
| |
| .section .vector.\name\().text, "ax" |
| .literal_position |
| 1: |
| rsr a0, excsave1 |
| 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 |
| |
| #if XCHAL_HAVE_WINDOWED |
| vector window_overflow_4 |
| vector window_overflow_8 |
| vector window_overflow_12 |
| vector window_underflow_4 |
| vector window_underflow_8 |
| vector window_underflow_12 |
| #endif |
| |
| #if XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI >= 2 |
| vector level2 |
| #endif |
| #if XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI >= 3 |
| vector level3 |
| #endif |
| #if XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI >= 4 |
| vector level4 |
| #endif |
| #if XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI >= 5 |
| vector level5 |
| #endif |
| #if XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI >= 6 |
| vector level6 |
| #endif |
| #if XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI >= 7 |
| vector level7 |
| #endif |
| |
| vector kernel |
| vector user |
| vector double |