1 // SPDX-License-Identifier: GPL-2.0+
2 /*
3  * (C) Copyright 2017
4  * Christophe Leroy, CS Systemes d'Information, christophe.leroy@c-s.fr
5  */
6 
7 #include <common.h>
8 #include <cpu_func.h>
9 #include <asm/processor.h>
10 #include <asm/ppc.h>
11 #include <asm/io.h>
12 #include <asm/mmu.h>
13 
icache_status(void)14 int icache_status(void)
15 {
16 	return !!(mfspr(IC_CST) & IDC_ENABLED);
17 }
18 
icache_enable(void)19 void icache_enable(void)
20 {
21 	sync();
22 	mtspr(IC_CST, IDC_INVALL);
23 	mtspr(IC_CST, IDC_ENABLE);
24 }
25 
icache_disable(void)26 void icache_disable(void)
27 {
28 	sync();
29 	mtspr(IC_CST, IDC_DISABLE);
30 }
31 
dcache_status(void)32 int dcache_status(void)
33 {
34 	return !!(mfspr(IC_CST) & IDC_ENABLED);
35 }
36 
dcache_enable(void)37 void dcache_enable(void)
38 {
39 	mtspr(MD_CTR, MD_RESETVAL);	/* Set cache mode with MMU off */
40 	mtspr(DC_CST, IDC_INVALL);
41 	mtspr(DC_CST, IDC_ENABLE);
42 }
43 
dcache_disable(void)44 void dcache_disable(void)
45 {
46 	sync();
47 	mtspr(DC_CST, IDC_DISABLE);
48 	mtspr(DC_CST, IDC_INVALL);
49 }
50