hle: kernel: Add architecture and board specific memory regions.
This commit is contained in:
parent
3fb64da452
commit
c17beefe3d
|
@ -0,0 +1,20 @@
|
||||||
|
// Copyright 2021 yuzu Emulator Project
|
||||||
|
// Licensed under GPLv2 or any later version
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
// All architectures must define NumArchitectureDeviceRegions.
|
||||||
|
constexpr inline const auto NumArchitectureDeviceRegions = 3;
|
||||||
|
|
||||||
|
constexpr inline const auto KMemoryRegionType_Uart =
|
||||||
|
KMemoryRegionType_ArchDeviceBase.DeriveSparse(0, NumArchitectureDeviceRegions, 0);
|
||||||
|
constexpr inline const auto KMemoryRegionType_InterruptCpuInterface =
|
||||||
|
KMemoryRegionType_ArchDeviceBase.DeriveSparse(0, NumArchitectureDeviceRegions, 1)
|
||||||
|
.SetAttribute(KMemoryRegionAttr_NoUserMap);
|
||||||
|
constexpr inline const auto KMemoryRegionType_InterruptDistributor =
|
||||||
|
KMemoryRegionType_ArchDeviceBase.DeriveSparse(0, NumArchitectureDeviceRegions, 2)
|
||||||
|
.SetAttribute(KMemoryRegionAttr_NoUserMap);
|
||||||
|
static_assert(KMemoryRegionType_Uart.GetValue() == (0x1D));
|
||||||
|
static_assert(KMemoryRegionType_InterruptCpuInterface.GetValue() ==
|
||||||
|
(0x2D | KMemoryRegionAttr_NoUserMap));
|
||||||
|
static_assert(KMemoryRegionType_InterruptDistributor.GetValue() ==
|
||||||
|
(0x4D | KMemoryRegionAttr_NoUserMap));
|
|
@ -0,0 +1,52 @@
|
||||||
|
// Copyright 2021 yuzu Emulator Project
|
||||||
|
// Licensed under GPLv2 or any later version
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
// All architectures must define NumBoardDeviceRegions.
|
||||||
|
constexpr inline const auto NumBoardDeviceRegions = 6;
|
||||||
|
// UNUSED: .Derive(NumBoardDeviceRegions, 0);
|
||||||
|
constexpr inline const auto KMemoryRegionType_MemoryController =
|
||||||
|
KMemoryRegionType_BoardDeviceBase.Derive(NumBoardDeviceRegions, 1)
|
||||||
|
.SetAttribute(KMemoryRegionAttr_NoUserMap);
|
||||||
|
constexpr inline const auto KMemoryRegionType_MemoryController1 =
|
||||||
|
KMemoryRegionType_BoardDeviceBase.Derive(NumBoardDeviceRegions, 2)
|
||||||
|
.SetAttribute(KMemoryRegionAttr_NoUserMap);
|
||||||
|
constexpr inline const auto KMemoryRegionType_MemoryController0 =
|
||||||
|
KMemoryRegionType_BoardDeviceBase.Derive(NumBoardDeviceRegions, 3)
|
||||||
|
.SetAttribute(KMemoryRegionAttr_NoUserMap);
|
||||||
|
constexpr inline const auto KMemoryRegionType_PowerManagementController =
|
||||||
|
KMemoryRegionType_BoardDeviceBase.Derive(NumBoardDeviceRegions, 4).DeriveTransition();
|
||||||
|
constexpr inline const auto KMemoryRegionType_LegacyLpsDevices =
|
||||||
|
KMemoryRegionType_BoardDeviceBase.Derive(NumBoardDeviceRegions, 5);
|
||||||
|
static_assert(KMemoryRegionType_MemoryController.GetValue() ==
|
||||||
|
(0x55 | KMemoryRegionAttr_NoUserMap));
|
||||||
|
static_assert(KMemoryRegionType_MemoryController1.GetValue() ==
|
||||||
|
(0x65 | KMemoryRegionAttr_NoUserMap));
|
||||||
|
static_assert(KMemoryRegionType_MemoryController0.GetValue() ==
|
||||||
|
(0x95 | KMemoryRegionAttr_NoUserMap));
|
||||||
|
static_assert(KMemoryRegionType_PowerManagementController.GetValue() == (0x1A5));
|
||||||
|
|
||||||
|
static_assert(KMemoryRegionType_LegacyLpsDevices.GetValue() == 0xC5);
|
||||||
|
|
||||||
|
constexpr inline const auto NumLegacyLpsDevices = 7;
|
||||||
|
constexpr inline const auto KMemoryRegionType_LegacyLpsExceptionVectors =
|
||||||
|
KMemoryRegionType_LegacyLpsDevices.Derive(NumLegacyLpsDevices, 0);
|
||||||
|
constexpr inline const auto KMemoryRegionType_LegacyLpsIram =
|
||||||
|
KMemoryRegionType_LegacyLpsDevices.Derive(NumLegacyLpsDevices, 1);
|
||||||
|
constexpr inline const auto KMemoryRegionType_LegacyLpsFlowController =
|
||||||
|
KMemoryRegionType_LegacyLpsDevices.Derive(NumLegacyLpsDevices, 2);
|
||||||
|
constexpr inline const auto KMemoryRegionType_LegacyLpsPrimaryICtlr =
|
||||||
|
KMemoryRegionType_LegacyLpsDevices.Derive(NumLegacyLpsDevices, 3);
|
||||||
|
constexpr inline const auto KMemoryRegionType_LegacyLpsSemaphore =
|
||||||
|
KMemoryRegionType_LegacyLpsDevices.Derive(NumLegacyLpsDevices, 4);
|
||||||
|
constexpr inline const auto KMemoryRegionType_LegacyLpsAtomics =
|
||||||
|
KMemoryRegionType_LegacyLpsDevices.Derive(NumLegacyLpsDevices, 5);
|
||||||
|
constexpr inline const auto KMemoryRegionType_LegacyLpsClkRst =
|
||||||
|
KMemoryRegionType_LegacyLpsDevices.Derive(NumLegacyLpsDevices, 6);
|
||||||
|
static_assert(KMemoryRegionType_LegacyLpsExceptionVectors.GetValue() == 0x3C5);
|
||||||
|
static_assert(KMemoryRegionType_LegacyLpsIram.GetValue() == 0x5C5);
|
||||||
|
static_assert(KMemoryRegionType_LegacyLpsFlowController.GetValue() == 0x6C5);
|
||||||
|
static_assert(KMemoryRegionType_LegacyLpsPrimaryICtlr.GetValue() == 0x9C5);
|
||||||
|
static_assert(KMemoryRegionType_LegacyLpsSemaphore.GetValue() == 0xAC5);
|
||||||
|
static_assert(KMemoryRegionType_LegacyLpsAtomics.GetValue() == 0xCC5);
|
||||||
|
static_assert(KMemoryRegionType_LegacyLpsClkRst.GetValue() == 0x11C5);
|
Reference in New Issue