2019-06-16 05:37:41 +01:00
|
|
|
/**
|
|
|
|
* @file svc.s
|
|
|
|
* @copyright libnx Authors
|
|
|
|
*/
|
|
|
|
|
|
|
|
.macro SVC_BEGIN name
|
|
|
|
.section .text.\name, "ax", %progbits
|
|
|
|
.global \name
|
|
|
|
.type \name, %function
|
|
|
|
.align 2
|
|
|
|
.cfi_startproc
|
|
|
|
\name:
|
|
|
|
.endm
|
|
|
|
|
|
|
|
.macro SVC_END
|
|
|
|
.cfi_endproc
|
|
|
|
.endm
|
|
|
|
|
|
|
|
SVC_BEGIN svcQueryIoMapping
|
2020-04-14 19:15:19 +01:00
|
|
|
STP X0, X1, [SP, #-16]!
|
|
|
|
SVC 0x55
|
|
|
|
LDP X3, X4, [SP], #16
|
|
|
|
STR X1, [X3]
|
|
|
|
STR X2, [X4]
|
|
|
|
RET
|
|
|
|
SVC_END
|
|
|
|
|
|
|
|
SVC_BEGIN svcLegacyQueryIoMapping
|
2019-06-16 05:37:41 +01:00
|
|
|
STR X0, [SP, #-16]!
|
|
|
|
SVC 0x55
|
|
|
|
LDR X2, [SP], #16
|
|
|
|
STR X1, [X2]
|
|
|
|
RET
|
|
|
|
SVC_END
|
|
|
|
|
|
|
|
SVC_BEGIN svcAttachDeviceAddressSpace
|
|
|
|
SVC 0x57
|
|
|
|
RET
|
|
|
|
SVC_END
|
|
|
|
|
|
|
|
SVC_BEGIN svcQueryMemory
|
|
|
|
STR X1, [SP, #-16]!
|
|
|
|
SVC 0x6
|
|
|
|
LDR X2, [SP], #16
|
|
|
|
STR W1, [X2]
|
|
|
|
RET
|
|
|
|
SVC_END
|
|
|
|
|
|
|
|
SVC_BEGIN svcSetMemoryPermission
|
|
|
|
SVC 0x2
|
|
|
|
RET
|
|
|
|
SVC_END
|
|
|
|
|
|
|
|
SVC_BEGIN svcSetProcessMemoryPermission
|
|
|
|
SVC 0x73
|
|
|
|
RET
|
|
|
|
SVC_END
|
|
|
|
|
2020-06-09 02:11:16 +01:00
|
|
|
SVC_BEGIN svcCreateThread
|
|
|
|
STR X0, [SP, #-16]!
|
|
|
|
SVC 0x8
|
|
|
|
LDR X2, [SP], #16
|
|
|
|
STR W1, [X2]
|
|
|
|
RET
|
|
|
|
SVC_END
|
|
|
|
|
|
|
|
SVC_BEGIN svcStartThread
|
|
|
|
SVC 0x9
|
|
|
|
RET
|
|
|
|
SVC_END
|
|
|
|
|
|
|
|
SVC_BEGIN svcExitThread
|
|
|
|
SVC 0xA
|
|
|
|
RET
|
|
|
|
SVC_END
|
|
|
|
|
|
|
|
SVC_BEGIN svcCloseHandle
|
|
|
|
SVC 0x16
|
|
|
|
RET
|
|
|
|
SVC_END
|
|
|
|
|
|
|
|
SVC_BEGIN svcWaitSynchronization
|
|
|
|
STR X0, [SP, #-16]!
|
|
|
|
SVC 0x18
|
|
|
|
LDR X2, [SP], #16
|
|
|
|
STR W1, [X2]
|
|
|
|
RET
|
|
|
|
SVC_END
|
|
|
|
|
|
|
|
SVC_BEGIN svcCreateSession
|
|
|
|
STP X0, X1, [SP, #-16]!
|
|
|
|
SVC 0x40
|
|
|
|
LDP X3, X4, [SP], #16
|
|
|
|
STR W1, [X3]
|
|
|
|
STR W2, [X4]
|
|
|
|
RET
|
|
|
|
SVC_END
|
|
|
|
|
|
|
|
SVC_BEGIN svcSendSyncRequest
|
|
|
|
SVC 0x21
|
|
|
|
RET
|
|
|
|
SVC_END
|
|
|
|
|
|
|
|
SVC_BEGIN svcReplyAndReceive
|
|
|
|
STR X0, [SP, #-16]!
|
|
|
|
SVC 0x43
|
|
|
|
LDR X2, [SP], #16
|
|
|
|
STR W1, [X2]
|
|
|
|
RET
|
|
|
|
SVC_END
|
|
|
|
|
|
|
|
SVC_BEGIN svcMapProcessMemory
|
|
|
|
SVC 0x74
|
|
|
|
RET
|
|
|
|
SVC_END
|
|
|
|
|
|
|
|
SVC_BEGIN svcUnmapProcessMemory
|
|
|
|
SVC 0x75
|
|
|
|
RET
|
|
|
|
SVC_END
|
|
|
|
|
2019-06-16 05:37:41 +01:00
|
|
|
SVC_BEGIN svcCallSecureMonitor
|
|
|
|
STR X0, [SP, #-16]!
|
|
|
|
MOV X8, X0
|
|
|
|
LDP X0, X1, [X8]
|
|
|
|
LDP X2, X3, [X8, #0x10]
|
|
|
|
LDP X4, X5, [X8, #0x20]
|
|
|
|
LDP X6, X7, [X8, #0x30]
|
|
|
|
SVC 0x7F
|
|
|
|
LDR X8, [SP], #16
|
|
|
|
STP X0, X1, [X8]
|
|
|
|
STP X2, X3, [X8, #0x10]
|
|
|
|
STP X4, X5, [X8, #0x20]
|
|
|
|
STP X6, X7, [X8, #0x30]
|
|
|
|
RET
|
|
|
|
SVC_END
|