]> rtime.felk.cvut.cz Git - fpga/lx-cpu1/newlib-tumbl.git/commitdiff
Revert "MBTumbl: Adapt for MB Tumbl - no delay bit"
authorMartin Meloun <meloumar@cmp.felk.cvut.cz>
Tue, 1 Oct 2013 09:20:41 +0000 (11:20 +0200)
committerMartin Meloun <meloumar@cmp.felk.cvut.cz>
Tue, 1 Oct 2013 09:20:41 +0000 (11:20 +0200)
This reverts commit e75832789d91b3fe67bb8290ac2a05c3456aceea.

newlib/libc/machine/mbtumbl/longjmp.S
newlib/libc/machine/mbtumbl/setjmp.S
newlib/libc/machine/mbtumbl/strcmp.c
newlib/libc/machine/mbtumbl/strcpy.c
newlib/libc/machine/mbtumbl/strlen.c

index fcbd89ffb622260e313f6396a1afe6a6c927cc37..f972bbd880f2780bf033b8e4a2468355757c848b 100644 (file)
@@ -75,6 +75,6 @@ longjmp:
     lwi     r30, r5, 72
     lwi     r31, r5, 76                                            
 
+    rtsd    r15, 8
     or      r3, r0, r6
-    rts     r15, 4
 .end longjmp    
index 77f3eb1dd45e5ac8d471c4b21cd59fb6b3ecb472..cdd87c76f934a81eb2b39c3d2dcedab264a4ffdf 100644 (file)
@@ -74,6 +74,6 @@ setjmp:
     swi     r30, r5, 72
     swi     r31, r5, 76                                            
 
+    rtsd    r15, 8
     or      r3, r0, r0
-    rts     r15, 4
 .end setjmp    
index 6ef05d8a8bc37bb97723b572f8e6c1d285508ed9..dbac3878f6a40286060408410049b517c431fdfd 100644 (file)
@@ -152,18 +152,18 @@ cmp_loop:
         bnei    r7, end_cmp_loop        /* IF yes (r7 > 0) use byte compares in end_cmp_loop */ \n\
         cmpu    r7, r4, r3              /* ELSE compare whole word */                   \n\
         bnei    r7, end_cmp                                                             \n\
-        addik   r9, r9, 4                                                               \n\
-        bri     cmp_loop                                                                \n\
+        brid    cmp_loop                                                                \n\
+        addik   r9, r9, 4               /* delay slot */                                \n\
 end_cmp_loop:                                                                           \n\
         lbu     r3, r5, r9              /* byte compare loop */                         \n\
         lbu     r4, r6, r9                                                              \n\
         cmpu    r7, r4, r3              /* Compare bytes */                             \n\
         bnei    r7, end_cmp_early                                                       \n\
-        addik   r9, r9, 1                                                               \n\
-        bnei    r3, end_cmp_loop        /* If reached null on one string, terminate */  \n\
+        bneid   r3, end_cmp_loop        /* If reached null on one string, terminate */  \n\
+        addik   r9, r9, 1               /* delay slot */                        \n\
 end_cmp_early:                                                                  \n\
+        rtsd    r15, 8                                                          \n\
         or      r3, r0, r7                                                      \n\
-        rts     r15, 4                                                          \n\
 try_align_args:                                                                 \n\
         xor     r7, r4, r3                                                      \n\
         bnei    r7, regular_strcmp      /* cannot align args */                 \n\
@@ -175,8 +175,8 @@ align_loop:
         bnei    r7, end_cmp                                                     \n\
         beqi    r3, end_cmp                                                     \n\
         addik   r10, r10, -1                                                    \n\
+        beqid   r10, cmp_loop                                                   \n\
         addik   r9, r9, 1                                                       \n\
-        beqi    r10, cmp_loop                                                   \n\
         bri     align_loop                                                      \n\
 regular_strcmp:                                                                 \n\
         lbu     r3, r5, r9                                                      \n\
@@ -184,12 +184,11 @@ regular_strcmp:
         cmpu    r7, r4, r3                                                      \n\
         bnei    r7, end_cmp                                                     \n\
         beqi    r3, end_cmp                                                     \n\
+        brid    regular_strcmp                                                  \n\
         addik   r9, r9, 1                                                       \n\
-        bri     regular_strcmp                                                  \n\
 end_cmp:                                                                        \n\
