Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/arc/include/asm/highmem.h
26481 views
1
/* SPDX-License-Identifier: GPL-2.0-only */
2
/*
3
* Copyright (C) 2015 Synopsys, Inc. (www.synopsys.com)
4
*/
5
6
#ifndef _ASM_HIGHMEM_H
7
#define _ASM_HIGHMEM_H
8
9
#ifdef CONFIG_HIGHMEM
10
11
#include <uapi/asm/page.h>
12
#include <asm/kmap_size.h>
13
14
#define FIXMAP_SIZE PGDIR_SIZE
15
#define PKMAP_SIZE PGDIR_SIZE
16
17
/* start after vmalloc area */
18
#define FIXMAP_BASE (PAGE_OFFSET - FIXMAP_SIZE - PKMAP_SIZE)
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)
32
33
/* start after fixmap area */
34
#define PKMAP_BASE (FIXMAP_BASE + FIXMAP_SIZE)
35
#define LAST_PKMAP (PKMAP_SIZE >> PAGE_SHIFT)
36
#define LAST_PKMAP_MASK (LAST_PKMAP - 1)
37
#define PKMAP_ADDR(nr) (PKMAP_BASE + ((nr) << PAGE_SHIFT))
38
#define PKMAP_NR(virt) (((virt) - PKMAP_BASE) >> PAGE_SHIFT)
39
40
#include <asm/cacheflush.h>
41
42
extern void kmap_init(void);
43
44
#define arch_kmap_local_post_unmap(vaddr) \
45
local_flush_tlb_kernel_range(vaddr, vaddr + PAGE_SIZE)
46
47
static inline void flush_cache_kmaps(void)
48
{
49
flush_cache_all();
50
}
51
#endif
52
53
#endif
54
55