/* * Copyright (c) 2014-2015 Wind River Systems, Inc. * * SPDX-License-Identifier: Apache-2.0 */ /** * @file * @brief Wrapper for z_thread_entry * * Wrapper for z_thread_entry routine when called from the initial context. */ #include #include #include #include GTEXT(z_thread_entry_wrapper) GTEXT(z_thread_entry_wrapper1) /** * @brief Wrapper for z_thread_entry * * The routine pops parameters for the z_thread_entry from stack frame, prepared * by the arch_new_thread() routine. */ SECTION_FUNC(TEXT, z_thread_entry_wrapper) seti _ARC_V2_INIT_IRQ_LOCK_KEY z_thread_entry_wrapper1: POPR r3 POPR r2 POPR r1 POPR r0 j z_thread_entry nop #if !defined(CONFIG_MULTITHREADING) GTEXT(z_main_no_multithreading_entry_wrapper) /* void z_main_no_multithreading_entry_wrapper(*p1, *p2, *p3, *main_stack, *main_entry) */ SECTION_FUNC(TEXT, z_main_no_multithreading_entry_wrapper) MOVR sp, r3 /* *p1, *p2, *p3 are in r0, r1, r2 already */ jl [r4] nop /* * If we return from main we'll return from main wrapper and appear here. * Go to infinite loop as there is nothing more to do. */ z_main_no_multithreading_entry_wrapper_end: b z_main_no_multithreading_entry_wrapper_end #endif /* !CONFIG_MULTITHREADING */