diff options
Diffstat (limited to 'include/asm-arm/memory.h')
| -rw-r--r-- | include/asm-arm/memory.h | 80 |
1 files changed, 62 insertions, 18 deletions
diff --git a/include/asm-arm/memory.h b/include/asm-arm/memory.h index 731e321a57d1..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 |
| @@ -26,6 +27,8 @@ | |||
| 26 | #include <asm/arch/memory.h> | 27 | #include <asm/arch/memory.h> |
| 27 | #include <asm/sizes.h> | 28 | #include <asm/sizes.h> |
| 28 | 29 | ||
| 30 | #ifdef CONFIG_MMU | ||
| 31 | |||
| 29 | #ifndef TASK_SIZE | 32 | #ifndef TASK_SIZE |
| 30 | /* | 33 | /* |
| 31 | * TASK_SIZE - the maximum size of a user space task. | 34 | * TASK_SIZE - the maximum size of a user space task. |
| @@ -48,6 +51,65 @@ | |||
| 48 | #endif | 51 | #endif |
| 49 | 52 | ||
| 50 | /* | 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 | /* | ||
| 51 | * Size of DMA-consistent memory region. Must be multiple of 2M, | 113 | * Size of DMA-consistent memory region. Must be multiple of 2M, |
| 52 | * between 2MB and 14MB inclusive. | 114 | * between 2MB and 14MB inclusive. |
| 53 | */ | 115 | */ |
| @@ -71,24 +133,6 @@ | |||
| 71 | #define __phys_to_pfn(paddr) ((paddr) >> PAGE_SHIFT) | 133 | #define __phys_to_pfn(paddr) ((paddr) >> PAGE_SHIFT) |
| 72 | #define __pfn_to_phys(pfn) ((pfn) << PAGE_SHIFT) | 134 | #define __pfn_to_phys(pfn) ((pfn) << PAGE_SHIFT) |
| 73 | 135 | ||
| 74 | /* | ||
| 75 | * The module space lives between the addresses given by TASK_SIZE | ||
| 76 | * and PAGE_OFFSET - it must be within 32MB of the kernel text. | ||
| 77 | */ | ||
| 78 | #define MODULE_END (PAGE_OFFSET) | ||
| 79 | #define MODULE_START (MODULE_END - 16*1048576) | ||
| 80 | |||
| 81 | #if TASK_SIZE > MODULE_START | ||
| 82 | #error Top of user space clashes with start of module space | ||
| 83 | #endif | ||
| 84 | |||
| 85 | /* | ||
| 86 | * The XIP kernel gets mapped at the bottom of the module vm area. | ||
| 87 | * Since we use sections to map it, this macro replaces the physical address | ||
| 88 | * with its virtual address while keeping offset from the base section. | ||
| 89 | */ | ||
| 90 | #define XIP_VIRT_ADDR(physaddr) (MODULE_START + ((physaddr) & 0x000fffff)) | ||
| 91 | |||
| 92 | #ifndef __ASSEMBLY__ | 136 | #ifndef __ASSEMBLY__ |
| 93 | 137 | ||
| 94 | /* | 138 | /* |
