aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mm/mmu.c
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2010-05-22 13:18:57 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2010-07-16 06:06:40 -0400
commit98c672cf1fa2a56f6f43e3f48b1208b83845582c (patch)
tree39ac68eb0d260f090cebabff9a2f2cf8c6bcebd2 /arch/arm/mm/mmu.c
parentb65b4781fbd5846a82cdac0c32818af1a7452d1f (diff)
ARM: Move platform memory reservations out of generic code
Move the platform specific bootmem memory reservations out of arch/arm/mm/mmu.c into their respective platform files. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mm/mmu.c')
-rw-r--r--arch/arm/mm/mmu.c63
1 files changed, 3 insertions, 60 deletions
diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c
index ddb1bee6de73..1676d017a93a 100644
--- a/arch/arm/mm/mmu.c
+++ b/arch/arm/mm/mmu.c
@@ -17,7 +17,6 @@
17#include <linux/sort.h> 17#include <linux/sort.h>
18 18
19#include <asm/cputype.h> 19#include <asm/cputype.h>
20#include <asm/mach-types.h>
21#include <asm/sections.h> 20#include <asm/sections.h>
22#include <asm/cachetype.h> 21#include <asm/cachetype.h>
23#include <asm/setup.h> 22#include <asm/setup.h>
@@ -831,8 +830,6 @@ static inline void prepare_page_table(void)
831 */ 830 */
832void __init reserve_special_regions(void) 831void __init reserve_special_regions(void)
833{ 832{
834 unsigned long res_size = 0;
835
836 /* 833 /*
837 * Register the kernel text and data with bootmem. 834 * Register the kernel text and data with bootmem.
838 * Note that this can only be in node 0. 835 * Note that this can only be in node 0.
@@ -850,68 +847,14 @@ void __init reserve_special_regions(void)
850 reserve_bootmem(__pa(swapper_pg_dir), 847 reserve_bootmem(__pa(swapper_pg_dir),
851 PTRS_PER_PGD * sizeof(pgd_t), BOOTMEM_DEFAULT); 848 PTRS_PER_PGD * sizeof(pgd_t), BOOTMEM_DEFAULT);
852 849
853 /*
854 * Hmm... This should go elsewhere, but we really really need to
855 * stop things allocating the low memory; ideally we need a better
856 * implementation of GFP_DMA which does not assume that DMA-able
857 * memory starts at zero.
858 */
859 if (machine_is_integrator() || machine_is_cintegrator())
860 res_size = __pa(swapper_pg_dir) - PHYS_OFFSET;
861
862 /*
863 * These should likewise go elsewhere. They pre-reserve the
864 * screen memory region at the start of main system memory.
865 */
866 if (machine_is_edb7211())
867 res_size = 0x00020000;
868 if (machine_is_p720t())
869 res_size = 0x00014000;
870
871 /* H1940, RX3715 and RX1950 need to reserve this for suspend */
872
873 if (machine_is_h1940() || machine_is_rx3715()
874 || machine_is_rx1950()) {
875 reserve_bootmem(0x30003000, 0x1000, BOOTMEM_DEFAULT);
876 reserve_bootmem(0x30081000, 0x1000, BOOTMEM_DEFAULT);
877 }
878
879 if (machine_is_palmld() || machine_is_palmtx()) {
880 reserve_bootmem(0xa0000000, 0x1000, BOOTMEM_EXCLUSIVE);
881 reserve_bootmem(0xa0200000, 0x1000, BOOTMEM_EXCLUSIVE);
882 }
883
884 if (machine_is_treo680() || machine_is_centro()) {
885 reserve_bootmem(0xa0000000, 0x1000, BOOTMEM_EXCLUSIVE);
886 reserve_bootmem(0xa2000000, 0x1000, BOOTMEM_EXCLUSIVE);
887 }
888
889 if (machine_is_palmt5())
890 reserve_bootmem(0xa0200000, 0x1000, BOOTMEM_EXCLUSIVE);
891
892 /*
893 * U300 - This platform family can share physical memory
894 * between two ARM cpus, one running Linux and the other
895 * running another OS.
896 */
897 if (machine_is_u300()) {
898#ifdef CONFIG_MACH_U300_SINGLE_RAM
899#if ((CONFIG_MACH_U300_ACCESS_MEM_SIZE & 1) == 1) && \
900 CONFIG_MACH_U300_2MB_ALIGNMENT_FIX
901 res_size = 0x00100000;
902#endif
903#endif
904 }
905
906#ifdef CONFIG_SA1111 850#ifdef CONFIG_SA1111
907 /* 851 /*
908 * Because of the SA1111 DMA bug, we want to preserve our 852 * Because of the SA1111 DMA bug, we want to preserve our
909 * precious DMA-able memory... 853 * precious DMA-able memory...
910 */ 854 */
911 res_size = __pa(swapper_pg_dir) - PHYS_OFFSET; 855 reserve_bootmem(PHYS_OFFSET, __pa(swapper_pg_dir) - PHYS_OFFSET,
856 BOOTMEM_DEFAULT);
912#endif 857#endif
913 if (res_size)
914 reserve_bootmem(PHYS_OFFSET, res_size, BOOTMEM_DEFAULT);
915} 858}
916 859
917/* 860/*
@@ -1056,7 +999,7 @@ void __init paging_init(struct machine_desc *mdesc)
1056 sanity_check_meminfo(); 999 sanity_check_meminfo();
1057 prepare_page_table(); 1000 prepare_page_table();
1058 map_lowmem(); 1001 map_lowmem();
1059 bootmem_init(); 1002 bootmem_init(mdesc);
1060 devicemaps_init(mdesc); 1003 devicemaps_init(mdesc);
1061 kmap_init(); 1004 kmap_init();
1062 1005