#include <linux/compat.h>
#include <linux/cpu.h>
#include <linux/pagemap.h>
#include <asm/fpu/signal.h>
#include <asm/fpu/regset.h>
#include <asm/fpu/xstate.h>
#include <asm/sigframe.h>
#include <asm/trapnr.h>
#include <asm/trace/fpu.h>
#include "context.h"
#include "internal.h"
#include "legacy.h"
#include "xstate.h"
static inline bool check_xstate_in_sigframe(struct fxregs_state __user *fxbuf,
struct _fpx_sw_bytes *fx_sw)
{ … }
static inline int update_pkru_in_sigframe(struct xregs_state __user *buf, u32 pkru)
{ … }
static inline bool save_fsave_header(struct task_struct *tsk, void __user *buf)
{ … }
static inline void save_sw_bytes(struct _fpx_sw_bytes *sw_bytes, bool ia32_frame,
struct fpstate *fpstate)
{ … }
static inline bool save_xstate_epilog(void __user *buf, int ia32_frame,
struct fpstate *fpstate)
{ … }
static inline int copy_fpregs_to_sigframe(struct xregs_state __user *buf, u32 pkru)
{ … }
bool copy_fpstate_to_sigframe(void __user *buf, void __user *buf_fx, int size, u32 pkru)
{ … }
static int __restore_fpregs_from_user(void __user *buf, u64 ufeatures,
u64 xrestore, bool fx_only)
{ … }
static bool restore_fpregs_from_user(void __user *buf, u64 xrestore, bool fx_only)
{ … }
static bool __fpu_restore_sig(void __user *buf, void __user *buf_fx,
bool ia32_fxstate)
{ … }
static inline unsigned int xstate_sigframe_size(struct fpstate *fpstate)
{ … }
bool fpu__restore_sig(void __user *buf, int ia32_frame)
{ … }
unsigned long
fpu__alloc_mathframe(unsigned long sp, int ia32_frame,
unsigned long *buf_fx, unsigned long *size)
{ … }
unsigned long __init fpu__get_fpstate_size(void)
{ … }