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