diff options
Diffstat (limited to 'src/core/hle/kernel')
-rw-r--r-- | src/core/hle/kernel/shared_memory.cpp | 12 | ||||
-rw-r--r-- | src/core/hle/kernel/svc.cpp | 16 | ||||
-rw-r--r-- | src/core/hle/kernel/svc_wrap.h | 5 |
3 files changed, 19 insertions, 14 deletions
diff --git a/src/core/hle/kernel/shared_memory.cpp b/src/core/hle/kernel/shared_memory.cpp index 88230bdd9..bc99993c8 100644 --- a/src/core/hle/kernel/shared_memory.cpp +++ b/src/core/hle/kernel/shared_memory.cpp @@ -120,18 +120,6 @@ ResultCode SharedMemory::Map(Process* target_process, VAddr address, MemoryPermi return ERR_WRONG_PERMISSION; } - // TODO(Subv): The same process that created a SharedMemory object - // can not map it in its own address space unless it was created with addr=0, result 0xD900182C. - - if (address != 0) { - // TODO(shinyquagsire23): Check for virtual/mappable memory here too? - if (address >= Memory::HEAP_VADDR && address < Memory::HEAP_VADDR_END) { - LOG_ERROR(Kernel, "cannot map id=%u, address=0x%lx name=%s, invalid address", - GetObjectId(), address, name.c_str()); - return ERR_INVALID_ADDRESS; - } - } - VAddr target_address = address; if (base_address == 0 && target_address == 0) { diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp index 171bbd956..36ea23cd9 100644 --- a/src/core/hle/kernel/svc.cpp +++ b/src/core/hle/kernel/svc.cpp @@ -371,6 +371,18 @@ static ResultCode GetInfo(u64* result, u64 info_id, u64 handle, u64 info_sub_id) return RESULT_SUCCESS; } +/// Sets the thread activity +static ResultCode SetThreadActivity(Handle handle, u32 unknown) { + LOG_WARNING(Kernel_SVC, "(STUBBED) called, handle=0x%08X, unknown=0x%08X", handle, unknown); + return RESULT_SUCCESS; +} + +/// Gets the thread context +static ResultCode GetThreadContext(Handle handle, VAddr addr) { + LOG_WARNING(Kernel_SVC, "(STUBBED) called, handle=0x%08X, addr=0x%" PRIx64, handle, addr); + return RESULT_SUCCESS; +} + /// Gets the priority for the specified thread static ResultCode GetThreadPriority(u32* priority, Handle handle) { const SharedPtr<Thread> thread = g_handle_table.Get<Thread>(handle); @@ -853,8 +865,8 @@ static const FunctionDef SVC_Table[] = { {0x2F, nullptr, "GetLastThreadInfo"}, {0x30, nullptr, "GetResourceLimitLimitValue"}, {0x31, nullptr, "GetResourceLimitCurrentValue"}, - {0x32, nullptr, "SetThreadActivity"}, - {0x33, nullptr, "GetThreadContext"}, + {0x32, SvcWrap<SetThreadActivity>, "SetThreadActivity"}, + {0x33, SvcWrap<GetThreadContext>, "GetThreadContext"}, {0x34, nullptr, "Unknown"}, {0x35, nullptr, "Unknown"}, {0x36, nullptr, "Unknown"}, diff --git a/src/core/hle/kernel/svc_wrap.h b/src/core/hle/kernel/svc_wrap.h index 5da4f5269..c86ad3e04 100644 --- a/src/core/hle/kernel/svc_wrap.h +++ b/src/core/hle/kernel/svc_wrap.h @@ -70,6 +70,11 @@ void SvcWrap() { FuncReturn(retval); } +template <ResultCode func(u32, u64)> +void SvcWrap() { + FuncReturn(func((u32)(PARAM(0) & 0xFFFFFFFF), PARAM(1)).raw); +} + template <ResultCode func(u32, u32, u64)> void SvcWrap() { FuncReturn(func((u32)(PARAM(0) & 0xFFFFFFFF), (u32)(PARAM(1) & 0xFFFFFFFF), PARAM(2)).raw); |