1 
2 #ifndef __SYS_SYSCALL_H__
3 #define __SYS_SYSCALL_H__
4 
5 #define SYSCALL_NULL		0x00
6 #define SYSCALL_TIME		0x01
7 #define SYSCALL_GETPID		0x02
8 #define SYSCALL_EXIT		0x03
9 #define SYSCALL_SPAWN		0x04
10 #define SYSCALL_WAIT		0x05
11 
12 // Memory
13 #define SYSCALL_MMAP		0x08
14 #define SYSCALL_MUNMAP		0x09
15 #define SYSCALL_MPROTECT	0x0A
16 
17 // Stream
18 #define SYSCALL_READ		0x10
19 #define SYSCALL_WRITE		0x11
20 #define SYSCALL_FLUSH		0x12
21 
22 // File
23 #define SYSCALL_OPEN		0x18
24 #define SYSCALL_CLOSE		0x19
25 #define SYSCALL_MOVE		0x1A
26 #define SYSCALL_DELETE		0x1B
27 #define SYSCALL_SETLENGTH	0x1C
28 #define SYSCALL_STAT		0x1D
29 #define SYSCALL_READDIR		0x1E
30 
31 // IPC
32 #define SYSCALL_PIPE		0x20
33 
34 // Threading
35 #define SYSCALL_THREADCREATE	0x30
36 #define SYSCALL_GETTID		0x31
37 #define SYSCALL_THREADEXIT	0x32
38 #define SYSCALL_THREADSLEEP	0x33
39 #define SYSCALL_THREADWAIT	0x34
40 
41 // Network
42 #define SYSCALL_NICSTAT		0x40
43 #define SYSCALL_NICSEND		0x41
44 #define SYSCALL_NICRECV		0x42
45 
46 // System
47 #define SYSCALL_SYSCTL		0x80
48 #define SYSCALL_FSMOUNT		0x81
49 #define SYSCALL_FSUNMOUNT	0x82
50 #define SYSCALL_FSINFO		0x83
51 
52 uint64_t Syscall_Entry(uint64_t syscall, uint64_t a1, uint64_t a2,
53 		       uint64_t a3, uint64_t a4, uint64_t a5);
54 
55 #define SYSCALL_PACK(_errcode, _val) (((uint64_t)_errcode << 32) | (_val))
56 #define SYSCALL_ERRCODE(_result) (_result >> 32)
57 #define SYSCALL_VALUE(_result) (_result & 0xFFFFFFFF)
58 
59 #endif /* __SYS_SYSCALL_H__ */
60 
61