Index: ssp_armv6_m_gcc/trunk/armv6_m_gcc/MANIFEST
===================================================================
--- ssp_armv6_m_gcc/trunk/armv6_m_gcc/MANIFEST	(revision 411)
+++ ssp_armv6_m_gcc/trunk/armv6_m_gcc/MANIFEST	(revision 421)
@@ -5,12 +5,11 @@
 Makefile.prc
 arm_m.h
-prc.tf
 prc_cfg1_out.h
-prc_check.tf
+prc_check.trb
 prc_config.c
 prc_config.h
-prc_def.csv
 prc_insn.h
 prc_kernel.h
+prc_kernel.trb
 prc_rename.def
 prc_rename.h
@@ -18,7 +17,8 @@
 prc_stddef.h
 prc_support.S
+prc_sym.def
 prc_test.h
+prc_timer.c
 prc_timer.cfg
-prc_timer.c
 prc_timer.h
 prc_unrename.h
Index: ssp_armv6_m_gcc/trunk/armv6_m_gcc/Makefile.prc
===================================================================
--- ssp_armv6_m_gcc/trunk/armv6_m_gcc/Makefile.prc	(revision 411)
+++ ssp_armv6_m_gcc/trunk/armv6_m_gcc/Makefile.prc	(revision 421)
@@ -1,5 +1,5 @@
 #
 #  @(#) $Id: Makefile.prc 1304 2008-08-27 07:28:36Z ertl-honda $
-# 
+#
 
 #
@@ -7,10 +7,13 @@
 #
 
+PRCDIR = $(SRCDIR)/arch/$(PRC)_$(TOOL)
+
 #
 #  コンパイルオプション
 #
-INCLUDES := $(INCLUDES) -I$(SRCDIR)/arch/$(PRC)_$(TOOL)/
-LDFLAGS := -nostdlib $(LDFLAGS) 
+COPTS := $(COPTS)
 CDEFS := $(CDEFS) -DTOPPERS_LABEL_ASM
+INCLUDES := $(INCLUDES) -I$(PRCDIR)
+LDFLAGS := -nostdlib $(LDFLAGS)
 LIBS := $(LIBS)  -lgcc
 
@@ -18,16 +21,27 @@
 #  カーネルに関する定義
 #
-KERNEL_DIR := $(KERNEL_DIR) $(SRCDIR)/arch/$(PRC)_$(TOOL)
+KERNEL_DIRS := $(KERNEL_DIRS) $(PRCDIR)
 KERNEL_ASMOBJS := $(KERNEL_ASMOBJS) prc_support.o
 KERNEL_COBJS := $(KERNEL_COBJS) prc_config.o prc_timer.o
+KERNEL_CFLAGS := $(KERNEL_CFLAGS)
 
 #
 #  コンフィギュレータ関係の変数の定義
 #
-CFG_TABS := $(CFG_TABS) --cfg1-def-table $(SRCDIR)/arch/$(PRC)_$(TOOL)/prc_def.csv
+CFG_TABS := $(CFG_TABS) --symval-table $(PRCDIR)/prc_sym.def
+CFG1_OUT_LDFLAGS := $(CFG1_OUT_LDFLAGS)
+CFG_OBJS := $(CFG_OBJS)
+CFG2_OUT := $(CFG2_OUT)
 
 #
 #  依存関係の定義
 #
