bsps/arm: Move register init to start.S

This makes it easier to review changes in start.S.

Update #3773.
This commit is contained in:
Sebastian Huber
2019-07-26 07:59:27 +02:00
parent 0f5c1d5344
commit 0ee2125a92
3 changed files with 55 additions and 110 deletions

View File

@@ -1,105 +0,0 @@
/**
* @file
*
* @brief ARM register initialization routines.
*/
/*
* Copyright (c) 2015 Taller Technologies. All rights reserved.
*
* @author Martin Galvan <martin.galvan@tallertechnologies.com>
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.rtems.org/license/LICENSE.
*/
/*
* These routines initialize the core and VFP registers of ARM CPUs.
* This is necessary for boards that operate in a 1oo1D fashion,
* such as the TMS570.
*/
#include <rtems/asm.h>
.section .text
.syntax unified
.cpu cortex-r4
.arm
/* Initialization of the ARM core registers. */
FUNCTION_ENTRY(bsp_start_init_registers_core)
mov r0, #0
mov r1, #0
mov r2, #0
mov r3, #0
mov r4, #0
mov r5, #0
mov r6, #0
mov r7, #0
mov r8, #0
mov r9, #0
mov r10, #0
mov r11, #0
mov r12, #0
mov r13, #0
bx lr
FUNCTION_END(bsp_start_init_registers_core)
/* Initialization of the FIQ mode banked registers. */
FUNCTION_ENTRY(bsp_start_init_registers_banked_fiq)
mov r8, #0
mov r9, #0
mov r10, #0
mov r11, #0
mov r12, #0
bx lr
FUNCTION_END(bsp_start_init_registers_banked_fiq)
#ifdef ARM_MULTILIB_VFP
/* Initialization of the FPU registers. */
FUNCTION_ENTRY(bsp_start_init_registers_vfp)
mov r0, #0
vmov d0, r0, r0
vmov d1, r0, r0
vmov d2, r0, r0
vmov d3, r0, r0
vmov d4, r0, r0
vmov d5, r0, r0
vmov d6, r0, r0
vmov d7, r0, r0
vmov d8, r0, r0
vmov d9, r0, r0
vmov d10, r0, r0
vmov d11, r0, r0
vmov d12, r0, r0
vmov d13, r0, r0
vmov d14, r0, r0
vmov d15, r0, r0
#ifdef ARM_MULTILIB_VFP_D32
vmov d16, r0, r0
vmov d17, r0, r0
vmov d18, r0, r0
vmov d19, r0, r0
vmov d20, r0, r0
vmov d21, r0, r0
vmov d22, r0, r0
vmov d23, r0, r0
vmov d24, r0, r0
vmov d25, r0, r0
vmov d26, r0, r0
vmov d27, r0, r0
vmov d28, r0, r0
vmov d29, r0, r0
vmov d30, r0, r0
vmov d31, r0, r0
#endif /* ARM_MULTILIB_VFP_D32 */
bx lr
FUNCTION_END(bsp_start_init_registers_vfp)
#endif /* ARM_MULTILIB_VFP */

View File

@@ -146,7 +146,20 @@ _start:
mov r5, r1 /* machine type number or ~0 for DT boot */
mov r6, r2 /* physical address of ATAGs or DTB */
#else /* BSP_START_NEEDS_REGISTER_INITIALIZATION */
bl bsp_start_init_registers_core
mov r0, #0
mov r1, #0
mov r2, #0
mov r3, #0
mov r4, #0
mov r5, #0
mov r6, #0
mov r7, #0
mov r8, #0
mov r9, #0
mov r10, #0
mov r11, #0
mov r12, #0
mov r13, #0
#endif
#ifdef RTEMS_SMP
@@ -204,7 +217,11 @@ _start:
sub r3, r3, r1
#ifdef BSP_START_NEEDS_REGISTER_INITIALIZATION
bl bsp_start_init_registers_banked_fiq
mov r8, #0
mov r9, #0
mov r10, #0
mov r11, #0
mov r12, #0
#endif
/* Enter ABT mode and set up the ABT stack pointer */
@@ -271,8 +288,42 @@ _start:
vmsr FPEXC, r0
#ifdef BSP_START_NEEDS_REGISTER_INITIALIZATION
bl bsp_start_init_registers_vfp
#endif
mov r0, #0
vmov d0, r0, r0
vmov d1, r0, r0
vmov d2, r0, r0
vmov d3, r0, r0
vmov d4, r0, r0
vmov d5, r0, r0
vmov d6, r0, r0
vmov d7, r0, r0
vmov d8, r0, r0
vmov d9, r0, r0
vmov d10, r0, r0
vmov d11, r0, r0
vmov d12, r0, r0
vmov d13, r0, r0
vmov d14, r0, r0
vmov d15, r0, r0
#ifdef ARM_MULTILIB_VFP_D32
vmov d16, r0, r0
vmov d17, r0, r0
vmov d18, r0, r0
vmov d19, r0, r0
vmov d20, r0, r0
vmov d21, r0, r0
vmov d22, r0, r0
vmov d23, r0, r0
vmov d24, r0, r0
vmov d25, r0, r0
vmov d26, r0, r0
vmov d27, r0, r0
vmov d28, r0, r0
vmov d29, r0, r0
vmov d30, r0, r0
vmov d31, r0, r0
#endif /* ARM_MULTILIB_VFP_D32 */
#endif /* BSP_START_NEEDS_REGISTER_INITIALIZATION */
#endif /* ARM_MULTILIB_VFP */

View File

@@ -49,7 +49,6 @@ librtemsbsp_a_SOURCES += ../../../../../../bsps/arm/shared/cp15/arm-cp15-set-ttb
# Startup
librtemsbsp_a_SOURCES += ../../../../../../bsps/arm/shared/start/bsp-start-memcpy.S
librtemsbsp_a_SOURCES += ../../../../../../bsps/arm/shared/start/bsp-start-init-registers.S
librtemsbsp_a_SOURCES += ../../../../../../bsps/arm/tms570/start/bspreset.c
librtemsbsp_a_SOURCES += ../../../../../../bsps/arm/tms570/start/bspstart.c