]> nv-tegra.nvidia Code Review - linux-3.10.git/commitdiff
[MIPS] Always do the ARC64_TWIDDLE_PC thing.
authorThomas Bogendoerfer <tsbogend@alpha.franken.de>
Thu, 13 Sep 2007 18:23:48 +0000 (20:23 +0200)
committerRalf Baechle <ralf@linux-mips.org>
Thu, 18 Oct 2007 17:11:46 +0000 (18:11 +0100)
Always jump to the place where the kernel is linked to. This helps where
the bootloaders/proms ignores the start address inside the ELF header.

Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/kernel/head.S
include/asm-mips/mach-ip27/kernel-entry-init.h

index bf164a562acbe185864a4ed1cc503e1d56546771..2367687310630c40a68b11423a21dab45cc6b2a9 100644 (file)
 
 #include <kernel-entry-init.h>
 
 
 #include <kernel-entry-init.h>
 
-       .macro  ARC64_TWIDDLE_PC
-#if defined(CONFIG_ARC64) || defined(CONFIG_MAPPED_KERNEL)
-       /* We get launched at a XKPHYS address but the kernel is linked to
-          run at a KSEG0 address, so jump there.  */
-       PTR_LA  t0, \@f
-       jr      t0
-\@:
-#endif
-       .endm
-
        /*
         * inputs are the text nasid in t1, data nasid in t2.
         */
        /*
         * inputs are the text nasid in t1, data nasid in t2.
         */
@@ -157,7 +147,11 @@ NESTED(kernel_entry, 16, sp)                       # kernel entry point
 
        setup_c0_status_pri
 
 
        setup_c0_status_pri
 
-       ARC64_TWIDDLE_PC
+       /* We might not get launched at the address the kernel is linked to,
+          so we jump there.  */
+       PTR_LA  t0, 0f
+       jr      t0
+0:
 
 #ifdef CONFIG_MIPS_MT_SMTC
        /*
 
 #ifdef CONFIG_MIPS_MT_SMTC
        /*
index c1a10314b317ccf441b6a2aba38220e35c3e117a..624d66c7f290268d08916f056d43451c124aeefc 100644 (file)
        lh      t1, KV_RO_NASID_OFFSET(t0)
        lh      t2, KV_RW_NASID_OFFSET(t0)
        MAPPED_KERNEL_SETUP_TLB
        lh      t1, KV_RO_NASID_OFFSET(t0)
        lh      t2, KV_RW_NASID_OFFSET(t0)
        MAPPED_KERNEL_SETUP_TLB
-       ARC64_TWIDDLE_PC
+
+       /*
+        * We might not get launched at the address the kernel is linked to,
+        * so we jump there.
+        */
+       PTR_LA  t0, 0f
+       jr      t0
+0:
        .endm
 
 #endif /* __ASM_MACH_IP27_KERNEL_ENTRY_H */
        .endm
 
 #endif /* __ASM_MACH_IP27_KERNEL_ENTRY_H */