xref: /plan9/sys/src/libc/386/memset.s (revision 9a747e4fd48b9f4522c70c07e8f882a15030f964)
13e12c5d1SDavid du Colombier	TEXT	memset(SB),$0
23e12c5d1SDavid du Colombier
33e12c5d1SDavid du Colombier	CLD
43e12c5d1SDavid du Colombier	MOVL	p+0(FP), DI
53e12c5d1SDavid du Colombier	MOVBLZX	c+4(FP), AX
63e12c5d1SDavid du Colombier	MOVL	n+8(FP), BX
73e12c5d1SDavid du Colombier/*
8*9a747e4fSDavid du Colombier * if not enough bytes, just set bytes
93e12c5d1SDavid du Colombier */
103e12c5d1SDavid du Colombier	CMPL	BX, $9
113e12c5d1SDavid du Colombier	JLS	c3
123e12c5d1SDavid du Colombier/*
133e12c5d1SDavid du Colombier * build word in AX
143e12c5d1SDavid du Colombier */
153e12c5d1SDavid du Colombier	MOVB	AL, AH
163e12c5d1SDavid du Colombier	MOVL	AX, CX
173e12c5d1SDavid du Colombier	SHLL	$16, CX
183e12c5d1SDavid du Colombier	ORL	CX, AX
193e12c5d1SDavid du Colombier/*
20*9a747e4fSDavid du Colombier * set whole longs
213e12c5d1SDavid du Colombier */
223e12c5d1SDavid du Colombierc1:
233e12c5d1SDavid du Colombier	MOVL	BX, CX
243e12c5d1SDavid du Colombier	SHRL	$2, CX
253e12c5d1SDavid du Colombier	ANDL	$3, BX
263e12c5d1SDavid du Colombier	REP;	STOSL
273e12c5d1SDavid du Colombier/*
28*9a747e4fSDavid du Colombier * set the rest, by bytes
293e12c5d1SDavid du Colombier */
303e12c5d1SDavid du Colombierc3:
313e12c5d1SDavid du Colombier	MOVL	BX, CX
323e12c5d1SDavid du Colombier	REP;	STOSB
333e12c5d1SDavid du Colombierret:
343e12c5d1SDavid du Colombier	MOVL	p+0(FP),AX
353e12c5d1SDavid du Colombier	RET
36