aboutsummaryrefslogtreecommitdiffstats
path: root/arch/xtensa/include/asm/processor.h
diff options
context:
space:
mode:
authorChris Zankel <chris@zankel.net>2016-01-21 00:17:09 -0500
committerChris Zankel <chris@zankel.net>2016-01-21 00:17:09 -0500
commitbb2f3486041aa126cb7ce4929f1e45ede85f0051 (patch)
tree144450f64cc6ad20d72026ed406ccedb524720d9 /arch/xtensa/include/asm/processor.h
parentd1208404dd477c142680437137c9996b95bfd508 (diff)
parent5bb8def55dc562d81ec582368b4f27c8d432fbd5 (diff)
Merge tag 'xtensa-for-next-20160111' of git://github.com/jcmvbkbc/linux-xtensa
Xtensa improvements for 4.5: - control whether perf IRQ is treated as NMI from Kconfig; - implement ioremap for regions outside KIO segment.
Diffstat (limited to 'arch/xtensa/include/asm/processor.h')
-rw-r--r--arch/xtensa/include/asm/processor.h12
1 files changed, 5 insertions, 7 deletions
diff --git a/arch/xtensa/include/asm/processor.h b/arch/xtensa/include/asm/processor.h
index 83e2e4bc01ba..744ecf0dc3a4 100644
--- a/arch/xtensa/include/asm/processor.h
+++ b/arch/xtensa/include/asm/processor.h
@@ -78,22 +78,20 @@
78#define XTENSA_INTLEVEL_MASK(level) _XTENSA_INTLEVEL_MASK(level) 78#define XTENSA_INTLEVEL_MASK(level) _XTENSA_INTLEVEL_MASK(level)
79#define _XTENSA_INTLEVEL_MASK(level) (XCHAL_INTLEVEL##level##_MASK) 79#define _XTENSA_INTLEVEL_MASK(level) (XCHAL_INTLEVEL##level##_MASK)
80 80
81#define IS_POW2(v) (((v) & ((v) - 1)) == 0) 81#define XTENSA_INTLEVEL_ANDBELOW_MASK(l) _XTENSA_INTLEVEL_ANDBELOW_MASK(l)
82#define _XTENSA_INTLEVEL_ANDBELOW_MASK(l) (XCHAL_INTLEVEL##l##_ANDBELOW_MASK)
82 83
83#define PROFILING_INTLEVEL XTENSA_INT_LEVEL(XCHAL_PROFILING_INTERRUPT) 84#define PROFILING_INTLEVEL XTENSA_INT_LEVEL(XCHAL_PROFILING_INTERRUPT)
84 85
85/* LOCKLEVEL defines the interrupt level that masks all 86/* LOCKLEVEL defines the interrupt level that masks all
86 * general-purpose interrupts. 87 * general-purpose interrupts.
87 */ 88 */
88#if defined(CONFIG_XTENSA_VARIANT_HAVE_PERF_EVENTS) && \ 89#if defined(CONFIG_XTENSA_FAKE_NMI) && defined(XCHAL_PROFILING_INTERRUPT)
89 defined(XCHAL_PROFILING_INTERRUPT) && \ 90#define LOCKLEVEL (PROFILING_INTLEVEL - 1)
90 PROFILING_INTLEVEL == XCHAL_EXCM_LEVEL && \
91 XCHAL_EXCM_LEVEL > 1 && \
92 IS_POW2(XTENSA_INTLEVEL_MASK(PROFILING_INTLEVEL))
93#define LOCKLEVEL (XCHAL_EXCM_LEVEL - 1)
94#else 91#else
95#define LOCKLEVEL XCHAL_EXCM_LEVEL 92#define LOCKLEVEL XCHAL_EXCM_LEVEL
96#endif 93#endif
94
97#define TOPLEVEL XCHAL_EXCM_LEVEL 95#define TOPLEVEL XCHAL_EXCM_LEVEL
98#define XTENSA_FAKE_NMI (LOCKLEVEL < TOPLEVEL) 96#define XTENSA_FAKE_NMI (LOCKLEVEL < TOPLEVEL)
99 97