Chameleon

Chameleon Svn Source Tree

Root/branches/rewrite/i386/include/libkern/i386/_OSByteOrder.h

Source at commit 1146 created 12 years 11 months ago.
By azimutz, Sync with trunk (r1145). Add nVidia dev id's, 0DF4 for "GeForce GT 450M" (issue 99) and 1251 for "GeForce GTX 560M" (thanks to oSxFr33k for testing).
1/*
2 * Copyright (c) 2006 Apple Computer, 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 ((_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

Archive Download this file

Revision: 1146