usr/src/lib/libc/amd64/gen/byteorder.s
changeset 4292 d7beef35913b
parent 0 68f95e015346
child 7298 b69e27387f74
--- a/usr/src/lib/libc/amd64/gen/byteorder.s	Tue May 22 10:56:13 2007 -0700
+++ b/usr/src/lib/libc/amd64/gen/byteorder.s	Tue May 22 11:10:09 2007 -0700
@@ -2,9 +2,8 @@
  * 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.
@@ -20,7 +19,7 @@
  * CDDL HEADER END
  */
 /*
- * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
+ * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  */
 
@@ -30,6 +29,15 @@
 
 #include "SYS.h"
 
+	/*
+	 * NOTE: htonl/ntohl are identical routines, as are htons/ntohs.
+	 * As such, they could be implemented as a single routine, using
+	 * multiple ALTENTRY/SET_SIZE definitions. We don't do this so
+	 * that they will have unique addresses, allowing DTrace and
+	 * other debuggers to tell them apart. 
+	 */
+
+
 /*
  *	unsigned long htonl( hl )
  *	unsigned long ntohl( hl )
@@ -37,11 +45,15 @@
  *	reverses the byte order of 'uint32_t hl'
  */
 	ENTRY(htonl)
-	ALTENTRY(ntohl)
 	movl	%edi, %eax	/* %eax = hl */
 	bswap	%eax		/* reverses the byte order of %eax */
 	ret			/* return (%eax) */
 	SET_SIZE(htonl)
+
+	ENTRY(ntohl)
+	movl	%edi, %eax	/* %eax = hl */
+	bswap	%eax		/* reverses the byte order of %eax */
+	ret			/* return (%eax) */
 	SET_SIZE(ntohl)
 
 /*
@@ -51,10 +63,15 @@
  *	reverses the byte order in hs.
  */
 	ENTRY(htons)
-	ALTENTRY(ntohs)
 	movl	%edi, %eax	/* %eax = hs */
 	bswap	%eax		/* reverses the byte order of %eax */
 	shrl	$16, %eax	/* moves high 16-bit to low 16-bit */
 	ret			/* return (%eax) */
 	SET_SIZE(htons)
+
+	ENTRY(ntohs)
+	movl	%edi, %eax	/* %eax = hs */
+	bswap	%eax		/* reverses the byte order of %eax */
+	shrl	$16, %eax	/* moves high 16-bit to low 16-bit */
+	ret			/* return (%eax) */
 	SET_SIZE(ntohs)