[PATCH] Beaglebone: fix missing clobber in inline assembly.
Marcos Diaz
marcos.diaz at tallertechnologies.com
Thu Sep 10 15:20:41 UTC 2015
flush_data_cache uses R0 directly but doesn't list it as a clobbered register.
Compiling with -O3 made this code break, since the function that calls flush_data_cache
already uses r0.
---
c/src/lib/libbsp/arm/beagle/include/bsp.h | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/c/src/lib/libbsp/arm/beagle/include/bsp.h b/c/src/lib/libbsp/arm/beagle/include/bsp.h
index 0250749..d9fd2ae 100644
--- a/c/src/lib/libbsp/arm/beagle/include/bsp.h
+++ b/c/src/lib/libbsp/arm/beagle/include/bsp.h
@@ -112,7 +112,13 @@ static inline void isb(void)
/* flush data cache */
static inline void flush_data_cache(void)
{
- asm volatile("mov r0, #0; mcr p15, #0, r0, c7, c10, #4" : : : "memory");
+ asm volatile(
+ "mov r0, #0\n"
+ "mcr p15, #0, r0, c7, c10, #4\n"
+ : /* No outputs */
+ : /* No inputs */
+ : "r0","memory"
+ );
}
#define __arch_getb(a) (*(volatile unsigned char *)(a))
--
1.9.1
More information about the devel
mailing list