mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	It is desirable for signal handlers to be allowed to make use of MSA, particularly if auto vectorisation is used when compiling a program. The MSA context must therefore be saved & restored before & after invoking the signal handler. Make use of the extended context structs defined in the preceding patch to save MSA context after the sigframe when appropriate. [ralf@linux-mips.org: Fixed conflicts.] Signed-off-by: Paul Burton <paul.burton@imgtec.com> Cc: linux-mips@linux-mips.org Cc: Guenter Roeck <linux@roeck-us.net> Cc: Matthew Fortune <matthew.fortune@imgtec.com> Cc: Leonid Yegoshin <Leonid.Yegoshin@imgtec.com> Cc: linux-kernel@vger.kernel.org Cc: Richard Weinberger <richard@nod.at> Cc: James Hogan <james.hogan@imgtec.com> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Andy Lutomirski <luto@amacapital.net> Cc: Markos Chandras <markos.chandras@imgtec.com> Cc: Manuel Lauss <manuel.lauss@gmail.com> Cc: Maciej W. Rozycki <macro@codesourcery.com> Patchwork: https://patchwork.linux-mips.org/patch/10796/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
		
			
				
	
	
		
			43 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 * This file is subject to the terms and conditions of the GNU General Public
 | 
						|
 * License.  See the file "COPYING" in the main directory of this archive
 | 
						|
 * for more details.
 | 
						|
 *
 | 
						|
 * Copyright (C) 1991, 1992  Linus Torvalds
 | 
						|
 * Copyright (C) 1994 - 2000  Ralf Baechle
 | 
						|
 * Copyright (C) 1999, 2000 Silicon Graphics, Inc.
 | 
						|
 */
 | 
						|
 | 
						|
#ifndef __SIGNAL_COMMON_H
 | 
						|
#define __SIGNAL_COMMON_H
 | 
						|
 | 
						|
/* #define DEBUG_SIG */
 | 
						|
 | 
						|
#ifdef DEBUG_SIG
 | 
						|
#  define DEBUGP(fmt, args...) printk("%s: " fmt, __func__, ##args)
 | 
						|
#else
 | 
						|
#  define DEBUGP(fmt, args...)
 | 
						|
#endif
 | 
						|
 | 
						|
/*
 | 
						|
 * Determine which stack to use..
 | 
						|
 */
 | 
						|
extern void __user *get_sigframe(struct ksignal *ksig, struct pt_regs *regs,
 | 
						|
				 size_t frame_size);
 | 
						|
/* Check and clear pending FPU exceptions in saved CSR */
 | 
						|
extern int fpcsr_pending(unsigned int __user *fpcsr);
 | 
						|
 | 
						|
/* Make sure we will not lose FPU ownership */
 | 
						|
#define lock_fpu_owner()	({ preempt_disable(); pagefault_disable(); })
 | 
						|
#define unlock_fpu_owner()	({ pagefault_enable(); preempt_enable(); })
 | 
						|
 | 
						|
/* Assembly functions to move context to/from the FPU */
 | 
						|
extern asmlinkage int
 | 
						|
_save_fp_context(void __user *fpregs, void __user *csr);
 | 
						|
extern asmlinkage int
 | 
						|
_restore_fp_context(void __user *fpregs, void __user *csr);
 | 
						|
 | 
						|
extern asmlinkage int _save_msa_all_upper(void __user *buf);
 | 
						|
extern asmlinkage int _restore_msa_all_upper(void __user *buf);
 | 
						|
 | 
						|
#endif	/* __SIGNAL_COMMON_H */
 |