Просмотр исходного кода

SVC: Correct some return values in svcGetInfo and added TitleId and PrivilegedProcessId stubs.

# Conflicts:
#	src/core/hle/kernel/svc.cpp
Subv 8 лет назад
Родитель
Сommit
bf0e20c571
1 измененных файлов с 21 добавлено и 6 удалено
  1. 21 6
      src/core/hle/kernel/svc.cpp

+ 21 - 6
src/core/hle/kernel/svc.cpp

@@ -255,8 +255,9 @@ static ResultCode CancelSynchronization(Handle thread_handle) {
 /// Attempts to locks a mutex, creating it if it does not already exist
 /// Attempts to locks a mutex, creating it if it does not already exist
 static ResultCode LockMutex(Handle holding_thread_handle, VAddr mutex_addr,
 static ResultCode LockMutex(Handle holding_thread_handle, VAddr mutex_addr,
                             Handle requesting_thread_handle) {
                             Handle requesting_thread_handle) {
-    LOG_TRACE(Kernel_SVC, "called holding_thread_handle=0x%08X, mutex_addr=0x%llx, "
-                          "requesting_current_thread_handle=0x%08X",
+    LOG_TRACE(Kernel_SVC,
+              "called holding_thread_handle=0x%08X, mutex_addr=0x%llx, "
+              "requesting_current_thread_handle=0x%08X",
               holding_thread_handle, mutex_addr, requesting_thread_handle);
               holding_thread_handle, mutex_addr, requesting_thread_handle);
 
 
     SharedPtr<Thread> holding_thread = g_handle_table.Get<Thread>(holding_thread_handle);
     SharedPtr<Thread> holding_thread = g_handle_table.Get<Thread>(holding_thread_handle);
@@ -304,8 +305,6 @@ static ResultCode GetInfo(u64* result, u64 info_id, u64 handle, u64 info_sub_id)
     LOG_TRACE(Kernel_SVC, "called info_id=0x%X, info_sub_id=0x%X, handle=0x%08X", info_id,
     LOG_TRACE(Kernel_SVC, "called info_id=0x%X, info_sub_id=0x%X, handle=0x%08X", info_id,
               info_sub_id, handle);
               info_sub_id, handle);
 
 
-    ASSERT(handle == 0 || handle == CurrentProcess);
-
     auto& vm_manager = g_current_process->vm_manager;
     auto& vm_manager = g_current_process->vm_manager;
 
 
     switch (static_cast<GetInfoType>(info_id)) {
     switch (static_cast<GetInfoType>(info_id)) {
@@ -321,6 +320,12 @@ static ResultCode GetInfo(u64* result, u64 info_id, u64 handle, u64 info_sub_id)
     case GetInfoType::MapRegionSize:
     case GetInfoType::MapRegionSize:
         *result = vm_manager.GetAddressSpaceSize();
         *result = vm_manager.GetAddressSpaceSize();
         break;
         break;
+    case GetInfoType::HeapRegionBaseAddr:
+        *result = vm_manager.GetNewMapRegionBaseAddr() + vm_manager.GetNewMapRegionSize();
+        break;
+    case GetInfoType::HeapRegionSize:
+        *result = Memory::HEAP_SIZE;
+        break;
     case GetInfoType::TotalMemoryUsage:
     case GetInfoType::TotalMemoryUsage:
         *result = vm_manager.GetTotalMemoryUsage();
         *result = vm_manager.GetTotalMemoryUsage();
         break;
         break;
@@ -345,6 +350,15 @@ static ResultCode GetInfo(u64* result, u64 info_id, u64 handle, u64 info_sub_id)
     case GetInfoType::IsVirtualAddressMemoryEnabled:
     case GetInfoType::IsVirtualAddressMemoryEnabled:
         *result = g_current_process->is_virtual_address_memory_enabled;
         *result = g_current_process->is_virtual_address_memory_enabled;
         break;
         break;
+    case GetInfoType::TitleId:
+        LOG_WARNING(Kernel_SVC, "(STUBBED) Attempted to query titleid, returned 0");
+        *result = 0;
+        break;
+    case GetInfoType::PrivilegedProcessId:
+        LOG_WARNING(Kernel_SVC,
+                    "(STUBBED) Attempted to query priviledged process id bounds, returned 0");
+        *result = 0;
+        break;
     default:
     default:
         UNIMPLEMENTED();
         UNIMPLEMENTED();
     }
     }
@@ -533,8 +547,9 @@ static ResultCode CreateThread(Handle* out_handle, VAddr entry_point, u64 arg, V
 
 
     Core::System::GetInstance().PrepareReschedule();
     Core::System::GetInstance().PrepareReschedule();
 
 
-    LOG_TRACE(Kernel_SVC, "called entrypoint=0x%08X (%s), arg=0x%08X, stacktop=0x%08X, "
-                          "threadpriority=0x%08X, processorid=0x%08X : created handle=0x%08X",
+    LOG_TRACE(Kernel_SVC,
+              "called entrypoint=0x%08X (%s), arg=0x%08X, stacktop=0x%08X, "
+              "threadpriority=0x%08X, processorid=0x%08X : created handle=0x%08X",
               entry_point, name.c_str(), arg, stack_top, priority, processor_id, *out_handle);
               entry_point, name.c_str(), arg, stack_top, priority, processor_id, *out_handle);
 
 
     return RESULT_SUCCESS;
     return RESULT_SUCCESS;