patch-2.4.22 linux-2.4.22/arch/arm/mm/init.c
Next file: linux-2.4.22/arch/arm/mm/ioremap.c
Previous file: linux-2.4.22/arch/arm/mm/fault-common.c
Back to the patch index
Back to the overall index
- Lines: 124
- Date:
2003-08-25 04:44:39.000000000 -0700
- Orig file:
linux-2.4.21/arch/arm/mm/init.c
- Orig date:
2001-10-11 09:04:57.000000000 -0700
diff -urN linux-2.4.21/arch/arm/mm/init.c linux-2.4.22/arch/arm/mm/init.c
@@ -1,7 +1,7 @@
/*
* linux/arch/arm/mm/init.c
*
- * Copyright (C) 1995-2000 Russell King
+ * Copyright (C) 1995-2002 Russell King
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
@@ -46,11 +46,13 @@
#define TABLE_OFFSET 0
#endif
-#define TABLE_SIZE ((TABLE_OFFSET + PTRS_PER_PTE) * sizeof(void *))
+#define TABLE_SIZE ((TABLE_OFFSET + PTRS_PER_PTE) * sizeof(pte_t))
static unsigned long totalram_pages;
extern pgd_t swapper_pg_dir[PTRS_PER_PGD];
extern char _stext, _text, _etext, _end, __init_begin, __init_end;
+extern unsigned long phys_initrd_start;
+extern unsigned long phys_initrd_size;
/*
* The sole use of this is to pass memory configuration
@@ -292,6 +294,7 @@
* also get rid of some of the stuff above as well.
*/
max_low_pfn = memend_pfn - O_PFN_DOWN(PHYS_OFFSET);
+// max_pfn = memend_pfn - O_PFN_DOWN(PHYS_OFFSET);
mi->end = memend_pfn << PAGE_SHIFT;
return bootmem_pages;
@@ -302,16 +305,16 @@
int initrd_node = -2;
#ifdef CONFIG_BLK_DEV_INITRD
+ unsigned long end = phys_initrd_start + phys_initrd_size;
+
/*
* Make sure that the initrd is within a valid area of
* memory.
*/
- if (initrd_start) {
- unsigned long phys_initrd_start, phys_initrd_end;
+ if (phys_initrd_size) {
unsigned int i;
- phys_initrd_start = __pa(initrd_start);
- phys_initrd_end = __pa(initrd_end);
+ initrd_node = -1;
for (i = 0; i < mi->nr_banks; i++) {
unsigned long bank_end;
@@ -319,7 +322,7 @@
bank_end = mi->bank[i].start + mi->bank[i].size;
if (mi->bank[i].start <= phys_initrd_start &&
- phys_initrd_end <= bank_end)
+ end <= bank_end)
initrd_node = mi->bank[i].node;
}
}
@@ -327,8 +330,8 @@
if (initrd_node == -1) {
printk(KERN_ERR "initrd (0x%08lx - 0x%08lx) extends beyond "
"physical memory - disabling initrd\n",
- initrd_start, initrd_end);
- initrd_start = initrd_end = 0;
+ phys_initrd_start, end);
+ phys_initrd_start = phys_initrd_size = 0;
}
#endif
@@ -354,7 +357,7 @@
* and can only be in node 0.
*/
reserve_bootmem_node(pgdat, __pa(swapper_pg_dir),
- PTRS_PER_PGD * sizeof(void *));
+ PTRS_PER_PGD * sizeof(pgd_t));
#endif
/*
* And don't forget to reserve the allocator bitmap,
@@ -378,7 +381,7 @@
*/
if (machine_is_archimedes() || machine_is_a5k())
reserve_bootmem_node(pgdat, 0x02000000, 0x00080000);
- if (machine_is_edb7211())
+ if (machine_is_edb7211() || machine_is_fortunet())
reserve_bootmem_node(pgdat, 0xc0000000, 0x00020000);
if (machine_is_p720t())
reserve_bootmem_node(pgdat, PHYS_OFFSET, 0x00014000);
@@ -469,9 +472,12 @@
#ifdef CONFIG_BLK_DEV_INITRD
- if (initrd_node >= 0)
- reserve_bootmem_node(NODE_DATA(initrd_node), __pa(initrd_start),
- initrd_end - initrd_start);
+ if (phys_initrd_size && initrd_node >= 0) {
+ reserve_bootmem_node(NODE_DATA(initrd_node), phys_initrd_start,
+ phys_initrd_size);
+ initrd_start = __phys_to_virt(phys_initrd_start);
+ initrd_end = initrd_start + phys_initrd_size;
+ }
#endif
if (map_pg != bootmap_pfn + bootmap_pages)
@@ -501,6 +507,7 @@
memtable_init(mi);
if (mdesc->map_io)
mdesc->map_io();
+ flush_cache_all();
flush_tlb_all();
/*
@@ -583,7 +590,7 @@
}
if (size && s)
- printk("Freeing %s memory: %dK\n", s, size);
+ printk(KERN_INFO "Freeing %s memory: %dK\n", s, size);
}
/*
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)