summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorRob Radez <rob@osinvestor.com>2002-12-04 19:55:07 -0800
committerDavid S. Miller <davem@nuts.ninka.net>2002-12-04 19:55:07 -0800
commit043baaa22862471caef57f5bfb92d8cc86d3b51a (patch)
tree796cc413febf5b981f3ac8e200d1e180801ce814 /include
parente6c0c5e8eb9e44839bed5afd74feaae2a3a703e8 (diff)
[SPARC]: Backport of 2.4.x dynamic-nocache.
Diffstat (limited to 'include')
-rw-r--r--include/asm-sparc/highmem.h16
-rw-r--r--include/asm-sparc/vaddrs.h23
2 files changed, 24 insertions, 15 deletions
diff --git a/include/asm-sparc/highmem.h b/include/asm-sparc/highmem.h
index e4c8edc4409d..68d6402b3aa3 100644
--- a/include/asm-sparc/highmem.h
+++ b/include/asm-sparc/highmem.h
@@ -33,6 +33,12 @@ extern pte_t *kmap_pte;
extern pgprot_t kmap_prot;
extern pte_t *pkmap_page_table;
+/* This gets set in {srmmu,sun4c}_paging_init() */
+extern unsigned long fix_kmap_begin;
+
+/* Only used and set with srmmu? */
+extern unsigned long pkmap_base;
+
extern void kmap_init(void) __init;
/*
@@ -42,9 +48,9 @@ extern void kmap_init(void) __init;
*/
#define LAST_PKMAP 1024
-#define LAST_PKMAP_MASK (LAST_PKMAP-1)
-#define PKMAP_NR(virt) ((virt-PKMAP_BASE) >> PAGE_SHIFT)
-#define PKMAP_ADDR(nr) (PKMAP_BASE + ((nr) << PAGE_SHIFT))
+#define LAST_PKMAP_MASK (LAST_PKMAP - 1)
+#define PKMAP_NR(virt) ((virt - pkmap_base) >> PAGE_SHIFT)
+#define PKMAP_ADDR(nr) (pkmap_base + ((nr) << PAGE_SHIFT))
extern void *kmap_high(struct page *page);
extern void kunmap_high(struct page *page);
@@ -75,10 +81,10 @@ static inline struct page *kmap_atomic_to_page(void *ptr)
unsigned long idx, vaddr = (unsigned long)ptr;
pte_t *pte;
- if (vaddr < FIX_KMAP_BEGIN)
+ if (vaddr < fix_kmap_begin)
return virt_to_page(ptr);
- idx = ((vaddr - FIX_KMAP_BEGIN) >> PAGE_SHIFT);
+ idx = ((vaddr - fix_kmap_begin) >> PAGE_SHIFT);
pte = kmap_pte + idx;
return pte_page(*pte);
}
diff --git a/include/asm-sparc/vaddrs.h b/include/asm-sparc/vaddrs.h
index 0470ea55e6a9..d823a79b0746 100644
--- a/include/asm-sparc/vaddrs.h
+++ b/include/asm-sparc/vaddrs.h
@@ -14,23 +14,26 @@
#define SRMMU_MAXMEM 0x0c000000
-#define SRMMU_NOCACHE_VADDR 0xfc000000 /* KERNBASE + SRMMU_MAXMEM */
-/* XXX Make this dynamic based on ram size - Anton */
-#define SRMMU_NOCACHE_NPAGES 256
-#define SRMMU_NOCACHE_SIZE (SRMMU_NOCACHE_NPAGES * PAGE_SIZE)
-#define SRMMU_NOCACHE_END (SRMMU_NOCACHE_VADDR + SRMMU_NOCACHE_SIZE)
+#define SRMMU_NOCACHE_VADDR (KERNBASE + SRMMU_MAXMEM)
+ /* = 0x0fc000000 */
-#define FIX_KMAP_BEGIN 0xfc100000
-#define FIX_KMAP_END (FIX_KMAP_BEGIN + ((KM_TYPE_NR*NR_CPUS)-1)*PAGE_SIZE)
-
-#define PKMAP_BASE 0xfc140000
-#define PKMAP_BASE_END (PKMAP_BASE+LAST_PKMAP*PAGE_SIZE)
+/* The following constant is used in mm/srmmu.c::srmmu_nocache_calcsize()
+ * to determine the amount of memory that will be reserved as nocache:
+ *
+ * 256 pages will be taken as nocache per each
+ * SRMMU_NOCACHE_ALCRATIO MB of system memory.
+ *
+ * limits enforced: nocache minimum = 256 pages
+ * nocache maximum = 1280 pages
+ */
+#define SRMMU_NOCACHE_ALCRATIO 64 /* 256 pages per 64MB of system RAM */
#define SUN4M_IOBASE_VADDR 0xfd000000 /* Base for mapping pages */
#define IOBASE_VADDR 0xfe000000
#define IOBASE_END 0xfe300000
#define VMALLOC_START 0xfe300000
+
/* XXX Alter this when I get around to fixing sun4c - Anton */
#define VMALLOC_END 0xffc00000