]>
Commit | Line | Data |
---|---|---|
b2441318 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
1da177e4 LT |
2 | /* |
3 | * highmem.h: virtual kernel memory mappings for high memory | |
4 | * | |
5 | * Used in CONFIG_HIGHMEM systems for memory pages which | |
6 | * are not addressable by direct kernel virtual addresses. | |
7 | * | |
8 | * Copyright (C) 1999 Gerhard Wichert, Siemens AG | |
9 | * Gerhard.Wichert@pdb.siemens.de | |
10 | * | |
11 | * | |
12 | * Redesigned the x86 32-bit VM architecture to deal with | |
13 | * up to 16 Terabyte physical memory. With current x86 CPUs | |
14 | * we now support up to 64 Gigabytes physical RAM. | |
15 | * | |
16 | * Copyright (C) 1999 Ingo Molnar <mingo@redhat.com> | |
17 | */ | |
18 | #ifndef _ASM_HIGHMEM_H | |
19 | #define _ASM_HIGHMEM_H | |
20 | ||
21 | #ifdef __KERNEL__ | |
22 | ||
34ae8e36 | 23 | #include <linux/bug.h> |
1da177e4 | 24 | #include <linux/interrupt.h> |
ad76fb6b | 25 | #include <linux/uaccess.h> |
34ae8e36 | 26 | #include <asm/cpu-features.h> |
a4c33e83 | 27 | #include <asm/kmap_size.h> |
1da177e4 | 28 | |
1da177e4 LT |
29 | /* declarations for highmem.c */ |
30 | extern unsigned long highstart_pfn, highend_pfn; | |
31 | ||
1da177e4 LT |
32 | extern pte_t *pkmap_page_table; |
33 | ||
34 | /* | |
35 | * Right now we initialize only a single pte table. It can be extended | |
36 | * easily, subsequent pte tables have to be allocated in one physical | |
37 | * chunk of RAM. | |
38 | */ | |
725a269b MN |
39 | #ifdef CONFIG_PHYS_ADDR_T_64BIT |
40 | #define LAST_PKMAP 512 | |
41 | #else | |
1da177e4 | 42 | #define LAST_PKMAP 1024 |
725a269b MN |
43 | #endif |
44 | ||
1da177e4 | 45 | #define LAST_PKMAP_MASK (LAST_PKMAP-1) |
70342287 RB |
46 | #define PKMAP_NR(virt) ((virt-PKMAP_BASE) >> PAGE_SHIFT) |
47 | #define PKMAP_ADDR(nr) (PKMAP_BASE + ((nr) << PAGE_SHIFT)) | |
1da177e4 | 48 | |
525aaf9b IW |
49 | #define ARCH_HAS_KMAP_FLUSH_TLB |
50 | extern void kmap_flush_tlb(unsigned long addr); | |
1da177e4 | 51 | |
34ae8e36 | 52 | #define flush_cache_kmaps() BUG_ON(cpu_has_dc_aliases) |
1da177e4 | 53 | |
8c0d5d78 | 54 | #define arch_kmap_local_set_pte(mm, vaddr, ptep, ptev) set_pte(ptep, ptev) |
a4c33e83 TG |
55 | #define arch_kmap_local_post_map(vaddr, pteval) local_flush_tlb_one(vaddr) |
56 | #define arch_kmap_local_post_unmap(vaddr) local_flush_tlb_one(vaddr) | |
bb86bf28 | 57 | |
1da177e4 LT |
58 | #endif /* __KERNEL__ */ |
59 | ||
60 | #endif /* _ASM_HIGHMEM_H */ |