source: anotherchoice/tags/jsp-1.4.4-full-UTF8/config/mips3/start.S@ 26

Last change on this file since 26 was 26, checked in by ykominami, 12 years ago

initial

File size: 5.8 KB
Line 
1/*
2 * TOPPERS/JSP Kernel
3 * Toyohashi Open Platform for Embedded Real-Time Systems/
4 * Just Standard Profile Kernel
5 *
6 * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7 * Toyohashi Univ. of Technology, JAPAN
8 * Copyright (C) 2000-2003 by Industrial Technology Institute,
9 * Miyagi Prefectural Government, JAPAN
10 *
11 * 上記著作権者
12は,以下の (1)〜(4) の条件か,Free Software Foundation
13 * によってå…
14¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
15 * 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
16 * を改変したものを含む.以下同じ)を使用・複製・改変・再é…
17å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
18 * 利用と呼ぶ)することを無償で許諾する.
19 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
20 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
21 * スコード中に含まれていること.
22 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
23 * 用できる形で再é…
24å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
25å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
26 * 者
27マニュアルなど)に,上記の著作権表示,この利用条件および下記
28 * の無保証規定を掲載すること.
29 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
30 * 用できない形で再é…
31å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
32 * と.
33 * (a) 再é…
34å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
35マニュアルなど)に,上記の著
36 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
37 * (b) 再é…
38å¸ƒã®å½¢æ…
39‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
40 * 報告すること.
41 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
42 * 害からも,上記著作権者
43およびTOPPERSプロジェクトをå…
44è²¬ã™ã‚‹ã“と.
45 *
46 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者
47お
48 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
49 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
50 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
51 */
52
53#define _MACRO_ONLY
54
55#include "jsp_kernel.h" /* INIT_SR */
56
57/*
58 * MIPS3用スタートアップモジュール
59 * リセットベクタ 0xbfc00000番地にé…
60ç½®
61 *
62 * カーネルはアプリケーションとリンクして使用するだけなので
63 * JSPカーネルのみ使用する。
64 */
65
66 .section ".reset","xa"
67
68 .set noreorder
69
70 .align 2
71 .global reset
72
73reset:
74 /*
75 * CPUレジスタの初期化
76 */
77
78 /* HI, LO (乗除算レジスタ) */
79 mthi zero
80 mtlo zero
81
82 /* sp (スタックポインタ;非タスクコンテキスト用)
83 _stack_top は、システム依存部(リンカスクリプト推奨)定義 */
84 la sp, _stack_top
85
86 /* gp (グローバルポインタ)
87 _gp は、システム依存部(リンカスクリプト推奨)定義 */
88 la gp, _gp
89
90 /* k0 (割込み/CPU例外ネストカウンタ用) */
91 li k0, 0x1 /* タスク起動までは、非タスクコンテキストでの
92 実行とみなす。 */
93 /* k1は、既に汎用として利用しているので初期化しない。 */
94
95 /*
96 * CP0レジスタの初期化
97 */
98
99 /* SR (ステータスレジスタ)
100 (ここでコアの割込みマスクも設定する。これは、実質的な割込み制御は、
101 外部割込みコントローラで行うため。)
102 INIT_SR は、sys_config.h で定義 */
103 li t0, INIT_SR
104 mtc0 t0, Status
105
106 /* Config (コンフィグレジスタ)
107 INIT_CONFIG_MASK は、sys_config.h で定義 */
108 mfc0 t0, Config
109 li t1, INIT_CONFIG_MASK
110 or t0, t0, t1
111 mtc0 t0, Config
112
113 /* WatchLo (ウォッチLoレジスタ) */
114 mtc0 zero, WatchLo
115
116 /* Compare (比較レジスタ) */
117 li t0, 0xffffffff
118 mtc0 t0, Compare
119
120 /*
121 * hardware_init_hook を呼び出す。(0でない場合)
122 *
123 * ・ターゲットハードウェアに依存する初期化処理がある場合は,
124 * hardware_init_hook という関数を用意する.
125 * 例)ROM化の際、RAMを使用可能にするためのバスコントローラの初期化
126 * 今回は、sys_support.S 内
127で hardware_init_hook を定義している.
128 */
129hardware_init:
130 la t0, hardware_init_hook
131 beq t0, zero, bss_clear
132 nop
133 jalr ra, t0
134 nop
135
136 /*
137 * bssセクションをクリア
138 */
139bss_clear:
140 la t1, __bss_start
141 la t2, __bss_end
142 beq t1, t2, data_sec_copy
143 nop
144 sw zero, (t1)
145loop_bss_clear:
146 addi t1, t1, 4
147 sub t3, t2, t1
148 bgez t3, loop_bss_clear
149 sw zero, (t1)
150
151 /*
152 * dataセクションを初期化する (ROM化対応)
153 *
154 * __idata_start から __idata_end までを,__data_start 以降にコピーする
155 */
156data_sec_copy:
157 la t1, __idata_start
158 la t2, __idata_end
159 beq t1, t2, software_init
160 nop
161 la t3, __data_start
162loop_data_sec_copy:
163 lw t5, (t1)
164 sw t5, (t3)
165 addi t1, t1, 4
166 addi t3, t3, 4
167 sub t4, t2, t1
168 bgtz t4, loop_data_sec_copy
169 nop
170
171 /*
172 * software_init_hook を呼び出す(0 でない場合)
173 *
174 * ソフトウェア環境(特にライブラリ)に依存して必
175要な初期化処理がある
176 * 場合は,software_init_hook という関数を用意する.
177 */
178software_init:
179 la t0, software_init_hook
180 beq t0, zero, start_kernel
181 nop
182 jalr ra, t0
183 nop
184
185 /*
186 * カーネルを起動する
187 */
188start_kernel:
189 la t0, kernel_start
190 j t0
191 nop
Note: See TracBrowser for help on using the repository browser.