aboutsummaryrefslogtreecommitdiff
path: root/compiler/standardClient.ey
diff options
context:
space:
mode:
authorDrahflow <drahflow@gmx.de>2013-02-01 18:08:17 +0100
committerDrahflow <drahflow@gmx.de>2013-02-01 18:08:17 +0100
commit483c6f84d4ad5080d05b133df9734febd60ca574 (patch)
tree6536dd19db450c879171e644b1b923e40e033e54 /compiler/standardClient.ey
parent08bdc8acf1f951f071583150ab3c755450d96c4b (diff)
sys .asm existing
Diffstat (limited to 'compiler/standardClient.ey')
-rw-r--r--compiler/standardClient.ey39
1 files changed, 38 insertions, 1 deletions
diff --git a/compiler/standardClient.ey b/compiler/standardClient.ey
index c865a5e..a788d92 100644
--- a/compiler/standardClient.ey
+++ b/compiler/standardClient.ey
@@ -1,16 +1,26 @@
-<
+< # sys extensions
# TODO: handle EINTR correctly
0 _ ==RDONLY
1 _ ==WRONLY
2 _ ==RDWR
bor bor ==RWMASK
+
+ 1 ==PROTREAD
+ 2 ==PROTWRITE
+ 4 ==PROTEXEC
+
+ 2 ==MAPPRIVATE
+ 32 ==MAPANONYMOUS
0 ==READ
1 ==WRITE
2 ==OPEN
3 ==CLOSE
+ 9 ==MMAP
+ 11 ==MUNMAP
+
{ < ==mode ==flags ==fd <
{ flags RWMASK bnot band RDONLY bor =flags } /readonly deff
{ flags RWMASK bnot band WRONLY bor =flags } /writeonly deff
@@ -53,6 +63,33 @@
0 RDONLY 0 makefile /in sys .defv
1 WRONLY 0 makefile /out sys .defv
2 WRONLY 0 makefile /err sys .defv
+
+ < # sys .asm extensions
+ { ==reqAddr ==reqSize
+ <
+ reqAddr
+ reqSize
+ PROTEXEC PROTREAD PROTWRITE bor bor
+ MAPPRIVATE MAPANONYMOUS bor
+ 1 neg
+ 0
+ MMAP sys .asm .syscall -- _
+ 0 lt { "mmap failed" die } rep
+
+ ==base
+ reqSize ==size
+
+ {
+ base size 0 0 0 0 MUNMAP sys .asm .syscall --
+ 0 lt { "munmap failed" die } rep
+ } =*free
+ >
+ } /allocAt sys .asm .deff
+
+ {
+ 0 sys .asm .allocAt
+ } /alloc sys .asm .deff
+ > --
> --
# vim: syn=elymas