diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2005-07-11 16:45:51 -0400 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2005-10-29 14:31:42 -0400 |
commit | 60080265a13ea43f0ebdcd25671dcab05ed01308 (patch) | |
tree | 5172178f73d65bb8cbb129ad3e49a04af7e0b7ce /arch/mips/mm/highmem.c | |
parent | 129bc8f78b468df6824dd1584829f10aa3a69c27 (diff) |
Define kmap_atomic_pfn() for MIPS.
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/mm/highmem.c')
-rw-r--r-- | arch/mips/mm/highmem.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/arch/mips/mm/highmem.c b/arch/mips/mm/highmem.c index dd5e2e31885b..1f7b37b38f5c 100644 --- a/arch/mips/mm/highmem.c +++ b/arch/mips/mm/highmem.c | |||
@@ -83,6 +83,25 @@ void __kunmap_atomic(void *kvaddr, enum km_type type) | |||
83 | preempt_check_resched(); | 83 | preempt_check_resched(); |
84 | } | 84 | } |
85 | 85 | ||
86 | /* | ||
87 | * This is the same as kmap_atomic() but can map memory that doesn't | ||
88 | * have a struct page associated with it. | ||
89 | */ | ||
90 | void *kmap_atomic_pfn(unsigned long pfn, enum km_type type) | ||
91 | { | ||
92 | enum fixed_addresses idx; | ||
93 | unsigned long vaddr; | ||
94 | |||
95 | inc_preempt_count(); | ||
96 | |||
97 | idx = type + KM_TYPE_NR*smp_processor_id(); | ||
98 | vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx); | ||
99 | set_pte(kmap_pte-idx, pfn_pte(pfn, kmap_prot)); | ||
100 | flush_tlb_one(vaddr); | ||
101 | |||
102 | return (void*) vaddr; | ||
103 | } | ||
104 | |||
86 | struct page *__kmap_atomic_to_page(void *ptr) | 105 | struct page *__kmap_atomic_to_page(void *ptr) |
87 | { | 106 | { |
88 | unsigned long idx, vaddr = (unsigned long)ptr; | 107 | unsigned long idx, vaddr = (unsigned long)ptr; |