aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mm/proc-xscale.S
diff options
context:
space:
mode:
authorRussell King <rmk@dyn-67.arm.linux.org.uk>2006-06-29 13:24:21 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2006-06-29 13:24:21 -0400
commit8799ee9f49f6171fd58f4d64f8c067ca49006a5d (patch)
treeb746b8800bc99633f31505d151624c8ccd75cd47 /arch/arm/mm/proc-xscale.S
parent326764a85b7676388db3ebad6488f312631d7661 (diff)
[ARM] Set bit 4 on section mappings correctly depending on CPU
On some CPUs, bit 4 of section mappings means "update the cache when written to". On others, this bit is required to be one, and others it's required to be zero. Finally, on ARMv6 and above, setting it turns on "no execute" and prevents speculative prefetches. With all these combinations, no one value fits all CPUs, so we have to pick a value depending on the CPU type, and the area we're mapping. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mm/proc-xscale.S')
-rw-r--r--arch/arm/mm/proc-xscale.S39
1 files changed, 38 insertions, 1 deletions
diff --git a/arch/arm/mm/proc-xscale.S b/arch/arm/mm/proc-xscale.S
index 29bcc4dd6517..f4aeb7b06911 100644
--- a/arch/arm/mm/proc-xscale.S
+++ b/arch/arm/mm/proc-xscale.S
@@ -595,6 +595,9 @@ __80200_proc_info:
595 PMD_SECT_CACHEABLE | \ 595 PMD_SECT_CACHEABLE | \
596 PMD_SECT_AP_WRITE | \ 596 PMD_SECT_AP_WRITE | \
597 PMD_SECT_AP_READ 597 PMD_SECT_AP_READ
598 .long PMD_TYPE_SECT | \
599 PMD_SECT_AP_WRITE | \
600 PMD_SECT_AP_READ
598 b __xscale_setup 601 b __xscale_setup
599 .long cpu_arch_name 602 .long cpu_arch_name
600 .long cpu_elf_name 603 .long cpu_elf_name
@@ -615,6 +618,9 @@ __8032x_proc_info:
615 PMD_SECT_CACHEABLE | \ 618 PMD_SECT_CACHEABLE | \
616 PMD_SECT_AP_WRITE | \ 619 PMD_SECT_AP_WRITE | \
617 PMD_SECT_AP_READ 620 PMD_SECT_AP_READ
621 .long PMD_TYPE_SECT | \
622 PMD_SECT_AP_WRITE | \
623 PMD_SECT_AP_READ
618 b __xscale_setup 624 b __xscale_setup
619 .long cpu_arch_name 625 .long cpu_arch_name
620 .long cpu_elf_name 626 .long cpu_elf_name
@@ -635,6 +641,9 @@ __8033x_proc_info:
635 PMD_SECT_CACHEABLE | \ 641 PMD_SECT_CACHEABLE | \
636 PMD_SECT_AP_WRITE | \ 642 PMD_SECT_AP_WRITE | \
637 PMD_SECT_AP_READ 643 PMD_SECT_AP_READ
644 .long PMD_TYPE_SECT | \
645 PMD_SECT_AP_WRITE | \
646 PMD_SECT_AP_READ
638 b __xscale_setup 647 b __xscale_setup
639 .long cpu_arch_name 648 .long cpu_arch_name
640 .long cpu_elf_name 649 .long cpu_elf_name
@@ -655,6 +664,9 @@ __pxa250_proc_info:
655 PMD_SECT_CACHEABLE | \ 664 PMD_SECT_CACHEABLE | \
656 PMD_SECT_AP_WRITE | \ 665 PMD_SECT_AP_WRITE | \
657 PMD_SECT_AP_READ 666 PMD_SECT_AP_READ
667 .long PMD_TYPE_SECT | \
668 PMD_SECT_AP_WRITE | \
669 PMD_SECT_AP_READ
658 b __xscale_setup 670 b __xscale_setup
659 .long cpu_arch_name 671 .long cpu_arch_name
660 .long cpu_elf_name 672 .long cpu_elf_name
@@ -675,6 +687,9 @@ __pxa210_proc_info:
675 PMD_SECT_CACHEABLE | \ 687 PMD_SECT_CACHEABLE | \
676 PMD_SECT_AP_WRITE | \ 688 PMD_SECT_AP_WRITE | \
677 PMD_SECT_AP_READ 689 PMD_SECT_AP_READ
690 .long PMD_TYPE_SECT | \
691 PMD_SECT_AP_WRITE | \
692 PMD_SECT_AP_READ
678 b __xscale_setup 693 b __xscale_setup
679 .long cpu_arch_name 694 .long cpu_arch_name
680 .long cpu_elf_name 695 .long cpu_elf_name
@@ -695,6 +710,9 @@ __ixp2400_proc_info:
695 PMD_SECT_CACHEABLE | \ 710 PMD_SECT_CACHEABLE | \
696 PMD_SECT_AP_WRITE | \ 711 PMD_SECT_AP_WRITE | \
697 PMD_SECT_AP_READ 712 PMD_SECT_AP_READ
713 .long PMD_TYPE_SECT | \
714 PMD_SECT_AP_WRITE | \
715 PMD_SECT_AP_READ
698 b __xscale_setup 716 b __xscale_setup
699 .long cpu_arch_name 717 .long cpu_arch_name
700 .long cpu_elf_name 718 .long cpu_elf_name
@@ -715,6 +733,9 @@ __ixp2800_proc_info:
715 PMD_SECT_CACHEABLE | \ 733 PMD_SECT_CACHEABLE | \
716 PMD_SECT_AP_WRITE | \ 734 PMD_SECT_AP_WRITE | \
717 PMD_SECT_AP_READ 735 PMD_SECT_AP_READ
736 .long PMD_TYPE_SECT | \
737 PMD_SECT_AP_WRITE | \
738 PMD_SECT_AP_READ
718 b __xscale_setup 739 b __xscale_setup
719 .long cpu_arch_name 740 .long cpu_arch_name
720 .long cpu_elf_name 741 .long cpu_elf_name
@@ -735,6 +756,9 @@ __ixp42x_proc_info:
735 PMD_SECT_CACHEABLE | \ 756 PMD_SECT_CACHEABLE | \
736 PMD_SECT_AP_WRITE | \ 757 PMD_SECT_AP_WRITE | \
737 PMD_SECT_AP_READ 758 PMD_SECT_AP_READ
759 .long PMD_TYPE_SECT | \
760 PMD_SECT_AP_WRITE | \
761 PMD_SECT_AP_READ
738 b __xscale_setup 762 b __xscale_setup
739 .long cpu_arch_name 763 .long cpu_arch_name
740 .long cpu_elf_name 764 .long cpu_elf_name
@@ -750,7 +774,14 @@ __ixp42x_proc_info:
750__ixp46x_proc_info: 774__ixp46x_proc_info:
751 .long 0x69054200 775 .long 0x69054200
752 .long 0xffffff00 776 .long 0xffffff00
753 .long 0x00000c0e 777 .long PMD_TYPE_SECT | \
778 PMD_SECT_BUFFERABLE | \
779 PMD_SECT_CACHEABLE | \
780 PMD_SECT_AP_WRITE | \
781 PMD_SECT_AP_READ
782 .long PMD_TYPE_SECT | \
783 PMD_SECT_AP_WRITE | \
784 PMD_SECT_AP_READ
754 b __xscale_setup 785 b __xscale_setup
755 .long cpu_arch_name 786 .long cpu_arch_name
756 .long cpu_elf_name 787 .long cpu_elf_name
@@ -771,6 +802,9 @@ __pxa255_proc_info:
771 PMD_SECT_CACHEABLE | \ 802 PMD_SECT_CACHEABLE | \
772 PMD_SECT_AP_WRITE | \ 803 PMD_SECT_AP_WRITE | \
773 PMD_SECT_AP_READ 804 PMD_SECT_AP_READ
805 .long PMD_TYPE_SECT | \
806 PMD_SECT_AP_WRITE | \
807 PMD_SECT_AP_READ
774 b __xscale_setup 808 b __xscale_setup
775 .long cpu_arch_name 809 .long cpu_arch_name
776 .long cpu_elf_name 810 .long cpu_elf_name
@@ -791,6 +825,9 @@ __pxa270_proc_info:
791 PMD_SECT_CACHEABLE | \ 825 PMD_SECT_CACHEABLE | \
792 PMD_SECT_AP_WRITE | \ 826 PMD_SECT_AP_WRITE | \
793 PMD_SECT_AP_READ 827 PMD_SECT_AP_READ
828 .long PMD_TYPE_SECT | \
829 PMD_SECT_AP_WRITE | \
830 PMD_SECT_AP_READ
794 b __xscale_setup 831 b __xscale_setup
795 .long cpu_arch_name 832 .long cpu_arch_name
796 .long cpu_elf_name 833 .long cpu_elf_name