SysIII/usr/src/uts/vax/ml/copy.s
.align 2
.globl _copyseg
_copyseg:
.word 0x0000
mfpr $IPL,-(sp)
mtpr $HIGH,$IPL # turn off interrupts
bisl3 $PG_V|PG_KR,4(ap),_Sysmap+CMAP1
bisl3 $PG_V|PG_KW,8(ap),_Sysmap+CMAP2
mtpr $CADDR1,$TBIS # invalidate entry for copy
mtpr $CADDR2,$TBIS
movc3 $512,CADDR1,CADDR2
mtpr (sp)+,$IPL
ret
.align 2
.globl _clearseg
_clearseg:
.word 0x0000
mfpr $IPL,-(sp)
mtpr $HIGH,$IPL # extreme pri level
bisl3 $PG_V|PG_KW,4(ap),_Sysmap+CMAP1
mtpr $CADDR1,$TBIS
movc5 $0,(r0),$0,$512,CADDR1
mtpr (sp)+,$IPL
ret
.align 2
.globl _copyin
_copyin:
.word 0x0000
movl 12(ap),r0
movl 4(ap),r1
cmpl $512,r0
bgeq cishort
ciloop:
prober $3,$512,(r1)
beql ceret
addl2 $512,r1
acbl $513,$-512,r0,ciloop
cishort:
prober $3,r0,(r1)
beql ceret
brb copymov
.align 2
.globl _copyout
_copyout:
.word 0x0000
movl 12(ap),r0
movl 8(ap),r1
cmpl $512,r0
bgeq coshort
coloop:
probew $3,$512,(r1)
beql ceret
addl2 $512,r1
acbl $513,$-512,r0,coloop
coshort:
probew $3,r0,(r1)
beql ceret
copymov:
movc3 12(ap),*4(ap),*8(ap)
clrl r0
ret
ceret:
mnegl $1,r0
ret