diff options
| -rw-r--r-- | arch/mn10300/include/asm/uaccess.h | 2 | ||||
| -rw-r--r-- | arch/mn10300/kernel/setup.c | 54 |
2 files changed, 22 insertions, 34 deletions
diff --git a/arch/mn10300/include/asm/uaccess.h b/arch/mn10300/include/asm/uaccess.h index 780560b330d9..d7966e0f7698 100644 --- a/arch/mn10300/include/asm/uaccess.h +++ b/arch/mn10300/include/asm/uaccess.h | |||
| @@ -161,7 +161,7 @@ struct __large_struct { unsigned long buf[100]; }; | |||
| 161 | 161 | ||
| 162 | #define __get_user_check(x, ptr, size) \ | 162 | #define __get_user_check(x, ptr, size) \ |
| 163 | ({ \ | 163 | ({ \ |
| 164 | const __typeof__(ptr) __guc_ptr = (ptr); \ | 164 | const __typeof__(*(ptr))* __guc_ptr = (ptr); \ |
| 165 | int _e; \ | 165 | int _e; \ |
| 166 | if (likely(__access_ok((unsigned long) __guc_ptr, (size)))) \ | 166 | if (likely(__access_ok((unsigned long) __guc_ptr, (size)))) \ |
| 167 | _e = __get_user_nocheck((x), __guc_ptr, (size)); \ | 167 | _e = __get_user_nocheck((x), __guc_ptr, (size)); \ |
diff --git a/arch/mn10300/kernel/setup.c b/arch/mn10300/kernel/setup.c index 33c3bd1e5c6d..ebac9c11f796 100644 --- a/arch/mn10300/kernel/setup.c +++ b/arch/mn10300/kernel/setup.c | |||
| @@ -38,6 +38,7 @@ struct mn10300_cpuinfo boot_cpu_data; | |||
| 38 | /* For PCI or other memory-mapped resources */ | 38 | /* For PCI or other memory-mapped resources */ |
| 39 | unsigned long pci_mem_start = 0x18000000; | 39 | unsigned long pci_mem_start = 0x18000000; |
| 40 | 40 | ||
| 41 | static char __initdata cmd_line[COMMAND_LINE_SIZE]; | ||
| 41 | char redboot_command_line[COMMAND_LINE_SIZE] = | 42 | char redboot_command_line[COMMAND_LINE_SIZE] = |
| 42 | "console=ttyS0,115200 root=/dev/mtdblock3 rw"; | 43 | "console=ttyS0,115200 root=/dev/mtdblock3 rw"; |
| 43 | 44 | ||
| @@ -74,45 +75,19 @@ static const char *const mn10300_cputypes[] = { | |||
| 74 | }; | 75 | }; |
| 75 | 76 | ||
| 76 | /* | 77 | /* |
| 77 | * | 78 | * Pick out the memory size. We look for mem=size, |
| 79 | * where size is "size[KkMm]" | ||
| 78 | */ | 80 | */ |
| 79 | static void __init parse_mem_cmdline(char **cmdline_p) | 81 | static int __init early_mem(char *p) |
| 80 | { | 82 | { |
| 81 | char *from, *to, c; | 83 | memory_size = memparse(p, &p); |
| 82 | |||
| 83 | /* save unparsed command line copy for /proc/cmdline */ | ||
| 84 | strcpy(boot_command_line, redboot_command_line); | ||
| 85 | |||
| 86 | /* see if there's an explicit memory size option */ | ||
| 87 | from = redboot_command_line; | ||
| 88 | to = redboot_command_line; | ||
| 89 | c = ' '; | ||
| 90 | |||
| 91 | for (;;) { | ||
| 92 | if (c == ' ' && !memcmp(from, "mem=", 4)) { | ||
| 93 | if (to != redboot_command_line) | ||
| 94 | to--; | ||
| 95 | memory_size = memparse(from + 4, &from); | ||
| 96 | } | ||
| 97 | |||
| 98 | c = *(from++); | ||
| 99 | if (!c) | ||
| 100 | break; | ||
| 101 | |||
| 102 | *(to++) = c; | ||
| 103 | } | ||
| 104 | |||
| 105 | *to = '\0'; | ||
| 106 | *cmdline_p = redboot_command_line; | ||
| 107 | 84 | ||
| 108 | if (memory_size == 0) | 85 | if (memory_size == 0) |
| 109 | panic("Memory size not known\n"); | 86 | panic("Memory size not known\n"); |
| 110 | 87 | ||
| 111 | memory_end = (unsigned long) CONFIG_KERNEL_RAM_BASE_ADDRESS + | 88 | return 0; |
| 112 | memory_size; | ||
| 113 | if (memory_end > phys_memory_end) | ||
| 114 | memory_end = phys_memory_end; | ||
| 115 | } | 89 | } |
| 90 | early_param("mem", early_mem); | ||
| 116 | 91 | ||
| 117 | /* | 92 | /* |
| 118 | * architecture specific setup | 93 | * architecture specific setup |
| @@ -125,7 +100,20 @@ void __init setup_arch(char **cmdline_p) | |||
| 125 | cpu_init(); | 100 | cpu_init(); |
| 126 | unit_setup(); | 101 | unit_setup(); |
| 127 | smp_init_cpus(); | 102 | smp_init_cpus(); |
| 128 | parse_mem_cmdline(cmdline_p); | 103 | |
| 104 | /* save unparsed command line copy for /proc/cmdline */ | ||
| 105 | strlcpy(boot_command_line, redboot_command_line, COMMAND_LINE_SIZE); | ||
| 106 | |||
| 107 | /* populate cmd_line too for later use, preserving boot_command_line */ | ||
| 108 | strlcpy(cmd_line, boot_command_line, COMMAND_LINE_SIZE); | ||
| 109 | *cmdline_p = cmd_line; | ||
| 110 | |||
| 111 | parse_early_param(); | ||
| 112 | |||
| 113 | memory_end = (unsigned long) CONFIG_KERNEL_RAM_BASE_ADDRESS + | ||
| 114 | memory_size; | ||
| 115 | if (memory_end > phys_memory_end) | ||
| 116 | memory_end = phys_memory_end; | ||
| 129 | 117 | ||
| 130 | init_mm.start_code = (unsigned long)&_text; | 118 | init_mm.start_code = (unsigned long)&_text; |
| 131 | init_mm.end_code = (unsigned long) &_etext; | 119 | init_mm.end_code = (unsigned long) &_etext; |
