forked from ~ljy/RK356X_SDK_RELEASE

hc
2023-12-08 01573e231f18eb2d99162747186f59511f56b64d
kernel/arch/arc/include/asm/highmem.h
....@@ -1,10 +1,6 @@
1
+/* SPDX-License-Identifier: GPL-2.0-only */
12 /*
23 * Copyright (C) 2015 Synopsys, Inc. (www.synopsys.com)
3
- *
4
- * This program is free software; you can redistribute it and/or modify
5
- * it under the terms of the GNU General Public License version 2 as
6
- * published by the Free Software Foundation.
7
- *
84 */
95
106 #ifndef _ASM_HIGHMEM_H
....@@ -13,49 +9,45 @@
139 #ifdef CONFIG_HIGHMEM
1410
1511 #include <uapi/asm/page.h>
16
-#include <asm/kmap_types.h>
12
+#include <asm/kmap_size.h>
13
+
14
+#define FIXMAP_SIZE PGDIR_SIZE
15
+#define PKMAP_SIZE PGDIR_SIZE
1716
1817 /* start after vmalloc area */
1918 #define FIXMAP_BASE (PAGE_OFFSET - FIXMAP_SIZE - PKMAP_SIZE)
20
-#define FIXMAP_SIZE PGDIR_SIZE /* only 1 PGD worth */
21
-#define KM_TYPE_NR ((FIXMAP_SIZE >> PAGE_SHIFT)/NR_CPUS)
22
-#define FIXMAP_ADDR(nr) (FIXMAP_BASE + ((nr) << PAGE_SHIFT))
19
+
20
+#define FIX_KMAP_SLOTS (KM_MAX_IDX * NR_CPUS)
21
+#define FIX_KMAP_BEGIN (0UL)
22
+#define FIX_KMAP_END ((FIX_KMAP_BEGIN + FIX_KMAP_SLOTS) - 1)
23
+
24
+#define FIXADDR_TOP (FIXMAP_BASE + (FIX_KMAP_END << PAGE_SHIFT))
25
+
26
+/*
27
+ * This should be converted to the asm-generic version, but of course this
28
+ * is needlessly different from all other architectures. Sigh - tglx
29
+ */
30
+#define __fix_to_virt(x) (FIXADDR_TOP - ((x) << PAGE_SHIFT))
31
+#define __virt_to_fix(x) (((FIXADDR_TOP - ((x) & PAGE_MASK))) >> PAGE_SHIFT)
2332
2433 /* start after fixmap area */
2534 #define PKMAP_BASE (FIXMAP_BASE + FIXMAP_SIZE)
26
-#define PKMAP_SIZE PGDIR_SIZE
2735 #define LAST_PKMAP (PKMAP_SIZE >> PAGE_SHIFT)
2836 #define LAST_PKMAP_MASK (LAST_PKMAP - 1)
2937 #define PKMAP_ADDR(nr) (PKMAP_BASE + ((nr) << PAGE_SHIFT))
3038 #define PKMAP_NR(virt) (((virt) - PKMAP_BASE) >> PAGE_SHIFT)
3139
32
-#define kmap_prot PAGE_KERNEL
33
-
34
-
3540 #include <asm/cacheflush.h>
3641
37
-extern void *kmap(struct page *page);
38
-extern void *kmap_high(struct page *page);
39
-extern void *kmap_atomic(struct page *page);
40
-extern void __kunmap_atomic(void *kvaddr);
41
-extern void kunmap_high(struct page *page);
42
-
4342 extern void kmap_init(void);
43
+
44
+#define arch_kmap_local_post_unmap(vaddr) \
45
+ local_flush_tlb_kernel_range(vaddr, vaddr + PAGE_SIZE)
4446
4547 static inline void flush_cache_kmaps(void)
4648 {
4749 flush_cache_all();
4850 }
49
-
50
-static inline void kunmap(struct page *page)
51
-{
52
- BUG_ON(in_interrupt());
53
- if (!PageHighMem(page))
54
- return;
55
- kunmap_high(page);
56
-}
57
-
58
-
5951 #endif
6052
6153 #endif