diff options
| author | Chris Zankel <chris@zankel.net> | 2016-01-21 00:17:09 -0500 |
|---|---|---|
| committer | Chris Zankel <chris@zankel.net> | 2016-01-21 00:17:09 -0500 |
| commit | bb2f3486041aa126cb7ce4929f1e45ede85f0051 (patch) | |
| tree | 144450f64cc6ad20d72026ed406ccedb524720d9 /arch/xtensa/include/asm/processor.h | |
| parent | d1208404dd477c142680437137c9996b95bfd508 (diff) | |
| parent | 5bb8def55dc562d81ec582368b4f27c8d432fbd5 (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.h | 12 |
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 | ||
