hypercall.h 998 B

12345678910111213141516171819202122232425262728293031323334353637
  1. /*
  2. * Copyright (c) 2006-2023, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2022-02-24 GuEe-GUI first version
  9. * 2023-02-21 GuEe-GUI update API
  10. */
  11. #ifndef __HYPERCALL_H__
  12. #define __HYPERCALL_H__
  13. #include <rtdef.h>
  14. #include <smccc.h>
  15. #define HYPERCALL_START 0xc5000000 /* HVC64 */
  16. #define HYPERCALL_END 0xc500ffff /* HVC64 */
  17. rt_inline rt_uint32_t rt_hw_hypercall(rt_uint32_t w0, rt_uint64_t x1, rt_uint64_t x2,
  18. rt_uint64_t x3, rt_uint64_t x4, rt_uint64_t x5, rt_uint64_t x6, rt_uint32_t w7)
  19. {
  20. struct arm_smccc_res_t res;
  21. arm_smccc_hvc(w0, x1, x2, x3, x4, x5, x6, w7, &res, RT_NULL);
  22. return res.a0;
  23. }
  24. rt_err_t rt_hv_version(rt_uint32_t *out_version);
  25. rt_err_t rt_hv_debug(rt_uint32_t id, rt_uint32_t argc,
  26. rt_ubase_t arg0, rt_ubase_t arg1, rt_ubase_t arg2,
  27. rt_ubase_t arg3, rt_ubase_t arg4);
  28. rt_err_t rt_hv_console(char c);
  29. #endif /* __HYPERCALL_H__ */