The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/alphapc/memset.s

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 TEXT memset(SB), $0
    2         MOVL    R0, R6
    3         MOVBU   data+4(FP), R2
    4         MOVL    n+8(FP), R10
    5 
    6         ADDL    R10, R0, R8
    7 
    8         CMPUGE  $8, R10, R1             /* need at least 8 bytes */
    9         BNE     R1, _1loop
   10 
   11         SLLQ    $8, R2, R1              /* replicate the byte */
   12         OR      R1, R2
   13         SLLQ    $16, R2, R1
   14         OR      R1, R2
   15         SLLQ    $32, R2, R1
   16         OR      R1, R2
   17 
   18 _align:
   19         AND     $(8-1), R6, R1
   20         BEQ     R1, _aligned
   21 
   22         MOVB    R2, (R6)
   23         ADDL    $1, R6, R6
   24         JMP     _align
   25 
   26 _aligned:
   27         SUBL    $(64-1), R8, R9         /* end pointer minus slop */
   28 _64loop:
   29         CMPUGT  R9, R6, R1
   30         BEQ     R1, _8tail
   31 
   32         MOVQ    R2, (R6)
   33         MOVQ    R2, 8(R6)
   34         MOVQ    R2, 16(R6)
   35         MOVQ    R2, 24(R6)
   36         MOVQ    R2, 32(R6)
   37         MOVQ    R2, 40(R6)
   38         MOVQ    R2, 48(R6)
   39         MOVQ    R2, 56(R6)
   40         ADDL    $64, R6, R6
   41         JMP     _64loop
   42 
   43 _8tail:
   44         SUBL    $(8-1), R8, R9
   45 _8loop:
   46         CMPUGT  R9, R6, R1
   47         BEQ     R1, _1loop
   48 
   49         MOVQ    R2, (R6)
   50         ADDL    $8, R6
   51         JMP     _8loop
   52 
   53 _1loop:
   54         CMPUGT  R8, R6, R1
   55         BEQ     R1, _ret
   56         MOVB    R2, (R6)
   57         ADDL    $1, R6
   58         JMP     _1loop
   59 
   60 _ret:
   61         RET

Cache object: 64eee951b3846eac87384a8a1eec03cd


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.