1 /* SPDX-License-Identifier: GPL-2.0-or-later */ 2 /* 3 * Copyright (C) 2001 Ben. Herrenschmidt (benh@kernel.crashing.org) 4 */ 5 6 #define COMMON_USER_BOOKE (PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU | \ 7 PPC_FEATURE_BOOKE) 8 9 static struct cpu_spec cpu_specs[] __initdata = { 10 { 11 .pvr_mask = 0xf0000fff, 12 .pvr_value = 0x40000850, 13 .cpu_name = "440GR Rev. A", 14 .cpu_features = CPU_FTRS_44X, 15 .cpu_user_features = COMMON_USER_BOOKE, 16 .mmu_features = MMU_FTR_TYPE_44x, 17 .icache_bsize = 32, 18 .dcache_bsize = 32, 19 .machine_check = machine_check_4xx, 20 .platform = "ppc440", 21 }, 22 { /* Use logical PVR for 440EP (logical pvr = pvr | 0x8) */ 23 .pvr_mask = 0xf0000fff, 24 .pvr_value = 0x40000858, 25 .cpu_name = "440EP Rev. A", 26 .cpu_features = CPU_FTRS_44X, 27 .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU, 28 .mmu_features = MMU_FTR_TYPE_44x, 29 .icache_bsize = 32, 30 .dcache_bsize = 32, 31 .cpu_setup = __setup_cpu_440ep, 32 .machine_check = machine_check_4xx, 33 .platform = "ppc440", 34 }, 35 { 36 .pvr_mask = 0xf0000fff, 37 .pvr_value = 0x400008d3, 38 .cpu_name = "440GR Rev. B", 39 .cpu_features = CPU_FTRS_44X, 40 .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU, 41 .mmu_features = MMU_FTR_TYPE_44x, 42 .icache_bsize = 32, 43 .dcache_bsize = 32, 44 .machine_check = machine_check_4xx, 45 .platform = "ppc440", 46 }, 47 { /* Matches both physical and logical PVR for 440EP (logical pvr = pvr | 0x8) */ 48 .pvr_mask = 0xf0000ff7, 49 .pvr_value = 0x400008d4, 50 .cpu_name = "440EP Rev. C", 51 .cpu_features = CPU_FTRS_44X, 52 .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU, 53 .mmu_features = MMU_FTR_TYPE_44x, 54 .icache_bsize = 32, 55 .dcache_bsize = 32, 56 .cpu_setup = __setup_cpu_440ep, 57 .machine_check = machine_check_4xx, 58 .platform = "ppc440", 59 }, 60 { /* Use logical PVR for 440EP (logical pvr = pvr | 0x8) */ 61 .pvr_mask = 0xf0000fff, 62 .pvr_value = 0x400008db, 63 .cpu_name = "440EP Rev. B", 64 .cpu_features = CPU_FTRS_44X, 65 .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU, 66 .mmu_features = MMU_FTR_TYPE_44x, 67 .icache_bsize = 32, 68 .dcache_bsize = 32, 69 .cpu_setup = __setup_cpu_440ep, 70 .machine_check = machine_check_4xx, 71 .platform = "ppc440", 72 }, 73 { /* 440GRX */ 74 .pvr_mask = 0xf0000ffb, 75 .pvr_value = 0x200008D0, 76 .cpu_name = "440GRX", 77 .cpu_features = CPU_FTRS_44X, 78 .cpu_user_features = COMMON_USER_BOOKE, 79 .mmu_features = MMU_FTR_TYPE_44x, 80 .icache_bsize = 32, 81 .dcache_bsize = 32, 82 .cpu_setup = __setup_cpu_440grx, 83 .machine_check = machine_check_440A, 84 .platform = "ppc440", 85 }, 86 { /* Use logical PVR for 440EPx (logical pvr = pvr | 0x8) */ 87 .pvr_mask = 0xf0000ffb, 88 .pvr_value = 0x200008D8, 89 .cpu_name = "440EPX", 90 .cpu_features = CPU_FTRS_44X, 91 .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU, 92 .mmu_features = MMU_FTR_TYPE_44x, 93 .icache_bsize = 32, 94 .dcache_bsize = 32, 95 .cpu_setup = __setup_cpu_440epx, 96 .machine_check = machine_check_440A, 97 .platform = "ppc440", 98 }, 99 { /* 440GP Rev. B */ 100 .pvr_mask = 0xf0000fff, 101 .pvr_value = 0x40000440, 102 .cpu_name = "440GP Rev. B", 103 .cpu_features = CPU_FTRS_44X, 104 .cpu_user_features = COMMON_USER_BOOKE, 105 .mmu_features = MMU_FTR_TYPE_44x, 106 .icache_bsize = 32, 107 .dcache_bsize = 32, 108 .machine_check = machine_check_4xx, 109 .platform = "ppc440gp", 110 }, 111 { /* 440GP Rev. C */ 112 .pvr_mask = 0xf0000fff, 113 .pvr_value = 0x40000481, 114 .cpu_name = "440GP Rev. C", 115 .cpu_features = CPU_FTRS_44X, 116 .cpu_user_features = COMMON_USER_BOOKE, 117 .mmu_features = MMU_FTR_TYPE_44x, 118 .icache_bsize = 32, 119 .dcache_bsize = 32, 120 .machine_check = machine_check_4xx, 121 .platform = "ppc440gp", 122 }, 123 { /* 440GX Rev. A */ 124 .pvr_mask = 0xf0000fff, 125 .pvr_value = 0x50000850, 126 .cpu_name = "440GX Rev. A", 127 .cpu_features = CPU_FTRS_44X, 128 .cpu_user_features = COMMON_USER_BOOKE, 129 .mmu_features = MMU_FTR_TYPE_44x, 130 .icache_bsize = 32, 131 .dcache_bsize = 32, 132 .cpu_setup = __setup_cpu_440gx, 133 .machine_check = machine_check_440A, 134 .platform = "ppc440", 135 }, 136 { /* 440GX Rev. B */ 137 .pvr_mask = 0xf0000fff, 138 .pvr_value = 0x50000851, 139 .cpu_name = "440GX Rev. B", 140 .cpu_features = CPU_FTRS_44X, 141 .cpu_user_features = COMMON_USER_BOOKE, 142 .mmu_features = MMU_FTR_TYPE_44x, 143 .icache_bsize = 32, 144 .dcache_bsize = 32, 145 .cpu_setup = __setup_cpu_440gx, 146 .machine_check = machine_check_440A, 147 .platform = "ppc440", 148 }, 149 { /* 440GX Rev. C */ 150 .pvr_mask = 0xf0000fff, 151 .pvr_value = 0x50000892, 152 .cpu_name = "440GX Rev. C", 153 .cpu_features = CPU_FTRS_44X, 154 .cpu_user_features = COMMON_USER_BOOKE, 155 .mmu_features = MMU_FTR_TYPE_44x, 156 .icache_bsize = 32, 157 .dcache_bsize = 32, 158 .cpu_setup = __setup_cpu_440gx, 159 .machine_check = machine_check_440A, 160 .platform = "ppc440", 161 }, 162 { /* 440GX Rev. F */ 163 .pvr_mask = 0xf0000fff, 164 .pvr_value = 0x50000894, 165 .cpu_name = "440GX Rev. F", 166 .cpu_features = CPU_FTRS_44X, 167 .cpu_user_features = COMMON_USER_BOOKE, 168 .mmu_features = MMU_FTR_TYPE_44x, 169 .icache_bsize = 32, 170 .dcache_bsize = 32, 171 .cpu_setup = __setup_cpu_440gx, 172 .machine_check = machine_check_440A, 173 .platform = "ppc440", 174 }, 175 { /* 440SP Rev. A */ 176 .pvr_mask = 0xfff00fff, 177 .pvr_value = 0x53200891, 178 .cpu_name = "440SP Rev. A", 179 .cpu_features = CPU_FTRS_44X, 180 .cpu_user_features = COMMON_USER_BOOKE, 181 .mmu_features = MMU_FTR_TYPE_44x, 182 .icache_bsize = 32, 183 .dcache_bsize = 32, 184 .machine_check = machine_check_4xx, 185 .platform = "ppc440", 186 }, 187 { /* 440SPe Rev. A */ 188 .pvr_mask = 0xfff00fff, 189 .pvr_value = 0x53400890, 190 .cpu_name = "440SPe Rev. A", 191 .cpu_features = CPU_FTRS_44X, 192 .cpu_user_features = COMMON_USER_BOOKE, 193 .mmu_features = MMU_FTR_TYPE_44x, 194 .icache_bsize = 32, 195 .dcache_bsize = 32, 196 .cpu_setup = __setup_cpu_440spe, 197 .machine_check = machine_check_440A, 198 .platform = "ppc440", 199 }, 200 { /* 440SPe Rev. B */ 201 .pvr_mask = 0xfff00fff, 202 .pvr_value = 0x53400891, 203 .cpu_name = "440SPe Rev. B", 204 .cpu_features = CPU_FTRS_44X, 205 .cpu_user_features = COMMON_USER_BOOKE, 206 .mmu_features = MMU_FTR_TYPE_44x, 207 .icache_bsize = 32, 208 .dcache_bsize = 32, 209 .cpu_setup = __setup_cpu_440spe, 210 .machine_check = machine_check_440A, 211 .platform = "ppc440", 212 }, 213 { /* 460EX */ 214 .pvr_mask = 0xffff0006, 215 .pvr_value = 0x13020002, 216 .cpu_name = "460EX", 217 .cpu_features = CPU_FTRS_440x6, 218 .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU, 219 .mmu_features = MMU_FTR_TYPE_44x, 220 .icache_bsize = 32, 221 .dcache_bsize = 32, 222 .cpu_setup = __setup_cpu_460ex, 223 .machine_check = machine_check_440A, 224 .platform = "ppc440", 225 }, 226 { /* 460EX Rev B */ 227 .pvr_mask = 0xffff0007, 228 .pvr_value = 0x13020004, 229 .cpu_name = "460EX Rev. B", 230 .cpu_features = CPU_FTRS_440x6, 231 .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU, 232 .mmu_features = MMU_FTR_TYPE_44x, 233 .icache_bsize = 32, 234 .dcache_bsize = 32, 235 .cpu_setup = __setup_cpu_460ex, 236 .machine_check = machine_check_440A, 237 .platform = "ppc440", 238 }, 239 { /* 460GT */ 240 .pvr_mask = 0xffff0006, 241 .pvr_value = 0x13020000, 242 .cpu_name = "460GT", 243 .cpu_features = CPU_FTRS_440x6, 244 .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU, 245 .mmu_features = MMU_FTR_TYPE_44x, 246 .icache_bsize = 32, 247 .dcache_bsize = 32, 248 .cpu_setup = __setup_cpu_460gt, 249 .machine_check = machine_check_440A, 250 .platform = "ppc440", 251 }, 252 { /* 460GT Rev B */ 253 .pvr_mask = 0xffff0007, 254 .pvr_value = 0x13020005, 255 .cpu_name = "460GT Rev. B", 256 .cpu_features = CPU_FTRS_440x6, 257 .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU, 258 .mmu_features = MMU_FTR_TYPE_44x, 259 .icache_bsize = 32, 260 .dcache_bsize = 32, 261 .cpu_setup = __setup_cpu_460gt, 262 .machine_check = machine_check_440A, 263 .platform = "ppc440", 264 }, 265 { /* 460SX */ 266 .pvr_mask = 0xffffff00, 267 .pvr_value = 0x13541800, 268 .cpu_name = "460SX", 269 .cpu_features = CPU_FTRS_44X, 270 .cpu_user_features = COMMON_USER_BOOKE, 271 .mmu_features = MMU_FTR_TYPE_44x, 272 .icache_bsize = 32, 273 .dcache_bsize = 32, 274 .cpu_setup = __setup_cpu_460sx, 275 .machine_check = machine_check_440A, 276 .platform = "ppc440", 277 }, 278 { /* 464 in APM821xx */ 279 .pvr_mask = 0xfffffff0, 280 .pvr_value = 0x12C41C80, 281 .cpu_name = "APM821XX", 282 .cpu_features = CPU_FTRS_44X, 283 .cpu_user_features = COMMON_USER_BOOKE | 284 PPC_FEATURE_HAS_FPU, 285 .mmu_features = MMU_FTR_TYPE_44x, 286 .icache_bsize = 32, 287 .dcache_bsize = 32, 288 .cpu_setup = __setup_cpu_apm821xx, 289 .machine_check = machine_check_440A, 290 .platform = "ppc440", 291 }, 292 { /* default match */ 293 .pvr_mask = 0x00000000, 294 .pvr_value = 0x00000000, 295 .cpu_name = "(generic 44x PPC)", 296 .cpu_features = CPU_FTRS_44X, 297 .cpu_user_features = COMMON_USER_BOOKE, 298 .mmu_features = MMU_FTR_TYPE_44x, 299 .icache_bsize = 32, 300 .dcache_bsize = 32, 301 .machine_check = machine_check_4xx, 302 .platform = "ppc440", 303 } 304 }; 305