#include <linux/sched/task_stack.h>
#include <linux/vmalloc.h>
#include <asm/fpu/api.h>
#include <asm/fpu/signal.h>
#include <asm/fpu/regset.h>
#include <asm/prctl.h>
#include "context.h"
#include "internal.h"
#include "legacy.h"
#include "xstate.h"
int regset_fpregs_active(struct task_struct *target, const struct user_regset *regset)
{ … }
int regset_xregset_fpregs_active(struct task_struct *target, const struct user_regset *regset)
{ … }
static void sync_fpstate(struct fpu *fpu)
{ … }
static void fpu_force_restore(struct fpu *fpu)
{ … }
int xfpregs_get(struct task_struct *target, const struct user_regset *regset,
struct membuf to)
{ … }
int xfpregs_set(struct task_struct *target, const struct user_regset *regset,
unsigned int pos, unsigned int count,
const void *kbuf, const void __user *ubuf)
{ … }
int xstateregs_get(struct task_struct *target, const struct user_regset *regset,
struct membuf to)
{ … }
int xstateregs_set(struct task_struct *target, const struct user_regset *regset,
unsigned int pos, unsigned int count,
const void *kbuf, const void __user *ubuf)
{ … }
#ifdef CONFIG_X86_USER_SHADOW_STACK
int ssp_active(struct task_struct *target, const struct user_regset *regset)
{ … }
int ssp_get(struct task_struct *target, const struct user_regset *regset,
struct membuf to)
{ … }
int ssp_set(struct task_struct *target, const struct user_regset *regset,
unsigned int pos, unsigned int count,
const void *kbuf, const void __user *ubuf)
{ … }
#endif
#if defined CONFIG_X86_32 || defined CONFIG_IA32_EMULATION
static inline unsigned short twd_i387_to_fxsr(unsigned short twd)
{ … }
#define FPREG_ADDR(f, n) …
#define FP_EXP_TAG_VALID …
#define FP_EXP_TAG_ZERO …
#define FP_EXP_TAG_SPECIAL …
#define FP_EXP_TAG_EMPTY …
static inline u32 twd_fxsr_to_i387(struct fxregs_state *fxsave)
{ … }
static void __convert_from_fxsr(struct user_i387_ia32_struct *env,
struct task_struct *tsk,
struct fxregs_state *fxsave)
{ … }
void
convert_from_fxsr(struct user_i387_ia32_struct *env, struct task_struct *tsk)
{ … }
void convert_to_fxsr(struct fxregs_state *fxsave,
const struct user_i387_ia32_struct *env)
{ … }
int fpregs_get(struct task_struct *target, const struct user_regset *regset,
struct membuf to)
{ … }
int fpregs_set(struct task_struct *target, const struct user_regset *regset,
unsigned int pos, unsigned int count,
const void *kbuf, const void __user *ubuf)
{ … }
#endif