]> git.proxmox.com Git - ceph.git/blame - ceph/src/seastar/dpdk/drivers/bus/fslmc/qbman/qbman_sys_decl.h
import 15.2.0 Octopus source
[ceph.git] / ceph / src / seastar / dpdk / drivers / bus / fslmc / qbman / qbman_sys_decl.h
CommitLineData
9f95a23c 1/* SPDX-License-Identifier: BSD-3-Clause
11fdf7f2
TL
2 *
3 * Copyright (C) 2014-2016 Freescale Semiconductor, Inc.
4 *
11fdf7f2 5 */
9f95a23c
TL
6#ifndef _QBMAN_SYS_DECL_H_
7#define _QBMAN_SYS_DECL_H_
8
11fdf7f2
TL
9#include <compat.h>
10#include <fsl_qbman_base.h>
11
12/* Sanity check */
13#if (__BYTE_ORDER__ != __ORDER_BIG_ENDIAN__) && \
14 (__BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__)
15#error "Unknown endianness!"
16#endif
17
11fdf7f2
TL
18 /****************/
19 /* arch assists */
20 /****************/
9f95a23c 21#if defined(RTE_ARCH_ARM64)
11fdf7f2
TL
22#define dcbz(p) { asm volatile("dc zva, %0" : : "r" (p) : "memory"); }
23#define lwsync() { asm volatile("dmb st" : : : "memory"); }
24#define dcbf(p) { asm volatile("dc cvac, %0" : : "r"(p) : "memory"); }
25#define dccivac(p) { asm volatile("dc civac, %0" : : "r"(p) : "memory"); }
26static inline void prefetch_for_load(void *p)
27{
9f95a23c 28 asm volatile("prfm pldl1keep, [%0, #0]" : : "r" (p));
11fdf7f2
TL
29}
30
31static inline void prefetch_for_store(void *p)
32{
9f95a23c 33 asm volatile("prfm pstl1keep, [%0, #0]" : : "r" (p));
11fdf7f2 34}
9f95a23c
TL
35#elif defined(RTE_ARCH_ARM)
36#define dcbz(p) memset(p, 0, 64)
37#define lwsync() { asm volatile("dmb st" : : : "memory"); }
38#define dcbf(p) RTE_SET_USED(p)
39#define dccivac(p) RTE_SET_USED(p)
40#define prefetch_for_load(p) { asm volatile ("pld [%0]" : : "r" (p)); }
41#define prefetch_for_store(p) { asm volatile ("pld [%0]" : : "r" (p)); }
42
43#else
44#define dcbz(p) RTE_SET_USED(p)
45#define lwsync()
46#define dcbf(p) RTE_SET_USED(p)
47#define dccivac(p) RTE_SET_USED(p)
48static inline void prefetch_for_load(void *p)
49{
50 RTE_SET_USED(p);
51}
52static inline void prefetch_for_store(void *p)
53{
54 RTE_SET_USED(p);
55}
56#endif
57#endif /* _QBMAN_SYS_DECL_H_ */