-cfg1_out.c: $(SRCDIR)/arch/$(PRC)_$(TOOL)/prc_def.csv
-kernel_cfg.timestamp: $(SRCDIR)/arch/$(PRC)_$(TOOL)/prc.tf
+cfg1_out.c: $(PRCDIR)/prc_sym.def
+kernel_cfg.timestamp: $(PRCDIR)/prc_kernel.trb
+check.timestamp: $(PRCDIR)/prc_check.trb
+
+#
+#  その他
+#
+CLEAN_FILES := $(CLEAN_FILES)
+REALCLEAN_FILES := $(REALCLEAN_FILES)
Index: ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc.tf
===================================================================
--- ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc.tf	(revision 411)
+++ 	(revision )
@@ -1,142 +1,0 @@
-$ 
-$     パス2のアーキテクチャ依存テンプレート（ARMv6-M用）
-$ 
-
-$ 
-$  有効な割込み番号，割込みハンドラ番号
-$ 
-$INTNO_VALID = RANGE(15, TMAX_INTNO)$
-$INHNO_VALID = INTNO_VALID$
-
-$ 
-$  有効なCPU例外番号
-$ 
-$EXCNO_VALID = { 2,3,11,14 }$
-
-$ 
-$  ATT_ISRで使用できる割込み番号とそれに対応する割込みハンドラ番号
-$ 
-$INTNO_ATTISR_VALID = INTNO_VALID$
-$INHNO_ATTISR_VALID = INHNO_VALID$
-
-$ 
-$  DEF_INT／DEF_EXCで使用できる割込みハンドラ番号／CPU例外ハンドラ番号
-$ 
-$INHNO_DEFINH_VALID = INHNO_VALID$
-$EXCNO_DEFEXC_VALID = EXCNO_VALID$
-
-$ 
-$  チェック方法の指定
-$ 
-$CHECK_STKSZ_ALIGN = 8$
-
-$ 
-$  CFG_INTで使用できる割込み番号と割込み優先度
-$ 
-$INTNO_CFGINT_VALID = INTNO_VALID$
-$INTPRI_CFGINT_VALID = RANGE(-(1 << TBITW_IPRI),-1)$
-
-$ 
-$  割込み属性中のターゲット依存に用いるビット
-$ 
-$ TARGET_INTATR = $
-           
-$ 
-$  標準テンプレートファイルのインクルード
-$ 
-$INCLUDE "kernel/kernel.tf"$
-
-/*$NL$
-$SPC$*  Target-dependent Definitions (ARMv6-M)$NL$
-$SPC$*/$NL$
-$NL$
-
-$ 
-$  ベクターテーブル
-$ 
-
-$FILE "kernel_cfg.c"$
-$NL$
-
-extern void kernel_svc_handler(void);$NL$
-$NL$
-
-__attribute__ ((section(".vector"))) $NL$
-const FP _kernel_vector_table[] =      $NL$ 
-{                                    $NL$
-$ 	$TAB$(FP)(TOPPERS_ISTKPT(TOPPERS_ISTK, TOPPERS_ISTKSZ)),   // 0 The initial stack pointer $NL$
-	$TAB$(FP)(TOPPERS_ISTKPT(TOPPERS_STK, TOPPERS_STKSZ)),   // 0 The initial stack pointer $NL$
-	$TAB$(FP)_start,                 // 1 The reset handler         $NL$
-
-$FOREACH excno {2,3,...,14}$ 
-	$TAB$(FP)(_kernel_exc_entry),
-	$SPC$$FORMAT("/* %d */", +excno)$$NL$
-$END$
-
-$FOREACH inhno INTNO_VALID$ 
-	$IF LENGTH(INH.INHNO[inhno]) && (INT.INTPRI[inhno] < TIPM_LOCK)$
-		$TAB$(FP)($INH.INTHDR[inhno]$),
-	$ELSE$
-		$TAB$(FP)(_kernel_int_entry),
-	$END$
-	$SPC$$FORMAT("/* %d */", +inhno)$$NL$
-$END$
-
-
-$NL$};$NL$
-$NL$
-
-$NL$
-const FP _kernel_exc_tbl[] = $NL$
-{$NL$
-$FOREACH excno {0,1,...,14}$
-	$IF LENGTH(EXC.EXCNO[excno])$
-		$TAB$(FP)($EXC.EXCHDR[excno]$),
-	$ELSE$
-		$TAB$(FP)(_kernel_default_exc_handler),
-	$END$
-	$SPC$$FORMAT("/* %d */", +excno)$$NL$
-$END$
-
-
-$FOREACH inhno INTNO_VALID$
-	$IF LENGTH(INH.INHNO[inhno])$
-		$TAB$(FP)($INH.INTHDR[inhno]$),
-	$ELSE$
-		$TAB$(FP)(_kernel_default_int_handler),
-	$END$
-	$SPC$$FORMAT("/* %d */", +inhno)$$NL$
-$END$
-
-
-$NL$};$NL$
-$NL$
-
-$ 
-$  _kernel_bitpat_cfgintの生成
-$ 
-
-$bitpat_cfgint_num = 0$
-$bitpat_cfgint = 0$
-
-
-const uint32_t _kernel_bitpat_cfgint[
-$IF (TMAX_INTNO & 0x0f) == 0x00 $
-	$bitpat_cfgint_num = (TMAX_INTNO >> 4)$
-$ELSE$
-	$bitpat_cfgint_num = (TMAX_INTNO >> 4) + 1$
-$END$
-	$bitpat_cfgint_num$
-] = {$NL$
-$FOREACH num RANGE(0,(bitpat_cfgint_num-1))$
-	$bitpat_cfgint = 0$
-	$FOREACH inhno RANGE(num*32, (num*32)+31)$
-		$IF LENGTH(INH.INHNO[inhno])$
-			$bitpat_cfgint = bitpat_cfgint | (1 << (inhno & 0x01f))$
-		$END$
-	$END$
-	$TAB$UINT32_C($FORMAT("0x%08x", bitpat_cfgint)$), $NL$
-$END$
-
-$NL$};$NL$
-$NL$
Index: ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_check.tf
===================================================================
--- ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_check.tf	(revision 411)
+++ 	(revision )
@@ -1,18 +1,0 @@
-$ 
-$ 		パス3のプロセッサ依存テンプレート（ARM-M用）
-$ 
-
-$ 
-$  チェック方法の指定
-$ 
-$CHECK_FUNC_ALIGN = 1$
-$CHECK_FUNC_NONNULL = 1$
-$CHECK_STACK_ALIGN = 8$
-$CHECK_STACK_NONNULL = 1$
-$CHECK_MPF_ALIGN = 4$
-$CHECK_MPF_NONNULL = 1$
-
-$ 
-$  標準テンプレートファイルのインクルード
-$ 
-$ $INCLUDE "kernel/kernel_check.tf"$
Index: ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_check.trb
===================================================================
--- ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_check.trb	(revision 421)
+++ ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_check.trb	(revision 421)
@@ -0,0 +1,54 @@
+# -*- coding: utf-8 -*-
+# 
+#		パス3の生成スクリプトのコア依存部（ARM用）
+# 
+#  $Id: core_check.trb 730 2016-04-03 02:04:52Z ertl-hiro $
+#
+
+#
+#  ターゲット非依存部のインクルード
+#
+IncludeTrb("kernel/kernel_check.trb")
+
+#
+#  割込みハンドラテーブルに関するチェック
+#
+# DEF_INHで登録した割込みハンドラのみチェックする．逆に言うと，コンフィ
+# ギュレータで生成した割込みハンドラや，default_int_handlerのチェックは
+# 行わない．
+#
+inhinib_entry = SYMBOL("_kernel_inhinib_entry")
+$cfgData[:DEF_INH].each do |key, params|
+  inthdr = PEEK(inhinib_entry, $sizeof_FP)
+
+  #	割込みハンドラの先頭番地のチェック
+  if (inthdr & ($CHECK_FUNC_ALIGN - 1)) != 0
+    error_wrong_id("E_PAR", params, :inthdr, :inhno, "not aligned")
+  end
+  if $CHECK_FUNC_NONNULL && inthdr == 0
+    error_wrong_id("E_PAR", params, :inthdr, :inhno, "null")
+  end
+
+  inhinib_entry += $sizeof_FP
+end
+
+#
+#  CPU例外ハンドラテーブルに関するチェック
+#
+# DEF_EXCで登録したCPU例外ハンドラのみチェックする．逆に言うと，
+# default_exc_handlerのチェックは行わない．
+#
+excinib_entry = SYMBOL("_kernel_excinib_entry")
+$cfgData[:DEF_EXC].each do |key, params|
+  exchdr = PEEK(excinib_entry, $sizeof_FP)
+
+  # CPU例外ハンドラの先頭番地のチェック
+  if (exchdr & ($CHECK_FUNC_ALIGN - 1)) != 0
+    error_wrong_id("E_PAR", params, :exchdr, :excno, "not aligned")
+  end
+  if $CHECK_FUNC_NONNULL && exchdr == 0
+    error_wrong_id("E_PAR", params, :exchdr, :excno, "null")
+  end
+
+  excinib_entry += $sizeof_FP
+end
Index: ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_def.csv
===================================================================
--- ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_def.csv	(revision 411)
+++ 	(revision )
@@ -1,3 +1,0 @@
-TMAX_INTNO,TMAX_INTNO
-TIPM_LOCK,TIPM_LOCK 
-TBITW_IPRI,TBITW_IPRI
Index: ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_kernel.trb
===================================================================
--- ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_kernel.trb	(revision 421)
+++ ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_kernel.trb	(revision 421)
@@ -0,0 +1,175 @@
+# -*- coding: utf-8 -*-
+#
+#   TOPPERS/SSP Kernel
+#       Toyohashi Open Platform for Embedded Real-Time Systems/
+#       Advanced Standard Profile Kernel
+# 
+#   Copyright (C) 2015 by FUJI SOFT INCORPORATED, JAPAN
+#   Copyright (C) 2015,2016 by Embedded and Real-Time Systems Laboratory
+#               Graduate School of Information Science, Nagoya Univ., JAPAN
+#   Copyright (C) 2017-2020 by Naoki Saito
+#              Nagoya Municipal Industrial Research Institute, JAPAN
+#
+# 
+#   上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+#   ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+#   変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+#   (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+#       権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+#       スコード中に含まれていること．
+#   (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+#       用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+#       者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+#       の無保証規定を掲載すること．
+#   (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+#       用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+#       と．
+#     (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+#         作権表示，この利用条件および下記の無保証規定を掲載すること．
+#     (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+#         報告すること．
+#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+#       害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+#       また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+#       由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+#       免責すること．
+# 
+#   本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+#   よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+#   に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+#   アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+#   の責任を負わない．
+# 
+#   $Id: core_kernel.trb 662 2016-02-27 02:33:51Z ertl-hiro $
+# 
+
+#
+#		パス2の生成スクリプトのコア依存部（ARMv6-M用）
+#
+
+#
+#  有効な割込み番号，割込みハンドラ番号
+#
+$INTNO_VALID = Array(15..$TMAX_INTNO)
+$INHNO_VALID = $INTNO_VALID
+
+#
+#  有効なCPU例外ハンドラ番号
+#
+$EXCNO_VALID = [ 2, 3, 11, 14 ]
+
+#
+#  ATT_ISRで使用できる割込み番号とそれに対応する割込みハンドラ番号
+#
+$INTNO_ATTISR_VALID = $INTNO_VALID
+$INHNO_ATTISR_VALID = $INHNO_VALID
+
+#
+#  DEF_INT/DEF_EXCで使用できる割込みハンドラ番号／CPU例外ハンドラ番号
+#
+$INHNO_DEFINH_VALID = $INHNO_VALID
+$EXCNO_DEFEXC_VALID = $EXCNO_VALID
+
+#
+#  チェック方法の指定
+#
+$CHECK_STKSZ_ALIGN = 8
+
+#
+#  CFG_INTで使用できる割込み番号と割込み優先度
+#
+$INTNO_CFGINT_VALID = $INTNO_VALID
+$INTPRI_CFGINT_VALID = Array(-(1 << $TBITW_IPRI)..-1)
+
+#
+#  割込み属性中のターゲット依存に用いるビット
+#
+#$TARGET_INTATR =
+
+#
+#  ターゲット非依存部のインクルード
+#
+IncludeTrb("kernel/kernel.trb")
+
+$kernelCfgC.comment_header("Target-dependent Definitions (ARMv6-M)")
+
+#
+#  割込みベクタテーブル
+#
+$kernelCfgC.comment_header("Interrupt Vector Table")
+
+$kernelCfgC.add("extern void kernel_svc_handler(void);")
+$kernelCfgC.add
+$kernelCfgC.add("__attribute__ ((section(\".vector\")))")
+$kernelCfgC.add("const FP _kernel_vector_table[] = {")
+$kernelCfgC.add("\t(FP)(TOPPERS_ISTKPT(TOPPERS_STK, TOPPERS_STKSZ)),   // 0 The initial stack pointer")
+$kernelCfgC.add("\t(FP)_start,                 // 1 The reset handler")
+
+(2..14).each do |excno|
+  $kernelCfgC.append("\t(FP)(_kernel_exc_entry),")
+  $kernelCfgC.add(" /* #{excno} */")
+end
+
+$INTNO_VALID.each do |inhno|
+  if ($cfgData[:DEF_INH].has_key?(inhno)) && ($cfgData[:CFG_INT][inhno][:intpri] < $TIPM_LOCK)
+    $kernelCfgC.append("\t(FP)(#{$cfgData[:DEF_INH][inhno][:inthdr]})")
+  else
+    $kernelCfgC.append("\t(FP)(_kernel_int_entry)")
+  end
+  $kernelCfgC.add(", /* #{inhno} */")
+end
+
+$kernelCfgC.add
+$kernelCfgC.add2("};")
+
+#
+#  CPU例外ハンドラテーブル
+#
+$kernelCfgC.comment_header("CPU Exception Handler Table")
+
+$kernelCfgC.add("const FP _kernel_exc_tbl[] = {")
+(0..14).each do |excno|
+  if $cfgData[:DEF_EXC].has_key?(excno)
+    $kernelCfgC.append("\t(FP)(#{$cfgData[:DEF_EXC][excno][:exchdr]})")
+  else
+    $kernelCfgC.append("\t(FP)(_kernel_default_exc_handler)")
+  end
+  $kernelCfgC.add(", /* #{excno} */")
+end
+
+$INTNO_VALID.each do |inhno|
+  if $cfgData[:DEF_INH].has_key?(inhno)
+    $kernelCfgC.append("\t(FP)(#{$cfgData[:DEF_INH][inhno][:inthdr]})")
+  else
+    $kernelCfgC.append("\t(FP)(_kernel_default_int_handler)")
+  end
+  $kernelCfgC.add(", /* #{inhno} */")
+end
+
+$kernelCfgC.add
+$kernelCfgC.add2("};")
+
+#
+#  _kernel_bitpat_cfgintの生成
+#
+
+if ($TMAX_INTNO & 0x0f) == 0
+  bitpat_cfgint_num = ($TMAX_INTNO >> 4)
+else
+  bitpat_cfgint_num = ($TMAX_INTNO >> 4) + 1
+end
+
+$kernelCfgC.add("const uint32_t _kernel_bitpat_cfgint[#{bitpat_cfgint_num}] = {")
+
+(0..(bitpat_cfgint_num-1)).each do |num|
+  bitpat_cfgint = 0
+  ((num*32)..(num*32+31)).each do |inhno|
+    if $cfgData[:DEF_INH].has_key?(inhno)
+      bitpat_cfgint = bitpat_cfgint | (1 << (inhno & 0x01f))
+    end
+  end
+  $kernelCfgC.add("\tUINT32_C(0x#{sprintf("%08x", bitpat_cfgint)}),")
+end
+
+$kernelCfgC.add2("};")
+
Index: ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_sym.def
===================================================================
--- ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_sym.def	(revision 421)
+++ ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_sym.def	(revision 421)
@@ -0,0 +1,3 @@
+TMAX_INTNO
+TIPM_LOCK,,signed 
+TBITW_IPRI
