12#ifndef _FLOATCONTEXT_H
13#define _FLOATCONTEXT_H
32#if defined(CONFIG_X86)
47 unsigned char reg[10];
51 unsigned char reg[16];
54struct fp_volatile_register_set {
55 struct xmm_register xmm[8];
56 struct fp_register st[8];
59struct fp_non_volatile_register_set {
63#define SIZEOF_FP_VOLATILE_REGISTER_SET sizeof(struct fp_volatile_register_set)
64#define SIZEOF_FP_NON_VOLATILE_REGISTER_SET 0
66#elif defined(CONFIG_ARM)
68#if defined(CONFIG_VFP_FEATURE_REGS_S64_D32)
70struct fp_volatile_register_set {
74struct fp_non_volatile_register_set {
78#elif defined(CONFIG_ARMV7_M_ARMV8_M_FP) || defined(CONFIG_ARMV7_R_FP) \
79 || defined(CONFIG_VFP_FEATURE_REGS_S32_D16)
87struct fp_volatile_register_set {
95struct fp_non_volatile_register_set {
101#define SIZEOF_FP_VOLATILE_REGISTER_SET \
102 sizeof(struct fp_volatile_register_set)
103#define SIZEOF_FP_NON_VOLATILE_REGISTER_SET \
104 sizeof(struct fp_non_volatile_register_set)
106#elif defined(CONFIG_ARM64)
108struct fp_volatile_register_set {
112struct fp_non_volatile_register_set {
116#define SIZEOF_FP_VOLATILE_REGISTER_SET \
117 sizeof(struct fp_volatile_register_set)
118#define SIZEOF_FP_NON_VOLATILE_REGISTER_SET \
119 sizeof(struct fp_non_volatile_register_set)
121#elif defined(CONFIG_ISA_ARCV2)
123struct fp_volatile_register_set {
124#ifdef CONFIG_FP_FPU_DA
132struct fp_non_volatile_register_set {
136#define SIZEOF_FP_VOLATILE_REGISTER_SET sizeof(struct fp_volatile_register_set)
137#define SIZEOF_FP_NON_VOLATILE_REGISTER_SET 0
139#elif defined(CONFIG_RISCV)
141struct fp_volatile_register_set {
142#ifdef CONFIG_CPU_HAS_FPU_DOUBLE_PRECISION
149struct fp_non_volatile_register_set {
153#define SIZEOF_FP_VOLATILE_REGISTER_SET sizeof(struct fp_volatile_register_set)
154#define SIZEOF_FP_NON_VOLATILE_REGISTER_SET 0
156#elif defined(CONFIG_SPARC)
158struct fp_volatile_register_set {
162struct fp_non_volatile_register_set {
165#define SIZEOF_FP_VOLATILE_REGISTER_SET sizeof(struct fp_volatile_register_set)
166#define SIZEOF_FP_NON_VOLATILE_REGISTER_SET 0
168#elif defined(CONFIG_XTENSA)
170struct fp_volatile_register_set {
174struct fp_non_volatile_register_set {
178#define SIZEOF_FP_VOLATILE_REGISTER_SET 0
179#define SIZEOF_FP_NON_VOLATILE_REGISTER_SET sizeof(struct fp_non_volatile_register_set)
183#error "Architecture must provide the following definitions:\n"
184"\t'struct fp_volatile_registers'\n"
185"\t'struct fp_non_volatile_registers'\n"
186"\t'SIZEOF_FP_VOLATILE_REGISTER_SET'\n"
187"\t'SIZEOF_FP_NON_VOLATILE_REGISTER_SET'\n"
197#define SIZEOF_FP_REGISTER_SET \
198 (SIZEOF_FP_VOLATILE_REGISTER_SET + SIZEOF_FP_NON_VOLATILE_REGISTER_SET)
205#define MAIN_FLOAT_REG_CHECK_BYTE ((unsigned char)0xe5)
206#define FIBER_FLOAT_REG_CHECK_BYTE ((unsigned char)0xf9)
irp nz macro MOVR cc s mov cc s endm endr irp aw macro LDR aa s
Definition asm-macro-32-bit-gnu.h:17
irp nz macro MOVR cc d
Definition asm-macro-32-bit-gnu.h:11
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
__UINT64_TYPE__ uint64_t
Definition stdint.h:91
Definition float_context.h:192
struct fp_non_volatile_register_set fp_non_volatile
Definition float_context.h:194
struct fp_volatile_register_set fp_volatile
Definition float_context.h:193