Green shading in the line number column means the source is part of the translation unit, red means it is conditionally excluded. Highlighted line numbers link to the translation unit page. Highlighted macros link to the macro page.
1: /* 2: * Copyright (c) 2006-2012 Apple Inc. All rights reserved. 3: * 4: * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 5: * 6: * This file contains Original Code and/or Modifications of Original Code 7: * as defined in and that are subject to the Apple Public Source License 8: * Version 2.0 (the 'License'). You may not use this file except in 9: * compliance with the License. The rights granted to you under the License 10: * may not be used to create, or enable the creation or redistribution of, 11: * unlawful or unlicensed copies of an Apple operating system, or to 12: * circumvent, violate, or enable the circumvention or violation of, any 13: * terms of an Apple operating system software license agreement. 14: * 15: * Please obtain a copy of the License at 16: * http://www.opensource.apple.com/apsl/ and read it before using this file. 17: * 18: * The Original Code and all software distributed under the License are 19: * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 20: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 21: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 22: * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 23: * Please see the License for the specific language governing rights and 24: * limitations under the License. 25: * 26: * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 27: */ 28: 29: #ifndef _OS__OSBYTEORDERI386_H 30: #define _OS__OSBYTEORDERI386_H 31: 32: #if !defined(__DARWIN_OS_INLINE) 33: # if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L 34: # define __DARWIN_OS_INLINE static inline 35: # elif defined(__MWERKS__) || defined(__cplusplus) 36: # define __DARWIN_OS_INLINE static inline 37: # else 38: # define __DARWIN_OS_INLINE static __inline__ 39: # endif 40: #endif 41: 42: /* Generic byte swapping functions. */ 43: 44: __DARWIN_OS_INLINE 45: __uint16_t 46: _OSSwapInt16( 47: __uint16_t _data 48: ) 49: { 50: return ((__uint16_t)((_data << 8) | (_data >> 8))); 51: } 52: 53: __DARWIN_OS_INLINE 54: __uint32_t 55: _OSSwapInt32( 56: __uint32_t _data 57: ) 58: { 59: #if defined(__llvm__) 60: return __builtin_bswap32(_data); 61: #else 62: __asm__ ("bswap %0" : "+r" (_data)); 63: return _data; 64: #endif 65: } 66: 67: #if defined(__llvm__) 68: __DARWIN_OS_INLINE 69: __uint64_t 70: _OSSwapInt64( 71: __uint64_t _data 72: ) 73: { 74: return __builtin_bswap64(_data); 75: } 76: 77: #elif defined(__i386__) 78: __DARWIN_OS_INLINE 79: __uint64_t 80: _OSSwapInt64( 81: __uint64_t _data 82: ) 83: { 84: __asm__ ("bswap %%eax\n\t" 85: "bswap %%edx\n\t" 86: "xchgl %%eax, %%edx" 87: : "+A" (_data)); 88: return _data; 89: } 90: #elif defined(__x86_64__) 91: __DARWIN_OS_INLINE 92: __uint64_t 93: _OSSwapInt64( 94: __uint64_t _data 95: ) 96: { 97: __asm__ ("bswap %0" : "+r" (_data)); 98: return _data; 99: } 100: #else 101: #error Unknown architecture 102: #endif 103: 104: #endif /* ! _OS__OSBYTEORDERI386_H */ 105: