xref: /openbmc/u-boot/arch/mips/include/asm/mach-generic/spaces.h (revision a3e1653ddeb02f39481eba572275016171e9670c)
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