xref: /linux/arch/arc/include/uapi/asm/swab.h (revision ca220141fa8ebae09765a242076b2b77338106b0)
1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2 /*
3  * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2 as
7  * published by the Free Software Foundation.
8  *
9  * vineetg: May 2011
10  *  -Support single cycle endian-swap insn in ARC700 4.10
11  *
12  * vineetg: June 2009
13  *  -Better htonl implementation (5 instead of 9 ALU instructions)
14  *  -Hardware assisted single cycle bswap (Use Case of ARC custom instrn)
15  */
16 
17 #ifndef __ASM_ARC_SWAB_H
18 #define __ASM_ARC_SWAB_H
19 
20 #include <linux/types.h>
21 
22 #define __arch_swab32(x)		\
23 ({					\
24 	unsigned int tmp = x;		\
25 	__asm__(			\
26 	"	swape	%0, %1	\n"	\
27 	: "=r" (tmp)			\
28 	: "r" (tmp));			\
29 	tmp;				\
30 })
31 
32 #if !defined(__STRICT_ANSI__) || defined(__KERNEL__)
33 #define __SWAB_64_THRU_32__
34 #endif
35 
36 #endif
37