Index: ssp_qb_r5f100le_cs/trunk/doc/configurator.txt
===================================================================
--- ssp_qb_r5f100le_cs/trunk/doc/configurator.txt	(revision 93)
+++ ssp_qb_r5f100le_cs/trunk/doc/configurator.txt	(revision 95)
@@ -1,16 +1,12 @@
 
-		TOPPERS/SSPJ[l
-		RtBM
-[^dl
-
-		Îo[W: Release 1.3.0
-		ÅIXV: 2014N 5 19ú
-
-±ÌhL
-gÍCTOPPERS/SSPJ[lÌRtBM
-[^ªWIÉ¶
-¬·×«t@CÌàeÉÂ¢Äðàµ½àÌÅ éD^[QbgË¶É¶¬
-·éàeÉÂ¢ÄÍC±ÌhL
-gÌÍÍOÅ éD
+		TOPPERS/SSPカーネル
+		コンフィギュレータ仕様
+
+		対応バージョン: Release 1.3.0
+		最終更新: 2014年 5月 19日
+
+このドキュメントは，TOPPERS/SSPカーネルのコンフィギュレータが標準的に生
+成すべきファイルの内容について解説したものである．ターゲット依存に生成
+する内容については，このドキュメントの範囲外である．
 
 ----------------------------------------------------------------------
@@ -24,113 +20,103 @@
              Nagoya Municipal Industrial Research Institute, JAPAN
 
- ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
- Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
- ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
- (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
-      \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
-     XR[hÉÜÜêÄ¢é±ÆD
- (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
-     pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
-gip
-     Ò}j
-AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
-     Ì³ÛØKèðfÚ·é±ÆD
- (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
-     pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
-     ÆD
-   (a) ÄzzÉº¤hL
-gipÒ}j
-AÈÇjÉCãLÌ
-       ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
-   (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
-       ñ·é±ÆD
- (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
-     Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
-     Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
-     RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
-     ÆÓ·é±ÆD
+ 上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ 変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+     権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+     スコード中に含まれていること．
+ (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+     用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+     者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+     の無保証規定を掲載すること．
+ (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+     用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+     と．
+   (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+       作権表示，この利用条件および下記の無保証規定を掲載すること．
+   (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+       報告すること．
+ (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+     害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+     また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+     由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+     免責すること．
  
- {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
- æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
- ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
- AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
- ÌÓCðíÈ¢D
+ 本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ の責任を負わない．
  
  $Id: configurator.txt 659 2015-05-19 09:45:26Z nmir-saito $
 ----------------------------------------------------------------------
 
-Ú
-
-E¶¬·ét@CÌíÞ
-EÃIAPIê
-EJ[l\¬Eú»wb_t@Cikernel_cfg.hj
-	(1) Åè¶¬ª
-	(2) IuWFNgÌè`
-	(3) IuWFNgÌIDÔÌè`
-EJ[l\¬Eú»t@Cikernel_cfg.cj
-	(1) Åè¶¬ª
-	(2) CN[hfBNeBui#includejÌ
-	(3) IuWFNgÌIDÔðÛ·éÏÌè`
-	(4) g[XO}NÌftHgè`
-	(5) eJ[lIuWFNgÉÖ·éè`
-		(5-1) ^XNÉÖ·éè`
-		(5-2) CxgtOÉÖ·éè`
-		(5-3) f[^L
-[ÉÖ·éè`
-		(5-4) üúnhÉÖ·éè`
-		(5-5) A[nhÉÖ·éè`
-	(6) ÝÉÖ·éè`
-		(6-1) ÝvCÉÖ·éè`
-		(6-2) ÝT[rX[`ÉÖ·éè`
-		(6-3) ÝnhÉÖ·éè`
-	(7) CPUáOÉÖ·éè`
-	(8) ¤LX^bNÌæÉÖ·éè`
-	(9) ^CCxgÇÉÖ·éè`
-	(10)eW
-[Ìú»ÖÌè`
-	(11)ú»[`ÌÀsÖÌè`
-	(12)I¹[`ÌÀsÖÌè`
-
-¶¬·ét@CÌíÞ
-
-SSPJ[lÌRtBM
-[^ÍCVXeRtBM
-[Vt@C
-ðµÄCJ[l\¬Eú»t@Cikernel_cfg.cjÆ\¬Eú
-»wb_t@Cikernel_cfg.hjð¶¬·éDÜ½CRtBM
-[^Ì
-ÌrÉCKvÈÔt@Cð¶¬·éD
-
-
-ÃIAPIê
-
-SSPJ[lÌRtBM
-[^ª·éÃIAPIÍÌÊèD
-
-(1) ^XNÇ@\
+○目次
+
+・生成するファイルの種類
+・静的API一覧
+・カーネル構成・初期化ヘッダファイル（kernel_cfg.h）
+	(1) 固定生成部分
+	(2) オブジェクト数の定義
+	(3) オブジェクトのID番号の定義
+・カーネル構成・初期化ファイル（kernel_cfg.c）
+	(1) 固定生成部分
+	(2) インクルードディレクティブ（#include）の処理
+	(3) オブジェクトのID番号を保持する変数の定義
+	(4) トレースログマクロのデフォルト定義
+	(5) 各カーネルオブジェクトに関する定義
+		(5-1) タスクに関する定義
+		(5-2) イベントフラグに関する定義
+		(5-3) データキューに関する定義
+		(5-4) 周期ハンドラに関する定義
+		(5-5) アラームハンドラに関する定義
+	(6) 割込みに関する定義
+		(6-1) 割込み要求ラインに関する定義
+		(6-2) 割込みサービスルーチンに関する定義
+		(6-3) 割込みハンドラに関する定義
+	(7) CPU例外に関する定義
+	(8) 共有スタック領域に関する定義
+	(9) タイムイベント管理に関する定義
+	(10)各モジュールの初期化関数の定義
+	(11)初期化ルーチンの実行関数の定義
+	(12)終了処理ルーチンの実行関数の定義
+
+○生成するファイルの種類
+
+SSPカーネルのコンフィギュレータは，システムコンフィギュレーションファイ
+ルを処理して，カーネル構成・初期化ファイル（kernel_cfg.c）と構成・初期
+化ヘッダファイル（kernel_cfg.h）を生成する．また，コンフィギュレータの
+処理の途中に，必要な中間ファイルを生成する．
+
+
+○静的API一覧
+
+SSPカーネルのコンフィギュレータが処理する静的APIは次の通り．
+
+(1) タスク管理機能
 	CRE_TSK(ID tskid, { ATR tskatr, intptr_t exinf, TASK task,
 						PRI itskpri, SIZE stksz, STK_T *stk })
 	DEF_EPR (ID tskid, { PRI exepri })
 
-(2) ¯úEÊM@\
+(2) 同期・通信機能
 	CRE_FLG(ID flgid, { ATR flgatr, FLGPTN iflgptn })
 	CRE_DTQ(ID dtqid, { ATR dtqatr, uint_t dtqcnt, void *dtqmb })
 
-¦ dtqmb ª NULL ÅÈ¢êÍT|[gµÈ¢D
-
-(3) ÔÇ@\
+※ dtqmb が NULL でない場合はサポートしない．
+
+(3) 時間管理機能
 	CRE_CYC(ID cycid, { ATR cycatr, intptr_t exinf, CYCHDR cychdr,
 						RELTIM cyctim, RELTIM cycphs })
 	CRE_ALM(ID almid, { ATR almatr, intptr_t exinf, ALMHDR almhdr })
 
-(4) ÝÇ@\
+(4) 割込み管理機能
 	CFG_INT(INTNO intno, { ATR intatr, PRI intpri })
 	ATT_ISR({ ATR isratr, intptr_t exinf, INTNO intno, ISR isr, PRI isrpri })
 	DEF_INH(INHNO inhno, { ATR inhatr, INTHDR inthdr })
 
-(5) CPUáOÇ@\
+(5) CPU例外管理機能
 	DEF_EXC(EXCNO excno, { ATR excatr, EXCHDR exchdr })
 
-(6) VXe\¬Ç@\
+(6) システム構成管理機能
 	DEF_ICS({ SIZE istksz, STK_T *istk })
 	DEF_STK({ SIZE stksz, STK_T *stk })
@@ -138,44 +124,42 @@
 	ATT_TER({ ATR teratr, intptr_t exinf, TERRTN terrtn })
 
-±êçÌÃIAPIÌp[^ÌàCID^Ìp[^ÍIuWFNg¯Ê¼C
-|C^^iTASKCCYCHDRCALMHDRCISRCINTHDRCEXCHDRCINIRTNCTERRTNC
-STK_T *j¨æÑ intptr_t ^Ìp[^ÍêÊè®p[^Æ·éD
-»Ì¼Ìp[^ÍC®è®p[^Æ·éD
-
-
-J[l\¬Eú»wb_t@Cikernel_cfg.hj
-
-J[l\¬Eú»wb_t@Cikernel_cfg.hjÉÍCÌè`ð¶¬·éD
-
-(1) Åè¶¬ª
-
-kernel_cfg.hª¡ñCN[h³êéÌðh®½ßÌLqð¶¬·éDï
-ÌIÉÍCt@CÌæªÉÌsð¶¬·éD
+これらの静的APIのパラメータの内，ID型のパラメータはオブジェクト識別名，
+ポインタ型（TASK，CYCHDR，ALMHDR，ISR，INTHDR，EXCHDR，INIRTN，TERRTN，
+STK_T *）および intptr_t 型のパラメータは一般定数式パラメータとする．
+その他のパラメータは，整数定数式パラメータとする．
+
+
+○カーネル構成・初期化ヘッダファイル（kernel_cfg.h）
+
+カーネル構成・初期化ヘッダファイル（kernel_cfg.h）には，次の定義を生成する．
+
+(1) 固定生成部分
+
+kernel_cfg.hが複数回インクルードされるのを防ぐための記述を生成する．具
+体的には，ファイルの先頭に次の行を生成する．
 
 #ifndef	TOPPERS_KERNEL_CFG_H
 #define	TOPPERS_KERNEL_CFG_H
 
-Ü½Ct@CÌöÉÌsð¶¬·éD
+また，ファイルの末尾に次の行を生成する．
 
 #endif	/* TOPPERS_KERNEL_CFG_H */
 
-(2) IuWFNgÌè`
-
-J[lªT|[g·éIuWFNgÌð}Nè`·évvZbTfB
-NeBui#definejð¶¬·éDïÌIÉÍCÌæ¤ÈLqð¶¬·éD
-
-#define TNUM_TSKID	<^XNÌ>
-#define TNUM_FLGID	<CxgtOÌ>
-#define TNUM_DTQID	<f[^L
-[Ì>
-#define TNUM_CYCID	<üúnhÌ>
-#define TNUM_ALMID	<A[nhÌ>
-
-(3) IuWFNgÌIDÔÌè`
-
-RtBM
-[^ªIDÔðèt¯½IuWFNgÌ¼OðCèt¯½
-IDÔÉ}Nè`·évvZbTfBNeBui#definejð¶¬·éD
-á¦ÎCÌæ¤ÈLqð¶¬·éD
+(2) オブジェクト数の定義
+
+カーネルがサポートするオブジェクトの数をマクロ定義するプリプロセッサディ
+レクティブ（#define）を生成する．具体的には，次のような記述を生成する．
+
+#define TNUM_TSKID	<タスクの数>
+#define TNUM_FLGID	<イベントフラグの数>
+#define TNUM_DTQID	<データキューの数>
+#define TNUM_CYCID	<周期ハンドラの数>
+#define TNUM_ALMID	<アラームハンドラの数>
+
+(3) オブジェクトのID番号の定義
+
+コンフィギュレータがID番号を割り付けたオブジェクトの名前を，割り付けた
+ID番号にマクロ定義するプリプロセッサディレクティブ（#define）を生成する．
+例えば，次のような記述を生成する．
 
 #define TASK1	1
@@ -184,46 +168,42 @@
 
 **************************************************************************
-SSPJ[lÌêCCRE_TSK É¨¯éN®DæxÌ¢ilÆµÄÍ¬³¢j
-ÔÉC1©çA±µ½lªIDÔÆµÄ»ê¼êÌ^XNÉèÄçêéD
+SSPカーネルの場合，CRE_TSK における起動時優先度の高い（値としては小さい）
+順番に，1から連続した値がID番号としてそれぞれのタスクに割り当てられる．
 **************************************************************************
 
 
-J[l\¬Eú»t@Cikernel_cfg.cj
-
-(1) Åè¶¬ª
-
-kernel_cfg.cpÌwb_t@CÆID©®t¯Êt@CðCN[h
-·évvZbTfBNeBui#includejð¶¬·éDïÌIÉÍC
-Ìsð¶¬·éD
+○カーネル構成・初期化ファイル（kernel_cfg.c）
+
+(1) 固定生成部分
+
+kernel_cfg.c用のヘッダファイルとID自動割付け結果ファイルをインクルード
+するプリプロセッサディレクティブ（#include）を生成する．具体的には，次
+の行を生成する．
 
 #include "kernel/kernel_int.h"
 #include "kernel_cfg.h"
 
-(2) CN[hfBNeBui#includejÌ
-
-VXeRtBM
-[Vt@CÉÜÜêéC¾êvvZbTÌC
-N[hfBNeBui#includejÆ¯êÌfBNeBui#includej
-ð¶¬·éDá¦ÎC
+(2) インクルードディレクティブ（#include）の処理
+
+システムコンフィギュレーションファイルに含まれるC言語プリプロセッサのイ
+ンクルードディレクティブ（#include）と同一のディレクティブ（#include）
+を生成する．例えば，
 
 #include "sample1.h"
 
-Æ¢¤CN[hfBNeBuÉÎµÄC
+というインクルードディレクティブに対して，
 
 #include "sample1.h"
 
-Æ¢¤fBNeBuð¶¬·éD¶¬·éfBNeBuÌÍCVXe
-RtBM
-[Vt@CÅÌCN[hfBNeBuÌ
-Éêv³¹éD
-
-(3) IuWFNgÌIDÔðÛ·éÏÌè`
-
-RtBM
-[^ÉÎ·éIvVwèi--external-idjÉæèCRtB
-M
-[^ÍÏð¶¬·éDÏ¼Í ID Ôðèt¯½IuWFNg¼
-ÌöÉ "_id" ðtÁµ½¼ÌÆ·éDÏÌ^ÍCconst®«ðtÁµ½ID^
-ÆµCÏÌlÍèt¯½IDÔÆ·éDá¦ÎCÌæ¤ÈLqð¶¬·éD
+というディレクティブを生成する．生成するディレクティブの順序は，システ
+ムコンフィギュレーションファイル中でのインクルードディレクティブの順序
+に一致させる．
+
+(3) オブジェクトのID番号を保持する変数の定義
+
+コンフィギュレータに対するオプション指定（--external-id）により，コンフィ
+ギュレータは変数を生成する．変数名は ID 番号を割り付けたオブジェクト名
+の末尾に "_id" を付加した名称とする．変数の型は，const属性を付加したID型
+とし，変数の値は割り付けたID番号とする．例えば，次のような記述を生成する．
 
 const ID TASK1_id = 1;
@@ -231,8 +211,8 @@
 const ID ALM1_id = 1;
 
-(4) g[XO}NÌftHgè`
-
-kernel_cfg.cÌÅgp·ég[XO}NÌftHgè`ð¶¬·éD
-ïÌIÉÍCÌsð¶¬·éD
+(4) トレースログマクロのデフォルト定義
+
+kernel_cfg.cの中で使用するトレースログマクロのデフォルト定義を生成する．
+具体的には，次の行を生成する．
 
 #ifndef LOG_ISR_ENTER
@@ -245,209 +225,197 @@
 
 
-(5) eJ[lIuWFNgÉÖ·éè`
-
-VXeRtBM
-[Vt@CÉCIuWFNgð¶¬·éÃI
-APIuCRE_XXXvªÜÜêéeJ[lIuWFNgÉÖµÄCIuWFNg¶
-¬Ì½ßÌè`ð¶¬·éD
-
-RtBM
-[^ÍC¯¶íÞÌIuWFNgð¶¬·éÃIAPIðWßCe
-IuWFNgÉIDÔðèt¯éDIDÔÍC¼ÌIuWFNgÌIDÔÆ
-d¡ªÈ­CIDÔªA±·éæ¤Éèt¯éD
-
-RtBM
-[^ÍCIuWFNgÉèt¯éIDÔðwè·é½ßÌ
-IvVi--id-input-filejÀÑÉ IDÔðèt¯½IuWFNgÌ¼O
-¨æÑèt¯½IDÔÌgðt@CÉoÍ·é½ßÌIvV
-i--id-output-filejðÂDµ©µCSSPJ[lÅÍ±êçÌIvVÌ
-gpð´¥ÆµÄ ***Ö~*** ·éiRÍãqjD
+(5) 各カーネルオブジェクトに関する定義
+
+システムコンフィギュレーションファイル中に，オブジェクトを生成する静的
+API「CRE_XXX」が含まれる各カーネルオブジェクトに関して，オブジェクト生
+成のための定義を生成する．
+
+コンフィギュレータは，同じ種類のオブジェクトを生成する静的APIを集め，各
+オブジェクトにID番号を割り付ける．ID番号は，他のオブジェクトのID番号と
+重複がなく，ID番号が連続するように割り付ける．
+
+コンフィギュレータは，オブジェクトに割り付けるID番号を指定するための
+オプション（--id-input-file）並びに ID番号を割り付けたオブジェクトの名前
+および割り付けたID番号の組をファイルに出力するためのオプション
+（--id-output-file）を持つ．しかし，SSPカーネルではこれらのオプションの
+使用を原則として ***禁止*** する（理由は後述）．
 
 **************************************************************************
-yRz
-SSPJ[lÌêCu^XNIDÌêÉÀèvRtBM
-[^Í
---id-input-file Ìwèàeð³·éD»êÍCCRE_TSKÅwèµ½N®Dæ
-xÌÝèlªDæ³êé½ßÅ éDÜ½C--id-output-file Åwèµ½t@C
-ÖÌoÍàeà --id-input-file Åwèµ½^XNIDÌlª»ÌÜÜoÍ³ê
-éD»ÌoÍàeÍ kernel_cfg.h ÖoÍ³êé^XNIDÌlÆÍ³ÖWÅ éD
-]ÁÄC¬ª¶¶é°êª é±Æ©çCSSPJ[lÅÍ --id-input-file 
-¨æÑ --id-output-file IvVðwèµÄÍÈçÈ¢D
-
-{ÈçÎC--kernel=ssp ¨æÑ --id-input-file ð¯Éwèµ½êÉ
-RtBM
-[VG[Æ·×«Æ±ëÅ éDµ©µC±êçÌIvV
-ÉÎ·éÍSÄRtBM
-[^àÅÀ{³êCev[gt@C
-(kernel.tf)ÅÍ·é±ÆªÅ«È¢D»_ÅÍRtBM
-[^ÌÎ
-ÉÂ¢Ä¢èÅ é½ßbèIÉ±Ìæ¤Èµ¢ÆµÄ¢éD
+【理由】
+SSPカーネルの場合，「タスクIDの場合に限り」コンフィギュレータは
+--id-input-file の指定内容を無視する．それは，CRE_TSKで指定した起動時優先
+度の設定値が優先されるためである．また，--id-output-file で指定したファイ
+ルへの出力内容も --id-input-file で指定したタスクIDの値がそのまま出力され
+る．その出力内容は kernel_cfg.h へ出力されるタスクIDの値とは無関係である．
+従って，混乱が生じる恐れがあることから，SSPカーネルでは --id-input-file 
+および --id-output-file オプションを指定してはならない．
+
+本来ならば，--kernel=ssp および --id-input-file を同時に指定した場合に
+コンフィギュレーションエラーとすべきところである．しかし，これらのオプショ
+ンに対する処理は全てコンフィギュレータ内部で実施され，テンプレートファイル
+(kernel.tf)では処理することができない．現時点ではコンフィギュレータの対応
+について未定であるため暫定的にこのような扱いとしている．
 **************************************************************************
 
-eJ[lIuWFNgÉÖ·éè`ÌWIÈ\¬ÍCÌÊèÅ éDI
-uWFNgÉæÁÄáOª éêÉÍCIuWFNgÌÅà¾·éD
-
-(a) ÅåÌIuWFNgIDÌÏÌè`
-
-ÅåÌIuWFNgIDðÂÏÌè`ð¶¬·éDïÌIÉÍCIuWFN
-gÌÈªLðuXXX^xxxvÆ·éÆCÌæ¤Èsð¶¬·éD
+各カーネルオブジェクトに関する定義の標準的な構成は，次の通りである．オ
+ブジェクトによって例外がある場合には，オブジェクト毎の項で説明する．
+
+(a) 最大のオブジェクトIDの変数の定義
+
+最大のオブジェクトIDを持つ変数の定義を生成する．具体的には，オブジェク
+トの省略記号を「XXX／xxx」とすると，次のような行を生成する．
 
 const ID _kernel_tmax_xxxid = (TMIN_XXXID + TNUM_XXXID - 1);
 
-(b) IuWFNgÉKvÈÌæÌè`
-
-IuWFNgÉæÁÄÍCIuWFNgÉKvÈÌæÌè`ð¶¬·éD
-ïÌIÉÍCIuWFNgÌÅà¾·éD
-
-(c) IuWFNgÌú»ubNÌè`
-
-IuWFNgÌú»ubNÌè`ð¶¬·éDïÌIÉÍC
-	EIuWFNgÌÈªLðuXXX^xxxv
-	E®«ÚÌf[^^ðuYYYv
-	E®«ÚÌ¼Ìðuzzzv
-Æ·éÆCIuWFNgÌ®«ÚÉÌæ¤Èsð¶¬·éD
+(b) オブジェクトに必要なメモリ領域の定義
+
+オブジェクトによっては，オブジェクトに必要なメモリ領域の定義を生成する．
+具体的には，オブジェクト毎の項で説明する．
+
+(c) オブジェクトの初期化ブロックの定義
+
+オブジェクトの初期化ブロックの定義を生成する．具体的には，
+	・オブジェクトの省略記号を「XXX／xxx」
+	・属性項目のデータ型を「YYY」
+	・属性項目の名称を「zzz」
+とすると，オブジェクトの属性項目毎に次のような行を生成する．
 
 const YYY _kernel_xxxinib_zzz[TNUM_XXXID] = {
-	<IuWFNgIDª1ÌIuWFNgÉÎ·é zzz Ìú»îñ>,
-	<IuWFNgIDª2ÌIuWFNgÉÎ·é zzz Ìú»îñ>,
-				cc
-	<IuWFNgIDªTNUM_XXXIDÌIuWFNgÉÎ·é zzz Ìú»îñ>,
+	<オブジェクトIDが1のオブジェクトに対する zzz の初期化情報>,
+	<オブジェクトIDが2のオブジェクトに対する zzz の初期化情報>,
+				……
+	<オブジェクトIDがTNUM_XXXIDのオブジェクトに対する zzz の初期化情報>,
 };
 
-IuWFNgÌú»îñÌ`®ÍCIuWFNg¨æÑ®«ÚÉÙÈéD
-ïÌIÉÍIuWFNgÌÅà¾·éD
-
-(d) IuWFNgÌRg[ubNÌè`
-
-IuWFNgÌRg[ubNÌè`ð¶¬·éDïÌIÉÍC
-	EIuWFNgÌÈªLðuXXX^xxxv
-	E®«ÚÌf[^^ðuYYYv
-	E®«ÚÌ¼Ìðuzzzv
-Æ·éÆCIuWFNgÌ®«ÚÉÌæ¤Èsð¶¬·éD
+オブジェクトの初期化情報の形式は，オブジェクトおよび属性項目毎に異なる．
+具体的にはオブジェクト毎の項で説明する．
+
+(d) オブジェクトのコントロールブロックの定義
+
+オブジェクトのコントロールブロックの定義を生成する．具体的には，
+	・オブジェクトの省略記号を「XXX／xxx」
+	・属性項目のデータ型を「YYY」
+	・属性項目の名称を「zzz」
+とすると，オブジェクトの属性項目毎に次のような行を生成する．
 
 YYY _kernel_xxxcb_zzz[TNUM_XXXID];
 
-IuWFNgÌRg[ubNÌ`®ÍCIuWFNg¨æÑ®«ÚÉÙÈéD
-ïÌIÉÍIuWFNgÌÅà¾·éD
-
-
-(5-1) ^XNÉÖ·éè`
-
-SSPJ[lÍC^XNªêÂàÈ¢P[XÉÎµÄ¢È¢½ßC^XNÉÖ·é
-è`ÍK¸¶¬µÈ¯êÎÈçÈ¢D
-
-^XNÌÈªLÍuTSKvutskvÅ éD
-½¾µC^XNú»ubNÌÏ¼Í _kernel_tinib_<®«Ú¼> Å éD
-iuTSK^tskvÉã¦ÄuT^tvðp¢Ä¢éjD
-^XNRg[ubNÍ¶ÝµÈ¢D
-
-^XNú»ubNÉÍCuCRE_TSKvÃIAPIÅwè³êéîñÉÁ¦ÄC
-uDEF_EPRvÃIAPIÅwè³êéîñðÜßéD
-
-ÈºÅÍCVXeRtBM
-[Vt@CÉÌÃIAPIªÜÜêÄ
-¢éÉ¶¬·×«îñÉÂ¢Äq×éD
+オブジェクトのコントロールブロックの形式は，オブジェクトおよび属性項目毎に異なる．
+具体的にはオブジェクト毎の項で説明する．
+
+
+(5-1) タスクに関する定義
+
+SSPカーネルは，タスクが一つもないケースに対応していないため，タスクに関する
+定義は必ず生成しなければならない．
+
+タスクの省略記号は「TSK」「tsk」である．
+ただし，タスク初期化ブロックの変数名は _kernel_tinib_<属性項目名> である．
+（「TSK／tsk」に代えて「T／t」を用いている）．
+タスクコントロールブロックは存在しない．
+
+タスク初期化ブロックには，「CRE_TSK」静的APIで指定される情報に加えて，
+「DEF_EPR」静的APIで指定される情報を含める．
+
+以下では，システムコンフィギュレーションファイルに次の静的APIが含まれて
+いる時に生成すべき情報について述べる．
 
 CRE_TSK(tskid, { tskatr, exinf, task, itskpri, stksz, stk });
 DEF_EPR(tskid, { exepri });
 
-¦ È~Ìú»îñÌzñÉi[³êéÍCN®DæxÌ¢ÆÈéD
-¦ ÈºÈçC^XNID ªN®DæxÌ¢ÔÅèÄçêé©çÅ éD
-
-(5-1-1) ^XNÌú»îñi^XN®«j
-
-^XN®«Ìú»îñÍCÌ`®Æ·éD
+※ 以降の初期化情報の配列に格納される順序は，起動時優先度の高い順となる．
+※ なぜなら，タスクID が起動時優先度の高い順番で割り当てられるからである．
+
+(5-1-1) タスクの初期化情報（タスク属性）
+
+タスク属性の初期化情報は，次の形式とする．
 
 const ATR _kernel_tinib_tskatr[TNUM_TSKID] = {(tskatr)};
 
-(5-1-2) ^XNÌú»îñig£îñj
-
-^XNÌg£îñÌú»îñÍCÌ`®Æ·éD
+(5-1-2) タスクの初期化情報（拡張情報）
+
+タスクの拡張情報の初期化情報は，次の形式とする．
 
 const intptr_t _kernel_tinib_exinf[TNUM_TSKID] = {(intptr_t)(exinf)};
 
-(5-1-3) ^XNÌú»îñiN®Ônj
-
-^XNÌN®ÔnÌú»îñÍCÌ`®Æ·éD
+(5-1-3) タスクの初期化情報（起動番地）
+
+タスクの起動番地の初期化情報は，次の形式とする．
 
 const TASK _kernel_tinib_task[TNUM_TSKID] = {(task)};
 
-(5-1-4) ^XNÌú»îñiÀsDæxj
-
-^XNÌÀsDæxÌú»îñÍCÌ`®Æ·éD
-iÀÛÉÍüs³ê¸C1sÅoÍ³êéj
+(5-1-4) タスクの初期化情報（実行時優先度）
+
+タスクの実行時優先度の初期化情報は，次の形式とする．
+（実際には改行されず，1行で出力される）
 
 const TASK _kernel_tinib_epriority[TNUM_TSKID] = {
-	INT_PRIORITY(ÀsDæx)};
-
-ÀsDæxÌlÍ CRE_TSK ÌN®Dæx(itskpri) ¨æÑ
-DEF_EPR ÌÀsDæx(exepri) ÌÝèlð³ÉZo³êéD
-Zoû@ÉÂ¢ÄÍ(5-1-6)Éãq·éD
-
-(5-1-5) ready_primap ÌúlÌè`
-
-^XNÉÎµÄÍCrbg}bv ready_primap Ìúlîñð¶¬·éD
-^XN®«ÌÝèl©çêÓÉèßé±ÆªÅ«é©çÅ éD
-
-ïÌIÉÍÈºÌæ¤Èè`ð¶¬·éD
-
-const uint_t _kernel_init_rdypri = <ready_primapÌúl>;
-
-±±Å ready_primap ÌúlÍC^XN®«(tskatr)Ìl©çZo³êéD
-
-Ï _kernel_init_rdypri ÌerbgÍ»ê¼êÌ^XNÉÎ·éD
-^XNIDª1Ì^XNÍÅºÊrbg(LSB)ÉÎÃ¯çêÄ¨èC
-^XNIDÌlª1Â¦éÉ1ÂÊÌrbgª»ê¼êÎÃ¯çêéD
-á¦ÎC^XNIDª4Ì^XNÍÅºÊ©ç¦Ä4ÔÚÌrbgªÎ·éD
-
-^XN®«ÆµÄ TA_ACT ðÂ^XNÍC»Ì^XNÉÎ·érbgª
-1ÉÈéDTA_ACT ð½È¢êÍÎ·érbgª0ÉÈéD
-
-(5-1-6) DæxÌ\»
-
-DæxÌlÍCRtBM
-[Vt@CÌ CRE_TSK yÑ DEF_EPR ÉÄ
-wèµ½lð³ÉCRtBM
-[^ª©®IÉèÄéD
-lÌÍÍÍ TMIN_TPRI(=1) ©ç TMAX_TPRI ÌÍÍÌlðÆéD
-
-Ü½CRtBM
-[^ÉæèèÄçêéDæxÌlÆÍÊÉCø¦Ì
-Ï_©çvOÅgp³êéDæxÌà\»ª éD
-à\»ÌlÍ 0 ©ç (TMAX_TPRI-TMIN_TPRI) ÌÍÍÌlðÆéD
-DæxÆ»Ìà\»ÆÌÔÉÍ (à\» = Dæx - TMIN_TPRI)ÌÖWª éD
-
-^XNÌN®DæxÍCCRE_TSK Åwèµ½N®DæxÌ¢ÉilÆµÄÍ
-¬³¢ÉjCTMIN_TPRI(=1) ©çÍ¶ÜéA±µ½lªèÄçêéD
-ÂÜèC^XNÌN®DæxÌlÍ^XNID Éµ¢D
-
-^XNÌÀsDæxÌlÍCÈºÌû@ÅZo³êéD
-
-iPjY^XNÉÎµ DEF_EPR ÅÀsDæxðè`µÈ¢ê
-
-Y^XNÉÎµ DEF_EPR ÅÀsDæxðè`µÈ¢êC
-N®DæxÌlÆ¯¶lðÀsDæxÌlÆ·éD
-
-iQjY^XNÉÎµ DEF_EPR ÅÀsDæxðè`·éê
-
-Y^XNÉÎµ DEF_EPR ÅÀsDæxðè`µ½êC
-DEF_EPR Åwèµ½ÀsDæxÌÝèlCÀÑÉCSÄÌ^XNÉÎ·é
-N®DæxÌÝèl¨æÑRtBM
-[VÊÆµÄ¾çêéN®Dæx
-ÌlðàÆÉCÀsDæxÌlðZo·éD
-
-ÀsDæxÌlðZo·éû@ÍCuÀsÌ^XNªvGvg³êé/³êÈ¢v
-Æ¢¤ÖWªÛ¶³êéÍÍÅKØÈlªZo³êé±ÆðÓ}µ½àÌÅC
-ïÌIÈèÍÌæ¤ÉÈéD
-
-yÀsDæxÌZoè ¦±êðSÄÌ^XNÉÎµÄs¤z
-
-(1)  é^XNðIÔ(T1Æ·é)
-(2) T1 ÌÀsDæxÌÝèlÆ¯¶CÜ½ÍC»êæèàá¢(lÆµÄÍ
-å«¢)N®DæxÌÝèlðÂ^XNÌWÌÅCN®DæxÌ
-ÝèlªÅà¢ilÆµÄÍÅà¬³¢j^XNðT·(T2)
-(3) T2 ÌN®DæxÌlð T1 ÌÀsDæxÌlÆ·éD
-
-áj
+	INT_PRIORITY(実行時優先度)};
+
+実行時優先度の値は CRE_TSK の起動時優先度(itskpri) および
+DEF_EPR の実行時優先度(exepri) の設定値を元に算出される．
+算出方法については(5-1-6)に後述する．
+
+(5-1-5) ready_primap の初期値の定義
+
+タスクに対しては，ビットマップ ready_primap の初期値情報を生成する．
+タスク属性の設定値から一意に定めることができるからである．
+
+具体的には以下のような定義を生成する．
+
+const uint_t _kernel_init_rdypri = <ready_primapの初期値>;
+
+ここで ready_primap の初期値は，タスク属性(tskatr)の値から算出される．
+
+変数 _kernel_init_rdypri の各ビットはそれぞれのタスクに対応する．
+タスクIDが1のタスクは最下位ビット(LSB)に対応づけられており，
+タスクIDの値が1つ増える毎に1つ高位のビットがそれぞれ対応づけられる．
+例えば，タスクIDが4のタスクは最下位から数えて4番目のビットが対応する．
+
+タスク属性として TA_ACT を持つタスクは，そのタスクに対応するビットが
+1になる．TA_ACT を持たない場合は対応するビットが0になる．
+
+(5-1-6) 優先度の表現
+
+優先度の値は，コンフィギュレーションファイルの CRE_TSK 及び DEF_EPR にて
+指定した値を元に，コンフィギュレータが自動的に割り当てる．
+値の範囲は TMIN_TPRI(=1) から TMAX_TPRI の範囲の値をとる．
+
+また，コンフィギュレータにより割り当てられる優先度の値とは別に，処理効率の
+観点からプログラム中で使用される優先度の内部表現がある．
+内部表現の値は 0 から (TMAX_TPRI-TMIN_TPRI) の範囲の値をとる．
+優先度とその内部表現との間には (内部表現 = 優先度 - TMIN_TPRI)の関係がある．
+
+タスクの起動時優先度は，CRE_TSK で指定した起動時優先度の高い順に（値としては
+小さい順に），TMIN_TPRI(=1) からはじまる連続した値が割り当てられる．
+つまり，タスクの起動時優先度の値はタスクID に等しい．
+
+タスクの実行時優先度の値は，以下の方法で算出される．
+
+（１）当該タスクに対し DEF_EPR で実行時優先度を定義しない場合
+
+当該タスクに対し DEF_EPR で実行時優先度を定義しない場合，
+起動時優先度の値と同じ値を実行時優先度の値とする．
+
+（２）当該タスクに対し DEF_EPR で実行時優先度を定義する場合
+
+当該タスクに対し DEF_EPR で実行時優先度を定義した場合，
+DEF_EPR で指定した実行時優先度の設定値，並びに，全てのタスクに対する
+起動時優先度の設定値およびコンフィギュレーション結果として得られる起動時優先度
+の値をもとに，実行時優先度の値を算出する．
+
+実行時優先度の値を算出する方法は，「実行中のタスクがプリエンプトされる/されない」
+という関係が保存される範囲で適切な値が算出されることを意図したもので，
+具体的な手順は次のようになる．
+
+【実行時優先度の算出手順 ※これを全てのタスクに対して行う】
+
+(1) あるタスクを選ぶ(T1とする)
+(2) T1 の実行時優先度の設定値と同じ，または，それよりも低い(値としては
+大きい)起動時優先度の設定値を持つタスクの集合の中で，起動時優先度の
+設定値が最も高い（値としては最も小さい）タスクを探す(T2)
+(3) T2 の起動時優先度の値を T1 の実行時優先度の値とする．
+
+例）
 CRE_TSK(TASK1, { TA_NULL, 1, task1, 2, 10, NULL });
 CRE_TSK(TASK2, { TA_NULL, 3, task2, 6, 30, NULL });
@@ -460,100 +428,99 @@
 DEF_IPR(TASK4, { 4 } );
 
-ÊÍÌæ¤ÉÈéF
-
-yN®Dæxz
-	TASK1FÝèl=2 ¨ (èÄçêé)N®Dæx=1
-	TASK2FÝèl=6 ¨ (èÄçêé)N®Dæx=3
-	TASK3FÝèl=4 ¨ (èÄçêé)N®Dæx=2
-	TASK4FÝèl=8 ¨ (èÄçêé)N®Dæx=4
-
-	N®DæxÌ¢ÉÀÑÖ¦éÆ
-	TASK1FÝèl=2 ¨ N®Dæx=1
-	TASK3FÝèl=4 ¨ N®Dæx=2
-	TASK2FÝèl=6 ¨ N®Dæx=3
-	TASK4FÝèl=8 ¨ N®Dæx=4
-
-yÀsDæxz
-	TASK1FÝèl=1
-	TASK3FÝèl=3
-	TASK2FÝèl=5
-	TASK4FÝèl=4
-
-E½ßµÉ TASK4 ÌêÌÀsDæxÌlðZoµÄÝéD
-	ETASK4 ÌÀsDæxÌÝèl(4)Æ¯¶Ü½Í»êæèàá¢N®
-	@DæxÌÝèlðàÂ^XNÌW = {TASK2,TASK3,TASK4}
-	EãL^XNÌWÌÅÅàN®DæxÌÝèlª¢àÌ = TASK3
-	EãL^XNÌN®DæxÌl = 2
-	E]ÁÄTASK4 ÌÀsDæxÌlÍ 2
-
-E¯lÉCTASK3 ÌêÍD
-	ETASK3 ÌÀsDæxÌÝèl(3)Æ¯¶Ü½Í»êæèàá¢N®
-	@DæxÌÝèlðàÂ^XNÌW = {TASK2,TASK3,TASK4}
-	EãL^XNÌWÌÅÅàN®DæxÌÝèlª¢àÌ = TASK3
-	EãL^XNÌN®DæxÌl = 2
-	E]ÁÄTASK3 ÌÀsDæxÌlÍ 2
-
-ÀsDæxÉÎ·éú»îñÌ kernel_cfg.c ÖÌÊÍÌæ¤ÉÈéD
-ÀÛÍ1sÅ\»³êéDÜ½CzñÖÌi[Í TASK1, TASK3, TASK2, 
-TASK4 ÌÅi[³êé±ÆÉÓ·éD
-¿ÈÝÉCINT_PRIORITY }NÍDæxÌlð»Ìà\»ÉÏ··é}NÅ
- èCtask.h Åè`³êÄ¢éD
+結果は次のようになる：
+
+【起動時優先度】
+	TASK1：設定値=2 → (割り当てられる)起動時優先度=1
+	TASK2：設定値=6 → (割り当てられる)起動時優先度=3
+	TASK3：設定値=4 → (割り当てられる)起動時優先度=2
+	TASK4：設定値=8 → (割り当てられる)起動時優先度=4
+
+	起動時優先度の高い順に並び替えると
+	TASK1：設定値=2 → 起動時優先度=1
+	TASK3：設定値=4 → 起動時優先度=2
+	TASK2：設定値=6 → 起動時優先度=3
+	TASK4：設定値=8 → 起動時優先度=4
+
+【実行時優先度】
+	TASK1：設定値=1
+	TASK3：設定値=3
+	TASK2：設定値=5
+	TASK4：設定値=4
+
+・ためしに TASK4 の場合の実行時優先度の値を算出してみる．
+	・TASK4 の実行時優先度の設定値(4)と同じまたはそれよりも低い起動時
+	　優先度の設定値をもつタスクの集合 = {TASK2,TASK3,TASK4}
+	・上記タスクの集合の中で最も起動時優先度の設定値が高いもの = TASK3
+	・上記タスクの起動時優先度の値 = 2
+	・従ってTASK4 の実行時優先度の値は 2
+
+・同様に，TASK3 の場合は．
+	・TASK3 の実行時優先度の設定値(3)と同じまたはそれよりも低い起動時
+	　優先度の設定値をもつタスクの集合 = {TASK2,TASK3,TASK4}
+	・上記タスクの集合の中で最も起動時優先度の設定値が高いもの = TASK3
+	・上記タスクの起動時優先度の値 = 2
+	・従ってTASK3 の実行時優先度の値は 2
+
+実行時優先度に対する初期化情報の kernel_cfg.c への結果は次のようになる．
+実際は1行で表現される．また，配列への格納順序は TASK1, TASK3, TASK2, 
+TASK4 の順序で格納されることに注意する．
+ちなみに，INT_PRIORITY マクロは優先度の値をその内部表現に変換するマクロで
+あり，task.h で定義されている．
 
 const uint_t _kernel_tinib_epriority[TNUM_TSKID] =
 	 {INT_PRIORITY(1),INT_PRIORITY(2),INT_PRIORITY(3),INT_PRIORITY(2)};
 
-(5-1-7) X^bNÌæÝè
-
-SSPJ[lÅÍC^XNðÜÞSÄÌPÊª¯¶X^bNÌæð¤p·é
-æ¤ÉÝv³êÄ¢éD
-¤p³êéX^bNÌæÌ±Æðu¤LX^bNÌævÆÄÔD
-¤LX^bNÌæÌè`Í DEF_STK ðp¢Äs¤DÚµ­Í(9)ðQÆÌ±ÆD
-
-RtBM
-[^Í¤LX^bNÌæÌÝmÛµC^XNReLXgêpÌ
-X^bNÌæÍmÛµÈ¢D
-±Ì½ßCCRE_TSK ÅÍæªÔn stk ÆµÄ NULL ÌÝó¯t¯éD
-NULL ÈOÌlðwèµ½êCG[ÆÈéD
-
-Ü½CCRE_TSK Åwè·é^XNÌX^bNTCY stksz ÌlÍC
-DEF_STK ðp¢È¢êÉÍ¤LX^bNÌæÌTCYðè·é½ßÉp¢çêC
-DEF_STK ðp¢éêÉÍ DEF_STK Åwèµ½¤LX^bNÌæÌTCYð
-`FbN·é½ßÉp¢çêéD¦ (9-4) àQÆÌ±ÆD
-
-S^XNÉæéX^bNgpÊiÌèljÍCCRE_TSK Åwè·é
-X^bNTCY stksz, ¨æÑN®Dæx itskpriCÈçÑÉ DEF_EPR Å
-wè·éÀsDæx exepri ©çZo³êéDZoèÉÂ¢ÄÍßÅà¾·éD
-
-(5-1-8) S^XNÉæéX^bNgpÊÌZoû@
-
-S^XNÌX^bNgpÊÉÎ·évZÌî{IÈl¦ûÍC»ê¼êÌDæx²ÆÉC
-¯¶DæxðàÂ^XNÌÅÅàX^bNgpÊªå«¢àÌðIÑC»êçÌ
-X^bNgpÊð·×ÄÁZµ½àÌÆl¦é±ÆÅ éDÀÛÉÍvOÉæè
-»êæè­È­ÈéP[Xà¶Ýµ¾éªC»ÝÌÀÅÍl¦ûðP»µÄ¢éD
-
-SSPJ[lÌdlÅÍCÐÆÂÌN®DæxÉÂ«o^Â\È^XNÍ
-XêÂÅ éD»Ì½ßCDEF_EPR ÉæèÀsDæxðÝèµÈ¢êC
-·Èí¿CSÄÌ^XNÌÀsDæxª»ê¼êÌN®DæxÉµ¢
-êCe^XNÌX^bNgpÊðPÉÁZµ½àÌªCS^XNÉæé
-X^bNgpÊÆÈéD
-
-»êÉÎµCDEF_EPR ðp¢ÄÁèÌ^XNÉÎ·éÀsDæxðwèµC
-Y^XNÀsÌDæxðø«ã°éæ¤ÉÝèµ½êC{ÈçÎv
-Gvg³êéÍ¸ÌàÌª³êÈ­ÈéP[Xª¶¶CÊÆµÄS^XNÌ
-X^bNgpÊð­È­Å«éêª éD
-
-ÀsDæxðl¶µ½uS^XNÉæéX^bNgpÊvÌZoèÍ
-Ìæ¤ÉÈéi¦j
-(a)  é^XN©çÀsJnµC¼ÌÇÌæ¤È^XNÉvGvg³êé©C
-    »µÄÊIÉÇ¤¢¤vOÌÀsoHª¶Ýµ¾é©ðSÄñ·éD
-(b) »ê¼êÌêÌuS^XNÉæéX^bNgpÊvðßéD
-(c) ß½lÌÌÅålðIÔD
-
-¦ ÀÅÍCsvÈÌÈªàsÁÄ¢éªC±±ÅÍî{IÈl¦û
-   ÌÝð¦·D
-
-ZoèðïÌIÈáðp¢Äà¾·éD
-áÆµÄæÌ (5-1-6) Ìáðp¢éD
-ºÌè (a), (b), (c) ÍãÉ°½eÚÉÎµÄ¢éD
+(5-1-7) スタック領域設定
+
+SSPカーネルでは，タスクを含む全ての処理単位が同じスタック領域を共用する
+ように設計されている．
+共用されるスタック領域のことを「共有スタック領域」と呼ぶ．
+共有スタック領域の定義は DEF_STK を用いて行う．詳しくは(9)を参照のこと．
+
+コンフィギュレータは共有スタック領域のみ確保し，タスクコンテキスト専用の
+スタック領域は確保しない．
+このため，CRE_TSK では先頭番地 stk として NULL のみ受け付ける．
+NULL 以外の値を指定した場合，エラーとなる．
+
+また，CRE_TSK で指定するタスクのスタックサイズ stksz の値は，
+DEF_STK を用いない場合には共有スタック領域のサイズを決定するために用いられ，
+DEF_STK を用いる場合には DEF_STK で指定した共有スタック領域のサイズを
+チェックするために用いられる．※ (9-4) も参照のこと．
+
+全タスクによるスタック使用量（の推定値）は，CRE_TSK で指定する
+スタックサイズ stksz, および起動時優先度 itskpri，ならびに DEF_EPR で
+指定する実行時優先度 exepri から算出される．算出手順については次節で説明する．
+
+(5-1-8) 全タスクによるスタック使用量の算出方法
+
+全タスクのスタック使用量に対する計算の基本的な考え方は，それぞれの優先度ごとに，
+同じ優先度をもつタスクの中で最もスタック使用量が大きいものを選び，それらの
+スタック使用量をすべて加算したものと考えることである．実際にはプログラムにより
+それより少なくなるケースも存在し得るが，現在の実装では考え方を単純化している．
+
+SSPカーネルの仕様では，ひとつの起動時優先度につき登録可能なタスクは
+高々一つである．そのため，DEF_EPR により実行時優先度を設定しない場合，
+すなわち，全てのタスクの実行時優先度がそれぞれの起動時優先度に等しい
+場合，各タスクのスタック使用量を単純に加算したものが，全タスクによる
+スタック使用量となる．
+
+それに対し，DEF_EPR を用いて特定のタスクに対する実行時優先度を指定し，
+当該タスク実行中の優先度を引き上げるように設定した場合，本来ならばプリ
+エンプトされるはずのものがされなくなるケースが生じ，結果として全タスクの
+スタック使用量を少なくできる場合がある．
+
+実行時優先度を考慮した「全タスクによるスタック使用量」の算出手順は
+次のようになる（※）
+(a) あるタスクから実行開始し，他のどのようなタスクにプリエンプトされるか，
+    そして結果的にどういうプログラムの実行経路が存在し得るかを全て列挙する．
+(b) それぞれの場合の「全タスクによるスタック使用量」を求める．
+(c) 求めた値の中の最大値を選ぶ．
+
+※ 実装では，不要な処理の省略等も行っているが，ここでは基本的な考え方
+   のみを示す．
+
+算出手順を具体的な例を用いて説明する．
+例として先の (5-1-6) の例を用いる．
+下の手順 (a), (b), (c) は上に挙げた各項目に対応している．
 
 CRE_TSK(TASK1, { TA_NULL, 1, task1, 2, 10, NULL });
@@ -567,498 +534,447 @@
 DEF_IPR(TASK4, { 4 } );
 
-(a)  é^XN(TASKn, n = 1,2,3,4)ðIð·é.
-    TASKn ÌÀsDæxæèà¢N®Dæx(lÆµÄÍ¬³¢)ðàÂ
-    ^XNÌWðT·D
-    »µÄuvGvg³êé^XN¨vGvg·é^XNvÌgðñ·éD
-
-ETASK1 É
-Ú·éÆC±êðvGvgÂ\È^XNÍ¶ÝµÈ¢D
-ETASK2 É
-Ú·éÆCÀsÍDæx 5 ÉÈèC±êðvGvgÂ\È
-@^XNÍ TASK1 ¨æÑ TASK3D
-ETASK3 É
-Ú·éÆCÀsÍDæx 3 ÉÈèC±êðvGvgÂ\È
-@^XNÍ TASK1 ¾¯D
-ETASK4 É
-Ú·éÆCÀsÍDæx 4 ÉÈèC±êðvGvgÂ\È
-@^XNÍ TASK1 ¾¯D
-
-µ½ªÁÄ±±ÅÍCÌgª¾çêéD
-	TASK2 ¨ TASK1
-	TASK2 ¨ TASK3
-	TASK3 ¨ TASK1
-	TASK4 ¨ TASK1
-
-S­vGvg³êÈ¢P[XC¨æÑCvGvgµ½^XNª³çÉ
-ÊÌ^XNÉvGvg³êéP[XÜÅl¶·éÆCÊIÉvOÌ
-ÀsoHÍÌæ¤ÉÈéÆl¦çêéD
-
-ETASK1 ©çnÜéP[XF 
-	TASK1 (vGvg³ê¸ÉI¹)
-
-ETASK2 ©çnÜéP[XF
+(a) あるタスク(TASKn, n = 1,2,3,4)を選択する.
+    TASKn の実行時優先度よりも高い起動時優先度(値としては小さい)をもつ
+    タスクの集合を探す．
+    そして「プリエンプトされるタスク→プリエンプトするタスク」の組を列挙する．
+
+・TASK1 に着目すると，これをプリエンプト可能なタスクは存在しない．
+・TASK2 に着目すると，実行中は優先度 5 になり，これをプリエンプト可能な
+　タスクは TASK1 および TASK3．
+・TASK3 に着目すると，実行中は優先度 3 になり，これをプリエンプト可能な
+　タスクは TASK1 だけ．
+・TASK4 に着目すると，実行中は優先度 4 になり，これをプリエンプト可能な
+　タスクは TASK1 だけ．
+
+したがってここでは，次の組が得られる．
+	TASK2 → TASK1
+	TASK2 → TASK3
+	TASK3 → TASK1
+	TASK4 → TASK1
+
+全くプリエンプトされないケース，および，プリエンプトしたタスクがさらに
+別のタスクにプリエンプトされるケースまで考慮すると，結果的にプログラムの
+実行経路は次のようになると考えられる．
+
+・TASK1 から始まるケース： 
+	TASK1 (プリエンプトされずに終了)
+
+・TASK2 から始まるケース：
 	TASK2
-	TASK2 ¨ TASK1 (TASK2©çÀsJnµÄCTASK1ÉvGvg³ê½)
-	TASK2 ¨ TASK3
-	TASK2 ¨ TASK3 ¨ TASK1
-
-ETASK3 ©çnÜéP[XF
+	TASK2 → TASK1 (TASK2から実行開始して，TASK1にプリエンプトされた)
+	TASK2 → TASK3
+	TASK2 → TASK3 → TASK1
+
+・TASK3 から始まるケース：
 	TASK3
-	TASK3 ¨ TASK1
-
-ETASK4 ©çnÜéP[XF
+	TASK3 → TASK1
+
+・TASK4 から始まるケース：
 	TASK4
-	TASK4 ¨ TASK1
-
-(b) »ê¼êÌP[XÅX^bNgpÊðvZ·éD
-
-ETASK1 ©çnÜéP[XF 
-	TASK1F10
-
-ETASK2 ©çnÜéP[XF
-	TASK2F30
-	TASK2 ¨ TASK1F30+10
-	TASK2 ¨ TASK3F30+50
-	TASK2 ¨ TASK3 ¨ TASK1F30+50+10
-
-ETASK3 ©çnÜéP[XF
-	TASK3F50
-	TASK3 ¨ TASK1F50+10
-
-ETASK4 ©çnÜéP[XF
-	TASK4F100
-	TASK4 ¨ TASK1F100+10
-
-(c) Åàlªå«­ÈéoHðIÔD
-
-±±ÅÍ TASK4 ¨ TASK1 ÌêªÅåÅC©ÏàèlÍ 110
-
-
-(5-1-9) S^XNÉæéX^bNgpÊÌè`
-
-RtBM
-[^ÍCS^XNÉæéX^bNgpÊÌ©Ïàèßöð
-kernel_cfg.c ÉRgÆµÄoÍ·éD
+	TASK4 → TASK1
+
+(b) それぞれのケースでスタック使用量を計算する．
+
+・TASK1 から始まるケース： 
+	TASK1：10
+
+・TASK2 から始まるケース：
+	TASK2：30
+	TASK2 → TASK1：30+10
+	TASK2 → TASK3：30+50
+	TASK2 → TASK3 → TASK1：30+50+10
+
+・TASK3 から始まるケース：
+	TASK3：50
+	TASK3 → TASK1：50+10
+
+・TASK4 から始まるケース：
+	TASK4：100
+	TASK4 → TASK1：100+10
+
+(c) 最も値が大きくなる経路を選ぶ．
+
+ここでは TASK4 → TASK1 の場合が最大で，見積もり値は 110
+
+
+(5-1-9) 全タスクによるスタック使用量の定義
+
+コンフィギュレータは，全タスクによるスタック使用量の見積もり過程を
+kernel_cfg.c にコメントとして出力する．
 
 /*
  * Task Stack Size Estimation: 
  *
- i±±ÉZoÌßöªoÍ³êéj
+ （ここに算出の過程が出力される）
  */
 
-»µÄCÌæ¤Èsð¶¬·éD
-
-#define TOPPERS_TSTKSZ     <S^XNÉæéX^bNgpÊÌvZl>
-
-
-(5-1-10) G[ð
-
-^XNÉÖ·éG[ðÍÌÊèÅ éD
-
-RtBM
-[^{Ìªo·éàÌ
-E^XNªêÂà¶ÝµÈ¢êD
-E¯¶tskidÉÎ·éCRE_TSKª¡ éêiE_OBJj
-EDEF_EPRÉÎ·éCRE_TSKªÈ¢êiE_NOEXSj
-E¯¶tskidÉÎ·éDEF_EPRª¡ éêiE_OBJj
-
-pX2Åo·éàÌ
-Etskatrªi[[TA_ACT]|[TA_RSTR]jÅÈ¢êiE_RSATRj
-	¦ ^[QbgË¶Å^XN®«ðÇÁÂiTARGET_TSKATRj
-E(TMIN_TPRI <= itskpri && itskpri <= TMAX_TPRI)ÅÈ¢êiE_PARj
-E¯¶ itskpri ÉÎ·é CRE_TSK ª¡ éê (E_PAR)
-Estkszª0©C^[Qbgè`ÌÅ¬liTARGET_MIN_STKSZjæèà¬³¢ê
-@iE_PARj
-Estk ª NULL ÅÈ¢êiE_PARj
-E(TMIN_TPRI <= exepri && exepri <= TMAX_TPRI) ÅÈ¢êFE_PAR G[
-E(itskpri < exepri && exepri <= TMAX_TPRI) Å éêFE_ILUSEG[
-
-pX3Åo·éàÌ
-Etask ªvOÌJnÔnÆµÄ³µ­È¢êiE_PARj
-	- ^[QbgË¶ÌliCHECK_FUNC_ALIGNjÌ{ÅÈ¢ê
-	- NULLÌêi^[QbgË¶CCHECK_FUNC_NONNULLj
-
-
-(5-2) CxgtOÉÖ·éè`
-
-CxgtOÌÈªLÍuFLG^flgvÅ éDÈºÅÍCVXeRtB
-M
-[Vt@CÉÌÃIAPIªÜÜêÄ¢éÉ¶¬·×«îñÉÂ
-¢Äq×éD
+そして，次のような行を生成する．
+
+#define TOPPERS_TSTKSZ     <全タスクによるスタック使用量の計算値>
+
+
+(5-1-10) エラー条件
+
+タスクに関するエラー条件は次の通りである．
+
+＊コンフィギュレータ本体が検出するもの
+・タスクが一つも存在しない場合．
+・同じtskidに対するCRE_TSKが複数ある場合（E_OBJ）
+・DEF_EPRに対応するCRE_TSKがない場合（E_NOEXS）
+・同じtskidに対するDEF_EPRが複数ある場合（E_OBJ）
+
+＊パス2で検出するもの
+・tskatrが（[[TA_ACT]|[TA_RSTR]）でない場合（E_RSATR）
+	※ ターゲット依存部でタスク属性を追加可（TARGET_TSKATR）
+・(TMIN_TPRI <= itskpri && itskpri <= TMAX_TPRI)でない場合（E_PAR）
+・同じ itskpri に対する CRE_TSK が複数ある場合 (E_PAR)
+・stkszが0か，ターゲット定義の最小値（TARGET_MIN_STKSZ）よりも小さい場
+　合（E_PAR）
+・stk が NULL でない場合（E_PAR）
+・(TMIN_TPRI <= exepri && exepri <= TMAX_TPRI) でない場合：E_PAR エラー
+・(itskpri < exepri && exepri <= TMAX_TPRI) である場合：E_ILUSEエラー
+
+＊パス3で検出するもの
+・task がプログラムの開始番地として正しくない場合（E_PAR）
+	- ターゲット依存の値（CHECK_FUNC_ALIGN）の倍数でない場合
+	- NULLの場合（ターゲット依存，CHECK_FUNC_NONNULL）
+
+
+(5-2) イベントフラグに関する定義
+
+イベントフラグの省略記号は「FLG／flg」である．以下では，システムコンフィ
+ギュレーションファイルに次の静的APIが含まれている時に生成すべき情報につ
+いて述べる．
 
 CRE_FLG(flgid, { flgatr, iflgptn });
 
-(5-2-1) CxgtOÌú»îñiCxgtO®«j
-
-CxgtOÌ®«îñÌú»îñÍCÌ`®Æ·éD
+(5-2-1) イベントフラグの初期化情報（イベントフラグ属性）
+
+イベントフラグの属性情報の初期化情報は，次の形式とする．
 
 const ATR _kernel_flginib_atr[TNUM_FLGID] = {(flgatr)};
 
-(5-2-2) CxgtOÌú»îñitOp^[úlj
-
-CxgtOÌtOp^[Ìú»îñÍCÌ`®Æ·éD
+(5-2-2) イベントフラグの初期化情報（フラグパターン初期値）
+
+イベントフラグのフラグパターンの初期化情報は，次の形式とする．
 
 const FLGPTN _kernel_flginib_iflgptn[TNUM_FLGID] = {(iflgptn)};
 
-(5-2-3) CxgtOÌtOp^[
-
-CxgtOÌtOp^[ði[·ézñÍCÈºÌ`®Æ·éD
+(5-2-3) イベントフラグのフラグパターン
+
+イベントフラグのフラグパターンを格納する配列は，以下の形式とする．
 
 FLGPTN _kernel_flgcb_flgptn[TNUM_FLGID];
 
-(5-2-4) G[ð
-
-CxgtOÉÖ·éG[ðÍÌÊèÅ éD
-
-RtBM
-[^{Ìªo·éàÌ
-E¯¶flgidÉÎ·éCRE_FLGª¡ éêiE_OBJj
-
-pX2Åo·éàÌ
-Etskatrªi[[TA_CLR]|[TA_NULL]jÅÈ¢êiE_RSATRj
-	¦ TA_CLR Æ TA_NULL ð¯Éwèµ½êCTA_CLR ÌÝðwèµ½êÆ¯lÉUé¤
-Eiflgptn ªFLGPTN Éi[Å«È¢(iflgptnÌlªFLGPTN^ÌÅålæèàå«¢)êiE_PARj 
-
-
-(5-3) f[^L
-[ÉÖ·éè`
-
-f[^L
-[ÌÈªLÍuDTQ^dtqvÅ éDÈºÅÍCVXeRtBM
-
-[Vt@CÉÌÃIAPIªÜÜêÄ¢éÉ¶¬·×«îñÉÂ¢Ä
-q×éD
+(5-2-4) エラー条件
+
+イベントフラグに関するエラー条件は次の通りである．
+
+＊コンフィギュレータ本体が検出するもの
+・同じflgidに対するCRE_FLGが複数ある場合（E_OBJ）
+
+＊パス2で検出するもの
+・tskatrが（[[TA_CLR]|[TA_NULL]）でない場合（E_RSATR）
+	※ TA_CLR と TA_NULL を同時に指定した場合，TA_CLR のみを指定した場合と同様に振る舞う
+・iflgptn がFLGPTN に格納できない(iflgptnの値がFLGPTN型の最大値よりも大きい)場合（E_PAR） 
+
+
+(5-3) データキューに関する定義
+
+データキューの省略記号は「DTQ／dtq」である．以下では，システムコンフィギュ
+レーションファイルに次の静的APIが含まれている時に生成すべき情報について
+述べる．
 
 CRE_DTQ(dtqid, { dtqatr, dtqcnt, dtqmb });
 
-(5-3-1) f[^L
-[ÉKvÈÌæÌè`
-
-f[^L
-[ÉKvÈÌæÆµÄCf[^L
-[ÇÌæª éD¶¬
-·éf[^L
-[ÉCKvÈTCYÌf[^L
-[ÇÌæðè`·éDï
-ÌIÉÍCãLÌÃIAPIÉÎµÄCÌè`ð¶¬·éD
-
-dtqcntª0ÅÈ¢êÌÝ¶¬
-static intptr_t _kernel_dtqmb_<f[^L
-[¼>[dtqcnt];
-
-(5-3-2) f[^L
-[Ìú»îñ(f[^L
-[®«)
-
-f[^L
-[Ì®«îñÌú»îñÍCÌ`®Æ·éD
+(5-3-1) データキューに必要なメモリ領域の定義
+
+データキューに必要なメモリ領域として，データキュー管理領域がある．生成
+するデータキュー毎に，必要なサイズのデータキュー管理領域を定義する．具
+体的には，上記の静的APIに対して，次の定義を生成する．
+
+＊dtqcntが0でない場合のみ生成
+static intptr_t _kernel_dtqmb_<データキュー名>[dtqcnt];
+
+(5-3-2) データキューの初期化情報(データキュー属性)
+
+データキューの属性情報の初期化情報は，次の形式とする．
 
 const ATR _kernel_dtqinib_atr[TNUM_DTQID] = {(dtqatr)};
 
-(5-3-3) f[^L
-[Ìú»îñ(f[^L
-[ÇÌæ)
-
-f[^L
-[Ìf[^L
-[ÇÌæÌú»îñÍCÌ`®Æ·éD
-
-intptr_t * const _kernel_dtqinib_data[TNUM_DTQID] = {(_kernel_dtqmb_<f[^L
-[¼>)};
-
-¦ SSPJ[lÅÍÒ¿óÔðT|[gµÈ¢½ßC¯úÄoµªÀ»Å«È¢D
-@»Ì½ß dtqcnt ª 0 ÌêCRtBM
-[VG[(E_PAR)ÆÈéD
-
-(5-3-4) f[^L
-[Ìú»îñ(f[^L
-[ÌTCY)
-
-f[^L
-[ÌTCYÌú»îñÍCÌ`®Æ·éD
+(5-3-3) データキューの初期化情報(データキュー管理領域)
+
+データキューのデータキュー管理領域の初期化情報は，次の形式とする．
+
+intptr_t * const _kernel_dtqinib_data[TNUM_DTQID] = {(_kernel_dtqmb_<データキュー名>)};
+
+※ SSPカーネルでは待ち状態をサポートしないため，同期呼出しが実現できない．
+　そのため dtqcnt が 0 の場合，コンフィギュレーションエラー(E_PAR)となる．
+
+(5-3-4) データキューの初期化情報(データキューのサイズ)
+
+データキューのサイズの初期化情報は，次の形式とする．
 
 const uint8_t _kernel_dtqinib_size[TNUM_DTQID] = {(dtqcnt)};
 
-(5-3-5) f[^L
-[Éi[³êÄ¢évf
-
-f[^L
-[Éi[³êÄ¢évfÌzñÍCÌ`®Æ·éD
+(5-3-5) データキューに格納されている要素数
+
+データキューに格納されている要素数の配列は，次の形式とする．
 
 uint8_t _kernel_dtqcb_count[TNUM_DTQID];
 
-(5-3-6) f[^L
-[ÌæªEövf
-
-f[^L
-[Éi[³êÄ¢éæªvfEövfði[·ézñÍCÌ`®Æ·éD
+(5-3-6) データキューの先頭・末尾要素
+
+データキューに格納されている先頭要素・末尾要素を格納する配列は，次の形式とする．
 
 uint8_t _kernel_dtqcb_head[TNUM_DTQID];
 uint8_t _kernel_dtqcb_tail[TNUM_DTQID];
 
-(5-3-7) G[ð
-
-f[^L
-[ÉÖ·éG[ðÍÌÊèÅ éD
-
-RtBM
-[^{Ìªo·éàÌ
-E¯¶dtqidÉÎ·éCRE_DTQª¡ éêiE_OBJj
-
-pX2Åo·éàÌ
-EdtqatrªimTA_NULLnjÅÈ¢êiE_RSATRj
-Edtqcntª 0 Ìê (E_PAR)
-Edtqmb ª NULL ÅÈ¢êiE_NOSPTj
-
-
-(5-4) üúnhÉÖ·éè`
-
-üúnhÌÈªLÍuCYC^cycvÅ éDÈºÅÍCVXeRtB
-M
-[Vt@CÉÌÃIAPIªÜÜêÄ¢éÉ¶¬·×«îñÉÂ
-¢Äq×éD
+(5-3-7) エラー条件
+
+データキューに関するエラー条件は次の通りである．
+
+＊コンフィギュレータ本体が検出するもの
+・同じdtqidに対するCRE_DTQが複数ある場合（E_OBJ）
+
+＊パス2で検出するもの
+・dtqatrが（［TA_NULL］）でない場合（E_RSATR）
+・dtqcntが 0 の場合 (E_PAR)
+・dtqmb が NULL でない場合（E_NOSPT）
+
+
+(5-4) 周期ハンドラに関する定義
+
+周期ハンドラの省略記号は「CYC／cyc」である．以下では，システムコンフィ
+ギュレーションファイルに次の静的APIが含まれている時に生成すべき情報につ
+いて述べる．
 
 CRE_CYC(cycid, { cycatr, exinf, cychdr, cyctim, cycphs });
 
-(5-4-1) üúnhÌú»îñig£îñj
-
-üúnhÌg£îñÌú»îñÍCÌ`®Æ·éD
+(5-4-1) 周期ハンドラの初期化情報（拡張情報）
+
+周期ハンドラの拡張情報の初期化情報は，次の形式とする．
 
 const intptr_t _kernel_cycinib_exinf[TNUM_CYCID] = {(intptr_t)(exinf)};
 
-(5-4-2) üúnhÌú»îñiN®Ônj
-
-üúnhÌAhXÌú»îñÍCÌ`®Æ·éD
+(5-4-2) 周期ハンドラの初期化情報（起動番地）
+
+周期ハンドラのアドレスの初期化情報は，次の形式とする．
 
 const CYCHDR _kernel_cycinib_cychdr[TNUM_CYCID] = {(cycdhr)};
 
-(5-4-3) üúnhÌú»îñiN®üúj
-
-üúnhÌN®üúÌú»îñÍCÌ`®Æ·éD
+(5-4-3) 周期ハンドラの初期化情報（起動周期）
+
+周期ハンドラの起動周期の初期化情報は，次の形式とする．
 
 const RELTIM _kernel_cycinib_cyctim[TNUM_CYCID] = {(cyctim)};
 
-(5-4-4) üúnhÌú»îñiÊj
-
-üúnhÌÊÌú»îñÍCÌ`®Æ·éD
+(5-4-4) 周期ハンドラの初期化情報（位相）
+
+周期ハンドラの位相の初期化情報は，次の形式とする．
 
 const RELTIM _kernel_cycinib_cycphs[TNUM_CYCID] = {(cycphs)};
 
-(5-4-5) üúnhÌ®ìóÔ
-
-üúnhÌ®ìóÔði[·éÏÍCÌ`®Æ·éD
+(5-4-5) 周期ハンドラの動作状態
+
+周期ハンドラの動作状態を格納する変数は，次の形式とする．
 
 uint_t _kernel_cyccb_cycact;
 
-Ï _kernel_cyccb_cycact ÌerbgÍ»ê¼êÌüúnhÉÎ·éD
-üúnhIDª1Ì^XNÍÅºÊrbg(LSB)ÉÎÃ¯çêÄ¨èC
-IDÌlª1Â¦éÉ1ÂÊÌrbgª»ê¼êÎÃ¯çêéD
-á¦ÎCnhIDª4ÌüúnhÍÅºÊ©ç¦Ä4ÔÚÌrbgª
-Î·éD
-
-®ìµÄ¢éóÔÌüúnhÍC»ÌüúnhÉÎ·érbgª
-1ÆÈéD®ìµÄ¢È¢óÔÌüúnhÍÎ·érbgª0ÉÈéD
-
-(5-4-6) üúnhÌñN®Ìè`
-
-üúnhÌñN®ði[·éÏÍCÌ`®Æ·éD
+変数 _kernel_cyccb_cycact の各ビットはそれぞれの周期ハンドラに対応する．
+周期ハンドラIDが1のタスクは最下位ビット(LSB)に対応づけられており，
+IDの値が1つ増える毎に1つ高位のビットがそれぞれ対応づけられる．
+例えば，ハンドラIDが4の周期ハンドラは最下位から数えて4番目のビットが
+対応する．
+
+動作している状態の周期ハンドラは，その周期ハンドラに対応するビットが
+1となる．動作していない状態の周期ハンドラは対応するビットが0になる．
+
+(5-4-6) 周期ハンドラの次回起動時刻の定義
+
+周期ハンドラの次回起動時刻を格納する変数は，次の形式とする．
 
 EVTTIM _kernel_cyccb_evttim[TNUM_CYCID];
 
-(5-4-7) ^CCxgL
-[ÌÌItZbgîñÌè`
-
-^CCxgL
-[ÌÅüúnhpÉèÄçê½ÌæÌæªÊuð
-¦·îñðÏÉÛ·éD^CCxgL
-[ÍzñÅ\»³êÄ¨èC
-æªÊuÍzñÌæª©çÌItZbgiÂÜèzñÌCfbNXjÆµÄ
-\»³êéDüúnhÉÎµÄÍ^CCxgL
-[zñÌæª©çè
-Äçêé½ßC±ÌlÍíÉ 0 ÆÈéD]ÁÄÏè`ÍCÌ`®ÆÈéD
+(5-4-7) タイムイベントキューの中のオフセット情報の定義
+
+タイムイベントキューの中で周期ハンドラ用に割り当てられた領域の先頭位置を
+示す情報を変数に保持する．タイムイベントキューは配列で表現されており，
+先頭位置は配列の先頭からのオフセット（つまり配列のインデックス）として
+表現される．周期ハンドラに対してはタイムイベントキュー配列の先頭から割り
+当てられるため，この値は常に 0 となる．従って変数定義は，次の形式となる．
 
 const uint_t _kernel_cycevtid_offset = 0;
 
-^CCxgL
-[ÉÂ¢ÄÍ(9-3)ðQÆÌ±ÆD
-
-(5-4-8) G[ð
-
-üúnhÉÖ·éG[ðÍÌÊèÅ éD
-
-RtBM
-[^{Ìªo·éàÌ
-E¯¶cycidÉÎ·éCRE_CYCª¡ éêiE_OBJj
-
-pX2Åo·éàÌ
-EcycatrªimTA_STAnjÅÈ¢êiE_RSATRj
-E(0 < cyctim && cyctim <= TMAX_RELTIM)ÅÈ¢êiE_PARj
-E(0 <= cycphs && cycphs <= TMAX_RELTIM)ÅÈ¢êiE_PARj
-ExFcycatrÉTA_STAªÝè³êÄ¢ÄC(cycphs == 0)Ìê
-ECRE_CYC ÌGgª16Âæè½¢ ¦SSPÀè`
-
-pX3Åo·éàÌ
-EcychdrªvOÌJnÔnÆµÄ³µ­È¢êiE_PARj
-	- ^[QbgË¶ÌliCHECK_FUNC_ALIGNjÌ{ÅÈ¢ê
-	- NULLÌêi^[QbgË¶CCHECK_FUNC_NONNULLj
-
-(5-5) A[nhÉÖ·éè`
-
-A[nhÌÈªLÍuALM^almvÅ éDÈºÅÍCVXeR
-tBM
-[Vt@CÉÌÃIAPIªÜÜêÄ¢éÉ¶¬·×«îñ
-ÉÂ¢Äq×éD
+タイムイベントキューについては(9-3)を参照のこと．
+
+(5-4-8) エラー条件
+
+周期ハンドラに関するエラー条件は次の通りである．
+
+＊コンフィギュレータ本体が検出するもの
+・同じcycidに対するCRE_CYCが複数ある場合（E_OBJ）
+
+＊パス2で検出するもの
+・cycatrが（［TA_STA］）でない場合（E_RSATR）
+・(0 < cyctim && cyctim <= TMAX_RELTIM)でない場合（E_PAR）
+・(0 <= cycphs && cycphs <= TMAX_RELTIM)でない場合（E_PAR）
+・警告：cycatrにTA_STAが設定されていて，(cycphs == 0)の場合
+・CRE_CYC のエントリが16個より多い ※SSP実装定義事項
+
+＊パス3で検出するもの
+・cychdrがプログラムの開始番地として正しくない場合（E_PAR）
+	- ターゲット依存の値（CHECK_FUNC_ALIGN）の倍数でない場合
+	- NULLの場合（ターゲット依存，CHECK_FUNC_NONNULL）
+
+(5-5) アラームハンドラに関する定義
+
+アラームハンドラの省略記号は「ALM／alm」である．以下では，システムコン
+フィギュレーションファイルに次の静的APIが含まれている時に生成すべき情報
+について述べる．
 
 CRE_ALM(ID almid, { almatr, (intptr_t)(exinf), almhdr });
 
-(5-5-1) A[nhÌú»îñig£îñj
-
-A[nhÌg£îñÌú»îñÍCÌ`®Æ·éD
+(5-5-1) アラームハンドラの初期化情報（拡張情報）
+
+アラームハンドラの拡張情報の初期化情報は，次の形式とする．
 
 const intptr_t _kernel_alminib_exinf[TNUM_ALMID] = {(intptr_t)(exinf)};
 
-(5-5-2) A[nhÌú»îñiN®Ônj
-
-A[nhÌN®ÔnÌú»îñÍCÌ`®Æ·éD
+(5-5-2) アラームハンドラの初期化情報（起動番地）
+
+アラームハンドラの起動番地の初期化情報は，次の形式とする．
 
 const ALMHDR _kernel_alminib_almhdr[TNUM_ALMID] = {(almhdr)};
 
-(5-5-3) A[nhÌ®ìóÔ
-
-A[nhÌ®ìóÔði[·éÏÍCÌ`®Æ·éD
+(5-5-3) アラームハンドラの動作状態
+
+アラームハンドラの動作状態を格納する変数は，次の形式とする．
 
 uint_t _kernel_almcb_almact;
 
-Ï _kernel_almcb_almact ÌerbgÍÂXÌA[nhÉÎ·éD
-A[nhIDª1Ì^XNÍÅºÊrbg(LSB)ÉÎÃ¯çêÄ¨èC
-IDÌlª1Â¦éÉ1ÂÊÌrbgª»ê¼êÎÃ¯çêéD
-á¦ÎCnhIDª4ÌA[nhÍÅºÊ©ç¦Ä4ÔÚÌrbgª
-Î·éD
-
-®ìµÄ¢éóÔÌA[nhÍC»ÌüúnhÉÎ·érbgª
-1ÆÈéD®ìµÄ¢È¢óÔÌüúnhÍÎ·érbgª0ÉÈéD
-
-(5-5-4) ^CCxgL
-[ÌÌItZbgîñÌè`
-
-^CCxgL
-[ÌÅA[nhpÉèÄçê½ÌæÌæª
-Êuð¦·îñðÏÉÛ·éD^CCxgL
-[ÍzñÅ\»³êÄ¨èC
-æªÊuÍzñÌæª©çÌItZbgiÂÜèzñÌCfbNXjÆµÄ
-\»³êéDA[nhÉÎµÄÍüúnhpÌæÌÌvf©ç
-èÄçêé½ßC±ÌlÍíÉüúnhÌÂÉµ¢D
-Ïè`ÍCÌ`®ÆÈéD
-
-const uint_t _kernel_almevtid_offset = <üúnhÌÂ>;
-
-^CCxgL
-[ÉÂ¢ÄÍ(9-3)ðQÆÌ±ÆD
-
-(5-5-5) G[ð
-
-A[nhÉÖ·éG[ðÍÌÊèÅ éD
-
-RtBM
-[^{Ìªo·éàÌ
-E¯¶almidÉÎ·éCRE_ALMª¡ éêiE_OBJj
-
-pX2Åo·éàÌ
-EalmatrªiTA_NULLjÅÈ¢êiE_RSATRj
-ECRE_ALM ÌGgª16Âæè½¢ ¦SSPÀè`
-
-pX3Åo·éàÌ
-EalmhdrªvOÌJnÔnÆµÄ³µ­È¢êiE_PARj
-	- ^[QbgË¶ÌliCHECK_FUNC_ALIGNjÌ{ÅÈ¢ê
-	- NULLÌêi^[QbgË¶CCHECK_FUNC_NONNULLj
-
-(6) ÝÉÖ·éè`
-
-ÝÉÖµÄ¶¬·éîñÍC^[QbgÉèßé±ÆªÅ«éD
-^[QbgÉèßÈ¢êÉÍCÈºÅq×é^[QbgÉË¶µÈ¢WIÈ
-îñð¶¬·éD^[QbgÉèßéêÉÍC(6-1)Æ(6-3)Éq×éîñÍ¶
-¬µÈ¢i(6-2)Éq×éîñÍ¶¬·éjD
-
-(6-1) ÝvCÉÖ·éè`
-
-ÝvCÌ®«ðÝè·éÃIAPIuCFG_INTvÅÝèµ½Ýv
-CÉÖ·éè`ð¶¬·éDïÌIÉÍÌÊèD
-
-ÈºÅÍCVXeRtBM
-[Vt@CÉÌÃIAPIªÜÜê
-Ä¢éÉ¶¬·×«îñÉÂ¢Äq×éD
+変数 _kernel_almcb_almact の各ビットは個々のアラームハンドラに対応する．
+アラームハンドラIDが1のタスクは最下位ビット(LSB)に対応づけられており，
+IDの値が1つ増える毎に1つ高位のビットがそれぞれ対応づけられる．
+例えば，ハンドラIDが4のアラームハンドラは最下位から数えて4番目のビットが
+対応する．
+
+動作している状態のアラームハンドラは，その周期ハンドラに対応するビットが
+1となる．動作していない状態の周期ハンドラは対応するビットが0になる．
+
+(5-5-4) タイムイベントキューの中のオフセット情報の定義
+
+タイムイベントキューの中でアラームハンドラ用に割り当てられた領域の先頭
+位置を示す情報を変数に保持する．タイムイベントキューは配列で表現されており，
+先頭位置は配列の先頭からのオフセット（つまり配列のインデックス）として
+表現される．アラームハンドラに対しては周期ハンドラ用領域の次の要素から
+割り当てられるため，この値は常に周期ハンドラの個数に等しい．
+変数定義は，次の形式となる．
+
+const uint_t _kernel_almevtid_offset = <周期ハンドラの個数>;
+
+タイムイベントキューについては(9-3)を参照のこと．
+
+(5-5-5) エラー条件
+
+アラームハンドラに関するエラー条件は次の通りである．
+
+＊コンフィギュレータ本体が検出するもの
+・同じalmidに対するCRE_ALMが複数ある場合（E_OBJ）
+
+＊パス2で検出するもの
+・almatrが（TA_NULL）でない場合（E_RSATR）
+・CRE_ALM のエントリが16個より多い ※SSP実装定義事項
+
+＊パス3で検出するもの
+・almhdrがプログラムの開始番地として正しくない場合（E_PAR）
+	- ターゲット依存の値（CHECK_FUNC_ALIGN）の倍数でない場合
+	- NULLの場合（ターゲット依存，CHECK_FUNC_NONNULL）
+
+(6) 割込みに関する定義
+
+割込みに関して生成する情報は，ターゲット毎に定めることができる．
+ターゲット毎に定めない場合には，以下で述べるターゲットに依存しない標準的な
+情報を生成する．ターゲット毎に定める場合には，(6-1)と(6-3)に述べる情報は生
+成しない（(6-2)に述べる情報は生成する）．
+
+(6-1) 割込み要求ラインに関する定義
+
+割込み要求ラインの属性を設定する静的API「CFG_INT」で設定した割込み要求
+ラインに関する定義を生成する．具体的には次の通り．
+
+以下では，システムコンフィギュレーションファイルに次の静的APIが含まれ
+ている時に生成すべき情報について述べる．
 
 CFG_INT(INTNO intno, { intatr, intpri });
 
-(6-1-1) Ýè·éÝvCÌ
-
-Ýè·éÝvCÌð}Nè`·évvZbTfBNeB
-ui#definejð¶¬·éDÜ½C»ÌlðÂÏÌè`ð¶¬·éDïÌI
-ÉÍCÌæ¤Èsð¶¬·éD
-
-#define TNUM_INTNO <Ýè·éÝvCÌ>
+(6-1-1) 設定する割込み要求ラインの数
+
+設定する割込み要求ラインの数をマクロ定義するプリプロセッサディレクティ
+ブ（#define）を生成する．また，その値を持つ変数の定義を生成する．具体的
+には，次のような行を生成する．
+
+#define TNUM_INTNO <設定する割込み要求ラインの数>
 const uint_t	_kernel_tnum_intno = TNUM_INTNO;
 
-(6-1-2) ÝvCÌú»îñiÝÔj
-
-ÝÔÌú»îñÍCÌ`®Æ·éD
+(6-1-2) 割込み要求ラインの初期化情報（割込み番号）
+
+割込み番号の初期化情報は，次の形式とする．
 
 const INTNO _kernel_intinib_intno[TNUM_INTNO] = {(intno)};
 
-(6-1-3) ÝvCÌú»îñiÝvC®«j
-
-ÝvC®«Ìú»îñÍCÌ`®Æ·éD
+(6-1-3) 割込み要求ラインの初期化情報（割込み要求ライン属性）
+
+割込み要求ライン属性の初期化情報は，次の形式とする．
 
 const ATR _kernel_intinib_intatr[TNUM_INTNO] = {(intatr)};
 
-(6-1-4) ÝvCÌú»îñiÝvC®«j
-
-ÝDæxÌú»îñÍCÌ`®Æ·éD
+(6-1-4) 割込み要求ラインの初期化情報（割込み要求ライン属性）
+
+割込み優先度の初期化情報は，次の形式とする．
 
 const PRI _kernel_intinib_intpri[TNUM_INTNO] = {(intpri)};
 
-(6-1-5) G[ð
-
-ÝvCÉÖ·éG[ðÍÌÊèÅ éD
-
-pX2Åo·éàÌ
-Eintno ª CFG_INTÉÎ·éÝÔÆµÄ³µ­È¢êiE_PARj
-Eintno ª CFG_INTÉæÁÄÝèÏÝÌêiE_OBJj
-EintatrªimTA_ENAINTnbmTA_EDGEnjÅÈ¢êiE_RSATRj
-	¦ ^[QbgË¶ÅÝ®«ðÇÁÂiTARGET_INTATRj
-EJ[lÇÉÅè³êÄ¢é intno ÉÎµÄCintpriÉTMIN_INTPRI
-@æèà¬³¢liÂÜèCDæxÆµÄÍ¢ljªwè³ê½êiE_OBJj
-EJ[lÇOÉÅè³êÄ¢é intno ÉÎµÄCintpri É TMIN_INTPRI
-@Æ¯¶©Ü½Í»êæèàå«¢liÂÜèCDæxÆµÄÍ¯¶©Ü½Í
-@»êæèá¢ljªwè³ê½êiE_OBJj
-Eintpri ª CFG_INT ÉÎ·éÝDæxÆµÄ³µ­È¢êiE_PARj
-
-KvÉ¶Ä^[QbgË¶Åo·éàÌ
-Eintatr ªÝ®«ÆµÄÝèÅ«È¢lÌêiE_RSATRj
-Eintpri ªÝDæxÆµÄÝèÅ«È¢lÌêiE_PARj
-E¯êÌÝDæxµ©ÝèÅ«È¢ÝvCÉÎµÄCÙÈé
-@ÝDæxðÝèµ½êiE_PARj
-
-(6-2) ÝT[rX[`ÉÖ·éè`
-
-(6-2-1) ÝnhÌ¶¬
-
-VXeRtBM
-[Vt@CÉÜÜêéÝT[rX[`
-ðÇÁ·éÃIAPIuATT_ISRvÉîÃ«C¯êÌÝÔÉÎµÄÇÁ³
-ê½ÝT[rX[`ðÉÄÑo·Öð¶¬·éD
-
-ïÌIÉÍC¯êÌÝÔÉÎµÄÝT[rX[`ðÇÁ·é
+(6-1-5) エラー条件
+
+割込み要求ラインに関するエラー条件は次の通りである．
+
+＊パス2で検出するもの
+・intno が CFG_INTに対する割込み番号として正しくない場合（E_PAR）
+・intno が CFG_INTによって設定済みの場合（E_OBJ）
+・intatrが（［TA_ENAINT］｜［TA_EDGE］）でない場合（E_RSATR）
+	※ ターゲット依存部で割込み属性を追加可（TARGET_INTATR）
+・カーネル管理に固定されている intno に対して，intpriにTMIN_INTPRI
+　よりも小さい値（つまり，優先度としては高い値）が指定された場合（E_OBJ）
+・カーネル管理外に固定されている intno に対して，intpri に TMIN_INTPRI
+　と同じかまたはそれよりも大きい値（つまり，優先度としては同じかまたは
+　それより低い値）が指定された場合（E_OBJ）
+・intpri が CFG_INT に対する割込み優先度として正しくない場合（E_PAR）
+
+＊必要に応じてターゲット依存部で検出するもの
+・intatr が割込み属性として設定できない値の場合（E_RSATR）
+・intpri が割込み優先度として設定できない値の場合（E_PAR）
+・同一の割込み優先度しか設定できない割込み要求ラインに対して，異なる割
+　込み優先度を設定した場合（E_PAR）
+
+(6-2) 割込みサービスルーチンに関する定義
+
+(6-2-1) 割込みハンドラの生成
+
+システムコンフィギュレーションファイル中に含まれる割込みサービスルーチ
+ンを追加する静的API「ATT_ISR」に基づき，同一の割込み番号に対して追加さ
+れた割込みサービスルーチンを順に呼び出す関数を生成する．
+
+具体的には，同一の割込み番号に対して割込みサービスルーチンを追加する
 
 ATT_ISR({ isratr_1, exinf_1, intno, isr_1, isrpri_1 });
 ATT_ISR({ isratr_2, exinf_2, intno, isr_2, isrpri_2 });
-	cc
+	……
 ATT_ISR({ isratr_n, exinf_n, intno, isr_n, isrpri_n });
 
-Æ¢¤ÃIAPIÉÎµÄCÌæ¤ÈÖð¶¬·éD±±ÅCisrpri_1C
-isrpri_2CccCisrpri_nÍClÌ¬³¢ÉÀ×Ö¦çêÄ¢éàÌÆ·éD
-lª¯¶àÌÌÔÅÍCVXeRtBM
-[Vt@CÅÌÃI
-APIÌÌÊèÉÀñÅ¢éàÌÆ·éD
+という静的APIに対して，次のような関数を生成する．ここで，isrpri_1，
+isrpri_2，……，isrpri_nは，値の小さい順に並べ替えられているものとする．
+値が同じものの間では，システムコンフィギュレーションファイル中での静的
+APIの順序の通りに並んでいるものとする．
 
 static void
@@ -1070,25 +986,25 @@
 	saved_ipm = i_get_ipm();
 
-	LOG_ISR_ENTER(<intno>);		/* ISR1ÌÄoµ */
+	LOG_ISR_ENTER(<intno>);		/* ISR1の呼出し */
 	isr_1((intptr_t)(exinf_1));
 	LOG_ISR_LEAVE(intno);
 
-	if (i_sense_lock()) {		/* ISRÌÄoµOÌóÔÉß· */
+	if (i_sense_lock()) {		/* ISRの呼出し前の状態に戻す */
 		i_unlock_cpu();
 	}
 	i_set_ipm(saved_ipm);
 
-	LOG_ISR_ENTER(<intno>);		/* ISR2ÌÄoµ */
+	LOG_ISR_ENTER(<intno>);		/* ISR2の呼出し */
 	isr_2((intptr_t)(exinf_2));
 	LOG_ISR_LEAVE(intno);
 
-	if (i_sense_lock()) {		/* ISRÌÄoµOÌóÔÉß· */
+	if (i_sense_lock()) {		/* ISRの呼出し前の状態に戻す */
 		i_unlock_cpu();
 	}
 	i_set_ipm(saved_ipm);
 
-	cc
-
-	LOG_ISR_ENTER(<intno>);		/* ISRnÌÄoµ */
+	……
+
+	LOG_ISR_ENTER(<intno>);		/* ISRnの呼出し */
 	isr_n((intptr_t)(exinf_n));
 	LOG_ISR_LEAVE(intno);
@@ -1097,9 +1013,9 @@
 }
 
-±±ÅCISRnÌÄoµÌãÉÄoµOÌóÔÉß³È¢ÌÍCÝnh
-©çÌ^[ÉæèCJ[lª³ÌóÔÉß·½ßÅ éD
-
-¯êÌÝÔÉÎµÄÇÁ³ê½ÝT[rX[`ª1ÂÌÝÌê
-ÉÍCÌæ¤ÈÖð¶¬·éD
+ここで，ISRnの呼出しの後に呼出し前の状態に戻さないのは，割込みハンドラ
+からのリターンにより，カーネルが元の状態に戻すためである．
+
+同一の割込み番号に対して追加された割込みサービスルーチンが1つのみの場合
+には，次のような関数を生成する．
 
 static void
@@ -1113,259 +1029,249 @@
 }
 
-yÛèz±±ÅCLOG_ISR_ENTERCLOG_ISR_LEAVEÌøðÇ¤·é©ªÛèÆ
-µÄcÁÄ¢éDATT_ISRÅo^³ê½ISRÉÎµÄÍISR IDªt^³êÈ¢½
-ßCIDÅISRðæÊ·é±ÆªÅ«È¢DâÞÈ­ÝÔðnµÄ¢éªC
-g£îñiexinfjàn·×«©àµêÈ¢D
-
-(6-2-2) ÝnhÌè`É·é
-
-ãÌæ¤ÉÝnhð¶¬µ½êÉÍCÉà¾·éÝnh
-ÉÖ·éè`É¨¢ÄCVXeRtBM
-[Vt@CÉÌÃ
-IAPIªÜÜêÄ¢éÌÆ¯lÉ·éD
+【課題】ここで，LOG_ISR_ENTER，LOG_ISR_LEAVEの引数をどうするかが課題と
+して残っている．ATT_ISRで登録されたISRに対してはISR IDが付与されないた
+め，IDでISRを区別することができない．やむなく割込み番号を渡しているが，
+拡張情報（exinf）も渡すべきかもしれない．
+
+(6-2-2) 割込みハンドラの定義に相当する処理
+
+上のように割込みハンドラを生成した場合には，次に説明する割込みハンドラ
+に関する定義において，システムコンフィギュレーションファイル中に次の静
+的APIが含まれているのと同様に処理する．
 
 DEF_INH(inhno, { TA_NULL, _kernel_inthdr_<intno> });
 
-±±ÅinhnoÍCintnoÉÎ·éÝnhÔÅ éD
-
-(6-2-3) G[ð
-
-ÝT[rX[`ÉÖ·éG[ðÍÌÊèÅ éD
-
-pX2Åo·éàÌ
-Eisratr ªiTA_NULLjÅÈ¢êiE_RSATRj
-	¦ ^[QbgË¶ÅÝT[rX[`®«ðÇÁÂiTARGET_ISRATRj
-Eintno ª ATT_ISR ÉÎ·éÝÔÆµÄ³µ­È¢êiE_PARj
-	¦ intno ÉÎ·é inhno ªÈ¢êðÜÞ
-E(TMIN_ISRPRI <= isrpri && isrpri <= TMAX_ISRPRI)ÅÈ¢êiE_PARj
-Eintno ÉÎ·é inhno ÉÎµÄ DEF_INH ª éêiE_OBJj
-Eintno ÉÎ·é CFG_INT ªÈ¢êiE_OBJj
-Eintno ÉÎµÄ CFG_INT ª¶ÝµC©ÂCCFG_INT ÅÝè³ê½ÝDæxª
-@TMIN_INTPRI æèà¬³¢iÂÜèCDæxÆµÄÍ¢jêiE_OBJj
-	¦ J[lÇOÌISRÍT|[gµÈ¢½ß
-
-KvÉ¶Ä^[QbgË¶Åo·éàÌ
-EisrªvOÌJnÔnÆµÄ³µ­È¢êiE_PARj
-
-(6-3) ÝnhÉÖ·éè`
-
-Ýnhðè`·éÃIAPIuDEF_INHvÅè`µ½Ýnh
-iãqÌÝT[rX[`ÌÇÁÉæèRtBM
-[^ª¶¬µ½
-ÝnhðÜÞjÉÖ·éè`ð¶¬·éDïÌIÉÍÌÊèD
-
-ÈºÅÍCVXeRtBM
-[Vt@CÉÌÃIAPIªÜÜê
-Ä¢éÉ¶¬·×«îñÉÂ¢Äq×éD
+ここでinhnoは，intnoに対応する割込みハンドラ番号である．
+
+(6-2-3) エラー条件
+
+割込みサービスルーチンに関するエラー条件は次の通りである．
+
+＊パス2で検出するもの
+・isratr が（TA_NULL）でない場合（E_RSATR）
+	※ ターゲット依存部で割込みサービスルーチン属性を追加可（TARGET_ISRATR）
+・intno が ATT_ISR に対する割込み番号として正しくない場合（E_PAR）
+	※ intno に対応する inhno がない場合を含む
+・(TMIN_ISRPRI <= isrpri && isrpri <= TMAX_ISRPRI)でない場合（E_PAR）
+・intno に対応する inhno に対して DEF_INH がある場合（E_OBJ）
+・intno に対する CFG_INT がない場合（E_OBJ）
+・intno に対して CFG_INT が存在し，かつ，CFG_INT で設定された割込み優先度が
+　TMIN_INTPRI よりも小さい（つまり，優先度としては高い）場合（E_OBJ）
+	※ カーネル管理外のISRはサポートしないため
+
+＊必要に応じてターゲット依存部で検出するもの
+・isrがプログラムの開始番地として正しくない場合（E_PAR）
+
+(6-3) 割込みハンドラに関する定義
+
+割込みハンドラを定義する静的API「DEF_INH」で定義した割込みハンドラ
+（上述の割込みサービスルーチンの追加によりコンフィギュレータが生成した
+割込みハンドラを含む）に関する定義を生成する．具体的には次の通り．
+
+以下では，システムコンフィギュレーションファイルに次の静的APIが含まれ
+ている時に生成すべき情報について述べる．
 
 DEF_INH(inhno, { inhatr, inthdr });
 
-(6-3-1) è`·éÝnhÌ
-
-è`·éÝnhÌð}Nè`·évvZbTfBNeBu
-i#definejð¶¬·éDÜ½C»ÌlðÂÏÌè`ð¶¬·éDïÌI
-ÉÍCÌæ¤Èsð¶¬·éD
-
-#define TNUM_INHNO <è`·éÝnhÌ>
+(6-3-1) 定義する割込みハンドラの数
+
+定義する割込みハンドラの数をマクロ定義するプリプロセッサディレクティブ
+（#define）を生成する．また，その値を持つ変数の定義を生成する．具体的
+には，次のような行を生成する．
+
+#define TNUM_INHNO <定義する割込みハンドラの数>
 const uint_t	_kernel_tnum_inhno = TNUM_INHNO;
 
-(6-3-2) ÝnhÌoüû
-
-è`·éÝnhÉCÝnhÌoüû[`ð¶¬·
-éDïÌIÉÍCÌæ¤Èsð¶¬·éD
+(6-3-2) 割込みハンドラの出入口処理
+
+定義する割込みハンドラ毎に，割込みハンドラの出入口処理ルーチンを生成す
+る．具体的には，次のような行を生成する．
 
 INTHDR_ENTRY(inhno, inhno_num, inthdr)
 
-±±Åinhno_numÍCinhnoiÝnhÔjðlÅ\»µ½àÌÅC
-AZu¾êLqÉgp·é½ßÌàÌÅ éD
-
-(6-3-3) ÝnhÌú»îñiÝnhÔj
-
-ÝnhÔÌú»îñÍCÌ`®Æ·éD
+ここでinhno_numは，inhno（割込みハンドラ番号）を数値で表現したもので，
+アセンブリ言語記述に使用するためのものである．
+
+(6-3-3) 割込みハンドラの初期化情報（割込みハンドラ番号）
+
+割込みハンドラ番号の初期化情報は，次の形式とする．
 
 const INHNO _kernel_inhinib_inhno[TNUM_INHNO] = {(inhno)};
 
-(6-3-4) ÝnhÌú»îñiÝnh®«j
-
-Ýnh®«Ìú»îñÍCÌ`®Æ·éD
+(6-3-4) 割込みハンドラの初期化情報（割込みハンドラ属性）
+
+割込みハンドラ属性の初期化情報は，次の形式とする．
 
 const ATR _kernel_inhinib_inhatr[TNUM_INHNO] = {(inhatr)};
 
-(6-3-5) ÝnhÌú»îñiÝnhAhXj
-
-ÝnhÌAhXÌú»îñÍCÌ`®Æ·éD
+(6-3-5) 割込みハンドラの初期化情報（割込みハンドラアドレス）
+
+割込みハンドラのアドレスの初期化情報は，次の形式とする．
 
 const FP _kernel_inhinib_entry[TNUM_INHNO] = {(inthdr)};
 
-(6-3-6) G[ð
-
-ÝnhÉÖ·éG[ðÍÌÊèÅ éD
-
-pX2Åo·éàÌ
-Einhno ª DEF_INH ÉÎ·éÝnhÔÆµÄ³µ­È¢êiE_PARj
-Einhno ª DEF_INH ÉæÁÄÝèÏÝÌêiE_OBJj
-#Einhno ÉÎ·é intno ÉÎµÄ ATT_ISR ª éêiE_OBJj
-#	¦ inhno ÉÎ·é intno ªÈ¢êÉÍC±Ì`FbNðsíÈ¢
-#	¨ ±Ì`FbNÍCÝT[rX[`¤Ås¤
-Einhatr ªiTA_NULLjÅÈ¢êiE_RSATRj
-	¦ ^[QbgË¶ÅÝnh®«ðÇÁÂiTARGET_INHATRj
-	¦ TA_NONKERNEL ðg¤êÉÍCTARGET_INHATR ÉÝè·é
-EJ[lÇÉÅè³êÄ¢é inhno ÉÎµÄCinhatr É TA_NONKERNEL ª
-@wè³êÄ¢éêiE_RSATRj
-EJ[lÇOÉÅè³êÄ¢é inhno ÉÎµÄCinhatr É TA_NONKERNEL ª
-@wè³êÄ¢È¢êiE_RSATRj
-Einhno ÉÎ·é intno ÉÎ·é CFG_INT ªÈ¢êiE_OBJj
-	¦ inhno ÉÎ·é intno ªÈ¢êÉÍC±Ì`FbNðsíÈ¢
-Einhatr É TA_NONKERNEL ªwè³êÄ¨ç¸Cinhno ÉÎ·é intno ÉÎµÄ
-@CFG_INT ÅÝè³ê½ÝDæxª TMIN_INTPRI æèà¬³¢êiE_OBJj
-	¦ inhno ÉÎ·é intno ªÈ¢êÉÍC±Ì`FbNðsíÈ¢
-Einhatr É TA_NONKERNEL ªwè³êÄ¨èCinhno ÉÎ·é intno ÉÎµÄ
-@CFG_INT ÅÝè³ê½ÝDæxª TMIN_INTPRI ÈãÅ éêiE_OBJj
-	¦ inhno ÉÎ·é intno ªÈ¢êÉÍC±Ì`FbNðsíÈ¢
-
-KvÉ¶Ä^[QbgË¶Åo·éàÌ
-EinthdrªvOÌJnÔnÆµÄ³µ­È¢êiE_PARj
-
-(7) CPUáOÉÖ·éè`
-
-CPUáOÉÖµÄ¶¬·éîñÍC^[QbgÉèßé±ÆªÅ«éD
-^[QbgÉèßÈ¢êÉÍCÈºÅq×é^[QbgÉË¶µÈ¢WIÈ
-îñð¶¬·éD^[QbgÉèßéêÉÍC±êçÌîñÍ¶¬³êÈ¢D
-
-VXeRtBM
-[Vt@CÉCCPUáOnhðè`·é
-ÃIAPIuDEF_EXCvªÜÜêÄ¢éêÉCCPUáOnhÉÖ·éè`ð
-¶¬·éD
-
-ÈºÅÍCVXeRtBM
-[Vt@CÉÌÃIAPIªÜÜê
-Ä¢éÉ¶¬·×«îñÉÂ¢Äq×éD
+(6-3-6) エラー条件
+
+割込みハンドラに関するエラー条件は次の通りである．
+
+＊パス2で検出するもの
+・inhno が DEF_INH に対する割込みハンドラ番号として正しくない場合（E_PAR）
+・inhno が DEF_INH によって設定済みの場合（E_OBJ）
+#・inhno に対応する intno に対して ATT_ISR がある場合（E_OBJ）
+#	※ inhno に対応する intno がない場合には，このチェックを行わない
+#	→ このチェックは，割込みサービスルーチン側で行う
+・inhatr が（TA_NULL）でない場合（E_RSATR）
+	※ ターゲット依存部で割込みハンドラ属性を追加可（TARGET_INHATR）
+	※ TA_NONKERNEL を使う場合には，TARGET_INHATR に設定する
+・カーネル管理に固定されている inhno に対して，inhatr に TA_NONKERNEL が
+　指定されている場合（E_RSATR）
+・カーネル管理外に固定されている inhno に対して，inhatr に TA_NONKERNEL が
+　指定されていない場合（E_RSATR）
+・inhno に対応する intno に対する CFG_INT がない場合（E_OBJ）
+	※ inhno に対応する intno がない場合には，このチェックを行わない
+・inhatr に TA_NONKERNEL が指定されておらず，inhno に対応する intno に対して
+　CFG_INT で設定された割込み優先度が TMIN_INTPRI よりも小さい場合（E_OBJ）
+	※ inhno に対応する intno がない場合には，このチェックを行わない
+・inhatr に TA_NONKERNEL が指定されており，inhno に対応する intno に対して
+　CFG_INT で設定された割込み優先度が TMIN_INTPRI 以上である場合（E_OBJ）
+	※ inhno に対応する intno がない場合には，このチェックを行わない
+
+＊必要に応じてターゲット依存部で検出するもの
+・inthdrがプログラムの開始番地として正しくない場合（E_PAR）
+
+(7) CPU例外に関する定義
+
+CPU例外に関して生成する情報は，ターゲット毎に定めることができる．
+ターゲット毎に定めない場合には，以下で述べるターゲットに依存しない標準的な
+情報を生成する．ターゲット毎に定める場合には，これらの情報は生成されない．
+
+システムコンフィギュレーションファイル中に，CPU例外ハンドラを定義する
+静的API「DEF_EXC」が含まれている場合に，CPU例外ハンドラに関する定義を
+生成する．
+
+以下では，システムコンフィギュレーションファイルに次の静的APIが含まれ
+ている時に生成すべき情報について述べる．
 
 DEF_EXC(excno, { excatr, exchdr });
 
-(7-1) è`·éCPUáOnhÌ
-
-è`·éCPUáOnhÌð}Nè`·évvZbTfBNeB
-ui#definejð¶¬·éDÜ½C»ÌlðÂÏÌè`ð¶¬·éDïÌ
-IÉÍCÌæ¤Èsð¶¬·éD
-
-#define TNUM_EXCNO <è`·éCPUáOnhÌ>
+(7-1) 定義するCPU例外ハンドラの数
+
+定義するCPU例外ハンドラの数をマクロ定義するプリプロセッサディレクティ
+ブ（#define）を生成する．また，その値を持つ変数の定義を生成する．具体
+的には，次のような行を生成する．
+
+#define TNUM_EXCNO <定義するCPU例外ハンドラの数>
 const uint_t	_kernel_tnum_excno = TNUM_EXCNO;
 
-(7-2) CPUáOnhÌoüû
-
-è`·éCPUáOnhÉCCPUáOnhÌoüû[`ð¶¬
-·éDïÌIÉÍCÌæ¤Èsð¶¬·éD
+(7-2) CPU例外ハンドラの出入口処理
+
+定義するCPU例外ハンドラ毎に，CPU例外ハンドラの出入口処理ルーチンを生成
+する．具体的には，次のような行を生成する．
 
 EXCHDR_ENTRY(excno, excno_num, exchdr)
 
-±±Åexcno_numÍCexcnoiCPUáOnhÔjðlÅ\»µ½àÌÅC
-AZu¾êLqÉgp·é½ßÌàÌÅ éD
-
-(7-3) CPUáOnhÔÌú»îñiCPUáOÔj
-
-CPUáOnhÔÌú»îñÍCÌ`®Æ·éD
+ここでexcno_numは，excno（CPU例外ハンドラ番号）を数値で表現したもので，
+アセンブリ言語記述に使用するためのものである．
+
+(7-3) CPU例外ハンドラ番号の初期化情報（CPU例外番号）
+
+CPU例外ハンドラ番号の初期化情報は，次の形式とする．
 
 const EXCNO _kernel_excinib_excno[TNUM_EXCNO] = {(excno)};
 
-(7-4) CPUáOnhÔÌú»îñiCPUáOnh®«j
-
-CPUáOnh®«Ìú»îñÍCÌ`®Æ·éD
+(7-4) CPU例外ハンドラ番号の初期化情報（CPU例外ハンドラ属性）
+
+CPU例外ハンドラ属性の初期化情報は，次の形式とする．
 
 const ATR _kernel_excinib_excatr[TNUM_EXCNO] = {(excatr)};
 
-(7-5) CPUáOnhÔÌú»îñiCPUáOnhÌæªÔnj
-
-CPUáOnhÌæªÔnÌú»îñÍCÌ`®Æ·éD
+(7-5) CPU例外ハンドラ番号の初期化情報（CPU例外ハンドラの先頭番地）
+
+CPU例外ハンドラの先頭番地の初期化情報は，次の形式とする．
 
 const FP _kernel_excinib_entry[TNUM_EXCNO] = {(FP)(EXC_ENTRY(excno, exchdr))};
 
-±±Å EXC_ENTRY ÍCPUáOnhÔÆCPUáOnhÌæªÔnð³É
-CPUáOnhÌüèûÌ¼Ìð¶¬·é}NÅC^[QbgË¶Å
-è`³êÄ¢éD
-
-(7-6) G[ð
-
-CPUáOnhÉÖ·éG[ðÍÌÊèÅ éD
-
-pX2Åo·éàÌ
-Eexcno ª DEF_EXC ÉÎ·é CPU áOnhÔÆµÄ³µ­È¢êiE_PARj
-Eexcno ª DEF_EXC ÉæÁÄÝèÏÝÌêiE_OBJj
-Eexcatr ªiTA_NULLjÅÈ¢êiE_RSATRj
-	¦ ^[QbgË¶ÅCPUáOnh®«ðÇÁÂiTARGET_EXCATRj
-
-KvÉ¶Ä^[QbgË¶Åo·éàÌ
-EexchdrªvOÌJnÔnÆµÄ³µ­È¢êiE_PARj
-
-(8) ñ^XNReLXgpÌX^bNÌæÉÖ·éè`
-
-æÌ (5-1-7) Åàà¾µ½æ¤ÉCSSPJ[lÅÍCRtBM
-[^Í
-¤LX^bNÌæÌÝmÛ·éDµ½ªÁÄCñ^XNReLXgêpÌX^bNÌæÍ
-mÛµÈ¢D±Ì½ßCDEF_ICS ÌðÍCñ^XNReLXgªp¢éX^bNÌæÌ
-TCYðwè·é±ÆÌÝÆÈéDÜ½CDEF_ICS ÅÍæªÔn istk ÆµÄ NULL ÌÝ
-ó¯t¯éDNULL ÈOÌlðwèµ½êÍG[ÆÈéD
-
-¦ ¤LX^bNÌæÉÖ·éè`Í (9) ðQÆ·é±ÆD
-
-È¨Cñ^XNReLXgpÌX^bNTCYÉÖ·éè`ÍCÈºÌæ¤É
-DEF_ICS ÌL³É©©íç¸íÉ¶¬³êéD
-
-(8-1) DEF_ICS ªÈ¢ê
-
-VXeRtBM
-[Vt@CÉCÃIAPIuDEF_ICSvªÜÜêÄ
-¢È¢êÉÍCÌsð¶¬·éD
+ここで EXC_ENTRY はCPU例外ハンドラ番号とCPU例外ハンドラの先頭番地を元に
+CPU例外ハンドラの入り口処理の名称を生成するマクロで，ターゲット依存部で
+定義されている．
+
+(7-6) エラー条件
+
+CPU例外ハンドラに関するエラー条件は次の通りである．
+
+＊パス2で検出するもの
+・excno が DEF_EXC に対する CPU 例外ハンドラ番号として正しくない場合（E_PAR）
+・excno が DEF_EXC によって設定済みの場合（E_OBJ）
+・excatr が（TA_NULL）でない場合（E_RSATR）
+	※ ターゲット依存部でCPU例外ハンドラ属性を追加可（TARGET_EXCATR）
+
+＊必要に応じてターゲット依存部で検出するもの
+・exchdrがプログラムの開始番地として正しくない場合（E_PAR）
+
+(8) 非タスクコンテキスト用のスタック領域に関する定義
+
+先の (5-1-7) でも説明したように，SSPカーネルでは，コンフィギュレータは
+共有スタック領域のみ確保する．したがって，非タスクコンテキスト専用のスタック領域は
+確保しない．このため，DEF_ICS の役割は，非タスクコンテキストが用いるスタック領域の
+サイズを指定することのみとなる．また，DEF_ICS では先頭番地 istk として NULL のみ
+受け付ける．NULL 以外の値を指定した場合はエラーとなる．
+
+※ 共有スタック領域に関する定義は (9) を参照すること．
+
+なお，非タスクコンテキスト用のスタックサイズに関する定義は，以下のように
+DEF_ICS の有無にかかわらず常に生成される．
+
+(8-1) DEF_ICS がない場合
+
+システムコンフィギュレーションファイルに，静的API「DEF_ICS」が含まれて
+いない場合には，次の行を生成する．
 
 #define TOPPERS_ISTKSZ          DEFAULT_ISTKSZ
 
-(8-2) DEF_ICS ª éê
-
-ÈºÅÍCVXeRtBM
-[Vt@CÉÌÃIAPIªÜÜêÄ
-¢éÉ¶¬·×«îñÉÂ¢Äq×éD
+(8-2) DEF_ICS がある場合
+
+以下では，システムコンフィギュレーションファイルに次の静的APIが含まれて
+いる時に生成すべき情報について述べる．
 
 DEF_ICS({ istksz, istk });
 
-DEF_ICS ÅÍ istk ÆµÄNULLÌÝwèÂ\Å èCoÍÉÍe¿µÈ¢D
-ñ^XNReLXgpX^bNÌæÌTCY istksz ÉæèÌsð¶¬·éD
+DEF_ICS では istk としてNULLのみ指定可能であり，出力には影響しない．
+非タスクコンテキスト用スタック領域のサイズ istksz により次の行を生成する．
 
 #define TOPPERS_ISTKSZ          (istksz)
 
-¦¤LX^bNÌæÌè`ÉÂ¢ÄÍ (9) ðQÆÌ±ÆD
-
-(8-3) G[ð
-
-ñ^XNReLXgpÌX^bNÌæÉÖ·éG[ðÍÌÊèÅ éD
-
-pX2Åo·éàÌ
-EÃIAPIuDEF_ICSvª¡ éiE_OBJj
-EistkszªX^bNÌæÌTCYÆµÄ³µ­È¢êiE_PARj
-        - istksz ª 0 Ìê
-EistkªX^bNÌæÌæªÔnÆµÄ³µ­È¢êiE_PARj
-        - NULLÈOÌlÌê
-
-KvÉ¶Ä^[QbgË¶Åo·éàÌ
-Eistkszª¬³·¬éêiE_PARj
-
-
-(9) ¤LX^bNÌæÉÖ·éè`
-
-æÌ (5-1-7) ÉÄà¾µ½æ¤ÉCSSPJ[lÅÍ^XNðÜÞSÄÌPÊª
-¯¶X^bNÌæð¤p·éæ¤ÉÝv³êÄ¢éD»µÄ¤p³êéX^bNÌæÌ
-±Æðu¤LX^bNÌævÆÄÔD
-
-¤LX^bNÌæÌè`Í DEF_STK ðp¢Äs¤D»µÄCRtBM
-[VÅÍ
-¤LX^bNÌæÉÖ·éè`ÍCDEF_STK ÌL³ÉÖíç¸íÉ¶¬³êéD
-
-ÈºÅÍCDEF_STK ÌL³¨æÑ^¦çêéøÌàeÉæèC
-ÇÌæ¤É¤LX^bNÌæÌè`ª¶¬³êé©ÉÂ¢Äà¾·éD
-
-(9-1) DEF_STK ªÈ¢êÉ¶¬³êéè`
-
-VXeRtBM
-[Vt@CÉCÃIAPIuDEF_STKvªÜÜêÄ
-¢È¢êÉÍCÌsð¶¬·éD
+※共有スタック領域の定義については (9) を参照のこと．
+
+(8-3) エラー条件
+
+非タスクコンテキスト用のスタック領域に関するエラー条件は次の通りである．
+
+＊パス2で検出するもの
+・静的API「DEF_ICS」が複数ある（E_OBJ）
+・istkszがスタック領域のサイズとして正しくない場合（E_PAR）
+        - istksz が 0 の場合
+・istkがスタック領域の先頭番地として正しくない場合（E_PAR）
+        - NULL以外の値の場合
+
+＊必要に応じてターゲット依存部で検出するもの
+・istkszが小さすぎる場合（E_PAR）
+
+
+(9) 共有スタック領域に関する定義
+
+先の (5-1-7) にて説明したように，SSPカーネルではタスクを含む全ての処理単位が
+同じスタック領域を共用するように設計されている．そして共用されるスタック領域の
+ことを「共有スタック領域」と呼ぶ．
+
+共有スタック領域の定義は DEF_STK を用いて行う．そして，コンフィギュレーションでは
+共有スタック領域に関する定義は，DEF_STK の有無に関わらず常に生成される．
+
+以下では，DEF_STK の有無および与えられる引数の内容により，
+どのように共有スタック領域の定義が生成されるかについて説明する．
+
+(9-1) DEF_STK がない場合に生成される定義
+
+システムコンフィギュレーションファイルに，静的API「DEF_STK」が含まれて
+いない場合には，次の行を生成する．
 
 static STK_T        		_kernel_stack[COUNT_STK_T(TOPPERS_TSTKSZ+TOPPERS_ISTKSZ)];
@@ -1373,17 +1279,16 @@
 #define TOPPERS_STKSZ		ROUND_STK_T(TOPPERS_TSTKSZ+TOPPERS_ISTKSZ)
 
-(9-2) DEF_STKª éêÉÌÝ¶¬³êéè`
-
-ÈºÅÍCVXeRtBM
-[Vt@CÉÌÃIAPIªÜÜêÄ
-¢éÉ¶¬·×«îñÉÂ¢Äq×éD
+(9-2) DEF_STKがある場合にのみ生成される定義
+
+以下では，システムコンフィギュレーションファイルに次の静的APIが含まれて
+いる時に生成すべき情報について述べる．
 
 DEF_STK({ stksz, stk });
 
-(9-2-1) stk ª NULL Ìê
-
-stk ª NULL ÌêÉÍCwè³ê½TCYÌ¤LX^bNÌæðmÛµC
-¤LX^bNÌæÌú»îñð¶¬·éD
-ïÌIÉÍCãLÌÃIAPIÉÎµÄCÌsð¶¬·éD
+(9-2-1) stk が NULL の場合
+
+stk が NULL の場合には，指定されたサイズの共有スタック領域を確保し，
+共有スタック領域の初期化情報を生成する．
+具体的には，上記の静的APIに対して，次の行を生成する．
 
 static STK_T        		_kernel_stack[COUNT_STK_T(stksz)];
@@ -1391,14 +1296,14 @@
 #define TOPPERS_STKSZ		ROUND_STK_T(stksz)
 
-(9-2-2) stk ª NULL ÈOÌê
-
-stk ª NULL ÅÈ¢êÉÍC¤LX^bNÌæÌú»îñðCÌ`®Å¶¬·éD
+(9-2-2) stk が NULL 以外の場合
+
+stk が NULL でない場合には，共有スタック領域の初期化情報を，次の形式で生成する．
 
 #define TOPPERS_STK 		(stk)
 #define TOPPERS_STKSZ		(stksz)
 
-(9-3) DEF_STK ÌL³ÉÖWÈ­CíÉ¶¬³êéè`
-
-DEF_STKÌL³Éæç¸CÌè`ð¶¬·éD
+(9-3) DEF_STK の有無に関係なく，常に生成される定義
+
+DEF_STKの有無によらず，次の定義を生成する．
 
 const SIZE  	_kernel_stksz = TOPPERS_STKSZ;
@@ -1409,89 +1314,84 @@
 #endif /* TOPPERS_ISTKPT */
 
-(9-4) G[ð
-
-¤LX^bNÌæÉÖ·éG[ðÍÌÊèÅ éD
-
-pX2Åo·éàÌ
-EÃIAPIuDEF_STKvª¡ éiE_OBJj
-EstkszªX^bNÌæÌTCYÆµÄ³µ­È¢êiE_PARj
-	- stksz ÆµÄ 0 ðwèµ½ê
-	- ^[QbgË¶ÌliCHECK_STKSZ_ALIGNjÌ{ÅÈ¢ê
-	¦ ±ÌG[`FbNÍCstk ª NULL ÅÈ¢êÉÌÝs¤
-ExFstksz ªC(TOPPERS_TSTKSZ+TOPPERS_ISTKSZ) æèà¬³¢ê
-	¦ DEF_STK ª¶ÝµCstk ªñNULLÌêD
-	¦ }NÌlÉÂ¢ÄÍ (5-1-9), (8-1), (8-2) ðQÆÌ±Æ
-
-pX3Åo·éàÌ
-EstkªX^bNÌæÌæªÔnÆµÄ³µ­È¢êiE_PARj
-	- ^[QbgË¶ÌliCHECK_STACK_ALIGNjÌ{ÅÈ¢ê
-	- NULLÌêi^[QbgË¶CCHECK_STACK_NONNULLj
-
-(10) ^CCxgÇÉÖ·éè`
-
-^CCxgÇÉÖAµÄCÌè`ð¶¬·éD
-
-(10-1) ^CCxgnhÌ
-
-¶¬³ê½^CCxgnhÌð}Nè`·évvZbT
-fBNeCu(#define) ð¶¬·éD
-
-SSPJ[lÅÍ^CCxgnhÆµÄüúnh¨æÑA[
-nhÌÝðT|[g·éD»Ì½ßCCRE_CYC ¨æÑ CRE_ALM Ìvª
-^CCxgnhÆÈéD
-
-ïÌIÉÍCÌæ¤ÈLqð¶¬·éD
-
-#define TNUM_TMEVT	<^CCxgnhÌÂ>
-
-(10-2) ^CCxgubNÌTCYÌè`
-
-^CCxgubNÌvfðè`·éÏð¶¬·éD
-^CCxgubNÌvfÍ^CCxgnhÌÉµ¢D
-
-ïÌIÉÍCÌæ¤ÈLqð¶¬·éD
-
-const uint_t _kernel_tmevt_queue = <^CCxgnhÌÂ>;
-
-(10-3) ^CCxgL
-[Ìè`
-
-^CCxgÇÌ½ßÌL
-[ð¶¬·éDL
-[ÍzñÆµÄÀ³êÄ
-¢éDL
-[Ìæªð\»·é½ßÌzñvfðmÛ·é½ßCzñÌvfÍ
-u^CCxgnhÌÂ{1vÆÈéD
-
-ïÌIÉÍCÌæ¤ÈLqð¶¬·éD
+(9-4) エラー条件
+
+共有スタック領域に関するエラー条件は次の通りである．
+
+＊パス2で検出するもの
+・静的API「DEF_STK」が複数ある（E_OBJ）
+・stkszがスタック領域のサイズとして正しくない場合（E_PAR）
+	- stksz として 0 を指定した場合
+	- ターゲット依存の値（CHECK_STKSZ_ALIGN）の倍数でない場合
+	※ このエラーチェックは，stk が NULL でない場合にのみ行う
+・警告：stksz が，(TOPPERS_TSTKSZ+TOPPERS_ISTKSZ) よりも小さい場合
+	※ DEF_STK が存在し，stk が非NULLの場合．
+	※ マクロの値については (5-1-9), (8-1), (8-2) を参照のこと
+
+＊パス3で検出するもの
+・stkがスタック領域の先頭番地として正しくない場合（E_PAR）
+	- ターゲット依存の値（CHECK_STACK_ALIGN）の倍数でない場合
+	- NULLの場合（ターゲット依存，CHECK_STACK_NONNULL）
+
+(10) タイムイベント管理に関する定義
+
+タイムイベント管理に関連して，次の定義を生成する．
+
+(10-1) タイムイベントハンドラの数
+
+生成されたタイムイベントハンドラの数をマクロ定義するプリプロセッサ
+ディレクテイブ(#define) を生成する．
+
+SSPカーネルではタイムイベントハンドラとして周期ハンドラおよびアラーム
+ハンドラのみをサポートする．そのため，CRE_CYC および CRE_ALM の合計が
+タイムイベントハンドラ数となる．
+
+具体的には，次のような記述を生成する．
+
+#define TNUM_TMEVT	<タイムイベントハンドラの個数>
+
+(10-2) タイムイベントブロックのサイズの定義
+
+タイムイベントブロックの要素数を定義する変数を生成する．
+タイムイベントブロックの要素数はタイムイベントハンドラの数に等しい．
+
+具体的には，次のような記述を生成する．
+
+const uint_t _kernel_tmevt_queue = <タイムイベントハンドラの個数>;
+
+(10-3) タイムイベントキューの定義
+
+タイムイベント管理のためのキューを生成する．キューは配列として実装されて
+いる．キューの先頭を表現するための配列要素を確保するため，配列の要素数は
+「タイムイベントハンドラの個数＋1」となる．
+
+具体的には，次のような記述を生成する．
 
 extern QUEUE tmevt_queue[TNUM_TMEVT+1];
 
-(10-4) ^CCxgÔÌè`
-
-^CCxgnhÌN®ði[·éÏÍCÌ`®Æ·éD
+(10-4) タイムイベント時間の定義
+
+タイムイベントハンドラの起動時刻を格納する変数は，次の形式とする．
 
 extern EVTTIM tmevt_time[TNUM_TMEVT];
 
-(10-5) ^CCxgÌR[obNÌè`
-
-^CCxgnhÌR[obNÖði[·éÏÍC
-Ì`®Æ·éD
+(10-5) タイムイベントのコールバックの定義
+
+タイムイベントハンドラのコールバック関数を格納する変数は，
+次の形式とする．
 
 extern CBACK tmevt_callback[TNUM_TMEVT];
 
-(10-6) ^CCxgR[obNÌøÌè`
-
-^CCxgnhÌR[obNÖÌøði[·éÏÍC
-Ì`®Æ·éD
+(10-6) タイムイベントコールバックの引数の定義
+
+タイムイベントハンドラのコールバック関数の引数を格納する変数は，
+次の形式とする．
 
 extern uintptr_t tmevt_arg[TNUM_TMEVT];
 
-(11) eW
-[Ìú»ÖÌè`
-
-eJ[lIuWFNgÌÇCÝÇCCPUáOnhÇÌe@\ð
-ú»ÖðÉÄÑo·Öi_kernel_initialize_objectjð¶¬·éD
-Ì3ÂÌú»Öð¢ÄÍCgpµÈ¢@\Ìú»ÖÍÄÑo³È¢D
+(11) 各モジュールの初期化関数の定義
+
+各カーネルオブジェクトの管理，割込み管理，CPU例外ハンドラ管理の各機能を
+初期化関数を順に呼び出す関数（_kernel_initialize_object）を生成する．次
+の3つの初期化関数を除いては，使用しない機能の初期化関数は呼び出さない．
 
 _kernel_initialize_task();
@@ -1499,9 +1399,9 @@
 _kernel_initialize_exception
 
-Ü½Ìú»ÖÉÂ¢ÄÍCüúnhÜ½ÍA[nhðgp·é
-êÉÌÝÄÑo³êéD
+また次の初期化関数については，周期ハンドラまたはアラームハンドラを使用する
+場合にのみ呼び出される．
 _kernel_initialize_time_event();
 
-·×ÄÌ@\ðgÁ½êÉ¶¬³êéÖÍÌÊèÅ éD
+すべての機能を使った場合に生成される関数は次の通りである．
 
 void
@@ -1518,29 +1418,27 @@
 
 
-(12) ú»[`ÌÀsÖÌè`
-
-VXeRtBM
-[Vt@CÉÜÜêéú»[`ðÇÁ
-·éÃIAPIuATT_INIvÉÎµÄCÇÁµ½ú»[`ðÉÄÑo·Ö
-ð¶¬·éDïÌIÉÍC
+(12) 初期化ルーチンの実行関数の定義
+
+システムコンフィギュレーションファイル中に含まれる初期化ルーチンを追加
+する静的API「ATT_INI」に対して，追加した初期化ルーチンを順に呼び出す関
+数を生成する．具体的には，
 
 ATT_INI({ iniatr, exinf, inirtn });
 
-Æ¢¤ÃIAPIÉÎµÄC
+という静的APIに対して，
 
 (inirtn)((intptr_t)(exinf));
 
-ðÄÑo·ÖðC_kernel_call_inirtnÆ¢¤¼OÅ¶¬·éDú»[`
-ðÄÑo·ÍCVXeRtBM
-[Vt@CÅÌÃI
-APIÌÉêv³¹éD
-
-á¦ÎC
+を呼び出す関数を，_kernel_call_inirtnという名前で生成する．初期化ルーチ
+ンを呼び出す順序は，システムコンフィギュレーションファイル中での静的
+APIの順序に一致させる．
+
+例えば，
 
 ATT_INI({ TA_NULL, 0, timer_initialize });
 ATT_INI({ TA_NULL, CONSOLE_PORTID, serial_initialize });
 
-Æ¢¤2ÂÌÃIAPIª±ÌÅLq³ê½É¶¬·éÖÍÌÊèÅ 
-éD
+という2つの静的APIがこの順序で記述された時に生成する関数は次の通りであ
+る．
 
 void
@@ -1551,39 +1449,37 @@
 }
 
-(12-1) G[ð
-
-ú»[`ÉÖ·éG[ðÍÌÊèÅ éD
-
-pX2Åo·éàÌ
-EiniatrªiTA_NULLjÅÈ¢êiE_RSATRj
-
-KvÉ¶Ä^[QbgË¶Åo·éàÌ
-EinirtnªvOÌJnÔnÆµÄ³µ­È¢êiE_PARj
-
-(13) I¹[`ÌÀsÖÌè`
-
-VXeRtBM
-[Vt@CÉÜÜêéI¹[`ðÇ
-Á·éÃIAPIuATT_TERvÉÎµÄCÇÁµ½I¹[`ðÉÄÑo
-·Öð¶¬·éDïÌIÉÍC
+(12-1) エラー条件
+
+初期化ルーチンに関するエラー条件は次の通りである．
+
+＊パス2で検出するもの
+・iniatrが（TA_NULL）でない場合（E_RSATR）
+
+＊必要に応じてターゲット依存部で検出するもの
+・inirtnがプログラムの開始番地として正しくない場合（E_PAR）
+
+(13) 終了処理ルーチンの実行関数の定義
+
+システムコンフィギュレーションファイル中に含まれる終了処理ルーチンを追
+加する静的API「ATT_TER」に対して，追加した終了処理ルーチンを順に呼び出
+す関数を生成する．具体的には，
 
 ATT_TER({ teratr, exinf, terrtn });
 
-Æ¢¤ÃIAPIÉÎµÄC
+という静的APIに対して，
 
 (terrtn)((intptr_t)(exinf));
 
-ðÄÑo·ÖðC_kernel_call_terrtnÆ¢¤¼OÅ¶¬·éDI¹[
-`ðÄÑo·ÍCVXeRtBM
-[Vt@CÅÌÃI
-APIÌtÉêv³¹éD
-
-á¦ÎC
+を呼び出す関数を，_kernel_call_terrtnという名前で生成する．終了処理ルー
+チンを呼び出す順序は，システムコンフィギュレーションファイル中での静的
+APIの逆順に一致させる．
+
+例えば，
 
 ATT_TER({ TA_NULL, 0, timer_terminate });
 ATT_TER({ TA_NULL, CONSOLE_PORTID, serial_terminate });
 
-Æ¢¤2ÂÌÃIAPIª±ÌÅLq³ê½É¶¬·éÖÍÌÊèÅ 
-éD
+という2つの静的APIがこの順序で記述された時に生成する関数は次の通りであ
+る．
 
 void
@@ -1594,13 +1490,13 @@
 }
 
-(13-1) G[ð
-
-I¹[`ÉÖ·éG[ðÍÌÊèÅ éD
-
-pX2Åo·éàÌ
-EteratrªiTA_NULLjÅÈ¢êiE_RSATRj
-
-KvÉ¶Ä^[QbgË¶Åo·éàÌ
-EterrtnªvOÌJnÔnÆµÄ³µ­È¢êiE_PARj
-
-Èã
+(13-1) エラー条件
+
+終了処理ルーチンに関するエラー条件は次の通りである．
+
+＊パス2で検出するもの
+・teratrが（TA_NULL）でない場合（E_RSATR）
+
+＊必要に応じてターゲット依存部で検出するもの
+・terrtnがプログラムの開始番地として正しくない場合（E_PAR）
+
+以上
Index: ssp_qb_r5f100le_cs/trunk/doc/extension.txt
===================================================================
--- ssp_qb_r5f100le_cs/trunk/doc/extension.txt	(revision 93)
+++ ssp_qb_r5f100le_cs/trunk/doc/extension.txt	(revision 95)
@@ -1,12 +1,11 @@
 
-		TOPPERS/SSPJ[l
-		g£pbP[Wdl
+		TOPPERS/SSPカーネル
+		拡張パッケージ仕様
 
-		Îo[W: Release 1.3.0
-		ÅIXV: 2015N 512ú
+		対応バージョン: Release 1.3.0
+		最終更新: 2015年 5月12日
 
-±ÌhL
-gÍCTOPPERS/SSPJ[lÌ@\ðg£·é½ßÌg£
-pbP[WÉt¢ÄLqµ½àÌÅ éD
+このドキュメントは，TOPPERS/SSPカーネルの機能を拡張するための拡張
+パッケージに付いて記述したものである．
 
 ----------------------------------------------------------------------
@@ -18,110 +17,103 @@
                 Nagoya Municipal Industrial Research Institute, JAPAN
  
- ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
- Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
- ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
- (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
-      \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
-     XR[hÉÜÜêÄ¢é±ÆD
- (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
-     pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
-gip
-     Ò}j
-AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
-     Ì³ÛØKèðfÚ·é±ÆD
- (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
-     pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
-     ÆD
-   (a) ÄzzÉº¤hL
-gipÒ}j
-AÈÇjÉCãLÌ
-       ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
-   (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
-       ñ·é±ÆD
- (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
-     Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
-     Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
-     RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
-     ÆÓ·é±ÆD
+ 上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ 変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+     権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+     スコード中に含まれていること．
+ (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+     用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+     者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+     の無保証規定を掲載すること．
+ (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+     用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+     と．
+   (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+       作権表示，この利用条件および下記の無保証規定を掲載すること．
+   (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+       報告すること．
+ (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+     害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+     また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+     由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+     免責すること．
  
- {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
- æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
- ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
- AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
- ÌÓCðíÈ¢D
+ 本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ の責任を負わない．
  
 ----------------------------------------------------------------------
 
-g£pbP[WÌTv
+○拡張パッケージの概要
 
-Eüúnh@\
-EA[nh@\
-EVXeÇ@\
-ECxgtO@\
-Ef[^L
-[@\
+・周期ハンドラ機能
+・アラームハンドラ機能
+・システム時刻管理機能
+・イベントフラグ機能
+・データキュー機能
 
-ÔÇ@\ðÀ»·é½ßÌ^CCxgÇ@\àg£pbP[WÉ
-ÜñÅ¢éD
+時間管理機能を実現するためのタイムイベント管理機能も拡張パッケージ中に
+含んでいる．
 
-üúnh@\
+○周期ハンドラ機能
 
-üúnh@\ÍCÈºÌT[rXR[ðT|[gµÄ¢éD
+周期ハンドラ機能は，以下のサービスコールをサポートしている．
 
-ECRE_CYC
-Esta_cyc
-Estp_cyc
+・CRE_CYC
+・sta_cyc
+・stp_cyc
 
-½¾µCSSPJ[lÅÍ16ÂÜÅµ©üúnhð¶¬Å«È¢Æ¢¤
-§Àª éD
+ただし，SSPカーネルでは16個までしか周期ハンドラを生成できないという
+制限がある．
 
-A[nh@\
+○アラームハンドラ機能
 
-A[nh@\ÍCÈºÌT[rXR[ðT|[gµÄ¢éD
+アラームハンドラ機能は，以下のサービスコールをサポートしている．
 
-ECRE_ALM
-Esta_alm
-Eista_alm
-Estp_alm
-Eistp_alm
+・CRE_ALM
+・sta_alm
+・ista_alm
+・stp_alm
+・istp_alm
 
-½¾µCSSPJ[lÅÍ16ÂÜÅµ©A[nhð¶¬Å«È¢Æ¢¤
-§Àª éD
+ただし，SSPカーネルでは16個までしかアラームハンドラを生成できないという
+制限がある．
 
-VXeÇ@\
+○システム時刻管理機能
 
-VXeÇ@\ÍCÈºÌT[rXR[ðT|[gµÄ¢éD
+システム時刻管理機能は，以下のサービスコールをサポートしている．
 
-Eget_tim
+・get_tim
 
-CxgtO@\
+○イベントフラグ機能
 
-CxgtO@\ÍCÈºÌT[rXR[ðT|[gµÄ¢éD
+イベントフラグ機能は，以下のサービスコールをサポートしている．
 
-ECRE_FLG
-Eset_flg
-Eiset_flg
-Eclr_flg 
-Epol_flg 
+・CRE_FLG
+・set_flg
+・iset_flg
+・clr_flg 
+・pol_flg 
 
-f[^L
-[@\
+○データキュー機能
 
-f[^L
-[@\ÍCÈºÌT[rXR[ðT|[gµÄ¢éD
+データキュー機能は，以下のサービスコールをサポートしている．
 
-ECRE_DTQ
-Epsnd_dtq
-Eipsnd_dtq
-Eprcv_dtq
+・CRE_DTQ
+・psnd_dtq
+・ipsnd_dtq
+・prcv_dtq
 
-t@X
+○リファレンス
 
-(1) üúnh@\
+(1) 周期ハンドラ機能
 
 	ER ercd = sta_cyc(ID cycid)
 	ER ercd = stp_cyc(ID cycid)
 
-(2) A[nh@\
+(2) アラームハンドラ機能
 
 	ER ercd = sta_alm(ID almid, RELTIM almtim)
@@ -130,9 +122,9 @@
 	ER ercd = istp_alm(ID almid)
 
-(3) ÔÇ@\
+(3) 時間管理機能
 
 	ER ercd = get_tim(SYSTIM *p_systim)
 
-(4) CxgtO@\
+(4) イベントフラグ機能
 
     ER set_flg(ID flgid, FLGPTN setptn);
@@ -141,6 +133,5 @@
     ER pol_flg(ID flgid, FLGPTN waiptn, MODE wfmode, FLGPTN *p_flgptn);
 
-(5) f[^L
-[@\
+(5) データキュー機能
 
     ER psnd_dtq(ID dtqid, intptr_t data);
@@ -149,23 +140,22 @@
 
 
- ÃIAPIê
+○ 静的API一覧
 
-(1) üúnh@\
+(1) 周期ハンドラ機能
 
 CRE_CYC(ID cycid, { ATR cycatr, intptr_t exinf,
 			CYCHDR cychdr, RELTIM cyctim, RELTIM cycphs })
 
-(2) A[nh@\
+(2) アラームハンドラ機能
 
 CRE_ALM(ID almid, { ATR almatr, intptr_t exinf, ALMHDR almhdr })
 
-(3) CxgtO@\
+(3) イベントフラグ機能
 
 CRE_FLG(ID flgid, { ATR flgatr, FLGPTN iflgptn })
 
-(4) f[^L
-[@\
+(4) データキュー機能
 
 CRE_DTQ(ID dtqid, { ATR dtqatr, uint_t dtqcnt, void *dtqmb })
 
-ÈãD
+以上．
Index: ssp_qb_r5f100le_cs/trunk/doc/porting.txt
===================================================================
--- ssp_qb_r5f100le_cs/trunk/doc/porting.txt	(revision 93)
+++ ssp_qb_r5f100le_cs/trunk/doc/porting.txt	(revision 95)
@@ -1,13 +1,12 @@
 
-		TOPPERS/SSPJ[l
-		^[QbgË¶ |[eBOKCh
-
-		Îo[W: Release 1.3.0
-		ÅIXV: 2015N511ú
-
-±ÌhL
-gÍCTOPPERS/SSPJ[lðC¢T|[gÌ^[QbgVXe
-É|[eBO·é½ßÉKvÆÈé^[QbgË¶ÌÀû@ðà¾·
-éàÌÅ éD
+		TOPPERS/SSPカーネル
+		ターゲット依存部 ポーティングガイド
+
+		対応バージョン: Release 1.3.0
+		最終更新: 2015年5月11日
+
+このドキュメントは，TOPPERS/SSPカーネルを，未サポートのターゲットシステ
+ムにポーティングするために必要となるターゲット依存部の実装方法を説明す
+るものである．
 
 ----------------------------------------------------------------------
@@ -19,377 +18,367 @@
                 Nagoya Municipal Industrial Research Institute, JAPAN
 
- ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
- Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
- ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
- (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
-      \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
-     XR[hÉÜÜêÄ¢é±ÆD
- (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
-     pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
-gip
-     Ò}j
-AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
-     Ì³ÛØKèðfÚ·é±ÆD
- (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
-     pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
-     ÆD
-   (a) ÄzzÉº¤hL
-gipÒ}j
-AÈÇjÉCãLÌ
-       ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
-   (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
-       ñ·é±ÆD
- (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
-     Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
-     Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
-     RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
-     ÆÓ·é±ÆD
+ 上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ 変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+     権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+     スコード中に含まれていること．
+ (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+     用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+     者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+     の無保証規定を掲載すること．
+ (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+     用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+     と．
+   (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+       作権表示，この利用条件および下記の無保証規定を掲載すること．
+   (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+       報告すること．
+ (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+     害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+     また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+     由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+     免責すること．
  
- {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
- æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
- ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
- AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
- ÌÓCðíÈ¢D
+ 本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ の責任を負わない．
  
 ----------------------------------------------------------------------
 
-Ú
-
-1. ¤Ê
-	1.1 ^[QbgË¶Ì\¬
-	1.2 ¼OÌÕËÌh~
-	1.3 ½dCN[hÌh~
-	1.4 AZu¾êÆÌwb_t@CÌ¤p 
-	1.5 CN[hLqÌû@
-	1.6 NeBJZNVÌoüÌÀ»ÉÖ·é§ñ
-2. VXe\zÂ«Ì^[QbgË¶
-	2.1 ^[QbgªÌÆ^[QbgË¶ÌfBNg
-	2.2 MakefileÌ^[QbgË¶
-	2.3 J­Â«¼ÆR}h¼ÌÝè
-	2.4 RpCIvVÆIuWFNgt@CÌÝè
-	2.5 Nû@ÌÝè
-	2.6 Ë¶ÖWÌè`
-	2.7 »Ì¼ÌÝè
-3. TOPPERS¤Êè`Ì^[QbgË¶
-	3.1 ^[Qbg¯Ê}N
-	3.2 ®^ÌÅålEÅ¬lErbg
-	3.3 TCYÌwè³ê½®^C»ÌÅålEÅ¬lC®èðìé}N
-	3.4 TCYÌwè³ê½®¬_^C»ÌÅålEÅ¬lÌ}N
-	3.5 RpCÌg£@\Ì½ßÌ}Nè`
-	3.6 WIÈè`Ìã«
-	3.7 AT[VÌ½ßÌè`
-4. VXeC^tF[XCiSILjÌ^[QbgË¶
-	4.1 SÝbNóÔÌÇ
-	4.2 ÷­ÔÒ¿
-	4.3 vZbTÌGfBA
-	4.4 óÔANZXÖ
-	4.5 I/OóÔANZXÖ
-5. J[lAPIÌ^[QbgË¶
-	5.1 ^[Qbgè`ÅT|[g·é@\
-	5.2 ÝDæxÌÍÍ
-	5.3 ^CeBbNÌè`
-	5.4 ÌæmÛÌ½ßÌ^è`
-	5.5 ÌæmÛÌ½ßÌ}N
-	5.6 I[onh@\g£Ì½ßÌè`iIvVj
-6. J[lÀÌ^[QbgË¶
-	6.1 J[lÀÌ^[QbgË¶Ì¤Ê
-		6.1.1  J[lÀÌ^[QbgË¶Ì\¬vf
-		6.1.2  ^[QbgË¶ÌÖÌ½¼K¥
-	6.2 g[XO@\ÖÌÎ
-	6.3 VXeóÔÌÇ
-		6.3.1  SÝbNóÔÌÇ
-		6.3.2  ReLXgÌÇ
-		6.3.3  CPUbNóÔÌÇ
-	6.4 ÝÉÖA·éVXeóÔÌÇ
-		6.4.1  ÝDæx}XNÌÇ
-		6.4.2  ÝvÖ~tOÌÇ
-		6.4.3  ÝvÌNA
-		6.4.4  ÝvÌv[u
-		6.4.5  ÝnhÌæªÆö
-	6.5 ^XNfBXpb`
-		6.5.1 ^XNReLXgubNÆ^XNú»ReLXgubN
-		6.5.2 fBXpb`{Ì
-		6.5.3 ^XNReLXg©çÌfBXpb`
-		6.5.4 fBXpb`Ì®ìJn
-		6.5.5 »ÝÌReLXgðÌÄÄfBXpb`
-		6.5.6 ^XNÌN®
-	6.6 Ýnh
-		6.6.1 ÝnhÌoüû
-		6.6.2 ÝnhÌoüûÌ¶¬
-		6.6.3 ÝnhÌÝè
-		6.6.4 ÝvCÌ®«ÌÝè
-		6.6.5 ÝÇ@\Ìú»ÌÏX
-		6.6.6 ftHgÌÝnh
-		6.6.7 J[lÇOÌÝ
-	6.7 CPUáOnhÆCPUáO­¶ÌVXeóÔÌQÆ
-		6.7.1 CPUáOnhÌoüû
-		6.7.2 CPUáOnhÌoüûÌ¶¬
-		6.7.3 CPUáOnhÌÝè
-		6.7.4 CPUáOÇ@\Ìú»ÌÏX
-		6.7.5 ftHgÌCPUáOnh
-		6.7.6 CPUáO­¶ÌVXeóÔÌQÆ
-	6.8 J[lÌN®EI¹ÆX^bNÌæÈÇ
-	6.9 J[làÌ`
-[jO
-		6.9.1 rbg}bvT[`
-		6.9.2 rbgtB[h
-	6.10 J[lÀÉÖ·é»Ì¼Ìè`
-		6.10.1 ñ^XNReLXgpÌX^bNÌæ
-		6.10.2 óxÌè`
-	6.11  J[lÀÌ^[QbgË¶Ì½ßÌl[Lq
-	6.12 ^C}hCo
-		6.12.1 ^C}hCoÌt@C\¬
-		6.12.2 ^C}Ìú»EI¹EÝ
-		6.12.3 «\]¿pVXeÌQÆÌ½ßÌ@\
-7. RtBM
-[^Ýèt@CÌ^[QbgË¶
-	7.1 Ýèt@CÆ^[QbgË¶ÌÊut¯
-	7.2 pX2Ìev[gt@CÌ^[QbgË¶
-		7.2.1 ^[QbgñË¶ðCN[h·éOÉè`·×«Ï
-		7.2.2 ^[QbgñË¶Åè`³êéÏ
-	7.3 pX3Ìev[gt@CÌ^[QbgË¶
-	7.4 cfg1_out.cÌNÉKvÈX^uÌè`t@C
-8. VXeT[rXÌ^[QbgË¶
-	8.1 VXeT[rXÌ^[QbgË¶
-	8.2 VAC^tF[XhCoÌ^[QbgË¶
-		8.2.1 ÏCf[^^CÇÖ
-		8.2.2 foCXT[rX[`
-		8.2.3 R[obN[`
-	8.3 J[lN®bZ[WÌoÍÌ^[QbgË¶è`
-	8.4 TvvOÆeXgvOÌ^[QbgË¶è`
-9. »Ì¼
-	9.1 hL
-g
-	9.2 pbP[WLqt@C
-10. t@X
-	10.1 ^[QbgË¶Ìt@Cê
-
-
-1. ¤Ê
-
-1.1 ^[QbgË¶Ì\¬
-
-^[QbgË¶ÍCtargetfBNgÌºÉC^[Qbgn[hEFAÆ
-J­Â«ÌgÝí¹ÉpÓ·éD½¾µC^[QbgË¶ÌÄp«ð
-l¶µCvZbTC`bvCJ­Â«ÌÝÉË¶·éªðCvZbTË
-¶C`bvË¶CJ­Â«Ë¶Æ¢¤`ÅØèª¯Äàæ¢DØèª¯
-ûÍC^[QbgË¶ÌÀÉC³êÄ¢éDvZbTË¶C`bvË
-¶CJ­Â«Ë¶ÍCarchfBNgÌºÉu­D
-
-SSPJ[lÌ^[QbgË¶ÍCVXe\zÂ«iMakefilejÌ^[Qb
-gË¶CTOPPERS¤Êè`it_stddef.hjÌ^[QbgË¶CVXeC
-^tF[XCiSILCsil.hjÌ^[QbgË¶CJ[lAPIikernel.hj
-Ì^[QbgË¶CJ[lÀÌ^[QbgË¶iRtBM
-[^
-Ýèt@CÌ^[QbgË¶ðÜÞjCVXeT[rXÌ^[QbgË
-¶C^[QbgË¶ÉÖ·éhL
-gÅ\¬³êéD
-
-1.2 ¼OÌÕËÌh~
-
-TOPPERSvWFNgªñ·é\tgEFAÌ½ßÉCTOPPERS_ÅnÜéV
-{ð\ñµÄ¢éDwb_t@CÉLq³êCAvP[V©çQ
-ÆÅ«éàV{ÍCTOPPERS_ÅnÜé¼OÆ·éD
-
-Ü½C_kernel_ÅnÜéV{ÍCJ[làÌÏâÖÌ½ßÉ\ñ
-µÄ¢éDJ[làÌÏâÖÌ¼OÅCNÉAvP[V
-Ì¼OÆÕË·éÂ\«ª éàÌÍCl[LqÉXgAbv·é±Æ
-ÅCRpCÉ_kernel_ÅnÜé¼OÉu«·¦é±ÆÆµÄ¢éD
-
-1.3 ½dCN[hÌh~
-
-·×ÄÌwb_t@CÍC½dÉCN[h³êéÌðh~·é½ßÌð
-RpCLqðüêé±ÆÆ·éDá¦ÎCtarget_config.hÅ êÎCt@
-CÌæªÉ
+○目次
+
+1. 共通事項
+	1.1 ターゲット依存部の構成
+	1.2 名前の衝突の防止
+	1.3 多重インクルードの防止
+	1.4 アセンブリ言語とのヘッダファイルの共用 
+	1.5 インクルード記述の方法
+	1.6 クリティカルセクションの出入処理の実現に関する制約
+2. システム構築環境のターゲット依存部
+	2.1 ターゲット略称とターゲット依存部のディレクトリ
+	2.2 Makefileのターゲット依存部
+	2.3 開発環境名とコマンド名の設定
+	2.4 コンパイルオプションとオブジェクトファイルの設定
+	2.5 リンク方法の設定
+	2.6 依存関係の定義
+	2.7 その他の設定
+3. TOPPERS共通定義のターゲット依存部
+	3.1 ターゲット識別マクロ
+	3.2 整数型の最大値・最小値・ビット数
+	3.3 サイズの指定された整数型，その最大値・最小値，整数定数を作るマクロ
+	3.4 サイズの指定された浮動小数点型，その最大値・最小値のマクロ
+	3.5 コンパイラの拡張機能のためのマクロ定義
+	3.6 標準的な定義の上書き
+	3.7 アサーションのための定義
+4. システムインタフェースレイヤ（SIL）のターゲット依存部
+	4.1 全割込みロック状態の管理
+	4.2 微少時間待ち
+	4.3 プロセッサのエンディアン
+	4.4 メモリ空間アクセス関数
+	4.5 I/O空間アクセス関数
+5. カーネルAPIのターゲット依存部
+	5.1 ターゲット定義でサポートする機能
+	5.2 割込み優先度の範囲
+	5.3 タイムティックの定義
+	5.4 メモリ領域確保のための型定義
+	5.5 メモリ領域確保のためのマクロ
+	5.6 オーバランハンドラ機能拡張のための定義（オプション）
+6. カーネル実装のターゲット依存部
+	6.1 カーネル実装のターゲット依存部の共通事項
+		6.1.1  カーネル実装のターゲット依存部の構成要素
+		6.1.2  ターゲット依存部の関数の命名規則
+	6.2 トレースログ機能への対応
+	6.3 システム状態の管理
+		6.3.1  全割込みロック状態の管理
+		6.3.2  コンテキストの管理
+		6.3.3  CPUロック状態の管理
+	6.4 割込みに関連するシステム状態の管理
+		6.4.1  割込み優先度マスクの管理
+		6.4.2  割込み要求禁止フラグの管理
+		6.4.3  割込み要求のクリア
+		6.4.4  割込み要求のプローブ
+		6.4.5  割込みハンドラの先頭処理と末尾処理
+	6.5 タスクディスパッチャ
+		6.5.1 タスクコンテキストブロックとタスク初期化コンテキストブロック
+		6.5.2 ディスパッチャ本体
+		6.5.3 タスクコンテキストからのディスパッチ
+		6.5.4 ディスパッチャの動作開始
+		6.5.5 現在のコンテキストを捨ててディスパッチ
+		6.5.6 タスクの起動処理
+	6.6 割込みハンドラ
+		6.6.1 割込みハンドラの出入口処理
+		6.6.2 割込みハンドラ毎の出入口処理の生成
+		6.6.3 割込みハンドラの設定
+		6.6.4 割込み要求ラインの属性の設定
+		6.6.5 割込み管理機能の初期化処理の変更
+		6.6.6 デフォルトの割込みハンドラ
+		6.6.7 カーネル管理外の割込み
+	6.7 CPU例外ハンドラとCPU例外発生時のシステム状態の参照
+		6.7.1 CPU例外ハンドラの出入口処理
+		6.7.2 CPU例外ハンドラの出入口処理の生成
+		6.7.3 CPU例外ハンドラの設定
+		6.7.4 CPU例外管理機能の初期化処理の変更
+		6.7.5 デフォルトのCPU例外ハンドラ
+		6.7.6 CPU例外発生時のシステム状態の参照
+	6.8 カーネルの起動・終了とスタック領域など
+	6.9 カーネル内部のチューニング
+		6.9.1 ビットマップサーチ
+		6.9.2 ビットフィールド
+	6.10 カーネル実装に関するその他の定義
+		6.10.1 非タスクコンテキスト用のスタック領域
+		6.10.2 空ラベルの定義
+	6.11  カーネル実装のターゲット依存部のためのリネーム記述
+	6.12 タイマドライバ
+		6.12.1 タイマドライバのファイル構成
+		6.12.2 タイマの初期化・終了処理・割込み処理
+		6.12.3 性能評価用システム時刻の参照のための機能
+7. コンフィギュレータ設定ファイルのターゲット依存部
+	7.1 設定ファイルとターゲット依存部の位置付け
+	7.2 パス2のテンプレートファイルのターゲット依存部
+		7.2.1 ターゲット非依存部をインクルードする前に定義すべき変数
+		7.2.2 ターゲット非依存部で定義される変数
+	7.3 パス3のテンプレートファイルのターゲット依存部
+	7.4 cfg1_out.cのリンクに必要なスタブの定義ファイル
+8. システムサービス等のターゲット依存部
+	8.1 システムサービスのターゲット依存部
+	8.2 シリアルインタフェースドライバのターゲット依存部
+		8.2.1 変数，データ型，管理関数
+		8.2.2 デバイスサービスルーチン
+		8.2.3 コールバックルーチン
+	8.3 カーネル起動メッセージの出力のターゲット依存定義
+	8.4 サンプルプログラムとテストプログラムのターゲット依存定義
+9. その他
+	9.1 ドキュメント
+	9.2 パッケージ記述ファイル
+10. リファレンス
+	10.1 ターゲット依存部のファイル一覧
+
+
+1. 共通事項
+
+1.1 ターゲット依存部の構成
+
+ターゲット依存部は，targetディレクトリの下に，ターゲットハードウェアと
+開発環境の組み合わせ毎に用意する．ただし，ターゲット依存部の再利用性を
+考慮し，プロセッサ，チップ，開発環境のみに依存する部分を，プロセッサ依
+存部，チップ依存部，開発環境依存部という形で切り分けてもよい．切り分け
+方は，ターゲット依存部の実装に任されている．プロセッサ依存部，チップ依
+存部，開発環境依存部は，archディレクトリの下に置く．
+
+SSPカーネルのターゲット依存部は，システム構築環境（Makefile等）のターゲッ
+ト依存部，TOPPERS共通定義（t_stddef.h）のターゲット依存部，システムイン
+タフェースレイヤ（SIL，sil.h）のターゲット依存部，カーネルAPI（kernel.h）
+のターゲット依存部，カーネル実装のターゲット依存部（コンフィギュレータ
+設定ファイルのターゲット依存部を含む），システムサービスのターゲット依
+存部，ターゲット依存部に関するドキュメント等で構成される．
+
+1.2 名前の衝突の防止
+
+TOPPERSプロジェクトが提供するソフトウェアのために，TOPPERS_で始まるシン
+ボルを予約している．ヘッダファイル中に記述され，アプリケーションから参
+照できる内部シンボルは，TOPPERS_で始まる名前とする．
+
+また，_kernel_で始まるシンボルは，カーネル内部の変数や関数のために予約
+している．カーネル内部の変数や関数の名前で，リンク時にアプリケーション
+の名前と衝突する可能性があるものは，リネーム記述にリストアップすること
+で，コンパイル時に_kernel_で始まる名前に置き換えることとしている．
+
+1.3 多重インクルードの防止
+
+すべてのヘッダファイルは，多重にインクルードされるのを防止するための条
+件コンパイル記述を入れることとする．例えば，target_config.hであれば，ファ
+イルの先頭に
 
 #ifndef TOPPERS_TARGET_CONFIG_H
 #define TOPPERS_TARGET_CONFIG_H
 
-ðCt@CÌöÉ
+を，ファイルの末尾に
 
 #endif /* TOPPERS_TARGET_CONFIG_H */
 
-ðLq·éD
-
-1.4 AZu¾êÆÌwb_t@CÌ¤p 
-
-SSPJ[lÌwb_t@CÌ½­ÍCAZu¾êÌ\[Xt@C©ç
-àCN[hÅ«éæ¤É·é½ßÉCÌ[É]ÁÄLq·éàÌÆ
-·éD
-
-ETOPPERS_MACRO_ONLYª}Nè`³êÄ¢éêÉÍCAZu¾êÅÍ
-@ðßÅ«È¢Lqi}Nè`ÈOÌLqjð­æ¤ÉLq·éD
-
-E³µ®^ÌèlÍCUINT_CâULONG_CÈÇÌ®èðìé½ßÌ}
-@Nðp¢ÄLq·éD½¾µCAZu¾êÌ\[Xt@C©çàC
-@N[hÅ«ét@CÅ ÁÄàCC¾êÌÝÅp¢éèð±êçÌ
-@}NðgÁÄLq·éKvÍÈ¢D
-
-Ü½CJ[lÀÉ¨¢ÄÍCÌ[É]¤àÌÆ·éD
-
-EAZu¾ê©çàp¢éèÌè`É^LXgðp¢éêÉÍC
-@CAST}Nðp¢ÄLq·éD
-
-AZu¾ê©çwb_t@CðCN[h·éÛÉÍCKvÉ¶ÄC
-TOPPERS_MACRO_ONLYCUINC_CCULONG_CCCASTð}Nè`µÄ©çCCN[
-hµÈ¯êÎÈçÈ¢D
-
-1.5 CN[hLqÌû@
-
-J­Â«ÅpÓ³êÄ¢éWwb_t@C¨æÑincludefBNgºÌ
-Wwb_t@CÍCu#include <...>vÉæèCN[h·éD
-
-»Ì¼Ìwb_t@CÍCu#include "..."vÉæèCN[h·éDwb
-_t@CªCJgfBNgâCN[h·ét@CÆ¯¶fB
-NgÈOÌfBNgÉu©êÄ¢éêÉÍCÌæ¤ÉpXwèð
-s¤D
-
-E^[QbgË¶itarget/<^[Qbg¼>jÌfBNgÉu©êÄ¢é
-@êÍCpXwèðsí¸Ct@C¼ÌÝðLq·éD
-		áj#include "target_config.h"
-
-EarchfBNgºÌfBNgÉu©êÄ¢éêÉÍCarchfBN
-@g©çÌÎpXÅLq·éD
-		áj#include "m68k_gcc/prc_config.h"
-
-E»Ì¼ÌêÉÍC\[XvOÌ[gfBNgiconfigureªu
-@©êÄ¢éfBNgj©çÌÎpXÅLq·éD
-		áj#include "pdic/upd72001/upd72001.h"
-
-EJ[lð\¬·ét@C©çCkernelfBNgºÌwb_t@C
-@ðCN[h·éêÍCpXwèðsí¸Ct@C¼ÌÝðLq·éD
-		áj#include "kernel_impl.h"
-
-1.6 NeBJZNVÌoüÌÀ»ÉÖ·é§ñ
-
-J[làÅp¢éNeBJZNVÌoüðÀ»·éêÉÍC
-Ì2ÂÌðð½·æ¤ÉÀµÈ¯êÎÈçÈ¢D
-
-(1-6-1) oü©ç²¯½_ÅÍCÝÌÖ~^Âª®¹µÄ¢È¯
-êÎÈçÈ¢Dá¦ÎCÝÖ~^Â½ßðÀsµÄ©çÀÛÉÝª
-Ö~^Â³êéÜÅ½½ß©x·évZbTÌêÉÍCoüÌ
-ÉNOP½ßðüêéÈÇÌû@ÅCoüð²¯½_ÅÍCÝªÖ~^
-Â³ê½óÔÉÈÁÄ¢é±ÆðÛØµÈ¯êÎÈçÈ¢D
-
-(1-6-2) ãÌf[^\¢ª«ÏíéÂ\«ª é±ÆðC½ç©Ìû
-@ÅRpCÉmç¹È¯êÎÈçÈ¢DGNUJ­Â«ÅÍCÌ¢¸ê©Ì
-û@Å±Ì§ñð½·±ÆªÅ«éD
-
-(a) NeBJZNVÌoüÌSÌÜ½ÍoüÌ{¿IÈª
-	iïÌIÉÍCÝÖ~^Â·éjðiCCÅÈ¢jÊí
-	ÌÖÉæèÀ»·éD
-
-(b) NeBJZNVÌoüÌ{¿IÈªðCCAZu
-	ÉæÁÄÀ»µÄ¢éêÉÍC»ÌCCAZuÌclobberÏ
-	XgÉ"memory"ðÇÁ·éD
-
-(c) NeBJZNVÌoüÌ{¿IÈªªC}NâCC
-	ÖÄoµÅÀ»µÄ¢éêÉÍCNeBJZNVÉüé
-	ÌÅãÆoéÌæªÉCAsm("":::"memory")Æ¢¤LqðüêéD
-
-±Ìæ¤È§ñðÝ¯éRÉÂ¢ÄÍCuTOPPERS/ASPJ[l Ývv
-ÌuJ[lÌf[^\¢ÉÎ·évolatileé¾ÉÂ¢ÄvÌßðQÆ·é±
-ÆD
-
-2. VXe\zÂ«Ì^[QbgË¶
-
-±ÌÍÌà¾ÍCGNUJ­Â«iGCCCGASCBINUTILSCGNU Makejðp¢é±Æ
-ðzèµÄLqµÄ éD»êÈOÌJ­Â«ðp¢éêÉÍCJ­Â«É
- í¹ÄC³·éKvª éD
-
-2.1 ^[QbgªÌÆ^[QbgË¶ÌfBNg
-
-Vµ¢^[QbgË¶ðì¬·éÍCÜ¸C^[QbgªÌðèßéD^[
-QbgªÌÍCVXeªÌÆJ­Â«ªÌð"_"ÅAµ½àÌÆ·éDVX
-eªÌÉp¢é¶Íp¬¶ÆÆ"_"ÉCJ­Â«ªÌÉp¢é¶Í
-p¬¶ÆÉÀè·éDGNUJ­Â«ÌJ­Â«ªÌÍC"gcc"Æ·éDá
-¦ÎCVXeªÌª"dve68k"ÅCGNUJ­Â«ðp¢éêÉÍC^[Qbg
-ªÌÍ"dve68k_gcc"ÆÈéD
-
-^[QbgË¶Ìt@Cðu­½ßÉCtargetfBNgÌºÉC^[
-QbgªÌð¼ÌÆ·éfBNgðì¬·éD±êð^[QbgË¶fB
-NgÆÄÔD
-
-^[QbgË¶©çvZbTË¶â`bvË¶ðØèª¯éêÉÍC
-Ë¶ªÌðèßéDË¶ªÌÍCvZbTâ`bvÌªÌÆJ­Â«ª
-Ìð"_"ÅAµ½àÌÆ·éDvZbTâ`bvÌªÌÉp¢é¶ÍCp
-¬¶ÆÆ"_"ÉÀè·éDá¦ÎCvZbTªÌª"m68k"ÅCGNUJ­
-Â«ðp¢éêÉÍCË¶ªÌÍ"m68k_gcc"ÆÈéD
-
-Ü½C^[QbgË¶©çJ­Â«Ë¶ðØèª¯éêÉÍCJ­Â«
-ªÌðË¶ªÌÆ·éDá¦ÎCGNUJ­Â«Ë¶ÌË¶ªÌÍC"gcc"
-ÆÈéD
-
-±êçÌË¶Ìt@Cðu­½ßÉCarchfBNgÌºÉCË¶ª
-Ìð¼ÌÆ·éfBNgðì¬·éD
-
-È¨CGNUJ­Â«ÈOÌJ­Â«ðp¢éêÉÍCRtBM
-[V
-XNvgiconfigurejCTvÌMakefileisample/MakefilejCêÌ
-[eBeBvOiutils/genoffsetCutils/makedepjðC»ÌJ­
-Â«pÉpÓ·éKvª éêª éD»ÌêÉÍC±êçÌt@CðC
-^[QbgË¶fBNg©J­Â«Ë¶fBNgÉu­àÌÆ·
-éDÜ½CJ­Â«pÌvWFNgt@CªKvÈêÉÍC^[Qbg
-Ë¶fBNgÉu­àÌÆ·éD
-
-2.2 MakefileÌ^[QbgË¶
-
-MakefileÌ^[QbgË¶ÍC^[QbgË¶fBNgÉu¢½
-Makefile.targetÜ½Í»±©çCN[h³êét@CivZbTE`b
-vEJ­Â«Ë¶ÅpÓ³êét@CÈÇjÉÜßéD
-
-2.3 J­Â«¼ÆR}h¼ÌÝè
-
-J­Â«¼ÆR}h¼ðÝè·é½ßÉCMakefileÌ^[QbgË¶Å
-ÌÏðè`·éD
-
-(2-3-1) TOOL					J­Â«¼
-
-J­Â«¼Éè`·éDGNUJ­Â«ðp¢éêÉÍCgccÉè`·éD
-
-(2-3-2) GCC_TARGET				GNUJ­Â«Ì^[Qbg¼
-
-GNUJ­Â«ðp¢éêÉCGNUJ­Â«ðconfigure·éêÉwè·é^[
-Qbg¼Éè`·éD±±Åwèµ½^[Qbg¼ÍCJ­Â«ÌR}h¼
-ÌæªÉt^³êé¶ñÆÈéDá¦ÎCGCC_TARGETðm68k-unknown-elfÉ
-è`µ½êÉÍCRpCÆµÄm68k-unknown-elf-gccªgíêéD±Ì
-Ïªè`³êÈ¢êÉÍCPÈégccªgíêéD
-
-(2-3-3) CC						CRpChCoÌ¼Ì
-(2-3-4) CXX						C++RpChCoÌ¼Ì
-(2-3-5) AS						AZuÌ¼Ì
-(2-3-6) LD						JÌ¼Ì
-(2-3-7) AR						A[JCoÌ¼Ì
-(2-3-8) NM						nmvOÌ¼Ì
-(2-3-9) RANLIB					ranlibvOÌ¼Ì
-(2-3-10) OBJCOPY				objcopyvOÌ¼Ì
-(2-3-11) OBJDUMP				objdumpvOÌ¼Ì
-
-GNUJ­Â«ÈOÌJ­Â«ðp¢éêÉC»ê¼êÌR}hÌ¼ÌÉè`
-·éDÎ·éR}hªÈ¢êâCR}hp[^ªÙÈéêÉÍC
-MakefileÅ»ÌR}hðÄÑoµÄ¢éªðÏX·éKvª éD
-
-GNUJ­Â«ÅÍC±êçÍGCC_TARGETðp¢Äè`³êéÌÅCè`·éKv
-ÍÈ¢D
-
-2.4 RpCIvVÆIuWFNgt@CÌÝè
-
-MakefileÌ^[QbgË¶ÅÈºÅà¾·éÏðè`·éÉÍC":="ð
-p¢ÄC»êÜÅÌè`ÉÇÁ·é`Ås¤Dá¦ÎCRpCÉÎ·é»
-Ì¼ÌIvVÆµÄu-Wall -g -O2vðÇÁµ½¢êÉÍCuCOPTS :=
-$(COPTS) -Wall -g -O2vÆ¢¤LqðMakefileÌ^[QbgË¶ÉÜßéD
-
-(2-4-1) COPTS				RpCÉÎ·é»Ì¼ÌIvV
-(2-4-2) CDEFS				}Nè`IvVi-DIvVj
-(2-4-3) INCLUDES			wb_t@CÌu©ê½fBNgwèI
-							vVi-IIvVj
-(2-4-4) LDFLAGS				JÉÎ·é»Ì¼ÌIvV
-(2-4-5) LIBS				CuNwèÌ½ßÌIvV
-
-^[QbgÉË¶µÄC·×ÄÌ\[Xt@CÉ¤Ê·éRpCIvV
-ÌÇÁªKvÈêÉÍCIvVÌíÞÉãÉ¦µ½ÏÉè`·éD
-
-ÙÆñÇÌêÉC^[QbgË¶fBNgÌMakefile.targetÉÍCÈ
-ºÌLqðÜßéKvª éD
+を記述する．
+
+1.4 アセンブリ言語とのヘッダファイルの共用 
+
+SSPカーネルのヘッダファイルの多くは，アセンブリ言語のソースファイルから
+もインクルードできるようにするために，次のルールに従って記述するものと
+する．
+
+・TOPPERS_MACRO_ONLYがマクロ定義されている場合には，アセンブリ言語では
+　解釈できない記述（マクロ定義以外の記述）を除くように記述する．
+
+・符号無し整数型の定数値は，UINT_CやULONG_Cなどの整数定数を作るためのマ
+　クロを用いて記述する．ただし，アセンブリ言語のソースファイルからもイ
+　ンクルードできるファイル中であっても，C言語のみで用いる定数をこれらの
+　マクロを使って記述する必要はない．
+
+また，カーネル実装においては，次のルールに従うものとする．
+
+・アセンブリ言語からも用いる定数の定義中に型キャストを用いる場合には，
+　CASTマクロを用いて記述する．
+
+アセンブリ言語からヘッダファイルをインクルードする際には，必要に応じて，
+TOPPERS_MACRO_ONLY，UINC_C，ULONG_C，CASTをマクロ定義してから，インクルー
+ドしなければならない．
+
+1.5 インクルード記述の方法
+
+開発環境で用意されている標準ヘッダファイルおよびincludeディレクトリ下の
+標準ヘッダファイルは，「#include <...>」によりインクルードする．
+
+その他のヘッダファイルは，「#include "..."」によりインクルードする．ヘッ
+ダファイルが，カレントディレクトリやインクルードするファイルと同じディ
+レクトリ以外のディレクトリに置かれている場合には，次のようにパス指定を
+行う．
+
+・ターゲット依存部（target/<ターゲット名>）のディレクトリに置かれている
+　場合は，パス指定を行わず，ファイル名のみを記述する．
+		例）#include "target_config.h"
+
+・archディレクトリ下のディレクトリに置かれている場合には，archディレク
+　トリからの相対パスで記述する．
+		例）#include "m68k_gcc/prc_config.h"
+
+・その他の場合には，ソースプログラムのルートディレクトリ（configureが置
+　かれているディレクトリ）からの相対パスで記述する．
+		例）#include "pdic/upd72001/upd72001.h"
+
+・カーネルを構成するファイルから，kernelディレクトリ下のヘッダファイル
+　をインクルードする場合は，パス指定を行わず，ファイル名のみを記述する．
+		例）#include "kernel_impl.h"
+
+1.6 クリティカルセクションの出入処理の実現に関する制約
+
+カーネル内で用いるクリティカルセクションの出入処理を実現する場合には，
+次の2つの条件を満たすように実装しなければならない．
+
+(1-6-1) 出入処理から抜けた時点では，割込みの禁止／許可が完了していなけ
+ればならない．例えば，割込み禁止／許可命令を実行してから実際に割込みが
+禁止／許可されるまで何命令か遅延するプロセッサの場合には，出入処理の中
+にNOP命令を入れるなどの方法で，出入処理を抜けた時点では，割込みが禁止／
+許可された状態になっていることを保証しなければならない．
+
+(1-6-2) メモリ上のデータ構造が書き変わる可能性があることを，何らかの方
+法でコンパイラに知らせなければならない．GNU開発環境では，次のいずれかの
+方法でこの制約を満たすことができる．
+
+(a) クリティカルセクションの出入処理の全体または出入処理の本質的な部分
+	（具体的には，割込み禁止／許可する処理）を（インラインでない）通常
+	の関数により実現する．
+
+(b) クリティカルセクションの出入処理の本質的な部分をインラインアセンブ
+	ラによって実現している場合には，そのインラインアセンブラのclobber変
+	数リストに"memory"を追加する．
+
+(c) クリティカルセクションの出入処理の本質的な部分が，マクロやインライ
+	ン関数呼出しで実現している場合には，クリティカルセクションに入る処
+	理の最後と出る処理の先頭に，Asm("":::"memory")という記述を入れる．
+
+このような制約を設ける理由については，「TOPPERS/ASPカーネル 設計メモ」
+の「カーネルのデータ構造に対するvolatile宣言について」の節を参照するこ
+と．
+
+2. システム構築環境のターゲット依存部
+
+この章の説明は，GNU開発環境（GCC，GAS，BINUTILS，GNU Make）を用いること
+を想定して記述してある．それ以外の開発環境を用いる場合には，開発環境に
+あわせて修正する必要がある．
+
+2.1 ターゲット略称とターゲット依存部のディレクトリ
+
+新しいターゲット依存部を作成する時は，まず，ターゲット略称を定める．ター
+ゲット略称は，システム略称と開発環境略称を"_"で連結したものとする．シス
+テム略称に用いる文字は英小文字と数字と"_"に，開発環境略称に用いる文字は
+英小文字と数字に限定する．GNU開発環境の開発環境略称は，"gcc"とする．例
+えば，システム略称が"dve68k"で，GNU開発環境を用いる場合には，ターゲット
+略称は"dve68k_gcc"となる．
+
+ターゲット依存部のファイルを置くために，targetディレクトリの下に，ター
+ゲット略称を名称とするディレクトリを作成する．これをターゲット依存部ディ
+レクトリと呼ぶ．
+
+ターゲット依存部からプロセッサ依存部やチップ依存部を切り分ける場合には，
+依存部略称を定める．依存部略称は，プロセッサやチップの略称と開発環境略
+称を"_"で連結したものとする．プロセッサやチップの略称に用いる文字は，英
+小文字と数字と"_"に限定する．例えば，プロセッサ略称が"m68k"で，GNU開発
+環境を用いる場合には，依存部略称は"m68k_gcc"となる．
+
+また，ターゲット依存部から開発環境依存部を切り分ける場合には，開発環境
+略称を依存部略称とする．例えば，GNU開発環境依存部の依存部略称は，"gcc"
+となる．
+
+これらの依存部のファイルを置くために，archディレクトリの下に，依存部略
+称を名称とするディレクトリを作成する．
+
+なお，GNU開発環境以外の開発環境を用いる場合には，コンフィギュレーション
+スクリプト（configure），サンプルのMakefile（sample/Makefile），一部の
+ユーティリティプログラム（utils/genoffset，utils/makedep）を，その開発
+環境用に用意する必要がある場合がある．その場合には，これらのファイルを，
+ターゲット依存部ディレクトリか開発環境依存部ディレクトリに置くものとす
+る．また，開発環境用のプロジェクトファイルが必要な場合には，ターゲット
+依存部ディレクトリに置くものとする．
+
+2.2 Makefileのターゲット依存部
+
+Makefileのターゲット依存部は，ターゲット依存部ディレクトリに置いた
+Makefile.targetまたはそこからインクルードされるファイル（プロセッサ・チッ
+プ・開発環境依存部で用意されるファイルなど）に含める．
+
+2.3 開発環境名とコマンド名の設定
+
+開発環境名とコマンド名を設定するために，Makefileのターゲット依存部で次
+の変数を定義する．
+
+(2-3-1) TOOL					開発環境名
+
+開発環境名に定義する．GNU開発環境を用いる場合には，gccに定義する．
+
+(2-3-2) GCC_TARGET				GNU開発環境のターゲット名
+
+GNU開発環境を用いる場合に，GNU開発環境をconfigureする場合に指定するター
+ゲット名に定義する．ここで指定したターゲット名は，開発環境のコマンド名
+の先頭に付与される文字列となる．例えば，GCC_TARGETをm68k-unknown-elfに
+定義した場合には，コンパイラとしてm68k-unknown-elf-gccが使われる．この
+変数が定義されない場合には，単なるgccが使われる．
+
+(2-3-3) CC						Cコンパイラドライバの名称
+(2-3-4) CXX						C++コンパイラドライバの名称
+(2-3-5) AS						アセンブラの名称
+(2-3-6) LD						リンカの名称
+(2-3-7) AR						アーカイバの名称
+(2-3-8) NM						nmプログラムの名称
+(2-3-9) RANLIB					ranlibプログラムの名称
+(2-3-10) OBJCOPY				objcopyプログラムの名称
+(2-3-11) OBJDUMP				objdumpプログラムの名称
+
+GNU開発環境以外の開発環境を用いる場合に，それぞれのコマンドの名称に定義
+する．対応するコマンドがない場合や，コマンドパラメータが異なる場合には，
+Makefile中でそのコマンドを呼び出している部分を変更する必要がある．
+
+GNU開発環境では，これらはGCC_TARGETを用いて定義されるので，定義する必要
+はない．
+
+2.4 コンパイルオプションとオブジェクトファイルの設定
+
+Makefileのターゲット依存部で以下で説明する変数を定義する時には，":="を
+用いて，それまでの定義に追加する形で行う．例えば，コンパイラに対するそ
+の他のオプションとして「-Wall -g -O2」を追加したい場合には，「COPTS :=
+$(COPTS) -Wall -g -O2」という記述をMakefileのターゲット依存部に含める．
+
+(2-4-1) COPTS				コンパイラに対するその他のオプション
+(2-4-2) CDEFS				マクロ定義オプション（-Dオプション）
+(2-4-3) INCLUDES			ヘッダファイルの置かれたディレクトリ指定オ
+							プション（-Iオプション）
+(2-4-4) LDFLAGS				リンカに対するその他のオプション
+(2-4-5) LIBS				ライブラリリンク指定のためのオプション
+
+ターゲットに依存して，すべてのソースファイルに共通するコンパイルオプショ
+ンの追加が必要な場合には，オプションの種類毎に上に示した変数に定義する．
+
+ほとんどの場合に，ターゲット依存部ディレクトリのMakefile.targetには，以
+下の記述を含める必要がある．
 
 ----------------------------------------
@@ -397,10 +386,10 @@
 ----------------------------------------
 
-±±ÅTARGETDIRÍC^[QbgË¶fBNgÉè`³êÄ¢éDÜ½
-SRCDIRÍCMakefileÉ¨¢ÄC\[XvOÌ[gfBNg
-iconfigureªu©êÄ¢éfBNgjÉè`³êÄ¢éD
-
-RpCÌâèÅCxbZ[Wªoé±Æðh°È¢óµÈOÅÍC
-COPTSÉ-WerrorðÇÁ·é±Æð§·éD
+ここでTARGETDIRは，ターゲット依存部ディレクトリに定義されている．また
+SRCDIRは，Makefileにおいて，ソースプログラムのルートディレクトリ
+（configureが置かれているディレクトリ）に定義されている．
+
+コンパイラの問題等で，警告メッセージが出ることを防げない状況以外では，
+COPTSに-Werrorを追加することを推奨する．
 
 ----------------------------------------
@@ -408,8 +397,8 @@
 ----------------------------------------
 
-J[lÌRpCÉCdereferencing type-punned pointer will break
-strict-aliasing rulesÆ¢¤xªoéêÉÍCÈºðÇÁ·éÆæ¢D±
-ÌxbZ[WÉÖ·éÚ×ÍCuTOPPERS/ASPJ[l ÝvvÌu^
-LXgÉº¤xbZ[WvÌßðQÆ·é±ÆD
+カーネルのコンパイル時に，dereferencing type-punned pointer will break
+strict-aliasing rulesという警告が出る場合には，以下を追加するとよい．こ
+の警告メッセージに関する詳細は，「TOPPERS/ASPカーネル 設計メモ」の「型
+キャストに伴う警告メッセージ」の節を参照すること．
 
 ----------------------------------------
@@ -417,31 +406,31 @@
 ----------------------------------------
 
-Ü½CAZu¾êxÌ¯Ê¼ªCC¾êxÌ¯Ê¼ÌæªÉ"_"ª
-t¢½àÌÉÈéêÉÍCCDEFSÉ-DTOPPERS_LABEL_ASMðÇÁ·éD
-
-(2-4-6) SYSSVC_DIR			VXeT[rXÌ\[Xªu©ê½fBNg
-(2-4-7) SYSSVC_ASMOBJS		AZu¾êÅLq³ê½VXeT[rXÌ
-							IuWFNg
-(2-4-8) SYSSVC_COBJS		C¾êÅLq³ê½VXeT[rXÌIuWFNg
-(2-4-9) SYSSVC_CFLAGS		VXeT[rXÉÎ·éRpCIvV
-(2-4-10) SYSSVC_LIBS		VXeT[rXÉÎ·éCuNwè
-
-^[QbgÉË¶µÄCVXeT[rXiVXeO^XNâfoCXh
-CoÈÇjÌ\[Xªu©ê½fBNgCVXeT[rXð\¬·é
-IuWFNgt@CÌXgC»êçðRpC·éÛÉKp·éRp
-CIvVC»Ì\¬ÉKvÈCuNwèðÇÁ·éêÉÍC
-ãÉ¦µ½ÏÉè`·éD
-
-(2-4-11) KERNEL_DIR			J[lÌ\[Xªu©ê½fBNg
-(2-4-12) KERNEL_ASMOBJS		AZu¾êÅLq³ê½J[lÌIuWFNg
-(2-4-13) KERNEL_COBJS		C¾êÅLq³ê½J[lÌIuWFNg
-(2-4-14) KERNEL_CFLAGS		J[lÉÎ·éRpCIvV
-
-^[QbgÉË¶µÄCJ[lÌ\[Xªu©ê½fBNgCJ[l
-ð\¬·éIuWFNgt@CÌXgC»êçðRpC·éÛÉKp
-·éRpCIvVðÇÁ·éêÉÍCãÉ¦µ½ÏÉè`·éD
-
-ÙÆñÇÌêÉC^[QbgË¶fBNgÌMakefile.targetÉÍCÈ
-ºÌLqðÜßéKvª éD
+また，アセンブリ言語レベルの識別名が，C言語レベルの識別名の先頭に"_"が
+付いたものになる場合には，CDEFSに-DTOPPERS_LABEL_ASMを追加する．
+
+(2-4-6) SYSSVC_DIR			システムサービスのソースが置かれたディレクトリ
+(2-4-7) SYSSVC_ASMOBJS		アセンブリ言語で記述されたシステムサービスの
+							オブジェクト
+(2-4-8) SYSSVC_COBJS		C言語で記述されたシステムサービスのオブジェクト
+(2-4-9) SYSSVC_CFLAGS		システムサービスに対するコンパイルオプション
+(2-4-10) SYSSVC_LIBS		システムサービスに対するライブラリリンク指定
+
+ターゲットに依存して，システムサービス（システムログタスクやデバイスド
+ライバなど）のソースが置かれたディレクトリ，システムサービスを構成する
+オブジェクトファイルのリスト，それらをコンパイルする際に適用するコンパ
+イルオプション，その構成に必要なライブラリリンク指定を追加する場合には，
+上に示した変数に定義する．
+
+(2-4-11) KERNEL_DIR			カーネルのソースが置かれたディレクトリ
+(2-4-12) KERNEL_ASMOBJS		アセンブリ言語で記述されたカーネルのオブジェクト
+(2-4-13) KERNEL_COBJS		C言語で記述されたカーネルのオブジェクト
+(2-4-14) KERNEL_CFLAGS		カーネルに対するコンパイルオプション
+
+ターゲットに依存して，カーネルのソースが置かれたディレクトリ，カーネル
+を構成するオブジェクトファイルのリスト，それらをコンパイルする際に適用
+するコンパイルオプションを追加する場合には，上に示した変数に定義する．
+
+ほとんどの場合に，ターゲット依存部ディレクトリのMakefile.targetには，以
+下の記述を含める必要がある．
 
 ----------------------------------------
@@ -451,16 +440,13 @@
 ----------------------------------------
 
-(2-4-15) CFG_TABS			RtBM
-[^ÉÎ·éIvV
-
-^[QbgÉË¶µÄCRtBM
-[^ÉÎ·éIvVðÇÁ·éê
-ÉÍCãÉ¦µ½ÏÉè`·éDïÌIÉÍCRtBM
-[^Ìlæ
-¾V{e[uÌ^[QbgË¶itarget_def.csvjª éêÉÍC
-»êðwè·éIvVðÇÁ·éKvª éD
-
-ÙÆñÇÌêÉC^[QbgË¶fBNgÌMakefile.targetÉÍCÈ
-ºÌLqðÜßéKvª éD
+(2-4-15) CFG_TABS			コンフィギュレータに対するオプション
+
+ターゲットに依存して，コンフィギュレータに対するオプションを追加する場
+合には，上に示した変数に定義する．具体的には，コンフィギュレータの値取
+得シンボルテーブルのターゲット依存部（target_def.csv）がある場合には，
+それを指定するオプションを追加する必要がある．
+
+ほとんどの場合に，ターゲット依存部ディレクトリのMakefile.targetには，以
+下の記述を含める必要がある．
 
 ----------------------------------------
@@ -468,170 +454,144 @@
 ----------------------------------------
 
-(2-4-16) CFG1_OUT_LDFLAGS	cfg1_out.cÉÎ·éNIvV
-
-^[QbgÉË¶µÄCcfg1_out.cðN·éÛÉKp·éIvVðÇ
-Á·éêÉÍCãÉ¦µ½ÏÉè`·éD
-
-(2-4-17) CFG_OBJS			VXeRtBM
-[VÌ½ßÌIu
-							WFNg
-
-^[QbgÉË¶µÄCVXeRtBM
-[VÌ½ßÌIuWFN
-gt@Cðikernel_cfg.oÈOÉjÇÁ·éêÉÍCãÉ¦µ½ÏÉè
-`·éD±ÌêCÇÁµ½IuWFNgt@CÌì¬[iRpC^
-AZu[ÆË¶ÖWì¬[jðCMakefileÌ^[QbgË¶É
-Lq·éKvª éD
+(2-4-16) CFG1_OUT_LDFLAGS	cfg1_out.cに対するリンクオプション
+
+ターゲットに依存して，cfg1_out.cをリンクする際に適用するオプションを追
+加する場合には，上に示した変数に定義する．
+
+(2-4-17) CFG_OBJS			システムコンフィギュレーションのためのオブ
+							ジェクト
+
+ターゲットに依存して，システムコンフィギュレーションのためのオブジェク
+トファイルを（kernel_cfg.o以外に）追加する場合には，上に示した変数に定
+義する．この場合，追加したオブジェクトファイルの作成ルール（コンパイル／
+アセンブルルールと依存関係作成ルール）を，Makefileのターゲット依存部に
+記述する必要がある．
 
 (2-4-18) CFG2_OUT
 
-^[QbgÉË¶µÄCRtBM
-[^ÌpX2Åkernel_cfg.cÆ
-kernel_cfg.hÈOÌt@Cð¶¬·éêÉÍCãÉ¦µ½ÏÉè`·éD
+ターゲットに依存して，コンフィギュレータのパス2でkernel_cfg.cと
+kernel_cfg.h以外のファイルを生成する場合には，上に示した変数に定義する．
 
 (2-4-19) OMIT_WARINIG_ALL
 (2-4-20) OMIT_OPTIMIZATION
 
-TvÌMakefileÅÍCRpCÉÎ·éIvVÉu-Wall -g -O2v
-ðÇÁ·éD-WallðÇÁµ½­È¢êÉÍCMakefileÌ^[QbgË¶Å
-OMIT_WARNING_ALLð"true"Éè`·éD-O2ðÇÁµ½­È¢êÉÍC
-MakefileÌ^[QbgË¶ÅOMIT_OPTIMIZATIONð"true"Éè`·éD
-
-2.5 Nû@ÌÝè
-
-(2-5-1) LDSCRIPT				JXNvgÌt@C¼
-
-J­Â«ÉWÌJXNvgªgpÅ«È¢êÉÍC^[QbgË¶
-ÅJXNvgðpÓµC»Ìt@C¼ð±ÌÏÉè`·éD
-
-(2-5-2) TEXT_START_ADDRESS		eLXgZNVÌæªÔn
-(2-5-3) DATA_START_ADDRESS		f[^ZNVÌæªÔn
-
-eZNVÌæªÔnÌwèªKvÈêÉÍC±êçÌÏÉæªÔnð
-è`·éD
-
-(2-5-4) START_OBJS				æªÉN·×«W
-[¼
-(2-5-5) END_OBJS				ÅãÉN·×«W
-[¼
-
-^[QbgÉæÁÄÍC[hW
-[ÌæªÆÅãÉN·×«W
-[
-ðC^[QbgË¶ÅpÓ·éKvª éD½­ÌêCX^[gAbv
-W
-[ð[hW
-[ÌæªÉN·éKvª éD
-
-[hW
-[ÌæªÉN·×«vOª éêÉÍCMakefile
-Ì^[QbgË¶É¨¢ÄC»ÌIuWFNgt@C¼ðSTART_OBJSÉè
-`µC»êÉÎ·éRpC[ÆË¶ÖWì¬[ðè`·éD[
-hW
-[ÌÅãÉN·×«W
-[ª éêÉÍC»ÌIuWF
-Ngt@C¼ðEND_OBJSÉè`µC»êÉÎ·éRpC[ÆË¶Ö
-Wì¬[ðè`·éDÜ½CWÌX^[gAbvW
-[icrt0.oj
-ðNµÈ¢æ¤ÉCLDFLAGSÉ-nostdlibðÇÁ·éKvª éD³ç
-ÉC-nostdlibðÂ¯é±ÆÅWCuªN³êÈ­Èé½ßC
-LIBSÉ-lgccðÇÁµÈ¯êÎÈçÈ¢D
-
-á¦ÎCX^[gAbvW
-[Ì\[Xt@Cªstart.SÌêÉÍC
-MakefileÌ^[QbgË¶ÉÌæ¤ÈLqðüêéÆæ¢D
+サンプルのMakefileでは，コンパイラに対するオプションに「-Wall -g -O2」
+を追加する．-Wallを追加したくない場合には，Makefileのターゲット依存部で
+OMIT_WARNING_ALLを"true"に定義する．-O2を追加したくない場合には，
+Makefileのターゲット依存部でOMIT_OPTIMIZATIONを"true"に定義する．
+
+2.5 リンク方法の設定
+
+(2-5-1) LDSCRIPT				リンカスクリプトのファイル名
+
+開発環境に標準のリンカスクリプトが使用できない場合には，ターゲット依存
+部でリンカスクリプトを用意し，そのファイル名をこの変数に定義する．
+
+(2-5-2) TEXT_START_ADDRESS		テキストセクションの先頭番地
+(2-5-3) DATA_START_ADDRESS		データセクションの先頭番地
+
+各セクションの先頭番地の指定が必要な場合には，これらの変数に先頭番地を
+定義する．
+
+(2-5-4) START_OBJS				先頭にリンクすべきモジュール名
+(2-5-5) END_OBJS				最後にリンクすべきモジュール名
+
+ターゲットによっては，ロードモジュールの先頭と最後にリンクすべきモジュー
+ルを，ターゲット依存部で用意する必要がある．多くの場合，スタートアップ
+モジュールをロードモジュールの先頭にリンクする必要がある．
+
+ロードモジュールの先頭にリンクすべきプログラムがある場合には，Makefile
+のターゲット依存部において，そのオブジェクトファイル名をSTART_OBJSに定
+義し，それに対するコンパイルルールと依存関係作成ルールを定義する．ロー
+ドモジュールの最後にリンクすべきモジュールがある場合には，そのオブジェ
+クトファイル名をEND_OBJSに定義し，それに対するコンパイルルールと依存関
+係作成ルールを定義する．また，標準のスタートアップモジュール（crt0.o）
+をリンクしないように，LDFLAGSに-nostdlibを追加する必要がある．さら
+に，-nostdlibをつけることで標準ライブラリがリンクされなくなるため，
+LIBSに-lgccを追加しなければならない．
+
+例えば，スタートアップモジュールのソースファイルがstart.Sの場合には，
+Makefileのターゲット依存部に次のような記述を入れるとよい．
 
 ----------------------------------------
-# X^[gAbvW
-[ÌIuWFNgt@C¼
+# スタートアップモジュールのオブジェクトファイル名
 START_OBJS = start.o
 
-# X^[gAbvW
-[ÌRpC[
+# スタートアップモジュールのコンパイルルール
 $(START_OBJS): %.o: %.S
 	$(CC) -c $(CFLAGS) $(KERNEL_CFLAGS) $<
 
-# X^[gAbvW
-[ÌË¶ÖWì¬[
+# スタートアップモジュールの依存関係作成ルール
 $(START_OBJS:.o=.d): %.d: %.S
 	@$(PERL) $(SRCDIR)/utils/makedep -C $(CC) $(MAKEDEP_OPTS) \
 		-O "$(CFLAGS) $(KERNEL_CFLAGS)" $< >> Makefile.depend
 
-# JÉÎ·éIvV
+# リンカに対するオプション
 LDFLAGS := -nostdlib $(LDFLAGS)
 LIBS := $(LIBS) -lgcc
 ----------------------------------------
 
-Ü½CGNUJ­Â«ÅCRpCÉWÌcrtbegin.oÆcrtend.oðp¢éê
-ÉÍCMakefile Ì^[QbgË¶ÉÌæ¤ÈLqðüêéÆæ¢D
+また，GNU開発環境で，コンパイラに標準のcrtbegin.oとcrtend.oを用いる場合
+には，Makefile のターゲット依存部に次のような記述を入れるとよい．
 
 ----------------------------------------
-# IuWFNgt@C¼
+# オブジェクトファイル名
 START_OBJS = $(shell $(CC) -print-file-name=crtbegin.o)
 END_OBJS = $(shell $(CC) -print-file-name=crtend.o)
 
-# Ë¶ÖWì¬[
+# 依存関係作成ルール
 $(START_OBJS:.o=.d): %.d:
 $(END_OBJS:.o=.d): %.d:
 
-# JÉÎ·éIvV
+# リンカに対するオプション
 LDFLAGS := -nostdlib $(LDFLAGS)
 LIBS := $(LIBS) -lgcc
 ----------------------------------------
 
-±ÌêC±êçÌt@CðRpC·é±ÆÍÈ¢½ßCRpC[
-ÍsvÅ éDÜ½CË¶ÖWì¬[Í_~[Åæ¢iË¶ÖWì¬[
-ªÈ¢ÆG[ÉÈéjD
-
-(2-5-6) HIDDEN_OBJS				wèµÈ­ÄàN³êéW
-[¼
-
-[hW
-[ÉN·×«W
-[ðCJÉÎ·ép[^Å
-ÍÈ­CJXNvgÉiá¦ÎCGNUJ­Â«ÌJXNvgÌ
-STARTUPðgÁÄjLq·éêÉÍC»ÌIuWFNgt@C¼ðC
-iSTART_OBJSÜ½ÍEND_OBJSÅÍÈ­jHIDDEN_OBJSÉè`µC»êÉÎ·éR
-pC[ÆË¶ÖWì¬[ðè`·éDHIDDEN_OBJSÉè`µ½
-W
-[ÍCJÉÎ·ép[^©çÍO³êéDLIBSÆLDFLAGSÉÂ
-¢ÄÍCSTART_OBJSÜ½ÍEND_OBJSðp¢éêÆ¯lÅ éD
-
-á¦ÎCX^[gAbvW
-[Ì\[Xt@Cªstart.SÅCstart.oð
-N·é±ÆðJXNvgÉLq·éêÉÍCMakefileÌ^[Qb
-gË¶ÉÌæ¤ÈLqðüêéÆæ¢D
+この場合，これらのファイルをコンパイルすることはないため，コンパイルルー
+ルは不要である．また，依存関係作成ルールはダミーでよい（依存関係作成ルー
+ルがないとエラーになる）．
+
+(2-5-6) HIDDEN_OBJS				指定しなくてもリンクされるモジュール名
+
+ロードモジュールにリンクすべきモジュールを，リンカに対するパラメータで
+はなく，リンカスクリプト中に（例えば，GNU開発環境のリンカスクリプトの
+STARTUPを使って）記述する場合には，そのオブジェクトファイル名を，
+（START_OBJSまたはEND_OBJSではなく）HIDDEN_OBJSに定義し，それに対するコ
+ンパイルルールと依存関係作成ルールを定義する．HIDDEN_OBJSに定義したモ
+ジュールは，リンカに対するパラメータからは除外される．LIBSとLDFLAGSにつ
+いては，START_OBJSまたはEND_OBJSを用いる場合と同様である．
+
+例えば，スタートアップモジュールのソースファイルがstart.Sで，start.oを
+リンクすることをリンカスクリプト中に記述する場合には，Makefileのターゲッ
+ト依存部に次のような記述を入れるとよい．
 
 ----------------------------------------
-# X^[gAbvW
-[ÌIuWFNgt@C¼
+# スタートアップモジュールのオブジェクトファイル名
 HIDDEN_OBJS = start.o
 
-# X^[gAbvW
-[ÌRpC[
+# スタートアップモジュールのコンパイルルール
 $(HIDDEN_OBJS): %.o: %.S
 	$(CC) -c $(CFLAGS) $(KERNEL_CFLAGS) $<
 
-# X^[gAbvW
-[ÌË¶ÖWì¬[
+# スタートアップモジュールの依存関係作成ルール
 $(HIDDEN_OBJS:.o=.d): %.d: %.S
 	@$(PERL) $(SRCDIR)/utils/makedep -C $(CC) $(MAKEDEP_OPTS) \
 		-O "$(CFLAGS) $(KERNEL_CFLAGS)" $< >> Makefile.depend
 
-# JÉÎ·éIvV
+# リンカに対するオプション
 LDFLAGS := -nostdlib $(LDFLAGS)
 LIBS := $(LIBS) -lgcc
 ----------------------------------------
 
-2.6 Ë¶ÖWÌè`
-
-RtBM
-[^ÌepXÉÎµÄC^[QbgË¶Ìt@CÖÌË¶Ö
-Wðè`·éDïÌIÉÍCpX1CpX2CpX3ªË¶·ét@CðC»ê
-¼êcfg1_out.cCkernel_cfg.timestampC$(OBJFILE)ÉÎ·éË¶ÖWÌ`Å
-Lq·éD
-
-ÙÆñÇÌêÉC^[QbgË¶fBNgÌMakefile.targetÉÍCÈ
-ºÌLqðÜßéKvª éD
+2.6 依存関係の定義
+
+コンフィギュレータの各パスに対して，ターゲット依存のファイルへの依存関
+係を定義する．具体的には，パス1，パス2，パス3が依存するファイルを，それ
+ぞれcfg1_out.c，kernel_cfg.timestamp，$(OBJFILE)に対する依存関係の形で
+記述する．
+
+ほとんどの場合に，ターゲット依存部ディレクトリのMakefile.targetには，以
+下の記述を含める必要がある．
 
 ----------------------------------------
@@ -641,211 +601,211 @@
 ----------------------------------------
 
-2.7 »Ì¼ÌÝè
-
-(2-7-1) CLEAN_FILES				cleanÉæèí·ét@C¼
-
-cleanÉæèí·ét@Cð^[QbgË¶ÅÇÁµ½¢êÉÍCt@
-C¼ð±ÌÏÉÇÁè`·éD
-
-(2-7-2) REALCLEAN_FILES			realcleanÉæèí·ét@C¼
-
-realcleanÉæèí·ét@Cð^[QbgË¶ÅÇÁµ½¢êÉÍC
-t@C¼ð±ÌÏÉÇÁè`·éD
-
-
-3. TOPPERS¤Êè`Ì^[QbgË¶
-
-TOPPERS¤Êè`it_stddef.hjÌ^[QbgË¶ÍCtarget_stddef.hÜ½
-Í»±©çCN[h³êét@CivZbTE`bvEJ­Â«Ë¶
-ÅpÓ³êéwb_t@CÈÇjÉÜßéD
-
-3.1 ^[Qbg¯Ê}N
-
-AvP[VâVXeT[rXÅ^[Qbgð¯Ê·é½ßÉC
-"TOPPERS_"ÉVXeªÌðå¶Éµ½¶ñðAµ½àÌiá¦ÎC
-"TOPPERS_DVE68K"jð}Nè`·éD
-
-Ü½C^[QbgË¶©çvZbTË¶â`bvË¶ðØèª¯½ê
-ÉÍC"TOPPERS_"ÉË¶ªÌðå¶Éµ½¶ñðAµ½àÌiá¦
-ÎC"TOPPERS_M68K"jð}Nè`·éD
-
-3.2 ®^ÌÅålEÅ¬lErbg
-
-(3-2-1) INT_MAX				intÉi[Å«éÅåliC90j
-(3-2-2) INT_MIN				intÉi[Å«éÅ¬liC90j
-(3-2-3) UINT_MAX			unsigned intÉi[Å«éÅåliC90j
-(3-2-4) LONG_MAX			longÉi[Å«éÅåliC90j
-(3-2-5) LONG_MIN			longÉi[Å«éÅ¬liC90j
-(3-2-6) ULONG_MAX			unsigned longÉi[Å«éÅåliC90j
-(3-2-7) CHAR_BIT			char^ÌrbgiC90j
-
-®^ÌÅålEÅ¬lErbgðC±êçÌV{É}NÉè`·éD
-
-±êçÌ}NÍCC90Éµ½àÌÅ éDJ­Â«ÉC90Éµ½
-limits.hªpÓ³êÄ¢éêÉÍC±êçÌ}Nðè`·é±ÆÉã¦ÄC
-limits.hðCN[h·êÎæ¢D
-
-3.3 TCYÌwè³ê½®^C»ÌÅålEÅ¬lC®èðìé}N
-
-(3-3-1) int8_t				t«8rbg®iIvVCC99j
-(3-3-2) uint8_t				³µ8rbg®iIvVCC99j
-(3-3-3) int16_t				t«16rbg®iC99j
-(3-3-4) uint16_t			³µ16rbg®iC99j
-(3-3-5) int32_t				t«32rbg®iC99j
-(3-3-6) uint32_t			³µ32rbg®iC99j
-(3-3-7) int64_t				t«64rbg®iIvVCC99j
-(3-3-8) uint64_t			³µ64rbg®iIvVCC99j
-(3-3-9) int128_t			t«128rbg®iIvVCC99j
-(3-3-10) uint128_t			³µ128rbg®iIvVCC99j
-(3-3-11) int_least8_t		8rbgÈãÌt«®iC99j
-(3-3-12) uint_least8_t		8rbgÈãÌ³µ®iC99j
-(3-3-13) intptr_t			|C^ði[Å«éTCYÌt«®iC99j
-(3-3-14) uintptr_t			|C^ði[Å«éTCYÌ³µ®iC99j
-(3-3-15) INT8_MAX			int8_tÉi[Å«éÅåliIvVCC99j
-(3-3-16) INT8_MIN			int8_tÉi[Å«éÅ¬liIvVCC99j
-(3-3-17) UINT8_MAX			uint8_tÉi[Å«éÅåliIvVCC99j
-(3-3-18) INT16_MAX			int16_tÉi[Å«éÅåliC99j
-(3-3-19) INT16_MIN			int16_tÉi[Å«éÅ¬liC99j
-(3-3-20) UINT16_MAX			uint16_tÉi[Å«éÅåliC99j
-(3-3-21) INT32_MAX			int32_tÉi[Å«éÅåliC99j
-(3-3-22) INT32_MIN			int32_tÉi[Å«éÅ¬liC99j
-(3-3-23) UINT32_MAX			uint32_tÉi[Å«éÅåliC99j
-(3-3-24) INT64_MAX			int64_tÉi[Å«éÅåliIvVCC99j
-(3-3-25) INT64_MIN			int64_tÉi[Å«éÅ¬liIvVCC99j
-(3-3-26) UINT64_MAX			uint64_tÉi[Å«éÅåliIvVCC99j
-(3-3-27) INT128_MAX			int128_tÉi[Å«éÅåliIvVCC99j
-(3-3-28) INT128_MIN			int128_tÉi[Å«éÅ¬liIvVCC99j
-(3-3-29) UINT128_MAX		uint128_tÉi[Å«éÅåliIvVCC99j
-(3-3-30) INT_LEAST8_MAX		int_least8_tÉi[Å«éÅåliC99j
-(3-3-31) INT_LEAST8_MIN		int_least8_tÉi[Å«éÅ¬liC99j
-(3-3-32) UINT_LEAST8_MAX	uint_least8_tÉi[Å«éÅåliC99j
-(3-3-33) INT8_C(val)		int_least8_t^Ìèðìé}NiC99j
-(3-3-34) UINT8_C(val)		uint_least8_t^Ìèðìé}NiC99j
-(3-3-35) INT16_C(val)		int16_t^Ìèðìé}NiC99j
-(3-3-36) UINT16_C(val)		uint16_t^Ìèðìé}NiC99j
-(3-3-37) INT32_C(val)		int32_t^Ìèðìé}NiC99j
-(3-3-38) UINT32_C(val)		uint32_t^Ìèðìé}NiC99j
-(3-3-39) INT64_C(val)		int64_t^Ìèðìé}NiIvVCC99j
-(3-3-40) UINT64_C(val)		uint64_t^Ìèðìé}NiIvVCC99j
-(3-3-41) INT128_C(val)		int128_t^Ìèðìé}NiIvVCC99j
-(3-3-42) UINT128_C(val)		uint128_t^Ìèðìé}NiIvVCC99j
-
-wè³ê½TCYÌ®^ðC±êçÌV{É^è`·éDÜ½Cf[^
-^Éi[Å«éÅålEÅ¬lÆC®èðìé}NðC±êçÌV{
-É}Nè`·éD
-
-±êçÌf[^^¨æÑ}NÍCC99Éµ½àÌÅ éDJ­Â«ÉC99
-Éµ½stdint.hªpÓ³êÄ¢éêÉÍC±êçÌf[^^¨æÑ}N
-ðè`·é±ÆÉã¦ÄCstdint.hðCN[h·êÎæ¢D
-
-ãÅIvVÆLqµ½àÌÍCY·éf[^^ªRpCÅT|[g
-³êÄ¢éêÉÌÝè`·é±Æð¦·D
-
-3.4 TCYÌwè³ê½®¬_^C»ÌÅålEÅ¬lÌ}N
-
-(3-4-1) float32_t			IEEE754Ì32rbgP¸x®¬_iIv
-							Vj
-(3-4-2) double64_t			IEEE754Ì64rbg{¸x®¬_iIv
-							Vj
-(3-4-3) FLOAT32_MIN			float32_tÉi[Å«éÅ¬Ì³K»³ê½³Ì
-							®¬_iIvVj
-(3-4-4) FLOAT32_MAX			float32_tÉi[Å«é\»Â\ÈÅåÌLÀ®
-							¬_iIvVj
-(3-4-5) DOUBLE64_MIN		double64_tÉi[Å«éÅ¬Ì³K»³ê½³Ì
-							®¬_iIvVj
-(3-4-6) DOUBLE64_MAX		double64_tÉi[Å«é\»Â\ÈÅåÌLÀ®
-							¬_iIvVj
-
-wè³ê½TCYE\»`®Ì®¬_^ðC±êçÌV{É^è`·
-éDÜ½Cf[^^Éi[Å«éÅålEÅ¬lðC±êçÌV{É}N
-è`·éD
-
-¢¸êàCY·éf[^^ªRpCÅT|[g³êÄ¢éêÉÌÝè
-`·éD
-
-3.5 RpCÌg£@\Ì½ßÌ}Nè`
-
-RpCÌg£@\ðp¢é½ßÌ}NÆµÄCKvÉ¶ÄCÈºÌ}
-NÌè`ðÜßéD
-
-(3-5-1) inlineiIvVCftHgÍ¢è`j
-(3-5-2) InlineiIvVCftHgÍstatic inlinej
-
-CCÖÅ é±Æð¦·wèDInlineÍCRpCPÊÉ[J
-ÈCCÖÅ é±Æð¦·D
-
-(3-5-3) asmiIvVCftHgÍ¢è`j
-(3-5-4) AsmiIvVCftHgÍ¢è`j
-
-CCAZuðLq·é½ßÌwèDAsmÍCÅK»ÉæèíµÄÍ
-ÈçÈ¢±Æð¦·D±êçÍC^[QbgË¶ÅÌÝg¤}NÅ é½
-ßC^[QbgË¶ÅgíÈ¢Èçè`·éKvÍÈ¢D
-
-(3-5-5) offsetof(structure, field)iIvVCftHgÌè` èj
-
-\¢ÌstructureÌÅÌCtB[hfieldÌItZbgðßé}ND
-
-(3-5-6) alignof(type)iIvVCftHgÌè` èj
-
-f[^^typeÌACgPÊðßé}ND
-
-(3-5-7) NoReturniIvVCftHgÍ¢è`j
-
-^[·é±ÆÌÈ¢ÖÅ é±Æð¦·wèD±êÍC^[QbgË¶
-ÌÝg¤}NÅ é½ßC^[QbgË¶ÅgíÈ¢Èçè`·éKv
-ÍÈ¢D
-
-3.6 WIÈè`Ìã«
-
-t_stddef.hÉÜÜêéTOPPERS¤Êè`ÌWIÈè`ðã«·éêÉÍC
-ÈºÌ}Nðè`·éD
-
-(3-6-1) TOPPERS_booliIvVCftHgÍintj
-(3-6-2) TOPPERS_sizeiIvVCftHgÍuintptr_tj
-(3-6-3) TOPPERS_fpiIvVCftHgÍ¼ÆÝ·«ÌÈ¢Ö|C^j
-
-»ê¼êCbool_tCSIZECFPÉ^è`·×«f[^^D
-
-(3-6-4) UINT_C(val)iIvVCftHgÍUðtÁj
-(3-6-5) ULONG_C(val)iIvVCftHgÍULðtÁj
-
-»ê¼êCunsigned uint^Cunsigned long^Ìèðìé½ßÌ}ND
-
-(3-6-6) NULLiIvVCftHgÍ0j
-
-C90ÌC¾êÂ«ÅÍCNULLÌè`Ístddef.hÉÜÜêÄ¢é½ßC±êð
-CN[hµÄàæ¢D
-
-(3-6-7) ERCD(mercd, sercd)iIvVj
-(3-6-8) MERCD(ercd)iIvVj
-(3-6-9) SERCD(ercd)iIvVj
-
-ERCDCMERCDCSERCDÌWÌè`ÍCt«®ª2ÌâÅ\»³êÄ¨èC
-EVtgZqi>>jªZpVtg³êé±Æð¼èµÄ¢éD½­ÌRp
-CÅ±Ì¼èª¬è§ÂªC»¤ÅÈ¢êÉÍC^[QbgË¶Å±ê
-çÌè`ðã«·éKvª éD
-
-(3-6-10) ALIGN_TYPE(addr, type)iIvVj
-
-AhXaddrªCf[^^typeÌACgPÊÉACµÄ¢é©
-`FbN·é}ND
-
-3.7 AT[VÌ½ßÌè`
-
-t_stddef.hÉÍCassertÌè`ªÜÜêéDassertª¸sµ½êiassertÌ
-p[^ªfalseÉÈÁ½êjÌðC^[QbgË¶ÉpÓ·éKvª
- éD±êçÌè`ÍCassert}Nðgp·éOÅ êÎCt_stddef.hÈ~
-ÉCN[h³êét@CÉÜÜêÄ¢Äàæ¢DÈ¨Cassertð³øÉ
-·éiNDEBUGð}Nè`µÄRpC·éjêÉÍC±êçðpÓ·é
-KvÍÈ¢D
+2.7 その他の設定
+
+(2-7-1) CLEAN_FILES				cleanにより削除するファイル名
+
+cleanにより削除するファイルをターゲット依存部で追加したい場合には，ファ
+イル名をこの変数に追加定義する．
+
+(2-7-2) REALCLEAN_FILES			realcleanにより削除するファイル名
+
+realcleanにより削除するファイルをターゲット依存部で追加したい場合には，
+ファイル名をこの変数に追加定義する．
+
+
+3. TOPPERS共通定義のターゲット依存部
+
+TOPPERS共通定義（t_stddef.h）のターゲット依存部は，target_stddef.hまた
+はそこからインクルードされるファイル（プロセッサ・チップ・開発環境依存
+部で用意されるヘッダファイルなど）に含める．
+
+3.1 ターゲット識別マクロ
+
+アプリケーションやシステムサービスでターゲットを識別するために，
+"TOPPERS_"にシステム略称を大文字にした文字列を連結したもの（例えば，
+"TOPPERS_DVE68K"）をマクロ定義する．
+
+また，ターゲット依存部からプロセッサ依存部やチップ依存部を切り分けた場
+合には，"TOPPERS_"に依存部略称を大文字にした文字列を連結したもの（例え
+ば，"TOPPERS_M68K"）をマクロ定義する．
+
+3.2 整数型の最大値・最小値・ビット数
+
+(3-2-1) INT_MAX				intに格納できる最大値（C90準拠）
+(3-2-2) INT_MIN				intに格納できる最小値（C90準拠）
+(3-2-3) UINT_MAX			unsigned intに格納できる最大値（C90準拠）
+(3-2-4) LONG_MAX			longに格納できる最大値（C90準拠）
+(3-2-5) LONG_MIN			longに格納できる最小値（C90準拠）
+(3-2-6) ULONG_MAX			unsigned longに格納できる最大値（C90準拠）
+(3-2-7) CHAR_BIT			char型のビット数（C90準拠）
+
+整数型の最大値・最小値・ビット数を，これらのシンボルにマクロに定義する．
+
+これらのマクロは，C90に準拠したものである．開発環境にC90に準拠した
+limits.hが用意されている場合には，これらのマクロを定義することに代えて，
+limits.hをインクルードすればよい．
+
+3.3 サイズの指定された整数型，その最大値・最小値，整数定数を作るマクロ
+
+(3-3-1) int8_t				符号付き8ビット整数（オプション，C99準拠）
+(3-3-2) uint8_t				符号無し8ビット整数（オプション，C99準拠）
+(3-3-3) int16_t				符号付き16ビット整数（C99準拠）
+(3-3-4) uint16_t			符号無し16ビット整数（C99準拠）
+(3-3-5) int32_t				符号付き32ビット整数（C99準拠）
+(3-3-6) uint32_t			符号無し32ビット整数（C99準拠）
+(3-3-7) int64_t				符号付き64ビット整数（オプション，C99準拠）
+(3-3-8) uint64_t			符号無し64ビット整数（オプション，C99準拠）
+(3-3-9) int128_t			符号付き128ビット整数（オプション，C99準拠）
+(3-3-10) uint128_t			符号無し128ビット整数（オプション，C99準拠）
+(3-3-11) int_least8_t		8ビット以上の符号付き整数（C99準拠）
+(3-3-12) uint_least8_t		8ビット以上の符号無し整数（C99準拠）
+(3-3-13) intptr_t			ポインタを格納できるサイズの符号付き整数（C99準拠）
+(3-3-14) uintptr_t			ポインタを格納できるサイズの符号無し整数（C99準拠）
+(3-3-15) INT8_MAX			int8_tに格納できる最大値（オプション，C99準拠）
+(3-3-16) INT8_MIN			int8_tに格納できる最小値（オプション，C99準拠）
+(3-3-17) UINT8_MAX			uint8_tに格納できる最大値（オプション，C99準拠）
+(3-3-18) INT16_MAX			int16_tに格納できる最大値（C99準拠）
+(3-3-19) INT16_MIN			int16_tに格納できる最小値（C99準拠）
+(3-3-20) UINT16_MAX			uint16_tに格納できる最大値（C99準拠）
+(3-3-21) INT32_MAX			int32_tに格納できる最大値（C99準拠）
+(3-3-22) INT32_MIN			int32_tに格納できる最小値（C99準拠）
+(3-3-23) UINT32_MAX			uint32_tに格納できる最大値（C99準拠）
+(3-3-24) INT64_MAX			int64_tに格納できる最大値（オプション，C99準拠）
+(3-3-25) INT64_MIN			int64_tに格納できる最小値（オプション，C99準拠）
+(3-3-26) UINT64_MAX			uint64_tに格納できる最大値（オプション，C99準拠）
+(3-3-27) INT128_MAX			int128_tに格納できる最大値（オプション，C99準拠）
+(3-3-28) INT128_MIN			int128_tに格納できる最小値（オプション，C99準拠）
+(3-3-29) UINT128_MAX		uint128_tに格納できる最大値（オプション，C99準拠）
+(3-3-30) INT_LEAST8_MAX		int_least8_tに格納できる最大値（C99準拠）
+(3-3-31) INT_LEAST8_MIN		int_least8_tに格納できる最小値（C99準拠）
+(3-3-32) UINT_LEAST8_MAX	uint_least8_tに格納できる最大値（C99準拠）
+(3-3-33) INT8_C(val)		int_least8_t型の定数を作るマクロ（C99準拠）
+(3-3-34) UINT8_C(val)		uint_least8_t型の定数を作るマクロ（C99準拠）
+(3-3-35) INT16_C(val)		int16_t型の定数を作るマクロ（C99準拠）
+(3-3-36) UINT16_C(val)		uint16_t型の定数を作るマクロ（C99準拠）
+(3-3-37) INT32_C(val)		int32_t型の定数を作るマクロ（C99準拠）
+(3-3-38) UINT32_C(val)		uint32_t型の定数を作るマクロ（C99準拠）
+(3-3-39) INT64_C(val)		int64_t型の定数を作るマクロ（オプション，C99準拠）
+(3-3-40) UINT64_C(val)		uint64_t型の定数を作るマクロ（オプション，C99準拠）
+(3-3-41) INT128_C(val)		int128_t型の定数を作るマクロ（オプション，C99準拠）
+(3-3-42) UINT128_C(val)		uint128_t型の定数を作るマクロ（オプション，C99準拠）
+
+指定されたサイズの整数型を，これらのシンボルに型定義する．また，データ
+型に格納できる最大値・最小値と，整数定数を作るマクロを，これらのシンボ
+ルにマクロ定義する．
+
+これらのデータ型およびマクロは，C99に準拠したものである．開発環境にC99
+に準拠したstdint.hが用意されている場合には，これらのデータ型およびマク
+ロを定義することに代えて，stdint.hをインクルードすればよい．
+
+上でオプションと記述したものは，該当するデータ型がコンパイラでサポート
+されている場合にのみ定義することを示す．
+
+3.4 サイズの指定された浮動小数点型，その最大値・最小値のマクロ
+
+(3-4-1) float32_t			IEEE754準拠の32ビット単精度浮動小数点数（オプ
+							ション）
+(3-4-2) double64_t			IEEE754準拠の64ビット倍精度浮動小数点数（オプ
+							ション）
+(3-4-3) FLOAT32_MIN			float32_tに格納できる最小の正規化された正の浮
+							動小数点数（オプション）
+(3-4-4) FLOAT32_MAX			float32_tに格納できる表現可能な最大の有限浮動
+							小数点数（オプション）
+(3-4-5) DOUBLE64_MIN		double64_tに格納できる最小の正規化された正の浮
+							動小数点数（オプション）
+(3-4-6) DOUBLE64_MAX		double64_tに格納できる表現可能な最大の有限浮動
+							小数点数（オプション）
+
+指定されたサイズ・表現形式の浮動小数点型を，これらのシンボルに型定義す
+る．また，データ型に格納できる最大値・最小値を，これらのシンボルにマク
+ロ定義する．
+
+いずれも，該当するデータ型がコンパイラでサポートされている場合にのみ定
+義する．
+
+3.5 コンパイラの拡張機能のためのマクロ定義
+
+コンパイラの拡張機能を用いるためのマクロとして，必要に応じて，以下のマ
+クロの定義を含める．
+
+(3-5-1) inline（オプション，デフォルトは未定義）
+(3-5-2) Inline（オプション，デフォルトはstatic inline）
+
+インライン関数であることを示す指定．Inlineは，コンパイル単位にローカル
+なインライン関数であることを示す．
+
+(3-5-3) asm（オプション，デフォルトは未定義）
+(3-5-4) Asm（オプション，デフォルトは未定義）
+
+インラインアセンブラを記述するための指定．Asmは，最適化により削除しては
+ならないことを示す．これらは，ターゲット依存部でのみ使うマクロであるた
+め，ターゲット依存部で使わないなら定義する必要はない．
+
+(3-5-5) offsetof(structure, field)（オプション，デフォルトの定義あり）
+
+構造体structureの中での，フィールドfieldのオフセットを求めるマクロ．
+
+(3-5-6) alignof(type)（オプション，デフォルトの定義あり）
+
+データ型typeのアラインメント単位を求めるマクロ．
+
+(3-5-7) NoReturn（オプション，デフォルトは未定義）
+
+リターンすることのない関数であることを示す指定．これは，ターゲット依存
+部のみ使うマクロであるため，ターゲット依存部で使わないなら定義する必要
+はない．
+
+3.6 標準的な定義の上書き
+
+t_stddef.hに含まれるTOPPERS共通定義の標準的な定義を上書きする場合には，
+以下のマクロを定義する．
+
+(3-6-1) TOPPERS_bool（オプション，デフォルトはint）
+(3-6-2) TOPPERS_size（オプション，デフォルトはuintptr_t）
+(3-6-3) TOPPERS_fp（オプション，デフォルトは他と互換性のない関数ポインタ）
+
+それぞれ，bool_t，SIZE，FPに型定義すべきデータ型．
+
+(3-6-4) UINT_C(val)（オプション，デフォルトはUを付加）
+(3-6-5) ULONG_C(val)（オプション，デフォルトはULを付加）
+
+それぞれ，unsigned uint型，unsigned long型の定数を作るためのマクロ．
+
+(3-6-6) NULL（オプション，デフォルトは0）
+
+C90準拠のC言語環境では，NULLの定義はstddef.hに含まれているため，これを
+インクルードしてもよい．
+
+(3-6-7) ERCD(mercd, sercd)（オプション）
+(3-6-8) MERCD(ercd)（オプション）
+(3-6-9) SERCD(ercd)（オプション）
+
+ERCD，MERCD，SERCDの標準の定義は，符号付き整数が2の補数で表現されており，
+右シフト演算子（>>）が算術シフトされることを仮定している．多くのコンパ
+イラでこの仮定が成り立つが，そうでない場合には，ターゲット依存部でこれ
+らの定義を上書きする必要がある．
+
+(3-6-10) ALIGN_TYPE(addr, type)（オプション）
+
+アドレスaddrが，データ型typeのアラインメント単位にアラインしているか
+チェックするマクロ．
+
+3.7 アサーションのための定義
+
+t_stddef.hには，assertの定義が含まれる．assertが失敗した場合（assertの
+パラメータがfalseになった場合）の処理を，ターゲット依存に用意する必要が
+ある．これらの定義は，assertマクロを使用する前であれば，t_stddef.h以降
+にインクルードされるファイルに含まれていてもよい．なお，assertを無効に
+する（NDEBUGをマクロ定義してコンパイルする）場合には，これらを用意する
+必要はない．
 
 (3-7-1) TOPPERS_assert_abort(void)
 
-assertª¸sµ½êÉCvOðâ~³¹éÖDVXeJ­Íf
-obKÉÆ·ÌªzIÅ éDVXeÒ­ÉÍáOðsí¹é±
-ÆÉÈéD
-
-{Öð³À[vÅÀ·éÛÍCÈºÌ`®Æ·é±Æ(TECSÌp[TÌ
-§ÀÉí¹é½ßjD
+assertが失敗した場合に，プログラムを停止させる関数．システム開発中はデ
+バッガに落とすのが理想的である．システム稼働時には例外処理を行わせるこ
+とになる．
+
+本関数を無限ループで実装する際は，以下の形式とすること(TECSのパーサの
+制限に合わせるため）．
 
 Inline void
@@ -859,111 +819,109 @@
 (3-7-2) TOPPERS_assert_fail(exp, file, line)
 
-assertª¸sµ½Ìîñð\¦/L^·é½ßÌ}NDVXeO@\ð
-p¢éêÉÍCt_syslog.hÉVXeO@\ÉL^·é½ßÌè`ªÜÜ
-êÄ¢éÌÅC^[QbgË¶ÅpÓ·éKvÍÈ¢D
-
-
-4. VXeC^tF[XCiSILjÌ^[QbgË¶
-
-VXeC^tF[XCiSILCsil.hjÌ^[QbgË¶Ìè`ÍC
-target_sil.hÜ½Í»±©çCN[h³êét@CivZbTE`b
-vEJ­Â«Ë¶ÅpÓ³êéwb_t@CÈÇjÉÜßéD
-
-SILÌT[rXR[ÍCCÓÌVXeóÔÅÄÑo·±ÆªÅ«éD»Ì½
-ßCSILÌ^[QbgË¶ÌÖÍCCÓÌVXeóÔÅÄÑo¹éæ¤É
-ÀµÈ¯êÎÈçÈ¢D
-
-4.1 SÝbNóÔÌÇ
-
-SILÌ^[QbgË¶ÅÍCSÝbNóÔÖJÚ·é@\ÆC³ÌóÔ
-Öß·@\i³ÌóÔðL¯·é½ßÉÏðg¤jðñ·éDSÝb
-NóÔÅ é©ð»Ê·é@\Íñ·éKvªÈ¢D
-
-SILÌ@\ÍCJ[lðgpµÈ¢êÉàgpÅ«éKvª éD»Ì½ßC
-SÝbNóÔÖÌJÚÆ³ÌóÔÖÌAÍCJ[lðp¢¸Cv
-ZbTÌ\[Xð¼Úì·é±ÆÉæÁÄÀ»·éDÜ½CSÝb
-NóÔÖÌJÚÆ³ÌóÔÖÌAÍCSÝbNóÔâCPUbNóÔÅ
-às¦éKvª éD
-
-Ûì@\ðÁ½J[lÅÍC[U^XN©çvZbTÌ\[Xð¼
-Úì·é±ÆªÅ«È¢½ßC[U^XN©çÍ±êçÌ@\ðp¢é±
-ÆªÅ«È¢Dp¢½êÌU¢Í^[QbgvZbTÉË¶·éªCT
-^IÉÍCÁ ½ßá½ÈÇÌCPUáOª­¶·é±ÆÉÈéD
+assertが失敗した時の情報を表示/記録するためのマクロ．システムログ機能を
+用いる場合には，t_syslog.hにシステムログ機能に記録するための定義が含ま
+れているので，ターゲット依存部で用意する必要はない．
+
+
+4. システムインタフェースレイヤ（SIL）のターゲット依存部
+
+システムインタフェースレイヤ（SIL，sil.h）のターゲット依存部の定義は，
+target_sil.hまたはそこからインクルードされるファイル（プロセッサ・チッ
+プ・開発環境依存部で用意されるヘッダファイルなど）に含める．
+
+SILのサービスコールは，任意のシステム状態で呼び出すことができる．そのた
+め，SILのターゲット依存部の関数は，任意のシステム状態で呼び出せるように
+実装しなければならない．
+
+4.1 全割込みロック状態の管理
+
+SILのターゲット依存部では，全割込みロック状態へ遷移する機能と，元の状態
+へ戻す機能（元の状態を記憶するために変数を使う）を提供する．全割込みロッ
+ク状態であるかを判別する機能は提供する必要がない．
+
+SILの機能は，カーネルを使用しない場合にも使用できる必要がある．そのため，
+全割込みロック状態への遷移と元の状態への復帰は，カーネルを用いず，プロ
+セッサのリソースを直接操作することによって実現する．また，全割込みロッ
+ク状態への遷移と元の状態への復帰は，全割込みロック状態やCPUロック状態で
+も行える必要がある．
+
+保護機能を持ったカーネルでは，ユーザタスクからプロセッサのリソースを直
+接操作することができないため，ユーザタスクからはこれらの機能を用いるこ
+とができない．用いた場合の振舞いはターゲットプロセッサに依存するが，典
+型的には，特権命令違反などのCPU例外が発生することになる．
 
 (4-1-1) SIL_PRE_LOC
 
-SÝbNtOÌóÔðÛ¶·é½ßÌÏðè`·é}ND^¼Ì
-ãÉCÏ¼ð±¯½àÌÉè`·éDÏ¼ÍC¼Ì¼OÆÕËµÈ¢æ¤
-ÉC"TOPPERS_"ÅnÜé¼OÉ·éD
+全割込みロックフラグの状態を保存するための変数を定義するマクロ．型名の
+後に，変数名を続けたものに定義する．変数名は，他の名前と衝突しないよう
+に，"TOPPERS_"で始まる名前にする．
 
 (4-1-2) SIL_LOC_INT()
 
-»ÝÌSÝbNtOÌóÔðSIL_PRE_LOCÅè`µ½ÏÉÛ¶µCS
-ÝbNóÔÉJÚ³¹é}ND±Ì}NðÀ»·éÛÉÍCu1.6
-NeBJZNVÌoüÌÀ»ÉÖ·é§ñvÌßÉLq³êÄ¢
-é§ñÉ]íÈ¯êÎÈçÈ¢D
+現在の全割込みロックフラグの状態をSIL_PRE_LOCで定義した変数に保存し，全
+割込みロック状態に遷移させるマクロ．このマクロを実現する際には，「1.6
+クリティカルセクションの出入処理の実現に関する制約」の節に記述されてい
+る制約に従わなければならない．
 
 (4-1-3) SIL_UNL_INT()
 
-SIL_LOC_INT()ÉæÁÄÏÉÛ¶µ½óÔÉß·}ND±Ì}NðÀ»·
-éÛÉÍCu1.6 NeBJZNVÌoüÌÀ»ÉÖ·é§ñvÌ
-ßÉLq³êÄ¢é§ñÉ]íÈ¯êÎÈçÈ¢D
-
-4.2 ÷­ÔÒ¿
+SIL_LOC_INT()によって変数に保存した状態に戻すマクロ．このマクロを実現す
+る際には，「1.6 クリティカルセクションの出入処理の実現に関する制約」の
+節に記述されている制約に従わなければならない．
+
+4.2 微少時間待ち
 
 (4-2-1) void sil_dly_nse(ulong_t dlytim)
 
-dlytimÅwè³ê½ÈãÌÔiPÊÍimbjC[vÈÇÉæÁÄÒÂÖ
-D
-
-ÈºÌÖÆ¿ÈðCAZu¾êÅLq·éû@ðCWIÈÀ
-û@Æ·éDAZu¾êÅLq·éÌÍCRpCÌÅK»ÉË¶µÈ
-¢æ¤É·é½ßÅ éDÜ½±ÌÖÍCLbV
-Ìe¿ðó¯È¢æ
-¤ÉCÅ«éÀèANZXðsíÈ¢æ¤ÉÀ·×«Å éD
+dlytimで指定された以上の時間（単位はナノ秒），ループなどによって待つ関
+数．
+
+以下の関数と等価な処理を，アセンブリ言語で記述する方法を，標準的な実装
+方法とする．アセンブリ言語で記述するのは，コンパイラの最適化に依存しな
+いようにするためである．またこの関数は，キャッシュ等の影響を受けないよ
+うに，できる限りメモリアクセスを行わないように実装すべきである．
 
 	void sil_dly_nse(ulong_t dlytim)
 	{
 		dlytim -= SIL_DLY_TIM1;
-		if (Êª0æèå«¢) {
+		if (結果が0より大きい) {
 			do {
 				dlytim -= SIL_DLY_TIM2;
-			} while (Êª0æèå«¢);
+			} while (結果が0より大きい);
 		}
 	}
 
-±ÌÖÌ®ìÍÌÊèÅ éDdlytimªSIL_DLY_TIM1ÈºÌêÉÍCÅ
-Ìif¶Ìðª¬§¹¸C·®ÉÖ©ç²¯éDdlytimªSIL_DLY_TIM1æ
-èå«­C(SIL_DLY_TIM1+SIL_DLY_TIM2)ÈºÌêÉÍCÅÌif¶ÌðÍ
-¬§·éªCdo[vÍ1ñàñç¸ÉÖ©ç²¯éDdlytimª
-(SIL_DLY_TIM1+SIL_DLY_TIM2)æèå«­C(SIL_DLY_TIM1+SIL_DLY_TIM2*2)È
-ºÌêÉÍCdo[vð1ñ¾¯ñÁÄÖ©ç²¯éD»ÌãCdlytimª
-SIL_DLY_TIM2å«­ÈéxÉCwhile[vðñéñª1ñ¸Â¦éD
-
-È¨C±ÌÖðAZu¾êiÜ½ÍCC¾êjÅLq·éêCÇÌt@
-CÉLq·é©ªâèÉÈéDSILÌ^[QbgË¶ÉÍCWÅÍCAZ
-u¾êiÜ½ÍCC¾êjÌÖè`ðLq·é½ßÌt@CðpÓµÄ
-¢È¢D^[QbgË¶ÅpÓµÄàæ¢ªCáOIÉCJ[lÀÌ^[
-QbgË¶W
-[itarget_support.SÜ½Ítarget_config.cjÉLqµÄ
-àæ¢±ÆÉ·éD
-
-(4-2-2) SIL_DLY_TIM1iIvVj
-(4-2-3) SIL_DLY_TIM2iIvVj
-
-sil_dly_nseðãLÌWIÈû@ÅÀ»µ½êC±Ì2ÂÌèð^[Qb
-gË¶Å}Nè`·éD
-
-SIL_DLY_TIM2ÍCãLÌÖÉ¨¢ÄCdo[v1ñÌÀsÔiPÊÍimbj
-ÉÝè·éD^[QbgvZbTÌ½ßZbgÉàæéªC¨¨æ»C¸Z
-½ßÆðªò½ße1ñÌÀsÔÉÈéDSIL_DLY_TIM2ªÜêÎCÖÄ
-oµàÜß½SÌÌÔªdlytimÅwè³ê½ÈãÌÔÉÈéæ¤ÉC
-SIL_DLY_TIM1ðßéD
-
-¦ºLÌàeÍC»_ÅSSPJ[lÅÍ¢T|[gÅ éD
-
-±Ì2ÂÌèlÌèðx·évOÆµÄCtestfBNgÉC
-test_dlynseðpÓµÄ¢éDtest_dlynseðÀs·éÆCÌæ¤ÈoÍª¾
-çêéD
+この関数の動作は次の通りである．dlytimがSIL_DLY_TIM1以下の場合には，最
+初のif文の条件が成立せず，すぐに関数から抜ける．dlytimがSIL_DLY_TIM1よ
+り大きく，(SIL_DLY_TIM1+SIL_DLY_TIM2)以下の場合には，最初のif文の条件は
+成立するが，doループは1回も回らずに関数から抜ける．dlytimが
+(SIL_DLY_TIM1+SIL_DLY_TIM2)より大きく，(SIL_DLY_TIM1+SIL_DLY_TIM2*2)以
+下の場合には，doループを1回だけ回って関数から抜ける．その後，dlytimが
+SIL_DLY_TIM2大きくなる度に，whileループを回る回数が1回ずつ増える．
+
+なお，この関数をアセンブリ言語（または，C言語）で記述する場合，どのファ
+イルに記述するかが問題になる．SILのターゲット依存部には，標準では，アセ
+ンブリ言語（または，C言語）の関数定義を記述するためのファイルを用意して
+いない．ターゲット依存で用意してもよいが，例外的に，カーネル実装のター
+ゲット依存モジュール（target_support.Sまたはtarget_config.c）に記述して
+もよいことにする．
+
+(4-2-2) SIL_DLY_TIM1（オプション）
+(4-2-3) SIL_DLY_TIM2（オプション）
+
+sil_dly_nseを上記の標準的な方法で実現した場合，この2つの定数をターゲッ
+ト依存部でマクロ定義する．
+
+SIL_DLY_TIM2は，上記の関数において，doループ1回の実行時間（単位はナノ秒）
+に設定する．ターゲットプロセッサの命令セットにもよるが，おおよそ，減算
+命令と条件分岐命令各1回の実行時間になる．SIL_DLY_TIM2が決まれば，関数呼
+出しも含めた全体の時間がdlytimで指定された以上の時間になるように，
+SIL_DLY_TIM1を決める．
+
+※下記の内容は，現時点でSSPカーネルでは未サポートである．
+
+この2つの定数値の決定を支援するプログラムとして，testディレクトリに，
+test_dlynseを用意している．test_dlynseを実行すると，次のような出力が得
+られる．
 
 -- for fitting parameters --
@@ -972,5 +930,5 @@
 sil_dly_nse(510): 520 OK
 sil_dly_nse(600): 610 OK
-<ª>
+<中略>
 -- for checking boundary conditions --
 sil_dly_nse(421): 520 OK
@@ -978,32 +936,32 @@
 sil_dly_nse(601): 700 OK
 
-"for fitting parameters"É±­oÍÍCsil_dly_nse(dlytim)ðÄÑoµ½ê
-ÌÒ¿Ôðªèµ½ÊÅ éD±ÌvOðp¢ÄC":"ÌE¤Ì
-lªCdlytimæèàå«¢ÍÍÅÈé×­ß¢lÉÈéæ¤ÉC2ÂÌèlð
-²®·éD"for checking boundary conditions"É±­oÍÍCvOÌ
-Ã«ð`FbN·é½ßÌàÌÅC":"ÌE¤ÌlªCdlytimæèàå«¢
-±ÆðmF·éiß¢lÉÈéKvÍÈ¢jD
-
-4.3 vZbTÌGfBA
+"for fitting parameters"に続く出力は，sil_dly_nse(dlytim)を呼び出した場
+合の待ち時間を測定した結果である．このプログラムを用いて，":"の右側の数
+値が，dlytimよりも大きい範囲でなるべく近い値になるように，2つの定数値を
+調整する．"for checking boundary conditions"に続く出力は，プログラムの
+妥当性をチェックするためのもので，":"の右側の数値が，dlytimよりも大きい
+ことを確認する（近い値になる必要はない）．
+
+4.3 プロセッサのエンディアン
 
 (4-3-1) SIL_ENDIAN_BIG
 (4-3-2) SIL_ENDIAN_LITTLE
 
-vZbTÌGfBAÉæèC¢¸ê©ÐûÌV{ð}Nè`·éD
-
-(4-3-3) TOPPERS_SIL_REV_ENDIAN_UINT16iIvVj
-(4-3-4) TOPPERS_SIL_REV_ENDIAN_UINT32iIvVj
-
-»ê¼êC16rbgC32rbgÌ³µ®ÌGfBAð½]³¹é}
-NDvZbTªGfBA½]Ì½ßÌ½ßðÂêÉÍC»Ì½ß
-ðp¢ÄÀ»·éD±êçÌV{ð}Nè`µÈ¢êÉÍCftH
-gÌè`ªgíêéD
-
-4.4 óÔANZXÖ
+プロセッサのエンディアンにより，いずれか片方のシンボルをマクロ定義する．
+
+(4-3-3) TOPPERS_SIL_REV_ENDIAN_UINT16（オプション）
+(4-3-4) TOPPERS_SIL_REV_ENDIAN_UINT32（オプション）
+
+それぞれ，16ビット，32ビットの符号無し整数のエンディアンを反転させるマ
+クロ．プロセッサがエンディアン反転のための命令を持つ場合には，その命令
+を用いて実現する．これらのシンボルをマクロ定義しない場合には，デフォル
+トの定義が使われる．
+
+4.4 メモリ空間アクセス関数
 
 (4-4-1) TOPPERS_OMIT_SIL_ACCESS
 
-WÌóÔANZXÖðgp¹¸C^[QbgË¶ÅpÓ·éê
-ÉÍC±ÌV{ð}Nè`·éD
+標準のメモリ空間アクセス関数を使用せず，ターゲット依存部で用意する場合
+には，このシンボルをマクロ定義する．
 
 (4-4-2) TOPPERS_OMIT_SIL_REH_LEM
@@ -1016,167 +974,159 @@
 (4-4-9) TOPPERS_OMIT_SIL_WRW_BEM
 
-»ê¼êCWÌsil_reh_lemCsil_wrh_lemCsil_reh_bemCsil_wrh_bemC
-sil_rew_lemCsil_wrw_lemCsil_rew_bemCsil_wrw_bemðgp¹¸C^[Qb
-gË¶ÅpÓ·éêÉÍC±êçÌV{ð}Nè`·éD
-
-4.5 I/OóÔANZXÖ
-
-óÔÆÍÊÉI/OóÔðÂvZbTÅÍCI/OóÔÉ éfoCX
-WX^ðANZX·é½ßÌÖÆµÄCsil_reb_iopCsil_wrb_iopC
-sil_reh_iopCsil_wrh_iopCsil_reh_lepCsil_wrh_lepCsil_reh_bepC
-sil_wrh_bepCsil_rew_iopCsil_wrw_iopCsil_rew_lepCsil_wrw_lepC
-sil_rew_bepCsil_wrw_bepÌÅKvÈàÌðC^[QbgË¶ÅpÓ·éD
-
-
-5. J[lAPIÌ^[QbgË¶
-
-J[lAPIikernel.hjÌ^[QbgË¶Ìè`ÍCtarget_kernel.hÜ½
-Í»±©çCN[h³êét@CivZbTE`bvEJ­Â«Ë¶
-ÅpÓ³êéwb_t@CÈÇjÉÜßéD
-
-5.1 ^[Qbgè`ÅT|[g·é@\
-
-(5-1-1) TOPPERS_TARGET_SUPPORT_DIS_INT		dis_intðT|[g·é
-(5-1-2) TOPPERS_TARGET_SUPPORT_ENA_INT		ena_intðT|[g·é
-
-dis_intCena_intCT|[g·éêÉC»ê¼êÌV{ð}N
-è`·éD
-
-5.2 ÝDæxÌÍÍ
-
-(5-2-1) TMIN_INTPRI				ÝDæxÌÅ¬liÅlj
-(5-2-2) TMAX_INTPRI				ÝDæxÌÅåliÅálj
-
-»ê¼êCJ[lÇÌÝDæxÌÅ¬liDæxªÅjCJ[l
-ÇÌÝDæxÌÅåliDæxªÅájÉè`·éDTMAX_INTPRIÍ-1
-ÉÅè³êÄ¢éªCÎÌ«Ì½ßÉC^[QbgË¶Åè`·é±ÆÉµ
-Ä¢éD
-
-5.3 ^CeBbNÌè`
-
-(5-3-1) TIC_NUME				^CeBbNÌüúÌªq
-(5-3-2) TIC_DENO				^CeBbNÌüúÌªê
-
-^CeBbNÌüúisignal_timeðÄÑo·üújðC~bPÊÅC
-TIC_NUME/TIC_DENOÉè`·éDá¦ÎC^CeBbNÌüúª1/30bÌê
-ÉÍCTIC_NUMEð100ÉCTIC_DENOð3Éè`·êÎæ¢D
-
-^CeBbNÌüúÍC1~bÆ·éiÂÜèCTIC_NUMECTIC_DENOÆà1
-Éè`·éj±Æð§·éªCV~
-[VÂ«â«\Ìá¢vZb
-TÅ»êªKØÅÈ¢êÉÍC»êÈOÌlÆµÄàæ¢D»ÌêÅàC
-Â\ÈÀèC1~bÌ{Å éiÂÜèCTIC_DENOð1Éè`·éj±Æª
-]Üµ¢D
-
-TIC_NUMEÆTIC_DENOÌè`ðÏX·é±ÆÅC^CeBbNÌüúðÏXÅ
-«éæ¤É^C}hCoðÀ·éêÉÍC±Ì2ÂÌèÌè`ÍftH
-glð^¦Ä¢é±ÆÉÈéD»±ÅC±êçÌè`ðu#ifndef TIC_NUMEv
-u#endifvÅÍñÅLq·éD
-
-5.4 ÌæmÛÌ½ßÌ^è`
-
-(5-4-1) TOPPERS_STK_T	X^bNÌæðmÛ·é½ßÌ^iIvVj
-
-X^bNÌæÍCWÅÍCintptr_t^ÌzñÆµÄmÛ·éªCæèå«¢PÊÅ
-AC³¹½¢ÈÇÌRÅC»êÈOÌ^ÌzñÆµÄmÛ·éêÉÍC
-»ê¼êTOPPERS_STK_TÆðCzñÌx[XÆÈéf[^^É}Nè`·éD
-
-5.5 ÌæmÛÌ½ßÌ}N
-
-(5-5-1) TOPPERS_ROUND_SZiIvVj
-(5-5-2) TOPPERS_COUNT_SZiIvVj
-
-TOPPERS_COUNT_SZ(sz, unit)ÍCsz/unitðØèã°½lðßé}NÅCT
-CYªszÌÌæðTCYªunitÌf[^^ÌzñÅmÛ·éêÌvf
-ðßé½ßÉp¢éDTOPPERS_ROUND_SZ(sz, unit)ÍCsz/unitðØèã°
-½àÌÉunitð©¯½lðßé}NÅCTCYªszÌÌæðTCY
-ªunitÌf[^^ÌzñÅmÛ·éêÌg[^TCYðßé½ßÉp¢
-éD
-
-»ê¼êCWÌTOPPERS_ROUND_SZCTOPPERS_COUNT_SZªKØÅÈ­C^[Qb
-gË¶ÅpÓ·éêÉÍC±êçÌV{ðKØÈlÉ}Nè`·éD
-
-6. J[lÀÌ^[QbgË¶
-
-6.1 J[lÀÌ^[QbgË¶Ì¤Ê
-
-6.1.1 J[lÀÌ^[QbgË¶Ì\¬vf
-
-J[lÀÌ^[QbgË¶ÍCÈºÌvfÅ\¬³êéD
-
-(a) J[lÀÌ^[QbgË¶Ìè`
-
-J[lÀÌ^[QbgñË¶©çQÆ³êé^[QbgË¶Ìè`ÍC
-target_config.hÜ½Í»±©çCN[h³êét@CivZbTE`b
-vEJ­Â«Ë¶ÅpÓ³êéwb_t@CÈÇjÉÜßéD
-
-^[QbgÌn[hEFA¹iÝnhÔâCPUáOnhÔC
-foCXWX^ÌÔnÈÇjÌè`ÍCVXeT[rXâAvP[V
-ÉàLpÅ é½ßCJ[lÀÌÝÉLpÈè`ðÜÞt@CÆÍØ
-èª¯ÄCÆ§µ½wb_t@CÉÜßéD±Ìwb_t@CÌWIÈ
-¼ÌðCVXeªÌ.hiÜ½ÍC`bvªÌ.hCvZbTªÌ.hjÆ·éD
-
-(b) J[lÀÌ^[QbgË¶W
-[
-
-J[lÀÌ^[QbgË¶ÌÏè`âÖðÜÞW
-[DC¾êÅL
-q³êéªðtarget_config.cCAZu¾êÅLq³êéªð
-target_support.SÉÜßéDvZbTE`bvEJ­Â«Ë¶ðØèª¯
-é±ÆâCt@Cªå«­ÈéêÉ¡Ìt@CÉª·é±ÆàÂ\
-Å éD
-
-(c) J[lÀÌ^[QbgË¶Ì½ßÌl[Lq
-
-J[lÀÌ^[QbgË¶ÌÏ¼âÖ¼ðCæªÉ_kernel_ðt^
-µ½¼OÉl[·é½ßÌW
-[Dtarget_rename.defðpÓµCc[
-iutils/genrenamejÉæèCtarget_rename.hÆtarget_unrename.hð¶¬·
-éDvZbTE`bvEJ­Â«Ë¶ðØèª¯éêÉÍCl[L
-qàØèª¯éD
-
-¦
-(d) ^C}hCo
-
-J[lÉ^CeBbNðÊm·éisignal_timeðüúIÉÄÑo·j½ß
-Ì^C}hCoÌwb_t@CCÀt@CCVXeRtBM
-[
-Vt@CðC»ê¼êCtarget_timer.hCtarget_timer.cC
-target_timer.cfgÉÜßéDvZbTE`bvEJ­Â«Ë¶ðØèª¯
-é±ÆàÂ\Å éD
-
-(e) RtBM
-[^Ýèt@C
-
-RtBM
-[^ÌÝèt@CÌ^[QbgË¶ðCtarget_def.csvC
-target.tfCtarget_check.tfÉpÓ·éDRtBM
-[^Ýèt@CÌ
-Lqû@ÉÂ¢ÄÍCVÍÅà¾·éD
-
-6.1.2 ^[QbgË¶ÌÖÌ½¼K¥
-
-J[lÀÌ^[QbgË¶ð\¬·éÖÌÅCt_ÅnÜéàÌÍ^
-XNReLXgêpCi_ÅnÜéàÌÍñ^XNReLXgêpCx_Ån
-ÜéàÌÍ¢¸êÌReLXg©çÅàÄÑo·±ÆªÅ«éÖÅ éD
-
-6.2 g[XO@\ÖÌÎ
-
-J[lÌg[XO@\ÌÅCÝnhCCPUáOnhÌJn
-EI¹Ìg[XOæ¾ÍC^[QbgË¶ÅÀ·éKvª éDÙÆñ
-ÇÌ^[QbgVXeÉ¨¢ÄC»êçÌÍAZu¾êÅLq³êÄ
-¨èC^[QbgñË¶ü¯Ìg[XO}NÆ¯¶û@ig[XO
-}NðCg[XOæ¾ÌC¾êLqÉ}Nè`·éû@jÍCp¢
-é±ÆªÅ«È¢D
-
-»±ÅCAZu¾êÅLq³êÄ¢éÉg[XOæ¾ðß
-ÞêÉÍCg[XO}Nªè`³êÄ¢êÎC»êª½Éè`³êÄ
-¢é©Í³µÄCWIÈg[XOÖªC¾êÅLq³êÄ¢éÆzè
-µÄC»êðÄÑo·æ¤ÉR[fBO·éD
-
-ïÌIÉÍCºÌ\Ì¶¤É¦µ½g[XO}Nªè`³êÄ¢êÎC
-\ÌE¤É¦µ½C¾êLqÆ¯Ìðs¤æ¤ÉR[fBO·éD
-
-	g[XO}N		g[XOæ¾
+それぞれ，標準のsil_reh_lem，sil_wrh_lem，sil_reh_bem，sil_wrh_bem，
+sil_rew_lem，sil_wrw_lem，sil_rew_bem，sil_wrw_bemを使用せず，ターゲッ
+ト依存部で用意する場合には，これらのシンボルをマクロ定義する．
+
+4.5 I/O空間アクセス関数
+
+メモリ空間とは別にI/O空間を持つプロセッサでは，I/O空間にあるデバイスレ
+ジスタをアクセスするための関数として，sil_reb_iop，sil_wrb_iop，
+sil_reh_iop，sil_wrh_iop，sil_reh_lep，sil_wrh_lep，sil_reh_bep，
+sil_wrh_bep，sil_rew_iop，sil_wrw_iop，sil_rew_lep，sil_wrw_lep，
+sil_rew_bep，sil_wrw_bepの中で必要なものを，ターゲット依存部で用意する．
+
+
+5. カーネルAPIのターゲット依存部
+
+カーネルAPI（kernel.h）のターゲット依存部の定義は，target_kernel.hまた
+はそこからインクルードされるファイル（プロセッサ・チップ・開発環境依存
+部で用意されるヘッダファイルなど）に含める．
+
+5.1 ターゲット定義でサポートする機能
+
+(5-1-1) TOPPERS_TARGET_SUPPORT_DIS_INT		dis_intをサポートする
+(5-1-2) TOPPERS_TARGET_SUPPORT_ENA_INT		ena_intをサポートする
+
+dis_int，ena_int，サポートする場合に，それぞれのシンボルをマク
+ロ定義する．
+
+5.2 割込み優先度の範囲
+
+(5-2-1) TMIN_INTPRI				割込み優先度の最小値（最高値）
+(5-2-2) TMAX_INTPRI				割込み優先度の最大値（最低値）
+
+それぞれ，カーネル管理の割込み優先度の最小値（＝優先度が最高），カーネ
+ル管理の割込み優先度の最大値（優先度が最低）に定義する．TMAX_INTPRIは-1
+に固定されているが，対称性のために，ターゲット依存部で定義することにし
+ている．
+
+5.3 タイムティックの定義
+
+(5-3-1) TIC_NUME				タイムティックの周期の分子
+(5-3-2) TIC_DENO				タイムティックの周期の分母
+
+タイムティックの周期（signal_timeを呼び出す周期）を，ミリ秒単位で，
+TIC_NUME/TIC_DENOに定義する．例えば，タイムティックの周期が1/30秒の場合
+には，TIC_NUMEを100に，TIC_DENOを3に定義すればよい．
+
+タイムティックの周期は，1ミリ秒とする（つまり，TIC_NUME，TIC_DENOとも1
+に定義する）ことを推奨するが，シミュレーション環境や性能の低いプロセッ
+サでそれが適切でない場合には，それ以外の値としてもよい．その場合でも，
+可能な限り，1ミリ秒の倍数である（つまり，TIC_DENOを1に定義する）ことが
+望ましい．
+
+TIC_NUMEとTIC_DENOの定義を変更することで，タイムティックの周期を変更で
+きるようにタイマドライバを実装する場合には，この2つの定数の定義はデフォ
+ルト値を与えていることになる．そこで，これらの定義を「#ifndef TIC_NUME」
+「#endif」で囲んで記述する．
+
+5.4 メモリ領域確保のための型定義
+
+(5-4-1) TOPPERS_STK_T	スタック領域を確保するための型（オプション）
+
+スタック領域は，標準では，intptr_t型の配列として確保するが，より大きい単位で
+アラインさせたいなどの理由で，それ以外の型の配列として確保する場合には，
+それぞれTOPPERS_STK_Tとを，配列のベースとなるデータ型にマクロ定義する．
+
+5.5 メモリ領域確保のためのマクロ
+
+(5-5-1) TOPPERS_ROUND_SZ（オプション）
+(5-5-2) TOPPERS_COUNT_SZ（オプション）
+
+TOPPERS_COUNT_SZ(sz, unit)は，sz/unitを切り上げた値を求めるマクロで，サ
+イズがszのメモリ領域をサイズがunitのデータ型の配列で確保する場合の要素
+数を求めるために用いる．TOPPERS_ROUND_SZ(sz, unit)は，sz/unitを切り上げ
+たものにunitをかけた値を求めるマクロで，サイズがszのメモリ領域をサイズ
+がunitのデータ型の配列で確保する場合のトータルサイズを求めるために用い
+る．
+
+それぞれ，標準のTOPPERS_ROUND_SZ，TOPPERS_COUNT_SZが適切でなく，ターゲッ
+ト依存部で用意する場合には，これらのシンボルを適切な値にマクロ定義する．
+
+6. カーネル実装のターゲット依存部
+
+6.1 カーネル実装のターゲット依存部の共通事項
+
+6.1.1 カーネル実装のターゲット依存部の構成要素
+
+カーネル実装のターゲット依存部は，以下の要素で構成される．
+
+(a) カーネル実装のターゲット依存の定義
+
+カーネル実装のターゲット非依存部から参照されるターゲット依存の定義は，
+target_config.hまたはそこからインクルードされるファイル（プロセッサ・チッ
+プ・開発環境依存部で用意されるヘッダファイルなど）に含める．
+
+ターゲットのハードウェア資源（割込みハンドラ番号やCPU例外ハンドラ番号，
+デバイスレジスタの番地など）の定義は，システムサービスやアプリケーショ
+ンにも有用であるため，カーネル実装のみに有用な定義を含むファイルとは切
+り分けて，独立したヘッダファイルに含める．このヘッダファイルの標準的な
+名称を，システム略称.h（または，チップ略称.h，プロセッサ略称.h）とする．
+
+(b) カーネル実装のターゲット依存モジュール
+
+カーネル実装のターゲット依存の変数定義や関数を含むモジュール．C言語で記
+述される部分をtarget_config.c，アセンブリ言語で記述される部分を
+target_support.Sに含める．プロセッサ・チップ・開発環境依存部を切り分け
+ることや，ファイルが大きくなる場合に複数のファイルに分割することも可能
+である．
+
+(c) カーネル実装のターゲット依存部のためのリネーム記述
+
+カーネル実装のターゲット依存部の変数名や関数名を，先頭に_kernel_を付与
+した名前にリネームするためのモジュール．target_rename.defを用意し，ツー
+ル（utils/genrename）により，target_rename.hとtarget_unrename.hを生成す
+る．プロセッサ・チップ・開発環境依存部を切り分ける場合には，リネーム記
+述も切り分ける．
+
+※
+(d) タイマドライバ
+
+カーネルにタイムティックを通知する（signal_timeを周期的に呼び出す）ため
+のタイマドライバのヘッダファイル，実装ファイル，システムコンフィギュレー
+ションファイルを，それぞれ，target_timer.h，target_timer.c，
+target_timer.cfgに含める．プロセッサ・チップ・開発環境依存部を切り分け
+ることも可能である．
+
+(e) コンフィギュレータ設定ファイル
+
+コンフィギュレータの設定ファイルのターゲット依存部を，target_def.csv，
+target.tf，target_check.tfに用意する．コンフィギュレータ設定ファイルの
+記述方法については，７章で説明する．
+
+6.1.2 ターゲット依存部の関数の命名規則
+
+カーネル実装のターゲット依存部を構成する関数の中で，t_で始まるものはタ
+スクコンテキスト専用，i_で始まるものは非タスクコンテキスト専用，x_で始
+まるものはいずれのコンテキストからでも呼び出すことができる関数である．
+
+6.2 トレースログ機能への対応
+
+カーネルのトレースログ機能の中で，割込みハンドラ，CPU例外ハンドラの開始
+・終了のトレースログ取得は，ターゲット依存部で実装する必要がある．ほとん
+どのターゲットシステムにおいて，それらの処理はアセンブリ言語で記述されて
+おり，ターゲット非依存部向けのトレースログマクロと同じ方法（トレースログ
+マクロを，トレースログ取得処理のC言語記述にマクロ定義する方法）は，用い
+ることができない．
+
+そこで，アセンブリ言語で記述されている処理中にトレースログ取得を埋め込
+む場合には，トレースログマクロが定義されていれば，それが何に定義されて
+いるかは無視して，標準的なトレースログ関数がC言語で記述されていると想定
+して，それを呼び出すようにコーディングする．
+
+具体的には，下の表の左側に示したトレースログマクロが定義されていれば，
+表の右側に示したC言語記述と同等の処理を行うようにコーディングする．
+
+	トレースログマクロ		トレースログ取得処理
 	-----------------------------------------------
 	LOG_INH_ENTER			log_inh_enter(inhno)
@@ -1185,48 +1135,48 @@
 	LOG_EXC_LEAVE			log_exc_leave(excno)
 
-6.3 VXeóÔÌÇ
-
-SSPJ[lðV½È^[QbgVXeÉ|[eBO·éÛÉCÅàdvÈ
-ìÆÍCJ[lªè`·éVXeóÔðCn[hEFAivZbTjã
-ÅÇÌæ¤ÉÀ»·é©Å éDÈºÌà¾ÍCTOPPERSV¢ãJ[lÉ¨¯
-éVXeóÔÌè`EÓ¡ðmÁÄ¢é±ÆðOñÉLqµÄ¢éD
-
-6.3.1 SÝbNóÔÌÇ
-
-SÝbNóÔÍCNMIð­·×ÄÌÝð}XNµ½óÔÅ éDS
-ÝbNóÔðÇ·é@\ÍCVXeC^tF[XCiSILjÉ
-æÁÄñ³êCJ[lÍSÝbNóÔðÇµÈ¢D
-
-SÝbNóÔÅÍCsns_kerÆext_kerÈOÌJ[lÌT[rXR[
-ðÄÔ±ÆÍÅ«È¢àÌÆµÄ¨èCÄñ¾êÉÍ½ªN±é©ÛØµÄ
-¢È¢Dsns_kerÆext_ker©çÄÑo·ÍCg[XOæ¾ÆSILÌ
-T[rXR[ð­ÆCcall_exit_kernelÌÝÅ éD»Ì½ßC
-call_exit_kernel©çÄÑo·àÌð¢ÄCJ[lÌ^[QbgË¶Ì
-ÖªCSÝbNóÔÅÄÑo³êéóµÍl¦éKvªÈ¢D
-
-6.3.2 ReLXgÌÇ
-
-PÊªÀs³êéReLXgÍC^XNReLXgÆñ^XNRe
-LXgÉªÞ³êéD
-
-^[QbgË¶ÍCÀsÌPÊªC^XNReLXgÅÀs³êÄ
-¢é©ñ^XNReLXgÅÀs³êÄ¢é©ð»Ê·é@\ðñ·éD
-Ü½CCPUáOª­¶µ½ReLXgÉÂ¢Ä»Ê·é@\ðñ·éD
-
-^[QbgË¶ÅÍCÝnhÆCPUáOnhÌüûÅñ^X
-NReLXgÉØè·¦C»êçÌoûÅ³ÌReLXgÉß·DÜ
-½CfBXpb`ÌàÅêIÉñ^XNReLXgÉØè·¦éD
+6.3 システム状態の管理
+
+SSPカーネルを新たなターゲットシステムにポーティングする際に，最も重要な
+作業は，カーネルが定義するシステム状態を，ハードウェア（プロセッサ）上
+でどのように実現するかである．以下の説明は，TOPPERS新世代カーネルにおけ
+るシステム状態の定義・意味を知っていることを前提に記述している．
+
+6.3.1 全割込みロック状態の管理
+
+全割込みロック状態は，NMIを除くすべての割込みをマスクした状態である．全
+割込みロック状態を管理する機能は，システムインタフェースレイヤ（SIL）に
+よって提供され，カーネルは全割込みロック状態を管理しない．
+
+全割込みロック状態では，sns_kerとext_ker以外のカーネルのサービスコール
+を呼ぶことはできないものとしており，呼んだ場合には何が起こるか保証して
+いない．sns_kerとext_kerから呼び出す処理は，トレースログ取得処理とSILの
+サービスコールを除くと，call_exit_kernelのみである．そのため，
+call_exit_kernelから呼び出すものを除いて，カーネルのターゲット依存部の
+関数が，全割込みロック状態で呼び出される状況は考える必要がない．
+
+6.3.2 コンテキストの管理
+
+処理単位が実行されるコンテキストは，タスクコンテキストと非タスクコンテ
+キストに分類される．
+
+ターゲット依存部は，実行中の処理単位が，タスクコンテキストで実行されて
+いるか非タスクコンテキストで実行されているかを判別する機能を提供する．
+また，CPU例外が発生したコンテキストについて判別する機能を提供する．
+
+ターゲット依存部では，割込みハンドラとCPU例外ハンドラの入口処理で非タス
+クコンテキストに切り換え，それらの出口処理で元のコンテキストに戻す．ま
+た，ディスパッチャの内部で一時的に非タスクコンテキストに切り換える．
 
 (6-3-2-1) bool_t sense_context(void)
 
-ÀsÌPÊªC^XNReLXgÅÀs³êÄ¢éêÉÍfalseCñ
-^XNReLXgÅÀs³êÄ¢éêÉÍtrueðÔ·ÖD±ÌÖÍC
-CPUbNóÔÅàCPUbNðóÔÅàÄÑo¹éæ¤ÉÀµÈ¯êÎÈ
-çÈ¢D
-
-6.3.3 CPUbNóÔÌÇ
-
-^[QbgË¶ÍCCPUbNóÔÖJÚ·é@\CCPUbNðóÔÖJ
-Ú·é@\CCPUbNóÔÅ é©ð»Ê·é@\ðñ·éD
+実行中の処理単位が，タスクコンテキストで実行されている場合にはfalse，非
+タスクコンテキストで実行されている場合にはtrueを返す関数．この関数は，
+CPUロック状態でもCPUロック解除状態でも呼び出せるように実装しなければな
+らない．
+
+6.3.3 CPUロック状態の管理
+
+ターゲット依存部は，CPUロック状態へ遷移する機能，CPUロック解除状態へ遷
+移する機能，CPUロック状態であるかを判別する機能を提供する．
 
 (6-3-3-1) void t_lock_cpu(void)
@@ -1234,10 +1184,10 @@
 (6-3-3-3) void x_lock_cpu(void)
 
-CPUbNðóÔ©çCCPUbNóÔÖJÚ³¹éÖD±êçÌÖÍC
-CPUbNóÔÅÄÑo³êé±ÆÍÈ­CÄÑo³ê½êÌ®ìÍÛØ·é
-KvªÈ¢D
-
-±êçÌÖðÀ»·éÛÉÍCu1.6 NeBJZNVÌoüÌ
-À»ÉÖ·é§ñvÌßÉLq³êÄ¢é§ñÉ]íÈ¯êÎÈçÈ¢D
+CPUロック解除状態から，CPUロック状態へ遷移させる関数．これらの関数は，
+CPUロック状態で呼び出されることはなく，呼び出された場合の動作は保証する
+必要がない．
+
+これらの関数を実現する際には，「1.6 クリティカルセクションの出入処理の
+実現に関する制約」の節に記述されている制約に従わなければならない．
 
 (6-3-3-4) void t_unlock_cpu(void)
@@ -1245,23 +1195,23 @@
 (6-3-3-6) void x_unlock_cpu(void)
 
-CPUbNóÔ©çCCPUbNðóÔÖJÚ³¹éÖD±êçÌÖÍC
-CPUbNðóÔÅÄÑo³êé±ÆÍÈ­CÄÑo³ê½êÌ®ìÍÛØ
-·éKvªÈ¢D
-
-^XNReLXgÅCPUbNóÔÉJÚµ½êÉÍCCPUbNðóÔ
-ÉßéÌÍ^XNReLXgÉÀçêCñ^XNReLXgÅCPUbNð
-óÔÉßé±ÆÍÈ¢D¾¢·¦éÆCt_unlock_cpuªÄÑo³êéÌÍC
-t_lock_cpuÉæÁÄCPUbNóÔÉÈÁÄ¢éÅ éDi_lock_cpuÉæÁÄ
-CPUbNóÔÉÈÁÄ¢éÉÍCt_unlock_cpuªÄÑo³êé±ÆÍÈ¢D
-
-¯lÉCñ^XNReLXgÅCPUbNóÔÉJÚµ½êÉÍCCPUb
-NðóÔÉßéÌÍñ^XNReLXgÉÀçêC^XNReLXgÅ
-CPUbNðóÔÉßé±ÆÍÈ¢D¾¢·¦éÆCi_unlock_cpuªÄÑo³
-êéÌÍCi_lock_cpuÉæÁÄCPUbNóÔÉÈÁÄ¢éÅ éD
-t_lock_cpuÉæÁÄCPUbNóÔÉÈÁÄ¢éÉÍCi_unlock_cpuªÄÑo
-³êé±ÆÍÈ¢D
-
-±êçÌÖðÀ»·éÛÉÍCu1.6 NeBJZNVÌoüÌ
-À»ÉÖ·é§ñvÌßÉLq³êÄ¢é§ñÉ]íÈ¯êÎÈçÈ¢D
+CPUロック状態から，CPUロック解除状態へ遷移させる関数．これらの関数は，
+CPUロック解除状態で呼び出されることはなく，呼び出された場合の動作は保証
+する必要がない．
+
+タスクコンテキストでCPUロック状態に遷移した場合には，CPUロック解除状態
+に戻るのはタスクコンテキストに限られ，非タスクコンテキストでCPUロック解
+除状態に戻ることはない．言い換えると，t_unlock_cpuが呼び出されるのは，
+t_lock_cpuによってCPUロック状態になっている時である．i_lock_cpuによって
+CPUロック状態になっている時には，t_unlock_cpuが呼び出されることはない．
+
+同様に，非タスクコンテキストでCPUロック状態に遷移した場合には，CPUロッ
+ク解除状態に戻るのは非タスクコンテキストに限られ，タスクコンテキストで
+CPUロック解除状態に戻ることはない．言い換えると，i_unlock_cpuが呼び出さ
+れるのは，i_lock_cpuによってCPUロック状態になっている時である．
+t_lock_cpuによってCPUロック状態になっている時には，i_unlock_cpuが呼び出
+されることはない．
+
+これらの関数を実現する際には，「1.6 クリティカルセクションの出入処理の
+実現に関する制約」の節に記述されている制約に従わなければならない．
 
 (6-3-3-7) bool_t t_sense_lock(void)
@@ -1269,18 +1219,18 @@
 (6-3-3-9) bool_t x_sense_lock(void)
 
-»ÝÌVXeóÔªCCPUbNóÔÌêÍtrueCCPUbNðóÔÌê
-ÉÍfalseðÔ·ÖD
-
-±êçÌÖªSÝbNóÔÅÄÑo³êéóµÍl¦éKvªÈ¢±
-Æ©çCSÝbNóÔÆCPUbNóÔðæÊÅ«éKvÍÈ¢DNMIÈ
-OÉJ[lÌÇOÌÝðÝ¯È¢êÉÍCSÝbNóÔÆ
-CPUbNóÔªS­¯êÌóÔÅà©ÜíÈ¢D
-
-6.4 ÝÉÖA·éVXeóÔÌÇ
-
-6.4.1 ÝDæx}XNÌÇ
-
-^[QbgË¶ÍCÝDæx}XNðÝè·é@\ÆCÝDæx}
-XNðQÆ·é@\ðñ·éD
+現在のシステム状態が，CPUロック状態の場合はtrue，CPUロック解除状態の場
+合にはfalseを返す関数．
+
+これらの関数が全割込みロック状態で呼び出される状況は考える必要がないこ
+とから，全割込みロック状態とCPUロック状態を区別できる必要はない．NMI以
+外にカーネルの管理外の割込みを設けない場合には，全割込みロック状態と
+CPUロック状態が全く同一の状態でもかまわない．
+
+6.4 割込みに関連するシステム状態の管理
+
+6.4.1 割込み優先度マスクの管理
+
+ターゲット依存部は，割込み優先度マスクを設定する機能と，割込み優先度マ
+スクを参照する機能を提供する．
 
 (6-4-1-1) void x_set_ipm(PRI intpri)
@@ -1288,15 +1238,15 @@
 (6-4-1-3) void i_set_ipm(PRI intpri)
 
-ÝDæx}XNÌlðintpriÉÝè·éÖD
-
-±êçÌÖÍCCPUbNóÔÅàCPUbNðóÔÅàÄÑo¹éæ¤É
-À·éÌª]Üµ¢D½¾µCx_set_ipmÆt_set_ipmÍC^[QbgñË¶
-ªCPUbNðóÔÅÄÑo·±ÆÍÈ¢½ßCCPUbNðóÔÅÄÑ
-o³ê½êÌ®ìÍÛØ·éKvªÈ¢Di_set_ipmÍCCPUbNóÔÅà
-CPUbNðóÔÅàÄÑo¹éæ¤ÉÀµÈ¯êÎÈçÈ¢D
-
-Ü½C±êçÌÖÍCVALID_INTPRI_CHGIPM(intpri)ªtrueðÔ·intpriÉÎ
-µÄÌÝÄÎêéDintpriÉ»¤ÅÈ¢lªn³ê½êÌ®ìÍÛØ·éK
-vªÈ¢D
+割込み優先度マスクの値をintpriに設定する関数．
+
+これらの関数は，CPUロック状態でもCPUロック解除状態でも呼び出せるように
+実装するのが望ましい．ただし，x_set_ipmとt_set_ipmは，ターゲット非依存
+部がCPUロック解除状態で呼び出すことはないため，CPUロック解除状態で呼び
+出された場合の動作は保証する必要がない．i_set_ipmは，CPUロック状態でも
+CPUロック解除状態でも呼び出せるように実装しなければならない．
+
+また，これらの関数は，VALID_INTPRI_CHGIPM(intpri)がtrueを返すintpriに対
+してのみ呼ばれる．intpriにそうでない値が渡された場合の動作は保証する必
+要がない．
 
 (6-4-1-4) PRI x_get_ipm(void)
@@ -1304,31 +1254,31 @@
 (6-4-1-6) PRI i_get_ipm(void)
 
-ÝDæx}XNÌlðQÆµÄÔ·ÖD
-
-±êçÌÖÍCCPUbNóÔÅàCPUbNðóÔÅàÄÑo¹éæ¤É
-À·éÌª]Üµ¢D½¾µCx_get_ipmÆt_get_ipmÍC^[QbgñË¶
-ªCPUbNðóÔÅÄÑo·±ÆÍÈ¢½ßCCPUbNðóÔÅÄÑ
-o³ê½êÌ®ìÍÛØ·éKvªÈ¢Di_get_ipmÍCCPUbNóÔÅà
-CPUbNðóÔÅàÄÑo¹éæ¤ÉÀµÈ¯êÎÈçÈ¢D
-
-ÝDæx}XNðp¢ÄJ[lÇÌÝð·×Ä}XNµ½óÔÍC
-CPUbNóÔÆæÊÅ«é±ÆªKvÅ éDïÌIÉÍCCPUbNðó
-ÔÉ¨¢ÄCx_set_ipmðp¢ÄJ[lÇÌÝð·×Ä}XNµ½ê
-ÅàCx_sense_lockÍfalseðÔ·D
-
-»êÉÎµÄCÝDæx}XNðp¢ÄNMIð­·×ÄÌÝð}XN
-Å«éêC»ÌóÔÆSÝbNóÔðæÊÅ«éKvÍÈ­CS­¯
-êÌóÔÅà©ÜíÈ¢D
-
-6.4.2 ÝvÖ~tOÌÇ
-
-^[QbgË¶ÍCÝvÖ~tOðZbg·é@\ÆNA·é@
-\ðñ·éD
+割込み優先度マスクの値を参照して返す関数．
+
+これらの関数は，CPUロック状態でもCPUロック解除状態でも呼び出せるように
+実装するのが望ましい．ただし，x_get_ipmとt_get_ipmは，ターゲット非依存
+部がCPUロック解除状態で呼び出すことはないため，CPUロック解除状態で呼び
+出された場合の動作は保証する必要がない．i_get_ipmは，CPUロック状態でも
+CPUロック解除状態でも呼び出せるように実装しなければならない．
+
+割込み優先度マスクを用いてカーネル管理の割込みをすべてマスクした状態は，
+CPUロック状態と区別できることが必要である．具体的には，CPUロック解除状
+態において，x_set_ipmを用いてカーネル管理の割込みをすべてマスクした場合
+でも，x_sense_lockはfalseを返す．
+
+それに対して，割込み優先度マスクを用いてNMIを除くすべての割込みをマスク
+できる場合，その状態と全割込みロック状態を区別できる必要はなく，全く同
+一の状態でもかまわない．
+
+6.4.2 割込み要求禁止フラグの管理
+
+ターゲット依存部は，割込み要求禁止フラグをセットする機能とクリアする機
+能を提供する．
 
 (6-4-2-1) bool_t VALID_INTNO_DISINT(INTNO intno)
 
-intnoªCdis_int^ena_intÉÎ·éÝÔÆµÄLøÈlÅ éêÉ
-trueC»¤ÅÈ¢êÉfalseðÔ·}NDÝvÖ~tOªZbg^
-NAÅ«È¢intnoÉÎµÄÍC±Ì}NªfalseðÔ·æ¤É·éD
+intnoが，dis_int／ena_intに対する割込み番号として有効な値である場合に
+true，そうでない場合にfalseを返すマクロ．割込み要求禁止フラグがセット／
+クリアできないintnoに対しては，このマクロがfalseを返すようにする．
 
 (6-4-2-2) bool_t x_disable_int(INTNO intno)
@@ -1336,19 +1286,19 @@
 (6-4-2-4) bool_t i_disable_int(INTNO intno)
 
-intnoÅwè³ê½ÝvCÉÎ·éÝvÖ~tOðZbgµC
-trueðÔ·ÖDwè³ê½ÝvCÉÎµÄCÝ®«ªÝè³
-êÄ¢È¢êÉÍCfalseðÔ·D
-
-±êçÌÖÍC^[QbgñË¶ªCPUbNðóÔÅÄÑo·±ÆÍÈ
-¢½ßCCPUbNðóÔÅÄÑo³ê½êÌ®ìÍÛØ·éKvªÈ¢D
-½¾µC^[QbgË¶©çCPUbNðóÔÅÄÑo·êÉÍCÛØ·
-éKvª éD
-
-Ü½C±êçÌÖÍCVALID_INTNO_DISINT(intno)ªtrueÆÈéintnoÉÎµ
-ÄÌÝÄÎêéDintnoÉ»¤ÅÈ¢lªn³ê½êÌ®ìÍÛØ·éKvª
-È¢D
-
-dis_intT[rXR[ðT|[g·éêiTOPPERS_SUPPORT_DIS_INTð}N
-è`·éêjÉÍCt_disable_intªpÓ³êÄ¢È¯êÎÈçÈ¢D
+intnoで指定された割込み要求ラインに対する割込み要求禁止フラグをセットし，
+trueを返す関数．指定された割込み要求ラインに対して，割込み属性が設定さ
+れていない場合には，falseを返す．
+
+これらの関数は，ターゲット非依存部がCPUロック解除状態で呼び出すことはな
+いため，CPUロック解除状態で呼び出された場合の動作は保証する必要がない．
+ただし，ターゲット依存部からCPUロック解除状態で呼び出す場合には，保証す
+る必要がある．
+
+また，これらの関数は，VALID_INTNO_DISINT(intno)がtrueとなるintnoに対し
+てのみ呼ばれる．intnoにそうでない値が渡された場合の動作は保証する必要が
+ない．
+
+dis_intサービスコールをサポートする場合（TOPPERS_SUPPORT_DIS_INTをマク
+ロ定義する場合）には，t_disable_intが用意されていなければならない．
 
 (6-4-2-5) bool_t x_enable_int(INTNO intno)
@@ -1356,21 +1306,21 @@
 (6-4-2-7) bool_t i_enable_int(INTNO intno)
 
-intnoÅwè³ê½ÝvCÉÎ·éÝvÖ~tOðNAµC
-trueðÔ·ÖDwè³ê½ÝvCÉÎµÄCÝ®«ªÝè³
-êÄ¢È¢êÉÍCfalseðÔ·D
-
-±êçÌÖÍC^[QbgñË¶ªCPUbNðóÔÅÄÑo·±ÆÍÈ
-¢½ßCCPUbNðóÔÅÄÑo³ê½êÌ®ìÍÛØ·éKvªÈ¢D
-½¾µC^[QbgË¶©çCPUbNðóÔÅÄÑo·êÉÍCÛØ·
-éKvª éD
-
-Ü½C±êçÌÖÍCVALID_INTNO_DISINT(intno)ªtrueÆÈéintnoÉÎµ
-ÄÌÝÄÎêéDintnoÉ»¤ÅÈ¢lªn³ê½êÌ®ìÍÛØ·éKvª
-È¢D
-
-ena_intT[rXR[ðT|[g·éêiTOPPERS_SUPPORT_ENA_INTð}N
-è`·éêjÉÍCt_enable_intªpÓ³êÄ¢È¯êÎÈçÈ¢D
-
-6.4.3 ÝvÌNA
+intnoで指定された割込み要求ラインに対する割込み要求禁止フラグをクリアし，
+trueを返す関数．指定された割込み要求ラインに対して，割込み属性が設定さ
+れていない場合には，falseを返す．
+
+これらの関数は，ターゲット非依存部がCPUロック解除状態で呼び出すことはな
+いため，CPUロック解除状態で呼び出された場合の動作は保証する必要がない．
+ただし，ターゲット依存部からCPUロック解除状態で呼び出す場合には，保証す
+る必要がある．
+
+また，これらの関数は，VALID_INTNO_DISINT(intno)がtrueとなるintnoに対し
+てのみ呼ばれる．intnoにそうでない値が渡された場合の動作は保証する必要が
+ない．
+
+ena_intサービスコールをサポートする場合（TOPPERS_SUPPORT_ENA_INTをマク
+ロ定義する場合）には，t_enable_intが用意されていなければならない．
+
+6.4.3 割込み要求のクリア
 
 (6-4-3-1) void x_clear_int(INTNO intno)
@@ -1378,14 +1328,14 @@
 (6-4-3-3) void i_clear_int(INTNO intno)
 
-intnoÅwè³ê½ÝvCªGbWgKÅ éêÉCgK³ê
-½ÝvðNA·éÖDintnoÅwè³ê½ÝvCªx
-gKÅ éêÉÍ½àµÈ¢D
-
-SSPJ[lÌ^[QbgñË¶ÅÍC±êçÌÖðÄÑoµÄ¢È¢ªC
-^[QbgË¶âVXeT[rXÅÄÑo·Â\«ª¢½ßCpÓ·é
-±ÆÆµÄ¢éD»Ì½ßC±êçÌÖªÇÌæ¤ÈVXeóÔÅÄÑo
-¹é©ÍC^[QbgË¶àÅêÑµÄ¢êÎæ¢D
-
-6.4.4 ÝvÌv[u
+intnoで指定された割込み要求ラインがエッジトリガである場合に，トリガされ
+た割込み要求をクリアする関数．intnoで指定された割込み要求ラインがレベル
+トリガである場合には何もしない．
+
+SSPカーネルのターゲット非依存部では，これらの関数を呼び出していないが，
+ターゲット依存部やシステムサービスで呼び出す可能性が高いため，用意する
+こととしている．そのため，これらの関数がどのようなシステム状態で呼び出
+せるかは，ターゲット依存部内で一貫していればよい．
+
+6.4.4 割込み要求のプローブ
 
 (6-4-4-1) bool_t x_probe_int(INTNO intno)
@@ -1393,54 +1343,54 @@
 (6-4-4-3) bool_t i_probe_int(INTNO intno)
 
-intnoÅwè³ê½ÝvCÉÎµÄCÝªv³êÄ¢éêÉ
-trueC»¤ÅÈ¢êÉfalseðÔ·ÖD
-
-SSPJ[lÌ^[QbgñË¶ÅÍC±êçÌÖðÄÑoµÄ¢È¢ªC
-^[QbgË¶âVXeT[rXÅÄÑo·Â\«ª¢½ßCpÓ·é
-±ÆÆµÄ¢éD»Ì½ßC±êçÌÖªÇÌæ¤ÈVXeóÔÅÄÑo
-¹é©ÍC^[QbgË¶àÅêÑµÄ¢êÎæ¢D
-
-6.4.5 ÝnhÌæªÆö
+intnoで指定された割込み要求ラインに対して，割込みが要求されている場合に
+true，そうでない場合にfalseを返す関数．
+
+SSPカーネルのターゲット非依存部では，これらの関数を呼び出していないが，
+ターゲット依存部やシステムサービスで呼び出す可能性が高いため，用意する
+こととしている．そのため，これらの関数がどのようなシステム状態で呼び出
+せるかは，ターゲット依存部内で一貫していればよい．
+
+6.4.5 割込みハンドラの先頭処理と末尾処理
 
 (6-4-5-1) void i_begin_int(INTNO intno)
 
-intnoÅwè³ê½ÝvCÉÎ·éÝnhÌæªÅs¤×«
-ðs¤ÖD±±Ås¤×«ÆµÄÍCÝvCªGbWg
-KÅ éêÌgK³ê½ÝvÌNAª°çêéD
-
-intnoÉÎµÄo^³ê½ÝT[rX[`ðÄÑo·ÝnhÌ
-æªÅÄÑo³êéD»Ì½ß±ÌÖÍCÝnhÌæªiÊíÍ
-CPUbNðóÔjÅÄÑo¹éæ¤ÉÀµÈ¯êÎÈçÈ¢D
+intnoで指定された割込み要求ラインに対する割込みハンドラの先頭で行うべき
+処理を行う関数．ここで行うべき処理としては，割込み要求ラインがエッジト
+リガである場合のトリガされた割込み要求のクリアが挙げられる．
+
+intnoに対して登録された割込みサービスルーチンを呼び出す割込みハンドラの
+先頭で呼び出される．そのためこの関数は，割込みハンドラの先頭（通常は
+CPUロック解除状態）で呼び出せるように実装しなければならない．
 
 (6-4-5-2) void i_end_int(INTNO intno)
 
-intnoÅwè³ê½ÝvCÉÎ·éÝnhÌöÅs¤×«
-ðs¤ÖD±±Ås¤×«ÆµÄÍCÝRg[iIRCjÉ
-Î·éÝÌI¹ðÊmª°çêéD
-
-intnoÉÎµÄo^³ê½ÝT[rX[`ðÄÑo·ÝnhÌ
-öÅÄÑo³êéD»Ì½ß±ÌÖÍCÝnhÌöiÊíÍ
-CPUbNðóÔjÅÄÑo¹éæ¤ÉÀµÈ¯êÎÈçÈ¢D
-
-6.5 ^XNfBXpb`
-
-
-6.5.1 fBXpb`Ì®ìJn
+intnoで指定された割込み要求ラインに対する割込みハンドラの末尾で行うべき
+処理を行う関数．ここで行うべき処理としては，割込みコントローラ（IRC）に
+対する割込み処理の終了を通知が挙げられる．
+
+intnoに対して登録された割込みサービスルーチンを呼び出す割込みハンドラの
+末尾で呼び出される．そのためこの関数は，割込みハンドラの末尾（通常は
+CPUロック解除状態）で呼び出せるように実装しなければならない．
+
+6.5 タスクディスパッチャ
+
+
+6.5.1 ディスパッチャの動作開始
 
 (6-5-1-1) void start_dispatch(void)
 
-fBXpb`Ì®ìJnistart_dispatchjÍCJ[lN®ÉCJ[l
-Ìú»©çÄÑo³êéDstart_dispatchÍC^[·é±ÆÌÈ
-¢ÖÅ éD
-
-start_dispatchÍCñ^XNReLXgÅCNMIð­·×ÄÌÝð}X
-Nµ½óÔiSÝbNóÔÆ¯ÌóÔjÅÄÑo³êéDstart_dispatch
-àÅC^XNReLXgÉØè·¦CCPUbNóÔEÝDæx}XNS
-ðóÔÉµÈ¯êÎÈçÈ¢D
-
-ReLXgðØèÖ¦½ãÍ^[QbgñË¶ÖdispatcherðÄÑo·D
-
-start_dispatchÌàeÍÌÊèDdispatcher©çªÔé±ÆÍlÊ·éKvÍ
-È¢D
+ディスパッチャの動作開始（start_dispatch）は，カーネル起動時に，カーネ
+ルの初期化処理から呼び出される．start_dispatchは，リターンすることのな
+い関数である．
+
+start_dispatchは，非タスクコンテキストで，NMIを除くすべての割込みをマス
+クした状態（全割込みロック状態と同等の状態）で呼び出される．start_dispatch
+内で，タスクコンテキストに切り換え，CPUロック状態・割込み優先度マスク全
+解除状態にしなければならない．
+
+コンテキストを切り替えた後はターゲット非依存部関数dispatcherを呼び出す．
+
+start_dispatchの処理内容は次の通り．dispatcherから処理が返ることは考量する必要は
+ない．
 
 ----------------------------------------
@@ -1448,105 +1398,105 @@
 start_dispatch(void)
 {
-	^XNReLXgÉØè·¦é
-	CPUbNóÔEÝDæx}XNSðóÔÉ·é
-	dispatcherÉªò·é
+	タスクコンテキストに切り換える
+	CPUロック状態・割込み優先度マスク全解除状態にする
+	dispatcherに分岐する
 }
 ----------------------------------------
 
-6.6 Ýnh
-
-6.6.1 ÝnhÌoüû
-
-J[lÇÌÝÌoüûÌû@ÍCvZbTÉæÁÄå«­ÙÈ
-éªC¨¨æ»ÌàeÍÌÊèD
+6.6 割込みハンドラ
+
+6.6.1 割込みハンドラの出入口処理
+
+カーネル管理の割込みの出入口処理の方法は，プロセッサによって大きく異な
+るが，おおよその処理内容は次の通り．
 
 ----------------------------------------
 void
-<ÝÌoüû>(void)
+<割込みの出入口処理>(void)
 {
-	­È­ÆàJ[lÇÌÝðÖ~µ½óÔÉ·é c (*f)
-	XNb`WX^ðX^bNÉÛ¶·é
-	if (^XNReLXgÅÝ­¶) {
-		ñ^XNReLXgÉØè·¦é
+	少なくともカーネル管理の割込みを禁止した状態にする … (*f)
+	スクラッチレジスタをスタックに保存する
+	if (タスクコンテキストで割込み発生) {
+		非タスクコンテキストに切り換える
 	}
 
-	±ÌÝæèàDæxÌ¢ÝÌÝðó¯t¯çêéæ¤ÉµÄC
-												CPUbNðóÔÉ·é
+	この割込みよりも優先度の高い割込みのみを受け付けられるようにして，
+												CPUロック解除状態にする
 #ifdef LOG_INH_ENTER
-	log_inh_enter(ÝnhÔ);
+	log_inh_enter(割込みハンドラ番号);
 #endif /* LOG_INH_ENTER */
-	ÝnhðÄÑo·
+	割込みハンドラを呼び出す
 #ifdef LOG_INH_LEAVE
-	log_inh_leave(ÝnhÔ);
+	log_inh_leave(割込みハンドラ番号);
 #endif /* LOG_INH_LEAVE */
 
   ret_int:
-	if (^XNReLXgÅÝ­¶) {
-		i­È­ÆàjJ[lÇÌÝðÖ~µ½óÔÉ·é c (*d)
+	if (タスクコンテキストで割込み発生) {
+		（少なくとも）カーネル管理の割込みを禁止した状態にする … (*d)
 		if (reqflg) {
 			reqflg = false;
-			CPUbNóÔÉ·é c (*e)
-			search_schedtskðÄÑoµCÅDæÊ^XNðßé
-			ÅDæÊÌ^XNIDðøÉµÄrun_taskÉªò·é
+			CPUロック状態にする … (*e)
+			search_schedtskを呼び出し，最高優先順位タスクを求める
+			最高優先順位のタスクIDを引数にしてrun_taskに分岐する
 		}
 	}
-	Ý©çÌ^[ãÉCCPUbNðóÔÉßéæ¤Éõ·é
-	XNb`WX^ðX^bN©çA·é
-	Ý©çÌ^[
+	割込み処理からのリターン後に，CPUロック解除状態に戻るように準備する
+	スクラッチレジスタをスタックから復帰する
+	割込み処理からのリターン
 }
 ----------------------------------------
 
-ÝÌót¯Éæè·×ÄÌÝªÖ~³êÈ¢vZbTÅÍC(*f)É
-¨¢ÄC­È­ÆàJ[lÇÌÝðÖ~·éD±ÌRÍÌÊèÅ
- éD
-
-ÝÌüûÉ¨¢ÄCX^bNðñ^XNReLXgpÌX^bNÉ
-Øè·¦éOÉ½dÝª­¶·éÆC^XNÌX^bNÌæªgp³êéD
-ãLÌæ¤ÈvZbTÅÍCX^bNÌØ·¦OÉCÅåÅÝDæxÌ
-iªÌ½dÝª­¶·é±Æðh®±ÆÍÅ«¸Ce^XNÌX^bN
-ÌæðmÛ·éÛÉC»Ìªð©ñÅmÛµÈ¯êÎÈçÈ¢De^XNÌ
-X^bNÌæðÈé×­¬³­·é½ßÉÍCX^bNðÈé×­gpµÈ¢
-àÉC½dÝðÖ~·éÌª]Üµ¢D»Ì½ßCXNb`WX^ð
-X^bNÉÛ¶·éOÉCÝðÖ~·éD½¾µCÝÌÖ~ÉK
-vÈÅáÀÌWX^ÉÂ¢ÄÍCÝÌÖ~Éæ§ÁÄX^bNÉÛ¶·
-éKvª éD
-
-¯lÌ±ÆÍCJ[lÇOÌÝÉàÄÍÜéD·Èí¿CJ[l
-ÇOÌÝÉÂ¢ÄàCX^bNðÈé×­gpµÈ¢àÉÖ~·éÌª
-]Üµ¢D±Ì±Æ©çCJ[lÇOÌÝðgp·éêÉÍC(*f)
-É¨¢ÄC·×ÄÌÝðÖ~µ½óÔÉ·éÌª]Üµ¢±ÆÉÈéDÜ
-½CJ[lÇOÌÝÉ¨¢ÄàCñ^XNReLXgpÌX^b
-NÉØè·¦é±Æª]Üµ¢ªC±êÍJ[lÌÇOÅ éD
-
-(*d)É¨¢ÄÍCJ[lÇÌÝðÖ~·é¾¯ÅCCPUbNóÔÉ·
-éKvÍÈ¢Dá¦ÎCCPUbNóÔÅ é±Æð¦·ÏðpÓµÄ¢éê
-ÉÍC(*d)Ì_ÅÍ»ÌÏðCPUbNóÔð¦·lÉÏX·éKvÍÈ
-­C(*e)É¨¢ÄÏX·êÎæ¢D
-
-ÝÌoüûðAZu¾êÅLq·éêÉÍCg[XOæ¾
-ÍCu6.2 g[XO@\ÖÌÎvÌßÅLqµ½û@ÅR[fB
-O·é±ÆD
-
-6.6.2 ÝnhÌoüûÌ¶¬
-
-ÝxNgðn[hEFAÅÀ»µÄ¢éêÈÇCÝnhÉ
-oüûðpÓµ½ûªø¦ªÇ¢^[QbgÌ½ßÉCÝnh
-Éoüûð¶¬·é@\ðpÓµÄ¢éD
-
-ÈºÌ}NÍCWÌÝÇ@\Ìú»ðp¢½êÌÝC^[
-QbgñË¶ÅgíêéDÝÇ@\Ìú»ð^[QbgË¶
-ÅpÓµC»ÌÅ±êçÌ}NðgíÈ¢êÉÍC±êçÌ}Nðp
-Ó·éKvÍÈ¢D
+割込みの受付けによりすべての割込みが禁止されないプロセッサでは，(*f)に
+おいて，少なくともカーネル管理の割込みを禁止する．この理由は次の通りで
+ある．
+
+割込みの入口処理において，スタックを非タスクコンテキスト用のスタックに
+切り換える前に多重割込みが発生すると，タスクのスタック領域が使用される．
+上記のようなプロセッサでは，スタックの切換え前に，最大で割込み優先度の
+段数分の多重割込みが発生することを防ぐことはできず，各タスクのスタック
+領域を確保する際に，その分を見込んで確保しなければならない．各タスクの
+スタック領域をなるべく小さくするためには，スタックをなるべく使用しない
+内に，多重割込みを禁止するのが望ましい．そのため，スクラッチレジスタを
+スタックに保存する前に，割込みを禁止する．ただし，割込みの禁止処理に必
+要な最低限のレジスタについては，割込みの禁止に先立ってスタックに保存す
+る必要がある．
+
+同様のことは，カーネル管理外の割込みにも当てはまる．すなわち，カーネル
+管理外の割込みについても，スタックをなるべく使用しない内に禁止するのが
+望ましい．このことから，カーネル管理外の割込みを使用する場合には，(*f)
+において，すべての割込みを禁止した状態にするのが望ましいことになる．ま
+た，カーネル管理外の割込み処理においても，非タスクコンテキスト用のスタッ
+クに切り換えることが望ましいが，これはカーネルの管轄外である．
+
+(*d)においては，カーネル管理の割込みを禁止するだけで，CPUロック状態にす
+る必要はない．例えば，CPUロック状態であることを示す変数を用意している場
+合には，(*d)の時点ではその変数をCPUロック状態を示す値に変更する必要はな
+く，(*e)において変更すればよい．
+
+割込みの出入口処理をアセンブリ言語で記述する場合には，トレースログ取得
+処理は，「6.2 トレースログ機能への対応」の節で記述した方法でコーディン
+グすること．
+
+6.6.2 割込みハンドラ毎の出入口処理の生成
+
+割込みベクトルをハードウェアで実現している場合など，割込みハンドラ毎に
+出入口処理を用意した方が効率が良いターゲットのために，割込みハンドラ毎
+に出入口処理を生成する機構を用意している．
+
+以下のマクロは，標準の割込み管理機能の初期化処理を用いた場合のみ，ター
+ゲット非依存部で使われる．割込み管理機能の初期化処理をターゲット依存部
+で用意し，その中でこれらのマクロを使わない場合には，これらのマクロを用
+意する必要はない．
 
 (6-6-2-1) INT_ENTRY(inhno, inthdr)
 
-ÝnhÔªinhnoCÝnhÌÖ¼ªinthdrÅ éÝn
-hÌoüûÌxðìé}NDINTHDR_ENTRYðp¢ÄÝn
-hÉoüûð¶¬·éêÉÍCÌæ¤Éè`·éD
+割込みハンドラ番号がinhno，割込みハンドラの関数名がinthdrである割込みハ
+ンドラの出入口処理のラベルを作るマクロ．INTHDR_ENTRYを用いて割込みハン
+ドラ毎に出入口処理を生成する場合には，次のように定義する．
 
 #define INT_ENTRY(inhno, inthdr)	_kernel_##inthdr##_##inhno
 
-ÝnhÉoüûðìéKvªÈ¢êÉÍCÌæ¤Éè`µ
-ÄCÝnhÌÖ¼ð»ÌÜÜÔ·D
+割込みハンドラ毎に出入口処理を作る必要がない場合には，次のように定義し
+て，割込みハンドラの関数名をそのまま返す．
 
 #define INT_ENTRY(inhno, inthdr)	inthdr
@@ -1554,342 +1504,330 @@
 (6-6-2-2) INTHDR_ENTRY(inhno, inhno_num, inthdr)
 
-ÝnhÔªinhnoCÝnhÌÖ¼ªinthdrÅ éÝn
-hÌoüûð¶¬·é}NDinhno_numÉÍCAZu¾êLqp
-ÉCÝnhÔªlÅn³êéDÝnhÉoüûð
-ìéKvªÈ¢êÉÍCóÉè`·éD
-
-6.6.3 ÝnhÌÝè
-
-(6-6-3-1) bool_t VALID_INHNO_DEFINH(INHNO inhno)iIvVj
-
-inhnoªCDEF_INHÉÎ·éÝnhÔÆµÄLøÈlÅ éêÉ
-trueC»¤ÅÈ¢êÉfalseðÔ·}ND
-
-SSPJ[lÌ^[QbgñË¶ÅÍC±Ì}NÍgíêÄ¢È¢½ßC^[
-QbgË¶ÅgíÈ¢ÈçCpÓ·éKvªÈ¢D
+割込みハンドラ番号がinhno，割込みハンドラの関数名がinthdrである割込みハ
+ンドラの出入口処理を生成するマクロ．inhno_numには，アセンブリ言語記述用
+に，割込みハンドラ番号が数値で渡される．割込みハンドラ毎に出入口処理を
+作る必要がない場合には，空に定義する．
+
+6.6.3 割込みハンドラの設定
+
+(6-6-3-1) bool_t VALID_INHNO_DEFINH(INHNO inhno)（オプション）
+
+inhnoが，DEF_INHに対する割込みハンドラ番号として有効な値である場合に
+true，そうでない場合にfalseを返すマクロ．
+
+SSPカーネルのターゲット非依存部では，このマクロは使われていないため，ター
+ゲット依存部で使わないなら，用意する必要がない．
 
 (6-6-3-2) void x_define_inh(INHNO inhno, FP int_entry)
 
-inhnoÅwè³ê½ÝnhÌoüûÌÔnðint_entryÉÝè·éD
-
-±ÌÖÍCWÌÝÇ@\Ìú»ðp¢½êÌÝC^[Qb
-gñË¶©çÄÑo³êéDÝÇ@\Ìú»ð^[QbgË¶
-ÅpÓµC»ÌÅ±ÌÖðÄÑo³È¢êÉÍC±ÌÖðpÓ·é
-KvÍÈ¢D
-
-±ÌÖÍC^[QbgñË¶ÌJ[lú»©çÄÑo³êé½ßC
-J[lÌú»iNMIð­·×ÄÌÝª}XN³êÄ¢éj©çÄ
-Ño¹éæ¤ÉÀ·êÎæ¢D
-
-wè³ê½ÝnhÔªDEF_INHÉÎ·éàÌÆµÄLøÈlÅÈ¢ê
-Ì®ìÍÛØ·éKvªÈ¢iassertÅG[Æ·éÌª]Üµ¢jD±ê
-ÍCRtBM
-[^ªCpX2Ìev[gt@CÌ^[QbgË¶
-Åè`·éINHNO_DEFINH_VALIDðp¢ÄG[ðo·é½ßÅ éD
-
-6.6.4 ÝvCÌ®«ÌÝè
-
-(6-6-4-1) bool_t VALID_INTNO_CFGINT(INTNO intno)iIvVj
-
-intnoªCCFG_INTÉÎ·éÝÔÆµÄLøÈlÅ éêÉtrueC»¤
-ÅÈ¢êÉfalseðÔ·}NDÝvCÌ®«ðÝèÅ«È¢
-intnoÉÎµÄÍC±Ì}NªfalseðÔ·æ¤É·éD
-
-SSPJ[lÌ^[QbgñË¶ÅÍC±Ì}NÍgíêÄ¢È¢½ßC^[
-QbgË¶ÅgíÈ¢ÈçCpÓ·éKvªÈ¢D
+inhnoで指定された割込みハンドラの出入口処理の番地をint_entryに設定する．
+
+この関数は，標準の割込み管理機能の初期化処理を用いた場合のみ，ターゲッ
+ト非依存部から呼び出される．割込み管理機能の初期化処理をターゲット依存
+部で用意し，その中でこの関数を呼び出さない場合には，この関数を用意する
+必要はない．
+
+この関数は，ターゲット非依存部のカーネル初期化処理から呼び出されるため，
+カーネルの初期化処理（NMIを除くすべての割込みがマスクされている）から呼
+び出せるように実装すればよい．
+
+指定された割込みハンドラ番号がDEF_INHに対するものとして有効な値でない場
+合の動作は保証する必要がない（assertでエラーとするのが望ましい）．これ
+は，コンフィギュレータが，パス2のテンプレートファイルのターゲット依存部
+で定義するINHNO_DEFINH_VALIDを用いてエラーを検出するためである．
+
+6.6.4 割込み要求ラインの属性の設定
+
+(6-6-4-1) bool_t VALID_INTNO_CFGINT(INTNO intno)（オプション）
+
+intnoが，CFG_INTに対する割込み番号として有効な値である場合にtrue，そう
+でない場合にfalseを返すマクロ．割込み要求ラインの属性を設定できない
+intnoに対しては，このマクロがfalseを返すようにする．
+
+SSPカーネルのターゲット非依存部では，このマクロは使われていないため，ター
+ゲット依存部で使わないなら，用意する必要がない．
 
 (6-6-4-2) void x_config_int(INTNO intno, ATR intatr, PRI intpri)
 
-intnoÅwè³ê½ÝvCÌÝ®«ðCintatrÅwè³ê½Êè
-ÉÝè·éDÜ½CÝDæxðCintpriÅwè³ê½lÉÝè·éD
-
-±ÌÖÍCWÌÝÇ@\Ìú»ðp¢½êÌÝC^[Qb
-gñË¶©çÄÑo³êéDÝÇ@\Ìú»ð^[QbgË¶
-ÅpÓµC»ÌÅ±ÌÖðÄÑo³È¢êÉÍC±ÌÖðpÓ·é
-KvÍÈ¢D
-
-±ÌÖÍC^[QbgñË¶ÌJ[lú»©çÄÑo³êé½ßC
-J[lÌú»iNMIð­·×ÄÌÝª}XN³êÄ¢éj©çÄ
-Ño¹éæ¤ÉÀ·êÎæ¢D
-
-intatrÆµÄÝèÅ«éÝ®«ÍÌÊèD
-
-	TA_ENAINT		0x01	ÝvÖ~tOðNA
-	TA_EDGE			0x02	GbWgK
-
-±Ì¼ÉC^[Qbgè`ÅÝ®«ðÇÁµÄàæ¢D^[Qbgè`Å
-ÇÁ·é½ßÉCÈºÌ®«¼ª\ñ³êÄ¢éD
-
-	TA_POSEDGE				|WeBuGbWgK
-	TA_NEGEDGE				lKeBuGbWgK
-	TA_BOTHEDGE				¼GbWgK
-	TA_LOWLEVEL				[xgK
-	TA_HIGHLEVEL			nCxgK
-
-±êçÌ®«¼ð^[Qbgè`ÅÇÁ·éêÉÍC»Ì®«lðèµC
-è`ðtarget_kernel.hiÜ½ÍC»±©çCN[h³êét@CjÉÜ
-ßéDÜ½CRtBM
-[^ev[gt@C©çQÆÅ«éæ¤ÉC
-target_def.csviÜ½ÍC»±©çCN[h³êét@CjÉÜßCR
-tBM
-[^ev[gt@CÌ^[QbgñË¶ÅG[ÆÈç
-È¢æ¤ÉCtarget.tfiÜ½ÍC»±©çCN[h³êét@CjÅ
-TARGET_INTATRÉÝè·éD
-
-wè³ê½ÝÔªCFG_INTÉÎ·éàÌÆµÄLøÈlÅÈ¢êâC»
-ÌÝvCÉÎµÄÝèÅ«È¢®«ðwèµ½êCÝèÅ«È¢
-ÝDæxðwèµ½êÌ®ìÍÛØ·éKvªÈ¢iassertÅG[Æ
-·éÌª]Üµ¢jD±Ìæ¤ÈP[XÍCRtBM
-[^ÅG[ð
-o·×«Å éDRtBM
-[^ev[gt@CÌ^[QbgñË
-¶ÍCpX2Ìev[gt@CÌ^[QbgË¶Åè`·é
-INTNO_CFGINT_VALIDCTARGET_INTATRCINTPRI_CFGINT_VALIDðp¢ÄG[ð
-o·éªCWÌÝ®«iTA_ENAINTCTA_EDGEjªÝèÅ«È¢êâC
-ÝèÅ«È¢®«âÝDæxªÝvCÉæÁÄÙÈéêÉÍC
-RtBM
-[^ev[gt@CÌ^[QbgË¶ÅoµÈ¯ê
-ÎÈçÈ¢D
-
-6.6.5 ÝÇ@\Ìú»ÌÏX
-
-(6-6-5-1) OMIT_INITIALIZE_INTERRUPTiIvVj
-
-ÝÇ@\Ìú»ð^[QbgË¶ÅpÓµC^[QbgñË¶
-ÉÜÜêéWÌÝÇ@\Ìú»ðp¢È¢êÉÍC±ÌV
-{ð}Nè`·éD
-
-±ÌV{ð}Nè`·éÆCINHINIBCINTINIBCinitialize_interrupt
-Ìè`ªCJ[lÌ^[QbgñË¶©çæè©êéDÜ½C
-TNUM_INHNOCtnum_inhnoCinhinib_tableCTNUM_INTNOCtnum_intnoC
-intinib_tableÌè`ÆCÝnhÌoüûð¶¬·é½ßÌLq
-iINTHDR_ENTRY}NÌXgjªCRtBM
-[^ÌpX2Ìev[
-gt@CÌ^[QbgñË¶ÉæÁÄkernel_cfg.cÉ¶¬³êÈ­ÈéD
-½¾µCRtBM
-[^ÌpX2Ìev[gt@CÌ^[QbgË¶
-ÅCUSE_INHINIB_TABLEÆUSE_INTINIB_TABLEðÝè·é±ÆÅC»Ìê
-ªðkernel_cfg.cÉ¶¬·é±ÆªÂ\Å éD
-
-(6-6-5-2) void initialize_interrupt(void)iIvVj
-
-OMIT_INITIALIZE_INTERRUPTð}Nè`µ½êÉÍC±ÌÖð^[Qbg
-Ë¶ÅpÓ·éDOMIT_INITIALIZE_INTERRUPTð}Nè`·é±ÆÉæèæ
-è©êé»Ì¼Ìf[^^CÏC}NÍC±ÌÖÅgp·éêÉÌ
-ÝpÓ·êÎæ¢D
-
-6.6.6 ftHgÌÝnh
-
-(6-6-6-1) default_int_handler(void)iIvVj
-
-RtBM
-[^ÉæèÝnhÌe[uð¶¬·éêÈÇÉÍC
-Ýnhðo^µÈ©Á½ÝnhÔÉÎµÄCftHgÌ
-ÝnhÆµÄCdefault_int_handlerðo^·éD
-
-default_int_handlerÍCWÌàÌð^[QbgË¶ÅpÓ·éªC[U
-ªpÓµ½àÌÅu«·¦çêéæ¤ÉCOMIT_DEFAULT_INT_HANDLERð}N
-è`µ½êÉÍC^[QbgË¶Åè`µÈ¢æ¤É·éDÈ¨C[U
-ªpÓ·éêÌ¼ÌÍC_kernel_default_int_handlerÆÈéD
-
-6.6.7 J[lÇOÌÝ
-
-J[lÇOÌÝnhÍCJ[làÌÝoüûðoR¹
-¸ÉÀs·éÌªî{Å éD
-
-½¾µC·×ÄÌÝÅ¯¶AhXÉªò·évZbTÅÍCJ[l
-àÌÝoüûðS­oR¹¸ÉJ[lÇOÌÝnhðÀ
-s·é±ÆªÅ«È¢½ßCÝoüûÌÈé×­¢^C~OÅC
-J[lÇOÌÝÅ é©ð»ÊµCàeðª¯éKvª éDï
-ÌIÉÍCJ[lÇOÌÝÌoüûÅÍCI[onhÌ
-â~Æ®ìJnðsÁÄÍÈçÈ¢DÜ½Creqflgð`FbNµC^XNØ·
-¦â^XNáO[`ÌÄoµðs¤KvªÈ¢D³çÉCNMIÌoüû
-ÅÍCg[XOæ¾ilog_inh_enter¨æÑlog_inh_leavejðÄ
-ÑoµÄÍÈçÈ¢D
-
-J[lÇOÌÝnhðÀs·éÛÉCJ[làÌÝoüû
-ÌêªðoR·éêÉÍCCPUáOªN±éÂ\«ðÉÍ¸ç·ÆÆà
-ÉCCPUáOðN±·Â\«ª éêÉÍC»ÌÂ\«ð^[QbgË¶Ì
-[U[Y}j
-AÉLÚµÈ¯êÎÈçÈ¢D
-
-ÉCJ[lÇOÌÝÌÝèû@ÉÖµÄCuTOPPERSV¢ãJ[l
-dlvÌu6.6.8 J[lÇOÌÝÌÝèû@vÌßÌ3ÂÌû@
-Ì¢¸êðÌp·é©ðè·éD
-
-(a-1)Ü½Í(a-2)ðÌpµCJ[lÇOÆµ½ÝÉÎµÄCJ[l
-ÌAPIÉæéÝnhÌo^ÆÝvCÌ®«ÌÝèðT|[g
-µÈ¢êÉÍC»êÉãíéû@ð^[QbgË¶Ì[U[Y}j
-A
-ÉLq·éD
-
-(a-1)Ü½Í(a-2)ðÌpµÄJ[lÌAPIÉæéÝnhÌo^â
-ÝvCÌ®«ÌÝèðT|[g·éêâC(b)ðÌpµ½êÉÍC^[
-QbgË¶É¨¢Ä»êðÀ»·éKvª éD
-
-J[lÇOÌÝÉÎµÄCDEF_INHÉæéÝnhÌo^ðT|[
-g·éÉÍCÌÝèªKvÉÈéD
-
-ETARGET_INHATRÉCTA_NONKERNELðÝè·éD
-
-E(a-1)Ü½Í(a-2)ðÌpµ½êÉÍCINHNO_DEFINH_VALIDÉCJ[lÇ
-@OÆµ½ÝÉÎ·éÝnhÔðÜßéDÜ½C
-@VALID_INHNO_DEFINHðCJ[lÇOÆµ½ÝnhÔðLøÈ
-@lÆ»è·éæ¤É·éD
-
-E(a-1)Ü½Í(a-2)ðÌpµ½êÉÍCINHNO_FIX_KERNELÉJ[lÇÆ
-@µ½ÝnhÔÌXgðCINHNO_FIX_NONKERNELÉJ[lÇO
-@Æµ½ÝnhÔÌXgÝè·éD
-
-EDEF_INHªJ[lÇOÌÝÉÎÅ«éæ¤É·éDWÌÝÇ
-@@\Ìú»ðp¢éêÉÍCx_define_inhðJ[lÇOÌ
-@ÝÉÎ³¹éD
-
-EKvÈêÉÍCTA_NONKERNEL®«ªÝè³ê½ÝnhðJ[l
-@ÇOÆµ¤æ¤ÉCJ[làÌÝoüûðC³·éDWÌ
-@ÝÇ@\Ìú»ðp¢éêCJ[lÇOÌÝÉÎµÄ
-@ÍCJ[làÌÝoüûð¶¬¹¸CAvP[Vªo^µ
-@½Ýnhð¼ÚÄÑo·æ¤ÉC^[QbgñË¶ÉæèÝè³
-@êé½ßC^[QbgË¶ÅÍÎ·éKvªÈ¢D
-
-J[lÇOÌÝÉÎµÄCCFG_INTÉæéÝvCÌ®«ÌÝ
-èðT|[g·éÉÍCÌÝèªKvÉÈéD
-
-E(a-1)Ü½Í(a-2)ðÌpµ½êÉÍCINTNO_CFGINT_VALIDÉCJ[lÇ
-@OÆµ½ÝÉÎ·éÝÔðÜßéDÜ½CVALID_INTNO_CFGINT
-@ðCJ[lÇOÆµ½ÝÔðLøÈlÆ»è·éæ¤É·éD
-
-E(a-1)Ü½Í(a-2)ðÌpµ½êÉÍCINTNO_FIX_KERNELÉJ[lÇÆ
-@µ½ÝÔÌXgðCINTNO_FIX_NONKERNELÉJ[lÇOÆµ½
-@ÝÔÌXgÝè·éD
-
-EINTPRI_CFGINT_VALIDÉCJ[lÇOÌÝÆÈéDæxðÜßéD
-
-ECFG_INTªJ[lÇOÌÝÉÎÅ«éæ¤É·éDWÌÝÇ
-@@\Ìú»ðp¢éêÉÍCx_config_intðJ[lÇOÌ
-@ÝÉÎ³¹éD
-
-chg_ipmÉæèCiNMIÈOÌjJ[lÇOÌÝð}XNÅ«éæ¤É
-·éêÉÍCÌÝèªKvÉÈéD
-
-EVALID_INTPRI_CHGIPMðCJ[lÇOÌÝÆÈéDæxðLøÈlÆ
-@»è·éæ¤É·éD
-
-Et_set_ipmðCJ[lÇOÌÝÆÈéDæxðµ¦éæ¤É·éD
-
-6.7 CPUáOnhÆCPUáO­¶ÌVXeóÔÌQÆ
-
-6.7.1 CPUáOnhÌoüû
-
-CPUáOÌoüûÌû@ÍvZbTÉæÁÄå«­ÙÈéªC¨¨æ»Ì
-àeÍÌÊèD
+intnoで指定された割込み要求ラインの割込み属性を，intatrで指定された通り
+に設定する．また，割込み優先度を，intpriで指定された値に設定する．
+
+この関数は，標準の割込み管理機能の初期化処理を用いた場合のみ，ターゲッ
+ト非依存部から呼び出される．割込み管理機能の初期化処理をターゲット依存
+部で用意し，その中でこの関数を呼び出さない場合には，この関数を用意する
+必要はない．
+
+この関数は，ターゲット非依存部のカーネル初期化処理から呼び出されるため，
+カーネルの初期化処理（NMIを除くすべての割込みがマスクされている）から呼
+び出せるように実装すればよい．
+
+intatrとして設定できる割込み属性は次の通り．
+
+	TA_ENAINT		0x01	割込み要求禁止フラグをクリア
+	TA_EDGE			0x02	エッジトリガ
+
+この他に，ターゲット定義で割込み属性を追加してもよい．ターゲット定義で
+追加するために，以下の属性名が予約されている．
+
+	TA_POSEDGE				ポジティブエッジトリガ
+	TA_NEGEDGE				ネガティブエッジトリガ
+	TA_BOTHEDGE				両エッジトリガ
+	TA_LOWLEVEL				ローレベルトリガ
+	TA_HIGHLEVEL			ハイレベルトリガ
+
+これらの属性名をターゲット定義で追加する場合には，その属性値を決定し，
+定義をtarget_kernel.h（または，そこからインクルードされるファイル）に含
+める．また，コンフィギュレータテンプレートファイルから参照できるように，
+target_def.csv（または，そこからインクルードされるファイル）に含め，コ
+ンフィギュレータテンプレートファイルのターゲット非依存部でエラーとなら
+ないように，target.tf（または，そこからインクルードされるファイル）で
+TARGET_INTATRに設定する．
+
+指定された割込み番号がCFG_INTに対するものとして有効な値でない場合や，そ
+の割込み要求ラインに対して設定できない属性を指定した場合，設定できない
+割込み優先度を指定した場合の動作は保証する必要がない（assertでエラーと
+するのが望ましい）．このようなケースは，コンフィギュレータでエラーを検
+出すべきである．コンフィギュレータテンプレートファイルのターゲット非依
+存部は，パス2のテンプレートファイルのターゲット依存部で定義する
+INTNO_CFGINT_VALID，TARGET_INTATR，INTPRI_CFGINT_VALIDを用いてエラーを
+検出するが，標準の割込み属性（TA_ENAINT，TA_EDGE）が設定できない場合や，
+設定できない属性や割込み優先度が割込み要求ラインによって異なる場合には，
+コンフィギュレータテンプレートファイルのターゲット依存部で検出しなけれ
+ばならない．
+
+6.6.5 割込み管理機能の初期化処理の変更
+
+(6-6-5-1) OMIT_INITIALIZE_INTERRUPT（オプション）
+
+割込み管理機能の初期化処理をターゲット依存部で用意し，ターゲット非依存
+部に含まれる標準の割込み管理機能の初期化処理を用いない場合には，このシ
+ンボルをマクロ定義する．
+
+このシンボルをマクロ定義すると，INHINIB，INTINIB，initialize_interrupt
+の定義が，カーネルのターゲット非依存部から取り除かれる．また，
+TNUM_INHNO，tnum_inhno，inhinib_table，TNUM_INTNO，tnum_intno，
+intinib_tableの定義と，割込みハンドラ毎の出入口処理を生成するための記述
+（INTHDR_ENTRYマクロのリスト）が，コンフィギュレータのパス2のテンプレー
+トファイルのターゲット非依存部によってkernel_cfg.cに生成されなくなる．
+ただし，コンフィギュレータのパス2のテンプレートファイルのターゲット依存
+部で，USE_INHINIB_TABLEとUSE_INTINIB_TABLEを設定することで，その一部
+分をkernel_cfg.cに生成することが可能である．
+
+(6-6-5-2) void initialize_interrupt(void)（オプション）
+
+OMIT_INITIALIZE_INTERRUPTをマクロ定義した場合には，この関数をターゲット
+依存部で用意する．OMIT_INITIALIZE_INTERRUPTをマクロ定義することにより取
+り除かれるその他のデータ型，変数，マクロは，この関数で使用する場合にの
+み用意すればよい．
+
+6.6.6 デフォルトの割込みハンドラ
+
+(6-6-6-1) default_int_handler(void)（オプション）
+
+コンフィギュレータにより割込みハンドラのテーブルを生成する場合などには，
+割込みハンドラを登録しなかった割込みハンドラ番号に対して，デフォルトの
+割込みハンドラとして，default_int_handlerを登録する．
+
+default_int_handlerは，標準のものをターゲット依存部で用意するが，ユーザ
+が用意したもので置き換えられるように，OMIT_DEFAULT_INT_HANDLERをマクロ
+定義した場合には，ターゲット依存部で定義しないようにする．なお，ユーザ
+が用意する場合の名称は，_kernel_default_int_handlerとなる．
+
+6.6.7 カーネル管理外の割込み
+
+カーネル管理外の割込みハンドラは，カーネル内の割込み出入口処理を経由せ
+ずに実行するのが基本である．
+
+ただし，すべての割込みで同じアドレスに分岐するプロセッサでは，カーネル
+内の割込み出入口処理を全く経由せずにカーネル管理外の割込みハンドラを実
+行することができないため，割込み出入口処理のなるべく早いタイミングで，
+カーネル管理外の割込みであるかを判別し，処理内容を分ける必要がある．具
+体的には，カーネル管理外の割込みの出入口処理では，オーバランハンドラの
+停止と動作開始を行ってはならない．また，reqflgをチェックし，タスク切換
+えやタスク例外処理ルーチンの呼出しを行う必要がない．さらに，NMIの出入口
+処理では，トレースログ取得処理（log_inh_enterおよびlog_inh_leave）を呼
+び出してはならない．
+
+カーネル管理外の割込みハンドラを実行する際に，カーネル内の割込み出入口
+処理の一部分を経由する場合には，CPU例外が起こる可能性を極力減らすととも
+に，CPU例外を起こす可能性がある場合には，その可能性をターゲット依存部の
+ユーザーズマニュアルに記載しなければならない．
+
+次に，カーネル管理外の割込みの設定方法に関して，「TOPPERS新世代カーネル
+統合仕様書」の「6.6.8 カーネル管理外の割込みの設定方法」の節の3つの方法
+のいずれを採用するかを決定する．
+
+(a-1)または(a-2)を採用し，カーネル管理外とした割込みに対して，カーネル
+のAPIによる割込みハンドラの登録と割込み要求ラインの属性の設定をサポート
+しない場合には，それに代わる方法をターゲット依存部のユーザーズマニュア
+ルに記述する．
+
+(a-1)または(a-2)を採用してカーネルのAPIによる割込みハンドラの登録や割込
+み要求ラインの属性の設定をサポートする場合や，(b)を採用した場合には，ター
+ゲット依存部においてそれを実現する必要がある．
+
+カーネル管理外の割込みに対して，DEF_INHによる割込みハンドラの登録をサポー
+トするには，次の設定が必要になる．
+
+・TARGET_INHATRに，TA_NONKERNELを設定する．
+
+・(a-1)または(a-2)を採用した場合には，INHNO_DEFINH_VALIDに，カーネル管
+　理外とした割込みに対応する割込みハンドラ番号を含める．また，
+　VALID_INHNO_DEFINHを，カーネル管理外とした割込みハンドラ番号を有効な
+　値と判定するようにする．
+
+・(a-1)または(a-2)を採用した場合には，INHNO_FIX_KERNELにカーネル管理と
+　した割込みハンドラ番号のリストを，INHNO_FIX_NONKERNELにカーネル管理外
+　とした割込みハンドラ番号のリスト設定する．
+
+・DEF_INHがカーネル管理外の割込みに対応できるようにする．標準の割込み管
+　理機能の初期化処理を用いる場合には，x_define_inhをカーネル管理外の割
+　込みに対応させる．
+
+・必要な場合には，TA_NONKERNEL属性が設定された割込みハンドラをカーネル
+　管理外と扱うように，カーネル内の割込み出入口処理を修正する．標準の割
+　込み管理機能の初期化処理を用いる場合，カーネル管理外の割込みに対して
+　は，カーネル内の割込み出入口処理を生成せず，アプリケーションが登録し
+　た割込みハンドラを直接呼び出すように，ターゲット非依存部により設定さ
+　れるため，ターゲット依存部では対応する必要がない．
+
+カーネル管理外の割込みに対して，CFG_INTによる割込み要求ラインの属性の設
+定をサポートするには，次の設定が必要になる．
+
+・(a-1)または(a-2)を採用した場合には，INTNO_CFGINT_VALIDに，カーネル管
+　理外とした割込みに対応する割込み番号を含める．また，VALID_INTNO_CFGINT
+　を，カーネル管理外とした割込み番号を有効な値と判定するようにする．
+
+・(a-1)または(a-2)を採用した場合には，INTNO_FIX_KERNELにカーネル管理と
+　した割込み番号のリストを，INTNO_FIX_NONKERNELにカーネル管理外とした割
+　込み番号のリスト設定する．
+
+・INTPRI_CFGINT_VALIDに，カーネル管理外の割込みとなる優先度を含める．
+
+・CFG_INTがカーネル管理外の割込みに対応できるようにする．標準の割込み管
+　理機能の初期化処理を用いる場合には，x_config_intをカーネル管理外の割
+　込みに対応させる．
+
+chg_ipmにより，（NMI以外の）カーネル管理外の割込みをマスクできるように
+する場合には，次の設定が必要になる．
+
+・VALID_INTPRI_CHGIPMを，カーネル管理外の割込みとなる優先度を有効な値と
+　判定するようにする．
+
+・t_set_ipmを，カーネル管理外の割込みとなる優先度を扱えるようにする．
+
+6.7 CPU例外ハンドラとCPU例外発生時のシステム状態の参照
+
+6.7.1 CPU例外ハンドラの出入口処理
+
+CPU例外の出入口処理の方法はプロセッサによって大きく異なるが，おおよその
+処理内容は次の通り．
 
 ----------------------------------------
 void
-<CPUáOÌoüû>(void)
+<CPU例外の出入口処理>(void)
 {
-	XNb`WX^ðX^bNÉÛ¶·é
-	if (J[lÇOÌCPUáO) {
-		if (^XNReLXgÅCPUáO­¶) {
-			ñ^XNReLXgÉØè·¦é
+	スクラッチレジスタをスタックに保存する
+	if (カーネル管理外のCPU例外) {
+		if (タスクコンテキストでCPU例外発生) {
+			非タスクコンテキストに切り換える
 		}
-		VXeóÔiReLXgÍ­jðCCPUáO­¶ÌóÔÉ·é
-		CPUáOnhðCCPUáOÌîñðL¯µÄ¢éÌæÌæªÔnð
-									p[^ip_excinfjÆµÄÄÑo·
-		if (^XNReLXgÅCPUáO­¶) {
-			^XNReLXgÉØè·¦é
+		システム状態（コンテキストは除く）を，CPU例外発生時の状態にする
+		CPU例外ハンドラを，CPU例外の情報を記憶している領域の先頭番地を
+									パラメータ（p_excinf）として呼び出す
+		if (タスクコンテキストでCPU例外発生) {
+			タスクコンテキストに切り換える
 		}
-		CPUáO©çÌ^[ãÉCCPUáO­¶ÌVXeóÔÉ
-													ßéæ¤Éõ·é
+		CPU例外処理からのリターン後に，CPU例外発生時のシステム状態に
+													戻るように準備する
 	}
 	else {
-		if (^XNReLXgÅCPUáO­¶) {
-			ñ^XNReLXgÉØè·¦é
+		if (タスクコンテキストでCPU例外発生) {
+			非タスクコンテキストに切り換える
 		}
-		VXeóÔiReLXgÍ­jðCCPUáO­¶ÌóÔÉ·é
-			@iCPUáO­¶ÌÝDæx}XNæèàDæxÌ¢Ý
-				ÌÝðó¯t¯çêéæ¤ÉµÄCCPUbNðóÔÉ·éj
+		システム状態（コンテキストは除く）を，CPU例外発生時の状態にする
+			　（CPU例外発生時の割込み優先度マスクよりも優先度の高い割込み
+				のみを受け付けられるようにして，CPUロック解除状態にする）
 
 #ifdef LOG_EXC_ENTER
-		log_exc_enter(CPUáOnhÔ);
+		log_exc_enter(CPU例外ハンドラ番号);
 #endif /* LOG_EXC_ENTER */
-		CPUáOnhðCCPUáOÌîñðL¯µÄ¢éÌæÌæªÔnð
-									p[^ip_excinfjÆµÄÄÑo·
+		CPU例外ハンドラを，CPU例外の情報を記憶している領域の先頭番地を
+									パラメータ（p_excinf）として呼び出す
 #ifdef LOG_EXC_LEAVE
-		log_exc_leave(CPUáOnhÔ);
+		log_exc_leave(CPU例外ハンドラ番号);
 #endif /* LOG_EXC_LEAVE */
 
 	  ret_exc:
-		if (^XNReLXgÅCPUáO­¶) {
-			i­È­ÆàjJ[lÇÌÝðÖ~µ½óÔÉ·é c (*d)
-			^XNReLXgÉØè·¦é
+		if (タスクコンテキストでCPU例外発生) {
+			（少なくとも）カーネル管理の割込みを禁止した状態にする … (*d)
+			タスクコンテキストに切り換える
 			if (reqflg) {
 				reqflg = false;
-				CPUbNóÔÉ·é c (*e)
-				search_schedtskðÄÑoµCÅDæÊ^XNðßé
-				ÅDæÊÌ^XNIDðøÉµÄrun_taskÉªò·é
+				CPUロック状態にする … (*e)
+				search_schedtskを呼び出し，最高優先順位タスクを求める
+				最高優先順位のタスクIDを引数にしてrun_taskに分岐する
 			}
 		}
-		CPUáO©çÌ^[ãÉCCPUbNðóÔÉßéæ¤Éõ·é
+		CPU例外処理からのリターン後に，CPUロック解除状態に戻るように準備する
 	}
-	XNb`WX^ðX^bN©çA·é
-	CPUáO©çÌ^[
+	スクラッチレジスタをスタックから復帰する
+	CPU例外処理からのリターン
 }
 ----------------------------------------
 
-CPUáOnhÍCñReLXgÉØè·¦é±Æð¢ÄÍCCPUáO­
-¶Æ¯¶VXeóÔÅÄÑo³È¯êÎÈçÈ¢Dá¦ÎCCPUáOªCPU
-bNóÔÅ­¶µ½êÉÍCPUbNóÔCCPUbNðóÔÅ­¶µ½
-êÉÍCPUbNðóÔÅCCPUáOnhðÄÑo³È¯êÎÈçÈ¢D
-CPUbNóÔÅ­¶µ½CPUáOÍCJ[lÇOÌCPUáOÆÈé½ßCJ[
-lÇÌCPUáOnhÉÂ¢ÄÍCCPUbNðóÔÅÄÑo·±ÆÉ
-ÈéD
-
-J[lÇOÌCPUáOÅ é±ÆÍCexc_sense_unlockªfalseðÔ·ð
-ÆC^XNReLXgÅ é±Æð²×È¢¾¯Ìá¢Å èCÙÚ¯¶R[
-hÅ»è·é±ÆªÅ«éD
-
-ãÌR[hÅÍCJ[lÇOÌCPUáOÉÎµÄCg[XOæ¾
-ilog_exc_enter¨æÑlog_exc_leavejðÄÑoµÄ¢È¢ªCSÝb
-NóÔ©NMIÌÉCPUáOª­¶µ½êðO·êÎCÄÑoµÄà©
-ÜíÈ¢DSÝbNóÔ©NMIÌÉ­¶µ½CPUáOÌêÉÍC
-g[XOæ¾ðÄÑoµÄÍÈçÈ¢D
-
-CPUáOnhðÀs·éÛÉoR·éªÅÍCCPUáOªN±éÂ\«ð
-ÉÍ¸ç·ÆÆàÉCCPUáOðN±·Â\«ª éêiá¦ÎCXNb`
-WX^ðX^bNÉÛ¶·éÉCoXG[ÈÇÌCPUáOª­¶·éÂ\
-«ªl¦çêéjÉÍC»ÌÂ\«ð^[QbgË¶Ì[U[Y}j
-A
-ÉLÚµÈ¯êÎÈçÈ¢D
-
-ret_excÈ~ÌÍCÝÌoüûÌret_intÈ~ÌÆ¯¶Å é
-½ßC^[QbgÉæÁÄÍC¤ÊÌ[`ðp¢é±ÆªÅ«éÂ\«ª
- éD
-
-CPUáOÌoüûðAZu¾êÅLq·éêÉÍCg[XOæ¾
-ÍCu6.2 g[XO@\ÖÌÎvÌßÅLqµ½û@ÅR[fB
-O·é±ÆD
-
-6.7.2 CPUáOnhÌoüûÌ¶¬
-
-CPUáOxNgðn[hEFAÅÀ»µÄ¢éêÈÇCCPUáOnh
-ÉoüûðpÓµ½ûªø¦ªÇ¢^[QbgÌ½ßÉCCPUáOnh
-Éoüûð¶¬·é@\ðpÓµÄ¢éD
-
-ÈºÌ}NÍCWÌCPUáOÇ@\Ìú»ðp¢½êÌÝC^[
-QbgñË¶ÅgíêéDCPUáOÇ@\Ìú»ð^[QbgË¶
-ÅpÓµC»ÌÅ±êçÌ}NðgíÈ¢êÉÍC±êçÌ}Nðp
-Ó·éKvÍÈ¢D
+CPU例外ハンドラは，非コンテキストに切り換えることを除いては，CPU例外発
+生時と同じシステム状態で呼び出さなければならない．例えば，CPU例外がCPU
+ロック状態で発生した場合にはCPUロック状態，CPUロック解除状態で発生した
+場合にはCPUロック解除状態で，CPU例外ハンドラを呼び出さなければならない．
+CPUロック状態で発生したCPU例外は，カーネル管理外のCPU例外となるため，カー
+ネル管理のCPU例外ハンドラについては，CPUロック解除状態で呼び出すことに
+なる．
+
+カーネル管理外のCPU例外であることは，exc_sense_unlockがfalseを返す条件
+と，タスクコンテキストであることを調べないだけの違いであり，ほぼ同じコー
+ドで判定することができる．
+
+上のコードでは，カーネル管理外のCPU例外に対して，トレースログ取得処理
+（log_exc_enterおよびlog_exc_leave）を呼び出していないが，全割込みロッ
+ク状態かNMIの処理中にCPU例外が発生した場合を除外すれば，呼び出してもか
+まわない．全割込みロック状態かNMIの処理中に発生したCPU例外の場合には，
+トレースログ取得処理を呼び出してはならない．
+
+CPU例外ハンドラを実行する際に経由する部分では，CPU例外が起こる可能性を
+極力減らすとともに，CPU例外を起こす可能性がある場合（例えば，スクラッチ
+レジスタをスタックに保存する時に，バスエラーなどのCPU例外が発生する可能
+性が考えられる）には，その可能性をターゲット依存部のユーザーズマニュア
+ルに記載しなければならない．
+
+ret_exc以降の処理は，割込みの出入口処理のret_int以降の処理と同じである
+ため，ターゲットによっては，共通のルーチンを用いることができる可能性が
+ある．
+
+CPU例外の出入口処理をアセンブリ言語で記述する場合には，トレースログ取得
+処理は，「6.2 トレースログ機能への対応」の節で記述した方法でコーディン
+グすること．
+
+6.7.2 CPU例外ハンドラの出入口処理の生成
+
+CPU例外ベクトルをハードウェアで実現している場合など，CPU例外ハンドラ毎
+に出入口処理を用意した方が効率が良いターゲットのために，CPU例外ハンドラ
+毎に出入口処理を生成する機構を用意している．
+
+以下のマクロは，標準のCPU例外管理機能の初期化処理を用いた場合のみ，ター
+ゲット非依存部で使われる．CPU例外管理機能の初期化処理をターゲット依存部
+で用意し，その中でこれらのマクロを使わない場合には，これらのマクロを用
+意する必要はない．
 
 (6-7-2-1) EXC_ENTRY(excno, exchdr)
 
-CPUáOnhÔªexcnoCCPUáOnhÌÖ¼ªexchdrÅ éCPUá
-OnhÌoüûÌxðìé}NDEXCHDR_ENTRYðp¢ÄCPUáO
-nhÉoüûð¶¬·éêÉÍCÌæ¤Éè`·éD
+CPU例外ハンドラ番号がexcno，CPU例外ハンドラの関数名がexchdrであるCPU例
+外ハンドラの出入口処理のラベルを作るマクロ．EXCHDR_ENTRYを用いてCPU例外
+ハンドラ毎に出入口処理を生成する場合には，次のように定義する．
 
 #define EXC_ENTRY(excno, exchdr)	_kernel_##exchdr##_##excno
 
-CPUáOnhÉoüûðìéKvªÈ¢êÉÍCÌæ¤Éè`µ
-ÄCCPUáOnhÌÖ¼ð»ÌÜÜÔ·D
+CPU例外ハンドラ毎に出入口処理を作る必要がない場合には，次のように定義し
+て，CPU例外ハンドラの関数名をそのまま返す．
 
 #define EXC_ENTRY(excno, exchdr)	exchdr
@@ -1897,194 +1835,185 @@
 (6-7-2-2) EXCHDR_ENTRY(excno, excno_num, exchdr)
 
-CPUáOnhÔªexcnoCCPUáOnhÌÖ¼ªexchdrÅ éCPUá
-OnhÌoüûð¶¬·é}NDexcno_numÉÍCAZu¾êL
-qpÉCCPUáOnhÔªlÅn³êéDCPUáOnhÉoüû
-ðìéKvªÈ¢êÉÍCóÉè`·éD
-
-6.7.3 CPUáOnhÌÝè
-
-(6-7-3-1) bool_t VALID_EXCNO_DEFEXC(EXCNO excno)iIvVj
-
-excnoªCDEF_EXCÉÎ·éCPUáOnhÔÆµÄLøÈlÅ éêÉ
-trueC»¤ÅÈ¢êÉfalseðÔ·}ND
-
-SSPJ[lÌ^[QbgñË¶ÅÍC±Ì}NÍgíêÄ¢È¢½ßC^[
-QbgË¶ÅgíÈ¢ÈçCpÓ·éKvªÈ¢D
+CPU例外ハンドラ番号がexcno，CPU例外ハンドラの関数名がexchdrであるCPU例
+外ハンドラの出入口処理を生成するマクロ．excno_numには，アセンブリ言語記
+述用に，CPU例外ハンドラ番号が数値で渡される．CPU例外ハンドラ毎に出入口
+処理を作る必要がない場合には，空に定義する．
+
+6.7.3 CPU例外ハンドラの設定
+
+(6-7-3-1) bool_t VALID_EXCNO_DEFEXC(EXCNO excno)（オプション）
+
+excnoが，DEF_EXCに対するCPU例外ハンドラ番号として有効な値である場合に
+true，そうでない場合にfalseを返すマクロ．
+
+SSPカーネルのターゲット非依存部では，このマクロは使われていないため，ター
+ゲット依存部で使わないなら，用意する必要がない．
 
 (6-7-3-2) void x_define_exc(EXCNO excno, FP exc_entry)
 
-excnoÅwè³ê½CPUáOnhÌoüûÌÔnðexc_entryÉÝè·éD
-
-±ÌÖÍCWÌCPUáOÇ@\Ìú»ðp¢½êÌÝC^[Qb
-gñË¶©çÄÑo³êéDCPUáOÇ@\Ìú»ð^[QbgË¶
-ÅpÓµC»ÌÅ±ÌÖðÄÑo³È¢êÉÍC±ÌÖðpÓ·é
-KvÍÈ¢D
-
-±ÌÖÍC^[QbgñË¶ÌJ[lú»©çÄÑo³êé½ßC
-J[lÌú»iNMIð­·×ÄÌÝª}XN³êÄ¢éj©çÄ
-Ño¹éæ¤ÉÀ·êÎæ¢D
-
-wè³ê½CPUáOnhÔªDEF_EXCÉÎ·éàÌÆµÄLøÈlÅÈ¢
-êÌ®ìÍÛØ·éKvªÈ¢iassertÅG[Æ·éÌª]Üµ¢jD±
-êÍCRtBM
-[^ªCpX2Ìev[gt@CÌ^[QbgË¶
-Åè`·éEXCNO_DEFEXC_VALIDðp¢ÄG[ðo·é½ßÅ éD
-
-6.7.4 CPUáOÇ@\Ìú»ÌÏX
-
-(6-7-4-1) OMIT_INITIALIZE_EXCEPTIONiIvVj
-
-CPUáOÇ@\Ìú»ð^[QbgË¶ÅpÓµC^[QbgñË¶
-ÉÜÜêéWÌÝÇ@\Ìú»ðp¢È¢êÉÍC±ÌV
-{ð}Nè`·éD
-
-±ÌV{ð}Nè`·éÆCEXCINIBÆinitialize_exceptionÌè`ªC
-J[lÌ^[QbgñË¶©çæè©êéDÜ½CTNUM_EXCNOC
-tnum_excnoCexcinib_tableÌè`ÆCCPUáOnhÌoüûð¶¬
-·é½ßÌLqiEXCHDR_ENTRY}NÌXgjðCRtBM
-[^Ìp
-X2Ìev[gt@CÌ^[QbgñË¶ÉæÁÄkernel_cfg.cÉ¶¬
-³êÈ­ÈéD
-
-(6-7-4-2) void initialize_exception(void)iIvVj
-
-OMIT_INITIALIZE_EXCEPTIONð}Nè`µ½êÉÍC±ÌÖð^[Qbg
-Ë¶ÅpÓ·éDOMIT_INITIALIZE_EXCEPTIONð}Nè`·é±ÆÉæèæ
-è©êé»Ì¼Ìf[^^CÏC}NÍC±ÌÖÅgp·éêÉÌ
-ÝpÓ·êÎæ¢D
-
-6.7.5 ftHgÌCPUáOnh
-
-(6-7-5-1) default_exc_handler(void)iIvVj
-
-RtBM
-[^ÉæèCPUáOnhÌe[uð¶¬·éêÈÇÉÍC
-CPUáOnhðo^µÈ©Á½CPUáOnhÔÉÎµÄCftHg
-ÌCPUáOnhÆµÄCdefault_exc_handlerðo^·éD
-
-default_exc_handlerÍCWÌàÌð^[QbgË¶ÅpÓ·éªC[U
-ªpÓµ½àÌÅu«·¦çêéæ¤ÉCOMIT_DEFAULT_EXC_HANDLERð}N
-è`µ½êÉÍC^[QbgË¶Åè`µÈ¢æ¤É·éDÈ¨C[U
-ªpÓ·éêÌ¼ÌÍC_kernel_default_exc_handlerÆÈéD
-
-6.8 J[lÌN®EI¹ÆX^bNÌæÈÇ
-
-(6-8-1) X^[gAbvW
-[
-
-J[lÌX^[gAbvW
-[ÍCVXeÌZbgãÉÅÉÀs
-³êévOÅ éDX^[gAbvW
-[ÍCWIÉÍCvZb
-TË¶Ü½Í`bvË¶ÅpÓµÈºÌðs¤ªC»êÉ±¾íéK
-vÍÈ¢DïÌIÉÍCJ­Â«ÉpÓ³êÄ¢éX^[gAbvW
-[
-ðp¢éû@i±ÌêC^[QbgË¶ÅmainÖðpÓ·éKvª éj
-âCAvP[VÅpÓ·éêªl¦çêéD
-
-(a) vZbTóÔÌú»
-
-vZbT[hCX^bN|C^Ct[|C^CvZbTÌó
-Ôðú»·éDÜ½CNMIð­·×ÄÌÝð}XNµ½óÔiSÝ
-bNóÔÆ¯ÌóÔjÆ·éDDRAMRg[Ìú»ÈÇCð
-ANZX·é½ßÉKvÈú»ð±±ÅsÁÄàæ¢iÌ
-hardware_init_hookÅsÁÄàæ¢jD
-
-(b) hardware_init_hookðÄÑo·
-
-VXeÌZbgã·®És¤KvÌ é^[QbgVXeË¶Ìú»
-ðs¤½ßÉChardware_init_hookðÄÑo·Dhardware_init_hookªp
-Ó³êÄ¢È¢êÍC½àµÈ¢DGNUJ­Â«ÅÍCJXNvgÌ
-weak definitionÉæèChardware_init_hookªpÓ³êÄ¢È¢êÌlð0
-Æ·é±ÆÅC±êðÀ»Å«éDweak definitionÌ@\ð½È¢J­Â«
-ÅÍChardware_init_hookðK¸ÄÑo·±ÆÉ·éD
-
-hardware_init_hookÍC^[QbgË¶ÅpÓ·éÌªWÅ éªCVX
-eÌZbgã·®És¤KvÌ éú»ðÇÁ·é½ßÉCAv
-P[VÅpÓµ½àÌðp¢éêà éD
-
-ANZXÉKvÈú»ðhardware_init_hookÅs¤êÉÍC±
-êðÄÑo·_ÅÉANZX·é±ÆªÅ«È¢½ßCÖiTu[
-`jðÄÑo·½ßÉX^bNðgp·évZbTÅÍCßèÔnðÄp
-WX^ÉüêÄÄÑo·Æ¢Á½HvªKvÅ éD±ÌêC
-hardware_init_hookðC¾êÅLq·é±ÆÍÅ«È­ÈéªCâÞð¦È¢D
-
-(c) bssZNVÆdataZNVÌú»
-
-bssZNVðNAµCdataZNVÉúlðÝè·éD
-
-½¾µCJ[l{ÌÍCkerflgªfalsei0jÉú»³êé±ÆÈOÉC
-±êçÌZNVªú»³êé±ÆÉË¶µÄ¢È¢½ßCX^[gAb
-vW
-[ðAvP[VÅpÓ·éêÅCVXeT[rXâAv
-P[Vª±êçÌZNVªú»³êé±ÆÉË¶µÄ¢È¢ê
-ÉÍCVXeÌN®ÔðZk·é½ßÉCkerflgðfalseÉú»·é¾¯
-Å\ªÅ éD
-
-(d) software_init_hookðÄÑo·
-
-J­Â«iÁÉCujÉË¶µÄKvÈú»ðs¤½ßÉC
-software_init_hookðÄÑo·Dsoftware_init_hookªpÓ³êÄ¢È¢ê
-ÍC½àµÈ¢DGNUJ­Â«ÅÍCJXNvgÌweak definitionÉ
-æèCsoftware_init_hookªpÓ³êÄ¢È¢êÌlð0Æ·é±ÆÅC±ê
-ðÀ»Å«éDweak definitionÌ@\ð½È¢J­Â«ÅÍC
-software_init_hookðK¸ÄÑo·±ÆÉ·éD
-
-software_init_hookÍC^[QbgË¶ÅpÓ·éÌªWÅ éD
-
-(e) sta_kerÖªò
-
-sta_kerðÄÑo·Dsta_kerÍCNMIð­·×ÄÌÝð}XNµ½óÔ
-iSÝbNóÔÆ¯ÌóÔjÅÄÑo³È¯êÎÈçÈ¢Dsta_ker©
-çÍ^[·é±ÆªÈ¢½ßCX^[gAbvW
-[ÉßÁÄ­é±
-ÆÍl¦éKvªÈ¢D
+excnoで指定されたCPU例外ハンドラの出入口処理の番地をexc_entryに設定する．
+
+この関数は，標準のCPU例外管理機能の初期化処理を用いた場合のみ，ターゲッ
+ト非依存部から呼び出される．CPU例外管理機能の初期化処理をターゲット依存
+部で用意し，その中でこの関数を呼び出さない場合には，この関数を用意する
+必要はない．
+
+この関数は，ターゲット非依存部のカーネル初期化処理から呼び出されるため，
+カーネルの初期化処理（NMIを除くすべての割込みがマスクされている）から呼
+び出せるように実装すればよい．
+
+指定されたCPU例外ハンドラ番号がDEF_EXCに対するものとして有効な値でない
+場合の動作は保証する必要がない（assertでエラーとするのが望ましい）．こ
+れは，コンフィギュレータが，パス2のテンプレートファイルのターゲット依存
+部で定義するEXCNO_DEFEXC_VALIDを用いてエラーを検出するためである．
+
+6.7.4 CPU例外管理機能の初期化処理の変更
+
+(6-7-4-1) OMIT_INITIALIZE_EXCEPTION（オプション）
+
+CPU例外管理機能の初期化処理をターゲット依存部で用意し，ターゲット非依存
+部に含まれる標準の割込み管理機能の初期化処理を用いない場合には，このシ
+ンボルをマクロ定義する．
+
+このシンボルをマクロ定義すると，EXCINIBとinitialize_exceptionの定義が，
+カーネルのターゲット非依存部から取り除かれる．また，TNUM_EXCNO，
+tnum_excno，excinib_tableの定義と，CPU例外ハンドラ毎の出入口処理を生成
+するための記述（EXCHDR_ENTRYマクロのリスト）を，コンフィギュレータのパ
+ス2のテンプレートファイルのターゲット非依存部によってkernel_cfg.cに生成
+されなくなる．
+
+(6-7-4-2) void initialize_exception(void)（オプション）
+
+OMIT_INITIALIZE_EXCEPTIONをマクロ定義した場合には，この関数をターゲット
+依存部で用意する．OMIT_INITIALIZE_EXCEPTIONをマクロ定義することにより取
+り除かれるその他のデータ型，変数，マクロは，この関数で使用する場合にの
+み用意すればよい．
+
+6.7.5 デフォルトのCPU例外ハンドラ
+
+(6-7-5-1) default_exc_handler(void)（オプション）
+
+コンフィギュレータによりCPU例外ハンドラのテーブルを生成する場合などには，
+CPU例外ハンドラを登録しなかったCPU例外ハンドラ番号に対して，デフォルト
+のCPU例外ハンドラとして，default_exc_handlerを登録する．
+
+default_exc_handlerは，標準のものをターゲット依存部で用意するが，ユーザ
+が用意したもので置き換えられるように，OMIT_DEFAULT_EXC_HANDLERをマクロ
+定義した場合には，ターゲット依存部で定義しないようにする．なお，ユーザ
+が用意する場合の名称は，_kernel_default_exc_handlerとなる．
+
+6.8 カーネルの起動・終了とスタック領域など
+
+(6-8-1) スタートアップモジュール
+
+カーネルのスタートアップモジュールは，システムのリセット後に最初に実行
+されるプログラムである．スタートアップモジュールは，標準的には，プロセッ
+サ依存部またはチップ依存部で用意し以下の処理を行うが，それにこだわる必
+要はない．具体的には，開発環境に用意されているスタートアップモジュール
+を用いる方法（この場合，ターゲット依存部でmain関数を用意する必要がある）
+や，アプリケーションで用意する場合が考えられる．
+
+(a) プロセッサ状態の初期化
+
+プロセッサモード，スタックポインタ，フレームポインタ等，プロセッサの状
+態を初期化する．また，NMIを除くすべての割込みをマスクした状態（全割込み
+ロック状態と同等の状態）とする．DRAMコントローラの初期化など，メモリを
+アクセスするために必要な初期化処理をここで行ってもよい（次の
+hardware_init_hookで行ってもよい）．
+
+(b) hardware_init_hookを呼び出す
+
+システムのリセット後すぐに行う必要のあるターゲットシステム依存の初期化
+処理を行うために，hardware_init_hookを呼び出す．hardware_init_hookが用
+意されていない場合は，何もしない．GNU開発環境では，リンカスクリプト中の
+weak definitionにより，hardware_init_hookが用意されていない場合の値を0
+とすることで，これを実現できる．weak definitionの機能を持たない開発環境
+では，hardware_init_hookを必ず呼び出すことにする．
+
+hardware_init_hookは，ターゲット依存部で用意するのが標準であるが，シス
+テムのリセット後すぐに行う必要のある初期化処理を追加するために，アプリ
+ケーションで用意したものを用いる場合もある．
+
+メモリアクセスに必要な初期化処理をhardware_init_hookで行う場合には，こ
+れを呼び出す時点でメモリにアクセスすることができないため，関数（サブルー
+チン）を呼び出すためにスタックを使用するプロセッサでは，戻り番地を汎用
+レジスタに入れて呼び出すといった工夫が必要である．この場合，
+hardware_init_hookをC言語で記述することはできなくなるが，やむをえない．
+
+(c) bssセクションとdataセクションの初期化
+
+bssセクションをクリアし，dataセクションに初期値を設定する．
+
+ただし，カーネル本体は，kerflgがfalse（＝0）に初期化されること以外に，
+これらのセクションが初期化されることに依存していないため，スタートアッ
+プモジュールをアプリケーションで用意する場合で，システムサービスやアプ
+リケーションがこれらのセクションが初期化されることに依存していない場合
+には，システムの起動時間を短縮するために，kerflgをfalseに初期化するだけ
+で十分である．
+
+(d) software_init_hookを呼び出す
+
+開発環境（特にライブラリ）に依存して必要な初期化処理を行うために，
+software_init_hookを呼び出す．software_init_hookが用意されていない場合
+は，何もしない．GNU開発環境では，リンカスクリプト中のweak definitionに
+より，software_init_hookが用意されていない場合の値を0とすることで，これ
+を実現できる．weak definitionの機能を持たない開発環境では，
+software_init_hookを必ず呼び出すことにする．
+
+software_init_hookは，ターゲット依存部で用意するのが標準である．
+
+(e) sta_kerへ分岐
+
+sta_kerを呼び出す．sta_kerは，NMIを除くすべての割込みをマスクした状態
+（全割込みロック状態と同等の状態）で呼び出さなければならない．sta_kerか
+らはリターンすることがないため，スタートアップモジュールに戻ってくるこ
+とは考える必要がない．
 
 (6-8-2) void target_initialize(void)
 
-^[QbgË¶Ìú»ðs¤ÖDsta_kerÌÅÅÄÑo³êéDvZb
-TE`bvEJ­Â«Ë¶Ìú»ðC»êçÌË¶ÉØèª¯é±Æ
-àÂ\Å éD
-
-±ÌÖÍC ­ÜÅàJ[lÌ^[QbgË¶Ìú»ðs¤½ß
-ÌàÌÅ éDAvP[VÉKvÈú»ÍCú»[`Ås
-¤Ìªî{Å éªCVXeÌZbgã·®És¤Kvª éêÉÍC
-hardware_init_hookðp¢éD
+ターゲット依存部の初期化を行う関数．sta_kerの最初で呼び出される．プロセッ
+サ・チップ・開発環境依存の初期化処理を，それらの依存部に切り分けること
+も可能である．
+
+この関数は，あくまでもカーネルのターゲット依存部の初期化処理を行うため
+のものである．アプリケーションに必要な初期化処理は，初期化ルーチンで行
+うのが基本であるが，システムのリセット後すぐに行う必要がある場合には，
+hardware_init_hookを用いる．
 
 (6-8-3) void call_exit_kernel(void)
 
-ñ^XNReLXgÉØè·¦ÄCexit_kernelÖªò·éÖDext_ker©
-çÄÑo³êéDexit_kernel©çÍ^[·é±ÆªÈ¢½ßC±ÌÖÉ
-ßÁÄ­é±ÆÍl¦éKvªÈ¢D
-
-ñ^XNReLXgÉØè·¦éÌÍCI¹[`ðCñ^XNR
-eLXgpÌX^bNÅÀs·é½ßÅ éDI¹[`ð^XNpÌ
-X^bNÅÀs·éÆCe^XNÌX^bNÌæÌTCYðè·éÛÉCI
-¹[`ªgp·éX^bNÌæðl¶µÈ¯êÎÈçÈ¢D±êÉÍC
-I¹[`ªgp·éX^bNÌæªå«¢êÉe^XNÌX^bN
-Ìæð³ÊÉå«­µÈ¯êÎÈçÈ¢±ÆÉÁ¦ÄCÓ}µÈ¢X^bNI[
-o[t[ª­¶·éÂ\«ðßéÆ¢¤âèª éD
-
-±ÌÖÍCSÝbNóÔÅÄÎêé½ßCSÝbNóÔ©çÄ
-Ño·±ÆªÅ«È¢ÖðÄÎÈ¢æ¤ÉÀµÈ¯êÎÈçÈ¢D
+非タスクコンテキストに切り換えて，exit_kernelへ分岐する関数．ext_kerか
+ら呼び出される．exit_kernelからはリターンすることがないため，この関数に
+戻ってくることは考える必要がない．
+
+非タスクコンテキストに切り換えるのは，終了処理ルーチンを，非タスクコン
+テキスト用のスタックで実行するためである．終了処理ルーチンをタスク用の
+スタックで実行すると，各タスクのスタック領域のサイズを決定する際に，終
+了処理ルーチンが使用するスタック領域を考慮しなければならない．これには，
+終了処理ルーチンが使用するスタック領域が大きい場合に各タスクのスタック
+領域を無駄に大きくしなければならないことに加えて，意図しないスタックオー
+バーフローが発生する可能性を高めるという問題がある．
+
+この関数は，全割込みロック状態で呼ばれるため，全割込みロック状態から呼
+び出すことができない関数を呼ばないように実装しなければならない．
 
 (6-8-4) void target_exit(void)
 
-^[QbgË¶ÌI¹ðs¤ÖD±ÌÖÍCJ[lI¹ÌÅ
-ãÉÄÑo³êC^[µÄÍÈçÈ¢DvZbTE`bvEJ­Â«Ë
-¶ÌI¹ðC»êçÌË¶ÉØèª¯é±ÆàÂ\Å éD
-
-±ÌÖÅÍCÅÉCatexitÉæÁÄo^³ê½ÖÆfXgN^ðÄÑ
-o·±ÆðÓ}µÄ¨èCWIÉÍCsoftware_term_hookðÄÑo·D
-software_term_hookªpÓ³êÄ¢È¢êÍC½àµÈ¢DGNUJ­Â«ÅÍC
-JXNvgÌweak definitionÉæèCsoftware_term_hookªpÓ³ê
-Ä¢È¢êÌlð0Æ·é±ÆÅC±êðÀ»Å«éDweak definitionÌ@
-\ð½È¢J­Â«ÅÍCsoftware_term_hookðK¸ÄÑo·±ÆÉ·éD
-
-±ÌÖÍCSÝbNóÔÅÄÎêé½ßCSÝbNóÔ©çÄ
-Ño·±ÆªÅ«È¢ÖðÄÎÈ¢æ¤ÉÀµÈ¯êÎÈçÈ¢D
-
-{Öð³À[vÅÀ·éÛÍCÈºÌ`®Æ·é±Æ(TECSÌp[TÌ
-§ÀÉí¹é½ßjD
+ターゲット依存部の終了処理を行う関数．この関数は，カーネル終了処理の最
+後に呼び出され，リターンしてはならない．プロセッサ・チップ・開発環境依
+存の終了処理を，それらの依存部に切り分けることも可能である．
+
+この関数では，最初に，atexitによって登録された関数とデストラクタを呼び
+出すことを意図しており，標準的には，software_term_hookを呼び出す．
+software_term_hookが用意されていない場合は，何もしない．GNU開発環境では，
+リンカスクリプト中のweak definitionにより，software_term_hookが用意され
+ていない場合の値を0とすることで，これを実現できる．weak definitionの機
+能を持たない開発環境では，software_term_hookを必ず呼び出すことにする．
+
+この関数は，全割込みロック状態で呼ばれるため，全割込みロック状態から呼
+び出すことができない関数を呼ばないように実装しなければならない．
+
+本関数を無限ループで実装する際は，以下の形式とすること(TECSのパーサの
+制限に合わせるため）．
 
 void
@@ -2093,5 +2022,5 @@
 	
 	/*
-	 * ^[QbgË¶Ì
+	 * ターゲット依存の処理
 	 */
 	
@@ -2103,164 +2032,163 @@
 
 
-6.9 J[làÌ`
-[jO
-
-6.9.1 rbg}bvT[`
-
-(6-9-1-1) OMIT_BITMAP_SEARCHiIvVj
-(6-9-1-2) uint_t bitmap_search(uint16_t bitmap)iIvVj
-
-^[QbgñË¶ÅCuint16_t^Ì®libitmapjÌ1ÌrbgÌàCÅ
-àºÊiEjÌàÌðT[`µC»ÌrbgÔðÔ·Öbitmap_searchðp
-ÓµÄ¢éD±±ÅCrbgÔÍÅºÊrbgð0ÆµCbitmapÉ0ðwèµ
-ÄÍÈçÈ¢àÌÆµÄ¢éD
-
-rbgT[`½ßðÂvZbTÅÍCbitmap_searchðCrbgT[`½ß
-ðg¤æ¤É«¼µ½ûªø¦ªÇ¢êª éD±Ìæ¤ÈêÉÍC^[
-QbgË¶ÅrbgT[`½ßðgÁ½bitmap_searchðè`µC
-OMIT_BITMAP_SEARCHð}Nè`·éD
-
-WCuÉrbgT[`½ßðp¢½ffsª éêCbitmap_searchð
-(ffs(bitmap) - 1)Éè`·éÆæ¢D
-
-(6-9-1-3) uint16_t PRIMAP_BIT(PRI pri)iIvVj
-
-rbgT[`½ßÌT[`ûüªtÈÇÌRÅCDæxÆrbgÆÌÎð
-ÏXµ½¢êÉÍCPRIMAP_BITð}Nè`·éD
-
-6.10 J[lÀÉÖ·é»Ì¼Ìè`
-
-6.10.1 ñ^XNReLXgpÌX^bNÌæ
+6.9 カーネル内部のチューニング
+
+6.9.1 ビットマップサーチ
+
+(6-9-1-1) OMIT_BITMAP_SEARCH（オプション）
+(6-9-1-2) uint_t bitmap_search(uint16_t bitmap)（オプション）
+
+ターゲット非依存部で，uint16_t型の整数値（bitmap）中の1のビットの内，最
+も下位（右）のものをサーチし，そのビット番号を返す関数bitmap_searchを用
+意している．ここで，ビット番号は最下位ビットを0とし，bitmapに0を指定し
+てはならないものとしている．
+
+ビットサーチ命令を持つプロセッサでは，bitmap_searchを，ビットサーチ命令
+を使うように書き直した方が効率が良い場合がある．このような場合には，ター
+ゲット依存部でビットサーチ命令を使ったbitmap_searchを定義し，
+OMIT_BITMAP_SEARCHをマクロ定義する．
+
+標準ライブラリにビットサーチ命令を用いたffsがある場合，bitmap_searchを
+(ffs(bitmap) - 1)に定義するとよい．
+
+(6-9-1-3) uint16_t PRIMAP_BIT(PRI pri)（オプション）
+
+ビットサーチ命令のサーチ方向が逆などの理由で，優先度とビットとの対応を
+変更したい場合には，PRIMAP_BITをマクロ定義する．
+
+6.10 カーネル実装に関するその他の定義
+
+6.10.1 非タスクコンテキスト用のスタック領域
 
 (6-10-1-1) DEFAULT_ISTKSZ
 
-DEF_ICSÉæèñ^XNReLXgpÌX^bNÌæªwè³êÈ¢êÌC
-ftHgÌX^bNÌæÌTCYD
-
-¦
-(6-10-1-2) DEFAULT_ISTKiIvVj
-
-DEF_ICSÉæèñ^XNReLXgpÌX^bNÌæªwè³êÈ¢êÌC
-ftHgÌX^bNÌæÌæªÔnD±Ì}Nªè`³êÈ¢êÉÍC
-TCYªDEFAULT_ISTKSZÌX^bNÌæªCzñÉæèmÛ³êéD
-
-(6-10-1-3) STK_T *TOPPERS_ISTKPT(STK_T *istk, SIZE istksz)iIvVj
-
-ñ^XNReLXgpÌX^bN|C^ÌúlðÛ·éÏiistkptj
-ðp¢éêÉC±ÌV{ÉCX^bNÌæÌæªÔniistkjÆX^b
-NÌæÌTCYiistkszj©çCX^bN|C^Ìúlðßé}Nð
-è`·éD
-
-6.10.2 óxÌè`
-
-(6-10-2-1) TOPPERS_EMPTY_LABEL(type, symbol)iIvVj
-
-NG[ðh®½ßÉCf[^^typeÌzñÅ éÏsymbolÉè`ð^
-¦é½ßÌ}ND^¦½è`ªQÆ³êé±ÆÍÈ¢½ßCÇÌæ¤Èè`
-ð^¦Äàæ¢D
-
-ftHgÅÍCsymbolðCvf^ªtypeÅTCYª0ÌzñÉè`µÄ¢éD
-TCYª0ÌzñªG[ÆÈçÈ¢RpCiGCCÍ±êÉYjðp¢é
-êÉÍC^[QbgË¶Åè`·éKvÍÈ¢D
-
-6.11 g[XO@\ÉÖ·éÝè
-
-SSPJ[lÌ\[XR[hÉÍCJ[lÌÀsg[XOðæ¾·é½ß
-Ì}NªßñÅ éDftHgÅÍC±êçÌ}NÍóÉè`³
-êÄg[XOÌæ¾ÍsíÈ¢ªC±êçÌ}NðKØÉè`·é±Æ
-Åg[XOÌæ¾ðs¤±ÆªÅ«éD
-
-6.11.1 æ¾Å«ég[XOÌíÞÆ}N
-
-æ¾Å«ég[XOÌíÞÆC»êðæ¾·é½ßÉè`·é}NÍ
-ÌÊèÅ éD
-
-(a) J[lÌ®ìJnÆI¹
-
-Ì}Nðè`·é±ÆÅCJ[lÌ®ìJnÆI¹Ìg[XO
-ðæ¾·é±ÆªÅ«éD
-
-	LOG_KER_ENTER		J[lª®ìðJn·é¼Oiú»Ì®¹ãj
-	LOG_KER_LEAVE		J[lÌI¹iext_kerjªÄÎê½¼ãiI¹
-						ÌÀsOj
-
-(b) PÊÌÀsJnÆI¹
-
-Ì}Nðè`·é±ÆÅCÝnhiINHjCÝT[rX[`
-iISRjCüúnhiCYCjCA[nhiALMjCCPUáOnh
-iEXCjC^XNáO[`iTEXjÌÀsJnOÆI¹ãÌg[X
-Oðæ¾·é±ÆªÅ«éD
-
-	LOG_<PÊª>_ENTER	PÊÌÀsJn¼O
-	LOG_<PÊª>_LEAVE	PÊÌI¹¼ã
-
-ÝnhÍCAvP[Vªo^µ½àÌÌÝðÎÛÆµCÝ
-T[rX[`ðÄÑo·½ßÉJ[làÉ¶¬³êéàÌÍÎÛÆµÈ
-¢D^XNÌÀsJnÆI¹ÍC¼Ìû@Åæ¾Å«é½ßC±Ìû@ÍpÓ
-µÄ¢È¢D
-
-È¨CÝnhÆCPUáOnhÌÀsJnÆI¹Ìg[XOæ¾
-ÍC^[QbgË¶ÅÀ·éKvª éDÚµ­ÍCu6.2 g[XO
-@\ÖÌÎvu6.6.1 ÝnhÌoüûvu6.7.2 CPUáOnh
-ÌoüûvÌßðQÆ·é±ÆD
-
-(c) ^XNóÔÌÏ»
-
-Ì}Nðè`·é±ÆÅC^XNóÔªÏ»µ½Ìg[XOðæ¾
-·é±ÆªÅ«éD½¾µCÀsóÔÆÀsÂ\óÔÌÔÌJÚÍC¼Ìû@
-Åæ¾Å«é½ßC±Ì}NÅÍæ¾Å«È¢D
-
-	LOG_TSKSTAT		^XNóÔÌÏ»
-
-(d) fBXpb`ÌÀsJnÆI¹
-
-Ì}Nðè`·é±ÆÅCfBXpb`ªÀsJn·éÆCI¹·é
-Ìg[XOðæ¾·é±ÆªÅ«éD
-
-	LOG_DSP_ENTER	fBXpb`ÌÀsJn
-	LOG_DSP_LEAVE	fBXpb`ÌI¹
-
-fBXpb`ÌÀsJnÍC^XNªÀsóÔ©çÀsÂ\óÔÉJÚ·é
-^C~OÅ é½ßCÀsÂ\óÔÖJÚ·é^XNÌTCBÖÌ|C^ðp
-[^Æ·éDtÉCfBXpb`ÌI¹ÍC^XNªÀsÂ\óÔ©ç
-ÀsóÔÉJÚ·é^C~OÅ é½ßCÀsóÔÖJÚ·é^XNÌTCBÖ
-Ì|C^ðp[^Æ·éD
-
-SSPJ[lÅÍCÀsÅ«é^XNªÈ­CJ[lªAChóÔÉÈéê
-ÉÍCfBXpb`ÌÉ¯ÜéD»Ì½ßCAChóÔÖÌJÚÆA
-ChóÔ©ç¼ÌóÔÖÌJÚÍC±Ì}NÅÍæ¾Å«È¢D
-
-È¨CfBXpb`ÌÀsJnÆI¹Ìg[XOæ¾ÍC^[QbgË
-¶ÅÀ·éKvª éDÚµ­ÍCÆu6.5.2 fBXpb`{ÌvÌßð
-QÆ·é±ÆD
-
-(e) T[rXR[ÌüûÆoû
-
-Ì}Nðè`·é±ÆÅCeT[rXR[ÌüûÆoûÌg[XO
-ðæ¾·é±ÆªÅ«éD
-
-	LOG_<T[rXR[Ìå¶\L>_ENTER		T[rXR[¼Ìüû
-	LOG_<T[rXR[Ìå¶\L>_LEAVE		T[rXR[¼Ìoû
-
-»ê¼êÌ}NÌ¼Ìâp[^ÌÚ×ÉÂ¢ÄÍCJ[lÌ\[XR[
-hðQÆ·é±ÆD
-
-6.12 J[lÀÌ^[QbgË¶Ì½ßÌl[Lq
-
-J[làÉÂ¶ÄgíêéÖâÏÈÇÌ¼ÌÅCIuWFNgt@C
-ÌV{\Éo^³êÄO©çQÆÅ«é¼ÌÍCC¾êxÅCæª
-ª"_kernel_"Ü½Í"_KERNEL_"Å é¼ÌÆµÈ¯êÎÈçÈ¢ªCSSPJ[l
-ÅÍC\[XR[hðRpNgÉÛ¿ÂÂ±êðÀ»·é½ßÉCl[
-Lqt@Cð±üµÄ¢éD
-
-ïÌIÉÍCl[·×«¼ÌðXgAbvµ½xxx_rename.defðpÓµC
-±Ìt@C©çc[iutils/genrenamejÉæèC¼Ìðl[·é½ß
-Ì}Nè`ðÜÞxxx_rename.hÆC»êçÌ}Nè`ðð·é½ßÌ
-xxx_unrename.hð¶¬·éDc[ÌN®û@ÍÌÊèÅ éD
+DEF_ICSにより非タスクコンテキスト用のスタック領域が指定されない場合の，
+デフォルトのスタック領域のサイズ．
+
+※
+(6-10-1-2) DEFAULT_ISTK（オプション）
+
+DEF_ICSにより非タスクコンテキスト用のスタック領域が指定されない場合の，
+デフォルトのスタック領域の先頭番地．このマクロが定義されない場合には，
+サイズがDEFAULT_ISTKSZのスタック領域が，配列により確保される．
+
+(6-10-1-3) STK_T *TOPPERS_ISTKPT(STK_T *istk, SIZE istksz)（オプション）
+
+非タスクコンテキスト用のスタックポインタの初期値を保持する変数（istkpt）
+を用いる場合に，このシンボルに，スタック領域の先頭番地（istk）とスタッ
+ク領域のサイズ（istksz）から，スタックポインタの初期値を求めるマクロを
+定義する．
+
+6.10.2 空ラベルの定義
+
+(6-10-2-1) TOPPERS_EMPTY_LABEL(type, symbol)（オプション）
+
+リンクエラーを防ぐために，データ型typeの配列である変数symbolに定義を与
+えるためのマクロ．与えた定義が参照されることはないため，どのような定義
+を与えてもよい．
+
+デフォルトでは，symbolを，要素型がtypeでサイズが0の配列に定義している．
+サイズが0の配列がエラーとならないコンパイラ（GCCはこれに該当）を用いる
+場合には，ターゲット依存部で定義する必要はない．
+
+6.11 トレースログ機能に関する設定
+
+SSPカーネルのソースコードには，カーネルの実行トレースログを取得するため
+のマクロ等が埋め込んである．デフォルトでは，これらのマクロは空に定義さ
+れてトレースログの取得は行わないが，これらのマクロを適切に定義すること
+でトレースログの取得を行うことができる．
+
+6.11.1 取得できるトレースログの種類とマクロ
+
+取得できるトレースログの種類と，それを取得するために定義するマクロは次
+の通りである．
+
+(a) カーネルの動作開始と終了
+
+次のマクロを定義することで，カーネルの動作開始時と終了時のトレースログ
+を取得することができる．
+
+	LOG_KER_ENTER		カーネルが動作を開始する直前（初期化の完了後）
+	LOG_KER_LEAVE		カーネルの終了（ext_ker）が呼ばれた直後（終了処
+						理の実行前）
+
+(b) 処理単位の実行開始と終了
+
+次のマクロを定義することで，割込みハンドラ（INH），割込みサービスルーチ
+ン（ISR），周期ハンドラ（CYC），アラームハンドラ（ALM），CPU例外ハンド
+ラ（EXC），タスク例外処理ルーチン（TEX）の実行開始前と終了後のトレース
+ログを取得することができる．
+
+	LOG_<処理単位略号>_ENTER	処理単位の実行開始直前
+	LOG_<処理単位略号>_LEAVE	処理単位の終了直後
+
+割込みハンドラは，アプリケーションが登録したもののみを対象とし，割込み
+サービスルーチンを呼び出すためにカーネル内に生成されるものは対象としな
+い．タスクの実行開始と終了は，他の方法で取得できるため，この方法は用意
+していない．
+
+なお，割込みハンドラとCPU例外ハンドラの実行開始と終了のトレースログ取得
+は，ターゲット依存部で実装する必要がある．詳しくは，「6.2 トレースログ
+機能への対応」「6.6.1 割込みハンドラの出入口処理」「6.7.2 CPU例外ハンド
+ラの出入口処理」の節を参照すること．
+
+(c) タスク状態の変化
+
+次のマクロを定義することで，タスク状態が変化した時のトレースログを取得
+することができる．ただし，実行状態と実行可能状態の間の遷移は，他の方法
+で取得できるため，このマクロでは取得できない．
+
+	LOG_TSKSTAT		タスク状態の変化
+
+(d) ディスパッチャの実行開始と終了
+
+次のマクロを定義することで，ディスパッチャが実行開始する時と，終了する
+時のトレースログを取得することができる．
+
+	LOG_DSP_ENTER	ディスパッチャの実行開始
+	LOG_DSP_LEAVE	ディスパッチャの終了
+
+ディスパッチャの実行開始は，タスクが実行状態から実行可能状態に遷移する
+タイミングであるため，実行可能状態へ遷移するタスクのTCBへのポインタをパ
+ラメータとする．逆に，ディスパッチャの終了は，タスクが実行可能状態から
+実行状態に遷移するタイミングであるため，実行状態へ遷移するタスクのTCBへ
+のポインタをパラメータとする．
+
+SSPカーネルでは，実行できるタスクがなく，カーネルがアイドル状態になる場
+合には，ディスパッチャの中に留まる．そのため，アイドル状態への遷移とア
+イドル状態から他の状態への遷移は，このマクロでは取得できない．
+
+なお，ディスパッチャの実行開始と終了のトレースログ取得は，ターゲット依
+存部で実装する必要がある．詳しくは，と「6.5.2 ディスパッチャ本体」の節を
+参照すること．
+
+(e) サービスコールの入口と出口
+
+次のマクロを定義することで，各サービスコールの入口と出口のトレースログ
+を取得することができる．
+
+	LOG_<サービスコールの大文字表記>_ENTER		サービスコール名の入口
+	LOG_<サービスコールの大文字表記>_LEAVE		サービスコール名の出口
+
+それぞれのマクロの名称やパラメータの詳細については，カーネルのソースコー
+ドを参照すること．
+
+6.12 カーネル実装のターゲット依存部のためのリネーム記述
+
+カーネル内部に閉じて使われる関数や変数などの名称で，オブジェクトファイ
+ルのシンボル表に登録されて外部から参照できる名称は，C言語レベルで，先頭
+が"_kernel_"または"_KERNEL_"である名称としなければならないが，SSPカーネ
+ルでは，ソースコードをコンパクトに保ちつつこれを実現するために，リネー
+ム記述ファイルを導入している．
+
+具体的には，リネームすべき名称をリストアップしたxxx_rename.defを用意し，
+このファイルからツール（utils/genrename）により，名称をリネームするため
+のマクロ定義を含むxxx_rename.hと，それらのマクロ定義を解除するための
+xxx_unrename.hを生成する．ツールの起動方法は次の通りである．
 
 	% genrename xxx
 
-xxx_rename.defÉÍCl[·×«¼Ìð1sÉ1ÂLq·éDxxxxÆ¢¤¼
-ÌªLq³êÄ¢éêCxxx_rename.hÉÍÌæ¤ÈLqª¶¬³êéD
+xxx_rename.defには，リネームすべき名称を1行に1つ記述する．xxxxという名
+称が記述されている場合，xxx_rename.hには次のような記述が生成される．
 
 #define xxxx				_kernel_xxxx
@@ -2269,5 +2197,5 @@
 #endif /* TOPPERS_LABEL_ASM */
 
-Ü½Cxxx_unrename.hÉÍÌæ¤ÈLqª¶¬³êéD
+また，xxx_unrename.hには次のような記述が生成される．
 
 #undef xxxx
@@ -2276,81 +2204,79 @@
 #endif /* TOPPERS_LABEL_ASM */
 
-xxx_rename.defÌÉÍC¼Ìl[LqðæèÞ½ßÉCuINCLUDE
-"yyy"vÜ½ÍuINCLUDE <yyy>vÆ¢¤LqðÜßé±ÆªÅ«éD±ÌLq
-ª³êÄ¢éêCxxx_rename.hÉÍu#include "yyy_rename.h"vÜ½Í
-u#include <yyy_rename.h>vÆ¢¤LqªCxxx_unrename.hÉÍu#include
-"yyy_unrename.h"vÜ½Íu#include <yyy_unrename.h>vÆ¢¤Lqª¶¬³
-êéD
-
-xxx_rename.defÌÌ"#"ÅnÜésÍRgÆµÄÇÝòÎ³êéDÜ½C
-ósà³³êéD
-
-J[lÌ^[QbgñË¶Ågíêé¼Ìðl[·é½ßÉCkernel
-fBNgÉCkernel_rename.defÆC»±©ç¶¬µ½kernel_rename.h¨
-æÑkernel_unrename.hªpÓ³êÄ¢éDkernel_rename.defÉÍC
-uINCLUDE "target"vÆ¢¤LqªÜÜêÄ¨èC^[QbgË¶Ìl[
-LqðæèÞæ¤ÉÈÁÄ¢éD^[QbgË¶Åè`µC^[Qbg
-ñË¶ÅQÆ³êé¼ÌÍC^[QbgË¶Ìl[LqÉÜßéD
-
-^[QbgË¶ÅÍC^[QbgË¶Ågíêé¼Ìðl[·é½ß
-ÉCtarget_rename.defÆC»±©ç¶¬µ½target_rename.h¨æÑ
-target_unrename.hðpÓ·éD^[QbgË¶©çvZbTE`bvEJ
-­Â«Ë¶ðØèª¯éêÉÍCtarget_rename.defÉINCLUDELqðüêC
-vZbTE`bvEJ­Â«Ë¶Ìl[LqðæèÞæ¤É·éD
-
-6.13 ^C}hCo
-
-^C}hCoÍCJ[lÉ^CeBbNðÊm·é½ßÌ^C}hC
-oÅ éD
-
-6.13.1 ^C}hCoÌt@C\¬
-
-^C}hCoðgÝÞ½ßÌÃIAPIðLqµ½VXeRtBM
-[
-Vt@CðCtarget_timer.cfgÉpÓ·éD±Ìt@CÉÍC^C}
-hCoðú»·é½ßÌú»[`ÌÇÁC^C}hCoðI¹³
-¹é½ßÌI¹[`ÌÇÁC^C}ÝÌ½ßÌÝnhÌ
-è`iÜ½ÍCÝT[rX[`ÌÇÁjC^C}ÝÌ½ßÌ
-ÝvCÌ®«ÌÝèÌÃIAPIÈÇðÜÞ±ÆÉÈéD
-
-^C}hCoðÄÑo·½ßÉKvÈè`ðÜÞwb_t@CðC
-target_timer.hÉpÓ·éDÜ½C^C}hCoÌÀt@Cð
-target_timer.cÉpÓ·éD
-
-^CeBbNÌÊmÉæès¤Ì½­ÍC^XNÌN®âÒ¿ððs
-¤àÌÅ é½ßC^C}ÝÌÝDæxÍCÝÌÅÅáÌDæ
-xÅ\ªÅ éD½¾µCüúnhâA[nhÌÀsJnxêª
-âèÉÈéêÉÍC^C}ÝÌÝDæxðæè¢lÉÝèµ½¢D
-»±ÅC^C}ÝÌÝDæxðÏX·éû@ðC^[QbgË¶Ì
-[U[Y}j
-AÉLÚ·×«Å éD
-
-6.13.2 ^C}Ìú»EI¹EÝ
+xxx_rename.defの中には，他のリネーム記述を取り込むために，「INCLUDE
+"yyy"」または「INCLUDE <yyy>」という記述を含めることができる．この記述
+がされている場合，xxx_rename.hには「#include "yyy_rename.h"」または
+「#include <yyy_rename.h>」という記述が，xxx_unrename.hには「#include
+"yyy_unrename.h"」または「#include <yyy_unrename.h>」という記述が生成さ
+れる．
+
+xxx_rename.defの中の"#"で始まる行はコメントとして読み飛ばされる．また，
+空行も無視される．
+
+カーネルのターゲット非依存部で使われる名称をリネームするために，kernel
+ディレクトリに，kernel_rename.defと，そこから生成したkernel_rename.hお
+よびkernel_unrename.hが用意されている．kernel_rename.defには，
+「INCLUDE "target"」という記述が含まれており，ターゲット依存部のリネー
+ム記述を取り込むようになっている．ターゲット依存部で定義し，ターゲット
+非依存部で参照される名称は，ターゲット依存部のリネーム記述に含める．
+
+ターゲット依存部では，ターゲット依存部で使われる名称をリネームするため
+に，target_rename.defと，そこから生成したtarget_rename.hおよび
+target_unrename.hを用意する．ターゲット依存部からプロセッサ・チップ・開
+発環境依存部を切り分ける場合には，target_rename.defにINCLUDE記述を入れ，
+プロセッサ・チップ・開発環境依存部のリネーム記述を取り込むようにする．
+
+6.13 タイマドライバ
+
+タイマドライバは，カーネルにタイムティックを通知するためのタイマドライ
+バである．
+
+6.13.1 タイマドライバのファイル構成
+
+タイマドライバを組み込むための静的APIを記述したシステムコンフィギュレー
+ションファイルを，target_timer.cfgに用意する．このファイルには，タイマ
+ドライバを初期化するための初期化ルーチンの追加，タイマドライバを終了さ
+せるための終了処理ルーチンの追加，タイマ割込みのための割込みハンドラの
+定義（または，割込みサービスルーチンの追加），タイマ割込みのための割込
+み要求ラインの属性の設定の静的APIなどを含むことになる．
+
+タイマドライバを呼び出すために必要な定義を含むヘッダファイルを，
+target_timer.hに用意する．また，タイマドライバの実装ファイルを
+target_timer.cに用意する．
+
+タイムティックの通知により行う処理の多くは，タスクの起動や待ち解除を行
+うものであるため，タイマ割込みの割込み優先度は，割込みの中で最低の優先
+度で十分である．ただし，周期ハンドラやアラームハンドラの実行開始遅れが
+問題になる場合には，タイマ割込みの割込み優先度をより高い値に設定したい．
+そこで，タイマ割込みの割込み優先度を変更する方法を，ターゲット依存部の
+ユーザーズマニュアルに記載すべきである．
+
+6.13.2 タイマの初期化・終了処理・割込み処理
 
 (6-13-2-1) void target_timer_initialize(intptr_t exinf)
 
-^C}ðú»µC^C}ÝðüúIÉ­¶³¹éÖD^C}ÝÌ
-üúÍCTIC_NUMEÆTIC_DENOÅwè³ê½ÔÆêv³¹éiu5.3 ^C
-eBbNÌè`vÌßðQÆjD
-
-±ÌÖÍCtarget_timer.cfgÉLq·éÃIAPIÉæèCú»[`Æ
-µÄJ[lÉo^·é±ÆðzèµÄ¢éD
+タイマを初期化し，タイマ割込みを周期的に発生させる関数．タイマ割込みの
+周期は，TIC_NUMEとTIC_DENOで指定された時間と一致させる（「5.3 タイム
+ティックの定義」の節を参照）．
+
+この関数は，target_timer.cfg中に記述する静的APIにより，初期化ルーチンと
+してカーネルに登録することを想定している．
 
 (6-13-2-2) void target_timer_terminate(intptr_t exinf)
 
-^C}Ì®ìðâ~³¹C^C}Ýð­¶µÈ¢æ¤É·éÖD
-
-±ÌÖÍCtarget_timer.cfgÉLq·éÃIAPIÉæèCI¹[`
-ÆµÄJ[lÉo^·é±ÆðzèµÄ¢éD
+タイマの動作を停止させ，タイマ割込みを発生しないようにする関数．
+
+この関数は，target_timer.cfg中に記述する静的APIにより，終了処理ルーチン
+としてカーネルに登録することを想定している．
 
 (6-13-2-3) void target_timer_handler(void)
-    Ü½Í void target_timer_isr(intptr_t exinf)
-
-^C}ÝÉæèN®³êéÝvODÝnhÆµÄ
-À»·éêÉÍtarget_timer_handlerCÝT[rX[`ÆµÄÀ»
-·éêÉÍtarget_timer_isrÌ¼ÌÆ·éD^[QbgñË¶Ì
-signal_timeðÄÑo·D
-
-target_timer_handlerÍCWIÉÍÌæ¤Éè`·éD
+    または void target_timer_isr(intptr_t exinf)
+
+タイマ割込みにより起動される割込み処理プログラム．割込みハンドラとして
+実現する場合にはtarget_timer_handler，割込みサービスルーチンとして実現
+する場合にはtarget_timer_isrの名称とする．ターゲット非依存部の
+signal_timeを呼び出す．
+
+target_timer_handlerは，標準的には次のように定義する．
 
 ----------------------------------------
@@ -2358,240 +2284,226 @@
 target_timer_handler(void)
 {
-	i_begin_int(<^C}ÝÌÝÔ>);
+	i_begin_int(<タイマ割込みの割込み番号>);
 	signal_time();
-	i_end_int(<^C}ÝÌÝÔ>);
+	i_end_int(<タイマ割込みの割込み番号>);
 }
 ----------------------------------------
 
-±ÌÖÍCtarget_timer.cfgÉLq·éÃIAPIÉæèCÝnhÜ
-½ÍÝT[rX[`ÆµÄJ[lÉo^·é±ÆðzèµÄ¢éD
-
-6.13.3 «\]¿pVXeÌQÆÌ½ßÌ@\
-
-«\]¿pVXeÌQÆ@\iget_utmjðT|[g·éêÉÍC^C
-}hCoÅCÈºÌf[^^âÖÈÇðpÓ·éD
+この関数は，target_timer.cfg中に記述する静的APIにより，割込みハンドラま
+たは割込みサービスルーチンとしてカーネルに登録することを想定している．
+
+6.13.3 性能評価用システム時刻の参照のための機能
+
+性能評価用システム時刻の参照機能（get_utm）をサポートする場合には，タイ
+マドライバで，以下のデータ型や関数などを用意する．
 
 (6-13-3-1) CLOCK
 
-^C}lÌà\»Ì½ßÌf[^^D
+タイマ値の内部表現のためのデータ型．
 
 (6-13-3-2) CLOCK target_timer_get_current(void)
 
-^C}Ì»ÝlðÇÝoµCà\»ÅÔ·ÖD^C}lÍCÔÌoßÆ
-ÆàÉÁ·é±ÆðzèµÄ¢éDn[hEFAÌ^C}ªC^C}lª¸
-­·éàÌÅ éêÉÍC±ÌÖàÅÁ·élÆÈéæ¤ÉÏ··éD
+タイマの現在値を読み出し，内部表現で返す関数．タイマ値は，時間の経過と
+ともに増加することを想定している．ハードウェアのタイマが，タイマ値が減
+少するものである場合には，この関数内で増加する値となるように変換する．
 
 (6-13-3-3) bool_t target_timer_probe_int(void)
 
-^C}Ývð`FbN·éÖD^C}Ýªv³êÄ¢éêÉ
-trueCv³êÄ¢È¢êÉfalseðÔ·D
+タイマ割込み要求をチェックする関数．タイマ割込みが要求されている場合に
+true，要求されていない場合にfalseを返す．
 
 (6-13-3-4) TO_USEC(clock)
 
-^C}lÌà\»ðC1ÊbPÊÉÏ··é½ßÌ}NiÜ½ÍÖjD
-targettimer_get_currentÅÇÝoµ½lðC^C}Ý­¶©çÌoßÔ
-iPÊ: 1ÊbjÉÏ··é½ßÉp¢éD
-
-7. RtBM
-[^Ýèt@CÌ^[QbgË¶
-
-7.1 Ýèt@CÆ^[QbgË¶ÌÊut¯
-
-SSPJ[lÌRtBM
-[^ÍCÝèt@CÌLqÉ]ÁÄt@CÌ
-¶¬¨æÑG[`FbNðs¤DRtBM
-[^ÌÝèt@CÉÍC
-ÈºÌ4Âª éD
-
-(a) ÃIAPIe[u
-
-ÃIAPIÌêÆCeÃIAPIÌp[^ÉÂ¢ÄLqµ½t@CDÃI
-APIðg£·éêÈOÍÏX·éKvªÈ¢½ßC^[QbgñË¶ÅpÓ
-µÄ¢éikernel/kernel_api.csvjD
-
-(b) læ¾V{e[u
-
-RtBM
-[^ÌpX1É¨¢ÄCp[^vZpC¾êt@CÉoÍ
-µClðß½¢V{iêÊÉÍ®jðLq·é½ßÌt@CD^[Qb
-gñË¶ÅÍC^[QbgÉË¶¹¸ÉKvÆÈéV{ðLqµ½t@
-CðpÓµÄ¢éikernel/kernel_def.csvjD
-
-^[QbgÉË¶µÄKvÆÈéV{ª éêÉÍCtargetfBNg
-Éu©ê½target_def.csvÉLq·éDtarget_def.csvÉLqµÄlð
-ßé±ÆªÅ«éV{ÍCkernel/kernel_int.h¨æÑ»±©çCN[
-h³êét@CÅè`³êÄ¢È¯êÎÈçÈ¢Dkernel_int.h©çÍC
-target_stddef.hCtarget_kernel.hCtarget_config.hðiÔÚIÉjCN[
-hµÄ¢é½ßC±êçÌt@C¨æÑ»±©çCN[h³êét@C
-Åè`³êé^[QbgË¶ÌV{ÍCtarget_def.csvÉLq·é±
-ÆªÅ«éD
-
-±±Ålðß½V{ÌlÍCRtBM
-[^ÌpX2¨æÑpX3Ì
-ev[gt@CÅQÆ·é±ÆªÅ«éD
-
-(c) pX2Ìev[gt@C
-
-RtBM
-[^ÌpX2ÍCev[gt@CÉ]ÁÄCJ[lÌ\
-¬Eú»t@Cikernel_cfg.cjC\¬Eú»wb_t@C
-ikernel_cfg.hjÈÇð¶¬·éD±Ìev[gt@CÍC^[Qbg
-ñË¶Æ^[QbgË¶ÉØèª¯Ä éªC¼Ìt@CÌ^[Qbg
-Ë¶ÆÍtÉC^[QbgË¶©ç^[QbgñË¶ðCN[h·
-é`ÉÈÁÄ¢éD
-
-ïÌIÉÍCtargetfBNgÉu©ê½target.tfÅCKvÈÏðè`µ
-½ãCev[gt@CÌ^[QbgñË¶ikernel/kernel.tfjðC
-N[h·éDkernel.tfÅÍCJ[lÌ^[QbgñË¶Ågp·éÏ
-è`ð¶¬·éDkernel.tfðCN[hµ½ãCtarget.tfÅÍCJ[
-lÌ^[QbgË¶Ågp·éÏè`ð¶¬·éDtarget.tf©çCv
-ZbTË¶C`bvË¶ðCJ­Â«Ë¶ðØèª¯Äàæ¢D
-
-(d) pX3Ìev[gt@C
-
-RtBM
-[^ÌpX3ÍCev[gt@CÉ]ÁÄCÃIAPIÌê
-Êè®p[^Ì`FbNðs¤D±Ìev[gt@CàC^[Qb
-gñË¶Æ^[QbgË¶ÉØèª¯Ä èC^[QbgË¶©ç^[
-QbgñË¶ðCN[h·é`ÉÈÁÄ¢éD
-
-ïÌIÉÍCtargetfBNgÉu©ê½target_check.tfÅCKvÈÏð
-è`µ½ãCev[gt@CÌ^[QbgñË¶
-ikernel/kernel_check.tfjðCN[h·éDkernel_check.tfÅÍCJ[
-lÌ^[QbgñË¶Åú»ubNÉoÍµ½êÊè®p[^
-Ì`FbNðs¤Dkernel_check.tfðCN[hµ½ãCtarget_check.tf
-ÅÍC^[QbgÉË¶·é`FbNðs¤Dtarget_check.tf©çCvZb
-TË¶C`bvË¶ðCJ­Â«Ë¶ðØèª¯Äàæ¢D
-
-È¨CRtBM
-[^ÌÚ×dlÆÝèt@CÌLqû@ÉÂ¢ÄÍC
-ÊrPDFt@CÌ`ÅzzµÄ¢éuTOPPERSV¢ãJ[lpRtBM
-
-[^dlv¨æÑuTOPPERSV¢ãJ[lpRtBM
-[^à }N
-vZbTdlvðQÆ·é±ÆD
-
-7.2 pX2Ìev[gt@CÌ^[QbgË¶
-
-ÈºÅÍCpX2Ìev[gt@CÌ^[QbgË¶ðLq·éãÅK
-vÈÉÂ¢Äà¾·éD
-
-7.2.1 ^[QbgñË¶ðCN[h·éOÉè`·×«Ï
-
-target.tf©çkernel.tfðCN[h·éOÉCÌÏðè`µÄ¨©È
-¯êÎÈçÈ¢D
-
-(7-2-1) INTNO_ATTISR_VALID		ATT_ISRÅgpÅ«éÝÔ
-(7-2-2) INHNO_ATTISR_VALID		INTNO_ATTISR_VALIDÉÎ·énhÔ
-(7-2-3) INHNO_DEFINH_VALID		DEF_INTÅgpÅ«éÝnhÔ
-(7-2-4) EXCNO_DEFEXC_VALID		DEF_EXCÅgpÅ«éCPUáOnhÔ
-(7-2-5) INTNO_CFGINT_VALID		CFG_INTÅgpÅ«éÝÔ
-(7-2-6) INTPRI_CFGINT_VALID		CFG_INTÅgpÅ«éÝDæx
-
-APIÅgpÅ«éÝÔ^ÝnhÔ^CPUáOnhÔ^
-ÝDæxÌXgðCeÏÉè`·éDINHNO_ATTISR_VALIDÉÍC
-INTNO_ATTISR_VALIDÉXgAbvµ½ÝÔÉÎ·éÝnh
-ÔÌXgðè`·éD
-
-(7-2-7) TARGET_TSKATRiIvVj		^[Qbgè`Ì^XN®«
-(7-2-8) TARGET_ISRATRiIvVj		^[Qbgè`ÌISR®«
-(7-2-9) TARGET_INHATRiIvVj		^[Qbgè`ÌÝnh®«
-(7-2-10) TARGET_INTATRiIvVj	^[Qbgè`ÌÝ®«
-(7-2-11) TARGET_EXCATRiIvVj	^[Qbgè`ÌCPUáOnh®«
-
-eIuWFNgÌ®«ðC^[Qbgè`Ég£·éêÉCY·éIuWF
-Ng®«ð¦·ÏÉCg£Égp·érbgÌ_aðè`·éD±êÉæ
-èCg£Égp·érbgªÝè³êÄ¢éêÉCG[ÉÈéÌðh®D
-
-(7-2-12) INTNO_FIX_KERNELiIvVj		J[lÇÉÅè³êÄ¢é
-											ÝÔ
-(7-2-13) INHNO_FIX_KERNELiIvVj		J[lÇÉÅè³êÄ¢é
-		 									ÝnhÔ
-(7-2-14) INHNO_FIX_NONKERNELiIvVj	J[lÇOÉÅè³êÄ¢é
-											ÝÔ
-(7-2-15) INHNO_FIX_NONKERNELiIvVj	J[lÇOÉÅè³êÄ¢é
-		 									ÝnhÔ
-
-J[lÇÜ½ÍJ[lÇOÉÅè³êÄ¢éÝª éêÉÍC
-»êçÌÝÔÆÝnhÔÌXgðCeÏÉè`·éD
-
-(7-2-16) USE_INHINIB_TABLEiIvVj
-
-OMIT_INITIALIZE_INTERRUPTðè`µ½ªCÝnhÌú»ÉKvÈî
-ñðkernel_cfg.cÉ¶¬µ½¢êÉÍC±ÌÏð1ÉÝè·éDïÌIÉÍC
-TNUM_INHNOCtnum_inhnoCinhinib_tableÌè`ÆCÝnhÌoüû
-ð¶¬·é½ßÌLqiINTHDR_ENTRY}NÌXgjªC^[Qbgñ
-Ë¶ÉæÁÄ¶¬³êéD
-
-(7-2-17) USE_INTINIB_TABLEiIvVj
-
-OMIT_INITIALIZE_INTERRUPTðè`µ½ªCÝvCÌú»ÉKvÈ
-îñðkernel_cfg.cÉ¶¬µ½¢êÉÍC±ÌÏð1ÉÝè·éDïÌIÉ
-ÍCTNUM_INTNOCtnum_intnoCintinib_tableÌè`ªC^[QbgñË¶É
-æÁÄ¶¬³êéD
-
-(7-2-18) TARGET_MIN_STKSZiIvVj
-
-^[Qbgè`ÅC^XNÌX^bNTCYÌÅ¬lðÝè·éêÉÍC±
-ÌÏðX^bNTCYÌÅ¬lÉè`·éD
-
-(7-2-19) CHECK_STKSZ_ALIGNiIvVj
-
-X^bNÌæÌTCYª élÌ{ÅÈ¯êÎÈçÈ¢êÉC±ÌÏð
-»ÌlÉè`·éD±ÌÏðè`·é±ÆÅCkernel.tfÉ¨¢ÄCX^bN
-ÌæÌTCYª³µ­È¢i±ÌÏÉè`µ½lÌ{ÅÈ¢jêÌG[
-ð`FbN·éæ¤ÉÈéD`FbNªKvÈ¢êÉÍC±ÌÏðè`µ
-È¢D
-
-7.2.2 ^[QbgñË¶Åè`³êéÏ
-
-kernel.tfÌÅÍÌÏªè`³êé½ßCkernel.tfðCN[hµ½
-ãCtarget.tfÌÅ±êçðQÆ·é±ÆªÅ«éD
-
-(7-2-1) INTNO[inhno]		inhnoðÎ·éintnoÉÏ··é½ßÌAzzñ
-(7-2-2) INHNO[intno]		intnoðÎ·éinhnoÉÏ··é½ßÌAzzñ
-
-7.3 pX3Ìev[gt@CÌ^[QbgË¶
-
-ÈºÅÍCpX3Ìev[gt@CÌ^[QbgË¶ðLq·éãÅK
-vÈÉÂ¢Äà¾·éD
-
-target_check.tf©çkernel_check.tfðCN[h·éOÉCKvÉ¶ÄC
-ÌÏðè`µÄ¨©È¯êÎÈçÈ¢D
-
-(7-3-1) CHECK_FUNC_ALIGNiIvVj@ÖÌACPÊ
-(7-3-2) CHECK_FUNC_NONNULLiIvVjÖÌñNULL`FbN
-(7-3-3) CHECK_STACK_ALIGNiIvVj	X^bNÌæÌACPÊ
-(7-3-4) CHECK_STACK_NONNULLiIvVjX^bNÌæÌñNULL`FbN
-(7-3-5) CHECK_MPF_ALIGNiIvVj	Åè·v[ÌæÌACPÊ
-(7-3-6) CHECK_MPF_NONNULLiIvVj	Åè·v[ÌæÌñNULL`FbN
-
-Ö^X^bNÌæ^Åè·v[ÌæÌæªÔnÌACgÌ
-`FbNðs¤êÉÍC»ê¼êCCHECK_FUNC_ALIGN^CHECK_STACK_ALIGN^
-CHECK_MPF_ALIGNðACPÊÉè`·éDÖ^X^bNÌæ^Åè·
-v[ÌæÌæªÔnªNULLÅÈ¢©Ì`FbNðs¤êÉÍC»ê¼ê
-CHECK_FUNC_NONNULL^CHECK_STACK_NONNULL^CHECK_MPF_NONNULLð1Éè`·éD
-`FbNªKvÈ¢êÉÍCY·éÏðè`µÈ¢D
-
-7.4 cfg1_out.cÌNÉKvÈX^uÌè`t@C
-
-RtBM
-[^ÉÖµÄ^[QbgË¶ÉpÓ·éKvª ét@CÆ
-µÄCÝèt@CÈOÉCcfg1_out.cðN·é½ßÉKvÈX^uÌè
-`t@Cª éD
-
-RtBM
-[^ÌpX1ÅÍCÃIAPIÌ®è®p[^ÌlðCR
-pCðp¢Äßé½ßÉCcfg1_out.cð¶¬·éD±êðRpCC
-NµÄIuWFNgt@Cð¶¬·éÛÉCX^[gAbvW
-[©
-çQÆ³êéV{Ìè`ð^¦éKvª éD
-
-±Ìè`ð^¦é½ßÉCcfg1_out.c©çC^[QbgË¶Ì
-target_cfg1_out.hðCN[hµÄ¢éDtarget_cfg1_out.hiÜ½ÍC»
-±©çCN[h³êét@CjÉÍCX^[gAbvW
-[©çQ
-Æ³êéV{ÌX^uÌè`ðÜßéDT^IÉÍCÈºÌæ¤Èè`ð
-ÜßéKvª éD
+タイマ値の内部表現を，1μ秒単位に変換するためのマクロ（または関数）．
+targettimer_get_currentで読み出した値を，タイマ割込み発生からの経過時間
+（単位: 1μ秒）に変換するために用いる．
+
+7. コンフィギュレータ設定ファイルのターゲット依存部
+
+7.1 設定ファイルとターゲット依存部の位置付け
+
+SSPカーネルのコンフィギュレータは，設定ファイルの記述に従ってファイルの
+生成およびエラーチェックを行う．コンフィギュレータの設定ファイルには，
+以下の4つがある．
+
+(a) 静的APIテーブル
+
+静的APIの一覧と，各静的APIのパラメータについて記述したファイル．静的
+APIを拡張する場合以外は変更する必要がないため，ターゲット非依存部で用意
+している（kernel/kernel_api.csv）．
+
+(b) 値取得シンボルテーブル
+
+コンフィギュレータのパス1において，パラメータ計算用C言語ファイルに出力
+し，値を求めたいシンボル（一般には式）を記述するためのファイル．ターゲッ
+ト非依存部では，ターゲットに依存せずに必要となるシンボルを記述したファ
+イルを用意している（kernel/kernel_def.csv）．
+
+ターゲットに依存して必要となるシンボルがある場合には，targetディレクト
+リに置かれたtarget_def.csv中に記述する．target_def.csv中に記述して値を
+求めることができるシンボルは，kernel/kernel_int.hおよびそこからインクルー
+ドされるファイルで定義されていなければならない．kernel_int.hからは，
+target_stddef.h，target_kernel.h，target_config.hを（間接的に）インクルー
+ドしているため，これらのファイルおよびそこからインクルードされるファイ
+ルで定義されるターゲット依存のシンボルは，target_def.csv中に記述するこ
+とができる．
+
+ここで値を求めたシンボルの値は，コンフィギュレータのパス2およびパス3の
+テンプレートファイル中で参照することができる．
+
+(c) パス2のテンプレートファイル
+
+コンフィギュレータのパス2は，テンプレートファイルに従って，カーネルの構
+成・初期化ファイル（kernel_cfg.c），構成・初期化ヘッダファイル
+（kernel_cfg.h）などを生成する．このテンプレートファイルは，ターゲット
+非依存部とターゲット依存部に切り分けてあるが，他のファイルのターゲット
+依存部とは逆に，ターゲット依存部からターゲット非依存部をインクルードす
+る形になっている．
+
+具体的には，targetディレクトリに置かれたtarget.tfで，必要な変数を定義し
+た後，テンプレートファイルのターゲット非依存部（kernel/kernel.tf）をイ
+ンクルードする．kernel.tfでは，カーネルのターゲット非依存部で使用する変
+数定義等を生成する．kernel.tfをインクルードした後，target.tfでは，カー
+ネルのターゲット依存部で使用する変数定義等を生成する．target.tfから，プ
+ロセッサ依存部，チップ依存部を，開発環境依存部を切り分けてもよい．
+
+(d) パス3のテンプレートファイル
+
+コンフィギュレータのパス3は，テンプレートファイルに従って，静的APIの一
+般定数式パラメータのチェックを行う．このテンプレートファイルも，ターゲッ
+ト非依存部とターゲット依存部に切り分けてあり，ターゲット依存部からター
+ゲット非依存部をインクルードする形になっている．
+
+具体的には，targetディレクトリに置かれたtarget_check.tfで，必要な変数を
+定義した後，テンプレートファイルのターゲット非依存部
+（kernel/kernel_check.tf）をインクルードする．kernel_check.tfでは，カー
+ネルのターゲット非依存部で初期化ブロックに出力した一般定数式パラメータ
+のチェックを行う．kernel_check.tfをインクルードした後，target_check.tf
+では，ターゲットに依存するチェックを行う．target_check.tfから，プロセッ
+サ依存部，チップ依存部を，開発環境依存部を切り分けてもよい．
+
+なお，コンフィギュレータの詳細仕様と設定ファイルの記述方法については，
+別途PDFファイルの形で配布している「TOPPERS新世代カーネル用コンフィギュ
+レータ仕様」および「TOPPERS新世代カーネル用コンフィギュレータ内蔵マクロ
+プロセッサ仕様」を参照すること．
+
+7.2 パス2のテンプレートファイルのターゲット依存部
+
+以下では，パス2のテンプレートファイルのターゲット依存部を記述する上で必
+要な事項について説明する．
+
+7.2.1 ターゲット非依存部をインクルードする前に定義すべき変数
+
+target.tfからkernel.tfをインクルードする前に，次の変数を定義しておかな
+ければならない．
+
+(7-2-1) INTNO_ATTISR_VALID		ATT_ISRで使用できる割込み番号
+(7-2-2) INHNO_ATTISR_VALID		INTNO_ATTISR_VALIDに対応する割込ハンドラ番号
+(7-2-3) INHNO_DEFINH_VALID		DEF_INTで使用できる割込みハンドラ番号
+(7-2-4) EXCNO_DEFEXC_VALID		DEF_EXCで使用できるCPU例外ハンドラ番号
+(7-2-5) INTNO_CFGINT_VALID		CFG_INTで使用できる割込み番号
+(7-2-6) INTPRI_CFGINT_VALID		CFG_INTで使用できる割込み優先度
+
+APIで使用できる割込み番号／割込みハンドラ番号／CPU例外ハンドラ番号／割
+込み優先度のリストを，各変数に定義する．INHNO_ATTISR_VALIDには，
+INTNO_ATTISR_VALIDにリストアップした割込み番号に対応する割込みハンドラ
+番号のリストを定義する．
+
+(7-2-7) TARGET_TSKATR（オプション）		ターゲット定義のタスク属性
+(7-2-8) TARGET_ISRATR（オプション）		ターゲット定義のISR属性
+(7-2-9) TARGET_INHATR（オプション）		ターゲット定義の割込みハンドラ属性
+(7-2-10) TARGET_INTATR（オプション）	ターゲット定義の割込み属性
+(7-2-11) TARGET_EXCATR（オプション）	ターゲット定義のCPU例外ハンドラ属性
+
+各オブジェクトの属性を，ターゲット定義に拡張する場合に，該当するオブジェ
+クト属性を示す変数に，拡張に使用するビットの論理和を定義する．これによ
+り，拡張に使用するビットが設定されている場合に，エラーになるのを防ぐ．
+
+(7-2-12) INTNO_FIX_KERNEL（オプション）		カーネル管理に固定されている
+											割込み番号
+(7-2-13) INHNO_FIX_KERNEL（オプション）		カーネル管理に固定されている
+		 									割込みハンドラ番号
+(7-2-14) INHNO_FIX_NONKERNEL（オプション）	カーネル管理外に固定されている
+											割込み番号
+(7-2-15) INHNO_FIX_NONKERNEL（オプション）	カーネル管理外に固定されている
+		 									割込みハンドラ番号
+
+カーネル管理またはカーネル管理外に固定されている割込みがある場合には，
+それらの割込み番号と割込みハンドラ番号のリストを，各変数に定義する．
+
+(7-2-16) USE_INHINIB_TABLE（オプション）
+
+OMIT_INITIALIZE_INTERRUPTを定義したが，割込みハンドラの初期化に必要な情
+報をkernel_cfg.cに生成したい場合には，この変数を1に設定する．具体的には，
+TNUM_INHNO，tnum_inhno，inhinib_tableの定義と，割込みハンドラ毎の出入口
+処理を生成するための記述（INTHDR_ENTRYマクロのリスト）が，ターゲット非
+依存部によって生成される．
+
+(7-2-17) USE_INTINIB_TABLE（オプション）
+
+OMIT_INITIALIZE_INTERRUPTを定義したが，割込み要求ラインの初期化に必要な
+情報をkernel_cfg.cに生成したい場合には，この変数を1に設定する．具体的に
+は，TNUM_INTNO，tnum_intno，intinib_tableの定義が，ターゲット非依存部に
+よって生成される．
+
+(7-2-18) TARGET_MIN_STKSZ（オプション）
+
+ターゲット定義で，タスクのスタックサイズの最小値を設定する場合には，こ
+の変数をスタックサイズの最小値に定義する．
+
+(7-2-19) CHECK_STKSZ_ALIGN（オプション）
+
+スタック領域のサイズがある値の倍数でなければならない場合に，この変数を
+その値に定義する．この変数を定義することで，kernel.tfにおいて，スタック
+領域のサイズが正しくない（この変数に定義した値の倍数でない）場合のエラー
+をチェックするようになる．チェックが必要ない場合には，この変数を定義し
+ない．
+
+7.2.2 ターゲット非依存部で定義される変数
+
+kernel.tfの中では次の変数が定義されるため，kernel.tfをインクルードした
+後，target.tfの中でこれらを参照することができる．
+
+(7-2-1) INTNO[inhno]		inhnoを対応するintnoに変換するための連想配列
+(7-2-2) INHNO[intno]		intnoを対応するinhnoに変換するための連想配列
+
+7.3 パス3のテンプレートファイルのターゲット依存部
+
+以下では，パス3のテンプレートファイルのターゲット依存部を記述する上で必
+要な事項について説明する．
+
+target_check.tfからkernel_check.tfをインクルードする前に，必要に応じて，
+次の変数を定義しておかなければならない．
+
+(7-3-1) CHECK_FUNC_ALIGN（オプション）　関数のアライン単位
+(7-3-2) CHECK_FUNC_NONNULL（オプション）関数の非NULLチェック
+(7-3-3) CHECK_STACK_ALIGN（オプション）	スタック領域のアライン単位
+(7-3-4) CHECK_STACK_NONNULL（オプション）スタック領域の非NULLチェック
+(7-3-5) CHECK_MPF_ALIGN（オプション）	固定長メモリプール領域のアライン単位
+(7-3-6) CHECK_MPF_NONNULL（オプション）	固定長メモリプール領域の非NULLチェック
+
+関数／スタック領域／固定長メモリプール領域の先頭番地のアラインメントの
+チェックを行う場合には，それぞれ，CHECK_FUNC_ALIGN／CHECK_STACK_ALIGN／
+CHECK_MPF_ALIGNをアライン単位に定義する．関数／スタック領域／固定長メモ
+リプール領域の先頭番地がNULLでないかのチェックを行う場合には，それぞれ
+CHECK_FUNC_NONNULL／CHECK_STACK_NONNULL／CHECK_MPF_NONNULLを1に定義する．
+チェックが必要ない場合には，該当する変数を定義しない．
+
+7.4 cfg1_out.cのリンクに必要なスタブの定義ファイル
+
+コンフィギュレータに関してターゲット依存に用意する必要があるファイルと
+して，設定ファイル以外に，cfg1_out.cをリンクするために必要なスタブの定
+義ファイルがある．
+
+コンフィギュレータのパス1では，静的APIの整数定数式パラメータの値をCコン
+パイラを用いて求めるために，cfg1_out.cを生成する．これをコンパイル，リ
+ンクしてオブジェクトファイルを生成する際に，スタートアップモジュールか
+ら参照されるシンボルの定義を与える必要がある．
+
+この定義を与えるために，cfg1_out.cから，ターゲット依存部の
+target_cfg1_out.hをインクルードしている．target_cfg1_out.h（または，そ
+こからインクルードされるファイル）には，スタートアップモジュールから参
+照されるシンボルのスタブの定義を含める．典型的には，以下のような定義を
+含める必要がある．
 
 ----------------------------------------
@@ -2614,521 +2526,503 @@
 
 
-8. VXeT[rXÌ^[QbgË¶
-
-8.1 VXeT[rXÌ^[QbgË¶
-
-VA|[gâVXeO^XNÖAÌèÈÇCVXeT[rXÌ
-\¬ðè·é½ßÌè`ðtarget_syssvc.hÜ½Í»±©çCN[h³ê
-ét@CivZbTE`bvEJ­Â«Ë¶ÅpÓ³êéwb_t@C
-ÈÇjÉÜßéD
-
-È¨CTOPPERSgÝR|[lgVXeª±ü³êéÆC±Ìt@CÌ
-àeÍR|[lgLqt@CÉLq³êé±ÆÉÈèC±Ìt@CÍ
-³­ÈéiÜ½ÍCåÉk¬³êéj©ÝÅ éD
-
-8.2  VXeO@\Ì^[QbgË¶è`
-
-VXeO@\ðgp·éêÅCX^[gAbvW
-[ÅbssZNV
-ÌNAðÈªµÄ¢éêÉÍCsyslog_logmaskÆsyslog_lowmask_notð
-0Éú»·éR[hðÇÁ·éD±êÍCVXeO@\ªú»³êéO
-ÉoÍ³ê½OîñðCáxoÍ@\ðp¢ÄoÍ·é½ßÅ éD
-
-^[QbgË¶Åñ·×«VXeO@\Ì½ßÌè`ÍÌÊèÅ 
-éD
+8. システムサービス等のターゲット依存部
+
+8.1 システムサービスのターゲット依存部
+
+シリアルポート数やシステムログタスク関連の定数など，システムサービスの
+構成を決定するための定義をtarget_syssvc.hまたはそこからインクルードされ
+るファイル（プロセッサ・チップ・開発環境依存部で用意されるヘッダファイ
+ルなど）に含める．
+
+なお，TOPPERS組込みコンポーネントシステムが導入されると，このファイルの
+内容はコンポーネント記述ファイルに記述されることになり，このファイルは
+無くなる（または，大幅に縮小される）見込みである．
+
+8.2  システムログ機能のターゲット依存定義
+
+システムログ機能を使用する場合で，スタートアップモジュールでbssセクショ
+ンのクリアを省略している場合には，syslog_logmaskとsyslog_lowmask_notを
+0に初期化するコードを追加する．これは，システムログ機能が初期化される前
+に出力されたログ情報を，低レベル出力機能を用いて出力するためである．
+
+ターゲット依存部で提供すべきシステムログ機能のための定義は次の通りであ
+る．
 
 (8-2-1)  TCNT_SYSLOG_BUFFER
 
-VXeO@\ÌOobt@ÌTCYðè`·é}NDè`µÈ¢ê
-ÌftHglÍ32D
+システムログ機能のログバッファのサイズを定義するマクロ．定義しない場合
+のデフォルト値は32．
 
 (8-2-2)  void target_fput_log(char c)
 
-VXeOÌáxoÍÌ½ßÌ¶oÍÖD^[QbgË¶Ìû@ÅC
-¶cð\¦/oÍ/Û¶·éD
-
-±ÌÖÍCGggÉÀµÈ¯êÎÈçÈ¢D±ÌÖàÅr¼§
-äªKvÈêÉÍCSILðp¢ÄSÝbNóÔÉ·é±ÆDÜ½CS
-ÝbNóÔÅÄÎêéêª é½ßCSÝbNóÔ©çÄÑo·
-±ÆªÅ«È¢ÖðÄÎÈ¢æ¤ÉÀµÈ¯êÎÈçÈ¢D
-
-áxoÍðVA|[goRÅs¤êÅCVAC^tF[Xh
-CoÆ|[gð¤pµÈ¢±Æª]Üµ¢ªC|[gª«èÈ¢½ßÉâ
-Þð¦¸¤p·éêÉÍC¼Òª£µÈ¢æ¤ÉÓªKvÅ éDïÌ
-IÉÍC¼Òª¯¶ÝèÅVAI/OfoCXðg¤æ¤ÉµCVAC
-^tF[XhCoÌ®ìÉáxoÍªsíêÄà·µx¦È¢æ¤É
-Ýv·éDÜ½CáxoÍª®ìJnãÉVAC^tF[XhC
-oªVAI/OfoCXðú»·éÆC¶»¯ªN±éÂ\«ª é½ßC
-¤p·é|[gÍCáxoÍ@\¤Åú»µCVAC^tF[X
-hCoÅÍú»µÈ¢æ¤É·éÆæ¢D
-
-È¨C±ÌÖÌ{ÌðCÇÌt@CÉLq·é©ªâèÉÈéDVXe
-T[rXÌ^[QbgË¶ÉÍCWÅÍCÖè`ðLq·é½ßÌt@
-CðpÓµÄ¢È¢D^[QbgË¶ÅpÓµÄàæ¢ªCáOIÉCJ[
-lÀÌ^[QbgË¶W
-[itarget_config.cjÉLqµÄàæ¢D
-±ÌêCtarget_fput_logðCl[Lqitarget_rename.defÈÇjÉÜ
-ßÄÍÈçÈ¢D
-
-8.3  O^XNÌ^[QbgË¶è`
-
-^[QbgË¶Åñ·×«O^XNÌ½ßÌè`ÍÌÊèÅ éD±
-êçÌè`ÍCtarget_syssvc.hÜ½Í»±©çCN[h³êét@CÉ
-ÜßéD
-
-(8-3-1)  LOGTASK_PRIORITYiIvVj
-
-O^XNÌDæxðè`·é}NDè`µÈ¢êÌftHglÍ3D
-
-(8-3-2)  LOGTASK_STACK_SIZEiIvVj
-
-O^XNÌX^bNTCYðè`·é}NDè`µÈ¢êÌftHg
-lÍ1024D
-
-(8-3-3)  LOGTASK_PORTIDiIvVj
-
-O^XNÌoÍæÌVA|[gÔDè`µÈ¢êÌftHglÍ1D
-
-(8-3-4)  LOGTASK_INTERVALiIvVj
-
-O^XNÌ®ìÔuiPÊÍ~bjDè`µÈ¢êÌftHglÍ10D
-
-(8-3-5)  LOGTASK_FLUSH_WAITiIvVj
-
-OoÍðÒ¿í¹éÉ¨¢ÄC^XNðÒ½¹éPÊÆÈéÔiP
-ÊÍ~bjDè`µÈ¢êÌftHglÍ1D
-
-8.4 VAC^tF[XhCoÌ^[QbgË¶
-
-^[QbgË¶Åñ·×«VAC^tF[XhCoÌ½ßÌè`
-ÍÌÊèÅ éD±êçÌè`ÍCÊÉwèªÈ¢ÀèCtarget_serial.hÜ
-½Í»±©çCN[h³êét@CÉÜßCKvÈRtBM
-[V
-îñðtarget_serial.cfgÉLq·éDÖÌÀÌªKvÈêÉÍC
-target_serial.cÌt@CðpÓ·éD
-
-VAC^tF[XhCoÌÅC^[QbgÌVAI/OfoCXÉ
-Ë¶·éªðCVAI/OfoCXhCoÆÄÔDVAI/OfoCX
-hCoÍC¨¨æ»CITRONfoCXhCoÝvKChCÌPDICÉ
-·éDPDICÉ·ét@CÅC¼ÌVXeÉà¤ÊÉg¦éÂ\«ª 
-éêÉÍCpdicfBNgÉu­D
-
-8.4.1 ÏCf[^^CÇÖ
+システムログの低レベル出力のための文字出力関数．ターゲット依存の方法で，
+文字cを表示/出力/保存する．
+
+この関数は，リエントラントに実装しなければならない．この関数内で排他制
+御が必要な場合には，SILを用いて全割込みロック状態にすること．また，全割
+込みロック状態で呼ばれる場合があるため，全割込みロック状態から呼び出す
+ことができない関数を呼ばないように実装しなければならない．
+
+低レベル出力をシリアルポート経由で行う場合で，シリアルインタフェースド
+ライバとポートを共用しないことが望ましいが，ポート数が足りないためにや
+むをえず共用する場合には，両者が競合しないように注意が必要である．具体
+的には，両者が同じ設定でシリアルI/Oデバイスを使うようにし，シリアルイン
+タフェースドライバの動作中に低レベル出力が行われても差し支えないように
+設計する．また，低レベル出力が動作開始後にシリアルインタフェースドライ
+バがシリアルI/Oデバイスを初期化すると，文字化けが起こる可能性があるため，
+共用するポートは，低レベル出力機能側で初期化し，シリアルインタフェース
+ドライバでは初期化しないようにするとよい．
+
+なお，この関数の本体を，どのファイルに記述するかが問題になる．システム
+サービスのターゲット依存部には，標準では，関数定義を記述するためのファ
+イルを用意していない．ターゲット依存で用意してもよいが，例外的に，カー
+ネル実装のターゲット依存モジュール（target_config.c）に記述してもよい．
+この場合，target_fput_logを，リネーム記述（target_rename.defなど）に含
+めてはならない．
+
+8.3  ログタスクのターゲット依存定義
+
+ターゲット依存部で提供すべきログタスクのための定義は次の通りである．こ
+れらの定義は，target_syssvc.hまたはそこからインクルードされるファイルに
+含める．
+
+(8-3-1)  LOGTASK_PRIORITY（オプション）
+
+ログタスクの優先度を定義するマクロ．定義しない場合のデフォルト値は3．
+
+(8-3-2)  LOGTASK_STACK_SIZE（オプション）
+
+ログタスクのスタックサイズを定義するマクロ．定義しない場合のデフォルト
+値は1024．
+
+(8-3-3)  LOGTASK_PORTID（オプション）
+
+ログタスクの出力先のシリアルポート番号．定義しない場合のデフォルト値は1．
+
+(8-3-4)  LOGTASK_INTERVAL（オプション）
+
+ログタスクの動作間隔（単位はミリ秒）．定義しない場合のデフォルト値は10．
+
+(8-3-5)  LOGTASK_FLUSH_WAIT（オプション）
+
+ログ出力を待ち合わせる処理において，タスクを待たせる単位となる時間（単
+位はミリ秒）．定義しない場合のデフォルト値は1．
+
+8.4 シリアルインタフェースドライバのターゲット依存部
+
+ターゲット依存部で提供すべきシリアルインタフェースドライバのための定義
+は次の通りである．これらの定義は，別に指定がない限り，target_serial.hま
+たはそこからインクルードされるファイルに含め，必要なコンフィギュレーショ
+ン情報をtarget_serial.cfgに記述する．関数の実体が必要な場合には，
+target_serial.c等のファイルを用意する．
+
+シリアルインタフェースドライバの中で，ターゲットのシリアルI/Oデバイスに
+依存する部分を，シリアルI/Oデバイスドライバと呼ぶ．シリアルI/Oデバイス
+ドライバは，おおよそ，ITRONデバイスドライバ設計ガイドラインのPDICに相当
+する．PDICに相当するファイルで，他のシステムにも共通に使える可能性があ
+る場合には，pdicディレクトリに置く．
+
+8.4.1 変数，データ型，管理関数
 
 (8-4-1) TNUM_PORT
 
-VAC^tF[XhCoªT|[g·éVA|[gðè`·é
-}ND±Ì}NÌè`ÍCtarget_syssvc.hÜ½Í»±©çCN[h³
-êét@CÉÜßéD
-
-(8-4-2) void sio_initialize(intptr_t exinf)iIvVj
-
-VAI/OfoCXhCoÌú»Dtarget_serial.cfgÉC±ÌÖ
-ðú»[`ÆµÄo^·éÃIAPIðÜßéD
-
-(8-4-3) void sio_terminate(intptr_t exinf)iIvVj
-
-VAI/OfoCXhCoÌI¹Dtarget_serial.cfgÉC±ÌÖð
-I¹[`ÆµÄo^·éÃIAPIðÜßéD
+シリアルインタフェースドライバがサポートするシリアルポート数を定義する
+マクロ．このマクロの定義は，target_syssvc.hまたはそこからインクルードさ
+れるファイルに含める．
+
+(8-4-2) void sio_initialize(intptr_t exinf)（オプション）
+
+シリアルI/Oデバイスドライバの初期化処理．target_serial.cfgに，この関数
+を初期化ルーチンとして登録する静的APIを含める．
+
+(8-4-3) void sio_terminate(intptr_t exinf)（オプション）
+
+シリアルI/Oデバイスドライバの終了処理．target_serial.cfgに，この関数を
+終了処理ルーチンとして登録する静的APIを含める．
 
 (8-4-4) void sio_isr(intptr_t exinf)
 
-VAI/OfoCXÌÝT[rX[`Dtarget_serial.cfgÉC±Ì
-ÖðÝT[rX[`ÆµÄo^·éÃIAPIðÜßéDÜ½C»ÌÃ
-IAPIÉKvÈVAI/OfoCXÌÝÔÈÇÍCtarget_serial.hÅ}
-Nè`·éDÝT[rX[`ÅÍÈ­CÝnhÆ·é±Æ
-àÅ«éD
+シリアルI/Oデバイスの割込みサービスルーチン．target_serial.cfgに，この
+関数を割込みサービスルーチンとして登録する静的APIを含める．また，その静
+的APIに必要なシリアルI/Oデバイスの割込み番号などは，target_serial.hでマ
+クロ定義する．割込みサービスルーチンではなく，割込みハンドラとすること
+もできる．
 
 (8-4-5) SIOPCB
 
-VAI/O|[gÇubNÌf[^^itarget_serial.hÉÍCf[^^
-Ìé¾¾¯ÜÜêÄ¢êÎæ¢jD
-
-(8-4-6) SIO_RDY_SNDÆSIO_RDY_RCV
-
-MÂ\R[obNÌ¯ÊÔðSIO_RDY_SNDÉCóMÊmR[obNÌ¯
-ÊÔðSIO_RDY_RCVÉ}Nè`·éDR[obNÌÖ~^ÂðsÈ¤T[
-rXR[isio_ena_cbrÆsio_dis_cbrjÅp¢éD
-
-8.4.2 foCXT[rX[`
-
-ÈºÌfoCXT[r[`ÍCi­È­ÆàjVAI/O|[g©çÌ
-Ýª}XN³ê½óÔÅÄÑo³êéDÜ½C^XNReLXgCñ^
-XNReLXgÌ¢¸êÅÄÑo³êéêà éi¢¸êÅÄÑo³êÄ
-à®ì·éæ¤ÉµÈ¯êÎÈçÈ¢jD
+シリアルI/Oポート管理ブロックのデータ型（target_serial.hには，データ型
+の宣言だけ含まれていればよい）．
+
+(8-4-6) SIO_RDY_SNDとSIO_RDY_RCV
+
+送信可能コールバックの識別番号をSIO_RDY_SNDに，受信通知コールバックの識
+別番号をSIO_RDY_RCVにマクロ定義する．コールバックの禁止／許可を行なうサー
+ビスコール（sio_ena_cbrとsio_dis_cbr）で用いる．
+
+8.4.2 デバイスサービスルーチン
+
+以下のデバイスサービルルーチンは，（少なくとも）シリアルI/Oポートからの
+割込みがマスクされた状態で呼び出される．また，タスクコンテキスト，非タ
+スクコンテキストのいずれで呼び出される場合もある（いずれで呼び出されて
+も動作するようにしなければならない）．
 
 (8-4-2-1) SIOPCB *sio_opn_por(ID siopid, intptr_t exinf)
 
-siopidÅwè³êéVAI/O|[gðI[v·éÖDexinfÍVA
-I/O|[gÉÎ·ég£îñÅCR[obNðÄÔÉ|[gðæÊ·é½
-ßÉn·D
+siopidで指定されるシリアルI/Oポートをオープンする関数．exinfはシリアル
+I/Oポートに対する拡張情報で，コールバックを呼ぶ時にポートを区別するた
+めに渡す．
 
 (8-4-2-2) void sio_cls_por(SIOPCB *siopcb)
 
-siopcbÅwè³êéVAI/O|[gðN[Y·éÖD
+siopcbで指定されるシリアルI/Oポートをクローズする関数．
 
 (8-4-2-3) bool_t sio_snd_chr(SIOPCB *siopcb, char c)
 
-siopcbÅwè³êéVAI/O|[gÉCcÅ¦³êé¶ðM·éÖD
-¶ðMWX^Éüê½êÉÍtrueðCOÉMµ½¶ÌMªIíÁ
-Ä¢È¢½ßÉC¶ðMWX^ÉüêçêÈ©Á½êÉÍfalseðÔ·D
+siopcbで指定されるシリアルI/Oポートに，cで示される文字を送信する関数．
+文字を送信レジスタに入れた場合にはtrueを，前に送信した文字の送信が終わっ
+ていないために，文字を送信レジスタに入れられなかった場合にはfalseを返す．
 
 (8-4-2-4) int_t sio_rcv_chr(SIOPCB *siopcb)
 
-siopcbÅwè³êéVAI/O|[g©ç¶ðÇÞÖD¶ðóMµÄ¢
-½êCÇñ¾¶ÌR[hÍ³ÌlÆµÄÔµC¶ðóMµÄ¢È¢ê
-ÉÍ-1ðÔ·D
+siopcbで指定されるシリアルI/Oポートから文字を読む関数．文字を受信してい
+た場合，読んだ文字のコードは正の値として返し，文字を受信していない場合
+には-1を返す．
 
 (8-4-2-5) void sio_ena_cbr(SIOPCB *siopcb, uint_t cbrtn)
 
-siopcbÅwè³êéVAI/O|[g©çÌCcbrtnÅwè³êéR[ob
-NðÂ·éDcbrtnÉÍCSIO_RDY_SND©SIO_RDY_RCVðwèÅ«éD
+siopcbで指定されるシリアルI/Oポートからの，cbrtnで指定されるコールバッ
+クを許可する．cbrtnには，SIO_RDY_SNDかSIO_RDY_RCVを指定できる．
 
 (8-4-2-6) void sio_dis_cbr(SIOPCB *siopcb, uint_t cbrtn)
 
-siopcbÅwè³êéVAI/O|[g©çÌCcbrtnÅwè³êéR[ob
-NðÖ~·éDcbrtnÉÍCSIO_RDY_SND©SIO_RDY_RCVðwèÅ«éD
-
-8.4.3 R[obN[`
-
-^[QbgË¶ÍCKvÈ^C~OÅCVAC^tF[XhCo
-Ì^[QbgñË¶ÉÜÜêéÈºÌR[obN[`ðÄÑoÑ¾³
-È¯êÎÈçÈ¢D½¾µC»ê¼êÌR[obNªÖ~³êÄ¢éÍC
-R[obN[`ðÄÑoµÄÍÈçÈ¢D
-
-R[obN[`ÍCi­È­ÆàjVAI/O|[g©çÌÝªÖ
-~³ê½óÔÅCñ^XNReLXgÅÄÑo·DexinfÉÍCVAI/O
-|[gÌI[vÉwè³ê½g£îñðn·D
+siopcbで指定されるシリアルI/Oポートからの，cbrtnで指定されるコールバッ
+クを禁止する．cbrtnには，SIO_RDY_SNDかSIO_RDY_RCVを指定できる．
+
+8.4.3 コールバックルーチン
+
+ターゲット依存部は，必要なタイミングで，シリアルインタフェースドライバ
+のターゲット非依存部に含まれる以下のコールバックルーチンを呼び出びださ
+なければならない．ただし，それぞれのコールバックが禁止されている時は，
+コールバックルーチンを呼び出してはならない．
+
+コールバックルーチンは，（少なくとも）シリアルI/Oポートからの割込みが禁
+止された状態で，非タスクコンテキストで呼び出す．exinfには，シリアルI/O
+ポートのオープン時に指定された拡張情報を渡す．
 
 (8-4-3-1) void sio_irdy_snd(intptr_t exinf)
 
-MÂ\R[obN[`DVAI/O|[gÉÎµÄ¶ªMÅ«é
-óÔÉÈÁ½êÉÄÑo·DVAC^tF[XhCoÍC±ÌR[
-obN[`ÌÅCsio_snd_chrðÄÑoµÄÌ¶ðM·é©C
-M·×«¶ªÈ¢êÉÍMÂ\R[obNðÖ~·éD
+送信可能コールバックルーチン．シリアルI/Oポートに対して文字が送信できる
+状態になった場合に呼び出す．シリアルインタフェースドライバは，このコー
+ルバックルーチンの中で，sio_snd_chrを呼び出して次の文字を送信するか，送
+信すべき文字がない場合には送信可能コールバックを禁止する．
 
 (8-4-3-2) void sio_irdy_rcv(intptr_t exinf)
 
-óMÊmR[obN[`DVAI/O|[g©ç¶ðóMµ½êÉ
-ÄÑo·DVAC^tF[XhCoÍC±ÌR[obN[`Ì
-ÅCK¸sio_rcv_chrðÄÑoµÄóMµ½¶ðæèo·D
-
-8.5 J[lN®bZ[WÌoÍÌ^[QbgË¶è`
-
-^[QbgË¶Åñ·×«J[lN®bZ[WÌoÍÌ½ßÌè`Í
-ÌÊèÅ éD
+受信通知コールバックルーチン．シリアルI/Oポートから文字を受信した場合に
+呼び出す．シリアルインタフェースドライバは，このコールバックルーチンの
+中で，必ずsio_rcv_chrを呼び出して受信した文字を取り出す．
+
+8.5 カーネル起動メッセージの出力のターゲット依存定義
+
+ターゲット依存部で提供すべきカーネル起動メッセージの出力のための定義は
+次の通りである．
 
 (8-5-1) TARGET_NAME
 
-^[QbgÌ¼ÌÉè`·éD
-
-(8-5-2) TARGET_COPYRIGHTiIvVj
-
-J[lN®bZ[WÉC^[QbgË¶Ìì \¦ðÇÁ·é½ßÌ
-}NDftHgÅÍC^[QbgË¶Ìì \¦ðÇÁµÈ¢D
-
-8.6 TvvOÆeXgvOÌ^[QbgË¶è`
-
-^[QbgË¶Åñ·×«TvvO¨æÑeXgvOÌ
-½ßÌè`ÍÌÊèÅ éD±êçÌè`ÍCtarget_test.hiÜ½Í»êç
-©çCN[h³êét@CjÉÜßéD
-
-(8-6-1) STACK_SIZEiIvVj
-
-TvvO¨æÑeXgvOÌ^XNÌX^bNTCYðè`
-·é}NDè`µÈ¢êÌftHglÍ4096DftHgÝèÅÍ
-ªs«·éêâCV~
-[VÂ«ÈÇÅå«¢X^bNÌæªKv
-ÈêÉÍC^[QbgË¶Å±Ì}NðÝè·éX^bNTCYÉè`
-·éD
-
-(8-6-2) CPUEXC1iIvVj
-
-TvvO¨æÑeXgvOÅp¢éCPUáOÌCPUáOnh
-Ôðè`·é}ND±Ì}Nðè`µÈ¢êCCPUáOnhðg
-¤ªªTvvO©çO³êéDCPUáOnhÌeXgð·é
-eXgvOÍRpCÅ«È¢D
-
-(8-6-3) RAISE_CPU_EXCEPTIONiIvVj
-
-CPUEXC1Éè`µ½CPUáOð­¶³¹éC¾êÌvOðè`·é}ND
-CPUEXC1ðè`µ½êÉÍK¸è`µÈ¯êÎÈçÈ¢D
-
-(8-6-4) CANNOT_RETURN_CPUEXCiIvVj
-
-^[QbgVXeÌ§ñÉæèCCPUáOnh©ç^[µ½ãÉC^
-XNÌÀsðp±Å«È¢êÉè`·é}ND±Ì}Nðè`·éÆC
-CPUáOnhÌeXgð·éeXgvO©çCCPUáOnh©ç
-^[µ½ãÌªO³êéDTvvOÌYªÍ³µ­
-®ìµÈ¢D
-
-(8-6-5) TASK_PORTIDiIvVj
-
-TvvOÉ¨¢ÄCR}h¶ðÇÝÞVA|[gÔð
-è`·é}NDè`µÈ¢êÌftHglÍ1D
-
-(8-6-6) LOOP_REFiIvVj
-
-TvvOÉ¨¢ÄCvZbTÌ¬xðvª·é½ßÌ[vñ
-ðè`·é}NDè`µÈ¢êÌftHglÍ1000000DftHgÝè
-ÅÍClªå«ß¬ÄvªÉÔª©©è·¬éêâClª¬³ß¬Ävª
-ÊªÀèµÈ¢êÉC^[QbgË¶Å±Ì}NðÝè·é[vñ
-Éè`·éD
-
-(8-6-7) MEASURE_TWICEiIvVj
-
-TvvOÉ¨¢ÄCvZbTÌ¬xð2xvª·éêÉè`·é
-}NDV~
-[VÂ«ÈÇvZbTÌ¬xªÏ®·éÂ«ÅC1xÌ
-vªÅÍvªÊªÀèµÈ¢êÉè`·éD
-
-(8-6-8) TASK_LOOPiIvVj
-
-TvvOÉ¨¢ÄCvZbTÌ¬xðvª¹¸ÉC^XNàÅÌ
-[vñðÅè·éêÉC[vñðè`·é}ND[vSÌÌÀ
-sÔª0.4böxÉÈéæ¤È[vñðC±Ì}NÉè`·éD
-
-9. »Ì¼
-
-9.1 hL
-g
-
-^[QbgË¶Ì[U[Y}j
-AðCtarget_user.txtÉpÓ·éDv
-ZbTE`bvEJ­Â«Ë¶Ì[U[Y}j
-AðØèª¯Äàæ
-¢µCt@Cªå«­ÈéêÉÍ¡Ìt@CÉªµÄæ¢ªC»Ì
-êÉÍCtarget_user.txtÉ»êçÌt@C¼ðLq·é±ÆD
-
-^[QbgË¶Ì[U[Y}j
-AÉÍC­È­ÆàÌæ¤Èàeð
-Lq·é±Æª]Üµ¢D
-
-(1) ÎµÄ¢é^[QbgVXeÌíÞE\¬Co[WÔ
-	E^[Qbgn[hEFAi{[hjÌ¼ÌÆÎµÄ¢é\¬
-	E^[QbgªÌ
-	E^[QbgñË¶Ìo[WÔ
-	EvZbTC`bvCJ­Â«Ë¶Ì\¬Æo[WÔ
-	Egp·éPDICÆo[WÔ
-
-(2) gp·éJ­Â«Æ®ìØµ½ðio[WCIvVj
-	E¾êniRpCCAZuCJj
-	EfobOÂ«
-
-(3) ^[Qbgè`ÌKè
-
-(3-1) f[^^ÉÖ·éKè
-	Eint_t^Clong_t^ÌTCY
-	Echar^Cint_least8_t^Cvoid *^Cintptr_t^ÌTCY
-	Eint8_t^Cuint8_t^Cint64_t^Cuint64_t^Cint128_t^C
-	@uint128_t^Cfloat32_t^Cdouble64_t^ÌT|[gÌL³
-
-(3-2) ÝÉÖ·éKè
-	EÝnhÔÆÝÔÌÄC¼ÒÌÎ
-	EÝDæxÌiKiTMIN_INTPRIÌlj
-	Edis_intÆena_intÌT|[gÌL³C»Ì§À
-	ECFG_INTÌ§ÀÆg£i^[Qbgè`ÅgpÅ«éÝ®«j
-	ETOPPERSWÝf©çÌ»Ì¼ÌíE
-
-(3-3) J[lÇOÌÝÉÖ·éKè
-	ETMIN_INTPRIÍÅè©ÝèÅ«é©C»ÌÝèû@
-	ENMIÈOÉJ[lÇOÌÝðÝ¯é©iÝ¯çêéæ¤É·é©j
-	EJ[lÇOÌÝÌÝèû@
-	EJ[lÇOÌÝÉÎµÄDEF_INHCCFG_INTðT|[g·é©
-	EJ[lÇOÌÝnhªÀsJn³êéÌVXeóÔÆ
-	@ReLXg
-	EÝnhÌI¹Ésíêé
-	EJ[lÇOÌÝnhÌLqû@
-	EJ[làÌÝoüûÅN±éÂ\«Ì éCPUáO
-
-(3-4) CPUáOÉÖ·éKè
-	ECPUáOnhÔÌÄ
-	EÝDæx}XNðTMIN_INTPRIÆ¯¶©»êæèà¢lÉÝèµÄ
-	@¢éóÔÅ­¶µ½CPUáOðCJ[lÇOÌCPUáOÆµ¤©
-	EJ[làÌCPUáOoüûÅN±éÂ\«Ì éCPUáO
-
-(3-5) «\]¿pVXeÌQÆÉÖ·éKè
-	Eget_utmÌT|[gÌL³C»Ì§À
-
-(3-6) »Ì¼
-	E»Ì¼Ì§À
-	E»Ì¼Ìg£@\
-
-(4) J[lÌN®^I¹ÉÖ·éîñ
-	EpÓµÄ¢éX^[gAbvW
-[Ìàe
-	EX^[gAbvW
-[©çhardware_init_hookðÄÑoµÄ¢éê
-	@ÉÍChardware_init_hookðAvP[VÅpÓ·éêÌì¬
-	@û@â§ÀÈÇ
-	EJ[lðI¹µ½ãÌU¢
-
-(5) }bv
-	EftHgÌ}bvC»ÌÏXû@
-
-(6) ^C}hCoÖAÌîñ
-	E^CeBbNÌüúC»ÌÏXû@
-	Egp·é\[Xi^C}j
-	E^C}ÝÌÝDæxÌÏXû@
-	EI[o^C}ÝÌÝDæxÌÏXû@
-
-(7) VAC^tF[XhCoÌîñ
-	Egp·é\[XiSIORg[j
-	EÊMp[^i{[[gCrbgCpeBÌL³CXgbvrbgj
-
-(8) VXe\zè
-
-(9) ^[QbgVXeÅLÌÓ
-	E^XNReLXgÉÜÜêéWX^CÜÜêÈ¢WX^
-
-(10) ÞÌ^[QbgÉ|[eBO·éJ­Òü¯ÌQlîñ
-
-(11) fBNg\¬Et@C\¬
-
-(12) o[Wð
-
-Ü½CKvÉ¶ÄC^[QbgË¶ÌÝvðCtarget_design.txtÉp
-Ó·éDvZbTE`bvEJ­Â«Ë¶ÉÖ·éÝvðØèª¯Ä
-àæ¢µCt@Cªå«­ÈéêÉÍ¡Ìt@CÉªµÄàæ¢ªC
-»ÌêÉÍCtarget_design.txtÉ»êçÌt@C¼ðLq·é±ÆD
-
-9.2 pbP[WLqt@C
-
-[XpbP[WiÂÊpbP[W¨æÑÈÕpbP[Wjðì¬·é½ß
-ÉCpbP[WÉÜßét@CðLqµ½pbP[WLqt@CðpÓ·
-éDpbP[WLqt@CÌ¼ÌÍCÂÊpbP[WpðMANIFESTCÈÕpb
-P[WpðE_PACKAGEÆ·éD
-
-á¦ÎCarch/arm_gccfBNgÉu©ê½MANIFESTt@Cðp¢ÄÂÊ
-pbP[Wðì¬·éêÉÍCÌR}hðÀs·éD
+ターゲットの名称に定義する．
+
+(8-5-2) TARGET_COPYRIGHT（オプション）
+
+カーネル起動メッセージに，ターゲット依存部の著作権表示を追加するための
+マクロ．デフォルトでは，ターゲット依存部の著作権表示を追加しない．
+
+8.6 サンプルプログラムとテストプログラムのターゲット依存定義
+
+ターゲット依存部で提供すべきサンプルプログラムおよびテストプログラムの
+ための定義は次の通りである．これらの定義は，target_test.h（またはそれら
+からインクルードされるファイル）に含める．
+
+(8-6-1) STACK_SIZE（オプション）
+
+サンプルプログラムおよびテストプログラムのタスクのスタックサイズを定義
+するマクロ．定義しない場合のデフォルト値は4096．デフォルト設定ではメモ
+リが不足する場合や，シミュレーション環境などで大きいスタック領域が必要
+な場合には，ターゲット依存部でこのマクロを設定するスタックサイズに定義
+する．
+
+(8-6-2) CPUEXC1（オプション）
+
+サンプルプログラムおよびテストプログラムで用いるCPU例外のCPU例外ハンド
+ラ番号を定義するマクロ．このマクロを定義しない場合，CPU例外ハンドラを使
+う部分がサンプルプログラムから除外される．CPU例外ハンドラのテストをする
+テストプログラムはコンパイルできない．
+
+(8-6-3) RAISE_CPU_EXCEPTION（オプション）
+
+CPUEXC1に定義したCPU例外を発生させるC言語のプログラムを定義するマクロ．
+CPUEXC1を定義した場合には必ず定義しなければならない．
+
+(8-6-4) CANNOT_RETURN_CPUEXC（オプション）
+
+ターゲットシステムの制約により，CPU例外ハンドラからリターンした後に，タ
+スクの実行を継続できない場合に定義するマクロ．このマクロを定義すると，
+CPU例外ハンドラのテストをするテストプログラムから，CPU例外ハンドラから
+リターンした後の処理が除外される．サンプルプログラムの該当部分は正しく
+動作しない．
+
+(8-6-5) TASK_PORTID（オプション）
+
+サンプルプログラムにおいて，コマンド文字を読み込むシリアルポート番号を
+定義するマクロ．定義しない場合のデフォルト値は1．
+
+(8-6-6) LOOP_REF（オプション）
+
+サンプルプログラムにおいて，プロセッサの速度を計測するためのループ回数
+を定義するマクロ．定義しない場合のデフォルト値は1000000．デフォルト設定
+では，値が大き過ぎて計測に時間がかかりすぎる場合や，値が小さ過ぎて計測
+結果が安定しない場合に，ターゲット依存部でこのマクロを設定するループ回
+数に定義する．
+
+(8-6-7) MEASURE_TWICE（オプション）
+
+サンプルプログラムにおいて，プロセッサの速度を2度計測する場合に定義する
+マクロ．シミュレーション環境などプロセッサの速度が変動する環境で，1度の
+計測では計測結果が安定しない場合に定義する．
+
+(8-6-8) TASK_LOOP（オプション）
+
+サンプルプログラムにおいて，プロセッサの速度を計測せずに，タスク内での
+ループ回数を固定する場合に，ループ回数を定義するマクロ．ループ全体の実
+行時間が0.4秒程度になるようなループ回数を，このマクロに定義する．
+
+9. その他
+
+9.1 ドキュメント
+
+ターゲット依存部のユーザーズマニュアルを，target_user.txtに用意する．プ
+ロセッサ・チップ・開発環境依存部のユーザーズマニュアルを切り分けてもよ
+いし，ファイルが大きくなる場合には複数のファイルに分割してよいが，その
+場合には，target_user.txt中にそれらのファイル名を記述すること．
+
+ターゲット依存部のユーザーズマニュアルには，少なくとも次のような内容を
+記述することが望ましい．
+
+(1) 対応しているターゲットシステムの種類・構成，バージョン番号
+	・ターゲットハードウェア（ボード等）の名称と対応している構成
+	・ターゲット略称
+	・ターゲット非依存部のバージョン番号
+	・プロセッサ，チップ，開発環境依存部の構成とバージョン番号
+	・使用するPDICとバージョン番号
+
+(2) 使用する開発環境と動作検証した条件（バージョン，オプション等）
+	・言語処理系（コンパイラ，アセンブラ，リンカ等）
+	・デバッグ環境
+
+(3) ターゲット定義事項の規定
+
+(3-1) データ型に関する規定
+	・int_t型，long_t型のサイズ
+	・char型，int_least8_t型，void *型，intptr_t型のサイズ
+	・int8_t型，uint8_t型，int64_t型，uint64_t型，int128_t型，
+	　uint128_t型，float32_t型，double64_t型のサポートの有無
+
+(3-2) 割込み処理に関する規定
+	・割込みハンドラ番号と割込み番号の割当て，両者の対応
+	・割込み優先度の段階数（TMIN_INTPRIの値）
+	・dis_intとena_intのサポートの有無，その制限事項
+	・CFG_INTの制限事項と拡張（ターゲット定義で使用できる割込み属性）
+	・TOPPERS標準割込み処理モデルからのその他の逸脱
+
+(3-3) カーネル管理外の割込みに関する規定
+	・TMIN_INTPRIは固定か設定できるか，その設定方法
+	・NMI以外にカーネル管理外の割込みを設けるか（設けられるようにするか）
+	・カーネル管理外の割込みの設定方法
+	・カーネル管理外の割込みに対してDEF_INH，CFG_INTをサポートするか
+	・カーネル管理外の割込みハンドラが実行開始される時のシステム状態と
+	　コンテキスト
+	・割込みハンドラの終了時に行われる処理
+	・カーネル管理外の割込みハンドラの記述方法
+	・カーネル内の割込み出入口処理で起こる可能性のあるCPU例外
+
+(3-4) CPU例外処理に関する規定
+	・CPU例外ハンドラ番号の割当て
+	・割込み優先度マスクをTMIN_INTPRIと同じかそれよりも高い値に設定して
+	　いる状態で発生したCPU例外を，カーネル管理外のCPU例外と扱うか
+	・カーネル内のCPU例外出入口処理で起こる可能性のあるCPU例外
+
+(3-5) 性能評価用システム時刻の参照に関する規定
+	・get_utmのサポートの有無，その制限事項
+
+(3-6) その他
+	・その他の制限事項
+	・その他の拡張機能
+
+(4) カーネルの起動／終了処理に関する情報
+	・用意しているスタートアップモジュールの処理内容
+	・スタートアップモジュールからhardware_init_hookを呼び出している場
+	　合には，hardware_init_hookをアプリケーションで用意する場合の作成
+	　方法や制限事項など
+	・カーネルを終了した後の振舞い
+
+(5) メモリマップ
+	・デフォルトのメモリマップ，その変更方法
+
+(6) タイマドライバ関連の情報
+	・タイムティックの周期，その変更方法
+	・使用するリソース（タイマ）
+	・タイマ割込みの割込み優先度の変更方法
+	・オーバランタイマ割込みの割込み優先度の変更方法
+
+(7) シリアルインタフェースドライバの情報
+	・使用するリソース（SIOコントローラ）
+	・通信パラメータ（ボーレート，ビット数，パリティの有無，ストップビット）
+
+(8) システム構築手順
+
+(9) ターゲットシステム固有の注意事項
+	・タスクコンテキストに含まれるレジスタ，含まれないレジスタ
+
+(10) 類似のターゲットにポーティングする開発者向けの参考情報
+
+(11) ディレクトリ構成・ファイル構成
+
+(12) バージョン履歴
+
+また，必要に応じて，ターゲット依存部の設計メモを，target_design.txtに用
+意する．プロセッサ・チップ・開発環境依存部に関する設計メモを切り分けて
+もよいし，ファイルが大きくなる場合には複数のファイルに分割してもよいが，
+その場合には，target_design.txt中にそれらのファイル名を記述すること．
+
+9.2 パッケージ記述ファイル
+
+リリースパッケージ（個別パッケージおよび簡易パッケージ）を作成するため
+に，パッケージに含めるファイルを記述したパッケージ記述ファイルを用意す
+る．パッケージ記述ファイルの名称は，個別パッケージ用をMANIFEST，簡易パッ
+ケージ用をE_PACKAGEとする．
+
+例えば，arch/arm_gccディレクトリに置かれたMANIFESTファイルを用いて個別
+パッケージを作成する場合には，次のコマンドを実行する．
 
 	% utils/makerelease arch/arm_gcc/MANIFEST
 
-±ÌR}hÉæèCRELEASE/ssp_arch_arm_gcc-<o[WÔ>.tar.gzª
-ì¬³êéDÜ½Ctarget/at91skyeye_gccfBNgÉu©ê½E_PACKAGE
-t@Cðp¢ÄÈÕpbP[Wðì¬·éêÉÍCÌR}hðÀs·
-éD
+このコマンドにより，RELEASE/ssp_arch_arm_gcc-<バージョン番号>.tar.gzが
+作成される．また，target/at91skyeye_gccディレクトリに置かれたE_PACKAGE
+ファイルを用いて簡易パッケージを作成する場合には，次のコマンドを実行す
+る．
 
 	% utils/makerelease target/cq_starm_gcc/E_PACKAGE
 
-±ÌR}hÉæèCRELEASE/ssp_cq_starm_gcc_gcc-<o[WÔ>.tar.gz
-ªì¬³êéiRELEASEfBNgªÈ¢êÉÍCfBNgªìçê
-éjD
-
-È¨Cmakerelease[eBeBÍCSSPJ[lÌ\[Xt@Cªu©ê
-½fBNgªCsspÆ¢¤¼ÌÅ é±Æð¼èµÄ¢éiÙÈé¼ÌÌê
-ÅàpbP[WÍì¬Å«éªCpbP[WðWJµ½ÉWJ³êéfB
-NgªsspÅÈ­ÈéjDÜ½CWÌtarR}hªGNU tarÅ é±Æ
-i³mÉÍCzIvVÉÎµÄ¢é±ÆjðzèµÄ¢éD
-
-pbP[WLqt@CÉÍCpbP[WÉÜßét@C¼ðCpbP[W
-Lqt@Cªu©ê½fBNg©çÌÎpX¼ÅC1sÉ1Â¸ÂLq
-·éDÜ½CKvÉ¶ÄCÈºÌfBNeBuðÜßéD
-
-(a) E_PACKAGE <ÈÕpbP[W¼>
-
-ÈÕpbP[W¼ðwè·éDÈÕpbP[WLqt@CiE_PACKAGEjÌæ
-ªÉLq·éDÈÕpbP[W¼ÍCssp_<^[QbgªÌ>Æ·éDá¦ÎC
-^[QbgªÌªcq_starm_gccÌêÉÍCssp_cq_starm_gccÆÈéDÂ
-ÊpbP[WÆæÊ·é½ßÉCÈÕpbP[WÌt@C¼ÉÍ"target"ð
-ÜßÈ¢D
-
-(b) PACKAGE <ÂÊpbP[W¼>
-
-ÂÊpbP[W¼ðwè·éDÂÊpbP[WLqt@CiMANIFESTjÌæ
-ªÉLq·éDÜ½C»±©çCN[h³êéet@CÌæªÉàLq
-µC»êðCN[hµÄ¢éÂÊpbP[W¼ðwè·éD^[QbgË
-¶ÌÂÊpbP[W¼ÍCÂÊpbP[WLqt@Cªu©ê½fBN
-gÌÎpXÌ"/"ð"_"Éu«·¦½¶ñðC"ssp_"ÌãÉÂÈ°½à
-ÌÆ·éDá¦ÎCÂÊpbP[WLqt@Cªarch/arm_gcc/MANIFESTÌê
-ÉÍCssp_arch_arm_gccÆÈéD
-
-(c) VERSION <o[WÔ>
-
-pbP[WÌo[WÔðwè·éDÈÕpbP[WLqt@C¨æÑ
-ÂÊpbP[WLqt@CÌÉLq·éDÈÕpbP[WÉ¨¢ÄCo[
-WÔðpbP[W»µ½útÆ·éêÉÍCpbP[WÔÌãíè
-É%dateÆLq·éD
-
-o[WÔÌt^û@ÉÂ¢ÄÍCuTOPPERS/SSPJ[l [U[Y}
-j
-AvÌu2.2 ÈÕpbP[Wv¨æÑu2.3 ÂÊpbP[WvÌßðQ
-Æ·é±ÆD
-
-(d) INCLUDE <t@C¼>
-
-ÊÌpbP[WLqt@CðCN[h·éDÈÕpbP[WLqt@C
-©çÍCÂÊpbP[WLqt@CÌÝðCN[h·éÌð´¥Æ·
-éDÂÊpbP[WLqt@C©çCN[h³êét@CÅwè³
-êéÂÊpbP[W¼ÍC·×ÄêvµÄ¢È¯êÎÈçÈ¢D
-
-
-10. t@X
-
-10.1 ^[QbgË¶Ìt@Cê
-
-WIÈ^[QbgË¶Ìt@C\¬ÍÌÊèÅ éD
-
-Makefile.target		MakefileÌ^[QbgË¶iQÍjD
-
-target_stddef.h		TOPPERS¤Êè`it_stddef.hjÌ^[QbgË¶iR
-					ÍjDAvP[VÆJ[lÌ¼û©çCN[
-					h³êéD
-target_sil.h		VXeC^tF[XCisil.hjÌ^[QbgË
-					¶iSÍjDAvP[VÆJ[lÌ¼û©ç
-					CN[h³êéD
-target_kernel.h		J[lAPIikernel.hjÌ^[QbgË¶iTÍjD
-					AvP[VÆJ[lÌ¼û©çCN[h³
-					êéD
-
-target_config.h		J[lÀÌ^[QbgË¶Ìwb_t@CiU
-					ÍjDJ[lÌÝ©çCN[h³êéD
-target_config.c		J[lÀÌ^[QbgË¶ÌC¾êÅLq³êé
-					ªiUÍCIvVjD
-target_support.S	J[lÀÌ^[QbgË¶ÌAZu¾êÅL
-					q³êéªiUÍCIvVjD
-target_rename.def	J[lÀÌ^[QbgË¶Ì½ßÌl[Lq
-					i6.12ßjD
-target_rename.h		target_rename.def©ç¶¬³êét@Ci6.12ßjD
-target_unrename.h	target_rename.def©ç¶¬³êét@Ci6.12ßjD
-target_timer.cfg	^C}hCoÌVXeRtBM
-[Vt@
-					Ci6.13ßjD
-target_timer.h		^C}hCoÌwb_t@Ci6.13ßjDJ[l
-					ÌÝ©çCN[h³êéD
-target_timer.c		^C}hCoÌÀt@Ci6.13ßCIvVjD
-VXeªÌ.h		^[QbgÌn[hEFA¹iÝnhÔâ
-					CPUáOnhÔCfoCXWX^ÌÔnÈÇjÌ
-					è`ðÜÞwb_t@CDAvP[VÆJ[l
-					Ì¼û©çCN[h³êéiUÍCIvVjD
-
-target_def.csv		RtBM
-[^Ìlæ¾V{e[uÌ^[Qb
-					gË¶iVÍCIvVjD
-target.tf			RtBM
-[^ÌpX2Ìev[gt@CÌ
-					^[QbgË¶i7.2ßjD
-target_check.tf		RtBM
-[^ÌpX3Ìev[gt@Ci7.3
-					ßjD
-target_cfg1_out.h	cfg1_out.cÌNÉKvÈX^uÌè`t@Ci7.4
-					ßjD
-
-target_syssvc.h		VXeT[rXÌ^[QbgË¶è`i8.0ßjD
-target_serial.cfg	VAhCoÌVXeRtBM
-[Vt@
-					Ci8.3ßjD
-target_serial.h		VAhCoÌwb_t@Ci8.3ßjDVA
-					hCoÌÝ©çCN[h³êéD
-target_serial.c		VAhCoÌÀt@Ci8.3ßCIvVjD
-target_test.h		eXgvOÌ^[QbgË¶è`i8.4ßjD
-
-target_user.txt		[U[Y}j
-Ai9.1ßj
-target_design.txt	Ývi9.1ßCIvVj
-MANIFEST			ÂÊpbP[WÉÜßét@CÌXgi9.2ßCIv
-					Vj
-E_PACKAGE			ÈÕpbP[WÉÜßét@CÌXgi9.2ßCIv
-					Vj
-
-Èã
+このコマンドにより，RELEASE/ssp_cq_starm_gcc_gcc-<バージョン番号>.tar.gz
+が作成される（RELEASEディレクトリがない場合には，ディレクトリが作られ
+る）．
+
+なお，makereleaseユーティリティは，SSPカーネルのソースファイルが置かれ
+たディレクトリが，sspという名称であることを仮定している（異なる名称の場
+合でもパッケージは作成できるが，パッケージを展開した時に展開されるディ
+レクトリがsspでなくなる）．また，標準のtarコマンドがGNU tarであること
+（正確には，zオプションに対応していること）を想定している．
+
+パッケージ記述ファイルには，パッケージに含めるファイル名を，パッケージ
+記述ファイルが置かれたディレクトリからの相対パス名で，1行に1つずつ記述
+する．また，必要に応じて，以下のディレクティブを含める．
+
+(a) E_PACKAGE <簡易パッケージ名>
+
+簡易パッケージ名を指定する．簡易パッケージ記述ファイル（E_PACKAGE）の先
+頭に記述する．簡易パッケージ名は，ssp_<ターゲット略称>とする．例えば，
+ターゲット略称がcq_starm_gccの場合には，ssp_cq_starm_gccとなる．個
+別パッケージと区別するために，簡易パッケージのファイル名には"target"を
+含めない．
+
+(b) PACKAGE <個別パッケージ名>
+
+個別パッケージ名を指定する．個別パッケージ記述ファイル（MANIFEST）の先
+頭に記述する．また，そこからインクルードされる各ファイルの先頭にも記述
+し，それをインクルードしている個別パッケージ名を指定する．ターゲット依
+存部の個別パッケージ名は，個別パッケージ記述ファイルが置かれたディレク
+トリの相対パス中の"/"を"_"に置き換えた文字列を，"ssp_"の後につなげたも
+のとする．例えば，個別パッケージ記述ファイルがarch/arm_gcc/MANIFESTの場
+合には，ssp_arch_arm_gccとなる．
+
+(c) VERSION <バージョン番号>
+
+パッケージのバージョン番号を指定する．簡易パッケージ記述ファイルおよび
+個別パッケージ記述ファイルの中に記述する．簡易パッケージにおいて，バー
+ジョン番号をパッケージ化した日付とする場合には，パッケージ番号の代わり
+に%dateと記述する．
+
+バージョン番号の付与方法については，「TOPPERS/SSPカーネル ユーザーズマ
+ニュアル」の「2.2 簡易パッケージ」および「2.3 個別パッケージ」の節を参
+照すること．
+
+(d) INCLUDE <ファイル名>
+
+別のパッケージ記述ファイルをインクルードする．簡易パッケージ記述ファイ
+ルからは，個別パッケージ記述ファイルのみをインクルードするのを原則とす
+る．個別パッケージ記述ファイルからインクルードされるファイル中で指定さ
+れる個別パッケージ名は，すべて一致していなければならない．
+
+
+10. リファレンス
+
+10.1 ターゲット依存部のファイル一覧
+
+標準的なターゲット依存部のファイル構成は次の通りである．
+
+Makefile.target		Makefileのターゲット依存部（２章）．
+
+target_stddef.h		TOPPERS共通定義（t_stddef.h）のターゲット依存部（３
+					章）．アプリケーションとカーネルの両方からインクルー
+					ドされる．
+target_sil.h		システムインタフェースレイヤ（sil.h）のターゲット依
+					存部（４章）．アプリケーションとカーネルの両方から
+					インクルードされる．
+target_kernel.h		カーネルAPI（kernel.h）のターゲット依存部（５章）．
+					アプリケーションとカーネルの両方からインクルードさ
+					れる．
+
+target_config.h		カーネル実装のターゲット依存部のヘッダファイル（６
+					章）．カーネルのみからインクルードされる．
+target_config.c		カーネル実装のターゲット依存部のC言語で記述される
+					部分（６章，オプション）．
+target_support.S	カーネル実装のターゲット依存部のアセンブリ言語で記
+					述される部分（６章，オプション）．
+target_rename.def	カーネル実装のターゲット依存部のためのリネーム記述
+					（6.12節）．
+target_rename.h		target_rename.defから生成されるファイル（6.12節）．
+target_unrename.h	target_rename.defから生成されるファイル（6.12節）．
+target_timer.cfg	タイマドライバのシステムコンフィギュレーションファ
+					イル（6.13節）．
+target_timer.h		タイマドライバのヘッダファイル（6.13節）．カーネル
+					のみからインクルードされる．
+target_timer.c		タイマドライバの実装ファイル（6.13節，オプション）．
+システム略称.h		ターゲットのハードウェア資源（割込みハンドラ番号や
+					CPU例外ハンドラ番号，デバイスレジスタの番地など）の
+					定義を含むヘッダファイル．アプリケーションとカーネ
+					ルの両方からインクルードされる（６章，オプション）．
+
+target_def.csv		コンフィギュレータの値取得シンボルテーブルのターゲッ
+					ト依存部（７章，オプション）．
+target.tf			コンフィギュレータのパス2のテンプレートファイルの
+					ターゲット依存部（7.2節）．
+target_check.tf		コンフィギュレータのパス3のテンプレートファイル（7.3
+					節）．
+target_cfg1_out.h	cfg1_out.cのリンクに必要なスタブの定義ファイル（7.4
+					節）．
+
+target_syssvc.h		システムサービスのターゲット依存定義（8.0節）．
+target_serial.cfg	シリアルドライバのシステムコンフィギュレーションファ
+					イル（8.3節）．
+target_serial.h		シリアルドライバのヘッダファイル（8.3節）．シリアル
+					ドライバのみからインクルードされる．
+target_serial.c		シリアルドライバの実装ファイル（8.3節，オプション）．
+target_test.h		テストプログラムのターゲット依存定義（8.4節）．
+
+target_user.txt		ユーザーズマニュアル（9.1節）
+target_design.txt	設計メモ（9.1節，オプション）
+MANIFEST			個別パッケージに含めるファイルのリスト（9.2節，オプ
+					ション）
+E_PACKAGE			簡易パッケージに含めるファイルのリスト（9.2節，オプ
+					ション）
+
+以上
Index: ssp_qb_r5f100le_cs/trunk/doc/ssp_spec.txt
===================================================================
--- ssp_qb_r5f100le_cs/trunk/doc/ssp_spec.txt	(revision 93)
+++ ssp_qb_r5f100le_cs/trunk/doc/ssp_spec.txt	(revision 95)
@@ -1,12 +1,11 @@
 
-		TOPPERS/SSPJ[lÌdlTv
+		TOPPERS/SSPカーネルの仕様概要
 
-		Îo[W: Release1.3.0
-		ÅIXV: 2014N 3 6ú
+		対応バージョン: Release1.3.0
+		最終更新: 2014年 3月 6日
 
-±ÌhL
-gÍCTOPPERS/SSPJ[lÌdlTvÉÂ¢Äà¾µ½àÌÅ
- éDTOPPERS/ASPJ[l©çÌ·ª¨æÑÏXÓÆÊITRON4.0dlÌÅ¬
-Zbgvt@C©çÌ·ªðSÉà¾·éD
+このドキュメントは，TOPPERS/SSPカーネルの仕様概要について説明したもので
+ある．TOPPERS/ASPカーネルからの差分および変更箇所とμITRON4.0仕様の最小
+セットプロファイルからの差分を中心に説明する．
 
 ----------------------------------------------------------------------
@@ -21,156 +20,148 @@
              Nagoya Municipal Industrial Research Institute, JAPAN
  
- ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
- Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
- ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
- (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
-      \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
-     XR[hÉÜÜêÄ¢é±ÆD
- (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
-     pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
-gip
-     Ò}j
-AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
-     Ì³ÛØKèðfÚ·é±ÆD
- (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
-     pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
-     ÆD
-   (a) ÄzzÉº¤hL
-gipÒ}j
-AÈÇjÉCãLÌ
-       ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
-   (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
-       ñ·é±ÆD
- (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
-     Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
-     Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
-     RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
-     ÆÓ·é±ÆD
+ 上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ 変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+     権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+     スコード中に含まれていること．
+ (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+     用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+     者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+     の無保証規定を掲載すること．
+ (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+     用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+     と．
+   (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+       作権表示，この利用条件および下記の無保証規定を掲載すること．
+   (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+       報告すること．
+ (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+     害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+     また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+     由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+     免責すること．
  
- {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
- æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
- ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
- AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
- ÌÓCðíÈ¢D
+ 本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ の責任を負わない．
  
 ----------------------------------------------------------------------
 
-OñÆÈé¶
+○前提となる文書
 
-[1] g¦ï: ÊITRON4.0dl, Ver.4.02.00, 2004N.
+[1] トロン協会: μITRON4.0仕様, Ver.4.02.00, 2004年.
 
-[2] TOPPERSvWFNg: TOPPERSV¢ãJ[ldl Release 1.5.0
+[2] TOPPERSプロジェクト: TOPPERS新世代カーネル仕様書 Release 1.5.0
 
-[3] TOPPERSvWFNg: TOPPERSWÝf, ÅIXV: 2008N
-	411ú.
+[3] TOPPERSプロジェクト: TOPPERS標準割込み処理モデル, 最終更新: 2008年
+	4月11日.
 
-dlÌTª
+○仕様の概略
 
-TOPPERS/SSPJ[lÌdlÍCTOPPERS/ASPJ[lÌdlÉÎµÄC
-¬KÍAvP[Vü¯ÉdlðiÁ½àÌÅ éDÅ¬ZbgÉ
-¨¯é"Å¬"ÆÍCJ[lªgp·éROM/RAMgpÊð¬³­·é½ßÉ
-dlðÅK»·é±ÆðÓ¡·éD
+TOPPERS/SSPカーネルの仕様は，TOPPERS/ASPカーネルの仕様に対して，
+小規模アプリケーション向けに仕様を絞ったものである．最小セットに
+おける"最小"とは，カーネルが使用するROM/RAM使用量を小さくするために
+仕様を最適化することを意味する．
 
-ñ·é@\ÍÊITRON4.0dlÌÅá@\ðx[XÆµÄCê
-©®Ô§äpvt@CÌ@\ðæèÞD
+提供する機能はμITRON4.0仕様準拠の最低機能をベースとして，一部
+自動車制御用プロファイルの機能を取り込む．
 
-Eñ·éVXeT[rXð§À·é
-E§ñ^XNÌÝðT|[g·é
-E1ÂÌ^XNDæxÉÎµÄo^Å«é^XNÍ1ÂÉÀè·é
-EROM/RAMgpÊð­È­·é½ßÌÝv/Àðs¤
+・提供するシステムサービスを制限する
+・制約タスクのみをサポートする
+・1つのタスク優先度に対して登録できるタスクは1つに限定する
+・ROM/RAM使用量を少なくするための設計/実装を行う
 
-³çÉCSSPJ[lÆ©ÌdlÆµÄÈºÌ@\ð±ü·éD
+さらに，SSPカーネル独自の仕様として以下の機能を導入する．
 
-E^XNÌÀsDæx
-E¤LX^bNÌæ
+・タスクの実行時優先度
+・共有スタック領域
 
-±Ì½ßCSSPJ[lÍASPJ[lÌºÊÝ·ÅàãÊÝ·ÅàÈ¢D
+このため，SSPカーネルはASPカーネルの下位互換でも上位互換でもない．
 
-ñ·éVXeT[rXð§À·é
+○提供するシステムサービスを制限する
 
-TOPPERS/ASPªñ·éVXeT[rXÌ¤¿CÊITRON4.0dl
-5.1.2ßÅKè³ê½VXeT[rXÆCTOPPERSV¢ãJ[l
-dlÅÇÁ³ê½êÌVXeT[rXÌÝðT|[g·éD
+TOPPERS/ASPが提供するシステムサービスのうち，μITRON4.0仕様書
+5.1.2節で規定されたシステムサービスと，TOPPERS新世代カーネル
+仕様で追加された一部のシステムサービスのみをサポートする．
 
-T|[g·éVXeT[rXÍÈºÌÊèÅ éD
+サポートするシステムサービスは以下の通りである．
 
-ECRE_TSK
-EDEF_EPR
-Eact_tsk,iact_tsk
-Eloc_cpu,iloc_cpu
-Eunl_cpu,iunl_cpu
-Esns_ctx
-Esns_loc
-Esns_dsp
-Esns_dpn
-Esns_ker
-Eena_dsp
-Edis_dsp
-EDEF_INH
-EATT_ISR
-ECFG_INT
-Eena_int
-Edis_int
-EATT_INI
-EATT_TER
-Eext_ker
-EDEF_ICS
-EDEF_STK
+・CRE_TSK
+・DEF_EPR
+・act_tsk,iact_tsk
+・loc_cpu,iloc_cpu
+・unl_cpu,iunl_cpu
+・sns_ctx
+・sns_loc
+・sns_dsp
+・sns_dpn
+・sns_ker
+・ena_dsp
+・dis_dsp
+・DEF_INH
+・ATT_ISR
+・CFG_INT
+・ena_int
+・dis_int
+・ATT_INI
+・ATT_TER
+・ext_ker
+・DEF_ICS
+・DEF_STK
 
-½¾µCg£pbP[WðKp·é±ÆÅ@\ðÇÁ·é±ÆªÅ«éD
+ただし，拡張パッケージを適用することで機能を追加することができる．
 
-§ñ^XNÌÝðT|[g·é
+○制約タスクのみをサポートする
 
-^XNÔÌX^bN¤LðOñÆ·é½ßC©®Ô§äpvt@CÉ
-Kè³êÄ¢é§ñ^XNð±üµCÊíÌ^XNÍp~·éD±êÍC
-L`ÌÒ¿óÔðT|[gµÈ¢±ÆðÓ¡·éD
+タスク間のスタック共有を前提とするため，自動車制御用プロファイルに
+規定されている制約タスクを導入し，通常のタスクは廃止する．これは，
+広義の待ち状態をサポートしないことを意味する．
 
-1ÂÌ^XNDæxÉÎµÄo^Å«é^XNÍ1ÂÉÀè·é
+○1つのタスク優先度に対して登録できるタスクは1つに限定する
 
-1ÂÌ^XNDæxÉÎµÄo^Å«é^XNÍêÂÆ·éD^XNDæxÍ
-16Å é½ßCÅåÅo^Å«é^XNÍ16Å éD±Ì§ÀÍfBL
-[
-ðsvÆµCXPW
-[ÌÈª»ÆRAMgpÊÌí¸ð}é½ßÅ éD
+1つのタスク優先度に対して登録できるタスクは一つとする．タスク優先度は
+16であるため，最大で登録できるタスク数は16である．この制限はレディキュー
+を不要とし，スケジューラの簡略化とRAM使用量の削減を図るためである．
 
-ROM/RAMgpÊð­È­·é½ßÌÝv/Àðs¤
+○ROM/RAM使用量を少なくするための設計/実装を行う
 
-­È¢ROM/RAMÅ®ì³¹é½ßÉTCYðDæµ½Ýv/Àð
-s¤DÝvÅÍf[^\¢Ìzñ»ðåÆµ½ÅK»CÀÅÍ
-æèÚA«ð¹ÈíÈ¢ÍÍÅÌ¬³¢f[^^ÌgpâÂÇ«ð
-µ­áº³¹È¢ÍÍÅÌR[h`
-[jOðs¤DÜ½C
-RpCÉæéÅK»àp·é(½¾µRpCÅÌÅK»Í
-Â«Éæé·Ùªå«¢½ßC^[QbgË¶Å é)D
+少ないROM/RAMで動作させるためにサイズを優先した設計/実装を
+行う．設計ではデータ構造の配列化を主とした最適化，実装では
+より移植性を損なわない範囲での小さいデータ型の使用や可読性を
+著しく低下させない範囲でのコードチューニングを行う．また，
+コンパイラによる最適化も活用する(ただしコンパイラでの最適化は
+環境による差異が大きいため，ターゲット依存である)．
 
-^XNÌÀsDæx
+○タスクの実行時優先度
 
-ÀsDæxÍ^XNªN®³ê½ãCÅÉÀsóÔÉÈé
-É^XNÌx[XDæxªÉÝè³êé^XNDæxÅ éDÀs
-DæxÌ@\ÍCN®Dæxæèà¢DæxÅ^XNðÀs·é±ÆÅC
-¯úÉ¤LX^bNÌæðgpµÄ¢éóÔÉÈé^XNÌgÝí¹ðÀ
-èµCX^bNÌæðßñ·é½ßÌ@\Å éD
+実行時優先度はタスクが起動された後，最初に実行状態になる
+時にタスクのベース優先度がに設定されるタスク優先度である．実行時
+優先度の機能は，起動時優先度よりも高い優先度でタスクを実行することで，
+同時期に共有スタック領域を使用している状態になるタスクの組み合わせを限
+定し，スタック領域を節約するための機能である．
 
-¤LX^bNÌæ
+○共有スタック領域
 
-SSPJ[lÅÍSÄÌ^XNÆÝnhÅA±µ½X^bNÌæðgp·éD
-±êð¤LX^bNÌæÆÄÔD¤LX^bNÌæð±ü·é±ÆÅ^XNÌ
-ÀsDæxÉæé^XNX^bNÌæðßñ·é±ÆªÅ«éD
+SSPカーネルでは全てのタスクと割込みハンドラで連続したスタック領域を使用する．
+これを共有スタック領域と呼ぶ．共有スタック領域を導入することでタスクの
+実行時優先度によるタスクスタック領域を節約することができる．
 
-pÓµÄ¢ég£pbP[W
+○用意している拡張パッケージ
 
-ÔÇg£pbP[WÆ¯úEÊM@\g£pbP[WðpÓµÄ¢éD
+時間管理拡張パッケージと同期・通信機能拡張パッケージを用意している．
 
-ÔÇg£pbP[WÉÍÈºÌ@\ªÜÜêéD
+時間管理拡張パッケージには以下の機能が含まれる．
 
-Eüúnh@\
-EA[nh@\
-EVXeÇ@\
+・周期ハンドラ機能
+・アラームハンドラ機能
+・システム時刻管理機能
 
-¯úEÊM@\g£pbP[WÉÍÈºÌ@\ªÜÜêéD
+同期・通信機能拡張パッケージには以下の機能が含まれる．
 
-Ef[^L
-[@\
-ECxgtO@\
+・データキュー機能
+・イベントフラグ機能
 
-Èã
+以上
Index: ssp_qb_r5f100le_cs/trunk/doc/user.txt
===================================================================
--- ssp_qb_r5f100le_cs/trunk/doc/user.txt	(revision 93)
+++ ssp_qb_r5f100le_cs/trunk/doc/user.txt	(revision 95)
@@ -1,13 +1,11 @@
 
-		TOPPERS/SSPJ[l
-		[U[Y}j
-A
-
-		Îo[W: Release 1.3.0
-		ÅIXV: 2015N519ú
-
-±ÌhL
-gÍCTOPPERS/SSPJ[lðgp·é½ßÉKvÈðà¾
-·éàÌÅ éD
+		TOPPERS/SSPカーネル
+		ユーザーズマニュアル
+
+		対応バージョン: Release 1.3.0
+		最終更新: 2015年5月19日
+
+このドキュメントは，TOPPERS/SSPカーネルを使用するために必要な事項を説明
+するものである．
 
 ----------------------------------------------------------------------
@@ -19,297 +17,273 @@
                 Nagoya Municipal Industrial Research Institute, JAPAN
 
- ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
- Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
- ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
- (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
-      \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
-     XR[hÉÜÜêÄ¢é±ÆD
- (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
-     pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
-gip
-     Ò}j
-AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
-     Ì³ÛØKèðfÚ·é±ÆD
- (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
-     pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
-     ÆD
-   (a) ÄzzÉº¤hL
-gipÒ}j
-AÈÇjÉCãLÌ
-       ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
-   (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
-       ñ·é±ÆD
- (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
-     Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
-     Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
-     RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
-     ÆÓ·é±ÆD
+ 上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ 変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+     権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+     スコード中に含まれていること．
+ (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+     用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+     者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+     の無保証規定を掲載すること．
+ (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+     用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+     と．
+   (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+       作権表示，この利用条件および下記の無保証規定を掲載すること．
+   (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+       報告すること．
+ (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+     害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+     また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+     由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+     免責すること．
  
- {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
- æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
- ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
- AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
- ÌÓCðíÈ¢D
+ 本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ の責任を負わない．
  
 ----------------------------------------------------------------------
 
-Ú
-
-PDTOPPERS/SSPJ[lÌTv
-	1.1 TOPPERS/SSPJ[lÌÊut¯
-	1.2 TOPPERS/SSPJ[lÌdl
-	1.3 ùmÌâè
-QD^[QbgË¶
-	2.1 ^[QbgË¶ÌTv
-	2.2 ÈÕpbP[W
-	2.3 ÂÊpbP[W
-RDNCbNX^[gKCh
-	3.1 J­Â«Ìõ
-	3.2 RtBM
-[^Ì\z
-	3.3 TvvOÌ\zÆÀs
-	3.4 J[lðÖPÊÅCu»·éû@
-	3.5 AvP[VÆJ[lðÊXÉ\z·éû@
-SDfBNg\¬Et@C\¬
-	4.1 zzpbP[WÌfBNg\¬
-	4.2 ^[QbgñË¶Ìt@C\¬
-TDRtBM
-[VXNvgÌg¢û
-UDMakefileÌC³û@
-	6.1 MakefileÌÏè`
-	6.2 RpCIvV
-VDRtBM
-[^Ìg¢û
-WDVXeT[rX
-	8.1 VAC^tF[XhCo
-		8.1.1 VAC^tF[XhCoÌT[rXR[
-		8.1.2 VAC^tF[XhCoÌ»Ì¼ÌT[rX
-	8.2 J[lN®bZ[WÌoÍ
-XDT|[gCu
-	9.1 L
-[ìCuÖ
-PODgpãÌÓÆqg
-	10.1 ^C}hCoÌgÝ
-	10.2 assert}NÌ
-	10.3 IuWFNgIDÌÇ
-	10.4 J[lÌàV{Ìl[
-	10.5 VXeÌN®Ìú»
-PPDQlîñ
-	11.1 pðÆpñ
-	11.2 ÛØEKp«ET|[g
-	11.3 oO|[g
-	11.4 EFuTCg
-	11.5 TOPPERS[U[Y[OXg
-	11.6 TOPPERSvWFNgÌoü¯ÌT[rX
-	11.7 TOPPERSvWFNgÖÌQÁ
-PQD
-	12.1 T[rXR[ê
-	12.2 ÃIAPIê
-	12.3 o[Wð
-
-
-PDTOPPERS/SSPJ[lÌTv
-
-1.1.  TOPPERS/SSPJ[lÌÊut¯
-
-TOPPERS/SSPJ[lÍCTOPPERS/ASPJ[lÌdlÉÎµÄC
-¬KÍAvP[Vü¯ÉdlðiÁ½àÌÅ éDÅ¬ZbgÉ
-¨¯é"Å¬"ÆÍCJ[lªgp·éROM/RAMgpÊð¬³­·é½ßÉ
-dlðÅK»·é±ÆðÓ¡·éD
-
-ñ·é@\ÍÊITRON4.0dlÌÅá@\ðx[XÆµÄCê
-©®Ô§äpvt@CÌ@\ðæèÞD
-
-±Ì½ßCSSPJ[lÍASPJ[lÌºÊÝ·ÅàãÊÝ·ÅàÈ¢D
-½¾µC§ñ^XNg£pbP[WðKpµ½êCSSPJ[lÍ
-SSPJ[lÌãÊÝ·ÆÈéD
-
-1.2. TOPPERS/SSPJ[lÌdl
-
-SSPJ[lÌdlÌTvÉÂ¢ÄÍCuTOPPERSV¢ãJ[ldlvð
-QÆÌ±ÆD
-
-1.3. ùmÌâè
-
-kernel_cfg.ci¨æÑcfg1_out.cjÍCJ[lCVXeT[rXCAv
-P[VÌ¢¸êÌCN[ht@CàCN[hµC¢¸êÌV
-{àQÆ·éÂ\«ª éD»Ì½ßCJ[lCVXeT[rXCAv
-P[VÅV{ªÕËµÄ¢éêâCRpCIvVªH
-¢áÁÄ¢éêÉCkernel_cfg.ci¨æÑcfg1_out.cjª³µ­RpC
-Å«È­Èéêªl¦çêéDJ[lÌV{ðl[·éÈÇÌû
-@Åy¸³êÄÍ¢éªCâèªÈ­ÈÁÄ¢éí¯ÅÍÈ¢D
-
-VXeRtBM
-[Vt@C©çCRtBM
-[^ÉÎ·é
-INCLUDEfBNeBuÉæè¼ÌRtBM
-[Vt@CðCN[
-hµÄ¢éêÉC»ÌÉÜÜêéC¾êvvZbTÌCN[hfB
-NeBui#includejÅCRtBM
-[Vt@CÌu©êÄ¢é
-fBNgªCt@Cðõ·épXÉÍ¢çÈ¢Æ¢¤âèª éDá
-¦ÎCsyssvc/syslog.cfgÉu#include "syslog.h"vÆLqÅ«È¢ÌÍC±
-Ìâèª é½ßÅ éD
-
-»_ÅÍCAhXª64rbgÌÂ«ÉÍÎµÄ¢È¢D64rbgAh
-XÂ«ðT|[g·é½ßÌÅåÌÛèÍCg[SR[htH[}bg
-ª64rbgAhXÉÎµÄ¢È¢±ÆÅ éD
-
-QD^[QbgË¶
-
-2.1. ^[QbgË¶ÌTv
-
-SSPJ[lÌ^[QbgñË¶ÆCeíÌ^[QbgVXeÉÎ·é½
-ßÌ^[QbgË¶ÍCÊXÉJ­³êÄ¢éD»Ì½ßCSSPJ[lªÎ
-µÄ¢é·×ÄÌ^[QbgË¶ðCo[Wð®³¹ÄpbP[W
-»·é±ÆÍ¢ïÅ éD»±ÅCåÉÌ[UðÎÛÉµ½ÈÕpbP[
-WÆCãÌ[UâJ[lJ­ÒðÎÛÉµ½ÂÊpbP[WðpÓµÄ
-¢éD
-
-SSPJ[lð¢T|[gÌ^[QbgVXeÖ|[eBO·é½ßÉKv
-ÈìÆÍCJ­Â«Ì\zÆWÌJ­Â«ÆÌ·ÙÌzûCJ[l©gÌ
-|[eBOCVXeT[rXÌ|[eBOÈÇ©çÈéDÚµ­ÍC
-u^[QbgË¶ |[eBOKChvðQÆ·é±ÆD
-
-¦ ^[QbgË¶ |[eBOKChÍ»ÝÍ¢®Å é
-
-2.2. ÈÕpbP[W
-
-ÈÕpbP[WÍCSSPJ[lªÎµÄ¢é^[QbgVXeÉpÓ³
-êC»Ì^[QbgVXeãÅSSPJ[lð®ì³¹é½ßÉKvÈt@C
-ê®ðpbP[W»µ½àÌÅ éDÈÕpbP[WÉÜÜêét@CÍC
-o[Wª®µÄ¢é±ÆªmF³êÄ¢éD
-
-ÈÕpbP[WÌo[WÔÍCpbP[W»µ½útÆ·é±Æð´¥
-Æ·éªC^[QbgVXeÌîÉæè±Ì´¥É]íÈ¢êª éD
-
-ÈÕpbP[WÍCî{IÉÍCÉà¾·éÂÊpbP[Wð¡ÜÆß½
-àÌÅ éD»Ì½ßCÎÛ^[QbgVXeÉKvÌÈ¢t@CàÜÜ
-êÄ¢éDÜ½CÈÕpbP[WÉÜÜêÄ¢éÂÊpbP[WÌo[W
-ÍCÂÊpbP[WÌMANIFESTt@CðQÆ·é±ÆÅmé±ÆªÅ«éD
-
-2.3. ÂÊpbP[W
-
-ÂÊpbP[WÍCSSPJ[lÌJ­PÊÉC»ÌJ­PÊÅJ­ðSµ
-Ä¢ét@Cê®ðpbP[W»µ½àÌÅ éDSSPJ[lÌ^[Qbg
-ñË¶àCêÂÌÂÊpbP[WÆµÄzz³êéD éÂÊpbP[Wð
-gp·é½ßÉÍCêÊÉÍC¼ÌÂÊpbP[WªKvÆÈéD^[Qbg
-Ë¶ÌÂÊpbP[Wðgp·é½ßÉKvÆÈéÂÊpbP[WÆ»Ìo[
-WÉÂ¢ÄÍC^[QbgË¶Ì[U[Y}j
-AðQÆ·é±ÆD
-gp·éÂÊpbP[WÌo[Wð®³¹é±ÆÍC[UÌÓCÅ 
-éD
-
-ÂÊpbP[WÌo[WÔÍCX.Y.ZÌ`Å\»³êéD^[QbgñË
-¶Ìo[WÔðCSSPJ[lSÌÌ[XÔÆ·éD^[Qbg
-Ë¶Ìo[WÔÍCXÆYªC»êªË¶·é^[QbgñË¶Æê
-vµÄ¢éD»êÉÎµÄCZÍêvµÄ¢éÆÍÀçÈ¢Dá¦ÎC^[Qb
-gñË¶Ìo[W1.1.0ÉÎ·é^[QbgË¶ÍCo[W
-1.1.ZÌ`ÆÈéD^[QbgË¶ÌÝªo[WAbvµ½êÉÍCZ
-ªÏX³êéD
-
-gp·éÂÊpbP[WÍCÌáÌæ¤ÉC^[QbgñË¶ÌÂÊpb
-P[WðWJµ½ÌÆ¯¶fBNgÅWJ·éD
+○目次
+
+１．TOPPERS/SSPカーネルの概要
+	1.1 TOPPERS/SSPカーネルの位置付け
+	1.2 TOPPERS/SSPカーネルの仕様
+	1.3 既知の問題
+２．ターゲット依存部
+	2.1 ターゲット依存部の概要
+	2.2 簡易パッケージ
+	2.3 個別パッケージ
+３．クイックスタートガイド
+	3.1 開発環境の準備
+	3.2 コンフィギュレータの構築
+	3.3 サンプルプログラムの構築と実行
+	3.4 カーネルを関数単位でライブラリ化する方法
+	3.5 アプリケーションとカーネルを別々に構築する方法
+４．ディレクトリ構成・ファイル構成
+	4.1 配布パッケージのディレクトリ構成
+	4.2 ターゲット非依存部のファイル構成
+５．コンフィギュレーションスクリプトの使い方
+６．Makefileの修正方法
+	6.1 Makefileの変数定義
+	6.2 コンパイルオプション
+７．コンフィギュレータの使い方
+８．システムサービス
+	8.1 シリアルインタフェースドライバ
+		8.1.1 シリアルインタフェースドライバのサービスコール
+		8.1.2 シリアルインタフェースドライバのその他のサービス
+	8.2 カーネル起動メッセージの出力
+９．サポートライブラリ
+	9.1 キュー操作ライブラリ関数
+１０．使用上の注意とヒント
+	10.1 タイマドライバの組込み
+	10.2 assertマクロの処理
+	10.3 オブジェクトIDの管理
+	10.4 カーネルの内部シンボルのリネーム
+	10.5 システムの起動時の初期化処理
+１１．参考情報
+	11.1 利用条件と利用報告
+	11.2 保証・適用性・サポート
+	11.3 バグレポート
+	11.4 ウェブサイト
+	11.5 TOPPERSユーザーズメーリングリスト
+	11.6 TOPPERSプロジェクトのメンバ向けのサービス
+	11.7 TOPPERSプロジェクトへの参加
+１２．
+	12.1 サービスコール一覧
+	12.2 静的API一覧
+	12.3 バージョン履歴
+
+
+１．TOPPERS/SSPカーネルの概要
+
+1.1.  TOPPERS/SSPカーネルの位置付け
+
+TOPPERS/SSPカーネルは，TOPPERS/ASPカーネルの仕様に対して，
+小規模アプリケーション向けに仕様を絞ったものである．最小セットに
+おける"最小"とは，カーネルが使用するROM/RAM使用量を小さくするために
+仕様を最適化することを意味する．
+
+提供する機能はμITRON4.0仕様準拠の最低機能をベースとして，一部
+自動車制御用プロファイルの機能を取り込む．
+
+このため，SSPカーネルはASPカーネルの下位互換でも上位互換でもない．
+ただし，制約タスク拡張パッケージを適用した場合，SSPカーネルは
+SSPカーネルの上位互換となる．
+
+1.2. TOPPERS/SSPカーネルの仕様
+
+SSPカーネルの仕様の概要については，「TOPPERS新世代カーネル統合仕様書」を
+参照のこと．
+
+1.3. 既知の問題
+
+kernel_cfg.c（およびcfg1_out.c）は，カーネル，システムサービス，アプリ
+ケーションのいずれのインクルードファイルもインクルードし，いずれのシン
+ボルも参照する可能性がある．そのため，カーネル，システムサービス，アプ
+リケーションでシンボル等が衝突している場合や，コンパイルオプションが食
+い違っている場合に，kernel_cfg.c（およびcfg1_out.c）が正しくコンパイル
+できなくなる場合が考えられる．カーネルのシンボルをリネームするなどの方
+法で軽減されてはいるが，問題がなくなっているわけではない．
+
+システムコンフィギュレーションファイルから，コンフィギュレータに対する
+INCLUDEディレクティブにより他のコンフィギュレーションファイルをインクルー
+ドしている場合に，その中に含まれるC言語プリプロセッサのインクルードディ
+レクティブ（#include）で，コンフィギュレーションファイルの置かれている
+ディレクトリが，ファイルを検索するパスにはいらないという問題がある．例
+えば，syssvc/syslog.cfgに「#include "syslog.h"」と記述できないのは，こ
+の問題があるためである．
+
+現時点では，アドレスが64ビットの環境には対応していない．64ビットアドレ
+ス環境をサポートするための最大の課題は，モトローラSレコードフォーマット
+が64ビットアドレスに対応していないことである．
+
+２．ターゲット依存部
+
+2.1. ターゲット依存部の概要
+
+SSPカーネルのターゲット非依存部と，各種のターゲットシステムに対応するた
+めのターゲット依存部は，別々に開発されている．そのため，SSPカーネルが対
+応しているすべてのターゲット依存部を，バージョンを整合させてパッケージ
+化することは困難である．そこで，主に初級のユーザを対象にした簡易パッケー
+ジと，上級のユーザやカーネル開発者を対象にした個別パッケージを用意して
+いる．
+
+SSPカーネルを未サポートのターゲットシステムへポーティングするために必要
+な作業は，開発環境の構築と標準の開発環境との差異の吸収，カーネル自身の
+ポーティング，システムサービスのポーティングなどからなる．詳しくは，
+「ターゲット依存部 ポーティングガイド」を参照すること．
+
+※ ターゲット依存部 ポーティングガイドは現在は未完である
+
+2.2. 簡易パッケージ
+
+簡易パッケージは，SSPカーネルが対応しているターゲットシステム毎に用意さ
+れ，そのターゲットシステム上でSSPカーネルを動作させるために必要なファイ
+ル一式をパッケージ化したものである．簡易パッケージに含まれるファイルは，
+バージョンが整合していることが確認されている．
+
+簡易パッケージのバージョン番号は，パッケージ化した日付とすることを原則
+とするが，ターゲットシステム毎の事情によりこの原則に従わない場合がある．
+
+簡易パッケージは，基本的には，次に説明する個別パッケージを複数まとめた
+ものである．そのため，対象ターゲットシステムに必要のないファイルも含ま
+れている．また，簡易パッケージに含まれている個別パッケージのバージョン
+は，個別パッケージのMANIFESTファイルを参照することで知ることができる．
+
+2.3. 個別パッケージ
+
+個別パッケージは，SSPカーネルの開発単位毎に，その開発単位で開発を担当し
+ているファイル一式をパッケージ化したものである．SSPカーネルのターゲット
+非依存部も，一つの個別パッケージとして配布される．ある個別パッケージを
+使用するためには，一般には，他の個別パッケージが必要となる．ターゲット
+依存部の個別パッケージを使用するために必要となる個別パッケージとそのバー
+ジョンについては，ターゲット依存部のユーザーズマニュアルを参照すること．
+使用する個別パッケージのバージョンを整合させることは，ユーザの責任であ
+る．
+
+個別パッケージのバージョン番号は，X.Y.Zの形で表現される．ターゲット非依
+存部のバージョン番号を，SSPカーネル全体のリリース番号とする．ターゲット
+依存部のバージョン番号は，XとYが，それが依存するターゲット非依存部と一
+致している．それに対して，Zは一致しているとは限らない．例えば，ターゲッ
+ト非依存部のバージョン1.1.0に対応するターゲット依存部は，バージョン
+1.1.Zの形となる．ターゲット依存部のみがバージョンアップした場合には，Z
+が変更される．
+
+使用する個別パッケージは，次の例のように，ターゲット非依存部の個別パッ
+ケージを展開したのと同じディレクトリで展開する．
 
 	% tar xvfz ssp-1.3.0.tar.gz
 	% tar xvfz ssp_arch_rx_rxc-1.3.0.tar.gz
 
-^[QbgñË¶ÌÂÊpbP[WÉÍCÈºÌ^[QbgË¶ªÜÜê
-Ä¢éD
-
-	target/cq_frk_fm3_gcc	Interfacet®Cortex-M3îÂ
-					iGNUJ­Â«jp^[QbgË¶
-	arch/arm_m_gcc		Cortex-M3iGNUJ­Â«jpvZbTË¶
-
-
-RDNCbNX^[gKCh
-
-±±ÅÍC^[QbgË¶ªpÓ³êÄ¢é^[QbgVXeãÅCSSPJ[
-lãÅ®ì·éTvvOð\zE®ì³¹éÜÅÌèð¦·D
-
-3.1. J­Â«Ìõ
-
-SSPJ[lðp¢½VXe\zÉÍCÈºÌc[ªKvÅ éD
-
-	zXgVXepÌc[
-		perl		®ìmFF5.16.2
-		GNU Make	®ìmFF3.81
-
-	TOPPERSV¢ãJ[lpRtBM
-[^
-		cfg			®ìmFF1.8.0
-					¦ 1.6.0ÈOÌo[WÅÍ®ìµÈ¢D
-
-	^[QbgVXepÌc[iNXJ­Â«j
-		WKiÉµ½CRpC
-		AZuCJCCuA
-		V{t@CoÍc[CwLTt@CoÍc[
-		WCCuiK{ÅÍÈ¢j
-
-^[QbgVXepÌc[ÉGNUJ­Â«ðp¢éêÉÍCÈºÌc[
-ªKvÅ éD
-
-	^[QbgVXepÌGNUJ­Â«c[
-		BINUTILSiasCldCarCnmCranlibCobjcopyCobjdumpj
-		GCCÜ½ÍGCC-COREigcc¨æÑ»±©çÄÑo³êéc[j
-		NEWLIBiWCCuCK{ÅÍÈ¢j
-
-®ìmF³êÄ¢é^[QbgVXepÌc[ÉÂ¢ÄÍC^[QbgË
-¶Ì[U[Y}j
-AðQÆ·é±ÆD
-
-^[QbgVXepÌWCCuÍCAvP[VªWCCu
-ðgpµÈ¢êÉÍCKvÈ¢D½¾µCRpCªWCCu
-ÖimemcpyCmemsetÈÇjðÄÑo·R[hð¶¬·éêª èC»Ìê
-ÉÍWCCuªKvÅ éDWCCuðpÓ·éãíèÉC
-¶¬µ½R[hªÄÑo·ÖÌÝð©ªÅpÓµÄàæ¢D
-
-È¨CperlXNvgÍ}`oCg¶ðµ¤¶R[hªEUCCüsR[hª
-LFÅ é±Æð¼èµÄ¢éD»êÈOÌ¶R[hCüsR[hÅ®ì³¹é
-½ßÉÍperlXNvgÌC³ªKvÆÈé±Æª éD
-
-ÈºÅÍC±êçÌc[ªpÓÅ«Ä¢é±ÆðOñÉCUNIX}VãÅÌ
-\zèðà¾·éDÜ½ÈºÌà¾ÅÍCmakeR}hªGNU MakeÅ éà
-ÌÆ·éiSSPJ[lÌTvÌMakefileÍCGNU MakeÌg£@\ðp¢Ä
-¢éjD
-
-3.2. RtBM
-[^Ì\z
-
-J[lð\z·éOÉCÜ¸CTOPPERSV¢ãJ[lpRtBM
-[^
-ð\z·éKvª éDÈÕpbP[WÉÜÜêÄ¢½êÈÇCRtBM
-
-[^ðÀst@C`®Åüèµ½êÉÍC±ÌXebvÍKvÈ¢D
-
-RtBM
-[^Ì\zÉÍCÈºÌc[ªKvÅ éD
-
-	zXgVXepÌc[iZtJ­Â«j
-		C++RpCCC++Cu
-					®ìmFiMac OS XÂ«jFApple LLVM version 5.0 (clang-500.2.79)
-		Boost		®ìmFF1.55.0
-		Visual Studio (WindowsÌê)
-
-ÅÉCpbP[WÉRtBM
-[^Ì\[Xt@CªÜÜêÄ¢È¢
-êÉÍCRtBM
-[^ÌpbP[WðCSSPJ[lÌ\[Xt@C
-ðWJµ½fBNgÌºÉWJ·éD
+ターゲット非依存部の個別パッケージには，以下のターゲット依存部が含まれ
+ている．
+
+	target/cq_frk_fm3_gcc	Interface誌付属Cortex-M3基板
+					（GNU開発環境）用ターゲット依存部
+	arch/arm_m_gcc		Cortex-M3（GNU開発環境）用プロセッサ依存部
+
+
+３．クイックスタートガイド
+
+ここでは，ターゲット依存部が用意されているターゲットシステム上で，SSPカー
+ネル上で動作するサンプルプログラムを構築・動作させるまでの手順を示す．
+
+3.1. 開発環境の準備
+
+SSPカーネルを用いたシステム構築には，以下のツールが必要である．
+
+	ホストシステム用のツール
+		perl		動作確認：5.16.2
+		GNU Make	動作確認：3.81
+
+	TOPPERS新世代カーネル用コンフィギュレータ
+		cfg			動作確認：1.8.0
+					※ 1.6.0以前のバージョンでは動作しない．
+
+	ターゲットシステム用のツール（クロス開発環境）
+		標準規格に準拠したCコンパイラ
+		アセンブラ，リンカ，ライブラリアン
+		シンボルファイル出力ツール，ヘキサファイル出力ツール
+		標準Cライブラリ（必須ではない）
+
+ターゲットシステム用のツールにGNU開発環境を用いる場合には，以下のツール
+が必要である．
+
+	ターゲットシステム用のGNU開発環境ツール
+		BINUTILS（as，ld，ar，nm，ranlib，objcopy，objdump）
+		GCCまたはGCC-CORE（gccおよびそこから呼び出されるツール）
+		NEWLIB（標準Cライブラリ，必須ではない）
+
+動作確認されているターゲットシステム用のツールについては，ターゲット依
+存部のユーザーズマニュアルを参照すること．
+
+ターゲットシステム用の標準Cライブラリは，アプリケーションが標準Cライブ
+ラリを使用しない場合には，必要ない．ただし，コンパイラが標準Cライブラリ
+関数（memcpy，memsetなど）を呼び出すコードを生成する場合があり，その場
+合には標準Cライブラリが必要である．標準Cライブラリを用意する代わりに，
+生成したコードが呼び出す関数のみを自分で用意してもよい．
+
+なお，perlスクリプトはマルチバイト文字を扱う文字コードがEUC，改行コードが
+LFであることを仮定している．それ以外の文字コード，改行コードで動作させる
+ためにはperlスクリプトの修正が必要となることがある．
+
+以下では，これらのツールが用意できていることを前提に，UNIXマシン上での
+構築手順を説明する．また以下の説明では，makeコマンドがGNU Makeであるも
+のとする（SSPカーネルのサンプルのMakefileは，GNU Makeの拡張機能を用いて
+いる）．
+
+3.2. コンフィギュレータの構築
+
+カーネルを構築する前に，まず，TOPPERS新世代カーネル用コンフィギュレータ
+を構築する必要がある．簡易パッケージに含まれていた場合など，コンフィギュ
+レータを実行ファイル形式で入手した場合には，このステップは必要ない．
+
+コンフィギュレータの構築には，以下のツールが必要である．
+
+	ホストシステム用のツール（セルフ開発環境）
+		C++コンパイラ，C++ライブラリ
+					動作確認（Mac OS X環境）：Apple LLVM version 5.0 (clang-500.2.79)
+		Boost		動作確認：1.55.0
+		Visual Studio (Windowsの場合)
+
+最初に，パッケージにコンフィギュレータのソースファイルが含まれていない
+場合には，コンフィギュレータのパッケージを，SSPカーネルのソースファイル
+を展開したディレクトリの下に展開する．
 
 	% cd ssp
 	% tar xvfz cfg-1.8.0.tar.gz
 
-Ü½ÍCRtBM
-[^ÌpbP[Wð¼ÌfBNgÉWJµCSSPJ[
-lÌ\[Xt@CðWJµ½fBNg©çV{bNNðÍÁ
-Äàæ¢D
-
-\[Xt@CªWJÅ«éÆCcfgfBNgÉÚ®µCRtBM
-[
-VXNvgiconfigurejÅMakefileÌÂ«Ë¶iMakefile.configj
-ð¶¬µ½ãCmakeR}hÉæèRtBM
-[^icfgvOjª\
-zÅ«éD
+または，コンフィギュレータのパッケージを他のディレクトリに展開し，SSPカー
+ネルのソースファイルを展開したディレクトリからシンボリックリンクをはっ
+てもよい．
+
+ソースファイルが展開できると，cfgディレクトリに移動し，コンフィギュレー
+ションスクリプト（configure）でMakefileの環境依存部（Makefile.config）
+を生成した後，makeコマンドによりコンフィギュレータ（cfgプログラム）が構
+築できる．
 
 	% cd cfg
@@ -317,146 +291,133 @@
 	% make
 
-½¾µCBoostðCXg[µ½fBNg¨æÑ¼ÌªWÅzèµÄ¢
-éàÌÆÍá¤êÉÍCconfigureÌ--with-headers¨æÑ--with-libraries
-IvVÉæèCwb_t@C¨æÑCuÌu©ê½fBNg
-ðwè·éKvª éD
-
-Ü½CzXgVXeÉæÁÄÍCÅK»xðã°éÆ³µ­RpC
-Å«È¢±ÆªmçêÄ¢éD»Ìæ¤ÈêÉÍCÅK»xðº°é©C
-ÅK»ð}~·éæ¤ÉCMakefileðC³·éKvª éD
-
-È¨CRtBM
-[^Ìgpû@ÉÂ¢ÄÍCuVDRtBM
-[^
-Ìg¢ûvÌÍÅà¾·éD
-
-3.3. TvvOÌ\zÆÀs
-
-ÉCSSPJ[lãÅ®ì·éTvvOð\z·éû@ðà¾·éD
-
-Ü¸CTvvOÌIuWFNgt@Cðu­fBNgðì¬
-µCRtBM
-[VXNvgðÀs·éDá¦ÎCIuWFNgt@
-Cðu­fBNgðCSSPJ[lÌ\[Xt@CðWJµ½fB
-NgÌºÌOBJÆ¢¤¼ÌÌfBNgÉ·éêÉÍCÌR}hð
-Às·éifBNgÌêÆ¼ÌÍCÓÉßÄæ¢jD
+ただし，Boostをインストールしたディレクトリおよび名称が標準で想定してい
+るものとは違う場合には，configureの--with-headersおよび--with-libraries
+オプションにより，ヘッダファイルおよびライブラリの置かれたディレクトリ
+を指定する必要がある．
+
+また，ホストシステムによっては，最適化レベルを上げると正しくコンパイル
+できないことが知られている．そのような場合には，最適化レベルを下げるか，
+最適化を抑止するように，Makefileを修正する必要がある．
+
+なお，コンフィギュレータの使用方法については，「７．コンフィギュレータ
+の使い方」の章で説明する．
+
+3.3. サンプルプログラムの構築と実行
+
+次に，SSPカーネル上で動作するサンプルプログラムを構築する方法を説明する．
+
+まず，サンプルプログラムのオブジェクトファイルを置くディレクトリを作成
+し，コンフィギュレーションスクリプトを実行する．例えば，オブジェクトファ
+イルを置くディレクトリを，SSPカーネルのソースファイルを展開したディレ
+クトリの下のOBJという名称のディレクトリにする場合には，次のコマンドを
+実行する（ディレクトリの場所と名称は任意に決めてよい）．
 
 	% cd ssp
 	% mkdir OBJ
 	% cd OBJ
-	% perl ../configure -T <^[QbgªÌ>
-
-±±ÅC<^[QbgªÌ>ÍCtargetfBNgÌºÉu©êÄ¢é^[Qb
-gË¶fBNgÌ¼ÌÅ éDRtBM
-[VXNvgÌI
-vVÉÂ¢ÄÍCuTDRtBM
-[VXNvgÌg¢ûvÌ
-ÍÅà¾·éD
-
-RtBM
-[VXNvgÌÀsÉæèCJgfBNgÉÍC
-TvvOð\z·é½ßÌMakefileCTvvOpÌR
-tBM
-[Vt@Cisample1.cfgjCTvvO{Ì
-isample1.h¨æÑsample1.cjª¶¬³êéD
-
-RtBM
-[VXNvgÌÀsãCKvÅ êÎMakefileðC³·
-éDMakefileÌC³û@ÉÂ¢ÄÍCuUDMakefileÌC³û@vÌÍÅà¾
-·éD
-
-»ÌãCmake dependÅË¶ÖWt@CiMakefile.dependjð¶¬µ½ãC
-makeR}hÉæèTvvOÌ[hW
-[iSSPÜ½Í
-SSP.exejª¶¬Å«éDË¶ÖWt@CÌ¶¬ÉÍá±Ôª©©éD
+	% perl ../configure -T <ターゲット略称>
+
+ここで，<ターゲット略称>は，targetディレクトリの下に置かれているターゲッ
+ト依存部ディレクトリの名称である．コンフィギュレーションスクリプトのオ
+プションについては，「５．コンフィギュレーションスクリプトの使い方」の
+章で説明する．
+
+コンフィギュレーションスクリプトの実行により，カレントディレクトリには，
+サンプルプログラムを構築するためのMakefile，サンプルプログラム用のコン
+フィギュレーションファイル（sample1.cfg），サンプルプログラム本体
+（sample1.hおよびsample1.c）が生成される．
+
+コンフィギュレーションスクリプトの実行後，必要であればMakefileを修正す
+る．Makefileの修正方法については，「６．Makefileの修正方法」の章で説明
+する．
+
+その後，make dependで依存関係ファイル（Makefile.depend）を生成した後，
+makeコマンドによりサンプルプログラムのロードモジュール（SSPまたは
+SSP.exe）が生成できる．依存関係ファイルの生成には若干時間がかかる．
 
 	% make depend
 	% make
 
-±±Å\zµ½TvvOisample1.hCsample1.cCsample1.cfgj
-ÍCSSPJ[lÌî{IÈ®ìðmF·é½ßÌàÌÅ éD±ÌvO
-ÌTvà¾ÍCsample1.cÌæªÌRgÉ éD
-
-3.4. J[lðÖPÊÅCu»·éû@
-
-OßÌèÅÍCJ[lðt@CPÊÅRpCµCCu»µÄ
-¢½ªCJ[lÌR[hTCYðk¬·é½ßÉÍCgpµÈ¢T[rXR[
-ÍNµÈ¢ûª]Üµ¢D»±ÅSSPJ[lÅÍCJ[lðÖPÊ
-ÅRpCµCCu»·éû@ðpÓµÄ¢éD
-
-±Ìû@ÅTvvOð\z·éÉÍCRtBM
-[VXN
-vgÉC»êðw¦·éIvVi-fjðtÁ·é¾¯Åæ¢D
+ここで構築したサンプルプログラム（sample1.h，sample1.c，sample1.cfg）
+は，SSPカーネルの基本的な動作を確認するためのものである．このプログラ
+ムの概要説明は，sample1.cの先頭のコメントにある．
+
+3.4. カーネルを関数単位でライブラリ化する方法
+
+前節の手順では，カーネルをファイル単位でコンパイルし，ライブラリ化して
+いたが，カーネルのコードサイズを縮小するためには，使用しないサービスコー
+ルはリンクしない方が望ましい．そこでSSPカーネルでは，カーネルを関数単位
+でコンパイルし，ライブラリ化する方法を用意している．
+
+この方法でサンプルプログラムを構築するには，コンフィギュレーションスク
+リプトに，それを指示するオプション（-f）を付加するだけでよい．
 
 	% mkdir OBJ_LIB
 	% cd OBJ_LIB
-	% perl ../configure -T <^[QbgªÌ> -f
-
-±±ÅCOBJ_LIBÆ¢¤fBNgÌêÆ¼ÌÍCCÓÉßÄæ¢D±ê
-È~ÌèÍCOßÆ¯¶Å éD
-
-3.5. AvP[VÆJ[lðÊXÉ\z·éû@
-
-OßÅà¾µ½û@ÅÍCAvP[VÆJ[lð¯É¶¬·é½ßC
-IuWFNgt@Cðu­fBNgÉñíÉ½­Ìt@Cªì¬³ê
-ÄCµ¢É­­ÈéD»±ÅCJ[lðC³·épxªá¢êÉÍCJ[
-lÍOÉ\zµÄ¨«CãÅAvP[V¾¯ð\z·éû@ðpÓ
-µÄ¢éDÈºÅÍCTvvOð\zðáÉC»ÌèÉÂ¢Äà
-¾·éD
-
-Ü¸CJ[lð\z·éfBNgðì¬µCRtBM
-[VX
-NvgðÀs·éDá¦ÎCJ[lð\z·éfBNgðCSSPJ[
-lÌ\[Xt@CðWJµ½fBNgÌºÌKERNEL_LIBÆ¢¤¼ÌÌ
-fBNgÉ·éêÉÍCÌR}hðÀs·éifBNgÌê
-Æ¼ÌÍCÓÉßÄæ¢jD
+	% perl ../configure -T <ターゲット略称> -f
+
+ここで，OBJ_LIBというディレクトリの場所と名称は，任意に決めてよい．これ
+以降の手順は，前節と同じである．
+
+3.5. アプリケーションとカーネルを別々に構築する方法
+
+前節で説明した方法では，アプリケーションとカーネルを同時に生成するため，
+オブジェクトファイルを置くディレクトリに非常に多くのファイルが作成され
+て，扱いにくくなる．そこで，カーネルを修正する頻度が低い場合には，カー
+ネルは事前に構築しておき，後でアプリケーションだけを構築する方法を用意
+している．以下では，サンプルプログラムを構築を例に，その手順について説
+明する．
+
+まず，カーネルを構築するディレクトリを作成し，コンフィギュレーションス
+クリプトを実行する．例えば，カーネルを構築するディレクトリを，SSPカー
+ネルのソースファイルを展開したディレクトリの下のKERNEL_LIBという名称の
+ディレクトリにする場合には，次のコマンドを実行する（ディレクトリの場所
+と名称は任意に決めてよい）．
 
 	% mkdir KERNEL_LIB
 	% cd KERNEL_LIB
-	% perl ../configure -T <^[QbgªÌ> -f
-
-±êÉæèCJ[lð\z·éfBNgÉCMakefileCsample1.cfgC
-sample1.hCsample1.cª¶¬³êéªCMakefileÈOÍÀ¿IÉÍgpµÈ¢D
-
-make dependÅË¶ÖWt@CiMakefile.dependjð¶¬µ½ãCmake
-libkernel.aÉæèJ[lCuilibkernel.ajª¶¬Å«éD
+	% perl ../configure -T <ターゲット略称> -f
+
+これにより，カーネルを構築するディレクトリに，Makefile，sample1.cfg，
+sample1.h，sample1.cが生成されるが，Makefile以外は実質的には使用しない．
+
+make dependで依存関係ファイル（Makefile.depend）を生成した後，make
+libkernel.aによりカーネルライブラリ（libkernel.a）が生成できる．
 
 	% make depend
 	% make libkernel.a
 
-ÉCAvP[Vð\z·éfBNgðì¬µCRtBM
-[
-VXNvgðÀs·éDá¦ÎCAvP[Vð\z·éfBN
-gðCSSPJ[lÌ\[Xt@CðWJµ½fBNgÌºÌAPLÆ¢
-¤¼ÌÌfBNgÉ·éêÉÍCÌR}hðÀs·éifBNg
-ÌêÆ¼ÌÍCÓÉßÄæ¢jD
+次に，アプリケーションを構築するディレクトリを作成し，コンフィギュレー
+ションスクリプトを実行する．例えば，アプリケーションを構築するディレク
+トリを，SSPカーネルのソースファイルを展開したディレクトリの下のAPLとい
+う名称のディレクトリにする場合には，次のコマンドを実行する（ディレクト
+リの場所と名称は任意に決めてよい）．
 
 	% cd ..
 	% mkdir APL
 	% cd APL
-	% perl ../configure -T <^[QbgªÌ> -L ../KERNEL_LIB
-
-±±Å-LIvVÉÍCJ[lð\zµ½fBNgÌpXðwè·éD
-
-ÅãÉCmake dependÅË¶ÖWt@CiMakefile.dependjð¶¬µ½ãC
-makeR}hÉæèTvvOÌ[hW
-[iSSPÜ½Í
-SSP.exejª¶¬Å«éD
+	% perl ../configure -T <ターゲット略称> -L ../KERNEL_LIB
+
+ここで-Lオプションには，カーネルを構築したディレクトリのパスを指定する．
+
+最後に，make dependで依存関係ファイル（Makefile.depend）を生成した後，
+makeコマンドによりサンプルプログラムのロードモジュール（SSPまたは
+SSP.exe）が生成できる．
 
 	% make depend
 	% make
 
-±ÌèÅÍCAvP[V\zÉÍJ[lÌÄ\zªKv©`Fb
-NµÈ¢½ßCJ[lÌ\[XR[hðC³µ½êÉÍCJ[lð\z
-µ½fBNgÅmake libkernel.aðÄÀs·éKvª éD
-
-ÈãÅÍCJ[lÆAvP[VðÊXÌfBNgÅ\zµ½ªC
--LIvVÉJgfBNgi½¾µC"."Æ¢¤LqÅÍsÂjðw
-è·é±ÆÅCJ[lÆAvP[Vð¯¶fBNgÅÊXÉ\z
-·é±ÆàÅ«éDïÌIÉÍCÌèÆÈéD
+この手順では，アプリケーション構築時にはカーネルの再構築が必要かチェッ
+クしないため，カーネルのソースコードを修正した場合には，カーネルを構築
+したディレクトリでmake libkernel.aを再実行する必要がある．
+
+以上では，カーネルとアプリケーションを別々のディレクトリで構築したが，
+-Lオプションにカレントディレクトリ（ただし，"."という記述では不可）を指
+定することで，カーネルとアプリケーションを同じディレクトリで別々に構築
+することもできる．具体的には，次の手順となる．
 
 	% mkdir OBJ
 	% cd OBJ
-	% perl ../configure -T <^[QbgªÌ> -L ../OBJ
+	% perl ../configure -T <ターゲット略称> -L ../OBJ
 	% make depend
 	% make libkernel.a
@@ -464,603 +425,530 @@
 	% make
 
-±±ÅCmake cleankernelÍCJ[lCuð¶¬·é½ßÌÔt@
-Cðí·éàÌÅ éD±ÌèÅÍCmake dependÉæèJ[lC
-uÉÖ·éË¶ÖWð¶¬µÈ¢½ßCJ[lÌ\[XR[hðC³µ
-½êÉÍCK¸make cleankerneliÜ½ÍCmake cleanjµÄ©çCmake
-libkernel.a·éKvª éÌÅÓ·é±ÆD
-
-È¨Cmake realclean·éÆCmake dependÆmakeÉæè¶¬µ½t@Cð·
-×Äí·éD»êÉÎµÄCmake cleanÅÍCmake dependÉæè¶¬µ½Ë
-¶ÖWt@CÍíµÈ¢D
-
-
-SDfBNg\¬Et@C\¬
-
-4.1. zzpbP[WÌfBNg\¬
-
-	include/		AvP[Vü¯wb_t@C
-	kernel/			J[l\[Xt@C
-	syssvc/			VXeT[rXwb_t@CC\[Xt@C
-	target/			^[QbgË¶
-	arch/			^[QbgË¶Ì¤Êª
-		gcc/		GCCJ­Â«Ë¶
-	pdic/			PDICifoCXhCoÌOSñË¶ªj
-	utils/			[eBeBvO
-	sample/			TvvOÆMakefile
-	doc/			hL
-g
-	extension/		g£pbP[W
-
-4.2. ^[QbgñË¶Ìt@C\¬
-
-^[QbgñË¶ieXgvOÆg£pbP[WÍ­jÌet@C
-ÌTvÍÌÊèD
-
-	README.txt					TOPPERS/SSPJ[lÌÈPÈÐî
-	configure					RtBM
-[VXNvgiGNUJ­Â«pj
-	MANIFEST					ÂÊpbP[WÌt@CXg
+ここで，make cleankernelは，カーネルライブラリを生成するための中間ファ
+イルを削除するものである．この手順では，make dependによりカーネルライ
+ブラリに関する依存関係を生成しないため，カーネルのソースコードを修正し
+た場合には，必ずmake cleankernel（または，make clean）してから，make
+libkernel.aする必要があるので注意すること．
+
+なお，make realcleanすると，make dependとmakeにより生成したファイルをす
+べて削除する．それに対して，make cleanでは，make dependにより生成した依
+存関係ファイルは削除しない．
+
+
+４．ディレクトリ構成・ファイル構成
+
+4.1. 配布パッケージのディレクトリ構成
+
+	include/		アプリケーション向けヘッダファイル
+	kernel/			カーネルソースファイル
+	syssvc/			システムサービスヘッダファイル，ソースファイル
+	target/			ターゲット依存部
+	arch/			ターゲット依存部の共通部分
+		gcc/		GCC開発環境依存部
+	pdic/			PDIC（デバイスドライバのOS非依存部分）
+	utils/			ユーティリティプログラム
+	sample/			サンプルプログラムとMakefile
+	doc/			ドキュメント
+	extension/		拡張パッケージ
+
+4.2. ターゲット非依存部のファイル構成
+
+ターゲット非依存部（テストプログラムと拡張パッケージは除く）の各ファイ
+ルの概要は次の通り．
+
+	README.txt					TOPPERS/SSPカーネルの簡単な紹介
+	configure					コンフィギュレーションスクリプト（GNU開発環境用）
+	MANIFEST					個別パッケージのファイルリスト
 
 	include/
-		kernel.h				SSPJ[lðgp·é½ßÌè`
-		sil.h					VXeC^tF[XCðgp·é½ßÌè`
-		t_stddef.h				TOPPERS¤Êwb_t@C
-		itron.h					ITRONdl¤ÊKèÌf[^^EèE}N
+		kernel.h				SSPカーネルを使用するための定義
+		sil.h					システムインタフェースレイヤを使用するための定義
+		t_stddef.h				TOPPERS共通ヘッダファイル
+		itron.h					ITRON仕様共通規定のデータ型・定数・マクロ
 
 	kernel/
-		Makefile.kernel			J[lÌt@C\¬Ìè`
-		kernel_impl.h			J[lÀpWwb_t@C
-		kernel_int.h			kernel_cfg.cpÌwb_t@C
-		kernel_rename.def		J[lÌà¯Ê¼Ìl[è`
-		kernel_rename.h			J[lÌà¯Ê¼Ìl[
-		kernel_unrename.h		J[lÌà¯Ê¼Ìl[ð	
-		kernel_api.csv			RtBM
-[^ÌÃIAPIe[u
-		kernel_def.csv			RtBM
-[^Ìlæ¾V{e[u
-		kernel.tf				RtBM
-[^ÌpX2Ìev[gt@C
-		kernel_check.tf			RtBM
-[^ÌpX3Ìev[gt@C
-		allfunc.h				·×ÄÌÖðRpC·é½ßÌè`
-		check.h					G[`FbNp}N
-		startup.c				J[lÌú»ÆI¹
-		task.h					^XNì[`ÖAÌè`
-		task.c					^XNì[`
-		task_manage.c			^XNÇ@\
-		sys_manage.c			VXeóÔÇ@\
-		interrupt.h				ÝÇ@\ÖAÌè`
-		interrupt.c				ÝÇ@\
-		exception.h				CPUáOÇ@\ÖAÌè`
-		exception.c				CPUáOÇ@\
-		queue.h					L
-[ìCuðgp·é½ßÌè`
+		Makefile.kernel			カーネルのファイル構成の定義
+		kernel_impl.h			カーネル実装用標準ヘッダファイル
+		kernel_int.h			kernel_cfg.c用のヘッダファイル
+		kernel_rename.def		カーネルの内部識別名のリネーム定義
+		kernel_rename.h			カーネルの内部識別名のリネーム
+		kernel_unrename.h		カーネルの内部識別名のリネーム解除	
+		kernel_api.csv			コンフィギュレータの静的APIテーブル
+		kernel_def.csv			コンフィギュレータの値取得シンボルテーブル
+		kernel.tf				コンフィギュレータのパス2のテンプレートファイル
+		kernel_check.tf			コンフィギュレータのパス3のテンプレートファイル
+		allfunc.h				すべての関数をコンパイルするための定義
+		check.h					エラーチェック用マクロ
+		startup.c				カーネルの初期化と終了処理
+		task.h					タスク操作ルーチン関連の定義
+		task.c					タスク操作ルーチン
+		task_manage.c			タスク管理機能
+		sys_manage.c			システム状態管理機能
+		interrupt.h				割込み管理機能関連の定義
+		interrupt.c				割込み管理機能
+		exception.h				CPU例外管理機能関連の定義
+		exception.c				CPU例外管理機能
+		queue.h					キュー操作ライブラリを使用するための定義
 
 	syssvc/
-		banner.h				J[lN®bZ[WÌoÍÌ½ßÌè`
-		banner.c				J[lN®bZ[WÌoÍ
-		banner.cfg				J[lN®bZ[WÌoÍÌRtBM
-[
-								Vt@C
-		serial.h				VAC^tF[XhCoðgp·é½ßÌè`
-		serial.c				VAC^tF[XhCo
-		serial.cfg				VAhCoÌRtBM
-[Vt@C
-		syssvc_def.csv			VXeT[rXÌRtBM
-[VÌÛÉKvÈ
-								RtBM
-[^Ìlæ¾V{e[u
+		banner.h				カーネル起動メッセージの出力のための定義
+		banner.c				カーネル起動メッセージの出力
+		banner.cfg				カーネル起動メッセージの出力のコンフィギュレー
+								ションファイル
+		serial.h				シリアルインタフェースドライバを使用するための定義
+		serial.c				シリアルインタフェースドライバ
+		serial.cfg				シリアルドライバのコンフィギュレーションファイル
+		syssvc_def.csv			システムサービスのコンフィギュレーションの際に必要な
+								コンフィギュレータの値取得シンボルテーブル
 
 	arch/gcc/
-		MANIFEST				ÂÊpbP[WÌt@CXg
-		tool_stddef.h			t_stddef.hÌJ­Â«Ë¶iGCCpj
+		MANIFEST				個別パッケージのファイルリスト
+		tool_stddef.h			t_stddef.hの開発環境依存部（GCC用）
 
 	utils/
-		applyrename				t@CÉl[ðKp
-		genrename				l[wb_t@CÌ¶¬
-		makedep					Ë¶ÖWXgÌ¶¬iGNUJ­Â«pj
-		makerelease				[XpbP[WÌ¶¬
+		applyrename				ファイルにリネームを適用
+		genrename				リネームヘッダファイルの生成
+		makedep					依存関係リストの生成（GNU開発環境用）
+		makerelease				リリースパッケージの生成
 
 	sample/
-		Makefile				TvÌMakefileiGNUJ­Â«pj
-		sample1.h				TvvO(1)ÉÖ·éè`
-		sample1.c				TvvO(1)
-		sample1.cfg				TvvO(1)ÌRtBM
-[Vt@C
+		Makefile				サンプルのMakefile（GNU開発環境用）
+		sample1.h				サンプルプログラム(1)に関する定義
+		sample1.c				サンプルプログラム(1)
+		sample1.cfg				サンプルプログラム(1)のコンフィギュレーションファイル
 
 	extension/
-		alarm.h					A[nh@\ÖAÌè`
-		alarm.c					A[nh@\
-		cyclic.h				üúnh@\ÖAÌè`
-		cyclic.c				üúnh@\
-        dataqueue.h             f[^L
-[@\ÖAÌè`
-        dataqueue.c             f[^L
-[@\
-		time_event.h			^CCxgÇÖAÌè`
-        eventflag.h             CxgtOÖAÌè`
-        eventflag.c             CxgtO@\
-		time_event.c			^CCxgÇ
-		time_manage.c			VXeÇ@\
-		MANIFEST				g£pbP[WÌt@CXg
+		alarm.h					アラームハンドラ機能関連の定義
+		alarm.c					アラームハンドラ機能
+		cyclic.h				周期ハンドラ機能関連の定義
+		cyclic.c				周期ハンドラ機能
+        dataqueue.h             データキュー機能関連の定義
+        dataqueue.c             データキュー機能
+		time_event.h			タイムイベント管理関連の定義
+        eventflag.h             イベントフラグ関連の定義
+        eventflag.c             イベントフラグ機能
+		time_event.c			タイムイベント管理
+		time_manage.c			システム時刻管理機能
+		MANIFEST				拡張パッケージのファイルリスト
 
 	doc/
-		user.txt				[U[Y}j
-A
-		ssp_spec.txt			TOPPERS/SSPJ[lÌdlTv
-		extension.txt			@\g£E`
-[jOKCh
-		porting.txt				^[QbgË¶ |[eBOKCh
-		configurator.txt		RtBM
-[^dl
-		version.txt				ÏXð
-
-
-TDRtBM
-[VXNvgÌg¢û
-
-RtBM
-[VXNvgiconfigurejÍCSSPJ[l¨æÑAv
-P[VvOð\z·é½ßÉKvÈî{IÈRtBM
-[V
-ðs¤½ßÌvOÅ éD
-
-SSPJ[lðp¢ÄAvP[Vðì¬·éêÉÍCÜ¸IuWFNg
-t@Cðu­fBNgðì¬µC»ÌfBNgÅRtBM
-[
-VXNvgðÀs·éDIuWFNgt@Cðu­fBNgÌê
-Æ¼ÌÍCCÓÉßÄæ¢D
-
-RtBM
-[VXNvgÉÎ·éIvVÍÌÊèD
-
-	-T <^[QbgªÌ>
-		^[QbgVXeÌ¼ÌðCtargetfBNgÌºÉu©êÄ¢
-		é^[QbgË¶fBNgÌ¼ÌÅwè·éiK{jD
-
-	-A <AvP[VvO¼>
-		AvP[VvOÌ¼Ìðwè·éDÈªµ½êÉÍC
-		TvvOisample1jÆÈéD
-
-	-a <AvP[VÌfBNg¼>
-		AvP[VvOÌ\[Xt@CiVXeRtBM
-
-		[Vt@Cð­jðu¢½fBNg¼ðwè·éDÈ
-		ªµ½êÉÍCIuWFNgt@Cðu­fBNgÉu©ê
-		Ä¢é±Æð¼è·éDVXeRtBM
-[Vt@CÍC
-		IuWFNgt@Cðu­fBNgÉu­±ÆD
-
-	-U <IuWFNgt@C¼>
-		AvP[VvOÌCÌIuWFNgt@Ci-A 
-		Åwèµ½AvP[VvO¼É".o"ðtÁµ½àÌjÈ
-		OÉCN·×«IuWFNgt@CÌ¼ÌðC".o"ðtÁµ½
-		`Åwè·éD""ÅÍÞ±ÆÉæÁÄC¡Ìt@Cðwè·é±
-		ÆàÂ\Å éi-UIvVð¡gÁÄÍÈçÈ¢jD
-
-	-L <J[lCuÌfBNg¼>
-		OÉ\zµ½J[lCuilibkernel.ajðp¢ÄCAv
-		P[VÌÝð\z·éêÉÍC±ÌIvVÉJ[lC
-		uÌu©ê½fBNg¼ðwè·éD±ÌIvVÌgp
-		áÉÂ¢ÄÍCu3.5 AvP[VÆJ[lðÊXÉ\z·é
-		û@vÌßðQÆ·é±ÆD
+		user.txt				ユーザーズマニュアル
+		ssp_spec.txt			TOPPERS/SSPカーネルの仕様概要
+		extension.txt			機能拡張・チューニングガイド
+		porting.txt				ターゲット依存部 ポーティングガイド
+		configurator.txt		コンフィギュレータ仕様
+		version.txt				変更履歴
+
+
+５．コンフィギュレーションスクリプトの使い方
+
+コンフィギュレーションスクリプト（configure）は，SSPカーネルおよびアプ
+リケーションプログラムを構築するために必要な基本的なコンフィギュレーショ
+ンを行うためのプログラムである．
+
+SSPカーネルを用いてアプリケーションを作成する場合には，まずオブジェクト
+ファイルを置くディレクトリを作成し，そのディレクトリでコンフィギュレー
+ションスクリプトを実行する．オブジェクトファイルを置くディレクトリの場
+所と名称は，任意に決めてよい．
+
+コンフィギュレーションスクリプトに対するオプションは次の通り．
+
+	-T <ターゲット略称>
+		ターゲットシステムの名称を，targetディレクトリの下に置かれてい
+		るターゲット依存部ディレクトリの名称で指定する（必須）．
+
+	-A <アプリケーションプログラム名>
+		アプリケーションプログラムの名称を指定する．省略した場合には，
+		サンプルプログラム（sample1）となる．
+
+	-a <アプリケーションのディレクトリ名>
+		アプリケーションプログラムのソースファイル（システムコンフィギュ
+		レーションファイルを除く）を置いたディレクトリ名を指定する．省
+		略した場合には，オブジェクトファイルを置くディレクトリに置かれ
+		ていることを仮定する．システムコンフィギュレーションファイルは，
+		オブジェクトファイルを置くディレクトリに置くこと．
+
+	-U <オブジェクトファイル名>
+		アプリケーションプログラムのメインのオブジェクトファイル（-A 
+		で指定したアプリケーションプログラム名に".o"を付加したもの）以
+		外に，リンクすべきオブジェクトファイルの名称を，".o"を付加した
+		形で指定する．""で囲むことによって，複数のファイルを指定するこ
+		とも可能である（-Uオプションを複数使ってはならない）．
+
+	-L <カーネルライブラリのディレクトリ名>
+		事前に構築したカーネルライブラリ（libkernel.a）を用いて，アプリ
+		ケーションのみを構築する場合には，このオプションにカーネルライ
+		ブラリの置かれたディレクトリ名を指定する．このオプションの使用
+		例については，「3.5 アプリケーションとカーネルを別々に構築する
+		方法」の節を参照すること．
 
 	-f
-		J[lðÖPÊÅRpCµCu»·éêÉC±ÌI
-		vVðwè·éD±ÌIvVÌgpáÉÂ¢ÄÍCu3.4 J[
-		lðÖPÊÅCu»·éû@vÌßðQÆ·é±ÆD
-
-	-D <SSPJ[lÌ\[XfBNg¼>
-		SSPJ[lÌ\[Xt@Cðu¢½fBNg¼ðwè·éDÈ
-		ªµ½êÉÍCconfigureÌu©êÄ¢éfBNgÆÈéD
-
-	-l <vO~O¾ê>
-		AvP[VvOÌvO~O¾êðwè·éD»
-		_ÅÍCcÆc++ÌÝðT|[gµÄ¢éD
-
-	-t <ev[gfBNg¼>
-		MakefileâTvvOÌev[gÌu©ê½fBNg
-		¼ðwè·éDÈªµ½êÉÍCSSPJ[lÌ\[Xt@Cð
-		u¢½fBNgÌºÌsamplefBNgÆÈéD
-
-	-m <ev[gMakefile¼>
-		MakefileÌev[gÆ·ét@C¼ðwè·éDÈªµ½ê
-		ÉÍCMakefileÆÈéD
-
-	-d <ÀsÂ«¼>
-		^[QbgVXeãÅÌvOÌÀsÂ«iÈ¢µÍCfob
-		OÂ«jÌ¼Ìðwè·éD±ÌIvVðwè·éÆCÀsÂ«
-		ðwè·éV{iTOPPERS_<fobOÂ«¼>jª}Nè`³ê
-		éDÈªµ½êÉÍCÀsÂ«ðwè·éV{Í}Nè`³
-		êÈ¢D
+		カーネルを関数単位でコンパイルしライブラリ化する場合に，このオ
+		プションを指定する．このオプションの使用例については，「3.4 カー
+		ネルを関数単位でライブラリ化する方法」の節を参照すること．
+
+	-D <SSPカーネルのソースディレクトリ名>
+		SSPカーネルのソースファイルを置いたディレクトリ名を指定する．省
+		略した場合には，configureの置かれているディレクトリとなる．
+
+	-l <プログラミング言語>
+		アプリケーションプログラムのプログラミング言語を指定する．現時
+		点では，cとc++のみをサポートしている．
+
+	-t <テンプレートディレクトリ名>
+		Makefileやサンプルプログラムのテンプレートの置かれたディレクト
+		リ名を指定する．省略した場合には，SSPカーネルのソースファイルを
+		置いたディレクトリの下のsampleディレクトリとなる．
+
+	-m <テンプレートMakefile名>
+		Makefileのテンプレートとするファイル名を指定する．省略した場合
+		には，Makefileとなる．
+
+	-d <実行環境名>
+		ターゲットシステム上でのプログラムの実行環境（ないしは，デバッ
+		グ環境）の名称を指定する．このオプションを指定すると，実行環境
+		を指定するシンボル（TOPPERS_<デバッグ環境名>）がマクロ定義され
+		る．省略した場合には，実行環境を指定するシンボルはマクロ定義さ
+		れない．
 
 	-r
-		g[XOL^ÌTvR[hðLøÉ·éêÉC±ÌIvV
-		ðwè·éD±ÌIvVÌgpáÉÂ¢ÄÍCu11.5 g[X
-		OL^ÌTvR[hÌgpû@vÌßðQÆ·é±ÆD
-
-	-p <perlÌpX¼>
-		perlÌpX¼ðwè·éDÈªµ½êÉÍC/usr/local/binÆ
-		/usr/binðTõµCperlÌpX¼ðè·éD
-
-	-g <RtBM
-[^ÌpX¼>
-		RtBM
-[^icfgjÌpX¼ðwè·éDÈªµ½êÉÍC
-		ftHgÌpX¼iSSPJ[lÌ\[XfBNgÌºÌ
-		cfg/cfg/cfgjÆÈéD
-
-RtBM
-[VXNvgªs¤ÍÌÊèÅ éD
-
-(1) MakefileÌ¶¬
-
-ev[gfBNgiftHgÅÍCsamplej©çKØÈMakefileð
-IðµCKvÈÓð«·¦ÄCMakefileð¶¬·éD
-
-(2) TvvOÌ¶¬
-
-wèµ½AvP[VvOªev[gfBNgÉ éêC
-KØÈAvP[VvOÌ\[Xt@CðIðµCKvÈÓð
-«·¦ÄCAvP[VvOÌ\[Xt@Ciá¦ÎC
-sample1.hCsample1.cCsample1.cfgjð¶¬·éD
-
-(3) RtBM
-[^ªpÓÅ«Ä¢é©Ì`FbN
-
-RtBM
-[^icfgjÌÀst@Cª é©`FbNµCt@CªÈ
-¢êÉÍC»Ì|ðoÍ·éD
-
-
-UDMakefileÌC³û@
-
-OÌÍÅà¾µ½æ¤ÉCRtBM
-[VXNvgÉ^¦éIvV
-©çMakefileª¶¬³êéªCRtBM
-[VXNvgÅÎ
-Å«È¢êÉÍCMakefileð¼ÚC³·éKvª éD±±ÅÍCMakefile
-ÌÅCC³ªKvÆÈéÂ\«Ì¢ÓÉÂ¢Äà¾·éD
-
-È¨CMakefileðC³µ½ãÉRtBM
-[VXNvgðÄÀs·
-éÆCC³µ½Makefileªã«³êÄµÜ¤ÌÅÓ·é±ÆiÃ¢àÌª
-Makefile.bakÉÛ¶³êéjD
-
-6.1. MakefileÌÏè`
-
-(A) ^[QbgªÌ
-
-TARGETÉÍC^[QbgVXeÌ¼ÌðCtargetfBNgÌºÉu©ê
-Ä¢é^[QbgË¶fBNgÌ¼ÌÅwè·éD±Ìè`ÍCÊíÍC
-RtBM
-[VXNvgÉÎ·é-TIvVÉæès¤D
-
-(B) IuWFNgt@CÌg£q
-
-CygwinÂ«ÅRpC·éÉÍCOBJEXTð"exe"Éè`·éKvª éD±
-êÍCCygwinÂ«ÅÍC[hW
-[Ìt@C¼Ég£q".exe"ªtÁ
-³êéÌÉÎ·é½ßÌàÌÅ éDCygwinÂ«Å é±Æð»èÅ«êÎC
-RtBM
-[VXNvgª±Ìè`ðs¤D
-
-(C) ÀsÂ«i^[QbgË¶j
-
-^[QbgÉæÁÄÍCÀsÂ«ÉÎµÄ^[QbgË¶ÌR[hð·µ
-·¦éêª éD±êðÂ\É·é½ßÉCÀsÂ«Ì¼ÌðDBGENVÉè`
-µÄ¢éD±Ìè`ÍCÊíÍCRtBM
-[VXNvgÉÎ·
-é-DIvVÉæès¤DÇÌ^[QbgªÇÌÀsÂ«ÉÎµÄ¢é©
-ÍC^[QbgË¶Ì[U[Y}j
-AðQÆ·é±ÆD
-
-(D) J[lCuÌfBNg¼
-
-KERNEL_LIBÉÍCJ[lCuÌu©ê½fBNg¼ðè`·éD
-±Ìè`ÍCÊíÍCRtBM
-[VXNvgÉÎ·é-LIvV
-Éæès¤D
-
-(E) J[lðÖPÊÅRpC·é©Ç¤©
-
-KERNEL_FUNCOBJSÍCJ[lðÖPÊÅRpC·éêÉÍtrueÉè`
-µCt@CPÊÅRpC·éêÉÍ¢è`Æ·éD±Ìè`ÍCÊí
-ÍCRtBM
-[VXNvgÉÎ·é-fIvVÉæès¤D
-
-(F) ¤ÊRpCIvV
-
-·×ÄÌvOÉ¤Ê·éRpCIvVÌÇÁªKvÈêÉÍC
-ºÌÏÌè`ðÏX·éD»ÌRpCIvVªCÁèÌ^[Qbg
-ÅíÉKvÈêÉÍC^[QbgË¶Ìè`ðüê½Makefile.targetðC
-³·×«Å éD
-
-	CDEFS		RpCÉÎ·é-DIvVðLq·éD
-	INCLUDES	RpCÉÎ·é-IIvVðLq·éD
-	COPTS		RpCÉÎ·é»Ì¼ÌIvVðLq·éD
-	LDFLAGS		JÉÎ·éIvVðLq·éD
-	LIBS		CuNÌ½ßÌIvVðLq·éD
-
-ÇÁÌÂ\«Ì éRpCIvVÉÂ¢ÄÍCu6.2 RpCIv
-VvÌßðQÆÌ±ÆD
-
-(G) AvP[VvO¼
-
-APPLNAMEÉÍCAvP[VvO¼ðè`·éDVXeRtB
-M
-[Vt@C¼ÍCAPPLNAMEÉè`µ½¼OÉg£q".cfg"ðtÁ
-µ½¼OÆ·éDÜ½CAvP[VÌCt@CÍCAPPLNAMEÉè
-`µ½¼OÉg£q".c"ðtÁµ½¼OÆ·éD±Ìè`ÍCÊíÍCRtB
-M
-[VXNvgÉÎ·é-AIvVÉæès¤D
-
-(H) AvP[VÌfBNg¼
-
-AvP[VÌ\[Xt@CðCIuWFNgt@Cðu­ÌÆÍÊ
-ÌfBNgÉu­êÉÍCAPPLDIRÉ»ÌfBNg¼ðè`·éD±
-Ìè`ÍCÊíÍCRtBM
-[VXNvgÉÎ·é-aIvV
-Éæès¤DAvP[VÌ\[Xt@Cðu­fBNgª¡ 
-éêÉÍCAPPL_DIRÌè`ðÏX·é±ÆÅÎ·éD
-
-(I) AvP[VÌvOt@C¼
-
-AvP[Vª¡Ì\[Xt@CÅ\¬³êéêÉÍC»ÌIuWF
-Ngt@C¼ðCAPPL_ASMOBJSCAPPL_COBJSCAPPL_CXXOBJSÉñ·éD
-
-(J) AvP[VÌRpCIvV
-
-AvP[VÌRpCÉKvÈRpCIvVâCAvP[
-VªCuðKvÆ·éêÉÍCAPPL_CFLAGS¨æÑAPPL_LIBSÉè
-`·éD
-
-(K) [hW
-[Ìt@C¼
-
-WÌ[hW
-[Ìt@C¼ðOBJNAMEÉè`·éDftHgÍSSP
-Å éD
-
-(L) ^[Qbgt@CÌè`
-
-^[Qbg"all"ÌË¶t@CÆµÄC[hW
-[Ì`®ðwè·éD
-ïÌIÉÍCELF`®ÌÍ$(OBJFILE)CoCi`®ÌÍ$(OBJNAME).binC
-g[ S`®ÌÍ$(OBJNAME).srecðwè·éD$(OBJFILE)ÍCCygwin
-Â«ÅOBJEXTð"exe"Éè`µ½ÉÍ$(OBJNAME).exeC»¤ÅÈ¢êÉÍ
-$(OBJNAME)ÆÈéD
-
-(M) makedepÌIvVÌè`
-
-CygwinÂ«Å[gfBNgª"cygdrive"ÅÈ¢êÉÍCmakedepÌ-RI
-vVÅ[gfBNg¼ð^¦éKvª éDmakedepÌIvVÍC
-ÌáÌæ¤ÉCMAKEDEP_OPTSÉè`·éD
+		トレースログ記録のサンプルコードを有効にする場合に，このオプショ
+		ンを指定する．このオプションの使用例については，「11.5 トレース
+		ログ記録のサンプルコードの使用方法」の節を参照すること．
+
+	-p <perlのパス名>
+		perlのパス名を指定する．省略した場合には，/usr/local/binと
+		/usr/binを探索し，perlのパス名を決定する．
+
+	-g <コンフィギュレータのパス名>
+		コンフィギュレータ（cfg）のパス名を指定する．省略した場合には，
+		デフォルトのパス名（SSPカーネルのソースディレクトリの下の
+		cfg/cfg/cfg）となる．
+
+コンフィギュレーションスクリプトが行う処理は次の通りである．
+
+(1) Makefileの生成
+
+テンプレートディレクトリ（デフォルトでは，sample）から適切なMakefileを
+選択し，必要な箇所を書き換えて，Makefileを生成する．
+
+(2) サンプルプログラムの生成
+
+指定したアプリケーションプログラムがテンプレートディレクトリにある場合，
+適切なアプリケーションプログラムのソースファイルを選択し，必要な箇所を
+書き換えて，アプリケーションプログラムのソースファイル（例えば，
+sample1.h，sample1.c，sample1.cfg）を生成する．
+
+(3) コンフィギュレータが用意できているかのチェック
+
+コンフィギュレータ（cfg）の実行ファイルがあるかチェックし，ファイルがな
+い場合には，その旨を出力する．
+
+
+６．Makefileの修正方法
+
+前の章で説明したように，コンフィギュレーションスクリプトに与えるオプショ
+ン等からMakefileが生成されるが，コンフィギュレーションスクリプトで対応
+できない場合には，Makefileを直接修正する必要がある．ここでは，Makefile
+の中で，修正が必要となる可能性の高い箇所について説明する．
+
+なお，Makefileを修正した後にコンフィギュレーションスクリプトを再実行す
+ると，修正したMakefileが上書きされてしまうので注意すること（古いものが
+Makefile.bakに保存される）．
+
+6.1. Makefileの変数定義
+
+(A) ターゲット略称
+
+TARGETには，ターゲットシステムの名称を，targetディレクトリの下に置かれ
+ているターゲット依存部ディレクトリの名称で指定する．この定義は，通常は，
+コンフィギュレーションスクリプトに対する-Tオプションにより行う．
+
+(B) オブジェクトファイルの拡張子
+
+Cygwin環境でコンパイルする時には，OBJEXTを"exe"に定義する必要がある．こ
+れは，Cygwin環境では，ロードモジュールのファイル名に拡張子".exe"が付加
+されるのに対応するためのものである．Cygwin環境であることを判定できれば，
+コンフィギュレーションスクリプトがこの定義を行う．
+
+(C) 実行環境（ターゲット依存）
+
+ターゲットによっては，実行環境に対応してターゲット依存部のコードを差し
+換える場合がある．これを可能にするために，実行環境の名称をDBGENVに定義
+している．この定義は，通常は，コンフィギュレーションスクリプトに対す
+る-Dオプションにより行う．どのターゲットがどの実行環境に対応しているか
+は，ターゲット依存部のユーザーズマニュアルを参照すること．
+
+(D) カーネルライブラリのディレクトリ名
+
+KERNEL_LIBには，カーネルライブラリの置かれたディレクトリ名を定義する．
+この定義は，通常は，コンフィギュレーションスクリプトに対する-Lオプショ
+ンにより行う．
+
+(E) カーネルを関数単位でコンパイルするかどうか
+
+KERNEL_FUNCOBJSは，カーネルを関数単位でコンパイルする場合にはtrueに定義
+し，ファイル単位でコンパイルする場合には未定義とする．この定義は，通常
+は，コンフィギュレーションスクリプトに対する-fオプションにより行う．
+
+(F) 共通コンパイルオプション
+
+すべてのプログラムに共通するコンパイルオプションの追加が必要な場合には，
+下の変数の定義を変更する．そのコンパイルオプションが，特定のターゲット
+で常に必要な場合には，ターゲット依存の定義を入れたMakefile.target等を修
+正すべきである．
+
+	CDEFS		コンパイラに対する-Dオプションを記述する．
+	INCLUDES	コンパイラに対する-Iオプションを記述する．
+	COPTS		コンパイラに対するその他のオプションを記述する．
+	LDFLAGS		リンカに対するオプションを記述する．
+	LIBS		ライブラリリンクのためのオプションを記述する．
+
+追加の可能性のあるコンパイルオプションについては，「6.2 コンパイルオプ
+ション」の節を参照のこと．
+
+(G) アプリケーションプログラム名
+
+APPLNAMEには，アプリケーションプログラム名を定義する．システムコンフィ
+ギュレーションファイル名は，APPLNAMEに定義した名前に拡張子".cfg"を付加
+した名前とする．また，アプリケーションのメインファイルは，APPLNAMEに定
+義した名前に拡張子".c"を付加した名前とする．この定義は，通常は，コンフィ
+ギュレーションスクリプトに対する-Aオプションにより行う．
+
+(H) アプリケーションのディレクトリ名
+
+アプリケーションのソースファイルを，オブジェクトファイルを置くのとは別
+のディレクトリに置く場合には，APPLDIRにそのディレクトリ名を定義する．こ
+の定義は，通常は，コンフィギュレーションスクリプトに対する-aオプション
+により行う．アプリケーションのソースファイルを置くディレクトリが複数あ
+る場合には，APPL_DIRの定義を変更することで対応する．
+
+(I) アプリケーションのプログラムファイル名
+
+アプリケーションが複数のソースファイルで構成される場合には，そのオブジェ
+クトファイル名を，APPL_ASMOBJS，APPL_COBJS，APPL_CXXOBJSに列挙する．
+
+(J) アプリケーションのコンパイルオプション
+
+アプリケーションのコンパイルに必要なコンパイルオプションや，アプリケー
+ションがライブラリを必要とする場合には，APPL_CFLAGSおよびAPPL_LIBSに定
+義する．
+
+(K) ロードモジュールのファイル名
+
+標準のロードモジュールのファイル名をOBJNAMEに定義する．デフォルトはSSP
+である．
+
+(L) ターゲットファイルの定義
+
+ターゲット"all"の依存ファイルとして，ロードモジュールの形式を指定する．
+具体的には，ELF形式の時は$(OBJFILE)，バイナリ形式の時は$(OBJNAME).bin，
+モトローラ S形式の時は$(OBJNAME).srecを指定する．$(OBJFILE)は，Cygwin
+環境でOBJEXTを"exe"に定義した時には$(OBJNAME).exe，そうでない場合には
+$(OBJNAME)となる．
+
+(M) makedepのオプションの定義
+
+Cygwin環境でルートディレクトリが"cygdrive"でない場合には，makedepの-Rオ
+プションでルートディレクトリ名を与える必要がある．makedepのオプションは，
+次の例のように，MAKEDEP_OPTSに定義する．
 
 MAKEDEP_OPTS = -R cygdrive
 
-6.2. RpCIvV
-
-SSPJ[lÌR[hÉÍCassert}NªgíêÄ¢éDassert}NÍC
-NDEBUGðè`·é±ÆÅCIuWFNgR[h©çÁ·±ÆªÅ«éDJ[
-lÌfobOªI¹·êÎC-DNDEBUGðwèµÄRpCµ½ûªø¦ª
-æ­ÈéD
-
-^[QbgË¶É¨¢ÄCRpCIvVÉ-WerrorixðG[µ
-¢·éjðwèµÄ¢éêª éD»Ìæ¤È^[QbgÉ¨¢ÄCAv
-P[VÅxªð¯çêÈ¢êÉÍC^[QbgË¶ðC³µÄR
-pCIvVðí·éKvª éD
-
-
-VDRtBM
-[^Ìg¢û
-
-RtBM
-[^icfgjÍCTOPPERSV¢ãJ[ldlÌ2.12.5ß
-ÌLqÌÊèC3ÂÌpXÅ\¬³êéD
-
-RtBM
-[^ÍCVXeRtBM
-[Vt@C¼ðp[
-^ÉæèCÈºÌIvVðÂidvÈàÌÌÝjD
+6.2. コンパイルオプション
+
+SSPカーネルのコード中には，assertマクロが使われている．assertマクロは，
+NDEBUGを定義することで，オブジェクトコード中から消すことができる．カー
+ネルのデバッグが終了すれば，-DNDEBUGを指定してコンパイルした方が効率が
+よくなる．
+
+ターゲット依存部において，コンパイルオプションに-Werror（警告をエラー扱
+いする）を指定している場合がある．そのようなターゲットにおいて，アプリ
+ケーションで警告が避けられない場合には，ターゲット依存部を修正してコン
+パイルオプションを削除する必要がある．
+
+
+７．コンフィギュレータの使い方
+
+コンフィギュレータ（cfg）は，TOPPERS新世代カーネル統合仕様書の2.12.5節
+の記述の通り，3つのパスで構成される．
+
+コンフィギュレータは，システムコンフィギュレーションファイル名をパラメー
+タに取り，以下のオプションを持つ（重要なもののみ）．
 
 	--help
-		IvVÌXgÆà¾ð\¦·éD
-
-	-vm--versionn
-		RtBM
-[^Ìo[Wð\¦·éD
-
-	-km--kerneln<J[l¼>
-		J[lÌ¼Ìðwè·éDftHgÍSSPD
-
-	-pm--passn<pXÔ>
-		pXÔðwè·éD1`3Ì¢¸ê©D
-
-	-Im--include-pathn<CN[hpX¼>
-		INCLUDEfBNeBuÉ¨¢ÄCCN[h·éRtBM
-[
-		Vt@CðT·pX¼ðwè·éD
-
-	-Tm--template-filen<ev[gt@C¼>
-		ev[gt@CÌ¼Ìðwè·éDpX2ÆpX3ÅLøD
-
-	--api-table <ÃIAPIe[ut@C¼>
-		ÃIAPIe[uÌt@C¼ðwè·éD
-
-	--cfg1-def-table <læ¾V{e[ut@C¼>
-		læ¾V{e[uÌt@C¼ðwè·éD
-
-	-rm--rom-imagen<[hW
-[¼>
-		[hW
-[ðSR[htH[}bgÌ`ÉÏ·µ½t@CÌ
-		¼Ìðwè·éDpX3ÅÌÝLøD
-
-	-s [--symbol-table] <V{t@C¼>
-		[hW
-[ÌeV{ÆAhXÌÎ\ðÜÞV{
-		t@CÌ¼Ìðwè·éDpX3ÅÌÝLøD
-
-	--id-output-file <IDÔoÍt@C¼>
-		SSPJ[lÅÍgpµÄÍÈçÈ¢BÚ×Íconfigurator.txtÌ
-		uJ[l\¬Eú»t@Cikernel_cfg.cjvÌ(5)ðQÆÌ±ÆB
-
-	--id-input-file <IDÔüÍt@C¼>
-		SSPJ[lÅÍgpµÄÍÈçÈ¢BÚ×Íconfigurator.txtÌ
-		uJ[l\¬Eú»t@Cikernel_cfg.cjvÌ(5)ðQÆÌ±ÆB
+		オプションのリストと説明を表示する．
+
+	-v［--version］
+		コンフィギュレータのバージョンを表示する．
+
+	-k［--kernel］<カーネル名>
+		カーネルの名称を指定する．デフォルトはSSP．
+
+	-p［--pass］<パス番号>
+		パス番号を指定する．1〜3のいずれか．
+
+	-I［--include-path］<インクルードパス名>
+		INCLUDEディレクティブにおいて，インクルードするコンフィギュレー
+		ションファイルを探すパス名を指定する．
+
+	-T［--template-file］<テンプレートファイル名>
+		テンプレートファイルの名称を指定する．パス2とパス3で有効．
+
+	--api-table <静的APIテーブルファイル名>
+		静的APIテーブルのファイル名を指定する．
+
+	--cfg1-def-table <値取得シンボルテーブルファイル名>
+		値取得シンボルテーブルのファイル名を指定する．
+
+	-r［--rom-image］<ロードモジュール名>
+		ロードモジュールをSレコードフォーマットの形に変換したファイルの
+		名称を指定する．パス3でのみ有効．
+
+	-s [--symbol-table] <シンボルファイル名>
+		ロードモジュール中の各シンボルとアドレスの対応表を含むシンボル
+		ファイルの名称を指定する．パス3でのみ有効．
+
+	--id-output-file <ID番号出力ファイル名>
+		SSPカーネルでは使用してはならない。詳細はconfigurator.txtの
+		「○カーネル構成・初期化ファイル（kernel_cfg.c）」の(5)を参照のこと。
+
+	--id-input-file <ID番号入力ファイル名>
+		SSPカーネルでは使用してはならない。詳細はconfigurator.txtの
+		「○カーネル構成・初期化ファイル（kernel_cfg.c）」の(5)を参照のこと。
 
 	--external-id
-		IuWFNgÌIDÔðÛ·éÏÌè`ð¶¬·éDpX2ÅÌÝ
-		LøD
-
-	-Mm--print-dependenciesn<^[QbgV{>
-		VXeRtBM
-[Vt@CÌË¶ÖWðoÍ·éD
-		MakefileÌË¶ÖWð¶¬·éÛÉp¢éD
-
-RtBM
-[^ÌÚ×dlÉÂ¢ÄÍCÊrPDFt@CÌ`ÅzzµÄ¢
-éuTOPPERSV¢ãJ[lpRtBM
-[^dlvðQÆ·é±ÆD
-
-
-WDVXeT[rX
-
-
-8.1. VAC^tF[XhCo
-
-VAC^tF[XhCoÍCVA|[gðµ¤½ßÌhCoÅ
- éD
-
-VAC^tF[XhCoÍCVXeRtBM
-[Vt@C
-Åserial.cfgðCN[h·é±ÆÅCVXeÉgÝÞ±ÆªÅ«éD
-VAC^tF[XhCoðÄÑo·\[Xt@CÅÍCserial.hð
-CN[h·éD
-
-8.1.1. VAC^tF[XhCoÌT[rXR[
-
-VAC^tF[XhCoðÄÑo·T[rXR[ÌdlÍÌÊè
-Å éD±ÌÅCVA|[gÌIDÔiportidjÌðßÍ^[QbgË
-¶ÆÈéD
-
-±êçÌT[rXR[ÍCñ^XNReLXg©çÄÑo·±ÆÍÅ«È
-¢DÜ½Cserial_rea_datÆserial_wri_datÍCfBXpb`Û¯óÔÅÄÑ
-o·±ÆÍÅ«È¢D¢¸êàCÄÑoµ½êÉÍE_CTXG[ÆÈéD
+		オブジェクトのID番号を保持する変数の定義を生成する．パス2でのみ
+		有効．
+
+	-M［--print-dependencies］<ターゲットシンボル>
+		システムコンフィギュレーションファイルの依存関係を出力する．
+		Makefile中の依存関係を生成する際に用いる．
+
+コンフィギュレータの詳細仕様については，別途PDFファイルの形で配布してい
+る「TOPPERS新世代カーネル用コンフィギュレータ仕様」を参照すること．
+
+
+８．システムサービス
+
+
+8.1. シリアルインタフェースドライバ
+
+シリアルインタフェースドライバは，シリアルポートを扱うためのドライバで
+ある．
+
+シリアルインタフェースドライバは，システムコンフィギュレーションファイ
+ルでserial.cfgをインクルードすることで，システムに組み込むことができる．
+シリアルインタフェースドライバを呼び出すソースファイルでは，serial.hを
+インクルードする．
+
+8.1.1. シリアルインタフェースドライバのサービスコール
+
+シリアルインタフェースドライバを呼び出すサービスコールの仕様は次の通り
+である．この中で，シリアルポートのID番号（portid）の解釈はターゲット依
+存となる．
+
+これらのサービスコールは，非タスクコンテキストから呼び出すことはできな
+い．また，serial_rea_datとserial_wri_datは，ディスパッチ保留状態で呼び
+出すことはできない．いずれも，呼び出した場合にはE_CTXエラーとなる．
 
 (1) ER serial_opn_por(ID portid)
 
-portidÅwè³ê½VA|[gðI[vµCóM^MªÂ\ÈóÔÉ
-·éD
+portidで指定されたシリアルポートをオープンし，受信／送信が可能な状態に
+する．
 
 (2) ER serial_cls_por(ID portid)
 
-portidÅwè³ê½VA|[gðN[Y·éD
+portidで指定されたシリアルポートをクローズする．
 
 (3) ER_UINT serial_rea_dat(ID portid, char *buf, uint_t len)
 
-portidÅwè³ê½VA|[g©çClenoCgÌ¶ñðóMµCbuf©
-çÌÌæÉüêéDVA|[gÌóMobt@Éi[³êÄ¢éoCgª
-len oCgæè­È¢êCæ¾Â\Èf[^ðbufÉi[µ½ç¦ÀÉ^[
-·éDóMµ½¶Ü½ÍG[R[hðÔ·D
+portidで指定されたシリアルポートから，lenバイトの文字列を受信し，bufか
+らの領域に入れる．シリアルポートの受信バッファに格納されているバイト数が
+len バイトより少ない場合，取得可能なデータをbufに格納したら即座にリターン
+する．受信した文字数またはエラーコードを返す．
 
 (4) ER_UINT serial_wri_dat(ID portid, const char *buf, uint_t len)
 
-portidÅwè³ê½VA|[gÉCbuf©çÌlenoCgÌ¶ñðM·
-éDMÉVA|[gÌMobt@ªtÉÈÁ½êC»Ì_Å
-¦ÀÉ^[·éDMµ½¶Ü½ÍG[R[hðÔ·D
+portidで指定されたシリアルポートに，bufからのlenバイトの文字列を送信す
+る．送信中にシリアルポートの送信バッファがフルになった場合，その時点で
+即座にリターンする．送信した文字数またはエラーコードを返す．
 
 (5) ER serial_ctl_por(ID portid, uint_t ioctl)
 
-portidÅwè³ê½VA|[gÌ§äîñðCioctlÅ¦³êélÉÝè·
-éD
-
-ioctlÉÍCÈºÌ§äîñð\·èðCrbgÉ_aðÆÁ½àÌð
-wè·éD
-
-	IOCTL_ECHOiGR[obN[hj
-		±ÌrbgðÝè·éÆCVAC^tF[XhCoªGR[
-		obNðs¤DïÌIÉÍCobt@©ç¶ðæèo·xÉC»Ì
-		¶ð«o·D
-
-	IOCTL_CRLFiüs[hj
-		LFiline feedjð«o·ÆCCRicarriage returnj{LFÉÏ·µ
-		Ä«o·D
-
-
-È¨CI[v¼ãÌftHgÌÝèlÍ(IOCTL_ECHO | IOCTL_CRLF)Å éD
-
-
-8.1.2. VAC^tF[XhCoÌ»Ì¼ÌT[rX
-
-VAC^tF[XhCoÍCOLÌT[rXR[ÉÁ¦ÄCú»
-Æ¢M¶ÌæoµðÂDú»ÍCJ[lÉú»[
-`ÆµÄo^·éDÜ½C^[QbgË¶ÅCú»CI¹C
-ÝT[rX[`ðÂD±êçÌo^Íserial.cfgÉÜÜêéD
+portidで指定されたシリアルポートの制御情報を，ioctlで示される値に設定す
+る．
+
+ioctlには，以下の制御情報を表す定数を，ビット毎に論理和をとったものを
+指定する．
+
+	IOCTL_ECHO（エコーバックモード）
+		このビットを設定すると，シリアルインタフェースドライバがエコー
+		バックを行う．具体的には，バッファから文字を取り出す度に，その
+		文字を書き出す．
+
+	IOCTL_CRLF（改行モード）
+		LF（line feed）を書き出すと，CR（carriage return）＋LFに変換し
+		て書き出す．
+
+
+なお，オープン直後のデフォルトの設定値は(IOCTL_ECHO | IOCTL_CRLF)である．
+
+
+8.1.2. シリアルインタフェースドライバのその他のサービス
+
+シリアルインタフェースドライバは，前記のサービスコールに加えて，初期化
+処理と未送信文字の取出し処理を持つ．初期化処理は，カーネルに初期化ルー
+チンとして登録する．また，ターゲット依存で，初期化処理，終了処理，割込
+みサービスルーチンを持つ．これらの登録処理はserial.cfgに含まれる．
 
 (1) void serial_initialize(intptr_t exinf)
 
-VAC^tF[XhCoðú»·éDJ[lÉú»[`Æ
-µÄo^·éDexinfÍ³·éD
+シリアルインタフェースドライバを初期化する．カーネルに初期化ルーチンと
+して登録する．exinfは無視する．
 
 (2) bool_t serial_get_chr(ID portid, char *p_c)
 
-portidÅwè³ê½VA|[gÌMobt@Ì¶ðCp_cÌw·Ôn
-ÉæèoµCtrueðÔ·ÖD¶ªÈ©Á½ÉÍCfalseðÔ·DI¹
-[`ÅÄÑo·±ÆðzèµÄ¢éD
-
-
-8.2. J[lN®bZ[WÌoÍ
-
-J[lN®bZ[WÌoÍÍCJ[lÌN®ÉCJ[lÌ¼Ìâo[
-WÔCì \¦ÈÇðoÍ·é½ßÌ@\Å éD
-
-J[lN®bZ[WÌoÍÍCVXeRtBM
-[Vt@C
-Åbanner.cfgðCN[h·é±ÆÅCVXeÉgÝÞ±ÆªÅ«éD
-
-J[lN®bZ[WÌoÍÍCÌÖÅ\¬³êéD
+portidで指定されたシリアルポートの送信バッファ中の文字を，p_cの指す番地
+に取り出し，trueを返す関数．文字がなかった時には，falseを返す．終了処理
+ルーチン中で呼び出すことを想定している．
+
+
+8.2. カーネル起動メッセージの出力
+
+カーネル起動メッセージの出力は，カーネルの起動時に，カーネルの名称やバー
+ジョン番号，著作権表示などを出力するための機能である．
+
+カーネル起動メッセージの出力は，システムコンフィギュレーションファイル
+でbanner.cfgをインクルードすることで，システムに組み込むことができる．
+
+カーネル起動メッセージの出力は，次の関数で構成される．
 
 (1) void print_banner(intptr_t exinf)
 
-VXeO@\ðp¢ÄCJ[lN®bZ[WðoÍ·éDbanner.cfg
-ÉæÁÄCJ[lÉú»[`ÆµÄo^³êéDexinfÍ³³êéD
-
-
-XDT|[gCu
-
-T|[gCuÍCAvP[VâVXeT[rXðì¬·é½ß
-ÉpÅ«éCuÖQÅ éD
-
-
-9.1. L
-[ìCuÖ
-
-L
-[ìCuÍCL
-[wb_ðÜÞO\¢Ì_uNL
-[
-ðµ¤CuÅ éDL
-[wb_ÌGgÍL
-[ÌæªÌGg
-COGgÍL
-[ÌöÌGgÆ·éDÜ½CL
-[ÌæªÌG
-gÌOGgÆCL
-[ÌöÌGgÌGgÍCL
-[wb_
-Æ·éDóÌL
-[ÍCGgCOGgÆà©ª©gðw·L
-[wb
-_Å çí·D
-
-L
-[ìCuÖðp¢éêÉÍCqueue.hðCN[h·éD
-
-L
-[wb_ÆGgÌ½ßÌf[^\¢ÆµÄCQUEUE\¢Ìðp¢éD
-QUEUE\¢ÌÌè`ÍÌÊèDQUEUE^ÌÏÍzñÆµÄè`·é±ÆðOñÆ
-µÄ¢éD
+システムログ機能を用いて，カーネル起動メッセージを出力する．banner.cfg
+によって，カーネルに初期化ルーチンとして登録される．exinfは無視される．
+
+
+９．サポートライブラリ
+
+サポートライブラリは，アプリケーションやシステムサービスを作成するため
+に利用できるライブラリ関数群である．
+
+
+9.1. キュー操作ライブラリ関数
+
+キュー操作ライブラリは，キューヘッダを含むリング構造のダブルリンクキュー
+を扱うライブラリである．キューヘッダの次エントリはキューの先頭のエント
+リ，前エントリはキューの末尾のエントリとする．また，キューの先頭のエン
+トリの前エントリと，キューの末尾のエントリの次エントリは，キューヘッダ
+とする．空のキューは，次エントリ，前エントリとも自分自身を指すキューヘッ
+ダであらわす．
+
+キュー操作ライブラリ関数を用いる場合には，queue.hをインクルードする．
+
+キューヘッダとエントリのためのデータ構造として，QUEUE構造体を用いる．
+QUEUE構造体の定義は次の通り．QUEUE型の変数は配列として定義することを前提と
+している．
 
 	typedef struct
@@ -1070,175 +958,154 @@
 	} QUEUE;
 
-QUEIDXÍQUEUE^ÌzñÌCfbNXlð\·f[^^Å éD
+QUEIDXはQUEUE型の配列のインデックス値を表すデータ型である．
 
 typedef uint8_t QUEIDX;
 
 
-L
-[ìÌ½ßÉpÓµÄ¢éÖÍÌÊèD
+キュー操作のために用意している関数は次の通り．
 
 (1) queue_initialize(QUEUE *queue , QUEIDX queue_null)
 
-L
-[ðú»·éDqueueÉÍL
-[wb_ðCqueue_nullÉÍ
-³øÈL
-[wb_ð¦·CfbNXlðwè·éD
+キューを初期化する．queueにはキューヘッダを，queue_nullには
+無効なキューヘッダを示すインデックス値を指定する．
 
 (2) queue_insert_prev(QUEUE *top , QUEIDX queue , QUEIDX entry)
 
-queueÅwè·éGgÌOÉCentryÅwè·éGgð}ü·éD
-topÍqueueCentryðÜÞQUEUE^zñÌæªAhXÅ éD
-queueÉL
-[wb_ðwèµ½êÉÍCL
-[ÌöÉp_entryÅwè·
-éGgð}ü·é±ÆÉÈéD
+queueで指定するエントリの前に，entryで指定するエントリを挿入する．
+topはqueue，entryを含むQUEUE型配列の先頭アドレスである．
+queueにキューヘッダを指定した場合には，キューの末尾にp_entryで指定す
+るエントリを挿入することになる．
 
 (3) queue_delete_next(QUEUE *top , QUEIDX queue)
 
-queueÅwè·éGgÌÌGgðíµCíµ½GgÌ
-L
-[zñÌCfbNXðÔ·D
-topÍqueueCentryðÜÞQUEUE^zñÌæªAhXÅ éD
+queueで指定するエントリの次のエントリを削除し，削除したエントリの
+キュー配列中のインデックスを返す．
+topはqueue，entryを含むQUEUE型配列の先頭アドレスである．
 
 (6) queue_empty(QUEUE *queue , QUEIDX queue_null)
 
-L
-[ªóÌêÉÍtrueC»¤ÅÈ¢êÉÍfalseðÔ·DqueueÉÍ
-L
-[wb_ðCqueue_nullÉÍ³øÈL
-[wb_ð¦·CfbNXlð
-wè·éD
-
-
-PODgpãÌÓÆqg
-
-10.1. ^C}hCoÌgÝ
-
-^C}hCoðVXeÉgÝÞ½ßÉCVXeRtBM
-[V
-t@CÌæªÅtarget_timer.cfgðCN[h·éKvª éD
-
-10.2. assert}NÌ
-
-SSPJ[lÌR[hÉÍCassert}NªgíêÄ¢éDassert}NÌè
-`Ít_stddef.hÉÜÜêCassertª¸sµ½êÌÅãÌiÊíÍCv
-Oðâ~³¹éjÍC^[QbgË¶ÌTOPPERS_assert_abortÅ
-è³êéD
-
-assertª¸sµ½êCVXeJ­ÍfobKÉÆ·Ìª]Üµ¢ªC
-VXeÒ­ÌÎ@ÍCVXeÉÎ·évÉË¶·éD»±ÅC^[
-QbgË¶ÌTOPPERS_assert_abortðCVXevÉvµ½KØÈ
-Éu«·¦éKvª éDVXevÉæÁÄÍCNDEBUGðè`µÄassert
-}NÌðIuWFNgR[h©çÁ·iu6.2 RpCIvVv
-ÌßðQÆjû@àl¦çêéD
-
-
-10.3. IuWFNgIDÌÇ
-
-TOPPERS/SSPJ[lÅÍCIuWFNgÌIDÔðCRtBM
-[^ª
-èt¯éû@ªî{ÆÈÁÄ¢éD
-
-AvP[VvOÅIuWFNgÌIDÔðQÆ·éêÉÍC
-Ì2ÂÌû@ªl¦çêéD
-
-(1) IuWFNg¯Ê¼ðp¢é
-
-IuWFNg¶¬Ì½ßÌÃIAPIiCRE_YYYjÌæ1p[^ÉLqµ½Iu
-WFNg¯Ê¼ðCAvP[VvOÅàp¢éû@D
-
-RtBM
-[^ÍCIuWFNg¯Ê¼ðCèt¯½IDÔÉ}Nè
-`·éC¾êvvZbTÌfBNeBui#definejðkernel_cfg.hÉ¶
-¬·é½ßCAvP[VvO©çkernel_cfg.hðCN[h·
-éKvª éD
-
-±Ìû@ÍCIuWFNgR[hÉIDÔª¼ÚßÜêé½ßÉÀsø
-¦ªÇ¢êûÅCRtBM
-[^ªÀs³êÄkernel_cfg.hª«·íé
-xÉCAvP[VvOÌÄRpCªKvÉÈéÆ¢¤_ª
- éD»Ì½ßCAvP[VvOð\¬·ét@CÌÅCê
-Ìt@CÌÝÅIuWFNg¯Ê¼ðQÆ·é\¬É·éÆ¢Á½Hvð
-·é±Æª]Üµ¢D
-
-(2) IuWFNgÌIDÔðÛ·éÏðp¢é
-
-IuWFNgÌIDÔðÛ·éconst®«ðtÁµ½ÏðpÓµCAvP[
-VvOÅÍC»ÌÏðp¢éû@D
-
-á¦ÎCTASK1Æ¢¤IuWFNg¯Ê¼Ì^XNÉÎµÄCÌæ¤ÈÏð
-pÓ·éD
+キューが空の場合にはtrue，そうでない場合にはfalseを返す．queueには
+キューヘッダを，queue_nullには無効なキューヘッダを示すインデックス値を
+指定する．
+
+
+１０．使用上の注意とヒント
+
+10.1. タイマドライバの組込み
+
+タイマドライバをシステムに組み込むために，システムコンフィギュレーショ
+ンファイルの先頭でtarget_timer.cfgをインクルードする必要がある．
+
+10.2. assertマクロの処理
+
+SSPカーネルのコード中には，assertマクロが使われている．assertマクロの定
+義はt_stddef.hに含まれ，assertが失敗した場合の最後の処理（通常は，プロ
+グラムを停止させる処理）は，ターゲット依存部のTOPPERS_assert_abortで決
+定される．
+
+assertが失敗した場合，システム開発中はデバッガに落とすのが望ましいが，
+システム稼働時の対処法は，システムに対する要件に依存する．そこで，ター
+ゲット依存部のTOPPERS_assert_abortを，システム要件に合致した適切な処理
+に置き換える必要がある．システム要件によっては，NDEBUGを定義してassert
+マクロの処理をオブジェクトコード中から消す（「6.2 コンパイルオプション」
+の節を参照）方法も考えられる．
+
+
+10.3. オブジェクトIDの管理
+
+TOPPERS/SSPカーネルでは，オブジェクトのID番号を，コンフィギュレータが割
+り付ける方法が基本となっている．
+
+アプリケーションプログラム中でオブジェクトのID番号を参照する場合には，
+次の2つの方法が考えられる．
+
+(1) オブジェクト識別名を用いる
+
+オブジェクト生成のための静的API（CRE_YYY）の第1パラメータに記述したオブ
+ジェクト識別名を，アプリケーションプログラム中でも用いる方法．
+
+コンフィギュレータは，オブジェクト識別名を，割り付けたID番号にマクロ定
+義するC言語プリプロセッサのディレクティブ（#define）をkernel_cfg.hに生
+成するため，アプリケーションプログラムからkernel_cfg.hをインクルードす
+る必要がある．
+
+この方法は，オブジェクトコード中にID番号が直接埋め込まれるために実行効
+率が良い一方で，コンフィギュレータが実行されてkernel_cfg.hが書き換わる
+度に，アプリケーションプログラムの再コンパイルが必要になるという欠点が
+ある．そのため，アプリケーションプログラムを構成するファイルの中で，一
+部のファイルのみでオブジェクト識別名を参照する構成にするといった工夫を
+することが望ましい．
+
+(2) オブジェクトのID番号を保持する変数を用いる
+
+オブジェクトのID番号を保持するconst属性を付加した変数を用意し，アプリケー
+ションプログラム中では，その変数を用いる方法．
+
+例えば，TASK1というオブジェクト識別名のタスクに対して，次のような変数を
+用意する．
 
 const ID TASK1_id = TASK1;
 
-AvP[VvOÅÍC±ÌÏiTASK1_idjðp¢é±ÆÅC
-RtBM
-[^ªÀs³êÄkernel_cfg.hª«·íéxÉCãLÌÏ
-è`ðÜñ¾t@CÌÝðÄRpC·êÎæ¢±ÆÉÈéD
-
-±Ìû@ÍCAvP[VvOÌÄRpCðÅ¬ÀÉÅ«é
-_ª éêûÅCÏÌ½ßÌÌæªKvÉÈé±ÆÉÁ¦ÄCiv
-ZbTÉæÁÄÍjÏANZXÌ½ßÌI[owbhª¶¶éÆ¢¤_ª
- éDÜ½CèÅÍÈ­ÏÅ é±Æ©çC¼ÌÏÌú»ÉÍg¦È
-¢Æ¢¤§Àª éD
-
-È¨CTOPPERS/SSPJ[lÌRtBM
-[^ÍC--external-idIvV
-ðtÁ·é±ÆÉæèCãLÌÏè`ðkernel_cfg.cÉ¶¬·é@\ð
-ÁÄ¢éÌÅC·×ÄÌIuWFNgIDð±Ìû@ÅQÆ·éêÉÍC±
-Ì@\ðp¢é±Æð§·éD
-
-RtBM
-[^ÉæéIDÔt¯Ìà¤1ÂÌÛèÆµÄCRtBM
-
-[Vt@CÌC³ÉæèCIuWFNgIDÌt¯ªÏíÁÄµÜ¤
-±Æª°çêéD±êÍCAvP[V\tgEFAÌÝvdlÉID
-ÔªLÚ³êÄ¢éêâCfobOìÆÉ¨¢ÄIDÔð¦lÆµÄ\¦
-âmFªÅ«È¢êÉCìÆø¦ðáº³¹éÂ\«ªl¦çêéD
-
-±ÌâèÉÎ·é½ßÉCTOPPERSV¢ãJ[lpRtBM
-[^ÉÍC
-IDÔÌt¯Êðt@CÉ«o·@\i--id-output-fileIvVj
-ÆCIDÔÌt¯ðt@C©çæèÞ@\i--id-input-fileIvVj
-ÆªpÓ³êÄ¢éD½¾µSSPJ[lÌêC»_ÅÍ®ìãÌâèª è
-gp·é±ÆªÅ«È¢DÚ×Í configurator.txt ÌuJ[l\¬Eú
-»t@Cikernel_cfg.cjvÌ (5) ðQÆÌ±ÆD
-
-10.4. J[lÌàV{Ìl[
-
-SSPJ[lÅÍCW
-[àÌ¼Ìª¼ÌW
-[àÌ¼ÌÆÕË·
-é±Æðð¯é½ßÉCJ[lÌàV{ÍCC¾êxÅCæªª
-"_kernel_"Ü½Í"_KERNEL_"Å é¼ÌÆµÄ¢éD
-
-±êð\[XR[hÌÂÇ«Æ¼§³¹é½ßÉCSSPJ[lÅÍC\[XR[
-hÍ©RÈ¼Oðp¢ÄLqµCC¾êvvZbTÌ}Nè`i#definej
-ðp¢ÄC»êð"_kernel_"Ü½Í"_KERNEL_"ÅnÜé¼Oi©RÈ¼Oª
-yyyyyÌêÉÍC_kernel_yyyyyjÉl[·édgÝðp¢Ä¢éD
-
-ïÌIÉÍCÖA·éfBNgÉxxx_rename.defðu«C»±©çl[
-Ì½ßÌwb_t@Cixxx_rename.h¨æÑxxx_unrename.hjð¶¬·é
-c[iutils/genrenamejðpÓµÄ¢éD
-
-±ÌdgÝÍC\[XR[hÌÂÇ«üãÉð§ÂêûÅC¾Qà éDá¦
-ÎC½­ÌfobKÅC\[XR[hÌ¼ÌÆIuWFNgR[hÌ¼Ì
-ªÙÈé½ßÉC\[XR[hÌÏ¼ðwèµÄlðÇñ¾èCÖ¼ð
-wèµÄu[N|Cgðu­Æ¢Á½±ÆªÅ«È¢D
-
-±ÌóµÉÎ·é½ßÉCSSPJ[lÅÍC\[XR[hÌY·é¼Ì
-ðl[·é½ßÌ[eBeBiutils/applyrenamejðpÓµÄ¢éD
-applyrename[eBeBÉCl[è`t@Cixxx_rename.defjÌv
-tBbNXixxxÌªjÆCl[µ½¢t@CXgð^¦éÆC
-l[ðsÈ¤Dá¦ÎCkernelfBNgÌ·×ÄÌt@CÉÎµ
-ÄCJ[lÌàV{ðl[·éÉÍCÌR}hðÀs·êÎ
-æ¢D
+アプリケーションプログラム中では，この変数（TASK1_id）を用いることで，
+コンフィギュレータが実行されてkernel_cfg.hが書き換わる度に，上記の変数
+定義を含んだファイルのみを再コンパイルすればよいことになる．
+
+この方法は，アプリケーションプログラムの再コンパイルを最小限にできる利
+点がある一方で，変数のためのメモリ領域が必要になることに加えて，（プロ
+セッサによっては）変数アクセスのためのオーバヘッドが生じるという欠点が
+ある．また，定数ではなく変数であることから，他の変数の初期化には使えな
+いという制限がある．
+
+なお，TOPPERS/SSPカーネルのコンフィギュレータは，--external-idオプショ
+ンを付加することにより，上記の変数定義をkernel_cfg.c中に生成する機能を
+持っているので，すべてのオブジェクトIDをこの方法で参照する場合には，こ
+の機能を用いることを推奨する．
+
+コンフィギュレータによるID番号割付けのもう1つの課題として，コンフィギュ
+レーションファイルの修正により，オブジェクトIDの割付けが変わってしまう
+ことが挙げられる．これは，アプリケーションソフトウェアの設計仕様書にID
+番号が記載されている場合や，デバッグ作業においてID番号を即値として表示
+や確認ができない場合に，作業効率を低下させる可能性が考えられる．
+
+この問題に対応するために，TOPPERS新世代カーネル用コンフィギュレータには，
+ID番号の割付け結果をファイルに書き出す機能（--id-output-fileオプション）
+と，ID番号の割付けをファイルから取り込む機能（--id-input-fileオプション）
+とが用意されている．ただしSSPカーネルの場合，現時点では動作上の問題があり
+使用することができない．詳細は configurator.txt の「○カーネル構成・初期
+化ファイル（kernel_cfg.c）」の (5) を参照のこと．
+
+10.4. カーネルの内部シンボルのリネーム
+
+SSPカーネルでは，モジュール内部の名称が他のモジュール内部の名称と衝突す
+ることを避けるために，カーネルの内部シンボルは，C言語レベルで，先頭が
+"_kernel_"または"_KERNEL_"である名称としている．
+
+これをソースコードの可読性と両立させるために，SSPカーネルでは，ソースコー
+ドは自然な名前を用いて記述し，C言語プリプロセッサのマクロ定義（#define）
+を用いて，それを"_kernel_"または"_KERNEL_"で始まる名前（自然な名前が
+yyyyyの場合には，_kernel_yyyyy）にリネームする仕組みを用いている．
+
+具体的には，関連するディレクトリにxxx_rename.defを置き，そこからリネー
+ムのためのヘッダファイル（xxx_rename.hおよびxxx_unrename.h）を生成する
+ツール（utils/genrename）を用意している．
+
+この仕組みは，ソースコードの可読性向上に役立つ一方で，弊害もある．例え
+ば，多くのデバッガで，ソースコード中の名称とオブジェクトコード中の名称
+が異なるために，ソースコード中の変数名を指定して値を読んだり，関数名を
+指定してブレークポイントを置くといったことができない．
+
+この状況に対応するために，SSPカーネルでは，ソースコード中の該当する名称
+をリネームするためのユーティリティ（utils/applyrename）を用意している．
+applyrenameユーティリティに，リネーム定義ファイル（xxx_rename.def）のプ
+リフィックス（xxxの部分）と，リネームしたいファイルリストを与えると，リ
+ネーム処理を行なう．例えば，kernelディレクトリのすべてのファイルに対し
+て，カーネルの内部シンボルをリネームするには，次のコマンドを実行すれば
+よい．
 
 	% cd kernel
 	% ../utils/applyrename kernel *
 
-Ü½C^[QbgË¶ÌfBNgÌ·×ÄÌt@CÉÎµÄCJ[l
-ÌàV{ðl[·éÉÍCÌæ¤ÈR}hðÀs·êÎæ¢D
+また，ターゲット依存部のディレクトリのすべてのファイルに対して，カーネ
+ルの内部シンボルをリネームするには，次のようなコマンドを実行すればよい．
 
 	% cd target/cq_starm_gcc/
@@ -1246,144 +1113,141 @@
 	% ../../utils/applyrename ../../kernel/kernel *
 
-10.5. VXeÌN®Ìú»
-
-VXeÌN®ÉAvP[VÅKvÆÈéú»ðs¤½ßÌ@
-\ÆµÄú»[`ªpÓ³êÄ¢éªCú»[`ªÀs³êéæ
-èà¢^C~OÅÀs·é±ÆªKvÈú»ª éêª éD
-
-±Ìæ¤ÈêÉp¢é½ßÉCWIÈX^[gAbvW
-[©çC^[
-QbgVXeË¶Ìú»tbNihardware_init_hookjðÄÑo·±ÆÆ
-µÄ¢éDhardware_init_hookÍCJ[lÌ^[QbgË¶ÅpÓ³êÄ
-¢éÌªWÅ éªC±êðAvP[VÅpÓµ½àÌÉu«·¦C
-»ÌÅAvP[VÅKvÆÈéú»ðs¤±ÆªÅ«éD
-
-½¾µChardware_init_hookÌì¬·éêÉÍCbssZNVÆdataZNV
-ªú»³êÄ¢È¢±ÆâCCuªú»³êÄ¢È¢±ÆCC¾ê
-ÅLqÅ«éÆÍÀçÈ¢±ÆÈÇÉÓªKvÅ éDì¬É ½ÁÄÍC
-u^[QbgË¶ |[eBOKChvðQÆ·é±ÆD
-
-J[lÌX^[gAbvW
-[ªhardware_init_hookðÄÑo·æ¤É
-À³êÄ¢È¢êÉÍCX^[gAbvW
-[ðAvP[VÅ
-pÓµ½àÌÉu«·¦éû@ð§·éD
-
-PPDQlîñ
-
-11.1. pðÆpñ
-
-SSPJ[lÌpðÍCet@CÌæªÉ\¦³êÄ¢éDì ÍCe
-t@CÌæªÉ\¦³êÄ¢éì ÒªÛLµÄ¢éD
-
-pðÌ(3)Ì(b)É¨¢ÄCpÌ`ÔðTOPPERSvWFNgÉñ·éû
-@ÆµÄÍCSSPJ[lðpµ½»iÌ¼ÌÆpªìC»i»µ½ïÐ¼
-ÆÆíÌîñðCÈºÌURLÌy[W©çñ·éàÌÆ·éD
+10.5. システムの起動時の初期化処理
+
+システムの起動時にアプリケーションで必要となる初期化処理を行うための機
+能として初期化ルーチンが用意されているが，初期化ルーチンが実行されるよ
+りも早いタイミングで実行することが必要な初期化処理がある場合がある．
+
+このような場合に用いるために，標準的なスタートアップモジュールから，ター
+ゲットシステム依存の初期化フック（hardware_init_hook）を呼び出すことと
+している．hardware_init_hookは，カーネルのターゲット依存部で用意されて
+いるのが標準であるが，これをアプリケーションで用意したものに置き換え，
+その中でアプリケーションで必要となる初期化処理を行うことができる．
+
+ただし，hardware_init_hookの作成する場合には，bssセクションとdataセクショ
+ンが初期化されていないことや，ライブラリが初期化されていないこと，C言語
+で記述できるとは限らないことなどに注意が必要である．作成にあたっては，
+「ターゲット依存部 ポーティングガイド」を参照すること．
+
+カーネルのスタートアップモジュールがhardware_init_hookを呼び出すように
+実装されていない場合には，スタートアップモジュールをアプリケーションで
+用意したものに置き換える方法を推奨する．
+
+１１．参考情報
+
+11.1. 利用条件と利用報告
+
+SSPカーネルの利用条件は，各ファイルの先頭に表示されている．著作権は，各
+ファイルの先頭に表示されている著作権者が保有している．
+
+利用条件の(3)の(b)において，利用の形態をTOPPERSプロジェクトに報告する方
+法としては，SSPカーネルを利用した製品の名称と応用分野，製品化した会社名
+と業種等の情報を，以下のURLのページから報告するものとする．
 
 	http://www.toppers.jp/report.html
 
-Ü½»ÌÛÉCSSPJ[lðgpµÄÌRgâ²Ó©à¢½¾¯éÆK¢
-Å éD
-
-11.2. ÛØEKp«ET|[g
-
-SSPJ[lÍ³ÛØÅñ³êÄ¢éàÌÅ éDJ­Ò¨æÑTOPPERSv
-WFNgÍCSSPJ[lÉÖµÄCÁèÌgpÚIÉÎ·éK«àÜßÄC
-¢©ÈéÛØàsíÈ¢DÜ½CSSPJ[lÌpÉæè¼ÚIÜ½ÍÔÚI
-É¶¶½¢©Èé¹QÉÖµÄàC»ÌÓCðíÈ¢D
-
-J­Ò¨æÑTOPPERSvWFNgÍCSSPJ[lÉÖ·éT|[gÌñ©Í
-µÄ¢È¢DSSPJ[lÉÖµÄ¿âª éêÍCãqÌTOPPERS[U[
-Y[OXgðpµÄ¢½¾¯éÆK¢Å éDmÀÈT|[gªK
-vÈêÉÍCLÅT|[gT[rXðñµÄ¢éïÐÉk³ê½¢D
-
-11.3. oO|[g
-
-SSPJ[lÉoOââè_ð­©³ê½êÉÍCãqÌTOPPERS[U[Y
-[OXgÉñµÄ~µ¢D
-
-[OXgÉoOââè_ÈÇðñ·éêÉÍCKvÉ¶ÄÌ
-îñðmç¹Ä~µ¢D
-
-	gpµÄ¢éJ[lÉÖ·éîñ
-		E^[QbgñË¶Ìo[W
-		EgpµÄ¢é^[QbgË¶Æ»Ìo[W
-		ETOPPERSvWFNg©çÌ[XÉÎ·éü¢Ói êÎj
-
-	^[QbgVXeÉÖ·éîñ
-		E^[QbgvZbTÌíÞ
-		E^[Qbg{[hÌíÞ
-
-	zXgÉÖ·éîñ
-		EOSÌo[WiT[rXpbNÌKpóµàj
-		ERpCÈÇÌJ­Â«Ìo[WiCygwinÌo[Wàj
-
-11.4. EFuTCg
-
-TOPPERSvWFNgÌEFuTCgÍCÈºÌURLÉ éD
+またその際に，SSPカーネルを使用してのコメントやご意見もいただけると幸い
+である．
+
+11.2. 保証・適用性・サポート
+
+SSPカーネルは無保証で提供されているものである．開発者およびTOPPERSプロ
+ジェクトは，SSPカーネルに関して，特定の使用目的に対する適合性も含めて，
+いかなる保証も行わない．また，SSPカーネルの利用により直接的または間接的
+に生じたいかなる損害に関しても，その責任を負わない．
+
+開発者およびTOPPERSプロジェクトは，SSPカーネルに関するサポートの約束は
+していない．SSPカーネルに関して質問がある場合は，後述のTOPPERSユーザー
+ズメーリングリストを利用していただけると幸いである．確実なサポートが必
+要な場合には，有償でサポートサービスを提供している会社に相談されたい．
+
+11.3. バグレポート
+
+SSPカーネルにバグや問題点を発見された場合には，後述のTOPPERSユーザーズ
+メーリングリストに報告して欲しい．
+
+メーリングリストにバグや問題点などを報告する場合には，必要に応じて次の
+情報を知らせて欲しい．
+
+	使用しているカーネルに関する情報
+		・ターゲット非依存部のバージョン
+		・使用しているターゲット依存部とそのバージョン
+		・TOPPERSプロジェクトからのリリースに対する改造箇所（あれば）
+
+	ターゲットシステムに関する情報
+		・ターゲットプロセッサの種類
+		・ターゲットボード等の種類
+
+	ホストに関する情報
+		・OSのバージョン（サービスパックの適用状況も）
+		・コンパイラなどの開発環境のバージョン（Cygwinのバージョンも）
+
+11.4. ウェブサイト
+
+TOPPERSプロジェクトのウェブサイトは，以下のURLにある．
 
 	http://www.toppers.jp/
 
-TOPPERSvWFNgâSSPJ[lÉÖ·éÅVîñÍC±ÌEFuTCg©
-ç¾é±ÆªÅ«éDÜ½CSSPJ[lÌÅVÅÍC±ÌEFuTCg©ç_
-E[h·é±ÆªÅ«éD
-
-11.5. TOPPERS[U[Y[OXg
-
-SSPJ[lðÜÞTOPPERSvWFNgÌJ­¬Ê¨Ì[UÉÎ·éîññ
-¨æÑ[UÝÔÌîñð·ðeÕÉ·é½ßÉCTOPPERS[U[Y[
-OXgiusers@toppers.jpjðpÓµÄ¢éD
-
-±Ì[OXgÉÍCNÅà©RÉo^µC[ðt·é±ÆªÅ
-«éio^ÒÈOÍ[ðtÅ«È¢jDÜ½Ct³ê½[ÍCN
-Åà©RÉEFuTCgÅÇÞ±ÆªÅ«éD
-
-[OXgÖÌo^û@ÉÂ¢ÄÍCÈºÌURLÌy[WÉà¾ª éD
+TOPPERSプロジェクトやSSPカーネルに関する最新情報は，このウェブサイトか
+ら得ることができる．また，SSPカーネルの最新版は，このウェブサイトからダ
+ウンロードすることができる．
+
+11.5. TOPPERSユーザーズメーリングリスト
+
+SSPカーネルを含むTOPPERSプロジェクトの開発成果物のユーザに対する情報提
+供およびユーザ相互間の情報交換を容易にするために，TOPPERSユーザーズメー
+リングリスト（users@toppers.jp）を用意している．
+
+このメーリングリストには，誰でも自由に登録し，メールを送付することがで
+きる（登録者以外はメールを送付できない）．また，送付されたメールは，誰
+でも自由にウェブサイトで読むことができる．
+
+メーリングリストへの登録方法については，以下のURLのページに説明がある．
 
 	http://www.toppers.jp/community.html
 
-11.6. TOPPERSvWFNgÌoü¯ÌT[rX
-
-TOPPERSvWFNgÌoÉÎµÄÍCãLÉÁ¦ÄCSSPJ[lÉÖA
-µÄÌT[rXðpÓµÄ¢éD
-
-(1) TOPPERSJ­Ò[OXg
-
-TOPPERSvWFNgÌoÍCSSPJ[lÉÖ·é¿âCoOââè_È
-ÇÌñÉCTOPPERSJ­Ò[OXgidev@toppers.jpjðp·é±
-ÆªÅ«éD
-
-(2) SSPJ[lÌJ­xTCg
-
-SSPJ[lÌJ­xÌ½ßÌTRACioOgbLOVXejªCÈºÌ
-URLÉ éiTRACÖÌANZXÉÍCïõpX[hªKvÅ éjD
+11.6. TOPPERSプロジェクトのメンバ向けのサービス
+
+TOPPERSプロジェクトのメンバに対しては，上記に加えて，SSPカーネルに関連
+して次のサービスを用意している．
+
+(1) TOPPERS開発者メーリングリスト
+
+TOPPERSプロジェクトのメンバは，SSPカーネルに関する質問，バグや問題点な
+どの報告に，TOPPERS開発者メーリングリスト（dev@toppers.jp）を利用するこ
+とができる．
+
+(2) SSPカーネルの開発支援サイト
+
+SSPカーネルの開発支援のためのTRAC（バグトラッキングシステム）が，以下の
+URLにある（TRACへのアクセスには，会員パスワードが必要である）．
 
 	http://dev.toppers.jp/trac/ssp_core
 
-TOPPERSvWFNgÌoÍC±ÌTCg©çCEFuC^tF[X¨æ
-ÑsubversionT[oÉæèCSSPJ[lÌJ­Ìo[Wð¾é±ÆªÅ
-«éDÜ½CoOgbLOf[^x[XÉANZX·é±ÆªÅ«Cß
-ÌoOðÖÌANZXâCoOÌo^ð·é±ÆªÅ«éD
-
-11.7. TOPPERSvWFNgÖÌQÁ
-
-TOPPERSvWFNgÅÍC½©çÌ`ÅvWFNgÉv£µÄ¢½¾¯éûC
-vWFNgÅJ­µ½\tgEFAð¨g¢ÌûCvWFNgÉ»¡ð¨
-¿ÌûÌQÁðßÄ¢éDTOPPERSvWFNgÖÌQÁû@ÉÂ¢ÄÍC
-ÈºÌy[WÉà¾ª éD
+TOPPERSプロジェクトのメンバは，このサイトから，ウェブインタフェースおよ
+びsubversionサーバにより，SSPカーネルの開発中のバージョンを得ることがで
+きる．また，バグトラッキングデータベースにアクセスすることができ，過去
+のバグ履歴へのアクセスや，バグの登録をすることができる．
+
+11.7. TOPPERSプロジェクトへの参加
+
+TOPPERSプロジェクトでは，何からの形でプロジェクトに貢献していただける方，
+プロジェクトで開発したソフトウェアをお使いの方，プロジェクトに興味をお
+持ちの方の参加を求めている．TOPPERSプロジェクトへの参加方法については，
+以下のページに説明がある．
 
 	http://www.toppers.jp/joinus.html
 
 
-PQDt@X
-
-12.1. T[rXR[ê
-
-(1) ^XNÇ@\
+１２．リファレンス
+
+12.1. サービスコール一覧
+
+(1) タスク管理機能
 
 	ER ercd = act_tsk(ID tskid)
 	ER ercd = iact_tsk(ID tskid)
 
-(2) VXeóÔÇ@\
+(2) システム状態管理機能
 
 	ER ercd = loc_cpu(void)
@@ -1400,12 +1264,12 @@
 	ER ercd = ext_ker(void)
 
-(3) ÝÇ@\
+(3) 割込み管理機能
 
 	ER ercd = dis_int(INTNO intno)
 	ER ercd = ena_int(INTNO intno)
 
-12.2. ÃIAPIê
-
-(1) ^XNÇ@\
+12.2. 静的API一覧
+
+(1) タスク管理機能
 
 	CRE_TSK(ID tskid, { ATR tskatr, intptr_t exinf, TASK task,
@@ -1413,5 +1277,5 @@
 	DEF_EPR(ID tskid,{ PRI etskpri })
 
-(2) ÝÇ@\
+(2) 割込み管理機能
 
 	ATT_ISR({ ATR isratr, intptr_t exinf, INTNO intno, ISR isr, PRI isrpri })
@@ -1419,9 +1283,9 @@
 	CFG_INT(INTNO intno, { ATR intatr, PRI intpri })
 
-(3) CPUáOÇ@\
+(3) CPU例外管理機能
 
 	DEF_EXC(EXCNO excno, { ATR excatr, EXCHDR exchdr })
 
-(4) VXe\¬Ç@\
+(4) システム構成管理機能
 
 	DEF_ICS({ SIZE istksz, STK_T *istk })
@@ -1430,16 +1294,15 @@
 	ATT_TER({ ATR teratr, intptr_t exinf, TERRTN terrtn })
 
-12.3. o[Wð
-
-	2011N 331ú	Release	1.0.0		ú[X
-	2011N1116ú	Release	1.1.0		ÅÌêÊ[X
-	2011N 323ú	Release	1.1.1		y÷ÈC³ÆoOtBbNX
-	2013N 423ú	Release	1.2.0		^XNÌN®vL
-[CO@\ÌÇÁ
-                                        DEF_ICSÌdlÏX
-                                        DEF_STKÌÇÁ
-                                        ¯úEÊM@\g£pbP[WÌÇÁ
-	2014N 3 6ú	Release	1.2.1		oOtBbNX
-	2015N 519ú	Release	1.3.0		
-
-Èã
+12.3. バージョン履歴
+
+	2011年 3月31日	Release	1.0.0		早期リリース
+	2011年11月16日	Release	1.1.0		最初の一般リリース
+	2011年 3月23日	Release	1.1.1		軽微な修正とバグフィックス
+	2013年 4月23日	Release	1.2.0		タスクの起動要求キューイング機能の追加
+                                        DEF_ICSの仕様変更
+                                        DEF_STKの追加
+                                        同期・通信機能拡張パッケージの追加
+	2014年 3月 6日	Release	1.2.1		バグフィックス
+	2015年 5月19日	Release	1.3.0		
+
+以上
Index: ssp_qb_r5f100le_cs/trunk/doc/version.txt
===================================================================
--- ssp_qb_r5f100le_cs/trunk/doc/version.txt	(revision 93)
+++ ssp_qb_r5f100le_cs/trunk/doc/version.txt	(revision 95)
@@ -1,12 +1,11 @@
 
-		TOPPERS/SSPJ[l
-		ÏXð
+		TOPPERS/SSPカーネル
+		変更履歴
 
-		Îo[W: Release 1.3.0
-		ÅIXV: 2015N 519ú
+		対応バージョン: Release 1.3.0
+		最終更新: 2015年 5月19日
 
-±ÌhL
-gÍCTOPPERS/SSPJ[lÌRelease 1.0.0È~ÌÏXððC
-Vµ¢û©çÉLqµ½àÌÅ éD
+このドキュメントは，TOPPERS/SSPカーネルのRelease 1.0.0以降の変更履歴を，
+新しい方から順に記述したものである．
 
 ----------------------------------------------------------------------
@@ -18,185 +17,176 @@
                  Nagoya Municipal Industrial Research Institute, JAPAN
  
- ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
- Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
- ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
- (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
-      \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
-     XR[hÉÜÜêÄ¢é±ÆD
- (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
-     pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
-gip
-     Ò}j
-AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
-     Ì³ÛØKèðfÚ·é±ÆD
- (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
-     pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
-     ÆD
-   (a) ÄzzÉº¤hL
-gipÒ}j
-AÈÇjÉCãLÌ
-       ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
-   (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
-       ñ·é±ÆD
- (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
-     Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
-     Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
-     RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
-     ÆÓ·é±ÆD
+ 上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ 変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+     権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+     スコード中に含まれていること．
+ (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+     用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+     者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+     の無保証規定を掲載すること．
+ (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+     用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+     と．
+   (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+       作権表示，この利用条件および下記の無保証規定を掲載すること．
+   (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+       報告すること．
+ (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+     害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+     また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+     由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+     免責すること．
  
- {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
- æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
- ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
- AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
- ÌÓCðíÈ¢D
+ 本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ の責任を負わない．
  
 ----------------------------------------------------------------------
 
-		TOPPERS/SSPJ[l
-		Release 1.2.1 ©ç 1.3.0 ÖÌÏX_
+		TOPPERS/SSPカーネル
+		Release 1.2.1 から 1.3.0 への変更点
 
-ET[rXR[ ista_alm, istp_alm ðÇÁ
-Echar_t ^Ìp~
-EVAhCoÌÏX
-	Eserial_wri_dat, serial_rea_dat Ìr¼§äæÔÆr¼§äû@ÉÖ·éC³
-	Eserial_wri_dat Ìobt@tÌ®ÉÖ·éC³
-	Eserial_rea_dat Åobt@GveBÌ®ÉÖ·éC³
-EOMIT_INITIALIZE_EXCEPTION è`ÏÝÌêÉNG[ÆÈéâèÌC³
+・サービスコール ista_alm, istp_alm を追加
+・char_t 型の廃止
+・シリアルドライバの変更
+	・serial_wri_dat, serial_rea_dat の排他制御区間と排他制御方法に関する修正
+	・serial_wri_dat のバッファフル時の挙動に関する修正
+	・serial_rea_dat でバッファエンプティ時の挙動に関する修正
+・OMIT_INITIALIZE_EXCEPTION 定義済みの場合にリンクエラーとなる問題の修正
 
-E(toppers-users 4235) ÌwEÖÌÎ(kernel.tf Ìsª$¼ãÌó²¯)
-E(toppers-users 4245)ÌwEÖÌÎ(ARMü¯gccIvVÌÇÁ)
-EüúnhCA[nhÌÅåÂð¦·\¬}NÌè`
-Edoc/configurator.txt Ì¤LX^bNÉÖ·éLq~XÌC³D
-Etask.c Ìd¡·évg^Cvé¾Ìí
-El[t@CÌd¡GgÌí
-Ecall_almhdr (alarm.c) ÌøÌ^ð uintptr_t ÖÏX
+・(toppers-users 4235) の指摘事項への対応(kernel.tf の行頭$直後の空白抜け)
+・(toppers-users 4245)の指摘事項への対応(ARM向けgccオプションの追加)
+・周期ハンドラ，アラームハンドラの最大個数を示す構成マクロの定義
+・doc/configurator.txt の共有スタックに関する記述ミスの修正．
+・task.c の重複するプロトタイプ宣言の削除
+・リネームファイルの重複エントリの削除
+・call_almhdr (alarm.c) の引数の型を uintptr_t へ変更
 
-Esample1 AvÉ¨¯éVXeOÌ}XNÝèÉÖ·éC³(O^XNÌú»ÄÑoµÇÁ)
-Esample1.c Ì SVC }NÅsÔª³µ­\¦³êÈ¢âèÌC³
-Ehello_world.c Ì task VA|[gÌI[vÌÇÁ
-Ehello_world.c ÌbZ[W\¦p}NÌC³
+・sample1 アプリにおけるシステムログのマスク設定に関する修正(ログタスクの初期化処理呼び出し追加)
+・sample1.c の SVC マクロで行番号が正しく表示されない問題の修正
+・hello_world.c の task シリアルポートのオープン処理の追加
+・hello_world.c のメッセージ表示用マクロの修正
 
-Earm_m_gcc ^[QbgË¶Ì prc_terminate ÖÌ NoReturn ®«ÇÁ
-Ecq_frk_fm3_gcc^[QbgË¶Ì hardware_init_hook (prc_support.S) É function ®«ÌÝèÇÁ
+・arm_m_gcc ターゲット依存部の prc_terminate への NoReturn 属性追加
+・cq_frk_fm3_gccターゲット依存部の hardware_init_hook (prc_support.S) に function 属性の設定追加
 
-EMISRA-C[Éî­ÏX
-	EÈµ®èÖÚöêÌtÁ
-	Einitialize_eventflag Å[vÏ i Ì^ð uint_t ©ç int_t ÉÏX
-	Esyslog_print Ì switch É default ßðÇÁD
-	Eserial_initialize, serial_terminate Ì for¶Å[vJE^ÌÝðgp·éæ¤ÉÏX
-	Eserial_rea_dat ÅÌÙÈé^ÖÌãüÓðC³
-	Etarget_timer_handler ÅßèlðgpµÈ¢ÖÄÑoµðvoidÅLXgµ½D
-	Esample1.c ÌforÌ{Ìð¡¶ÉÏXµCRgÇÁ
+・MISRA-Cルールに基く変更
+	・符号なし整数定数へ接尾語の付加
+	・initialize_eventflag でループ変数 i の型を uint_t から int_t に変更
+	・syslog_print の switch に default 節を追加．
+	・serial_initialize, serial_terminate の for文でループカウンタのみを使用するように変更
+	・serial_rea_dat で符号の異なる型への代入箇所を修正
+	・target_timer_handler で戻り値を使用しない関数呼び出しをvoidでキャストした．
+	・sample1.c のforの本体を複合文に変更し，コメント追加
 
-^[QbgË¶ÌvC³Ói1.2.1 ¨ 1.3.0j
+○ターゲット依存部の要修正箇所（1.2.1 → 1.3.0）
 
-(1) char_t Ìp~Éº¢Cchar_t ð char ÉÏX·é
+(1) char_t の廃止に伴い，char_t を char に変更する
 
 ----------------------------------------------------------------------
 
-		TOPPERS/SSPJ[l
-		Release 1.2.0 ©ç 1.2.1 ÖÌÏX_
+		TOPPERS/SSPカーネル
+		Release 1.2.0 から 1.2.1 への変更点
 
-ECRE_FLG Ì iflgptn ÉÎ·é`FbNÇÁ¨æÑG[ððÏX
-ECxgtOÌrbgp^[ÉÎ·érbgè`ðÇÁ
-Edequeue_dataÖÌø^wè²¯ÌC³
-E(toppers-users 4129)ÅwEÌC³
-    Esample1 ÌC³
-    Eenqueue_data, dequeue_data ð static Ö©çÊíÌÖÖÏX
-    EMakefile.kernel ÌC³
-Esample1 ÌAvÌà¾¶ðsample1.c ÌRgÆµÄÇÁ
-EVXeRtBM
-[Vt@CÅ serial.cfg ð INCLUDE µÈ¢
-  êÉ TARGET_NAME ª¢è`ÆÈéâèÌC³(banner.tf)
+・CRE_FLG の iflgptn に対するチェック追加およびエラー条件を変更
+・イベントフラグのビットパターンに対するビット数定義を追加
+・dequeue_data関数の引数型指定抜けの修正
+・(toppers-users 4129)で指摘事項の修正
+    ・sample1 の修正
+    ・enqueue_data, dequeue_data を static 関数から通常の関数へ変更
+    ・Makefile.kernel の修正
+・sample1 のアプリの説明文をsample1.c のコメントとして追加
+・システムコンフィギュレーションファイルで serial.cfg を INCLUDE しない
+  場合に TARGET_NAME が未定義となる問題の修正(banner.tf)
 
-^[QbgË¶ÌvC³Ói1.2.0 ¨ 1.2.1j
-    ^[QbgË¶ÖÌe¿ÍÈ¢½ßCC³ÍsvÅ éD
+○ターゲット依存部の要修正箇所（1.2.0 → 1.2.1）
+    ターゲット依存部への影響はないため，修正は不要である．
 
 ----------------------------------------------------------------------
 
-		TOPPERS/SSPJ[l
-		Release 1.1.1 ©ç 1.2.0 ÖÌÏX_
+		TOPPERS/SSPカーネル
+		Release 1.1.1 から 1.2.0 への変更点
 
-E^XNN®vL
-[COÌT|[g
-  ^XNN®vð1ñÜÅL
-[CO·éæ¤ÉC³D
+・タスク起動要求キューイングのサポート
+  タスク起動要求を1回までキューイングするように修正．
 
-EDEF_STKÌÇÁ
+・DEF_STKの追加
 
-EDEF_ICSÌ@\C³
+・DEF_ICSの機能修正
 
-Eg£pbP[WÌÇÁ
-  - f[^L
-[@\
-  - CxgtO@\
+・拡張パッケージの追加
+  - データキュー機能
+  - イベントフラグ機能
 
-ETvvOÌC³
-  - ^XNI¹ÌbZ[WoÍC³
-  - f[^L
-[ÌeXg@\ÌÇÁ
-  - CxgtOÌeXg@\ÌÇÁ
+・サンプルプログラムの修正
+  - タスク終了時のメッセージ出力修正
+  - データキューのテスト機能の追加
+  - イベントフラグのテスト機能の追加
 
 
-^[QbgË¶ÌvC³Ói1.1.1 ¨ 1.2.0j
+○ターゲット依存部の要修正箇所（1.1.1 → 1.2.0）
 
-(1) TEST_EXC}NÌíÉº¢CCPUEXC1}NððRpCÉgp·éæ¤É
-    ÏX·éD
+(1) TEST_EXCマクロの削除に伴い，CPUEXC1マクロを条件コンパイルに使用するように
+    変更する．
 
-(2) TvvOÉdataqueue.cCeventflag.cðrhÎÛÉÜßéæ¤ÉÏXD
-    (MakefileðgpµÈ¢^[QbgË¶ÌÝ)
+(2) サンプルプログラムにdataqueue.c，eventflag.cをビルド対象に含めるように変更．
+    (Makefileを使用しないターゲット依存部のみ)
 
-(3) ³À[vÌÀû@ðiTOPPERS_assert_abortCtarget_exitÈÇjtecsgenÅ
-    ðßÅ«éLqû@ÉÏX·éD
+(3) 無限ループの実装方法を（TOPPERS_assert_abort，target_exitなど）tecsgenで
+    解釈できる記述方法に変更する．
 
 ----------------------------------------------------------------------
 
-		TOPPERS/SSPJ[l
-		Release 1.1.0 ©ç 1.1.1 ÖÌÏX_
+		TOPPERS/SSPカーネル
+		Release 1.1.0 から 1.1.1 への変更点
 
-EJ[lo[W}NÌC³
-  (Release1.1.0ÅÍJ[lo[W}NÌlÉëèª Á½j
+・カーネルバージョンマクロの修正
+  (Release1.1.0ではカーネルバージョンマクロの値に誤りがあった）
 
-EÀsDæxðÝèµÄ¢é^XNªact_tsk(TSK_SELF)ðÄÑoµ½êÌ
-  sïÌC³
+・実行時優先度を設定しているタスクがact_tsk(TSK_SELF)を呼び出した場合の
+  不具合の修正
 
-E\[XR[hÌt@N^O
-  - task.c/hÖÌRgÇÁAÁÉúDæxÆÀsDæxÌá¢Ì¾mj»
+・ソースコードのリファクタリング
+  - task.c/hへのコメント追加、特に初期優先度と実行時優先度の違いの明確j化
 
-EDEF_EPRICDEF_ICSÌdlè`ðÇÁ(doc/original_static_api.txt)
-  (½¾µTOPPERSdl1.4.0ÆÌêÑ«ÍÈ¢½ßÓj
+・DEF_EPRI，DEF_ICSの仕様定義を追加(doc/original_static_api.txt)
+  (ただしTOPPERS統合仕様書1.4.0との一貫性はないため注意）
 
-EVXeT[rXÌÇÁ
-  - syslog@\
-  - O\¦^XN@\
+・システムサービスの追加
+  - syslog機能
+  - ログ表示タスク機能
 
-Esvt@CÌí
-  - utilsfBNgÈºÌsvÈXNvgÌí
-  - confkernelXNvgÉÖAµ½t@CÌí
+・不要ファイルの削除
+  - utilsディレクトリ以下の不要なスクリプトの削除
+  - confkernelスクリプトに関連したファイルの削除
 
-EutilsfBNgÌXNvgÌC³
-  - vV[WÄÑoµÌÛÌdo¶Ìí
+・utilsディレクトリのスクリプトの修正
+  - プロシージャ呼び出しの際のdo文の削除
 
-ETvvOÌ@\ÇÁ
-  - A[nhÌeXg@\ÌÇÁ
-  - ObZ[Wðsyslog@\ðgpµÄoÍ·éæ¤ÉC³
+・サンプルプログラムの機能追加
+  - アラームハンドラのテスト機能の追加
+  - ログメッセージをsyslog機能を使用して出力するように修正
 
 
 ----------------------------------------------------------------------
 
-		TOPPERS/SSPJ[l
-		Release 1.0.0 ©ç 1.1.0 ÖÌÏX_
+		TOPPERS/SSPカーネル
+		Release 1.0.0 から 1.1.0 への変更点
 
-EeXgvOÌÇÁ
+・テストプログラムの追加
 
-EÝT[rX[`ÉÖ·éoOtBbNX
-	- ÝT[rX[`¶¬ÉKvÈ^[QbgË¶Ìè`ªÈ©Á½âèÌC³
-	  (x_get_ipm, t_get_ipm, i_get_ipm, x_set_ipm, t_set_ipm, i_set_ipmÌÇÁj
+・割込みサービスルーチンに関するバグフィックス
+	- 割込みサービスルーチン生成に必要なターゲット依存部の定義がなかった問題の修正
+	  (x_get_ipm, t_get_ipm, i_get_ipm, x_set_ipm, t_set_ipm, i_set_ipmの追加）
 
-EMISRA-CR[fBOX^_[hÉÎ·é½ßÌR[hC³
+・MISRA-Cコーディングスタンダードに対応するためのコード修正
 
-E^[QbgË¶ÆÌC^[tF[XC³
-	- TOPPERS_SUPPORT_DIS_INTðTOPPERS_TARGET_SUPPORT_DIS_INTÉC³
-	- TOPPERS_SUPPORT_ENA_INTðTOPPERS_TARGET_SUPPORT_ENA_INTÉC³
+・ターゲット依存部とのインターフェース修正
+	- TOPPERS_SUPPORT_DIS_INTをTOPPERS_TARGET_SUPPORT_DIS_INTに修正
+	- TOPPERS_SUPPORT_ENA_INTをTOPPERS_TARGET_SUPPORT_ENA_INTに修正
 
 
