Linux Audio

Check our new training course

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