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 {
101struct fp_volatile_register_set {
105struct fp_non_volatile_register_set {
111#define SIZEOF_FP_VOLATILE_REGISTER_SET \
112 sizeof(struct fp_volatile_register_set)
113#define SIZEOF_FP_NON_VOLATILE_REGISTER_SET \
114 sizeof(struct fp_non_volatile_register_set)
116#elif defined(CONFIG_ARM64)
118struct fp_volatile_register_set {
122struct fp_non_volatile_register_set {
126#define SIZEOF_FP_VOLATILE_REGISTER_SET \
127 sizeof(struct fp_volatile_register_set)
128#define SIZEOF_FP_NON_VOLATILE_REGISTER_SET \
129 sizeof(struct fp_non_volatile_register_set)
131#elif defined(CONFIG_ISA_ARCV2)
133struct fp_volatile_register_set {
134#ifdef CONFIG_FP_FPU_DA
142struct fp_non_volatile_register_set {
146#define SIZEOF_FP_VOLATILE_REGISTER_SET sizeof(struct fp_volatile_register_set)
147#define SIZEOF_FP_NON_VOLATILE_REGISTER_SET 0
149#elif defined(CONFIG_RISCV)
151struct fp_volatile_register_set {
152#ifdef CONFIG_CPU_HAS_FPU_DOUBLE_PRECISION
159struct fp_non_volatile_register_set {
163#define SIZEOF_FP_VOLATILE_REGISTER_SET sizeof(struct fp_volatile_register_set)
164#define SIZEOF_FP_NON_VOLATILE_REGISTER_SET 0
166#elif defined(CONFIG_SPARC)
168struct fp_volatile_register_set {
172struct fp_non_volatile_register_set {
175#define SIZEOF_FP_VOLATILE_REGISTER_SET sizeof(struct fp_volatile_register_set)
176#define SIZEOF_FP_NON_VOLATILE_REGISTER_SET 0
178#elif defined(CONFIG_XTENSA)
180struct fp_volatile_register_set {
184struct fp_non_volatile_register_set {
188#define SIZEOF_FP_VOLATILE_REGISTER_SET 0
189#define SIZEOF_FP_NON_VOLATILE_REGISTER_SET sizeof(struct fp_non_volatile_register_set)
193#error "Architecture must provide the following definitions:\n"
194"\t'struct fp_volatile_registers'\n"
195"\t'struct fp_non_volatile_registers'\n"
196"\t'SIZEOF_FP_VOLATILE_REGISTER_SET'\n"
197"\t'SIZEOF_FP_NON_VOLATILE_REGISTER_SET'\n"
207#define SIZEOF_FP_REGISTER_SET \
208 (SIZEOF_FP_VOLATILE_REGISTER_SET + SIZEOF_FP_NON_VOLATILE_REGISTER_SET)
215#define MAIN_FLOAT_REG_CHECK_BYTE ((unsigned char)0xe5)
216#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:202
struct fp_non_volatile_register_set fp_non_volatile
Definition float_context.h:204
struct fp_volatile_register_set fp_volatile
Definition float_context.h:203