xref: /dpdk/drivers/bus/fslmc/qbman/qbman_sys_decl.h (revision e9b9739264063bb856965070cb9ca7726d2c4238)
1131a75b6SHemant Agrawal /* SPDX-License-Identifier: BSD-3-Clause
2531b17a7SHemant Agrawal  *
3531b17a7SHemant Agrawal  * Copyright (C) 2014-2016 Freescale Semiconductor, Inc.
4531b17a7SHemant Agrawal  *
5531b17a7SHemant Agrawal  */
6293c0ca9SNipun Gupta #ifndef _QBMAN_SYS_DECL_H_
7293c0ca9SNipun Gupta #define _QBMAN_SYS_DECL_H_
8293c0ca9SNipun Gupta 
9531b17a7SHemant Agrawal #include <compat.h>
10531b17a7SHemant Agrawal #include <fsl_qbman_base.h>
11531b17a7SHemant Agrawal 
12531b17a7SHemant Agrawal /* Sanity check */
13531b17a7SHemant Agrawal #if (__BYTE_ORDER__ != __ORDER_BIG_ENDIAN__) && \
14531b17a7SHemant Agrawal 	(__BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__)
15531b17a7SHemant Agrawal #error "Unknown endianness!"
16531b17a7SHemant Agrawal #endif
17531b17a7SHemant Agrawal 
18531b17a7SHemant Agrawal 	/****************/
19531b17a7SHemant Agrawal 	/* arch assists */
20531b17a7SHemant Agrawal 	/****************/
21*e9b97392SRuifeng Wang #if defined(RTE_ARCH_ARM)
22*e9b97392SRuifeng Wang #if defined(RTE_ARCH_64)
23531b17a7SHemant Agrawal #define dcbz(p) { asm volatile("dc zva, %0" : : "r" (p) : "memory"); }
24531b17a7SHemant Agrawal #define lwsync() { asm volatile("dmb st" : : : "memory"); }
25531b17a7SHemant Agrawal #define dcbf(p) { asm volatile("dc cvac, %0" : : "r"(p) : "memory"); }
26531b17a7SHemant Agrawal #define dccivac(p) { asm volatile("dc civac, %0" : : "r"(p) : "memory"); }
prefetch_for_load(void * p)27531b17a7SHemant Agrawal static inline void prefetch_for_load(void *p)
28531b17a7SHemant Agrawal {
29d95bdc09SHemant Agrawal 	asm volatile("prfm pldl1keep, [%0, #0]" : : "r" (p));
30531b17a7SHemant Agrawal }
31531b17a7SHemant Agrawal 
prefetch_for_store(void * p)32531b17a7SHemant Agrawal static inline void prefetch_for_store(void *p)
33531b17a7SHemant Agrawal {
34d95bdc09SHemant Agrawal 	asm volatile("prfm pstl1keep, [%0, #0]" : : "r" (p));
35531b17a7SHemant Agrawal }
36*e9b97392SRuifeng Wang #else /* RTE_ARCH_32 */
37171c8504SHemant Agrawal #define dcbz(p) memset(p, 0, 64)
38171c8504SHemant Agrawal #define lwsync() { asm volatile("dmb st" : : : "memory"); }
39171c8504SHemant Agrawal #define dcbf(p)	RTE_SET_USED(p)
40171c8504SHemant Agrawal #define dccivac(p)	RTE_SET_USED(p)
41171c8504SHemant Agrawal #define prefetch_for_load(p) { asm volatile ("pld [%0]" : : "r" (p)); }
42171c8504SHemant Agrawal #define prefetch_for_store(p) { asm volatile ("pld [%0]" : : "r" (p)); }
43*e9b97392SRuifeng Wang #endif
44be2a362aSHemant Agrawal #else
45be2a362aSHemant Agrawal #define dcbz(p)	RTE_SET_USED(p)
46be2a362aSHemant Agrawal #define lwsync()
47be2a362aSHemant Agrawal #define dcbf(p)	RTE_SET_USED(p)
48be2a362aSHemant Agrawal #define dccivac(p)	RTE_SET_USED(p)
prefetch_for_load(void * p)49be2a362aSHemant Agrawal static inline void prefetch_for_load(void *p)
50be2a362aSHemant Agrawal {
51be2a362aSHemant Agrawal 	RTE_SET_USED(p);
52be2a362aSHemant Agrawal }
prefetch_for_store(void * p)53be2a362aSHemant Agrawal static inline void prefetch_for_store(void *p)
54be2a362aSHemant Agrawal {
55be2a362aSHemant Agrawal 	RTE_SET_USED(p);
56be2a362aSHemant Agrawal }
57171c8504SHemant Agrawal #endif
58293c0ca9SNipun Gupta #endif /* _QBMAN_SYS_DECL_H_ */
59