1 /* SPDX-License-Identifier: GPL-2.0 */
6 * This file defines the locations of the fixed mappings on parisc.
8 * All of the values in this file are machine virtual addresses.
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
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.
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.
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.
29 * Here we assume the maximum alias boundary is 4 MB.
31 #define TMPALIAS_SIZE_BITS 22 /* 4 MB */
32 #define TMPALIAS_MAP_START ((__PAGE_OFFSET) - (2 << TMPALIAS_SIZE_BITS))
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)
45 enum fixed_addresses
{
46 /* Support writing RO kernel text via kprobes, jump labels, etc. */
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)
57 #define __fix_to_virt(_x) (FIXMAP_START + ((_x) << PAGE_SHIFT))
59 void set_fixmap(enum fixed_addresses idx
, phys_addr_t phys
);
60 void clear_fixmap(enum fixed_addresses idx
);
62 #endif /*__ASSEMBLY__*/
64 #endif /*_ASM_FIXMAP_H*/