blob: 9a3c521047b83a0c90f23f8f68b3e7abadac407d [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/*
2 * This file is subject to the terms and conditions of the GNU General Public
3 * License. See the file "COPYING" in the main directory of this archive
4 * for more details.
5 *
6 * Copyright (C) 1994 - 1999, 2000, 03, 04 Ralf Baechle
7 * Copyright (C) 2000, 2002 Maciej W. Rozycki
8 * Copyright (C) 1990, 1999, 2000 Silicon Graphics, Inc.
9 */
10#ifndef _ASM_MACH_GENERIC_SPACES_H
11#define _ASM_MACH_GENERIC_SPACES_H
12
Linus Torvalds1da177e2005-04-16 15:20:36 -070013
Ralf Baechle875d43e2005-09-03 15:56:16 -070014#ifdef CONFIG_32BIT
Linus Torvalds1da177e2005-04-16 15:20:36 -070015
16#define CAC_BASE 0x80000000
17#define IO_BASE 0xa0000000
18#define UNCAC_BASE 0xa0000000
Franck Bui-Huu09bb9ce2007-06-04 17:46:31 +020019
20#ifndef MAP_BASE
Linus Torvalds1da177e2005-04-16 15:20:36 -070021#define MAP_BASE 0xc0000000
Franck Bui-Huu09bb9ce2007-06-04 17:46:31 +020022#endif
Linus Torvalds1da177e2005-04-16 15:20:36 -070023
24/*
25 * This handles the memory map.
26 * We handle pages at KSEG0 for kernels with 32 bit address space.
27 */
Franck Bui-Huu09bb9ce2007-06-04 17:46:31 +020028#ifndef PAGE_OFFSET
Linus Torvalds1da177e2005-04-16 15:20:36 -070029#define PAGE_OFFSET 0x80000000UL
Franck Bui-Huu09bb9ce2007-06-04 17:46:31 +020030#endif
Linus Torvalds1da177e2005-04-16 15:20:36 -070031
32/*
33 * Memory above this physical address will be considered highmem.
34 */
35#ifndef HIGHMEM_START
36#define HIGHMEM_START 0x20000000UL
37#endif
38
Ralf Baechle875d43e2005-09-03 15:56:16 -070039#endif /* CONFIG_32BIT */
Linus Torvalds1da177e2005-04-16 15:20:36 -070040
Ralf Baechle875d43e2005-09-03 15:56:16 -070041#ifdef CONFIG_64BIT
Linus Torvalds1da177e2005-04-16 15:20:36 -070042
43/*
44 * This handles the memory map.
45 */
Franck Bui-Huu09bb9ce2007-06-04 17:46:31 +020046#ifndef PAGE_OFFSET
Linus Torvalds1da177e2005-04-16 15:20:36 -070047#ifdef CONFIG_DMA_NONCOHERENT
48#define PAGE_OFFSET 0x9800000000000000UL
49#else
50#define PAGE_OFFSET 0xa800000000000000UL
51#endif
Franck Bui-Huu09bb9ce2007-06-04 17:46:31 +020052#endif
Linus Torvalds1da177e2005-04-16 15:20:36 -070053
54/*
55 * Memory above this physical address will be considered highmem.
56 * Fixme: 59 bits is a fictive number and makes assumptions about processors
57 * in the distant future. Nobody will care for a few years :-)
58 */
59#ifndef HIGHMEM_START
60#define HIGHMEM_START (1UL << 59UL)
61#endif
62
Franck Bui-Huu09bb9ce2007-06-04 17:46:31 +020063#ifndef CAC_BASE
Linus Torvalds1da177e2005-04-16 15:20:36 -070064#ifdef CONFIG_DMA_NONCOHERENT
Ralf Baechle485a4a92005-10-19 14:45:09 +010065#define CAC_BASE 0x9800000000000000UL
Linus Torvalds1da177e2005-04-16 15:20:36 -070066#else
Ralf Baechle485a4a92005-10-19 14:45:09 +010067#define CAC_BASE 0xa800000000000000UL
Linus Torvalds1da177e2005-04-16 15:20:36 -070068#endif
Franck Bui-Huu09bb9ce2007-06-04 17:46:31 +020069#endif
70
71#ifndef IO_BASE
Ralf Baechle485a4a92005-10-19 14:45:09 +010072#define IO_BASE 0x9000000000000000UL
Franck Bui-Huu09bb9ce2007-06-04 17:46:31 +020073#endif
74
75#ifndef UNCAC_BASE
Ralf Baechle485a4a92005-10-19 14:45:09 +010076#define UNCAC_BASE 0x9000000000000000UL
Franck Bui-Huu09bb9ce2007-06-04 17:46:31 +020077#endif
78
79#ifndef MAP_BASE
Ralf Baechle485a4a92005-10-19 14:45:09 +010080#define MAP_BASE 0xc000000000000000UL
Franck Bui-Huu09bb9ce2007-06-04 17:46:31 +020081#endif
Linus Torvalds1da177e2005-04-16 15:20:36 -070082
83#define TO_PHYS(x) ( ((x) & TO_PHYS_MASK))
84#define TO_CAC(x) (CAC_BASE | ((x) & TO_PHYS_MASK))
85#define TO_UNCAC(x) (UNCAC_BASE | ((x) & TO_PHYS_MASK))
86
Ralf Baechle875d43e2005-09-03 15:56:16 -070087#endif /* CONFIG_64BIT */
Linus Torvalds1da177e2005-04-16 15:20:36 -070088
89#endif /* __ASM_MACH_GENERIC_SPACES_H */