cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

swab.h (2570B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/*
      3 *  linux/fs/ufs/swab.h
      4 *
      5 * Copyright (C) 1997, 1998 Francois-Rene Rideau <fare@tunes.org>
      6 * Copyright (C) 1998 Jakub Jelinek <jj@ultra.linux.cz>
      7 * Copyright (C) 2001 Christoph Hellwig <hch@infradead.org>
      8 */
      9
     10#ifndef _UFS_SWAB_H
     11#define _UFS_SWAB_H
     12
     13/*
     14 * Notes:
     15 *    HERE WE ASSUME EITHER BIG OR LITTLE ENDIAN UFSes
     16 *    in case there are ufs implementations that have strange bytesexes,
     17 *    you'll need to modify code here as well as in ufs_super.c and ufs_fs.h
     18 *    to support them.
     19 */
     20
     21enum {
     22	BYTESEX_LE,
     23	BYTESEX_BE
     24};
     25
     26static inline u64
     27fs64_to_cpu(struct super_block *sbp, __fs64 n)
     28{
     29	if (UFS_SB(sbp)->s_bytesex == BYTESEX_LE)
     30		return le64_to_cpu((__force __le64)n);
     31	else
     32		return be64_to_cpu((__force __be64)n);
     33}
     34
     35static inline __fs64
     36cpu_to_fs64(struct super_block *sbp, u64 n)
     37{
     38	if (UFS_SB(sbp)->s_bytesex == BYTESEX_LE)
     39		return (__force __fs64)cpu_to_le64(n);
     40	else
     41		return (__force __fs64)cpu_to_be64(n);
     42}
     43
     44static inline u32
     45fs32_to_cpu(struct super_block *sbp, __fs32 n)
     46{
     47	if (UFS_SB(sbp)->s_bytesex == BYTESEX_LE)
     48		return le32_to_cpu((__force __le32)n);
     49	else
     50		return be32_to_cpu((__force __be32)n);
     51}
     52
     53static inline __fs32
     54cpu_to_fs32(struct super_block *sbp, u32 n)
     55{
     56	if (UFS_SB(sbp)->s_bytesex == BYTESEX_LE)
     57		return (__force __fs32)cpu_to_le32(n);
     58	else
     59		return (__force __fs32)cpu_to_be32(n);
     60}
     61
     62static inline void
     63fs32_add(struct super_block *sbp, __fs32 *n, int d)
     64{
     65	if (UFS_SB(sbp)->s_bytesex == BYTESEX_LE)
     66		le32_add_cpu((__le32 *)n, d);
     67	else
     68		be32_add_cpu((__be32 *)n, d);
     69}
     70
     71static inline void
     72fs32_sub(struct super_block *sbp, __fs32 *n, int d)
     73{
     74	if (UFS_SB(sbp)->s_bytesex == BYTESEX_LE)
     75		le32_add_cpu((__le32 *)n, -d);
     76	else
     77		be32_add_cpu((__be32 *)n, -d);
     78}
     79
     80static inline u16
     81fs16_to_cpu(struct super_block *sbp, __fs16 n)
     82{
     83	if (UFS_SB(sbp)->s_bytesex == BYTESEX_LE)
     84		return le16_to_cpu((__force __le16)n);
     85	else
     86		return be16_to_cpu((__force __be16)n);
     87}
     88
     89static inline __fs16
     90cpu_to_fs16(struct super_block *sbp, u16 n)
     91{
     92	if (UFS_SB(sbp)->s_bytesex == BYTESEX_LE)
     93		return (__force __fs16)cpu_to_le16(n);
     94	else
     95		return (__force __fs16)cpu_to_be16(n);
     96}
     97
     98static inline void
     99fs16_add(struct super_block *sbp, __fs16 *n, int d)
    100{
    101	if (UFS_SB(sbp)->s_bytesex == BYTESEX_LE)
    102		le16_add_cpu((__le16 *)n, d);
    103	else
    104		be16_add_cpu((__be16 *)n, d);
    105}
    106
    107static inline void
    108fs16_sub(struct super_block *sbp, __fs16 *n, int d)
    109{
    110	if (UFS_SB(sbp)->s_bytesex == BYTESEX_LE)
    111		le16_add_cpu((__le16 *)n, -d);
    112	else
    113		be16_add_cpu((__be16 *)n, -d);
    114}
    115
    116#endif /* _UFS_SWAB_H */