diff --git a/crt0/switch_crt0.s b/crt0/switch_crt0.s index a4e739a4..88a6061f 100644 --- a/crt0/switch_crt0.s +++ b/crt0/switch_crt0.s @@ -2,18 +2,19 @@ .global _start _start: - bl startup + b startup .word 0 .ascii "HOMEBREW" .org _start+0x80 startup: + // get aslr base + bl +4 + sub x28, x30, #0x84 + // save main thread handle mov x27, x1 - // get aslr base - sub x28, x30, #4 - // clear .bss adrp x0, __bss_start__ adrp x1, __bss_end__ diff --git a/nx/source/kernel/svc.s b/nx/source/kernel/svc.s index c237f3b3..cbfb7fe3 100644 --- a/nx/source/kernel/svc.s +++ b/nx/source/kernel/svc.s @@ -107,6 +107,11 @@ SVC_BEGIN svcWaitSynchronization ret SVC_END +SVC_BEGIN svcCancelSynchronization + svc 0x19 + ret +SVC_END + SVC_BEGIN svcArbitrateLock svc 0x1a ret diff --git a/nx/source/services/applet.c b/nx/source/services/applet.c index bc10c614..91788f6c 100644 --- a/nx/source/services/applet.c +++ b/nx/source/services/applet.c @@ -233,7 +233,8 @@ static Result appletSetFocusHandlingMode(u32 mode) { rc = _appletSetFocusHandlingMode(invals[0], invals[1], invals[2]); - if (R_SUCCEEDED(rc)) rc = _appletSetOutOfFocusSuspendingEnabled(invals[3]); + if (R_SUCCEEDED(rc) && kernelAbove200()) + rc = _appletSetOutOfFocusSuspendingEnabled(invals[3]); return rc; }