libctru svcCreateCodeSet changes

This commit is contained in:
TuxSH 2023-02-08 18:25:03 +00:00
parent 1d7cca25d1
commit 2e08b7b44f
2 changed files with 28 additions and 28 deletions

View File

@ -250,21 +250,21 @@ Handle Ldr_CodesetFrom3dsx(const char* name, u32* codePages, u32 baseAddr, IFile
} }
// Create the codeset // Create the codeset
CodeSetInfo csinfo; CodeSetHeader csh;
memset(&csinfo, 0, sizeof(csinfo)); memset(&csh, 0, sizeof(csh));
memcpy(csinfo.name, name, 8); memcpy(csh.name, name, 8);
csinfo.program_id = tid; csh.program_id = tid;
csinfo.text_addr = d.segAddrs[0]; csh.text_addr = d.segAddrs[0];
csinfo.text_size = d.segSizes[0] >> 12; csh.text_size = d.segSizes[0] >> 12;
csinfo.ro_addr = d.segAddrs[1]; csh.ro_addr = d.segAddrs[1];
csinfo.ro_size = d.segSizes[1] >> 12; csh.ro_size = d.segSizes[1] >> 12;
csinfo.rw_addr = d.segAddrs[2]; csh.rw_addr = d.segAddrs[2];
csinfo.rw_size = (d.segSizes[2] >> 12) + 1; // One extra page reserved for settings/etc csh.rw_size = (d.segSizes[2] >> 12) + 1; // One extra page reserved for settings/etc
csinfo.text_size_total = csinfo.text_size; csh.text_size_total = csh.text_size;
csinfo.ro_size_total = csinfo.ro_size; csh.ro_size_total = csh.ro_size;
csinfo.rw_size_total = csinfo.rw_size; csh.rw_size_total = csh.rw_size;
Handle hCodeset = 0; 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) if (res)
{ {
Log_PrintP("svcCreateCodeSet: %08lX", res); Log_PrintP("svcCreateCodeSet: %08lX", res);

View File

@ -301,11 +301,11 @@ static Result LoadProcessImpl(Handle *outProcessHandle, const ExHeader_Info *exh
prog_addrs_t mapped; prog_addrs_t mapped;
prog_addrs_t vaddr; prog_addrs_t vaddr;
Handle codeset; Handle codeset;
CodeSetInfo codesetinfo; CodeSetHeader csh;
u32 dataMemSize; u32 dataMemSize;
u32 region = 0; u32 region = 0;
u32 count; s32 count;
for (count = 0; count < 28; count++) for (count = 0; count < 28; count++)
{ {
u32 desc = exhi->aci.kernel_caps.descriptors[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; u64 titleId = exhi->aci.local_caps.title_id;
if (R_SUCCEEDED(res = loadCode(exhi, programHandle, &mapped))) if (R_SUCCEEDED(res = loadCode(exhi, programHandle, &mapped)))
{ {
memcpy(&codesetinfo.name, csi->name, 8); memcpy(&csh.name, csi->name, 8);
codesetinfo.program_id = titleId; csh.program_id = titleId;
codesetinfo.text_addr = vaddr.text_addr; csh.text_addr = vaddr.text_addr;
codesetinfo.text_size = vaddr.text_size; csh.text_size = vaddr.text_size;
codesetinfo.text_size_total = vaddr.text_size; csh.text_size_total = vaddr.text_size;
codesetinfo.ro_addr = vaddr.ro_addr; csh.ro_addr = vaddr.ro_addr;
codesetinfo.ro_size = vaddr.ro_size; csh.ro_size = vaddr.ro_size;
codesetinfo.ro_size_total = vaddr.ro_size; csh.ro_size_total = vaddr.ro_size;
codesetinfo.rw_addr = vaddr.data_addr; csh.rw_addr = vaddr.data_addr;
codesetinfo.rw_size = vaddr.data_size; csh.rw_size = vaddr.data_size;
codesetinfo.rw_size_total = dataMemSize; csh.rw_size_total = dataMemSize;
res = svcCreateCodeSet(&codeset, &codesetinfo, (void *)mapped.text_addr, (void *)mapped.ro_addr, (void *)mapped.data_addr); res = svcCreateCodeSet(&codeset, &csh, mapped.text_addr, mapped.ro_addr, mapped.data_addr);
if (R_SUCCEEDED(res)) if (R_SUCCEEDED(res))
{ {
// There are always 28 descriptors // There are always 28 descriptors