358d389c54
Only a single bit of the 4-byte internal (thread.arch) status variable 'mode' is currently used, when we build with User mode support (CONFIG_USERSPACE=y). In this commit we extend the usage of 'mode' variable, adding an additional bit-flag to track the status of the floating point context in a particular thread, i.e. to track whether FP context is active or not. The status bit is meant to be used in context-switch, to restore the FP register context when required. Signed-off-by: Ioannis Glaropoulos <Ioannis.Glaropoulos@nordicsemi.no>
42 lines
1,012 B
C
42 lines
1,012 B
C
/*
|
|
* Copyright (c) 2016 Wind River Systems, Inc.
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#ifndef ZEPHYR_ARCH_ARM_INCLUDE_OFFSETS_SHORT_ARCH_H_
|
|
#define ZEPHYR_ARCH_ARM_INCLUDE_OFFSETS_SHORT_ARCH_H_
|
|
|
|
#include <offsets.h>
|
|
|
|
/* kernel */
|
|
|
|
/* nothing for now */
|
|
|
|
/* end - kernel */
|
|
|
|
/* threads */
|
|
|
|
#define _thread_offset_to_basepri \
|
|
(___thread_t_arch_OFFSET + ___thread_arch_t_basepri_OFFSET)
|
|
|
|
#define _thread_offset_to_swap_return_value \
|
|
(___thread_t_arch_OFFSET + ___thread_arch_t_swap_return_value_OFFSET)
|
|
|
|
#define _thread_offset_to_preempt_float \
|
|
(___thread_t_arch_OFFSET + ___thread_arch_t_preempt_float_OFFSET)
|
|
|
|
#if defined(CONFIG_USERSPACE) || defined(CONFIG_FP_SHARING)
|
|
#define _thread_offset_to_mode \
|
|
(___thread_t_arch_OFFSET + ___thread_arch_t_mode_OFFSET)
|
|
|
|
#ifdef CONFIG_USERSPACE
|
|
#define _thread_offset_to_priv_stack_start \
|
|
(___thread_t_arch_OFFSET + ___thread_arch_t_priv_stack_start_OFFSET)
|
|
#endif
|
|
#endif
|
|
|
|
/* end - threads */
|
|
|
|
#endif /* ZEPHYR_ARCH_ARM_INCLUDE_OFFSETS_SHORT_ARCH_H_ */
|