3 * Toyohashi Open Platform for Embedded Real-Time Systems/
4 * Advanced Standard Profile Kernel
6 * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7 * Toyohashi Univ. of Technology, JAPAN
8 * Copyright (C) 2005-2008 by Embedded and Real-Time Systems Laboratory
9 * Graduate School of Information Science, Nagoya Univ., JAPAN
11 * 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
12 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
13 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
14 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
15 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
17 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
18 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
19 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
21 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
22 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
24 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
25 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
26 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
28 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
29 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
30 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
31 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
34 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
35 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
36 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
37 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
40 * @(#) $Id: target_config.h 887 2008-04-11 11:16:07Z hiro $
44 * ターゲット依存モジュール(DVE-68K/40用)
46 * カーネルのターゲット依存部のインクルードファイル.kernel_impl.hのター
50 #ifndef TOPPERS_TARGET_CONFIG_H
51 #define TOPPERS_TARGET_CONFIG_H
54 * ターゲットシステムのハードウェア資源の定義
61 #ifdef TOPPERS_ENABLE_TRACE
62 #include "logtrace/trace_config.h"
63 #endif /* TOPPERS_ENABLE_TRACE */
66 * ASPカーネル動作時のメモリマップと関連する定義
68 * 00000000 - 0000ffff ROMモニタ/スタブワークエリア(64KB)
69 * 00010000 - 000fffff コード領域(約1MB)
70 * 00100000 - データ領域(約3MB)
71 * - 003fffff デフォルトの非タスクコンテキスト用のスタック領域
75 * デフォルトの非タスクコンテキスト用のスタック領域の定義
77 #define DEFAULT_ISTKSZ 0x2000U
78 #define DEFAULT_ISTK (void *)(0x00400000U - DEFAULT_ISTKSZ)
80 #ifndef TOPPERS_MACRO_ONLY
83 * プロセッサ識別のための変数(マルチプロセッサ対応)
85 extern uint_t board_id; /* ボードID */
86 extern void *board_addr; /* ローカルメモリの先頭アドレス */
91 * ビットパターンを求めるのを容易にするために,8は欠番になっている.
93 #define VALID_INTNO(intno) (1U <= (intno) && (intno) <= 31U && (intno) != 8U)
94 #define VALID_INTNO_DISINT(intno) VALID_INTNO(intno)
95 #define VALID_INTNO_CFGINT(intno) VALID_INTNO(intno)
98 * 割込み要求を操作するためのビットパターンを求めるマクロ
100 * シフト演算の遅いプロセッサで,メモリに余裕がある場合には,表を引く
101 * 形で実装した方がよいだろう.表を引くなら,割込み番号8を欠番にする
104 #define DGA_INT_BITPAT(intno) (1U << (32U - (intno)))
107 * レベルトリガ/エッジトリガが設定できるかの判定用定数
109 #define DGA_INT_TRG_CONF (0xe0000000U) /* いずれにも設定できる */
110 #define DGA_INT_TRG_LEVEL (0x108f00feU) /* レベルトリガに固定 */
111 #define DGA_INT_TRG_EDGE (0x0e70ff00U) /* エッジトリガに固定 */
114 * 割込み属性が設定されているかを判別するための変数(kernel_cfg.c)
116 extern const uint32_t bitpat_cfgint;
121 * 割込み属性が設定されていない割込み要求ラインに対して割込み要求禁止
122 * フラグをセットしようとした場合には,falseを返す.
125 x_disable_int(INTNO intno)
127 uint32_t bitpat = DGA_INT_BITPAT(intno);
129 if ((bitpat_cfgint & bitpat) == 0U) {
132 dga_bit_and((void *) TADR_DGA_CSR21, ~bitpat);
136 #define t_disable_int(intno) x_disable_int(intno)
137 #define i_disable_int(intno) x_disable_int(intno)
142 * 割込み属性が設定されていない割込み要求ラインに対して割込み要求禁止
143 * フラグをクリアしようとした場合には,falseを返す.
146 x_enable_int(INTNO intno)
148 uint32_t bitpat = DGA_INT_BITPAT(intno);
150 if ((bitpat_cfgint & bitpat) == 0U) {
153 dga_bit_or((void *) TADR_DGA_CSR21, bitpat);
157 #define t_enable_int(intno) x_enable_int(intno)
158 #define i_enable_int(intno) x_enable_int(intno)
164 x_clear_int(INTNO intno)
166 dga_write((void *) TADR_DGA_CSR23, DGA_INT_BITPAT(intno));
169 #define t_clear_int(intno) x_clear_int(intno)
170 #define i_clear_int(intno) x_clear_int(intno)
176 x_probe_int(INTNO intno)
178 return((dga_read((void *) TADR_DGA_CSR20) & DGA_INT_BITPAT(intno)) != 0U);
181 #define t_probe_int(intno) x_probe_int(intno)
182 #define i_probe_int(intno) x_probe_int(intno)
187 * DVE-68K/40のIRCでは,割込み要求ラインの割込み優先度にNMIを指定する
188 * ことができため,-7を与えるとNMIに設定されることとする(ターゲット定
191 extern void x_config_int(INTNO intno, ATR intatr, PRI intpri);
194 * 割込みハンドラの入口で必要なIRC操作
196 * エッジトリガの場合には,割込み要求をクリアする.エッジトリガかレベ
197 * ルトリガかが設定できる場合も,現在の設定値を見ずにクリアしている.
198 * レベルトリガの場合もクリア処理をして差し支えないが,最適化で消える
199 * ことを期待して,クリアしないこととしている.
202 i_begin_int(INTNO intno)
204 if ((DGA_INT_BITPAT(intno) & (DGA_INT_TRG_CONF | DGA_INT_TRG_EDGE))
211 * 割込みハンドラの出口で必要なIRC操作
213 * DVE-68K/40では必要なIRC操作はない.
216 i_end_int(INTNO intno)
220 #endif /* TOPPERS_MACRO_ONLY */
222 #ifndef TOPPERS_MACRO_ONLY
227 extern void target_initialize(void);
234 extern void target_exit(void) NoReturn;
236 #endif /* TOPPERS_MACRO_ONLY */
239 * 微少時間待ちのための定義(本来はSILのターゲット依存部)
241 #define SIL_DLY_TIM1 420
242 #define SIL_DLY_TIM2 90
245 * プロセッサ依存モジュール(M68040用)
247 #include "m68k_gcc/prc_config.h"
249 #endif /* TOPPERS_TARGET_CONFIG_H */