~ubuntu-branches/ubuntu/gutsy/avr-libc/gutsy

« back to all changes in this revision

Viewing changes to libc/string/memset.S

  • Committer: Bazaar Package Importer
  • Author(s): Hakan Ardo
  • Date: 2006-11-15 21:12:47 UTC
  • mfrom: (3.1.2 feisty)
  • Revision ID: james.westby@ubuntu.com-20061115211247-b7qhgnb6o49v5zsg
Tags: 1:1.4.5-2
* Convertion to debheler fixed (closes: #398220)
* Reference to /usr/share/common-licenses in copyright file

Show diffs side-by-side

added added

removed removed

Lines of Context:
26
26
  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27
27
  POSSIBILITY OF SUCH DAMAGE. */
28
28
 
 
29
/* $Id: memset.S,v 1.7 2005/10/30 19:36:53 aesok Exp $ */
 
30
 
29
31
#include "macros.inc"
30
32
 
31
33
#define dest_hi r25
44
46
 
45
47
    \returns The memset() function returns a pointer to the memory area dest. */
46
48
 
47
 
#if !defined(DOXYGEN)
 
49
#if !defined(__DOXYGEN__)
48
50
 
49
51
        .text
50
52
        .global _U(memset)
51
53
        .type   _U(memset), @function
52
54
_U(memset):
53
 
        LOAD_X(dest_lo, dest_hi)
 
55
        X_movw  XL, dest_lo
54
56
#if OPTIMIZE_SPEED
55
57
; 11 words, (12 + len * 4 - (len & 1)) cycles
56
58
        sbrs    len_lo, 0
57
 
        rjmp    .memset_start
58
 
        rjmp    .memset_odd
59
 
.memset_loop:
60
 
        st      X+, val_lo
61
 
.memset_odd:
62
 
        st      X+, val_lo
63
 
.memset_start:
 
59
        rjmp    .L_memset_start
 
60
        rjmp    .L_memset_odd
 
61
.L_memset_loop:
 
62
        st      X+, val_lo
 
63
.L_memset_odd:
 
64
        st      X+, val_lo
 
65
.L_memset_start:
64
66
        subi    len_lo, lo8(2)
65
67
        sbci    len_hi, hi8(2)
66
68
#else
67
69
; 8 words, (11 + len * 6) cycles
68
 
        rjmp    .memset_start
69
 
.memset_loop:
 
70
        rjmp    .L_memset_start
 
71
.L_memset_loop:
70
72
        st      X+, val_lo
71
 
.memset_start:
 
73
.L_memset_start:
72
74
        subi    len_lo, lo8(1)
73
75
        sbci    len_hi, hi8(1)
74
76
#endif
75
 
        brcc    .memset_loop
 
77
        brcc    .L_memset_loop
76
78
; return dest (unchanged)
77
79
        ret
78
 
.memset_end:
79
 
        .size   _U(memset), .memset_end - _U(memset)
 
80
.L_memset_end:
 
81
        .size   _U(memset), .L_memset_end - _U(memset)
80
82
 
81
 
#endif /* not DOXYGEN */
 
83
#endif /* not __DOXYGEN__ */