static void __init early_print_info(void) { struct meminfo *mi = &bootinfo.mem; struct bootmodules *mods = &bootinfo.modules; int i, nr_rsvd; for ( i = 0; i < mi->nr_banks; i++ ) printk("RAM: %"PRIpaddr" - %"PRIpaddr"\n", mi->bank[i].start, mi->bank[i].start + mi->bank[i].size - 1); printk("\n"); for ( i = 0 ; i < mods->nr_mods; i++ ) printk("MODULE[%d]: %"PRIpaddr" - %"PRIpaddr" %-12s %s\n", i, mods->module[i].start, mods->module[i].start + mods->module[i].size, boot_module_kind_as_string(mods->module[i].kind), mods->module[i].cmdline); nr_rsvd = fdt_num_mem_rsv(device_tree_flattened); for ( i = 0; i < nr_rsvd; i++ ) { paddr_t s, e; if ( fdt_get_mem_rsv(device_tree_flattened, i, &s, &e) < 0 ) continue; /* fdt_get_mem_rsv returns length */ e += s; printk(" RESVD[%d]: %"PRIpaddr" - %"PRIpaddr"\n", i, s, e); } printk("\n"); }
struct bootmodule *add_boot_module(bootmodule_kind kind, paddr_t start, paddr_t size, const char *cmdline) { struct bootmodules *mods = &bootinfo.modules; struct bootmodule *mod; if ( mods->nr_mods == MAX_MODULES ) { printk("Ignoring %s boot module at %"PRIpaddr"-%"PRIpaddr" (too many)\n", boot_module_kind_as_string(kind), start, start + size); return NULL; } mod = &mods->module[mods->nr_mods++]; mod->kind = kind; mod->start = start; mod->size = size; if ( cmdline ) safe_strcpy(mod->cmdline, cmdline); else mod->cmdline[0] = 0; return mod; }