memory.h 795 B

12345678910111213141516171819202122232425262728293031323334
  1. // Copyright 2014 Citra Emulator Project
  2. // Licensed under GPLv2 or any later version
  3. // Refer to the license.txt file included.
  4. #pragma once
  5. #include <memory>
  6. #include <vector>
  7. #include "common/common_types.h"
  8. namespace Kernel {
  9. class VMManager;
  10. enum class MemoryRegion : u16;
  11. struct AddressMapping;
  12. struct MemoryRegionInfo {
  13. u64 base; // Not an address, but offset from start of FCRAM
  14. u64 size;
  15. u64 used;
  16. std::shared_ptr<std::vector<u8>> linear_heap_memory;
  17. };
  18. void MemoryInit(u32 mem_type);
  19. void MemoryShutdown();
  20. MemoryRegionInfo* GetMemoryRegion(MemoryRegion region);
  21. void HandleSpecialMapping(VMManager& address_space, const AddressMapping& mapping);
  22. void MapSharedPages(VMManager& address_space);
  23. extern MemoryRegionInfo memory_regions[3];
  24. } // namespace Kernel