From c8b3b060aa1c2fd5d4ba89a0f304e27789a2faed Mon Sep 17 00:00:00 2001 From: Sebastian Sumpf Date: Mon, 21 Oct 2019 14:17:17 +0200 Subject: [PATCH] vmm: ARMv8 add 'local_address' to Ram_allocator Ref #3620 --- repos/os/src/server/vmm/spec/arm_v8/ram.h | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/repos/os/src/server/vmm/spec/arm_v8/ram.h b/repos/os/src/server/vmm/spec/arm_v8/ram.h index 9789e6221..8b219f010 100644 --- a/repos/os/src/server/vmm/spec/arm_v8/ram.h +++ b/repos/os/src/server/vmm/spec/arm_v8/ram.h @@ -15,6 +15,7 @@ #define _SRC__SERVER__VMM__RAM_H_ #include +#include class Ram { @@ -34,6 +35,16 @@ class Ram { Genode::addr_t base() const { return _base; } Genode::size_t size() const { return _size; } Genode::addr_t local() const { return _local; } + + Genode::addr_t local_address(Genode::addr_t guest, Genode::size_t size) + { + if (guest < _base || guest >= _base + _size || + size == 0 || guest + size >= _base + _size) + throw Vmm::Exception("Invalid guest physical address: ", + Genode::Hex(guest), " size: ", Genode::Hex(size)); + + return _local + (guest - _base); + } }; #endif /* _SRC__SERVER__VMM__RAM_H_ */