SimpleRegion.h 1.3 KB

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