Initialize the stacks in start.S in one place and identical to
_CPU_Context_Initialize().
---
 bsps/sparc/shared/start/start.S | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/bsps/sparc/shared/start/start.S b/bsps/sparc/shared/start/start.S
index 369ef72a94..4922a97d6d 100644
--- a/bsps/sparc/shared/start/start.S
+++ b/bsps/sparc/shared/start/start.S
@@ -306,13 +306,12 @@ SYM(hard_reset):
         nop
 
        ld      [%g6 + PER_CPU_INTERRUPT_STACK_HIGH], %sp ! set stack pointer
-       sub     %sp, 4, %sp             ! stack starts at end of area - 4
-       andn    %sp, 0x0f, %sp          ! align stack on 16-byte boundary
+       andn    %sp, CPU_STACK_ALIGNMENT - 1, %sp
+       sub     %sp, SPARC_MINIMUM_STACK_FRAME_SIZE, %sp
        mov     %sp, %fp                ! set frame pointer
 
-       mov     %g6, %o0
        call    SYM(bsp_start_on_secondary_processor) ! does not return
-        sub    %sp, SPARC_MINIMUM_STACK_FRAME_SIZE, %sp
+        mov    %g6, %i0
 .Lbootcpu:
        st      %o0, [%o1]
 #endif
@@ -326,8 +325,8 @@ SYM(hard_reset):
 #endif
        set     SYM(_ISR_Stack_area_begin), %sp
        add     %sp, %g5, %sp
-       sub     %sp, 4, %sp             ! stack starts at end of area - 4
-       andn    %sp, 0x0f, %sp          ! align stack on 16-byte boundary
+       andn    %sp, CPU_STACK_ALIGNMENT - 1, %sp
+       sub     %sp, SPARC_MINIMUM_STACK_FRAME_SIZE, %sp
         mov     %sp, %fp                ! Set frame pointer
         nop
 
@@ -346,8 +345,7 @@ SYM(hard_reset):
         bleu,a .Lzerobss
         nop
 
-        mov     %g0, %o0                ! command line
         call    SYM(boot_card)          ! does not return
-         sub     %sp, 0x60, %sp         ! room for boot_card to save args
+         mov    %g0, %i0                ! command line
 
 /* end of file */
-- 
2.26.2

_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to