diff options
Diffstat (limited to 'arch/arm/include/asm/memory.h')
| -rw-r--r-- | arch/arm/include/asm/memory.h | 40 |
1 files changed, 22 insertions, 18 deletions
diff --git a/arch/arm/include/asm/memory.h b/arch/arm/include/asm/memory.h index 4dd21457ef9d..6976b03e5213 100644 --- a/arch/arm/include/asm/memory.h +++ b/arch/arm/include/asm/memory.h | |||
| @@ -100,23 +100,19 @@ | |||
| 100 | #define TASK_UNMAPPED_BASE UL(0x00000000) | 100 | #define TASK_UNMAPPED_BASE UL(0x00000000) |
| 101 | #endif | 101 | #endif |
| 102 | 102 | ||
| 103 | #ifndef PHYS_OFFSET | ||
| 104 | #define PHYS_OFFSET UL(CONFIG_DRAM_BASE) | ||
| 105 | #endif | ||
| 106 | |||
| 107 | #ifndef END_MEM | 103 | #ifndef END_MEM |
| 108 | #define END_MEM (UL(CONFIG_DRAM_BASE) + CONFIG_DRAM_SIZE) | 104 | #define END_MEM (UL(CONFIG_DRAM_BASE) + CONFIG_DRAM_SIZE) |
| 109 | #endif | 105 | #endif |
| 110 | 106 | ||
| 111 | #ifndef PAGE_OFFSET | 107 | #ifndef PAGE_OFFSET |
| 112 | #define PAGE_OFFSET (PHYS_OFFSET) | 108 | #define PAGE_OFFSET PLAT_PHYS_OFFSET |
| 113 | #endif | 109 | #endif |
| 114 | 110 | ||
| 115 | /* | 111 | /* |
| 116 | * The module can be at any place in ram in nommu mode. | 112 | * The module can be at any place in ram in nommu mode. |
| 117 | */ | 113 | */ |
| 118 | #define MODULES_END (END_MEM) | 114 | #define MODULES_END (END_MEM) |
| 119 | #define MODULES_VADDR (PHYS_OFFSET) | 115 | #define MODULES_VADDR PAGE_OFFSET |
| 120 | 116 | ||
| 121 | #define XIP_VIRT_ADDR(physaddr) (physaddr) | 117 | #define XIP_VIRT_ADDR(physaddr) (physaddr) |
| 122 | 118 | ||
| @@ -157,6 +153,16 @@ | |||
| 157 | #endif | 153 | #endif |
| 158 | #define ARCH_PGD_MASK ((1 << ARCH_PGD_SHIFT) - 1) | 154 | #define ARCH_PGD_MASK ((1 << ARCH_PGD_SHIFT) - 1) |
| 159 | 155 | ||
| 156 | /* | ||
| 157 | * PLAT_PHYS_OFFSET is the offset (from zero) of the start of physical | ||
| 158 | * memory. This is used for XIP and NoMMU kernels, or by kernels which | ||
| 159 | * have their own mach/memory.h. Assembly code must always use | ||
| 160 | * PLAT_PHYS_OFFSET and not PHYS_OFFSET. | ||
| 161 | */ | ||
| 162 | #ifndef PLAT_PHYS_OFFSET | ||
| 163 | #define PLAT_PHYS_OFFSET UL(CONFIG_PHYS_OFFSET) | ||
| 164 | #endif | ||
| 165 | |||
| 160 | #ifndef __ASSEMBLY__ | 166 | #ifndef __ASSEMBLY__ |
| 161 | 167 | ||
| 162 | /* | 168 | /* |
| @@ -226,12 +232,21 @@ static inline phys_addr_t __virt_to_phys(unsigned long x) | |||
| 226 | static inline unsigned long __phys_to_virt(phys_addr_t x) | 232 | static inline unsigned long __phys_to_virt(phys_addr_t x) |
| 227 | { | 233 | { |
| 228 | unsigned long t; | 234 | unsigned long t; |
| 229 | __pv_stub(x, t, "sub", __PV_BITS_31_24); | 235 | |
| 236 | /* | ||
| 237 | * 'unsigned long' cast discard upper word when | ||
| 238 | * phys_addr_t is 64 bit, and makes sure that inline | ||
| 239 | * assembler expression receives 32 bit argument | ||
| 240 | * in place where 'r' 32 bit operand is expected. | ||
| 241 | */ | ||
| 242 | __pv_stub((unsigned long) x, t, "sub", __PV_BITS_31_24); | ||
| 230 | return t; | 243 | return t; |
| 231 | } | 244 | } |
| 232 | 245 | ||
| 233 | #else | 246 | #else |
| 234 | 247 | ||
| 248 | #define PHYS_OFFSET PLAT_PHYS_OFFSET | ||
| 249 | |||
| 235 | static inline phys_addr_t __virt_to_phys(unsigned long x) | 250 | static inline phys_addr_t __virt_to_phys(unsigned long x) |
| 236 | { | 251 | { |
| 237 | return (phys_addr_t)x - PAGE_OFFSET + PHYS_OFFSET; | 252 | return (phys_addr_t)x - PAGE_OFFSET + PHYS_OFFSET; |
| @@ -244,17 +259,6 @@ static inline unsigned long __phys_to_virt(phys_addr_t x) | |||
| 244 | 259 | ||
| 245 | #endif | 260 | #endif |
| 246 | #endif | 261 | #endif |
| 247 | #endif /* __ASSEMBLY__ */ | ||
| 248 | |||
| 249 | #ifndef PHYS_OFFSET | ||
| 250 | #ifdef PLAT_PHYS_OFFSET | ||
| 251 | #define PHYS_OFFSET PLAT_PHYS_OFFSET | ||
| 252 | #else | ||
| 253 | #define PHYS_OFFSET UL(CONFIG_PHYS_OFFSET) | ||
| 254 | #endif | ||
| 255 | #endif | ||
| 256 | |||
| 257 | #ifndef __ASSEMBLY__ | ||
| 258 | 262 | ||
| 259 | /* | 263 | /* |
| 260 | * PFNs are used to describe any physical page; this means | 264 | * PFNs are used to describe any physical page; this means |
