diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2005-07-14 11:57:16 -0400 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2005-10-29 14:31:53 -0400 |
commit | e01402b115cccb6357f956649487aca2c6f7fbba (patch) | |
tree | 256e14f8d2762de98b992219b1a47e8f56b4b0da /arch/mips/mips-boards/generic/memory.c | |
parent | 86071b637db7baf599df26fdf820dce2fc55ca9f (diff) |
More AP / SP bits for the 34K, the Malta bits and things. Still wants
a little polishing.
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/mips-boards/generic/memory.c')
-rw-r--r-- | arch/mips/mips-boards/generic/memory.c | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/arch/mips/mips-boards/generic/memory.c b/arch/mips/mips-boards/generic/memory.c index 5ae2b43e4c2e..2c8afd77a20b 100644 --- a/arch/mips/mips-boards/generic/memory.c +++ b/arch/mips/mips-boards/generic/memory.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <linux/init.h> | 22 | #include <linux/init.h> |
23 | #include <linux/mm.h> | 23 | #include <linux/mm.h> |
24 | #include <linux/bootmem.h> | 24 | #include <linux/bootmem.h> |
25 | #include <linux/string.h> | ||
25 | 26 | ||
26 | #include <asm/bootinfo.h> | 27 | #include <asm/bootinfo.h> |
27 | #include <asm/page.h> | 28 | #include <asm/page.h> |
@@ -55,18 +56,30 @@ struct prom_pmemblock * __init prom_getmdesc(void) | |||
55 | { | 56 | { |
56 | char *memsize_str; | 57 | char *memsize_str; |
57 | unsigned int memsize; | 58 | unsigned int memsize; |
59 | char cmdline[CL_SIZE], *ptr; | ||
58 | 60 | ||
59 | memsize_str = prom_getenv("memsize"); | 61 | /* Check the command line first for a memsize directive */ |
60 | if (!memsize_str) { | 62 | strcpy(cmdline, arcs_cmdline); |
61 | prom_printf("memsize not set in boot prom, set to default (32Mb)\n"); | 63 | ptr = strstr(cmdline, "memsize="); |
62 | memsize = 0x02000000; | 64 | if (ptr && (ptr != cmdline) && (*(ptr - 1) != ' ')) |
63 | } else { | 65 | ptr = strstr(ptr, " memsize="); |
66 | |||
67 | if (ptr) { | ||
68 | memsize = memparse(ptr + 8, &ptr); | ||
69 | } | ||
70 | else { | ||
71 | /* otherwise look in the environment */ | ||
72 | memsize_str = prom_getenv("memsize"); | ||
73 | if (!memsize_str) { | ||
74 | prom_printf("memsize not set in boot prom, set to default (32Mb)\n"); | ||
75 | memsize = 0x02000000; | ||
76 | } else { | ||
64 | #ifdef DEBUG | 77 | #ifdef DEBUG |
65 | prom_printf("prom_memsize = %s\n", memsize_str); | 78 | prom_printf("prom_memsize = %s\n", memsize_str); |
66 | #endif | 79 | #endif |
67 | memsize = simple_strtol(memsize_str, NULL, 0); | 80 | memsize = simple_strtol(memsize_str, NULL, 0); |
81 | } | ||
68 | } | 82 | } |
69 | |||
70 | memset(mdesc, 0, sizeof(mdesc)); | 83 | memset(mdesc, 0, sizeof(mdesc)); |
71 | 84 | ||
72 | mdesc[0].type = yamon_dontuse; | 85 | mdesc[0].type = yamon_dontuse; |