diff options
Diffstat (limited to 'include/asm-arm/memory.h')
-rw-r--r-- | include/asm-arm/memory.h | 81 |
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 | /* |