/[avr-libc]/avr-libc/libc/pmstring/strncasecmp_P.S
ViewVC logotype

Diff of /avr-libc/libc/pmstring/strncasecmp_P.S

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

revision 1.4 by joerg_wunsch, Tue Sep 13 13:29:54 2005 UTC revision 1.5 by aesok, Tue Nov 8 16:19:51 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  /*  /*
32     strncasecmp_P.S     strncasecmp_P.S
33     Case insensitive compare     Case insensitive compare
# Line 64  Line 66 
66    
67  #if !defined(__DOXYGEN__)  #if !defined(__DOXYGEN__)
68    
69      .text          .text
70      .global _U(strncasecmp_P)          .global _U(strncasecmp_P)
71      .type   _U(strncasecmp_P), @function          .type   _U(strncasecmp_P), @function
72  _U(strncasecmp_P):  _U(strncasecmp_P):
73      LOAD_Z(s2_lo, s2_hi)          X_movw  ZL, s2_lo
74      LOAD_X(s1_lo, s1_hi)          X_movw  XL, s1_lo
75  .strncasecmp_P_loop:  .L_strncasecmp_P_loop:
76      SUBI      len_lo, lo8(1)          SUBI    len_lo, lo8(1)
77      SBCI      len_hi, hi8(1)          SBCI    len_hi, hi8(1)
78      BRCS      .strncasecmp_P_equal          BRCS    .L_strncasecmp_P_equal
79      LD        ret_lo, X+               ; load *s1          LD      ret_lo, X+              ; load *s1
80      LPM_R0_ZP                          ; load *s2          LPM_R0_ZP                       ; load *s2
81      MOV       tmp, r0                  ; copy of *s2 to tmp          MOV     tmp, r0                 ; copy of *s2 to tmp
82      MOV       cht, r0                  ; copy of *s2 to cht          MOV     cht, r0                 ; copy of *s2 to cht
83      ORI       cht, 0x20                ; make it lower case          ORI     cht, 0x20               ; make it lower case
84      CPI       cht, 'a'                 ; test on [a .. z]          CPI     cht, 'a'                ; test on [a .. z]
85      BRLT      .strncasecmp_P_tst          BRLT    .L_strncasecmp_P_tst
86      CPI       cht, 'z'+1          CPI     cht, 'z'+1
87      BRGE      .strncasecmp_P_tst          BRGE    .L_strncasecmp_P_tst
88      ORI       tmp, 0x20                ; we got an alpha in s2          ORI     tmp, 0x20               ; we got an alpha in s2
89      ORI       ret_lo, 0x20             ; make *s1, *s2 lower case          ORI     ret_lo, 0x20            ; make *s1, *s2 lower case
90     .strncasecmp_P_tst:  .L_strncasecmp_P_tst:
91      SUB       ret_lo, tmp          SUB     ret_lo, tmp
92      BRNE      .strncasecmp_P_done          BRNE    .L_strncasecmp_P_done
93      TST       r0          TST     r0
94      BRNE      .strncasecmp_P_loop          BRNE    .L_strncasecmp_P_loop
95  .strncasecmp_P_equal:  .L_strncasecmp_P_equal:
96      SUB       ret_lo, ret_lo          SUB     ret_lo, ret_lo
97  .strncasecmp_P_done:  .L_strncasecmp_P_done:
98  ; ret_hi = SREG.C ? 0xFF : 0  ; ret_hi = SREG.C ? 0xFF : 0
99      SBC       ret_hi, ret_hi          SBC     ret_hi, ret_hi
100      RET          RET
101  .strncasecmp_P_end:  .L_strncasecmp_P_end:
102      .size   _U(strncasecmp_P), .strncasecmp_P_end - _U(strncasecmp_P)          .size   _U(strncasecmp_P), .L_strncasecmp_P_end - _U(strncasecmp_P)
103    
104  #endif /* not __DOXYGEN__ */  #endif /* not __DOXYGEN__ */

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5

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