xref: /openbmc/linux/arch/parisc/include/asm/fixmap.h (revision 14474950)
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 /* The alias region is used in kernel space to do copy/clear to or
15  * from areas congruently mapped with user space.  It is 8MB large
16  * and must be 16MB aligned */
17 #define TMPALIAS_MAP_START	((__PAGE_OFFSET) - 16*1024*1024)
18 
19 #define FIXMAP_SIZE		(FIX_BITMAP_COUNT << PAGE_SHIFT)
20 #define FIXMAP_START		(TMPALIAS_MAP_START - FIXMAP_SIZE)
21 /* This is the kernel area for all maps (vmalloc, dma etc.)  most
22  * usually, it extends up to TMPALIAS_MAP_START.  Virtual addresses
23  * 0..GATEWAY_PAGE_SIZE are reserved for the gateway page */
24 #define KERNEL_MAP_START	(GATEWAY_PAGE_SIZE)
25 #define KERNEL_MAP_END		(FIXMAP_START)
26 
27 #ifndef __ASSEMBLY__
28 
29 
30 enum fixed_addresses {
31 	/* Support writing RO kernel text via kprobes, jump labels, etc. */
32 	FIX_TEXT_POKE0,
33 	FIX_TEXT_KEXEC,
34 	FIX_BITMAP_COUNT
35 };
36 
37 extern void *parisc_vmalloc_start;
38 #define PCXL_DMA_MAP_SIZE	(8*1024*1024)
39 #define VMALLOC_START		((unsigned long)parisc_vmalloc_start)
40 #define VMALLOC_END		(KERNEL_MAP_END)
41 
42 #define __fix_to_virt(_x) (FIXMAP_START + ((_x) << PAGE_SHIFT))
43 
44 void set_fixmap(enum fixed_addresses idx, phys_addr_t phys);
45 void clear_fixmap(enum fixed_addresses idx);
46 
47 #endif /*__ASSEMBLY__*/
48 
49 #endif /*_ASM_FIXMAP_H*/
50