| 
									
										
										
										
											2006-07-03 00:24:42 -07:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * IRQ flags handling | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | #ifndef _ASM_IRQFLAGS_H
 | 
					
						
							|  |  |  | #define _ASM_IRQFLAGS_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-17 14:35:01 +10:00
										 |  |  | #ifndef __ASSEMBLY__
 | 
					
						
							| 
									
										
										
										
											2006-07-03 00:24:42 -07:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * Get definitions for raw_local_save_flags(x), etc. | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2008-08-01 15:20:30 +10:00
										 |  |  | #include <asm/hw_irq.h>
 | 
					
						
							| 
									
										
										
										
											2006-07-03 00:24:42 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-17 14:35:01 +10:00
										 |  |  | #else
 | 
					
						
							|  |  |  | #ifdef CONFIG_TRACE_IRQFLAGS
 | 
					
						
							| 
									
										
										
										
											2006-07-03 00:24:42 -07:00
										 |  |  | /*
 | 
					
						
							| 
									
										
										
										
											2008-04-17 14:35:01 +10:00
										 |  |  |  * Most of the CPU's IRQ-state tracing is done from assembly code; we | 
					
						
							|  |  |  |  * have to call a C function so call a wrapper that saves all the | 
					
						
							|  |  |  |  * C-clobbered registers. | 
					
						
							| 
									
										
										
										
											2006-07-03 00:24:42 -07:00
										 |  |  |  */ | 
					
						
							| 
									
										
										
										
											2008-04-17 14:35:01 +10:00
										 |  |  | #define TRACE_ENABLE_INTS	bl .trace_hardirqs_on
 | 
					
						
							|  |  |  | #define TRACE_DISABLE_INTS	bl .trace_hardirqs_off
 | 
					
						
							|  |  |  | #define TRACE_AND_RESTORE_IRQ_PARTIAL(en,skip)	\
 | 
					
						
							| 
									
										
										
										
											2008-08-15 17:11:31 +10:00
										 |  |  | 	cmpdi	en,0;				\ | 
					
						
							| 
									
										
										
										
											2008-04-17 14:35:01 +10:00
										 |  |  | 	bne	95f;				\ | 
					
						
							|  |  |  | 	stb	en,PACASOFTIRQEN(r13);		\ | 
					
						
							|  |  |  | 	bl	.trace_hardirqs_off;		\ | 
					
						
							|  |  |  | 	b	skip;				\ | 
					
						
							|  |  |  | 95:	bl	.trace_hardirqs_on;		\ | 
					
						
							|  |  |  | 	li	en,1; | 
					
						
							|  |  |  | #define TRACE_AND_RESTORE_IRQ(en)		\
 | 
					
						
							|  |  |  | 	TRACE_AND_RESTORE_IRQ_PARTIAL(en,96f);	\ | 
					
						
							| 
									
										
										
										
											2008-08-15 17:11:31 +10:00
										 |  |  | 	stb	en,PACASOFTIRQEN(r13);	        \ | 
					
						
							|  |  |  | 96: | 
					
						
							| 
									
										
										
										
											2006-07-03 00:24:42 -07:00
										 |  |  | #else
 | 
					
						
							| 
									
										
										
										
											2008-04-17 14:35:01 +10:00
										 |  |  | #define TRACE_ENABLE_INTS
 | 
					
						
							|  |  |  | #define TRACE_DISABLE_INTS
 | 
					
						
							|  |  |  | #define TRACE_AND_RESTORE_IRQ_PARTIAL(en,skip)
 | 
					
						
							|  |  |  | #define TRACE_AND_RESTORE_IRQ(en)		\
 | 
					
						
							|  |  |  | 	stb	en,PACASOFTIRQEN(r13) | 
					
						
							|  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2006-07-03 00:24:42 -07:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif
 |