summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcos Diaz <marcos.diaz@tallertechnologies.com>2015-09-10 10:20:41 -0500
committerJoel Sherrill <joel.sherrill@oarcorp.com>2015-09-10 13:21:41 -0500
commitbebfc4209b4e6a8fc9eab55e592cdaf18ee7df8d (patch)
tree999a37163f70ba2bddabcb2aa1bfc015eb416c61
parentlpc23xx_tli800: Add mdosfs_fsscandir01 to tests to avoid. Does not link. (diff)
downloadrtems-bebfc4209b4e6a8fc9eab55e592cdaf18ee7df8d.tar.bz2
Beaglebone: fix missing clobber in inline assembly.
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. closes #2416.
-rw-r--r--c/src/lib/libbsp/arm/beagle/include/bsp.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/c/src/lib/libbsp/arm/beagle/include/bsp.h b/c/src/lib/libbsp/arm/beagle/include/bsp.h
index 0250749419..d9fd2ae7fb 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))