]> git.ipfire.org Git - people/ms/u-boot.git/commitdiff
MIPS: factor out code for initial stack and global data
authorDaniel Schwierzeck <daniel.schwierzeck@gmail.com>
Sun, 25 Sep 2016 16:36:38 +0000 (18:36 +0200)
committerDaniel Schwierzeck <daniel.schwierzeck@gmail.com>
Wed, 30 Nov 2016 15:11:46 +0000 (16:11 +0100)
Move the code for setting up the initial stack and global data
to a macro to be able to use it more than once.

Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
arch/mips/cpu/start.S

index 1ad1884a8d20b5efedf84528ac5f0225d873af90..f1040c27b609b87fb176b659fc9a3a1ed954ae2e 100644 (file)
        sdbbp   1               # Invoke UHI operation
        .endm
 
+       .macro setup_stack_gd
+       li      t0, -16
+       PTR_LI  t1, CONFIG_SYS_INIT_SP_ADDR
+       and     sp, t1, t0              # force 16 byte alignment
+       PTR_SUBU \
+               sp, sp, GD_SIZE         # reserve space for gd
+       and     sp, sp, t0              # force 16 byte alignment
+       move    k0, sp                  # save gd pointer
+#ifdef CONFIG_SYS_MALLOC_F_LEN
+       li      t2, CONFIG_SYS_MALLOC_F_LEN
+       PTR_SUBU \
+               sp, sp, t2              # reserve space for early malloc
+       and     sp, sp, t0              # force 16 byte alignment
+#endif
+       move    fp, sp
+
+       /* Clear gd */
+       move    t0, k0
+1:
+       PTR_S   zero, 0(t0)
+       blt     t0, t1, 1b
+        PTR_ADDIU t0, PTRSIZE
+
+#ifdef CONFIG_SYS_MALLOC_F_LEN
+       PTR_S   sp, GD_MALLOC_BASE(k0)  # gd->malloc_base offset
+#endif
+       .endm
+
 ENTRY(_start)
        /* U-Boot entry point */
        b       reset
@@ -227,32 +255,8 @@ wr_done:
 # endif
 #endif
 
-       /* Set up temporary stack */
-       li      t0, -16
-       PTR_LI  t1, CONFIG_SYS_INIT_SP_ADDR
-       and     sp, t1, t0              # force 16 byte alignment
-       PTR_SUBU \
-               sp, sp, GD_SIZE         # reserve space for gd
-       and     sp, sp, t0              # force 16 byte alignment
-       move    k0, sp                  # save gd pointer
-#ifdef CONFIG_SYS_MALLOC_F_LEN
-       li      t2, CONFIG_SYS_MALLOC_F_LEN
-       PTR_SUBU \
-               sp, sp, t2              # reserve space for early malloc
-       and     sp, sp, t0              # force 16 byte alignment
-#endif
-       move    fp, sp
-
-       /* Clear gd */
-       move    t0, k0
-1:
-       PTR_S   zero, 0(t0)
-       blt     t0, t1, 1b
-        PTR_ADDIU t0, PTRSIZE
-
-#ifdef CONFIG_SYS_MALLOC_F_LEN
-       PTR_S   sp, GD_MALLOC_BASE(k0)  # gd->malloc_base offset
-#endif
+       /* Set up initial stack and global data */
+       setup_stack_gd
 
        move    a0, zero                # a0 <-- boot_flags = 0
        PTR_LA  t9, board_init_f