patch-1.3.48 linux/include/asm-mips/byteorder.h

Next file: linux/include/asm-mips/cachectl.h
Previous file: linux/include/asm-mips/bootinfo.h
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v1.3.47/linux/include/asm-mips/byteorder.h linux/include/asm-mips/byteorder.h
@@ -1,19 +1,22 @@
 #ifndef __ASM_MIPS_BYTEORDER_H
 #define __ASM_MIPS_BYTEORDER_H
 
+/*
+ * FIXME: Add big endian support
+ */
 #undef ntohl
 #undef ntohs
 #undef htonl
 #undef htons
 
-#ifdef MIPSEL
+#if defined (__MIPSEL__)
 #define __LITTLE_ENDIAN
 #define __LITTLE_ENDIAN_BITFIELD
-#elif MIPSEB
+#elif defined (__MIPSEB__)
 #define __BIG_ENDIAN
 #define __BIG_ENDIAN_BITFIELD
 #else
-#error "MIPS but neither MIPSEL nor MIPSEB?"
+#error "MIPS but neither __MIPSEL__ nor __MIPSEB__?"
 #endif
 
 extern unsigned long int	ntohl(unsigned long int);
@@ -21,16 +24,18 @@
 extern unsigned long int	htonl(unsigned long int);
 extern unsigned short int	htons(unsigned short int);
 
-extern unsigned long int	__ntohl(unsigned long int);
-extern unsigned short int	__ntohs(unsigned short int);
-extern unsigned long int	__constant_ntohl(unsigned long int);
-extern unsigned short int	__constant_ntohs(unsigned short int);
+extern __inline__ unsigned long int	__ntohl(unsigned long int);
+extern __inline__ unsigned short int	__ntohs(unsigned short int);
+extern __inline__ unsigned long int	__constant_ntohl(unsigned long int);
+extern __inline__ unsigned short int	__constant_ntohs(unsigned short int);
 
 /*
  * The constant and non-constant versions here are the same.
  * Maybe I'll come up with an mips-optimized routine for the
  * non-constant ones (the constant ones don't need it: gcc
- * will optimize it to the correct constant)
+ * will optimize it to the correct constant).  Oh, and the
+ * big endian routines that are still missing will be fairly
+ * easy to write :-)
  */
 
 extern __inline__ unsigned long int
@@ -42,14 +47,11 @@
 		((x & 0xff000000U) >> 24));
 }
 
-extern __inline__ unsigned long int
-__constant_ntohl(unsigned long int x)
-{
-	return (((x & 0x000000ffU) << 24) |
-		((x & 0x0000ff00U) <<  8) |
-		((x & 0x00ff0000U) >>  8) |
-		((x & 0xff000000U) >> 24));
-}
+#define __constant_ntohl(x) \
+	((unsigned long int)((((unsigned long int)(x) & 0x000000ffU) << 24) | \
+			     (((unsigned long int)(x) & 0x0000ff00U) <<  8) | \
+			     (((unsigned long int)(x) & 0x00ff0000U) >>  8) | \
+			     (((unsigned long int)(x) & 0xff000000U) >> 24)))
 
 extern __inline__ unsigned short int
 __ntohs(unsigned short int x)
@@ -58,12 +60,9 @@
 		((x & 0xff00) >> 8));
 }
 
-extern __inline__ unsigned short int
-__constant_ntohs(unsigned short int x)
-{
-	return (((x & 0x00ff) << 8) |
-		((x & 0xff00) >> 8));
-}
+#define __constant_ntohs(x) \
+	((unsigned short int)((((unsigned short int)(x) & 0x00ff) << 8) | \
+			      (((unsigned short int)(x) & 0xff00) >> 8))) \
 
 #define __htonl(x) __ntohl(x)
 #define __htons(x) __ntohs(x)

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov with Sam's (original) version
of this