mirror of
				https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
				synced 2025-10-31 09:36:25 +00:00 
			
		
		
		
	 00ebfe58b0
			
		
	
	
		00ebfe58b0
		
	
	
	
	
		
			
			The following patch defines sigcontext ABI of ColdFire. Due to ISA restrictions ColdFire needs different rt_sigreturn trampoline. And due to ColdFire FP registers being 8-bytes instead of 12-bytes on m68k, sigcontext and fpregset structures should be updated. Regarding the sc_fpstate[16+6*8] field, it would've been enough 16 bytes to store ColdFire's FP state. To accomodate GLIBC's libSegFault it would'be been enough 6*8 bytes (room for the 6 non-call-clobbered FP registers). I set it to 16+6*8 to provide some extra space for any future changes in the ColdFire FPU. Signed-off-by: Maxim Kuvyrkov <maxim@codesourcery.com> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
		
			
				
	
	
		
			35 lines
		
	
	
		
			586 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			586 B
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef _M68K_UCONTEXT_H
 | |
| #define _M68K_UCONTEXT_H
 | |
| 
 | |
| typedef int greg_t;
 | |
| #define NGREG 18
 | |
| typedef greg_t gregset_t[NGREG];
 | |
| 
 | |
| typedef struct fpregset {
 | |
| 	int f_fpcntl[3];
 | |
| #ifdef __mcoldfire__
 | |
| 	int f_fpregs[8][2];
 | |
| #else
 | |
| 	int f_fpregs[8*3];
 | |
| #endif
 | |
| } fpregset_t;
 | |
| 
 | |
| struct mcontext {
 | |
| 	int version;
 | |
| 	gregset_t gregs;
 | |
| 	fpregset_t fpregs;
 | |
| };
 | |
| 
 | |
| #define MCONTEXT_VERSION 2
 | |
| 
 | |
| struct ucontext {
 | |
| 	unsigned long	  uc_flags;
 | |
| 	struct ucontext  *uc_link;
 | |
| 	stack_t		  uc_stack;
 | |
| 	struct mcontext	  uc_mcontext;
 | |
| 	unsigned long	  uc_filler[80];
 | |
| 	sigset_t	  uc_sigmask;	/* mask last for extensibility */
 | |
| };
 | |
| 
 | |
| #endif
 |