Serenity Operating System
at master 42 lines 1.3 kB view raw
1/* 2 * Copyright (c) 2020, Andreas Kling <kling@serenityos.org> 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#pragma once 8 9#include "SoftMMU.h" 10 11namespace UserspaceEmulator { 12 13class SimpleRegion final : public Region { 14public: 15 SimpleRegion(u32 base, u32 size); 16 virtual ~SimpleRegion() override; 17 18 virtual ValueWithShadow<u8> read8(u32 offset) override; 19 virtual ValueWithShadow<u16> read16(u32 offset) override; 20 virtual ValueWithShadow<u32> read32(u32 offset) override; 21 virtual ValueWithShadow<u64> read64(u32 offset) override; 22 virtual ValueWithShadow<u128> read128(u32 offset) override; 23 virtual ValueWithShadow<u256> read256(u32 offset) override; 24 25 virtual void write8(u32 offset, ValueWithShadow<u8>) override; 26 virtual void write16(u32 offset, ValueWithShadow<u16>) override; 27 virtual void write32(u32 offset, ValueWithShadow<u32>) override; 28 virtual void write64(u32 offset, ValueWithShadow<u64>) override; 29 virtual void write128(u32 offset, ValueWithShadow<u128>) override; 30 virtual void write256(u32 offset, ValueWithShadow<u256>) override; 31 32 virtual u8* data() override { return m_data; } 33 virtual u8* shadow_data() override { return m_shadow_data; } 34 35 virtual u8* cacheable_ptr(u32 offset) override; 36 37private: 38 u8* m_data { nullptr }; 39 u8* m_shadow_data { nullptr }; 40}; 41 42}