1 /* 2 * IRQ flags handling 3 */ 4 #ifndef _ASM_IRQFLAGS_H 5 #define _ASM_IRQFLAGS_H 6 7 #ifndef __ASSEMBLY__ 8 /* 9 * Get definitions for raw_local_save_flags(x), etc. 10 */ 11 #include <asm/hw_irq.h> 12 13 #else 14 #ifdef CONFIG_TRACE_IRQFLAGS 15 /* 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. 19 */ 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 96: stb en,PACASOFTIRQEN(r13) 33 #else 34 #define TRACE_ENABLE_INTS 35 #define TRACE_DISABLE_INTS 36 #define TRACE_AND_RESTORE_IRQ_PARTIAL(en,skip) 37 #define TRACE_AND_RESTORE_IRQ(en) \ 38 stb en,PACASOFTIRQEN(r13) 39 #endif 40 #endif 41 42 #endif 43