diff options
| author | 2018-03-30 14:18:57 -0400 | |
|---|---|---|
| committer | 2018-03-30 14:18:57 -0400 | |
| commit | 9cba0f1794976248edfbf5a701a802c9ae406bb8 (patch) | |
| tree | dd28ca6f569fd7ac18f67430fcefb4e0193f4184 /src/core/hle/kernel | |
| parent | Merge pull request #290 from MerryMage/dfix-20180329 (diff) | |
| parent | audren_u: Stub QueryAudioDeviceSystemEvent and GetActiveChannelCount. (diff) | |
| download | yuzu-9cba0f1794976248edfbf5a701a802c9ae406bb8.tar.gz yuzu-9cba0f1794976248edfbf5a701a802c9ae406bb8.tar.xz yuzu-9cba0f1794976248edfbf5a701a802c9ae406bb8.zip | |
Merge pull request #292 from bunnei/botw-progress
NFP, SVC, and AudRen progress
Diffstat (limited to 'src/core/hle/kernel')
| -rw-r--r-- | src/core/hle/kernel/svc.cpp | 14 | ||||
| -rw-r--r-- | src/core/hle/kernel/svc_wrap.h | 15 |
2 files changed, 26 insertions, 3 deletions
diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp index 311ab4187..171bbd956 100644 --- a/src/core/hle/kernel/svc.cpp +++ b/src/core/hle/kernel/svc.cpp | |||
| @@ -756,8 +756,16 @@ static ResultCode CreateTransferMemory(Handle* handle, VAddr addr, u64 size, u32 | |||
| 756 | return RESULT_SUCCESS; | 756 | return RESULT_SUCCESS; |
| 757 | } | 757 | } |
| 758 | 758 | ||
| 759 | static ResultCode SetThreadCoreMask(u64, u64, u64) { | 759 | static ResultCode GetThreadCoreMask(Handle handle, u32* mask, u64* unknown) { |
| 760 | LOG_WARNING(Kernel_SVC, "(STUBBED) called"); | 760 | LOG_WARNING(Kernel_SVC, "(STUBBED) called, handle=0x%08X", handle); |
| 761 | *mask = 0x0; | ||
| 762 | *unknown = 0xf; | ||
| 763 | return RESULT_SUCCESS; | ||
| 764 | } | ||
| 765 | |||
| 766 | static ResultCode SetThreadCoreMask(Handle handle, u32 mask, u64 unknown) { | ||
| 767 | LOG_WARNING(Kernel_SVC, "(STUBBED) called, handle=0x%08X, mask=0x%08X, unknown=0x%lx", handle, | ||
| 768 | mask, unknown); | ||
| 761 | return RESULT_SUCCESS; | 769 | return RESULT_SUCCESS; |
| 762 | } | 770 | } |
| 763 | 771 | ||
| @@ -809,7 +817,7 @@ static const FunctionDef SVC_Table[] = { | |||
| 809 | {0x0B, SvcWrap<SleepThread>, "SleepThread"}, | 817 | {0x0B, SvcWrap<SleepThread>, "SleepThread"}, |
| 810 | {0x0C, SvcWrap<GetThreadPriority>, "GetThreadPriority"}, | 818 | {0x0C, SvcWrap<GetThreadPriority>, "GetThreadPriority"}, |
| 811 | {0x0D, SvcWrap<SetThreadPriority>, "SetThreadPriority"}, | 819 | {0x0D, SvcWrap<SetThreadPriority>, "SetThreadPriority"}, |
| 812 | {0x0E, nullptr, "GetThreadCoreMask"}, | 820 | {0x0E, SvcWrap<GetThreadCoreMask>, "GetThreadCoreMask"}, |
| 813 | {0x0F, SvcWrap<SetThreadCoreMask>, "SetThreadCoreMask"}, | 821 | {0x0F, SvcWrap<SetThreadCoreMask>, "SetThreadCoreMask"}, |
| 814 | {0x10, SvcWrap<GetCurrentProcessorNumber>, "GetCurrentProcessorNumber"}, | 822 | {0x10, SvcWrap<GetCurrentProcessorNumber>, "GetCurrentProcessorNumber"}, |
| 815 | {0x11, nullptr, "SignalEvent"}, | 823 | {0x11, nullptr, "SignalEvent"}, |
diff --git a/src/core/hle/kernel/svc_wrap.h b/src/core/hle/kernel/svc_wrap.h index b224f5e67..5da4f5269 100644 --- a/src/core/hle/kernel/svc_wrap.h +++ b/src/core/hle/kernel/svc_wrap.h | |||
| @@ -70,6 +70,21 @@ void SvcWrap() { | |||
| 70 | FuncReturn(retval); | 70 | FuncReturn(retval); |
| 71 | } | 71 | } |
| 72 | 72 | ||
| 73 | template <ResultCode func(u32, u32, u64)> | ||
| 74 | void SvcWrap() { | ||
| 75 | FuncReturn(func((u32)(PARAM(0) & 0xFFFFFFFF), (u32)(PARAM(1) & 0xFFFFFFFF), PARAM(2)).raw); | ||
| 76 | } | ||
| 77 | |||
| 78 | template <ResultCode func(u32, u32*, u64*)> | ||
| 79 | void SvcWrap() { | ||
| 80 | u32 param_1 = 0; | ||
| 81 | u64 param_2 = 0; | ||
| 82 | ResultCode retval = func((u32)(PARAM(2) & 0xFFFFFFFF), ¶m_1, ¶m_2); | ||
| 83 | Core::CPU().SetReg(1, param_1); | ||
| 84 | Core::CPU().SetReg(2, param_2); | ||
| 85 | FuncReturn(retval.raw); | ||
| 86 | } | ||
| 87 | |||
| 73 | template <ResultCode func(u64, u64, u32, u32)> | 88 | template <ResultCode func(u64, u64, u32, u32)> |
| 74 | void SvcWrap() { | 89 | void SvcWrap() { |
| 75 | FuncReturn( | 90 | FuncReturn( |