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

5
Last change on this file since fdf0e55 was b800f88, checked in by Sebastian Huber <sebastian.huber@…>, on 09/21/17 at 11:32:12

bsp/t32mppc: PPC_EXC_CONFIG_USE_FIXED_HANDLER

Fix link-time error.

Update #3085.

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