c66xx.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. /*
  2. * Copyright (c) 2021, Shenzhen Academy of Aerospace Technology
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2021-11-16 Dystopia the first version
  9. */
  10. #ifndef __C66XX_H__
  11. #define __C66XX_H__
  12. #include <c6x.h>
  13. #ifdef _BIG_ENDIAN
  14. #define REG_PAIR(odd, even) unsigned long odd; unsigned long even
  15. #else
  16. #define REG_PAIR(odd, even) unsigned long even; unsigned long odd
  17. #endif
  18. struct rt_hw_register
  19. {
  20. REG_PAIR(b17, b16);
  21. REG_PAIR(b19, b18);
  22. REG_PAIR(b21, b20);
  23. REG_PAIR(b23, b22);
  24. REG_PAIR(b25, b24);
  25. REG_PAIR(b27, b26);
  26. REG_PAIR(b29, b28);
  27. REG_PAIR(b31, b30);
  28. REG_PAIR(b1, b0);
  29. REG_PAIR(b3, b2);
  30. REG_PAIR(b5, b4);
  31. REG_PAIR(b7, b6);
  32. REG_PAIR(b9, b8);
  33. REG_PAIR(b11, b10);
  34. REG_PAIR(b13, b12);
  35. REG_PAIR(a17, a16);
  36. REG_PAIR(a19, a18);
  37. REG_PAIR(a21, a20);
  38. REG_PAIR(a23, a22);
  39. REG_PAIR(a25, a24);
  40. REG_PAIR(a27, a26);
  41. REG_PAIR(a29, a28);
  42. REG_PAIR(a31, a30);
  43. REG_PAIR(a1, a0);
  44. REG_PAIR(a3, a2);
  45. REG_PAIR(a5, a4);
  46. REG_PAIR(a7, a6);
  47. REG_PAIR(a9, a8);
  48. REG_PAIR(a11, a10);
  49. REG_PAIR(a13, a12);
  50. REG_PAIR(a15, a14);
  51. REG_PAIR(sp, dp);
  52. };
  53. struct rt_hw_exp_stack_register
  54. {
  55. REG_PAIR(tsr, orig_a4);
  56. REG_PAIR(rilc, ilc);
  57. REG_PAIR(pc, csr);
  58. struct rt_hw_register hw_register;
  59. };
  60. #define __dint() asm(" DINT")
  61. #define __rint() asm(" RINT")
  62. #define __system_call() asm(" SWE")
  63. #define __enter_idle() asm(" IDLE")
  64. #define __nop() asm(" NOP")
  65. #define __mfence() asm(" MFENCE")
  66. #define __SYSREG(ADDR, TYPE) (*(volatile TYPE*)(ADDR))
  67. #define __SYSREGA(ADDR, TYPE) ((volatile TYPE*)(ADDR))
  68. #endif /* __C66XX_H__ */