Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux...
[linux-2.6] / include / asm-powerpc / irqflags.h
1 /*
2  * include/asm-powerpc/irqflags.h
3  *
4  * IRQ flags handling
5  */
6 #ifndef _ASM_IRQFLAGS_H
7 #define _ASM_IRQFLAGS_H
8
9 #ifndef __ASSEMBLY__
10 /*
11  * Get definitions for raw_local_save_flags(x), etc.
12  */
13 #include <asm-powerpc/hw_irq.h>
14
15 #else
16 #ifdef CONFIG_TRACE_IRQFLAGS
17 /*
18  * Most of the CPU's IRQ-state tracing is done from assembly code; we
19  * have to call a C function so call a wrapper that saves all the
20  * C-clobbered registers.
21  */
22 #define TRACE_ENABLE_INTS       bl .trace_hardirqs_on
23 #define TRACE_DISABLE_INTS      bl .trace_hardirqs_off
24 #define TRACE_AND_RESTORE_IRQ_PARTIAL(en,skip)  \
25         cmpdi   en, 0;                          \
26         bne     95f;                            \
27         stb     en,PACASOFTIRQEN(r13);          \
28         bl      .trace_hardirqs_off;            \
29         b       skip;                           \
30 95:     bl      .trace_hardirqs_on;             \
31         li      en,1;
32 #define TRACE_AND_RESTORE_IRQ(en)               \
33         TRACE_AND_RESTORE_IRQ_PARTIAL(en,96f);  \
34 96:     stb     en,PACASOFTIRQEN(r13)
35 #else
36 #define TRACE_ENABLE_INTS
37 #define TRACE_DISABLE_INTS
38 #define TRACE_AND_RESTORE_IRQ_PARTIAL(en,skip)
39 #define TRACE_AND_RESTORE_IRQ(en)               \
40         stb     en,PACASOFTIRQEN(r13)
41 #endif
42 #endif
43
44 #endif