cpu-reset.h 917 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 el2_switch,
  16. unsigned long entry, unsigned long arg0, unsigned long arg1,
  17. unsigned long arg2)
  18. {
  19. typeof(__cpu_soft_restart) *restart;
  20. el2_switch = el2_switch && !is_kernel_in_hyp_mode() &&
  21. is_hyp_mode_available();
  22. restart = (void *)virt_to_phys(__cpu_soft_restart);
  23. cpu_install_idmap();
  24. restart(el2_switch, entry, arg0, arg1, arg2);
  25. unreachable();
  26. }
  27. #endif