ble_task_scheduler.S 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. .global Ecall_M_Mode_Handler
  2. .global Ecall_U_Mode_Handler
  3. .global LLE_IRQHandler
  4. .extern g_LLE_IRQLibHandlerLocation
  5. .section .highcode,"ax",@progbits
  6. .align 2
  7. .func
  8. Ecall_M_Mode_Handler:
  9. Ecall_U_Mode_Handler:
  10. addi a1, x0, 0x20
  11. csrs 0x804, a1
  12. lw a1, 0 * 4( sp )
  13. csrw mepc, a1
  14. lw x1, 1 * 4( sp )
  15. lw x4, 2 * 4( sp )
  16. lw x5, 3 * 4( sp )
  17. lw x6, 4 * 4( sp )
  18. lw x7, 5 * 4( sp )
  19. lw x8, 6 * 4( sp )
  20. lw x9, 7 * 4( sp )
  21. lw x10, 8 * 4( sp )
  22. lw x11, 9 * 4( sp )
  23. lw x12, 10 * 4( sp )
  24. lw x13, 11 * 4( sp )
  25. lw x14, 12 * 4( sp )
  26. lw x15, 13 * 4( sp )
  27. lw x16, 14 * 4( sp )
  28. lw x17, 15 * 4( sp )
  29. lw x18, 16 * 4( sp )
  30. lw x19, 17 * 4( sp )
  31. lw x20, 18 * 4( sp )
  32. lw x21, 19 * 4( sp )
  33. lw x22, 20 * 4( sp )
  34. lw x23, 21 * 4( sp )
  35. lw x24, 22 * 4( sp )
  36. lw x25, 23 * 4( sp )
  37. lw x26, 24 * 4( sp )
  38. lw x27, 25 * 4( sp )
  39. lw x28, 26 * 4( sp )
  40. lw x29, 27 * 4( sp )
  41. lw x30, 28 * 4( sp )
  42. lw x31, 29 * 4( sp )
  43. addi sp, sp, 32*4
  44. mret
  45. .endfunc
  46. .section .highcode.LLE_IRQHandler,"ax",@progbits
  47. .align 2
  48. .func
  49. LLE_IRQHandler:
  50. addi sp, sp, -32*4
  51. sw x1, 1 * 4( sp )
  52. sw x4, 2 * 4( sp )
  53. sw x5, 3 * 4( sp )
  54. sw x6, 4 * 4( sp )
  55. sw x7, 5 * 4( sp )
  56. sw x8, 6 * 4( sp )
  57. sw x9, 7 * 4( sp )
  58. sw x10, 8 * 4( sp )
  59. sw x11, 9 * 4( sp )
  60. sw x12, 10 * 4( sp )
  61. sw x13, 11 * 4( sp )
  62. sw x14, 12 * 4( sp )
  63. sw x15, 13 * 4( sp )
  64. sw x16, 14 * 4( sp )
  65. sw x17, 15 * 4( sp )
  66. sw x18, 16 * 4( sp )
  67. sw x19, 17 * 4( sp )
  68. sw x20, 18 * 4( sp )
  69. sw x21, 19 * 4( sp )
  70. sw x22, 20 * 4( sp )
  71. sw x23, 21 * 4( sp )
  72. sw x24, 22 * 4( sp )
  73. sw x25, 23 * 4( sp )
  74. sw x26, 24 * 4( sp )
  75. sw x27, 25 * 4( sp )
  76. sw x28, 26 * 4( sp )
  77. sw x29, 27 * 4( sp )
  78. sw x30, 28 * 4( sp )
  79. sw x31, 29 * 4( sp )
  80. la a1, g_LLE_IRQLibHandlerLocation
  81. lw a0, 0(a1)
  82. jalr x1, 0(a0)
  83. lw x1, 1 * 4( sp )
  84. lw x4, 2 * 4( sp )
  85. lw x5, 3 * 4( sp )
  86. lw x6, 4 * 4( sp )
  87. lw x7, 5 * 4( sp )
  88. lw x8, 6 * 4( sp )
  89. lw x9, 7 * 4( sp )
  90. lw x10, 8 * 4( sp )
  91. lw x11, 9 * 4( sp )
  92. lw x12, 10 * 4( sp )
  93. lw x13, 11 * 4( sp )
  94. lw x14, 12 * 4( sp )
  95. lw x15, 13 * 4( sp )
  96. lw x16, 14 * 4( sp )
  97. lw x17, 15 * 4( sp )
  98. lw x18, 16 * 4( sp )
  99. lw x19, 17 * 4( sp )
  100. lw x20, 18 * 4( sp )
  101. lw x21, 19 * 4( sp )
  102. lw x22, 20 * 4( sp )
  103. lw x23, 21 * 4( sp )
  104. lw x24, 22 * 4( sp )
  105. lw x25, 23 * 4( sp )
  106. lw x26, 24 * 4( sp )
  107. lw x27, 25 * 4( sp )
  108. lw x28, 26 * 4( sp )
  109. lw x29, 27 * 4( sp )
  110. lw x30, 28 * 4( sp )
  111. lw x31, 29 * 4( sp )
  112. addi sp, sp, 32*4
  113. mret
  114. .endfunc