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	strcpy(SB), $0
2
 
3
MOVW	R7, 0(FP)
4
	MOVW	s1+0(FP), R9		/* R9 is to pointer */
5
	MOVW	s2+4(FP), R10		/* R10 is from pointer */
6
 
7
/*
8
 * test if both pointers
9
 * are similarly word aligned
10
 */
11
	XOR	R9,R10, R7
12
	ANDCC	$3,R7, R0
13
	BNE	una
14
 
15
/*
16
 * make byte masks
17
 */
18
	MOVW	$0xff, R17
19
	SLL	$8,R17, R16
20
	SLL	$16,R17, R13
21
	SLL	$24,R17, R12
22
 
23
/*
24
 * byte at a time to word align
25
 */
26
al1:
27
	ANDCC	$3,R10, R0
28
	BE	al2
29
	MOVB	(R10), R11
30
	ADD	$1, R10
31
	MOVB	R11, (R9)
32
	ADD	$1, R9
33
	SUBCC	R0,R11, R0
34
	BNE	al1
35
	JMP	out
36
 
37
/*
38
 * word at a time
39
 */
40
al2:
41
	ADD	$4, R9
42
	MOVW	(R10), R11	/* fetch */
43
	ADD	$4, R10
44
	ANDCC	R12,R11, R0	/* is it byte 0 */
45
	BE	b0
46
	ANDCC	R13,R11, R0	/* is it byte 1 */
47
	BE	b1
48
	ANDCC	R16,R11, R0	/* is it byte 2 */
49
	BE	b2
50
	MOVW	R11, -4(R9)	/* store */
51
	ANDCC	R17,R11, R0	/* is it byte 3 */
52
	BNE	al2
53
 
54
	JMP	out
55
 
56
b0:
57
	MOVB	R0, -4(R9)
58
	JMP	out
59
 
60
b1:
61
	SRL	$24, R11
62
	MOVB	R11, -4(R9)
63
	MOVB	R0, -3(R9)
64
	JMP	out
65
 
66
b2:
67
	SRL	$24,R11, R7
68
	MOVB	R7, -4(R9)
69
	SRL	$16, R11
70
	MOVB	R11, -3(R9)
71
	MOVB	R0, -2(R9)
72
	JMP	out
73
 
74
una:
75
	MOVB	(R10), R11
76
	ADD	$1, R10
77
	MOVB	R11, (R9)
78
	ADD	$1, R9
79
	SUBCC	R0,R11, R0
80
	BNE	una
81
 
82
out:
83
	MOVW	s1+0(FP),R7
84
	RETURN