Index: ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/Makefile.prc
===================================================================
--- ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/Makefile.prc	(revision 93)
+++ ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/Makefile.prc	(revision 95)
@@ -4,9 +4,9 @@
 
 #
-#		Makefile ÌvZbTË¶iARM-Mpj
+#		Makefile のプロセッサ依存部（ARM-M用）
 #
 
 #
-#  RpCIvV
+#  コンパイルオプション
 #
 COPTS := $(COPTS) -mthumb 
@@ -17,5 +17,5 @@
 
 #
-#  J[lÉÖ·éè`
+#  カーネルに関する定義
 #
 KERNEL_DIR := $(KERNEL_DIR) $(SRCDIR)/arch/$(PRC)_$(TOOL)
@@ -24,11 +24,10 @@
 
 #
-#  RtBM
-[^ÖWÌÏÌè`
+#  コンフィギュレータ関係の変数の定義
 #
 CFG_TABS := $(CFG_TABS) --cfg1-def-table $(SRCDIR)/arch/$(PRC)_$(TOOL)/prc_def.csv
 
 #
-#  Ë¶ÖWÌè`
+#  依存関係の定義
 #
 cfg1_out.c: $(SRCDIR)/arch/$(PRC)_$(TOOL)/prc_def.csv
Index: ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/arm_m.h
===================================================================
--- ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/arm_m.h	(revision 93)
+++ ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/arm_m.h	(revision 95)
@@ -6,36 +6,32 @@
  *              Graduate School of Information Science, Nagoya Univ., 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: arm_m.h 1304 2008-08-27 07:28:36Z ertl-honda $
@@ -43,5 +39,5 @@
 
 /*
- *  ARMVx-MÌn[hEFA¹Ìè`
+ *  ARMVx-Mのハードウェア資源の定義
  */
 
@@ -51,21 +47,21 @@
 
 /*
- *  EPSRÌTrbg
+ *  EPSRのTビット
  */
 #define EPSR_T   0x01000000
 
 /*
- * IPSRÌ ISR NUMBER
+ * IPSRの ISR NUMBER
  */
 #define IPSR_ISR_NUMBER 0x1ff
 
 /*
- *  áOEÝ­¶ÉX^bNãÉÏÜêéÛ¶ÌæÌTCY
- *  {J[lÅÍáOt[ÆÄÔ
+ *  例外・割込み発生時にスタック上に積まれる保存領域のサイズ
+ *  本カーネルでは例外フレームと呼ぶ
  */
 #define EXC_FRAME_SIZE         (8*4)
 
 /*
- *  áOEÝ­¶ÉLRÉÝè³êéEXC_RETURNÌl
+ *  例外・割込み発生時にLRに設定されるEXC_RETURNの値
  */
 #define EXC_RETURN_HANDLER      0x0
@@ -75,5 +71,5 @@
 
 /*
- *  CONTROLWX^
+ *  CONTROLレジスタ
  */
 #define CONTROL_PSP            0x02
@@ -81,5 +77,5 @@
 
 /*
- *  áOÔ
+ *  例外番号
  */
 #define EXCNO_NMI         2
@@ -93,5 +89,5 @@
 
 /*
- *  áOÔÌÅ¬lÆÅål
+ *  例外番号の最小値と最大値
  */
 #define TMIN_EXCNO   2
@@ -99,15 +95,15 @@
 
 /*
- *  ÝÔ
+ *  割込み番号
  */
 #define IRQNO_SYSTICK    15
 
 /*
- *  ÝÔÌÅ¬l
+ *  割込み番号の最小値
  */
 #define TMIN_INTNO       15
 
 /*
- *  áOt[ÌItZbg
+ *  例外フレームのオフセット
  */
 #define P_EXCINF_OFFSET_EXC_RETURN  0x00
@@ -117,9 +113,9 @@
 
 /*
- *  NVICÖA
+ *  NVIC関連
  */
 
 /*
- *  Rg[WX^
+ *  コントロールレジスタ
  */
 #define NVIC_INT_CTRL       0xe000ed04
@@ -128,10 +124,10 @@
 
 /*
- *  VXenh[Rg[WX^
+ *  システムハンドラーコントロールレジスタ
  */
 #define NVIC_SYS_HND_CTRL   0xE000ED24
 
 /*
- *  eáOÌÂrbg
+ *  各例外の許可ビット
  */
 #define NVIC_SYS_HND_CTRL_USAGE 0x00040000
@@ -140,5 +136,5 @@
 
 /*
- *  DæxÝèWX^
+ *  優先度設定レジスタ
  */
 #define NVIC_SYS_PRI1       0xE000ED18  // Sys. Handlers 4 to 7 Priority
@@ -148,15 +144,15 @@
 
 /*
- *  ÝÂWX^
+ *  割込み許可レジスタ
  */
 #define NVIC_SETENA0        0xE000E100  // IRQ 0 to 31 Set Enable Register
 
 /*
- *  ÝÖ~WX^
+ *  割込み禁止レジスタ
  */
 #define NVIC_CLRENA0        0xE000E180  // IRQ 0 to 31 Set Disable Register
 
 /*
- *  xN^e[uItZbgWX^
+ *  ベクタテーブルオフセットレジスタ
  */
 #define NVIC_VECTTBL        0xE000ED08
@@ -164,5 +160,5 @@
 
 /*
- *  SYSTICÖAWX^
+ *  SYSTIC関連レジスタ
  */
 #define SYSTIC_CONTROL_STATUS 0xE000E010
Index: ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc.tf
===================================================================
--- ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc.tf	(revision 93)
+++ ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc.tf	(revision 95)
@@ -1,8 +1,8 @@
 $ 
-$     pX2ÌA[LeN`Ë¶ev[giARM-Mpj
+$     パス2のアーキテクチャ依存テンプレート（ARM-M用）
 $ 
 
 $ 
-$  LøÈÝÔCÝnhÔ
+$  有効な割込み番号，割込みハンドラ番号
 $ 
 $INTNO_VALID = RANGE(15, TMAX_INTNO)$
@@ -10,10 +10,10 @@
 
 $ 
-$  LøÈCPUáOÔ
+$  有効なCPU例外番号
 $ 
 $EXCNO_VALID = { 2,3,4,5,6,11,12,14 }$
 
 $ 
-$  ATT_ISRÅgpÅ«éÝÔÆ»êÉÎ·éÝnhÔ
+$  ATT_ISRで使用できる割込み番号とそれに対応する割込みハンドラ番号
 $ 
 $INTNO_ATTISR_VALID = INTNO_VALID$
@@ -21,5 +21,5 @@
 
 $ 
-$  DEF_INT^DEF_EXCÅgpÅ«éÝnhÔ^CPUáOnhÔ
+$  DEF_INT／DEF_EXCで使用できる割込みハンドラ番号／CPU例外ハンドラ番号
 $ 
 $INHNO_DEFINH_VALID = INHNO_VALID$
@@ -27,10 +27,10 @@
 
 $ 
-$  `FbNû@Ìwè
+$  チェック方法の指定
 $ 
 $CHECK_STKSZ_ALIGN = 8$
 
 $ 
-$  CFG_INTÅgpÅ«éÝÔÆÝDæx
+$  CFG_INTで使用できる割込み番号と割込み優先度
 $ 
 $INTNO_CFGINT_VALID = INTNO_VALID$
@@ -38,10 +38,10 @@
 
 $ 
-$  Ý®«Ì^[QbgË¶Ép¢érbg
+$  割込み属性中のターゲット依存に用いるビット
 $ 
 $ TARGET_INTATR = $
            
 $ 
-$  Wev[gt@CÌCN[h
+$  標準テンプレートファイルのインクルード
 $ 
 $INCLUDE "kernel/kernel.tf"$
@@ -53,5 +53,5 @@
 
 $ 
-$  xN^[e[u
+$  ベクターテーブル
 $ 
 
@@ -118,5 +118,5 @@
 
 $ 
-$  _kernel_bitpat_cfgintÌ¶¬
+$  _kernel_bitpat_cfgintの生成
 $ 
 
Index: ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_cfg1_out.h
===================================================================
--- ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_cfg1_out.h	(revision 93)
+++ ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_cfg1_out.h	(revision 95)
@@ -4,5 +4,5 @@
 
 /*
- *		cfg1_out.cðN·é½ßÉKvÈX^uÌè`
+ *		cfg1_out.cをリンクするために必要なスタブの定義
  */
 
Index: ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_check.tf
===================================================================
--- ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_check.tf	(revision 93)
+++ ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_check.tf	(revision 95)
@@ -1,8 +1,8 @@
 $ 
-$ 		pX3ÌvZbTË¶ev[giARM-Mpj
+$ 		パス3のプロセッサ依存テンプレート（ARM-M用）
 $ 
 
 $ 
-$  `FbNû@Ìwè
+$  チェック方法の指定
 $ 
 $CHECK_FUNC_ALIGN = 1$
@@ -14,5 +14,5 @@
 
 $ 
-$  Wev[gt@CÌCN[h
+$  標準テンプレートファイルのインクルード
 $ 
 $ $INCLUDE "kernel/kernel_check.tf"$
Index: ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_config.c
===================================================================
--- ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_config.c	(revision 93)
+++ ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_config.c	(revision 95)
@@ -7,36 +7,32 @@
  *  Copyright (C) 2010 by Meika Sugimoto
  * 
- *  ã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
- * 
- *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
- *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
- *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
- *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
- *  ÌÓCðíÈ¢D
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
  * 
  *  @(#) $Id: prc_config.c 1304 2008-08-27 07:28:36Z ertl-honda $
@@ -44,6 +40,5 @@
 
 /*
- *		vZbTË¶W
-[iARM-Mpj
+ *		プロセッサ依存モジュール（ARM-M用）
  */
 
@@ -55,20 +50,20 @@
 
 /*
- *  CPUbNtOÀ»Ì½ßÌÏ
- */
-volatile bool_t		lock_flag;		/* CPUbNtOÌlðÛ·éÏ */
-volatile uint32_t	saved_iipm;		/* ÝDæx}XNðÛ¶·éÏ */
-
-/* ÝlXgÌÇ */
+ *  CPUロックフラグ実現のための変数
+ */
+volatile bool_t		lock_flag;		/* CPUロックフラグの値を保持する変数 */
+volatile uint32_t	saved_iipm;		/* 割込み優先度マスクを保存する変数 */
+
+/* 割込みネスト数の管理 */
 uint8_t intnest;
 
 /*
- *  xN^e[u(kernel_cfg.c)
+ *  ベクタテーブル(kernel_cfg.c)
  */
 extern const FP vector_table[];
 
 /*
- *  VXeáOEÝÌiáOÔ 4`15j
- *  ÝDæxÝèWX^ÖÌANZXÌ½ßÌzñ
+ *  システム例外・割込みの（例外番号 4〜15）
+ *  割込み優先度設定レジスタへのアクセスのための配列
  */
 static const unsigned int nvic_sys_pri_reg[] = {
@@ -80,7 +75,7 @@
 
 /*
- *  áOÆÝÌÝDæxðZbg
+ *  例外と割込みの割込み優先度をセット
  *
- *  excnoÍARM-MÅèßçêÄ¢é Exception Number ðwèD
+ *  excnoはARM-Mで定められている Exception Number を指定．
  */
 void
@@ -89,11 +84,11 @@
 
 	/*
-	 *  ÝDæxÝèWX^Ìè
+	 *  割込み優先度設定レジスタの決定
 	 */
 	if ((EXCNO_MPU <= excno) && (excno <= IRQNO_SYSTICK)) {
 		/*
-		 * Exception Number 4(Memory Management)©ç
-		 * Exception Number 15(SysTick)ÜÅÌÝDæxÍVXeDæx
-		 * WX^ÉæèÝèD
+		 * Exception Number 4(Memory Management)から
+		 * Exception Number 15(SysTick)までの割込み優先度はシステム優先度
+		 * レジスタにより設定．
 		 */
 		reg = nvic_sys_pri_reg[excno >> 2];
@@ -101,5 +96,5 @@
 	else if ((TMIN_INTNO < excno) && (excno <= TMAX_INTNO)){
 		/*
-		 * IRQÝÈç
+		 * IRQ割込みなら
 		 */
 		reg = NVIC_PRI0 + (((excno - (TMIN_INTNO + 1)) >> 2) * 4);
@@ -116,7 +111,7 @@
 
 /*
- *  áOÌÂ
+ *  例外の許可
  *
- *  Memory Management, Bus Fault, Usage Fault ÍÖ~EÂª¨¤
+ *  Memory Management, Bus Fault, Usage Fault は禁止・許可が買おう
  */
 void
@@ -145,5 +140,5 @@
 
 /*
- *  áOÌÖ~
+ *  例外の禁止
  */
 void
@@ -173,5 +168,5 @@
 
 /*
- *  vZbTË¶Ìú»
+ *  プロセッサ依存の初期化
  */
 void
@@ -179,24 +174,24 @@
 {
 	/*
-	 *  CPUbNtOÀ»Ì½ßÌÏÌú»
+	 *  CPUロックフラグ実現のための変数の初期化
 	 */
 	lock_flag = true;
 	saved_iipm = IIPM_ENAALL;
 	
-	/* ÝlXgÌú» */
+	/* 割込みネスト数の初期化 */
 	intnest = 0u;
 
 	/*
-	 *  xN^e[uðÝè
+	 *  ベクタテーブルを設定
 	 */
 	sil_wrw_mem((void*)NVIC_VECTTBL, (uint32_t)vector_table);
 
 	/*
-	 *  SVCnhÌDæxðÝè
+	 *  SVCハンドラの優先度を設定
 	 */
 	set_exc_int_priority(EXCNO_SVCALL, 0);
 
 	/*
-	 *  SVCnhðLøÉ
+	 *  SVCハンドラを有効に
 	 */
 	x_enable_int(EXCNO_SVCALL);	
@@ -204,5 +199,5 @@
 
 /*
- *  vZbTË¶ÌI¹
+ *  プロセッサ依存の終了処理
  */
 void
@@ -214,5 +209,5 @@
 
 /*
- *  ÝvC®«ÌÝè
+ *  割込み要求ライン属性の設定
  */
 void
@@ -223,5 +218,5 @@
 
 	/* 
-	 *  êUÝðÖ~·é
+	 *  一旦割込みを禁止する
 	 */    
 	(void)x_disable_int(intno);
@@ -229,11 +224,11 @@
 
 	/*
-	 *  ÝDæxðZbg
+	 *  割込み優先度をセット
 	 */
 	set_exc_int_priority(intno, intpri);
 
 	/*
-	 *  Ýv}XNð(KvÈê)
-	 *  ¯ÉÝDæxàZbg³êé
+	 *  割込み要求マスク解除(必要な場合)
+	 *  同時に割込み優先度もセットされる
 	 */
 	if ((intatr & TA_ENAINT) != 0U) {
@@ -245,5 +240,5 @@
 #ifndef OMIT_DEFAULT_EXC_HANDLER
 /*
- *  TrapaÈOÌáOÅo^³êÄ¢È¢áOª­¶·éÆÄÑo³êé
+ *  Trapa以外の例外で登録されていない例外が発生すると呼び出される
  */
 void
@@ -265,5 +260,5 @@
 #ifndef OMIT_DEFAULT_INT_HANDLER
 /*
- *  ¢o^ÌÝª­¶µ½êÉÄÑo³êé
+ *  未登録の割込みが発生した場合に呼び出される
  */
 void
Index: ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_config.h
===================================================================
--- ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_config.h	(revision 93)
+++ ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_config.h	(revision 95)
@@ -8,36 +8,32 @@
  *             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: prc_config.h 1304 2008-08-27 07:28:36Z ertl-honda $
@@ -45,10 +41,9 @@
 
 /*
- *		vZbTË¶W
-[iARM-Mpj
- *
- *  ±ÌCN[ht@CÍCtarget_config.hiÜ½ÍC»±©çCN
- *  [h³êét@CjÌÝ©çCN[h³êéD¼Ìt@C©ç
- *  ¼ÚCN[hµÄÍÈçÈ¢D
+ *		プロセッサ依存モジュール（ARM-M用）
+ *
+ *  このインクルードファイルは，target_config.h（または，そこからインク
+ *  ルードされるファイル）のみからインクルードされる．他のファイルから
+ *  直接インクルードしてはならない．
  */
 
@@ -59,10 +54,10 @@
 
 /*
- *  vZbTÌÁê½ßÌCCÖè`
+ *  プロセッサの特殊命令のインライン関数定義
  */
 #include "prc_insn.h"
 
 /*
- *  ñ^XNReLXgpÌX^bNúl
+ *  非タスクコンテキスト用のスタック初期値
  */
 #define TOPPERS_ISTKPT(istk, istksz) ((STK_T *)((char *)(istk) + (istksz)))
@@ -73,10 +68,10 @@
 
 /*
- *  ÝlXg
+ *  割込みネスト数
  */
 extern uint8_t intnest;
 
 /*
- *  ReLXgÌQÆ
+ *  コンテキストの参照
  *
  */
@@ -99,52 +94,52 @@
 
 /*
- *  TOPPERSWÝfÌÀ»
- *
- *  ÝDæx}XNÆµÄÍCBASEPRIðp¢éDSÝðÖ~·é
- *  @\ÆµÄCFAULTMASKâPRIMASKª éªCJ[lÇOÌÝð
- *  T|[g·é½ßC±êçÍCPUbNÌ½ßÉp¢È¢D
- *  »Ì½ßCBASEPRIðp¢Ä[IÉCPUbNtOðÀ»·éD
- *
- *  Ü¸CCPUbNóÔðÇ·½ßÌÏ(lock_flag)ðpÓ·éD
- *
- *  CPUbNtOªNA³êÄ¢éÔÍCBASEPRIðfãÌÝ
- *  Dæx}XNÌlÉÝè·éD±ÌÔÍCfãÌÝDæx}X
- *  NÍCBASEPRIðp¢éD
+ *  TOPPERS標準割込み処理モデルの実現
+ *
+ *  割込み優先度マスクとしては，BASEPRIを用いる．全割込みを禁止する
+ *  機能として，FAULTMASKやPRIMASKがあるが，カーネル管理外の割込みを
+ *  サポートするため，これらはCPUロックのために用いない．
+ *  そのため，BASEPRIを用いて擬似的にCPUロックフラグを実現する．
+ *
+ *  まず，CPUロック状態を管理すための変数(lock_flag)を用意する．
+ *
+ *  CPUロックフラグがクリアされている間は，BASEPRIをモデル上の割込み
+ *  優先度マスクの値に設定する．この間は，モデル上の割込み優先度マス
+ *  クは，BASEPRIを用いる．
  * 
- *  »êÉÎµÄCPUbNtOªZbg³ê¢éÔÍCBASEPRIðCJ[l
- *  ÇOÌàÌð­·×ÄÌÝvð}XN·él(TIPM_LOCK)ÆC
- *  fãÌÝDæx}XNÆÌ¢ûÉÝè·éD±ÌÔÌfã
- *  ÌÝDæx}XNÍC»Ì½ßÌÏ(saved_iipm, à\»ÅÛ)
- *  ðpÓµÄÛ·éD
- */
-
-/*
- *  ÝDæx}XNÌO\»Æà\»ÌÏ·
- *
- *  AZu¾êÌ\[Xt@C©çCN[h·éêÌ½ßÉC
- *  CASTðgp
- *  ÝDæxÌrbg(TBITW_IPRI)ª 8 ÌêÍCàDæx 255
- *  ÍCODæx -1 ÉÎ·éD
- */
-#define EXT_IPM(iipm)   (CAST(PRI,((iipm >> (8 - TBITW_IPRI)) - (1 << TBITW_IPRI))))       /* à\»ðO\»É */
-#define INT_IPM(ipm)    (((1 << TBITW_IPRI) - CAST(uint8_t, -(ipm)))  << (8 - TBITW_IPRI)) /* O\»ðà\»É */
-
-/*
- *  CPUbNóÔÅÌÝDæx}XN
+ *  それに対してCPUロックフラグがセットされいる間は，BASEPRIを，カーネ
+ *  ル管理外のものを除くすべての割込み要求をマスクする値(TIPM_LOCK)と，
+ *  モデル上の割込み優先度マスクとの高い方に設定する．この間のモデル上
+ *  の割込み優先度マスクは，そのための変数(saved_iipm, 内部表現で保持)
+ *  を用意して保持する．
+ */
+
+/*
+ *  割込み優先度マスクの外部表現と内部表現の変換
+ *
+ *  アセンブリ言語のソースファイルからインクルードする場合のために，
+ *  CASTを使用
+ *  割込み優先度のビット幅(TBITW_IPRI)が 8 の場合は，内部優先度 255
+ *  は，外部優先度 -1 に対応する．
+ */
+#define EXT_IPM(iipm)   (CAST(PRI,((iipm >> (8 - TBITW_IPRI)) - (1 << TBITW_IPRI))))       /* 内部表現を外部表現に */
+#define INT_IPM(ipm)    (((1 << TBITW_IPRI) - CAST(uint8_t, -(ipm)))  << (8 - TBITW_IPRI)) /* 外部表現を内部表現に */
+
+/*
+ *  CPUロック状態での割込み優先度マスク
  */
 #define TIPM_LOCK    TMIN_INTPRI
 
 /*
- *  CPUbNóÔÅÌÝDæx}XNÌà\»
- *
- *  TIPM_LOCKÍCCPUbNóÔÅÌBASEPRIÌlDJ[lÇOÌàÌð
- *  ­·×ÄÌÝð}XN·élÉè`·éD  
+ *  CPUロック状態での割込み優先度マスクの内部表現
+ *
+ *  TIPM_LOCKは，CPUロック状態でのBASEPRIの値．カーネル管理外のものを
+ *  除くすべての割込みをマスクする値に定義する．  
  */
 #define IIPM_LOCK    INT_IPM(TIPM_LOCK)
 
 /*
- *  TIPM_ENAALLiÝDæx}XNSðjÌà\»
- *
- *  BASEPRIÉ '0' ðÝè·é±ÆÅCSÝðÂ·éD
+ *  TIPM_ENAALL（割込み優先度マスク全解除）の内部表現
+ *
+ *  BASEPRIに '0' を設定することで，全割込みを許可する．
  */
 #define IIPM_ENAALL  (0)
@@ -154,26 +149,26 @@
 
 /*
- *  CPUbNtOÀ»Ì½ßÌÏ
+ *  CPUロックフラグ実現のための変数
  * 
- *  ±êçÌÏÍCCPUbNóÔÌÌÝ«·¦Äàæ¢Æ·éD
- *  CCÖÅCANZXÌªÏ»µÈ¢æ¤Cvolatile ðwèD 
- */
-extern volatile bool_t  lock_flag;    /* CPUbNtOÌlðÛ·éÏ */
-extern volatile uint32_t saved_iipm;  /* ÝDæxð}XN·éÏ */
-
-/*
- *  CPUbNóÔÖÌÚs
- *
- *  BASEPRIin[hEFAÌÝDæx}XNjðCsaved_iipmÉÛ¶µC
- *  J[lÇOÌàÌð­·×ÄÌÝð}XN·éliTIPM_LOCKj
- *  ÉÝè·éDÜ½Clock_flagðtrueÉ·éD
- *
- *  BASEPRIªCÅ©çTIPM_LOCKÆ¯¶©»êæè¢êÉÍC»êð
- *  saved_iipmÉÛ¶·éÌÝÅCTIPM_LOCKÉÍÝèµÈ¢D±êÍCf
- *  ãÌÝDæx}XNªCTIPM_LOCKÆ¯¶©»êæè¢xÉÝè
- *  ³êÄ¢éóÔÉ ½éD
- *
- *  ±ÌÖÍCCPUbNóÔilock_flagªtrueÌóÔjÅÄÎêé±ÆÍ
- *  È¢àÌÆzèµÄ¢éD
+ *  これらの変数は，CPUロック状態の時のみ書き換えてもよいとする．
+ *  インライン関数中で，アクセスの順序が変化しないよう，volatile を指定． 
+ */
+extern volatile bool_t  lock_flag;    /* CPUロックフラグの値を保持する変数 */
+extern volatile uint32_t saved_iipm;  /* 割込み優先度をマスクする変数 */
+
+/*
+ *  CPUロック状態への移行
+ *
+ *  BASEPRI（ハードウェアの割込み優先度マスク）を，saved_iipmに保存し，
+ *  カーネル管理外のものを除くすべての割込みをマスクする値（TIPM_LOCK）
+ *  に設定する．また，lock_flagをtrueにする．
+ *
+ *  BASEPRIが，最初からTIPM_LOCKと同じかそれより高い場合には，それを
+ *  saved_iipmに保存するのみで，TIPM_LOCKには設定しない．これは，モデル
+ *  上の割込み優先度マスクが，TIPM_LOCKと同じかそれより高いレベルに設定
+ *  されている状態にあたる．
+ *
+ *  この関数は，CPUロック状態（lock_flagがtrueの状態）で呼ばれることは
+ *  ないものと想定している．
  */
 Inline void
@@ -183,8 +178,8 @@
 
 	/*
-	 *  current_iipm()ÌÔèlð¼Úsaved_iipmÉÛ¶¹¸CêÏiipm
-	 *  ðp¢Ä¢éÌÍCcurrent_iipm()ðÄñ¾¼ãÉÝª­¶µC
-	 *  N®³ê½ÝÅsaved_iipmªÏX³êéÂ\«ª é½ßÅ
-	 *   éD
+	 *  current_iipm()の返り値を直接saved_iipmに保存せず，一時変数iipm
+	 *  を用いているのは，current_iipm()を呼んだ直後に割込みが発生し，
+	 *  起動された割込み処理でsaved_iipmが変更される可能性があるためで
+	 *  ある．
 	 */
 	iipm = get_basepri();
@@ -192,5 +187,5 @@
 	saved_iipm = iipm;
 	lock_flag = true;
-	/* NeBJZNVÌOãÅª«·íéÂ\«ª é */
+	/* クリティカルセクションの前後でメモリが書き換わる可能性がある */
 	Asm("":::"memory");
 }
@@ -200,16 +195,16 @@
 
 /*
- *  CPUbNóÔÌð
- *
- *  lock_flagðfalseÉµCIPMin[hEFAÌÝDæx}XNjðC
- *  saved_iipmÉÛ¶µ½lÉß·D
- *
- *  ±ÌÖÍCCPUbNóÔilock_flagªtrueÌóÔjÅÌÝÄÎêéà
- *  ÌÆzèµÄ¢éD
+ *  CPUロック状態の解除
+ *
+ *  lock_flagをfalseにし，IPM（ハードウェアの割込み優先度マスク）を，
+ *  saved_iipmに保存した値に戻す．
+ *
+ *  この関数は，CPUロック状態（lock_flagがtrueの状態）でのみ呼ばれるも
+ *  のと想定している．
  */
 Inline void
 x_unlock_cpu(void)
 {
-	/* NeBJZNVÌOãÅª«·íéÂ\«ª é */
+	/* クリティカルセクションの前後でメモリが書き換わる可能性がある */
 	Asm("":::"memory");
 	lock_flag = false;
@@ -221,5 +216,5 @@
 
 /*
- *  CPUbNóÔÌQÆ
+ *  CPUロック状態の参照
  */
 Inline bool_t
@@ -234,10 +229,10 @@
 
 /*
- * ifãÌjÝDæx}XNÌÝè
- *
- *  CPUbNtOªNA³êÄ¢éÍCn[hEFAÌÝDæx}
- *  XNðÝè·éDCPUbNtOªZbg³êÄ¢éÍCsaved_iipm
- *  ðÝèµC³çÉCn[hEFAÌÝDæx}XNðCÝèµæ¤Æ
- *  µ½ifãÌjÝDæx}XNÆTIPM_LOCKÌ¢ûÉÝè·éD
+ * （モデル上の）割込み優先度マスクの設定
+ *
+ *  CPUロックフラグがクリアされている時は，ハードウェアの割込み優先度マ
+ *  スクを設定する．CPUロックフラグがセットされている時は，saved_iipm
+ *  を設定し，さらに，ハードウェアの割込み優先度マスクを，設定しようと
+ *  した（モデル上の）割込み優先度マスクとTIPM_LOCKの高い方に設定する．
  */
 Inline void
@@ -263,8 +258,8 @@
 
 /*
- * ifãÌjÝDæx}XNÌQÆ
- *
- *  CPUbNtOªNA³êÄ¢éÍn[hEFAÌÝDæx}
- *  XNðCZbg³êÄ¢éÍsaved_iipmðQÆ·éD
+ * （モデル上の）割込み優先度マスクの参照
+ *
+ *  CPUロックフラグがクリアされている時はハードウェアの割込み優先度マ
+ *  スクを，セットされている時はsaved_iipmを参照する．
  */
 Inline PRI
@@ -292,19 +287,19 @@
 
 /*
- *  SVCnhiprc_support.Sj
+ *  SVCハンドラ（prc_support.S）
  */
 extern void svc_handler(void);
 
 /*
- *  X^[gAbv[`istart.Sj
+ *  スタートアップルーチン（start.S）
  */
 extern void _start(void);
 
 /*
- *  fBXpb`Ì®ìJniprc_support.Sj
- *
- *  start_dispatchÍCJ[lN®ÉÄÑo·×«àÌÅC·×ÄÌ
- *  ÝðÖ~µ½óÔiÝbNóÔÆ¯ÌóÔjÅÄÑo³È¯êÎ
- *  ÈçÈ¢D
+ *  ディスパッチャの動作開始（prc_support.S）
+ *
+ *  start_dispatchは，カーネル起動時に呼び出すべきもので，すべての割込
+ *  みを禁止した状態（割込みロック状態と同等の状態）で呼び出さなければ
+ *  ならない．
  */
 extern void start_dispatch(void) NoReturn;
@@ -312,17 +307,17 @@
 
 /*
- *  J[lÌI¹ÌÄoµiprc_support.Sj
- *
- *  call_exit_kernelÍCJ[lÌI¹ÉÄÑo·×«àÌÅCñ^XN
- *  ReLXgÉØè·¦ÄCJ[lÌI¹iexit_kerneljðÄÑo
- *  ·D
+ *  カーネルの終了処理の呼出し（prc_support.S）
+ *
+ *  call_exit_kernelは，カーネルの終了時に呼び出すべきもので，非タスク
+ *  コンテキストに切り換えて，カーネルの終了処理（exit_kernel）を呼び出
+ *  す．
  */
 extern void call_exit_kernel(void) NoReturn;
 
 /*
- *  ACh[vÌÀ
- *
- *  PÉCPUbNóÔÆCPUbNðóÔðÄÑo·ÀÆ·éD
- *  X[v[hÉüêéêÍ{ðwfi½ßðp¢Ä«·¦êÎÇ¢D
+ *  アイドルループの実装
+ *
+ *  単にCPUロック状態とCPUロック解除状態を呼び出す実装とする．
+ *  スリープモードに入れる場合は本処理をwfi命令を用いて書き換えれば良い．
  */
 Inline void
@@ -330,5 +325,5 @@
 {
 	lock_flag = false;
-	/* CPUAbN => CPUbN  */
+	/* CPUアンロック => CPUロック  */
 	Asm("\tmsr BASEPRI , %0" : : "r"(0) : "memory");
 	Asm("\tmsr BASEPRI , %0" : : "r"(IIPM_LOCK) : "memory");
@@ -337,12 +332,12 @@
 
 /*
- *  ÝÔEÝnhÔ
- *
- *  ÝnhÔ(inhno)ÆÝÔ(intno)ÍCèÝ­¶É
- *  EPSRÉÝè³êéáOÔÆ·éD 
- */
-
-/*
- *  ÝÔÌÍÍÌ»è
+ *  割込み番号・割込みハンドラ番号
+ *
+ *  割込みハンドラ番号(inhno)と割込み番号(intno)は，割り込み発生時に
+ *  EPSRに設定される例外番号とする． 
+ */
+
+/*
+ *  割込み番号の範囲の判定
  */
 #define VALID_INTNO(intno)           ((TMIN_INTNO <= (intno)) && ((intno) <= TMAX_INTNO))
@@ -351,17 +346,17 @@
 
 /*
- *  ÝnhÌÝè
- *
- *  xNgÔinhnoÌÝnhÌN®Ônint_entryÉÝè·éDÝ
- *  nhe[u
+ *  割込みハンドラの設定
+ *
+ *  ベクトル番号inhnoの割込みハンドラの起動番地int_entryに設定する．割込み
+ *  ハンドラテーブル
  */
 Inline void
 x_define_inh(INHNO inhno, FP int_entry)
 {
-	/* ÁÉs¤ÍÈ¢ */
-}
-
-/*
- *  ÝnhÌoüûÌ¶¬}N
+	/* 特に行う処理はない */
+}
+
+/*
+ *  割込みハンドラの出入口処理の生成マクロ
  *
  */
@@ -370,17 +365,17 @@
 
 /*
- *  ÝvÖ~tO
- */
-
-/*
- *  Ý®«ªÝè³êÄ¢é©ð»Ê·é½ßÌÏikernel_cfg.cj
+ *  割込み要求禁止フラグ
+ */
+
+/*
+ *  割込み属性が設定されているかを判別するための変数（kernel_cfg.c）
  */
 extern const uint32_t	bitpat_cfgint[];
 
 /*
- *  ÝvÖ~tOÌZbg
- *
- *  Ý®«ªÝè³êÄ¢È¢ÝvCÉÎµÄÝvÖ~
- *  tOðNAµæ¤Æµ½êÉÍCfalseðÔ·D  
+ *  割込み要求禁止フラグのセット
+ *
+ *  割込み属性が設定されていない割込み要求ラインに対して割込み要求禁止
+ *  フラグをクリアしようとした場合には，falseを返す．  
  */
 Inline bool_t
@@ -390,5 +385,5 @@
 
 	/*
-	 *  Ý®«ªÝè³êÄ¢È¢ê
+	 *  割込み属性が設定されていない場合
 	 */
 	if ((bitpat_cfgint[intno >> 5] & (1 << (intno & 0x1f))) == 0x00) {
@@ -412,8 +407,8 @@
 
 /*
- *  ÝvÖ~tOÌð
- *
- *  Ý®«ªÝè³êÄ¢È¢ÝvCÉÎµÄÝvÖ~
- *  tOðNAµæ¤Æµ½êÉÍCfalseðÔ·D
+ *  割込み要求禁止フラグの解除
+ *
+ *  割込み属性が設定されていない割込み要求ラインに対して割込み要求禁止
+ *  フラグをクリアしようとした場合には，falseを返す．
  */
 Inline bool_t
@@ -423,5 +418,5 @@
 
 	/*
-	 *  Ý®«ªÝè³êÄ¢È¢ê
+	 *  割込み属性が設定されていない場合
 	 */
 	if ((bitpat_cfgint[intno >> 5] & (1 << (intno & 0x1f))) == 0x00) {
@@ -458,47 +453,47 @@
 
 /*
- *  ÝvCÌ®«ÌÝè
+ *  割込み要求ラインの属性の設定
  */
 extern void x_config_int(INTNO intno, ATR intatr, PRI intpri);
 
 /*
- *  ÝnhüûÅKvÈIRCì
+ *  割込みハンドラ入口で必要なIRC操作
  */
 Inline void
 i_begin_int(INTNO intno)
 {
-	/* ÁÉs¤ÍÈ¢ */
-}
-
-/*
- *  ÝnhÌoûÅKvÈIRCì
+	/* 特に行う処理はない */
+}
+
+/*
+ *  割込みハンドラの出口で必要なIRC操作
  */
 Inline void
 i_end_int(INTNO intno)
 {
-	/* ÁÉs¤ÍÈ¢ */
-}
-
-/*
- *  CPUáOnhÖW
+	/* 特に行う処理はない */
+}
+
+/*
+ *  CPU例外ハンドラ関係
  */ 
 
 /*
- *  CPUáOnhÔ
+ *  CPU例外ハンドラ番号
  */
 #define VALID_EXCNO_DEFEXC(excno)    (TMIN_EXCNO <= (excno) && (excno) <= TMAX_EXCNO)
 
 /*
- *  CPUáOnhÌÂ
+ *  CPU例外ハンドラの許可
  */
 extern void enable_exc(EXCNO excno);
 
 /*
- *  CPUáOnhÌÖ~
+ *  CPU例外ハンドラの禁止
  */
 extern void disable_exc(EXCNO excno);
 
 /*
- *  CPUáOnhÌÝè
+ *  CPU例外ハンドラの設定
  */
 Inline void
@@ -506,5 +501,5 @@
 {
 	/*
-	 *  êÌáOÍÂðs¤Kvª é
+	 *  一部の例外は許可を行う必要がある
 	 */
 	enable_exc(excno);
@@ -512,5 +507,5 @@
 
 /*
- *  CPUáOnhÌüûÌ¶¬}N
+ *  CPU例外ハンドラの入口処理の生成マクロ
  */
 #define EXC_ENTRY(excno, exchdr)    exchdr
@@ -519,25 +514,25 @@
 
 /*
- *  CPUáOGgiprc_support.Sj
+ *  CPU例外エントリ（prc_support.S）
  */
 extern void exc_entry(void);
 
 /*
- *  ÝGgiprc_support.Sj
+ *  割込みエントリ（prc_support.S）
  */
 extern void int_entry(void);
 
 /*
- *  vZbTË¶Ìú»
+ *  プロセッサ依存の初期化
  */
 extern void prc_initialize(void);
 
 /*
- *  vZbTË¶ÌI¹
+ *  プロセッサ依存の終了時処理
  */
 extern void prc_terminate(void) NoReturn;
 
 /*
- *  atexitÌÆfXgN^ÌÀs
+ *  atexitの処理とデストラクタの実行
  */
 Inline void
@@ -548,7 +543,7 @@
 
 	/*
-	 *  software_term_hookÖÌ|C^ðCêUvolatilewèÌ éfpÉã
-	 *  üµÄ©çg¤ÌÍC0ÆÌärªÅK»Åí³êÈ¢æ¤É·é½
-	 *  ßÅ éD
+	 *  software_term_hookへのポインタを，一旦volatile指定のあるfpに代
+	 *  入してから使うのは，0との比較が最適化で削除されないようにするた
+	 *  めである．
 	 */
 	if (fp != 0) {
@@ -558,10 +553,10 @@
 
 /*
- * o^³êÄ¢È¢áOª­¶·éÆÄÑo³êé
+ * 登録されていない例外が発生すると呼び出される
  */
 extern void default_exc_handler(void *p_excinf);
 
 /*
- * ¢o^ÌÝª­¶µ½êÉÄÑo³êé
+ * 未登録の割込みが発生した場合に呼び出される
  */
 extern void default_int_handler(void *p_excinf);
Index: ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_design.txt
===================================================================
--- ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_design.txt	(revision 93)
+++ ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_design.txt	(revision 95)
@@ -1,75 +1,72 @@
 =====================================================================
-                         ARM-MvZbTË¶Ýv
+                         ARM-Mプロセッサ依存部設計メモ
                                   Last Modified: 23 Aug 2008 21:54:54
 =====================================================================
 
-±ÌhL
-gÌÊuÃ¯
-
-±ÌhL
-gÍCTOPPERS/ASPJ[lðARMvX-MvZbTÉÚA·é½ß
-ÌÝvÅ éD
-
-
-ARMVx-MÌdlÜÆß
-
-ARMvX-MÌdlÌ¤¿CJ[lÌÝvÉÖW·éÉÂ¢ÄÜÆßéD
-
-WX^
-
-ÄpWX^ÍR0`R15Ì16íÞ èCR13ÌÝª2oN\¬iPSP,MSPjÆÈ
-ÁÄ¢éDR15ÍPC, R14ÍNWX^iLRjÆÈÁÄ¢éDR0`R3,R12Í
-XNb`WX^Å éD
-
-R[ORxV
-
-R0`R4ªøC»êÈãÍX^bNDßèlÍCR0`R1Éi[³êéD(ARMÉ
-æèKè³êÄ¢é½ßCRpCÉË¶¹¸±Ì[ÆÈéD)
-
-CONTROLWX^
-
-PSP,MSPÌØèÖ¦CPrivilageÆUser[hÌWX^DÏXãÍCCXg
-NVobt@tbV
-½ßðÀs·éKvª éiisbjDCONTROL
-WX^ÌÚ×ÍCARMv7-M Architecture Application Level Reference 
-Manual Ì B1-9 ðQÆÌ±ÆD
-
-ÝxN^
-
-xN^e[u^ÅCxN^e[uÌAhXÍCZbgÍ0x00ÅC
-Vector Table Offset Registeri}bvhWX^j ðì·é±Æ
-ÅCCÓÌAhXÉzuÂ\Å éD
-
-Dæx
-
-lª¬³¢ûªDæxÆÈéD
-
-DæxÍÅå8bitÅ èCSoCÉÀ³êÄ¢érbgªÙÈéDÀ³
-êérbgª8bitÈºÌêÍCLSB©ç³øÉÈéDá¦ÎCÀ³êÄ¢
-érbgª7bitÌêÍCrbg0ª³øÆÈéD
-
-DæxÌrbgtB[hÌLSB©çrbgðTuDæxÆÄÔtB[h
-ÉÝè·é±ÆªÂ\Å éDcèÌãÊrbgðvGvVDæxÆ
-ÄÔDvGvVDæxª¯¶ÅCTuDæxªÙÈéDæxÌO[
-vÍC¨Ý¢ðvGvg·é±ÆªÅ«È¢D
-
-Reset,NMI,Hard Fault ÈOÌáOÍÝÆ¯lÉDæxªÝèÂ\Å èC
-Ý}XN@\ÉæèC­¶ðÖ~·é±ÆªÂ\Å éD
-
-CPU[h
-
-vZbTÍCThread[hàµ­ÍHandler[hÌ¢¸ê©Ì[hÆÈ
-éD
-
-ZbgÌóÔ
-
-ZbgÍThread[hCMSPªLøÆÈÁÄ¢éD
-
-Handler[h
-
-áO/Ýðó¯t¯éÆJÚ·é[hDó¯t¯½áO/ÝÌáOÔ
-ªCIPSRÉZbg³êéDáOÔÍCTRMÅèßçêÄ¢éÔÅ éD
-
-        áO              áOÔ
+○このドキュメントの位置づけ
+
+このドキュメントは，TOPPERS/ASPカーネルをARMvX-Mプロセッサに移植するため
+の設計メモである．
+
+
+○ARMVx-Mの仕様まとめ
+
+ARMvX-Mの仕様のうち，カーネルの設計に関係する事項についてまとめる．
+
+●レジスタ
+
+汎用レジスタはR0〜R15の16種類あり，R13のみが2バンク構成（PSP,MSP）とな
+っている．R15はPC, R14はリンクレジスタ（LR）となっている．R0〜R3,R12は
+スクラッチレジスタである．
+
+●コーリングコンベンション
+
+R0〜R4が引数，それ以上はスタック．戻り値は，R0〜R1に格納される．(ARMに
+より規定されているため，コンパイラに依存せずこのルールとなる．)
+
+●CONTROLレジスタ
+
+PSP,MSPの切り替え，PrivilageとUserモードのレジスタ．変更後は，インスト
+ラクションバッファフラッシュ命令を実行する必要がある（isb）．CONTROLレ
+ジスタの詳細は，ARMv7-M Architecture Application Level Reference 
+Manual の B1-9 を参照のこと．
+
+●割込みベクタ
+
+ベクタテーブル型で，ベクタテーブルのアドレスは，リセット時は0x00で，
+Vector Table Offset Register（メモリマップドレジスタ） を操作すること
+で，任意のアドレスに配置可能である．
+
+●優先度
+
+値が小さい方が高優先度となる．
+
+優先度は最大8bitであり，SoC毎に実装されているビット幅が異なる．実装さ
+れるビットが8bit以下の場合は，LSBから無効になる．例えば，実装されてい
+るビット幅が7bitの場合は，ビット0が無効となる．
+
+優先度のビットフィールドのLSBから数ビットをサブ優先度と呼ぶフィールド
+に設定することが可能である．残りの上位ビットをプリエンプション優先度と
+呼ぶ．プリエンプション優先度が同じで，サブ優先度が異なる優先度のグルー
+プは，お互いをプリエンプトすることができない．
+
+Reset,NMI,Hard Fault 以外の例外は割込みと同様に優先度が設定可能であり，
+割込みマスク機能により，発生を禁止することが可能である．
+
+●CPUモード
+
+プロセッサは，ThreadモードもしくはHandlerモードのいずれかのモードとな
+る．
+
+●リセット時の状態
+
+リセット時はThreadモード，MSPが有効となっている．
+
+●Handlerモード
+
+例外/割込みを受け付けると遷移するモード．受け付けた例外/割込みの例外番
+号が，IPSRにセットされる．例外番号は，TRMで定められている番号である．
+
+        例外              例外番号
   Reset                      1
   Non-makable Interrupt      2
@@ -86,64 +83,64 @@
   ..
 
-áO/Ýðó¯t¯éÆCó¯t¯½áO/ÝÌDæxÈºÌáO/
-ÝðÖ~·éD±ÌDæx}XNð"NVICDæx}XN"ÆÄÔD±ÌDæx
-ÍC\tgEFA©çÏX·é±ÆªÅ«¸CáO/ÝÌ^[Éæè
-ÝOÌlÉ©®IÉßéD
-
-X^bN|C^iPSPÆMSPj
-
-X^bN|C^ÍCPSPÆMSPª èCr¼IÉgpÂ\Å éDHandler
-[hÅÍMSPÌÝgpÂ\Å èCThread[hÅÍCONTROLWX^ÅIðÂ
-\Å éDCONTROLWX^Ì1rbgÚðZbg·éÆPSPªLøÉCNA
-·éÆCMSPªLøÉÈéD
-
-Thread[hÆHandler[hÌJÚ
-
-Thread[h©çHandler[hÖÌJÚÍCáO/Ýðó¯t¯é±ÆÅ
-­¶·éDêûCHandler[h©çThread[hÖÌJÚÍCPCÉ
-EXC_RETURN(0xfffffffx)ÌlðÝè·é±ÆÉæès¤iáO^[Æ
-ÄÔjDEXC_RETURNÌºÊ4bitÉæèCJÚæÌ[hâgp·éX^bN|
-C^ðÏXÂ\Å éDáO^[ÉæèCPRIMASKâBASEPRIÌlÍÏ»
-µÈ¢DêûCFAULTMASKÌlÍ'0'ÉNA³¹éD
-
-EXC_RETURN
-
-áO/Ýót¯ÉlrÉÝè³êélDrbg31`4rbgÍSÄ'1'ÅC
-ºÊ4bitÍCót¯ÌCPU[hâX^bNð½fµ½lÆÈÁÄ¢éD
-
- 0b0001 : Handler[h
- 0b1001 : Thread[h with MSP
- 0b1101 : Thread[h with PSP
-
-Thread[hÆHandler[hÌ»è
-
-»óÌ[hð»è·éÉÍCIPSRð©ÄC'0'ÈçThread[hC»êÈO
-ÈçCHandler[hÆÈéD
-
-BASEPRIWX^
-
-Ýèµ½DæxÈºÌDæxÌÝÌótðÖ~·éD±ÌDæx}XNð
-"BASEPRIDæx}XN"ÆÄÔD'0'ðÝè·éÆCSÄÌÝðÂ·éD
-áO/ÝÌótÆ^[ÉæèÏ»µÈ¢DáO/ÝÉÎ·éÝ
-Dæx}XNÍCNVICDæx}XNÆBASEPRIÌÝèlÌ¢ûilª¬³¢
-ûjÆÈéD
-
-FAULTMASK
-
-FAULTMASKÍ'1'ðZbg·é±ÆÉæèCNMIÈOÌSÄÌÝðÖ~·éD
-FAULTMASKÍCáOÌ^[Éæè'0'ÉNA³¹éD
-
-PRIMASKÆWFI
-
-PRIMASKð'1'ÉÝè·éÆCNMI Æ Hardware Fault ÈOÌáO/ÝðÖ
-~·éDPRIMASKÍÝÌÂÆÝÒ¿ðAg~bNÉs¤½ßÉp¢
-éDïÌIÉÍCPRIMASKªZbg³êÄ¢éóÔÅwfiðÀs·éÆCè
-ÝÒ¿ÆÈèCÝót¯éÆnhðÀs¹¸ÉCwfi©ç^[µ
-Ä­éD
-
-áO/ÝÌót
-
-EáO/Ýðót¯éÆCót¯ÉANeBuÈX^bNãÉÈºÌR
-  eLXgðÛ¶·é(áOt[ÆÄÔ)D
+例外/割込みを受け付けると，受け付けた例外/割込みの優先度以下の例外/割
+込みを禁止する．この優先度マスクを"NVIC優先度マスク"と呼ぶ．この優先度
+は，ソフトウェアから変更することができず，例外/割込みのリターンにより
+割込み前の値に自動的に戻る．
+
+●スタックポインタ（PSPとMSP）
+
+スタックポインタは，PSPとMSPがあり，排他的に使用可能である．Handlerモ
+ードではMSPのみ使用可能であり，ThreadモードではCONTROLレジスタで選択可
+能である．CONTROLレジスタの1ビット目をセットするとPSPが有効に，クリア
+すると，MSPが有効になる．
+
+●ThreadモードとHandlerモードの遷移
+
+ThreadモードからHandlerモードへの遷移は，例外/割込みを受け付けることで
+発生する．一方，HandlerモードからThreadモードへの遷移は，PCに
+EXC_RETURN(0xfffffffx)の値を設定することにより行う（例外リターン処理と
+呼ぶ）．EXC_RETURNの下位4bitにより，遷移先のモードや使用するスタックポ
+インタを変更可能である．例外リターンにより，PRIMASKやBASEPRIの値は変化
+しない．一方，FAULTMASKの値は'0'にクリアさせる．
+
+●EXC_RETURN
+
+例外/割込み受付け時にlrに設定される値．ビット31〜4ビットは全て'1'で，
+下位4bitは，受付け時のCPUモードやスタックを反映した値となっている．
+
+ 0b0001 : Handlerモード
+ 0b1001 : Threadモード with MSP
+ 0b1101 : Threadモード with PSP
+
+●ThreadモードとHandlerモードの判定
+
+現状のモードを判定するには，IPSRを見て，'0'ならThreadモード，それ以外
+なら，Handlerモードとなる．
+
+●BASEPRIレジスタ
+
+設定した優先度以下の優先度の割込みの受付を禁止する．この優先度マスクを
+"BASEPRI優先度マスク"と呼ぶ．'0'を設定すると，全ての割込みを許可する．
+例外/割込みの受付とリターンにより変化しない．例外/割込みに対する割込み
+優先度マスクは，NVIC優先度マスクとBASEPRIの設定値の高い方（値が小さい
+方）となる．
+
+●FAULTMASK
+
+FAULTMASKは'1'をセットすることにより，NMI以外の全ての割込みを禁止する．
+FAULTMASKは，例外のリターン処理により'0'にクリアさせる．
+
+●PRIMASKとWFI
+
+PRIMASKを'1'に設定すると，NMI と Hardware Fault 以外の例外/割込みを禁
+止する．PRIMASKは割込みの許可と割込み待ちをアトミックに行うために用い
+る．具体的には，PRIMASKがセットされている状態でwfiを実行すると，割り込
+み待ちとなり，割込み受付けるとハンドラを実行せずに，wfiからリターンし
+てくる．
+
+●例外/割込みの受付
+
+・例外/割込みを受付けると，受付け時にアクティブなスタック上に以下のコ
+  ンテキストを保存する(例外フレームと呼ぶ)．
 
    -----------
@@ -166,29 +163,29 @@
   |           | <- old SP
 
-EvZbTðHandler[hÆ·éDMSPªLøÆÈéD
-Eót¯½áO/ÝÌáOÔðIPSRÉÝè·éD
-ENVICÝDæx}XNðót¯½áO/ÝÌDæxÉÝè·éD
-ElrÉEXC_RETURNÌlªÝè³êéD
-ExN^e[uðÇÝÝnhðÀs·éD
-
-áO/Ý©çÌ^[
-
-pcÉEXC_RETURNÌlðÝè·é±ÆÉæèCáO/Ý©ç^[·éD
-pcÖÌÝèÉgpÂ\È½ßÉÍ§Àª èCÈº½ßªgpÂ\Å éD
-
-  EPOP/LDM, LDR, BX
-
-¢ðÛè
-
-ExN^[e[uÉo^·éÖÌAhXÌLSBÍ'1'É·é×«©?
-ENVICÍáOEÝÌlXgñðàIÉÇµÄ¢éçµ¢D
-  (!t@Xð¾ç©É)D
-    \tgEFAÅÍClXgÌ Kðí¹êÎC^[X^bNðU¢µ
-    ÄàâèÈ¢©D
-
-
-OSÌÀ
-
-1.^[Qbg¼
+・プロセッサをHandlerモードとする．MSPが有効となる．
+・受付けた例外/割込みの例外番号をIPSRに設定する．
+・NVIC割込み優先度マスクを受付けた例外/割込みの優先度に設定する．
+・lrにEXC_RETURNの値が設定される．
+・ベクタテーブルを読み込みハンドラを実行する．
+
+●例外/割込みからのリターン
+
+pcにEXC_RETURNの値を設定することにより，例外/割込みからリターンする．
+pcへの設定に使用可能な命令には制限があり，以下命令が使用可能である．
+
+  ・POP/LDM, LDR, BX
+
+●未解決課題
+
+・ベクターテーブルに登録する関数のアドレスのLSBは'1'にするべきか?
+・NVICは例外・割込みのネスト回数を内部的に管理しているらしい．
+  (!リファレンスを明らかに)．
+    ソフトウェアでは，ネストの帳尻を合わせれば，リターンスタックを偽造し
+    ても問題ないか．
+
+
+○OSの実装
+
+1.ターゲット名
 
  1-1 cm3(Cortex-M3)
@@ -196,334 +193,329 @@
  1-3 arm_m
 
-cm3ÅÍCCoretex-M1(armv6-m)ðT|[g·éêÉâèÆÈéDarmv7mÅÍC
-armv8mª[X³ê½êÉâèÆÈéDARMË¶ÍJSPÅÍCarmv4ÆÈ
-ÁÄ¢½ªCarmv5âarmv7à®ì·é½ßASPÅÍPÉarmÆµ½D»Ì½ßC
-arm_mª³ïÆl¦çêéD
-
-
-2.Thread[hÆHandler[hÌg¢ª¯
+cm3では，Coretex-M1(armv6-m)をサポートする場合に問題となる．armv7mでは，
+armv8mがリリースされた場合に問題となる．ARM依存部はJSPでは，armv4とな
+っていたが，armv5やarmv7も動作するためASPでは単にarmとした．そのため，
+arm_mが無難と考えられる．
+
+
+2.ThreadモードとHandlerモードの使い分け
 
  2-1
-  ^XNReLXgÍThread[hCñ^XNReLXgÍHandler[
-  hÅ®ì³¹éD
+  タスクコンテキストはThreadモード，非タスクコンテキストはHandlerモー
+  ドで動作させる．
 
  2-2
-  ^XNReLXgÆñ^XNReLXg¤ÉHandler[hÅ®ì³¹
-  éD
-
-vZbTÌÝvûjðl¶·éÆ2-1ªLÍD2-1ÅÌâè_ÆµÄÍC
-Ýnh©ç^XNÖÌ^[É[hÌÏXªÈºÌlÉ½­·é±
-Æª°çêéD
-
-1.Ýnh               : Handler[h
-2.^XNáOnhÌÄÑoµ : Thread[h
-3.^XNÖÌ^[       : Handler[h
-4.^XNÌÄJ                 : Thread[h
-
-3ÅHandler[hÉÚs·éKvª éÌÍCáOt[ðp¢ÄA·é
-ÉÍCHandler[hÅáO^[ðs¤Kvª é½ßÅ éDARMÅ
-ÍC¡WX^Ì[hÆCPSRÌAð¯És¦éªCM3Ís¦È¢½ßC
-±Ìû@ÅÝæÌ^XNÉ^[·éKvª éD
-
-2-2ÌêÌÝnh©ç^XNÖÌ^[É[hÌÏXðÈº
-É¦·DÜ½C2-2ÅÍÝDæxÌÅálð^XNÌÀsÌDæxÆµ
-ÄU[u·éKvª éD
-
-1.Ýnh               : Handler[h
-2.NVICDæx}XN'0'ð0Ö     : Thread[h
-3.ÅáDæxÌHandler[hÖ  : Handler[h
-4.^XNáOnhÌÄÑoµ : Handler[h
-5.^XNÖÌ^[ÌO   : Thread[h
-3.^XNÖÌ^[           : Handler[h
-4.^XNÌÄJ                 : Handler[h
-
-Ýnh©ç^XNÌ^[ÉÖµÄÍC2-2Å ÁÄàC2ðÀs·
-éêÉCNVICDæx}XNð'0'É·é½ßCáO^[ðs¤Kv
-ª éDÜ½CNVIC©ÌªCÝÌlXgñðÇµÄ¢é½ßC3©ç4
-ÖÌJÚÌ½ßÉC¢Á½ñáO/Ýðót¯½óÔÉ·éKvª é½
-ßCÊIÉ2-1ÈãÌJÚªKvÆÈéD
-
-2-2ÌêÍCMSPµ©g¦È¢½ßCÝÌüèûÅlXgñð»fµÄC
-X^bNðüêÖ¦éKvª éD
-
-HRPÅÛìðp¢éêÍ2-1ÆÈéD
-
-ÈãÌRÉæèC2-1ðÌp·éD½¾µ2-1ÍCJ[lN®ÆIDLE[
-vÌµ¢ð¢·éKvª éD±êçÉÂ¢ÄÍÊrc_·éD
-
-
-3.fBXpb`ÌÀs[h
+  タスクコンテキストと非タスクコンテキスト共にHandlerモードで動作させ
+  る．
+
+プロセッサの設計方針を考慮すると2-1が有力．2-1での問題点としては，割込
+みハンドラからタスクへのリターン時にモードの変更が以下の様に多発するこ
+とが挙げられる．
+
+1.割込みハンドラ               : Handlerモード
+2.タスク例外ハンドラの呼び出し : Threadモード
+3.タスクへのリターン処理       : Handlerモード
+4.タスクの再開                 : Threadモード
+
+3でHandlerモードに移行する必要があるのは，例外フレームを用いて復帰する
+には，Handlerモードで例外リターン処理を行う必要があるためである．ARMで
+は，複数レジスタのロードとCPSRの復帰を同時に行えるが，M3は行えないため，
+この方法で割込み先のタスクにリターンする必要がある．
+
+2-2の場合の割込みハンドラからタスクへのリターン時にモードの変更を以下
+に示す．また，2-2では割込み優先度の最低値をタスクの実行時の優先度とし
+てリザーブする必要がある．
+
+1.割込みハンドラ               : Handlerモード
+2.NVIC優先度マスク'0'を0へ     : Threadモード
+3.最低優先度のHandlerモードへ  : Handlerモード
+4.タスク例外ハンドラの呼び出し : Handlerモード
+5.タスクへのリターンの前処理   : Threadモード
+3.タスクへのリターン           : Handlerモード
+4.タスクの再開                 : Handlerモード
+
+割込みハンドラからタスクのリターンに関しては，2-2であっても，2を実行す
+る場合に，NVIC優先度マスクを'0'にするため，例外リターン処理を行う必要
+がある．また，NVIC自体が，割込みのネスト回数を管理しているため，3から4
+への遷移のために，いったん例外/割込みを受付けた状態にする必要があるた
+め，結果的に2-1以上の遷移が必要となる．
+
+2-2の場合は，MSPしか使えないため，割込みの入り口でネスト回数を判断して，
+スタックを入れ替える必要がある．
+
+HRP等でメモリ保護を用いる場合は2-1となる．
+
+以上の理由により，2-1を採用する．ただし2-1は，カーネル起動時とIDLEルー
+プの扱いを検討する必要がある．これらについては別途議論する．
+
+
+3.ディスパッチャの実行モード
 
  3-1
-  Thread[hÅÀs·é
+  Threadモードで実行する
 
  3-2
-  Handler[hÅÀs·é
-
-fBXpb`ðThread[hÅÀs·éÆCÝÉæèvGvg³ê
-½^XNÉßéêÍÌæ¤ÈpXÉÈéD
-
- 1. fBXpb`ÄÑoµ : Thread[h 
- 2. fBXpb`Às     : Thread[h
- 3. ^XNáOÀs         : Thread[h
- 4D^XNÖÌ^[ : Handler[h
- 5. ^XNÌÄJ           : Thread[h
-
-Ýnh©ç©çfBXpb`µ½^XNÖ^[·éêÍÌp
-XÉÈéD
-
- 1.Ýnh               : Handler[h
- 2.fBXpb`Às           : Thread[h
- 3.^XNáOnhÌÄÑoµ : Thread[h
- 4.^XNÖÌ^[           : Handler[h
- 5.^XNÌÄJ                 : Thread[h
-
-êûCfBXpb`ðHandler[hÅÀs·éÆCÝÉæèvG
-vg³ê½^XNÉßéêÍÌæ¤ÈpXÉÈéD
-
- 1. fBXpb`ÄÑoµ : Thread[h 
- 2. fBXpb`Às     : Handler[h
- 3. ^XNáOÀs         : Thread[h
- 4D^XNÖÌ^[     : Handler[h
- 5. ^XNÌÄJ           : Thread[h
-
-ÝnhÌoû©ç©çfBXpb`µ½^XNÖ^[·éêÍ
-ÌpXÉÈéD
-
- 1.Ýnh               : Handler[h
- 2.fBXpb`Às           : Handler[h
- 3.^XNáOnhÌÄÑoµ : Thread[h
- 4.^XNÖÌ^[           : Handler[h
- 5.^XNÌÄJ                 : Thread[h
-
-^XNáOnhªÈ¢OSÌêÍCHandler[hÅÀsµ½ûª[h
-ÌJÚÌñª¸éªC^XNáOnhª éÆCThread[hÌûªJ
-Úñª¸é½ßCThread[hÆ·éD
-
-Ûìðl¶·éÆCfBXpb`ÍHandler[hÅ®ì³¹½ûª
-ø¦ªæ¢Æl¦çêéiSVCÅnhðÄÑo·ÆHandler[hÆÈé½
-ßjD
-
-
-4.X^bNÌg¢ª¯
+  Handlerモードで実行する
+
+ディスパッチャをThreadモードで実行すると，割込みによりプリエンプトされ
+たタスクに戻る場合は次のようなパスになる．
+
+ 1. ディスパッチャ呼び出し : Threadモード 
+ 2. ディスパッチャ実行     : Threadモード
+ 3. タスク例外実行         : Threadモード
+ 4．タスクへのリターン処理 : Handlerモード
+ 5. タスクの再開           : Threadモード
+
+割込みハンドラから自らディスパッチしたタスクへリターンする場合は次のパ
+スになる．
+
+ 1.割込みハンドラ               : Handlerモード
+ 2.ディスパッチャ実行           : Threadモード
+ 3.タスク例外ハンドラの呼び出し : Threadモード
+ 4.タスクへのリターン           : Handlerモード
+ 5.タスクの再開                 : Threadモード
+
+一方，ディスパッチャをHandlerモードで実行すると，割込みによりプリエン
+プトされたタスクに戻る場合は次のようなパスになる．
+
+ 1. ディスパッチャ呼び出し : Threadモード 
+ 2. ディスパッチャ実行     : Handlerモード
+ 3. タスク例外実行         : Threadモード
+ 4．タスクへのリターン     : Handlerモード
+ 5. タスクの再開           : Threadモード
+
+割込みハンドラの出口から自らディスパッチしたタスクへリターンする場合は
+次のパスになる．
+
+ 1.割込みハンドラ               : Handlerモード
+ 2.ディスパッチャ実行           : Handlerモード
+ 3.タスク例外ハンドラの呼び出し : Threadモード
+ 4.タスクへのリターン           : Handlerモード
+ 5.タスクの再開                 : Threadモード
+
+タスク例外ハンドラがないOSの場合は，Handlerモードで実行した方がモード
+の遷移の回数が減るが，タスク例外ハンドラがあると，Threadモードの方が遷
+移回数が減るため，Threadモードとする．
+
+メモリ保護を考慮すると，ディスパッチャはHandlerモードで動作させた方が
+効率がよいと考えられる（SVCでハンドラを呼び出すとHandlerモードとなるた
+め）．
+
+
+4.スタックの使い分け
 
  4-1
-  ^XNReLXgðPSP, ñ^XNReLXgðMSP
+  タスクコンテキストをPSP, 非タスクコンテキストをMSP
  4-2
-  ^XNReLXgCñ^XNReLXg¤ÉMSP
-
-4-2ÌêCÝÌüèûÅlXgñð»fµÄCX^bNðüêÖ¦é
-Kvª éD2Å^XNReLXgÍThread[hCñ^XNReLXg
-ÍHandler[hÅ®ì³¹éÆµ½½ßC4-1ðÌp·éÆCÝÌüèû
-Å©®IÉX^bNªØèÖíéDThread[hÅÌPSPÌANZXàC
-mrs/msr½ßÅs¦é½ßC4-1ðÌp·éD
-
-
-5.ReLXgÌ»è
+  タスクコンテキスト，非タスクコンテキスト共にMSP
+
+4-2の場合，割込みの入り口でネスト回数を判断して，スタックを入れ替える
+必要がある．2でタスクコンテキストはThreadモード，非タスクコンテキスト
+はHandlerモードで動作させるとしたため，4-1を採用すると，割込みの入り口
+で自動的にスタックが切り替わる．ThreadモードでのPSPのアクセスも，
+mrs/msr命令で行えるため，4-1を採用する．
+
+
+5.コンテキストの判定
 
  5-1
-  IPSRª'0'(Thread[h)Èç^XN^XNReLXgC'1'(Handler[
-  h)Èçñ^XNReLXgÆ·éD
+  IPSRが'0'(Threadモード)ならタスクタスクコンテキスト，'1'(Handlerモー
+  ド)なら非タスクコンテキストとする．
 
  5-2
-  ÝÌlXgñðÛ·éÏðpÓD1ÈãÅñ^XNReLXgD
+  割込みのネスト回数を保持する変数を用意．1以上で非タスクコンテキスト．
 
  5-3
-  ANeBuÈX^bNÉæè»fiMSPÈçñ^XNReLXgCPSPÈç
-  ^XNReLXgÆ·éj
-
-5-1ÍC\tgEFA¤ÅReLXgÇÌ½ßÌðs¤KvªÈ¢Æ
-¢¤bgª éDµ©µÈªçCJ[lÌN®Thread[hÅ é½
-ßCHandler[hÖÚs·éKvª éDASPJ[lÅÍCIDLE[vÀs
-Íñ^XNReLXgÆµÄ®ì³¹éKvª é½ßCIDLE[vÍ
-Handler[hÅ®ì³¹éKvª éDIDLE[vÍfBXpb`©çÄ
-Ño³êéD3Åèß½æ¤ÉCfBXpb`ðThread[hÅ®ì³¹é
-½ßCIDLE[vðÄÑo·ÛÉÍCHandler[hÖJÚ·éKvª éD
-Handler[hÖÌJÚÍCSVC/PendSVCðp¢éÆÀ»Â\Å éªC6Ì
-ÝÉvGvg³ê½^XNÖÌ^[ÌHandler[hÖÌÚsÅ
-àSVC/PendSVCÌgpªKvÆÈé½ßCSVCnhÅÍCÇÌÚIÅÄÑo
-³ê½©»è·éKvªoÄ­é½ßCI[owbhªå·éD
-
-5-2ÅÍCJ[lN®âIDLE[vÉÏð'1'ÉÝè·êÎæ¢±ÆÉ
-ÈéD±ÌêCJ[lN®âIDLE[vÉThread[hÅÀsµÄà
-®ìÉâèªÈ¢æ¤CÁÉÝÌoüèûÌÝvðÓ·éKvª éD
-
-J[lN®ÉÖµÄÍCSÝðÖ~µÄ¨èCÝªüçÈ¢ÌÅ
-ÁÉâèÍÈ¢DIDLE[vÍCThread[hÅMSPÆPSPÌIðªÂ\Å 
-é±ÆðpµÄCñ^XNReLXgÌX^bNÅ éMSPÉÏX·éD
-áO/ÝÌüèûÅÍC½dÝÅ é©ðEXC_RETURNÌ[h»èÌ
-rbgÅÍÈ­CX^bNÌ»èrbgÅs¦ÎâèÈ¢DáO/Ý©ç
-Ì^[ÉÖµÄÍC½dÝÌ»èÍCüèûÆ¯lÉEXC_RETURNÌX
-^bN»èrbgÅs¦Îæ¢DáO^[ÉpcÉãü·é
-EXC_RETURNÌlðê¥0xfffffffd (Thread[h with MSP)Æ·éÌÅÍÈ­C
-áO/Ýót¯ÉLRÉÝè³êéEXC_RETURNðp¢é±ÆÉæèCIDLE
-[vÉèñ¾êÅàâèÈ­^[·éD
-
-J[lN®ÍCMSPªANeBuÅ èCÝnhÀsÍHandler
-[hÅ é±Æ©çMSPªANeBuÅèCIDLE[vÉMSPðANeBu
-ÉÝè·éÆCñ^XNReLXgÍSÄCMSPðANeBuÉµÄ®ì·
-é±ÆÉÈéDÜ½CÝÍÝOÉANeBuÈX^bNÌîñªC
-EXC_RETURNÉÝè³êéD»Ì½ßCReLXgÌ»èÍCÝlXgñ
-ðÛ·éÏªÈ­ÆàCANeBuÈX^bNð©êÎæ¢±ÆÉÈéD
-Ü½Cexc_sense_context()ÉÖµÄÍCáOt[ÉEXC_RETURNðÇÁ
-µC»ÌàeÉæè»f·êÎæ¢DÈãÌRÉæèC5-3ðÌp·éD
-
-
-6.ÝÉvGvg³ê½^XNÖÌ^[ÌHandler[hÖÌÚ
-  sû@
+  アクティブなスタックにより判断（MSPなら非タスクコンテキスト，PSPなら
+  タスクコンテキストとする）
+
+5-1は，ソフトウェア側でコンテキスト管理のための処理を行う必要がないと
+いうメリットがある．しかしながら，カーネルの起動時Threadモードであるた
+め，Handlerモードへ移行する必要がある．ASPカーネルでは，IDLEループ実行
+は非タスクコンテキストとして動作させる必要があるため，IDLEループは
+Handlerモードで動作させる必要がある．IDLEループはディスパッチャから呼
+び出される．3で定めたように，ディスパッチャをThreadモードで動作させる
+ため，IDLEループを呼び出す際には，Handlerモードへ遷移する必要がある．
+Handlerモードへの遷移は，SVC/PendSVCを用いると実現可能であるが，6の割
+込みにプリエンプトされたタスクへのリターン時のHandlerモードへの移行で
+もSVC/PendSVCの使用が必要となるため，SVCハンドラでは，どの目的で呼び出
+されたか判定する必要が出てくるため，オーバヘッドが増大する．
+
+5-2では，カーネル起動時やIDLEループ時に変数を'1'に設定すればよいことに
+なる．この場合，カーネル起動時やIDLEループ時にThreadモードで実行しても
+動作に問題がないよう，特に割込みの出入り口の設計を注意する必要がある．
+
+カーネル起動時に関しては，全割込みを禁止しており，割込みが入らないので
+特に問題はない．IDLEループ時は，ThreadモードでMSPとPSPの選択が可能であ
+ることを利用して，非タスクコンテキストのスタックであるMSPに変更する．
+例外/割込みの入り口では，多重割込みであるかをEXC_RETURNのモード判定の
+ビットではなく，スタックの判定ビットで行えば問題ない．例外/割込みから
+のリターンに関しては，多重割込みの判定は，入り口と同様にEXC_RETURNのス
+タック判定ビットで行えばよい．例外リターン処理時にpcに代入する
+EXC_RETURNの値を一律0xfffffffd (Threadモード with MSP)とするのではなく，
+例外/割込み受付け時にLRに設定されるEXC_RETURNを用いることにより，IDLE
+ループに割り込んだ場合でも問題なくリターンする．
+
+カーネル起動時は，MSPがアクティブであり，割込みハンドラ実行時はHandler
+モードであることからMSPがアクティブでり，IDLEループ時にMSPをアクティブ
+に設定すると，非タスクコンテキストは全て，MSPをアクティブにして動作す
+ることになる．また，割込み時は割込み前にアクティブなスタックの情報が，
+EXC_RETURNに設定される．そのため，コンテキストの判定は，割込みネスト回
+数を保持する変数がなくとも，アクティブなスタックを見ればよいことになる．
+また，exc_sense_context()に関しては，例外フレーム中にEXC_RETURNを追加
+し，その内容により判断すればよい．以上の理由により，5-3を採用する．
+
+
+6.割込みにプリエンプトされたタスクへのリターン時のHandlerモードへの移
+  行方法
 
  6-1
-  SVCðp¢é
+  SVCを用いる
  6-2
-  PendSVCðp¢é
-
-PendSVCÆSVCÌá¢ÍCPendSVCªvªL
-[CO³êCSVCÍvªL
-
-[CO³êÈ¢±ÆÅ éDÝÉvGvg³ê½^XNÖÌ^[
-ÌHandler[hÖÌÚsÍCL
-[CO³ê¸É¦ÀÉ³êéK
-vª é½ßCÇ¿çÅÀ»µÄàâèÈ¢DÇ¿çðJ[lÌ\[Xµ
-Ägp·é©ÌIð¾¯Å éD
-
-Ç¿çðg¤ÆµÄàCDæxÌÝèªâèÆÈéDfBXpb`©ç
-ÝÉvGvg³ê½^XNÖÌ^[ÜÅÌÍC­È­ÆàCPU
-bNóÔÅÀs³êÈ¯êÎÈçÈ¢DSVCâPendSVCÍÇ¿çàÝDæx
-ðÂ½ßCNVICDæx}XNæèBASEPRIDæx}XNÌûª¢êC
-³êÈ¢D
-
-CPUbNóÔðBASEPRIÌÝèÅÀ»µ½êC»ÌÝèlðSVCâPendSVCÉ
-Ýèµ½læèá­·éKvª éD¾¢·¦éÆCSVCâPendSVCÌDæxð
-CPUbNÌDæx}XNÌlæè¢li¼ÌÝæè¢DæxjÆ
-·éKvª éD
-
-CPUbNóÔðFAULTMASKâPRIMASKÅÀ»µ½êÍC±êçªÝè³êé
-ÆCSVCâPendSVCªót¯çêÈ¢½ßC¢Á½ñBASEPRIÉæèÝð}
-XN·éæ¤ÉÝè·éKvª éD±ÌêàCSVCâPendSVCÍ¼ÌÝ
-æè¢DæxðÝè·éKvª éD
-
-ÈãÉæèCHandler[hÖÌÚsÌ½ßÉÍCCPUbNóÔðBASEPRIÅ
-À»µCSVCâPendSVCÉÝè·éDæxðJ[lÇàÌÅDæxæèê
-Â¢DæxÉÝè·éKvª éD
-
-
-7. áO/ÝoüèûÅÌ½dÝÌ»f
+  PendSVCを用いる
+
+PendSVCとSVCの違いは，PendSVCが要求がキューイングされ，SVCは要求がキュ
+ーイングされないことである．割込みにプリエンプトされたタスクへのリター
+ン時のHandlerモードへの移行は，キューイングされずに即座に処理される必
+要があるため，どちらで実現しても問題ない．どちらをカーネルのリソースし
+て使用するかの選択だけである．
+
+どちらを使うとしても，優先度の設定が問題となる．ディスパッチャから割込
+みにプリエンプトされたタスクへのリターンまでの処理は，少なくともCPUロ
+ック状態で実行されなければならない．SVCやPendSVCはどちらも割込み優先度
+を持つため，NVIC優先度マスクよりBASEPRI優先度マスクの方が高い場合，処
+理されない．
+
+CPUロック状態をBASEPRIの設定で実現した場合，その設定値をSVCやPendSVCに
+設定した値より低くする必要がある．言い換えると，SVCやPendSVCの優先度を
+CPUロック時の優先度マスクの値より高い値（他の割込みより高い優先度）と
+する必要がある．
+
+CPUロック状態をFAULTMASKやPRIMASKで実現した場合は，これらが設定される
+と，SVCやPendSVCが受付けられないため，いったんBASEPRIにより割込みをマ
+スクするように設定する必要がある．この場合も，SVCやPendSVCは他の割込み
+より高い優先度を設定する必要がある．
+
+以上により，Handlerモードへの移行のためには，CPUロック状態をBASEPRIで
+実現し，SVCやPendSVCに設定する優先度をカーネル管理内の最高優先度より一
+つ高い優先度に設定する必要がある．
+
+
+7. 例外/割込み出入り口での多重割込みの判断
 
 7-1
- EXC_RETURNÌ[h»èrbg
+ EXC_RETURNのモード判定ビット
 7-2
- EXC_RETURNÌX^bN»èrbg
+ EXC_RETURNのスタック判定ビット
 7-3
- ÝlXgñÌÇÏ
-
-áO/Ýót¯ÍCót¯½áO/ÝÈºÌÝÍÖ~·éªCS
-ÝÖ~óÔÉÍÈçÈ¢D»Ì½ßCÝlXgñÌÇÏðC
-Ng·éOÉÝªüéÂ\«ª é½ßC7-3Ígp·é±ÆªÅ
-«È¢D
-
-5Åc_µ½ÊèCIDLE[vðThread[hÅÀs·é½ßC7-1ÅÍÈ­C
-7-2Å»f·éKvª éD
-
-
-8. IDLE[v
+ 割込みネスト回数の管理変数
+
+例外/割込み受付け時は，受付けた例外/割込み以下の割込みは禁止するが，全
+割込み禁止状態にはならない．そのため，割込みネスト回数の管理変数をイン
+クリメントする前に割込みが入る可能性があるため，7-3は使用することがで
+きない．
+
+5で議論した通り，IDLEループをThreadモードで実行するため，7-1ではなく，
+7-2で判断する必要がある．
+
+
+8. IDLEループ
 
 8-1
- Thread[hÅÀs
+ Threadモードで実行
 8-2
- Handler[hÅÀs
-
-5Åc_µ½ÊèCThread[hÅÀsÅ«½ûªI[owbhª¬³¢DÜ
-½CThread[hÅÀsµÄàCèÝÌoüèûÅ³µ­ñ^XNRe
-LXgÆ»èÅ«êÎCThread[hÅâèÈ¢D
-
-
-9DJ[lÇOÌÝÌT|[g
+ Handlerモードで実行
+
+5で議論した通り，Threadモードで実行できた方がオーバヘッドが小さい．ま
+た，Threadモードで実行しても，割り込みの出入り口で正しく非タスクコンテ
+キストと判定できれば，Threadモードで問題ない．
+
+
+9．カーネル管理外の割込みのサポート
 
 9-1
- J[lÇOÌÝðT|[gµÈ¢
+ カーネル管理外の割込みをサポートしない
 9-2
- J[lÇOÌÝðT|[g·é
-
-xN^e[uðT|[gµÄ¨èCÝnhàC¾êÅLqÂ\Å 
-é½ßCT|[gªeÕÅ é½ßCT|[g·éD
-
-
-10. CPUbN
+ カーネル管理外の割込みをサポートする
+
+ベクタテーブルをサポートしており，割込みハンドラもC言語で記述可能であ
+るため，サポートが容易であるため，サポートする．
+
+
+10. CPUロック
 
 10-1
- BASEPRIðgp 
+ BASEPRIを使用 
 10-2 
- FAULTMASK/PRIMASKðgp
-
-J[lÌÇOÌÝðT|[g·éÈçCBASEPRIðgp·éKvª 
-éD
-
-
-11. ÝbNÆCPUáOÌÖW
+ FAULTMASK/PRIMASKを使用
+
+カーネルの管理外の割込みをサポートするなら，BASEPRIを使用する必要があ
+る．
+
+
+11. 割込みロックとCPU例外の関係
 
 11-1
- BASEPRIðgp 
+ BASEPRIを使用 
 11-2 
- FAULTMASK/PRIMASKðgp 
-
-FAULTMASK/PRIMASKðgp·éÆCNMI Æ Hardware Fault ÈOÌCPUáOàÖ
-~³êÄµÜ¤D
-
-BASEPRIðp¢éÆCÝbNÉàCPUáOðót¯½¢êÍC
-BASEPRIðp¢ÄCÅDæxðCPUáOÌ½ßÉU[u·éKvª éD
-
-ÝbNàCCPUáOðót¯éæ¤Éµ½¯êÎBASEPRIðgp·éK
-vª éD
-
-ÊIRON4.0dlÌ3.5.3ÅÍCCPUáOÌDæxÍÌæ¤ÉèßçêÄ¢éD
-
-"CPUáOnhÌDæÊÍCCPUáOª­¶µ½ÌDæxÆCfBX
-pb`ÌDæÊÌ¢¸ê©æèà¢D"
-
-CPUáOª­¶µ½ÌDæxæèà¢Æ éÌÅCCPUbNâÝ
-bNóÔÌ^XNÅ­¶µ½êÅàCDæµÄÀs³êé×«¾Æàl¦ç
-êéD
-
-êûCTOPPERSWÝfÌdlÅÍCCPUáOÍCvZbT
-ÉÙÈé½ßCCPUáOÌfÌW»¢ÌÎÛOÆµÄ¢éD»Ì
-½ßCARM-MÅÌµ¢ðßÄC}j
-AÉ¾L·êÎæ¢Æl¦çêéD
-
-
-12. ODæxÆàDæxÌÏ·
-
-ODæxÆÍAPIÅwè·éÝDæx(PRI^)Ì±ÆÅ èClª¬³¢
-ÙÇDæxª¢DÝnhÉÍC-1©çA±µ½ÌlðÝèÂ\Å
- éDàDæxÍCBASEPRIâNVICÌDæxWX^ÉÝè·élÅ éD
-
-À³êéÝDæxÌrbgð TBITW_IPRI Æ·éÆCÝèÂ\ÈO
-DæxÍÌæ¤ÉÈéD
-
-  TIPM_ENAALLi0j` -(1 << TBITW_IPRI)
-
-
-13. J[lÇàÌÅDæx(CPUbNóÔÅÌDæx}XN)
-
-6.Åq×½æ¤ÉCÝÌoûÅSVCnhðÄÑo·Kvª é½ßC
-SVCnhÍCPUbNóÔÌBASEPRIÉÝè·éDæx}XNæè¢Dæx
-ðÝè·éKvª éD
-
-À³êéÝDæxÌrbgð TBITW_IPRICDæxÌTuDæxÌ
-rbgðTBIT_IPRIÆ·éÆCCPUbNóÔiJ[lÇàÝÉÝè
-Â\ÈÅDæxjÆµÄwèÂ\ÈDæx}XNÌÝèÍÍÍÈºÌlÌÍ
-ÍÆÈéD
-
-    -(2^(TBIW_IPRI)) + (2^TBITW_SUBIPRI)) ` -1
-
-
-14. ¢ðÛè
-
-EÝbNÆCPUáOÌÖW
-  BASEPRIðgÁ½ÆµÄàC éCPUáOÉ¼ÌáOª­¶·éÆC»
-  ÌáOÍó¯t¯çêÈ¢½ßCITRONdlÍ½¹È¢D
-  -> «çßÄ}j
-ALÚÉ¦°é©.
-  veNVÌáOà}XNÂ\Å é½ßvD
-
-
-ÈãD
+ FAULTMASK/PRIMASKを使用 
+
+FAULTMASK/PRIMASKを使用すると，NMI と Hardware Fault 以外のCPU例外も禁
+止されてしまう．
+
+BASEPRIを用いると，割込みロック中にもCPU例外を受付けたい場合は，
+BASEPRIを用いて，最高優先度をCPU例外のためにリザーブする必要がある．
+
+割込みロック時も，CPU例外を受付けるようにしたければBASEPRIを使用する必
+要がある．
+
+μIRON4.0仕様の3.5.3では，CPU例外の優先度は次のように定められている．
+
+"CPU例外ハンドラの優先順位は，CPU例外が発生した処理の優先度と，ディス
+パッチャの優先順位のいずれかよりも高い．"
+
+CPU例外が発生した処理の優先度よりも高いとあるので，CPUロックや割込みロ
+ック状態のタスクで発生した場合でも，優先して実行されるべきだとも考えら
+れる．
+
+一方，TOPPERS標準割込み処理モデルの仕様書では，CPU例外は，プロセッサ毎
+に異なるため，CPU例外の処理モデルの標準化検討の対象外としている．その
+ため，ARM-Mでの扱いを決めて，マニュアルに明記すればよいと考えられる．
+
+
+12. 外部優先度と内部優先度の変換
+
+外部優先度とはAPIで指定する割込み優先度(PRI型)のことであり，値が小さい
+ほど優先度が高い．割込みハンドラには，-1から連続した負の値を設定可能で
+ある．内部優先度は，BASEPRIやNVICの優先度レジスタに設定する値である．
+
+実装される割込み優先度のビット幅を TBITW_IPRI とすると，設定可能な外部
+優先度は次のようになる．
+
+  TIPM_ENAALL（＝0）〜 -(1 << TBITW_IPRI)
+
+
+13. カーネル管理内の最高優先度(CPUロック状態での優先度マスク)
+
+6.で述べたように，割込みの出口でSVCハンドラを呼び出す必要があるため，
+SVCハンドラはCPUロック状態のBASEPRIに設定する優先度マスクより高い優先度
+を設定する必要がある．
+
+実装される割込み優先度のビット幅を TBITW_IPRI，優先度中のサブ優先度の
+ビット幅をTBIT_IPRIとすると，CPUロック状態（カーネル管理内割込みに設定
+可能な最高優先度）として指定可能な優先度マスクの設定範囲は以下の値の範
+囲となる．
+
+    -(2^(TBIW_IPRI)) + (2^TBITW_SUBIPRI)) 〜 -1
+
+
+14. 未解決課題
+
+・割込みロックとCPU例外の関係
+  BASEPRIを使ったとしても，あるCPU例外処理中に他の例外が発生すると，そ
+  の例外は受け付けられないため，ITRON仕様は満たせない．
+  ->あきらめてマニュアル記載に逃げるか.
+  メモリプロテクションの例外もマスク可能であるため要件等．
+
+
+以上．
Index: ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_insn.h
===================================================================
--- ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_insn.h	(revision 93)
+++ ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_insn.h	(revision 95)
@@ -6,36 +6,32 @@
  *              Graduate School of Information Science, Nagoya Univ., 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: prc_insn.h 1304 2008-08-27 07:28:36Z ertl-honda $
@@ -44,5 +40,5 @@
 
 /*
- *  RAË¶ÌÁê½ßÌCCÖè`iARM-Mpj
+ *  コア依存の特殊命令のインライン関数定義（ARM-M用）
  */
 
@@ -53,5 +49,5 @@
 
 /*
- *  FAULTMASKÌZbg
+ *  FAULTMASKのセット
  */
 Inline void
@@ -61,5 +57,5 @@
 
 /*
- *  FAULTMASKÌNA
+ *  FAULTMASKのクリア
  */
 Inline void
@@ -69,5 +65,5 @@
 
 /*
- *  PRIMASKÌZbg
+ *  PRIMASKのセット
  */
 Inline void
@@ -77,5 +73,5 @@
 
 /*
- *  PRIMASKÌNA
+ *  PRIMASKのクリア
  */
 Inline void
@@ -85,5 +81,5 @@
 
 /*
- *  BASEPRIÌZbg
+ *  BASEPRIのセット
  */
 Inline void
@@ -93,5 +89,5 @@
 
 /*
- *  BASEPRIÌæ¾
+ *  BASEPRIの取得
  */
 Inline uint32_t
@@ -103,5 +99,5 @@
 
 /*
- *  CONTROLÌZbg
+ *  CONTROLのセット
  */
 Inline void
@@ -113,5 +109,5 @@
 
 /*
- *  CONTROLÌæ¾
+ *  CONTROLの取得
  */
 Inline uint32_t
@@ -123,5 +119,5 @@
 
 /*
- *  Xe[^XWX^iCPSRjÌ»ÝlÌÇoµ
+ *  ステータスレジスタ（CPSR）の現在値の読出し
  */
 Inline uint32_t
Index: ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_kernel.h
===================================================================
--- ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_kernel.h	(revision 93)
+++ ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_kernel.h	(revision 95)
@@ -6,36 +6,32 @@
  *              Graduate School of Information Science, Nagoya Univ., 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: prc_kernel.h 1304 2008-08-27 07:28:36Z ertl-honda $
@@ -43,9 +39,9 @@
 
 /*
- *		kernel.hÌvZbTË¶iARM-Mpj
+ *		kernel.hのプロセッサ依存部（ARM-M用）
  *
- *  ±ÌCN[ht@CÍCtarget_kernel.hiÜ½ÍC»±©çCN
- *  [h³êét@CjÌÝ©çCN[h³êéD¼Ìt@C©ç
- *  ¼ÚCN[hµÄÍÈçÈ¢D
+ *  このインクルードファイルは，target_kernel.h（または，そこからインク
+ *  ルードされるファイル）のみからインクルードされる．他のファイルから
+ *  直接インクルードしてはならない．
  */
 
@@ -54,10 +50,10 @@
 
 /*
- *  T|[g·é@\Ìè`
+ *  サポートする機能の定義
  */
-#define TOPPERS_TARGET_SUPPORT_DIS_INT            /* dis_intðT|[g·é */
-#define TOPPERS_TARGET_SUPPORT_ENA_INT            /* ena_intðT|[g·é */
+#define TOPPERS_TARGET_SUPPORT_DIS_INT            /* dis_intをサポートする */
+#define TOPPERS_TARGET_SUPPORT_ENA_INT            /* ena_intをサポートする */
 
-#define TMAX_INTPRI		(-1)		/* ÝDæxÌÅåliÅálj*/
+#define TMAX_INTPRI		(-1)		/* 割込み優先度の最大値（最低値）*/
 
 #ifndef TOPPERS_MACRO_ONLY
Index: ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_sil.h
===================================================================
--- ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_sil.h	(revision 93)
+++ ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_sil.h	(revision 95)
@@ -6,36 +6,32 @@
  *              Graduate School of Information Science, Nagoya Univ., 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: prc_sil.h 1304 2008-08-27 07:28:36Z ertl-honda $
@@ -43,5 +39,5 @@
 
 /*
- *   sil.hÌvZbTË¶iARM-Mpj
+ *   sil.hのプロセッサ依存部（ARM-M用）
  */
 
@@ -52,5 +48,5 @@
 
 /*
- *  NMIð­·×ÄÌÝÌÖ~
+ *  NMIを除くすべての割込みの禁止
  */
 Inline bool_t
@@ -79,5 +75,5 @@
 
 /*
- *  SÝbNóÔÌ§ä
+ *  全割込みロック状態の制御
  */
 #define SIL_PRE_LOC      bool_t  TOPPERS_locked
@@ -86,5 +82,5 @@
 
 /*
- *  GfBAÌè`
+ *  エンディアンの定義
  */
 
Index: ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_stddef.h
===================================================================
--- ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_stddef.h	(revision 93)
+++ ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_stddef.h	(revision 95)
@@ -6,36 +6,32 @@
  *              Graduate School of Information Science, Nagoya Univ., 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: prc_stddef.h 1304 2008-08-27 07:28:36Z ertl-honda $
@@ -43,9 +39,9 @@
 
 /*
- *  t_stddef.hÌvZbTË¶iARM-Mpj
+ *  t_stddef.hのプロセッサ依存部（ARM-M用）
  *
- *  ±ÌCN[ht@CÍCtarget_stddef.hiÜ½ÍC»±©çCN
- *  [h³êét@CjÌÝ©çCN[h³êéD¼Ìt@C©ç
- *  ¼ÚCN[hµÄÍÈçÈ¢D
+ *  このインクルードファイルは，target_stddef.h（または，そこからインク
+ *  ルードされるファイル）のみからインクルードされる．他のファイルから
+ *  直接インクルードしてはならない．
  */
 
@@ -54,11 +50,11 @@
 
 /*
- *  ^[Qbgð¯Ê·é½ßÌ}NÌè`
+ *  ターゲットを識別するためのマクロの定義
  */
-#define TOPPERS_ARM_M           /* vZbTªÌ */
+#define TOPPERS_ARM_M           /* プロセッサ略称 */
 
 /*
- *  X^bNÌ^
- *  ARMÅÍCX^bNð8byte«EÉzu·éKvª é
+ *  スタックの型
+ *  ARMでは，スタックを8byte境界に配置する必要がある
  */
 #define TOPPERS_STK_T  long long
Index: ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_support.S
===================================================================
--- ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_support.S	(revision 93)
+++ ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_support.S	(revision 95)
@@ -7,48 +7,43 @@
  *  Copyright (C) 2010 by Meika Sugimoto
  * 
- *  ã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プロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
  * 
  */
 
 /*
- *  vZbTË¶W
-[ AZu¾êiARM-Mpj
+ *  プロセッサ依存モジュール アセンブリ言語部（ARM-M用）
  */
 
 #define TOPPERS_MACRO_ONLY
-#define UINT_C(val)		(val)		/* uint_t^Ìèðìé}N */
-#define ULONG_C(val)	(val)		/* ulong_t^Ìèðìé}N */
-#define CAST(type, val)	(val)		/* ^LXgðs¤}N */
+#define UINT_C(val)		(val)		/* uint_t型の定数を作るマクロ */
+#define ULONG_C(val)	(val)		/* ulong_t型の定数を作るマクロ */
+#define CAST(type, val)	(val)		/* 型キャストを行うマクロ */
 
 #include "kernel_impl.h"
@@ -59,13 +54,13 @@
 
 /*
- *  OQÆ
+ *  外部参照
  */
 	.global		intnest
 
 /*
- *  CPUáOGg
+ *  CPU例外エントリ
  *
- *  ÝGgÆÌàeÍ¯¾ªCOÌíÞªÙÈé½ßC
- *  ª¯Ä¢éD
+ *  割込みエントリと処理の内容は同等だが，ログの種類が異なるため，
+ *  分けている．
  */
 	.align 2
@@ -76,9 +71,9 @@
 exc_entry:
 	/*
-	 *  áO/Ýª­¶·éÆC­¶ÉANeBuÈX^bNÉXN
-	 *  b`WX^ªÛ¶³êéD
-	 *  ±ÌàeÉÁ¦ÄCCPUáOnhÖÌîñÆµÄCbasepri ÌlÆC
-	 *  EXC_RETURNÌîñðÁ¦ÄÛ¶·éDbasepriÌlÍCCPUáO©çÌ
-	 *  ^[ÉÝDæx}XNÌlð³Éß·½ßÉàp¢çêéD
+	 *  例外/割込みが発生すると，発生時にアクティブなスタックにスクラ
+	 *  ッチレジスタ等が保存される．
+	 *  この内容に加えて，CPU例外ハンドラへの情報として，basepri の値と，
+	 *  EXC_RETURNの情報を加えて保存する．basepriの値は，CPU例外からの
+	 *  リターン時に割込み優先度マスクの値を元に戻すためにも用いられる．
 	 *
 	 *   -----------
@@ -107,16 +102,16 @@
 
 	/*
-	 *  Ý­¶ÌÝDæx}XNðX^bNÉÛ¶·é½ßæ¾
-	 */
-	mrs   r2, basepri			/* baepriÌlðæ¾ */
-	push  {r2}					/* Ý­¶ÌÝDæx}XNðÏÞ */
-	push  {lr}					/* EXC_RETURN ðÏÞ			  */ 
-	mov   r0, sp				/* CPUáOnhÖÌøÆÈé */
-	
-	ldr   r1 , =lock_flag		/* CPUbNtOðÛ¶ */
+	 *  割込み発生時の割込み優先度マスクをスタックに保存するため取得
+	 */
+	mrs   r2, basepri			/* baepriの値を取得 */
+	push  {r2}					/* 割込み発生時の割込み優先度マスクを積む */
+	push  {lr}					/* EXC_RETURN を積む			  */ 
+	mov   r0, sp				/* CPU例外ハンドラへの引数となる */
+	
+	ldr   r1 , =lock_flag		/* CPUロックフラグを保存 */
 	ldr   r1 , [r1]
 	push  {r1}
 	
-	/* ÝlXgÌÁZ */
+	/* 割込みネスト数の加算 */
 	ldr r1 , =intnest
 	ldr r3 , [r1]
@@ -125,8 +120,8 @@
 
 	/*
-	 *  ¤Ê
+	 *  共通処理
 	 */
 exc_entry_2:
-	mrs   r3, ipsr               /* nhAhXðæ¾ */
+	mrs   r3, ipsr               /* ハンドラアドレスを取得 */
 	ldr   r1, =_kernel_exc_tbl
 	ldr   r2, [r1, r3, lsl #2]
@@ -134,19 +129,19 @@
 #ifdef LOG_EXC_ENTER
 	push  {r0, r2, r3}
-	mov   r0, r3                 /* áOÔðp[^É  */
-	bl    log_exc_enter          /* log_exc_enterðÄÑo· */
+	mov   r0, r3                 /* 例外番号をパラメータに  */
+	bl    log_exc_enter          /* log_exc_enterを呼び出す */
 	pop   {r0, r2, r3}
 #endif /* LOG_EXC_ENTER */
 
 #ifdef LOG_EXC_LEAVE
-	push  { r3 }                   /* áOÔðX^bNÖ    */
+	push  { r3 }                   /* 例外番号をスタックへ    */
 #endif /* LOG_EXC_LEAVE */
 
 	/*
-	 *  CPUáOnhÌÄÑoµ
+	 *  CPU例外ハンドラの呼び出し
 	 */
 	blx   r2
 
-	/* CPUbNtOð³Éß· */
+	/* CPUロックフラグを元に戻す */
 	pop   {r0}
 	ldr   r1 , =lock_flag
@@ -154,6 +149,6 @@
 	
 #ifdef LOG_EXC_LEAVE
-	pop   { r0 }                   /* áOÔðøÉ        */
-	bl    log_exc_leave          /* log_exc_leaveðÄÑo· */
+	pop   { r0 }                   /* 例外番号を引数に        */
+	bl    log_exc_leave          /* log_exc_leaveを呼び出す */
 #endif /* LOG_EXC_LEAVE */
 	
@@ -162,5 +157,5 @@
 
 /*
- *  ÝGg
+ *  割込みエントリ
  */
 	.align 2
@@ -171,16 +166,16 @@
 int_entry:
 	/*
-	 *	Ý­¶ÌÝDæx}XNðX^bNÉÛ¶·é½ßæ¾
-	 */
-	mrs   r2, basepri			  /* baepriÌlðæ¾ */
-	push  {r2}					 /* Ý­¶ÌÝDæx}XNðÏÞ */
-	push  {lr}					 /* EXC_RETURN ðÏÞ			  */ 
-	mov   r0, sp				 /* ¢è`ÌÝª­¶µ½êÌîñÆ·é */
-	
-	/*
-	 *	¤Ê
+	 *	割込み発生時の割込み優先度マスクをスタックに保存するため取得
+	 */
+	mrs   r2, basepri			  /* baepriの値を取得 */
+	push  {r2}					 /* 割込み発生時の割込み優先度マスクを積む */
+	push  {lr}					 /* EXC_RETURN を積む			  */ 
+	mov   r0, sp				 /* 未定義の割込みが発生した場合の情報とする */
+	
+	/*
+	 *	共通処理
 	 */
 int_entry_2:
-	/* ÝlXgÌÁZ */
+	/* 割込みネスト数の加算 */
 	ldr r1 , =intnest
 	ldr r3 , [r1]
@@ -188,5 +183,5 @@
 	str r3 , [r1]
 	
-	mrs   r3, ipsr				 /* nhAhXðæ¾ */
+	mrs   r3, ipsr				 /* ハンドラアドレスを取得 */
 	ldr   r1, =_kernel_exc_tbl
 	ldr   r2, [r1, r3, lsl #2]
@@ -194,52 +189,52 @@
 #ifdef LOG_INH_ENTER
 	push  {r0,r2,r3}
-	mov   r0, r3                 /* ÝÔðp[^É  */
-	bl    log_inh_enter          /* log_inh_enterðÄÑo· */
+	mov   r0, r3                 /* 割込み番号をパラメータに  */
+	bl    log_inh_enter          /* log_inh_enterを呼び出す */
 	pop   { r0,r2,r3 }
 #endif /* LOG_INH_ENTER */
 
 #ifdef LOG_INH_LEAVE
-	push  { r3 }                   /* ÝÔðX^bNÖ    */
+	push  { r3 }                   /* 割込み番号をスタックへ    */
 #endif /* LOG_INH_LEAVE */
 
 	/*
-	 *  CPUáOnhÌÄÑoµ
+	 *  CPU例外ハンドラの呼び出し
 	 */
 	blx   r2
 	
 #ifdef LOG_INH_LEAVE
-	pop   { r0 }                   /* ÝÔðøÉ        */
-	bl    log_inh_leave          /* log_inh_leaveðÄÑo· */
+	pop   { r0 }                   /* 割込み番号を引数に        */
+	bl    log_inh_leave          /* log_inh_leaveを呼び出す */
 #endif /* LOG_INH_LEAVE */
 
 /*
- *  Ý/áOoû
+ *  割込み/例外出口
  *
- *  ret_exc/ret_intÍCCPUáO/Ýnh©çßÁ½¼ãÉÀs·é
- *  [`Å éD
+ *  ret_exc/ret_intは，CPU例外/割込みハンドラから戻った直後に実行する
+ *  ルーチンである．
  */
 ret_exc:
 ret_int:
 	/*
-	 *  ÝbNóÔÆ·éD±Ì_ÅÍCCPUbNóÔÉÍÈçÈ¢
-	 * ibasepriÆlock_flagÆsaved_iipmÍXVµÈ¢jD
-	 *
-	 *  ÝbNóÔÆ·éÌÍCßèæÌReLXgÌ`FbNÆC
-	 *  ßèæªñ^XNReLXgÅ Á½êÌ^[ðAg~bN
-	 *  És¤½ßÅ éDbsepriðCPUbNÌlÉ·é±ÆÅàAg~b
-	 *  NÈ`FbNÆAÍÂ\Å éªCÝ©ç^[µÄàC
-	 *  basepri ÌÝèàeÍ³ÉßçÈ¢½ßCgp·é±ÆªÅ«È¢D 
-	 *  êûCFAULTMASKÍCÝ©çÌ^[ÉæÁÄC'0'ÉN
-	 *  A³êéD
+	 *  割込みロック状態とする．この時点では，CPUロック状態にはならない
+	 * （basepriとlock_flagとsaved_iipmは更新しない）．
+	 *
+	 *  割込みロック状態とするのは，戻り先のコンテキストのチェックと，
+	 *  戻り先が非タスクコンテキストであった場合のリターンをアトミック
+	 *  に行うためである．bsepriをCPUロックの値にすることでもアトミッ
+	 *  クなチェックと復帰は可能であるが，割込みからリターンしても，
+	 *  basepri の設定内容は元に戻らないため，使用することができない． 
+	 *  一方，FAULTMASKは，割込みからのリターン処理によって，'0'にクリ
+	 *  アされる．
 	 */
 	cpsid f
 	
 	/*
-	 *  ßèæÌReLXgÌ»è
+	 *  戻り先のコンテキストの判定
 	 * 
-	 *  intnestª0©Ç¤©Å»f·é
+	 *  intnestが0かどうかで判断する
 	 *  
 	 */
-	/* ÝlXgÌ¸Z */
+	/* 割込みネスト数の減算 */
 	ldr r1 , =intnest
 	ldr r3 , [r1]
@@ -251,45 +246,45 @@
 	
 	/*
-	 *  êiÚÌÝÌoû
+	 *  一段目の割込みの出口処理
 	 */
 ret_int_1:
 	/*
-	 *  ±±ÉÍÝbNóÔiFAULTMASKªZbgj³ê½óÔÅéD
-	 *  Thread[h©çÌ^[Éæè©®IÉÝbNðóÔÉÈéD
-	 *  ÝDæx}XNÍÝOÉóÔÉß·D
+	 *  ここには割込みロック状態（FAULTMASKがセット）された状態で来る．
+	 *  Threadモードからのリターンにより自動的に割込みロック解除状態になる．
+	 *  割込み優先度マスクは割込み前に状態に戻す．
 	 */ 
 	pop		{ r2 }
 	pop		{ r1 }
-	msr   basepri, r1			  /* ÝDæx}XNðÝOÉóÔÖ */
-	bx	  r2					  /* ^[ */
+	msr   basepri, r1			  /* 割込み優先度マスクを割込み前に状態へ */
+	bx	  r2					  /* リターン */
 	
 ret_int_2:
-	ldr   r0, =reqflg             /* reqflgªfalseÈç»ÌÜÜßé */
+	ldr   r0, =reqflg             /* reqflgがfalseならそのまま戻る */
 	ldr   r1, [r0]
 	cmp   r1 , #0
-	beq    ret_int_1           /* falseÈçret_int_1Ö           */
+	beq    ret_int_1           /* falseならret_int_1へ           */
 ret_int_3:
-	mov   r1, #0                   /* reqflgðfalseÉ */
+	mov   r1, #0                   /* reqflgをfalseに */
 	str   r1, [r0]
 	
 	/*
-	 *  CPUbNóÔÉÚs·éD
-	 *
-	 *  J[lÌÇàÌÝðÖ~·éæ¤ÉbasepriðÝèµC
-	 *  lock_flagðXV·éD
-	 *  ±Ì_ÅCPUbNóÔÆ·éÌÍCdispatcherÖªò·éÉ
-	 *  CPUbNóÔÉÈÁÄ¢éKvª é½ßÅ éD
-     *  È¨C±ÌÌãCThread[hÖÌÚsðsÈ¤½ßCÝ
-     *  bNóÔ(FAULTMASKð"1")ÍÛ·éD
-	 */
-	ldr   r1, =IIPM_LOCK		  /* CPUbNóÔ */ 
+	 *  CPUロック状態に移行する．
+	 *
+	 *  カーネルの管理内の割込みを禁止するようにbasepriを設定し，
+	 *  lock_flagを更新する．
+	 *  この時点でCPUロック状態とするのは，dispatcherへ分岐する時に
+	 *  CPUロック状態になっている必要があるためである．
+     *  なお，この処理の後，Threadモードへの移行処理を行なうため，割込み
+     *  ロック状態(FAULTMASKを"1")は保持する．
+	 */
+	ldr   r1, =IIPM_LOCK		  /* CPUロック状態 */ 
 	msr   basepri, r1
-	mov   r1, #0x01 			  /* lock_flag ð trueÉ */
+	mov   r1, #0x01 			  /* lock_flag を trueに */
 	ldr   r0, =lock_flag 
 	str   r1, [r0]
 	
 	/*
-	 *  lrðæèo·D½¾µxfBXpb`ÌÛÉàg¤½ßC
-	 *  X^bN|C^ÍìµÈ¢D
+	 *  lrを取り出す．ただし遅延ディスパッチの際にも使うため，
+	 *  スタックポインタは操作しない．
 	 */
 	
@@ -297,27 +292,27 @@
 	
 	/*
-	 *  Thread[hÖÚs·éD
-	 *
-	 *  dispatcherâcall_texrnðÄÑo·êÍCThread[hÅ éK
-	 *  vª é½ßCPSPX^bNãÉ_~[ÌáOt[ðu¢ÄC
-	 *  [IÉÝnh©ç^[·éD
-	 *  ^[Æ¯ÉFAULTMASKª©®IÉNA³êCJ[lÇOÌ
-	 *  ÝªÂ³êéD
+	 *  Threadモードへ移行する．
+	 *
+	 *  dispatcherやcall_texrnを呼び出す場合は，Threadモードである必
+	 *  要があるため，PSPスタック上にダミーの例外フレームを置いて，
+	 *  擬似的に割込みハンドラからリターンする．
+	 *  リターンと同時にFAULTMASKが自動的にクリアされ，カーネル管理外の
+	 *  割込みが許可される．
 	 */
 	ldr   r0, =ret_int_4		  /* PC   */
-	ldr   r1, =EPSR_T			  /* xPSR(Trbgª'1'Å éKvª é) */
-	stmfd sp!, {r0-r1}			  /* _~[t[ðX^bNãÉÏÞ	*/
-	sub   sp, #(EXC_FRAME_SIZE - (4*2)) /* r0-r3,r12,lrÌàeÍÝè·éKvªÈ¢ */
-	bx	  r2					  /* Thread[hÖÚs */
+	ldr   r1, =EPSR_T			  /* xPSR(Tビットが'1'である必要がある) */
+	stmfd sp!, {r0-r1}			  /* ダミーフレームをスタック上に積む	*/
+	sub   sp, #(EXC_FRAME_SIZE - (4*2)) /* r0-r3,r12,lrの内容は設定する必要がない */
+	bx	  r2					  /* Threadモードへ移行 */
     
 ret_int_4:
-	bl    search_schedtsk		/* ÝÅN®³ê½^XNðÀs */
+	bl    search_schedtsk		/* 割込み中で起動されたタスクを実行 */
 	bl    run_task
 ret_int_r:
-	svc   0 				   /* SVCÌÄÑoµ */
-	
-/*
- *  xfBXpb`©çÌAÉêIÉÝ
- *  ReLXgÉÚs·é½ßÌSVCR[nh
+	svc   0 				   /* SVCの呼び出し */
+	
+/*
+ *  遅延ディスパッチからの復帰時に一時的に割込み
+ *  コンテキストに移行するためのSVCコールハンドラ
  */
 
@@ -328,18 +323,18 @@
 kernel_svc_handler:
 	/*
-	 *  Ý©çÌ^[ÉæèCCPUbNðóÔÉÚs·éæ
-	 *  ¤õ·éD
-	 */
-	cpsid f 								/* ÝbNóÔÖ */
-	ldr		r2 , [ sp , #(EXC_FRAME_SIZE) ]	/* lrðX^bN©çæ¾	*/
-	add		sp, #EXC_FRAME_SIZE + 8			/* X^bNðÌÄé	*/
+	 *  割込み処理からのリターンにより，CPUロック解除状態に移行するよ
+	 *  う準備する．
+	 */
+	cpsid f 								/* 割込みロック状態へ */
+	ldr		r2 , [ sp , #(EXC_FRAME_SIZE) ]	/* lrをスタックから取得	*/
+	add		sp, #EXC_FRAME_SIZE + 8			/* スタックを捨てる	*/
 	mov		r0, #0
-	ldr		r1, =lock_flag					/* CPUbNðóÔÖ */
+	ldr		r1, =lock_flag					/* CPUロック解除状態へ */
 	str		r0, [r1]
 	msr		basepri , r0 
-	bx		r2								/* ^[	  */
-
-/*
- *  fBXpb`Ì®ìJn
+	bx		r2								/* リターン	  */
+
+/*
+ *  ディスパッチャの動作開始
  */
 	.align	2
@@ -349,26 +344,26 @@
 start_dispatch:
 	/*
-	 *  ±Ì[`ÍCJ[lN®ÉC·×ÄÌÝðÖ~µ½óÔ
-	 * iÝbNóÔÆ¯jÅÄÑo³êéDÜ½CÝ[hiñ
-	 *  ^XNReLXgÆ¯jÅÄÑo³êé±ÆðzèµÄ¢éD
-	 *
-	 *  prc_initializeÅClock_flagðtrueÉCsaved_iipmðIIPM_ENAALLÉ
-	 *  ú»µÄ¢é½ßCJ[lÇOÌÝðÂ·é±ÆÅC
-	 *  CPUbNóÔEifãÌjÝDæx}XNSðóÔÉÈéD
-	 *  Ü½Ctask_initializeÅdisdspðfalseÉú»µÄ¢é½ßCfB
-	 *  Xpb`ÂóÔÉÈÁÄ¢éD
-	 */
-	ldr   r0,=istkpt              /* MSPðú»   */
-	ldr   r1,[r0]                 /* start_dispatchÄÑoµÉÄÑoµpÉ */
-	msr   msp, r1                 /* gpµÄ¢é½ßú»·é             */
-	ldr   r1, =IIPM_LOCK          /* J[lÇàÌÝðÖ~ */
+	 *  このルーチンは，カーネル起動時に，すべての割込みを禁止した状態
+	 * （割込みロック状態と同等）で呼び出される．また，割込みモード（非
+	 *  タスクコンテキストと同等）で呼び出されることを想定している．
+	 *
+	 *  prc_initializeで，lock_flagをtrueに，saved_iipmをIIPM_ENAALLに
+	 *  初期化しているため，カーネル管理外の割込みを許可することで，
+	 *  CPUロック状態・（モデル上の）割込み優先度マスク全解除状態になる．
+	 *  また，task_initializeでdisdspをfalseに初期化しているため，ディ
+	 *  スパッチ許可状態になっている．
+	 */
+	ldr   r0,=istkpt              /* MSPを初期化   */
+	ldr   r1,[r0]                 /* start_dispatch呼び出し時に呼び出し用に */
+	msr   msp, r1                 /* 使用しているため初期化する             */
+	ldr   r1, =IIPM_LOCK          /* カーネル管理内の割込みを禁止 */
 	msr   basepri, r1 
-	cpsie f                       /* J[lÇOÌÝðÂ */
+	cpsie f                       /* カーネル管理外の割込みを許可 */
 	b	  dispatcher
 
 /*
- *  J[lÌI¹ÌÄoµ
+ *  カーネルの終了処理の呼出し
  *
- *  X^bNðñ^XNReLXgpÉØèÖ¦D
+ *  スタックを非タスクコンテキスト用に切り替え．
  *  
  */
@@ -379,9 +374,9 @@
 	.type call_exit_kernel, function
 call_exit_kernel:
-	b     exit_kernel       /* J[lÌI¹ðÄÔ */
-
-
-/*
- *  ÷­ÔÒ¿
+	b     exit_kernel       /* カーネルの終了処理を呼ぶ */
+
+
+/*
+ *  微少時間待ち
  */
 	.text
Index: ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_test.h
===================================================================
--- ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_test.h	(revision 93)
+++ ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_test.h	(revision 95)
@@ -6,36 +6,32 @@
  *              Graduate School of Information Science, Nagoya Univ., 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: prc_test.h 1304 2008-08-27 07:28:36Z ertl-honda $
@@ -43,5 +39,5 @@
 
 /*
- *		eXgvOÌ`bvË¶è`iARM-Mpj
+ *		テストプログラムのチップ依存定義（ARM-M用）
  */
 
@@ -50,5 +46,5 @@
 
 /*
- *  `bvÅ¤ÊÈè`
+ *  チップで共通な定義
  */
 
Index: ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_timer.c
===================================================================
--- ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_timer.c	(revision 93)
+++ ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_timer.c	(revision 95)
@@ -7,36 +7,32 @@
  *  Copyright (C) 2010 by Meika Sugimoto
  * 
- *  ã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: prc_timer.c 1304 2008-08-27 07:28:36Z ertl-honda $
@@ -44,5 +40,5 @@
 
 /*
- *  ^C}hCoiSYSTICpj
+ *  タイマドライバ（SYSTIC用）
  */
 #include <sil.h>
@@ -52,5 +48,5 @@
 
 /*
- *  ^C}ÌN®
+ *  タイマの起動処理
  */
 void
@@ -61,5 +57,5 @@
 
 #ifdef SYSTIC_USE_CALIBRATION
-	/* CALIBRATIONWX^Ìlðgp */
+	/* CALIBRATIONレジスタの値を使用 */
 	cyc = (sil_rew_mem((void *)SYSTIC_CALIBRATION) & SYSTIC_TENMS) / 10;
 #else 
@@ -67,5 +63,5 @@
 #endif /* SYSTIC_USE_CALIBRATION */
 
-	/* â~ */
+	/* 停止 */
 	tmp = sil_rew_mem((void *)SYSTIC_CONTROL_STATUS);
 	tmp &= ~SYSTIC_ENABLE;
@@ -78,8 +74,8 @@
 
 #ifdef SYSTIC_USE_STCLK
-	/* ONbNÌgp */
+	/* 外部クロックの使用 */
 	tmp |= SYSTIC_ENABLE;
 #else
-	/* vZbTNbNÌgp */
+	/* プロセッサクロックの使用 */
 	tmp |= SYSTIC_ENABLE|SYSTIC_CLKSOURCE;
 #endif /* SYSTIC_USE_STCLK */
@@ -89,24 +85,24 @@
 
 /*
- *  ^C}Ìâ~
+ *  タイマの停止処理
  */
 void
 target_timer_terminate(intptr_t exinf)
 {
-	/* ^C}ðâ~ */
+	/* タイマを停止 */
 	sil_wrw_mem((void*)SYSTIC_CONTROL_STATUS, 0x00);
 }
 
 /*
- *  ^C}Ýnh
+ *  タイマ割込みハンドラ
  */
 void
 target_timer_handler(void)
 {
-	/* probe_int Ì½ßCCOUNTFLAGðNA */
+	/* probe_int のため，COUNTFLAGをクリア */
 	(void)sil_rew_mem((void *)SYSTIC_CONTROL_STATUS);
 	
 	i_begin_int(INTNO_TIMER);
-	signal_time();                    /* ^CeBbNÌ */
+	signal_time();                    /* タイムティックの供給 */
 	i_end_int(INTNO_TIMER);
 }
Index: ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_timer.cfg
===================================================================
--- ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_timer.cfg	(revision 93)
+++ ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_timer.cfg	(revision 95)
@@ -4,6 +4,5 @@
 
 /*
- *		^C}hCoÌRtBM
-[Vt@C
+ *		タイマドライバのコンフィギュレーションファイル
  */
 ATT_INI({ TA_NULL, 0, target_timer_initialize });
Index: ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_timer.h
===================================================================
--- ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_timer.h	(revision 93)
+++ ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_timer.h	(revision 95)
@@ -6,36 +6,32 @@
  *              Graduate School of Information Science, Nagoya Univ., 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: prc_timer.h 1304 2008-08-27 07:28:36Z ertl-honda $
@@ -43,5 +39,5 @@
 
 /*
- *  ^C}hCoiSYSTICpj
+ *  タイマドライバ（SYSTIC用）
  */
 
@@ -52,18 +48,18 @@
 
 /*
- *  ^C}Ýnho^Ì½ßÌè
+ *  タイマ割込みハンドラ登録のための定数
  */
-#define INHNO_TIMER     IRQNO_SYSTICK /* ÝnhÔ */
-#define INTNO_TIMER     IRQNO_SYSTICK /* ÝÔ */
+#define INHNO_TIMER     IRQNO_SYSTICK /* 割込みハンドラ番号 */
+#define INTNO_TIMER     IRQNO_SYSTICK /* 割込み番号 */
 
 #ifndef TOPPERS_MACRO_ONLY
 
 /*
- *  ^C}lÌà\»Ì^
+ *  タイマ値の内部表現の型
  */
 typedef uint32_t    CLOCK;
 
 /*
- *  ^C}lÌà\»Æ~bEÊbPÊÆÌÏ·
+ *  タイマ値の内部表現とミリ秒・μ秒単位との変換
  *
  */
@@ -72,24 +68,24 @@
 
 /*
- *  ÝèÅ«éÅåÌ^C}üúiPÊÍà\»j
+ *  設定できる最大のタイマ周期（単位は内部表現）
  */
 #define MAX_CLOCK    ((CLOCK) 0x00ffffffU)
 
 /*
- *  ^C}ÌN®
+ *  タイマの起動処理
  *
- *  ^C}ðú»µCüúIÈ^C}Ývð­¶³¹éD
+ *  タイマを初期化し，周期的なタイマ割込み要求を発生させる．
  */
 extern void target_timer_initialize(intptr_t exinf);
 
 /*
- *  ^C}Ìâ~
+ *  タイマの停止処理
  *
- *  ^C}Ì®ìðâ~³¹éD
+ *  タイマの動作を停止させる．
  */
 extern void target_timer_terminate(intptr_t exinf);
 
 /*
- *  ^C}Ì»ÝlÌÇoµ
+ *  タイマの現在値の読出し
  */
 Inline CLOCK
@@ -100,5 +96,5 @@
 
 /*
- *  ^C}ÝvÌ`FbN
+ *  タイマ割込み要求のチェック
  */
 Inline bool_t
@@ -109,5 +105,5 @@
 
 /*
- *  ^C}Ýnh
+ *  タイマ割込みハンドラ
  */
 extern void target_timer_handler(void);
Index: ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_user.txt
===================================================================
--- ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_user.txt	(revision 93)
+++ ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/prc_user.txt	(revision 95)
@@ -1,85 +1,84 @@
 =====================================================================
-                         ARM-MvZbTË¶
+                         ARM-Mプロセッサ依存部
                                   Last Modified: '13/04/07
 =====================================================================
 
 
-(1) ÎµÄ¢é^[QbgVXeÌíÞE\¬
+(1) 対応しているターゲットシステムの種類・構成
 
-ARM-MË¶ÍCARMVx-MA[LeN`ð^[QbgÆµÄ¢éDARMVx-MÍC
-ARMÆÍÙÈèCARM½ßðÀsÅ«È¢½ßCARMË¶Æª¯Ä¢éD
+ARM-M依存部は，ARMVx-Mアーキテクチャをターゲットとしている．ARMVx-Mは，
+ARMとは異なり，ARM命令を実行できないため，ARM依存部と分けている．
 
 
-(2) gp·éJ­Â«Æ®ìØµ½ðio[WCIvVj
+(2) 使用する開発環境と動作検証した条件（バージョン，オプション等）
 
-J[lÍGCCðp¢ÄRpC·éD®ìmFµ½o[WÍe^[Q
-bgË¶ÌhL
-gÉLÚ·éD
+カーネルはGCCを用いてコンパイルする．動作確認したバージョンは各ターゲ
+ット依存部のドキュメントに記載する．
 
 
-(3) ^[Qbgè`ÌKè
+(3) ターゲット定義事項の規定
 
-(3-1) f[^^ÉÖ·éKè
+(3-1) データ型に関する規定
 
-f[^^Í arch/gcc/tool_stddef.h Åè`³êÄ¢éàeÅCfloat^Æ
-double^ÍC»ê¼êIEEE754ÌP¸x®¬_Æ{¸x®¬_
-Å éD
+データ型は arch/gcc/tool_stddef.h で定義されている内容で，float型と
+double型は，それぞれIEEE754準拠の単精度浮動小数点数と倍精度浮動小数点
+数である．
 
-(3-2) ÝÉÖ·éKè
+(3-2) 割込み処理に関する規定
 
-ÝnhÔÆÝÔÌÄC¼ÒÌÎ
+○割込みハンドラ番号と割込み番号の割当て，両者の対応
 
-ÝnhÔÆÝÔÍCáO­¶ÉIPSRÉZbg³êéáOÔ
-ðp¢éDSYSTICKÍ15ÔÅCOÝÍ16Ô©çÌÔªèt¯çê
-Ä¢éD
+割込みハンドラ番号と割込み番号は，例外発生時にIPSRにセットされる例外番
+号を用いる．SYSTICKは15番で，外部割込みは16番からの番号が割り付けられ
+ている．
 
-ÝDæxÌiKiTMIN_INTPRIÌljC»ÌÝèû@
+○割込み優先度の段階数（TMIN_INTPRIの値），その設定方法
 
-ÝDæxÌiKÍCSoCÉn[hEFAIÉT|[g·éÝDæ
-xrbgªÙÈéÌÅC^[QbgË¶ÉÙÈéD^[QbgË¶Å
-ÍCÝDæxÌrbgiTBITW_IPRIjÆ»ÌÝDæxÌTuDæ
-xÌrbgiTBITW_SUBPRIjðè`·éDerbgÌlÆÝèÂ\ÈDæ
-xÌÍÍÍÌÊèÅ éD
+割込み優先度の段階数は，SoC毎にハードウェア的にサポートする割込み優先
+度ビット幅が異なるので，ターゲット依存部毎に異なる．ターゲット依存部で
+は，割込み優先度のビット幅（TBITW_IPRI）とその割込み優先度中のサブ優先
+度のビット幅（TBITW_SUBPRI）を定義する．各ビット幅の値と設定可能な優先
+度の範囲は次の通りである．
 
-   -(2^(TBIW_IPRI)) + (2^TBITW_SUBIPRI)) ` -1
+   -(2^(TBIW_IPRI)) + (2^TBITW_SUBIPRI)) 〜 -1
 
-á¦ÎDæxÌrbg(TBITW_IPRI)ª8bitCTuDæxÌrbg
-(TBITW_SUBIPRI) ª1bitÌêÍC-254 ` -1 ÌÍÍÅ éD
+例えば優先度のビット幅(TBITW_IPRI)が8bit，サブ優先度のビット幅
+(TBITW_SUBIPRI) が1bitの場合は，-254 〜 -1 の範囲である．
 
-±ÌÍÍÅCJ[lÇàÌÝÌÅDæxiTMIN_INTPRIjð^[Q
-bgË¶ÅÝè·éD
+この範囲で，カーネル管理内の割込みの最高優先度（TMIN_INTPRI）をターゲ
+ット依存部で設定する．
 
-eÝÌÝDæxÍCCFG_INTÅTMIN_INTPRIÈãÌlðwè·éD
+各割込みの割込み優先度は，CFG_INTでTMIN_INTPRI以上の値を指定する．
 
-dis_intÆena_intÌT|[gÌL³C»Ì§À
+○dis_intとena_intのサポートの有無，その制限事項
 
-dis_intÆena_intðT|[g·éD§ÀÍÁÉÈ¢D
+dis_intとena_intをサポートする．制限事項は特にない．
 
-CFG_INTÌ§ÀÆg£i^[Qbgè`ÅgpÅ«éÝ®«j
+○CFG_INTの制限事項と拡張（ターゲット定義で使用できる割込み属性）
 
-CFG_INTÌ§ÀÍÈ­C^[Qbgè`ÅgpÂ\ÈÝ®«ÍÁÉÈ
-¢D
+CFG_INTの制限事項はなく，ターゲット定義で使用可能な割込み属性は特にな
+い．
 
-J[lÇOÌÝ
+○カーネル管理外の割込み
 
-J[lÇOÌÝðT|[g·éDwèû@ÍCÝDæxÌiK
-Åwèµ½CT|[g·éÝDæxÌÅliÅ¬ljæèC
-TMIN_INTPRIðå«­Ýè·éÆCTMIN_INTPRIæèlª¬¢iDæxjÈ
-ÝDæxðÝèµ½ÝðÝDæxÆµÄµ¤D
+カーネル管理外の割込みをサポートする．指定方法は，割込み優先度の段階数
+で指定した，サポートする割込み優先度の最高値（最小値）より，
+TMIN_INTPRIを大きく設定すると，TMIN_INTPRIより値が小い（高優先度）な割
+込み優先度を設定した割込みを割込み優先度として扱う．
 
-J[lÇOÌÝÍOSÀsàÖ~ÉÈé±ÆÍÈ­iµ§ÉÍÝ
-ÌoûÅ²­Z¢æÔÖ~³êéjCÝ­¶ÍCJ[lÌR[hðo
-R¹¸ÉÄÑo³êéD
+カーネル管理外の割込みはOS実行中も禁止になることはなく（厳密には割込み
+の出口でごく短い区間禁止される），割込み発生時は，カーネルのコードを経
+由せずに呼び出される．
 
-J[lÇOÌÝÉÎ·éCDEF_INH,CFG_INTÍT|[g·éD
+カーネル管理外の割込みに対する，DEF_INH,CFG_INTはサポートする．
 
-(3-3) CPUáOÉÖ·éKè
+(3-3) CPU例外処理に関する規定
 
-CPUáOnhÔ
+○CPU例外ハンドラ番号
 
-CPUáOnhÔÆµÄÍCáO­¶ÉIPSRÉZbg³êéCáOÔ
-ðp¢éDeáOÌáOÔÍÈºÌÊèÅ éD
+CPU例外ハンドラ番号としては，例外発生時にIPSRにセットされる，例外番号
+を用いる．各例外の例外番号は以下の通りである．
 
-        áO              áOÔ
+        例外              例外番号
   Reset                      1
   Non-makable Interrupt      2
@@ -92,65 +91,64 @@
   PendSV                    14
 
-È¨CResetÆCSVCallÉÂ¢ÄÍCJ[lªgp·é½ßC[U[Íg
-p·é±ÆªÅ«È¢D
+なお，Resetと，SVCallについては，カーネルが使用するため，ユーザーは使
+用することができない．
 
-(3-4) CPUbNEÝbN
+(3-4) CPUロック・割込みロック
 
-CPUbNÍCbasepriðTMIN_INTPRIÌDæxÌÝðÖ~·élÉÝè·
-éDÝbNÍCFAULTMASKð'1'ÉÝè·é±ÆÅÀ»µÄ¢éD
+CPUロックは，basepriをTMIN_INTPRIの優先度の割込みを禁止する値に設定す
+る．割込みロックは，FAULTMASKを'1'に設定することで実現している．
 
-(3-5) «\]¿pVXeÌQÆÉÖ·éKè
+(3-5) 性能評価用システム時刻の参照に関する規定
 
-get_utmðT|[g·éD¸xÉÖµÄÍC^[QbgÉÙÈéD
+get_utmをサポートする．精度に関しては，ターゲット毎に異なる．
 
-(3-6) X^[gAbv[`ÅÌú»àe
+(3-6) スタートアップルーチンでの初期化内容
 
-X^[gAbv[`ÍCThread[hÅÄÑo³êé±ÆðOñÆµÄ¢
-éDÀsãCÝbNóÔiFAULTMASKðZbgjÆ·éDÝbN
-óÔÍCJ[lÌú»I¹ÉÂ·éDX^[gAbv[`ÅC
-MSPðANeBuÈX^bNÆµCMSPÌàeðú»·é½ßÉÍCINIT_MSP
-ð^[QbgË¶Åè`·éD
+スタートアップルーチンは，Threadモードで呼び出されることを前提としてい
+る．実行後，割込みロック状態（FAULTMASKをセット）とする．割込みロック
+状態は，カーネルの初期化終了時に許可する．スタートアップルーチンで，
+MSPをアクティブなスタックとし，MSPの内容を初期化するためには，INIT_MSP
+をターゲット依存部で定義する．
 
-(3-7) xN^e[uItZbgÌú»
+(3-7) ベクタテーブルオフセットの初期化
 
-vZbTË¶Ìú»ÅCVector Table Offset Register ð^[Qb
-gË¶Ìú»[`ÅÝè·éDÈ¨CxN^[e[uÍC.vector
-ÌZNV®«ªtÁ³êÄ¢é½ßCJXNvgÅ±ÌZNV
-ðwèµÄzu·éD
+プロセッサ依存の初期化処理で，Vector Table Offset Register をターゲッ
+ト依存部の初期化ルーチンで設定する．なお，ベクターテーブルは，.vector
+のセクション属性が付加されているため，リンカスクリプトでこのセクション
+を指定して配置する．
 
 
-(4) ^C}hCoÖAÌîñ
+(4) タイマドライバ関連の情報
 
-J[lÌ^CeBbNÆµÄCSYSTICðgp·éêÍCprc_config.c 
-ðRpCÎÛÆµCRtBM
-[Vt@CÉ prc_config.cfg 
-ðwè·é±ÆD
+カーネルのタイムティックとして，SYSTICを使用する場合は，prc_config.c 
+をコンパイル対象とし，コンフィギュレーションファイルに prc_config.cfg 
+を指定すること．
 
-üúÌî{Í1msecÆ·éDüúðCALIBRATIONWX^ÌÝèàeð³ÉvZ
-·éêÍCSYSTIC_USE_CALIBRATION ðè`·éDCALIBRATIONWX^ðp
-¢È¢êÍC1msecüúªÌJEglð TIMER_CLOCK ÉÝè·éDNb
-N\[XÆµÄCONbNðp¢éêÍCSYSTIC_USE_STCLK ðp¢éD
+周期の基本は1msecとする．周期をCALIBRATIONレジスタの設定内容を元に計算
+する場合は，SYSTIC_USE_CALIBRATION を定義する．CALIBRATIONレジスタを用
+いない場合は，1msec周期分のカウント値を TIMER_CLOCK に設定する．クロッ
+クソースとして，外部クロックを用いる場合は，SYSTIC_USE_STCLK を用いる．
 
 
-(5) ^[QbgË¶ÅÌÝèÚ
+(5) ターゲット依存部での設定項目
 
-^[QbgË¶ÅÍÈºÌ}Nðè`·éKvª éD
+ターゲット依存部では以下のマクロを定義する必要がある．
 
-   ¥TMAX_INTNO     : ÝÔÌÅål(ÊíÌÝÔ + 15)
-   ¥TBITW_IPRI     : ÝDæxÌrbg
-   ¥TBITW_SUBIPRI  : ÝDæxÌrbgÌTuDæxÌrbg
-   ¥TMIN_INTPRI    : ÝDæxÌÅ¬liÅlj
-   ¥TIC_NUME       : ^CeBbNÌüúÌªq
-   ¥TIC_DENO       : ^CeBbNÌüúÌªê
-   ¥TIMER_CLOCK    : ^C}lÌà\»Æ~bPÊÆÌÏ·
-   ¥INTPRI_TIMER   : ^C}ÝÝDæx
-   ¥INTATR_TIMER   : ^C}ÝÌÝ®«
-   ¥INIT_MSP       : X^[gAbv[`ÅMSPðú»·éêÍè`
-   ¥DEFAULT_ISTKSZ : X^bNTCYi8bytePÊÅwèj
-   ¥SIL_DLY_TIM1   : ÷­ÔÒ¿Ì½ßÌè`
-   ¥SIL_DLY_TIM2   : ÷­ÔÒ¿Ì½ßÌè`
+   ･TMAX_INTNO     : 割込み番号の最大値(通常の割込み番号 + 15)
+   ･TBITW_IPRI     : 割込み優先度のビット幅
+   ･TBITW_SUBIPRI  : 割込み優先度のビット幅中のサブ優先度のビット幅
+   ･TMIN_INTPRI    : 割込み優先度の最小値（最高値）
+   ･TIC_NUME       : タイムティックの周期の分子
+   ･TIC_DENO       : タイムティックの周期の分母
+   ･TIMER_CLOCK    : タイマ値の内部表現とミリ秒単位との変換
+   ･INTPRI_TIMER   : タイマ割込み割込み優先度
+   ･INTATR_TIMER   : タイマ割込みの割込み属性
+   ･INIT_MSP       : スタートアップルーチンでMSPを初期化する場合は定義
+   ･DEFAULT_ISTKSZ : スタックサイズ（8byte単位で指定）
+   ･SIL_DLY_TIM1   : 微少時間待ちのための定義
+   ･SIL_DLY_TIM2   : 微少時間待ちのための定義
 
 
-(6) fBNg\¬Et@C\¬
+(6) ディレクトリ構成・ファイル構成
   ./arch/arm_m_gcc/
     ./Makefile.prc
@@ -177,25 +175,25 @@
     ./start.S
 
-(12) o[Wð
+(12) バージョン履歴
 
 2008/08/22
- Eprc_user.txt/prc_design.txt
-   E2008/8/21ÌZp¢ïÅÌc_Êð½fD
- Eprc_support.S/prc_config.c/prc_config.h/arm_m.h
-   EReLXg»èðexc_ncnt©çANeBuÈX^bNÉÏX
- Eprc_config.c
-   Eset_exc_int_priority() ÅT|[gÂ\ÈIRQÌãÀð239Ég£D
- Estart.S 
-   EN®ÍThread[hðOñÆµÄ¢é±Æð¾LD
-   Eu[g[_[©çN®³êéêðzèµCMSPðLøÉ·éæ¤É
-     ÏXD
- Eprc_timer.c
-   ERgðC³
-   EfobOpR[hðí
+ ・prc_user.txt/prc_design.txt
+   ・2008/8/21の技術検討会での議論結果を反映．
+ ・prc_support.S/prc_config.c/prc_config.h/arm_m.h
+   ・コンテキスト判定をexc_ncntからアクティブなスタックに変更
+ ・prc_config.c
+   ・set_exc_int_priority() でサポート可能なIRQの上限を239に拡張．
+ ・start.S 
+   ・起動時はThreadモードを前提としていることを明記．
+   ・ブートローダー等から起動される場合を想定し，MSPを有効にするように
+     変更．
+ ・prc_timer.c
+   ・コメントを修正
+   ・デバッグ用コードを削除
 
 2008/07/11
- EÅÌ[X
+ ・最初のリリース
 
 2013/04/07
- EáO­¶ÉÝ/CPUáO­¶ñÌCNgªsíêÄ¢È©Á½
-   âèÌC³
+ ・例外処理発生時に割込み/CPU例外発生回数のインクリメントが行われていなかった
+   問題の修正
Index: ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/start.S
===================================================================
--- ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/start.S	(revision 93)
+++ ssp_qb_r5f100le_cs/trunk/arch/arm_m_gcc/start.S	(revision 95)
@@ -8,36 +8,32 @@
  *             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: start.S 1304 2008-08-27 07:28:36Z ertl-honda $
@@ -45,11 +41,10 @@
                 
 /*
- *   J[lpÌX^[gAbvW
-[(ARM-Mp)
+ *   カーネル用のスタートアップモジュール(ARM-M用)
  */
 #define TOPPERS_MACRO_ONLY
-#define UINT_C(val)		(val)		/* uint_t^Ìèðìé}N */
-#define ULONG_C(val)	(val)		/* ulong_t^Ìèðìé}N */
-#define CAST(type, val)	(val)		/* ^LXgðs¤}N */
+#define UINT_C(val)		(val)		/* uint_t型の定数を作るマクロ */
+#define ULONG_C(val)	(val)		/* ulong_t型の定数を作るマクロ */
+#define CAST(type, val)	(val)		/* 型キャストを行うマクロ */
 
 #include "kernel_impl.h"
@@ -57,7 +52,7 @@
 
 /*
- *  X^[gAbv[`
+ *  スタートアップルーチン
  *
- *  Thread[hÅÄÑo³êé±ÆðOñÆµÄéD
+ *  Threadモードで呼び出されることを前提としてる．
  */
 	.text
@@ -68,13 +63,13 @@
 	.type _start, function
 _start:
-	cpsid f                 /* ÝbNóÔÖ */
+	cpsid f                 /* 割込みロック状態へ */
 
 #ifdef INIT_MSP
 	/*
-	 * MSPÌÝè
+	 * MSPの設定
 	 */
-	mov   r0, #CONTROL_MSP  /* MSPðLøÉ  */
+	mov   r0, #CONTROL_MSP  /* MSPを有効に  */
 	msr   control, r0
-	isb                     /* control ÌìãÉKv */
+	isb                     /* control の操作後に必要 */
 	ldr  r0,=_kernel_istkpt
 	ldr  r1,[r0]
@@ -83,8 +78,8 @@
 
 	/*
-	 * hardware_init_hookÌÄÑoµ i0ÅÈ¢êj
+	 * hardware_init_hookの呼び出し （0でない場合）
 	 *
-	 * ^[Qbgn[hEFAÉË¶µÄKvÈú»ª éê
-	 * ÍChardware_init_hook Æ¢¤ÖðpÓ·é
+	 * ターゲットハードウェアに依存して必要な初期化処理がある場合
+	 * は，hardware_init_hook という関数を用意する
 	 */
 	ldr  r0, =hardware_init_hook
@@ -95,5 +90,5 @@
 #ifndef OMIT_BSS_INIT
 	/*
-	 *  BSSZNVú»
+	 *  BSSセクション初期化
 	 */
 	mov  r0, #0
@@ -114,7 +109,7 @@
 #ifndef OMIT_DATA_INIT
 	/*
-	 *  DATAZNVú»
-	 *  __idata_start ©ç __idata_end ÜÅðC__data_start È~É
-	 *  Rs[·é
+	 *  DATAセクション初期化
+	 *  __idata_start から __idata_end までを，__data_start 以降に
+	 *  コピーする
 	 */
 	ldr  r1, =__idata_start
@@ -133,9 +128,9 @@
 
 	/*
-	 *  software_init_hook ðÄoµi0 ÅÈ¢êj
+	 *  software_init_hook を呼出し（0 でない場合）
 	 *
-	 *  \tgEFAÂ«iÁÉCujÉË¶µÄKvÈú»
-	 *  ª éêÍCsoftware_init_hook Æ¢¤ÖðpÓ·êÎ
-	 *  æ¢D
+	 *  ソフトウェア環境（特にライブラリ）に依存して必要な初期化処
+	 *  理がある場合は，software_init_hook という関数を用意すれば
+	 *  よい．
 	 */
 start_5:
