]> git.sur5r.net Git - freertos/blob - Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/GNU-Files/start.asm
Start to re-arrange files to include FreeRTOS+ in main download.
[freertos] / Demo / RX600_RX62N-RSK_GNURX / RTOSDemo / GNU-Files / start.asm
1 /*------------------------------------------------------------------------\r
2                                                                        |\r
3    FILE        : start.asm                                             |\r
4    DATE        :  Wed, Aug 25, 2010                                    |\r
5    DESCRIPTION :   Reset Program                                       |\r
6    CPU TYPE    :    Other                                              |\r
7                                                                        |\r
8    This file is generated by KPIT GNU Project Generator (Ver.4.5).     |\r
9                                                                        |\r
10 ------------------------------------------------------------------------*/\r
11                         \r
12 \r
13 \r
14         /*Start.asm*/\r
15 \r
16         .list\r
17         .section .text\r
18         .global _start   /*global Start routine */\r
19         \r
20 #ifdef CPPAPP   \r
21 ___dso_handle:\r
22         .global ___dso_handle\r
23 #endif  \r
24 \r
25         .extern _hw_initialise  /*external Sub-routine to initialise Hardware*/\r
26         .extern _data\r
27         .extern _mdata\r
28         .extern _ebss\r
29         .extern _bss\r
30         .extern _edata\r
31         .extern _main \r
32         .extern _ustack\r
33         .extern _istack\r
34         .extern _rvectors\r
35 #if DEBUG\r
36         .extern _exit\r
37 #endif\r
38 \r
39         \r
40 _start:\r
41 /* initialise user stack pointer */\r
42         mvtc    #_ustack,USP\r
43 \r
44 /* initialise interrupt stack pointer */\r
45         mvtc    #_istack,ISP\r
46 \r
47 /* setup intb */\r
48         mvtc    #_rvectors_start, intb  /* INTERRUPT VECTOR ADDRESS  definition */\r
49 \r
50 /* setup FPSW */\r
51         mvtc    #100h, fpsw     \r
52 \r
53 /* load data section from ROM to RAM */\r
54 \r
55         mov     #_mdata,r2      /* src ROM address of data section in R2 */\r
56         mov     #_data,r1       /* dest start RAM address of data section in R1 */\r
57         mov     #_edata,r3      /* end RAM address of data section in R3 */\r
58         sub    r1,r3            /* size of data section in R3 (R3=R3-R1) */\r
59         smovf                   /* block copy R3 bytes from R2 to R1 */\r
60 \r
61 /* bss initialisation : zero out bss */\r
62 \r
63         mov     #00h,r2         /* load R2 reg with zero */\r
64         mov     #_ebss, r3  /* store the end address of bss in R3 */\r
65         mov     #_bss, r1       /* store the start address of bss in R1 */\r
66         sub   r1,r3             /* size of bss section in R3 (R3=R3-R1) */\r
67         sstr.b\r
68 \r
69 /* call the hardware initialiser */\r
70         bsr.a   _hw_initialise  \r
71         nop\r
72 \r
73 /* setup PSW */\r
74 //      mvtc    #10000h, psw                    /* Set Ubit & Ibit for PSW */\r
75 \r
76 /* change PSW PM to user-mode */\r
77 //      MVFC   PSW,R1\r
78 //      OR     #00100000h,R1\r
79 //      PUSH.L R1\r
80 //      MVFC   PC,R1\r
81 //      ADD    #10,R1\r
82 //      PUSH.L R1\r
83 //      RTE\r
84 //      NOP\r
85 //      NOP\r
86 \r
87 /* start user program */\r
88         bsr.a   _main           \r
89         \r
90 /* call to exit*/\r
91 _exit:\r
92         bsr.a   _exit\r
93         \r
94         .end\r