1/*
2 *  linux/include/asm-arm/arch-ebsa285/memory.h
3 *
4 *  Copyright (C) 1996-1999 Russell King.
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 *
10 *  Changelog:
11 *   20-Oct-1996 RMK	Created
12 *   31-Dec-1997 RMK	Fixed definitions to reduce warnings.
13 *   17-May-1998 DAG	Added __virt_to_bus and __bus_to_virt functions.
14 *   21-Nov-1998 RMK	Changed __virt_to_bus and __bus_to_virt to macros.
15 *   21-Mar-1999 RMK	Added PAGE_OFFSET for co285 architecture.
16 *			Renamed to memory.h
17 *			Moved PAGE_OFFSET and TASK_SIZE here
18 */
19#ifndef __ASM_ARCH_MMU_H
20#define __ASM_ARCH_MMU_H
21
22#include <linux/config.h>
23
24#if defined(CONFIG_FOOTBRIDGE_ADDIN)
25/*
26 * If we may be using add-in footbridge mode, then we must
27 * use the out-of-line translation that makes use of the
28 * PCI BAR
29 */
30#ifndef __ASSEMBLY__
31extern unsigned long __virt_to_bus(unsigned long);
32extern unsigned long __bus_to_virt(unsigned long);
33#endif
34
35#elif defined(CONFIG_FOOTBRIDGE_HOST)
36
37#define __virt_to_bus__is_a_macro
38#define __virt_to_bus(x)	((x) - 0xe0000000)
39#define __bus_to_virt__is_a_macro
40#define __bus_to_virt(x)	((x) + 0xe0000000)
41
42#else
43
44#error "Undefined footbridge mode"
45
46#endif
47
48#if defined(CONFIG_ARCH_FOOTBRIDGE)
49
50/* Task size and page offset at 3GB */
51#define TASK_SIZE		(0xc0000000UL)
52#define PAGE_OFFSET		(0xc0000000UL)
53
54#elif defined(CONFIG_ARCH_CO285)
55
56/* Task size and page offset at 1.5GB */
57#define TASK_SIZE		(0x60000000UL)
58#define PAGE_OFFSET		(0x60000000UL)
59
60#else
61
62#error "Undefined footbridge architecture"
63
64#endif
65
66#define TASK_SIZE_26		(0x04000000UL)
67#define PHYS_OFFSET		(0x00000000UL)
68
69/*
70 * This decides where the kernel will search for a free chunk of vm
71 * space during mmap's.
72 */
73#define TASK_UNMAPPED_BASE (TASK_SIZE / 3)
74
75/*
76 * The DRAM is always contiguous.
77 */
78#define __virt_to_phys__is_a_macro
79#define __virt_to_phys(vpage) ((unsigned long)(vpage) - PAGE_OFFSET)
80#define __phys_to_virt__is_a_macro
81#define __phys_to_virt(ppage) ((unsigned long)(ppage) + PAGE_OFFSET)
82
83#define PHYS_TO_NID(addr)	(0)
84
85#endif
86