>>>>> On Mon, 16 Jun 2003 10:42:24 +0900 (JST), Atsushi Nemoto
>>>>> <nemoto@toshiba-tops.co.jp> said:
>>>>> On Mon, 16 Jun 2003 10:19:11 +0900 (JST), Atsushi Nemoto
>>>>> <nemoto@toshiba-tops.co.jp> said:
>>>>> On Sun, 15 Jun 2003 01:47:13 +0100, ralf@linux-mips.org said:
>>> Modified files:
>>> arch/mips64 : Tag: linux_2_4 Makefile
>>> include/asm-mips64: Tag: linux_2_4 processor.h r4kcache.h
>>> Log message:
>>> Support GT64120 boards with 64-bit kernels also.
nemoto> This corrupts mips64/mm/c-r4k.c. Please apply this patch also.
nemoto> And I doubt that 'unsigned short' is enough for the 'waysize'
nemoto> (especially for scache). How about this?
Then this is a patch to sync 32-bit version.
diff -ur linux-mips-cvs/arch/mips/mm/c-r4k.c linux.new/arch/mips/mm/c-r4k.c
--- linux-mips-cvs/arch/mips/mm/c-r4k.c Mon Apr 28 09:44:52 2003
+++ linux.new/arch/mips/mm/c-r4k.c Mon Jun 16 10:43:21 2003
@@ -26,7 +26,6 @@
/* Primary cache parameters. */
static unsigned long icache_size, dcache_size, scache_size;
-unsigned long icache_way_size, dcache_way_size, scache_way_size;
static unsigned long scache_size;
#include <asm/cacheops.h>
@@ -848,8 +847,8 @@
panic("Improper R4000SC processor configuration detected");
/* compute a couple of other cache variables */
- icache_way_size = icache_size / c->icache.ways;
- dcache_way_size = dcache_size / c->dcache.ways;
+ c->icache.waysize = icache_size / c->icache.ways;
+ c->dcache.waysize = dcache_size / c->dcache.ways;
c->icache.sets = icache_size / (c->icache.linesz * c->icache.ways);
c->dcache.sets = dcache_size / (c->dcache.linesz * c->dcache.ways);
@@ -862,7 +861,7 @@
*/
if (current_cpu_data.cputype != CPU_R10000 &&
current_cpu_data.cputype != CPU_R12000)
- if (dcache_way_size > PAGE_SIZE)
+ if (c->dcache.waysize > PAGE_SIZE)
c->dcache.flags |= MIPS_CACHE_ALIASES;
if (config & 0x8) /* VI bit */
diff -ur linux-mips-cvs/arch/mips/mm/c-tx39.c linux.new/arch/mips/mm/c-tx39.c
--- linux-mips-cvs/arch/mips/mm/c-tx39.c Tue May 6 09:40:58 2003
+++ linux.new/arch/mips/mm/c-tx39.c Mon Jun 16 10:46:54 2003
@@ -25,9 +25,7 @@
/* For R3000 cores with R4000 style caches */
static unsigned long icache_size, dcache_size; /* Size in bytes */
-static unsigned long icache_way_size, dcache_way_size; /* Size divided by ways
*/
#define scache_size 0
-#define scache_way_size 0
#include <asm/r4kcache.h>
@@ -473,15 +471,15 @@
break;
}
- icache_way_size = icache_size / current_cpu_data.icache.ways;
- dcache_way_size = dcache_size / current_cpu_data.dcache.ways;
+ current_cpu_data.icache.waysize = icache_size /
current_cpu_data.icache.ways;
+ current_cpu_data.dcache.waysize = dcache_size /
current_cpu_data.dcache.ways;
current_cpu_data.icache.sets =
- icache_way_size / current_cpu_data.icache.linesz;
+ current_cpu_data.icache.waysize /
current_cpu_data.icache.linesz;
current_cpu_data.dcache.sets =
- dcache_way_size / current_cpu_data.dcache.linesz;
+ current_cpu_data.dcache.waysize /
current_cpu_data.dcache.linesz;
- if (dcache_way_size > PAGE_SIZE)
+ if (current_cpu_data.dcache.waysize > PAGE_SIZE)
current_cpu_data.dcache.flags |= MIPS_CACHE_ALIASES;
current_cpu_data.icache.waybit = 0;
diff -ur linux-mips-cvs/arch/mips/mm/sc-rm7k.c linux.new/arch/mips/mm/sc-rm7k.c
--- linux-mips-cvs/arch/mips/mm/sc-rm7k.c Fri Apr 18 10:23:03 2003
+++ linux.new/arch/mips/mm/sc-rm7k.c Mon Jun 16 10:44:02 2003
@@ -20,8 +20,6 @@
/* Secondary cache parameters. */
#define scache_size (256*1024) /* Fixed to 256KiB on RM7000 */
-extern unsigned long icache_way_size, dcache_way_size;
-
#include <asm/r4kcache.h>
int rm7k_tcache_enabled;
diff -ur linux-mips-cvs/include/asm-mips/processor.h
linux.new/include/asm-mips/processor.h
--- linux-mips-cvs/include/asm-mips/processor.h Thu May 8 10:28:23 2003
+++ linux.new/include/asm-mips/processor.h Mon Jun 16 10:43:04 2003
@@ -34,11 +34,12 @@
* Descriptor for a cache
*/
struct cache_desc {
- unsigned short linesz;
- unsigned short ways;
- unsigned int sets;
- unsigned int waybit; /* Bits to select in a cache set */
- unsigned int flags; /* Flags describingcache properties */
+ unsigned short linesz; /* Size of line in bytes */
+ unsigned short ways; /* Number of ways */
+ unsigned short sets; /* Number of lines per set */
+ unsigned short waybit; /* Bits to select in a cache set */
+ unsigned int waysize; /* Bytes per way */
+ unsigned int flags; /* Flags describing cache properties */
};
/*
diff -ur linux-mips-cvs/include/asm-mips/r4kcache.h
linux.new/include/asm-mips/r4kcache.h
--- linux-mips-cvs/include/asm-mips/r4kcache.h Mon Apr 28 09:44:57 2003
+++ linux.new/include/asm-mips/r4kcache.h Mon Jun 16 10:42:51 2003
@@ -140,7 +140,7 @@
static inline void blast_dcache16(void)
{
unsigned long start = KSEG0;
- unsigned long end = start + dcache_way_size;
+ unsigned long end = start + current_cpu_data.dcache.waysize;
unsigned long ws_inc = 1UL << current_cpu_data.dcache.waybit;
unsigned long ws_end = current_cpu_data.dcache.ways <<
current_cpu_data.dcache.waybit;
@@ -179,7 +179,7 @@
static inline void blast_icache16(void)
{
unsigned long start = KSEG0;
- unsigned long end = start + icache_way_size;
+ unsigned long end = start + current_cpu_data.icache.waysize;
unsigned long ws_inc = 1UL << current_cpu_data.icache.waybit;
unsigned long ws_end = current_cpu_data.icache.ways <<
current_cpu_data.icache.waybit;
@@ -218,7 +218,7 @@
static inline void blast_scache16(void)
{
unsigned long start = KSEG0;
- unsigned long end = start + scache_way_size;
+ unsigned long end = start + current_cpu_data.scache.waysize;
unsigned long ws_inc = 1UL << current_cpu_data.scache.waybit;
unsigned long ws_end = current_cpu_data.scache.ways <<
current_cpu_data.scache.waybit;
@@ -283,7 +283,7 @@
static inline void blast_dcache32(void)
{
unsigned long start = KSEG0;
- unsigned long end = start + dcache_way_size;
+ unsigned long end = start + current_cpu_data.dcache.waysize;
unsigned long ws_inc = 1UL << current_cpu_data.dcache.waybit;
unsigned long ws_end = current_cpu_data.dcache.ways <<
current_cpu_data.dcache.waybit;
@@ -322,7 +322,7 @@
static inline void blast_icache32(void)
{
unsigned long start = KSEG0;
- unsigned long end = start + icache_way_size;
+ unsigned long end = start + current_cpu_data.icache.waysize;
unsigned long ws_inc = 1UL << current_cpu_data.icache.waybit;
unsigned long ws_end = current_cpu_data.icache.ways <<
current_cpu_data.icache.waybit;
@@ -361,7 +361,7 @@
static inline void blast_scache32(void)
{
unsigned long start = KSEG0;
- unsigned long end = start + scache_way_size;
+ unsigned long end = start + current_cpu_data.scache.waysize;
unsigned long ws_inc = 1UL << current_cpu_data.scache.waybit;
unsigned long ws_end = current_cpu_data.scache.ways <<
current_cpu_data.scache.waybit;
@@ -426,7 +426,7 @@
static inline void blast_icache64(void)
{
unsigned long start = KSEG0;
- unsigned long end = start + icache_way_size;
+ unsigned long end = start + current_cpu_data.icache.waysize;
unsigned long ws_inc = 1UL << current_cpu_data.icache.waybit;
unsigned long ws_end = current_cpu_data.icache.ways <<
current_cpu_data.icache.waybit;
@@ -465,7 +465,7 @@
static inline void blast_scache64(void)
{
unsigned long start = KSEG0;
- unsigned long end = start + scache_way_size;
+ unsigned long end = start + current_cpu_data.scache.waysize;
unsigned long ws_inc = 1UL << current_cpu_data.scache.waybit;
unsigned long ws_end = current_cpu_data.scache.ways <<
current_cpu_data.scache.waybit;
@@ -530,7 +530,7 @@
static inline void blast_scache128(void)
{
unsigned long start = KSEG0;
- unsigned long end = start + scache_way_size;
+ unsigned long end = start + current_cpu_data.scache.waysize;
unsigned long ws_inc = 1UL << current_cpu_data.scache.waybit;
unsigned long ws_end = current_cpu_data.scache.ways <<
current_cpu_data.scache.waybit;
---
Atsushi Nemoto
|