|
From: Andy P. <at...@us...> - 2001-09-02 20:50:19
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/vax/mm
In directory usw-pr-cvs1:/tmp/cvs-serv32483
Modified Files:
init.c pgalloc.c
Log Message:
Clean up pgalloc.c. init.c zeros empty_zero_page
Index: init.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/mm/init.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- init.c 2001/08/20 21:29:07 1.16
+++ init.c 2001/09/02 20:50:16 1.17
@@ -119,7 +119,11 @@
{
max_mapnr = num_physpages = max_low_pfn;
- /* this will put all low memory onto the freelists */
+ /* clear the zero-page */
+ memset(empty_zero_page, 0, PAGE_SIZE);
+
+ /* this will put all low memory onto the freelists */
+
totalram_pages += free_all_bootmem();
high_memory = (void *) __va((max_low_pfn) * PAGE_SIZE);
Index: pgalloc.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/mm/pgalloc.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- pgalloc.c 2001/09/01 12:19:47 1.7
+++ pgalloc.c 2001/09/02 20:50:16 1.8
@@ -175,8 +175,8 @@
}
if (!pmdpage) {
printk(KERN_ERR "VAXMM: unable to allocate a pmd for pgd (%8p)\n",pgd );
- free_pmd_fast(get_pageaddr_from_pte(pgd->pmd));
- remap_pte_invalidate(pgd->pmd);
+ free_pmd_fast((pmd_t *)get_pageaddr_from_pte((pte_t *)pgd->pmd));
+ remap_pte_invalidate((pmd_t *)pgd->pmd);
return NULL;
}
@@ -217,14 +217,14 @@
}
/* This inverts the remapping done in remap_and_clear */
-unsigned long get_pageaddr_from_pte(pte_t *ptep)
+pte_t *get_pageaddr_from_pte(pte_t *ptep)
{
- unsigned long addr;
+ pte_t *addr;
pte_t *s0pte;
s0pte = GET_SPTE_VIRT(ptep);
- addr = (unsigned long)(((pte_val(*s0pte)&PAGELET_PFN_MASK)<<PAGELET_SHIFT)|PAGE_OFFSET);
+ addr = (pte_t *)(((pte_val(*s0pte)&PAGELET_PFN_MASK)<<PAGELET_SHIFT)|PAGE_OFFSET);
return addr;
}
@@ -236,8 +236,8 @@
#ifdef VAX_MM_PGALLOC_DEBUG
printk(KERN_DEBUG "VAXMM:pmd_free: freeing pmd %p, pmd2 %p\n",pmd,pmdp);
#endif
- free_pmd_slow(get_pageaddr_from_pte(pmdp));
- free_pmd_slow(get_pageaddr_from_pte(pmd));
+ free_pmd_fast((pmd_t *)get_pageaddr_from_pte((pte_t *)pmdp));
+ free_pmd_fast((pmd_t *)get_pageaddr_from_pte((pte_t *)pmd));
/* invalidate the S0 ptes that map this */
remap_pte_invalidate(pmd);
remap_pte_invalidate(pmdp);
@@ -266,7 +266,7 @@
}
/* locate the S0 pte that describes the page pointed to by s0addr */
-
+
s0pte = GET_SPTE_VIRT(s0addr);
/* is it already pointing somewhere? */
@@ -276,10 +276,10 @@
}
#endif
- page_clear(pte_page);
+ clear_page(pte_page);
/* zap the map */
- set_pte(s0pte,__mk_pte(pte_page,__pgprot(_PAGE_VALID|_PAGE_KW)));
+ set_pte(s0pte,__mk_pte((unsigned long int)pte_page,__pgprot(_PAGE_VALID|_PAGE_KW)));
// print_pte(s0pte);
flush_tlb_all();
@@ -380,10 +380,10 @@
if (((adjusted_address) >> PAGELET_SHIFT) < (pgdptr->lr)) {
/* fill in any bits missing. Perhaps we should do this when we set up the
* SPT in init.c just to be consistent */
- if (pmd_val(*pmd)==NULL) {
+ if (pmd_val(*pmd)==0) {
spt_entry = (pmd - (pmd_t *)(pgdptr->pmd))<< (PAGE_SHIFT+7) | PAGE_OFFSET;
spte = GET_SPTE_VIRT(spt_entry);
- pmd_val(*pmd) = spte;
+ pmd_val(*pmd) = (unsigned long int)spte;
}
return pte_offset(pmd, adjusted_address);
}
@@ -422,7 +422,7 @@
pmd_t *pmdi;
long int direction,ii;
- pmd_basep = ((unsigned long)pmd & PTE_TASK_MASK); /* base of the pmd */
+ pmd_basep = (pmd_t *)((unsigned long)pmd & PTE_TASK_MASK); /* base of the pmd */
#ifdef VAX_MM_PGALLOC_DEBUG
printk(KERN_DEBUG "VAXMM:pte_alloc: pmd_basep %8lx, pmd %8lx, pmd_val %8lx, address %8lx, pmd_index %8lx\n",pmd_basep,pmd,pmd_val(*pmd),address,pmd_index(address));
@@ -451,13 +451,13 @@
if (is_p1){
adjusted_address |= 0x40000000;
if (adjusted_address <= (PAGE_OFFSET-TASK_STKMAX)) {
- printk(KERN_NOTICE "VAXMM: process %p exceeded TASK_STKMAX (%dMB)\n",current,(TASK_STKMAX>>10));
+ printk(KERN_NOTICE "VAXMM: process %p exceeded TASK_STKMAX (%dMB) addr %8lx\n",current,(TASK_STKMAX>>20),adjusted_address);
goto give_segv;
}
pte_number = (adjusted_address - 0x40000000) >> PAGE_SHIFT;
} else {
if (adjusted_address >= (TASK_WSMAX)) {
- printk(KERN_NOTICE "VAXMM: process %p exceeded TASK_WSMAX (%dMB)\n",current,(TASK_WSMAX>>10));
+ printk(KERN_NOTICE "VAXMM: process %p exceeded TASK_WSMAX (%dMB) addr %8lx\n",current,(TASK_WSMAX>>20),adjusted_address);
goto give_segv;
}
pte_number = (adjusted_address>>PAGE_SHIFT);
@@ -490,12 +490,12 @@
/* The s0 address of the current end page in the page table is
* current_last_page * 128 ptes/page * 32 bytes/pte_t + base reg */
- s0addr = (((current_last_page)<<7)*BYTES_PER_PTE_T)+pgdp->br;
+ s0addr = (pmd_t *) ((((current_last_page)<<7)*BYTES_PER_PTE_T)+pgdp->br);
direction = -1;
pmdi = pmd_basep+(current_last_page);
} else {
npages = target_page - current_last_page;
- s0addr = (((current_last_page + 1)<<7)*BYTES_PER_PTE_T)+pgdp->br;
+ s0addr = (pmd_t *) ((((current_last_page + 1)<<7)*BYTES_PER_PTE_T)+pgdp->br);
direction = 1;
pmdi = pmd_basep+(current_last_page + 1);
}
@@ -559,14 +559,14 @@
{
free_pte_fast(get_pageaddr_from_pte(pte));
/* invalidate the S0 pte that maps this */
- remap_pte_invalidate(pte);
+ remap_pte_invalidate((pmd_t *)pte);
}
/* This is only ever called from do_pgt_cache, all the unmapping have been done
* before the page has been placed on the pgt cache */
void free_pte_slow(pte_t *pte)
{
- free_page(pte);
+ free_page((unsigned long int)pte);
}
void pte_free_kernel(pte_t *pte)
@@ -590,7 +590,7 @@
#else
pte_t * pte_offset(pmd_t * dir, unsigned long address)
{
- return (pmd_val(*dir)+(((address>>PAGE_SHIFT)&(PTRS_PER_PTE-1))<<SIZEOF_PTE_LOG2));
+ return (pte_t *)(pmd_val(*dir)+(((address>>PAGE_SHIFT)&(PTRS_PER_PTE-1))<<SIZEOF_PTE_LOG2));
}
#endif
/* get_pte_kernel_slow. allocate a page of PTEs for the S0 pagetable.
|