30 lines
		
	
	
	
		
			656 B
			
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
		
		
			
		
	
	
			30 lines
		
	
	
	
		
			656 B
			
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								 * Trampoline to trace irqs off. (otherwise CALLER_ADDR1 might crash)
							 | 
						||
| 
								 | 
							
								 * Copyright 2008 by Steven Rostedt, Red Hat, Inc
							 | 
						||
| 
								 | 
							
								 *  (inspired by Andi Kleen's thunk_64.S)
							 | 
						||
| 
								 | 
							
								 * Subject to the GNU public license, v.2. No warranty of any kind.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									#include <linux/linkage.h>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef CONFIG_TRACE_IRQFLAGS
							 | 
						||
| 
								 | 
							
									/* put return address in eax (arg1) */
							 | 
						||
| 
								 | 
							
									.macro thunk_ra name,func
							 | 
						||
| 
								 | 
							
									.globl \name
							 | 
						||
| 
								 | 
							
								\name:
							 | 
						||
| 
								 | 
							
									pushl %eax
							 | 
						||
| 
								 | 
							
									pushl %ecx
							 | 
						||
| 
								 | 
							
									pushl %edx
							 | 
						||
| 
								 | 
							
									/* Place EIP in the arg1 */
							 | 
						||
| 
								 | 
							
									movl 3*4(%esp), %eax
							 | 
						||
| 
								 | 
							
									call \func
							 | 
						||
| 
								 | 
							
									popl %edx
							 | 
						||
| 
								 | 
							
									popl %ecx
							 | 
						||
| 
								 | 
							
									popl %eax
							 | 
						||
| 
								 | 
							
									ret
							 | 
						||
| 
								 | 
							
									.endm
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									thunk_ra trace_hardirqs_on_thunk,trace_hardirqs_on_caller
							 | 
						||
| 
								 | 
							
									thunk_ra trace_hardirqs_off_thunk,trace_hardirqs_off_caller
							 | 
						||
| 
								 | 
							
								#endif
							 |