/* * Copyright (c) 2019 Carlo Caione #ifdef __cplusplus extern "C" { #endif #ifndef _ASMLANGUAGE extern void xen_enlighten_init(void); static ALWAYS_INLINE void arch_kernel_init(void) { #ifdef CONFIG_XEN xen_enlighten_init(); #endif } static inline void arch_switch(void *switch_to, void **switched_from) { extern void z_arm64_context_switch(struct k_thread *new, struct k_thread *old); struct k_thread *new = switch_to; struct k_thread *old = CONTAINER_OF(switched_from, struct k_thread, switch_handle); z_arm64_context_switch(new, old); } extern void z_arm64_fatal_error(unsigned int reason, struct arch_esf *esf); extern void z_arm64_set_ttbr0(uint64_t ttbr0); extern void z_arm64_mem_cfg_ipi(void); #ifdef CONFIG_FPU_SHARING void arch_flush_local_fpu(void); void arch_flush_fpu_ipi(unsigned int cpu); #endif #ifdef CONFIG_ARM64_SAFE_EXCEPTION_STACK void z_arm64_safe_exception_stack_init(void); #endif #endif /* _ASMLANGUAGE */ #ifdef __cplusplus } #endif #endif /* ZEPHYR_ARCH_ARM64_INCLUDE_KERNEL_ARCH_FUNC_H_ */