diff --git a/repos/base-hw/src/core/platform_pd.cc b/repos/base-hw/src/core/platform_pd.cc index b96e1ee8b2..97d3e93977 100644 --- a/repos/base-hw/src/core/platform_pd.cc +++ b/repos/base-hw/src/core/platform_pd.cc @@ -60,6 +60,13 @@ bool Hw::Address_space::insert_translation(addr_t virt, addr_t phys, _tt.insert_translation(virt, phys, size, flags, _tt_alloc); return true; } catch(Hw::Out_of_tables &) { + + /* core/kernel's page-tables should never get flushed */ + if (_tt_phys == Platform::core_page_table()) { + error("core's page-table allocator is empty!"); + return false; + } + flush(platform().vm_start(), platform().vm_size()); } }