ARM: exynos: fix l2x0 saved regs handling
authorArnd Bergmann <arnd@arndb.de>
Thu, 13 Mar 2014 16:25:52 +0000 (17:25 +0100)
committerArnd Bergmann <arnd@arndb.de>
Fri, 21 Mar 2014 17:26:24 +0000 (18:26 +0100)
The exynos4_l2x0_cache_init function tries to flush the data cache
for the location of the saved l2x0 registers and pass the physical
address to the s5p-sleep implementation.

However, the s5p-sleep code is optional, and if it is disabled,
we get a linker error here when the l2x0_regs_phys variable does
not exist.

To solve this, use a compile-time conditional to drop this code
if we don't want it.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Kukjin Kim <kgene.kim@samsung.com>
Cc: Tomasz Figa <tomasz.figa@gmail.com>
Cc: Ben Dooks <ben-linux@fluff.org>
arch/arm/mach-exynos/common.c

index f18be40e5b212993cf48589091253735aa8a8ef3..8d0042c9d4d33518a1eb93f1132e15d09dceaea5 100644 (file)
@@ -404,8 +404,10 @@ static int __init exynos4_l2x0_cache_init(void)
        if (ret)
                return ret;
 
-       l2x0_regs_phys = virt_to_phys(&l2x0_saved_regs);
-       clean_dcache_area(&l2x0_regs_phys, sizeof(unsigned long));
+       if (IS_ENABLED(CONFIG_S5P_SLEEP)) {
+               l2x0_regs_phys = virt_to_phys(&l2x0_saved_regs);
+               clean_dcache_area(&l2x0_regs_phys, sizeof(unsigned long));
+       }
        return 0;
 }
 early_initcall(exynos4_l2x0_cache_init);