Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/parisc/include/asm/fixmap.h
26298 views
1
/* SPDX-License-Identifier: GPL-2.0 */
2
#ifndef _ASM_FIXMAP_H
3
#define _ASM_FIXMAP_H
4
5
/*
6
* This file defines the locations of the fixed mappings on parisc.
7
*
8
* All of the values in this file are machine virtual addresses.
9
*
10
* All of the values in this file must be <4GB (because of assembly
11
* loading restrictions). If you place this region anywhere above
12
* __PAGE_OFFSET, you must adjust the memory map accordingly
13
*/
14
15
/*
16
* The tmpalias region is used in kernel space to copy/clear/flush data
17
* from pages congruently mapped with user space. It is comprised of
18
* a pair regions. The size of these regions is determined by the largest
19
* cache aliasing boundary for machines that support equivalent aliasing.
20
*
21
* The c3750 with PA8700 processor returns an alias value of 11. This
22
* indicates that it has an alias boundary of 4 MB. It also supports
23
* non-equivalent aliasing without a performance penalty.
24
*
25
* Machines with PA8800/PA8900 processors return an alias value of 0.
26
* This indicates the alias boundary is unknown and may be larger than
27
* 16 MB. Non-equivalent aliasing is not supported.
28
*
29
* Here we assume the maximum alias boundary is 4 MB.
30
*/
31
#define TMPALIAS_SIZE_BITS 22 /* 4 MB */
32
#define TMPALIAS_MAP_START ((__PAGE_OFFSET) - (2 << TMPALIAS_SIZE_BITS))
33
34
#define FIXMAP_SIZE (FIX_BITMAP_COUNT << PAGE_SHIFT)
35
#define FIXMAP_START (TMPALIAS_MAP_START - FIXMAP_SIZE)
36
/* This is the kernel area for all maps (vmalloc, dma etc.) most
37
* usually, it extends up to TMPALIAS_MAP_START. Virtual addresses
38
* 0..GATEWAY_PAGE_SIZE are reserved for the gateway page */
39
#define KERNEL_MAP_START (GATEWAY_PAGE_SIZE)
40
#define KERNEL_MAP_END (FIXMAP_START)
41
42
#ifndef __ASSEMBLER__
43
44
45
enum fixed_addresses {
46
/* Support writing RO kernel text via kprobes, jump labels, etc. */
47
FIX_TEXT_POKE0,
48
FIX_TEXT_KEXEC,
49
FIX_BITMAP_COUNT
50
};
51
52
extern void *parisc_vmalloc_start;
53
#define PCXL_DMA_MAP_SIZE (8*1024*1024)
54
#define VMALLOC_START ((unsigned long)parisc_vmalloc_start)
55
#define VMALLOC_END (KERNEL_MAP_END)
56
57
#define __fix_to_virt(_x) (FIXMAP_START + ((_x) << PAGE_SHIFT))
58
59
void set_fixmap(enum fixed_addresses idx, phys_addr_t phys);
60
void clear_fixmap(enum fixed_addresses idx);
61
62
#endif /*__ASSEMBLER__*/
63
64
#endif /*_ASM_FIXMAP_H*/
65
66