fixmap.h (2250B)
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 __ASSEMBLY__ 43 44 45enum 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 52extern 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 59void set_fixmap(enum fixed_addresses idx, phys_addr_t phys); 60void clear_fixmap(enum fixed_addresses idx); 61 62#endif /*__ASSEMBLY__*/ 63 64#endif /*_ASM_FIXMAP_H*/