Blame view

arch/arc/lib/strlen.S 1.29 KB
d2912cb15   Thomas Gleixner   treewide: Replace...
1
  /* SPDX-License-Identifier: GPL-2.0-only */
5210d1e68   Vineet Gupta   ARC: String library
2
3
  /*
   * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
5210d1e68   Vineet Gupta   ARC: String library
4
   */
ec7ac6afd   Vineet Gupta   ARC: switch to ge...
5
  #include <linux/linkage.h>
5210d1e68   Vineet Gupta   ARC: String library
6

86effd0dc   Vineet Gupta   ARC: dw2 unwind: ...
7
  ENTRY_CFI(strlen)
5210d1e68   Vineet Gupta   ARC: String library
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
  	or	r3,r0,7
  	ld	r2,[r3,-7]
  	ld.a	r6,[r3,-3]
  	mov	r4,0x01010101
  	; uses long immediate
  #ifdef __LITTLE_ENDIAN__
  	asl_s	r1,r0,3
  	btst_s	r0,2
  	asl	r7,r4,r1
  	ror	r5,r4
  	sub	r1,r2,r7
  	bic_s	r1,r1,r2
  	mov.eq	r7,r4
  	sub	r12,r6,r7
  	bic	r12,r12,r6
  	or.eq	r12,r12,r1
  	and	r12,r12,r5
  	brne	r12,0,.Learly_end
  #else /* BIG ENDIAN */
  	ror	r5,r4
  	btst_s	r0,2
  	mov_s	r1,31
  	sub3	r7,r1,r0
  	sub	r1,r2,r4
  	bic_s	r1,r1,r2
  	bmsk	r1,r1,r7
  	sub	r12,r6,r4
  	bic	r12,r12,r6
  	bmsk.ne	r12,r12,r7
  	or.eq	r12,r12,r1
  	and	r12,r12,r5
  	brne	r12,0,.Learly_end
  #endif /* ENDIAN */
  
  .Loop:
  	ld_s	r2,[r3,4]
  	ld.a	r6,[r3,8]
  	; stall for load result
  	sub	r1,r2,r4
  	bic_s	r1,r1,r2
  	sub	r12,r6,r4
  	bic	r12,r12,r6
  	or	r12,r12,r1
  	and	r12,r12,r5
  	breq r12,0,.Loop
  .Lend:
  	and.f	r1,r1,r5
  	sub.ne	r3,r3,4
  	mov.eq	r1,r12
  #ifdef __LITTLE_ENDIAN__
  	sub_s	r2,r1,1
  	bic_s	r2,r2,r1
  	norm	r1,r2
  	sub_s	r0,r0,3
  	lsr_s	r1,r1,3
  	sub	    r0,r3,r0
  	j_s.d	[blink]
  	sub	    r0,r0,r1
  #else /* BIG ENDIAN */
  	lsr_s	r1,r1,7
  	mov.eq	r2,r6
  	bic_s	r1,r1,r2
  	norm	r1,r1
  	sub	    r0,r3,r0
  	lsr_s	r1,r1,3
  	j_s.d	[blink]
  	add	    r0,r0,r1
  #endif /* ENDIAN */
  .Learly_end:
  	b.d	.Lend
  	sub_s.ne r1,r1,r1
86effd0dc   Vineet Gupta   ARC: dw2 unwind: ...
79
  END_CFI(strlen)