aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-arm/memory.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/asm-arm/memory.h')
-rw-r--r--include/asm-arm/memory.h81
1 files changed, 62 insertions, 19 deletions
diff --git a/include/asm-arm/memory.h b/include/asm-arm/memory.h
index 209289407595..91d536c215d7 100644
--- a/include/asm-arm/memory.h
+++ b/include/asm-arm/memory.h
@@ -2,6 +2,7 @@
2 * linux/include/asm-arm/memory.h 2 * linux/include/asm-arm/memory.h
3 * 3 *
4 * Copyright (C) 2000-2002 Russell King 4 * Copyright (C) 2000-2002 Russell King
5 * modification for nommu, Hyok S. Choi, 2004
5 * 6 *
6 * This program is free software; you can redistribute it and/or modify 7 * 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 * it under the terms of the GNU General Public License version 2 as
@@ -22,11 +23,12 @@
22#define UL(x) (x) 23#define UL(x) (x)
23#endif 24#endif
24 25
25#include <linux/config.h>
26#include <linux/compiler.h> 26#include <linux/compiler.h>
27#include <asm/arch/memory.h> 27#include <asm/arch/memory.h>
28#include <asm/sizes.h> 28#include <asm/sizes.h>
29 29
30#ifdef CONFIG_MMU
31
30#ifndef TASK_SIZE 32#ifndef TASK_SIZE
31/* 33/*
32 * TASK_SIZE - the maximum size of a user space task. 34 * TASK_SIZE - the maximum size of a user space task.
@@ -49,6 +51,65 @@
49#endif 51#endif
50 52
51/* 53/*
54 * The module space lives between the addresses given by TASK_SIZE
55 * and PAGE_OFFSET - it must be within 32MB of the kernel text.
56 */
57#define MODULE_END (PAGE_OFFSET)
58#define MODULE_START (MODULE_END - 16*1048576)
59
60#if TASK_SIZE > MODULE_START
61#error Top of user space clashes with start of module space
62#endif
63
64/*
65 * The XIP kernel gets mapped at the bottom of the module vm area.
66 * Since we use sections to map it, this macro replaces the physical address
67 * with its virtual address while keeping offset from the base section.
68 */
69#define XIP_VIRT_ADDR(physaddr) (MODULE_START + ((physaddr) & 0x000fffff))
70
71/*
72 * Allow 16MB-aligned ioremap pages
73 */
74#define IOREMAP_MAX_ORDER 24
75
76#else /* CONFIG_MMU */
77
78/*
79 * The limitation of user task size can grow up to the end of free ram region.
80 * It is difficult to define and perhaps will never meet the original meaning
81 * of this define that was meant to.
82 * Fortunately, there is no reference for this in noMMU mode, for now.
83 */
84#ifndef TASK_SIZE
85#define TASK_SIZE (CONFIG_DRAM_SIZE)
86#endif
87
88#ifndef TASK_UNMAPPED_BASE
89#define TASK_UNMAPPED_BASE UL(0x00000000)
90#endif
91
92#ifndef PHYS_OFFSET
93#define PHYS_OFFSET (CONFIG_DRAM_BASE)
94#endif
95
96#ifndef END_MEM
97#define END_MEM (CONFIG_DRAM_BASE + CONFIG_DRAM_SIZE)
98#endif
99
100#ifndef PAGE_OFFSET
101#define PAGE_OFFSET (PHYS_OFFSET)
102#endif
103
104/*
105 * The module can be at any place in ram in nommu mode.
106 */
107#define MODULE_END (END_MEM)
108#define MODULE_START (PHYS_OFFSET)
109
110#endif /* !CONFIG_MMU */
111
112/*
52 * Size of DMA-consistent memory region. Must be multiple of 2M, 113 * Size of DMA-consistent memory region. Must be multiple of 2M,
53 * between 2MB and 14MB inclusive. 114 * between 2MB and 14MB inclusive.
54 */ 115 */
@@ -72,24 +133,6 @@
72#define __phys_to_pfn(paddr) ((paddr) >> PAGE_SHIFT) 133#define __phys_to_pfn(paddr) ((paddr) >> PAGE_SHIFT)
73#define __pfn_to_phys(pfn) ((pfn) << PAGE_SHIFT) 134#define __pfn_to_phys(pfn) ((pfn) << PAGE_SHIFT)
74 135
75/*
76 * The module space lives between the addresses given by TASK_SIZE
77 * and PAGE_OFFSET - it must be within 32MB of the kernel text.
78 */
79#define MODULE_END (PAGE_OFFSET)
80#define MODULE_START (MODULE_END - 16*1048576)
81
82#if TASK_SIZE > MODULE_START
83#error Top of user space clashes with start of module space
84#endif
85
86/*
87 * The XIP kernel gets mapped at the bottom of the module vm area.
88 * Since we use sections to map it, this macro replaces the physical address
89 * with its virtual address while keeping offset from the base section.
90 */
91#define XIP_VIRT_ADDR(physaddr) (MODULE_START + ((physaddr) & 0x000fffff))
92
93#ifndef __ASSEMBLY__ 136#ifndef __ASSEMBLY__
94 137
95/* 138/*