2 changed files with 74 additions and 0 deletions
@ -0,0 +1,73 @@ |
|||
// Copyright 2020 yuzu Emulator Project |
|||
// Licensed under GPLv2 or any later version |
|||
// Refer to the license.txt file included. |
|||
|
|||
#pragma once |
|||
|
|||
#include "common/common_types.h" |
|||
|
|||
namespace Kernel::Memory { |
|||
|
|||
class MemoryRegion final { |
|||
friend class MemoryLayout; |
|||
|
|||
public: |
|||
constexpr PAddr StartAddress() const { |
|||
return start_address; |
|||
} |
|||
|
|||
constexpr PAddr EndAddress() const { |
|||
return end_address; |
|||
} |
|||
|
|||
private: |
|||
constexpr MemoryRegion() = default; |
|||
constexpr MemoryRegion(PAddr start_address, PAddr end_address) |
|||
: start_address{start_address}, end_address{end_address} {} |
|||
|
|||
const PAddr start_address{}; |
|||
const PAddr end_address{}; |
|||
}; |
|||
|
|||
class MemoryLayout final { |
|||
public: |
|||
constexpr const MemoryRegion& Application() const { |
|||
return application; |
|||
} |
|||
|
|||
constexpr const MemoryRegion& Applet() const { |
|||
return applet; |
|||
} |
|||
|
|||
constexpr const MemoryRegion& System() const { |
|||
return system; |
|||
} |
|||
|
|||
static constexpr MemoryLayout GetDefaultLayout() { |
|||
constexpr std::size_t application_size{0xcd500000}; |
|||
constexpr std::size_t applet_size{0x1fb00000}; |
|||
constexpr PAddr application_start_address{Core::DramMemoryMap::End - application_size}; |
|||
constexpr PAddr application_end_address{Core::DramMemoryMap::End}; |
|||
constexpr PAddr applet_start_address{application_start_address - applet_size}; |
|||
constexpr PAddr applet_end_address{applet_start_address + applet_size}; |
|||
constexpr PAddr system_start_address{Core::DramMemoryMap::SlabHeapEnd}; |
|||
constexpr PAddr system_end_address{applet_start_address}; |
|||
return {application_start_address, application_end_address, applet_start_address, |
|||
applet_end_address, system_start_address, system_end_address}; |
|||
} |
|||
|
|||
private: |
|||
constexpr MemoryLayout(PAddr application_start_address, std::size_t application_size, |
|||
PAddr applet_start_address, std::size_t applet_size, |
|||
PAddr system_start_address, std::size_t system_size) |
|||
: application{application_start_address, application_size}, |
|||
applet{applet_start_address, applet_size}, system{system_start_address, system_size} {} |
|||
|
|||
const MemoryRegion application; |
|||
const MemoryRegion applet; |
|||
const MemoryRegion system; |
|||
|
|||
const PAddr start_address{}; |
|||
}; |
|||
|
|||
} // namespace Kernel::Memory |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue