Linux Audio

Check our new training course

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