armv8.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /*
  2. * Copyright (c) 2006-2020, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2011-09-15 Bernard first version
  9. */
  10. #ifndef __ARMV8_H__
  11. #define __ARMV8_H__
  12. /* the exception stack without VFP registers */
  13. struct rt_hw_exp_stack
  14. {
  15. unsigned long pc;
  16. unsigned long cpsr;
  17. unsigned long sp_el0;
  18. unsigned long x30;
  19. unsigned long fpcr;
  20. unsigned long fpsr;
  21. unsigned long x28;
  22. unsigned long x29;
  23. unsigned long x26;
  24. unsigned long x27;
  25. unsigned long x24;
  26. unsigned long x25;
  27. unsigned long x22;
  28. unsigned long x23;
  29. unsigned long x20;
  30. unsigned long x21;
  31. unsigned long x18;
  32. unsigned long x19;
  33. unsigned long x16;
  34. unsigned long x17;
  35. unsigned long x14;
  36. unsigned long x15;
  37. unsigned long x12;
  38. unsigned long x13;
  39. unsigned long x10;
  40. unsigned long x11;
  41. unsigned long x8;
  42. unsigned long x9;
  43. unsigned long x6;
  44. unsigned long x7;
  45. unsigned long x4;
  46. unsigned long x5;
  47. unsigned long x2;
  48. unsigned long x3;
  49. unsigned long x0;
  50. unsigned long x1;
  51. unsigned long long fpu[16];
  52. };
  53. #define SP_ELx ((unsigned long)0x01)
  54. #define SP_EL0 ((unsigned long)0x00)
  55. #define PSTATE_EL1 ((unsigned long)0x04)
  56. #define PSTATE_EL2 ((unsigned long)0x08)
  57. #define PSTATE_EL3 ((unsigned long)0x0c)
  58. rt_ubase_t rt_hw_get_current_el(void);
  59. void rt_hw_set_elx_env(void);
  60. void rt_hw_set_current_vbar(rt_ubase_t addr);
  61. #endif