linux-m68k.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Greg Ungerer <gerg@snapgear.com>
To: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: linux-m68k@vger.kernel.org, Greg Ungerer <gerg@uclinux.org>
Subject: Re: [PATCH v2] m68k: fix ColdFire clear cache operation
Date: Tue, 17 Jul 2012 16:03:58 +1000	[thread overview]
Message-ID: <5005004E.7080201@snapgear.com> (raw)
In-Reply-To: <CAMuHMdXV+PiY5LbahntSOAsV6GZgR-WuKQTmwDM=2wrM13wE7g@mail.gmail.com>

Hi Geert,

On 17/07/12 05:13, Geert Uytterhoeven wrote:
> On Wed, Jul 11, 2012 at 2:37 AM,  <gerg@snapgear.com> wrote:
>> --- a/arch/m68k/include/asm/cacheflush_mm.h
>> +++ b/arch/m68k/include/asm/cacheflush_mm.h
>> @@ -17,6 +17,41 @@
>>   #define DCACHE_SETMASK 0
>>   #endif
>>
>> +/*
>> + * ColdFire architecture has no way to clear individual cache lines, so we
>> + * are stuck invalidating all the cache entries when we want a clear operation.
>> + */
>> +static inline void clear_cf_icache(unsigned long start, unsigned long end)
>> +{
>> +       __asm__ __volatile__ (
>> +               "movec  %0,%%cacr\n\t"
>> +               "nop\n\t"
>> +               :
>> +               : "r" (CACHE_MODE | CACR_ICINVA | CACR_BCINVA));
>
> These new functions should be moved inside the #ifdef CONFIG_COLDFIRE
> at the top of the file:
>
> arch/m68k/include/asm/cacheflush_mm.h:30:10: error: 'CACHE_MODE'
> undeclared (first use in this function)
> arch/m68k/include/asm/cacheflush_mm.h:30:23: error: 'CACR_ICINVA'
> undeclared (first use in this function)
> arch/m68k/include/asm/cacheflush_mm.h:30:37: error: 'CACR_BCINVA'
> undeclared (first use in this function)
> arch/m68k/include/asm/cacheflush_mm.h:39:10: error: 'CACHE_MODE'
> undeclared (first use in this function)
> arch/m68k/include/asm/cacheflush_mm.h:39:23: error: 'CACR_DCINVA'
> undeclared (first use in this function)
> arch/m68k/include/asm/cacheflush_mm.h:48:10: error: 'CACHE_MODE'
> undeclared (first use in this function)
> arch/m68k/include/asm/cacheflush_mm.h:48:23: error: 'CACR_ICINVA'
> undeclared (first use in this function)
> arch/m68k/include/asm/cacheflush_mm.h:48:37: error: 'CACR_BCINVA'
> undeclared (first use in this function)
> arch/m68k/include/asm/cacheflush_mm.h:48:51: error: 'CACR_DCINVA'
> undeclared (first use in this function)
>
> http://kisskb.ellerman.id.au/kisskb/buildresult/6720541/

Ah yes. Just moving those functions into a CONFIG_COLDFIRE region
is not enough though. That will fail with:

   CC      arch/m68k/mm/memory.o
arch/m68k/mm/memory.c: In function ‘cache_clear’:
arch/m68k/mm/memory.c:206:2: error: implicit declaration of function ‘clear_cf_bcache’

I hit the same problem with the other ColdFire flush functions too.
To fix those I locally defined the required definitions if they are
not set. I can do the same here with:

   #ifndef CACHE_MODE
   #define CACHE_MODE      0
   #define CACR_ICINVA     0
   #define CACR_DCINVA     0
   #define CACR_BCINVA     0
   #endif

This pollutes the code less than littering the code with #ifdefs on
the use COFIG_COLDFIRE, and doesn't seem any worse than defining
empty cache clear and push functions when not CONFIG_COLDFIRE.

Regards
Greg


------------------------------------------------------------------------
Greg Ungerer  --  Principal Engineer        EMAIL:     gerg@snapgear.com
SnapGear Group, McAfee                      PHONE:       +61 7 3435 2888
8 Gardner Close                             FAX:         +61 7 3217 5323
Milton, QLD, 4064, Australia                WEB: http://www.SnapGear.com

      reply	other threads:[~2012-07-17  6:09 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-11  0:37 [PATCH v2] m68k: fix ColdFire clear cache operation gerg
2012-07-11 15:51 ` Philippe De Muyter
2012-07-12  1:50   ` Greg Ungerer
2012-07-16 19:13 ` Geert Uytterhoeven
2012-07-17  6:03   ` Greg Ungerer [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5005004E.7080201@snapgear.com \
    --to=gerg@snapgear.com \
    --cc=geert@linux-m68k.org \
    --cc=gerg@uclinux.org \
    --cc=linux-m68k@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).