cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

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*/