// SPDX-License-Identifier: GPL-2.01/***************************************************************************/23/*4* cache.c -- general ColdFire Cache maintenance code5*6* Copyright (C) 2010, Greg Ungerer ([email protected])7*/89/***************************************************************************/1011#include <linux/kernel.h>12#include <asm/coldfire.h>13#include <asm/mcfsim.h>1415/***************************************************************************/16#ifdef CACHE_PUSH17/***************************************************************************/1819/*20* Use cpushl to push all dirty cache lines back to memory.21* Older versions of GAS don't seem to know how to generate the22* ColdFire cpushl instruction... Oh well, bit stuff it for now.23*/2425void mcf_cache_push(void)26{27__asm__ __volatile__ (28"clrl %%d0\n\t"29"1:\n\t"30"movel %%d0,%%a0\n\t"31"2:\n\t"32".word 0xf468\n\t"33"addl %0,%%a0\n\t"34"cmpl %1,%%a0\n\t"35"blt 2b\n\t"36"addql #1,%%d0\n\t"37"cmpil %2,%%d0\n\t"38"bne 1b\n\t"39: /* No output */40: "i" (CACHE_LINE_SIZE),41"i" (DCACHE_SIZE / CACHE_WAYS),42"i" (CACHE_WAYS)43: "d0", "a0" );44}4546/***************************************************************************/47#endif /* CACHE_PUSH */48/***************************************************************************/495051