linux/arch/arm64/kernel/cpu-reset.h
<<
>>
Prefs
   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
  11#ifndef _ARM64_CPU_RESET_H
  12#define _ARM64_CPU_RESET_H
  13
  14#include <asm/virt.h>
  15
  16void __cpu_soft_restart(unsigned long el2_switch, unsigned long entry,
  17        unsigned long arg0, unsigned long arg1, unsigned long arg2);
  18
  19static inline void __noreturn cpu_soft_restart(unsigned long el2_switch,
  20        unsigned long entry, unsigned long arg0, unsigned long arg1,
  21        unsigned long arg2)
  22{
  23        typeof(__cpu_soft_restart) *restart;
  24
  25        el2_switch = el2_switch && !is_kernel_in_hyp_mode() &&
  26                is_hyp_mode_available();
  27        restart = (void *)__pa_symbol(__cpu_soft_restart);
  28
  29        cpu_install_idmap();
  30        restart(el2_switch, entry, arg0, arg1, arg2);
  31        unreachable();
  32}
  33
  34#endif
  35