cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

cpuidle.h (1628B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#ifndef __ASM_ARM_CPUIDLE_H
      3#define __ASM_ARM_CPUIDLE_H
      4
      5#include <asm/proc-fns.h>
      6
      7#ifdef CONFIG_CPU_IDLE
      8extern int arm_cpuidle_simple_enter(struct cpuidle_device *dev,
      9		struct cpuidle_driver *drv, int index);
     10#define __cpuidle_method_section __used __section("__cpuidle_method_of_table")
     11#else
     12static inline int arm_cpuidle_simple_enter(struct cpuidle_device *dev,
     13		struct cpuidle_driver *drv, int index) { return -ENODEV; }
     14#define __cpuidle_method_section __maybe_unused /* drop silently */
     15#endif
     16
     17/* Common ARM WFI state */
     18#define ARM_CPUIDLE_WFI_STATE_PWR(p) {\
     19	.enter                  = arm_cpuidle_simple_enter,\
     20	.exit_latency           = 1,\
     21	.target_residency       = 1,\
     22	.power_usage		= p,\
     23	.name                   = "WFI",\
     24	.desc                   = "ARM WFI",\
     25}
     26
     27/*
     28 * in case power_specified == 1, give a default WFI power value needed
     29 * by some governors
     30 */
     31#define ARM_CPUIDLE_WFI_STATE ARM_CPUIDLE_WFI_STATE_PWR(UINT_MAX)
     32
     33struct device_node;
     34
     35struct cpuidle_ops {
     36	int (*suspend)(unsigned long arg);
     37	int (*init)(struct device_node *, int cpu);
     38};
     39
     40struct of_cpuidle_method {
     41	const char *method;
     42	const struct cpuidle_ops *ops;
     43};
     44
     45#define CPUIDLE_METHOD_OF_DECLARE(name, _method, _ops)			\
     46	static const struct of_cpuidle_method __cpuidle_method_of_table_##name \
     47	__cpuidle_method_section = { .method = _method, .ops = _ops }
     48
     49extern int arm_cpuidle_suspend(int index);
     50
     51extern int arm_cpuidle_init(int cpu);
     52
     53struct arm_cpuidle_irq_context { };
     54
     55#define arm_cpuidle_save_irq_context(c)		(void)c
     56#define arm_cpuidle_restore_irq_context(c)	(void)c
     57
     58#endif