excpt_isr.S 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. # Keep each function in a separate named section
  2. #define _FUNCTION_SECTIONS_
  3. #include <mips/regdef.h>
  4. #include <mips/asm.h>
  5. #include <mips/cpu.h>
  6. #define VEC_SPACE 32
  7. LEAF(__isr_vec)
  8. .set push
  9. .set noat
  10. AENT(__isr_vec_000)
  11. li k0, 0
  12. LA k1, _risc_isr_sw0
  13. beqz k1, 1f
  14. jr k1
  15. .org VEC_SPACE
  16. AENT(__isr_vec_001)
  17. li k0, 1
  18. LA k1, _risc_isr_sw1
  19. beqz k1, 1f
  20. jr k1
  21. .org 2 * VEC_SPACE
  22. AENT(__isr_vec_002)
  23. li k0, 2
  24. LA k1, _risc_isr_hw0
  25. beqz k1, 1f
  26. jr k1
  27. .org 3 * VEC_SPACE
  28. AENT(__isr_vec_003)
  29. li k0, 3
  30. LA k1, _risc_isr_hw1
  31. beqz k1, 1f
  32. jr k1
  33. .org 4 * VEC_SPACE
  34. AENT(__isr_vec_004)
  35. li k0, 4
  36. LA k1, _risc_isr_hw2
  37. beqz k1, 1f
  38. jr k1
  39. .org 5 * VEC_SPACE
  40. AENT(__isr_vec_005)
  41. li k0, 5
  42. LA k1, _risc_isr_hw3
  43. beqz k1, 1f
  44. jr k1
  45. .org 6 * VEC_SPACE
  46. AENT(__isr_vec_006)
  47. li k0, 6
  48. LA k1, _risc_isr_hw4
  49. beqz k1, 1f
  50. jr k1
  51. .org 7 * VEC_SPACE
  52. AENT(__isr_vec_007)
  53. li k0, 7
  54. LA k1, _risc_isr_hw5
  55. beqz k1, 1f
  56. jr k1
  57. .org 8 * VEC_SPACE
  58. AENT(__isr_vec_fallback)
  59. .weak _risc_interrupt
  60. li k0, -1
  61. 1:
  62. LA k1, _risc_interrupt
  63. beqz k1, 1b
  64. jr k1
  65. .set pop
  66. END(__isr_vec)