Added svc calls for svcCreateCodeSet and svcCreateProcess
This commit is contained in:
parent
818254c55e
commit
cd054cbadf
@ -241,6 +241,30 @@ typedef struct {
|
|||||||
|
|
||||||
///@}
|
///@}
|
||||||
|
|
||||||
|
///@name Processes
|
||||||
|
///@{
|
||||||
|
|
||||||
|
/// Information on address space for process. All sizes are in pages (0x1000 bytes)
|
||||||
|
typedef struct {
|
||||||
|
u8 name[8]; ///< ASCII name of codeset
|
||||||
|
u16 unk1;
|
||||||
|
u16 unk2;
|
||||||
|
u32 unk3;
|
||||||
|
u32 text_addr; ///< .text start address
|
||||||
|
u32 text_size; ///< .text number of pages
|
||||||
|
u32 ro_addr; ///< .rodata start address
|
||||||
|
u32 ro_size; ///< .rodata number of pages
|
||||||
|
u32 rw_addr; ///< .data, .bss start address
|
||||||
|
u32 rw_size; ///< .data number of pages
|
||||||
|
u32 text_size_total; ///< total pages for .text (aligned)
|
||||||
|
u32 ro_size_total; ///< total pages for .rodata (aligned)
|
||||||
|
u32 rw_size_total; ///< total pages for .data, .bss (aligned)
|
||||||
|
u32 unk4;
|
||||||
|
u64 program_id; ///< Program ID
|
||||||
|
} CodeSetInfo;
|
||||||
|
|
||||||
|
///@}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Gets the thread local storage buffer.
|
* @brief Gets the thread local storage buffer.
|
||||||
* @return The thread local storage bufger.
|
* @return The thread local storage bufger.
|
||||||
@ -487,6 +511,25 @@ Result svcCreatePort(Handle* portServer, Handle* portClient, const char* name, s
|
|||||||
* @param portName Name of the port.
|
* @param portName Name of the port.
|
||||||
*/
|
*/
|
||||||
Result svcConnectToPort(volatile Handle* out, const char* portName);
|
Result svcConnectToPort(volatile Handle* out, const char* portName);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Sets up virtual address space for a new process
|
||||||
|
* @param[out] out Pointer to output the code set handle to.
|
||||||
|
* @param info Description for setting up the addresses
|
||||||
|
* @param code_ptr Pointer to .text in shared memory
|
||||||
|
* @param ro_ptr Pointer to .rodata in shared memory
|
||||||
|
* @param data_ptr Pointer to .data in shared memory
|
||||||
|
*/
|
||||||
|
Result svcCreateCodeSet(Handle* out, const CodeSetInfo *info, void* code_ptr, void* ro_ptr, void* data_ptr);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Sets up virtual address space for a new process
|
||||||
|
* @param[out] out Pointer to output the process handle to.
|
||||||
|
* @param codeset Codeset created for this process
|
||||||
|
* @param arm11kernelcaps ARM11 Kernel Capabilities from exheader
|
||||||
|
* @param arm11kernelcaps_num Number of kernel capabilities
|
||||||
|
*/
|
||||||
|
Result svcCreateProcess(Handle* out, Handle codeset, u32 *arm11kernelcaps, u32 arm11kernelcaps_num);
|
||||||
///@}
|
///@}
|
||||||
|
|
||||||
///@name Multithreading
|
///@name Multithreading
|
||||||
|
@ -404,6 +404,23 @@ SVC_BEGIN svcUnmapProcessMemory
|
|||||||
svc 0x72
|
svc 0x72
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
|
SVC_BEGIN svcCreateCodeSet
|
||||||
|
str r0, [sp, #-0x4]!
|
||||||
|
ldr r0, [sp, #4]
|
||||||
|
svc 0x73
|
||||||
|
ldr r2, [sp, #0]
|
||||||
|
str r1, [r2]
|
||||||
|
add sp, sp, #4
|
||||||
|
bx lr
|
||||||
|
|
||||||
|
SVC_BEGIN svcCreateProcess
|
||||||
|
str r0, [sp, #-0x4]!
|
||||||
|
svc 0x75
|
||||||
|
ldr r2, [sp, #0]
|
||||||
|
str r1, [r2]
|
||||||
|
add sp, sp, #4
|
||||||
|
bx lr
|
||||||
|
|
||||||
SVC_BEGIN svcTerminateProcess
|
SVC_BEGIN svcTerminateProcess
|
||||||
svc 0x76
|
svc 0x76
|
||||||
bx lr
|
bx lr
|
||||||
|
Loading…
Reference in New Issue
Block a user