blob: 539d0a566d5264dd0350070b27f6ec6e1cd32d36 [file] [log] [blame]
Tom Rini10e47792018-05-06 17:58:06 -04001/* SPDX-License-Identifier: GPL-2.0 */
Daniel Schwierzeckb01d3e12016-01-12 21:48:25 +01002/*
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.
Daniel Schwierzeckb01d3e12016-01-12 21:48:25 +01006 */
7#ifndef _ASM_MACH_GENERIC_SPACES_H
8#define _ASM_MACH_GENERIC_SPACES_H
9
Baruch Siach401885a2018-11-11 12:31:01 +020010#include <linux/const.h>
Daniel Schwierzeckb01d3e12016-01-12 21:48:25 +010011
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 */