diff options
author | Roland McGrath <roland@hack.frob.com> | 2013-08-30 11:16:52 -0700 |
---|---|---|
committer | Roland McGrath <roland@hack.frob.com> | 2013-08-30 11:16:52 -0700 |
commit | b0350db9747d602158377af3cf8ceb70764ea840 (patch) | |
tree | 02fc799233452f582117de740b583117f983882b /ports | |
parent | 21bfcecf7a4ac3c150430a1a312268781c145414 (diff) | |
download | glibc-b0350db9747d602158377af3cf8ceb70764ea840.tar.gz glibc-b0350db9747d602158377af3cf8ceb70764ea840.tar.xz glibc-b0350db9747d602158377af3cf8ceb70764ea840.zip |
Use sfi_* macros in armv6t2 strlen.
Diffstat (limited to 'ports')
-rw-r--r-- | ports/ChangeLog.arm | 2 | ||||
-rw-r--r-- | ports/sysdeps/arm/armv6t2/strlen.S | 23 |
2 files changed, 16 insertions, 9 deletions
diff --git a/ports/ChangeLog.arm b/ports/ChangeLog.arm index 1806b08a8d..8ef09b1161 100644 --- a/ports/ChangeLog.arm +++ b/ports/ChangeLog.arm @@ -1,5 +1,7 @@ 2013-08-30 Roland McGrath <roland@hack.frob.com> + * sysdeps/arm/armv6t2/strlen.S: Use sfi_pld and sfi_breg macros. + * sysdeps/arm/armv6t2/strlen.S: Include <arm-features.h> first thing. [NO_THUMB]: Adapt code for ARM mode. diff --git a/ports/sysdeps/arm/armv6t2/strlen.S b/ports/sysdeps/arm/armv6t2/strlen.S index 4652c208d8..f2b3ab4b58 100644 --- a/ports/sysdeps/arm/armv6t2/strlen.S +++ b/ports/sysdeps/arm/armv6t2/strlen.S @@ -67,7 +67,7 @@ .text .p2align 6 ENTRY(strlen) - pld [srcin, #0] + sfi_pld srcin, #0 strd r4, r5, [sp, #-8]! cfi_adjust_cfa_offset (8) cfi_rel_offset (r4, 0) @@ -76,14 +76,15 @@ ENTRY(strlen) bic src, srcin, #7 mvn const_m1, #0 ands tmp1, srcin, #7 /* (8 - bytes) to alignment. */ - pld [src, #32] + sfi_pld src, #32 bne.w .Lmisaligned8 mov const_0, #0 mov result, #-8 .Lloop_aligned: /* Bytes 0-7. */ - ldrd data1a, data1b, [src] - pld [src, #64] + sfi_breg src, \ + ldrd data1a, data1b, [\B] + sfi_pld src, #64 add result, result, #8 .Lstart_realigned: uadd8 data1a, data1a, const_m1 /* Saturating GE<0:3> set. */ @@ -93,7 +94,8 @@ ENTRY(strlen) cbnz data1b, .Lnull_found /* Bytes 8-15. */ - ldrd data1a, data1b, [src, #8] + sfi_breg src, \ + ldrd data1a, data1b, [\B, #8] uadd8 data1a, data1a, const_m1 /* Saturating GE<0:3> set. */ add result, result, #8 sel data1a, const_0, const_m1 /* Select based on GE<0:3>. */ @@ -102,7 +104,8 @@ ENTRY(strlen) cbnz data1b, .Lnull_found /* Bytes 16-23. */ - ldrd data1a, data1b, [src, #16] + sfi_breg src, \ + ldrd data1a, data1b, [\B, #16] uadd8 data1a, data1a, const_m1 /* Saturating GE<0:3> set. */ add result, result, #8 sel data1a, const_0, const_m1 /* Select based on GE<0:3>. */ @@ -111,7 +114,8 @@ ENTRY(strlen) cbnz data1b, .Lnull_found /* Bytes 24-31. */ - ldrd data1a, data1b, [src, #24] + sfi_breg src, \ + ldrd data1a, data1b, [\B, #24] add src, src, #32 uadd8 data1a, data1a, const_m1 /* Saturating GE<0:3> set. */ add result, result, #8 @@ -139,12 +143,13 @@ ENTRY(strlen) .Lmisaligned8: cfi_restore_state - ldrd data1a, data1b, [src] + sfi_breg src, \ + ldrd data1a, data1b, [\B] and tmp2, tmp1, #3 rsb result, tmp1, #0 lsl tmp2, tmp2, #3 /* Bytes -> bits. */ tst tmp1, #4 - pld [src, #64] + sfi_pld src, #64 S2HI tmp2, const_m1, tmp2 #ifdef NO_THUMB mvn tmp1, tmp2 |