]>
Commit | Line | Data |
---|---|---|
867e359b CM |
1 | /* |
2 | * Copyright (C) 1999 Gerhard Wichert, Siemens AG | |
3 | * Gerhard.Wichert@pdb.siemens.de | |
4 | * Copyright 2010 Tilera Corporation. All Rights Reserved. | |
5 | * | |
6 | * This program is free software; you can redistribute it and/or | |
7 | * modify it under the terms of the GNU General Public License | |
8 | * as published by the Free Software Foundation, version 2. | |
9 | * | |
10 | * This program is distributed in the hope that it will be useful, but | |
11 | * WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or | |
13 | * NON INFRINGEMENT. See the GNU General Public License for | |
14 | * more details. | |
15 | * | |
16 | * Used in CONFIG_HIGHMEM systems for memory pages which | |
17 | * are not addressable by direct kernel virtual addresses. | |
18 | * | |
19 | */ | |
20 | ||
21 | #ifndef _ASM_TILE_HIGHMEM_H | |
22 | #define _ASM_TILE_HIGHMEM_H | |
23 | ||
24 | #include <linux/interrupt.h> | |
25 | #include <linux/threads.h> | |
26 | #include <asm/kmap_types.h> | |
27 | #include <asm/tlbflush.h> | |
28 | #include <asm/homecache.h> | |
29 | ||
30 | /* declarations for highmem.c */ | |
31 | extern unsigned long highstart_pfn, highend_pfn; | |
32 | ||
33 | extern pte_t *pkmap_page_table; | |
34 | ||
35 | /* | |
36 | * Ordering is: | |
37 | * | |
38 | * FIXADDR_TOP | |
39 | * fixed_addresses | |
40 | * FIXADDR_START | |
41 | * temp fixed addresses | |
42 | * FIXADDR_BOOT_START | |
43 | * Persistent kmap area | |
44 | * PKMAP_BASE | |
45 | * VMALLOC_END | |
46 | * Vmalloc area | |
47 | * VMALLOC_START | |
48 | * high_memory | |
49 | */ | |
50 | #define LAST_PKMAP_MASK (LAST_PKMAP-1) | |
51 | #define PKMAP_NR(virt) ((virt-PKMAP_BASE) >> PAGE_SHIFT) | |
52 | #define PKMAP_ADDR(nr) (PKMAP_BASE + ((nr) << PAGE_SHIFT)) | |
53 | ||
54 | void *kmap_high(struct page *page); | |
55 | void kunmap_high(struct page *page); | |
56 | void *kmap(struct page *page); | |
57 | void kunmap(struct page *page); | |
58 | void *kmap_fix_kpte(struct page *page, int finished); | |
59 | ||
60 | /* This macro is used only in map_new_virtual() to map "page". */ | |
61 | #define kmap_prot page_to_kpgprot(page) | |
62 | ||
3e4d3af5 PZ |
63 | void *__kmap_atomic(struct page *page); |
64 | void __kunmap_atomic(void *kvaddr); | |
65 | void *kmap_atomic_pfn(unsigned long pfn); | |
66 | void *kmap_atomic_prot_pfn(unsigned long pfn, pgprot_t prot); | |
867e359b | 67 | struct page *kmap_atomic_to_page(void *ptr); |
3e4d3af5 | 68 | void *kmap_atomic_prot(struct page *page, pgprot_t prot); |
867e359b CM |
69 | void kmap_atomic_fix_kpte(struct page *page, int finished); |
70 | ||
71 | #define flush_cache_kmaps() do { } while (0) | |
72 | ||
73 | #endif /* _ASM_TILE_HIGHMEM_H */ |