| .. | .. |
|---|
| 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') |
|---|