xref: /dpdk/lib/eal/x86/include/rte_byteorder_64.h (revision d5d13ef979c83d33518c70727b5a4ef091bd8134)
1*99a2dd95SBruce Richardson /* SPDX-License-Identifier: BSD-3-Clause
2*99a2dd95SBruce Richardson  * Copyright(c) 2010-2014 Intel Corporation
3*99a2dd95SBruce Richardson  */
4*99a2dd95SBruce Richardson 
5*99a2dd95SBruce Richardson #ifndef _RTE_BYTEORDER_X86_H_
6*99a2dd95SBruce Richardson #error do not include this file directly, use <rte_byteorder.h> instead
7*99a2dd95SBruce Richardson #endif
8*99a2dd95SBruce Richardson 
9*99a2dd95SBruce Richardson #ifndef _RTE_BYTEORDER_X86_64_H_
10*99a2dd95SBruce Richardson #define _RTE_BYTEORDER_X86_64_H_
11*99a2dd95SBruce Richardson 
12*99a2dd95SBruce Richardson #include <stdint.h>
13*99a2dd95SBruce Richardson #include <rte_common.h>
14*99a2dd95SBruce Richardson 
15*99a2dd95SBruce Richardson /*
16*99a2dd95SBruce Richardson  * An architecture-optimized byte swap for a 64-bit value.
17*99a2dd95SBruce Richardson  *
18*99a2dd95SBruce Richardson  * Do not use this function directly. The preferred function is rte_bswap64().
19*99a2dd95SBruce Richardson  */
20*99a2dd95SBruce Richardson /* 64-bit mode */
rte_arch_bswap64(uint64_t _x)21*99a2dd95SBruce Richardson static inline uint64_t rte_arch_bswap64(uint64_t _x)
22*99a2dd95SBruce Richardson {
23*99a2dd95SBruce Richardson 	uint64_t x = _x;
24*99a2dd95SBruce Richardson 	asm volatile ("bswap %[x]"
25*99a2dd95SBruce Richardson 		      : [x] "+r" (x)
26*99a2dd95SBruce Richardson 		      );
27*99a2dd95SBruce Richardson 	return x;
28*99a2dd95SBruce Richardson }
29*99a2dd95SBruce Richardson 
30*99a2dd95SBruce Richardson #endif /* _RTE_BYTEORDER_X86_64_H_ */
31