patch-2.4.0-test6 linux/arch/sparc/mm/srmmu.c
Next file: linux/arch/sparc/mm/sun4c.c
Previous file: linux/arch/sparc/mm/iommu.c
Back to the patch index
Back to the overall index
- Lines: 97
- Date:
Wed Aug 9 13:49:56 2000
- Orig file:
v2.4.0-test5/linux/arch/sparc/mm/srmmu.c
- Orig date:
Fri Jul 14 12:12:07 2000
diff -u --recursive --new-file v2.4.0-test5/linux/arch/sparc/mm/srmmu.c linux/arch/sparc/mm/srmmu.c
@@ -1,4 +1,4 @@
-/* $Id: srmmu.c,v 1.218 2000/07/10 23:22:32 anton Exp $
+/* $Id: srmmu.c,v 1.220 2000/08/09 00:00:15 davem Exp $
* srmmu.c: SRMMU specific routines for memory management.
*
* Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
@@ -87,7 +87,7 @@
ctxd_t *srmmu_ctx_table_phys;
ctxd_t *srmmu_context_table;
-int viking_mxcc_present = 0;
+int viking_mxcc_present;
spinlock_t srmmu_context_spinlock = SPIN_LOCK_UNLOCKED;
int is_hypersparc;
@@ -117,10 +117,6 @@
int srmmu_cache_pagetables;
/* XXX Make this dynamic based on ram size - Anton */
-#define SRMMU_NOCACHE_NPAGES 256
-#define SRMMU_NOCACHE_VADDR 0xfc000000
-#define SRMMU_NOCACHE_SIZE (SRMMU_NOCACHE_NPAGES*PAGE_SIZE)
-#define SRMMU_NOCACHE_END (SRMMU_NOCACHE_VADDR + SRMMU_NOCACHE_SIZE)
#define SRMMU_NOCACHE_BITMAP_SIZE (SRMMU_NOCACHE_NPAGES * 16)
#define SRMMU_NOCACHE_BITMAP_SHIFT (PAGE_SHIFT - 4)
@@ -616,7 +612,7 @@
static void srmmu_get_task_struct(struct task_struct *tsk)
{
- atomic_inc(&mem_map[MAP_NR(tsk)].count);
+ atomic_inc(&virt_to_page(tsk)->count);
}
/* tsunami.S */
@@ -1190,9 +1186,11 @@
{
int i, cpunode;
char node_str[128];
- unsigned long end_pfn;
+ pgd_t *pgd;
+ pmd_t *pmd;
+ pte_t *pte;
- sparc_iomap.start = 0xfd000000; /* 16MB of IOSPACE on all sun4m's. */
+ sparc_iomap.start = SUN4M_IOBASE_VADDR; /* 16MB of IOSPACE on all sun4m's. */
if (sparc_cpu_model == sun4d)
num_contexts = 65536; /* We know it is Viking */
@@ -1215,7 +1213,7 @@
prom_halt();
}
- last_valid_pfn = end_pfn = bootmem_init();
+ bootmem_init();
srmmu_nocache_init();
srmmu_inherit_prom_mappings(0xfe400000,(LINUX_OPPROM_ENDVM-PAGE_SIZE));
@@ -1238,6 +1236,14 @@
srmmu_allocate_ptable_skeleton(DVMA_VADDR, DVMA_END);
#endif
+ srmmu_allocate_ptable_skeleton(FIX_KMAP_BEGIN, FIX_KMAP_END);
+ srmmu_allocate_ptable_skeleton(PKMAP_BASE, PKMAP_BASE_END);
+
+ pgd = pgd_offset_k(PKMAP_BASE);
+ pmd = pmd_offset(pgd, PKMAP_BASE);
+ pte = pte_offset(pmd, PKMAP_BASE);
+ pkmap_page_table = pte;
+
flush_cache_all();
flush_tlb_all();
@@ -1253,10 +1259,13 @@
sparc_context_init(num_contexts);
+ kmap_init();
+
{
unsigned long zones_size[MAX_NR_ZONES] = { 0, 0, 0};
- zones_size[ZONE_DMA] = end_pfn;
+ zones_size[ZONE_DMA] = max_low_pfn;
+ zones_size[ZONE_HIGHMEM] = highend_pfn - max_low_pfn;
free_area_init(zones_size);
}
}
@@ -2144,7 +2153,7 @@
BTFIXUPSET_CALL(set_pte, srmmu_set_pte, BTFIXUPCALL_SWAPO0O1);
BTFIXUPSET_CALL(switch_mm, srmmu_switch_mm, BTFIXUPCALL_NORM);
- BTFIXUPSET_CALL(pte_pagenr, srmmu_pte_pagenr, BTFIXUPCALL_NORM);
+ BTFIXUPSET_CALL(sparc_pte_pagenr, srmmu_pte_pagenr, BTFIXUPCALL_NORM);
BTFIXUPSET_CALL(pmd_page, srmmu_pmd_page, BTFIXUPCALL_NORM);
BTFIXUPSET_CALL(pgd_page, srmmu_pgd_page, BTFIXUPCALL_NORM);
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)