xref: /plan9/sys/src/ape/lib/ap/386/memset.s (revision 219b2ee8daee37f4aad58d63f21287faa8e4ffdc)
1	TEXT	memset(SB),$0
2
3	CLD
4	MOVL	p+0(FP), DI
5	MOVBLZX	c+4(FP), AX
6	MOVL	n+8(FP), BX
7/*
8 * if not enough bytes, just copy
9 */
10	CMPL	BX, $9
11	JLS	c3
12/*
13 * build word in AX
14 */
15	MOVB	AL, AH
16	MOVL	AX, CX
17	SHLL	$16, CX
18	ORL	CX, AX
19/*
20 * copy whole longs
21 */
22c1:
23	MOVL	BX, CX
24	SHRL	$2, CX
25	ANDL	$3, BX
26	REP;	STOSL
27/*
28 * copy the rest, by bytes
29 */
30c3:
31	MOVL	BX, CX
32	REP;	STOSB
33ret:
34	MOVL	p+0(FP),AX
35	RET
36