diff --git a/repos/base-hw/src/bootstrap/spec/x86_64/platform.cc b/repos/base-hw/src/bootstrap/spec/x86_64/platform.cc index 82d3888b5..b81ac5aa8 100644 --- a/repos/base-hw/src/bootstrap/spec/x86_64/platform.cc +++ b/repos/base-hw/src/bootstrap/spec/x86_64/platform.cc @@ -36,7 +36,7 @@ Platform::Board::Board() static constexpr size_t initial_map_max = 1024 * 1024 * 1024; for (unsigned i = 0; true; i++) { - Mmap v = Multiboot_info(__initial_bx).phys_ram(i); + Mmap v(Multiboot_info(__initial_bx).phys_ram_mmap_base(i)); if (!v.base) break; Mmap::Addr::access_t base = v.read(); diff --git a/repos/base-hw/src/core/include/spec/x86_64/multiboot.h b/repos/base-hw/src/core/include/spec/x86_64/multiboot.h index 1ceeb669d..7e6f94928 100644 --- a/repos/base-hw/src/core/include/spec/x86_64/multiboot.h +++ b/repos/base-hw/src/core/include/spec/x86_64/multiboot.h @@ -48,10 +48,10 @@ class Genode::Multiboot_info : Mmio /** * Physical ram regions */ - Mmap phys_ram(unsigned i, bool solely_within_4k_base = true) { + addr_t phys_ram_mmap_base(unsigned i, bool solely_within_4k_base = true) { if (!read()) - return Mmap(0); + return 0; Mmap_length::access_t const mmap_length = read(); Mmap_addr::access_t const mmap_start = read(); @@ -63,21 +63,22 @@ class Genode::Multiboot_info : Mmio if (solely_within_4k_base && (mmap + MMAP_SIZE_OF >= Genode::align_addr(base + 1, 12))) - return Mmap(0); + return 0; Mmap r(mmap); + addr_t last_mmap = mmap; mmap += r.read() + MMAP_SIZE_SIZE_OF; if (r.read() != Mmap::Type::MEMORY) continue; if (i == j) - return r; + return last_mmap; j++; } - return Mmap(0); + return 0; } };