1*23ff8633SDaniel Schwierzeck /* 2*23ff8633SDaniel Schwierzeck * Copyright (C) 1994 - 1999, 2000, 03, 04 Ralf Baechle 3*23ff8633SDaniel Schwierzeck * Copyright (C) 2000, 2002 Maciej W. Rozycki 4*23ff8633SDaniel Schwierzeck * Copyright (C) 1990, 1999, 2000 Silicon Graphics, Inc. 5*23ff8633SDaniel Schwierzeck * 6*23ff8633SDaniel Schwierzeck * SPDX-License-Identifier: GPL-2.0 7*23ff8633SDaniel Schwierzeck */ 8*23ff8633SDaniel Schwierzeck #ifndef _ASM_MACH_GENERIC_SPACES_H 9*23ff8633SDaniel Schwierzeck #define _ASM_MACH_GENERIC_SPACES_H 10*23ff8633SDaniel Schwierzeck 11*23ff8633SDaniel Schwierzeck #include <asm/const.h> 12*23ff8633SDaniel Schwierzeck 13*23ff8633SDaniel Schwierzeck /* 14*23ff8633SDaniel Schwierzeck * This gives the physical RAM offset. 15*23ff8633SDaniel Schwierzeck */ 16*23ff8633SDaniel Schwierzeck #ifndef PHYS_OFFSET 17*23ff8633SDaniel Schwierzeck #define PHYS_OFFSET _AC(0, UL) 18*23ff8633SDaniel Schwierzeck #endif 19*23ff8633SDaniel Schwierzeck 20*23ff8633SDaniel Schwierzeck #ifdef CONFIG_32BIT 21*23ff8633SDaniel Schwierzeck #ifdef CONFIG_KVM_GUEST 22*23ff8633SDaniel Schwierzeck #define CAC_BASE _AC(0x40000000, UL) 23*23ff8633SDaniel Schwierzeck #else 24*23ff8633SDaniel Schwierzeck #define CAC_BASE _AC(0x80000000, UL) 25*23ff8633SDaniel Schwierzeck #endif 26*23ff8633SDaniel Schwierzeck #ifndef IO_BASE 27*23ff8633SDaniel Schwierzeck #define IO_BASE _AC(0xa0000000, UL) 28*23ff8633SDaniel Schwierzeck #endif 29*23ff8633SDaniel Schwierzeck #ifndef UNCAC_BASE 30*23ff8633SDaniel Schwierzeck #define UNCAC_BASE _AC(0xa0000000, UL) 31*23ff8633SDaniel Schwierzeck #endif 32*23ff8633SDaniel Schwierzeck 33*23ff8633SDaniel Schwierzeck #ifndef MAP_BASE 34*23ff8633SDaniel Schwierzeck #ifdef CONFIG_KVM_GUEST 35*23ff8633SDaniel Schwierzeck #define MAP_BASE _AC(0x60000000, UL) 36*23ff8633SDaniel Schwierzeck #else 37*23ff8633SDaniel Schwierzeck #define MAP_BASE _AC(0xc0000000, UL) 38*23ff8633SDaniel Schwierzeck #endif 39*23ff8633SDaniel Schwierzeck #endif 40*23ff8633SDaniel Schwierzeck 41*23ff8633SDaniel Schwierzeck /* 42*23ff8633SDaniel Schwierzeck * Memory above this physical address will be considered highmem. 43*23ff8633SDaniel Schwierzeck */ 44*23ff8633SDaniel Schwierzeck #ifndef HIGHMEM_START 45*23ff8633SDaniel Schwierzeck #define HIGHMEM_START _AC(0x20000000, UL) 46*23ff8633SDaniel Schwierzeck #endif 47*23ff8633SDaniel Schwierzeck 48*23ff8633SDaniel Schwierzeck #endif /* CONFIG_32BIT */ 49*23ff8633SDaniel Schwierzeck 50*23ff8633SDaniel Schwierzeck #ifdef CONFIG_64BIT 51*23ff8633SDaniel Schwierzeck 52*23ff8633SDaniel Schwierzeck #ifndef CAC_BASE 53*23ff8633SDaniel Schwierzeck #ifdef CONFIG_DMA_NONCOHERENT 54*23ff8633SDaniel Schwierzeck #define CAC_BASE _AC(0x9800000000000000, UL) 55*23ff8633SDaniel Schwierzeck #else 56*23ff8633SDaniel Schwierzeck #define CAC_BASE _AC(0xa800000000000000, UL) 57*23ff8633SDaniel Schwierzeck #endif 58*23ff8633SDaniel Schwierzeck #endif 59*23ff8633SDaniel Schwierzeck 60*23ff8633SDaniel Schwierzeck #ifndef IO_BASE 61*23ff8633SDaniel Schwierzeck #define IO_BASE _AC(0x9000000000000000, UL) 62*23ff8633SDaniel Schwierzeck #endif 63*23ff8633SDaniel Schwierzeck 64*23ff8633SDaniel Schwierzeck #ifndef UNCAC_BASE 65*23ff8633SDaniel Schwierzeck #define UNCAC_BASE _AC(0x9000000000000000, UL) 66*23ff8633SDaniel Schwierzeck #endif 67*23ff8633SDaniel Schwierzeck 68*23ff8633SDaniel Schwierzeck #ifndef MAP_BASE 69*23ff8633SDaniel Schwierzeck #define MAP_BASE _AC(0xc000000000000000, UL) 70*23ff8633SDaniel Schwierzeck #endif 71*23ff8633SDaniel Schwierzeck 72*23ff8633SDaniel Schwierzeck /* 73*23ff8633SDaniel Schwierzeck * Memory above this physical address will be considered highmem. 74*23ff8633SDaniel Schwierzeck * Fixme: 59 bits is a fictive number and makes assumptions about processors 75*23ff8633SDaniel Schwierzeck * in the distant future. Nobody will care for a few years :-) 76*23ff8633SDaniel Schwierzeck */ 77*23ff8633SDaniel Schwierzeck #ifndef HIGHMEM_START 78*23ff8633SDaniel Schwierzeck #define HIGHMEM_START (_AC(1, UL) << _AC(59, UL)) 79*23ff8633SDaniel Schwierzeck #endif 80*23ff8633SDaniel Schwierzeck 81*23ff8633SDaniel Schwierzeck #define TO_PHYS(x) ( ((x) & TO_PHYS_MASK)) 82*23ff8633SDaniel Schwierzeck #define TO_CAC(x) (CAC_BASE | ((x) & TO_PHYS_MASK)) 83*23ff8633SDaniel Schwierzeck #define TO_UNCAC(x) (UNCAC_BASE | ((x) & TO_PHYS_MASK)) 84*23ff8633SDaniel Schwierzeck 85*23ff8633SDaniel Schwierzeck #endif /* CONFIG_64BIT */ 86*23ff8633SDaniel Schwierzeck 87*23ff8633SDaniel Schwierzeck /* 88*23ff8633SDaniel Schwierzeck * This handles the memory map. 89*23ff8633SDaniel Schwierzeck */ 90*23ff8633SDaniel Schwierzeck #ifndef PAGE_OFFSET 91*23ff8633SDaniel Schwierzeck #define PAGE_OFFSET (CAC_BASE + PHYS_OFFSET) 92*23ff8633SDaniel Schwierzeck #endif 93*23ff8633SDaniel Schwierzeck 94*23ff8633SDaniel Schwierzeck #ifndef FIXADDR_TOP 95*23ff8633SDaniel Schwierzeck #ifdef CONFIG_KVM_GUEST 96*23ff8633SDaniel Schwierzeck #define FIXADDR_TOP ((unsigned long)(long)(int)0x7ffe0000) 97*23ff8633SDaniel Schwierzeck #else 98*23ff8633SDaniel Schwierzeck #define FIXADDR_TOP ((unsigned long)(long)(int)0xfffe0000) 99*23ff8633SDaniel Schwierzeck #endif 100*23ff8633SDaniel Schwierzeck #endif 101*23ff8633SDaniel Schwierzeck 102*23ff8633SDaniel Schwierzeck #endif /* __ASM_MACH_GENERIC_SPACES_H */ 103