xref: /rk3399_rockchip-uboot/arch/mips/include/asm/mach-generic/spaces.h (revision b57843e68804c2d53d2cff2b8b2238e37b388faa)
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