Index: /ssp_arm_gcc/trunk/arch/arm_gcc/MANIFEST
===================================================================
--- /ssp_arm_gcc/trunk/arch/arm_gcc/MANIFEST	(revision 92)
+++ /ssp_arm_gcc/trunk/arch/arm_gcc/MANIFEST	(revision 92)
@@ -0,0 +1,26 @@
+PACKAGE ssp_arch_arm_gcc
+VERSION 1.3.0
+
+MANIFEST
+README.txt
+
+common/arm.h
+common/core.tf
+common/core_cfg1_out.h
+common/core_check.tf
+common/core_config.c
+common/core_config.h
+common/core_def.csv
+common/core_insn.h
+common/core_kernel.h
+common/core_rename.def
+common/core_rename.h
+common/core_sil.h
+common/core_stddef.h
+common/core_support.S
+common/core_unrename.h
+common/core_user.txt
+common/Makefile.core
+common/start.S
+
+INCLUDE ../../target/at91skyeye_gcc/MANIFEST
Index: /ssp_arm_gcc/trunk/arch/arm_gcc/README.txt
===================================================================
--- /ssp_arm_gcc/trunk/arch/arm_gcc/README.txt	(revision 92)
+++ /ssp_arm_gcc/trunk/arch/arm_gcc/README.txt	(revision 92)
@@ -0,0 +1,24 @@
+                    ARM依存部(GCC版) ディレクトリ解説
+
+                                   Last Modified: 2011 Nov 22 18:39:11
+
+
+本ディレクトリ（./arch/arm_gcc）は，ARMコア及び，ARMコアを用いたチップ
+に依存し，コンパイラとしてGCCを対象した記述を置くためのディレクトリで
+ある．
+
+ターゲットディレクトリ（./target）との切り分けは，本ディレクトリは，特
+定のボードに依存しない再利用可能な記述を置こととし，ターゲットディレク
+トリは再利用の可能性が低いボードに依存した記述を置くこととする．
+
+再利用可能な範囲としては，ARMコアを用いたチップをまでを想定している．
+そのため，本ディレクトリに置く依存部をチップ依存部と呼ぶ．各チップ依存
+部はチップ名でディレクトリを作成し，その下に関連するファイルを置く．
+
+一方，ARMコアに依存した記述は，コア依存部と呼び，commonディレクトリ以
+下に置く．各チップ依存部は必要に応じてコア依存部のファイルを使用する．
+コア依存部に関しては，common/core_user.txt を参照のこと．
+
+チップによっては，コア依存部と同等の機能を持たない場合もある．その場合
+は，チップ依存部を作成せず，ターゲット依存部とコア依存部のファイルを組
+み合わせればよい．
Index: /ssp_arm_gcc/trunk/arch/arm_gcc/common/Makefile.core
===================================================================
--- /ssp_arm_gcc/trunk/arch/arm_gcc/common/Makefile.core	(revision 92)
+++ /ssp_arm_gcc/trunk/arch/arm_gcc/common/Makefile.core	(revision 92)
@@ -0,0 +1,37 @@
+#
+#		Makefile のコア依存部（ARM用）
+#
+
+#
+#  コア依存部ディレクトリ名の定義
+#
+COREDIR = $(SRCDIR)/arch/$(PRC)_$(TOOL)/common
+
+#
+#  ツール依存部ディレクトリ名の定義 
+#
+TOOLDIR = $(SRCDIR)/arch/$(TOOL)
+
+#
+#  コンパイルオプション
+#
+INCLUDES := $(INCLUDES) -I$(COREDIR) -I$(TOOLDIR)
+LIBS := $(LIBS) -lgcc
+
+#
+#  カーネルに関する定義
+#
+KERNEL_DIR := $(KERNEL_DIR) $(COREDIR)
+KERNEL_ASMOBJS := $(KERNEL_ASMOBJS) core_support.o
+KERNEL_COBJS := $(KERNEL_COBJS) core_config.o
+
+#
+#  依存関係の定義
+#
+kernel_cfg.timestamp: $(COREDIR)/core.tf
+$(OBJFILE): $(COREDIR)/core_check.tf
+
+#
+#  コンフィギュレータ関係の変数の定義
+#
+CFG_TABS := $(CFG_TABS) --cfg1-def-table $(COREDIR)/core_def.csv 
Index: /ssp_arm_gcc/trunk/arch/arm_gcc/common/arm.h
===================================================================
--- /ssp_arm_gcc/trunk/arch/arm_gcc/common/arm.h	(revision 92)
+++ /ssp_arm_gcc/trunk/arch/arm_gcc/common/arm.h	(revision 92)
@@ -0,0 +1,92 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel  
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2006 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: arm.h 619 2014-03-18 06:10:27Z nmir-saito $
+ */
+
+/*
+ *  ARMのハードウェア資源の定義
+ */
+
+#ifndef TOPPERS_ARM_H
+#define TOPPERS_ARM_H
+
+/*
+ *  ARM 例外ベクタ
+ */
+#define SVC_Vector    UINT_C(0x00)
+#define UND_Vector    UINT_C(0x04)
+#define SWI_Vector    UINT_C(0x08)
+#define PRFA_Vector   UINT_C(0x0C)
+#define DATAA_Vector  UINT_C(0x10)
+#define IRQ_Vector    UINT_C(0x18)
+#define FIQ_Vector    UINT_C(0x1C)
+
+/*
+ * ARM 例外ベクタ番号
+ */
+#define SVC_Number    UINT_C(0)
+#define UND_Number    UINT_C(1)
+#define SWI_Number    UINT_C(2)
+#define PRFA_Number   UINT_C(3)
+#define DATAA_Number  UINT_C(4)
+#define UNNOWN_Number UINT_C(5)
+#define IRQ_Number    UINT_C(6)
+#define FIQ_Number    UINT_C(7)
+
+/*
+ *  CPSR 割込み禁止ビット
+ */
+#define CPSR_INT_MASK UINT_C(0xC0)
+#define CPSR_IRQ_BIT  UINT_C(0x80)
+#define CPSR_FIQ_BIT  UINT_C(0x40)
+
+/*
+ *  CPSR のモードビット
+ */
+#define CPSR_MODE_MASK   UINT_C(0x1f)
+#define CPSR_USER        UINT_C(0x10)
+#define CPSR_FIQ         UINT_C(0x11)
+#define CPSR_IRQ         UINT_C(0x12)
+#define CPSR_SVC         UINT_C(0x13)
+#define CPSR_ABT         UINT_C(0x17)
+#define CPSR_UND         UINT_C(0x1B)
+#define CPSR_SYS         UINT_C(0x1F)
+
+#endif /* TOPPERS_ARM_H */
Index: /ssp_arm_gcc/trunk/arch/arm_gcc/common/core.tf
===================================================================
--- /ssp_arm_gcc/trunk/arch/arm_gcc/common/core.tf	(revision 92)
+++ /ssp_arm_gcc/trunk/arch/arm_gcc/common/core.tf	(revision 92)
@@ -0,0 +1,36 @@
+$ 
+$     パス2のコア依存テンプレート（ARM用）
+$
+
+$
+$  有効なCPU例外ハンドラ番号
+$
+$EXCNO_VALID = { 1,2,3,4,6 }$
+
+$
+$  DEF_EXCで使用できるCPU例外ハンドラ番号
+$
+$EXCNO_DEFEXC_VALID = EXCNO_VALID$
+
+$
+$  標準テンプレートファイルのインクルード
+$
+$INCLUDE "kernel/kernel.tf"$
+
+$
+$  例外ハンドラテーブル
+$
+$FILE "kernel_cfg.c"$
+$NL$
+const FP _kernel_exch_tbl[TNUM_EXCH] = {$NL$
+$FOREACH excno {0,1,...,6}$ 
+	$IF LENGTH(EXC.EXCNO[excno])$
+		$TAB$(FP)($EXC.EXCHDR[excno]$),
+	$ELSE$
+		$TAB$(FP)(_kernel_default_exc_handler),
+	$END$
+	$SPC$$FORMAT("/* %d */", +excno)$$NL$
+$END$
+$NL$};$NL$
+$NL$
+
Index: /ssp_arm_gcc/trunk/arch/arm_gcc/common/core_cfg1_out.h
===================================================================
--- /ssp_arm_gcc/trunk/arch/arm_gcc/common/core_cfg1_out.h	(revision 92)
+++ /ssp_arm_gcc/trunk/arch/arm_gcc/common/core_cfg1_out.h	(revision 92)
@@ -0,0 +1,11 @@
+/*
+ *  @(#) $Id: core_cfg1_out.h 619 2014-03-18 06:10:27Z nmir-saito $
+ */
+
+/*
+ *		cfg1_out.cをリンクするために必要なスタブの定義
+ */
+
+void sta_ker(void){}
+STK_T *const	_kernel_istkpt;
+
Index: /ssp_arm_gcc/trunk/arch/arm_gcc/common/core_check.tf
===================================================================
--- /ssp_arm_gcc/trunk/arch/arm_gcc/common/core_check.tf	(revision 92)
+++ /ssp_arm_gcc/trunk/arch/arm_gcc/common/core_check.tf	(revision 92)
@@ -0,0 +1,8 @@
+$ 
+$ 		パス3のプロセッサ依存テンプレート（ARM用）
+$ 
+
+$ 
+$  標準テンプレートファイルのインクルード
+$ 
+$INCLUDE "kernel/ssp_kernel_check.tf"$
Index: /ssp_arm_gcc/trunk/arch/arm_gcc/common/core_config.c
===================================================================
--- /ssp_arm_gcc/trunk/arch/arm_gcc/common/core_config.c	(revision 92)
+++ /ssp_arm_gcc/trunk/arch/arm_gcc/common/core_config.c	(revision 92)
@@ -0,0 +1,109 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2006-2012 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: core_config.c 619 2014-03-18 06:10:27Z nmir-saito $
+ */
+
+/*
+ *        コア依存モジュール（ARM用）
+ */
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+
+/*
+ *  コンテキスト参照のための変数
+ */
+uint32_t excpt_nest_count;
+
+/*
+ *  プロセッサ依存の初期化
+ */
+void
+core_initialize()
+{
+	/*
+	 *  カーネル起動時は非タスクコンテキストとして動作させるため1に
+	 */ 
+	excpt_nest_count = 1;
+}
+
+/*
+ *  プロセッサ依存の終了処理
+ */
+void
+core_terminate(void)
+{
+
+}
+
+/*
+ *  CPU例外の発生状況のログ出力
+ *
+ *  CPU例外ハンドラの中から，CPU例外情報ポインタ（p_excinf）を引数とし
+ *  て呼び出すことで，CPU例外の発生状況をシステムログに出力する．
+ */
+#ifdef SUPPORT_XLOG_SYS
+
+void
+xlog_sys(void *p_excinf)
+{
+}
+
+#endif /* SUPPORT_XLOG_SYS */
+
+/*
+ *  例外ベクタから直接実行するハンドラを登録
+ */ 
+void
+x_install_exc(EXCNO excno, FP exchdr)
+{
+	*(((FP*)vector_ref_tbl) + excno) = exchdr;
+}
+
+#ifndef OMIT_DEFAULT_EXC_HANDLER
+/*
+ * 未定義の例外が入った場合の処理
+ */
+void
+default_exc_handler(void){
+	syslog_0(LOG_EMERG, "Unregistered Exception occurs.");
+	ext_ker();
+}
+#endif /* OMIT_DEFAULT_EXC_HANDLER */
Index: /ssp_arm_gcc/trunk/arch/arm_gcc/common/core_config.h
===================================================================
--- /ssp_arm_gcc/trunk/arch/arm_gcc/common/core_config.h	(revision 92)
+++ /ssp_arm_gcc/trunk/arch/arm_gcc/common/core_config.h	(revision 92)
@@ -0,0 +1,395 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2006-2013 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2014,2015 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ * 
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ * 
+ *  @(#) $Id: core_config.h 619 2014-03-18 06:10:27Z nmir-saito $
+ */
+
+
+/*
+ *      コア依存モジュール（ARM用）
+ *
+ *  このインクルードファイルは，target_config.h（または，そこからインク
+ *  ルードされるファイル）のみからインクルードされる．他のファイルから
+ *  直接インクルードしてはならない．
+ */
+
+#ifndef TOPPERS_CORE_CONFIG_H
+#define TOPPERS_CORE_CONFIG_H
+
+/*
+ *  ARM依存の定義
+ */
+#include "arm.h"
+
+/*
+ *  エラーチェック方法の指定
+ */
+#define CHECK_STKSZ_ALIGN	8	/* スタックサイズのアライン単位 */
+#ifndef  __thumb__
+#define CHECK_FUNC_ALIGN	4	/* 関数のアライン単位 */
+#endif /* __thumb__ */
+#define CHECK_FUNC_NONNULL		/* 関数の非NULLチェック */
+#define CHECK_STACK_ALIGN	4	/* スタック領域のアライン単位 */
+#define CHECK_STACK_NONNULL		/* スタック領域の非NULLチェック */
+#define CHECK_MPF_ALIGN		4	/* 固定長メモリプール領域のアライン単位 */
+#define CHECK_MPF_NONNULL		/* 固定長メモリプール領域の非NULLチェック */
+#define CHECK_MB_ALIGN		4	/* 管理領域のアライン単位 */
+
+/*
+ *  CPUロックとするCPSRのパターン
+ */
+#ifndef CPSR_CPULOCK
+#define CPSR_CPULOCK     (CPSR_IRQ_BIT)
+#endif  /* CPSR_CPULOCK */
+
+/*
+ *  割込みロックとするCPSRのパターン
+ */
+#define CPSR_INTLOCK     (CPSR_FIQ_BIT|CPSR_IRQ_BIT)
+
+/*
+ *  CPSRに常にセットするパターン
+ */
+#ifndef CPSR_ALWAYS_SET
+#define CPSR_ALWAYS_SET  0x00
+#endif  /* CPSR_ALWAYS_SET */
+
+/*
+ *  例外の番号
+ */
+#define EXCH_NO_RESET     0
+#define EXCH_NO_UNDEF     1
+#define EXCH_NO_SVC       2
+#define EXCH_NO_PABORT    3
+#define EXCH_NO_DABORT    4
+#define EXCH_NO_IRQ       5
+#define EXCH_NO_FIQ       6
+
+/*
+ *  例外の個数
+ */  
+#define TNUM_EXCH         7
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  非タスクコンテキスト用のスタック初期値
+ */
+#define TOPPERS_ISTKPT(istk, istksz) ((STK_T *)((char *)(istk) + (istksz)))
+
+/*
+ *  プロセッサの特殊命令のインライン関数定義
+ */
+#include <core_insn.h>
+
+
+/*
+ *  TOPPERS標準割込み処理モデルの実現
+ *
+ *  IRQをカーネル管理内，FIQをカーネル管理外の割込みとして扱う．
+ * 
+ *  ARM依存部では，TOPPERS標準割込み処理モデルのうち，CPUロック状態
+ *  のみを取り扱う．割込み優先度マスク，割込み要求禁止フラグに関して
+ *  は，各ターゲット依存部で取り扱う
+ */
+
+/*
+ *  コンテキスト参照のための変数
+ */
+extern uint32_t excpt_nest_count; /* 例外（割込み/CPU例外）のネスト回数のカウント */
+
+/*
+ *  コンテキストの参照
+ *
+ *  ARMでは，タスクコンテキストと非タスクコンテキストの両方をスーパー
+ *  バイザーモードで動作させる．そのため，CPSRの内容では判別できない．
+ *  そのため，例外（割込み/CPU例外）のネスト回数をカウントする変数
+ *  （excpt_nest_count）を用意し，例外の入り口でインクリメントすること
+ *  で，コンテキストを判定する．
+ */
+Inline bool_t
+sense_context(void)
+{
+	return(excpt_nest_count > 0U);
+}
+
+/*
+ *  CPUロック状態への移行
+ */
+Inline void
+x_lock_cpu(void)
+{
+	set_sr(current_sr() | CPSR_CPULOCK | CPSR_ALWAYS_SET);
+	/* クリティカルセクションの前後でメモリが書き換わる可能性がある */
+	ARM_MEMORY_CHANGED;
+}
+
+#define t_lock_cpu()   x_lock_cpu()
+#define i_lock_cpu()   x_lock_cpu()
+
+/*
+ *  CPUロック状態の解除
+ */
+Inline void
+x_unlock_cpu(void)
+{
+	/* クリティカルセクションの前後でメモリが書き換わる可能性がある */
+	ARM_MEMORY_CHANGED;
+	set_sr((current_sr() & (~CPSR_CPULOCK)) | CPSR_ALWAYS_SET);
+}
+
+#define t_unlock_cpu() x_unlock_cpu()
+#define i_unlock_cpu() x_unlock_cpu()
+
+/*
+ *  CPUロック状態の参照
+ */
+Inline bool_t
+x_sense_lock(void)
+{
+	return((current_sr() & CPSR_CPULOCK) == CPSR_CPULOCK);
+}
+
+#define t_sense_lock() x_sense_lock()
+#define i_sense_lock() x_sense_lock()
+
+
+/*
+ *  アイドルループの実装
+ */
+Inline void
+idle_loop(void)
+{
+	x_unlock_cpu();
+    Asm("":::"memory");
+	x_lock_cpu();
+}
+
+
+/*
+ *  タスクディスパッチャ
+ */
+
+/*
+ *  最高優先順位タスクへのディスパッチ（core_support.S）
+ *
+ *  dispatchは，タスクコンテキストから呼び出されたサービスコール処理か
+ *  ら呼び出すべきもので，タスクコンテキスト・CPUロック状態・ディスパッ
+ *  チ許可状態・（モデル上の）割込み優先度マスク全解除状態で呼び出さな
+ *  ければならない．
+ */
+extern void dispatch(void);
+
+/*
+ *  ディスパッチャの動作開始（core_support.S）
+ *
+ *  start_dispatchは，カーネル起動時に呼び出すべきもので，すべての割込
+ *  みを禁止した状態（割込みロック状態と同等の状態）で呼び出さなければ
+ *  ならない．
+ */
+extern void start_dispatch(void) NoReturn;
+
+/*
+ *  現在のコンテキストを捨ててディスパッチ（core_support.S）
+ *
+ *  exit_and_dispatchは，ext_tskから呼び出すべきもので，タスクコンテキ
+ *  スト・CPUロック状態・ディスパッチ許可状態・（モデル上の）割込み優先
+ *  度マスク全解除状態で呼び出さなければならない．
+ */
+extern void exit_and_dispatch(void) NoReturn;
+
+/*
+ *  カーネルの終了処理の呼出し（core_support.S）
+ *
+ *  call_exit_kernelは，カーネルの終了時に呼び出すべきもので，非タスク
+ *  コンテキストに切り換えて，カーネルの終了処理（exit_kernel）を呼び出
+ *  す．
+ */
+extern void call_exit_kernel(void) NoReturn;
+
+/*
+ *  calltexは使用しない
+ */
+#define OMIT_CALLTEX
+     
+/*
+ *  CPU例外ハンドラの登録用テーブル
+ */
+extern const FP exch_tbl[TNUM_EXCH];
+
+/*
+ * ターゲット非依存部に含まれる標準の例外管理機能の初期化処理を用いない
+ */
+#define OMIT_INITIALIZE_EXCEPTION
+
+/*
+ * CPU例外ハンドラの初期化
+ */
+Inline void
+initialize_exception(void)
+{
+}
+
+/*
+ *  CPU例外の発生した時のシステム状態の参照
+ */
+
+/*
+ *  CPU例外の発生した時のコンテキストの参照
+ *
+ *  CPU例外の発生した時のコンテキストが，タスクコンテキストの時にfalse，
+ *  そうでない時にtrueを返す．
+ */
+Inline bool_t
+exc_sense_context(void *p_excinf)
+{
+    return((*((uint32_t *) p_excinf)) != 0U);
+}
+
+/*
+ *  CPU例外の発生した時の(モデル上の)割込み優先度マスクの参照
+ */
+Inline PRI
+exc_get_ipm(void *p_excinf)
+{
+    return((PRI)(*(((uint32_t *)(p_excinf)) + 1)));
+}
+
+/*
+ *  CPU例外の発生した時のCPSRの取得
+ */
+Inline uint32_t
+exc_get_sr(void *p_excinf){
+    return(*(((uint32_t *)(p_excinf)) + 2));    
+}
+
+/*
+ * CPUロック状態か
+ */
+Inline bool_t
+exc_sense_lock(void *p_excinf){
+	return((exc_get_sr(p_excinf) & CPSR_CPULOCK) == CPSR_CPULOCK);
+}
+
+/*
+ * 割込みロック状態か
+ */
+Inline bool_t
+exc_sense_int_lock(void *p_excinf){
+	return((exc_get_sr(p_excinf) & CPSR_INTLOCK) == CPSR_INTLOCK);
+}
+
+/*
+ *  CPU例外の発生した時のコンテキストと割込みのマスク状態の参照
+ *
+ *  CPU例外の発生した時のシステム状態が，カーネル実行中でなく，タスクコ
+ *  ンテキストであり，全割込みロック状態でなく，CPUロック状態でなく，割
+ *  込み優先度マスク全解除状態である時にtrue，そうでない時にfalseを返す
+ *  （CPU例外がカーネル管理外の割込み処理中で発生した場合にもfalseを返
+ *  す）．
+ *
+ */
+Inline bool_t
+exc_sense_intmask(void *p_excinf)
+{
+	return(!exc_sense_context(p_excinf)
+		   && (exc_get_ipm(p_excinf) == 0U)
+		   && !exc_sense_lock(p_excinf)
+		   && !exc_sense_int_lock(p_excinf));
+}
+
+/*
+ *  プロセッサ依存の初期化
+ */
+extern void core_initialize(void);
+
+/*
+ *  プロセッサ依存の終了時処理
+ */
+extern void core_terminate(void);
+
+/*
+ *  ベクターテーブルの命令から参照されるジャンプ先アドレス
+ * （start.S）
+ */
+extern void *vector_ref_tbl;
+
+/*
+ *  例外ベクタから直接実行するハンドラを登録
+ */ 
+extern void x_install_exc(EXCNO excno, FP exchdr);
+
+/*
+ *  例外ハンドラ
+ */
+
+/*
+ *  未定義命令 例外ハンドラ（core_support.S）
+ */
+extern void undef_handler(void);
+
+/*
+ *  SWI 例外ハンドラ（core_support.S）
+ */
+extern void swi_handler(void);
+
+/*
+ *  プリフェッチアボード 例外ハンドラ（core_support.S）
+ */
+extern void prefetch_handler(void);
+
+/*
+ *  データアボード 例外ハンドラ（core_support.S）
+ */
+extern void data_abort_handler(void);
+
+/*
+ *  FIQ 例外ハンドラ（core_support.S）
+ */
+extern void fiq_handler(void);
+
+/*
+ *  未定義の例外が入った場合の処理
+ */
+extern void default_exc_handler(void);
+
+#endif /* TOPPERS_MACRO_ONLY */
+#endif /* TOPPERS_CORE_CONFIG_H */
Index: /ssp_arm_gcc/trunk/arch/arm_gcc/common/core_insn.h
===================================================================
--- /ssp_arm_gcc/trunk/arch/arm_gcc/common/core_insn.h	(revision 92)
+++ /ssp_arm_gcc/trunk/arch/arm_gcc/common/core_insn.h	(revision 92)
@@ -0,0 +1,103 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2006-2010 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: core_insn.h 619 2014-03-18 06:10:27Z nmir-saito $
+ */
+
+
+/*
+ *   コア依存の特殊命令のインライン関数定義（ARM用）
+ */
+
+#ifndef CORE_INSN_H
+#define CORE_INSN_H
+
+#include "arm.h"
+
+/*
+ *  メモリが変更されることをコンパイラに伝えるためのマクロ
+ */
+#define ARM_MEMORY_CHANGED Asm("":::"memory")
+
+/*
+ *  制御レジスタの操作関数
+ */
+
+#ifndef __thumb__
+
+/*
+ *  ステータスレジスタ（CPSR）の現在値の読出し
+ */
+Inline uint32_t
+current_sr(void)
+{
+	uint32_t sr;
+	Asm("mrs  %0,CPSR" : "=r"(sr));
+	return(sr);
+}
+
+/*
+ *  ステータスレジスタ（CPSR）の現在値の変更
+ */
+Inline void
+set_sr(uint32_t sr)
+{
+	Asm("msr CPSR, %0" : : "r"(sr) : "cc");
+}
+
+#else /* __thumb__ */
+
+/*
+ * Thumb Mode では，mrs/msrが使用できないため，関数として，
+ * ARM Mode に変更して実行する． 
+ *  
+ */
+
+/*
+ *  ステータスレジスタ（CPSR）の現在値の読出し
+ */
+extern uint32_t current_sr(void);
+
+/*
+ *  ステータスレジスタ（CPSR）の現在値の変更
+ */
+extern void set_sr(uint32_t sr);
+
+#endif /* __thumb__ */
+#endif /* CORE_INSN_H */
Index: /ssp_arm_gcc/trunk/arch/arm_gcc/common/core_kernel.h
===================================================================
--- /ssp_arm_gcc/trunk/arch/arm_gcc/common/core_kernel.h	(revision 92)
+++ /ssp_arm_gcc/trunk/arch/arm_gcc/common/core_kernel.h	(revision 92)
@@ -0,0 +1,80 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2004-2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2014 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ * 
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ * 
+ *  @(#) $Id: core_kernel.h 619 2014-03-18 06:10:27Z nmir-saito $
+ */
+
+/*
+ *      kernel.hのコア依存部（ARM用）
+ *
+ *  このインクルードファイルは，target_kernel.h（または，そこからインク
+ *  ルードされるファイル）のみからインクルードされる．他のファイルから
+ *  直接インクルードしてはならない．
+ */
+
+#ifndef TOPPERS_CORE_KERNEL_H
+#define TOPPERS_CORE_KERNEL_H
+
+#define TOPPERS_TARGET_SUPPORT_DIS_INT
+#define TOPPERS_TARGET_SUPPORT_ENA_INT
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ * CPU例外からの戻り先アドレスの取得
+ */
+Inline uint32_t
+x_get_exc_raddr(void *p_excinf)
+{
+    return(*(((uint32_t *)(p_excinf)) + 9));
+}
+
+/*
+ * CPU例外からの戻り先アドレスの設定
+ */
+Inline void
+x_set_exc_raddr(void *p_excinf, uint32_t pc)
+{
+    *(((uint32_t *)(p_excinf)) + 9) = pc;
+}
+#endif /* TOPPERS_MACRO_ONLY */
+
+#endif /* TOPPERS_CORE_KERNEL_H */
Index: /ssp_arm_gcc/trunk/arch/arm_gcc/common/core_rename.def
===================================================================
--- /ssp_arm_gcc/trunk/arch/arm_gcc/common/core_rename.def	(revision 92)
+++ /ssp_arm_gcc/trunk/arch/arm_gcc/common/core_rename.def	(revision 92)
@@ -0,0 +1,19 @@
+# kernel_cfg.c
+exch_tbl
+
+# core_support.S
+start_r
+ret_int
+ret_exc
+exch_tbl
+dispatch
+start_dispatch
+exit_and_dispatch
+call_exit_kernel
+default_exc_handler
+
+# core_config.c
+excpt_nest_count
+core_initialize
+core_terminate
+x_install_exc
Index: /ssp_arm_gcc/trunk/arch/arm_gcc/common/core_rename.h
===================================================================
--- /ssp_arm_gcc/trunk/arch/arm_gcc/common/core_rename.h	(revision 92)
+++ /ssp_arm_gcc/trunk/arch/arm_gcc/common/core_rename.h	(revision 92)
@@ -0,0 +1,63 @@
+/* This file is generated from core_rename.def by genrename. */
+
+#ifndef TOPPERS_CORE_RENAME_H
+#define TOPPERS_CORE_RENAME_H
+
+/*
+ *  kernel_cfg.c
+ */
+#define exch_tbl					_kernel_exch_tbl
+
+/*
+ *  core_support.S
+ */
+#define start_r						_kernel_start_r
+#define ret_int						_kernel_ret_int
+#define ret_exc						_kernel_ret_exc
+#define exch_tbl					_kernel_exch_tbl
+#define dispatch					_kernel_dispatch
+#define start_dispatch				_kernel_start_dispatch
+#define exit_and_dispatch			_kernel_exit_and_dispatch
+#define call_exit_kernel			_kernel_call_exit_kernel
+#define default_exc_handler			_kernel_default_exc_handler
+
+/*
+ *  core_config.c
+ */
+#define excpt_nest_count			_kernel_excpt_nest_count
+#define core_initialize				_kernel_core_initialize
+#define core_terminate				_kernel_core_terminate
+#define x_install_exc				_kernel_x_install_exc
+
+#ifdef TOPPERS_LABEL_ASM
+
+/*
+ *  kernel_cfg.c
+ */
+#define _exch_tbl					__kernel_exch_tbl
+
+/*
+ *  core_support.S
+ */
+#define _start_r					__kernel_start_r
+#define _ret_int					__kernel_ret_int
+#define _ret_exc					__kernel_ret_exc
+#define _exch_tbl					__kernel_exch_tbl
+#define _dispatch					__kernel_dispatch
+#define _start_dispatch				__kernel_start_dispatch
+#define _exit_and_dispatch			__kernel_exit_and_dispatch
+#define _call_exit_kernel			__kernel_call_exit_kernel
+#define _default_exc_handler		__kernel_default_exc_handler
+
+/*
+ *  core_config.c
+ */
+#define _excpt_nest_count			__kernel_excpt_nest_count
+#define _core_initialize			__kernel_core_initialize
+#define _core_terminate				__kernel_core_terminate
+#define _x_install_exc				__kernel_x_install_exc
+
+#endif /* TOPPERS_LABEL_ASM */
+
+
+#endif /* TOPPERS_CORE_RENAME_H */
Index: /ssp_arm_gcc/trunk/arch/arm_gcc/common/core_sil.h
===================================================================
--- /ssp_arm_gcc/trunk/arch/arm_gcc/common/core_sil.h	(revision 92)
+++ /ssp_arm_gcc/trunk/arch/arm_gcc/common/core_sil.h	(revision 92)
@@ -0,0 +1,131 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2004-2010 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: core_sil.h 619 2014-03-18 06:10:27Z nmir-saito $
+ */
+
+/*
+ *  sil.hのコア依存部（ARM用）
+ */
+
+#ifndef TOPPERS_CORE_SIL_H
+#define TOPPERS_CORE_SIL_H
+
+#ifndef TOPPERS_MACRO_ONLY
+
+#ifdef __thumb__
+/*
+ *  制御レジスタの操作関数
+ */
+
+/*
+ *  ステータスレジスタ（CPSR）の現在値の読出し
+ */
+extern uint32_t current_sr(void);
+
+/*
+ *  ステータスレジスタ（CPSR）の現在値の変更
+ */
+extern void set_sr(uint32_t sr);
+#endif /* __thumb__ */
+
+/*
+ *  すべての割込み（FIQとIRQ）の禁止
+ */
+Inline uint32_t
+TOPPERS_disint(void)
+{
+    uint32_t  cpsr;
+    uint32_t  irq_fiq_mask;
+
+#ifndef __thumb__
+    Asm("mrs  %0,CPSR" : "=r"(cpsr));
+    irq_fiq_mask = cpsr & (0x40|0x80);
+    cpsr |= (0x40|0x80);
+    Asm("msr CPSR, %0" : : "r"(cpsr) :"memory", "cc");
+#else /* __thumb__ */
+    cpsr = current_sr();
+    irq_fiq_mask = cpsr & (0x40|0x80);
+    cpsr |= (0x40|0x80);
+    set_sr(cpsr);
+#endif /* __thumb__ */
+
+    return(irq_fiq_mask);
+}
+
+/*
+ *  FIQ,IRQの設定
+ */
+Inline void
+TOPPERS_set_fiq_irq(uint32_t TOPPERS_irq_fiq_mask)
+{
+    uint32_t  cpsr;
+
+#ifndef __thumb__
+    Asm("mrs  %0,CPSR" : "=r"(cpsr));
+    cpsr = cpsr & ~(0x40|0x80);
+    cpsr = cpsr | (TOPPERS_irq_fiq_mask & (0x40|0x80));
+    Asm("msr CPSR, %0" : : "r"(cpsr):"memory", "cc");
+#else /* __thumb__ */
+    cpsr = current_sr();
+    cpsr = cpsr &  ~(0x40|0x80);
+    cpsr = cpsr | (TOPPERS_irq_fiq_mask&  (0x40|0x80));
+    set_sr(cpsr);
+#endif /* __thumb__ */
+}
+
+/*
+ *  全割込みロック状態の制御
+ */
+#define SIL_PRE_LOC   uint32_t TOPPERS_irq_fiq_mask
+#define SIL_LOC_INT() ((void)(TOPPERS_irq_fiq_mask = TOPPERS_disint()))
+#define SIL_UNL_INT() (TOPPERS_set_fiq_irq(TOPPERS_irq_fiq_mask))
+
+/*
+ *  微少時間待ち
+ */
+Inline void
+sil_dly_nse(ulong_t dlytim)
+{
+    register uint32_t r0 asm("r0") = (uint32_t) dlytim;    
+    Asm("bl _sil_dly_nse" : "=g"(r0) : "0"(r0) : "lr","cc");
+}
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+#endif /* TOPPERS_CORE_SIL_H */
Index: /ssp_arm_gcc/trunk/arch/arm_gcc/common/core_stddef.h
===================================================================
--- /ssp_arm_gcc/trunk/arch/arm_gcc/common/core_stddef.h	(revision 92)
+++ /ssp_arm_gcc/trunk/arch/arm_gcc/common/core_stddef.h	(revision 92)
@@ -0,0 +1,64 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2004-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: core_stddef.h 619 2014-03-18 06:10:27Z nmir-saito $
+ */
+
+/*
+ *  t_stddef.hのコア依存部（ARM用）
+ *
+ *  このインクルードファイルは，target_stddef.h（または，そこからインク
+ *  ルードされるファイル）のみからインクルードされる．他のファイルから
+ *  直接インクルードしてはならない．
+ */
+
+#ifndef TOPPERS_CORE_STDDEF_H
+#define TOPPERS_CORE_STDDEF_H
+
+/*
+ *  ターゲットを識別するためのマクロの定義
+ */
+#define TOPPERS_ARM          /* プロセッサ略称 */
+
+/*
+ *  スタックの型
+ *  ARMでは，スタックを8byte境界に配置する必要がある
+ */
+#define TOPPERS_STK_T  long long
+
+#endif /* TOPPERS_CORE_STDDEF_H */
Index: /ssp_arm_gcc/trunk/arch/arm_gcc/common/core_support.S
===================================================================
--- /ssp_arm_gcc/trunk/arch/arm_gcc/common/core_support.S	(revision 92)
+++ /ssp_arm_gcc/trunk/arch/arm_gcc/common/core_support.S	(revision 92)
@@ -0,0 +1,403 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2000-2004 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2006-2012 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2014,2015 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ * 
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ * 
+ *  @(#) $Id: core_support.S 619 2014-03-18 06:10:27Z nmir-saito $
+ */
+
+/*
+ *        コア依存モジュール アセンブリ言語部（ARM用）
+ */
+
+#define TOPPERS_MACRO_ONLY
+#define TOPPERS_ASM_MACRO
+#define UINT_C(val)     (val)        /* uint_t型の定数を作るマクロ */
+#define ULONG_C(val)    (val)        /* ulong_t型の定数を作るマクロ */
+#include "kernel_impl.h"
+
+/*
+ *  例外ベクタ
+ */
+	.section vector, "a"
+	.global vector_table
+vector_table:
+	ldr pc, reset_vector       /* リセット             */
+	ldr pc, undef_vector       /* 未定義命令           */
+	ldr pc, swi_vector         /* ソフトウェア割込み   */
+	ldr pc, prefech_vector     /* プリフェッチアボート */
+	ldr pc, data_abort_vector  /* データアボート       */
+	ldr pc, reset_vector
+	ldr pc, irq_vector         /* IRQ                  */
+	ldr pc, fiq_vector         /* FIQ                  */
+
+/*
+ *  例外ベクタの命令から参照される
+ *  ジャンプ先アドレス
+ */
+	.global vector_ref_tbl
+vector_ref_tbl:
+reset_vector:
+	.long  start
+undef_vector:
+	.long  undef_handler
+swi_vector:
+	.long  swi_handler
+prefech_vector:
+	.long  prefetch_handler
+data_abort_vector:
+	.long  data_abort_handler
+irq_vector:
+	.long  irq_handler
+fiq_vector:
+	.long  fiq_handler
+
+/*
+ *  タスクディスパッチャ
+ */
+	.text
+	.align 2
+/*
+ *  ディスパッチャの動作開始
+ */
+	.global start_dispatch
+	.type start_dispatch, function
+start_dispatch:
+	/*
+	 *  このルーチンは，カーネル起動時に，すべての割込みを禁止した状態
+	 * （割込みロック状態と同等）で呼び出される．また，割込みモード（非
+	 *  タスクコンテキストと同等）で呼び出されることを想定している．
+	 *
+	 *  dispatcherは，CPUロック状態，（モデル上の）割込み優先度マスク全
+	 *  解除状態，例外（割込み/CPU例外）のネスト回数0で呼び出す．
+	 *  target_initializeでは，（モデル上の）割込み優先度マスク全解除
+	 *  とし，カーネル管理外の割込みであるFIQを許可することで，
+	 *  CPUロック状態・（モデル上の）割込み優先度マスク全解除状態になる．
+	 *  また，initialize_taskでdisdspをfalseに初期化しているため，ディ
+	 *  スパッチ許可状態になっている．
+	 *  
+	 */
+	msr   cpsr_cxsf, #(CPSR_SVC | CPSR_CPULOCK | CPSR_ALWAYS_SET) /* CPUロック状態へ */
+	ldr   r2, =excpt_nest_count  /* 例外（割込み/CPU例外）のネスト回数を0に */
+	mov   r0, #0
+	str   r0, [r2]
+    ldr   r0, =_kernel_istkpt  	/* スタックポインタを初期化(戻ってこないので) */
+    ldr   sp, [r0]
+    b     dispatcher
+
+
+/*
+ *  カーネルの終了処理の呼出し
+ *
+ *  モードとスタックを非タスクコンテキスト用に切り替え．
+ */
+	.global call_exit_kernel
+	.type call_exit_kernel, function
+call_exit_kernel:
+	msr  cpsr_cxsf, #(CPSR_SVC | CPSR_ALWAYS_SET | CPSR_IRQ_BIT | CPSR_FIQ_BIT) 
+	ldr  r0, =_kernel_istkpt	/* スタックポインタを初期化 */
+	ldr  sp, [r0]
+	b    exit_kernel
+
+/*
+ *  割込みハンドラ/CPU例外ハンドラ出口処理
+ *
+ *  ret_intは，割込みハンドラから戻った直後に実行するルーチンで，
+ *  割込みハンドラ終了後，ターゲット依存の処理を実行した後，
+ *  カーネル管理の割込みを禁止，スタックを割込み前のスタックにした
+ *  状態で呼び出される．
+ */
+	.text
+	.global ret_int
+	.type ret_int, function
+	.global ret_exc
+	.type ret_exc, function
+ret_int:
+ret_exc:
+	/*
+	 *  例外・割込みのネストカウント（excpt_nest_count)のデクリメント
+	 */
+	ldr   r0, =excpt_nest_count   /* r0 <-excpt_nest_count */
+	ldr   r1, [r0]
+	sub   r2, r1, #1
+	str   r2, [r0]
+	cmp   r2, #0                  /* 戻り先が非タスクコンテキストなら */
+	bne   ret_int_1               /* すぐにリターン */
+
+	/*
+	 *  reqflgをチェックする前に割込みを禁止するのは，reqflgをチェック
+	 *  した直後に割込みハンドラが起動され，その中でディスパッチが要求
+	 *  された場合に，すぐにディスパッチされないという問題が生じるため
+	 *  である．
+	 */
+	ldr   r0, =reqflg
+	ldr   r1, [r0]
+	cmp   r1, #0                  /* reqflgがtrueであればret_int_2へ */
+	bne   ret_int_2
+
+ret_int_1:
+	/*
+	 *  割込み処理からのリターンにより，CPUロック解除状態に移行しなければ
+	 *  ならない．
+	 *  ARMでは，CPSRのIRQビットでCPUロック解除状態とするため，単にリターン
+	 *  すればよい．
+	 */
+	ldmfd sp!, {r1}           /* CPSRの復帰処理 */
+	msr   spsr_cxsf, r1       /* 戻り先のcpsrをspsrに設定 */
+	ldmfd sp!, {r0-r3,ip,lr,pc}^ /* コンテキストの復帰，^付きなので、cpsr <- spsr */
+   
+ret_int_2:
+ret_int_3:
+	/*
+	 *  ここへは，CPU例外ハンドラの出口処理からも分岐してくる．
+	 *
+	 *  ここでは，戻り先がタスクであり，スタックは，タスクスタックの上
+	 *  にスクラッチレジスタのみが保存された状態になっている．また，
+	 *  プロセッサは，スーパーバイザーモード・カーネル管理の割込みを禁止
+	 *  した状態となっている．
+	 */
+	ldr   r0, =reqflg   /* reqflgをfalseに */
+	mov   r1, #0
+	str   r1, [r0]
+
+	/*
+	 *  CPUロック状態に移行し，割込み優先度マスクを割込み処理前の値に
+	 *  設定する．
+	 *
+	 *  この時点でCPUロック状態とするのは，dispatcherへ分岐する時と，
+	 *  call_texrtnを呼び出す時に，CPUロック状態になっている必要がある
+	 *  ためである．
+	 *
+	 *  CPUロック状態に関しては，ARMでは，CPSRのIRQビットでCPUロック
+	 *  状態を表現するため，ここでは，特に何も行わない．
+	 *
+	 *  割込み優先度マスクに関しては，ターゲット毎に操作が異なるため，
+	 *  割込みハンドラ終了直後にターゲット依存部で割込み処理前の値に
+	 *  設定する．
+	 */
+
+	/*
+	 *  disdsp が trueである場合には，ディスパッチを行わない．
+	 */
+	ldr   r0, =disdsp
+	ldr   r2, [r0]
+	cmp   r2, #0              /* disdsp がtrueならret_int_4へ */
+	bne   ret_int_4
+
+	/*
+	 * ディスパッチ
+	 */
+	/*** タスク起動は関数呼び出しなので，r4-r11 の保存/復帰は必要ないかもしれない ***/
+	stmfd sp!, {r4-r11}       /* 残りのレジスタを保存 */
+
+	/* CPUロック状態にしておく */
+	msr   cpsr, #(CPSR_SVC | CPSR_IRQ_BIT)
+
+	/* 最高優先タスクをサーチして，タスク起動 */
+	bl	_kernel_search_schedtsk
+	bl	_kernel_run_task
+
+	ldmfd sp!, {r4-r11}       /* レジスタの復帰 */    
+
+ret_int_4:
+	/*
+	 *  割込み処理からのリターンにより，CPU ロック解除状態に移行するよ
+	 *  うにする．ARM は CPSR の IRQ ビットによって CPU ロック状態を表してい
+	 *  るため，そのままリターンすればよい．
+	 */        
+	ldmfd sp!, {r0}             /* spsr を復帰 */
+	msr   spsr,r0               /* 戻り先のcpsrをspsrに設定 */
+	ldmfd sp!,{r0-r3,ip,lr,pc}^ /* タスクに復帰 ^付きなので、cpsr <- spsr */    
+
+
+/*
+ * CPU例外ハンドラ
+ *
+ * CPU例外ハンドラは，非タスクコンテキストで実行する．
+ * 
+ */
+
+/*
+ *  未定義命令 例外ハンドラ
+ */
+	.text
+	.align 2
+	.global undef_handler
+	.type undef_handler, function
+undef_handler:
+	/* 
+	 *  タスクの動作時モード(スーパーバイザーモード)へ
+	 */
+	msr   cpsr_cxsf, #(CPSR_SVC | CPSR_CPULOCK | CPSR_ALWAYS_SET) 
+	stmfd sp!, {r0-r3,ip,lr,pc} /* pcはダミー */
+
+	/*
+	 * spsrと戻り番地を取得するために未定義モードへ
+	 */
+	msr   cpsr_cxsf, #(CPSR_UND | CPSR_CPULOCK | CPSR_ALWAYS_SET)
+	mov   r0, lr
+	mrs   r1, spsr
+	mov   r2, #EXCH_NO_UNDEF
+	b     target_exc_handler
+
+
+/*
+ *  SWI 例外ハンドラ
+ */
+	.text
+	.align 2
+	.global swi_handler
+	.type swi_handler, function
+swi_handler:
+	/* 
+	 *  タスクの動作時モード(スーパーバイザーモード)へ
+	 *  元々スーパーバイザーモードだが，CPUロック状態とする
+	 */
+	msr   cpsr_cxsf, #(CPSR_SVC | CPSR_CPULOCK | CPSR_ALWAYS_SET) 
+	stmfd sp!, {r0-r3,ip,lr,pc} /* pcはダミー */
+	mov   r0, lr
+	mrs   r1, spsr 
+
+
+	mov   r2, #EXCH_NO_SVC
+	b     target_exc_handler
+
+
+/*
+ *  プリフェッチアボード 例外ハンドラ
+ */
+	.text
+	.align 2
+	.global prefetch_handler
+	.type prefetch_handler, function
+prefetch_handler:
+	/* 
+	 *  タスクの動作時モード(スーパーバイザーモード)へ
+	 */
+	msr   cpsr_cxsf, #(CPSR_SVC | CPSR_CPULOCK | CPSR_ALWAYS_SET) 
+	stmfd sp!, {r0-r3,ip,lr,pc} /* pcはダミー */
+
+	/*
+	 * spsrと戻り番地を取得するためにアボートモードへ
+	 */
+	msr   cpsr_cxsf, #(CPSR_ABT | CPSR_CPULOCK | CPSR_ALWAYS_SET)
+	mov   r0, lr
+	mrs   r1, spsr
+	mov   r2, #EXCH_NO_PABORT
+	b     target_exc_handler
+
+
+/*
+ *  データアボード 例外ハンドラ
+ */
+	.text
+	.align 2
+	.global data_abort_handler
+	.type data_abort_handler, function
+data_abort_handler:
+	/* 
+	 *  タスクの動作時モード(スーパーバイザーモード)へ
+	 */
+	msr   cpsr_cxsf, #(CPSR_SVC | CPSR_CPULOCK | CPSR_ALWAYS_SET) 
+	stmfd sp!, {r0-r3,ip,lr,pc} /* pcはダミー */
+
+	/*
+	 * spsrと戻り番地を取得するためにアボートモードへ
+	 */
+	msr   cpsr_cxsf, #(CPSR_ABT | CPSR_CPULOCK | CPSR_ALWAYS_SET)
+	mov   r0, lr
+	mrs   r1, spsr
+	mov   r2, #EXCH_NO_DABORT
+	b     target_exc_handler
+
+
+#ifndef TARGET_FIQ_HANDLER
+/*
+ *  FIQ 例外ハンドラ
+ */
+	.text
+	.align 2
+	.global fiq_handler
+	.type fiq_handler, function
+fiq_handler:
+	/* 
+	 *  タスクの動作時モード(スーパーバイザーモード)へ
+	 */
+	msr   cpsr_cxsf, #(CPSR_SVC | CPSR_FIQ_BIT | CPSR_CPULOCK | CPSR_ALWAYS_SET) 
+	stmfd sp!, {r0-r3,ip,lr,pc} /* pcはダミー */
+
+	/*
+	 * spsrと戻り番地を取得するためにFIQモードへ
+	 */
+	msr   cpsr_cxsf, #(CPSR_FIQ | CPSR_FIQ_BIT | CPSR_CPULOCK | CPSR_ALWAYS_SET)
+	mov   r0, lr
+	mrs   r1, spsr
+	mov   r2, #EXCH_NO_FIQ
+	b     target_exc_handler
+#endif /* TARGET_FIQ_HANDLER */
+
+/*
+ *  微少時間待ち
+ */
+	.global _sil_dly_nse
+	.type _sil_dly_nse, function
+_sil_dly_nse:
+	sub   r0, r0, #SIL_DLY_TIM1
+	cmp   r0, #0
+	bgt   _sil_dly_nse1
+	bxle  lr
+_sil_dly_nse1:
+	sub   r0, r0, #SIL_DLY_TIM2
+	cmp   r0, #0
+	bgt   _sil_dly_nse1
+	bxle  lr
+
+#ifdef __thumb__
+	.text
+	.align 2
+	AWEAK(current_sr)
+current_sr:
+	mrs   r0, cpsr
+	bx    lr
+
+	.weak set_sr
+set_sr:
+	msr   cpsr_cxsf, r0
+	bx    lr
+#endif /* __thumb__ */
Index: /ssp_arm_gcc/trunk/arch/arm_gcc/common/core_unrename.h
===================================================================
--- /ssp_arm_gcc/trunk/arch/arm_gcc/common/core_unrename.h	(revision 92)
+++ /ssp_arm_gcc/trunk/arch/arm_gcc/common/core_unrename.h	(revision 92)
@@ -0,0 +1,64 @@
+/* This file is generated from core_rename.def by genrename. */
+
+/* This file is included only when core_rename.h has been included. */
+#ifdef TOPPERS_CORE_RENAME_H
+#undef TOPPERS_CORE_RENAME_H
+
+/*
+ *  kernel_cfg.c
+ */
+#undef exch_tbl
+
+/*
+ *  core_support.S
+ */
+#undef start_r
+#undef ret_int
+#undef ret_exc
+#undef exch_tbl
+#undef dispatch
+#undef start_dispatch
+#undef exit_and_dispatch
+#undef call_exit_kernel
+#undef default_exc_handler
+
+/*
+ *  core_config.c
+ */
+#undef excpt_nest_count
+#undef core_initialize
+#undef core_terminate
+#undef x_install_exc
+
+#ifdef TOPPERS_LABEL_ASM
+
+/*
+ *  kernel_cfg.c
+ */
+#undef _exch_tbl
+
+/*
+ *  core_support.S
+ */
+#undef _start_r
+#undef _ret_int
+#undef _ret_exc
+#undef _exch_tbl
+#undef _dispatch
+#undef _start_dispatch
+#undef _exit_and_dispatch
+#undef _call_exit_kernel
+#undef _default_exc_handler
+
+/*
+ *  core_config.c
+ */
+#undef _excpt_nest_count
+#undef _core_initialize
+#undef _core_terminate
+#undef _x_install_exc
+
+#endif /* TOPPERS_LABEL_ASM */
+
+
+#endif /* TOPPERS_CORE_RENAME_H */
Index: /ssp_arm_gcc/trunk/arch/arm_gcc/common/core_user.txt
===================================================================
--- /ssp_arm_gcc/trunk/arch/arm_gcc/common/core_user.txt	(revision 92)
+++ /ssp_arm_gcc/trunk/arch/arm_gcc/common/core_user.txt	(revision 92)
@@ -0,0 +1,326 @@
+=====================================================================
+                     ARMプロセッサ依存部
+                                  Last Modified: 2015 Mar 27 15:13:30
+=====================================================================
+
+○概要
+
+ARM にはアーキテクチャーバージョンが幾つか存在する．本カーネルでは，
+ARMv4 以上のアーキテクチャーをサポートすることとする．基本的には， 
+ARMv4 を前提として記述している．しかしながら，上位のアーキテクチャでは
+記述方法を変更することによって性能向上を図れる箇所が存在する．そのよう
+な箇所については，条件コンパイルによって対応することにする．
+
+（注）
+本ソフトウェアはASPカーネル向けのARMプロセッサ依存部を元にSSPへポーティング
+したものである．動作確認が十分に行われていないコードやデッドコード等も
+含まれると思われるため，扱いには注意のこと．
+
+
+○開発環境
+
+コンパイラは，GNU Tools for ARM Embedded Processors でリリースされている
+GNU C/C++のバイナリを使用することとする．
+	https://launchpad.net/gcc-arm-embedded
+
+○CPU例外の取り扱い
+
+●例外とPCの関連
+
+例外                              モード      アドレス   戻り先PC
+リセット             Reset          svc      0x00000000     
+未定義命令           Undefined      und      0x00000004    pc(コプロはpc-4)
+SWI                  Software Int   swi      0x00000008    pc(次の命令)
+プリフェッチアボート Prefetch Abort abt      0x0000000C    pc-4(再実行)
+データアボード       Data Abort     abt      0x00000010    pc-4(再実行pc-8)
+IRQ                  IRQ            irq      0x00000018    pc-4(次の命令)
+FIQ                  FIQ            fiq      0x0000001C    pc-4(次の命令)
+
+ARMは，例外毎に戻り番地が異なり，例外の要因になった命令を再実行するか
+どうかによっても戻り番地が異なる．そのため，カーネルの例外ハンドラでは，
+戻り先のPCは操作せず．戻り先のPCを設定させる機能を提供する．ユーザは
+CPU例外ハンドラでこれらの機能を用いて戻り先のアドレスを設定する．
+
+      uint32_t x_get_exc_raddr(void *p_excinf);
+
+      void x_set_exc_raddr(void *p_excinf, uint32_t pc);
+
+●CPU例外ハンドラ番号
+
+例外毎に次のようにCPU例外ハンドラ番号を割り付ける．なお，0番,5番にはユ
+ーザーはCPU例外ハンドラを登録できない．
+
+ リセット             0
+ 未定義命令           1
+ SWI                  2
+ プリフェッチアボート 3
+ データアボード       4
+ IRQ                  5
+ FIQ                  6
+
+●ベクターテーブル
+
+ARMのベクタ（vector_table）は，ARMのベクタアドレス0x00000000から配置す
+る．vector_ref_tblは，例外発生時のジャンプ先のテーブルで，vector_tble
+の命令から参照される．
+
+    .section .vector,"a"
+    .global vector_table
+vector_table:
+    ldr pc, reset_vector       /* リセット             */
+    ldr pc, undef_vector       /* 未定義命令           */
+    ldr pc, swi_vector         /* ソフトウェア割込み   */
+    ldr pc, prefech_vector     /* プリフェッチアボード */
+    ldr pc, data_abort_vector  /* データアボード       */
+    ldr pc, reset_vector
+    ldr pc, irq_vector         /* IRQ                  */
+    ldr pc, fiq_vector         /* FIQ                  */
+
+    .align  2
+    .global vector_ref_tbl
+vector_ref_tbl:
+reset_vector:
+    .long   start
+undef_vector:
+    .long   undef_handler
+swi_vector:
+    .long   swi_handler
+prefech_vector:
+    .long   prefetch_handler
+data_abort_vector:
+    .long   data_abort_handler
+irq_vector:
+    .long   IRQ_Handler
+fiq_vector:
+    .long   fiq_handler
+
+
+また，vector_ref_tblをRAM上に配置した場合には，カーネル管理外の例外と
+して，vector_ref_tblに直接ユーザーのハンドラを登録する関数を用意する．
+なお，vector_ref_tblをフラッシュメモリに配置した場合は，このシステムコ
+ールは正常に動作しないので，注意が必要である．
+
+      void x_install_exc(EXCNO excno, FP exchdr)
+
+ディフォルトのvector_ref_tblの登録内容は上に示した通りである．startと
+IRQ_Handler以外は，core_support.Sに定義されており，それぞれ，スーパーバ
+イザーモードに移行して，スタック上にコンテキストを積んだ後，元のモード
+に戻り，r0に例外発生時のpc, r1に例外発生時のcsr, r2に例外番号を入れて，
+ターゲット依存部で定義する target_exc_handler へジャンプする．
+
+
+●ベクタの保護
+
+前述の通りARMのベクタ（vector_table）は，0x00000000 に配置する必要があ
+る．通常はこのアドレスにはROMやフラッシュメモリ等の不揮発性のメモリが
+割り当てられるが，ターゲットによっては，RAMをリマップすることが可能で
+ある．RAMを0x00000000 を配置して，ベクタ（vector_table）を配置すると，
+ユーザープログラムでベクタを書き換えることが可能となるので注意が必要で
+ある．特にユーザープログラムによる，NULLポインタによるアクセスにより書
+き換えられる可能性が高い．安全性を高めるためには，ターゲット依存で次の
+対策を行うことを推奨する．
+
+  ・リマップを行わず，不揮発性メモリにベクタを置く．
+  ・MMUによりベクタの領域を書き込み禁止とする．
+  ・High Vector機能を使用し，ベクタを0x00000000以外に配置する．
+
+
+●例外フレーム（CPU例外ハンドラへの引数）
+
+SSPカーネルの仕様では，CPU例外ハンドラの引数には，CPU例外に関する情報
+を記憶している領域（例外フレーム）の先頭番地が渡される．そのため，CPU
+例外発生時のコンテキストを保存したスタックへのポインタを渡す．
+
+例外フレームは，ARMアーキテクチャ毎に異なり，ARMv4/ARMv5では次のように
+なる．このうち，R0,R1,R2,R3,ipに関しては，ARMプロセッサ依存部で設定さ
+れる．その他の値は，ターゲット毎の target_exc_handler で作成する．例外
+前の割込み優先度マスクは，PRI(int_t)型の外部表現である．
+
+           例外フレーム(ARMv4-5)            offset
+      ------------------------------
+     |  例外前のネストカウント      |  0  <-- p_excinf
+      ------------------------------
+     |  例外前の割込み優先度マスク  |  1
+      ------------------------------
+     |        例外前のCPSR          |  2
+      ------------------------------
+     |            R0                |  3
+      ------------------------------
+     |            R1                |  4
+      ------------------------------
+     |            R2                |  5
+      ------------------------------
+     |            R3                |  6
+      ------------------------------
+     |            IP                |  7
+      ------------------------------
+     |          LR_svc              |  8
+      ------------------------------
+     |     例外前のPC(戻り先)       |  9
+      ------------------------------
+
+
+○割り込みの取り扱い
+
+●カーネル管理内/外の割込み
+
+IRQをカーネル管理内，FIQをカーネル管理外の割込みとする．
+
+●CPUロックフラグ
+
+CPUロックフラグとして，ステータスレジスタのIRQビットを用いる．すなわち
+，CPUロック状態では，IRQビットをセットし，カーネル管理内の割込みを禁止
+し，CPUロック解除状態では，IRQビットをクリアする．
+
+●割込みロックフラグ
+
+割込みロックフラグとしては，CPSRのFIQビットとIRQビットを用いる．割り込
+みロック状態では，IRQビットとFIQビットをセットする．
+
+
+=====================================================================
+                  カーネル開発者向けの情報
+=====================================================================
+○コンテキストの判定
+
+カーネルは，割り込み/例外の入り口で，カーネル内のカウント用の変数（
+excpt_nest_count）をカウントアップし，出口でカウントダウンする．そのた
+め，excpt_nest_count が0の場合はタスクコンテキスト，1以上の場合は非タ
+スクコンテキストと判断する．
+
+
+○例外エントリ処理
+
+本節の説明対象となるエントリ処理は具体的に以下の処理を指す．
+	undef_handler
+	swi_handler
+	prefetch_handler
+	data_abort_handler
+	fiq_handler
+irq_handler はこの説明の対象ではない．
+
+各例外のエントリ処理は要因毎にカーネルで個別に持つ．
+ルーチンを共有化すると，例外発生後，一時的にレジスタを退避させるために
+一時領域を用いる必要があるため，個別に持つように変更した．
+
+各例外のエントリ処理では以下の処理を行う．
+
+ ・タスク動作時のモードに移行（スタックを切り替える）
+ ・r0-r3,ip,lr,pcを保存（PCはダミー）
+ ・元のモードに戻る
+ ・r0にlr，r1にspsrを，r2にCPU例外番号を入れる
+ ・target_exc_handlerへジャンプ
+
+target_exc_handler はターゲット毎に用意する．ターゲット毎に用意するの
+は，前述の例外フレームに例外前の割込み優先度マスクが含まれており，この
+割込み優先度マスクの扱いがターゲット毎に異なるためである．
+
+target_exc_handler では，前述の例外フレームのフォーマットに従って例外
+フレームを作成して，その先頭番地を引数にして，対応するCPU例外ハンドラ
+を呼び出す．
+
+FIQのエントリ処理（fiq_handler）については，ターゲット依存部側で用意す
+る場合には，それぞれ，以下のマクロを定義すれば，ARM依存部側のエントリ
+処理が無効となる．
+
+     TARGET_FIQ_HANDLER
+
+
+○アイドル処理
+
+実行するべきタスクがない場合は，ディスパッチャーで割込みを許可して，割
+込みを待つ（dispatcher_2）．ARM依存部のコードでは，次のようになってい
+る．
+
+       割込みを許可
+       nop
+       割り込み禁止
+
+ターゲット依存で，上記の処理の代わりに，省電力モード等に移行する処理を
+記述したい場合には，ターゲット依存部で，TOPPERS_CUSTOM_IDLEを定義し，
+代わりに実行した処理を toppers_asm_custom_idle というアセンブラマクロ
+として記述する．なお，toppers_asm_custom_idle の記述にあたっては，次の
+レジスタは使用できない．
+
+       r0, r1, r2, r3, sp 
+
+アセンブラマクロはC言語記述中に展開するとエラーとなる．pr_support.S で
+は，TOPPERS_ASM_MACRO というマクロを定義しているため，ターゲット依存部
+で toppers_asm_custom_idle アセンブラマクロを定義する際には，
+TOPPERS_ASM_MACRO を条件コンパイルの条件として用いること．
+
+
+○CPSRに常にセットする値
+
+CPSRの変更時，常にセットするパターンを CPSR_ALWAYS_SET として，ターゲ
+ット依存部で定義可能である．
+
+
+○Makefileでの定義事項
+
+
+=====================================================================
+                             変更履歴
+=====================================================================
+2015/05/27
+・SSP1.3.0への対応
+
+2014/03/18
+・SSP1.2.1用のARM依存部としてコピー
+
+2011/05/09
+・ASP 1.7.0 への追従．
+  ・オフセットファイルの生成方法をコンフィギュレータを用いる方法に変更．
+  
+2011/03/10
+・ASP 1.7.0 への追従．
+
+2010/10/04
+・Thumb Mode 用のsrの設定・参照関数の追加．
+
+2010/10/01
+・アセンブラファイル中の分岐命令のAAPCS推奨への変更忘れを修正．
+
+2010/08/01
+・ASP 1.6.0 へ追従．
+
+2010/07/26
+・VECTOR_KERNELの廃止．
+
+2010/07/26
+・アセンブラファイル中の分岐命令を AAPCS推奨に変更．
+
+2010/07/25
+・ASP 1.5.0 へ追従．
+
+2009/07/14
+・例外フレーム入れる例外前の割込み優先度マスクの値をターゲット依存の
+  値から外部表現に変更．
+  
+2008/08/27
+・core_support.S
+  ・call_exit_kernel で割込みを許可していた問題を修正
+・共通部 Release 1.3.2への追従．
+  ・特に変更内容なし
+
+2008/05/13
+・共通部 Release 1.3.1への追従．
+
+2008/04/15
+・start.S 
+  ・dataセクションの初期化を省略する TOPPERS_OMIT_DATA_INIT を追加
+2008/04/12
+・非依存部 1.3.0 追従
+
+2008/03/20
+・非依存部 1.2 追従
+
+2007/12/25
+・core_support.S
+  ・OMIT_DEFAULT_IDLE を TOPPERS_CUSTOM_IDLE に変更
+  ・idle処理のマクロ名を toppers_asm_custom_idle に変更
+
+・start.S
+  ・bssの初期化を省略する TOPPERS_OMIT_BSS_INIT を追加
+
+以上．
Index: /ssp_arm_gcc/trunk/arch/arm_gcc/common/start.S
===================================================================
--- /ssp_arm_gcc/trunk/arch/arm_gcc/common/start.S	(revision 92)
+++ /ssp_arm_gcc/trunk/arch/arm_gcc/common/start.S	(revision 92)
@@ -0,0 +1,137 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2012 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: start.S 619 2014-03-18 06:10:27Z nmir-saito $
+ */
+
+/*
+ *   カーネル用のスタートアップモジュール(ARM用)
+ */
+#define TOPPERS_MACRO_ONLY
+#define UINT_C(val)		(val)		/* uint_t型の定数を作るマクロ */
+#define ULONG_C(val)	(val)		/* ulong_t型の定数を作るマクロ */
+
+#include "kernel_impl.h"
+#include "target_asm.inc"
+
+	ATEXT
+	AALIGN(2)
+	AGLOBAL(start)
+ALABEL(start)
+	/*
+	 * プロセッサモードの初期化
+	 * スーパーバイザーモード，FIQ/IRQ禁止
+	 */
+	msr  cpsr_cxsf, #(CPSR_SVC AOR CPSR_FIQ_BIT AOR CPSR_IRQ_BIT) 
+
+	/*
+	 * スタックポインタと，フレームポインタの初期化
+	 * sl(スタック上限レジスタr10)は設定する必要があるか?
+	 * gccはディフォルトでは-mapcsなので必要ない
+	 */
+	ldr  r0, =_kernel_istkpt
+	ldr  sp, [r0]
+	mov  fp, #0        /* ARMモード用フレームポインタ(r11) */         
+	mov  r7, #0        /* Thumbモード用フレームポインタ    */
+
+	/*
+	 * hardware_init_hookの呼び出し （0でない場合）
+	 *
+	 * ターゲットハードウェアに依存して必要な初期化処理がある場合
+	 * は，hardware_init_hook という関数を用意する
+	 */
+	ldr   r0, =hardware_init_hook
+	cmp   r0, #0x00
+	movne lr, pc
+	bxne  r0
+
+ALABEL(start_1)
+
+#ifndef TOPPERS_OMIT_BSS_INIT
+	/*
+	 *  bssセクションのクリア
+	 */
+	ldr  r1, =BSS_START
+	ldr  r2, =BSS_END
+	cmp  r1,r2
+	bhs  start_3
+	mov  r0,#0
+ALABEL(start_2)
+	str  r0,[r1],#4
+	cmp  r1, r2
+	blo  start_2
+#endif /* TOPPERS_OMIT_BSS_INIT */
+	   
+ALABEL(start_3)
+
+#ifndef TOPPERS_OMIT_DATA_INIT
+	/*
+	 *  dataセクションの初期化(ROM化対応)
+	 *  IDATA_START から IDATA_END までを，DATA_START 以降に
+	 *  コピーする
+	 */
+	ldr  r1, =IDATA_START
+	ldr  r3, =IDATA_END
+	cmp  r1, r3
+	bhs  start_5
+	ldr  r2, =DATA_START
+ALABEL(start_4)
+	ldr  r0, [r1],#4
+	str  r0, [r2],#4
+	cmp  r1, r3
+	blo  start_4
+#endif /* TOPPERS_OMIT_DATA_INIT */
+
+	/*
+	 *  software_init_hook を呼出し（0 でない場合）
+	 *
+	 *  ソフトウェア環境（特にライブラリ）に依存して必要な初期化処
+	 *  理がある場合は，software_init_hook という関数を用意すれば
+	 *  よい．
+	 */
+ALABEL(start_5)
+	ldr   r0, =software_init_hook
+	cmp   r0, #0x00
+	movne lr, pc
+	bxne  r0
+
+	/*
+	 * カーネルを起動する
+	 */
+ALABEL(start_6)
+	bl   sta_ker
Index: /ssp_arm_gcc/trunk/target/at91skyeye_gcc/E_PACKAGE
===================================================================
--- /ssp_arm_gcc/trunk/target/at91skyeye_gcc/E_PACKAGE	(revision 92)
+++ /ssp_arm_gcc/trunk/target/at91skyeye_gcc/E_PACKAGE	(revision 92)
@@ -0,0 +1,6 @@
+E_PACKAGE asp_at91skyeye_gcc
+VERSION %date
+
+INCLUDE ../../MANIFEST
+INCLUDE ../../arch/arm_gcc/MANIFEST
+../../cfg/cfg/cfg.exe
Index: /ssp_arm_gcc/trunk/target/at91skyeye_gcc/MANIFEST
===================================================================
--- /ssp_arm_gcc/trunk/target/at91skyeye_gcc/MANIFEST	(revision 92)
+++ /ssp_arm_gcc/trunk/target/at91skyeye_gcc/MANIFEST	(revision 92)
@@ -0,0 +1,31 @@
+PACKAGE ssp_target_at91skyeye_gcc
+
+at91skyeye.h
+at91skyeye.ld
+E_PACKAGE
+Makefile.target
+MANIFEST
+skyeye.conf
+start.S
+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.c
+target_timer.cfg
+target_timer.h
+target_unrename.h
+target_user.txt
Index: /ssp_arm_gcc/trunk/target/at91skyeye_gcc/Makefile.target
===================================================================
--- /ssp_arm_gcc/trunk/target/at91skyeye_gcc/Makefile.target	(revision 92)
+++ /ssp_arm_gcc/trunk/target/at91skyeye_gcc/Makefile.target	(revision 92)
@@ -0,0 +1,129 @@
+#
+#  @(#) $Id: Makefile.target 619 2014-03-18 06:10:27Z nmir-saito $
+# 
+
+#
+#		Makefile のターゲット依存部（AT91SKYEYE用）
+#
+
+#
+#  ボード名，プロセッサ名，開発環境名の定義
+#
+BOARD = at91skyeye
+PRC = arm
+TOOL = gcc
+
+#
+#  コンパイルオプション
+#
+INCLUDES := $(INCLUDES) -I$(TARGETDIR)
+COPTS := $(COPTS) -mcpu=arm7tdmi -mlittle-endian -g -gdwarf-2 -gstrict-dwarf
+LDFLAGS := $(LDFLAGS) -mcpu=arm7tdmi  -N -mlittle-endian -lc -lrdimon
+CDEFS := $(CDEFS) -D__TARGET_ARCH_ARM=4
+
+#
+#  カーネルに関する定義
+#
+KERNEL_DIR := $(KERNEL_DIR) $(TARGETDIR)
+KERNEL_ASMOBJS := $(KERNEL_ASMOBJS) target_support.o
+KERNEL_COBJS := $(KERNEL_COBJS) target_config.o target_timer.o
+
+#
+#  システムサービスに関する定義
+#
+SYSSVC_DIR := $(SYSSVC_DIR)
+SYSSVC_COBJS := $(SYSSVC_COBJS) target_serial.o 
+
+#
+#  コンフィギュレータ関係の変数の定義
+#
+CFG_TABS := $(CFG_TABS) --cfg1-def-table $(TARGETDIR)/target_def.csv
+
+#
+#  トレースログに関する設定
+#
+ifeq ($(ENABLE_TRACE),true)
+      COPTS := $(COPTS) 
+      CDEFS := $(CDEFS) -DTOPPERS_ENABLE_TRACE
+      KERNEL_DIR := $(KERNEL_DIR) $(SRCDIR)/arch/logtrace
+      KERNEL_COBJS := $(KERNEL_COBJS) trace_config.o trace_dump.o
+endif
+
+#
+#  GNU開発環境のターゲットアーキテクチャの定義
+#
+GCC_TARGET = arm-none-eabi
+
+#
+#  リンカスクリプトの定義
+#
+LDSCRIPT = $(TARGETDIR)/at91skyeye.ld
+
+#
+#  スタートアップモジュールに関する定義
+#
+#  at91skyeye.ldに「STARTUP(start.o)」を記述したため，スタートアップモジュー
+#  ルの名前をHIDDEN_OBJSに定義する．
+#
+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 := $(LDFLAGS)
+
+#
+#  依存関係の定義
+#
+cfg1_out.c: $(TARGETDIR)/target_def.csv
+kernel_cfg.timestamp: $(TARGETDIR)/target.tf
+$(OBJFILE): $(TARGETDIR)/target_check.tf
+
+#
+#  プロセッサ依存部のインクルード
+#
+include $(SRCDIR)/arch/$(PRC)_$(TOOL)/common/Makefile.core
+
+#
+#  gcovを有効に
+#  
+
+#
+#  ENABLE_GCOVに設定可能な値
+#    full              : 全体取得
+#    part              : 一部取得
+#    only_kernel_full  : 全体取得(カーネルコードのみ)
+#    only_kernel_part  : 一部取得(カーネルコードのみ)
+#    false             : 無効
+ifdef ENABLE_GCOV
+ifneq ($(ENABLE_GCOV),false)
+ifeq ($(ENABLE_GCOV),full)
+      CDEFS := $(CDEFS) -DTOPPERS_ENABLE_GCOV_FULL
+      COPTS := $(COPTS) -fprofile-arcs -ftest-coverage
+endif
+ifeq ($(ENABLE_GCOV),part)
+      CDEFS := $(CDEFS) -DTOPPERS_ENABLE_GCOV_PART
+      COPTS := $(COPTS) -fprofile-arcs -ftest-coverage
+endif
+ifeq ($(ENABLE_GCOV),only_kernel_full)
+      CDEFS := $(CDEFS) -DTOPPERS_ENABLE_GCOV_FULL
+      KERNEL_CFLAGS := $(KERNEL_CFLAGS) -fprofile-arcs -ftest-coverage
+      CFG1_OUT_LDFLAGS := $(CFG1_OUT_LDFLAGS) -fprofile-arcs -ftest-coverage
+endif
+ifeq ($(ENABLE_GCOV),only_kernel_part)
+      CDEFS := $(CDEFS) -DTOPPERS_ENABLE_GCOV_PART
+      KERNEL_CFLAGS := $(KERNEL_CFLAGS) -fprofile-arcs -ftest-coverage
+      CFG1_OUT_LDFLAGS := $(CFG1_OUT_LDFLAGS) -fprofile-arcs -ftest-coverage
+endif
+      LIBS := $(LIBS) -lgcov
+      CLEAN_FILES := $(CLEAN_FILES) *.gcda *.gcda.bak *.gcno *.gcov coverage.info
+lcov:
+	rm -f makeoffset.gcno cfg1_out.*
+	lcov -c -d . -o coverage.info --gcov-tool $(GCC_TARGET)-gcov.exe
+	genhtml coverage.info -o coverage_html
+endif
+endif
Index: /ssp_arm_gcc/trunk/target/at91skyeye_gcc/at91skyeye.h
===================================================================
--- /ssp_arm_gcc/trunk/target/at91skyeye_gcc/at91skyeye.h	(revision 92)
+++ /ssp_arm_gcc/trunk/target/at91skyeye_gcc/at91skyeye.h	(revision 92)
@@ -0,0 +1,174 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ *
+ *  Copyright (C) 2006 by GJ Business Division RICOH COMPANY,LTD. JAPAN
+ *  Copyright (C) 2007-2010 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: at91skyeye.h 619 2014-03-18 06:10:27Z nmir-saito $
+ */
+
+#ifndef TOPPERS_AT91SKYEYE_H
+#define TOPPERS_AT91SKYEYE_H
+
+#include <sil.h>
+
+/*
+ * 割込みハンドラ番号から，IRC操作のためのビットパターンを求めるマクロ
+ */
+#define INTNO_BITPAT(intno) (1U << intno)
+
+/*
+ *  割込みコントローラ関係
+ */
+#define AIC_IVR      (0xFFFFF100)
+#define AIC_ISR      (0xFFFFF108)
+#define AIC_IMR      (0xFFFFF110)
+#define AIC_IECR     (0xFFFFF120)
+#define AIC_IDCR     (0xFFFFF124)
+#define AIC_ICCR     (0xFFFFF128)
+#define AIC_EOI      (0xFFFFF130)
+#define AIC_IPR      (0xFFFFF10C)
+
+#define IRQ_USART0      2
+#define IRQ_TC1         5
+
+/*
+ *  タイマ関連
+ */
+#define TIMER_1_CCR      (0xFFFE0040)
+#define TIMER_1_CMR      (0xFFFE0044)
+#define TIMER_1_CV       (0xFFFE0050)
+#define TIMER_1_SR       (0xFFFE0060)
+#define TIMER_1_RC       (0xFFFE005C)
+#define PIT_PIVR         (0xFFFFFD38)
+
+/*
+ * デバイスマネージャのマルチプロセッサ向け機能へのアクセスレジスタ
+ * skyeyeのconfファイルの設定と整合させる 
+ */
+#define MUTEX_ID_REG     (0xFFFFFF00)
+#define MUTEX_CNT_REG    (0xFFFFFF04)
+#define IPI_REG          (0xffffff80)
+
+/*
+ *  UART関連
+ */
+#define USART0_THR       (0xFFFD001C)  // USART Transmitter Holding Register
+#define USART0_RPR       (0xFFFD0030)  // USART Receive Pointer Register
+#define USART0_RCR       (0xFFFD0034)  // USART Receive Counter Register
+#define USART0_CSR       (0xFFFD0014)  // USART Channel Satus Register
+#define USART0_IER       (0xFFFD0008)  // USART Interrupt Enable Register
+#define USART0_IDR       (0xFFFD000C)  // USART Interrupt Disable Register
+
+/* 
+ *  サイクルカウンタ関連 
+ */ 
+#define CYCLE_COUNTER_REG (0xFFFFFFC0)
+
+/*
+ *  バージョンレジスタ
+ */
+#define SKYEYE_VER_REG  (0xFFFE1000)
+#define DEVM_VER_REG    (0xFFFE1010)
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ * IRC操作関数
+ */
+
+/*
+ * 割込み要求のマスク
+ */
+Inline void
+at91skyeye_disable_int(uint32_t mask)
+{
+    sil_wrw_mem((void *)(AIC_IDCR), mask);
+}
+
+/*
+ * 割込み要求のマスクの解除
+ */
+Inline void
+at91skyeye_enable_int(uint32_t mask)
+{
+    sil_wrw_mem((void *)(AIC_IECR), mask);
+}
+
+/*
+ * 割込み要求のクリア
+ */
+Inline void
+at91skyeye_clear_int(uint32_t mask)
+{
+    sil_wrw_mem((void *)(AIC_ICCR), mask);	
+}
+
+/*
+ * 割込み要求のチェック
+ */
+Inline bool_t
+at91skyeye_probe_int(uint32_t mask)
+{
+    return((sil_rew_mem((void *)(AIC_IPR)) & mask) == mask);
+}
+
+/*
+ * 終了処理
+ */
+Inline void
+at91skyeye_exit(void)
+{    
+}
+
+/* 
+ *  サイクルカウンタの読み込み 
+ */ 
+Inline uint32_t 
+cycle_counter_get_current(void)
+{ 
+        return sil_rew_mem((void*)(CYCLE_COUNTER_REG)); 
+}
+
+/*
+ *  トレースログに関する定義
+ *  サイクルカウンタを用いる．
+ */
+#define TRACE_GET_TIM()   cycle_counter_get_current()
+
+#endif /* TOPPPERS_MACRO_ONLY */
+
+
+#endif /* TOPPERS_AT91SAM7S_H */
Index: /ssp_arm_gcc/trunk/target/at91skyeye_gcc/at91skyeye.ld
===================================================================
--- /ssp_arm_gcc/trunk/target/at91skyeye_gcc/at91skyeye.ld	(revision 92)
+++ /ssp_arm_gcc/trunk/target/at91skyeye_gcc/at91skyeye.ld	(revision 92)
@@ -0,0 +1,222 @@
+/* Linker script for armulator
+ *
+ * Version: Sourcery G++ Lite 2009q3-68
+ * Support: https://support.codesourcery.com/GNUToolchain/
+ *
+ * Copyright (c) 2007, 2008, 2009 CodeSourcery, Inc.
+ *
+ * The authors hereby grant permission to use, copy, modify, distribute,
+ * and license this software and its documentation for any purpose, provided
+ * that existing copyright notices are retained in all copies and that this
+ * notice is included verbatim in any distributions.  No written agreement,
+ * license, or royalty fee is required for any of the authorized uses.
+ * Modifications to this software may be copyrighted by their authors
+ * and need not follow the licensing terms described here, provided that
+ * the new terms are clearly indicated on the first page of each file where
+ * they apply.
+ * */
+
+/*
+ * Modified for GCC ARM Embedded in Launchpad
+ *  https://launchpad.net/gcc-arm-embedded
+ *
+ *  Copyright (C) 2015 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ * 
+ */
+
+OUTPUT_FORMAT ("elf32-littlearm", "elf32-bigarm", "elf32-littlearm")
+SEARCH_DIR(.)
+/* GROUP(-lgcc -lc -lcs3 -lcs3hosted -lcs3arm) */
+PROVIDE(hardware_init_hook = 0);
+PROVIDE(software_init_hook = 0);
+PROVIDE(software_term_hook = 0);
+STARTUP(start.o)
+
+MEMORY
+{
+  ram (rwx) : ORIGIN = 0x0, LENGTH = 128M
+}
+
+/* These force the linker to search for particular symbols from
+ * the start of the link process and thus ensure the user's
+ * overrides are picked up
+ */
+/* EXTERN(__cs3_reset_armulator) */
+/* INCLUDE arm-names.inc */
+/* EXTERN(__cs3_interrupt_vector_arm) */
+/* EXTERN(__cs3_start_c main __cs3_stack __cs3_heap_end) */
+/* force exit to be picked up in a hosted or os environment */
+EXTERN(exit atexit)
+
+/* PROVIDE(__cs3_heap_start = _end); */
+/* PROVIDE(__cs3_heap_end = __cs3_region_start_ram + __cs3_region_size_ram); */
+/* PROVIDE(__cs3_region_num = (__cs3_regions_end - __cs3_regions) / 20); */
+/* Ensure that newlib runs the finalizers */
+__libc_fini = _fini;
+/* PROVIDE(__cs3_stack = __cs3_region_start_ram + __cs3_region_size_ram); */
+
+SECTIONS
+{
+	.text :
+	{
+		CREATE_OBJECT_SYMBOLS
+/*		__cs3_region_start_ram = .; */
+/*		ASSERT (. == __cs3_region_start_ram, ".cs3.region-head.ram not permitted"); */
+		*(vector)
+/*		__cs3_reset = .; */
+		*(.text)
+		*(.text.*)
+		*(.gnu.linkonce.t.*)
+		*(.plt)
+		*(.gnu.warning)
+		*(.glue_7t) *(.glue_7)
+		*(.vfp11_veneer)
+
+		*(.ARM.extab* .gnu.linkonce.armextab.*)
+		*(.gcc_except_table)
+	} >ram
+
+	.eh_frame_hdr : ALIGN (4)
+	{
+	  KEEP (*(.eh_frame_hdr))
+	} >ram
+	
+	.eh_frame : ALIGN (4)
+	{
+	  KEEP (*(.eh_frame))
+	} >ram
+
+	/* .ARM.exidx is sorted, so has to go in its own output section.  */
+	__exidx_start = .;
+	.ARM.exidx :
+	{
+		*(.ARM.exidx* .gnu.linkonce.armexidx.*)
+	} >ram
+	__exidx_end = .;
+
+	.rodata : ALIGN (4)
+	{
+		*(.rodata .rodata.* .gnu.linkonce.r.*)
+
+		. = ALIGN(4);
+		KEEP(*(.init))
+
+		. = ALIGN(4);
+		__preinit_array_start = .;
+		KEEP (*(.preinit_array))
+		__preinit_array_end = .;
+
+		. = ALIGN(4);
+		__init_array_start = .;
+		KEEP (*(SORT(.init_array.*)))
+		KEEP (*(.init_array))
+		__init_array_end = .;
+
+		. = ALIGN(4);
+		KEEP(*(.fini))
+
+		. = ALIGN(4);
+		__fini_array_start = .;
+		KEEP (*(.fini_array))
+		KEEP (*(SORT(.fini_array.*)))
+		__fini_array_end = .;
+
+		. = ALIGN(0x4);
+		KEEP (*crtbegin.o(.ctors))
+		KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
+		KEEP (*(SORT(.ctors.*)))
+		KEEP (*crtend.o(.ctors))
+
+		. = ALIGN(0x4);
+		KEEP (*crtbegin.o(.dtors))
+		KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
+		KEEP (*(SORT(.dtors.*)))
+		KEEP (*crtend.o(.dtors))
+
+		. = ALIGN(4);
+/*		__cs3_regions = .; */
+/*		LONG (0) */
+/*		LONG (__cs3_region_init_ram) */
+/*		LONG (__cs3_region_start_ram) */
+/*		LONG (__cs3_region_init_size_ram) */
+/*		LONG (__cs3_region_zero_size_ram) */
+/*		__cs3_regions_end = .; */
+
+		. = ALIGN (8);
+		_etext = .;
+	} >ram
+
+	.data : ALIGN (8)
+	{
+		KEEP(*(.jcr))
+		*(.got.plt) *(.got)
+		*(.shdata)
+		*(.data .data.* .gnu.linkonce.d.*)
+		. = ALIGN (8);
+		*(.ram)
+		_edata = .;
+	} >ram
+
+	.bss :
+	{
+		__bss_start__  = .;
+		*(.shbss)
+		*(.bss .bss.* .gnu.linkonce.b.*)
+		*(COMMON)
+		. = ALIGN (8);
+		*(.ram.b)
+		_end = .;
+		__end = .;
+	} >ram
+	__bss_end__ = .;
+
+
+	/* __cs3_region_end_ram is deprecated */
+/*	__cs3_region_end_ram = __cs3_region_start_ram + LENGTH(ram); */
+/*	__cs3_region_size_ram = LENGTH(ram); */
+/*	__cs3_region_init_ram = LOADADDR (.text); */
+/*	__cs3_region_init_size_ram = _edata - ADDR (.text); */
+/*	__cs3_region_zero_size_ram = _end - _edata; */
+
+	.stab 0 (NOLOAD) : { *(.stab) }
+	.stabstr 0 (NOLOAD) : { *(.stabstr) }
+
+	/* DWARF debug sections.
+	 * Symbols in the DWARF debugging sections are relative to the beginning
+	 * of the section so we begin them at 0.  */
+
+	/* DWARF 1 */
+	.debug          0 : { *(.debug) }
+	.line           0 : { *(.line) }
+
+	/* GNU DWARF 1 extensions */
+	.debug_srcinfo  0 : { *(.debug_srcinfo) }
+	.debug_sfnames  0 : { *(.debug_sfnames) }
+
+	/* DWARF 1.1 and DWARF 2 */
+	.debug_aranges  0 : { *(.debug_aranges) }
+	.debug_pubnames 0 : { *(.debug_pubnames) }
+
+	/* DWARF 2 */
+	.debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
+	.debug_abbrev   0 : { *(.debug_abbrev) }
+	.debug_line     0 : { *(.debug_line) }
+	.debug_frame    0 : { *(.debug_frame) }
+	.debug_str      0 : { *(.debug_str) }
+	.debug_loc      0 : { *(.debug_loc) }
+	.debug_macinfo  0 : { *(.debug_macinfo) }
+
+	/* DWARF 2.1 */
+	.debug_ranges   0 : { *(.debug_ranges) }
+
+	/* SGI/MIPS DWARF 2 extensions */
+	.debug_weaknames 0 : { *(.debug_weaknames) }
+	.debug_funcnames 0 : { *(.debug_funcnames) }
+	.debug_typenames 0 : { *(.debug_typenames) }
+	.debug_varnames  0 : { *(.debug_varnames) }
+
+	.note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) }
+	.ARM.attributes 0 : { KEEP (*(.ARM.attributes)) }
+	/DISCARD/ : { *(.note.GNU-stack) }
+}
Index: /ssp_arm_gcc/trunk/target/at91skyeye_gcc/skyeye.conf
===================================================================
--- /ssp_arm_gcc/trunk/target/at91skyeye_gcc/skyeye.conf	(revision 92)
+++ /ssp_arm_gcc/trunk/target/at91skyeye_gcc/skyeye.conf	(revision 92)
@@ -0,0 +1,16 @@
+#skyeye config file sample
+cpu: arm7tdmi
+
+mach: at91
+
+mem_bank: map=M, type=RW, addr=0x00000000, size=0x08000000
+mem_bank: map=I, type=RW, addr=0xf0000000, size=0x10000000
+
+cycle_counter: base=0xffffffc0
+
+#set nic info 
+#net: type=cs8900a, base=0xfffa0000, size=0x20,int=16, mac=0:4:3:2:1:f, ethmod=tuntap, hostip=10.0.0.1
+#net: type=cs8900a, ethmod=tuntap, hostip=10.0.0.1
+#uart: mod=stdio
+#log:  memlogon=1, logfile=log.txt
+#dbct: state=on
Index: /ssp_arm_gcc/trunk/target/at91skyeye_gcc/start.S
===================================================================
--- /ssp_arm_gcc/trunk/target/at91skyeye_gcc/start.S	(revision 92)
+++ /ssp_arm_gcc/trunk/target/at91skyeye_gcc/start.S	(revision 92)
@@ -0,0 +1,89 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2009 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 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 619 2014-03-18 06:10:27Z nmir-saito $
+ */
+                
+/*
+ *   カーネル用のスタートアップモジュール(ARM用)
+ */
+#define TOPPERS_MACRO_ONLY
+#define UINT_C(val) 	(val)		/* uint_t型の定数を作るマクロ */
+#define ULONG_C(val)	(val)		/* ulong_t型の定数を作るマクロ */
+#include "kernel_impl.h"
+
+	.text
+	.code 32
+    .align  2
+    .global start
+	.type start, function
+start:
+    /*
+     * プロセッサモードの初期化
+     * スーパーバイザーモード，FIQ/IRQ禁止
+     */
+    msr  cpsr, #(CPSR_SVC|CPSR_INTLOCK) 
+
+    /*
+     * スタックポインタと，フレームポインタの初期化
+     * sl(スタック上限レジスタr10)は設定する必要があるか?
+     * gccはディフォルトでは-mapcsなので必要ない
+     */
+    ldr  r0, =_kernel_istkpt
+    ldr  sp, [r0]
+    mov  fp, #0        /* ARMモード用フレームポインタ(r11) */         
+    mov  r7, #0        /* Thumbモード用フレームポインタ    */
+
+    /*
+     * hardware_init_hookの呼び出し （0でない場合）
+     *
+     * ターゲットハードウェアに依存して必要な初期化処理がある場合
+     * は，hardware_init_hook という関数を用意する
+     */
+    ldr   r0, =hardware_init_hook
+    cmp   r0, #0x00
+    movne lr, pc
+    bxne  r0
+
+    /*
+     * コンパイラの初期化ルーチンを呼び出す
+     */
+    b _mainCRTStartup
+/*    b __cs3_start_c */
Index: /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target.tf
===================================================================
--- /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target.tf	(revision 92)
+++ /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target.tf	(revision 92)
@@ -0,0 +1,92 @@
+$ 
+$     パス2のターゲット依存テンプレート（AT91SKYEYE用）
+$ 
+
+
+$ 
+$  有効な割込み番号，割込みハンドラ番号，CPU例外ハンドラ番号
+$  0,19〜31は使用出来ないが，テーブルを作成するために必要
+$INTNO_VALID = { 0,1,...,31 }$
+$INHNO_VALID = INTNO_VALID$
+
+$ 
+$  ATT_ISRで使用できる割込み番号とそれに対応する割込みハンドラ番号
+$ 
+$INTNO_ATTISR_VALID = { 1,2,...,18 }$
+$INHNO_ATTISR_VALID = { 1,2,...,18 }$
+
+$ 
+$  DEF_INTで使用できる割込みハンドラ番号
+$ 
+$INHNO_DEFINH_VALID = { 1,2,...,18 }$
+
+$ 
+$  CFG_INTで使用できる割込み番号と割込み優先度
+$ 
+$INTNO_CFGINT_VALID  = { 1,2,...,18 }$
+$INTPRI_CFGINT_VALID = { -1,-2,...,-7 }$
+
+$ 
+$  割込み属性中のターゲット依存に用いるビット
+$ 
+$TARGET_INTATR = TA_HIGHLEVEL | TA_POSEDGE | TA_LOWLEVEL$
+
+$ 
+$  コア依存テンプレートのインクルード（ARM用）
+$ 
+$INCLUDE"arm_gcc/common/core.tf"$
+
+$ 
+$  割込み優先度テーブル
+$ 
+$FILE "kernel_cfg.c"$
+$NL$
+const PRI _kernel_inh_ipm_tbl[TNUM_INH] = {$NL$
+$FOREACH inhno INHNO_VALID$ 
+	$IF LENGTH(INH.INHNO[inhno])$
+	  $TAB$$INT.INTPRI[inhno]$,
+	$ELSE$
+	  $TAB$0,
+	$END$
+	$SPC$$FORMAT("/* %d */", +inhno)$$NL$
+$END$
+$NL$};$NL$
+$NL$
+
+$ 
+$  割込みマスクテーブル
+$ 
+const uint32_t _kernel_ipm_mask_tbl[8]={$NL$
+$FOREACH intpri { 0,-1,...,-7 }$
+ $intmask = 0$
+ $FOREACH intno (INT.ID_LIST)$
+  $IF INT.INTPRI[intno] >= intpri $
+	$intmask = intmask | (1 << (INT.INTNO[intno]))$
+  $END$
+ $END$
+ $TAB$UINT32_C($FORMAT("0x%08x", intmask)$),/* Priority $+intpri$ */$NL$
+$END$
+$NL$
+};$NL$
+
+
+$ 
+$  割込みハンドラテーブル
+$ 
+$NL$
+const FP _kernel_inh_tbl[TNUM_INH] = {$NL$
+$FOREACH inhno INHNO_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$
+
+$ 
+$  バナー出力用のTFファイル
+$ 
+$INCLUDE "syssvc/banner.tf"$
Index: /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_cfg1_out.h
===================================================================
--- /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_cfg1_out.h	(revision 92)
+++ /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_cfg1_out.h	(revision 92)
@@ -0,0 +1,14 @@
+/*
+ *  @(#) $Id: target_cfg1_out.h 619 2014-03-18 06:10:27Z nmir-saito $
+ */
+
+/*
+ *		cfg1_out.cをリンクするために必要なスタブの定義
+ */
+
+/*
+ *  コア依存のスタブの定義 
+ */
+#include "core_cfg1_out.h"
+
+int main(void){return 1;}
Index: /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_check.tf
===================================================================
--- /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_check.tf	(revision 92)
+++ /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_check.tf	(revision 92)
@@ -0,0 +1,8 @@
+$ 
+$     パス3のターゲット依存テンプレート（AT91SKYEYE用）
+$ 
+
+$ 
+$  パス3のコア依存のテンプレートのインクルード
+$ 
+$INCLUDE"arm_gcc/common/core_check.tf"$
Index: /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_config.c
===================================================================
--- /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_config.c	(revision 92)
+++ /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_config.c	(revision 92)
@@ -0,0 +1,416 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2006 by GJ Business Division RICOH COMPANY,LTD. JAPAN
+ *  Copyright (C) 2007-2013 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2015 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ * 
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ * 
+ *  @(#) $Id: target_config.c 619 2014-03-18 06:10:27Z nmir-saito $
+ */
+
+/*
+ * チップ依存モジュール（AT91SKYEYE用）
+ */
+
+#include "kernel_impl.h"
+#include <sil.h>
+#include "target_serial.h"
+#include <stdlib.h>
+
+#ifdef TOPPERS_ENABLE_TRACE
+#include <stdio.h>
+static FILE *trace_log_file;
+#endif /* TOPPERS_ENABLE_TRACE */
+
+/*
+ * 各割込みの割込み要求禁止フラグの状態
+ */
+uint32_t idf;
+
+/*
+ * 現在の割込み優先度マスクの値
+ */
+PRI ipm;
+ 
+/*
+ *  割込み属性が設定されているかを判別するための変数
+ */
+uint32_t bitpat_cfgint;
+
+/*
+ *  文字列の出力（バージョンチェック用）
+ */
+static void
+target_fput_str(char *c) {
+	while(*c != '\0') {
+		at91skyeye_putc(*c++);
+	}
+}
+
+/*
+ *  数字 to 文字変換(4bit用)
+ */
+static char
+num_to_char(uint8_t num) {
+	if (num <= 9) {
+		return ('0' + num);
+	}
+	else {
+		return ('a' + (num - 10));
+	}
+}
+
+/*
+ *  バージョン番号の出力
+ */
+static void
+version_put(uint16_t version) {
+	char c;
+
+	c = num_to_char((version >> 12) & 0x0f);
+	at91skyeye_putc(c);
+	at91skyeye_putc('.');
+	c = num_to_char((version >> 8) & 0x0f);
+	at91skyeye_putc(c);
+	c = num_to_char((version >> 4) & 0x0f);
+	at91skyeye_putc(c);
+	at91skyeye_putc('.');
+	c = num_to_char((version) & 0x0f);
+	at91skyeye_putc(c);
+	at91skyeye_putc('.');
+}
+
+/*
+ *  バージョンチェック
+ */
+static void
+version_check(void) {
+
+	/* SkyEye のバージョンを確認 */
+	if (sil_rew_mem((void *)(SKYEYE_VER_REG)) != SUPPORT_SKYEYE_VER) {
+		target_fput_str("SkyEye version is mismatch!!");
+		at91skyeye_putc('\n');
+		target_fput_str("Suppoted version is ");
+		version_put(SUPPORT_SKYEYE_VER);
+		at91skyeye_putc('\n');
+		target_fput_str("Tool version is ");
+		version_put(sil_rew_mem((void *)(SKYEYE_VER_REG)));
+		at91skyeye_putc('\n');
+		target_fput_str("Kernel Exit...");
+		at91skyeye_putc('\n');
+		target_exit();
+	}
+
+	/* DeviceManger Extension のバージョンを確認 */
+	if ((sil_rew_mem((void *)(DEVM_VER_REG)) & 0xfff0)
+		!= (SUPPORT_DEVM_VER & 0xfff0)) {
+		target_fput_str("DeviceManager Extension version is mismatch!!");
+		at91skyeye_putc('\n');
+		target_fput_str("Suppoted version is ");
+		version_put(SUPPORT_DEVM_VER);
+		at91skyeye_putc('\n');
+		target_fput_str("Tool version is ");
+		version_put((sil_rew_mem((void *)(DEVM_VER_REG)) & 0xfff0));
+		at91skyeye_putc('\n');
+		target_fput_str("Kernel Exit...");
+		at91skyeye_putc('\n');
+		target_exit();
+	}
+}
+
+/*
+ *  ターゲット依存の初期化
+ */
+void
+target_initialize(void)
+{
+	/*
+	 *  target_fput_logが使えるようにUARTを初期化
+	 */
+	at91skyeye_init_uart();
+
+	/*
+	 *  バージョンの確認
+	 */
+	version_check();
+
+	/*
+	 *  ARM依存の初期化
+	 */
+	core_initialize();
+    
+	/*
+	 * 各割込みの割込み要求禁止フラグ全禁止
+	 */
+	idf = ~0U;
+
+	/*
+	 * 割込み優先度マスクは0
+	 */ 
+	ipm = 0U;
+
+	/*
+	 * 全ての割込みをマスク
+	 */ 
+	at91skyeye_disable_int(~0U);
+
+	/*
+	 * 全ての割込み要因をクリア
+	 */
+	at91skyeye_clear_int(~0U);
+
+	/*
+	 *  割込み属性が設定されているかを判別するための変数を初期化する．
+	 */
+	bitpat_cfgint = 0U;
+
+#ifdef TOPPERS_ENABLE_TRACE
+	trace_log_file = fopen("kernel_trace.log","w");
+#endif /* TOPPERS_ENABLE_TRACE */
+}
+
+/*
+ *  ターゲット依存の終了処理
+ */
+void
+target_exit(void)
+{
+	extern void    software_term_hook(void);
+	void (*volatile fp)(void) = software_term_hook;
+
+	/*
+	 *  software_term_hookへのポインタを，一旦volatile指定のあるfpに代
+	 *  入してから使うのは，0との比較が最適化で削除されないようにするた
+	 *  めである．
+	 */
+	if (fp != 0) {
+		(*fp)();
+	}
+
+	/*
+	 *  すべての割込みをマスクする．
+	 */
+	at91skyeye_disable_int(~0U);
+
+	/*
+	 *  ARM依存の終了処理
+	 */
+	core_terminate();
+
+	/*
+	 *  開発環境依存の終了処理
+	 */
+	at91skyeye_exit();
+
+#ifdef TOPPERS_ENABLE_TRACE
+	fclose(trace_log_file);
+#endif /* TOPPERS_ENABLE_TRACE */
+
+#ifdef TOPPERS_ENABLE_GCOV_PART
+	/*
+	 * 一部取得の場合は終了時に .gcda ファイルを出力しないように_exit()を
+	 * 呼び出す．
+	 */
+	extern void _exit(int) NoReturn;;
+	_exit(0);
+#else /* TOPPERS_ENABLE_GCOV_FULL */
+	exit(0);
+#endif /* TOPPERS_ENABLE_GCOV_PART */
+}
+
+/*
+ *  システムログの低レベル出力のための文字出力
+ */
+void
+target_fput_log(char c)
+{
+	if (c == '\n') {
+		at91skyeye_putc('\r');
+	}
+	at91skyeye_putc(c);
+}
+
+#ifdef TOPPERS_ENABLE_TRACE
+/*
+ *  トレースログのファイル出力
+ */
+void
+target_fput_log_file(char c)
+{
+	if (c == '\n') {
+		fputc('\r', trace_log_file);
+	}
+	fputc(c, trace_log_file);
+}
+#endif /* TOPPERS_ENABLE_TRACE */
+
+/*
+ *  割込み要求ラインの属性の設定
+ *
+ *  ASPカーネルでの利用を想定して，パラメータエラーはアサーションでチェッ
+ *  クしている．FI4カーネルに利用する場合には，エラーを返すようにすべき
+ *  であろう．
+ *
+ */
+void
+x_config_int(INTNO intno, ATR intatr, PRI intpri)
+{
+	assert(VALID_INTNO(intno));
+	assert(TMIN_INTPRI <= intpri && intpri <= TMAX_INTPRI);
+
+	/*
+	 *  割込み属性が設定されているかを判別するための変数の設定
+	 */
+	bitpat_cfgint |= INTNO_BITPAT(intno);
+    
+	/* 
+	 * いったん割込みを禁止する
+	 */    
+	x_disable_int(intno);
+
+	if ((intatr & TA_ENAINT) != 0U){
+		(void)x_enable_int(intno);
+	}    
+}
+
+#ifndef OMIT_DEFAULT_INT_HANDLER
+/*
+ * 未定義の割込みが入った場合の処理
+ */
+void
+default_int_handler(void){
+	syslog_0(LOG_EMERG, "Unregistered Interrupt occurs.");
+	target_exit();
+}
+#endif /* OMIT_DEFAULT_INT_HANDLER */
+
+/*
+ *  コンパイラのスタートアップルーチンから呼び出される．
+ *  sta_ker()を呼び出してカーネルをスタートさせる． 
+ */
+int
+main(void)
+{
+	extern void software_init_hook(void);
+	void (*volatile fp)(void) = software_init_hook;
+
+	/*
+	 *  software_init_hook を呼出し（0 でない場合）
+	 *
+	 *  ソフトウェア環境（特にライブラリ）に依存して必要な初期化処
+	 *  理がある場合は，software_init_hook という関数を用意すれば
+	 *  よい．
+	 *  software_term_hook と同様の理由で一旦volatile指定のあるfpに
+	 *  代入する． 
+	 */
+	if (fp != 0) {
+		(*fp)();
+	}
+
+	/*
+	 * カーネルを起動する
+	 */
+	sta_ker();
+
+	return 1;
+}
+
+#ifdef TOPPERS_ENABLE_GCOV_PART
+/*
+ *  GCOV一部取得用ライブラリ
+ */
+
+extern void __gcov_flush();
+
+/*
+ *  GCOV初期化関数
+ *   カバレッジを.gcdaに出力し，SkyEyeで*.gcdaファイルを削除する．
+ */
+void
+gcov_init(void)
+{
+	SIL_PRE_LOC;
+
+	SIL_LOC_INT();
+	__gcov_flush();
+	sil_wrw_mem((void*)0xFFFE1020, 0);
+	SIL_UNL_INT();
+}
+
+/*
+ *  GCOV中断関数
+ *   カバレッジを.gcdaに出力し，SkyEyeで*.gcdaファイルを*.gcda.bakへリネームする．
+ */
+void
+gcov_pause(void)
+{
+	SIL_PRE_LOC;
+
+	SIL_LOC_INT();
+	__gcov_flush();
+	sil_wrw_mem((void*)0xFFFE1024, 0);
+	SIL_UNL_INT();
+}
+
+/*
+ *  GCOV再開関数
+ *   カバレッジを.gcdaに出力し，SkyEyeで*.gcda.bakファイルを*.gcdaへリネームする．
+ */
+void
+gcov_resume(void)
+{
+	SIL_PRE_LOC;
+
+	SIL_LOC_INT();
+	__gcov_flush();
+	sil_wrw_mem((void*)0xFFFE1028, 0);
+	SIL_UNL_INT();
+}
+
+/*
+ *  GCOV出力関数
+ *   カバレッジを.gcdaに出力する．
+ */
+void
+gcov_dump(void)
+{
+	SIL_PRE_LOC;
+
+	SIL_LOC_INT();
+	__gcov_flush();
+	SIL_UNL_INT();
+}
+#endif /* TOPPERS_ENABLE_GCOV_PART */
Index: /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_config.h
===================================================================
--- /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_config.h	(revision 92)
+++ /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_config.h	(revision 92)
@@ -0,0 +1,401 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2006 by GJ Business Division RICOH COMPANY,LTD. JAPAN
+ *  Copyright (C) 2007-2011 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: target_config.h 619 2014-03-18 06:10:27Z nmir-saito $
+ */
+
+/*
+ *  チップ依存モジュール（AT91SKYEYE用）
+ *
+ *  カーネルのチップ依存部のインクルードファイル．kernel_impl.hのター
+ *  ゲット依存部の位置付けとなる．
+ */
+
+#ifndef TOPPERS_TARGET_CONFIG_H
+#define TOPPERS_TARGET_CONFIG_H
+
+/*
+ *  チップシステムのハードウェア資源の定義
+ */
+#include "at91skyeye.h"
+ 
+/*
+ *  トレースログに関する設定
+ */
+#ifdef TOPPERS_ENABLE_TRACE
+#include "logtrace/trace_config.h"
+#endif /* TOPPERS_ENABLE_TRACE */
+
+/*
+ *  サポートしているSKYEYのバージョン
+ */
+#define SUPPORT_SKYEYE_VER  0x1024
+#define SUPPORT_DEVM_VER    0x2020
+
+/*
+ *  ベクタールーチンをカーネルで持つかの定義
+ */
+#define VECTOR_KERNEL
+
+/*
+ *  ベクタールーチンを持たない場合のベクターアドレスの先頭番地
+ */ 
+#define VECTOR_START  0x00
+
+/*
+ *  データセクションの初期化をしない
+ */
+#define TOPPERS_OMIT_DATA_INIT
+
+/*
+ * 割込み待ち命令
+ */
+#define ASM_TARGET_WAIT_INTERRUPT nop
+
+/*
+ *  デフォルトの非タスクコンテキスト用のスタック領域の定義
+ */
+#define DEFAULT_ISTKSZ      0x1000U   /* 4KB */
+                                                   
+/*
+ *  微少時間待ちのための定義（本来はSILのターゲット依存部）
+ */
+#define SIL_DLY_TIM1    20
+#define SIL_DLY_TIM2    10
+
+/*
+ *  割込みハンドラ番号に関する定義
+ */ 
+#define TMIN_INHNO 0U
+#define TMAX_INHNO 31U
+#define TNUM_INH   32U
+
+/*
+ *  割込み番号に関する定義
+ */ 
+#define TMIN_INTNO 0U
+#define TMAX_INTNO 31U
+#define TNUM_INT   32U
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  割込み番号の範囲の判定
+ *
+ *  ビットパターンを求めるのを容易にするために，8は欠番になっている．
+ *  intnoは符号無し変数なので，TMIN_INTNOが0の場合は下限チェックはしない．
+ */
+#if TMIN_INTNO == 0
+#define VALID_INTNO(intno) ((intno) <= TMAX_INTNO)
+#else /* !TMIN_INTNO == 0 */
+#define VALID_INTNO(intno) (TMIN_INTNO <= (intno) && (intno) <= TMAX_INTNO)
+#endif /* TMIN_INTNO == 0 */
+
+#define VALID_INTNO_DISINT(intno)	VALID_INTNO(intno)
+#define VALID_INTNO_CFGINT(intno)	VALID_INTNO(intno)
+#define VALID_INTNO_ATTISR(intno)   VALID_INTNO(intno)
+
+/*
+ *  割込みハンドラの登録用テーブル
+ *   実態はコンフィギュレータで生成する 
+ */
+extern const FP inh_tbl[TNUM_INH];
+
+/*
+ *  割込みハンドラの設定
+ */
+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);
+
+/*
+ *  TOPPERS標準割込み処理モデルの実現
+ */
+
+/*
+ * 各割込みの割込み要求禁止フラグの状態
+ */
+extern uint32_t idf;
+
+/*
+ *  割込み優先度マスク操作ライブラリ
+ *
+ *  AT91SAM7Sは割込み優先度マスクをIRC内でハードウェア的に持つが，
+ *  ソフトウェア側から値を読み書きできないため，割込み要求禁止フラ
+ *  グにより割込み優先度マスクを実現する
+ */
+
+/*
+ *  現在の割込み優先度マスクの値
+ */
+extern PRI ipm;
+
+/*
+ *  割込み優先度マスク毎にセットする，割込み要求禁止フラグの値
+ *  のテーブル
+ */
+extern const uint32_t ipm_mask_tbl[8];
+
+#endif /* TOPPERS_MACRO_ONLY */  
+
+/*
+ *  IPMをimp_mask_tblのインデックスに変換するマクロ
+ */
+#define INDEX_IPM(ipm)  (-(ipm))
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  (モデル上の)割込み優先度マスクの設定
+ * 
+ *  指定された優先度に設定された割込み要求禁止フラグのテーブルの値と（モデ
+ *  ル上の）各割込みの割込み要求禁止フラグの状態を保持した変数の値との
+ *  ORをIRCの割込み要求禁止フラグにセットし，設定した優先度を内部変数
+ *  ipmに保存する．
+ */
+Inline void
+x_set_ipm(PRI intpri)
+{
+    uint32_t ipm_mask = ipm_mask_tbl[INDEX_IPM(intpri)];
+
+    /*
+     *  AT91SAM7Sの割込みコントローラはイネーブルレジスタと
+     *  クリアーレジスタがあるため，一旦全ての割込みを禁止してから，
+     *  特定の割込みのみ許可する必要がある
+     */
+    /* 全割込み禁止 */
+    at91skyeye_disable_int(~0U);
+
+    /* マスク指定されていない割込みのみ許可 */
+    at91skyeye_enable_int(~(ipm_mask|idf));
+
+    ipm = intpri;
+}
+
+#define t_set_ipm(intpri) x_set_ipm(intpri)
+#define i_set_ipm(intpri) x_set_ipm(intpri)
+
+/*
+ *  (モデル上の)割込み優先度マスクの参照
+ *
+ *  ipmの値を返す
+ */
+Inline PRI
+x_get_ipm(void)
+{
+    return(ipm);
+}
+
+#define t_get_ipm() x_get_ipm()
+#define i_get_ipm() x_get_ipm()
+
+/*
+ *  割込み属性が設定されているかを判別するための変数
+ */
+extern uint32_t	bitpat_cfgint;
+
+/*
+ * （モデル上の）割込み要求禁止フラグのセット
+ *
+ *  指定された，割込み番号の割込み要求禁止フラグのセットして，割込みを
+ *  禁止する．また，（モデル上の）割込み要求禁止フラグを管理するidfの対
+ *  応するビットををセットする．
+ *  割込み要求をマスクする機能をサポートしていない場合には，falseを返す
+ */
+
+
+Inline bool_t
+x_disable_int(INTNO intno)
+{
+    if ((bitpat_cfgint & INTNO_BITPAT(intno)) == 0U) {
+        return(false);
+    }
+    at91skyeye_disable_int(INTNO_BITPAT(intno));
+    idf |= INTNO_BITPAT(intno);
+    return(true);
+}
+
+#define t_disable_int(intno)  x_disable_int(intno)
+#define i_disable_int(intno)  t_disable_int(intno)
+
+/* 
+ * (モデル上の)割り要求禁止フラグの解除
+ *
+ * 指定された，割込み番号の割込み要求禁止フラグのクリアして，割込みを
+ * 許可する．また，（モデル上の）割込み要求禁止フラグを管理するidfの対
+ * 応するビットををクリアする．
+ * 割込み要求をマスクする機能をサポートしていない場合には，falseを返す
+ */
+
+Inline bool_t
+x_enable_int(INTNO intno)
+{
+    uint32_t ipm_mask = ipm_mask_tbl[INDEX_IPM(ipm)];
+
+    if ((bitpat_cfgint & INTNO_BITPAT(intno)) == 0U) {
+        return(false);
+    }
+    idf &= ~INTNO_BITPAT(intno);
+
+    /* 全割込み禁止 */
+    at91skyeye_disable_int(~0U);    
+    /* マスク指定されていない割込みのみ許可 */
+    at91skyeye_enable_int(~(ipm_mask|idf));
+
+    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)
+{
+    at91skyeye_clear_int(INTNO_BITPAT(intno));
+}
+
+#define t_clear_int(intno) x_clear_int(intno) 
+#define i_clear_int(intno) x_clear_int(intno) 
+
+
+/*
+ *  割込み要求のチェック
+ */
+Inline bool_t
+x_probe_int(INTNO intno)
+{
+    return(at91skyeye_probe_int(INTNO_BITPAT(intno)));
+}
+
+#define t_probe_int(intno) x_probe_int(intno)
+#define i_probe_int(intno) x_probe_int(intno)
+
+/*
+ *  割込み要求ラインの属性の設定
+ *
+ */
+extern void    x_config_int(INTNO intno, ATR intatr, PRI intpri);
+
+/*
+ *  割込みハンドラの入り口で必要なIRC操作
+ *
+ *  AT91SAM7Sでは，必要な処理はない
+ */
+Inline void
+i_begin_int(INTNO intno)
+{
+    
+}
+
+/*
+ *  割込みハンドラの出口で必要なIRC操作
+ *
+ *  AT91SAM7Sでは，必要な処理はない
+ */
+Inline void
+i_end_int(INTNO intno)
+{
+    
+}
+
+/*
+ *  ターゲットシステム依存の初期化
+ */
+extern void target_initialize(void);
+
+/*
+ *  ターゲットシステムの終了
+ *
+ *  システムを終了する時に使う．
+ */
+extern void target_exit(void) NoReturn;
+
+/*
+ *  割込みハンドラ（chip_support.S）
+ */
+extern void interrupt_handler(void);
+
+/*
+ *  未定義の割込みが入った場合の処理
+ */
+extern void default_int_handler(void);
+
+#ifdef TOPPERS_ENABLE_GCOV_PART
+/*
+ *  GCOV一部取得用ライブラリ
+ */
+/*
+ *  GCOV初期化関数
+ */
+extern void gcov_init(void);
+
+/*
+ *  GCOV中断関数
+ */
+extern void gcov_pause(void);
+
+/*
+ * GCOV再開関数
+ */
+extern void gcov_resume(void);
+
+/*
+ *  GCOV出力関数
+ */
+extern void gcov_dump(void);
+#endif /* TOPPERS_ENABLE_GCOV_PART */
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  コア依存モジュール（ARM用）
+ */
+#include "core_config.h"
+
+#endif /* TOPPERS_TARGET_CONFIG_H */
Index: /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_def.csv
===================================================================
--- /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_def.csv	(revision 92)
+++ /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_def.csv	(revision 92)
@@ -0,0 +1,3 @@
+TA_HIGHLEVEL,TA_HIGHLEVEL
+TA_POSEDGE,TA_POSEDGE
+TA_LOWLEVEL,TA_LOWLEVEL
Index: /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_kernel.h
===================================================================
--- /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_kernel.h	(revision 92)
+++ /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_kernel.h	(revision 92)
@@ -0,0 +1,89 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2006-2007 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: target_kernel.h 619 2014-03-18 06:10:27Z nmir-saito $
+ */
+
+/*
+ *  kernel.hのチップ依存部（AT91SKYEYE用）
+ *
+ *  このインクルードファイルは，kernel.hでインクルードされる．他のファ
+ *  イルから直接インクルードすることはない．このファイルをインクルード
+ *  する前に，t_stddef.hがインクルードされるので，それらに依存してもよ
+ *  い．
+ */
+
+#ifndef TOPPERS_TARGET_KERNEL_H
+#define TOPPERS_TARGET_KERNEL_H
+
+/*
+ *  コア依存で共通な定義（ARM用）
+ */
+#include "arm_gcc/common/core_kernel.h"
+
+/*
+ *  サポートする機能の定義
+ */
+#define TOPPERS_TARGET_SUPPORT_ENA_INT		/* ena_intをサポートする */
+#define TOPPERS_TARGET_SUPPORT_DIS_INT		/* dis_intをサポートする */
+#define TOPPERS_TARGET_SUPPORT_GET_UTM		/* get_utmをサポートする */
+/*
+ *  割込み優先度の範囲
+ */
+#define TMIN_INTPRI        (-7)        /* 割込み優先度の最小値（最高値）*/
+#define TMAX_INTPRI        (-1)        /* 割込み優先度の最大値（最低値）*/
+
+/*
+ *  タイムティックの定義
+ */
+#define TIC_NUME     1U            /* タイムティックの周期の分子 */
+#define TIC_DENO     1U            /* タイムティックの周期の分母 */
+
+/*
+ *  割り込み属性
+ */
+#define	TA_POSEDGE		0x04U		/* ポジティブエッジトリガ */
+#define	TA_LOWLEVEL		0x00U		/* ローレベルトリガ */
+#define	TA_HIGHLEVEL	0x08U		/* ハイレベルトリガ */
+
+/* 
+ *  トレースログに関する定義 
+ *  サイクルカウンタを用いる． 
+ */ 
+#define TRACE_GET_TIM()   cycle_counter_get_current()
+
+#endif /* TOPPERS_TARGET_KERNEL_H */
Index: /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_rename.def
===================================================================
--- /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_rename.def	(revision 92)
+++ /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_rename.def	(revision 92)
@@ -0,0 +1,35 @@
+# kernel_cfg.c
+ipm_mask_tbl
+inh_tbl
+
+# target_config.c
+idf
+ipm
+inh_ipm_tbl
+bitpat_cfgint
+x_config_int
+target_exit
+target_initialize
+default_int_handler
+
+# target_support.S
+undef_handler
+swi_handler
+prefetch_handler
+data_abort_handler
+interrupt_handler
+fiq_handler
+
+# target_timer.c
+target_timer_get_current
+target_timer_probe_int
+
+# trace_config.c
+log_dsp_enter
+log_dsp_leave
+log_inh_enter
+log_inh_leave
+log_exc_enter
+log_exc_leave
+
+INCLUDE "arm_gcc/common/core"
Index: /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_rename.h
===================================================================
--- /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_rename.h	(revision 92)
+++ /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_rename.h	(revision 92)
@@ -0,0 +1,102 @@
+/* This file is generated from target_rename.def by genrename. */
+
+#ifndef TOPPERS_TARGET_RENAME_H
+#define TOPPERS_TARGET_RENAME_H
+
+/*
+ *  kernel_cfg.c
+ */
+#define ipm_mask_tbl				_kernel_ipm_mask_tbl
+#define inh_tbl						_kernel_inh_tbl
+
+/*
+ *  target_config.c
+ */
+#define idf							_kernel_idf
+#define ipm							_kernel_ipm
+#define inh_ipm_tbl					_kernel_inh_ipm_tbl
+#define bitpat_cfgint				_kernel_bitpat_cfgint
+#define x_config_int				_kernel_x_config_int
+#define target_exit					_kernel_target_exit
+#define target_initialize			_kernel_target_initialize
+#define default_int_handler			_kernel_default_int_handler
+
+/*
+ *  target_support.S
+ */
+#define undef_handler				_kernel_undef_handler
+#define swi_handler					_kernel_swi_handler
+#define prefetch_handler			_kernel_prefetch_handler
+#define data_abort_handler			_kernel_data_abort_handler
+#define interrupt_handler			_kernel_interrupt_handler
+#define fiq_handler					_kernel_fiq_handler
+
+/*
+ *  target_timer.c
+ */
+#define target_timer_get_current	_kernel_target_timer_get_current
+#define target_timer_probe_int		_kernel_target_timer_probe_int
+
+/*
+ *  trace_config.c
+ */
+#define log_dsp_enter				_kernel_log_dsp_enter
+#define log_dsp_leave				_kernel_log_dsp_leave
+#define log_inh_enter				_kernel_log_inh_enter
+#define log_inh_leave				_kernel_log_inh_leave
+#define log_exc_enter				_kernel_log_exc_enter
+#define log_exc_leave				_kernel_log_exc_leave
+
+
+#ifdef TOPPERS_LABEL_ASM
+
+/*
+ *  kernel_cfg.c
+ */
+#define _ipm_mask_tbl				__kernel_ipm_mask_tbl
+#define _inh_tbl					__kernel_inh_tbl
+
+/*
+ *  target_config.c
+ */
+#define _idf						__kernel_idf
+#define _ipm						__kernel_ipm
+#define _inh_ipm_tbl				__kernel_inh_ipm_tbl
+#define _bitpat_cfgint				__kernel_bitpat_cfgint
+#define _x_config_int				__kernel_x_config_int
+#define _target_exit				__kernel_target_exit
+#define _target_initialize			__kernel_target_initialize
+#define _default_int_handler		__kernel_default_int_handler
+
+/*
+ *  target_support.S
+ */
+#define _undef_handler				__kernel_undef_handler
+#define _swi_handler				__kernel_swi_handler
+#define _prefetch_handler			__kernel_prefetch_handler
+#define _data_abort_handler			__kernel_data_abort_handler
+#define _interrupt_handler			__kernel_interrupt_handler
+#define _fiq_handler				__kernel_fiq_handler
+
+/*
+ *  target_timer.c
+ */
+#define _target_timer_get_current	__kernel_target_timer_get_current
+#define _target_timer_probe_int		__kernel_target_timer_probe_int
+
+/*
+ *  trace_config.c
+ */
+#define _log_dsp_enter				__kernel_log_dsp_enter
+#define _log_dsp_leave				__kernel_log_dsp_leave
+#define _log_inh_enter				__kernel_log_inh_enter
+#define _log_inh_leave				__kernel_log_inh_leave
+#define _log_exc_enter				__kernel_log_exc_enter
+#define _log_exc_leave				__kernel_log_exc_leave
+
+
+#endif /* TOPPERS_LABEL_ASM */
+
+#include "arm_gcc/common/core_rename.h"
+
+#endif /* TOPPERS_TARGET_RENAME_H */
Index: /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_serial.c
===================================================================
--- /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_serial.c	(revision 92)
+++ /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_serial.c	(revision 92)
@@ -0,0 +1,372 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2007 by GJ Business Division RICOH COMPANY,LTD. JAPAN  
+ *  Copyright (C) 2005-2013 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2015 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ * 
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ * 
+ *  @(#) $Id: target_serial.c 619 2014-03-18 06:10:27Z nmir-saito $
+ */
+
+/*
+ *  シリアルI/Oデバイス（SIO）ドライバ（AT91SKYEYE用）
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include "at91skyeye.h"
+#include "target_serial.h"
+
+/*
+ *  シリアルI/Oポート初期化ブロックの定義
+ */
+typedef struct sio_port_initialization_block 
+{
+    void* us_thr;
+    void* us_rpr;
+    void* us_rcr;
+    void* us_csr;
+}
+SIOPINIB;
+
+/*
+ *  シリアルI/Oポート管理ブロックの定義
+ */
+struct sio_port_control_block 
+{
+    const SIOPINIB  *p_siopinib;  /* シリアルI/Oポート初期化ブロック */
+    intptr_t        exinf;        /* 拡張情報 */
+    bool_t    openflag;             /* オープン済みフラグ */
+    bool_t    sendflag;             /* 送信割込みイネーブルフラグ */
+    bool_t    getready;             /* 文字を受信した状態 */
+    bool_t    putready;             /* 文字を送信できる状態 */
+};
+
+/*
+ * シリアルI/Oポート初期化ブロック
+ */
+const SIOPINIB siopinib_table[TNUM_SIOP] = {
+    {(void*)(USART0_THR),
+     (void*)(USART0_RPR),
+     (void*)(USART0_RCR),
+     (void*)(USART0_CSR)
+    }
+};
+
+/*
+ *  シリアルI/Oポート管理ブロックのエリア
+ */
+SIOPCB	siopcb_table[TNUM_SIOP];
+
+/*
+ *  シリアルI/OポートIDから管理ブロックを取り出すためのマクロ
+ */
+#define INDEX_SIOP(siopid)  ((uint_t)((siopid) - 1))
+#define get_siopcb(siopid)  (&(siopcb_table[INDEX_SIOP(siopid)]))
+
+
+/*
+ * 受信用バッファ
+ */
+static uint8_t usart_rev_buf;
+
+void
+at91skyeye_init_uart(void)
+{
+    /* 受信データの格納先アドレスの設定 */
+    sil_wrw_mem((void *)(USART0_RPR), (uint32_t)(&usart_rev_buf));
+    sil_wrw_mem((void *)(USART0_RCR), 0x0001);
+}
+
+/*
+ * 文字を受信したか?
+ */ 
+Inline bool_t
+uart_getready(SIOPCB *p_siopcb)
+{
+    return(sil_rew_mem((void*)(p_siopcb->p_siopinib->us_rcr)) == 0);
+}
+
+/*
+ * 文字を送信できるか?
+ */
+Inline bool_t
+uart_putready(SIOPCB *p_siopcb)
+{
+    return(true);
+}
+
+/*
+ *  受信した文字の取り出し
+ */
+Inline uint8_t
+uart_getchar(SIOPCB *p_siopcb)
+{
+    char c;
+     
+    c = usart_rev_buf;
+    sil_wrw_mem((void *)(p_siopcb->p_siopinib->us_rpr), (uint32_t)(&usart_rev_buf));
+    sil_wrw_mem((void *)(p_siopcb->p_siopinib->us_rcr), 0x0001);
+    
+    return(c);
+}
+
+/*
+ *  送信する文字の書き込み
+ */
+Inline void
+uart_putchar(SIOPCB *p_siopcb, uint8_t c)
+{
+    sil_wrw_mem((void*)(p_siopcb->p_siopinib->us_thr),c);
+}
+
+/*
+ *  送信割込み許可
+ */
+Inline void
+uart_enable_send(SIOPCB *p_siopcb)
+{
+}
+
+/*
+ *  送信割込み禁止
+ */
+Inline void
+uart_disable_send(SIOPCB *p_siopcb)
+{
+
+}
+
+
+/*
+ *  受信割込み許可
+ */
+Inline void
+uart_enable_rcv(SIOPCB *p_siopcb)
+{
+	sil_wrw_mem((void*)(USART0_IER),0x1);
+}
+
+/*
+ *  受信割込み禁止
+ */
+Inline void
+uart_disable_rcv(SIOPCB *p_siopcb)
+{
+	sil_wrw_mem((void*)(USART0_IDR),0x1);
+}
+
+
+/*
+ *  SIOドライバの初期化
+ */
+void
+sio_initialize(intptr_t exinf)
+{
+    SIOPCB  *p_siopcb;
+    uint_t  i;
+
+    /*
+     *  シリアルI/Oポート管理ブロックの初期化
+     */
+    for (p_siopcb = siopcb_table, i = 0; i < TNUM_SIOP; p_siopcb++, i++) {
+        p_siopcb->p_siopinib = &(siopinib_table[i]);
+        p_siopcb->openflag = false;
+        p_siopcb->sendflag = false;
+    }
+}
+
+/*
+ * シリアルI/Oポートのオープン
+ */
+SIOPCB *
+at91skyeye_uart_opn_por(SIOPCB *p_siopcb, intptr_t exinf)
+{
+    p_siopcb->exinf = exinf;
+    p_siopcb->getready = p_siopcb->putready = false;
+    p_siopcb->openflag = true;
+
+    return(p_siopcb);
+}
+
+
+/*
+ *  シリアルI/Oポートのオープン
+ */
+SIOPCB *
+sio_opn_por(ID siopid, intptr_t exinf)
+{
+    SIOPCB  *p_siopcb = get_siopcb(siopid);
+    bool_t    opnflg;
+    ER      ercd;
+
+    /*
+     *  オープンしたポートがあるかをopnflgに読んでおく．
+     */
+    opnflg = p_siopcb->openflag;
+
+    /*
+     *  デバイス依存のオープン処理．
+     */
+    at91skyeye_uart_opn_por(p_siopcb, exinf);
+
+    /*
+     *  シリアルI/O割込みのマスクを解除する．
+     */
+    if (!opnflg) {
+        ercd = ena_int(INTNO_SIO);
+        assert(ercd == E_OK);
+    }
+    return(p_siopcb);
+}
+
+/*
+ *  シリアルI/Oポートのクローズ
+ */
+void
+sio_cls_por(SIOPCB *p_siopcb)
+{
+    /*
+     *  デバイス依存のクローズ処理．
+     */
+    p_siopcb->openflag = false;
+    
+    /*
+     *  シリアルI/O割込みをマスクする．
+     */
+    dis_int(INTNO_SIO);
+}
+
+/*
+ *  SIOの割込みハンドラ
+ */
+void
+sio_handler0(void)
+{
+    SIOPCB *p_siopcb = &(siopcb_table[0]);
+
+    if (uart_getready(p_siopcb)) {
+        /*
+         *  受信通知コールバックルーチンを呼び出す．
+         */
+        sio_irdy_rcv(p_siopcb->exinf);
+    }
+    if (uart_putready(p_siopcb)) {
+        /*
+         *  送信可能コールバックルーチンを呼び出す．
+         */
+        sio_irdy_snd(p_siopcb->exinf);
+    }    
+}
+
+
+void
+sio_handler1(void)
+{
+    SIOPCB *p_siopcb = &(siopcb_table[0]);
+    
+    if (uart_getready(p_siopcb)) {
+        /*
+         *  受信通知コールバックルーチンを呼び出す．
+         */
+        sio_irdy_rcv(p_siopcb->exinf);
+    }
+    if (uart_putready(p_siopcb)) {
+        /*
+         *  送信可能コールバックルーチンを呼び出す．
+         */
+        sio_irdy_snd(p_siopcb->exinf);
+    }    
+}
+
+
+
+/*
+ *  シリアルI/Oポートへの文字送信
+ */
+bool_t
+sio_snd_chr(SIOPCB *siopcb, char c)
+{    
+    if (uart_putready(siopcb)){
+        uart_putchar(siopcb, c);
+        return(true);
+    }
+    return(false);
+}
+
+/*
+ *  シリアルI/Oポートからの文字受信
+ */
+int_t
+sio_rcv_chr(SIOPCB *siopcb)
+{
+    if (uart_getready(siopcb)) {
+        return((int_t)(uint8_t) uart_getchar(siopcb));
+    }
+    return(-1);
+}
+
+/*
+ *  シリアルI/Oポートからのコールバックの許可
+ */
+void
+sio_ena_cbr(SIOPCB *siopcb, uint_t cbrtn)
+{
+    switch (cbrtn) {
+        case SIO_RDY_SND:
+            uart_enable_send(siopcb);
+            break;
+        case SIO_RDY_RCV:
+            uart_enable_rcv(siopcb);
+            break;
+    }
+}
+
+/*
+ *  シリアルI/Oポートからのコールバックの禁止
+ */
+void
+sio_dis_cbr(SIOPCB *siopcb, uint_t cbrtn)
+{
+    switch (cbrtn) {
+        case SIO_RDY_SND:
+            uart_disable_send(siopcb);
+            break;
+        case SIO_RDY_RCV:
+            uart_disable_rcv(siopcb);
+            break;
+    }
+}
Index: /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_serial.cfg
===================================================================
--- /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_serial.cfg	(revision 92)
+++ /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_serial.cfg	(revision 92)
@@ -0,0 +1,12 @@
+/*
+ *  @(#) $Id: target_serial.cfg 619 2014-03-18 06:10:27Z nmir-saito $
+ */
+
+/*
+ *  SIOドライバ（AT91SAM7S用）のコンフィギュレーションファイル
+ */
+
+#include "target_serial.h"
+ATT_INI({ TA_NULL, 0, sio_initialize });
+DEF_INH(INHNO_SIO, { TA_NULL, sio_handler0 });
+CFG_INT(INTNO_SIO, { INTATR_SIO, INTPRI_SIO });
Index: /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_serial.h
===================================================================
--- /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_serial.h	(revision 92)
+++ /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_serial.h	(revision 92)
@@ -0,0 +1,145 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2006 by GJ Business Division RICOH COMPANY,LTD. JAPAN  
+ *  Copyright (C) 2007-20013 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2015 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ * 
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ * 
+ *  @(#) $Id: target_serial.h 619 2014-03-18 06:10:27Z nmir-saito $
+ */
+
+/*
+ * シリアルI/Oデバイス（SIO）ドライバ（AT91SKYEYE用）
+ */
+
+#ifndef TOPPERS_TARGET_SERIAL_H
+#define TOPPERS_TARGET_SERIAL_H
+
+#include "at91skyeye.h"
+
+/*
+ *  SIOの割込みハンドラのベクタ番号
+ */
+#define INHNO_SIO        IRQ_USART0   /* 割込みハンドラ番号 */
+#define INTNO_SIO        IRQ_USART0   /* 割込み番号 */
+#define INTPRI_SIO       -2              /* 割込み優先度 */
+#define INTATR_SIO       0U        /* 割込み属性 */
+
+/*
+ *  シリアルI/Oポート数の定義
+ */
+#define TNUM_SIOP		1		/* サポートするシリアルI/Oポートの数 */
+
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  シリアルI/Oポート管理ブロックの定義
+ */
+typedef struct sio_port_control_block	SIOPCB;
+
+/*
+ *  コールバックルーチンの識別番号
+ */
+#define SIO_RDY_SND	1U		/* 送信可能コールバック */
+#define SIO_RDY_RCV	2U		/* 受信通知コールバック */
+
+/*
+ * カーネル起動時のログ出力用の初期化（in usart.h）
+ */
+extern  void at91skyeye_init_uart(void);
+
+/*
+ *  UARTからのポーリング出力
+ */
+Inline void
+at91skyeye_putc(char c)
+{
+    sil_wrw_mem((void *)USART0_THR, c);
+}
+
+/*
+ *  SIOドライバの初期化
+ */
+extern void sio_initialize(intptr_t exinf);
+
+/*
+ *  シリアルI/Oポートのオープン
+ */
+extern SIOPCB *sio_opn_por(ID siopid, intptr_t exinf);
+
+/*
+ *  シリアルI/Oポートのクローズ
+ */
+extern void sio_cls_por(SIOPCB *p_siopcb);
+
+/*
+ *  SIOの割込みハンドラ
+ */
+extern void sio_handler(void);
+
+/*
+ *  シリアルI/Oポートへの文字送信
+ */
+extern bool_t sio_snd_chr(SIOPCB *siopcb, char c);
+
+/*
+ *  シリアルI/Oポートからの文字受信
+ */
+extern int_t sio_rcv_chr(SIOPCB *siopcb);
+
+/*
+ *  シリアルI/Oポートからのコールバックの許可
+ */
+extern void sio_ena_cbr(SIOPCB *siopcb, uint_t cbrtn);
+
+/*
+ *  シリアルI/Oポートからのコールバックの禁止
+ */
+extern void sio_dis_cbr(SIOPCB *siopcb, uint_t cbrtn);
+
+/*
+ *  シリアルI/Oポートからの送信可能コールバック
+ */
+extern void sio_irdy_snd(intptr_t exinf);
+
+/*
+ *  シリアルI/Oポートからの受信通知コールバック
+ */
+extern void sio_irdy_rcv(intptr_t exinf);
+
+#endif /* TOPPERS_MACRO_ONLY */
+#endif /* TOPPERS_TARGET_SERIAL_H */
Index: /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_sil.h
===================================================================
--- /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_sil.h	(revision 92)
+++ /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_sil.h	(revision 92)
@@ -0,0 +1,64 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2004-2006 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: target_sil.h 619 2014-03-18 06:10:27Z nmir-saito $
+ */
+
+/*
+ *  sil.hのチップ依存部（AT91SKYEYE用）
+ *
+ *  このインクルードファイルは，sil.hの先頭でインクルードされる．他のファ
+ *  イルからは直接インクルードすることはない．このファイルをインクルー
+ *  ドする前に，t_stddef.hがインクルードされるので，それらに依存しても
+ *  よい．
+ */
+
+#ifndef TOPPERS_TARGET_SIL_H
+#define TOPPERS_TARGET_SIL_H
+
+/*
+ *  チップのエンディアン
+ */
+#define SIL_ENDIAN_LITTLE             /* リトルエンディアン */
+
+/*
+ *  ARMで共通な定義
+ */
+#include "core_sil.h"
+
+#endif /* TOPPERS_TARGET_SIL_H */
Index: /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_stddef.h
===================================================================
--- /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_stddef.h	(revision 92)
+++ /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_stddef.h	(revision 92)
@@ -0,0 +1,86 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2004-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: target_stddef.h 619 2014-03-18 06:10:27Z nmir-saito $
+ */
+
+/*
+ *  t_stddef.hのチップ依存部（AT91SKYEYE用）
+ *
+ *  このインクルードファイルは，t_stddef.hの先頭でインクルードされる．
+ *  他のファイルからは直接インクルードすることはない．他のインクルード
+ *  ファイルに先立って処理されるため，他のインクルードファイルに依存し
+ *  てはならない．
+ */
+
+#ifndef TOPPERS_TARGET_STDDEF_H
+#define TOPPERS_TARGET_STDDEF_H
+
+/*
+ *  ターゲットを識別するためのマクロの定義
+ */
+#define TOPPERS_AT91SKYEYE               /* システム略称 */
+
+/*
+ *  開発環境で共通な定義
+ * 
+ *  開発環境でstdint.hが用意されている場合には，TOPPERS_STDINT_TYPE1の
+ *  マクロ定義を削除し，stdint.hをインクルードすればよい．  
+ */
+/* #define TOPPERS_STDINT_TYPE1 */
+#define TOPPERS_STDFLOAT_TYPE1
+#include <tool_stddef.h>
+
+/*
+ *  コアで共通な定義
+ */
+#include <core_stddef.h>
+
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  アサーションの失敗時の実行中断処理（T.B.D）
+ */
+Inline void
+TOPPERS_assert_abort(void)
+{    
+}
+
+#endif /* TOPPERS_MACRO_ONLY */
+#endif /* TOPPERS_TARGET_STDDEF_H */
Index: /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_support.S
===================================================================
--- /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_support.S	(revision 92)
+++ /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_support.S	(revision 92)
@@ -0,0 +1,396 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2006-2011 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2014,2015 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ * 
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ * 
+ *  @(#) $Id: target_support.S 619 2014-03-18 06:10:27Z nmir-saito $
+ */
+
+/*
+ *  チップ依存モジュール アセンブリ言語部（AT91SKYEYE用）
+ */
+
+#define TOPPERS_MACRO_ONLY
+#define UINT_C(val)		(val)		/* uint_t型の定数を作るマクロ */
+#define ULONG_C(val)	(val)		/* ulong_t型の定数を作るマクロ */
+
+#include "kernel_impl.h"
+
+/*
+ *  低レベルのターゲットシステム依存の初期化
+ *
+ *  スタートアップモジュールの中で，メモリ初期化の前に呼び出される．
+ */
+	.text
+	.align 2
+	.global hardware_init_hook
+	.type hardware_init_hook, function
+hardware_init_hook:
+	bx  lr
+
+/*
+ * 割込みハンドラ
+ *
+ * IRQ 例外ベクタから呼び出される
+ */
+	.text
+	.align 2
+	.global irq_handler
+	.type irq_handler, function
+irq_handler:
+	/* 
+	 * IRQモードで実行される
+	 */
+	/* 
+	 *  割込み前のモード(スーパーバイザーモード)へ
+	 *  移行し，コンテキストを保存する
+	 */
+	msr   cpsr_cxsf, #(CPSR_SVC | CPSR_IRQ_BIT) 
+	/* 
+	 *  コンテキストを SVモードのスタックへ保存
+	 */
+	stmfd sp!, {r0-r3, ip, lr, pc} /* pcはダミー */
+
+	/*
+	 * spsrと戻り番地を取得するためにIRQモードへ
+	 */
+	msr   cpsr_cxsf, #(CPSR_IRQ | CPSR_IRQ_BIT)
+	/* lr_irq を r0 へ */
+	sub   r0, lr, #4
+	/* spsr_irq を r1 へ */
+	mrs   r1, spsr
+
+	/* 割込み要因番号を r3 へ */
+	ldr   r3, =AIC_IVR
+	ldr   r3, [r3]
+
+	/*
+	 *  割込みハンドラ実行時のモード（スーパーバイザーモード）に
+	 */
+	msr   cpsr_cxsf, #(CPSR_SVC | CPSR_IRQ_BIT) 
+	/*
+	 *  戻り番地と spsr をスーパーバイザモード用のスタックに積む
+	 */
+	str   r0, [sp, #0x18] /* 戻り番地をスタックに */
+	stmfd sp!, {r1}       /* spsrをスタックに保存 */
+	mov   lr, sp          /* この時点のスタックを復帰のため取得 */
+
+	/*
+	 *  ネスト回数のインクリメント
+	 */
+	ldr   r2, =excpt_nest_count /* 例外・割込みネスト回数を取得 */
+	ldr   r1, [r2]
+	add   r0, r1, #1            /* 例外・割込みネスト回数を更新 */
+	str   r0, [r2]
+
+irq_handler_1:
+	stmfd sp!, {lr}     /* 復帰用のスタックポインタの保存 */
+
+	/*
+	 *  割込み要因の割込み優先度を求め(モデル上の)割込み優先度マスクをセット
+	 *  する．またその際，ハンドラ実行前の(モデル上の)割込み優先度マスクを
+	 *  保存する．
+	 */
+	ldr   r0, =inh_ipm_tbl      /* 割込み優先度を取得 */
+	ldr   r1, [r0, r3, lsl #2]  /* r1<-割込み優先度   */
+	ldr   r0, =ipm              /* 割込み発生前の割込み優先度マスクをスタックに保存 */
+	ldr   r2, [r0]              
+	stmfd sp!,{r2}         
+	str   r1, [r0]              /* (モデル上の)割込み優先度マスクをセット */
+
+	/*
+	 * ハードウェア(IRC)は割込みを受け付けた後，割込みに応じて優先度マスク
+	 * をセットする．そのためソフトウェア的には特に処理は行う必要はない．
+	 * ソフトウェア的に(モデル上の)割込み優先度マスクを上げる際には，
+	 * 割込み優先度マスクに応じて割込み要求禁止フラグにより割込みを禁止する．
+	 */
+	/*
+	 *  割込みハンドラの起動番地を取得
+	 */
+	ldr   r0, =inh_tbl         /* 割込みハンドラテーブルの読み出し  */
+	ldr   r0, [r0, r3, lsl #2] /* r0<-割込みハンドラ            */    
+	
+	stmfd sp!,{r3}             /* inhno を保存  */
+
+	/* 
+	 * 割り込み許可 
+	 */         
+	msr   cpsr_cxsf, #(CPSR_SVC)
+
+#ifdef LOG_INH_ENTER
+	stmfd sp!,{r0}
+	mov   r0, r3         /* inhno をパラメータに    */
+	bl    log_inh_enter  /* log_inh_enterを呼び出す */
+	ldmfd sp!,{r0}
+#endif /* LOG_INH_ENTER */
+
+	/* 
+	 * 割込みハンドラの呼び出し
+	 */
+	mov   lr, pc
+	bx    r0
+
+	ldmfd sp!,{r0}       /* inhno を復帰  */    
+#ifdef LOG_INH_LEAVE
+	bl    log_inh_leave  /* log_inh_leaveを呼び出す */
+#endif /* LOG_INH_LEAVE */
+
+	/*
+	 * カーネル管理の割込みを禁止する
+	 */
+/*    msr   cpsr, #(CPSR_SVC AOR CPSR_IRQ_BIT)*/
+	mrs	r3, cpsr
+	and	r3, r3, #CPSR_FIQ_BIT
+	orr	r3, r3, #(CPSR_SVC|CPSR_IRQ_BIT)
+	msr	cpsr, r3
+	
+	/*
+	 * 割込みクリア
+	 */
+	ldr   r3, =AIC_EOI
+	mov   r0, #0
+	str   r0, [r3]
+
+	b     target_ret_int
+
+/*
+ *
+ * ターゲット依存の例外入口処理
+ *
+ */
+	.text
+	.global target_exc_handler
+	.type target_exc_handler, function
+target_exc_handler:
+    /*
+	 *  前提：(1)動作モード：それぞれの例外モード(r2に種類が格納されている)
+	 *        (2)r1 : spsr
+	 *        (3)r0 : lr(割込み発生時のPCの値)
+	 *        (4)スタック: r0-r3,ip,lr,pc をプッシュ済み
+	 *  処理：スーパーバイザーモードへ移行，割込みロック状態
+	 *  割込みロック状態，CPUロック状態はCPU例外発生時の
+	 *  状態を継承する．
+	 */
+	msr   cpsr_cxsf, #(CPSR_SVC | CPSR_FIQ_BIT | CPSR_IRQ_BIT) 
+	str   r0, [sp, #0x18] /* 戻り番地をスタックのPCの位置に */
+	stmfd sp!, {r1}       /* spsrをスタックに保存 */    
+	mov   lr, sp          /* この時点のスタックを復帰のため取得 */
+
+	ldr   r0, =ipm        /* 割込み発生前の割込み優先度マスクをスタックに保存 */
+	ldr   r1, [r0]              
+	stmfd sp!, {r1}
+
+	/* 
+	 * コンテキスト判定のため，excpt_nest_count をスタックに保存．
+	 * スタックに保存せず，現在のexcpt_nest_countを-1すると取得できるが，
+	 * スタックに積んでおいた方がデバッグ等が行いやすいので，スタックに
+	 * 保存する．
+	 */
+	ldr   r0, =excpt_nest_count
+	ldr   r1, [r0]
+	stmfd sp!, {r1}
+	mov   r3,  sp         /* 例外フレーム番地を保存 */
+
+	/*
+	 *  ネストカウンタをインクリメント
+	 */
+	ldr   r0, =excpt_nest_count
+	ldr   r1, [r0]
+	add   r1, r1, #1
+	str   r1, [r0]
+
+target_exc_handler_1:
+	stmfd sp!, {lr}     /* 復帰用のスタックポインタの保存 */
+
+	/* 
+	 * 割込み発生前の割込み優先度マスクをスタックに保存 
+	 * 割込みハンドラと出口ルーチンを共有するために保存
+	 */
+	ldr   r0, =ipm       
+	ldr   r1, [r0]              
+	stmfd sp!, {r1}
+
+	/*
+	 *  CPU例外ハンドラの起動番地を取得
+	 */
+	ldr   r0, =exch_tbl        /* 割込みハンドラテーブルの読み出し */
+	ldr   r1, [r0, r2, lsl #2] /* r1<-例外ハンドラ                 */
+
+	stmfd sp!,{r2}      /* excno を保存 */
+
+	/* 
+	 * 割り込み許可 
+	 * CPUロック状態，割込みロック状態は継承する
+	 */         
+	ldr   r0, [lr]
+	and   r0, r0, #(CPSR_IRQ_BIT|CPSR_FIQ_BIT)
+	orr   r0, r0, #(CPSR_SVC)
+	msr   cpsr, r0
+
+#ifdef LOG_EXC_ENTER
+	stmfd sp!,{r1,r3}
+	mov   r0, r2         /* excno をパラメータに    */
+	bl    log_exc_enter  /* log_exc_enterを呼び出す */
+	ldmfd sp!,{r1,r3}
+#endif /* LOG_EXC_ENTER */
+
+	/* 
+	 * CPU例外ハンドラの呼び出し
+	 * 例外フレームの先頭を引数として渡す
+	 */        
+	mov   r0, r3
+	mov   lr, pc
+	bx    r1
+
+	ldmfd sp!,{r0}       /* excno を復帰  */    
+#ifdef LOG_EXC_LEAVE
+	bl    log_exc_leave  /* log_exc_leaveを呼び出す */
+#endif /* LOG_EXC_LEAVE */
+
+
+	/*
+	 * カーネル管理の割込みを禁止する
+	 */
+	msr   cpsr_cxsf, #(CPSR_SVC | CPSR_IRQ_BIT)  
+
+	/*
+	 * 出口処理(ターゲット依存部)
+	 * irq_handler とはここで合流する
+	 */
+	.global target_ret_int
+	.type target_ret_int, function
+target_ret_int:
+	/*
+	 * 割込み優先度マスクを元に戻す
+	 */
+	ldmfd sp!, {r1}             /* 元の割込み優先度マスクを取得 */
+	ldr   r0, =ipm              /* 割込み優先度マスクを復帰     */
+	str   r1, [r0]
+	rsb   r1, r1,  #0           /* インデックスとなるように反転 */
+	ldr   r0, =ipm_mask_tbl     /* (モデル上)の割込み優先度のを実現するための */
+	ldr   r2, [r0, r1, lsl #2]  /* 割込み要求禁止フラグを取得 */    
+	ldr   r0, =idf              /* 各割込みの割込み要求禁止フラグの状態を取得 */
+	ldr   r1, [r0]
+	/*
+	 * 各割込みの割込み要求禁止フラグの状態と(モデル上)の割込み優先度のを実現する
+	 * ための割込み要求禁止フラグの状態のORをとり，それの否定を求めることにより，
+	 * IRCの割込み許可レジスタへの設定値を生成し設定する．
+	 */
+	mvn   lr, #0                
+	/* いったん全割込みの割込み要求をマスクする */
+	ldr   r0, =AIC_IDCR
+	str   lr, [r0]
+	orr   r1, r1, r2            /* マスク指定されていない割込みの許可 */
+	mvn   r1, r1                /* 設定値を生成 */    
+	ldr   r0, =AIC_IECR
+	str   r1, [r0]
+
+	/*
+	 * スタックポインタの復帰
+	 */
+	ldmfd sp!, {r2}             /* 元のスタックポインタを取得 */
+	mov   sp, r2
+
+	/*
+	 * 後の処理はARM依存部で実行
+	 */            
+	b     ret_int
+
+
+/* 以降，Not Yet! */
+
+/*
+ * カーネル管理外のCPU例外の出入口処理
+ */
+ 	.global target_kernel_unc_exc_handler
+ 	.type target_kernel_unc_exc_handler, function
+target_kernel_unc_exc_handler:
+	/*
+	 * ネストカウントをインクリメント
+	 */
+	ldr   r0, =excpt_nest_count
+	ldr   r1, [r0]
+	add   r1, r1, #1
+	str   r1, [r0]
+
+target_kernel_unc_exc_handler_1:
+	stmfd sp!, {lr}     /* 復帰用のスタックポインタの保存 */
+
+	/*
+	 *  CPU例外ハンドラの起動番地を取得
+	 */
+	ldr   r0, =exch_tbl        /* 割込みハンドラテーブルの読み出し */
+	ldr   r1, [r0, r2, lsl #2] /* r1<-例外ハンドラ                 */
+
+	/*
+	 * システム状態（コンテキストは除く）を，CPU例外発生時の状態へ
+	 */
+	ldr   r0, [lr]             /* CPU例外発生前のCPSRの取得 */
+	and   r0, r0, #(CPSR_IRQ_BIT | CPSR_FIQ_BIT)
+	orr   r0, r0, #(CPSR_SVC)
+	msr   cpsr_cxsf, r0
+
+	/* 
+	 * CPU例外ハンドラの呼び出し
+	 * 例外フレームの先頭を引数として渡す
+	 */        
+	mov   r0, r3
+	mov   lr, pc
+	bx    r1
+
+	/*
+	 *  例外・割込みのネストカウント（excpt_nest_count)のデクリメント
+	 */        
+	ldr   r0, =excpt_nest_count   /* r0 <-excpt_nest_count */
+	ldr   r1, [r0]
+	sub   r2, r1, #1
+	str   r2, [r0]
+
+	/*
+	 * スタックポインタの復帰
+	 */
+	ldmfd sp!, {r2}             /* 元のスタックポインタを取得 */
+	mov   sp, r2
+
+	/*
+	 * CPU例外からの復帰
+	 */
+	ldmfd sp!,{r1}              /* CPSRの復帰処理 */
+	msr   spsr_cxsf, r1         /* 戻り先のcpsrをspsrに設定 */
+	ldmfd sp!,{r0-r3,ip,lr,pc}^ /* コンテキストの復帰，^付きなので、cpsr <- spsr */
Index: /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_syssvc.h
===================================================================
--- /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_syssvc.h	(revision 92)
+++ /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_syssvc.h	(revision 92)
@@ -0,0 +1,94 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2013 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2015 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ * 
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ * 
+ *  @(#) $Id: target_syssvc.h 619 2014-03-18 06:10:27Z nmir-saito $
+ */
+
+/*
+ *  システムサービスのチップ依存部（AT91SKYEYE用）
+ *
+ *  システムサービスのチップ依存部のインクルードファイル．このファイルの
+ *  内容は，コンポーネント記述ファイルに記述され，このファイルは無くなる
+ *  見込み．
+ */
+
+#ifndef TOPPERS_TARGET_SYSSVC_H
+#define TOPPERS_TARGET_SYSSVC_H
+
+/*
+ *  トレースログに関する設定
+ */
+#ifdef TOPPERS_ENABLE_TRACE
+#include "logtrace/trace_config.h"
+#endif /* TOPPERS_ENABLE_TRACE */
+
+
+/*
+ *  起動メッセージのターゲットシステム名
+ */
+#define TARGET_NAME    "AT91SKYEYE(ARM)"
+
+/*
+ *  システムログの低レベル出力のための文字出力
+ *
+ *  ターゲット依存の方法で，文字cを表示/出力/保存する．
+ */
+extern void	target_fput_log(char c);
+
+#ifdef TOPPERS_ENABLE_TRACE
+/*
+ *  トレースログのファイル出力
+ */
+extern void	target_fput_log_file(char c);
+#endif /* TOPPERS_ENABLE_TRACE */
+
+/*
+ *  シリアルポート数の定義
+ */
+#define TNUM_PORT        1        /* サポートするシリアルポートの数 */
+
+/*
+ *  システムログタスク関連の定数の定義
+ *
+ *  デフォルト値の通り．
+ */
+
+#endif /* TOPPERS_TARGET_SYSSVC_H */
Index: /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_test.h
===================================================================
--- /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_test.h	(revision 92)
+++ /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_test.h	(revision 92)
@@ -0,0 +1,64 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2007-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2015 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ * 
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ * 
+ *  @(#) $Id: target_test.h 619 2014-03-18 06:10:27Z nmir-saito $
+ */
+
+/*
+ *		テストプログラムのチップ依存定義（AT91SKYEYE用）
+ */
+
+#ifndef TOPPERS_TARGET_TEST_H
+#define TOPPERS_TARGET_TEST_H
+
+/*
+ *  チップで共通な定義
+ */
+#define CPUEXC1 1
+
+#if defined(TOPPERS_ENABLE_GCOV_PART) || defined(TOPPERS_ENABLE_GCOV_FULL)
+#define RAISE_CPU_EXCEPTION Asm(".long 0x16000010");
+#else
+#define RAISE_CPU_EXCEPTION Asm(".long 0x06000010");
+#endif /* defined(TOPPERS_ENABLE_GCOV_PART) || defined(TOPPERS_ENABLE_GCOV_FULL) */
+
+#define ALL_STACKSIZE			(4096)
+#define TASK_LOOP     300000
+
+#endif /* TOPPERS_TARGET_TEST_H */
Index: /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_timer.c
===================================================================
--- /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_timer.c	(revision 92)
+++ /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_timer.c	(revision 92)
@@ -0,0 +1,88 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ *
+ *  Copyright (C) 2006 by GJ Business Division RICOH COMPANY,LTD. JAPAN  
+ *  Copyright (C) 2007-2010 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: target_timer.c 619 2014-03-18 06:10:27Z nmir-saito $
+ */
+
+/*
+ *  タイマドライバ（AT91SKYEYE用）
+ */
+
+#include "kernel_impl.h"
+#include "time_event.h"
+#include <sil.h>
+#include "target_timer.h"
+
+/*
+ *  タイマの起動処理
+ */
+void
+target_timer_initialize(intptr_t exinf)
+{
+    CLOCK    cyc = TO_CLOCK(TIC_NUME, TIC_DENO);
+
+    /*
+     *  タイマ関連の設定
+     */
+    /* 周期を設定 */
+    sil_wrw_mem((void *)TIMER_1_RC, cyc);
+    /* 周期のリロード設定を有効にする */
+    sil_wrw_mem((void *)TIMER_1_CMR, 2 << 13);
+    /* 周期を有効にする */
+    sil_wrw_mem((void *)TIMER_1_CCR, 0x0000001);
+}
+
+/*
+ *  タイマの停止処理
+ */
+void
+target_timer_terminate(intptr_t exinf)
+{
+ 
+}
+
+/*
+ *  タイマ割込みハンドラ
+ */
+void
+target_timer_handler(void)
+{
+    i_begin_int(INTNO_TIMER);
+    signal_time();                    /* タイムティックの供給 */
+    i_end_int(INTNO_TIMER);
+}
Index: /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_timer.cfg
===================================================================
--- /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_timer.cfg	(revision 92)
+++ /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_timer.cfg	(revision 92)
@@ -0,0 +1,13 @@
+/*
+ *  @(#) $Id: target_timer.cfg 619 2014-03-18 06:10:27Z nmir-saito $
+ */
+
+/*
+ *    タイマドライバのコンフィギュレーションファイル
+ */
+
+#include "target_timer.h"
+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_arm_gcc/trunk/target/at91skyeye_gcc/target_timer.h
===================================================================
--- /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_timer.h	(revision 92)
+++ /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_timer.h	(revision 92)
@@ -0,0 +1,126 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2006 by GJ Business Division RICOH COMPANY,LTD. JAPAN
+ *  Copyright (C) 2007 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: target_timer.h 619 2014-03-18 06:10:27Z nmir-saito $
+ */
+
+/*
+ *  タイマドライバ（AT91SKYEYE用）
+ */
+
+#ifndef TOPPERS_TARGET_TIMER_H
+#define TOPPERS_TARGET_TIMER_H
+
+#include <sil.h>
+#include "at91skyeye.h"
+
+/*
+ *  タイマ割込みハンドラ登録のための定数
+ */
+#define INHNO_TIMER     IRQ_TC1      /* 割込みハンドラ番号 */
+#define INTNO_TIMER     IRQ_TC1      /* 割込み番号 */
+#define INTPRI_TIMER    -6           /* 割込み優先度 */
+#define INTATR_TIMER    0U           /* 割込み属性 */
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  タイマ値の内部表現の型
+ */
+typedef uint32_t    CLOCK;
+
+/*
+ *  タイマ値の内部表現とミリ秒・μ秒単位との変換
+ *
+ */
+#define TIMER_CLOCK          2048U
+#define TO_CLOCK(nume, deno) (TIMER_CLOCK * (nume) / (deno))
+#define TO_USEC(clock)       (((SYSUTM) clock) * 1000U / TIMER_CLOCK)
+
+
+/*
+ *  設定できる最大のタイマ周期（単位は内部表現）
+ */
+#define MAX_CLOCK        ((CLOCK) 0xffffffU)
+
+/*
+ *  タイマの現在値を割込み発生前の値とみなすかの判断
+ */
+#define GET_TOLERANCE    100U    /* 処理遅れの見積り値（単位は内部表現）*/
+#define BEFORE_IREQ(clock) \
+            ((clock) >= TO_CLOCK(TIC_NUME, TIC_DENO) - GET_TOLERANCE)
+
+/*
+ *  タイマの起動処理
+ *
+ *  タイマを初期化し，周期的なタイマ割込み要求を発生させる．
+ */
+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 *)TIMER_1_CV));
+}
+
+/*
+ *  タイマ割込み要求のチェック
+ */
+Inline bool_t
+target_timer_probe_int(void)
+{
+    return(x_probe_int(INTNO_TIMER));
+}
+
+/*
+ *  タイマ割込みハンドラ
+ */
+extern void    target_timer_handler(void);
+
+#endif /* TOPPERS_MACRO_ONLY */
+#endif /* TOPPERS_TARGET_TIMER_H */
Index: /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_unrename.h
===================================================================
--- /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_unrename.h	(revision 92)
+++ /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_unrename.h	(revision 92)
@@ -0,0 +1,103 @@
+/* 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
+
+/*
+ *  kernel_cfg.c
+ */
+#undef ipm_mask_tbl
+#undef inh_tbl
+
+/*
+ *  target_config.c
+ */
+#undef idf
+#undef ipm
+#undef inh_ipm_tbl
+#undef bitpat_cfgint
+#undef x_config_int
+#undef target_exit
+#undef target_initialize
+#undef default_int_handler
+
+/*
+ *  target_support.S
+ */
+#undef undef_handler
+#undef swi_handler
+#undef prefetch_handler
+#undef data_abort_handler
+#undef interrupt_handler
+#undef fiq_handler
+
+/*
+ *  target_timer.c
+ */
+#undef target_timer_get_current
+#undef target_timer_probe_int
+
+/*
+ *  trace_config.c
+ */
+#undef log_dsp_enter
+#undef log_dsp_leave
+#undef log_inh_enter
+#undef log_inh_leave
+#undef log_exc_enter
+#undef log_exc_leave
+
+
+#ifdef TOPPERS_LABEL_ASM
+
+/*
+ *  kernel_cfg.c
+ */
+#undef _ipm_mask_tbl
+#undef _inh_tbl
+
+/*
+ *  target_config.c
+ */
+#undef _idf
+#undef _ipm
+#undef _inh_ipm_tbl
+#undef _bitpat_cfgint
+#undef _x_config_int
+#undef _target_exit
+#undef _target_initialize
+#undef _default_int_handler
+
+/*
+ *  target_support.S
+ */
+#undef _undef_handler
+#undef _swi_handler
+#undef _prefetch_handler
+#undef _data_abort_handler
+#undef _interrupt_handler
+#undef _fiq_handler
+
+/*
+ *  target_timer.c
+ */
+#undef _target_timer_get_current
+#undef _target_timer_probe_int
+
+/*
+ *  trace_config.c
+ */
+#undef _log_dsp_enter
+#undef _log_dsp_leave
+#undef _log_inh_enter
+#undef _log_inh_leave
+#undef _log_exc_enter
+#undef _log_exc_leave
+
+
+#endif /* TOPPERS_LABEL_ASM */
+
+#include "arm_gcc/common/core_unrename.h"
+
+#endif /* TOPPERS_TARGET_RENAME_H */
Index: /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_user.txt
===================================================================
--- /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_user.txt	(revision 92)
+++ /ssp_arm_gcc/trunk/target/at91skyeye_gcc/target_user.txt	(revision 92)
@@ -0,0 +1,354 @@
+=====================================================================
+                        AT91SKYEYEターゲット依存部
+                                          Last Modified: 2015 May 27
+=====================================================================
+
+○概要
+
+AT91SKYEYEターゲット依存部は，オープンソースのプロセッサシミュレータで
+ある，Skyeye上の ARM7TDMI をベースとした AT91 システムをサポートしてい
+る．
+
+○SkyEye
+
+本カーネルを動作させるためには，TOPPERSプロジェクトから公開されている，
+TOPPERSカーネル向けシミュレーション環境が必要となる．
+	http://www.toppers.jp/sim.html
+
+○カーネルの使用リソース
+
+カーネルは以下のリソースを使用する．
+
+  ・RAM
+     コードとデータを配置する．
+     使用量はオブジェクト数に依存する．
+  
+  ・TC1
+     カーネル内部のティックの生成に用いる．
+     
+  ・USART0
+     コンソールの出力に使用．
+
+
+○実行環境
+
+動作確認を行った実行環境は，Widnows 7(SP1) 上の Cygwin である．
+
+○デバッグ環境
+
+デバッグ環境としては，skyeyeのサポートする方法を用いることができる．
+arm-none-eabi-gdb (バージョン7.1) によるデバッグの動作確認を行った．
+
+「TOPPERSカーネル向けシミュレーション環境」の skyeye.exe を用いた
+GDBデバッグを行う場合，gdb-7.1 以前のバージョンを使用する必要がある．
+たとえば，GDBのソースコードを以下からダウンロードしてビルドする．
+	http://ftp.gnu.org/gnu/gdb/
+
+gdb-7.1a.tar.gz をダウンロードした場合の手順の概略を以下に示す．
+$ tar xvf gdb-7.1a.tar.gz
+$ cd gdb-7.1
+$ mkdir build
+$ cd build
+$ ../configure --target=arm-none-eabi --prefix=/home/saito/tool/gdb-7.1 --enable-interwork --enable-multilib
+$ make all
+$ make install
+
+○コンパイラ
+
+動作確認した GCC は，以下のサイトからWindows版のバイナリをダウンロードして使用し
+た以下のバージョンである．
+
+GNU Tools for ARM Embedded Processors
+	https://launchpad.net/gcc-arm-embedded
+	GCC ARM Embedded 4.9-2015-q1-update
+
+上記コンパイラをインストールする際には，空白が含まれるディレクトリにイ
+ンストールしないこと（インストーラが作成するインストールディレクトリ自
+体に空白が含まれるため注意すること）．
+
+○カーネル終了時の処理
+
+ext_ker が呼び出されカーネル終了時には，at91skyeye.h にある 
+at91skyeye_exit() が実行される．既定では，特に処理は記述されていない．
+独自の処理処理を追加したい場合は，at91skyeye_exit() の内容を書き換えること．
+
+○ gcovによるカバレッジ取得(未確認)
+
+gcovによるカバレッジを取得したい場合には，Makefileで ENABLE_GCOV を以
+下の値のいずれかに定義すること．
+
+    full              : 全体取得
+    part              : 一部取得
+    only_kernel_full  : 全体取得(カーネルコードのみ)
+    only_kernel_part  : 一部取得(カーネルコードのみ)
+
+full と only_kernel_full は，プログラム実行全体のカバレッジを取得する． 
+only_kernel_full はカーネルコードのみのカバレッジを取得する．これらの
+カバレッジ結果は，ext_ker()を呼び出してカーネル終了することにより，
+*.gcda に出力される．
+
+part と only_kernel_part 指定した区間（時間）のカバレッジを取得する． 
+only_kernel_part はカーネルコードのみのカバレッジを取得する．区間（時
+間）を指定やカバレッジの出力のために以下の関数を提供する．
+
+void gcov_init(void);
+ GCOV初期化関数．呼び出した時点以降のカバレッジを取得する．
+
+void gcov_pause(void);
+ GCOV中断関数．カバレッジの取得を中断する．
+ 
+void gcov_resume(void);
+GCOV再開関数．カバレッジの取得を再開する．
+
+void gcov_dump(void);
+ GCOV出力関数．カバレッジを.gcda に出力する．
+
+カーネル実行後にカーネルがあるディレクトリで以下のコマンドを実行すると，
+カバレッジの結果が xxx.c.gcov に出力される．
+
+ $arm-none-eabi-gcov.exe *.gcda
+
+カバレッジの結果をhtml化するlcovを使うことも可能である．
+
+ http://ltp.sourceforge.net/coverage/lcov.php
+ 
+動作確認を行ったバージョンは 1.9 であるが，日本語を出力するためと，
+Windwosネイティブアプリである Sourcery G++ を Cygwin環境上で使用してい
+る場合には，以下のパッチが必要である．
+
+--------------------------------------------------------------------------
+--- lcov-1.9_org/bin/genhtml	2010-08-06 20:05:17.000000000 +0900
++++ lcov-1.9/bin/genhtml	2010-11-24 11:29:58.075739700 +0900
+@@ -4007,10 +4007,10 @@
+ 	write_html($_[0], <<END_OF_HTML)
+ 	<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
+ 
+-	<html lang="en">
++	<html lang="ja">
+ 
+ 	<head>
+-	  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
++	  <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">
+ 	  <title>$_[3]</title>
+ 	  <link rel="stylesheet" type="text/css" href="$_[1]gcov.css">
+ 	</head>
+@@ -4069,11 +4069,11 @@
+ 	write_html($_[0], <<END_OF_HTML)
+ 	<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+ 
+-	<html lang="en">
++	<html lang="ja">
+ 
+ 	<head>
+ 	  <title>$_[3]</title>
+-	  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
++	  <meta http-equiv="Content-Type" content="text/html; charset=ECU-JP">
+ 	  <link rel="stylesheet" type="text/css" href="$_[1]gcov.css">
+ 	</head>
+ 
+@@ -5578,10 +5578,10 @@
+ 		$result = <<END_OF_HTML
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+ 
+-<html lang="en">
++<html lang="ja">
+ 
+ <head>
+-  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
++  <meta http-equiv="Content-Type" content="text/html; charset=ECU-JP">
+   <title>\@pagetitle\@</title>
+   <link rel="stylesheet" type="text/css" href="\@basedir\@gcov.css">
+ </head>
+diff -urN lcov-1.9_org/bin/geninfo lcov-1.9/bin/geninfo
+--- lcov-1.9_org/bin/geninfo	2010-08-06 20:05:17.000000000 +0900
++++ lcov-1.9/bin/geninfo	2010-11-24 11:31:26.481094900 +0900
+@@ -862,7 +862,7 @@
+ 
+ 	# Execute gcov command and suppress standard output
+ 	$gcov_error = system_no_output(1, $gcov_tool, $da_filename,
+-				       "-o", $object_dir, @gcov_options);
++				       @gcov_options);
+ 
+ 	if ($da_renamed)
+ 	{
+@@ -929,7 +929,7 @@
+ 		my $num;
+ 
+ 		($source, $object) = read_gcov_header($gcov_file);
+-
++		$source =~ s/(.*)\r$/$1/;
+ 		if (defined($source))
+ 		{
+ 			$source = solve_relative_path($base_dir, $source);
+--------------------------------------------------------------------------
+
+カバレッジの取得後，以下のコマンドを実行すると，coverage_html 以下にカ
+バレッジ結果のhtmlが生成される．
+
+   $make lcov
+
+○トレースログのファイル出力
+
+トレースログをファイルへ出力するための文字出力関数を用意している．
+
+ void target_fput_log_file(char c);
+ 
+この関数を trace_dump の引数とすることにより，トレースログは，
+kernel_trace.log というファイルに出力される．
+
+○各種設定の変更
+
+幾つかのパラメータは変更可能になっている．設定ファイル毎に設定可能項目
+は次のようになっている．
+
+●Makefile.target の設定項目
+
+・GCC_TARGET
+  GCCの suffix を定義
+
+・INCLUDES
+  インクルード指定
+
+・COPTS
+  Cコンパイラへのオプション
+
+・LDFLAGS
+  リンカへのオプション
+
+●target_config.h の設定項目
+
+・DEFAULT_ISTKSZ
+  ディフォルトの非タスクコンテキスト用のスタックサイズ
+
+・SIL_DLY_TIM1/2
+  微少時間待ちのための定義
+
+
+○変更履歴
+2015/05/27
+・SSP-1.3.0へ対応
+・LaunchPad GCCへの対応
+
+-----(ここから下はASP版の記録)
+
+2013/02/05
+・1.8.0対応のため，char_t の箇所を他の型に変更．
+
+2012/11/17
+・2012/11/09の修正に間違いがあったため修正．
+
+2012/11/09
+・有効な割込み番号を(1〜18)に修正．
+
+2011/11/22
+・ARMCC対応に伴う変更
+  ・at91skyeye.ld(変更)
+    ・ベクターのセクション名を".vector"から"vector"に変更．
+  ・target_asm.inc(追加)
+  ・target_cfg1_out.h(変更)
+    ・core_cfg1_out.hのインクルード方法を""から<>に変更して，コンパイラの
+      引数で指定された順でインクルードファイルをサーチするよう変更．
+  ・target_config.h(変更)
+    ・core_config.hのインクルード方法を""から<>に変更して，コンパイラの
+      引数で指定された順でインクルードファイルをサーチするよう変更．
+  ・target_sil.h(変更)
+    ・core_sil.hのインクルード方法を""から<>に変更して，コンパイラの
+      引数で指定された順でインクルードファイルをサーチするよう変更．
+  ・target_support.S(変更)
+    ・ARMCCとファイルを共有するため，ディレクティブをマクロに書き換え．    
+・CPSRの操作にcxsfを付加
+  ・start.S
+    
+2011/05/09
+・ASP 1.7.0 への追従．
+  ・オフセットファイルの生成方法をコンフィギュレータを用いる方法に変更．
+  
+2011/03/10
+・ASP 1.7.0 への追従．
+
+2011/03/04
+・トレースログをファイルに出力する機能を追加．
+
+2011/01/31
+・SkyEyeのバージョンがサポートしているバージョンと異なった場合に，
+  SkyEyeのバージョンと，カーネルがサポートしているバージョンを表示する
+  ように変更．
+
+2010/11/30
+・全ての割込みをマスクしてARM依存の終了処理を呼び出すように変更．
+
+2010/11/28
+・software_init_hook が定義されていない場合に呼び出さないように
+  一旦volatile指定のあるfpに代入するように変更
+
+2010/11/24
+・lcov 1.9 への対応．
+
+2010/11/01
+・4種類のカバレッジ取得方法をサポート．
+
+2010/09/10
+・GCOVを有効時にマクロ TOPPERS_ENABLE_GCOV を有効にするよう変更．
+・CPU例外を未定義命令に変更．
+
+2010/07/26
+・アセンブラファイル中の分岐命令を AAPCS推奨に変更．
+
+2010/07/10
+・ASP 1.5.0 への追従．
+
+2010/06/23
+・ena_int()で，割込みマスクの状態を考慮せずにハードウェアを更新してい
+  た問題を修正．
+
+2010/05/19
+・割込み受け付け時に，システムの割込み優先度マスクを受け付けた割込みの
+  割込み優先度に設定していなかった問題を修正．
+
+2010/04/21
+・SkyEye DeviceManager Extension 2.1.0 に対応．
+・起動時にSkyEyeのバージョンを確認するように変更．
+
+2009/12/19
+・起動時に software_init_hook() を呼び出すように変更．
+
+2009/11/30
+・リンカスクリプトを generic-hosted.ld ベースから，
+  armulator-ram-hosted.ld ベースに変更．
+  コード・データサイズを大きくすると，標準関数やgcovが正しく動作しない
+  問題を解決．同時に skyeye.conf のメモリの設定をリンカスクリプトの内
+  容と統一．
+
+2009/11/13
+・スタックを kernel_cfg.c で確保するように変更．
+
+2009/10/18
+・TLV 1.1rc対応．
+  ・サイクルカウンタの有効化．
+  ・TRACE_GET_TIM()を定義．
+  
+2009/08/02
+・lcovのサポート．
+
+2009/08/01
+・newlibのサポート．サポートに伴い，SkyEyeはTOPPERSプロジェクトから公
+  開している SkyEye -V1.2 DeviceManager Extension 2.0.3 以降 が必要と
+  なる．
+・gcovのサポート．
+
+2009/07/09
+・target_timer_initialize()でタイマ周期にTIMER_CLOCKの値を反映するよう
+  に修正．
+
+2009/05/18
+・共通部 1.4.0 追従．
+・コンパイラを Sourcery G++ Lite に変更．
+
+2009/01/29
+・サイクルカウンタのサポート
+  ・トレースログ機能で用いる
+  ・使用するためには，TOPPERSで拡張済みのskyeyeが必要となる
+
+2008/11/4
+・Skyeye-1.2.6に対応
+  ・Skyeye-1.2.6で追加されたUART受信割り込み許可・禁止レジスタに対応
