diff options
Diffstat (limited to 'LIDAR/sdk/src/hal/byteorder.h')
| -rw-r--r-- | LIDAR/sdk/src/hal/byteorder.h | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/LIDAR/sdk/src/hal/byteorder.h b/LIDAR/sdk/src/hal/byteorder.h new file mode 100644 index 0000000..d06a9af --- /dev/null +++ b/LIDAR/sdk/src/hal/byteorder.h @@ -0,0 +1,112 @@ +/* + * RoboPeak Project + * Copyright 2009 - 2013 + * + * RPOS - Endianness Helper + * + */ + +#pragma once + + +#if !defined(_CPU_ENDIAN_BIG) && !defined(_CPU_ENDIAN_SMALL) +// CPU Endianness is not specified, assume little endian. +#define _CPU_ENDIAN_SMALL +#endif + +#if defined(_CPU_ENDIAN_BIG) && defined(_CPU_ENDIAN_SMALL) +#error "_CPU_ENDIAN_BIG and _CPU_ENDIAN_SMALL cannot be defined at the same time." +#endif + +#include "hal/byteops.h" + +#if defined(_CPU_ENDIAN_SMALL) + + +// we don't want to conflict with the Linux kernel... +#ifndef __KERNEL__ +#define constant_cpu_to_le64(x) ((_u64)(x)) +#define constant_le64_to_cpu(x) ((_u64)(x)) +#define constant_cpu_to_le32(x) ((_u32)(x)) +#define constant_le32_to_cpu(x) ((_u32)(x)) +#define constant_cpu_to_le16(x) ((_u16)(x)) +#define constant_le16_to_cpu(x) ((_u16)(x)) +#define constant_cpu_to_be64(x) (__static_byteswap_64((x))) +#define constant_be64_to_cpu(x) __static_byteswap_64((_u64)(x)) +#define constant_cpu_to_be32(x) (__static_byteswap_32((x))) +#define constant_be32_to_cpu(x) __static_byteswap_32((_u32)(x)) +#define constant_cpu_to_be16(x) (__static_byteswap_16((x))) +#define constant_be16_to_cpu(x) __static_byteswap_16((_u16)(x)) + +#define cpu_to_le64(x) ((_u64)(x)) +#define le64_to_cpu(x) ((_u64)(x)) +#define cpu_to_le32(x) ((_u32)(x)) +#define le32_to_cpu(x) ((_u32)(x)) +#define cpu_to_le16(x) ((_u16)(x)) +#define le16_to_cpu(x) ((_u16)(x)) +#define cpu_to_be64(x) (__byteswap_64((x))) +#define be64_to_cpu(x) __byteswap_64((_u64)(x)) +#define cpu_to_be32(x) (__byteswap_32((x))) +#define be32_to_cpu(x) __byteswap_32((_u32)(x)) +#define cpu_to_be16(x) (__byteswap_16((x))) +#define be16_to_cpu(x) __byteswap_16((_u16)(x)) +#endif + +#define cpu_to_float_le(x) ((float)x) +#define float_le_to_cpu(x) ((float)x) + +#define cpu_to_float_be(x) __byteswap_float(x) +#define float_be_to_cpu(x) __byteswap_float(x) + +#define cpu_to_double_le(x) ((double)x) +#define double_le_to_cpu(x) ((double)x) + +#define cpu_to_double_be(x) __byteswap_double(x) +#define double_be_to_cpu(x) __byteswap_double(x) + +#else + +// we don't want to conflict with the Linux kernel... +#ifndef __KERNEL__ +#define constant_cpu_to_le64(x) (__static_byteswap_64((x))) +#define constant_le64_to_cpu(x) __static_byteswap_64((_u64)(x)) +#define constant_cpu_to_le32(x) (__static_byteswap_32((x))) +#define constant_le32_to_cpu(x) __static_byteswap_32((_u32)(x)) +#define constant_cpu_to_le16(x) (__static_byteswap_16((x))) +#define constant_le16_to_cpu(x) __static_byteswap_16((_u16)(x)) +#define constant_cpu_to_be64(x) ((_u64)(x)) +#define constant_be64_to_cpu(x) ((_u64)(x)) +#define constant_cpu_to_be32(x) ((_u32)(x)) +#define constant_be32_to_cpu(x) ((_u32)(x)) +#define constant_cpu_to_be16(x) ((_u16)(x)) +#define constant_be16_to_cpu(x) ((_u16)(x)) + +#define cpu_to_le64(x) (__byteswap_64((x))) +#define le64_to_cpu(x) __byteswap_64((_u64)(x)) +#define cpu_to_le32(x) (__byteswap_32((x))) +#define le32_to_cpu(x) __byteswap_32((_u32)(x)) +#define cpu_to_le16(x) (__byteswap_16((x))) +#define le16_to_cpu(x) __byteswap_16((_u16)(x)) +#define cpu_to_be64(x) ((_u64)(x)) +#define be64_to_cpu(x) ((_u64)(x)) +#define cpu_to_be32(x) ((_u32)(x)) +#define be32_to_cpu(x) ((_u32)(x)) +#define cpu_to_be16(x) ((_u16)(x)) +#define be16_to_cpu(x) ((_u16)(x)) +#endif + + +#define cpu_to_float_le(x) __byteswap_float(x) +#define float_le_to_cpu(x) __byteswap_float(x) + +#define cpu_to_float_be(x) ((float)x) +#define float_be_to_cpu(x) ((float)x) + + +#define cpu_to_double_le(x) __byteswap_double(x) +#define double_le_to_cpu(x) __byteswap_double(x) + +#define cpu_to_double_be(x) ((double)x) +#define double_be_to_cpu(x) ((double)x) + +#endif |
