1*e2be04c7SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 297da0d62SLey Foon Tan /* 397da0d62SLey Foon Tan * Copyright (C) 2012 Tobias Klauser <tklauser@distanz.ch> 497da0d62SLey Foon Tan * Copyright (C) 2011 Pyramid Technical Consultants, Inc. 597da0d62SLey Foon Tan * 697da0d62SLey Foon Tan * This file is subject to the terms and conditions of the GNU General 797da0d62SLey Foon Tan * Public License. See the file COPYING in the main directory of this 897da0d62SLey Foon Tan * archive for more details. 997da0d62SLey Foon Tan */ 1097da0d62SLey Foon Tan 1197da0d62SLey Foon Tan #ifndef _ASM_NIOS2_SWAB_H 1297da0d62SLey Foon Tan #define _ASM_NIOS2_SWAB_H 1397da0d62SLey Foon Tan 1497da0d62SLey Foon Tan #include <linux/types.h> 1597da0d62SLey Foon Tan #include <asm-generic/swab.h> 1697da0d62SLey Foon Tan 1797da0d62SLey Foon Tan #ifdef CONFIG_NIOS2_CI_SWAB_SUPPORT 1897da0d62SLey Foon Tan #ifdef __GNUC__ 1997da0d62SLey Foon Tan 2097da0d62SLey Foon Tan #define __nios2_swab(x) \ 2197da0d62SLey Foon Tan __builtin_custom_ini(CONFIG_NIOS2_CI_SWAB_NO, (x)) 2297da0d62SLey Foon Tan __arch_swab16(__u16 x)2397da0d62SLey Foon Tanstatic inline __attribute__((const)) __u16 __arch_swab16(__u16 x) 2497da0d62SLey Foon Tan { 2597da0d62SLey Foon Tan return (__u16) __nios2_swab(((__u32) x) << 16); 2697da0d62SLey Foon Tan } 2797da0d62SLey Foon Tan #define __arch_swab16 __arch_swab16 2897da0d62SLey Foon Tan __arch_swab32(__u32 x)2997da0d62SLey Foon Tanstatic inline __attribute__((const)) __u32 __arch_swab32(__u32 x) 3097da0d62SLey Foon Tan { 3197da0d62SLey Foon Tan return (__u32) __nios2_swab(x); 3297da0d62SLey Foon Tan } 3397da0d62SLey Foon Tan #define __arch_swab32 __arch_swab32 3497da0d62SLey Foon Tan 3597da0d62SLey Foon Tan #endif /* __GNUC__ */ 3697da0d62SLey Foon Tan #endif /* CONFIG_NIOS2_CI_SWAB_SUPPORT */ 3797da0d62SLey Foon Tan 3897da0d62SLey Foon Tan #endif /* _ASM_NIOS2_SWAB_H */ 39