 ce437484fc
			
		
	
	
		ce437484fc
		
	
	
	
	
		
			
			Some platforms used the wrong definition of stack_t where the flags and size fields were swapped or where the flags field had type ulong instead of int. Due to the presence of padding space in the structure and the prevalence of little-endian machines this problem went unnoticed for a long time. The type definitions have been cross-checked with the ones defined in the Linux kernel v5.9, plus some older versions for a few architecture that have been removed and Xilinx's kernel fork for NiosII [1]. The bsd-user headers remain unchanged as I don't know if they are wrong or not. [1] https://github.com/Xilinx/linux-xlnx/blob/master/arch/nios2/include/uapi/asm/signal.h Signed-off-by: Giuseppe Musacchio <thatlemon@gmail.com> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Message-Id: <e9d47692-ee92-009f-6007-0abc3f502b97@gmail.com> Signed-off-by: Laurent Vivier <laurent@vivier.eu>
		
			
				
	
	
		
			77 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef MIPS_TARGET_SIGNAL_H
 | |
| #define MIPS_TARGET_SIGNAL_H
 | |
| 
 | |
| #define TARGET_SIGHUP            1      /* Hangup (POSIX).  */
 | |
| #define TARGET_SIGINT            2      /* Interrupt (ANSI).  */
 | |
| #define TARGET_SIGQUIT           3      /* Quit (POSIX).  */
 | |
| #define TARGET_SIGILL            4      /* Illegal instruction (ANSI).  */
 | |
| #define TARGET_SIGTRAP           5      /* Trace trap (POSIX).  */
 | |
| #define TARGET_SIGIOT            6      /* IOT trap (4.2 BSD).  */
 | |
| #define TARGET_SIGABRT           TARGET_SIGIOT  /* Abort (ANSI).  */
 | |
| #define TARGET_SIGEMT            7
 | |
| #define TARGET_SIGSTKFLT         7 /* XXX: incorrect */
 | |
| #define TARGET_SIGFPE            8      /* Floating-point exception (ANSI).  */
 | |
| #define TARGET_SIGKILL           9      /* Kill, unblockable (POSIX).  */
 | |
| #define TARGET_SIGBUS           10      /* BUS error (4.2 BSD).  */
 | |
| #define TARGET_SIGSEGV          11      /* Segmentation violation (ANSI).  */
 | |
| #define TARGET_SIGSYS           12
 | |
| #define TARGET_SIGPIPE          13      /* Broken pipe (POSIX).  */
 | |
| #define TARGET_SIGALRM          14      /* Alarm clock (POSIX).  */
 | |
| #define TARGET_SIGTERM          15      /* Termination (ANSI).  */
 | |
| #define TARGET_SIGUSR1          16      /* User-defined signal 1 (POSIX).  */
 | |
| #define TARGET_SIGUSR2          17      /* User-defined signal 2 (POSIX).  */
 | |
| #define TARGET_SIGCHLD          18      /* Child status has changed (POSIX).  */
 | |
| #define TARGET_SIGCLD           TARGET_SIGCHLD  /* Same as TARGET_SIGCHLD (System V).  */
 | |
| #define TARGET_SIGPWR           19      /* Power failure restart (System V).  */
 | |
| #define TARGET_SIGWINCH 20      /* Window size change (4.3 BSD, Sun).  */
 | |
| #define TARGET_SIGURG           21      /* Urgent condition on socket (4.2 BSD).  */
 | |
| #define TARGET_SIGIO            22      /* I/O now possible (4.2 BSD).  */
 | |
| #define TARGET_SIGPOLL          TARGET_SIGIO    /* Pollable event occurred (System V).  */
 | |
| #define TARGET_SIGSTOP          23      /* Stop, unblockable (POSIX).  */
 | |
| #define TARGET_SIGTSTP          24      /* Keyboard stop (POSIX).  */
 | |
| #define TARGET_SIGCONT          25      /* Continue (POSIX).  */
 | |
| #define TARGET_SIGTTIN          26      /* Background read from tty (POSIX).  */
 | |
| #define TARGET_SIGTTOU          27      /* Background write to tty (POSIX).  */
 | |
| #define TARGET_SIGVTALRM        28      /* Virtual alarm clock (4.2 BSD).  */
 | |
| #define TARGET_SIGPROF          29      /* Profiling alarm clock (4.2 BSD).  */
 | |
| #define TARGET_SIGXCPU          30      /* CPU limit exceeded (4.2 BSD).  */
 | |
| #define TARGET_SIGXFSZ          31      /* File size limit exceeded (4.2 BSD).  */
 | |
| #define TARGET_SIGRTMIN         32
 | |
| 
 | |
| #define TARGET_SIG_BLOCK        1       /* for blocking signals */
 | |
| #define TARGET_SIG_UNBLOCK      2       /* for unblocking signals */
 | |
| #define TARGET_SIG_SETMASK      3       /* for setting the signal mask */
 | |
| 
 | |
| /* this struct defines a stack used during syscall handling */
 | |
| 
 | |
| typedef struct target_sigaltstack {
 | |
|     abi_ulong ss_sp;
 | |
|     abi_ulong ss_size;
 | |
|     abi_int ss_flags;
 | |
| } target_stack_t;
 | |
| 
 | |
| 
 | |
| /*
 | |
|  * sigaltstack controls
 | |
|  */
 | |
| #define TARGET_SS_ONSTACK     1
 | |
| #define TARGET_SS_DISABLE     2
 | |
| 
 | |
| #define TARGET_SA_NOCLDSTOP     0x00000001
 | |
| #define TARGET_SA_NOCLDWAIT     0x00010000
 | |
| #define TARGET_SA_SIGINFO       0x00000008
 | |
| #define TARGET_SA_ONSTACK       0x08000000
 | |
| #define TARGET_SA_NODEFER       0x40000000
 | |
| #define TARGET_SA_RESTART       0x10000000
 | |
| #define TARGET_SA_RESETHAND     0x80000000
 | |
| #define TARGET_SA_RESTORER      0x04000000      /* Only for O32 */
 | |
| 
 | |
| #define TARGET_MINSIGSTKSZ    2048
 | |
| #define TARGET_SIGSTKSZ       8192
 | |
| 
 | |
| #if defined(TARGET_ABI_MIPSO32)
 | |
| /* compare linux/arch/mips/kernel/signal.c:setup_frame() */
 | |
| #define TARGET_ARCH_HAS_SETUP_FRAME
 | |
| #endif
 | |
| #endif /* MIPS_TARGET_SIGNAL_H */
 |