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
|
init.c
|
||||||
kheap.c
|
kheap.c
|
||||||
mem_slab.c
|
mem_slab.c
|
||||||
|
float.c
|
||||||
thread.c
|
thread.c
|
||||||
version.c
|
version.c
|
||||||
priority_queues.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
|
#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)
|
#if defined(CONFIG_INIT_STACKS) && defined(CONFIG_THREAD_STACK_INFO)
|
||||||
#ifdef CONFIG_STACK_GROWS_UP
|
#ifdef CONFIG_STACK_GROWS_UP
|
||||||
#error "Unsupported configuration for stack analysis"
|
#error "Unsupported configuration for stack analysis"
|
||||||
|
|
Loading…
Reference in a new issue