source: rtems/c/src/lib/libbsp/powerpc/t32mppc/start/start.S @ 43c6268

4.115
Last change on this file since 43c6268 was 43c6268, checked in by Sebastian Huber <sebastian.huber@…>, on 07/09/13 at 07:53:08

bsps/powerpc: Use ALIGN_WITH_INPUT

This requires at least Binutils 2.24.

  • Property mode set to 100644
File size: 3.8 KB
Line 
1/*
2 * Copyright (c) 2012 embedded brains GmbH.  All rights reserved.
3 *
4 *  embedded brains GmbH
5 *  Obere Lagerstr. 30
6 *  82178 Puchheim
7 *  Germany
8 *  <rtems@embedded-brains.de>
9 *
10 * The license and distribution terms for this file may be
11 * found in the file LICENSE in this distribution or at
12 * http://www.rtems.com/license/LICENSE.
13 */
14
15#include <bspopts.h>
16
17#include <libcpu/powerpc-utility.h>
18
19#include <bsp/vectors.h>
20
21        .globl _start
22        .globl bsp_exc_vector_base
23
24        .section ".bsp_start_text", "ax"
25
26_start:
27        /* Enable time base */
28        li      r0, 0x4000
29        mtspr   HID0, r0
30
31        /* Initialize start stack */
32        LWI     r1, start_stack_end
33        subi    r1, r1, 16
34        li      r0, 0
35        stw     r0, 0(r1)
36
37        /* Copy fast text */
38        LWI     r3, bsp_section_fast_text_begin
39        LWI     r4, bsp_section_fast_text_load_begin
40        LWI     r5, bsp_section_fast_text_size
41        bl      copy
42
43        /* Copy read-only data */
44        LWI     r3, bsp_section_rodata_begin
45        LWI     r4, bsp_section_rodata_load_begin
46        LWI     r5, bsp_section_rodata_size
47        bl      copy
48
49        /* Copy fast data */
50        LWI     r3, bsp_section_fast_data_begin
51        LWI     r4, bsp_section_fast_data_load_begin
52        LWI     r5, bsp_section_fast_data_size
53        bl      copy
54
55        /* Copy data */
56        LWI     r3, bsp_section_data_begin
57        LWI     r4, bsp_section_data_load_begin
58        LWI     r5, bsp_section_data_size
59        bl      copy
60
61        /* Clear SBSS */
62        LWI     r3, bsp_section_sbss_begin
63        LWI     r4, bsp_section_sbss_size
64        bl      bsp_start_zero
65
66        /* Clear BSS */
67        LWI     r3, bsp_section_bss_begin
68        LWI     r4, bsp_section_bss_size
69        bl      bsp_start_zero
70
71        /* Set up EABI and SYSV environment */
72        bl      __eabi
73
74        /* Clear command line */
75        li      r3, 0
76
77        bl      boot_card
78
79twiddle:
80        b       twiddle
81
82copy:
83        cmpw    r3, r4
84        beqlr
85        b       memcpy
86
87        /* Exception vector prologues area */
88        .section ".bsp_start_text", "ax"
89        .align 4
90bsp_exc_vector_base:
91        stw     r1, ppc_exc_lock_crit@sdarel(r13)
92        stw     r4, ppc_exc_vector_register_crit@sdarel(r13)
93        li      r4, -32767
94        b       ppc_exc_wrap_bookE_crit
95        stwu    r1, -EXC_GENERIC_SIZE(r1)
96        stw     r4, GPR4_OFFSET(r1)
97        li      r4, 2
98        b       ppc_exc_wrap_nopush_e500_mchk
99        stwu    r1, -EXC_GENERIC_SIZE(r1)
100        stw     r4, GPR4_OFFSET(r1)
101        li      r4, 3
102        b       ppc_exc_wrap_nopush_std
103        stwu    r1, -EXC_GENERIC_SIZE(r1)
104        stw     r4, GPR4_OFFSET(r1)
105        li      r4, 4
106        b       ppc_exc_wrap_nopush_std
107        stwu    r1, -PPC_EXC_MINIMAL_FRAME_SIZE(r1)
108        stw     r4, PPC_EXC_VECTOR_PROLOGUE_OFFSET(r1)
109        li      r4, -32763
110        b       ppc_exc_wrap_async_normal
111        stwu    r1, -EXC_GENERIC_SIZE(r1)
112        stw     r4, GPR4_OFFSET(r1)
113        li      r4, 6
114        b       ppc_exc_wrap_nopush_std
115        stwu    r1, -EXC_GENERIC_SIZE(r1)
116        stw     r4, GPR4_OFFSET(r1)
117        li      r4, 7
118        b       ppc_exc_wrap_nopush_std
119        stwu    r1, -EXC_GENERIC_SIZE(r1)
120        stw     r4, GPR4_OFFSET(r1)
121        li      r4, 8
122        b       ppc_exc_wrap_nopush_std
123        stwu    r1, -EXC_GENERIC_SIZE(r1)
124        stw     r4, GPR4_OFFSET(r1)
125        li      r4, 12
126        b       ppc_exc_wrap_nopush_std
127        stwu    r1, -EXC_GENERIC_SIZE(r1)
128        stw     r4, GPR4_OFFSET(r1)
129        li      r4, 24
130        b       ppc_exc_wrap_nopush_std
131        stwu    r1, -PPC_EXC_MINIMAL_FRAME_SIZE(r1)
132        stw     r4, PPC_EXC_VECTOR_PROLOGUE_OFFSET(r1)
133        li      r4, -32752
134        b       ppc_exc_wrap_async_normal
135        stwu    r1, -PPC_EXC_MINIMAL_FRAME_SIZE(r1)
136        stw     r4, PPC_EXC_VECTOR_PROLOGUE_OFFSET(r1)
137        li      r4, -32749
138        b       ppc_exc_wrap_async_normal
139        stw     r1, ppc_exc_lock_crit@sdarel(r13)
140        stw     r4, ppc_exc_vector_register_crit@sdarel(r13)
141        li      r4, -32748
142        b       ppc_exc_wrap_bookE_crit
143        stwu    r1, -EXC_GENERIC_SIZE(r1)
144        stw     r4, GPR4_OFFSET(r1)
145        li      r4, 18
146        b       ppc_exc_wrap_nopush_std
147        stwu    r1, -EXC_GENERIC_SIZE(r1)
148        stw     r4, GPR4_OFFSET(r1)
149        li      r4, 17
150        b       ppc_exc_wrap_nopush_std
151        stwu    r1, -EXC_GENERIC_SIZE(r1)
152        stw     r4, GPR4_OFFSET(r1)
153        li      r4, 13
154        b       ppc_exc_wrap_nopush_bookE_crit
155        stwu    r1, -EXC_GENERIC_SIZE(r1)
156        stw     r4, GPR4_OFFSET(r1)
157        li      r4, 10
158        b       ppc_exc_wrap_nopush_std
159        stwu    r1, -EXC_GENERIC_SIZE(r1)
160        stw     r4, GPR4_OFFSET(r1)
161        li      r4, 25
162        b       ppc_exc_wrap_nopush_std
163        stwu    r1, -EXC_GENERIC_SIZE(r1)
164        stw     r4, GPR4_OFFSET(r1)
165        li      r4, 26
166        b       ppc_exc_wrap_nopush_std
167        stwu    r1, -EXC_GENERIC_SIZE(r1)
168        stw     r4, GPR4_OFFSET(r1)
169        li      r4, 15
170        b       ppc_exc_wrap_nopush_std
171
172        /* Start stack area */
173        .section ".bsp_rwextra", "aw", @nobits
174        .align 4
175        .space 4096
176start_stack_end:
Note: See TracBrowser for help on using the repository browser.