+ /* Get memory map */
+ get_memmap ( &memmap );
+ memset ( mbmemmap, 0, sizeof ( mbmemmap ) );
+ for ( i = 0 ; i < memmap.count ; i++ ) {
+ mbmemmap[i].size = sizeof ( mbmemmap[i] );
+ mbmemmap[i].base_addr = memmap.regions[i].start;
+ mbmemmap[i].length = ( memmap.regions[i].end -
+ memmap.regions[i].start );
+ mbmemmap[i].type = MBMEM_RAM;
+ mbinfo.mmap_length += sizeof ( mbmemmap[i] );
+ if ( memmap.regions[i].start == 0 )
+ mbinfo.mem_lower = memmap.regions[i].end;
+ if ( memmap.regions[i].start == 0x100000 )
+ mbinfo.mem_upper = ( memmap.regions[i].end - 0x100000);
+ }
+ mbinfo.flags |= ( MBI_FLAG_MEM | MBI_FLAG_MMAP );
+ mbinfo.mmap_addr = virt_to_phys ( &mbmemmap[0].base_addr );
+
+ /* Set command line, if present */
+ if ( image->cmdline ) {
+ mbinfo.flags |= MBI_FLAG_CMDLINE;
+ mbinfo.cmdline = virt_to_phys ( image->cmdline );
+ }