| /* SPDX-License-Identifier: GPL-2.0 */ |
| * Copyright (C) 1999 Cort Dougan <cort@cs.nmt.edu> |
| #ifndef _ASM_POWERPC_RUNLATCH_H |
| #define _ASM_POWERPC_RUNLATCH_H |
| extern void __ppc64_runlatch_on(void); |
| extern void __ppc64_runlatch_off(void); |
| * We manually hard enable-disable, this is called |
| * in the idle loop and we don't want to mess up |
| * with soft-disable/enable & interrupt replay. |
| #define ppc64_runlatch_off() \ |
| if (cpu_has_feature(CPU_FTR_CTRL) && \ |
| test_thread_local_flags(_TLF_RUNLATCH)) { \ |
| unsigned long msr = mfmsr(); \ |
| __ppc64_runlatch_off(); \ |
| #define ppc64_runlatch_on() \ |
| if (cpu_has_feature(CPU_FTR_CTRL) && \ |
| !test_thread_local_flags(_TLF_RUNLATCH)) { \ |
| unsigned long msr = mfmsr(); \ |
| #define ppc64_runlatch_on() |
| #define ppc64_runlatch_off() |
| #endif /* CONFIG_PPC64 */ |
| #endif /* _ASM_POWERPC_RUNLATCH_H */ |