source: rtems/bsps/lm32/shared/start/start.S @ ff081aee

Last change on this file since ff081aee was ff081aee, checked in by Sebastian Huber <sebastian.huber@…>, on Nov 6, 2018 at 3:58:02 PM

score: Rename interrupt stack symbols

Rename

  • _Configuration_Interrupt_stack_area_begin in _ISR_Stack_area_begin,
  • _Configuration_Interrupt_stack_area_end in _ISR_Stack_area_end, and
  • _Configuration_Interrupt_stack_size in _ISR_Stack_size.

Move definitions to <rtems/score/isr.h>. The new names are considerable
shorter and in the right namespace.

Update #3459.

  • Property mode set to 100644
File size: 2.4 KB
Line 
1/*  LM32 startup code
2 *
3 *  This is the entry point on reset and when loading the
4 *  executive from a bootloader.
5 *
6 *  The license and distribution terms for this file may be
7 *  found in the file LICENSE in this distribution or at
8 *  http://www.rtems.org/license/LICENSE.
9 *
10 *  Jukka Pietarinen <jukka.pietarinen@mrf.fi>, 2008,
11 *  Micro-Research Finland Oy
12 */
13
14#include "bspopts.h"
15
16     .section .boot,"a",@progbits
17     .align    4
18
19     .globl  start
20     .type   start,@function
21     .globl  _start
22     .type   _start,@function
23     .globl  __start
24     .type   __start,@function
25     .globl  LatticeDDInit
26     .type   LatticeDDInit,@function
27     .globl  crt0
28     .type   crt0,@function
29
30LatticeDDInit:
31__start:
32_start:
33start:
34        /* Clear r0 */
35        xor     r0,r0,r0
36        /* Disable interrupts */
37        wcsr    IE, r0
38        /* Mask all interrupts */
39        wcsr    IM,r0
40        /* Set exception base address */
41        mvhi    r1, hi(start)
42        ori     r1, r1, lo(start)
43        wcsr    EBA, r1
44        bi      crt0
45        nop
46/*
47 * Unused handlers call debug handlers
48 */
49breakpoint_handler:
50        rcsr    r7, DEBA
51        addi    r7, r7, 32
52        b       r7
53        nop
54        nop
55        nop
56        nop
57        nop
58instruction_bus_error_handler:
59        rcsr    r7, DEBA
60        addi    r7, r7, 64
61        b       r7
62        nop
63        nop
64        nop
65        nop
66        nop
67watchpoint_handler:
68        rcsr    r7, DEBA
69        addi    r7, r7, 96
70        b       r7
71        nop
72        nop
73        nop
74        nop
75        nop
76data_bus_error_handler:
77        rcsr    r7, DEBA
78        addi    r7, r7, 128
79        b       r7
80        nop
81        nop
82        nop
83        nop
84        nop
85divide_by_zero_handler:
86        rcsr    r7, DEBA
87        addi    r7, r7, 160
88        b       r7
89        nop
90        nop
91        nop
92        nop
93        nop
94interrupt_handler:
95        .extern _ISR_Handler
96        mvhi    r0, hi(_ISR_Handler)
97        ori     r0, r0, lo(_ISR_Handler)
98        b       r0
99        nop
100        nop
101        nop
102        nop
103        nop
104system_call_handler:
105        rcsr    r7, DEBA
106        addi    r7, r7, 224
107        b       r7
108        nop
109        nop
110        nop
111        nop
112        nop
113
114crt0:
115        /* Flush data cache */
116        addi    r1, r0, 1
117        wcsr    DCC, r1
118        nop
119        nop
120        nop
121        nop
122        /* Flush Instruction Cache */
123        wcsr    ICC, r1
124        nop
125        nop
126        nop
127        nop
128        /* Initialize stack pointer */
129        mvhi    sp, hi(_ISR_Stack_area_end-4)
130        ori     sp, sp, lo(_ISR_Stack_area_end-4)
131        /* Initialize global pointer */
132        mvhi    gp, hi(_edata)
133        ori     gp, gp, lo(_edata)
134        /* Clear bss */
135        mvhi    r1, hi(_clear_start)
136        ori     r1, r1, lo(_clear_start)
137        mvhi    r3, hi(_clear_end)
138        ori     r3, r3, lo(_clear_end)
139.clear_bss:
140        be      r1, r3, .end_clear_bss
141        sw      (r1+0), r0
142        addi    r1, r1, 4
143        bi      .clear_bss
144.end_clear_bss:
145        mvi     r1, 0
146        be      r4, r0, .no_rescue
147        mvhi    r1, hi(.rescue_str)
148        ori     r1, r1, lo(.rescue_str)
149.no_rescue:
150        mvhi    r7, hi(boot_card)
151        ori     r7, r7, lo(boot_card)
152        call    r7
153        # boot_card returns when RTEMS is shutdown
154.dead_end:
155        bi      .dead_end
156
157.section .rodata
158.rescue_str:
159        .ascii "rescue"
160
Note: See TracBrowser for help on using the repository browser.