diff --git a/cpu/arm7_common/arm_cpu.c b/cpu/arm7_common/arm_cpu.c index 855318d5b6..d358f3c0ae 100644 --- a/cpu/arm7_common/arm_cpu.c +++ b/cpu/arm7_common/arm_cpu.c @@ -36,16 +36,6 @@ __attribute__((used, section(".svc_stack"), aligned(4))) uint8_t svc_stack[ISR_S #error "ISR_STACKSIZE must be a multiple of 4" #endif -void thread_yield_higher(void) -{ - if (irq_is_in()) { - sched_context_switch_request = 1; - } - else { - __asm__("svc 0\n"); - } -} - /*---------------------------------------------------------------------------- * Processor specific routine - here for ARM7 * sizeof(void*) = sizeof(int) diff --git a/cpu/arm7_common/include/thread_arch.h b/cpu/arm7_common/include/thread_arch.h new file mode 100644 index 0000000000..c3f66c2e51 --- /dev/null +++ b/cpu/arm7_common/include/thread_arch.h @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2008, 2009 Heiko Will + * Copyright (C) 2009 Kaspar Schleiser + * + * This file is subject to the terms and conditions of the GNU Lesser General + * Public License v2.1. See the file LICENSE in the top level directory for more + * details. + */ + +/** + * @ingroup cpu_arm7_common + * @{ + * + * @file + * @brief Implementation of the kernels thread interface + * + * @author Kaspar Schleiser + * @author Heiko Will + * + * @} + */ +#ifndef THREAD_ARCH_H +#define THREAD_ARCH_H + +#include "irq.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define THREAD_API_INLINED + +#ifndef DOXYGEN /* Doxygen is in core/include/thread.h */ + +static inline __attribute__((always_inline)) void thread_yield_higher(void) +{ + if (irq_is_in()) { + sched_context_switch_request = 1; + } + else { + __asm__("svc 0\n"); + } +} + +#endif /* DOXYGEN */ + +#ifdef __cplusplus +} +#endif + +#endif /* THREAD_ARCH_H */ +/** @} */