/*
 * SPDX-License-Identifier: BSD-2-Clause
 *
 * Copyright (c) 2023 Ventana Micro Systems Inc.
 */

#ifndef __SBI_BYTEORDER_H__
#define __SBI_BYTEORDER_H__

#ifdef __ASSEMBLER__
# define _conv_cast(type, val) (val)
#else
# include <sbi/sbi_types.h>
# define _conv_cast(type, val) ((type)(val))
#endif

#define BSWAP16(x)	((((x) & 0x00ff) << 8) | \
			 (((x) & 0xff00) >> 8))
#define BSWAP32(x)	((((x) & 0x000000ff) << 24) | \
			 (((x) & 0x0000ff00) << 8) | \
			 (((x) & 0x00ff0000) >> 8) | \
			 (((x) & 0xff000000) >> 24))
#define BSWAP64(x)	((((x) & 0x00000000000000ffULL) << 56) | \
			 (((x) & 0x000000000000ff00ULL) << 40) | \
			 (((x) & 0x0000000000ff0000ULL) << 24) | \
			 (((x) & 0x00000000ff000000ULL) << 8) | \
			 (((x) & 0x000000ff00000000ULL) >> 8) | \
			 (((x) & 0x0000ff0000000000ULL) >> 24) | \
			 (((x) & 0x00ff000000000000ULL) >> 40) | \
			 (((x) & 0xff00000000000000ULL) >> 56))

#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__  /* CPU(little-endian) */
#define cpu_to_be16(x)		_conv_cast(uint16_t, BSWAP16(x))
#define cpu_to_be32(x)		_conv_cast(uint32_t, BSWAP32(x))
#define cpu_to_be64(x)		_conv_cast(uint64_t, BSWAP64(x))

#define be16_to_cpu(x)		_conv_cast(uint16_t, BSWAP16(x))
#define be32_to_cpu(x)		_conv_cast(uint32_t, BSWAP32(x))
#define be64_to_cpu(x)		_conv_cast(uint64_t, BSWAP64(x))

#define cpu_to_le16(x)		_conv_cast(uint16_t, (x))
#define cpu_to_le32(x)		_conv_cast(uint32_t, (x))
#define cpu_to_le64(x)		_conv_cast(uint64_t, (x))

#define le16_to_cpu(x)		_conv_cast(uint16_t, (x))
#define le32_to_cpu(x)		_conv_cast(uint32_t, (x))
#define le64_to_cpu(x)		_conv_cast(uint64_t, (x))
#else /* CPU(big-endian) */
#define cpu_to_be16(x)		_conv_cast(uint16_t, (x))
#define cpu_to_be32(x)		_conv_cast(uint32_t, (x))
#define cpu_to_be64(x)		_conv_cast(uint64_t, (x))

#define be16_to_cpu(x)		_conv_cast(uint16_t, (x))
#define be32_to_cpu(x)		_conv_cast(uint32_t, (x))
#define be64_to_cpu(x)		_conv_cast(uint64_t, (x))

#define cpu_to_le16(x)		_conv_cast(uint16_t, BSWAP16(x))
#define cpu_to_le32(x)		_conv_cast(uint32_t, BSWAP32(x))
#define cpu_to_le64(x)		_conv_cast(uint64_t, BSWAP64(x))

#define le16_to_cpu(x)		_conv_cast(uint16_t, BSWAP16(x))
#define le32_to_cpu(x)		_conv_cast(uint32_t, BSWAP32(x))
#define le64_to_cpu(x)		_conv_cast(uint64_t, BSWAP64(x))
#endif

#if __riscv_xlen == 64
#define cpu_to_lle		cpu_to_le64
#define lle_to_cpu		le64_to_cpu
#elif __riscv_xlen == 32
#define cpu_to_lle		cpu_to_le32
#define lle_to_cpu		le32_to_cpu
#else
#error "Unknown __riscv_xlen"
#endif

#endif /* __SBI_BYTEORDER_H__ */
