summaryrefslogtreecommitdiff
path: root/libkern/muldiv-68000.s
diff options
context:
space:
mode:
Diffstat (limited to 'libkern/muldiv-68000.s')
-rw-r--r--libkern/muldiv-68000.s172
1 files changed, 0 insertions, 172 deletions
diff --git a/libkern/muldiv-68000.s b/libkern/muldiv-68000.s
deleted file mode 100644
index 10ef6f46..00000000
--- a/libkern/muldiv-68000.s
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * calls _divul with
- * absolute value arguments
- */
-TEXT _divsl(SB), $0
- MOVL R0, TOS
-
- MOVL b+4(FP), R0
- BPL y1
- NEGL R0
- MOVL R0, TOS
-
- MOVL a+0(FP), R0
- BPL y3
- NEGL R0
- MOVL R0, TOS
-
- /* neg/neg */
- JSR _divul(SB)
- MOVL TOS, R0
- MOVL R0, a+0(FP)
- MOVL TOS, R0
- NEGL R0
- MOVL R0, b+4(FP)
- MOVL TOS, R0
- RTS
-
-y1: MOVL R0, TOS
-
- MOVL a+0(FP), R0
- BPL y2
- NEGL R0
- MOVL R0, TOS
-
- /* neg/pos */
- JSR _divul(SB)
- MOVL TOS, R0
- NEGL R0
- MOVL R0, a+0(FP)
- MOVL TOS, R0
- NEGL R0
- MOVL R0, b+4(FP)
- MOVL TOS, R0
- RTS
-
-y2: MOVL R0, TOS
-
- /* pos/pos */
- JSR _divul(SB)
- MOVL TOS, R0
- MOVL R0, a+0(FP)
- MOVL TOS, R0
- MOVL R0, b+4(FP)
- MOVL TOS, R0
- RTS
-
-y3: MOVL R0, TOS
-
- /* pos/neg */
- JSR _divul(SB)
- MOVL TOS, R0
- NEGL R0
- MOVL R0, a+0(FP)
- MOVL TOS, R0
- MOVL R0, b+4(FP)
- MOVL TOS, R0
- RTS
-
-/*
- * for(i=1;; i++) {
- * if(den & (1<<31))
- * break;
- * den <<= 1;
- * }
- *
- * for(; i; i--) {
- * quo <<= 1;
- * if(num >= den) {
- * num -= den;
- * quo |= 1;
- * }
- * den >>= 1;
- * }
- */
-TEXT _divul(SB), $0
- MOVL R0, TOS /* i */
- MOVL R1, TOS /* num */
- MOVL R2, TOS /* den */
- MOVL R3, TOS /* quo */
-
- MOVL $0, R0
- MOVL $0, R3
- MOVL a+0(FP), R1
- MOVL b+4(FP), R2
- BEQ xout
- BMI x1
-
- ADDL $1, R0
- LSLL $1, R2
- BPL -2(PC)
-
-x1: LSLL $1, R3
- CMPL R1, R2
- BCS 3(PC)
- SUBL R2, R1
- ORL $1, R3
- LSRL $1, R2
- DBMI R0, x1
-
- MOVL R3, a+0(FP)
- MOVL R1, b+4(FP)
-
-xout:
- MOVL TOS, R3
- MOVL TOS, R2
- MOVL TOS, R1
- MOVL TOS, R0
- RTS
-
-/*
- * x = 0;
- * for(i=0; i<32; i++) {
- * if(a & 1)
- * x += b;
- * a >>= 1;
- * b <<= 1;
- * }
- * a = x;
- */
-TEXT _mull(SB), $0
- MOVL R0, TOS /* i */
- MOVL R1, TOS /* a */
- MOVL R2, TOS /* b */
- MOVL R3, TOS /* x */
-
- MOVL a+0(FP), R1
- MOVL b+4(FP), R2
- MOVL $32, R0
- CLRL R3
-
-z1: ROTRL $1, R1
- BCC 2(PC)
- ADDL R2, R3
- LSLL $1, R2
- DBEQ R0, z1
-
- MOVL R3, b+4(FP)
- MOVL TOS, R3
- MOVL TOS, R2
- MOVL TOS, R1
- MOVL TOS, R0
- RTS
-
-TEXT _ccr(SB), $0
- PEA (A0)
- SUBL A0, A0
-
- BCC 2(PC)
- LEA 1(A0), A0
-
- BVC 2(PC)
- LEA 2(A0), A0
-
- BNE 2(PC)
- LEA 4(A0), A0
-
- BPL 2(PC)
- LEA 8(A0), A0
-
- MOVW A0, a+0(FP)
- MOVL TOS, A0
- RTS