p->physical   = CONFIG_XIP_PHYS_ADDR & PMD_MASK; 
p->pfn        = __phys_to_pfn(CONFIG_XIP_PHYS_ADDR & PMD_MASK); 
static void __init bootmem_init(struct meminfo *mi){	unsigned long addr, memend_pfn = 0;	int node, initrd_node, i;	/*	 * Invalidate the node number for empty or invalid memory banks	 */	for (i = 0; i < mi->nr_banks; i++)		if (mi->bank[i].size == 0 || mi->bank[i].node >= MAX_NUMNODES)			mi->bank[i].node = -1;	memcpy(&meminfo, mi, sizeof(meminfo));#ifdef CONFIG_XIP_KERNEL#error needs fixing	p->physical   = CONFIG_XIP_PHYS_ADDR & PMD_MASK;	p->virtual    = (unsigned long)&_stext & PMD_MASK;	p->length     = ((unsigned long)&_etext - p->virtual + ~PMD_MASK) & PMD_MASK;	p->type       = MT_ROM;	p ++;#endif	/*	 * Clear out all the mappings below the kernel image.	 * FIXME: what about XIP?	 */	for (addr = 0; addr < PAGE_OFFSET; addr += PGDIR_SIZE)		pmd_clear(pmd_off_k(addr));	/*	 * Clear out all the kernel space mappings, except for the first	 * memory bank, up to the end of the vmalloc region.	 */	for (addr = __phys_to_virt(mi->bank[0].start + mi->bank[0].size);	     addr < VMALLOC_END; addr += PGDIR_SIZE)		pmd_clear(pmd_off_k(addr));	/*	 * Locate which node contains the ramdisk image, if any.	 */	initrd_node = check_initrd(mi);	/*	 * Run through each node initialising the bootmem allocator.	 */	for_each_node(node) {		unsigned long end_pfn;		end_pfn = bootmem_init_node(node, initrd_node, mi);		/*		 * Remember the highest memory PFN.		 */		if (end_pfn > memend_pfn)			memend_pfn = end_pfn;	}	high_memory = __va(memend_pfn << PAGE_SHIFT);	/*	 * This doesn't seem to be used by the Linux memory manager any	 * more, but is used by ll_rw_block.  If we can get rid of it, we	 * also get rid of some of the stuff above as well.	 *	 * Note: max_low_pfn and max_pfn reflect the number of _pages_ in	 * the system, not the maximum PFN.	 */	max_pfn = max_low_pfn = memend_pfn - PHYS_PFN_OFFSET;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/9769c2468d423a1562dd59a5db250bd0a5533ec9/init.c/clean/arch/arm/mm/init.c