From: James S. <jsi...@us...> - 2002-05-21 04:06:08
|
Update of /cvsroot/linuxconsole/ruby/linux/arch/arm/kernel In directory usw-pr-cvs1:/tmp/cvs-serv29209/linux/arch/arm/kernel Modified Files: armksyms.c setup.c Log Message: Synced to 2.5.16 Index: armksyms.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/arch/arm/kernel/armksyms.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- armksyms.c 24 Apr 2002 18:56:49 -0000 1.4 +++ armksyms.c 21 May 2002 04:06:05 -0000 1.5 @@ -177,7 +177,6 @@ EXPORT_SYMBOL_NOVERS(strlen); EXPORT_SYMBOL_NOVERS(strnlen); EXPORT_SYMBOL_NOVERS(strpbrk); -EXPORT_SYMBOL_NOVERS(strsep); EXPORT_SYMBOL_NOVERS(strrchr); EXPORT_SYMBOL_NOVERS(strstr); EXPORT_SYMBOL_NOVERS(memset); Index: setup.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/arch/arm/kernel/setup.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- setup.c 24 Apr 2002 18:56:50 -0000 1.10 +++ setup.c 21 May 2002 04:06:05 -0000 1.11 @@ -34,10 +34,6 @@ #define MEM_SIZE (16*1024*1024) #endif -#ifndef CONFIG_CMDLINE -#define CONFIG_CMDLINE "" -#endif - #ifdef CONFIG_PREEMPT spinlock_t kernel_flag __cacheline_aligned_in_smp = SPIN_LOCK_UNLOCKED; #endif @@ -56,7 +52,8 @@ extern unsigned int mem_fclk_21285; extern void paging_init(struct meminfo *, struct machine_desc *desc); -extern void convert_to_tag_list(struct param_struct *params, int mem_init); +extern void convert_to_tag_list(struct tag *tags); +extern void squash_mem_tags(struct tag *tag); extern void bootmem_init(struct meminfo *); extern void reboot_setup(char *str); extern int root_mountflags; @@ -515,6 +512,20 @@ __tagtable(ATAG_INITRD, parse_tag_initrd); +static int __init parse_tag_initrd2(const struct tag *tag) +{ + unsigned long start = 0; + + if (tag->u.initrd.size) { + start = (unsigned long)phys_to_virt(tag->u.initrd.start); + + setup_initrd(start, tag->u.initrd.size); + } + return 0; +} + +__tagtable(ATAG_INITRD2, parse_tag_initrd2); + static int __init parse_tag_serialnr(const struct tag *tag) { system_serial_low = tag->u.serialnr.low; @@ -573,14 +584,29 @@ t->hdr.tag); } +/* + * This holds our defaults. + */ +static struct init_tags { + struct tag_header hdr1; + struct tag_core core; + struct tag_header hdr2; + struct tag_mem32 mem; + struct tag_header hdr3; +} init_tags __initdata = { + { tag_size(tag_core), ATAG_CORE }, + { 1, PAGE_SIZE, 0xff }, + { tag_size(tag_mem32), ATAG_MEM }, + { MEM_SIZE, PHYS_OFFSET }, + { 0, ATAG_NONE } +}; + void __init setup_arch(char **cmdline_p) { - struct tag *tags = NULL; + struct tag *tags = (struct tag *)&init_tags; struct machine_desc *mdesc; char *from = default_command_line; - ROOT_DEV = mk_kdev(0, 255); - setup_processor(); mdesc = setup_machine(machine_arch_type); machine_name = mdesc->name; @@ -592,28 +618,21 @@ tags = phys_to_virt(mdesc->param_offset); /* - * Do the machine-specific fixups before we parse the - * parameters or tags. - */ - if (mdesc->fixup) - mdesc->fixup(mdesc, (struct param_struct *)tags, - &from, &meminfo); - - /* * If we have the old style parameters, convert them to - * a tag list before. + * a tag list. */ - if (tags && tags->hdr.tag != ATAG_CORE) - convert_to_tag_list((struct param_struct *)tags, - meminfo.nr_banks == 0); + if (tags->hdr.tag != ATAG_CORE) + convert_to_tag_list(tags); + if (tags->hdr.tag != ATAG_CORE) + tags = (struct tag *)&init_tags; - if (tags && tags->hdr.tag == ATAG_CORE) - parse_tags(tags); + if (mdesc->fixup) + mdesc->fixup(mdesc, tags, &from, &meminfo); - if (meminfo.nr_banks == 0) { - meminfo.nr_banks = 1; - meminfo.bank[0].start = PHYS_OFFSET; - meminfo.bank[0].size = MEM_SIZE; + if (tags->hdr.tag == ATAG_CORE) { + if (meminfo.nr_banks != 0) + squash_mem_tags(tags); + parse_tags(tags); } init_mm.start_code = (unsigned long) &_text; |