^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) // SPDX-License-Identifier: GPL-2.0-or-later
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * Copyright (C) 2001 Ben. Herrenschmidt (benh@kernel.crashing.org)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) * Modifications for ppc64:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) * Copyright (C) 2003 Dave Engebretsen <engebret@us.ibm.com>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #include <linux/string.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #include <linux/sched.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #include <linux/threads.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #include <linux/init.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) #include <linux/export.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) #include <linux/jump_label.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) #include <asm/oprofile_impl.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) #include <asm/cputable.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) #include <asm/prom.h> /* for PTRRELOC on ARCH=ppc */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) #include <asm/mce.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) #include <asm/mmu.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) #include <asm/setup.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) static struct cpu_spec the_cpu_spec __read_mostly;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) struct cpu_spec* cur_cpu_spec __read_mostly = NULL;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) EXPORT_SYMBOL(cur_cpu_spec);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) /* The platform string corresponding to the real PVR */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) const char *powerpc_base_platform;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) /* NOTE:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) * Unlike ppc32, ppc64 will only call this once for the boot CPU, it's
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) * the responsibility of the appropriate CPU save/restore functions to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) * eventually copy these settings over. Those save/restore aren't yet
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) * part of the cputable though. That has to be fixed for both ppc32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) * and ppc64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) #ifdef CONFIG_PPC32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) extern void __setup_cpu_e200(unsigned long offset, struct cpu_spec* spec);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) extern void __setup_cpu_e500v1(unsigned long offset, struct cpu_spec* spec);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) extern void __setup_cpu_e500v2(unsigned long offset, struct cpu_spec* spec);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) extern void __setup_cpu_e500mc(unsigned long offset, struct cpu_spec* spec);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) extern void __setup_cpu_440ep(unsigned long offset, struct cpu_spec* spec);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) extern void __setup_cpu_440epx(unsigned long offset, struct cpu_spec* spec);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) extern void __setup_cpu_440gx(unsigned long offset, struct cpu_spec* spec);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) extern void __setup_cpu_440grx(unsigned long offset, struct cpu_spec* spec);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) extern void __setup_cpu_440spe(unsigned long offset, struct cpu_spec* spec);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) extern void __setup_cpu_440x5(unsigned long offset, struct cpu_spec* spec);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) extern void __setup_cpu_460ex(unsigned long offset, struct cpu_spec* spec);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) extern void __setup_cpu_460gt(unsigned long offset, struct cpu_spec* spec);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) extern void __setup_cpu_460sx(unsigned long offset, struct cpu_spec *spec);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) extern void __setup_cpu_apm821xx(unsigned long offset, struct cpu_spec *spec);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) extern void __setup_cpu_603(unsigned long offset, struct cpu_spec* spec);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) extern void __setup_cpu_604(unsigned long offset, struct cpu_spec* spec);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) extern void __setup_cpu_750(unsigned long offset, struct cpu_spec* spec);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) extern void __setup_cpu_750cx(unsigned long offset, struct cpu_spec* spec);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) extern void __setup_cpu_750fx(unsigned long offset, struct cpu_spec* spec);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) extern void __setup_cpu_7400(unsigned long offset, struct cpu_spec* spec);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) extern void __setup_cpu_7410(unsigned long offset, struct cpu_spec* spec);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) extern void __setup_cpu_745x(unsigned long offset, struct cpu_spec* spec);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) #endif /* CONFIG_PPC32 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) #ifdef CONFIG_PPC64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) #include <asm/cpu_setup_power.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) extern void __setup_cpu_ppc970(unsigned long offset, struct cpu_spec* spec);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) extern void __setup_cpu_ppc970MP(unsigned long offset, struct cpu_spec* spec);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) extern void __setup_cpu_pa6t(unsigned long offset, struct cpu_spec* spec);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) extern void __restore_cpu_pa6t(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) extern void __restore_cpu_ppc970(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) extern long __machine_check_early_realmode_p7(struct pt_regs *regs);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) extern long __machine_check_early_realmode_p8(struct pt_regs *regs);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) extern long __machine_check_early_realmode_p9(struct pt_regs *regs);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) #endif /* CONFIG_PPC64 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) #if defined(CONFIG_E500)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) extern void __setup_cpu_e5500(unsigned long offset, struct cpu_spec* spec);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) extern void __setup_cpu_e6500(unsigned long offset, struct cpu_spec* spec);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) extern void __restore_cpu_e5500(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) extern void __restore_cpu_e6500(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) #endif /* CONFIG_E500 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) /* This table only contains "desktop" CPUs, it need to be filled with embedded
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) * ones as well...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) #define COMMON_USER (PPC_FEATURE_32 | PPC_FEATURE_HAS_FPU | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) PPC_FEATURE_HAS_MMU)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) #define COMMON_USER_PPC64 (COMMON_USER | PPC_FEATURE_64)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) #define COMMON_USER_POWER4 (COMMON_USER_PPC64 | PPC_FEATURE_POWER4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) #define COMMON_USER_POWER5 (COMMON_USER_PPC64 | PPC_FEATURE_POWER5 |\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) #define COMMON_USER_POWER5_PLUS (COMMON_USER_PPC64 | PPC_FEATURE_POWER5_PLUS|\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) #define COMMON_USER_POWER6 (COMMON_USER_PPC64 | PPC_FEATURE_ARCH_2_05 |\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) PPC_FEATURE_TRUE_LE | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) PPC_FEATURE_PSERIES_PERFMON_COMPAT)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) #define COMMON_USER_POWER7 (COMMON_USER_PPC64 | PPC_FEATURE_ARCH_2_06 |\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) PPC_FEATURE_TRUE_LE | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) PPC_FEATURE_PSERIES_PERFMON_COMPAT)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) #define COMMON_USER2_POWER7 (PPC_FEATURE2_DSCR)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) #define COMMON_USER_POWER8 (COMMON_USER_PPC64 | PPC_FEATURE_ARCH_2_06 |\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) PPC_FEATURE_TRUE_LE | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) PPC_FEATURE_PSERIES_PERFMON_COMPAT)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) #define COMMON_USER2_POWER8 (PPC_FEATURE2_ARCH_2_07 | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) PPC_FEATURE2_HTM_COMP | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) PPC_FEATURE2_HTM_NOSC_COMP | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) PPC_FEATURE2_DSCR | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) PPC_FEATURE2_ISEL | PPC_FEATURE2_TAR | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) PPC_FEATURE2_VEC_CRYPTO)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) #define COMMON_USER_PA6T (COMMON_USER_PPC64 | PPC_FEATURE_PA6T |\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) PPC_FEATURE_TRUE_LE | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) PPC_FEATURE_HAS_ALTIVEC_COMP)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) #define COMMON_USER_POWER9 COMMON_USER_POWER8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) #define COMMON_USER2_POWER9 (COMMON_USER2_POWER8 | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) PPC_FEATURE2_ARCH_3_00 | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) PPC_FEATURE2_HAS_IEEE128 | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) PPC_FEATURE2_DARN | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) PPC_FEATURE2_SCV)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) #define COMMON_USER_POWER10 COMMON_USER_POWER9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) #define COMMON_USER2_POWER10 (PPC_FEATURE2_ARCH_3_1 | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) PPC_FEATURE2_MMA | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) PPC_FEATURE2_ARCH_3_00 | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) PPC_FEATURE2_HAS_IEEE128 | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) PPC_FEATURE2_DARN | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) PPC_FEATURE2_SCV | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) PPC_FEATURE2_ARCH_2_07 | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) PPC_FEATURE2_DSCR | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) PPC_FEATURE2_ISEL | PPC_FEATURE2_TAR | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) PPC_FEATURE2_VEC_CRYPTO)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) #ifdef CONFIG_PPC_BOOK3E_64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) #define COMMON_USER_BOOKE (COMMON_USER_PPC64 | PPC_FEATURE_BOOKE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) #define COMMON_USER_BOOKE (PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) PPC_FEATURE_BOOKE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) static struct cpu_spec __initdata cpu_specs[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) #ifdef CONFIG_PPC_BOOK3S_64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) { /* PPC970 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) .pvr_value = 0x00390000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) .cpu_name = "PPC970",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) .cpu_features = CPU_FTRS_PPC970,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) .cpu_user_features = COMMON_USER_POWER4 |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) PPC_FEATURE_HAS_ALTIVEC_COMP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) .mmu_features = MMU_FTRS_PPC970,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) .icache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) .dcache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) .num_pmcs = 8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) .pmc_type = PPC_PMC_IBM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) .cpu_setup = __setup_cpu_ppc970,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) .cpu_restore = __restore_cpu_ppc970,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) .oprofile_cpu_type = "ppc64/970",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) .oprofile_type = PPC_OPROFILE_POWER4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) .platform = "ppc970",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) { /* PPC970FX */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) .pvr_value = 0x003c0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) .cpu_name = "PPC970FX",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) .cpu_features = CPU_FTRS_PPC970,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) .cpu_user_features = COMMON_USER_POWER4 |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) PPC_FEATURE_HAS_ALTIVEC_COMP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) .mmu_features = MMU_FTRS_PPC970,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) .icache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) .dcache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) .num_pmcs = 8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) .pmc_type = PPC_PMC_IBM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) .cpu_setup = __setup_cpu_ppc970,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) .cpu_restore = __restore_cpu_ppc970,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) .oprofile_cpu_type = "ppc64/970",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) .oprofile_type = PPC_OPROFILE_POWER4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) .platform = "ppc970",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) { /* PPC970MP DD1.0 - no DEEPNAP, use regular 970 init */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) .pvr_mask = 0xffffffff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) .pvr_value = 0x00440100,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) .cpu_name = "PPC970MP",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) .cpu_features = CPU_FTRS_PPC970,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) .cpu_user_features = COMMON_USER_POWER4 |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) PPC_FEATURE_HAS_ALTIVEC_COMP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) .mmu_features = MMU_FTRS_PPC970,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) .icache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) .dcache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) .num_pmcs = 8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) .pmc_type = PPC_PMC_IBM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) .cpu_setup = __setup_cpu_ppc970,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) .cpu_restore = __restore_cpu_ppc970,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) .oprofile_cpu_type = "ppc64/970MP",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) .oprofile_type = PPC_OPROFILE_POWER4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) .platform = "ppc970",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) { /* PPC970MP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) .pvr_value = 0x00440000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) .cpu_name = "PPC970MP",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) .cpu_features = CPU_FTRS_PPC970,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) .cpu_user_features = COMMON_USER_POWER4 |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) PPC_FEATURE_HAS_ALTIVEC_COMP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) .mmu_features = MMU_FTRS_PPC970,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) .icache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) .dcache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) .num_pmcs = 8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) .pmc_type = PPC_PMC_IBM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) .cpu_setup = __setup_cpu_ppc970MP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) .cpu_restore = __restore_cpu_ppc970,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) .oprofile_cpu_type = "ppc64/970MP",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) .oprofile_type = PPC_OPROFILE_POWER4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) .platform = "ppc970",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) { /* PPC970GX */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) .pvr_value = 0x00450000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) .cpu_name = "PPC970GX",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) .cpu_features = CPU_FTRS_PPC970,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) .cpu_user_features = COMMON_USER_POWER4 |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) PPC_FEATURE_HAS_ALTIVEC_COMP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) .mmu_features = MMU_FTRS_PPC970,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) .icache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) .dcache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) .num_pmcs = 8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) .pmc_type = PPC_PMC_IBM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) .cpu_setup = __setup_cpu_ppc970,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) .oprofile_cpu_type = "ppc64/970",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) .oprofile_type = PPC_OPROFILE_POWER4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) .platform = "ppc970",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) { /* Power5 GR */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) .pvr_value = 0x003a0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) .cpu_name = "POWER5 (gr)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) .cpu_features = CPU_FTRS_POWER5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) .cpu_user_features = COMMON_USER_POWER5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) .mmu_features = MMU_FTRS_POWER5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) .icache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) .dcache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) .num_pmcs = 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) .pmc_type = PPC_PMC_IBM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) .oprofile_cpu_type = "ppc64/power5",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) .oprofile_type = PPC_OPROFILE_POWER4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) /* SIHV / SIPR bits are implemented on POWER4+ (GQ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) * and above but only works on POWER5 and above
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) .oprofile_mmcra_sihv = MMCRA_SIHV,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) .oprofile_mmcra_sipr = MMCRA_SIPR,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) .platform = "power5",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) { /* Power5++ */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) .pvr_mask = 0xffffff00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) .pvr_value = 0x003b0300,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) .cpu_name = "POWER5+ (gs)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) .cpu_features = CPU_FTRS_POWER5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) .cpu_user_features = COMMON_USER_POWER5_PLUS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) .mmu_features = MMU_FTRS_POWER5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) .icache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) .dcache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) .num_pmcs = 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) .oprofile_cpu_type = "ppc64/power5++",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) .oprofile_type = PPC_OPROFILE_POWER4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) .oprofile_mmcra_sihv = MMCRA_SIHV,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) .oprofile_mmcra_sipr = MMCRA_SIPR,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) .platform = "power5+",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) { /* Power5 GS */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) .pvr_value = 0x003b0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) .cpu_name = "POWER5+ (gs)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) .cpu_features = CPU_FTRS_POWER5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) .cpu_user_features = COMMON_USER_POWER5_PLUS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) .mmu_features = MMU_FTRS_POWER5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) .icache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) .dcache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) .num_pmcs = 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) .pmc_type = PPC_PMC_IBM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) .oprofile_cpu_type = "ppc64/power5+",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) .oprofile_type = PPC_OPROFILE_POWER4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) .oprofile_mmcra_sihv = MMCRA_SIHV,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) .oprofile_mmcra_sipr = MMCRA_SIPR,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) .platform = "power5+",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) { /* POWER6 in P5+ mode; 2.04-compliant processor */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) .pvr_mask = 0xffffffff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) .pvr_value = 0x0f000001,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) .cpu_name = "POWER5+",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) .cpu_features = CPU_FTRS_POWER5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) .cpu_user_features = COMMON_USER_POWER5_PLUS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) .mmu_features = MMU_FTRS_POWER5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) .icache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) .dcache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) .oprofile_cpu_type = "ppc64/ibm-compat-v1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) .oprofile_type = PPC_OPROFILE_POWER4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) .platform = "power5+",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) { /* Power6 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) .pvr_value = 0x003e0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) .cpu_name = "POWER6 (raw)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) .cpu_features = CPU_FTRS_POWER6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) .cpu_user_features = COMMON_USER_POWER6 |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) PPC_FEATURE_POWER6_EXT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) .mmu_features = MMU_FTRS_POWER6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) .icache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) .dcache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) .num_pmcs = 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) .pmc_type = PPC_PMC_IBM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) .oprofile_cpu_type = "ppc64/power6",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) .oprofile_type = PPC_OPROFILE_POWER4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) .oprofile_mmcra_sihv = POWER6_MMCRA_SIHV,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) .oprofile_mmcra_sipr = POWER6_MMCRA_SIPR,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) .oprofile_mmcra_clear = POWER6_MMCRA_THRM |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) POWER6_MMCRA_OTHER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) .platform = "power6x",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315) { /* 2.05-compliant processor, i.e. Power6 "architected" mode */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316) .pvr_mask = 0xffffffff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) .pvr_value = 0x0f000002,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) .cpu_name = "POWER6 (architected)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319) .cpu_features = CPU_FTRS_POWER6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320) .cpu_user_features = COMMON_USER_POWER6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321) .mmu_features = MMU_FTRS_POWER6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) .icache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323) .dcache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) .oprofile_cpu_type = "ppc64/ibm-compat-v1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325) .oprofile_type = PPC_OPROFILE_POWER4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326) .platform = "power6",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328) { /* 2.06-compliant processor, i.e. Power7 "architected" mode */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329) .pvr_mask = 0xffffffff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) .pvr_value = 0x0f000003,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) .cpu_name = "POWER7 (architected)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332) .cpu_features = CPU_FTRS_POWER7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) .cpu_user_features = COMMON_USER_POWER7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334) .cpu_user_features2 = COMMON_USER2_POWER7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) .mmu_features = MMU_FTRS_POWER7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336) .icache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337) .dcache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338) .oprofile_type = PPC_OPROFILE_POWER4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339) .oprofile_cpu_type = "ppc64/ibm-compat-v1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340) .cpu_setup = __setup_cpu_power7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341) .cpu_restore = __restore_cpu_power7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342) .machine_check_early = __machine_check_early_realmode_p7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 343) .platform = "power7",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 344) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 345) { /* 2.07-compliant processor, i.e. Power8 "architected" mode */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 346) .pvr_mask = 0xffffffff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 347) .pvr_value = 0x0f000004,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 348) .cpu_name = "POWER8 (architected)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 349) .cpu_features = CPU_FTRS_POWER8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 350) .cpu_user_features = COMMON_USER_POWER8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 351) .cpu_user_features2 = COMMON_USER2_POWER8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 352) .mmu_features = MMU_FTRS_POWER8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 353) .icache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 354) .dcache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 355) .oprofile_type = PPC_OPROFILE_INVALID,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 356) .oprofile_cpu_type = "ppc64/ibm-compat-v1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 357) .cpu_setup = __setup_cpu_power8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 358) .cpu_restore = __restore_cpu_power8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 359) .machine_check_early = __machine_check_early_realmode_p8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 360) .platform = "power8",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 361) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 362) { /* 3.00-compliant processor, i.e. Power9 "architected" mode */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 363) .pvr_mask = 0xffffffff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 364) .pvr_value = 0x0f000005,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 365) .cpu_name = "POWER9 (architected)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 366) .cpu_features = CPU_FTRS_POWER9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 367) .cpu_user_features = COMMON_USER_POWER9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 368) .cpu_user_features2 = COMMON_USER2_POWER9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 369) .mmu_features = MMU_FTRS_POWER9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 370) .icache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 371) .dcache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 372) .oprofile_type = PPC_OPROFILE_INVALID,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 373) .oprofile_cpu_type = "ppc64/ibm-compat-v1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 374) .cpu_setup = __setup_cpu_power9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 375) .cpu_restore = __restore_cpu_power9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 376) .platform = "power9",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 377) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 378) { /* 3.1-compliant processor, i.e. Power10 "architected" mode */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 379) .pvr_mask = 0xffffffff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 380) .pvr_value = 0x0f000006,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 381) .cpu_name = "POWER10 (architected)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 382) .cpu_features = CPU_FTRS_POWER10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 383) .cpu_user_features = COMMON_USER_POWER10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 384) .cpu_user_features2 = COMMON_USER2_POWER10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 385) .mmu_features = MMU_FTRS_POWER10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 386) .icache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 387) .dcache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 388) .oprofile_type = PPC_OPROFILE_INVALID,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 389) .oprofile_cpu_type = "ppc64/ibm-compat-v1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 390) .cpu_setup = __setup_cpu_power10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 391) .cpu_restore = __restore_cpu_power10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 392) .platform = "power10",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 393) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 394) { /* Power7 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 395) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 396) .pvr_value = 0x003f0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 397) .cpu_name = "POWER7 (raw)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 398) .cpu_features = CPU_FTRS_POWER7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 399) .cpu_user_features = COMMON_USER_POWER7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 400) .cpu_user_features2 = COMMON_USER2_POWER7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 401) .mmu_features = MMU_FTRS_POWER7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 402) .icache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 403) .dcache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 404) .num_pmcs = 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 405) .pmc_type = PPC_PMC_IBM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 406) .oprofile_cpu_type = "ppc64/power7",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 407) .oprofile_type = PPC_OPROFILE_POWER4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 408) .cpu_setup = __setup_cpu_power7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 409) .cpu_restore = __restore_cpu_power7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 410) .machine_check_early = __machine_check_early_realmode_p7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 411) .platform = "power7",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 412) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 413) { /* Power7+ */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 414) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 415) .pvr_value = 0x004A0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 416) .cpu_name = "POWER7+ (raw)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 417) .cpu_features = CPU_FTRS_POWER7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 418) .cpu_user_features = COMMON_USER_POWER7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 419) .cpu_user_features2 = COMMON_USER2_POWER7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 420) .mmu_features = MMU_FTRS_POWER7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 421) .icache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 422) .dcache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 423) .num_pmcs = 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 424) .pmc_type = PPC_PMC_IBM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 425) .oprofile_cpu_type = "ppc64/power7",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 426) .oprofile_type = PPC_OPROFILE_POWER4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 427) .cpu_setup = __setup_cpu_power7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 428) .cpu_restore = __restore_cpu_power7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 429) .machine_check_early = __machine_check_early_realmode_p7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 430) .platform = "power7+",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 431) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 432) { /* Power8E */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 433) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 434) .pvr_value = 0x004b0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 435) .cpu_name = "POWER8E (raw)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 436) .cpu_features = CPU_FTRS_POWER8E,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 437) .cpu_user_features = COMMON_USER_POWER8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 438) .cpu_user_features2 = COMMON_USER2_POWER8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 439) .mmu_features = MMU_FTRS_POWER8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 440) .icache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 441) .dcache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 442) .num_pmcs = 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 443) .pmc_type = PPC_PMC_IBM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 444) .oprofile_cpu_type = "ppc64/power8",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 445) .oprofile_type = PPC_OPROFILE_INVALID,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 446) .cpu_setup = __setup_cpu_power8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 447) .cpu_restore = __restore_cpu_power8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 448) .machine_check_early = __machine_check_early_realmode_p8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 449) .platform = "power8",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 450) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 451) { /* Power8NVL */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 452) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 453) .pvr_value = 0x004c0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 454) .cpu_name = "POWER8NVL (raw)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 455) .cpu_features = CPU_FTRS_POWER8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 456) .cpu_user_features = COMMON_USER_POWER8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 457) .cpu_user_features2 = COMMON_USER2_POWER8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 458) .mmu_features = MMU_FTRS_POWER8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 459) .icache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 460) .dcache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 461) .num_pmcs = 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 462) .pmc_type = PPC_PMC_IBM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 463) .oprofile_cpu_type = "ppc64/power8",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 464) .oprofile_type = PPC_OPROFILE_INVALID,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 465) .cpu_setup = __setup_cpu_power8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 466) .cpu_restore = __restore_cpu_power8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 467) .machine_check_early = __machine_check_early_realmode_p8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 468) .platform = "power8",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 469) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 470) { /* Power8 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 471) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 472) .pvr_value = 0x004d0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 473) .cpu_name = "POWER8 (raw)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 474) .cpu_features = CPU_FTRS_POWER8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 475) .cpu_user_features = COMMON_USER_POWER8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 476) .cpu_user_features2 = COMMON_USER2_POWER8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 477) .mmu_features = MMU_FTRS_POWER8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 478) .icache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 479) .dcache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 480) .num_pmcs = 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 481) .pmc_type = PPC_PMC_IBM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 482) .oprofile_cpu_type = "ppc64/power8",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 483) .oprofile_type = PPC_OPROFILE_INVALID,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 484) .cpu_setup = __setup_cpu_power8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 485) .cpu_restore = __restore_cpu_power8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 486) .machine_check_early = __machine_check_early_realmode_p8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 487) .platform = "power8",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 488) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 489) { /* Power9 DD2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 490) .pvr_mask = 0xffffefff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 491) .pvr_value = 0x004e0200,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 492) .cpu_name = "POWER9 (raw)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 493) .cpu_features = CPU_FTRS_POWER9_DD2_0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 494) .cpu_user_features = COMMON_USER_POWER9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 495) .cpu_user_features2 = COMMON_USER2_POWER9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 496) .mmu_features = MMU_FTRS_POWER9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 497) .icache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 498) .dcache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 499) .num_pmcs = 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 500) .pmc_type = PPC_PMC_IBM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 501) .oprofile_cpu_type = "ppc64/power9",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 502) .oprofile_type = PPC_OPROFILE_INVALID,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 503) .cpu_setup = __setup_cpu_power9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 504) .cpu_restore = __restore_cpu_power9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 505) .machine_check_early = __machine_check_early_realmode_p9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 506) .platform = "power9",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 507) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 508) { /* Power9 DD 2.1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 509) .pvr_mask = 0xffffefff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 510) .pvr_value = 0x004e0201,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 511) .cpu_name = "POWER9 (raw)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 512) .cpu_features = CPU_FTRS_POWER9_DD2_1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 513) .cpu_user_features = COMMON_USER_POWER9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 514) .cpu_user_features2 = COMMON_USER2_POWER9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 515) .mmu_features = MMU_FTRS_POWER9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 516) .icache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 517) .dcache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 518) .num_pmcs = 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 519) .pmc_type = PPC_PMC_IBM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 520) .oprofile_cpu_type = "ppc64/power9",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 521) .oprofile_type = PPC_OPROFILE_INVALID,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 522) .cpu_setup = __setup_cpu_power9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 523) .cpu_restore = __restore_cpu_power9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 524) .machine_check_early = __machine_check_early_realmode_p9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 525) .platform = "power9",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 526) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 527) { /* Power9 DD2.2 or later */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 528) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 529) .pvr_value = 0x004e0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 530) .cpu_name = "POWER9 (raw)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 531) .cpu_features = CPU_FTRS_POWER9_DD2_2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 532) .cpu_user_features = COMMON_USER_POWER9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 533) .cpu_user_features2 = COMMON_USER2_POWER9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 534) .mmu_features = MMU_FTRS_POWER9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 535) .icache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 536) .dcache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 537) .num_pmcs = 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 538) .pmc_type = PPC_PMC_IBM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 539) .oprofile_cpu_type = "ppc64/power9",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 540) .oprofile_type = PPC_OPROFILE_INVALID,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 541) .cpu_setup = __setup_cpu_power9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 542) .cpu_restore = __restore_cpu_power9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 543) .machine_check_early = __machine_check_early_realmode_p9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 544) .platform = "power9",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 545) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 546) { /* Power10 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 547) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 548) .pvr_value = 0x00800000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 549) .cpu_name = "POWER10 (raw)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 550) .cpu_features = CPU_FTRS_POWER10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 551) .cpu_user_features = COMMON_USER_POWER10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 552) .cpu_user_features2 = COMMON_USER2_POWER10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 553) .mmu_features = MMU_FTRS_POWER10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 554) .icache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 555) .dcache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 556) .num_pmcs = 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 557) .pmc_type = PPC_PMC_IBM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 558) .oprofile_cpu_type = "ppc64/power10",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 559) .oprofile_type = PPC_OPROFILE_INVALID,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 560) .cpu_setup = __setup_cpu_power10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 561) .cpu_restore = __restore_cpu_power10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 562) .machine_check_early = __machine_check_early_realmode_p10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 563) .platform = "power10",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 564) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 565) { /* Cell Broadband Engine */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 566) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 567) .pvr_value = 0x00700000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 568) .cpu_name = "Cell Broadband Engine",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 569) .cpu_features = CPU_FTRS_CELL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 570) .cpu_user_features = COMMON_USER_PPC64 |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 571) PPC_FEATURE_CELL | PPC_FEATURE_HAS_ALTIVEC_COMP |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 572) PPC_FEATURE_SMT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 573) .mmu_features = MMU_FTRS_CELL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 574) .icache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 575) .dcache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 576) .num_pmcs = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 577) .pmc_type = PPC_PMC_IBM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 578) .oprofile_cpu_type = "ppc64/cell-be",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 579) .oprofile_type = PPC_OPROFILE_CELL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 580) .platform = "ppc-cell-be",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 581) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 582) { /* PA Semi PA6T */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 583) .pvr_mask = 0x7fff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 584) .pvr_value = 0x00900000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 585) .cpu_name = "PA6T",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 586) .cpu_features = CPU_FTRS_PA6T,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 587) .cpu_user_features = COMMON_USER_PA6T,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 588) .mmu_features = MMU_FTRS_PA6T,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 589) .icache_bsize = 64,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 590) .dcache_bsize = 64,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 591) .num_pmcs = 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 592) .pmc_type = PPC_PMC_PA6T,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 593) .cpu_setup = __setup_cpu_pa6t,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 594) .cpu_restore = __restore_cpu_pa6t,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 595) .oprofile_cpu_type = "ppc64/pa6t",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 596) .oprofile_type = PPC_OPROFILE_PA6T,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 597) .platform = "pa6t",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 598) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 599) { /* default match */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 600) .pvr_mask = 0x00000000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 601) .pvr_value = 0x00000000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 602) .cpu_name = "POWER5 (compatible)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 603) .cpu_features = CPU_FTRS_COMPATIBLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 604) .cpu_user_features = COMMON_USER_PPC64,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 605) .mmu_features = MMU_FTRS_POWER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 606) .icache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 607) .dcache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 608) .num_pmcs = 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 609) .pmc_type = PPC_PMC_IBM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 610) .platform = "power5",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 611) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 612) #endif /* CONFIG_PPC_BOOK3S_64 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 613)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 614) #ifdef CONFIG_PPC32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 615) #ifdef CONFIG_PPC_BOOK3S_6xx
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 616) { /* 603 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 617) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 618) .pvr_value = 0x00030000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 619) .cpu_name = "603",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 620) .cpu_features = CPU_FTRS_603,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 621) .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 622) .mmu_features = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 623) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 624) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 625) .cpu_setup = __setup_cpu_603,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 626) .machine_check = machine_check_generic,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 627) .platform = "ppc603",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 628) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 629) { /* 603e */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 630) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 631) .pvr_value = 0x00060000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 632) .cpu_name = "603e",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 633) .cpu_features = CPU_FTRS_603,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 634) .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 635) .mmu_features = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 636) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 637) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 638) .cpu_setup = __setup_cpu_603,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 639) .machine_check = machine_check_generic,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 640) .platform = "ppc603",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 641) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 642) { /* 603ev */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 643) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 644) .pvr_value = 0x00070000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 645) .cpu_name = "603ev",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 646) .cpu_features = CPU_FTRS_603,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 647) .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 648) .mmu_features = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 649) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 650) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 651) .cpu_setup = __setup_cpu_603,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 652) .machine_check = machine_check_generic,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 653) .platform = "ppc603",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 654) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 655) { /* 604 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 656) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 657) .pvr_value = 0x00040000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 658) .cpu_name = "604",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 659) .cpu_features = CPU_FTRS_604,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 660) .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 661) .mmu_features = MMU_FTR_HPTE_TABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 662) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 663) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 664) .num_pmcs = 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 665) .cpu_setup = __setup_cpu_604,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 666) .machine_check = machine_check_generic,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 667) .platform = "ppc604",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 668) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 669) { /* 604e */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 670) .pvr_mask = 0xfffff000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 671) .pvr_value = 0x00090000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 672) .cpu_name = "604e",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 673) .cpu_features = CPU_FTRS_604,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 674) .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 675) .mmu_features = MMU_FTR_HPTE_TABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 676) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 677) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 678) .num_pmcs = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 679) .cpu_setup = __setup_cpu_604,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 680) .machine_check = machine_check_generic,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 681) .platform = "ppc604",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 682) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 683) { /* 604r */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 684) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 685) .pvr_value = 0x00090000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 686) .cpu_name = "604r",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 687) .cpu_features = CPU_FTRS_604,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 688) .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 689) .mmu_features = MMU_FTR_HPTE_TABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 690) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 691) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 692) .num_pmcs = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 693) .cpu_setup = __setup_cpu_604,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 694) .machine_check = machine_check_generic,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 695) .platform = "ppc604",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 696) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 697) { /* 604ev */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 698) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 699) .pvr_value = 0x000a0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 700) .cpu_name = "604ev",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 701) .cpu_features = CPU_FTRS_604,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 702) .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 703) .mmu_features = MMU_FTR_HPTE_TABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 704) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 705) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 706) .num_pmcs = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 707) .cpu_setup = __setup_cpu_604,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 708) .machine_check = machine_check_generic,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 709) .platform = "ppc604",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 710) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 711) { /* 740/750 (0x4202, don't support TAU ?) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 712) .pvr_mask = 0xffffffff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 713) .pvr_value = 0x00084202,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 714) .cpu_name = "740/750",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 715) .cpu_features = CPU_FTRS_740_NOTAU,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 716) .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 717) .mmu_features = MMU_FTR_HPTE_TABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 718) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 719) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 720) .num_pmcs = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 721) .cpu_setup = __setup_cpu_750,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 722) .machine_check = machine_check_generic,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 723) .platform = "ppc750",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 724) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 725) { /* 750CX (80100 and 8010x?) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 726) .pvr_mask = 0xfffffff0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 727) .pvr_value = 0x00080100,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 728) .cpu_name = "750CX",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 729) .cpu_features = CPU_FTRS_750,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 730) .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 731) .mmu_features = MMU_FTR_HPTE_TABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 732) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 733) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 734) .num_pmcs = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 735) .cpu_setup = __setup_cpu_750cx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 736) .machine_check = machine_check_generic,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 737) .platform = "ppc750",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 738) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 739) { /* 750CX (82201 and 82202) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 740) .pvr_mask = 0xfffffff0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 741) .pvr_value = 0x00082200,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 742) .cpu_name = "750CX",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 743) .cpu_features = CPU_FTRS_750,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 744) .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 745) .mmu_features = MMU_FTR_HPTE_TABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 746) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 747) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 748) .num_pmcs = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 749) .pmc_type = PPC_PMC_IBM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 750) .cpu_setup = __setup_cpu_750cx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 751) .machine_check = machine_check_generic,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 752) .platform = "ppc750",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 753) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 754) { /* 750CXe (82214) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 755) .pvr_mask = 0xfffffff0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 756) .pvr_value = 0x00082210,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 757) .cpu_name = "750CXe",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 758) .cpu_features = CPU_FTRS_750,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 759) .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 760) .mmu_features = MMU_FTR_HPTE_TABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 761) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 762) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 763) .num_pmcs = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 764) .pmc_type = PPC_PMC_IBM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 765) .cpu_setup = __setup_cpu_750cx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 766) .machine_check = machine_check_generic,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 767) .platform = "ppc750",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 768) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 769) { /* 750CXe "Gekko" (83214) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 770) .pvr_mask = 0xffffffff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 771) .pvr_value = 0x00083214,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 772) .cpu_name = "750CXe",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 773) .cpu_features = CPU_FTRS_750,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 774) .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 775) .mmu_features = MMU_FTR_HPTE_TABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 776) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 777) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 778) .num_pmcs = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 779) .pmc_type = PPC_PMC_IBM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 780) .cpu_setup = __setup_cpu_750cx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 781) .machine_check = machine_check_generic,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 782) .platform = "ppc750",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 783) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 784) { /* 750CL (and "Broadway") */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 785) .pvr_mask = 0xfffff0e0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 786) .pvr_value = 0x00087000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 787) .cpu_name = "750CL",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 788) .cpu_features = CPU_FTRS_750CL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 789) .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 790) .mmu_features = MMU_FTR_HPTE_TABLE | MMU_FTR_USE_HIGH_BATS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 791) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 792) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 793) .num_pmcs = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 794) .pmc_type = PPC_PMC_IBM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 795) .cpu_setup = __setup_cpu_750,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 796) .machine_check = machine_check_generic,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 797) .platform = "ppc750",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 798) .oprofile_cpu_type = "ppc/750",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 799) .oprofile_type = PPC_OPROFILE_G4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 800) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 801) { /* 745/755 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 802) .pvr_mask = 0xfffff000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 803) .pvr_value = 0x00083000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 804) .cpu_name = "745/755",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 805) .cpu_features = CPU_FTRS_750,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 806) .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 807) .mmu_features = MMU_FTR_HPTE_TABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 808) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 809) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 810) .num_pmcs = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 811) .pmc_type = PPC_PMC_IBM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 812) .cpu_setup = __setup_cpu_750,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 813) .machine_check = machine_check_generic,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 814) .platform = "ppc750",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 815) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 816) { /* 750FX rev 1.x */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 817) .pvr_mask = 0xffffff00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 818) .pvr_value = 0x70000100,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 819) .cpu_name = "750FX",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 820) .cpu_features = CPU_FTRS_750FX1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 821) .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 822) .mmu_features = MMU_FTR_HPTE_TABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 823) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 824) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 825) .num_pmcs = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 826) .pmc_type = PPC_PMC_IBM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 827) .cpu_setup = __setup_cpu_750,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 828) .machine_check = machine_check_generic,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 829) .platform = "ppc750",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 830) .oprofile_cpu_type = "ppc/750",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 831) .oprofile_type = PPC_OPROFILE_G4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 832) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 833) { /* 750FX rev 2.0 must disable HID0[DPM] */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 834) .pvr_mask = 0xffffffff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 835) .pvr_value = 0x70000200,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 836) .cpu_name = "750FX",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 837) .cpu_features = CPU_FTRS_750FX2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 838) .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 839) .mmu_features = MMU_FTR_HPTE_TABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 840) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 841) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 842) .num_pmcs = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 843) .pmc_type = PPC_PMC_IBM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 844) .cpu_setup = __setup_cpu_750,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 845) .machine_check = machine_check_generic,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 846) .platform = "ppc750",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 847) .oprofile_cpu_type = "ppc/750",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 848) .oprofile_type = PPC_OPROFILE_G4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 849) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 850) { /* 750FX (All revs except 2.0) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 851) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 852) .pvr_value = 0x70000000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 853) .cpu_name = "750FX",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 854) .cpu_features = CPU_FTRS_750FX,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 855) .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 856) .mmu_features = MMU_FTR_HPTE_TABLE | MMU_FTR_USE_HIGH_BATS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 857) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 858) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 859) .num_pmcs = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 860) .pmc_type = PPC_PMC_IBM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 861) .cpu_setup = __setup_cpu_750fx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 862) .machine_check = machine_check_generic,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 863) .platform = "ppc750",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 864) .oprofile_cpu_type = "ppc/750",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 865) .oprofile_type = PPC_OPROFILE_G4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 866) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 867) { /* 750GX */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 868) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 869) .pvr_value = 0x70020000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 870) .cpu_name = "750GX",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 871) .cpu_features = CPU_FTRS_750GX,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 872) .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 873) .mmu_features = MMU_FTR_HPTE_TABLE | MMU_FTR_USE_HIGH_BATS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 874) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 875) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 876) .num_pmcs = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 877) .pmc_type = PPC_PMC_IBM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 878) .cpu_setup = __setup_cpu_750fx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 879) .machine_check = machine_check_generic,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 880) .platform = "ppc750",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 881) .oprofile_cpu_type = "ppc/750",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 882) .oprofile_type = PPC_OPROFILE_G4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 883) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 884) { /* 740/750 (L2CR bit need fixup for 740) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 885) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 886) .pvr_value = 0x00080000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 887) .cpu_name = "740/750",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 888) .cpu_features = CPU_FTRS_740,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 889) .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 890) .mmu_features = MMU_FTR_HPTE_TABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 891) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 892) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 893) .num_pmcs = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 894) .pmc_type = PPC_PMC_IBM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 895) .cpu_setup = __setup_cpu_750,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 896) .machine_check = machine_check_generic,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 897) .platform = "ppc750",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 898) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 899) { /* 7400 rev 1.1 ? (no TAU) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 900) .pvr_mask = 0xffffffff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 901) .pvr_value = 0x000c1101,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 902) .cpu_name = "7400 (1.1)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 903) .cpu_features = CPU_FTRS_7400_NOTAU,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 904) .cpu_user_features = COMMON_USER |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 905) PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 906) .mmu_features = MMU_FTR_HPTE_TABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 907) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 908) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 909) .num_pmcs = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 910) .pmc_type = PPC_PMC_G4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 911) .cpu_setup = __setup_cpu_7400,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 912) .machine_check = machine_check_generic,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 913) .platform = "ppc7400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 914) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 915) { /* 7400 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 916) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 917) .pvr_value = 0x000c0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 918) .cpu_name = "7400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 919) .cpu_features = CPU_FTRS_7400,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 920) .cpu_user_features = COMMON_USER |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 921) PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 922) .mmu_features = MMU_FTR_HPTE_TABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 923) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 924) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 925) .num_pmcs = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 926) .pmc_type = PPC_PMC_G4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 927) .cpu_setup = __setup_cpu_7400,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 928) .machine_check = machine_check_generic,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 929) .platform = "ppc7400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 930) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 931) { /* 7410 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 932) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 933) .pvr_value = 0x800c0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 934) .cpu_name = "7410",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 935) .cpu_features = CPU_FTRS_7400,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 936) .cpu_user_features = COMMON_USER |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 937) PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 938) .mmu_features = MMU_FTR_HPTE_TABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 939) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 940) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 941) .num_pmcs = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 942) .pmc_type = PPC_PMC_G4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 943) .cpu_setup = __setup_cpu_7410,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 944) .machine_check = machine_check_generic,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 945) .platform = "ppc7400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 946) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 947) { /* 7450 2.0 - no doze/nap */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 948) .pvr_mask = 0xffffffff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 949) .pvr_value = 0x80000200,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 950) .cpu_name = "7450",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 951) .cpu_features = CPU_FTRS_7450_20,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 952) .cpu_user_features = COMMON_USER |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 953) PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 954) .mmu_features = MMU_FTR_HPTE_TABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 955) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 956) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 957) .num_pmcs = 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 958) .pmc_type = PPC_PMC_G4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 959) .cpu_setup = __setup_cpu_745x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 960) .oprofile_cpu_type = "ppc/7450",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 961) .oprofile_type = PPC_OPROFILE_G4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 962) .machine_check = machine_check_generic,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 963) .platform = "ppc7450",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 964) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 965) { /* 7450 2.1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 966) .pvr_mask = 0xffffffff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 967) .pvr_value = 0x80000201,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 968) .cpu_name = "7450",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 969) .cpu_features = CPU_FTRS_7450_21,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 970) .cpu_user_features = COMMON_USER |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 971) PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 972) .mmu_features = MMU_FTR_HPTE_TABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 973) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 974) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 975) .num_pmcs = 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 976) .pmc_type = PPC_PMC_G4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 977) .cpu_setup = __setup_cpu_745x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 978) .oprofile_cpu_type = "ppc/7450",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 979) .oprofile_type = PPC_OPROFILE_G4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 980) .machine_check = machine_check_generic,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 981) .platform = "ppc7450",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 982) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 983) { /* 7450 2.3 and newer */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 984) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 985) .pvr_value = 0x80000000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 986) .cpu_name = "7450",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 987) .cpu_features = CPU_FTRS_7450_23,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 988) .cpu_user_features = COMMON_USER |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 989) PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 990) .mmu_features = MMU_FTR_HPTE_TABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 991) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 992) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 993) .num_pmcs = 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 994) .pmc_type = PPC_PMC_G4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 995) .cpu_setup = __setup_cpu_745x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 996) .oprofile_cpu_type = "ppc/7450",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 997) .oprofile_type = PPC_OPROFILE_G4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 998) .machine_check = machine_check_generic,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 999) .platform = "ppc7450",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1000) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1001) { /* 7455 rev 1.x */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1002) .pvr_mask = 0xffffff00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1003) .pvr_value = 0x80010100,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1004) .cpu_name = "7455",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1005) .cpu_features = CPU_FTRS_7455_1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1006) .cpu_user_features = COMMON_USER |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1007) PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1008) .mmu_features = MMU_FTR_HPTE_TABLE | MMU_FTR_USE_HIGH_BATS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1009) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1010) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1011) .num_pmcs = 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1012) .pmc_type = PPC_PMC_G4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1013) .cpu_setup = __setup_cpu_745x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1014) .oprofile_cpu_type = "ppc/7450",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1015) .oprofile_type = PPC_OPROFILE_G4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1016) .machine_check = machine_check_generic,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1017) .platform = "ppc7450",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1018) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1019) { /* 7455 rev 2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1020) .pvr_mask = 0xffffffff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1021) .pvr_value = 0x80010200,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1022) .cpu_name = "7455",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1023) .cpu_features = CPU_FTRS_7455_20,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1024) .cpu_user_features = COMMON_USER |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1025) PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1026) .mmu_features = MMU_FTR_HPTE_TABLE | MMU_FTR_USE_HIGH_BATS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1027) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1028) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1029) .num_pmcs = 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1030) .pmc_type = PPC_PMC_G4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1031) .cpu_setup = __setup_cpu_745x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1032) .oprofile_cpu_type = "ppc/7450",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1033) .oprofile_type = PPC_OPROFILE_G4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1034) .machine_check = machine_check_generic,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1035) .platform = "ppc7450",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1036) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1037) { /* 7455 others */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1038) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1039) .pvr_value = 0x80010000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1040) .cpu_name = "7455",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1041) .cpu_features = CPU_FTRS_7455,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1042) .cpu_user_features = COMMON_USER |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1043) PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1044) .mmu_features = MMU_FTR_HPTE_TABLE | MMU_FTR_USE_HIGH_BATS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1045) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1046) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1047) .num_pmcs = 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1048) .pmc_type = PPC_PMC_G4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1049) .cpu_setup = __setup_cpu_745x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1050) .oprofile_cpu_type = "ppc/7450",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1051) .oprofile_type = PPC_OPROFILE_G4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1052) .machine_check = machine_check_generic,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1053) .platform = "ppc7450",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1054) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1055) { /* 7447/7457 Rev 1.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1056) .pvr_mask = 0xffffffff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1057) .pvr_value = 0x80020100,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1058) .cpu_name = "7447/7457",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1059) .cpu_features = CPU_FTRS_7447_10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1060) .cpu_user_features = COMMON_USER |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1061) PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1062) .mmu_features = MMU_FTR_HPTE_TABLE | MMU_FTR_USE_HIGH_BATS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1063) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1064) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1065) .num_pmcs = 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1066) .pmc_type = PPC_PMC_G4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1067) .cpu_setup = __setup_cpu_745x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1068) .oprofile_cpu_type = "ppc/7450",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1069) .oprofile_type = PPC_OPROFILE_G4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1070) .machine_check = machine_check_generic,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1071) .platform = "ppc7450",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1072) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1073) { /* 7447/7457 Rev 1.1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1074) .pvr_mask = 0xffffffff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1075) .pvr_value = 0x80020101,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1076) .cpu_name = "7447/7457",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1077) .cpu_features = CPU_FTRS_7447_10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1078) .cpu_user_features = COMMON_USER |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1079) PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1080) .mmu_features = MMU_FTR_HPTE_TABLE | MMU_FTR_USE_HIGH_BATS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1081) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1082) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1083) .num_pmcs = 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1084) .pmc_type = PPC_PMC_G4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1085) .cpu_setup = __setup_cpu_745x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1086) .oprofile_cpu_type = "ppc/7450",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1087) .oprofile_type = PPC_OPROFILE_G4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1088) .machine_check = machine_check_generic,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1089) .platform = "ppc7450",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1090) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1091) { /* 7447/7457 Rev 1.2 and later */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1092) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1093) .pvr_value = 0x80020000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1094) .cpu_name = "7447/7457",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1095) .cpu_features = CPU_FTRS_7447,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1096) .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1097) .mmu_features = MMU_FTR_HPTE_TABLE | MMU_FTR_USE_HIGH_BATS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1098) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1099) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1100) .num_pmcs = 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1101) .pmc_type = PPC_PMC_G4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1102) .cpu_setup = __setup_cpu_745x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1103) .oprofile_cpu_type = "ppc/7450",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1104) .oprofile_type = PPC_OPROFILE_G4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1105) .machine_check = machine_check_generic,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1106) .platform = "ppc7450",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1107) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1108) { /* 7447A */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1109) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1110) .pvr_value = 0x80030000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1111) .cpu_name = "7447A",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1112) .cpu_features = CPU_FTRS_7447A,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1113) .cpu_user_features = COMMON_USER |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1114) PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1115) .mmu_features = MMU_FTR_HPTE_TABLE | MMU_FTR_USE_HIGH_BATS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1116) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1117) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1118) .num_pmcs = 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1119) .pmc_type = PPC_PMC_G4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1120) .cpu_setup = __setup_cpu_745x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1121) .oprofile_cpu_type = "ppc/7450",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1122) .oprofile_type = PPC_OPROFILE_G4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1123) .machine_check = machine_check_generic,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1124) .platform = "ppc7450",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1125) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1126) { /* 7448 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1127) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1128) .pvr_value = 0x80040000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1129) .cpu_name = "7448",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1130) .cpu_features = CPU_FTRS_7448,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1131) .cpu_user_features = COMMON_USER |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1132) PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1133) .mmu_features = MMU_FTR_HPTE_TABLE | MMU_FTR_USE_HIGH_BATS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1134) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1135) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1136) .num_pmcs = 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1137) .pmc_type = PPC_PMC_G4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1138) .cpu_setup = __setup_cpu_745x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1139) .oprofile_cpu_type = "ppc/7450",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1140) .oprofile_type = PPC_OPROFILE_G4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1141) .machine_check = machine_check_generic,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1142) .platform = "ppc7450",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1143) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1144) { /* 82xx (8240, 8245, 8260 are all 603e cores) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1145) .pvr_mask = 0x7fff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1146) .pvr_value = 0x00810000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1147) .cpu_name = "82xx",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1148) .cpu_features = CPU_FTRS_82XX,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1149) .cpu_user_features = COMMON_USER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1150) .mmu_features = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1151) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1152) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1153) .cpu_setup = __setup_cpu_603,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1154) .machine_check = machine_check_generic,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1155) .platform = "ppc603",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1156) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1157) { /* All G2_LE (603e core, plus some) have the same pvr */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1158) .pvr_mask = 0x7fff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1159) .pvr_value = 0x00820000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1160) .cpu_name = "G2_LE",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1161) .cpu_features = CPU_FTRS_G2_LE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1162) .cpu_user_features = COMMON_USER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1163) .mmu_features = MMU_FTR_USE_HIGH_BATS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1164) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1165) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1166) .cpu_setup = __setup_cpu_603,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1167) .machine_check = machine_check_generic,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1168) .platform = "ppc603",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1169) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1170) #ifdef CONFIG_PPC_83xx
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1171) { /* e300c1 (a 603e core, plus some) on 83xx */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1172) .pvr_mask = 0x7fff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1173) .pvr_value = 0x00830000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1174) .cpu_name = "e300c1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1175) .cpu_features = CPU_FTRS_E300,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1176) .cpu_user_features = COMMON_USER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1177) .mmu_features = MMU_FTR_USE_HIGH_BATS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1178) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1179) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1180) .cpu_setup = __setup_cpu_603,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1181) .machine_check = machine_check_83xx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1182) .platform = "ppc603",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1183) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1184) { /* e300c2 (an e300c1 core, plus some, minus FPU) on 83xx */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1185) .pvr_mask = 0x7fff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1186) .pvr_value = 0x00840000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1187) .cpu_name = "e300c2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1188) .cpu_features = CPU_FTRS_E300C2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1189) .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1190) .mmu_features = MMU_FTR_USE_HIGH_BATS |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1191) MMU_FTR_NEED_DTLB_SW_LRU,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1192) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1193) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1194) .cpu_setup = __setup_cpu_603,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1195) .machine_check = machine_check_83xx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1196) .platform = "ppc603",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1197) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1198) { /* e300c3 (e300c1, plus one IU, half cache size) on 83xx */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1199) .pvr_mask = 0x7fff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1200) .pvr_value = 0x00850000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1201) .cpu_name = "e300c3",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1202) .cpu_features = CPU_FTRS_E300,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1203) .cpu_user_features = COMMON_USER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1204) .mmu_features = MMU_FTR_USE_HIGH_BATS |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1205) MMU_FTR_NEED_DTLB_SW_LRU,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1206) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1207) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1208) .cpu_setup = __setup_cpu_603,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1209) .machine_check = machine_check_83xx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1210) .num_pmcs = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1211) .oprofile_cpu_type = "ppc/e300",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1212) .oprofile_type = PPC_OPROFILE_FSL_EMB,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1213) .platform = "ppc603",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1214) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1215) { /* e300c4 (e300c1, plus one IU) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1216) .pvr_mask = 0x7fff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1217) .pvr_value = 0x00860000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1218) .cpu_name = "e300c4",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1219) .cpu_features = CPU_FTRS_E300,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1220) .cpu_user_features = COMMON_USER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1221) .mmu_features = MMU_FTR_USE_HIGH_BATS |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1222) MMU_FTR_NEED_DTLB_SW_LRU,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1223) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1224) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1225) .cpu_setup = __setup_cpu_603,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1226) .machine_check = machine_check_83xx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1227) .num_pmcs = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1228) .oprofile_cpu_type = "ppc/e300",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1229) .oprofile_type = PPC_OPROFILE_FSL_EMB,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1230) .platform = "ppc603",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1231) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1232) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1233) { /* default match, we assume split I/D cache & TB (non-601)... */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1234) .pvr_mask = 0x00000000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1235) .pvr_value = 0x00000000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1236) .cpu_name = "(generic PPC)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1237) .cpu_features = CPU_FTRS_CLASSIC32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1238) .cpu_user_features = COMMON_USER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1239) .mmu_features = MMU_FTR_HPTE_TABLE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1240) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1241) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1242) .machine_check = machine_check_generic,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1243) .platform = "ppc603",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1244) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1245) #endif /* CONFIG_PPC_BOOK3S_6xx */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1246) #ifdef CONFIG_PPC_8xx
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1247) { /* 8xx */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1248) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1249) .pvr_value = PVR_8xx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1250) .cpu_name = "8xx",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1251) /* CPU_FTR_MAYBE_CAN_DOZE is possible,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1252) * if the 8xx code is there.... */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1253) .cpu_features = CPU_FTRS_8XX,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1254) .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1255) .mmu_features = MMU_FTR_TYPE_8xx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1256) .icache_bsize = 16,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1257) .dcache_bsize = 16,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1258) .machine_check = machine_check_8xx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1259) .platform = "ppc823",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1260) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1261) #endif /* CONFIG_PPC_8xx */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1262) #ifdef CONFIG_40x
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1263) { /* STB 04xxx */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1264) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1265) .pvr_value = 0x41810000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1266) .cpu_name = "STB04xxx",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1267) .cpu_features = CPU_FTRS_40X,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1268) .cpu_user_features = PPC_FEATURE_32 |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1269) PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1270) .mmu_features = MMU_FTR_TYPE_40x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1271) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1272) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1273) .machine_check = machine_check_4xx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1274) .platform = "ppc405",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1275) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1276) { /* NP405L */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1277) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1278) .pvr_value = 0x41610000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1279) .cpu_name = "NP405L",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1280) .cpu_features = CPU_FTRS_40X,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1281) .cpu_user_features = PPC_FEATURE_32 |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1282) PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1283) .mmu_features = MMU_FTR_TYPE_40x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1284) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1285) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1286) .machine_check = machine_check_4xx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1287) .platform = "ppc405",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1288) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1289) { /* NP4GS3 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1290) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1291) .pvr_value = 0x40B10000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1292) .cpu_name = "NP4GS3",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1293) .cpu_features = CPU_FTRS_40X,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1294) .cpu_user_features = PPC_FEATURE_32 |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1295) PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1296) .mmu_features = MMU_FTR_TYPE_40x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1297) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1298) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1299) .machine_check = machine_check_4xx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1300) .platform = "ppc405",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1301) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1302) { /* NP405H */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1303) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1304) .pvr_value = 0x41410000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1305) .cpu_name = "NP405H",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1306) .cpu_features = CPU_FTRS_40X,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1307) .cpu_user_features = PPC_FEATURE_32 |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1308) PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1309) .mmu_features = MMU_FTR_TYPE_40x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1310) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1311) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1312) .machine_check = machine_check_4xx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1313) .platform = "ppc405",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1314) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1315) { /* 405GPr */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1316) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1317) .pvr_value = 0x50910000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1318) .cpu_name = "405GPr",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1319) .cpu_features = CPU_FTRS_40X,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1320) .cpu_user_features = PPC_FEATURE_32 |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1321) PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1322) .mmu_features = MMU_FTR_TYPE_40x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1323) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1324) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1325) .machine_check = machine_check_4xx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1326) .platform = "ppc405",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1327) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1328) { /* STBx25xx */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1329) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1330) .pvr_value = 0x51510000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1331) .cpu_name = "STBx25xx",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1332) .cpu_features = CPU_FTRS_40X,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1333) .cpu_user_features = PPC_FEATURE_32 |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1334) PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1335) .mmu_features = MMU_FTR_TYPE_40x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1336) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1337) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1338) .machine_check = machine_check_4xx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1339) .platform = "ppc405",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1340) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1341) { /* 405LP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1342) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1343) .pvr_value = 0x41F10000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1344) .cpu_name = "405LP",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1345) .cpu_features = CPU_FTRS_40X,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1346) .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1347) .mmu_features = MMU_FTR_TYPE_40x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1348) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1349) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1350) .machine_check = machine_check_4xx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1351) .platform = "ppc405",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1352) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1353) { /* 405EP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1354) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1355) .pvr_value = 0x51210000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1356) .cpu_name = "405EP",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1357) .cpu_features = CPU_FTRS_40X,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1358) .cpu_user_features = PPC_FEATURE_32 |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1359) PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1360) .mmu_features = MMU_FTR_TYPE_40x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1361) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1362) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1363) .machine_check = machine_check_4xx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1364) .platform = "ppc405",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1365) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1366) { /* 405EX Rev. A/B with Security */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1367) .pvr_mask = 0xffff000f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1368) .pvr_value = 0x12910007,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1369) .cpu_name = "405EX Rev. A/B",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1370) .cpu_features = CPU_FTRS_40X,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1371) .cpu_user_features = PPC_FEATURE_32 |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1372) PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1373) .mmu_features = MMU_FTR_TYPE_40x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1374) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1375) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1376) .machine_check = machine_check_4xx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1377) .platform = "ppc405",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1378) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1379) { /* 405EX Rev. C without Security */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1380) .pvr_mask = 0xffff000f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1381) .pvr_value = 0x1291000d,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1382) .cpu_name = "405EX Rev. C",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1383) .cpu_features = CPU_FTRS_40X,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1384) .cpu_user_features = PPC_FEATURE_32 |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1385) PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1386) .mmu_features = MMU_FTR_TYPE_40x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1387) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1388) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1389) .machine_check = machine_check_4xx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1390) .platform = "ppc405",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1391) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1392) { /* 405EX Rev. C with Security */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1393) .pvr_mask = 0xffff000f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1394) .pvr_value = 0x1291000f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1395) .cpu_name = "405EX Rev. C",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1396) .cpu_features = CPU_FTRS_40X,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1397) .cpu_user_features = PPC_FEATURE_32 |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1398) PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1399) .mmu_features = MMU_FTR_TYPE_40x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1400) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1401) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1402) .machine_check = machine_check_4xx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1403) .platform = "ppc405",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1404) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1405) { /* 405EX Rev. D without Security */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1406) .pvr_mask = 0xffff000f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1407) .pvr_value = 0x12910003,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1408) .cpu_name = "405EX Rev. D",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1409) .cpu_features = CPU_FTRS_40X,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1410) .cpu_user_features = PPC_FEATURE_32 |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1411) PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1412) .mmu_features = MMU_FTR_TYPE_40x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1413) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1414) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1415) .machine_check = machine_check_4xx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1416) .platform = "ppc405",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1417) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1418) { /* 405EX Rev. D with Security */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1419) .pvr_mask = 0xffff000f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1420) .pvr_value = 0x12910005,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1421) .cpu_name = "405EX Rev. D",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1422) .cpu_features = CPU_FTRS_40X,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1423) .cpu_user_features = PPC_FEATURE_32 |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1424) PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1425) .mmu_features = MMU_FTR_TYPE_40x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1426) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1427) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1428) .machine_check = machine_check_4xx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1429) .platform = "ppc405",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1430) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1431) { /* 405EXr Rev. A/B without Security */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1432) .pvr_mask = 0xffff000f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1433) .pvr_value = 0x12910001,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1434) .cpu_name = "405EXr Rev. A/B",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1435) .cpu_features = CPU_FTRS_40X,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1436) .cpu_user_features = PPC_FEATURE_32 |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1437) PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1438) .mmu_features = MMU_FTR_TYPE_40x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1439) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1440) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1441) .machine_check = machine_check_4xx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1442) .platform = "ppc405",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1443) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1444) { /* 405EXr Rev. C without Security */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1445) .pvr_mask = 0xffff000f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1446) .pvr_value = 0x12910009,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1447) .cpu_name = "405EXr Rev. C",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1448) .cpu_features = CPU_FTRS_40X,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1449) .cpu_user_features = PPC_FEATURE_32 |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1450) PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1451) .mmu_features = MMU_FTR_TYPE_40x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1452) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1453) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1454) .machine_check = machine_check_4xx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1455) .platform = "ppc405",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1456) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1457) { /* 405EXr Rev. C with Security */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1458) .pvr_mask = 0xffff000f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1459) .pvr_value = 0x1291000b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1460) .cpu_name = "405EXr Rev. C",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1461) .cpu_features = CPU_FTRS_40X,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1462) .cpu_user_features = PPC_FEATURE_32 |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1463) PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1464) .mmu_features = MMU_FTR_TYPE_40x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1465) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1466) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1467) .machine_check = machine_check_4xx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1468) .platform = "ppc405",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1469) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1470) { /* 405EXr Rev. D without Security */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1471) .pvr_mask = 0xffff000f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1472) .pvr_value = 0x12910000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1473) .cpu_name = "405EXr Rev. D",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1474) .cpu_features = CPU_FTRS_40X,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1475) .cpu_user_features = PPC_FEATURE_32 |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1476) PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1477) .mmu_features = MMU_FTR_TYPE_40x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1478) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1479) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1480) .machine_check = machine_check_4xx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1481) .platform = "ppc405",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1482) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1483) { /* 405EXr Rev. D with Security */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1484) .pvr_mask = 0xffff000f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1485) .pvr_value = 0x12910002,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1486) .cpu_name = "405EXr Rev. D",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1487) .cpu_features = CPU_FTRS_40X,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1488) .cpu_user_features = PPC_FEATURE_32 |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1489) PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1490) .mmu_features = MMU_FTR_TYPE_40x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1491) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1492) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1493) .machine_check = machine_check_4xx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1494) .platform = "ppc405",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1495) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1496) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1497) /* 405EZ */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1498) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1499) .pvr_value = 0x41510000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1500) .cpu_name = "405EZ",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1501) .cpu_features = CPU_FTRS_40X,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1502) .cpu_user_features = PPC_FEATURE_32 |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1503) PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1504) .mmu_features = MMU_FTR_TYPE_40x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1505) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1506) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1507) .machine_check = machine_check_4xx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1508) .platform = "ppc405",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1509) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1510) { /* APM8018X */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1511) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1512) .pvr_value = 0x7ff11432,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1513) .cpu_name = "APM8018X",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1514) .cpu_features = CPU_FTRS_40X,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1515) .cpu_user_features = PPC_FEATURE_32 |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1516) PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1517) .mmu_features = MMU_FTR_TYPE_40x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1518) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1519) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1520) .machine_check = machine_check_4xx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1521) .platform = "ppc405",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1522) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1523) { /* default match */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1524) .pvr_mask = 0x00000000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1525) .pvr_value = 0x00000000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1526) .cpu_name = "(generic 40x PPC)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1527) .cpu_features = CPU_FTRS_40X,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1528) .cpu_user_features = PPC_FEATURE_32 |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1529) PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1530) .mmu_features = MMU_FTR_TYPE_40x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1531) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1532) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1533) .machine_check = machine_check_4xx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1534) .platform = "ppc405",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1535) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1536)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1537) #endif /* CONFIG_40x */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1538) #ifdef CONFIG_44x
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1539) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1540) .pvr_mask = 0xf0000fff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1541) .pvr_value = 0x40000850,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1542) .cpu_name = "440GR Rev. A",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1543) .cpu_features = CPU_FTRS_44X,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1544) .cpu_user_features = COMMON_USER_BOOKE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1545) .mmu_features = MMU_FTR_TYPE_44x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1546) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1547) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1548) .machine_check = machine_check_4xx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1549) .platform = "ppc440",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1550) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1551) { /* Use logical PVR for 440EP (logical pvr = pvr | 0x8) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1552) .pvr_mask = 0xf0000fff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1553) .pvr_value = 0x40000858,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1554) .cpu_name = "440EP Rev. A",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1555) .cpu_features = CPU_FTRS_44X,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1556) .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1557) .mmu_features = MMU_FTR_TYPE_44x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1558) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1559) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1560) .cpu_setup = __setup_cpu_440ep,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1561) .machine_check = machine_check_4xx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1562) .platform = "ppc440",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1563) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1564) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1565) .pvr_mask = 0xf0000fff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1566) .pvr_value = 0x400008d3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1567) .cpu_name = "440GR Rev. B",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1568) .cpu_features = CPU_FTRS_44X,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1569) .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1570) .mmu_features = MMU_FTR_TYPE_44x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1571) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1572) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1573) .machine_check = machine_check_4xx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1574) .platform = "ppc440",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1575) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1576) { /* Matches both physical and logical PVR for 440EP (logical pvr = pvr | 0x8) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1577) .pvr_mask = 0xf0000ff7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1578) .pvr_value = 0x400008d4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1579) .cpu_name = "440EP Rev. C",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1580) .cpu_features = CPU_FTRS_44X,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1581) .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1582) .mmu_features = MMU_FTR_TYPE_44x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1583) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1584) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1585) .cpu_setup = __setup_cpu_440ep,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1586) .machine_check = machine_check_4xx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1587) .platform = "ppc440",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1588) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1589) { /* Use logical PVR for 440EP (logical pvr = pvr | 0x8) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1590) .pvr_mask = 0xf0000fff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1591) .pvr_value = 0x400008db,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1592) .cpu_name = "440EP Rev. B",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1593) .cpu_features = CPU_FTRS_44X,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1594) .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1595) .mmu_features = MMU_FTR_TYPE_44x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1596) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1597) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1598) .cpu_setup = __setup_cpu_440ep,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1599) .machine_check = machine_check_4xx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1600) .platform = "ppc440",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1601) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1602) { /* 440GRX */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1603) .pvr_mask = 0xf0000ffb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1604) .pvr_value = 0x200008D0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1605) .cpu_name = "440GRX",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1606) .cpu_features = CPU_FTRS_44X,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1607) .cpu_user_features = COMMON_USER_BOOKE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1608) .mmu_features = MMU_FTR_TYPE_44x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1609) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1610) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1611) .cpu_setup = __setup_cpu_440grx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1612) .machine_check = machine_check_440A,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1613) .platform = "ppc440",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1614) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1615) { /* Use logical PVR for 440EPx (logical pvr = pvr | 0x8) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1616) .pvr_mask = 0xf0000ffb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1617) .pvr_value = 0x200008D8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1618) .cpu_name = "440EPX",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1619) .cpu_features = CPU_FTRS_44X,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1620) .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1621) .mmu_features = MMU_FTR_TYPE_44x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1622) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1623) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1624) .cpu_setup = __setup_cpu_440epx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1625) .machine_check = machine_check_440A,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1626) .platform = "ppc440",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1627) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1628) { /* 440GP Rev. B */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1629) .pvr_mask = 0xf0000fff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1630) .pvr_value = 0x40000440,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1631) .cpu_name = "440GP Rev. B",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1632) .cpu_features = CPU_FTRS_44X,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1633) .cpu_user_features = COMMON_USER_BOOKE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1634) .mmu_features = MMU_FTR_TYPE_44x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1635) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1636) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1637) .machine_check = machine_check_4xx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1638) .platform = "ppc440gp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1639) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1640) { /* 440GP Rev. C */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1641) .pvr_mask = 0xf0000fff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1642) .pvr_value = 0x40000481,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1643) .cpu_name = "440GP Rev. C",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1644) .cpu_features = CPU_FTRS_44X,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1645) .cpu_user_features = COMMON_USER_BOOKE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1646) .mmu_features = MMU_FTR_TYPE_44x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1647) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1648) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1649) .machine_check = machine_check_4xx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1650) .platform = "ppc440gp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1651) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1652) { /* 440GX Rev. A */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1653) .pvr_mask = 0xf0000fff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1654) .pvr_value = 0x50000850,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1655) .cpu_name = "440GX Rev. A",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1656) .cpu_features = CPU_FTRS_44X,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1657) .cpu_user_features = COMMON_USER_BOOKE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1658) .mmu_features = MMU_FTR_TYPE_44x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1659) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1660) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1661) .cpu_setup = __setup_cpu_440gx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1662) .machine_check = machine_check_440A,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1663) .platform = "ppc440",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1664) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1665) { /* 440GX Rev. B */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1666) .pvr_mask = 0xf0000fff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1667) .pvr_value = 0x50000851,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1668) .cpu_name = "440GX Rev. B",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1669) .cpu_features = CPU_FTRS_44X,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1670) .cpu_user_features = COMMON_USER_BOOKE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1671) .mmu_features = MMU_FTR_TYPE_44x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1672) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1673) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1674) .cpu_setup = __setup_cpu_440gx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1675) .machine_check = machine_check_440A,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1676) .platform = "ppc440",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1677) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1678) { /* 440GX Rev. C */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1679) .pvr_mask = 0xf0000fff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1680) .pvr_value = 0x50000892,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1681) .cpu_name = "440GX Rev. C",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1682) .cpu_features = CPU_FTRS_44X,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1683) .cpu_user_features = COMMON_USER_BOOKE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1684) .mmu_features = MMU_FTR_TYPE_44x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1685) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1686) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1687) .cpu_setup = __setup_cpu_440gx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1688) .machine_check = machine_check_440A,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1689) .platform = "ppc440",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1690) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1691) { /* 440GX Rev. F */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1692) .pvr_mask = 0xf0000fff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1693) .pvr_value = 0x50000894,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1694) .cpu_name = "440GX Rev. F",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1695) .cpu_features = CPU_FTRS_44X,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1696) .cpu_user_features = COMMON_USER_BOOKE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1697) .mmu_features = MMU_FTR_TYPE_44x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1698) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1699) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1700) .cpu_setup = __setup_cpu_440gx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1701) .machine_check = machine_check_440A,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1702) .platform = "ppc440",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1703) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1704) { /* 440SP Rev. A */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1705) .pvr_mask = 0xfff00fff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1706) .pvr_value = 0x53200891,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1707) .cpu_name = "440SP Rev. A",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1708) .cpu_features = CPU_FTRS_44X,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1709) .cpu_user_features = COMMON_USER_BOOKE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1710) .mmu_features = MMU_FTR_TYPE_44x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1711) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1712) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1713) .machine_check = machine_check_4xx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1714) .platform = "ppc440",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1715) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1716) { /* 440SPe Rev. A */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1717) .pvr_mask = 0xfff00fff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1718) .pvr_value = 0x53400890,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1719) .cpu_name = "440SPe Rev. A",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1720) .cpu_features = CPU_FTRS_44X,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1721) .cpu_user_features = COMMON_USER_BOOKE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1722) .mmu_features = MMU_FTR_TYPE_44x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1723) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1724) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1725) .cpu_setup = __setup_cpu_440spe,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1726) .machine_check = machine_check_440A,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1727) .platform = "ppc440",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1728) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1729) { /* 440SPe Rev. B */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1730) .pvr_mask = 0xfff00fff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1731) .pvr_value = 0x53400891,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1732) .cpu_name = "440SPe Rev. B",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1733) .cpu_features = CPU_FTRS_44X,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1734) .cpu_user_features = COMMON_USER_BOOKE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1735) .mmu_features = MMU_FTR_TYPE_44x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1736) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1737) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1738) .cpu_setup = __setup_cpu_440spe,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1739) .machine_check = machine_check_440A,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1740) .platform = "ppc440",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1741) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1742) { /* 460EX */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1743) .pvr_mask = 0xffff0006,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1744) .pvr_value = 0x13020002,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1745) .cpu_name = "460EX",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1746) .cpu_features = CPU_FTRS_440x6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1747) .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1748) .mmu_features = MMU_FTR_TYPE_44x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1749) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1750) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1751) .cpu_setup = __setup_cpu_460ex,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1752) .machine_check = machine_check_440A,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1753) .platform = "ppc440",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1754) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1755) { /* 460EX Rev B */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1756) .pvr_mask = 0xffff0007,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1757) .pvr_value = 0x13020004,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1758) .cpu_name = "460EX Rev. B",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1759) .cpu_features = CPU_FTRS_440x6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1760) .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1761) .mmu_features = MMU_FTR_TYPE_44x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1762) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1763) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1764) .cpu_setup = __setup_cpu_460ex,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1765) .machine_check = machine_check_440A,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1766) .platform = "ppc440",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1767) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1768) { /* 460GT */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1769) .pvr_mask = 0xffff0006,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1770) .pvr_value = 0x13020000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1771) .cpu_name = "460GT",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1772) .cpu_features = CPU_FTRS_440x6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1773) .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1774) .mmu_features = MMU_FTR_TYPE_44x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1775) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1776) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1777) .cpu_setup = __setup_cpu_460gt,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1778) .machine_check = machine_check_440A,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1779) .platform = "ppc440",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1780) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1781) { /* 460GT Rev B */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1782) .pvr_mask = 0xffff0007,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1783) .pvr_value = 0x13020005,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1784) .cpu_name = "460GT Rev. B",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1785) .cpu_features = CPU_FTRS_440x6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1786) .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1787) .mmu_features = MMU_FTR_TYPE_44x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1788) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1789) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1790) .cpu_setup = __setup_cpu_460gt,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1791) .machine_check = machine_check_440A,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1792) .platform = "ppc440",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1793) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1794) { /* 460SX */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1795) .pvr_mask = 0xffffff00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1796) .pvr_value = 0x13541800,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1797) .cpu_name = "460SX",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1798) .cpu_features = CPU_FTRS_44X,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1799) .cpu_user_features = COMMON_USER_BOOKE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1800) .mmu_features = MMU_FTR_TYPE_44x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1801) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1802) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1803) .cpu_setup = __setup_cpu_460sx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1804) .machine_check = machine_check_440A,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1805) .platform = "ppc440",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1806) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1807) { /* 464 in APM821xx */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1808) .pvr_mask = 0xfffffff0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1809) .pvr_value = 0x12C41C80,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1810) .cpu_name = "APM821XX",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1811) .cpu_features = CPU_FTRS_44X,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1812) .cpu_user_features = COMMON_USER_BOOKE |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1813) PPC_FEATURE_HAS_FPU,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1814) .mmu_features = MMU_FTR_TYPE_44x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1815) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1816) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1817) .cpu_setup = __setup_cpu_apm821xx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1818) .machine_check = machine_check_440A,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1819) .platform = "ppc440",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1820) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1821) #ifdef CONFIG_PPC_47x
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1822) { /* 476 DD2 core */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1823) .pvr_mask = 0xffffffff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1824) .pvr_value = 0x11a52080,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1825) .cpu_name = "476",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1826) .cpu_features = CPU_FTRS_47X | CPU_FTR_476_DD2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1827) .cpu_user_features = COMMON_USER_BOOKE |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1828) PPC_FEATURE_HAS_FPU,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1829) .mmu_features = MMU_FTR_TYPE_47x |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1830) MMU_FTR_USE_TLBIVAX_BCAST | MMU_FTR_LOCK_BCAST_INVAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1831) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1832) .dcache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1833) .machine_check = machine_check_47x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1834) .platform = "ppc470",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1835) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1836) { /* 476fpe */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1837) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1838) .pvr_value = 0x7ff50000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1839) .cpu_name = "476fpe",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1840) .cpu_features = CPU_FTRS_47X | CPU_FTR_476_DD2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1841) .cpu_user_features = COMMON_USER_BOOKE |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1842) PPC_FEATURE_HAS_FPU,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1843) .mmu_features = MMU_FTR_TYPE_47x |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1844) MMU_FTR_USE_TLBIVAX_BCAST | MMU_FTR_LOCK_BCAST_INVAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1845) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1846) .dcache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1847) .machine_check = machine_check_47x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1848) .platform = "ppc470",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1849) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1850) { /* 476 iss */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1851) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1852) .pvr_value = 0x00050000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1853) .cpu_name = "476",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1854) .cpu_features = CPU_FTRS_47X,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1855) .cpu_user_features = COMMON_USER_BOOKE |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1856) PPC_FEATURE_HAS_FPU,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1857) .mmu_features = MMU_FTR_TYPE_47x |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1858) MMU_FTR_USE_TLBIVAX_BCAST | MMU_FTR_LOCK_BCAST_INVAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1859) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1860) .dcache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1861) .machine_check = machine_check_47x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1862) .platform = "ppc470",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1863) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1864) { /* 476 others */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1865) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1866) .pvr_value = 0x11a50000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1867) .cpu_name = "476",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1868) .cpu_features = CPU_FTRS_47X,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1869) .cpu_user_features = COMMON_USER_BOOKE |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1870) PPC_FEATURE_HAS_FPU,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1871) .mmu_features = MMU_FTR_TYPE_47x |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1872) MMU_FTR_USE_TLBIVAX_BCAST | MMU_FTR_LOCK_BCAST_INVAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1873) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1874) .dcache_bsize = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1875) .machine_check = machine_check_47x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1876) .platform = "ppc470",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1877) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1878) #endif /* CONFIG_PPC_47x */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1879) { /* default match */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1880) .pvr_mask = 0x00000000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1881) .pvr_value = 0x00000000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1882) .cpu_name = "(generic 44x PPC)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1883) .cpu_features = CPU_FTRS_44X,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1884) .cpu_user_features = COMMON_USER_BOOKE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1885) .mmu_features = MMU_FTR_TYPE_44x,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1886) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1887) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1888) .machine_check = machine_check_4xx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1889) .platform = "ppc440",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1890) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1891) #endif /* CONFIG_44x */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1892) #ifdef CONFIG_E200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1893) { /* e200z5 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1894) .pvr_mask = 0xfff00000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1895) .pvr_value = 0x81000000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1896) .cpu_name = "e200z5",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1897) /* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1898) .cpu_features = CPU_FTRS_E200,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1899) .cpu_user_features = COMMON_USER_BOOKE |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1900) PPC_FEATURE_HAS_EFP_SINGLE |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1901) PPC_FEATURE_UNIFIED_CACHE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1902) .mmu_features = MMU_FTR_TYPE_FSL_E,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1903) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1904) .machine_check = machine_check_e200,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1905) .platform = "ppc5554",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1906) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1907) { /* e200z6 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1908) .pvr_mask = 0xfff00000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1909) .pvr_value = 0x81100000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1910) .cpu_name = "e200z6",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1911) /* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1912) .cpu_features = CPU_FTRS_E200,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1913) .cpu_user_features = COMMON_USER_BOOKE |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1914) PPC_FEATURE_HAS_SPE_COMP |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1915) PPC_FEATURE_HAS_EFP_SINGLE_COMP |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1916) PPC_FEATURE_UNIFIED_CACHE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1917) .mmu_features = MMU_FTR_TYPE_FSL_E,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1918) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1919) .machine_check = machine_check_e200,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1920) .platform = "ppc5554",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1921) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1922) { /* default match */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1923) .pvr_mask = 0x00000000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1924) .pvr_value = 0x00000000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1925) .cpu_name = "(generic E200 PPC)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1926) .cpu_features = CPU_FTRS_E200,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1927) .cpu_user_features = COMMON_USER_BOOKE |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1928) PPC_FEATURE_HAS_EFP_SINGLE |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1929) PPC_FEATURE_UNIFIED_CACHE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1930) .mmu_features = MMU_FTR_TYPE_FSL_E,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1931) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1932) .cpu_setup = __setup_cpu_e200,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1933) .machine_check = machine_check_e200,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1934) .platform = "ppc5554",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1935) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1936) #endif /* CONFIG_E200 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1937) #endif /* CONFIG_PPC32 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1938) #ifdef CONFIG_E500
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1939) #ifdef CONFIG_PPC32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1940) #ifndef CONFIG_PPC_E500MC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1941) { /* e500 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1942) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1943) .pvr_value = 0x80200000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1944) .cpu_name = "e500",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1945) .cpu_features = CPU_FTRS_E500,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1946) .cpu_user_features = COMMON_USER_BOOKE |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1947) PPC_FEATURE_HAS_SPE_COMP |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1948) PPC_FEATURE_HAS_EFP_SINGLE_COMP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1949) .cpu_user_features2 = PPC_FEATURE2_ISEL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1950) .mmu_features = MMU_FTR_TYPE_FSL_E,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1951) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1952) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1953) .num_pmcs = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1954) .oprofile_cpu_type = "ppc/e500",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1955) .oprofile_type = PPC_OPROFILE_FSL_EMB,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1956) .cpu_setup = __setup_cpu_e500v1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1957) .machine_check = machine_check_e500,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1958) .platform = "ppc8540",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1959) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1960) { /* e500v2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1961) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1962) .pvr_value = 0x80210000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1963) .cpu_name = "e500v2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1964) .cpu_features = CPU_FTRS_E500_2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1965) .cpu_user_features = COMMON_USER_BOOKE |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1966) PPC_FEATURE_HAS_SPE_COMP |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1967) PPC_FEATURE_HAS_EFP_SINGLE_COMP |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1968) PPC_FEATURE_HAS_EFP_DOUBLE_COMP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1969) .cpu_user_features2 = PPC_FEATURE2_ISEL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1970) .mmu_features = MMU_FTR_TYPE_FSL_E | MMU_FTR_BIG_PHYS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1971) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1972) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1973) .num_pmcs = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1974) .oprofile_cpu_type = "ppc/e500",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1975) .oprofile_type = PPC_OPROFILE_FSL_EMB,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1976) .cpu_setup = __setup_cpu_e500v2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1977) .machine_check = machine_check_e500,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1978) .platform = "ppc8548",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1979) .cpu_down_flush = cpu_down_flush_e500v2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1980) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1981) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1982) { /* e500mc */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1983) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1984) .pvr_value = 0x80230000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1985) .cpu_name = "e500mc",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1986) .cpu_features = CPU_FTRS_E500MC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1987) .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1988) .cpu_user_features2 = PPC_FEATURE2_ISEL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1989) .mmu_features = MMU_FTR_TYPE_FSL_E | MMU_FTR_BIG_PHYS |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1990) MMU_FTR_USE_TLBILX,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1991) .icache_bsize = 64,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1992) .dcache_bsize = 64,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1993) .num_pmcs = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1994) .oprofile_cpu_type = "ppc/e500mc",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1995) .oprofile_type = PPC_OPROFILE_FSL_EMB,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1996) .cpu_setup = __setup_cpu_e500mc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1997) .machine_check = machine_check_e500mc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1998) .platform = "ppce500mc",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1999) .cpu_down_flush = cpu_down_flush_e500mc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2000) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2001) #endif /* CONFIG_PPC_E500MC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2002) #endif /* CONFIG_PPC32 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2003) #ifdef CONFIG_PPC_E500MC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2004) { /* e5500 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2005) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2006) .pvr_value = 0x80240000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2007) .cpu_name = "e5500",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2008) .cpu_features = CPU_FTRS_E5500,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2009) .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2010) .cpu_user_features2 = PPC_FEATURE2_ISEL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2011) .mmu_features = MMU_FTR_TYPE_FSL_E | MMU_FTR_BIG_PHYS |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2012) MMU_FTR_USE_TLBILX,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2013) .icache_bsize = 64,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2014) .dcache_bsize = 64,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2015) .num_pmcs = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2016) .oprofile_cpu_type = "ppc/e500mc",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2017) .oprofile_type = PPC_OPROFILE_FSL_EMB,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2018) .cpu_setup = __setup_cpu_e5500,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2019) #ifndef CONFIG_PPC32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2020) .cpu_restore = __restore_cpu_e5500,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2021) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2022) .machine_check = machine_check_e500mc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2023) .platform = "ppce5500",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2024) .cpu_down_flush = cpu_down_flush_e5500,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2025) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2026) { /* e6500 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2027) .pvr_mask = 0xffff0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2028) .pvr_value = 0x80400000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2029) .cpu_name = "e6500",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2030) .cpu_features = CPU_FTRS_E6500,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2031) .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2032) PPC_FEATURE_HAS_ALTIVEC_COMP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2033) .cpu_user_features2 = PPC_FEATURE2_ISEL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2034) .mmu_features = MMU_FTR_TYPE_FSL_E | MMU_FTR_BIG_PHYS |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2035) MMU_FTR_USE_TLBILX,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2036) .icache_bsize = 64,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2037) .dcache_bsize = 64,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2038) .num_pmcs = 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2039) .oprofile_cpu_type = "ppc/e6500",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2040) .oprofile_type = PPC_OPROFILE_FSL_EMB,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2041) .cpu_setup = __setup_cpu_e6500,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2042) #ifndef CONFIG_PPC32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2043) .cpu_restore = __restore_cpu_e6500,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2044) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2045) .machine_check = machine_check_e500mc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2046) .platform = "ppce6500",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2047) .cpu_down_flush = cpu_down_flush_e6500,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2048) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2049) #endif /* CONFIG_PPC_E500MC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2050) #ifdef CONFIG_PPC32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2051) { /* default match */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2052) .pvr_mask = 0x00000000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2053) .pvr_value = 0x00000000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2054) .cpu_name = "(generic E500 PPC)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2055) .cpu_features = CPU_FTRS_E500,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2056) .cpu_user_features = COMMON_USER_BOOKE |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2057) PPC_FEATURE_HAS_SPE_COMP |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2058) PPC_FEATURE_HAS_EFP_SINGLE_COMP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2059) .mmu_features = MMU_FTR_TYPE_FSL_E,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2060) .icache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2061) .dcache_bsize = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2062) .machine_check = machine_check_e500,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2063) .platform = "powerpc",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2064) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2065) #endif /* CONFIG_PPC32 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2066) #endif /* CONFIG_E500 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2067) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2068)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2069) void __init set_cur_cpu_spec(struct cpu_spec *s)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2070) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2071) struct cpu_spec *t = &the_cpu_spec;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2072)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2073) t = PTRRELOC(t);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2074) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2075) * use memcpy() instead of *t = *s so that GCC replaces it
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2076) * by __memcpy() when KASAN is active
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2077) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2078) memcpy(t, s, sizeof(*t));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2079)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2080) *PTRRELOC(&cur_cpu_spec) = &the_cpu_spec;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2081) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2082)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2083) static struct cpu_spec * __init setup_cpu_spec(unsigned long offset,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2084) struct cpu_spec *s)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2085) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2086) struct cpu_spec *t = &the_cpu_spec;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2087) struct cpu_spec old;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2088)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2089) t = PTRRELOC(t);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2090) old = *t;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2091)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2092) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2093) * Copy everything, then do fixups. Use memcpy() instead of *t = *s
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2094) * so that GCC replaces it by __memcpy() when KASAN is active
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2095) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2096) memcpy(t, s, sizeof(*t));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2097)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2098) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2099) * If we are overriding a previous value derived from the real
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2100) * PVR with a new value obtained using a logical PVR value,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2101) * don't modify the performance monitor fields.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2102) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2103) if (old.num_pmcs && !s->num_pmcs) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2104) t->num_pmcs = old.num_pmcs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2105) t->pmc_type = old.pmc_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2106) t->oprofile_type = old.oprofile_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2107) t->oprofile_mmcra_sihv = old.oprofile_mmcra_sihv;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2108) t->oprofile_mmcra_sipr = old.oprofile_mmcra_sipr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2109) t->oprofile_mmcra_clear = old.oprofile_mmcra_clear;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2110)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2111) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2112) * If we have passed through this logic once before and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2113) * have pulled the default case because the real PVR was
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2114) * not found inside cpu_specs[], then we are possibly
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2115) * running in compatibility mode. In that case, let the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2116) * oprofiler know which set of compatibility counters to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2117) * pull from by making sure the oprofile_cpu_type string
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2118) * is set to that of compatibility mode. If the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2119) * oprofile_cpu_type already has a value, then we are
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2120) * possibly overriding a real PVR with a logical one,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2121) * and, in that case, keep the current value for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2122) * oprofile_cpu_type. Futhermore, let's ensure that the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2123) * fix for the PMAO bug is enabled on compatibility mode.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2124) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2125) if (old.oprofile_cpu_type != NULL) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2126) t->oprofile_cpu_type = old.oprofile_cpu_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2127) t->cpu_features |= old.cpu_features & CPU_FTR_PMAO_BUG;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2128) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2129) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2130)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2131) *PTRRELOC(&cur_cpu_spec) = &the_cpu_spec;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2132)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2133) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2134) * Set the base platform string once; assumes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2135) * we're called with real pvr first.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2136) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2137) if (*PTRRELOC(&powerpc_base_platform) == NULL)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2138) *PTRRELOC(&powerpc_base_platform) = t->platform;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2139)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2140) #if defined(CONFIG_PPC64) || defined(CONFIG_BOOKE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2141) /* ppc64 and booke expect identify_cpu to also call setup_cpu for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2142) * that processor. I will consolidate that at a later time, for now,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2143) * just use #ifdef. We also don't need to PTRRELOC the function
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2144) * pointer on ppc64 and booke as we are running at 0 in real mode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2145) * on ppc64 and reloc_offset is always 0 on booke.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2146) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2147) if (t->cpu_setup) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2148) t->cpu_setup(offset, t);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2149) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2150) #endif /* CONFIG_PPC64 || CONFIG_BOOKE */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2151)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2152) return t;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2153) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2154)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2155) struct cpu_spec * __init identify_cpu(unsigned long offset, unsigned int pvr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2156) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2157) struct cpu_spec *s = cpu_specs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2158) int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2159)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2160) s = PTRRELOC(s);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2161)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2162) for (i = 0; i < ARRAY_SIZE(cpu_specs); i++,s++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2163) if ((pvr & s->pvr_mask) == s->pvr_value)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2164) return setup_cpu_spec(offset, s);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2165) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2166)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2167) BUG();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2168)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2169) return NULL;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2170) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2171)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2172) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2173) * Used by cpufeatures to get the name for CPUs with a PVR table.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2174) * If they don't hae a PVR table, cpufeatures gets the name from
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2175) * cpu device-tree node.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2176) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2177) void __init identify_cpu_name(unsigned int pvr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2178) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2179) struct cpu_spec *s = cpu_specs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2180) struct cpu_spec *t = &the_cpu_spec;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2181) int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2182)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2183) s = PTRRELOC(s);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2184) t = PTRRELOC(t);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2185)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2186) for (i = 0; i < ARRAY_SIZE(cpu_specs); i++,s++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2187) if ((pvr & s->pvr_mask) == s->pvr_value) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2188) t->cpu_name = s->cpu_name;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2189) return;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2190) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2191) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2192) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2193)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2194)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2195) #ifdef CONFIG_JUMP_LABEL_FEATURE_CHECKS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2196) struct static_key_true cpu_feature_keys[NUM_CPU_FTR_KEYS] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2197) [0 ... NUM_CPU_FTR_KEYS - 1] = STATIC_KEY_TRUE_INIT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2198) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2199) EXPORT_SYMBOL_GPL(cpu_feature_keys);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2200)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2201) void __init cpu_feature_keys_init(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2202) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2203) int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2204)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2205) for (i = 0; i < NUM_CPU_FTR_KEYS; i++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2206) unsigned long f = 1ul << i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2207)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2208) if (!(cur_cpu_spec->cpu_features & f))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2209) static_branch_disable(&cpu_feature_keys[i]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2210) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2211) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2212)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2213) struct static_key_true mmu_feature_keys[NUM_MMU_FTR_KEYS] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2214) [0 ... NUM_MMU_FTR_KEYS - 1] = STATIC_KEY_TRUE_INIT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2215) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2216) EXPORT_SYMBOL_GPL(mmu_feature_keys);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2217)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2218) void __init mmu_feature_keys_init(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2219) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2220) int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2221)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2222) for (i = 0; i < NUM_MMU_FTR_KEYS; i++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2223) unsigned long f = 1ul << i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2224)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2225) if (!(cur_cpu_spec->mmu_features & f))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2226) static_branch_disable(&mmu_feature_keys[i]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2227) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2228) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2229) #endif