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

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

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

revision 1.6 by joerg_wunsch, Tue Sep 13 13:29:54 2005 UTC revision 1.7 by aesok, Sun Oct 30 19:36:53 2005 UTC
# Line 25  Line 25 
25    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
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    
# Line 61  Line 63 
63          .global _U(memcmp)          .global _U(memcmp)
64          .type   _U(memcmp), @function          .type   _U(memcmp), @function
65  _U(memcmp):  _U(memcmp):
66          LOAD_Z(s2_lo, s2_hi)          X_movw  ZL, s2_lo
67          LOAD_X(s1_lo, s1_hi)          X_movw  XL, s1_lo
68          rjmp    .memcmp_start          rjmp    .L_memcmp_start
69  .memcmp_loop:  .L_memcmp_loop:
70          ld      ret_lo, X+          ld      ret_lo, X+
71          ld      __tmp_reg__, Z+          ld      __tmp_reg__, Z+
72          sub     ret_lo, __tmp_reg__          sub     ret_lo, __tmp_reg__
73          brne    .memcmp_done          brne    .L_memcmp_done
74  .memcmp_start:  .L_memcmp_start:
75          subi    len_lo, lo8(1)          subi    len_lo, lo8(1)
76          sbci    len_hi, hi8(1)          sbci    len_hi, hi8(1)
77          brcc    .memcmp_loop          brcc    .L_memcmp_loop
78  ; strings are equal, so clear both ret_lo and carry  ; strings are equal, so clear both ret_lo and carry
79          sub     ret_lo, ret_lo          sub     ret_lo, ret_lo
80  .memcmp_done:  .L_memcmp_done:
81  ; ret_hi = SREG.C ? 0xFF : 0  ; ret_hi = SREG.C ? 0xFF : 0
82          sbc     ret_hi, ret_hi          sbc     ret_hi, ret_hi
83          ret          ret
84  .memcmp_end:  .L_memcmp_end:
85          .size   _U(memcmp), .memcmp_end - _U(memcmp)          .size   _U(memcmp), .L_memcmp_end - _U(memcmp)
86    
87  #endif /* not __DOXYGEN__ */  #endif /* not __DOXYGEN__ */

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.7

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