summaryrefslogtreecommitdiffstats
path: root/arch/powerpc/include/asm/irqflags.h
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2008-08-04 17:25:06 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2008-08-04 17:25:06 -0700
commit2acb802b0c5485aedb46e23b2b45e49573454c09 (patch)
tree82afbba3d073ce903cb737412b6eccdf8adab4b5 /arch/powerpc/include/asm/irqflags.h
parentd8f4b819c3a5b54a978c6fe5249a17cff490c4a1 (diff)
parent9c4cb82515130c62224e23fdf7c13c8f6c59c614 (diff)
Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc
* 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc: powerpc: Remove use of CONFIG_PPC_MERGE powerpc: Force printing of 'total_memory' to unsigned long long powerpc: Fix compiler warning in arch/powerpc/mm/mem.c powerpc: Move include files to arch/powerpc/include/asm
Diffstat (limited to 'arch/powerpc/include/asm/irqflags.h')
-rw-r--r--arch/powerpc/include/asm/irqflags.h42
1 files changed, 42 insertions, 0 deletions
diff --git a/arch/powerpc/include/asm/irqflags.h b/arch/powerpc/include/asm/irqflags.h
new file mode 100644
index 00000000000..17ba3a881bf
--- /dev/null
+++ b/arch/powerpc/include/asm/irqflags.h
@@ -0,0 +1,42 @@
+/*
+ * IRQ flags handling
+ */
+#ifndef _ASM_IRQFLAGS_H
+#define _ASM_IRQFLAGS_H
+
+#ifndef __ASSEMBLY__
+/*
+ * Get definitions for raw_local_save_flags(x), etc.
+ */
+#include <asm/hw_irq.h>
+
+#else
+#ifdef CONFIG_TRACE_IRQFLAGS
+/*
+ * Most of the CPU's IRQ-state tracing is done from assembly code; we
+ * have to call a C function so call a wrapper that saves all the
+ * C-clobbered registers.
+ */
+#define TRACE_ENABLE_INTS bl .trace_hardirqs_on
+#define TRACE_DISABLE_INTS bl .trace_hardirqs_off
+#define TRACE_AND_RESTORE_IRQ_PARTIAL(en,skip) \
+ cmpdi en, 0; \
+ bne 95f; \
+ stb en,PACASOFTIRQEN(r13); \
+ bl .trace_hardirqs_off; \
+ b skip; \
+95: bl .trace_hardirqs_on; \
+ li en,1;
+#define TRACE_AND_RESTORE_IRQ(en) \
+ TRACE_AND_RESTORE_IRQ_PARTIAL(en,96f); \
+96: stb en,PACASOFTIRQEN(r13)
+#else
+#define TRACE_ENABLE_INTS
+#define TRACE_DISABLE_INTS
+#define TRACE_AND_RESTORE_IRQ_PARTIAL(en,skip)
+#define TRACE_AND_RESTORE_IRQ(en) \
+ stb en,PACASOFTIRQEN(r13)
+#endif
+#endif
+
+#endif