1/* 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 13#include <linux/const.h> 14 15/* 16 * This gives the physical RAM offset. 17 */ 18#ifndef PHYS_OFFSET 19#define PHYS_OFFSET _AC(0, UL) 20#endif 21 22#ifdef CONFIG_32BIT 23 24#define CAC_BASE _AC(0x80000000, UL) 25#define IO_BASE _AC(0xa0000000, UL) 26#define UNCAC_BASE _AC(0xa0000000, UL) 27 28#ifndef MAP_BASE 29#define MAP_BASE _AC(0xc0000000, UL) 30#endif 31 32/* 33 * Memory above this physical address will be considered highmem. 34 */ 35#ifndef HIGHMEM_START 36#define HIGHMEM_START _AC(0x20000000, UL) 37#endif 38 39#endif /* CONFIG_32BIT */ 40 41#ifdef CONFIG_64BIT 42 43#ifndef CAC_BASE 44#ifdef CONFIG_DMA_NONCOHERENT 45#define CAC_BASE _AC(0x9800000000000000, UL) 46#else 47#define CAC_BASE _AC(0xa800000000000000, UL) 48#endif 49#endif 50 51#ifndef IO_BASE 52#define IO_BASE _AC(0x9000000000000000, UL) 53#endif 54 55#ifndef UNCAC_BASE 56#define UNCAC_BASE _AC(0x9000000000000000, UL) 57#endif 58 59#ifndef MAP_BASE 60#define MAP_BASE _AC(0xc000000000000000, UL) 61#endif 62 63#ifndef HIGHMEM_START 64#define HIGHMEM_START (_AC(1, UL) << _AC(59, UL)) 65#endif 66 67#define TO_PHYS(x) ( ((x) & TO_PHYS_MASK)) 68#define TO_CAC(x) (CAC_BASE | ((x) & TO_PHYS_MASK)) 69#define TO_UNCAC(x) (UNCAC_BASE | ((x) & TO_PHYS_MASK)) 70 71#endif /* CONFIG_64BIT */ 72 73/* 74 * This handles the memory map. 75 */ 76#ifndef PAGE_OFFSET 77#define PAGE_OFFSET (CAC_BASE + PHYS_OFFSET) 78#endif 79 80#endif /* __ASM_MACH_GENERIC_SPACES_H */ 81