Blame view
arch/frv/mm/highmem.c
1.98 KB
1da177e4c Linux-2.6.12-rc2 |
1 2 3 4 5 6 7 8 9 10 11 |
/* highmem.c: arch-specific highmem stuff * * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved. * Written by David Howells (dhowells@redhat.com) * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ #include <linux/highmem.h> |
402344012 [PATCH] frv: impl... |
12 |
#include <linux/module.h> |
1da177e4c Linux-2.6.12-rc2 |
13 14 15 16 17 18 19 20 |
void *kmap(struct page *page) { might_sleep(); if (!PageHighMem(page)) return page_address(page); return kmap_high(page); } |
402344012 [PATCH] frv: impl... |
21 |
EXPORT_SYMBOL(kmap); |
1da177e4c Linux-2.6.12-rc2 |
22 23 24 25 26 27 28 29 |
void kunmap(struct page *page) { if (in_interrupt()) BUG(); if (!PageHighMem(page)) return; kunmap_high(page); } |
402344012 [PATCH] frv: impl... |
30 |
EXPORT_SYMBOL(kunmap); |
1da177e4c Linux-2.6.12-rc2 |
31 32 33 34 |
struct page *kmap_atomic_to_page(void *ptr) { return virt_to_page(ptr); } |
3e4d3af50 mm: stack based k... |
35 |
|
a24401bcf highmem: kill all... |
36 |
void *kmap_atomic(struct page *page) |
3e4d3af50 mm: stack based k... |
37 38 39 40 41 42 43 44 45 46 47 48 |
{ unsigned long paddr; int type; pagefault_disable(); type = kmap_atomic_idx_push(); paddr = page_to_phys(page); switch (type) { /* * The first 4 primary maps are reserved for architecture code */ |
144cf8647 frv: remove the s... |
49 50 51 52 53 |
case 0: return __kmap_atomic_primary(0, paddr, 6); case 1: return __kmap_atomic_primary(0, paddr, 7); case 2: return __kmap_atomic_primary(0, paddr, 8); case 3: return __kmap_atomic_primary(0, paddr, 9); case 4: return __kmap_atomic_primary(0, paddr, 10); |
3e4d3af50 mm: stack based k... |
54 55 56 57 58 59 60 61 62 |
case 5 ... 5 + NR_TLB_LINES - 1: return __kmap_atomic_secondary(type - 5, paddr); default: BUG(); return NULL; } } |
a24401bcf highmem: kill all... |
63 |
EXPORT_SYMBOL(kmap_atomic); |
3e4d3af50 mm: stack based k... |
64 65 66 |
void __kunmap_atomic(void *kvaddr) { |
20273941f mm: fix race in k... |
67 |
int type = kmap_atomic_idx(); |
3e4d3af50 mm: stack based k... |
68 |
switch (type) { |
144cf8647 frv: remove the s... |
69 70 71 72 73 |
case 0: __kunmap_atomic_primary(0, 6); break; case 1: __kunmap_atomic_primary(0, 7); break; case 2: __kunmap_atomic_primary(0, 8); break; case 3: __kunmap_atomic_primary(0, 9); break; case 4: __kunmap_atomic_primary(0, 10); break; |
3e4d3af50 mm: stack based k... |
74 75 76 77 78 79 80 81 |
case 5 ... 5 + NR_TLB_LINES - 1: __kunmap_atomic_secondary(type - 5, kvaddr); break; default: BUG(); } |
20273941f mm: fix race in k... |
82 |
kmap_atomic_idx_pop(); |
3e4d3af50 mm: stack based k... |
83 84 85 |
pagefault_enable(); } EXPORT_SYMBOL(__kunmap_atomic); |