rv_mtvec_map.h 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. /*
  2. * Copyright (c) 2006-2021, JuiceVm Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2021/04/22 Juice the first version
  9. */
  10. #ifndef __RV_MTVEC_MAP_H__
  11. #define __RV_MTVEC_MAP_H__
  12. #include "rv_config.h"
  13. #define rv_sim_pdev_base_addr (RV_CPU_SIM_RAM_START_ADDR+RV_CPU_SIM_RAM_SIZE)
  14. #define rv_sim_pdev_uart0_base_addr (rv_sim_pdev_base_addr)
  15. #define pdev_uart0_write_addr (rv_sim_pdev_uart0_base_addr)
  16. #define pdev_uart0_read_addr (rv_sim_pdev_uart0_base_addr+1)
  17. #define pdev_uart0_free_state 0x00
  18. #define pdev_uart0_readbusy_state 0x01
  19. #define pdev_uart0_state_addr (rv_sim_pdev_uart0_base_addr+2)
  20. #define rv_sim_pdev_mtime_base_addr (rv_sim_pdev_base_addr+3)
  21. #define pdev_mtime_mtime_addr (rv_sim_pdev_mtime_base_addr)
  22. #define pdev_mtime_mtimecmp_addr (rv_sim_pdev_mtime_base_addr+4)
  23. #define uart0_irq_flag 0
  24. #define uart0_irq_ecode 24
  25. #define RV_exception_Instruction_address_misaligned_IFLAG 0
  26. #define RV_exception_Instruction_address_misaligned_ECODE 0
  27. #define RV_exception_Instruction_access_fault_IFLAG 0
  28. #define RV_exception_Instruction_access_fault_ECODE 1
  29. #define RV_exception_Illegal_Instruction_IFLAG 0
  30. #define RV_exception_Illegal_Instruction_ECODE 2
  31. #define RV_exception_Breakpoint_IFLAG 0
  32. #define RV_exception_Breakpoint_ECODE 3
  33. #define RV_exception_LoadAddress_Misaligned_IFLAG 0
  34. #define RV_exception_LoadAddress_Misaligned_ECODE 4
  35. #define RV_exception_Load_access_fault_IFLAG 0
  36. #define RV_exception_Load_access_fault_ECODE 5
  37. #define RV_exception_Store_or_AMO_Address_Misaligned_IFLAG 0
  38. #define RV_exception_Store_or_AMO_Address_Misaligned_ECODE 6
  39. #define RV_exception_Store_or_AMO_access_fault_IFLAG 0
  40. #define RV_exception_Store_or_AMO_access_fault_ECODE 7
  41. #define RV_exception_Environment_call_from_Umode_IFLAG 0
  42. #define RV_exception_Environment_call_from_Umode_ECODE 8
  43. #define RV_exception_Environment_call_from_Smode_IFLAG 0
  44. #define RV_exception_Environment_call_from_Smode_ECODE 9
  45. #define RV_exception_Environment_Call_FromMachine_IFLAG 0
  46. #define RV_exception_Environment_Call_FromMachine_ECODE 11
  47. #define RV_exception_FloatingPoint_Disabled_IFLAG
  48. #define RV_exception_FloatingPoint_Disabled_ECODE
  49. #define RV_exception_Instruction_page_fault_IFLAG 0
  50. #define RV_exception_Instruction_page_fault_ECODE 12
  51. #define RV_exception_Load_page_fault_IFLAG 0
  52. #define RV_exception_Load_page_fault_ECODE 13
  53. #define RV_exception_Store_or_AMO_page_fault_IFLAG 0
  54. #define RV_exception_Store_or_AMO_page_fault_ECODE 15
  55. // Interrupt Exception Code Description
  56. // 1 0 Reserved
  57. // 1 1 Supervisor software interrupt not support
  58. // 1 2 Reserved
  59. // 1 3 Machine software interrupt not support
  60. // 1 4 Reserved
  61. // 1 5 Supervisor timer interrupt not support
  62. // 1 6 Reserved
  63. // 1 7 Machine timer interrupt support
  64. // 1 8 Reserved
  65. // 1 9 Supervisor external interrupt not support
  66. // 1 10 Reserved
  67. // 1 11 Machine external interrupt not support
  68. // 1 12 Reserved
  69. // 1 13 Reserved
  70. // 1 14 Reserved
  71. // 1 15 Reserved
  72. // // 1 ≥16 Designated for platform use
  73. // 0 0 Instruction address misaligned not support
  74. // 0 1 Instruction access fault not support
  75. // 0 2 Illegal instruction support
  76. // 0 3 Breakpoint support
  77. // 0 4 Load address misaligned support
  78. // 0 5 Load access fault not support
  79. // 0 6 Store/AMO address misaligned support
  80. // 0 7 Store/AMO access fault not support
  81. // 0 8 Environment call from U-mode not support
  82. // 0 9 Environment call from S-mode not support
  83. // 0 10 Reserved
  84. // 0 11 Environment call from M-mode support
  85. // 0 12 Instruction page fault not support
  86. // 0 13 Load page fault not support
  87. // 0 14 Reserved
  88. // 0 15 Store/AMO page fault not support
  89. // 0 16-23 Reserved
  90. // // 0 24–31 Designated for custom use
  91. // 0 32-47 Reserved
  92. // // 0 48–63 Designated for custom use
  93. // 0 ≥64 Reserved
  94. // #define mtime_irq_flag 1
  95. // #define mtime_irq_ecode 7
  96. #define RV_Supervisor_software_interrupt_IFLAG 1
  97. #define RV_Supervisor_software_interrupt_ECODE 1
  98. #define RV_Machine_software_interrupt_IFLAG 1
  99. #define RV_Machine_software_interrupt_ECODE 3
  100. #define RV_Supervisor_timer_interrupt_IFLAG 1
  101. #define RV_Supervisor_timer_interrupt_ECODE 5
  102. #define RV_Machine_timer_interrupt_IFLAG 1
  103. #define RV_Machine_timer_interrupt_ECODE 7
  104. #define RV_Supervisor_external_interrupt_IFLAG 1
  105. #define RV_Supervisor_external_interrupt_ECODE 9
  106. #define RV_Machine_external_interrupt_IFLAG 1
  107. #define RV_Machine_external_interrupt_ECODE 10
  108. #endif // __RV_MTVEC_MAP_H__