source: rtems/c/src/lib/libbsp/arm/shared/startup/bsp-start-init-registers.S @ 991fdb33

4.115
Last change on this file since 991fdb33 was 991fdb33, checked in by Martin Galvan <martin.galvan@…>, on 02/26/15 at 20:31:27

ARM: Add BSP_START_NEEDS_REGISTER_INITIALIZATION

This patch adds the macro BSP_START_NEEDS_REGISTER_INITIALIZATION and
three hooks for BSP-specific register init code to arm/shared/start.S.
Said hooks are bsp_start_init_registers_core (intended for initializing
the ARM core registers), bsp_start_init_registers_banked_fiq (for the
FIQ mode banked registers) and bsp_start_init_registers_vfp (for the FPU
registers). BSP_START_NEEDS_REGISTER_INITIALIZATION would be defined in
a BSP's configure.ac (so that it appears in its bspopts.h).

This patch also adds the register init code required by the TMS570.
We've tested it with the tms570ls3137_hdk.cfg config and it works fine.

  • Property mode set to 100644
File size: 2.0 KB
RevLine 
[991fdb33]1/**
2 * @file bsp-start-init-registers.S
3 *
4 * @brief ARM register initialization routines.
5 */
6
7/*
8 * Copyright (c) 2015 Taller Technologies.  All rights reserved.
9 *
10 * @author Martin Galvan <martin.galvan@tallertechnologies.com>
11 *
12 * The license and distribution terms for this file may be
13 * found in the file LICENSE in this distribution or at
14 * http://www.rtems.org/license/LICENSE.
15 */
16
17/*
18 * These routines initialize the core and VFP registers of ARM CPUs.
19 * This is necessary for boards that operate in a 1oo1D fashion,
20 * such as the TMS570.
21 */
22
23#include <rtems/asm.h>
24
25.section .text
26.syntax unified
27.cpu cortex-r4
28.arm
29
30/* Initialization of the ARM core registers. */
31FUNCTION_ENTRY(bsp_start_init_registers_core)
32        mov r0, #0
33        mov r1, #0
34        mov r2, #0
35        mov r3, #0
36        mov r4, #0
37        mov r5, #0
38        mov r6, #0
39        mov r7, #0
40        mov r8, #0
41        mov r9, #0
42        mov r10, #0
43        mov r11, #0
44        mov r12, #0
45        mov r13, #0
46
47        bx lr
48FUNCTION_END(bsp_start_init_registers_core)
49
50/* Initialization of the FIQ mode banked registers. */
51FUNCTION_ENTRY(bsp_start_init_registers_banked_fiq)
52        mov r8, #0
53        mov r9, #0
54        mov r10, #0
55        mov r11, #0
56        mov r12, #0
57
58        bx lr
59FUNCTION_END(bsp_start_init_registers_banked_fiq)
60
61#ifdef ARM_MULTILIB_VFP
62
63/* Initialization of the FPU registers. */
64FUNCTION_ENTRY(bsp_start_init_registers_vfp)
65        mov r0, #0
66        vmov d0, r0, r0
67        vmov d1, r0, r0
68        vmov d2, r0, r0
69        vmov d3, r0, r0
70        vmov d4, r0, r0
71        vmov d5, r0, r0
72        vmov d6, r0, r0
73        vmov d7, r0, r0
74        vmov d8, r0, r0
75        vmov d9, r0, r0
76        vmov d10, r0, r0
77        vmov d11, r0, r0
78        vmov d12, r0, r0
79        vmov d13, r0, r0
80        vmov d14, r0, r0
81        vmov d15, r0, r0
82
83#ifdef ARM_MULTILIB_VFP_D32
84        vmov d16, r0, r0
85        vmov d17, r0, r0
86        vmov d18, r0, r0
87        vmov d19, r0, r0
88        vmov d20, r0, r0
89        vmov d21, r0, r0
90        vmov d22, r0, r0
91        vmov d23, r0, r0
92        vmov d24, r0, r0
93        vmov d25, r0, r0
94        vmov d26, r0, r0
95        vmov d27, r0, r0
96        vmov d28, r0, r0
97        vmov d29, r0, r0
98        vmov d30, r0, r0
99        vmov d31, r0, r0
100#endif /* ARM_MULTILIB_VFP_D32 */
101
102        bx lr
103FUNCTION_END(bsp_start_init_registers_vfp)
104
105#endif /* ARM_MULTILIB_VFP */
Note: See TracBrowser for help on using the repository browser.