xref: /openbmc/qemu/tests/tcg/xtensa/vectors.S (revision 4179575898fcc17c5e67306a357b8dfe64122e8e)
1f68774ccSMax Filippov#include "core-isa.h"
2f68774ccSMax Filippov
3c09015ddSAnthony Liguori.macro vector name
4c09015ddSAnthony Liguori
5*906da882SMax Filippov.section .vector.\name, "ax"
6*906da882SMax Filippov.global vector_\name
7*906da882SMax Filippovvector_\name\():
8c09015ddSAnthony Liguori    j       1f
9*906da882SMax Filippov    .literal_position
10c09015ddSAnthony Liguori1:
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
19c09015ddSAnthony Liguori    wsr     a2, excsave1
20c09015ddSAnthony Liguori    movi    a2, handler_\name
21c09015ddSAnthony Liguori    l32i    a2, a2, 0
22c09015ddSAnthony Liguori    beqz    a2, 1f
23c09015ddSAnthony Liguori    jx      a2
24c09015ddSAnthony Liguori1:
25c09015ddSAnthony Liguori    movi    a3, 1b
26c09015ddSAnthony Liguori    movi    a2, 1
27c09015ddSAnthony Liguori    simcall
28c09015ddSAnthony Liguori
29c09015ddSAnthony Liguori.align 4
30c09015ddSAnthony Liguori.global handler_\name
31c09015ddSAnthony Liguorihandler_\name\(): .word 0
32c09015ddSAnthony Liguori
33c09015ddSAnthony Liguori.endm
34c09015ddSAnthony Liguori
35f68774ccSMax Filippov#if XCHAL_HAVE_WINDOWED
36c09015ddSAnthony Liguorivector window_overflow_4
37c09015ddSAnthony Liguorivector window_overflow_8
38c09015ddSAnthony Liguorivector window_overflow_12
39c09015ddSAnthony Liguorivector window_underflow_4
40c09015ddSAnthony Liguorivector window_underflow_8
41c09015ddSAnthony Liguorivector window_underflow_12
42f68774ccSMax Filippov#endif
43c09015ddSAnthony Liguori
44f68774ccSMax Filippov#if XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI >= 2
45c09015ddSAnthony Liguorivector level2
46f68774ccSMax Filippov#endif
47f68774ccSMax Filippov#if XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI >= 3
48c09015ddSAnthony Liguorivector level3
49f68774ccSMax Filippov#endif
50f68774ccSMax Filippov#if XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI >= 4
51c09015ddSAnthony Liguorivector level4
52f68774ccSMax Filippov#endif
53f68774ccSMax Filippov#if XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI >= 5
54c09015ddSAnthony Liguorivector level5
55f68774ccSMax Filippov#endif
56f68774ccSMax Filippov#if XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI >= 6
57c09015ddSAnthony Liguorivector level6
58f68774ccSMax Filippov#endif
59f68774ccSMax Filippov#if XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI >= 7
60c09015ddSAnthony Liguorivector level7
61f68774ccSMax Filippov#endif
62c09015ddSAnthony Liguori
63c09015ddSAnthony Liguorivector kernel
64c09015ddSAnthony Liguorivector user
65c09015ddSAnthony Liguorivector double
66