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.cpp2
-rw-r--r--src/core/hle/kernel/server_session.cpp2
-rw-r--r--src/core/hle/kernel/shared_memory.cpp4
-rw-r--r--src/core/hle/kernel/svc.cpp53
-rw-r--r--src/core/hle/kernel/thread.cpp2
-rw-r--r--src/core/hle/kernel/vm_manager.cpp10
6 files changed, 35 insertions, 38 deletions
diff --git a/src/core/hle/kernel/hle_ipc.cpp b/src/core/hle/kernel/hle_ipc.cpp
index 5ac3227d1..609cdbff2 100644
--- a/src/core/hle/kernel/hle_ipc.cpp
+++ b/src/core/hle/kernel/hle_ipc.cpp
@@ -280,7 +280,7 @@ size_t HLERequestContext::WriteBuffer(const void* buffer, size_t size, int buffe
280 const size_t buffer_size{GetWriteBufferSize(buffer_index)}; 280 const size_t buffer_size{GetWriteBufferSize(buffer_index)};
281 if (size > buffer_size) { 281 if (size > buffer_size) {
282 LOG_CRITICAL(Core, "size ({:016X}) is greater than buffer_size ({:016X})", size, 282 LOG_CRITICAL(Core, "size ({:016X}) is greater than buffer_size ({:016X})", size,
283 buffer_size); 283 buffer_size);
284 size = buffer_size; // TODO(bunnei): This needs to be HW tested 284 size = buffer_size; // TODO(bunnei): This needs to be HW tested
285 } 285 }
286 286
diff --git a/src/core/hle/kernel/server_session.cpp b/src/core/hle/kernel/server_session.cpp
index 29fecef20..0d5cba1d9 100644
--- a/src/core/hle/kernel/server_session.cpp
+++ b/src/core/hle/kernel/server_session.cpp
@@ -82,7 +82,7 @@ ResultCode ServerSession::HandleDomainSyncRequest(Kernel::HLERequestContext& con
82 } 82 }
83 83
84 LOG_CRITICAL(IPC, "Unknown domain command={}", 84 LOG_CRITICAL(IPC, "Unknown domain command={}",
85 static_cast<int>(domain_message_header->command.Value())); 85 static_cast<int>(domain_message_header->command.Value()));
86 ASSERT(false); 86 ASSERT(false);
87 } 87 }
88 88
diff --git a/src/core/hle/kernel/shared_memory.cpp b/src/core/hle/kernel/shared_memory.cpp
index 80fa81abd..93f7f2772 100644
--- a/src/core/hle/kernel/shared_memory.cpp
+++ b/src/core/hle/kernel/shared_memory.cpp
@@ -108,7 +108,7 @@ ResultCode SharedMemory::Map(Process* target_process, VAddr address, MemoryPermi
108 // Error out if the requested permissions don't match what the creator process allows. 108 // Error out if the requested permissions don't match what the creator process allows.
109 if (static_cast<u32>(permissions) & ~static_cast<u32>(own_other_permissions)) { 109 if (static_cast<u32>(permissions) & ~static_cast<u32>(own_other_permissions)) {
110 LOG_ERROR(Kernel, "cannot map id={}, address=0x{:X} name={}, permissions don't match", 110 LOG_ERROR(Kernel, "cannot map id={}, address=0x{:X} name={}, permissions don't match",
111 GetObjectId(), address, name); 111 GetObjectId(), address, name);
112 return ERR_INVALID_COMBINATION; 112 return ERR_INVALID_COMBINATION;
113 } 113 }
114 114
@@ -116,7 +116,7 @@ ResultCode SharedMemory::Map(Process* target_process, VAddr address, MemoryPermi
116 if (other_permissions != MemoryPermission::DontCare && 116 if (other_permissions != MemoryPermission::DontCare &&
117 static_cast<u32>(this->permissions) & ~static_cast<u32>(other_permissions)) { 117 static_cast<u32>(this->permissions) & ~static_cast<u32>(other_permissions)) {
118 LOG_ERROR(Kernel, "cannot map id={}, address=0x{:X} name={}, permissions don't match", 118 LOG_ERROR(Kernel, "cannot map id={}, address=0x{:X} name={}, permissions don't match",
119 GetObjectId(), address, name); 119 GetObjectId(), address, name);
120 return ERR_WRONG_PERMISSION; 120 return ERR_WRONG_PERMISSION;
121 } 121 }
122 122
diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp
index 843fffd7e..5ad923fe7 100644
--- a/src/core/hle/kernel/svc.cpp
+++ b/src/core/hle/kernel/svc.cpp
@@ -47,14 +47,14 @@ static ResultCode SetMemoryAttribute(VAddr addr, u64 size, u32 state0, u32 state
47/// Maps a memory range into a different range. 47/// Maps a memory range into a different range.
48static ResultCode MapMemory(VAddr dst_addr, VAddr src_addr, u64 size) { 48static ResultCode MapMemory(VAddr dst_addr, VAddr src_addr, u64 size) {
49 LOG_TRACE(Kernel_SVC, "called, dst_addr=0x{:X}, src_addr=0x{:X}, size=0x{:X}", dst_addr, 49 LOG_TRACE(Kernel_SVC, "called, dst_addr=0x{:X}, src_addr=0x{:X}, size=0x{:X}", dst_addr,
50 src_addr, size); 50 src_addr, size);
51 return Core::CurrentProcess()->MirrorMemory(dst_addr, src_addr, size); 51 return Core::CurrentProcess()->MirrorMemory(dst_addr, src_addr, size);
52} 52}
53 53
54/// Unmaps a region that was previously mapped with svcMapMemory 54/// Unmaps a region that was previously mapped with svcMapMemory
55static ResultCode UnmapMemory(VAddr dst_addr, VAddr src_addr, u64 size) { 55static ResultCode UnmapMemory(VAddr dst_addr, VAddr src_addr, u64 size) {
56 LOG_TRACE(Kernel_SVC, "called, dst_addr=0x{:X}, src_addr=0x{:X}, size=0x{:X}", dst_addr, 56 LOG_TRACE(Kernel_SVC, "called, dst_addr=0x{:X}, src_addr=0x{:X}, size=0x{:X}", dst_addr,
57 src_addr, size); 57 src_addr, size);
58 return Core::CurrentProcess()->UnmapMemory(dst_addr, src_addr, size); 58 return Core::CurrentProcess()->UnmapMemory(dst_addr, src_addr, size);
59} 59}
60 60
@@ -150,7 +150,7 @@ static bool DefaultThreadWakeupCallback(ThreadWakeupReason reason, SharedPtr<Thr
150static ResultCode WaitSynchronization(Handle* index, VAddr handles_address, u64 handle_count, 150static ResultCode WaitSynchronization(Handle* index, VAddr handles_address, u64 handle_count,
151 s64 nano_seconds) { 151 s64 nano_seconds) {
152 LOG_TRACE(Kernel_SVC, "called handles_address=0x{:X}, handle_count={}, nano_seconds={}", 152 LOG_TRACE(Kernel_SVC, "called handles_address=0x{:X}, handle_count={}, nano_seconds={}",
153 handles_address, handle_count, nano_seconds); 153 handles_address, handle_count, nano_seconds);
154 154
155 if (!Memory::IsValidVirtualAddress(handles_address)) 155 if (!Memory::IsValidVirtualAddress(handles_address))
156 return ERR_INVALID_POINTER; 156 return ERR_INVALID_POINTER;
@@ -228,9 +228,9 @@ static ResultCode CancelSynchronization(Handle thread_handle) {
228static ResultCode ArbitrateLock(Handle holding_thread_handle, VAddr mutex_addr, 228static ResultCode ArbitrateLock(Handle holding_thread_handle, VAddr mutex_addr,
229 Handle requesting_thread_handle) { 229 Handle requesting_thread_handle) {
230 LOG_TRACE(Kernel_SVC, 230 LOG_TRACE(Kernel_SVC,
231 "called holding_thread_handle=0x{:08X}, mutex_addr=0x{:X}, " 231 "called holding_thread_handle=0x{:08X}, mutex_addr=0x{:X}, "
232 "requesting_current_thread_handle=0x{:08X}", 232 "requesting_current_thread_handle=0x{:08X}",
233 holding_thread_handle, mutex_addr, requesting_thread_handle); 233 holding_thread_handle, mutex_addr, requesting_thread_handle);
234 234
235 return Mutex::TryAcquire(mutex_addr, holding_thread_handle, requesting_thread_handle); 235 return Mutex::TryAcquire(mutex_addr, holding_thread_handle, requesting_thread_handle);
236} 236}
@@ -258,7 +258,7 @@ static void OutputDebugString(VAddr address, s32 len) {
258/// Gets system/memory information for the current process 258/// Gets system/memory information for the current process
259static ResultCode GetInfo(u64* result, u64 info_id, u64 handle, u64 info_sub_id) { 259static ResultCode GetInfo(u64* result, u64 info_id, u64 handle, u64 info_sub_id) {
260 LOG_TRACE(Kernel_SVC, "called info_id=0x{:X}, info_sub_id=0x{:X}, handle=0x{:08X}", info_id, 260 LOG_TRACE(Kernel_SVC, "called info_id=0x{:X}, info_sub_id=0x{:X}, handle=0x{:08X}", info_id,
261 info_sub_id, handle); 261 info_sub_id, handle);
262 262
263 auto& vm_manager = Core::CurrentProcess()->vm_manager; 263 auto& vm_manager = Core::CurrentProcess()->vm_manager;
264 264
@@ -314,12 +314,12 @@ static ResultCode GetInfo(u64* result, u64 info_id, u64 handle, u64 info_sub_id)
314 break; 314 break;
315 case GetInfoType::PrivilegedProcessId: 315 case GetInfoType::PrivilegedProcessId:
316 LOG_WARNING(Kernel_SVC, 316 LOG_WARNING(Kernel_SVC,
317 "(STUBBED) Attempted to query privileged process id bounds, returned 0"); 317 "(STUBBED) Attempted to query privileged process id bounds, returned 0");
318 *result = 0; 318 *result = 0;
319 break; 319 break;
320 case GetInfoType::UserExceptionContextAddr: 320 case GetInfoType::UserExceptionContextAddr:
321 LOG_WARNING(Kernel_SVC, 321 LOG_WARNING(Kernel_SVC,
322 "(STUBBED) Attempted to query user exception context address, returned 0"); 322 "(STUBBED) Attempted to query user exception context address, returned 0");
323 *result = 0; 323 *result = 0;
324 break; 324 break;
325 default: 325 default:
@@ -331,8 +331,7 @@ static ResultCode GetInfo(u64* result, u64 info_id, u64 handle, u64 info_sub_id)
331 331
332/// Sets the thread activity 332/// Sets the thread activity
333static ResultCode SetThreadActivity(Handle handle, u32 unknown) { 333static ResultCode SetThreadActivity(Handle handle, u32 unknown) {
334 LOG_WARNING(Kernel_SVC, "(STUBBED) called, handle=0x{:08X}, unknown=0x{:08X}", handle, 334 LOG_WARNING(Kernel_SVC, "(STUBBED) called, handle=0x{:08X}, unknown=0x{:08X}", handle, unknown);
335 unknown);
336 return RESULT_SUCCESS; 335 return RESULT_SUCCESS;
337} 336}
338 337
@@ -383,10 +382,9 @@ static u32 GetCurrentProcessorNumber() {
383 382
384static ResultCode MapSharedMemory(Handle shared_memory_handle, VAddr addr, u64 size, 383static ResultCode MapSharedMemory(Handle shared_memory_handle, VAddr addr, u64 size,
385 u32 permissions) { 384 u32 permissions) {
386 LOG_TRACE( 385 LOG_TRACE(Kernel_SVC,
387 Kernel_SVC, 386 "called, shared_memory_handle=0x{:X}, addr=0x{:X}, size=0x{:X}, permissions=0x{:08X}",
388 "called, shared_memory_handle=0x{:X}, addr=0x{:X}, size=0x{:X}, permissions=0x{:08X}", 387 shared_memory_handle, addr, size, permissions);
389 shared_memory_handle, addr, size, permissions);
390 388
391 SharedPtr<SharedMemory> shared_memory = g_handle_table.Get<SharedMemory>(shared_memory_handle); 389 SharedPtr<SharedMemory> shared_memory = g_handle_table.Get<SharedMemory>(shared_memory_handle);
392 if (!shared_memory) { 390 if (!shared_memory) {
@@ -414,7 +412,7 @@ static ResultCode MapSharedMemory(Handle shared_memory_handle, VAddr addr, u64 s
414 412
415static ResultCode UnmapSharedMemory(Handle shared_memory_handle, VAddr addr, u64 size) { 413static ResultCode UnmapSharedMemory(Handle shared_memory_handle, VAddr addr, u64 size) {
416 LOG_WARNING(Kernel_SVC, "called, shared_memory_handle=0x{:08X}, addr=0x{:X}, size=0x{:X}", 414 LOG_WARNING(Kernel_SVC, "called, shared_memory_handle=0x{:08X}, addr=0x{:X}, size=0x{:X}",
417 shared_memory_handle, addr, size); 415 shared_memory_handle, addr, size);
418 416
419 SharedPtr<SharedMemory> shared_memory = g_handle_table.Get<SharedMemory>(shared_memory_handle); 417 SharedPtr<SharedMemory> shared_memory = g_handle_table.Get<SharedMemory>(shared_memory_handle);
420 418
@@ -531,9 +529,9 @@ static ResultCode CreateThread(Handle* out_handle, VAddr entry_point, u64 arg, V
531 Core::System::GetInstance().CpuCore(thread->processor_id).PrepareReschedule(); 529 Core::System::GetInstance().CpuCore(thread->processor_id).PrepareReschedule();
532 530
533 LOG_TRACE(Kernel_SVC, 531 LOG_TRACE(Kernel_SVC,
534 "called entrypoint=0x{:08X} ({}), arg=0x{:08X}, stacktop=0x{:08X}, " 532 "called entrypoint=0x{:08X} ({}), arg=0x{:08X}, stacktop=0x{:08X}, "
535 "threadpriority=0x{:08X}, processorid=0x{:08X} : created handle=0x{:08X}", 533 "threadpriority=0x{:08X}, processorid=0x{:08X} : created handle=0x{:08X}",
536 entry_point, name, arg, stack_top, priority, processor_id, *out_handle); 534 entry_point, name, arg, stack_top, priority, processor_id, *out_handle);
537 535
538 return RESULT_SUCCESS; 536 return RESULT_SUCCESS;
539} 537}
@@ -612,7 +610,7 @@ static ResultCode WaitProcessWideKeyAtomic(VAddr mutex_addr, VAddr condition_var
612/// Signal process wide key 610/// Signal process wide key
613static ResultCode SignalProcessWideKey(VAddr condition_variable_addr, s32 target) { 611static ResultCode SignalProcessWideKey(VAddr condition_variable_addr, s32 target) {
614 LOG_TRACE(Kernel_SVC, "called, condition_variable_addr=0x{:X}, target=0x{:08X}", 612 LOG_TRACE(Kernel_SVC, "called, condition_variable_addr=0x{:X}, target=0x{:08X}",
615 condition_variable_addr, target); 613 condition_variable_addr, target);
616 614
617 auto RetrieveWaitingThreads = 615 auto RetrieveWaitingThreads =
618 [](size_t core_index, std::vector<SharedPtr<Thread>>& waiting_threads, VAddr condvar_addr) { 616 [](size_t core_index, std::vector<SharedPtr<Thread>>& waiting_threads, VAddr condvar_addr) {
@@ -693,7 +691,7 @@ static ResultCode SignalProcessWideKey(VAddr condition_variable_addr, s32 target
693// Wait for an address (via Address Arbiter) 691// Wait for an address (via Address Arbiter)
694static ResultCode WaitForAddress(VAddr address, u32 type, s32 value, s64 timeout) { 692static ResultCode WaitForAddress(VAddr address, u32 type, s32 value, s64 timeout) {
695 LOG_WARNING(Kernel_SVC, "called, address=0x{:X}, type=0x{:X}, value=0x{:X}, timeout={}", 693 LOG_WARNING(Kernel_SVC, "called, address=0x{:X}, type=0x{:X}, value=0x{:X}, timeout={}",
696 address, type, value, timeout); 694 address, type, value, timeout);
697 // If the passed address is a kernel virtual address, return invalid memory state. 695 // If the passed address is a kernel virtual address, return invalid memory state.
698 if (Memory::IsKernelVirtualAddress(address)) { 696 if (Memory::IsKernelVirtualAddress(address)) {
699 return ERR_INVALID_ADDRESS_STATE; 697 return ERR_INVALID_ADDRESS_STATE;
@@ -717,9 +715,8 @@ static ResultCode WaitForAddress(VAddr address, u32 type, s32 value, s64 timeout
717 715
718// Signals to an address (via Address Arbiter) 716// Signals to an address (via Address Arbiter)
719static ResultCode SignalToAddress(VAddr address, u32 type, s32 value, s32 num_to_wake) { 717static ResultCode SignalToAddress(VAddr address, u32 type, s32 value, s32 num_to_wake) {
720 LOG_WARNING(Kernel_SVC, 718 LOG_WARNING(Kernel_SVC, "called, address=0x{:X}, type=0x{:X}, value=0x{:X}, num_to_wake=0x{:X}",
721 "called, address=0x{:X}, type=0x{:X}, value=0x{:X}, num_to_wake=0x{:X}", address, 719 address, type, value, num_to_wake);
722 type, value, num_to_wake);
723 // If the passed address is a kernel virtual address, return invalid memory state. 720 // If the passed address is a kernel virtual address, return invalid memory state.
724 if (Memory::IsKernelVirtualAddress(address)) { 721 if (Memory::IsKernelVirtualAddress(address)) {
725 return ERR_INVALID_ADDRESS_STATE; 722 return ERR_INVALID_ADDRESS_STATE;
@@ -769,8 +766,8 @@ static ResultCode ResetSignal(Handle handle) {
769 766
770/// Creates a TransferMemory object 767/// Creates a TransferMemory object
771static ResultCode CreateTransferMemory(Handle* handle, VAddr addr, u64 size, u32 permissions) { 768static ResultCode CreateTransferMemory(Handle* handle, VAddr addr, u64 size, u32 permissions) {
772 LOG_WARNING(Kernel_SVC, "(STUBBED) called addr=0x{:X}, size=0x{:X}, perms=0x{:08X}", addr, 769 LOG_WARNING(Kernel_SVC, "(STUBBED) called addr=0x{:X}, size=0x{:X}, perms=0x{:08X}", addr, size,
773 size, permissions); 770 permissions);
774 *handle = 0; 771 *handle = 0;
775 return RESULT_SUCCESS; 772 return RESULT_SUCCESS;
776} 773}
@@ -791,7 +788,7 @@ static ResultCode GetThreadCoreMask(Handle thread_handle, u32* core, u64* mask)
791 788
792static ResultCode SetThreadCoreMask(Handle thread_handle, u32 core, u64 mask) { 789static ResultCode SetThreadCoreMask(Handle thread_handle, u32 core, u64 mask) {
793 LOG_DEBUG(Kernel_SVC, "called, handle=0x{:08X}, mask=0x{:16X}, core=0x{:X}", thread_handle, 790 LOG_DEBUG(Kernel_SVC, "called, handle=0x{:08X}, mask=0x{:16X}, core=0x{:X}", thread_handle,
794 mask, core); 791 mask, core);
795 792
796 const SharedPtr<Thread> thread = g_handle_table.Get<Thread>(thread_handle); 793 const SharedPtr<Thread> thread = g_handle_table.Get<Thread>(thread_handle);
797 if (!thread) { 794 if (!thread) {
@@ -831,7 +828,7 @@ static ResultCode SetThreadCoreMask(Handle thread_handle, u32 core, u64 mask) {
831static ResultCode CreateSharedMemory(Handle* handle, u64 size, u32 local_permissions, 828static ResultCode CreateSharedMemory(Handle* handle, u64 size, u32 local_permissions,
832 u32 remote_permissions) { 829 u32 remote_permissions) {
833 LOG_TRACE(Kernel_SVC, "called, size=0x{:X}, localPerms=0x{:08X}, remotePerms=0x{:08X}", size, 830 LOG_TRACE(Kernel_SVC, "called, size=0x{:X}, localPerms=0x{:08X}, remotePerms=0x{:08X}", size,
834 local_permissions, remote_permissions); 831 local_permissions, remote_permissions);
835 auto sharedMemHandle = 832 auto sharedMemHandle =
836 SharedMemory::Create(g_handle_table.Get<Process>(KernelHandle::CurrentProcess), size, 833 SharedMemory::Create(g_handle_table.Get<Process>(KernelHandle::CurrentProcess), size,
837 static_cast<MemoryPermission>(local_permissions), 834 static_cast<MemoryPermission>(local_permissions),
diff --git a/src/core/hle/kernel/thread.cpp b/src/core/hle/kernel/thread.cpp
index 01c346520..9a9746585 100644
--- a/src/core/hle/kernel/thread.cpp
+++ b/src/core/hle/kernel/thread.cpp
@@ -344,7 +344,7 @@ ResultVal<SharedPtr<Thread>> Thread::Create(std::string name, VAddr entry_point,
344 344
345 if (linheap_memory->size() + Memory::PAGE_SIZE > memory_region->size) { 345 if (linheap_memory->size() + Memory::PAGE_SIZE > memory_region->size) {
346 LOG_ERROR(Kernel_SVC, 346 LOG_ERROR(Kernel_SVC,
347 "Not enough space in region to allocate a new TLS page for thread"); 347 "Not enough space in region to allocate a new TLS page for thread");
348 return ERR_OUT_OF_MEMORY; 348 return ERR_OUT_OF_MEMORY;
349 } 349 }
350 350
diff --git a/src/core/hle/kernel/vm_manager.cpp b/src/core/hle/kernel/vm_manager.cpp
index e05aa5931..034dd490e 100644
--- a/src/core/hle/kernel/vm_manager.cpp
+++ b/src/core/hle/kernel/vm_manager.cpp
@@ -243,11 +243,11 @@ void VMManager::LogLayout() const {
243 for (const auto& p : vma_map) { 243 for (const auto& p : vma_map) {
244 const VirtualMemoryArea& vma = p.second; 244 const VirtualMemoryArea& vma = p.second;
245 LOG_DEBUG(Kernel, "{:016X} - {:016X} size: {:016X} {}{}{} {}", vma.base, 245 LOG_DEBUG(Kernel, "{:016X} - {:016X} size: {:016X} {}{}{} {}", vma.base,
246 vma.base + vma.size, vma.size, 246 vma.base + vma.size, vma.size,
247 (u8)vma.permissions & (u8)VMAPermission::Read ? 'R' : '-', 247 (u8)vma.permissions & (u8)VMAPermission::Read ? 'R' : '-',
248 (u8)vma.permissions & (u8)VMAPermission::Write ? 'W' : '-', 248 (u8)vma.permissions & (u8)VMAPermission::Write ? 'W' : '-',
249 (u8)vma.permissions & (u8)VMAPermission::Execute ? 'X' : '-', 249 (u8)vma.permissions & (u8)VMAPermission::Execute ? 'X' : '-',
250 GetMemoryStateName(vma.meminfo_state)); 250 GetMemoryStateName(vma.meminfo_state));
251 } 251 }
252} 252}
253 253