summaryrefslogtreecommitdiff
path: root/sys/src/libc/9syscall
diff options
context:
space:
mode:
authorTaru Karttunen <taruti@taruti.net>2011-03-30 15:46:40 +0300
committerTaru Karttunen <taruti@taruti.net>2011-03-30 15:46:40 +0300
commite5888a1ffdae813d7575f5fb02275c6bb07e5199 (patch)
treed8d51eac403f07814b9e936eed0c9a79195e2450 /sys/src/libc/9syscall
Import sources from 2011-03-30 iso image
Diffstat (limited to 'sys/src/libc/9syscall')
-rwxr-xr-xsys/src/libc/9syscall/mkfile145
-rwxr-xr-xsys/src/libc/9syscall/sys.h50
2 files changed, 195 insertions, 0 deletions
diff --git a/sys/src/libc/9syscall/mkfile b/sys/src/libc/9syscall/mkfile
new file mode 100755
index 000000000..081310e34
--- /dev/null
+++ b/sys/src/libc/9syscall/mkfile
@@ -0,0 +1,145 @@
+NPROC=1
+</$objtype/mkfile
+
+install:V:
+ SYS=`{sed '/^#define._X[123]/d; s/#define.([A-Z0-9_]*).*/\1/' sys.h}
+ for(I in $SYS) {
+ i=`{echo $I|tr A-Z a-z}
+ n=`{sed -n '/[ ]'$I'[ ]/s/.* //p' sys.h}
+ if(~ $i exits) i=_exits
+ {switch($objtype){
+ case 68000 68020
+ echo TEXT $i'(SB)', 1, '$0'
+ echo MOVL '$'$n, R0
+ echo TRAP '$0'
+ echo RTS
+ case mips
+ echo TEXT $i'(SB)', 1, '$0'
+ echo MOVW R1, '0(FP)'
+ echo MOVW '$'$n, R1
+ echo SYSCALL
+ if(~ $i seek) {
+ echo 'MOVW $-1,R5
+ BNE R1,R5,4(PC)
+ MOVW a+0(FP),R5
+ MOVW R1,0(R5)
+ MOVW R1,4(R5)'
+ }
+ echo RET
+ case mips2
+ echo TEXT $i'(SB)', 1, '$0'
+ echo MOVW R1, '0(FP)'
+ echo MOVW '$'$n, R1
+ echo ADD '$4',R29
+ echo SYSCALL
+ echo ADD '$-4',R29
+ echo RET
+ case spim
+ echo TEXT $i'(SB)', 1, '$0'
+ echo MOVW R1, '0(FP)'
+ echo MOVW '$'$n, R1
+ echo ADD '$4',R29
+ echo SYSCALL
+ echo ADD '$-4',R29
+ if(~ $i seek) { # untested so far - geoff
+ echo 'MOVW $-1,R5
+ BNE R1,R5,4(PC)
+ MOVW a+0(FP),R5
+ MOVW R1,0(R5)
+ MOVW R1,4(R5)'
+ }
+ echo RET
+ case 386
+ echo TEXT $i'(SB)', 1, '$0'
+ echo MOVL '$'$n, AX
+ echo INT '$'64
+ if(~ $i seek) {
+ echo 'CMPL AX,$-1
+ JNE 4(PC)
+ MOVL a+0(FP),CX
+ MOVL AX,0(CX)
+ MOVL AX,4(CX)'
+ }
+ echo RET
+ case amd64
+ if(~ $i seek)
+ echo TEXT _seek'(SB)', 1, '$0'
+ if not
+ echo TEXT $i'(SB)', 1, '$0'
+ echo MOVQ RARG, 'a0+0(FP)'
+ echo MOVQ '$'$n, RARG
+ echo SYSCALL
+ echo RET
+ case sparc sparc64
+ echo TEXT $i'(SB)', 1, '$0'
+ echo MOVW R7, '0(FP)'
+ echo MOVW '$'$n, R7
+ echo TA R0
+ if(~ $i seek) {
+ echo 'CMP R7,$-1
+ BNE 4(PC)
+ MOVW a+0(FP),R8
+ MOVW R7,0(R8)
+ MOVW R7,4(R8)'
+ }
+ echo RETURN
+ case 3210
+ echo TEXT $i'(SB)', 1, '$0'
+ echo MOVW R3, '0(FP)'
+ echo MOVW '$'$n, R3
+ echo WORD '$0x06000000'
+ echo RETURN
+ case 29000
+ echo TEXT $i'(SB)', 1, '$0'
+ echo MOVL R69, '0(FP)'
+ echo MOVL '$'$n, R69
+ echo EMULATE 0
+ echo RET
+ case arm
+ echo TEXT $i'(SB)', 1, '$0'
+ echo MOVW R0, '0(FP)'
+ echo MOVW '$'$n, R0
+ echo SWI 0
+ if(~ $i seek) {
+ echo 'CMP $-1,R0
+ BNE 4(PC)
+ MOVW a+0(FP),R1
+ MOVW R0,0(R1)
+ MOVW R0,4(R1)'
+ }
+ echo RET
+ case power
+ echo TEXT $i'(SB)', 1, '$0'
+ echo MOVW R3, '0(FP)'
+ echo MOVW '$'$n, R3
+ echo SYSCALL
+ if(~ $i seek) {
+ echo 'CMP R3,$-1
+ BNE 4(PC)
+ MOVW a+0(FP),R8
+ MOVW R3,0(R8)
+ MOVW R3,4(R8)'
+ }
+ echo RETURN
+ case alpha
+ j=$i
+ if(~ $i seek) j=_seek
+ echo TEXT $j'(SB)', 1, '$0'
+ echo MOVL R0, '0(FP)'
+ echo MOVQ '$'$n, R0
+ echo CALL_PAL '$'0x83
+ echo RET
+ }} > $i.s
+ $AS $i.s
+ }
+ ar vu /$objtype/lib/libc.a *.$O
+ rm -f *.$O *.s
+
+nuke clean:V:
+ rm -f *.[$OS]
+
+installall:V:
+ for(objtype in $CPUS) mk install
+
+update:V:
+ update $UPDATEFLAGS mkfile sys.h
diff --git a/sys/src/libc/9syscall/sys.h b/sys/src/libc/9syscall/sys.h
new file mode 100755
index 000000000..105baf89c
--- /dev/null
+++ b/sys/src/libc/9syscall/sys.h
@@ -0,0 +1,50 @@
+#define SYSR1 0
+#define _ERRSTR 1
+#define BIND 2
+#define CHDIR 3
+#define CLOSE 4
+#define DUP 5
+#define ALARM 6
+#define EXEC 7
+#define EXITS 8
+#define _FSESSION 9
+#define FAUTH 10
+#define _FSTAT 11
+#define SEGBRK 12
+#define _MOUNT 13
+#define OPEN 14
+#define _READ 15
+#define OSEEK 16
+#define SLEEP 17
+#define _STAT 18
+#define RFORK 19
+#define _WRITE 20
+#define PIPE 21
+#define CREATE 22
+#define FD2PATH 23
+#define BRK_ 24
+#define REMOVE 25
+#define _WSTAT 26
+#define _FWSTAT 27
+#define NOTIFY 28
+#define NOTED 29
+#define SEGATTACH 30
+#define SEGDETACH 31
+#define SEGFREE 32
+#define SEGFLUSH 33
+#define RENDEZVOUS 34
+#define UNMOUNT 35
+#define _WAIT 36
+#define SEMACQUIRE 37
+#define SEMRELEASE 38
+#define SEEK 39
+#define FVERSION 40
+#define ERRSTR 41
+#define STAT 42
+#define FSTAT 43
+#define WSTAT 44
+#define FWSTAT 45
+#define MOUNT 46
+#define AWAIT 47
+#define PREAD 50
+#define PWRITE 51