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

highmem.h (1422B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3 * Copyright (C) 2015 Synopsys, Inc. (www.synopsys.com)
      4 */
      5
      6#ifndef _ASM_HIGHMEM_H
      7#define _ASM_HIGHMEM_H
      8
      9#ifdef CONFIG_HIGHMEM
     10
     11#include <uapi/asm/page.h>
     12#include <asm/kmap_size.h>
     13
     14#define FIXMAP_SIZE		PGDIR_SIZE
     15#define PKMAP_SIZE		PGDIR_SIZE
     16
     17/* start after vmalloc area */
     18#define FIXMAP_BASE		(PAGE_OFFSET - FIXMAP_SIZE - PKMAP_SIZE)
     19
     20#define FIX_KMAP_SLOTS		(KM_MAX_IDX * NR_CPUS)
     21#define FIX_KMAP_BEGIN		(0UL)
     22#define FIX_KMAP_END		((FIX_KMAP_BEGIN + FIX_KMAP_SLOTS) - 1)
     23
     24#define FIXADDR_TOP		(FIXMAP_BASE + (FIX_KMAP_END << PAGE_SHIFT))
     25
     26/*
     27 * This should be converted to the asm-generic version, but of course this
     28 * is needlessly different from all other architectures. Sigh - tglx
     29 */
     30#define __fix_to_virt(x)	(FIXADDR_TOP - ((x) << PAGE_SHIFT))
     31#define __virt_to_fix(x)	(((FIXADDR_TOP - ((x) & PAGE_MASK))) >> PAGE_SHIFT)
     32
     33/* start after fixmap area */
     34#define PKMAP_BASE		(FIXMAP_BASE + FIXMAP_SIZE)
     35#define LAST_PKMAP		(PKMAP_SIZE >> PAGE_SHIFT)
     36#define LAST_PKMAP_MASK		(LAST_PKMAP - 1)
     37#define PKMAP_ADDR(nr)		(PKMAP_BASE + ((nr) << PAGE_SHIFT))
     38#define PKMAP_NR(virt)		(((virt) - PKMAP_BASE) >> PAGE_SHIFT)
     39
     40#include <asm/cacheflush.h>
     41
     42extern void kmap_init(void);
     43
     44#define arch_kmap_local_post_unmap(vaddr)			\
     45	local_flush_tlb_kernel_range(vaddr, vaddr + PAGE_SIZE)
     46
     47static inline void flush_cache_kmaps(void)
     48{
     49	flush_cache_all();
     50}
     51#endif
     52
     53#endif