Print this page
6189743 Need an ARCFOUR implementation optimized for AMD64

@@ -1,12 +1,11 @@
 /*
  * CDDL HEADER START
  *
  * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License").  You may not use this file except in compliance
- * with the License.
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
  *
  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
  * or http://www.opensolaris.org/os/licensing.
  * See the License for the specific language governing permissions
  * and limitations under the License.

@@ -18,18 +17,26 @@
  * information: Portions Copyright [yyyy] [name of copyright owner]
  *
  * CDDL HEADER END
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
+ * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  */
 
-#pragma ident   "@(#)arcfour_crypt.c    1.5     05/08/23 SMI"
+#pragma ident   "@(#)arcfour_crypt.c    1.6     08/01/02 SMI"
 
 #include "arcfour.h"
 
+#if defined(__amd64)
+/*
+ * Use hand-tuned, processor-specific assembly version of arcfour_crypt()
+ * for 64-bit x86:
+ */
+#define USE_PSR_VERSION_OF_ARCFOUR_CRYPT
+#endif /* __amd64 */
+
 /* Initialize the key stream 'key' using the key value */
 void
 arcfour_key_init(ARCFour_key *key, uchar_t *keyval, int keyvallen)
 {
 /* EXPORT DELETE START */

@@ -59,12 +66,13 @@
 
 /* EXPORT DELETE END */
 }
 
 
+#if !defined(USE_PSR_VERSION_OF_ARCFOUR_CRYPT)
 /*
- * Encipher 'in' using 'key.
+ * Encipher 'in' using 'key'.
  * in and out can point to the same location
  */
 void
 arcfour_crypt(ARCFour_key *key, uchar_t *in, uchar_t *out, size_t len)
 {

@@ -128,5 +136,6 @@
         }
 #endif  /* sun4u */
 
 /* EXPORT DELETE END */
 }
+#endif  /* !USE_PSR_VERSION_OF_ARCFOUR_CRYPT */