License cleanup: add SPDX GPL-2.0 license identifier to files with no license
[sfrench/cifs-2.6.git] / arch / powerpc / include / asm / runlatch.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * Copyright (C) 1999 Cort Dougan <cort@cs.nmt.edu>
4  */
5 #ifndef _ASM_POWERPC_RUNLATCH_H
6 #define _ASM_POWERPC_RUNLATCH_H
7
8 #ifdef CONFIG_PPC64
9
10 extern void __ppc64_runlatch_on(void);
11 extern void __ppc64_runlatch_off(void);
12
13 /*
14  * We manually hard enable-disable, this is called
15  * in the idle loop and we don't want to mess up
16  * with soft-disable/enable & interrupt replay.
17  */
18 #define ppc64_runlatch_off()                                    \
19         do {                                                    \
20                 if (cpu_has_feature(CPU_FTR_CTRL) &&            \
21                     test_thread_local_flags(_TLF_RUNLATCH)) {   \
22                         unsigned long msr = mfmsr();            \
23                         __hard_irq_disable();                   \
24                         __ppc64_runlatch_off();                 \
25                         if (msr & MSR_EE)                       \
26                                 __hard_irq_enable();            \
27                 }                                               \
28         } while (0)
29
30 #define ppc64_runlatch_on()                                     \
31         do {                                                    \
32                 if (cpu_has_feature(CPU_FTR_CTRL) &&            \
33                     !test_thread_local_flags(_TLF_RUNLATCH)) {  \
34                         unsigned long msr = mfmsr();            \
35                         __hard_irq_disable();                   \
36                         __ppc64_runlatch_on();                  \
37                         if (msr & MSR_EE)                       \
38                                 __hard_irq_enable();            \
39                 }                                               \
40         } while (0)
41 #else
42 #define ppc64_runlatch_on()
43 #define ppc64_runlatch_off()
44 #endif /* CONFIG_PPC64 */
45
46 #endif /* _ASM_POWERPC_RUNLATCH_H */