ack/mach/z8000/libem/blm.s
1985-01-08 11:48:43 +00:00

27 lines
419 B
ArmAsm

.define blm
!size in R0
blm:
popl saveret, *RR14
ldm savereg, R4, $10
ldk R2, $0
ld R4, R2
pop R3, *RR14 !RR2: dst address
pop R5, *RR14 !RR4: src address
ld R1, R0
sra R0
jr EQ, 2f
!now avoid wrong copy in case the pieces overlap
cp R5, R3
jr EQ, 2f
jr LT, 1f
ldir *RR2, *RR4, R0
jr 2f
1: dec R1, $2
add R3, R1
add R5, R1
lddr *RR2, *RR4, R0
2: ldm R4, savereg, $10
pushl *RR14, saveret
ret