]> git.sur5r.net Git - freertos/blob - Demo/H8S/RTOSDemo/start.asm
Change version numbers to V7.1.0.
[freertos] / Demo / H8S / RTOSDemo / start.asm
1 ;/****************************************************************\r
2 ;KPIT Cummins Infosystems Ltd, Pune, India. - 4th September 2003.\r
3 ;\r
4 ;This program is distributed in the hope that it will be useful,\r
5 ;but WITHOUT ANY WARRANTY; without even the implied warranty of\r
6 ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE\r
7 ;\r
8 ;*****************************************************************/\r
9 \r
10 \r
11 ;*********************************************************************\r
12 ; File: start.asm\r
13 ;\r
14 ;\r
15 ; desc:\r
16\r
17 ;  System initialisation routine - entry point for the application.\r
18 ;  The stack pointer is initialised, then the hardware initialisation\r
19 ;  routine called.  The static data areas are then initialised, before\r
20 ;  the main function is executed.  A simple exit funtion is also\r
21 ;  supplied\r
22 ;\r
23 ;*********************************************************************\r
24 \r
25 #ifdef __H8300H__  \r
26 \r
27 #ifdef __NORMAL_MODE__\r
28         .h8300hn\r
29 #else\r
30         .h8300h\r
31 #endif\r
32 \r
33 #endif  /*_H8300H_ */\r
34 \r
35 #ifdef __H8300S__\r
36 \r
37 #ifdef __NORMAL_MODE__\r
38         .h8300sn\r
39 #else\r
40         .h8300s\r
41 #endif\r
42 \r
43 #endif /* __H8300S__ */\r
44         \r
45         .section .text\r
46         .global _start\r
47 #if DEBUG       \r
48         .extern _exit\r
49 #endif\r
50 \r
51         .extern _hw_initialise\r
52         .extern _main\r
53 \r
54         .extern _data\r
55         .extern _mdata\r
56         .extern _edata\r
57         .extern _bss\r
58         .extern _ebss\r
59         .extern _stack\r
60 \r
61 _start:\r
62         ; initialise the SP for non-vectored code\r
63     mov.l   #_stack,er7\r
64         ; call the hardware initialiser\r
65         jsr     @_hw_initialise\r
66 #ifdef ROMSTART \r
67         ; get the boundaries for the .data section initialisation\r
68     mov.l   #_data,er0\r
69     mov.l   #_edata,er1\r
70     mov.l   #_mdata,er2\r
71     cmp.l   er0,er1\r
72         beq     start_1\r
73 start_l:\r
74     mov.b   @er2,r3l  ;get from src\r
75     mov.b   r3l,@er0  ;place in dest\r
76     inc.l   #1,er2    ;inc src\r
77     inc.l   #1,er0    ;inc dest\r
78     cmp.l   er0,er1   ;dest == edata?\r
79         bne     start_l\r
80 start_1:\r
81 #endif          //ROMSTART\r
82         ; zero out bss\r
83     mov.l   #_bss,er0\r
84     mov.l   #_ebss,er1\r
85     cmp.l   er0,er1         \r
86         beq     start_3\r
87         sub.b   r2l,r2l\r
88 start_2:\r
89     mov.b   r2l,@er0\r
90     inc.l   #1,er0\r
91     cmp.l   er0,er1\r
92         bne     start_2\r
93 start_3:\r
94 #ifdef CPPAPP   \r
95         ;Initialize global constructor  \r
96         jsr     @___main\r
97 #endif\r
98         \r
99         ; call the mainline     \r
100         jsr     @_main\r
101 \r
102         \r
103     mov.l   er0,er4\r
104     \r
105     ;call to exit\r
106 #if DEBUG\r
107     jsr     @_exit\r
108 #endif\r
109 #if RELEASE\r
110  exit:\r
111         bra     exit\r
112 #endif\r
113 \r
114         \r
115 \r