exception_gcc.S 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. /*
  2. * Copyright (c) 2006-2019, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2019-12-04 Jiaxun Yang Initial version
  9. */
  10. .section ".exc_vectors", "ax"
  11. .extern tlb_refill_handler
  12. .extern cache_error_handler
  13. .extern mips_irq_handle
  14. /* 0x0 - TLB refill handler */
  15. .global tlb_refill_exception
  16. .type tlb_refill_exception,@function
  17. ebase_start:
  18. tlb_refill_exception:
  19. b _general_exception_handler
  20. nop
  21. /* 0x100 - Cache error handler */
  22. .org ebase_start + 0x100
  23. j cache_error_handler
  24. nop
  25. /* 0x180 - Exception/Interrupt handler */
  26. .global general_exception
  27. .type general_exception,@function
  28. .org ebase_start + 0x180
  29. general_exception:
  30. b _general_exception_handler
  31. nop
  32. /* 0x200 - Special Exception Interrupt handler (when IV is set in CP0_CAUSE) */
  33. .global irq_exception
  34. .type irq_exception,@function
  35. .org ebase_start + 0x200
  36. irq_exception:
  37. b _general_exception_handler
  38. nop
  39. /* general exception handler */
  40. _general_exception_handler:
  41. .set noreorder
  42. la $k0, mips_irq_handle
  43. jr $k0
  44. nop
  45. .set reorder
  46. /* interrupt handler */
  47. _irq_handler:
  48. .set noreorder
  49. la $k0, mips_irq_handle
  50. jr $k0
  51. nop
  52. .set reorder