user_fp
typedef struct user_fp elf_fpregset_t;
struct user_fp u_fp; /* FP state */
sizeof(struct user_fp));
0, sizeof(struct user_fp));
.n = sizeof(struct user_fp) / sizeof(u32),
void save_to_user_fp(struct user_fp *user_fp)
user_fp->fcr = tmp1;
user_fp->fesr = tmp2;
fpregs = &user_fp->vr[0];
void restore_from_user_fp(struct user_fp *user_fp)
tmp1 = user_fp->fcr;
tmp2 = user_fp->fesr;
fpregs = &user_fp->vr[0];
void save_to_user_fp(struct user_fp *user_fp);
void restore_from_user_fp(struct user_fp *user_fp);
typedef struct user_fp elf_fpregset_t;
struct user_fp __aligned(16) user_fp;
save_to_user_fp(&prev->thread.user_fp);
restore_from_user_fp(&next->thread.user_fp);
struct user_fp sc_user_fp;
DEFINE(THREAD_FESR, offsetof(struct thread_struct, user_fp.fesr));
DEFINE(THREAD_FCR, offsetof(struct thread_struct, user_fp.fcr));
DEFINE(THREAD_FPREG, offsetof(struct thread_struct, user_fp.vr));
save_to_user_fp(&p->thread.user_fp);
memcpy(fpu, ¤t->thread.user_fp, sizeof(*fpu));
struct user_fp *regs = (struct user_fp *)&target->thread.user_fp;
struct user_fp tmp = *regs;
struct user_fp *regs = (struct user_fp *)&target->thread.user_fp;
struct user_fp tmp;
.n = sizeof(struct user_fp) / sizeof(u32),
struct user_fp user_fp;
err = __copy_from_user(&user_fp, &sc->sc_user_fp, sizeof(user_fp));
restore_from_user_fp(&user_fp);
struct user_fp user_fp;
save_to_user_fp(&user_fp);
return __copy_to_user(&sc->sc_user_fp, &user_fp, sizeof(user_fp));