cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

sigframe.h (2180B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#ifndef _ASM_X86_SIGFRAME_H
      3#define _ASM_X86_SIGFRAME_H
      4
      5#include <uapi/asm/sigcontext.h>
      6#include <asm/siginfo.h>
      7#include <asm/ucontext.h>
      8#include <linux/compat.h>
      9
     10#ifdef CONFIG_X86_32
     11#define sigframe_ia32		sigframe
     12#define rt_sigframe_ia32	rt_sigframe
     13#define ucontext_ia32		ucontext
     14#else /* !CONFIG_X86_32 */
     15
     16#ifdef CONFIG_IA32_EMULATION
     17#include <asm/ia32.h>
     18#endif /* CONFIG_IA32_EMULATION */
     19
     20#endif /* CONFIG_X86_32 */
     21
     22#if defined(CONFIG_X86_32) || defined(CONFIG_IA32_EMULATION)
     23struct sigframe_ia32 {
     24	u32 pretcode;
     25	int sig;
     26	struct sigcontext_32 sc;
     27	/*
     28	 * fpstate is unused. fpstate is moved/allocated after
     29	 * retcode[] below. This movement allows to have the FP state and the
     30	 * future state extensions (xsave) stay together.
     31	 * And at the same time retaining the unused fpstate, prevents changing
     32	 * the offset of extramask[] in the sigframe and thus prevent any
     33	 * legacy application accessing/modifying it.
     34	 */
     35	struct _fpstate_32 fpstate_unused;
     36	unsigned int extramask[1];
     37	char retcode[8];
     38	/* fp state follows here */
     39};
     40
     41struct rt_sigframe_ia32 {
     42	u32 pretcode;
     43	int sig;
     44	u32 pinfo;
     45	u32 puc;
     46#ifdef CONFIG_IA32_EMULATION
     47	compat_siginfo_t info;
     48#else /* !CONFIG_IA32_EMULATION */
     49	struct siginfo info;
     50#endif /* CONFIG_IA32_EMULATION */
     51	struct ucontext_ia32 uc;
     52	char retcode[8];
     53	/* fp state follows here */
     54};
     55#endif /* defined(CONFIG_X86_32) || defined(CONFIG_IA32_EMULATION) */
     56
     57#ifdef CONFIG_X86_64
     58
     59struct rt_sigframe {
     60	char __user *pretcode;
     61	struct ucontext uc;
     62	struct siginfo info;
     63	/* fp state follows here */
     64};
     65
     66#ifdef CONFIG_X86_X32_ABI
     67
     68struct ucontext_x32 {
     69	unsigned int	  uc_flags;
     70	unsigned int 	  uc_link;
     71	compat_stack_t	  uc_stack;
     72	unsigned int	  uc__pad0;     /* needed for alignment */
     73	struct sigcontext uc_mcontext;  /* the 64-bit sigcontext type */
     74	compat_sigset_t	  uc_sigmask;	/* mask last for extensibility */
     75};
     76
     77struct rt_sigframe_x32 {
     78	u64 pretcode;
     79	struct ucontext_x32 uc;
     80	compat_siginfo_t info;
     81	/* fp state follows here */
     82};
     83
     84#endif /* CONFIG_X86_X32_ABI */
     85
     86#endif /* CONFIG_X86_64 */
     87
     88void __init init_sigframe_size(void);
     89
     90#endif /* _ASM_X86_SIGFRAME_H */