From: Chris Johns <chr...@rtems.org>

- The RPi calls C code which trashes scratch registers.

Closes #3773
---
 bsps/arm/shared/start/start.S | 26 +++++++++++++-------------
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/bsps/arm/shared/start/start.S b/bsps/arm/shared/start/start.S
index 80b7d44dbe..b47dcbcf21 100644
--- a/bsps/arm/shared/start/start.S
+++ b/bsps/arm/shared/start/start.S
@@ -169,11 +169,11 @@ _start:
        /* Calculate interrupt stack area end for current processor */
        ldr     r1, =_ISR_Stack_size
 #ifdef RTEMS_SMP
-       add     r3, r7, #1
-       mul     r1, r1, r3
+       add     r8, r7, #1
+       mul     r1, r1, r8
 #endif
        ldr     r2, =_ISR_Stack_area_begin
-       add     r3, r1, r2
+       add     r8, r1, r2
 
        /* Save original CPSR value */
        mrs     r4, cpsr
@@ -188,8 +188,8 @@ _start:
 
        /* Boot loader starts kernel in HYP mode, switch to SVC necessary */
        ldr     r1, =bsp_stack_hyp_size
-       mov     sp, r3
-       sub     r3, r3, r1
+       mov     sp, r8
+       sub     r8, r8, r1
        bl      bsp_start_arm_drop_hyp_mode
 
 .L_skip_hyp_svc_switch:
@@ -200,8 +200,8 @@ _start:
        mov     r0, #(ARM_PSR_M_FIQ | ARM_PSR_I | ARM_PSR_F)
        msr     cpsr, r0
        ldr     r1, =bsp_stack_fiq_size
-       mov     sp, r3
-       sub     r3, r3, r1
+       mov     sp, r8
+       sub     r8, r8, r1
 
 #ifdef BSP_START_NEEDS_REGISTER_INITIALIZATION
        bl bsp_start_init_registers_banked_fiq
@@ -211,20 +211,20 @@ _start:
        mov     r0, #(ARM_PSR_M_ABT | ARM_PSR_I | ARM_PSR_F)
        msr     cpsr, r0
        ldr     r1, =bsp_stack_abt_size
-       mov     sp, r3
-       sub     r3, r3, r1
+       mov     sp, r8
+       sub     r8, r8, r1
 
        /* Enter UND mode and set up the UND stack pointer */
        mov     r0, #(ARM_PSR_M_UND | ARM_PSR_I | ARM_PSR_F)
        msr     cpsr, r0
        ldr     r1, =bsp_stack_und_size
-       mov     sp, r3
-       sub     r3, r3, r1
+       mov     sp, r8
+       sub     r8, r8, r1
 
        /* Enter IRQ mode and set up the IRQ stack pointer */
        mov     r0, #(ARM_PSR_M_IRQ | ARM_PSR_I | ARM_PSR_F)
        msr     cpsr, r0
-       mov     sp, r3
+       mov     sp, r8
 
        /*
         * Enter SVC mode and set up the SVC stack pointer, reuse IRQ stack
@@ -232,7 +232,7 @@ _start:
         */
        mov     r0, #(ARM_PSR_M_SVC | ARM_PSR_I | ARM_PSR_F)
        msr     cpsr, r0
-       mov     sp, r3
+       mov     sp, r8
 
        /* Stay in SVC mode */
 
-- 
2.19.1

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

Reply via email to