From 8e6a407a2a8fa2948a1372855062a7d1bdb2980d Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Fri, 22 Sep 2017 13:48:03 +0200 Subject: bsps/arm: Copy FDT only on boot processor Update #3090. --- c/src/lib/libbsp/arm/shared/start/start.S | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) (limited to 'c/src/lib/libbsp/arm/shared') diff --git a/c/src/lib/libbsp/arm/shared/start/start.S b/c/src/lib/libbsp/arm/shared/start/start.S index 547cce3d2c..aa0f3782c9 100755 --- a/c/src/lib/libbsp/arm/shared/start/start.S +++ b/c/src/lib/libbsp/arm/shared/start/start.S @@ -183,27 +183,34 @@ _start: bl bsp_start_init_registers_core #endif +#ifdef RTEMS_SMP + /* Read MPIDR and get current processor index */ + mrc p15, 0, r7, c0, c0, 5 + and r7, #0xff +#endif + #ifdef BSP_START_COPY_FDT_FROM_U_BOOT +#ifdef RTEMS_SMP + cmp r7, #0 + bne 1f +#endif mov r0, r6 - bl bsp_fdt_copy + bl bsp_fdt_copy +1: #endif #ifdef RTEMS_SMP - /* Read MPIDR and get current processor index */ - mrc p15, 0, r0, c0, c0, 5 - and r0, #0xff - /* * Get current per-CPU control and store it in PL1 only Thread ID * Register (TPIDRPRW). */ ldr r1, =_Per_CPU_Information - add r1, r1, r0, asl #PER_CPU_CONTROL_SIZE_LOG2 + add r1, r1, r7, asl #PER_CPU_CONTROL_SIZE_LOG2 mcr p15, 0, r1, c13, c0, 4 /* Calculate stack offset */ ldr r1, =bsp_stack_all_size - mul r1, r0 + mul r1, r7 #endif mrs r4, cpsr /* save original procesor status value */ -- cgit v1.2.3