fedora core 2.6.10-1.12-FC2
[linux-2.6.git] / arch / arm / mm / init.c
index d7b4441..51f3be1 100644 (file)
@@ -30,7 +30,7 @@
 DEFINE_PER_CPU(struct mmu_gather, mmu_gathers);
 
 extern pgd_t swapper_pg_dir[PTRS_PER_PGD];
-extern char _stext, _text, _etext, _end, __init_begin, __init_end;
+extern void _stext, _text, _etext, __data_start, _end, __init_begin, __init_end;
 extern unsigned long phys_initrd_start;
 extern unsigned long phys_initrd_size;
 
@@ -282,7 +282,11 @@ static __init void reserve_node_zero(unsigned int bootmap_pfn, unsigned int boot
         * Register the kernel text and data with bootmem.
         * Note that this can only be in node 0.
         */
+#ifdef CONFIG_XIP_KERNEL
+       reserve_bootmem_node(pgdat, __pa(&__data_start), &_end - &__data_start);
+#else
        reserve_bootmem_node(pgdat, __pa(&_stext), &_end - &_stext);
+#endif
 
        /*
         * Reserve the page tables.  These are already in use,
@@ -540,7 +544,7 @@ void __init mem_init(void)
        int i, node;
 
        codepages = &_etext - &_text;
-       datapages = &_end - &_etext;
+       datapages = &_end - &__data_start;
        initpages = &__init_end - &__init_begin;
 
 #ifndef CONFIG_DISCONTIGMEM