[PATCH] Beaglebone: fix missing clobber in inline assembly.
Joel Sherrill
joel.sherrill at oarcorp.com
Thu Sep 10 15:48:25 UTC 2015
Marco,
This looks fine and I will apply it but I want to put it on 4.11
and master. Can you file a quick ticket on it?
Thanks.
--joel
On 9/10/2015 10:20 AM, Marcos Diaz wrote:
> 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))
>
--
Joel Sherrill, Ph.D. Director of Research & Development
joel.sherrill at OARcorp.com On-Line Applications Research
Ask me about RTEMS: a free RTOS Huntsville AL 35805
Support Available (256) 722-9985
More information about the devel
mailing list