Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

powerpc/mm: Introduce MMU features

We're soon running out of CPU features and I need to add some new
ones for various MMU related bits, so this patch separates the MMU
features from the CPU features. I moved over the 32-bit MMU related
ones, added base features for MMU type families, but didn't move
over any 64-bit only feature yet.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Acked-by: Kumar Gala <galak@kernel.crashing.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>

authored by

Benjamin Herrenschmidt and committed by
Paul Mackerras
7c03d653 2ca8cf73

+268 -60
+37 -48
arch/powerpc/include/asm/cputable.h
··· 82 82 char *cpu_name; 83 83 unsigned long cpu_features; /* Kernel features */ 84 84 unsigned int cpu_user_features; /* Userland features */ 85 + unsigned int mmu_features; /* MMU features */ 85 86 86 87 /* cache line sizes */ 87 88 unsigned int icache_bsize; ··· 145 144 #define CPU_FTR_USE_TB ASM_CONST(0x0000000000000040) 146 145 #define CPU_FTR_L2CSR ASM_CONST(0x0000000000000080) 147 146 #define CPU_FTR_601 ASM_CONST(0x0000000000000100) 148 - #define CPU_FTR_HPTE_TABLE ASM_CONST(0x0000000000000200) 149 147 #define CPU_FTR_CAN_NAP ASM_CONST(0x0000000000000400) 150 148 #define CPU_FTR_L3CR ASM_CONST(0x0000000000000800) 151 149 #define CPU_FTR_L3_DISABLE_NAP ASM_CONST(0x0000000000001000) 152 150 #define CPU_FTR_NAP_DISABLE_L2_PR ASM_CONST(0x0000000000002000) 153 151 #define CPU_FTR_DUAL_PLL_750FX ASM_CONST(0x0000000000004000) 154 152 #define CPU_FTR_NO_DPM ASM_CONST(0x0000000000008000) 155 - #define CPU_FTR_HAS_HIGH_BATS ASM_CONST(0x0000000000010000) 156 153 #define CPU_FTR_NEED_COHERENT ASM_CONST(0x0000000000020000) 157 154 #define CPU_FTR_NO_BTIC ASM_CONST(0x0000000000040000) 158 - #define CPU_FTR_BIG_PHYS ASM_CONST(0x0000000000080000) 159 155 #define CPU_FTR_NODSISRALIGN ASM_CONST(0x0000000000100000) 160 156 #define CPU_FTR_PPC_LE ASM_CONST(0x0000000000200000) 161 157 #define CPU_FTR_REAL_LE ASM_CONST(0x0000000000400000) ··· 264 266 !defined(CONFIG_POWER3) && !defined(CONFIG_POWER4) && \ 265 267 !defined(CONFIG_BOOKE)) 266 268 267 - #define CPU_FTRS_PPC601 (CPU_FTR_COMMON | CPU_FTR_601 | CPU_FTR_HPTE_TABLE | \ 269 + #define CPU_FTRS_PPC601 (CPU_FTR_COMMON | CPU_FTR_601 | \ 268 270 CPU_FTR_COHERENT_ICACHE | CPU_FTR_UNIFIED_ID_CACHE) 269 271 #define CPU_FTRS_603 (CPU_FTR_COMMON | \ 270 272 CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB | \ 271 273 CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_PPC_LE) 272 274 #define CPU_FTRS_604 (CPU_FTR_COMMON | \ 273 - CPU_FTR_USE_TB | CPU_FTR_HPTE_TABLE | CPU_FTR_PPC_LE) 275 + CPU_FTR_USE_TB | CPU_FTR_PPC_LE) 274 276 #define CPU_FTRS_740_NOTAU (CPU_FTR_COMMON | \ 275 277 CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB | CPU_FTR_L2CR | \ 276 - CPU_FTR_HPTE_TABLE | CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_PPC_LE) 278 + CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_PPC_LE) 277 279 #define CPU_FTRS_740 (CPU_FTR_COMMON | \ 278 280 CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB | CPU_FTR_L2CR | \ 279 - CPU_FTR_TAU | CPU_FTR_HPTE_TABLE | CPU_FTR_MAYBE_CAN_NAP | \ 281 + CPU_FTR_TAU | CPU_FTR_MAYBE_CAN_NAP | \ 280 282 CPU_FTR_PPC_LE) 281 283 #define CPU_FTRS_750 (CPU_FTR_COMMON | \ 282 284 CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB | CPU_FTR_L2CR | \ 283 - CPU_FTR_TAU | CPU_FTR_HPTE_TABLE | CPU_FTR_MAYBE_CAN_NAP | \ 285 + CPU_FTR_TAU | CPU_FTR_MAYBE_CAN_NAP | \ 284 286 CPU_FTR_PPC_LE) 285 - #define CPU_FTRS_750CL (CPU_FTRS_750 | CPU_FTR_HAS_HIGH_BATS) 287 + #define CPU_FTRS_750CL (CPU_FTRS_750) 286 288 #define CPU_FTRS_750FX1 (CPU_FTRS_750 | CPU_FTR_DUAL_PLL_750FX | CPU_FTR_NO_DPM) 287 289 #define CPU_FTRS_750FX2 (CPU_FTRS_750 | CPU_FTR_NO_DPM) 288 - #define CPU_FTRS_750FX (CPU_FTRS_750 | CPU_FTR_DUAL_PLL_750FX | \ 289 - CPU_FTR_HAS_HIGH_BATS) 290 + #define CPU_FTRS_750FX (CPU_FTRS_750 | CPU_FTR_DUAL_PLL_750FX) 290 291 #define CPU_FTRS_750GX (CPU_FTRS_750FX) 291 292 #define CPU_FTRS_7400_NOTAU (CPU_FTR_COMMON | \ 292 293 CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB | CPU_FTR_L2CR | \ 293 - CPU_FTR_ALTIVEC_COMP | CPU_FTR_HPTE_TABLE | \ 294 + CPU_FTR_ALTIVEC_COMP | \ 294 295 CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_PPC_LE) 295 296 #define CPU_FTRS_7400 (CPU_FTR_COMMON | \ 296 297 CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB | CPU_FTR_L2CR | \ 297 - CPU_FTR_TAU | CPU_FTR_ALTIVEC_COMP | CPU_FTR_HPTE_TABLE | \ 298 + CPU_FTR_TAU | CPU_FTR_ALTIVEC_COMP | \ 298 299 CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_PPC_LE) 299 300 #define CPU_FTRS_7450_20 (CPU_FTR_COMMON | \ 300 301 CPU_FTR_USE_TB | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP | \ 301 - CPU_FTR_L3CR | CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 | \ 302 + CPU_FTR_L3CR | CPU_FTR_SPEC7450 | \ 302 303 CPU_FTR_NEED_COHERENT | CPU_FTR_PPC_LE | CPU_FTR_NEED_PAIRED_STWCX) 303 304 #define CPU_FTRS_7450_21 (CPU_FTR_COMMON | \ 304 305 CPU_FTR_USE_TB | \ 305 306 CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP | \ 306 - CPU_FTR_L3CR | CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 | \ 307 + CPU_FTR_L3CR | CPU_FTR_SPEC7450 | \ 307 308 CPU_FTR_NAP_DISABLE_L2_PR | CPU_FTR_L3_DISABLE_NAP | \ 308 309 CPU_FTR_NEED_COHERENT | CPU_FTR_PPC_LE | CPU_FTR_NEED_PAIRED_STWCX) 309 310 #define CPU_FTRS_7450_23 (CPU_FTR_COMMON | \ 310 311 CPU_FTR_USE_TB | CPU_FTR_NEED_PAIRED_STWCX | \ 311 312 CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP | \ 312 - CPU_FTR_L3CR | CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 | \ 313 + CPU_FTR_L3CR | CPU_FTR_SPEC7450 | \ 313 314 CPU_FTR_NAP_DISABLE_L2_PR | CPU_FTR_NEED_COHERENT | CPU_FTR_PPC_LE) 314 315 #define CPU_FTRS_7455_1 (CPU_FTR_COMMON | \ 315 316 CPU_FTR_USE_TB | CPU_FTR_NEED_PAIRED_STWCX | \ 316 317 CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP | CPU_FTR_L3CR | \ 317 - CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 | CPU_FTR_HAS_HIGH_BATS | \ 318 - CPU_FTR_NEED_COHERENT | CPU_FTR_PPC_LE) 318 + CPU_FTR_SPEC7450 | CPU_FTR_NEED_COHERENT | CPU_FTR_PPC_LE) 319 319 #define CPU_FTRS_7455_20 (CPU_FTR_COMMON | \ 320 320 CPU_FTR_USE_TB | CPU_FTR_NEED_PAIRED_STWCX | \ 321 321 CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP | \ 322 - CPU_FTR_L3CR | CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 | \ 322 + CPU_FTR_L3CR | CPU_FTR_SPEC7450 | \ 323 323 CPU_FTR_NAP_DISABLE_L2_PR | CPU_FTR_L3_DISABLE_NAP | \ 324 - CPU_FTR_NEED_COHERENT | CPU_FTR_HAS_HIGH_BATS | CPU_FTR_PPC_LE) 324 + CPU_FTR_NEED_COHERENT | CPU_FTR_PPC_LE) 325 325 #define CPU_FTRS_7455 (CPU_FTR_COMMON | \ 326 326 CPU_FTR_USE_TB | \ 327 327 CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP | \ 328 - CPU_FTR_L3CR | CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 | \ 329 - CPU_FTR_NAP_DISABLE_L2_PR | CPU_FTR_HAS_HIGH_BATS | \ 328 + CPU_FTR_L3CR | CPU_FTR_SPEC7450 | CPU_FTR_NAP_DISABLE_L2_PR | \ 330 329 CPU_FTR_NEED_COHERENT | CPU_FTR_PPC_LE | CPU_FTR_NEED_PAIRED_STWCX) 331 330 #define CPU_FTRS_7447_10 (CPU_FTR_COMMON | \ 332 331 CPU_FTR_USE_TB | \ 333 332 CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP | \ 334 - CPU_FTR_L3CR | CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 | \ 335 - CPU_FTR_NAP_DISABLE_L2_PR | CPU_FTR_HAS_HIGH_BATS | \ 333 + CPU_FTR_L3CR | CPU_FTR_SPEC7450 | CPU_FTR_NAP_DISABLE_L2_PR | \ 336 334 CPU_FTR_NEED_COHERENT | CPU_FTR_NO_BTIC | CPU_FTR_PPC_LE | \ 337 335 CPU_FTR_NEED_PAIRED_STWCX) 338 336 #define CPU_FTRS_7447 (CPU_FTR_COMMON | \ 339 337 CPU_FTR_USE_TB | \ 340 338 CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP | \ 341 - CPU_FTR_L3CR | CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 | \ 342 - CPU_FTR_NAP_DISABLE_L2_PR | CPU_FTR_HAS_HIGH_BATS | \ 339 + CPU_FTR_L3CR | CPU_FTR_SPEC7450 | CPU_FTR_NAP_DISABLE_L2_PR | \ 343 340 CPU_FTR_NEED_COHERENT | CPU_FTR_PPC_LE | CPU_FTR_NEED_PAIRED_STWCX) 344 341 #define CPU_FTRS_7447A (CPU_FTR_COMMON | \ 345 342 CPU_FTR_USE_TB | \ 346 343 CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP | \ 347 - CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 | \ 348 - CPU_FTR_NAP_DISABLE_L2_PR | CPU_FTR_HAS_HIGH_BATS | \ 344 + CPU_FTR_SPEC7450 | CPU_FTR_NAP_DISABLE_L2_PR | \ 349 345 CPU_FTR_NEED_COHERENT | CPU_FTR_PPC_LE | CPU_FTR_NEED_PAIRED_STWCX) 350 346 #define CPU_FTRS_7448 (CPU_FTR_COMMON | \ 351 347 CPU_FTR_USE_TB | \ 352 348 CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP | \ 353 - CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 | \ 354 - CPU_FTR_NAP_DISABLE_L2_PR | CPU_FTR_HAS_HIGH_BATS | \ 349 + CPU_FTR_SPEC7450 | CPU_FTR_NAP_DISABLE_L2_PR | \ 355 350 CPU_FTR_PPC_LE | CPU_FTR_NEED_PAIRED_STWCX) 356 351 #define CPU_FTRS_82XX (CPU_FTR_COMMON | \ 357 352 CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB) 358 353 #define CPU_FTRS_G2_LE (CPU_FTR_COMMON | CPU_FTR_MAYBE_CAN_DOZE | \ 359 - CPU_FTR_USE_TB | CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_HAS_HIGH_BATS) 354 + CPU_FTR_USE_TB | CPU_FTR_MAYBE_CAN_NAP) 360 355 #define CPU_FTRS_E300 (CPU_FTR_MAYBE_CAN_DOZE | \ 361 - CPU_FTR_USE_TB | CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_HAS_HIGH_BATS | \ 356 + CPU_FTR_USE_TB | CPU_FTR_MAYBE_CAN_NAP | \ 362 357 CPU_FTR_COMMON) 363 358 #define CPU_FTRS_E300C2 (CPU_FTR_MAYBE_CAN_DOZE | \ 364 - CPU_FTR_USE_TB | CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_HAS_HIGH_BATS | \ 359 + CPU_FTR_USE_TB | CPU_FTR_MAYBE_CAN_NAP | \ 365 360 CPU_FTR_COMMON | CPU_FTR_FPU_UNAVAILABLE) 366 - #define CPU_FTRS_CLASSIC32 (CPU_FTR_COMMON | \ 367 - CPU_FTR_USE_TB | CPU_FTR_HPTE_TABLE) 361 + #define CPU_FTRS_CLASSIC32 (CPU_FTR_COMMON | CPU_FTR_USE_TB) 368 362 #define CPU_FTRS_8XX (CPU_FTR_USE_TB) 369 363 #define CPU_FTRS_40X (CPU_FTR_USE_TB | CPU_FTR_NODSISRALIGN | CPU_FTR_NOEXECUTE) 370 364 #define CPU_FTRS_44X (CPU_FTR_USE_TB | CPU_FTR_NODSISRALIGN | CPU_FTR_NOEXECUTE) ··· 369 379 CPU_FTR_SPE_COMP | CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_NODSISRALIGN | \ 370 380 CPU_FTR_NOEXECUTE) 371 381 #define CPU_FTRS_E500_2 (CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB | \ 372 - CPU_FTR_SPE_COMP | CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_BIG_PHYS | \ 382 + CPU_FTR_SPE_COMP | CPU_FTR_MAYBE_CAN_NAP | \ 373 383 CPU_FTR_NODSISRALIGN | CPU_FTR_NOEXECUTE) 374 384 #define CPU_FTRS_E500MC (CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB | \ 375 - CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_BIG_PHYS | CPU_FTR_NODSISRALIGN | \ 385 + CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_NODSISRALIGN | \ 376 386 CPU_FTR_L2CSR | CPU_FTR_LWSYNC | CPU_FTR_NOEXECUTE) 377 387 #define CPU_FTRS_GENERIC_32 (CPU_FTR_COMMON | CPU_FTR_NODSISRALIGN) 378 388 379 389 /* 64-bit CPUs */ 380 390 #define CPU_FTRS_POWER3 (CPU_FTR_USE_TB | CPU_FTR_LWSYNC | \ 381 - CPU_FTR_HPTE_TABLE | CPU_FTR_IABR | CPU_FTR_PPC_LE) 391 + CPU_FTR_IABR | CPU_FTR_PPC_LE) 382 392 #define CPU_FTRS_RS64 (CPU_FTR_USE_TB | CPU_FTR_LWSYNC | \ 383 - CPU_FTR_HPTE_TABLE | CPU_FTR_IABR | \ 393 + CPU_FTR_IABR | \ 384 394 CPU_FTR_MMCRA | CPU_FTR_CTRL) 385 395 #define CPU_FTRS_POWER4 (CPU_FTR_USE_TB | CPU_FTR_LWSYNC | \ 386 - CPU_FTR_HPTE_TABLE | CPU_FTR_PPCAS_ARCH_V2 | CPU_FTR_CTRL | \ 396 + CPU_FTR_PPCAS_ARCH_V2 | CPU_FTR_CTRL | \ 387 397 CPU_FTR_MMCRA | CPU_FTR_CP_USE_DCBTZ) 388 398 #define CPU_FTRS_PPC970 (CPU_FTR_USE_TB | CPU_FTR_LWSYNC | \ 389 - CPU_FTR_HPTE_TABLE | CPU_FTR_PPCAS_ARCH_V2 | CPU_FTR_CTRL | \ 399 + CPU_FTR_PPCAS_ARCH_V2 | CPU_FTR_CTRL | \ 390 400 CPU_FTR_ALTIVEC_COMP | CPU_FTR_CAN_NAP | CPU_FTR_MMCRA | \ 391 401 CPU_FTR_CP_USE_DCBTZ) 392 402 #define CPU_FTRS_POWER5 (CPU_FTR_USE_TB | CPU_FTR_LWSYNC | \ 393 - CPU_FTR_HPTE_TABLE | CPU_FTR_PPCAS_ARCH_V2 | CPU_FTR_CTRL | \ 403 + CPU_FTR_PPCAS_ARCH_V2 | CPU_FTR_CTRL | \ 394 404 CPU_FTR_MMCRA | CPU_FTR_SMT | \ 395 405 CPU_FTR_COHERENT_ICACHE | CPU_FTR_LOCKLESS_TLBIE | \ 396 406 CPU_FTR_PURR) 397 407 #define CPU_FTRS_POWER6 (CPU_FTR_USE_TB | CPU_FTR_LWSYNC | \ 398 - CPU_FTR_HPTE_TABLE | CPU_FTR_PPCAS_ARCH_V2 | CPU_FTR_CTRL | \ 408 + CPU_FTR_PPCAS_ARCH_V2 | CPU_FTR_CTRL | \ 399 409 CPU_FTR_MMCRA | CPU_FTR_SMT | \ 400 410 CPU_FTR_COHERENT_ICACHE | CPU_FTR_LOCKLESS_TLBIE | \ 401 411 CPU_FTR_PURR | CPU_FTR_SPURR | CPU_FTR_REAL_LE | \ 402 412 CPU_FTR_DSCR | CPU_FTR_UNALIGNED_LD_STD) 403 413 #define CPU_FTRS_POWER7 (CPU_FTR_USE_TB | CPU_FTR_LWSYNC | \ 404 - CPU_FTR_HPTE_TABLE | CPU_FTR_PPCAS_ARCH_V2 | CPU_FTR_CTRL | \ 414 + CPU_FTR_PPCAS_ARCH_V2 | CPU_FTR_CTRL | \ 405 415 CPU_FTR_MMCRA | CPU_FTR_SMT | \ 406 416 CPU_FTR_COHERENT_ICACHE | CPU_FTR_LOCKLESS_TLBIE | \ 407 417 CPU_FTR_PURR | CPU_FTR_SPURR | CPU_FTR_REAL_LE | \ 408 418 CPU_FTR_DSCR | CPU_FTR_SAO) 409 419 #define CPU_FTRS_CELL (CPU_FTR_USE_TB | CPU_FTR_LWSYNC | \ 410 - CPU_FTR_HPTE_TABLE | CPU_FTR_PPCAS_ARCH_V2 | CPU_FTR_CTRL | \ 420 + CPU_FTR_PPCAS_ARCH_V2 | CPU_FTR_CTRL | \ 411 421 CPU_FTR_ALTIVEC_COMP | CPU_FTR_MMCRA | CPU_FTR_SMT | \ 412 422 CPU_FTR_PAUSE_ZERO | CPU_FTR_CI_LARGE_PAGE | \ 413 423 CPU_FTR_CELL_TB_BUG | CPU_FTR_CP_USE_DCBTZ | \ 414 424 CPU_FTR_UNALIGNED_LD_STD) 415 425 #define CPU_FTRS_PA6T (CPU_FTR_USE_TB | CPU_FTR_LWSYNC | \ 416 - CPU_FTR_HPTE_TABLE | CPU_FTR_PPCAS_ARCH_V2 | \ 426 + CPU_FTR_PPCAS_ARCH_V2 | \ 417 427 CPU_FTR_ALTIVEC_COMP | CPU_FTR_CI_LARGE_PAGE | \ 418 428 CPU_FTR_PURR | CPU_FTR_REAL_LE | CPU_FTR_NO_SLBIE_B) 419 - #define CPU_FTRS_COMPATIBLE (CPU_FTR_USE_TB | \ 420 - CPU_FTR_HPTE_TABLE | CPU_FTR_PPCAS_ARCH_V2) 429 + #define CPU_FTRS_COMPATIBLE (CPU_FTR_USE_TB | CPU_FTR_PPCAS_ARCH_V2) 421 430 422 431 #ifdef __powerpc64__ 423 432 #define CPU_FTRS_POSSIBLE \
+30
arch/powerpc/include/asm/feature-fixups.h
··· 81 81 #define ALT_FTR_SECTION_END_IFCLR(msk) \ 82 82 ALT_FTR_SECTION_END_NESTED_IFCLR(msk, 97) 83 83 84 + /* MMU feature dependent sections */ 85 + #define BEGIN_MMU_FTR_SECTION_NESTED(label) START_FTR_SECTION(label) 86 + #define BEGIN_MMU_FTR_SECTION START_FTR_SECTION(97) 87 + 88 + #define END_MMU_FTR_SECTION_NESTED(msk, val, label) \ 89 + FTR_SECTION_ELSE_NESTED(label) \ 90 + MAKE_FTR_SECTION_ENTRY(msk, val, label, __mmu_ftr_fixup) 91 + 92 + #define END_MMU_FTR_SECTION(msk, val) \ 93 + END_MMU_FTR_SECTION_NESTED(msk, val, 97) 94 + 95 + #define END_MMU_FTR_SECTION_IFSET(msk) END_MMU_FTR_SECTION((msk), (msk)) 96 + #define END_MMU_FTR_SECTION_IFCLR(msk) END_MMU_FTR_SECTION((msk), 0) 97 + 98 + /* MMU feature sections with alternatives, use BEGIN_FTR_SECTION to start */ 99 + #define MMU_FTR_SECTION_ELSE_NESTED(label) FTR_SECTION_ELSE_NESTED(label) 100 + #define MMU_FTR_SECTION_ELSE MMU_FTR_SECTION_ELSE_NESTED(97) 101 + #define ALT_MMU_FTR_SECTION_END_NESTED(msk, val, label) \ 102 + MAKE_FTR_SECTION_ENTRY(msk, val, label, __mmu_ftr_fixup) 103 + #define ALT_MMU_FTR_SECTION_END_NESTED_IFSET(msk, label) \ 104 + ALT_MMU_FTR_SECTION_END_NESTED(msk, msk, label) 105 + #define ALT_MMU_FTR_SECTION_END_NESTED_IFCLR(msk, label) \ 106 + ALT_MMU_FTR_SECTION_END_NESTED(msk, 0, label) 107 + #define ALT_MMU_FTR_SECTION_END(msk, val) \ 108 + ALT_MMU_FTR_SECTION_END_NESTED(msk, val, 97) 109 + #define ALT_MMU_FTR_SECTION_END_IFSET(msk) \ 110 + ALT_MMU_FTR_SECTION_END_NESTED_IFSET(msk, 97) 111 + #define ALT_MMU_FTR_SECTION_END_IFCLR(msk) \ 112 + ALT_MMU_FTR_SECTION_END_NESTED_IFCLR(msk, 97) 113 + 84 114 /* Firmware feature dependent sections */ 85 115 #define BEGIN_FW_FTR_SECTION_NESTED(label) START_FTR_SECTION(label) 86 116 #define BEGIN_FW_FTR_SECTION START_FTR_SECTION(97)
+41
arch/powerpc/include/asm/mmu.h
··· 2 2 #define _ASM_POWERPC_MMU_H_ 3 3 #ifdef __KERNEL__ 4 4 5 + #include <asm/asm-compat.h> 6 + #include <asm/feature-fixups.h> 7 + 8 + /* 9 + * MMU features bit definitions 10 + */ 11 + 12 + /* 13 + * First half is MMU families 14 + */ 15 + #define MMU_FTR_HPTE_TABLE ASM_CONST(0x00000001) 16 + #define MMU_FTR_TYPE_8xx ASM_CONST(0x00000002) 17 + #define MMU_FTR_TYPE_40x ASM_CONST(0x00000004) 18 + #define MMU_FTR_TYPE_44x ASM_CONST(0x00000008) 19 + #define MMU_FTR_TYPE_FSL_E ASM_CONST(0x00000010) 20 + 21 + /* 22 + * This is individual features 23 + */ 24 + 25 + /* Enable use of high BAT registers */ 26 + #define MMU_FTR_USE_HIGH_BATS ASM_CONST(0x00010000) 27 + 28 + /* Enable >32-bit physical addresses on 32-bit processor, only used 29 + * by CONFIG_6xx currently as BookE supports that from day 1 30 + */ 31 + #define MMU_FTR_BIG_PHYS ASM_CONST(0x00020000) 32 + 33 + #ifndef __ASSEMBLY__ 34 + #include <asm/cputable.h> 35 + 36 + static inline int mmu_has_feature(unsigned long feature) 37 + { 38 + return (cur_cpu_spec->mmu_features & feature); 39 + } 40 + 41 + extern unsigned int __start___mmu_ftr_fixup, __stop___mmu_ftr_fixup; 42 + 43 + #endif /* !__ASSEMBLY__ */ 44 + 45 + 5 46 #ifdef CONFIG_PPC64 6 47 /* 64-bit classic hash table MMU */ 7 48 # include <asm/mmu-hash64.h>
+113
arch/powerpc/kernel/cputable.c
··· 19 19 #include <asm/oprofile_impl.h> 20 20 #include <asm/cputable.h> 21 21 #include <asm/prom.h> /* for PTRRELOC on ARCH=ppc */ 22 + #include <asm/mmu.h> 22 23 23 24 struct cpu_spec* cur_cpu_spec = NULL; 24 25 EXPORT_SYMBOL(cur_cpu_spec); ··· 95 94 .cpu_name = "POWER3 (630)", 96 95 .cpu_features = CPU_FTRS_POWER3, 97 96 .cpu_user_features = COMMON_USER_PPC64|PPC_FEATURE_PPC_LE, 97 + .mmu_features = MMU_FTR_HPTE_TABLE, 98 98 .icache_bsize = 128, 99 99 .dcache_bsize = 128, 100 100 .num_pmcs = 8, ··· 111 109 .cpu_name = "POWER3 (630+)", 112 110 .cpu_features = CPU_FTRS_POWER3, 113 111 .cpu_user_features = COMMON_USER_PPC64|PPC_FEATURE_PPC_LE, 112 + .mmu_features = MMU_FTR_HPTE_TABLE, 114 113 .icache_bsize = 128, 115 114 .dcache_bsize = 128, 116 115 .num_pmcs = 8, ··· 127 124 .cpu_name = "RS64-II (northstar)", 128 125 .cpu_features = CPU_FTRS_RS64, 129 126 .cpu_user_features = COMMON_USER_PPC64, 127 + .mmu_features = MMU_FTR_HPTE_TABLE, 130 128 .icache_bsize = 128, 131 129 .dcache_bsize = 128, 132 130 .num_pmcs = 8, ··· 143 139 .cpu_name = "RS64-III (pulsar)", 144 140 .cpu_features = CPU_FTRS_RS64, 145 141 .cpu_user_features = COMMON_USER_PPC64, 142 + .mmu_features = MMU_FTR_HPTE_TABLE, 146 143 .icache_bsize = 128, 147 144 .dcache_bsize = 128, 148 145 .num_pmcs = 8, ··· 159 154 .cpu_name = "RS64-III (icestar)", 160 155 .cpu_features = CPU_FTRS_RS64, 161 156 .cpu_user_features = COMMON_USER_PPC64, 157 + .mmu_features = MMU_FTR_HPTE_TABLE, 162 158 .icache_bsize = 128, 163 159 .dcache_bsize = 128, 164 160 .num_pmcs = 8, ··· 175 169 .cpu_name = "RS64-IV (sstar)", 176 170 .cpu_features = CPU_FTRS_RS64, 177 171 .cpu_user_features = COMMON_USER_PPC64, 172 + .mmu_features = MMU_FTR_HPTE_TABLE, 178 173 .icache_bsize = 128, 179 174 .dcache_bsize = 128, 180 175 .num_pmcs = 8, ··· 191 184 .cpu_name = "POWER4 (gp)", 192 185 .cpu_features = CPU_FTRS_POWER4, 193 186 .cpu_user_features = COMMON_USER_POWER4, 187 + .mmu_features = MMU_FTR_HPTE_TABLE, 194 188 .icache_bsize = 128, 195 189 .dcache_bsize = 128, 196 190 .num_pmcs = 8, ··· 207 199 .cpu_name = "POWER4+ (gq)", 208 200 .cpu_features = CPU_FTRS_POWER4, 209 201 .cpu_user_features = COMMON_USER_POWER4, 202 + .mmu_features = MMU_FTR_HPTE_TABLE, 210 203 .icache_bsize = 128, 211 204 .dcache_bsize = 128, 212 205 .num_pmcs = 8, ··· 224 215 .cpu_features = CPU_FTRS_PPC970, 225 216 .cpu_user_features = COMMON_USER_POWER4 | 226 217 PPC_FEATURE_HAS_ALTIVEC_COMP, 218 + .mmu_features = MMU_FTR_HPTE_TABLE, 227 219 .icache_bsize = 128, 228 220 .dcache_bsize = 128, 229 221 .num_pmcs = 8, ··· 243 233 .cpu_features = CPU_FTRS_PPC970, 244 234 .cpu_user_features = COMMON_USER_POWER4 | 245 235 PPC_FEATURE_HAS_ALTIVEC_COMP, 236 + .mmu_features = MMU_FTR_HPTE_TABLE, 246 237 .icache_bsize = 128, 247 238 .dcache_bsize = 128, 248 239 .num_pmcs = 8, ··· 262 251 .cpu_features = CPU_FTRS_PPC970, 263 252 .cpu_user_features = COMMON_USER_POWER4 | 264 253 PPC_FEATURE_HAS_ALTIVEC_COMP, 254 + .mmu_features = MMU_FTR_HPTE_TABLE, 265 255 .icache_bsize = 128, 266 256 .dcache_bsize = 128, 267 257 .num_pmcs = 8, ··· 281 269 .cpu_features = CPU_FTRS_PPC970, 282 270 .cpu_user_features = COMMON_USER_POWER4 | 283 271 PPC_FEATURE_HAS_ALTIVEC_COMP, 272 + .mmu_features = MMU_FTR_HPTE_TABLE, 284 273 .icache_bsize = 128, 285 274 .dcache_bsize = 128, 286 275 .num_pmcs = 8, ··· 300 287 .cpu_features = CPU_FTRS_PPC970, 301 288 .cpu_user_features = COMMON_USER_POWER4 | 302 289 PPC_FEATURE_HAS_ALTIVEC_COMP, 290 + .mmu_features = MMU_FTR_HPTE_TABLE, 303 291 .icache_bsize = 128, 304 292 .dcache_bsize = 128, 305 293 .num_pmcs = 8, ··· 317 303 .cpu_name = "POWER5 (gr)", 318 304 .cpu_features = CPU_FTRS_POWER5, 319 305 .cpu_user_features = COMMON_USER_POWER5, 306 + .mmu_features = MMU_FTR_HPTE_TABLE, 320 307 .icache_bsize = 128, 321 308 .dcache_bsize = 128, 322 309 .num_pmcs = 6, ··· 338 323 .cpu_name = "POWER5+ (gs)", 339 324 .cpu_features = CPU_FTRS_POWER5, 340 325 .cpu_user_features = COMMON_USER_POWER5_PLUS, 326 + .mmu_features = MMU_FTR_HPTE_TABLE, 341 327 .icache_bsize = 128, 342 328 .dcache_bsize = 128, 343 329 .num_pmcs = 6, ··· 355 339 .cpu_name = "POWER5+ (gs)", 356 340 .cpu_features = CPU_FTRS_POWER5, 357 341 .cpu_user_features = COMMON_USER_POWER5_PLUS, 342 + .mmu_features = MMU_FTR_HPTE_TABLE, 358 343 .icache_bsize = 128, 359 344 .dcache_bsize = 128, 360 345 .num_pmcs = 6, ··· 373 356 .cpu_name = "POWER5+", 374 357 .cpu_features = CPU_FTRS_POWER5, 375 358 .cpu_user_features = COMMON_USER_POWER5_PLUS, 359 + .mmu_features = MMU_FTR_HPTE_TABLE, 376 360 .icache_bsize = 128, 377 361 .dcache_bsize = 128, 378 362 .machine_check = machine_check_generic, ··· 387 369 .cpu_features = CPU_FTRS_POWER6, 388 370 .cpu_user_features = COMMON_USER_POWER6 | 389 371 PPC_FEATURE_POWER6_EXT, 372 + .mmu_features = MMU_FTR_HPTE_TABLE, 390 373 .icache_bsize = 128, 391 374 .dcache_bsize = 128, 392 375 .num_pmcs = 6, ··· 407 388 .cpu_name = "POWER6 (architected)", 408 389 .cpu_features = CPU_FTRS_POWER6, 409 390 .cpu_user_features = COMMON_USER_POWER6, 391 + .mmu_features = MMU_FTR_HPTE_TABLE, 410 392 .icache_bsize = 128, 411 393 .dcache_bsize = 128, 412 394 .machine_check = machine_check_generic, ··· 420 400 .cpu_name = "POWER7 (architected)", 421 401 .cpu_features = CPU_FTRS_POWER7, 422 402 .cpu_user_features = COMMON_USER_POWER7, 403 + .mmu_features = MMU_FTR_HPTE_TABLE, 423 404 .icache_bsize = 128, 424 405 .dcache_bsize = 128, 425 406 .machine_check = machine_check_generic, ··· 433 412 .cpu_name = "POWER7 (raw)", 434 413 .cpu_features = CPU_FTRS_POWER7, 435 414 .cpu_user_features = COMMON_USER_POWER7, 415 + .mmu_features = MMU_FTR_HPTE_TABLE, 436 416 .icache_bsize = 128, 437 417 .dcache_bsize = 128, 438 418 .num_pmcs = 6, ··· 456 434 .cpu_user_features = COMMON_USER_PPC64 | 457 435 PPC_FEATURE_CELL | PPC_FEATURE_HAS_ALTIVEC_COMP | 458 436 PPC_FEATURE_SMT, 437 + .mmu_features = MMU_FTR_HPTE_TABLE, 459 438 .icache_bsize = 128, 460 439 .dcache_bsize = 128, 461 440 .num_pmcs = 4, ··· 472 449 .cpu_name = "PA6T", 473 450 .cpu_features = CPU_FTRS_PA6T, 474 451 .cpu_user_features = COMMON_USER_PA6T, 452 + .mmu_features = MMU_FTR_HPTE_TABLE, 475 453 .icache_bsize = 64, 476 454 .dcache_bsize = 64, 477 455 .num_pmcs = 6, ··· 490 466 .cpu_name = "POWER4 (compatible)", 491 467 .cpu_features = CPU_FTRS_COMPATIBLE, 492 468 .cpu_user_features = COMMON_USER_PPC64, 469 + .mmu_features = MMU_FTR_HPTE_TABLE, 493 470 .icache_bsize = 128, 494 471 .dcache_bsize = 128, 495 472 .num_pmcs = 6, ··· 508 483 .cpu_features = CPU_FTRS_PPC601, 509 484 .cpu_user_features = COMMON_USER | PPC_FEATURE_601_INSTR | 510 485 PPC_FEATURE_UNIFIED_CACHE | PPC_FEATURE_NO_TB, 486 + .mmu_features = MMU_FTR_HPTE_TABLE, 511 487 .icache_bsize = 32, 512 488 .dcache_bsize = 32, 513 489 .machine_check = machine_check_generic, ··· 520 494 .cpu_name = "603", 521 495 .cpu_features = CPU_FTRS_603, 522 496 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, 497 + .mmu_features = 0, 523 498 .icache_bsize = 32, 524 499 .dcache_bsize = 32, 525 500 .cpu_setup = __setup_cpu_603, ··· 533 506 .cpu_name = "603e", 534 507 .cpu_features = CPU_FTRS_603, 535 508 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, 509 + .mmu_features = 0, 536 510 .icache_bsize = 32, 537 511 .dcache_bsize = 32, 538 512 .cpu_setup = __setup_cpu_603, ··· 546 518 .cpu_name = "603ev", 547 519 .cpu_features = CPU_FTRS_603, 548 520 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, 521 + .mmu_features = 0, 549 522 .icache_bsize = 32, 550 523 .dcache_bsize = 32, 551 524 .cpu_setup = __setup_cpu_603, ··· 559 530 .cpu_name = "604", 560 531 .cpu_features = CPU_FTRS_604, 561 532 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, 533 + .mmu_features = MMU_FTR_HPTE_TABLE, 562 534 .icache_bsize = 32, 563 535 .dcache_bsize = 32, 564 536 .num_pmcs = 2, ··· 573 543 .cpu_name = "604e", 574 544 .cpu_features = CPU_FTRS_604, 575 545 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, 546 + .mmu_features = MMU_FTR_HPTE_TABLE, 576 547 .icache_bsize = 32, 577 548 .dcache_bsize = 32, 578 549 .num_pmcs = 4, ··· 587 556 .cpu_name = "604r", 588 557 .cpu_features = CPU_FTRS_604, 589 558 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, 559 + .mmu_features = MMU_FTR_HPTE_TABLE, 590 560 .icache_bsize = 32, 591 561 .dcache_bsize = 32, 592 562 .num_pmcs = 4, ··· 601 569 .cpu_name = "604ev", 602 570 .cpu_features = CPU_FTRS_604, 603 571 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, 572 + .mmu_features = MMU_FTR_HPTE_TABLE, 604 573 .icache_bsize = 32, 605 574 .dcache_bsize = 32, 606 575 .num_pmcs = 4, ··· 615 582 .cpu_name = "740/750", 616 583 .cpu_features = CPU_FTRS_740_NOTAU, 617 584 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, 585 + .mmu_features = MMU_FTR_HPTE_TABLE, 618 586 .icache_bsize = 32, 619 587 .dcache_bsize = 32, 620 588 .num_pmcs = 4, ··· 629 595 .cpu_name = "750CX", 630 596 .cpu_features = CPU_FTRS_750, 631 597 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, 598 + .mmu_features = MMU_FTR_HPTE_TABLE, 632 599 .icache_bsize = 32, 633 600 .dcache_bsize = 32, 634 601 .num_pmcs = 4, ··· 643 608 .cpu_name = "750CX", 644 609 .cpu_features = CPU_FTRS_750, 645 610 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, 611 + .mmu_features = MMU_FTR_HPTE_TABLE, 646 612 .icache_bsize = 32, 647 613 .dcache_bsize = 32, 648 614 .num_pmcs = 4, ··· 658 622 .cpu_name = "750CXe", 659 623 .cpu_features = CPU_FTRS_750, 660 624 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, 625 + .mmu_features = MMU_FTR_HPTE_TABLE, 661 626 .icache_bsize = 32, 662 627 .dcache_bsize = 32, 663 628 .num_pmcs = 4, ··· 673 636 .cpu_name = "750CXe", 674 637 .cpu_features = CPU_FTRS_750, 675 638 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, 639 + .mmu_features = MMU_FTR_HPTE_TABLE, 676 640 .icache_bsize = 32, 677 641 .dcache_bsize = 32, 678 642 .num_pmcs = 4, ··· 688 650 .cpu_name = "750CL", 689 651 .cpu_features = CPU_FTRS_750CL, 690 652 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, 653 + .mmu_features = MMU_FTR_HPTE_TABLE | MMU_FTR_USE_HIGH_BATS, 691 654 .icache_bsize = 32, 692 655 .dcache_bsize = 32, 693 656 .num_pmcs = 4, ··· 703 664 .cpu_name = "745/755", 704 665 .cpu_features = CPU_FTRS_750, 705 666 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, 667 + .mmu_features = MMU_FTR_HPTE_TABLE, 706 668 .icache_bsize = 32, 707 669 .dcache_bsize = 32, 708 670 .num_pmcs = 4, ··· 718 678 .cpu_name = "750FX", 719 679 .cpu_features = CPU_FTRS_750FX1, 720 680 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, 681 + .mmu_features = MMU_FTR_HPTE_TABLE, 721 682 .icache_bsize = 32, 722 683 .dcache_bsize = 32, 723 684 .num_pmcs = 4, ··· 733 692 .cpu_name = "750FX", 734 693 .cpu_features = CPU_FTRS_750FX2, 735 694 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, 695 + .mmu_features = MMU_FTR_HPTE_TABLE, 736 696 .icache_bsize = 32, 737 697 .dcache_bsize = 32, 738 698 .num_pmcs = 4, ··· 748 706 .cpu_name = "750FX", 749 707 .cpu_features = CPU_FTRS_750FX, 750 708 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, 709 + .mmu_features = MMU_FTR_HPTE_TABLE | MMU_FTR_USE_HIGH_BATS, 751 710 .icache_bsize = 32, 752 711 .dcache_bsize = 32, 753 712 .num_pmcs = 4, ··· 763 720 .cpu_name = "750GX", 764 721 .cpu_features = CPU_FTRS_750GX, 765 722 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, 723 + .mmu_features = MMU_FTR_HPTE_TABLE | MMU_FTR_USE_HIGH_BATS, 766 724 .icache_bsize = 32, 767 725 .dcache_bsize = 32, 768 726 .num_pmcs = 4, ··· 778 734 .cpu_name = "740/750", 779 735 .cpu_features = CPU_FTRS_740, 780 736 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, 737 + .mmu_features = MMU_FTR_HPTE_TABLE, 781 738 .icache_bsize = 32, 782 739 .dcache_bsize = 32, 783 740 .num_pmcs = 4, ··· 794 749 .cpu_features = CPU_FTRS_7400_NOTAU, 795 750 .cpu_user_features = COMMON_USER | 796 751 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE, 752 + .mmu_features = MMU_FTR_HPTE_TABLE, 797 753 .icache_bsize = 32, 798 754 .dcache_bsize = 32, 799 755 .num_pmcs = 4, ··· 810 764 .cpu_features = CPU_FTRS_7400, 811 765 .cpu_user_features = COMMON_USER | 812 766 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE, 767 + .mmu_features = MMU_FTR_HPTE_TABLE, 813 768 .icache_bsize = 32, 814 769 .dcache_bsize = 32, 815 770 .num_pmcs = 4, ··· 826 779 .cpu_features = CPU_FTRS_7400, 827 780 .cpu_user_features = COMMON_USER | 828 781 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE, 782 + .mmu_features = MMU_FTR_HPTE_TABLE, 829 783 .icache_bsize = 32, 830 784 .dcache_bsize = 32, 831 785 .num_pmcs = 4, ··· 842 794 .cpu_features = CPU_FTRS_7450_20, 843 795 .cpu_user_features = COMMON_USER | 844 796 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE, 797 + .mmu_features = MMU_FTR_HPTE_TABLE, 845 798 .icache_bsize = 32, 846 799 .dcache_bsize = 32, 847 800 .num_pmcs = 6, ··· 860 811 .cpu_features = CPU_FTRS_7450_21, 861 812 .cpu_user_features = COMMON_USER | 862 813 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE, 814 + .mmu_features = MMU_FTR_HPTE_TABLE, 863 815 .icache_bsize = 32, 864 816 .dcache_bsize = 32, 865 817 .num_pmcs = 6, ··· 878 828 .cpu_features = CPU_FTRS_7450_23, 879 829 .cpu_user_features = COMMON_USER | 880 830 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE, 831 + .mmu_features = MMU_FTR_HPTE_TABLE, 881 832 .icache_bsize = 32, 882 833 .dcache_bsize = 32, 883 834 .num_pmcs = 6, ··· 896 845 .cpu_features = CPU_FTRS_7455_1, 897 846 .cpu_user_features = COMMON_USER | 898 847 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE, 848 + .mmu_features = MMU_FTR_HPTE_TABLE | MMU_FTR_USE_HIGH_BATS, 899 849 .icache_bsize = 32, 900 850 .dcache_bsize = 32, 901 851 .num_pmcs = 6, ··· 914 862 .cpu_features = CPU_FTRS_7455_20, 915 863 .cpu_user_features = COMMON_USER | 916 864 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE, 865 + .mmu_features = MMU_FTR_HPTE_TABLE | MMU_FTR_USE_HIGH_BATS, 917 866 .icache_bsize = 32, 918 867 .dcache_bsize = 32, 919 868 .num_pmcs = 6, ··· 932 879 .cpu_features = CPU_FTRS_7455, 933 880 .cpu_user_features = COMMON_USER | 934 881 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE, 882 + .mmu_features = MMU_FTR_HPTE_TABLE | MMU_FTR_USE_HIGH_BATS, 935 883 .icache_bsize = 32, 936 884 .dcache_bsize = 32, 937 885 .num_pmcs = 6, ··· 950 896 .cpu_features = CPU_FTRS_7447_10, 951 897 .cpu_user_features = COMMON_USER | 952 898 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE, 899 + .mmu_features = MMU_FTR_HPTE_TABLE | MMU_FTR_USE_HIGH_BATS, 953 900 .icache_bsize = 32, 954 901 .dcache_bsize = 32, 955 902 .num_pmcs = 6, ··· 968 913 .cpu_features = CPU_FTRS_7447_10, 969 914 .cpu_user_features = COMMON_USER | 970 915 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE, 916 + .mmu_features = MMU_FTR_HPTE_TABLE | MMU_FTR_USE_HIGH_BATS, 971 917 .icache_bsize = 32, 972 918 .dcache_bsize = 32, 973 919 .num_pmcs = 6, ··· 985 929 .cpu_name = "7447/7457", 986 930 .cpu_features = CPU_FTRS_7447, 987 931 .cpu_user_features = COMMON_USER | PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE, 932 + .mmu_features = MMU_FTR_HPTE_TABLE | MMU_FTR_USE_HIGH_BATS, 988 933 .icache_bsize = 32, 989 934 .dcache_bsize = 32, 990 935 .num_pmcs = 6, ··· 1003 946 .cpu_features = CPU_FTRS_7447A, 1004 947 .cpu_user_features = COMMON_USER | 1005 948 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE, 949 + .mmu_features = MMU_FTR_HPTE_TABLE | MMU_FTR_USE_HIGH_BATS, 1006 950 .icache_bsize = 32, 1007 951 .dcache_bsize = 32, 1008 952 .num_pmcs = 6, ··· 1021 963 .cpu_features = CPU_FTRS_7448, 1022 964 .cpu_user_features = COMMON_USER | 1023 965 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE, 966 + .mmu_features = MMU_FTR_HPTE_TABLE | MMU_FTR_USE_HIGH_BATS, 1024 967 .icache_bsize = 32, 1025 968 .dcache_bsize = 32, 1026 969 .num_pmcs = 6, ··· 1038 979 .cpu_name = "82xx", 1039 980 .cpu_features = CPU_FTRS_82XX, 1040 981 .cpu_user_features = COMMON_USER, 982 + .mmu_features = 0, 1041 983 .icache_bsize = 32, 1042 984 .dcache_bsize = 32, 1043 985 .cpu_setup = __setup_cpu_603, ··· 1051 991 .cpu_name = "G2_LE", 1052 992 .cpu_features = CPU_FTRS_G2_LE, 1053 993 .cpu_user_features = COMMON_USER, 994 + .mmu_features = MMU_FTR_USE_HIGH_BATS, 1054 995 .icache_bsize = 32, 1055 996 .dcache_bsize = 32, 1056 997 .cpu_setup = __setup_cpu_603, ··· 1064 1003 .cpu_name = "e300c1", 1065 1004 .cpu_features = CPU_FTRS_E300, 1066 1005 .cpu_user_features = COMMON_USER, 1006 + .mmu_features = MMU_FTR_USE_HIGH_BATS, 1067 1007 .icache_bsize = 32, 1068 1008 .dcache_bsize = 32, 1069 1009 .cpu_setup = __setup_cpu_603, ··· 1077 1015 .cpu_name = "e300c2", 1078 1016 .cpu_features = CPU_FTRS_E300C2, 1079 1017 .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU, 1018 + .mmu_features = MMU_FTR_USE_HIGH_BATS, 1080 1019 .icache_bsize = 32, 1081 1020 .dcache_bsize = 32, 1082 1021 .cpu_setup = __setup_cpu_603, ··· 1090 1027 .cpu_name = "e300c3", 1091 1028 .cpu_features = CPU_FTRS_E300, 1092 1029 .cpu_user_features = COMMON_USER, 1030 + .mmu_features = MMU_FTR_USE_HIGH_BATS, 1093 1031 .icache_bsize = 32, 1094 1032 .dcache_bsize = 32, 1095 1033 .cpu_setup = __setup_cpu_603, ··· 1105 1041 .cpu_name = "e300c4", 1106 1042 .cpu_features = CPU_FTRS_E300, 1107 1043 .cpu_user_features = COMMON_USER, 1044 + .mmu_features = MMU_FTR_USE_HIGH_BATS, 1108 1045 .icache_bsize = 32, 1109 1046 .dcache_bsize = 32, 1110 1047 .cpu_setup = __setup_cpu_603, ··· 1121 1056 .cpu_name = "(generic PPC)", 1122 1057 .cpu_features = CPU_FTRS_CLASSIC32, 1123 1058 .cpu_user_features = COMMON_USER, 1059 + .mmu_features = MMU_FTR_HPTE_TABLE, 1124 1060 .icache_bsize = 32, 1125 1061 .dcache_bsize = 32, 1126 1062 .machine_check = machine_check_generic, ··· 1137 1071 * if the 8xx code is there.... */ 1138 1072 .cpu_features = CPU_FTRS_8XX, 1139 1073 .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU, 1074 + .mmu_features = MMU_FTR_TYPE_8xx, 1140 1075 .icache_bsize = 16, 1141 1076 .dcache_bsize = 16, 1142 1077 .platform = "ppc823", ··· 1150 1083 .cpu_name = "403GC", 1151 1084 .cpu_features = CPU_FTRS_40X, 1152 1085 .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU, 1086 + .mmu_features = MMU_FTR_TYPE_40x, 1153 1087 .icache_bsize = 16, 1154 1088 .dcache_bsize = 16, 1155 1089 .machine_check = machine_check_4xx, ··· 1163 1095 .cpu_features = CPU_FTRS_40X, 1164 1096 .cpu_user_features = PPC_FEATURE_32 | 1165 1097 PPC_FEATURE_HAS_MMU | PPC_FEATURE_NO_TB, 1098 + .mmu_features = MMU_FTR_TYPE_40x, 1166 1099 .icache_bsize = 16, 1167 1100 .dcache_bsize = 16, 1168 1101 .machine_check = machine_check_4xx, ··· 1175 1106 .cpu_name = "403G ??", 1176 1107 .cpu_features = CPU_FTRS_40X, 1177 1108 .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU, 1109 + .mmu_features = MMU_FTR_TYPE_40x, 1178 1110 .icache_bsize = 16, 1179 1111 .dcache_bsize = 16, 1180 1112 .machine_check = machine_check_4xx, ··· 1188 1118 .cpu_features = CPU_FTRS_40X, 1189 1119 .cpu_user_features = PPC_FEATURE_32 | 1190 1120 PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, 1121 + .mmu_features = MMU_FTR_TYPE_40x, 1191 1122 .icache_bsize = 32, 1192 1123 .dcache_bsize = 32, 1193 1124 .machine_check = machine_check_4xx, ··· 1201 1130 .cpu_features = CPU_FTRS_40X, 1202 1131 .cpu_user_features = PPC_FEATURE_32 | 1203 1132 PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, 1133 + .mmu_features = MMU_FTR_TYPE_40x, 1204 1134 .icache_bsize = 32, 1205 1135 .dcache_bsize = 32, 1206 1136 .machine_check = machine_check_4xx, ··· 1214 1142 .cpu_features = CPU_FTRS_40X, 1215 1143 .cpu_user_features = PPC_FEATURE_32 | 1216 1144 PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, 1145 + .mmu_features = MMU_FTR_TYPE_40x, 1217 1146 .icache_bsize = 32, 1218 1147 .dcache_bsize = 32, 1219 1148 .machine_check = machine_check_4xx, ··· 1227 1154 .cpu_features = CPU_FTRS_40X, 1228 1155 .cpu_user_features = PPC_FEATURE_32 | 1229 1156 PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, 1157 + .mmu_features = MMU_FTR_TYPE_40x, 1230 1158 .icache_bsize = 32, 1231 1159 .dcache_bsize = 32, 1232 1160 .machine_check = machine_check_4xx, ··· 1240 1166 .cpu_features = CPU_FTRS_40X, 1241 1167 .cpu_user_features = PPC_FEATURE_32 | 1242 1168 PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, 1169 + .mmu_features = MMU_FTR_TYPE_40x, 1243 1170 .icache_bsize = 32, 1244 1171 .dcache_bsize = 32, 1245 1172 .machine_check = machine_check_4xx, ··· 1253 1178 .cpu_features = CPU_FTRS_40X, 1254 1179 .cpu_user_features = PPC_FEATURE_32 | 1255 1180 PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, 1181 + .mmu_features = MMU_FTR_TYPE_40x, 1256 1182 .icache_bsize = 32, 1257 1183 .dcache_bsize = 32, 1258 1184 .machine_check = machine_check_4xx, ··· 1266 1190 .cpu_features = CPU_FTRS_40X, 1267 1191 .cpu_user_features = PPC_FEATURE_32 | 1268 1192 PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, 1193 + .mmu_features = MMU_FTR_TYPE_40x, 1269 1194 .icache_bsize = 32, 1270 1195 .dcache_bsize = 32, 1271 1196 .machine_check = machine_check_4xx, ··· 1279 1202 .cpu_features = CPU_FTRS_40X, 1280 1203 .cpu_user_features = PPC_FEATURE_32 | 1281 1204 PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, 1205 + .mmu_features = MMU_FTR_TYPE_40x, 1282 1206 .icache_bsize = 32, 1283 1207 .dcache_bsize = 32, 1284 1208 .machine_check = machine_check_4xx, ··· 1291 1213 .cpu_name = "405LP", 1292 1214 .cpu_features = CPU_FTRS_40X, 1293 1215 .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU, 1216 + .mmu_features = MMU_FTR_TYPE_40x, 1294 1217 .icache_bsize = 32, 1295 1218 .dcache_bsize = 32, 1296 1219 .machine_check = machine_check_4xx, ··· 1304 1225 .cpu_features = CPU_FTRS_40X, 1305 1226 .cpu_user_features = PPC_FEATURE_32 | 1306 1227 PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, 1228 + .mmu_features = MMU_FTR_TYPE_40x, 1307 1229 .icache_bsize = 32, 1308 1230 .dcache_bsize = 32, 1309 1231 .machine_check = machine_check_4xx, ··· 1317 1237 .cpu_features = CPU_FTRS_40X, 1318 1238 .cpu_user_features = PPC_FEATURE_32 | 1319 1239 PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, 1240 + .mmu_features = MMU_FTR_TYPE_40x, 1320 1241 .icache_bsize = 32, 1321 1242 .dcache_bsize = 32, 1322 1243 .machine_check = machine_check_4xx, ··· 1330 1249 .cpu_features = CPU_FTRS_40X, 1331 1250 .cpu_user_features = PPC_FEATURE_32 | 1332 1251 PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, 1252 + .mmu_features = MMU_FTR_TYPE_40x, 1333 1253 .icache_bsize = 32, 1334 1254 .dcache_bsize = 32, 1335 1255 .machine_check = machine_check_4xx, ··· 1343 1261 .cpu_features = CPU_FTRS_40X, 1344 1262 .cpu_user_features = PPC_FEATURE_32 | 1345 1263 PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, 1264 + .mmu_features = MMU_FTR_TYPE_40x, 1346 1265 .icache_bsize = 32, 1347 1266 .dcache_bsize = 32, 1348 1267 .machine_check = machine_check_4xx, ··· 1356 1273 .cpu_features = CPU_FTRS_40X, 1357 1274 .cpu_user_features = PPC_FEATURE_32 | 1358 1275 PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, 1276 + .mmu_features = MMU_FTR_TYPE_40x, 1359 1277 .icache_bsize = 32, 1360 1278 .dcache_bsize = 32, 1361 1279 .machine_check = machine_check_4xx, ··· 1370 1286 .cpu_features = CPU_FTRS_40X, 1371 1287 .cpu_user_features = PPC_FEATURE_32 | 1372 1288 PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, 1289 + .mmu_features = MMU_FTR_TYPE_40x, 1373 1290 .icache_bsize = 32, 1374 1291 .dcache_bsize = 32, 1375 1292 .machine_check = machine_check_4xx, ··· 1383 1298 .cpu_features = CPU_FTRS_40X, 1384 1299 .cpu_user_features = PPC_FEATURE_32 | 1385 1300 PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, 1301 + .mmu_features = MMU_FTR_TYPE_40x, 1386 1302 .icache_bsize = 32, 1387 1303 .dcache_bsize = 32, 1388 1304 .machine_check = machine_check_4xx, ··· 1398 1312 .cpu_name = "440GR Rev. A", 1399 1313 .cpu_features = CPU_FTRS_44X, 1400 1314 .cpu_user_features = COMMON_USER_BOOKE, 1315 + .mmu_features = MMU_FTR_TYPE_44x, 1401 1316 .icache_bsize = 32, 1402 1317 .dcache_bsize = 32, 1403 1318 .machine_check = machine_check_4xx, ··· 1410 1323 .cpu_name = "440EP Rev. A", 1411 1324 .cpu_features = CPU_FTRS_44X, 1412 1325 .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU, 1326 + .mmu_features = MMU_FTR_TYPE_44x, 1413 1327 .icache_bsize = 32, 1414 1328 .dcache_bsize = 32, 1415 1329 .cpu_setup = __setup_cpu_440ep, ··· 1423 1335 .cpu_name = "440GR Rev. B", 1424 1336 .cpu_features = CPU_FTRS_44X, 1425 1337 .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU, 1338 + .mmu_features = MMU_FTR_TYPE_44x, 1426 1339 .icache_bsize = 32, 1427 1340 .dcache_bsize = 32, 1428 1341 .machine_check = machine_check_4xx, ··· 1435 1346 .cpu_name = "440EP Rev. C", 1436 1347 .cpu_features = CPU_FTRS_44X, 1437 1348 .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU, 1349 + .mmu_features = MMU_FTR_TYPE_44x, 1438 1350 .icache_bsize = 32, 1439 1351 .dcache_bsize = 32, 1440 1352 .cpu_setup = __setup_cpu_440ep, ··· 1448 1358 .cpu_name = "440EP Rev. B", 1449 1359 .cpu_features = CPU_FTRS_44X, 1450 1360 .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU, 1361 + .mmu_features = MMU_FTR_TYPE_44x, 1451 1362 .icache_bsize = 32, 1452 1363 .dcache_bsize = 32, 1453 1364 .cpu_setup = __setup_cpu_440ep, ··· 1461 1370 .cpu_name = "440GRX", 1462 1371 .cpu_features = CPU_FTRS_44X, 1463 1372 .cpu_user_features = COMMON_USER_BOOKE, 1373 + .mmu_features = MMU_FTR_TYPE_44x, 1464 1374 .icache_bsize = 32, 1465 1375 .dcache_bsize = 32, 1466 1376 .cpu_setup = __setup_cpu_440grx, ··· 1474 1382 .cpu_name = "440EPX", 1475 1383 .cpu_features = CPU_FTRS_44X, 1476 1384 .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU, 1385 + .mmu_features = MMU_FTR_TYPE_44x, 1477 1386 .icache_bsize = 32, 1478 1387 .dcache_bsize = 32, 1479 1388 .cpu_setup = __setup_cpu_440epx, ··· 1487 1394 .cpu_name = "440GP Rev. B", 1488 1395 .cpu_features = CPU_FTRS_44X, 1489 1396 .cpu_user_features = COMMON_USER_BOOKE, 1397 + .mmu_features = MMU_FTR_TYPE_44x, 1490 1398 .icache_bsize = 32, 1491 1399 .dcache_bsize = 32, 1492 1400 .machine_check = machine_check_4xx, ··· 1499 1405 .cpu_name = "440GP Rev. C", 1500 1406 .cpu_features = CPU_FTRS_44X, 1501 1407 .cpu_user_features = COMMON_USER_BOOKE, 1408 + .mmu_features = MMU_FTR_TYPE_44x, 1502 1409 .icache_bsize = 32, 1503 1410 .dcache_bsize = 32, 1504 1411 .machine_check = machine_check_4xx, ··· 1511 1416 .cpu_name = "440GX Rev. A", 1512 1417 .cpu_features = CPU_FTRS_44X, 1513 1418 .cpu_user_features = COMMON_USER_BOOKE, 1419 + .mmu_features = MMU_FTR_TYPE_44x, 1514 1420 .icache_bsize = 32, 1515 1421 .dcache_bsize = 32, 1516 1422 .cpu_setup = __setup_cpu_440gx, ··· 1524 1428 .cpu_name = "440GX Rev. B", 1525 1429 .cpu_features = CPU_FTRS_44X, 1526 1430 .cpu_user_features = COMMON_USER_BOOKE, 1431 + .mmu_features = MMU_FTR_TYPE_44x, 1527 1432 .icache_bsize = 32, 1528 1433 .dcache_bsize = 32, 1529 1434 .cpu_setup = __setup_cpu_440gx, ··· 1537 1440 .cpu_name = "440GX Rev. C", 1538 1441 .cpu_features = CPU_FTRS_44X, 1539 1442 .cpu_user_features = COMMON_USER_BOOKE, 1443 + .mmu_features = MMU_FTR_TYPE_44x, 1540 1444 .icache_bsize = 32, 1541 1445 .dcache_bsize = 32, 1542 1446 .cpu_setup = __setup_cpu_440gx, ··· 1550 1452 .cpu_name = "440GX Rev. F", 1551 1453 .cpu_features = CPU_FTRS_44X, 1552 1454 .cpu_user_features = COMMON_USER_BOOKE, 1455 + .mmu_features = MMU_FTR_TYPE_44x, 1553 1456 .icache_bsize = 32, 1554 1457 .dcache_bsize = 32, 1555 1458 .cpu_setup = __setup_cpu_440gx, ··· 1563 1464 .cpu_name = "440SP Rev. A", 1564 1465 .cpu_features = CPU_FTRS_44X, 1565 1466 .cpu_user_features = COMMON_USER_BOOKE, 1467 + .mmu_features = MMU_FTR_TYPE_44x, 1566 1468 .icache_bsize = 32, 1567 1469 .dcache_bsize = 32, 1568 1470 .machine_check = machine_check_4xx, ··· 1575 1475 .cpu_name = "440SPe Rev. A", 1576 1476 .cpu_features = CPU_FTRS_44X, 1577 1477 .cpu_user_features = COMMON_USER_BOOKE, 1478 + .mmu_features = MMU_FTR_TYPE_44x, 1578 1479 .icache_bsize = 32, 1579 1480 .dcache_bsize = 32, 1580 1481 .cpu_setup = __setup_cpu_440spe, ··· 1588 1487 .cpu_name = "440SPe Rev. B", 1589 1488 .cpu_features = CPU_FTRS_44X, 1590 1489 .cpu_user_features = COMMON_USER_BOOKE, 1490 + .mmu_features = MMU_FTR_TYPE_44x, 1591 1491 .icache_bsize = 32, 1592 1492 .dcache_bsize = 32, 1593 1493 .cpu_setup = __setup_cpu_440spe, ··· 1601 1499 .cpu_name = "440 in Virtex-5 FXT", 1602 1500 .cpu_features = CPU_FTRS_44X, 1603 1501 .cpu_user_features = COMMON_USER_BOOKE, 1502 + .mmu_features = MMU_FTR_TYPE_44x, 1604 1503 .icache_bsize = 32, 1605 1504 .dcache_bsize = 32, 1606 1505 .cpu_setup = __setup_cpu_440x5, ··· 1614 1511 .cpu_name = "460EX", 1615 1512 .cpu_features = CPU_FTRS_440x6, 1616 1513 .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU, 1514 + .mmu_features = MMU_FTR_TYPE_44x, 1617 1515 .icache_bsize = 32, 1618 1516 .dcache_bsize = 32, 1619 1517 .cpu_setup = __setup_cpu_460ex, ··· 1627 1523 .cpu_name = "460GT", 1628 1524 .cpu_features = CPU_FTRS_440x6, 1629 1525 .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU, 1526 + .mmu_features = MMU_FTR_TYPE_44x, 1630 1527 .icache_bsize = 32, 1631 1528 .dcache_bsize = 32, 1632 1529 .cpu_setup = __setup_cpu_460gt, ··· 1640 1535 .cpu_name = "(generic 44x PPC)", 1641 1536 .cpu_features = CPU_FTRS_44X, 1642 1537 .cpu_user_features = COMMON_USER_BOOKE, 1538 + .mmu_features = MMU_FTR_TYPE_44x, 1643 1539 .icache_bsize = 32, 1644 1540 .dcache_bsize = 32, 1645 1541 .machine_check = machine_check_4xx, ··· 1657 1551 .cpu_user_features = COMMON_USER_BOOKE | 1658 1552 PPC_FEATURE_HAS_EFP_SINGLE | 1659 1553 PPC_FEATURE_UNIFIED_CACHE, 1554 + .mmu_features = MMU_FTR_TYPE_FSL_E, 1660 1555 .dcache_bsize = 32, 1661 1556 .machine_check = machine_check_e200, 1662 1557 .platform = "ppc5554", ··· 1672 1565 PPC_FEATURE_HAS_SPE_COMP | 1673 1566 PPC_FEATURE_HAS_EFP_SINGLE_COMP | 1674 1567 PPC_FEATURE_UNIFIED_CACHE, 1568 + .mmu_features = MMU_FTR_TYPE_FSL_E, 1675 1569 .dcache_bsize = 32, 1676 1570 .machine_check = machine_check_e200, 1677 1571 .platform = "ppc5554", ··· 1685 1577 .cpu_user_features = COMMON_USER_BOOKE | 1686 1578 PPC_FEATURE_HAS_EFP_SINGLE | 1687 1579 PPC_FEATURE_UNIFIED_CACHE, 1580 + .mmu_features = MMU_FTR_TYPE_FSL_E, 1688 1581 .dcache_bsize = 32, 1689 1582 .machine_check = machine_check_e200, 1690 1583 .platform = "ppc5554", ··· 1700 1591 .cpu_user_features = COMMON_USER_BOOKE | 1701 1592 PPC_FEATURE_HAS_SPE_COMP | 1702 1593 PPC_FEATURE_HAS_EFP_SINGLE_COMP, 1594 + .mmu_features = MMU_FTR_TYPE_FSL_E, 1703 1595 .icache_bsize = 32, 1704 1596 .dcache_bsize = 32, 1705 1597 .num_pmcs = 4, ··· 1718 1608 PPC_FEATURE_HAS_SPE_COMP | 1719 1609 PPC_FEATURE_HAS_EFP_SINGLE_COMP | 1720 1610 PPC_FEATURE_HAS_EFP_DOUBLE_COMP, 1611 + .mmu_features = MMU_FTR_TYPE_FSL_E | MMU_FTR_BIG_PHYS, 1721 1612 .icache_bsize = 32, 1722 1613 .dcache_bsize = 32, 1723 1614 .num_pmcs = 4, ··· 1733 1622 .cpu_name = "e500mc", 1734 1623 .cpu_features = CPU_FTRS_E500MC, 1735 1624 .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU, 1625 + .mmu_features = MMU_FTR_TYPE_FSL_E | MMU_FTR_BIG_PHYS, 1736 1626 .icache_bsize = 64, 1737 1627 .dcache_bsize = 64, 1738 1628 .num_pmcs = 4, ··· 1750 1638 .cpu_user_features = COMMON_USER_BOOKE | 1751 1639 PPC_FEATURE_HAS_SPE_COMP | 1752 1640 PPC_FEATURE_HAS_EFP_SINGLE_COMP, 1641 + .mmu_features = MMU_FTR_TYPE_FSL_E, 1753 1642 .icache_bsize = 32, 1754 1643 .dcache_bsize = 32, 1755 1644 .machine_check = machine_check_e500,
+4 -4
arch/powerpc/kernel/head_32.S
··· 990 990 LOAD_BAT(1,r3,r4,r5) 991 991 LOAD_BAT(2,r3,r4,r5) 992 992 LOAD_BAT(3,r3,r4,r5) 993 - BEGIN_FTR_SECTION 993 + BEGIN_MMU_FTR_SECTION 994 994 LOAD_BAT(4,r3,r4,r5) 995 995 LOAD_BAT(5,r3,r4,r5) 996 996 LOAD_BAT(6,r3,r4,r5) 997 997 LOAD_BAT(7,r3,r4,r5) 998 - END_FTR_SECTION_IFSET(CPU_FTR_HAS_HIGH_BATS) 998 + END_MMU_FTR_SECTION_IFSET(MMU_FTR_USE_HIGH_BATS) 999 999 blr 1000 1000 1001 1001 /* ··· 1141 1141 mtspr SPRN_IBAT2L,r10 1142 1142 mtspr SPRN_IBAT3U,r10 1143 1143 mtspr SPRN_IBAT3L,r10 1144 - BEGIN_FTR_SECTION 1144 + BEGIN_MMU_FTR_SECTION 1145 1145 /* Here's a tweak: at this point, CPU setup have 1146 1146 * not been called yet, so HIGH_BAT_EN may not be 1147 1147 * set in HID0 for the 745x processors. However, it ··· 1164 1164 mtspr SPRN_IBAT6L,r10 1165 1165 mtspr SPRN_IBAT7U,r10 1166 1166 mtspr SPRN_IBAT7L,r10 1167 - END_FTR_SECTION_IFSET(CPU_FTR_HAS_HIGH_BATS) 1167 + END_MMU_FTR_SECTION_IFSET(MMU_FTR_USE_HIGH_BATS) 1168 1168 blr 1169 1169 1170 1170 flush_tlbs:
+2 -2
arch/powerpc/kernel/head_fsl_booke.S
··· 767 767 rlwimi r12, r13, 24, 0, 7 /* grab RPN[32:39] */ 768 768 rlwimi r12, r11, 24, 8, 19 /* grab RPN[40:51] */ 769 769 mtspr SPRN_MAS3, r12 770 - BEGIN_FTR_SECTION 770 + BEGIN_MMU_FTR_SECTION 771 771 srwi r10, r13, 8 /* grab RPN[8:31] */ 772 772 mtspr SPRN_MAS7, r10 773 - END_FTR_SECTION_IFSET(CPU_FTR_BIG_PHYS) 773 + END_MMU_FTR_SECTION_IFSET(MMU_FTR_BIG_PHYS) 774 774 #else 775 775 rlwimi r11, r12, 0, 20, 31 /* Extract RPN from PTE and merge with perms */ 776 776 mtspr SPRN_MAS3, r11
+6
arch/powerpc/kernel/module.c
··· 78 78 (void *)sect->sh_addr, 79 79 (void *)sect->sh_addr + sect->sh_size); 80 80 81 + sect = find_section(hdr, sechdrs, "__mmu_ftr_fixup"); 82 + if (sect != NULL) 83 + do_feature_fixups(cur_cpu_spec->mmu_features, 84 + (void *)sect->sh_addr, 85 + (void *)sect->sh_addr + sect->sh_size); 86 + 81 87 #ifdef CONFIG_PPC64 82 88 sect = find_section(hdr, sechdrs, "__fw_ftr_fixup"); 83 89 if (sect != NULL)
+4
arch/powerpc/kernel/setup_32.c
··· 97 97 PTRRELOC(&__start___ftr_fixup), 98 98 PTRRELOC(&__stop___ftr_fixup)); 99 99 100 + do_feature_fixups(spec->mmu_features, 101 + PTRRELOC(&__start___mmu_ftr_fixup), 102 + PTRRELOC(&__stop___mmu_ftr_fixup)); 103 + 100 104 do_lwsync_fixups(spec->cpu_features, 101 105 PTRRELOC(&__start___lwsync_fixup), 102 106 PTRRELOC(&__stop___lwsync_fixup));
+2
arch/powerpc/kernel/setup_64.c
··· 361 361 */ 362 362 do_feature_fixups(cur_cpu_spec->cpu_features, 363 363 &__start___ftr_fixup, &__stop___ftr_fixup); 364 + do_feature_fixups(cur_cpu_spec->mmu_features, 365 + &__start___mmu_ftr_fixup, &__stop___mmu_ftr_fixup); 364 366 do_feature_fixups(powerpc_firmware_features, 365 367 &__start___fw_ftr_fixup, &__stop___fw_ftr_fixup); 366 368 do_lwsync_fixups(cur_cpu_spec->cpu_features,
+3 -3
arch/powerpc/kernel/swsusp_32.S
··· 5 5 #include <asm/thread_info.h> 6 6 #include <asm/ppc_asm.h> 7 7 #include <asm/asm-offsets.h> 8 - 8 + #include <asm/mmu.h> 9 9 10 10 /* 11 11 * Structure for storing CPU registers on the save area. ··· 279 279 mtibatl 3,r4 280 280 #endif 281 281 282 - BEGIN_FTR_SECTION 282 + BEGIN_MMU_FTR_SECTION 283 283 li r4,0 284 284 mtspr SPRN_DBAT4U,r4 285 285 mtspr SPRN_DBAT4L,r4 ··· 297 297 mtspr SPRN_IBAT6L,r4 298 298 mtspr SPRN_IBAT7U,r4 299 299 mtspr SPRN_IBAT7L,r4 300 - END_FTR_SECTION_IFSET(CPU_FTR_HAS_HIGH_BATS) 300 + END_MMU_FTR_SECTION_IFSET(MMU_FTR_USE_HIGH_BATS) 301 301 302 302 /* Flush all TLBs */ 303 303 lis r4,0x1000
+10
arch/powerpc/kernel/vdso.c
··· 567 567 do_feature_fixups(cur_cpu_spec->cpu_features, 568 568 start64, start64 + size64); 569 569 570 + start64 = find_section64(v64->hdr, "__mmu_ftr_fixup", &size64); 571 + if (start64) 572 + do_feature_fixups(cur_cpu_spec->mmu_features, 573 + start64, start64 + size64); 574 + 570 575 start64 = find_section64(v64->hdr, "__fw_ftr_fixup", &size64); 571 576 if (start64) 572 577 do_feature_fixups(powerpc_firmware_features, ··· 586 581 start32 = find_section32(v32->hdr, "__ftr_fixup", &size32); 587 582 if (start32) 588 583 do_feature_fixups(cur_cpu_spec->cpu_features, 584 + start32, start32 + size32); 585 + 586 + start32 = find_section32(v32->hdr, "__mmu_ftr_fixup", &size32); 587 + if (start32) 588 + do_feature_fixups(cur_cpu_spec->mmu_features, 589 589 start32, start32 + size32); 590 590 591 591 #ifdef CONFIG_PPC64
+3
arch/powerpc/kernel/vdso32/vdso32.lds.S
··· 34 34 __ftr_fixup : { *(__ftr_fixup) } 35 35 36 36 . = ALIGN(8); 37 + __mmu_ftr_fixup : { *(__mmu_ftr_fixup) } 38 + 39 + . = ALIGN(8); 37 40 __lwsync_fixup : { *(__lwsync_fixup) } 38 41 39 42 #ifdef CONFIG_PPC64
+3
arch/powerpc/kernel/vdso64/vdso64.lds.S
··· 35 35 __ftr_fixup : { *(__ftr_fixup) } 36 36 37 37 . = ALIGN(8); 38 + __mmu_ftr_fixup : { *(__mmu_ftr_fixup) } 39 + 40 + . = ALIGN(8); 38 41 __lwsync_fixup : { *(__lwsync_fixup) } 39 42 40 43 . = ALIGN(8);
+6
arch/powerpc/kernel/vmlinux.lds.S
··· 152 152 __stop___ftr_fixup = .; 153 153 } 154 154 . = ALIGN(8); 155 + __mmu_ftr_fixup : AT(ADDR(__mmu_ftr_fixup) - LOAD_OFFSET) { 156 + __start___mmu_ftr_fixup = .; 157 + *(__mmu_ftr_fixup) 158 + __stop___mmu_ftr_fixup = .; 159 + } 160 + . = ALIGN(8); 155 161 __lwsync_fixup : AT(ADDR(__lwsync_fixup) - LOAD_OFFSET) { 156 162 __start___lwsync_fixup = .; 157 163 *(__lwsync_fixup)
+1 -1
arch/powerpc/mm/ppc_mmu_32.c
··· 192 192 extern unsigned int hash_page[]; 193 193 extern unsigned int flush_hash_patch_A[], flush_hash_patch_B[]; 194 194 195 - if (!cpu_has_feature(CPU_FTR_HPTE_TABLE)) { 195 + if (!mmu_has_feature(MMU_FTR_HPTE_TABLE)) { 196 196 /* 197 197 * Put a blr (procedure return) instruction at the 198 198 * start of hash_page, since we can still get DSI
+3 -2
arch/powerpc/platforms/powermac/sleep.S
··· 17 17 #include <asm/cache.h> 18 18 #include <asm/thread_info.h> 19 19 #include <asm/asm-offsets.h> 20 + #include <asm/mmu.h> 20 21 21 22 #define MAGIC 0x4c617273 /* 'Lars' */ 22 23 ··· 324 323 lwz r4,SL_IBAT3+4(r1) 325 324 mtibatl 3,r4 326 325 327 - BEGIN_FTR_SECTION 326 + BEGIN_MMU_FTR_SECTION 328 327 li r4,0 329 328 mtspr SPRN_DBAT4U,r4 330 329 mtspr SPRN_DBAT4L,r4 ··· 342 341 mtspr SPRN_IBAT6L,r4 343 342 mtspr SPRN_IBAT7U,r4 344 343 mtspr SPRN_IBAT7L,r4 345 - END_FTR_SECTION_IFSET(CPU_FTR_HAS_HIGH_BATS) 344 + END_MMU_FTR_SECTION_IFSET(MMU_FTR_USE_HIGH_BATS) 346 345 347 346 /* Flush all TLBs */ 348 347 lis r4,0x1000