xref: /minix3/lib/libc/arch/m68k/string/swab.S (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
1/*	$NetBSD: swab.S,v 1.11 2014/03/18 18:20:37 riastradh Exp $	*/
2
3#include <machine/asm.h>
4
5ENTRY(swab)
6	movl	4(%sp),%a0		| source
7	movl	8(%sp),%a1		| destination
8	movl	12(%sp),%d0		| count
9	lsrl	#1,%d0			| count is in bytes; we need words
10	jeq	swdone
11
12swloop:
13#ifdef __mcoldfire__
14	movb	(%a0)+,1(%a1)
15	movb	(%a0)+,(%a1)
16	addql	#2,%a1
17#else
18	movw	(%a0)+,%d1
19	rorw	#8,%d1
20	movw	%d1,(%a1)+
21#endif
22	subql	#1,%d0
23	jne	swloop
24
25swdone:
26	rts
27END(swab)
28