diff options
author | Stuart Menefy <stuart.menefy@st.com> | 2007-11-30 17:52:53 +0900 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2008-01-28 13:18:59 +0900 |
commit | d02b08f6e8b184ffef349e395210a5e82ff4f4bc (patch) | |
tree | 1dbec9fe6d2315a95855ce5a91f92a2a1fbf5a22 /arch/sh | |
parent | cbaa118ecfd99fc5ed7adbd9c34a30e1c05e3c93 (diff) | |
download | linux-stable-d02b08f6e8b184ffef349e395210a5e82ff4f4bc.tar.gz linux-stable-d02b08f6e8b184ffef349e395210a5e82ff4f4bc.tar.bz2 linux-stable-d02b08f6e8b184ffef349e395210a5e82ff4f4bc.zip |
sh: Clean up places that make 29-bit physical assumptions.
Signed-off-by: Stuart Menefy <stuart.menefy@st.com>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh')
-rw-r--r-- | arch/sh/boot/compressed/misc_32.c | 5 | ||||
-rw-r--r-- | arch/sh/kernel/setup.c | 4 | ||||
-rw-r--r-- | arch/sh/kernel/vmlinux_32.lds.S | 5 |
3 files changed, 11 insertions, 3 deletions
diff --git a/arch/sh/boot/compressed/misc_32.c b/arch/sh/boot/compressed/misc_32.c index df65e305acf7..adcea31e663e 100644 --- a/arch/sh/boot/compressed/misc_32.c +++ b/arch/sh/boot/compressed/misc_32.c @@ -230,7 +230,10 @@ long* stack_start = &user_stack[STACK_SIZE]; void decompress_kernel(void) { output_data = 0; - output_ptr = P2SEGADDR((unsigned long)&_text+PAGE_SIZE); + output_ptr = PHYSADDR((unsigned long)&_text+PAGE_SIZE); +#ifdef CONFIG_29BIT + output_ptr |= P2SEG; +#endif free_mem_ptr = (unsigned long)&_end; free_mem_end_ptr = free_mem_ptr + HEAP_SIZE; diff --git a/arch/sh/kernel/setup.c b/arch/sh/kernel/setup.c index 7eb7fdcce0f8..f48ce8e5d0a8 100644 --- a/arch/sh/kernel/setup.c +++ b/arch/sh/kernel/setup.c @@ -82,7 +82,7 @@ static int __init early_parse_mem(char *p) { unsigned long size; - memory_start = (unsigned long)PAGE_OFFSET+__MEMORY_START; + memory_start = (unsigned long)__va(__MEMORY_START); size = memparse(p, &p); if (size > __MEMORY_SIZE) { @@ -254,7 +254,7 @@ void __init setup_arch(char **cmdline_p) data_resource.start = virt_to_phys(_etext); data_resource.end = virt_to_phys(_edata)-1; - memory_start = (unsigned long)PAGE_OFFSET+__MEMORY_START; + memory_start = (unsigned long)__va(__MEMORY_START); if (!memory_end) memory_end = memory_start + __MEMORY_SIZE; diff --git a/arch/sh/kernel/vmlinux_32.lds.S b/arch/sh/kernel/vmlinux_32.lds.S index 50c69c18dced..d549fac6d3e7 100644 --- a/arch/sh/kernel/vmlinux_32.lds.S +++ b/arch/sh/kernel/vmlinux_32.lds.S @@ -15,7 +15,12 @@ OUTPUT_ARCH(sh) ENTRY(_start) SECTIONS { +#ifdef CONFIG_32BIT + . = CONFIG_PAGE_OFFSET + CONFIG_ZERO_PAGE_OFFSET; +#else . = CONFIG_PAGE_OFFSET + CONFIG_MEMORY_START + CONFIG_ZERO_PAGE_OFFSET; +#endif + _text = .; /* Text and read-only data */ .empty_zero_page : { |