kernel: move float operations out of thread.c
Move float operation out and add missing vrfy hook for enabling float. Signed-off-by: Anas Nashif <anas.nashif@intel.com>
This commit is contained in:
parent
6c003bdbcf
commit
3dc0c4544b
|
@ -57,6 +57,7 @@ list(APPEND kernel_files
|
|||
init.c
|
||||
kheap.c
|
||||
mem_slab.c
|
||||
float.c
|
||||
thread.c
|
||||
version.c
|
||||
priority_queues.c
|
||||
|
|
47
kernel/float.c
Normal file
47
kernel/float.c
Normal file
|
@ -0,0 +1,47 @@
|
|||
/*
|
||||
* Copyright (c) 2010-2014 Wind River Systems, Inc.
|
||||
* Copyright (c) 2024 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
#include <zephyr/kernel.h>
|
||||
#include <zephyr/internal/syscall_handler.h>
|
||||
#include <kernel_arch_interface.h>
|
||||
|
||||
int z_impl_k_float_disable(struct k_thread *thread)
|
||||
{
|
||||
#if defined(CONFIG_FPU) && defined(CONFIG_FPU_SHARING)
|
||||
return arch_float_disable(thread);
|
||||
#else
|
||||
ARG_UNUSED(thread);
|
||||
return -ENOTSUP;
|
||||
#endif /* CONFIG_FPU && CONFIG_FPU_SHARING */
|
||||
}
|
||||
|
||||
int z_impl_k_float_enable(struct k_thread *thread, unsigned int options)
|
||||
{
|
||||
#if defined(CONFIG_FPU) && defined(CONFIG_FPU_SHARING)
|
||||
return arch_float_enable(thread, options);
|
||||
#else
|
||||
ARG_UNUSED(thread);
|
||||
ARG_UNUSED(options);
|
||||
return -ENOTSUP;
|
||||
#endif /* CONFIG_FPU && CONFIG_FPU_SHARING */
|
||||
}
|
||||
|
||||
#ifdef CONFIG_USERSPACE
|
||||
static inline int z_vrfy_k_float_disable(struct k_thread *thread)
|
||||
{
|
||||
K_OOPS(K_SYSCALL_OBJ(thread, K_OBJ_THREAD));
|
||||
return z_impl_k_float_disable(thread);
|
||||
}
|
||||
#include <syscalls/k_float_disable_mrsh.c>
|
||||
|
||||
static inline int z_vrfy_k_float_enable(struct k_thread *thread, unsigned int options)
|
||||
{
|
||||
K_OOPS(K_SYSCALL_OBJ(thread, K_OBJ_THREAD));
|
||||
return z_impl_k_float_enable(thread, options);
|
||||
}
|
||||
#include <syscalls/k_float_enable_mrsh.c>
|
||||
|
||||
#endif /* CONFIG_USERSPACE */
|
|
@ -751,36 +751,6 @@ FUNC_NORETURN void k_thread_user_mode_enter(k_thread_entry_t entry,
|
|||
#endif
|
||||
}
|
||||
|
||||
int z_impl_k_float_disable(struct k_thread *thread)
|
||||
{
|
||||
#if defined(CONFIG_FPU) && defined(CONFIG_FPU_SHARING)
|
||||
return arch_float_disable(thread);
|
||||
#else
|
||||
ARG_UNUSED(thread);
|
||||
return -ENOTSUP;
|
||||
#endif /* CONFIG_FPU && CONFIG_FPU_SHARING */
|
||||
}
|
||||
|
||||
int z_impl_k_float_enable(struct k_thread *thread, unsigned int options)
|
||||
{
|
||||
#if defined(CONFIG_FPU) && defined(CONFIG_FPU_SHARING)
|
||||
return arch_float_enable(thread, options);
|
||||
#else
|
||||
ARG_UNUSED(thread);
|
||||
ARG_UNUSED(options);
|
||||
return -ENOTSUP;
|
||||
#endif /* CONFIG_FPU && CONFIG_FPU_SHARING */
|
||||
}
|
||||
|
||||
#ifdef CONFIG_USERSPACE
|
||||
static inline int z_vrfy_k_float_disable(struct k_thread *thread)
|
||||
{
|
||||
K_OOPS(K_SYSCALL_OBJ(thread, K_OBJ_THREAD));
|
||||
return z_impl_k_float_disable(thread);
|
||||
}
|
||||
#include <syscalls/k_float_disable_mrsh.c>
|
||||
#endif /* CONFIG_USERSPACE */
|
||||
|
||||
#if defined(CONFIG_INIT_STACKS) && defined(CONFIG_THREAD_STACK_INFO)
|
||||
#ifdef CONFIG_STACK_GROWS_UP
|
||||
#error "Unsupported configuration for stack analysis"
|
||||
|
|
Loading…
Reference in a new issue