xref: /inferno-os/libkern/strchr-386.s (revision 37da2899f40661e3e9631e497da8dc59b971cbd0)
1*37da2899SCharles.Forsyth	TEXT	strchr(SB),$0
2*37da2899SCharles.Forsyth/*
3*37da2899SCharles.Forsyth * look for null
4*37da2899SCharles.Forsyth */
5*37da2899SCharles.Forsyth	MOVL	p+0(FP), DI
6*37da2899SCharles.Forsyth	MOVL	$-1, CX
7*37da2899SCharles.Forsyth	MOVL	$0, AX
8*37da2899SCharles.Forsyth	CLD
9*37da2899SCharles.Forsyth
10*37da2899SCharles.Forsyth	REPN;	SCASB
11*37da2899SCharles.Forsyth
12*37da2899SCharles.Forsyth/*
13*37da2899SCharles.Forsyth * look for real char
14*37da2899SCharles.Forsyth */
15*37da2899SCharles.Forsyth	MOVL	DI, CX
16*37da2899SCharles.Forsyth	MOVL	p+0(FP), DI
17*37da2899SCharles.Forsyth	SUBL	DI, CX
18*37da2899SCharles.Forsyth	MOVBLZX	c+4(FP), AX
19*37da2899SCharles.Forsyth
20*37da2899SCharles.Forsyth	REPN;	SCASB
21*37da2899SCharles.Forsyth
22*37da2899SCharles.Forsyth	JEQ	found
23*37da2899SCharles.Forsyth	MOVL	$0, AX
24*37da2899SCharles.Forsyth	RET
25*37da2899SCharles.Forsyth
26*37da2899SCharles.Forsythfound:
27*37da2899SCharles.Forsyth	MOVL	DI, AX
28*37da2899SCharles.Forsyth	SUBL	$1, AX
29*37da2899SCharles.Forsyth	RET
30