| 
									
										
										
										
											2009-11-24 01:24:58 +00:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * 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) 2009 Wind River Systems, | 
					
						
							|  |  |  |  *   written by Ralf Baechle <ralf@linux-mips.org> | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | #ifndef __ASM_COP2_H
 | 
					
						
							|  |  |  | #define __ASM_COP2_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-05 13:25:59 +01:00
										 |  |  | #include <linux/notifier.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-10 06:30:00 +00:00
										 |  |  | #if defined(CONFIG_CPU_CAVIUM_OCTEON)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | extern void octeon_cop2_save(struct octeon_cop2_state *); | 
					
						
							|  |  |  | extern void octeon_cop2_restore(struct octeon_cop2_state *); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define cop2_save(r)		octeon_cop2_save(r)
 | 
					
						
							|  |  |  | #define cop2_restore(r)		octeon_cop2_restore(r)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define cop2_present		1
 | 
					
						
							|  |  |  | #define cop2_lazy_restore	1
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-10 06:30:04 +00:00
										 |  |  | #elif defined(CONFIG_CPU_XLP)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | extern void nlm_cop2_save(struct nlm_cop2_state *); | 
					
						
							|  |  |  | extern void nlm_cop2_restore(struct nlm_cop2_state *); | 
					
						
							|  |  |  | #define cop2_save(r)		nlm_cop2_save(r)
 | 
					
						
							|  |  |  | #define cop2_restore(r)		nlm_cop2_restore(r)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define cop2_present		1
 | 
					
						
							|  |  |  | #define cop2_lazy_restore	0
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-10 06:30:00 +00:00
										 |  |  | #else
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define cop2_present		0
 | 
					
						
							|  |  |  | #define cop2_lazy_restore	0
 | 
					
						
							|  |  |  | #define cop2_save(r)
 | 
					
						
							|  |  |  | #define cop2_restore(r)
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-24 01:24:58 +00:00
										 |  |  | enum cu2_ops { | 
					
						
							|  |  |  | 	CU2_EXCEPTION, | 
					
						
							|  |  |  | 	CU2_LWC2_OP, | 
					
						
							|  |  |  | 	CU2_LDC2_OP, | 
					
						
							|  |  |  | 	CU2_SWC2_OP, | 
					
						
							|  |  |  | 	CU2_SDC2_OP, | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | extern int register_cu2_notifier(struct notifier_block *nb); | 
					
						
							|  |  |  | extern int cu2_notifier_call_chain(unsigned long val, void *v); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-05 13:25:59 +01:00
										 |  |  | #define cu2_notifier(fn, pri)						\
 | 
					
						
							|  |  |  | ({									\ | 
					
						
							| 
									
										
										
										
											2010-09-23 11:23:29 -07:00
										 |  |  | 	static struct notifier_block fn##_nb = {			\ | 
					
						
							| 
									
										
										
										
											2010-08-05 13:25:59 +01:00
										 |  |  | 		.notifier_call = fn,					\ | 
					
						
							|  |  |  | 		.priority = pri						\ | 
					
						
							|  |  |  | 	};								\ | 
					
						
							|  |  |  | 									\ | 
					
						
							|  |  |  | 	register_cu2_notifier(&fn##_nb);				\ | 
					
						
							|  |  |  | }) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-24 01:24:58 +00:00
										 |  |  | #endif /* __ASM_COP2_H */
 |