bytes_bsd_zero.inline.hpp revision 2767:436b4a3231bf
1/* 2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 * 23 */ 24 25#ifndef OS_CPU_BSD_ZERO_VM_BYTES_BSD_ZERO_INLINE_HPP 26#define OS_CPU_BSD_ZERO_VM_BYTES_BSD_ZERO_INLINE_HPP 27 28// Efficient swapping of data bytes from Java byte 29// ordering to native byte ordering and vice versa. 30 31#ifdef __APPLE__ 32# include <libkern/OSByteOrder.h> 33#else 34# include <sys/endian.h> 35#endif 36 37#if defined(__APPLE__) 38# define bswap_16(x) OSSwapInt16(x) 39# define bswap_32(x) OSSwapInt32(x) 40# define bswap_64(x) OSSwapInt64(x) 41#elif defined(__OpenBSD__) 42# define bswap_16(x) swap16(x) 43# define bswap_32(x) swap32(x) 44# define bswap_64(x) swap64(x) 45#elif defined(__NetBSD__) 46# define bswap_16(x) bswap16(x) 47# define bswap_32(x) bswap32(x) 48# define bswap_64(x) bswap64(x) 49#else 50# define bswap_16(x) __bswap16(x) 51# define bswap_32(x) __bswap32(x) 52# define bswap_64(x) __bswap64(x) 53#endif 54 55inline u2 Bytes::swap_u2(u2 x) { 56 return bswap_16(x); 57} 58 59inline u4 Bytes::swap_u4(u4 x) { 60 return bswap_32(x); 61} 62 63inline u8 Bytes::swap_u8(u8 x) { 64 return bswap_64(x); 65} 66 67#endif // OS_CPU_BSD_ZERO_VM_BYTES_BSD_ZERO_INLINE_HPP 68