Initial revision
This commit is contained in:
parent
cac49c513c
commit
709fee14c6
11 changed files with 266 additions and 0 deletions
6
mach/minix/.distr
Normal file
6
mach/minix/.distr
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
Action
|
||||||
|
libm2
|
||||||
|
liboc
|
||||||
|
libcc
|
||||||
|
libpc
|
||||||
|
libsys
|
15
mach/minix/Action
Normal file
15
mach/minix/Action
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
name "Minix PC C libraries"
|
||||||
|
dir libcc
|
||||||
|
end
|
||||||
|
name "Minix PC Pascal library"
|
||||||
|
dir libpc
|
||||||
|
end
|
||||||
|
name "Minix PC systemcall library"
|
||||||
|
dir libsys
|
||||||
|
end
|
||||||
|
name "Minix PC Occam library"
|
||||||
|
dir liboc
|
||||||
|
end
|
||||||
|
name "Minix PC Modula-2 library"
|
||||||
|
dir libm2
|
||||||
|
end
|
7
mach/minix/libsys/.distr
Normal file
7
mach/minix/libsys/.distr
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
LIST
|
||||||
|
Makefile
|
||||||
|
compmodule
|
||||||
|
head_em.s
|
||||||
|
end.s
|
||||||
|
lib.h
|
||||||
|
libsys_s.a
|
56
mach/minix/libsys/LIST
Normal file
56
mach/minix/libsys/LIST
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
libsys_s.a
|
||||||
|
stty.c
|
||||||
|
gtty.c
|
||||||
|
access.c
|
||||||
|
alarm.c
|
||||||
|
brk.c
|
||||||
|
call.c
|
||||||
|
chdir.c
|
||||||
|
chmod.c
|
||||||
|
chown.c
|
||||||
|
chroot.c
|
||||||
|
close.c
|
||||||
|
creat.c
|
||||||
|
dup.c
|
||||||
|
dup2.c
|
||||||
|
exec.c
|
||||||
|
exit.c
|
||||||
|
cleanup.c
|
||||||
|
fork.c
|
||||||
|
fstat.c
|
||||||
|
getegid.c
|
||||||
|
geteuid.c
|
||||||
|
getgid.c
|
||||||
|
getpid.c
|
||||||
|
getuid.c
|
||||||
|
ioctl.c
|
||||||
|
kill.c
|
||||||
|
link.c
|
||||||
|
lseek.c
|
||||||
|
message.c
|
||||||
|
mknod.c
|
||||||
|
mktemp.c
|
||||||
|
mount.c
|
||||||
|
open.c
|
||||||
|
pause.c
|
||||||
|
pipe.c
|
||||||
|
read.c
|
||||||
|
setgid.c
|
||||||
|
setuid.c
|
||||||
|
signal.c
|
||||||
|
stat.c
|
||||||
|
stderr.c
|
||||||
|
stime.c
|
||||||
|
sync.c
|
||||||
|
syslib.c
|
||||||
|
time.c
|
||||||
|
times.c
|
||||||
|
umask.c
|
||||||
|
umount.c
|
||||||
|
unlink.c
|
||||||
|
utime.c
|
||||||
|
wait.c
|
||||||
|
write.c
|
||||||
|
brksize.s
|
||||||
|
sendrec.s
|
||||||
|
catchsig.s
|
40
mach/minix/libsys/Makefile
Normal file
40
mach/minix/libsys/Makefile
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
# $Header$
|
||||||
|
MACH=minix
|
||||||
|
|
||||||
|
all: libsys_o.a end.o head_em.o
|
||||||
|
|
||||||
|
install: all
|
||||||
|
../../install libsys_o.a tail_mon
|
||||||
|
../../install head_em.o head_em
|
||||||
|
../../install end.o end_em
|
||||||
|
|
||||||
|
cmp: all
|
||||||
|
-../../compare libsys_o.a tail_mon
|
||||||
|
-../../compare head_em.o head_em
|
||||||
|
-../../compare end.o end_em
|
||||||
|
|
||||||
|
|
||||||
|
end.o: end.s
|
||||||
|
$(MACH) -I../../../h -O -c end.s
|
||||||
|
|
||||||
|
head_em.o: head_em.s
|
||||||
|
$(MACH) -I../../../h -O -c head_em.s
|
||||||
|
|
||||||
|
libsys.a: libsys_s.a
|
||||||
|
ASAR=aal ; export ASAR ;\
|
||||||
|
march . libsys.a
|
||||||
|
|
||||||
|
libsys_o.a: libsys.a ../../../lib/i86/tail_em
|
||||||
|
mkdir X; cd X; aal x ../libsys.a; aal x ../../../../lib/i86/tail_em; aal rv ../libsys_o.a *.o
|
||||||
|
rm -rf X
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *.o libsys_o.a libsys.a
|
||||||
|
|
||||||
|
opr :
|
||||||
|
make pr | opr
|
||||||
|
|
||||||
|
pr:
|
||||||
|
@pr `pwd`/head_em.s
|
||||||
|
@arch pv libsys.a | pr -h `pwd`/libsys.a
|
||||||
|
@pr `pwd`/end.s
|
4
mach/minix/libsys/brksize.s
Normal file
4
mach/minix/libsys/brksize.s
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
.define _brksize
|
||||||
|
.globl endbss, _brksize
|
||||||
|
.data
|
||||||
|
_brksize: .word endbss
|
40
mach/minix/libsys/catchsig.s
Normal file
40
mach/minix/libsys/catchsig.s
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
.define _begsig
|
||||||
|
.globl _begsig
|
||||||
|
.globl _vectab, _M
|
||||||
|
mtype = 2 | M+mtype = &M.m_type
|
||||||
|
_begsig:
|
||||||
|
push ax | after interrupt, save all regs
|
||||||
|
push bx
|
||||||
|
push cx
|
||||||
|
push dx
|
||||||
|
push si
|
||||||
|
push di
|
||||||
|
push bp
|
||||||
|
push ds
|
||||||
|
push es
|
||||||
|
mov bx,sp
|
||||||
|
mov bx,18(bx) | bx = signal number
|
||||||
|
mov ax,bx | ax = signal number
|
||||||
|
dec bx | vectab[0] is for sig 1
|
||||||
|
add bx,bx | pointers are two bytes on 8088
|
||||||
|
mov bx,_vectab(bx) | bx = address of routine to call
|
||||||
|
push _M+mtype | push status of last system call
|
||||||
|
push ax | func called with signal number as arg
|
||||||
|
call (bx)
|
||||||
|
back:
|
||||||
|
pop ax | get signal number off stack
|
||||||
|
pop _M+mtype | restore status of previous system call
|
||||||
|
pop es | signal handling finished
|
||||||
|
pop ds
|
||||||
|
pop bp
|
||||||
|
pop di
|
||||||
|
pop si
|
||||||
|
pop dx
|
||||||
|
pop cx
|
||||||
|
pop bx
|
||||||
|
pop ax
|
||||||
|
pop dummy | remove signal number from stack
|
||||||
|
iret
|
||||||
|
|
||||||
|
.data
|
||||||
|
dummy: .word 0
|
4
mach/minix/libsys/compmodule
Executable file
4
mach/minix/libsys/compmodule
Executable file
|
@ -0,0 +1,4 @@
|
||||||
|
if minix -c -L -LIB $1 1>&2
|
||||||
|
then echo `basename $1 $2`.o
|
||||||
|
else exit 1
|
||||||
|
fi
|
10
mach/minix/libsys/end.s
Normal file
10
mach/minix/libsys/end.s
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
.define endtext, enddata, endbss, _end, _edata
|
||||||
|
.globl endtext, enddata, endbss, _end, _edata
|
||||||
|
.text
|
||||||
|
endtext:
|
||||||
|
.data
|
||||||
|
enddata:
|
||||||
|
_edata:
|
||||||
|
.bss
|
||||||
|
endbss:
|
||||||
|
_end:
|
52
mach/minix/libsys/head_em.s
Normal file
52
mach/minix/libsys/head_em.s
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
.sect .text; .sect .rom; .sect .data; .sect .bss
|
||||||
|
|
||||||
|
.define begtext,begdata,begbss
|
||||||
|
.define hol0,.reghp,.limhp,.trppc,.ignmask
|
||||||
|
.define ERANGE,ESET,EHEAP,ECASE,EILLINS,EIDIVZ,EODDZ
|
||||||
|
.extern _end
|
||||||
|
|
||||||
|
ERANGE = 1
|
||||||
|
ESET = 2
|
||||||
|
EIDIVZ = 6
|
||||||
|
EHEAP = 17
|
||||||
|
EILLINS = 18
|
||||||
|
EODDZ = 19
|
||||||
|
ECASE = 20
|
||||||
|
|
||||||
|
.sect .text
|
||||||
|
begtext:
|
||||||
|
mov bx,sp
|
||||||
|
mov cx,(bx)
|
||||||
|
add bx,2
|
||||||
|
mov ax,cx
|
||||||
|
inc ax
|
||||||
|
shl ax,1
|
||||||
|
add ax,bx
|
||||||
|
push ax
|
||||||
|
push bx
|
||||||
|
push cx
|
||||||
|
xor bp,bp
|
||||||
|
call _m_a_i_n
|
||||||
|
call _exit
|
||||||
|
.sect .data
|
||||||
|
begdata:
|
||||||
|
hol0:
|
||||||
|
.data2 0,0
|
||||||
|
.data2 0,0
|
||||||
|
argv:
|
||||||
|
.data2 3f
|
||||||
|
envp:
|
||||||
|
.data2 0
|
||||||
|
3:
|
||||||
|
.asciz "PROGRAM"
|
||||||
|
.reghp:
|
||||||
|
.data2 endbss
|
||||||
|
.limhp:
|
||||||
|
.data2 endbss
|
||||||
|
.ignmask:
|
||||||
|
.data2 0
|
||||||
|
.trppc:
|
||||||
|
.data2 0
|
||||||
|
|
||||||
|
.sect .bss
|
||||||
|
begbss:
|
32
mach/minix/libsys/sendrec.s
Normal file
32
mach/minix/libsys/sendrec.s
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
.define _send, _receive, _sendrec
|
||||||
|
.globl _send, _receive, _sendrec
|
||||||
|
| See ../h/com.h for C definitions
|
||||||
|
SEND = 1
|
||||||
|
RECEIVE = 2
|
||||||
|
BOTH = 3
|
||||||
|
SYSVEC = 32
|
||||||
|
|
||||||
|
|*========================================================================*
|
||||||
|
| send and receive *
|
||||||
|
|*========================================================================*
|
||||||
|
| send(), receive(), sendrec() all save bp, but destroy ax, bx, and cx.
|
||||||
|
|
||||||
|
_send: mov cx,*SEND | send(dest, ptr)
|
||||||
|
jmp L0
|
||||||
|
|
||||||
|
_receive:
|
||||||
|
mov cx,*RECEIVE | receive(src, ptr)
|
||||||
|
jmp L0
|
||||||
|
|
||||||
|
_sendrec:
|
||||||
|
mov cx,*BOTH | sendrec(srcdest, ptr)
|
||||||
|
jmp L0
|
||||||
|
|
||||||
|
L0: push bp | save bp
|
||||||
|
mov bp,sp | can't index off sp
|
||||||
|
mov ax,4(bp) | ax = dest-src
|
||||||
|
mov bx,6(bp) | bx = message pointer
|
||||||
|
int SYSVEC | trap to the kernel
|
||||||
|
pop bp | restore bp
|
||||||
|
ret | return
|
||||||
|
|
Loading…
Reference in a new issue