-        or      r3, r0, r7                                                      \n\
-        rts     r15, 4                                   /* Return strcmp result */"
-);
+        rtsd    r15, 8                                                          \n\
+        or      r3, r0, r7              /* Return strcmp result */");
 
 #endif /* ! HAVE_HW_PCMP */
 }
index 8bc5888964f7257829fd70726863320b90e431a5..6f0ad05e7d725cde8591e30f9039e20a935125c9 100644 (file)
@@ -143,17 +143,17 @@ cpy_loop:                                   \n\
         pcmpbf  r4, r0, r3                  \n\
         bnei    r4, cpy_bytes           /* If r4 != 0, then null present within string */\n\
         sw      r3, r5, r9                  \n\
+        brid    cpy_loop                    \n\
         addik   r9, r9, 4                   \n\
-        bri     cpy_loop                    \n\
 cpy_bytes:                                  \n\
         lbu     r3, r6, r9                  \n\
         sb      r3, r5, r9                  \n\
         addik   r4, r4, -1                  \n\
-        addik   r9, r9, 1                   \n\
-        bnei    r4, cpy_bytes               \n\
+        bneid   r4, cpy_bytes               \n\
+        addik   r9, r9, 1               /* delay slot */\n\
 cpy_null:                                   \n\
-        or      r3, r0, r5                  \n\
-        rts     r15, 4                  /* Return strcpy result */\n\
+        rtsd    r15, 8                      \n\
+        or      r3, r0, r5              /* Return strcpy result */\n\
 try_align_args:                             \n\
         xor     r7, r4, r3                  \n\
         bnei    r7, regular_strcpy      /* cannot align args */\n\
@@ -161,20 +161,19 @@ try_align_args:                             \n\
 align_loop:                                 \n\
         lbu     r3, r6, r9                  \n\
         sb      r3, r5, r9                  \n\
+        beqid   r3, end_cpy             /* Break if we have seen null character */\n\
         addik   r10, r10, -1                \n\
-        beqi    r3, end_cpy             /* Break if we have seen null character */\n\
+        bneid   r10, align_loop             \n\
         addik   r9, r9, 1                   \n\
-        bnei    r10, align_loop             \n\
         bri     cpy_loop                    \n\
 regular_strcpy:                             \n\
         lbu     r3, r6, r9                  \n\
         sb      r3, r5, r9                  \n\
+        bneid   r3, regular_strcpy          \n\
         addik   r9, r9, 1                   \n\
-        bnei    r3, regular_strcpy          \n\
 end_cpy:                                    \n\
-        or      r3, r0, r5                  \n\
-        rts     r15, 4                   /* Return strcpy result */"
-);
+        rtsd    r15, 8                      \n\
+        or      r3, r0, r5              /* Return strcpy result */");
 #endif /* ! HAVE_HW_PCMP */
 }
 
index 77d1148d27571e8dd89ef9bc7caae1aa53827e80..82eede86edd0805cb81da101c53bb67186fe622a 100644 (file)
@@ -129,24 +129,24 @@ len_loop:                                                       \n\
         lw      r3, r5, r9                                      \n\
         pcmpbf  r4, r3, r0                                      \n\
         bnei    r4, end_len                                     \n\
+        brid    len_loop                                        \n\
         addik   r9, r9, 4                                       \n\
-        bri     len_loop                                        \n\
 end_len:                                                        \n\
         lbu     r3, r5, r9                                      \n\
         beqi    r3, done_len                                    \n\
+        brid    end_len                                         \n\
         addik   r9, r9, 1                                       \n\
-        bri     end_len                                         \n\
 done_len:                                                       \n\
+        rtsd    r15, 8                                          \n\
         or      r3, r0, r9              /* Return len */        \n\
-        rts     r15, 4                                          \n\
 align_arg:                                                      \n\
         rsubik  r10, r3, 4                                      \n\
 align_loop:                                                     \n\
         lbu     r3, r5, r9                                      \n\
         beqid   r3, done_len                                    \n\
         addik   r10, r10, -1                                    \n\
+        bneid   r10, align_loop                                 \n\
         addik   r9, r9, 1                                       \n\
-        bnei    r10, align_loop                                 \n\
         bri     len_loop");
 
 #endif  /* ! HAVE_HW_PCMP */