source: uKadecot/trunk/ssp/arch/rx630_ccrx/start.src@ 101

Last change on this file since 101 was 101, checked in by coas-nagasima, 9 years ago

TOPPERS/uKadecotのソースコードを追加

File size: 4.2 KB
Line 
1;*
2;* TOPPERS/SSP Kernel
3;* Smallest Set Profile Kernel
4;*
5;* Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
6;* Toyohashi Univ. of Technology, JAPAN
7;* Copyright (C) 2005,2006 by Embedded and Real-Time Systems Laboratory
8;* Graduate School of Information Science, Nagoya Univ., JAPAN
9;* Copyright (C) 2008-2010 by Witz Corporation, JAPAN
10;*
11;* ã‹L’˜ìŒ ŽÒ‚́CFree Software Foundation ‚É‚æ‚Á‚ÄŒö•\‚³‚ê‚Ä‚¢‚é
12;* GNU General Public License ‚Ì Version 2 ‚É‹Lq‚³‚ê‚Ä‚¢‚éðŒ‚©CˆÈ
13;* ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒFƒAi–{ƒ\ƒtƒgƒEƒF
14;* ƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü•ÏEÄ”z•ziˆÈ‰ºC
15;* —˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
16;* (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
17;* Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
18;* ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
19;* (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðÄ—˜—p‰Â”\‚ȃoƒCƒiƒŠƒR[ƒhiƒŠƒƒP[ƒ^ƒuƒ‹ƒIƒu
20;* ƒWƒFƒNƒgƒtƒ@ƒCƒ‹‚⃉ƒCƒuƒ‰ƒŠ‚Ȃǁj‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́C—˜—p
21;* ‚É”º‚¤ƒhƒLƒ…
22ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ…
23ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C
24;* ‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
25;* (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðÄ—˜—p•s‰Â”\‚ȃoƒCƒiƒŠƒR[ƒh‚ÌŒ`‚Ü‚½‚Í‹@Ší‚É‘g
26;* ‚ݍž‚ñ‚¾Œ`‚Å—˜—p‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±‚ƁD
27;* (a) —˜—p‚É”º‚¤ƒhƒLƒ…
28ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ…
29ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ì
30;* Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
31;* (b) —˜—p‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCã‹L’˜ìŒ ŽÒ‚É•ñ‚·‚é
32;* ‚±‚ƁD
33;* (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
34;* ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚ð–Ɛӂ·‚邱‚ƁD
35;*
36;* –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚́C
37;* –{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC‚»‚Ì“K—p‰Â”\«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í
38;* ‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢
39;* ‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»‚̐ӔC‚𕉂í‚È‚¢D
40;*
41
42 .include sectrx.inc
43
44 ;
45 ; ƒƒ‚ƒŠƒ}ƒbƒv‚Ì’è‹`(ƒ^[ƒQƒbƒgˆË‘¶•”)
46 ;
47
48DFLRE .equ 007FC440H ; DFLREƒŒƒWƒXƒ^
49
50DB_BLOCK_ENABLE .equ 02D0FH
51
52;
53; ‰Šú‰»ƒ‹[ƒ`ƒ“
54;
55 .section P, CODE
56
57 .glb _start
58 .glb _sta_ker
59 .glb _software_init_hook
60 .glb _hardware_init_hook
61 .glb __kernel_istkpt
62
63_start:
64 ;
65 ; “dŒ¹“Š“üŒã‚̓Œƒxƒ‹0, ‘SŠ„ž‚Ý‹ÖŽ~ó‘Ô‚Å‚ ‚é.
66 ; ƒJ[ƒlƒ‹‚ł͍‚‘¬Š„ž‚Ý‚ðŽg—p‚µ‚È‚¢‚½‚߁ABPC, BPSW‹y‚ÑFINTV
67 ; ‚̏‰Šú‰»‚͍s‚í‚È‚¢.
68 ;
69
70 ;
71 ; “à‘ ROMiƒf[ƒ^ƒtƒ‰ƒbƒVƒ…
72j—̈æ‚̐ݒè
73 ;
74 ; ƒŠƒZƒbƒgŒã, ƒf[ƒ^ƒtƒ‰ƒbƒVƒ…
75—̈æ‚͓ǂݏo‚µ‹ÖŽ~‚Æ‚È‚Á‚Ä‚¢‚é
76 ; ‚½‚ß, “ǂݏo‚µ‹–‰Â‚ɐݒ肷‚é.
77 ;
78 mov.l #DFLRE, r5
79 mov.w #DB_BLOCK_ENABLE, [R5]
80
81 ;
82 ; ƒXƒ^ƒbƒNƒ|ƒCƒ“ƒ^‚̐ݒè
83 ;
84 ; ƒ†[ƒU‚É‚Ä”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—pƒXƒ^ƒbƒN—̈æ‚ð—pˆÓ‚µ‚½ê‡,
85 ; ƒ†[ƒU—̈æ‚ðÝ’è‚·‚é.
86 ; kernel_cfg.c‚É‚Ä"_kernel_istkpt"‚Ì’l‚ðŒˆ’è‚·‚é.
87 ;
88 mov.l #__kernel_istkpt, r5
89 mov.l [r5], r0 ; ”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—pƒXƒ^ƒbƒN—̈æ‚ðÝ’è
90
91 ;
92 ; ‰Â•ÏƒxƒNƒ^ƒe[ƒuƒ‹‚̐ݒè
93 ;
94 mvtc #(topof C$VECT), intb ; ƒxƒNƒ^ƒe[ƒuƒ‹‚̐ݒè
95
96 ;
97 ; ƒn[ƒhƒEƒFƒAŒÅ—L‚̏‰Šú‰»ƒ‹[ƒ`ƒ“‚̌ďo‚µ
98 ;
99 mov.l #_hardware_init_hook, r5
100 cmp #0, r5
101 beq.b init_D
102 jsr r5
103
104 ;
105 ; ‰Šú’l‚ ‚è•Ï”—̈æ‚̏‰Šú‰»
106 ;
107init_D:
108 mov.l #(sizeof R), r3
109 cmp #0, r3
110 beq.b init_D_2 ; ƒTƒCƒY0‚Ȃ珉Šú‰»•K—v‚È‚µ
111 mov.l #(topof R), r1
112 mov.l #(topof D), r2
113 smovf
114
115init_D_2:
116 mov.l #(sizeof R_2), r3
117 cmp #0, r3
118 beq.b init_D_1 ; ƒTƒCƒY0‚Ȃ珉Šú‰»•K—v‚È‚µ
119 mov.l #(topof R_2), r1
120 mov.l #(topof D_2), r2
121 smovf
122
123init_D_1:
124 mov.l #(sizeof R_1), r3
125 cmp #0, r3
126 beq.b clear_B ; ƒTƒCƒY0‚Ȃ珉Šú‰»•K—v‚È‚µ
127 mov.l #(topof R_1), r1
128 mov.l #(topof D_1), r2
129 smovf
130
131 ;
132 ; ‰Šú’l‚È‚µ•Ï”—̈æ‚̏‰Šú‰»
133 ;
134clear_B:
135 mov.l #0, r2
136 mov.l #(topof B), r1
137 mov.l #(sizeof B) , r3
138 sstr.b
139
140clear_B_2:
141 mov.l #0, r2
142 mov.l #(topof B_2), r1
143 mov.l #(sizeof B_2) , r3
144 sstr.b
145
146clear_B_1:
147 mov.l #0, r2
148 mov.l #(topof B_1), r1
149 mov.l #(sizeof B_1) , r3
150 sstr.b
151
152 ;
153 ; software_init_hook ‚ðŒÄo‚µi0 ‚Å‚È‚¢ê‡j
154 ;
155 ; ƒ\ƒtƒgƒEƒFƒAŠÂ‹«i“Á‚Ƀ‰ƒCƒuƒ‰ƒŠj‚Ɉˑ¶‚µ‚Ä•K—v‚ȏ‰Šú‰»ˆ—
156 ; ‚ª‚ ‚éê‡‚́Csoftware_init_hook ‚Æ‚¢‚¤ŠÖ”‚ð—pˆÓ‚·‚ê‚΂悢.
157 ;
158 mov.l #_software_init_hook, r5
159 cmp #0, r5
160 beq.b kernel_link
161 jsr r5
162
163 ;
164 ; ƒJ[ƒlƒ‹ƒXƒ^[ƒg
165 ;
166kernel_link:
167 bra.a _sta_ker ; --> _sta_ker()
168
169 .end
170
Note: See TracBrowser for help on using the repository browser.