xref: /qemu/tests/tcg/xtensa/vectors.S (revision 4179575898fcc17c5e67306a357b8dfe64122e8e)
1f68774ccSMax Filippov#include "core-isa.h"
2f68774ccSMax Filippov
37d890b40SMax Filippov.macro vector name
47d890b40SMax Filippov
5*906da882SMax Filippov.section .vector.\name, "ax"
6*906da882SMax Filippov.global vector_\name
7*906da882SMax Filippovvector_\name\():
87d890b40SMax Filippov    j       1f
9*906da882SMax Filippov    .literal_position
107d890b40SMax Filippov1:
11*906da882SMax Filippov    wsr     a0, excsave1
12*906da882SMax Filippov    movi    a0, 1f
13*906da882SMax Filippov    ret.n
14*906da882SMax Filippov
15*906da882SMax Filippov.section .vector.\name\().text, "ax"
16*906da882SMax Filippov    .literal_position
17*906da882SMax Filippov1:
18*906da882SMax Filippov    rsr     a0, excsave1
197d890b40SMax Filippov    wsr     a2, excsave1
207d890b40SMax Filippov    movi    a2, handler_\name
217d890b40SMax Filippov    l32i    a2, a2, 0
227d890b40SMax Filippov    beqz    a2, 1f
237d890b40SMax Filippov    jx      a2
247d890b40SMax Filippov1:
257d890b40SMax Filippov    movi    a3, 1b
267d890b40SMax Filippov    movi    a2, 1
277d890b40SMax Filippov    simcall
287d890b40SMax Filippov
297d890b40SMax Filippov.align 4
307d890b40SMax Filippov.global handler_\name
317d890b40SMax Filippovhandler_\name\(): .word 0
327d890b40SMax Filippov
337d890b40SMax Filippov.endm
347d890b40SMax Filippov
35f68774ccSMax Filippov#if XCHAL_HAVE_WINDOWED
367d890b40SMax Filippovvector window_overflow_4
377d890b40SMax Filippovvector window_overflow_8
387d890b40SMax Filippovvector window_overflow_12
397d890b40SMax Filippovvector window_underflow_4
407d890b40SMax Filippovvector window_underflow_8
417d890b40SMax Filippovvector window_underflow_12
42f68774ccSMax Filippov#endif
437d890b40SMax Filippov
44f68774ccSMax Filippov#if XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI >= 2
457d890b40SMax Filippovvector level2
46f68774ccSMax Filippov#endif
47f68774ccSMax Filippov#if XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI >= 3
487d890b40SMax Filippovvector level3
49f68774ccSMax Filippov#endif
50f68774ccSMax Filippov#if XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI >= 4
517d890b40SMax Filippovvector level4
52f68774ccSMax Filippov#endif
53f68774ccSMax Filippov#if XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI >= 5
547d890b40SMax Filippovvector level5
55f68774ccSMax Filippov#endif
56f68774ccSMax Filippov#if XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI >= 6
577d890b40SMax Filippovvector level6
58f68774ccSMax Filippov#endif
59f68774ccSMax Filippov#if XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI >= 7
607d890b40SMax Filippovvector level7
61f68774ccSMax Filippov#endif
627d890b40SMax Filippov
637d890b40SMax Filippovvector kernel
647d890b40SMax Filippovvector user
657d890b40SMax Filippovvector double
66