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