# HG changeset patch
# User Jimi Xenidis <[EMAIL PROTECTED]>
# Node ID e4698a2378a548a4759e0f1f29febc7a706d2364
# Parent  626a8f102700be3c89a6fb407381d9aa77d15dfd
[POWERPC][XEN] Define all cache information globaly

Rather than use the config.h macro

Signed-off-by: Jimi Xenidis <[EMAIL PROTECTED]>
---
 xen/arch/powerpc/dart.c             |    6 +++---
 xen/arch/powerpc/powerpc64/ppc970.c |    9 +++++++++
 xen/include/asm-powerpc/cache.h     |   11 +++++++++++
 xen/include/asm-powerpc/config.h    |    3 ---
 4 files changed, 23 insertions(+), 6 deletions(-)

diff -r 626a8f102700 -r e4698a2378a5 xen/arch/powerpc/dart.c
--- a/xen/arch/powerpc/dart.c   Wed Sep 13 18:41:11 2006 -0400
+++ b/xen/arch/powerpc/dart.c   Thu Sep 14 01:12:26 2006 -0400
@@ -114,7 +114,7 @@ static void dart_fill(ulong index, int p
         ++rpg;
         if (i == num_pg) break;
 
-        if (((ulong)&entry[i]) % CACHE_LINE_SIZE == 0) {
+        if ((((ulong)&entry[i]) % cpu_caches.dline_size) == 0) {
             last_flush = (ulong)&entry[i - 1];
             dcbst(last_flush);
         }
@@ -134,7 +134,7 @@ static void dart_clear(ulong index, ulon
         ++i;
         if (i == num_pg) break;
 
-        if (((ulong)&entry[i]) % CACHE_LINE_SIZE == 0) {
+        if ((((ulong)&entry[i]) % cpu_caches.dline_size) == 0) {
             last_flush = (ulong)&entry[i - 1];
             dcbst(last_flush);
         }
@@ -263,7 +263,7 @@ static int init_dart(void)
     /* Linux uses a dummy page, filling "empty" DART entries with a
        reference to this page to capture stray DMA's */
     dummy_page = (ulong)alloc_xenheap_pages(1);
-    memset((void *)dummy_page, 0, PAGE_SIZE);
+    clear_page((void *)dummy_page);
     dummy_page >>= PAGE_SHIFT;
 
     printk("Initializing DART 0x%lx: tbl: %p[0x%lx] entries: 0x%lx\n",
diff -r 626a8f102700 -r e4698a2378a5 xen/arch/powerpc/powerpc64/ppc970.c
--- a/xen/arch/powerpc/powerpc64/ppc970.c       Wed Sep 13 18:41:11 2006 -0400
+++ b/xen/arch/powerpc/powerpc64/ppc970.c       Thu Sep 14 01:12:26 2006 -0400
@@ -34,6 +34,15 @@
 #undef DEBUG
 #undef SERIALIZE
 
+struct cpu_caches cpu_caches = {
+       .dline_size = 0x80,
+       .log_dline_size = 7,
+    .dlines_per_page = PAGE_SIZE >> 7,
+       .iline_size = 0x80,
+       .log_iline_size = 7,
+    .ilines_per_page = PAGE_SIZE >> 7,
+};
+
 struct rma_settings {
     int order;
     int rmlr_0;
diff -r 626a8f102700 -r e4698a2378a5 xen/include/asm-powerpc/cache.h
--- a/xen/include/asm-powerpc/cache.h   Wed Sep 13 18:41:11 2006 -0400
+++ b/xen/include/asm-powerpc/cache.h   Thu Sep 14 01:12:26 2006 -0400
@@ -59,4 +59,15 @@ static __inline__ void synchronize_cache
 
 #define __read_mostly
 
+struct cpu_caches {
+       u32     dsize;                  /* L1 d-cache size */
+       u32     dline_size;             /* L1 d-cache line size */
+       u32     log_dline_size;
+       u32     dlines_per_page;
+       u32     isize;                  /* L1 i-cache size */
+       u32     iline_size;             /* L1 i-cache line size */
+       u32     log_iline_size;
+       u32     ilines_per_page;
+};
+extern struct cpu_caches cpu_caches;
 #endif
diff -r 626a8f102700 -r e4698a2378a5 xen/include/asm-powerpc/config.h
--- a/xen/include/asm-powerpc/config.h  Wed Sep 13 18:41:11 2006 -0400
+++ b/xen/include/asm-powerpc/config.h  Thu Sep 14 01:12:26 2006 -0400
@@ -43,9 +43,6 @@ extern char __bss_start[];
 /* align addr on a size boundary - adjust address up/down if needed */
 #define ALIGN_UP(addr,size) (((addr)+((size)-1))&(~((size)-1)))
 #define ALIGN_DOWN(addr,size) ((addr)&(~((size)-1)))
-
-/* this should be per processor, but for now */
-#define CACHE_LINE_SIZE 128
 
 /* 256M - 64M of Xen space seems like a nice number */
 #define CONFIG_MIN_DOM0_PAGES (192 << (20 - PAGE_SHIFT))

_______________________________________________
Xen-ppc-devel mailing list
Xen-ppc-devel@lists.xensource.com
http://lists.xensource.com/xen-ppc-devel

Reply via email to