linux/arch/arm64/include/asm/cpu.h
<<
>>
Prefs
   1/*
   2  * Copyright (C) 2014 ARM Ltd.
   3 *
   4 * This program is free software; you can redistribute it and/or modify
   5 * it under the terms of the GNU General Public License version 2 as
   6 * published by the Free Software Foundation.
   7 *
   8 * This program is distributed in the hope that it will be useful,
   9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  11 * GNU General Public License for more details.
  12 *
  13 * You should have received a copy of the GNU General Public License
  14 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  15 */
  16#ifndef __ASM_CPU_H
  17#define __ASM_CPU_H
  18
  19#include <linux/cpu.h>
  20#include <linux/init.h>
  21#include <linux/percpu.h>
  22
  23/*
  24 * Records attributes of an individual CPU.
  25 */
  26struct cpuinfo_arm64 {
  27        struct cpu      cpu;
  28        struct kobject  kobj;
  29        u32             reg_ctr;
  30        u32             reg_cntfrq;
  31        u32             reg_dczid;
  32        u32             reg_midr;
  33        u32             reg_revidr;
  34
  35        u64             reg_id_aa64dfr0;
  36        u64             reg_id_aa64dfr1;
  37        u64             reg_id_aa64isar0;
  38        u64             reg_id_aa64isar1;
  39        u64             reg_id_aa64mmfr0;
  40        u64             reg_id_aa64mmfr1;
  41        u64             reg_id_aa64mmfr2;
  42        u64             reg_id_aa64pfr0;
  43        u64             reg_id_aa64pfr1;
  44        u64             reg_id_aa64zfr0;
  45
  46        u32             reg_id_dfr0;
  47        u32             reg_id_isar0;
  48        u32             reg_id_isar1;
  49        u32             reg_id_isar2;
  50        u32             reg_id_isar3;
  51        u32             reg_id_isar4;
  52        u32             reg_id_isar5;
  53        u32             reg_id_mmfr0;
  54        u32             reg_id_mmfr1;
  55        u32             reg_id_mmfr2;
  56        u32             reg_id_mmfr3;
  57        u32             reg_id_pfr0;
  58        u32             reg_id_pfr1;
  59
  60        u32             reg_mvfr0;
  61        u32             reg_mvfr1;
  62        u32             reg_mvfr2;
  63
  64        /* pseudo-ZCR for recording maximum ZCR_EL1 LEN value: */
  65        u64             reg_zcr;
  66};
  67
  68DECLARE_PER_CPU(struct cpuinfo_arm64, cpu_data);
  69
  70void cpuinfo_store_cpu(void);
  71void __init cpuinfo_store_boot_cpu(void);
  72
  73void __init init_cpu_features(struct cpuinfo_arm64 *info);
  74void update_cpu_features(int cpu, struct cpuinfo_arm64 *info,
  75                                 struct cpuinfo_arm64 *boot);
  76
  77#endif /* __ASM_CPU_H */
  78