summaryrefslogtreecommitdiff
path: root/src/core/hle/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/hle/kernel')
-rw-r--r--src/core/hle/kernel/hle_ipc.h2
-rw-r--r--src/core/hle/kernel/init/init_slab_setup.cpp2
-rw-r--r--src/core/hle/kernel/k_address_arbiter.h4
-rw-r--r--src/core/hle/kernel/k_address_space_info.cpp4
-rw-r--r--src/core/hle/kernel/k_auto_object.h11
-rw-r--r--src/core/hle/kernel/k_class_token.h1
-rw-r--r--src/core/hle/kernel/k_memory_manager.cpp2
-rw-r--r--src/core/hle/kernel/k_page_table.cpp16
-rw-r--r--src/core/hle/kernel/k_port.cpp2
-rw-r--r--src/core/hle/kernel/k_process.cpp2
-rw-r--r--src/core/hle/kernel/k_server_session.cpp4
-rw-r--r--src/core/hle/kernel/k_thread.cpp2
-rw-r--r--src/core/hle/kernel/kernel.cpp4
-rw-r--r--src/core/hle/kernel/svc.cpp2
14 files changed, 30 insertions, 28 deletions
diff --git a/src/core/hle/kernel/hle_ipc.h b/src/core/hle/kernel/hle_ipc.h
index a427cbc93..0ddc8df9e 100644
--- a/src/core/hle/kernel/hle_ipc.h
+++ b/src/core/hle/kernel/hle_ipc.h
@@ -141,7 +141,7 @@ public:
141 if (index < DomainHandlerCount()) { 141 if (index < DomainHandlerCount()) {
142 domain_handlers[index] = nullptr; 142 domain_handlers[index] = nullptr;
143 } else { 143 } else {
144 UNREACHABLE_MSG("Unexpected handler index {}", index); 144 ASSERT_MSG(false, "Unexpected handler index {}", index);
145 } 145 }
146 } 146 }
147 147
diff --git a/src/core/hle/kernel/init/init_slab_setup.cpp b/src/core/hle/kernel/init/init_slab_setup.cpp
index 34a8be052..9b6b284d0 100644
--- a/src/core/hle/kernel/init/init_slab_setup.cpp
+++ b/src/core/hle/kernel/init/init_slab_setup.cpp
@@ -244,7 +244,7 @@ void InitializeSlabHeaps(Core::System& system, KMemoryLayout& memory_layout) {
244 FOREACH_SLAB_TYPE(INITIALIZE_SLAB_HEAP) 244 FOREACH_SLAB_TYPE(INITIALIZE_SLAB_HEAP)
245 // If we somehow get an invalid type, abort. 245 // If we somehow get an invalid type, abort.
246 default: 246 default:
247 UNREACHABLE_MSG("Unknown slab type: {}", slab_types[i]); 247 ASSERT_MSG(false, "Unknown slab type: {}", slab_types[i]);
248 } 248 }
249 249
250 // If we've hit the end of a gap, free it. 250 // If we've hit the end of a gap, free it.
diff --git a/src/core/hle/kernel/k_address_arbiter.h b/src/core/hle/kernel/k_address_arbiter.h
index e46e0d848..5fa19d386 100644
--- a/src/core/hle/kernel/k_address_arbiter.h
+++ b/src/core/hle/kernel/k_address_arbiter.h
@@ -35,7 +35,7 @@ public:
35 case Svc::SignalType::SignalAndModifyByWaitingCountIfEqual: 35 case Svc::SignalType::SignalAndModifyByWaitingCountIfEqual:
36 return SignalAndModifyByWaitingCountIfEqual(addr, value, count); 36 return SignalAndModifyByWaitingCountIfEqual(addr, value, count);
37 } 37 }
38 UNREACHABLE(); 38 ASSERT(false);
39 return ResultUnknown; 39 return ResultUnknown;
40 } 40 }
41 41
@@ -49,7 +49,7 @@ public:
49 case Svc::ArbitrationType::WaitIfEqual: 49 case Svc::ArbitrationType::WaitIfEqual:
50 return WaitIfEqual(addr, value, timeout); 50 return WaitIfEqual(addr, value, timeout);
51 } 51 }
52 UNREACHABLE(); 52 ASSERT(false);
53 return ResultUnknown; 53 return ResultUnknown;
54 } 54 }
55 55
diff --git a/src/core/hle/kernel/k_address_space_info.cpp b/src/core/hle/kernel/k_address_space_info.cpp
index bc37cadda..3e612a207 100644
--- a/src/core/hle/kernel/k_address_space_info.cpp
+++ b/src/core/hle/kernel/k_address_space_info.cpp
@@ -84,7 +84,7 @@ u64 KAddressSpaceInfo::GetAddressSpaceStart(std::size_t width, Type type) {
84 ASSERT(IsAllowedIndexForAddress(AddressSpaceIndices39Bit[index])); 84 ASSERT(IsAllowedIndexForAddress(AddressSpaceIndices39Bit[index]));
85 return AddressSpaceInfos[AddressSpaceIndices39Bit[index]].address; 85 return AddressSpaceInfos[AddressSpaceIndices39Bit[index]].address;
86 } 86 }
87 UNREACHABLE(); 87 ASSERT(false);
88 return 0; 88 return 0;
89} 89}
90 90
@@ -101,7 +101,7 @@ std::size_t KAddressSpaceInfo::GetAddressSpaceSize(std::size_t width, Type type)
101 ASSERT(IsAllowed39BitType(type)); 101 ASSERT(IsAllowed39BitType(type));
102 return AddressSpaceInfos[AddressSpaceIndices39Bit[index]].size; 102 return AddressSpaceInfos[AddressSpaceIndices39Bit[index]].size;
103 } 103 }
104 UNREACHABLE(); 104 ASSERT(false);
105 return 0; 105 return 0;
106} 106}
107 107
diff --git a/src/core/hle/kernel/k_auto_object.h b/src/core/hle/kernel/k_auto_object.h
index ea47fc600..2827763d5 100644
--- a/src/core/hle/kernel/k_auto_object.h
+++ b/src/core/hle/kernel/k_auto_object.h
@@ -18,7 +18,7 @@ namespace Kernel {
18class KernelCore; 18class KernelCore;
19class KProcess; 19class KProcess;
20 20
21#define KERNEL_AUTOOBJECT_TRAITS(CLASS, BASE_CLASS) \ 21#define KERNEL_AUTOOBJECT_TRAITS_IMPL(CLASS, BASE_CLASS, ATTRIBUTE) \
22 \ 22 \
23private: \ 23private: \
24 friend class ::Kernel::KClassTokenGenerator; \ 24 friend class ::Kernel::KClassTokenGenerator; \
@@ -40,16 +40,19 @@ public:
40 static constexpr const char* GetStaticTypeName() { \ 40 static constexpr const char* GetStaticTypeName() { \
41 return TypeName; \ 41 return TypeName; \
42 } \ 42 } \
43 virtual TypeObj GetTypeObj() const { \ 43 virtual TypeObj GetTypeObj() ATTRIBUTE { \
44 return GetStaticTypeObj(); \ 44 return GetStaticTypeObj(); \
45 } \ 45 } \
46 virtual const char* GetTypeName() const { \ 46 virtual const char* GetTypeName() ATTRIBUTE { \
47 return GetStaticTypeName(); \ 47 return GetStaticTypeName(); \
48 } \ 48 } \
49 \ 49 \
50private: \ 50private: \
51 constexpr bool operator!=(const TypeObj& rhs) 51 constexpr bool operator!=(const TypeObj& rhs)
52 52
53#define KERNEL_AUTOOBJECT_TRAITS(CLASS, BASE_CLASS) \
54 KERNEL_AUTOOBJECT_TRAITS_IMPL(CLASS, BASE_CLASS, const override)
55
53class KAutoObject { 56class KAutoObject {
54protected: 57protected:
55 class TypeObj { 58 class TypeObj {
@@ -82,7 +85,7 @@ protected:
82 }; 85 };
83 86
84private: 87private:
85 KERNEL_AUTOOBJECT_TRAITS(KAutoObject, KAutoObject); 88 KERNEL_AUTOOBJECT_TRAITS_IMPL(KAutoObject, KAutoObject, const);
86 89
87public: 90public:
88 explicit KAutoObject(KernelCore& kernel_) : kernel(kernel_) { 91 explicit KAutoObject(KernelCore& kernel_) : kernel(kernel_) {
diff --git a/src/core/hle/kernel/k_class_token.h b/src/core/hle/kernel/k_class_token.h
index be9e3c357..c9001ae3d 100644
--- a/src/core/hle/kernel/k_class_token.h
+++ b/src/core/hle/kernel/k_class_token.h
@@ -49,6 +49,7 @@ private:
49 } 49 }
50 } 50 }
51 } 51 }
52 UNREACHABLE();
52 }(); 53 }();
53 54
54 template <typename T> 55 template <typename T>
diff --git a/src/core/hle/kernel/k_memory_manager.cpp b/src/core/hle/kernel/k_memory_manager.cpp
index a55db3088..58e540f31 100644
--- a/src/core/hle/kernel/k_memory_manager.cpp
+++ b/src/core/hle/kernel/k_memory_manager.cpp
@@ -29,7 +29,7 @@ constexpr KMemoryManager::Pool GetPoolFromMemoryRegionType(u32 type) {
29 } else if ((type | KMemoryRegionType_DramSystemNonSecurePool) == type) { 29 } else if ((type | KMemoryRegionType_DramSystemNonSecurePool) == type) {
30 return KMemoryManager::Pool::SystemNonSecure; 30 return KMemoryManager::Pool::SystemNonSecure;
31 } else { 31 } else {
32 UNREACHABLE_MSG("InvalidMemoryRegionType for conversion to Pool"); 32 ASSERT_MSG(false, "InvalidMemoryRegionType for conversion to Pool");
33 return {}; 33 return {};
34 } 34 }
35} 35}
diff --git a/src/core/hle/kernel/k_page_table.cpp b/src/core/hle/kernel/k_page_table.cpp
index 68867a2bb..504e22cb9 100644
--- a/src/core/hle/kernel/k_page_table.cpp
+++ b/src/core/hle/kernel/k_page_table.cpp
@@ -35,7 +35,7 @@ constexpr std::size_t GetAddressSpaceWidthFromType(FileSys::ProgramAddressSpaceT
35 case FileSys::ProgramAddressSpaceType::Is39Bit: 35 case FileSys::ProgramAddressSpaceType::Is39Bit:
36 return 39; 36 return 39;
37 default: 37 default:
38 UNREACHABLE(); 38 ASSERT(false);
39 return {}; 39 return {};
40 } 40 }
41} 41}
@@ -128,7 +128,7 @@ ResultCode KPageTable::InitializeForProcess(FileSys::ProgramAddressSpaceType as_
128 const std::size_t needed_size{ 128 const std::size_t needed_size{
129 (alias_region_size + heap_region_size + stack_region_size + kernel_map_region_size)}; 129 (alias_region_size + heap_region_size + stack_region_size + kernel_map_region_size)};
130 if (alloc_size < needed_size) { 130 if (alloc_size < needed_size) {
131 UNREACHABLE(); 131 ASSERT(false);
132 return ResultOutOfMemory; 132 return ResultOutOfMemory;
133 } 133 }
134 134
@@ -1430,7 +1430,7 @@ ResultCode KPageTable::SetProcessMemoryPermission(VAddr addr, std::size_t size,
1430 new_state = KMemoryState::AliasCodeData; 1430 new_state = KMemoryState::AliasCodeData;
1431 break; 1431 break;
1432 default: 1432 default:
1433 UNREACHABLE(); 1433 ASSERT(false);
1434 } 1434 }
1435 } 1435 }
1436 1436
@@ -1823,9 +1823,7 @@ void KPageTable::AddRegionToPages(VAddr start, std::size_t num_pages,
1823 VAddr addr{start}; 1823 VAddr addr{start};
1824 while (addr < start + (num_pages * PageSize)) { 1824 while (addr < start + (num_pages * PageSize)) {
1825 const PAddr paddr{GetPhysicalAddr(addr)}; 1825 const PAddr paddr{GetPhysicalAddr(addr)};
1826 if (!paddr) { 1826 ASSERT(paddr != 0);
1827 UNREACHABLE();
1828 }
1829 page_linked_list.AddBlock(paddr, 1); 1827 page_linked_list.AddBlock(paddr, 1);
1830 addr += PageSize; 1828 addr += PageSize;
1831 } 1829 }
@@ -1856,7 +1854,7 @@ ResultCode KPageTable::Operate(VAddr addr, std::size_t num_pages, const KPageLin
1856 system.Memory().MapMemoryRegion(page_table_impl, addr, size, node.GetAddress()); 1854 system.Memory().MapMemoryRegion(page_table_impl, addr, size, node.GetAddress());
1857 break; 1855 break;
1858 default: 1856 default:
1859 UNREACHABLE(); 1857 ASSERT(false);
1860 } 1858 }
1861 1859
1862 addr += size; 1860 addr += size;
@@ -1887,7 +1885,7 @@ ResultCode KPageTable::Operate(VAddr addr, std::size_t num_pages, KMemoryPermiss
1887 case OperationType::ChangePermissionsAndRefresh: 1885 case OperationType::ChangePermissionsAndRefresh:
1888 break; 1886 break;
1889 default: 1887 default:
1890 UNREACHABLE(); 1888 ASSERT(false);
1891 } 1889 }
1892 return ResultSuccess; 1890 return ResultSuccess;
1893} 1891}
@@ -1924,7 +1922,6 @@ VAddr KPageTable::GetRegionAddress(KMemoryState state) const {
1924 return code_region_start; 1922 return code_region_start;
1925 default: 1923 default:
1926 UNREACHABLE(); 1924 UNREACHABLE();
1927 return {};
1928 } 1925 }
1929} 1926}
1930 1927
@@ -1960,7 +1957,6 @@ std::size_t KPageTable::GetRegionSize(KMemoryState state) const {
1960 return code_region_end - code_region_start; 1957 return code_region_end - code_region_start;
1961 default: 1958 default:
1962 UNREACHABLE(); 1959 UNREACHABLE();
1963 return {};
1964 } 1960 }
1965} 1961}
1966 1962
diff --git a/src/core/hle/kernel/k_port.cpp b/src/core/hle/kernel/k_port.cpp
index a31861cdb..51c2cd1ef 100644
--- a/src/core/hle/kernel/k_port.cpp
+++ b/src/core/hle/kernel/k_port.cpp
@@ -60,7 +60,7 @@ ResultCode KPort::EnqueueSession(KServerSession* session) {
60 if (auto session_ptr = server.GetSessionRequestHandler().lock()) { 60 if (auto session_ptr = server.GetSessionRequestHandler().lock()) {
61 session_ptr->ClientConnected(server.AcceptSession()); 61 session_ptr->ClientConnected(server.AcceptSession());
62 } else { 62 } else {
63 UNREACHABLE(); 63 ASSERT(false);
64 } 64 }
65 65
66 return ResultSuccess; 66 return ResultSuccess;
diff --git a/src/core/hle/kernel/k_process.cpp b/src/core/hle/kernel/k_process.cpp
index dcfeacccd..8c79b4f0f 100644
--- a/src/core/hle/kernel/k_process.cpp
+++ b/src/core/hle/kernel/k_process.cpp
@@ -350,7 +350,7 @@ ResultCode KProcess::LoadFromMetadata(const FileSys::ProgramMetadata& metadata,
350 break; 350 break;
351 351
352 default: 352 default:
353 UNREACHABLE(); 353 ASSERT(false);
354 } 354 }
355 355
356 // Create TLS region 356 // Create TLS region
diff --git a/src/core/hle/kernel/k_server_session.cpp b/src/core/hle/kernel/k_server_session.cpp
index 7e39f6d50..60f8ed470 100644
--- a/src/core/hle/kernel/k_server_session.cpp
+++ b/src/core/hle/kernel/k_server_session.cpp
@@ -97,13 +97,13 @@ ResultCode KServerSession::HandleDomainSyncRequest(Kernel::HLERequestContext& co
97 "object_id {} is too big! This probably means a recent service call " 97 "object_id {} is too big! This probably means a recent service call "
98 "to {} needed to return a new interface!", 98 "to {} needed to return a new interface!",
99 object_id, name); 99 object_id, name);
100 UNREACHABLE(); 100 ASSERT(false);
101 return ResultSuccess; // Ignore error if asserts are off 101 return ResultSuccess; // Ignore error if asserts are off
102 } 102 }
103 if (auto strong_ptr = manager->DomainHandler(object_id - 1).lock()) { 103 if (auto strong_ptr = manager->DomainHandler(object_id - 1).lock()) {
104 return strong_ptr->HandleSyncRequest(*this, context); 104 return strong_ptr->HandleSyncRequest(*this, context);
105 } else { 105 } else {
106 UNREACHABLE(); 106 ASSERT(false);
107 return ResultSuccess; 107 return ResultSuccess;
108 } 108 }
109 109
diff --git a/src/core/hle/kernel/k_thread.cpp b/src/core/hle/kernel/k_thread.cpp
index 940334f59..ea2160099 100644
--- a/src/core/hle/kernel/k_thread.cpp
+++ b/src/core/hle/kernel/k_thread.cpp
@@ -133,7 +133,7 @@ ResultCode KThread::Initialize(KThreadFunction func, uintptr_t arg, VAddr user_s
133 UNIMPLEMENTED(); 133 UNIMPLEMENTED();
134 break; 134 break;
135 default: 135 default:
136 UNREACHABLE_MSG("KThread::Initialize: Unknown ThreadType {}", static_cast<u32>(type)); 136 ASSERT_MSG(false, "KThread::Initialize: Unknown ThreadType {}", static_cast<u32>(type));
137 break; 137 break;
138 } 138 }
139 thread_type = type; 139 thread_type = type;
diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp
index 7eb961912..b2c4f12b4 100644
--- a/src/core/hle/kernel/kernel.cpp
+++ b/src/core/hle/kernel/kernel.cpp
@@ -212,7 +212,9 @@ struct KernelCore::Impl {
212 system_resource_limit = KResourceLimit::Create(system.Kernel()); 212 system_resource_limit = KResourceLimit::Create(system.Kernel());
213 system_resource_limit->Initialize(&core_timing); 213 system_resource_limit->Initialize(&core_timing);
214 214
215 const auto [total_size, kernel_size] = memory_layout->GetTotalAndKernelMemorySizes(); 215 const auto sizes{memory_layout->GetTotalAndKernelMemorySizes()};
216 const auto total_size{sizes.first};
217 const auto kernel_size{sizes.second};
216 218
217 // If setting the default system values fails, then something seriously wrong has occurred. 219 // If setting the default system values fails, then something seriously wrong has occurred.
218 ASSERT(system_resource_limit->SetLimitValue(LimitableResource::PhysicalMemory, total_size) 220 ASSERT(system_resource_limit->SetLimitValue(LimitableResource::PhysicalMemory, total_size)
diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp
index 66e0ce2d0..584fa5b1c 100644
--- a/src/core/hle/kernel/svc.cpp
+++ b/src/core/hle/kernel/svc.cpp
@@ -1876,7 +1876,7 @@ static void SleepThread(Core::System& system, s64 nanoseconds) {
1876 KScheduler::YieldToAnyThread(kernel); 1876 KScheduler::YieldToAnyThread(kernel);
1877 } else { 1877 } else {
1878 // Nintendo does nothing at all if an otherwise invalid value is passed. 1878 // Nintendo does nothing at all if an otherwise invalid value is passed.
1879 UNREACHABLE_MSG("Unimplemented sleep yield type '{:016X}'!", nanoseconds); 1879 ASSERT_MSG(false, "Unimplemented sleep yield type '{:016X}'!", nanoseconds);
1880 } 1880 }
1881} 1881}
1882 1882