yuzu-emu
/
yuzu-mainline
Archived
1
0
Fork 0

hle: kernel: Merge KMemoryRegionAttr and KMemoryRegionType.

- Fixes clang errors with mixed enum arithmetic.
This commit is contained in:
bunnei 2021-03-21 15:53:21 -07:00
parent 3ffbe50e7d
commit 1d78190843
2 changed files with 9 additions and 11 deletions

View File

@ -91,7 +91,7 @@ public:
return (this->GetType() | type) == this->GetType(); return (this->GetType() | type) == this->GetType();
} }
constexpr bool HasTypeAttribute(KMemoryRegionAttr attr) const { constexpr bool HasTypeAttribute(u32 attr) const {
return (this->GetType() | attr) == this->GetType(); return (this->GetType() | attr) == this->GetType();
} }
@ -103,7 +103,7 @@ public:
pair_address = a; pair_address = a;
} }
constexpr void SetTypeAttribute(KMemoryRegionAttr attr) { constexpr void SetTypeAttribute(u32 attr) {
type_id |= attr; type_id |= attr;
} }
@ -237,7 +237,7 @@ public:
return extents; return extents;
} }
DerivedRegionExtents GetDerivedRegionExtents(KMemoryRegionAttr type_id) const { DerivedRegionExtents GetDerivedRegionExtents(u32 type_id) const {
return GetDerivedRegionExtents(static_cast<KMemoryRegionType>(type_id)); return GetDerivedRegionExtents(static_cast<KMemoryRegionType>(type_id));
} }

View File

@ -13,9 +13,7 @@
namespace Kernel { namespace Kernel {
enum KMemoryRegionType : u32 {}; enum KMemoryRegionType : u32 {
enum KMemoryRegionAttr : typename std::underlying_type<KMemoryRegionType>::type {
KMemoryRegionAttr_CarveoutProtected = 0x04000000, KMemoryRegionAttr_CarveoutProtected = 0x04000000,
KMemoryRegionAttr_DidKernelMap = 0x08000000, KMemoryRegionAttr_DidKernelMap = 0x08000000,
KMemoryRegionAttr_ShouldKernelMap = 0x10000000, KMemoryRegionAttr_ShouldKernelMap = 0x10000000,
@ -23,7 +21,7 @@ enum KMemoryRegionAttr : typename std::underlying_type<KMemoryRegionType>::type
KMemoryRegionAttr_NoUserMap = 0x40000000, KMemoryRegionAttr_NoUserMap = 0x40000000,
KMemoryRegionAttr_LinearMapped = 0x80000000, KMemoryRegionAttr_LinearMapped = 0x80000000,
}; };
DECLARE_ENUM_FLAG_OPERATORS(KMemoryRegionAttr); DECLARE_ENUM_FLAG_OPERATORS(KMemoryRegionType);
namespace impl { namespace impl {
@ -82,8 +80,8 @@ public:
return *this; return *this;
} }
constexpr KMemoryRegionTypeValue& SetAttribute(KMemoryRegionAttr attr) { constexpr KMemoryRegionTypeValue& SetAttribute(u32 attr) {
m_value |= static_cast<u32>(attr); m_value |= attr;
return *this; return *this;
} }
@ -95,9 +93,9 @@ public:
return new_type; return new_type;
} }
constexpr KMemoryRegionTypeValue DeriveAttribute(KMemoryRegionAttr attr) const { constexpr KMemoryRegionTypeValue DeriveAttribute(u32 attr) const {
KMemoryRegionTypeValue new_type = *this; KMemoryRegionTypeValue new_type = *this;
new_type.m_value |= static_cast<u32>(attr); new_type.m_value |= attr;
return new_type; return new_type;
} }