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
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);

View File

@ -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