Annotation of 43BSDReno/sys/tahoe/urem.s, revision 1.1

1.1     ! root        1: /*
        !             2:  *     @(#)urem.s      7.1 (Berkeley) 5/21/88
        !             3:  */
        !             4: 
        !             5: /*
        !             6:  * Unsigned remainder.
        !             7:  *
        !             8:  * urem(dividend, divisor)
        !             9:  */
        !            10: #include "../tahoe/SYS.h"
        !            11: 
        !            12: ASENTRY(urem, 0)
        !            13:        bitl    $0x80000000,8(fp)       #  if (divisor & 0x80000000){
        !            14:        jeql    1f                        
        !            15:        movl    4(fp),r0
        !            16:        cmpl    8(fp),r0                #  if (divisor <= dividend )
        !            17:        jgtru   2f
        !            18:        subl2   8(fp),r0                #       return(dividend-divisor);
        !            19: 2:                                     #  else return(dividend);}
        !            20:        ret
        !            21: 1:
        !            22:        clrl    r2                      #  return(dividend%divisor);
        !            23:        movl    4(fp),r3
        !            24:        ediv    8(fp),r2,r1,r0
        !            25:        ret
        !            26: 
        !            27: /*
        !            28:  * aurem(dividendp, divisor) -- like urem but uses address of dividend.
        !            29:  *     Implements %= avoiding side effects in the dividend expression.
        !            30:  */
        !            31: ASENTRY(aurem, 0)
        !            32:        bitl    $0x80000000,8(fp)       #  if (divisor & 0x80000000){
        !            33:        jeql    1f                        
        !            34:        movl    *4(fp),r0
        !            35:        cmpl    8(fp),r0                #  if (divisor <= dividend )
        !            36:        jgtru   2f
        !            37:        subl2   8(fp),r0                #       return(dividend-divisor);
        !            38:                                        #  else return(dividend);}
        !            39:        jbr     2f
        !            40: 1:
        !            41:        clrl    r2                      #  return(dividend%divisor);
        !            42:        movl    *4(fp),r3
        !            43:        ediv    8(fp),r2,r1,r0
        !            44: 2:
        !            45:        movl    r0,*4(fp)
        !            46:        ret

unix.superglobalmegacorp.com

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