fp_state
#define FP_SIZE (sizeof(union fp_state) / sizeof(int))
union fp_state fpstate __attribute__((aligned(8)));
memset(&thread->fpstate, 0, sizeof(union fp_state));
0, sizeof(union fp_state),
0, sizeof(union fp_state),
void nwfpe_init_fpa(union fp_state *fp)
extern void nwfpe_init_fpa(union fp_state *fp);
if (sizeof(FPA11) > sizeof(union fp_state)) {
extern void fpsimd_bind_state_to_cpu(struct cpu_fp_state *fp_state);
fp_state.to_save = FP_STATE_FPSIMD;
fpsimd_bind_state_to_cpu(&fp_state);
struct cpu_fp_state fp_state;
fp_state.st = &vcpu->arch.ctxt.fp_regs;
fp_state.sve_state = vcpu->arch.sve_state;
fp_state.sve_vl = vcpu->arch.sve_max_vl;
fp_state.sme_state = NULL;
fp_state.svcr = __ctxt_sys_reg(&vcpu->arch.ctxt, SVCR);
fp_state.fpmr = __ctxt_sys_reg(&vcpu->arch.ctxt, FPMR);
fp_state.fp_type = &vcpu->arch.fp_type;
fp_state.to_save = FP_STATE_SVE;
struct thread_fp_state fp_state;
#define TS_FPR(i) fp_state.fpr[i][TS_FPROFFSET]
#define __FPU_FPSCR (current->thread.fp_state.fpscr)
OFFSET(THREAD_FPSTATE, thread_struct, fp_state.fpr);
memset(¤t->thread.fp_state, 0, sizeof(current->thread.fp_state));
load_fp_state(¤t->thread.fp_state);
memcpy(&thr->ckfp_state, &thr->fp_state,
*data = ((u32 *)child->thread.fp_state.fpr)[fpidx];
*data = child->thread.fp_state.fpscr;
((u32 *)child->thread.fp_state.fpr)[fpidx] = data;
child->thread.fp_state.fpscr = data;
return membuf_write(&to, &target->thread.fp_state, 33 * sizeof(u64));
&target->thread.fp_state, 0, -1);
buf[i] = target->thread.fp_state.fpr[i][TS_VSRLOWOFFSET];
buf[i] = target->thread.fp_state.fpr[i][TS_VSRLOWOFFSET];
target->thread.fp_state.fpr[i][TS_VSRLOWOFFSET] = buf[i];
buf[32] = target->thread.fp_state.fpscr;
buf[32] = target->thread.fp_state.fpscr;
target->thread.fp_state.fpscr = buf[32];
tmp = child->thread.fp_state.fpr[numReg - PT_FPR0][0];
((unsigned int *)child->thread.fp_state.fpr)
tmp = &child->thread.fp_state.fpr[numReg - PT_FPR0][0];
tmp = ((unsigned int *)child->thread.fp_state.fpr)
buf[i] = task->thread.fp_state.fpscr;
task->thread.fp_state.fpscr = buf[i];
buf[i] = task->thread.fp_state.fpr[i][TS_VSRLOWOFFSET];
task->thread.fp_state.fpr[i][TS_VSRLOWOFFSET] = buf[i];
unsafe_copy_to_user(to, (task)->thread.fp_state.fpr, \
unsafe_copy_from_user((task)->thread.fp_state.fpr, from, \
return __copy_to_user(to, task->thread.fp_state.fpr,
return __copy_from_user(task->thread.fp_state.fpr, from,
unsafe_put_user(__t->thread.fp_state.fpscr, &buf[i], label); \
unsafe_put_user(__t->thread.fp_state.fpr[i][TS_VSRLOWOFFSET], \
unsafe_get_user(__t->thread.fp_state.fpscr, &buf[i], label); \
unsafe_get_user(__t->thread.fp_state.fpr[i][TS_VSRLOWOFFSET], \
current->thread.fp_state.fpr[i][TS_VSRLOWOFFSET] = 0;
current->thread.fp_state.fpr[i][TS_VSRLOWOFFSET] = 0;
load_fp_state(¤t->thread.fp_state);
tsk->thread.fp_state.fpscr = 0; /* turn off all fp exceptions */
tsk->thread.fp_state.fpscr = 0; /* turn off all fp exceptions */
tsk->thread.fp_state.fpr[i][TS_VSRLOWOFFSET] = 0;
tsk->thread.fp_state.fpr[i][TS_VSRLOWOFFSET] = 0;
load_fp_state(&tsk->thread.fp_state);
tsk->thread.fp_state.fpscr = 0;
code = __parse_fpscr(current->thread.fp_state.fpscr);
code = __parse_fpscr(current->thread.fp_state.fpscr);
vdst = (u8 *)¤t->thread.fp_state.fpr[t][0];
buf[j].d[0] = current->thread.fp_state.fpr[reg + i][0];
buf[j].d[1] = current->thread.fp_state.fpr[reg + i][1];
current->thread.fp_state.fpr[reg + i][0] = buf[j].d[0];
current->thread.fp_state.fpr[reg + i][1] = buf[j].d[1];