From 2e08b7b44fdf9ba223e31abd7fe0cd196bb2221c Mon Sep 17 00:00:00 2001 From: TuxSH <1922548+TuxSH@users.noreply.github.com> Date: Wed, 8 Feb 2023 18:25:03 +0000 Subject: [PATCH] libctru svcCreateCodeSet changes --- sysmodules/loader/source/3dsx.c | 28 ++++++++++++++-------------- sysmodules/loader/source/loader.c | 28 ++++++++++++++-------------- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/sysmodules/loader/source/3dsx.c b/sysmodules/loader/source/3dsx.c index 2a290de..cb82102 100644 --- a/sysmodules/loader/source/3dsx.c +++ b/sysmodules/loader/source/3dsx.c @@ -250,21 +250,21 @@ Handle Ldr_CodesetFrom3dsx(const char* name, u32* codePages, u32 baseAddr, IFile } // Create the codeset - CodeSetInfo csinfo; - memset(&csinfo, 0, sizeof(csinfo)); - memcpy(csinfo.name, name, 8); - csinfo.program_id = tid; - csinfo.text_addr = d.segAddrs[0]; - csinfo.text_size = d.segSizes[0] >> 12; - csinfo.ro_addr = d.segAddrs[1]; - csinfo.ro_size = d.segSizes[1] >> 12; - csinfo.rw_addr = d.segAddrs[2]; - csinfo.rw_size = (d.segSizes[2] >> 12) + 1; // One extra page reserved for settings/etc - csinfo.text_size_total = csinfo.text_size; - csinfo.ro_size_total = csinfo.ro_size; - csinfo.rw_size_total = csinfo.rw_size; + CodeSetHeader csh; + memset(&csh, 0, sizeof(csh)); + memcpy(csh.name, name, 8); + csh.program_id = tid; + csh.text_addr = d.segAddrs[0]; + csh.text_size = d.segSizes[0] >> 12; + csh.ro_addr = d.segAddrs[1]; + csh.ro_size = d.segSizes[1] >> 12; + csh.rw_addr = d.segAddrs[2]; + csh.rw_size = (d.segSizes[2] >> 12) + 1; // One extra page reserved for settings/etc + csh.text_size_total = csh.text_size; + csh.ro_size_total = csh.ro_size; + csh.rw_size_total = csh.rw_size; Handle hCodeset = 0; - res = svcCreateCodeSet(&hCodeset, &csinfo, d.segPtrs[0], d.segPtrs[1], d.segPtrs[2]); + res = svcCreateCodeSet(&hCodeset, &csh, (u32)d.segPtrs[0], (u32)d.segPtrs[1], (u32)d.segPtrs[2]); if (res) { Log_PrintP("svcCreateCodeSet: %08lX", res); diff --git a/sysmodules/loader/source/loader.c b/sysmodules/loader/source/loader.c index aa9163c..d28f242 100644 --- a/sysmodules/loader/source/loader.c +++ b/sysmodules/loader/source/loader.c @@ -301,11 +301,11 @@ static Result LoadProcessImpl(Handle *outProcessHandle, const ExHeader_Info *exh prog_addrs_t mapped; prog_addrs_t vaddr; Handle codeset; - CodeSetInfo codesetinfo; + CodeSetHeader csh; u32 dataMemSize; u32 region = 0; - u32 count; + s32 count; for (count = 0; count < 28; count++) { u32 desc = exhi->aci.kernel_caps.descriptors[count]; @@ -330,18 +330,18 @@ static Result LoadProcessImpl(Handle *outProcessHandle, const ExHeader_Info *exh u64 titleId = exhi->aci.local_caps.title_id; if (R_SUCCEEDED(res = loadCode(exhi, programHandle, &mapped))) { - memcpy(&codesetinfo.name, csi->name, 8); - codesetinfo.program_id = titleId; - codesetinfo.text_addr = vaddr.text_addr; - codesetinfo.text_size = vaddr.text_size; - codesetinfo.text_size_total = vaddr.text_size; - codesetinfo.ro_addr = vaddr.ro_addr; - codesetinfo.ro_size = vaddr.ro_size; - codesetinfo.ro_size_total = vaddr.ro_size; - codesetinfo.rw_addr = vaddr.data_addr; - codesetinfo.rw_size = vaddr.data_size; - codesetinfo.rw_size_total = dataMemSize; - res = svcCreateCodeSet(&codeset, &codesetinfo, (void *)mapped.text_addr, (void *)mapped.ro_addr, (void *)mapped.data_addr); + memcpy(&csh.name, csi->name, 8); + csh.program_id = titleId; + csh.text_addr = vaddr.text_addr; + csh.text_size = vaddr.text_size; + csh.text_size_total = vaddr.text_size; + csh.ro_addr = vaddr.ro_addr; + csh.ro_size = vaddr.ro_size; + csh.ro_size_total = vaddr.ro_size; + csh.rw_addr = vaddr.data_addr; + csh.rw_size = vaddr.data_size; + csh.rw_size_total = dataMemSize; + res = svcCreateCodeSet(&codeset, &csh, mapped.text_addr, mapped.ro_addr, mapped.data_addr); if (R_SUCCEEDED(res)) { // There are always 28 descriptors