Implement svc 0x04, 0x06, 0x53

This commit is contained in:
TuxSH 2017-03-12 23:21:29 +01:00 committed by Dave Murphy
parent 636dfb2f1d
commit 064f9fdf9e
2 changed files with 40 additions and 2 deletions

View File

@ -511,7 +511,15 @@ Result svcQueryProcessMemory(MemInfo* info, PageInfo* out, Handle process, u32 a
Result svcInvalidateProcessDataCache(Handle process, void* addr, u32 size); Result svcInvalidateProcessDataCache(Handle process, void* addr, u32 size);
/** /**
* @brief Flushes a process's data cache. * @brief Cleans a process's data cache.
* @param process Handle of the process.
* @param addr Address to clean.
* @param size Size of the memory to clean.
*/
Result svcStoreProcessDataCache(Handle process, void* addr, u32 size);
/**
* @brief Flushes (cleans and invalidates) a process's data cache.
* @param process Handle of the process. * @param process Handle of the process.
* @param addr Address to flush. * @param addr Address to flush.
* @param size Size of the memory to flush. * @param size Size of the memory to flush.
@ -605,6 +613,14 @@ Result svcCreateCodeSet(Handle* out, const CodeSetInfo *info, void* code_ptr, vo
*/ */
Result svcCreateProcess(Handle* out, Handle codeset, const u32 *arm11kernelcaps, u32 arm11kernelcaps_num); Result svcCreateProcess(Handle* out, Handle codeset, const u32 *arm11kernelcaps, u32 arm11kernelcaps_num);
/**
* @brief Gets a process's affinity mask.
* @param[out] affinitymask Pointer to store the affinity masks.
* @param process Handle of the process.
* @param processorcount Number of processors.
*/
Result svcGetProcessAffinityMask(u8* affinitymask, Handle process, s32 processorcount);
/** /**
* @brief Sets a process's affinity mask. * @brief Sets a process's affinity mask.
* @param process Handle of the process. * @param process Handle of the process.
@ -613,10 +629,17 @@ Result svcCreateProcess(Handle* out, Handle codeset, const u32 *arm11kernelcaps,
*/ */
Result svcSetProcessAffinityMask(Handle process, const u8* affinitymask, s32 processorcount); Result svcSetProcessAffinityMask(Handle process, const u8* affinitymask, s32 processorcount);
/**
* Gets a process's ideal processor.
* @param[out] processorid Pointer to store the ID of the process's ideal processor.
* @param process Handle of the process.
*/
Result svcGetProcessIdealProcessor(s32 *processorid, Handle process);
/** /**
* Sets a process's ideal processor. * Sets a process's ideal processor.
* @param process Handle of the process. * @param process Handle of the process.
* @param processorid ID of the thread's ideal processor. * @param processorid ID of the process's ideal processor.
*/ */
Result svcSetProcessIdealProcessor(Handle process, s32 processorid); Result svcSetProcessIdealProcessor(Handle process, s32 processorid);

View File

@ -37,10 +37,21 @@ SVC_BEGIN svcExitProcess
svc 0x03 svc 0x03
bx lr bx lr
SVC_BEGIN svcGetProcessAffinityMask
svc 0x04
bx lr
SVC_BEGIN svcSetProcessAffinityMask SVC_BEGIN svcSetProcessAffinityMask
svc 0x05 svc 0x05
bx lr bx lr
SVC_BEGIN svcGetProcessIdealProcessor
str r0, [sp, #-0x4]!
svc 0x06
ldr r3, [sp], #4
str r1, [r3]
bx lr
SVC_BEGIN svcSetProcessIdealProcessor SVC_BEGIN svcSetProcessIdealProcessor
svc 0x07 svc 0x07
bx lr bx lr
@ -372,6 +383,10 @@ SVC_BEGIN svcInvalidateProcessDataCache
svc 0x52 svc 0x52
bx lr bx lr
SVC_BEGIN svcStoreProcessDataCache
svc 0x53
bx lr
SVC_BEGIN svcFlushProcessDataCache SVC_BEGIN svcFlushProcessDataCache
svc 0x54 svc 0x54
bx lr bx lr