xref: /dpdk/lib/eal/ppc/include/rte_prefetch.h (revision 719834a6849e1daf4a70ff7742bbcc3ae7e25607)
1 /*
2  * SPDX-License-Identifier: BSD-3-Clause
3  * Copyright (C) IBM Corporation 2014.
4  */
5 
6 #ifndef _RTE_PREFETCH_PPC_64_H_
7 #define _RTE_PREFETCH_PPC_64_H_
8 
9 #include <rte_compat.h>
10 #include <rte_common.h>
11 #include "generic/rte_prefetch.h"
12 
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16 
17 static inline void rte_prefetch0(const volatile void *p)
18 {
19 	asm volatile ("dcbt 0,%[p],0" : : [p] "r" (p));
20 }
21 
22 static inline void rte_prefetch1(const volatile void *p)
23 {
24 	asm volatile ("dcbt 0,%[p],0" : : [p] "r" (p));
25 }
26 
27 static inline void rte_prefetch2(const volatile void *p)
28 {
29 	asm volatile ("dcbt 0,%[p],0" : : [p] "r" (p));
30 }
31 
32 static inline void rte_prefetch_non_temporal(const volatile void *p)
33 {
34 	/* non-temporal version not available, fallback to rte_prefetch0 */
35 	rte_prefetch0(p);
36 }
37 
38 __rte_experimental
39 static inline void
40 rte_cldemote(const volatile void *p)
41 {
42 	RTE_SET_USED(p);
43 }
44 
45 #ifdef __cplusplus
46 }
47 #endif
48 
49 #endif /* _RTE_PREFETCH_PPC_64_H_ */
50