18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * endian.h - Defines for endianness handling in NTFS Linux kernel driver.
48c2ecf20Sopenharmony_ci *	      Part of the Linux-NTFS project.
58c2ecf20Sopenharmony_ci *
68c2ecf20Sopenharmony_ci * Copyright (c) 2001-2004 Anton Altaparmakov
78c2ecf20Sopenharmony_ci */
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_ci#ifndef _LINUX_NTFS_ENDIAN_H
108c2ecf20Sopenharmony_ci#define _LINUX_NTFS_ENDIAN_H
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_ci#include <asm/byteorder.h>
138c2ecf20Sopenharmony_ci#include "types.h"
148c2ecf20Sopenharmony_ci
158c2ecf20Sopenharmony_ci/*
168c2ecf20Sopenharmony_ci * Signed endianness conversion functions.
178c2ecf20Sopenharmony_ci */
188c2ecf20Sopenharmony_ci
198c2ecf20Sopenharmony_cistatic inline s16 sle16_to_cpu(sle16 x)
208c2ecf20Sopenharmony_ci{
218c2ecf20Sopenharmony_ci	return le16_to_cpu((__force le16)x);
228c2ecf20Sopenharmony_ci}
238c2ecf20Sopenharmony_ci
248c2ecf20Sopenharmony_cistatic inline s32 sle32_to_cpu(sle32 x)
258c2ecf20Sopenharmony_ci{
268c2ecf20Sopenharmony_ci	return le32_to_cpu((__force le32)x);
278c2ecf20Sopenharmony_ci}
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_cistatic inline s64 sle64_to_cpu(sle64 x)
308c2ecf20Sopenharmony_ci{
318c2ecf20Sopenharmony_ci	return le64_to_cpu((__force le64)x);
328c2ecf20Sopenharmony_ci}
338c2ecf20Sopenharmony_ci
348c2ecf20Sopenharmony_cistatic inline s16 sle16_to_cpup(sle16 *x)
358c2ecf20Sopenharmony_ci{
368c2ecf20Sopenharmony_ci	return le16_to_cpu(*(__force le16*)x);
378c2ecf20Sopenharmony_ci}
388c2ecf20Sopenharmony_ci
398c2ecf20Sopenharmony_cistatic inline s32 sle32_to_cpup(sle32 *x)
408c2ecf20Sopenharmony_ci{
418c2ecf20Sopenharmony_ci	return le32_to_cpu(*(__force le32*)x);
428c2ecf20Sopenharmony_ci}
438c2ecf20Sopenharmony_ci
448c2ecf20Sopenharmony_cistatic inline s64 sle64_to_cpup(sle64 *x)
458c2ecf20Sopenharmony_ci{
468c2ecf20Sopenharmony_ci	return le64_to_cpu(*(__force le64*)x);
478c2ecf20Sopenharmony_ci}
488c2ecf20Sopenharmony_ci
498c2ecf20Sopenharmony_cistatic inline sle16 cpu_to_sle16(s16 x)
508c2ecf20Sopenharmony_ci{
518c2ecf20Sopenharmony_ci	return (__force sle16)cpu_to_le16(x);
528c2ecf20Sopenharmony_ci}
538c2ecf20Sopenharmony_ci
548c2ecf20Sopenharmony_cistatic inline sle32 cpu_to_sle32(s32 x)
558c2ecf20Sopenharmony_ci{
568c2ecf20Sopenharmony_ci	return (__force sle32)cpu_to_le32(x);
578c2ecf20Sopenharmony_ci}
588c2ecf20Sopenharmony_ci
598c2ecf20Sopenharmony_cistatic inline sle64 cpu_to_sle64(s64 x)
608c2ecf20Sopenharmony_ci{
618c2ecf20Sopenharmony_ci	return (__force sle64)cpu_to_le64(x);
628c2ecf20Sopenharmony_ci}
638c2ecf20Sopenharmony_ci
648c2ecf20Sopenharmony_cistatic inline sle16 cpu_to_sle16p(s16 *x)
658c2ecf20Sopenharmony_ci{
668c2ecf20Sopenharmony_ci	return (__force sle16)cpu_to_le16(*x);
678c2ecf20Sopenharmony_ci}
688c2ecf20Sopenharmony_ci
698c2ecf20Sopenharmony_cistatic inline sle32 cpu_to_sle32p(s32 *x)
708c2ecf20Sopenharmony_ci{
718c2ecf20Sopenharmony_ci	return (__force sle32)cpu_to_le32(*x);
728c2ecf20Sopenharmony_ci}
738c2ecf20Sopenharmony_ci
748c2ecf20Sopenharmony_cistatic inline sle64 cpu_to_sle64p(s64 *x)
758c2ecf20Sopenharmony_ci{
768c2ecf20Sopenharmony_ci	return (__force sle64)cpu_to_le64(*x);
778c2ecf20Sopenharmony_ci}
788c2ecf20Sopenharmony_ci
798c2ecf20Sopenharmony_ci#endif /* _LINUX_NTFS_ENDIAN_H */
80