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