svc: updated WaitSynchronizationN to properly use first pointer argument

This commit is contained in:
bunnei 2014-06-02 17:54:07 -04:00
parent 4819e9a60f
commit 477b0caca4
2 changed files with 6 additions and 4 deletions

View File

@ -766,7 +766,9 @@ template<int func(u32, s64)> void WrapI_US64() {
} }
template<int func(void*, void*, u32, u32, s64)> void WrapI_VVUUS64() { template<int func(void*, void*, u32, u32, s64)> void WrapI_VVUUS64() {
int retval = func(Memory::GetPointer(PARAM(5)), Memory::GetPointer(PARAM(1)), PARAM(2), PARAM(3), (((u64)PARAM(4) << 32) | PARAM(0))); u32 param_1 = 0;
int retval = func(&param_1, Memory::GetPointer(PARAM(1)), PARAM(2), PARAM(3), (((u64)PARAM(4) << 32) | PARAM(0)));
Core::g_app_core->SetReg(1, param_1);
RETURN(retval); RETURN(retval);
} }

View File

@ -147,7 +147,7 @@ Result WaitSynchronization1(Handle handle, s64 nano_seconds) {
Result WaitSynchronizationN(void* _out, void* _handles, u32 handle_count, u32 wait_all, Result WaitSynchronizationN(void* _out, void* _handles, u32 handle_count, u32 wait_all,
s64 nano_seconds) { s64 nano_seconds) {
// TODO(bunnei): Do something with nano_seconds, currently ignoring this // TODO(bunnei): Do something with nano_seconds, currently ignoring this
s32* out = (s32*)_out;
Handle* handles = (Handle*)_handles; Handle* handles = (Handle*)_handles;
bool unlock_all = true; bool unlock_all = true;
@ -167,7 +167,7 @@ Result WaitSynchronizationN(void* _out, void* _handles, u32 handle_count, u32 wa
Result res = object->WaitSynchronization(&wait); Result res = object->WaitSynchronization(&wait);
if (!wait && !wait_all) { if (!wait && !wait_all) {
Core::g_app_core->SetReg(1, i); *out = i;
return 0; return 0;
} else { } else {
unlock_all = false; unlock_all = false;
@ -175,7 +175,7 @@ Result WaitSynchronizationN(void* _out, void* _handles, u32 handle_count, u32 wa
} }
if (wait_all && unlock_all) { if (wait_all && unlock_all) {
Core::g_app_core->SetReg(1, handle_count); *out = handle_count;
return 0; return 0;
} }