|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1988 Regents of the University of California. ! 3: * All rights reserved. ! 4: * ! 5: * Redistribution and use in source and binary forms are permitted ! 6: * provided that the above copyright notice and this paragraph are ! 7: * duplicated in all such forms and that any documentation, ! 8: * advertising materials, and other materials related to such ! 9: * distribution and use acknowledge that the software was developed ! 10: * by the University of California, Berkeley. The name of the ! 11: * University may not be used to endorse or promote products derived ! 12: * from this software without specific prior written permission. ! 13: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR ! 14: * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ! 15: * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. ! 16: * ! 17: * This code is derived from software contributed to Berkeley by ! 18: * Computer Consoles Inc. ! 19: */ ! 20: ! 21: #if defined(LIBC_SCCS) && !defined(lint) ! 22: .asciz "@(#)udiv.s 1.4 (Berkeley) 6/27/88" ! 23: #endif /* LIBC_SCCS and not lint */ ! 24: ! 25: /* ! 26: * Unsigned divide. ! 27: * ! 28: * udiv(dividend, divisor) ! 29: */ ! 30: #include "DEFS.h" ! 31: ! 32: ASENTRY(udiv, 0) ! 33: bitl $0x80000000,8(fp) # if (divisor & 0x80000000){ ! 34: jeql 1f ! 35: cmpl 8(fp),4(fp) # if (divisor > dividend ) ! 36: jlequ 2f ! 37: clrl r0 # return(0); ! 38: ret ! 39: 2: # else ! 40: movl $1,r0 # return(1);} ! 41: ret ! 42: 1: ! 43: clrl r2 # return(dividend/divisor); ! 44: movl 4(fp),r3 ! 45: ediv 8(fp),r2,r0,r1 ! 46: ret ! 47: ! 48: /* ! 49: * audiv(dividendp, divisor) -- like udiv but uses address of dividend. ! 50: * Implements /= avoiding side effects in the dividend expression. ! 51: */ ! 52: ASENTRY(audiv, 0) ! 53: bitl $0x80000000,8(fp) # if (divisor & 0x80000000){ ! 54: jeql 1f ! 55: cmpl 8(fp),*4(fp) # if (divisor > dividend ) ! 56: jlequ 2f ! 57: clrl r0 # return(0); ! 58: jbr 3f ! 59: 2: # else ! 60: movl $1,r0 # return(1);} ! 61: jbr 3f ! 62: 1: ! 63: clrl r2 # return(dividend/divisor); ! 64: movl *4(fp),r3 ! 65: ediv 8(fp),r2,r0,r1 ! 66: 3: ! 67: movl r0,*4(fp) ! 68: ret
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.