source: anotherchoice/tags/jsp-1.4.4-full-UTF8/config/microblaze/cpu_config.h@ 26

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

initial

File size: 7.9 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 *
9 * 上記著作権者
10は,以下の (1)〜(4) の条件か,Free Software Foundation
11 * によってå…
12¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
13 * 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
14 * を改変したものを含む.以下同じ)を使用・複製・改変・再é…
15å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
16 * 利用と呼ぶ)することを無償で許諾する.
17 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
18 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
19 * スコード中に含まれていること.
20 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
21 * 用できる形で再é…
22å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
23å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
24 * 者
25マニュアルなど)に,上記の著作権表示,この利用条件および下記
26 * の無保証規定を掲載すること.
27 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
28 * 用できない形で再é…
29å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
30 * と.
31 * (a) 再é…
32å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
33マニュアルなど)に,上記の著
34 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
35 * (b) 再é…
36å¸ƒã®å½¢æ…
37‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
38 * 報告すること.
39 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
40 * 害からも,上記著作権者
41およびTOPPERSプロジェクトをå…
42è²¬ã™ã‚‹ã“と.
43 *
44 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者
45お
46 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
47 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
48 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
49 *
50 * @(#) $Id: cpu_config.h,v 1.9 2005/07/06 01:48:21 honda Exp $
51 */
52
53
54/*
55 * プロセッサ依存モジュール(MicroBlaze用)
56 */
57
58#ifndef _CPU_CONFIG_H_
59#define _CPU_CONFIG_H_
60
61/*
62 * カーネルの内
63部識別名のリネーム
64 */
65#include <cpu_rename.h>
66
67
68/*
69 * プロセッサの特殊命令のインライン関数定義
70 */
71#ifndef _MACRO_ONLY
72#include <cpu_insn.h>
73#endif /* _MACRO_ONLY */
74
75
76/*
77 * TCB 関連の定義
78 *
79 * cpu_context.h にå…
80¥ã‚Œã‚‹æ–¹ãŒã‚¨ãƒ¬ã‚¬ãƒ³ãƒˆã ãŒï¼Œå‚ç…
81§ã®ä¾å­˜æ€§ã®é–¢ä¿‚で,
82 * cpu_context.h にはå…
83¥ã‚Œã‚‰ã‚Œãªã„.
84 */
85
86/*
87 * TCB 中のフィールドのビット幅
88の定義
89 */
90#define TBIT_TCB_PRIORITY 8 /* priority フィールドのビット幅
91 */
92#define TBIT_TCB_TSTAT 8 /* tstat フィールドのビット幅
93 */
94
95
96/*
97 * キャッシュの状æ…
98‹
99 */
100#if defined(D_CACHE_ENABLE) && defined(I_CACHE_ENABLE)
101#define MSR_CACHE_SETTING MSR_DCE|MSR_ICE
102#elif defined(D_CACHE_ENABLE)
103#define MSR_CACHE_SETTING MSR_DCE
104#elif defined(I_CACHE_ENABLE)
105#define MSR_CACHE_SETTING MSR_ICE
106#else
107#define MSR_CACHE_SETTING 0x00
108#endif
109
110
111#ifndef _MACRO_ONLY
112/*
113 * タスクコンテキストブロックの定義
114 */
115typedef struct task_context_block {
116 VP sp; /* スタックポインタ */
117 FP pc; /* プログラムカウンタ */
118} CTXB;
119
120
121/*
122 * 割り込みのネスト回数のカウント
123 */
124extern UW interrupt_count;
125
126/*
127 * システム状æ…
128‹å‚ç…
129§
130 */
131
132Inline BOOL
133sense_context()
134{
135 return(interrupt_count > 0);
136}
137
138Inline BOOL
139sense_lock()
140{
141 return((current_msr() & MSR_IE) == 0);
142}
143
144#define t_sense_lock sense_lock
145#define i_sense_lock sense_lock
146
147
148
149/*
150 * CPUロックとその解除
151 *
152 */
153#define t_lock_cpu lock_cpu
154#define i_lock_cpu lock_cpu
155#define t_unlock_cpu unlock_cpu
156#define i_unlock_cpu unlock_cpu
157
158Inline void
159lock_cpu()
160{
161 disint();
162}
163
164Inline void
165unlock_cpu()
166{
167 enaint();
168}
169
170
171/*
172 * タスクディスパッチャ
173 */
174
175/*
176 * 最高優å…
177ˆé †ä½ã‚¿ã‚¹ã‚¯ã¸ã®ãƒ‡ã‚£ã‚¹ãƒ‘ッチ(cpu_support.S)
178 *
179 * dispatch は,タスクコンテキストから呼び出されたサービスコール処理
180 * 内
181で,CPUロック状æ…
182‹ã§å‘¼ã³å‡ºã•ãªã‘ればならない.
183 */
184extern void dispatch(void);
185
186/*
187 * 現在のコンテキストを捨ててディスパッチ(cpu_support.S)
188 *
189 * exit_and_dispatch は,CPUロック状æ…
190‹ã§å‘¼ã³å‡ºã•ãªã‘ればならない.
191 */
192extern void exit_and_dispatch(void);
193
194
195/*
196 * 割込みハンドラ/CPU例外ハンドラの設定
197 * MicroBlazeは例外ベクタは存在するが,例外を発生する事象はないため
198 * 例外関連は空の関数を用意しておく
199 */
200
201
202/*
203 * 割り込みハンドラ/ビットマスクのテーブル
204 * int_handler_table[] は割込みハンドラを登録するテーブル
205 * int_bit_table[] は割込みの優å…
206ˆé †ä½ã«å¿œã˜ãŸãƒ“ットのテーブルであり,
207 * MicroBlazeのシフト命令は,1命令で1ビットしかシフトできないため,
208 * 割込みが発生してからこのビットパターンを生成すると時間がかかるため
209 *
210 */
211extern FP int_handler_table[32];
212extern UW int_bit_table[32];
213
214/*
215 * CPU例外ハンドラの疑似テーブル
216 */
217/*
218extern FP exc_table[];
219*/
220
221extern FP exception_entry();
222extern FP interrupt_entry();
223
224
225/*
226 *
227 * 割込みハンドラの設定
228 *
229 * 割込み優å…
230ˆåº¦ inhno の割込みハンドラの起動番地を inthdr に設定する.
231 * 疑似テーブルに登録する
232 *
233 */
234
235Inline void
236define_inh(INHNO inhno, FP inthdr)
237{
238 int_handler_table[inhno-1] = inthdr;
239}
240
241/*
242 * CPU例外ハンドラの設定
243 * 擬似ベクターテーブルに登録
244 * Not Support!
245 */
246Inline void
247define_exc(EXCNO excno, FP exchdr)
248{
249
250}
251
252
253/*
254 * 割込みハンドラ/CPU例外ハンドラの出å…
255¥å£å‡¦ç†
256 *
257 */
258
259
260/*
261 * 割込みハンドラの出å…
262¥å£å‡¦ç†ã®ç”Ÿæˆãƒžã‚¯ãƒ­
263 */
264
265#define INTHDR_ENTRY(inthdr) extern void inthdr(void)
266
267#define INT_ENTRY(inthdr) inthdr
268
269/*
270 * CPU例外ハンドラの出å…
271¥å£å‡¦ç†ã®ç”Ÿæˆãƒžã‚¯ãƒ­
272 *
273 */
274#define EXCHDR_ENTRY(exchdr) extern void exchdr(VP sp)
275
276#define EXC_ENTRY(exchdr) exchdr
277
278/*
279 * CPU例外の発生した時のシステム状æ…
280‹ã®å‚ç…
281§
282 */
283
284/*
285 * CPU例外の発生した時のコンテキスト判定
286 * Not Support!
287 */
288Inline BOOL
289exc_sense_context(VP p_excinf)
290{
291 return(interrupt_count > 1);
292}
293
294/*
295 * CPU例外の発生した時のCPUロック状æ…
296‹ã®å‚ç…
297§
298 * Not Support!
299 * Not Yet!
300 */
301Inline BOOL
302exc_sense_lock(VP p_excinf)
303{
304 return(FALSE);
305}
306
307
308/*
309 * プロセッサ依存の初期化
310 */
311extern void cpu_initialize(void);
312
313/*
314 * プロセッサ依存の終了時処理
315 */
316extern void cpu_terminate(void);
317
318
319/*
320 * 未登録の割込み/例外発生時のログ出力
321 */
322extern void no_reg_interrupt(void);
323/* extern void cpu_expevt(VW,VW,VW,VW); */
324extern void cpu_interrupt(void);
325
326#endif /* _MACRO_ONLY_ */
327
328/*
329 * vxget_tim をサポートするかどうかの定義
330 */
331#define SUPPORT_VXGET_TIM
332
333/*
334 * シリアルポート番号に関する定義
335 */
336#define TNUM_PORT 1 /* サポートするシリアルポートの数 */
337#define TNUM_SIOP 1 /* サポートするシリアルI/Oポートの数 */
338
339/*
340 * システムタスクに関する定義
341 */
342#define LOGTASK_PORTID 1 /* システムログを出力するシリアルポート番号 */
343
344
345#endif /* _CPU_CONFIG_H_ */
Note: See TracBrowser for help on using the repository browser.