sparse_init(); 
void __init setup_arch(char **cmdline_p){	unsigned long max_low_pfn;	memcpy(&boot_cpu_data, &new_cpu_data, sizeof(new_cpu_data));	pre_setup_arch_hook();	early_cpu_init();	/*	 * FIXME: This isn't an official loader_type right	 * now but does currently work with elilo.	 * If we were configured as an EFI kernel, check to make	 * sure that we were loaded correctly from elilo and that	 * the system table is valid.  If not, then initialize normally.	 */#ifdef CONFIG_EFI	if ((LOADER_TYPE == 0x50) && EFI_SYSTAB)		efi_enabled = 1;#endif 	ROOT_DEV = old_decode_dev(ORIG_ROOT_DEV); 	drive_info = DRIVE_INFO; 	screen_info = SCREEN_INFO;	edid_info = EDID_INFO;	apm_info.bios = APM_BIOS_INFO;	ist_info = IST_INFO;	saved_videomode = VIDEO_MODE;	if( SYS_DESC_TABLE.length != 0 ) {		set_mca_bus(SYS_DESC_TABLE.table[3] & 0x2);		machine_id = SYS_DESC_TABLE.table[0];		machine_submodel_id = SYS_DESC_TABLE.table[1];		BIOS_revision = SYS_DESC_TABLE.table[2];	}	bootloader_type = LOADER_TYPE;#ifdef CONFIG_BLK_DEV_RAM	rd_image_start = RAMDISK_FLAGS & RAMDISK_IMAGE_START_MASK;	rd_prompt = ((RAMDISK_FLAGS & RAMDISK_PROMPT_FLAG) != 0);	rd_doload = ((RAMDISK_FLAGS & RAMDISK_LOAD_FLAG) != 0);#endif	ARCH_SETUP	if (efi_enabled)		efi_init();	else {		printk(KERN_INFO "BIOS-provided physical RAM map:\n");		print_memory_map(machine_specific_memory_setup());	}	copy_edd();	if (!MOUNT_ROOT_RDONLY)		root_mountflags &= ~MS_RDONLY;	init_mm.start_code = (unsigned long) _text;	init_mm.end_code = (unsigned long) _etext;	init_mm.end_data = (unsigned long) _edata;	init_mm.brk = init_pg_tables_end + PAGE_OFFSET;	code_resource.start = virt_to_phys(_text);	code_resource.end = virt_to_phys(_etext)-1;	data_resource.start = virt_to_phys(_etext);	data_resource.end = virt_to_phys(_edata)-1;	parse_cmdline_early(cmdline_p);	max_low_pfn = setup_memory();	/*	 * NOTE: before this point _nobody_ is allowed to allocate	 * any memory using the bootmem allocator.  Although the	 * alloctor is now initialised only the first 8Mb of the kernel	 * virtual address space has been mapped.  All allocations before	 * paging_init() has completed must use the alloc_bootmem_low_pages()	 * variant (which allocates DMA'able memory) and care must be taken	 * not to exceed the 8Mb limit.	 */#ifdef CONFIG_SMP	smp_alloc_memory(); /* AP processor realmode stacks in low memory*/#endif	paging_init();	remapped_pgdat_init();	zone_sizes_init();	/*	 * NOTE: at this point the bootmem allocator is fully available.	 */#ifdef CONFIG_EARLY_PRINTK	{		char *s = strstr(*cmdline_p, "earlyprintk=");		if (s) {			extern void setup_early_printk(char *);			setup_early_printk(s);			printk("early console enabled\n");		}	}#endif	dmi_scan_machine();#ifdef CONFIG_X86_GENERICARCH	generic_apic_probe(*cmdline_p);#endif		if (efi_enabled)		efi_map_memmap();#ifdef CONFIG_ACPI_BOOT	/*	 * Parse the ACPI tables for possible boot-time SMP configuration.	 */	acpi_boot_table_init();	acpi_boot_init();#endif#ifdef CONFIG_X86_LOCAL_APIC	if (smp_found_config)		get_smp_config();#endif	register_memory();#ifdef CONFIG_VT#if defined(CONFIG_VGA_CONSOLE)	if (!efi_enabled || (efi_mem_type(0xa0000) != EFI_CONVENTIONAL_MEMORY))		conswitchp = &vga_con;#elif defined(CONFIG_DUMMY_CONSOLE)	conswitchp = &dummy_con;#endif#endif}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/05b79bdcb48c18cd9b580c39e3efb9a1ab078151/setup.c/clean/arch/i386/kernel/setup.c