ROMBUSDriver/old/xfer.s
2021-08-07 01:01:54 -04:00

35 lines
594 B
ArmAsm

.macro xfer_in from, to
move.w (%A0), (%A1)+
nop
nop
nop
.if \to-\from
xfer_in "(\from+1)"
.else
.endif
.endm
;pragma parameter xfer_s_256(__A0, __A1)
;void xfer_s_256(Ptr srcreg, Ptr destmem);
xfer_256:
movem.l %D0/%A1-%A2, -(%SP)
xfer_256_loop:
xfer_s_in 0, 255
xfer_256_end:
movem.l (%SP)+, %D0/%A1-%A2
;pragma parameter xfer_s(__D0, __A0, __A1)
;void xfer_s(uint8_t numBytes, Ptr srcreg, Ptr destmem);
xfer:
movem.l %D0/%A1-%A2, -(%SP)
andi.l #0xFF, %D0
subi.l #256, %D0
neg.l %D0
lsl.l #2, %D0
addi.l #xfer_256, %D0
movea.l %D0, %A2
jmp %A2