summaryrefslogtreecommitdiff
path: root/src/common/page_table.h
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2019-03-22 18:41:12 -0400
committerGitHub <noreply@github.com>2019-03-22 18:41:12 -0400
commite5893db3e618fd276733a24eebc0606c5fd1e7f2 (patch)
tree5a3ae98bb04d3fb3f513a51504b63940e70c5130 /src/common/page_table.h
parenta7157fe27de5fc05037ec19e69f14064bd9696da (diff)
parent2117edd0f848cd7bc35bdbb1495ca10649715625 (diff)
Merge pull request #2256 from bunnei/gpu-vmm
gpu: Rewrite MemoryManager based on the VMManager implementation.
Diffstat (limited to 'src/common/page_table.h')
-rw-r--r--src/common/page_table.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/common/page_table.h b/src/common/page_table.h
index 8339f2890..8b8ff0bb8 100644
--- a/src/common/page_table.h
+++ b/src/common/page_table.h
@@ -21,6 +21,8 @@ enum class PageType : u8 {
RasterizerCachedMemory,
/// Page is mapped to a I/O region. Writing and reading to this page is handled by functions.
Special,
+ /// Page is allocated for use.
+ Allocated,
};
struct SpecialRegion {
@@ -66,7 +68,7 @@ struct PageTable {
* Contains MMIO handlers that back memory regions whose entries in the `attribute` vector is
* of type `Special`.
*/
- boost::icl::interval_map<VAddr, std::set<SpecialRegion>> special_regions;
+ boost::icl::interval_map<u64, std::set<SpecialRegion>> special_regions;
/**
* Vector of fine grained page attributes. If it is set to any value other than `Memory`, then
@@ -74,6 +76,8 @@ struct PageTable {
*/
std::vector<PageType> attributes;
+ std::vector<u64> backing_addr;
+
const std::size_t page_size_in_bits{};
};