From: Andy P. <at...@us...> - 2001-02-15 16:50:13
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/vax/mm In directory usw-pr-cvs1:/tmp/cvs-serv16646/arch/vax/mm Modified Files: ioremap.c Log Message: Fixes for pagelet related problems. mk_pte -> mk_pte_phys in ioremap. Index: ioremap.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/mm/ioremap.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- ioremap.c 2001/02/15 01:26:58 1.3 +++ ioremap.c 2001/02/15 16:50:54 1.4 @@ -101,6 +101,7 @@ } } } + if ((p - start_pte) != num_ptes) { /* Unable to find contiguous chunk of IOMAP PTEs */ @@ -114,8 +115,14 @@ virt_start = SPTE_TO_VIRT(start_pte); for (i = 0; i < num_ptes; i++) { - set_pte( (pte_t *)start_pte++, mk_pte((phys_start+(i*PAGE_SHIFT)),__pgprot(_PAGE_VALID | _PAGE_KW))); - __flush_tlb_one(virt_start + (i<<PAGELET_SHIFT)); + set_pte( (pte_t *)start_pte + i,mk_pte_phys((phys_start + i*PAGE_SIZE), __pgprot(_PAGE_VALID | _PAGE_KW)) ); + +/* asm(" movl %0,r2\n" + " movl %1,r3\n" + " movl %2,r4\n" + " halt" : : "g"(start_pte->pte), "g"(phys_start), "g"(virt_start) );*/ + /* fixme: tlb flushes for other pagelets */ + __flush_tlb_one(virt_start + (i<<PAGE_SHIFT)); } printk("IO mapped phys addr 0x%08lx, 0x%04x pages at virt 0x%08lx (IOMAP PTE index 0x%04x)\n", |