summaryrefslogtreecommitdiff
path: root/arch/arm/lib/cache.c
diff options
context:
space:
mode:
authorAlbert ARIBAUD <albert.u.boot@aribaud.net>2015-10-23 16:06:40 (GMT)
committerAlbert ARIBAUD <albert.u.boot@aribaud.net>2015-11-10 14:03:48 (GMT)
commit62e92077a8936e60087d55683538ee386cc673aa (patch)
tree98bf9f9796ab466ad1bff97c7672d5c3159526d3 /arch/arm/lib/cache.c
parentbf104ffa2594e5bf14ef2d5ac2711084c763ef77 (diff)
downloadu-boot-fsl-qoriq-62e92077a8936e60087d55683538ee386cc673aa.tar.xz
arm: support Thumb-1 with CONFIG_SYS_THUMB_BUILD
When building a Thumb-1-only target with CONFIG_SYS_THUMB_BUILD, some files fail to build, most of the time because they include mcr instructions, which only exist for Thumb-2. This patch introduces a Kconfig option CONFIG_THUMB2 and uses it to select between Thumb-2 and ARM mode for the aforementioned files. Signed-off-by: Albert ARIBAUD <albert.u.boot@aribaud.net>
Diffstat (limited to 'arch/arm/lib/cache.c')
-rw-r--r--arch/arm/lib/cache.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/arch/arm/lib/cache.c b/arch/arm/lib/cache.c
index cd13db3..3bd8710 100644
--- a/arch/arm/lib/cache.c
+++ b/arch/arm/lib/cache.c
@@ -88,3 +88,14 @@ phys_addr_t noncached_alloc(size_t size, size_t align)
return next;
}
#endif /* CONFIG_SYS_NONCACHED_MEMORY */
+
+#if defined(CONFIG_SYS_THUMB_BUILD)
+void invalidate_l2_cache(void)
+{
+ unsigned int val = 0;
+
+ asm volatile("mcr p15, 1, %0, c15, c11, 0 @ invl l2 cache"
+ : : "r" (val) : "cc");
+ isb();
+}
+#endif