diff --git a/loader/source/start.s b/loader/source/start.s index 8dd5747..4dd90e5 100644 --- a/loader/source/start.s +++ b/loader/source/start.s @@ -22,6 +22,7 @@ .align 4 .global _start _start: + ldr sp, =0x27ffe000 b main .global payloadSize diff --git a/source/fs.c b/source/fs.c index ed479fe..c62ae2f 100644 --- a/source/fs.c +++ b/source/fs.c @@ -119,9 +119,9 @@ void fileDelete(const char *path) void loadPayload(u32 pressed, const char *payloadPath) { u32 *loaderAddress = (u32 *)0x27FFE000; - u8 *payloadAddress = (u8 *)0x24F00000; + u8 *payloadAddress = (u8 *)0x24000000; u32 payloadSize = 0, - maxPayloadSize = (u32)((u8 *)loaderAddress - payloadAddress); + maxPayloadSize = (u32)((u8 *)loaderAddress - payloadAddress - 0x1000); if(payloadPath == NULL) { diff --git a/source/screen.c b/source/screen.c index bcde23a..12bf956 100644 --- a/source/screen.c +++ b/source/screen.c @@ -58,6 +58,7 @@ static void invokeArm11Function(void (*func)()) if(!hasCopiedStub) { arm11Entry = (vu32 *)((ISSIGHAX) ? 0x1FFFFFFC : 0x1FFFFFF8); + flushDCacheRange(&arm11Entry, 4); memcpy((void *)ARM11_STUB_ADDRESS, arm11Stub, 0x2C); hasCopiedStub = true; }