1*225f5eecSMinkyu Kang /* 2*225f5eecSMinkyu Kang * Copyright (C) 2014 Samsung Electronics 3*225f5eecSMinkyu Kang * Minkyu Kang <mk7.kang@samsung.com> 4*225f5eecSMinkyu Kang * Robert Baldyga <r.baldyga@samsung.com> 5*225f5eecSMinkyu Kang * 6*225f5eecSMinkyu Kang * based on arch/arm/cpu/armv7/omap3/cache.S 7*225f5eecSMinkyu Kang * 8*225f5eecSMinkyu Kang * SPDX-License-Identifier: GPL-2.0+ 9*225f5eecSMinkyu Kang */ 10*225f5eecSMinkyu Kang 11*225f5eecSMinkyu Kang #include <common.h> 12*225f5eecSMinkyu Kang 13*225f5eecSMinkyu Kang #ifndef CONFIG_SYS_DCACHE_OFF 14*225f5eecSMinkyu Kang void enable_caches(void) 15*225f5eecSMinkyu Kang { 16*225f5eecSMinkyu Kang dcache_enable(); 17*225f5eecSMinkyu Kang } 18*225f5eecSMinkyu Kang 19*225f5eecSMinkyu Kang void disable_caches(void) 20*225f5eecSMinkyu Kang { 21*225f5eecSMinkyu Kang dcache_disable(); 22*225f5eecSMinkyu Kang } 23*225f5eecSMinkyu Kang #endif 24*225f5eecSMinkyu Kang 25*225f5eecSMinkyu Kang #ifndef CONFIG_SYS_L2CACHE_OFF 26*225f5eecSMinkyu Kang void v7_outer_cache_enable(void) 27*225f5eecSMinkyu Kang { 28*225f5eecSMinkyu Kang __asm( 29*225f5eecSMinkyu Kang "push {r0, r1, r2, lr}\n\t" 30*225f5eecSMinkyu Kang "mrc 15, 0, r3, cr1, cr0, 1\n\t" 31*225f5eecSMinkyu Kang "orr r3, r3, #2\n\t" 32*225f5eecSMinkyu Kang "mcr 15, 0, r3, cr1, cr0, 1\n\t" 33*225f5eecSMinkyu Kang "pop {r1, r2, r3, pc}" 34*225f5eecSMinkyu Kang ); 35*225f5eecSMinkyu Kang } 36*225f5eecSMinkyu Kang 37*225f5eecSMinkyu Kang void v7_outer_cache_disable(void) 38*225f5eecSMinkyu Kang { 39*225f5eecSMinkyu Kang __asm( 40*225f5eecSMinkyu Kang "push {r0, r1, r2, lr}\n\t" 41*225f5eecSMinkyu Kang "mrc 15, 0, r3, cr1, cr0, 1\n\t" 42*225f5eecSMinkyu Kang "bic r3, r3, #2\n\t" 43*225f5eecSMinkyu Kang "mcr 15, 0, r3, cr1, cr0, 1\n\t" 44*225f5eecSMinkyu Kang "pop {r1, r2, r3, pc}" 45*225f5eecSMinkyu Kang ); 46*225f5eecSMinkyu Kang } 47*225f5eecSMinkyu Kang #endif 48