diff options
author | Russell King <rmk@dyn-67.arm.linux.org.uk> | 2006-03-25 17:08:55 -0500 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2006-03-25 17:08:55 -0500 |
commit | 0003cedfc577be9d679c16531f8720739e9637ed (patch) | |
tree | 3b7a1e9087384706c8320f85f650ab96139e8c00 /arch/arm | |
parent | 3ee357f0f38a5fddebab18500c290d3879a2d89c (diff) | |
parent | c76b6b41d0ae29e1127d9f81cb687cabda57c14c (diff) |
Merge nommu tree
Fix merge conflict in arch/arm/mm/proc-xscale.S
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/boot/compressed/head.S | 82 | ||||
-rw-r--r-- | arch/arm/kernel/head.S | 15 | ||||
-rw-r--r-- | arch/arm/kernel/setup.c | 4 | ||||
-rw-r--r-- | arch/arm/kernel/sys_arm.c | 5 | ||||
-rw-r--r-- | arch/arm/mach-sa1100/assabet.c | 1 | ||||
-rw-r--r-- | arch/arm/mm/Kconfig | 8 | ||||
-rw-r--r-- | arch/arm/mm/proc-arm1020.S | 1 | ||||
-rw-r--r-- | arch/arm/mm/proc-arm1020e.S | 1 | ||||
-rw-r--r-- | arch/arm/mm/proc-arm1022.S | 1 | ||||
-rw-r--r-- | arch/arm/mm/proc-arm1026.S | 1 | ||||
-rw-r--r-- | arch/arm/mm/proc-arm6_7.S | 1 | ||||
-rw-r--r-- | arch/arm/mm/proc-arm720.S | 1 | ||||
-rw-r--r-- | arch/arm/mm/proc-arm920.S | 1 | ||||
-rw-r--r-- | arch/arm/mm/proc-arm922.S | 1 | ||||
-rw-r--r-- | arch/arm/mm/proc-arm925.S | 1 | ||||
-rw-r--r-- | arch/arm/mm/proc-arm926.S | 1 | ||||
-rw-r--r-- | arch/arm/mm/proc-sa110.S | 1 | ||||
-rw-r--r-- | arch/arm/mm/proc-sa1100.S | 1 | ||||
-rw-r--r-- | arch/arm/mm/proc-v6.S | 1 | ||||
-rw-r--r-- | arch/arm/mm/proc-xscale.S | 1 |
20 files changed, 78 insertions, 51 deletions
diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S index db3389d8e027..491c7e4c9ac6 100644 --- a/arch/arm/boot/compressed/head.S +++ b/arch/arm/boot/compressed/head.S | |||
@@ -358,7 +358,7 @@ __setup_mmu: sub r3, r4, #16384 @ Page directory size | |||
358 | str r1, [r0] | 358 | str r1, [r0] |
359 | mov pc, lr | 359 | mov pc, lr |
360 | 360 | ||
361 | __armv4_cache_on: | 361 | __armv4_mmu_cache_on: |
362 | mov r12, lr | 362 | mov r12, lr |
363 | bl __setup_mmu | 363 | bl __setup_mmu |
364 | mov r0, #0 | 364 | mov r0, #0 |
@@ -367,24 +367,24 @@ __armv4_cache_on: | |||
367 | mrc p15, 0, r0, c1, c0, 0 @ read control reg | 367 | mrc p15, 0, r0, c1, c0, 0 @ read control reg |
368 | orr r0, r0, #0x5000 @ I-cache enable, RR cache replacement | 368 | orr r0, r0, #0x5000 @ I-cache enable, RR cache replacement |
369 | orr r0, r0, #0x0030 | 369 | orr r0, r0, #0x0030 |
370 | bl __common_cache_on | 370 | bl __common_mmu_cache_on |
371 | mov r0, #0 | 371 | mov r0, #0 |
372 | mcr p15, 0, r0, c8, c7, 0 @ flush I,D TLBs | 372 | mcr p15, 0, r0, c8, c7, 0 @ flush I,D TLBs |
373 | mov pc, r12 | 373 | mov pc, r12 |
374 | 374 | ||
375 | __arm6_cache_on: | 375 | __arm6_mmu_cache_on: |
376 | mov r12, lr | 376 | mov r12, lr |
377 | bl __setup_mmu | 377 | bl __setup_mmu |
378 | mov r0, #0 | 378 | mov r0, #0 |
379 | mcr p15, 0, r0, c7, c0, 0 @ invalidate whole cache v3 | 379 | mcr p15, 0, r0, c7, c0, 0 @ invalidate whole cache v3 |
380 | mcr p15, 0, r0, c5, c0, 0 @ invalidate whole TLB v3 | 380 | mcr p15, 0, r0, c5, c0, 0 @ invalidate whole TLB v3 |
381 | mov r0, #0x30 | 381 | mov r0, #0x30 |
382 | bl __common_cache_on | 382 | bl __common_mmu_cache_on |
383 | mov r0, #0 | 383 | mov r0, #0 |
384 | mcr p15, 0, r0, c5, c0, 0 @ invalidate whole TLB v3 | 384 | mcr p15, 0, r0, c5, c0, 0 @ invalidate whole TLB v3 |
385 | mov pc, r12 | 385 | mov pc, r12 |
386 | 386 | ||
387 | __common_cache_on: | 387 | __common_mmu_cache_on: |
388 | #ifndef DEBUG | 388 | #ifndef DEBUG |
389 | orr r0, r0, #0x000d @ Write buffer, mmu | 389 | orr r0, r0, #0x000d @ Write buffer, mmu |
390 | #endif | 390 | #endif |
@@ -471,12 +471,12 @@ call_cache_fn: adr r12, proc_types | |||
471 | proc_types: | 471 | proc_types: |
472 | .word 0x41560600 @ ARM6/610 | 472 | .word 0x41560600 @ ARM6/610 |
473 | .word 0xffffffe0 | 473 | .word 0xffffffe0 |
474 | b __arm6_cache_off @ works, but slow | 474 | b __arm6_mmu_cache_off @ works, but slow |
475 | b __arm6_cache_off | 475 | b __arm6_mmu_cache_off |
476 | mov pc, lr | 476 | mov pc, lr |
477 | @ b __arm6_cache_on @ untested | 477 | @ b __arm6_mmu_cache_on @ untested |
478 | @ b __arm6_cache_off | 478 | @ b __arm6_mmu_cache_off |
479 | @ b __armv3_cache_flush | 479 | @ b __armv3_mmu_cache_flush |
480 | 480 | ||
481 | .word 0x00000000 @ old ARM ID | 481 | .word 0x00000000 @ old ARM ID |
482 | .word 0x0000f000 | 482 | .word 0x0000f000 |
@@ -486,14 +486,14 @@ proc_types: | |||
486 | 486 | ||
487 | .word 0x41007000 @ ARM7/710 | 487 | .word 0x41007000 @ ARM7/710 |
488 | .word 0xfff8fe00 | 488 | .word 0xfff8fe00 |
489 | b __arm7_cache_off | 489 | b __arm7_mmu_cache_off |
490 | b __arm7_cache_off | 490 | b __arm7_mmu_cache_off |
491 | mov pc, lr | 491 | mov pc, lr |
492 | 492 | ||
493 | .word 0x41807200 @ ARM720T (writethrough) | 493 | .word 0x41807200 @ ARM720T (writethrough) |
494 | .word 0xffffff00 | 494 | .word 0xffffff00 |
495 | b __armv4_cache_on | 495 | b __armv4_mmu_cache_on |
496 | b __armv4_cache_off | 496 | b __armv4_mmu_cache_off |
497 | mov pc, lr | 497 | mov pc, lr |
498 | 498 | ||
499 | .word 0x00007000 @ ARM7 IDs | 499 | .word 0x00007000 @ ARM7 IDs |
@@ -506,41 +506,41 @@ proc_types: | |||
506 | 506 | ||
507 | .word 0x4401a100 @ sa110 / sa1100 | 507 | .word 0x4401a100 @ sa110 / sa1100 |
508 | .word 0xffffffe0 | 508 | .word 0xffffffe0 |
509 | b __armv4_cache_on | 509 | b __armv4_mmu_cache_on |
510 | b __armv4_cache_off | 510 | b __armv4_mmu_cache_off |
511 | b __armv4_cache_flush | 511 | b __armv4_mmu_cache_flush |
512 | 512 | ||
513 | .word 0x6901b110 @ sa1110 | 513 | .word 0x6901b110 @ sa1110 |
514 | .word 0xfffffff0 | 514 | .word 0xfffffff0 |
515 | b __armv4_cache_on | 515 | b __armv4_mmu_cache_on |
516 | b __armv4_cache_off | 516 | b __armv4_mmu_cache_off |
517 | b __armv4_cache_flush | 517 | b __armv4_mmu_cache_flush |
518 | 518 | ||
519 | @ These match on the architecture ID | 519 | @ These match on the architecture ID |
520 | 520 | ||
521 | .word 0x00020000 @ ARMv4T | 521 | .word 0x00020000 @ ARMv4T |
522 | .word 0x000f0000 | 522 | .word 0x000f0000 |
523 | b __armv4_cache_on | 523 | b __armv4_mmu_cache_on |
524 | b __armv4_cache_off | 524 | b __armv4_mmu_cache_off |
525 | b __armv4_cache_flush | 525 | b __armv4_mmu_cache_flush |
526 | 526 | ||
527 | .word 0x00050000 @ ARMv5TE | 527 | .word 0x00050000 @ ARMv5TE |
528 | .word 0x000f0000 | 528 | .word 0x000f0000 |
529 | b __armv4_cache_on | 529 | b __armv4_mmu_cache_on |
530 | b __armv4_cache_off | 530 | b __armv4_mmu_cache_off |
531 | b __armv4_cache_flush | 531 | b __armv4_mmu_cache_flush |
532 | 532 | ||
533 | .word 0x00060000 @ ARMv5TEJ | 533 | .word 0x00060000 @ ARMv5TEJ |
534 | .word 0x000f0000 | 534 | .word 0x000f0000 |
535 | b __armv4_cache_on | 535 | b __armv4_mmu_cache_on |
536 | b __armv4_cache_off | 536 | b __armv4_mmu_cache_off |
537 | b __armv4_cache_flush | 537 | b __armv4_mmu_cache_flush |
538 | 538 | ||
539 | .word 0x00070000 @ ARMv6 | 539 | .word 0x00070000 @ ARMv6 |
540 | .word 0x000f0000 | 540 | .word 0x000f0000 |
541 | b __armv4_cache_on | 541 | b __armv4_mmu_cache_on |
542 | b __armv4_cache_off | 542 | b __armv4_mmu_cache_off |
543 | b __armv6_cache_flush | 543 | b __armv6_mmu_cache_flush |
544 | 544 | ||
545 | .word 0 @ unrecognised type | 545 | .word 0 @ unrecognised type |
546 | .word 0 | 546 | .word 0 |
@@ -562,7 +562,7 @@ proc_types: | |||
562 | cache_off: mov r3, #12 @ cache_off function | 562 | cache_off: mov r3, #12 @ cache_off function |
563 | b call_cache_fn | 563 | b call_cache_fn |
564 | 564 | ||
565 | __armv4_cache_off: | 565 | __armv4_mmu_cache_off: |
566 | mrc p15, 0, r0, c1, c0 | 566 | mrc p15, 0, r0, c1, c0 |
567 | bic r0, r0, #0x000d | 567 | bic r0, r0, #0x000d |
568 | mcr p15, 0, r0, c1, c0 @ turn MMU and cache off | 568 | mcr p15, 0, r0, c1, c0 @ turn MMU and cache off |
@@ -571,15 +571,15 @@ __armv4_cache_off: | |||
571 | mcr p15, 0, r0, c8, c7 @ invalidate whole TLB v4 | 571 | mcr p15, 0, r0, c8, c7 @ invalidate whole TLB v4 |
572 | mov pc, lr | 572 | mov pc, lr |
573 | 573 | ||
574 | __arm6_cache_off: | 574 | __arm6_mmu_cache_off: |
575 | mov r0, #0x00000030 @ ARM6 control reg. | 575 | mov r0, #0x00000030 @ ARM6 control reg. |
576 | b __armv3_cache_off | 576 | b __armv3_mmu_cache_off |
577 | 577 | ||
578 | __arm7_cache_off: | 578 | __arm7_mmu_cache_off: |
579 | mov r0, #0x00000070 @ ARM7 control reg. | 579 | mov r0, #0x00000070 @ ARM7 control reg. |
580 | b __armv3_cache_off | 580 | b __armv3_mmu_cache_off |
581 | 581 | ||
582 | __armv3_cache_off: | 582 | __armv3_mmu_cache_off: |
583 | mcr p15, 0, r0, c1, c0, 0 @ turn MMU and cache off | 583 | mcr p15, 0, r0, c1, c0, 0 @ turn MMU and cache off |
584 | mov r0, #0 | 584 | mov r0, #0 |
585 | mcr p15, 0, r0, c7, c0, 0 @ invalidate whole cache v3 | 585 | mcr p15, 0, r0, c7, c0, 0 @ invalidate whole cache v3 |
@@ -601,7 +601,7 @@ cache_clean_flush: | |||
601 | mov r3, #16 | 601 | mov r3, #16 |
602 | b call_cache_fn | 602 | b call_cache_fn |
603 | 603 | ||
604 | __armv6_cache_flush: | 604 | __armv6_mmu_cache_flush: |
605 | mov r1, #0 | 605 | mov r1, #0 |
606 | mcr p15, 0, r1, c7, c14, 0 @ clean+invalidate D | 606 | mcr p15, 0, r1, c7, c14, 0 @ clean+invalidate D |
607 | mcr p15, 0, r1, c7, c5, 0 @ invalidate I+BTB | 607 | mcr p15, 0, r1, c7, c5, 0 @ invalidate I+BTB |
@@ -609,7 +609,7 @@ __armv6_cache_flush: | |||
609 | mcr p15, 0, r1, c7, c10, 4 @ drain WB | 609 | mcr p15, 0, r1, c7, c10, 4 @ drain WB |
610 | mov pc, lr | 610 | mov pc, lr |
611 | 611 | ||
612 | __armv4_cache_flush: | 612 | __armv4_mmu_cache_flush: |
613 | mov r2, #64*1024 @ default: 32K dcache size (*2) | 613 | mov r2, #64*1024 @ default: 32K dcache size (*2) |
614 | mov r11, #32 @ default: 32 byte line size | 614 | mov r11, #32 @ default: 32 byte line size |
615 | mrc p15, 0, r3, c0, c0, 1 @ read cache type | 615 | mrc p15, 0, r3, c0, c0, 1 @ read cache type |
@@ -637,7 +637,7 @@ no_cache_id: | |||
637 | mcr p15, 0, r1, c7, c10, 4 @ drain WB | 637 | mcr p15, 0, r1, c7, c10, 4 @ drain WB |
638 | mov pc, lr | 638 | mov pc, lr |
639 | 639 | ||
640 | __armv3_cache_flush: | 640 | __armv3_mmu_cache_flush: |
641 | mov r1, #0 | 641 | mov r1, #0 |
642 | mcr p15, 0, r0, c7, c0, 0 @ invalidate whole cache v3 | 642 | mcr p15, 0, r0, c7, c0, 0 @ invalidate whole cache v3 |
643 | mov pc, lr | 643 | mov pc, lr |
diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S index 84277fe818a1..53b6901f70a6 100644 --- a/arch/arm/kernel/head.S +++ b/arch/arm/kernel/head.S | |||
@@ -81,6 +81,7 @@ | |||
81 | ENTRY(stext) | 81 | ENTRY(stext) |
82 | msr cpsr_c, #PSR_F_BIT | PSR_I_BIT | MODE_SVC @ ensure svc mode | 82 | msr cpsr_c, #PSR_F_BIT | PSR_I_BIT | MODE_SVC @ ensure svc mode |
83 | @ and irqs disabled | 83 | @ and irqs disabled |
84 | mrc p15, 0, r9, c0, c0 @ get processor id | ||
84 | bl __lookup_processor_type @ r5=procinfo r9=cpuid | 85 | bl __lookup_processor_type @ r5=procinfo r9=cpuid |
85 | movs r10, r5 @ invalid processor (r5=0)? | 86 | movs r10, r5 @ invalid processor (r5=0)? |
86 | beq __error_p @ yes, error 'p' | 87 | beq __error_p @ yes, error 'p' |
@@ -155,6 +156,7 @@ ENTRY(secondary_startup) | |||
155 | * as it has already been validated by the primary processor. | 156 | * as it has already been validated by the primary processor. |
156 | */ | 157 | */ |
157 | msr cpsr_c, #PSR_F_BIT | PSR_I_BIT | MODE_SVC | 158 | msr cpsr_c, #PSR_F_BIT | PSR_I_BIT | MODE_SVC |
159 | mrc p15, 0, r9, c0, c0 @ get processor id | ||
158 | bl __lookup_processor_type | 160 | bl __lookup_processor_type |
159 | movs r10, r5 @ invalid processor? | 161 | movs r10, r5 @ invalid processor? |
160 | moveq r0, #'p' @ yes, error 'p' | 162 | moveq r0, #'p' @ yes, error 'p' |
@@ -449,19 +451,19 @@ __error: | |||
449 | * (and therefore, we are not in the correct address space). We have to | 451 | * (and therefore, we are not in the correct address space). We have to |
450 | * calculate the offset. | 452 | * calculate the offset. |
451 | * | 453 | * |
454 | * r9 = cpuid | ||
452 | * Returns: | 455 | * Returns: |
453 | * r3, r4, r6 corrupted | 456 | * r3, r4, r6 corrupted |
454 | * r5 = proc_info pointer in physical address space | 457 | * r5 = proc_info pointer in physical address space |
455 | * r9 = cpuid | 458 | * r9 = cpuid (preserved) |
456 | */ | 459 | */ |
457 | .type __lookup_processor_type, %function | 460 | .type __lookup_processor_type, %function |
458 | __lookup_processor_type: | 461 | __lookup_processor_type: |
459 | adr r3, 3f | 462 | adr r3, 3f |
460 | ldmda r3, {r5, r6, r9} | 463 | ldmda r3, {r5 - r7} |
461 | sub r3, r3, r9 @ get offset between virt&phys | 464 | sub r3, r3, r7 @ get offset between virt&phys |
462 | add r5, r5, r3 @ convert virt addresses to | 465 | add r5, r5, r3 @ convert virt addresses to |
463 | add r6, r6, r3 @ physical address space | 466 | add r6, r6, r3 @ physical address space |
464 | mrc p15, 0, r9, c0, c0 @ get processor id | ||
465 | 1: ldmia r5, {r3, r4} @ value, mask | 467 | 1: ldmia r5, {r3, r4} @ value, mask |
466 | and r4, r4, r9 @ mask wanted bits | 468 | and r4, r4, r9 @ mask wanted bits |
467 | teq r3, r4 | 469 | teq r3, r4 |
@@ -476,10 +478,11 @@ __lookup_processor_type: | |||
476 | * This provides a C-API version of the above function. | 478 | * This provides a C-API version of the above function. |
477 | */ | 479 | */ |
478 | ENTRY(lookup_processor_type) | 480 | ENTRY(lookup_processor_type) |
479 | stmfd sp!, {r4 - r6, r9, lr} | 481 | stmfd sp!, {r4 - r7, r9, lr} |
482 | mov r9, r0 | ||
480 | bl __lookup_processor_type | 483 | bl __lookup_processor_type |
481 | mov r0, r5 | 484 | mov r0, r5 |
482 | ldmfd sp!, {r4 - r6, r9, pc} | 485 | ldmfd sp!, {r4 - r7, r9, pc} |
483 | 486 | ||
484 | /* | 487 | /* |
485 | * Look in include/asm-arm/procinfo.h and arch/arm/kernel/arch.[ch] for | 488 | * Look in include/asm-arm/procinfo.h and arch/arm/kernel/arch.[ch] for |
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c index 08974cbe9824..b7cd280bfd63 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c | |||
@@ -278,7 +278,7 @@ int cpu_architecture(void) | |||
278 | * These functions re-use the assembly code in head.S, which | 278 | * These functions re-use the assembly code in head.S, which |
279 | * already provide the required functionality. | 279 | * already provide the required functionality. |
280 | */ | 280 | */ |
281 | extern struct proc_info_list *lookup_processor_type(void); | 281 | extern struct proc_info_list *lookup_processor_type(unsigned int); |
282 | extern struct machine_desc *lookup_machine_type(unsigned int); | 282 | extern struct machine_desc *lookup_machine_type(unsigned int); |
283 | 283 | ||
284 | static void __init setup_processor(void) | 284 | static void __init setup_processor(void) |
@@ -290,7 +290,7 @@ static void __init setup_processor(void) | |||
290 | * types. The linker builds this table for us from the | 290 | * types. The linker builds this table for us from the |
291 | * entries in arch/arm/mm/proc-*.S | 291 | * entries in arch/arm/mm/proc-*.S |
292 | */ | 292 | */ |
293 | list = lookup_processor_type(); | 293 | list = lookup_processor_type(processor_id); |
294 | if (!list) { | 294 | if (!list) { |
295 | printk("CPU configuration botched (ID %08x), unable " | 295 | printk("CPU configuration botched (ID %08x), unable " |
296 | "to continue.\n", processor_id); | 296 | "to continue.\n", processor_id); |
diff --git a/arch/arm/kernel/sys_arm.c b/arch/arm/kernel/sys_arm.c index a491de2d9024..8170af471439 100644 --- a/arch/arm/kernel/sys_arm.c +++ b/arch/arm/kernel/sys_arm.c | |||
@@ -234,7 +234,12 @@ asmlinkage int sys_ipc(uint call, int first, int second, int third, | |||
234 | */ | 234 | */ |
235 | asmlinkage int sys_fork(struct pt_regs *regs) | 235 | asmlinkage int sys_fork(struct pt_regs *regs) |
236 | { | 236 | { |
237 | #ifdef CONFIG_MMU | ||
237 | return do_fork(SIGCHLD, regs->ARM_sp, regs, 0, NULL, NULL); | 238 | return do_fork(SIGCHLD, regs->ARM_sp, regs, 0, NULL, NULL); |
239 | #else | ||
240 | /* can not support in nommu mode */ | ||
241 | return(-EINVAL); | ||
242 | #endif | ||
238 | } | 243 | } |
239 | 244 | ||
240 | /* Clone a task - this clones the calling program thread. | 245 | /* Clone a task - this clones the calling program thread. |
diff --git a/arch/arm/mach-sa1100/assabet.c b/arch/arm/mach-sa1100/assabet.c index a599bb0d4ab8..c58f12ba7a93 100644 --- a/arch/arm/mach-sa1100/assabet.c +++ b/arch/arm/mach-sa1100/assabet.c | |||
@@ -26,6 +26,7 @@ | |||
26 | #include <asm/irq.h> | 26 | #include <asm/irq.h> |
27 | #include <asm/setup.h> | 27 | #include <asm/setup.h> |
28 | #include <asm/page.h> | 28 | #include <asm/page.h> |
29 | #include <asm/pgtable-hwdef.h> | ||
29 | #include <asm/pgtable.h> | 30 | #include <asm/pgtable.h> |
30 | #include <asm/tlbflush.h> | 31 | #include <asm/tlbflush.h> |
31 | 32 | ||
diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig index eaaec90db972..e680c5fd93b5 100644 --- a/arch/arm/mm/Kconfig +++ b/arch/arm/mm/Kconfig | |||
@@ -266,12 +266,18 @@ config CPU_32v6K | |||
266 | # This defines the compiler instruction set which depends on the machine type. | 266 | # This defines the compiler instruction set which depends on the machine type. |
267 | config CPU_32v3 | 267 | config CPU_32v3 |
268 | bool | 268 | bool |
269 | select TLS_REG_EMUL if SMP | ||
270 | select NEEDS_SYSCALL_FOR_CMPXCHG if SMP | ||
269 | 271 | ||
270 | config CPU_32v4 | 272 | config CPU_32v4 |
271 | bool | 273 | bool |
274 | select TLS_REG_EMUL if SMP | ||
275 | select NEEDS_SYSCALL_FOR_CMPXCHG if SMP | ||
272 | 276 | ||
273 | config CPU_32v5 | 277 | config CPU_32v5 |
274 | bool | 278 | bool |
279 | select TLS_REG_EMUL if SMP | ||
280 | select NEEDS_SYSCALL_FOR_CMPXCHG if SMP | ||
275 | 281 | ||
276 | config CPU_32v6 | 282 | config CPU_32v6 |
277 | bool | 283 | bool |
@@ -417,7 +423,6 @@ config CPU_BPREDICT_DISABLE | |||
417 | 423 | ||
418 | config TLS_REG_EMUL | 424 | config TLS_REG_EMUL |
419 | bool | 425 | bool |
420 | default y if SMP && (CPU_32v5 || CPU_32v4 || CPU_32v3) | ||
421 | help | 426 | help |
422 | An SMP system using a pre-ARMv6 processor (there are apparently | 427 | An SMP system using a pre-ARMv6 processor (there are apparently |
423 | a few prototypes like that in existence) and therefore access to | 428 | a few prototypes like that in existence) and therefore access to |
@@ -436,7 +441,6 @@ config HAS_TLS_REG | |||
436 | 441 | ||
437 | config NEEDS_SYSCALL_FOR_CMPXCHG | 442 | config NEEDS_SYSCALL_FOR_CMPXCHG |
438 | bool | 443 | bool |
439 | default y if SMP && (CPU_32v5 || CPU_32v4 || CPU_32v3) | ||
440 | help | 444 | help |
441 | SMP on a pre-ARMv6 processor? Well OK then. | 445 | SMP on a pre-ARMv6 processor? Well OK then. |
442 | Forget about fast user space cmpxchg support. | 446 | Forget about fast user space cmpxchg support. |
diff --git a/arch/arm/mm/proc-arm1020.S b/arch/arm/mm/proc-arm1020.S index 3aa80094012c..959588884fa5 100644 --- a/arch/arm/mm/proc-arm1020.S +++ b/arch/arm/mm/proc-arm1020.S | |||
@@ -29,6 +29,7 @@ | |||
29 | #include <linux/init.h> | 29 | #include <linux/init.h> |
30 | #include <asm/assembler.h> | 30 | #include <asm/assembler.h> |
31 | #include <asm/asm-offsets.h> | 31 | #include <asm/asm-offsets.h> |
32 | #include <asm/pgtable-hwdef.h> | ||
32 | #include <asm/pgtable.h> | 33 | #include <asm/pgtable.h> |
33 | #include <asm/procinfo.h> | 34 | #include <asm/procinfo.h> |
34 | #include <asm/ptrace.h> | 35 | #include <asm/ptrace.h> |
diff --git a/arch/arm/mm/proc-arm1020e.S b/arch/arm/mm/proc-arm1020e.S index 767d158f211a..be6d081ff2b7 100644 --- a/arch/arm/mm/proc-arm1020e.S +++ b/arch/arm/mm/proc-arm1020e.S | |||
@@ -29,6 +29,7 @@ | |||
29 | #include <linux/init.h> | 29 | #include <linux/init.h> |
30 | #include <asm/assembler.h> | 30 | #include <asm/assembler.h> |
31 | #include <asm/asm-offsets.h> | 31 | #include <asm/asm-offsets.h> |
32 | #include <asm/pgtable-hwdef.h> | ||
32 | #include <asm/pgtable.h> | 33 | #include <asm/pgtable.h> |
33 | #include <asm/procinfo.h> | 34 | #include <asm/procinfo.h> |
34 | #include <asm/ptrace.h> | 35 | #include <asm/ptrace.h> |
diff --git a/arch/arm/mm/proc-arm1022.S b/arch/arm/mm/proc-arm1022.S index 6ca639094d6f..f778545d57a2 100644 --- a/arch/arm/mm/proc-arm1022.S +++ b/arch/arm/mm/proc-arm1022.S | |||
@@ -18,6 +18,7 @@ | |||
18 | #include <linux/init.h> | 18 | #include <linux/init.h> |
19 | #include <asm/assembler.h> | 19 | #include <asm/assembler.h> |
20 | #include <asm/asm-offsets.h> | 20 | #include <asm/asm-offsets.h> |
21 | #include <asm/pgtable-hwdef.h> | ||
21 | #include <asm/pgtable.h> | 22 | #include <asm/pgtable.h> |
22 | #include <asm/procinfo.h> | 23 | #include <asm/procinfo.h> |
23 | #include <asm/ptrace.h> | 24 | #include <asm/ptrace.h> |
diff --git a/arch/arm/mm/proc-arm1026.S b/arch/arm/mm/proc-arm1026.S index 10317e4f55d2..148c111fde73 100644 --- a/arch/arm/mm/proc-arm1026.S +++ b/arch/arm/mm/proc-arm1026.S | |||
@@ -18,6 +18,7 @@ | |||
18 | #include <linux/init.h> | 18 | #include <linux/init.h> |
19 | #include <asm/assembler.h> | 19 | #include <asm/assembler.h> |
20 | #include <asm/asm-offsets.h> | 20 | #include <asm/asm-offsets.h> |
21 | #include <asm/pgtable-hwdef.h> | ||
21 | #include <asm/pgtable.h> | 22 | #include <asm/pgtable.h> |
22 | #include <asm/procinfo.h> | 23 | #include <asm/procinfo.h> |
23 | #include <asm/ptrace.h> | 24 | #include <asm/ptrace.h> |
diff --git a/arch/arm/mm/proc-arm6_7.S b/arch/arm/mm/proc-arm6_7.S index 8e7e1e70ab05..540359b475d0 100644 --- a/arch/arm/mm/proc-arm6_7.S +++ b/arch/arm/mm/proc-arm6_7.S | |||
@@ -14,6 +14,7 @@ | |||
14 | #include <linux/init.h> | 14 | #include <linux/init.h> |
15 | #include <asm/assembler.h> | 15 | #include <asm/assembler.h> |
16 | #include <asm/asm-offsets.h> | 16 | #include <asm/asm-offsets.h> |
17 | #include <asm/pgtable-hwdef.h> | ||
17 | #include <asm/pgtable.h> | 18 | #include <asm/pgtable.h> |
18 | #include <asm/procinfo.h> | 19 | #include <asm/procinfo.h> |
19 | #include <asm/ptrace.h> | 20 | #include <asm/ptrace.h> |
diff --git a/arch/arm/mm/proc-arm720.S b/arch/arm/mm/proc-arm720.S index 471286fdf78f..26f00ee2ad9a 100644 --- a/arch/arm/mm/proc-arm720.S +++ b/arch/arm/mm/proc-arm720.S | |||
@@ -34,6 +34,7 @@ | |||
34 | #include <linux/init.h> | 34 | #include <linux/init.h> |
35 | #include <asm/assembler.h> | 35 | #include <asm/assembler.h> |
36 | #include <asm/asm-offsets.h> | 36 | #include <asm/asm-offsets.h> |
37 | #include <asm/pgtable-hwdef.h> | ||
37 | #include <asm/pgtable.h> | 38 | #include <asm/pgtable.h> |
38 | #include <asm/procinfo.h> | 39 | #include <asm/procinfo.h> |
39 | #include <asm/ptrace.h> | 40 | #include <asm/ptrace.h> |
diff --git a/arch/arm/mm/proc-arm920.S b/arch/arm/mm/proc-arm920.S index 950d3b664c1e..a17f79e0199c 100644 --- a/arch/arm/mm/proc-arm920.S +++ b/arch/arm/mm/proc-arm920.S | |||
@@ -28,6 +28,7 @@ | |||
28 | #include <linux/config.h> | 28 | #include <linux/config.h> |
29 | #include <linux/init.h> | 29 | #include <linux/init.h> |
30 | #include <asm/assembler.h> | 30 | #include <asm/assembler.h> |
31 | #include <asm/pgtable-hwdef.h> | ||
31 | #include <asm/pgtable.h> | 32 | #include <asm/pgtable.h> |
32 | #include <asm/procinfo.h> | 33 | #include <asm/procinfo.h> |
33 | #include <asm/page.h> | 34 | #include <asm/page.h> |
diff --git a/arch/arm/mm/proc-arm922.S b/arch/arm/mm/proc-arm922.S index 410b032faa3b..bbde4a024a48 100644 --- a/arch/arm/mm/proc-arm922.S +++ b/arch/arm/mm/proc-arm922.S | |||
@@ -29,6 +29,7 @@ | |||
29 | #include <linux/config.h> | 29 | #include <linux/config.h> |
30 | #include <linux/init.h> | 30 | #include <linux/init.h> |
31 | #include <asm/assembler.h> | 31 | #include <asm/assembler.h> |
32 | #include <asm/pgtable-hwdef.h> | ||
32 | #include <asm/pgtable.h> | 33 | #include <asm/pgtable.h> |
33 | #include <asm/procinfo.h> | 34 | #include <asm/procinfo.h> |
34 | #include <asm/page.h> | 35 | #include <asm/page.h> |
diff --git a/arch/arm/mm/proc-arm925.S b/arch/arm/mm/proc-arm925.S index 6dd2be7cd050..224ce226a01b 100644 --- a/arch/arm/mm/proc-arm925.S +++ b/arch/arm/mm/proc-arm925.S | |||
@@ -51,6 +51,7 @@ | |||
51 | #include <linux/config.h> | 51 | #include <linux/config.h> |
52 | #include <linux/init.h> | 52 | #include <linux/init.h> |
53 | #include <asm/assembler.h> | 53 | #include <asm/assembler.h> |
54 | #include <asm/pgtable-hwdef.h> | ||
54 | #include <asm/pgtable.h> | 55 | #include <asm/pgtable.h> |
55 | #include <asm/procinfo.h> | 56 | #include <asm/procinfo.h> |
56 | #include <asm/page.h> | 57 | #include <asm/page.h> |
diff --git a/arch/arm/mm/proc-arm926.S b/arch/arm/mm/proc-arm926.S index 022e86842041..4e2a087cf388 100644 --- a/arch/arm/mm/proc-arm926.S +++ b/arch/arm/mm/proc-arm926.S | |||
@@ -28,6 +28,7 @@ | |||
28 | #include <linux/config.h> | 28 | #include <linux/config.h> |
29 | #include <linux/init.h> | 29 | #include <linux/init.h> |
30 | #include <asm/assembler.h> | 30 | #include <asm/assembler.h> |
31 | #include <asm/pgtable-hwdef.h> | ||
31 | #include <asm/pgtable.h> | 32 | #include <asm/pgtable.h> |
32 | #include <asm/procinfo.h> | 33 | #include <asm/procinfo.h> |
33 | #include <asm/page.h> | 34 | #include <asm/page.h> |
diff --git a/arch/arm/mm/proc-sa110.S b/arch/arm/mm/proc-sa110.S index bd330c4075a1..c916a6cae404 100644 --- a/arch/arm/mm/proc-sa110.S +++ b/arch/arm/mm/proc-sa110.S | |||
@@ -18,6 +18,7 @@ | |||
18 | #include <asm/asm-offsets.h> | 18 | #include <asm/asm-offsets.h> |
19 | #include <asm/procinfo.h> | 19 | #include <asm/procinfo.h> |
20 | #include <asm/hardware.h> | 20 | #include <asm/hardware.h> |
21 | #include <asm/pgtable-hwdef.h> | ||
21 | #include <asm/pgtable.h> | 22 | #include <asm/pgtable.h> |
22 | #include <asm/ptrace.h> | 23 | #include <asm/ptrace.h> |
23 | 24 | ||
diff --git a/arch/arm/mm/proc-sa1100.S b/arch/arm/mm/proc-sa1100.S index 91b89124c0d7..41f21f2dd8ff 100644 --- a/arch/arm/mm/proc-sa1100.S +++ b/arch/arm/mm/proc-sa1100.S | |||
@@ -23,6 +23,7 @@ | |||
23 | #include <asm/asm-offsets.h> | 23 | #include <asm/asm-offsets.h> |
24 | #include <asm/procinfo.h> | 24 | #include <asm/procinfo.h> |
25 | #include <asm/hardware.h> | 25 | #include <asm/hardware.h> |
26 | #include <asm/pgtable-hwdef.h> | ||
26 | #include <asm/pgtable.h> | 27 | #include <asm/pgtable.h> |
27 | 28 | ||
28 | /* | 29 | /* |
diff --git a/arch/arm/mm/proc-v6.S b/arch/arm/mm/proc-v6.S index 92f3ca31b7b9..9a7e7c096aa9 100644 --- a/arch/arm/mm/proc-v6.S +++ b/arch/arm/mm/proc-v6.S | |||
@@ -14,6 +14,7 @@ | |||
14 | #include <asm/asm-offsets.h> | 14 | #include <asm/asm-offsets.h> |
15 | #include <asm/hardware/arm_scu.h> | 15 | #include <asm/hardware/arm_scu.h> |
16 | #include <asm/procinfo.h> | 16 | #include <asm/procinfo.h> |
17 | #include <asm/pgtable-hwdef.h> | ||
17 | #include <asm/pgtable.h> | 18 | #include <asm/pgtable.h> |
18 | 19 | ||
19 | #include "proc-macros.S" | 20 | #include "proc-macros.S" |
diff --git a/arch/arm/mm/proc-xscale.S b/arch/arm/mm/proc-xscale.S index b50f87a0ee76..29bcc4dd6517 100644 --- a/arch/arm/mm/proc-xscale.S +++ b/arch/arm/mm/proc-xscale.S | |||
@@ -25,6 +25,7 @@ | |||
25 | #include <asm/assembler.h> | 25 | #include <asm/assembler.h> |
26 | #include <asm/procinfo.h> | 26 | #include <asm/procinfo.h> |
27 | #include <asm/pgtable.h> | 27 | #include <asm/pgtable.h> |
28 | #include <asm/pgtable-hwdef.h> | ||
28 | #include <asm/page.h> | 29 | #include <asm/page.h> |
29 | #include <asm/ptrace.h> | 30 | #include <asm/ptrace.h> |
30 | #include "proc-macros.S" | 31 | #include "proc-macros.S" |