source: ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/start.asm

Last change on this file was 95, checked in by nmir-saito, 9 years ago

ファイルの mime-type 変更

  • Property svn:mime-type set to text/plain; charset=shift_jis
File size: 4.6 KB
Line 
1;
2; TOPPERS/SSP Kernel
3; Smallest Set Profile Kernel
4;
5; Copyright (C) 2014 by Naoki Saito
6; Nagoya Municipal Industrial Research Institute, JAPAN
7;
8; 上記著作権者は,以下の (1)〜(4) の条件を満たす場合に限り,本ソフトウェ
9; ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改変・
10; 再配布(以下,利用と呼ぶ)することを無償で許諾する.
11; (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作権
12; 表示,この利用条件および下記の無保証規定が,そのままの形でソース
13; コード中に含まれていること.
14; (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使用
15; できる形で再配布する場合には,再配布に伴うドキュメント(利用者マ
16; ニュアルなど)に,上記の著作権表示,この利用条件および下記の無保
17; 証規定を掲載すること.
18; (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使用
19; できない形で再配布する場合には,次のいずれかの条件を満たすこと.
20; (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著作
21; 権表示,この利用条件および下記の無保証規定を掲載すること.
22; (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに報
23; 告すること.
24; (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損害
25; からも,上記著作権者およびTOPPERSプロジェクトを免責すること.また,
26; 本ソフトウェアのユーザまたはエンドユーザからのいかなる理由に基づ
27; く請求からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
28;
29; 本ソフトウェアは,無保証で提供されているものである.上記著作権者およ
30; びTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的に対す
31; る適合性も含めて,いかなる保証も行わない.また,本ソフトウェアの利用
32; により直接的または間接的に生じたいかなる損害に関しても,その責任を負
33; わない.
34;
35;
36
37;
38; スタートアップルーチン
39; プロセッサはS2コア,ミディアムモデルを対象とする
40;
41
42;
43; グローバルシンボル
44;
45 ; セグメント先頭アドレス(segment_s.asm)
46 extrn _@R_INIT, _@R_INIS, _@RLINIT
47 extrn _@INIT, _@DATA, _@INIS, _@DATS, _@INITL, _@DATAL
48
49 ; セグメント末尾アドレス(segment_e.asm)
50 extrn _?R_INIT, _?R_INIS, _?RLINIT
51 extrn _?INIT, _?DATA, _?INIS, _?DATS, _?INITL, _?DATAL
52
53 ; スタックポインタの初期値(kernel_cfg.c)
54 extrn __kernel_istkpt
55
56 ; カーネル開始処理(kernel/startup.c)
57 extrn _sta_ker
58
59 ; saddr領域の先頭アドレス,サイズ(リンカで定義)
60 extrn _@SADBEG, _@SADSIZ
61
62 ; エントリポイント
63 public _start
64
65
66;
67; 定数定義
68;
69 ; MAA(PMCのビット0): 0 または 1
70 ; 0の場合,00000H--0FFFFH を F0000H--FFFFFHへミラー
71 ; 1の場合,10000H--1FFFFH を F0000H--FFFFFHへミラー
72INIT_MAA EQU 0
73
74;
75; マクロ定義
76;
77 ; セグメント間のデータコピー(farのROMからnearのRAMへ,srcのサイズ分)
78copy_seg macro src, dst
79 local _1, _2
80 mov es, #highw _@&src
81 movw hl, #loww _@&src
82 movw de, #loww _@&dst
83 br $_2
84_1:
85 mov a, es:[hl]
86 mov [de], a
87 incw hl
88 incw de
89_2:
90 movw ax, hl
91 cmpw ax, #loww _?&src
92 bnz $_1
93 endm
94
95 ; セグメント間のデータコピー(farのROMからfarのRAMへ,srcのサイズ分)
96copy_fseg MACRO src, dst
97 local _1, _2
98 movw hl, #loww _@&src
99 movw de, #loww _@&dst
100 br $_2
101_1:
102 mov es, #highw _@&src
103 mov a, es:[hl]
104 mov es, #highw _@&dst
105 mov es:[de], a
106 incw hl
107 incw de
108_2:
109 movw ax, hl
110 cmpw ax, #loww _?&src
111 bnz $_1
112 endm
113
114 ; セグメントのデータクリア(near RAM)
115clear_seg MACRO dst
116 local _1, _2
117 mov es, #0fh
118 movw hl, #loww _@&dst
119 movw ax, #loww _?&dst
120 br $_2
121_1:
122 mov [hl+0], #0
123 incw hl
124_2:
125 cmpw ax, hl
126 bnz $_1
127 endm
128
129 ; セグメントのデータクリア(far RAM)
130clear_fseg MACRO dst
131 local _1, _2
132 mov es, #highw _@&dst
133 movw hl, #loww _@&dst
134 movw ax, #loww _?&dst
135 br $_2
136_1:
137 mov es:[hl+0], #0
138 incw hl
139_2:
140 cmpw ax, hl
141 bnz $_1
142 endm
143
144;
145; システム開始
146;
147@@CODE CSEG BASE
148_start:
149
150 ;
151 ; PSWの設定
152 ;
153 di ; 割込み禁止(割込みロック相当の割込み禁止)
154 sel rb0 ; レジスタバンク(RB0)
155
156 ;
157 ; ミラー領域の設定
158 ;
159 mov a, #INIT_MAA
160 mov1 cy, a.0
161 mov1 maa, cy
162
163 ;
164 ; スタックポインタの設定
165 ;
166 movw de, #__kernel_istkpt
167 mov es, #00H
168 movw ax, es:[de]
169 movw sp, ax
170
171 ;
172 ; _hardware_init_hook の呼び出し(もしあれば)
173 ;
174 ;call !!_hardware_init_hook
175
176 ;
177 ; メモリ初期化
178 ;
179 copy_seg R_INIS, INIS
180 copy_seg R_INIT, INIT
181 copy_fseg RLINIT, INITL
182
183 clear_seg DATS
184 clear_seg DATA
185 clear_fseg DATAL
186
187 ; saddr領域の初期化
188 mov b,#_@SADSIZ
189 clrw ax
190saddr_init_loop:
191 dec b
192 dec b
193 movw _@SADBEG[b], ax
194 bnz $saddr_init_loop
195
196 ;
197 ; _sofrware_init_hook の呼び出し(もしあれば)
198 ;
199 ;call !!_software_init_hook
200
201 ;
202 ; sta_ker (kernel/startup.c) の呼び出し
203 ;
204 br !!_sta_ker
205
206_loop:
207 br $_loop
208
209 END
Note: See TracBrowser for help on using the repository browser.