Annotation of coherent/b/kernel/emulator/poly_div.S, revision 1.1

1.1     ! root        1:        .file   "poly_div.S"
        !             2: /*---------------------------------------------------------------------------+
        !             3:  |  poly_div.S                                                               |
        !             4:  |                                                                           |
        !             5:  | A set of functions to divide 64 bit integers by fixed numbers.            |
        !             6:  |                                                                           |
        !             7:  | Copyright (C) 1992    W. Metzenthen, 22 Parker St, Ormond, Vic 3163,      |
        !             8:  |                       Australia.  E-mail [email protected]    |
        !             9:  |                                                                           |
        !            10:  | Call from C as:                                                           |
        !            11:  |   void poly_div2(long long *x)                                            |
        !            12:  |   void poly_div4(long long *x)                                            |
        !            13:  |   void poly_div16(long long *x)                                           |
        !            14:  |                                                                           |
        !            15:  +---------------------------------------------------------------------------*/
        !            16: 
        !            17: #include "fpu_asm.h"
        !            18: 
        !            19: .text
        !            20: 
        !            21: /*---------------------------------------------------------------------------*/
        !            22:        .align 2,144
        !            23: .globl poly_div2
        !            24: poly_div2:
        !            25:        pushl %ebp
        !            26:        movl %esp,%ebp
        !            27: 
        !            28:        movl PARAM1,%ecx
        !            29:        movw (%ecx),%ax
        !            30: 
        !            31:        shrl $1,4(%ecx)
        !            32:        rcrl $1,(%ecx)
        !            33: 
        !            34:        testw $1,%ax
        !            35:        je poly_div2_exit
        !            36: 
        !            37:        addl $1,(%ecx)
        !            38:        adcl $0,4(%ecx)
        !            39: poly_div2_exit:
        !            40: 
        !            41:        leave
        !            42:        ret
        !            43: /*---------------------------------------------------------------------------*/
        !            44:        .align 2,144
        !            45: .globl poly_div4
        !            46: poly_div4:
        !            47:        pushl %ebp
        !            48:        movl %esp,%ebp
        !            49: 
        !            50:        movl PARAM1,%ecx
        !            51:        movw (%ecx),%ax
        !            52: 
        !            53:        movl 4(%ecx),%edx
        !            54:        shll $30,%edx
        !            55: 
        !            56:        shrl $2,4(%ecx)
        !            57:        shrl $2,(%ecx)
        !            58: 
        !            59:        orl %edx,(%ecx)
        !            60: 
        !            61:        testw $2,%ax
        !            62:        je poly_div4_exit
        !            63: 
        !            64:        addl $1,(%ecx)
        !            65:        adcl $0,4(%ecx)
        !            66: poly_div4_exit:
        !            67: 
        !            68:        leave
        !            69:        ret
        !            70: /*---------------------------------------------------------------------------*/
        !            71:        .align 2,144
        !            72: .globl poly_div16
        !            73: poly_div16:
        !            74:        pushl %ebp
        !            75:        movl %esp,%ebp
        !            76: 
        !            77:        movl PARAM1,%ecx
        !            78:        movw (%ecx),%ax
        !            79: 
        !            80:        movl 4(%ecx),%edx
        !            81:        shll $28,%edx
        !            82: 
        !            83:        shrl $4,4(%ecx)
        !            84:        shrl $4,(%ecx)
        !            85: 
        !            86:        orl %edx,(%ecx)
        !            87: 
        !            88:        testw $8,%ax
        !            89:        je poly_div16_exit
        !            90: 
        !            91:        addl $1,(%ecx)
        !            92:        adcl $0,4(%ecx)
        !            93: poly_div16_exit:
        !            94: 
        !            95:        leave
        !            96:        ret
        !            97: /*---------------------------------------------------------------------------*/

unix.superglobalmegacorp.com

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