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