-ASENTRY(urem, 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,r2,r0 /* divide. q->r2 (discarded), r->r0 */
- ret
-2:
- jneq 1f /* if divisor=1, return 0 */
- clrl r0 /* (because doing the divide will overflow */
- ret /* if the dividend has its high bit on) */
-1:
- cmpl r0,r2 /* if dividend < divisor (unsigned) */
- jlssu 1f /* remainder is dividend */
- subl2 r2,r0 /* else remainder is dividend - divisor */
-1:
- ret
+#if defined(LIBC_SCCS) && !defined(lint)
+ .asciz "@(#)urem.s 8.1 (Berkeley) 6/4/93"
+#endif /* LIBC_SCCS and not lint */
+
+#include "DEFS.h"