Skip to content

Commit

Permalink
Loader: Implement ldr:ro->Initialize()
Browse files Browse the repository at this point in the history
  • Loading branch information
SciresM committed Apr 26, 2018
1 parent 4f09c61 commit fe2f227
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 12 deletions.
23 changes: 16 additions & 7 deletions stratosphere/loader/source/ldr_ro_service.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,27 +31,36 @@ Result RelocatableObjectsService::dispatch(IpcParsedCommand &r, IpcCommand &out_
}


std::tuple<Result, u64> load_nro(PidDescriptor pid, u64 nro_address, u64 nro_size, u64 bss_address, u64 bss_size) {
std::tuple<Result, u64> RelocatableObjectsService::load_nro(PidDescriptor pid_desc, u64 nro_address, u64 nro_size, u64 bss_address, u64 bss_size) {
/* TODO */
return std::make_tuple(0xF601, 0);
}

std::tuple<Result> unload_nro(PidDescriptor pid, u64 nro_address) {
std::tuple<Result> RelocatableObjectsService::unload_nro(PidDescriptor pid_desc, u64 nro_address) {
/* TODO */
return std::make_tuple(0xF601);
}

std::tuple<Result> load_nrr(PidDescriptor pid, u64 nrr_address, u64 nrr_size) {
std::tuple<Result> RelocatableObjectsService::load_nrr(PidDescriptor pid_desc, u64 nrr_address, u64 nrr_size) {
/* TODO */
return std::make_tuple(0xF601);
}

std::tuple<Result> unload_nrr(PidDescriptor pid, u64 nrr_address) {
std::tuple<Result> RelocatableObjectsService::unload_nrr(PidDescriptor pid_desc, u64 nrr_address) {
/* TODO */
return std::make_tuple(0xF601);
}

std::tuple<Result> initialize(PidDescriptor pid, CopiedHandle process_h) {
/* TODO */
return std::make_tuple(0xF601);
std::tuple<Result> RelocatableObjectsService::initialize(PidDescriptor pid_desc, CopiedHandle process_h) {
u64 handle_pid;
Result rc = 0xAE09;
if (R_SUCCEEDED(svcGetProcessId(&handle_pid, process_h.handle)) && handle_pid == pid_desc.pid) {
if (this->has_initialized) {
svcCloseHandle(this->process_handle);
}
this->process_handle = process_h.handle;
this->has_initialized = true;
rc = 0;
}
return std::make_tuple(rc);
}
10 changes: 5 additions & 5 deletions stratosphere/loader/source/ldr_ro_service.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@ class RelocatableObjectsService : IServiceObject {

private:
/* Actual commands. */
std::tuple<Result, u64> load_nro(PidDescriptor pid, u64 nro_address, u64 nro_size, u64 bss_address, u64 bss_size);
std::tuple<Result> unload_nro(PidDescriptor pid, u64 nro_address);
std::tuple<Result> load_nrr(PidDescriptor pid, u64 nrr_address, u64 nrr_size);
std::tuple<Result> unload_nrr(PidDescriptor pid, u64 nrr_address);
std::tuple<Result> initialize(PidDescriptor pid, CopiedHandle process_h);
std::tuple<Result, u64> load_nro(PidDescriptor pid_desc, u64 nro_address, u64 nro_size, u64 bss_address, u64 bss_size);
std::tuple<Result> unload_nro(PidDescriptor pid_desc, u64 nro_address);
std::tuple<Result> load_nrr(PidDescriptor pid_desc, u64 nrr_address, u64 nrr_size);
std::tuple<Result> unload_nrr(PidDescriptor pid_desc, u64 nrr_address);
std::tuple<Result> initialize(PidDescriptor pid_desc, CopiedHandle process_h);
};

0 comments on commit fe2f227

Please sign in to comment.