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 411)
@@ -0,0 +1,28 @@
+PACKAGE ssp_arch_armv6_m_gcc
+VERSION 1.3.0
+
+MANIFEST
+Makefile.prc
+arm_m.h
+prc.tf
+prc_cfg1_out.h
+prc_check.tf
+prc_config.c
+prc_config.h
+prc_def.csv
+prc_insn.h
+prc_kernel.h
+prc_rename.def
+prc_rename.h
+prc_sil.h
+prc_stddef.h
+prc_support.S
+prc_test.h
+prc_timer.cfg
+prc_timer.c
+prc_timer.h
+prc_unrename.h
+prc_user.txt
+start.S
+
+INCLUDE ../../target/lpcxpresso_lpc812_gcc/MANIFEST
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 411)
@@ -0,0 +1,33 @@
+#
+#  @(#) $Id: Makefile.prc 1304 2008-08-27 07:28:36Z ertl-honda $
+# 
+
+#
+#		Makefile のプロセッサ依存部（ARM-M用）
+#
+
+#
+#  コンパイルオプション
+#
+INCLUDES := $(INCLUDES) -I$(SRCDIR)/arch/$(PRC)_$(TOOL)/
+LDFLAGS := -nostdlib $(LDFLAGS) 
+CDEFS := $(CDEFS) -DTOPPERS_LABEL_ASM
+LIBS := $(LIBS)  -lgcc
+
+#
+#  カーネルに関する定義
+#
+KERNEL_DIR := $(KERNEL_DIR) $(SRCDIR)/arch/$(PRC)_$(TOOL)
+KERNEL_ASMOBJS := $(KERNEL_ASMOBJS) prc_support.o
+KERNEL_COBJS := $(KERNEL_COBJS) prc_config.o prc_timer.o
+
+#
+#  コンフィギュレータ関係の変数の定義
+#
+CFG_TABS := $(CFG_TABS) --cfg1-def-table $(SRCDIR)/arch/$(PRC)_$(TOOL)/prc_def.csv
+
+#
+#  依存関係の定義
+#
+cfg1_out.c: $(SRCDIR)/arch/$(PRC)_$(TOOL)/prc_def.csv
+kernel_cfg.timestamp: $(SRCDIR)/arch/$(PRC)_$(TOOL)/prc.tf
Index: /ssp_armv6_m_gcc/trunk/armv6_m_gcc/arm_m.h
===================================================================
--- /ssp_armv6_m_gcc/trunk/armv6_m_gcc/arm_m.h	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/armv6_m_gcc/arm_m.h	(revision 411)
@@ -0,0 +1,179 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2013 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ * 
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ * 
+ *  @(#) $Id: arm_m.h 1304 2008-08-27 07:28:36Z ertl-honda $
+ */
+
+/*
+ *  ARMVx-Mのハードウェア資源の定義
+ */
+
+#ifndef ARM_M_H
+#define ARM_M_H
+
+
+/*
+ *  EPSRのTビット
+ */
+#define EPSR_T   0x01000000
+
+/*
+ * IPSRの ISR NUMBER
+ */
+#define IPSR_ISR_NUMBER 0x3f
+
+/*
+ *  例外・割込み発生時にスタック上に積まれる保存領域のサイズ
+ *  本カーネルでは例外フレームと呼ぶ
+ */
+#define EXC_FRAME_SIZE         (8*4)
+
+/*
+ *  例外・割込み発生時にLRに設定されるEXC_RETURNの値
+ */
+#define EXC_RETURN_HANDLER      0x0
+#define EXC_RETURN_THREAD       0x8
+#define EXC_RETURN_MSP          0x0
+#define EXC_RETURN_PSP          0x4
+
+/*
+ *  CONTROLレジスタ
+ */
+#define CONTROL_PSP            0x02
+#define CONTROL_MSP            0x00
+
+/*
+ *  例外番号
+ */
+#define EXCNO_NMI         2
+#define EXCNO_HARD        3
+#define EXCNO_MPU         4
+#define EXCNO_BUS         5
+#define EXCNO_USAGE       6
+#define EXCNO_SVCALL     11          
+#define EXCNO_DEBUG      12
+#define EXCNO_PENDSV     14
+
+/*
+ *  例外番号の最小値と最大値
+ */
+#define TMIN_EXCNO   2
+#define TMAX_EXCNO  14
+
+/*
+ *  割込み番号
+ */
+#define IRQNO_SYSTICK    15
+
+/*
+ *  割込み番号の最小値
+ */
+#define TMIN_INTNO       15
+
+/*
+ *  例外フレームのオフセット
+ */
+#define P_EXCINF_OFFSET_EXC_RETURN  0x00
+#define P_EXCINF_OFFSET_XPSR        0x08
+#define P_EXCINF_OFFSET_PC          0x07
+
+/*
+ *  NVIC関連
+ */
+
+/*
+ *  コントロールレジスタ
+ */
+#define NVIC_INT_CTRL       0xe000ed04
+
+#define NVIC_PENDSVSET      0x10000000
+
+/*
+ *  システムハンドラーコントロールレジスタ
+ */
+#define NVIC_SYS_HND_CTRL   0xE000ED24
+
+/*
+ *  各例外の許可ビット
+ */
+#define NVIC_SYS_HND_CTRL_USAGE 0x00040000
+#define NVIC_SYS_HND_CTRL_BUS   0x00020000
+#define NVIC_SYS_HND_CTRL_MEM   0x00010000
+
+/*
+ *  優先度設定レジスタ
+ */
+#define NVIC_SYS_PRI1       0xE000ED18  // Sys. Handlers 4 to 7 Priority
+#define NVIC_SYS_PRI2       0xE000ED1C  // Sys. Handlers 8 to 11 Priority
+#define NVIC_SYS_PRI3       0xE000ED20  // Sys. Handlers 12 to 15 Priority
+#define NVIC_PRI0           0xE000E400  // IRQ 0 to 3 Priority Register
+
+/*
+ *  割込み許可レジスタ
+ */
+#define NVIC_SETENA0        0xE000E100  // IRQ 0 to 31 Set Enable Register
+
+/*
+ *  割込み禁止レジスタ
+ */
+#define NVIC_CLRENA0        0xE000E180  // IRQ 0 to 31 Set Disable Register
+
+/*
+ *  ベクタテーブルオフセットレジスタ
+ */
+#define NVIC_VECTTBL        0xE000ED08
+
+
+/*
+ *  SYSTIC関連レジスタ
+ */
+#define SYSTIC_CONTROL_STATUS 0xE000E010
+#define SYSTIC_RELOAD_VALUE   0xE000E014
+#define SYSTIC_CURRENT_VALUE  0xE000E018
+#define SYSTIC_CALIBRATION    0xE000E01C
+
+#define SYSTIC_ENABLE    0x01
+#define SYSTIC_TICINT    0x02
+#define SYSTIC_CLKSOURCE 0x04
+#define SYSTIC_COUNTFLAG 0x10000
+
+#define SYSTIC_SKEW      0x40000000
+#define SYSTIC_NOREF     0x80000000
+#define SYSTIC_TENMS     0x00ffffff
+
+#endif  /* ARM_M_H */
Index: /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc.tf
===================================================================
--- /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc.tf	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc.tf	(revision 411)
@@ -0,0 +1,142 @@
+$ 
+$     パス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_cfg1_out.h
===================================================================
--- /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_cfg1_out.h	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_cfg1_out.h	(revision 411)
@@ -0,0 +1,10 @@
+/*
+ *  @(#) $Id: prc_cfg1_out.h 1304 2008-08-27 07:28:36Z ertl-honda $
+ */
+
+/*
+ *		cfg1_out.cをリンクするために必要なスタブの定義
+ */
+
+void sta_ker(void){}
+STK_T *const	_kernel_istkpt = 0x00;
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)
+++ /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_check.tf	(revision 411)
@@ -0,0 +1,18 @@
+$ 
+$ 		パス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_config.c
===================================================================
--- /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_config.c	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_config.c	(revision 411)
@@ -0,0 +1,267 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2010 by Meika Sugimoto
+ *  Copyright (C) 2013 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ * 
+ *  上記著作権者は，以下の(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 $
+ */
+
+/*
+ *		プロセッサ依存モジュール（ARM-M用）
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+
+#include <t_syslog.h>
+
+/* 割込みネスト数の管理 */
+uint8_t intnest;
+
+/*
+ *  ベクタテーブル(kernel_cfg.c)
+ */
+extern const FP vector_table[];
+
+/*
+ *  システム例外・割込みの（例外番号 4〜15）
+ *  割込み優先度設定レジスタへのアクセスのための配列
+ */
+static const unsigned int nvic_sys_pri_reg[] = {
+	0,
+	NVIC_SYS_PRI1,
+	NVIC_SYS_PRI2,
+	NVIC_SYS_PRI3
+};
+
+/*
+ *  例外と割込みの割込み優先度をセット
+ *
+ *  excnoはARM-Mで定められている Exception Number を指定．
+ */
+void
+set_exc_int_priority(uint32_t excno, uint8_t pri){
+	uint32_t tmp, reg;
+
+	/*
+	 *  割込み優先度設定レジスタの決定
+	 */
+	if ((EXCNO_MPU <= excno) && (excno <= IRQNO_SYSTICK)) {
+		/*
+		 * Exception Number 4(Memory Management)から
+		 * Exception Number 15(SysTick)までの割込み優先度はシステム優先度
+		 * レジスタにより設定．
+		 */
+		reg = nvic_sys_pri_reg[excno >> 2];
+	}
+	else if ((TMIN_INTNO < excno) && (excno <= TMAX_INTNO)){
+		/*
+		 * IRQ割込みなら
+		 */
+		reg = NVIC_PRI0 + (((excno - (TMIN_INTNO + 1)) >> 2) * 4);
+	}
+	else {
+		return ;
+	}
+	
+	tmp = sil_rew_mem((void *)reg);
+	tmp &= ~(0xFF << (8 * (excno & 0x03)));
+	tmp |= (pri << (8 - TBITW_IPRI)) << (8 * (excno & 0x03));
+	sil_wrw_mem((void *)reg, tmp);
+}
+
+/*
+ *  例外の許可
+ *
+ *  Memory Management, Bus Fault, Usage Fault は禁止・許可が買おう
+ */
+void
+enable_exc(EXCNO excno)
+{
+	uint32_t tmp;
+
+	switch (excno) {
+	  case EXCNO_MPU:
+		tmp = sil_rew_mem((void *)NVIC_SYS_HND_CTRL);
+		tmp |= NVIC_SYS_HND_CTRL_MEM;
+		sil_wrw_mem((void *)NVIC_SYS_HND_CTRL, tmp);
+		break;
+	  case EXCNO_BUS:
+		tmp = sil_rew_mem((void *)NVIC_SYS_HND_CTRL);
+		tmp |= NVIC_SYS_HND_CTRL_BUS;
+		sil_wrw_mem((void *)NVIC_SYS_HND_CTRL, tmp);
+		break;
+	  case EXCNO_USAGE:
+		tmp = sil_rew_mem((void *)NVIC_SYS_HND_CTRL);
+		tmp |= NVIC_SYS_HND_CTRL_USAGE;
+		sil_wrw_mem((void *)NVIC_SYS_HND_CTRL, tmp);
+		break;
+	}
+}
+
+/*
+ *  例外の禁止
+ */
+void
+disable_exc(EXCNO excno)
+{
+	uint32_t tmp;
+
+	switch (excno) {
+	  case EXCNO_MPU:
+		tmp = sil_rew_mem((void *)NVIC_SYS_HND_CTRL);
+		tmp &= ~NVIC_SYS_HND_CTRL_MEM;
+		sil_wrw_mem((void *)NVIC_SYS_HND_CTRL, tmp);
+		break;
+	  case EXCNO_BUS:
+		tmp = sil_rew_mem((void *)NVIC_SYS_HND_CTRL);
+		tmp &= ~NVIC_SYS_HND_CTRL_BUS;
+		sil_wrw_mem((void *)NVIC_SYS_HND_CTRL, tmp);
+		break;
+	  case EXCNO_USAGE:
+		tmp = sil_rew_mem((void *)NVIC_SYS_HND_CTRL);
+		tmp &= ~NVIC_SYS_HND_CTRL_USAGE;
+		sil_wrw_mem((void *)NVIC_SYS_HND_CTRL, tmp);
+		break;
+	}
+}
+
+
+/*
+ *  プロセッサ依存の初期化
+ */
+void
+prc_initialize(void)
+{
+
+	/* 割込みネスト数の初期化 */
+	intnest = 0u;
+
+	/*
+	 *  ベクタテーブルを設定
+	 */
+	sil_wrw_mem((void*)NVIC_VECTTBL, (uint32_t)vector_table);
+
+	/*
+	 *  SVCハンドラの優先度を設定
+	 */
+//	set_exc_int_priority(EXCNO_SVCALL, -4);
+
+	/*
+	 *  SVCハンドラを有効に
+	 */
+//	x_enable_int(EXCNO_SVCALL);
+}
+
+/*
+ *  プロセッサ依存の終了処理
+ */
+void NoReturn
+prc_terminate(void)
+{
+	while(1)
+		;
+}
+
+/*
+ *  割込み要求ライン属性の設定
+ */
+void
+x_config_int(INTNO intno, ATR intatr, PRI intpri)
+{
+	//assert(VALID_INTNO_CFGINT(intno));
+	//assert(TMIN_INTPRI <= intpri && intpri <= TMAX_INTPRI);
+
+	/* 
+	 *  一旦割込みを禁止する
+	 */    
+	(void)x_disable_int(intno);
+	x_clear_int(intno);
+
+	/*
+	 *  割込み優先度をセット
+	 */
+	set_exc_int_priority(intno, intpri);
+
+	/*
+	 *  割込み要求マスク解除(必要な場合)
+	 *  同時に割込み優先度もセットされる
+	 */
+	if ((intatr & TA_ENAINT) != 0U) {
+		(void) x_enable_int(intno);
+	}    
+}
+
+
+#ifndef OMIT_DEFAULT_EXC_HANDLER
+/*
+ *  Trapa以外の例外で登録されていない例外が発生すると呼び出される
+ */
+void
+default_exc_handler(void *p_excinf)
+{
+	uint32_t pc      = *(((uint32_t*)p_excinf) + P_EXCINF_OFFSET_PC);
+	uint32_t xpsr    = *(((uint32_t*)p_excinf) + P_EXCINF_OFFSET_XPSR);
+	uint32_t excno   = get_ipsr() & IPSR_ISR_NUMBER;
+
+	syslog(LOG_EMERG, "\nUnregistered Exception occurs.");
+	syslog(LOG_EMERG, "Excno = %08x PC = %08x XPSR = %08x, p_excinf = %08X",
+		   excno, pc, xpsr, p_excinf);
+
+	target_exit();
+}
+#endif /* OMIT_DEFAULT_EXC_HANDLER */
+
+#ifndef OMIT_DEFAULT_INT_HANDLER
+/*
+ *  未登録の割込みが発生した場合に呼び出される
+ */
+void
+default_int_handler(void *p_excinf)
+{
+	uint32_t pc      = *(((uint32_t*)p_excinf) + P_EXCINF_OFFSET_PC);
+	uint32_t xpsr    = *(((uint32_t*)p_excinf) + P_EXCINF_OFFSET_XPSR);
+	uint32_t excno   = get_ipsr() & IPSR_ISR_NUMBER;
+
+	syslog(LOG_EMERG, "\nUnregistered Interrupt occurs.");
+	syslog(LOG_EMERG, "Excno = %08x PC = %08x XPSR = %08x, p_excinf = %08X",
+		   excno, pc, xpsr, p_excinf);
+
+	target_exit();
+}
+#endif /* OMIT_DEFAULT_INT_HANDLER */
Index: /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_config.h
===================================================================
--- /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_config.h	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_config.h	(revision 411)
@@ -0,0 +1,478 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2013,2015 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ * 
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ * 
+ *  @(#) $Id: prc_config.h 1304 2008-08-27 07:28:36Z ertl-honda $
+ */
+
+/*
+ *		プロセッサ依存モジュール（ARM-M用）
+ *
+ *  このインクルードファイルは，target_config.h（または，そこからインク
+ *  ルードされるファイル）のみからインクルードされる．他のファイルから
+ *  直接インクルードしてはならない．
+ */
+
+#ifndef TOPPERS_PRC_CONFIG_H
+#define TOPPERS_PRC_CONFIG_H
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  プロセッサの特殊命令のインライン関数定義
+ */
+#include "prc_insn.h"
+
+/*
+ *  非タスクコンテキスト用のスタック初期値
+ */
+#define TOPPERS_ISTKPT(istk, istksz) ((STK_T *)((char *)(istk) + (istksz)))
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  割込みネスト数
+ */
+extern uint8_t intnest;
+
+/*
+ *  コンテキストの参照
+ *
+ */
+Inline bool_t
+sense_context(void)
+{
+	bool_t tskctx;
+	
+	if (intnest == 0u){
+		tskctx = false;
+	}
+	else {
+		tskctx = true;
+	}
+	
+	return tskctx;
+}
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  TOPPERS標準割込み処理モデルの実現
+ *
+ *  ARMv6-MアーキテクチャにはBASEPRI，FAULTMASK が存在しない．
+ *  割込み優先度マスクレベルの変更をソフトウェアで行うことができないため，
+ *  CPUロック状態についてはPRIMASKにより管理する．
+ *  そして，NMI以外のカーネル管理外の割込みはサポートしない．
+ *  同様に，割込みロックもPRIMASKで実現する．
+ */
+
+/*
+ *  割込み優先度マスクの外部表現と内部表現の変換
+ *
+ *  アセンブリ言語のソースファイルからインクルードする場合のために，
+ *  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
+
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  CPUロック状態への移行
+ *
+ *  PRIMASKのPMビットを1にする．
+ */
+Inline void
+x_lock_cpu(void)
+{
+	Asm("cpsid i":::"memory");
+}
+
+#define t_lock_cpu()    x_lock_cpu()
+#define i_lock_cpu()    x_lock_cpu()
+
+/*
+ *  CPUロック状態の解除
+ *
+ *  PRIMASKのPMビットを0にする．
+ */
+Inline void
+x_unlock_cpu(void)
+{
+	Asm("cpsie i":::"memory");
+}
+
+#define t_unlock_cpu()    x_unlock_cpu()
+#define i_unlock_cpu()    x_unlock_cpu()
+
+/*
+ *  CPUロック状態の参照
+ */
+Inline bool_t
+x_sense_lock(void)
+{
+	uint32_t val;
+
+	Asm("mrs  %0, PRIMASK" : "=r"(val));
+
+	if (val == 1) {
+		return (true);
+	}
+	else {
+		return (false);
+	}
+}
+
+#define t_sense_lock()    x_sense_lock()
+#define i_sense_lock()    x_sense_lock()
+
+
+/*
+ * （モデル上の）割込み優先度マスクの設定
+ *
+ *  割込み優先度マスクをプログラムからは変更することができないため，
+ *  ここではなにもしない．
+ */
+Inline void
+x_set_ipm(PRI intpri)
+{
+}
+
+#define t_set_ipm(intpri)    x_set_ipm(intpri)
+#define i_set_ipm(intpri)    x_set_ipm(intpri)
+
+/*
+ * （モデル上の）割込み優先度マスクの参照
+ *
+ *  マスクの値をプログラムから設定，取得することはできないため，
+ *  ここでは適当な値を返す．
+ */
+Inline PRI
+x_get_ipm(void)
+{
+	return(TMAX_INTPRI);
+}
+
+#define t_get_ipm()    x_get_ipm()
+#define i_get_ipm()    x_get_ipm()
+
+/*
+ *  SVCハンドラ（prc_support.S）
+ */
+extern void svc_handler(void);
+
+/*
+ *  スタートアップルーチン（start.S）
+ */
+extern void _start(void);
+
+/*
+ *  ディスパッチャの動作開始（prc_support.S）
+ *
+ *  start_dispatchは，カーネル起動時に呼び出すべきもので，すべての割込
+ *  みを禁止した状態（割込みロック状態と同等の状態）で呼び出さなければ
+ *  ならない．
+ */
+extern void start_dispatch(void) NoReturn;
+
+
+/*
+ *  カーネルの終了処理の呼出し（prc_support.S）
+ *
+ *  call_exit_kernelは，カーネルの終了時に呼び出すべきもので，非タスク
+ *  コンテキストに切り換えて，カーネルの終了処理（exit_kernel）を呼び出
+ *  す．
+ */
+extern void call_exit_kernel(void) NoReturn;
+
+/*
+ *  アイドルループの実装
+ *
+ *  単にCPUロック状態とCPUロック解除状態を呼び出す実装とする．
+ *  スリープモードに入れる場合は本処理をwfi命令を用いて書き換えれば良い．
+ */
+Inline void
+idle_loop(void)
+{
+	/* CPUアンロック => CPUロック  */
+	i_unlock_cpu();
+	i_lock_cpu();
+}
+
+/*
+ *  割込み番号・割込みハンドラ番号
+ *
+ *  割込みハンドラ番号(inhno)と割込み番号(intno)は，割り込み発生時に
+ *  EPSRに設定される例外番号とする．
+ */
+
+/*
+ *  割込み番号の範囲の判定
+ */
+#define VALID_INTNO(intno)           ((TMIN_INTNO <= (intno)) && ((intno) <= TMAX_INTNO))
+#define VALID_INTNO_DISINT(intno)    VALID_INTNO(intno)
+#define VALID_INTNO_CFGINT(intno)    VALID_INTNO(intno)
+
+/*
+ *  割込みハンドラの設定
+ *
+ *  ベクトル番号inhnoの割込みハンドラの起動番地int_entryに設定する．割込み
+ *  ハンドラテーブル
+ */
+Inline void
+x_define_inh(INHNO inhno, FP int_entry)
+{
+	/* 特に行う処理はない */
+}
+
+/*
+ *  割込みハンドラの出入口処理の生成マクロ
+ *
+ */
+#define INT_ENTRY(inhno, inthdr)    inthdr
+#define INTHDR_ENTRY(inhno, inhno_num, inthdr) extern void inthdr(void);
+
+/*
+ *  割込み要求禁止フラグ
+ */
+
+/*
+ *  割込み属性が設定されているかを判別するための変数（kernel_cfg.c）
+ */
+extern const uint32_t	bitpat_cfgint[];
+
+/*
+ *  割込み要求禁止フラグのセット
+ *
+ *  割込み属性が設定されていない割込み要求ラインに対して割込み要求禁止
+ *  フラグをクリアしようとした場合には，falseを返す．
+ */
+Inline bool_t
+x_disable_int(INTNO intno)
+{
+	uint32_t tmp;
+
+	/*
+	 *  割込み属性が設定されていない場合
+	 */
+	if ((bitpat_cfgint[intno >> 5] & (1 << (intno & 0x1f))) == 0x00) {
+		return(false);
+	}
+
+	if (intno == IRQNO_SYSTICK) {
+		tmp = sil_rew_mem((void *)SYSTIC_CONTROL_STATUS);
+		tmp &= ~SYSTIC_TICINT;
+		sil_wrw_mem((void *)SYSTIC_CONTROL_STATUS, tmp);
+	}else {
+		tmp = intno - 16;
+		sil_wrw_mem((void *)NVIC_CLRENA0 + (tmp >> 5), (1 << (tmp & 0x1f)));
+	}
+
+	return(true);
+}
+
+#define t_disable_int(intno) x_disable_int(intno)
+#define i_disable_int(intno) x_disable_int(intno)
+
+/*
+ *  割込み要求禁止フラグの解除
+ *
+ *  割込み属性が設定されていない割込み要求ラインに対して割込み要求禁止
+ *  フラグをクリアしようとした場合には，falseを返す．
+ */
+Inline bool_t
+x_enable_int(INTNO intno)
+{
+	uint32_t tmp;
+
+	/*
+	 *  割込み属性が設定されていない場合
+	 */
+	if ((bitpat_cfgint[intno >> 5] & (1 << (intno & 0x1f))) == 0x00) {
+		return(false);
+	}
+
+	if (intno == IRQNO_SYSTICK) {
+		tmp = sil_rew_mem((void *)SYSTIC_CONTROL_STATUS);
+		tmp |= SYSTIC_TICINT;
+		sil_wrw_mem((void *)SYSTIC_CONTROL_STATUS, tmp);
+	}else {
+		tmp = intno - 16;
+		sil_wrw_mem((void *)((uint32_t *)NVIC_SETENA0 + (tmp >> 5)),
+					(1 << (tmp & 0x1f)));
+	}
+    
+	return(true);
+}
+
+#define t_enable_int(intno) x_enable_int(intno)
+#define i_enable_int(intno) x_enable_int(intno)
+
+Inline void
+x_clear_int(INTNO intno)
+{
+	uint32_t tmp;
+	
+	if (intno != IRQNO_SYSTICK) {
+		tmp = intno - 16;
+		sil_wrw_mem((void *)((uint32_t *)NVIC_CLRENA0 + (tmp >> 5)),
+					(1 << (tmp & 0x1f)));
+	}
+}
+
+/*
+ *  割込み要求ラインの属性の設定
+ */
+extern void x_config_int(INTNO intno, ATR intatr, PRI intpri);
+
+/*
+ *  割込みハンドラ入口で必要なIRC操作
+ */
+Inline void
+i_begin_int(INTNO intno)
+{
+	/* 特に行う処理はない */
+}
+
+/*
+ *  割込みハンドラの出口で必要なIRC操作
+ */
+Inline void
+i_end_int(INTNO intno)
+{
+	/* 特に行う処理はない */
+}
+
+/*
+ *  CPU例外ハンドラ関係
+ */ 
+
+/*
+ *  CPU例外ハンドラ番号
+ */
+#define VALID_EXCNO_DEFEXC(excno)    (TMIN_EXCNO <= (excno) && (excno) <= TMAX_EXCNO)
+
+/*
+ *  CPU例外ハンドラの許可
+ */
+extern void enable_exc(EXCNO excno);
+
+/*
+ *  CPU例外ハンドラの禁止
+ */
+extern void disable_exc(EXCNO excno);
+
+/*
+ *  CPU例外ハンドラの設定
+ */
+Inline void
+x_define_exc(EXCNO excno, FP exc_entry)
+{
+	/*
+	 *  一部の例外は許可を行う必要がある
+	 */
+	enable_exc(excno);
+}
+
+/*
+ *  CPU例外ハンドラの入口処理の生成マクロ
+ */
+#define EXC_ENTRY(excno, exchdr)    exchdr
+#define EXCHDR_ENTRY(excno, excno_num, exchdr) extern void exchdr(void *p_excinf);
+
+
+/*
+ *  CPU例外エントリ（prc_support.S）
+ */
+extern void exc_entry(void);
+
+/*
+ *  割込みエントリ（prc_support.S）
+ */
+extern void int_entry(void);
+
+/*
+ *  プロセッサ依存の初期化
+ */
+extern void prc_initialize(void);
+
+/*
+ *  プロセッサ依存の終了時処理
+ */
+extern void prc_terminate(void) NoReturn;
+
+/*
+ *  atexitの処理とデストラクタの実行
+ */
+Inline void
+call_atexit(void)
+{
+	extern void    software_term_hook(void);
+	void (*volatile fp)(void) = software_term_hook;
+
+	/*
+	 *  software_term_hookへのポインタを，一旦volatile指定のあるfpに代
+	 *  入してから使うのは，0との比較が最適化で削除されないようにするた
+	 *  めである．
+	 */
+	if (fp != 0) {
+		(*fp)();
+	}
+}
+
+/*
+ * 登録されていない例外が発生すると呼び出される
+ */
+extern void default_exc_handler(void *p_excinf);
+
+/*
+ * 未登録の割込みが発生した場合に呼び出される
+ */
+extern void default_int_handler(void *p_excinf);
+
+#endif /* TOPPERS_MACRO_ONLY */
+#endif /* TOPPERS_PRC_CONFIG_H */
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)
+++ /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_def.csv	(revision 411)
@@ -0,0 +1,3 @@
+TMAX_INTNO,TMAX_INTNO
+TIPM_LOCK,TIPM_LOCK 
+TBITW_IPRI,TBITW_IPRI
Index: /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_insn.h
===================================================================
--- /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_insn.h	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_insn.h	(revision 411)
@@ -0,0 +1,131 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ * 
+ *  @(#) $Id: prc_insn.h 1304 2008-08-27 07:28:36Z ertl-honda $
+ */
+
+
+/*
+ *  コア依存の特殊命令のインライン関数定義（ARM-M用）
+ */
+
+#ifndef CORE_INSN_H
+#define CORE_INSN_H
+
+#include <arm_m.h>
+
+/*
+ *  FAULTMASKのセット
+ */
+Inline void
+set_faultmask(void){
+	Asm("cpsid f":::"memory");
+}
+
+/*
+ *  FAULTMASKのクリア
+ */
+Inline void
+clear_faultmask(void){
+	Asm("cpsie f":::"memory");
+}
+
+/*
+ *  PRIMASKのセット
+ */
+Inline void
+set_primask(void){
+	Asm("cpsid i":::"memory");
+}
+
+/*
+ *  PRIMASKのクリア
+ */
+Inline void
+clear_primask(void){
+	Asm("cpsie i":::"memory");
+}
+
+/*
+ *  BASEPRIのセット
+ */
+Inline void
+set_basepri(uint32_t val){
+	Asm("msr BASEPRI, %0" : : "r"(val) : "memory");
+}
+
+/*
+ *  BASEPRIの取得
+ */
+Inline uint32_t
+get_basepri(void){
+	uint32_t val;
+	Asm("mrs  %0, BASEPRI" : "=r"(val));
+	return(val);
+}
+
+/*
+ *  CONTROLのセット
+ */
+Inline void
+set_control(uint32_t val){
+	Asm("msr control, %0 \n"
+		" isb"
+		: : "r"(val) : "memory");
+}
+
+/*
+ *  CONTROLの取得
+ */
+Inline uint32_t
+get_control(void){
+	uint32_t val;
+	Asm("mrs  %0, CONTROL" : "=r"(val));
+	return(val);
+}
+
+/*
+ *  ステータスレジスタ（CPSR）の現在値の読出し
+ */
+Inline uint32_t
+get_ipsr(void)
+{
+    uint32_t sr;
+    Asm("mrs  %0, ipsr" : "=r"(sr));
+    return(sr);
+}
+
+#endif /* CORE_INSN_H */
Index: /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_kernel.h
===================================================================
--- /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_kernel.h	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_kernel.h	(revision 411)
@@ -0,0 +1,63 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ * 
+ *  @(#) $Id: prc_kernel.h 1304 2008-08-27 07:28:36Z ertl-honda $
+ */
+
+/*
+ *		kernel.hのプロセッサ依存部（ARM-M用）
+ *
+ *  このインクルードファイルは，target_kernel.h（または，そこからインク
+ *  ルードされるファイル）のみからインクルードされる．他のファイルから
+ *  直接インクルードしてはならない．
+ */
+
+#ifndef TOPPERS_PRC_KERNEL_H
+#define TOPPERS_PRC_KERNEL_H
+
+/*
+ *  サポートする機能の定義
+ */
+#define TOPPERS_TARGET_SUPPORT_DIS_INT            /* dis_intをサポートする */
+#define TOPPERS_TARGET_SUPPORT_ENA_INT            /* ena_intをサポートする */
+
+#define TMAX_INTPRI		(-1)		/* 割込み優先度の最大値（最低値）*/
+
+#ifndef TOPPERS_MACRO_ONLY
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+#endif /* TOPPERS_PRC_KERNEL_H */
Index: /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_rename.def
===================================================================
--- /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_rename.def	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_rename.def	(revision 411)
@@ -0,0 +1,19 @@
+# prc_config.c
+exc_tbl
+vector_table
+lock_flag
+saved_iipm
+intnest
+default_exc_handler
+default_int_handler
+x_config_int
+prc_initialize
+prc_terminate
+bitpat_cfgint
+
+# prc_support.S
+int_entry
+exc_entry
+ret_int
+ret_exc
+svc_handler
Index: /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_rename.h
===================================================================
--- /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_rename.h	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_rename.h	(revision 411)
@@ -0,0 +1,59 @@
+/* This file is generated from prc_rename.def by genrename. */
+
+#ifndef TOPPERS_PRC_RENAME_H
+#define TOPPERS_PRC_RENAME_H
+
+/*
+ *  prc_config.c
+ */
+#define exc_tbl						_kernel_exc_tbl
+#define vector_table				_kernel_vector_table
+#define lock_flag					_kernel_lock_flag
+#define saved_iipm					_kernel_saved_iipm
+#define intnest						_kernel_intnest
+#define default_exc_handler			_kernel_default_exc_handler
+#define default_int_handler			_kernel_default_int_handler
+#define x_config_int				_kernel_x_config_int
+#define prc_initialize				_kernel_prc_initialize
+#define prc_terminate				_kernel_prc_terminate
+#define bitpat_cfgint				_kernel_bitpat_cfgint
+
+/*
+ *  prc_support.S
+ */
+#define int_entry					_kernel_int_entry
+#define exc_entry					_kernel_exc_entry
+#define ret_int						_kernel_ret_int
+#define ret_exc						_kernel_ret_exc
+#define svc_handler					_kernel_svc_handler
+
+#ifdef TOPPERS_LABEL_ASM
+
+/*
+ *  prc_config.c
+ */
+#define _exc_tbl					__kernel_exc_tbl
+#define _vector_table				__kernel_vector_table
+#define _lock_flag					__kernel_lock_flag
+#define _saved_iipm					__kernel_saved_iipm
+#define _intnest					__kernel_intnest
+#define _default_exc_handler		__kernel_default_exc_handler
+#define _default_int_handler		__kernel_default_int_handler
+#define _x_config_int				__kernel_x_config_int
+#define _prc_initialize				__kernel_prc_initialize
+#define _prc_terminate				__kernel_prc_terminate
+#define _bitpat_cfgint				__kernel_bitpat_cfgint
+
+/*
+ *  prc_support.S
+ */
+#define _int_entry					__kernel_int_entry
+#define _exc_entry					__kernel_exc_entry
+#define _ret_int					__kernel_ret_int
+#define _ret_exc					__kernel_ret_exc
+#define _svc_handler				__kernel_svc_handler
+
+#endif /* TOPPERS_LABEL_ASM */
+
+
+#endif /* TOPPERS_PRC_RENAME_H */
Index: /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_sil.h
===================================================================
--- /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_sil.h	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_sil.h	(revision 411)
@@ -0,0 +1,94 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2013 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ * 
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ * 
+ *  @(#) $Id: prc_sil.h 1304 2008-08-27 07:28:36Z ertl-honda $
+ */
+
+/*
+ *   sil.hのプロセッサ依存部（ARM-M用）
+ */
+
+#ifndef TOPPERS_PRC_SIL_H
+#define TOPPERS_PRC_SIL_H
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  NMIを除くすべての割込みの禁止
+ */
+Inline bool_t
+TOPPERS_disint(void)
+{
+	uint32_t val;
+
+	Asm("mrs  %0, PRIMASK" : "=r"(val));
+	Asm("cpsid i":::"memory");
+
+	if (val == 1) {
+		return (true);
+	}
+	else {
+		return (false);
+	}
+}
+
+Inline void
+TOPPERS_enaint(bool_t locked)
+{
+	if (!locked) {
+	  Asm("cpsie i":::"memory");
+	}
+}
+
+/*
+ *  全割込みロック状態の制御
+ */
+#define SIL_PRE_LOC      bool_t  TOPPERS_locked
+#define SIL_LOC_INT()    ((TOPPERS_locked = TOPPERS_disint()))
+#define SIL_UNL_INT()    (TOPPERS_enaint(TOPPERS_locked))
+
+/*
+ *  エンディアンの定義
+ */
+
+#define SIL_ENDIAN_LITTLE
+
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+#endif /* TOPPERS_PRC_SIL_H */
Index: /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_stddef.h
===================================================================
--- /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_stddef.h	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_stddef.h	(revision 411)
@@ -0,0 +1,62 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ * 
+ *  @(#) $Id: prc_stddef.h 1304 2008-08-27 07:28:36Z ertl-honda $
+ */
+
+/*
+ *  t_stddef.hのプロセッサ依存部（ARM-M用）
+ *
+ *  このインクルードファイルは，target_stddef.h（または，そこからインク
+ *  ルードされるファイル）のみからインクルードされる．他のファイルから
+ *  直接インクルードしてはならない．
+ */
+
+#ifndef TOPPERS_PRC_STDDEF_H
+#define TOPPERS_PRC_STDDEF_H
+
+/*
+ *  ターゲットを識別するためのマクロの定義
+ */
+#define TOPPERS_ARM_M           /* プロセッサ略称 */
+
+/*
+ *  スタックの型
+ *  ARMでは，スタックを8byte境界に配置する必要がある
+ */
+#define TOPPERS_STK_T  long long
+
+#endif /* TOPPERS_PRC_STDDEF_H */
Index: /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_support.S
===================================================================
--- /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_support.S	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_support.S	(revision 411)
@@ -0,0 +1,377 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2010 by Meika Sugimoto
+ *  Copyright (C) 2013 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ * 
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ * 
+ */
+
+/*
+ *  プロセッサ依存モジュール アセンブリ言語部（ARM-M用）
+ */
+
+#define TOPPERS_MACRO_ONLY
+#define UINT_C(val)		(val)		/* uint_t型の定数を作るマクロ */
+#define ULONG_C(val)	(val)		/* ulong_t型の定数を作るマクロ */
+#define CAST(type, val)	(val)		/* 型キャストを行うマクロ */
+
+#include "kernel_impl.h"
+#include "arm_m.h"
+
+
+	.text
+
+/*
+ *  外部参照
+ */
+	.global		intnest
+
+/*
+ *  CPU例外エントリ
+ *
+ *  割込みエントリと処理の内容は同等だが，ログの種類が異なるため，
+ *  分けている．
+ */
+	.align 2
+	.syntax unified
+	.code 16
+	.global exc_entry
+	.type exc_entry, function
+	/*
+	 *  例外/割込みが発生すると，スタック(MSP)にスクラッチレジスタ等が保存される．
+	 *  この内容に加えて，CPU例外ハンドラへの情報として，
+	 *  EXC_RETURNの情報を保存する．
+	 *
+	 *   ----------- <----- p_excinf
+	 *  | EXC_RETURN|  
+	 *   -----------
+	 *  |    R0     |  
+	 *   -----------
+	 *  |    R1     |
+	 *   -----------
+	 *  |    R2     |
+	 *   -----------
+	 *  |    R3     |
+	 *   -----------
+	 *  |    R12    |
+	 *   -----------
+	 *  |    LR     |
+	 *   -----------
+	 *  |    PC     |
+	 *   -----------
+	 *  |   xPSR    |
+	 *   -----------
+	 *
+	 */
+exc_entry:
+	cpsid i     	/* 外部割込み禁止 */
+	push  {lr}  	/* EXC_RETURN を積む			  */
+	mov   r0, sp	/* CPU例外ハンドラへの引数となる */
+	
+	/* 割込みネスト数の加算 */
+	ldr r1 , =intnest
+	ldr r3 , [r1]
+	adds r3 , #1
+	str r3 , [r1]
+
+	/*
+	 *  共通処理
+	 */
+exc_entry_2:
+	/* ハンドラアドレスを取得 */
+	mrs   r2, ipsr   	// r2: 例外番号
+	ldr   r1, =_kernel_exc_tbl
+	lsls  r3, r2 , #2	// r3 = r2 * 4  (r3:テーブル先頭からのオフセット)
+	adds  r3, r3, r1	// r3 = r3 + r1 (r3:要素の格納アドレス)
+	ldr   r1, [r3]  	// r1:ハンドラ起動アドレス
+	
+#ifdef LOG_EXC_ENTER
+	push  {r0, r2, r3}
+	mov   r0, r2            /* 例外番号をパラメータに  */
+	bl    log_exc_enter     /* log_exc_enterを呼び出す */
+	pop   {r0, r2, r3}  	// r0:SP, r2:割込み番号
+#endif /* LOG_EXC_ENTER */
+
+#ifdef LOG_EXC_LEAVE
+	push  { r2 }            /* 例外番号をスタックへ    */
+#endif /* LOG_EXC_LEAVE */
+
+	/*
+	 *  CPU例外ハンドラの呼び出し
+	 */
+	cpsie i                 /* ロック解除 */
+	blx   r1
+	cpsid i                 /* ロック */
+
+#ifdef LOG_EXC_LEAVE
+	pop   { r0 }                 /* 例外番号を引数に        */
+	bl    log_exc_leave          /* log_exc_leaveを呼び出す */
+#endif /* LOG_EXC_LEAVE */
+	
+	b     ret_exc
+
+
+/*
+ *  割込みエントリ
+ */
+	.align 2
+	.syntax unified
+	.code 16
+	.global int_entry
+	.type int_entry, function
+int_entry:
+	cpsid i     	/* 外部割込み禁止 */
+	push  {lr}  	/* EXC_RETURN を積む */
+	mov   r0, sp	/* 未定義の割込みが発生した場合の情報とする */
+	
+	/*
+	 *	共通処理
+	 */
+int_entry_2:
+	/* 割込みネスト数の加算 */
+	ldr r1 , =intnest
+	ldr r3 , [r1]
+	adds r3 , #1
+	str r3 , [r1]
+	
+	/* ハンドラアドレスを取得 */
+	mrs   r2, ipsr   	// r2: 割込み番号
+	ldr   r1, =_kernel_exc_tbl
+	lsls  r3, r2 , #2	// r3 = r2 * 4  (r3:テーブル先頭からのオフセット)
+	adds  r3, r3, r1	// r3 = r3 + r1 (r3:要素の格納アドレス)
+	ldr   r1, [r3]  	// r1:ハンドラ起動アドレス
+
+#ifdef LOG_INH_ENTER
+	push  {r0,r2,r3}
+	mov   r0, r2        	/* 割込み番号をパラメータに  */
+	bl    log_inh_enter 	/* log_inh_enterを呼び出す */
+	pop   { r0,r2,r3 }  	/* r0:SP, r2:割込み番号 */
+#endif /* LOG_INH_ENTER */
+
+#ifdef LOG_INH_LEAVE
+	push  { r2 }        	/* 割込み番号をスタックへ    */
+#endif /* LOG_INH_LEAVE */
+
+	/*
+	 *  割込みハンドラの呼び出し
+	 */
+	cpsie i                 /* ロック解除 */
+	blx   r1
+	cpsid i                 /* ロック */
+	
+#ifdef LOG_INH_LEAVE
+	pop   { r0 }                   /* 割込み番号を引数に        */
+	bl    log_inh_leave          /* log_inh_leaveを呼び出す */
+#endif /* LOG_INH_LEAVE */
+
+/*
+ *  割込み/例外出口
+ *
+ *  ret_exc/ret_intは，CPU例外/割込みハンドラから戻った直後に実行する
+ *  ルーチンである．
+ */
+ret_exc:
+ret_int:
+	/*
+	 *  ここで割込みロック状態とするが，すでにPRIMASK.PMをセットしており
+	 *  ここで特別に行うことはない
+	 */
+	/*
+	 *  戻り先のコンテキストの判定
+	 * 
+	 *  intnestが0かどうかで判断する
+	 *  
+	 */
+	/* 割込みネスト数の減算 */
+	ldr r1 , =intnest
+	ldr r3 , [r1]
+	adds r3 , #-1
+	str r3 , [r1]
+	
+	cmp   r3 , #0
+	beq   ret_int_2
+
+	/*
+	 * 割込み出口(ディスパッチなし)
+	 *
+	 * 単純に，割込み発生元へ戻る
+	 */
+ret_int_1:
+	/*
+	 *  CPUロック状態（PRIMASKがセットされた状態），Handlerモードでくる．
+	 *  ThreadモードへのリターンによりPRIMASKの状態が変化しないため
+	 *  リターン前に解除する．
+	 */ 
+	pop		{ r2 }	/* EXC_RETURN --> r2 */
+	cpsie	i
+	bx	  r2      	/* 割込み(or 例外)発生元リターン */
+	
+	/*
+	 * タスクコンテキストからの割込みの場合
+	 */
+ret_int_2:
+	ldr   r0, =reqflg             /* reqflgがfalseならそのまま戻る */
+	ldr   r1, [r0]
+	cmp   r1 , #0
+	beq    ret_int_1           /* falseならret_int_1へ(そのままリターン) */
+
+	/*
+	 * ディスパッチする場合
+	 */
+ret_int_3:
+	movs   r1, #0                   /* reqflgをfalseに */
+	str   r1, [r0]
+	
+	/*
+	 *  Threadモードへ移行する．
+	 *
+	 *  search_schedtsk や run_taskを呼び出す場合は，
+	 *  Threadモード，CPUロック状態である必要がある．
+	 *  CPUロック状態については既にCPUロックのため，特に行うことはない．
+	 *
+	 *  Threadモードへの移行には(MSP)スタック上にダミーの例外フレームを置いて，
+	 *  擬似的に割込みハンドラからリターンする．
+	 */
+	pop 	{r2}            	  /* EXC_RETURN --> r2 */
+	ldr   r0, =ret_int_4		  /* PC   */
+	ldr   r1, =EPSR_T			  /* xPSR(Tビットが'1'である必要がある) */
+	stm sp!, {r0-r1}			  /* ダミーフレームをスタック上に積む	*/
+	sub   sp, #(EXC_FRAME_SIZE - (4*2)) /* r0-r3,r12,lrの内容は設定する必要がない */
+	cpsie	i
+	bx	  r2					  /* Threadモードへ移行 */
+
+	/*
+	 * ここは Thread モードで動作
+	 * 割込み発生時にpushされたレジスタの内容を復帰してリターンする
+	 */
+ret_int_4:
+	bl    search_schedtsk		/* 割込み中で起動されたタスクを実行 */
+	bl    run_task
+ret_int_r:
+	ldr 	r0, [sp, #(EXC_FRAME_SIZE-(4*4))]	// R12
+	mov 	r12, r0
+	ldr 	r0, [sp, #(EXC_FRAME_SIZE-(4*3))]	// LR
+	mov 	lr, r0
+	ldr 	r0, [sp, #(EXC_FRAME_SIZE-(4*2))]	// PC
+	movs 	r1, #1    	// フラグに影響があるので，xpsrを戻す前に先に処理する
+	orrs 	r0, r0, r1	// bit0を1にする(ARMv6-Mは常にThumb実行状態で動作)
+	ldr 	r2, [sp, #(EXC_FRAME_SIZE-(4*1))]	// xPSR
+	msr 	xpsr_nzcvq, r2
+	str 	r0, [sp, #(EXC_FRAME_SIZE-(4*1))]	// 元xPSRの位置にPCの値を置く
+	ldmfd 	sp!, {r0-r3}
+	add 	sp, sp, #(4*3)  	// sp += (4*3)
+	cpsie	i
+	pop 	{pc}	// リターン
+
+/*
+ *  SVCコールハンドラ(ここは本来不要なので，削除予定)
+ */
+	.align	2
+	.thumb
+	.thumb_func
+	.globl kernel_svc_handler
+	.type kernel_svc_handler, function
+kernel_svc_handler:
+	cpsie i					/* CPUロック解除状態へ */
+	bx		lr				/* リターン	  */
+
+/*
+ *  ディスパッチャの動作開始
+ */
+	.align	2
+	.thumb
+	.thumb_func
+	.globl start_dispatch
+	.type start_dispatch, function
+start_dispatch:
+	/*
+	 *  このルーチンは，カーネル起動時に，すべての割込みを禁止した状態
+	 * （割込みロック状態と同等）で呼び出される．
+	 *  また，Threadモードで呼び出されることを想定している．
+	 *
+	 *  ここでは，システムの状態をCPUロック状態，割込み優先度マスク全解除状態，
+	 *  ディスパッチ許可状態に移行させ，スタックポインタを初期化し，
+	 *  dispatcher(task.c) へジャンプする．
+	 *
+	 *  CPUロック状態と割込みロック状態は共にPRIMASKで制御するよう定義しているため
+	 *  すでにシステムはCPUロック状態になっている．
+	 *  割込み優先度マスクについては，システム起動時には(プロセッサの)実行優先度が
+	 *  最低レベルの優先度であるため，(割込み処理モデルの)割込み優先度マスク全解除状態と
+	 *  同等の状態になっている．
+	 *  さらに，task_initializeでdisdspをfalseに初期化しているため，
+	 *  ディスパッチ許可状態になっている．
+	 */
+	ldr   r0,=istkpt              /* MSPを初期化   */
+	ldr   r1,[r0]                 /* start_dispatch呼び出し時に呼び出し用に */
+	msr   msp, r1                 /* 使用しているため初期化する             */
+	b	  dispatcher
+
+/*
+ *  カーネルの終了処理の呼出し
+ *
+ *  スタックを初期化
+ *  
+ */
+	.text
+	.syntax unified
+	.code 16
+	.globl call_exit_kernel
+	.type call_exit_kernel, function
+call_exit_kernel:
+	ldr   r0,=istkpt              /* MSPを初期化   */
+	ldr   r1,[r0]                 /* start_dispatch呼び出し時に呼び出し用に */
+	msr   msp, r1                 /* 使用しているため初期化する             */
+	b     exit_kernel       /* カーネルの終了処理を呼ぶ */
+
+
+/*
+ *  微少時間待ち(定数値 SIL_DLY_TIMx については未検証)
+ */
+	.text
+	.syntax unified
+	.code 16
+	.globl sil_dly_nse
+	.type sil_dly_nse, function
+sil_dly_nse:
+	subs   r0, r0, #SIL_DLY_TIM1
+	cmp   r0, #0
+	bgt   sil_dly_nse1
+	mov   pc, lr
+sil_dly_nse1:
+	subs   r0, r0, #SIL_DLY_TIM2
+	cmp   r0, #0
+	bgt   sil_dly_nse1
+	mov   pc, lr
Index: /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_test.h
===================================================================
--- /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_test.h	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_test.h	(revision 411)
@@ -0,0 +1,55 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ * 
+ *  @(#) $Id: prc_test.h 1304 2008-08-27 07:28:36Z ertl-honda $
+ */
+
+/*
+ *		テストプログラムのチップ依存定義（ARM-M用）
+ */
+
+#ifndef TOPPERS_CHIP_TEST_H
+#define TOPPERS_CHIP_TEST_H
+
+/*
+ *  チップで共通な定義
+ */
+#if 0 // サンプルで例外は使わない
+#define CPUEXC1				6		/* Usage Fault */
+#define RAISE_CPU_EXCEPTION Asm("mcr p15, 0, r1, c2, c0, 0");
+#define CANNOT_RETURN_CPUEXC
+#endif
+#endif /* TOPPERS_CHIP_TEST_H */
Index: /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_timer.c
===================================================================
--- /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_timer.c	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_timer.c	(revision 411)
@@ -0,0 +1,108 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2010 by Meika Sugimoto
+ * 
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ * 
+ *  @(#) $Id: prc_timer.c 1304 2008-08-27 07:28:36Z ertl-honda $
+ */
+
+/*
+ *  タイマドライバ（SYSTIC用）
+ */
+#include <sil.h>
+#include "kernel_impl.h"
+#include "target_timer.h"
+#include "time_event.h"
+
+/*
+ *  タイマの起動処理
+ */
+void
+target_timer_initialize(intptr_t exinf)
+{
+	CLOCK    cyc;
+	uint32_t tmp;
+
+#ifdef SYSTIC_USE_CALIBRATION
+	/* CALIBRATIONレジスタの値を使用 */
+	cyc = (sil_rew_mem((void *)SYSTIC_CALIBRATION) & SYSTIC_TENMS) / 10;
+#else 
+	cyc = TO_CLOCK(TIC_NUME, TIC_DENO) - 1;
+#endif /* SYSTIC_USE_CALIBRATION */
+
+	/* 停止 */
+	tmp = sil_rew_mem((void *)SYSTIC_CONTROL_STATUS);
+	tmp &= ~SYSTIC_ENABLE;
+	sil_wrw_mem((void *)SYSTIC_CONTROL_STATUS, tmp);
+
+	sil_wrw_mem((void *)SYSTIC_RELOAD_VALUE, cyc);
+	sil_wrw_mem((void *)SYSTIC_CURRENT_VALUE, cyc);
+
+	tmp = sil_rew_mem((void *)SYSTIC_CONTROL_STATUS);
+
+#ifdef SYSTIC_USE_STCLK
+	/* 外部クロックの使用 */
+	tmp |= SYSTIC_ENABLE;
+#else
+	/* プロセッサクロックの使用 */
+	tmp |= SYSTIC_ENABLE|SYSTIC_CLKSOURCE;
+#endif /* SYSTIC_USE_STCLK */
+
+	sil_wrw_mem((void *)SYSTIC_CONTROL_STATUS, tmp);
+}
+
+/*
+ *  タイマの停止処理
+ */
+void
+target_timer_terminate(intptr_t exinf)
+{
+	/* タイマを停止 */
+	sil_wrw_mem((void*)SYSTIC_CONTROL_STATUS, 0x00);
+}
+
+/*
+ *  タイマ割込みハンドラ
+ */
+void
+target_timer_handler(void)
+{
+	/* probe_int のため，COUNTFLAGをクリア */
+	(void)sil_rew_mem((void *)SYSTIC_CONTROL_STATUS);
+	
+	i_begin_int(INTNO_TIMER);
+	signal_time();                    /* タイムティックの供給 */
+	i_end_int(INTNO_TIMER);
+}
Index: /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_timer.cfg
===================================================================
--- /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_timer.cfg	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_timer.cfg	(revision 411)
@@ -0,0 +1,11 @@
+/*
+ *  @(#) $Id: prc_timer.cfg 1304 2008-08-27 07:28:36Z ertl-honda $
+ */
+
+/*
+ *		タイマドライバのコンフィギュレーションファイル
+ */
+ATT_INI({ TA_NULL, 0, target_timer_initialize });
+ATT_TER({ TA_NULL, 0, target_timer_terminate });
+DEF_INH(INHNO_TIMER, { TA_NULL, target_timer_handler });
+CFG_INT(INTNO_TIMER, { TA_ENAINT|INTATR_TIMER, INTPRI_TIMER });
Index: /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_timer.h
===================================================================
--- /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_timer.h	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_timer.h	(revision 411)
@@ -0,0 +1,112 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ * 
+ *  @(#) $Id: prc_timer.h 1304 2008-08-27 07:28:36Z ertl-honda $
+ */
+
+/*
+ *  タイマドライバ（SYSTIC用）
+ */
+
+#ifndef TOPPERS_PRC_TIMER_H
+#define TOPPERS_PRC_TIMER_H
+
+#include <sil.h>
+
+/*
+ *  タイマ割込みハンドラ登録のための定数
+ */
+#define INHNO_TIMER     IRQNO_SYSTICK /* 割込みハンドラ番号 */
+#define INTNO_TIMER     IRQNO_SYSTICK /* 割込み番号 */
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  タイマ値の内部表現の型
+ */
+typedef uint32_t    CLOCK;
+
+/*
+ *  タイマ値の内部表現とミリ秒・μ秒単位との変換
+ *
+ */
+#define TO_CLOCK(nume, deno)    ((CLOCK)(TIMER_CLOCK * (nume) / (deno)))
+#define TO_USEC(clock)          (((SYSUTM) clock) * 1000U / TIMER_CLOCK)
+
+/*
+ *  設定できる最大のタイマ周期（単位は内部表現）
+ */
+#define MAX_CLOCK    ((CLOCK) 0x00ffffffU)
+
+/*
+ *  タイマの起動処理
+ *
+ *  タイマを初期化し，周期的なタイマ割込み要求を発生させる．
+ */
+extern void target_timer_initialize(intptr_t exinf);
+
+/*
+ *  タイマの停止処理
+ *
+ *  タイマの動作を停止させる．
+ */
+extern void target_timer_terminate(intptr_t exinf);
+
+/*
+ *  タイマの現在値の読出し
+ */
+Inline CLOCK
+target_timer_get_current(void)
+{
+	return(TO_CLOCK(TIC_NUME, TIC_DENO) - sil_rew_mem((void*)SYSTIC_CURRENT_VALUE));
+}
+
+/*
+ *  タイマ割込み要求のチェック
+ */
+Inline bool_t
+target_timer_probe_int(void)
+{
+	return((sil_rew_mem((void*)SYSTIC_CONTROL_STATUS) & SYSTIC_COUNTFLAG) == SYSTIC_COUNTFLAG);
+}
+
+/*
+ *  タイマ割込みハンドラ
+ */
+extern void target_timer_handler(void);
+
+#endif /* TOPPERS_MACRO_ONLY */
+#endif /* TOPPERS_PRC_TIMER_H */
Index: /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_unrename.h
===================================================================
--- /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_unrename.h	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_unrename.h	(revision 411)
@@ -0,0 +1,60 @@
+/* This file is generated from prc_rename.def by genrename. */
+
+/* This file is included only when prc_rename.h has been included. */
+#ifdef TOPPERS_PRC_RENAME_H
+#undef TOPPERS_PRC_RENAME_H
+
+/*
+ *  prc_config.c
+ */
+#undef exc_tbl
+#undef vector_table
+#undef lock_flag
+#undef saved_iipm
+#undef intnest
+#undef default_exc_handler
+#undef default_int_handler
+#undef x_config_int
+#undef prc_initialize
+#undef prc_terminate
+#undef bitpat_cfgint
+
+/*
+ *  prc_support.S
+ */
+#undef int_entry
+#undef exc_entry
+#undef ret_int
+#undef ret_exc
+#undef svc_handler
+
+#ifdef TOPPERS_LABEL_ASM
+
+/*
+ *  prc_config.c
+ */
+#undef _exc_tbl
+#undef _vector_table
+#undef _lock_flag
+#undef _saved_iipm
+#undef _intnest
+#undef _default_exc_handler
+#undef _default_int_handler
+#undef _x_config_int
+#undef _prc_initialize
+#undef _prc_terminate
+#undef _bitpat_cfgint
+
+/*
+ *  prc_support.S
+ */
+#undef _int_entry
+#undef _exc_entry
+#undef _ret_int
+#undef _ret_exc
+#undef _svc_handler
+
+#endif /* TOPPERS_LABEL_ASM */
+
+
+#endif /* TOPPERS_PRC_RENAME_H */
Index: /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_user.txt
===================================================================
--- /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_user.txt	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/armv6_m_gcc/prc_user.txt	(revision 411)
@@ -0,0 +1,212 @@
+=====================================================================
+                         ARMV6-M プロセッサ依存部
+                                  Last Modified: '15/05/21
+=====================================================================
+
+
+(1) 対応しているターゲットシステムの種類・構成
+
+ARMV6-M依存部は，ARMV6-Mアーキテクチャをターゲットとしている．ARMV6-Mは，
+ARMとは異なり，ARM命令を実行できないため，ARM依存部と分けている．
+また，ARMV7-Mアーキテクチャに対してもレジスタ構成や利用可能な命令セットが異なるため，
+ARM-M依存部から分けて管理している．
+
+（注）
+ARMV6-M依存部は，TOPPERS/SSP に含まれるARM-M依存部を ARMV6-M アーキテクチャをもつ
+プロセッサ向けに対応させたものである．
+ARMV6-Mプロセッサには一部不要と思われる定義（例外番号など）も含まれるが，
+コンフィギュレーターで事前にチェック可能と思われる部分もあるためビルドや動作に支障が生じる
+部分を除き，現状オリジナルのままとしている．
+
+(2) 使用する開発環境と動作検証した条件（バージョン，オプション等）
+
+カーネルはGCCを用いてコンパイルする．動作確認したバージョンは各ターゲ
+ット依存部のドキュメントに記載する．
+
+
+(3) ターゲット定義事項の規定
+
+(3-1) データ型に関する規定
+
+データ型は arch/gcc/tool_stddef.h で定義されている内容で，float型と
+double型は，それぞれIEEE754準拠の単精度浮動小数点数と倍精度浮動小数点
+数である．
+
+(3-2) 割込み処理に関する規定
+
+○割込みハンドラ番号と割込み番号の割当て，両者の対応
+
+割込みハンドラ番号と割込み番号は，例外発生時にIPSRにセットされる例外番
+号を用いる．SYSTICKは15番で，外部割込みは16番からの番号が割り付けられ
+ている．
+
+○割込み優先度の段階数（TMIN_INTPRIの値），その設定方法
+
+割込み優先度の段階数は，SoC毎にハードウェア的にサポートする割込み優先
+度ビット幅が異なるので，ターゲット依存部毎に異なる．ターゲット依存部で
+は，割込み優先度のビット幅（TBITW_IPRI）とその割込み優先度中のサブ優先
+度のビット幅（TBITW_SUBPRI）を定義する．各ビット幅の値と設定可能な優先
+度の範囲は次の通りである．
+
+   -(2^(TBIW_IPRI)) + (2^TBITW_SUBIPRI)) 〜 -1
+
+例えば優先度のビット幅(TBITW_IPRI)が8bit，サブ優先度のビット幅
+(TBITW_SUBIPRI) が1bitの場合は，-254 〜 -1 の範囲である．
+
+この範囲で，カーネル管理内の割込みの最高優先度（TMIN_INTPRI）をターゲ
+ット依存部で設定する．
+
+各割込みの割込み優先度は，CFG_INTでTMIN_INTPRI以上の値を指定する．
+
+○dis_intとena_intのサポートの有無，その制限事項
+
+dis_intとena_intをサポートする．制限事項は特にない．
+
+○CFG_INTの制限事項と拡張（ターゲット定義で使用できる割込み属性）
+
+CFG_INTの制限事項はなく，ターゲット定義で使用可能な割込み属性は特にな
+い．
+
+○カーネル管理外の割込み
+
+ARMv6では割込みマスクレベルをソフトウェアで制御できないため，
+カーネル管理外の割込みはサポートしない．
+
+
+(3-3) CPU例外処理に関する規定
+
+○CPU例外ハンドラ番号
+
+CPU例外ハンドラ番号としては，例外発生時にIPSRにセットされる例外番号
+を用いる．各例外の例外番号は以下の通りである．
+
+        例外              例外番号
+  Reset                      1
+  Non-makable Interrupt      2
+  Hard Fault                 3
+  SVCall                    11
+  PendSV                    14
+  SysTick(オプション)       15
+  外部割込み0(IRQ0)         16
+  外部割込み1(IRQ1)         17
+  ..
+
+なお，Resetと，SVCallについては，カーネルが使用するため，ユーザーは使
+用することができない．
+
+
+(3-4) CPUロック・割込みロック
+
+CPUロックおよび割込みロックは，PRIMASKを'1'に設定することで実現している．
+(注) ARMv6-MではBASEPRIおよびFAULTMASKを利用することができない．
+
+(3-5) 性能評価用システム時刻の参照に関する規定
+
+ARMv6-M版ではget_utmをサポートしない．
+
+(3-6) スタートアップルーチンでの初期化内容
+
+スタートアップルーチンは，Threadモードで呼び出されることを前提としてい
+る．実行後，割込みロック状態（PRIMASKをセット）とする．割込みロック
+状態は，カーネルの初期化終了時に許可する．スタートアップルーチンで，
+MSPをアクティブなスタックとし，MSPの内容を初期化するためには，INIT_MSP
+をターゲット依存部で定義する．
+
+(3-7) ベクタテーブルオフセットの初期化
+
+プロセッサ依存の初期化処理で，Vector Table Offset Register をターゲッ
+ト依存部の初期化ルーチンで設定する．なお，ベクターテーブルは，.vector
+のセクション属性が付加されているため，リンカスクリプトでこのセクション
+を指定して配置する．
+
+
+(4) タイマドライバ関連の情報
+
+カーネルのタイムティックとして，SYSTICを使用する場合は，prc_config.c 
+をコンパイル対象とし，コンフィギュレーションファイルに prc_config.cfg 
+を指定すること．
+
+周期の基本は1msecとする．周期をCALIBRATIONレジスタの設定内容を元に計算
+する場合は，SYSTIC_USE_CALIBRATION を定義する．CALIBRATIONレジスタを用
+いない場合は，1msec周期分のカウント値を TIMER_CLOCK に設定する．クロッ
+クソースとして，外部クロックを用いる場合は，SYSTIC_USE_STCLK を用いる．
+
+
+(5) ターゲット依存部での設定項目
+
+ターゲット依存部では以下のマクロを定義する必要がある．
+
+   ・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) ディレクトリ構成・ファイル構成
+  ./arch/armv6_m_gcc/
+    ./Makefile.prc
+    ./arm_m.h
+    ./prc.tf
+    ./prc_cfg1_out.h
+    ./prc_check.tf
+    ./prc_config.c
+    ./prc_config.h
+    ./prc_def.csv
+    ./prc_insn.h
+    ./prc_kernel.h
+    ./prc_rename.def
+    ./prc_rename.h
+    ./prc_sil.h
+    ./prc_stddef.h
+    ./prc_support.S
+    ./prc_test.h
+    ./prc_timer.c
+    ./prc_timer.cfg
+    ./prc_timer.h
+    ./prc_unrename.h
+    ./prc_user.txt
+    ./start.S
+
+(12) バージョン履歴
+
+2015/05/21
+・SSP-1.3.0 に対応
+
+2014/03/10
+ ・オリジナルのARM-M依存部と分けて併存できるようにするため，
+   アーキテクチャ名を ARM-M から ARMV6-M とした
+
+2013/06/20
+ ・ARMv6アーキテクチャ向けに変更
+・コンテキスト判別をネストカウンタを用いる方法に変更
+
+2008/08/22
+ ・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
+ ・最初のリリース
+
+2013/04/07
+ ・例外処理発生時に割込み/CPU例外発生回数のインクリメントが行われていなかった
+   問題の修正
Index: /ssp_armv6_m_gcc/trunk/armv6_m_gcc/start.S
===================================================================
--- /ssp_armv6_m_gcc/trunk/armv6_m_gcc/start.S	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/armv6_m_gcc/start.S	(revision 411)
@@ -0,0 +1,147 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2013-2015 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ * 
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ * 
+ *  @(#) $Id: start.S 1304 2008-08-27 07:28:36Z ertl-honda $
+ */
+                
+/*
+ *   カーネル用のスタートアップモジュール(ARM-M用)
+ */
+#define TOPPERS_MACRO_ONLY
+#define UINT_C(val)		(val)		/* uint_t型の定数を作るマクロ */
+#define ULONG_C(val)	(val)		/* ulong_t型の定数を作るマクロ */
+#define CAST(type, val)	(val)		/* 型キャストを行うマクロ */
+
+#include "kernel_impl.h"
+#include "arm_m.h"
+
+/*
+ *  スタートアップルーチン
+ *
+ *  Threadモードで呼び出されることを前提としてる．
+ */
+	.text
+	.align 2
+	.code 16
+	.syntax unified
+	.globl _start
+	.type _start, function
+_start:
+	cpsid i                 /* 割込みロック状態へ */
+
+#ifdef INIT_MSP
+	/*
+	 * MSPの設定
+	 */
+	mov   r0, #CONTROL_MSP  /* MSPを有効に  */
+	msr   control, r0
+	isb                     /* control の操作後に必要 */
+	ldr  r0,=_kernel_istkpt
+	ldr  r1,[r0]
+	msr  msp, r1
+#endif /* INIT_MSP */
+
+	/*
+	 * hardware_init_hookの呼び出し （0でない場合）
+	 *
+	 * ターゲットハードウェアに依存して必要な初期化処理がある場合
+	 * は，hardware_init_hook という関数を用意する
+	 */
+	ldr  r0, =hardware_init_hook
+	cmp  r0, #0
+	beq  start_1
+	blx  r0
+
+start_1:
+#ifndef OMIT_BSS_INIT
+	/*
+	 *  BSSセクション初期化
+	 */
+	movs  r0, #0
+	ldr  r1, =__bss_start
+	ldr  r2, =__bss_end
+	cmp  r1, r2
+	bhs  start_3
+start_2:
+	str  r0, [r1]
+	adds r1,r1, #4
+	cmp  r1, r2
+	blo  start_2
+#endif /* OMIT_BSS_INIT */
+
+
+start_3:
+
+#ifndef OMIT_DATA_INIT
+	/*
+	 *  DATAセクション初期化
+	 *  __idata_start から __idata_end までを，__data_start 以降に
+	 *  コピーする
+	 */
+	ldr  r1, =__idata_start
+	ldr  r2, =__idata_end
+	cmp  r1, r2
+	bhs  start_5
+	ldr  r3, =__data_start
+start_4:
+	ldr  r0, [r1]
+	str  r0, [r3]
+	adds  r1, #4
+	adds  r3, #4
+	cmp  r1, r2
+	blo  start_4
+#endif /* OMIT_DATA_INIT */
+
+	/*
+	 *  software_init_hook を呼出し（0 でない場合）
+	 *
+	 *  ソフトウェア環境（特にライブラリ）に依存して必要な初期化処
+	 *  理がある場合は，software_init_hook という関数を用意すれば
+	 *  よい．
+	 */
+start_5:
+	ldr  r0, =software_init_hook
+	cmp  r0, #0
+	beq  start_6
+	blx  r0
+
+start_6:
+	bl   sta_ker
+
+l_end:
+	b   l_end
Index: /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/E_PACKAGE
===================================================================
--- /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/E_PACKAGE	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/E_PACKAGE	(revision 411)
@@ -0,0 +1,6 @@
+E_PACKAGE ssp_lpcxpresso_lpc812_gcc
+VERSION %date
+
+INCLUDE ../../MANIFEST
+INCLUDE ../../arch/armv6_m_gcc/MANIFEST
+INCLUDE ../../cfg/MANIFEST
Index: /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/LPC812M101FDH20.h
===================================================================
--- /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/LPC812M101FDH20.h	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/LPC812M101FDH20.h	(revision 411)
@@ -0,0 +1,478 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2013,2014 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ * 
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+*      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ * 
+ */
+
+#ifndef TOPPERS_LPC812M101FDH20_H
+#define TOPPERS_LPC812M101FDH20_H
+
+/*
+ *  CORTEX-M CPUの依存部のインクルード
+ */
+#include "armv6_m_gcc/arm_m.h"
+
+/*
+ *  プロセッサのエンディアン定義
+ *    LPC812 はリトルエンディアン
+ */
+#define SIL_ENDIAN_LITTLE
+
+/*
+ *  割込み番号の最大値
+ */
+#define TMAX_INTNO   (47)
+
+/*
+ *  割込み優先度のビット幅
+ */
+#define TBITW_IPRI     (2)
+
+/*
+ *  割込みベクタ番号定義
+ */
+#define INT_SPI0    	(16)
+#define INT_SPI1    	(17)
+
+#define INT_UART0   	(19)
+#define INT_UART1   	(20)
+#define INT_UART2   	(21)
+
+#define INT_I2C0    	(24)
+#define INT_SCT     	(25)
+#define INT_MRT     	(26)
+#define INT_CMP     	(27)
+#define INT_WDT     	(28)
+#define INT_BOD     	(29)
+
+#define INT_WKT     	(31)
+
+#define INT_PININT0 	(40)
+#define INT_PININT1		(41)
+#define INT_PININT2		(42)
+#define INT_PININT3		(43)
+#define INT_PININT4		(44)
+#define INT_PININT5		(45)
+#define INT_PININT6		(46)
+#define INT_PININT7		(47)
+
+
+/*
+ *  割込み優先度ビット幅中のサブ優先度のビット幅
+ */
+#define TBITW_SUBIPRI  0
+
+
+/*
+ * LPC812のレジスタ定義
+ */
+/* SYSCON */
+#define TADR_SYSCON_BASE 	(0x40048000)
+
+#define TOFFSET_SYSCON_SYSMEMREMAP 	(0x000)
+#define TOFFSET_SYSCON_PRESETCTRL   	(0x004)
+#define TOFFSET_SYSCON_SYSPLLCTRL  	(0x008)
+#define TOFFSET_SYSCON_SYSPLLSTAT  	(0x00C)
+#define TOFFSET_SYSCON_SYSOSCCTRL  	(0x020)
+#define TOFFSET_SYSCON_WDTOSCCTRL  	(0x024)
+#define TOFFSET_SYSCON_SYSRSTSTAT  	(0x030)
+#define TOFFSET_SYSCON_SYSPLLCLKSEL	(0x040)
+#define TOFFSET_SYSCON_SYSPLLCLKUEN	(0x044)
+#define TOFFSET_SYSCON_MAINCLKSEL  	(0x070)
+#define TOFFSET_SYSCON_MAINCLKUEN  	(0x074)
+#define TOFFSET_SYSCON_SYSAHBCLKDIV	(0x078)
+#define TOFFSET_SYSCON_SYSAHBCLKCTRL	(0x080)
+#define TOFFSET_SYSCON_UARTCLKDIV   	(0x094)
+#define TOFFSET_SYSCON_CLKOUTSEL    	(0x0E0)
+#define TOFFSET_SYSCON_CLKOUTUEN    	(0x0E4)
+#define TOFFSET_SYSCON_CLKOUTDIV    	(0x0E8)
+#define TOFFSET_SYSCON_UARTFRGDIV  	(0x0F0)
+#define TOFFSET_SYSCON_UARTFRGMULT  	(0x0F4)
+#define TOFFSET_SYSCON_EXTTRACECMD  	(0x0FC)
+#define TOFFSET_SYSCON_PIOPORCAP0  	(0x100)
+#define TOFFSET_SYSCON_IOCONCLKDIV6	(0x134)
+#define TOFFSET_SYSCON_IOCONCLKDIV5	(0x138)
+#define TOFFSET_SYSCON_IOCONCLKDIV4	(0x13C)
+#define TOFFSET_SYSCON_IOCONCLKDIV3	(0x140)
+#define TOFFSET_SYSCON_IOCONCLKDIV2	(0x144)
+#define TOFFSET_SYSCON_IOCONCLKDIV1	(0x148)
+#define TOFFSET_SYSCON_IOCONCLKDIV0	(0x14C)
+#define TOFFSET_SYSCON_BODCTRL     	(0x150)
+#define TOFFSET_SYSCON_SYSTCKCAL   	(0x154)
+#define TOFFSET_SYSCON_IRQLATENCY  	(0x170)
+#define TOFFSET_SYSCON_NMISRC      	(0x174)
+#define TOFFSET_SYSCON_PINTSEL0    	(0x178)
+#define TOFFSET_SYSCON_PINTSEL1    	(0x17C)
+#define TOFFSET_SYSCON_PINTSEL2    	(0x180)
+#define TOFFSET_SYSCON_PINTSEL3    	(0x184)
+#define TOFFSET_SYSCON_PINTSEL4    	(0x188)
+#define TOFFSET_SYSCON_PINTSEL5    	(0x18C)
+#define TOFFSET_SYSCON_PINTSEL6    	(0x190)
+#define TOFFSET_SYSCON_PINTSEL7    	(0x194)
+#define TOFFSET_SYSCON_STARTERP0   	(0x204)
+#define TOFFSET_SYSCON_STARTERP1   	(0x214)
+#define TOFFSET_SYSCON_PDSLEEPCFG   	(0x230)
+#define TOFFSET_SYSCON_PDAWAKECFG  	(0x234)
+#define TOFFSET_SYSCON_PDRUNCFG    	(0x238)
+#define TOFFSET_SYSCON_DEVICE_ID   	(0x3F8)
+
+#define TADR_SYSCON_SYSMEMREMAP 	(TADR_SYSCON_BASE + TOFFSET_SYSCON_SYSMEMREMAP )
+#define TADR_SYSCON_PRESETCTRL   	(TADR_SYSCON_BASE + TOFFSET_SYSCON_PRESETCTRL   )
+#define TADR_SYSCON_SYSPLLCTRL  	(TADR_SYSCON_BASE + TOFFSET_SYSCON_SYSPLLCTRL  )
+#define TADR_SYSCON_SYSPLLSTAT  	(TADR_SYSCON_BASE + TOFFSET_SYSCON_SYSPLLSTAT  )
+#define TADR_SYSCON_SYSOSCCTRL  	(TADR_SYSCON_BASE + TOFFSET_SYSCON_SYSOSCCTRL  )
+#define TADR_SYSCON_WDTOSCCTRL  	(TADR_SYSCON_BASE + TOFFSET_SYSCON_WDTOSCCTRL  )
+#define TADR_SYSCON_SYSRSTSTAT  	(TADR_SYSCON_BASE + TOFFSET_SYSCON_SYSRSTSTAT  )
+#define TADR_SYSCON_SYSPLLCLKSEL	(TADR_SYSCON_BASE + TOFFSET_SYSCON_SYSPLLCLKSEL)
+#define TADR_SYSCON_SYSPLLCLKUEN	(TADR_SYSCON_BASE + TOFFSET_SYSCON_SYSPLLCLKUEN)
+#define TADR_SYSCON_MAINCLKSEL  	(TADR_SYSCON_BASE + TOFFSET_SYSCON_MAINCLKSEL  )
+#define TADR_SYSCON_MAINCLKUEN  	(TADR_SYSCON_BASE + TOFFSET_SYSCON_MAINCLKUEN  )
+#define TADR_SYSCON_SYSAHBCLKDIV	(TADR_SYSCON_BASE + TOFFSET_SYSCON_SYSAHBCLKDIV)
+#define TADR_SYSCON_SYSAHBCLKCTRL	(TADR_SYSCON_BASE + TOFFSET_SYSCON_SYSAHBCLKCTRL)
+#define TADR_SYSCON_UARTCLKDIV   	(TADR_SYSCON_BASE + TOFFSET_SYSCON_UARTCLKDIV  )
+#define TADR_SYSCON_CLKOUTSEL    	(TADR_SYSCON_BASE + TOFFSET_SYSCON_CLKOUTSEL   )
+#define TADR_SYSCON_CLKOUTUEN    	(TADR_SYSCON_BASE + TOFFSET_SYSCON_CLKOUTUEN   )
+#define TADR_SYSCON_CLKOUTDIV    	(TADR_SYSCON_BASE + TOFFSET_SYSCON_CLKOUTDIV   )
+#define TADR_SYSCON_UARTFRGDIV  	(TADR_SYSCON_BASE + TOFFSET_SYSCON_UARTFRGDIV  )
+#define TADR_SYSCON_UARTFRGMULT  	(TADR_SYSCON_BASE + TOFFSET_SYSCON_UARTFRGMULT )
+#define TADR_SYSCON_EXTTRACECMD  	(TADR_SYSCON_BASE + TOFFSET_SYSCON_EXTTRACECMD )
+#define TADR_SYSCON_PIOPORCAP0  	(TADR_SYSCON_BASE + TOFFSET_SYSCON_PIOPORCAP0  )
+#define TADR_SYSCON_IOCONCLKDIV6	(TADR_SYSCON_BASE + TOFFSET_SYSCON_IOCONCLKDIV6)
+#define TADR_SYSCON_IOCONCLKDIV5	(TADR_SYSCON_BASE + TOFFSET_SYSCON_IOCONCLKDIV5)
+#define TADR_SYSCON_IOCONCLKDIV4	(TADR_SYSCON_BASE + TOFFSET_SYSCON_IOCONCLKDIV4)
+#define TADR_SYSCON_IOCONCLKDIV3	(TADR_SYSCON_BASE + TOFFSET_SYSCON_IOCONCLKDIV3)
+#define TADR_SYSCON_IOCONCLKDIV2	(TADR_SYSCON_BASE + TOFFSET_SYSCON_IOCONCLKDIV2)
+#define TADR_SYSCON_IOCONCLKDIV1	(TADR_SYSCON_BASE + TOFFSET_SYSCON_IOCONCLKDIV1)
+#define TADR_SYSCON_IOCONCLKDIV0	(TADR_SYSCON_BASE + TOFFSET_SYSCON_IOCONCLKDIV0)
+#define TADR_SYSCON_BODCTRL     	(TADR_SYSCON_BASE + TOFFSET_SYSCON_BODCTRL     )
+#define TADR_SYSCON_SYSTCKCAL   	(TADR_SYSCON_BASE + TOFFSET_SYSCON_SYSTCKCAL   )
+#define TADR_SYSCON_IRQLATENCY  	(TADR_SYSCON_BASE + TOFFSET_SYSCON_IRQLATENCY  )
+#define TADR_SYSCON_NMISRC      	(TADR_SYSCON_BASE + TOFFSET_SYSCON_NMISRC      )
+#define TADR_SYSCON_PINTSEL0    	(TADR_SYSCON_BASE + TOFFSET_SYSCON_PINTSEL0    )
+#define TADR_SYSCON_PINTSEL1    	(TADR_SYSCON_BASE + TOFFSET_SYSCON_PINTSEL1    )
+#define TADR_SYSCON_PINTSEL2    	(TADR_SYSCON_BASE + TOFFSET_SYSCON_PINTSEL2    )
+#define TADR_SYSCON_PINTSEL3    	(TADR_SYSCON_BASE + TOFFSET_SYSCON_PINTSEL3    )
+#define TADR_SYSCON_PINTSEL4    	(TADR_SYSCON_BASE + TOFFSET_SYSCON_PINTSEL4    )
+#define TADR_SYSCON_PINTSEL5    	(TADR_SYSCON_BASE + TOFFSET_SYSCON_PINTSEL5    )
+#define TADR_SYSCON_PINTSEL6    	(TADR_SYSCON_BASE + TOFFSET_SYSCON_PINTSEL6    )
+#define TADR_SYSCON_PINTSEL7    	(TADR_SYSCON_BASE + TOFFSET_SYSCON_PINTSEL7    )
+#define TADR_SYSCON_STARTERP0   	(TADR_SYSCON_BASE + TOFFSET_SYSCON_STARTERP0   )
+#define TADR_SYSCON_STARTERP1   	(TADR_SYSCON_BASE + TOFFSET_SYSCON_STARTERP1   )
+#define TADR_SYSCON_PDSLEEPCFG   	(TADR_SYSCON_BASE + TOFFSET_SYSCON_PDSLEEPCFG  )
+#define TADR_SYSCON_PDAWAKECFG  	(TADR_SYSCON_BASE + TOFFSET_SYSCON_PDAWAKECFG  )
+#define TADR_SYSCON_PDRUNCFG    	(TADR_SYSCON_BASE + TOFFSET_SYSCON_PDRUNCFG    )
+#define TADR_SYSCON_DEVICE_ID   	(TADR_SYSCON_BASE + TOFFSET_SYSCON_DEVICE_ID   )
+
+
+// PRESETCTRL
+#define TBITPTN_SYSCON_PRESETCTRL_SPI0_RST_N   	(1 << 0)
+#define TBITPTN_SYSCON_PRESETCTRL_SPI1_RST_N   	(1 << 1)
+#define TBITPTN_SYSCON_PRESETCTRL_UARTFRG_RST_N	(1 << 2)
+#define TBITPTN_SYSCON_PRESETCTRL_USART0_RST_N 	(1 << 3)
+#define TBITPTN_SYSCON_PRESETCTRL_UART1_RST_N  	(1 << 4)
+#define TBITPTN_SYSCON_PRESETCTRL_UART2_RST_N  	(1 << 5)
+#define TBITPTN_SYSCON_PRESETCTRL_I2C_RST_N    	(1 << 6)
+#define TBITPTN_SYSCON_PRESETCTRL_MRT_RST_N    	(1 << 7)
+#define TBITPTN_SYSCON_PRESETCTRL_SCT_RST_N    	(1 << 8)
+#define TBITPTN_SYSCON_PRESETCTRL_WKT_RST_N    	(1 << 9)
+#define TBITPTN_SYSCON_PRESETCTRL_GPIO_RST_N   	(1 << 10)
+#define TBITPTN_SYSCON_PRESETCTRL_FLASH_RST_N  	(1 << 11)
+#define TBITPTN_SYSCON_PRESETCTRL_ACMP_RST_N   	(1 << 12)
+
+// SYSPLLCTRL
+#define TBITPTN_SYSCON_SYSPLLCTRL_MSEL 	(0x1F)
+#define TBITPTN_SYSCON_SYSPLLCTRL_PSEL 	(0x11 << 5)
+#define TBITPTN_SYSCON_SYSPLLCTRL_PSEL_P1 	(0x00 << 5)
+#define TBITPTN_SYSCON_SYSPLLCTRL_PSEL_P2 	(0x01 << 5)
+#define TBITPTN_SYSCON_SYSPLLCTRL_PSEL_P4 	(0x02 << 5)
+#define TBITPTN_SYSCON_SYSPLLCTRL_PSEL_P8 	(0x03 << 5)
+
+// SYSPLLSTAT
+#define TBITPTN_SYSCON_SYSPLLSTAT_LOCK  	(1 << 0)
+
+// SYSOSCCTRL
+#define TBITPTN_SYSCON_SYSOSCCTRL_BYPASS   	(1 << 0)
+#define TBITPTN_SYSCON_SYSOSCCTRL_FREQRANGE	(1 << 1)
+
+// SYSPLLCLKSEL
+#define TBITPTN_SYSCON_SYSPLLCLKSEL_SEL	(3 << 0)
+#define TBITPTN_SYSCON_SYSPLLCLKSEL_SEL_IRC	(0 << 0)
+#define TBITPTN_SYSCON_SYSPLLCLKSEL_SEL_SYSOSC	(1 << 0)
+#define TBITPTN_SYSCON_SYSPLLCLKSEL_SEL_CLKIN	(3 << 0)
+
+// SYSPLLCLKUEN
+#define TBITPTN_SYSCON_SYSPLLCLKUEN_ENA	(1 << 0)
+
+// MAINCLKSEL
+#define TBITPTN_SYSCON_MAINCLKSEL_SEL  	(0x11 << 0)
+#define TBITPTN_SYSCON_MAINCLKSEL_SEL_IRC  	(0x00 << 0)
+#define TBITPTN_SYSCON_MAINCLKSEL_SEL_PLLIN  	(0x01 << 0)
+#define TBITPTN_SYSCON_MAINCLKSEL_SEL_WDTOSC  	(0x02 << 0)
+#define TBITPTN_SYSCON_MAINCLKSEL_SEL_PLLOUT  	(0x03 << 0)
+
+// MAINCLKUEN
+#define TBITPTN_SYSCON_MAINCLKUEN_ENA	(1 << 0)
+
+// SYSAHBCLKDIV
+#define TBITPTN_SYSCON_SYSAHBCLKDIV_DIV	(0xff << 0)
+
+// SYSAHBCLKCTRL
+#define TBITPTN_SYSCON_SYSAHBCLKCTRL_SYS  	(1 << 0)
+#define TBITPTN_SYSCON_SYSAHBCLKCTRL_ROM  	(1 << 1)
+#define TBITPTN_SYSCON_SYSAHBCLKCTRL_RAM  	(1 << 2)
+#define TBITPTN_SYSCON_SYSAHBCLKCTRL_FLASHREG	(1 << 3)
+#define TBITPTN_SYSCON_SYSAHBCLKCTRL_FLASH	(1 << 4)
+#define TBITPTN_SYSCON_SYSAHBCLKCTRL_I2C  	(1 << 5)
+#define TBITPTN_SYSCON_SYSAHBCLKCTRL_GPIO 	(1 << 6)
+#define TBITPTN_SYSCON_SYSAHBCLKCTRL_SWM  	(1 << 7)
+#define TBITPTN_SYSCON_SYSAHBCLKCTRL_SCT  	(1 << 8)
+#define TBITPTN_SYSCON_SYSAHBCLKCTRL_WKT  	(1 << 9)
+#define TBITPTN_SYSCON_SYSAHBCLKCTRL_MRT  	(1 << 10)
+#define TBITPTN_SYSCON_SYSAHBCLKCTRL_SPI0 	(1 << 11)
+#define TBITPTN_SYSCON_SYSAHBCLKCTRL_SPI1 	(1 << 12)
+#define TBITPTN_SYSCON_SYSAHBCLKCTRL_CRC  	(1 << 13)
+#define TBITPTN_SYSCON_SYSAHBCLKCTRL_UART0	(1 << 14)
+#define TBITPTN_SYSCON_SYSAHBCLKCTRL_UART1	(1 << 15)
+#define TBITPTN_SYSCON_SYSAHBCLKCTRL_UART2	(1 << 16)
+#define TBITPTN_SYSCON_SYSAHBCLKCTRL_WWDT 	(1 << 17)
+#define TBITPTN_SYSCON_SYSAHBCLKCTRL_IOCON	(1 << 18)
+#define TBITPTN_SYSCON_SYSAHBCLKCTRL_ACMP 	(1 << 19)
+
+// PDRUNCFG
+#define TBITPTN_SYSCON_PDRUNCFG_IRCOUTPD	(1 << 0)
+#define TBITPTN_SYSCON_PDRUNCFG_IRCPD   	(1 << 1)
+#define TBITPTN_SYSCON_PDRUNCFG_FLASHPD 	(1 << 2)
+#define TBITPTN_SYSCON_PDRUNCFG_BODPD   	(1 << 3)
+#define TBITPTN_SYSCON_PDRUNCFG_SYSOSCPD	(1 << 5)
+#define TBITPTN_SYSCON_PDRUNCFG_WDTOSCPD	(1 << 6)
+#define TBITPTN_SYSCON_PDRUNCFG_SYSPLLPD	(1 << 7)
+#define TBITPTN_SYSCON_PDRUNCFG_ACMP    	(1 << 15)
+
+
+
+/* IOCON */
+#define TADR_IOCON_BASE	(0x40044000)
+
+#define TOFFSET_IOCON_PIO0_17 	(0x00)
+#define TOFFSET_IOCON_PIO0_13 	(0x04)
+#define TOFFSET_IOCON_PIO0_12 	(0x08)
+#define TOFFSET_IOCON_PIO0_5  	(0x0C)
+#define TOFFSET_IOCON_PIO0_4  	(0x10)
+#define TOFFSET_IOCON_PIO0_3  	(0x14)
+#define TOFFSET_IOCON_PIO0_2  	(0x18)
+#define TOFFSET_IOCON_PIO0_11 	(0x1C)
+#define TOFFSET_IOCON_PIO0_10 	(0x20)
+#define TOFFSET_IOCON_PIO0_16 	(0x24)
+#define TOFFSET_IOCON_PIO0_15 	(0x28)
+#define TOFFSET_IOCON_PIO0_1  	(0x2C)
+#define TOFFSET_IOCON_PIO0_9  	(0x34)
+#define TOFFSET_IOCON_PIO0_8  	(0x38)
+#define TOFFSET_IOCON_PIO0_7  	(0x3C)
+#define TOFFSET_IOCON_PIO0_6  	(0x40)
+#define TOFFSET_IOCON_PIO0_0  	(0x44)
+#define TOFFSET_IOCON_PIO0_14 	(0x48)
+
+#define TADR_IOCON_PIO0_17	(TADR_IOCON_BASE + TOFFSET_PIO0_17)
+#define TADR_IOCON_PIO0_13	(TADR_IOCON_BASE + TOFFSET_PIO0_13)
+#define TADR_IOCON_PIO0_12	(TADR_IOCON_BASE + TOFFSET_PIO0_12)
+#define TADR_IOCON_PIO0_5 	(TADR_IOCON_BASE + TOFFSET_PIO0_5 )
+#define TADR_IOCON_PIO0_4 	(TADR_IOCON_BASE + TOFFSET_PIO0_4 )
+#define TADR_IOCON_PIO0_3 	(TADR_IOCON_BASE + TOFFSET_PIO0_3 )
+#define TADR_IOCON_PIO0_2 	(TADR_IOCON_BASE + TOFFSET_PIO0_2 )
+#define TADR_IOCON_PIO0_11	(TADR_IOCON_BASE + TOFFSET_PIO0_11)
+#define TADR_IOCON_PIO0_10	(TADR_IOCON_BASE + TOFFSET_PIO0_10)
+#define TADR_IOCON_PIO0_16	(TADR_IOCON_BASE + TOFFSET_PIO0_16)
+#define TADR_IOCON_PIO0_15	(TADR_IOCON_BASE + TOFFSET_PIO0_15)
+#define TADR_IOCON_PIO0_1 	(TADR_IOCON_BASE + TOFFSET_PIO0_1 )
+#define TADR_IOCON_PIO0_9 	(TADR_IOCON_BASE + TOFFSET_PIO0_9 )
+#define TADR_IOCON_PIO0_8 	(TADR_IOCON_BASE + TOFFSET_PIO0_8 )
+#define TADR_IOCON_PIO0_7 	(TADR_IOCON_BASE + TOFFSET_PIO0_7 )
+#define TADR_IOCON_PIO0_6 	(TADR_IOCON_BASE + TOFFSET_PIO0_6 )
+#define TADR_IOCON_PIO0_0 	(TADR_IOCON_BASE + TOFFSET_PIO0_0 )
+#define TADR_IOCON_PIO0_14	(TADR_IOCON_BASE + TOFFSET_PIO0_14)
+
+
+// ビット定義
+#define TBITPTN_IOCON_PIOx_MODE	(3 << 3)
+#define TBITPTN_IOCON_PIOx_MODE_INACTIVE	(0 << 3)
+#define TBITPTN_IOCON_PIOx_MODE_PULLDOWN	(1 << 3)
+#define TBITPTN_IOCON_PIOx_MODE_PULLUP  	(2 << 3)
+#define TBITPTN_IOCON_PIOx_MODE_REPEATER	(3 << 3)
+
+#define TBITPTN_IOCON_PIOx_HYS	(1 << 5)
+#define TBITPTN_IOCON_PIOx_INV	(1 << 6)
+#define TBITPTN_IOCON_PIOx_OD 	(1 << 10)
+
+#define TBITPTN_IOCON_PIOx_SMODE	(3 << 11)
+#define TBITPTN_IOCON_PIOx_SMODE_BYPASS	(0 << 11)
+#define TBITPTN_IOCON_PIOx_SMODE_1CLK 	(1 << 11)
+#define TBITPTN_IOCON_PIOx_SMODE_2CLK 	(2 << 11)
+#define TBITPTN_IOCON_PIOx_SMODE_3CLK 	(3 << 11)
+
+#define TBITPTN_IOCON_PIOx_CLKDIV	(7 << 13)
+#define TBITPTN_IOCON_PIOx_CLKDIV_CLKDIV0	(0 << 13)
+#define TBITPTN_IOCON_PIOx_CLKDIV_CLKDIV1	(1 << 13)
+#define TBITPTN_IOCON_PIOx_CLKDIV_CLKDIV2	(2 << 13)
+#define TBITPTN_IOCON_PIOx_CLKDIV_CLKDIV3	(3 << 13)
+#define TBITPTN_IOCON_PIOx_CLKDIV_CLKDIV4	(4 << 13)
+#define TBITPTN_IOCON_PIOx_CLKDIV_CLKDIV5	(5 << 13)
+#define TBITPTN_IOCON_PIOx_CLKDIV_CLKDIV6	(6 << 13)
+
+
+/* SWM */
+#define TADR_SWM_BASE	0x4000C000
+
+#define TOFFSET_SWM_PINASSIGN0	(0x000)
+#define TOFFSET_SWM_PINASSIGN1	(0x004)
+#define TOFFSET_SWM_PINASSIGN2	(0x008)
+#define TOFFSET_SWM_PINASSIGN3	(0x00C)
+#define TOFFSET_SWM_PINASSIGN4	(0x010)
+#define TOFFSET_SWM_PINASSIGN5	(0x014)
+#define TOFFSET_SWM_PINASSIGN6	(0x018)
+#define TOFFSET_SWM_PINASSIGN7	(0x01C)
+#define TOFFSET_SWM_PINASSIGN8	(0x020)
+#define TOFFSET_SWM_PINENABLE0	(0x1C0)
+
+#define TADR_SWM_PINASSIGN0	(TADR_SWM_BASE + TOFFSET_SWM_PINASSIGN0)
+#define TADR_SWM_PINASSIGN1	(TADR_SWM_BASE + TOFFSET_SWM_PINASSIGN1)
+#define TADR_SWM_PINASSIGN2	(TADR_SWM_BASE + TOFFSET_SWM_PINASSIGN2)
+#define TADR_SWM_PINASSIGN3	(TADR_SWM_BASE + TOFFSET_SWM_PINASSIGN3)
+#define TADR_SWM_PINASSIGN4	(TADR_SWM_BASE + TOFFSET_SWM_PINASSIGN4)
+#define TADR_SWM_PINASSIGN5	(TADR_SWM_BASE + TOFFSET_SWM_PINASSIGN5)
+#define TADR_SWM_PINASSIGN6	(TADR_SWM_BASE + TOFFSET_SWM_PINASSIGN6)
+#define TADR_SWM_PINASSIGN7	(TADR_SWM_BASE + TOFFSET_SWM_PINASSIGN7)
+#define TADR_SWM_PINASSIGN8	(TADR_SWM_BASE + TOFFSET_SWM_PINASSIGN8)
+#define TADR_SWM_PINENABLE0	(TADR_SWM_BASE + TOFFSET_SWM_PINENABLE0)
+
+#define TBITPTN_SWM_PINENABLE0_ACMPI1EN 	(1 << 0)
+#define TBITPTN_SWM_PINENABLE0_ACMPI2EN 	(1 << 0)
+#define TBITPTN_SWM_PINENABLE0_SWCLKEN  	(1 << 2)
+#define TBITPTN_SWM_PINENABLE0_SWDIOEN  	(1 << 3)
+#define TBITPTN_SWM_PINENABLE0_XTALINEN 	(1 << 4)
+#define TBITPTN_SWM_PINENABLE0_XTALOUTEN	(1 << 5)
+#define TBITPTN_SWM_PINENABLE0_RESETEN  	(1 << 6)
+#define TBITPTN_SWM_PINENABLE0_CLKIN    	(1 << 7)
+#define TBITPTN_SWM_PINENABLE0_VDDCMP   	(1 << 8)
+
+
+/* USART */
+#define TADR_USART_BASE(index) 	(0x40064000 + (0x4000) * index)
+#define TADR_USART0_BASE	TADR_USART_BASE(0)
+#define TADR_USART1_BASE	TADR_USART_BASE(1)
+#define TADR_USART2_BASE	TADR_USART_BASE(2)
+
+#define TOFFSET_USART_CFG        	(0x00)
+#define TOFFSET_USART_CTRL      	(0x04)
+#define TOFFSET_USART_STAT       	(0x08)
+#define TOFFSET_USART_INTENSET   	(0x0C)
+#define TOFFSET_USART_INTENCLR   	(0x10)
+#define TOFFSET_USART_RXDATA     	(0x14)
+#define TOFFSET_USART_RXDATASTAT 	(0x18)
+#define TOFFSET_USART_TXDATA     	(0x1C)
+#define TOFFSET_USART_BRG        	(0x20)
+#define TOFFSET_USART_INTSTAT    	(0x24)
+
+#define TADR_USART_CFG(base)        	(base + TOFFSET_USART_CFG       )
+#define TADR_USART_CTRL(base)        	(base + TOFFSET_USART_CTRL      )
+#define TADR_USART_STAT(base)       	(base + TOFFSET_USART_STAT      )
+#define TADR_USART_INTENSET(base)   	(base + TOFFSET_USART_INTENSET  )
+#define TADR_USART_INTENCLR(base)   	(base + TOFFSET_USART_INTENCLR  )
+#define TADR_USART_RXDATA(base)     	(base + TOFFSET_USART_RXDATA    )
+#define TADR_USART_RXDATASTAT(base) 	(base + TOFFSET_USART_RXDATASTAT)
+#define TADR_USART_TXDATA(base)     	(base + TOFFSET_USART_TXDATA    )
+#define TADR_USART_BRG(base)        	(base + TOFFSET_USART_BRG       )
+#define TADR_USART_INTSTAT(base)    	(base + TOFFSET_USART_INTSTAT   )
+
+// CFG
+#define TBITPTN_USART_CFG_ENABLE  	(1 << 0)
+#define TBITPTN_USART_CFG_DATALEN 	(3 << 2)
+#define TBITPTN_USART_CFG_DATALEN_7BIT	(0 << 2)
+#define TBITPTN_USART_CFG_DATALEN_8BIT	(1 << 2)
+#define TBITPTN_USART_CFG_DATALEN_9BIT	(2 << 2)
+#define TBITPTN_USART_CFG_PARITYSEL  	(3 << 4)
+#define TBITPTN_USART_CFG_PARITYSEL_NOPARITY	(0 << 4)
+#define TBITPTN_USART_CFG_PARITYSEL_EVEN    	(2 << 4)
+#define TBITPTN_USART_CFG_PARITYSEL_ODD     	(3 << 4)
+#define TBITPTN_USART_CFG_STOPLEN 	(1 << 6)
+#define TBITPTN_USART_CFG_STOPLEN_1BIT 	(0 << 6)
+#define TBITPTN_USART_CFG_STOPLEN_2BIT 	(1 << 6)
+#define TBITPTN_USART_CFG_CTSEN   	(1 << 9)
+#define TBITPTN_USART_CFG_SYNCEN  	(1 << 11)
+#define TBITPTN_USART_CFG_CLKPOL  	(1 << 12)
+#define TBITPTN_USART_CFG_SYNCMST  	(1 << 14)
+#define TBITPTN_USART_CFG_LOOP    	(1 << 15)
+
+// STAT
+#define TBITPTN_USART_STAT_RXRDY    	(1 << 0)
+#define TBITPTN_USART_STAT_RXIDLE   	(1 << 1)
+#define TBITPTN_USART_STAT_TXRDY    	(1 << 2)
+#define TBITPTN_USART_STAT_TXIDLE   	(1 << 3)
+#define TBITPTN_USART_STAT_CTS      	(1 << 4)
+#define TBITPTN_USART_STAT_DELTACTS  	(1 << 5)
+#define TBITPTN_USART_STAT_TXDISINT  	(1 << 6)
+#define TBITPTN_USART_STAT_OVERRUNINT	(1 << 8)
+#define TBITPTN_USART_STAT_RXBRK     	(1 << 10)
+#define TBITPTN_USART_STAT_DELTARXBRK	(1 << 11)
+#define TBITPTN_USART_STAT_START     	(1 << 12)
+#define TBITPTN_USART_STAT_FRAMERRINT	(1 << 13)
+#define TBITPTN_USART_STAT_PARITYERRINT	(1 << 14)
+#define TBITPTN_USART_STAT_RXNOISEINT	(1 << 15)
+
+// INTENSET
+#define TBITPTN_USART_INTENSET_RXRDYEN    	(1 << 0)
+#define TBITPTN_USART_INTENSET_TXRDYEN   	(1 << 2)
+#define TBITPTN_USART_INTENSET_DELTACTSEN 	(1 << 5)
+#define TBITPTN_USART_INTENSET_TXDISINTEN 	(1 << 6)
+#define TBITPTN_USART_INTENSET_OVERRUNEN 	(1 << 8)
+#define TBITPTN_USART_INTENSET_DELTARXBRKEN	(1 << 11)
+#define TBITPTN_USART_INTENSET_STARTEN  	(1 << 12)
+#define TBITPTN_USART_INTENSET_FRAMERREN 	(1 << 13)
+#define TBITPTN_USART_INTENSET_PARITYERREN 	(1 << 14)
+#define TBITPTN_USART_INTENSET_RXNOISEEN 	(1 << 15)
+
+// INTENCLR
+#define TBITPTN_USART_INTENCLR_RXRDYCLR 	(1 << 0)
+#define TBITPTN_USART_INTENCLR_TXRDYCLR 	(1 << 2)
+#define TBITPTN_USART_INTENCLR_DELTACTSCLR 	(1 << 5)
+#define TBITPTN_USART_INTENCLR_TXDISINTCLR 	(1 << 6)
+#define TBITPTN_USART_INTENCLR_OVERRUNCLR 	(1 << 8)
+#define TBITPTN_USART_INTENCLR_DELTARXBRKCLR 	(1 << 11)
+#define TBITPTN_USART_INTENCLR_STARTCLR 	(1 << 12)
+#define TBITPTN_USART_INTENCLR_FRAMERRCLR 	(1 << 13)
+#define TBITPTN_USART_INTENCLR_PARITYERRCLR 	(1 << 14)
+#define TBITPTN_USART_INTENCLR_RXNOISECLR 	(1 << 15)
+
+
+#endif /* TOPPERS_LPC812M101FDH20_H */
Index: /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/MANIFEST
===================================================================
--- /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/MANIFEST	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/MANIFEST	(revision 411)
@@ -0,0 +1,29 @@
+PACKAGE ssp_lpcxpresso_lpc812_gcc
+
+E_PACKAGE
+MANIFEST
+Makefile.target
+lpcxpresso_lpc812.h
+lpcxpresso_lpc812.ld
+LPC812M101FDH20.h
+target.tf
+target_cfg1_out.h
+target_check.tf
+target_config.c
+target_config.h
+target_def.csv
+target_kernel.h
+target_rename.def
+target_rename.h
+target_serial.c
+target_serial.cfg
+target_serial.h
+target_sil.h
+target_stddef.h
+target_support.S
+target_syssvc.h
+target_test.h
+target_timer.cfg
+target_timer.h
+target_unrename.h
+target_user.txt
Index: /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/Makefile.target
===================================================================
--- /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/Makefile.target	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/Makefile.target	(revision 411)
@@ -0,0 +1,127 @@
+#
+#		Makefile のターゲット依存部(LPCXPRESSO-LPC812用)
+#
+
+#
+#  ボード名，プロセッサ名，開発環境名の定義
+#
+BOARD = lpcxpresso_lpc812
+PRC   = armv6_m
+TOOL  = gcc
+
+#
+#  CMSIS を使うかどうか
+#
+
+USE_CMSIS = false
+CMSIS_INCLUDE_PATH = /Users/saito/Documents/LPCXpresso_5.2.4/workspace/CMSIS_CORE_LPC8xx/inc
+CMSIS_LIB_PATH = /Users/saito/Documents/LPCXpresso_5.2.4/workspace/CMSIS_CORE_LPC8xx/Debug
+
+#
+#  MTB(Micro Trace Buffer)を使うかどうか
+#
+
+USE_MTB = false
+MTB_BUF_SIZE = 64
+
+#
+#  GNU開発環境のターゲットアーキテクチャの定義
+#
+GCC_TARGET = arm-none-eabi
+
+#
+#  各セグメントの開始アドレスの定義
+#
+
+#
+#  コンパイルオプション
+#
+INCLUDES := $(INCLUDES) -I$(TARGETDIR)
+CDEFS := $(CDEFS) -D__NEWLIB__
+COPTS := $(COPTS) -mcpu=cortex-m0 -mthumb
+
+#
+#  カーネルに関する定義
+#
+KERNEL_DIR := $(KERNEL_DIR) $(TARGETDIR)
+KERNEL_ASMOBJS := $(KERNEL_ASMOBJS) target_support.o 
+KERNEL_COBJS := $(KERNEL_COBJS) target_config.o target_serial.o
+KERNEL_CFLAGS := $(KERNEL_CFLAGS) -fno-strict-aliasing
+
+#
+#  システムサービスに関する定義
+#
+SYSSVC_DIR := $(SYSSVC_DIR)
+SYSSVC_COBJS := $(SYSSVC_COBJS)
+SYSSVC_CFLAGS := $(SYSSVC_CFLAGS)
+
+#
+#  コンフィギュレータ関係の変数の定義
+#
+CFG_TABS := $(CFG_TABS) --cfg1-def-table $(TARGETDIR)/target_def.csv
+
+#
+#  トレースログに関する設定
+#
+ifeq ($(ENABLE_TRACE),true)
+	COPTS := $(COPTS) -DTOPPERS_ENABLE_TRACE
+	KERNEL_DIR := $(KERNEL_DIR) $(SRCDIR)/arch/logtrace
+	KERNEL_COBJS := $(KERNEL_COBJS) trace_config.o trace_dump.o
+endif
+
+#
+#  CMSISライブラリ使用時は USE_CMSISをtrueに定義する
+#    その場合，LPC8xx.h を include してデバイスレジスタ定義を利用することが可能
+#    インクルードファイルのサーチディレクトリとして LPC8xx.h の存在するファイルのパスを指定する
+#    (もしくは，LPCXpresso IDE でサーチパスの設定をしても良い)
+#
+#    ライブラリファイル(libCMSIS_CORE_LPC8xx.a)の利用は想定していない．
+#    少なくともsystem_LPC8xx.c の SystemInit に相当する処理はSSPのシステム起動時に実施しているので基本的に呼び出す必要はない
+#
+ifeq ($(USE_CMSIS),true)
+	INCLUDES := $(INCLUDES) -I$(CMSIS_INCLUDE_PATH)
+	# 基本的に以下のライブラリファイルは使わないことを前提とする
+	# LIBS  := $(LIBS) -lCMSIS_CORE_LPC8xx -L$(CMSIS_LIB_PATH)
+endif
+
+#
+#  MTB(Micro Trace Buffer)に関する設定
+#      LPCXpresso IDE の利用を前提としている
+#
+ifeq ($(USE_MTB),true)
+	COPTS := $(COPTS) -D__USE_MTB -D__MTB_BUF_SIZE=$(MTB_BUF_SIZE)
+endif
+
+#
+#  リンカスクリプトの定義
+#
+LDSCRIPT = $(SRCDIR)/target/$(BOARD)_$(TOOL)/lpcxpresso_lpc812.ld
+
+#
+#  スタートアップモジュールに関する定義
+#
+#  リンカスクリプトに「STARTUP(start.o)」を記述したため，スタートアップモジュー
+#  ルの名前をHIDDEN_OBJSに定義する．また，LDFLAGSに-nostdlibを追加している．
+#
+HIDDEN_OBJS = start.o
+
+$(HIDDEN_OBJS): %.o: %.S
+	$(CC) -c $(CFLAGS) $(KERNEL_CFLAGS) $<
+
+$(HIDDEN_OBJS:.o=.d): %.d: %.S
+	@$(PERL) $(SRCDIR)/utils/makedep -C $(CC) \
+		-O "$(CFLAGS) $(KERNEL_CFLAGS)" $< >> Makefile.depend
+
+LDFLAGS := -nostdlib $(LDFLAGS) --entry=_start
+
+#
+#  依存関係の定義
+#
+cfg1_out.c: $(TARGETDIR)/target_def.csv
+kernel_cfg.timestamp: $(TARGETDIR)/target.tf
+$(OBJFILE): $(TARGETDIR)/target_check.tf
+
+#
+#  プロセッサ依存部のインクルード
+#
+include $(SRCDIR)/arch/$(PRC)_$(TOOL)/Makefile.prc
Index: /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/lpcxpresso_lpc812.h
===================================================================
--- /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/lpcxpresso_lpc812.h	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/lpcxpresso_lpc812.h	(revision 411)
@@ -0,0 +1,150 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2013 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ * 
+ *  上記著作権者は，Free Software Foundation によって公表されている
+ *  GNU General Public License の Version 2 に記述されている条件か，以
+ *  下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェア（本ソフトウェ
+ *  アを改変したものを含む．以下同じ）を使用・複製・改変・再配布（以下，
+ *  利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを再利用可能なバイナリコード（リロケータブルオブ
+ *      ジェクトファイルやライブラリなど）の形で利用する場合には，利用
+ *      に伴うドキュメント（利用者マニュアルなど）に，上記の著作権表示，
+ *      この利用条件および下記の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを再利用不可能なバイナリコードの形または機器に組
+ *      み込んだ形で利用する場合には，次のいずれかの条件を満たすこと．
+ *    (a) 利用に伴うドキュメント（利用者マニュアルなど）に，上記の著作
+ *        権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 利用の形態を，別に定める方法によって，上記著作権者に報告する
+ *        こと．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者を免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者は，
+ *  本ソフトウェアに関して，その適用可能性も含めて，いかなる保証も行わ
+ *  ない．また，本ソフトウェアの利用により直接的または間接的に生じたい
+ *  かなる損害に関しても，その責任を負わない．
+ * 
+ */
+
+/*
+ *  ターゲットボードに関する定義(LPCXPRESSO-LPC812用)
+ *
+ *  カスタマイズ箇所：
+ *  (1) PLLを使用しない場合は USE_SYSTEM_PLL マクロ定義をコメントアウトする(その場合メインクロックはIRCとなる)
+ *  (2) 外部オシレータを使用しない場合は，USE_EXTERNAL_OSCILLATOR マクロ定義をコメントアウトする
+ *  (3) オシレータの周波数が異なる場合は OSC_CLOCK の値を変更する
+ *  (4) 生成したいメインクロックの周波数を変更する場合は MAIN_CLOCK の値を変更する
+ *      その際，SYSPLLCTRLレジスタの設定値を TVALUE_SYSCON_SYSPLLCTRL マクロに指定する
+ *      システムクロックの値を決定するため，メインクロックの分周比を TVALUE_SYSCON_SYSAHBCLKDIV に定義する
+ *      (システムクロックは上限30MHzという制限がある)
+ */
+
+#ifndef TOPPERS_LPCXPRESSO_LPC812_H
+#define TOPPERS_LPCXPRESSO_LPC812_H
+
+#include <sil.h>
+#include "LPC812M101FDH20.h"
+
+// PLL を使用する（使用しない場合はコメントアウトする．）
+// PLL不使用の場合，クロック源はIRCとなる(外部オシレーターは使用しない)．
+#define USE_SYSTEM_PLL
+
+// 外部オシレータを使用する（使用しない場合はコメントアウトする．クロック源はIRCとなる）
+#define USE_EXTERNAL_OSCILLATOR
+
+/*
+ *  クロック関連の定義
+ */
+// 内部RC(IRC)クロックの周波数
+#define IRC_CLOCK	(12 * 1000 * 1000)	/* 12MHz */
+
+// オシレータクロックの周波数(IRCを使うときは IRC_CLOCK, 外部XTALを使用するときは実際の値に合わせて変更する)
+#define OSC_CLOCK	(12 * 1000 * 1000)	/* 12MHz */
+
+// メインクロック
+#ifdef USE_SYSTEM_PLL
+	#define MAIN_CLOCK	(60 * 1000 * 1000)	/* 60MHz */
+#else
+	#define MAIN_CLOCK	IRC_CLOCK	/* 12MHz */
+#endif
+
+/*
+ * システムPLLの定義
+ */
+#ifdef USE_SYSTEM_PLL
+	#ifdef USE_EXTERNAL_OSCILLATOR /* 外部クロックを使用 */
+		// システムPLLのクロック源
+		#define TVALUE_SYSCON_SYSPLLCLKSEL TBITPTN_SYSCON_SYSPLLCLKSEL_SEL_SYSOSC 	// クロック源としてシステムオシレーターを選択
+		// システムオシレーターの設定
+		#define TVALUE_SYSCON_SYSOSCCTRL	0	// システムオシレーターをバイパスしない(BYPASS=0), 入力クロックは 1-20MHzの範囲
+	#else /* USE_EXTERNAL_OSCILLATOR */
+		// システムPLLのクロック源
+		#define TVALUE_SYSCON_SYSPLLCLKSEL TBITPTN_SYSCON_SYSPLLCLKSEL_SEL_IRC 	// クロック源として内部RCオシレーターを選択
+	#endif /* USE_EXTERNAL_OSCILLATOR */
+
+	// PLLの逓倍器および分周器のパラメータ
+	// 以下からダウンロードできるPLLパラメータ設定用Excelシートで算出した．
+	// http://www.lpcware.com/content/nxpfile/lpc8xx-clock-and-pll-configuration-tool
+	// これによると，入力周波数が12MHzで60MHzのメインクロックを生成する場合，PSEL=2, MSEL=4
+	#define TVALUE_SYSCON_SYSPLLCTRL_MSEL	(0x04)	// MSEL = 4
+	#define TVALUE_SYSCON_SYSPLLCTRL	(TBITPTN_SYSCON_SYSPLLCTRL_PSEL_P2 | TVALUE_SYSCON_SYSPLLCTRL_MSEL)
+#endif	/* USE_SYSTEM_PLL */
+
+/*
+ * メインクロックの定義
+ */
+#ifdef USE_SYSTEM_PLL
+	#define TVALUE_SYSCON_MAINCLKSEL	TBITPTN_SYSCON_MAINCLKSEL_SEL_PLLOUT	// メインクロックはシステムPLLの出力クロックを使う
+#else
+	#define TVALUE_SYSCON_MAINCLKSEL	TBITPTN_SYSCON_MAINCLKSEL_SEL_IRC	// メインクロックはIRCを使う
+#endif
+
+/*
+ * システムクロックの定義
+ */
+#ifdef USE_SYSTEM_PLL
+	#define TVALUE_SYSCON_SYSAHBCLKDIV 2	// システムクロックはメインクロックを2分周(30MHz)
+#else
+	#define TVALUE_SYSCON_SYSAHBCLKDIV 1	// システムクロックはメインクロックを1分周(12MHz)
+#endif
+
+#define SYSTEM_CLOCK 	(MAIN_CLOCK/TVALUE_SYSCON_SYSAHBCLKDIV)
+
+// 他モジュールへのクロック供給ON/OFF
+#define TVALUE_SYSCON_SYSAHBCLKCTRL	(TBITPTN_SYSCON_SYSAHBCLKCTRL_SWM | TBITPTN_SYSCON_SYSAHBCLKCTRL_IOCON)	// SWM, IOCONのクロックON
+
+/*
+ * UARTのクロック定義
+ */
+#define TVALUE_SYSCON_UARTCLKDIV	(1)	// UARTのクロックはメインクロックを1分周
+
+// BRGレジスタの設定値．"baudrate = (MAIN_CLOCK/UARTCLKDIV) / 16*(BRG+1)" の関係を満たすようにBRGを設定する．
+#define TVALUE_USART_BRG(baudrate)	(MAIN_CLOCK/TVALUE_SYSCON_UARTCLKDIV/16/(baudrate) - 1)
+
+// Fractional rate generator.
+// ・ボーレートの目標値を goal_baudrate
+// ・BRG の設定値から導出されるボーレート． real_baudrate = (main_clock/UARTCLKDIV) / 16*(BRG+1)
+// ・DIV を UARTFRGDIVの設定値(データシートより，255固定)
+// ・MULT を UARTFRGMULTの設定値(0-255)
+// とするとき，次の関係を満たすように，MULTを設定してボーレートクロックを調整する
+// {(MULT+1)/(DIV+1)} + 1 = real_baudrate / goal_baudrate
+// 最初に決定したgoal_baudrateに基づきBRGの設定値を計算したら，DIVが255としてMULTの値を計算する．
+#define TVALUE_SYSCON_UARTFRGDIV	(0xff)
+#define TVALUE_SYSCON_UARTFRGMULT(baudrate) \
+		((((MAIN_CLOCK / TVALUE_SYSCON_UARTCLKDIV) / 16) * (TVALUE_SYSCON_UARTFRGDIV + 1)) / (baudrate * (TVALUE_USART_BRG(baudrate) + 1))) - (TVALUE_SYSCON_UARTFRGDIV + 1)
+
+// Systick
+#define SYSTIC_CLOCK	(SYSTEM_CLOCK)
+
+
+#ifndef TOPPERS_MACRO_ONLY
+
+#endif /* TOPPERS_MACRO_ONLY */
+#endif /* TOPPERS_LPCXPRESSO_LPC812_H */
Index: /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/lpcxpresso_lpc812.ld
===================================================================
--- /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/lpcxpresso_lpc812.ld	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/lpcxpresso_lpc812.ld	(revision 411)
@@ -0,0 +1,64 @@
+MEMORY
+{
+    FLASH (rx) : ORIGIN = 0x00000000 , LENGTH = 0x4000 /* 16K */
+    SRAM (rwx) : ORIGIN = 0x10000000 , LENGTH = 0x1000 /* 4k */
+}
+
+PROVIDE(hardware_init_hook = 0);
+PROVIDE(software_init_hook = 0);
+PROVIDE(software_term_hook = 0);
+STARTUP(start.o)
+
+SECTIONS
+{
+    .text :
+    {
+        __text = .;
+		KEEP(*(.vector))
+        *(.text)
+        *(.text.*)
+    } > FLASH
+	_etext = .;
+	PROVIDE(etext = .);
+
+	.rodata :
+	{
+        *(.rodata)
+        *(.rodata.*)
+        . = ALIGN(4);
+    } > FLASH
+
+	.ARM.extab   : { *(.ARM.extab* .gnu.linkonce.armextab.*) }
+	__exidx_start = .;
+	.ARM.exidx   : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) }
+	__exidx_end = .;
+
+	__idata_start = .;
+    .data : AT (__idata_start)
+    {
+		__data_start = .;
+        *(vtable)
+        *(.data)
+        *(.data.*)
+		__data_end = .;
+    } > SRAM
+	__idata_end = __idata_start + SIZEOF(.data);
+	_edata = .;
+	PROVIDE(edata = .);
+
+	. = ALIGN(4);
+
+    .bss :
+    {
+        __bss_start  = .;
+        *(.bss)
+        *(COMMON)
+        *(.mtb.$RAM1)
+        . = ALIGN(4);
+    } > SRAM
+    
+	. = ALIGN(4);
+	_end = .;
+	__bss_end = .;
+	PROVIDE(end = .);
+}
Index: /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target.tf
===================================================================
--- /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target.tf	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target.tf	(revision 411)
@@ -0,0 +1,13 @@
+$ 
+$     パス2のターゲット依存テンプレート(LPCXPRESSO-LPC812用)
+$ 
+
+$ 
+$  プロセッサ依存のテンプレートファイルのインクルード
+$ 
+$INCLUDE"armv6_m_gcc/prc.tf"$
+
+$ 
+$  バナー出力用のTFファイル
+$ 
+$INCLUDE "syssvc/banner.tf"$
Index: /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_cfg1_out.h
===================================================================
--- /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_cfg1_out.h	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_cfg1_out.h	(revision 411)
@@ -0,0 +1,8 @@
+/*
+ *		cfg1_out.cをリンクするために必要なスタブの定義
+ */
+
+/*
+ *  コア依存のスタブの定義 
+ */
+#include "armv6_m_gcc/prc_cfg1_out.h"
Index: /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_check.tf
===================================================================
--- /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_check.tf	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_check.tf	(revision 411)
@@ -0,0 +1,8 @@
+$ 
+$     パス3のターゲット依存テンプレート(LPCXPRESSO-LPC812用)
+$ 
+
+$ 
+$  パス3のプロセッサ依存のテンプレートのインクルード
+$ 
+$INCLUDE"armv6_m_gcc/prc_check.tf"$
Index: /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_config.c
===================================================================
--- /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_config.c	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_config.c	(revision 411)
@@ -0,0 +1,115 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2012 Meika Sugimoto
+ *  Copyright (C) 2013-2015 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ * 
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ * 
+ */
+
+/*
+ * ターゲット依存モジュール(LPCXPRESSO-LPC812用)
+ */
+#include "kernel_impl.h"
+#include <sil.h>
+#include "target_serial.h"
+#include "target_syssvc.h"
+
+/*
+ * ターゲットシステムのハードウェア資源の定義
+ */
+#include "lpcxpresso_lpc812.h"
+
+/*
+ * MTB buffer
+ */
+#ifdef __USE_MTB
+#include <cr_mtb_buffer.h>
+__CR_MTB_BUFFER(__MTB_BUF_SIZE);
+#endif
+                    /*
+ * ターゲット依存部　初期化処理
+ */
+void target_initialize(void)
+{
+	/*
+	 *  プロセッサ依存部の初期化
+	 */
+	prc_initialize();
+
+	/*
+	 *  I/Oポートの初期化
+	 */
+#if (SIO_PORTID == 1)
+	volatile uint32_t tmp;
+
+	tmp = sil_rew_mem((void *)TADR_SWM_PINASSIGN0);
+	tmp &= ~(0xFF << 0);
+	tmp |= (4 << 0);	// P0.4 is UART0 TXD
+	tmp &= ~(0xFF << 8);
+	tmp |= (0 << 8);	// P0.0 is UART0 RXD
+	sil_wrw_mem((void *)TADR_SWM_PINASSIGN0, tmp);
+#endif
+
+	/*
+	 *  バナー出力用のシリアル初期化
+	 */
+	target_low_output_init(SIO_PORTID);
+	sil_dly_nse(10 * 1000 * 1000);
+}
+
+/*
+ * ターゲット依存部 終了処理
+ */
+void NoReturn target_exit(void)
+{
+	/* プロセッサ依存部の終了処理 */
+	prc_terminate();
+}
+
+/*
+ * システムログの低レベル出力のための文字出力
+ */
+void target_fput_log(char c)
+{
+	if (c == '\n') {
+		sio_pol_snd_chr('\r', SIO_PORTID);
+	}
+	sio_pol_snd_chr(c, SIO_PORTID);
+}
+
+
Index: /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_config.h
===================================================================
--- /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_config.h	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_config.h	(revision 411)
@@ -0,0 +1,97 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2012 by Meika Sugimoto
+ *  Copyright (C) 2013,2014 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ * 
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ * 
+ */
+
+#ifndef TOPPERS_TARGET_CONFIG_H
+#define TOPPERS_TARGET_CONFIG_H
+
+/*
+ * ターゲット依存部モジュール(LPCXPRESSO-LPC812用)
+ *
+ * カーネルのターゲット依存部のインクルードファイル．kernel_impl.hのター
+ * ゲット依存部の位置付けとなす．
+ */
+
+#include "lpcxpresso_lpc812.h"
+
+/*
+ *  トレースログに関する設定
+ */
+#ifdef TOPPERS_ENABLE_TRACE
+#include "logtrace/trace_config.h"
+#endif /* TOPPERS_ENABLE_TRACE */
+
+/*
+ *  デフォルトの非タスクコンテキスト用のスタック領域の定義
+ *  8byte単位で取得される．
+ */
+#define DEFAULT_ISTKSZ			(0x0400 / 4)		/* 1KByte */
+
+/*
+ *  微少時間待ちのための定義（本来はSILのターゲット依存部）
+ */
+#define SIL_DLY_TIM1    162
+#define SIL_DLY_TIM2    100
+
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  ターゲットシステム依存の初期化
+ */
+extern void	target_initialize(void);
+
+/*
+ *  ターゲットシステムの終了
+ *
+ *  システムを終了する時に使う．
+ */
+extern void	target_exit(void) NoReturn;
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  チップ依存モジュール（ARM-M用）
+ */
+#include "armv6_m_gcc/prc_config.h"
+
+#endif /* TOPPERS_TARGET_CONFIG_H */
Index: /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_kernel.h
===================================================================
--- /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_kernel.h	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_kernel.h	(revision 411)
@@ -0,0 +1,66 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2013,2014 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ * 
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ * 
+ */
+
+/*
+ *  kernel.hのターゲット依存部(LPCXPRESSO-LPC812用)
+ *
+ *  このインクルードファイルは，kernel.hでインクルードされる．他のファ
+ *  イルから直接インクルードすることはない．このファイルをインクルード
+ *  する前に，t_stddef.hがインクルードされるので，それらに依存してもよ
+ *  い．
+ */
+
+#ifndef TOPPERS_TARGET_KERNEL_H
+#define TOPPERS_TARGET_KERNEL_H
+
+#define TMIN_INTPRI		(-3)		/* 割込み優先度の最小値（最高値）*/
+
+/*
+ *  タイムティックの定義
+ */
+#define TIC_NUME			1U		/* タイムティックの周期の分子 */
+#define TIC_DENO			1U		/* タイムティックの周期の分母 */
+
+/*
+ *  プロセッサで共通な定義
+ */
+#include "armv6_m_gcc/prc_kernel.h"
+
+#endif /* TOPPERS_TARGET_KERNEL_H */
Index: /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_rename.def
===================================================================
--- /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_rename.def	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_rename.def	(revision 411)
@@ -0,0 +1,1 @@
+INCLUDE	"armv6_m_gcc/prc"
Index: /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_rename.h
===================================================================
--- /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_rename.h	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_rename.h	(revision 411)
@@ -0,0 +1,14 @@
+/* This file is generated from target_rename.def by genrename. */
+
+#ifndef TOPPERS_TARGET_RENAME_H
+#define TOPPERS_TARGET_RENAME_H
+
+
+#ifdef TOPPERS_LABEL_ASM
+
+
+#endif /* TOPPERS_LABEL_ASM */
+
+#include "armv6_m_gcc/prc_rename.h"
+
+#endif /* TOPPERS_TARGET_RENAME_H */
Index: /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_serial.c
===================================================================
--- /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_serial.c	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_serial.c	(revision 411)
@@ -0,0 +1,312 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2012 by Meika Sugimoto
+ *  Copyright (C) 2013-2015 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ * 
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ * 
+ */
+
+/*
+ * シリアルドライバ（LPCXPRESSO-LPC812 用）
+ */
+
+#include <kernel.h>
+#include <sil.h>
+//#include "kernel_int.h"
+#include "target_serial.h"
+#include "target_syssvc.h"
+
+/*
+ * レジスタ設定値
+ */
+#define INDEX2SIOPID(index) 	((index) + 1)	// インデックスからポートIDへ
+#define SIOPID2INDEX(siopid)	((siopid) - 1)	// ポートIDからインデックスへ
+#define GET_SIOPCB(siopid)  	(&siopcb_table[SIOPID2INDEX(siopid)])
+#define GET_SIOPID(siopcb)  	((siopcb-(uint32_t)siopcb_table)/sizeof(siopcb_table[0]))
+
+/*
+ * シリアルI/Oポート管理ブロックエリア
+ */
+SIOPCB siopcb_table[TNUM_PORT];
+
+// シリアルドライバ(GDIC)のポートIDに対応するシリアルポート(PDIC)のレジスタベースアドレス
+// 対応関係を変更したい場合(例えばポートID1をUSART1に対応づける場合)，ここを変更する
+static const uint32_t sioreg_table[TNUM_PORT] = {
+	TADR_USART_BASE(0),
+#if (TNUM_PORT == 2)
+	TADR_USART_BASE(1),
+#endif
+};
+
+Inline bool_t  sio_putready(SIOPCB* siopcb)
+{
+	uint32_t tmp;
+	tmp = sil_rew_mem((void *)TADR_USART_STAT(siopcb->reg));
+
+	return (tmp & TBITPTN_USART_STAT_TXRDY) != 0;
+}
+
+Inline bool_t sio_getready(SIOPCB* siopcb)
+{
+	uint32_t tmp;
+	tmp = sil_rew_mem((void *)TADR_USART_STAT(siopcb->reg));
+
+	return (tmp & TBITPTN_USART_STAT_RXRDY) != 0;
+}
+
+static bool_t initialized[TNUM_SIOP] = {false};
+/*
+ *  低レベル出力の初期化
+ */
+void target_low_output_init(ID siopid)
+{
+	uint32_t base = TADR_USART_BASE(SIOPID2INDEX(siopid));
+	volatile uint32_t tmp;
+	
+	if(initialized[siopid]) {return;}
+
+	// UART回路に供給するクロック（メインクロックの分周比）
+	sil_wrw_mem((void *)TADR_SYSCON_UARTCLKDIV, TVALUE_SYSCON_UARTCLKDIV);
+
+	/* USARTの無効化，リセット */
+	dis_int(INT_UART0);
+	tmp = sil_rew_mem((void *)TADR_USART_CFG(base));
+	tmp &= ~TBITPTN_USART_CFG_ENABLE;
+	sil_wrw_mem((void *)TADR_USART_CFG(base), tmp);
+
+	// UART0のクロックをON
+	tmp = sil_rew_mem((void *)TADR_SYSCON_SYSAHBCLKCTRL);
+	tmp |= TBITPTN_SYSCON_SYSAHBCLKCTRL_UART0;
+	sil_wrw_mem((void *)TADR_SYSCON_SYSAHBCLKCTRL, tmp);
+
+	// デバイスをリセット
+	tmp = sil_rew_mem((void *)TADR_SYSCON_PRESETCTRL);
+	tmp &= ~TBITPTN_SYSCON_PRESETCTRL_USART0_RST_N;
+	sil_wrw_mem((void *)TADR_SYSCON_PRESETCTRL, tmp);
+	tmp |= TBITPTN_SYSCON_PRESETCTRL_USART0_RST_N;
+	sil_wrw_mem((void *)TADR_SYSCON_PRESETCTRL, tmp);
+
+	/* 通信モード設定 */
+	tmp = (TBITPTN_USART_CFG_DATALEN_8BIT | TBITPTN_USART_CFG_PARITYSEL_NOPARITY | TBITPTN_USART_CFG_STOPLEN_1BIT);
+	sil_wrw_mem((void *)TADR_USART_CFG(base), tmp);
+
+	/* 通信速度設定 */
+	sil_wrw_mem((void *)TADR_USART_BRG(base), TVALUE_USART_BRG(UART_BAUDRATE));
+	sil_wrw_mem((void *)TADR_SYSCON_UARTFRGDIV, TVALUE_SYSCON_UARTFRGDIV);
+	sil_wrw_mem((void *)TADR_SYSCON_UARTFRGMULT, TVALUE_SYSCON_UARTFRGMULT(UART_BAUDRATE));
+
+	// CTS/RTSのクリア
+	sil_wrw_mem((void *)TADR_USART_STAT(base), (TBITPTN_USART_STAT_DELTACTS | TBITPTN_USART_STAT_DELTARXBRK));
+
+	// UARTの割込み許可
+//	ena_int(INT_UART0);
+
+	// UARTの個別の割込み有効/無効(受信：有効，送信：無効)
+//	sil_wrw_mem((void *)TADR_USART_INTENSET(base), TBITPTN_USART_INTENSET_RXRDYEN);
+//	sil_wrw_mem((void *)TADR_USART_INTENCLR(base), TBITPTN_USART_INTENCLR_TXRDYCLR);
+
+	/* USARTの有効化 */
+	tmp = sil_rew_mem((void *)TADR_USART_CFG(base));
+	tmp |= TBITPTN_USART_CFG_ENABLE;
+	sil_wrw_mem((void *)TADR_USART_CFG(base), tmp);
+
+	initialized[siopid] = true;
+}
+
+/*
+ *  ターゲットのシリアル初期化
+ */
+void target_usart_init(ID siopid)
+{
+	target_low_output_init(siopid);
+	
+	/* 割込み許可 */
+	(void)ena_int(INTNO_SIO);
+}
+
+/*
+ *  ターゲットのシリアル終了
+ */
+void target_usart_term(uint32_t base)
+{
+	uint32_t tmp;
+
+	/* 割込み禁止 */
+	(void)dis_int(INTNO_SIO);
+	
+	/* USARTの無効化 */
+	tmp = sil_rew_mem((void *)TADR_USART_CFG(base));
+	tmp &= ~TBITPTN_USART_CFG_ENABLE;
+	sil_wrw_mem((void *)TADR_USART_CFG(base), tmp);
+
+	int_t siopid = GET_SIOPID(base);
+	initialized[siopid] = false;
+}
+
+/*
+ *  SIO初期化
+ */
+void sio_initialize(intptr_t exinf)
+{
+	int i;
+
+	for (i = 0; i < TNUM_PORT; i++) {
+		siopcb_table[i].reg = sioreg_table[i];
+		siopcb_table[i].exinf = 0;
+	}
+}
+
+/*
+ *  シリアルオープン
+ */
+SIOPCB *sio_opn_por(ID siopid, intptr_t exinf)
+{
+	SIOPCB* siopcb;
+
+	if (siopid > TNUM_PORT || siopid < 0) {
+		return NULL;
+	}
+	
+	target_usart_init(siopid);
+
+	siopcb = GET_SIOPCB(siopid);
+	siopcb->exinf = exinf;
+
+	return siopcb;
+}
+
+/*
+ *  シリアルクローズ
+ */
+void sio_cls_por(SIOPCB *p_siopcb)
+{
+	target_usart_term(p_siopcb->reg);
+}
+
+/*
+ *  割込みハンドラ
+ */
+void sio_isr(intptr_t exinf)
+{
+	SIOPCB* siopcb = GET_SIOPCB(exinf);
+
+    if (sio_putready(siopcb)) {
+            sio_irdy_snd(siopcb->exinf);
+    }
+    if (sio_getready(siopcb)) {
+            sio_irdy_rcv(siopcb->exinf);
+    }
+}
+
+
+/*
+ *  1文字送信
+ */
+bool_t sio_snd_chr(SIOPCB *siopcb, char c)
+{
+	bool_t ret = false;
+	
+	if (sio_putready(siopcb)) {
+		sil_wrw_mem((void *)TADR_USART_TXDATA(siopcb->reg), c);
+		ret = true;
+	}
+
+	return ret;
+}
+
+/*
+ *  1文字受信
+ */
+int_t sio_rcv_chr(SIOPCB *siopcb)
+{
+	int_t c = -1;
+
+	if (sio_getready(siopcb)) {
+		c = (int_t)sil_rew_mem((void *)TADR_USART_RXDATA(siopcb->reg));
+	}
+
+	return c;
+}
+
+/*
+ *  コールバックの許可
+ */
+void sio_ena_cbr(SIOPCB *siopcb, uint_t cbrtn)
+{
+	switch (cbrtn) {
+	case SIO_RDY_SND:
+		sil_wrw_mem((void *)TADR_USART_INTENSET(siopcb->reg), TBITPTN_USART_INTENSET_TXRDYEN);
+		break;
+	case SIO_RDY_RCV:
+		sil_wrw_mem((void *)TADR_USART_INTENSET(siopcb->reg), TBITPTN_USART_INTENSET_RXRDYEN);
+		break;
+	default:
+		break;
+	}
+}
+
+/* 
+ *  コールバックの禁止
+ */
+void sio_dis_cbr(SIOPCB *siopcb, uint_t cbrtn)
+{
+	switch (cbrtn) {
+	case SIO_RDY_SND:
+		sil_wrw_mem((void *)TADR_USART_INTENCLR(siopcb->reg), TBITPTN_USART_INTENCLR_TXRDYCLR);
+		break;
+	case SIO_RDY_RCV:
+		sil_wrw_mem((void *)TADR_USART_INTENCLR(siopcb->reg), TBITPTN_USART_INTENCLR_RXRDYCLR);
+		break;
+	default:
+		break;
+	}
+}
+
+/*
+ *  1文字出力（ポーリングでの出力）
+ */
+void sio_pol_snd_chr(char c, ID siopid)
+{
+	uint32_t base = TADR_USART_BASE(SIOPID2INDEX(siopid));
+	volatile uint32_t tmp;
+
+	do {
+		tmp = sil_rew_mem((void *)TADR_USART_STAT(base));
+	} while((tmp & TBITPTN_USART_STAT_TXRDY) == 0);
+
+	sil_wrw_mem((void *)TADR_USART_TXDATA(base), (uint32_t)c);
+}
Index: /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_serial.cfg
===================================================================
--- /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_serial.cfg	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_serial.cfg	(revision 411)
@@ -0,0 +1,10 @@
+/*
+ *  SIOドライバ（LPCXPRESSO-LPC812用）のコンフィグレーションファイル
+ */
+
+#include "target_syssvc.h"
+#include "target_serial.h"
+
+ATT_INI({ TA_NULL, 0, sio_initialize });
+ATT_ISR({ TA_NULL, SIO_PORTID, INTNO_SIO, sio_isr, 1 });
+CFG_INT(INTNO_SIO, { INTATR_SIO, INTPRI_SIO });
Index: /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_serial.h
===================================================================
--- /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_serial.h	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_serial.h	(revision 411)
@@ -0,0 +1,146 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2013-2015 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ * 
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ * 
+ */
+
+/*
+ *  シリアルI/Oデバイス（SIO）ドライバ(LPCXPRESSO-LPC812用)
+ */
+
+#ifndef TOPPERS_TARGET_SERIAL_H
+#define TOPPERS_TARGET_SERIAL_H
+
+#include "lpcxpresso_lpc812.h"
+#include "target_syssvc.h"
+
+/*
+ *  SIOの割込みベクタ番号
+ */
+#if (SIO_PORTID == 1)
+#define INHNO_SIO		INT_UART0
+#define INTNO_SIO		INT_UART0
+#elif (SIO_PORTID == 2)
+#define INHNO_SIO		INT_UART1
+#define INTNO_SIO		INT_UART1
+#endif
+#define INTPRI_SIO		-3				/* 割込み優先度 */
+#define INTATR_SIO		0				/* 割込み属性 */
+
+/*
+ *  コールバックルーチンの識別番号
+ */
+#define SIO_RDY_SND    1U        /* 送信可能コールバック */
+#define SIO_RDY_RCV    2U        /* 受信通知コールバック */
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  シリアルポートの管理ブロック
+ */
+typedef struct sio_port_control_block {
+	uint32_t reg;
+	intptr_t exinf;
+} SIOPCB;
+
+/*
+ *  SIO初期化
+ */
+extern void sio_initialize(intptr_t exinf);
+
+/*
+ *  シリアルオープン
+ */
+extern SIOPCB *sio_opn_por(ID siopid, intptr_t exinf);
+
+/*
+ *  シリアルクローズ
+ */
+extern void sio_cls_por(SIOPCB *p_siopcb);
+
+/*
+ *  割込みハンドラ
+ */
+extern void sio_isr(intptr_t exinf);
+
+/*
+ *  1文字送信
+ */
+extern bool_t sio_snd_chr(SIOPCB *siopcb, char c);
+
+/*
+ *  1文字受信
+ */
+extern int_t sio_rcv_chr(SIOPCB *siopcb);
+
+/*
+ *  コールバックの許可
+ */
+extern void sio_ena_cbr(SIOPCB *siopcb, uint_t cbrtn);
+
+/* 
+ *  コールバックの禁止
+ */
+extern void sio_dis_cbr(SIOPCB *siopcb, uint_t cbrtn);
+
+/*
+ *  送信可能コールバック
+ */
+extern void sio_irdy_snd(intptr_t exinf);
+
+/*
+ *  受信通知コールバック
+ */
+extern void sio_irdy_rcv(intptr_t exinf);
+
+/*
+ *  1文字送信（ポーリングでの出力）
+ */
+extern void sio_pol_snd_chr(char c, ID siopid);
+
+/*
+ *  ターゲットのシリアル初期化
+ */
+extern void target_usart_init(ID siopid);
+
+/*
+ *  低レベル出力初期化
+ */
+extern void target_low_output_init(ID siopid);
+
+#endif /* TOPPERS_MACRO_ONLY */
+#endif /* TOPPERS_TARGET_SERIAL_H */
Index: /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_sil.h
===================================================================
--- /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_sil.h	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_sil.h	(revision 411)
@@ -0,0 +1,70 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2013,2014 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ * 
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ * 
+ */
+
+/*
+ *  sil.hのターゲット依存部
+ *
+ *  このインクルードファイルは，sil.hの先頭でインクルードされる．他のファ
+ *  イルからは直接インクルードすることはない．このファイルをインクルー
+ *  ドする前に，t_stddef.hがインクルードされるので，それらに依存しても
+ *  よい．
+ */
+
+#ifndef TOPPERS_TARGET_SIL_H
+#define TOPPERS_TARGET_SIL_H
+
+#include "LPC812M101FDH20.h"
+
+/*
+ *  プロセッサで共通な定義
+ */
+#include "armv6_m_gcc/prc_sil.h"
+
+/*
+ *  一般共通レジスタ操作関数
+ */
+#define sil_orb( mem, val )		sil_wrb_mem( mem, sil_reb_mem( mem ) | val )
+#define sil_andb( mem, val )	sil_wrb_mem( mem, sil_reb_mem( mem ) & val )
+#define sil_orh( mem, val )		sil_wrh_mem( mem, sil_reh_mem( mem ) | val )
+#define sil_andh( mem, val )	sil_wrh_mem( mem, sil_reh_mem( mem ) & val )
+#define sil_orw( mem, val )		sil_wrw_mem( mem, sil_rew_mem( mem ) | val )
+#define sil_andw( mem, val )	sil_wrw_mem( mem, sil_rew_mem( mem ) & val )
+
+#endif /* TOPPERS_TARGET_SIL_H */
Index: /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_stddef.h
===================================================================
--- /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_stddef.h	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_stddef.h	(revision 411)
@@ -0,0 +1,84 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2013,2014 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ * 
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ * 
+ */
+
+/*
+ *  t_stddef.hのターゲット依存部(LPCXPRESSO-LPC812用)
+ *
+ *  このインクルードファイルは，t_stddef.hの先頭でインクルードされる．
+ *  他のファイルからは直接インクルードすることはない．他のインクルード
+ *  ファイルに先立って処理されるため，他のインクルードファイルに依存し
+ *  てはならない．
+ */
+
+#ifndef TOPPERS_TARGET_STDDEF_H
+#define TOPPERS_TARGET_STDDEF_H
+
+/*
+ *  ターゲットを識別するためのマクロの定義
+ */
+#define TOPPERS_LPCXPRESSO_LPC812			/* システム略称 */
+
+
+/*
+ *  開発環境で共通な定義
+ */
+#define TOPPERS_STDFLOAT_TYPE1
+#include "gcc/tool_stddef.h"
+
+/*
+ *  プロセッサで共通な定義
+ */
+#include "armv6_m_gcc/prc_stddef.h"
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  アサーションの失敗時の実行中断処理（T.B.D）
+ */
+Inline void
+TOPPERS_assert_abort(void)
+{
+	while(1)
+	{
+	}
+}
+
+#endif /* TOPPERS_MACRO_ONLY */
+#endif /* TOPPERS_TARGET_STDDEF_H */
Index: /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_support.S
===================================================================
--- /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_support.S	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_support.S	(revision 411)
@@ -0,0 +1,189 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2012 by Meika Sugimoto
+ *  Copyright (C) 2013-2015 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ * 
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ * 
+ */
+
+/*
+ * ターゲット依存部　アセンブリ言語（LPCXPRESSO-LPC812用）
+ */
+
+#define TOPPERS_MACRO_ONLY
+#define UINT_C(val)			(val)
+#define ULONG_C(val)		(val)
+#include "kernel_impl.h"
+#include "lpcxpresso_lpc812.h"
+
+/*
+ * 低レベルのターゲット依存の初期化
+ *
+ * メモリ初期化の前に呼び出される
+ */
+	.globl	hardware_init_hook
+
+	.text
+	.align 2
+	.syntax unified
+	.code 16
+	.thumb
+	.type hardware_init_hook, function
+hardware_init_hook:
+	// SWM, IOCON のクロックON
+	ldr 	r3, .L6+4	// TADR_SYSAHBCLKCTRL
+	ldr 	r1, .L6+8	// TVALUE_SYSAHBCLKCTRL
+	ldr 	r2, [r3]
+	orrs	r2, r2, r1
+	str 	r2, [r3]
+
+#ifdef USE_SYSTEM_PLL
+#ifdef USE_EXTERNAL_OSCILLATOR
+	// PIO0_8, PIO0_9 を非活性に
+	ldr 	r3, .L6+16	// TADR_IOCON_BASE
+
+	movs 	r1, #TBITPTN_IOCON_PIOx_MODE
+	mvns	r1, r1
+	ldr 	r2, [r3, #TOFFSET_IOCON_PIO0_8]
+	ands	r2, r2, r1
+	str 	r2, [r3, #TOFFSET_IOCON_PIO0_8]
+
+	ldr 	r2, [r3, #TOFFSET_IOCON_PIO0_9]
+	ands	r2, r2, r1
+	str 	r2, [r3, #TOFFSET_IOCON_PIO0_9]
+
+	// XTALIN, XTALOUT 端子を有効に
+	ldr 	r3, .L6+20	// TADR_PINENABLE0
+	movs 	r1, #(TBITPTN_SWM_PINENABLE0_XTALINEN | TBITPTN_SWM_PINENABLE0_XTALOUTEN)
+	mvns	r1, r1
+	ldr 	r2, [r3]
+	ands	r2, r2, r1
+	str 	r2, [r3]
+
+	// 水晶発信器 power on
+	ldr 	r3, .L6+12	// TADR_PDRUNCFG
+	movs 	r1, #TBITPTN_SYSCON_PDRUNCFG_SYSOSCPD
+	mvns	r1, r1
+	ldr 	r2, [r3]
+	ands	r2, r2, r1
+	str 	r2, [r3]
+
+	// システムオシレータの設定
+	ldr 	r3, .L6	// TADR_SYSCON_BASE
+	movs	r2, #TVALUE_SYSCON_SYSOSCCTRL
+	str 	r2, [r3, #TOFFSET_SYSCON_SYSOSCCTRL]
+
+	// ちょっと待つ
+	movs	r1, #0
+.L1:
+	str     r1, [sp, #4]
+	cmp     r1, #199
+	bhi     .L2
+	nop
+	adds     r1, #1
+	b       .L1
+#endif /* USE_EXTERNAL_OSCILLATOR */
+
+.L2:
+	// System PLL クロックの選択 (XTALまたはIRCオシレータ)
+	ldr 	r3, .L6	// TADR_SYSCON_BASE
+	movs	r2, #TVALUE_SYSCON_SYSPLLCLKSEL
+	str 	r2, [r3, #TOFFSET_SYSCON_SYSPLLCLKSEL]
+
+	// クロックソースの更新
+	movs	r2, #TBITPTN_SYSCON_SYSPLLCLKUEN_ENA
+	str 	r2, [r3, #TOFFSET_SYSCON_SYSPLLCLKUEN]
+
+	// 更新されるまで待つ
+.L3:
+	ldr 	r1, [r3, #TOFFSET_SYSCON_SYSPLLCLKUEN]
+	ands	r1, r2  	// r1 <-- r1(=SYSPLLCLKUEN) & r2(=TBITPTN_SYSPLLCLKUEN_ENA)
+	beq 	.L3     	// if(r1 == 0) goto .L3
+
+	// PLLの逓倍率の設定
+	movs	r2, #TVALUE_SYSCON_SYSPLLCTRL
+	str 	r2, [r3, #TOFFSET_SYSCON_SYSPLLCTRL]
+
+	// System PLL 電源ON
+	ldr 	r3, .L6+12	// TADR_PDRUNCFG
+	movs 	r1, #TBITPTN_SYSCON_PDRUNCFG_SYSPLLPD
+	mvns	r1, r1
+	ldr 	r2, [r3]
+	ands	r2, r2, r1
+	str 	r2, [r3]
+
+	// PLLロック待ち
+	ldr 	r3, .L6	// TADR_SYSCON_BASE
+	movs	r2, #TBITPTN_SYSCON_SYSPLLSTAT_LOCK
+.L4:
+	ldr 	r1, [r3, #TOFFSET_SYSCON_SYSPLLSTAT]
+	ands	r1, r2  	// r1 <-- r1(=SYSPLLSTAT) & r2(=TBITPTN_SYSPLLSTAT_LOCK)
+	beq 	.L4         // if(r1 == 0) goto .L4
+#endif /* USE_SYSTEM_PLL */
+
+	// メインクロック出力の選択
+	ldr 	r3, .L6	// TADR_SYSCON_BASE
+	movs	r2, #TVALUE_SYSCON_MAINCLKSEL
+	str 	r2, [r3, #TOFFSET_SYSCON_MAINCLKSEL]
+
+	// メインクロックソースの更新
+	movs	r2, #TBITPTN_SYSCON_MAINCLKUEN_ENA
+	str 	r2, [r3, #TOFFSET_SYSCON_MAINCLKUEN]
+
+	// 更新されるまで待つ
+.L5:
+	ldr 	r1, [r3, #TOFFSET_SYSCON_MAINCLKUEN]
+	ands	r1, r2	// r1 <-- r1(=MAINCLKUEN) & r2(=TBITPTN_MAINCLKUEN_ENA)
+	beq 	.L5   	// if(r1 == 0) goto .L5
+
+	// システムクロックの分周比設定
+	movs	r2, #TVALUE_SYSCON_SYSAHBCLKDIV
+	str 	r2, [r3, #TOFFSET_SYSCON_SYSAHBCLKDIV]
+
+	// トレースクロックの設定(必要なら．Not Yet)
+
+	bx	lr
+
+	.align 2
+.L6:
+	.word	TADR_SYSCON_BASE
+	.word	TADR_SYSCON_SYSAHBCLKCTRL
+	.word	TVALUE_SYSCON_SYSAHBCLKCTRL
+	.word	TADR_SYSCON_PDRUNCFG
+	.word	TADR_IOCON_BASE
+	.word	TADR_SWM_PINENABLE0
Index: /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_syssvc.h
===================================================================
--- /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_syssvc.h	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_syssvc.h	(revision 411)
@@ -0,0 +1,110 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2013-2015 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ * 
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ * 
+ */
+
+/*
+ *  システムサービスのターゲット依存部(LPCXPRESSO-LPC812 用)
+ *
+ *  システムサービスのターゲット依存部のインクルードファイル．このファ
+ *  イルの内容は，コンポーネント記述ファイルに記述され，このファイルは
+ *  無くなる見込み．
+ */
+
+#ifndef TOPPERS_TARGET_SYSSVC_H
+#define TOPPERS_TARGET_SYSSVC_H
+
+/*
+ *  ターゲットシステムのハードウェア資源の定義
+ */
+#include "lpcxpresso_lpc812.h"
+
+/*
+ *  トレースログに関する設定
+ */
+#ifdef TOPPERS_TRACE_ENABLE
+#include "logtrace/trace_config.h"
+#endif /* TOPPERS_TRACE_ENABLE */
+
+/*
+ *  起動メッセージのターゲットシステム名
+ */
+#define TARGET_NAME    "LPCXPRESSO-LPC812"
+
+/*
+ *  起動メッセージにターゲット依存部の著作権表示を
+ *  追加するためのマクロ．
+ */
+#ifdef PRC_COPYRIGHT
+#define TARGET_COPYRIGHT	PRC_COPYRIGHT
+#endif /* PRC_COPYRIGHT */
+
+/*
+ *  システムログの低レベル出力のための文字出力
+ *
+ *  ターゲット依存の方法で，文字cを表示/出力/保存する．
+ */
+extern void	target_fput_log(char c);
+
+/*
+ *  シリアルポート数の定義
+ *
+ *  低レベルドライバ(PDIC)では USART0（ポート番号1）と USART1（ポート番号2）をサポートする
+ *  シリアル・インタフェースドライバ(GDIC)では1ポートのみサポートする
+ *  
+ */
+#define TNUM_PORT        (1)	/* GDICでサポートするシリアルポートの数 */
+#define TNUM_SIOP        (2)	/* PDICでサポートするシリアルポートの数 */
+#if TNUM_PORT > TNUM_SIOP
+#error "It must be TNUM_PORT <= TNUM_SIOP"
+#endif
+
+
+/*
+ *  ボーレート
+ *  動作確認済：230400, 115200, 57600, 38400, 28800, 19200, 14400,
+ *            9600, 7200, 4800, 3600, 2400, 1800, 1200, 600, 300
+ */
+#define UART_BAUDRATE		(19200)
+
+/*
+ *  使用するシリアルポートID(低レベルドライバのID)
+ */
+#define SIO_PORTID		(1)
+
+#endif /* TOPPERS_TARGET_SYSSVC_H */
Index: /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_test.h
===================================================================
--- /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_test.h	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_test.h	(revision 411)
@@ -0,0 +1,64 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2013-2015 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ * 
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ * 
+ */
+
+/*
+ *		テストプログラムのターゲット依存定義(LPCXPRESSO-LPC812用)
+ */
+
+#ifndef TOPPERS_TARGET_TEST_H
+#define TOPPERS_TARGET_TEST_H
+
+#define STACK_SIZE			(128)
+#define ALL_STACKSIZE      	(1024)
+#define INTERRUPT_STACKSIZE	(256)
+
+/*
+ *  使用するシリアルポートID
+ */
+#define TASK_PORTID			(1)
+
+#define LOOP_REF	ULONG_C(10000000)
+
+/*
+ *  プロセッサ依存モジュール(ARMV6-M用)
+ */
+#include "armv6_m_gcc/prc_test.h"
+
+#endif /* TOPPERS_TARGET_TEST_H */
Index: /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_timer.cfg
===================================================================
--- /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_timer.cfg	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_timer.cfg	(revision 411)
@@ -0,0 +1,7 @@
+/*
+ *  タイマドライバのコンフィギュレーションファイル(LPCXPRESSO-LPC812用)
+ */
+
+#include "target_timer.h"
+
+INCLUDE("arch/armv6_m_gcc/prc_timer.cfg");
Index: /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_timer.h
===================================================================
--- /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_timer.h	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_timer.h	(revision 411)
@@ -0,0 +1,66 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2013,2014 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ * 
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ * 
+ */
+
+/*
+ *  タイマドライバ(LPCXPRESSO-LPC812用)
+ */
+
+#ifndef TOPPERS_TARGET_TIMER_H
+#define TOPPERS_TARGET_TIMER_H
+
+#include "lpcxpresso_lpc812.h"
+
+/*
+ *  タイマ値の内部表現とミリ秒単位との変換
+ */
+#define TIMER_CLOCK		(SYSTIC_CLOCK / 1000)
+
+/*
+ *  タイマ割込みハンドラ登録のための定数
+ */
+#define INTPRI_TIMER    (-2)          /* 割込み優先度 */
+#define INTATR_TIMER    TA_NULL       /* 割込み属性 */
+
+/*
+ *  プロセッサ依存部で定義する
+ */
+#include "armv6_m_gcc/prc_timer.h"
+
+#endif /* TOPPERS_TARGET_TIMER_H */
Index: /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_unrename.h
===================================================================
--- /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_unrename.h	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_unrename.h	(revision 411)
@@ -0,0 +1,15 @@
+/* This file is generated from target_rename.def by genrename. */
+
+/* This file is included only when target_rename.h has been included. */
+#ifdef TOPPERS_TARGET_RENAME_H
+#undef TOPPERS_TARGET_RENAME_H
+
+
+#ifdef TOPPERS_LABEL_ASM
+
+
+#endif /* TOPPERS_LABEL_ASM */
+
+#include "armv6_m_gcc/prc_unrename.h"
+
+#endif /* TOPPERS_TARGET_RENAME_H */
Index: /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_user.txt
===================================================================
--- /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_user.txt	(revision 411)
+++ /ssp_armv6_m_gcc/trunk/lpcxpresso_lpc812_gcc/target_user.txt	(revision 411)
@@ -0,0 +1,144 @@
+=====================================================================
+                 LPCXPRESSO-LPC812ターゲット依存部 (ssp-1.3.0対応）
+                               Last Modified: '15/05/22
+=====================================================================
+
+○概要
+
+LPCXPRESSO-LPC812ターゲット依存部は，プロセッサにLPC812(Cortex-M0+)を搭載した，
+LPCXpresso LPC812ボードをサポートしている．
+
+
+○カーネルの使用リソース
+
+カーネルは以下のリソースを使用する．
+
+  ・ROM
+     コードを配置する．
+     使用量は使用するAPIの数に依存する．
+
+  ・RAM
+     データを配置する．
+  	 使用量はオブジェクト数に依存する．
+  
+  ・SysTick
+     カーネル内部のティックの生成に用いる．
+     
+  ・Universal Synchronous Asynchronous Receiver Transmitter(USART)ポート0
+     コンソールの出力に使用．
+
+
+○他のターゲットへの移植
+
+LPCXPRESSO-LPC812ターゲット依存部で使用するシリアルは，LPC812の内蔵機能のみを使用するため，
+LPC800系のCotex-M0+を用いた環境には容易にポーティングが可能である．
+ポーティングに関しては，以下の初期化ルーチンにターゲット毎の初期化を追加すればよい．
+
+  ・target_initialize() : target_config.c
+    ターゲット依存部の初期化（C言語）
+  ・_hardware_init_hook : target_support.S
+    低レベルのターゲット依存の初期化
+    スタートアップモジュールの中で，メモリの初期化の前に呼び出される
+
+
+○デバッグ環境
+
+デバッグ環境としては，LPCXpresso LPC812に搭載されるSWDデバッガおよび
+開発およびデバッグの環境として LPCXpresso IDE の使用を前提とする．
+
+LPCXpresso IDEについては、以下のサイトを参照
+	http://www.lpcware.com/lpcxpresso/home
+
+
+○コンパイラ
+
+GCC で動作確認を行った．GCC は，LPCXpresso IDEに同梱されているものを利用した．
+動作確認に使用したツールのバージョンは以下のとおり．
+	・GCC 4.9.3(LPCXpresso IDE 7.7.2)
+
+GCC については，同等のツールが以下のサイトからも入手することが可能である．
+https://launchpad.net/gcc-arm-embedded/
+
+○割込み優先度
+
+割込み優先度として指定可能な範囲は，-3 〜 -1 である．
+
+○コンソール出力
+
+コンソール出力には，USART0を用いる．LPCXPRESSO-LPC812はRS232Cポートを
+搭載していないため，ユニバーサル基板などを用いて当該ポートをPCに接続する
+必要がある．その際，RS-232Cドライバを介する必要がある点も注意すること．
+USART0の送信/受信ピンはSWMの機能により自由に設定が可能であるが，
+既定ではP0_0(RXD), P0_4(TXD) に設定されている．
+
+通信フォーマットは以下の通りである．
+
+  ・19200bps, Data 8bit, Parity none, Stop 1bit, Flow control none
+
+○アドレスマッピング
+
+　0x00000000 - 0x00003FFF 内蔵FlashROM 16KB
+　　　　　　　　　　　　　　　・vectorセクション
+　　　　　　　　　　　　　　　・textセクション
+　　　　　　　　　　　　　　　・rodataセクション
+　0x10000000 - 0x10000FFF 内蔵RAM 4KB
+　　　　　　　　　　　　　　　・dataセクション
+　　　　　　　　　　　　　　　・bssセクション
+
+○各種設定の変更
+
+幾つかのパラメータは変更可能になっている．設定ファイル毎に設定可能項目
+は次のようになっている．
+
+●Makefile.target の設定項目
+
+・GCC_TARGET
+  GCCの suffix を定義
+
+・TEXT_START_ADDRESS/DATA_START_ADDRESS
+  テキストセクション，データセクションの開始アドレス
+
+・INCLUDES
+  インクルード指定
+
+・COPTS
+  Cコンパイラへのオプション
+
+・LDFLAGS
+  リンカへのオプション
+
+・USE_CMSIS
+  CMSISを利用する場合，trueに設定する．
+  デバイス定義ファイルLPC8xx.h を include してデバイスレジスタ定義を利用することが可能となる．
+  そのためには，インクルードファイルのサーチディレクトリとして LPC8xx.h の存在するファイルのパスを
+  CMSIS_INCLUDE_PATHに指定する (もしくは，LPCXpresso IDE でサーチパスの設定をしても良い)
+
+  また，ライブラリファイル(libCMSIS_CORE_LPC8xx.a)の利用は想定していない．
+  少なくともsystem_LPC8xx.c の SystemInit に相当する処理（クロック設定）については
+  SSPのシステム起動時に実施しており，基本的に呼び出す必要はない．
+  ※ WDTの初期設定はおこなっていないため，必要ならば初期化が必要である．
+
+・USE_MTB
+  LPC800シリーズに搭載されているMTB(Micro Trace Buffer)を利用する場合，trueに設定する
+  その場合，バッファのサイズを MTB_BUF_SIZE に，バイト単位で設定する
+
+●target_config.h の設定項目
+
+・DEFAULT_ISTKSZ
+  デフォルトの非タスクコンテキスト用のスタックサイズ
+
+・SIL_DLY_TIM1/2 (現時点では未検証)
+  微少時間待ちのための定義
+
+●target_syssvc.h の設定項目
+
+・UART_BAUDRATE
+  コンソールに使用するポート（USART0）のボーレート
+
+
+○変更履歴
+・2015/05/21
+  ・ssp-1.3.0対応
+
+ ・2013/06/19
+　　新規作成
