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