Patchwork [U-Boot,v4,06/27] ppc: Add initial memory barrier macros

login
register
mail settings
Submitter Simon Glass
Date March 15, 2012, 2:16 a.m.
Message ID <1331777784-8528-7-git-send-email-sjg@chromium.org>
Download mbox | patch
Permalink /patch/146799/
State Deferred, archived
Headers show

Comments

Simon Glass - March 15, 2012, 2:16 a.m.
These are available on other architectures, so add them on ppc.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 arch/powerpc/include/asm/io.h |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)
Scott Wood - March 15, 2012, 5:56 p.m.
On 03/14/2012 09:16 PM, Simon Glass wrote:
> These are available on other architectures, so add them on ppc.
> 
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
> 
>  arch/powerpc/include/asm/io.h |    8 ++++++++
>  1 files changed, 8 insertions(+), 0 deletions(-)
> 
> diff --git a/arch/powerpc/include/asm/io.h b/arch/powerpc/include/asm/io.h
> index 56ac9fe..d246fd8 100644
> --- a/arch/powerpc/include/asm/io.h
> +++ b/arch/powerpc/include/asm/io.h
> @@ -318,4 +318,12 @@ static inline phys_addr_t virt_to_phys(void * vaddr)
>  #endif
>  }
>  
> +/*
> + * TODO: The kernel offers some more advanced versions of barriers, it might
> + * have some advantages to use them instead of the simple one here.
> + */
> +#define dmb()		__asm__ __volatile__ ("" : : : "memory")
> +#define __iormb()	dmb()
> +#define __iowmb()	dmb()

What are the semantics of these (they are not the standard Linux
barriers), and how is a simple compiler barrier adequate?

-Scott

Patch

diff --git a/arch/powerpc/include/asm/io.h b/arch/powerpc/include/asm/io.h
index 56ac9fe..d246fd8 100644
--- a/arch/powerpc/include/asm/io.h
+++ b/arch/powerpc/include/asm/io.h
@@ -318,4 +318,12 @@  static inline phys_addr_t virt_to_phys(void * vaddr)
 #endif
 }
 
+/*
+ * TODO: The kernel offers some more advanced versions of barriers, it might
+ * have some advantages to use them instead of the simple one here.
+ */
+#define dmb()		__asm__ __volatile__ ("" : : : "memory")
+#define __iormb()	dmb()
+#define __iowmb()	dmb()
+
 #endif