42 lines
		
	
	
	
		
			928 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			42 lines
		
	
	
	
		
			928 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								 * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * This program is free software; you can redistribute it and/or modify
							 | 
						||
| 
								 | 
							
								 * it under the terms of the GNU General Public License version 2 as
							 | 
						||
| 
								 | 
							
								 * published by the Free Software Foundation.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifndef _ASM_ARC_SWITCH_TO_H
							 | 
						||
| 
								 | 
							
								#define _ASM_ARC_SWITCH_TO_H
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifndef __ASSEMBLY__
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <linux/sched.h>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef CONFIG_ARC_FPU_SAVE_RESTORE
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								extern void fpu_save_restore(struct task_struct *p, struct task_struct *n);
							 | 
						||
| 
								 | 
							
								#define ARC_FPU_PREV(p, n)	fpu_save_restore(p, n)
							 | 
						||
| 
								 | 
							
								#define ARC_FPU_NEXT(t)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#else
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define ARC_FPU_PREV(p, n)
							 | 
						||
| 
								 | 
							
								#define ARC_FPU_NEXT(n)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif /* !CONFIG_ARC_FPU_SAVE_RESTORE */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct task_struct *__switch_to(struct task_struct *p, struct task_struct *n);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define switch_to(prev, next, last)	\
							 | 
						||
| 
								 | 
							
								do {					\
							 | 
						||
| 
								 | 
							
									ARC_FPU_PREV(prev, next);	\
							 | 
						||
| 
								 | 
							
									last = __switch_to(prev, next);\
							 | 
						||
| 
								 | 
							
									ARC_FPU_NEXT(next);		\
							 | 
						||
| 
								 | 
							
									mb();				\
							 | 
						||
| 
								 | 
							
								} while (0)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif
							 |