xref: /rk3399_rockchip-uboot/arch/arm/mach-at91/arm926ejs/cache.c (revision 1df182ddf700de49fb4400ba67c3029278ea88e7)
1*6ed67659SHeiko Schocher /*
2*6ed67659SHeiko Schocher  * (C) Copyright 2016
3*6ed67659SHeiko Schocher  * Heiko Schocher, DENX Software Engineering, hs@denx.de.
4*6ed67659SHeiko Schocher  *
5*6ed67659SHeiko Schocher  * SPDX-License-Identifier:	GPL-2.0+
6*6ed67659SHeiko Schocher  */
7*6ed67659SHeiko Schocher #include <linux/types.h>
8*6ed67659SHeiko Schocher #include <common.h>
9*6ed67659SHeiko Schocher 
enable_caches(void)10*6ed67659SHeiko Schocher void enable_caches(void)
11*6ed67659SHeiko Schocher {
12*6ed67659SHeiko Schocher #ifndef CONFIG_SYS_ICACHE_OFF
13*6ed67659SHeiko Schocher 	icache_enable();
14*6ed67659SHeiko Schocher #endif
15*6ed67659SHeiko Schocher }
16*6ed67659SHeiko Schocher 
17*6ed67659SHeiko Schocher #ifndef CONFIG_SYS_ICACHE_OFF
18*6ed67659SHeiko Schocher /* Invalidate entire I-cache and branch predictor array */
invalidate_icache_all(void)19*6ed67659SHeiko Schocher void invalidate_icache_all(void)
20*6ed67659SHeiko Schocher {
21*6ed67659SHeiko Schocher 	unsigned long i = 0;
22*6ed67659SHeiko Schocher 
23*6ed67659SHeiko Schocher 	asm ("mcr p15, 0, %0, c7, c5, 0" : : "r" (i));
24*6ed67659SHeiko Schocher }
25*6ed67659SHeiko Schocher #else
invalidate_icache_all(void)26*6ed67659SHeiko Schocher void invalidate_icache_all(void)
27*6ed67659SHeiko Schocher {
28*6ed67659SHeiko Schocher }
29*6ed67659SHeiko Schocher #endif
30