On Sat, Oct 31, 2020 at 7:17 PM Timothy McDaniel <timothy.mcdan...@intel.com> wrote: > > Add miscellaneous inline functions that may be called > from multiple files. These functions include inline > assembly of new x86 instructions, such as movdir64b, > since they are not available as builtin functions in > the minimum supported GCC version. > > Signed-off-by: Timothy McDaniel <timothy.mcdan...@intel.com> > Reviewed-by: Gage Eads <gage.e...@intel.com> > --- > drivers/event/dlb/dlb_inline_fns.h | 40 > ++++++++++++++++++++++++++++++++++++++ > 1 file changed, 40 insertions(+) > create mode 100644 drivers/event/dlb/dlb_inline_fns.h > > diff --git a/drivers/event/dlb/dlb_inline_fns.h > b/drivers/event/dlb/dlb_inline_fns.h > new file mode 100644 > index 0000000..1ecddb7 > --- /dev/null > +++ b/drivers/event/dlb/dlb_inline_fns.h > @@ -0,0 +1,40 @@ > +/* SPDX-License-Identifier: BSD-3-Clause > + * Copyright(c) 2016-2020 Intel Corporation > + */ > +
Missing banners, like in dlb2 header (caught by diffing with it). #ifndef __DLB_INLINE_FNS_H__ etc... > +#include "rte_memcpy.h" > +#include "rte_io.h" > + > +/* Inline functions required in more than one source file. */ > + > +static inline struct dlb_eventdev * > +dlb_pmd_priv(const struct rte_eventdev *eventdev) > +{ > + return eventdev->data->dev_private; > +} > + > +static inline void > +dlb_movntdq_single(void *dest, void *src) > +{ > + long long *_src = (long long *)src; > + __m128i src_data0 = (__m128i){_src[0], _src[1]}; > + > + _mm_stream_si128(dest, src_data0); > +} > + > +static inline void > +dlb_cldemote(void *addr) > +{ > + /* Load addr into RSI, then demote the cache line of the address > + * contained in that register. > + */ > + asm volatile(".byte 0x0f, 0x1c, 0x06" :: "S" (addr)); > +} Use EAL API. > + > +static inline void > +dlb_movdir64b(void *dest, void *src) > +{ > + asm volatile(".byte 0x66, 0x0f, 0x38, 0xf8, 0x02" > + : > + : "a" (dest), "d" (src)); > +} NO! We introduced stuff in EAL for this, please double check. -- David Marchand