From patchwork Fri Jun 18 02:06:29 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: ??????? X-Patchwork-Id: 106789 X-Patchwork-Delegate: lethal@linux-sh.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter.kernel.org (8.14.3/8.14.3) with ESMTP id o5I2bGjg010567 for ; Fri, 18 Jun 2010 02:37:16 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754983Ab0FRChP (ORCPT ); Thu, 17 Jun 2010 22:37:15 -0400 Received: from densangw.densan.co.jp ([218.222.200.50]:52321 "EHLO densangw.densan.co.jp" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754746Ab0FRChO (ORCPT ); Thu, 17 Jun 2010 22:37:14 -0400 X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.3 (demeter.kernel.org [140.211.167.41]); Fri, 18 Jun 2010 02:37:16 +0000 (UTC) X-Greylist: delayed 1837 seconds by postgrey-1.27 at vger.kernel.org; Thu, 17 Jun 2010 22:37:14 EDT Received: by densangw.densan.co.jp (8.14.3/dgw1.00) id o5I26YLO056270; Fri, 18 Jun 2010 11:06:34 +0900 (JST) Received: by sales1.densan.co.jp (8.11.6/3.7W-dhMS1.0) id o5I26Xi45224; Fri, 18 Jun 2010 11:06:33 +0900 (JST) Received: by tamasmgw.densan.co.jp (8.12.11/cfdtsMH1.00) id o5I26WIa048500; Fri, 18 Jun 2010 11:06:32 +0900 (JST) Received: from localhost (localhost.densan.co.jp [127.0.0.1]) by vw4.densan.co.jp (8.13.3/8.13.3) with ESMTP id o5I26ULA000476; Thu, 17 Jun 2010 19:06:30 -0700 (PDT) Date: Fri, 18 Jun 2010 11:06:29 +0900 (JST) Message-Id: <20100618.110629.68564635.saito@densan.co.jp> To: linux-sh@vger.kernel.org Cc: saito@densan.co.jp Subject: cache coherency problem on CF From: =?iso-2022-jp?B?GyRCQEZGIzFRSVchd0VFOzobKEI=?= X-Mailer: Mew version 3.3 on Emacs 20.7 / Mule 4.0 (HANANOEN) Mime-Version: 1.0 Sender: linux-sh-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-sh@vger.kernel.org --- arch/sh/mm/cache-sh4.c.org 2010-05-17 06:17:36.000000000 +0900 +++ arch/sh/mm/cache-sh4.c 2010-06-17 19:00:55.000000000 +0900 @@ -364,16 +364,21 @@ static void __flush_cache_one(unsigned l a += 64; p += 64; } while (a < ea); base_addr += way_incr; } while (--way_count != 0); } +static void sh4_flush_icache_page(void *page) +{ + __flush_purge_region(page_address(page), PAGE_SIZE); +} + extern void __weak sh4__flush_region_init(void); /* * SH-4 has virtually indexed and physically tagged cache. */ void __init sh4_cache_init(void) { printk("PVR=%08x CVR=%08x PRR=%08x\n", @@ -383,11 +388,12 @@ void __init sh4_cache_init(void) local_flush_icache_range = sh4_flush_icache_range; local_flush_dcache_page = sh4_flush_dcache_page; local_flush_cache_all = sh4_flush_cache_all; local_flush_cache_mm = sh4_flush_cache_mm; local_flush_cache_dup_mm = sh4_flush_cache_mm; local_flush_cache_page = sh4_flush_cache_page; local_flush_cache_range = sh4_flush_cache_range; + local_flush_icache_page = sh4_flush_icache_page; sh4__flush_region_init(); }