mirror of
https://github.com/switchbrew/libnx.git
synced 2025-06-22 04:52:39 +02:00
svc: Add all missing SVC stubs (#364)
This commit is contained in:
parent
446aaf2a55
commit
e5c501e5b6
@ -205,6 +205,35 @@ typedef enum {
|
|||||||
PhysicalMemoryInfo_SystemUnsafe = 3, ///< Memory allocated for unsafe system usage (accessible to devices).
|
PhysicalMemoryInfo_SystemUnsafe = 3, ///< Memory allocated for unsafe system usage (accessible to devices).
|
||||||
} PhysicalMemoryInfo;
|
} PhysicalMemoryInfo;
|
||||||
|
|
||||||
|
/// SleepThread yield types.
|
||||||
|
typedef enum {
|
||||||
|
YieldType_WithoutCoreMigration = 0l, ///< Yields to another thread on the same core.
|
||||||
|
YieldType_WithCoreMigration = -1l, ///< Yields to another thread (possibly on a different core).
|
||||||
|
YieldType_ToAnyThread = -2l, ///< Yields and performs forced load-balancing.
|
||||||
|
} YieldType;
|
||||||
|
|
||||||
|
/// SignalToAddress behaviors.
|
||||||
|
typedef enum {
|
||||||
|
SignalType_Signal = 0, ///< Signals the address.
|
||||||
|
SignalType_SignalAndIncrementIfEqual = 1, ///< Signals the address and increments its value if equal to argument.
|
||||||
|
SignalType_SignalAndModifyBasedOnWaitingThreadCountIfEqual = 2, ///< Signals the address and updates its value if equal to argument.
|
||||||
|
} SignalType;
|
||||||
|
|
||||||
|
/// WaitForAddress behaviors.
|
||||||
|
typedef enum {
|
||||||
|
ArbitrationType_WaitIfLessThan = 0, ///< Wait if the value is less than argument.
|
||||||
|
ArbitrationType_DecrementAndWaitIfLessThan = 1, ///< Decrement the value and wait if it is less than argument.
|
||||||
|
ArbitrationType_WaitIfEqual = 2, ///< Wait if the value is equal to argument.
|
||||||
|
} ArbitrationType;
|
||||||
|
|
||||||
|
/// Context of a scheduled thread.
|
||||||
|
typedef struct {
|
||||||
|
u64 fp; ///< Frame Pointer for the thread.
|
||||||
|
u64 sp; ///< Stack Pointer for the thread.
|
||||||
|
u64 lr; ///< Link Register for the thread.
|
||||||
|
u64 pc; ///< Program Counter for the thread.
|
||||||
|
} LastThreadContext;
|
||||||
|
|
||||||
///@name Memory management
|
///@name Memory management
|
||||||
///@{
|
///@{
|
||||||
|
|
||||||
@ -306,7 +335,7 @@ void NORETURN svcExitThread(void);
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Sleeps the current thread for the specified amount of time.
|
* @brief Sleeps the current thread for the specified amount of time.
|
||||||
* @param[in] nano Number of nanoseconds to sleep, or 0, -1, -2 for yield.
|
* @param[in] nano Number of nanoseconds to sleep, or \ref YieldType for yield.
|
||||||
* @note Syscall number 0x0B.
|
* @note Syscall number 0x0B.
|
||||||
*/
|
*/
|
||||||
void svcSleepThread(s64 nano);
|
void svcSleepThread(s64 nano);
|
||||||
@ -500,6 +529,13 @@ u64 svcGetSystemTick(void);
|
|||||||
*/
|
*/
|
||||||
Result svcConnectToNamedPort(Handle* session, const char* name);
|
Result svcConnectToNamedPort(Handle* session, const char* name);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Sends a light IPC synchronization request to a session.
|
||||||
|
* @return Result code.
|
||||||
|
* @note Syscall number 0x20.
|
||||||
|
*/
|
||||||
|
Result svcSendSyncRequestLight(Handle session);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Sends an IPC synchronization request to a session.
|
* @brief Sends an IPC synchronization request to a session.
|
||||||
* @return Result code.
|
* @return Result code.
|
||||||
@ -597,6 +633,28 @@ Result svcGetInfo(u64* out, u32 id0, Handle handle, u64 id1);
|
|||||||
|
|
||||||
///@}
|
///@}
|
||||||
|
|
||||||
|
///@name Cache Management
|
||||||
|
///@{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Flushes the entire data cache (by set/way).
|
||||||
|
* @note Syscall number 0x2A.
|
||||||
|
* @warning This is a privileged syscall. Use \ref envIsSyscallHinted to check if it is available.
|
||||||
|
* @warning This syscall is dangerous, and should not be used.
|
||||||
|
*/
|
||||||
|
void svcFlushEntireDataCache(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Flushes data cache for a virtual address range.
|
||||||
|
* @param[in] address Address of region to flush.
|
||||||
|
* @param[in] size Size of region to flush.
|
||||||
|
* @remark armDCacheFlush should be used instead of this syscall whenever possible.
|
||||||
|
* @note Syscall number 0x2B.
|
||||||
|
*/
|
||||||
|
Result svcFlushDataCache(void *address, size_t size);
|
||||||
|
|
||||||
|
///@}
|
||||||
|
|
||||||
///@name Memory management
|
///@name Memory management
|
||||||
///@{
|
///@{
|
||||||
|
|
||||||
@ -604,7 +662,6 @@ Result svcGetInfo(u64* out, u32 id0, Handle handle, u64 id1);
|
|||||||
* @brief Maps new heap memory at the desired address. [3.0.0+]
|
* @brief Maps new heap memory at the desired address. [3.0.0+]
|
||||||
* @return Result code.
|
* @return Result code.
|
||||||
* @note Syscall number 0x2C.
|
* @note Syscall number 0x2C.
|
||||||
* @warning This is a privileged syscall. Use \ref envIsSyscallHinted to check if it is available.
|
|
||||||
*/
|
*/
|
||||||
Result svcMapPhysicalMemory(void *address, u64 size);
|
Result svcMapPhysicalMemory(void *address, u64 size);
|
||||||
|
|
||||||
@ -612,12 +669,38 @@ Result svcMapPhysicalMemory(void *address, u64 size);
|
|||||||
* @brief Undoes the effects of \ref svcMapPhysicalMemory. [3.0.0+]
|
* @brief Undoes the effects of \ref svcMapPhysicalMemory. [3.0.0+]
|
||||||
* @return Result code.
|
* @return Result code.
|
||||||
* @note Syscall number 0x2D.
|
* @note Syscall number 0x2D.
|
||||||
* @warning This is a privileged syscall. Use \ref envIsSyscallHinted to check if it is available.
|
|
||||||
*/
|
*/
|
||||||
Result svcUnmapPhysicalMemory(void *address, u64 size);
|
Result svcUnmapPhysicalMemory(void *address, u64 size);
|
||||||
|
|
||||||
///@}
|
///@}
|
||||||
|
|
||||||
|
///@name Process and thread management
|
||||||
|
///@{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Gets information about a thread that will be scheduled in the future. [5.0.0+]
|
||||||
|
* @param[out] out_context Output \ref LastThreadContext for the thread that will be scheduled.
|
||||||
|
* @param[out] out_thread_id Output thread id for the thread that will be scheduled.
|
||||||
|
* @param[in] debug Debug handle.
|
||||||
|
* @param[in] ns Nanoseconds in the future to get scheduled thread at.
|
||||||
|
* @return Result code.
|
||||||
|
* @note Syscall number 0x2E.
|
||||||
|
* @warning This is a privileged syscall. Use \ref envIsSyscallHinted to check if it is available.
|
||||||
|
*/
|
||||||
|
Result svcGetDebugFutureThreadInfo(LastThreadContext *out_context, u64 *out_thread_id, Handle debug, s64 ns);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Gets information about the previously-scheduled thread.
|
||||||
|
* @param[out] out_context Output \ref LastThreadContext for the previously scheduled thread.
|
||||||
|
* @param[out] out_tls_address Output tls address for the previously scheduled thread.
|
||||||
|
* @param[out] out_flags Output flags for the previously scheduled thread.
|
||||||
|
* @return Result code.
|
||||||
|
* @note Syscall number 0x2F.
|
||||||
|
*/
|
||||||
|
Result svcGetLastThreadInfo(LastThreadContext *out_context, u64 *out_tls_address, u32 *out_flags);
|
||||||
|
|
||||||
|
///@}
|
||||||
|
|
||||||
///@name Resource Limit Management
|
///@name Resource Limit Management
|
||||||
///@{
|
///@{
|
||||||
|
|
||||||
@ -661,6 +744,76 @@ Result svcGetThreadContext3(ThreadContext* ctx, Handle thread);
|
|||||||
|
|
||||||
///@}
|
///@}
|
||||||
|
|
||||||
|
///@name Synchronization
|
||||||
|
///@{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Arbitrates an address depending on type and value. [4.0.0+]
|
||||||
|
* @param[in] address Address to arbitrate.
|
||||||
|
* @param[in] arb_type \ref ArbitrationType to use.
|
||||||
|
* @param[in] value Value to arbitrate on.
|
||||||
|
* @param[in] timeout Maximum time in nanoseconds to wait.
|
||||||
|
* @return Result code.
|
||||||
|
* @note Syscall number 0x34.
|
||||||
|
*/
|
||||||
|
Result svcWaitForAddress(void *address, u32 arb_type, s32 value, s64 timeout);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Signals (and updates) an address depending on type and value. [4.0.0+]
|
||||||
|
* @param[in] address Address to arbitrate.
|
||||||
|
* @param[in] signal_type \ref SignalType to use.
|
||||||
|
* @param[in] value Value to arbitrate on.
|
||||||
|
* @param[in] count Number of waiting threads to signal.
|
||||||
|
* @return Result code.
|
||||||
|
* @note Syscall number 0x35.
|
||||||
|
*/
|
||||||
|
Result svcSignalToAddress(void *address, u32 signal_type, s32 value, s32 count);
|
||||||
|
|
||||||
|
///@}
|
||||||
|
|
||||||
|
///@name Miscellaneous
|
||||||
|
///@{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Sets thread preemption state (used during abort/panic). [8.0.0+]
|
||||||
|
* @note Syscall number 0x36.
|
||||||
|
*/
|
||||||
|
void svcSynchronizePreemptionState(void);
|
||||||
|
|
||||||
|
///@}
|
||||||
|
|
||||||
|
///@name Debugging
|
||||||
|
///@{
|
||||||
|
/**
|
||||||
|
* @brief Causes the kernel to dump debug information. [1.0.0-3.0.2]
|
||||||
|
* @param[in] dump_info_type Type of information to dump.
|
||||||
|
* @param[in] arg0 Argument to the debugging operation.
|
||||||
|
* @note Syscall number 0x3C.
|
||||||
|
* @warning This is a privileged syscall. Use \ref envIsSyscallHinted to check if it is available.
|
||||||
|
*/
|
||||||
|
void svcDumpInfo(u32 dump_info_type, u64 arg0);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Performs a debugging operation on the kernel. [4.0.0+]
|
||||||
|
* @param[in] kern_debug_type Type of debugging operation to perform.
|
||||||
|
* @param[in] arg0 First argument to the debugging operation.
|
||||||
|
* @param[in] arg1 Second argument to the debugging operation.
|
||||||
|
* @param[in] arg2 Third argument to the debugging operation.
|
||||||
|
* @note Syscall number 0x3C.
|
||||||
|
* @warning This is a privileged syscall. Use \ref envIsSyscallHinted to check if it is available.
|
||||||
|
*/
|
||||||
|
void svcKernelDebug(u32 kern_debug_type, u64 arg0, u64 arg1, u64 arg2);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Performs a debugging operation on the kernel. [4.0.0+]
|
||||||
|
* @param[in] kern_trace_state Type of tracing the kernel should perform.
|
||||||
|
* @note Syscall number 0x3D.
|
||||||
|
* @warning This is a privileged syscall. Use \ref envIsSyscallHinted to check if it is available.
|
||||||
|
*/
|
||||||
|
void svcChangeKernelTraceState(u32 kern_trace_state);
|
||||||
|
|
||||||
|
///@}
|
||||||
|
\
|
||||||
///@name Inter-process communication (IPC)
|
///@name Inter-process communication (IPC)
|
||||||
///@{
|
///@{
|
||||||
|
|
||||||
@ -680,6 +833,15 @@ Result svcCreateSession(Handle *server_handle, Handle *client_handle, u32 unk0,
|
|||||||
*/
|
*/
|
||||||
Result svcAcceptSession(Handle *session_handle, Handle port_handle);
|
Result svcAcceptSession(Handle *session_handle, Handle port_handle);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Performs light IPC input/output.
|
||||||
|
* @return Result code.
|
||||||
|
* @param[in] handle Server or port handle to act on.
|
||||||
|
* @note Syscall number 0x42.
|
||||||
|
* @warning This is a privileged syscall. Use \ref envIsSyscallHinted to check if it is available.
|
||||||
|
*/
|
||||||
|
Result svcReplyAndReceiveLight(Handle handle);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Performs IPC input/output.
|
* @brief Performs IPC input/output.
|
||||||
* @return Result code.
|
* @return Result code.
|
||||||
@ -762,6 +924,18 @@ Result svcControlCodeMemory(Handle code_handle, CodeMapOperation op, void* dst_a
|
|||||||
|
|
||||||
///@}
|
///@}
|
||||||
|
|
||||||
|
///@name Power Management
|
||||||
|
///@{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Causes the system to enter deep sleep.
|
||||||
|
* @note Syscall number 0x4D.
|
||||||
|
* @warning This is a privileged syscall. Use \ref envIsSyscallHinted to check if it is available.
|
||||||
|
*/
|
||||||
|
void svcSleepSystem(void);
|
||||||
|
|
||||||
|
///@}
|
||||||
|
|
||||||
///@name Device memory-mapped I/O (MMIO)
|
///@name Device memory-mapped I/O (MMIO)
|
||||||
///@{
|
///@{
|
||||||
|
|
||||||
@ -775,6 +949,19 @@ Result svcReadWriteRegister(u32* outVal, u64 regAddr, u32 rwMask, u32 inVal);
|
|||||||
|
|
||||||
///@}
|
///@}
|
||||||
|
|
||||||
|
///@name Process and thread management
|
||||||
|
///@{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Configures the pause/unpause status of a process.
|
||||||
|
* @return Result code.
|
||||||
|
* @note Syscall number 0x4F.
|
||||||
|
* @warning This is a privileged syscall. Use \ref envIsSyscallHinted to check if it is available.
|
||||||
|
*/
|
||||||
|
Result svcSetProcessActivity(Handle process, bool paused);
|
||||||
|
|
||||||
|
///@}
|
||||||
|
|
||||||
///@name Inter-process memory sharing
|
///@name Inter-process memory sharing
|
||||||
///@{
|
///@{
|
||||||
|
|
||||||
@ -878,6 +1065,15 @@ Result svcMapDeviceAddressSpaceByForce(Handle handle, Handle proc_handle, u64 ma
|
|||||||
*/
|
*/
|
||||||
Result svcMapDeviceAddressSpaceAligned(Handle handle, Handle proc_handle, u64 map_addr, u64 dev_size, u64 dev_addr, u32 perm);
|
Result svcMapDeviceAddressSpaceAligned(Handle handle, Handle proc_handle, u64 map_addr, u64 dev_size, u64 dev_addr, u32 perm);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Maps an attached device address space to an userspace address.
|
||||||
|
* @return Result code.
|
||||||
|
* @remark The userspace destination address must have the \ref MemState_MapDeviceAlignedAllowed bit set.
|
||||||
|
* @note Syscall number 0x5B.
|
||||||
|
* @warning This is a privileged syscall. Use \ref envIsSyscallHinted to check if it is available.
|
||||||
|
*/
|
||||||
|
Result svcMapDeviceAddressSpace(u64 *out_mapped_size, Handle handle, Handle proc_handle, u64 map_addr, u64 dev_size, u64 dev_addr, u32 perm);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Unmaps an attached device address space from an userspace address.
|
* @brief Unmaps an attached device address space from an userspace address.
|
||||||
* @return Result code.
|
* @return Result code.
|
||||||
@ -888,6 +1084,38 @@ Result svcUnmapDeviceAddressSpace(Handle handle, Handle proc_handle, u64 map_add
|
|||||||
|
|
||||||
///@}
|
///@}
|
||||||
|
|
||||||
|
///@name Cache Management
|
||||||
|
///@{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Invalidates data cache for a virtual address range within a process.
|
||||||
|
* @param[in] address Address of region to invalidate.
|
||||||
|
* @param[in] size Size of region to invalidate.
|
||||||
|
* @note Syscall number 0x5D.
|
||||||
|
* @warning This is a privileged syscall. Use \ref envIsSyscallHinted to check if it is available.
|
||||||
|
*/
|
||||||
|
Result svcInvalidateProcessDataCache(Handle process, uintptr_t address, size_t size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Stores data cache for a virtual address range within a process.
|
||||||
|
* @param[in] address Address of region to store.
|
||||||
|
* @param[in] size Size of region to store.
|
||||||
|
* @note Syscall number 0x5E.
|
||||||
|
* @warning This is a privileged syscall. Use \ref envIsSyscallHinted to check if it is available.
|
||||||
|
*/
|
||||||
|
Result svcStoreProcessDataCache(Handle process, uintptr_t address, size_t size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Flushes data cache for a virtual address range within a process.
|
||||||
|
* @param[in] address Address of region to flush.
|
||||||
|
* @param[in] size Size of region to flush.
|
||||||
|
* @note Syscall number 0x5F.
|
||||||
|
* @warning This is a privileged syscall. Use \ref envIsSyscallHinted to check if it is available.
|
||||||
|
*/
|
||||||
|
Result svcFlushProcessDataCache(Handle process, uintptr_t address, size_t size);
|
||||||
|
|
||||||
|
///@}
|
||||||
|
|
||||||
///@name Debugging
|
///@name Debugging
|
||||||
///@{
|
///@{
|
||||||
|
|
||||||
@ -1017,6 +1245,14 @@ Result svcReadDebugProcessMemory(void* buffer, Handle debug, u64 addr, u64 size)
|
|||||||
*/
|
*/
|
||||||
Result svcWriteDebugProcessMemory(Handle debug, const void* buffer, u64 addr, u64 size);
|
Result svcWriteDebugProcessMemory(Handle debug, const void* buffer, u64 addr, u64 size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Sets one of the hardware breakpoints.
|
||||||
|
* @return Result code.
|
||||||
|
* @note Syscall number 0x6C.
|
||||||
|
* @warning This is a privileged syscall. Use \ref envIsSyscallHinted to check if it is available.
|
||||||
|
*/
|
||||||
|
Result svcSetHardwareBreakPoint(u32 which, u64 flags, u64 value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Gets parameters from a thread in a debugging session.
|
* @brief Gets parameters from a thread in a debugging session.
|
||||||
* @return Result code.
|
* @return Result code.
|
||||||
|
@ -191,6 +191,11 @@ SVC_BEGIN svcConnectToNamedPort
|
|||||||
ret
|
ret
|
||||||
SVC_END
|
SVC_END
|
||||||
|
|
||||||
|
SVC_BEGIN svcSendSyncRequestLight
|
||||||
|
svc 0x20
|
||||||
|
ret
|
||||||
|
SVC_END
|
||||||
|
|
||||||
SVC_BEGIN svcSendSyncRequest
|
SVC_BEGIN svcSendSyncRequest
|
||||||
svc 0x21
|
svc 0x21
|
||||||
ret
|
ret
|
||||||
@ -248,6 +253,16 @@ SVC_BEGIN svcGetInfo
|
|||||||
ret
|
ret
|
||||||
SVC_END
|
SVC_END
|
||||||
|
|
||||||
|
SVC_BEGIN svcFlushEntireDataCache
|
||||||
|
svc 0x2A
|
||||||
|
ret
|
||||||
|
SVC_END
|
||||||
|
|
||||||
|
SVC_BEGIN svcFlushDataCache
|
||||||
|
svc 0x2B
|
||||||
|
ret
|
||||||
|
SVC_END
|
||||||
|
|
||||||
SVC_BEGIN svcMapPhysicalMemory
|
SVC_BEGIN svcMapPhysicalMemory
|
||||||
svc 0x2C
|
svc 0x2C
|
||||||
ret
|
ret
|
||||||
@ -258,6 +273,29 @@ SVC_BEGIN svcUnmapPhysicalMemory
|
|||||||
ret
|
ret
|
||||||
SVC_END
|
SVC_END
|
||||||
|
|
||||||
|
SVC_BEGIN svcGetDebugFutureThreadInfo
|
||||||
|
stp x0, x1, [sp, #-16]!
|
||||||
|
svc 0x2E
|
||||||
|
ldp x6, x7, [sp], #16
|
||||||
|
stp x1, x2, [x6]
|
||||||
|
stp x3, x4, [x6, #16]
|
||||||
|
str x5, [x7]
|
||||||
|
ret
|
||||||
|
SVC_END
|
||||||
|
|
||||||
|
SVC_BEGIN svcGetLastThreadInfo
|
||||||
|
stp x1, x2, [sp, #-16]!
|
||||||
|
str x0, [sp, #-16]!
|
||||||
|
svc 0x2F
|
||||||
|
ldr x7, [sp], #16
|
||||||
|
stp x1, x2, [x7]
|
||||||
|
stp x3, x4, [x7, #16]
|
||||||
|
ldp x1, x2, [sp], #16
|
||||||
|
str x5, [x1]
|
||||||
|
str w6, [x2]
|
||||||
|
ret
|
||||||
|
SVC_END
|
||||||
|
|
||||||
SVC_BEGIN svcGetResourceLimitLimitValue
|
SVC_BEGIN svcGetResourceLimitLimitValue
|
||||||
str x0, [sp, #-16]!
|
str x0, [sp, #-16]!
|
||||||
svc 0x30
|
svc 0x30
|
||||||
@ -284,6 +322,36 @@ SVC_BEGIN svcGetThreadContext3
|
|||||||
ret
|
ret
|
||||||
SVC_END
|
SVC_END
|
||||||
|
|
||||||
|
SVC_BEGIN svcWaitForAddress
|
||||||
|
svc 0x34
|
||||||
|
ret
|
||||||
|
SVC_END
|
||||||
|
|
||||||
|
SVC_BEGIN svcSignalToAddress
|
||||||
|
svc 0x35
|
||||||
|
ret
|
||||||
|
SVC_END
|
||||||
|
|
||||||
|
SVC_BEGIN svcSynchronizePreemptionState
|
||||||
|
svc 0x36
|
||||||
|
ret
|
||||||
|
SVC_END
|
||||||
|
|
||||||
|
SVC_BEGIN svcDumpInfo
|
||||||
|
svc 0x3C
|
||||||
|
ret
|
||||||
|
SVC_END
|
||||||
|
|
||||||
|
SVC_BEGIN svcKernelDebug
|
||||||
|
svc 0x3C
|
||||||
|
ret
|
||||||
|
SVC_END
|
||||||
|
|
||||||
|
SVC_BEGIN svcChangeKernelTraceState
|
||||||
|
svc 0x3D
|
||||||
|
ret
|
||||||
|
SVC_END
|
||||||
|
|
||||||
SVC_BEGIN svcCreateSession
|
SVC_BEGIN svcCreateSession
|
||||||
stp x0, x1, [sp, #-16]!
|
stp x0, x1, [sp, #-16]!
|
||||||
svc 0x40
|
svc 0x40
|
||||||
@ -301,6 +369,11 @@ SVC_BEGIN svcAcceptSession
|
|||||||
ret
|
ret
|
||||||
SVC_END
|
SVC_END
|
||||||
|
|
||||||
|
SVC_BEGIN svcReplyAndReceiveLight
|
||||||
|
svc 0x42
|
||||||
|
ret
|
||||||
|
SVC_END
|
||||||
|
|
||||||
SVC_BEGIN svcReplyAndReceive
|
SVC_BEGIN svcReplyAndReceive
|
||||||
str x0, [sp, #-16]!
|
str x0, [sp, #-16]!
|
||||||
svc 0x43
|
svc 0x43
|
||||||
@ -354,6 +427,11 @@ SVC_BEGIN svcControlCodeMemory
|
|||||||
ret
|
ret
|
||||||
SVC_END
|
SVC_END
|
||||||
|
|
||||||
|
SVC_BEGIN svcSleepSystem
|
||||||
|
svc 0x4D
|
||||||
|
ret
|
||||||
|
SVC_END
|
||||||
|
|
||||||
SVC_BEGIN svcReadWriteRegister
|
SVC_BEGIN svcReadWriteRegister
|
||||||
str x0, [sp, #-16]!
|
str x0, [sp, #-16]!
|
||||||
svc 0x4E
|
svc 0x4E
|
||||||
@ -362,6 +440,11 @@ SVC_BEGIN svcReadWriteRegister
|
|||||||
ret
|
ret
|
||||||
SVC_END
|
SVC_END
|
||||||
|
|
||||||
|
SVC_BEGIN svcSetProcessActivity
|
||||||
|
svc 0x4F
|
||||||
|
ret
|
||||||
|
SVC_END
|
||||||
|
|
||||||
SVC_BEGIN svcCreateSharedMemory
|
SVC_BEGIN svcCreateSharedMemory
|
||||||
str x0, [sp, #-16]!
|
str x0, [sp, #-16]!
|
||||||
svc 0x50
|
svc 0x50
|
||||||
@ -433,11 +516,34 @@ SVC_BEGIN svcMapDeviceAddressSpaceAligned
|
|||||||
ret
|
ret
|
||||||
SVC_END
|
SVC_END
|
||||||
|
|
||||||
|
SVC_BEGIN svcMapDeviceAddressSpace
|
||||||
|
str x0, [sp, #-16]!
|
||||||
|
svc 0x5B
|
||||||
|
ldr x2, [sp], #16
|
||||||
|
str w1, [x2]
|
||||||
|
ret
|
||||||
|
SVC_END
|
||||||
|
|
||||||
SVC_BEGIN svcUnmapDeviceAddressSpace
|
SVC_BEGIN svcUnmapDeviceAddressSpace
|
||||||
svc 0x5C
|
svc 0x5C
|
||||||
ret
|
ret
|
||||||
SVC_END
|
SVC_END
|
||||||
|
|
||||||
|
SVC_BEGIN svcInvalidateProcessDataCache
|
||||||
|
svc 0x5D
|
||||||
|
ret
|
||||||
|
SVC_END
|
||||||
|
|
||||||
|
SVC_BEGIN svcStoreProcessDataCache
|
||||||
|
svc 0x5E
|
||||||
|
ret
|
||||||
|
SVC_END
|
||||||
|
|
||||||
|
SVC_BEGIN svcFlushProcessDataCache
|
||||||
|
svc 0x5F
|
||||||
|
ret
|
||||||
|
SVC_END
|
||||||
|
|
||||||
SVC_BEGIN svcDebugActiveProcess
|
SVC_BEGIN svcDebugActiveProcess
|
||||||
str x0, [sp, #-16]!
|
str x0, [sp, #-16]!
|
||||||
svc 0x60
|
svc 0x60
|
||||||
@ -515,6 +621,11 @@ SVC_BEGIN svcWriteDebugProcessMemory
|
|||||||
ret
|
ret
|
||||||
SVC_END
|
SVC_END
|
||||||
|
|
||||||
|
SVC_BEGIN svcSetHardwareBreakPoint
|
||||||
|
svc 0x6C
|
||||||
|
ret
|
||||||
|
SVC_END
|
||||||
|
|
||||||
SVC_BEGIN svcGetDebugThreadParam
|
SVC_BEGIN svcGetDebugThreadParam
|
||||||
stp x0, x1, [sp, #-16]!
|
stp x0, x1, [sp, #-16]!
|
||||||
svc 0x6D
|
svc 0x6D
|
||||||
|
Loading…
Reference in New Issue
Block a user