184ad6884SPeter Tyser /* 284ad6884SPeter Tyser * (C) Copyright 2002 384ad6884SPeter Tyser * Sysgo Real-Time Solutions, GmbH <www.elinos.com> 484ad6884SPeter Tyser * Marius Groeger <mgroeger@sysgo.de> 584ad6884SPeter Tyser * 684ad6884SPeter Tyser * (C) Copyright 2002 784ad6884SPeter Tyser * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de> 884ad6884SPeter Tyser * 91a459660SWolfgang Denk * SPDX-License-Identifier: GPL-2.0+ 1084ad6884SPeter Tyser */ 1184ad6884SPeter Tyser 1284ad6884SPeter Tyser /* 1384ad6884SPeter Tyser * CPU specific code 1484ad6884SPeter Tyser */ 1584ad6884SPeter Tyser 1684ad6884SPeter Tyser #include <common.h> 1784ad6884SPeter Tyser #include <command.h> 1884ad6884SPeter Tyser #include <asm/system.h> 1984ad6884SPeter Tyser 2084ad6884SPeter Tyser static void cache_flush(void); 2184ad6884SPeter Tyser cleanup_before_linux(void)2284ad6884SPeter Tyserint cleanup_before_linux (void) 2384ad6884SPeter Tyser { 2484ad6884SPeter Tyser /* 2584ad6884SPeter Tyser * this function is called just before we call linux 2684ad6884SPeter Tyser * it prepares the processor for linux 2784ad6884SPeter Tyser * 2884ad6884SPeter Tyser * we turn off caches etc ... 2984ad6884SPeter Tyser */ 3084ad6884SPeter Tyser 3184ad6884SPeter Tyser disable_interrupts (); 3284ad6884SPeter Tyser 3384ad6884SPeter Tyser 3484ad6884SPeter Tyser /* turn off I/D-cache */ 3584ad6884SPeter Tyser icache_disable(); 3684ad6884SPeter Tyser dcache_disable(); 3767953027SMichael Walle l2_cache_disable(); 3867953027SMichael Walle 3984ad6884SPeter Tyser /* flush I/D-cache */ 4084ad6884SPeter Tyser cache_flush(); 4184ad6884SPeter Tyser 4284ad6884SPeter Tyser return 0; 4384ad6884SPeter Tyser } 4484ad6884SPeter Tyser 4584ad6884SPeter Tyser /* flush I/D-cache */ cache_flush(void)4684ad6884SPeter Tyserstatic void cache_flush (void) 4784ad6884SPeter Tyser { 48*99197a9eSHeiko Schocher #if !(defined(CONFIG_SYS_ICACHE_OFF) && defined(CONFIG_SYS_DCACHE_OFF)) 4984ad6884SPeter Tyser unsigned long i = 0; 5084ad6884SPeter Tyser 5184ad6884SPeter Tyser asm ("mcr p15, 0, %0, c7, c7, 0": :"r" (i)); 52*99197a9eSHeiko Schocher #endif 5384ad6884SPeter Tyser } 54