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; \ 2895: 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); \ 3396: 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