libctru svcCreateCodeSet changes
This commit is contained in:
parent
1d7cca25d1
commit
2e08b7b44f
@ -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);
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user