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
enable_caches(void)14*225f5eecSMinkyu Kang void enable_caches(void)
15*225f5eecSMinkyu Kang {
16*225f5eecSMinkyu Kang dcache_enable();
17*225f5eecSMinkyu Kang }
18*225f5eecSMinkyu Kang
disable_caches(void)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
v7_outer_cache_enable(void)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
v7_outer_cache_disable(void)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