blob: 41559009caca334e17d3a15a8847442742e1d9d2 [file] [log] [blame]
Tom Rini83d290c2018-05-06 17:58:06 -04001// SPDX-License-Identifier: GPL-2.0+
Christophe Leroy1e7cefe2017-07-13 15:10:00 +02002/*
3 * (C) Copyright 2017
4 * Christophe Leroy, CS Systemes d'Information, christophe.leroy@c-s.fr
Christophe Leroy1e7cefe2017-07-13 15:10:00 +02005 */
6
7#include <common.h>
Simon Glass9edefc22019-11-14 12:57:37 -07008#include <cpu_func.h>
Christophe Leroy1e7cefe2017-07-13 15:10:00 +02009#include <asm/processor.h>
10#include <asm/ppc.h>
11#include <asm/io.h>
12#include <asm/mmu.h>
13
14int icache_status(void)
15{
16 return !!(mfspr(IC_CST) & IDC_ENABLED);
17}
18
19void icache_enable(void)
20{
21 sync();
22 mtspr(IC_CST, IDC_INVALL);
23 mtspr(IC_CST, IDC_ENABLE);
24}
25
26void icache_disable(void)
27{
28 sync();
29 mtspr(IC_CST, IDC_DISABLE);
30}
31
32int dcache_status(void)
33{
34 return !!(mfspr(IC_CST) & IDC_ENABLED);
35}
36
37void 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
44void dcache_disable(void)
45{
46 sync();
47 mtspr(DC_CST, IDC_DISABLE);
48 mtspr(DC_CST, IDC_INVALL);
49}