summaryrefslogtreecommitdiff
path: root/usr/src/lib/libresolv2/common/cylink/lbn68020.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/lib/libresolv2/common/cylink/lbn68020.c')
-rw-r--r--usr/src/lib/libresolv2/common/cylink/lbn68020.c356
1 files changed, 0 insertions, 356 deletions
diff --git a/usr/src/lib/libresolv2/common/cylink/lbn68020.c b/usr/src/lib/libresolv2/common/cylink/lbn68020.c
deleted file mode 100644
index f3562a3463..0000000000
--- a/usr/src/lib/libresolv2/common/cylink/lbn68020.c
+++ /dev/null
@@ -1,356 +0,0 @@
-/*
- * Copyright (c) 1999 by Sun Microsystems, Inc.
- * All rights reserved.
- */
-
-/*
- * Cylink Corporation © 1998
- *
- * This software is licensed by Cylink to the Internet Software Consortium to
- * promote implementation of royalty free public key cryptography within IETF
- * standards. Cylink wishes to expressly thank the contributions of Dr.
- * Martin Hellman, Whitfield Diffie, Ralph Merkle and Stanford University for
- * their contributions to Internet Security. In accordance with the terms of
- * this license, ISC is authorized to distribute and sublicense this software
- * for the practice of IETF standards.
- *
- * The software includes BigNum, written by Colin Plumb and licensed by Philip
- * R. Zimmermann for royalty free use and distribution with Cylink's
- * software. Use of BigNum as a stand alone product or component is
- * specifically prohibited.
- *
- * Disclaimer of All Warranties. THIS SOFTWARE IS BEING PROVIDED "AS IS",
- * WITHOUT ANY EXPRESSED OR IMPLIED WARRANTY OF ANY KIND WHATSOEVER. IN
- * PARTICULAR, WITHOUT LIMITATION ON THE GENERALITY OF THE FOREGOING, CYLINK
- * MAKES NO REPRESENTATION OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR
- * PURPOSE.
- *
- * Cylink or its representatives shall not be liable for tort, indirect,
- * special or consequential damages such as loss of profits or loss of
- * goodwill from the use or inability to use the software for any purpose or
- * for any reason whatsoever.
- *
- * EXPORT LAW: Export of the Foundations Suite may be subject to compliance
- * with the rules and regulations promulgated from time to time by the Bureau
- * of Export Administration, United States Department of Commerce, which
- * restrict the export and re-export of certain products and technical data.
- * If the export of the Foundations Suite is controlled under such rules and
- * regulations, then the Foundations Suite shall not be exported or
- * re-exported, directly or indirectly, (a) without all export or re-export
- * licenses and governmental approvals required by any applicable laws, or (b)
- * in violation of any applicable prohibition against the export or re-export
- * of any part of the Foundations Suite. All export licenses for software
- * containing the Foundations Suite are the sole responsibility of the licensee.
- */
-
-/*
- * lbn68020.c - 32-bit bignum primitives for the 68020+ (0r 683xx) processors.
- *
- * Copyright (c) 1995 Colin Plumb. All rights reserved.
- * For licensing and other legal details, see the file legal.c.
- *
- * This was written for Metrowerks C, and while it should be reasonably
- * portable, NOTE that Metrowerks lets a callee trash a0, a1, d0, d1, and d2.
- * Some 680x0 compilers make d2 callee-save, so instructions to save it
- * will have to be added.
- *
- * This code supports 16 or 32-bit ints, based on UINT_MAX.
- * Regardless of UINT_MAX, only bignums up to 64K words (2 million bits)
- * are supported. (68k hackers will recognize this as a consequence of
- * using dbra.)
- *
- * These primitives use little-endian word order.
- * (The order of bytes within words is irrelevant to this issue.)
- *
- * TODO: Schedule this for the 68040's pipeline. (When I get a 68040 manual.)
- */
-
-#pragma ident "%Z%%M% %I% %E% SMI"
-
-#include <limits.h>
-
-#include "lbn.h" /* Should include lbn68020.h */
-
-/*
- * The Metrowerks C compiler (1.2.2) produces bad 68k code for the
- * following input, which happens to be the inner loop of lbnSub1,
- * so a few less than critical routines have been recoded in assembly
- * to avoid the bug. (Optimizer on or off does not matter.)
- *
- * unsigned
- * decrement(unsigned *num, unsigned len)
- * {
- * do {
- * if ((*num++)-- != 0)
- * return 0;
- * } while (--len);
- * return 1;
- * }
- */
-asm BNWORD32
-lbnSub1_32(BNWORD32 *num, unsigned len, BNWORD32 borrow)
-{
- movea.l 4(sp),a0 /* num */
-#if UINT_MAX == 0xffff
- move.l 10(sp),d0 /* borrow */
-#else
- move.l 12(sp),d0 /* borrow */
-#endif
- sub.l d0,(a0)+
- bcc done
-#if UINT_MAX == 0xffff
- move.w 8(sp),d0 /* len */
-#else
- move.w 10(sp),d0 /* len */
-#endif
- subq.w #2,d0
- bcs done
-loop:
- subq.l #1,(a0)+
- dbcc d0,loop
-done:
- moveq.l #0,d0
- addx.w d0,d0
- rts
-}
-
-asm BNWORD32
-lbnAdd1_32(BNWORD32 *num, unsigned len, BNWORD32 carry)
-{
- movea.l 4(sp),a0 /* num */
-#if UINT_MAX == 0xffff
- move.l 10(sp),d0 /* carry */
-#else
- move.l 12(sp),d0 /* carry */
-#endif
- add.l d0,(a0)+
- bcc done
-#if UINT_MAX == 0xffff
- move.w 8(sp),d0 /* len */
-#else
- move.w 10(sp),d0 /* len */
-#endif
- subq.w #2,d0
- bcs done
-loop:
- addq.l #1,(a0)+
- dbcc d0,loop
-done:
- moveq.l #0,d0
- addx.w d0,d0
- rts
-}
-
-asm void
-lbnMulN1_32(BNWORD32 *out, BNWORD32 const *in, unsigned len, BNWORD32 k)
-{
- machine 68020
-
- movem.l d3-d5,-(sp) /* 12 bytes of extra data */
- moveq.l #0,d4
- move.l 16(sp),a1 /* out */
- move.l 20(sp),a0 /* in */
-#if UINT_MAX == 0xffff
- move.w 24(sp),d5 /* len */
- move.l 26(sp),d2 /* k */
-#else
- move.w 26(sp),d5 /* len */
- move.l 28(sp),d2 /* k */
-#endif
-
- move.l (a0)+,d3 /* First multiply */
- mulu.l d2,d1:d3 /* dc.w 0x4c02, 0x3401 */
- move.l d3,(a1)+
-
- subq.w #1,d5 /* Setup for loop unrolling */
- lsr.w #1,d5
- bcs.s m32_even
- beq.s m32_short
-
- subq.w #1,d5 /* Set up software pipeline properly */
- move.l d1,d0
-
-m32_loop:
- move.l (a0)+,d3
- mulu.l d2,d1:d3 /* dc.w 0x4c02, 0x3401 */
- add.l d0,d3
- addx.l d4,d1
- move.l d3,(a1)+
-m32_even:
-
- move.l (a0)+,d3
- mulu.l d2,d0:d3 /* dc.w 0x4c02, 0x3400 */
- add.l d1,d3
- addx.l d4,d0
- move.l d3,(a1)+
-
- dbra d5,m32_loop
-
- move.l d0,(a1)
- movem.l (sp)+,d3-d5
- rts
-m32_short:
- move.l d1,(a1)
- movem.l (sp)+,d3-d5
- rts
-}
-
-
-asm BNWORD32
-lbnMulAdd1_32(BNWORD32 *out, BNWORD32 const *in, unsigned len, BNWORD32 k)
-{
- machine 68020
- movem.l d3-d5,-(sp) /* 12 bytes of extra data */
- moveq.l #0,d4
- move.l 16(sp),a1 /* out */
- move.l 20(sp),a0 /* in */
-#if UINT_MAX == 0xffff
- move.w 24(sp),d5 /* len */
- move.l 26(sp),d2 /* k */
-#else
- move.w 26(sp),d5 /* len */
- move.l 28(sp),d2 /* k */
-#endif
-
- move.l (a0)+,d3 /* First multiply */
- mulu.l d2,d1:d3 /* dc.w 0x4c02, 0x3401 */
- add.l d3,(a1)+
- addx.l d4,d1
-
- subq.w #1,d5 /* Setup for loop unrolling */
- lsr.w #1,d5
- bcs.s ma32_even
- beq.s ma32_short
-
- subq.w #1,d5 /* Set up software pipeline properly */
- move.l d1,d0
-
-ma32_loop:
- move.l (a0)+,d3
- mulu.l d2,d1:d3 /* dc.w 0x4c02, 0x3401 */
- add.l d0,d3
- addx.l d4,d1
- add.l d3,(a1)+
- addx.l d4,d1
-ma32_even:
-
- move.l (a0)+,d3
- mulu.l d2,d0:d3 /* dc.w 0x4c02, 0x3400 */
- add.l d1,d3
- addx.l d4,d0
- add.l d3,(a1)+
- addx.l d4,d0
-
- dbra d5,ma32_loop
-
- movem.l (sp)+,d3-d5
- rts
-ma32_short:
- move.l d1,d0
- movem.l (sp)+,d3-d5
- rts
-}
-
-
-asm BNWORD32
-lbnMulSub1_32(BNWORD32 *out, BNWORD32 const *in, unsigned len, BNWORD32 k)
-{
- machine 68020
- movem.l d3-d5,-(sp) /* 12 bytes of extra data */
- moveq.l #0,d4
- move.l 16(sp),a1 /* out */
- move.l 20(sp),a0 /* in */
-#if UINT_MAX == 0xffff
- move.w 24(sp),d5 /* len */
- move.l 26(sp),d2 /* k */
-#else
- move.w 26(sp),d5 /* len */
- move.l 28(sp),d2 /* k */
-#endif
-
- move.l (a0)+,d3 /* First multiply */
- mulu.l d2,d1:d3 /* dc.w 0x4c02, 0x3401 */
- sub.l d3,(a1)+
- addx.l d4,d1
-
- subq.w #1,d5 /* Setup for loop unrolling */
- lsr.w #1,d5
- bcs.s ms32_even
- beq.s ms32_short
-
- subq.w #1,d5 /* Set up software pipeline properly */
- move.l d1,d0
-
-ms32_loop:
- move.l (a0)+,d3
- mulu.l d2,d1:d3 /* dc.w 0x4c02, 0x3401 */
- add.l d0,d3
- addx.l d4,d1
- sub.l d3,(a1)+
- addx.l d4,d1
-ms32_even:
-
- move.l (a0)+,d3
- mulu.l d2,d0:d3 /* dc.w 0x4c02, 0x3400 */
- add.l d1,d3
- addx.l d4,d0
- sub.l d3,(a1)+
- addx.l d4,d0
-
- dbra d5,ms32_loop
-
- movem.l (sp)+,d3-d5
- rts
-
-ms32_short:
- move.l d1,d0
- movem.l (sp)+,d3-d5
- rts
-}
-
-
-asm BNWORD32
-lbnDiv21_32(BNWORD32 *q, BNWORD32 nh, BNWORD32 nl, BNWORD32 d)
-{
- machine 68020
- move.l 8(sp),d0
- move.l 12(sp),d1
- move.l 4(sp),a0
- divu.l 16(sp),d0:d1 /* dc.w 0x4c6f, 0x1400, 16 */
- move.l d1,(a0)
- rts
-}
-
-asm unsigned
-lbnModQ_32(BNWORD32 const *n, unsigned len, unsigned d)
-{
- machine 68020
- move.l 4(sp),a0 /* n */
- move.l d3,a1
-#if UINT_MAX == 0xffff
- moveq.l #0,d2
- move.w 8(sp),d1 /* len */
- move.w 10(sp),d2 /* d */
-#else
- move.w 10(sp),d1 /* len */
- move.l 12(sp),d2 /* d */
-#endif
- dc.w 0x41f0, 0x1cfc /* lea -4(a0,d1.L*4),a0 */
-
- /* First time, divide 32/32 - may be faster than 64/32 */
- move.l (a0),d3
- divul.l d2,d0:d3 /* dc.w 0x4c02, 0x3000 */
- subq.w #2,d1
- bmi mq32_done
-
-mq32_loop:
- move.l -(a0),d3
- divu.l d2,d0:d3 /* dc.w 0x4c02,0x3400 */
- dbra d1,mq32_loop
-
-mq32_done:
- move.l a1,d3
- rts
-}
-
-/* 45678901234567890123456789012345678901234567890123456789012345678901234567 */