cpu-reset.h 924 B

1234567891011121314151617181920212223242526272829303132333435
  1. /*
  2. * CPU reset routines
  3. *
  4. * Copyright (C) 2015 Huawei Futurewei Technologies.
  5. *
  6. * This program is free software; you can redistribute it and/or modify
  7. * it under the terms of the GNU General Public License version 2 as
  8. * published by the Free Software Foundation.
  9. */
  10. #ifndef _ARM64_CPU_RESET_H
  11. #define _ARM64_CPU_RESET_H
  12. #include <asm/virt.h>
  13. void __cpu_soft_restart(unsigned long el2_switch, unsigned long entry,
  14. unsigned long arg0, unsigned long arg1, unsigned long arg2);
  15. static inline void __noreturn cpu_soft_restart(unsigned long entry,
  16. unsigned long arg0,
  17. unsigned long arg1,
  18. unsigned long arg2)
  19. {
  20. typeof(__cpu_soft_restart) *restart;
  21. unsigned long el2_switch = !is_kernel_in_hyp_mode() &&
  22. is_hyp_mode_available();
  23. restart = (void *)__pa_symbol(__cpu_soft_restart);
  24. cpu_install_idmap();
  25. restart(el2_switch, entry, arg0, arg1, arg2);
  26. unreachable();
  27. }
  28. #endif