/* SPDX-License-Identifier: GPL-2.0 */1#ifndef _ASM_FIXMAP_H2#define _ASM_FIXMAP_H34/*5* This file defines the locations of the fixed mappings on parisc.6*7* All of the values in this file are machine virtual addresses.8*9* All of the values in this file must be <4GB (because of assembly10* loading restrictions). If you place this region anywhere above11* __PAGE_OFFSET, you must adjust the memory map accordingly12*/1314/*15* The tmpalias region is used in kernel space to copy/clear/flush data16* from pages congruently mapped with user space. It is comprised of17* a pair regions. The size of these regions is determined by the largest18* cache aliasing boundary for machines that support equivalent aliasing.19*20* The c3750 with PA8700 processor returns an alias value of 11. This21* indicates that it has an alias boundary of 4 MB. It also supports22* non-equivalent aliasing without a performance penalty.23*24* Machines with PA8800/PA8900 processors return an alias value of 0.25* This indicates the alias boundary is unknown and may be larger than26* 16 MB. Non-equivalent aliasing is not supported.27*28* Here we assume the maximum alias boundary is 4 MB.29*/30#define TMPALIAS_SIZE_BITS 22 /* 4 MB */31#define TMPALIAS_MAP_START ((__PAGE_OFFSET) - (2 << TMPALIAS_SIZE_BITS))3233#define FIXMAP_SIZE (FIX_BITMAP_COUNT << PAGE_SHIFT)34#define FIXMAP_START (TMPALIAS_MAP_START - FIXMAP_SIZE)35/* This is the kernel area for all maps (vmalloc, dma etc.) most36* usually, it extends up to TMPALIAS_MAP_START. Virtual addresses37* 0..GATEWAY_PAGE_SIZE are reserved for the gateway page */38#define KERNEL_MAP_START (GATEWAY_PAGE_SIZE)39#define KERNEL_MAP_END (FIXMAP_START)4041#ifndef __ASSEMBLER__424344enum fixed_addresses {45/* Support writing RO kernel text via kprobes, jump labels, etc. */46FIX_TEXT_POKE0,47FIX_TEXT_KEXEC,48FIX_BITMAP_COUNT49};5051extern void *parisc_vmalloc_start;52#define PCXL_DMA_MAP_SIZE (8*1024*1024)53#define VMALLOC_START ((unsigned long)parisc_vmalloc_start)54#define VMALLOC_END (KERNEL_MAP_END)5556#define __fix_to_virt(_x) (FIXMAP_START + ((_x) << PAGE_SHIFT))5758void set_fixmap(enum fixed_addresses idx, phys_addr_t phys);59void clear_fixmap(enum fixed_addresses idx);6061#endif /*__ASSEMBLER__*/6263#endif /*_ASM_FIXMAP_H*/646566