]> git.saurik.com Git - apple/xnu.git/blobdiff - EXTERNAL_HEADERS/architecture/ppc/byte_order.h
xnu-792.tar.gz
[apple/xnu.git] / EXTERNAL_HEADERS / architecture / ppc / byte_order.h
index 77927e97a7f80623a117012242b500cb6dfacfa5..4669264e49d266c06c188bd29a9dcfe45b94206d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2000-2004 Apple Computer, Inc. All rights reserved.
  *
  * @APPLE_LICENSE_HEADER_START@
  * 
  * Copyright (c) 1996 NeXT Software, Inc.
  *
  * Byte ordering conversion (for ppc).
- *
- * HISTORY
- *
- * 29-Dec-96  Umesh Vaishampayan  (umeshv@NeXT.com)
- *     Ported from m98k.
- *
- * 8 October 1992 ? at NeXT
- *     Converted to NXxxx versions.  Condensed history.
- *
- * 28 August 1992 Bruce Martin @NeXT
- *     Created.
  */
 
 static __inline__
@@ -77,34 +66,40 @@ NXSwapInt(
 }
 
 static __inline__
-unsigned long
-NXSwapLong(
-    unsigned long      inv
+unsigned long long
+NXSwapLongLong(
+    unsigned long long inv
 )
 {
-    union lconv {
-       unsigned long   ul;
-       unsigned char   uc[4];
+    union llconv {
+       unsigned long long      ull;
+       unsigned char           uc[8];
     } *inp, outv;
     
-    inp = (union lconv *)&inv;
+    inp = (union llconv *)&inv;
     
-    outv.uc[0] = inp->uc[3];
-    outv.uc[1] = inp->uc[2];
-    outv.uc[2] = inp->uc[1];
-    outv.uc[3] = inp->uc[0];
+    outv.uc[0] = inp->uc[7];
+    outv.uc[1] = inp->uc[6];
+    outv.uc[2] = inp->uc[5];
+    outv.uc[3] = inp->uc[4];
+    outv.uc[4] = inp->uc[3];
+    outv.uc[5] = inp->uc[2];
+    outv.uc[6] = inp->uc[1];
+    outv.uc[7] = inp->uc[0];
     
-    return (outv.ul);
+    return (outv.ull);
 }
 
+#if defined(__LP64__)
+
 static __inline__
-unsigned long long
-NXSwapLongLong(
-    unsigned long long inv
+unsigned long 
+NXSwapLong(
+    unsigned long inv
 )
 {
     union llconv {
-       unsigned long long      ull;
+       unsigned long           ul;
        unsigned char           uc[8];
     } *inp, outv;
     
@@ -119,9 +114,34 @@ NXSwapLongLong(
     outv.uc[6] = inp->uc[1];
     outv.uc[7] = inp->uc[0];
     
-    return (outv.ull);
+    return (outv.ul);
 }
 
+#else 
+
+static __inline__
+unsigned long
+NXSwapLong(
+    unsigned long      inv
+)
+{
+    union lconv {
+       unsigned long   ul;
+       unsigned char   uc[4];
+    } *inp, outv;
+    
+    inp = (union lconv *)&inv;
+    
+    outv.uc[0] = inp->uc[3];
+    outv.uc[1] = inp->uc[2];
+    outv.uc[2] = inp->uc[1];
+    outv.uc[3] = inp->uc[0];
+    
+    return (outv.ul);
+}
+
+#endif /* __LP64__ */
+
 #ifndef KERNEL
 
 static __inline__ NXSwappedFloat