diff options
Diffstat (limited to 'ports/sysdeps/arm/armv6/strrchr.S')
-rw-r--r-- | ports/sysdeps/arm/armv6/strrchr.S | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/ports/sysdeps/arm/armv6/strrchr.S b/ports/sysdeps/arm/armv6/strrchr.S index ddd4f7fc06..e40df90a72 100644 --- a/ports/sysdeps/arm/armv6/strrchr.S +++ b/ports/sysdeps/arm/armv6/strrchr.S @@ -33,7 +33,8 @@ ENTRY (strrchr) @ Loop a few times until we're aligned. tst r3, #7 beq 2f -1: ldrb r2, [r3], #1 +1: sfi_breg r3, \ + ldrb r2, [\B], #1 cmp r2, r1 @ Find the character it eq subeq r0, r3, #1 @@ -64,7 +65,8 @@ ENTRY (strrchr) @ Loop searching for EOS and C, 8 bytes at a time. @ Any time we find a match in a word, we copy the address of @ the word to r0, and the found bits to r2. -3: ldrd r4, r5, [r3], #8 +3: sfi_breg r3, \ + ldrd r4, r5, [\B], #8 @ Subtracting (unsigned saturating) from 1 means result of 1 for @ any byte that was originally zero and 0 otherwise. Therefore @ we consider the lsb of each byte the "found" bit. |