#include <linux/sched.h>
#include <linux/sched/task_stack.h>
#include <linux/mm.h>
#include <linux/smp.h>
#include <linux/kernel.h>
#include <linux/errno.h>
#include <linux/wait.h>
#include <linux/unistd.h>
#include <linux/stddef.h>
#include <linux/personality.h>
#include <linux/compat.h>
#include <linux/binfmts.h>
#include <linux/syscalls.h>
#include <asm/ucontext.h>
#include <linux/uaccess.h>
#include <asm/fpu/signal.h>
#include <asm/ptrace.h>
#include <asm/user32.h>
#include <uapi/asm/sigcontext.h>
#include <asm/proto.h>
#include <asm/vdso.h>
#include <asm/sigframe.h>
#include <asm/sighandling.h>
#include <asm/smap.h>
#include <asm/gsseg.h>
#ifdef CONFIG_IA32_EMULATION
#include <asm/unistd_32_ia32.h>
static inline void reload_segments(struct sigcontext_32 *sc)
{ … }
#define sigset32_t …
#define siginfo32_t …
#define restore_altstack32 …
#define unsafe_save_altstack32 …
#else
#define sigset32_t …
#define siginfo32_t …
#define __NR_ia32_sigreturn …
#define __NR_ia32_rt_sigreturn …
#define restore_altstack32 …
#define unsafe_save_altstack32 …
#define __copy_siginfo_to_user32 …
#endif
static bool ia32_restore_sigcontext(struct pt_regs *regs,
struct sigcontext_32 __user *usc)
{ … }
SYSCALL32_DEFINE0(sigreturn)
{ … }
SYSCALL32_DEFINE0(rt_sigreturn)
{ … }
#define get_user_seg(seg) …
static __always_inline int
__unsafe_setup_sigcontext32(struct sigcontext_32 __user *sc,
void __user *fpstate,
struct pt_regs *regs, unsigned int mask)
{ … }
#define unsafe_put_sigcontext32(sc, fp, regs, set, label) …
int ia32_setup_frame(struct ksignal *ksig, struct pt_regs *regs)
{ … }
int ia32_setup_rt_frame(struct ksignal *ksig, struct pt_regs *regs)
{ … }
static_assert(…);
static_assert(…);
static_assert(…);
static_assert(…);
static_assert(…);
static_assert(…);
static_assert(…);
static_assert(…);
static_assert(…);
static_assert(…);
static_assert(…);
static_assert(…);
static_assert(…);
#define CHECK_SI_OFFSET(name) …
#define CHECK_SI_SIZE(name, size) …
CHECK_SI_OFFSET(…) …;
CHECK_SI_SIZE(…) …;
static_assert(…);
static_assert(…);
CHECK_SI_OFFSET(…) …;
#ifdef CONFIG_COMPAT
CHECK_SI_SIZE(…) …;
#else
CHECK_SI_SIZE (_timer, 4*sizeof(int));
#endif
static_assert(…);
static_assert(…);
static_assert(…);
CHECK_SI_OFFSET(…) …;
CHECK_SI_SIZE(…) …;
static_assert(…);
static_assert(…);
static_assert(…);
CHECK_SI_OFFSET(…) …;
CHECK_SI_SIZE(…) …;
static_assert(…);
static_assert(…);
static_assert(…);
static_assert(…);
static_assert(…);
CHECK_SI_OFFSET(…) …;
CHECK_SI_SIZE(…) …;
static_assert(…);
static_assert(…);
static_assert(…);
static_assert(…);
static_assert(…);
static_assert(…);
static_assert(…);
static_assert(…);
static_assert(…);
CHECK_SI_OFFSET(…) …;
CHECK_SI_SIZE(…) …;
static_assert(…);
static_assert(…);
CHECK_SI_OFFSET(…) …;
CHECK_SI_SIZE(…) …;
static_assert(…);
static_assert(…);
static_assert(…);