18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci#ifndef _ASM_ARM64_PARAVIRT_H 38c2ecf20Sopenharmony_ci#define _ASM_ARM64_PARAVIRT_H 48c2ecf20Sopenharmony_ci 58c2ecf20Sopenharmony_ci#ifdef CONFIG_PARAVIRT 68c2ecf20Sopenharmony_cistruct static_key; 78c2ecf20Sopenharmony_ciextern struct static_key paravirt_steal_enabled; 88c2ecf20Sopenharmony_ciextern struct static_key paravirt_steal_rq_enabled; 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_cistruct pv_time_ops { 118c2ecf20Sopenharmony_ci unsigned long long (*steal_clock)(int cpu); 128c2ecf20Sopenharmony_ci}; 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_cistruct paravirt_patch_template { 158c2ecf20Sopenharmony_ci struct pv_time_ops time; 168c2ecf20Sopenharmony_ci}; 178c2ecf20Sopenharmony_ci 188c2ecf20Sopenharmony_ciextern struct paravirt_patch_template pv_ops; 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_cistatic inline u64 paravirt_steal_clock(int cpu) 218c2ecf20Sopenharmony_ci{ 228c2ecf20Sopenharmony_ci return pv_ops.time.steal_clock(cpu); 238c2ecf20Sopenharmony_ci} 248c2ecf20Sopenharmony_ci 258c2ecf20Sopenharmony_ciint __init pv_time_init(void); 268c2ecf20Sopenharmony_ci 278c2ecf20Sopenharmony_ci#else 288c2ecf20Sopenharmony_ci 298c2ecf20Sopenharmony_ci#define pv_time_init() do {} while (0) 308c2ecf20Sopenharmony_ci 318c2ecf20Sopenharmony_ci#endif // CONFIG_PARAVIRT 328c2ecf20Sopenharmony_ci 338c2ecf20Sopenharmony_ci#endif 34