diff options
Diffstat (limited to 'arch/mn10300/kernel/setup.c')
| -rw-r--r-- | arch/mn10300/kernel/setup.c | 58 | 
1 files changed, 21 insertions, 37 deletions
diff --git a/arch/mn10300/kernel/setup.c b/arch/mn10300/kernel/setup.c index 9e7a3209a3e..2ad7f32fa12 100644 --- a/arch/mn10300/kernel/setup.c +++ b/arch/mn10300/kernel/setup.c @@ -26,7 +26,6 @@  #include <asm/processor.h>  #include <linux/console.h>  #include <asm/uaccess.h> -#include <asm/system.h>  #include <asm/setup.h>  #include <asm/io.h>  #include <asm/smp.h> @@ -36,9 +35,7 @@  struct mn10300_cpuinfo boot_cpu_data; -/* For PCI or other memory-mapped resources */ -unsigned long pci_mem_start = 0x18000000; - +static char __initdata cmd_line[COMMAND_LINE_SIZE];  char redboot_command_line[COMMAND_LINE_SIZE] =  	"console=ttyS0,115200 root=/dev/mtdblock3 rw"; @@ -75,45 +72,19 @@ static const char *const mn10300_cputypes[] = {  };  /* - * + * Pick out the memory size.  We look for mem=size, + * where size is "size[KkMm]"   */ -static void __init parse_mem_cmdline(char **cmdline_p) +static int __init early_mem(char *p)  { -	char *from, *to, c; - -	/* save unparsed command line copy for /proc/cmdline */ -	strcpy(boot_command_line, redboot_command_line); - -	/* see if there's an explicit memory size option */ -	from = redboot_command_line; -	to = redboot_command_line; -	c = ' '; - -	for (;;) { -		if (c == ' ' && !memcmp(from, "mem=", 4)) { -			if (to != redboot_command_line) -				to--; -			memory_size = memparse(from + 4, &from); -		} - -		c = *(from++); -		if (!c) -			break; - -		*(to++) = c; -	} - -	*to = '\0'; -	*cmdline_p = redboot_command_line; +	memory_size = memparse(p, &p);  	if (memory_size == 0)  		panic("Memory size not known\n"); -	memory_end = (unsigned long) CONFIG_KERNEL_RAM_BASE_ADDRESS + -		memory_size; -	if (memory_end > phys_memory_end) -		memory_end = phys_memory_end; +	return 0;  } +early_param("mem", early_mem);  /*   * architecture specific setup @@ -126,7 +97,20 @@ void __init setup_arch(char **cmdline_p)  	cpu_init();  	unit_setup();  	smp_init_cpus(); -	parse_mem_cmdline(cmdline_p); + +	/* save unparsed command line copy for /proc/cmdline */ +	strlcpy(boot_command_line, redboot_command_line, COMMAND_LINE_SIZE); + +	/* populate cmd_line too for later use, preserving boot_command_line */ +	strlcpy(cmd_line, boot_command_line, COMMAND_LINE_SIZE); +	*cmdline_p = cmd_line; + +	parse_early_param(); + +	memory_end = (unsigned long) CONFIG_KERNEL_RAM_BASE_ADDRESS + +		memory_size; +	if (memory_end > phys_memory_end) +		memory_end = phys_memory_end;  	init_mm.start_code = (unsigned long)&_text;  	init_mm.end_code = (unsigned long) &_etext;  | 
