cpu.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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. #include <linux/cpu.h>
  19. #include <linux/init.h>
  20. #include <linux/percpu.h>
  21. /*
  22. * Records attributes of an individual CPU.
  23. */
  24. struct cpuinfo_arm64 {
  25. struct cpu cpu;
  26. u32 reg_ctr;
  27. u32 reg_cntfrq;
  28. u32 reg_dczid;
  29. u32 reg_midr;
  30. u64 reg_id_aa64dfr0;
  31. u64 reg_id_aa64dfr1;
  32. u64 reg_id_aa64isar0;
  33. u64 reg_id_aa64isar1;
  34. u64 reg_id_aa64mmfr0;
  35. u64 reg_id_aa64mmfr1;
  36. u64 reg_id_aa64pfr0;
  37. u64 reg_id_aa64pfr1;
  38. u32 reg_id_dfr0;
  39. u32 reg_id_isar0;
  40. u32 reg_id_isar1;
  41. u32 reg_id_isar2;
  42. u32 reg_id_isar3;
  43. u32 reg_id_isar4;
  44. u32 reg_id_isar5;
  45. u32 reg_id_mmfr0;
  46. u32 reg_id_mmfr1;
  47. u32 reg_id_mmfr2;
  48. u32 reg_id_mmfr3;
  49. u32 reg_id_pfr0;
  50. u32 reg_id_pfr1;
  51. u32 reg_mvfr0;
  52. u32 reg_mvfr1;
  53. u32 reg_mvfr2;
  54. };
  55. DECLARE_PER_CPU(struct cpuinfo_arm64, cpu_data);
  56. void cpuinfo_store_cpu(void);
  57. void __init cpuinfo_store_boot_cpu(void);
  58. void __init init_cpu_features(struct cpuinfo_arm64 *info);
  59. void update_cpu_features(int cpu, struct cpuinfo_arm64 *info,
  60. struct cpuinfo_arm64 *boot);
  61. #endif /* __ASM_CPU_H */