183d290c5STom Rini /* SPDX-License-Identifier: GPL-2.0 */ 223ff8633SDaniel Schwierzeck /* 323ff8633SDaniel Schwierzeck * Copyright (C) 1994 - 1999, 2000, 03, 04 Ralf Baechle 423ff8633SDaniel Schwierzeck * Copyright (C) 2000, 2002 Maciej W. Rozycki 523ff8633SDaniel Schwierzeck * Copyright (C) 1990, 1999, 2000 Silicon Graphics, Inc. 623ff8633SDaniel Schwierzeck */ 723ff8633SDaniel Schwierzeck #ifndef _ASM_MACH_GENERIC_SPACES_H 823ff8633SDaniel Schwierzeck #define _ASM_MACH_GENERIC_SPACES_H 923ff8633SDaniel Schwierzeck 10*5c8fd32bSBaruch Siach #include <linux/const.h> 1123ff8633SDaniel Schwierzeck 1223ff8633SDaniel Schwierzeck /* 1323ff8633SDaniel Schwierzeck * This gives the physical RAM offset. 1423ff8633SDaniel Schwierzeck */ 1523ff8633SDaniel Schwierzeck #ifndef PHYS_OFFSET 1623ff8633SDaniel Schwierzeck #define PHYS_OFFSET _AC(0, UL) 1723ff8633SDaniel Schwierzeck #endif 1823ff8633SDaniel Schwierzeck 1923ff8633SDaniel Schwierzeck #ifdef CONFIG_32BIT 2023ff8633SDaniel Schwierzeck #ifdef CONFIG_KVM_GUEST 2123ff8633SDaniel Schwierzeck #define CAC_BASE _AC(0x40000000, UL) 2223ff8633SDaniel Schwierzeck #else 2323ff8633SDaniel Schwierzeck #define CAC_BASE _AC(0x80000000, UL) 2423ff8633SDaniel Schwierzeck #endif 2523ff8633SDaniel Schwierzeck #ifndef IO_BASE 2623ff8633SDaniel Schwierzeck #define IO_BASE _AC(0xa0000000, UL) 2723ff8633SDaniel Schwierzeck #endif 2823ff8633SDaniel Schwierzeck #ifndef UNCAC_BASE 2923ff8633SDaniel Schwierzeck #define UNCAC_BASE _AC(0xa0000000, UL) 3023ff8633SDaniel Schwierzeck #endif 3123ff8633SDaniel Schwierzeck 3223ff8633SDaniel Schwierzeck #ifndef MAP_BASE 3323ff8633SDaniel Schwierzeck #ifdef CONFIG_KVM_GUEST 3423ff8633SDaniel Schwierzeck #define MAP_BASE _AC(0x60000000, UL) 3523ff8633SDaniel Schwierzeck #else 3623ff8633SDaniel Schwierzeck #define MAP_BASE _AC(0xc0000000, UL) 3723ff8633SDaniel Schwierzeck #endif 3823ff8633SDaniel Schwierzeck #endif 3923ff8633SDaniel Schwierzeck 4023ff8633SDaniel Schwierzeck /* 4123ff8633SDaniel Schwierzeck * Memory above this physical address will be considered highmem. 4223ff8633SDaniel Schwierzeck */ 4323ff8633SDaniel Schwierzeck #ifndef HIGHMEM_START 4423ff8633SDaniel Schwierzeck #define HIGHMEM_START _AC(0x20000000, UL) 4523ff8633SDaniel Schwierzeck #endif 4623ff8633SDaniel Schwierzeck 4723ff8633SDaniel Schwierzeck #endif /* CONFIG_32BIT */ 4823ff8633SDaniel Schwierzeck 4923ff8633SDaniel Schwierzeck #ifdef CONFIG_64BIT 5023ff8633SDaniel Schwierzeck 5123ff8633SDaniel Schwierzeck #ifndef CAC_BASE 5223ff8633SDaniel Schwierzeck #ifdef CONFIG_DMA_NONCOHERENT 5323ff8633SDaniel Schwierzeck #define CAC_BASE _AC(0x9800000000000000, UL) 5423ff8633SDaniel Schwierzeck #else 5523ff8633SDaniel Schwierzeck #define CAC_BASE _AC(0xa800000000000000, UL) 5623ff8633SDaniel Schwierzeck #endif 5723ff8633SDaniel Schwierzeck #endif 5823ff8633SDaniel Schwierzeck 5923ff8633SDaniel Schwierzeck #ifndef IO_BASE 6023ff8633SDaniel Schwierzeck #define IO_BASE _AC(0x9000000000000000, UL) 6123ff8633SDaniel Schwierzeck #endif 6223ff8633SDaniel Schwierzeck 6323ff8633SDaniel Schwierzeck #ifndef UNCAC_BASE 6423ff8633SDaniel Schwierzeck #define UNCAC_BASE _AC(0x9000000000000000, UL) 6523ff8633SDaniel Schwierzeck #endif 6623ff8633SDaniel Schwierzeck 6723ff8633SDaniel Schwierzeck #ifndef MAP_BASE 6823ff8633SDaniel Schwierzeck #define MAP_BASE _AC(0xc000000000000000, UL) 6923ff8633SDaniel Schwierzeck #endif 7023ff8633SDaniel Schwierzeck 7123ff8633SDaniel Schwierzeck /* 7223ff8633SDaniel Schwierzeck * Memory above this physical address will be considered highmem. 7323ff8633SDaniel Schwierzeck * Fixme: 59 bits is a fictive number and makes assumptions about processors 7423ff8633SDaniel Schwierzeck * in the distant future. Nobody will care for a few years :-) 7523ff8633SDaniel Schwierzeck */ 7623ff8633SDaniel Schwierzeck #ifndef HIGHMEM_START 7723ff8633SDaniel Schwierzeck #define HIGHMEM_START (_AC(1, UL) << _AC(59, UL)) 7823ff8633SDaniel Schwierzeck #endif 7923ff8633SDaniel Schwierzeck 8023ff8633SDaniel Schwierzeck #define TO_PHYS(x) ( ((x) & TO_PHYS_MASK)) 8123ff8633SDaniel Schwierzeck #define TO_CAC(x) (CAC_BASE | ((x) & TO_PHYS_MASK)) 8223ff8633SDaniel Schwierzeck #define TO_UNCAC(x) (UNCAC_BASE | ((x) & TO_PHYS_MASK)) 8323ff8633SDaniel Schwierzeck 8423ff8633SDaniel Schwierzeck #endif /* CONFIG_64BIT */ 8523ff8633SDaniel Schwierzeck 8623ff8633SDaniel Schwierzeck /* 8723ff8633SDaniel Schwierzeck * This handles the memory map. 8823ff8633SDaniel Schwierzeck */ 8923ff8633SDaniel Schwierzeck #ifndef PAGE_OFFSET 9023ff8633SDaniel Schwierzeck #define PAGE_OFFSET (CAC_BASE + PHYS_OFFSET) 9123ff8633SDaniel Schwierzeck #endif 9223ff8633SDaniel Schwierzeck 9323ff8633SDaniel Schwierzeck #ifndef FIXADDR_TOP 9423ff8633SDaniel Schwierzeck #ifdef CONFIG_KVM_GUEST 9523ff8633SDaniel Schwierzeck #define FIXADDR_TOP ((unsigned long)(long)(int)0x7ffe0000) 9623ff8633SDaniel Schwierzeck #else 9723ff8633SDaniel Schwierzeck #define FIXADDR_TOP ((unsigned long)(long)(int)0xfffe0000) 9823ff8633SDaniel Schwierzeck #endif 9923ff8633SDaniel Schwierzeck #endif 10023ff8633SDaniel Schwierzeck 10123ff8633SDaniel Schwierzeck #endif /* __ASM_MACH_GENERIC_SPACES_H */ 102