home *** CD-ROM | disk | FTP | other *** search
- /*
- * Copyright (c) 1992 NeXT Computer, Inc.
- *
- * Byte ordering conversion (for i386).
- *
- * HISTORY
- *
- * 8 October 1992 David E. Bohman at NeXT
- * Converted to NXxxx versions. Condensed history.
- *
- * 18 May 1992 David E. Bohman at NeXT
- * Created.
- */
-
- static __inline__
- unsigned short
- NXSwapShort(
- unsigned short inv
- )
- {
- unsigned short outv;
-
- __asm__ volatile(
- "rorw $8,%0"
-
- : "=r" (outv)
- : "0" (inv));
-
- return (outv);
- }
-
- static __inline__
- unsigned int
- NXSwapInt(
- unsigned int inv
- )
- {
- unsigned int outv;
-
- __asm__ volatile(
- "bswap %0"
-
- : "=r" (outv)
- : "0" (inv));
-
- return (outv);
- }
-
- static __inline__
- unsigned long
- NXSwapLong(
- unsigned long inv
- )
- {
- unsigned long outv;
-
- __asm__ volatile(
- "bswap %0"
-
- : "=r" (outv)
- : "0" (inv));
-
- return (outv);
- }
-
- static __inline__
- unsigned long long
- NXSwapLongLong(
- unsigned long long inv
- )
- {
- union llconv {
- unsigned long long ull;
- unsigned long ul[2];
- } *inp, outv;
-
- inp = (union llconv *)&inv;
-
- outv.ul[0] = NXSwapLong(inp->ul[1]);
- outv.ul[1] = NXSwapLong(inp->ul[0]);
-
- return (outv.ull);
- }
-
- static __inline__ NXSwappedFloat
- NXConvertHostFloatToSwapped(float x)
- {
- union fconv {
- float number;
- NXSwappedFloat sf;
- };
- return ((union fconv *)&x)->sf;
- }
-
- static __inline__ float
- NXConvertSwappedFloatToHost(NXSwappedFloat x)
- {
- union fconv {
- float number;
- NXSwappedFloat sf;
- };
- return ((union fconv *)&x)->number;
- }
-
- static __inline__ NXSwappedDouble
- NXConvertHostDoubleToSwapped(double x)
- {
- union dconv {
- double number;
- NXSwappedDouble sd;
- };
- return ((union dconv *)&x)->sd;
- }
-
- static __inline__ double
- NXConvertSwappedDoubleToHost(NXSwappedDouble x)
- {
- union dconv {
- double number;
- NXSwappedDouble sd;
- };
- return ((union dconv *)&x)->number;
- }
-
- static __inline__ NXSwappedFloat
- NXSwapFloat(NXSwappedFloat x)
- {
- return NXSwapLong(x);
- }
-
- static __inline__ NXSwappedDouble
- NXSwapDouble(NXSwappedDouble x)
- {
- return NXSwapLongLong(x);
- }
-