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
|
// 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);
|
||||||
|
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user