aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorStuart Menefy <stuart.menefy@st.com>2008-09-05 03:14:17 -0400
committerPaul Mundt <lethal@linux-sh.org>2008-09-07 21:35:04 -0400
commit28d6e52cf7e881834d2dab370afa20b6223f726c (patch)
tree26215385a326b53c864442735480d65b4e699aa5 /arch
parentc6feb6142cb85228e73497a309f475a0d7279318 (diff)
sh: Fix up broken 32-bit initrd support.
Signed-off-by: Stuart Menefy <stuart.menefy@st.com> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/sh/kernel/setup.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/arch/sh/kernel/setup.c b/arch/sh/kernel/setup.c
index 6d0899e890d0..fc7171a9c804 100644
--- a/arch/sh/kernel/setup.c
+++ b/arch/sh/kernel/setup.c
@@ -249,17 +249,18 @@ void __init setup_bootmem_allocator(unsigned long free_pfn)
249 ROOT_DEV = Root_RAM0; 249 ROOT_DEV = Root_RAM0;
250 250
251 if (LOADER_TYPE && INITRD_START) { 251 if (LOADER_TYPE && INITRD_START) {
252 if (INITRD_START + INITRD_SIZE <= (max_low_pfn << PAGE_SHIFT)) { 252 unsigned long initrd_start_phys = INITRD_START + __MEMORY_START;
253 reserve_bootmem(INITRD_START + __MEMORY_START, 253
254 INITRD_SIZE, BOOTMEM_DEFAULT); 254 if (initrd_start_phys + INITRD_SIZE <= PFN_PHYS(max_low_pfn)) {
255 initrd_start = INITRD_START + PAGE_OFFSET + 255 reserve_bootmem(initrd_start_phys, INITRD_SIZE,
256 __MEMORY_START; 256 BOOTMEM_DEFAULT);
257 initrd_start = (unsigned long)__va(initrd_start_phys);
257 initrd_end = initrd_start + INITRD_SIZE; 258 initrd_end = initrd_start + INITRD_SIZE;
258 } else { 259 } else {
259 printk("initrd extends beyond end of memory " 260 printk("initrd extends beyond end of memory "
260 "(0x%08lx > 0x%08lx)\ndisabling initrd\n", 261 "(0x%08lx > 0x%08lx)\ndisabling initrd\n",
261 INITRD_START + INITRD_SIZE, 262 initrd_start_phys + INITRD_SIZE,
262 max_low_pfn << PAGE_SHIFT); 263 PFN_PHYS(max_low_pfn));
263 initrd_start = 0; 264 initrd_start = 0;
264 } 265 }
265 } 266 }