.. | .. |
---|
34 | 34 | */ |
---|
35 | 35 | |
---|
36 | 36 | #include <linux/init.h> |
---|
| 37 | +#include <linux/kernel.h> |
---|
| 38 | +#include <linux/memblock.h> |
---|
| 39 | +#include <linux/sizes.h> |
---|
37 | 40 | #include <linux/string.h> |
---|
38 | 41 | |
---|
39 | 42 | #include <asm/bootinfo.h> |
---|
.. | .. |
---|
76 | 79 | return NULL; |
---|
77 | 80 | } |
---|
78 | 81 | |
---|
| 82 | +void __init prom_init(void) |
---|
| 83 | +{ |
---|
| 84 | + unsigned char *memsize_str; |
---|
| 85 | + unsigned long memsize; |
---|
| 86 | + |
---|
| 87 | + prom_argc = (int)fw_arg0; |
---|
| 88 | + prom_argv = (char **)fw_arg1; |
---|
| 89 | + prom_envp = (char **)fw_arg2; |
---|
| 90 | + |
---|
| 91 | + prom_init_cmdline(); |
---|
| 92 | + |
---|
| 93 | + memsize_str = prom_getenv("memsize"); |
---|
| 94 | + if (!memsize_str || kstrtoul(memsize_str, 0, &memsize)) |
---|
| 95 | + memsize = SZ_64M; /* minimum memsize is 64MB RAM */ |
---|
| 96 | + |
---|
| 97 | + memblock_add(0, memsize); |
---|
| 98 | +} |
---|
| 99 | + |
---|
79 | 100 | static inline unsigned char str2hexnum(unsigned char c) |
---|
80 | 101 | { |
---|
81 | 102 | if (c >= '0' && c <= '9') |
---|