cpuport.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /*
  2. * Copyright (c) 2006-2021, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2018-10-03 Bernard The first version
  9. */
  10. #ifndef CPUPORT_H__
  11. #define CPUPORT_H__
  12. #include <rtconfig.h>
  13. /* bytes of register width */
  14. #ifdef ARCH_CPU_64BIT
  15. #define STORE sd
  16. #define LOAD ld
  17. #define REGBYTES 8
  18. #else
  19. // error here, not portable
  20. #endif
  21. #ifdef RISCV_U_MODE
  22. #define RISCV_USER_ENTRY 0xFFFFFFE000000000ULL
  23. #endif
  24. #ifdef RISCV_S_MODE
  25. //csr in s-mode
  26. // M/U/S Interrupt Registers
  27. #define SRC_XIE sie
  28. #define SRC_XIP sip
  29. #define SRC_XTVEC stvec
  30. #define SRC_XSTATUS sstatus
  31. #define SRC_XSCRATCH sscratch
  32. #define SRC_XEPC sepc
  33. #define SRC_XCAUSE scause
  34. #define SRC_XTVAL stval
  35. #define XRET sret
  36. #else
  37. //csr in m-mode
  38. // M/U/S Interrupt Registers
  39. #define SRC_XIE mie
  40. #define SRC_XIP mip
  41. #define SRC_XTVEC mtvec
  42. #define SRC_XSTATUS mstatus
  43. #define SRC_XSCRATCH mscratch
  44. #define SRC_XEPC mepc
  45. #define SRC_XCAUSE mcause
  46. #define SRC_XTVAL mtval
  47. #define XRET mret
  48. #endif
  49. #endif