1ea0364f1SPeter Tyser /* 2ea0364f1SPeter Tyser * (C) Copyright 2002 3ea0364f1SPeter Tyser * Wolfgang Denk, DENX Software Engineering, wd@denx.de. 4ea0364f1SPeter Tyser * 51a459660SWolfgang Denk * SPDX-License-Identifier: GPL-2.0+ 6ea0364f1SPeter Tyser */ 7ea0364f1SPeter Tyser 8ea0364f1SPeter Tyser /* for now: just dummy functions to satisfy the linker */ 9ea0364f1SPeter Tyser 10ea0364f1SPeter Tyser #include <common.h> 11ea0364f1SPeter Tyser 12*fcfddfd5SJeroen Hofstee __weak void flush_cache(unsigned long start, unsigned long size) 13ea0364f1SPeter Tyser { 147f5eef93STom Rini #if defined(CONFIG_ARM1136) 15ea0364f1SPeter Tyser 16b4ee1491SAlbert ARIBAUD #if !defined(CONFIG_SYS_ICACHE_OFF) 17b4ee1491SAlbert ARIBAUD asm("mcr p15, 0, r1, c7, c5, 0"); /* invalidate I cache */ 18ea0364f1SPeter Tyser #endif 19b4ee1491SAlbert ARIBAUD 20b4ee1491SAlbert ARIBAUD #if !defined(CONFIG_SYS_DCACHE_OFF) 21b4ee1491SAlbert ARIBAUD asm("mcr p15, 0, r1, c7, c14, 0"); /* Clean+invalidate D cache */ 22b4ee1491SAlbert ARIBAUD #endif 23b4ee1491SAlbert ARIBAUD 24b4ee1491SAlbert ARIBAUD #endif /* CONFIG_ARM1136 */ 25b4ee1491SAlbert ARIBAUD 26c3330e9dSHeiko Schocher #ifdef CONFIG_ARM926EJS 27c3330e9dSHeiko Schocher /* test and clean, page 2-23 of arm926ejs manual */ 28c3330e9dSHeiko Schocher asm("0: mrc p15, 0, r15, c7, c10, 3\n\t" "bne 0b\n" : : : "memory"); 29c3330e9dSHeiko Schocher /* disable write buffer as well (page 2-22) */ 30c3330e9dSHeiko Schocher asm("mcr p15, 0, %0, c7, c10, 4" : : "r" (0)); 31b4ee1491SAlbert ARIBAUD #endif /* CONFIG_ARM926EJS */ 32ea0364f1SPeter Tyser return; 33ea0364f1SPeter Tyser } 34e05f0079SAneesh V 35e05f0079SAneesh V /* 36e05f0079SAneesh V * Default implementation: 37e05f0079SAneesh V * do a range flush for the entire range 38e05f0079SAneesh V */ 39*fcfddfd5SJeroen Hofstee __weak void flush_dcache_all(void) 40e05f0079SAneesh V { 41e05f0079SAneesh V flush_cache(0, ~0); 42e05f0079SAneesh V } 43cba4b180SAneesh V 44cba4b180SAneesh V /* 45cba4b180SAneesh V * Default implementation of enable_caches() 46cba4b180SAneesh V * Real implementation should be in platform code 47cba4b180SAneesh V */ 48*fcfddfd5SJeroen Hofstee __weak void enable_caches(void) 49cba4b180SAneesh V { 50cba4b180SAneesh V puts("WARNING: Caches not enabled\n"); 51cba4b180SAneesh V } 52