eal: add experimental tags for write combining store

Only marking the doxygen declarations is not enough.
Arch specific implementations must be tagged as well since there is no
common declaration of those inlines.

Fixes: 8a00dfc738 ("eal: add write combining store")

Signed-off-by: David Marchand <david.marchand@redhat.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
Reviewed-by: Radu Nicolau <radu.nicolau@intel.com>
This commit is contained in:
David Marchand 2020-10-14 10:14:29 +02:00
parent bf32a357e2
commit 0c0d0d9df7
3 changed files with 12 additions and 0 deletions

View File

@ -164,12 +164,14 @@ rte_write64(uint64_t value, volatile void *addr)
rte_write64_relaxed(value, addr);
}
__rte_experimental
static __rte_always_inline void
rte_write32_wc(uint32_t value, volatile void *addr)
{
rte_write32(value, addr);
}
__rte_experimental
static __rte_always_inline void
rte_write32_wc_relaxed(uint32_t value, volatile void *addr)
{

View File

@ -14,6 +14,7 @@
#include <stdint.h>
#include <rte_common.h>
#include <rte_compat.h>
#include <rte_atomic.h>
#ifdef __DOXYGEN__

View File

@ -28,6 +28,7 @@ __rte_x86_movdiri(uint32_t value, volatile void *addr)
: "a" (value), "d" (addr));
}
__rte_experimental
static __rte_always_inline void
rte_write32_wc_relaxed(uint32_t value, volatile void *addr)
{
@ -47,11 +48,19 @@ rte_write32_wc_relaxed(uint32_t value, volatile void *addr)
}
}
__rte_experimental
static __rte_always_inline void
rte_write32_wc(uint32_t value, volatile void *addr)
{
/* gcc complains about calling this experimental function even
* when not using it. Hide it with ALLOW_EXPERIMENTAL_API.
*/
#ifdef ALLOW_EXPERIMENTAL_API
rte_wmb();
rte_write32_wc_relaxed(value, addr);
#else
rte_write32(value, addr);
#endif
}
#ifdef __cplusplus