From 2aa138b33369ae40ec6ce51e309f3d9d24730135 Mon Sep 17 00:00:00 2001 From: Ioannis Glaropoulos Date: Mon, 8 Apr 2019 11:45:09 +0200 Subject: [PATCH] arch: arm: remove _preempt_float in unshared FP registers mode Under Unshared FP register mode we are not sharing the FP context among different threads, so we do not need to include the FP high registers bank in the thread.arch container. Signed-off-by: Ioannis Glaropoulos --- arch/arm/core/offsets/offsets.c | 4 ++-- arch/arm/include/kernel_arch_thread.h | 4 ++-- subsys/debug/openocd.c | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/arch/arm/core/offsets/offsets.c b/arch/arm/core/offsets/offsets.c index 90dfc975a14..c0e2aa373de 100644 --- a/arch/arm/core/offsets/offsets.c +++ b/arch/arm/core/offsets/offsets.c @@ -34,7 +34,7 @@ GEN_OFFSET_SYM(_thread_arch_t, mode); GEN_OFFSET_SYM(_thread_arch_t, priv_stack_start); #endif -#ifdef CONFIG_FLOAT +#if defined(CONFIG_FLOAT) && defined(CONFIG_FP_SHARING) GEN_OFFSET_SYM(_thread_arch_t, preempt_float); #endif @@ -73,7 +73,7 @@ GEN_ABSOLUTE_SYM(___callee_saved_t_SIZEOF, sizeof(struct _callee_saved)); * point registers. */ -#ifdef CONFIG_FLOAT +#if defined(CONFIG_FLOAT) && defined(CONFIG_FP_SHARING) GEN_ABSOLUTE_SYM(_K_THREAD_NO_FLOAT_SIZEOF, sizeof(struct k_thread) - sizeof(struct _preempt_float)); #else diff --git a/arch/arm/include/kernel_arch_thread.h b/arch/arm/include/kernel_arch_thread.h index 074118c10cb..8b65fe7c7cc 100644 --- a/arch/arm/include/kernel_arch_thread.h +++ b/arch/arm/include/kernel_arch_thread.h @@ -36,7 +36,7 @@ struct _callee_saved { typedef struct _callee_saved _callee_saved_t; -#ifdef CONFIG_FLOAT +#if defined(CONFIG_FLOAT) && defined(CONFIG_FP_SHARING) struct _preempt_float { float s16; float s17; @@ -65,7 +65,7 @@ struct _thread_arch { /* r0 in stack frame cannot be written to reliably */ u32_t swap_return_value; -#ifdef CONFIG_FLOAT +#if defined(CONFIG_FLOAT) && defined(CONFIG_FP_SHARING) /* * No cooperative floating point register set structure exists for * the Cortex-M as it automatically saves the necessary registers diff --git a/subsys/debug/openocd.c b/subsys/debug/openocd.c index ee3f89e870d..dc79dd49d64 100644 --- a/subsys/debug/openocd.c +++ b/subsys/debug/openocd.c @@ -70,7 +70,7 @@ size_t _kernel_openocd_offsets[] = { [OPENOCD_OFFSET_T_NAME] = offsetof(struct k_thread, name), [OPENOCD_OFFSET_T_ARCH] = offsetof(struct k_thread, arch), -#if defined(CONFIG_FLOAT) && defined(CONFIG_ARM) +#if defined(CONFIG_FLOAT) && defined(CONFIG_FP_SHARING) && defined(CONFIG_ARM) [OPENOCD_OFFSET_T_PREEMPT_FLOAT] = offsetof(struct _thread_arch, preempt_float), [OPENOCD_OFFSET_T_COOP_FLOAT] = OPENOCD_UNIMPLEMENTED,