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

cpu.h (1622B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3  * Copyright (C) 2014 ARM Ltd.
      4 */
      5#ifndef __ASM_CPU_H
      6#define __ASM_CPU_H
      7
      8#include <linux/cpu.h>
      9#include <linux/init.h>
     10#include <linux/percpu.h>
     11
     12/*
     13 * Records attributes of an individual CPU.
     14 */
     15struct cpuinfo_32bit {
     16	u32		reg_id_dfr0;
     17	u32		reg_id_dfr1;
     18	u32		reg_id_isar0;
     19	u32		reg_id_isar1;
     20	u32		reg_id_isar2;
     21	u32		reg_id_isar3;
     22	u32		reg_id_isar4;
     23	u32		reg_id_isar5;
     24	u32		reg_id_isar6;
     25	u32		reg_id_mmfr0;
     26	u32		reg_id_mmfr1;
     27	u32		reg_id_mmfr2;
     28	u32		reg_id_mmfr3;
     29	u32		reg_id_mmfr4;
     30	u32		reg_id_mmfr5;
     31	u32		reg_id_pfr0;
     32	u32		reg_id_pfr1;
     33	u32		reg_id_pfr2;
     34
     35	u32		reg_mvfr0;
     36	u32		reg_mvfr1;
     37	u32		reg_mvfr2;
     38};
     39
     40struct cpuinfo_arm64 {
     41	struct cpu	cpu;
     42	struct kobject	kobj;
     43	u64		reg_ctr;
     44	u64		reg_cntfrq;
     45	u64		reg_dczid;
     46	u64		reg_midr;
     47	u64		reg_revidr;
     48	u64		reg_gmid;
     49
     50	u64		reg_id_aa64dfr0;
     51	u64		reg_id_aa64dfr1;
     52	u64		reg_id_aa64isar0;
     53	u64		reg_id_aa64isar1;
     54	u64		reg_id_aa64isar2;
     55	u64		reg_id_aa64mmfr0;
     56	u64		reg_id_aa64mmfr1;
     57	u64		reg_id_aa64mmfr2;
     58	u64		reg_id_aa64pfr0;
     59	u64		reg_id_aa64pfr1;
     60	u64		reg_id_aa64zfr0;
     61	u64		reg_id_aa64smfr0;
     62
     63	struct cpuinfo_32bit	aarch32;
     64
     65	/* pseudo-ZCR for recording maximum ZCR_EL1 LEN value: */
     66	u64		reg_zcr;
     67
     68	/* pseudo-SMCR for recording maximum SMCR_EL1 LEN value: */
     69	u64		reg_smcr;
     70};
     71
     72DECLARE_PER_CPU(struct cpuinfo_arm64, cpu_data);
     73
     74void cpuinfo_store_cpu(void);
     75void __init cpuinfo_store_boot_cpu(void);
     76
     77void __init init_cpu_features(struct cpuinfo_arm64 *info);
     78void update_cpu_features(int cpu, struct cpuinfo_arm64 *info,
     79				 struct cpuinfo_arm64 *boot);
     80
     81#endif /* __ASM_CPU_H */