one function left
This commit is contained in:
parent
de9c60392a
commit
73a5538f0a
|
|
@ -90,6 +90,379 @@ _lockwstr::
|
||||||
.comm 4, _tk_nin;
|
.comm 4, _tk_nin;
|
||||||
.comm 4, _tk_nout;
|
.comm 4, _tk_nout;
|
||||||
.comm 200, _callout;
|
.comm 200, _callout;
|
||||||
|
/*~~lkdata:*/
|
||||||
|
|
||||||
|
.psec
|
||||||
|
.code
|
||||||
|
|
||||||
|
_lkdata::
|
||||||
|
{
|
||||||
|
ret
|
||||||
|
~L1 := 0
|
||||||
|
~L2 := 12
|
||||||
|
} /* _lkdata */
|
||||||
|
|
||||||
|
.psec data
|
||||||
|
.data
|
||||||
|
|
||||||
|
/*~~unlk:*/
|
||||||
|
|
||||||
|
.psec
|
||||||
|
.code
|
||||||
|
|
||||||
|
_unlk::
|
||||||
|
{
|
||||||
|
sub fp,#~L2
|
||||||
|
ldm _stkseg+%0010(fp),r8,#6
|
||||||
|
ldl rr2,_u+%0024
|
||||||
|
ldl |_stkseg+~L1+%000c|(fp),rr2
|
||||||
|
ldl rr4,#%00000004
|
||||||
|
add r5,fp
|
||||||
|
ldl rr2,#%00000008
|
||||||
|
add r3,fp
|
||||||
|
ldl rr6,|_stkseg+~L1+%000c|(fp)
|
||||||
|
calr _lkfront
|
||||||
|
ldl rr12,rr2
|
||||||
|
testl rr2
|
||||||
|
jr z,L700
|
||||||
|
add r3,#%004a
|
||||||
|
ldl rr10,rr2
|
||||||
|
jr L710
|
||||||
|
L760:
|
||||||
|
ld r2,rr8(#%0004)
|
||||||
|
bit r2,#4
|
||||||
|
jr z,L720
|
||||||
|
ldl rr2,rr8
|
||||||
|
inc r3,#4
|
||||||
|
res @rr2,#4
|
||||||
|
ldl rr6,rr8
|
||||||
|
call _wakeup
|
||||||
|
L720:
|
||||||
|
ldl rr2,rr8(#%000a)
|
||||||
|
cpl rr2,|_stkseg+~L1+%0004|(fp)
|
||||||
|
jr ge,L730
|
||||||
|
ldl rr2,rr8
|
||||||
|
inc r3,#14
|
||||||
|
ldl rr4,|_stkseg+~L1+%0008|(fp)
|
||||||
|
cpl rr4,@rr2
|
||||||
|
jr ge,L730
|
||||||
|
ldl rr2,rr8(#%000e)
|
||||||
|
ldl |_stkseg+~L1+%0000|(fp),rr2
|
||||||
|
ld r5,rr8(#%0004)
|
||||||
|
ldl rr6,rr8
|
||||||
|
ldl rr2,|_stkseg+~L1+%0008|(fp)
|
||||||
|
calr _lockadd
|
||||||
|
test r2
|
||||||
|
jr nz,L700
|
||||||
|
ldl rr2,rr8
|
||||||
|
inc r3,#14
|
||||||
|
ldl rr4,|_stkseg+~L1+%0004|(fp)
|
||||||
|
ldl @rr2,rr4
|
||||||
|
jr L700
|
||||||
|
ldl rr2,rr8
|
||||||
|
L730:
|
||||||
|
inc r3,#10
|
||||||
|
ldl rr4,|_stkseg+~L1+%0004|(fp)
|
||||||
|
cpl rr4,@rr2
|
||||||
|
jr gt,L740
|
||||||
|
ldl rr2,rr8
|
||||||
|
inc r3,#14
|
||||||
|
ldl rr6,|_stkseg+~L1+%0008|(fp)
|
||||||
|
cpl rr6,@rr2
|
||||||
|
jr ge,L740
|
||||||
|
ldl rr2,rr8
|
||||||
|
inc r3,#10
|
||||||
|
ldl rr0,|_stkseg+~L1+%0008|(fp)
|
||||||
|
ldl @rr2,rr0
|
||||||
|
jr L700
|
||||||
|
L740:
|
||||||
|
ldl rr2,rr8
|
||||||
|
inc r3,#14
|
||||||
|
ldl rr4,|_stkseg+~L1+%0004|(fp)
|
||||||
|
ldl @rr2,rr4
|
||||||
|
L750:
|
||||||
|
ldl rr10,rr8
|
||||||
|
jr L710
|
||||||
|
L770:
|
||||||
|
ldl rr2,rr8(#%0006)
|
||||||
|
cpl rr2,<<%0>>%0020
|
||||||
|
jr nz,L750
|
||||||
|
ldl rr2,rr8
|
||||||
|
inc r3,#10
|
||||||
|
ldl rr4,|_stkseg+~L1+%0008|(fp)
|
||||||
|
cpl rr4,@rr2
|
||||||
|
jr le,L700
|
||||||
|
ldl rr2,rr8(#%000e)
|
||||||
|
cpl rr2,|_stkseg+~L1+%0004|(fp)
|
||||||
|
jr le,L750
|
||||||
|
ldl rr2,rr8
|
||||||
|
inc r3,#10
|
||||||
|
ldl rr4,|_stkseg+~L1+%0004|(fp)
|
||||||
|
cpl rr4,@rr2
|
||||||
|
jr gt,L760
|
||||||
|
ldl rr2,rr8(#%000e)
|
||||||
|
cpl rr2,|_stkseg+~L1+%0008|(fp)
|
||||||
|
jr gt,L760
|
||||||
|
ldl rr2,@rr8
|
||||||
|
ldl @rr10,rr2
|
||||||
|
ldl rr6,rr8
|
||||||
|
calr _lockfree
|
||||||
|
L710:
|
||||||
|
ldl rr8,@rr10
|
||||||
|
testl rr8
|
||||||
|
jr nz,L770
|
||||||
|
L700:
|
||||||
|
ldm r8,_stkseg+%0010(fp),#6
|
||||||
|
add fp,#~L2
|
||||||
|
ret
|
||||||
|
~L1 := 0
|
||||||
|
~L2 := 28
|
||||||
|
} /* _unlk */
|
||||||
|
|
||||||
|
.psec data
|
||||||
|
.data
|
||||||
|
|
||||||
|
/*~~locked:*/
|
||||||
|
|
||||||
|
.psec
|
||||||
|
.code
|
||||||
|
|
||||||
|
_locked::
|
||||||
|
{
|
||||||
|
sub fp,#~L2
|
||||||
|
ldm _stkseg+%0012(fp),r8,#6
|
||||||
|
ld |_stkseg+~L1+%000a|(fp),r7
|
||||||
|
ldl rr8,<<%0>>%0022(fp)
|
||||||
|
ldl rr10,rr2
|
||||||
|
ldl rr12,rr4
|
||||||
|
ldl rr2,rr12(#%004a)
|
||||||
|
ldl |_stkseg+~L1+%000c|(fp),rr2
|
||||||
|
jr L600
|
||||||
|
L610:
|
||||||
|
ldl rr2,|_stkseg+~L1+%000c|(fp)
|
||||||
|
ldl rr4,@rr2
|
||||||
|
ldl |_stkseg+~L1+%000c|(fp),rr4
|
||||||
|
jr L600
|
||||||
|
L650:
|
||||||
|
inc r3,#10
|
||||||
|
cpl rr8,@rr2
|
||||||
|
jr le,L620
|
||||||
|
ldl rr2,|_stkseg+~L1+%000c|(fp)
|
||||||
|
ldl rr4,rr2(#%0006)
|
||||||
|
cpl rr4,<<%0>>%0020
|
||||||
|
jr z,L610
|
||||||
|
inc r3,#14
|
||||||
|
cpl rr10,@rr2
|
||||||
|
jr ge,L610
|
||||||
|
ldl rr2,|_stkseg+~L1+%000c|(fp)
|
||||||
|
inc r3,#4
|
||||||
|
ld r4,|_stkseg+~L1+%000a|(fp)
|
||||||
|
and r4,#%0100
|
||||||
|
and r4,@rr2
|
||||||
|
jr nz,L610
|
||||||
|
bit |_stkseg+~L1+%000a|(fp),#7
|
||||||
|
jr z,L660
|
||||||
|
ldb _u+%0015,#%0d
|
||||||
|
L640:
|
||||||
|
ldk r2,#1
|
||||||
|
jr L630
|
||||||
|
L660:
|
||||||
|
ldl rr6,|_stkseg+~L1+%000c|(fp)
|
||||||
|
calr _deadlock
|
||||||
|
test r2
|
||||||
|
jr nz,L640
|
||||||
|
ldl rr2,|_stkseg+~L1+%000c|(fp)
|
||||||
|
inc r3,#4
|
||||||
|
set @rr2,#4
|
||||||
|
ldl rr6,|_stkseg+~L1+%000c|(fp)
|
||||||
|
ld r5,#%0028
|
||||||
|
call _sleep
|
||||||
|
ldl rr2,rr12(#%004a)
|
||||||
|
ldl |_stkseg+~L1+%000c|(fp),rr2
|
||||||
|
testb _u+%0015
|
||||||
|
jr nz,L640
|
||||||
|
L600:
|
||||||
|
ldl rr2,|_stkseg+~L1+%000c|(fp)
|
||||||
|
testl rr2
|
||||||
|
jr nz,L650
|
||||||
|
L620:
|
||||||
|
sub r2,r2
|
||||||
|
L630:
|
||||||
|
ldm r8,_stkseg+%0012(fp),#6
|
||||||
|
add fp,#~L2
|
||||||
|
ret
|
||||||
|
~L1 := 0
|
||||||
|
~L2 := 30
|
||||||
|
} /* _locked */
|
||||||
|
|
||||||
|
.psec data
|
||||||
|
.data
|
||||||
|
|
||||||
|
/*~~deadlock:*/
|
||||||
|
|
||||||
|
.psec
|
||||||
|
.code
|
||||||
|
|
||||||
|
_deadlock::
|
||||||
|
{
|
||||||
|
sub fp,#~L2
|
||||||
|
ldm _stkseg+%000a(fp),r10,#4
|
||||||
|
ldl rr12,rr6
|
||||||
|
jr L500
|
||||||
|
L540:
|
||||||
|
ldl rr2,rr12(#%0006)
|
||||||
|
ldl rr4,rr2(#%0016)
|
||||||
|
ldl rr10,rr4
|
||||||
|
cpl rr4,#0
|
||||||
|
jr c,L510
|
||||||
|
ld r3,_Nflock
|
||||||
|
mult rr2,#%0012
|
||||||
|
ldl rr4,#0
|
||||||
|
add r5,r3
|
||||||
|
cpl rr10,rr4
|
||||||
|
jr nc,L510
|
||||||
|
ldl rr2,rr10(#%0006)
|
||||||
|
cpl rr2,_u+%0020
|
||||||
|
jr nz,L520
|
||||||
|
ldb _u+%0015,#35
|
||||||
|
ldk r2,#1
|
||||||
|
jr L530
|
||||||
|
L520:
|
||||||
|
ldl rr12,rr10
|
||||||
|
L500:
|
||||||
|
ldl rr2,rr12(#%0006)
|
||||||
|
cpb @rr2,#%01
|
||||||
|
jr z,L540
|
||||||
|
L510:
|
||||||
|
sub r2,r2
|
||||||
|
L530:
|
||||||
|
ldm r10,_stkseg+%000a(fp),#4
|
||||||
|
add fp,#~L2
|
||||||
|
ret
|
||||||
|
~L1 := 0
|
||||||
|
~L2 := 18
|
||||||
|
} /* _deadlock */
|
||||||
|
|
||||||
|
.psec data
|
||||||
|
.data
|
||||||
|
|
||||||
|
/*~~unlock:*/
|
||||||
|
|
||||||
|
.psec
|
||||||
|
.code
|
||||||
|
|
||||||
|
_unlock::
|
||||||
|
{
|
||||||
|
sub fp,#~L2
|
||||||
|
ldm _stkseg+%0010(fp),r8,#6
|
||||||
|
ldl rr12,rr6
|
||||||
|
ldl rr2,rr12(#%004a)
|
||||||
|
testl rr2
|
||||||
|
jr z,L400
|
||||||
|
ldl rr2,rr6
|
||||||
|
add r3,#%004a
|
||||||
|
ldl rr8,rr2
|
||||||
|
clr |_stkseg+~L1+%000e|(fp)
|
||||||
|
clr |_stkseg+~L1+%000c|(fp)
|
||||||
|
ld r2,|_stkseg+~L1+%000c|(fp)
|
||||||
|
sla r2,#2
|
||||||
|
ldl rr4,_u+%0068(r2)
|
||||||
|
testl rr4
|
||||||
|
jr z,L410
|
||||||
|
ld r2,|_stkseg+~L1+%000c|(fp)
|
||||||
|
sla r2,#2
|
||||||
|
ldl rr4,_u+%0068(r2)
|
||||||
|
inc r5,#2
|
||||||
|
cpl rr12,@rr4
|
||||||
|
jr ne,L410
|
||||||
|
inc |_stkseg+~L1+%000e|(fp),#1
|
||||||
|
L410:
|
||||||
|
inc |_stkseg+~L1+%000c|(fp),#1
|
||||||
|
cp |_stkseg+~L1+%000c|(fp),#%0014
|
||||||
|
jr lt,_unlock+%26
|
||||||
|
test |_stkseg+~L1+%000e|(fp)
|
||||||
|
jr z,L420
|
||||||
|
jr L400
|
||||||
|
L430:
|
||||||
|
ldl rr2,@rr10
|
||||||
|
ldl @rr8,rr2
|
||||||
|
ldl rr6,rr10
|
||||||
|
calr _lockfree
|
||||||
|
jr L420
|
||||||
|
L440:
|
||||||
|
ldl rr2,rr10(#%0006)
|
||||||
|
cpl rr2,_u+%0020
|
||||||
|
jr z,L430
|
||||||
|
ldl rr8,rr10
|
||||||
|
L420:
|
||||||
|
ldl rr10,@rr8
|
||||||
|
testl rr10
|
||||||
|
jr nz,L440
|
||||||
|
L400:
|
||||||
|
ldm r8,_stkseg+%0010(fp),#6
|
||||||
|
add fp,#~L2
|
||||||
|
ret
|
||||||
|
~L1 := 0
|
||||||
|
~L2 := 28
|
||||||
|
} /* _unlock */
|
||||||
|
|
||||||
|
.psec data
|
||||||
|
.data
|
||||||
|
|
||||||
|
/*~~lockalloc:*/
|
||||||
|
|
||||||
|
.psec
|
||||||
|
.code
|
||||||
|
|
||||||
|
_lockalloc::
|
||||||
|
{
|
||||||
|
dec fp,#~L2
|
||||||
|
ldm _stkseg+4(fp),r10,#4
|
||||||
|
ldl rr12,#0
|
||||||
|
ldl rr2,rr12(#6)
|
||||||
|
testl rr2
|
||||||
|
jr nz,L300
|
||||||
|
ldl rr2,rr12
|
||||||
|
inc r3,#6
|
||||||
|
ldl rr4,#0
|
||||||
|
ldl @rr2,rr4
|
||||||
|
ldl rr10,#18
|
||||||
|
jr L310
|
||||||
|
L320:
|
||||||
|
ldl rr6,rr10
|
||||||
|
calr _lockfree
|
||||||
|
add r11,#18
|
||||||
|
L310:
|
||||||
|
ld r3,_proc
|
||||||
|
mult rr2,#18
|
||||||
|
ldl rr4,#0
|
||||||
|
add r5,r3
|
||||||
|
cpl rr10,rr4
|
||||||
|
jr c,L320
|
||||||
|
L300:
|
||||||
|
ldl rr10,@rr12
|
||||||
|
testl rr10
|
||||||
|
jr nz,L330
|
||||||
|
ldb _proc+21,#21
|
||||||
|
subl rr2,rr2
|
||||||
|
jr L340
|
||||||
|
L330:
|
||||||
|
ldl rr2,@rr10
|
||||||
|
ldl @rr12,rr2
|
||||||
|
subl rr2,rr2
|
||||||
|
ldl @rr10,rr2
|
||||||
|
ldl rr2,rr10
|
||||||
|
L340:
|
||||||
|
ldm r10,_stkseg+4(fp),#4
|
||||||
|
inc fp,#~L2
|
||||||
|
ret
|
||||||
|
~L1 := 0
|
||||||
|
~L2 := 12
|
||||||
|
} /* _lockalloc */
|
||||||
|
|
||||||
|
.psec data
|
||||||
|
.data
|
||||||
|
|
||||||
/*~~lockfree:*/
|
/*~~lockfree:*/
|
||||||
|
|
||||||
.psec
|
.psec
|
||||||
|
|
@ -118,7 +491,7 @@ L10:
|
||||||
ret
|
ret
|
||||||
~L1 := 0
|
~L1 := 0
|
||||||
~L2 := 12
|
~L2 := 12
|
||||||
} /* _lockfree */
|
} /* _lockfree */
|
||||||
|
|
||||||
.psec data
|
.psec data
|
||||||
.data
|
.data
|
||||||
|
|
@ -169,12 +542,12 @@ L30:
|
||||||
ret
|
ret
|
||||||
~L1 := 0
|
~L1 := 0
|
||||||
~L2 := 30
|
~L2 := 30
|
||||||
} /* _lockfree */
|
} /* _lockadd */
|
||||||
|
|
||||||
.psec data
|
.psec data
|
||||||
.data
|
.data
|
||||||
|
|
||||||
/*~~lockadd:*/
|
/*~~lkfront:*/
|
||||||
|
|
||||||
.psec
|
.psec
|
||||||
.code
|
.code
|
||||||
|
|
@ -299,7 +672,7 @@ L200:
|
||||||
ret
|
ret
|
||||||
~L1 := 0
|
~L1 := 0
|
||||||
~L2 := 44
|
~L2 := 44
|
||||||
} /* _lockfree */
|
} /* _lkfront */
|
||||||
|
|
||||||
.psec data
|
.psec data
|
||||||
.data
|
.data
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue