Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
TEXT strcmp(SB), $0
2
	MOVW	R0, R1
3
	MOVW	s2+4(FP), R2
4
 
5
	MOVW	$0xFF, R3		/* mask */
6
 
7
_align:					/* align s1 on 4 */
8
	TST	$3, R1
9
	BEQ	_aligned
10
 
11
	MOVBU.P	1(R1), R4		/* implicit write back */
12
	MOVBU.P	1(R2), R8		/* implicit write back */
13
	SUB.S	R8, R4, R0
14
	BNE	_return
15
	CMP	$0, R4
16
	BEQ	_return
17
	B	_align
18
 
19
_aligned:				/* is s2 now aligned? */
20
	TST	$3, R2
21
	BNE	_unaligned
22
 
23
_aloop:
24
	MOVW.P	4(R1), R5		/* 4 at a time */
25
	MOVW.P	4(R2), R7
26
 
27
	AND	R5, R3, R4
28
	AND	R7, R3, R8
29
	SUB.S	R8, R4, R0
30
	BNE	_return
31
	CMP	$0, R4
32
	BEQ	_return
33
 
34
	AND	R5>>8, R3, R4
35
	AND	R7>>8, R3, R8
36
	SUB.S	R8, R4, R0
37
	BNE	_return
38
	CMP	$0, R4
39
	BEQ	_return
40
 
41
	AND	R5>>16, R3, R4
42
	AND	R7>>16, R3, R8
43
	SUB.S	R8, R4, R0
44
	BNE	_return
45
	CMP	$0, R4
46
	BEQ	_return
47
 
48
	AND	R5>>24, R3, R4
49
	AND	R7>>24, R3, R8
50
	SUB.S	R8, R4, R0
51
	BNE	_return
52
	CMP	$0, R4
53
	BEQ	_return
54
 
55
	B	_aloop
56
 
57
_return:
58
	RET
59
 
60
_unaligned:
61
	MOVBU.P	1(R1), R4		/* implicit write back */
62
	MOVBU.P	1(R2), R8		/* implicit write back */
63
	SUB.S	R8, R4, R0
64
	BNE	_return
65
	CMP	$0, R4
66
	BEQ	_return
67
	B	_unaligned