diff options
| author | Rob Radez <rob@osinvestor.com> | 2002-12-04 19:55:07 -0800 |
|---|---|---|
| committer | David S. Miller <davem@nuts.ninka.net> | 2002-12-04 19:55:07 -0800 |
| commit | 043baaa22862471caef57f5bfb92d8cc86d3b51a (patch) | |
| tree | 796cc413febf5b981f3ac8e200d1e180801ce814 /include | |
| parent | e6c0c5e8eb9e44839bed5afd74feaae2a3a703e8 (diff) | |
[SPARC]: Backport of 2.4.x dynamic-nocache.
Diffstat (limited to 'include')
| -rw-r--r-- | include/asm-sparc/highmem.h | 16 | ||||
| -rw-r--r-- | include/asm-sparc/vaddrs.h | 23 |
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 |
