forked from KolibriOS/kolibrios
74 lines
2.2 KiB
PHP
74 lines
2.2 KiB
PHP
|
; Header for Linux program
|
||
|
format ELF executable 3
|
||
|
entry start
|
||
|
; for system calls
|
||
|
include 'unistd.inc'
|
||
|
macro __mov a,b
|
||
|
{
|
||
|
if b eq
|
||
|
else if ~(b eqtype 1)
|
||
|
mov a, b
|
||
|
else if b = 0
|
||
|
xor a, a
|
||
|
else if (b < 0x80) & (b >= -0x80)
|
||
|
push b
|
||
|
pop a
|
||
|
else
|
||
|
mov a, b
|
||
|
end if
|
||
|
}
|
||
|
macro kercall a,b,c,d,e,f,g
|
||
|
{
|
||
|
__mov eax, a
|
||
|
__mov ebx, b
|
||
|
__mov ecx, c
|
||
|
__mov edx, d
|
||
|
__mov esi, e
|
||
|
__mov edi, f
|
||
|
__mov ebp, g
|
||
|
int 0x80
|
||
|
}
|
||
|
macro stdcall func,[arg]
|
||
|
{
|
||
|
reverse
|
||
|
pushd arg
|
||
|
common
|
||
|
call func
|
||
|
}
|
||
|
PROT_READ = 0x1 ; page can be read
|
||
|
PROT_WRITE = 0x2 ; page can be written
|
||
|
PROT_EXEC = 0x4 ; page can be executed
|
||
|
PROT_SEM = 0x8 ; page may be used for atomic ops
|
||
|
PROT_NONE = 0x0 ; page can not be accessed
|
||
|
PROT_GROWSDOWN = 0x01000000 ; mprotect flag: extend change to start of growsdown vma
|
||
|
PROT_GROWSUP = 0x02000000 ; mprotect flag: extend change to end of growsup vma
|
||
|
|
||
|
MAP_SHARED = 0x01 ; Share changes
|
||
|
MAP_PRIVATE = 0x02 ; Changes are private
|
||
|
MAP_TYPE = 0x0f ; Mask for type of mapping
|
||
|
MAP_FIXED = 0x10 ; Interpret addr exactly
|
||
|
MAP_ANONYMOUS = 0x20 ; don't use a file
|
||
|
|
||
|
O_ACCMODE = 00000003
|
||
|
O_RDONLY = 00000000
|
||
|
O_WRONLY = 00000001
|
||
|
O_RDWR = 00000002
|
||
|
O_CREAT = 00000100 ; not fcntl
|
||
|
O_EXCL = 00000200 ; not fcntl
|
||
|
O_NOCTTY = 00000400 ; not fcntl
|
||
|
O_TRUNC = 00001000 ; not fcntl
|
||
|
O_APPEND = 00002000
|
||
|
O_NONBLOCK = 00004000
|
||
|
O_DSYNC = 00010000 ; used to be O_SYNC, see below
|
||
|
FASYNC = 00020000 ; fcntl, for BSD compatibility
|
||
|
O_DIRECT = 00040000 ; direct disk access hint
|
||
|
O_LARGEFILE = 00100000
|
||
|
O_DIRECTORY = 00200000 ; must be a directory
|
||
|
O_NOFOLLOW = 00400000 ; don't follow links
|
||
|
O_NOATIME = 01000000
|
||
|
O_CLOEXEC = 02000000 ; set close_on_exec
|
||
|
__O_SYNC = 04000000
|
||
|
O_SYNC = (__O_SYNC + O_DSYNC)
|
||
|
O_NDELAY = O_NONBLOCK
|
||
|
segment readable executable
|