1 /* SPDX-License-Identifier: GPL-2.0 */ 1 2 #ifndef __ASM_CPUIDLE_H 3 #define __ASM_CPUIDLE_H 4 5 #include <asm/proc-fns.h> 6 7 #ifdef CONFIG_ARM64_PSEUDO_NMI 8 #include <asm/arch_gicv3.h> 9 10 struct arm_cpuidle_irq_context { 11 unsigned long pmr; 12 unsigned long daif_bits; 13 }; 14 15 #define arm_cpuidle_save_irq_context(__c) 16 do { 17 struct arm_cpuidle_irq_context 18 if (system_uses_irq_prio_maski 19 c->daif_bits = read_sy 20 write_sysreg(c->daif_b 21 daif); 22 c->pmr = gic_read_pmr( 23 gic_write_pmr(GIC_PRIO 24 } 25 } while (0) 26 27 #define arm_cpuidle_restore_irq_context(__c) 28 do { 29 struct arm_cpuidle_irq_context 30 if (system_uses_irq_prio_maski 31 gic_write_pmr(c->pmr); 32 write_sysreg(c->daif_b 33 } 34 } while (0) 35 #else 36 struct arm_cpuidle_irq_context { }; 37 38 #define arm_cpuidle_save_irq_context(c) 39 #define arm_cpuidle_restore_irq_context(c) 40 #endif 41 #endif 42
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.