root/arch/m68k/coldfire/cache.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. mcf_cache_push

   1 // SPDX-License-Identifier: GPL-2.0
   2 /***************************************************************************/
   3 
   4 /*
   5  *      cache.c -- general ColdFire Cache maintenance code
   6  *
   7  *      Copyright (C) 2010, Greg Ungerer (gerg@snapgear.com)
   8  */
   9 
  10 /***************************************************************************/
  11 
  12 #include <linux/kernel.h>
  13 #include <asm/coldfire.h>
  14 #include <asm/mcfsim.h>
  15 
  16 /***************************************************************************/
  17 #ifdef CACHE_PUSH
  18 /***************************************************************************/
  19 
  20 /*
  21  *      Use cpushl to push all dirty cache lines back to memory.
  22  *      Older versions of GAS don't seem to know how to generate the
  23  *      ColdFire cpushl instruction... Oh well, bit stuff it for now.
  24  */
  25 
  26 void mcf_cache_push(void)
  27 {
  28         __asm__ __volatile__ (
  29                 "clrl   %%d0\n\t"
  30                 "1:\n\t"
  31                 "movel  %%d0,%%a0\n\t"
  32                 "2:\n\t"
  33                 ".word  0xf468\n\t"
  34                 "addl   %0,%%a0\n\t"
  35                 "cmpl   %1,%%a0\n\t"
  36                 "blt    2b\n\t"
  37                 "addql  #1,%%d0\n\t"
  38                 "cmpil  %2,%%d0\n\t"
  39                 "bne    1b\n\t"
  40                 : /* No output */
  41                 : "i" (CACHE_LINE_SIZE),
  42                   "i" (DCACHE_SIZE / CACHE_WAYS),
  43                   "i" (CACHE_WAYS)
  44                 : "d0", "a0" );
  45 }
  46 
  47 /***************************************************************************/
  48 #endif /* CACHE_PUSH */
  49 /***************************************************************************/

/* [<][>][^][v][top][bottom][index][help] */