Annotation of 43BSDTahoe/sys/tahoe/urem.s, revision 1.1.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.