aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc64
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2005-11-28 17:02:10 -0500
committerLinus Torvalds <torvalds@g5.osdl.org>2005-11-28 17:35:36 -0500
commit5cd9194a1b0b0fa219c31421ac64dfd38670ed49 (patch)
tree4cd74902103751f10aec30d5a4b0b9af51f42561 /arch/sparc64
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/sparc64')
-rw-r--r--arch/sparc64/mm/generic.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/arch/sparc64/mm/generic.c b/arch/sparc64/mm/generic.c
index 8fd4cb1f050a..d9396c1721cd 100644
--- a/arch/sparc64/mm/generic.c
+++ b/arch/sparc64/mm/generic.c
@@ -15,6 +15,15 @@
15#include <asm/page.h> 15#include <asm/page.h>
16#include <asm/tlbflush.h> 16#include <asm/tlbflush.h>
17 17
18static inline pte_t mk_pte_io(unsigned long page, pgprot_t prot, int space)
19{
20 pte_t pte;
21 pte_val(pte) = (((page) | pgprot_val(prot) | _PAGE_E) &
22 ~(unsigned long)_PAGE_CACHE);
23 pte_val(pte) |= (((unsigned long)space) << 32);
24 return pte;
25}
26
18/* Remap IO memory, the same way as remap_pfn_range(), but use 27/* Remap IO memory, the same way as remap_pfn_range(), but use
19 * the obio memory space. 28 * the obio memory space.
20 * 29 *
@@ -126,9 +135,13 @@ int io_remap_pfn_range(struct vm_area_struct *vma, unsigned long from,
126 struct mm_struct *mm = vma->vm_mm; 135 struct mm_struct *mm = vma->vm_mm;
127 int space = GET_IOSPACE(pfn); 136 int space = GET_IOSPACE(pfn);
128 unsigned long offset = GET_PFN(pfn) << PAGE_SHIFT; 137 unsigned long offset = GET_PFN(pfn) << PAGE_SHIFT;
138 unsigned long phys_base;
139
140 phys_base = offset | (((unsigned long) space) << 32UL);
129 141
130 /* See comment in mm/memory.c remap_pfn_range */ 142 /* See comment in mm/memory.c remap_pfn_range */
131 vma->vm_flags |= VM_IO | VM_RESERVED | VM_UNPAGED; 143 vma->vm_flags |= VM_IO | VM_RESERVED | VM_PFNMAP;
144 vma->vm_pgoff = phys_base >> PAGE_SHIFT;
132 145
133 prot = __pgprot(pg_iobits); 146 prot = __pgprot(pg_iobits);
134 offset -= from; 147 offset -= from;