[U-Boot] [PATCH] arm_cortexa8: support cache flush to other soc
Dirk Behme
dirk.behme at googlemail.com
Fri Sep 4 10:43:33 CEST 2009
Dear Minkyu Kang,
Minkyu Kang wrote:
> Current code is supported only omap3 soc.
> this patch will support s5pc1xx(s5pc100 and s5pc110) soc also.
Thanks for this patch!
How is this patch related to
http://lists.denx.de/pipermail/u-boot/2009-August/058492.html
?
> Signed-off-by: Minkyu Kang <mk7.kang at samsung.com>
> ---
> cpu/arm_cortexa8/cpu.c | 24 +++++++++++-------------
> 1 files changed, 11 insertions(+), 13 deletions(-)
>
> diff --git a/cpu/arm_cortexa8/cpu.c b/cpu/arm_cortexa8/cpu.c
> index 5a5981e..3d430b1 100644
> --- a/cpu/arm_cortexa8/cpu.c
> +++ b/cpu/arm_cortexa8/cpu.c
> @@ -35,9 +35,6 @@
> #include <command.h>
> #include <asm/system.h>
> #include <asm/cache.h>
> -#ifndef CONFIG_L2_OFF
> -#include <asm/arch/sys_proto.h>
> -#endif
>
> static void cache_flush(void);
>
> @@ -61,17 +58,18 @@ int cleanup_before_linux(void)
> cache_flush();
>
> #ifndef CONFIG_L2_OFF
> - /* turn off L2 cache */
> - l2_cache_disable();
> - /* invalidate L2 cache also */
> - v7_flush_dcache_all(get_device_type());
> -#endif
> - i = 0;
> - /* mem barrier to sync up things */
> - asm("mcr p15, 0, %0, c7, c10, 4": :"r"(i));
> + if (get_device_type() != 0xC100) {
Hmm, what is this "0xC100" ?
> + /* turn off L2 cache */
> + l2_cache_disable();
> + /* invalidate L2 cache also */
> + v7_flush_dcache_all(get_device_type());
>
> -#ifndef CONFIG_L2_OFF
> - l2_cache_enable();
> + i = 0;
> + /* mem barrier to sync up things */
> + asm("mcr p15, 0, %0, c7, c10, 4": :"r"(i));
> +
> + l2_cache_enable();
> + }
> #endif
What's about the order of #ifndef CONFIG_L2_OFF?
While we had before
#ifndef CONFIG_L2_OFF
/* turn off L2 cache */
l2_cache_disable();
/* invalidate L2 cache also */
v7_flush_dcache_all(get_device_type());
#endif
i = 0;
/* mem barrier to sync up things */
asm("mcr p15, 0, %0, c7, c10, 4": :"r"(i));
#ifndef CONFIG_L2_OFF
l2_cache_enable();
#endif
after this patch we would have
#ifndef CONFIG_L2_OFF
if (get_device_type() != 0xC100) {
/* turn off L2 cache */
l2_cache_disable();
/* invalidate L2 cache also */
v7_flush_dcache_all(get_device_type());
i = 0;
/* mem barrier to sync up things */
asm("mcr p15, 0, %0, c7, c10, 4": :"r"(i));
l2_cache_enable();
}
#endif
Is this intended?
Best regards
Dirk
More information about the U-Boot
mailing list