1*0ae76531SDavid Feng /* 2*0ae76531SDavid Feng * (C) Copyright 2008 Texas Insturments 3*0ae76531SDavid Feng * 4*0ae76531SDavid Feng * (C) Copyright 2002 5*0ae76531SDavid Feng * Sysgo Real-Time Solutions, GmbH <www.elinos.com> 6*0ae76531SDavid Feng * Marius Groeger <mgroeger@sysgo.de> 7*0ae76531SDavid Feng * 8*0ae76531SDavid Feng * (C) Copyright 2002 9*0ae76531SDavid Feng * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de> 10*0ae76531SDavid Feng * 11*0ae76531SDavid Feng * SPDX-License-Identifier: GPL-2.0+ 12*0ae76531SDavid Feng */ 13*0ae76531SDavid Feng 14*0ae76531SDavid Feng #include <common.h> 15*0ae76531SDavid Feng #include <command.h> 16*0ae76531SDavid Feng #include <asm/system.h> 17*0ae76531SDavid Feng #include <linux/compiler.h> 18*0ae76531SDavid Feng 19*0ae76531SDavid Feng int cleanup_before_linux(void) 20*0ae76531SDavid Feng { 21*0ae76531SDavid Feng /* 22*0ae76531SDavid Feng * this function is called just before we call linux 23*0ae76531SDavid Feng * it prepares the processor for linux 24*0ae76531SDavid Feng * 25*0ae76531SDavid Feng * disable interrupt and turn off caches etc ... 26*0ae76531SDavid Feng */ 27*0ae76531SDavid Feng disable_interrupts(); 28*0ae76531SDavid Feng 29*0ae76531SDavid Feng /* 30*0ae76531SDavid Feng * Turn off I-cache and invalidate it 31*0ae76531SDavid Feng */ 32*0ae76531SDavid Feng icache_disable(); 33*0ae76531SDavid Feng invalidate_icache_all(); 34*0ae76531SDavid Feng 35*0ae76531SDavid Feng /* 36*0ae76531SDavid Feng * turn off D-cache 37*0ae76531SDavid Feng * dcache_disable() in turn flushes the d-cache and disables MMU 38*0ae76531SDavid Feng */ 39*0ae76531SDavid Feng dcache_disable(); 40*0ae76531SDavid Feng invalidate_dcache_all(); 41*0ae76531SDavid Feng 42*0ae76531SDavid Feng return 0; 43*0ae76531SDavid Feng } 44