armv8.h 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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. * 2011-09-15 Bernard first version
  9. * 2021-12-28 GuEe-GUI add fpu support
  10. */
  11. #ifndef __ARMV8_H__
  12. #define __ARMV8_H__
  13. #include <rtdef.h>
  14. /* the exception stack without VFP registers */
  15. struct rt_hw_exp_stack
  16. {
  17. unsigned long long pc;
  18. unsigned long long spsr;
  19. unsigned long long x30;
  20. unsigned long long xzr;
  21. unsigned long long fpcr;
  22. unsigned long long fpsr;
  23. unsigned long long x28;
  24. unsigned long long x29;
  25. unsigned long long x26;
  26. unsigned long long x27;
  27. unsigned long long x24;
  28. unsigned long long x25;
  29. unsigned long long x22;
  30. unsigned long long x23;
  31. unsigned long long x20;
  32. unsigned long long x21;
  33. unsigned long long x18;
  34. unsigned long long x19;
  35. unsigned long long x16;
  36. unsigned long long x17;
  37. unsigned long long x14;
  38. unsigned long long x15;
  39. unsigned long long x12;
  40. unsigned long long x13;
  41. unsigned long long x10;
  42. unsigned long long x11;
  43. unsigned long long x8;
  44. unsigned long long x9;
  45. unsigned long long x6;
  46. unsigned long long x7;
  47. unsigned long long x4;
  48. unsigned long long x5;
  49. unsigned long long x2;
  50. unsigned long long x3;
  51. unsigned long long x0;
  52. unsigned long long x1;
  53. unsigned long long fpu[16];
  54. };
  55. #define SP_ELx ( ( unsigned long long ) 0x01 )
  56. #define SP_EL0 ( ( unsigned long long ) 0x00 )
  57. #define PSTATE_EL1 ( ( unsigned long long ) 0x04 )
  58. #define PSTATE_EL2 ( ( unsigned long long ) 0x08 )
  59. #define PSTATE_EL3 ( ( unsigned long long ) 0x0c )
  60. rt_ubase_t rt_hw_get_current_el(void);
  61. void rt_hw_set_elx_env(void);
  62. void rt_hw_set_current_vbar(rt_ubase_t addr);
  63. #endif