Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) #ifndef __SPARC_SIGCONTEXT_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3) #define __SPARC_SIGCONTEXT_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5) #include <asm/ptrace.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6) #include <uapi/asm/sigcontext.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8) #ifndef __ASSEMBLY__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) #define __SUNOS_MAXWIN   31
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) /* This is what SunOS does, so shall I unless we use new 32bit signals or rt signals. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) struct sigcontext32 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) 	int sigc_onstack;      /* state to restore */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) 	int sigc_mask;         /* sigmask to restore */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) 	int sigc_sp;           /* stack pointer */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) 	int sigc_pc;           /* program counter */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) 	int sigc_npc;          /* next program counter */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) 	int sigc_psr;          /* for condition codes etc */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) 	int sigc_g1;           /* User uses these two registers */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) 	int sigc_o0;           /* within the trampoline code. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) 	/* Now comes information regarding the users window set
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) 	 * at the time of the signal.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) 	int sigc_oswins;       /* outstanding windows */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) 	/* stack ptrs for each regwin buf */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) 	unsigned int sigc_spbuf[__SUNOS_MAXWIN];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) 	/* Windows to restore after signal */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) 	struct reg_window32 sigc_wbuf[__SUNOS_MAXWIN];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) /* This is what we use for 32bit new non-rt signals. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) typedef struct {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) 	struct {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) 		unsigned int psr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) 		unsigned int pc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) 		unsigned int npc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) 		unsigned int y;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) 		unsigned int u_regs[16]; /* globals and ins */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) 	}			si_regs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) 	int			si_mask;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) } __siginfo32_t;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) #define __SIGC_MAXWIN	7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) typedef struct {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) 	unsigned long locals[8];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) 	unsigned long ins[8];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) } __siginfo_reg_window;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) typedef struct {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) 	int			wsaved;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) 	__siginfo_reg_window	reg_window[__SIGC_MAXWIN];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) 	unsigned long		rwbuf_stkptrs[__SIGC_MAXWIN];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) } __siginfo_rwin_t;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) #ifdef CONFIG_SPARC64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) typedef struct {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) 	unsigned   int si_float_regs [64];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) 	unsigned   long si_fsr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) 	unsigned   long si_gsr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) 	unsigned   long si_fprs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) } __siginfo_fpu_t;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) /* This is what SunOS doesn't, so we have to write this alone
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71)    and do it properly. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) struct sigcontext {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) 	/* The size of this array has to match SI_MAX_SIZE from siginfo.h */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) 	char			sigc_info[128];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) 	struct {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) 		unsigned long	u_regs[16]; /* globals and ins */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) 		unsigned long	tstate;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) 		unsigned long	tpc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) 		unsigned long	tnpc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) 		unsigned int	y;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) 		unsigned int	fprs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) 	}			sigc_regs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) 	__siginfo_fpu_t *	sigc_fpu_save;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) 	struct {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) 		void	*	ss_sp;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) 		int		ss_flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) 		unsigned long	ss_size;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) 	}			sigc_stack;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) 	unsigned long		sigc_mask;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) 	__siginfo_rwin_t *	sigc_rwin_save;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) typedef struct {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) 	unsigned long si_float_regs [32];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) 	unsigned long si_fsr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) 	unsigned long si_fpqdepth;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) 	struct {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) 		unsigned long *insn_addr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) 		unsigned long insn;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) 	} si_fpqueue [16];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) } __siginfo_fpu_t;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) #endif /* (CONFIG_SPARC64) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) #endif /* !(__ASSEMBLY__) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) #endif /* !(__SPARC_SIGCONTEXT_H) */