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