minix/lib/i86/rts/_sendrec.s
2009-11-09 10:26:00 +00:00

32 lines
827 B
ArmAsm

.define __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.
.extern __send, __receive, __sendrec
__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