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

addrspace.h (2369B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/*
      3 * Copyright (C) 2020-2022 Loongson Technology Corporation Limited
      4 *
      5 * Derived from MIPS:
      6 * Copyright (C) 1996, 99 Ralf Baechle
      7 * Copyright (C) 2000, 2002  Maciej W. Rozycki
      8 * Copyright (C) 1990, 1999 by Silicon Graphics, Inc.
      9 */
     10#ifndef _ASM_ADDRSPACE_H
     11#define _ASM_ADDRSPACE_H
     12
     13#include <linux/const.h>
     14
     15#include <asm/loongarch.h>
     16
     17/*
     18 * This gives the physical RAM offset.
     19 */
     20#ifndef __ASSEMBLY__
     21#ifndef PHYS_OFFSET
     22#define PHYS_OFFSET	_AC(0, UL)
     23#endif
     24extern unsigned long vm_map_base;
     25#endif /* __ASSEMBLY__ */
     26
     27#ifndef IO_BASE
     28#define IO_BASE			CSR_DMW0_BASE
     29#endif
     30
     31#ifndef CACHE_BASE
     32#define CACHE_BASE		CSR_DMW1_BASE
     33#endif
     34
     35#ifndef UNCACHE_BASE
     36#define UNCACHE_BASE		CSR_DMW0_BASE
     37#endif
     38
     39#define DMW_PABITS	48
     40#define TO_PHYS_MASK	((1ULL << DMW_PABITS) - 1)
     41
     42/*
     43 * Memory above this physical address will be considered highmem.
     44 */
     45#ifndef HIGHMEM_START
     46#define HIGHMEM_START		(_AC(1, UL) << _AC(DMW_PABITS, UL))
     47#endif
     48
     49#define TO_PHYS(x)		(		((x) & TO_PHYS_MASK))
     50#define TO_CACHE(x)		(CACHE_BASE   |	((x) & TO_PHYS_MASK))
     51#define TO_UNCACHE(x)		(UNCACHE_BASE |	((x) & TO_PHYS_MASK))
     52
     53/*
     54 * This handles the memory map.
     55 */
     56#ifndef PAGE_OFFSET
     57#define PAGE_OFFSET		(CACHE_BASE + PHYS_OFFSET)
     58#endif
     59
     60#ifndef FIXADDR_TOP
     61#define FIXADDR_TOP		((unsigned long)(long)(int)0xfffe0000)
     62#endif
     63
     64#ifdef __ASSEMBLY__
     65#define _ATYPE_
     66#define _ATYPE32_
     67#define _ATYPE64_
     68#define _CONST64_(x)	x
     69#else
     70#define _ATYPE_		__PTRDIFF_TYPE__
     71#define _ATYPE32_	int
     72#define _ATYPE64_	__s64
     73#ifdef CONFIG_64BIT
     74#define _CONST64_(x)	x ## L
     75#else
     76#define _CONST64_(x)	x ## LL
     77#endif
     78#endif
     79
     80/*
     81 *  32/64-bit LoongArch address spaces
     82 */
     83#ifdef __ASSEMBLY__
     84#define _ACAST32_
     85#define _ACAST64_
     86#else
     87#define _ACAST32_		(_ATYPE_)(_ATYPE32_)	/* widen if necessary */
     88#define _ACAST64_		(_ATYPE64_)		/* do _not_ narrow */
     89#endif
     90
     91#ifdef CONFIG_32BIT
     92
     93#define UVRANGE			0x00000000
     94#define KPRANGE0		0x80000000
     95#define KPRANGE1		0xa0000000
     96#define KVRANGE			0xc0000000
     97
     98#else
     99
    100#define XUVRANGE		_CONST64_(0x0000000000000000)
    101#define XSPRANGE		_CONST64_(0x4000000000000000)
    102#define XKPRANGE		_CONST64_(0x8000000000000000)
    103#define XKVRANGE		_CONST64_(0xc000000000000000)
    104
    105#endif
    106
    107/*
    108 * Returns the physical address of a KPRANGEx / XKPRANGE address
    109 */
    110#define PHYSADDR(a)		((_ACAST64_(a)) & TO_PHYS_MASK)
    111
    112#endif /* _ASM_ADDRSPACE_H */