summaryrefslogtreecommitdiffstats
path: root/arch/sparc/mm/generic.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2005-11-28 14:02:10 -0800
committerLinus Torvalds <torvalds@g5.osdl.org>2005-11-28 14:35:36 -0800
commit5cd9194a1b0b0fa219c31421ac64dfd38670ed49 (patch)
tree4cd74902103751f10aec30d5a4b0b9af51f42561 /arch/sparc/mm/generic.c
parent6aab341e0a28aff100a09831c5300a2994b8b986 (diff)
[PATCH] sparc: convert IO remapping to VM_PFNMAP
Here are the Sparc bits. Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/sparc/mm/generic.c')
-rw-r--r--arch/sparc/mm/generic.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/arch/sparc/mm/generic.c b/arch/sparc/mm/generic.c
index 0410bae681f..2cb0728cee0 100644
--- a/arch/sparc/mm/generic.c
+++ b/arch/sparc/mm/generic.c
@@ -32,9 +32,7 @@ static inline void io_remap_pte_range(struct mm_struct *mm, pte_t * pte, unsigne
if (end > PMD_SIZE)
end = PMD_SIZE;
do {
- pte_t oldpage = *pte;
- pte_clear(mm, address, pte);
- set_pte(pte, mk_pte_io(offset, prot, space));
+ set_pte_at(mm, address, pte, mk_pte_io(offset, prot, space));
address += PAGE_SIZE;
offset += PAGE_SIZE;
pte++;
@@ -63,7 +61,7 @@ static inline int io_remap_pmd_range(struct mm_struct *mm, pmd_t * pmd, unsigned
}
int io_remap_pfn_range(struct vm_area_struct *vma, unsigned long from,
- unsigned long pfn, unsigned long size, pgprot_t prot)
+ unsigned long pfn, unsigned long size, pgprot_t prot)
{
int error = 0;
pgd_t * dir;
@@ -74,7 +72,9 @@ int io_remap_pfn_range(struct vm_area_struct *vma, unsigned long from,
unsigned long offset = GET_PFN(pfn) << PAGE_SHIFT;
/* See comment in mm/memory.c remap_pfn_range */
- vma->vm_flags |= VM_IO | VM_RESERVED | VM_UNPAGED;
+ vma->vm_flags |= VM_IO | VM_RESERVED | VM_PFNMAP;
+ vma->vm_pgoff = (offset >> PAGE_SHIFT) |
+ ((unsigned long)space << 28UL);
prot = __pgprot(pg_iobits);
offset -= from;