Displaying 5 results from an estimated 5 matches for "compiler_has_optimizer_hide_var".
2019 Jan 07
2
[PATCH RFC 3/4] barriers: convert a control to a data dependency
...barrier.h b/include/asm-generic/barrier.h
> index 2cafdbb9ae4c..fa2e2ef72b68 100644
> --- a/include/asm-generic/barrier.h
> +++ b/include/asm-generic/barrier.h
> @@ -70,6 +70,24 @@
> #define __smp_read_barrier_depends() read_barrier_depends()
> #endif
>
> +#if defined(COMPILER_HAS_OPTIMIZER_HIDE_VAR) && \
> + !defined(ARCH_NEEDS_READ_BARRIER_DEPENDS)
> +
> +#define dependent_ptr_mb(ptr, val) ({ \
> + long dependent_ptr_mb_val = (long)(val); \
> + long dependent_ptr_mb_ptr = (long)(ptr) - dependent_ptr_mb_val; \
> + \
> + BUILD_BUG_ON(sizeof(val) >...
2019 Jan 07
2
[PATCH RFC 3/4] barriers: convert a control to a data dependency
...barrier.h b/include/asm-generic/barrier.h
> index 2cafdbb9ae4c..fa2e2ef72b68 100644
> --- a/include/asm-generic/barrier.h
> +++ b/include/asm-generic/barrier.h
> @@ -70,6 +70,24 @@
> #define __smp_read_barrier_depends() read_barrier_depends()
> #endif
>
> +#if defined(COMPILER_HAS_OPTIMIZER_HIDE_VAR) && \
> + !defined(ARCH_NEEDS_READ_BARRIER_DEPENDS)
> +
> +#define dependent_ptr_mb(ptr, val) ({ \
> + long dependent_ptr_mb_val = (long)(val); \
> + long dependent_ptr_mb_ptr = (long)(ptr) - dependent_ptr_mb_val; \
> + \
> + BUILD_BUG_ON(sizeof(val) >...
2019 Jan 02
0
[PATCH RFC 3/4] barriers: convert a control to a data dependency
...ONFIG_SMP
diff --git a/include/asm-generic/barrier.h b/include/asm-generic/barrier.h
index 2cafdbb9ae4c..fa2e2ef72b68 100644
--- a/include/asm-generic/barrier.h
+++ b/include/asm-generic/barrier.h
@@ -70,6 +70,24 @@
#define __smp_read_barrier_depends() read_barrier_depends()
#endif
+#if defined(COMPILER_HAS_OPTIMIZER_HIDE_VAR) && \
+ !defined(ARCH_NEEDS_READ_BARRIER_DEPENDS)
+
+#define dependent_ptr_mb(ptr, val) ({ \
+ long dependent_ptr_mb_val = (long)(val); \
+ long dependent_ptr_mb_ptr = (long)(ptr) - dependent_ptr_mb_val; \
+ \
+ BUILD_BUG_ON(sizeof(val) > sizeof(long)); \
+ OPTIMIZER_HIDE...
2019 Jan 02
6
[PATCH RFC 0/4] barriers using data dependency
So as explained in Documentation/memory-barriers.txt e.g.
a load followed by a store require a full memory barrier,
to avoid store being ordered before the load.
Similarly load-load requires a read memory barrier.
Thinking about it, we can actually create a data dependency
by mixing the first loaded value into the pointer being
accessed.
This adds an API for this and uses it in virtio.
Written
2019 Jan 07
0
[PATCH RFC 3/4] barriers: convert a control to a data dependency
...eric/barrier.h
> > index 2cafdbb9ae4c..fa2e2ef72b68 100644
> > --- a/include/asm-generic/barrier.h
> > +++ b/include/asm-generic/barrier.h
> > @@ -70,6 +70,24 @@
> > #define __smp_read_barrier_depends() read_barrier_depends()
> > #endif
> > +#if defined(COMPILER_HAS_OPTIMIZER_HIDE_VAR) && \
> > + !defined(ARCH_NEEDS_READ_BARRIER_DEPENDS)
> > +
> > +#define dependent_ptr_mb(ptr, val) ({ \
> > + long dependent_ptr_mb_val = (long)(val); \
> > + long dependent_ptr_mb_ptr = (long)(ptr) - dependent_ptr_mb_val; \
> > + \
> &g...