i think it works
This commit is contained in:
commit
0e1479b168
167 files changed
+27008
No files matched your search
@@ -0,0 +1,32 @@
|
||||
; syscall_nr.inc - assembled from syscall_nr.h for use in .asm files
|
||||
SYS_EXIT_THREAD EQU 0
|
||||
SYS_EXIT_PROCESS EQU 1
|
||||
SYS_SPAWN EQU 2
|
||||
SYS_SLEEP EQU 3
|
||||
SYS_YIELD EQU 4
|
||||
SYS_ALLOC EQU 5
|
||||
SYS_FREE EQU 6
|
||||
SYS_CREATE_THREAD EQU 7
|
||||
SYS_OPEN_HANDLE EQU 8
|
||||
SYS_CLOSE_HANDLE EQU 9
|
||||
SYS_DBG_PRINT EQU 10
|
||||
SYS_MUTEX_CREATE EQU 11
|
||||
SYS_MUTEX_ACQUIRE EQU 12
|
||||
SYS_MUTEX_RELEASE EQU 13
|
||||
SYS_SEM_CREATE EQU 14
|
||||
SYS_SEM_WAIT EQU 15
|
||||
SYS_SEM_SIGNAL EQU 16
|
||||
SYS_EVENT_CREATE EQU 17
|
||||
SYS_EVENT_SET EQU 18
|
||||
SYS_EVENT_WAIT EQU 19
|
||||
SYS_QUEUE_CREATE EQU 20
|
||||
SYS_QUEUE_SEND EQU 21
|
||||
SYS_QUEUE_RECV EQU 22
|
||||
SYS_SCREEN_BLIT EQU 23
|
||||
SYS_GET_TICK EQU 24
|
||||
SYS_OPEN EQU 25
|
||||
SYS_READ EQU 26
|
||||
SYS_FCLOSE EQU 27
|
||||
SYS_FSEEK EQU 28
|
||||
SYS_FSIZE EQU 29
|
||||
SYS_MAX EQU 30
|
||||
@@ -0,0 +1,180 @@
|
||||
; syscall_stubs.asm - user-mode INT 0x2E stubs exported by syscall.dll (MASM64)
|
||||
; Microsoft x64 ABI: args in RCX, RDX, R8, R9; args 5+6 in R10, R11.
|
||||
|
||||
INCLUDE syscall_nr.inc ; SYS_* constants
|
||||
|
||||
.CODE
|
||||
|
||||
SysExitThread PROC
|
||||
mov rax, SYS_EXIT_THREAD
|
||||
int 40h
|
||||
ret
|
||||
SysExitThread ENDP
|
||||
|
||||
SysExitProcess PROC
|
||||
mov rax, SYS_EXIT_PROCESS
|
||||
int 40h
|
||||
ret
|
||||
SysExitProcess ENDP
|
||||
|
||||
SysYield PROC
|
||||
mov rax, SYS_YIELD
|
||||
int 40h
|
||||
ret
|
||||
SysYield ENDP
|
||||
|
||||
SysSleep PROC ; RCX = milliseconds
|
||||
mov rax, SYS_SLEEP
|
||||
int 40h
|
||||
ret
|
||||
SysSleep ENDP
|
||||
|
||||
SysAlloc PROC ; RCX = size -> RAX = ptr
|
||||
mov rax, SYS_ALLOC
|
||||
int 40h
|
||||
ret
|
||||
SysAlloc ENDP
|
||||
|
||||
SysFree PROC ; RCX = ptr, RDX = size
|
||||
mov rax, SYS_FREE
|
||||
int 40h
|
||||
ret
|
||||
SysFree ENDP
|
||||
|
||||
SysCreateThread PROC ; RCX=entry, RDX=arg, R8=priority -> RAX=handle
|
||||
mov rax, SYS_CREATE_THREAD
|
||||
int 40h
|
||||
ret
|
||||
SysCreateThread ENDP
|
||||
|
||||
SysCloseHandle PROC ; RCX = handle
|
||||
mov rax, SYS_CLOSE_HANDLE
|
||||
int 40h
|
||||
ret
|
||||
SysCloseHandle ENDP
|
||||
|
||||
SysDbgPrint PROC ; RCX = string ptr
|
||||
mov rax, SYS_DBG_PRINT
|
||||
int 40h
|
||||
ret
|
||||
SysDbgPrint ENDP
|
||||
|
||||
SysMutexCreate PROC ; -> RAX = handle
|
||||
mov rax, SYS_MUTEX_CREATE
|
||||
int 40h
|
||||
ret
|
||||
SysMutexCreate ENDP
|
||||
|
||||
SysMutexAcquire PROC ; RCX = handle
|
||||
mov rax, SYS_MUTEX_ACQUIRE
|
||||
int 40h
|
||||
ret
|
||||
SysMutexAcquire ENDP
|
||||
|
||||
SysMutexRelease PROC ; RCX = handle
|
||||
mov rax, SYS_MUTEX_RELEASE
|
||||
int 40h
|
||||
ret
|
||||
SysMutexRelease ENDP
|
||||
|
||||
SysSemCreate PROC ; RCX=initial, RDX=max -> RAX=handle
|
||||
mov rax, SYS_SEM_CREATE
|
||||
int 40h
|
||||
ret
|
||||
SysSemCreate ENDP
|
||||
|
||||
SysSemWait PROC ; RCX = handle
|
||||
mov rax, SYS_SEM_WAIT
|
||||
int 40h
|
||||
ret
|
||||
SysSemWait ENDP
|
||||
|
||||
SysSemSignal PROC ; RCX = handle
|
||||
mov rax, SYS_SEM_SIGNAL
|
||||
int 40h
|
||||
ret
|
||||
SysSemSignal ENDP
|
||||
|
||||
SysEventCreate PROC ; RCX=manualReset, RDX=initialState -> RAX=handle
|
||||
mov rax, SYS_EVENT_CREATE
|
||||
int 40h
|
||||
ret
|
||||
SysEventCreate ENDP
|
||||
|
||||
SysEventSet PROC ; RCX = handle
|
||||
mov rax, SYS_EVENT_SET
|
||||
int 40h
|
||||
ret
|
||||
SysEventSet ENDP
|
||||
|
||||
SysEventWait PROC ; RCX = handle
|
||||
mov rax, SYS_EVENT_WAIT
|
||||
int 40h
|
||||
ret
|
||||
SysEventWait ENDP
|
||||
|
||||
SysQueueCreate PROC ; -> RAX = handle
|
||||
mov rax, SYS_QUEUE_CREATE
|
||||
int 40h
|
||||
ret
|
||||
SysQueueCreate ENDP
|
||||
|
||||
SysQueueSend PROC ; RCX=handle, RDX=*msg, R8=blocking
|
||||
mov rax, SYS_QUEUE_SEND
|
||||
int 40h
|
||||
ret
|
||||
SysQueueSend ENDP
|
||||
|
||||
SysQueueRecv PROC ; RCX=handle, RDX=*msg, R8=blocking
|
||||
mov rax, SYS_QUEUE_RECV
|
||||
int 40h
|
||||
ret
|
||||
SysQueueRecv ENDP
|
||||
|
||||
SysScreenBlit PROC
|
||||
; RCX=x, RDX=y, R8=w, R9=h
|
||||
; The 5th arg (pixels) is on the stack above the 32-byte shadow space and return address.
|
||||
mov r10, [rsp + 40]
|
||||
|
||||
mov rax, SYS_SCREEN_BLIT
|
||||
int 40h
|
||||
ret
|
||||
SysScreenBlit ENDP
|
||||
|
||||
SysGetTick PROC ; -> RAX = milliseconds
|
||||
mov rax, SYS_GET_TICK
|
||||
int 40h
|
||||
ret
|
||||
SysGetTick ENDP
|
||||
|
||||
SysOpen PROC ; RCX = *path -> RAX = handle (0 = failure)
|
||||
mov rax, SYS_OPEN
|
||||
int 40h
|
||||
ret
|
||||
SysOpen ENDP
|
||||
|
||||
SysRead PROC ; RCX = handle, RDX = *buf, R8 = size -> RAX = bytes read
|
||||
mov rax, SYS_READ
|
||||
int 40h
|
||||
ret
|
||||
SysRead ENDP
|
||||
|
||||
SysFClose PROC ; RCX = handle
|
||||
mov rax, SYS_FCLOSE
|
||||
int 40h
|
||||
ret
|
||||
SysFClose ENDP
|
||||
|
||||
SysFSeek PROC ; RCX = handle, RDX = offset
|
||||
mov rax, SYS_FSEEK
|
||||
int 40h
|
||||
ret
|
||||
SysFSeek ENDP
|
||||
|
||||
SysFSize PROC ; RCX = handle -> RAX = size in bytes
|
||||
mov rax, SYS_FSIZE
|
||||
int 40h
|
||||
ret
|
||||
SysFSize ENDP
|
||||
|
||||
END
|
||||
Reference in new issue
Block a user