[U-Boot] [PATCH v2 2/7] cache: add default setting for CONFIG_SYS_CACHELINE_SIZE

Anton Staaf robotboy at chromium.org
Tue Oct 4 23:24:46 CEST 2011


CONFIG_SYS_CACHELINE_SIZE is supposed to be defined for all
configs.  But most configs do not specify it.  This patch
will set CONFIG_SYS_CACHELINE_SIZE to a default value equal
to the GCC builtin macro __BIGGEST_ALIGNMENT__.  This is not
strictly correct, so it also generates a warning if the
default is used.

Signed-off-by: Anton Staaf <robotboy at chromium.org>
Cc: Lukasz Majewski <l.majewski at samsung.com>
Cc: Kyungmin Park <kyungmin.park at samsung.com>
Cc: Mike Frysinger <vapier at gentoo.org>
Cc: Aneesh V <aneesh at ti.com>
Cc: Albert ARIBAUD <albert.u.boot at aribaud.net>

---

Changes for v2:
- Add comment describing why we are setting a default cacheline size

 include/common.h |   14 ++++++++++++++
 1 files changed, 14 insertions(+), 0 deletions(-)

diff --git a/include/common.h b/include/common.h
index cdd76c5..d50b182 100644
--- a/include/common.h
+++ b/include/common.h
@@ -790,6 +790,20 @@ int cpu_release(int nr, int argc, char * const argv[]);
 #define __ALIGN_MASK(x,mask)	(((x)+(mask))&~(mask))
 
 /*
+ * All configurations should provide a value for their architectures cacheline
+ * size.  Most currently do not and thus we provide a default that will surely
+ * be wrong, and a warning that we have done so.
+ *
+ * An additional run time warning will be generated when the incorrect size
+ * is used to align a DMA buffer and the cache invalidation or flushing
+ * routines are called with the resulting incorrectly aligned address.
+ */
+#if !defined(CONFIG_SYS_CACHELINE_SIZE)
+#warning CONFIG_SYS_CACHELINE_SIZE not defined, using __BIGGEST_ALIGNMENT__
+#define CONFIG_SYS_CACHELINE_SIZE	__BIGGEST_ALIGNMENT__
+#endif
+
+/*
  * The ALLOC_CACHE_ALIGN_BUFFER macro is used to allocate a cache line size
  * aligned buffer on the stack.  Such a buffer is useful for DMA operations
  * where flushing and invalidating the cache before and after a read and/or
-- 
1.7.3.1



More information about the U-Boot mailing list