qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

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