Annotation of MiNT/src/gas/quickzer.s, revision 1.1

1.1     ! root        1: |
        !             2: 
        !             3: | quickzero(char *place, long size): zero an area of memory. "size" is
        !             4: 
        !             5: | the number of 256 byte blocks in the area, and must be > 0.
        !             6: 
        !             7: | registers changed: d0 and a0
        !             8: 
        !             9: |
        !            10: 
        !            11:        .globl  _quickzero
        !            12: 
        !            13: _quickzero:
        !            14: 
        !            15:        movel   sp@(4), a0      | place to zero at
        !            16: 
        !            17:        movel   sp@(8), d0      | number of blocks
        !            18: 
        !            19:        moveml  d1-d7/a1, sp@-  | save registers
        !            20: 
        !            21:        clrl    d1              | zero them out
        !            22: 
        !            23:        movel   d1, d2
        !            24: 
        !            25:        movel   d1, d3
        !            26: 
        !            27:        movel   d1, d4
        !            28: 
        !            29:        movel   d1, d5
        !            30: 
        !            31:        movel   d1, d6
        !            32: 
        !            33:        movel   d1, d7
        !            34: 
        !            35:        movel   d1, a1
        !            36: 
        !            37:        subql   #1, d0          | adjust for dbra loop
        !            38: 
        !            39: loop:
        !            40: 
        !            41:        moveml  d1-d7/a1, a0@   | zero the memory, 32 bytes at a time
        !            42: 
        !            43:        moveml  d1-d7/a1, a0@(32)
        !            44: 
        !            45:        moveml  d1-d7/a1, a0@(64)
        !            46: 
        !            47:        moveml  d1-d7/a1, a0@(96)
        !            48: 
        !            49:        moveml  d1-d7/a1, a0@(128)
        !            50: 
        !            51:        moveml  d1-d7/a1, a0@(160)
        !            52: 
        !            53:        moveml  d1-d7/a1, a0@(192)
        !            54: 
        !            55:        moveml  d1-d7/a1, a0@(224)
        !            56: 
        !            57:        lea     a0@(256), a0
        !            58: 
        !            59:        dbra    d0, loop
        !            60: 
        !            61: |
        !            62: 
        !            63:        moveml  sp@+, d1-d7/a1  | restore regs
        !            64: 
        !            65:        rts                     | and leave
        !            66: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.