MIPS: zboot: head.S clean up
authorJiaxun Yang <jiaxun.yang@flygoat.com>
Wed, 30 Dec 2020 03:47:22 +0000 (11:47 +0800)
committerThomas Bogendoerfer <tsbogend@alpha.franken.de>
Mon, 4 Jan 2021 10:16:03 +0000 (11:16 +0100)
.cprestore is removed as we don't expect Position Independent
zboot ELF.

.noreorder is also removed and rest instructions are massaged
to improve readability.

t9 register is used for indirect jump as MIPS ABI requirement.

start label is removed as it already defined in LEAF.

Reported-by: Paul Cercueil <paul@crapouillou.net>
Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
Reviewed-by: Huacai Chen <chenhuacai@kernel.org>
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
arch/mips/boot/compressed/head.S

index 409cb48..070b2fb 100644 (file)
 #include <asm/asm.h>
 #include <asm/regdef.h>
 
-       .set noreorder
-       .cprestore
        LEAF(start)
-start:
        /* Save boot rom start args */
        move    s0, a0
        move    s1, a1
@@ -35,21 +32,20 @@ start:
        PTR_LA  a0, (.heap)          /* heap address */
        PTR_LA  sp, (.stack + 8192)  /* stack address */
 
-       PTR_LA  ra, 2f
-       PTR_LA  k0, decompress_kernel
-       jr      k0
-        nop
+       PTR_LA  t9, decompress_kernel
+       jalr    t9
+
 2:
        move    a0, s0
        move    a1, s1
        move    a2, s2
        move    a3, s3
-       PTR_LI  k0, KERNEL_ENTRY
-       jr      k0
-        nop
+       PTR_LI  t9, KERNEL_ENTRY
+       jalr    t9
+
 3:
        b       3b
-        nop
+
        END(start)
 
        .comm .heap,BOOT_HEAP_SIZE,4