summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2006-06-27 03:35:42 +0000
committerMike Frysinger <vapier@gentoo.org>2006-06-27 03:35:42 +0000
commiteeb513ba31b9f1237b99a59ed3d74d7d985de478 (patch)
treed2deec3da53eec5e8eb619a58db1164bf7b216fe
parent9bf0b8bb7ef16f277afd4448b900fc4a0b21ccb2 (diff)
blackfin needs NOPs after the loop end when the last statement in the loop is an if/jump
-rw-r--r--libc/string/bfin/memchr.S2
-rw-r--r--libc/string/bfin/strcmp.S2
2 files changed, 3 insertions, 1 deletions
diff --git a/libc/string/bfin/memchr.S b/libc/string/bfin/memchr.S
index 6ecaf37a1..23626d6a4 100644
--- a/libc/string/bfin/memchr.S
+++ b/libc/string/bfin/memchr.S
@@ -37,8 +37,8 @@ byte_loop_s:
R3 = B[P0++](Z);
CC = R3 == R1;
IF CC JUMP found;
- NOP;
byte_loop_e:
+ NOP;
failed:
R0=0;
diff --git a/libc/string/bfin/strcmp.S b/libc/string/bfin/strcmp.S
index 6365024ec..823fb16b5 100644
--- a/libc/string/bfin/strcmp.S
+++ b/libc/string/bfin/strcmp.S
@@ -65,6 +65,7 @@ beginloop:
cc |= az; // true if either is zero
if cc jump zero4; // leave if a zero somewhere
endloop:
+ NOP;
cc = r1 == r2;
// loop exits
@@ -103,6 +104,7 @@ beginloop1:
cc &= an;
if !cc jump exitloop1;
endloop1:
+ NOP;
r2 = B[p2++] (Z);
exitloop1: // here means we found a zero or a difference.