X-Git-Url: https://git.subgeniuskitty.com/unix-history/.git/blobdiff_plain/0f4556f12c8f75078501c9d1338ae7648a97f975..95f51977ddc18faa2e212f30c00a39540b39f325:/usr/src/lib/libc/vax/gen/udiv.s diff --git a/usr/src/lib/libc/vax/gen/udiv.s b/usr/src/lib/libc/vax/gen/udiv.s index d53b9b3bd8..c7d1daff40 100644 --- a/usr/src/lib/libc/vax/gen/udiv.s +++ b/usr/src/lib/libc/vax/gen/udiv.s @@ -1,4 +1,6 @@ -/* udiv.s 4.2 83/06/27 */ +#ifdef LIBC_SCCS + .asciz "@(#)udiv.s 5.2 (Berkeley) 3/9/86" +#endif LIBC_SCCS /* * udiv - unsigned division for vax-11 @@ -19,7 +21,7 @@ #include "DEFS.h" -ASENTRY(udiv) +ASENTRY(udiv, 0) movl 4(ap),r0 /* dividend */ movl 8(ap),r2 /* divisor */ jeql 1f /* if divisor=0, force exception */ @@ -39,3 +41,37 @@ ASENTRY(udiv) movl $1,r0 /* dividend >= divisor, return 1 */ 1: ret + +/* + * audiv - unsigned division for vax-11 + * + * arguments: *dividend, divisor. + * result: quotient in r0 and *dividend. + * uses r0-r2 + */ + +#include "DEFS.h" + +ASENTRY(audiv, 0) + movl *4(ap),r0 /* dividend */ + movl 8(ap),r2 /* divisor */ + jeql 1f /* if divisor=0, force exception */ + cmpl r2,$1 /* if divisor <= 1 (signed), */ + jleq 2f /* no division is necessary */ +1: + clrl r1 /* zero-extend the dividend */ + ediv r2,r0,r0,r2 /* divide. q->r0, r->r2 (discarded) */ + movl r0,*4(ap) /* save result */ + ret +2: + jeql 1f /* if divisor=1, return dividend */ + cmpl r0,r2 /* unsigned comparison between */ + jgequ 2f /* dividend and divisor */ + clrl r0 /* dividend < divisor, return 0 */ + clrl *4(ap) /* save result */ + ret +2: + movl $1,r0 /* dividend >= divisor, return 1 */ +1: + movl r0,*4(ap) /* save result */ + ret