source: atk1_sh2/trunk/config/sh2-gnu/start.S@ 23

Last change on this file since 23 was 4, checked in by msugi, 14 years ago

Interface誌2006年8月号添付のTOPPERS/OSEK用SH2をTOPPERS/ATK1に対応させました.多少のバグフィックスも行っています.

File size: 4.5 KB
Line 
1/*
2 * TOPPERS/OSEK Kernel
3 * Toyohashi Open Platform for Embedded Real-Time Systems/
4 * OSEK Kernel
5 *
6 * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7 * Toyohashi Univ. of Technology, JAPAN
8 * Copyright (C) 2004 by Embedded and Real-Time Systems Laboratory
9 * Graduate School of Information Science, Nagoya Univ., JAPAN
10 * Copyright (C) 2001-2003 by Industrial Technology Institute,
11 * Miyagi Prefectural Government, JAPAN
12 * Copyright (C) 2006 by Witz Corporation, JAPAN
13 *
14 * ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì (1)`(4) ‚ÌðŒ‚©CFree Software Foundation
15 * ‚É‚æ‚Á‚ÄŒö•\‚³‚ê‚Ä‚¢‚é GNU General Public License ‚Ì Version 2 ‚É‹L
16 * q‚³‚ê‚Ä‚¢‚éðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒFƒAi–{ƒ\ƒtƒgƒEƒFƒA
17 * ‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü•ÏEÄ”z•ziˆÈ‰ºC
18 * —˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
19 * (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
20 * Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
21 * ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
22 * (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
23 * —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ…
24ƒƒ“ƒgi—˜—p
25 * ŽÒƒ}ƒjƒ…
26ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
27 * ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
28 * (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
29 * —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
30 * ‚ƁD
31 * (a) Ä”z•z‚É”º‚¤ƒhƒLƒ…
32ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ…
33ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
34 * ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
35 * (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
36 * •ñ‚·‚邱‚ƁD
37 * (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
38 * ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
39 *
40 * –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
41 * ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC‚»‚Ì“K—p‰Â”\«‚à
42 * ŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼
43 * Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»‚̐ӔC‚𕉂í‚È‚¢D
44 *
45 */
46
47/*
48 * ƒJ[ƒlƒ‹—p‚̃Xƒ^[ƒgƒAƒbƒvƒ‚ƒWƒ…
49[ƒ‹(SH2—p)
50 */
51
52#define _MACRO_ONLY
53#include "cpu_config.h"
54#include "sys_defs.h"
55
56/*
57 * ƒZƒNƒVƒ‡ƒ“’è‹`‚̃Cƒ“ƒNƒ‹[ƒh
58 */
59
60/* ŠO•”ŽQÆéŒ¾ */
61 .globl hardware_init_hook
62 .globl software_init_hook
63 .globl _main
64
65 .section ".text" , "ax"
66 .align 2
67/*
68 * ƒŠƒZƒbƒgŒã‚Í‚±‚±‚©‚çƒvƒƒOƒ‰ƒ€ŠJŽn
69 */
70 .globl _start
71_start:
72 /*
73 * SRÝ’è
74 */
75 mov.l maxipm , r0
76 ldc r0 , sr
77
78 /*
79 * Š„ž‚݃Xƒ^ƒbƒNƒ|ƒCƒ“ƒ^‰Šú‰»
80 */
81 mov.l stack_init, r15
82
83 /*
84 * Š„‚荞‚݃xƒNƒ^æ“ª”Ô’nÝ’è
85 */
86 mov.l vbr_init, r0
87 ldc r0 , vbr
88
89 /*
90 * hardware_init_hook ‚̌ďo‚µi0 ‚Å‚È‚¢ê‡j
91 *
92 * ƒ^[ƒQƒbƒgƒn[ƒhƒEƒFƒA‚Ɉˑ¶‚µ‚Ä•K—v‚ȏ‰Šú‰»ˆ—‚ª‚ ‚éê‡
93 * ‚́Chardware_init_hook ‚Æ‚¢‚¤ŠÖ”‚ð—pˆÓ‚·‚éD
94 */
95 mov.l hardware_init_hook_adr , r1
96 tst r1 , r1
97 bt hardware_init_hook_r
98 jsr @r1
99 nop
100hardware_init_hook_r:
101
102 /*
103 * bss—̈æ‚̃[ƒƒNƒŠƒA
104 */
105 mov.l _bss_start_adr , r0
106 mov.l _bss_end_adr , r1
107 mov #0 , r2
108bss_clear_loop:
109 cmp/ge r1 , r0
110 bt bss_clear_end
111 mov.l r2 , @r0
112 add #4 , r0
113 bra bss_clear_loop
114bss_clear_end:
115 /*
116 * data—̈æ‚̏‰Šú‰»
117 */
118 mov.l __idata_start_adr,r1
119 mov.l __idata_end_adr,r2
120 cmp/eq r1,r2
121 bt data_init_end
122 mov.l __data_start_adr,r0
123data_init:
124 mov.l @r1+,r4
125 mov.l r4,@r0
126 cmp/hi r1,r2
127 add #4,r0
128 bt data_init
129data_init_end:
130 /*
131 * software_init_hook ‚ðŒÄo‚µi0 ‚Å‚È‚¢ê‡j
132 *
133 * ƒ\ƒtƒgƒEƒFƒAŠÂ‹«i“Á‚Ƀ‰ƒCƒuƒ‰ƒŠj‚Ɉˑ¶‚µ‚Ä•K—v‚ȏ‰Šú‰»ˆ
134 * —‚ª‚ ‚éê‡‚́Csoftware_init_hook ‚Æ‚¢‚¤ŠÖ”‚ð—pˆÓ‚·‚ê‚Î
135 * ‚æ‚¢D
136 */
137 mov.l software_init_hook_adr , r1
138 tst r1 , r1
139 bt software_init_hook_r
140 jsr @r1
141 nop
142software_init_hook_r:
143 /*
144 * ƒ†[ƒU[ƒƒCƒ“ŠÖ”‚ÖƒWƒƒƒ“ƒv
145 */
146 mov.l main_adr , r0
147 jsr @r0
148 nop
149exit_loop:
150 /*
151 * main‚©‚ç–ß‚Á‚Ä‚«‚½ê‡‚͈À‘S‚Ì‚½‚ß–³ŒÀƒ‹[ƒv
152 */
153 bra exit_loop
154 nop
155
156stack_init:
157 .long STACK_TOP
158vbr_init:
159 .long VECTOR_TOP
160hardware_init_hook_adr:
161 .long _hardware_init_hook
162software_init_hook_adr:
163 .long _software_init_hook
164_bss_start_adr:
165 .long __bss_start
166_bss_end_adr:
167 .long __bss_end
168main_adr:
169 .long _main
170maxipm:
171 .long 0x000000f0
172
173__idata_start_adr:
174 .long __idata_start
175__idata_end_adr:
176 .long __idata_end
177__data_start_adr:
178 .long __data_start
179
180 .end
Note: See TracBrowser for help on using the repository browser.