mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-11-16 12:44:06 +02:00
343c185b7d
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@16547 3c298f89-4303-0410-b956-a3cf2f4a3e73
56 lines
1.7 KiB
Diff
56 lines
1.7 KiB
Diff
From 679a5be6f06b909adccc9c588feb26bf6d6df402 Mon Sep 17 00:00:00 2001
|
|
From: Kurt Mahan <kmahan@freescale.com>
|
|
Date: Thu, 6 Dec 2007 16:40:39 -0700
|
|
Subject: [PATCH] Add zero length checking to cache routines.
|
|
|
|
LTIBName: mcfv4e-cache-ck-0-len
|
|
Signed-off-by: Kurt Mahan <kmahan@freescale.com>
|
|
---
|
|
include/asm-m68k/cf_cacheflush.h | 14 +++++++++++---
|
|
1 files changed, 11 insertions(+), 3 deletions(-)
|
|
|
|
--- a/include/asm-m68k/cf_cacheflush.h
|
|
+++ b/include/asm-m68k/cf_cacheflush.h
|
|
@@ -127,7 +127,9 @@ static inline void flush_bcache(void)
|
|
static inline void cf_cache_clear(unsigned long paddr, int len)
|
|
{
|
|
/* number of lines */
|
|
- len = (len + (CACHE_LINE_SIZE-1)) / CACHE_LINE_SIZE;
|
|
+ len = (len + (CACHE_LINE_SIZE-1)) / CACHE_LINE_SIZE;
|
|
+ if (len == 0)
|
|
+ return;
|
|
|
|
/* align on set boundary */
|
|
paddr &= 0xfffffff0;
|
|
@@ -161,7 +163,9 @@ static inline void cf_cache_clear(unsign
|
|
static inline void cf_cache_push(unsigned long paddr, int len)
|
|
{
|
|
/* number of lines */
|
|
- len = (len + (CACHE_LINE_SIZE-1)) / CACHE_LINE_SIZE;
|
|
+ len = (len + (CACHE_LINE_SIZE-1)) / CACHE_LINE_SIZE;
|
|
+ if (len == 0)
|
|
+ return;
|
|
|
|
/* align on set boundary */
|
|
paddr &= 0xfffffff0;
|
|
@@ -195,7 +199,9 @@ static inline void cf_cache_push(unsigne
|
|
static inline void cf_cache_flush(unsigned long paddr, int len)
|
|
{
|
|
/* number of lines */
|
|
- len = (len + (CACHE_LINE_SIZE-1)) / CACHE_LINE_SIZE;
|
|
+ len = (len + (CACHE_LINE_SIZE-1)) / CACHE_LINE_SIZE;
|
|
+ if (len == 0)
|
|
+ return;
|
|
|
|
/* align on set boundary */
|
|
paddr &= 0xfffffff0;
|
|
@@ -234,6 +240,8 @@ static inline void cf_cache_flush_range(
|
|
vstart &= 0xfffffff0;
|
|
vend = PAGE_ALIGN((vend + (CACHE_LINE_SIZE-1))) & 0xfffffff0;
|
|
len = vend - vstart;
|
|
+ if (len == 0)
|
|
+ return;
|
|
vstart = __pa(vstart);
|
|
vend = vstart + len;
|
|
|