AUSAM/source/libc/lock.s
/ C library -- locking
lock = 56.
/ readlock( fd )
/ writelock( fd )
/ lock( fd , n )
/ unlock()
.globl _readlock,_writelock,_unlock,_lock,cerror
_readlock:
mov r5,-(sp)
mov sp,r5
mov 4(r5),r0
sys lock; 0
bec 1f
jmp cerror
1:
clr r0
mov (sp)+,r5
rts pc
_writelock:
mov r5,-(sp)
mov sp,r5
mov 4(r5),r0
sys lock; 1
bec 1b
jmp cerror
_unlock:
mov r5,-(sp)
mov sp,r5
sys lock; 2
bec 1b
jmp cerror
_lock:
mov r5,-(sp)
mov sp,r5
mov 4(r5),1f
mov 6(r5),r0
sys indir; 0f
bec 1b
jmp cerror
.data
0:
sys lock
1: 0
.text