]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/RX200_RX231-RSK_GCC_e2studio_IAR/src/cg_src/r_cg_reset_program.asm
commit 9f316c246baafa15c542a5aea81a94f26e3d6507
[freertos] / FreeRTOS / Demo / RX200_RX231-RSK_GCC_e2studio_IAR / src / cg_src / r_cg_reset_program.asm
1 ;;/*********************************************************************************************************************\r
2 ;;* DISCLAIMER\r
3 ;;* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products.\r
4 ;;* No other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all\r
5 ;;* applicable laws, including copyright laws. \r
6 ;;* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIESREGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED\r
7 ;;* OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
8 ;;* NON-INFRINGEMENT.  ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY\r
9 ;;* LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE FOR ANY DIRECT,\r
10 ;;* INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR\r
11 ;;* ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\r
12 ;;* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability \r
13 ;;* of this software. By using this software, you agree to the additional terms and conditions found by accessing the \r
14 ;;* following link:\r
15 ;;* http://www.renesas.com/disclaimer\r
16 ;;*\r
17 ;;* Copyright (C) 2015 Renesas Electronics Corporation. All rights reserved.\r
18 ;;*********************************************************************************************************************/\r
19 ;;/*\r
20 ;;**********************************************************************************************************************\r
21 ;;* File Name    : r_cg_reset_program.asm\r
22 ;;* Version      : Code Generator for RX231 V1.00.00.03 [10 Jul 2015]\r
23 ;;* Device(s)    : R5F52318AxFP\r
24 ;;* Tool-Chain   : GCCRX\r
25 ;;* Description  : This is start up file for RX.\r
26 ;;* Creation Date: 23/09/2015\r
27 ;;**********************************************************************************************************************\r
28 ;;*/\r
29 \r
30 ;;reset_program.asm\r
31 \r
32     .list\r
33     .section .text\r
34     .global _PowerON_Reset  ;;global Start routine\r
35 \r
36     .extern _HardwareSetup  ;;external Sub-routine to initialise Hardware\r
37     .extern _data\r
38     .extern _mdata\r
39     .extern _ebss\r
40     .extern _bss\r
41     .extern _edata\r
42     .extern _main\r
43     .extern _ustack\r
44     .extern _istack\r
45     .extern _rvectors\r
46     .extern _exit\r
47 \r
48 \r
49 _PowerON_Reset :\r
50 ;;initialise user stack pointer\r
51     mvtc    #_ustack,USP\r
52 \r
53 ;;initialise interrupt stack pointer\r
54     mvtc    #_istack,ISP\r
55 \r
56 #ifdef __RXv2__\r
57 ;; setup exception vector\r
58     mvtc    #_ExceptVectors, extb     ;;EXCEPTION VECTOR ADDRESS\r
59 #endif\r
60 ;;setup intb\r
61     mvtc    #_rvectors_start, intb    ;;INTERRUPT VECTOR ADDRESS  definition\r
62 \r
63 ;;setup FPSW\r
64     mvtc    #100h, fpsw\r
65 \r
66 ;;load data section from ROM to RAM\r
67 \r
68     mov     #_mdata,r2      ;;src ROM address of data section in R2\r
69     mov     #_data,r1       ;;dest start RAM address of data section in R1\r
70     mov     #_edata,r3      ;;end RAM address of data section in R3\r
71     sub     r1,r3           ;;size of data section in R3 (R3=R3-R1)\r
72     smovf                   ;;block copy R3 bytes from R2 to R1\r
73 \r
74 ;;bss initialisation : zero out bss\r
75 \r
76     mov    #00h,r2          ;;load R2 reg with zero\r
77     mov    #_ebss, r3       ;;store the end address of bss in R3\r
78     mov    #_bss, r1        ;;store the start address of bss in R1\r
79     sub    r1,r3            ;;ize of bss section in R3 (R3=R3-R1)\r
80     sstr.b\r
81 ;;call the hardware initialiser\r
82     bsr.a    _HardwareSetup\r
83     nop\r
84 \r
85 ;;setup PSW\r
86     mvtc    #10000h, psw   ;;Set Ubit & Ibit for PSW\r
87 \r
88 ;;change PSW PM to user-mode\r
89     MVFC   PSW,R1\r
90 ;;DO NOT CHANGE TO USER MODE    OR     #00100000h,R1\r
91     PUSH.L R1\r
92     MVFC   PC,R1\r
93     ADD    #10,R1\r
94     PUSH.L R1\r
95     RTE\r
96     NOP\r
97     NOP\r
98 #ifdef CPPAPP\r
99     bsr.a    __rx_init\r
100 #endif\r
101 ;;start user program\r
102     bsr.a   _main\r
103     bsr.a   _exit\r
104 \r
105 #ifdef CPPAPP\r
106     .global _rx_run_preinit_array\r
107     .type   _rx_run_preinit_array,@function\r
108 _rx_run_preinit_array:\r
109     mov     #__preinit_array_start,r1\r
110     mov     #__preinit_array_end,r2\r
111     bra.a   _rx_run_inilist\r
112 \r
113     .global _rx_run_init_array\r
114     .type   _rx_run_init_array,@function\r
115 _rx_run_init_array:\r
116     mov     #__init_array_start,r1\r
117     mov     #__init_array_end,r2\r
118     mov     #4, r3\r
119     bra.a   _rx_run_inilist\r
120 \r
121     .global _rx_run_fini_array\r
122     .type   _rx_run_fini_array,@function\r
123 _rx_run_fini_array:\r
124     mov    #__fini_array_start,r2\r
125     mov    #__fini_array_end,r1\r
126     mov    #-4, r3\r
127     ;;fall through\r
128 \r
129 _rx_run_inilist:\r
130 next_inilist:\r
131     cmp     r1,r2\r
132     beq.b   done_inilist\r
133     mov.l   [r1],r4\r
134     cmp     #-1, r4\r
135     beq.b   skip_inilist\r
136     cmp     #0, r4\r
137     beq.b   skip_inilist\r
138     pushm   r1-r3\r
139     jsr     r4\r
140     popm    r1-r3\r
141 skip_inilist:\r
142     add     r3,r1\r
143     bra.b   next_inilist\r
144 done_inilist:\r
145     rts\r
146 \r
147     .section    .init,"ax"\r
148     .balign 4\r
149 \r
150     .global     __rx_init\r
151 __rx_init:\r
152 \r
153     .section    .fini,"ax"\r
154     .balign 4\r
155 \r
156     .global     __rx_fini\r
157 __rx_fini:\r
158     bsr.a   _rx_run_fini_array\r
159 \r
160     .section .sdata\r
161     .balign 4\r
162     .global __gp\r
163     .weak   __gp\r
164 __gp:\r
165 \r
166     .section .data\r
167     .global ___dso_handle\r
168     .weak   ___dso_handle\r
169 ___dso_handle:\r
170     .long    0\r
171 \r
172      .section   .init,"ax"\r
173      bsr.a      _rx_run_preinit_array\r
174      bsr.a      _rx_run_init_array\r
175      rts\r
176 \r
177     .global     __rx_init_end\r
178 __rx_init_end:\r
179 \r
180     .section    .fini,"ax"\r
181 \r
182     rts\r
183     .global __rx_fini_end\r
184 __rx_fini_end:\r
185 \r
186 #endif\r
187 \r
188 ;;call to exit\r
189 _exit:\r
190     bra  _loop_here\r
191 _loop_here:\r
192     bra _loop_here\r
193 \r
194     .text\r
195     .end\r