patch-2.1.9 linux/arch/sparc/lib/strlen.S
Next file: linux/arch/sparc/lib/strncmp.S
Previous file: linux/arch/sparc/lib/sdiv.S
Back to the patch index
Back to the overall index
- Lines: 112
- Date:
Sat Nov 9 10:12:08 1996
- Orig file:
v2.1.8/linux/arch/sparc/lib/strlen.S
- Orig date:
Tue Apr 23 12:31:45 1996
diff -u --recursive --new-file v2.1.8/linux/arch/sparc/lib/strlen.S linux/arch/sparc/lib/strlen.S
@@ -12,77 +12,77 @@
.align 4
.global C_LABEL(strlen)
C_LABEL(strlen):
- mov %o0,%o1
- andcc %o0,3,%g0 ! and with %o0 so no dependency problems
+ mov %o0, %o1
+ andcc %o0, 3, %g0 ! and with %o0 so no dependency problems
be scan_words
- sethi %hi(HI_MAGIC),%g2 ! common case and most Sparcs predict taken
+ sethi %hi(HI_MAGIC), %g2 ! common case and most Sparcs predict taken
- ldsb [%o0],%g2
+ ldsb [%o0], %g2
still_not_word_aligned:
- cmp %g2,0
+ cmp %g2, 0
bne,a 1f
- add %o0,1,%o0
+ add %o0, 1, %o0
/* Ok, so there are tons of quick interlocks above for the
* < 4 length string unaligned... not too common so I'm not
* very concerned.
*/
retl
- sub %o0,%o1,%o0
+ sub %o0, %o1, %o0
1:
- andcc %o0,3,%g0
+ andcc %o0, 3, %g0
bne,a still_not_word_aligned
- ldsb [%o0],%g2
+ ldsb [%o0], %g2
/* HyperSparc executes each sethi/or pair in 1 cycle. */
- sethi %hi(HI_MAGIC),%g2
+ sethi %hi(HI_MAGIC), %g2
scan_words:
- or %g2,%lo(HI_MAGIC),%o3
- sethi %hi(LO_MAGIC),%g3
- or %g3,%lo(LO_MAGIC),%o2
+ or %g2, %lo(HI_MAGIC), %o3
+ sethi %hi(LO_MAGIC), %g3
+ or %g3, %lo(LO_MAGIC), %o2
next_word:
- ld [%o0],%g2 ! no dependencies
+ ld [%o0], %g2 ! no dependencies
next_word_preloaded:
- sub %g2,%o2,%g2 ! lots of locks here
- andcc %g2,%o3,%g0 ! and I dont like it...
+ sub %g2, %o2, %g2 ! lots of locks here
+ andcc %g2, %o3, %g0 ! and I dont like it...
be next_word
- add %o0,4,%o0
+ add %o0, 4, %o0
/* Check every byte. */
byte_zero:
- ldsb [%o0-4],%g2
- cmp %g2,0
+ ldsb [%o0 - 0x4], %g2
+ cmp %g2, 0
bne byte_one
- add %o0,-4,%g3
+ add %o0, -4, %g3
retl
- sub %g3,%o1,%o0
+ sub %g3, %o1, %o0
byte_one:
- ldsb [%o0-3],%g2
- cmp %g2,0
+ ldsb [%o0 - 0x3], %g2
+ cmp %g2, 0
bne,a byte_two_and_three
- ldsb [%o0-2],%g2
+ ldsb [%o0 - 0x2], %g2
- sub %g3,%o1,%o0
+ sub %g3, %o1, %o0
retl
- add %o0,1,%o0
+ add %o0, 1, %o0
byte_two_and_three:
- cmp %g2,0
+ cmp %g2, 0
be,a found_it
- sub %g3,%o1,%o0
+ sub %g3, %o1, %o0
- ldsb [%o0-1],%g2
- cmp %g2,0
+ ldsb [%o0 - 0x1], %g2
+ cmp %g2, 0
bne,a next_word_preloaded
- ld [%o0],%g2
+ ld [%o0], %g2
- sub %g3,%o1,%o0
+ sub %g3, %o1, %o0
retl
- add %o0,3,%o0
+ add %o0, 3, %o0
found_it:
retl
- add %o0,2,%o0
+ add %o0, 2, %o0
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov