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 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 42 43 #endif 44