/[avr-libc]/avr-libc/libc/string/strncmp.S
ViewVC logotype

Diff of /avr-libc/libc/string/strncmp.S

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.3 by troth, Tue Sep 30 23:05:19 2003 UTC revision 1.3.4.1 by aesok, Sun Oct 30 19:46:44 2005 UTC
# Line 26  Line 26 
26    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27    POSSIBILITY OF SUCH DAMAGE. */    POSSIBILITY OF SUCH DAMAGE. */
28    
29    /* $Id$ */
30    
31  #include "macros.inc"  #include "macros.inc"
32    
33  #define s1_hi r25  #define s1_hi r25
# Line 55  Line 57 
57          .global _U(strncmp)          .global _U(strncmp)
58          .type   _U(strncmp), @function          .type   _U(strncmp), @function
59  _U(strncmp):  _U(strncmp):
60          LOAD_Z(s2_lo, s2_hi)          X_movw  ZL, s2_lo
61          LOAD_X(s1_lo, s1_hi)          X_movw  XL, s1_lo
62  .strncmp_loop:  .L_strncmp_loop:
63          subi    len_lo, lo8(1)          subi    len_lo, lo8(1)
64          sbci    len_hi, hi8(1)          sbci    len_hi, hi8(1)
65          brcs    .strncmp_equal          brcs    .L_strncmp_equal
66          ld      ret_lo, X+          ld      ret_lo, X+
67          ld      __tmp_reg__, Z+          ld      __tmp_reg__, Z+
68          sub     ret_lo, __tmp_reg__          sub     ret_lo, __tmp_reg__
69          brne    .strncmp_done          brne    .L_strncmp_done
70          tst     __tmp_reg__          tst     __tmp_reg__
71          brne    .strncmp_loop          brne    .L_strncmp_loop
72  .strncmp_equal:  .L_strncmp_equal:
73          sub     ret_lo, ret_lo  ; clear ret_lo and C flag          sub     ret_lo, ret_lo  ; clear ret_lo and C flag
74  .strncmp_done:  .L_strncmp_done:
75  ; ret_hi = SREG.C ? 0xFF : 0  ; ret_hi = SREG.C ? 0xFF : 0
76          sbc     ret_hi, ret_hi          sbc     ret_hi, ret_hi
77          ret          ret
78  .strncmp_end:  .L_strncmp_end:
79          .size   _U(strncmp), .strncmp_end - _U(strncmp)          .size   _U(strncmp), .L_strncmp_end - _U(strncmp)
80    
81  #endif /* not DOXYGEN */  #endif /* not DOXYGEN */

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.3.4.1

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26