c05435d86f46effbb48f460bd664b0c4170c07f1johanengelen/*
c05435d86f46effbb48f460bd664b0c4170c07f1johanengelen * (C) Copyright IBM Corporation 2006, 2007
c05435d86f46effbb48f460bd664b0c4170c07f1johanengelen * All Rights Reserved.
c6645729c838b46dc45b2fbb7dcdcae866a9fb37verbalshadow *
c6645729c838b46dc45b2fbb7dcdcae866a9fb37verbalshadow * Permission is hereby granted, free of charge, to any person obtaining a
c05435d86f46effbb48f460bd664b0c4170c07f1johanengelen * copy of this software and associated documentation files (the "Software"),
c05435d86f46effbb48f460bd664b0c4170c07f1johanengelen * to deal in the Software without restriction, including without limitation
c05435d86f46effbb48f460bd664b0c4170c07f1johanengelen * the rights to use, copy, modify, merge, publish, distribute, sub license,
c05435d86f46effbb48f460bd664b0c4170c07f1johanengelen * and/or sell copies of the Software, and to permit persons to whom the
c05435d86f46effbb48f460bd664b0c4170c07f1johanengelen * Software is furnished to do so, subject to the following conditions:
c05435d86f46effbb48f460bd664b0c4170c07f1johanengelen *
9efa90a14f617d756ada86d166a3509042565469johanengelen * The above copyright notice and this permission notice (including the next
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow * paragraph) shall be included in all copies or substantial portions of the
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow * Software.
0311847cf7400d865b1f6e730ec2e3cf210a4104verbalshadow *
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
0311847cf7400d865b1f6e730ec2e3cf210a4104verbalshadow * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow * THE COPYRIGHT HOLDERS, THE AUTHORS, AND/OR THEIR SUPPLIERS BE LIABLE FOR
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
0311847cf7400d865b1f6e730ec2e3cf210a4104verbalshadow * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow */
0311847cf7400d865b1f6e730ec2e3cf210a4104verbalshadow
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow/**
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow * \file glxbyteorder.h
0311847cf7400d865b1f6e730ec2e3cf210a4104verbalshadow * Platform glue for handling byte-ordering issues in GLX protocol.
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow *
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow * \author Ian Romanick <idr@us.ibm.com>
9efa90a14f617d756ada86d166a3509042565469johanengelen */
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow#if !defined(__GLXBYTEORDER_H__)
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow#define __GLXBYTEORDER_H__
0311847cf7400d865b1f6e730ec2e3cf210a4104verbalshadow
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow#ifdef HAVE_DIX_CONFIG_H
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow#include <dix-config.h>
0311847cf7400d865b1f6e730ec2e3cf210a4104verbalshadow#endif
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow#if HAVE_BYTESWAP_H
0311847cf7400d865b1f6e730ec2e3cf210a4104verbalshadow#include <byteswap.h>
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow#elif defined(USE_SYS_ENDIAN_H)
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow#include <sys/endian.h>
0311847cf7400d865b1f6e730ec2e3cf210a4104verbalshadow#elif defined(__APPLE__)
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow#include <libkern/OSByteOrder.h>
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow#define bswap_16 OSSwapInt16
0311847cf7400d865b1f6e730ec2e3cf210a4104verbalshadow#define bswap_32 OSSwapInt32
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow#define bswap_64 OSSwapInt64
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow#else
0311847cf7400d865b1f6e730ec2e3cf210a4104verbalshadow#define bswap_16(value) \
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow ((((value) & 0xff) << 8) | ((value) >> 8))
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow
0311847cf7400d865b1f6e730ec2e3cf210a4104verbalshadow#define bswap_32(value) \
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow (((uint32_t)bswap_16((uint16_t)((value) & 0xffff)) << 16) | \
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow (uint32_t)bswap_16((uint16_t)((value) >> 16)))
0311847cf7400d865b1f6e730ec2e3cf210a4104verbalshadow
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow#define bswap_64(value) \
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow (((uint64_t)bswap_32((uint32_t)((value) & 0xffffffff)) \
0311847cf7400d865b1f6e730ec2e3cf210a4104verbalshadow << 32) | \
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow (uint64_t)bswap_32((uint32_t)((value) >> 32)))
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow#endif
0311847cf7400d865b1f6e730ec2e3cf210a4104verbalshadow
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow#endif /* !defined(__GLXBYTEORDER_H__) */
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow