/arch/powerpc/include/asm/runlatch.h
https://github.com/aicjofs/android_kernel_lge_v500_20d_f2fs · C Header · 45 lines · 32 code · 5 blank · 8 comment · 6 complexity · f9327400302e5c047d560337f08a690a MD5 · raw file
- /*
- * Copyright (C) 1999 Cort Dougan <cort@cs.nmt.edu>
- */
- #ifndef _ASM_POWERPC_RUNLATCH_H
- #define _ASM_POWERPC_RUNLATCH_H
- #ifdef CONFIG_PPC64
- 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() \
- do { \
- if (cpu_has_feature(CPU_FTR_CTRL) && \
- test_thread_local_flags(_TLF_RUNLATCH)) { \
- unsigned long msr = mfmsr(); \
- __hard_irq_disable(); \
- __ppc64_runlatch_off(); \
- if (msr & MSR_EE) \
- __hard_irq_enable(); \
- } \
- } while (0)
- #define ppc64_runlatch_on() \
- do { \
- if (cpu_has_feature(CPU_FTR_CTRL) && \
- !test_thread_local_flags(_TLF_RUNLATCH)) { \
- unsigned long msr = mfmsr(); \
- __hard_irq_disable(); \
- __ppc64_runlatch_on(); \
- if (msr & MSR_EE) \
- __hard_irq_enable(); \
- } \
- } while (0)
- #else
- #define ppc64_runlatch_on()
- #define ppc64_runlatch_off()
- #endif /* CONFIG_PPC64 */
- #endif /* _ASM_POWERPC_RUNLATCH_H */