blob: 2930ae05d77305a3c3f76b821f843203969ffb2b [file] [log] [blame]
Steven Rostedt81d68a92008-05-12 21:20:42 +02001/*
2 * Trampoline to trace irqs off. (otherwise CALLER_ADDR1 might crash)
3 * Copyright 2008 by Steven Rostedt, Red Hat, Inc
4 * (inspired by Andi Kleen's thunk_64.S)
5 * Subject to the GNU public license, v.2. No warranty of any kind.
6 */
7
8 #include <linux/linkage.h>
9
Steven Rostedt81d68a92008-05-12 21:20:42 +020010#ifdef CONFIG_TRACE_IRQFLAGS
11 /* put return address in eax (arg1) */
12 .macro thunk_ra name,func
13 .globl \name
14\name:
15 pushl %eax
16 pushl %ecx
17 pushl %edx
18 /* Place EIP in the arg1 */
19 movl 3*4(%esp), %eax
20 call \func
21 popl %edx
22 popl %ecx
23 popl %eax
24 ret
25 .endm
26
27 thunk_ra trace_hardirqs_on_thunk,trace_hardirqs_on_caller
28 thunk_ra trace_hardirqs_off_thunk,trace_hardirqs_off_caller
29#endif