|
|
|
@ -22,11 +22,12 @@ using Tegra::Memory::GuestMemoryFlags;
|
|
|
|
|
std::atomic<size_t> MemoryManager::unique_identifier_generator{};
|
|
|
|
|
|
|
|
|
|
MemoryManager::MemoryManager(Core::System& system_, MaxwellDeviceMemoryManager& memory_,
|
|
|
|
|
u64 address_space_bits_, u64 big_page_bits_, u64 page_bits_)
|
|
|
|
|
u64 address_space_bits_, GPUVAddr split_address_, u64 big_page_bits_,
|
|
|
|
|
u64 page_bits_)
|
|
|
|
|
: system{system_}, memory{memory_}, address_space_bits{address_space_bits_},
|
|
|
|
|
page_bits{page_bits_}, big_page_bits{big_page_bits_}, entries{}, big_entries{},
|
|
|
|
|
page_table{address_space_bits, address_space_bits + page_bits - 38,
|
|
|
|
|
page_bits != big_page_bits ? page_bits : 0},
|
|
|
|
|
split_address{split_address_}, page_bits{page_bits_}, big_page_bits{big_page_bits_},
|
|
|
|
|
entries{}, big_entries{}, page_table{address_space_bits, address_space_bits + page_bits - 38,
|
|
|
|
|
page_bits != big_page_bits ? page_bits : 0},
|
|
|
|
|
kind_map{PTEKind::INVALID}, unique_identifier{unique_identifier_generator.fetch_add(
|
|
|
|
|
1, std::memory_order_acq_rel)},
|
|
|
|
|
accumulator{std::make_unique<VideoCommon::InvalidationAccumulator>()} {
|
|
|
|
@ -48,10 +49,10 @@ MemoryManager::MemoryManager(Core::System& system_, MaxwellDeviceMemoryManager&
|
|
|
|
|
entries.resize(page_table_size / 32, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
MemoryManager::MemoryManager(Core::System& system_, u64 address_space_bits_, u64 big_page_bits_,
|
|
|
|
|
u64 page_bits_)
|
|
|
|
|
: MemoryManager(system_, system_.Host1x().MemoryManager(), address_space_bits_, big_page_bits_,
|
|
|
|
|
page_bits_) {}
|
|
|
|
|
MemoryManager::MemoryManager(Core::System& system_, u64 address_space_bits_,
|
|
|
|
|
GPUVAddr split_address_, u64 big_page_bits_, u64 page_bits_)
|
|
|
|
|
: MemoryManager(system_, system_.Host1x().MemoryManager(), address_space_bits_, split_address_,
|
|
|
|
|
big_page_bits_, page_bits_) {}
|
|
|
|
|
|
|
|
|
|
MemoryManager::~MemoryManager() = default;
|
|
|
|
|
|
|
|
|
|