Index: /asp_ewarm/asp-1.7.0/MANIFEST
===================================================================
--- /asp_ewarm/asp-1.7.0/MANIFEST	(revision 61)
+++ /asp_ewarm/asp-1.7.0/MANIFEST	(revision 61)
@@ -0,0 +1,112 @@
+PACKAGE asp
+VERSION 1.7.0
+
+configure
+MANIFEST
+README.txt
+
+doc/asp_spec.txt
+doc/configurator.txt
+doc/design.txt
+doc/extension.txt
+doc/porting.txt
+doc/user.txt
+doc/version.txt
+
+include/histogram.h
+include/itron.h
+include/kernel.h
+include/log_output.h
+include/queue.h
+include/sil.h
+include/t_stddef.h
+include/t_stdlib.h
+include/t_syslog.h
+include/test_lib.h
+
+kernel/Makefile.kernel
+kernel/alarm.c
+kernel/alarm.h
+kernel/allfunc.h
+kernel/check.h
+kernel/cyclic.c
+kernel/cyclic.h
+kernel/dataqueue.c
+kernel/dataqueue.h
+kernel/eventflag.c
+kernel/eventflag.h
+kernel/exception.c
+kernel/exception.h
+kernel/genoffset.tf
+kernel/interrupt.c
+kernel/interrupt.h
+kernel/kernel.tf
+kernel/kernel_api.csv
+kernel/kernel_check.tf
+kernel/kernel_def.csv
+kernel/kernel_impl.h
+kernel/kernel_int.h
+kernel/kernel_rename.def
+kernel/kernel_rename.h
+kernel/kernel_unrename.h
+kernel/mailbox.c
+kernel/mailbox.h
+kernel/mempfix.c
+kernel/mempfix.h
+kernel/pridataq.c
+kernel/pridataq.h
+kernel/semaphore.c
+kernel/semaphore.h
+kernel/startup.c
+kernel/sys_manage.c
+kernel/task.c
+kernel/task.h
+kernel/task_except.c
+kernel/task_manage.c
+kernel/task_refer.c
+kernel/task_sync.c
+kernel/time_event.c
+kernel/time_event.h
+kernel/time_manage.c
+kernel/wait.c
+kernel/wait.h
+
+library/histogram.c
+library/log_output.c
+library/strerror.c
+library/t_perror.c
+library/test_lib.c
+
+sample/Makefile
+sample/sample1.c
+sample/sample1.cfg
+sample/sample1.h
+
+syssvc/banner.c
+syssvc/banner.cfg
+syssvc/banner.h
+syssvc/logtask.c
+syssvc/logtask.cfg
+syssvc/logtask.h
+syssvc/serial.c
+syssvc/serial.cfg
+syssvc/serial.h
+syssvc/syslog.c
+syssvc/syslog.cfg
+syssvc/syslog.h
+syssvc/vasyslog.c
+
+utils/applyrename
+utils/genoffset
+utils/genrename
+utils/gentest
+utils/makedep
+utils/makerelease
+
+INCLUDE target/dve68k_gcc/MANIFEST
+INCLUDE arch/m68k_gcc/MANIFEST
+INCLUDE arch/gcc/MANIFEST
+INCLUDE arch/logtrace/MANIFEST
+INCLUDE pdic/upd72001/MANIFEST
+INCLUDE test/MANIFEST
+INCLUDE extension/MANIFEST
Index: /asp_ewarm/asp-1.7.0/README.txt
===================================================================
--- /asp_ewarm/asp-1.7.0/README.txt	(revision 61)
+++ /asp_ewarm/asp-1.7.0/README.txt	(revision 61)
@@ -0,0 +1,60 @@
+
+	TOPPERS/ASP KerneliRelease 1.7.0j
+		Toyohashi Open Platform for Embedded Real-Time Systems/
+		Advanced Standard Profile Kernel
+
+TOPPERS/ASPJ[liÈºCASPJ[ljÍCTOPPERSV¢ãJ[lÌîÕ
+ÆÈéàÌÆµÄCTOPPERSvWFNgÉ¨¢ÄJ­µ½A^CJ[l
+Å·DÊITRON4.0dlÌX^_[hvt@CÌA^CJ[
+lÅ éTOPPERS/JSPJ[lðg£EüÇ·é`ÅJ­µÜµ½D
+
+yÅÉÇÞ×«hL
+gz
+
+ASPJ[lÌ[U[Y}j
+AªCdoc/user.txtÉ èÜ·DASPJ[l
+ðgp·éêÉÍCÜ¸Í±ÌhL
+g©ç¨ÇÝº³¢D
+
+yt@CÌ{É ½ÁÄz
+
+ASPJ[lÌhL
+giv[eLXgt@Cj¨æÑ\[Xt@C
+ðÇÞÛÉÍCTABð4ÉÝèµÄ­¾³¢D
+
+ypðz
+
+ASPJ[lÌpðÍCet@CÌæªÉ\¦³êÄ¢éTOPPERSCZ
+XÅ·DTOPPERSCZXÉÖ·éFAQªCÈºÌy[WÉ èÜ·D
+
+	http://www.toppers.jp/faq/faq_ct12.html
+
+y¿âEoO|[gEÓ©Ìtæz
+
+ASPJ[lðæèÇ¢àÌÉ·é½ßÌ²Ó©ð½}µÜ·DASPJ[l
+ÉÖ·é¿ââoO|[gC²Ó©ÍCTOPPERSvWFNgÌïõÍ
+TOPPERSJ­Ò[OXgidev@toppers.jpj¶Ü½ÍASPJ[lÌo
+OgbLOVXeiTracjÉC»Ì¼ÌûÍTOPPERS[U[Y[
+OXgiusers@toppers.jpj¶É¨è¢µÜ·D
+
+TOPPERS[U[Y[OXgÖÌo^û@ÉÂ¢ÄÍCÈºÌy[WÉ
+à¾ª èÜ·D
+
+	http://www.toppers.jp/community.html
+
+y|[eBOÉ ½ÁÄz
+
+ASPJ[lðCTOPPERSvWFNg©çI[v\[XÉ·é±ÆðOñÉC
+¢T|[gÌ^[QbgÉ|[eBO³êéêÉÍC ç©¶ß²k­
+¾³éÆK¢Å·D
+
+y¡ãÌü¢væz
+
+¡ãiRelease 1.8È~jCASPJ[lÉÎµÄå«ÈÏXÌÂ\«ª é
+ÚÍÌÊèÅ·D
+
+ETOPPERSgÝR|[lgVXeiTECSjÌ±üD»_ÅÍCTECSÌ
+@zzpbP[WÉTECSÎÌASPJ[lªÜÜêÄ¢Ü·ªCASPÌpbP[
+@WðTECSÎÉ·éÂ\«ª èÜ·D
+
+Èã
Index: /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/MANIFEST
===================================================================
--- /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/MANIFEST	(revision 61)
+++ /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/MANIFEST	(revision 61)
@@ -0,0 +1,30 @@
+PACKAGE asp_arch_arm_m_iccarm
+VERSION 1.3.2
+
+MANIFEST
+arm_m.h
+prc.tf
+prc_cfg1_out.h
+prc_check.tf
+prc_config.c
+prc_config.h
+prc_def.csv
+prc_design.txt
+prc_insn.h
+prc_kernel.h
+prc_offset.tf
+prc_rename.def
+prc_rename.h
+prc_sil.h
+prc_stddef.h
+prc_support.S
+prc_test.h
+prc_timer.c
+prc_timer.cfg
+prc_timer.h
+prc_unrename.h
+prc_user.txt
+start.S
+
+INCLUDE ../../target/stm32_discovery_EWARM/MANIFEST
+INCLUDE ../../target/fs_k70f120m_EWARM/MANIFEST
Index: /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/arm_m.h
===================================================================
--- /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/arm_m.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/arm_m.h	(revision 61)
@@ -0,0 +1,192 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *  ARMVx-MÌn[hEFA¹Ìè`
+ */
+
+#ifndef ARM_M_H
+#define ARM_M_H
+
+
+/*
+ *  EPSRÌTrbg
+ */
+#define EPSR_T   0x01000000
+
+/*
+ * IPSRÌ ISR NUMBER
+ */
+#define IPSR_ISR_NUMBER 0x1ff
+
+/*
+ *  áOEÝ­¶ÉX^bNãÉÏÜêéÛ¶ÌæÌTCY
+ *  {J[lÅÍáOt[ÆÄÔ
+ */
+#define EXC_FRAME_SIZE         (8*4)
+
+/*
+ *  áOEÝ­¶ÉLRÉÝè³êéEXC_RETURNÌl
+ */
+#define EXC_RETURN_HANDLER      0x0
+#define EXC_RETURN_THREAD       0x8
+#define EXC_RETURN_MSP          0x0
+#define EXC_RETURN_PSP          0x4
+
+/*
+ *  CONTROLWX^
+ */
+#define CONTROL_PSP            0x02
+#define CONTROL_MSP            0x00
+
+/*
+ *  áOÔ
+ */
+#define EXCNO_NMI         2
+#define EXCNO_HARD        3
+#define EXCNO_MPU         4
+#define EXCNO_BUS         5
+#define EXCNO_USAGE       6
+#define EXCNO_SVCALL     11          
+#define EXCNO_DEBUG      12
+#define EXCNO_PENDSV     14
+
+/*
+ *  áOÔÌÅ¬lÆÅål
+ */
+#define TMIN_EXCNO   2
+#define TMAX_EXCNO  14
+
+/*
+ *  ÝÔ
+ */
+#define IRQNO_SYSTICK    15
+
+/*
+ *  ÝÔÌÅ¬l
+ */
+#define TMIN_INTNO       15
+
+/*
+ *  áOt[ÌItZbg
+ */
+#define P_EXCINF_OFFSET_EXC_RETURN  0x00
+#define P_EXCINF_OFFSET_BASEPRI     0x01
+#define P_EXCINF_OFFSET_XPSR        0x09
+#define P_EXCINF_OFFSET_PC          0x08
+
+/*
+ *  NVICÖA
+ */
+
+/*
+ *  Rg[WX^
+ */
+#define NVIC_INT_CTRL       0xe000ed04
+
+#define NVIC_PENDSVSET      0x10000000
+
+/*
+ *  VXenh[Rg[WX^
+ */
+#define NVIC_SYS_HND_CTRL   0xE000ED24
+
+/*
+ *  eáOÌÂrbg
+ */
+#define NVIC_SYS_HND_CTRL_USAGE 0x00040000
+#define NVIC_SYS_HND_CTRL_BUS   0x00020000
+#define NVIC_SYS_HND_CTRL_MEM   0x00010000
+
+/*
+ *  DæxÝèWX^
+ */
+#define NVIC_SYS_PRI1       0xE000ED18  // Sys. Handlers 4 to 7 Priority
+#define NVIC_SYS_PRI2       0xE000ED1C  // Sys. Handlers 8 to 11 Priority
+#define NVIC_SYS_PRI3       0xE000ED20  // Sys. Handlers 12 to 15 Priority
+#define NVIC_PRI0           0xE000E400  // IRQ 0 to 3 Priority Register
+
+/*
+ *  ÝÂWX^
+ */
+#define NVIC_SETENA0        0xE000E100  // IRQ 0 to 31 Set Enable Register
+
+/*
+ *  ÝÖ~WX^
+ */
+#define NVIC_CLRENA0        0xE000E180  // IRQ 0 to 31 Set Disable Register
+
+/*
+ *  ÝZbgyfBOWX^
+ */
+#define NVIC_ISER0          0xE000E200  // IRQ 0 to 31 Set-Pending Register
+
+/*
+ *  ÝNAyfBOWX^
+ */
+#define NVIC_ICER0          0xE000E280  // IRQ 0 to 31 Clear-Pending Register
+
+/*
+ *  xN^e[uItZbgWX^
+ */
+#define NVIC_VECTTBL        0xE000ED08
+
+
+/*
+ *  SYSTICÖAWX^
+ */
+#define SYSTIC_CONTROL_STATUS 0xE000E010
+#define SYSTIC_RELOAD_VALUE   0xE000E014
+#define SYSTIC_CURRENT_VALUE  0xE000E018
+#define SYSTIC_CALIBRATION    0xE000E01C
+
+#define SYSTIC_ENABLE    0x01
+#define SYSTIC_TICINT    0x02
+#define SYSTIC_CLKSOURCE 0x04
+#define SYSTIC_COUNTFLAG 0x10000
+
+#define SYSTIC_SKEW      0x40000000
+#define SYSTIC_NOREF     0x80000000
+#define SYSTIC_TENMS     0x00ffffff
+
+#endif  /* ARM_M_H */
Index: /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc.tf
===================================================================
--- /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc.tf	(revision 61)
+++ /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc.tf	(revision 61)
@@ -0,0 +1,164 @@
+$ 
+$     pX2ÌA[LeN`Ë¶ev[giARM-Mpj
+$ 
+
+$ 
+$  LøÈÝÔCÝnhÔ
+$ 
+$INTNO_VALID = RANGE(15, TMAX_INTNO)$
+$INHNO_VALID = INTNO_VALID$
+
+$ 
+$  LøÈCPUáOÔ
+$ 
+$EXCNO_VALID = { 2,3,4,5,6,11,12,14 }$
+
+$ 
+$  ATT_ISRÅgpÅ«éÝÔÆ»êÉÎ·éÝnhÔ
+$ 
+$INTNO_ATTISR_VALID = INTNO_VALID$
+$INHNO_ATTISR_VALID = INHNO_VALID$
+
+$ 
+$  DEF_INT^DEF_EXCÅgpÅ«éÝnhÔ^CPUáOnhÔ
+$ 
+$INHNO_DEFINH_VALID = INHNO_VALID$
+$EXCNO_DEFEXC_VALID = EXCNO_VALID$
+
+$ 
+$  `FbNû@Ìwè
+$ 
+$CHECK_STKSZ_ALIGN = 8$
+
+$ 
+$  CFG_INTÅgpÅ«éÝÔÆÝDæx
+$ 
+$INTNO_CFGINT_VALID = INTNO_VALID$
+$INTPRI_CFGINT_VALID = RANGE(-(1 << TBITW_IPRI),-1)$
+
+$ 
+$  Ý®«Ì^[QbgË¶Ép¢érbg
+$ 
+$ TARGET_INTATR = $
+           
+$ 
+$  Wev[gt@CÌCN[h
+$ 
+$INCLUDE "kernel/kernel.tf"$
+
+/*$NL$
+$SPC$*  Target-dependent Definitions (ARM-M)$NL$
+$SPC$*/$NL$
+$NL$
+
+$ 
+$  xN^[e[u
+$ 
+$FILE "kernel_cfg.c"$
+$NL$
+#pragma location=".intvec" $NL$
+const FP _kernel_vector_table[] =      $NL$ 
+{                                    $NL$
+	$TAB$(FP)(TOPPERS_ISTKPT(TOPPERS_ISTK, TOPPERS_ISTKSZ)),   // 0 The initial stack pointer $NL$
+	$TAB$(FP)_start,                 // 1 The reset handler         $NL$
+
+$FOREACH excno {2,3,...,14}$ 
+	$IF excno == 11$
+		$TAB$(FP)(_kernel_svc_handler),      // 11 SVCall handler
+	$ELSE$
+		$TAB$(FP)(_kernel_core_exc_entry),
+	$END$
+	$SPC$$FORMAT("/* %d */", +excno)$$NL$
+$END$
+
+$FOREACH inhno INTNO_VALID$ 
+	$IF LENGTH(INH.INHNO[inhno]) && ((INH.INHATR[inhno] & TA_NONKERNEL) != 0)$
+		$TAB$(FP)($INH.INTHDR[inhno]$),
+	$ELSE$
+		$TAB$(FP)(_kernel_core_int_entry),
+	$END$
+	$SPC$$FORMAT("/* %d */", +inhno)$$NL$
+$END$
+
+
+$NL$};$NL$
+$NL$
+
+$NL$
+const FP _kernel_exc_tbl[] = $NL$
+{$NL$
+$FOREACH excno {0,1,...,14}$
+	$IF LENGTH(EXC.EXCNO[excno])$
+		$TAB$(FP)($EXC.EXCHDR[excno]$),
+	$ELSE$
+		$TAB$(FP)(_kernel_default_exc_handler),
+	$END$
+	$SPC$$FORMAT("/* %d */", +excno)$$NL$
+$END$
+
+
+$FOREACH inhno INTNO_VALID$
+	$IF LENGTH(INH.INHNO[inhno])$
+		$TAB$(FP)($INH.INTHDR[inhno]$),
+	$ELSE$
+		$TAB$(FP)(_kernel_default_int_handler),
+	$END$
+	$SPC$$FORMAT("/* %d */", +inhno)$$NL$
+$END$
+
+
+$NL$};$NL$
+$NL$
+
+$ 
+$  _kernel_bitpat_cfgintÌ¶¬
+$ 
+
+$bitpat_cfgint_num = 0$
+$bitpat_cfgint = 0$
+
+
+const uint32_t _kernel_bitpat_cfgint[
+$IF (TMAX_INTNO & 0x0f) == 0x00 $
+	$bitpat_cfgint_num = (TMAX_INTNO >> 4)$
+$ELSE$
+	$bitpat_cfgint_num = (TMAX_INTNO >> 4) + 1$
+$END$
+	$bitpat_cfgint_num$
+] = {$NL$
+$FOREACH num RANGE(0,(bitpat_cfgint_num-1))$
+$   //boost Ìo[WÉæÁÄ®ªÏíé½ßÌÎô
+$   //http://www.toppers.jp/TOPPERS-USERS/201004/msg00034.html
+	$bitpat_cfgint = 1-1$
+	$FOREACH inhno RANGE(num*32, (num*32)+31)$
+		$IF LENGTH(INH.INHNO[inhno])$
+			$bitpat_cfgint = bitpat_cfgint | (1 << (inhno & 0x01f))$
+		$END$
+	$END$
+	$TAB$UINT32_C($FORMAT("0x%08x", bitpat_cfgint)$), $NL$
+$END$
+
+$NL$};$NL$
+$NL$
+
+
+$ 
+$  ÝDæxe[uià\»j
+$ 
+const uint32_t _kernel_int_iipm_tbl[] = {$NL$
+$FOREACH excno {0,1,...,14}$
+	$TAB$$FORMAT("UINT32_C(0x%08x), /* 0x%03x */", 0, +excno)$$NL$
+$END$
+
+$FOREACH intno INTNO_VALID$
+	$IF LENGTH(INT.INTNO[intno])$
+		$intpri = (((1 << TBITW_IPRI) + INT.INTPRI[intno]) << (8 - TBITW_IPRI))$
+	$ELSE$
+$		// LSBð1ÉµÄ¢éÌÍCÝ®«ªÝè³êÄ¢È¢±Æð»
+$		// Ê·é½ßÅ éD
+		$intpri = 0 $
+	$END$
+	$TAB$$FORMAT("UINT32_C(0x%08x), /* 0x%03x */", intpri, +intno)$$NL$
+$END$
+$NL$};$NL$
+$NL$
Index: /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_cfg1_out.h
===================================================================
--- /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_cfg1_out.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_cfg1_out.h	(revision 61)
@@ -0,0 +1,34 @@
+/*
+ *		cfg1_out.cðN·é½ßÉKvÈX^uÌè`
+ */
+
+void sta_ker(void){}
+
+void main( void ) {}
+
+
+/* 
+ *  ItZbgt@Cð¶¬·é½ßÌè` 
+ */ 
+const uint8_t   MAGIC_1 = 0x12; 
+const uint16_t  MAGIC_2 = 0x1234; 
+const uint32_t  MAGIC_4 = 0x12345678;
+
+const TCB	TCB_enatex = {
+	{ NULL, NULL },			/* task_queue */
+	NULL,					/* p_tinib */
+	0U,						/* tstat */
+#ifdef TOPPERS_SUPPORT_MUTEX
+	0U,						/* bpriority */
+#endif /* TOPPERS_SUPPORT_MUTEX */
+	0U,						/* priority */
+	false,					/* acqeue */
+	false,					/* wupque */
+	true,					/* enatex */
+	0U,						/* texprn */
+	NULL,					/* p_winifo */
+#ifdef TOPPERS_SUPPORT_MUTEX
+	{ NULL, NULL },			/* mutex_queue */
+#endif /* TOPPERS_SUPPORT_MUTEX */
+	{ NULL, NULL }			/* tskctxb */
+};
Index: /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_check.tf
===================================================================
--- /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_check.tf	(revision 61)
+++ /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_check.tf	(revision 61)
@@ -0,0 +1,8 @@
+$ 
+$ 		pX3ÌvZbTË¶ev[giARM-Mpj
+$ 
+
+$ 
+$  Wev[gt@CÌCN[h
+$ 
+$INCLUDE "kernel/kernel_check.tf"$
Index: /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_config.c
===================================================================
--- /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_config.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_config.c	(revision 61)
@@ -0,0 +1,288 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *		vZbTË¶W
+[iARM-Mpj
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+
+/*
+ *  CPUbNtOÀ»Ì½ßÌÏ
+ */
+volatile bool_t		lock_flag;		/* CPUbNtOÌlðÛ·éÏ */
+volatile uint32_t	saved_iipm;		/* ÝDæx}XNðÛ¶·éÏ */
+
+/*
+ *  xN^e[u(kernel_cfg.c)
+ */
+extern const FP vector_table[];
+
+/*
+ *  VXeáOEÝÌiáOÔ 4`15j
+ *  ÝDæxÝèWX^ÖÌANZXÌ½ßÌzñ
+ */
+static const unsigned int nvic_sys_pri_reg[] = {
+	0,
+	NVIC_SYS_PRI1,
+	NVIC_SYS_PRI2,
+	NVIC_SYS_PRI3
+};
+
+/*
+ *  áOÆÝÌÝDæxðZbg
+ *
+ *  excnoÍARM-MÅèßçêÄ¢é Exception Number ðwèD
+ */
+void
+set_exc_int_priority(uint32_t excno, uint32_t iipm){
+	uint32_t tmp, reg;
+
+	/*
+	 *  ÝDæxÝèWX^Ìè
+	 */
+	if ((EXCNO_MPU <= excno) && (excno <= IRQNO_SYSTICK)) {
+		/*
+		 * Exception Number 4(Memory Management)©ç
+		 * Exception Number 15(SysTick)ÜÅÌÝDæxÍVXeDæx
+		 * WX^ÉæèÝèD
+		 */
+		reg = nvic_sys_pri_reg[excno >> 2];
+	}
+	else if ((TMIN_INTNO < excno) && (excno <= TMAX_INTNO)){
+		/*
+		 * IRQÝÈç
+		 */
+		reg = NVIC_PRI0 + (((excno - (TMIN_INTNO + 1)) >> 2) * 4);
+	}
+	else {
+		return ;
+	}
+	
+	tmp = sil_rew_mem((void *)reg);
+	tmp &= ~(0xFF << (8 * (excno & 0x03)));
+	tmp |= iipm << (8 * (excno & 0x03));
+	sil_wrw_mem((void *)reg, tmp);
+}
+
+/*
+ *  áOÌÂ
+ *
+ *  Memory Management, Bus Fault, Usage Fault ÍÖ~EÂª¨¤
+ */
+void
+enable_exc(EXCNO excno)
+{
+	uint32_t tmp;
+
+	switch (excno) {
+	  case EXCNO_MPU:
+		tmp = sil_rew_mem((void *)NVIC_SYS_HND_CTRL);
+		tmp |= NVIC_SYS_HND_CTRL_MEM;
+		sil_wrw_mem((void *)NVIC_SYS_HND_CTRL, tmp);
+		break;
+	  case EXCNO_BUS:
+		tmp = sil_rew_mem((void *)NVIC_SYS_HND_CTRL);
+		tmp |= NVIC_SYS_HND_CTRL_BUS;
+		sil_wrw_mem((void *)NVIC_SYS_HND_CTRL, tmp);
+		break;
+	  case EXCNO_USAGE:
+		tmp = sil_rew_mem((void *)NVIC_SYS_HND_CTRL);
+		tmp |= NVIC_SYS_HND_CTRL_USAGE;
+		sil_wrw_mem((void *)NVIC_SYS_HND_CTRL, tmp);
+		break;
+	}
+}
+
+/*
+ *  áOÌÖ~
+ */
+void
+disable_exc(EXCNO excno)
+{
+	uint32_t tmp;
+
+	switch (excno) {
+	  case EXCNO_MPU:
+		tmp = sil_rew_mem((void *)NVIC_SYS_HND_CTRL);
+		tmp &= ~NVIC_SYS_HND_CTRL_MEM;
+		sil_wrw_mem((void *)NVIC_SYS_HND_CTRL, tmp);
+		break;
+	  case EXCNO_BUS:
+		tmp = sil_rew_mem((void *)NVIC_SYS_HND_CTRL);
+		tmp &= ~NVIC_SYS_HND_CTRL_BUS;
+		sil_wrw_mem((void *)NVIC_SYS_HND_CTRL, tmp);
+		break;
+	  case EXCNO_USAGE:
+		tmp = sil_rew_mem((void *)NVIC_SYS_HND_CTRL);
+		tmp &= ~NVIC_SYS_HND_CTRL_USAGE;
+		sil_wrw_mem((void *)NVIC_SYS_HND_CTRL, tmp);
+		break;
+	}
+}
+
+
+/*
+ *  vZbTË¶Ìú»
+ */
+void
+core_initialize(void)
+{
+	/*
+	 *  CPUbNtOÀ»Ì½ßÌÏÌú»
+	 */
+	lock_flag = true;
+	saved_iipm = IIPM_ENAALL;
+
+	/*
+	 *  xN^e[uðÝè
+	 */
+	sil_wrw_mem((void*)NVIC_VECTTBL, (uint32_t)vector_table);
+
+	/*
+	 *  SVCnhÌDæxðÝè
+	 */
+	set_exc_int_priority(EXCNO_HARD, 0);
+	set_exc_int_priority(EXCNO_MPU, 0);
+	set_exc_int_priority(EXCNO_BUS, 0);
+	set_exc_int_priority(EXCNO_USAGE, 0);
+	set_exc_int_priority(EXCNO_SVCALL, 0);
+	set_exc_int_priority(EXCNO_DEBUG, 0);
+	set_exc_int_priority(EXCNO_PENDSV, 0);
+
+	/*
+	 *  SVCnhðLøÉ
+	 */
+	x_enable_int(EXCNO_SVCALL);	
+}
+
+/*
+ *  vZbTË¶ÌI¹
+ */
+void
+core_terminate(void)
+{
+	extern __weak void    software_term_hook(void);
+	void (*volatile fp)(void) = software_term_hook;
+
+	/*
+	 *  software_term_hookÖÌ|C^ðCêUvolatilewèÌ éfpÉã
+	 *  üµÄ©çg¤ÌÍC0ÆÌärªÅK»Åí³êÈ¢æ¤É·é½
+	 *  ßÅ éD
+	 */
+	if (fp != 0) {
+		(*fp)();
+	}
+}
+
+/*
+ *  ÝvC®«ÌÝè
+ */
+void
+x_config_int(INTNO intno, ATR intatr, PRI intpri)
+{
+	assert(VALID_INTNO_CFGINT(intno));
+	assert(TMIN_INTPRI <= intpri && intpri <= TMAX_INTPRI);
+
+	/* 
+	 *  êUÝðÖ~·é
+	 */    
+	(void)x_disable_int(intno);
+
+	/*
+	 *  ÝDæxðZbg
+	 */
+	set_exc_int_priority(intno, INT_IPM(intpri));
+
+	/*
+	 *  Ýv}XNð(KvÈê)
+	 *  ¯ÉÝDæxàZbg³êé
+	 */
+	if ((intatr & TA_ENAINT) != 0U) {
+		(void) x_enable_int(intno);
+	}    
+}
+
+
+#ifndef OMIT_DEFAULT_EXC_HANDLER
+/*
+ *  TrapaÈOÌáOÅo^³êÄ¢È¢áOª­¶·éÆÄÑo³êé
+ */
+void
+default_exc_handler(void *p_excinf)
+{
+	uint32_t basepri = *(((uint32_t*)p_excinf) + P_EXCINF_OFFSET_BASEPRI);
+	uint32_t pc      = *(((uint32_t*)p_excinf) + P_EXCINF_OFFSET_PC);
+	uint32_t xpsr    = *(((uint32_t*)p_excinf) + P_EXCINF_OFFSET_XPSR);
+	uint32_t excno   = get_ipsr() & IPSR_ISR_NUMBER;
+
+	syslog(LOG_EMERG, "\nUnregistered Exception occurs.");
+	syslog(LOG_EMERG, "Excno = %08x PC = %08x XPSR = %08x basepri = %08X, p_excinf = %08X",
+		   excno, pc, xpsr, basepri, p_excinf);
+
+	target_exit();
+}
+#endif /* OMIT_DEFAULT_EXC_HANDLER */
+
+#ifndef OMIT_DEFAULT_INT_HANDLER
+/*
+ *  ¢o^ÌÝª­¶µ½êÉÄÑo³êé
+ */
+void
+default_int_handler(void *p_excinf)
+{
+	uint32_t basepri = *(((uint32_t*)p_excinf) + P_EXCINF_OFFSET_BASEPRI);
+	uint32_t pc      = *(((uint32_t*)p_excinf) + P_EXCINF_OFFSET_PC);
+	uint32_t xpsr    = *(((uint32_t*)p_excinf) + P_EXCINF_OFFSET_XPSR);
+	uint32_t excno   = get_ipsr() & IPSR_ISR_NUMBER;
+
+	syslog(LOG_EMERG, "\nUnregistered Interrupt occurs.");
+	syslog(LOG_EMERG, "Excno = %08x PC = %08x XPSR = %08x basepri = %08X, p_excinf = %08X",
+		   excno, pc, xpsr, basepri, p_excinf);
+
+	target_exit();
+}
+#endif /* OMIT_DEFAULT_INT_HANDLER */
Index: /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_config.h
===================================================================
--- /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_config.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_config.h	(revision 61)
@@ -0,0 +1,664 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *		vZbTË¶W
+[iARM-Mpj
+ *
+ *  ±ÌCN[ht@CÍCtarget_config.hiÜ½ÍC»±©çCN
+ *  [h³êét@CjÌÝ©çCN[h³êéD¼Ìt@C©ç
+ *  ¼ÚCN[hµÄÍÈçÈ¢D
+ */
+
+#ifndef TOPPERS_PRC_CONFIG_H
+#define TOPPERS_PRC_CONFIG_H
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  vZbTÌÁê½ßÌCCÖè`
+ */
+#include "prc_insn.h"
+
+
+#define TOPPERS_EMPTY_LABEL(x,y) x y[1]
+
+
+/*
+ *  ^[QbgË¶ÌIuWFNg®«
+ */
+#define TARGET_INHATR  TA_NONKERNEL /* ^[Qbgè`ÌÝnh®« */
+
+/*
+ *  G[`FbNû@Ìwè
+ */
+#define CHECK_STKSZ_ALIGN	8	/* X^bNTCYÌACPÊ */
+#define CHECK_FUNC_ALIGN	1	/* ÖÌACPÊ */
+#define CHECK_FUNC_NONNULL		/* ÖÌñNULL`FbN */
+#define CHECK_STACK_ALIGN	8	/* X^bNÌæÌACPÊ */
+#define CHECK_STACK_NONNULL		/* X^bNÌæÌñNULL`FbN */
+#define CHECK_MPF_ALIGN		4	/* Åè·v[ÌæÌACPÊ */
+#define CHECK_MPF_NONNULL		/* Åè·v[ÌæÌñNULL`FbN */
+#define CHECK_MB_ALIGN		4	/* ÇÌæÌACPÊ */
+
+/*
+ *  ñ^XNReLXgpÌX^bNúl
+ */
+#define TOPPERS_ISTKPT(istk, istksz) ((STK_T *)((char_t *)(istk) + (istksz)))
+
+/*
+ *  ^XNReLXgubNÌè`
+ */
+typedef struct task_context_block {
+	void	*sp;		/* X^bN|C^ */
+	FP		pc;			/* vOJE^ */
+} TSKCTXB;
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+#ifndef TOPPERS_MACRO_ONLY
+/*
+ *  ReLXgÌQÆ
+ *
+ */
+#pragma inline
+bool_t
+sense_context(void)
+{
+	/*
+	 *  PSPªLøÈç^XNReLXgCMSPªLøÈçñ^XNReLXg
+	 *  Æ·éD 
+	 */
+	if ((get_control() & CONTROL_PSP) == CONTROL_PSP){
+		return false;
+	}
+	else {
+		return true;
+	}
+}
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  TOPPERSWÝfÌÀ»
+ *
+ *  ÝDæx}XNÆµÄÍCBASEPRIðp¢éDSÝðÖ~·é
+ *  @\ÆµÄCFAULTMASKâPRIMASKª éªCJ[lÇOÌÝð
+ *  T|[g·é½ßC±êçÍCPUbNÌ½ßÉp¢È¢D
+ *  »Ì½ßCBASEPRIðp¢Ä[IÉCPUbNtOðÀ»·éD
+ *
+ *  Ü¸CCPUbNóÔðÇ·½ßÌÏ(lock_flag)ðpÓ·éD
+ *
+ *  CPUbNtOªNA³êÄ¢éÔÍCBASEPRIðfãÌÝ
+ *  Dæx}XNÌlÉÝè·éD±ÌÔÍCfãÌÝDæx}X
+ *  NÍCBASEPRIðp¢éD
+ * 
+ *  »êÉÎµÄCPUbNtOªZbg³ê¢éÔÍCBASEPRIðCJ[l
+ *  ÇOÌàÌð­·×ÄÌÝvð}XN·él(TIPM_LOCK)ÆC
+ *  fãÌÝDæx}XNÆÌ¢ûÉÝè·éD±ÌÔÌfã
+ *  ÌÝDæx}XNÍC»Ì½ßÌÏ(saved_iipm, à\»ÅÛ)
+ *  ðpÓµÄÛ·éD
+ */
+
+/*
+ *  ÝDæx}XNÌO\»Æà\»ÌÏ·
+ *
+ *  AZu¾êÌ\[Xt@C©çCN[h·éêÌ½ßÉC
+ *  CASTðgp
+ *  ÝDæxÌrbg(TBITW_IPRI)ª 8 ÌêÍCàDæx 255
+ *  ÍCODæx -1 ÉÎ·éD
+ */
+#define EXT_IPM(iipm)   (CAST(PRI,((iipm >> (8 - TBITW_IPRI)) - (1 << TBITW_IPRI))))       /* à\»ðO\»É */
+#define INT_IPM(ipm)    (((1 << TBITW_IPRI) - CAST(uint8_t, -(ipm)))  << (8 - TBITW_IPRI)) /* O\»ðà\»É */
+
+/*
+ *  CPUbNóÔÅÌÝDæx}XN
+ */
+#define TIPM_LOCK    TMIN_INTPRI
+
+/*
+ *  CPUbNóÔÅÌÝDæx}XNÌà\»
+ *
+ *  TIPM_LOCKÍCCPUbNóÔÅÌBASEPRIÌlDJ[lÇOÌàÌð
+ *  ­·×ÄÌÝð}XN·élÉè`·éD  
+ */
+#define IIPM_LOCK    INT_IPM(TIPM_LOCK)
+
+/*
+ *  TIPM_ENAALLiÝDæx}XNSðjÌà\»
+ *
+ *  BASEPRIÉ '0' ðÝè·é±ÆÅCSÝðÂ·éD
+ */
+#define IIPM_ENAALL  (0)
+
+#define _kernel_vector_table    __vector_table
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  CPUbNtOÀ»Ì½ßÌÏ
+ * 
+ *  ±êçÌÏÍCCPUbNóÔÌÌÝ«·¦Äàæ¢Æ·éD
+ *  CCÖÅCANZXÌªÏ»µÈ¢æ¤Cvolatile ðwèD 
+ */
+extern volatile bool_t  lock_flag;    /* CPUbNtOÌlðÛ·éÏ */
+extern volatile uint32_t saved_iipm;  /* ÝDæxð}XN·éÏ */
+
+/*
+ *  CPUbNóÔÖÌÚs
+ *
+ *  BASEPRIin[hEFAÌÝDæx}XNjðCsaved_iipmÉÛ¶µC
+ *  J[lÇOÌàÌð­·×ÄÌÝð}XN·éliTIPM_LOCKj
+ *  ÉÝè·éDÜ½Clock_flagðtrueÉ·éD
+ *
+ *  BASEPRIªCÅ©çTIPM_LOCKÆ¯¶©»êæè¢êÉÍC»êð
+ *  saved_iipmÉÛ¶·éÌÝÅCTIPM_LOCKÉÍÝèµÈ¢D±êÍCf
+ *  ãÌÝDæx}XNªCTIPM_LOCKÆ¯¶©»êæè¢xÉÝè
+ *  ³êÄ¢éóÔÉ ½éD
+ *
+ *  ±ÌÖÍCCPUbNóÔilock_flagªtrueÌóÔjÅÄÎêé±ÆÍ
+ *  È¢àÌÆzèµÄ¢éD
+ */
+#pragma inline
+void
+x_lock_cpu(void)
+{
+	uint32_t iipm;
+
+	/*
+	 *  current_iipm()ÌÔèlð¼Úsaved_iipmÉÛ¶¹¸CêÏiipm
+	 *  ðp¢Ä¢éÌÍCcurrent_iipm()ðÄñ¾¼ãÉÝª­¶µC
+	 *  N®³ê½ÝÅsaved_iipmªÏX³êéÂ\«ª é½ßÅ
+	 *   éD
+	 */
+	iipm = get_basepri();
+	if ((IIPM_LOCK < iipm) || (IIPM_ENAALL == iipm)) {
+		set_basepri(IIPM_LOCK);
+	}
+	saved_iipm = iipm;
+	lock_flag = true;
+	/* NeBJZNVÌOãÅª«·íéÂ\«ª é */
+	Asm("":::"memory");
+}
+
+#define t_lock_cpu()    x_lock_cpu()
+#define i_lock_cpu()    x_lock_cpu()
+
+/*
+ *  CPUbNóÔÌð
+ *
+ *  lock_flagðfalseÉµCIPMin[hEFAÌÝDæx}XNjðC
+ *  saved_iipmÉÛ¶µ½lÉß·D
+ *
+ *  ±ÌÖÍCCPUbNóÔilock_flagªtrueÌóÔjÅÌÝÄÎêéà
+ *  ÌÆzèµÄ¢éD
+ */
+#pragma inline
+void
+x_unlock_cpu(void)
+{
+	/* NeBJZNVÌOãÅª«·íéÂ\«ª é */
+	Asm("":::"memory");
+	lock_flag = false;
+	set_basepri(saved_iipm);
+}
+
+#define t_unlock_cpu()    x_unlock_cpu()
+#define i_unlock_cpu()    x_unlock_cpu()
+
+/*
+ *  CPUbNóÔÌQÆ
+ */
+#pragma inline
+bool_t
+x_sense_lock(void)
+{
+	return(lock_flag);
+}
+
+#define t_sense_lock()    x_sense_lock()
+#define i_sense_lock()    x_sense_lock()
+
+/*
+ *  chg_ipmÅLøÈÝDæxÌÍÍÌ»è
+ *
+ *  TMIN_INTPRIÌlÉæç¸Cchg_ipmÅÍC-(1 << TBITW_IPRI)`TIPM_ENAALLi0j
+ *  ÌÍÍÉÝèÅ«é±ÆÆ·éi^[Qbgè`Ìg£jD
+ *  ÝDæxÌrbg(TBITW_IPRI)ª 8 ÌêÍC-256 ` 0 ªwèÂ\Å éD
+ *   
+ */
+#define VALID_INTPRI_CHGIPM(intpri) \
+				((-((1 << TBITW_IPRI) - 1) <= (intpri) && (intpri) <= TIPM_ENAALL))
+
+/*
+ * ifãÌjÝDæx}XNÌÝè
+ *
+ *  CPUbNtOªNA³êÄ¢éÍCn[hEFAÌÝDæx}
+ *  XNðÝè·éDCPUbNtOªZbg³êÄ¢éÍCsaved_iipm
+ *  ðÝèµC³çÉCn[hEFAÌÝDæx}XNðCÝèµæ¤Æ
+ *  µ½ifãÌjÝDæx}XNÆTIPM_LOCKÌ¢ûÉÝè·éD
+ */
+#pragma inline
+void
+x_set_ipm(PRI intpri)
+{
+	uint8_t   iipm = INT_IPM(intpri);
+
+	if (intpri == TIPM_ENAALL){
+		iipm = IIPM_ENAALL;
+	}
+
+	if (!lock_flag) {
+		set_basepri(iipm);
+	}
+	else {
+		saved_iipm = iipm;
+		set_basepri(iipm < IIPM_LOCK ? iipm : IIPM_LOCK);
+	}
+}
+
+#define t_set_ipm(intpri)    x_set_ipm(intpri)
+#define i_set_ipm(intpri)    x_set_ipm(intpri)
+
+/*
+ * ifãÌjÝDæx}XNÌQÆ
+ *
+ *  CPUbNtOªNA³êÄ¢éÍn[hEFAÌÝDæx}
+ *  XNðCZbg³êÄ¢éÍsaved_iipmðQÆ·éD
+ */
+#pragma inline
+PRI
+x_get_ipm(void)
+{
+	uint8_t iipm;
+
+	if (!lock_flag) {
+		iipm = get_basepri();
+	}
+	else {
+		iipm = saved_iipm;
+	}
+
+	if (iipm == IIPM_ENAALL) {
+		return(TIPM_ENAALL);
+	}
+	else {
+		return(EXT_IPM(iipm));
+	}
+}
+
+#define t_get_ipm()    x_get_ipm()
+#define i_get_ipm()    x_get_ipm()
+
+/*
+ *  SVCnhiprc_support.Sj
+ */
+extern void svc_handler(void);
+
+/*
+ *  X^[gAbv[`istart.Sj
+ */
+extern void _start(void);
+
+/*
+ *  ÅDæÊ^XNÖÌfBXpb`iprc_support.Sj
+ *
+ *  dispatchÍC^XNReLXg©çÄÑo³ê½T[rXR[©
+ *  çÄÑo·×«àÌÅC^XNReLXgECPUbNóÔEfBXpb
+ *  `ÂóÔEifãÌjÝDæx}XNSðóÔÅÄÑo³È
+ *  ¯êÎÈçÈ¢D
+ */
+extern void dispatch(void);
+
+/*
+ *  fBXpb`Ì®ìJniprc_support.Sj
+ *
+ *  start_dispatchÍCJ[lN®ÉÄÑo·×«àÌÅC·×ÄÌ
+ *  ÝðÖ~µ½óÔiÝbNóÔÆ¯ÌóÔjÅÄÑo³È¯êÎ
+ *  ÈçÈ¢D
+ */
+extern NoReturn void start_dispatch(void);
+
+/*
+ *  »ÝÌReLXgðÌÄÄfBXpb`iprc_support.Sj
+ *
+ *  exit_and_dispatchÍCext_tsk©çÄÑo·×«àÌÅC^XNReL
+ *  XgECPUbNóÔEfBXpb`ÂóÔEifãÌjÝDæ
+ *  x}XNSðóÔÅÄÑo³È¯êÎÈçÈ¢D
+ */
+extern NoReturn void exit_and_dispatch(void);
+
+/*
+ *  J[lÌI¹ÌÄoµiprc_support.Sj
+ *
+ *  call_exit_kernelÍCJ[lÌI¹ÉÄÑo·×«àÌÅCñ^XN
+ *  ReLXgÉØè·¦ÄCJ[lÌI¹iexit_kerneljðÄÑo
+ *  ·D
+ */
+extern NoReturn void call_exit_kernel(void);
+
+/*
+ *  ^XNReLXgÌú»
+ *
+ *  ^XNªx~óÔ©çÀsÅ«éóÔÉÚs·éÉÄÎêéD±Ì_
+ *  ÅX^bNÌæðgÁÄÍÈçÈ¢D
+ *
+ *  activate_contextðCCCÖÅÍÈ­}Nè`ÆµÄ¢éÌÍC
+ *  ±Ì_ÅÍTCBªè`³êÄ¢È¢½ßÅ éD
+ */
+extern void    start_r(void);
+
+#define activate_context(p_tcb)                                         \
+{                                                                       \
+    (p_tcb)->tskctxb.sp = (void *)((char_t *)((p_tcb)->p_tinib->stk)    \
+                                        + (p_tcb)->p_tinib->stksz);     \
+    (p_tcb)->tskctxb.pc = (FP) start_r;                             \
+}
+
+/*
+ *  calltexÍgpµÈ¢
+ */
+#define OMIT_CALLTEX
+
+/*
+ *  ÝÔEÝnhÔ
+ *
+ *  ÝnhÔ(inhno)ÆÝÔ(intno)ÍCèÝ­¶É
+ *  EPSRÉÝè³êéáOÔÆ·éD 
+ */
+
+/*
+ *  ÝÔÌÍÍÌ»è
+ */
+#define VALID_INTNO(intno)           ((TMIN_INTNO <= (intno)) && ((intno) <= TMAX_INTNO))
+#define VALID_INTNO_DISINT(intno)    VALID_INTNO(intno)
+#define VALID_INTNO_CFGINT(intno)    VALID_INTNO(intno)
+
+/*
+ *  ÝnhÌÝè
+ *
+ *  xNgÔinhnoÌÝnhÌN®Ônint_entryÉÝè·éDÝ
+ *  nhe[u
+ */
+#pragma inline
+void
+x_define_inh(INHNO inhno, FP int_entry)
+{
+
+}
+
+/*
+ *  ÝnhÌoüûÌ¶¬}N
+ *
+ */
+#define INT_ENTRY(inhno, inthdr)    inthdr
+#define INTHDR_ENTRY(inhno, inhno_num, inthdr) extern void inthdr(void);
+
+/*
+ *  ÝvÖ~tO
+ */
+
+/*
+ *  Ý®«ªÝè³êÄ¢é©ð»Ê·é½ßÌÏikernel_cfg.cj
+ */
+extern const uint32_t	bitpat_cfgint[];
+
+/*
+ *  ÝvÖ~tOÌZbg
+ *
+ *  Ý®«ªÝè³êÄ¢È¢ÝvCÉÎµÄÝvÖ~
+ *  tOðNAµæ¤Æµ½êÉÍCfalseðÔ·D  
+ */
+#pragma inline
+bool_t
+x_disable_int(INTNO intno)
+{
+	uint32_t tmp;
+
+	/*
+	 *  Ý®«ªÝè³êÄ¢È¢ê
+	 */
+	if ((bitpat_cfgint[intno >> 5] & (1 << (intno & 0x1f))) == 0x00) {
+		return(false);
+	}
+
+	if (intno == IRQNO_SYSTICK) {
+		tmp = sil_rew_mem((void *)SYSTIC_CONTROL_STATUS);
+		tmp &= ~SYSTIC_TICINT;
+		sil_wrw_mem((void *)SYSTIC_CONTROL_STATUS, tmp);
+	}else {
+		tmp = intno - 16;
+		sil_wrw_mem((void *)((uint32_t *)NVIC_CLRENA0 + (tmp >> 5)),
+					(1 << (tmp & 0x1f)));
+	}
+
+	return(true);
+}
+
+#define t_disable_int(intno) x_disable_int(intno)
+#define i_disable_int(intno) x_disable_int(intno)
+
+/*
+ *  ÝvÖ~tOÌð
+ *
+ *  Ý®«ªÝè³êÄ¢È¢ÝvCÉÎµÄÝvÖ~
+ *  tOðNAµæ¤Æµ½êÉÍCfalseðÔ·D
+ */
+#pragma inline
+bool_t
+x_enable_int(INTNO intno)
+{
+	uint32_t tmp;
+
+	/*
+	 *  Ý®«ªÝè³êÄ¢È¢ê
+	 */
+	if ((bitpat_cfgint[intno >> 5] & (1 << (intno & 0x1f))) == 0x00) {
+		return(false);
+	}
+
+	if (intno == IRQNO_SYSTICK) {
+		tmp = sil_rew_mem((void *)SYSTIC_CONTROL_STATUS);
+		tmp |= SYSTIC_TICINT;
+		sil_wrw_mem((void *)SYSTIC_CONTROL_STATUS, tmp);
+	}else {
+		tmp = intno - 16;
+		sil_wrw_mem((void *)((uint32_t *)NVIC_SETENA0 + (tmp >> 5)),
+					(1 << (tmp & 0x1f)));
+	}
+    
+	return(true);
+}
+
+#define t_enable_int(intno) x_enable_int(intno)
+#define i_enable_int(intno) x_enable_int(intno)
+
+/*
+ *  ÝvCÌ®«ÌÝè
+ */
+extern void x_config_int(INTNO intno, ATR intatr, PRI intpri);
+
+/*
+ *  ÝnhüûÅKvÈIRCì
+ */
+#pragma inline
+void
+i_begin_int(INTNO intno)
+{
+}
+
+/*
+ *  ÝnhÌoûÅKvÈIRCì
+ */
+#pragma inline
+void
+i_end_int(INTNO intno)
+{
+}
+
+/*
+ *  CPUáOnhÖW
+ */ 
+
+/*
+ *  CPUáOnhÔ
+ */
+#define VALID_EXCNO_DEFEXC(excno)    (TMIN_EXCNO <= (excno) && (excno) <= TMAX_EXCNO)
+
+/*
+ *  CPUáOnhÌÂ
+ */
+extern void enable_exc(EXCNO excno);
+
+/*
+ *  CPUáOnhÌÖ~
+ */
+extern void disable_exc(EXCNO excno);
+
+/*
+ *  CPUáOnhÌÝè
+ */
+#pragma inline
+void
+x_define_exc(EXCNO excno, FP exc_entry)
+{
+	/*
+	 *  êÌáOÍÂðs¤Kvª é
+	 */
+	enable_exc(excno);
+}
+
+/*
+ *  CPUáOnhÌüûÌ¶¬}N
+ */
+#define EXC_ENTRY(excno, exchdr)    exchdr
+#define EXCHDR_ENTRY(excno, excno_num, exchdr) extern void exchdr(void *p_excinf);
+
+/*
+ *  CPUáOÌ­¶µ½ÌReLXgÌQÆ
+ *
+ *  CPUáOÌ­¶µ½ÌReLXgªC^XNReLXgÌÉfalseC
+ *  »¤ÅÈ¢ÉtrueðÔ·D
+ */
+#pragma inline
+bool_t
+exc_sense_context(void *p_excinf)
+{
+	uint32_t exc_return;
+
+	exc_return = *((uint32_t *)p_excinf + P_EXCINF_OFFSET_EXC_RETURN);
+	if ((exc_return & EXC_RETURN_PSP) == EXC_RETURN_PSP){
+		return false;
+	}
+	else {
+		return true;
+	}
+}
+
+/*
+ *  CPUáOÌ­¶µ½ÌIPMin[hEFAÌÝDæx}XNCà\
+ *  »jÌQÆ
+ */
+#pragma inline
+uint32_t
+exc_get_iipm(void *p_excinf)
+{
+	return(*((uint32_t *)p_excinf + P_EXCINF_OFFSET_BASEPRI));
+}
+
+/*
+ *  CPUáOÌ­¶µ½ÌReLXgÆÝÌ}XNóÔÌQÆ
+ *
+ *  CPUáOÌ­¶µ½ÌVXeóÔªCJ[lÀsÅÈ­C^XNR
+ *  eLXgÅ èCÝbNóÔÅÈ­CCPUbNóÔÅÈ­Ci
+ *  fãÌjÝDæx}XNSðóÔÅ éÉtrueC»¤ÅÈ¢
+ *  ÉfalseðÔ·iCPUáOªJ[lÇOÌÝÅ­¶µ½ê
+ *  ÉàfalseðÔ·jD
+ *
+ *  PUáOÌ­¶µ½ÌBASEPRIin[hEFAÌÝDæx}XNj
+ *  ª·×ÄÌÝðÂ·éóÔÅ é±Æð`FbN·é±ÆÅCJ[
+ *  lÀsÅÈ¢±ÆCÝbNóÔÅÈ¢±ÆCCPUbNóÔÅÈ
+ *  ¢±ÆCifãÌjÝDæx}XNSðóÔÅ é±ÆÌ4ÂÌ
+ *  ðð`FbN·é±ÆªÅ«éiCPUáOª­¶µ½Ìlock_flagðQ
+ *  Æ·éKvÍÈ¢jD
+ */
+#pragma inline
+bool_t
+exc_sense_intmask(void *p_excinf)
+{
+	return(!exc_sense_context(p_excinf)
+		   && (exc_get_iipm(p_excinf) == IIPM_ENAALL));
+}
+
+/*
+ *  CPUáOGgiprc_support.Sj
+ */
+extern void core_exc_entry(void);
+
+/*
+ *  ÝGgiprc_support.Sj
+ */
+extern void core_int_entry(void);
+
+/*
+ *  vZbTË¶Ìú»
+ */
+extern void core_initialize(void);
+
+/*
+ *  vZbTË¶ÌI¹
+ */
+extern void core_terminate(void);
+
+/*
+ * o^³êÄ¢È¢áOª­¶·éÆÄÑo³êé
+ */
+extern void default_exc_handler(void *p_excinf);
+
+/*
+ * ¢o^ÌÝª­¶µ½êÉÄÑo³êé
+ */
+extern void default_int_handler(void *p_excinf);
+
+#endif /* TOPPERS_MACRO_ONLY */
+#endif /* TOPPERS_PRC_CONFIG_H */
Index: /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_def.csv
===================================================================
--- /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_def.csv	(revision 61)
+++ /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_def.csv	(revision 61)
@@ -0,0 +1,8 @@
+TMAX_INTNO,TMAX_INTNO
+TIPM_LOCK,TIPM_LOCK 
+TBITW_IPRI,TBITW_IPRI
+sizeof_TCB,sizeof(TCB)
+offsetof_TCB_p_tinib,"offsetof(TCB,p_tinib)"
+offsetof_TCB_texptn,"offsetof(TCB,texptn)"
+offsetof_TCB_sp,"offsetof(TCB,tskctxb.sp)"
+offsetof_TCB_pc,"offsetof(TCB,tskctxb.pc)"
Index: /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_design.txt
===================================================================
--- /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_design.txt	(revision 61)
+++ /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_design.txt	(revision 61)
@@ -0,0 +1,529 @@
+=====================================================================
+                         ARM-MvZbTË¶Ýv
+                                  Last Modified: 23 Aug 2008 21:54:54
+=====================================================================
+
+±ÌhL
+gÌÊuÃ¯
+
+±ÌhL
+gÍCTOPPERS/ASPJ[lðARMvX-MvZbTÉÚA·é½ß
+ÌÝvÅ éD
+
+
+ARMVx-MÌdlÜÆß
+
+ARMvX-MÌdlÌ¤¿CJ[lÌÝvÉÖW·éÉÂ¢ÄÜÆßéD
+
+WX^
+
+ÄpWX^ÍR0`R15Ì16íÞ èCR13ÌÝª2oN\¬iPSP,MSPjÆÈ
+ÁÄ¢éDR15ÍPC, R14ÍNWX^iLRjÆÈÁÄ¢éDR0`R3,R12Í
+XNb`WX^Å éD
+
+R[ORxV
+
+R0`R4ªøC»êÈãÍX^bNDßèlÍCR0`R1Éi[³êéD(ARMÉ
+æèKè³êÄ¢é½ßCRpCÉË¶¹¸±Ì[ÆÈéD)
+
+CONTROLWX^
+
+PSP,MSPÌØèÖ¦CPrivilageÆUser[hÌWX^DÏXãÍCCXg
+NVobt@tbV
+½ßðÀs·éKvª éiisbjDCONTROL
+WX^ÌÚ×ÍCARMv7-M Architecture Application Level Reference 
+Manual Ì B1-9 ðQÆÌ±ÆD
+
+ÝxN^
+
+xN^e[u^ÅCxN^e[uÌAhXÍCZbgÍ0x00ÅC
+Vector Table Offset Registeri}bvhWX^j ðì·é±Æ
+ÅCCÓÌAhXÉzuÂ\Å éD
+
+Dæx
+
+lª¬³¢ûªDæxÆÈéD
+
+DæxÍÅå8bitÅ èCSoCÉÀ³êÄ¢érbgªÙÈéDÀ³
+êérbgª8bitÈºÌêÍCLSB©ç³øÉÈéDá¦ÎCÀ³êÄ¢
+érbgª7bitÌêÍCrbg0ª³øÆÈéD
+
+DæxÌrbgtB[hÌLSB©çrbgðTuDæxÆÄÔtB[h
+ÉÝè·é±ÆªÂ\Å éDcèÌãÊrbgðvGvVDæxÆ
+ÄÔDvGvVDæxª¯¶ÅCTuDæxªÙÈéDæxÌO[
+vÍC¨Ý¢ðvGvg·é±ÆªÅ«È¢D
+
+Reset,NMI,Hard Fault ÈOÌáOÍÝÆ¯lÉDæxªÝèÂ\Å èC
+Ý}XN@\ÉæèC­¶ðÖ~·é±ÆªÂ\Å éD
+
+CPU[h
+
+vZbTÍCThread[hàµ­ÍHandler[hÌ¢¸ê©Ì[hÆÈ
+éD
+
+ZbgÌóÔ
+
+ZbgÍThread[hCMSPªLøÆÈÁÄ¢éD
+
+Handler[h
+
+áO/Ýðó¯t¯éÆJÚ·é[hDó¯t¯½áO/ÝÌáOÔ
+ªCIPSRÉZbg³êéDáOÔÍCTRMÅèßçêÄ¢éÔÅ éD
+
+        áO              áOÔ
+  Reset                      1
+  Non-makable Interrupt      2
+  Hard Fault                 3
+  Memory Management          4
+  Bus Fault                  5
+  Usage Fault                6
+  SVCall                    11
+  Debug Monitor             12
+  PendSV                    14
+  SysTick                   15
+  IRQ0                      16
+  IRQ1                      17
+  ..
+
+áO/Ýðó¯t¯éÆCó¯t¯½áO/ÝÌDæxÈºÌáO/
+ÝðÖ~·éD±ÌDæx}XNð"NVICDæx}XN"ÆÄÔD±ÌDæx
+ÍC\tgEFA©çÏX·é±ÆªÅ«¸CáO/ÝÌ^[Éæè
+ÝOÌlÉ©®IÉßéD
+
+X^bN|C^iPSPÆMSPj
+
+X^bN|C^ÍCPSPÆMSPª èCr¼IÉgpÂ\Å éDHandler
+[hÅÍMSPÌÝgpÂ\Å èCThread[hÅÍCONTROLWX^ÅIðÂ
+\Å éDCONTROLWX^Ì1rbgÚðZbg·éÆPSPªLøÉCNA
+·éÆCMSPªLøÉÈéD
+
+Thread[hÆHandler[hÌJÚ
+
+Thread[h©çHandler[hÖÌJÚÍCáO/Ýðó¯t¯é±ÆÅ
+­¶·éDêûCHandler[h©çThread[hÖÌJÚÍCPCÉ
+EXC_RETURN(0xfffffffx)ÌlðÝè·é±ÆÉæès¤iáO^[Æ
+ÄÔjDEXC_RETURNÌºÊ4bitÉæèCJÚæÌ[hâgp·éX^bN|
+C^ðÏXÂ\Å éDáO^[ÉæèCPRIMASKâBASEPRIÌlÍÏ»
+µÈ¢DêûCFAULTMASKÌlÍ'0'ÉNA³¹éD
+
+EXC_RETURN
+
+áO/Ýót¯ÉlrÉÝè³êélDrbg31`4rbgÍSÄ'1'ÅC
+ºÊ4bitÍCót¯ÌCPU[hâX^bNð½fµ½lÆÈÁÄ¢éD
+
+ 0b0001 : Handler[h
+ 0b1001 : Thread[h with MSP
+ 0b1101 : Thread[h with PSP
+
+Thread[hÆHandler[hÌ»è
+
+»óÌ[hð»è·éÉÍCIPSRð©ÄC'0'ÈçThread[hC»êÈO
+ÈçCHandler[hÆÈéD
+
+BASEPRIWX^
+
+Ýèµ½DæxÈºÌDæxÌÝÌótðÖ~·éD±ÌDæx}XNð
+"BASEPRIDæx}XN"ÆÄÔD'0'ðÝè·éÆCSÄÌÝðÂ·éD
+áO/ÝÌótÆ^[ÉæèÏ»µÈ¢DáO/ÝÉÎ·éÝ
+Dæx}XNÍCNVICDæx}XNÆBASEPRIÌÝèlÌ¢ûilª¬³¢
+ûjÆÈéD
+
+FAULTMASK
+
+FAULTMASKÍ'1'ðZbg·é±ÆÉæèCNMIÈOÌSÄÌÝðÖ~·éD
+FAULTMASKÍCáOÌ^[Éæè'0'ÉNA³¹éD
+
+PRIMASKÆWFI
+
+PRIMASKð'1'ÉÝè·éÆCNMI Æ Hardware Fault ÈOÌáO/ÝðÖ
+~·éDPRIMASKÍÝÌÂÆÝÒ¿ðAg~bNÉs¤½ßÉp¢
+éDïÌIÉÍCPRIMASKªZbg³êÄ¢éóÔÅwfiðÀs·éÆCè
+ÝÒ¿ÆÈèCÝót¯éÆnhðÀs¹¸ÉCwfi©ç^[µ
+Ä­éD
+
+áO/ÝÌót
+
+EáO/Ýðót¯éÆCót¯ÉANeBuÈX^bNãÉÈºÌR
+  eLXgðÛ¶·é(áOt[ÆÄÔ)D
+
+   -----------
+  |    R0     |  <- new SP
+   -----------
+  |    R1     |
+   -----------
+  |    R2     |
+   -----------
+  |    R3     |
+   -----------
+  |    R12    |
+   -----------
+  |    LR     |
+   -----------
+  |    PC     |
+   -----------
+  |   xPSR    |
+   -----------
+  |           | <- old SP
+
+EvZbTðHandler[hÆ·éDMSPªLøÆÈéD
+Eót¯½áO/ÝÌáOÔðIPSRÉÝè·éD
+ENVICÝDæx}XNðót¯½áO/ÝÌDæxÉÝè·éD
+ElrÉEXC_RETURNÌlªÝè³êéD
+ExN^e[uðÇÝÝnhðÀs·éD
+
+áO/Ý©çÌ^[
+
+pcÉEXC_RETURNÌlðÝè·é±ÆÉæèCáO/Ý©ç^[·éD
+pcÖÌÝèÉgpÂ\È½ßÉÍ§Àª èCÈº½ßªgpÂ\Å éD
+
+  EPOP/LDM, LDR, BX
+
+¢ðÛè
+
+ExN^[e[uÉo^·éÖÌAhXÌLSBÍ'1'É·é×«©?
+ENVICÍáOEÝÌlXgñðàIÉÇµÄ¢éçµ¢D
+  (!t@Xð¾ç©É)D
+    \tgEFAÅÍClXgÌ Kðí¹êÎC^[X^bNðU¢µ
+    ÄàâèÈ¢©D
+
+
+OSÌÀ
+
+1.^[Qbg¼
+
+ 1-1 cm3(Cortex-M3)
+ 1-2 armv7m(ARMV7M)
+ 1-3 arm_m
+
+cm3ÅÍCCoretex-M1(armv6-m)ðT|[g·éêÉâèÆÈéDarmv7mÅÍC
+armv8mª[X³ê½êÉâèÆÈéDARMË¶ÍJSPÅÍCarmv4ÆÈ
+ÁÄ¢½ªCarmv5âarmv7à®ì·é½ßASPÅÍPÉarmÆµ½D»Ì½ßC
+arm_mª³ïÆl¦çêéD
+
+
+2.Thread[hÆHandler[hÌg¢ª¯
+
+ 2-1
+  ^XNReLXgÍThread[hCñ^XNReLXgÍHandler[
+  hÅ®ì³¹éD
+
+ 2-2
+  ^XNReLXgÆñ^XNReLXg¤ÉHandler[hÅ®ì³¹
+  éD
+
+vZbTÌÝvûjðl¶·éÆ2-1ªLÍD2-1ÅÌâè_ÆµÄÍC
+Ýnh©ç^XNÖÌ^[É[hÌÏXªÈºÌlÉ½­·é±
+Æª°çêéD
+
+1.Ýnh               : Handler[h
+2.^XNáOnhÌÄÑoµ : Thread[h
+3.^XNÖÌ^[       : Handler[h
+4.^XNÌÄJ                 : Thread[h
+
+3ÅHandler[hÉÚs·éKvª éÌÍCáOt[ðp¢ÄA·é
+ÉÍCHandler[hÅáO^[ðs¤Kvª é½ßÅ éDARMÅ
+ÍC¡WX^Ì[hÆCPSRÌAð¯És¦éªCM3Ís¦È¢½ßC
+±Ìû@ÅÝæÌ^XNÉ^[·éKvª éD
+
+2-2ÌêÌÝnh©ç^XNÖÌ^[É[hÌÏXðÈº
+É¦·DÜ½C2-2ÅÍÝDæxÌÅálð^XNÌÀsÌDæxÆµ
+ÄU[u·éKvª éD
+
+1.Ýnh               : Handler[h
+2.NVICDæx}XN'0'ð0Ö     : Thread[h
+3.ÅáDæxÌHandler[hÖ  : Handler[h
+4.^XNáOnhÌÄÑoµ : Handler[h
+5.^XNÖÌ^[ÌO   : Thread[h
+3.^XNÖÌ^[           : Handler[h
+4.^XNÌÄJ                 : Handler[h
+
+Ýnh©ç^XNÌ^[ÉÖµÄÍC2-2Å ÁÄàC2ðÀs·
+éêÉCNVICDæx}XNð'0'É·é½ßCáO^[ðs¤Kv
+ª éDÜ½CNVIC©ÌªCÝÌlXgñðÇµÄ¢é½ßC3©ç4
+ÖÌJÚÌ½ßÉC¢Á½ñáO/Ýðót¯½óÔÉ·éKvª é½
+ßCÊIÉ2-1ÈãÌJÚªKvÆÈéD
+
+2-2ÌêÍCMSPµ©g¦È¢½ßCÝÌüèûÅlXgñð»fµÄC
+X^bNðüêÖ¦éKvª éD
+
+HRPÅÛìðp¢éêÍ2-1ÆÈéD
+
+ÈãÌRÉæèC2-1ðÌp·éD½¾µ2-1ÍCJ[lN®ÆIDLE[
+vÌµ¢ð¢·éKvª éD±êçÉÂ¢ÄÍÊrc_·éD
+
+
+3.fBXpb`ÌÀs[h
+
+ 3-1
+  Thread[hÅÀs·é
+
+ 3-2
+  Handler[hÅÀs·é
+
+fBXpb`ðThread[hÅÀs·éÆCÝÉæèvGvg³ê
+½^XNÉßéêÍÌæ¤ÈpXÉÈéD
+
+ 1. fBXpb`ÄÑoµ : Thread[h 
+ 2. fBXpb`Às     : Thread[h
+ 3. ^XNáOÀs         : Thread[h
+ 4D^XNÖÌ^[ : Handler[h
+ 5. ^XNÌÄJ           : Thread[h
+
+Ýnh©ç©çfBXpb`µ½^XNÖ^[·éêÍÌp
+XÉÈéD
+
+ 1.Ýnh               : Handler[h
+ 2.fBXpb`Às           : Thread[h
+ 3.^XNáOnhÌÄÑoµ : Thread[h
+ 4.^XNÖÌ^[           : Handler[h
+ 5.^XNÌÄJ                 : Thread[h
+
+êûCfBXpb`ðHandler[hÅÀs·éÆCÝÉæèvG
+vg³ê½^XNÉßéêÍÌæ¤ÈpXÉÈéD
+
+ 1. fBXpb`ÄÑoµ : Thread[h 
+ 2. fBXpb`Às     : Handler[h
+ 3. ^XNáOÀs         : Thread[h
+ 4D^XNÖÌ^[     : Handler[h
+ 5. ^XNÌÄJ           : Thread[h
+
+ÝnhÌoû©ç©çfBXpb`µ½^XNÖ^[·éêÍ
+ÌpXÉÈéD
+
+ 1.Ýnh               : Handler[h
+ 2.fBXpb`Às           : Handler[h
+ 3.^XNáOnhÌÄÑoµ : Thread[h
+ 4.^XNÖÌ^[           : Handler[h
+ 5.^XNÌÄJ                 : Thread[h
+
+^XNáOnhªÈ¢OSÌêÍCHandler[hÅÀsµ½ûª[h
+ÌJÚÌñª¸éªC^XNáOnhª éÆCThread[hÌûªJ
+Úñª¸é½ßCThread[hÆ·éD
+
+Ûìðl¶·éÆCfBXpb`ÍHandler[hÅ®ì³¹½ûª
+ø¦ªæ¢Æl¦çêéiSVCÅnhðÄÑo·ÆHandler[hÆÈé½
+ßjD
+
+
+4.X^bNÌg¢ª¯
+
+ 4-1
+  ^XNReLXgðPSP, ñ^XNReLXgðMSP
+ 4-2
+  ^XNReLXgCñ^XNReLXg¤ÉMSP
+
+4-2ÌêCÝÌüèûÅlXgñð»fµÄCX^bNðüêÖ¦é
+Kvª éD2Å^XNReLXgÍThread[hCñ^XNReLXg
+ÍHandler[hÅ®ì³¹éÆµ½½ßC4-1ðÌp·éÆCÝÌüèû
+Å©®IÉX^bNªØèÖíéDThread[hÅÌPSPÌANZXàC
+mrs/msr½ßÅs¦é½ßC4-1ðÌp·éD
+
+
+5.ReLXgÌ»è
+
+ 5-1
+  IPSRª'0'(Thread[h)Èç^XN^XNReLXgC'1'(Handler[
+  h)Èçñ^XNReLXgÆ·éD
+
+ 5-2
+  ÝÌlXgñðÛ·éÏðpÓD1ÈãÅñ^XNReLXgD
+
+ 5-3
+  ANeBuÈX^bNÉæè»fiMSPÈçñ^XNReLXgCPSPÈç
+  ^XNReLXgÆ·éj
+
+5-1ÍC\tgEFA¤ÅReLXgÇÌ½ßÌðs¤KvªÈ¢Æ
+¢¤bgª éDµ©µÈªçCJ[lÌN®Thread[hÅ é½
+ßCHandler[hÖÚs·éKvª éDASPJ[lÅÍCIDLE[vÀs
+Íñ^XNReLXgÆµÄ®ì³¹éKvª é½ßCIDLE[vÍ
+Handler[hÅ®ì³¹éKvª éDIDLE[vÍfBXpb`©çÄ
+Ño³êéD3Åèß½æ¤ÉCfBXpb`ðThread[hÅ®ì³¹é
+½ßCIDLE[vðÄÑo·ÛÉÍCHandler[hÖJÚ·éKvª éD
+Handler[hÖÌJÚÍCSVC/PendSVCðp¢éÆÀ»Â\Å éªC6Ì
+ÝÉvGvg³ê½^XNÖÌ^[ÌHandler[hÖÌÚsÅ
+àSVC/PendSVCÌgpªKvÆÈé½ßCSVCnhÅÍCÇÌÚIÅÄÑo
+³ê½©»è·éKvªoÄ­é½ßCI[owbhªå·éD
+
+5-2ÅÍCJ[lN®âIDLE[vÉÏð'1'ÉÝè·êÎæ¢±ÆÉ
+ÈéD±ÌêCJ[lN®âIDLE[vÉThread[hÅÀsµÄà
+®ìÉâèªÈ¢æ¤CÁÉÝÌoüèûÌÝvðÓ·éKvª éD
+
+J[lN®ÉÖµÄÍCSÝðÖ~µÄ¨èCÝªüçÈ¢ÌÅ
+ÁÉâèÍÈ¢DIDLE[vÍCThread[hÅMSPÆPSPÌIðªÂ\Å 
+é±ÆðpµÄCñ^XNReLXgÌX^bNÅ éMSPÉÏX·éD
+áO/ÝÌüèûÅÍC½dÝÅ é©ðEXC_RETURNÌ[h»èÌ
+rbgÅÍÈ­CX^bNÌ»èrbgÅs¦ÎâèÈ¢DáO/Ý©ç
+Ì^[ÉÖµÄÍC½dÝÌ»èÍCüèûÆ¯lÉEXC_RETURNÌX
+^bN»èrbgÅs¦Îæ¢DáO^[ÉpcÉãü·é
+EXC_RETURNÌlðê¥0xfffffffd (Thread[h with MSP)Æ·éÌÅÍÈ­C
+áO/Ýót¯ÉLRÉÝè³êéEXC_RETURNðp¢é±ÆÉæèCIDLE
+[vÉèñ¾êÅàâèÈ­^[·éD
+
+J[lN®ÍCMSPªANeBuÅ èCÝnhÀsÍHandler
+[hÅ é±Æ©çMSPªANeBuÅèCIDLE[vÉMSPðANeBu
+ÉÝè·éÆCñ^XNReLXgÍSÄCMSPðANeBuÉµÄ®ì·
+é±ÆÉÈéDÜ½CÝÍÝOÉANeBuÈX^bNÌîñªC
+EXC_RETURNÉÝè³êéD»Ì½ßCReLXgÌ»èÍCÝlXgñ
+ðÛ·éÏªÈ­ÆàCANeBuÈX^bNð©êÎæ¢±ÆÉÈéD
+Ü½Cexc_sense_context()ÉÖµÄÍCáOt[ÉEXC_RETURNðÇÁ
+µC»ÌàeÉæè»f·êÎæ¢DÈãÌRÉæèC5-3ðÌp·éD
+
+
+6.ÝÉvGvg³ê½^XNÖÌ^[ÌHandler[hÖÌÚ
+  sû@
+
+ 6-1
+  SVCðp¢é
+ 6-2
+  PendSVCðp¢é
+
+PendSVCÆSVCÌá¢ÍCPendSVCªvªL
+[CO³êCSVCÍvªL
+
+[CO³êÈ¢±ÆÅ éDÝÉvGvg³ê½^XNÖÌ^[
+ÌHandler[hÖÌÚsÍCL
+[CO³ê¸É¦ÀÉ³êéK
+vª é½ßCÇ¿çÅÀ»µÄàâèÈ¢DÇ¿çðJ[lÌ\[Xµ
+Ägp·é©ÌIð¾¯Å éD
+
+Ç¿çðg¤ÆµÄàCDæxÌÝèªâèÆÈéDfBXpb`©ç
+ÝÉvGvg³ê½^XNÖÌ^[ÜÅÌÍC­È­ÆàCPU
+bNóÔÅÀs³êÈ¯êÎÈçÈ¢DSVCâPendSVCÍÇ¿çàÝDæx
+ðÂ½ßCNVICDæx}XNæèBASEPRIDæx}XNÌûª¢êC
+³êÈ¢D
+
+CPUbNóÔðBASEPRIÌÝèÅÀ»µ½êC»ÌÝèlðSVCâPendSVCÉ
+Ýèµ½læèá­·éKvª éD¾¢·¦éÆCSVCâPendSVCÌDæxð
+CPUbNÌDæx}XNÌlæè¢li¼ÌÝæè¢DæxjÆ
+·éKvª éD
+
+CPUbNóÔðFAULTMASKâPRIMASKÅÀ»µ½êÍC±êçªÝè³êé
+ÆCSVCâPendSVCªót¯çêÈ¢½ßC¢Á½ñBASEPRIÉæèÝð}
+XN·éæ¤ÉÝè·éKvª éD±ÌêàCSVCâPendSVCÍ¼ÌÝ
+æè¢DæxðÝè·éKvª éD
+
+ÈãÉæèCHandler[hÖÌÚsÌ½ßÉÍCCPUbNóÔðBASEPRIÅ
+À»µCSVCâPendSVCÉÝè·éDæxðJ[lÇàÌÅDæxæèê
+Â¢DæxÉÝè·éKvª éD
+
+
+7. áO/ÝoüèûÅÌ½dÝÌ»f
+
+7-1
+ EXC_RETURNÌ[h»èrbg
+7-2
+ EXC_RETURNÌX^bN»èrbg
+7-3
+ ÝlXgñÌÇÏ
+
+áO/Ýót¯ÍCót¯½áO/ÝÈºÌÝÍÖ~·éªCS
+ÝÖ~óÔÉÍÈçÈ¢D»Ì½ßCÝlXgñÌÇÏðC
+Ng·éOÉÝªüéÂ\«ª é½ßC7-3Ígp·é±ÆªÅ
+«È¢D
+
+5Åc_µ½ÊèCIDLE[vðThread[hÅÀs·é½ßC7-1ÅÍÈ­C
+7-2Å»f·éKvª éD
+
+
+8. IDLE[v
+
+8-1
+ Thread[hÅÀs
+8-2
+ Handler[hÅÀs
+
+5Åc_µ½ÊèCThread[hÅÀsÅ«½ûªI[owbhª¬³¢DÜ
+½CThread[hÅÀsµÄàCèÝÌoüèûÅ³µ­ñ^XNRe
+LXgÆ»èÅ«êÎCThread[hÅâèÈ¢D
+
+
+9DJ[lÇOÌÝÌT|[g
+
+9-1
+ J[lÇOÌÝðT|[gµÈ¢
+9-2
+ J[lÇOÌÝðT|[g·é
+
+xN^e[uðT|[gµÄ¨èCÝnhàC¾êÅLqÂ\Å 
+é½ßCT|[gªeÕÅ é½ßCT|[g·éD
+
+
+10. CPUbN
+
+10-1
+ BASEPRIðgp 
+10-2 
+ FAULTMASK/PRIMASKðgp
+
+J[lÌÇOÌÝðT|[g·éÈçCBASEPRIðgp·éKvª 
+éD
+
+
+11. ÝbNÆCPUáOÌÖW
+
+11-1
+ BASEPRIðgp 
+11-2 
+ FAULTMASK/PRIMASKðgp 
+
+FAULTMASK/PRIMASKðgp·éÆCNMI Æ Hardware Fault ÈOÌCPUáOàÖ
+~³êÄµÜ¤D
+
+BASEPRIðp¢éÆCÝbNÉàCPUáOðót¯½¢êÍC
+BASEPRIðp¢ÄCÅDæxðCPUáOÌ½ßÉU[u·éKvª éD
+
+ÝbNàCCPUáOðót¯éæ¤Éµ½¯êÎBASEPRIðgp·éK
+vª éD
+
+ÊIRON4.0dlÌ3.5.3ÅÍCCPUáOÌDæxÍÌæ¤ÉèßçêÄ¢éD
+
+"CPUáOnhÌDæÊÍCCPUáOª­¶µ½ÌDæxÆCfBX
+pb`ÌDæÊÌ¢¸ê©æèà¢D"
+
+CPUáOª­¶µ½ÌDæxæèà¢Æ éÌÅCCPUbNâÝ
+bNóÔÌ^XNÅ­¶µ½êÅàCDæµÄÀs³êé×«¾Æàl¦ç
+êéD
+
+êûCTOPPERSWÝfÌdlÅÍCCPUáOÍCvZbT
+ÉÙÈé½ßCCPUáOÌfÌW»¢ÌÎÛOÆµÄ¢éD»Ì
+½ßCARM-MÅÌµ¢ðßÄC}j
+AÉ¾L·êÎæ¢Æl¦çêéD
+
+
+12. ODæxÆàDæxÌÏ·
+
+ODæxÆÍAPIÅwè·éÝDæx(PRI^)Ì±ÆÅ èClª¬³¢
+ÙÇDæxª¢DÝnhÉÍC-1©çA±µ½ÌlðÝèÂ\Å
+ éDàDæxÍCBASEPRIâNVICÌDæxWX^ÉÝè·élÅ éD
+
+À³êéÝDæxÌrbgð TBITW_IPRI Æ·éÆCÝèÂ\ÈO
+DæxÍÌæ¤ÉÈéD
+
+  TIPM_ENAALLi0j` -(1 << TBITW_IPRI)
+
+
+13. J[lÇàÌÅDæx(CPUbNóÔÅÌDæx}XN)
+
+6.Åq×½æ¤ÉCÝÌoûÅSVCnhðÄÑo·Kvª é½ßC
+SVCnhÍCPUbNóÔÌBASEPRIÉÝè·éDæx}XNæè¢Dæx
+ðÝè·éKvª éD
+
+À³êéÝDæxÌrbgð TBITW_IPRICDæxÌTuDæxÌ
+rbgðTBIT_IPRIÆ·éÆCCPUbNóÔiJ[lÇàÝÉÝè
+Â\ÈÅDæxjÆµÄwèÂ\ÈDæx}XNÌÝèÍÍÍÈºÌlÌÍ
+ÍÆÈéD
+
+    -(2^(TBIW_IPRI)) + (2^TBITW_SUBIPRI)) ` -1
+
+
+14. ¢ðÛè
+
+EÝbNÆCPUáOÌÖW
+  BASEPRIðgÁ½ÆµÄàC éCPUáOÉ¼ÌáOª­¶·éÆC»
+  ÌáOÍó¯t¯çêÈ¢½ßCITRONdlÍ½¹È¢D
+  -> «çßÄ}j
+ALÚÉ¦°é©.
+  veNVÌáOà}XNÂ\Å é½ßvD
+
+
+ÈãD
Index: /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_insn.h
===================================================================
--- /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_insn.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_insn.h	(revision 61)
@@ -0,0 +1,144 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+
+/*
+ *  RAË¶ÌÁê½ßÌCCÖè`iARM-Mpj
+ */
+
+#ifndef CORE_INSN_H
+#define CORE_INSN_H
+
+#include <arm_m.h>
+
+/*
+ *  FAULTMASKÌZbg
+ */
+#pragma inline
+void
+set_faultmask(void){
+	Asm("cpsid f":::"memory");
+}
+
+/*
+ *  FAULTMASKÌNA
+ */
+#pragma inline
+void
+clear_faultmask(void){
+	Asm("cpsie f":::"memory");
+}
+
+/*
+ *  PRIMASKÌZbg
+ */
+#pragma inline
+void
+set_primask(void){
+	Asm("cpsid i":::"memory");
+}
+
+/*
+ *  PRIMASKÌNA
+ */
+#pragma inline
+void
+clear_primask(void){
+	Asm("cpsie i":::"memory");
+}
+
+/*
+ *  BASEPRIÌZbg
+ */
+#pragma inline
+void
+set_basepri(uint32_t val){
+	Asm("msr BASEPRI, %0" : : "r"(val) : "memory");
+}
+
+/*
+ *  BASEPRIÌæ¾
+ */
+#pragma inline
+uint32_t
+get_basepri(void){
+	uint32_t val;
+	Asm("mrs  %0, BASEPRI" : "=r"(val));
+	return(val);
+}
+
+/*
+ *  CONTROLÌZbg
+ */
+#pragma inline
+void
+set_control(uint32_t val){
+	Asm("msr control, %0 \n"
+		" isb"
+		: : "r"(val) : "memory");
+}
+
+/*
+ *  CONTROLÌæ¾
+ */
+#pragma inline
+uint32_t
+get_control(void){
+	uint32_t val;
+	Asm("mrs  %0, CONTROL" : "=r"(val));
+	return(val);
+}
+
+/*
+ *  Xe[^XWX^iCPSRjÌ»ÝlÌÇoµ
+ */
+#pragma inline
+uint32_t
+get_ipsr(void)
+{
+    uint32_t sr;
+    Asm("mrs  %0, ipsr" : "=r"(sr));
+    return(sr);
+}
+
+#endif /* CORE_INSN_H */
Index: /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_kernel.h
===================================================================
--- /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_kernel.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_kernel.h	(revision 61)
@@ -0,0 +1,67 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *		kernel.hÌvZbTË¶iARM-Mpj
+ *
+ *  ±ÌCN[ht@CÍCtarget_kernel.hiÜ½ÍC»±©çCN
+ *  [h³êét@CjÌÝ©çCN[h³êéD¼Ìt@C©ç
+ *  ¼ÚCN[hµÄÍÈçÈ¢D
+ */
+
+#ifndef TOPPERS_PRC_KERNEL_H
+#define TOPPERS_PRC_KERNEL_H
+
+/*
+ *  T|[g·é@\Ìè`
+ */
+#define TOPPERS_TARGET_SUPPORT_DIS_INT            /* dis_intðT|[g·é */
+#define TOPPERS_TARGET_SUPPORT_ENA_INT            /* ena_intðT|[g·é */
+
+#define TMAX_INTPRI		(-1)		/* ÝDæxÌÅåliÅálj*/
+
+#ifndef TOPPERS_MACRO_ONLY
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+#endif /* TOPPERS_PRC_KERNEL_H */
Index: /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_offset.tf
===================================================================
--- /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_offset.tf	(revision 61)
+++ /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_offset.tf	(revision 61)
@@ -0,0 +1,19 @@
+$
+$       オフセットファイル生成用テンプレートファイル（ARM-M用）
+$
+
+$
+$  オフセット値のマクロ定義の生成
+$
+$DEFINE("TCB_p_tinib", offsetof_TCB_p_tinib)$
+$DEFINE("TCB_texptn", offsetof_TCB_texptn)$
+$DEFINE("TCB_sp", offsetof_TCB_sp)$
+$DEFINE("TCB_pc", offsetof_TCB_pc)$
+
+$DEFINE("TINIB_exinf", offsetof_TINIB_exinf)$
+$DEFINE("TINIB_task", offsetof_TINIB_task)$
+
+$
+$  ビットオフセット値等のマクロ定義の生成
+$
+$DEFINE_BIT("TCB_enatex", sizeof_TCB, "B")$
Index: /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_rename.def
===================================================================
--- /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_rename.def	(revision 61)
+++ /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_rename.def	(revision 61)
@@ -0,0 +1,26 @@
+# prc_config.c
+exc_tbl
+vector_table
+lock_flag
+saved_iipm
+default_exc_handler
+default_int_handler
+x_config_int
+prc_initialize
+prc_terminate
+bitpat_cfgint
+set_exc_int_priority
+enable_exc
+disable_exc
+
+# prc_support.S
+int_entry
+exc_entry
+ret_int
+ret_exc
+svc_handler
+start_r
+dispatch
+start_dispatch
+exit_and_dispatch
+call_exit_kernel
Index: /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_rename.h
===================================================================
--- /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_rename.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_rename.h	(revision 61)
@@ -0,0 +1,73 @@
+/* This file is generated from prc_rename.def by genrename. */
+
+#ifndef TOPPERS_PRC_RENAME_H
+#define TOPPERS_PRC_RENAME_H
+
+/*
+ *  prc_config.c
+ */
+#define exc_tbl						_kernel_exc_tbl
+#define vector_table				_kernel_vector_table
+#define lock_flag					_kernel_lock_flag
+#define saved_iipm					_kernel_saved_iipm
+#define default_exc_handler			_kernel_default_exc_handler
+#define default_int_handler			_kernel_default_int_handler
+#define x_config_int				_kernel_x_config_int
+#define core_initialize				_kernel_core_initialize
+#define core_terminate				_kernel_core_terminate
+#define bitpat_cfgint				_kernel_bitpat_cfgint
+#define set_exc_int_priority		_kernel_set_exc_int_priority
+#define enable_exc					_kernel_enable_exc
+#define disable_exc					_kernel_disable_exc
+
+/*
+ *  prc_support.S
+ */
+#define core_int_entry				_kernel_core_int_entry
+#define core_exc_entry				_kernel_core_exc_entry
+#define ret_int						_kernel_ret_int
+#define ret_exc						_kernel_ret_exc
+#define svc_handler					_kernel_svc_handler
+#define start_r						_kernel_start_r
+#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
+
+#ifdef TOPPERS_LABEL_ASM
+
+/*
+ *  prc_config.c
+ */
+#define _exc_tbl					__kernel_exc_tbl
+#define _vector_table				__kernel_vector_table
+#define _lock_flag					__kernel_lock_flag
+#define _saved_iipm					__kernel_saved_iipm
+#define _default_exc_handler		__kernel_default_exc_handler
+#define _default_int_handler		__kernel_default_int_handler
+#define _x_config_int				__kernel_x_config_int
+#define _prc_initialize				__kernel_prc_initialize
+#define _prc_terminate				__kernel_prc_terminate
+#define _bitpat_cfgint				__kernel_bitpat_cfgint
+#define _set_exc_int_priority		__kernel_set_exc_int_priority
+#define _enable_exc					__kernel_enable_exc
+#define _disable_exc				__kernel_disable_exc
+
+/*
+ *  prc_support.S
+ */
+#define _int_entry					__kernel_int_entry
+#define _exc_entry					__kernel_exc_entry
+#define _ret_int					__kernel_ret_int
+#define _ret_exc					__kernel_ret_exc
+#define _svc_handler				__kernel_svc_handler
+#define _start_r					__kernel_start_r
+#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
+
+#endif /* TOPPERS_LABEL_ASM */
+
+
+#endif /* TOPPERS_PRC_RENAME_H */
Index: /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_sil.h
===================================================================
--- /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_sil.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_sil.h	(revision 61)
@@ -0,0 +1,90 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *   sil.hÌvZbTË¶iARM-Mpj
+ */
+
+#ifndef TOPPERS_PRC_SIL_H
+#define TOPPERS_PRC_SIL_H
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  NMIð­·×ÄÌÝÌÖ~
+ */
+#pragma inline
+bool_t
+TOPPERS_disint(void)
+{
+	uint32_t val;
+
+	Asm("mrs  %0, FAULTMASK" : "=r"(val));
+	Asm("cpsid f":::"memory");
+
+	if (val == 1) {
+		return (true);
+	}
+	else {
+		return (false);
+	}
+}
+
+#pragma inline
+void
+TOPPERS_enaint(bool_t locked)
+{
+	if (!locked) {
+	  Asm("cpsie f":::"memory");
+	}
+}
+
+/*
+ *  SÝbNóÔÌ§ä
+ */
+#define SIL_PRE_LOC      bool_t  TOPPERS_locked
+#define SIL_LOC_INT()    ((void)(TOPPERS_locked = TOPPERS_disint()))
+#define SIL_UNL_INT()    (TOPPERS_enaint(TOPPERS_locked))
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+#endif /* TOPPERS_PRC_SIL_H */
Index: /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_stddef.h
===================================================================
--- /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_stddef.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_stddef.h	(revision 61)
@@ -0,0 +1,65 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *  t_stddef.hÌvZbTË¶iARM-Mpj
+ *
+ *  ±ÌCN[ht@CÍCtarget_stddef.hiÜ½ÍC»±©çCN
+ *  [h³êét@CjÌÝ©çCN[h³êéD¼Ìt@C©ç
+ *  ¼ÚCN[hµÄÍÈçÈ¢D
+ */
+
+#ifndef TOPPERS_PRC_STDDEF_H
+#define TOPPERS_PRC_STDDEF_H
+
+/*
+ *  ^[Qbgð¯Ê·é½ßÌ}NÌè`
+ */
+#define TOPPERS_ARM_M           /* vZbTªÌ */
+
+/*
+ *  X^bNÌ^
+ *  ARMÅÍCX^bNð8byte«EÉzu·éKvª é
+ */
+#define TOPPERS_STK_T  long long
+
+#endif /* TOPPERS_PRC_STDDEF_H */
Index: /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_support.S
===================================================================
--- /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_support.S	(revision 61)
+++ /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_support.S	(revision 61)
@@ -0,0 +1,836 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+  NAME core_support
+/*
+ *  vZbTË¶W
+[ AZu¾êiARM-Mpj
+ */
+
+#define TOPPERS_MACRO_ONLY
+#define UINT_C(val)		(val)		/* uint_t^Ìèðìé}N */
+#define ULONG_C(val)	(val)		/* ulong_t^Ìèðìé}N */
+#define CAST(type, val)	(val)		/* ^LXgðs¤}N */
+
+#include "kernel_impl.h"
+#include "arm_m.h"
+#include "offset.h"
+
+
+/*
+ *  ^XNfBXpb`
+ */
+	PUBLIC  dispatch
+        IMPORT  p_runtsk
+
+	SECTION .text : CODE (2)
+	THUMB
+dispatch:
+	/*
+	 *
+	 *  ±Ì[`ÍC^XNReLXgECPUbNóÔEfBpb`ÂóÔ
+	 *  EifãÌjÝDæx}XNSJóÔÅÄÑo³êéD
+	 */
+	stmfd sp!,{r4-r11,lr}         /* WX^ÌÛ¶ */
+	ldr   r0, =p_runtsk           /* p_runtskðÇÝÞ */
+	ldr   r1, [r0]
+	str   sp, [r1,#TCB_sp]        /* ^XNX^bNðÛ¶ */
+	ldr   lr, =dispatch_r         /* ÀsÄJÔnðÛ¶ */
+	str   lr, [r1,#TCB_pc]        
+	b     dispatcher
+
+	IMPORT  call_texrtn
+	IMPORT  ipmflg
+
+	SECTION .text : CODE (2)
+	THUMB
+dispatch_r:
+	ldmfd sp!,{r4 - r11,lr}       /* WX^ÌA */
+	/*
+	 * ^XNáO[`ÌN®
+	 * dispatcher©çÄÑo³êé½ßCTCBÌAhXÍr1ÉüÁÄ¢é
+	 */
+	ldrb  r0,[r1,#TCB_enatex]
+	tst   r0,#TCB_enatex_mask
+	beq   dispatch_r_1            /* enatex ª false Èç^[ */
+	ldr   r0,[r1,#TCB_texptn]     /* texptn ª0ÅÈ¯êÎ         */
+	tst   r0,r0
+	beq   dispatch_r_1             /* ^XNáO[`ÌÄÑoµ */
+	ldr   r1, =ipmflg             /* ipmflgª false Èç^[  */
+	ldr   r0, [r1]
+	tst   r0,r0
+	/*bne   call_texrtn             /* ^XNáO[`ÌÄÑoµ */
+  	beq   dispatch_r_1
+	ldr   r0, =call_texrtn        /* ^XNáO[`ÌÄÑoµ */
+	bx    r0      
+dispatch_r_1:                     /* ^XNÖÌcall_textn©çßé */
+	/*mov   pc,lr*/
+        bx      lr
+
+
+/*
+ *  CPUáOGg
+ *
+ *  ÝGgÆÌàeÍ¯¾ªCOÌíÞªÙÈé½ßC
+ *  ª¯Ä¢éD
+ */
+	PUBLIC  core_exc_entry
+
+	SECTION .text : CODE (2)
+	THUMB
+core_exc_entry:
+	/*
+	 *  áO/Ýª­¶·éÆC­¶ÉANeBuÈX^bNÉXN
+	 *  b`WX^ªÛ¶³êéD
+	 *  ±ÌàeÉÁ¦ÄCCPUáOnhÖÌîñÆµÄCbasepri ÌlÆC
+	 *  EXC_RETURNÌîñðÁ¦ÄÛ¶·éDbasepriÌlÍCCPUáO©çÌ
+	 *  ^[ÉÝDæx}XNÌlð³Éß·½ßÉàp¢çêéD
+	 *
+	 *   -----------
+	 *  | EXC_RETURN|  
+	 *   -----------
+	 *  |  basepri  |  
+	 *   -----------
+	 *  |    R0     |  
+	 *   -----------
+	 *  |    R1     |
+	 *   -----------
+	 *  |    R2     |
+	 *   -----------
+	 *  |    R3     |
+	 *   -----------
+	 *  |    R12    |
+	 *   -----------
+	 *  |    LR     |
+	 *   -----------
+	 *  |    PC     |
+	 *   -----------
+	 *  |   xPSR    |
+	 *   -----------
+	 *
+	 */
+        /*¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤*/
+	/*
+	 *  Ý­¶ÌÝDæx}XNðX^bNÉÛ¶·é½ßæ¾
+	 */
+	/*mrs   r2, basepri             /* baepriÌlðæ¾ */
+
+	/*
+	 *  J[lÇOÌáO©`FbN
+	 *  J[làÌNeBJZNVÌÀsCSÝbNóÔC
+	 *  CPUbNóÔCJ[lÇOÌÝnhÀsÌ¢¸ê©Å
+	 *  ­¶µ½CPUáOðCJ[lÇOÌCPUáOÆÄÔ
+	 *  CPUbNóÔÍbasepriªIIPM_LOCKÅ»f·éD
+	 *  SÝbNóÔÍFAULTMASKª'1'Ìê
+	 */
+	/*cmp   r2, #IIPM_LOCK              /* CPUbNóÔÈçJ[lÇOáOÖ */
+	/*beq   prc_nonkernel_exc_entry*/
+	/*mrs   r2, FAULTMASK               /* SÝbNóÔÈçJ[lÇOáOÖ */
+	/*cbnz  r2, prc_nonkernel_exc_entry*/
+        /*¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢*/
+        /*
+	 *  J[lÇOÌáO©`FbN
+	 *  J[làÌNeBJZNVÌÀsCSÝbNóÔC
+	 *  CPUbNóÔCJ[lÇOÌÝnhÀsÌ¢¸ê©Å
+	 *  ­¶µ½CPUáOðCJ[lÇOÌCPUáOÆÄÔ
+	 *  SÝbNóÔÍFAULTMASKª'1'Ìê
+	 *  CPUbNóÔÍbasepriªIIPM_LOCK©Å»f·éD
+	 */
+	mrs   r2, FAULTMASK           /* SÝbNóÔÈçJ[lÇOáOÖ */
+	cbnz  r2, core_nonkernel_exc_entry
+
+	mrs   r2, basepri             /* baepriÌlðæ¾ */
+	cmp   r2, #IIPM_LOCK          /* CPUbNóÔÈçJ[lÇOáOÖ */
+	beq   core_nonkernel_exc_entry
+
+
+
+	/*
+	 * X^bNðÏX·éKvª é©`FbN
+	 * EXC_RETURNiÝÉLRÉÝè³êéljð`FbNµÄCáO­¶É
+	 * ANeBuÈX^bNðÁè·é±ÆÅ½dÝ©»è·éD
+	 */
+	tst   lr, #EXC_RETURN_PSP    /* Ý³ªMSPÈç½dÝ */
+	beq   core_exc_entry_1       /* ½dÝÈçcore_exc_entry_1Ö */
+	mrs   r0, psp                /* êiÚÌÝÌêÍPSPãÉ */
+#ifdef OLD_STMFD_INST
+	stmfd r0!,{r2}               /* Ý­¶ÌÝDæx}XNðÏÞ */
+	stmfd r0!,{lr}               /* EXC_RETURN ðÏÞ             */
+#else
+	str   r2, [r0, #-0x04]!
+	str   lr, [r0, #-0x04]!
+endif
+	msr   psp, r0                /* CPUáOnhÖÌøÆÈé */
+	push  {lr}                   /* MSPãÉàEXC_RETURN ðÏÞ    */ 
+	b     core_exc_entry_2
+core_exc_entry_1:                /* ½dÝÌê */
+	push  {r2}                   /* Ý­¶ÌÝDæx}XNðÏÞ */
+	push  {lr}                   /* EXC_RETURN ðÏÞ             */ 
+	mov   r0, sp                 /* CPUáOnhÖÌøÆÈé */
+
+	/*
+	 *  ¤Ê
+	 */
+core_exc_entry_2:                     
+	mrs   r3, ipsr               /* nhAhXðæ¾ */
+	ldr   r1, =_kernel_exc_tbl
+	ldr   r2, [r1, r3, lsl #2]
+
+#ifdef LOG_EXC_ENTER
+	push  {r0,r2,r3}
+	mov   r0, r3                 /* áOÔðp[^É  */
+	bl    log_exc_enter          /* log_exc_enterðÄÑo· */
+	pop   {r0,r2,r3}
+	push  {r3}                   /* áOÔðX^bNÖ    */
+#endif /* LOG_EXC_ENTER */
+
+	/*
+	 *  CPUáOnhÌÄÑoµ
+	 */
+	blx   r2
+
+#ifdef LOG_EXC_ENTER
+	pop   {r0}                   /* áOÔðøÉ        */
+	bl    log_exc_leave          /* log_exc_leaveðÄÑo· */
+#endif /* LOG_EXC_ENTER */
+
+	b     ret_exc
+
+/*
+ *  J[lÇOÌCPUáOÌoüû
+ */
+core_nonkernel_exc_entry:
+	tst   lr, #EXC_RETURN_PSP    /* Ý³ªMSPÈç½dÝ */
+	beq   core_nonkernel_exc_entry_1  /* ½dÝÈç */
+	mrs   r0, psp                /* êiÚÌÝÌêÍPSPãÉ */
+#ifdef OLD_STMFD_INST
+	stmfd r0!,{r2}               /* Ý­¶ÌÝDæx}XNðÏÞ */
+	stmfd r0!,{lr}               /* EXC_RETURN ðÏÞ             */
+#else
+	str   r2, [r0, #-0x04]!
+	str   lr, [r0, #-0x04]!
+#endif
+	msr   psp, r0                /* CPUáOnhÖÌøÆÈé */
+	push  {lr}                   /* MSPãÉàEXC_RETURN ðÏÞ    */ 
+	b     core_nonkernel_exc_entry_2
+core_nonkernel_exc_entry_1:      /* ½dÝÌê */
+	push  {r2}                   /* Ý­¶ÌÝDæx}XNðÏÞ */
+	push  {lr}                   /* EXC_RETURN ðÏÞ             */ 
+	mov   r0, sp                 /* CPUáOnhÖÌøÆÈé */
+
+core_nonkernel_exc_entry_2:
+	mrs   r3, ipsr               /* CPUáOnhÌAhXðæ¾ */
+	ldr   r1, =_kernel_exc_tbl
+	ldr   r2, [r1, r3, lsl #2]
+
+	/*
+	 *  CPUáOnhÌÄÑoµ
+	 */
+	blx   r2
+
+	/*
+	 *  ÝbNóÔÆ·éD
+	 */
+	cpsid f
+
+	/*
+	 *  ßèæÌReLXgÌ»è
+	 * 
+	 *  ÝnhÀsÉLRÉZbg³êéEXC_RETURNð`FbNµÄCßè
+	 *  æÅMSPªgíêÄ¢êÎCÝæªñ^XNReLXgÆ»è·éD
+	 */
+	pop   {r3}                     /* lrðX^bN©çæ¾         */
+	tst   r3, #EXC_RETURN_PSP      /* ßèæªPSPÈç              */
+	bne   nonkernel_ret_exc_1
+	pop   {r1}                     /* ³ÌÝDæx}XN(basepri) */
+	b     nonkernel_ret_exc_2 /* ÌlðMSP©çæ¾ */
+
+nonkernel_ret_exc_1:
+	/*
+	 *  PSPã©çEXC_RETURNðí
+	 */
+	mrs   r2, psp
+	add   r2, r2, #4
+	/*
+	 *  ³ÌÝDæx}XN(basepri)ÌlðPSP©çæ¾
+	 */
+	ldmfd r2!, {r1} 
+	msr   psp, r2
+
+nonkernel_ret_exc_2:
+	msr   basepri, r1             /* ÝDæx}XNðÝOÉóÔÖ */
+	bx    r3                      /* ^[ */
+
+/*
+ *  ÝGg
+ */
+	PUBLIC  core_int_entry
+        IMPORT  _kernel_exc_tbl
+        IMPORT  log_inh_enter
+        IMPORT  log_exc_leave
+        IMPORT  reqflg
+        IMPORT  lock_flag
+        IMPORT  saved_iipm
+        IMPORT  p_runtsk
+        IMPORT  dspflg
+        IMPORT  p_schedtsk
+        IMPORT  _kernel_int_iipm_tbl
+	SECTION .text : CODE (2)
+	THUMB
+core_int_entry:
+	/*
+	 *  Ý­¶ÌÝDæx}XNðX^bNÉÛ¶·é½ßæ¾
+	 */
+	mrs   r2, basepri             /* baepriÌlðæ¾ */
+
+	/*
+	 * ½dÝ©`FbN
+	 * EXC_RETURNiÝÉLRÉÝè³êéljð`FbNµÄCáO­¶É
+	 * ANeBuÈX^bNðÁè·é±ÆÅ½dÝ©»è·éD
+	 */
+	tst   lr, #EXC_RETURN_PSP    /* Ý³ªMSPÈç½dÝ */
+	beq   core_int_entry_1            /* ½dÝÈçcore_int_entry_1Ö    */
+	mrs   r0, psp                /* êiÚÌÝÌêÍPSPãÉ */
+#ifdef OLD_STMFD_INST
+	stmfd r0!,{r2}               /* Ý­¶ÌÝDæx}XNðÏÞ */
+	stmfd r0!,{lr}               /* EXC_RETURN ðÏÞ             */
+#else
+	str   r2, [r0, #-0x04]!
+	str   lr, [r0, #-0x04]!
+#endif
+	msr   psp, r0                /* CPUáOnhÖÌøÆÈé */
+	push  {lr}                   /* MSPãÉàEXC_RETURN ðÏÞ    */ 
+	b     core_int_entry_2
+core_int_entry_1:                     /* ½dÝÌê */
+	push  {r2}                   /* Ý­¶ÌÝDæx}XNðÏÞ */
+	push  {lr}                   /* EXC_RETURN ðÏÞ             */ 
+	mov   r0, sp                 /* ¢è`ÌÝª­¶µ½êÌîñÆ·é */
+
+	/*
+	 *  ¤Ê
+	 */
+core_int_entry_2:                     
+	mrs   r3, ipsr               /* nhAhXðæ¾ */
+	ldr   r1, =_kernel_exc_tbl
+	ldr   r2, [r1, r3, lsl #2]
+
+	/*
+	 *  basepriÌÝè
+	 *  NVICDæx}XNª©®IÉÝè³êé½ßDæx}XNÌ_ÅÍKvÈ
+	 *  ¢ªCx_get_ipm()ªbasepriðQÆ·é½ßCbasepriàXV·éD
+	 */
+	ldr   r1, =_kernel_int_iipm_tbl
+	ldr   lr, [r1, r3, lsl #2]
+	msr   basepri, lr
+
+#ifdef LOG_INH_ENTER
+	push  {r0,r2,r3}
+	mov   r0, r3                 /* áOÔðp[^É  */
+	bl    log_inh_enter          /* log_exc_enterðÄÑo· */
+	pop   {r0,r2,r3}
+	push  {r3}                   /* áOÔðX^bNÖ    */
+#endif /* LOG_INH_ENTER */
+
+	/*
+	 *  ÝnhÌÄÑoµ
+	 */
+	blx   r2
+
+#ifdef LOG_INH_LEAVE
+	pop   {r0}                   /* áOÔðøÉ        */
+	bl    log_exc_leave          /* log_exc_leaveðÄÑo· */
+#endif /* LOG_INH_LEAVE */
+
+
+
+/*
+ *  Ý/áOoû
+ *
+ *  ret_exc/ret_intÍCCPUáO/Ýnh©çßÁ½¼ãÉÀs·é
+ *  [`Å éD
+ */
+ret_exc:
+ret_int:
+	/*
+	 *  ÝbNóÔÆ·éD±Ì_ÅÍCCPUbNóÔÉÍÈçÈ¢
+	 * ibasepriÆlock_flagÆsaved_iipmÍXVµÈ¢jD
+	 *
+	 *  ÝbNóÔÆ·éÌÍCßèæÌReLXgÌ`FbNÆC
+	 *  ßèæªñ^XNReLXgÅ Á½êÌ^[ðAg~bN
+	 *  És¤½ßÅ éDbsepriðCPUbNÌlÉ·é±ÆÅàAg~b
+	 *  NÈ`FbNÆAÍÂ\Å éªCÝ©ç^[µÄàC
+	 *  basepri ÌÝèàeÍ³ÉßçÈ¢½ßCgp·é±ÆªÅ«È¢D 
+	 *  êûCFAULTMASKÍCÝ©çÌ^[ÉæÁÄC'0'ÉN
+	 *  A³êéD
+	 */
+	cpsid f                        
+
+	/*
+	 *  ßèæÌReLXgÌ»è
+	 * 
+	 *  ÝnhÀsÉLRÉZbg³êéEXC_RETURNð`FbNµÄCßè
+	 *  æÅMSPªgíêÄ¢êÎCÝæªñ^XNReLXgÆ»è·éD
+	 */
+	pop   {r3}                     /* lrðX^bN©çæ¾         */
+	tst   r3, #EXC_RETURN_PSP      /* ßèæªPSPÈç ret_int_1 Ö */
+	bne   ret_int_1
+	pop   {r1}                     /* ³ÌÝDæx}XN(basepri)ðr1Ö */
+	b     ret_int_2                /* ÌlðMSP©çæ¾ */
+
+	/*
+	 *  êiÚÌÝÌoû
+	 */
+ret_int_1:
+	/*
+	 *  PSPã©çCEXC_RETURN(r0)Æ³ÌÝDæx}XN(basepri)(r1)
+	 *  ðæ¾
+	 */
+	mrs   r2, psp
+	ldmfd r2!, {r0,r1} 
+	msr   psp, r2
+
+	/*
+	 *  reqflgð`FbN·é
+	 * 
+	 *  J[lÇàÌÝÍÖ~µ½óÔÅÀs·éKvª é½ßC
+	 *  FAULTMASKð'1'Éµ½óÔÅÀs·éD
+	 *  reqflgð`FbN·éOÉÝðÖ~·éÌÍCreqflgð`FbN
+	 *  µ½¼ãÉÝnhªN®³êC»ÌÅfBXpb`ªv
+	 *  ³ê½êÉC·®ÉfBXpb`³êÈ¢Æ¢¤âèª¶¶é½ß
+	 *  Å éD
+	 */
+	ldr   r0, =reqflg             /* reqflgªfalseÈç»ÌÜÜßé */
+	ldr   r2, [r0]
+	cbnz  r2, ret_int_3           /* trueÈçret_int_3Ö           */
+
+ret_int_2:
+	/*
+	 *  ±±ÉÍÝbNóÔiFAULTMASKªZbgj³ê½óÔÅéD
+	 *  Thread[h©çÌ^[Éæè©®IÉÝbNðóÔÉÈéD
+	 *  ÝDæx}XNÍÝOÉóÔÉß·D
+	 */ 
+	msr   basepri, r1             /* ÝDæx}XNðÝOÉóÔÖ */
+	bx    r3                      /* ^[ */
+
+
+ret_int_3:
+	/*
+	 *  ±±ÅÍCßèæª^XNÅ èCPSPãÉXNb`WX^Æ
+	 *  ÝDæx}XN(basepri)ªÛ¶³ê½óÔÉÈÁÄ¢éDÜ½C
+	 *  vZbTÍCHandler[hEÝbNóÔÆÈÁÄ¢éD
+	 *  Ü½Cr0ÉÍCreqflgÌAhXCr3ÉÍÝótÌlrÌlªÛ
+	 *  ³êÄ¢éD
+	 */
+	/*
+	 *  ^XNáOnhâfBXpb`ð·éÛÉThread[hÖJÚ·é
+	 *  _~[ÌX^bNt[ðì¬µÄCbx½ßÅHandler[h©ç
+	 *  ^[·éDÜ½CxfBXpb`·éêàCÄÑèñ¾^X
+	 *  NÉßéÛÉÍCsvc½ßÅCsvc_handlerðÄÑo·D
+	 *  X^bNt[ÍCConfigureation and Control Register(CCR)Ì
+	 *  STKALIGNª'1'ÌêÍC8byte«EÉAC³êéD
+	 *  Ql : DDI0403B_arm_architecture_v7m_reference_manual(P.220)
+	 *  »Ì½ßC±Ì_ÌX^bNÍÝâáO­¶Éì¬³ê½
+	 *  X^bNt[©çC8byte«EÌTCYÉµÄ¨­ÆCsvc_handler
+	 *  ÅX^bNt[ÌACgÌL³ÌmFðÈªÅ«éD
+	 *  ½¾µCVXeN®ãÍC®IÉCCRÌSTKALIGNÌÝèðÏX·éÌÍ
+	 *  Ö~Æ·éD
+	 *  ±Ì_ÍWÌX^bNt[ÍCÝEáO­¶Æ¯Å 
+	 *  é½ßC^XNX^bN(PSP)Í8byte«EÉÈÁÄ¢éD
+	 */
+	mov   r1, #0                   /* reqflgðfalseÉ */
+	str   r1, [r0]
+
+	/*
+	 *  CPUbNóÔÉÚs·éD
+	 *
+	 *  J[lÌÇàÌÝðÖ~·éæ¤ÉbasepriðÝèµC
+	 *  lock_flag Æ saved_iipm ðXV·éDsaved_iipmÍCßèæÌÝ
+	 *  Dæx}XNiÌà\»jÉÝè·éD
+	 *  ±Ì_ÅCPUbNóÔÆ·éÌÍCdispatcherÖªò·éÆC
+	 *  call_texrtnðÄÑo·ÉCCPUbNóÔÉÈÁÄ¢éKvª é
+	 *  ½ßÅ éD
+     *  È¨C±ÌÌãCThread[hÖÌÚsðsÈ¤½ßCÝ
+     *  bNóÔ(FAULTMASKð"1")ÍÛ·éD
+	 */
+	ldr   r1, =IIPM_LOCK          /* CPUbNóÔ */ 
+	msr   basepri, r1          
+	mov   r1, #0x01               /* lock_flag ð trueÉ */
+	ldr   r0, =lock_flag          
+	str   r1, [r0]
+
+	/*
+	 *  ÝDæx}XNðCSðóÔiTIPM_ENAALLjÉÝè·é
+	 *  ·ÅÉCPUbNóÔÈÌÅCsaved_iipmðIIPM_ENAALLÆ·éD
+	 */
+	ldr   r1, =IIPM_ENAALL
+	ldr   r0, =saved_iipm         /* saved_iipmÉÛ¶ */
+	str   r1, [r0]
+
+	/*
+	 *  Thread[hÖÚs·éD
+	 *
+	 *  dispatcherâcall_texrnðÄÑo·êÍCThread[hÅ éK
+	 *  vª é½ßCPSPX^bNãÉ_~[ÌáOt[ðu¢ÄC
+	 *  [IÉÝnh©ç^[·éD
+	 *  ^[Æ¯ÉFAULTMASKª©®IÉNA³êCJ[lÇOÌ
+	 *  ÝªÂ³êéD
+	 */
+	ldr   r0, =ret_int_4          /* PC   */
+	ldr   r1, =EPSR_T             /* xPSR(Trbgª'1'Å éKvª é) */
+	mrs   r2, psp
+	stmfd r2!, {r0-r1}            /* _~[t[ðX^bNãÉÏÞ   */
+	/*sub   r2, r2, #(EXC_FRAME_SIZE - (4*2)) /* r0-r3,r12,lrÌàeÍÝè·éKvªÈ¢ */
+        subs   r2, #(EXC_FRAME_SIZE - (4*2)) /* r0-r3,r12,lrÌàeÍÝè·éKvªÈ¢ */
+	msr   psp,r2                  
+	bx    r3                      /* Thread[hÖÚs */
+    
+ret_int_4:
+	/*
+	 *  ãLÌÉæèCThread[hÅÀs³êéD
+	 *  dspflgªfalseÅ éêÆCp_runtskÆp_schedtskª¯¶êÉÍC
+	 *  fBXpb`ðsíÈ¢D±Ì`FbNªKvÈÌÍC^XNáO
+	 *  [`ÌÄoµªKvÈêÉCfBXpb`ªKvÈ­ÄàC
+	 *  reqflgðtrueÉ·é½ßÅ éD
+	 */
+	ldr   r0, =p_runtsk       /* fBXpb`ðsíÈ¢êÅàCr1Ép_runtsk Ìl(TCB) */
+	ldr   r1, [r0]            /* ªüÁÄ¢éKvª éÌÅCæÉÇÝÞ */
+	ldr   r0, =dspflg         
+	ldr   r2, [r0]
+	cbz   r2, ret_int_r_1     /* dspflgªfalseÈçret_int_r_1Ö */
+	ldr   r0, =p_schedtsk     
+	ldr   r2, [r0]
+	cmp   r1, r2              /* p_runtskÆp_schedtskª¯¶Èç */
+	beq   ret_int_r_1         /*                  ret_int_r_1Ö */
+	stmfd sp!, {r4-r11}       /* cèÌWX^ðÛ¶ */
+	str   sp, [r1,#TCB_sp]    /* ^XNX^bNðÛ¶ */
+	ldr   lr, =ret_int_r      /* ÀsÄJÔnðÛ¶   */
+	str   lr, [r1,#TCB_pc]
+	b     dispatcher          /* fBXpb`Ö */
+
+/*
+ * ÝÉæèvGvg³ê½^XNÖÌ^[
+ *
+ * Thread[hÅCfBXpb`âÝÌoû©çÄÑo³êéD
+ * ÝÉæèvGvg³ê½^XNÖ^[·éÉÍC¢Á½ñ
+ * Handler[hÉÚsµCPCÉ0xfffffffdðãüµÄ^[·éKv
+ * ª éD»Ì½ßCSVCÉæèCSVCnhðÄÑoµCHandler[
+ * hÖÚs·éD
+ */
+	SECTION .text : CODE (2)
+	THUMB
+ret_int_r:
+	pop {r4-r11}                  /* WX^ÌA */
+ret_int_r_1:
+	/*
+	 *  enatexªtrueÅCtexptnª0ÅÈ¯êÎC^XNáO[`ð
+	 *  ÄÑo·D
+	 *  dispatcher©çÄÑo³êé½ßCTCBÌAhXÍr1ÉüÁÄ¢é
+	 */
+	ldrb  r0, [r1,#TCB_enatex]
+	tst   r0, #TCB_enatex_mask
+	beq   ret_int_r_2           /* enatex ª false Èç ret_int_r_2Ö */
+	ldr   r0, [r1,#TCB_texptn]  /* texptnð[h                     */
+	cbz   r0, ret_int_r_2       /* '0'Èç^[ */
+	ldr   r1, =ipmflg             /* ipmflgª false Èç^[  */
+	ldr   r0, [r1]
+	cbz   r0, ret_int_r_2	
+	bl    call_texrtn           /* ^XNáO[`ÌÄÑoµ */
+ret_int_r_2:
+	svc   0                     /* SVCÌÄÑoµ */
+
+/*
+ *  SVCnh
+ */
+	PUBLIC  svc_handler
+        IMPORT  lock_flag
+
+	SECTION .text : CODE (2)
+	THUMB
+svc_handler:
+	/*
+	 *  Ý©çÌ^[ÉæèCCPUbNðóÔÉÚs·éæ
+	 *  ¤õ·éD
+	 */
+	cpsid f                       /* ÝbNóÔÖ */
+	mrs   r0, psp
+	/*add   r0, r0, #EXC_FRAME_SIZE     /* X^bNðÌÄé   */
+        adds   r0, #EXC_FRAME_SIZE     /* X^bNðÌÄé   */
+	msr   psp, r0
+	mov   r0, #0
+	ldr   r1, =lock_flag          /* CPUbNðóÔÖ */
+	str   r0, [r1]
+	ldr   r1, =IIPM_ENAALL        /* ÝDæx}XNðSðóÔÉÝè */
+	msr   basepri, r1             /* ÝDæx}XNðÝè           */
+	bx    lr                      /* ^[     */
+
+/*
+ *  fBXpb`Ì®ìJn
+ */
+	PUBLIC  start_dispatch
+        IMPORT  istkpt
+
+	PUBLIC  exit_and_dispatch
+        IMPORT  p_runtsk
+        IMPORT  log_dsp_enter
+        IMPORT  p_schedtsk
+        IMPORT  log_dsp_leave
+        IMPORT  reqflg
+        IMPORT  lock_flag
+        IMPORT  saved_iipm
+
+	SECTION .text : CODE (2)
+	THUMB
+start_dispatch:
+	/*
+	 *  ±Ì[`ÍCJ[lN®ÉC·×ÄÌÝðÖ~µ½óÔ
+	 * iÝbNóÔÆ¯jÅÄÑo³êéDÜ½CÝ[hiñ
+	 *  ^XNReLXgÆ¯jÅÄÑo³êé±ÆðzèµÄ¢éD
+	 *
+	 *  prc_initializeÅClock_flagðtrueÉCsaved_iipmðIIPM_ENAALLÉ
+	 *  ú»µÄ¢é½ßCJ[lÇOÌÝðÂ·é±ÆÅC
+	 *  CPUbNóÔEifãÌjÝDæx}XNSðóÔÉÈéD
+	 *  Ü½Ctask_initializeÅdisdspðfalseÉú»µÄ¢é½ßCfB
+	 *  Xpb`ÂóÔÉÈÁÄ¢éD
+	 */
+	ldr   r0,=istkpt              /* MSPðú»   */
+	ldr   r1,[r0]                 /* start_dispatchÄÑoµÉÄÑoµpÉ */
+	msr   msp, r1                 /* gpµÄ¢é½ßú»·é             */
+	ldr   r1, =IIPM_LOCK          /* J[lÇàÌÝðÖ~ */
+	msr   basepri, r1 
+	cpsie f                       /* J[lÇOÌÝðÂ */
+	mov   r0, #CONTROL_PSP        /* PSPðLøÉ  */
+	msr   control, r0
+	isb                           /* control ÌìãÉKv */
+
+/*
+ *  »ÝÌReLXgðÌÄÄfBXpb`
+ */
+exit_and_dispatch:
+	/* fBXpb`{ÌidispatcherjÖ */ 
+
+
+/*
+ *  fBXpb`{Ì
+ */
+dispatcher:
+	/*
+	 *  ±Ì[`ÍC^XNReLXgECPUbNóÔEfBXpb`
+	 *  ÂóÔEifãÌjÝDæx}XNSðóÔÅÄÑo³
+	 *  êéD
+	 *
+	 *  ·Èí¿CThread[hElock_flagªtrueEdisdspªfalseEdspflg
+	 *  ªtrueEsaved_iipmªIIPM_ENAALLÆÈÁÄ¢éDÀsÄJÔnÖà±
+	 *  ÌóÔÌÜÜªò·éD
+	 */
+#ifdef LOG_DSP_ENTER
+	ldr   r1, =p_runtsk     /* p_runtskðp[^É */
+	ldr   r0, [r1]        
+	bl    log_dsp_enter
+#endif /* LOG_DSP_ENTER */
+dispatcher_0:
+	ldr   r0, =p_schedtsk   /* p_schedtskðp_runtskÉ */
+	ldr   r1, [r0]
+	ldr   r2, =p_runtsk   
+	str   r1, [r2]        
+	cbz   r1, dispatcher_1  /* p_runtsk¤¬NULL¤Ê¤édispatcher_1¤Ø */           
+	ldr   sp, [r1,#TCB_sp]  /* ^XNX^bNðA */
+#ifdef LOG_DSP_LEAVE
+	mov   r0, r1            /* p_runtskðp[^É */
+	mov   r4, r1            /* r1ÍXNb`WX^ÈÌÅÛ¶ */
+	bl    log_dsp_leave
+	mov   r1, r4
+#endif /* LOG_DSP_LEAVE */
+	ldr   pc, [r1,#TCB_pc]  /* ÀsÄJÔnðA   */    
+dispatcher_1:
+	/*
+	 * CPUbNóÔÌðÆCñ^XNReLXgÀsóÔÖÌ
+	 * õð·é
+	 */
+	mov   r0, #CONTROL_MSP  /* MSPðLøÉ  */
+	msr   control, r0       
+	isb                     /* control ÌìãÉKv */
+	/*--> ldr   r2, =reqflg       /* r2 <- reqflg */
+	/*--> ldr   r1, =IIPM_LOCK    /* ÝbNóÔÌÝDæx}XNÌl */
+	/*--> mov   r0, #0 */
+	/*--> ldr   r4, =lock_flag    /* CPUbNðóÔÖ */
+	/*--> str   r0, [r4] */
+      	mov   r4, #0            /* r4 <- '0' */
+	ldr   r5, =IIPM_LOCK    /* r5 <- ÝbNóÔÌÝDæx}XNÌl */
+	ldr   r6, =reqflg       /* r6 <- reqflg */
+	ldr   r7, =lock_flag    /* r7 <- lock_flg */
+	str   r4, [r7]          /* CPUbNðóÔÖ */
+dispatcher_2:
+	/*
+	 *  ÝðÂµCñ^XNReLXgÀsóÔÆµÝðÒÂD
+	 *
+	 *  ±±Åñ^XNReLXgÀsóÔÉØè·¦éÌÍC±±Å­¶
+	 *  ·éÝÉÇÌX^bNðg¤©Æ¢¤âèÌðÆCÝ
+	 *  nhàÅÌ^XNfBXpb`Ìh~Æ¢¤2ÂÌÓ¡ª éD
+	 *
+	 *  vZbTðÝÒ¿ÉÚs³¹éÆCÝÂÆÍCsÂ
+	 *  ªÉsÈ¤Kvª éD
+	 *  ±êðsÂªÉsÈíÈ¢êCÝðÂµ½¼ãÉ
+	 *  ÝªüèC»ÌÅ^XNªÀsÂ\óÔÉÈéÆCÀs·×«^X
+	 *  Nª éÉà©©íç¸vZbTªÝÒ¿ÉÈÁÄµÜ¤D
+	 *  ARM-MÅÍCPRIMASKðZbgµ½óÔÅWFIðÄÑo·±ÆÅÀ»Å«éD
+	 *  ±ÌóÔÅÝªüéÆCÝÍÀs³ê¸CWFI©ç^[·
+	 *  é±ÆÉÈéÌÅCêUÝðÂµÄÝnhðÀs·éD
+	 *
+	 *  ÝÒ¿ÌÔÍCp_runtskðNULLi0jÉÝèµÈ¯êÎÈçÈ
+	 *  ¢D±Ìæ¤ÉÝèµÈ¢ÆCÝnh©çiget_tidðÄÑo
+	 *  µ½ÛÌ®ìªdlÉvµÈ­ÈéD
+	 *
+	 */
+#ifdef TOPPERS_CUSTOM_IDLE
+	toppers_asm_custom_idle
+#else
+	cpsid i               /* PRIMASK ðZbg */
+	/*--> msr   basepri, r0     /* SÝÂ */ 
+	/*--> wfi */
+	/*--> cpsie i               /* PRIMASK ðNAiÝðó¯t¯éj */
+	/*--> msr   basepri, r1     /* CPUbNóÔÖ */ 
+	msr   basepri, r4     /* SÝÂ */ 
+	wfi
+	cpsie i               /* PRIMASK ðNAiÝðó¯t¯éj */
+	msr   basepri, r5     /* CPUbNóÔÖ */ 
+        
+#endif /* TOPPERS_CUSTOM_IDLE */
+
+	/*--> ldr   r6, [r2]        /* reqflgªfalseÈçdispatcher_2Ö */
+	/*--> cmp   r6, #0  */
+	/*--> beq   dispatcher_2 */
+	/*--> str   r0, [r2]        /* reqflgðfalseÉ */
+        ldr   r0, [r6]        /* reqflgªfalseÈçdispatcher_2Ö */
+	cmp   r0, #0
+	beq   dispatcher_2
+	str   r4, [r6]        /* reqflgðfalseÉ */
+
+	/*
+	 *  CPUbNóÔÉß·DÝÒ¿ÌÔÉÀsµ½ÝnhÉæ
+	 *  èCsaved_iipmª«·¦çêéÂ\«ª é½ßC³ÌlÉß·K
+	 *  vª éDdispatcherªÀs³êéÍCsaved_iipmªIIPM_ENAALL
+	 *  ÆÈÁÄ¢é½ßC±±ÅÍsaved_iipmðIIPM_ENAALLi0jÉß¹
+	 *  Îæ¢D
+	 */
+	mov   r0, #CONTROL_PSP  /* PSPðLøÉ  */ 
+	msr   control, r0      
+	isb                     /* control ÌìãÉKv */
+	/*--> mov   r2, #1            /* lock_flagðtrueÖ */
+	/*--> ldr   r4, =lock_flag  
+	/*--> str   r2, [r4]
+	/*--> ldr   r4, =saved_iipm   /* saved_iipm ð0É */
+	/*--> mov   r0, #0
+	/*--> str   r0, [r4]
+	/*--> b     dispatcher_0  */
+        mov   r2, #1            /* lock_flagðtrueÖ */
+	str   r2, [r7]
+	ldr   r0, =saved_iipm   /* saved_iipm ð0É */
+	str   r4, [r0]
+	b     dispatcher_0
+
+
+/*
+ *  J[lÌI¹ÌÄoµ
+ *
+ *  X^bNðñ^XNReLXgpÉØèÖ¦D
+ *  
+ */
+	PUBLIC  call_exit_kernel
+        IMPORT  exit_kernel
+
+	SECTION .text : CODE (2)
+	THUMB
+call_exit_kernel:
+	mov   r0, #CONTROL_MSP
+	msr   control, r0       /* MSPðLøÉ  */
+	isb                     /* control ÌìãÉKv */
+	/*--> b     exit_kernel       /* J[lÌI¹ðÄÔ */
+	ldr   r0, =exit_kernel  /* J[lÌI¹ðÄÔ */
+	bx    r0
+
+/*
+ *  ^XNN®
+ *
+ *  dispatcher©çÄÑo³êé½ßCTCBÌAhXÍr1ÉüÁÄ¢é
+ *
+ */ 
+	PUBLIC  start_r
+        IMPORT  lock_flag
+        IMPORT  ext_tsk
+
+	SECTION .text : CODE (2)
+	THUMB
+start_r:
+	mov   r0, #0
+	ldr   r4, =lock_flag                    /* CPUbNðóÔÖ */
+	str   r0, [r4]
+	msr   basepri, r0                       /* ÝÂ   */
+	ldr   lr, =ext_tsk                      /* ßèÔnÝè */
+	ldr   r2, [r1, #TCB_p_tinib]            /* p_runtsk->p_tinibðr2É  */
+	ldr   r0, [r2, #TINIB_exinf]            /* exinfðøWX^r0É  */
+	ldr   r1, [r2, #TINIB_task]             /* ^XNN®ÔnÉWv */
+	/*mov   pc, r1 */
+        bx      r1
+
+/*
+ *  ÷­ÔÒ¿
+ */
+	PUBLIC  sil_dly_nse
+
+	SECTION .text : CODE (2)
+	THUMB
+sil_dly_nse:
+	sub   r0, r0, #SIL_DLY_TIM1
+	cmp   r0, #0
+	bgt   sil_dly_nse1
+	/*mov   pc, lr*/
+        bx     lr
+sil_dly_nse1:
+	sub   r0, r0, #SIL_DLY_TIM2
+	cmp   r0, #0
+	bgt   sil_dly_nse1
+	/*mov   pc, lr*/
+        bx    lr
+
+	END
+  
Index: /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_test.h
===================================================================
--- /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_test.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_test.h	(revision 61)
@@ -0,0 +1,58 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *		eXgvOÌ`bvË¶è`iARM-Mpj
+ */
+
+#ifndef TOPPERS_CHIP_TEST_H
+#define TOPPERS_CHIP_TEST_H
+
+/*
+ *  `bvÅ¤ÊÈè`
+ */
+#define CPUEXC1				6		/* Usage Fault */
+#define RAISE_CPU_EXCEPTION Asm("mcr p15, 0, r1, c2, c0, 0");
+#define CANNOT_RETURN_CPUEXC
+
+#endif /* TOPPERS_CHIP_TEST_H */
Index: /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_timer.c
===================================================================
--- /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_timer.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_timer.c	(revision 61)
@@ -0,0 +1,113 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *  ^C}hCoiSYSTICpj
+ */
+#include <sil.h>
+#include "kernel_impl.h"
+#include "time_event.h"
+#include "target_timer.h"
+
+/*
+ *  ^C}ÌN®
+ */
+void
+target_timer_initialize(intptr_t exinf)
+{
+	CLOCK    cyc;
+	uint32_t tmp;
+
+#ifdef SYSTIC_USE_CALIBRATION
+	/* CALIBRATIONWX^Ìlðgp */
+	cyc = (sil_rew_mem((void *)SYSTIC_CALIBRATION) & SYSTIC_TENMS) / 10;
+#else 
+	cyc = TO_CLOCK(TIC_NUME, TIC_DENO) - 1;
+#endif /* SYSTIC_USE_CALIBRATION */
+
+	/* â~ */
+	tmp = sil_rew_mem((void *)SYSTIC_CONTROL_STATUS);
+	tmp &= ~SYSTIC_ENABLE;
+	sil_wrw_mem((void *)SYSTIC_CONTROL_STATUS, tmp);
+
+	sil_wrw_mem((void *)SYSTIC_RELOAD_VALUE, cyc);
+	sil_wrw_mem((void *)SYSTIC_CURRENT_VALUE, cyc);
+
+	tmp = sil_rew_mem((void *)SYSTIC_CONTROL_STATUS);
+
+#ifdef SYSTIC_USE_STCLK
+	/* ONbNÌgp */
+	tmp |= SYSTIC_ENABLE;
+#else
+	/* vZbTNbNÌgp */
+	tmp |= SYSTIC_ENABLE|SYSTIC_CLKSOURCE;
+#endif /* SYSTIC_USE_STCLK */
+
+	sil_wrw_mem((void *)SYSTIC_CONTROL_STATUS, tmp);
+}
+
+/*
+ *  ^C}Ìâ~
+ */
+void
+target_timer_terminate(intptr_t exinf)
+{
+	/* ^C}ðâ~ */
+	sil_wrw_mem((void*)SYSTIC_CONTROL_STATUS, 0x00);
+}
+
+/*
+ *  ^C}Ýnh
+ */
+void
+target_timer_handler(void)
+{
+ 	uint32_t tmp;
+        
+	/* probe_int Ì½ßCCOUNTFLAGðNA */
+	tmp = sil_rew_mem((void *)SYSTIC_CURRENT_VALUE);
+
+	i_begin_int(INTNO_TIMER);
+	signal_time();                    /* ^CeBbNÌ */
+	i_end_int(INTNO_TIMER);
+}
Index: /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_timer.cfg
===================================================================
--- /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_timer.cfg	(revision 61)
+++ /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_timer.cfg	(revision 61)
@@ -0,0 +1,8 @@
+/*
+ *		^C}hCoÌRtBM
+[Vt@C
+ */
+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: /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_timer.h
===================================================================
--- /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_timer.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_timer.h	(revision 61)
@@ -0,0 +1,118 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *  ^C}hCoiSYSTICpj
+ */
+
+#ifndef TOPPERS_PRC_TIMER_H
+#define TOPPERS_PRC_TIMER_H
+
+#include <sil.h>
+
+/*
+ *  ^C}Ýnho^Ì½ßÌè
+ */
+#define INHNO_TIMER     IRQNO_SYSTICK /* ÝnhÔ */
+#define INTNO_TIMER     IRQNO_SYSTICK /* ÝÔ */
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  ^C}lÌà\»Ì^
+ */
+typedef uint32_t    CLOCK;
+
+/*
+ *  ^C}lÌà\»Æ~bEÊbPÊÆÌÏ·
+ *
+ */
+#define TO_CLOCK(nume, deno)    ((CLOCK)(TIMER_CLOCK * (nume) / (deno)))
+#define TO_USEC(clock)          (((SYSUTM) clock) * 1000U / TIMER_CLOCK)
+
+/*
+ *  ÝèÅ«éÅåÌ^C}üúiPÊÍà\»j
+ */
+#define MAX_CLOCK    ((CLOCK) 0x00ffffffU)
+
+/*
+ *  ^C}ÌN®
+ *
+ *  ^C}ðú»µCüúIÈ^C}Ývð­¶³¹éD
+ */
+extern void target_timer_initialize(intptr_t exinf);
+
+/*
+ *  ^C}Ìâ~
+ *
+ *  ^C}Ì®ìðâ~³¹éD
+ */
+extern void target_timer_terminate(intptr_t exinf);
+
+/*
+ *  ^C}Ì»ÝlÌÇoµ
+ */
+#pragma inline
+CLOCK
+target_timer_get_current(void)
+{
+	return(TO_CLOCK(TIC_NUME, TIC_DENO) - sil_rew_mem((void*)SYSTIC_CURRENT_VALUE));
+}
+
+/*
+ *  ^C}ÝvÌ`FbN
+ */
+#pragma inline
+bool_t
+target_timer_probe_int(void)
+{
+	return((sil_rew_mem((void*)SYSTIC_CONTROL_STATUS) & SYSTIC_COUNTFLAG) == SYSTIC_COUNTFLAG);
+}
+
+/*
+ *  ^C}Ýnh
+ */
+extern void target_timer_handler(void);
+
+#endif /* TOPPERS_MACRO_ONLY */
+#endif /* TOPPERS_PRC_TIMER_H */
Index: /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_unrename.h
===================================================================
--- /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_unrename.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_unrename.h	(revision 61)
@@ -0,0 +1,74 @@
+/* This file is generated from prc_rename.def by genrename. */
+
+/* This file is included only when prc_rename.h has been included. */
+#ifdef TOPPERS_PRC_RENAME_H
+#undef TOPPERS_PRC_RENAME_H
+
+/*
+ *  prc_config.c
+ */
+#undef exc_tbl
+#undef vector_table
+#undef lock_flag
+#undef saved_iipm
+#undef default_exc_handler
+#undef default_int_handler
+#undef x_config_int
+#undef prc_initialize
+#undef prc_terminate
+#undef bitpat_cfgint
+#undef set_exc_int_priority
+#undef enable_exc
+#undef disable_exc
+
+/*
+ *  prc_support.S
+ */
+#undef prc_int_entry
+#undef prc_exc_entry
+#undef ret_int
+#undef ret_exc
+#undef svc_handler
+#undef start_r
+#undef dispatch
+#undef start_dispatch
+#undef exit_and_dispatch
+#undef call_exit_kernel
+
+#ifdef TOPPERS_LABEL_ASM
+
+/*
+ *  prc_config.c
+ */
+#undef _exc_tbl
+#undef _vector_table
+#undef _lock_flag
+#undef _saved_iipm
+#undef _default_exc_handler
+#undef _default_int_handler
+#undef _x_config_int
+#undef _prc_initialize
+#undef _prc_terminate
+#undef _bitpat_cfgint
+#undef _set_exc_int_priority
+#undef _enable_exc
+#undef _disable_exc
+
+/*
+ *  prc_support.S
+ */
+#undef _int_entry
+#undef _exc_entry
+#undef _ret_int
+#undef _ret_exc
+#undef _svc_handler
+#undef _start_r
+#undef _dispatch
+#undef _start_dispatch
+#undef _exit_and_dispatch
+#undef _call_exit_kernel
+
+#endif /* TOPPERS_LABEL_ASM */
+
+
+#endif /* TOPPERS_PRC_RENAME_H */
Index: /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_user.txt
===================================================================
--- /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_user.txt	(revision 61)
+++ /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/prc_user.txt	(revision 61)
@@ -0,0 +1,182 @@
+=====================================================================
+                         ARM-MvZbTË¶
+                                  Last Modified: 30 Jan 2013 22:20:00
+=====================================================================
+
+
+(1) ÎµÄ¢é^[QbgVXeÌíÞE\¬
+
+ARM-MË¶ÍCARMVx-MA[LeN`ð^[QbgÆµÄ¢éDARMVx-MÍC
+ARMÆÍÙÈèCARM½ßðÀsÅ«È¢½ßCARMË¶Æª¯Ä¢éD
+
+
+(2) gp·éJ­Â«Æ®ìØµ½ðio[WCIvVj
+
+J[lÍEWARMt®ÌRpCðp¢ÄRpC·éD®ìmFµ½o[WÍ
+e^[QbgË¶ÌhL
+gÉLÚ·éD
+
+
+(3) ^[Qbgè`ÌKè
+
+(3-1) f[^^ÉÖ·éKè
+
+f[^^Í arch/gcc/tool_stddef.h Åè`³êÄ¢éàeÅCfloat^Æ
+double^ÍC»ê¼êIEEE754ÌP¸x®¬_Æ{¸x®¬_
+Å éD
+
+(3-2) ÝÉÖ·éKè
+
+ÝnhÔÆÝÔÌÄC¼ÒÌÎ
+
+ÝnhÔÆÝÔÍCáO­¶ÉIPSRÉZbg³êéáOÔ
+ðp¢éDSYSTICKÍ15ÔÅCOÝÍ16Ô©çÌÔªèt¯çê
+Ä¢éD
+
+ÝDæxÌiKiTMIN_INTPRIÌljC»ÌÝèû@
+
+ÝDæxÌiKÍCSoCÉn[hEFAIÉT|[g·éÝDæ
+xrbgªÙÈéÌÅC^[QbgË¶ÉÙÈéD^[QbgË¶Å
+ÍCÝDæxÌrbgiTBITW_IPRIjÆ»ÌÝDæxÌTuDæ
+xÌrbgiTBITW_SUBPRIjðè`·éDerbgÌlÆÝèÂ\ÈDæ
+xÌÍÍÍÌÊèÅ éD
+
+   -(2^(TBIW_IPRI)) + (2^TBITW_SUBIPRI)) ` -1
+
+á¦ÎDæxÌrbg(TBITW_IPRI)ª8bitCTuDæxÌrbg
+(TBITW_SUBIPRI) ª1bitÌêÍC-254 ` -1 ÌÍÍÅ éD
+
+±ÌÍÍÅCJ[lÇàÌÝÌÅDæxiTMIN_INTPRIjð^[Q
+bgË¶ÅÝè·éD
+
+eÝÌÝDæxÍCCFG_INTÅTMIN_INTPRIÈãÌlðwè·éD
+
+dis_intÆena_intÌT|[gÌL³C»Ì§À
+
+dis_intÆena_intðT|[g·éD§ÀÍÁÉÈ¢D
+
+CFG_INTÌ§ÀÆg£i^[Qbgè`ÅgpÅ«éÝ®«j
+
+CFG_INTÌ§ÀÍÈ­C^[Qbgè`ÅgpÂ\ÈÝ®«ÍÁÉÈ
+¢D
+
+J[lÇOÌÝ
+
+J[lÇOÌÝðT|[g·éDwèû@ÍCÝDæxÌiK
+Åwèµ½CT|[g·éÝDæxÌÅliÅ¬ljæèC
+TMIN_INTPRIðå«­Ýè·éÆCTMIN_INTPRIæèlª¬¢iDæxjÈ
+ÝDæxðÝèµ½ÝðÝDæxÆµÄµ¤D
+
+J[lÇOÌÝÍOSÀsàÖ~ÉÈé±ÆÍÈ­iµ§ÉÍÝ
+ÌoûÅ²­Z¢æÔÖ~³êéjCÝ­¶ÍCJ[lÌR[hðo
+R¹¸ÉÄÑo³êéD
+
+J[lÇOÌÝÉÎ·éCDEF_INH,CFG_INTÍT|[g·éD
+
+(3-3) CPUáOÉÖ·éKè
+
+CPUáOnhÔ
+
+CPUáOnhÔÆµÄÍCáO­¶ÉIPSRÉZbg³êéCáOÔ
+ðp¢éDeáOÌáOÔÍÈºÌÊèÅ éD
+
+        áO              áOÔ
+  Reset                      1
+  Non-makable Interrupt      2
+  Hard Fault                 3
+  Memory Management          4
+  Bus Fault                  5
+  Usage Fault                6
+  SVCall                    11
+  Debug Monitor             12
+  PendSV                    14
+
+È¨CResetÆCSVCallÉÂ¢ÄÍCJ[lªgp·é½ßC[U[Íg
+p·é±ÆªÅ«È¢D
+
+(3-4) CPUbNEÝbN
+
+CPUbNÍCbasepriðTMIN_INTPRIÌDæxÌÝðÖ~·élÉÝè·
+éDÝbNÍCFAULTMASKð'1'ÉÝè·é±ÆÅÀ»µÄ¢éD
+
+(3-5) «\]¿pVXeÌQÆÉÖ·éKè
+
+get_utmðT|[g·éD¸xÉÖµÄÍC^[QbgÉÙÈéD
+
+(3-6) X^[gAbv[`ÅÌú»àe
+
+X^[gAbv[`ÍCThread[hÅÄÑo³êé±ÆðOñÆµÄ¢
+éDÀsãCÝbNóÔiFAULTMASKðZbgjÆ·éDÝbN
+óÔÍCJ[lÌú»I¹ÉÂ·éDX^[gAbv[`ÅC
+MSPðANeBuÈX^bNÆµCMSPÌàeðú»·é½ßÉÍCINIT_MSP
+ð^[QbgË¶Åè`·éD
+
+(3-7) xN^e[uItZbgÌú»
+
+vZbTË¶Ìú»ÅCVector Table Offset Register ð^[Qb
+gË¶Ìú»[`ÅÝè·éDÈ¨CxN^[e[uÍC.vector
+ÌZNV®«ªtÁ³êÄ¢é½ßCJXNvgÅ±ÌZNV
+ðwèµÄzu·éD
+
+
+(4) ^C}hCoÖAÌîñ
+
+J[lÌ^CeBbNÆµÄCSYSTICðgp·éêÍCprc_config.c 
+ðRpCÎÛÆµCRtBM
+[Vt@CÉ prc_config.cfg 
+ðwè·é±ÆD
+
+üúÌî{Í1msecÆ·éDüúðCALIBRATIONWX^ÌÝèàeð³ÉvZ
+·éêÍCSYSTIC_USE_CALIBRATION ðè`·éDCALIBRATIONWX^ðp
+¢È¢êÍC1msecüúªÌJEglð TIMER_CLOCK ÉÝè·éDNb
+N\[XÆµÄCONbNðp¢éêÍCSYSTIC_USE_STCLK ðp¢éD
+
+
+(5) ^[QbgË¶ÅÌÝèÚ
+
+^[QbgË¶ÅÍÈºÌ}Nðè`·éKvª éD
+
+   ¥TMAX_INTNO     : ÝÔÌÅål(ÊíÌÝÔ + 15)
+   ¥TBITW_IPRI     : ÝDæxÌrbg
+   ¥TBITW_SUBIPRI  : ÝDæxÌrbgÌTuDæxÌrbg
+   ¥TMIN_INTPRI    : ÝDæxÌÅ¬liÅlj
+   ¥TIC_NUME       : ^CeBbNÌüúÌªq
+   ¥TIC_DENO       : ^CeBbNÌüúÌªê
+   ¥TIMER_CLOCK    : ^C}lÌà\»Æ~bPÊÆÌÏ·
+   ¥INTPRI_TIMER   : ^C}ÝÝDæx
+   ¥INTATR_TIMER   : ^C}ÝÌÝ®«
+   ¥INIT_MSP       : X^[gAbv[`ÅMSPðú»·éêÍè`
+   ¥DEFAULT_ISTKSZ : X^bNTCYi8bytePÊÅwèj
+   ¥SIL_DLY_TIM1   : ÷­ÔÒ¿Ì½ßÌè`
+   ¥SIL_DLY_TIM2   : ÷­ÔÒ¿Ì½ßÌè`
+
+
+(6) fBNg\¬Et@C\¬
+  ./arch/arm_m_iccarm/
+    ./arm_m.h
+    ./prc.tf
+    ./prc_cfg1_out.h
+    ./prc_check.tf
+    ./prc_config.c
+    ./prc_config.h
+    ./prc_def.csv
+    ./prc_design.txt
+    ./prc_insn.h
+    ./prc_kernel.h
+	./prc_offset.tf
+    ./prc_rename.def
+    ./prc_rename.h
+    ./prc_sil.h
+    ./prc_stddef.h
+    ./prc_support.S
+    ./prc_test.h
+    ./prc_timer.c
+    ./prc_timer.cfg
+    ./prc_timer.h
+    ./prc_unrename.h
+    ./prc_user.txt
+    ./start.S
+
+(12) o[Wð
+2013/01/31
+ EÅÌ[X
Index: /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/start.S
===================================================================
--- /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/start.S	(revision 61)
+++ /asp_ewarm/asp-1.7.0/arch/arm_m_iccarm/start.S	(revision 61)
@@ -0,0 +1,169 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+        NAME start
+/*
+ *   J[lpÌX^[gAbvW
+[(ARM-Mp)
+ */
+#define TOPPERS_MACRO_ONLY
+#define UINT_C(val)		(val)		/* uint_t^Ìèðìé}N */
+#define ULONG_C(val)	(val)		/* ulong_t^Ìèðìé}N */
+#define CAST(type, val)	(val)		/* ^LXgðs¤}N */
+#define IAR
+
+#include "kernel_impl.h"
+#include "arm_m.h"
+
+/*
+ *  X^[gAbv[`
+ *
+ *  Thread[hÅÄÑo³êé±ÆðOñÆµÄéD
+ */
+	PUBLIC  _start
+	PUBLIC  main
+	IMPORT  _kernel_istkpt
+	EXTWEAK  hardware_init_hook
+	EXTWEAK  software_init_hook
+	IMPORT  sta_ker
+	IMPORT  __iar_data_init3
+	EXTWEAK  __bss_start
+	EXTWEAK  __bss_end
+	EXTWEAK  __idata_start
+	EXTWEAK  __idata_end
+	EXTWEAK  __data_start
+
+	SECTION CSTACK:DATA:NOROOT(3)
+	SECTION .text : CODE (2)
+	THUMB
+
+_start:
+	cpsid f                 /* ÝbNóÔÖ */
+
+#ifdef INIT_MSP
+	/*
+	 * MSPÌÝè
+	 */
+	mov   r0, #CONTROL_MSP  /* MSPðLøÉ  */
+	msr   control, r0
+	isb                     /* control ÌìãÉKv */
+	ldr  r0,=_kernel_istkpt
+	ldr  r1,[r0]
+	msr  msp, r1
+#endif /* INIT_MSP */
+
+	/*
+	 * hardware_init_hookÌÄÑoµ i0ÅÈ¢êj
+	 *
+	 * ^[Qbgn[hEFAÉË¶µÄKvÈú»ª éê
+	 * ÍChardware_init_hook Æ¢¤ÖðpÓ·é
+	 */
+	ldr  r0, =hardware_init_hook
+	cbz  r0, start_1
+	blx  r0
+
+start_1:
+#ifdef IAR
+	mov  r4, r13
+	ldr  r13, =sfe(CSTACK)
+	bl   __iar_data_init3
+	mov  r13, r4
+#else
+#ifndef OMIT_BSS_INIT
+	/*
+	 *  BSSZNVú»
+	 */
+	mov  r0, #0
+	ldr  r1, =__bss_start
+	ldr  r2, =__bss_end
+	cmp  r1, r2
+	bhs  start_3
+start_2:
+	str  r0, [r1]
+	add  r1,r1, #4    
+	cmp  r1, r2
+	blo  start_2
+#endif /* OMIT_BSS_INIT */
+
+
+start_3:
+
+#ifndef OMIT_DATA_INIT
+	/*
+	 *  DATAZNVú»
+	 *  __idata_start ©ç __idata_end ÜÅðC__data_start È~É
+	 *  Rs[·é
+	 */
+	ldr  r1, =__idata_start
+	ldr  r2, =__idata_end
+	cmp  r1, r2
+	bhs  start_5
+	ldr  r3, =__data_start
+start_4:
+	ldr  r0, [r1]
+	str  r0, [r3]
+	add  r1, r2, #4
+	add  r3, r1, #4
+	cmp  r1, r2
+	blo  start_4
+#endif /* OMIT_DATA_INIT */
+#endif /* IAR */
+
+	/*
+	 *  software_init_hook ðÄoµi0 ÅÈ¢êj
+	 *
+	 *  \tgEFAÂ«iÁÉCujÉË¶µÄKvÈú»
+	 *  ª éêÍCsoftware_init_hook Æ¢¤ÖðpÓ·êÎ
+	 *  æ¢D
+	 */
+start_5:
+	ldr  r0, =software_init_hook
+	cbz  r0, start_6
+	blx  r0
+
+start_6:
+	bl   sta_ker
+
+main:
+l_end:
+	b   l_end
+
+    END
Index: /asp_ewarm/asp-1.7.0/arch/iccarm/MANIFEST
===================================================================
--- /asp_ewarm/asp-1.7.0/arch/iccarm/MANIFEST	(revision 61)
+++ /asp_ewarm/asp-1.7.0/arch/iccarm/MANIFEST	(revision 61)
@@ -0,0 +1,4 @@
+PACKAGE asp
+
+MANIFEST
+tool_stddef.h
Index: /asp_ewarm/asp-1.7.0/arch/iccarm/tool_stddef.h
===================================================================
--- /asp_ewarm/asp-1.7.0/arch/iccarm/tool_stddef.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/arch/iccarm/tool_stddef.h	(revision 61)
@@ -0,0 +1,205 @@
+/*
+ *  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
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: tool_stddef.h 819 2008-03-18 12:58:50Z hiro $
+ */
+
+/*
+ *		t_stddef.hÌJ­Â«Ë¶iiccarmpj
+ */
+
+#ifndef TOPPERS_TOOL_STDDEF_H
+#define TOPPERS_TOOL_STDDEF_H
+
+/*
+ *  RpCÌg£@\Ì½ßÌ}Nè`
+ */
+#ifndef __cplusplus					/* C++ÉÍinline ª é */
+#if __STDC_VERSION__ < 199901L		/* C99ÉÍinline ª é */
+/*#define inline	__inline__*/			/* CCÖ */
+#endif /* __STDC_VERSION__ < 199901L */
+#endif /* __cplusplus */
+
+#define Inline		static			/* CCÖ */
+
+#ifndef __cplusplus					/* C++ÉÍasmª é */
+#define inline	static
+#define asm		__asm				/* CCAZu */
+#endif /* __cplusplus */
+
+#define Asm		__asm volatile		/* CCAZuiÅK»}~j*/
+
+#define NoReturn	__noreturn		/* ^[µÈ¢Ö */
+
+/*
+ *  J­Â«ÌWCN[ht@CÌp
+ *
+ *  NULLÌè`ðstddef.h©çCINT_MAXCINT_MINCUINT_MAXCLONG_MAXC
+ *  LONG_MINCULONG_MAXCCHAR_BITÌè`ðlimits.h©çæèÞD
+ *
+ *  C++/EC++ÅÍCWdlãÍ±êçÌCN[ht@CªpÓ³êÄ
+ *  ¢éÆÍÀçÈ¢ÌÅÓªKvÅ éiÙÆñÇÌJ­Â«ÅpÓ³ê
+ *  Ä¢éjD
+ */
+#ifndef TOPPERS_MACRO_ONLY
+#include <stddef.h>
+#include <limits.h>
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  stdint.hÌãpÆÈéè`
+ *
+ *  J­Â«Éstdint.hªpÓ³êÄ¨ç¸Ce®^ÌTCYª ép^[
+ *  ÉÄÍÜéêÉCstdint.hÌãpÆÈéè`ð^¦éD
+ *
+ *  TOPPERS_STDINT_TYPE1: char/short/int/long longÌrbg·ª»ê¼ê
+ *                        8/16/32/64rbgÅC|C^Ìrbg·ªlong
+ *                        Ìrbg·Æêv·éê
+ */
+#ifdef TOPPERS_STDINT_TYPE1
+
+/*
+ *  RpCË¶Ìf[^^Ìè`
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+typedef signed char			int8_t;		/* t«8rbg® */
+typedef unsigned char		uint8_t;	/* ³µ8rbg® */
+
+typedef signed short		int16_t;	/* t«16rbg® */
+typedef unsigned short		uint16_t;	/* ³µ16rbg® */
+
+typedef signed int			int32_t;	/* t«32rbg® */
+typedef unsigned int		uint32_t;	/* ³µ32rbg® */
+
+typedef signed long long	int64_t;	/* t«64rbg® */
+typedef unsigned long long	uint64_t;	/* ³µ64rbg® */
+
+typedef int8_t				int_least8_t;	/* 8rbgÈãÌt«® */
+typedef uint8_t				uint_least8_t;	/* 8rbgÈãÌ³µ® */
+
+typedef long				intptr_t;	/* |C^ði[Å«ét«® */
+typedef unsigned long		uintptr_t;	/* |C^ði[Å«é³µ® */
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  RpCË¶Ìf[^^Ì®èðìé}N
+ */
+#ifndef INT8_C
+#define INT8_C(val)			(val)
+#endif /* INT8_C */
+
+#ifndef UINT8_C
+#define UINT8_C(val)		(val ## U)
+#endif /* UINT8_C */
+
+#ifndef INT16_C
+#define INT16_C(val)		(val)
+#endif /* INT16_C */
+
+#ifndef UINT16_C
+#define UINT16_C(val)		(val ## U)
+#endif /* UINT16_C */
+
+#ifndef INT32_C
+#define INT32_C(val)		(val)
+#endif /* INT32_C */
+
+#ifndef UINT32_C
+#define UINT32_C(val)		(val ## U)
+#endif /* UINT32_C */
+
+#ifndef INT64_C
+#define INT64_C(val)		(val ## LL)
+#endif /* INT64_C */
+
+#ifndef UINT64_C
+#define UINT64_C(val)		(val ## ULL)
+#endif /* UINT64_C */
+
+/*
+ *  RpCË¶Ìf[^^Éi[Å«éÅålÆÅ¬lÌè`
+ */
+#define INT8_MAX			SCHAR_MAX
+#define INT8_MIN			SCHAR_MIN
+#define UINT8_MAX			UCHAR_MAX
+
+#define INT16_MAX			SHRT_MAX
+#define INT16_MIN			SHRT_MIN
+#define UINT16_MAX			USHRT_MAX
+
+#define INT32_MAX			INT_MAX
+#define INT32_MIN			INT_MIN
+#define UINT32_MAX			UINT_MAX
+
+#define INT64_MAX			LLONG_MAX
+#define INT64_MIN			LLONG_MIN
+#define UINT64_MAX			ULLONG_MAX
+
+#define INT_LEAST8_MAX		INT8_MAX
+#define INT_LEAST8_MIN		INT8_MIN
+#define UINT_LEAST8_MAX		INT8_MAX
+
+#endif /* TOPPERS_STDINT_TYPE1 */
+
+/*
+ *  ®¬_^ÉÖ·éè`
+ *
+ *  TOPPERS_STDFLOAT_TYPE1: floatªIEEE754ÌP¸x®¬_C
+ *							doubleª{¸x®¬_Ìê
+ */
+#ifdef TOPPERS_STDFLOAT_TYPE1
+#ifndef TOPPERS_MACRO_ONLY
+
+typedef float		float32_t;			/* IEEE754ÌP¸x®¬_ */
+typedef double		double64_t;			/* IEEE754Ì{¸x®¬_ */
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+#define FLOAT32_MIN		1.17549435e-38F
+#define FLOAT32_MAX		3.40282347e+38F
+#define DOUBLE64_MIN	2.2250738585072014e-308
+#define DOUBLE64_MAX	1.7976931348623157e+308
+
+#endif /* TOPPERS_STDFLOAT_TYPE1 */
+#endif /* TOPPERS_TOOL_STDDEF_H */
Index: /asp_ewarm/asp-1.7.0/arch/logtrace/MANIFEST
===================================================================
--- /asp_ewarm/asp-1.7.0/arch/logtrace/MANIFEST	(revision 61)
+++ /asp_ewarm/asp-1.7.0/arch/logtrace/MANIFEST	(revision 61)
@@ -0,0 +1,6 @@
+PACKAGE asp
+
+MANIFEST
+trace_config.c
+trace_config.h
+trace_dump.c
Index: /asp_ewarm/asp-1.7.0/arch/logtrace/trace_config.c
===================================================================
--- /asp_ewarm/asp-1.7.0/arch/logtrace/trace_config.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/arch/logtrace/trace_config.c	(revision 61)
@@ -0,0 +1,248 @@
+/*
+ *  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-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: trace_config.c 1230 2008-08-08 05:52:17Z ertl-hiro $
+ */
+
+/*
+ *		トレースログ機能
+ */
+
+#include "kernel_impl.h"
+#include "task.h"
+#include "time_event.h"
+#include <sil.h>
+
+/*
+ *  トレースログバッファとそれにアクセスするためのポインタ
+ */
+SYSLOG	trace_buffer[TCNT_TRACE_BUFFER];	/* トレースログバッファ */
+uint_t	trace_count;				/* トレースログバッファ中のログの数 */
+uint_t	trace_head;					/* 先頭のトレースログの格納位置 */
+uint_t	trace_tail;					/* 次のトレースログの格納位置 */
+MODE	trace_mode;					/* トレースモード */
+
+/*
+ *  トレースログ機能の初期化
+ */
+void
+trace_initialize(intptr_t exinf)
+{
+	MODE	mode = ((MODE) exinf);
+
+	trace_count = 0U;
+	trace_head = trace_tail = 0U;
+	trace_mode = mode;
+}     
+
+/*
+ *  トレースログの開始
+ */
+ER
+trace_sta_log(MODE mode)
+{
+	if ((mode & TRACE_CLEAR) != 0U) {
+		trace_count = 0U;
+		trace_head = trace_tail = 0U;
+	}
+	trace_mode = mode;
+	return(E_OK);
+}     
+
+/* 
+ *  トレースログの書込み
+ */
+ER
+trace_wri_log(TRACE *p_trace)
+{
+	SIL_PRE_LOC;
+
+	if (trace_mode != TRACE_STOP) {
+		SIL_LOC_INT();
+
+		/*
+		 *  トレース時刻の設定
+		 *
+		 *  LOG_WRI_LOG_ENTERから呼ばれた場合にp_trace->logtimを書き換
+		 *  えてしまうのは気持ちが悪いが，wri_logの方で上書きするため問
+		 *  題はない．
+		 */
+		p_trace->logtim = TRACE_GET_TIM();
+
+		/*
+		 *  トレースバッファに記録
+		 */
+		trace_buffer[trace_tail] = *p_trace;
+		trace_tail++;
+		if (trace_tail >= TCNT_TRACE_BUFFER) {
+			trace_tail = 0U;
+		}
+		if (trace_count < TCNT_TRACE_BUFFER) {
+			trace_count++;
+			if (trace_count >= TCNT_TRACE_BUFFER
+						&& (trace_mode & TRACE_AUTOSTOP) != 0U) {
+				trace_mode = TRACE_STOP;
+			}
+		}
+		else {
+			trace_head = trace_tail;
+		}
+
+		SIL_UNL_INT();
+	}
+	return(E_OK);
+}
+
+/*
+ *  トレースログの読出し
+ */
+ER
+trace_rea_log(TRACE *p_trace)
+{
+	ER_UINT	ercd;
+	SIL_PRE_LOC;
+
+	SIL_LOC_INT();
+
+	/*
+	 *  トレースログバッファからの取出し
+	 */
+	if (trace_count > 0U) {
+		*p_trace = trace_buffer[trace_head];
+		trace_count--;
+		trace_head++;
+		if (trace_head >= TCNT_TRACE_BUFFER) {
+			trace_head = 0U;
+		}
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_OBJ;
+	}
+
+	SIL_UNL_INT();
+	return(ercd);
+}
+
+/*
+ *  トレースログを出力するためのライブラリ関数
+ */
+
+void
+trace_write_0(uint_t type)
+{
+	TRACE	trace;
+
+	trace.logtype = type;
+	(void) trace_wri_log(&trace);
+}
+
+void
+trace_write_1(uint_t type, intptr_t arg1)
+{
+	TRACE	trace;
+
+	trace.logtype = type;
+	trace.loginfo[0] = arg1;
+	(void) trace_wri_log(&trace);
+}
+
+void
+trace_write_2(uint_t type, intptr_t arg1, intptr_t arg2)
+{
+	TRACE	trace;
+
+	trace.logtype = type;
+	trace.loginfo[0] = arg1;
+	trace.loginfo[1] = arg2;
+	(void) trace_wri_log(&trace);
+}
+
+void
+trace_write_3(uint_t type, intptr_t arg1, intptr_t arg2, intptr_t arg3)
+{
+	TRACE	trace;
+
+	trace.logtype = type;
+	trace.loginfo[0] = arg1;
+	trace.loginfo[1] = arg2;
+	trace.loginfo[2] = arg3;
+	(void) trace_wri_log(&trace);
+}
+
+/*
+ *  アセンブリ言語で記述されるコードからトレースログを出力するための関
+ *  数
+ */
+
+void
+log_dsp_enter(TCB *p_tcb)
+{
+	trace_1(LOG_TYPE_DSP|LOG_ENTER, p_tcb);
+}
+
+void
+log_dsp_leave(TCB *p_tcb)
+{
+	trace_1(LOG_TYPE_DSP|LOG_LEAVE, p_tcb);
+}
+
+void
+log_inh_enter(INHNO inhno)
+{
+	trace_1(LOG_TYPE_INH|LOG_ENTER, inhno);
+}
+
+void
+log_inh_leave(INHNO inhno)
+{
+	trace_1(LOG_TYPE_INH|LOG_LEAVE, inhno);
+}
+
+void
+log_exc_enter(EXCNO excno)
+{
+	trace_1(LOG_TYPE_EXC|LOG_ENTER, excno);
+}
+
+void
+log_exc_leave(EXCNO excno)
+{
+	trace_1(LOG_TYPE_EXC|LOG_LEAVE, excno);
+}
Index: /asp_ewarm/asp-1.7.0/arch/logtrace/trace_config.h
===================================================================
--- /asp_ewarm/asp-1.7.0/arch/logtrace/trace_config.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/arch/logtrace/trace_config.h	(revision 61)
@@ -0,0 +1,181 @@
+/*
+ *  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
+ * 
+ *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ * 
+ *  @(#) $Id: trace_config.h 1230 2008-08-08 05:52:17Z ertl-hiro $
+ */
+
+/*
+ *		トレースログに関する設定
+ *
+ *  このインクルードファイルは，target_config.hおよびtarget_syssvc.hの
+ *  みからインクルードされる．他のファイルから直接インクルードしてはな
+ *  らない．
+ */
+
+#ifndef TOPPERS_TRACE_CONFIG_H
+#define TOPPERS_TRACE_CONFIG_H
+
+/*
+ *  トレースログバッファのサイズ
+ */
+#ifndef TCNT_TRACE_BUFFER
+#define TCNT_TRACE_BUFFER	1024
+#endif /* TCNT_TRACE_BUFFER */
+
+/*
+ *  トレース時刻の取得方法
+ */
+#ifndef TRACE_GET_TIM
+#define TRACE_GET_TIM()		(current_time)
+#endif /* TRACE_GET_TIM */
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  トレースログのデータ構造
+ *
+ *  システムログ機能のログ情報のデータ構造と同じものを用いる．
+ */
+#include <t_syslog.h>
+typedef	SYSLOG	TRACE;
+
+/*
+ *  トレースログバッファとそれにアクセスするためのポインタ
+ */
+extern TRACE	trace_buffer[];		/* トレースログバッファ */
+extern uint_t	trace_count;		/* トレースログバッファ中のログの数 */
+extern uint_t	trace_head;			/* 先頭のトレースログの格納位置 */
+extern uint_t	trace_tail;			/* 次のトレースログの格納位置 */
+extern uint_t	trace_lost;			/* 失われたトレースの数 */
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  トレースモードの定義
+ */
+#define TRACE_STOP			UINT_C(0x00)	/* トレース停止 */
+#define TRACE_RINGBUF		UINT_C(0x01)	/* リングバッファモード */
+#define TRACE_AUTOSTOP		UINT_C(0x02)	/* 自動停止モード */
+#define TRACE_CLEAR			UINT_C(0x04)	/* トレースログのクリア */
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  トレースログ機能の初期化
+ *
+ *  トレースログ機能を初期化する．初期化ルーチンとして登録することを想
+ *  定している．引数により次の動作を行う．
+ *
+ *  TRACE_STOP：初期化のみでトレースは開始しない．
+ *  TRACE_RINGBUF：リングバッファモードでトレースを開始．
+ *  TRACE_AUTOSTOP：自動停止モードでトレースを開始．
+ */
+extern void	trace_initialize(intptr_t exinf);
+
+/*
+ *  トレースログの開始
+ *
+ *  トレースログの記録を開始／停止する．引数により次の動作を行う．
+ *
+ *  TRACE_STOP：トレースを停止．
+ *  TRACE_RINGBUF：リングバッファモードでトレースを開始．
+ *  TRACE_AUTOSTOP：自動停止モードでトレースを開始．
+ *  TRACE_CLEAR：トレースログをクリア．
+ */
+extern ER	trace_sta_log(MODE mode);
+
+/*
+ *  トレースログの書込み
+ */
+extern ER	trace_wri_log(TRACE *p_trace);
+
+/*
+ *  トレースログの読出し
+ */
+extern ER	trace_rea_log(TRACE *p_trace);
+
+/* 
+ *  トレースログのダンプ（trace_dump.c）
+ *
+ *  トレースログをダンプする．終了処理ルーチンとして登録することも想定
+ *  している．引数として，ダンプ先となる文字出力関数へのポインタを渡す．
+ *  ターゲット依存の低レベル文字出力を利用する場合には，target_putcを渡
+ *  す．
+ */
+extern void	trace_dump(intptr_t exinf);
+
+/*
+ *  トレースログを出力するためのライブラリ関数
+ */
+extern void	trace_write_0(uint_t type);
+extern void	trace_write_1(uint_t type, intptr_t arg1);
+extern void	trace_write_2(uint_t type, intptr_t arg1, intptr_t arg2);
+extern void	trace_write_3(uint_t type, intptr_t arg1, intptr_t arg2,
+														intptr_t arg3);
+
+/*
+ *  トレースログを出力するためのマクロ
+ */
+
+#define trace_0(type) \
+				trace_write_0(type)
+
+#define trace_1(type, arg1) \
+				trace_write_1(type, (intptr_t)(arg1))
+
+#define trace_2(type, arg1, arg2) \
+				trace_write_2(type, (intptr_t)(arg1), (intptr_t)(arg2))
+
+#define trace_3(type, arg1, arg2, arg3) \
+				trace_write_3(type, (intptr_t)(arg1), (intptr_t)(arg2), \
+						(intptr_t)(arg3))
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  トレースログ方法の設定
+ */
+#define LOG_TSKSTAT(p_tcb)		trace_2(LOG_TYPE_TSKSTAT, p_tcb, p_tcb->tstat)
+
+#define LOG_DSP_LEAVE(p_tcb)	trace_1(LOG_TYPE_DSP|LOG_LEAVE, p_tcb)
+
+#define LOG_SYSLOG_WRI_LOG_ENTER(prio, p_syslog) \
+								trace_wri_log((TRACE *) p_syslog)
+
+#endif /* TOPPERS_TRACE_CONFIG_H */
Index: /asp_ewarm/asp-1.7.0/arch/logtrace/trace_dump.c
===================================================================
--- /asp_ewarm/asp-1.7.0/arch/logtrace/trace_dump.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/arch/logtrace/trace_dump.c	(revision 61)
@@ -0,0 +1,155 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2007,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: trace_dump.c 1230 2008-08-08 05:52:17Z ertl-hiro $
+ */
+
+/*
+ *		トレースログのダンプ
+ */
+
+#include "kernel_impl.h"
+#include "task.h"
+#include <log_output.h>
+
+/* 
+ *  カーネル情報の取出し
+ */
+static intptr_t
+get_tskid(intptr_t info)
+{
+	TCB		*p_tcb;
+	ID		tskid;
+
+	p_tcb = (TCB *) info;
+	if (p_tcb == NULL) {
+		tskid = 0;
+	}
+	else {
+		tskid = TSKID(p_tcb);
+	}
+	return((intptr_t) tskid);
+}
+
+static intptr_t
+get_tskstat(intptr_t info)
+{
+	uint_t		tstat;
+	const char	*tstatstr;
+
+	tstat = (uint_t) info;
+	switch (tstat & (TS_RUNNABLE|TS_WAITING|TS_SUSPENDED)) {
+	case TS_DORMANT:
+		tstatstr = "DORMANT";
+		break;
+	case TS_RUNNABLE:
+		tstatstr = "RUNNABLE";
+		break;
+	case TS_WAITING:
+		tstatstr = "WAITING";
+		break;
+	case TS_SUSPENDED:
+		tstatstr = "SUSPENDED";
+		break;
+	case TS_WAITING|TS_SUSPENDED:
+		tstatstr = "WAITING-SUSPENDED";
+		break;
+	default:
+		tstatstr = "unknown state";
+		break;
+	}
+	return((intptr_t) tstatstr);
+}
+
+/* 
+ *  トレースログの表示
+ */
+static void
+trace_print(TRACE *p_trace, void (*putc)(char_t))
+{
+	intptr_t	traceinfo[TMAX_LOGINFO + 1];
+	const char	*tracemsg;
+	int_t		i;
+
+	traceinfo[0] = (intptr_t)(p_trace->logtim);
+	syslog_printf("[%d] ", traceinfo, putc);
+
+	switch (p_trace->logtype) {
+	case LOG_TYPE_TSKSTAT:
+		traceinfo[0] = get_tskid(p_trace->loginfo[0]);
+		traceinfo[1] = get_tskstat(p_trace->loginfo[1]);
+		tracemsg = "task %d becomes %s.";
+		break;
+	case LOG_TYPE_DSP|LOG_LEAVE:
+		traceinfo[0] = get_tskid(p_trace->loginfo[0]);
+		tracemsg = "dispatch to task %d.";
+		break;
+	case LOG_TYPE_COMMENT:
+		for (i = 1; i < TMAX_LOGINFO; i++) {
+			traceinfo[i-1] = p_trace->loginfo[i];
+		}
+		tracemsg = (const char *)(p_trace->loginfo[0]);
+		break;
+	case LOG_TYPE_ASSERT:
+		traceinfo[0] = p_trace->loginfo[0];
+		traceinfo[1] = p_trace->loginfo[1];
+		traceinfo[2] = p_trace->loginfo[2];
+		tracemsg = "%s:%u: Assertion `%s' failed.";
+		break;
+	default:
+		traceinfo[0] = p_trace->logtype;
+		tracemsg = "unknown trace log type: %d.";
+		break;
+	}
+	syslog_printf(tracemsg, traceinfo, putc);
+	(*putc)('\n');
+}
+
+/* 
+ *  トレースログのダンプ
+ */
+void
+trace_dump(intptr_t exinf)
+{
+	TRACE	trace;
+	void	(*putc)(char_t);
+
+	putc = (void (*)(char_t)) exinf;
+	while (trace_rea_log(&trace) >= 0) {
+		trace_print(&trace, putc);
+	}
+}
Index: /asp_ewarm/asp-1.7.0/configure
===================================================================
--- /asp_ewarm/asp-1.7.0/configure	(revision 61)
+++ /asp_ewarm/asp-1.7.0/configure	(revision 61)
@@ -0,0 +1,275 @@
+#! /usr/bin/perl
+#
+#  TOPPERS Software
+#      Toyohashi Open Platform for Embedded Real-Time Systems/
+# 
+#  Copyright (C) 2001-2003 by Embedded and Real-Time Systems Laboratory
+#                              Toyohashi Univ. of Technology, JAPAN
+#  Copyright (C) 2006-2009 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: configure 1733 2010-02-03 03:50:52Z ertl-hiro $
+# 
+
+require "getopt.pl";
+
+#  オプションの定義
+#
+#  -T <target>			ターゲット名（必須）
+#  -A <applname>		アプリケーションプログラム名（デフォルトはsample1）
+#  -a <appldir>			アプリケーションのディレクトリ名
+#  -U <applobjs>		他のアプリケーションプログラムファイル
+#						（.oファイル名で指定．複数指定可）
+#  -L <kernel_lib>		カーネルライブラリ（libkernel.a）のディレクトリ名
+#						（省略した場合，カーネルライブラリもmakeする）
+#  -f					カーネルを関数単位でコンパイルするかどうかの指定
+#  -D <srcdir>			カーネル等のソースの置かれているディレクトリ
+#  -l <srclang>			プログラミング言語（現時点ではcとc++のみサポート）
+#  -t <templatedir>		テンプレートディレクトリの指定（デフォルトはsample）
+#  -m <makefile>		テンプレートMakefile名の指定（デフォルトはMakefile）
+#  -d <dbgenv>			実行環境の名称
+#  -r					トレースログ記録のサンプルコードを使用するかどうか
+#						の指定
+#  -p <perl>			perlのパス名（明示的に指定する場合）
+#  -g <cfg>				コンフィギュレータ（cfg）のパス名
+
+#  使用例(1)
+#
+#  % ../configure -T dve68k_gcc -D GDB_STUB -A perf1 -a ../test -U histogram.o
+#
+#  使用例(2)
+#
+#  % ../configure -T macosx_gcc -L .
+#	アプリケーションプログラムは sample1 になる．
+
+#
+#  オプションの処理
+#
+do Getopt("TAaULDltmdpg");
+
+#
+#  変数の初期化
+#
+
+$target = $opt_T;
+$applname = $opt_A ? $opt_A : "sample1";
+$appldir = $opt_a ? $opt_a : "";
+$applobjs = $opt_U ? $opt_U : "";
+$kernel_lib = $opt_L ? $opt_L : "";
+$kernel_funcobjs = $opt_f ? "true" : "";
+$srclang = $opt_l ? $opt_l : "c";
+$makefile = $opt_m ? $opt_m : "Makefile";
+$dbgenv = $opt_d ? "TOPPERS_".$opt_d : "";
+$enable_trace = $opt_r ? "true" : "";
+
+#
+#  オブジェクトファイル名の拡張子を返す
+#
+sub get_objext {
+	local(@uname);
+
+	use POSIX;
+	@uname = do uname();
+	if ($uname[0] =~ /^cygwin/i) {
+		return("exe");
+	}
+	else {
+		return("");
+	}
+}
+
+#
+#  プログラムの場所を検索する
+#
+sub get_path {
+	local($progname, @pathlist) = @_;
+	local($path);
+
+	foreach $path (@pathlist) {
+		if (-x $path."/".$progname) {
+			return($path."/".$progname);
+		}
+	}
+	return("");
+}
+
+#
+#  ファイルを変換する
+#
+sub convert {
+	local($infile, $outfile) = @_;
+	local($line, $varname, $varval);
+
+	print STDERR "configure: Generating $outfile from $infile.\n";
+	if (-f $outfile) {
+		print STDERR "configure: $outfile exists.",
+						"  Save as $outfile.bak.\n";
+		rename($outfile, $outfile.".bak");
+	}
+	unless (open(INFILE, $infile)) {
+		print STDERR "configure: can't open $infile\n";
+		exit(1);
+	}
+	unless (open(OUTFILE, "> ".$outfile)) {
+		print STDERR "configure: can't open $outfile\n";
+		exit(1);
+	}
+
+	while ($line = <INFILE>) {
+		chop $line;
+		while ($line =~ /^(.*)\@\(([A-Za-z_]+)\)(.*)$/) {
+			$line = $1.$vartable{$2}.$3;
+		}
+		print OUTFILE $line,"\n";
+	}
+
+	close(INFILE);
+	close(OUTFILE);
+}
+
+#
+#  サンプルを見つけてファイルを生成する
+#
+sub generate {
+	local($file, $mandatory) = @_;
+	local($path);
+
+	if ($sys) {
+		$path = $templatedir."/".$file.".".$cpu."-".$sys;
+		if (-f $path) {
+			do convert($path, $file);
+			return;
+		}
+
+		$path = $templatedir."/".$file.".".$sys;
+		if (-f $path) {
+			do convert($path, $file);
+			return;
+		}
+	}	
+
+	$path = $templatedir."/".$file.".".$cpu;
+	if (-f $path) {
+		do convert($path, $file);
+		return;
+	}	
+
+	$path = $templatedir."/".$file;
+	if ($mandatory || -f $path) {
+		do convert($path, $file);
+	}	
+}
+
+#
+#  ソースディレクトリ名を取り出す
+#
+$pwd = `pwd`; chop $pwd;
+if ($opt_D) {
+	$srcabsdir = $srcdir = $opt_D;
+}
+elsif ($0 =~ /(.*)\/configure/) {
+	$srcdir = $1;
+	if ($srcdir =~ /^\//) {
+		$srcabsdir = $srcdir;
+	}
+	else {
+		$srcabsdir = $pwd."/".$srcdir;
+	}
+}
+else {
+	$srcabsdir = $srcdir = $pwd;
+}
+
+$perl = $opt_p ? $opt_p : do get_path("perl", ("/usr/local/bin", "/usr/bin"));
+$cfg = $opt_g ? $opt_g : "\$(SRCDIR)/cfg/cfg/cfg";
+$cfgfile = $opt_g ? $opt_g : $srcdir."/cfg/cfg/cfg";
+$templatedir = $opt_t ? $opt_t : $srcdir."/sample";
+
+#
+#  -Tオプションの確認
+#
+unless ($opt_T) {
+	print STDERR "configure: -T option is mandatory\n";
+	print STDERR "Installed targets are:\n";
+	foreach $targetname (<$srcdir/target/[a-zA-Z1-9]*>) {
+		$targetname =~ s|$srcdir/target/||;
+		print STDERR "\t$targetname\n";
+	}
+	exit(1);
+}
+
+#
+#  変数テーブルの作成
+#
+%vartable = ();
+$vartable{"TARGET"} = $target;
+$vartable{"APPLNAME"} = $applname;
+$vartable{"APPLDIR"} = $appldir;
+$vartable{"APPLOBJS"} = $applobjs;
+$vartable{"KERNEL_LIB"} = $kernel_lib;
+$vartable{"KERNEL_FUNCOBJS"} = $kernel_funcobjs;
+$vartable{"SRCDIR"} = $srcdir;
+$vartable{"SRCABSDIR"} = $srcabsdir;
+$vartable{"SRCLANG"} = $srclang;
+$vartable{"DBGENV"} = $dbgenv;
+$vartable{"ENABLE_TRACE"} = $enable_trace;
+$vartable{"PERL"} = $perl;
+$vartable{"CFG"} = $cfg;
+$objext = do get_objext();
+$vartable{"OBJEXT"} = $objext;
+
+#
+#  ターゲットディレクトリのチェック
+#
+
+if (! -d $srcdir."/target/".$target) {
+	print STDERR "configure: $srcdir/target/$target not exist\n";
+	exit(1);
+}
+
+#
+#  Makefile とアプリケーションファイルの生成
+#
+
+do generate($makefile, 1);
+do generate($applname.".c", 0);
+do generate($applname.".cpp", 0);
+do generate($applname.".h", 0);
+do generate($applname.".cfg", 0);
+
+#
+#  cfg ができているかのチェック
+#
+
+if (!(-x ($objext == "" ? $cfgfile : $cfgfile.".".$objext))) {
+	print STDERR "Executable file of the configurator (cfg) is not found.\n";
+}
Index: /asp_ewarm/asp-1.7.0/doc/asp_spec.txt
===================================================================
--- /asp_ewarm/asp-1.7.0/doc/asp_spec.txt	(revision 61)
+++ /asp_ewarm/asp-1.7.0/doc/asp_spec.txt	(revision 61)
@@ -0,0 +1,422 @@
+
+		TOPPERS/ASPカーネルの仕様概要
+
+		対応バージョン: Release 1.7
+		最終更新: 2011年3月31日
+
+このドキュメントは，TOPPERS/ASPカーネルの仕様概要について説明したもので
+ある．μITRON4.0仕様のスタンダードプロファイルに対する拡張および変更箇
+所を中心に説明する．
+
+----------------------------------------------------------------------
+ TOPPERS/ASP Kernel
+     Toyohashi Open Platform for Embedded Real-Time Systems/
+     Advanced Standard Profile Kernel
+
+ Copyright (C) 2005-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: asp_spec.txt 2050 2011-04-03 02:37:44Z ertl-hiro $
+----------------------------------------------------------------------
+
+○前提となる文書
+
+[1] トロン協会: μITRON4.0仕様, Ver.4.02.00, 2004年.
+
+[2] トロン協会: μITRON4.0仕様 保護機能拡張（μITRON4.0/PX仕様）,
+	Ver.1.00.00, 2002年.
+
+[3] TOPPERSプロジェクト: TOPPERS/JSPカーネル ユーザズマニュアル
+	Release 1.4.3対応, 最終更新: 2007年4月23日.
+
+○仕様の概略
+
+TOPPERS/ASPカーネルの仕様は，μITRON4.0仕様のスタンダードプロファイルを
+ベースに，次のような拡張・改良を加えたものである．
+
+・割込み処理機能については，TOPPERS標準割込み処理モデルに準拠させる．
+・μITRON4.0仕様のスタンダードプロファイル外の機能の一部を導入する．
+・一部の仕様について，μITRON4.0仕様に対して変更を加える．
+・JSPカーネルにおける独自の拡張機能を一部変更して実装する．
+・ASPカーネルにおける独自の拡張機能を新たに実装する．
+・システムコンフィギュレーション処理を全面的に見直す．
+・拡張機能を実装するための拡張パッケージをサポートする．
+・TOPPERS組込みコンポーネントシステム（TECS）を導入する．
+
+そのためASPカーネルは，μITRON4.0仕様に完全に準拠しているわけではなく，
+JSPカーネルの上位互換にもなっていない．
+
+μITRON4.0仕様では，実装独自に用意する静的APIおよびサービスコールの名称
+には，先頭にそれぞれ"V"および"v"の文字を付加するものとしているが，ASPカー
+ネルではこの規定は採用しない．
+
+以下では，μITRON4.0仕様のスタンダードプロファイルに対する拡張および変
+更箇所について説明する．
+
+○スタンダードプロファイル外の機能の一部導入
+
+μITRON4.0仕様には規定されているが，スタンダードプロファイルに含まれな
+い（または，含まれるとは限らない）機能として，次の機能を実装する．
+
+(1) イベントフラグの複数タスク待ち
+
+イベントフラグに対する複数タスク待ちの機能（TA_WMUL属性のイベントフラグ）
+を実装する．
+
+これにより，イベントフラグのセット（set_flg，iset_flg）で複数のタスクが
+起床される可能性が生じる．多くのタスクを同時に待ち解除した場合，カーネ
+ル内での割込み禁止時間が長くなるため，使用にあたっては注意が必要である．
+
+(2) アラームハンドラ
+
+アラームハンドラの機能を実装する．アラームハンドラ機能のために実装する
+静的APIおよびサービスコールは次の通りである．
+
+	CRE_ALM		アラームハンドラの生成（静的API）
+	sta_alm		アラームハンドラの動作開始
+	ista_alm	アラームハンドラの動作開始（非タスクコンテキスト用）
+	stp_alm		アラームハンドラの動作停止
+	istp_alm	アラームハンドラの動作停止（非タスクコンテキスト用）
+
+(3) 割込みサービスルーチン
+
+スタンダードプロファイルでは，割込みハンドラと割込みサービスルーチンの
+いずれかをサポートすればよいことになっている．JSPカーネルでは割込みハン
+ドラのみを実装しているが，ASPカーネルではその両者を実装する．
+
+割込みサービスルーチンの仕様については，TOPPERS標準割込み処理モデルの規
+定に準拠する．割込みサービスルーチンを追加するサービスコールとして，次
+の静的APIを実装する．この静的APIの仕様については，TOPPERS標準割込み処理
+モデルにおいて，μITRON4.0仕様に対して拡張を加えている．
+
+	ATT_ISR		割込みサービスルーチンの追加（静的API）
+
+(4) 割込み管理機能
+
+スタンダードプロファイルに含まれない割込み管理機能として，次のサービス
+コールを実装する．JSPカーネルでは，これらのサービスコールを実装するかど
+うかはターゲット依存となっているが，ASPカーネルでは，TOPPERS標準割込み
+処理モデルの規定に準拠して，ターゲット非依存に実装する．
+
+	dis_int		割込みの禁止
+	ena_int		割込みの許可
+	chg_ipm		割込み優先度マスクの変更
+	get_ipm		割込み優先度マスクの参照
+
+(5) オブジェクトの状態参照機能
+
+主にデバッグ時向けの機能として，オブジェクトの状態参照機能を実装する．
+具体的には，次のサービスコールを実装する．
+
+	ref_tsk		タスクの状態参照
+	ref_tex		タスク例外処理の状態参照
+	ref_sem		セマフォの状態参照
+	ref_flg		イベントフラグの状態参照
+	ref_dtq		データキューの状態参照
+	ref_mbx		メールボックスの状態参照
+	ref_mpf		固定長メモリプールの状態参照
+	ref_cyc		周期ハンドラの状態参照
+	ref_alm		アラームハンドラの状態参照
+
+○μITRON4.0仕様に対する変更
+
+(1) ITRON標準データ型の見直し
+
+サイズの決まった整数型（B，H, Wなど）などについて，C99に準拠した型の名
+称（int8_t，int16_t，int32_tなど）やそれと相性が良い名称に変更する．
+ITRON標準データ型（B，H, Wなど）を必要とするアプリケーションのために，
+itron.hを用意する．
+
+(2) 非タスクコンテキストからのext_tsk
+
+非タスクコンテキストからext_tskが呼ばれた場合，E_CTXエラーを返すものと
+する．これにともなって，ext_tskをリターンする可能性があるものとし，返り
+値の型をERとする．
+
+(3) CPU例外ハンドラで行える操作
+
+CPU例外ハンドラで行える操作については，TOPPERS標準割込み処理モデルに準
+拠することとし，JSPカーネルの仕様を踏襲せず，μITRON4.0仕様にも従わない．
+そのためのサービスコールとして，次のサービスコールを実装する．
+
+	xsns_dpn	CPU例外発生時のディスパッチ保留状態の参照
+	xsns_xpn	CPU例外発生時のタスク例外処理保留状態の参照
+
+(4) カーネルの用いる管理領域の分離
+
+μITRON4.0/PX仕様において導入されたμITRON4.0仕様に対する変更として，カー
+ネルの用いる管理領域の分離に関する仕様を一部採用する．
+
+まず，固定長メモリプールの実装において，カーネルの用いる管理領域を分離
+することに伴い，固定長メモリプールを生成する静的API（CRE_MPF）のパラメー
+タに，固定長メモリプール管理領域の先頭番地（mpfmb）を追加する．
+
+また，これにあわせて，データキューを生成する静的API（CRE_DTQ）の最後の
+パラメータの名称を，データキュー管理領域の先頭番地（dtqmb）に変更する．
+
+なお，メールボックスは，μITRON4.0仕様との互換性のために残している機能
+と位置付け，カーネルの用いる管理領域の分離は行わない．そのため，メール
+ボックスを生成する静的API（CRE_MBX）に対する変更はない．
+
+(5) 処理単位とメモリ領域のデータ型の見直し
+
+処理単位のエントリ番地のデータ型を，パラメータが反映されないFP型ではな
+く，処理単位毎の専用のデータ型とする．例えば，タスクのエントリ番地のデー
+タ型をTASK型，タスク例外処理ルーチンのデータ型をTEXRTN型とする．
+
+また，スタック領域と固定長メモリプール領域のデータ型を，それぞれSTK_T型
+とMPF_T型とする．
+
+(6) 値が0の定数（オブジェクト属性等）の見直し
+
+コーディングミスを防ぐために，値が0の定数の扱いを見直す．オブジェクト属
+性（TA_TFIFO等）については，値が0のものはデフォルト扱いして廃止し，定義
+をitron.hに移す．値が0のサービスコールの動作モード（TWF_ANDW）やオブジェ
+クトの状態（TTEX_ENA等）については，値を変更する．
+
+(7) 強制待ち要求ネストの廃止
+
+強制待ち要求をネストする機能を廃止する．言い換えると，強制待ち要求ネス
+ト数の最大値を1に固定する．これに伴い，frsm_tskは廃止し，itron.hにおい
+てfrsm_tskをrsm_tskにマクロ定義する．また，TMAX_SUSCNTの定義をitron.hに
+移す．
+
+(8) システム時刻の設定機能の廃止
+
+set_tim（システム時刻の設定）を廃止する．
+
+(9) 周期ハンドラの仕様変更
+
+sta_cycを呼び出した後，最初に周期ハンドラが起動される時刻を変更する．
+μITRON4.0仕様では，sta_cycを呼び出してから周期ハンドラの起動周期で指定
+した相対時間後としているが，ASPカーネルでは，起動位相で指定した相対時間
+後とする．
+
+(10) タスク例外処理ルーチンの実行開始条件の変更
+
+割込み優先度マスク全解除状態でない場合には，タスク例外処理ルーチンの実
+行が開始されないという仕様に変更した．
+
+○JSPカーネルにおける独自の拡張機能
+
+JSPカーネルにおける独自の拡張機能の中で，以下の機能を実装する．
+
+(1) 性能評価用システム時刻参照機能
+
+性能評価用システム時刻参照機能とは，ASPカーネル上で動作するタスクやASP
+カーネル自身の性能を計測するための，システム時刻をμ秒単位で読み出す機
+能である．この機能のためのサービスコールは次の通りである（JSPカーネルと
+は名称を変更した）．
+
+	get_utm		性能評価用システム時刻の参照
+
+JSPカーネルからの仕様変更として，get_utmは任意のコンテキストから呼び出
+すことができるものする．また，性能評価用システム時刻の型（SYSUTM）を，
+ターゲット非依存部でulong_tに定義する．
+
+(2) 終了処理ルーチン機能
+
+ASPカーネルでは，システムの終了時に呼び出される終了処理ルーチンを登録す
+るための機能をサポートする．この機能のための静的APIは次の通りである．
+
+	ATT_TER		終了処理ルーチンの追加（静的API）
+
+(3) カーネル動作状態の参照
+
+カーネル上で動作するタスクから呼び出される関数が，カーネルの初期化完了
+前や終了処理開始後にも呼び出される可能性がある場合には，その中でカーネ
+ルのサービスコールを呼び出せるかを判別することが必要となる．この機能の
+ためのサービスコールは次の通りである（JSPカーネルとは名称を変更した）．
+
+	sns_ker		カーネル非動作状態の参照
+
+○ASPカーネルにおける独自の拡張機能
+
+(1) 割込み要求ラインの属性の設定
+
+割込み要求ラインの属性を設定する機能として，TOPPERS標準割込み処理モデル
+で規定された次の静的APIを実装する．
+
+	CFG_INT		割込み要求ラインの属性の設定（静的API）
+
+(2) 同期・通信オブジェクトの再初期化機能
+
+同期・通信オブジェクトを初期状態に戻すための機能として，次のサービスコー
+ルを実装する．
+
+	ini_sem		セマフォの再初期化
+	ini_flg		イベントフラグの再初期化
+	ini_dtq		データキューの再初期化
+	ini_mbx		メールボックスの再初期化
+	ini_mpf		固定長メモリプールの再初期化
+
+同期・通信オブジェクトの再初期化の際に，その同期・通信オブジェクトに対
+して待ち状態となっていたタスクはすべて待ち解除される．待ち解除されたタ
+スクに対しては，E_DLTを返す．E_DLTは，スタンダードプロファイルでは使用
+していないエラーコードである．
+
+そのため，これらのサービスコールにより，複数のタスクが起床される可能性
+が生じる．多くのタスクを同時に待ち解除した場合，カーネル内での割込み禁
+止時間が長くなるため，使用にあたっては注意が必要である．
+
+同期・通信オブジェクトを再初期化する際に，アプリケーション側との整合性
+を保つのはアプリケーションの責任である．具体的には，固定長メモリプール
+を再初期化する際には，そこから獲得済みのメモリブロックをそれ以降使わな
+いようにしなければならない．また，メールボックスを再初期化する際には，
+メールボックスに送信されたメッセージ領域を回収しなければならない．
+
+(3) 優先度データキューの新設
+
+優先度付きのデータキューの機能を新設する．優先度付きデータキュー機能の
+ために実装する静的APIおよびサービスコールは次の通りである．
+
+	CRE_PDQ		優先度データキューの生成
+	snd_pdq		優先度データキューへの送信
+	psnd_pdq	優先度データキューへの送信（ポーリング）
+	ipsnd_pdq	優先度データキューへの送信（ポーリング，非タスクコンテキスト）
+	tsnd_pdq	優先度データキューへの送信（タイムアウトあり）
+	rcv_pdq		優先度データキューからの受信
+	prcv_pdq	優先度データキューからの受信（ポーリング）
+	trcv_pdq	優先度データキューからの受信（タイムアウトあり）
+	ini_pdq		優先度データキューの再初期化
+	ref_pdq		優先度データキューの状態参照
+
+ここで，優先度データキューに蓄積されたデータの数が多い場合，優先度デー
+タキューへのデータの送信を行うサービスコール（snd_pdq，psnd_pdq，
+ipsnd_pdq，tsnd_pdq）の処理時間が長くなり，カーネル内での割込み禁止時間
+が長くなるため，使用にあたっては注意が必要である．
+
+(4) 自タスクの拡張情報の参照
+
+自タスクの拡張情報を参照するためのサービスコールを新設する．ライブラリ
+等の中で用いることを想定している．
+
+	get_inf		自タスクの拡張情報の参照
+
+(5) カーネルの終了
+
+致命的なエラーが起こった場合などにカーネルを終了させるためのサービスコー
+ルを新設する．この機能は，μITRON4.0仕様の機能分類では，システム構成管
+理機能に分類する（JSPカーネルでは，kernel_exitという名称で，実質的にこ
+の機能を用意していた）．
+
+	ext_ker		カーネルの終了
+
+ASPカーネルでは，このサービスコールからリターンすることはないが，保護機
+能を持ったカーネルではエラーリターンする可能性があるため，返り値の型を
+ERとする．
+
+これに伴って，JSPカーネルのkernel_startを，sta_kerに名称変更する．ただ
+し，sta_kerはサービスコールとは見なさないことにする．
+
+(6) 非タスクコンテキスト用のスタック領域の設定
+
+非タスクコンテキスト用のスタック領域の先頭番地とサイズを指定するための
+静的APIを新設する．また，この静的APIにより，非タスクコンテキスト用のス
+タック領域のサイズのみを指定することもできる．
+
+	DEF_ICS		非タスクコンテキスト用のスタック領域の定義
+
+○JSPカーネルにおける実装定義／実装依存規定からの変更
+
+μITRON4.0仕様で実装定義または実装依存とされている仕様の中で，以下のも
+のについてJSPカーネルから変更する．
+
+(1) アプリケーション向けのインクルードファイルの構成の整理
+
+カーネルを呼び出すアプリケーションからはkernel.hを，SILを呼び出すアプリ
+ケーションからはsil.hをインクルードすればよいものとし，t_services.hと
+s_services.hは廃止する．
+
+また，kernel.hとsil.hの共通部分としてt_stddef.hを用意し，カーネルとSIL
+のいずれも呼び出さないアプリケーションからは，t_stddef.hをインクルード
+すればよいものとする．itron.hは，μITRON4.0仕様との互換性が必要な場合に
+インクルードするものとする．
+
+(2) 割込み処理／例外処理関連の型の定義の変更
+
+割込みハンドラ番号の型（INHNO），割込み番号の型（INTNO），CPU例外ハンド
+ラ番号の型（EXCNO）を，ターゲット非依存部で，いずれもuint_t型に定義する．
+
+(3) 処理単位の実行開始／リターン時のシステム状態の規定
+
+処理単位の実行開始／リターン時のシステム状態について，μITRON4.0仕様に
+おいて実装依存であった点を厳密に規定し，ターゲットによる違いが生じない
+ようにする．
+
+(4) isig_timの扱いの変更
+
+システム時刻を更新する機構をカーネル内部に持つ扱いとし，サービスコール
+としてのisig_timは廃止する．
+
+(5) カーネルの用いる領域の指定方法
+
+JSPカーネルでは，カーネルの用いる領域はすべて自動割付けであったが，ASP
+カーネルでは，タスクのスタック領域と固定長メモリプールの固定長メモリプー
+ル領域については，静的APIで先頭番地を指定することもできるものとする（自
+動割付けもサポートする）．
+
+(6) カーネル管理外の割込みの扱いの規定
+
+JSPカーネルではターゲット毎に定めていたカーネル管理外の割込みの扱いを，
+ASPカーネルでは，TOPPERS標準割込み処理モデルの規定に準拠して，可能な範
+囲で標準化する．ただし，NMI以外にカーネル管理外の割込みを設けるかや，ど
+の割込み優先度より高いものをカーネル管理外とするかは，ターゲット毎に定
+める．
+
+○システムコンフィギュレーション処理の見直し
+
+システムコンフィギュレーション処理を全面的に見直し，システムコンフィギュ
+レーションファイル中におけるC言語のプリプロセッサディレクティブの扱いと
+静的APIのパラメータの分類を変更した．
+
+○拡張パッケージのサポート
+
+ASPカーネルでは，いくつかの拡張機能を実装するために，次の拡張パッケージ
+をサポートしている．
+
+・ミューテックス機能拡張パッケージ（優先度継承ミューテックスを除く）
+・オーバランハンドラ機能拡張パッケージ
+・タスク優先度拡張パッケージ
+・制約タスク拡張パッケージ
+・動的生成機能拡張パッケージ
+
+○TOPPERS組込みコンポーネントシステム（TECS）の導入
+
+デバイスドライバやシステムログ機能との接続にTOPPERS組込みコンポーネント
+システム（TECS）を導入する．また，カーネルオブジェクトをTECSのコンポー
+ネントとして扱えるようにする．
+
+なお，Release 1.7の時点では，TECSに対応するための修正は，TECSの配布パッ
+ケージに含まれており，ASPカーネルの配布パッケージには含まれていない．
+
+以上
Index: /asp_ewarm/asp-1.7.0/doc/configurator.txt
===================================================================
--- /asp_ewarm/asp-1.7.0/doc/configurator.txt	(revision 61)
+++ /asp_ewarm/asp-1.7.0/doc/configurator.txt	(revision 61)
@@ -0,0 +1,1130 @@
+
+		TOPPERS/ASPカーネル
+		コンフィギュレータ仕様
+
+		対応バージョン: Release 1.7.0
+		最終更新: 2010年11月20日
+
+このドキュメントは，TOPPERS/ASPカーネルのコンフィギュレータが標準的に生
+成すべきファイルの内容について解説したものである．ターゲット依存に生成
+する内容については，このドキュメントの範囲外である．
+
+----------------------------------------------------------------------
+ TOPPERS/ASP Kernel
+     Toyohashi Open Platform for Embedded Real-Time Systems/
+     Advanced Standard Profile Kernel
+
+ Copyright (C) 2005-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: configurator.txt 1960 2010-11-20 02:20:40Z ertl-hiro $
+----------------------------------------------------------------------
+
+○目次
+
+・生成するファイルの種類
+・静的API一覧
+・カーネル構成・初期化ヘッダファイル（kernel_cfg.h）
+・カーネル構成・初期化ファイル（kernel_cfg.c）
+	(1) 固定生成部分
+	(2) インクルードディレクティブ（#include）の処理
+	(3-1) トレースログマクロのデフォルト定義
+	(3-2) オブジェクトのID番号を保持する変数の定義
+	(4) 各カーネルオブジェクトに関する定義
+	(5) 割込みに関する定義
+	(6) CPU例外に関する定義
+	(7) 非タスクコンテキスト用のスタック領域に関する定義
+	(8) タイムイベント管理に関する定義
+	(9) 各モジュールの初期化関数の定義
+	(10) 初期化ルーチンの実行関数の定義
+	(11) 終了処理ルーチンの実行関数の定義
+
+
+○生成するファイルの種類
+
+ASPカーネルのコンフィギュレータは，システムコンフィギュレーションファイ
+ルを処理して，カーネル構成・初期化ファイル（kernel_cfg.c）と構成・初期
+化ヘッダファイル（kernel_cfg.h）を生成する．また，コンフィギュレータの
+処理の途中に，必要な中間ファイルを生成する．
+
+
+○静的API一覧
+
+ASPカーネルのコンフィギュレータが処理する静的APIは次の通り．
+
+(1) タスク管理機能
+	CRE_TSK(ID tskid, { ATR tskatr, intptr_t exinf, TASK task,
+								PRI itskpri, SIZE stksz, STK_T *stk })
+
+(2) タスク例外処理機能
+	DEF_TEX(ID tskid, { ATR texatr, TEXRTN texrtn })
+
+(3) 同期・通信機能
+	CRE_SEM(ID semid, { ATR sematr, uint_t isemcnt, uint_t maxsem })
+	CRE_FLG(ID flgid, { ATR flgatr, FLGPTN iflgptn })
+	CRE_DTQ(ID dtqid, { ATR dtqatr, uint_t dtqcnt, void *dtqmb })
+	CRE_PDQ(ID pdqid, { ATR pdqatr, uint_t pdqcnt, PRI maxdpri, void *pdqmb })
+	CRE_MBX(ID mbxid, { ATR mbxatr, PRI maxmpri, void *mprihd })
+
+※ dtqmb，pdqmb，mprihdがNULLでない場合はサポートしない．
+
+(4) メモリプール管理機能
+	CRE_MPF(ID mpfid, { ATR mpfatr, uint_t blkcnt, uint_t blksz,
+										MPF_T *mpf, void *mpfmb })
+
+※ mpfmbがNULLでない場合はサポートしない．
+
+(5) 時間管理機能
+	CRE_CYC(ID cycid, { ATR cycatr, intptr_t exinf, CYCHDR cychdr,
+								RELTIM cyctim, RELTIM cycphs })
+	CRE_ALM(ID almid, { ATR almatr, intptr_t exinf, ALMHDR almhdr })
+
+(6) 割込み管理機能
+	CFG_INT(INTNO intno, { ATR intatr, PRI intpri })
+	ATT_ISR({ ATR isratr, intptr_t exinf, INTNO intno, ISR isr, PRI isrpri })
+	DEF_INH(INHNO inhno, { ATR inhatr, INTHDR inthdr })
+
+(7) CPU例外管理機能
+	DEF_EXC(EXCNO excno, { ATR excatr, EXCHDR exchdr })
+
+(8) システム構成管理機能
+	DEF_ICS({ SIZE istksz, STK_T *istk })
+	ATT_INI({ ATR iniatr, intptr_t exinf, INIRTN inirtn })
+	ATT_TER({ ATR teratr, intptr_t exinf, TERRTN terrtn })
+
+これらの静的APIのパラメータの内，ID型のパラメータはオブジェクト識別名，
+ポインタ型（void *，TASK，TEXRTN，CYCHDR，ALMHDR，ISR，INTHDR，EXCHDR，
+INIRTN，TERRTN，STK_T *，MPF_T *）およびintptr_t型のパラメータは一般定
+数式パラメータとする．その他のパラメータは，整数定数式パラメータとする．
+
+
+○カーネル構成・初期化ヘッダファイル（kernel_cfg.h）
+
+カーネル構成・初期化ヘッダファイル（kernel_cfg.h）には，次の定義を生成
+する．
+
+(1) 固定生成部分
+
+kernel_cfg.hが複数回インクルードされるのを防ぐための記述を生成する．具
+体的には，ファイルの先頭に次の行を生成する．
+
+#ifndef	TOPPERS_KERNEL_CFG_H
+#define	TOPPERS_KERNEL_CFG_H
+
+また，ファイルの末尾に次の行を生成する．
+
+#endif	/* TOPPERS_KERNEL_CFG_H */
+
+(2) オブジェクト数の定義
+
+カーネルがサポートするオブジェクトの数をマクロ定義するプリプロセッサディ
+レクティブ（#define）を生成する．具体的には，次のような記述を生成する．
+
+#define TNUM_TSKID	<タスクの数>
+#define TNUM_SEMID	<セマフォの数>
+#define TNUM_FLGID	<イベントフラグの数>
+#define TNUM_DTQID	<データキューの数>
+#define TNUM_PDQID	<優先度データキューの数>
+#define TNUM_MBXID	<メールボックスの数>
+#define TNUM_MPFID	<固定長メモリプールの数>
+#define TNUM_CYCID	<周期ハンドラの数>
+#define TNUM_ALMID	<アラームハンドラの数>
+
+(3) オブジェクトのID番号の定義
+
+コンフィギュレータがID番号を割り付けたオブジェクトの名前を，割り付けた
+ID番号にマクロ定義するプリプロセッサディレクティブ（#define）を生成する．
+例えば，次のような記述を生成する．
+
+#define TASK1	1
+#define TASK2	2
+#define SEM1	1
+
+○カーネル構成・初期化ファイル（kernel_cfg.c）
+
+(1) 固定生成部分
+
+kernel_cfg.c用のヘッダファイルとID自動割付け結果ファイルをインクルード
+するプリプロセッサディレクティブ（#include）を生成する．具体的には，次
+の行を生成する．
+
+#include "kernel/kernel_int.h"
+#include "kernel_cfg.h"
+
+(2) インクルードディレクティブ（#include）の処理
+
+システムコンフィギュレーションファイルに含まれるC言語プリプロセッサのイ
+ンクルードディレクティブ（#include）と同一のディレクティブ（#include）
+を生成する．例えば，
+
+#include "sample1.h"
+
+というインクルードディレクティブに対して，
+
+#include "sample1.h"
+
+というディレクティブを生成する．生成するディレクティブの順序は，システ
+ムコンフィギュレーションファイル中でのインクルードディレクティブの順序
+に一致させる．
+
+(3-1) トレースログマクロのデフォルト定義
+
+kernel_cfg.cの中で使用するトレースログマクロのデフォルト定義を生成する．
+具体的には，次の行を生成する．
+
+#ifndef LOG_ISR_ENTER
+#define LOG_ISR_ENTER(intno)
+#endif /* LOG_ISR_ENTER */
+
+#ifndef LOG_ISR_LEAVE
+#define LOG_ISR_LEAVE(intno)
+#endif /* LOG_ISR_LEAVE */
+
+(3-2) オブジェクトのID番号を保持する変数の定義
+
+コンフィギュレータに対するオプション指定（--external-id）により，コンフィ
+ギュレータがID 番号を割り付けたオブジェクトの名前の末尾に"_id"を付加し
+た名前の変数を生成する．変数は，const属性を付加したID型の変数とし，割り
+付けたID番号を値とする．例えば，次のような記述を生成する．
+
+const ID TASK1_id = 1;
+const ID TASK2_id = 2;
+const ID SEM1_id = 1;
+
+(4) 各カーネルオブジェクトに関する定義
+
+システムコンフィギュレーションファイル中に，オブジェクトを生成する静的
+API「CRE_XXX」が含まれる各カーネルオブジェクトに関して，オブジェクト生
+成のための定義を生成する．
+
+コンフィギュレータは，同じ種類のオブジェクトを生成する静的APIを集め，各
+オブジェクトにID番号を割り付ける．ID番号は，他のオブジェクトのID番号と
+重複がなく，ID番号が連続するように割り付ける．
+
+コンフィギュレータに対するオプション指定（--id-input-file）により，コン
+フィギュレータがオブジェクトに割り付けるID番号を指定することができる．
+同じ種類の異なるオブジェクトに対して同じID番号を指定したり，コンフィギュ
+レータがID番号をできる限り連続するように割り付けたとしてもID番号が連続
+しない場合には（ASPカーネルは，オブジェクトのID番号が連続していることを
+仮定して実装してある），コンフィギュレータはエラーを報告する．
+
+また，コンフィギュレータに対するオプション指定（--id-output-file）によ
+り，コンフィギュレータがID番号を割り付けたオブジェクトの名前と割り付け
+たID番号の組を，オプションで指定したファイルに出力する．
+
+各カーネルオブジェクトに関する定義の標準的な構成は，次の通りである．オ
+ブジェクトによって例外がある場合には，オブジェクト毎の項で説明する．
+
+(a) 最大のオブジェクトIDの変数の定義
+
+最大のオブジェクトIDを持つ変数の定義を生成する．具体的には，オブジェク
+トの省略記号を「XXX／xxx」とすると，次のような行を生成する．
+
+const ID _kernel_tmax_xxxid = (TMIN_XXXID + TNUM_XXXID - 1);
+
+(b) オブジェクトに必要なメモリ領域の定義
+
+オブジェクトによっては，オブジェクトに必要なメモリ領域の定義を生成する．
+具体的には，オブジェクト毎の項で説明する．
+
+(c) オブジェクトの初期化ブロックの定義
+
+オブジェクトの初期化ブロックの定義を生成する．具体的には，オブジェクト
+の省略記号を「XXX／xxx」とすると，次のような行を生成する．
+
+const XXXINIB _kernel_xxxinib_table[TNUM_XXXID] = {
+	<オブジェクトIDが1のオブジェクトの初期化情報>,
+	<オブジェクトIDが2のオブジェクトの初期化情報>,
+				……
+	<オブジェクトIDがTNUM_XXXIDのオブジェクトの初期化情報>
+};
+
+オブジェクトの初期化情報の形式は，オブジェクト毎に異なる．具体的には，
+オブジェクト毎の項で説明する．
+
+(d) オブジェクトのコントロールブロックの定義
+
+オブジェクトのコントロールブロックの定義を生成する．具体的には，オブジェ
+クトの省略記号を「XXX／xxx」とすると，次のような行を生成する．
+
+XXXCB _kernel_xxxcb_table[TNUM_XXXID];
+
+(4-1) タスクに関する定義
+
+ASPカーネルは，タスクが一つもないケースに対応していないため，タスクに関
+する定義は必ず生成しなければならない．
+
+タスクの省略記号は「TSK」「tsk」である．ただし，タスク初期化ブロックの
+データ型はTINIB，その変数名は_kernel_tinib_table，タスクコントロールブ
+ロックのデータ型はTCB，その変数名は_kernel_tcb_table である（いずれも
+「TSK／tsk」に代えて「T／t」を用いている）．
+
+タスク初期化ブロックには，「CRE_TSK」静的APIで指定される情報に加えて，
+「DEF_TEX」静的APIで指定される情報を含める．
+
+以下では，システムコンフィギュレーションファイルに次の静的APIが含まれ
+ている時に生成すべき情報について述べる．
+
+CRE_TSK(tskid, { tskatr, exinf, task, itskpri, stksz, stk });
+DEF_TEX(tskid, { texatr, texrtn });
+
+(4-1-1) タスクに必要なメモリ領域の定義
+
+タスクに必要なメモリ領域として，タスクのスタック領域がある．stkがNULLの
+場合には，生成するタスク毎に，指定されたサイズのスタック領域を確保する．
+具体的には，上記の静的APIに対して，次の定義を生成する．
+
+＊stkがNULLの場合のみ生成
+static STK_T _kernel_stack_<タスク名>[COUNT_STK_T(stksz)];
+
+(4-1-2) タスクの初期化情報
+
+タスク初期化ブロック中に生成するタスクの初期化情報は，次の形式とする．
+
+	{ (tskatr), (intptr_t)(exinf), (task), INT_PRIORITY(itskpri),
+								(stksz), (stk), (texatr), (texrtn) }
+
+ここで，stkがNULLの場合には，(stksz)に代えてROUND_STK_T(stksz)を，
+(stk)に代えて(_kernel_stack_<タスク名>)を生成する．CRE_TSKに対応する
+DEF_TEXがない場合には，texatrをTA_NULL，texrtnをNULLとする．
+
+(4-1-3) タスク生成順序テーブルの定義
+
+タスクに対しては，生成された順序（タスクを生成する静的APIが記述された
+順序）をテーブルに出力する必要がある．これは，タスクの生成された順序で，
+タスクの初期化（より具体的には，タスクの起動）を行う必要があるためであ
+る．
+
+具体的には，次のような行を生成する．
+
+const ID _kernel_torder_table[TNUM_TSKID] = {
+	<最初に生成されたタスクのタスクID>,
+	<2番目に生成されたタスクのタスクID>,
+				……
+	<最後に生成されたタスクのタスクID>
+};
+
+(4-1-4) エラー条件
+
+タスクに関するエラー条件は次の通りである．
+
+＊コンフィギュレータ本体が検出するもの
+・同じtskidに対するCRE_TSKが複数ある場合（E_OBJ）
+・DEF_TEXに対応するCRE_TSKがない場合（E_NOEXS）
+・同じtskidに対するDEF_TEXが複数ある場合（E_OBJ）
+
+＊パス2で検出するもの
+・tskatrが（［TA_ACT］）でない場合（E_RSATR）
+	※ ターゲット依存部でタスク属性を追加可（TARGET_TSKATR）
+・(TMIN_TPRI <= itskpri && itskpri <= TMAX_TPRI)でない場合（E_PAR）
+・stkszが0か，ターゲット定義の最小値（TARGET_MIN_STKSZ）よりも小さい場
+　合（E_PAR）
+・stkszがスタック領域のサイズとして正しくない場合（E_PAR）
+	- ターゲット依存の値（CHECK_STKSZ_ALIGN）の倍数でない場合
+	※ このエラーチェックは，stkがNULLでない場合にのみ行う
+・texatrが（TA_NULL）でない場合（E_RSATR）
+
+＊パス3で検出するもの
+・taskとtexrtnがプログラムの開始番地として正しくない場合（E_PAR）
+	- ターゲット依存の値（CHECK_FUNC_ALIGN）の倍数でない場合
+	- NULLの場合（ターゲット依存，CHECK_FUNC_NONNULL）
+・stkがスタック領域の先頭番地として正しくない場合（E_PAR）
+	- ターゲット依存の値（CHECK_STACK_ALIGN）の倍数でない場合
+	- NULLの場合（ターゲット依存，CHECK_STACK_NONNULL）
+
+(4-2) セマフォに関する定義
+
+セマフォの省略記号は「SEM／sem」である．以下では，システムコンフィギュレー
+ションファイルに次の静的APIが含まれている時に生成すべき情報について述べ
+る．なお，セマフォに必要なメモリ領域はない．
+
+CRE_SEM(semid, { sematr, isemcnt, maxsem });
+
+(4-2-1) セマフォの初期化情報
+
+セマフォ初期化ブロック中に生成するセマフォの初期化情報は，次の形式とす
+る．
+
+	{ (sematr), (isemcnt), (maxsem) }
+
+(4-2-2) エラー条件
+
+セマフォに関するエラー条件は次の通りである．
+
+＊コンフィギュレータ本体が検出するもの
+・同じsemidに対するCRE_SEMが複数ある場合（E_OBJ）
+
+＊パス2で検出するもの
+・sematrが（［TA_TPRI］）でない場合（E_RSATR）
+・(0 <= isemcnt && isemcnt <= maxsem)でない場合（E_PAR）
+・(1 <= maxsem && maxsem <= TMAX_MAXSEM)でない場合（E_PAR）
+
+(4-3) イベントフラグに関する定義
+
+イベントフラグの省略記号は「FLG／flg」である．以下では，システムコンフィ
+ギュレーションファイルに次の静的APIが含まれている時に生成すべき情報につ
+いて述べる．なお，イベントフラグに必要なメモリ領域はない．
+
+CRE_FLG(flgid, { flgatr, iflgptn });
+
+(4-3-1) イベントフラグの初期化情報
+
+イベントフラグ初期化ブロック中に生成するイベントフラグの初期化情報は，
+次の形式とする．
+
+	{ (flgatr), (iflgptn) }
+
+(4-3-2) エラー条件
+
+イベントフラグに関するエラー条件は次の通りである．
+
+＊コンフィギュレータ本体が検出するもの
+・同じflgidに対するCRE_FLGが複数ある場合（E_OBJ）
+
+＊パス2で検出するもの
+・flgatrが（［TA_TPRI］｜［TA_WMUL］｜［TA_CLR］）でない場合（E_RSATR）
+
+(4-4) データキューに関する定義
+
+データキューの省略記号は「DTQ／dtq」である．以下では，システムコンフィギュ
+レーションファイルに次の静的APIが含まれている時に生成すべき情報について
+述べる．
+
+CRE_DTQ(dtqid, { dtqatr, dtqcnt, dtqmb });
+
+(4-4-1) データキューに必要なメモリ領域の定義
+
+データキューに必要なメモリ領域として，データキュー管理領域がある．生成
+するデータキュー毎に，必要なサイズのデータキュー管理領域を定義する．具
+体的には，上記の静的APIに対して，次の定義を生成する．
+
+＊dtqcntが0でない場合のみ生成
+static DTQMB _kernel_dtqmb_<データキュー名>[dtqcnt];
+
+(4-4-2) データキューの初期化情報
+
+データキュー初期化ブロック中に生成するデータキューの初期化情報は，次の
+形式とする．
+
+	{ (dtqatr), (dtqcnt), (_kernel_dtqmb_<データキュー名>) }
+
+ここで，dtqcntが0の場合には，_kernel_dtqmb_<データキュー名>に代えて，
+NULLを用いる．
+
+(4-4-3) エラー条件
+
+データキューに関するエラー条件は次の通りである．
+
+＊コンフィギュレータ本体が検出するもの
+・同じdtqidに対するCRE_DTQが複数ある場合（E_OBJ）
+
+＊パス2で検出するもの
+・dtqatrが（［TA_TPRI］）でない場合（E_RSATR）
+・dtqmbがNULLでない場合（E_NOSPT）
+
+(4-5) 優先度データキューに関する定義
+
+優先度データキューの省略記号は「PDQ／pdq」である．以下では，システムコ
+ンフィギュレーションファイルに次の静的APIが含まれている時に生成すべき情
+報について述べる．
+
+CRE_PDQ(ID pdqid, { pdqatr, pdqcnt, maxdpri, pdqmb });
+
+(4-5-1) 優先度データキューに必要なメモリ領域の定義
+
+優先度データキューに必要なメモリ領域として，優先度データキュー管理領域
+がある．生成する優先度データキュー毎に，必要なサイズの優先度データキュー
+管理領域を定義する．具体的には，上記の静的APIに対して，次の定義を生成す
+る．
+
+＊pdqcntが0でない場合のみ生成
+static PDQMB _kernel_pdqmb_<優先度データキュー名>[pdqcnt];
+
+(4-5-2) 優先度データキューの初期化情報
+
+優先度データキュー初期化ブロック中に生成する優先度データキューの初期化
+情報は，次の形式とする．
+
+	{ (pdqatr), (pdqcnt), (maxdpri), (_kernel_pdqmb_<優先度データキュー名>) }
+
+ここで，pdqcntが0の場合には，_kernel_pdqmb_<優先度データキュー名>に代え
+て，NULLを用いる．
+
+(4-5-3) エラー条件
+
+優先度データキューに関するエラー条件は次の通りである．
+
+＊コンフィギュレータ本体が検出するもの
+・同じpdqidに対するCRE_PDQが複数ある場合（E_OBJ）
+
+＊パス2で検出するもの
+・pdqatrが（［TA_TPRI］）でない場合（E_RSATR）
+・(TMIN_DPRI <= maxdpri && maxdpri <= TMAX_DPRI)でない場合（E_PAR）
+・pdqmbがNULLでない場合（E_NOSPT）
+
+(4-6) メールボックスに関する定義
+
+メールボックスの省略記号は「MBX／mbx」である．以下では，システムコンフィ
+ギュレーションファイルに次の静的APIが含まれている時に生成すべき情報につ
+いて述べる．なお，メールボックスに必要なメモリ領域はない．
+
+CRE_MBX(mbxid, { mbxatr, maxmpri, mprihd });
+
+(4-6-1) メールボックスの初期化情報
+
+メールボックス初期化ブロック中に生成するメールボックスの初期化情報は，
+次の形式とする．
+
+	{ (mbxatr), (maxmpri) }
+
+(4-6-2) エラー条件
+
+メールボックスに関するエラー条件は次の通りである．
+
+＊コンフィギュレータ本体が検出するもの
+・同じmbxidに対するCRE_MBXが複数ある場合（E_OBJ）
+
+＊パス2で検出するもの
+・mbxatrが（［TA_TPRI］｜［TA_MPRI］）でない場合（E_RSATR）
+・(TMIN_MPRI <= maxmpri && maxmpri <= TMAX_MPRI)でない場合（E_PAR）
+・mprihdがNULLでない場合（E_NOSPT）
+
+(4-7) 固定長メモリプールに関する定義
+
+固定長メモリプールの省略記号は「MPF／mpf」である．以下では，システムコ
+ンフィギュレーションファイルに次の静的APIが含まれている時に生成すべき情
+報について述べる．
+
+CRE_MPF(mpfid, { mpfatr, blkcnt, blksz, mpf, mpfmb });
+
+(4-7-1) 固定長メモリプールに必要なメモリ領域の定義
+
+固定長メモリプールに必要なメモリ領域として，固定長メモリプール領域と固
+定長メモリプール管理領域がある．生成する固定長メモリプール毎に，必要な
+サイズの固定長メモリプール領域（mpfがNULLの場合のみ）と固定長メモリプー
+ル管理領域を確保する．具体的には，上記の静的APIに対して，次の定義を生成
+する．
+
+＊mpfがNULLの場合のみ生成
+static MPF_T _kernel_mpf_<固定長メモリプール名>[(blkcnt) * COUNT_MPF_T(blksz)];
+								
+＊必ず生成
+static MPFMB _kernel_mpfmb_<固定長メモリプール名>[blkcnt];
+
+(4-7-2) 固定長メモリプールの初期化情報
+
+固定長メモリプール初期化ブロック中に生成する固定長メモリプールの初期化
+情報は，次の形式とする．
+
+	{ (mpfatr), (blkcnt), ROUND_MPF_T(blksz), mpf,
+						(_kernel_mpfmb_<固定長メモリプール名>) }
+
+ここで，mpfがNULLの場合には，mpfに代えて，_kernel_mpf_<固定長メモリプー
+ル名>を用いる．
+
+(4-7-3) エラー条件
+
+固定長メモリプールに関するエラー条件は次の通りである．
+
+＊コンフィギュレータ本体が検出するもの
+・同じmpfidに対するCRE_MPFが複数ある場合（E_OBJ）
+
+＊パス2で検出するもの
+・mpfatrが（［TA_TPRI］）でない場合（E_RSATR）
+・blkcntが0の場合（E_PAR）
+・blkszが0の場合（E_PAR）
+・mpfmbがNULLでない場合（E_NOSPT）
+
+＊パス3で検出するもの
+・mpfが固定長メモリプール領域の先頭番地として正しくない場合（E_PAR）
+	- ターゲット依存の値（CHECK_MPF_ALIGN）の倍数でない場合
+	- NULLの場合（ターゲット依存，CHECK_MPF_NONNULL）
+
+(4-8) 周期ハンドラに関する定義
+
+周期ハンドラの省略記号は「CYC／cyc」である．以下では，システムコンフィ
+ギュレーションファイルに次の静的APIが含まれている時に生成すべき情報につ
+いて述べる．なお，周期ハンドラに必要なメモリ領域はない．
+
+CRE_CYC(cycid, { cycatr, exinf, cychdr, cyctim, cycphs });
+
+(4-8-1) 周期ハンドラの初期化情報
+
+周期ハンドラ初期化ブロック中に生成する周期ハンドラの初期化情報は，次の
+形式とする．
+
+	{ (cycatr), (intptr_t)(exinf), (cychdr), (cyctim), (cycphs) }
+
+(4-8-2) エラー条件
+
+周期ハンドラに関するエラー条件は次の通りである．
+
+＊コンフィギュレータ本体が検出するもの
+・同じcycidに対するCRE_CYCが複数ある場合（E_OBJ）
+
+＊パス2で検出するもの
+・cycatrが（［TA_STA］）でない場合（E_RSATR）
+・(0 < cyctim && cyctim <= TMAX_RELTIM)でない場合（E_PAR）
+・(0 <= cycphs && cycphs <= TMAX_RELTIM)でない場合（E_PAR）
+・警告：cycatrにTA_STAが設定されていて，(cycphs == 0)の場合
+
+＊パス3で検出するもの
+・cychdrがプログラムの開始番地として正しくない場合（E_PAR）
+	- ターゲット依存の値（CHECK_FUNC_ALIGN）の倍数でない場合
+	- NULLの場合（ターゲット依存，CHECK_FUNC_NONNULL）
+
+(4-9) アラームハンドラに関する定義
+
+アラームハンドラの省略記号は「ALM／alm」である．以下では，システムコン
+フィギュレーションファイルに次の静的APIが含まれている時に生成すべき情報
+について述べる．なお，アラームハンドラに必要なメモリ領域はない．
+
+CRE_ALM(ID almid, { almatr, (intptr_t)(exinf), almhdr });
+
+(4-9-1) アラームハンドラの初期化情報
+
+アラームハンドラ初期化ブロック中に生成するアラームハンドラの初期化情報
+は，次の形式とする．
+
+	{ (almatr), (exinf), (almhdr) }
+
+(4-9-2) エラー条件
+
+アラームハンドラに関するエラー条件は次の通りである．
+
+＊コンフィギュレータ本体が検出するもの
+・同じalmidに対するCRE_ALMが複数ある場合（E_OBJ）
+
+＊パス2で検出するもの
+・almatrが（TA_NULL）でない場合（E_RSATR）
+
+＊パス3で検出するもの
+・almhdrがプログラムの開始番地として正しくない場合（E_PAR）
+	- ターゲット依存の値（CHECK_FUNC_ALIGN）の倍数でない場合
+	- NULLの場合（ターゲット依存，CHECK_FUNC_NONNULL）
+
+(5) 割込みに関する定義
+
+割込みに関して生成する情報は，ターゲット毎に定めることができる．ターゲッ
+ト毎に定めない場合には，以下で述べるターゲットに依存しない標準的な情報
+を生成する．ターゲット毎に定める場合には，(5-1)と(5-3)に述べる情報は生
+成しない（(5-2)に述べる情報は生成する）．
+
+(5-1) 割込み要求ラインに関する定義
+
+割込み要求ラインの属性を設定する静的API「CFG_INT」で設定した割込み要求
+ラインに関する定義を生成する．具体的には次の通り．
+
+以下では，システムコンフィギュレーションファイルに次の静的APIが含まれ
+ている時に生成すべき情報について述べる．
+
+CFG_INT(INTNO intno, { intatr, intpri });
+
+(5-1-1) 設定する割込み要求ラインの数
+
+設定する割込み要求ラインの数をマクロ定義するプリプロセッサディレクティ
+ブ（#define）を生成する．また，その値を持つ変数の定義を生成する．具体的
+には，次のような行を生成する．
+
+#define TNUM_INTNO <設定する割込み要求ラインの数>
+const uint_t	_kernel_tnum_intno = TNUM_INTNO;
+
+(5-1-2) 割込み要求ライン初期化ブロックの定義
+
+割込み要求ライン初期化ブロックを生成する．具体的には，次のような行を生
+成する．
+
+const INTINIB _kernel_intinib_table[TNUM_INTNO] = {
+	<割込み要求ライン1の初期化情報>,
+	<割込み要求ライン2の初期化情報>,
+				……
+	<割込み要求ラインTNUM_INTNOの初期化情報>
+};
+
+この中の割込み要求ラインの初期化情報は，次の形式とする．
+
+	{ (intno), (intatr), (intpri) }
+
+(5-1-3) エラー条件
+
+割込み要求ラインに関するエラー条件は次の通りである．
+
+＊パス2で検出するもの
+・intnoがCFG_INTに対する割込み番号として正しくない場合（E_PAR）
+・intnoがCFG_INTによって設定済みの場合（E_OBJ）
+・intatrが（［TA_ENAINT］｜［TA_EDGE］）でない場合（E_RSATR）
+	※ ターゲット依存部で割込み属性を追加可（TARGET_INTATR）
+・カーネル管理に固定されているintnoに対して，intpriにTMIN_INTPRIよりも
+　小さい値が指定された場合（E_OBJ）
+・カーネル管理外に固定されているintnoに対して，intpriにTMIN_INTPRIより
+　も小さい値が指定されなかった場合（E_OBJ）
+・intpriがCFG_INTに対する割込み優先度として正しくない場合（E_PAR）
+
+＊必要に応じてターゲット依存部で検出するもの
+・intatrが割込み属性として設定できない値の場合（E_RSATR）
+・intpriが割込み優先度として設定できない値の場合（E_PAR）
+・同一の割込み優先度しか設定できない割込み要求ラインに対して，異なる割
+　込み優先度を設定した場合（E_PAR）
+
+(5-2) 割込みサービスルーチンに関する定義
+
+(5-2-1) 割込みハンドラの生成
+
+システムコンフィギュレーションファイル中に含まれる割込みサービスルーチ
+ンを追加する静的API「ATT_ISR」に対して，同一の割込み番号に対して追加さ
+れた割込みサービスルーチンを順に呼び出す関数を生成する．
+
+具体的には，同一の割込み番号に対して割込みサービスルーチンを追加する
+
+ATT_ISR({ isratr_1, exinf_1, intno, isr_1, isrpri_1 });
+ATT_ISR({ isratr_2, exinf_2, intno, isr_2, isrpri_2 });
+	……
+ATT_ISR({ isratr_n, exinf_n, intno, isr_n, isrpri_n });
+
+という静的APIに対して，次のような関数を生成する．ここで，isrpri_1，
+isrpri_2，……，isrpri_nは，値の小さい順に並べ替えられているものとする．
+値が同じものの間では，システムコンフィギュレーションファイル中での静的
+APIの順序の通りに並んでいるものとする．
+
+static void
+_kernel_inthdr_<intno>(void)
+{
+	PRI		saved_ipm;
+
+	i_begin_int(intno);
+	saved_ipm = i_get_ipm();
+
+	LOG_ISR_ENTER(<intno>);		/* ISR1の呼出し */
+	isr_1((intptr_t)(exinf_1));
+	LOG_ISR_LEAVE(intno);
+
+	if (i_sense_lock()) {		/* ISRの呼出し前の状態に戻す */
+		i_unlock_cpu();
+	}
+	i_set_ipm(saved_ipm);
+
+	LOG_ISR_ENTER(<intno>);		/* ISR2の呼出し */
+	isr_2((intptr_t)(exinf_2));
+	LOG_ISR_LEAVE(intno);
+
+	if (i_sense_lock()) {		/* ISRの呼出し前の状態に戻す */
+		i_unlock_cpu();
+	}
+	i_set_ipm(saved_ipm);
+
+	……
+
+	LOG_ISR_ENTER(<intno>);		/* ISRnの呼出し */
+	isr_n((intptr_t)(exinf_n));
+	LOG_ISR_LEAVE(intno);
+
+	i_end_int(intno);
+}
+
+ここで，ISRnの呼出しの後に呼出し前の状態に戻さないのは，割込みハンドラ
+からのリターンにより，カーネルが元の状態に戻すためである．
+
+同一の割込み番号に対して追加された割込みサービスルーチンが1つのみの場合
+には，次のような関数を生成する．
+
+static void
+_kernel_inthdr_<intno>(void)
+{
+	i_begin_int(intno);
+	LOG_ISR_ENTER(intno);
+	isr_1((intptr_t)(exinf_1));
+	LOG_ISR_LEAVE(intno);
+	i_end_int(intno);
+}
+
+【課題】ここで，LOG_ISR_ENTER，LOG_ISR_LEAVEの引数をどうするかが課題と
+して残っている．ATT_ISRで登録されたISRに対してはISR IDが付与されないた
+め，IDでISRを区別することができない．やむなく割込み番号を渡しているが，
+拡張情報（exinf）も渡すべきかもしれない．
+
+(5-2-2) 割込みハンドラの定義に相当する処理
+
+上のように割込みハンドラを生成した場合には，次に説明する割込みハンドラ
+に関する定義において，システムコンフィギュレーションファイル中に次の静
+的APIが含まれているのと同様に処理する．
+
+DEF_INH(inhno, { TA_NULL, _kernel_inthdr_<intno> });
+
+ここでinhnoは，intnoに対応する割込みハンドラ番号である．
+
+(5-2-3) エラー条件
+
+割込みサービスルーチンに関するエラー条件は次の通りである．
+
+＊パス2で検出するもの
+・isratrが（TA_NULL）でない場合（E_RSATR）
+	※ ターゲット依存部で割込みサービスルーチン属性を追加可（TARGET_ISRATR）
+・intnoがATT_ISRに対する割込み番号として正しくない場合（E_PAR）
+	※ intnoに対応するinhnoがない場合を含む
+・(TMIN_ISRPRI <= isrpri && isrpri <= TMAX_ISRPRI)でない場合（E_PAR）
+・intnoに対応するinhnoに対してDEF_INHがある場合（E_OBJ）
+・intnoに対するCFG_INTがない場合（E_OBJ）
+・intnoに対してCFG_INTで設定された割込み優先度がTMIN_INTPRIよりも小さい
+　場合（E_OBJ）
+	※ カーネル管理外のISRはサポートしないため
+
+＊必要に応じてターゲット依存部で検出するもの
+・isrがプログラムの開始番地として正しくない場合（E_PAR）
+
+(5-3) 割込みハンドラに関する定義
+
+割込みハンドラを定義する静的API「DEF_INH」で定義した割込みハンドラ（上
+述の割込みサービスルーチンの追加によりコンフィギュレータが生成した割込
+みハンドラを含む）に関する定義を生成する．具体的には次の通り．
+
+以下では，システムコンフィギュレーションファイルに次の静的APIが含まれ
+ている時に生成すべき情報について述べる．
+
+DEF_INH(inhno, { inhatr, inthdr });
+
+(5-3-1) 定義する割込みハンドラの数
+
+定義する割込みハンドラの数をマクロ定義するプリプロセッサディレクティブ
+（#define）を生成する．また，その値を持つ変数の定義を生成する．具体的
+には，次のような行を生成する．
+
+#define TNUM_INHNO <定義する割込みハンドラの数>
+const uint_t	_kernel_tnum_inhno = TNUM_INHNO;
+
+(5-3-2) 割込みハンドラの出入口処理
+
+定義する割込みハンドラ毎に，割込みハンドラの出入口処理ルーチンを生成す
+る．具体的には，次のような行を生成する．
+
+INTHDR_ENTRY(inhno, inhno_num, inthdr)
+
+ここでinhno_numは，inhno（割込みハンドラ番号）を数値で表現したもので，
+アセンブリ言語記述に使用するためのものである．
+
+(5-3-3) 割込みハンドラ初期化ブロックの定義
+
+割込みハンドラ初期化ブロックを生成する．具体的には，次のような行を生成
+する．
+
+const INHINIB _kernel_inhinib_table[TNUM_INHNO] = {
+	<割込みハンドラ1の初期化情報>,
+	<割込みハンドラ2の初期化情報>,
+				……
+	<割込みハンドラTNUM_INHNOの初期化情報>
+};
+
+この中の割込みハンドラの初期化情報は，次の形式とする．
+
+	{ (inhno), (inhatr), (FP)(INT_ENTRY(inhno, inthdr)) }
+
+(5-3-4) エラー条件
+
+割込みハンドラに関するエラー条件は次の通りである．
+
+＊パス2で検出するもの
+・inhnoがDEF_INHに対する割込みハンドラ番号として正しくない場合（E_PAR）
+・inhnoがDEF_INHによって設定済みの場合（E_OBJ）
+#・inhnoに対応するintnoに対してATT_ISRがある場合（E_OBJ）
+#	※ inhnoに対応するintnoがない場合には，このチェックを行わない
+#	→ このチェックは，割込みサービスルーチン側で行う
+・inhatrが（TA_NULL）でない場合（E_RSATR）
+	※ ターゲット依存部で割込みハンドラ属性を追加可（TARGET_INHATR）
+	※ TA_NONKERNELを使う場合には，TARGET_INHATRに設定する
+・カーネル管理に固定されているinhnoに対して，inhatrにTA_NONKERNELが指定
+　されている場合（E_RSATR）
+・カーネル管理外に固定されているinhnoに対して，inhatrにTA_NONKERNELが指
+　定されていない場合（E_RSATR）
+・inhnoに対応するintnoに対するCFG_INTがない場合（E_OBJ）
+	※ inhnoに対応するintnoがない場合には，このチェックを行わない
+・inhatrにTA_NONKERNELが指定されておらず，inhnoに対応するintnoに対して
+　CFG_INTで設定された割込み優先度がTMIN_INTPRIよりも小さい場合（E_OBJ）
+	※ inhnoに対応するintnoがない場合には，このチェックを行わない
+・inhatrにTA_NONKERNELが指定されており，inhnoに対応するintnoに対して
+　CFG_INTで設定された割込み優先度がTMIN_INTPRI以上である場合（E_OBJ）
+	※ inhnoに対応するintnoがない場合には，このチェックを行わない
+
+＊必要に応じてターゲット依存部で検出するもの
+・inthdrがプログラムの開始番地として正しくない場合（E_PAR）
+
+(6) CPU例外に関する定義
+
+CPU例外に関して生成する情報は，ターゲット毎に定めることができる．ターゲッ
+ト毎に定めない場合には，以下で述べるターゲットに依存しない標準的な情報
+を生成する．ターゲット毎に定める場合には，これらの情報は生成されない．
+
+システムコンフィギュレーションファイル中に，CPU例外ハンドラを定義する
+静的API「DEF_EXC」が含まれている場合に，CPU例外ハンドラに関する定義を
+生成する．
+
+以下では，システムコンフィギュレーションファイルに次の静的APIが含まれ
+ている時に生成すべき情報について述べる．
+
+DEF_EXC(excno, { excatr, exchdr });
+
+(6-1) 定義するCPU例外ハンドラの数
+
+定義するCPU例外ハンドラの数をマクロ定義するプリプロセッサディレクティ
+ブ（#define）を生成する．また，その値を持つ変数の定義を生成する．具体
+的には，次のような行を生成する．
+
+#define TNUM_EXCNO <定義するCPU例外ハンドラの数>
+const uint_t	_kernel_tnum_excno = TNUM_EXCNO;
+
+(6-2) CPU例外ハンドラの出入口処理
+
+定義するCPU例外ハンドラ毎に，CPU例外ハンドラの出入口処理ルーチンを生成
+する．具体的には，次のような行を生成する．
+
+EXCHDR_ENTRY(excno, excno_num, exchdr)
+
+ここでexcno_numは，excno（CPU例外ハンドラ番号）を数値で表現したもので，
+アセンブリ言語記述に使用するためのものである．
+
+(6-3) CPU例外ハンドラ初期化ブロックの定義
+
+CPU例外ハンドラ初期化ブロックを生成する．具体的には，次のような行を生成
+する．
+
+const EXCINIB _kernel_excinib_table[TNUM_EXCNO] = {
+	<CPU例外ハンドラ1の初期化情報>,
+	<CPU例外ハンドラ2の初期化情報>,
+				……
+	<CPU例外ハンドラTNUM_EXCNOの初期化情報>
+};
+
+この中のCPU例外ハンドラの初期化情報は，次の形式とする．
+
+	{ (excno), (excatr), (FP)(EXC_ENTRY(excno, exchdr)) }
+
+(6-4) エラー条件
+
+CPU例外ハンドラに関するエラー条件は次の通りである．
+
+＊パス2で検出するもの
+・excnoがDEF_EXCに対するCPU例外ハンドラ番号として正しくない場合（E_PAR）
+・excnoがDEF_EXCによって設定済みの場合（E_OBJ）
+・excatrが（TA_NULL）でない場合（E_RSATR）
+	※ ターゲット依存部でCPU例外ハンドラ属性を追加可（TARGET_EXCATR）
+
+＊必要に応じてターゲット依存部で検出するもの
+・exchdrがプログラムの開始番地として正しくない場合（E_PAR）
+
+(7) 非タスクコンテキスト用のスタック領域に関する定義
+
+非タスクコンテキスト用のスタック領域に関する定義は，必ず生成しなければ
+ならない．
+
+(7-1) DEF_ICSがない場合
+
+システムコンフィギュレーションファイルに，静的API「DEF_ICS」が含まれて
+いない場合には，次の行を生成する．
+
+#ifdef DEFAULT_ISTK
+
+#define TOPPERS_ISTKSZ		DEFAULT_ISTKSZ
+#define TOPPERS_ISTK		DEFAULT_ISTK
+
+#else /* DEFAULT_ISTK */
+
+static STK_T				_kernel_istack[COUNT_STK_T(DEFAULT_ISTKSZ)];
+#define TOPPERS_ISTKSZ		ROUND_STK_T(DEFAULT_ISTKSZ)
+#define TOPPERS_ISTK		_kernel_istack
+
+#endif /* DEFAULT_ISTK */
+
+(7-2) DEF_ICSがある場合
+
+以下では，システムコンフィギュレーションファイルに次の静的APIが含まれて
+いる時に生成すべき情報について述べる．
+
+DEF_ICS({ istksz, istk });
+
+istkがNULLの場合には，指定されたサイズの非タスクコンテキスト用のスタッ
+ク領域を確保し，非タスクコンテキスト用のスタック領域の初期化情報を生成
+する．具体的には，上記の静的APIに対して，次の行を生成する．
+
+static STK_T				_kernel_istack[COUNT_STK_T(istksz)];
+#define TOPPERS_ISTKSZ		ROUND_STK_T(istksz)
+#define TOPPERS_ISTK		_kernel_istack
+
+istkがNULLでない場合には，非タスクコンテキスト用のスタック領域の初期化
+情報を，次の形式で生成する．
+
+#define TOPPERS_ISTKSZ		(istksz)
+#define TOPPERS_ISTK		(istk)
+
+(7-3) 変数の生成
+
+DEF_ICSの有無によらず，次の定義を生成する．
+
+const SIZE		_kernel_istksz = TOPPERS_ISTKSZ;
+STK_T *const	_kernel_istk = TOPPERS_ISTK;
+
+#ifdef TOPPERS_ISTKPT
+STK_T *const	_kernel_istkpt = TOPPERS_ISTKPT(TOPPERS_ISTK, TOPPERS_ISTKSZ);
+#endif /* TOPPERS_ISTKPT */
+
+(7-4) エラー条件
+
+非タスクコンテキスト用のスタック領域に関するエラー条件は次の通りである．
+
+＊パス2で検出するもの
+・静的API「DEF_ICS」が複数ある（E_OBJ）
+・istkszがスタック領域のサイズとして正しくない場合（E_PAR）
+	- ターゲット依存の値（CHECK_STKSZ_ALIGN）の倍数でない場合
+	※ このエラーチェックは，istkがNULLでない場合にのみ行う
+
+＊パス3で検出するもの
+・istkがスタック領域の先頭番地として正しくない場合（E_PAR）
+	- ターゲット依存の値（CHECK_STACK_ALIGN）の倍数でない場合
+	- NULLの場合（ターゲット依存，CHECK_STACK_NONNULL）
+
+＊必要に応じてターゲット依存部で検出するもの
+・istkszが小さすぎる場合（E_PAR）
+
+(8) タイムイベント管理に関する定義
+
+タイムイベント管理に関連して，次の定義を生成する．
+
+TMEVTN	_kernel_tmevt_heap[TNUM_TSKID + TNUM_CYCID + TNUM_ALMID];
+
+(9) 各モジュールの初期化関数の定義
+
+各カーネルオブジェクトの管理，割込み管理，CPU例外ハンドラ管理の各機能を
+初期化関数を順に呼び出す関数（_kernel_initialize_object）を生成する．次
+の2つの初期化関数を除いては，使用しない機能の初期化関数は呼び出さない．
+
+	_kernel_initialize_interrupt
+	_kernel_initialize_exception
+
+すべての機能を使った場合に生成される関数は次の通りである．
+
+void
+_kernel_initialize_object(void)
+{
+	_kernel_initialize_task();
+	_kernel_initialize_semaphore();
+	_kernel_initialize_eventflag();
+	_kernel_initialize_dataqueue();
+	_kernel_initialize_pridataq();
+	_kernel_initialize_mailbox();
+	_kernel_initialize_mempfix();
+	_kernel_initialize_cyclic();
+	_kernel_initialize_alarm();
+	_kernel_initialize_interrupt();
+	_kernel_initialize_exception();
+}
+
+
+(10) 初期化ルーチンの実行関数の定義
+
+システムコンフィギュレーションファイル中に含まれる初期化ルーチンを追加
+する静的API「ATT_INI」に対して，追加した初期化ルーチンを順に呼び出す関
+数を生成する．具体的には，
+
+ATT_INI({ iniatr, exinf, inirtn });
+
+という静的APIに対して，
+
+	(inirtn)((intptr_t)(exinf));
+
+を呼び出す関数を，_kernel_call_inirtnという名前で生成する．初期化ルーチ
+ンを呼び出す順序は，システムコンフィギュレーションファイル中での静的
+APIの順序に一致させる．
+
+例えば，
+
+ATT_INI({ TA_NULL, 0, timer_initialize });
+ATT_INI({ TA_NULL, CONSOLE_PORTID, serial_initialize });
+
+という2つの静的APIがこの順序で記述された時に生成する関数は次の通りであ
+る．
+
+void
+_kernel_call_inirtn(void)
+{
+	(timer_initialize)((intptr_t)(0));
+	(serial_initialize)((intptr_t)(CONSOLE_PORTID));
+}
+
+(10-1) エラー条件
+
+初期化ルーチンに関するエラー条件は次の通りである．
+
+＊パス2で検出するもの
+・iniatrが（TA_NULL）でない場合（E_RSATR）
+
+＊必要に応じてターゲット依存部で検出するもの
+・inirtnがプログラムの開始番地として正しくない場合（E_PAR）
+
+(11) 終了処理ルーチンの実行関数の定義
+
+システムコンフィギュレーションファイル中に含まれる終了処理ルーチンを追
+加する静的API「ATT_TER」に対して，追加した終了処理ルーチンを順に呼び出
+す関数を生成する．具体的には，
+
+ATT_TER({ teratr, exinf, terrtn });
+
+という静的APIに対して，
+
+	(terrtn)((intptr_t)(exinf));
+
+を呼び出す関数を，_kernel_call_terrtnという名前で生成する．終了処理ルー
+チンを呼び出す順序は，システムコンフィギュレーションファイル中での静的
+APIの逆順に一致させる．
+
+例えば，
+
+ATT_TER({ TA_NULL, 0, timer_terminate });
+ATT_TER({ TA_NULL, CONSOLE_PORTID, serial_terminate });
+
+という2つの静的APIがこの順序で記述された時に生成する関数は次の通りであ
+る．
+
+void
+_kernel_call_terrtn(void)
+{
+	(serial_terminate)((intptr_t)(CONSOLE_PORTID));
+	(timer_terminate)((intptr_t)(0));
+}
+
+(11-1) エラー条件
+
+終了処理ルーチンに関するエラー条件は次の通りである．
+
+＊パス2で検出するもの
+・teratrが（TA_NULL）でない場合（E_RSATR）
+
+＊必要に応じてターゲット依存部で検出するもの
+・terrtnがプログラムの開始番地として正しくない場合（E_PAR）
+
+以上
Index: /asp_ewarm/asp-1.7.0/doc/design.txt
===================================================================
--- /asp_ewarm/asp-1.7.0/doc/design.txt	(revision 61)
+++ /asp_ewarm/asp-1.7.0/doc/design.txt	(revision 61)
@@ -0,0 +1,1447 @@
+
+		TOPPERS/ASPカーネル
+		設計メモ
+
+		対応バージョン: Release 1.7.0
+		最終更新: 2011年3月31日（作成中）
+
+このドキュメントは，TOPPERS/ASPカーネルの設計メモである．作成中のもので
+あり，網羅的ではない．
+
+----------------------------------------------------------------------
+ TOPPERS/ASP Kernel
+     Toyohashi Open Platform for Embedded Real-Time Systems/
+     Advanced Standard Profile Kernel
+
+ Copyright (C) 2005-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: design.txt 2068 2011-05-06 13:39:26Z ertl-hiro $
+----------------------------------------------------------------------
+
+○目次
+
+・TOPPERS/ASPカーネルの実装設計方針
+・システム状態とコンテキストの実装
+	- カーネル動作状態と非動作状態
+	- タスクコンテキストと非タスクコンテキスト
+	- 全割込みロック状態と全割込みロック解除状態
+	- CPUロック状態とCPUロック解除状態
+	- 割込み優先度マスク
+	- ディスパッチ禁止状態とディスパッチ許可状態
+	- ディスパッチ保留状態
+・タスク状態の管理とスケジューリング
+	- タスク状態の管理
+	- タスクスケジューラ
+・タスクディスパッチ処理の実装（★未完成）
+	- タスクディスパッチ処理の必要なタイミング
+	- タスクディスパッチャの構造
+・タスク例外処理機能の実装
+	- タスク例外処理ルーチンの実行開始条件とシステム状態（仕様の確認）
+	- タスク例外処理ルーチンの呼出し処理
+	- タスク例外処理ルーチンの実行開始が必要なタイミング
+	- タスク例外処理ルーチンの実行開始処理
+	- call_texrtnからdispatchを呼び出す処理について
+・CHECKマクロとgoto文の使用
+	- CHECKマクロの定義とその使用法
+	- 設計意図
+	- CHECKマクロを使用してよい条件
+	- 問題を生じることがない根拠
+・ext_tsk，ext_kerの返り値
+・カーネルのデータ構造に対するvolatile宣言について
+・型キャストに伴う警告メッセージ
+・優先度データキュー機能（未完成）
+・性能評価用システム時刻参照機能
+	- 必要性と使途
+	- API仕様
+	- 実装
+・タスク例外処理禁止フラグをenatexで実装している理由
+
+
+○TOPPERS/ASPカーネルの実装設計方針
+
+TOPPERS/ASPカーネル（以下，ASPカーネル）は，TOPPERS新世代カーネルの出発
+点となるリアルタイムカーネルである．TOPPERS新世代カーネル仕様の設計方針
+と，ASPカーネルの適用対象領域と設計方針については，TOPPERS新世代カーネ
+ル統合仕様書に述べられている．
+
+以下では，ASPカーネルの実装設計方針について述べるが，仕様設計方針とも関
+連しており，明確に分離できない部分もある．
+
+TOPPERS/ASPカーネルの実装設計を行うにあたり，次の方針を設定する．
+
+(1) ソースコードの読みやすさ・改造しやすさを重視する
+
+ソースコードが読みやすいことは，オープンソースソフトウェアの品質を向上
+させる上で最も重要な特性である．ソースコードを理解している技術者が増え
+ることで，問題を早期に発見することができ，サポート体制も充実させること
+ができる．また，ソースコードが読みやすいことは，シンプルな設計がされて
+いることも意味しており，信頼性向上にもつながる．さらに，技術者教育のた
+めの教材とする観点からも，ソースコードが読みやすいことは重要となる．
+
+改造しやすいことは，システム毎の要求にあわせたチューニングが行いやすい
+ことを意味しており，擦り合わせ型の開発を支援する性質である．また，ASPカー
+ネルを基盤としてTOPPERS新世代カーネルシリーズを開発していく上でも，改造
+しやすいことは必須の条件である．
+
+(2) 新しいターゲットシステムへのポーティングが容易な構造とする
+
+組込みシステムには多様なハードウェアが用いられるため，それらに容易にポー
+ティングできることは重要な性質である．そのために，実行性能に配慮しつつ
+ハードウェアを抽象化し，ターゲットシステムに依存する部分（ターゲット依
+存部）と依存しない部分（ターゲット非依存部）を明確に分離する．また，開
+発環境（コンパイラなど）に依存する部分も明確に分離する．
+
+(3) 検証が容易な構造とする
+
+信頼性を確保するために，検証が容易な構造とする．
+
+具体的には，サービスコールのほとんど全体を割込み禁止で実行することとし，
+サービスコールの処理途中で割込みを許可しない．この構造は，読みやすく改
+造しやすいソースコードにするためにも有効である．これにより割込み応答性
+が犠牲になるが，それによって問題を生じるアプリケーションは少数であり，
+やむをえないものと考える．
+
+また，条件コンパイル等によりコンフィギュレーションできる箇所を増やすと，
+細かな最適化ができる一方で，検証すべき組合せが増えることから，コンフィ
+ギュレーションできる箇所は必要最低限とする．
+
+(4) 実行性能とメモリ使用量に配慮する
+
+上記の方針を満たした上で，高い実行性能と小さいメモリ使用量を達成できる
+ような実装を行う．実行性能を向上させる際には，平均性能の向上よりも，最
+悪時性能の向上を重視する．
+
+ソースコードの読みやすさを重視すると言っても，実行性能の悪いアルゴリズ
+ムを安易に採用することはせず，高い実行性能を達成できるアルゴリズムを用
+いる．ただし，新しいターゲットシステムへのポーティングを容易にするため
+に大部分をC言語で実装しており，すべてをアセンブリ言語で記述した場合に比
+べて実行性能が落ちるのはやむをえない．
+
+メモリ使用量については，RAMの使用量を削減することに重点を置いた設計を行
+うが，上記の方針および実行性能とのトレードオフを考慮し，ぎりぎりまでの
+削減は行わない．
+
+(5) スケーラビリティに配慮する
+
+様々な規模のシステムに適用できるスケーラビリティをもった構造とする．特
+に，小規模なシステムに適用する際に，使用しない機能をカーネルが持ってい
+ることによるメモリ使用量の増加が最小限になるように配慮する．
+
+具体的には，アプリケーションとカーネルを1つのロードモジュールにリンクす
+る方法（1リンクモデル）を想定し，カーネルを関数単位でライブラリ化して，
+使用する関数のみをリンクできる構造とする．これは一種のコンフィギュレー
+ションであるが，この方法は，条件コンパイルによるコンフィギュレーション
+とは違い，検証工数に与える影響が小さい．
+
+また，固定的に使用するRAM領域を減らし，スタックに置ける情報はできる限り
+スタック上に置く．
+
+
+○システム状態とコンテキストの実装
+
+この章では，「TOPPERS新世代カーネル統合仕様書」の「2.5 システム状態とコ
+ンテキスト」の節に規定されているシステム状態とコンテキストの実装方法に
+ついて記述する．
+
+●カーネル動作状態と非動作状態
+
+カーネルの動作状態を管理するために，カーネル動作状態フラグ（kerflg）を
+用意する．kerflgは，スタートアップモジュールでfalse（＝0）に初期化する．
+また，カーネル動作の開始時にtrueにし，カーネル動作の終了時にfalseにする．
+
+----------------------------------------
+bool_t	kerflg = false;
+----------------------------------------
+
+kerflgは，sns_kerで参照する．カーネル非動作状態でsns_ker以外のサービス
+コールを呼び出した場合の動作は保証する必要がないため，他のサービスコー
+ルではkerflgを参照しない．
+
+●タスクコンテキストと非タスクコンテキスト
+
+タスクコンテキストと非タスクコンテキストの切換えは，ターゲットハードウェ
+アおよびターゲット依存部に委ねる．また，どちらのコンテキストで実行中で
+あるかを判別する関数（sense_context）も，ターゲット依存部で用意すること
+とする．
+
+●全割込みロック状態と全割込みロック解除状態
+
+全割込みロックフラグの管理はターゲット依存部に委ね，全割込みロック状態
+に遷移させるマクロ（SIL_LOC_INT）と，元の状態に戻すマクロ（SIL_UNL_INT）
+は，SILのターゲット依存部で用意することとする．全割込みロック状態である
+か否かを判別する機能は，必要がないために用意していない．
+
+全割込みロック状態でsns_kerとext_ker以外のサービスコールを呼び出した場
+合の動作は保証する必要がないため，サービスコール中で全割込みロック状態
+であることを判別する必要はない．
+
+●CPUロック状態とCPUロック解除状態
+
+CPUロックフラグの管理はターゲット依存部に委ね，CPUロック状態に遷移させ
+る関数（t_lock_cpu／i_lock_cpu／x_lock_cpu）と，CPUロック解除状態に遷移
+させる関数（t_unlock_cpu／i_unlock_cpu／x_unlock_cpu）は，ターゲット依
+存部で用意することとする．また，CPUロック状態であるか否かを判別する関数
+（t_sense_lock／i_sense_lock／x_sense_lock）も，ターゲット依存部で用意
+することとする．
+
+●割込み優先度マスク
+
+割込み優先度マスクの管理はターゲット依存部に委ね，割込み優先度マスクを
+設定する関数（t_set_ipm／i_set_ipm／x_set_ipm）と，それを参照する関数
+（t_get_ipm／i_get_ipm／x_get_ipm）は，ターゲット依存部で用意することと
+する．
+
+ただし，タスクコンテキストの実行中に，割込み優先度マスク全解除状態であ
+ることを効率的に判断するために，割込み優先度マスク全解除状態であること
+を示すフラグ（ipmflg）を用意する．
+
+ipmflgは，カーネルの初期化時にfalseに初期化する．非タスクコンテキストで
+は，割込み優先度マスク全解除状態になることはないため，このフラグを用い
+る必要はなく，フラグの更新も行わない．
+
+----------------------------------------
+bool_t	ipmflg;
+----------------------------------------
+
+●ディスパッチ禁止状態とディスパッチ許可状態
+
+ディスパッチ禁止フラグを管理するために，フラグ（disdsp）を用意する．
+disdspは，カーネルの初期化時にfalseに初期化する．
+
+----------------------------------------
+bool_t	disdsp;
+----------------------------------------
+
+※ disdspではなく，それを論理反転したenadspを用意した方が，ipmflgや
+dspflgとの整合性の観点からは良かった．
+
+●ディスパッチ保留状態
+
+ディスパッチ保留状態は，非タスクコンテキストの実行中，CPUロック状態，割
+込み優先度マスクが全解除でない状態，ディスパッチ禁止状態のいずれか（ま
+たは，それらが重なった状態）である．
+
+タスクコンテキストの実行中に，ディスパッチ保留状態でないことを効率的に
+判別するために，割込み優先度マスク全解除状態であり，ディスパッチ許可状
+態である（ディスパッチ禁止状態でない）ことを示すフラグ（dspflg）を用意
+する．すなわち，常に「dspflg == (ipmflg && !disdsp)」に設定する．
+
+dspflgは，カーネルの初期化時にtrueに初期化する．また，タスクコンテキス
+トにおいて割込み優先度マスクの値が変更されるか，割込み禁止フラグが変更
+される度に更新する．非タスクコンテキストでは，常にディスパッチ保留状態
+であるため，このフラグを用いる必要はなく，フラグの更新も行わない．
+
+----------------------------------------
+bool_t	dspflg;
+----------------------------------------
+
+
+○タスク状態の管理とスケジューリング
+	
+●タスク状態の管理
+
+タスク管理ブロック（TCB）中のタスク状態を管理するフィールド（tstat）で
+は，タスク状態が次のいずれであるかを管理する．
+
+　・実行できる状態
+　・休止状態
+　・（狭義の）待ち状態
+　・強制待ち状態
+　・二重待ち状態
+
+タスクが実行できる状態の時に，実行状態であるか実行可能状態であるかは，
+このフィールドでは管理せず，実行状態のタスクのTCBを指すポインタ変数
+（p_runtsk）によって判別する．実行状態のタスクがない場合は，p_runtskは
+NULLにする．
+
+----------------------------------------
+TCB	*p_runtsk;
+----------------------------------------
+
+p_runtskは，カーネルの初期化時にNULLに初期化し，ディスパッチャにおいて
+更新する．サービスコールの処理の中で自タスクに関する情報を参照する場合
+は，p_runtskを用いる．
+
+●タスクスケジューラ
+
+タスクスケジューラは，実行できる状態のタスクの中から，最も優先順位が高
+いタスク（これを，最高優先順位のタスクと呼ぶ）を決定し，そのタスクの
+TCBを指すポインタ変数（p_schedtsk）を設定する．
+
+----------------------------------------
+TCB	*p_schedtsk;
+----------------------------------------
+
+タスクスケジューラに対しては，どのタスクが実行できる状態であるかを知ら
+せる必要がある．そのため，タスクスケジューラは，次の2つの関数を用意する．
+
+　・タスクが実行できる状態に遷移したことを知らせる関数（make_runnable）
+　・タスクが実行できる状態から他の状態へ遷移したことを知らせる関数
+	（make_non_runnable）
+
+また，処理の効率化のために，上の2つの関数を用いずにレディキューを直接操
+作してタスクスケジュールを行う関数として，次の2つの関数を用意する．
+
+　・タスクの優先度の変更（change_priority）
+　・レディキューの回転（rotate_ready_queue）
+
+
+○タスクディスパッチ処理の実装
+
+●タスクディスパッチ処理の必要なタイミング
+
+タスクディスパッチは，実行状態のタスク（p_runtsk）と最高優先順位のタス
+ク（p_schedtsk）が一致しておらず，ディスパッチ保留状態でない場合に行う．
+このことから，タスクディスパッチ処理を行う必要があるのは，次の3つの場合
+である．
+
+(1) 実行状態のタスクが実行できる状態でなくなる
+
+自タスクを広義の待ち状態に遷移させるサービスコールや，自タスクを終了さ
+せるサービスコールにおいて，タスクディスパッチ処理を行う必要がある．
+
+(2) 最高優先順位のタスクが変化する
+
+タスクの起動，タスクの待ち解除，タスクの強制待ちからの再開，タスクの優
+先度の変更，タスクの優先順位の回転を行うサービスコールにおいて，最高優
+先順位のタスクが変化し，ディスパッチ保留状態でない場合には，タスクディ
+スパッチ処理を行う必要がある．
+
+(3) ディスパッチ保留状態が解除される
+
+ディスパッチ保留状態とは，非タスクコンテキストの実行中，CPUロック状態，
+割込み優先度マスクが全解除でない状態，ディスパッチ禁止状態の総称である
+ため，これらの状態のいずれかが遷移するタイミングで，タスクディスパッチ
+処理を行う必要がある．具体的には，次のタイミングが該当する．
+
+(3-1) 非タスクコンテキストからタスクコンテキストに遷移する
+
+割込みハンドラまたはCPU例外ハンドラからタスクにリターンする際に，タスク
+ディスパッチ処理を行う必要がある．
+
+(3-2) CPUロック状態が解除される
+
+CPUロック状態においては，上記の(1)や(2)の状況を作り出すサービスコールを
+呼び出すことができないため，CPUロック状態の解除時には，タスクディスパッ
+チ処理を行う必要がない．
+
+(3-3) 割込み優先度マスクが全解除される
+
+割込み優先度マスクの変更（chg_ipm）により割込み優先度マスクが全解除され
+る場合に，タスクディスパッチ処理を行う必要がある．
+
+また，タスクの終了，タスク例外処理ルーチンからのリターン，割込みハンド
+ラからのリターン，割込みサービスルーチンからのリターン，タイムイベント
+ハンドラからのリターン，CPU例外ハンドラからのリターンによって，割込み優
+先度マスクが全解除される場合があり，その場合には，タスクディスパッチ処
+理を行う必要がある．ただし，割込みサービスルーチンおよびタイムイベント
+ハンドラからのリターンについては，リターン後も非タスクコンテキストであ
+り，タスクディスパッチ保留状態が継続することから，タスクディスパッチ処
+理を行う必要がない．
+
+(3-4) ディスパッチ許可状態になる
+
+ディスパッチの許可（ena_dsp）において，タスクディスパッチ処理を行う必要
+がある．
+
+また，タスクの終了とタスク例外処理ルーチンからのリターンによって，ディ
+スパッチ許可状態になる場合があり，その場合には，タスクディスパッチ処理
+を行う必要がある．
+
+以上に加えて，カーネルの動作開始時にも，タスクディスパッチ処理を呼び出
+す．
+
+●タスクディスパッチャの構造
+
+タスクディスパッチャの主な機能は，切換え前のタスクのコンテキスト（プロ
+セッサの汎用レジスタ等）をメモリ上に保存し，切換え後のタスクのコンテキ
+ストをメモリ上から復帰することである．ここで，保存／復帰しなければなら
+ないレジスタは，タスクディスパッチャが実行される状況によって，次のよう
+な違いがある．
+
+・タスクが割込み（または，CPU例外）によりプリエンプトされる場合には，す
+　べてのレジスタを保存しなければならない．また，その状態から実行再開す
+　る場合には，すべてのレジスタを復帰しなければならない．
+
+・タスクが自発的にタスクディスパッチャを呼び出す場合には，スクラッチレ
+　ジスタ（caller saved register）以外のレジスタを保存すればよい．また，
+　その状態から実行再開する場合には，スクラッチレジスタ以外のレジスタを
+　復帰すればよい．
+
+・タスクが終了する場合には，どのレジスタも保存する必要がない．
+
+・タスクが実行開始する場合には，どのレジスタも復帰する必要がない．
+
+そこで，それぞれの状況で必要最低限のレジスタのみを保存／復帰するために，
+タスクディスパッチ処理を，(a) コンテキストの保存処理，(b) 実行するタス
+クの選択処理，(c) コンテキストの復帰処理の3つのステップで構成し，(a)と
+(c)のステップについては，タスクディスパッチャが実行される状況毎に用意す
+る．具体的には，次の各処理を行うルーチンを用意する．
+
+(a) コンテキストの保存処理
+	(a-1) タスクが自発的に呼び出した場合の保存処理（dispatch）
+	(a-2) 割込みハンドラの出口で呼び出された場合の保存処理（ret_int）
+	(a-3) CPU例外ハンドラの出口で呼び出された場合の保存処理（ret_exc）
+	(a-4) タスクの終了時の処理（exit_and_dispatch）
+	(a-5) カーネルの動作開始時の処理（start_dispatch）
+(b) 実行するタスクの選択（ディスパッチャ本体，dispatcher）
+(c) コンテキストの復帰処理
+	(c-1) タスクが自発的に呼び出した場合の復帰処理（dispatch_r）
+	(c-2) 割込みハンドラの出口で呼び出された場合の復帰処理（ret_int_r）
+	(c-3) CPU例外ハンドラの出口で呼び出された場合の復帰処理（ret_exc_r）
+	(c-4) タスクの実行開始時の処理（start_r）
+
+
+○タスク例外処理機能の実装
+
+●タスク例外処理ルーチンの実行開始条件とシステム状態（仕様の確認）
+
+タスク例外処理ルーチンは，次の6つの条件が揃った場合に実行が開始される．
+
+　・タスク例外処理許可状態である
+　・保留例外要因が0でない
+　・タスクが実行状態である
+　・タスクコンテキストが実行されている
+　・割込み優先度マスク全解除状態である
+　・CPUロック状態でない
+
+また，タスク例外処理ルーチンの起動／リターン時のシステム状態に関する仕
+様は次の通りである．
+
+				CPUロック		割込み優先度	ディスパッチ
+				フラグ			マスク			禁止フラグ
+------------------------------------------------------------
+【タスク例外処理ルーチン】
+実行開始条件	解除			全解除			任意
+実行開始時処理	そのまま		そのまま		そのまま
+リターン前		原則解除(*1)	原則全解除(*1)	元に戻す
+リターン時処理	解除する		全解除する		元に戻す(*4)
+------------------------------------------------------------
+
+●タスク例外処理ルーチンの呼出し処理
+
+タスク例外処理ルーチンを呼び出す処理は，次の流れとなる．この関数は，
+CPUロック状態で呼び出すことを想定している．
+
+----------------------------------------
+void
+call_texrtn(void)
+{
+	TEXPTN	texptn;
+
+	texptn = p_runtsk->texptn;
+	p_runtsk->texptn = 0U;
+
+	タスク例外処理禁止状態にする
+	ディスパッチ禁止フラグを保存する
+
+	CPUロック解除状態にする
+	タスク例外処理ルーチンを呼び出す
+	CPUロック状態にする
+
+	割込み優先度マスク全解除状態にする
+	ディスパッチ禁止フラグを元に戻す
+	タスク例外処理禁止状態にする … (*2)
+
+	必要な場合にはディスパッチを行う … (*1)
+
+	タスク例外処理許可状態にする
+}
+----------------------------------------
+
+(*1)において，必要な場合にタスク切換えを行うのは，割込み優先度マスクを
+全解除にし，ディスパッチ禁止フラグを元に戻した結果，ディスパッチ保留状
+態が解除され，ディスパッチが必要になる場合があるためである．
+
+また，ディスパッチを行う前にタスク例外処理禁止状態にする(*2)理由につい
+ては，「call_texrtnからdispatchを呼び出す処理について」の節を参照するこ
+と．
+
+●タスク例外処理ルーチンの実行開始が必要なタイミング
+
+タスク例外処理ルーチンは，前述の6つの条件が揃った場合に実行開始すべきで
+あるため，6つの条件のいずれかを新たに満たすようになる可能性のあるタイミ
+ングで，タスク例外処理ルーチンの実行開始が必要になる．
+
+以下では，6つの条件のいずれかを新たに満たすようになるタイミングについて
+検討する．
+
+(1) タスク例外処理許可状態である
+
+タスク例外処理の許可（ena_tex）によって，タスク例外処理許可状態になる．
+また，タスク例外処理ルーチンからのリターンによっても，タスク例外処理許
+可状態になる．
+
+(2) 保留例外要因が0でない
+
+タスク例外処理の要求（ras_tex，iras_tex）によって，タスクの保留例外要因
+が0でなくなる．ただし，非タスクコンテキストからのタスク例外処理の要求
+（iras_tex）では，(4)の条件が満たされないため，タスク例外処理ルーチンの
+実行開始は必要ない．
+
+(3) タスクが実行状態である
+
+タスクディスパッチャにより，切換え後のタスクが実行状態になる．
+
+(4) タスクコンテキストが実行されている
+
+割込みハンドラおよびCPU例外ハンドラからのリターンによって，タスクコンテ
+キストに戻る場合がある．
+
+(5) 割込み優先度マスク全解除状態である
+
+割込み優先度マスクの変更（chg_ipm）によって，割込み優先度マスクが全解除
+になる．
+
+また，タスクの終了，タスク例外処理ルーチンからのリターン，割込みハンド
+ラからのリターン，CPU例外ハンドラからのリターンによっても，割込み優先度
+マスクが全解除される場合もある．
+
+ただし，タスクの終了時については，タスクの終了後は別のタスクへ切り換わ
+るため，切り換わった後のタスクに対するタスク例外処理ルーチンの実行開始
+を，タスクディスパッチ後の処理で行えばよい．
+
+(6) CPUロック状態でない
+
+CPUロック状態の解除（unl_cpu，iunl_cpu）によって，CPUロック状態でなくな
+る．ただし，非タスクコンテキストでのCPUロック状態の解除（iunl_cpu）では，
+(4)の条件が満たされないため，タスク例外処理ルーチンの実行開始は必要ない．
+
+また，タスクの終了，タスク例外処理ルーチンからのリターン，割込みハンド
+ラからのリターン，割込みサービスルーチンからのリターン，タイムイベント
+ハンドラからのリターン，CPU例外ハンドラからのリターンによって，CPUロッ
+ク状態でなくなる場合もある．
+
+ただし，割込みサービスルーチンおよびタイムイベントハンドラからのリター
+ンについては，リターン後も非タスクコンテキストの実行が続き，(4)の条件が
+満たされないため，タスク例外処理ルーチンの実行開始は必要ない．
+
+タスクの終了時については，タスクの終了後は別のタスクへ切り換わるため，
+切り換わった後のタスクに対するタスク例外処理ルーチンの実行開始を，タス
+クディスパッチ後の処理で行えばよい．
+
+以上より，重複するケースを考慮すると，タスク例外処理ルーチンの実行開始
+が必要になる可能性があるのは，以下の処理である．
+
+(a) タスク例外処理の許可（ena_tex）… (1)
+(b) タスク例外処理ルーチンの出口処理 … (1)(5)(6)
+(c) タスク例外処理の要求（ras_tex）… (2)
+(d) タスクディスパッチ後の処理 … (3)(5)(6)
+	(d-1) dispatch_r
+	(d-2) ret_int_r
+	(d-3) ret_exc_r
+	(d-4) start_r
+(e) 割込みハンドラの出口処理 … (4)(5)(6)
+(f) CPU例外ハンドラの出口処理 … (4)(5)(6)
+(g) 割込み優先度マスクの変更（chg_ipm）… (5)
+(h) CPUロック状態の解除（unl_cpu）… (6)
+
+この中で(d-4)に関しては，タスクの実行開始直後はタスク例外処理禁止状態で
+あり（自タスクがena_texするまでは，タスク例外が許可されない），(1)の条
+件が満たされないため，タスク例外処理ルーチンの実行開始は必要ない．
+
+また(h)に関しては，次に述べる理由により，CPUロック状態が継続している間
+に他の5つの条件が新たに満たされることはないため，タスク例外処理ルーチン
+の実行開始は必要ない．
+
+CPUロック状態では，まず，タスク例外処理の許可（ena_tex），タスク例外処
+理の要求（ras_tex，iras_tex），割込み優先度マスクの変更（chg_ipm）を行
+うことはできず，タスクディスパッチも起こらない．CPUロック状態でタスク例
+外処理ルーチンからリターンすることはできるが，この場合はCPUロック状態も
+解除され，CPUロック状態が継続しない．CPUロック状態で割込みハンドラから
+リターンした場合も，これと同様である．
+
+最後に，CPUロック状態でCPU例外ハンドラからリターンした場合が問題になる．
+これについては，CPU例外が発生した時に，CPUロック状態であった場合と，
+CPUロック解除状態であった場合に分けて考える．CPUロック解除状態であった
+場合には，CPU例外ハンドラからのリターンにより，CPUロック状態が解除され
+るため，割込みハンドラからリターンした場合と同様である．CPUロック状態で
+あった場合には，起動されるCPU例外ハンドラはカーネル管理外のCPU例外ハン
+ドラであるため，その中で(1)〜(3)と(5)の条件が新たに満たされることはない．
+CPU例外ハンドラの実行前後で(4)の条件は保存されることから，CPU例外ハンド
+ラからのリターンによって，(1)〜(5)の条件はCPU例外の発生前に戻り，新たに
+満たされることはない．
+
+●タスク例外処理ルーチンの実行開始処理
+
+ここでは，前の節で検討したタスク例外処理ルーチンの実行開始が必要なタイ
+ミングのそれぞれについて，実行開始処理の実装方法について述べる．
+
+(a) タスク例外処理の許可（ena_tex）
+
+ena_texがタスクから呼び出された場合には，自タスクに対して「タスクが実行
+状態である」「タスクコンテキストが実行されている」の2条件は満たされてお
+り，「タスク例外処理許可状態である」の条件はena_texの処理により満たされ
+る．また，「CPUロック状態でない」の条件はena_texの入口でチェックしてい
+る．そのため，「保留例外要因が0でない」と「割込み優先度マスク全解除状態
+である」の2条件が満たされている場合には，タスク例外処理ルーチンを呼び出
+す．
+
+ena_texの本体の処理（エラー処理を除く）は次の通り．
+
+----------------------------------------
+		p_runtsk->enatex = true;
+		if (p_runtsk->texptn != 0U && ipmflg) {
+			call_texrtn();
+		}
+----------------------------------------
+
+(b) タスク例外処理ルーチンの出口処理
+
+タスク例外処理ルーチンの出口処理（call_texrtnの後半）では，自タスクに対
+して「タスクが実行状態である」「タスクコンテキストが実行されている」の
+2条件は満たされており，「タスク例外処理許可状態である」「割込み優先度マ
+スク全解除状態である」「CPUロック状態でない」の3条件が出口処理で満たさ
+れる．そのため，「保留例外要因が0でない」が満たされている場合には，タス
+ク例外処理ルーチンを呼び出す必要がある．
+
+ただし，タスク例外処理ルーチンの出口処理で単純にcall_texrtnを呼び出すと，
+call_texrtnの中からcall_texrtnを呼び出すことになり，タスク例外処理が繰
+り返し要求された場合に，スタックの使用量に上限がなくなる．そこで，タス
+ク例外処理ルーチンの出口処理で「保留例外要因が0でない」場合には，
+call_texrtnの中でループさせる．
+
+修正したcall_texrtnの流れは次の通り．
+
+----------------------------------------
+void
+call_texrtn(void)
+{
+	TEXPTN	texptn;
+
+	ディスパッチ禁止フラグを保存する … (*3)
+	タスク例外処理禁止状態にする … (*6)
+
+	do {
+		texptn = p_runtsk->texptn;
+		p_runtsk->texptn = 0U;
+
+		CPUロック解除状態にする
+		タスク例外処理ルーチンを呼び出す
+		CPUロック状態にする
+
+		割込み優先度マスク全解除状態にする
+		ディスパッチ禁止フラグを元に戻す … (*4)
+		タスク例外処理禁止状態にする … (*2)
+
+		必要な場合にはディスパッチを行う … (*1)
+	}  while (p_runtsk->texptn != 0U);
+
+	タスク例外処理許可状態にする … (*5)
+}
+----------------------------------------
+
+タスク例外処理ルーチンの呼出し前にディスパッチ禁止フラグを保存する処理
+は，(*4)において元の状態に戻すことから，ループの外(*3)で行うのが効率が
+よい．
+
+タスク例外処理ルーチンの呼出し前にタスク例外処理禁止状態にする処理は，
+(*2)においてタスク例外処理禁止状態にすることから，ループ外(*6)で行うの
+が効率がよい．また，タスク例外処理ルーチンの呼出し後にタスク例外処理許
+可状態にする処理も，ループの外(*5)で行う方が効率がよい．
+
+(c) タスク例外処理の要求（ras_tex）
+
+ras_texがタスクから呼び出された場合で，対象タスクが自タスクの場合には，
+自タスクに対して「タスクが実行状態である」「タスクコンテキストが実行さ
+れている」の2条件は満たされており，「保留例外要因が0でない」の条件は
+ras_texの処理により満たされる（ras_texのパラメータrasptnが0の場合はエラー
+となるため）．また，「CPUロック状態でない」の条件はras_texの入口でチェッ
+クしている．そのため，対象タスクが自タスクであり，「タスク例外処理許可
+状態である」と「割込み優先度マスク全解除状態である」の2条件が満たされて
+いる場合には，タスク例外処理ルーチンを呼び出す．
+
+ras_texの本体の処理（エラー処理を除く）は次の通り．
+
+----------------------------------------
+		p_tcb->texptn |= rasptn;
+		if (p_tcb == p_runtsk && p_runtsk->enatex && ipmflg) {
+			call_texrtn();
+		}
+----------------------------------------
+
+(d-1) dispatch_r
+
+dispatch_rにおいては，dispatch_rからのリターン先のタスクに対して，「タ
+スクが実行状態である」「タスクコンテキストが実行されている」の2条件は満
+たされている．また，CPUロック状態でdispatch_rに来ることはないため，
+「CPUロック状態でない」の条件も成立している．そのため，「タスク例外処理
+許可状態である」「保留例外要因が0でない」「割込み優先度マスク全解除状態
+である」の3条件が満たされている場合には，タスク例外処理ルーチンを呼び出
+す必要がある．
+
+これを実現するために，タスクコンテキストからのディスパッチ処理を次のよ
+うに修正する．
+
+----------------------------------------
+void
+dispatch(void)
+{
+	………
+
+  dispatch_r:
+	スクラッチレジスタを除くすべてのレジスタをスタックから復帰する
+	calltex();
+}
+----------------------------------------
+
+ここでcalltexは，「タスク例外処理許可状態である」「保留例外要因が0でな
+い」「割込み優先度マスク全解除状態である」の3条件が満たされている場合に
+call_texrtnを呼び出す関数である．
+
+----------------------------------------
+void
+calltex(void)
+{
+	if (p_runtsk->enatex && p_runtsk->texptn != 0U && ipmflg) {
+		call_texrtn();
+	}
+}
+----------------------------------------
+
+(d-2) ret_int_r
+
+ret_int_rは，割込みハンドラの出口処理でディスパッチを行ったタスクが，実
+行を再開する際の処理である．そのため，ret_int_rからのリターン先のタスク
+に対して，「タスクが実行状態である」「タスクコンテキストが実行されてい
+る」の2条件は満たされている．また，CPUロック状態でret_int_rに来ることは
+ないため，「CPUロック状態でない」の条件も成立している．そのため，「タス
+ク例外処理許可状態である」「保留例外要因が0でない」「（割込みハンドラか
+らのリターン後に）割込み優先度マスク全解除状態である」の3条件が満たされ
+ている場合には，タスク例外処理ルーチンを呼び出す必要がある．
+
+これを実現するために，割込みハンドラの出入口処理を次のように修正する．
+
+----------------------------------------
+void
+<割込みの出入口処理>(void)
+{
+		………
+
+			  ret_int_r:
+				スクラッチレジスタを除くすべてのレジスタをスタックから復帰する
+				calltex();
+			}
+		………
+}
+----------------------------------------
+
+(d-3) ret_exc_r
+
+ret_exc_rは，CPU例外ハンドラの出口処理でディスパッチを行ったタスクが，
+実行を再開する際の処理である．
+
+カーネル管理のCPU例外ハンドラの出口処理（ret_exc）は，割込みハンドラの
+出口処理（ret_int）と同様である．これは，CPUロック状態でCPU例外が発生し
+た場合には，カーネル管理外のCPU例外ハンドラとなり，CPU例外ハンドラの出
+口処理でディスパッチを行うことはなく，ret_excにも来ないためである．その
+ため，ret_exc_rからのリターン先のタスクに対して，「CPUロック状態でない」
+の条件が成立している．
+
+このことから，CPU例外ハンドラの出入口処理についても，割込みハンドラの出
+入口処理と同様に，次のように修正すればよい．
+
+----------------------------------------
+void
+<CPU例外の出入口処理>(void)
+{
+			………
+
+				  ret_exc_r:
+					スクラッチレジスタを除くすべてのレジスタを
+												スタックから復帰する
+					calltex();
+				}
+			………
+}
+----------------------------------------
+
+(e) 割込みハンドラの出口処理
+
+割込みハンドラからタスクへリターンする場合には，リターン先のタスクに対
+して，「タスクが実行状態である」「タスクコンテキストが実行されている」
+の2条件は満たされている．また，CPUロック状態で割込みハンドラが実行され
+ることはないため，「CPUロック状態でない」の条件も成立している．そのため，
+「タスク例外処理許可状態である」「保留例外要因が0でない」「（割込みハン
+ドラからのリターン後に）割込み優先度マスク全解除状態である」の3条件が満
+たされている場合には，タスク例外処理ルーチンを呼び出す必要がある．
+
+割込みハンドラの呼出し前と呼出し後でこれらの条件が変化するのは，実行状
+態のタスクが変化した時と，割込みハンドラ中でiras_texが呼び出された場合
+である．割込みハンドラからはena_texとchg_ipmは呼び出せないため，「タス
+ク例外処理許可状態である」と「（割込みハンドラからのリターン後に）割込
+み優先度マスク全解除状態である」の2条件が変化することはない．
+
+この2つの状況の内，実行状態のタスクが変化するケースは，ret_int_rで考慮
+済みである．割込みハンドラ中でiras_texが呼び出された場合には，reqflgが
+trueになるため，タスク例外処理ルーチンの実行開始処理は，reqflgがtrueの
+時にのみ行えばよい．
+
+これを実現するために，上で修正した割込みハンドラの出入口処理を，さらに
+次のように修正する．
+
+----------------------------------------
+void
+<割込みの出入口処理>(void)
+{
+	………
+
+	if (タスクコンテキストで割込み発生) {
+		………
+		if (reqflg) {
+			………
+
+			  ret_int_r:
+				スクラッチレジスタを除くすべてのレジスタをスタックから復帰する
+			}
+			calltex();
+		}
+	}
+	………
+}
+----------------------------------------
+
+(f) CPU例外ハンドラの出口処理
+
+カーネル管理のCPU例外ハンドラの出口処理は，割込みハンドラの出口処理と同
+様である．
+
+カーネル管理外のCPU例外ハンドラの中では，実行状態のタスクが変化すること
+はなく，iras_texやena_texを呼び出すこともできないため，タスク例外処理ルー
+チンの実行開始条件が新たに満たされることはなく，タスク例外処理ルーチン
+の実行開始は必要ない．
+
+このことから，CPU例外ハンドラの出入口処理についても，割込みハンドラの出
+入口処理と同様に，次のように修正すればよい．
+
+----------------------------------------
+void
+<CPU例外の出入口処理>(void)
+{
+		………
+		if (タスクコンテキストでCPU例外発生) {
+		………
+			if (reqflg) {
+
+				  ret_exc_r:
+					スクラッチレジスタを除くすべてのレジスタを
+												スタックから復帰する
+				}
+				calltex();
+			}
+		}
+		………
+}
+----------------------------------------
+
+(g) 割込み優先度マスクの変更
+
+chg_ipmがタスクから呼び出された場合には，自タスクに対して「タスクが実行
+状態である」「タスクコンテキストが実行されている」の2条件は満たされてい
+る．また，「CPUロック状態でない」の条件はchg_ipmの入口でチェックしてい
+る．そのため，パラメータintpriがTIPM_ENAALLであり，「タスク例外処理許可
+状態である」「保留例外要因が0でない」の2条件が満たされている場合には，
+タスク例外処理ルーチンを呼び出す．
+
+chg_ipmの関連部分の処理は次の通り．
+
+----------------------------------------
+	t_set_ipm(intpri);
+	if (intpri == TIPM_ENAALL) {
+		ipmflg = true;
+		ここにタスク切換え処理が入る
+		if (p_runtsk->enatex && p_runtsk->texptn != 0U) {
+			call_texrtn();
+		}
+	}
+----------------------------------------
+
+dispatchを呼び出してタスク切換えを行う場合には，dispatchの出口でタスク
+例外処理ルーチンを呼び出すためここで呼出し処理を行う必要はないが，コー
+ドが複雑になるため，dispatchを呼び出した場合もここでタスク例外処理ルー
+チンの呼出し処理を行っている．
+
+●call_texrtnからdispatchを呼び出す処理について
+
+dispatch_rから（ターゲットによってはcalltexを経由して）call_texrtnを呼
+び出し，call_texrtnからdispatchを呼び出すため，この2つの関数は相互再帰
+呼出しをしている．ここでは，この実装で支障のない理由を説明する．
+
+call_texrtnからdispatchを呼び出すのは，ディスパッチが保留されていない状
+態で呼び出されたタスク例外処理ルーチンが，その実行中にディスパッチ保留
+状態に遷移し，さらにタスクディスパッチを必要とする処理を行い，ディスパッ
+チ保留状態を解除しないままリターンした場合である．この場合，call_texrtn
+の中でディスパッチ保留状態を解除した後に，dispatchを呼び出してタスクディ
+スパッチを行う．つまり，call_texrtnからdispatchを呼び出す処理は，タスク
+例外処理ルーチンの中でディスパッチ保留状態を解除すべきであったのを，解
+除せずにリターンした場合を救済するためのものである．以下，この振舞いを
+「救済ケース」と呼ぶ．
+
+そこで，比較のために，タスク例外処理ルーチンの最後で，正しくディスパッ
+チ保留状態を解除してからリターンした場合の振舞いを考える．この場合には，
+ディスパッチ保留状態を解除するサービスコール（ena_dsp，chg_ipm）の中で，
+dispatchが呼び出されてタスクディスパッチが起こる．以下，この振舞いを
+「正常ケース」と呼ぶ．
+
+正常ケースと救済ケースを比較すると，call_texrtn→タスク例外処理ルーチン
+→サービスコール→dispatchの順でdispatchが呼び出されるか，call_texrtnか
+ら直接dispatchが呼び出されるかの違いということになり，救済ケースの方が
+スタックの使用量は少ない．つまり，正常ケースの動きを想定してスタック領
+域が用意してあれば，救済ケースでも問題なく動作することになる．
+
+ここで，正常ケースと救済ケースで，上記以外に違いがないことが重要である．
+具体的には，call_texrtnの中で，タスク例外処理許可状態にする（p_runtsk
+->enatexをtrueにする）前に，dispatchを呼び出すことが重要である．タスク
+例外処理許可状態にした後にdispatchを呼び出すと，出口のdispatch_rで，再
+びタスク例外処理ルーチンを実行してしまう可能性があり，救済ケースの方が
+スタックの使用量が増えてしまう．
+
+タスク例外処理ルーチンの中で，タスク例外処理許可状態にしたままリターン
+した場合には，call_texrtnから呼び出したdispatchの出口のdispatch_rで再び
+タスク例外処理ルーチンを実行してしまう可能性がある．この場合も，タスク
+例外処理ルーチンの最後で，ディスパッチ保留状態を解除してからリターンし
+た場合よりはスタックの使用量が少ないが，タスク例外処理禁止状態にした後
+にディスパッチ保留状態を解除してリターンした場合よりは，スタックの使用
+量が増える場合がある．そこで，このような状況が起こらないように，
+dispatchを呼ぶ前にp_runtsk->enatexをfalseにする．
+
+
+○CHECKマクロとgoto文の使用
+
+ASPカーネルの実装においては，サービスコールの静的なエラーをチェックする
+ために，名称が"CHECK_"で始まる一連のマクロ（これらを，CHECKマクロと総称
+する）を用いている．
+
+CHECKマクロの定義中にはgoto文を含んでいるが，MISRA-Cなどのコーディング
+ルールではgoto文の使用を禁止しており，goto文を使うべきではないという意
+見も多い．また，マクロの定義中にgoto文を使用することが問題であるという
+意見もある．
+
+ここでは，定義中にgoto文を含むCHECKマクロを用いる設計意図とそれを使用し
+てよい条件，CHECKマクロの使用によりソフトウェアの信頼性に問題が生じるこ
+とがないことを論証する．
+
+なお，ASPカーネルのカーネル本体の実装では，CHECKマクロ以外にgoto文を用
+いている箇所はない（一部のシステムサービスでは，これ以外の方法でgoto文
+を用いている）．
+
+●CHECKマクロの定義とその使用法
+
+kernel/check.hには，25個のCHECKマクロが定義されているが，いずれも次のパ
+ターンで定義されている．ここでXXXXXには，チェックしたいエラーの種類を表
+す文字列が入る．
+
+----------------------------------------
+#define CHECK_XXXXX(<……>) {				\
+	if (<エラー条件>) {						\
+		ercd = <エラーコード>;				\
+		goto error_exit;					\
+	}										\
+}
+----------------------------------------
+
+これらのCHECKマクロは，多くのサービスコールの処理関数中で，次のように使
+用されている．
+
+----------------------------------------
+ER
+<サービスコール名>(……)
+{
+	<ローカル変数の宣言>
+	ER		ercd;
+
+	LOG_XXX_YYY_ENTER(……);
+	CHECK_XXXXX(……);
+	CHECK_YYYYY(……);
+
+	<サービスコール処理本体>
+
+  error_exit:
+	LOG_XXX_YYY_LEAVE(……);
+	return(ercd);
+}
+----------------------------------------
+
+この例では，CHECKマクロを2つ使用しているが，1つのみ使用している場合もあ
+れば，3つ以上使用している場合もある．また，複数のCHECKマクロの間に，ロー
+カル変数への代入文が入る場合もある（例えば，ter_tskの処理関数）．
+
+●設計意図
+
+CHECKマクロを使用する意図は，ほとんどのサービスコールで必要な静的エラー
+のチェックコードをパターン化し，ソースコードの簡潔さを保つことで読みや
+すさを向上させるとともに，記述ミスの可能性を減らすことである．
+
+ちなみに，CHECKマクロを使用しない場合，上に示したサービスコールの処理関
+数は，次のように記述することになる．
+
+----------------------------------------
+ER
+<サービスコール名>(……)
+{
+	<ローカル変数の宣言>
+	ER		ercd;
+
+	LOG_XXX_YYY_ENTER(……);
+	if (<XXXXXのエラー条件>) {
+		ercd = <XXXXXのエラーコード>;
+	}
+	else {
+		if (<YYYYYのエラー条件>) {
+			ercd = <YYYYYのエラーコード>;
+		}
+		else {
+
+			<サービスコール処理本体>
+
+		}
+	}
+	LOG_XXX_YYY_LEAVE(……);
+	return(ercd);
+}
+----------------------------------------
+
+CHECKマクロの内容を知っているという前提の下では，元のソースコードの方が
+読みやすいのは明らかである．
+
+なお，このようなCHECKマクロの定義には，goto文の使用が不可避である．
+
+●CHECKマクロを使用してよい条件
+
+CHECKマクロは，次の条件を満たすように使用しなければならない．
+
+(1) CHECKマクロは，サービスコール処理関数の先頭部分で，サービスコール入
+　　口のログを出した後，クリティカルセクションに入る前までに，処理関数
+　　のトップレベルで用いる．
+
+(2) サービスコール処理関数の末尾部分で，クリティカルセクションを抜けた
+　　後，サービスコール出口のログを出す前に，処理関数のトップレベルに，
+　　error_exitラベルを置く．
+
+●問題を生じることがない根拠
+
+このような方法でgoto文を使用しても，ソフトウェアの信頼性に問題が生じる
+ことがないことを主張するには，そもそも，MISRA-Cなどのコーディングルール
+でgoto文の使用を禁止している根拠，言い換えると，goto文の使用によりソフ
+トウェアの信頼性に問題が生じる可能性のある理由を明らかにする必要がある．
+
+MISRA-Cのドキュメントでは，goto文の使用を禁止する根拠についてあまり明確
+になっておらず，ここではその根拠を次のように推測する．
+
+・処理の流れが複雑になり，プログラムの意図が読みにくくなる（いわゆる，
+　スパゲッティプログラムになる）．
+
+CHECKマクロの場合には，goto文をエラー発生時の強制脱出に用いており，ラベ
+ルもerror_exitとするなど，プログラムの意図は明らかである．一方，このよ
+うにgoto文をエラー時の強制脱出に用いる場合には，次の点もgoto文の使用を
+禁止する根拠になりうる．
+
+・goto文で強制脱出することにより，脱出時に行わなければならない後処理が
+　飛ばされるおそれがある．
+
+ただしこの点についても，CHECKマクロを上記の使用条件を満たして使う限りは，
+脱出時に行わなければならない後処理はなく，CHECKマクロの使用によりソフト
+ウェアの信頼性に問題が生じることはない．
+
+問題を生じることがないことを論証するもう1つ方法は，コーディングルールに
+合致しないプログラムが，コーディングルールに合致したプログラムと等価で
+あることを示す方法である．
+
+すでに「設計意図」の節で述べたように，CHECKマクロを使用したプログラムは，
+goto文を使用しない等価なプログラムに書き換えることができるが，より一般
+的には，次のことが言える．
+
+else部を持たないif文のthen部の最後に，if文より下（前方）にあり，if文と
+同じブロック内の同じ階層のラベルへ分岐するgoto文がある場合には，if文と
+ラベルの間の文をelse部にすることにより，goto文を使わない等価なプログラ
+ムに書き換えることができる．
+
+例として，goto文を使った次のプログラムを考える．
+
+----------------------------------------
+	{
+		/* if文の前の文 */
+		if (....) {
+			/* then部の文 */
+			goto <ラベル>;
+		}
+		/* if文とラベルの間の文 */
+	  <ラベル>:
+		/* ラベルより後ろの文 */
+	}
+----------------------------------------
+
+このプログラムは，goto文を使わない次のプログラムと等価である．
+
+----------------------------------------
+	{
+		/* if文の前の文 */
+		if (....) {
+			/* then部の文 */
+		}
+		else {
+			/* if文とラベルの間の文 */
+		}
+		/* ラベルより後ろの文 */
+	}
+----------------------------------------
+
+この条件に合致するgoto文が複数ある場合には，下にあるgoto文から順に上記
+の方法によって書き換えることで，goto文を使わない等価なプログラムに書き
+換えることができる．
+
+CHECKマクロの使用方法は，上記のgoto文の使用方法に合致するため，goto文を
+使用しない等価なプログラムに書き換えることができる．よって，このCHECKマ
+クロにより問題を生じることはない．
+
+
+○ext_tsk，ext_kerの返り値
+
+μITRON4.0仕様では，ext_tskはリターンすることのないサービスコールとなっ
+ているが，TOPPERS新世代カーネルにおいては，このサービスコールの返り値を
+ER型に変更し，非タスクコンテキストから呼ばれた場合には，E_CTXエラーを返
+り値としてリターンすることとする．
+
+この仕様に対するいくつかの対案を検討したが，以下の理由で採用しない．
+
+・JSPカーネルのように，危険の可能性を検出しながら実行を継続する方法は，
+　信頼性・安全性を重視するシステムでは望ましくない．信頼性・安全性を重
+　視するシステムでは，危険の可能性を検出したら，早期にリカバリをすべき
+　である．
+
+・ASPカーネルの当初案のカーネルをダウンさせる方法は，アプリケーション側
+　で回復する余地をなくすという意味で望ましくない．
+
+・過去の互換性を保つために，型をvoidとしたまま，非タスクコンテキストか
+　ら呼ばれた場合にはリターンするとする方法は，カーネルの仕様変更に気づ
+　きにくくなるという意味で望ましくない．また，他のエラーコード（例えば
+　E_NOSPT）を返す余地をなくしている．
+
+・一種のCPU例外を呼び出すことにする方法は，カーネル仕様全体の整合性を考
+　えて採用しなかった．ここで一種のCPU例外を導入するよりも，サービスコー
+　ルがエラーを返した場合に呼ばれるOSEK/VDX OS仕様のエラーフックに相当す
+　る機能を導入した方が有用性が高いと思われるためである．
+
+この変更により，さらに，CPUロック状態やディスパッチ禁止状態でext_tskが
+呼ばれた場合にもエラーリターンする方法が考えられるが，タスクのメインルー
+チンからのリターンとext_tskが等価にならないため，採用しない．また，他の
+処理単位からのリターン方法と整合させる意味もある（例えば，割込みハンド
+ラからCPUロック状態のままリターンした場合の扱い）．
+
+これにあわせて，ext_kerについても，返り値をER型に変更する．ASPカーネル
+では，ext_kerがエラーを返すことはないが，HRPカーネルでは，E_OACVエラー
+を返す場合がある．
+
+なお，μITRON4.0仕様では，exd_tskもリターンすることのないサービスコール
+となっているが，TOPPERS新世代カーネルでは，exd_tskはサポートしていない．
+
+
+○カーネルのデータ構造に対するvolatile宣言について（クリティカルセクショ
+ンの出入処理の実現に関する制約）
+
+カーネル内のデータ構造は，並行実行される他の処理単位（割込みハンドラや
+タスク）からもアクセスされる可能性があるため，volatile宣言が必要ではな
+いかと考えられる．実際，クリティカルセクション内でカーネル変数を読むコー
+ドが，コンパイラの最適化によりクリティカルセクション外に移動され，それ
+が原因となった問題事例も報告されている．
+
+カーネル内のすべてのデータ構造にvolatile宣言をつける方法は，安全ではあ
+るが，最適化が抑止されるために，カーネルのサイズや性能には悪影響を与え
+る．そこでASPカーネルでは，次の方法でvolatile宣言の必要性をなくすことと
+する．
+
+ASPカーネルにおいては，並行実行される他の処理単位から書き換えられる可能
+性のあるデータ構造は，すべて，CPUロック状態または全割込みロック状態によ
+るクリティカルセクション内でアクセスしている．クリティカルセクション内
+でのデータ構造のアクセスが，コンパイラの最適化によりクリティカルセクショ
+ン外に移動されないようにするには，コンパイラに対して，クリティカルセク
+ションの出入処理により，メモリ上のデータ構造が書き変わる可能性があるこ
+とを知らせればよい．
+
+具体的には，クリティカルセクションの出入処理を関数によって実現すれば，
+このような最適化を抑止することができる．しかし，ASPカーネルの多くのター
+ゲット依存部において，クリティカルセクションの出入処理はマクロやインラ
+イン関数により実装されており，上のような最適化を抑止できない．
+
+そこで，クリティカルセクションの出入処理を実現する場合には，メモリ上の
+データ構造が書き変わる可能性があることを，何らかの方法でコンパイラに知
+らせなければならないという制約を設ける．GNU開発環境では，次のいずれかの
+方法でこの制約を満たすことができる．
+
+(a) クリティカルセクションの出入処理の全体または出入処理の本質的な部分
+	（具体的には，割込み禁止／許可する処理）を（インラインでない）通常
+	の関数により実現する．
+
+(b) クリティカルセクションの出入処理の本質的な部分をインラインアセンブ
+	ラによって実現している場合には，そのインラインアセンブラのclobber変
+	数リストに"memory"を追加する．
+
+(c) クリティカルセクションの出入処理の本質的な部分が，マクロやインライ
+	ン関数呼出しで実現している場合には，クリティカルセクションに入る処
+	理の最後と出る処理の先頭に，Asm("":::"memory")という記述を入れる．
+
+なお，この制約が適用されるクリティカルセクションの出入処理は，以下のも
+のである．
+
+	SIL_LOC_INT
+	SIL_UNL_INT
+	t_lock_cpu, i_lock_cpu, x_lock_cpu
+	t_unlock_cpu, i_unlock_cpu, x_unlock_cpu
+
+
+○型キャストに伴う警告メッセージ
+
+GCCで-O2オプションをつけてコンパイルした場合に，カーネルのソースコード
+中の数箇所で，次の警告メッセージが出る（GCCのバージョンにもよる）．
+
+warning: dereferencing type-punned pointer will break strict-aliasing rules
+
+これは，GCCに-O2オプションをつけると，コンパイラがC言語のstrict
+aliasing ruleを前提とするためである．コンパイラにstrict aliasing ruleを
+適用させないためには，GCCのオプションに-fno-strict-aliasingを指定すれば
+よい．これにより，警告メッセージは抑止されるが，strict aliasing ruleを
+前提とした最適化は行われなくなる．
+
+ASPカーネルに実装においては，strict aliasing ruleを前提とした最適化を行っ
+てもよく，この警告メッセージを無視しても差し支えない．以下では，この警
+告メッセージを無視しても差し支えない理由を述べる．
+
+警告メッセージが出る例として，semaphore.c中の次の行について検討する．
+
+	wobj_make_wait((WOBJCB *) p_semcb, (WINFO_WOBJ *) &winfo_sem);
+
+この警告メッセージの原因は，直接的には，&winfo_semを(WINFO_WOBJ *)にキャ
+ストしていることであるが，本質的な原因は，このコードがC言語のstrict
+aliasing ruleに従わない代入文の原因になる可能性があり，このルールに依存
+した最適化が誤った結果を引き起こす可能性があることである．
+
+C言語のstrict aliasing ruleは，互換性のない異なる型を通して，オーバラッ
+プするメモリ領域をアクセスする代入文を使用してはならないというものであ
+る（使用した場合の振舞いは未定義になる）．このケースでは，(WINFO_SEM
+*)型のポインタ経由と(WINFO_WOBJ *)型のポインタ経由で，オーバラップする
+メモリ領域をアクセスする代入文を使用してはならないことになる．また，警
+告メッセージの原因になってはいないが，(SEMCB *)型のポインタ経由と
+(WOBJCB *)型のポインタ経由で，オーバラップするメモリ領域をアクセスする
+代入文を使用してはならない．
+
+ASPカーネルの実装においては，semaphore.c中の関数においては，(SEMCB *)型
+および(WINFO_SEM *)型のポインタを使用しており，(WOBJCB *)型および
+(WINFO_WOBJ *)型のポインタ経由でメモリ領域をアクセスすることはない．一
+方，そこから呼び出されるwait.c中の関数においては，(WOBJCB *)型および
+(WINFO_WOBJ *)型のポインタを使用しており，(SEMCB *)型および(WINFO_SEM
+*)型のポインタ経由でメモリ領域をアクセスすることはない．
+
+strict aliasing ruleに従わない代入文の問題点は，このルールに依存した最
+適化が誤った結果を引き起こす可能性があることであるが，異なるコンパイル
+単位をまたいで最適化が行われることはないため，これにより問題が起こるこ
+とはないと言うことができる．
+
+同じ議論は，他のソースファイル（eventflag.c，dataqueue.c，pridataq.c，
+mailbox.c，mempfix.c）中の警告メッセージについても，そのまま当てはまる．
+
+
+○優先度データキュー機能（未完成）
+
+●導入の経緯
+
+●API仕様
+
+CRE_PDQ(ID pdqid, { ATR pdqatr, uint_t pdqcnt, PRI maxdpri, void *pdqmb });
+ER snd_pdq(ID pdqid, intptr_t data, PRI datapri);
+ER psnd_pdq(ID pdqid, intptr_t data, PRI datapri);
+ER ipsnd_pdq(ID pdqid, intptr_t data, PRI datapri);
+ER tsnd_pdq(ID pdqid, intptr_t data, PRI datapri, TMO tmout);
+ER rcv_pdq(ID pdqid, intptr_t *p_data, PRI *p_datapri);
+ER prcv_pdq(ID pdqid, intptr_t *p_data, PRI *p_datapri);
+ER trcv_pdq(ID pdqid, intptr_t *p_data, PRI *p_datapri, TMO tmout);
+ER ini_pdq(ID pdqid);
+ER ref_pdq(ID pdqid, T_RPDQ *pk_rpdq);
+
+●実装
+
+＜未完成＞
+
+
+○性能評価用システム時刻参照機能
+
+●必要性と使途
+
+ASPカーネルには，ASPカーネル上で動作するタスクやASPカーネル自身の性能を
+計測するために，システム時刻より精度の高い性能評価用システム時刻を読み
+出す機能をサポートする．性能評価用システム時刻は，マイクロ秒単位で表現
+されるが，実際の精度はターゲット依存である．
+
+この機能を用いてあるプログラムの実行時間を計測するには，その実行直前と
+実行直後に性能評価用システム時刻を読み出し，その差を求める．そのため，
+性能評価用システム時刻は常に相対値を使用し，性能評価用システム時刻の絶
+対値を使用することは想定していない．
+
+●API仕様
+
+性能評価用システム時刻参照機能では，次のデータ型を用いる．
+
+	SYSUTM		性能評価用システム時刻（符号無し整数，単位はマイクロ秒，
+				32ビット以上）
+
+SYSUTM型は，ターゲット非依存部においてulong_t型（すなわち，unsigned
+long型）に定義されており，そのサイズは，32ビット以上で，ターゲット定義
+である．
+
+性能評価用システム時刻がSYSUTM型で表現できる範囲を超えた（つまり，オー
+バフローした）場合，性能評価用システム時刻は0に戻る．評価対象プログラム
+の実行前後の性能評価用システム時刻の差を求める場合には，計測する時間が
+SYSUTM型で表現できる範囲である限り，0に戻ることを特別に考慮する必要はな
+い．
+
+SYSUTM型が32ビットの場合，性能評価用システム時刻は約71分でオーバフロー
+する．そのため，この機能を71分を越える時間の測定に使った場合の動作は保
+証されない．
+
+性能評価用システム時刻参照機能のためのサービスコールの仕様については，
+「TOPPERS新世代カーネル統合仕様書」の「4.6.1 システム時刻管理」の節を参
+照すること．
+
+●実装
+
+時刻をマイクロ秒単位で取得するために，周期的なタイムティックを供給する
+タイマの現在値（タイマはカウントアップするものと仮定する）を読み出し，
+それをマイクロ秒単位に換算した値に，現在のシステム時刻（ミリ秒単位で表
+現される）を1000倍した値を加えたものを性能評価用システム時刻とする．現
+在のシステム時刻を1000倍する際に，オーバフローが発生する可能性があるが，
+無視してかまわない．
+
+ただし，システム時刻の現在値とタイマの現在値を一貫した状態で読み出すの
+は容易ではない．両方の値を順に読み出すと，読出しの間にタイマがオーバフ
+ローして割込み要求が発生した場合に，片方はオーバフロー前の値，もう片方
+はオーバフロー後の値を読んでしまい，誤った性能評価用システム時刻を取得
+してしまう．
+
+この問題を解決する方法はいくつか考えられるが，どの方法を採用するの決定
+にあたり，次の要求事項を設定した．
+
+(1) 多くのターゲットシステムで実現できること．
+
+(2) サービスコールの実行時間が可能な限り一定となること．言い換えると，
+    条件によってサービスコールの実行時間が大きく変動しないこと．
+
+(3) サービスコール中の可能な限り同じタイミングの時刻を返すこと．言い換
+    えると，条件によって時刻を読み取るタイミングが変動しないこと．
+
+(4) 調整する必要のあるパラメータを最小限とすること．
+
+これらの要求事項を満たす方法として，次の方法を用いることにした．
+
+まず，NMIを除くすべての割込みを禁止した状態で，システム時刻の現在値，タ
+イマの現在値（1回目），タイマ割込み要求の有無，タイマの現在値（2回目）
+を，この順で読み出す．割込みを禁止しているため，この間にシステム時刻の
+現在値が変化することはなく，システム時刻の現在値を読み出す順番はどこで
+もよい．また，タイマの現在値の2回目の読出しは，タイマ割込み要求があった
+場合にのみ必要となるが，(2)の要求から，タイマ割込み要求の有無によらず読
+み出すこととする．
+
+これらの値を読み出した後，割込み禁止を解除し，次の処理を行う．まず，タ
+イマ割込み要求がなかった場合には，システム時刻の現在値と，1回目に読んだ
+タイマの現在値は一貫した値であることが保証できるため，これらの値から性
+能評価用システム時刻の現在値を求める．
+
+次にタイマ割込み要求があった場合には，1回目に読んだタイマの現在値が，タ
+イマ割込み要求発生前の値（オーバフロー前の値）である場合と，発生後の値
+（オーバフロー後の値）である場合の両方の可能性が考えられる．このどちら
+の場合であったかを，2回目に読んだタイマの現在値を使って，次のように決定
+する．2回目の値は，タイマ割込み要求発生後の値（オーバフロー後の値）であ
+ることが保証できるため，1回目の値が2回目の値よりも大きい場合には，その
+間にオーバフローがあったものと推測できる．つまり，1回目の値はオーバフロー
+前の値ということになり，システム時刻の現在値と一貫した値であるとして性
+能評価用システム時刻の現在値を求める．逆に，1回目の値が2回目の値と同じ
+かそれより小さい場合には，1回目の値はオーバフロー後の値であると推測でき
+る．この場合には，次のタイムティックのシステム時刻を求め，その値と1回目
+の値が一貫した値であるとして性能評価用システム時刻の現在値を求める．
+
+ここで，タイマ割込み要求があった場合には，2回目に読んだタイマの現在値を
+用いる方法が考えられるが，(3)の要求を満たさなくなるために採用しなかった．
+また，JSPカーネルと同様の方法は，(4)の要求を満たさないために採用しなかっ
+た．
+
+上で「推測できる」としたのは，この推測が成り立たなくなるケースがあるた
+めである．この推測が成り立たなくなるケースは，次の2つの場合に分けて分析
+することができる．
+
+(a) 1回目の値がオーバフロー後の値であるにもかかわらず，1回目の値が2回目
+    の値よりも大きくなる場合
+
+このようなケースは，タイマ割込みが要求されているにもかかわらずサービス
+されない状態が長時間続くか，タイマの現在値を1回目に読んでから2回目に読
+むまでの間に長い時間がかかった結果，その間に（再度）オーバフローが発生
+した場合に起こる．つまり，タイマ割込みがサービスされない時間が，タイム
+ティックの周期よりも長くなった場合である．このような場合には，システム
+時刻の更新も正しく行われなくなる．
+
+(b) 1回目の値がオーバフロー前の値であるにもかかわらず，1回目の値が2回目
+    の値と同じかそれよりも小さくなる場合
+
+このようなケースは，タイマの現在値を1回目に読んでから2回目に読むまでの
+間に，タイマがほぼ1周分カウントアップした場合に起こる．この場合も，タイ
+マ割込みが禁止されている時間が，タイムティックの周期よりも長かったこと
+になり，システム時刻の更新が正しく行えなくなる．
+
+いずれのケースも，タイマ割込みが長時間禁止されている，タイマ割込みより
+も優先度の高い割込み処理が長時間続けて実行された，シミュレーション環境
+においてシミュレータのプロセスが長時間スケジュールされなかったなどの理
+由で，システム時刻の更新が正しく行えない状況に相当する．そこでこの状況
+を，サービスコール使用上の注意事項に盛り込む．
+
+実際のコードにおいては，システム時刻の現在値は変数に保持されていないた
+め（上位桁はcurrent_timeに保持されているが，下位桁を保持する変数がな
+い），次のタイムティックのシステム時刻を用いて計算している．そのため，
+タイマの現在値がオーバフロー後の値であると判断した場合を除いては，タイ
+ムティックの周期時間を，求めた性能評価用システム時刻から減算する．この
+処理により，サービスコールの実行時間が変動することになるが，if文の内容
+が（コンパイラの最適化を仮定すると）定数値の減算1回なので，変動はわずか
+である．
+
+このサービスコールは，任意の状態から呼び出すことができるため，SILの全割
+込みロック機能を用いて，サービスコール内部のクリティカルセクションを実
+現する．
+
+
+○タスク例外処理禁止フラグをenatexで実装している理由
+
+タスク例外処理禁止フラグは，TCB中のenatexフィールド（タスク例外処理許可
+状態であることを示す）の形で保持している．このフィールドをdistexとせず
+enatexとしたのは，JSPカーネルにおいてタスクディスパッチ禁止フラグを
+enadspの形で保持したのと整合させたためである．
+
+ASPカーネルでは，enadspはdisdspに変更になったことから，enatexもdistexに
+変更した方が良かったと思われる．
+
+以上
Index: /asp_ewarm/asp-1.7.0/doc/extension.txt
===================================================================
--- /asp_ewarm/asp-1.7.0/doc/extension.txt	(revision 61)
+++ /asp_ewarm/asp-1.7.0/doc/extension.txt	(revision 61)
@@ -0,0 +1,398 @@
+
+		TOPPERS/ASPカーネル
+		機能拡張・チューニングガイド
+
+		対応バージョン: Release 1.7.0
+		最終更新: 2010年11月20日
+
+このドキュメントは，TOPPERS/ASPカーネルを，機能拡張・チューニングするた
+めの方法（またはヒント）を説明するものである．
+
+----------------------------------------------------------------------
+ TOPPERS/ASP Kernel
+     Toyohashi Open Platform for Embedded Real-Time Systems/
+     Advanced Standard Profile Kernel
+
+ Copyright (C) 2005-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: extension.txt 1964 2010-11-20 06:41:44Z ertl-hiro $
+----------------------------------------------------------------------
+
+○目次
+
+・エラーチェックの省略
+・タイムティックの周期の変更
+・特殊目的のレジスタの扱い
+・拡張パッケージの使い方
+	- ミューテックス機能拡張パッケージ
+	- オーバランハンドラ機能拡張パッケージ
+	- タスク優先度拡張パッケージ
+	- 制約タスク拡張パッケージ
+	- 動的生成機能拡張パッケージ
+・CPU例外ハンドラの直接呼出し
+	- TA_DIRECT属性の導入
+	- ターゲット依存部の修正箇所
+
+
+○エラーチェックの省略
+
+サービスコールのオーバヘッドを削減するために，静的なエラーのチェックを
+省略する場合がある．ASPカーネルにおいては，静的なエラーのチェックはすべ
+てCHECKマクロを用いて行っているため，kernel/check.h中のCHECKマクロを編
+集することで，静的なエラーのチェックを省略することができる．
+
+例えば，タスクIDのチェックを省略したい場合には，CHECK_TSKIDマクロと
+CHECK_TSKID_SELFマクロを，次のように修正すればよい．
+
+#define CHECK_TSKID(tskid)			((void)(tskid))
+#define CHECK_TSKID_SELF(tskid)		((void)(tskid))
+
+これらのマクロの定義を空にする方法もあるが，パラメータに副作用のある式
+が書かれている可能性を考えると（副作用のある式は書くべきではないが，書
+かれているコードが入ってくる可能性が全くないとは言えない），上の定義の
+方が安全である．副作用のない式であれば，最適化によって削除することがで
+きるため，実行時効率には影響がないと期待できる．ただし，最適化によって
+削除されない場合には，副作用のある式が書かれていないことを確認した上で，
+マクロの定義を空にしてもよい．
+
+
+○タイムティックの周期の変更
+
+ASPカーネルでは，カーネルへタイムティックを供給する周期は1ミリ秒が標準
+となっているが，低速なプロセッサでは1ミリ秒毎に割込みを処理するオーバヘッ
+ドが問題になる場合がある．そこで，アプリケーションが必要とする時間精度
+が粗い場合には，タイムティックの周期を長くすることで，プロセッサの処理
+負荷を低減する方法がある．
+
+タイムティックの周期の与え方はターゲット依存であるため，これが変更でき
+るかどうかは，ターゲット依存部のタイマドライバの実装を調べる必要がある．
+標準的には，target_kernel.h（またはそこからインクルードされるファイル）
+中に定義されているTIC_NUMEとTIC_DENOを書き換えることで，変更できるよう
+に実装されている．
+
+
+○特殊目的のレジスタの扱い
+
+FPUレジスタやDSPレジスタなどの特殊目的のレジスタ（以下，特殊レジスタ）
+を持つプロセッサでは，レジスタの扱いについて大きく次の3つの方法が考えら
+れる．
+
+(1) 特殊レジスタをタスクのコンテキストに含めない
+
+1つのタスクのみが特殊レジスタを使用する場合には，特殊レジスタをタスクの
+コンテキストに含める必要がなく，カーネルで管理する必要がない．
+
+(2) 特殊レジスタをタスクのコンテキストに含める
+
+複数のタスクが特殊レジスタを使用する場合には，特殊レジスタをタスクのコ
+ンテキストに含める方法が最も単純である．そのためには，タスクディスパッ
+チャと割込みハンドラ/CPU例外ハンドラの出入口で，特殊レジスタを保存/復帰
+するコードを追加する必要がある．実際の保存/復帰場所は，スクラッチレジス
+タとそれ以外のレジスタで異なるため，注意が必要である．
+
+(3) 特殊レジスタをコンテキストに含めるかどうかをタスク毎に指定する
+
+特殊レジスタを使用するタスクと使用しないタスクがある場合で，すべてのタ
+スクのコンテキストに特殊レジスタを含める方法ではオーバヘッドが問題にな
+る場合には，特殊レジスタをコンテキストに含めるかどうかをタスク毎に指定
+する方法が有力である．これを実現する方法は次の通りである．
+
+まず，特殊レジスタをコンテキストに含めるかどうかを指定するタスク属性を
+設ける．例えば，FPUレジスタであれば，タスク属性にTA_FPUを設ける．タスク
+ディスパッチャでは，タスク属性を見て，その属性が設定されていれば特殊レ
+ジスタを保存/復帰する．
+
+ハードウェア的に特殊レジスタがディスエーブルできる場合には，その属性が
+設定されていないタスクに切り換える時に特殊レジスタをディスエーブルする
+と，誤って特殊レジスタを使った場合を検出できる．
+
+さらに，割込みハンドラ（ISR，周期ハンドラ，アラームハンドラを含む）や
+CPU例外ハンドラで特殊レジスタを使用する場合には，これらの処理単位にも
+特殊レジスタを使用するかどうかの属性を設ける方法が考えられる．
+
+ここで，タスク（または他の処理単位）が特殊レジスタを使用するかどうかは，
+コンパイラやライブラリに依存する場合があるため，注意が必要である．例え
+ば，浮動小数点演算を含まないプログラムであっても，コンパイラがその方が
+性能が高いと判断すれば，浮動小数点命令を生成する場合がある．
+
+
+○拡張パッケージの使い方
+
+ASPカーネルでは，いくつかの拡張機能を実装するために，拡張パッケージをサ
+ポートしている．拡張パッケージは，extensionディレクトリに置いてある．
+
+拡張パッケージを使用する場合には，UNIXであれば，ASPカーネルのソースファ
+イルのトップディレクトリで，
+
+	% cp -r extension/<拡張パッケージのディレクトリ名>/* .
+
+を実行する．この時，元の（拡張前の）ソースファイルは上書きされてしまう
+ため，拡張しないカーネルも使用したい場合には，別のディレクトリにソース
+ファイルを展開して，上のコマンドを実行すること．
+
+複数の拡張パッケージを使うことは考慮していないが，以下に述べるケースを
+除いては，手作業により複数の拡張パッケージをマージすることは可能である．
+現時点では，ミューテックス機能拡張パッケージと制約タスク拡張パッケージ
+をマージすることはできない．また，動的生成機能拡張パッケージを他の拡張
+パッケージとマージすることは考慮していない．
+
+●ミューテックス機能拡張パッケージ
+
+ミューテックス機能拡張パッケージは，ミューテックス機能を追加するための
+拡張パッケージである．ただし，優先度逆転を制御するための仕組みとして，
+優先度上限ミューテックス（TA_CEILING属性のミューテックス）のみをサポー
+トし，優先度継承ミューテックス（TA_INHERIT属性のミューテックス）はサポー
+トしていない．ミューテックス機能拡張パッケージは，extension/mutexディレ
+クトリに置いてある．
+
+ミューテックス機能拡張パッケージでは，TOPPERS_SUPPORT_MUTEXがkernel.h中
+で定義されているので，これを用いてミューテックス機能を使用できるかどう
+かを判別することができる．
+
+●オーバランハンドラ機能拡張パッケージ
+
+オーバランハンドラ機能拡張パッケージは，オーバランハンドラ機能を追加す
+るための拡張パッケージである．ただし，この拡張パッケージを使うためには，
+ターゲット依存部が対応している必要がある．オーバランハンドラ機能拡張パッ
+ケージは，extension/ovrhdrディレクトリに置いてある．
+
+オーバランハンドラ機能拡張パッケージで，ターゲット依存部が拡張パッケー
+ジに対応している場合には，TOPPERS_SUPPORT_OVRHDRがkernel.h中で定義され
+るので，これを用いてオーバランタイマ機能が使用できるかどうかを判別する
+ことができる．
+
+●タスク優先度拡張パッケージ
+
+タスク優先度拡張パッケージは，タスク優先度を最大256段階に拡張するための
+拡張パッケージである．この拡張パッケージは，タスク優先度に加えて，デー
+タ優先度，メッセージ優先度，割込みサービスルーチン優先度も256段階に拡張
+する．タスク優先度拡張パッケージは，extension/pri_levelディレクトリに置
+いてある．
+
+タスク優先度拡張パッケージでは，TOPPERS_SUPPORT_PRI_LEVELがkernel.h中で
+定義されているので，これを用いてタスク優先度の範囲が拡張されているかど
+うかを判別することができる．
+
+●制約タスク拡張パッケージ
+
+制約タスク拡張パッケージは，制約タスクの機能を追加するための拡張パッケー
+ジである．TOPPERS新世代カーネル統合仕様書に規定された制約タスクの機能に
+加えて，自タスクのベース優先度を変更するサービスコールras_priを実装して
+いる．制約タスク拡張パッケージは，extension/rstr_taskディレクトリに置い
+てある．
+
+制約タスク拡張パッケージでは，TOPPERS_SUPPORT_RSTR_TASKがkernel.h中で定
+義されているので，これを用いて制約タスクの機能が使用できるかどうかを判
+別することができる．
+
+----------------------------------------------------------------------
+ras_pri		自タスクのベース優先度の引き上げ〔T〕
+
+【C言語API】
+	ER ercd = ras_pri(PRI tskpri)
+
+【パラメータ】
+	PRI			tskpri		ベース優先度
+
+【リターンパラメータ】
+	ER			ercd		正常終了（E_OK）またはエラーコード
+
+【エラーコード】
+	E_CTX			コンテキストエラー（非タスクコンテキストからの呼出
+					し，CPUロック状態からの呼出し）
+	E_PAR			パラメータエラー（tskpriが不正）
+	E_ILUSE			サービスコール不正使用（tskpriが，自タスクの起動時
+					優先度よりも低い場合）
+
+【機能】
+
+自タスクのベース優先度を，tskpriで指定した優先度に変更する．具体的な振
+舞いは以下の通り．
+
+自タスクのベース優先度が，tskpriで指定した優先度に変更される．それに伴っ
+て，自タスクの現在優先度も変更される．同じ優先度のタスクの中では，自タ
+スクが最高優先順位となる．
+
+tskpriにTPRI_INI（＝0）を指定すると，自タスクのベース優先度が，起動時優
+先度に変更される．
+
+tskpriは，TPRI_INIであるか，TMIN_TPRI以上，TMAX_TPRI以下でなければなら
+ない．また，tskpriは，自タスクの起動時優先度と同じかそれよりも高くなけ
+ればならない．
+----------------------------------------------------------------------
+
+●動的生成機能拡張パッケージ
+
+動的生成機能拡張パッケージは，オブジェクトの動的生成機能を追加するため
+の拡張パッケージである．TOPPERS新世代カーネル統合仕様書に規定された以下
+のオブジェクト生成／削除のためのサービスコールに加えて，カーネルが割り
+付けるメモリ領域を設定する静的API DEF_KMMを実装している．動的生成機能拡
+張パッケージは，extension/dcreディレクトリに置いてある．
+
+ただし，カーネル内での動的メモリ管理に関しては，ターゲット非依存部では，
+メモリ領域を先頭から順に割り当て，解放されたメモリ領域を再利用しないメ
+モリ管理モジュールのみを実装している．本格的な動的メモリ管理を行いたい
+場合には，ターゲット依存部またはユーザ側で，そのための関数を用意する必
+要がある．用意する関数等については，「TOPPERS/ASPカーネル ターゲット依
+存部 ポーティングガイド」の「6.15 動的メモリ管理」の節を参照すること．
+
+動的機能拡張拡張パッケージでは，TOPPERS_SUPPORT_DYNAMIC_CREがkernel.h中
+で定義されているので，これを用いて動的生成機能が使用できるかどうかを判
+別することができる．
+
+動的生成機能拡張パッケージにより追加されるサービスコール
+
+	ER_ID tskid = acre_tsk(const T_CTSK *pk_ctsk)
+	ER ercd = del_tsk(ID tskid)
+	ER ercd = def_tex(ID tskid, const T_DTEX *pk_dtex)
+	ER_ID semid = acre_sem(const T_CSEM *pk_csem)
+	ER ercd = del_sem(ID semid)
+	ER_ID flgid = acre_flg(const T_CFLG *pk_cflg)
+	ER ercd = del_flg(ID flgid)
+	ER_ID dtqid = acre_dtq(const T_CDTQ *pk_cdtq)
+	ER ercd = del_dtq(ID dtqid)
+	ER_ID pdqid = acre_pdq(const T_CPDQ *pk_cpdq)
+	ER ercd = del_pdq(ID pdqid)
+	ER_ID mbxid = acre_mbx(const T_CMBX *pk_cmbx)
+	ER ercd = del_mbx(ID mbxid)
+	ER_ID mpfid = acre_mpf(const T_CMPF *pk_cmpf)
+	ER ercd = del_mpf(ID mpfid)
+	ER_ID cycid = acre_cyc(const T_CCYC *pk_ccyc)
+	ER ercd = del_cyc(ID cycid)
+	ER_ID almid = acre_alm(const T_CALM *pk_calm)
+	ER ercd = del_alm(ID almid)
+	ER_ID isrid = acre_isr(const T_CISR *pk_cisr)
+	ER ercd = del_isr(ID isrid)
+
+----------------------------------------------------------------------
+DEF_KMM		カーネルが割り付けるメモリ領域の設定〔SD〕
+
+【静的API】
+	DEF_KMM({ SIZE kmmsz, STK_T *kmm })
+
+【パラメータ】
+　＊カーネルが割り付けるメモリ領域の設定情報
+	SIZE		kmmsz		カーネルが割り付けるメモリ領域のサイズ（バイト数）
+	STK_T		kmm			カーネルが割り付けるメモリ領域の先頭番地
+
+【エラーコード】
+	E_PAR			パラメータエラー（istksz，istkが不正，その他の条件
+					については機能の項を参照すること）
+	E_OBJ			オブジェクト状態エラー（カーネルが割り付けるメモリ
+					領域がすでに設定されている）
+
+【機能】
+
+各パラメータで指定したカーネルが割り付けるメモリ領域の設定情報に従って，
+カーネルが割り付けるメモリ領域を設定する．
+
+kmmszは整数定数式パラメータ，kmmは一般定数式パラメータである．
+
+kmmをNULLとした場合，kmmszで指定したサイズのメモリ領域を，コンフィギュ
+レータが確保する．kmmszにターゲット定義の制約に合致しないサイズを指定し
+た時には，ターゲット定義の制約に合致するようにサイズを大きい方に丸めて
+確保する．
+
+カーネルが割り付けるメモリ領域をアプリケーションで確保する場合には，
+kmmszで指定したサイズのメモリ領域を確保し，kmmにその先頭番地を指定する．
+
+DEF_KMMによりカーネルが割り付けるメモリ領域を設定しない場合，カーネルが
+割り付けるメモリ領域は確保されない．
+
+kmmやkmmszにターゲット定義の制約に合致しない先頭番地やサイズを指定した
+時には，E_PARエラーとなる．
+----------------------------------------------------------------------
+
+
+○CPU例外ハンドラの直接呼出し
+
+CPU例外ハンドラの出入口処理は，CPU例外が発生しないように実装しなければ
+ならないが，これが防げないターゲットにおいては，CPU例外ハンドラの出入口
+処理を経由せずに，アプリケーションが用意したCPU例外ハンドラを直接実行す
+る方法を用意するのが望ましい．これを，CPU例外ハンドラの直接呼出しと呼ぶ．
+
+ここでは，ハードウェアでベクタテーブルを持つプロセッサにおいて，ターゲッ
+ト依存部のみの修正により，CPU例外ハンドラの直接呼出しの機能を追加する方
+法について説明する．
+
+●TA_DIRECT属性の導入
+
+CPU例外ハンドラの直接呼出しを指定するために，CPU例外ハンドラ属性に，
+TA_DIRECT属性を導入する．
+
+●ターゲット依存部の修正箇所
+
+TA_DIRECTの値を，target_kernel.h（または，そこからインクルードされるファ
+イル）で定義し，その値をコンフィギュレータが取り出せるように，
+target_def.csv（または，それに代わるファイル）に次の行を追加する．
+
+TA_DIRECT,TA_DIRECT
+
+次に，target.tf（または，そこからインクルードされるファイル）で，
+TARGET_EXCATRに設定される値に，TA_DIRECTを追加する．例えば，他のターゲッ
+ト依存のCPU例外ハンドラ属性がない場合には，次のように設定する．
+
+$TARGET_EXCATR = TA_DIRECT$
+
+次に，OMIT_INITILIZE_EXCEPTIONを用いて，CPU例外ハンドラの出入口処理を生
+成するための記述とCPU例外ハンドラ初期化ブロックの標準の定義が生成される
+のを抑止し，それによって抑止される部分をtarget.tfにコピーした上で，以下
+の修正を加える．
+
+CPU例外ハンドラの出入口処理を生成するための記述（EXCHDR_ENTRYのリスト）
+を生成する部分は，次のように修正する．
+
+$FOREACH excno EXC.ORDER_LIST$
+	$IF (EXC.EXCATR[excno] & TA_DIRECT) == 0$
+		EXCHDR_ENTRY($EXC.EXCNO[excno]$, $+EXC.EXCNO[excno]$, $EXC.EXCHDR[excno]$)$NL$
+	$END$
+$END$
+
+また，CPU例外ハンドラ初期化ブロックの定義を生成する部分は，次のように修
+正する．
+
+$IF LENGTH(EXC.ORDER_LIST)$
+	const EXCINIB _kernel_excinib_table[TNUM_EXCNO] = {$NL$
+	$JOINEACH excno EXC.ORDER_LIST ",\n"$
+		$IF (EXC.EXCATR[excno] & TA_DIRECT) == 0$
+			$TAB${ ($EXC.EXCNO[excno]$), ($EXC.EXCATR[excno]$), (FP)(EXC_ENTRY($EXC.EXCNO[excno]$, $EXC.EXCHDR[excno]$)) }
+		$ELSE$
+			$TAB${ ($EXC.EXCNO[excno]$), ($EXC.EXCATR[excno]$), (FP)($EXC.EXCHDR[excno]$) }
+		$END$
+	$END$$NL$
+	};$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const EXCINIB, _kernel_excinib_table);$NL$
+$END$
+
+以上
Index: /asp_ewarm/asp-1.7.0/doc/porting.txt
===================================================================
--- /asp_ewarm/asp-1.7.0/doc/porting.txt	(revision 61)
+++ /asp_ewarm/asp-1.7.0/doc/porting.txt	(revision 61)
@@ -0,0 +1,3975 @@
+
+		TOPPERS/ASPカーネル
+		ターゲット依存部 ポーティングガイド
+
+		対応バージョン: Release 1.7.0
+		最終更新: 2011年4月10日
+
+このドキュメントは，TOPPERS/ASPカーネルを，未サポートのターゲットシステ
+ムにポーティングするために必要となるターゲット依存部の実装方法を説明す
+るものである．
+
+----------------------------------------------------------------------
+ TOPPERS/ASP Kernel
+     Toyohashi Open Platform for Embedded Real-Time Systems/
+     Advanced Standard Profile Kernel
+
+ Copyright (C) 2005-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: porting.txt 2064 2011-05-01 08:09:00Z ertl-hiro $
+----------------------------------------------------------------------
+
+○目次
+
+１．共通事項
+	1.1 ターゲット依存部の構成
+	1.2 名前の衝突の防止
+	1.3 多重インクルードの防止
+	1.4 アセンブリ言語とのヘッダファイルの共用 
+	1.5 インクルード記述の方法
+	1.6 クリティカルセクションの出入処理の実現に関する制約
+２．システム構築環境のターゲット依存部
+	2.1 ターゲット略称とターゲット依存部のディレクトリ
+	2.2 Makefileのターゲット依存部
+	2.3 開発環境名とコマンド名の設定
+	2.4 コンパイルオプションとオブジェクトファイルの設定
+	2.5 オフセットファイルの生成方法
+		2.5.1 コンフィギュレータを用いる方法
+		2.5.2 makeoffset.cとgenoffsetを用いる方法
+	2.6 リンク方法の設定
+	2.7 依存関係の定義
+	2.8 その他の設定
+３．TOPPERS共通定義のターゲット依存部
+	3.1 ターゲット識別マクロ
+	3.2 整数型の最大値・最小値・ビット数
+	3.3 サイズの指定された整数型，その最大値・最小値，整数定数を作るマクロ
+	3.4 サイズの指定された浮動小数点型，その最大値・最小値のマクロ
+	3.5 コンパイラの拡張機能のためのマクロ定義
+	3.6 標準的な定義の上書き
+	3.7 アサーションのための定義
+４．システムインタフェースレイヤ（SIL）のターゲット依存部
+	4.1 全割込みロック状態の管理
+	4.2 微少時間待ち
+	4.3 プロセッサのエンディアン
+	4.4 メモリ空間アクセス関数
+	4.5 I/O空間アクセス関数
+５．カーネルAPIのターゲット依存部
+	5.1 ターゲット定義でサポートする機能
+	5.2 割込み優先度の範囲
+	5.3 タイムティックの定義
+	5.4 メモリ領域確保のための型定義
+	5.5 ビットパターンのビット数
+	5.6 メモリ領域確保のためのマクロ
+	5.7 オーバランハンドラ機能拡張のための定義（オプション）
+６．カーネル実装のターゲット依存部
+	6.1 カーネル実装のターゲット依存部の共通事項
+		6.1.1 カーネル実装のターゲット依存部の構成要素
+		6.1.2 ターゲット依存部の関数の命名規則
+	6.2 トレースログ機能への対応
+	6.3 システム状態の管理
+		6.3.1 全割込みロック状態の管理
+		6.3.2 コンテキストの管理
+		6.3.3 CPUロック状態の管理
+	6.4 割込みに関連するシステム状態の管理
+		6.4.1 割込み優先度マスクの管理
+		6.4.2 割込み要求禁止フラグの管理
+		6.4.3 割込み要求のクリア
+		6.4.4 割込み要求のプローブ
+		6.4.5 割込みハンドラの先頭処理と末尾処理
+	6.5 タスクディスパッチャ
+		6.5.1 タスクコンテキストブロックとタスク初期化コンテキストブロック
+		6.5.2 ディスパッチャ本体
+		6.5.3 タスクコンテキストからのディスパッチ
+		6.5.4 ディスパッチャの動作開始
+		6.5.5 現在のコンテキストを捨ててディスパッチ
+		6.5.6 タスクの起動処理
+	6.6 割込みハンドラ
+		6.6.1 割込みハンドラの出入口処理
+		6.6.2 割込みハンドラ毎の出入口処理の生成
+		6.6.3 割込みハンドラの設定
+		6.6.4 割込み要求ラインの属性の設定
+		6.6.5 割込み管理機能の初期化処理の変更
+		6.6.6 デフォルトの割込みハンドラ
+		6.6.7 カーネル管理外の割込み
+		6.6.8 割込みサービスルーチンの生成
+	6.7 CPU例外ハンドラとCPU例外発生時のシステム状態の参照
+		6.7.1 CPU例外ハンドラの出入口処理
+		6.7.2 CPU例外ハンドラの出入口処理の生成
+		6.7.3 CPU例外ハンドラの設定
+		6.7.4 CPU例外管理機能の初期化処理の変更
+		6.7.5 デフォルトのCPU例外ハンドラ
+		6.7.6 CPU例外発生時のシステム状態の参照
+	6.8 カーネルの起動・終了とスタック領域など
+	6.9 カーネル内部のチューニング
+		6.9.1 ビットマップサーチ
+		6.9.2 ビットフィールド
+	6.10 カーネル実装に関するその他の定義
+		6.10.1 オブジェクト属性の拡張
+		6.10.2 エラーチェック方法の指定
+		6.10.3 非タスクコンテキスト用のスタック領域
+		6.10.4 空ラベルの定義
+	6.11 トレースログ機能に関する設定
+		6.11.1 取得できるトレースログの種類とマクロ
+		6.11.2 トレースログ記録のサンプルコード
+	6.12 カーネル実装のターゲット依存部のためのリネーム記述
+	6.13 タイマドライバ
+		6.13.1 タイマドライバのファイル構成
+		6.13.2 タイマの初期化・終了処理・割込み処理
+		6.13.3 性能評価用システム時刻の参照のための機能
+	6.14 オーバランタイマドライバ（オプション）
+		6.14.1 オーバランタイマドライバのファイル構成
+		6.14.2 オーバランタイマの操作と割込み処理
+	6.15 動的メモリ管理
+		6.15.1 TLSFを用いたメモリ管理モジュールの例
+７．コンフィギュレータ設定ファイルのターゲット依存部
+	7.1 設定ファイルとターゲット依存部の位置付け
+	7.2 パス2のテンプレートファイルのターゲット依存部
+		7.2.1 ターゲット非依存部をインクルードする前に定義すべき変数
+		7.2.2 ターゲット非依存部で定義される変数
+	7.3 パス3のテンプレートファイルのターゲット依存部
+		7.3.1 ターゲット非依存部をインクルードする前に定義すべき変数
+		7.3.2 ターゲット依存部で行うべきエラーチェック
+	7.4 cfg1_out.cのリンクに必要なスタブの定義ファイル
+８．システムサービス等のターゲット依存部
+	8.0 システムサービスのターゲット依存部
+	8.1 システムログ機能のターゲット依存定義
+	8.2 ログタスクのターゲット依存定義
+	8.3 シリアルインタフェースドライバのターゲット依存部
+		8.3.1 変数，データ型，管理関数
+		8.3.2 デバイスサービスルーチン
+		8.3.3 コールバックルーチン
+	8.4 カーネル起動メッセージの出力のターゲット依存定義
+	8.5 サンプルプログラムとテストプログラムのターゲット依存定義
+	8.6 実行時間分布集計モジュールのターゲット依存定義
+９．その他
+	9.1 ドキュメント
+	9.2 パッケージ記述ファイル
+１０．リファレンス
+	10.1 ターゲット依存部のファイル一覧
+
+
+１．共通事項
+
+1.1 ターゲット依存部の構成
+
+ターゲット依存部は，targetディレクトリの下に，ターゲットハードウェアと
+開発環境の組み合わせ毎に用意する．ただし，ターゲット依存部の再利用性を
+考慮し，プロセッサ，チップ，開発環境のみに依存する部分を，プロセッサ依
+存部，チップ依存部，開発環境依存部という形で切り分けてもよい．切り分け
+方は，ターゲット依存部の実装に任されている．プロセッサ依存部，チップ依
+存部，開発環境依存部は，archディレクトリの下に置く．
+
+ASPカーネルのターゲット依存部は，システム構築環境（Makefile等）のターゲッ
+ト依存部，TOPPERS共通定義（t_stddef.h）のターゲット依存部，システムイン
+タフェースレイヤ（SIL，sil.h）のターゲット依存部，カーネルAPI（kernel.h）
+のターゲット依存部，カーネル実装のターゲット依存部（コンフィギュレータ
+設定ファイルのターゲット依存部を含む），システムサービスのターゲット依
+存部，ターゲット依存部に関するドキュメント等で構成される．
+
+1.2 名前の衝突の防止
+
+TOPPERSプロジェクトが提供するソフトウェアのために，TOPPERS_で始まるシン
+ボルを予約している．ヘッダファイル中に記述され，アプリケーションから参
+照できる内部シンボルは，TOPPERS_で始まる名前とする．
+
+また，_kernel_で始まるシンボルは，カーネル内部の変数や関数のために予約
+している．カーネル内部の変数や関数の名前で，リンク時にアプリケーション
+の名前と衝突する可能性があるものは，リネーム記述にリストアップすること
+で，コンパイル時に_kernel_で始まる名前に置き換えることとしている．
+
+1.3 多重インクルードの防止
+
+すべてのヘッダファイルは，多重にインクルードされるのを防止するための条
+件コンパイル記述を入れることとする．例えば，target_config.hであれば，ファ
+イルの先頭に
+
+#ifndef TOPPERS_TARGET_CONFIG_H
+#define TOPPERS_TARGET_CONFIG_H
+
+を，ファイルの末尾に
+
+#endif /* TOPPERS_TARGET_CONFIG_H */
+
+を記述する．
+
+1.4 アセンブリ言語とのヘッダファイルの共用 
+
+ASPカーネルのヘッダファイルの多くは，アセンブリ言語のソースファイルから
+もインクルードできるようにするために，次のルールに従って記述するものと
+する．
+
+・TOPPERS_MACRO_ONLYがマクロ定義されている場合には，アセンブリ言語では
+　解釈できない記述（マクロ定義以外の記述）を除くように記述する．
+
+・符号無し整数型の定数値は，UINT_CやULONG_Cなどの整数定数を作るためのマ
+　クロを用いて記述する．ただし，アセンブリ言語のソースファイルからもイ
+　ンクルードできるファイル中であっても，C言語のみで用いる定数をこれらの
+　マクロを使って記述する必要はない．
+
+また，カーネル実装においては，次のルールに従うものとする．
+
+・アセンブリ言語からも用いる定数の定義中に型キャストを用いる場合には，
+　CASTマクロを用いて記述する．
+
+アセンブリ言語からヘッダファイルをインクルードする際には，必要に応じて，
+TOPPERS_MACRO_ONLY，UINC_C，ULONG_C，CASTをマクロ定義してから，インクルー
+ドしなければならない．
+
+1.5 インクルード記述の方法
+
+開発環境で用意されている標準ヘッダファイルおよびincludeディレクトリ下の
+標準ヘッダファイルは，「#include <...>」によりインクルードする．
+
+その他のヘッダファイルは，「#include "..."」によりインクルードする．ヘッ
+ダファイルが，カレントディレクトリやインクルードするファイルと同じディ
+レクトリ以外のディレクトリに置かれている場合には，次のようにパス指定を
+行う．
+
+・ターゲット依存部（target/<ターゲット名>）のディレクトリに置かれている
+　場合は，パス指定を行わず，ファイル名のみを記述する．
+		例）#include "target_config.h"
+
+・archディレクトリ下のディレクトリに置かれている場合には，archディレク
+　トリからの相対パスで記述する．
+		例）#include "m68k_gcc/prc_config.h"
+
+・その他の場合には，ソースプログラムのルートディレクトリ（configureが置
+　かれているディレクトリ）からの相対パスで記述する．
+		例）#include "pdic/upd72001/upd72001.h"
+
+・カーネルを構成するファイルから，kernelディレクトリ下のヘッダファイル
+　をインクルードする場合は，パス指定を行わず，ファイル名のみを記述する．
+		例）#include "kernel_impl.h"
+
+1.6 クリティカルセクションの出入処理の実現に関する制約
+
+カーネル内で用いるクリティカルセクションの出入処理を実現する場合には，
+次の2つの条件を満たすように実装しなければならない．
+
+(1-6-1) 出入処理から抜けた時点では，割込みの禁止／許可が完了していなけ
+ればならない．例えば，割込み禁止／許可命令を実行してから実際に割込みが
+禁止／許可されるまで何命令か遅延するプロセッサの場合には，出入処理の中
+にNOP命令を入れるなどの方法で，出入処理を抜けた時点では，割込みが禁止／
+許可された状態になっていることを保証しなければならない．
+
+(1-6-2) メモリ上のデータ構造が書き変わる可能性があることを，何らかの方
+法でコンパイラに知らせなければならない．GNU開発環境では，次のいずれかの
+方法でこの制約を満たすことができる．
+
+(a) クリティカルセクションの出入処理の全体または出入処理の本質的な部分
+	（具体的には，割込み禁止／許可する処理）を（インラインでない）通常
+	の関数により実現する．
+
+(b) クリティカルセクションの出入処理の本質的な部分をインラインアセンブ
+	ラによって実現している場合には，そのインラインアセンブラのclobber変
+	数リストに"memory"を追加する．
+
+(c) クリティカルセクションの出入処理の本質的な部分が，マクロやインライ
+	ン関数呼出しで実現している場合には，クリティカルセクションに入る処
+	理の最後と出る処理の先頭に，Asm("":::"memory")という記述を入れる．
+
+このような制約を設ける理由については，「TOPPERS/ASPカーネル 設計メモ」
+の「カーネルのデータ構造に対するvolatile宣言について」の節を参照するこ
+と．
+
+
+２．システム構築環境のターゲット依存部
+
+この章の説明は，GNU開発環境（GCC，GAS，BINUTILS，GNU Make）を用いること
+を想定して記述してある．それ以外の開発環境を用いる場合には，開発環境に
+あわせて修正する必要がある．
+
+2.1 ターゲット略称とターゲット依存部のディレクトリ
+
+新しいターゲット依存部を作成する時は，まず，ターゲット略称を定める．ター
+ゲット略称は，システム略称と開発環境略称を"_"で連結したものとする．シス
+テム略称に用いる文字は英小文字と数字と"_"に，開発環境略称に用いる文字は
+英小文字と数字に限定する．GNU開発環境の開発環境略称は，"gcc"とする．例
+えば，システム略称が"dve68k"で，GNU開発環境を用いる場合には，ターゲット
+略称は"dve68k_gcc"となる．
+
+ターゲット依存部のファイルを置くために，targetディレクトリの下に，ター
+ゲット略称を名称とするディレクトリを作成する．これをターゲット依存部ディ
+レクトリと呼ぶ．
+
+ターゲット依存部からプロセッサ依存部やチップ依存部を切り分ける場合には，
+依存部略称を定める．依存部略称は，プロセッサやチップの略称と開発環境略
+称を"_"で連結したものとする．プロセッサやチップの略称に用いる文字は，英
+小文字と数字と"_"に限定する．例えば，プロセッサ略称が"m68k"で，GNU開発
+環境を用いる場合には，依存部略称は"m68k_gcc"となる．
+
+また，ターゲット依存部から開発環境依存部を切り分ける場合には，開発環境
+略称を依存部略称とする．例えば，GNU開発環境依存部の依存部略称は，"gcc"
+となる．
+
+これらの依存部のファイルを置くために，archディレクトリの下に，依存部略
+称を名称とするディレクトリを作成する．
+
+なお，GNU開発環境以外の開発環境を用いる場合には，コンフィギュレーション
+スクリプト（configure），サンプルのMakefile（sample/Makefile），一部の
+ユーティリティプログラム（utils/makedep）を，その開発環境用に用意する必
+要がある場合がある．その場合には，これらのファイルを，ターゲット依存部
+ディレクトリか開発環境依存部ディレクトリに置くものとする．また，開発環
+境用のプロジェクトファイルが必要な場合には，ターゲット依存部ディレクト
+リに置くものとする．
+
+2.2 Makefileのターゲット依存部
+
+Makefileのターゲット依存部は，ターゲット依存部ディレクトリに置いた
+Makefile.targetまたはそこからインクルードされるファイル（プロセッサ・チッ
+プ・開発環境依存部で用意されるファイルなど）に含める．
+
+2.3 開発環境名とコマンド名の設定
+
+開発環境名とコマンド名を設定するために，Makefileのターゲット依存部で次
+の変数を定義する．
+
+(2-3-1) TOOL					開発環境名
+
+開発環境名に定義する．GNU開発環境を用いる場合には，gccに定義する．
+
+(2-3-2) GCC_TARGET				GNU開発環境のターゲット名
+
+GNU開発環境を用いる場合に，GNU開発環境をconfigureする場合に指定するター
+ゲット名に定義する．ここで指定したターゲット名は，開発環境のコマンド名
+の先頭に付与される文字列となる．例えば，GCC_TARGETをm68k-unknown-elfに
+定義した場合には，コンパイラとしてm68k-unknown-elf-gccが使われる．この
+変数が定義されない場合には，単なるgccが使われる．
+
+(2-3-3) CC						Cコンパイラドライバの名称
+(2-3-4) CXX						C++コンパイラドライバの名称
+(2-3-5) AS						アセンブラの名称
+(2-3-6) LD						リンカの名称
+(2-3-7) AR						アーカイバの名称
+(2-3-8) NM						nmプログラムの名称
+(2-3-9) RANLIB					ranlibプログラムの名称
+(2-3-10) OBJCOPY				objcopyプログラムの名称
+(2-3-11) OBJDUMP				objdumpプログラムの名称
+
+GNU開発環境以外の開発環境を用いる場合に，それぞれのコマンドの名称に定義
+する．対応するコマンドがない場合や，コマンドパラメータが異なる場合には，
+Makefile中でそのコマンドを呼び出している部分を変更する必要がある．
+
+GNU開発環境では，これらはGCC_TARGETを用いて定義されるので，定義する必要
+はない．
+
+2.4 コンパイルオプションとオブジェクトファイルの設定
+
+Makefileのターゲット依存部で以下で説明する変数を定義する時には，":="を
+用いて，それまでの定義に追加する形で行う．例えば，コンパイラに対するそ
+の他のオプションとして「-Wall -g -O2」を追加したい場合には，「COPTS :=
+$(COPTS) -Wall -g -O2」という記述をMakefileのターゲット依存部に含める．
+
+(2-4-1) COPTS				コンパイラに対するその他のオプション
+(2-4-2) CDEFS				マクロ定義オプション（-Dオプション）
+(2-4-3) INCLUDES			ヘッダファイルの置かれたディレクトリ指定オ
+							プション（-Iオプション）
+(2-4-4) LDFLAGS				リンカに対するその他のオプション
+(2-4-5) LIBS				ライブラリリンク指定のためのオプション
+
+ターゲットに依存して，すべてのソースファイルに共通するコンパイルオプショ
+ンの追加が必要な場合には，オプションの種類毎に上に示した変数に定義する．
+
+ほとんどの場合に，ターゲット依存部ディレクトリのMakefile.targetには，以
+下の記述を含める必要がある．
+
+----------------------------------------
+INCLUDES := $(INCLUDES) -I$(TARGETDIR)
+----------------------------------------
+
+ここでTARGETDIRは，ターゲット依存部ディレクトリに定義されている．また
+SRCDIRは，Makefileにおいて，ソースプログラムのルートディレクトリ
+（configureが置かれているディレクトリ）に定義されている．
+
+コンパイラの問題等で，警告メッセージが出ることを防げない状況以外では，
+COPTSに-Werrorを追加することを推奨する．
+
+----------------------------------------
+COPTS := $(COPTS) -Werror
+----------------------------------------
+
+カーネルのコンパイル時に，dereferencing type-punned pointer will break
+strict-aliasing rulesという警告が出る場合には，以下を追加するとよい．こ
+の警告メッセージに関する詳細は，「TOPPERS/ASPカーネル 設計メモ」の「型
+キャストに伴う警告メッセージ」の節を参照すること．
+
+----------------------------------------
+KERNEL_CFLAGS := $(KERNEL_CFLAGS) -fno-strict-aliasing
+----------------------------------------
+
+また，アセンブリ言語レベルの識別名が，C言語レベルの識別名の先頭に"_"が
+付いたものになる場合には，CDEFSに-DTOPPERS_LABEL_ASMを追加する．
+
+(2-4-6) SYSSVC_DIR			システムサービスのソースが置かれたディレクトリ
+(2-4-7) SYSSVC_ASMOBJS		アセンブリ言語で記述されたシステムサービスの
+							オブジェクト
+(2-4-8) SYSSVC_COBJS		C言語で記述されたシステムサービスのオブジェクト
+(2-4-9) SYSSVC_CFLAGS		システムサービスに対するコンパイルオプション
+(2-4-10) SYSSVC_LIBS		システムサービスに対するライブラリリンク指定
+
+ターゲットに依存して，システムサービス（システムログタスクやデバイスド
+ライバなど）のソースが置かれたディレクトリ，システムサービスを構成する
+オブジェクトファイルのリスト，それらをコンパイルする際に適用するコンパ
+イルオプション，その構成に必要なライブラリリンク指定を追加する場合には，
+上に示した変数に定義する．
+
+(2-4-11) KERNEL_DIR			カーネルのソースが置かれたディレクトリ
+(2-4-12) KERNEL_ASMOBJS		アセンブリ言語で記述されたカーネルのオブジェクト
+(2-4-13) KERNEL_COBJS		C言語で記述されたカーネルのオブジェクト
+(2-4-14) KERNEL_CFLAGS		カーネルに対するコンパイルオプション
+
+ターゲットに依存して，カーネルのソースが置かれたディレクトリ，カーネル
+を構成するオブジェクトファイルのリスト，それらをコンパイルする際に適用
+するコンパイルオプションを追加する場合には，上に示した変数に定義する．
+
+ほとんどの場合に，ターゲット依存部ディレクトリのMakefile.targetには，以
+下の記述を含める必要がある．
+
+----------------------------------------
+KERNEL_DIR := $(KERNEL_DIR) $(TARGETDIR)
+KERNEL_ASMOBJS := $(KERNEL_ASMOBJS) target_support.o
+KERNEL_COBJS := $(KERNEL_COBJS) target_config.o target_timer.o
+----------------------------------------
+
+(2-4-15) CFG_TABS			コンフィギュレータに対するオプション
+
+ターゲットに依存して，コンフィギュレータに対するオプションを追加する場
+合には，上に示した変数に定義する．具体的には，コンフィギュレータの値取
+得シンボルテーブルのターゲット依存部（target_def.csv）がある場合には，
+それを指定するオプションを追加する必要がある．
+
+ほとんどの場合に，ターゲット依存部ディレクトリのMakefile.targetには，以
+下の記述を含める必要がある．
+
+----------------------------------------
+CFG_TABS := $(CFG_TABS) --cfg1-def-table $(TARGETDIR)/target_def.csv
+----------------------------------------
+
+(2-4-16) CFG1_OUT_LDFLAGS	cfg1_out.cに対するリンクオプション
+
+ターゲットに依存して，cfg1_out.cをリンクする際に適用するオプションを追
+加する場合には，上に示した変数に定義する．
+
+(2-4-17) CFG_OBJS			システムコンフィギュレーションのためのオブ
+							ジェクト
+
+ターゲットに依存して，システムコンフィギュレーションのためのオブジェク
+トファイルを（kernel_cfg.o以外に）追加する場合には，上に示した変数に定
+義する．この場合，追加したオブジェクトファイルの作成ルール（コンパイル／
+アセンブルルールと依存関係作成ルール）を，Makefileのターゲット依存部に
+記述する必要がある．
+
+(2-4-18) CFG2_OUT
+
+ターゲットに依存して，コンフィギュレータのパス2でkernel_cfg.cと
+kernel_cfg.h以外のファイルを生成する場合には，上に示した変数に定義する．
+
+(2-4-19) OMIT_WARINIG_ALL
+(2-4-20) OMIT_OPTIMIZATION
+
+サンプルのMakefileでは，コンパイラに対するオプションに「-Wall -g -O2」
+を追加する．-Wallを追加したくない場合には，Makefileのターゲット依存部で
+OMIT_WARNING_ALLを"true"に定義する．-O2を追加したくない場合には，
+Makefileのターゲット依存部でOMIT_OPTIMIZATIONを"true"に定義する．
+
+2.5 オフセットファイルの生成方法
+
+アセンブリ言語で記述されるプログラムから，C言語の構造体にアクセスする場
+合には，構造体の各フィールドのオフセット値を参照することが必要である．
+ASPカーネルでは，必要なオフセット値を求めてファイル（標準ではoffset.h）
+に生成するための仕組みを用意している．
+
+この仕組みを用いることで，例えば，TCB中のtexptnフィールドのオフセット値
+をTCB_texptnにマクロ定義することや，TCB中のタスクコンテキストブロック
+（tskctxb）に含まれるpcフィールドのオフセット値をTCB_pcにマクロ定義する
+ことができる．また，TCB中のenatexフィールドのオフセット値，ビット位置，
+ビットマスクを，それぞれTCB_enatex，TCB_enatex_bit，TCB_enatex_maskにマ
+クロ定義することができる．
+
+offset.hを生成するための仕組みとして，現時点では，コンフィギュレータを
+用いる方法と，makeoffset.cとgenoffsetを用いる方法を用意している．後者の
+方法は，GNU開発環境にしか対応していないことから，将来のバージョンでは，
+後者の方法のサポートをやめる計画である．新たにポーティングする場合には，
+前者の方法を用いることを推奨する．
+
+これらの仕組みでオフセットファイルを生成できない時には，offset.hをター
+ゲット依存部で用意し，Makefileのターゲット依存部でOMIT_MAKEOFFSETを
+"true"に定義する．
+
+拡張パッケージの中には，TCBにフィールドを追加するものがあるため，TCB中
+のフィールドのオフセット値は変化する．offset.hを生成する場合でも，ター
+ゲット依存部で用意する場合でも，拡張パッケージに対応するためには，この
+ことを考慮する必要がある．
+
+2.5.1 コンフィギュレータを用いる方法
+
+コンフィギュレータのパス1で生成するcfg1_out.cをコンパイルして生成したオ
+ブジェクトファイルから，コンフィギュレータによってoffset.hを生成する方
+法である．この方法を用いるためには，ターゲット依存部でオフセットファイ
+ル生成用テンプレートファイルを用意し，target_cfg1_out.h（または，そこか
+らインクルードされるファイル）とtarget_def.csv（または，同等の役割を持
+つファイル）に記述を追加する必要がある．なお，これらのファイルを新たに
+用意した際や修正した際には，offset.hに妥当な定義が生成されていることを
+確認すべきである．
+
+オフセットファイル生成用テンプレートファイルは，ターゲット依存部で，
+target_offset.tf（または，プロセッサ依存部やチップ依存部で用意するそれ
+に代わるファイル）に用意する．また，Makefileのターゲット依存部で，次の
+例のように，OFFSET_TFにオフセットファイル生成用テンプレートファイルのファ
+イル名を定義する．
+
+----------------------------------------
+# オフセットファイル生成のための定義
+OFFSET_TF = $(TARGETDIR)/target_offset.tf
+----------------------------------------
+
+オフセットファイル生成用テンプレートファイルには，以下の内容を記述する．
+
+(1) 標準テンプレートファイルのインクルード
+
+オフセットファイル生成用の標準テンプレートファイル（kernel/genoffset.tf）
+をインクルードする．標準テンプレートファイルには，以下で用いるDEFINE関
+数やDEFINE_BIT関数の定義などが含まれている．
+
+----------------------------------------
+$ 標準テンプレートファイルのインクルード
+$INCLUDE "kernel/genoffset.tf"$
+----------------------------------------
+
+(2) オフセット値のマクロ定義の生成
+
+DEFINE関数を用いて，オフセット値のマクロ定義を生成する．例えば，TCB中の
+タスクコンテキストブロック（tskctxb）に含まれるpcフィールドのオフセット
+値を，TCB_pcにマクロ定義する場合には，次のように記述する．
+
+----------------------------------------
+$ オフセット値のマクロ定義の生成
+$DEFINE("TCB_pc", offsetof_TCB_pc)$
+----------------------------------------
+
+ここで，DEFINE関数の第1パラメータはマクロ定義するシンボル，第2パラメー
+タは，オフセット値を保持するコンフィギュレータの変数である．
+
+また，コンフィギュレータが，オフセット値を保持する変数（上の例では
+offsetof_TCB_pc）に値を設定するために，target_def.csv（または，同等の役
+割を持つファイル）に次の例のような行を追加する．
+
+----------------------------------------
+offsetof_TCB_pc,"offsetof(TCB,tskctxb.pc)"
+----------------------------------------
+
+ただし，各オブジェクトの初期化ブロックのターゲット非依存のフィールドの
+オフセット値を取得するための記述は，kernel/kernel_def.csvに含まれている．
+kernel/kernel_def.csvに含まれている記述は，target_def.csv（または，同等
+の役割を持つファイル）に追加する必要はない．
+
+(3) ビットオフセット値等のマクロ定義の生成
+
+DEFINE_BIT関数を用いて，ビットのオフセット値，ビット位置，ビットマスク
+のマクロ定義を生成する．例えば，TCB中のenatexフィールドのオフセット値，
+ビット位置，ビットマスクを，それぞれTCB_enatex，TCB_enatex_bit，
+TCB_enatex_maskにマクロ定義する場合には，次のように記述する．
+
+----------------------------------------
+$DEFINE_BIT("TCB_enatex", sizeof_TCB, "B")$
+----------------------------------------
+
+ここで，DEFINE_BIT関数の第1パラメータはマクロ定義するシンボル（の先頭部
+分），第2パラメータは構造体のサイズである．第3パラメータには，ビットの
+オフセット，ビット位置，ビットマスクを，8ビット単位（バイト単位）で求め
+る場合には"B"を，16ビット単位で求める場合には"H"を，32ビット単位で求め
+る場合には"W"を指定する．なお，ビット位置は，LSBを0とした値（ビットリト
+ルエンディアンを想定）を求める．
+
+また，target_cfg1_out.h（または，そこからインクルードされるファイル）に，
+ビットオフセット値等を求めるための構造体の変数定義を追加する．この構造
+体の変数は，名称をマクロ定義するシンボル（DEFINE_BIT関数の第1パラメータ）
+とし，対象のビットのみが1で，他のすべてのビットが0になるように初期化す
+る．また，const修飾子を付加する．例えば，TCB中のenatexフィールドのビッ
+トオフセット値等を求める場合には，次のような定義を追加する（tskctxbの初
+期値は，ターゲット依存なので注意すること）．
+
+----------------------------------------
+const TCB	TCB_enatex = {
+	{ NULL, NULL },			/* task_queue */
+	NULL,					/* p_tinib */
+	0U,						/* tstat */
+#ifdef TOPPERS_SUPPORT_MUTEX
+	0U,						/* bpriority */
+#endif /* TOPPERS_SUPPORT_MUTEX */
+	0U,						/* priority */
+	false,					/* acqeue */
+	false,					/* wupque */
+	true,					/* enatex */
+	0U,						/* texptn */
+	NULL,					/* p_winifo */
+#ifdef TOPPERS_SUPPORT_MUTEX
+	{ NULL, NULL },			/* mutex_queue */
+#endif /* TOPPERS_SUPPORT_MUTEX */
+#ifdef TOPPERS_SUPPORT_OVRTIM
+	0U,						/* leftotm */
+#endif /* TOPPERS_SUPPORT_OVRTIM */
+	{ NULL, NULL }			/* tskctxb */
+};
+----------------------------------------
+
+さらに，コンフィギュレータが，構造体のサイズ（上の例ではsizeof_TCB）に
+値を設定するために，target_def.csv（または，同等の役割を持つファイル）
+に次の例のような行を追加する．
+
+----------------------------------------
+sizeof_TCB,sizeof(TCB)
+----------------------------------------
+
+ただし，前述した通り，kernel/kernel_def.csvに含まれている記述は，
+target_def.csv（または，同等の役割を持つファイル）に追加する必要はない．
+
+最後に，target_cfg1_out.h（または，そこからインクルードされるファイル）
+に，offset.hを生成する仕組みが正しく動作していることを確認するための次
+の記述を追加する．
+
+----------------------------------------
+const uint8_t	MAGIC_1 = 0x12;
+const uint16_t	MAGIC_2 = 0x1234;
+const uint32_t	MAGIC_4 = 0x12345678;
+----------------------------------------
+
+2.5.2 makeoffset.cとgenoffsetを用いる方法
+
+makeoffset.cは，どのオフセット値をoffset.hに生成するかを指定するファイ
+ルで，ターゲット依存部で用意する．genoffsetは，makeoffset.cをコンパイル
+して得られるアセンブリソースファイルから，offset.hを生成するスクリプト
+である．genoffsetは，GNU開発環境にのみ対応している．
+
+makeoffset.cを記述する場合には，既存のターゲット依存部に含まれる
+makeoffset.cを修正するのが近道である．標準的なmakeoffset.cは，以下の6つ
+の部分で構成されている．なお，makeoffset.cを新たに記述した際には，
+offset.hに妥当な定義が生成されていることを確認すべきである．
+
+(1) 必要なファイルのインクルード
+
+オフセット値を求めたいフィールドを含む構造体を定義するヘッダファイルを
+インクルードする．TCB中のフィールドのオフセット値を求めたい場合には，以
+下の3行を含めればよい．
+
+#include "kernel_impl.h"
+#include "task.h"
+#include "sil.h"
+
+(2) オフセット値出力用マクロの定義
+
+構造体中のフィールドのオフセット値の定義を生成するために用いるマクロ
+（OFFSET_DEFとOFFSET_DEF2）の定義．これらのマクロの定義は，修正する必要
+がない．
+
+(3) オフセット値出力用関数の定義
+
+構造体中のフィールドのオフセット値の定義を生成するための関数
+（makeoffset）の定義．オフセット値のマクロ定義を生成したいフィールド毎
+に，次のいずれかのマクロを記述する．
+
+(2-5-2-1) OFFSET_DEF(TYPE, FIELD)
+
+TYPEに構造体のデータ型名，FIELDにその構造体中のフィールドを指定すると，
+TYPE_FIELDという名前のシンボルに，そのフィールドのオフセット値をマクロ
+定義する記述を生成する．
+
+(2-5-2-2) OFFSET_DEF2(TYPE, FIELD, FIELDNAME)
+
+TYPEに構造体のデータ型名，FIELDにその構造体中のフィールドを指定すると，
+TYPE_FIELDNAMEという名前のシンボルに，そのフィールドのオフセット値をマ
+クロ定義する記述を生成する．構造体に含まれる構造体中のフィールドのオフ
+セット値を求めたい場合には，こちらのマクロを使用する．
+
+(4) エンディアンを参照するための関数の定義
+
+SILで定義されたエンディアンを参照するための関数（sil_endian）の定義．こ
+の関数の定義は，修正する必要がない．
+
+(5) ビットオフセット値出力のための参照定義
+
+初期値を持った変数定義に対して，コンパイラが生成するアセンブリ命令を参
+照するための変数（BIT_REF_4，BIT_REF_2，BIT_REF_1）の定義．これらの定義
+は，ほとんどの場合に修正する必要がない．ただし，uint8_t型のサポートされ
+ていないターゲットでは，BIT_REF_1の定義は削除する必要がある．また，ポイ
+ンタが64ビットのターゲット等では，BIT_REF_8の定義を追加しなければならな
+いと思われる．
+
+(6) ビットオフセット値出力用変数の定義
+
+ビットのオフセット値，ビット位置，ビットマスクの定義を生成するためのデー
+タ型の定義．これらの定義を生成したいビットフィールド毎に，以下の説明す
+る変数を定義する．
+
+構造体のデータ型名がTYPE，その構造体中のビットフィールド名がFIELDの場合
+に，データ型がTYPEで，変数名がBIT_xy_TYPE_FIELDの変数を定義する．また，
+その変数を，対象のビットのみが1で，他のすべてのビットが0になるように初
+期化する．ここで，xはエンディアンを指定する文字で，B（ビッグエンディア
+ン）またはL（リトルエンディアン）を指定する．またyには，ビットのオフセッ
+ト，ビット位置，ビットマスクを，8ビット単位（バイト単位）で求める場合に
+はBを，16ビット単位で求める場合にはHを，32ビット単位で求める場合にはWを
+指定する．
+
+これにより，TYPE_FIELDという名前のシンボルにそのビットのオフセット，
+TYPE_FIELD_bitという名前のシンボルにビット位置，TYPE_FIELD_maskという名
+前のシンボルにビットマスクをマクロ定義する記述を生成する．なお，ビット
+位置は，LSBを0とした値（ビットリトルエンディアンを想定）を求める．
+
+2.6 リンク方法の設定
+
+(2-6-1) LDSCRIPT				リンカスクリプトのファイル名
+
+開発環境に標準のリンカスクリプトが使用できない場合には，ターゲット依存
+部でリンカスクリプトを用意し，そのファイル名をこの変数に定義する．
+
+(2-6-2) TEXT_START_ADDRESS		テキストセクションの先頭番地
+(2-6-3) DATA_START_ADDRESS		データセクションの先頭番地
+
+各セクションの先頭番地の指定が必要な場合には，これらの変数に先頭番地を
+定義する．
+
+(2-6-4) START_OBJS				先頭にリンクすべきモジュール名
+(2-6-5) END_OBJS				最後にリンクすべきモジュール名
+
+ターゲットによっては，ロードモジュールの先頭と最後にリンクすべきモジュー
+ルを，ターゲット依存部で用意する必要がある．多くの場合，スタートアップ
+モジュールをロードモジュールの先頭にリンクする必要がある．
+
+ロードモジュールの先頭にリンクすべきプログラムがある場合には，Makefile
+のターゲット依存部において，そのオブジェクトファイル名をSTART_OBJSに定
+義し，それに対するコンパイルルールと依存関係作成ルールを定義する．ロー
+ドモジュールの最後にリンクすべきモジュールがある場合には，そのオブジェ
+クトファイル名をEND_OBJSに定義し，それに対するコンパイルルールと依存関
+係作成ルールを定義する．また，標準のスタートアップモジュール（crt0.o）
+をリンクしないように，LDFLAGSに-nostdlibを追加する必要がある．さら
+に，-nostdlibをつけることで標準ライブラリがリンクされなくなるため，
+LIBSに-lgccを追加しなければならない．
+
+例えば，スタートアップモジュールのソースファイルがstart.Sの場合には，
+Makefileのターゲット依存部に次のような記述を入れるとよい．
+
+----------------------------------------
+# スタートアップモジュールのオブジェクトファイル名
+START_OBJS = start.o
+
+# スタートアップモジュールのコンパイルルール
+$(START_OBJS): %.o: %.S
+	$(CC) -c $(CFLAGS) $(KERNEL_CFLAGS) $<
+
+# スタートアップモジュールの依存関係作成ルール
+$(START_OBJS:.o=.d): %.d: %.S
+	@$(PERL) $(SRCDIR)/utils/makedep -C $(CC) $(MAKEDEP_OPTS) \
+		-O "$(CFLAGS) $(KERNEL_CFLAGS)" $< >> Makefile.depend
+
+# リンカに対するオプション
+LDFLAGS := -nostdlib $(LDFLAGS)
+LIBS := $(LIBS) -lgcc
+----------------------------------------
+
+また，GNU開発環境で，コンパイラに標準のcrtbegin.oとcrtend.oを用いる場合
+には，Makefile のターゲット依存部に次のような記述を入れるとよい．
+
+----------------------------------------
+# オブジェクトファイル名
+START_OBJS = $(shell $(CC) -print-file-name=crtbegin.o)
+END_OBJS = $(shell $(CC) -print-file-name=crtend.o)
+
+# 依存関係作成ルール
+$(START_OBJS:.o=.d): %.d:
+$(END_OBJS:.o=.d): %.d:
+
+# リンカに対するオプション
+LDFLAGS := -nostdlib $(LDFLAGS)
+LIBS := $(LIBS) -lgcc
+----------------------------------------
+
+この場合，これらのファイルをコンパイルすることはないため，コンパイルルー
+ルは不要である．また，依存関係作成ルールはダミーでよい（依存関係作成ルー
+ルがないとエラーになる）．
+
+(2-6-6) HIDDEN_OBJS				指定しなくてもリンクされるモジュール名
+
+ロードモジュールにリンクすべきモジュールを，リンカに対するパラメータで
+はなく，リンカスクリプト中に（例えば，GNU開発環境のリンカスクリプトの
+STARTUPを使って）記述する場合には，そのオブジェクトファイル名を，
+（START_OBJSまたはEND_OBJSではなく）HIDDEN_OBJSに定義し，それに対するコ
+ンパイルルールと依存関係作成ルールを定義する．HIDDEN_OBJSに定義したモ
+ジュールは，リンカに対するパラメータからは除外される．LIBSとLDFLAGSにつ
+いては，START_OBJSまたはEND_OBJSを用いる場合と同様である．
+
+例えば，スタートアップモジュールのソースファイルがstart.Sで，start.oを
+リンクすることをリンカスクリプト中に記述する場合には，Makefileのターゲッ
+ト依存部に次のような記述を入れるとよい．
+
+----------------------------------------
+# スタートアップモジュールのオブジェクトファイル名
+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) $(MAKEDEP_OPTS) \
+		-O "$(CFLAGS) $(KERNEL_CFLAGS)" $< >> Makefile.depend
+
+# リンカに対するオプション
+LDFLAGS := -nostdlib $(LDFLAGS)
+LIBS := $(LIBS) -lgcc
+----------------------------------------
+
+2.7 依存関係の定義
+
+コンフィギュレータの各パスに対して，ターゲット依存のファイルへの依存関
+係を定義する．具体的には，パス1，パス2，パス3が依存するファイルを，それ
+ぞれcfg1_out.c，kernel_cfg.timestamp，$(OBJFILE)に対する依存関係の形で
+記述する．
+
+ほとんどの場合に，ターゲット依存部ディレクトリのMakefile.targetには，以
+下の記述を含める必要がある．
+
+----------------------------------------
+cfg1_out.c: $(TARGETDIR)/target_def.csv
+kernel_cfg.timestamp: $(TARGETDIR)/target.tf
+$(OBJFILE): $(TARGETDIR)/target_check.tf
+----------------------------------------
+
+2.8 その他の設定
+
+(2-8-1) CLEAN_FILES				cleanにより削除するファイル名
+
+cleanにより削除するファイルをターゲット依存部で追加したい場合には，ファ
+イル名をこの変数に追加定義する．
+
+(2-8-2) REALCLEAN_FILES			realcleanにより削除するファイル名
+
+realcleanにより削除するファイルをターゲット依存部で追加したい場合には，
+ファイル名をこの変数に追加定義する．
+
+
+３．TOPPERS共通定義のターゲット依存部
+
+TOPPERS共通定義（t_stddef.h）のターゲット依存部は，target_stddef.hまた
+はそこからインクルードされるファイル（プロセッサ・チップ・開発環境依存
+部で用意されるヘッダファイルなど）に含める．
+
+3.1 ターゲット識別マクロ
+
+アプリケーションやシステムサービスでターゲットを識別するために，
+"TOPPERS_"にシステム略称を大文字にした文字列を連結したもの（例えば，
+"TOPPERS_DVE68K"）をマクロ定義する．
+
+また，ターゲット依存部からプロセッサ依存部やチップ依存部を切り分けた場
+合には，"TOPPERS_"に依存部略称を大文字にした文字列を連結したもの（例え
+ば，"TOPPERS_M68K"）をマクロ定義する．
+
+3.2 整数型の最大値・最小値・ビット数
+
+(3-2-1) INT_MAX				intに格納できる最大値（C90準拠）
+(3-2-2) INT_MIN				intに格納できる最小値（C90準拠）
+(3-2-3) UINT_MAX			unsigned intに格納できる最大値（C90準拠）
+(3-2-4) LONG_MAX			longに格納できる最大値（C90準拠）
+(3-2-5) LONG_MIN			longに格納できる最小値（C90準拠）
+(3-2-6) ULONG_MAX			unsigned longに格納できる最大値（C90準拠）
+(3-2-7) CHAR_BIT			char型のビット数（C90準拠）
+
+整数型の最大値・最小値・ビット数を，これらのシンボルにマクロに定義する．
+
+これらのマクロは，C90に準拠したものである．開発環境にC90に準拠した
+limits.hが用意されている場合には，これらのマクロを定義することに代えて，
+limits.hをインクルードすればよい．
+
+3.3 サイズの指定された整数型，その最大値・最小値，整数定数を作るマクロ
+
+(3-3-1) int8_t				符号付き8ビット整数（オプション，C99準拠）
+(3-3-2) uint8_t				符号無し8ビット整数（オプション，C99準拠）
+(3-3-3) int16_t				符号付き16ビット整数（C99準拠）
+(3-3-4) uint16_t			符号無し16ビット整数（C99準拠）
+(3-3-5) int32_t				符号付き32ビット整数（C99準拠）
+(3-3-6) uint32_t			符号無し32ビット整数（C99準拠）
+(3-3-7) int64_t				符号付き64ビット整数（オプション，C99準拠）
+(3-3-8) uint64_t			符号無し64ビット整数（オプション，C99準拠）
+(3-3-9) int128_t			符号付き128ビット整数（オプション，C99準拠）
+(3-3-10) uint128_t			符号無し128ビット整数（オプション，C99準拠）
+(3-3-11) int_least8_t		8ビット以上の符号付き整数（C99準拠）
+(3-3-12) uint_least8_t		8ビット以上の符号無し整数（C99準拠）
+(3-3-13) intptr_t			ポインタを格納できるサイズの符号付き整数（C99準拠）
+(3-3-14) uintptr_t			ポインタを格納できるサイズの符号無し整数（C99準拠）
+(3-3-15) INT8_MAX			int8_tに格納できる最大値（オプション，C99準拠）
+(3-3-16) INT8_MIN			int8_tに格納できる最小値（オプション，C99準拠）
+(3-3-17) UINT8_MAX			uint8_tに格納できる最大値（オプション，C99準拠）
+(3-3-18) INT16_MAX			int16_tに格納できる最大値（C99準拠）
+(3-3-19) INT16_MIN			int16_tに格納できる最小値（C99準拠）
+(3-3-20) UINT16_MAX			uint16_tに格納できる最大値（C99準拠）
+(3-3-21) INT32_MAX			int32_tに格納できる最大値（C99準拠）
+(3-3-22) INT32_MIN			int32_tに格納できる最小値（C99準拠）
+(3-3-23) UINT32_MAX			uint32_tに格納できる最大値（C99準拠）
+(3-3-24) INT64_MAX			int64_tに格納できる最大値（オプション，C99準拠）
+(3-3-25) INT64_MIN			int64_tに格納できる最小値（オプション，C99準拠）
+(3-3-26) UINT64_MAX			uint64_tに格納できる最大値（オプション，C99準拠）
+(3-3-27) INT128_MAX			int128_tに格納できる最大値（オプション，C99準拠）
+(3-3-28) INT128_MIN			int128_tに格納できる最小値（オプション，C99準拠）
+(3-3-29) UINT128_MAX		uint128_tに格納できる最大値（オプション，C99準拠）
+(3-3-30) INT_LEAST8_MAX		int_least8_tに格納できる最大値（C99準拠）
+(3-3-31) INT_LEAST8_MIN		int_least8_tに格納できる最小値（C99準拠）
+(3-3-32) UINT_LEAST8_MAX	uint_least8_tに格納できる最大値（C99準拠）
+(3-3-33) INT8_C(val)		int_least8_t型の定数を作るマクロ（C99準拠）
+(3-3-34) UINT8_C(val)		uint_least8_t型の定数を作るマクロ（C99準拠）
+(3-3-35) INT16_C(val)		int16_t型の定数を作るマクロ（C99準拠）
+(3-3-36) UINT16_C(val)		uint16_t型の定数を作るマクロ（C99準拠）
+(3-3-37) INT32_C(val)		int32_t型の定数を作るマクロ（C99準拠）
+(3-3-38) UINT32_C(val)		uint32_t型の定数を作るマクロ（C99準拠）
+(3-3-39) INT64_C(val)		int64_t型の定数を作るマクロ（オプション，C99準拠）
+(3-3-40) UINT64_C(val)		uint64_t型の定数を作るマクロ（オプション，C99準拠）
+(3-3-41) INT128_C(val)		int128_t型の定数を作るマクロ（オプション，C99準拠）
+(3-3-42) UINT128_C(val)		uint128_t型の定数を作るマクロ（オプション，C99準拠）
+
+指定されたサイズの整数型を，これらのシンボルに型定義する．また，データ
+型に格納できる最大値・最小値と，整数定数を作るマクロを，これらのシンボ
+ルにマクロ定義する．
+
+これらのデータ型およびマクロは，C99に準拠したものである．開発環境にC99
+に準拠したstdint.hが用意されている場合には，これらのデータ型およびマク
+ロを定義することに代えて，stdint.hをインクルードすればよい．
+
+上でオプションと記述したものは，該当するデータ型がコンパイラでサポート
+されている場合にのみ定義することを示す．
+
+3.4 サイズの指定された浮動小数点型，その最大値・最小値のマクロ
+
+(3-4-1) float32_t			IEEE754準拠の32ビット単精度浮動小数点数（オプ
+							ション）
+(3-4-2) double64_t			IEEE754準拠の64ビット倍精度浮動小数点数（オプ
+							ション）
+(3-4-3) FLOAT32_MIN			float32_tに格納できる最小の正規化された正の浮
+							動小数点数（オプション）
+(3-4-4) FLOAT32_MAX			float32_tに格納できる表現可能な最大の有限浮動
+							小数点数（オプション）
+(3-4-5) DOUBLE64_MIN		double64_tに格納できる最小の正規化された正の浮
+							動小数点数（オプション）
+(3-4-6) DOUBLE64_MAX		double64_tに格納できる表現可能な最大の有限浮動
+							小数点数（オプション）
+
+指定されたサイズ・表現形式の浮動小数点型を，これらのシンボルに型定義す
+る．また，データ型に格納できる最大値・最小値を，これらのシンボルにマク
+ロ定義する．
+
+いずれも，該当するデータ型がコンパイラでサポートされている場合にのみ定
+義する．
+
+3.5 コンパイラの拡張機能のためのマクロ定義
+
+コンパイラの拡張機能を用いるためのマクロとして，必要に応じて，以下のマ
+クロの定義を含める．
+
+(3-5-1) inline（オプション，デフォルトは未定義）
+(3-5-2) Inline（オプション，デフォルトはstatic inline）
+
+インライン関数であることを示す指定．Inlineは，コンパイル単位にローカル
+なインライン関数であることを示す．
+
+(3-5-3) asm（オプション，デフォルトは未定義）
+(3-5-4) Asm（オプション，デフォルトは未定義）
+
+インラインアセンブラを記述するための指定．Asmは，最適化により削除しては
+ならないことを示す．これらは，ターゲット依存部でのみ使うマクロであるた
+め，ターゲット依存部で使わないなら定義する必要はない．
+
+(3-5-5) offsetof(structure, field)（オプション，デフォルトの定義あり）
+
+構造体structureの中での，フィールドfieldのオフセットを求めるマクロ．
+
+(3-5-6) alignof(type)（オプション，デフォルトの定義あり）
+
+データ型typeのアラインメント単位を求めるマクロ．
+
+(3-5-7) NoReturn（オプション，デフォルトは未定義）
+
+リターンすることのない関数であることを示す指定．これは，ターゲット依存
+部のみ使うマクロであるため，ターゲット依存部で使わないなら定義する必要
+はない．
+
+3.6 標準的な定義の上書き
+
+t_stddef.hに含まれるTOPPERS共通定義の標準的な定義を上書きする場合には，
+以下のマクロを定義する．
+
+(3-6-1) TOPPERS_bool（オプション，デフォルトはint）
+(3-6-2) TOPPERS_size（オプション，デフォルトはuintptr_t）
+(3-6-3) TOPPERS_fp（オプション，デフォルトは他と互換性のない関数ポインタ）
+
+それぞれ，bool_t，SIZE，FPに型定義すべきデータ型．
+
+(3-6-4) UINT_C(val)（オプション，デフォルトはUを付加）
+(3-6-5) ULONG_C(val)（オプション，デフォルトはULを付加）
+
+それぞれ，unsigned uint型，unsigned long型の定数を作るためのマクロ．
+
+(3-6-6) NULL（オプション，デフォルトは0）
+
+C90準拠のC言語環境では，NULLの定義はstddef.hに含まれているため，これを
+インクルードしてもよい．
+
+(3-6-7) ERCD(mercd, sercd)（オプション）
+(3-6-8) MERCD(ercd)（オプション）
+(3-6-9) SERCD(ercd)（オプション）
+
+ERCD，MERCD，SERCDの標準の定義は，符号付き整数が2の補数で表現されており，
+右シフト演算子（>>）が算術シフトされることを仮定している．多くのコンパ
+イラでこの仮定が成り立つが，そうでない場合には，ターゲット依存部でこれ
+らの定義を上書きする必要がある．
+
+(3-6-10) ALIGN_TYPE(addr, type)（オプション）
+
+アドレスaddrが，データ型typeのアラインメント単位にアラインしているか
+チェックするマクロ．
+
+3.7 アサーションのための定義
+
+t_stddef.hには，assertの定義が含まれる．assertが失敗した場合（assertの
+パラメータがfalseになった場合）の処理を，ターゲット依存に用意する必要が
+ある．これらの定義は，assertマクロを使用する前であれば，t_stddef.h以降
+にインクルードされるファイルに含まれていてもよい．なお，assertを無効に
+する（NDEBUGをマクロ定義してコンパイルする）場合には，これらを用意する
+必要はない．
+
+(3-7-1) TOPPERS_assert_abort(void)
+
+assertが失敗した場合に，プログラムを停止させる関数．システム開発中はデ
+バッガに落とすのが理想的である．システム稼働時には例外処理を行わせるこ
+とになる．
+
+(3-7-2) TOPPERS_assert_fail(exp, file, line)
+
+assertが失敗した時の情報を表示/記録するためのマクロ．システムログ機能を
+用いる場合には，t_syslog.hにシステムログ機能に記録するための定義が含ま
+れているので，ターゲット依存部で用意する必要はない．
+
+
+４．システムインタフェースレイヤ（SIL）のターゲット依存部
+
+システムインタフェースレイヤ（SIL，sil.h）のターゲット依存部の定義は，
+target_sil.hまたはそこからインクルードされるファイル（プロセッサ・チッ
+プ・開発環境依存部で用意されるヘッダファイルなど）に含める．
+
+SILのサービスコールは，任意のシステム状態で呼び出すことができる．そのた
+め，SILのターゲット依存部の関数は，任意のシステム状態で呼び出せるように
+実装しなければならない．
+
+4.1 全割込みロック状態の管理
+
+SILのターゲット依存部では，全割込みロック状態へ遷移する機能と，元の状態
+へ戻す機能（元の状態を記憶するために変数を使う）を提供する．全割込みロッ
+ク状態であるかを判別する機能は提供する必要がない．
+
+SILの機能は，カーネルを使用しない場合にも使用できる必要がある．そのため，
+全割込みロック状態への遷移と元の状態への復帰は，カーネルを用いず，プロ
+セッサのリソースを直接操作することによって実現する．また，全割込みロッ
+ク状態への遷移と元の状態への復帰は，全割込みロック状態やCPUロック状態で
+も行える必要がある．
+
+保護機能を持ったカーネルでは，ユーザタスクからプロセッサのリソースを直
+接操作することができないため，ユーザタスクからはこれらの機能を用いるこ
+とができない．用いた場合の振舞いはターゲットプロセッサに依存するが，典
+型的には，特権命令違反などのCPU例外が発生することになる．
+
+(4-1-1) SIL_PRE_LOC
+
+全割込みロックフラグの状態を保存するための変数を定義するマクロ．型名の
+後に，変数名を続けたものに定義する．変数名は，他の名前と衝突しないよう
+に，"TOPPERS_"で始まる名前にする．
+
+(4-1-2) SIL_LOC_INT()
+
+現在の全割込みロックフラグの状態をSIL_PRE_LOCで定義した変数に保存し，全
+割込みロック状態に遷移させるマクロ．このマクロを実現する際には，「1.6
+クリティカルセクションの出入処理の実現に関する制約」の節に記述されてい
+る制約に従わなければならない．
+
+(4-1-3) SIL_UNL_INT()
+
+SIL_LOC_INT()によって変数に保存した状態に戻すマクロ．このマクロを実現す
+る際には，「1.6 クリティカルセクションの出入処理の実現に関する制約」の
+節に記述されている制約に従わなければならない．
+
+4.2 微少時間待ち
+
+(4-2-1) void sil_dly_nse(ulong_t dlytim)
+
+dlytimで指定された以上の時間（単位はナノ秒），ループなどによって待つ関
+数．
+
+以下の関数と等価な処理を，アセンブリ言語で記述する方法を，標準的な実装
+方法とする．アセンブリ言語で記述するのは，コンパイラの最適化に依存しな
+いようにするためである．またこの関数は，キャッシュ等の影響を受けないよ
+うに，できる限りメモリアクセスを行わないように実装すべきである．
+
+	void sil_dly_nse(ulong_t dlytim)
+	{
+		dlytim -= SIL_DLY_TIM1;
+		if (結果が0より大きい) {
+			do {
+				dlytim -= SIL_DLY_TIM2;
+			} while (結果が0より大きい);
+		}
+	}
+
+この関数の動作は次の通りである．dlytimがSIL_DLY_TIM1以下の場合には，最
+初のif文の条件が成立せず，すぐに関数から抜ける．dlytimがSIL_DLY_TIM1よ
+り大きく，(SIL_DLY_TIM1+SIL_DLY_TIM2)以下の場合には，最初のif文の条件は
+成立するが，doループは1回も回らずに関数から抜ける．dlytimが
+(SIL_DLY_TIM1+SIL_DLY_TIM2)より大きく，(SIL_DLY_TIM1+SIL_DLY_TIM2*2)以
+下の場合には，doループを1回だけ回って関数から抜ける．その後，dlytimが
+SIL_DLY_TIM2大きくなる度に，whileループを回る回数が1回ずつ増える．
+
+なお，この関数をアセンブリ言語（または，C言語）で記述する場合，どのファ
+イルに記述するかが問題になる．SILのターゲット依存部には，標準では，アセ
+ンブリ言語（または，C言語）の関数定義を記述するためのファイルを用意して
+いない．ターゲット依存で用意してもよいが，例外的に，カーネル実装のター
+ゲット依存モジュール（target_support.Sまたはtarget_config.c）に記述して
+もよいことにする．
+
+(4-2-2) SIL_DLY_TIM1（オプション）
+(4-2-3) SIL_DLY_TIM2（オプション）
+
+sil_dly_nseを上記の標準的な方法で実現した場合，この2つの定数をターゲッ
+ト依存部でマクロ定義する．
+
+SIL_DLY_TIM2は，上記の関数において，doループ1回の実行時間（単位はナノ秒）
+に設定する．ターゲットプロセッサの命令セットにもよるが，おおよそ，減算
+命令と条件分岐命令各1回の実行時間になる．SIL_DLY_TIM2が決まれば，関数呼
+出しも含めた全体の時間がdlytimで指定された以上の時間になるように，
+SIL_DLY_TIM1を決める．
+
+この2つの定数値の決定を支援するプログラムとして，testディレクトリに，
+test_dlynseを用意している．test_dlynseを実行すると，次のような出力が得
+られる．
+
+-- for fitting parameters --
+sil_dly_nse(0): 430 OK
+sil_dly_nse(420): 430 OK
+sil_dly_nse(510): 520 OK
+sil_dly_nse(600): 610 OK
+<中略>
+-- for checking boundary conditions --
+sil_dly_nse(421): 520 OK
+sil_dly_nse(511): 610 OK
+sil_dly_nse(601): 700 OK
+
+"for fitting parameters"に続く出力は，sil_dly_nse(dlytim)を呼び出した場
+合の待ち時間を測定した結果である．このプログラムを用いて，":"の右側の数
+値が，dlytimよりも大きい範囲でなるべく近い値になるように，2つの定数値を
+調整する．"for checking boundary conditions"に続く出力は，プログラムの
+妥当性をチェックするためのもので，":"の右側の数値が，dlytimよりも大きい
+ことを確認する（近い値になる必要はない）．
+
+4.3 プロセッサのエンディアン
+
+(4-3-1) SIL_ENDIAN_BIG
+(4-3-2) SIL_ENDIAN_LITTLE
+
+プロセッサのエンディアンにより，いずれか片方のシンボルをマクロ定義する．
+
+(4-3-3) TOPPERS_SIL_REV_ENDIAN_UINT16（オプション）
+(4-3-4) TOPPERS_SIL_REV_ENDIAN_UINT32（オプション）
+
+それぞれ，16ビット，32ビットの符号無し整数のエンディアンを反転させるマ
+クロ．プロセッサがエンディアン反転のための命令を持つ場合には，その命令
+を用いて実現する．これらのシンボルをマクロ定義しない場合には，デフォル
+トの定義が使われる．
+
+4.4 メモリ空間アクセス関数
+
+(4-4-1) TOPPERS_OMIT_SIL_ACCESS
+
+標準のメモリ空間アクセス関数を使用せず，ターゲット依存部で用意する場合
+には，このシンボルをマクロ定義する．
+
+(4-4-2) TOPPERS_OMIT_SIL_REH_LEM
+(4-4-3) TOPPERS_OMIT_SIL_WRH_LEM
+(4-4-4) TOPPERS_OMIT_SIL_REH_BEM
+(4-4-5) TOPPERS_OMIT_SIL_WRH_BEM
+(4-4-6) TOPPERS_OMIT_SIL_REW_LEM
+(4-4-7) TOPPERS_OMIT_SIL_WRW_LEM
+(4-4-8) TOPPERS_OMIT_SIL_REW_BEM
+(4-4-9) TOPPERS_OMIT_SIL_WRW_BEM
+
+それぞれ，標準のsil_reh_lem，sil_wrh_lem，sil_reh_bem，sil_wrh_bem，
+sil_rew_lem，sil_wrw_lem，sil_rew_bem，sil_wrw_bemを使用せず，ターゲッ
+ト依存部で用意する場合には，これらのシンボルをマクロ定義する．
+
+4.5 I/O空間アクセス関数
+
+メモリ空間とは別にI/O空間を持つプロセッサでは，I/O空間にあるデバイスレ
+ジスタをアクセスするための関数として，sil_reb_iop，sil_wrb_iop，
+sil_reh_iop，sil_wrh_iop，sil_reh_lep，sil_wrh_lep，sil_reh_bep，
+sil_wrh_bep，sil_rew_iop，sil_wrw_iop，sil_rew_lep，sil_wrw_lep，
+sil_rew_bep，sil_wrw_bepの中で必要なものを，ターゲット依存部で用意する．
+
+
+５．カーネルAPIのターゲット依存部
+
+カーネルAPI（kernel.h）のターゲット依存部の定義は，target_kernel.hまた
+はそこからインクルードされるファイル（プロセッサ・チップ・開発環境依存
+部で用意されるヘッダファイルなど）に含める．
+
+5.1 ターゲット定義でサポートする機能
+
+(5-1-1) TOPPERS_TARGET_SUPPORT_DIS_INT		dis_intをサポートする
+(5-1-2) TOPPERS_TARGET_SUPPORT_ENA_INT		ena_intをサポートする
+(5-1-3) TOPPERS_TARGET_SUPPORT_GET_UTM		get_utmをサポートする
+
+dis_int，ena_int，get_utmをサポートする場合に，それぞれのシンボルをマク
+ロ定義する．
+
+5.2 割込み優先度の範囲
+
+(5-2-1) TMIN_INTPRI				割込み優先度の最小値（最高値）
+(5-2-2) TMAX_INTPRI				割込み優先度の最大値（最低値）
+
+それぞれ，カーネル管理の割込み優先度の最小値（＝優先度が最高），カーネ
+ル管理の割込み優先度の最大値（優先度が最低）に定義する．TMAX_INTPRIは-1
+に固定されているが，対称性のために，ターゲット依存部で定義することにし
+ている．
+
+5.3 タイムティックの定義
+
+(5-3-1) TIC_NUME				タイムティックの周期の分子
+(5-3-2) TIC_DENO				タイムティックの周期の分母
+
+タイムティックの周期（signal_timeを呼び出す周期）を，ミリ秒単位で，
+TIC_NUME/TIC_DENOに定義する．例えば，タイムティックの周期が1/30秒の場合
+には，TIC_NUMEを100に，TIC_DENOを3に定義すればよい．
+
+タイムティックの周期は，1ミリ秒とする（つまり，TIC_NUME，TIC_DENOとも1
+に定義する）ことを推奨するが，シミュレーション環境や性能の低いプロセッ
+サでそれが適切でない場合には，それ以外の値としてもよい．その場合でも，
+可能な限り，1ミリ秒の倍数である（つまり，TIC_DENOを1に定義する）ことが
+望ましい．
+
+TIC_NUMEとTIC_DENOの定義を変更することで，タイムティックの周期を変更で
+きるようにタイマドライバを実装する場合には，この2つの定数の定義はデフォ
+ルト値を与えていることになる．そこで，これらの定義を「#ifndef TIC_NUME」
+「#endif」で囲んで記述する．
+
+5.4 メモリ領域確保のための型定義
+
+(5-4-1) TOPPERS_STK_T	スタック領域を確保するための型（オプション）
+(5-4-2) TOPPERS_MPF_T	固定長メモリプール領域を確保するための型（オプション）
+
+スタック領域と固定長メモリプール領域は，標準では，intptr_t型の配列とし
+て確保するが，より大きい単位でアラインさせたいなどの理由で，それ以外の
+型の配列として確保する場合には，それぞれTOPPERS_STK_TとTOPPERS_MPF_Tを，
+配列のベースとなるデータ型にマクロ定義する．
+
+5.5 ビットパターンのビット数
+
+(5-5-1) TBIT_TEXPTN		タスク例外要因のビット数（オプション）
+(5-5-2) TBIT_FLGPTN		イベントフラグのビット数（オプション）
+
+TBIT_TEXPTN，TBIT_FLGPTNの標準の定義では，整数型の有効ビット数が，その
+型のsizeofにCHAR_BITを乗じたものと一致していることを仮定している．多く
+のコンパイラでこの仮定が成り立つが，そうでない場合には，ターゲット依存
+部でこれらの定義を上書きする必要がある．ただし，これらの値は16以上でな
+ければならない．
+
+5.6 メモリ領域確保のためのマクロ
+
+(5-6-1) TOPPERS_ROUND_SZ（オプション）
+(5-6-2) TOPPERS_COUNT_SZ（オプション）
+
+TOPPERS_COUNT_SZ(sz, unit)は，sz/unitを切り上げた値を求めるマクロで，サ
+イズがszのメモリ領域をサイズがunitのデータ型の配列で確保する場合の要素
+数を求めるために用いる．TOPPERS_ROUND_SZ(sz, unit)は，sz/unitを切り上げ
+たものにunitをかけた値を求めるマクロで，サイズがszのメモリ領域をサイズ
+がunitのデータ型の配列で確保する場合のトータルサイズを求めるために用い
+る．
+
+それぞれ，標準のTOPPERS_ROUND_SZ，TOPPERS_COUNT_SZが適切でなく，ターゲッ
+ト依存部で用意する場合には，これらのシンボルを適切な値にマクロ定義する．
+
+5.7 オーバランハンドラ機能拡張のための定義（オプション）
+
+オーバランハンドラ機能拡張パッケージをサポートする（使用できるようにす
+る）場合には，次の3つを実施することが必要である．
+
+・この節で説明する定義を行う．
+・６章に示すコード中で，TOPPERS_SUPPORT_OVRHDRがマクロ定義されている場
+　合にのみ有効となるコードを実装する．
+・オーバランタイマドライバを用意する．オーバランタイマドライバについて
+　は，「6.14 オーバランタイマドライバ」の節を参照すること．
+
+(5-7-1) TOPPERS_TARGET_SUPPORT_OVRHDR
+
+オーバランハンドラ機能拡張パッケージをサポートする場合には，このシンボ
+ルをマクロ定義する．
+
+(5-7-2) TMAX_OVRTIM（オプション，デフォルトはULONG_MAX）
+
+プロセッサ時間としてオーバランタイマに設定できる最大値（単位はマイクロ
+秒）にマクロ定義する．
+
+
+６．カーネル実装のターゲット依存部
+
+6.1 カーネル実装のターゲット依存部の共通事項
+
+6.1.1 カーネル実装のターゲット依存部の構成要素
+
+カーネル実装のターゲット依存部は，以下の要素で構成される．
+
+(a) カーネル実装のターゲット依存の定義
+
+カーネル実装のターゲット非依存部から参照されるターゲット依存の定義は，
+target_config.hまたはそこからインクルードされるファイル（プロセッサ・チッ
+プ・開発環境依存部で用意されるヘッダファイルなど）に含める．
+
+ターゲットのハードウェア資源（割込みハンドラ番号やCPU例外ハンドラ番号，
+デバイスレジスタの番地など）の定義は，システムサービスやアプリケーショ
+ンにも有用であるため，カーネル実装のみに有用な定義を含むファイルとは切
+り分けて，独立したヘッダファイルに含める．このヘッダファイルの標準的な
+名称を，システム略称.h（または，チップ略称.h，プロセッサ略称.h）とする．
+
+(b) カーネル実装のターゲット依存モジュール
+
+カーネル実装のターゲット依存の変数定義や関数を含むモジュール．C言語で記
+述される部分をtarget_config.c，アセンブリ言語で記述される部分を
+target_support.Sに含める．プロセッサ・チップ・開発環境依存部を切り分け
+ることや，ファイルが大きくなる場合に複数のファイルに分割することも可能
+である．
+
+(c) カーネル実装のターゲット依存部のためのリネーム記述
+
+カーネル実装のターゲット依存部の変数名や関数名を，先頭に_kernel_を付与
+した名前にリネームするためのモジュール．target_rename.defを用意し，ツー
+ル（utils/genrename）により，target_rename.hとtarget_unrename.hを生成す
+る．プロセッサ・チップ・開発環境依存部を切り分ける場合には，リネーム記
+述も切り分ける．
+
+(d) タイマドライバ
+
+カーネルにタイムティックを通知する（signal_timeを周期的に呼び出す）ため
+のタイマドライバのヘッダファイル，実装ファイル，システムコンフィギュレー
+ションファイルを，それぞれ，target_timer.h，target_timer.c，
+target_timer.cfgに含める．プロセッサ・チップ・開発環境依存部を切り分け
+ることも可能である．
+
+また，オーバランハンドラ機能拡張パッケージをサポートする場合には，オー
+バランハンドラを起動する（call_ovrhdrを呼び出す）ためのオーバランタイマ
+ドライバも，同じファイルに含める．
+
+なお，この章に示すコード中で，TOPPERS_SUPPORT_OVRHDRがマクロ定義されて
+いる場合にのみ有効となるコードは，オーバランハンドラ機能拡張パッケージ
+をサポートしない場合には，実装する必要がない．
+
+(e) コンフィギュレータ設定ファイル
+
+コンフィギュレータの設定ファイルのターゲット依存部を，target_def.csv，
+target.tf，target_check.tfに用意する．コンフィギュレータ設定ファイルの
+記述方法については，７章で説明する．
+
+6.1.2 ターゲット依存部の関数の命名規則
+
+カーネル実装のターゲット依存部を構成する関数の中で，t_で始まるものはタ
+スクコンテキスト専用，i_で始まるものは非タスクコンテキスト専用，x_で始
+まるものはいずれのコンテキストからでも呼び出すことができる関数である．
+
+6.2 トレースログ機能への対応
+
+カーネルのトレースログ機能の中で，ディスパッチャ，割込みハンドラ，CPU例
+外ハンドラの開始・終了のトレースログ取得は，ターゲット依存部で実装する
+必要がある．ほとんどのターゲットシステムにおいて，それらの処理はアセン
+ブリ言語で記述されており，ターゲット非依存部向けのトレースログマクロと
+同じ方法（トレースログマクロを，トレースログ取得処理のC言語記述にマクロ
+定義する方法）は，用いることができない．
+
+そこで，アセンブリ言語で記述されている処理中にトレースログ取得を埋め込
+む場合には，トレースログマクロが定義されていれば，それが何に定義されて
+いるかは無視して，標準的なトレースログ関数がC言語で記述されていると想定
+して，それを呼び出すようにコーディングする．
+
+具体的には，下の表の左側に示したトレースログマクロが定義されていれば，
+表の右側に示したC言語記述と同等の処理を行うようにコーディングする．
+
+	トレースログマクロ		トレースログ取得処理
+	-----------------------------------------------
+	LOG_DSP_ENTER			log_dsp_enter(p_runtsk)
+	LOG_DSP_LEAVE			log_dsp_leave(p_runtsk)
+	LOG_INH_ENTER			log_inh_enter(inhno)
+	LOG_INH_LEAVE			log_inh_leave(inhno)
+	LOG_EXC_ENTER			log_exc_enter(excno)
+	LOG_EXC_LEAVE			log_exc_leave(excno)
+
+6.3 システム状態の管理
+
+ASPカーネルを新たなターゲットシステムにポーティングする際に，最も重要な
+作業は，カーネルが定義するシステム状態を，ハードウェア（プロセッサ）上
+でどのように実現するかである．以下の説明は，TOPPERS新世代カーネルにおけ
+るシステム状態の定義・意味を知っていることを前提に記述している．
+
+6.3.1 全割込みロック状態の管理
+
+全割込みロック状態は，NMIを除くすべての割込みをマスクした状態である．全
+割込みロック状態を管理する機能は，システムインタフェースレイヤ（SIL）に
+よって提供され，カーネルは全割込みロック状態を管理しない．
+
+全割込みロック状態では，sns_kerとext_ker以外のカーネルのサービスコール
+を呼ぶことはできないものとしており，呼んだ場合には何が起こるか保証して
+いない．sns_kerとext_kerから呼び出す処理は，トレースログ取得処理とSILの
+サービスコールを除くと，call_exit_kernelのみである．そのため，
+call_exit_kernelから呼び出すものを除いて，カーネルのターゲット依存部の
+関数が，全割込みロック状態で呼び出される状況は考える必要がない．
+
+6.3.2 コンテキストの管理
+
+処理単位が実行されるコンテキストは，タスクコンテキストと非タスクコンテ
+キストに分類される．
+
+ターゲット依存部は，実行中の処理単位が，タスクコンテキストで実行されて
+いるか非タスクコンテキストで実行されているかを判別する機能を提供する．
+また，CPU例外が発生したコンテキストについて判別する機能を提供する．
+
+ターゲット依存部では，割込みハンドラとCPU例外ハンドラの入口処理で非タス
+クコンテキストに切り換え，それらの出口処理で元のコンテキストに戻す．ま
+た，ディスパッチャの内部で一時的に非タスクコンテキストに切り換える．
+
+(6-3-2-1) bool_t sense_context(void)
+
+実行中の処理単位が，タスクコンテキストで実行されている場合にはfalse，非
+タスクコンテキストで実行されている場合にはtrueを返す関数．この関数は，
+CPUロック状態でもCPUロック解除状態でも呼び出せるように実装しなければな
+らない．
+
+6.3.3 CPUロック状態の管理
+
+ターゲット依存部は，CPUロック状態へ遷移する機能，CPUロック解除状態へ遷
+移する機能，CPUロック状態であるかを判別する機能を提供する．
+
+(6-3-3-1) void t_lock_cpu(void)
+(6-3-3-2) void i_lock_cpu(void)
+(6-3-3-3) void x_lock_cpu(void)
+
+CPUロック解除状態から，CPUロック状態へ遷移させる関数．これらの関数は，
+CPUロック状態で呼び出されることはなく，呼び出された場合の動作は保証する
+必要がない．
+
+これらの関数を実現する際には，「1.6 クリティカルセクションの出入処理の
+実現に関する制約」の節に記述されている制約に従わなければならない．
+
+(6-3-3-4) void t_unlock_cpu(void)
+(6-3-3-5) void i_unlock_cpu(void)
+(6-3-3-6) void x_unlock_cpu(void)
+
+CPUロック状態から，CPUロック解除状態へ遷移させる関数．これらの関数は，
+CPUロック解除状態で呼び出されることはなく，呼び出された場合の動作は保証
+する必要がない．
+
+タスクコンテキストでCPUロック状態に遷移した場合には，CPUロック解除状態
+に戻るのはタスクコンテキストに限られ，非タスクコンテキストでCPUロック解
+除状態に戻ることはない．言い換えると，t_unlock_cpuが呼び出されるのは，
+t_lock_cpuによってCPUロック状態になっている時である．i_lock_cpuによって
+CPUロック状態になっている時には，t_unlock_cpuが呼び出されることはない．
+
+同様に，非タスクコンテキストでCPUロック状態に遷移した場合には，CPUロッ
+ク解除状態に戻るのは非タスクコンテキストに限られ，タスクコンテキストで
+CPUロック解除状態に戻ることはない．言い換えると，i_unlock_cpuが呼び出さ
+れるのは，i_lock_cpuによってCPUロック状態になっている時である．
+t_lock_cpuによってCPUロック状態になっている時には，i_unlock_cpuが呼び出
+されることはない．
+
+これらの関数を実現する際には，「1.6 クリティカルセクションの出入処理の
+実現に関する制約」の節に記述されている制約に従わなければならない．
+
+(6-3-3-7) bool_t t_sense_lock(void)
+(6-3-3-8) bool_t i_sense_lock(void)
+(6-3-3-9) bool_t x_sense_lock(void)
+
+現在のシステム状態が，CPUロック状態の場合はtrue，CPUロック解除状態の場
+合にはfalseを返す関数．
+
+これらの関数が全割込みロック状態で呼び出される状況は考える必要がないこ
+とから，全割込みロック状態とCPUロック状態を区別できる必要はない．NMI以
+外にカーネルの管理外の割込みを設けない場合には，全割込みロック状態と
+CPUロック状態が全く同一の状態でもかまわない．
+
+6.4 割込みに関連するシステム状態の管理
+
+6.4.1 割込み優先度マスクの管理
+
+ターゲット依存部は，割込み優先度マスクを設定する機能と，割込み優先度マ
+スクを参照する機能を提供する．
+
+(6-4-1-1) bool_t VALID_INTPRI_CHGIPM(PRI intpri)（オプション）
+
+intpriが，chg_ipmに対する割込み優先度として有効な値である場合にtrue，そ
+うでない場合にfalseを返すマクロ．標準では，TMIN_INTPRI以上，TIPM_ENAALL
+（＝0）以下の値がchg_ipmに対する割込み優先度として有効であるが，ターゲッ
+ト依存部でこのマクロを定義することで，TMIN_INTPRIよりも小さい値を有効と
+することができる（有効な値の範囲を狭めてはならない）．
+
+(6-4-1-2) void x_set_ipm(PRI intpri)
+(6-4-1-3) void t_set_ipm(PRI intpri)
+(6-4-1-4) void i_set_ipm(PRI intpri)
+
+割込み優先度マスクの値をintpriに設定する関数．
+
+これらの関数は，CPUロック状態でもCPUロック解除状態でも呼び出せるように
+実装するのが望ましい．ただし，x_set_ipmとt_set_ipmは，ターゲット非依存
+部がCPUロック解除状態で呼び出すことはないため，CPUロック解除状態で呼び
+出された場合の動作は保証する必要がない．i_set_ipmは，CPUロック状態でも
+CPUロック解除状態でも呼び出せるように実装しなければならない．
+
+また，これらの関数は，VALID_INTPRI_CHGIPM(intpri)がtrueを返すintpriに対
+してのみ呼ばれる．intpriにそうでない値が渡された場合の動作は保証する必
+要がない．
+
+(6-4-1-5) PRI x_get_ipm(void)
+(6-4-1-6) PRI t_get_ipm(void)
+(6-4-1-7) PRI i_get_ipm(void)
+
+割込み優先度マスクの値を参照して返す関数．
+
+これらの関数は，CPUロック状態でもCPUロック解除状態でも呼び出せるように
+実装するのが望ましい．ただし，x_get_ipmとt_get_ipmは，ターゲット非依存
+部がCPUロック解除状態で呼び出すことはないため，CPUロック解除状態で呼び
+出された場合の動作は保証する必要がない．i_get_ipmは，CPUロック状態でも
+CPUロック解除状態でも呼び出せるように実装しなければならない．
+
+割込み優先度マスクを用いてカーネル管理の割込みをすべてマスクした状態は，
+CPUロック状態と区別できることが必要である．具体的には，CPUロック解除状
+態において，x_set_ipmを用いてカーネル管理の割込みをすべてマスクした場合
+でも，x_sense_lockはfalseを返す．
+
+それに対して，割込み優先度マスクを用いてNMIを除くすべての割込みをマスク
+できる場合，その状態と全割込みロック状態を区別できる必要はなく，全く同
+一の状態でもかまわない．
+
+6.4.2 割込み要求禁止フラグの管理
+
+ターゲット依存部は，割込み要求禁止フラグをセットする機能とクリアする機
+能を提供する．
+
+(6-4-2-1) bool_t VALID_INTNO_DISINT(INTNO intno)
+
+intnoが，dis_int／ena_intに対する割込み番号として有効な値である場合に
+true，そうでない場合にfalseを返すマクロ．割込み要求禁止フラグがセット／
+クリアできないintnoに対しては，このマクロがfalseを返すようにする．
+
+(6-4-2-2) bool_t x_disable_int(INTNO intno)
+(6-4-2-3) bool_t t_disable_int(INTNO intno)
+(6-4-2-4) bool_t i_disable_int(INTNO intno)
+
+intnoで指定された割込み要求ラインに対する割込み要求禁止フラグをセットし，
+trueを返す関数．指定された割込み要求ラインに対して，割込み属性が設定さ
+れていない場合には，falseを返す．
+
+これらの関数は，ターゲット非依存部がCPUロック解除状態で呼び出すことはな
+いため，CPUロック解除状態で呼び出された場合の動作は保証する必要がない．
+ただし，ターゲット依存部からCPUロック解除状態で呼び出す場合には，保証す
+る必要がある．
+
+また，これらの関数は，VALID_INTNO_DISINT(intno)がtrueとなるintnoに対し
+てのみ呼ばれる．intnoにそうでない値が渡された場合の動作は保証する必要が
+ない．
+
+dis_intサービスコールをサポートする場合（TOPPERS_SUPPORT_DIS_INTをマク
+ロ定義する場合）には，t_disable_intが用意されていなければならない．
+
+(6-4-2-5) bool_t x_enable_int(INTNO intno)
+(6-4-2-6) bool_t t_enable_int(INTNO intno)
+(6-4-2-7) bool_t i_enable_int(INTNO intno)
+
+intnoで指定された割込み要求ラインに対する割込み要求禁止フラグをクリアし，
+trueを返す関数．指定された割込み要求ラインに対して，割込み属性が設定さ
+れていない場合には，falseを返す．
+
+これらの関数は，ターゲット非依存部がCPUロック解除状態で呼び出すことはな
+いため，CPUロック解除状態で呼び出された場合の動作は保証する必要がない．
+ただし，ターゲット依存部からCPUロック解除状態で呼び出す場合には，保証す
+る必要がある．
+
+また，これらの関数は，VALID_INTNO_DISINT(intno)がtrueとなるintnoに対し
+てのみ呼ばれる．intnoにそうでない値が渡された場合の動作は保証する必要が
+ない．
+
+ena_intサービスコールをサポートする場合（TOPPERS_SUPPORT_ENA_INTをマク
+ロ定義する場合）には，t_enable_intが用意されていなければならない．
+
+6.4.3 割込み要求のクリア
+
+(6-4-3-1) void x_clear_int(INTNO intno)
+(6-4-3-2) void t_clear_int(INTNO intno)
+(6-4-3-3) void i_clear_int(INTNO intno)
+
+intnoで指定された割込み要求ラインがエッジトリガである場合に，トリガされ
+た割込み要求をクリアする関数．intnoで指定された割込み要求ラインがレベル
+トリガである場合には何もしない．
+
+ASPカーネルのターゲット非依存部では，これらの関数を呼び出していないが，
+ターゲット依存部やシステムサービスで呼び出す可能性が高いため，用意する
+こととしている．そのため，これらの関数がどのようなシステム状態で呼び出
+せるかは，ターゲット依存部内で一貫していればよい．
+
+6.4.4 割込み要求のプローブ
+
+(6-4-4-1) bool_t x_probe_int(INTNO intno)
+(6-4-4-2) bool_t t_probe_int(INTNO intno)
+(6-4-4-3) bool_t i_probe_int(INTNO intno)
+
+intnoで指定された割込み要求ラインに対して，割込みが要求されている場合に
+true，そうでない場合にfalseを返す関数．
+
+ASPカーネルのターゲット非依存部では，これらの関数を呼び出していないが，
+ターゲット依存部やシステムサービスで呼び出す可能性が高いため，用意する
+こととしている．そのため，これらの関数がどのようなシステム状態で呼び出
+せるかは，ターゲット依存部内で一貫していればよい．
+
+6.4.5 割込みハンドラの先頭処理と末尾処理
+
+(6-4-5-1) void i_begin_int(INTNO intno)
+
+intnoで指定された割込み要求ラインに対する割込みハンドラの先頭で行うべき
+処理を行う関数．ここで行うべき処理としては，割込み要求ラインがエッジト
+リガである場合のトリガされた割込み要求のクリアが挙げられる．
+
+intnoに対して登録された割込みサービスルーチンを呼び出す割込みハンドラの
+先頭で呼び出される．そのためこの関数は，割込みハンドラの先頭（通常は
+CPUロック解除状態）で呼び出せるように実装しなければならない．
+
+(6-4-5-2) void i_end_int(INTNO intno)
+
+intnoで指定された割込み要求ラインに対する割込みハンドラの末尾で行うべき
+処理を行う関数．ここで行うべき処理としては，割込みコントローラ（IRC）に
+対する割込み処理の終了通知が挙げられる．
+
+intnoに対して登録された割込みサービスルーチンを呼び出す割込みハンドラの
+末尾で呼び出される．そのためこの関数は，割込みハンドラの末尾（通常は
+CPUロック解除状態）で呼び出せるように実装しなければならない．
+
+ターゲットによっては，IRCに対する割込み処理の終了通知を行う前に，すべて
+の割込みを禁止しなければならない場合がある．この場合には，この関数の中
+で割込みを禁止し，その状態のまま，割込みハンドラからリターンする．割込
+みハンドラからのリターン前には，割込み禁止を解除するのが原則であるが，
+割込みハンドラの出口処理で元に戻す処理を行うので差し支えないはずである．
+割込みハンドラの出口処理が，これで差し支えない実装になっていることを確
+認するべきである．
+
+6.5 タスクディスパッチャ
+
+6.5.1 タスクコンテキストブロックとタスク初期化コンテキストブロック
+
+(6-5-1-1) TSKCTXB
+
+ターゲット依存のタスクコンテキストを保存するために，TCB中に持つことが必
+要なデータ構造の型を，TSKCTXBに定義する．標準的には，TSKCTXBには，タス
+クのスタックポインタと実行再開番地を格納する．
+
+(6-5-1-2) USE_TSKINICTXB（オプション）
+(6-5-1-3) TSKINICTXB（オプション）
+
+ターゲット依存の情報をタスク初期化ブロック（TINIB）に入れたい場合や，
+TINIB中のスタック領域のサイズと先頭番地の持ち方をターゲット依存に変更し
+たい場合には，USE_TSKINICTXBをマクロ定義し，TINIB中に持つことが必要なデー
+タ構造の型を，TSKINICTXBに定義する．
+
+USE_TSKINICTXBをマクロ定義すると，TINIB中にスタック領域とサイズと先頭番
+地が含まれなくなるため，それに代わる情報をTSKINICTXB中に持つ必要がある．
+また，コンフィギュレータのパス2のテンプレートファイルのターゲット非依存
+部で，TSKINICTXBの初期化情報を生成するためのGENERATE_TSKINICTXBを，パス
+3のテンプレートファイルのターゲット非依存部で，TINIBからスタック領域の
+先頭番地を取り出すためのGET_STK_TSKINICTXBを定義する必要がある．
+
+6.5.2 ディスパッチャ本体
+
+ディスパッチャ本体（dispatcher）は，ターゲット非依存部から直接呼び出さ
+れることはなく，カーネルのターゲット依存部の内部からのみ呼び出される．
+dispatcherは，タスクコンテキスト・CPUロック状態・割込み優先度マスク全解
+除状態・ディスパッチ許可状態で呼び出される．
+
+dispatcherの処理内容は次の通り．
+
+----------------------------------------
+void
+dispatcher(void)
+{
+#ifdef LOG_DSP_ENTER
+	log_dsp_enter(p_runtsk);
+#endif /* LOG_DSP_ENTER */
+  dispatcher_0:
+	while ((p_runtsk = p_schedtsk) == NULL) {
+		割込みを許可したらCPUロック解除状態になるよう準備する
+		非タスクコンテキストに切り換える … (*1)
+		do {
+			割込みをすべて許可し，割込み発生を待つ … (*2)
+			割込み許可前の状態に戻す（＝カーネル管理の割込みを禁止する）
+		} while (!reqflg);
+		reqflg = false;
+		タスクコンテキストに戻す … (*1)
+		CPUロック状態に戻す ... (*3)
+	}
+	自タスク（p_runtsk）のTCBからスタックポインタを復帰する
+#ifdef LOG_DSP_LEAVE
+	log_dsp_leave(p_runtsk);
+#endif /* LOG_DSP_LEAVE */
+	自タスクのTCBから実行再開番地を復帰し，そこへ分岐する … (*a)
+}
+----------------------------------------
+
+割込み発生を待つ間に非タスクコンテキストに切り換えるのは，この間に実行
+される割込みハンドラ内で，タスクディスパッチをしないようにするためであ
+る．この時，割込みハンドラが，非タスクコンテキスト用のスタックを使うよ
+うにしなければならない．通常は，非タスクコンテキストに切り換える際に非
+タスクコンテキスト用のスタックに切り換え，タスクコンテキストに戻す際に
+元のスタックに切り換える．
+
+ターゲットによっては（特に，シミュレーション環境の場合），強制的に非タ
+スクコンテキストに切り換えることが難しい場合がある．その場合には，この
+間に実行される割込みハンドラ内でタスクディスパッチをしないような仕組み
+を実装することで，非タスクコンテキストへの切換えを省略することができる．
+
+(*1)の非タスクコンテキストに切り換える処理とタスクコンテキストに戻す処
+理は，doループの中で行ってもよい（ターゲットによっては，割込みの許可／
+禁止とまとめて処理した方が効率が良い）．
+
+(*2)において，割込みを許可する処理と，割込み発生を待つ処理とは，不可分
+に行なう必要がある．これを不可分に行なわない場合，割込みを許可した直後
+に割込みが入り，その中でタスクが実行可能状態になると，実行すべきタスク
+があるにもかかわらずプロセッサが割込み待ちになってしまう．
+
+また，(*2)において，割込み発生を待つ命令が用意されていない場合や，それ
+を発行するのが不都合な場合には，割込みをすべて許可して割込みを受け付け
+られる状態になった後に，割込み発生を待たずに次に進んでもよい．この場合，
+その外側のdoループによって，割込み発生を待つことになる．
+
+CPUロックを解除するための情報（例えば，CPUロック前の割込み優先度マスク）
+を変数に保持している場合には，(*3)でCPUロック状態に戻す際に，その変数の
+値も元に戻っている必要がある．特に，その変数が，割込み待ちの間に実行し
+た割込みハンドラ内で書き換えられる場合は，元の値に戻すことが必要である．
+
+割込み待ちの間は，p_runtskをNULL（＝0）に設定しなければならない（上の処
+理内容をそのまま実装すればこうなる）．このように設定しないと，割込みハ
+ンドラからiget_tidを呼び出した際の動作が仕様に合致しなくなる．
+
+(*a)において，実行再開番地は，TCBではなく，スタックに保存／復帰する方法
+もある．この場合，タスクの実行開始前にスタックを使ってはならないため，
+タスクの起動処理を例外扱いする必要がある．
+
+dispatcherをアセンブリ言語で記述する場合には，トレースログ取得処理は，
+「6.2 トレースログ機能への対応」の節で記述した方法でコーディングするこ
+と．なお，log_dsp_enterは切換え前のタスクのスタックで，log_dsp_leave は
+切換え後のタスクのスタックで実行する．
+
+6.5.3 タスクコンテキストからのディスパッチ
+
+(6-5-3-1) void dispatch(void)
+(6-5-3-2) OMIT_CALLTEX（オプション）
+
+タスクコンテキストからのディスパッチ（dispatch）は，タスクコンテキスト
+用のサービスコール処理においてタスク切換えが必要になった場合に，ターゲッ
+ト非依存部のサービスコール処理関数から呼び出される．
+
+dispatchは，タスクコンテキスト・CPUロック状態・割込み優先度マスク全解除
+状態・ディスパッチ許可状態で呼び出される．
+
+dispatchの処理内容は次の通り．
+
+----------------------------------------
+void
+dispatch(void)
+{
+#ifdef TOPPERS_SUPPORT_OVRHDR
+	ovrtimer_stop();					/* オーバランタイマの停止 */
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+	スクラッチレジスタ(*)を除くすべてのレジスタをスタックに保存する
+	スタックポインタを自タスク（p_runtsk）のTCBに保存する
+	dispatch_rを，実行再開番地として自タスクのTCBに保存する … (*a)
+	dispatcherに分岐する
+
+  dispatch_r:
+	スクラッチレジスタを除くすべてのレジスタをスタックから復帰する
+#ifdef TOPPERS_SUPPORT_OVRHDR
+	ovrtimer_start();					/* オーバランタイマの動作開始 */
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+	calltex(); … (*b)
+}
+----------------------------------------
+
+ここでスクラッチレジスタ(*)とは，関数呼出しにより保存されないレジスタの
+ことである．必要な場合には，関数を呼び出す側で保存しなければならないた
+め，caller saved registerと呼ばれる場合もある．
+
+dispatchを呼び出したタスクが次に実行される時には，実行再開番地として登
+録したdispatch_rに戻ってくる．dispatch_rには，dispatcherのみから分岐し，
+その時の状態は，タスクコンテキスト・CPUロック状態・割込み優先度マスク全
+解除状態・ディスパッチ許可状態である．
+
+(*b)でcalltexを呼ぶ代わりに，calltexの処理内容（p_runtsk->enatexがtrue
+で，p_runtsk->texptnが0でなく，ipmflgがtrueの場合に，call_texrtnを呼ぶ）
+をここにインライン展開した方が効率がよい．ターゲット非依存部のcalltexを
+使わない場合には，OMIT_CALLTEXをマクロ定義することで，ターゲット非依存
+部からcalltexを取り除くことができる．
+
+6.5.4 ディスパッチャの動作開始
+
+(6-5-4-1) void start_dispatch(void)
+
+ディスパッチャの動作開始（start_dispatch）は，カーネル起動時に，カーネ
+ルの初期化処理から呼び出される．start_dispatchは，リターンすることのな
+い関数である．
+
+start_dispatchは，非タスクコンテキストで，NMIを除くすべての割込みをマス
+クした状態（全割込みロック状態と同等の状態）で呼び出される．start_dispatch
+内で，タスクコンテキストに切り換え，CPUロック状態・割込み優先度マスク全
+解除状態にしなければならない．
+
+start_dispatchの処理内容は次の通り．
+
+----------------------------------------
+void
+start_dispatch(void)
+{
+	タスクコンテキストに切り換える
+	CPUロック状態・割込み優先度マスク全解除状態にする
+	dispatcher_0に分岐する
+}
+----------------------------------------
+
+6.5.5 現在のコンテキストを捨ててディスパッチ
+
+(6-5-5-1) void exit_and_dispatch(void)
+
+現在のコンテキストを捨ててディスパッチ（exit_and_dispatch）は，自タスク
+を終了させるサービスコール処理関数から呼び出される．exit_and_dispatchは，
+リターンすることのない関数である．
+
+exit_and_dispatchは，タスクコンテキスト・CPUロック状態・割込み優先度マ
+スク全解除状態・ディスパッチ許可状態で呼び出される．
+
+exit_and_dispatchの処理内容は次の通り．
+
+----------------------------------------
+void
+exit_and_dispatch(void)
+{
+	dispatcherに分岐する
+}
+----------------------------------------
+
+6.5.6 タスクの起動処理
+
+(6-5-6-1) void activate_context(TCB *p_tcb)
+
+タスクの起動処理（activate_context）は，タスクを休止状態から実行できる
+状態にする時に呼ばれ，指定されたタスクのTCB中のスタックポインタを初期化
+し，実行再開番地をタスク開始時処理（start_r）に設定する．この時点では，
+指定されたタスクのスタック領域を使ってはならない．
+
+指定されたタスクが最初に実行される時には，指定されたタスクを自タスクと
+して，実行再開番地として登録したstart_rに分岐してくる．start_rには，
+dispatcherのみから分岐し，その時の状態は，タスクコンテキスト・CPUロック
+状態・割込み優先度マスク全解除状態・ディスパッチ許可状態である．
+
+start_rは，CPUロック状態を解除した後，タスクの起動番地を呼び出す．さら
+に，タスクの起動番地から戻ってきた場合には，ext_tskを呼び出す．
+
+activate_contextとstart_rの処理内容は次の通り．
+
+----------------------------------------
+void
+activate_context(TCB *p_tcb)
+{
+	指定されたタスク（p_tcb）のTCB中のスタックポインタを初期化する
+	start_rを，実行再開番地として自タスクのTCBに保存する … (*a)
+	return;
+
+  start_r:
+#ifdef TOPPERS_SUPPORT_OVRHDR
+	ovrtimer_start();					/* オーバランタイマの動作開始 */
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+	CPUロック解除状態にする
+	自タスク（p_runtsk）の起動番地を，拡張情報をパラメータとして呼び出す
+	ext_tskに分岐する ... (*c)
+}
+----------------------------------------
+
+(*c)でext_tskを呼ぶ代わりに，自タスクの起動番地を呼び出す時の返り番地を
+ext_tskの番地としておく方法がある．
+
+(*a)において，実行再開番地をスタックに保存／復帰する方法をとる場合には，
+この時点でスタックを使ってはならないため，この処理を例外扱いしなければ
+ならない．
+
+6.6 割込みハンドラ
+
+6.6.1 割込みハンドラの出入口処理
+
+カーネル管理の割込みの出入口処理の方法は，プロセッサによって大きく異な
+るが，おおよその処理内容は次の通り．
+
+----------------------------------------
+void
+<割込みの出入口処理>(void)
+{
+	割込み優先度マスクを，受け付けた割込み要求の割込優先度に設定する … (*i)
+	少なくともカーネル管理の割込みを禁止した状態にする … (*f)
+	スクラッチレジスタをスタックに保存する
+	if (タスクコンテキストで割込み発生) {
+#ifdef TOPPERS_SUPPORT_OVRHDR
+		ovrtimer_stop();				/* オーバランタイマの停止 */
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+		スタックを非タスクコンテキスト用のスタックに切り換え，
+								非タスクコンテキストに切り換える
+	}
+
+	この割込みよりも優先度の高い割込みのみを受け付けられるようにして，
+												CPUロック解除状態にする
+#ifdef LOG_INH_ENTER
+	log_inh_enter(割込みハンドラ番号);
+#endif /* LOG_INH_ENTER */
+	割込みハンドラを呼び出す
+#ifdef LOG_INH_LEAVE
+	log_inh_leave(割込みハンドラ番号);
+#endif /* LOG_INH_LEAVE */
+
+  ret_int:
+	if (タスクコンテキストで割込み発生) {
+		（少なくとも）カーネル管理の割込みを禁止した状態にする … (*d)
+		スタックをタスク用のスタックに戻し，タスクコンテキストに切り換える
+																… (*g)
+		if (reqflg) {
+			reqflg = false;
+			CPUロック状態にする … (*e)
+			割込み優先度マスクを，全解除状態（TIPM_ENAALL）に設定する … (*h)
+			if (dspflg && p_runtsk != p_schedtsk) {
+				スクラッチレジスタを除くすべてのレジスタをスタックに保存する
+				スタックポインタを自タスク（p_runtsk）のTCBに保存する
+				ret_int_rを，実行再開番地として自タスクのTCBに保存する … (*a)
+				dispatcherに分岐する
+
+			  ret_int_r:
+				スクラッチレジスタを除くすべてのレジスタをスタックから復帰する
+			}
+#ifdef TOPPERS_SUPPORT_OVRHDR
+			ovrtimer_start();			/* オーバランタイマの動作開始 */
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+			calltex(); … (*b)
+		}
+#ifdef TOPPERS_SUPPORT_OVRHDR
+		else {
+			ovrtimer_start();			/* オーバランタイマの動作開始 */
+		}
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+	}
+	割込み処理からのリターン後に，CPUロック解除状態に戻るように準備する
+	スクラッチレジスタをスタックから復帰する
+	割込み処理からのリターン
+}
+----------------------------------------
+
+(*i)の割込み優先度マスクを設定する処理は，プロセッサがハードウェアで実
+現している場合も多い．
+
+割込みの受付けにより，スタックポインタが切り換わらず，すべての割込みが
+禁止されないプロセッサでは，(*f)において，少なくともカーネル管理の割込
+みを禁止する．この理由は次の通りである．
+
+割込みの入口処理において，スタックを非タスクコンテキスト用のスタックに
+切り換える前に多重割込みが発生すると，タスクのスタック領域が使用される．
+上記のようなプロセッサでは，スタックの切換え前に，最大で割込み優先度の
+段数分の多重割込みが発生することを防ぐことはできず，各タスクのスタック
+領域を確保する際に，その分を見込んで確保しなければならない．各タスクの
+スタック領域をなるべく小さくするためには，スタックをなるべく使用しない
+内に，多重割込みを禁止するのが望ましい．そのため，スクラッチレジスタを
+スタックに保存する前に，割込みを禁止する．ただし，割込みの禁止処理に必
+要な最低限のレジスタについては，割込みの禁止に先立ってスタックに保存す
+る必要がある．
+
+同様のことは，カーネル管理外の割込みにも当てはまる．すなわち，カーネル
+管理外の割込みについても，スタックをなるべく使用しない内に禁止するのが
+望ましい．このことから，カーネル管理外の割込みを使用する場合には，(*f)
+において，すべての割込みを禁止した状態にするのが望ましいことになる．一
+方で，カーネル管理外の割込みの禁止時間が長くなると，カーネル管理外の割
+込みの応答性が低下するため，ユーザに注意を促す必要がある．また，カーネ
+ル管理外の割込み処理においても，非タスクコンテキスト用のスタック（また
+は，カーネル管理外の割込み処理用のスタック）に切り換えることが望ましい
+が，これはカーネルの管轄外である．
+
+(*d)においては，カーネル管理の割込みを禁止するだけで，CPUロック状態にす
+る必要はない．例えば，CPUロック状態であることを示す変数を用意している場
+合には，(*d)の時点ではその変数をCPUロック状態を示す値に変更する必要はな
+く，(*e)において変更すればよい．
+
+(*g)においてタスクコンテキストに切り換える処理は，割込み処理からのリター
+ンによりスタックとコンテキストが元に戻るプロセッサでは，reqflgがtrueの
+場合にのみ行えばよい．reqflgがfalseの時は，非タスクコンテキストのまま処
+理を続け，割込み処理からのリターンでタスクコンテキストに戻ることになる．
+
+(*e)においてCPUロック状態にするのは，dispatcherに分岐する際と，(*b)にお
+いてcalltex（または，それを展開した場合にはcall_texrtn）を呼び出す際に，
+CPUロック状態になっている必要があるためである．
+
+(*h)の処理が実行されるのは，割込み処理前に割込み優先度マスクが全解除状
+態（TIPM_ENAALL）であった場合に限られ，ここで割込み優先度マスクを全解除
+状態に設定するのは，割込み処理前の値に戻すのと等価である．ここでこの処
+理を行うのは，dispatcherに分岐する際と，(*b)においてcalltex（または，そ
+れを展開した場合にはcall_texrtn）を呼び出す際には，割込み優先度マスク全
+解除状態になっている必要があるためである．
+
+タスクの実行中に割込みが発生し，上の処理中でdispatcherに分岐した場合，
+そのタスクが次に実行される時には，実行再開番地として登録したret_int_rに
+戻ってくる．ret_int_rには，dispatcherのみから分岐し，その時の状態は，タ
+スクコンテキスト・CPUロック状態・割込み優先度マスク全解除状態・ディスパッ
+チ許可状態である．
+
+割込みの出入口処理をアセンブリ言語で記述する場合には，トレースログ取得
+処理は，「6.2 トレースログ機能への対応」の節で記述した方法でコーディン
+グすること．
+
+6.6.2 割込みハンドラ毎の出入口処理の生成
+
+割込みベクトルをハードウェアで実現している場合など，割込みハンドラ毎に
+出入口処理を用意した方が効率が良いターゲットのために，割込みハンドラ毎
+に出入口処理を生成する機構を用意している．
+
+以下のマクロは，標準の割込み管理機能の初期化処理を用いた場合のみ，ター
+ゲット非依存部で使われる．割込み管理機能の初期化処理をターゲット依存部
+で用意し，その中でこれらのマクロを使わない場合には，これらのマクロを用
+意する必要はない．
+
+(6-6-2-1) INT_ENTRY(inhno, inthdr)
+
+割込みハンドラ番号がinhno，割込みハンドラの関数名がinthdrである割込みハ
+ンドラの出入口処理のラベルを作るマクロ．INTHDR_ENTRYを用いて割込みハン
+ドラ毎に出入口処理を生成する場合には，次のように定義する．
+
+#define INT_ENTRY(inhno, inthdr)	_kernel_##inthdr##_##inhno
+
+割込みハンドラ毎に出入口処理を作る必要がない場合には，次のように定義し
+て，割込みハンドラの関数名をそのまま返す．
+
+#define INT_ENTRY(inhno, inthdr)	inthdr
+
+(6-6-2-2) INTHDR_ENTRY(inhno, inhno_num, inthdr)
+
+割込みハンドラ番号がinhno，割込みハンドラの関数名がinthdrである割込みハ
+ンドラの出入口処理を生成するマクロ．inhno_numには，アセンブリ言語記述用
+に，割込みハンドラ番号が数値で渡される．割込みハンドラ毎に出入口処理を
+作る必要がない場合には，空に定義する．
+
+6.6.3 割込みハンドラの設定
+
+(6-6-3-1) bool_t VALID_INHNO_DEFINH(INHNO inhno)（オプション）
+
+inhnoが，DEF_INHに対する割込みハンドラ番号として有効な値である場合に
+true，そうでない場合にfalseを返すマクロ．
+
+ASPカーネルのターゲット非依存部では，このマクロは使われていないため，ター
+ゲット依存部で使わないなら，用意する必要がない．
+
+(6-6-3-2) void x_define_inh(INHNO inhno, FP int_entry)
+
+inhnoで指定された割込みハンドラの出入口処理の番地をint_entryに設定する．
+
+この関数は，標準の割込み管理機能の初期化処理を用いた場合のみ，ターゲッ
+ト非依存部から呼び出される．割込み管理機能の初期化処理をターゲット依存
+部で用意し，その中でこの関数を呼び出さない場合には，この関数を用意する
+必要はない．
+
+この関数は，ターゲット非依存部のカーネル初期化処理から呼び出されるため，
+カーネルの初期化処理（NMIを除くすべての割込みがマスクされている）から呼
+び出せるように実装すればよい．
+
+指定された割込みハンドラ番号がDEF_INHに対するものとして有効な値でない場
+合の動作は保証する必要がない（assertでエラーとするのが望ましい）．これ
+は，コンフィギュレータが，パス2のテンプレートファイルのターゲット依存部
+で定義するINHNO_DEFINH_VALIDを用いてエラーを検出するためである．
+
+6.6.4 割込み要求ラインの属性の設定
+
+(6-6-4-1) bool_t VALID_INTNO_CFGINT(INTNO intno)（オプション）
+
+intnoが，割込み番号として有効な値である場合にtrue，そうでない場合に
+falseを返すマクロ．CFG_INTには，すべての割込み番号を指定することができ
+るため，このマクロは，intnoが有効な値の場合にはtrue，intnoが無効の値の
+場合にはfalseを返すようにする．
+
+ASPカーネルのターゲット非依存部では，このマクロは使われていないため，ター
+ゲット依存部で使わないなら，用意する必要がない．
+
+(6-6-4-2) void x_config_int(INTNO intno, ATR intatr, PRI intpri)
+
+intnoで指定された割込み要求ラインの割込み属性を，intatrで指定された通り
+に設定する．また，割込み優先度を，intpriで指定された値に設定する．
+
+この関数は，標準の割込み管理機能の初期化処理を用いた場合のみ，ターゲッ
+ト非依存部から呼び出される．割込み管理機能の初期化処理をターゲット依存
+部で用意し，その中でこの関数を呼び出さない場合には，この関数を用意する
+必要はない．
+
+この関数は，ターゲット非依存部のカーネル初期化処理から呼び出されるため，
+カーネルの初期化処理（NMIを除くすべての割込みがマスクされている）から呼
+び出せるように実装すればよい．
+
+intatrとして設定できる割込み属性は次の通り．
+
+	TA_ENAINT		0x01	割込み要求禁止フラグをクリア
+	TA_EDGE			0x02	エッジトリガ
+
+この他に，ターゲット定義で割込み属性を追加してもよい．ターゲット定義で
+追加するために，以下の属性名が予約されている．
+
+	TA_POSEDGE				ポジティブエッジトリガ
+	TA_NEGEDGE				ネガティブエッジトリガ
+	TA_BOTHEDGE				両エッジトリガ
+	TA_LOWLEVEL				ローレベルトリガ
+	TA_HIGHLEVEL			ハイレベルトリガ
+
+これらの属性名をターゲット定義で追加する場合には，その属性値を決定し，
+定義をtarget_kernel.h（または，そこからインクルードされるファイル）に含
+める．また，コンフィギュレータテンプレートファイルから参照できるように，
+target_def.csv（または，同等の役割を持つファイル）に含め，コンフィギュ
+レータテンプレートファイルのターゲット非依存部でエラーとならないように，
+target.tf（または，そこからインクルードされるファイル）でTARGET_INTATR
+に設定する．
+
+指定された割込み番号が有効な値でない場合や，その割込み要求ラインに対し
+て設定できない属性を指定した場合，設定できない割込み優先度を指定した場
+合の動作は保証する必要がない（assertでエラーとするのが望ましい）．この
+ようなケースは，コンフィギュレータでエラーを検出すべきである．コンフィ
+ギュレータテンプレートファイルのターゲット非依存部は，パス2のテンプレー
+トファイルのターゲット依存部で定義するINTNO_CFGINT_VALID，
+TARGET_INTATR，INTPRI_CFGINT_VALIDを用いてエラーを検出するが，標準の割
+込み属性（TA_ENAINT，TA_EDGE）が設定できない場合や，設定できない属性や
+割込み優先度が割込み要求ラインによって異なる場合には，コンフィギュレー
+タテンプレートファイルのターゲット依存部で検出しなければならない．
+
+6.6.5 割込み管理機能の初期化処理の変更
+
+(6-6-5-1) OMIT_INITIALIZE_INTERRUPT（オプション）
+
+割込み管理機能の初期化処理をターゲット依存部で用意し，ターゲット非依存
+部に含まれる標準の割込み管理機能の初期化処理を用いない場合には，このシ
+ンボルをマクロ定義する．
+
+このシンボルをマクロ定義すると，INHINIB，INTINIB，initialize_interrupt
+の定義が，カーネルのターゲット非依存部から取り除かれる．また，
+TNUM_INHNO，tnum_inhno，inhinib_table，TNUM_INTNO，tnum_intno，
+intinib_tableの定義と，割込みハンドラ毎の出入口処理を生成するための記述
+（INTHDR_ENTRYマクロのリスト）が，コンフィギュレータのパス2のテンプレー
+トファイルのターゲット非依存部によってkernel_cfg.cに生成されなくなる．
+ただし，コンフィギュレータのパス2のテンプレートファイルのターゲット依存
+部で，USE_INHINIB_TABLEとUSE_INTINIB_TABLEを設定することで，その一部
+分をkernel_cfg.cに生成することが可能である．
+
+(6-6-5-2) void initialize_interrupt(void)（オプション）
+
+OMIT_INITIALIZE_INTERRUPTをマクロ定義した場合には，この関数をターゲット
+依存部で用意する．OMIT_INITIALIZE_INTERRUPTをマクロ定義することにより取
+り除かれるその他のデータ型，変数，マクロは，この関数で使用する場合にの
+み用意すればよい．
+
+6.6.6 デフォルトの割込みハンドラ
+
+(6-6-6-1) default_int_handler(void)（オプション）
+
+コンフィギュレータにより割込みハンドラのテーブルを生成する場合などには，
+割込みハンドラを登録しなかった割込みハンドラ番号に対して，デフォルトの
+割込みハンドラとして，default_int_handlerを登録する．
+
+default_int_handlerは，標準のものをターゲット依存部で用意するが，ユーザ
+が用意したもので置き換えられるように，OMIT_DEFAULT_INT_HANDLERをマクロ
+定義した場合には，ターゲット依存部で定義しないようにする．なお，ユーザ
+が用意する場合の名称は，_kernel_default_int_handlerとなる．
+
+6.6.7 カーネル管理外の割込み
+
+カーネル管理外の割込みハンドラは，カーネル内の割込み出入口処理を経由せ
+ずに実行するのが基本である．
+
+ただし，すべての割込みで同じアドレスに分岐するプロセッサでは，カーネル
+内の割込み出入口処理を全く経由せずにカーネル管理外の割込みハンドラを実
+行することができないため，割込み出入口処理のなるべく早いタイミングで，
+カーネル管理外の割込みであるかを判別し，処理内容を分ける必要がある．具
+体的には，カーネル管理外の割込みの出入口処理では，オーバランハンドラの
+停止と動作開始を行ってはならない．また，reqflgをチェックし，タスク切換
+えやタスク例外処理ルーチンの呼出しを行う必要がない．さらに，NMIの出入口
+処理では，トレースログ取得処理（log_inh_enterおよびlog_inh_leave）を呼
+び出してはならない．
+
+カーネル管理外の割込みハンドラを実行する際に，カーネル内の割込み出入口
+処理の一部分を経由する場合には，CPU例外が起こる可能性を極力減らすととも
+に，CPU例外を起こす可能性がある場合には，その可能性をターゲット依存部の
+ユーザーズマニュアルに記載しなければならない．
+
+次に，カーネル管理外の割込みの設定方法に関して，「TOPPERS新世代カーネル
+統合仕様書」の「2.7.8 カーネル管理外の割込みの設定方法」の節の3つの方法
+のいずれを採用するかを決定する．
+
+(a-1)または(a-2)を採用し，カーネル管理外とした割込みに対して，カーネル
+のAPIによる割込みハンドラの登録と割込み要求ラインの属性の設定をサポート
+しない場合には，それに代わる方法をターゲット依存部のユーザーズマニュア
+ルに記述する．
+
+(a-1)または(a-2)を採用してカーネルのAPIによる割込みハンドラの登録や割込
+み要求ラインの属性の設定をサポートする場合や，(b)を採用した場合には，ター
+ゲット依存部においてそれを実現する必要がある．
+
+カーネル管理外の割込みに対して，DEF_INHによる割込みハンドラの登録をサポー
+トするには，次の設定が必要になる．
+
+・TARGET_INHATRに，TA_NONKERNELを設定する．
+
+・(a-1)または(a-2)を採用した場合には，INHNO_DEFINH_VALIDに，カーネル管
+　理外とした割込みに対応する割込みハンドラ番号を含める．また，
+　VALID_INHNO_DEFINHを，カーネル管理外とした割込みハンドラ番号を有効な
+　値と判定するようにする．
+
+・(a-1)または(a-2)を採用した場合には，INHNO_FIX_KERNELにカーネル管理と
+　した割込みハンドラ番号のリストを，INHNO_FIX_NONKERNELにカーネル管理外
+　とした割込みハンドラ番号のリスト設定する．
+
+・DEF_INHがカーネル管理外の割込みに対応できるようにする．標準の割込み管
+　理機能の初期化処理を用いる場合には，x_define_inhをカーネル管理外の割
+　込みに対応させる．
+
+・必要な場合には，TA_NONKERNEL属性が設定された割込みハンドラをカーネル
+　管理外と扱うように，カーネル内の割込み出入口処理を修正する．標準の割
+　込み管理機能の初期化処理を用いる場合，カーネル管理外の割込みに対して
+　は，カーネル内の割込み出入口処理を生成せず，アプリケーションが登録し
+　た割込みハンドラを直接呼び出すように，ターゲット非依存部により設定さ
+　れるため，ターゲット依存部では対応する必要がない．
+
+カーネル管理外の割込みに対して，CFG_INTによる割込み要求ラインの属性の設
+定をサポートするには，次の設定が必要になる．
+
+・(a-1)または(a-2)を採用した場合には，INTNO_CFGINT_VALIDに，カーネル管
+　理外とした割込みに対応する割込み番号を含める．また，VALID_INTNO_CFGINT
+　を，カーネル管理外とした割込み番号を有効な値と判定するようにする．
+
+・(a-1)または(a-2)を採用した場合には，INTNO_FIX_KERNELにカーネル管理と
+　した割込み番号のリストを，INTNO_FIX_NONKERNELにカーネル管理外とした割
+　込み番号のリスト設定する．
+
+・INTPRI_CFGINT_VALIDに，カーネル管理外の割込みとなる優先度を含める．
+
+・CFG_INTがカーネル管理外の割込みに対応できるようにする．標準の割込み管
+　理機能の初期化処理を用いる場合には，x_config_intをカーネル管理外の割
+　込みに対応させる．
+
+chg_ipmにより，（NMI以外の）カーネル管理外の割込みをマスクできるように
+する場合には，次の設定が必要になる．
+
+・VALID_INTPRI_CHGIPMを，カーネル管理外の割込みとなる優先度を有効な値と
+　判定するようにする．
+
+・t_set_ipmを，カーネル管理外の割込みとなる優先度を扱えるようにする．
+
+6.6.8 割込みサービスルーチンの生成
+
+(6-6-8-1) bool_t VALID_INTNO_CREINT(INTNO intno)
+
+intnoが，acre_isrに対する割込み番号として有効な値である場合にtrue，そう
+でない場合にfalseを返すマクロ．動的生成機能拡張パッケージを使用しない場
+合には，定義する必要がない．
+
+6.7 CPU例外ハンドラとCPU例外発生時のシステム状態の参照
+
+6.7.1 CPU例外ハンドラの出入口処理
+
+CPU例外の出入口処理の方法はプロセッサによって大きく異なるが，おおよその
+処理内容は次の通り．
+
+----------------------------------------
+void
+<CPU例外の出入口処理>(void)
+{
+	スクラッチレジスタをスタックに保存する
+	if (カーネル管理外のCPU例外) {
+		if (タスクコンテキストでCPU例外発生) {
+			スタックを非タスクコンテキスト用のスタックに切り換え，
+									非タスクコンテキストに切り換える
+		}
+		システム状態（コンテキストは除く）を，CPU例外発生時の状態にする
+		CPU例外ハンドラを，CPU例外の情報を記憶している領域の先頭番地を
+									パラメータ（p_excinf）として呼び出す
+		if (タスクコンテキストでCPU例外発生) {
+			スタックをタスク用のスタックに戻し，タスクコンテキストに切り換える
+		}
+		CPU例外処理からのリターン後に，CPU例外発生時のシステム状態に
+													戻るように準備する
+	}
+	else {
+		if (タスクコンテキストでCPU例外発生) {
+#ifdef TOPPERS_SUPPORT_OVRHDR
+			（少なくとも）カーネル管理の割込みを禁止した状態にする
+			ovrtimer_stop();			/* オーバランタイマの停止 */
+			（必要なら）元の状態に戻す
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+			スタックを非タスクコンテキスト用のスタックに切り換え，
+									非タスクコンテキストに切り換える
+		}
+		システム状態（コンテキストは除く）を，CPU例外発生時の状態にする
+			　（CPU例外発生時の割込み優先度マスクよりも優先度の高い割込み
+				のみを受け付けられるようにして，CPUロック解除状態にする）
+
+#ifdef LOG_EXC_ENTER
+		log_exc_enter(CPU例外ハンドラ番号);
+#endif /* LOG_EXC_ENTER */
+		CPU例外ハンドラを，CPU例外の情報を記憶している領域の先頭番地を
+									パラメータ（p_excinf）として呼び出す
+#ifdef LOG_EXC_LEAVE
+		log_exc_leave(CPU例外ハンドラ番号);
+#endif /* LOG_EXC_LEAVE */
+
+	  ret_exc:
+		if (タスクコンテキストでCPU例外発生) {
+			（少なくとも）カーネル管理の割込みを禁止した状態にする … (*d)
+			スタックをタスク用のスタックに戻し，タスクコンテキストに切り換える
+																	… (*g)
+			if (reqflg) {
+				reqflg = false;
+				CPUロック状態にする … (*e)
+				if (dspflg && p_runtsk != p_schedtsk) {
+					スクラッチレジスタを除くすべてのレジスタをスタックに保存する
+					スタックポインタを自タスク（p_runtsk）のTCBに保存する
+					ret_exc_rを，実行再開番地として自タスクのTCBに保存する
+																	… (*a)
+					dispatcherに分岐する
+
+				  ret_exc_r:
+					スクラッチレジスタを除くすべてのレジスタを
+												スタックから復帰する
+				}
+#ifdef TOPPERS_SUPPORT_OVRHDR
+				ovrtimer_start();		/* オーバランタイマの動作開始 */
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+				calltex(); … (*b)
+			}
+#ifdef TOPPERS_SUPPORT_OVRHDR
+			else {
+				ovrtimer_start();		/* オーバランタイマの動作開始 */
+			}
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+		}
+		CPU例外処理からのリターン後に，CPUロック解除状態に戻るように準備する
+	}
+	スクラッチレジスタをスタックから復帰する
+	CPU例外処理からのリターン
+}
+----------------------------------------
+
+CPU例外ハンドラは，非コンテキストに切り換えることを除いては，CPU例外発
+生時と同じシステム状態で呼び出さなければならない．例えば，CPU例外がCPU
+ロック状態で発生した場合にはCPUロック状態，CPUロック解除状態で発生した
+場合にはCPUロック解除状態で，CPU例外ハンドラを呼び出さなければならない．
+CPUロック状態で発生したCPU例外は，カーネル管理外のCPU例外となるため，カー
+ネル管理のCPU例外ハンドラについては，CPUロック解除状態で呼び出すことに
+なる．
+
+ターゲットによっては，カーネル管理外のCPU例外を正確に判定するのが難しい
+場合がある．このような場合には，割込み優先度マスクが全解除でない状態で
+発生したCPU例外を，カーネル管理外のCPU例外と扱っても支障がない．これは，
+割込み優先度マスクが全解除でない場合には，xsns_dpn，xsns_xpnともtrueを
+返すため，アプリケーションからはカーネル管理外のCPU例外と区別できないた
+めである．
+
+具体的には，全割込みロック（またはCPUロック）を小さいオーバヘッドで実現
+しようとすると，CPU例外ハンドラの中で，全割込みロック状態（またはCPUロッ
+ク状態）と割込み優先度マスクを高いレベルに設定した状態を区別できない場
+合がある．また，カーネル管理外の割込み処理中やカーネル実行中であること
+を正確に判断することも難しい場合がある．
+
+上のコードでは，カーネル管理外のCPU例外に対して，トレースログ取得処理
+（log_exc_enterおよびlog_exc_leave）を呼び出していないが，全割込みロッ
+ク状態かNMIの処理中にCPU例外が発生した場合を除外すれば，呼び出してもか
+まわない．全割込みロック状態かNMIの処理中に発生したCPU例外の場合には，
+トレースログ取得処理を呼び出してはならない．
+
+CPU例外ハンドラを実行する際に経由する部分では，CPU例外が起こる可能性を
+極力減らすとともに，CPU例外を起こす可能性がある場合（例えば，スクラッチ
+レジスタをスタックに保存する時に，バスエラーなどのCPU例外が発生する可能
+性が考えられる）には，その可能性をターゲット依存部のユーザーズマニュア
+ルに記載しなければならない．
+
+ret_exc以降の処理は，割込みの出入口処理のret_int以降の処理とほぼ同じで
+あるため，ターゲットによっては，共通のルーチンを用いることができる可能
+性がある．
+
+CPU例外の出入口処理をアセンブリ言語で記述する場合には，トレースログ取得
+処理は，「6.2 トレースログ機能への対応」の節で記述した方法でコーディン
+グすること．
+
+6.7.2 CPU例外ハンドラの出入口処理の生成
+
+CPU例外ベクトルをハードウェアで実現している場合など，CPU例外ハンドラ毎
+に出入口処理を用意した方が効率が良いターゲットのために，CPU例外ハンドラ
+毎に出入口処理を生成する機構を用意している．
+
+以下のマクロは，標準のCPU例外管理機能の初期化処理を用いた場合のみ，ター
+ゲット非依存部で使われる．CPU例外管理機能の初期化処理をターゲット依存部
+で用意し，その中でこれらのマクロを使わない場合には，これらのマクロを用
+意する必要はない．
+
+(6-7-2-1) EXC_ENTRY(excno, exchdr)
+
+CPU例外ハンドラ番号がexcno，CPU例外ハンドラの関数名がexchdrであるCPU例
+外ハンドラの出入口処理のラベルを作るマクロ．EXCHDR_ENTRYを用いてCPU例外
+ハンドラ毎に出入口処理を生成する場合には，次のように定義する．
+
+#define EXC_ENTRY(excno, exchdr)	_kernel_##exchdr##_##excno
+
+CPU例外ハンドラ毎に出入口処理を作る必要がない場合には，次のように定義し
+て，CPU例外ハンドラの関数名をそのまま返す．
+
+#define EXC_ENTRY(excno, exchdr)	exchdr
+
+(6-7-2-2) EXCHDR_ENTRY(excno, excno_num, exchdr)
+
+CPU例外ハンドラ番号がexcno，CPU例外ハンドラの関数名がexchdrであるCPU例
+外ハンドラの出入口処理を生成するマクロ．excno_numには，アセンブリ言語記
+述用に，CPU例外ハンドラ番号が数値で渡される．CPU例外ハンドラ毎に出入口
+処理を作る必要がない場合には，空に定義する．
+
+6.7.3 CPU例外ハンドラの設定
+
+(6-7-3-1) bool_t VALID_EXCNO_DEFEXC(EXCNO excno)（オプション）
+
+excnoが，DEF_EXCに対するCPU例外ハンドラ番号として有効な値である場合に
+true，そうでない場合にfalseを返すマクロ．
+
+ASPカーネルのターゲット非依存部では，このマクロは使われていないため，ター
+ゲット依存部で使わないなら，用意する必要がない．
+
+(6-7-3-2) void x_define_exc(EXCNO excno, FP exc_entry)
+
+excnoで指定されたCPU例外ハンドラの出入口処理の番地をexc_entryに設定する．
+
+この関数は，標準のCPU例外管理機能の初期化処理を用いた場合のみ，ターゲッ
+ト非依存部から呼び出される．CPU例外管理機能の初期化処理をターゲット依存
+部で用意し，その中でこの関数を呼び出さない場合には，この関数を用意する
+必要はない．
+
+この関数は，ターゲット非依存部のカーネル初期化処理から呼び出されるため，
+カーネルの初期化処理（NMIを除くすべての割込みがマスクされている）から呼
+び出せるように実装すればよい．
+
+指定されたCPU例外ハンドラ番号がDEF_EXCに対するものとして有効な値でない
+場合の動作は保証する必要がない（assertでエラーとするのが望ましい）．こ
+れは，コンフィギュレータが，パス2のテンプレートファイルのターゲット依存
+部で定義するEXCNO_DEFEXC_VALIDを用いてエラーを検出するためである．
+
+6.7.4 CPU例外管理機能の初期化処理の変更
+
+(6-7-4-1) OMIT_INITIALIZE_EXCEPTION（オプション）
+
+CPU例外管理機能の初期化処理をターゲット依存部で用意し，ターゲット非依存
+部に含まれる標準の割込み管理機能の初期化処理を用いない場合には，このシ
+ンボルをマクロ定義する．
+
+このシンボルをマクロ定義すると，EXCINIBとinitialize_exceptionの定義が，
+カーネルのターゲット非依存部から取り除かれる．また，TNUM_EXCNO，
+tnum_excno，excinib_tableの定義と，CPU例外ハンドラ毎の出入口処理を生成
+するための記述（EXCHDR_ENTRYマクロのリスト）を，コンフィギュレータのパ
+ス2のテンプレートファイルのターゲット非依存部によってkernel_cfg.cに生成
+されなくなる．
+
+(6-7-4-2) void initialize_exception(void)（オプション）
+
+OMIT_INITIALIZE_EXCEPTIONをマクロ定義した場合には，この関数をターゲット
+依存部で用意する．OMIT_INITIALIZE_EXCEPTIONをマクロ定義することにより取
+り除かれるその他のデータ型，変数，マクロは，この関数で使用する場合にの
+み用意すればよい．
+
+6.7.5 デフォルトのCPU例外ハンドラ
+
+(6-7-5-1) default_exc_handler(void)（オプション）
+
+コンフィギュレータによりCPU例外ハンドラのテーブルを生成する場合などには，
+CPU例外ハンドラを登録しなかったCPU例外ハンドラ番号に対して，デフォルト
+のCPU例外ハンドラとして，default_exc_handlerを登録する．
+
+default_exc_handlerは，標準のものをターゲット依存部で用意するが，ユーザ
+が用意したもので置き換えられるように，OMIT_DEFAULT_EXC_HANDLERをマクロ
+定義した場合には，ターゲット依存部で定義しないようにする．なお，ユーザ
+が用意する場合の名称は，_kernel_default_exc_handlerとなる．
+
+6.7.6 CPU例外発生時のシステム状態の参照
+
+(6-7-6-1) bool_t exc_sense_intmask(void *p_excinf)
+
+CPU例外の発生した時のシステム状態が，カーネル実行中でなく，タスクコンテ
+キストであり，全割込みロック状態でなく，CPUロック状態でなく，割込み優先
+度マスク全解除状態である時にtrue，そうでない時にfalseを返す関数．
+
+p_excinfには，CPU例外の情報を記憶している領域の先頭番地が渡される．
+
+CPU例外がカーネル管理外の割込み処理中で発生した場合にもfalseを返さなけ
+ればならないことに注意すること．
+
+6.8 カーネルの起動・終了とスタック領域など
+
+(6-8-1) スタートアップモジュール
+
+カーネルのスタートアップモジュールは，システムのリセット後に最初に実行
+されるプログラムである．スタートアップモジュールは，標準的には，プロセッ
+サ依存部またはチップ依存部で用意し以下の処理を行うが，それにこだわる必
+要はない．具体的には，開発環境に用意されているスタートアップモジュール
+を用いる方法（この場合，ターゲット依存部でmain関数を用意する必要がある）
+や，アプリケーションで用意する場合が考えられる．
+
+(a) プロセッサ状態の初期化
+
+プロセッサモード，スタックポインタ，フレームポインタ等，プロセッサの状
+態を初期化する．また，NMIを除くすべての割込みをマスクした状態（全割込み
+ロック状態と同等の状態）とする．DRAMコントローラの初期化など，メモリを
+アクセスするために必要な初期化処理をここで行ってもよい（次の
+hardware_init_hookで行ってもよい）．
+
+(b) hardware_init_hookを呼び出す
+
+システムのリセット後すぐに行う必要のあるターゲットシステム依存の初期化
+処理を行うために，hardware_init_hookを呼び出す．hardware_init_hookが用
+意されていない場合は，何もしない．GNU開発環境では，リンカスクリプト中の
+weak definitionにより，hardware_init_hookが用意されていない場合の値を0
+とすることで，これを実現できる．weak definitionの機能を持たない開発環境
+では，hardware_init_hookを必ず呼び出すことにする．
+
+hardware_init_hookは，ターゲット依存部で用意するのが標準であるが，シス
+テムのリセット後すぐに行う必要のある初期化処理を追加するために，アプリ
+ケーションで用意したものを用いる場合もある．
+
+メモリアクセスに必要な初期化処理をhardware_init_hookで行う場合には，こ
+れを呼び出す時点でメモリにアクセスすることができないため，関数（サブルー
+チン）を呼び出すためにスタックを使用するプロセッサでは，戻り番地を汎用
+レジスタに入れて呼び出すといった工夫が必要である．この場合，
+hardware_init_hookをC言語で記述することはできなくなるが，やむをえない．
+
+(c) bssセクションとdataセクションの初期化
+
+bssセクションをクリアし，dataセクションに初期値を設定する．
+
+ただし，カーネル本体は，kerflgがfalse（＝0）に初期化されること以外に，
+これらのセクションが初期化されることに依存していないため，スタートアッ
+プモジュールをアプリケーションで用意する場合で，システムサービスやアプ
+リケーションがこれらのセクションが初期化されることに依存していない場合
+には，システムの起動時間を短縮するために，kerflgをfalseに初期化するだけ
+で十分である．
+
+(d) software_init_hookを呼び出す
+
+開発環境（特にライブラリ）に依存して必要な初期化処理を行うために，
+software_init_hookを呼び出す．software_init_hookが用意されていない場合
+は，何もしない．GNU開発環境では，リンカスクリプト中のweak definitionに
+より，software_init_hookが用意されていない場合の値を0とすることで，これ
+を実現できる．weak definitionの機能を持たない開発環境では，
+software_init_hookを必ず呼び出すことにする．
+
+software_init_hookは，ターゲット依存部で用意するのが標準である．
+
+(e) sta_kerへ分岐
+
+sta_kerを呼び出す．sta_kerは，NMIを除くすべての割込みをマスクした状態
+（全割込みロック状態と同等の状態）で呼び出さなければならない．sta_kerか
+らはリターンすることがないため，スタートアップモジュールに戻ってくるこ
+とは考える必要がない．
+
+(6-8-2) void target_initialize(void)
+
+ターゲット依存部の初期化を行う関数．sta_kerの最初で呼び出される．プロセッ
+サ・チップ・開発環境依存の初期化処理を，それらの依存部に切り分けること
+も可能である．
+
+この関数は，あくまでもカーネルのターゲット依存部の初期化処理を行うため
+のものである．アプリケーションに必要な初期化処理は，初期化ルーチンで行
+うのが基本であるが，システムのリセット後すぐに行う必要がある場合には，
+hardware_init_hookを用いる．
+
+(6-8-3) void call_exit_kernel(void)
+
+非タスクコンテキストに切り換えて，exit_kernelへ分岐する関数．ext_kerか
+ら呼び出される．exit_kernelからはリターンすることがないため，この関数に
+戻ってくることは考える必要がない．
+
+非タスクコンテキストに切り換えるのは，終了処理ルーチンを，非タスクコン
+テキスト用のスタックで実行するためである．終了処理ルーチンをタスク用の
+スタックで実行すると，各タスクのスタック領域のサイズを決定する際に，終
+了処理ルーチンが使用するスタック領域を考慮しなければならない．これには，
+終了処理ルーチンが使用するスタック領域が大きい場合に各タスクのスタック
+領域を無駄に大きくしなければならないことに加えて，意図しないスタックオー
+バーフローが発生する可能性を高めるという問題がある．
+
+この関数は，全割込みロック状態で呼ばれるため，全割込みロック状態から呼
+び出すことができない関数を呼ばないように実装しなければならない．
+
+(6-8-4) void target_exit(void)
+
+ターゲット依存部の終了処理を行う関数．この関数は，カーネル終了処理の最
+後に呼び出され，リターンしてはならない．プロセッサ・チップ・開発環境依
+存の終了処理を，それらの依存部に切り分けることも可能である．
+
+この関数では，最初に，atexitによって登録された関数とデストラクタを呼び
+出すことを意図しており，標準的には，software_term_hookを呼び出す．
+software_term_hookが用意されていない場合は，何もしない．GNU開発環境では，
+リンカスクリプト中のweak definitionにより，software_term_hookが用意され
+ていない場合の値を0とすることで，これを実現できる．weak definitionの機
+能を持たない開発環境では，software_term_hookを必ず呼び出すことにする．
+
+この関数は，全割込みロック状態で呼ばれるため，全割込みロック状態から呼
+び出すことができない関数を呼ばないように実装しなければならない．
+
+6.9 カーネル内部のチューニング
+
+6.9.1 ビットマップサーチ
+
+(6-9-1-1) OMIT_BITMAP_SEARCH（オプション）
+(6-9-1-2) uint_t bitmap_search(uint16_t bitmap)（オプション）
+
+ターゲット非依存部で，uint16_t型の整数値（bitmap）中の1のビットの内，最
+も下位（右）のものをサーチし，そのビット番号を返す関数bitmap_searchを用
+意している．ここで，ビット番号は最下位ビットを0とし，bitmapに0を指定し
+てはならないものとしている．
+
+ビットサーチ命令を持つプロセッサでは，bitmap_searchを，ビットサーチ命令
+を使うように書き直した方が効率が良い場合がある．このような場合には，ター
+ゲット依存部でビットサーチ命令を使ったbitmap_searchを定義し，
+OMIT_BITMAP_SEARCHをマクロ定義する．
+
+標準ライブラリにビットサーチ命令を用いたffsがある場合，bitmap_searchを
+(ffs(bitmap) - 1)に定義するとよい．
+
+(6-9-1-3) uint16_t PRIMAP_BIT(PRI pri)（オプション）
+
+ビットサーチ命令のサーチ方向が逆などの理由で，優先度とビットとの対応を
+変更したい場合には，PRIMAP_BITをマクロ定義する．
+
+6.9.2 ビットフィールド
+
+(6-9-2-1) BIT_FIELD_UINT（オプション）
+
+8ビット以下の幅のビットフィールドで，符号無し整数値を保持したい場合に用
+いるべきデータ型．デフォルトの定義はunsigned intとなっているが，ターゲッ
+トやツール依存で，unsigned charまたはunsigned shortに定義した方が効率が
+良い場合がある．
+
+(6-9-2-2) BIT_FIELD_BOOL（オプション）
+
+1ビット幅のビットフィールドで，ブール値を保持したい場合に用いるべきデー
+タ型．デフォルトではBIT_FIELD_UINTと同一に定義しているが，ブール値を保
+持することを明示するために別の名前としている．
+
+(6-9-2-3) TBIT_TCB_PRIORITY（オプション）
+
+現在優先度（および，ミューテックス拡張におけるベース優先度）を保持する
+ためのTCB中のフィールドのビット数．デフォルトでは8ビットに定義している
+が，それ以外に定義したい場合に，ビット数をこの名前にマクロ定義する．
+
+6.10 カーネル実装に関するその他の定義
+
+6.10.1 ターゲット依存のオブジェクト属性
+
+(6-10-1) TARGET_TSKATR（オプション）	ターゲット定義のタスク属性
+(6-10-2) TARGET_ISRATR（オプション）	ターゲット定義のISR属性
+(6-10-3) TARGET_INHATR（オプション）	ターゲット定義の割込みハンドラ属性
+(6-10-4) TARGET_INTATR（オプション）	ターゲット定義の割込み属性
+(6-10-5) TARGET_EXCATR（オプション）	ターゲット定義のCPU例外ハンドラ属性
+
+各オブジェクトの属性を，ターゲット定義に拡張する場合に，該当するオブジェ
+クト属性を示す変数に，拡張に使用するビットの論理和を定義する．これによ
+り，拡張に使用するビットが設定されている場合に，エラーになるのを防ぐ．
+
+なお，TOPPERS新世代カーネル統合仕様書では，割込みサービスルーチン（ISR）
+属性をターゲット定義で拡張できる仕様とはなっていない．
+
+6.10.2 エラーチェック方法の指定
+
+(6-10-1) TARGET_MIN_STKSZ（オプション）
+
+ターゲット定義で，タスクのスタックサイズの最小値を設定する場合には，こ
+の変数をスタックサイズの最小値に定義する．
+
+(6-10-2) CHECK_STKSZ_ALIGN（オプション）
+
+スタック領域のサイズがある値（アライン単位）の倍数でなければならない場
+合に，この変数をアライン単位に定義する．この変数を定義することで，
+kernel.tfおよびacre_tsk（動的生成機能拡張パッケージのみ）において，スタッ
+ク領域のサイズが正しくない（この変数に定義した値の倍数でない）場合のエ
+ラーをチェックするようになる．チェックが必要ない場合には，この変数を定
+義しない．
+
+(6-10-3) CHECK_FUNC_ALIGN（オプション）	処理単位のアライン単位
+(6-10-4) CHECK_FUNC_NONNULL（オプション）処理単位の非NULLチェック
+(6-10-5) CHECK_STACK_ALIGN（オプション）スタック領域のアライン単位
+(6-10-6) CHECK_STACK_NONNULL（オプション）スタック領域の非NULLチェック
+(6-10-7) CHECK_MPF_ALIGN（オプション）	固定長メモリプール領域のアライン単位
+(6-10-8) CHECK_MPF_NONNULL（オプション）固定長メモリプール領域の非NULLチェック
+
+処理単位／スタック領域／固定長メモリプール領域の先頭番地がある値（アラ
+イン単位）の倍数でなければならない場合に，それぞれ，CHECK_FUNC_ALIGN／
+CHECK_STACK_ALIGN／CHECK_MPF_ALIGNをアライン単位に定義する．処理単位／
+スタック領域／固定長メモリプール領域の先頭番地がNULLでないかのチェック
+を行う場合には，それぞれCHECK_FUNC_NONNULL／CHECK_STACK_NONNULL／
+CHECK_MPF_NONNULLを定義する．
+
+(6-10-9) CHECK_MB_ALIGN（オプション）	管理領域のアライン単位
+
+カーネル内の管理領域（具体的には，データキュー管理領域，優先度データ
+キュー管理領域，固定長メモリプール管理領域）の先頭番地がある値（アライ
+ン単位）の倍数でなければならない場合に，この変数をアライン単位に定義す
+る．動的生成機能拡張パッケージを使用しない場合には，定義する必要がない．
+
+6.10.3 非タスクコンテキスト用のスタック領域
+
+(6-10-3-1) DEFAULT_ISTKSZ
+
+DEF_ICSにより非タスクコンテキスト用のスタック領域が指定されない場合の，
+デフォルトのスタック領域のサイズ．
+
+(6-10-3-2) DEFAULT_ISTK（オプション）
+
+DEF_ICSにより非タスクコンテキスト用のスタック領域が指定されない場合の，
+デフォルトのスタック領域の先頭番地．このマクロが定義されない場合には，
+サイズがDEFAULT_ISTKSZのスタック領域が，配列により確保される．
+
+(6-10-3-3) STK_T *TOPPERS_ISTKPT(STK_T *istk, SIZE istksz)（オプション）
+
+非タスクコンテキスト用のスタックポインタの初期値を保持する変数（istkpt）
+を用いる場合に，このシンボルに，スタック領域の先頭番地（istk）とスタッ
+ク領域のサイズ（istksz）から，スタックポインタの初期値を求めるマクロを
+定義する．
+
+6.10.4 空ラベルの定義
+
+(6-10-4-1) TOPPERS_EMPTY_LABEL(type, symbol)（オプション）
+
+リンクエラーを防ぐために，データ型typeの配列である変数symbolに定義を与
+えるためのマクロ．与えた定義が参照されることはないため，どのような定義
+を与えてもよい．
+
+デフォルトでは，symbolを，要素型がtypeでサイズが0の配列に定義している．
+サイズが0の配列がエラーとならないコンパイラ（GCCはこれに該当）を用いる
+場合には，ターゲット依存部で定義する必要はない．
+
+6.11 トレースログ機能に関する設定
+
+ASPカーネルのソースコードには，カーネルの実行トレースログを取得するため
+のマクロ等が埋め込んである．デフォルトでは，これらのマクロは空に定義さ
+れてトレースログの取得は行わないが，これらのマクロを適切に定義すること
+でトレースログの取得を行うことができる．
+
+6.11.1 取得できるトレースログの種類とマクロ
+
+取得できるトレースログの種類と，それを取得するために定義するマクロは次
+の通りである．
+
+(a) カーネルの動作開始と終了
+
+次のマクロを定義することで，カーネルの動作開始時と終了時のトレースログ
+を取得することができる．
+
+	LOG_KER_ENTER		カーネルが動作を開始する直前（初期化の完了後）
+	LOG_KER_LEAVE		カーネルの終了（ext_ker）が呼ばれた直後（終了処
+						理の実行前）
+
+(b) 処理単位の実行開始と終了
+
+次のマクロを定義することで，割込みハンドラ（INH），割込みサービスルーチ
+ン（ISR），周期ハンドラ（CYC），アラームハンドラ（ALM），CPU例外ハンド
+ラ（EXC），タスク例外処理ルーチン（TEX）の実行開始前と終了後のトレース
+ログを取得することができる．
+
+	LOG_<処理単位略号>_ENTER	処理単位の実行開始直前
+	LOG_<処理単位略号>_LEAVE	処理単位の終了直後
+
+割込みハンドラは，アプリケーションが登録したもののみを対象とし，割込み
+サービスルーチンを呼び出すためにカーネル内に生成されるものは対象としな
+い．タスクの実行開始と終了は，他の方法で取得できるため，この方法は用意
+していない．
+
+なお，割込みハンドラとCPU例外ハンドラの実行開始と終了のトレースログ取得
+は，ターゲット依存部で実装する必要がある．詳しくは，「6.2 トレースログ
+機能への対応」「6.6.1 割込みハンドラの出入口処理」「6.7.1 CPU例外ハンド
+ラの出入口処理」の節を参照すること．
+
+(c) タスク状態の変化
+
+次のマクロを定義することで，タスク状態が変化した時のトレースログを取得
+することができる．ただし，実行状態と実行可能状態の間の遷移は，他の方法
+で取得できるため，このマクロでは取得できない．
+
+	LOG_TSKSTAT		タスク状態の変化
+
+(d) ディスパッチャの実行開始と終了
+
+次のマクロを定義することで，ディスパッチャが実行開始する時と，終了する
+時のトレースログを取得することができる．
+
+	LOG_DSP_ENTER	ディスパッチャの実行開始
+	LOG_DSP_LEAVE	ディスパッチャの終了
+
+ディスパッチャの実行開始は，タスクが実行状態から実行可能状態に遷移する
+タイミングであるため，実行可能状態へ遷移するタスクのTCBへのポインタをパ
+ラメータとする．逆に，ディスパッチャの終了は，タスクが実行可能状態から
+実行状態に遷移するタイミングであるため，実行状態へ遷移するタスクのTCBへ
+のポインタをパラメータとする．
+
+ASPカーネルでは，実行できるタスクがなく，カーネルがアイドル状態になる場
+合には，ディスパッチャの中に留まる．そのため，アイドル状態への遷移とア
+イドル状態から他の状態への遷移は，このマクロでは取得できない．
+
+なお，ディスパッチャの実行開始と終了のトレースログ取得は，ターゲット依
+存部で実装する必要がある．詳しくは，「6.2 トレースログ機能への対応」と
+「6.5.2 ディスパッチャ本体」の節を参照すること．
+
+(e) サービスコールの入口と出口
+
+次のマクロを定義することで，各サービスコールの入口と出口のトレースログ
+を取得することができる．
+
+	LOG_<サービスコールの大文字表記>_ENTER		サービスコール名の入口
+	LOG_<サービスコールの大文字表記>_LEAVE		サービスコール名の出口
+
+それぞれのマクロの名称やパラメータの詳細については，カーネルのソースコー
+ドを参照すること．
+
+6.11.2 トレースログ記録のサンプルコード
+
+トレースログを記録する方法の一例として，メモリ上にトレースログを記録す
+るためのサンプルコードをarch/logtraceディレクトリに用意している．このサ
+ンプルコードは，システムログ機能と同様のトレースログ機能を用意し，トレー
+スログ情報をメモリ上に記録するとともに，それを読み出して表示する機能を
+実現している．
+
+このサンプルコードを組み込む方法は次の通りである．
+
+(1) target_config.hおよびtarget_syssvc.hに，次の記述を追加する．
+
+	#ifdef TOPPERS_ENABLE_TRACE
+	#include "logtrace/trace_config.h"
+	#endif /* TOPPERS_ENABLE_TRACE */
+
+(2) Makefile.targetに，次の記述を追加する．
+
+	ifeq ($(ENABLE_TRACE),true)
+		COPTS := $(COPTS) -DTOPPERS_ENABLE_TRACE
+		KERNEL_DIR := $(KERNEL_DIR) $(SRCDIR)/arch/logtrace
+		KERNEL_COBJS := $(KERNEL_COBJS) trace_config.o trace_dump.o
+	endif
+
+(3) スタートアップモジュールで，bssセクションのクリアを省略している場合
+    には，trace_modeをTRACE_STOP（＝0）に初期化するコードを追加する．こ
+    れは，トレースログ機能が初期化される前に書き込まれるトレースログを
+    無視するためである．
+
+このサンプルコードを用いて，トレースログを記録・ダンプする方法の例につ
+いては，「TOPPERS/ASPカーネル ユーザーズマニュアル」の「11.6 トレースロ
+グ記録のサンプルコードの使用方法」の節を参照すること．
+
+なお，このサンプルコードでは，ディスパッチャの出口，タスクの状態遷移，
+システムログの出力の3つのトレースログのみを記録している．他のトレースロ
+グを記録したい場合には，trace_config.h（およびtrace_dump.c）を修正する
+必要がある．なお，カーネルのトレースログを網羅的に記録するためのコード
+は，TLV（TraceLogVisualizer）の配布パッケージに含まれている．
+
+6.12 カーネル実装のターゲット依存部のためのリネーム記述
+
+カーネル内部に閉じて使われる関数や変数などの名称で，オブジェクトファイ
+ルのシンボル表に登録されて外部から参照できる名称は，C言語レベルで，先頭
+が"_kernel_"または"_KERNEL_"である名称としなければならないが，ASPカーネ
+ルでは，ソースコードをコンパクトに保ちつつこれを実現するために，リネー
+ム記述ファイルを導入している．
+
+具体的には，リネームすべき名称をリストアップしたxxx_rename.defを用意し，
+このファイルからツール（utils/genrename）により，名称をリネームするため
+のマクロ定義を含むxxx_rename.hと，それらのマクロ定義を解除するための
+xxx_unrename.hを生成する．ツールの起動方法は次の通りである．
+
+	% genrename xxx
+
+xxx_rename.defには，リネームすべき名称を1行に1つ記述する．xxxxという名
+称が記述されている場合，xxx_rename.hには次のような記述が生成される．
+
+#define xxxx				_kernel_xxxx
+#ifdef TOPPERS_LABEL_ASM
+#define _xxxx				__kernel_xxxx
+#endif /* TOPPERS_LABEL_ASM */
+
+また，xxx_unrename.hには次のような記述が生成される．
+
+#undef xxxx
+#ifdef TOPPERS_LABEL_ASM
+#undef _xxxx
+#endif /* TOPPERS_LABEL_ASM */
+
+xxx_rename.defの中には，他のリネーム記述を取り込むために，「INCLUDE
+"yyy"」または「INCLUDE <yyy>」という記述を含めることができる．この記述
+がされている場合，xxx_rename.hには「#include "yyy_rename.h"」または
+「#include <yyy_rename.h>」という記述が，xxx_unrename.hには「#include
+"yyy_unrename.h"」または「#include <yyy_unrename.h>」という記述が生成さ
+れる．
+
+xxx_rename.defの中の"#"で始まる行はコメントとして読み飛ばされる．また，
+空行も無視される．
+
+カーネルのターゲット非依存部で使われる名称をリネームするために，kernel
+ディレクトリに，kernel_rename.defと，そこから生成したkernel_rename.hお
+よびkernel_unrename.hが用意されている．kernel_rename.defには，
+「INCLUDE "target"」という記述が含まれており，ターゲット依存部のリネー
+ム記述を取り込むようになっている．ターゲット依存部で定義し，ターゲット
+非依存部で参照される名称は，ターゲット依存部のリネーム記述に含める．
+
+ターゲット依存部では，ターゲット依存部で使われる名称をリネームするため
+に，target_rename.defと，そこから生成したtarget_rename.hおよび
+target_unrename.hを用意する．ターゲット依存部からプロセッサ・チップ・開
+発環境依存部を切り分ける場合には，target_rename.defにINCLUDE記述を入れ，
+プロセッサ・チップ・開発環境依存部のリネーム記述を取り込むようにする．
+
+6.13 タイマドライバ
+
+タイマドライバは，カーネルにタイムティックを通知するためのタイマドライ
+バである．
+
+6.13.1 タイマドライバのファイル構成
+
+タイマドライバを組み込むための静的APIを記述したシステムコンフィギュレー
+ションファイルを，target_timer.cfgに用意する．このファイルには，タイマ
+ドライバを初期化するための初期化ルーチンの追加，タイマドライバを終了さ
+せるための終了処理ルーチンの追加，タイマ割込みのための割込みハンドラの
+定義（または，割込みサービスルーチンの追加），タイマ割込みのための割込
+み要求ラインの属性の設定の静的APIなどを含むことになる．
+
+タイマドライバを呼び出すために必要な定義を含むヘッダファイルを，
+target_timer.hに用意する．また，タイマドライバの実装ファイルを
+target_timer.cに用意する．
+
+タイムティックの通知により行う処理の多くは，タスクの起動や待ち解除を行
+うものであるため，タイマ割込みの割込み優先度は，割込みの中で最低の優先
+度で十分である．ただし，周期ハンドラやアラームハンドラの実行開始遅れが
+問題になる場合には，タイマ割込みの割込み優先度をより高い値に設定したい．
+そこで，タイマ割込みの割込み優先度を変更する方法を，ターゲット依存部の
+ユーザーズマニュアルに記載すべきである．
+
+6.13.2 タイマの初期化・終了処理・割込み処理
+
+(6-13-2-1) void target_timer_initialize(intptr_t exinf)
+
+タイマを初期化し，タイマ割込みを周期的に発生させる関数．タイマ割込みの
+周期は，TIC_NUMEとTIC_DENOで指定された時間と一致させる（「5.2 タイム
+ティックの定義」の節を参照）．
+
+この関数は，target_timer.cfg中に記述する静的APIにより，初期化ルーチンと
+してカーネルに登録することを想定している．
+
+(6-13-2-2) void target_timer_terminate(intptr_t exinf)
+
+タイマの動作を停止させ，タイマ割込みを発生しないようにする関数．
+
+この関数は，target_timer.cfg中に記述する静的APIにより，終了処理ルーチン
+としてカーネルに登録することを想定している．
+
+(6-13-2-3) void target_timer_handler(void)
+    または void target_timer_isr(intptr_t exinf)
+
+タイマ割込みにより起動される割込み処理プログラム．割込みハンドラとして
+実現する場合にはtarget_timer_handler，割込みサービスルーチンとして実現
+する場合にはtarget_timer_isrの名称とする．ターゲット非依存部の
+signal_timeを呼び出す．
+
+target_timer_handlerは，標準的には次のように定義する．
+
+----------------------------------------
+void
+target_timer_handler(void)
+{
+	i_begin_int(<タイマ割込みの割込み番号>);
+	signal_time();
+	i_end_int(<タイマ割込みの割込み番号>);
+}
+----------------------------------------
+
+この関数は，target_timer.cfg中に記述する静的APIにより，割込みハンドラま
+たは割込みサービスルーチンとしてカーネルに登録することを想定している．
+
+6.13.3 性能評価用システム時刻の参照のための機能
+
+性能評価用システム時刻の参照機能（get_utm）をサポートする場合には，タイ
+マドライバで，以下のデータ型や関数などを用意する．
+
+(6-13-3-1) OMIT_GET_UTM（オプション）
+
+ターゲット非依存部のget_utmの実装を使用せず，ターゲット依存部でget_utm
+を用意する場合には，このシンボルをマクロ定義する．このシンボルをマクロ
+定義した場合，以下のデータ型や関数などを用意する必要はない．
+
+(6-13-3-2) CLOCK
+
+タイマ値の内部表現のためのデータ型．
+
+(6-13-3-3) CLOCK target_timer_get_current(void)
+
+タイマの現在値を読み出し，内部表現で返す関数．タイマ値は，時間の経過と
+ともに増加することを想定している．ハードウェアのタイマが，タイマ値が減
+少するものである場合には，この関数内で増加する値となるように変換する．
+
+(6-13-3-4) bool_t target_timer_probe_int(void)
+
+タイマ割込み要求をチェックする関数．タイマ割込みが要求されている場合に
+true，要求されていない場合にfalseを返す．
+
+(6-13-3-5) TO_USEC(clock)
+
+タイマ値の内部表現を，1μ秒単位に変換するためのマクロ（または関数）．
+targettimer_get_currentで読み出した値を，タイマ割込み発生からの経過時間
+（単位: 1μ秒）に変換するために用いる．
+
+6.14 オーバランタイマドライバ（オプション）
+
+オーバランタイマドライバは，オーバランハンドラを起動するためのタイマの
+ドライバである．オーバランハンドラ機能拡張パッケージをサポートしない場
+合には，オーバランタイマドライバを用意する必要はない．
+
+6.14.1 オーバランタイマドライバのファイル構成
+
+オーバランタイマドライバは，タイマドライバと同じファイルの中に記述する．
+オーバランタイマドライバのための記述は，TOPPERS_SUPPORT_OVRHDRがマクロ
+定義されている場合にのみ有効になるようにする．
+
+すなわち，オーバランタイマドライバを組み込むための静的APIは
+target_timer.cfgの中に記述する．このファイルには，オーバランタイマドラ
+イバを初期化するための初期化ルーチンの追加，オーバランタイマドライバを
+終了させるための終了処理ルーチンの追加，オーバランタイマ割込みのための
+割込みハンドラの定義（または，割込みサービスルーチンの追加），オーバラ
+ンタイマ割込みのための割込み要求ラインの属性の設定の静的APIなどを含むこ
+とになる．
+
+また，オーバランタイマドライバを呼び出すために必要な定義は
+target_timer.hの中に，オーバランタイマドライバの実装はtarget_timer.cの
+中に記述する．
+
+オーバランハンドラは，タスクのオーバランに対する処理を行うものであるた
+め，オーバランタイマ割込みの割込み優先度は，割込みの中で最低の優先度で
+十分である．ただし，オーバランタイマ割込みの割込み優先度をより高い値に
+設定したい場合もないとは言えないため，オーバランタイマ割込みの割込み優
+先度を変更する方法を，ターゲット依存部のユーザーズマニュアルに記載すべ
+きである．
+
+6.14.2 オーバランタイマの操作と割込み処理
+
+(6-14-2-1) void target_ovrtimer_initialize(intptr_t exinf)
+
+オーバランタイマの初期化処理を行う．タイマの動作開始は行わない．
+
+この関数は，target_timer.cfg中に記述する静的APIにより，初期化ルーチンと
+してカーネルに登録することを想定している．
+
+(6-14-2-2) void target_ovrtimer_terminate(intptr_t exinf)
+
+オーバランタイマを停止させ，オーバランタイマ割込みを発生しないようにす
+る．
+
+この関数は，target_timer.cfg中に記述する静的APIにより，終了処理ルーチン
+としてカーネルに登録することを想定している．
+
+(6-14-2-3) void target_ovrtimer_start(OVRTIM ovrtim)
+
+オーバランタイマに，残り時間ovrtimを設定し，動作開始する．ovrtimの単位
+はマイクロ秒とする．
+
+(6-14-2-4) OVRTIM target_ovrtimer_stop(void)
+
+オーバランタイマを停止し，タイマの残り時間を読み出す．もし残り時間が
+0（またはそれ未満）になっていた場合には，1を返す．また，オーバランタイ
+マからの割込みをクリアする．
+
+(6-14-2-5) OVRTIM target_ovrtimer_get_current(void)
+
+オーバランタイマの残り時間を読み出す．もし残り時間が0（またはそれ未満）
+になっていた場合には，0を返す．オーバランタイマからの割込みはクリアしな
+い．
+
+(6-14-2-6) void target_ovrtimer_handler(void)
+    または void target_ovrtimer_isr(intptr_t exinf)
+
+オーバランタイマ割込みにより起動される割込み処理プログラム．割込みハン
+ドラとして実現する場合にはtarget_ovrtimer_handler，割込みサービスルーチ
+ンとして実現する場合にはtarget_ovrtimer_isrの名称とする．ターゲット非依
+存部のcall_ovrhdrを呼び出す．
+
+target_timer_handlerは，標準的には次のように定義する．
+
+----------------------------------------
+void
+target_ovrtimer_handler(void)
+{
+	i_begin_int(<オーバランタイマ割込みの割込み番号>);
+	call_ovrhdr();
+	i_end_int(<オーバランタイマ割込みの割込み番号>);
+}
+----------------------------------------
+
+この関数は，target_timer.cfg中に記述する静的APIにより，割込みハンドラま
+たは割込みサービスルーチンとしてカーネルに登録することを想定している．
+
+6.15 動的メモリ管理
+
+動的生成機能拡張パッケージを使用する場合には，カーネル内での動的メモリ
+管理の方法を決める必要がある．
+
+動的生成機能拡張パッケージのターゲット非依存部では，メモリ領域を先頭か
+ら順に割り当て，解放されたメモリ領域を再利用しないメモリ管理モジュール
+のみを実装している．デフォルトでは，このメモリ管理モジュールが使用され
+る．
+
+本格的な動的メモリ管理を行いたい場合には，ターゲット依存部またはユーザ
+側で，以下の関数を定義したメモリ管理モジュールを用意する必要がある．
+
+(6-15-1) OMIT_KMM_ALLOCONLY（オプション）
+
+ターゲット非依存部のメモリ管理モジュールを使用せず，ターゲット依存部ま
+たはユーザ側で用意する場合には，このシンボルをマクロ定義する．
+
+(6-15-2) void initialize_kmm(void)（オプション）
+
+メモリ管理モジュールを初期化する関数．カーネルの割り付けるメモリ領域の
+サイズと先頭番地は，それぞれkmmszとkmmによって参照できる．
+
+(6-15-3) void *kernel_malloc(SIZE size)（オプション）
+
+sizeで指定されたサイズのメモリ領域を割り付け，その先頭番地を返す関数．
+割り付けることができない場合には，NULLを返す．
+
+(6-15-4) void kernel_free(void *ptr)（オプション）
+
+ptrで指定されたメモリ領域を解放する関数．
+
+6.15.1 TLSFを用いたメモリ管理モジュールの例
+
+オープンソースのメモリ割付けライブラリであるTLSFを用いて動的メモリ管理
+を実現するには，OMIT_KMM_ALLOCONLYをマクロ定義し，以下の関数定義等をC言
+語ソースファイルに含めればよい．
+
+----------------------------------------
+#include "tlsf.h"
+
+static bool_t	tlsf_initialized = false;
+
+void
+initialize_kmm(void)
+{
+	if (init_memory_pool(kmmsz, kmm) >= 0) {
+		tlsf_initialized = true;
+	}
+}
+
+void *
+kernel_malloc(SIZE size)
+{
+	if (tlsf_initialized) {
+		return(malloc_ex(size, kmm));
+	}
+	else {
+		return(NULL);
+	}
+}
+
+void
+kernel_free(void *ptr)
+{
+	if (tlsf_initialized) {
+		free_ex(ptr, kmm);
+	}
+}
+----------------------------------------
+
+
+７．コンフィギュレータ設定ファイルのターゲット依存部
+
+7.1 設定ファイルとターゲット依存部の位置付け
+
+ASPカーネルのコンフィギュレータは，設定ファイルの記述に従ってファイルの
+生成およびエラーチェックを行う．コンフィギュレータの設定ファイルには，
+以下の4つがある．
+
+(a) 静的APIテーブル
+
+静的APIの一覧と，各静的APIのパラメータについて記述したファイル．静的
+APIを拡張する場合以外は変更する必要がないため，ターゲット非依存部で用意
+している（kernel/kernel_api.csv）．
+
+(b) 値取得シンボルテーブル
+
+コンフィギュレータのパス1において，パラメータ計算用C言語ファイルに出力
+し，値を求めたいシンボル（一般には式）を記述するためのファイル．ターゲッ
+ト非依存部では，ターゲットに依存せずに必要となるシンボルを記述したファ
+イルを用意している（kernel/kernel_def.csv）．
+
+ターゲットに依存して必要となるシンボルがある場合には，targetディレクト
+リに置かれたtarget_def.csv中に記述する．target_def.csv中に記述して値を
+求めることができるシンボルは，kernel/kernel_int.hおよびそこからインクルー
+ドされるファイルで定義されていなければならない．kernel_int.hからは，
+target_stddef.h，target_kernel.h，target_config.hを（間接的に）インクルー
+ドしているため，これらのファイルおよびそこからインクルードされるファイ
+ルで定義されるターゲット依存のシンボルは，target_def.csv中に記述するこ
+とができる．
+
+ここで値を求めたシンボルの値は，コンフィギュレータのパス2およびパス3の
+テンプレートファイル中で参照することができる．
+
+(c) パス2のテンプレートファイル
+
+コンフィギュレータのパス2は，テンプレートファイルに従って，カーネルの構
+成・初期化ファイル（kernel_cfg.c），構成・初期化ヘッダファイル
+（kernel_cfg.h）などを生成する．このテンプレートファイルは，ターゲット
+非依存部とターゲット依存部に切り分けてあるが，他のファイルのターゲット
+依存部とは逆に，ターゲット依存部からターゲット非依存部をインクルードす
+る形になっている．
+
+具体的には，targetディレクトリに置かれたtarget.tfで，必要な変数を定義し
+た後，テンプレートファイルのターゲット非依存部（kernel/kernel.tf）をイ
+ンクルードする．kernel.tfでは，カーネルのターゲット非依存部で使用する変
+数定義等を生成する．kernel.tfをインクルードした後，target.tfでは，カー
+ネルのターゲット依存部で使用する変数定義等を生成する．target.tfから，プ
+ロセッサ依存部，チップ依存部を，開発環境依存部を切り分けてもよい．
+
+(d) パス3のテンプレートファイル
+
+コンフィギュレータのパス3は，テンプレートファイルに従って，静的APIの一
+般定数式パラメータのチェックを行う．このテンプレートファイルも，ターゲッ
+ト非依存部とターゲット依存部に切り分けてあり，ターゲット依存部からター
+ゲット非依存部をインクルードする形になっている．
+
+具体的には，targetディレクトリに置かれたtarget_check.tfで，必要な変数を
+定義した後，テンプレートファイルのターゲット非依存部
+（kernel/kernel_check.tf）をインクルードする．kernel_check.tfでは，カー
+ネルのターゲット非依存部で初期化ブロックに出力した一般定数式パラメータ
+のチェックを行う．kernel_check.tfをインクルードした後，target_check.tf
+では，ターゲットに依存するチェックを行う．target_check.tfから，プロセッ
+サ依存部，チップ依存部を，開発環境依存部を切り分けてもよい．
+
+なお，コンフィギュレータの詳細仕様と設定ファイルの記述方法については，
+別途PDFファイルの形で配布している「TOPPERS新世代カーネル用コンフィギュ
+レータ仕様」および「TOPPERS新世代カーネル用コンフィギュレータ内蔵マクロ
+プロセッサ仕様」を参照すること．
+
+7.2 パス2のテンプレートファイルのターゲット依存部
+
+以下では，パス2のテンプレートファイルのターゲット依存部を記述する上で必
+要な事項について説明する．
+
+7.2.1 ターゲット非依存部をインクルードする前に定義すべき変数
+
+target.tfからkernel.tfをインクルードする前に，次の変数を定義しておかな
+ければならない．
+
+(7-2-1) INTNO_ATTISR_VALID		ATT_ISRで使用できる割込み番号
+(7-2-2) INHNO_ATTISR_VALID		INTNO_ATTISR_VALIDに対応する割込ハンドラ番号
+(7-2-3) INHNO_DEFINH_VALID		DEF_INTで使用できる割込みハンドラ番号
+(7-2-4) EXCNO_DEFEXC_VALID		DEF_EXCで使用できるCPU例外ハンドラ番号
+(7-2-5) INTNO_CFGINT_VALID		CFG_INTで使用できる割込み番号
+(7-2-6) INTPRI_CFGINT_VALID		CFG_INTで使用できる割込み優先度
+
+APIで使用できる割込み番号／割込みハンドラ番号／CPU例外ハンドラ番号／割
+込み優先度のリストを，各変数に定義する．INHNO_ATTISR_VALIDには，
+INTNO_ATTISR_VALIDにリストアップした割込み番号に対応する割込みハンドラ
+番号のリストを定義する．CFG_INTには，すべての割込み番号を指定することが
+できるため，INTNO_CFGINT_VALIDには，有効な割込み番号をすべてリストアッ
+プする．
+
+(7-2-7) INTNO_FIX_KERNEL（オプション）		カーネル管理に固定されている
+											割込み番号
+(7-2-8) INHNO_FIX_KERNEL（オプション）		カーネル管理に固定されている
+		 									割込みハンドラ番号
+(7-2-9) INHNO_FIX_NONKERNEL（オプション）	カーネル管理外に固定されている
+											割込み番号
+(7-2-10) INHNO_FIX_NONKERNEL（オプション）	カーネル管理外に固定されている
+		 									割込みハンドラ番号
+
+カーネル管理またはカーネル管理外に固定されている割込みがある場合には，
+それらの割込み番号と割込みハンドラ番号のリストを，各変数に定義する．
+
+(7-2-11) USE_INHINIB_TABLE（オプション）
+
+OMIT_INITIALIZE_INTERRUPTを定義したが，割込みハンドラの初期化に必要な情
+報をkernel_cfg.cに生成したい場合には，この変数を1に設定する．具体的には，
+TNUM_INHNO，tnum_inhno，inhinib_tableの定義と，割込みハンドラ毎の出入口
+処理を生成するための記述（INTHDR_ENTRYマクロのリスト）が，ターゲット非
+依存部によって生成される．
+
+(7-2-12) USE_INTINIB_TABLE（オプション）
+
+OMIT_INITIALIZE_INTERRUPTを定義したが，割込み要求ラインの初期化に必要な
+情報をkernel_cfg.cに生成したい場合には，この変数を1に設定する．具体的に
+は，TNUM_INTNO，tnum_intno，intinib_tableの定義が，ターゲット非依存部に
+よって生成される．
+
+(7-2-13) GENERATE_TSKINICTXB（オプション）
+
+USE_TSKINICTXBをマクロ定義した場合，TSKINICTXBの初期化情報を生成するた
+めテンプレートファイル関数GENERATE_TSKINICTXBを定義する．
+GENERATE_TSKINICTXBには，タスクIDがパラメータとして渡される．
+
+7.2.2 ターゲット非依存部で定義される変数
+
+kernel.tfの中では次の変数が定義されるため，kernel.tfをインクルードした
+後，target.tfの中でこれらを参照することができる．
+
+(7-3-1) INTNO[inhno]		inhnoを対応するintnoに変換するための連想配列
+(7-3-2) INHNO[intno]		intnoを対応するinhnoに変換するための連想配列
+
+7.3 パス3のテンプレートファイルのターゲット依存部
+
+以下では，パス3のテンプレートファイルのターゲット依存部を記述する上で必
+要な事項について説明する．
+
+7.3.1 ターゲット非依存部をインクルードする前に定義すべき変数
+
+target_check.tfからkernel_check.tfをインクルードする前に，必要に応じて，
+次の変数を定義しておかなければならない．
+
+(7-3-1) GET_STK_TSKINICTXB（オプション）
+
+USE_TSKINICTXBをマクロ定義した場合，TINIBからスタック領域の先頭番地を取
+り出すためのテンプレートファイル関数GET_STK_TSKINICTXBを定義する．
+GET_STK_TSKINICTXBには，タスク初期化ブロック（TINIB）の先頭番地がパラメー
+タとして渡される．CHECK_STACK_ALIGN，CHECK_STACK_NONNULLとも定義しない
+場合には，GET_STK_TSKINICTXBを定義する必要はない．
+
+7.3.2 ターゲット依存部で行うべきエラーチェック
+
+以下の先頭番地は，ターゲット非依存部で生成するテーブルに出力されないた
+め，パス3のターゲット非依存部（kernel_check.tf）では，プログラムの開始
+番地として正しくない場合のエラーをチェックしない．そのため，ターゲット
+依存部でエラーチェックを行う必要がある．
+
+・割込みサービスルーチンの先頭番地（ATT_ISRのisr）
+・割込みハンドラの先頭番地（DEF_INHのinthdr）
+・CPU例外ハンドラの先頭番地（DEF_EXCのexchdr）
+・初期化ルーチンの先頭番地（ATT_INIのinirtn）
+・終了処理ルーチンの先頭番地（ATT_TERのterrtn）
+
+ただし，ターゲット依存部においても，これらのエラーチェックを行えるとは
+限らないため，ユーザーズマニュアルの「1.5 既知の問題」の節には，ターゲッ
+ト依存でこれらのエラーが検出されないことがある旨を記載してある．
+
+7.4 cfg1_out.cのリンクに必要なスタブの定義ファイル
+
+コンフィギュレータに関してターゲット依存に用意する必要があるファイルと
+して，設定ファイル以外に，cfg1_out.cをリンクするために必要なスタブの定
+義ファイルがある．
+
+コンフィギュレータのパス1では，静的APIの整数定数式パラメータの値をCコン
+パイラを用いて求めるために，cfg1_out.cを生成する．これをコンパイル，リ
+ンクしてオブジェクトファイルを生成する際に，スタートアップモジュールか
+ら参照されるシンボルの定義を与える必要がある．
+
+この定義を与えるために，cfg1_out.cから，ターゲット依存部の
+target_cfg1_out.hをインクルードしている．target_cfg1_out.h（または，そ
+こからインクルードされるファイル）には，スタートアップモジュールから参
+照されるシンボルのスタブの定義を含める．典型的には，以下のような定義を
+含める必要がある．
+
+----------------------------------------
+void sta_ker(void)
+{
+}
+
+void hardware_init_hook(void)
+{
+}
+
+void software_init_hook(void)
+{
+}
+
+const SIZE		_kernel_istksz = 0;
+
+STK_T *const	_kernel_istk = NULL;
+----------------------------------------
+
+また，コンフィギュレータを用いてオフセットファイル（offset.h）を生成す
+る場合には，そのための記述をtarget_cfg1_out.h（または，そこからインクルー
+ドされるファイル）に追加する必要がある．詳しくは，「2.5.1 コンフィギュ
+レータを用いる方法」の節を参照すること．
+
+
+８．システムサービス等のターゲット依存部
+
+8.0 システムサービスのターゲット依存部
+
+シリアルポート数やシステムログタスク関連の定数など，システムサービスの
+構成を決定するための定義をtarget_syssvc.hまたはそこからインクルードされ
+るファイル（プロセッサ・チップ・開発環境依存部で用意されるヘッダファイ
+ルなど）に含める．
+
+なお，TOPPERS組込みコンポーネントシステムが導入されると，このファイルの
+内容はコンポーネント記述ファイルに記述されることになり，このファイルは
+無くなる（または，大幅に縮小される）見込みである．
+
+8.1 システムログ機能のターゲット依存定義
+
+システムログ機能を使用する場合で，スタートアップモジュールでbssセクショ
+ンのクリアを省略している場合には，syslog_logmaskとsyslog_lowmask_notを
+0に初期化するコードを追加する．これは，システムログ機能が初期化される前
+に出力されたログ情報を，低レベル出力機能を用いて出力するためである．
+
+ターゲット依存部で提供すべきシステムログ機能のための定義は次の通りであ
+る．
+
+(8-1-1) TCNT_SYSLOG_BUFFER
+
+システムログ機能のログバッファのサイズを定義するマクロ．定義しない場合
+のデフォルト値は32．
+
+(8-1-2) void target_fput_log(char_t c)
+
+システムログの低レベル出力のための文字出力関数．ターゲット依存の方法で，
+文字cを表示/出力/保存する．
+
+この関数は，リエントラントに実装しなければならない．この関数内で排他制
+御が必要な場合には，SILを用いて全割込みロック状態にすること．また，全割
+込みロック状態で呼ばれる場合があるため，全割込みロック状態から呼び出す
+ことができない関数を呼ばないように実装しなければならない．
+
+低レベル出力をシリアルポート経由で行う場合で，シリアルインタフェースド
+ライバとポートを共用しないことが望ましいが，ポート数が足りないためにや
+むをえず共用する場合には，両者が競合しないように注意が必要である．具体
+的には，両者が同じ設定でシリアルI/Oデバイスを使うようにし，シリアルイン
+タフェースドライバの動作中に低レベル出力が行われても差し支えないように
+設計する．また，低レベル出力が動作開始後にシリアルインタフェースドライ
+バがシリアルI/Oデバイスを初期化すると，文字化けが起こる可能性があるため，
+共用するポートは，低レベル出力機能側で初期化し，シリアルインタフェース
+ドライバでは初期化しないようにするとよい．
+
+なお，この関数の本体を，どのファイルに記述するかが問題になる．システム
+サービスのターゲット依存部には，標準では，関数定義を記述するためのファ
+イルを用意していない．ターゲット依存で用意してもよいが，例外的に，カー
+ネル実装のターゲット依存モジュール（target_config.c）に記述してもよい．
+この場合，target_fput_logを，リネーム記述（target_rename.defなど）に含
+めてはならない．
+
+8.2 ログタスクのターゲット依存定義
+
+ターゲット依存部で提供すべきログタスクのための定義は次の通りである．こ
+れらの定義は，target_syssvc.hまたはそこからインクルードされるファイルに
+含める．
+
+(8-2-1) LOGTASK_PRIORITY（オプション）
+
+ログタスクの優先度を定義するマクロ．定義しない場合のデフォルト値は3．
+
+(8-2-2) LOGTASK_STACK_SIZE（オプション）
+
+ログタスクのスタックサイズを定義するマクロ．定義しない場合のデフォルト
+値は1024．
+
+(8-2-3) LOGTASK_PORTID（オプション）
+
+ログタスクの出力先のシリアルポート番号．定義しない場合のデフォルト値は1．
+
+(8-2-4) LOGTASK_INTERVAL（オプション）
+
+ログタスクの動作間隔（単位はミリ秒）．定義しない場合のデフォルト値は10．
+
+(8-2-5) LOGTASK_FLUSH_WAIT（オプション）
+
+ログ出力を待ち合わせる処理において，タスクを待たせる単位となる時間（単
+位はミリ秒）．定義しない場合のデフォルト値は1．
+
+8.3 シリアルインタフェースドライバのターゲット依存部
+
+ターゲット依存部で提供すべきシリアルインタフェースドライバのための定義
+は次の通りである．これらの定義は，別に指定がない限り，target_serial.hま
+たはそこからインクルードされるファイルに含め，必要なコンフィギュレーショ
+ン情報をtarget_serial.cfgに記述する．関数の実体が必要な場合には，
+target_serial.c等のファイルを用意する．
+
+シリアルインタフェースドライバの中で，ターゲットのシリアルI/Oデバイスに
+依存する部分を，シリアルI/Oデバイスドライバと呼ぶ．シリアルI/Oデバイス
+ドライバは，おおよそ，ITRONデバイスドライバ設計ガイドラインのPDICに相当
+する．PDICに相当するファイルで，他のシステムにも共通に使える可能性があ
+る場合には，pdicディレクトリに置く．
+
+8.3.1 変数，データ型，管理関数
+
+(8-3-1-1) TNUM_PORT
+
+シリアルインタフェースドライバがサポートするシリアルポート数を定義する
+マクロ．このマクロの定義は，target_syssvc.hまたはそこからインクルードさ
+れるファイルに含める．
+
+(8-3-1-2) void sio_initialize(intptr_t exinf)（オプション）
+
+シリアルI/Oデバイスドライバの初期化処理．target_serial.cfgに，この関数
+を初期化ルーチンとして登録する静的APIを含める．
+
+(8-3-1-3) void sio_terminate(intptr_t exinf)（オプション）
+
+シリアルI/Oデバイスドライバの終了処理．target_serial.cfgに，この関数を
+終了処理ルーチンとして登録する静的APIを含める．
+
+(8-3-1-4) void sio_isr(intptr_t exinf)
+
+シリアルI/Oデバイスの割込みサービスルーチン．target_serial.cfgに，この
+関数を割込みサービスルーチンとして登録する静的APIを含める．また，その静
+的APIに必要なシリアルI/Oデバイスの割込み番号などは，target_serial.hでマ
+クロ定義する．割込みサービスルーチンではなく，割込みハンドラとすること
+もできる．
+
+(8-3-1-5) SIOPCB
+
+シリアルI/Oポート管理ブロックのデータ型（target_serial.hには，データ型
+の宣言だけ含まれていればよい）．
+
+(8-3-1-6) SIO_RDY_SNDとSIO_RDY_RCV
+
+送信可能コールバックの識別番号をSIO_RDY_SNDに，受信通知コールバックの識
+別番号をSIO_RDY_RCVにマクロ定義する．コールバックの禁止／許可を行なうサー
+ビスコール（sio_ena_cbrとsio_dis_cbr）で用いる．
+
+8.3.2 デバイスサービスルーチン
+
+以下のデバイスサービルルーチンは，（少なくとも）シリアルI/Oポートからの
+割込みがマスクされた状態で呼び出される．また，タスクコンテキスト，非タ
+スクコンテキストのいずれで呼び出される場合もある（いずれで呼び出されて
+も動作するようにしなければならない）．
+
+(8-3-2-1) SIOPCB *sio_opn_por(ID siopid, intptr_t exinf)
+
+siopidで指定されるシリアルI/Oポートをオープンする関数．exinfはシリアル
+I/Oポートに対する拡張情報で，コールバックを呼ぶ時にポートを区別するた
+めに渡す．
+
+(8-3-2-2) void sio_cls_por(SIOPCB *siopcb)
+
+siopcbで指定されるシリアルI/Oポートをクローズする関数．
+
+(8-3-2-3) bool_t sio_snd_chr(SIOPCB *siopcb, char_t c)
+
+siopcbで指定されるシリアルI/Oポートに，cで示される文字を送信する関数．
+文字を送信レジスタに入れた場合にはtrueを，前に送信した文字の送信が終わっ
+ていないために，文字を送信レジスタに入れられなかった場合にはfalseを返す．
+
+(8-3-2-4) int_t sio_rcv_chr(SIOPCB *siopcb)
+
+siopcbで指定されるシリアルI/Oポートから文字を読む関数．文字を受信してい
+た場合，読んだ文字のコードは正の値として返し，文字を受信していない場合
+には-1を返す．
+
+(8-3-2-5) void sio_ena_cbr(SIOPCB *siopcb, uint_t cbrtn)
+
+siopcbで指定されるシリアルI/Oポートからの，cbrtnで指定されるコールバッ
+クを許可する．cbrtnには，SIO_RDY_SNDかSIO_RDY_RCVを指定できる．
+
+(8-3-2-6) void sio_dis_cbr(SIOPCB *siopcb, uint_t cbrtn)
+
+siopcbで指定されるシリアルI/Oポートからの，cbrtnで指定されるコールバッ
+クを禁止する．cbrtnには，SIO_RDY_SNDかSIO_RDY_RCVを指定できる．
+
+8.3.3 コールバックルーチン
+
+ターゲット依存部は，必要なタイミングで，シリアルインタフェースドライバ
+のターゲット非依存部に含まれる以下のコールバックルーチンを呼び出びださ
+なければならない．ただし，それぞれのコールバックが禁止されている時は，
+コールバックルーチンを呼び出してはならない．
+
+コールバックルーチンは，（少なくとも）シリアルI/Oポートからの割込みが禁
+止された状態で，非タスクコンテキストで呼び出す．exinfには，シリアルI/O
+ポートのオープン時に指定された拡張情報を渡す．
+
+(8-3-3-1) void sio_irdy_snd(intptr_t exinf)
+
+送信可能コールバックルーチン．シリアルI/Oポートに対して文字が送信できる
+状態になった場合に呼び出す．シリアルインタフェースドライバは，このコー
+ルバックルーチンの中で，sio_snd_chrを呼び出して次の文字を送信するか，送
+信すべき文字がない場合には送信可能コールバックを禁止する．
+
+(8-3-3-2) void sio_irdy_rcv(intptr_t exinf)
+
+受信通知コールバックルーチン．シリアルI/Oポートから文字を受信した場合に
+呼び出す．シリアルインタフェースドライバは，このコールバックルーチンの
+中で，必ずsio_rcv_chrを呼び出して受信した文字を取り出す．
+
+8.4 カーネル起動メッセージの出力のターゲット依存定義
+
+ターゲット依存部で提供すべきカーネル起動メッセージの出力のための定義は
+次の通りである．
+
+(8-4-1) TARGET_NAME
+
+ターゲットの名称に定義する．
+
+(8-4-2) TARGET_COPYRIGHT（オプション）
+
+カーネル起動メッセージに，ターゲット依存部の著作権表示を追加するための
+マクロ．デフォルトでは，ターゲット依存部の著作権表示を追加しない．
+
+8.5 サンプルプログラムとテストプログラムのターゲット依存定義
+
+ターゲット依存部で提供すべきサンプルプログラムおよびテストプログラムの
+ための定義は次の通りである．これらの定義は，target_test.h（またはそれら
+からインクルードされるファイル）に含める．
+
+(8-5-1) STACK_SIZE（オプション）
+
+サンプルプログラムおよびテストプログラムのタスクのスタックサイズを定義
+するマクロ．定義しない場合のデフォルト値は4096．デフォルト設定ではメモ
+リが不足する場合や，シミュレーション環境などで大きいスタック領域が必要
+な場合には，ターゲット依存部でこのマクロを設定するスタックサイズに定義
+する．
+
+(8-5-2) CPUEXC1（オプション）
+
+サンプルプログラムおよびテストプログラムで用いるCPU例外のCPU例外ハンド
+ラ番号を定義するマクロ．このマクロを定義しない場合，CPU例外ハンドラを使
+う部分がサンプルプログラムから除外される．CPU例外ハンドラのテストをする
+テストプログラムはコンパイルできない．
+
+(8-5-3) RAISE_CPU_EXCEPTION（オプション）
+
+CPUEXC1に定義したCPU例外を発生させるC言語のプログラムを定義するマクロ．
+CPUEXC1を定義した場合には必ず定義しなければならない．
+
+(8-5-4) CANNOT_RETURN_CPUEXC（オプション）
+
+ターゲットシステムの制約により，CPU例外ハンドラからリターンした後に，タ
+スクの実行を継続できない場合に定義するマクロ．このマクロを定義すると，
+CPU例外ハンドラのテストをするテストプログラムから，CPU例外ハンドラから
+リターンした後の処理が除外される．サンプルプログラムの該当部分は正しく
+動作しない．
+
+(8-5-5) TASK_PORTID（オプション）
+
+サンプルプログラムにおいて，コマンド文字を読み込むシリアルポート番号を
+定義するマクロ．定義しない場合のデフォルト値は1．
+
+(8-5-6) LOOP_REF（オプション）
+
+サンプルプログラムにおいて，プロセッサの速度を計測するためのループ回数
+を定義するマクロ．定義しない場合のデフォルト値は1000000．デフォルト設定
+では，値が大き過ぎて計測に時間がかかりすぎる場合や，値が小さ過ぎて計測
+結果が安定しない場合に，ターゲット依存部でこのマクロを設定するループ回
+数に定義する．
+
+(8-5-7) MEASURE_TWICE（オプション）
+
+サンプルプログラムにおいて，プロセッサの速度を2度計測する場合に定義する
+マクロ．シミュレーション環境などプロセッサの速度が変動する環境で，1度の
+計測では計測結果が安定しない場合に定義する．
+
+(8-5-8) TASK_LOOP（オプション）
+
+サンプルプログラムにおいて，プロセッサの速度を計測せずに，タスク内での
+ループ回数を固定する場合に，ループ回数を定義するマクロ．ループ全体の実
+行時間が0.4秒程度になるようなループ回数を，このマクロに定義する．
+
+8.6 実行時間分布集計モジュールのターゲット依存定義
+
+実行時間分布集計モジュールの設定をターゲット依存部で変更する場合に，ター
+ゲット依存部で提供すべき実行時間分布集計モジュールのための定義は次の通
+りである．これらの定義は，target_test.h（またはそこからインクルードされ
+るファイル）に含める．この他に，ターゲット依存で必要な初期化処理がある
+場合にも，ターゲット依存部に含める．
+
+(8-6-1) HISTTIM（オプション）
+
+実行時間計測用の時刻のデータ型を定義するマクロ．定義しない場合のデフォ
+ルトはSYSUTM．
+
+(8-6-2) void HIST_GET_TIM(HISTTIM *p_time)（オプション）
+
+実行時間計測用の現在時刻を*p_timeに取得する処理に定義するマクロ．定義し
+ない場合のデフォルトはget_utm．
+
+(8-6-3) uint_t HIST_CONV_TIM(HISTTIM time)（オプション）
+
+実行時間計測用の時刻の差（時間）を，実行時間分布集計用の値に変換する処
+理に定義するマクロ．時刻が過去に戻ったかオーバフローしたかの区別がつか
+ない場合には，最上位ビットが1の値（INT_MAXよりも大きい値）を返す．定義
+しない場合のデフォルトは，timeをuint_tにキャストする処理．
+
+(8-6-4) void HIST_BM_HOOK(void)（オプション）
+
+実行時間計測直前に行うべき処理に定義するマクロ．キャッシュのパージやフィ
+ル，メモリバリア処理等を行いたい場合には，このマクロに定義する．定義し
+ない場合のデフォルトは，空の処理になる．
+
+
+９．その他
+
+9.1 ドキュメント
+
+ターゲット依存部のユーザーズマニュアルを，target_user.txtに用意する．プ
+ロセッサ・チップ・開発環境依存部のユーザーズマニュアルを切り分けてもよ
+いし，ファイルが大きくなる場合には複数のファイルに分割してよいが，その
+場合には，target_user.txt中にそれらのファイル名を記述すること．
+
+ターゲット依存部のユーザーズマニュアルには，少なくとも次のような内容を
+記述することが望ましい．
+
+(1) 対応しているターゲットシステムの種類・構成，バージョン番号
+	・ターゲットハードウェア（ボード等）の名称と対応している構成
+	・ターゲット略称
+	・ターゲット非依存部のバージョン番号
+	・プロセッサ，チップ，開発環境依存部の構成とバージョン番号
+	・使用するPDICとバージョン番号
+
+(2) 使用する開発環境と動作検証した条件（バージョン，オプション等）
+	・言語処理系（コンパイラ，アセンブラ，リンカ等）
+	・デバッグ環境
+
+(3) ターゲット定義事項の規定
+
+(3-1) データ型に関する規定
+	・int_t型，long_t型のサイズ
+	・char_t型，int_least8_t型，void *型，intptr_t型のサイズ
+	・int8_t型，uint8_t型，int64_t型，uint64_t型，int128_t型，
+	　uint128_t型，float32_t型，double64_t型のサポートの有無
+
+(3-2) 割込み処理に関する規定
+	・割込みハンドラ番号と割込み番号の割当て，両者の対応
+	・割込み優先度の段階数（TMIN_INTPRIの値）
+	・dis_intとena_intのサポートの有無，その制限事項
+	・CFG_INTの制限事項と拡張（ターゲット定義で使用できる割込み属性）
+	・TOPPERS標準割込み処理モデルからのその他の逸脱
+
+(3-3) カーネル管理外の割込みに関する規定
+	・TMIN_INTPRIは固定か設定できるか，その設定方法
+	・NMI以外にカーネル管理外の割込みを設けるか（設けられるようにするか）
+	・カーネル管理外の割込みの設定方法
+	・カーネル管理外の割込みに対してDEF_INH，CFG_INTをサポートするか
+	・カーネル管理外の割込みハンドラが実行開始される時のシステム状態と
+	　コンテキスト
+	・割込みハンドラの終了時に行われる処理
+	・カーネル管理外の割込みハンドラの記述方法
+	・カーネル内の割込み出入口処理で起こる可能性のあるCPU例外
+
+(3-4) CPU例外処理に関する規定
+	・CPU例外ハンドラ番号の割当て
+	・割込み優先度マスクをTMIN_INTPRIと同じかそれよりも高い値に設定して
+	　いる状態で発生したCPU例外を，カーネル管理外のCPU例外と扱うか
+	・カーネル内のCPU例外出入口処理で起こる可能性のあるCPU例外
+
+(3-5) 性能評価用システム時刻の参照に関する規定
+	・get_utmのサポートの有無，その制限事項
+
+(3-6) 拡張パッケージに関する規定
+	・各拡張パッケージのサポートの有無
+		- ミューテックス機能拡張パッケージ
+		- オーバランハンドラ機能拡張パッケージ
+		- タスク優先度拡張パッケージ
+		- 制約タスク拡張パッケージ
+		- 動的生成機能拡張パッケージ
+	・オーバランハンドラ機能拡張パッケージをサポートする場合に，プロセッ
+	　サ時間に指定できる値の最大値（TMAX_OVRTIMの値）
+	・動的生成機能拡張パッケージをサポートする場合に，動的メモリ管理の
+	　方法
+
+(3-7) その他
+	・その他の制限事項
+	・その他の拡張機能
+
+(4) カーネルの起動／終了処理に関する情報
+	・用意しているスタートアップモジュールの処理内容
+	・スタートアップモジュールからhardware_init_hookを呼び出している場
+	　合には，hardware_init_hookをアプリケーションで用意する場合の作成
+	　方法や制限事項など
+	・カーネルを終了した後の振舞い
+
+(5) メモリマップ
+	・デフォルトのメモリマップ，その変更方法
+
+(6) タイマドライバ関連の情報
+	・タイムティックの周期，その変更方法
+	・使用するリソース（タイマ）
+	・タイマ割込みの割込み優先度の変更方法
+	・オーバランタイマ割込みの割込み優先度の変更方法
+
+(7) シリアルインタフェースドライバの情報
+	・使用するリソース（SIOコントローラ）
+	・通信パラメータ（ボーレート，ビット数，パリティの有無，ストップビット）
+
+(8) システムログ機能の情報
+	・システムログの低レベル出力の実現方法
+	・通信パラメータ（ボーレート，ビット数，パリティの有無，ストップビット）
+
+(9) システム構築手順
+
+(10) ターゲットシステム固有の注意事項
+	・タスクコンテキストに含まれるレジスタ，含まれないレジスタ
+
+(11) 類似のターゲットにポーティングする開発者向けの参考情報
+
+(12) ディレクトリ構成・ファイル構成
+
+(13) バージョン履歴
+
+また，必要に応じて，ターゲット依存部の設計メモを，target_design.txtに用
+意する．プロセッサ・チップ・開発環境依存部に関する設計メモを切り分けて
+もよいし，ファイルが大きくなる場合には複数のファイルに分割してもよいが，
+その場合には，target_design.txt中にそれらのファイル名を記述すること．
+
+9.2 パッケージ記述ファイル
+
+リリースパッケージ（個別パッケージおよび簡易パッケージ）を作成するため
+に，パッケージに含めるファイルを記述したパッケージ記述ファイルを用意す
+る．パッケージ記述ファイルの名称は，個別パッケージ用をMANIFEST，簡易パッ
+ケージ用をE_PACKAGEとする．
+
+例えば，arch/arm_gccディレクトリに置かれたMANIFESTファイルを用いて個別
+パッケージを作成する場合には，次のコマンドを実行する．
+
+	% utils/makerelease arch/arm_gcc/MANIFEST
+
+このコマンドにより，RELEASE/asp_arch_arm_gcc-<バージョン番号>.tar.gzが
+作成される．また，target/at91skyeye_gccディレクトリに置かれたE_PACKAGE
+ファイルを用いて簡易パッケージを作成する場合には，次のコマンドを実行す
+る．
+
+	% utils/makerelease target/at91skyeye_gcc/E_PACKAGE
+
+このコマンドにより，RELEASE/asp_at91skyeye_gcc-<バージョン番号>.tar.gz
+が作成される（RELEASEディレクトリがない場合には，ディレクトリが作られ
+る）．
+
+なお，makereleaseユーティリティは，ASPカーネルのソースファイルが置かれ
+たディレクトリが，aspという名称であることを仮定している（異なる名称の場
+合でもパッケージは作成できるが，パッケージを展開した時に展開されるディ
+レクトリがaspでなくなる）．また，標準のtarコマンドがGNU tarであること
+（正確には，zオプションに対応していること）を想定している．
+
+パッケージ記述ファイルには，パッケージに含めるファイル名を，パッケージ
+記述ファイルが置かれたディレクトリからの相対パス名で，1行に1つずつ記述
+する．また，必要に応じて，以下のディレクティブを含める．
+
+(a) E_PACKAGE <簡易パッケージ名>
+
+簡易パッケージ名を指定する．簡易パッケージ記述ファイル（E_PACKAGE）の先
+頭に記述する．簡易パッケージ名は，asp_<ターゲット略称>とする．例えば，
+ターゲット略称がat91skyeye_gccの場合には，asp_at91skyeye_gccとなる．個
+別パッケージと区別するために，簡易パッケージのファイル名には"target"を
+含めない．
+
+(b) PACKAGE <個別パッケージ名>
+
+個別パッケージ名を指定する．個別パッケージ記述ファイル（MANIFEST）の先
+頭に記述する．また，そこからインクルードされる各ファイルの先頭にも記述
+し，それをインクルードしている個別パッケージ名を指定する．ターゲット依
+存部の個別パッケージ名は，個別パッケージ記述ファイルが置かれたディレク
+トリの相対パス中の"/"を"_"に置き換えた文字列を，"asp_"の後につなげたも
+のとする．例えば，個別パッケージ記述ファイルがarch/arm_gcc/MANIFESTの場
+合には，asp_arch_arm_gccとなる．
+
+(c) VERSION <バージョン番号>
+
+パッケージのバージョン番号を指定する．簡易パッケージ記述ファイルおよび
+個別パッケージ記述ファイルの中に記述する．簡易パッケージにおいて，バー
+ジョン番号をパッケージ化した日付とする場合には，パッケージ番号の代わり
+に%dateと記述する．
+
+バージョン番号の付与方法については，「TOPPERS/ASPカーネル ユーザーズマ
+ニュアル」の「2.2 簡易パッケージ」および「2.3 個別パッケージ」の節を参
+照すること．
+
+(d) INCLUDE <ファイル名>
+
+別のパッケージ記述ファイルをインクルードする．簡易パッケージ記述ファイ
+ルからは，個別パッケージ記述ファイルのみをインクルードするのを原則とす
+る．個別パッケージ記述ファイルからインクルードされるファイル中で指定さ
+れる個別パッケージ名は，すべて一致していなければならない．
+
+
+１０．リファレンス
+
+10.1 ターゲット依存部のファイル一覧
+
+標準的なターゲット依存部のファイル構成は次の通りである．
+
+Makefile.target		Makefileのターゲット依存部（２章）．
+target_offset.tf	オフセットファイル生成用テンプレートファイル（2.5.1節，
+					オプション）
+
+target_stddef.h		TOPPERS共通定義（t_stddef.h）のターゲット依存部（３
+					章）．アプリケーションとカーネルの両方からインクルー
+					ドされる．
+target_sil.h		システムインタフェースレイヤ（sil.h）のターゲット依
+					存部（４章）．アプリケーションとカーネルの両方から
+					インクルードされる．
+target_kernel.h		カーネルAPI（kernel.h）のターゲット依存部（５章）．
+					アプリケーションとカーネルの両方からインクルードさ
+					れる．
+
+target_config.h		カーネル実装のターゲット依存部のヘッダファイル（６
+					章）．カーネルのみからインクルードされる．
+target_config.c		カーネル実装のターゲット依存部のC言語で記述される
+					部分（６章，オプション）．
+target_support.S	カーネル実装のターゲット依存部のアセンブリ言語で記
+					述される部分（６章，オプション）．
+target_rename.def	カーネル実装のターゲット依存部のためのリネーム記述
+					（6.12節）．
+target_rename.h		target_rename.defから生成されるファイル（6.12節）．
+target_unrename.h	target_rename.defから生成されるファイル（6.12節）．
+target_timer.cfg	タイマドライバのシステムコンフィギュレーションファ
+					イル（6.13節）．
+target_timer.h		タイマドライバのヘッダファイル（6.13節）．カーネル
+					のみからインクルードされる．
+target_timer.c		タイマドライバの実装ファイル（6.13節，オプション）．
+システム略称.h		ターゲットのハードウェア資源（割込みハンドラ番号や
+					CPU例外ハンドラ番号，デバイスレジスタの番地など）の
+					定義を含むヘッダファイル．アプリケーションとカーネ
+					ルの両方からインクルードされる（６章，オプション）．
+
+target_def.csv		コンフィギュレータの値取得シンボルテーブルのターゲッ
+					ト依存部（７章，オプション）．
+target.tf			コンフィギュレータのパス2のテンプレートファイルの
+					ターゲット依存部（7.2節）．
+target_check.tf		コンフィギュレータのパス3のテンプレートファイル（7.3
+					節）．
+target_cfg1_out.h	cfg1_out.cのリンクに必要なスタブの定義ファイル（7.4
+					節）．
+
+target_syssvc.h		システムサービスのターゲット依存定義（8.0節）．
+target_serial.cfg	シリアルドライバのシステムコンフィギュレーションファ
+					イル（8.3節）．
+target_serial.h		シリアルドライバのヘッダファイル（8.3節）．シリアル
+					ドライバのみからインクルードされる．
+target_serial.c		シリアルドライバの実装ファイル（8.3節，オプション）．
+target_test.h		テストプログラムのターゲット依存定義（8.4節）．
+
+target_user.txt		ユーザーズマニュアル（9.1節）
+target_design.txt	設計メモ（9.1節，オプション）
+MANIFEST			個別パッケージに含めるファイルのリスト（9.2節，オプ
+					ション）
+E_PACKAGE			簡易パッケージに含めるファイルのリスト（9.2節，オプ
+					ション）
+
+以上
Index: /asp_ewarm/asp-1.7.0/doc/user.txt
===================================================================
--- /asp_ewarm/asp-1.7.0/doc/user.txt	(revision 61)
+++ /asp_ewarm/asp-1.7.0/doc/user.txt	(revision 61)
@@ -0,0 +1,2244 @@
+
+		TOPPERS/ASPカーネル
+		ユーザーズマニュアル
+
+		対応バージョン: Release 1.7.0
+		最終更新: 2011年5月8日
+
+このドキュメントは，TOPPERS/ASPカーネルを使用するために必要な事項を説明
+するものである．
+
+----------------------------------------------------------------------
+ TOPPERS/ASP Kernel
+     Toyohashi Open Platform for Embedded Real-Time Systems/
+     Advanced Standard Profile Kernel
+
+ Copyright (C) 2005-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: user.txt 2069 2011-05-08 08:45:03Z ertl-hiro $
+----------------------------------------------------------------------
+
+○目次
+
+１．TOPPERS/ASPカーネルの概要
+	1.1 TOPPERS/ASPカーネルの位置付け
+	1.2 TOPPERS/ASPカーネルの仕様
+	1.3 マイグレーションガイド
+	1.4 機能拡張・チューニングガイド
+	1.5 既知の問題
+２．ターゲット依存部
+	2.1 ターゲット依存部の概要
+	2.2 簡易パッケージ
+	2.3 個別パッケージ
+３．クイックスタートガイド
+	3.1 開発環境の準備
+	3.2 コンフィギュレータの構築
+	3.3 サンプルプログラムの構築と実行
+	3.4 カーネルを関数単位でライブラリ化する方法
+	3.5 アプリケーションとカーネルを別々に構築する方法
+４．ディレクトリ構成・ファイル構成
+	4.1 配布パッケージのディレクトリ構成
+	4.2 ターゲット非依存部のファイル構成
+５．コンフィギュレーションスクリプトの使い方
+６．Makefileの修正方法
+	6.1 Makefileの変数定義
+	6.2 コンパイルオプション
+７．コンフィギュレータの使い方
+８．システムサービス
+	8.1 システムログ機能
+		8.1.1 システムログ機能の位置付け
+		8.1.2 ログバッファへの記録と低レベル出力
+		8.1.3 ログ情報の種別
+		8.1.4 ログ情報の重要度
+		8.1.5 ログ情報のデータ構造
+		8.1.6 システムログ機能のサービスコール
+		8.1.7 システムログ機能のためのライブラリ関数とマクロ
+		8.1.8 システムログ機能のその他のサービス
+	8.2 シリアルインタフェースドライバ
+		8.2.1 シリアルインタフェースドライバのサービスコール
+		8.2.2 シリアルインタフェースドライバのその他のサービス
+	8.3 システムログタスク
+		8.3.1 システムログタスクのサービスコール
+		8.3.2 システムログタスクのその他のサービス
+	8.4 カーネル起動メッセージの出力
+９．サポートライブラリ
+	9.1 基本的なライブラリ関数
+	9.2 キュー操作ライブラリ関数
+	9.3 システムログ出力用ライブラリ関数
+	9.4 実行時間分布集計モジュール
+１０．テストプログラム
+	10.1 テストプログラム用ライブラリ
+	10.2 カーネルの整合性検査
+	10.3 機能テストプログラム
+	10.4 性能評価プログラム
+１１．使用上の注意とヒント
+	11.1 タイマドライバの組込み
+	11.2 assertマクロの処理
+	11.3 システムログ機能の扱い
+	11.4 オブジェクトIDの管理
+	11.5 カーネルの内部シンボルのリネーム
+	11.6 トレースログ記録のサンプルコードの使用方法
+	11.7 システムの起動時の初期化処理
+１２．参考情報
+	12.1 利用条件と利用報告
+	12.2 保証・適用性・サポート
+	12.3 バグレポート
+	12.4 ウェブサイト
+	12.5 TOPPERSユーザーズメーリングリスト
+	12.6 TOPPERSプロジェクトのメンバ向けのサービス
+	12.7 TOPPERSプロジェクトへの参加
+１３．リファレンス
+	13.1 サービスコール一覧
+	13.2 静的API一覧
+	13.3 バージョン履歴
+
+
+１．TOPPERS/ASPカーネルの概要
+
+1.1 TOPPERS/ASPカーネルの位置付け
+
+TOPPERS/ASPカーネル（以下，ASPカーネル）は，TOPPERS新世代カーネルの基盤
+となるものとして，TOPPERSプロジェクトにおいて開発したリアルタイムカーネ
+ルである．μITRON4.0仕様のスタンダードプロファイル準拠のリアルタイムカー
+ネルであるTOPPERS/JSPカーネルを拡張・改良する形で開発した．
+
+1.2 TOPPERS/ASPカーネルの仕様
+
+ASPカーネルの仕様の概要については，「TOPPERS/ASPカーネルの仕様概要」を
+参照すること．また，ASPカーネルを含むTOPPERS新世代カーネルの仕様の詳細
+については，別途PDFファイルの形で配布している「TOPPERS新世代カーネル統
+合仕様書」を参照すること．
+
+1.3 マイグレーションガイド
+
+従来のTOPPERSカーネルや他のμITRON4.0仕様準拠のカーネルから，TOPPERS新
+世代カーネルに移行するための方法（またはヒント）を説明した「TOPPERS新世
+代カーネルへのマイグレーションガイド」を，別途PDFファイルの形で配布して
+いる．必要に応じて参照すること．
+
+1.4 機能拡張・チューニングガイド
+
+TOPPERS/ASPカーネルを，機能拡張・チューニングするための方法（またはヒン
+ト）を説明した「機能拡張・チューニングガイド」を用意している．拡張パッ
+ケージの使用方法は，「機能拡張・チューニングガイド」に含まれている．必
+要に応じて参照すること．
+
+1.5 既知の問題
+
+割込みサービスルーチンの先頭番地（ATT_ISRのisr），割込みハンドラの先頭
+番地（DEF_INHのinthdr），CPU例外ハンドラの先頭番地（DEF_EXCのexchdr），
+初期化ルーチンの先頭番地（ATT_INIのinirtn），終了処理ルーチンの先頭番地
+（ATT_TERのterrtn）がプログラムの開始番地として正しくない場合のエラーは，
+コンフィギュレータに検出されない場合がある（ターゲットに依存）．
+
+kernel_cfg.c（およびcfg1_out.c）は，カーネル，システムサービス，アプリ
+ケーションのいずれのインクルードファイルもインクルードし，いずれのシン
+ボルも参照する可能性がある．そのため，カーネル，システムサービス，アプ
+リケーションでシンボル等が衝突している場合や，コンパイルオプションが食
+い違っている場合に，kernel_cfg.c（およびcfg1_out.c）が正しくコンパイル
+できなくなる場合が考えられる．カーネルのシンボルをリネームするなどの方
+法で軽減されてはいるが，問題がなくなっているわけではない．
+
+システムコンフィギュレーションファイルから，コンフィギュレータに対する
+INCLUDEディレクティブにより他のコンフィギュレーションファイルをインクルー
+ドしている場合に，その中に含まれるC言語プリプロセッサのインクルードディ
+レクティブ（#include）で，コンフィギュレーションファイルの置かれている
+ディレクトリが，ファイルを検索するパスにはいらないという問題がある．例
+えば，syssvc/syslog.cfgに「#include "syslog.h"」と記述できないのは，こ
+の問題があるためである．
+
+現時点では，アドレスが64ビットの環境には対応していない．64ビットアドレ
+ス環境をサポートするための最大の課題は，モトローラSレコードフォーマット
+が64ビットアドレスに対応していないことである．
+
+
+２．ターゲット依存部
+
+2.1 ターゲット依存部の概要
+
+ASPカーネルのターゲット非依存部と，各種のターゲットシステムに対応するた
+めのターゲット依存部は，別々に開発されている．そのため，ASPカーネルが対
+応しているすべてのターゲット依存部を，バージョンを整合させてパッケージ
+化することは困難である．そこで，主に初級のユーザを対象にした簡易パッケー
+ジと，上級のユーザやカーネル開発者を対象にした個別パッケージを用意して
+いる．
+
+ASPカーネルを未サポートのターゲットシステムへポーティングするために必要
+な作業は，開発環境の構築と標準の開発環境との差異の吸収，カーネル自身の
+ポーティング，システムサービスのポーティングなどからなる．詳しくは，
+「ターゲット依存部 ポーティングガイド」を参照すること．
+
+2.2 簡易パッケージ
+
+簡易パッケージは，ASPカーネルが対応しているターゲットシステム毎に用意さ
+れ，そのターゲットシステム上でASPカーネルを動作させるために必要なファイ
+ル一式をパッケージ化したものである．簡易パッケージに含まれるファイルは，
+バージョンが整合していることが確認されている．
+
+簡易パッケージのバージョン番号は，パッケージ化した日付とすることを原則
+とするが，ターゲットシステム毎の事情によりこの原則に従わない場合がある．
+
+簡易パッケージは，基本的には，次に説明する個別パッケージを複数まとめた
+ものである．そのため，対象ターゲットシステムに必要のないファイルも含ま
+れている．また，簡易パッケージに含まれている個別パッケージのバージョン
+は，個別パッケージのMANIFESTファイルを参照することで知ることができる．
+
+2.3 個別パッケージ
+
+個別パッケージは，ASPカーネルの開発単位毎に，その開発単位で開発を担当し
+ているファイル一式をパッケージ化したものである．ASPカーネルのターゲット
+非依存部も，一つの個別パッケージとして配布される．ある個別パッケージを
+使用するためには，一般には，他の個別パッケージが必要となる．ターゲット
+依存部の個別パッケージを使用するために必要となる個別パッケージとそのバー
+ジョンについては，ターゲット依存部のユーザーズマニュアルを参照すること．
+使用する個別パッケージのバージョンを整合させることは，ユーザの責任であ
+る．
+
+個別パッケージのバージョン番号は，X.Y.Zの形で表現される．ターゲット非依
+存部のバージョン番号を，ASPカーネル全体のリリース番号とする．ターゲット
+依存部のバージョン番号は，XとYが，それが依存するターゲット非依存部と一
+致している．それに対して，Zは一致しているとは限らない．例えば，ターゲッ
+ト非依存部のバージョン1.1.0に対応するターゲット依存部は，バージョン
+1.1.Zの形となる．ターゲット依存部のみがバージョンアップした場合には，Z
+が変更される．
+
+使用する個別パッケージは，次の例のように，ターゲット非依存部の個別パッ
+ケージを展開したのと同じディレクトリで展開する．
+
+	% tar xvfz asp-1.1.0.tar.gz
+	% tar xvfz asp_arch_arm_gcc_1.1.2.tar.gz
+
+ターゲット非依存部の個別パッケージには，以下のターゲット依存部が含まれ
+ているが，これらは他のターゲットシステムにポーティングする際の参考にす
+るために用意しているものであり，その動作については未検証である．
+
+	target/dve68k_gcc	DVE-68K/40（GNU開発環境）用ターゲット依存部
+	arch/m68k_gcc		M68040（GNU開発環境）用プロセッサ依存部
+	pdic/upd72001		μPD72001用 簡易SIOドライバ
+
+
+３．クイックスタートガイド
+
+ここでは，ターゲット依存部が用意されているターゲットシステム上で，ASPカー
+ネル上で動作するサンプルプログラムを構築・動作させるまでの手順を示す．
+
+3.1 開発環境の準備
+
+ASPカーネルを用いたシステム構築には，以下のツールが必要である．
+
+	ホストシステム用のツール
+		perl		動作確認：5.10.0
+		GNU Make	動作確認：3.81
+
+	TOPPERS新世代カーネル用コンフィギュレータ
+		cfg			動作確認：1.7.0
+					※ 1.5以前のバージョンでは動作しない．
+
+	ターゲットシステム用のツール（クロス開発環境）
+		標準規格に準拠したCコンパイラ
+		アセンブラ，リンカ，ライブラリアン
+		シンボルファイル出力ツール，ヘキサファイル出力ツール
+		標準Cライブラリ（必須ではない）
+
+ターゲットシステム用のツールにGNU開発環境を用いる場合には，以下のツール
+が必要である．
+
+	ターゲットシステム用のGNU開発環境ツール
+		BINUTILS（as，ld，ar，nm，ranlib，objcopy，objdump）
+		GCCまたはGCC-CORE（gccおよびそこから呼び出されるツール）
+		NEWLIB（標準Cライブラリ，必須ではない）
+
+動作確認されているターゲットシステム用のツールについては，ターゲット依
+存部のユーザーズマニュアルを参照すること．
+
+ターゲットシステム用の標準Cライブラリは，アプリケーションが標準Cライブ
+ラリを使用しない場合には，必要ない．ただし，コンパイラが標準Cライブラリ
+関数（memcpy，memsetなど）を呼び出すコードを生成する場合があり，その場
+合には標準Cライブラリが必要である．標準Cライブラリを用意する代わりに，
+生成したコードが呼び出す関数のみを自分で用意してもよい．
+
+以下では，これらのツールが用意できていることを前提に，UNIXマシン上での
+構築手順を説明する．また以下の説明では，makeコマンドがGNU Makeであるも
+のとする（ASPカーネルのサンプルのMakefileは，GNU Makeの拡張機能を用いて
+いる）．
+
+3.2 コンフィギュレータの構築
+
+カーネルを構築する前に，まず，TOPPERS新世代カーネル用コンフィギュレータ
+を構築する必要がある．簡易パッケージに含まれていた場合など，コンフィギュ
+レータを実行ファイル形式で入手した場合には，このステップは必要ない．
+
+コンフィギュレータの構築には，以下のツールが必要である．
+
+	ホストシステム用のツール（セルフ開発環境）
+		C++コンパイラ，C++ライブラリ
+					動作確認（Mac OS X環境）：GNU C++ 4.2.1
+		Boost		動作確認：1.42.0
+		GNU Make	動作確認：3.81
+
+最初に，パッケージにコンフィギュレータのソースファイルが含まれていない
+場合には，コンフィギュレータのパッケージを，ASPカーネルのソースファイル
+を展開したディレクトリの下に展開する．
+
+	% cd asp
+	% tar xvfz cfg-1.6.0.tar.gz
+
+または，コンフィギュレータのパッケージを他のディレクトリに展開し，ASPカー
+ネルのソースファイルを展開したディレクトリからシンボリックリンクをはっ
+てもよい．
+
+ソースファイルが展開できると，cfgディレクトリに移動し，コンフィギュレー
+ションスクリプト（configure）でMakefileの環境依存部（Makefile.config）
+を生成した後，makeコマンドによりコンフィギュレータ（cfgプログラム）が構
+築できる．
+
+	% cd cfg
+	% ./configure
+	% make
+
+ただし，Boostをインストールしたディレクトリおよび名称が標準で想定してい
+るものとは違う場合には，configureの--with-headersおよび--with-libraries
+オプションにより，ヘッダファイルおよびライブラリの置かれたディレクトリ
+を指定する必要がある．
+
+また，ホストシステムによっては，最適化レベルを上げると正しくコンパイル
+できないことが知られている．そのような場合には，最適化レベルを下げるか，
+最適化を抑止するように，Makefileを修正する必要がある．
+
+なお，コンフィギュレータの使用方法については，「７．コンフィギュレータ
+の使い方」の章で説明する．
+
+3.3 サンプルプログラムの構築と実行
+
+次に，ASPカーネル上で動作するサンプルプログラムを構築する方法を説明する．
+
+まず，サンプルプログラムのオブジェクトファイルを置くディレクトリを作成
+し，コンフィギュレーションスクリプトを実行する．例えば，オブジェクトファ
+イルを置くディレクトリを，ASPカーネルのソースファイルを展開したディレ
+クトリの下のOBJという名称のディレクトリにする場合には，次のコマンドを
+実行する（ディレクトリの場所と名称は任意に決めてよい）．
+
+	% cd asp
+	% mkdir OBJ
+	% cd OBJ
+	% perl ../configure -T <ターゲット略称>
+
+ここで，<ターゲット略称>は，targetディレクトリの下に置かれているターゲッ
+ト依存部ディレクトリの名称である．コンフィギュレーションスクリプトのオ
+プションについては，「５．コンフィギュレーションスクリプトの使い方」の
+章で説明する．
+
+コンフィギュレーションスクリプトの実行により，カレントディレクトリには，
+サンプルプログラムを構築するためのMakefile，サンプルプログラム用のコン
+フィギュレーションファイル（sample1.cfg），サンプルプログラム本体
+（sample1.hおよびsample1.c）が生成される．
+
+コンフィギュレーションスクリプトの実行後，必要であればMakefileを修正す
+る．Makefileの修正方法については，「６．Makefileの修正方法」の章で説明
+する．
+
+その後，make dependで依存関係ファイル（Makefile.depend）を生成した後，
+makeコマンドによりサンプルプログラムのロードモジュール（aspまたは
+asp.exe）が生成できる．依存関係ファイルの生成には若干時間がかかる．
+
+	% make depend
+	% make
+
+ここで構築したサンプルプログラム（sample1.h，sample1.c，sample1.cfg）
+は，ASPカーネルの基本的な動作を確認するためのものである．このプログラ
+ムの概要説明は，sample1.cの先頭のコメントにある．
+
+3.4 カーネルを関数単位でライブラリ化する方法
+
+前節の手順では，カーネルをファイル単位でコンパイルし，ライブラリ化して
+いたが，カーネルのコードサイズを縮小するためには，使用しないサービスコー
+ルはリンクしない方が望ましい．そこでASPカーネルでは，カーネルを関数単位
+でコンパイルし，ライブラリ化する方法を用意している．
+
+この方法でサンプルプログラムを構築するには，コンフィギュレーションスク
+リプトに，それを指示するオプション（-f）を付加するだけでよい．
+
+	% mkdir OBJ_LIB
+	% cd OBJ_LIB
+	% perl ../configure -T <ターゲット略称> -f
+
+ここで，OBJ_LIBというディレクトリの場所と名称は，任意に決めてよい．これ
+以降の手順は，前節と同じである．
+
+3.5 アプリケーションとカーネルを別々に構築する方法
+
+前節で説明した方法では，アプリケーションとカーネルを同時に生成するため，
+オブジェクトファイルを置くディレクトリに非常に多くのファイルが作成され
+て，扱いにくくなる．そこで，カーネルを修正する頻度が低い場合には，カー
+ネルは事前に構築しておき，後でアプリケーションだけを構築する方法を用意
+している．以下では，サンプルプログラムを構築を例に，その手順について説
+明する．
+
+まず，カーネルを構築するディレクトリを作成し，コンフィギュレーションス
+クリプトを実行する．例えば，カーネルを構築するディレクトリを，ASPカー
+ネルのソースファイルを展開したディレクトリの下のKERNEL_LIBという名称の
+ディレクトリにする場合には，次のコマンドを実行する（ディレクトリの場所
+と名称は任意に決めてよい）．
+
+	% mkdir KERNEL_LIB
+	% cd KERNEL_LIB
+	% perl ../configure -T <ターゲット略称> -f
+
+これにより，カーネルを構築するディレクトリに，Makefile，sample1.cfg，
+sample1.h，sample1.cが生成されるが，Makefile以外は実質的には使用しない．
+
+make dependで依存関係ファイル（Makefile.depend）を生成した後，make
+libkernel.aによりカーネルライブラリ（libkernel.a）が生成できる．
+
+	% make depend
+	% make libkernel.a
+
+次に，アプリケーションを構築するディレクトリを作成し，コンフィギュレー
+ションスクリプトを実行する．例えば，アプリケーションを構築するディレク
+トリを，ASPカーネルのソースファイルを展開したディレクトリの下のAPLとい
+う名称のディレクトリにする場合には，次のコマンドを実行する（ディレクト
+リの場所と名称は任意に決めてよい）．
+
+	% cd ..
+	% mkdir APL
+	% cd APL
+	% perl ../configure -T <ターゲット略称> -L ../KERNEL_LIB
+
+ここで-Lオプションには，カーネルを構築したディレクトリのパスを指定する．
+
+最後に，make dependで依存関係ファイル（Makefile.depend）を生成した後，
+makeコマンドによりサンプルプログラムのロードモジュール（aspまたは
+asp.exe）が生成できる．
+
+	% make depend
+	% make
+
+この手順では，アプリケーション構築時にはカーネルの再構築が必要かチェッ
+クしないため，カーネルのソースコードを修正した場合には，カーネルを構築
+したディレクトリでmake libkernel.aを再実行する必要がある．
+
+以上では，カーネルとアプリケーションを別々のディレクトリで構築したが，
+-Lオプションにカレントディレクトリ（ただし，"."という記述では不可）を指
+定することで，カーネルとアプリケーションを同じディレクトリで別々に構築
+することもできる．具体的には，次の手順となる．
+
+	% mkdir OBJ
+	% cd OBJ
+	% perl ../configure -T <ターゲット略称> -L ../OBJ
+	% make depend
+	% make libkernel.a
+	% make cleankernel
+	% make
+
+ここで，make cleankernelは，カーネルライブラリを生成するための中間ファ
+イルを削除するものである．この手順では，make dependによりカーネルライ
+ブラリに関する依存関係を生成しないため，カーネルのソースコードを修正し
+た場合には，必ずmake cleankernel（または，make clean）してから，make
+libkernel.aする必要があるので注意すること．
+
+なお，make realcleanすると，make dependとmakeにより生成したファイルをす
+べて削除する．それに対して，make cleanでは，make dependにより生成した依
+存関係ファイルは削除しない．
+
+
+４．ディレクトリ構成・ファイル構成
+
+4.1 配布パッケージのディレクトリ構成
+
+	include/		アプリケーション向けヘッダファイル
+	kernel/			カーネルソースファイル
+	syssvc/			システムサービスヘッダファイル，ソースファイル
+	library/		サポートライブラリソースファイル
+	target/			ターゲット依存部
+	arch/			ターゲット依存部の共通部分
+		gcc/		GCC開発環境依存部
+		logtrace/	トレースログ記録のサンプルコード
+	pdic/			PDIC（デバイスドライバのOS非依存部分）
+	utils/			ユーティリティプログラム
+	sample/			サンプルプログラムとMakefile
+	doc/			ドキュメント
+	test/			テストプログラム
+	extension/		拡張パッケージ
+
+4.2 ターゲット非依存部のファイル構成
+
+ターゲット非依存部（テストプログラムと拡張パッケージは除く）の各ファイ
+ルの概要は次の通り．
+
+	README.txt			TOPPERS/ASPカーネルの簡単な紹介
+	configure			コンフィギュレーションスクリプト（GNU開発環境用）
+	MANIFEST			個別パッケージのファイルリスト
+
+	include/
+		kernel.h		ASPカーネルを使用するための定義
+		sil.h			システムインタフェースレイヤを使用するための定義
+		t_stddef.h		TOPPERS共通ヘッダファイル
+		itron.h			ITRON仕様共通規定のデータ型・定数・マクロ
+		t_syslog.h		システムログ出力を行うための定義
+		t_stdlib.h		基本的なライブラリ関数を使用するための定義
+		queue.h			キュー操作ライブラリを使用するための定義
+		test_lib.h		テストプログラム用ライブラリを使用するための定義
+		histogram.h		実行時間分布集計モジュールを使用するための定義
+		log_output.h	システムログのフォーマット出力を使用するための定義
+
+	kernel/
+		Makefile.kernel		カーネルのファイル構成の定義
+		kernel_impl.h		カーネル実装用標準ヘッダファイル
+		kernel_int.h		kernel_cfg.c用のヘッダファイル
+		kernel_rename.def	カーネルの内部識別名のリネーム定義
+		kernel_rename.h		カーネルの内部識別名のリネーム
+		kernel_unrename.h	カーネルの内部識別名のリネーム解除	
+		kernel_api.csv		コンフィギュレータの静的APIテーブル
+		kernel_def.csv		コンフィギュレータの値取得シンボルテーブル
+		kernel.tf			コンフィギュレータのパス2のテンプレートファイル
+		kernel_check.tf		コンフィギュレータのパス3のテンプレートファイル
+		genoffset.tf		オフセットファイル生成用のテンプレートファイル
+		allfunc.h		すべての関数をコンパイルするための定義
+		check.h			エラーチェック用マクロ
+		startup.c		カーネルの初期化と終了処理
+		task.h			タスク操作ルーチン関連の定義
+		task.c			タスク操作ルーチン
+		wait.h			待ち状態操作ルーチン関連の定義
+		wait.c			待ち状態操作ルーチン
+		time_event.h	タイムイベント管理関連の定義
+		time_event.c	タイムイベント管理
+		task_manage.c	タスク管理機能
+		task_refer.c	タスク状態参照機能
+		task_sync.c		タスク付属同期機能
+		task_except.c	タスク例外処理機能
+		semaphore.h		セマフォ機能関連の定義
+		semaphore.c		セマフォ機能
+		eventflag.h		イベントフラグ機能関連の定義
+		eventflag.c		イベントフラグ機能
+		dataqueue.h		データキュー機能関連の定義
+		dataqueue.c		データキュー機能
+		pridataq.h		優先度データキュー機能関連の定義
+		pridataq.c		優先度データキュー機能
+		mailbox.h		メールボックス機能関連の定義
+		mailbox.c		メールボックス機能
+		mempfix.h		固定長メモリプール機能関連の定義
+		mempfix.c		固定長メモリプール機能
+		time_manage.c	システム時刻管理機能
+		cyclic.h		周期ハンドラ機能関連の定義
+		cyclic.c		周期ハンドラ機能
+		alarm.h			アラームハンドラ機能関連の定義
+		alarm.c			アラームハンドラ機能
+		sys_manage.c	システム状態管理機能
+		interrupt.h		割込み管理機能関連の定義
+		interrupt.c		割込み管理機能
+		exception.h		CPU例外管理機能関連の定義
+		exception.c		CPU例外管理機能
+
+	syssvc/
+		banner.h		カーネル起動メッセージの出力のための定義
+		banner.c		カーネル起動メッセージの出力
+		banner.cfg		カーネル起動メッセージの出力のコンフィギュレー
+						ションファイル
+		logtask.h		システムログタスクを使用するための定義
+		logtask.c		システムログタスク
+		logtask.cfg		システムログタスクのコンフィギュレーションファイル
+		serial.h		シリアルインタフェースドライバを使用するための定義
+		serial.c		シリアルインタフェースドライバ
+		serial.cfg		シリアルドライバのコンフィギュレーションファイル
+		syslog.h		システムログ機能を使用するための定義
+		syslog.c		システムログ機能
+		syslog.cfg		システムログ機能のコンフィギュレーションファイル
+		vasyslog.c		可変数引数のシステムログライブラリ
+
+	library/
+		histogram.c		実行時間分布集計モジュール
+		log_output.c	システムログのフォーマット出力
+		strerror.c		エラーメッセージ文字列を返す関数
+		t_perror.c		エラーメッセージの出力
+		test_lib.c		テストプログラム用ライブラリ
+
+	arch/gcc/
+		MANIFEST		個別パッケージのファイルリスト
+		tool_stddef.h	t_stddef.hの開発環境依存部（GCC用）
+
+	arch/logtrace/
+		MANIFEST		個別パッケージのファイルリスト
+		trace_config.h	トレースログに関する設定
+		trace_config.c	トレースログ機能
+		trace_dump.c	トレースログのダンプ
+
+	utils/
+		applyrename		ファイルにリネームを適用
+		genoffset		offset.hの生成（GNU開発環境用）
+		genrename		リネームヘッダファイルの生成
+		gentest			テストプログラムの生成
+		makedep			依存関係リストの生成（GNU開発環境用）
+		makerelease		リリースパッケージの生成
+
+	sample/
+		Makefile		サンプルのMakefile（GNU開発環境用）
+		sample1.h		サンプルプログラム(1)に関する定義
+		sample1.c		サンプルプログラム(1)
+		sample1.cfg		サンプルプログラム(1)のコンフィギュレーションファイル
+
+	doc/
+		user.txt			ユーザーズマニュアル
+		asp_spec.txt		TOPPERS/ASPカーネルの仕様概要
+		extension.txt		機能拡張・チューニングガイド
+		porting.txt			ターゲット依存部 ポーティングガイド
+		configurator.txt	コンフィギュレータ仕様
+		design.txt			設計メモ
+		version.txt			変更履歴
+
+
+５．コンフィギュレーションスクリプトの使い方
+
+コンフィギュレーションスクリプト（configure）は，ASPカーネルおよびアプ
+リケーションプログラムを構築するために必要な基本的なコンフィギュレーショ
+ンを行うためのプログラムである．
+
+ASPカーネルを用いてアプリケーションを作成する場合には，まずオブジェクト
+ファイルを置くディレクトリを作成し，そのディレクトリでコンフィギュレー
+ションスクリプトを実行する．オブジェクトファイルを置くディレクトリの場
+所と名称は，任意に決めてよい．
+
+コンフィギュレーションスクリプトに対するオプションは次の通り．
+
+	-T <ターゲット略称>
+		ターゲットシステムの名称を，targetディレクトリの下に置かれてい
+		るターゲット依存部ディレクトリの名称で指定する（必須）．
+
+	-A <アプリケーションプログラム名>
+		アプリケーションプログラムの名称を指定する．省略した場合には，
+		サンプルプログラム（sample1）となる．
+
+	-a <アプリケーションのディレクトリ名>
+		アプリケーションプログラムのソースファイル（システムコンフィギュ
+		レーションファイルを除く）を置いたディレクトリ名を指定する．省
+		略した場合には，オブジェクトファイルを置くディレクトリに置かれ
+		ていることを仮定する．システムコンフィギュレーションファイルは，
+		オブジェクトファイルを置くディレクトリに置くこと．
+
+	-U <オブジェクトファイル名>
+		アプリケーションプログラムのメインのオブジェクトファイル（-A 
+		で指定したアプリケーションプログラム名に".o"を付加したもの）以
+		外に，リンクすべきオブジェクトファイルの名称を，".o"を付加した
+		形で指定する．""で囲むことによって，複数のファイルを指定するこ
+		とも可能である（-Uオプションを複数使ってはならない）．
+
+	-L <カーネルライブラリのディレクトリ名>
+		事前に構築したカーネルライブラリ（libkernel.a）を用いて，アプリ
+		ケーションのみを構築する場合には，このオプションにカーネルライ
+		ブラリの置かれたディレクトリ名を指定する．このオプションの使用
+		例については，「3.5 アプリケーションとカーネルを別々に構築する
+		方法」の節を参照すること．
+
+	-f
+		カーネルを関数単位でコンパイルしライブラリ化する場合に，このオ
+		プションを指定する．このオプションの使用例については，「3.4 カー
+		ネルを関数単位でライブラリ化する方法」の節を参照すること．
+
+	-D <ASPカーネルのソースディレクトリ名>
+		ASPカーネルのソースファイルを置いたディレクトリ名を指定する．省
+		略した場合には，configureの置かれているディレクトリとなる．
+
+	-l <プログラミング言語>
+		アプリケーションプログラムのプログラミング言語を指定する．現時
+		点では，cとc++のみをサポートしている．
+
+	-t <テンプレートディレクトリ名>
+		Makefileやサンプルプログラムのテンプレートの置かれたディレクト
+		リ名を指定する．省略した場合には，ASPカーネルのソースファイルを
+		置いたディレクトリの下のsampleディレクトリとなる．
+
+	-m <テンプレートMakefile名>
+		Makefileのテンプレートとするファイル名を指定する．省略した場合
+		には，Makefileとなる．
+
+	-d <実行環境名>
+		ターゲットシステム上でのプログラムの実行環境（ないしは，デバッ
+		グ環境）の名称を指定する．このオプションを指定すると，実行環境
+		を指定するシンボル（TOPPERS_<デバッグ環境名>）がマクロ定義され
+		る．省略した場合には，実行環境を指定するシンボルはマクロ定義さ
+		れない．
+
+	-r
+		トレースログ記録のサンプルコードを有効にする場合に，このオプショ
+		ンを指定する．このオプションの使用例については，「11.6 トレース
+		ログ記録のサンプルコードの使用方法」の節を参照すること．
+
+	-p <perlのパス名>
+		perlのパス名を指定する．省略した場合には，/usr/local/binと
+		/usr/binを探索し，perlのパス名を決定する．
+
+	-g <コンフィギュレータのパス名>
+		コンフィギュレータ（cfg）のパス名を指定する．省略した場合には，
+		デフォルトのパス名（ASPカーネルのソースディレクトリの下の
+		cfg/cfg/cfg）となる．
+
+コンフィギュレーションスクリプトが行う処理は次の通りである．
+
+(1) Makefileの生成
+
+テンプレートディレクトリ（デフォルトでは，sample）から適切なMakefileを
+選択し，必要な箇所を書き換えて，Makefileを生成する．
+
+(2) サンプルプログラムの生成
+
+指定したアプリケーションプログラムがテンプレートディレクトリにある場合，
+適切なアプリケーションプログラムのソースファイルを選択し，必要な箇所を
+書き換えて，アプリケーションプログラムのソースファイル（例えば，
+sample1.h，sample1.c，sample1.cfg）を生成する．
+
+(3) コンフィギュレータが用意できているかのチェック
+
+コンフィギュレータ（cfg）の実行ファイルがあるかチェックし，ファイルがな
+い場合には，その旨を出力する．
+
+
+６．Makefileの修正方法
+
+前の章で説明したように，コンフィギュレーションスクリプトに与えるオプショ
+ン等からMakefileが生成されるが，コンフィギュレーションスクリプトで対応
+できない場合には，Makefileを直接修正する必要がある．ここでは，Makefile
+の中で，修正が必要となる可能性の高い箇所について説明する．
+
+なお，Makefileを修正した後にコンフィギュレーションスクリプトを再実行す
+ると，修正したMakefileが上書きされてしまうので注意すること（古いものが
+Makefile.bakに保存される）．
+
+6.1 Makefileの変数定義
+
+(A) ターゲット略称
+
+TARGETには，ターゲットシステムの名称を，targetディレクトリの下に置かれ
+ているターゲット依存部ディレクトリの名称で指定する．この定義は，通常は，
+コンフィギュレーションスクリプトに対する-Tオプションにより行う．
+
+(B) オブジェクトファイルの拡張子
+
+Cygwin環境でコンパイルする時には，OBJEXTを"exe"に定義する必要がある．こ
+れは，Cygwin環境では，ロードモジュールのファイル名に拡張子".exe"が付加
+されるのに対応するためのものである．Cygwin環境であることを判定できれば，
+コンフィギュレーションスクリプトがこの定義を行う．
+
+(C) 実行環境（ターゲット依存）
+
+ターゲットによっては，実行環境に対応してターゲット依存部のコードを差し
+換える場合がある．これを可能にするために，実行環境の名称をDBGENVに定義
+している．この定義は，通常は，コンフィギュレーションスクリプトに対す
+る-Dオプションにより行う．どのターゲットがどの実行環境に対応しているか
+は，ターゲット依存部のユーザーズマニュアルを参照すること．
+
+(D) カーネルライブラリのディレクトリ名
+
+KERNEL_LIBには，カーネルライブラリの置かれたディレクトリ名を定義する．
+この定義は，通常は，コンフィギュレーションスクリプトに対する-Lオプショ
+ンにより行う．
+
+(E) カーネルを関数単位でコンパイルするかどうか
+
+KERNEL_FUNCOBJSは，カーネルを関数単位でコンパイルする場合にはtrueに定義
+し，ファイル単位でコンパイルする場合には未定義とする．この定義は，通常
+は，コンフィギュレーションスクリプトに対する-fオプションにより行う．
+
+(F) 共通コンパイルオプション
+
+すべてのプログラムに共通するコンパイルオプションの追加が必要な場合には，
+下の変数の定義を変更する．そのコンパイルオプションが，特定のターゲット
+で常に必要な場合には，ターゲット依存の定義を入れたMakefile.target等を修
+正すべきである．
+
+	CDEFS		コンパイラに対する-Dオプションを記述する．
+	INCLUDES	コンパイラに対する-Iオプションを記述する．
+	COPTS		コンパイラに対するその他のオプションを記述する．
+	LDFLAGS		リンカに対するオプションを記述する．
+	LIBS		ライブラリリンクのためのオプションを記述する．
+
+追加の可能性のあるコンパイルオプションについては，「6.2 コンパイルオプ
+ション」の節を参照のこと．
+
+(G) アプリケーションプログラム名
+
+APPLNAMEには，アプリケーションプログラム名を定義する．システムコンフィ
+ギュレーションファイル名は，APPLNAMEに定義した名前に拡張子".cfg"を付加
+した名前とする．また，アプリケーションのメインファイルは，APPLNAMEに定
+義した名前に拡張子".c"を付加した名前とする．この定義は，通常は，コンフィ
+ギュレーションスクリプトに対する-Aオプションにより行う．
+
+(H) アプリケーションのディレクトリ名
+
+アプリケーションのソースファイルを，オブジェクトファイルを置くのとは別
+のディレクトリに置く場合には，APPLDIRにそのディレクトリ名を定義する．こ
+の定義は，通常は，コンフィギュレーションスクリプトに対する-aオプション
+により行う．アプリケーションのソースファイルを置くディレクトリが複数あ
+る場合には，APPL_DIRの定義を変更することで対応する．
+
+(I) アプリケーションのプログラムファイル名
+
+アプリケーションが複数のソースファイルで構成される場合には，そのオブジェ
+クトファイル名を，APPL_ASMOBJS，APPL_COBJS，APPL_CXXOBJSに列挙する．
+
+(J) アプリケーションのコンパイルオプション
+
+アプリケーションのコンパイルに必要なコンパイルオプションや，アプリケー
+ションがライブラリを必要とする場合には，APPL_CFLAGSおよびAPPL_LIBSに定
+義する．
+
+(K) ロードモジュールのファイル名
+
+標準のロードモジュールのファイル名をOBJNAMEに定義する．デフォルトはasp
+である．
+
+(L) ターゲットファイルの定義
+
+ターゲット"all"の依存ファイルとして，ロードモジュールの形式を指定する．
+具体的には，ELF形式の時は$(OBJFILE)，バイナリ形式の時は$(OBJNAME).bin，
+モトローラ S形式の時は$(OBJNAME).srecを指定する．$(OBJFILE)は，Cygwin
+環境でOBJEXTを"exe"に定義した時には$(OBJNAME).exe，そうでない場合には
+$(OBJNAME)となる．
+
+(M) makedepのオプションの定義
+
+Cygwin環境でルートディレクトリが"cygdrive"でない場合には，makedepの-Rオ
+プションでルートディレクトリ名を与える必要がある．また，Makefileのター
+ゲット部（":"の左側）に複数のファイル名を記述すると（カーネルを関数単位
+でライブラリ化する場合に，このような記述が生成される）正しく動作しない
+場合には（Cygwin環境のGNU Makeでこのような制限があるという報告がある），
+makedepに-Sオプションを付与する必要がある．
+
+makedepのオプションは，次の例のように，MAKEDEP_OPTSに定義する．
+
+MAKEDEP_OPTS = -R cygdrive -S
+
+6.2 コンパイルオプション
+
+ASPカーネルのコード中には，assertマクロが使われている．assertマクロは，
+NDEBUGを定義することで，オブジェクトコード中から消すことができる．カー
+ネルのデバッグが終了すれば，-DNDEBUGを指定してコンパイルした方が効率が
+よくなる．
+
+ターゲット依存部において，コンパイルオプションに-Werror（警告をエラー扱
+いする）を指定している場合がある．そのようなターゲットにおいて，アプリ
+ケーションで警告が避けられない場合には，ターゲット依存部を修正してコン
+パイルオプションを削除する必要がある．
+
+また，TOPPERS_OMIT_SYSLOGを定義してコンパイルすることで，システムログ出
+力を抑止することができる．
+
+
+７．コンフィギュレータの使い方
+
+コンフィギュレータ（cfg）は，TOPPERS新世代カーネル統合仕様書の2.12.5節
+の記述の通り，3つのパスで構成される．
+
+コンフィギュレータは，システムコンフィギュレーションファイル名をパラメー
+タに取り，以下のオプションを持つ（重要なもののみ）．
+
+	--help
+		オプションのリストと説明を表示する．
+
+	-v［--version］
+		コンフィギュレータのバージョンを表示する．
+
+	-k［--kernel］<カーネル名>
+		カーネルの名称を指定する．デフォルトはasp．
+
+	-p［--pass］<パス番号>
+		パス番号を指定する．1〜3のいずれか．
+
+	-I［--include-path］<インクルードパス名>
+		INCLUDEディレクティブにおいて，インクルードするコンフィギュレー
+		ションファイルを探すパス名を指定する．
+
+	-T［--template-file］<テンプレートファイル名>
+		テンプレートファイルの名称を指定する．パス2とパス3で有効．
+
+	--api-table <静的APIテーブルファイル名>
+		静的APIテーブルのファイル名を指定する．
+
+	--cfg1-def-table <値取得シンボルテーブルファイル名>
+		値取得シンボルテーブルのファイル名を指定する．
+
+	-r［--rom-image］<ロードモジュール名>
+		ロードモジュールをSレコードフォーマットの形に変換したファイルの
+		名称を指定する．パス3でのみ有効．
+
+	-s [--symbol-table] <シンボルファイル名>
+		ロードモジュール中の各シンボルとアドレスの対応表を含むシンボル
+		ファイルの名称を指定する．パス3でのみ有効．
+
+	--id-output-file <ID番号出力ファイル名>
+		オブジェクトのID番号の割付け結果を，指定した名前のファイルに書
+		き出す．パス2でのみ有効．
+
+	--id-input-file <ID番号入力ファイル名>
+		オブジェクトのID番号の割付けを，指定した名前のファイルから取り
+		込む．パス2でのみ有効．
+
+	--external-id
+		オブジェクトのID番号を保持する変数の定義を生成する．パス2でのみ
+		有効．
+
+	-M［--print-dependencies］<ターゲットシンボル>
+		システムコンフィギュレーションファイルの依存関係を出力する．
+		Makefile中の依存関係を生成する際に用いる．
+
+コンフィギュレータの詳細仕様については，別途PDFファイルの形で配布してい
+る「TOPPERS新世代カーネル用コンフィギュレータ仕様」を参照すること．
+
+
+８．システムサービス
+
+8.1 システムログ機能
+
+システムログ機能は，カーネル内で発生した異常事象やカーネルのトレースロ
+グ，システムサービスやアプリケーションで発生した異常事象やトレースログ
+を，ログ情報として記録するための機能である．また，記録したログ情報を取
+り出す機能も持つ．
+
+システムログ機能は，システムコンフィギュレーションファイルでsyslog.cfg
+をインクルードすることで，システムに組み込むことができる．システムログ
+出力を行うソースファイルでは，t_syslog.hをインクルードする．また，シス
+テムログ機能のその他のサービスコールを呼び出すソースファイルでは，
+syslog.hをインクルードする．
+
+8.1.1 システムログ機能の位置付け
+
+システムログ機能は，カーネル内からも呼び出すことができるため，カーネル
+より下の階層のモジュールと位置付けることができる．この意味では，他のシ
+ステムサービスとは位置付けが異なる．
+
+一方，ログ情報をシステム外部に出力するためには，シリアルインタフェース
+ドライバなど，カーネル上で動作するシステムサービスを用いる必要がある．
+そこで，ログ情報をシステム外部に出力するためのサービス（これを，システ
+ムログタスクと呼ぶ）は，システムログ機能とは分離して実装することとし，
+システムログ機能はログ情報の記録・取出しのための機能に絞っている．
+
+以上のように，システムログ機能はカーネルより下の階層のモジュールである
+が，システムログ機能の中でログ時刻を取り出すために，カーネルの機能を必
+要とする．実装上は，カーネルの内部変数を直接参照している．そのため，カー
+ネルの実行開始前や終了後は，ログ時刻は正しく記録されない．
+
+8.1.2 ログバッファへの記録と低レベル出力
+
+上述したように，ログ情報をシステムの外部に出力するためには，カーネル上
+で動作するシステムサービスを用いる必要があるため，カーネルの動作を継続
+できないような重大な異常事象が起こった場合には，ログ情報を出力できなく
+なる．また，これらのシステムサービス自身をデバッグする場合にも，ログ情
+報の出力ができない．
+
+そこで，カーネル上で動作するシステムサービスが使えない場合にでもログ情
+報を出力するために，低レベル出力機能を用意する．低レベル出力機能は，ター
+ゲット依存に用意する低レベルの文字出力関数（target_fput_log）を用いてロ
+グ情報を出力する機能である．低レベルの文字出力関数は，ターゲット依存部
+で用意することとしているが，最終製品に組み込まれる場合などでは，文字を
+出力する方法がない状況も考えられる．そのような場合，低レベルの文字出力
+関数に送られた文字は，メモリ上に残しておくか，捨ててしまうしかない．
+
+ログ情報を，ログバッファへ記録するか低レベル出力機能を用いて出力するか
+の設定は，システムログ機能のサービスコール（syslog_msk_log）によって行
+うことができる．syslog_msk_logの使い方については後述する．デフォルトで
+は（システムログタスクを動作させず，syslog_msk_logも呼び出さない場合），
+すべてのログ情報を低レベル出力機能を用いて出力し，ログバッファには記録
+しない．
+
+低レベル出力機能を用いると，ログメッセージの作成処理（printf相当の処理）
+と低レベルの文字出力処理をカーネル内で行うために，カーネルの応答性が悪
+くなることに注意しなければならない．特に，低レベルの文字出力処理はデバ
+イスをポーリングする形で実装するのが通常で，その場合には，カーネルの応
+答性は実用的と言えない程に悪くなる．
+
+8.1.3 ログ情報の種別
+
+システムログ機能は，ログ情報に以下の種別を設けている．
+
+		LOG_TYPE_COMMENT	コメント
+		LOG_TYPE_ASSERT		アサーションの失敗
+		LOG_TYPE_INH		割込みハンドラ
+		LOG_TYPE_ISR		割込みサービスルーチン
+		LOG_TYPE_CYC		周期ハンドラ
+		LOG_TYPE_ALM		アラームハンドラ
+		LOG_TYPE_OVR		オーバランハンドラ
+		LOG_TYPE_EXC		CPU例外ハンドラ
+		LOG_TYPE_TEX		タスク例外処理ルーチン
+		LOG_TYPE_TSKSTAT	タスク状態変化
+		LOG_TYPE_DSP		ディスパッチャ
+		LOG_TYPE_SVC		サービスコール
+
+ログ情報の種別の中で，LOG_TYPE_COMMENTとLOG_TYPE_ASSERT以外は，カーネル
+のトレースログに用いるためのものであるが，使用するかどうかはターゲット
+依存部に任されている．
+
+8.1.4 ログ情報の重要度
+
+システムログ機能は，ログ情報を出力する際に指定する重要度に基づいて，実
+際に出力するログ情報を動的に設定することができる．これは，UNIXのシステ
+ムログ機能をまねたもので，ログの重要度の種類や指定方法もUNIXのAPIを参考
+にしている．また，低レベル出力機能を用いて出力するログ情報も，重要度に
+基づいて動的に設定することができる．
+
+具体的には，ログの重要度として次の8段階を用意している．
+
+		LOG_EMERG		カーネルの動作を継続できないエラー
+		LOG_ALERT
+		LOG_CRIT
+		LOG_ERROR		重要性の低いシステムエラー
+		LOG_WARNING		警告メッセージ．システムは安全に継続動作できる
+		LOG_NOTICE
+		LOG_INFO
+		LOG_DEBUG		デバッグのためのメッセージ
+
+どの重要度のログ情報をログバッファに記録するかと，どの重要度のログ情報
+を低レベル出力機能を用いて出力するかは，システムログ機能のサービスコー
+ル（syslog_msk_log）によって設定することができる．
+
+8.1.5 ログ情報のデータ構造
+
+ログ情報を格納するためのデータ型として，SYSLOG構造体を用意している．
+SYSLOG構造体には，ログ情報の種別（logtypeフィールド），ログ時刻
+（logtimフィールド），その他のログ情報（loginfoフィールド）が含まれる．
+
+SYSLOG構造体に格納されたログ情報を出力する場合には，ログ時刻は出力関数
+（syslog_wri_log）によって書き込まれるため，出力関数を呼ぶ側で書き込む
+必要はない．
+
+8.1.6 システムログ機能のサービスコール
+
+システムログ機能の提供するサービスコールは次の通りである．これらのサー
+ビスコールを呼び出すソースファイルでは，syslog.hをインクルードする必要
+がある．
+
+(1) ER syslog_wri_log(uint_t prio, const SYSLOG *p_syslog)
+
+システムログ機能に，p_syslogで指定されるログ情報を，prioで指定される重
+要度で出力する（ログバッファへ記録するか低レベル出力機能を用いて出力す
+る）．
+
+プロトタイプ宣言において，*p_syslogにconst指定がされているが，実際には，
+この関数の中で，*p_syslogのlogtimフィールドにシステム時刻を書き込んでい
+る．
+
+(2) ER_UINT syslog_rea_log(SYSLOG *p_syslog)
+
+ログバッファからログ情報を1つ取り出す．ログバッファが空の時はE_OBJ，そ
+うでない場合は，ログバッファのオーバフローにより失われたログ情報の数
+（ログ情報が失われていない場合は0）を返す．システムログタスクが用いるこ
+とを想定している．
+
+(3) ER syslog_msk_log(uint_t logmask, uint_t lowmask)
+
+ログバッファに記録すべきログ情報の重要度の示すビットマップ（logmask）と，
+低レベル出力機能を用いて出力すべきログ情報の重要度を示すビットマップ
+（lowmask）を設定する．ビットマップを作るためのマクロとして，LOG_MASKと
+LOG_UPTOを用意している．
+
+(4) ER_UINT syslog_ref_log(T_SYSLOG_RLOG *pk_rlog)
+
+システムログ機能の状態を参照する．具体的には，ログバッファに記録されて
+いるログ情報の数（T_SYSLOG_RLOG構造体のcountフィールド），ログバッファ
+のオーバフローにより失われたログ情報の数（lostフィールド），ログバッファ
+に記録すべきログ情報の重要度の示すビットマップ（logmaskフィールド），低
+レベル出力機能を用いて出力すべきログ情報の重要度を示すビットマップ
+（lowmaskフィールド）を参照することができる．
+
+8.1.7 システムログ機能のためのライブラリ関数とマクロ
+
+システムログ出力のためのライブラリ関数とマクロは次の通りである．これら
+だけを呼び出すソースファイルでは，t_syslog.hをインクルードすればよい．
+
+(1) void _syslog_n(uint_t prio, uint_t type, intptr_t arg1, ..., intptr_t argn)
+    ※ nは0〜6のいずれか．
+
+ログ種別がtype，パラメータがarg1〜argnのログ情報を，重要度prioで出力す
+るための関数．
+
+(2) void syslog_n(uint_t prio, const char *format, arg1, ..., argn)
+    ※ nは0〜5のいずれか．
+
+format文字列およびそれに続く引数から作成されるメッセージを，ログ種別が
+LOG_TYPE_COMMENTのログ情報として，重要度prioで出力するためのマクロ．
+
+formatはメッセージのフォーマット記述，arg1〜argnはフォーマット記述中で
+参照される値で，printfのフォーマット記述のサブセットとなっている．arg1〜
+argnは，このマクロ中でintptr_t型にキャストされるため，intptr_t型に型変
+換できる任意の型を渡すことができ，型チェックはされない．formatおよび
+arg1〜argnには，次の制限がある．
+
+・formatのフォーマット記述は，定数文字列を渡すことを想定しており，この
+マクロ処理を終えた後も変化してはならない．
+
+・format中に使えるフォーマット指定は次の通り．
+
+	%d		引数をint_t型とみなし，10進数で表示
+	%u		引数をuint_t型とみなし，10進数で表示
+	%x		引数をuint_t型とみなし，16進数（英文字は小文字）で表示
+	%X		引数をuint_t型とみなし，16進数（英文字は大文字）で表示
+	%p		引数をポインタとみなし，16進数（英文字は小文字）で表示
+	%c		引数を文字コードとみなし，文字を表示
+	%s		引数を文字列を示すポインタとみなし，文字列を表示
+	%%		'%'を表示（引数は取らない）
+
+%d, %u, %x, %Xにおいては，'%'の直後に表示桁数を指定する10進数値を記述す
+ることができる．その場合，表示すべき文字列が指定した桁数に満たない場合
+には，指定した桁数内に右詰めで表示する．10進数値が'0'で始まる場合には，
+その間に'0'を埋める．
+
+また，intptr_t型のサイズがlong型のサイズ以上である環境においては，次の
+フォーマット指定も使用することができる．この他のフォーマット指定に'l'
+を付加した場合には無視する（%lcと%lsには対応していない）．
+
+	%ld		引数をlong_t型とみなし，10進数で表示
+	%lu		引数をulong_t型とみなし，10進数で表示
+	%lx		引数をulong_t型とみなし，16進数（英文字は小文字）で表示
+	%lX		引数をulong_t型とみなし，16進数（英文字は大文字）で表示
+
+・arg1〜argnにポインタを渡す場合（%sに対応する引数の場合）に，ポインタ
+の指すデータは，このマクロ処理を終えた後も変化してはならない．定数文字
+列を渡すことを想定している．
+
+(3) void syslog(uint_t prio, const char *format, ...)
+
+format文字列およびそれに続く引数から作成されるメッセージを，ログ種別が
+LOG_TYPE_COMMENTのログ情報として，重要度prioで出力するための関数で，引
+数の数を可変にしたもの．formatに続く引数は最大5個まで．formatおよびそれ
+に続く引数には，syslog_nと同様の制限がある．
+
+このライブラリ関数は，可変数引数を処理するために内部で文字列をスキャン
+する．そのため，実行時間が長くなる可能性があり，割込み禁止状態で呼び出
+すべきではない．主にアプリケーションプログラムが用いることを想定してい
+る．
+
+(4) UINT LOG_MASK(UINT prio)
+
+重要度prioのみセットされたビットマップを作るマクロ．syslog_msk_logに渡
+す引数を作るために用いる．
+
+(5) UINT LOG_UPTO(UINT prio)
+
+重要度prio以上の重要度がすべてセットされたビットマップを作るマクロ．
+syslog_msk_logに渡す引数を作るために用いる．
+
+8.1.8 システムログ機能のその他のサービス
+
+システムログ機能は，前記のサービスコール等に加えて，初期化処理のための
+関数を持つ．
+
+(1) void syslog_initialize(intptr_t exinf)
+
+システムログ機能を初期化する．ログバッファにログ情報が記録されている場
+合には，消去される．syslog.cfgによって，カーネルに初期化ルーチンとして
+登録される．exinfは無視される．
+
+8.2 シリアルインタフェースドライバ
+
+シリアルインタフェースドライバは，シリアルポートを扱うためのドライバで
+ある．
+
+シリアルインタフェースドライバは，システムコンフィギュレーションファイ
+ルでserial.cfgをインクルードすることで，システムに組み込むことができる．
+シリアルインタフェースドライバを呼び出すソースファイルでは，serial.hを
+インクルードする．
+
+シリアルインタフェースドライバは，ポート毎にセマフォを2個ずつ使用する．
+セマフォを生成する静的APIは，serial.cfgに含まれている．
+
+8.2.1 シリアルインタフェースドライバのサービスコール
+
+シリアルインタフェースドライバを呼び出すサービスコールの仕様は次の通り
+である．この中で，シリアルポートのID番号（portid）の解釈はターゲット依
+存となる．
+
+これらのサービスコールは，非タスクコンテキストから呼び出すことはできな
+い．また，serial_rea_datとserial_wri_datは，ディスパッチ保留状態で呼び
+出すことはできない．いずれも，呼び出した場合にはE_CTXエラーとなる．
+
+(1) ER serial_opn_por(ID portid)
+
+portidで指定されたシリアルポートをオープンし，受信／送信が可能な状態に
+する．
+
+(2) ER serial_cls_por(ID portid)
+
+portidで指定されたシリアルポートをクローズする．
+
+(3) ER_UINT serial_rea_dat(ID portid, char_t *buf, uint_t len)
+
+portidで指定されたシリアルポートから，lenバイトの文字列を受信し，bufか
+らの領域に入れる．lenバイト受信するまで，待ち状態となる．受信した文字数
+またはエラーコードを返す．
+
+(4) ER_UINT serial_wri_dat(ID portid, const char_t *buf, uint_t len)
+
+portidで指定されたシリアルポートに，bufからのlenバイトの文字列を送信す
+る．lenバイト送信バッファに入れるまで，待ち状態となる．送信した文字数ま
+たはエラーコードを返す．
+
+(5) ER serial_ctl_por(ID portid, uint_t ioctl)
+
+portidで指定されたシリアルポートの制御情報を，ioctlで示される値に設定す
+る．
+
+ioctlには，以下の制御情報を表す定数を，ビット毎に論理和をとったものを
+指定する．
+
+	IOCTL_ECHO（エコーバックモード）
+		このビットを設定すると，シリアルインタフェースドライバがエコー
+		バックを行う．具体的には，バッファから文字を取り出す度に，その
+		文字を書き出す．
+
+	IOCTL_CRLF（改行モード）
+		LF（line feed）を書き出すと，CR（carriage return）＋LFに変換し
+		て書き出す．
+
+	IOCTL_FCSND（送信フロー制御）
+		文字を送信する処理に対して，XON/XOFFによるフロー制御を行う．
+		すなわち，STOP（コントロール-S）を受信すると送信を停止し，
+		START（コントロール-Q）を受信すると送信を再開する．
+
+	IOCTL_FCANY（送信フロー制御で任意の文字で送信再開）
+		IOCTL_FCSNDを指定している時に，送信停止中に受信した任意の文字
+		で送信を再開する．
+
+	IOCTL_FCRCV（受信フロー制御）
+		文字を受信する処理に対して，XON/XOFFによるフロー制御を行う．
+		すなわち，受信バッファの残り領域が少なくなるとSTOP（コントロー
+		ル-S）を送出し，残り領域が増えればSTART（コントロール-Q）を送
+		出する．
+
+なお，オープン直後のデフォルトの設定値は(IOCTL_ECHO | IOCTL_CRLF |
+IOCTL_FCSND | IOCTL_FCRCV)である．
+
+(6) ER serial_ref_por(ID portid, T_SERIAL_RPOR *pk_rpor)
+
+portidで指定されたシリアルポートの状態を参照し，pk_rporで指定されるパケッ
+トに返す．パケット中のreacntには受信バッファ中の文字数を，wricntには送
+信バッファ中の文字数を返す．
+
+8.2.2 シリアルインタフェースドライバのその他のサービス
+
+シリアルインタフェースドライバは，前記のサービスコールに加えて，初期化
+処理と未送信文字の取出し処理を持つ．初期化処理は，カーネルに初期化ルー
+チンとして登録する．また，ターゲット依存で，初期化処理，終了処理，割込
+みサービスルーチンを持つ．これらの登録処理はserial.cfgに含まれる．
+
+(1) void serial_initialize(intptr_t exinf)
+
+シリアルインタフェースドライバを初期化する．カーネルに初期化ルーチンと
+して登録する．exinfは無視する．
+
+(2) bool_t serial_get_chr(ID portid, char_t *p_c)
+
+portidで指定されたシリアルポートの送信バッファ中の文字を，p_cの指す番地
+に取り出し，trueを返す関数．文字がなかった時には，falseを返す．終了処理
+ルーチン中で呼び出すことを想定している．
+
+8.3 システムログタスク
+
+システムログタスクは，システムログ機能からログ情報を取り出し，それをシ
+ステムの外部に出力するためのサービスである．
+
+ASPカーネルのリリースパッケージに含まれるシステムログタスクは，シリアル
+ポートにログ情報を文字列の形で出力するもので，システムログタスクの一例
+という位置付けで提供している．
+
+このシステムログタスクは，システムコンフィギュレーションファイルで
+logtask.cfgをインクルードすることで，システムに組み込むことができる．シ
+ステムログタスクのサービスを呼び出すソースファイルでは，logtask.hをイン
+クルードする．
+
+システムログタスクが実行開始されると，重要度がLOG_EMERGのログ情報を低レ
+ベル出力機能を用いて出力し，重要度がLOG_NOTICEかそれより高いログ情報を
+ログバッファに記録するように，システムログ機能の設定が変更される．
+
+8.3.1 システムログタスクのサービスコール
+
+システムログタスクのサービスを呼び出すサービスコールの仕様は次の通りで
+ある．
+
+(1) ER logtask_flush(uint_t count)
+
+システムログ機能のログバッファ中のログ情報の数がcount以下になるまで待つ．
+countが0の場合には，シリアルインタフェースドライバの送信バッファが空に
+なるのも待つ．
+
+8.3.2 システムログタスクのその他のサービス
+
+システムログタスクは，前記のサービスコールに加えて，メイン処理と終了処
+理を持つ．メイン処理はタスクとして，終了処理は終了処理ルーチンとして登
+録する．これらの登録処理はlogtask.cfgに含まれる．
+
+(1) void logtask_main(intptr_t exinf)
+
+システムログタスクのメイン処理．exinfには，ログ情報を出力するシリアルポー
+トのID番号を渡す．
+
+(2) void logtask_terminate(intptr_t exinf)
+
+システムログタスクの終了処理．シリアルインタフェースドライバの送信バッ
+ファに蓄積されたデータと，ログバッファに記録されたログ情報を，低レベル
+出力機能を用いて出力する．出力すべきログ情報がある場合には，それを出力
+する前に，"-- buffered messages --"という文字列を出力する．exinfは無視
+する．
+
+この関数を終了処理ルーチンとして登録することで，カーネル終了時点で未出
+力のログ情報のほとんどを出力することができる．ただし，未出力のログ情報
+の内，システムログタスクのメイン処理が，ログバッファから取り出したが，
+まだシリアルインタフェースドライバに送信していない情報は，この関数では
+出力できない．
+
+8.4 カーネル起動メッセージの出力
+
+カーネル起動メッセージの出力は，カーネルの起動時に，カーネルの名称やバー
+ジョン番号，著作権表示などを出力するための機能である．
+
+カーネル起動メッセージの出力は，システムコンフィギュレーションファイル
+でbanner.cfgをインクルードすることで，システムに組み込むことができる．
+
+カーネル起動メッセージの出力は，次の関数で構成される．
+
+(1) void print_banner(intptr_t exinf)
+
+システムログ機能を用いて，カーネル起動メッセージを出力する．banner.cfg
+によって，カーネルに初期化ルーチンとして登録される．exinfは無視される．
+
+
+９．サポートライブラリ
+
+サポートライブラリは，アプリケーションやシステムサービスを作成するため
+に利用できるライブラリ関数群である．
+
+9.1 基本的なライブラリ関数
+
+基本的なライブラリ関数を用いる場合には，t_stdlib.hをインクルードし，必
+要に応じてstrerror.cとt_perror.cをコンパイル・リンクする．
+
+(1) const char *itron_strerror(ER ercd)
+
+ercdで示されるエラーコードに対応するメインエラーコードの文字列を返す．
+
+(2) void t_perror(uint_t prio, const char *file, int_t line,
+										const char *expr, ER ercd);
+
+サービスコールがエラーを返した場合に用いることを想定した関数で，ファイ
+ル名，行番号，メインエラーコード等を，重要度prioで，システムログ機能を
+用いて出力する．
+
+9.2 キュー操作ライブラリ関数
+
+キュー操作ライブラリは，キューヘッダを含むリング構造のダブルリンクキュー
+を扱うライブラリである．キューヘッダの次エントリはキューの先頭のエント
+リ，前エントリはキューの末尾のエントリとする．また，キューの先頭のエン
+トリの前エントリと，キューの末尾のエントリの次エントリは，キューヘッダ
+とする．空のキューは，次エントリ，前エントリとも自分自身を指すキューヘッ
+ダであらわす．
+
+キュー操作ライブラリ関数を用いる場合には，queue.hをインクルードする．
+
+キューヘッダとエントリのためのデータ構造として，QUEUE構造体を用いる．
+QUEUE構造体の定義は次の通り．
+
+	typedef struct queue {
+		struct queue *p_next;		/* 次エントリへのポインタ */
+		struct queue *p_prev;		/* 前エントリへのポインタ */
+	} QUEUE;
+
+キュー操作のために用意している関数は次の通り．
+
+(1) void queue_initialize(QUEUE *p_queue);
+
+キューを初期化する．p_queueにはキューヘッダを指定する．
+
+(2) void queue_insert_prev(QUEUE *p_queue, QUEUE *p_entry);
+
+p_queueで指定するエントリの前に，p_entryで指定するエントリを挿入する．
+p_queueにキューヘッダを指定した場合には，キューの末尾にp_entryで指定す
+るエントリを挿入することになる．
+
+(3) void queue_insert_next(QUEUE *p_queue, QUEUE *p_entry);
+
+p_queueで指定するエントリの次に，p_entryで指定するエントリを挿入する．
+p_queueにキューヘッダを指定した場合には，キューの先頭にp_entryで指定す
+るエントリを挿入することになる．
+
+(4) void queue_delete(QUEUE *p_entry);
+
+p_entryで指定するエントリを，キューから削除する．
+
+(5) QUEUE *queue_delete_next(QUEUE *p_queue);
+
+p_queueで指定するエントリの次のエントリをキューから削除し，削除したエン
+トリを返す．p_queueにキューヘッダを指定した場合には，キューの先頭のエン
+トリを取り出すことになる．p_queueに空のキューを指定して呼び出してはなら
+ない．
+
+(6) bool_t queue_empty(QUEUE *p_queue);
+
+キューが空の場合にはtrue，そうでない場合にはfalseを返す．p_queueには
+キューヘッダを指定する．
+
+9.3 システムログ出力用ライブラリ関数
+
+システムログ出力用ライブラリ関数は，ログ情報をフォーマット出力するため
+に，システムログタスクおよびシステムログ機能で用いるための関数群である．
+
+システムログ出力用ライブラリ関数を用いる場合には，log_output.hをインク
+ルードし，log_output.cをコンパイル・リンクする．
+
+(1) void syslog_printf(const char *format, const intptr_t *args,
+												void (*putc)(char_t))
+
+formatで指定されるフォーマット記述とp_argsで指定される引数列から作成し
+たメッセージを，1文字出力関数putcを用いて出力する．
+
+(2) void syslog_print(const SYSLOG *p_sys, void (*putc)(char_t))
+
+p_syslogで指定されるログ情報を文字列に直し，1文字出力関数putcを用いて出
+力する．
+
+(3) void syslog_lostmsg(uint_t lost, void (*putc)(char_t))
+
+lost個のログ情報が失われた旨のメッセージを，1文字出力関数putcを用いて出
+力する．
+
+9.4 実行時間分布集計モジュール
+
+実行時間分布集計モジュールは，システムのリアルタイム性能を評価するため
+に，プログラム区間の実行時間を計測し，その分布を集計・表示するためのラ
+イブラリ関数群である．
+
+実行時間分布集計モジュールを用いる場合には，histogram.hをインクルードし，
+histogram.cをコンパイル・リンクする．
+
+実行時間分布集計モジュールは，複数のプログラム区間の実行時間を計測・集
+計・表示することができる．プログラム区間毎に，実行時間分布を記録するた
+めのデータ構造を持つ．どのデータ構造を用いるかを，ID番号（histid）で指
+定する．使用できるデータ構造の数は，TNUM_HISTで定義される．すなわち，
+ID番号として，1〜TNUM_HISTを指定することができる．TNUM_HISTは，デフォル
+ト値がhistgram.cの中で定義されており，コンパイルオプションやターゲット
+依存部（target_test.hまたはそこからインクルードされるファイル）により変
+更することができる．
+
+ターゲット依存部で設定を変更していない場合，実行時間分布集計モジュール
+は，カーネルの性能評価用システム時刻を参照する機能（get_utm）を用いて実
+行時間を計測する．そのため，実行時間はマイクロ秒単位で記録される（精度
+はターゲット依存）．また，記録される時間には，計測のためのオーバヘッド
+（get_utmの実行時間＋α）が含まれる．
+
+ターゲット依存部で設定を変更している場合の仕様については，ターゲット依
+存部のユーザーズマニュアルを参照すること．
+
+(1) void init_hist(ID histid, uint_t maxval, uint_t *hist)
+
+histidで指定されたデータ構造を初期化する．maxvalには記録する最大時間を，
+histには記録領域の先頭番地を指定する．histで始まる記憶領域は，要素数が
+maxvalに指定した値+1のuint_t型の配列として確保する．例えば，maxvalに
+1000を指定する場合には，histには要素数が1001のuint_t型の配列の先頭番地
+を渡す．
+
+(2) void begin_measure(ID histid)
+
+実行時間を計測するプログラム区間の直前に呼び出す関数．histidで指定され
+たデータ構造に，現在のシステム時刻を記録する．
+
+(3) void end_measure(ID histid)
+
+実行時間を計測するプログラム区間の直後に呼び出す関数．現在のシステム時
+刻と，histidで指定されたデータ構造に記録された開始時刻から，プログラム
+区間の実行時間を求め，その結果を記録する．
+
+(4) void print_hist(ID histid)
+
+システムログ機能を用いて，実行時間分布の計測結果を出力する．
+
+
+１０．テストプログラム
+
+テストプログラムは，カーネルの機能テストおよび性能評価を行うためのプロ
+グラム群である．
+
+10.1 テストプログラム用ライブラリ
+
+テストプログラム用ライブラリは，プログラム中のチェックポイントが正しい
+順序で実行されたことなど，プログラムが正しく動作していることをチェック
+するための関数群である．プログラムが正しく動作していないことを検出した
+場合には，プログラムを終了させる．
+
+このライブラリ中でプログラムを終了させる時には，その時点で未出力のログ
+情報等を出力しようとするが，一部の情報が抜ける場合がある．詳しくは，
+「8.3.2 システムログタスクのその他のサービス」の節の(2)を参照すること．
+
+テストプログラム用ライブラリ関数を用いる場合には，test_lib.hをインクルー
+ドし，test_lib.cをコンパイル・リンクする．
+
+(1) void check_point(uint_t count)
+
+チェックポイントを通過する際に呼び出す関数．countには，何番目のチェック
+ポイントであるかを指定する（最初のチェックポイントでは1を指定する）．
+countの値が，最初のチェックポイントにおいては1でない場合に，それ以降の
+チェックポイントにおいては，前のチェックポイント通過時にcountに指定した
+値に1を加えた値でない場合に，プログラムが正しく動作していないと見なし，
+プログラムを終了させる．
+
+(2) void check_finish(uint_t count)
+
+最後のチェックポイントに到達した際に呼び出す関数．countには，何番目の
+チェックポイントであるかを指定する（最初のチェックポイントでは1を指定す
+る）．countの値が，前のチェックポイント通過時にcountに指定した値に1を加
+えた値でない場合に，プログラムが正しく動作していないと見なす．この関数
+は，プログラムが正しく動作している／いないに関わらず，プログラムを終了
+させる．
+
+(3) void check_assert(bool_t exp)
+
+expが真であることをチェックしたい場合に呼び出す関数．expが偽である場合
+に，プログラムが正しく動作していないと見なし，プログラムを終了させる．
+
+(4) void check_ercd(ER ercd, ER expected_ercd)
+
+ercdがexpected_ercdに一致していることをチェックしたい場合に呼び出す関数．
+ercdがexpected_ercdに一致していない場合に，プログラムが正しく動作してい
+ないと見なし，プログラムを終了させる．
+
+(5) void check_state(bool_t ctx, bool_t loc, PRI ipm,
+						bool_t dsp, bool_t dpn, bool_t tex)
+
+タスクコンテキストにおいて，システム状態が期待したものになっているか
+チェックしたい時に呼び出す関数．ctx，loc，dsp，dpn，texにはそれぞれ
+sns_ctx()，sns_loc()，sns_dsp()，sns_dpn()，sns_tex()の返値として期待さ
+れる値を，ipmにはget_ipm()で参照できる割込み優先度マスクとして期待され
+る値を指定する．この内のいずれかが期待される値と一致していない場合に，
+プログラムが正しく動作していないと見なし，プログラムを終了させる．
+
+(6) void check_state_i(bool_t ctx, bool_t loc,
+						bool_t dsp, bool_t dpn, bool_t tex)
+
+非タスクコンテキストにおいて，システム状態が期待したものになっているか
+チェックしたい時に呼び出す関数．ctx，loc，dsp，dpn，texにはそれぞれ
+sns_ctx()，sns_loc()，sns_dsp()，sns_dpn()，sns_tex()の返値として期待さ
+れる値を指定する．この内のいずれかが期待される値と一致していない場合に，
+プログラムが正しく動作していないと見なし，プログラムを終了させる．
+
+(7) void set_bit_func(BIT_FUNC bit_func)
+
+チェックポイントにおいて呼び出す自己診断関数を設定するための関数．
+
+(8) void syslog_flush(void)
+
+システムログ機能に記録されたログ情報を，低レベル出力機能に用いる文字出
+力関数により出力する．
+
+(9) void test_finish(void)
+
+プログラムを終了させる関数．チェックポイントを使用しない場合に，この関
+数を用いる．
+
+10.2 カーネルの整合性検査
+
+チェックポイントにおいて呼び出す自己診断に使うためのプログラムとして，
+カーネルの整合性検査を用意している．カーネルの整合性検査は，カーネル内
+の各データ構造の一貫性を検査する（現時点では未完成）．
+
+カーネルの整合性検査を用いる場合には，bit_kernel.cをコンパイル・リンク
+する．
+
+(1) ER bit_kernel(void)
+
+カーネル内の各データ構造の一貫性を検査し，一貫性が確認できた場合にE_OK，
+できなかった場合にE_SYSエラーを返す関数．E_SYSエラーを返す際のサブエラー
+コードとして，一貫性が確認できなかった項目を示すコードを返す．
+
+10.3 機能テストプログラム
+
+testディレクトリに置かれた"test"で始まるプログラムは，カーネルの機能テ
+ストを行うためのプログラムである．
+
+機能テストプログラムはテストプログラム用ライブラリを使用しているため，
+構築する場合には，MakefileのAPPL_COBJSに，test_lib.oを追加する必要があ
+る．コンフィギュレーションスクリプトを使用する場合には，-Uオプションで
+test_lib.oを指定する．具体的には，次のコマンドを実行すればよい（構築用
+のディレクトリが，ASPカーネルのソースファイルを展開したディレクトリの直
+下にあると仮定している）．
+
+	% perl ../configure -T <ターゲット略称> -A <機能テストプログラム名> \
+											-a ../test -U test_lib.o
+
+ただし，CPU例外処理のテスト(1)〜(13)は，同一のシステムコンフィギュレー
+ションを共用しているため，test_cpuexc.cfgを次のようにコピーしておく必要
+がある．
+
+	% cp ../test/test_cpuexc.cfg test_cpuexc<テスト番号>.cfg
+
+現バージョンで用意している機能テストプログラムは次の通り．
+
+(1) test_cpuexc1			CPU例外処理のテスト(1)
+(2) test_cpuexc2			CPU例外処理のテスト(2)
+(3) test_cpuexc3			CPU例外処理のテスト(3)
+(4) test_cpuexc4			CPU例外処理のテスト(4)
+(5) test_cpuexc5			CPU例外処理のテスト(5)
+(6) test_cpuexc6			CPU例外処理のテスト(6)
+(7) test_cpuexc7			CPU例外処理のテスト(7)
+(8) test_cpuexc8			CPU例外処理のテスト(8)
+(9) test_cpuexc9			CPU例外処理のテスト(9)
+(10) test_cpuexc10			CPU例外処理のテスト(10)
+(11) test_cpuexc11			CPU例外処理のテスト(11)
+(12) test_cpuexc12			CPU例外処理のテスト(12)
+(13) test_cpuexc13			CPU例外処理のテスト(13)
+(14) test_dlynse			sil_dly_nseに関するテスト
+(15) test_sem1				セマフォ機能のテスト(1)
+(16) test_sem2				セマフォ機能のテスト(2)
+(17) test_sysstat1			システム状態に関するテスト(1)
+(18) test_task1				タスク管理モジュールのテスト(1)
+(19) test_tex1				タスク例外処理に関するテスト(1)
+(20) test_tex2				タスク例外処理に関するテスト(2)
+(21) test_utm1				get_utmに関するテスト(1)
+
+CPU例外処理のテストプログラムの一部は，CPU例外ハンドラからリターンした
+場合に，CPU例外を発生させた命令の次から実行が継続されることを前提に作成
+されている．この前提が成り立たない場合には，テストプログラムのターゲッ
+ト依存定義において，CANNOT_RETURN_CPUEXCをマクロ定義することが必要であ
+る．詳しくは，「ターゲット依存部 ポーティングガイド」を参照すること．
+
+10.4 性能評価プログラム
+
+testディレクトリに置かれた"perf"で始まるプログラムは，カーネルの性能評
+価を行うためのプログラムである．
+
+性能評価プログラムは，計測対象となる処理を繰り返し実行し，その実行時間
+を計測して，実行時間分布を表示する．
+
+計測した実行時間には，時間計測のオーバヘッド（時間計測処理の実行にかか
+る時間）が含まれる．計測対象の処理の正味の実行時間を求めるためには，計
+測された時間から，時間計測のオーバヘッドを計測するためのプログラム
+（perf0）で計測された時間を減算する必要がある．
+
+また，実行時間の計測は，別に記述がない限り割込みを許可したまま行うため，
+割込みハンドラ（少なくとも，タイマ割込みハンドラ）の処理時間が含まれた
+実行結果が計測される．
+
+カーネルの性能評価にあたっては，ハードウェア（特にキャッシュ）の設定に
+留意する必要がある．
+
+性能評価プログラムはテストプログラム用ライブラリと実行時間分布集計モ
+ジュールを使用しているため，構築する場合には，MakefileのAPPL_COBJSに，
+test_lib.oとhistogram.oを追加する必要がある．コンフィギュレーションスク
+リプトを使用する場合には，-Uオプションでtest_lib.oとhistgram.oを指定す
+る．具体的には，次のコマンドを実行すればよい（構築用のディレクトリが，
+ASPカーネルのソースファイルを展開したディレクトリの直下にあると仮定して
+いる）．
+
+	% perl ../configure -T <ターゲット略称> -A <性能評価プログラム名> \
+									-a ../test -U "test_lib.o histogram.o"
+
+現バージョンで用意している性能評価プログラムは次の通り．
+
+(1) perf0		時間計測のオーバヘッドの評価
+
+時間計測のオーバヘッドを計測するためのプログラム．具体的には，空のプロ
+グラム（begin_mearsureとend_measureを続けて呼び出すプログラム）の実行時
+間を計測する．
+
+他の性能評価プログラムで計測された時間から，このプログラムで計測された
+時間を減算した時間が，計測対象の処理の正味の実行時間である．
+
+(2) perf1		slp_tsk，wup_tskによるタスク切換え時間の評価
+
+slp_tsk，wup_tskによるタスク切換え時間を計測するためのプログラム．具体
+的には，高い優先度のタスクが起床待ち状態である時に，低い優先度のタスク
+がwup_tskにより高い優先度のタスクを起床し，高い優先度のタスクに切り換わ
+るまでの時間と，高い優先度のタスクがslp_tskにより起床待ち状態となり，低
+い優先度のタスクに切り換わるまでの時間を計測する．
+
+(3) perf2		snd_pdqの処理時間の評価
+
+優先度データキューに蓄積されているデータの数により，snd_pdqの処理時間が
+どのように変化するかを計測するためのプログラム．具体的には，優先度デー
+タキュー中に高い優先度のデータがn個蓄積されている時に，snd_dtqにより低
+い優先度のデータを入れるのにかかる時間を計測する．nを0，10，20，30，40，
+50，100，200，300と変化させて計測する．
+
+(4) perf3		set_flgの処理時間の評価
+
+待ち解除するタスクの数により，set_flgの処理時間がどのように変化するかを
+計測するためのプログラム．具体的には，TA_WMUL属性のイベントフラグに対し
+て，n個のタスクが待っている時に，set_flgによりそのすべてを待ち解除する
+のにかかる時間を計測する．nを0，1，2，3，4，5，10，20と変化させて計測す
+る．
+
+(5) perf4		act_tsk，iact_tskの処理時間とタスク切換え時間の評価
+
+act_tsk，iact_tskの処理時間とタスク切換え時間を計測するためのプログラム．
+具体的には，(1) タスク切換えを起こさないact_tskの処理時間，(2) タスク切
+換えを起こすact_tskの処理時間（タスク切換え時間を含む），(3) タスク切換
+えを起こすiact_tskの処理時間（タスク切換え時間とタイマ割込み中で実行さ
+れるシステム時刻の更新処理時間を含む）の3つの時間を計測する．
+
+１１．使用上の注意とヒント
+
+11.1 タイマドライバの組込み
+
+タイマドライバをシステムに組み込むために，システムコンフィギュレーショ
+ンファイルの先頭でtarget_timer.cfgをインクルードする必要がある．
+
+11.2 assertマクロの処理
+
+ASPカーネルのコード中には，assertマクロが使われている．assertマクロの定
+義はt_stddef.hに含まれ，assertが失敗した場合の最後の処理（通常は，プロ
+グラムを停止させる処理）は，ターゲット依存部のTOPPERS_assert_abortで決
+定される．
+
+assertが失敗した場合，システム開発中はデバッガに落とすのが望ましいが，
+システム稼働時の対処法は，システムに対する要件に依存する．そこで，ター
+ゲット依存部のTOPPERS_assert_abortを，システム要件に合致した適切な処理
+に置き換える必要がある．システム要件によっては，NDEBUGを定義してassert
+マクロの処理をオブジェクトコード中から消す（「6.2 コンパイルオプション」
+の節を参照）方法も考えられる．
+
+11.3 システムログ機能の扱い
+
+TOPPERS/ASPカーネルでは，システム開発時の利便性を考慮し，システムログ機
+能を組み込む設定をデフォルトとしている．
+
+それに対して，TOPPERS/ASPカーネルを用いたシステムを機器に組み込む場合は，
+システムログ機能が意味がない場合も多い．機器への組込みに際してのシステ
+ムログ機能の設定方法には，以下の方法が考えられる．
+
+(1) システムログ機能を用いない
+
+システムログ機能を一切使用しない場合には，システムログ機能をシステムに
+組み込まず（システムコンフィギュレーションファイルでsyslog.cfgをインク
+ルードしない），システムログ機能のサービスコールを呼び出すソースファイ
+ルをTOPPERS_OMIT_SYSLOGを定義してコンパイルすればよい．
+
+(2) ログ情報の蓄積のみを行う
+
+機器に組み込んだ状態で，シリアルポート等を介してシステムを外部と接続す
+ることができる場合には，システム稼働時にはログ情報の蓄積のみを行い，シ
+ステムに障害が起きた時などにログ情報を取り出すことで，障害の原因分析の
+助けとすることができる．
+
+具体的な設定方法として，次の2つの方法が考えられる．
+
+(2-1) 低レベル出力をメモリに蓄積する
+
+必要なログ情報を低レベル出力機能を用いて出力するように設定し，低レベル
+の文字出力関数（target_fput_log）に送られた文字をメモリ（典型的にはリン
+グバッファ）に蓄積するようにする．システムの障害時には，そのメモリ領域
+を読み出す．
+
+(2-2) システムログ機能のログバッファに蓄積する
+
+必要なログ情報をシステムログ機能のログバッファに記録するように設定する．
+システムログタスクを動作させないと，ログ情報はログバッファに蓄積されて
+いく．システムの障害時には，ログバッファの領域を読み出すか，システムロ
+グタスクを動作させてログ情報を出力させる．
+
+(3) 開発時の設定のままとする
+
+システムログ機能の設定を，システム開発時のまま変更せず，シリアルポート
+等にログ情報を垂れ流す方法も考えられる．
+
+11.4 オブジェクトIDの管理
+
+TOPPERS/ASPカーネルでは，オブジェクトのID番号を，コンフィギュレータが割
+り付ける方法が基本となっている．
+
+アプリケーションプログラム中でオブジェクトのID番号を参照する場合には，
+次の2つの方法が考えられる．
+
+(1) オブジェクト識別名を用いる
+
+オブジェクト生成のための静的API（CRE_YYY）の第1パラメータに記述したオブ
+ジェクト識別名を，アプリケーションプログラム中でも用いる方法．
+
+コンフィギュレータは，オブジェクト識別名を，割り付けたID番号にマクロ定
+義するC言語プリプロセッサのディレクティブ（#define）をkernel_cfg.hに生
+成するため，アプリケーションプログラムからkernel_cfg.hをインクルードす
+る必要がある．
+
+この方法は，オブジェクトコード中にID番号が直接埋め込まれるために実行効
+率が良い一方で，コンフィギュレータが実行されてkernel_cfg.hが書き換わる
+度に，アプリケーションプログラムの再コンパイルが必要になるという欠点が
+ある．そのため，アプリケーションプログラムを構成するファイルの中で，一
+部のファイルのみでオブジェクト識別名を参照する構成にするといった工夫を
+することが望ましい．
+
+(2) オブジェクトのID番号を保持する変数を用いる
+
+オブジェクトのID番号を保持するconst属性を付加した変数を用意し，アプリケー
+ションプログラム中では，その変数を用いる方法．
+
+例えば，TASK1というオブジェクト識別名のタスクに対して，次のような変数を
+用意する．
+
+const ID TASK1_id = TASK1;
+
+アプリケーションプログラム中では，この変数（TASK1_id）を用いることで，
+コンフィギュレータが実行されてkernel_cfg.hが書き換わる度に，上記の変数
+定義を含んだファイルのみを再コンパイルすればよいことになる．
+
+この方法は，アプリケーションプログラムの再コンパイルを最小限にできる利
+点がある一方で，変数のためのメモリ領域が必要になることに加えて，（プロ
+セッサによっては）変数アクセスのためのオーバヘッドが生じるという欠点が
+ある．また，定数ではなく変数であることから，他の変数の初期化には使えな
+いという制限がある．
+
+なお，TOPPERS/ASPカーネルのコンフィギュレータは，--external-idオプショ
+ンを付加することにより，上記の変数定義をkernel_cfg.c中に生成する機能を
+持っているので，すべてのオブジェクトIDをこの方法で参照する場合には，こ
+の機能を用いることを推奨する．
+
+コンフィギュレータによるID番号割付けのもう1つの課題として，コンフィギュ
+レーションファイルの修正により，オブジェクトIDの割付けが変わってしまう
+ことが挙げられる．これは，アプリケーションソフトウェアの設計仕様書にID
+番号が記載されている場合や，デバッグ作業においてID番号を直接扱っている
+場合に，作業効率を低下させる可能性が考えられる．
+
+この問題に対応するために，TOPPERS/ASPカーネルのコンフィギュレータに，
+ID番号の割付け結果をファイルに書き出す機能（--id-output-fileオプション）
+と，ID番号の割付けをファイルから取り込む機能（--id-input-fileオプション）
+を用意している．これらの機能を用いて，コンフィギュレータを実行する度に，
+前回に実行した時にファイルに書き出したID番号の割付けを取り込むことで，
+前回実行時と同じ割付けを行うことができる．ただし，TOPPERS/ASPカーネルで
+は，ID番号に抜けがあるのは許されないため，オブジェクトの数が減った場合
+には（ID番号が大きい方のオブジェクトが減った場合を除いて）エラーとなる．
+この場合には，ダミーのオブジェクトを生成する方法で回避するしかない．
+
+11.5 カーネルの内部シンボルのリネーム
+
+ASPカーネルでは，モジュール内部の名称が他のモジュール内部の名称と衝突す
+ることを避けるために，カーネルの内部シンボルは，C言語レベルで，先頭が
+"_kernel_"または"_KERNEL_"である名称としている．
+
+これをソースコードの可読性と両立させるために，ASPカーネルでは，ソースコー
+ドは自然な名前を用いて記述し，C言語プリプロセッサのマクロ定義（#define）
+を用いて，それを"_kernel_"または"_KERNEL_"で始まる名前（自然な名前が
+yyyyyの場合には，_kernel_yyyyy）にリネームする仕組みを用いている．
+
+具体的には，関連するディレクトリにxxx_rename.defを置き，そこからリネー
+ムのためのヘッダファイル（xxx_rename.hおよびxxx_unrename.h）を生成する
+ツール（utils/genrename）を用意している．
+
+この仕組みは，ソースコードの可読性向上に役立つ一方で，弊害もある．例え
+ば，多くのデバッガで，ソースコード中の名称とオブジェクトコード中の名称
+が異なるために，ソースコード中の変数名を指定して値を読んだり，関数名を
+指定してブレークポイントを置くといったことができない．
+
+この状況に対応するために，ASPカーネルでは，ソースコード中の該当する名称
+をリネームするためのユーティリティ（utils/applyrename）を用意している．
+applyrenameユーティリティに，リネーム定義ファイル（xxx_rename.def）のプ
+リフィックス（xxxの部分）と，リネームしたいファイルリストを与えると，リ
+ネーム処理を行なう．例えば，kernelディレクトリのすべてのファイルに対し
+て，カーネルの内部シンボルをリネームするには，次のコマンドを実行すれば
+よい．
+
+	% cd kernel
+	% ../utils/applyrename kernel *
+
+また，ターゲット依存部のディレクトリのすべてのファイルに対して，カーネ
+ルの内部シンボルをリネームするには，次のようなコマンドを実行すればよい．
+
+	% cd target/dve68k_gcc/
+	% ../../utils/applyrename target *
+	% ../../utils/applyrename ../../kernel/kernel *
+
+11.6 トレースログ記録のサンプルコードの使用方法
+
+トレースログ記録のサンプルコードがターゲット依存部に組み込まれている場
+合には，コンフィギュレーションスクリプトにそれを使用することを指示する
+オプション（-r）を付加することで，メモリ上にトレースログを記録する機能
+が有効になる．
+
+トレースログ記録の使用方法の一例として，システム起動時にトレースログの
+記録を開始し，システム終了時に記録したトレースログをダンプするためには，
+システムコンフィギュレーションファイルに次のような記述を追加する．
+
+	#include "logtrace/trace_config.h"
+	ATT_INI({ TA_NULL, TRACE_AUTOSTOP, trace_initialize });
+	ATT_TER({ TA_NULL, target_fput_log, trace_dump });
+
+ここで，初期化ルーチン（trace_initialize）への引数は，初期化直後のトレー
+スログの動作モードを指定するものである．指定できる動作モードについては，
+arch/logtrace/trace_config.h中のコメントに説明がある．
+
+終了処理ルーチン（trace_dump）は，記録されたトレースログをターゲット依
+存の低レベル出力機能（target_fput_log）を利用してダンプするためのもので
+ある．トレースログを別の方法で取り出す場合には，終了処理ルーチンを登録
+する必要はない．
+
+以上の方法では，trace_initializeを初期化ルーチンで，trace_dumpを終了処
+理ルーチンで呼び出しているため，初期化ルーチンを呼び出す前や終了処理ルー
+チンを呼び出した後には，トレースログ記録の機能を利用できない．初期化ルー
+チンを呼び出す前や終了処理ルーチンを呼び出した後に実行される処理（例え
+ば，カーネルオブジェクトの初期化処理や，trace_initializeよりも先に登録
+した初期化ルーチン，trace_dumpよりも先に登録した終了処理ルーチン）でト
+レースログ記録の機能を利用するためには，trace_initializeとtrace_dumpを
+適切な場所で呼ぶように修正することが必要である．
+
+11.7 システムの起動時の初期化処理
+
+システムの起動時にアプリケーションで必要となる初期化処理を行うための機
+能として初期化ルーチンが用意されているが，初期化ルーチンが実行されるよ
+りも早いタイミングで実行することが必要な初期化処理がある場合がある．
+
+このような場合に用いるために，標準的なスタートアップモジュールから，ター
+ゲットシステム依存の初期化フック（hardware_init_hook）を呼び出すことと
+している．hardware_init_hookは，カーネルのターゲット依存部で用意されて
+いるのが標準であるが，これをアプリケーションで用意したものに置き換え，
+その中でアプリケーションで必要となる初期化処理を行うことができる．
+
+ただし，hardware_init_hookの作成する場合には，bssセクションとdataセクショ
+ンが初期化されていないことや，ライブラリが初期化されていないこと，C言語
+で記述できるとは限らないことなどに注意が必要である．作成にあたっては，
+「ターゲット依存部 ポーティングガイド」を参照すること．
+
+カーネルのスタートアップモジュールがhardware_init_hookを呼び出すように
+実装されていない場合には，スタートアップモジュールをアプリケーションで
+用意したものに置き換える方法を推奨する．
+
+
+１２．参考情報
+
+12.1 利用条件と利用報告
+
+ASPカーネルの利用条件は，各ファイルの先頭に表示されている．著作権は，各
+ファイルの先頭に表示されている著作権者が保有している．
+
+利用条件の(3)の(b)において，利用の形態をTOPPERSプロジェクトに報告する方
+法としては，ASPカーネルを利用した製品の名称と応用分野，製品化した会社名
+と業種等の情報を，以下のURLのページから報告するものとする．
+
+	http://www.toppers.jp/report.html
+
+またその際に，ASPカーネルを使用してのコメントやご意見もいただけると幸い
+である．
+
+12.2 保証・適用性・サポート
+
+ASPカーネルは無保証で提供されているものである．開発者およびTOPPERSプロ
+ジェクトは，ASPカーネルに関して，特定の使用目的に対する適合性も含めて，
+いかなる保証も行わない．また，ASPカーネルの利用により直接的または間接的
+に生じたいかなる損害に関しても，その責任を負わない．
+
+開発者およびTOPPERSプロジェクトは，ASPカーネルに関するサポートの約束は
+していない．ASPカーネルに関して質問がある場合は，後述のTOPPERSユーザー
+ズメーリングリストを利用していただけると幸いである．確実なサポートが必
+要な場合には，有償でサポートサービスを提供している会社に相談されたい．
+
+12.3 バグレポート
+
+ASPカーネルにバグや問題点を発見された場合には，後述のTOPPERSユーザーズ
+メーリングリストに報告して欲しい．
+
+メーリングリストにバグや問題点などを報告する場合には，必要に応じて次の
+情報を知らせて欲しい．
+
+	使用しているカーネルに関する情報
+		・ターゲット非依存部のバージョン
+		・使用しているターゲット依存部とそのバージョン
+		・TOPPERSプロジェクトからのリリースに対する改造箇所（あれば）
+
+	ターゲットシステムに関する情報
+		・ターゲットプロセッサの種類
+		・ターゲットボード等の種類
+
+	ホストに関する情報
+		・OSのバージョン（サービスパックの適用状況も）
+		・コンパイラなどの開発環境のバージョン（Cygwinのバージョンも）
+
+12.4 ウェブサイト
+
+TOPPERSプロジェクトのウェブサイトは，以下のURLにある．
+
+	http://www.toppers.jp/
+
+TOPPERSプロジェクトやASPカーネルに関する最新情報は，このウェブサイトか
+ら得ることができる．また，ASPカーネルの最新版は，このウェブサイトからダ
+ウンロードすることができる．
+
+12.5 TOPPERSユーザーズメーリングリスト
+
+ASPカーネルを含むTOPPERSプロジェクトの開発成果物のユーザに対する情報提
+供およびユーザ相互間の情報交換を容易にするために，TOPPERSユーザーズメー
+リングリスト（users@toppers.jp）を用意している．
+
+このメーリングリストには，誰でも自由に登録し，メールを送付することがで
+きる（登録者以外はメールを送付できない）．また，送付されたメールは，誰
+でも自由にウェブサイトで読むことができる．
+
+メーリングリストへの登録方法については，以下のURLのページに説明がある．
+
+	http://www.toppers.jp/community.html
+
+12.6 TOPPERSプロジェクトのメンバ向けのサービス
+
+TOPPERSプロジェクトのメンバに対しては，上記に加えて，ASPカーネルに関連
+して次のサービスを用意している．
+
+(1) TOPPERS開発者メーリングリスト
+
+TOPPERSプロジェクトのメンバは，ASPカーネルに関する質問，バグや問題点な
+どの報告に，TOPPERS開発者メーリングリスト（dev@toppers.jp）を利用するこ
+とができる．
+
+(2) ASPカーネルの開発支援サイト
+
+ASPカーネルの開発支援のためのTRAC（バグトラッキングシステム）が，以下の
+URLにある（TRACへのアクセスには，会員パスワードが必要である）．
+
+	http://dev.toppers.jp/proj/asp/
+
+TOPPERSプロジェクトのメンバは，このサイトから，ウェブインタフェースおよ
+びsubversionサーバにより，ASPカーネルの開発中のバージョンを得ることがで
+きる．また，バグトラッキングデータベースにアクセスすることができ，過去
+のバグ履歴へのアクセスや，バグの登録をすることができる．
+
+12.7 TOPPERSプロジェクトへの参加
+
+TOPPERSプロジェクトでは，何からの形でプロジェクトに貢献していただける方，
+プロジェクトで開発したソフトウェアをお使いの方，プロジェクトに興味をお
+持ちの方の参加を求めている．TOPPERSプロジェクトへの参加方法については，
+以下のページに説明がある．
+
+	http://www.toppers.jp/joinus.html
+
+
+１３．リファレンス
+
+13.1 サービスコール一覧
+
+(1) タスク管理機能
+
+	ER ercd = act_tsk(ID tskid)
+	ER ercd = iact_tsk(ID tskid)
+	ER_UINT	actcnt = can_act(ID tskid)
+	ER ercd = ext_tsk(void)
+	ER ercd = ter_tsk(ID tskid)
+	ER ercd = chg_pri(ID tskid, PRI tskpri)
+	ER ercd = get_pri(ID tskid, PRI *p_tskpri)
+	ER ercd = get_inf(intptr_t *p_exinf)
+	ER ercd = ref_tsk(ID tskid, T_RTSK *pk_rtsk)
+
+(2) タスク付属同期機能
+
+	ER ercd = slp_tsk(void)
+	ER ercd = tslp_tsk(TMO tmout)
+	ER ercd = wup_tsk(ID tskid)
+	ER ercd = iwup_tsk(ID tskid)
+	ER_UINT wupcnt = can_wup(ID tskid)
+	ER ercd = rel_wai(ID tskid)
+	ER ercd = irel_wai(ID tskid)
+	ER ercd = sus_tsk(ID tskid)
+	ER ercd = rsm_tsk(ID tskid)
+	ER ercd = dly_tsk(RELTIM dlytim)
+
+(3) タスク例外処理機能
+
+	ER ercd = ras_tex(ID tskid, TEXPTN rasptn)
+	ER ercd = iras_tex(ID tskid, TEXPTN rasptn)
+	ER ercd = dis_tex(void)
+	ER ercd = ena_tex(void)
+	bool_t state = sns_tex(void)
+	ER ercd = ref_tex(ID tskid, T_RTEX *pk_rtex)
+
+(4) 同期・通信機能
+
+	ER ercd = sig_sem(ID semid)
+	ER ercd = isig_sem(ID semid)
+	ER ercd = wai_sem(ID semid)
+	ER ercd = pol_sem(ID semid)
+	ER ercd = twai_sem(ID semid, TMO tmout)
+	ER ercd = ini_sem(ID semid)
+	ER ercd = ref_sem(ID semid, T_RSEM *pk_rsem)
+
+	ER ercd = set_flg(ID flgid, FLGPTN setptn)
+	ER ercd = iset_flg(ID flgid, FLGPTN setptn)
+	ER ercd = clr_flg(ID flgid, FLGPTN clrptn)
+	ER ercd = wai_flg(ID flgid, FLGPTN waiptn,
+						MODE wfmode, FLGPTN *p_flgptn)
+	ER ercd = pol_flg(ID flgid, FLGPTN waiptn,
+						MODE wfmode, FLGPTN *p_flgptn)
+	ER ercd = twai_flg(ID flgid, FLGPTN waiptn,
+						MODE wfmode, FLGPTN *p_flgptn, TMO tmout)
+	ER ercd = ini_flg(ID flgid)
+	ER ercd = ref_flg(ID flgid, T_RFLG *pk_rflg)
+
+	ER ercd = snd_dtq(ID dtqid, intptr_t data)
+	ER ercd = psnd_dtq(ID dtqid, intptr_t data)
+	ER ercd = ipsnd_dtq(ID dtqid, intptr_t data)
+	ER ercd = tsnd_dtq(ID dtqid, intptr_t data, TMO tmout)
+	ER ercd = fsnd_dtq(ID dtqid, intptr_t data)
+	ER ercd = ifsnd_dtq(ID dtqid, intptr_t data)
+	ER ercd = rcv_dtq(ID dtqid, intptr_t *p_data)
+	ER ercd = prcv_dtq(ID dtqid, intptr_t *p_data)
+	ER ercd = trcv_dtq(ID dtqid, intptr_t *p_data, TMO tmout)
+	ER ercd = ini_dtq(ID dtqid)
+	ER ercd = ref_dtq(ID dtqid, T_RDTQ *pk_rdtq)
+
+	ER ercd = snd_pdq(ID pdqid, intptr_t data, PRI datapri)
+	ER ercd = psnd_pdq(ID pdqid, intptr_t data, PRI datapri)
+	ER ercd = ipsnd_pdq(ID pdqid, intptr_t data, PRI datapri)
+	ER ercd = tsnd_pdq(ID pdqid, intptr_t data, PRI datapri, TMO tmout)
+	ER ercd = rcv_pdq(ID pdqid, intptr_t *p_data, PRI *p_datapri)
+	ER ercd = prcv_pdq(ID pdqid, intptr_t *p_data, PRI *p_datapri)
+	ER ercd = trcv_pdq(ID pdqid, intptr_t *p_data, PRI *p_datapri, TMO tmout)
+	ER ercd = ini_pdq(ID pdqid)
+	ER ercd = ref_pdq(ID pdqid, T_RPDQ *pk_rpdq)
+
+	ER ercd = snd_mbx(ID mbxid, T_MSG *pk_msg)
+	ER ercd = rcv_mbx(ID mbxid, T_MSG **ppk_msg)
+	ER ercd = prcv_mbx(ID mbxid, T_MSG **ppk_msg)
+	ER ercd = trcv_mbx(ID mbxid, T_MSG **ppk_msg, TMO tmout)
+	ER ercd = ini_mbx(ID mbxid)
+	ER ercd = ref_mbx(ID mbxid, T_RMBX *pk_rmbx)
+
+(5) メモリプール管理機能
+
+	ER ercd = get_mpf(ID mpfid, void **p_blk)
+	ER ercd = pget_mpf(ID mpfid, void **p_blk)
+	ER ercd = tget_mpf(ID mpfid, void **p_blk, TMO tmout)
+	ER ercd = rel_mpf(ID mpfid, void *blk)
+	ER ercd = ini_mpf(ID mpfid)
+	ER ercd = ref_mpf(ID mpfid, T_RMPF *pk_rmpf)
+
+(6) 時間管理機能
+
+	ER ercd = get_tim(SYSTIM *p_systim)
+	ER ercd = get_utm(SYSUTM *p_sysutm)
+
+	ER ercd = sta_cyc(ID cycid)
+	ER ercd = stp_cyc(ID cycid)
+	ER ercd = ref_cyc(ID cycid, T_RCYC *pk_rcyc)
+
+	ER ercd = sta_alm(ID almid, RELTIM almtim)
+	ER ercd = ista_alm(ID almid, RELTIM almtim)
+	ER ercd = stp_alm(ID almid)
+	ER ercd = istp_alm(ID almid)
+	ER ercd = ref_alm(ID almid, T_RALM *pk_ralm)
+
+(7) システム状態管理機能
+
+	ER ercd = rot_rdq(PRI tskpri)
+	ER ercd = irot_rdq(PRI tskpri)
+	ER ercd = get_tid(ID *p_tskid)
+	ER ercd = iget_tid(ID *p_tskid)
+	ER ercd = loc_cpu(void)
+	ER ercd = iloc_cpu(void)
+	ER ercd = unl_cpu(void)
+	ER ercd = iunl_cpu(void)
+	ER ercd = dis_dsp(void)
+	ER ercd = ena_dsp(void)
+	bool_t state = sns_ctx(void)
+	bool_t state = sns_loc(void)
+	bool_t state = sns_dsp(void)
+	bool_t state = sns_dpn(void)
+	bool_t state = sns_ker(void)
+	ER ercd = ext_ker(void)
+
+(8) 割込み管理機能
+
+	ER ercd = dis_int(INTNO intno)
+	ER ercd = ena_int(INTNO intno)
+	ER ercd = chg_ipm(PRI intpri)
+	ER ercd = get_ipm(PRI *p_intpri)
+
+(9) CPU例外管理機能
+
+	bool_t stat = xsns_dpn(void *p_excinf)
+	bool_t stat = xsns_xpn(void *p_excinf)
+
+13.2 静的API一覧
+
+(1) タスク管理機能
+
+	CRE_TSK(ID tskid, { ATR tskatr, intptr_t exinf, TASK task,
+								PRI itskpri, SIZE stksz, STK_T *stk })
+
+(3) タスク例外処理機能
+
+	DEF_TEX(ID tskid, { ATR texatr, TEXRTN texrtn })
+
+(4) 同期・通信機能
+
+	CRE_SEM(ID semid, { ATR sematr, uint_t isemcnt, uint_t maxsem })
+	CRE_FLG(ID flgid, { ATR flgatr, FLGPTN iflgptn })
+	CRE_DTQ(ID dtqid, { ATR dtqatr, uint_t dtqcnt, void *dtqmb })
+	CRE_PDQ(ID pdqid, { ATR pdqatr, uint_t pdqcnt, PRI maxdpri, void *pdqmb })
+	CRE_MBX(ID mbxid, { ATR mbxatr, PRI maxmpri, void *mprihd })
+
+(5) メモリプール管理機能
+
+	CRE_MPF(ID mpfid, { ATR mpfatr, uint_t blkcnt, uint_t blksz,
+										MPF_T *mpf, void *mpfmb })
+
+(6) 時間管理機能
+
+	CRE_CYC(ID cycid, { ATR cycatr, intptr_t exinf, CYCHDR cychdr,
+								RELTIM cyctim, RELTIM cycphs })
+	CRE_ALM(ID almid, { ATR almatr, intptr_t exinf, ALMHDR almhdr })
+
+(8) 割込み管理機能
+
+	ATT_ISR({ ATR isratr, intptr_t exinf, INTNO intno, ISR isr, PRI isrpri })
+	DEF_INH(INHNO inhno, { ATR inhatr, INTHDR inthdr })
+	CFG_INT(INTNO intno, { ATR intatr, PRI intpri })
+
+(9) CPU例外管理機能
+
+	DEF_EXC(EXCNO excno, { ATR excatr, EXCHDR exchdr })
+
+(10) システム構成管理機能
+
+	DEF_ICS({ SIZE istksz, STK_T *istk })
+	ATT_INI({ ATR iniatr, intptr_t exinf, INIRTN inirtn })
+	ATT_TER({ ATR teratr, intptr_t exinf, TERRTN terrtn })
+
+13.3 バージョン履歴
+
+	2006年10月29日	Release	1.A.0		最初のリリース
+	2007年2月20日	Release	1.A.1
+	2007年2月20日	Release	1.A.2
+	2007年7月12日	Release	1.B.0		コンフィギュレータを新バージョンに
+	2007年7月12日	Release	1.B.1		ライセンス条件の入れ換え
+	2007年7月16日	Release	1.B.2
+	2007年7月21日	Release	1.B.3		ディレクトリ構成の変更
+	2007年8月20日	Release	1.B.4		拡張パッケージの追加
+	2007年10月16日	Release 1.B.5
+	2007年11月15日	Release 1.0.0		正式版のリリース
+	2007年12月23日	Release 1.1.0
+	2008年3月19日	Release 1.2.0
+	2008年3月21日	Release 1.2.1
+	2008年4月12日	Release 1.3.0		一般公開に向けての最終修正
+	2008年5月13日	Release 1.3.1		最初の一般公開版
+	2008年8月21日	Release 1.3.2
+	2009年5月11日	Release 1.4.0
+	2010年6月28日	Release 1.5.0		拡張パッケージを一般公開
+	2010年8月1日	Release 1.6.0		cfg-1.6に対応
+	2011年5月8日	Release 1.7.0		動的生成機能拡張パッケージ等の追加
+
+以上
Index: /asp_ewarm/asp-1.7.0/doc/version.txt
===================================================================
--- /asp_ewarm/asp-1.7.0/doc/version.txt	(revision 61)
+++ /asp_ewarm/asp-1.7.0/doc/version.txt	(revision 61)
@@ -0,0 +1,915 @@
+
+		TOPPERS/ASPカーネル
+		変更履歴
+
+		対応バージョン: Release 1.7.0
+		最終更新: 2011年4月10日
+
+このドキュメントは，TOPPERS/ASPカーネルのRelease 1.0.0以降の変更履歴を，
+新しい方から順に記述したものである．
+
+----------------------------------------------------------------------
+ TOPPERS/ASP Kernel
+     Toyohashi Open Platform for Embedded Real-Time Systems/
+     Advanced Standard Profile Kernel
+
+ Copyright (C) 2005-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: version.txt 2061 2011-04-10 15:37:35Z ertl-hiro $
+----------------------------------------------------------------------
+
+		TOPPERS/ASPカーネル
+		Release 1.6.0 から 1.7.0 への変更点
+
+○変更点のリスト
+
+・動的生成機能拡張パッケージ，制約タスク拡張パッケージの追加
+
+・タスク例外処理ルーチンの実行開始条件の変更
+	- タスク例外処理ルーチンの実行に関するコードの修正．
+	- ipmflgを導入．
+	- exc_sense_unlockを廃止．
+
+・データキューのコードの修正
+	- データ管理ブロックの導入（他のオブジェクトの実装と整合された）．
+
+・SILのメモリ空間アクセス関数に渡すポインタの方の変更
+	- void *を渡していたところを，サイズにあわせて，uint8_t *などに変更．
+
+・動的生成機能拡張パッケージにあわせた修正
+	- t_stddef.hにMB_T型の定義を追加．
+	- コンフィギュレータのテンプレートファイル（パス2および3）で定義し
+	  ていたターゲット依存情報を，ヘッダファイルに移動．
+	- kernel_def.csvに，それらの値を取得するための記述を追加．
+	- ポーティングガイドの修正．
+
+・オフセットファイルをコンフィギュレータで生成する方法を追加
+	- genoffset.tfを追加．
+	- kernel_def.csvに，SIL_ENDIAN_BIG/LITTLEを追加．
+	- sample/Makefileを修正．
+	- m68k依存部を，この方法に対応させる．
+	- ポーティングガイドの修正．
+
+・その他のバグフィックス
+	- CHECK_INTPRI_CHGIPMの定義中のtypoを修正．
+	- genoffsetのRelease 1.6.0におけるディグレードを修正．
+	- オーバランハンドラ拡張機能で，ターゲット依存部がオーバランハンド
+	  ラをサポートしていない場合には，TCB中のleftotmを定義しないように
+	  修正．
+
+・その他の修正
+	- USE_TSKINICTXBをマクロ定義した場合のスタック領域の先頭番地のチェッ
+	  クのために，GET_STK_TSKINICTXBを導入．
+	- kernel_cfg.c中で，タスクの先頭番地をTASK型にキャストするように
+	  kernel.tfを修正．
+	- ext_tskのE_SYSの返し方を修正．ext_kerもE_SYSを返すコードに修正．
+	- CFG_INTは，有効なすべての割込み番号に対応する方針に従い，コンフィ
+	  ギュレータのエラー条件を修正．
+	- makedepに-Sオプションを追加．
+	- シリアルドライバでサポートするポート数を，最大4ポートに変更．
+
+・ドキュメントの充実，コメントの修正
+
+・バージョン番号の更新
+	- カーネルのバージョン番号を更新．
+
+○ターゲット依存部の要修正箇所（1.6.0 → 1.7.0）
+
+(1) ターゲット依存部で，calltexを呼ぶ代わりにcalltexの内容をインライン
+展開している場合に，call_texrtnを呼び出す条件に「ipmflgがtrue」を追加す
+るように修正．
+
+(2) 割込み出入口処理が正しいかの確認．
+	- ポーティングガイドの割込み出入口処理に追加した「割込み優先度マス
+	  クを，全解除状態（TIPM_ENAALL）の値に設定する … (*h)」の処理が実
+	  現されているかを確認．
+	- ポーティングガイドの6.6.1節の記述を確認（(*g)(*i)の注記を追加する
+	  など，記述を詳細化した）．
+
+(3) exc_sense_unlockの定義を削除．
+
+(4) TARGET_TSKATR，TARGET_ISRATR，TARGET_INHATR，TARGET_INTATR，
+TARGET_EXCATR，TARGET_MIN_STKSZ，CHECK_STKSZ_ALIGNの定義を，ターゲット
+依存部のテンプレートファイル（パス2）からヘッダファイルに移動．
+
+(5) CHECK_FUNC_ALIGN，CHECK_FUNC_NONNULL，CHECK_STACK_ALIGN，
+CHECK_STACK_NONNULL，CHECK_MPF_ALIGN，CHECK_MPF_NONNULLの定義を，ターゲッ
+ト依存部のテンプレートファイル（パス3）からヘッダファイルに移動．
+
+(6) 動的生成機能拡張パッケージに対応．
+	- CHECK_MB_ALIGNの定義を追加．
+	- TSZ_PDQMBの定義を追加（デフォルトで不都合な場合）．
+	- VALID_INTNO_CREINTの定義を追加．
+	- 動的メモリ管理に関する定義を追加．
+
+(7) オフセットファイルをコンフィギュレータで生成する方法への対応（必須
+ではないが，対応しておくことが望ましい）．詳しくは，ポーティングガイド
+の2.5節を参照すること．
+
+(8) USE_TSKINICTXBをマクロ定義し，CHECK_STACK_ALIGNとCHECK_STACK_NONNULL
+のいずれかを定義している場合には，TINIBからスタック領域の先頭番地を取り
+出すためのテンプレートファイル関数GET_STK_TSKINICTXBを定義．
+
+----------------------------------------------------------------------
+
+		TOPPERS/ASPカーネル
+		Release 1.5.0 から 1.6.0 への変更点
+
+○変更点のリスト
+
+・cfgの新しいバージョン（1.6）に対応
+	- offsetof_TINIB_stkszとoffsetof_TINIB_stkの取得記述をターゲット非
+	  依存部に移動．
+
+・ユーティリティの修正
+	- genoffsetに，エンディアン指定をチェックする機能を追加．その際に，
+	  コードを整理．
+
+・その他の修正
+	- TCBのpriorityフィールドを，条件があえばuint_8で定義するように修正．
+	- ターゲット依存部でSIL_ENDIAN_BIGもSIL_ENDIAN_LITTLEも定義されてい
+	  ない場合に，sil.hでエラーを検出するように修正．
+	- システムログ機能のsysog_logmaskとsyslog_lowmask_notの初期値を修正．
+	- makereleaseを，ファイルの重複をチェックするように修正．
+	- test_utm1のエラーメッセージを修正．
+
+・ドキュメントの充実，コメントの修正
+
+・バージョン番号の更新
+	- カーネルのバージョン番号を更新．
+
+○ターゲット依存部の要修正箇所（1.5.0 → 1.6.0）
+
+(1) makeoffset.cの修正
+	- makeoffset.cに，sil_endian関数を追加する（これにより，genoffsetの
+	  エンディアン指定をチェックする機能が有効になる）．
+	- オーバランハンドラ拡張パッケージに対応する場合には，leftotmフィー
+	  ルドが含まれているかを確認する．
+	- 生成されるoffset.hに変化がないことを確認する．
+
+(2) 値取得シンボルテーブルのターゲット依存部の修正
+	- 以下の2行をtarget_def.csv（またはそれに代わるファイル）から削除する．
+		offsetof_TINIB_stksz,"offsetof(TINIB,stksz)"
+		offsetof_TINIB_stk,"offsetof(TINIB,stk)"
+	※ Release 1.5.0における修正を元に戻す．
+
+(3) target_fput_logの実装制限の確認（仕様が修正されたわけではない）
+	- target_fput_log全割込みロック状態で呼び出せるようになっているか確
+	  認する．
+
+----------------------------------------------------------------------
+
+		TOPPERS/ASPカーネル
+		Release 1.4.0 から 1.5.0 への変更点
+
+○変更点のリスト
+
+・カーネル管理外の割込みとCPU例外の扱いの見直し
+	- カーネル管理外の割込みの設定方法を整理・拡張．
+	- カーネル管理外の割込みハンドラは，カーネル内の出入口処理を経由し
+	  ないことを基本とした（ターゲット依存）．
+	- CPU例外ハンドラの出入口処理におけるカーネル管理外のCPU例外の扱い
+	  を規定．
+
+・chg_ipmとget_ipmの仕様変更
+	- chg_ipmとget_ipmは，CPUロック状態では呼べないものとした．
+	- これに伴ってテストプログラムを修正．
+
+・タイマ割込み処理で呼び出したialm_timの基準時間の変更
+	- current_timeの更新後に，タイムイベントの処理を行うように変更．
+	- 有効な最小のシステム時刻としてmin_timeを導入．
+	- pend_updateを廃止．
+
+・タスクのスタックサイズの最小値チェックの追加
+	- スタックサイズが0の場合のエラーを，ターゲット非依存で検出．
+	- ターゲット依存で，タスクのスタックサイズの最小値を設定できるよう
+	  にした．
+
+・タスク初期化コンテキストブロックの追加
+	- ターゲット依存で，タスク初期化コンテキストブロック（TSKINICTXB）
+	  を使用できるようにした．
+
+・ターゲット依存部で定義する名称のリネーム方法の変更
+	- ターゲット依存部で定義し，ターゲット非依存部から参照する名称のリ
+	  ネーム記述を，ターゲット依存部に移動．
+
+・拡張パッケージの追加
+	- ミューテックス機能拡張パッケージ，オーバランハンドラ機能拡張パッ
+	  ケージ，タスク優先度拡張パッケージを，一般公開するファイルに追加．
+	- オーバランハンドラ機能拡張への対応方法を，ポーティングガイドに記載．
+
+・サポートする機能を識別するマクロの定義方法の変更
+	- ターゲット依存部でTOPPERS_TARGET_SUPPORT_XXXXXがマクロ定義されて
+	  いれば，kernel.hでTOPPERS_SUPPORT_XXXXXをマクロ定義する方法に変更．
+
+・システムログ機能の修正
+	- syslog_initializeが呼ばれる前のログ情報の出力に対応．
+	- sysog_logmaskとsyslog_lowmask_notの初期値を修正．
+
+・テストライブラリの修正
+	- test_lib.hとtest_lib.cを，testディレクトリから，それぞれincludeと
+	  libraryディレクトリに移動．
+	- syslog_flush関数を追加．logtask_flushの代わりに使用．
+	- test_finish関数を追加．テストプログラム中でext_kerの代わりに使用．
+	- 以上に伴ってテストプログラムを修正．
+
+・configureの拡張
+	- Makefileのテンプレートを指定するためのオプションを追加．
+
+・その他のバグフィックス
+	- kernel_impl.h中のマクロ名の修正．
+	- kernel.tf中の文法ミスの修正．
+
+・その他の修正
+	- CTXB型をTSKCTXB型に名称変更．
+	- ext_tskで，戻らないはずの処理から戻った場合には，E_SYSを返す．
+	- call_texrtnからdispatchを呼び出す処理を改善．
+	- make_non_waitを，wait.cからwait.hに移動．
+	- xsns_xpn中の冗長な条件式を削除．
+	- TA_DISINTとTA_LEVELをitron.hから削除．
+	- LOG_TEX_LEAVEの第2パラメータを削除．
+	- サンプルのMakefileに，OMIT_WARNING_ALLとOMIT_OPTIMIZATIONを追加．
+	- get_utmに関するテスト(1)（test_utm1）を追加．
+	- test_dlynse.cの表示を改善．
+
+・ドキュメントの充実，コメントの修正
+	- 機能拡張・チューニングガイドに関して，ユーザーズマニュアルに記載．
+	- キュー操作ライブラリ関数に関して，ユーザーズマニュアルに記載．
+	- システムの起動時の初期化処理に関して，ユーザーズマニュアルに記載．
+	- 設計メモを拡充．
+
+・バージョン番号の更新
+	- カーネル仕様のバージョン番号，カーネルのバージョン番号を更新．
+
+○ターゲット依存部の要修正箇所（1.4.0 → 1.5.0）
+
+(1) カーネル管理外の割込みの扱いの変更
+	- カーネル管理外の割込みハンドラの呼び出し方について，これまでの考
+	  え方を変更した．「ターゲット依存部 ポーティングガイド」の6.6.7節
+	  の記述通りに実装されているかチェックする．
+	- TA_NONKERNELを使用できるようにする場合には，target.tfで，
+	  TARGET_INHATRにTA_NONKERNELを設定する．
+	- パス2のテンプレートファイルのターゲット非依存部に，
+	  INTNO_FIX_KERNEL，INHNO_FIX_KERNEL，INTNO_FIX_NONKERNEL，
+	  INHNO_FIX_NONKERNEL，USE_INHINIB_TABLE，USE_INTINIB_TABLEのサポー
+	  トが追加されたので，使用できる場合には使用するように修正する．
+	- カーネル管理の割込みハンドラの出入口処理について，「ターゲット依
+	  存部 ポーティングガイド」の6.6.1節の記述通りに実装されていること
+	  を確認する．
+
+(2) カーネル管理外のCPU例外の扱いの変更
+	- カーネル管理外のCPU例外ハンドラの呼び出し方について，これまでの考
+	  え方を変更した．「ターゲット依存部 ポーティングガイド」の6.7.1節
+	  の記述を参照して，実装を修正する．
+
+(3) ターゲット依存部で定義する名称のリネームの追加
+	- ターゲット依存部で定義し，ターゲット非依存部から参照する名称のリ
+	  ネーム記述を，ターゲット依存部に追加する．ターゲット依存部とチッ
+	  プ依存部の間でも同様の変更を行うことが望ましい．ただし，
+	  arch/logtrace/trace_config.cで定義される名称については，ターゲッ
+	  ト依存部でリネームする．
+
+(4) ターゲット依存部でサポートする機能を示すマクロの変更
+	- ターゲット依存部で定義しているTOPPERS_SUPPORT_DIS_INTを
+	  TOPPERS_TARGET_SUPPORT_DIS_INTに，TOPPERS_SUPPORT_ENA_INTを
+	  TOPPERS_TARGET_SUPPORT_ENA_INTに，TOPPERS_SUPPORT_GET_UTMを
+	  TOPPERS_TARGET_SUPPORT_GET_UTMに，それぞれ変更する．
+
+(5) タスクコンテキストブロックの型名の変更
+	- CTXB型をTSKCTXB型に名称変更する．
+
+(6) 値取得シンボルテーブルのターゲット依存部の修正
+	- 以下の2行をtarget_def.csv（またはそれに代わるファイル）に加える．
+		offsetof_TINIB_stksz,"offsetof(TINIB,stksz)"
+		offsetof_TINIB_stk,"offsetof(TINIB,stk)"
+	※ 新設されたUSE_TSKINICTXBを使う場合には必要ない．
+	※ Release 1.6以降を用いる場合には，この修正は必要はない．
+
+(7) ログマクロの修正
+	- LOG_TEX_LEAVEの第2パラメータが削除されたので，LOG_TEX_LEAVEを定義
+	  している場合には，その定義を変更する．
+
+(8) スタートアップモジュールの修正（bssセクションのクリアを省略している
+	場合のみ）
+	- システムログ機能を使用する場合には，スタートアップモジュールに，
+	  syslog_logmaskとsyslog_lowmask_notを0に初期化するコードを追加する．
+	- トレースログ記録のサンプルコードを組み込んでいる場合には，スター
+      トアップモジュールに，trace_modeを0に初期化するコードを追加する．
+
+(9) タスクのスタックサイズの最小値チェックの設定（オプション）
+	- ターゲット依存に，タスクのスタックサイズの最小値をチェックする場
+	  合には，最小値をTARGET_MIN_STKSZに定義する．
+
+(10) オーバランハンドラ機能拡張への対応（オプション）
+	- オーバランハンドラ機能拡張パッケージに対応する．対応方法について
+	  は，「ターゲット依存部 ポーティングガイド」中の「#ifdef
+	  TOPPERS_SUPPORT_OVRHDR」がある箇所と，5.7節と6.14節を参照すること．
+
+----------------------------------------------------------------------
+
+		TOPPERS/ASPカーネル
+		Release 1.3.2 から 1.4.0 への変更点
+
+○変更点のリスト
+
+・周期ハンドラの仕様変更
+	- sta_cycを呼び出した後，最初に周期ハンドラが起動される時刻を，起動
+	  周期後から，起動位相後に変更．
+
+・TSZ_MPFの定義を削除
+
+・call_atexitの廃止
+	- ターゲット非依存部からcall_atexitを呼び出すのをやめる．
+	  call_atexitで行っていた処理（標準的にはsoftware_term_hookを呼び出
+	  す処理）は，必要であればtarget_exitの先頭で行うこととする．
+
+・get_utmの問題の修正
+	- 周期ハンドラ，アラームハンドラの中でget_utmを呼ぶと，正しい時刻が
+	  返らない問題を修正．
+
+・スケジューラのモジュール性向上
+	- タスク状態（tstat）の変更を，make_runnableではなく，それを呼ぶ側
+	  の関数で行うように修正．
+
+・テンプレート変数の値の自動取得
+	- OMIT_INITIALIZE_INTERRUPTとOMIT_INITIALIZE_EXCEPTIONの2つのテンプ
+	  レート変数の値を，ヘッダファイルの定義から自動取得するように修正．
+
+・トレースログ機能の改善
+	- LOG_TEX_ENTER，LOG_TEX_LEAVEのパラメータに，p_runtskを追加．
+
+・実行時間分布集計モジュールの修正
+	- 時刻取得の方法をターゲット依存で変更できるように修正．
+	- TNUM_HISTの定義を，histgram.hからhistgram.cに移動．
+
+・コンフィギュレータの分離
+	- cfgは，ASPカーネルとは独立したパッケージとして配布することにする．
+
+・マイグレーションガイドの分離
+	- doc/migration.txtは，別途PDFファイルで配布することにする．
+
+・テストプログラム，性能評価プログラムの追加
+	- セマフォ機能のテスト(2)（test_sem2）を追加．
+	- act_tsk，iact_tskの処理時間の評価プログラム（perf4）を追加．
+
+・clean時に削除するファイル
+	- clean時に削除するファイルを，ターゲット依存部で定義するための変数
+	  （CLEAN_FILES）を導入．
+
+・ユーティリティの修正
+	- makereleaseが使うディレクトリ名（asp）を，カレントディレクトリか
+	  ら決定するように修正．
+	- makedepに，Cygwin環境におけるルートディレクトリ名を指定するため
+	  の-Rオプションを追加．MakefileにMAKEDEP_OPTS変数を追加．
+	- gentestをアラームハンドラの複数回起動に対応できるように拡張．
+
+・その他のバグフィックス
+	- リネームするシンボルを修正．
+	- 割込みサービスルーチン，初期化ルーチン，終了処理ルーチンの先頭番
+	  地に関数名以外を記述した場合にも動作するように修正．
+	- Makefile.dependがない場合の問題を修正．
+
+・ドキュメントの充実，コメントの修正
+	- 各ドキュメントにTOPPERSライセンスと目次を追加．
+
+・バージョン番号の更新
+	- カーネル仕様のバージョン番号，カーネルのバージョン番号を更新．
+
+○ターゲット依存部の要修正箇所（1.3.2 → 1.4.0）
+
+(1) call_atexitの廃止
+	- call_atexitを廃止したため，ターゲット依存部から定義を削除する．
+	  call_atexitで行っていた処理（標準的にはsoftware_term_hookを呼び出
+	  す処理）は，必要であればtarget_exitの先頭で行う．
+
+(2) テンプレート変数の値の設定の削除
+	- OMIT_INITIALIZE_INTERRUPTとOMIT_INITIALIZE_EXCEPTIONの2つのテンプ
+	  レート変数の値を，ヘッダファイルの定義から自動取得するように修正
+	  したため，ターゲット依存部（target.tfまたはそこからインクルードさ
+	  れるファイル）で値を定義していれば，その定義を削除する．
+
+(3) makedepを呼ぶ際のオプションの追加
+	- Makefileのターゲット依存部（Makefile.target等）でmakedepを呼んで
+	  いる場合には，$(MAKEDEP_OPTS)を追加する．
+
+	例）@$(PERL) $(SRCDIR)/utils/makedep -C $(CC) $(MAKEDEP_OPTS) \
+			-O "$(CFLAGS) $(KERNEL_CFLAGS)" $< >> Makefile.depend
+
+(4) 簡易パッケージへのコンフィギュレータの追加
+	- コンフィギュレータ（cfg）がターゲット非依存部から分離されたため，
+	  簡易パッケージに入れる場合には，E_PACKAGEにcfgを含めるための記述
+	  を追加する．
+
+	例）INCLUDE ../../cfg/MANIFEST
+
+----------------------------------------------------------------------
+
+		TOPPERS/ASPカーネル
+		Release 1.3.1 から 1.3.2 への変更点
+
+○変更点のリスト
+
+・TMAX_RELTIMをユーザから参照できるマクロに
+	- TMAX_RELTIMの定義を，kernel/time_event.hからinclude/t_stddef.hに
+	  移動．
+
+・const指定の追加
+	- syslog_printf，syslog_print，syslog_wri_log，serial_wri_datのパラ
+	  メータにconst指定を追加．
+
+・TMIN_ISRPRI，TMAX_ISRPRIの導入
+
+・実行時間分布集計モジュールで時間の逆転が疑われるケースの扱い
+	- 実行時間分布集計モジュールで時間の逆転が疑われる度数を計測するよ
+	  うに修正．
+
+・システムログタスクの終了処理の修正
+	- ログバッファに残ったログ情報であることを示す文字列を出力するように
+	  修正．
+
+・コンフィギュレータの修正
+	- 順序付きリストの要素に式を使えるように変更．
+	- 静的APIのパラメータに型キャストが含まれるとパースできないバグの修正．
+	- #pragma onceを用いると行番号がずれるバグの修正．
+	- cfgファイルを指定しなかった場合のエラーメッセージの修正．
+
+・コンフィギュレータが生成するファイル
+	- コンフィギュレータがkernel_cfg.c以外のファイルを生成する場合に対
+	  応するための変数（CFG_OBJS，CFG2_OUT）を導入．
+
+・realclean時に削除するファイル
+	- realclean時に削除するファイルを，ターゲット依存部で定義するための
+	  変数（REALCLEAN_FILES）を導入．
+
+・テストプログラムの追加・拡充
+	- セマフォ機能のテスト(1)を追加．
+	- カーネルの整合性検査にセマフォ毎の検査を追加．
+
+・バグフィックス
+	- 非タスクコンテキスト用スタックの確保時のサイズの誤り．
+	- kernel.tf中のエラーメッセージの誤り．
+	- 実行時間分布集計モジュールにおける最大値の扱いのバグ．
+	- Makefile中のAPPLDIRに複数のディレクトリが定義されている時の扱い．
+	- test/perf.cで，計測回数を10000回になるように修正．
+	- DVE68Kターゲット依存部のtarget.tf中のエラーメッセージの誤り．
+
+・ドキュメントの充実，コメントの修正
+	- 各ドキュメントにTOPPERSライセンスと目次を追加．
+
+・バージョン番号の更新
+
+○ターゲット依存部の要修正箇所（1.3.1 → 1.3.2）
+
+特になし
+
+----------------------------------------------------------------------
+
+		TOPPERS/ASPカーネル
+		Release 1.3.0 から 1.3.1 への変更点
+
+○変更点のリスト
+
+・スタックサイズのエラーチェックを追加
+	- CRE_TSKのstk（タスクのスタック領域の先頭番地）がNULLでない場合に，
+	  stkszを適切な値（ターゲット依存の値の倍数）に丸める処理をやめ，適
+	  切な値でない場合にエラーとするように修正．
+	- DEF_ICSのistk（非タスクコンテキスト用のスタック領域の先頭番地）が
+	  NULLでない場合に，istkszが適切な値（ターゲット依存の値の倍数）で
+	  ない場合のエラーのチェックを追加．
+
+・強制待ち要求ネストの廃止に伴う追加修正
+	- TMAX_SUSCNTの定義を，kernel.hからitron.hに移動．
+	- ref_tskで参照できる情報（T_RTSKのフィールド）からsuscntを削除．
+
+・kernel_api.csvの修正
+	- 各オブジェクトの属性のパラメータを，符号無しに修正．
+
+・kernel_def.csvの修正
+	- 符号付きのシンボルの定義に",signed"を付加．
+
+・itron.hの修正
+	- frsm_tskのタイプミスの修正．
+
+・コンフィギュレータの修正
+	- 組込み関数DUMP, TRACE, NOOPを追加．
+	- $FOREACH$や$IF$等の中身が何もないときに，internal errorになる不具
+	  合を修正（エラーメッセージの適切化）．
+	- $INCLUDE$命令でインクルードしたtfの行番号がずれる不具合を修正．
+	- 64ビット整数が定義されていないと，CSVファイルでsをつけたレコード
+	  が符号付きと扱われない不具合の修正．
+	- 型キャストのパース処理に関する不具合の修正．
+	- エラーの起こった行番号が正しくない不具合の修正．
+	- 同じtskidに対してDEF_TEXが複数あるエラーのチェックを行うように修正．
+	- DEF_TEXを使用した時に，TSK.TSKID[tskid]が0になる不具合の修正．
+	- DEF_INH,CFG_INT,DEF_EXCで同じオブジェクト番号に対する登録が重複し
+	  た場合のエラーチェックを二重に行っている問題の修正．
+
+・配布するファイルの修正
+	- doc/api_spec.txt, ngki_spec.txt, sysstat.txtを除外．
+	- extensionディレクトリを除外．
+
+・ドキュメントの修正，コメントの修正
+
+・バージョン番号の更新
+
+○ターゲット依存部の要修正箇所（1.3.0 → 1.3.1）
+
+(1) スタックサイズのエラーチェックに関する修正箇所
+	- target.tfでkernel.tfをインクルードする前に，CHECK_STKSZ_ALIGNを，
+	  スタックサイズがどの値の倍数になっていなければならないかを設定す
+	  る．
+		例）$CHECK_STKSZ_ALIGN = 4$
+
+(2) ターゲット依存部のユーザーズマニュアルについて
+	- ターゲット依存部のユーザーズマニュアルのファイル名と，そのファイ
+	  ルに記述すべき内容を規定した．「ターゲット依存部 ポーティングガイ
+	  ド」の「9.1 ドキュメント」の節を参照すること．
+
+----------------------------------------------------------------------
+
+		TOPPERS/ASPカーネル
+		Release 1.2.1 から 1.3.0 への変更点
+
+○変更点のリスト
+
+・set_tim（システム時刻の設定）の廃止
+
+・属性の変更
+	- TA_DISINTを廃止して，TA_ENAINTを復活．
+
+・拡張機能・ターゲット定義機能の有無を判別するマクロ名の変更
+	- TOPPERS_EXTENSION_MUTEXをTOPPERS_SUPPORT_MUTEXに．
+	- TOPPERS_EXTENSION_PRI_LEVELをTOPPERS_SUPPORT_PRI_LEVELに．
+	- SUPPORT_???_???をTOPPERS_SUPPORT_???_???に変更し，ターゲット依存
+	  部での定義をtarget_kernel.hに移動する．
+
+・型名・変数名・定数名の変更
+	- SYSUTIM → SYSUTM，sysutim → sysutm，p_sysutim → p_sysutm
+	- SIO_ERDY_SND → SIO_RDY_SND，SIO_ERDY_RCV → SIO_RDY_RCV
+	- sio_ierdy_snd → sio_irdy_snd，sio_ierdy_rcv → sio_irdy_rcv
+
+・cfg1_out.cのコンパイル／リンク方法の変更
+	- cfg1_out.cからtarget_cfg1_out.hをインクルードするように，コンフィ
+	  ギュレータを変更．
+	- ターゲット依存部でtarget_cfg1_out.hを用意する．
+	- cfg1_out.cのリンクは，カーネルと同じ方法をとるように変更．
+
+・コンフィギュレータの修正
+	- cfg1_out.cに生成する内容の変更（前記と関連）．
+	- boost 1.35.0に対応．
+
+・サンプルプログラムの修正
+	- タスク内でのループ回数を固定する機能（TASK_LOOP）を導入．
+
+・バグフィックス
+	- 固定長メモリプール領域の確保方法．
+	- DEF_TEXのエラーで，問題になったDEF_TEXの行番号を表示する．
+
+・用語の変更
+	-「割込みロック」→「全割込みロック」
+
+・ドキュメントの修正
+
+・バージョン番号の更新．
+
+○ターゲット依存部の要修正箇所（1.2.1 → 1.3.0）
+
+(1) TA_DISINTの廃止・TA_ENAINTの復活に伴う修正箇所
+	- TA_DISINTを使った判定をTA_ENAINTを使った判定に変更する．
+		例）((intatr & TA_DISINT) == 0U) → ((intatr & TA_ENAINT) != 0U)
+	- CFG_INTの割込み属性にTA_DISINTが設定されていれば，それを消す．
+		例）CFG_INT(INTNO_SIO, { TA_DISINT | INTATR_SIO, INTPRI_SIO });
+		→ CFG_INT(INTNO_SIO, { INTATR_SIO, INTPRI_SIO });
+	- CFG_INTの割込み属性にTA_DISINTが設定されていなければ，TA_ENAINTを
+	  加える．
+		例）CFG_INT(INTNO_TIMER, { INTATR_TIMER, INTPRI_TIMER });
+		→ CFG_INT(INTNO_TIMER, { TA_ENAINT | INTATR_TIMER, INTPRI_TIMER });
+
+(2) 拡張機能・ターゲット定義機能の有無を判別するマクロ名の変更に伴う修正箇所
+	- SUPPORT_???_???をTOPPERS_SUPPORT_???_???に変更し，ターゲット依存
+	  部での定義をtarget_kernel.hに移動する．
+		TOPPERS_SUPPORT_DIS_INT			dis_intをサポートする
+		TOPPERS_SUPPORT_ENA_INT			ena_intをサポートする
+		TOPPERS_SUPPORT_GET_UTM			get_utmをサポートする
+   - makeoffset.cで，TOPPERS_EXTENSION_MUTEXを参照している場合には，
+     TOPPERS_SUPPORT_MUTEXに変更する．
+
+(3) 型名・変数名・定数名の変更に伴う修正箇所
+	- SYSUTIM → SYSUTM，sysutim → sysutm，p_sysutim → p_sysutm
+	- SIO_ERDY_SND → SIO_RDY_SND，SIO_ERDY_RCV → SIO_RDY_RCV
+	- sio_ierdy_snd → sio_irdy_snd，sio_ierdy_rcv → sio_irdy_rcv
+	★sysutimとerdyを大文字小文字を区別せずにサーチするとよい．
+
+(4) cfg1_out.cのコンパイル／リンク方法の変更に伴う修正箇所
+	- ターゲット依存部で，target_cfg1_out.hを用意する．詳しくは，「ター
+	  ゲット依存部 ポーティングガイド」の7.4節を参照．
+	- 新たに用意したファイルをMANIFESTに追加する．
+
+(5) 警告メッセージへの対処
+	- Makefile.targetに，「COPTS := $(COPTS) -Werror」を追加することを
+	  検討する．カーネル内で厳密な別名規則による警告メッセージが出る場
+	  合には，「KERNEL_CFLAGS := $(KERNEL_CFLAGS) -fno-strict-aliasing」
+	  を追加してもよい．
+
+(6) コメントの修正
+	-「割込みロック」→「全割込みロック」
+
+----------------------------------------------------------------------
+
+		TOPPERS/ASPカーネル
+		Release 1.2.0 から 1.2.1 への変更点
+
+○変更点のリスト
+
+・トレースログ記録のサンプルコードを組み込む方法の変更
+	- configureに-rオプションを追加．
+	- sample/Makefileの修正．
+
+・Makefileのコンフィギュレータ関連部分の変更
+	- コンフィギュレータに対するターゲット依存のオプションを，Makefile
+	  のターゲット依存部で記述するように変更．
+	- コンフィギュレータの各パスのターゲット依存のファイルへの依存関係
+	  を，Makefileのターゲット依存部で記述するように変更．
+
+・バージョン番号の更新．
+
+○ターゲット依存部の要修正箇所（1.1.0 → 1.2.1）
+
+(1) 新しいコンフィギュレータへの対応
+
+・target.tf中で，ヘッダファイルと重複した定数値の定義を行っている場合に
+　は，target_def.cvsに変数記述を行い，重複した定義を削除する．
+
+・コンフィギュレータに対するオプションに，target_def.cvsを読み込ませる
+　指定を追加する．「ターゲット依存部 ポーティングガイド」2.4節の
+　(2-4-15) 項を参照．
+
+・target_check.tfを作成する．「ターゲット依存部 ポーティングガイド」
+　7.3節参照．
+
+・コンフィギュレータの各パスに対して，ターゲット依存のファイルへの依存
+　関係を定義する．「ターゲット依存部 ポーティングガイド」2.7節参照．
+
+(2) データ型と定数の変更・追加
+
+・BOOLをbool_tに，TRUEとFALSEをそれぞれtrueとfalseに変更する．ER_BOOLな
+　どを変更しないように注意すること．コメント中に記述されたこれらのデー
+　タ型と定数も変更すること．
+
+・charをchar_tに変更する．ただし，文字列定数が記述されることが多い引数
+　等は，コンパイラの警告を避けるために，char *のままとする．ターゲット
+　依存部で最低限変更しなければならないのは，以下の2箇所．
+
+	- target_fput_logの引数
+	- sio_snd_chrの第2引数
+
+・target_stddef.h（またはそこからインクルードされるファイル）に，サイズ
+　の指定された浮動小数点型（float32_tとdouble64_t），その最大値・最小値
+　のマクロの定義を追加する．「ターゲット依存部 ポーティングガイド」3.4
+　節参照．開発環境がGCCでarch/gcc/tool_stddef.hを用いており，float型と
+　double型がそれぞれIEEE754準拠の単精度浮動小数点数と倍精度浮動小数点数
+　である場合には，arch/gcc/tool_stddef.hをインクルードする前に，
+　TOPPERS_STDFLOAT_TYPE1をマクロ定義すればよい．
+
+(3) トレースログ記録のサンプルコードの組込み（オプション）
+
+・ターゲット依存部を，トレースログ記録のサンプルコードを使用するように
+　修正する．「ターゲット依存部 ポーティングガイド」6.11.2節参照．
+
+(4) TARGETDIR変数の使用
+
+・Makefileのターゲット依存部で，ターゲット依存部ディレクトリを参照して
+　いる箇所で，$(SRCDIR)/target/$(TARGET)を，$(TARGETDIR)に変更する．
+
+----------------------------------------------------------------------
+
+		TOPPERS/ASPカーネル
+		Release 1.1.0 から 1.2.0 への変更点
+
+○変更点のリスト
+
+・コンフィギュレータを新しいバージョンに差し換え
+	- パス1とパス3にもターゲット依存機能を追加．
+	- FMPカーネルのクラス記述に対応．
+	- 追加ファイル（ターゲット非依存部，cfg以下を除く）
+		kernel/kernel_api.csv, kernel_def.csv, kernel_check.tf
+	- 追加ファイル（ターゲット依存部）
+		target_def.csv, target_check.tf
+	- sample/Makefileを新しいコンフィギュレータに対応させる．
+	- ミューテックス機能拡張でコンフィギュレータのmakeを不要に．
+
+・データ型と定数の変更・追加
+	- BOOL型をbool_t型に変更．
+		BOOL → bool_t，TRUE → true，FALSE → false
+		従来の定義をitron.hに追加．
+	- char型をchar_t型に変更．
+		ただし，文字列定数が記述されることが多い引数等は，コンパイラの
+		警告を避けるために，char *のままとする．
+	- float32_t, double64_tの追加．
+
+・テストプログラムの追加・修正
+	- システムコンフィギュレーションファイルからインクルードするコンフィ
+	  ギュレーションファイルの整理（ボトムアップ順序に）．
+	- テストプログラムの生成スクリプト（utils/gentest）を作成．
+	- ミューテックス機能のテストプログラムを生成スクリプト対応に．
+	- ミューテックス機能拡張にtest_mutex7を追加．
+
+・システムサービスのヘッダファイルのインクルード記述の整理
+	- syssvcの下のヘッダファイルは，#include "syssvc/??????.h"でインク
+      ルードする（??????.cからインクルードする場合を除く）．
+	- Makefileから，-I$(SRCDIR)/syssvcを削除．
+
+・カーネル起動メッセージの出力（banner）機能の独立
+	- syssvc/banner.cfg, banner.hを作成．
+	- syslog.cfgから関連する記述を削除．
+
+・t_syslog.hとsyslog.hの役割の変更
+	- t_syslog.hは，システムログ出力を行うための定義を含むヘッダファイ
+	  ルとし，システムログ機能を操作するための定義は，syslog.hに移す．
+
+・シリアルインタフェースドライバのフラッシュ方法の変更
+	- シリアルインタフェースドライバの強制フラッシュ機能は廃止し，未送
+	  信文字の取出し機能を新設．これを用いた強制フラッシュ処理は，シス
+	  テムログタスクの終了処理ルーチン側で実施．
+
+・タスクディスパッチの要否の判定方法の変更
+	- タスクディスパッチの必要な状態にする関数を，すべて，タスクディス
+	  パッチの要否を返すようにし，p_runtskとp_schedtskの比較による判定
+	  をなるべく使わないように修正．
+
+・トレースログ記録のサンプルコードの使用方法を規定
+	- ポーティングガイドの6.11.2節に，ターゲット依存部でトレースログ記
+	  録のサンプルコードを使用する方法を規定．
+	- DVE68Kターゲット依存部をそれに従うように修正．
+
+・TARGETDIR変数の導入
+	- sample/Makefileで，ターゲット依存部ディレクトリを示す変数
+	  TARGETDIRを定義．
+	- これを使うように，ターゲット依存部を修正．
+
+・その他のバグフィックス
+	- kernel_rename.def：log_???_entry → log_???_enter
+
+・その他の修正
+	- T_RLOG → T_SYSLOG_RLOG
+	- syssvcの下のヘッダファイルにもthrow()を入れる．
+	- makerelease：RELEAEディレクトリがなければ作る．
+
+・ドキュメントの充実．コメントの追加・修正．
+	- doc/migration.txtを作成（現時点では未完成）．
+
+・バージョン番号の更新．
+
+○ターゲット依存部の要修正箇所（1.1.0 → 1.2.0）
+
+(1) 新しいコンフィギュレータへの対応
+
+・target.tf中で，ヘッダファイルと重複した定数値の定義を行っている場合に
+　は，target_def.cvsに変数記述を行い，重複した定義を削除する．
+
+・target_check.tfを作成する．「ターゲット依存部 ポーティングガイド」
+　7.3節参照．
+
+(2) データ型と定数の変更・追加
+
+・BOOLをbool_tに，TRUEとFALSEをそれぞれtrueとfalseに変更する．ER_BOOLな
+　どを変更しないように注意すること．コメント中に記述されたこれらのデー
+　タ型と定数も変更すること．
+
+・charをchar_tに変更する．ただし，文字列定数が記述されることが多い引数
+　等は，コンパイラの警告を避けるために，char *のままとする．ターゲット
+　依存部で最低限変更しなければならないのは，以下の2箇所．
+
+	- target_fput_logの引数
+	- sio_snd_chrの第2引数
+
+・target_stddef.h（またはそこからインクルードされるファイル）に，サイズ
+　の指定された浮動小数点型（float32_tとdouble64_t），その最大値・最小値
+　のマクロの定義を追加する．「ターゲット依存部 ポーティングガイド」3.4
+　節参照．開発環境がGCCでarch/gcc/tool_stddef.hを用いており，float型と
+　double型がそれぞれIEEE754準拠の単精度浮動小数点数と倍精度浮動小数点数
+　である場合には，arch/gcc/tool_stddef.hをインクルードする前に，
+　TOPPERS_STDFLOAT_TYPE1をマクロ定義すればよい．
+
+(3) トレースログ記録のサンプルコードの使用方法に従った修正（オプション）
+
+・ターゲット依存部を，トレースログ記録のサンプルコードを使用するように
+　修正する．「ターゲット依存部 ポーティングガイド」6.11.2節参照．
+
+(4) TARGETDIR変数の使用
+
+・Makefileのターゲット依存部で，ターゲット依存部ディレクトリを参照して
+　いる箇所で，$(SRCDIR)/target/$(TARGET)を，$(TARGETDIR)に変更する．
+
+----------------------------------------------------------------------
+
+		TOPPERS/ASPカーネル
+		Release 1.0.0 から 1.1.0 への変更点
+
+○変更点のリスト
+
+・frsm_tskをカーネルから削除．itron.hにマクロ定義として残す
+
+・カーネルのトレースログ機能の改修
+	- トレースログマクロを使う側のファイルで，デフォルト定義を与える．
+	- nulltraceを廃止．logtraceを修正．
+	- ターゲット依存部でのトレースログ取得方法を標準化．
+	- INTHDR_ENTRYとEXCHDR_ENTRYにパラメータを追加．
+	- target_putcを，target_fput_logにリネーム．
+
+・システムログ機能をカーネルから外して，システムサービスの位置付けに
+	- syslog.c，syslog.h，banner.cを，kernelからsyssvcに移動．
+	- システムログ機能のサービスコールの名称にsyslog_を付加．
+
+・システムサービスのディレクトリの位置付けの明確化
+	- logtask.hとserial.hを，includeからsyssvcに移動．
+	- vasyslog.cを，libraryからsyssvcに移動．
+
+・リリースパッケージの形態を整備
+	- utils/makereleaseを作成．utils/genmanifestを削除．
+	- MANIFESTファイルに，パッケージ名とバージョン番号を記述．
+	- MANIFESTファイルのINCLUDE記述を変更．
+
+・出入口処理の番地の変数／フィールド名の変更
+	- 割込みハンドラ／CPU例外ハンドラの出入口処理の番地（FP型）の変数／
+	  フィールド名をint_entry／exc_entryに変更．コメントも修正．
+
+・DVE68K／M68K依存部の修正．
+	- target.tf中のエラーメッセージの修正．
+	- logtraceを使うように修正．
+
+・その他の修正．
+	- 固定長メモリプール初期化ブロックの生成に関するバグを修正．
+	- configureで，cfgが生成されているかのチェックを厳密化．
+	- sample/Makefileにおいて，ライブラリに関する依存記述の修正．
+	- sample/sample1.cfgにおいて，システムサービスの定義順を変更．
+	- extension/MANIFESTに，MANIFESTを追加．
+
+・ドキュメントの充実．コメントの追加・修正．
+
+・バージョン番号の更新．
+
+○ターゲット依存部の修正箇所（1.0.0 → 1.1.0）
+
+・カーネルのトレースログ機能の中で，ターゲット依存部で実装する必要があ
+　るものを実装する．詳しくは，porting.txtの6.1.2節，6.5.2節，6.6.1節，
+　6.7.1節を参照すること．
+
+・INTHDR_ENTRYとEXCHDR_ENTRYに2番目のパラメータが追加されたのに対応する．
+
+・TARGET_NAMEとCOPYRIGHT_TARGETを，target_config.hからtarget_syssvc.hに
+　移動する．COPYRIGHT_TARGETはTARGET_COPYRIGHTにリネームする．
+
+・target_putcをtarget_fput_logにリネームし，その宣言をtarget_config.hか
+　らtarget_syssvc.hに移動する．関数定義は，target_config.cに置いたまま
+　でよい．関数宣言・定義の上のコメントを修正する．
+
+・割込みハンドラの出入口処理の番地（FP型）の変数／フィールド名をinthdr
+　からint_entryに，CPU例外ハンドラの出入口処理の番地（FP型）の変数／
+　フィールド名をexchdrからexct_entryに，それぞれ変更する．これに関連す
+　るx_define_inhとx_define_excのコメントを修正する．
+
+・トレースログを記録しない場合には，target_config.hから「#include
+　"nulltrace/trace_config.h"」を削除する．
+
+・トレースログを記録する場合には，target_syssvc.hに「#include
+　"logtrace/trace_config.h"」を追加する．また，target_config.h中の
+　「#include "logtrace/trace_config.h"」の位置を前の方に移動する．
+
+・MANIFESTとE_PACKAGEを作成／修正する．MANIFEST中に，必要に応じて，
+　PACKAGEディレクティブとVERSIONディレクティブを追加する．また，
+　INCLUDEディレクティブのパラメータを，ディレクトリ名からファイル名に変
+　更する．ターゲットシステム毎に，E_PACKAGEを作成する．詳しくは，
+　user.txtの２章とporting.txtの9.1節を参照すること．
+
+----------------------------------------------------------------------
Index: /asp_ewarm/asp-1.7.0/extension/MANIFEST
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/MANIFEST	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/MANIFEST	(revision 61)
@@ -0,0 +1,144 @@
+PACKAGE asp
+
+MANIFEST
+
+mutex/include/kernel.h
+
+mutex/kernel/Makefile.kernel
+mutex/kernel/allfunc.h
+mutex/kernel/check.h
+mutex/kernel/kernel.tf
+mutex/kernel/kernel_api.csv
+mutex/kernel/kernel_def.csv
+mutex/kernel/kernel_impl.h
+mutex/kernel/kernel_int.h
+mutex/kernel/kernel_rename.def
+mutex/kernel/kernel_rename.h
+mutex/kernel/kernel_unrename.h
+mutex/kernel/mutex.c
+mutex/kernel/mutex.h
+mutex/kernel/sys_manage.c
+mutex/kernel/task.c
+mutex/kernel/task.h
+mutex/kernel/task_manage.c
+mutex/kernel/task_refer.c
+
+mutex/test/bit_kernel.c
+mutex/test/bit_mutex.c
+mutex/test/test_mutex.h
+mutex/test/test_mutex1.c
+mutex/test/test_mutex1.cfg
+mutex/test/test_mutex2.c
+mutex/test/test_mutex2.cfg
+mutex/test/test_mutex3.c
+mutex/test/test_mutex3.cfg
+mutex/test/test_mutex4.c
+mutex/test/test_mutex4.cfg
+mutex/test/test_mutex4.h
+mutex/test/test_mutex5.c
+mutex/test/test_mutex5.cfg
+mutex/test/test_mutex5.h
+mutex/test/test_mutex6.c
+mutex/test/test_mutex6.cfg
+mutex/test/test_mutex6.h
+mutex/test/test_mutex7.c
+mutex/test/test_mutex7.cfg
+mutex/test/test_mutex7.h
+mutex/test/test_mutex8.c
+mutex/test/test_mutex8.cfg
+mutex/test/test_mutex8.h
+
+ovrhdr/include/kernel.h
+
+ovrhdr/kernel/Makefile.kernel
+ovrhdr/kernel/allfunc.h
+ovrhdr/kernel/check.h
+ovrhdr/kernel/kernel.tf
+ovrhdr/kernel/kernel_api.csv
+ovrhdr/kernel/kernel_int.h
+ovrhdr/kernel/kernel_rename.def
+ovrhdr/kernel/kernel_rename.h
+ovrhdr/kernel/kernel_unrename.h
+ovrhdr/kernel/overrun.c
+ovrhdr/kernel/overrun.h
+ovrhdr/kernel/task.c
+ovrhdr/kernel/task.h
+ovrhdr/kernel/task_manage.c
+
+ovrhdr/sample/sample1.c
+ovrhdr/sample/sample1.cfg
+ovrhdr/sample/sample1.h
+
+pri_level/include/kernel.h
+pri_level/kernel/kernel_rename.def
+pri_level/kernel/kernel_rename.h
+pri_level/kernel/kernel_unrename.h
+pri_level/kernel/task.c
+pri_level/kernel/task.h
+pri_level/test/test_task1.h
+
+rstr_task/include/kernel.h
+
+rstr_task/kernel/Makefile.kernel
+rstr_task/kernel/allfunc.h
+rstr_task/kernel/check.h
+rstr_task/kernel/kernel.tf
+rstr_task/kernel/kernel_def.csv
+rstr_task/kernel/kernel_rename.def
+rstr_task/kernel/kernel_rename.h
+rstr_task/kernel/kernel_unrename.h
+rstr_task/kernel/sys_manage.c
+rstr_task/kernel/task.c
+rstr_task/kernel/task.h
+rstr_task/kernel/task_manage.c
+rstr_task/kernel/task_sync.c
+
+rstr_task/test/test_rstr1.c
+rstr_task/test/test_rstr1.cfg
+rstr_task/test/test_rstr1.h
+rstr_task/test/test_rstr2.c
+rstr_task/test/test_rstr2.cfg
+rstr_task/test/test_rstr2.h
+
+dcre/include/kernel.h
+
+dcre/kernel/Makefile.kernel
+dcre/kernel/alarm.c
+dcre/kernel/alarm.h
+dcre/kernel/allfunc.h
+dcre/kernel/check.h
+dcre/kernel/cyclic.c
+dcre/kernel/cyclic.h
+dcre/kernel/dataqueue.c
+dcre/kernel/dataqueue.h
+dcre/kernel/eventflag.c
+dcre/kernel/eventflag.h
+dcre/kernel/interrupt.c
+dcre/kernel/interrupt.h
+dcre/kernel/kernel.tf
+dcre/kernel/kernel_api.csv
+dcre/kernel/kernel_check.tf
+dcre/kernel/kernel_def.csv
+dcre/kernel/kernel_impl.h
+dcre/kernel/kernel_rename.def
+dcre/kernel/kernel_rename.h
+dcre/kernel/kernel_unrename.h
+dcre/kernel/mailbox.c
+dcre/kernel/mailbox.h
+dcre/kernel/mempfix.c
+dcre/kernel/mempfix.h
+dcre/kernel/pridataq.c
+dcre/kernel/pridataq.h
+dcre/kernel/semaphore.c
+dcre/kernel/semaphore.h
+dcre/kernel/startup.c
+dcre/kernel/task.c
+dcre/kernel/task.h
+dcre/kernel/task_except.c
+dcre/kernel/task_manage.c
+dcre/kernel/task_refer.c
+dcre/kernel/task_sync.c
+
+dcre/sample/sample1.c
+dcre/sample/sample1.cfg
+dcre/sample/sample1.h
Index: /asp_ewarm/asp-1.7.0/extension/dcre/include/kernel.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/dcre/include/kernel.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/dcre/include/kernel.h	(revision 61)
@@ -0,0 +1,639 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: kernel.h 1966 2010-11-20 07:23:56Z ertl-hiro $
+ */
+
+/*
+ *		TOPPERS/ASPJ[l Wwb_t@C
+ *
+ *  TOPPERS/ASPJ[lªT|[g·éT[rXR[Ìé¾ÆCKvÈf[
+ *  ^^CèC}NÌè`ðÜÞwb_t@CD
+ *
+ *  AZu¾êÌ\[Xt@C©ç±Ìt@CðCN[h·é
+ *  ÍCTOPPERS_MACRO_ONLYðè`µÄ¨­D±êÉæèC}Nè`ÈOð
+ *  ­æ¤ÉÈÁÄ¢éD
+ *
+ *  ±Ìt@CðCN[h·éOÉCN[hµÄ¨­×«t@C
+ *  ÍÈ¢D
+ */
+
+#ifndef TOPPERS_KERNEL_H
+#define TOPPERS_KERNEL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *	TOPPERS¤ÊÌf[^^EèE}N
+ */
+#include <t_stddef.h>
+
+/*
+ *  ^[QbgË¶
+ */
+#include "target_kernel.h"
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  f[^^Ìè`
+ */
+
+/*
+ *  rbgp^[âIuWFNgÔÌ^è`
+ */
+typedef	uint_t		TEXPTN;		/* ^XNáOvöÌrbgp^[ */
+typedef	uint_t		FLGPTN;		/* CxgtOÌrbgp^[ */
+typedef	uint_t		INTNO;		/* ÝÔ */
+typedef	uint_t		INHNO;		/* ÝnhÔ */
+typedef	uint_t		EXCNO;		/* CPUáOnhÔ */
+
+/*
+ *  PÊÌ^è`
+ */
+typedef void	(*TASK)(intptr_t exinf);
+typedef void	(*TEXRTN)(TEXPTN texptn, intptr_t exinf);
+typedef void	(*CYCHDR)(intptr_t exinf);
+typedef void	(*ALMHDR)(intptr_t exinf);
+typedef void	(*ISR)(intptr_t exinf);
+typedef void	(*INTHDR)(void);
+typedef void	(*EXCHDR)(void *p_excinf);
+typedef void	(*INIRTN)(intptr_t exinf);
+typedef void	(*TERRTN)(intptr_t exinf);
+
+/*
+ *  ÌæmÛÌ½ßÌ^è`
+ */
+#ifndef TOPPERS_STK_T
+#define TOPPERS_STK_T	intptr_t
+#endif /* TOPPERS_STK_T */
+typedef	TOPPERS_STK_T	STK_T;	/* X^bNÌæðmÛ·é½ßÌ^ */
+
+#ifndef TOPPERS_MPF_T
+#define TOPPERS_MPF_T	intptr_t
+#endif /* TOPPERS_MPF_T */
+typedef	TOPPERS_MPF_T	MPF_T;	/* Åè·v[ÌæðmÛ·é½ßÌ^ */
+
+/*
+ *  bZ[Wwb_Ì^è`
+ */
+typedef	struct t_msg {			/* [{bNXÌbZ[Wwb_ */
+	struct t_msg	*pk_next;
+} T_MSG;
+
+typedef	struct t_msg_pri {		/* Dæxt«bZ[Wwb_ */
+	T_MSG	msgque;				/* bZ[Wwb_ */
+	PRI		msgpri;				/* bZ[WDæx */
+} T_MSG_PRI;
+
+/*
+ *  pPbg`®Ìè`
+ */
+typedef struct t_ctsk {
+	ATR			tskatr;		/* ^XN®« */
+	intptr_t	exinf;		/* ^XNÌg£îñ */
+	TASK		task;		/* ^XNÌC[`ÌæªÔn */
+	PRI			itskpri;	/* ^XNÌN®Dæx */
+	SIZE		stksz;		/* ^XNÌX^bNÌæÌTCY */
+	STK_T 		*stk;		/* ^XNÌX^bNÌæÌæªÔn */
+} T_CTSK;
+
+typedef struct t_rtsk {
+	STAT	tskstat;	/* ^XNóÔ */
+	PRI		tskpri;		/* ^XNÌ»ÝDæx */
+	PRI		tskbpri;	/* ^XNÌx[XDæx */
+	STAT	tskwait;	/* Ò¿vö */
+	ID		wobjid;		/* Ò¿ÎÛÌIuWFNgÌID */
+	TMO		lefttmo;	/* ^CAEg·éÜÅÌÔ */
+	uint_t	actcnt;		/* N®vL
+[CO */
+	uint_t	wupcnt;		/* N°vL
+[CO */
+} T_RTSK;
+
+typedef struct t_dtex {
+	ATR		texatr;		/* ^XNáO[`®« */
+	TEXRTN	texrtn;		/* ^XNáO[`ÌæªÔn */
+} T_DTEX;
+
+typedef struct t_rtex {
+	STAT	texstat;	/* ^XNáOÌóÔ */
+	TEXPTN	pndptn;		/* Û¯áOvö */
+} T_RTEX;
+
+typedef struct t_csem {
+	ATR		sematr;		/* Z}tH®« */
+	uint_t	isemcnt;	/* Z}tHÌú¹ */
+	uint_t	maxsem;		/* Z}tHÌÅå¹ */
+} T_CSEM;
+
+typedef struct t_rsem {
+	ID		wtskid;		/* Z}tHÌÒ¿sñÌæªÌ^XNÌIDÔ */
+	uint_t	semcnt;		/* Z}tHÌ»ÝÌ¹ */
+} T_RSEM;
+
+typedef struct t_cflg {
+	ATR		flgatr;		/* CxgtO®« */
+	FLGPTN	iflgptn;	/* CxgtOÌúrbgp^[ */
+} T_CFLG;
+
+typedef struct t_rflg {
+	ID		wtskid;		/* CxgtOÌÒ¿sñÌæªÌ^XNÌIDÔ */
+	FLGPTN	flgptn;		/* CxgtOÌ»ÝÌrbgp^[ */
+} T_RFLG;
+
+typedef struct t_cdtq {
+	ATR		dtqatr;		/* f[^L
+[®« */
+	uint_t	dtqcnt;		/* f[^L
+[ÇÌæÉi[Å«éf[^ */
+	void 	*dtqmb;		/* f[^L
+[ÇÌæÌæªÔn */
+} T_CDTQ;
+
+typedef struct t_rdtq {
+	ID		stskid;		/* f[^L
+[ÌMÒ¿sñÌæªÌ^XNÌIDÔ */
+	ID		rtskid;		/* f[^L
+[ÌóMÒ¿sñÌæªÌ^XNÌIDÔ */
+	uint_t	sdtqcnt;	/* f[^L
+[ÇÌæÉi[³êÄ¢éf[^Ì */
+} T_RDTQ;
+
+typedef struct t_cpdq {
+	ATR		pdqatr;		/* Dæxf[^L
+[®« */
+	uint_t	pdqcnt;		/* Dæxf[^L
+[ÇÌæÉi[Å«éf[^ */
+	PRI		maxdpri;	/* Dæxf[^L
+[ÉMÅ«éf[^DæxÌÅ
+						   ål */
+	void 	*pdqmb;		/* Dæxf[^L
+[ÇÌæÌæªÔn */
+} T_CPDQ;
+
+typedef struct t_rpdq {
+	ID		stskid;		/* Dæxf[^L
+[ÌMÒ¿sñÌæªÌ^XN
+						   ÌIDÔ */
+	ID		rtskid;		/* Dæxf[^L
+[ÌóMÒ¿sñÌæªÌ^XN
+						   ÌIDÔ */
+	uint_t	spdqcnt;	/* Dæxf[^L
+[ÇÌæÉi[³êÄ¢éf[
+						   ^Ì */
+} T_RPDQ;
+
+typedef struct t_cmbx {
+	ATR		mbxatr;		/* [{bNX®« */
+	PRI		maxmpri;	/* Dæx[{bNXÉMÅ«ébZ[WDæ
+						   xÌÅål */
+	void 	*mprihd;	/* DæxÊÌbZ[WL
+[wb_ÌæÌæªÔn */
+} T_CMBX;
+
+typedef struct t_rmbx {
+	ID		wtskid;		/* [{bNXÌÒ¿sñÌæªÌ^XNÌIDÔ */
+	T_MSG	*pk_msg;	/* bZ[WL
+[ÌæªÉÂÈªê½bZ[W
+						   ÌæªÔn */
+} T_RMBX;
+
+typedef struct t_cmpf {
+	ATR		mpfatr;		/* Åè·v[®« */
+	uint_t	blkcnt;		/* l¾Å«éÅè·ubNÌ */
+	uint_t	blksz;		/* Åè·ubNÌTCY */
+	MPF_T 	*mpf;		/* Åè·v[ÌæÌæªÔn */
+	void 	*mpfmb;		/* Åè·v[ÇÌæÌæªÔn */
+} T_CMPF;
+
+typedef struct t_rmpf {
+	ID		wtskid;		/* Åè·v[ÌÒ¿sñÌæªÌ^XNÌ
+						   IDÔ */
+	uint_t	fblkcnt;	/* Åè·v[ÌæÌó«ÌæÉè
+						   t¯é±ÆªÅ«éÅè·ubNÌ */
+} T_RMPF;
+
+typedef struct t_ccyc {
+	ATR			cycatr;		/* üúnh®« */
+	intptr_t	exinf;		/* üúnhÌg£îñ */
+	CYCHDR		cychdr;		/* üúnhÌæªÔn */
+	RELTIM		cyctim;		/* üúnhÌN®üú */
+	RELTIM		cycphs;		/* üúnhÌN®Ê */
+} T_CCYC;
+
+typedef struct t_rcyc {
+	STAT	cycstat;	/* üúnhÌ®ìóÔ */
+	RELTIM	lefttim;	/* ÉüúnhðN®·éÜÅÌÎÔ */
+} T_RCYC;
+
+typedef struct t_calm {
+	ATR			almatr;		/* A[nh®« */
+	intptr_t	exinf;		/* A[nhÌg£îñ */
+	ALMHDR		almhdr;		/* A[nhÌæªÔn */
+} T_CALM;
+
+typedef struct t_ralm {
+	STAT	almstat;	/* A[nhÌ®ìóÔ */
+	RELTIM	lefttim;	/* A[nhðN®·éÜÅÌÎÔ */
+} T_RALM;
+
+typedef struct t_cisr {
+	ATR			isratr;		/* ÝT[rX[`®« */
+	intptr_t	exinf;		/* ÝT[rX[`Ìg£îñ */
+	INTNO		intno;		/* ÝT[rX[`ðo^·éÝÔ */
+	ISR			isr;		/* ÝT[rX[`ÌæªÔn */
+	PRI			isrpri;		/* ÝT[rX[`Dæx */
+} T_CISR;
+
+/*
+ *  T[rXR[Ìé¾
+ */
+
+/*
+ *  ^XNÇ@\
+ */
+extern ER_UINT	acre_tsk(const T_CTSK *pk_ctsk) throw();
+extern ER		del_tsk(ID tskid) throw();
+extern ER		act_tsk(ID tskid) throw();
+extern ER		iact_tsk(ID tskid) throw();
+extern ER_UINT	can_act(ID tskid) throw();
+extern ER		ext_tsk(void) throw();
+extern ER		ter_tsk(ID tskid) throw();
+extern ER		chg_pri(ID tskid, PRI tskpri) throw();
+extern ER		get_pri(ID tskid, PRI *p_tskpri) throw();
+extern ER		get_inf(intptr_t *p_exinf) throw();
+extern ER		ref_tsk(ID tskid, T_RTSK *pk_rtsk) throw();
+
+/*
+ *  ^XNt®¯ú@\
+ */
+extern ER		slp_tsk(void) throw();
+extern ER		tslp_tsk(TMO tmout) throw();
+extern ER		wup_tsk(ID tskid) throw();
+extern ER		iwup_tsk(ID tskid) throw();
+extern ER_UINT	can_wup(ID tskid) throw();
+extern ER		rel_wai(ID tskid) throw();
+extern ER		irel_wai(ID tskid) throw();
+extern ER		sus_tsk(ID tskid) throw();
+extern ER		rsm_tsk(ID tskid) throw();
+extern ER		dly_tsk(RELTIM dlytim) throw();
+
+/*
+ *  ^XNáO@\
+ */
+extern ER		def_tex(ID tskid, const T_DTEX *pk_dtex) throw();
+extern ER		ras_tex(ID tskid, TEXPTN rasptn) throw();
+extern ER		iras_tex(ID tskid, TEXPTN rasptn) throw();
+extern ER		dis_tex(void) throw();
+extern ER		ena_tex(void) throw();
+extern bool_t	sns_tex(void) throw();
+extern ER		ref_tex(ID tskid, T_RTEX *pk_rtex) throw();
+
+/*
+ *  ¯úEÊM@\
+ */
+extern ER_ID	acre_sem(const T_CSEM *pk_csem) throw();
+extern ER		del_sem(ID semid) throw();
+extern ER		sig_sem(ID semid) throw();
+extern ER		isig_sem(ID semid) throw();
+extern ER		wai_sem(ID semid) throw();
+extern ER		pol_sem(ID semid) throw();
+extern ER		twai_sem(ID semid, TMO tmout) throw();
+extern ER		ini_sem(ID semid) throw();
+extern ER		ref_sem(ID semid, T_RSEM *pk_rsem) throw();
+
+extern ER_ID	acre_flg(const T_CFLG *pk_cflg) throw();
+extern ER		del_flg(ID flgid) throw();
+extern ER		set_flg(ID flgid, FLGPTN setptn) throw();
+extern ER		iset_flg(ID flgid, FLGPTN setptn) throw();
+extern ER		clr_flg(ID flgid, FLGPTN clrptn) throw();
+extern ER		wai_flg(ID flgid, FLGPTN waiptn,
+						MODE wfmode, FLGPTN *p_flgptn) throw();
+extern ER		pol_flg(ID flgid, FLGPTN waiptn,
+						MODE wfmode, FLGPTN *p_flgptn) throw();
+extern ER		twai_flg(ID flgid, FLGPTN waiptn,
+						MODE wfmode, FLGPTN *p_flgptn, TMO tmout) throw();
+extern ER		ini_flg(ID flgid) throw();
+extern ER		ref_flg(ID flgid, T_RFLG *pk_rflg) throw();
+
+extern ER_ID	acre_dtq(const T_CDTQ *pk_cdtq) throw();
+extern ER		del_dtq(ID dtqid) throw();
+extern ER		snd_dtq(ID dtqid, intptr_t data) throw();
+extern ER		psnd_dtq(ID dtqid, intptr_t data) throw();
+extern ER		ipsnd_dtq(ID dtqid, intptr_t data) throw();
+extern ER		tsnd_dtq(ID dtqid, intptr_t data, TMO tmout) throw();
+extern ER		fsnd_dtq(ID dtqid, intptr_t data) throw();
+extern ER		ifsnd_dtq(ID dtqid, intptr_t data) throw();
+extern ER		rcv_dtq(ID dtqid, intptr_t *p_data) throw();
+extern ER		prcv_dtq(ID dtqid, intptr_t *p_data) throw();
+extern ER		trcv_dtq(ID dtqid, intptr_t *p_data, TMO tmout) throw();
+extern ER		ini_dtq(ID dtqid) throw();
+extern ER		ref_dtq(ID dtqid, T_RDTQ *pk_rdtq) throw();
+
+extern ER_ID	acre_pdq(const T_CPDQ *pk_cpdq) throw();
+extern ER		del_pdq(ID pdqid) throw();
+extern ER		snd_pdq(ID pdqid, intptr_t data, PRI datapri) throw();
+extern ER		psnd_pdq(ID pdqid, intptr_t data, PRI datapri) throw();
+extern ER		ipsnd_pdq(ID pdqid, intptr_t data, PRI datapri) throw();
+extern ER		tsnd_pdq(ID pdqid, intptr_t data,
+										PRI datapri, TMO tmout) throw();
+extern ER		rcv_pdq(ID pdqid, intptr_t *p_data, PRI *p_datapri) throw();
+extern ER		prcv_pdq(ID pdqid, intptr_t *p_data, PRI *p_datapri) throw();
+extern ER		trcv_pdq(ID pdqid, intptr_t *p_data,
+										PRI *p_datapri, TMO tmout) throw();
+extern ER		ini_pdq(ID pdqid) throw();
+extern ER		ref_pdq(ID pdqid, T_RPDQ *pk_rpdq) throw();
+
+extern ER_ID	acre_mbx(const T_CMBX *pk_cmbx) throw();
+extern ER		del_mbx(ID mbxid) throw();
+extern ER		snd_mbx(ID mbxid, T_MSG *pk_msg) throw();
+extern ER		rcv_mbx(ID mbxid, T_MSG **ppk_msg) throw();
+extern ER		prcv_mbx(ID mbxid, T_MSG **ppk_msg) throw();
+extern ER		trcv_mbx(ID mbxid, T_MSG **ppk_msg, TMO tmout) throw();
+extern ER		ini_mbx(ID mbxid) throw();
+extern ER		ref_mbx(ID mbxid, T_RMBX *pk_rmbx) throw();
+
+/*
+ *  v[Ç@\
+ */
+extern ER_ID	acre_mpf(const T_CMPF *pk_cmpf) throw();
+extern ER		del_mpf(ID mpfid) throw();
+extern ER		get_mpf(ID mpfid, void **p_blk) throw();
+extern ER		pget_mpf(ID mpfid, void **p_blk) throw();
+extern ER		tget_mpf(ID mpfid, void **p_blk, TMO tmout) throw();
+extern ER		rel_mpf(ID mpfid, void *blk) throw();
+extern ER		ini_mpf(ID mpfid) throw();
+extern ER		ref_mpf(ID mpfid, T_RMPF *pk_rmpf) throw();
+
+/*
+ *  ÔÇ@\
+ */
+extern ER		get_tim(SYSTIM *p_systim) throw();
+extern ER		get_utm(SYSUTM *p_sysutm) throw();
+
+extern ER_ID	acre_cyc(const T_CCYC *pk_ccyc) throw();
+extern ER		del_cyc(ID cycid) throw();
+extern ER		sta_cyc(ID cycid) throw();
+extern ER		stp_cyc(ID cycid) throw();
+extern ER		ref_cyc(ID cycid, T_RCYC *pk_rcyc) throw();
+
+extern ER_ID	acre_alm(const T_CALM *pk_calm) throw();
+extern ER		del_alm(ID almid) throw();
+extern ER		sta_alm(ID almid, RELTIM almtim) throw();
+extern ER		ista_alm(ID almid, RELTIM almtim) throw();
+extern ER		stp_alm(ID almid) throw();
+extern ER		istp_alm(ID almid) throw();
+extern ER		ref_alm(ID almid, T_RALM *pk_ralm) throw();
+
+/*
+ *  VXeóÔÇ@\
+ */
+extern ER		rot_rdq(PRI tskpri) throw();
+extern ER		irot_rdq(PRI tskpri) throw();
+extern ER		get_tid(ID *p_tskid) throw();
+extern ER		iget_tid(ID *p_tskid) throw();
+extern ER		loc_cpu(void) throw();
+extern ER		iloc_cpu(void) throw();
+extern ER		unl_cpu(void) throw();
+extern ER		iunl_cpu(void) throw();
+extern ER		dis_dsp(void) throw();
+extern ER		ena_dsp(void) throw();
+extern bool_t	sns_ctx(void) throw();
+extern bool_t	sns_loc(void) throw();
+extern bool_t	sns_dsp(void) throw();
+extern bool_t	sns_dpn(void) throw();
+extern bool_t	sns_ker(void) throw();
+extern ER		ext_ker(void) throw();
+
+/*
+ *  ÝÇ@\
+ */
+extern ER_ID	acre_isr(const T_CISR *pk_cisr) throw();
+extern ER		del_isr(ID isrid) throw();
+extern ER		dis_int(INTNO intno) throw();
+extern ER		ena_int(INTNO intno) throw();
+extern ER		chg_ipm(PRI intpri) throw();
+extern ER		get_ipm(PRI *p_intpri) throw();
+
+/*
+ *  CPUáOÇ@\
+ */
+extern bool_t	xsns_dpn(void *p_excinf) throw();
+extern bool_t	xsns_xpn(void *p_excinf) throw();
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  IuWFNg®«Ìè`
+ */
+#define TA_ACT			UINT_C(0x02)	/* ^XNðN®³ê½óÔÅ¶¬ */
+
+#define TA_TPRI			UINT_C(0x01)	/* ^XNÌÒ¿sñðDæxÉ */
+#define TA_MPRI			UINT_C(0x02)	/* bZ[WL
+[ðDæxÉ */
+
+#define TA_WMUL			UINT_C(0x02)	/* ¡ÌÒ¿^XN */
+#define TA_CLR			UINT_C(0x04)	/* CxgtOÌNAwè */
+
+#define TA_STA			UINT_C(0x02)	/* üúnhð®ìóÔÅ¶¬ */
+
+#define TA_NONKERNEL	UINT_C(0x02)	/* J[lÇOÌÝ */
+
+#define TA_ENAINT		UINT_C(0x01)	/* ÝvÖ~tOðNA */
+#define TA_EDGE			UINT_C(0x02)	/* GbWgK */
+
+/*
+ *  T[rXR[Ì®ì[hÌè`
+ */
+#define TWF_ORW			UINT_C(0x01)	/* CxgtOÌORÒ¿ */
+#define TWF_ANDW		UINT_C(0x02)	/* CxgtOÌANDÒ¿ */
+
+/*
+ *  IuWFNgÌóÔÌè`
+ */
+#define TTS_RUN			UINT_C(0x01)	/* ÀsóÔ */
+#define TTS_RDY			UINT_C(0x02)	/* ÀsÂ\óÔ */
+#define TTS_WAI			UINT_C(0x04)	/* Ò¿óÔ */
+#define TTS_SUS			UINT_C(0x08)	/* ­§Ò¿óÔ */
+#define TTS_WAS			UINT_C(0x0c)	/* ñdÒ¿óÔ */
+#define TTS_DMT			UINT_C(0x10)	/* x~óÔ */
+
+#define TTW_SLP			UINT_C(0x0001)	/* N°Ò¿ */
+#define TTW_DLY			UINT_C(0x0002)	/* ÔoßÒ¿ */
+#define TTW_SEM			UINT_C(0x0004)	/* Z}tHÌ¹l¾Ò¿ */
+#define TTW_FLG			UINT_C(0x0008)	/* CxgtOÒ¿ */
+#define TTW_SDTQ		UINT_C(0x0010)	/* f[^L
+[ÖÌMÒ¿ */
+#define TTW_RDTQ		UINT_C(0x0020)	/* f[^L
+[©çÌóMÒ¿ */
+#define TTW_SPDQ		UINT_C(0x0100)	/* Dæxf[^L
+[ÖÌMÒ¿ */
+#define TTW_RPDQ		UINT_C(0x0200)	/* Dæxf[^L
+[©çÌóMÒ¿ */
+#define TTW_MBX			UINT_C(0x0040)	/* [{bNX©çÌóMÒ¿ */
+#define TTW_MPF			UINT_C(0x2000)	/* Åè·ubNÌl¾Ò¿ */
+
+#define TTEX_ENA		UINT_C(0x01)	/* ^XNáOÂóÔ */
+#define TTEX_DIS		UINT_C(0x02)	/* ^XNáOÖ~óÔ */
+
+#define TCYC_STP		UINT_C(0x01)	/* üúnhª®ìµÄ¢È¢ */
+#define TCYC_STA		UINT_C(0x02)	/* üúnhª®ìµÄ¢é */
+
+#define TALM_STP		UINT_C(0x01)	/* A[nhª®ìµÄ¢È¢ */
+#define TALM_STA		UINT_C(0x02)	/* A[nhª®ìµÄ¢é */
+
+/*
+ *  »Ì¼ÌèÌè`
+ */
+#define TSK_SELF		0			/* ©^XNwè */
+#define TSK_NONE		0			/* Y·é^XNªÈ¢ */
+
+#define TPRI_SELF		0			/* ©^XNÌx[XDæx */
+#define TPRI_INI		0			/* ^XNÌN®Dæx */
+
+#define TIPM_ENAALL		0			/* ÝDæx}XNSð */
+
+/*
+ *  \¬èÆ}N
+ */
+
+/*
+ *  T|[g·é@\
+ */
+#ifdef TOPPERS_TARGET_SUPPORT_DIS_INT
+#define TOPPERS_SUPPORT_DIS_INT			/* dis_intªT|[g³êÄ¢é */
+#endif /* TOPPERS_TARGET_SUPPORT_DIS_INT */
+
+#ifdef TOPPERS_TARGET_SUPPORT_ENA_INT
+#define TOPPERS_SUPPORT_ENA_INT			/* ena_intªT|[g³êÄ¢é */
+#endif /* TOPPERS_TARGET_SUPPORT_ENA_INT */
+
+#ifdef TOPPERS_TARGET_SUPPORT_GET_UTM
+#define TOPPERS_SUPPORT_GET_UTM			/* get_utmªT|[g³êÄ¢é */
+#endif /* TOPPERS_TARGET_SUPPORT_GET_UTM */
+
+#define TOPPERS_SUPPORT_DYNAMIC_CRE		/* ®I¶¬@\g£ */
+
+/*
+ *  DæxÌÍÍ
+ */
+#define TMIN_TPRI		1			/* ^XNDæxÌÅ¬liÅlj*/
+#define TMAX_TPRI		16			/* ^XNDæxÌÅåliÅálj*/
+#define TMIN_DPRI		1			/* f[^DæxÌÅ¬liÅlj*/
+#define TMAX_DPRI		16			/* f[^DæxÌÅåliÅálj*/
+#define TMIN_MPRI		1			/* bZ[WDæxÌÅ¬liÅlj*/
+#define TMAX_MPRI		16			/* bZ[WDæxÌÅåliÅálj*/
+#define TMIN_ISRPRI		1			/* ÝT[rX[`DæxÌÅ¬l */
+#define TMAX_ISRPRI		16			/* ÝT[rX[`DæxÌÅål */
+
+/*
+ *  o[Wîñ
+ */
+#define TKERNEL_MAKER	UINT_C(0x0118)	/* J[lÌ[J[R[h */
+#define TKERNEL_PRID	UINT_C(0x0007)	/* J[lÌ¯ÊÔ */
+#define TKERNEL_SPVER	UINT_C(0xf513)	/* J[ldlÌo[WÔ */
+#define TKERNEL_PRVER	UINT_C(0x1070)	/* J[lÌo[WÔ */
+
+/*
+ *  L
+[COñÌÅål
+ */
+#define TMAX_ACTCNT		UINT_C(1)		/* N®vL
+[COÌÅål */
+#define TMAX_WUPCNT		UINT_C(1)		/* N°vL
+[COÌÅål */
+
+/*
+ *  rbgp^[Ìrbg
+ */
+#ifndef TBIT_TEXPTN					/* ^XNáOvöÌrbg */
+#define TBIT_TEXPTN		(sizeof(TEXPTN) * CHAR_BIT)
+#endif /* TBIT_TEXPTN */
+
+#ifndef TBIT_FLGPTN					/* CxgtOÌrbg */
+#define TBIT_FLGPTN		(sizeof(FLGPTN) * CHAR_BIT)
+#endif /* TBIT_FLGPTN */
+
+/*
+ *  ÌæmÛÌ½ßÌ}N
+ *
+ *  ÈºÌTOPPERS_COUNT_SZÆTOPPERS_ROUND_SZÌè`ÍCunitª2ÌÐæÅ 
+ *  é±Æð¼èµÄ¢éD
+ */
+#ifndef TOPPERS_COUNT_SZ
+#define TOPPERS_COUNT_SZ(sz, unit)	(((sz) + (unit) - 1) / (unit))
+#endif /* TOPPERS_COUNT_SZ */
+#ifndef TOPPERS_ROUND_SZ
+#define TOPPERS_ROUND_SZ(sz, unit)	(((sz) + (unit) - 1) & ~((unit) - 1))
+#endif /* TOPPERS_ROUND_SZ */
+
+#define COUNT_STK_T(sz)		TOPPERS_COUNT_SZ(sz, sizeof(STK_T))
+#define ROUND_STK_T(sz)		TOPPERS_ROUND_SZ(sz, sizeof(STK_T))
+
+#define COUNT_MPF_T(blksz)	TOPPERS_COUNT_SZ(blksz, sizeof(MPF_T))
+#define ROUND_MPF_T(blksz)	TOPPERS_ROUND_SZ(blksz, sizeof(MPF_T))
+
+#define TSZ_DTQMB(dtqcnt)	(sizeof(intptr_t) * (dtqcnt))
+#define TCNT_DTQMB(dtqcnt)	TOPPERS_COUNT_SZ(TSZ_DTQMB(dtqcnt), sizeof(MB_T))
+
+#ifndef TSZ_PDQMB
+#define TSZ_PDQMB(pdqcnt)	(sizeof(intptr_t) * 3 * (pdqcnt))
+#endif /* TSZ_PDQMB */
+#define TCNT_PDQMB(pdqcnt)	TOPPERS_COUNT_SZ(TSZ_PDQMB(pdqcnt), sizeof(MB_T))
+
+#define TSZ_MPFMB(blkcnt)	(sizeof(uint_t) * (blkcnt))
+#define TCNT_MPFMB(blkcnt)	TOPPERS_COUNT_SZ(TSZ_MPFMB(blkcnt), sizeof(MB_T))
+
+/*
+ *  »Ì¼Ì\¬è
+ */
+#define TMAX_MAXSEM		UINT_MAX	/* Z}tHÌÅå¹ÌÅål */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* TOPPERS_KERNEL_H */
Index: /asp_ewarm/asp-1.7.0/extension/dcre/kernel/Makefile.kernel
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/dcre/kernel/Makefile.kernel	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/dcre/kernel/Makefile.kernel	(revision 61)
@@ -0,0 +1,144 @@
+#
+#  TOPPERS/ASP Kernel
+#      Toyohashi Open Platform for Embedded Real-Time Systems/
+#      Advanced Standard Profile Kernel
+# 
+#  Copyright (C) 2003 by Embedded and Real-Time Systems Laboratory
+#                              Toyohashi Univ. of Technology, JAPAN
+#  Copyright (C) 2005-2010 by Embedded and Real-Time Systems Laboratory
+#              Graduate School of Information Science, Nagoya Univ., JAPAN
+# 
+#  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+#  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+#  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+#  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+#       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+#      XR[hÉÜÜêÄ¢é±ÆD
+#  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+#      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+#      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+#      Ì³ÛØKèðfÚ·é±ÆD
+#  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+#      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+#      ÆD
+#    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+#        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+#    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+#        ñ·é±ÆD
+#  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+#      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+#      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+#      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+#      ÆÓ·é±ÆD
+# 
+#  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+#  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+#  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+#  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+#  ÌÓCðíÈ¢D
+# 
+#  @(#) $Id: Makefile.kernel 1966 2010-11-20 07:23:56Z ertl-hiro $
+# 
+
+#
+#		J[lÌt@C\¬Ìè`
+#
+
+#
+#  1ÂÌ\[Xt@C©ç¡ÌIuWFNgt@Cð¶¬·éæ¤Éì
+#  ¬³ê½\[Xt@CÌXg
+#
+KERNEL_FCSRCS = startup.c task.c wait.c time_event.c \
+				task_manage.c task_refer.c task_sync.c task_except.c \
+				semaphore.c eventflag.c dataqueue.c pridataq.c mailbox.c \
+				mempfix.c time_manage.c cyclic.c alarm.c \
+				sys_manage.c interrupt.c exception.c
+
+#
+#  e\[Xt@C©ç¶¬³êéIuWFNgt@CÌXg
+#
+startup = sta_ker.o ext_ker.o kermem.o
+
+task = tskini.o tsksched.o tskrun.o tsknrun.o \
+		tskdmt.o tskact.o tskpri.o tskrot.o tsktex.o
+
+wait = waimake.o waicmp.o waitmo.o waitmook.o \
+		wairel.o wobjwai.o wobjwaitmo.o iniwque.o
+
+time_event = tmeini.o tmeup.o tmedown.o tmeins.o tmedel.o tmeltim.o sigtim.o
+
+task_manage = acre_tsk.o del_tsk.o act_tsk.o iact_tsk.o can_act.o \
+		ext_tsk.o ter_tsk.o chg_pri.o get_pri.o get_inf.o
+
+task_refer = ref_tsk.o
+
+task_sync = slp_tsk.o tslp_tsk.o wup_tsk.o iwup_tsk.o can_wup.o \
+		rel_wai.o irel_wai.o sus_tsk.o rsm_tsk.o dly_tsk.o
+
+task_except = def_tex.o ras_tex.o iras_tex.o dis_tex.o ena_tex.o \
+		sns_tex.o ref_tex.o
+
+semaphore = semini.o acre_sem.o del_sem.o sig_sem.o isig_sem.o \
+		wai_sem.o pol_sem.o twai_sem.o ini_sem.o ref_sem.o
+
+eventflag = flgini.o flgcnd.o acre_flg.o del_flg.o set_flg.o iset_flg.o \
+		clr_flg.o wai_flg.o pol_flg.o twai_flg.o ini_flg.o ref_flg.o
+
+dataqueue = dtqini.o dtqenq.o dtqfenq.o dtqdeq.o dtqsnd.o dtqfsnd.o dtqrcv.o \
+		acre_dtq.o del_dtq.o snd_dtq.o psnd_dtq.o ipsnd_dtq.o tsnd_dtq.o \
+		fsnd_dtq.o ifsnd_dtq.o rcv_dtq.o prcv_dtq.o trcv_dtq.o ini_dtq.o \
+		ref_dtq.o
+
+pridataq = pdqini.o pdqenq.o pdqdeq.o pdqsnd.o pdqrcv.o \
+		acre_pdq.o del_pdq.o snd_pdq.o psnd_pdq.o ipsnd_pdq.o tsnd_pdq.o \
+		rcv_pdq.o prcv_pdq.o trcv_pdq.o ini_pdq.o ref_pdq.o
+
+mailbox = mbxini.o acre_mbx.o del_mbx.o snd_mbx.o rcv_mbx.o \
+		prcv_mbx.o trcv_mbx.o ini_mbx.o ref_mbx.o
+
+mempfix = mpfini.o mpfget.o acre_mpf.o del_mpf.o get_mpf.o\
+		 pget_mpf.o tget_mpf.o rel_mpf.o ini_mpf.o ref_mpf.o
+
+time_manage = get_tim.o get_utm.o
+
+cyclic = cycini.o acre_cyc.o del_cyc.o sta_cyc.o stp_cyc.o ref_cyc.o cyccal.o
+
+alarm = almini.o acre_alm.o del_alm.o sta_alm.o ista_alm.o stp_alm.o \
+		istp_alm.o ref_alm.o almcal.o
+
+sys_manage = rot_rdq.o irot_rdq.o get_tid.o iget_tid.o \
+		loc_cpu.o iloc_cpu.o unl_cpu.o iunl_cpu.o dis_dsp.o ena_dsp.o \
+		sns_ctx.o sns_loc.o sns_dsp.o sns_dpn.o sns_ker.o
+
+interrupt = isrini.o isrcal.o acre_isr.o del_isr.o \
+		intini.o dis_int.o ena_int.o chg_ipm.o get_ipm.o
+
+exception = excini.o xsns_dpn.o xsns_xpn.o
+
+#
+#  ¶¬³êéIuWFNgt@CÌË¶ÖWÌè`
+#
+$(startup) $(startup:.o=.s) $(startup:.o=.d): startup.c
+$(task) $(task:.o=.s) $(task:.o=.d): task.c
+$(wait) $(wait:.o=.s) $(wait:.o=.d): wait.c
+$(time_event) $(time_event:.o=.s) $(time_event:.o=.d): time_event.c
+$(task_manage) $(task_manage:.o=.s) $(task_manage:.o=.d): task_manage.c
+$(task_refer) $(task_refer:.o=.s) $(task_refer:.o=.d): task_refer.c
+$(task_sync) $(task_sync:.o=.s) $(task_sync:.o=.d): task_sync.c
+$(task_except) $(task_except:.o=.s) $(task_except:.o=.d): task_except.c
+$(semaphore) $(semaphore:.o=.s) $(semaphore:.o=.d): semaphore.c
+$(eventflag) $(eventflag:.o=.s) $(eventflag:.o=.d): eventflag.c
+$(dataqueue) $(dataqueue:.o=.s) $(dataqueue:.o=.d): dataqueue.c
+$(pridataq) $(pridataq:.o=.s) $(pridataq:.o=.d): pridataq.c
+$(mailbox) $(mailbox:.o=.s) $(mailbox:.o=.d): mailbox.c
+$(mempfix) $(mempfix:.o=.s) $(mempfix:.o=.d): mempfix.c
+$(time_manage) $(time_manage:.o=.s) $(time_manage:.o=.d): time_manage.c
+$(cyclic) $(cyclic:.o=.s) $(cyclic:.o=.d): cyclic.c
+$(alarm) $(alarm:.o=.s) $(alarm:.o=.d): alarm.c
+$(sys_manage) $(sys_manage:.o=.s) $(sys_manage:.o=.d): sys_manage.c
+$(interrupt) $(interrupt:.o=.s) $(interrupt:.o=.d): interrupt.c
+$(exception) $(exception:.o=.s) $(exception:.o=.d): exception.c
Index: /asp_ewarm/asp-1.7.0/extension/dcre/kernel/alarm.c
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/dcre/kernel/alarm.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/dcre/kernel/alarm.c	(revision 61)
@@ -0,0 +1,472 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: alarm.c 1966 2010-11-20 07:23:56Z ertl-hiro $
+ */
+
+/*
+ *		A[nh@\
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "alarm.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_ALM_ENTER
+#define LOG_ALM_ENTER(p_almcb)
+#endif /* LOG_ALM_ENTER */
+
+#ifndef LOG_ALM_LEAVE
+#define LOG_ALM_LEAVE(p_almcb)
+#endif /* LOG_ALM_LEAVE */
+
+#ifndef LOG_ACRE_ALM_ENTER
+#define LOG_ACRE_ALM_ENTER(pk_calm)
+#endif /* LOG_ACRE_ALM_ENTER */
+
+#ifndef LOG_ACRE_ALM_LEAVE
+#define LOG_ACRE_ALM_LEAVE(ercd)
+#endif /* LOG_ACRE_ALM_LEAVE */
+
+#ifndef LOG_DEL_ALM_ENTER
+#define LOG_DEL_ALM_ENTER(almid)
+#endif /* LOG_DEL_ALM_ENTER */
+
+#ifndef LOG_DEL_ALM_LEAVE
+#define LOG_DEL_ALM_LEAVE(ercd)
+#endif /* LOG_DEL_ALM_LEAVE */
+
+#ifndef LOG_STA_ALM_ENTER
+#define LOG_STA_ALM_ENTER(almid, almtim)
+#endif /* LOG_STA_ALM_ENTER */
+
+#ifndef LOG_STA_ALM_LEAVE
+#define LOG_STA_ALM_LEAVE(ercd)
+#endif /* LOG_STA_ALM_LEAVE */
+
+#ifndef LOG_ISTA_ALM_ENTER
+#define LOG_ISTA_ALM_ENTER(almid, almtim)
+#endif /* LOG_ISTA_ALM_ENTER */
+
+#ifndef LOG_ISTA_ALM_LEAVE
+#define LOG_ISTA_ALM_LEAVE(ercd)
+#endif /* LOG_ISTA_ALM_LEAVE */
+
+#ifndef LOG_STP_ALM_ENTER
+#define LOG_STP_ALM_ENTER(almid)
+#endif /* LOG_STP_ALM_ENTER */
+
+#ifndef LOG_STP_ALM_LEAVE
+#define LOG_STP_ALM_LEAVE(ercd)
+#endif /* LOG_STP_ALM_LEAVE */
+
+#ifndef LOG_ISTP_ALM_ENTER
+#define LOG_ISTP_ALM_ENTER(almid)
+#endif /* LOG_ISTP_ALM_ENTER */
+
+#ifndef LOG_ISTP_ALM_LEAVE
+#define LOG_ISTP_ALM_LEAVE(ercd)
+#endif /* LOG_ISTP_ALM_LEAVE */
+
+#ifndef LOG_REF_ALM_ENTER
+#define LOG_REF_ALM_ENTER(almid, pk_ralm)
+#endif /* LOG_REF_ALM_ENTER */
+
+#ifndef LOG_REF_ALM_LEAVE
+#define LOG_REF_ALM_LEAVE(ercd, pk_ralm)
+#endif /* LOG_REF_ALM_LEAVE */
+
+/*
+ *  A[nhÌ
+ */
+#define tnum_alm	((uint_t)(tmax_almid - TMIN_ALMID + 1))
+#define tnum_salm	((uint_t)(tmax_salmid - TMIN_ALMID + 1))
+
+/*
+ *  A[nhID©çA[nhÇubNðæèo·½ßÌ}N
+ */
+#define INDEX_ALM(almid)	((uint_t)((almid) - TMIN_ALMID))
+#define get_almcb(almid)	(&(almcb_table[INDEX_ALM(almid)]))
+
+#ifdef TOPPERS_almini
+
+/*
+ *  gpµÄ¢È¢A[nhÇubNÌXg
+ *
+ *  A[nhÇubNÌæªÉÍL
+[ÉÂÈ®½ßÌÌæªÈ
+ *  ¢½ßC^CCxgubNitmevtbjÌÌæðp¢éD
+ */
+QUEUE	free_almcb;
+
+/*
+ *  A[nh@\Ìú»
+ */
+void
+initialize_alarm(void)
+{
+	uint_t	i, j;
+	ALMCB	*p_almcb;
+	ALMINIB	*p_alminib;
+
+	for (p_almcb = almcb_table, i = 0; i < tnum_salm; p_almcb++, i++) {
+		p_almcb->p_alminib = &(alminib_table[i]);
+		p_almcb->almsta = false;
+	}
+	queue_initialize(&free_almcb);
+	for (j = 0; i < tnum_alm; p_almcb++, i++, j++) {
+		p_alminib = &(aalminib_table[j]);
+		p_alminib->almatr = TA_NOEXS;
+		p_almcb->p_alminib = ((const ALMINIB *) p_alminib);
+		queue_insert_prev(&free_almcb, ((QUEUE *) &(p_almcb->tmevtb)));
+	}
+}
+
+#endif /* TOPPERS_almini */
+
+/*
+ *  A[nhÌ¶¬
+ */
+#ifdef TOPPERS_acre_alm
+
+ER_UINT
+acre_alm(const T_CALM *pk_calm)
+{
+	ALMCB	*p_almcb;
+	ALMINIB	*p_alminib;
+	ER		ercd;
+
+	LOG_ACRE_ALM_ENTER(pk_calm);
+	CHECK_TSKCTX_UNL();
+	CHECK_RSATR(pk_calm->almatr, TA_NULL);
+	CHECK_ALIGN_FUNC(pk_calm->almhdr);
+	CHECK_NONNULL_FUNC(pk_calm->almhdr);
+
+	t_lock_cpu();
+	if (queue_empty(&free_almcb)) {
+		ercd = E_NOID;
+	}
+	else {
+		p_almcb = ((ALMCB *)(((char *) queue_delete_next(&free_almcb))
+												- offsetof(ALMCB, tmevtb)));
+		p_alminib = (ALMINIB *)(p_almcb->p_alminib);
+		p_alminib->almatr = pk_calm->almatr;
+		p_alminib->exinf = pk_calm->exinf;
+		p_alminib->almhdr = pk_calm->almhdr;
+
+		p_almcb->almsta = false;
+		ercd = ALMID(p_almcb);
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_ACRE_ALM_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_acre_alm */
+
+/*
+ *  A[nhÌí
+ */
+#ifdef TOPPERS_del_alm
+
+ER
+del_alm(ID almid)
+{
+	ALMCB	*p_almcb;
+	ALMINIB	*p_alminib;
+	ER		ercd;
+
+	LOG_DEL_ALM_ENTER(almid);
+	CHECK_TSKCTX_UNL();
+	CHECK_ALMID(almid);
+	p_almcb = get_almcb(almid);
+
+	t_lock_cpu();
+	if (p_almcb->p_alminib->almatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (ALMID(p_almcb) > tmax_salmid) {
+		if (p_almcb->almsta) {
+			p_almcb->almsta = false;
+			tmevtb_dequeue(&(p_almcb->tmevtb));
+		}
+
+		p_alminib = (ALMINIB *)(p_almcb->p_alminib);
+		p_alminib->almatr = TA_NOEXS;
+		queue_insert_prev(&free_almcb, ((QUEUE *) &(p_almcb->tmevtb)));
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_OBJ;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_DEL_ALM_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_del_alm */
+
+/*
+ *  A[nhÌ®ìJn
+ */
+#ifdef TOPPERS_sta_alm
+
+ER
+sta_alm(ID almid, RELTIM almtim)
+{
+	ALMCB	*p_almcb;
+	ER		ercd;
+
+	LOG_STA_ALM_ENTER(almid, almtim);
+	CHECK_TSKCTX_UNL();
+	CHECK_ALMID(almid);
+	CHECK_PAR(almtim <= TMAX_RELTIM);
+	p_almcb = get_almcb(almid);
+
+	t_lock_cpu();
+	if (p_almcb->p_alminib->almatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (p_almcb->almsta) {
+		tmevtb_dequeue(&(p_almcb->tmevtb));
+	}
+	else {
+		p_almcb->almsta = true;
+	}
+	tmevtb_enqueue(&(p_almcb->tmevtb), almtim,
+								(CBACK) call_almhdr, (void *) p_almcb);
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_STA_ALM_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_sta_alm */
+
+/*
+ *  A[nhÌ®ìJniñ^XNReLXgpj
+ */
+#ifdef TOPPERS_ista_alm
+
+ER
+ista_alm(ID almid, RELTIM almtim)
+{
+	ALMCB	*p_almcb;
+	ER		ercd;
+
+	LOG_ISTA_ALM_ENTER(almid, almtim);
+	CHECK_INTCTX_UNL();
+	CHECK_ALMID(almid);
+	CHECK_PAR(almtim <= TMAX_RELTIM);
+	p_almcb = get_almcb(almid);
+
+	i_lock_cpu();
+	if (p_almcb->p_alminib->almatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (p_almcb->almsta) {
+		tmevtb_dequeue(&(p_almcb->tmevtb));
+	}
+	else {
+		p_almcb->almsta = true;
+	}
+	tmevtb_enqueue(&(p_almcb->tmevtb), almtim,
+								(CBACK) call_almhdr, (void *) p_almcb);
+	ercd = E_OK;
+	i_unlock_cpu();
+
+  error_exit:
+	LOG_ISTA_ALM_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ista_alm */
+
+/*
+ *  A[nhÌ®ìâ~
+ */
+#ifdef TOPPERS_stp_alm
+
+ER
+stp_alm(ID almid)
+{
+	ALMCB	*p_almcb;
+	ER		ercd;
+
+	LOG_STP_ALM_ENTER(almid);
+	CHECK_TSKCTX_UNL();
+	CHECK_ALMID(almid);
+	p_almcb = get_almcb(almid);
+
+	t_lock_cpu();
+	if (p_almcb->p_alminib->almatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (p_almcb->almsta) {
+		p_almcb->almsta = false;
+		tmevtb_dequeue(&(p_almcb->tmevtb));
+	}
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_STP_ALM_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_stp_alm */
+
+/*
+ *  A[nhÌ®ìâ~iñ^XNReLXgpj
+ */
+#ifdef TOPPERS_istp_alm
+
+ER
+istp_alm(ID almid)
+{
+	ALMCB	*p_almcb;
+	ER		ercd;
+
+	LOG_ISTP_ALM_ENTER(almid);
+	CHECK_INTCTX_UNL();
+	CHECK_ALMID(almid);
+	p_almcb = get_almcb(almid);
+
+	i_lock_cpu();
+	if (p_almcb->p_alminib->almatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (p_almcb->almsta) {
+		p_almcb->almsta = false;
+		tmevtb_dequeue(&(p_almcb->tmevtb));
+	}
+	ercd = E_OK;
+	i_unlock_cpu();
+
+  error_exit:
+	LOG_ISTP_ALM_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_istp_alm */
+
+/*
+ *  A[nhÌóÔQÆ
+ */
+#ifdef TOPPERS_ref_alm
+
+ER
+ref_alm(ID almid, T_RALM *pk_ralm)
+{
+	ALMCB	*p_almcb;
+	ER		ercd;
+    
+	LOG_REF_ALM_ENTER(almid, pk_ralm);
+	CHECK_TSKCTX_UNL();
+	CHECK_ALMID(almid);
+	p_almcb = get_almcb(almid);
+
+	t_lock_cpu();
+	if (p_almcb->p_alminib->almatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else {
+		if (p_almcb->almsta) {
+			pk_ralm->almstat = TALM_STA;
+			pk_ralm->lefttim = tmevt_lefttim(&(p_almcb->tmevtb));
+		}
+		else {
+			pk_ralm->almstat = TALM_STP;
+		}
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_REF_ALM_LEAVE(ercd, pk_ralm);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ref_alm */
+
+/*
+ *  A[nhN®[`
+ */
+#ifdef TOPPERS_almcal
+
+void
+call_almhdr(ALMCB *p_almcb)
+{
+	PRI		saved_ipm;
+
+	/*
+	 *  A[nhðâ~óÔÉ·éD
+	 */
+	p_almcb->almsta = false;
+
+	/*
+	 *  A[nhðCCPUbNðóÔÅÄÑo·D
+	 */
+	saved_ipm = i_get_ipm();
+	i_unlock_cpu();
+
+	LOG_ALM_ENTER(p_almcb);
+	(*((ALMHDR)(p_almcb->p_alminib->almhdr)))(p_almcb->p_alminib->exinf);
+	LOG_ALM_LEAVE(p_almcb);
+
+	if (!i_sense_lock()) {
+		i_lock_cpu();
+	}
+	i_set_ipm(saved_ipm);
+}
+
+#endif /* TOPPERS_almcal */
Index: /asp_ewarm/asp-1.7.0/extension/dcre/kernel/alarm.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/dcre/kernel/alarm.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/dcre/kernel/alarm.h	(revision 61)
@@ -0,0 +1,113 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: alarm.h 1966 2010-11-20 07:23:56Z ertl-hiro $
+ */
+
+/*
+ *		A[nh@\
+ */
+
+#ifndef TOPPERS_ALARM_H
+#define TOPPERS_ALARM_H
+
+#include <queue.h>
+#include "time_event.h"
+
+/*
+ *  A[nhú»ubN
+ */
+typedef struct alarm_handler_initialization_block {
+	ATR			almatr;			/* A[nh®« */
+	intptr_t	exinf;			/* A[nhÌg£îñ */
+	ALMHDR		almhdr;			/* A[nhÌN®Ôn */
+} ALMINIB;
+
+/*
+ *  A[nhÇubN
+ */
+typedef struct alarm_handler_control_block {
+	const ALMINIB *p_alminib;	/* ú»ubNÖÌ|C^ */
+	bool_t		almsta;			/* A[nhÌ®ìóÔ */
+	TMEVTB		tmevtb;			/* ^CCxgubN */
+} ALMCB;
+
+/*
+ *  gpµÄ¢È¢A[nhÇubNÌXg
+ */
+extern QUEUE	free_almcb;
+
+/*
+ *  A[nhIDÌÅålikernel_cfg.cj
+ */
+extern const ID	tmax_almid;
+extern const ID	tmax_salmid;
+
+/*
+ *  A[nhú»ubNÌGAikernel_cfg.cj
+ */
+extern const ALMINIB	alminib_table[];
+extern ALMINIB			aalminib_table[];
+
+/*
+ *  A[nhÇubNÌGAikernel_cfg.cj
+ */
+extern ALMCB	almcb_table[];
+
+/*
+ *  A[nhÇubN©çA[nhIDðæèo·½ßÌ
+ *  }N
+ */
+#define	ALMID(p_almcb)	((ID)(((p_almcb) - almcb_table) + TMIN_ALMID))
+
+/*
+ *  A[nh@\Ìú»
+ */
+extern void	initialize_alarm(void);
+
+/*
+ *  A[nhN®[`
+ */
+extern void	call_almhdr(ALMCB *p_almcb);
+
+#endif /* TOPPERS_ALARM_H */
Index: /asp_ewarm/asp-1.7.0/extension/dcre/kernel/allfunc.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/dcre/kernel/allfunc.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/dcre/kernel/allfunc.h	(revision 61)
@@ -0,0 +1,269 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2005-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: allfunc.h 1966 2010-11-20 07:23:56Z ertl-hiro $
+ */
+
+/*
+ *		·×ÄÌÖðRpC·é½ßÌè`
+ */
+
+#ifndef TOPPERS_ALLFUNC_H
+#define TOPPERS_ALLFUNC_H
+
+/* startup.c */
+#define TOPPERS_sta_ker
+#define TOPPERS_ext_ker
+#define TOPPERS_kermem
+
+/* task.c */
+#define TOPPERS_tskini
+#define TOPPERS_tsksched
+#define TOPPERS_tskrun
+#define TOPPERS_tsknrun
+#define TOPPERS_tskdmt
+#define TOPPERS_tskact
+#define TOPPERS_tskpri
+#define TOPPERS_tskrot
+#define TOPPERS_tsktex
+
+/* wait.c */
+#define TOPPERS_waimake
+#define TOPPERS_waicmp
+#define TOPPERS_waitmo
+#define TOPPERS_waitmook
+#define TOPPERS_wairel
+#define TOPPERS_wobjwai
+#define TOPPERS_wobjwaitmo
+#define TOPPERS_iniwque
+
+/* time_event.c */
+#define TOPPERS_tmeini
+#define TOPPERS_tmeup
+#define TOPPERS_tmedown
+#define TOPPERS_tmeins
+#define TOPPERS_tmedel
+#define TOPPERS_tmeltim
+#define TOPPERS_sigtim
+
+/* task_manage.c */
+#define TOPPERS_acre_tsk
+#define TOPPERS_del_tsk
+#define TOPPERS_act_tsk
+#define TOPPERS_iact_tsk
+#define TOPPERS_can_act
+#define TOPPERS_ext_tsk
+#define TOPPERS_ter_tsk
+#define TOPPERS_chg_pri
+#define TOPPERS_get_pri
+#define TOPPERS_get_inf
+
+/* task_refer.c */
+#define TOPPERS_ref_tsk
+
+/* task_sync.c */
+#define TOPPERS_slp_tsk
+#define TOPPERS_tslp_tsk
+#define TOPPERS_wup_tsk
+#define TOPPERS_iwup_tsk
+#define TOPPERS_can_wup
+#define TOPPERS_rel_wai
+#define TOPPERS_irel_wai
+#define TOPPERS_sus_tsk
+#define TOPPERS_rsm_tsk
+#define TOPPERS_dly_tsk
+
+/* task_except.c */
+#define TOPPERS_def_tex
+#define TOPPERS_ras_tex
+#define TOPPERS_iras_tex
+#define TOPPERS_dis_tex
+#define TOPPERS_ena_tex
+#define TOPPERS_sns_tex
+#define TOPPERS_ref_tex
+
+/* semaphore.c */
+#define TOPPERS_semini
+#define TOPPERS_acre_sem
+#define TOPPERS_del_sem
+#define TOPPERS_sig_sem
+#define TOPPERS_isig_sem
+#define TOPPERS_wai_sem
+#define TOPPERS_pol_sem
+#define TOPPERS_twai_sem
+#define TOPPERS_ini_sem
+#define TOPPERS_ref_sem
+
+/* eventflag.c */
+#define TOPPERS_flgini
+#define TOPPERS_flgcnd
+#define TOPPERS_acre_flg
+#define TOPPERS_del_flg
+#define TOPPERS_set_flg
+#define TOPPERS_iset_flg
+#define TOPPERS_clr_flg
+#define TOPPERS_wai_flg
+#define TOPPERS_pol_flg
+#define TOPPERS_twai_flg
+#define TOPPERS_ini_flg
+#define TOPPERS_ref_flg
+
+/* dataqueue.c */
+#define TOPPERS_dtqini
+#define TOPPERS_dtqenq
+#define TOPPERS_dtqfenq
+#define TOPPERS_dtqdeq
+#define TOPPERS_dtqsnd
+#define TOPPERS_dtqfsnd
+#define TOPPERS_dtqrcv
+#define TOPPERS_acre_dtq
+#define TOPPERS_del_dtq
+#define TOPPERS_snd_dtq
+#define TOPPERS_psnd_dtq
+#define TOPPERS_ipsnd_dtq
+#define TOPPERS_tsnd_dtq
+#define TOPPERS_fsnd_dtq
+#define TOPPERS_ifsnd_dtq
+#define TOPPERS_rcv_dtq
+#define TOPPERS_prcv_dtq
+#define TOPPERS_trcv_dtq
+#define TOPPERS_ini_dtq
+#define TOPPERS_ref_dtq
+
+/* pridataq.c */
+#define TOPPERS_pdqini
+#define TOPPERS_pdqenq
+#define TOPPERS_pdqdeq
+#define TOPPERS_pdqsnd
+#define TOPPERS_pdqrcv
+#define TOPPERS_acre_pdq
+#define TOPPERS_del_pdq
+#define TOPPERS_snd_pdq
+#define TOPPERS_psnd_pdq
+#define TOPPERS_ipsnd_pdq
+#define TOPPERS_tsnd_pdq
+#define TOPPERS_rcv_pdq
+#define TOPPERS_prcv_pdq
+#define TOPPERS_trcv_pdq
+#define TOPPERS_ini_pdq
+#define TOPPERS_ref_pdq
+
+/* mailbox.c */
+#define TOPPERS_mbxini
+#define TOPPERS_acre_mbx
+#define TOPPERS_del_mbx
+#define TOPPERS_snd_mbx
+#define TOPPERS_rcv_mbx
+#define TOPPERS_prcv_mbx
+#define TOPPERS_trcv_mbx
+#define TOPPERS_ini_mbx
+#define TOPPERS_ref_mbx
+
+/* mempfix.c */
+#define TOPPERS_mpfini
+#define TOPPERS_mpfget
+#define TOPPERS_acre_mpf
+#define TOPPERS_del_mpf
+#define TOPPERS_get_mpf
+#define TOPPERS_pget_mpf
+#define TOPPERS_tget_mpf
+#define TOPPERS_rel_mpf
+#define TOPPERS_ini_mpf
+#define TOPPERS_ref_mpf
+
+/* time_manage.c */
+#define TOPPERS_get_tim
+#define TOPPERS_get_utm
+
+/* cyclic.c */
+#define TOPPERS_cycini
+#define TOPPERS_acre_cyc
+#define TOPPERS_del_cyc
+#define TOPPERS_sta_cyc
+#define TOPPERS_stp_cyc
+#define TOPPERS_ref_cyc
+#define TOPPERS_cyccal
+
+/* alarm.c */
+#define TOPPERS_almini
+#define TOPPERS_acre_alm
+#define TOPPERS_del_alm
+#define TOPPERS_sta_alm
+#define TOPPERS_ista_alm
+#define TOPPERS_stp_alm
+#define TOPPERS_istp_alm
+#define TOPPERS_ref_alm
+#define TOPPERS_almcal
+
+/* sys_manage.c */
+#define TOPPERS_rot_rdq
+#define TOPPERS_irot_rdq
+#define TOPPERS_get_tid
+#define TOPPERS_iget_tid
+#define TOPPERS_loc_cpu
+#define TOPPERS_iloc_cpu
+#define TOPPERS_unl_cpu
+#define TOPPERS_iunl_cpu
+#define TOPPERS_dis_dsp
+#define TOPPERS_ena_dsp
+#define TOPPERS_sns_ctx
+#define TOPPERS_sns_loc
+#define TOPPERS_sns_dsp
+#define TOPPERS_sns_dpn
+#define TOPPERS_sns_ker
+
+/* interrupt.c */
+#define TOPPERS_isrini
+#define TOPPERS_isrcal
+#define TOPPERS_acre_isr
+#define TOPPERS_del_isr
+#define TOPPERS_intini
+#define TOPPERS_dis_int
+#define TOPPERS_ena_int
+#define TOPPERS_chg_ipm
+#define TOPPERS_get_ipm
+
+/* exception.c */
+#define TOPPERS_excini
+#define TOPPERS_xsns_dpn
+#define TOPPERS_xsns_xpn
+
+#endif /* TOPPERS_ALLFUNC_H */
Index: /asp_ewarm/asp-1.7.0/extension/dcre/kernel/check.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/dcre/kernel/check.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/dcre/kernel/check.h	(revision 61)
@@ -0,0 +1,498 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: check.h 1970 2010-11-20 11:27:06Z ertl-hiro $
+ */
+
+/*
+ *		G[`FbNp}N
+ */
+
+#ifndef TOPPERS_CHECK_H
+#define TOPPERS_CHECK_H
+
+/*
+ *  \ñ®«G[Ì`FbNiE_PARj
+ */
+#define CHECK_RSATR(atr, valid_atr) {						\
+	if (((atr) & ~(valid_atr)) != 0U) {						\
+		ercd = E_RSATR;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  DæxÌÍÍÌ»è
+ */
+#define VALID_TPRI(tpri)	(TMIN_TPRI <= (tpri) && (tpri) <= TMAX_TPRI)
+
+#define VALID_DPRI(dpri)	(TMIN_DPRI <= (dpri) && (dpri) <= TMAX_DPRI)
+
+#define VALID_MPRI(mpri)	(TMIN_MPRI <= (mpri) && (mpri) <= TMAX_MPRI)
+
+#define VALID_ISRPRI(isrpri) \
+				(TMIN_ISRPRI <= (isrpri) && (isrpri) <= TMAX_ISRPRI)
+
+#ifndef VALID_INTPRI_CHGIPM
+#define VALID_INTPRI_CHGIPM(intpri) \
+				(TMIN_INTPRI <= (intpri) && (intpri) <= TIPM_ENAALL)
+#endif /* VALID_INTPRI_CHGIPM */
+
+/*
+ *  ^XNDæxÌ`FbNiE_PARj
+ */
+#define CHECK_TPRI(tpri) {									\
+	if (!VALID_TPRI(tpri)) {								\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_TPRI_INI(tpri) {								\
+	if (!(VALID_TPRI(tpri) || (tpri) == TPRI_INI)) {		\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_TPRI_SELF(tpri) {								\
+	if (!(VALID_TPRI(tpri) || (tpri) == TPRI_SELF)) {		\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  f[^DæxÌ`FbNiE_PARj
+ */
+#define CHECK_DPRI(dpri) {									\
+	if (!VALID_DPRI(dpri)) {								\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  bZ[WDæxÌ`FbNiE_PARj
+ */
+#define CHECK_MPRI(mpri) {									\
+	if (!VALID_MPRI(mpri)) {								\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  ÝT[rX[`DæxÌ`FbNiE_PARj
+ */
+#define CHECK_ISRPRI(isrpri) {								\
+	if (!VALID_ISRPRI(isrpri)) {							\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  ^CAEgwèlÌ`FbNiE_PARj
+ */
+#define CHECK_TMOUT(tmout) {								\
+	if (!(TMO_FEVR <= (tmout))) {							\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  ÝDæxÌ`FbNiE_PARj
+ */
+#define CHECK_INTPRI_CHGIPM(intpri) {						\
+	if (!VALID_INTPRI_CHGIPM(intpri)) {						\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  ÝÔÌ`FbNiE_PARj
+ */
+#define CHECK_INTNO_CREISR(intno) {							\
+	if (!VALID_INTNO_CREISR(intno)) {						\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_INTNO_DISINT(intno) {							\
+	if (!VALID_INTNO_DISINT(intno)) {						\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  ACµÄ¢é©Ì»è
+ */
+#define ALIGNED(val, align)		((((uintptr_t)(val)) & ((align) - 1U)) == 0U)
+
+#ifdef CHECK_FUNC_ALIGN
+#define FUNC_ALIGNED(func)		ALIGNED(func, CHECK_FUNC_ALIGN)
+#else /* CHECK_FUNC_ALIGN */
+#define FUNC_ALIGNED(func)		true
+#endif /* CHECK_FUNC_ALIGN */
+
+#ifdef CHECK_STKSZ_ALIGN
+#define STKSZ_ALIGNED(stksz)	ALIGNED(stksz, CHECK_STKSZ_ALIGN)
+#else /* CHECK_STKSZ_ALIGN */
+#define STKSZ_ALIGNED(stksz)	true
+#endif /* CHECK_STKSZ_ALIGN */
+
+#ifdef CHECK_STACK_ALIGN
+#define STACK_ALIGNED(stack)	ALIGNED(stack, CHECK_STACK_ALIGN)
+#else /* CHECK_STACK_ALIGN */
+#define STACK_ALIGNED(stack)	true
+#endif /* CHECK_STACK_ALIGN */
+
+#ifdef CHECK_MPF_ALIGN
+#define MPF_ALIGNED(mpf)		ALIGNED(mpf, CHECK_MPF_ALIGN)
+#else /* CHECK_MPF_ALIGN */
+#define MPF_ALIGNED(mpf)		true
+#endif /* CHECK_MPF_ALIGN */
+
+#ifdef CHECK_MB_ALIGN
+#define MB_ALIGNED(mb)			ALIGNED(mb, CHECK_MB_ALIGN)
+#else /* CHECK_MB_ALIGN */
+#define MB_ALIGNED(mb)			true
+#endif /* CHECK_MB_ALIGN */
+
+/*
+ *  NULLÅÈ¢±ÆÌ`FbN
+ */
+#ifdef CHECK_FUNC_NONNULL
+#define FUNC_NONNULL(func)		((func) != NULL)
+#else /* CHECK_FUNC_NONNULL */
+#define FUNC_NONNULL(func)		true
+#endif /* CHECK_FUNC_NONNULL */
+
+#ifdef CHECK_STACK_NONNULL
+#define STACK_NONNULL(stack)	((stack) != NULL)
+#else /* CHECK_STACK_NONNULL */
+#define STACK_NONNULL(stack)	true
+#endif /* CHECK_STACK_NONNULL */
+
+#ifdef CHECK_MPF_NONNULL
+#define MPF_NONNULL(mpf)		((mpf) != NULL)
+#else /* CHECK_MPF_NONNULL */
+#define MPF_NONNULL(mpf)		true
+#endif /* CHECK_MPF_NONNULL */
+
+/*
+ *  ÖÌæªÔnÌ`FbNiE_PARj
+ */
+#define CHECK_ALIGN_FUNC(func) {							\
+	if (!FUNC_ALIGNED(func)) {								\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_NONNULL_FUNC(func) {							\
+	if (!FUNC_NONNULL(func)) {								\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  X^bNTCYÌ`FbNiE_PARj
+ */
+#define CHECK_ALIGN_STKSZ(stksz) {							\
+	if (!STKSZ_ALIGNED(stksz)) {							\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+#ifndef TARGET_MIN_STKSZ
+#define TARGET_MIN_STKSZ	1U		/* ¢è`ÌêÍ0ÅÈ¢±Æð`FbN */
+#endif /* TARGET_MIN_STKSZ */
+
+#define CHECK_STKSZ_MIN(stksz) {							\
+	if ((stksz) < TARGET_MIN_STKSZ) {						\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  X^bNÌæªÔnÌ`FbNiE_PARj
+ */
+#define CHECK_ALIGN_STACK(stack) {							\
+	if (!STACK_ALIGNED(stack)) {							\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_NONNULL_STACK(stack) {						\
+	if (!STACK_NONNULL(stack)) {							\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  Åè·v[ÌæÌæªÔnÌ`FbNiE_PARj
+ */
+#define CHECK_ALIGN_MPF(mpf) {								\
+	if (!MPF_ALIGNED(mpf)) {								\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_NONNULL_MPF(mpf) {							\
+	if (!MPF_NONNULL(mpf)) {								\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  ÇÌæÌæªÔnÌ`FbNiE_PARj
+ */
+#define CHECK_ALIGN_MB(mb) {								\
+	if (!MB_ALIGNED(mb)) {									\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  »Ì¼Ìp[^G[Ì`FbNiE_PARj
+ */
+#define CHECK_PAR(exp) {									\
+	if (!(exp)) {											\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  IuWFNgIDÌÍÍÌ»è
+ */
+#define VALID_TSKID(tskid)	(TMIN_TSKID <= (tskid) && (tskid) <= tmax_tskid)
+#define VALID_SEMID(semid)	(TMIN_SEMID <= (semid) && (semid) <= tmax_semid)
+#define VALID_FLGID(flgid)	(TMIN_FLGID <= (flgid) && (flgid) <= tmax_flgid)
+#define VALID_DTQID(dtqid)	(TMIN_DTQID <= (dtqid) && (dtqid) <= tmax_dtqid)
+#define VALID_PDQID(pdqid)	(TMIN_PDQID <= (pdqid) && (pdqid) <= tmax_pdqid)
+#define VALID_MBXID(mbxid)	(TMIN_MBXID <= (mbxid) && (mbxid) <= tmax_mbxid)
+#define VALID_MPFID(mpfid)	(TMIN_MPFID <= (mpfid) && (mpfid) <= tmax_mpfid)
+#define VALID_CYCID(cycid)	(TMIN_CYCID <= (cycid) && (cycid) <= tmax_cycid)
+#define VALID_ALMID(almid)	(TMIN_ALMID <= (almid) && (almid) <= tmax_almid)
+#define VALID_ISRID(isrid)	(TMIN_ISRID <= (isrid) && (isrid) <= tmax_isrid)
+
+/*
+ *  IuWFNgIDÌ`FbNiE_IDj
+ */
+#define CHECK_TSKID(tskid) {								\
+	if (!VALID_TSKID(tskid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_TSKID_SELF(tskid) {							\
+	if (!(VALID_TSKID(tskid) || (tskid) == TSK_SELF)) {		\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_SEMID(semid) {								\
+	if (!VALID_SEMID(semid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_FLGID(flgid) {								\
+	if (!VALID_FLGID(flgid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_DTQID(dtqid) {								\
+	if (!VALID_DTQID(dtqid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_PDQID(pdqid) {								\
+	if (!VALID_PDQID(pdqid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_MBXID(mbxid) {								\
+	if (!VALID_MBXID(mbxid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_MPFID(mpfid) {								\
+	if (!VALID_MPFID(mpfid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_CYCID(cycid) {								\
+	if (!VALID_CYCID(cycid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_ALMID(almid) {								\
+	if (!VALID_ALMID(almid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_ISRID(isrid) {								\
+	if (!VALID_ISRID(isrid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  ÄoµReLXgÌ`FbNiE_CTXj
+ */
+#define CHECK_TSKCTX() {									\
+	if (sense_context()) {									\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_INTCTX() {									\
+	if (!sense_context()) {									\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  ÄoµReLXgÆCPUbNóÔÌ`FbNiE_CTXj
+ */
+#define CHECK_TSKCTX_UNL() {								\
+	if (sense_context() || t_sense_lock()) {				\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_INTCTX_UNL() {								\
+	if (!sense_context() || i_sense_lock()) {				\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  fBXpb`Û¯óÔÅÈ¢©Ì`FbNiE_CTXj
+ */
+#define CHECK_DISPATCH() {									\
+	if (sense_context() || t_sense_lock() || !dspflg) {		\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  »Ì¼ÌReLXgG[Ì`FbNiE_CTXj
+ */
+#define CHECK_CTX(exp) {									\
+	if (!(exp)) {											\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  ©^XNðwèµÄ¢È¢©Ì`FbNiE_ILUSEj
+ */
+#define CHECK_NONSELF(p_tcb) {								\
+	if ((p_tcb) == p_runtsk) {								\
+		ercd = E_ILUSE;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  »Ì¼Ìs³gpG[Ì`FbNiE_ILUSEj
+ */
+#define CHECK_ILUSE(exp) {									\
+	if (!(exp)) {											\
+		ercd = E_ILUSE;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  ¢T|[g@\G[Ì`FbNiE_NOSPTj
+ */
+#define CHECK_NOSPT(exp) {									\
+	if (!(exp)) {											\
+		ercd = E_NOSPT;										\
+		goto error_exit;									\
+	}														\
+}
+
+#endif /* TOPPERS_CHECK_H */
Index: /asp_ewarm/asp-1.7.0/extension/dcre/kernel/cyclic.c
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/dcre/kernel/cyclic.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/dcre/kernel/cyclic.c	(revision 61)
@@ -0,0 +1,412 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: cyclic.c 1966 2010-11-20 07:23:56Z ertl-hiro $
+ */
+
+/*
+ *		üúnh@\
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "cyclic.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_CYC_ENTER
+#define LOG_CYC_ENTER(p_cyccb)
+#endif /* LOG_CYC_ENTER */
+
+#ifndef LOG_CYC_LEAVE
+#define LOG_CYC_LEAVE(p_cyccb)
+#endif /* LOG_CYC_LEAVE */
+
+#ifndef LOG_ACRE_CYC_ENTER
+#define LOG_ACRE_CYC_ENTER(pk_ccyc)
+#endif /* LOG_ACRE_CYC_ENTER */
+
+#ifndef LOG_ACRE_CYC_LEAVE
+#define LOG_ACRE_CYC_LEAVE(ercd)
+#endif /* LOG_ACRE_CYC_LEAVE */
+
+#ifndef LOG_DEL_CYC_ENTER
+#define LOG_DEL_CYC_ENTER(cycid)
+#endif /* LOG_DEL_CYC_ENTER */
+
+#ifndef LOG_DEL_CYC_LEAVE
+#define LOG_DEL_CYC_LEAVE(ercd)
+#endif /* LOG_DEL_CYC_LEAVE */
+
+#ifndef LOG_STA_CYC_ENTER
+#define LOG_STA_CYC_ENTER(cycid)
+#endif /* LOG_STA_CYC_ENTER */
+
+#ifndef LOG_STA_CYC_LEAVE
+#define LOG_STA_CYC_LEAVE(ercd)
+#endif /* LOG_STA_CYC_LEAVE */
+
+#ifndef LOG_STP_CYC_ENTER
+#define LOG_STP_CYC_ENTER(cycid)
+#endif /* LOG_STP_CYC_ENTER */
+
+#ifndef LOG_STP_CYC_LEAVE
+#define LOG_STP_CYC_LEAVE(ercd)
+#endif /* LOG_STP_CYC_LEAVE */
+
+#ifndef LOG_REF_CYC_ENTER
+#define LOG_REF_CYC_ENTER(cycid, pk_rcyc)
+#endif /* LOG_REF_CYC_ENTER */
+
+#ifndef LOG_REF_CYC_LEAVE
+#define LOG_REF_CYC_LEAVE(ercd, pk_rcyc)
+#endif /* LOG_REF_CYC_LEAVE */
+
+/*
+ *  üúnhÌ
+ */
+#define tnum_cyc	((uint_t)(tmax_cycid - TMIN_CYCID + 1))
+#define tnum_scyc	((uint_t)(tmax_scycid - TMIN_CYCID + 1))
+
+/*
+ *  üúnhID©çüúnhÇubNðæèo·½ßÌ}N
+ */
+#define INDEX_CYC(cycid)	((uint_t)((cycid) - TMIN_CYCID))
+#define get_cyccb(cycid)	(&(cyccb_table[INDEX_CYC(cycid)]))
+
+/*
+ *  üúnhN®Ì½ßÌ^CCxgubNÌo^
+ */
+Inline void
+tmevtb_enqueue_cyc(CYCCB *p_cyccb, EVTTIM evttim)
+{
+	tmevtb_enqueue_evttim(&(p_cyccb->tmevtb), evttim,
+								(CBACK) call_cychdr, (void *) p_cyccb);
+	p_cyccb->evttim = evttim;
+}
+
+#ifdef TOPPERS_cycini
+
+/*
+ *  gpµÄ¢È¢üúnhÇubNÌXg
+ *
+ *  üúnhÇubNÌæªÉÍL
+[ÉÂÈ®½ßÌÌæªÈ¢½
+ *  ßC^CCxgubNitmevtbjÌÌæðp¢éD
+ */
+QUEUE	free_cyccb;
+
+/*
+ *  üúnh@\Ìú»
+ */
+void
+initialize_cyclic(void)
+{
+	uint_t	i, j;
+	CYCCB	*p_cyccb;
+	CYCINIB	*p_cycinib;
+
+	for (p_cyccb = cyccb_table, i = 0; i < tnum_scyc; p_cyccb++, i++) {
+		p_cyccb->p_cycinib = &(cycinib_table[i]);
+		if ((p_cyccb->p_cycinib->cycatr & TA_STA) != 0U) {
+			p_cyccb->cycsta = true;
+			tmevtb_enqueue_cyc(p_cyccb, (EVTTIM)(p_cyccb->p_cycinib->cycphs));
+		}
+		else {
+			p_cyccb->cycsta = false;
+		}
+	}
+	queue_initialize(&free_cyccb);
+	for (j = 0; i < tnum_cyc; p_cyccb++, i++, j++) {
+		p_cycinib = &(acycinib_table[j]);
+		p_cycinib->cycatr = TA_NOEXS;
+		p_cyccb->p_cycinib = ((const CYCINIB *) p_cycinib);
+		queue_insert_prev(&free_cyccb, ((QUEUE *) &(p_cyccb->tmevtb)));
+	}
+}
+
+#endif /* TOPPERS_cycini */
+
+/*
+ *  üúnhÌ¶¬
+ */
+#ifdef TOPPERS_acre_cyc
+
+ER_UINT
+acre_cyc(const T_CCYC *pk_ccyc)
+{
+	CYCCB	*p_cyccb;
+	CYCINIB	*p_cycinib;
+	ER		ercd;
+
+	LOG_ACRE_CYC_ENTER(pk_ccyc);
+	CHECK_TSKCTX_UNL();
+	CHECK_RSATR(pk_ccyc->cycatr, TA_STA);
+	CHECK_ALIGN_FUNC(pk_ccyc->cychdr);
+	CHECK_NONNULL_FUNC(pk_ccyc->cychdr);
+	CHECK_PAR(0 < pk_ccyc->cyctim && pk_ccyc->cyctim <= TMAX_RELTIM);
+	CHECK_PAR(0 <= pk_ccyc->cycphs && pk_ccyc->cycphs <= TMAX_RELTIM);
+
+	t_lock_cpu();
+	if (queue_empty(&free_cyccb)) {
+		ercd = E_NOID;
+	}
+	else {
+		p_cyccb = ((CYCCB *)(((char *) queue_delete_next(&free_cyccb))
+												- offsetof(CYCCB, tmevtb)));
+		p_cycinib = (CYCINIB *)(p_cyccb->p_cycinib);
+		p_cycinib->cycatr = pk_ccyc->cycatr;
+		p_cycinib->exinf = pk_ccyc->exinf;
+		p_cycinib->cychdr = pk_ccyc->cychdr;
+		p_cycinib->cyctim = pk_ccyc->cyctim;
+		p_cycinib->cycphs = pk_ccyc->cycphs;
+
+		if ((p_cyccb->p_cycinib->cycatr & TA_STA) != 0U) {
+			p_cyccb->cycsta = true;
+			tmevtb_enqueue_cyc(p_cyccb, (EVTTIM)(p_cyccb->p_cycinib->cycphs));
+		}
+		else {
+			p_cyccb->cycsta = false;
+		}
+		ercd = CYCID(p_cyccb);
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_ACRE_CYC_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_acre_cyc */
+
+/*
+ *  üúnhÌí
+ */
+#ifdef TOPPERS_del_cyc
+
+ER
+del_cyc(ID cycid)
+{
+	CYCCB	*p_cyccb;
+	CYCINIB	*p_cycinib;
+	ER		ercd;
+
+	LOG_DEL_CYC_ENTER(cycid);
+	CHECK_TSKCTX_UNL();
+	CHECK_CYCID(cycid);
+	p_cyccb = get_cyccb(cycid);
+
+	t_lock_cpu();
+	if (p_cyccb->p_cycinib->cycatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (CYCID(p_cyccb) > tmax_scycid) {
+		if (p_cyccb->cycsta) {
+			p_cyccb->cycsta = false;
+			tmevtb_dequeue(&(p_cyccb->tmevtb));
+		}
+
+		p_cycinib = (CYCINIB *)(p_cyccb->p_cycinib);
+		p_cycinib->cycatr = TA_NOEXS;
+		queue_insert_prev(&free_cyccb, ((QUEUE *) &(p_cyccb->tmevtb)));
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_OBJ;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_DEL_CYC_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_del_cyc */
+
+/*
+ *  üúnhÌ®ìJn
+ */
+#ifdef TOPPERS_sta_cyc
+
+ER
+sta_cyc(ID cycid)
+{
+	CYCCB	*p_cyccb;
+	ER		ercd;
+
+	LOG_STA_CYC_ENTER(cycid);
+	CHECK_TSKCTX_UNL();
+	CHECK_CYCID(cycid);
+	p_cyccb = get_cyccb(cycid);
+
+	t_lock_cpu();
+	if (p_cyccb->p_cycinib->cycatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (p_cyccb->cycsta) {
+		tmevtb_dequeue(&(p_cyccb->tmevtb));
+	}
+	else {
+		p_cyccb->cycsta = true;
+	}
+	tmevtb_enqueue_cyc(p_cyccb, base_time + p_cyccb->p_cycinib->cycphs);
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_STA_CYC_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_sta_cyc */
+
+/*
+ *  üúnhÌ®ìâ~
+ */
+#ifdef TOPPERS_stp_cyc
+
+ER
+stp_cyc(ID cycid)
+{
+	CYCCB	*p_cyccb;
+	ER		ercd;
+
+	LOG_STP_CYC_ENTER(cycid);
+	CHECK_TSKCTX_UNL();
+	CHECK_CYCID(cycid);
+	p_cyccb = get_cyccb(cycid);
+
+	t_lock_cpu();
+	if (p_cyccb->p_cycinib->cycatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (p_cyccb->cycsta) {
+		p_cyccb->cycsta = false;
+		tmevtb_dequeue(&(p_cyccb->tmevtb));
+	}
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_STP_CYC_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_stp_cyc */
+
+/*
+ *  üúnhÌóÔQÆ
+ */
+#ifdef TOPPERS_ref_cyc
+
+ER
+ref_cyc(ID cycid, T_RCYC *pk_rcyc)
+{
+	CYCCB	*p_cyccb;
+	ER		ercd;
+    
+	LOG_REF_CYC_ENTER(cycid, pk_rcyc);
+	CHECK_TSKCTX_UNL();
+	CHECK_CYCID(cycid);
+	p_cyccb = get_cyccb(cycid);
+
+	t_lock_cpu();
+	if (p_cyccb->p_cycinib->cycatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else {
+		if (p_cyccb->cycsta) {
+			pk_rcyc->cycstat = TCYC_STA;
+			pk_rcyc->lefttim = tmevt_lefttim(&(p_cyccb->tmevtb));
+		}
+		else {
+			pk_rcyc->cycstat = TCYC_STP;
+		}
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_REF_CYC_LEAVE(ercd, pk_rcyc);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ref_cyc */
+
+/*
+ *  üúnhN®[`
+ */
+#ifdef TOPPERS_cyccal
+
+void
+call_cychdr(CYCCB *p_cyccb)
+{
+	PRI		saved_ipm;
+
+	/*
+	 *  ñÌN®Ì½ßÌ^CCxgubNðo^·éD
+	 *
+	 *  ¯¶^CeBbNÅüúnhðÄxN®·×«êÉÍC±Ì
+	 *  Ö©çsignal_timeÉßÁ½ãÉCÄx±ÌÖªÄÎêé±ÆÉÈ
+	 *  éD
+	 */
+	tmevtb_enqueue_cyc(p_cyccb, p_cyccb->evttim + p_cyccb->p_cycinib->cyctim);
+
+	/*
+	 *  üúnhðCCPUbNðóÔÅÄÑo·D
+	 */
+	saved_ipm = i_get_ipm();
+	i_unlock_cpu();
+
+	LOG_CYC_ENTER(p_cyccb);
+	(*((CYCHDR)(p_cyccb->p_cycinib->cychdr)))(p_cyccb->p_cycinib->exinf);
+	LOG_CYC_LEAVE(p_cyccb);
+
+	if (!i_sense_lock()) {
+		i_lock_cpu();
+	}
+	i_set_ipm(saved_ipm);
+}
+
+#endif /* TOPPERS_cyccal */
Index: /asp_ewarm/asp-1.7.0/extension/dcre/kernel/cyclic.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/dcre/kernel/cyclic.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/dcre/kernel/cyclic.h	(revision 61)
@@ -0,0 +1,115 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: cyclic.h 1966 2010-11-20 07:23:56Z ertl-hiro $
+ */
+
+/*
+ *		üúnh@\
+ */
+
+#ifndef TOPPERS_CYCLIC_H
+#define TOPPERS_CYCLIC_H
+
+#include <queue.h>
+#include "time_event.h"
+
+/*
+ *  üúnhú»ubN
+ */
+typedef struct cyclic_handler_initialization_block {
+	ATR			cycatr;			/* üúnh®« */
+	intptr_t	exinf;			/* üúnhÌg£îñ */
+	CYCHDR		cychdr;			/* üúnhÌN®Ôn */
+	RELTIM		cyctim;			/* üúnhÌN®üú */
+	RELTIM		cycphs;			/* üúnhÌN®Ê */
+} CYCINIB;
+
+/*
+ *  üúnhÇubN
+ */
+typedef struct cyclic_handler_control_block {
+	const CYCINIB *p_cycinib;	/* ú»ubNÖÌ|C^ */
+	bool_t		cycsta;			/* üúnhÌ®ìóÔ */
+	EVTTIM		evttim;			/* ÉüúnhðN®·é */
+	TMEVTB		tmevtb;			/* ^CCxgubN */
+} CYCCB;
+
+/*
+ *  gpµÄ¢È¢üúnhÇubNÌXg
+ */
+extern QUEUE	free_cyccb;
+
+/*
+ *  üúnhIDÌÅålikernel_cfg.cj
+ */
+extern const ID	tmax_cycid;
+extern const ID	tmax_scycid;
+
+/*
+ *  üúnhú»ubNÌGAikernel_cfg.cj
+ */
+extern const CYCINIB	cycinib_table[];
+extern CYCINIB			acycinib_table[];
+
+/*
+ *  üúnhÇubNÌGAikernel_cfg.cj
+ */
+extern CYCCB	cyccb_table[];
+
+/*
+ *  üúnhÇubN©çüúnhIDðæèo·½ßÌ}N
+ */
+#define	CYCID(p_cyccb)	((ID)(((p_cyccb) - cyccb_table) + TMIN_CYCID))
+
+/*
+ *  üúnh@\Ìú»
+ */
+extern void	initialize_cyclic(void);
+
+/*
+ *  üúnhN®[`
+ */
+extern void	call_cychdr(CYCCB *p_cyccb);
+
+#endif /* TOPPERS_CYCLIC_H */
Index: /asp_ewarm/asp-1.7.0/extension/dcre/kernel/dataqueue.c
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/dcre/kernel/dataqueue.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/dcre/kernel/dataqueue.c	(revision 61)
@@ -0,0 +1,911 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: dataqueue.c 1966 2010-11-20 07:23:56Z ertl-hiro $
+ */
+
+/*
+ *		f[^L
+[@\
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+#include "dataqueue.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_ACRE_DTQ_ENTER
+#define LOG_ACRE_DTQ_ENTER(pk_cdtq)
+#endif /* LOG_ACRE_DTQ_ENTER */
+
+#ifndef LOG_ACRE_DTQ_LEAVE
+#define LOG_ACRE_DTQ_LEAVE(ercd)
+#endif /* LOG_ACRE_DTQ_LEAVE */
+
+#ifndef LOG_DEL_DTQ_ENTER
+#define LOG_DEL_DTQ_ENTER(dtqid)
+#endif /* LOG_DEL_DTQ_ENTER */
+
+#ifndef LOG_DEL_DTQ_LEAVE
+#define LOG_DEL_DTQ_LEAVE(ercd)
+#endif /* LOG_DEL_DTQ_LEAVE */
+
+#ifndef LOG_SND_DTQ_ENTER
+#define LOG_SND_DTQ_ENTER(dtqid, data)
+#endif /* LOG_SND_DTQ_ENTER */
+
+#ifndef LOG_SND_DTQ_LEAVE
+#define LOG_SND_DTQ_LEAVE(ercd)
+#endif /* LOG_SND_DTQ_LEAVE */
+
+#ifndef LOG_PSND_DTQ_ENTER
+#define LOG_PSND_DTQ_ENTER(dtqid, data)
+#endif /* LOG_PSND_DTQ_ENTER */
+
+#ifndef LOG_PSND_DTQ_LEAVE
+#define LOG_PSND_DTQ_LEAVE(ercd)
+#endif /* LOG_PSND_DTQ_LEAVE */
+
+#ifndef LOG_IPSND_DTQ_ENTER
+#define LOG_IPSND_DTQ_ENTER(dtqid, data)
+#endif /* LOG_IPSND_DTQ_ENTER */
+
+#ifndef LOG_IPSND_DTQ_LEAVE
+#define LOG_IPSND_DTQ_LEAVE(ercd)
+#endif /* LOG_IPSND_DTQ_LEAVE */
+
+#ifndef LOG_TSND_DTQ_ENTER
+#define LOG_TSND_DTQ_ENTER(dtqid, data, tmout)
+#endif /* LOG_TSND_DTQ_ENTER */
+
+#ifndef LOG_TSND_DTQ_LEAVE
+#define LOG_TSND_DTQ_LEAVE(ercd)
+#endif /* LOG_TSND_DTQ_LEAVE */
+
+#ifndef LOG_FSND_DTQ_ENTER
+#define LOG_FSND_DTQ_ENTER(dtqid, data)
+#endif /* LOG_FSND_DTQ_ENTER */
+
+#ifndef LOG_FSND_DTQ_LEAVE
+#define LOG_FSND_DTQ_LEAVE(ercd)
+#endif /* LOG_FSND_DTQ_LEAVE */
+
+#ifndef LOG_IFSND_DTQ_ENTER
+#define LOG_IFSND_DTQ_ENTER(dtqid, data)
+#endif /* LOG_IFSND_DTQ_ENTER */
+
+#ifndef LOG_IFSND_DTQ_LEAVE
+#define LOG_IFSND_DTQ_LEAVE(ercd)
+#endif /* LOG_IFSND_DTQ_LEAVE */
+
+#ifndef LOG_RCV_DTQ_ENTER
+#define LOG_RCV_DTQ_ENTER(dtqid, p_data)
+#endif /* LOG_RCV_DTQ_ENTER */
+
+#ifndef LOG_RCV_DTQ_LEAVE
+#define LOG_RCV_DTQ_LEAVE(ercd, data)
+#endif /* LOG_RCV_DTQ_LEAVE */
+
+#ifndef LOG_PRCV_DTQ_ENTER
+#define LOG_PRCV_DTQ_ENTER(dtqid, p_data)
+#endif /* LOG_PRCV_DTQ_ENTER */
+
+#ifndef LOG_PRCV_DTQ_LEAVE
+#define LOG_PRCV_DTQ_LEAVE(ercd, data)
+#endif /* LOG_PRCV_DTQ_LEAVE */
+
+#ifndef LOG_TRCV_DTQ_ENTER
+#define LOG_TRCV_DTQ_ENTER(dtqid, p_data, tmout)
+#endif /* LOG_TRCV_DTQ_ENTER */
+
+#ifndef LOG_TRCV_DTQ_LEAVE
+#define LOG_TRCV_DTQ_LEAVE(ercd, data)
+#endif /* LOG_TRCV_DTQ_LEAVE */
+
+#ifndef LOG_INI_DTQ_ENTER
+#define LOG_INI_DTQ_ENTER(dtqid)
+#endif /* LOG_INI_DTQ_ENTER */
+
+#ifndef LOG_INI_DTQ_LEAVE
+#define LOG_INI_DTQ_LEAVE(ercd)
+#endif /* LOG_INI_DTQ_LEAVE */
+
+#ifndef LOG_REF_DTQ_ENTER
+#define LOG_REF_DTQ_ENTER(dtqid, pk_rdtq)
+#endif /* LOG_REF_DTQ_ENTER */
+
+#ifndef LOG_REF_DTQ_LEAVE
+#define LOG_REF_DTQ_LEAVE(ercd, pk_rdtq)
+#endif /* LOG_REF_DTQ_LEAVE */
+
+/*
+ *  f[^L
+[Ì
+ */
+#define tnum_dtq	((uint_t)(tmax_dtqid - TMIN_DTQID + 1))
+#define tnum_sdtq	((uint_t)(tmax_sdtqid - TMIN_DTQID + 1))
+
+/*
+ *  f[^L
+[ID©çf[^L
+[ÇubNðæèo·½ßÌ}N
+ */
+#define INDEX_DTQ(dtqid)	((uint_t)((dtqid) - TMIN_DTQID))
+#define get_dtqcb(dtqid)	(&(dtqcb_table[INDEX_DTQ(dtqid)]))
+
+#ifdef TOPPERS_dtqini
+
+/*
+ *  gpµÄ¢È¢f[^L
+[ÇubNÌXg
+ */
+QUEUE	free_dtqcb;
+
+/*
+ *  f[^L
+[@\Ìú»
+ */
+void
+initialize_dataqueue(void)
+{
+	uint_t	i, j;
+	DTQCB	*p_dtqcb;
+	DTQINIB	*p_dtqinib;
+
+	for (p_dtqcb = dtqcb_table, i = 0; i < tnum_sdtq; p_dtqcb++, i++) {
+		queue_initialize(&(p_dtqcb->swait_queue));
+		p_dtqcb->p_dtqinib = &(dtqinib_table[i]);
+		queue_initialize(&(p_dtqcb->rwait_queue));
+		p_dtqcb->count = 0U;
+		p_dtqcb->head = 0U;
+		p_dtqcb->tail = 0U;
+	}
+	queue_initialize(&free_dtqcb);
+	for (j = 0; i < tnum_dtq; p_dtqcb++, i++, j++) {
+		p_dtqinib = &(adtqinib_table[j]);
+		p_dtqinib->dtqatr = TA_NOEXS;
+		p_dtqcb->p_dtqinib = ((const DTQINIB *) p_dtqinib);
+		queue_insert_prev(&free_dtqcb, &(p_dtqcb->swait_queue));
+	}
+}
+
+#endif /* TOPPERS_dtqini */
+
+/*
+ *  f[^L
+[Ì¶¬
+ */
+#ifdef TOPPERS_acre_dtq
+
+ER_UINT
+acre_dtq(const T_CDTQ *pk_cdtq)
+{
+	DTQCB		*p_dtqcb;
+	DTQINIB		*p_dtqinib;
+	ATR			dtqatr;
+	DTQMB		*p_dtqmb;
+	ER			ercd;
+
+	LOG_ACRE_DTQ_ENTER(pk_cdtq);
+	CHECK_TSKCTX_UNL();
+	CHECK_RSATR(pk_cdtq->dtqatr, TA_TPRI);
+	dtqatr = pk_cdtq->dtqatr;
+	p_dtqmb = pk_cdtq->dtqmb;
+
+	t_lock_cpu();
+	if (queue_empty(&free_dtqcb)) {
+		ercd = E_NOID;
+	}
+	else {
+		if (pk_cdtq->dtqcnt != 0 && p_dtqmb == NULL) {
+			p_dtqmb = kernel_malloc(sizeof(DTQMB) * pk_cdtq->dtqcnt);
+			dtqatr |= TA_MBALLOC;
+		}
+		if (pk_cdtq->dtqcnt != 0 && p_dtqmb == NULL) {
+			ercd = E_NOMEM;
+		}
+		else {
+			p_dtqcb = ((DTQCB *) queue_delete_next(&free_dtqcb));
+			p_dtqinib = (DTQINIB *)(p_dtqcb->p_dtqinib);
+			p_dtqinib->dtqatr = dtqatr;
+			p_dtqinib->dtqcnt = pk_cdtq->dtqcnt;
+			p_dtqinib->p_dtqmb = p_dtqmb;
+
+			queue_initialize(&(p_dtqcb->swait_queue));
+			queue_initialize(&(p_dtqcb->rwait_queue));
+			p_dtqcb->count = 0U;
+			p_dtqcb->head = 0U;
+			p_dtqcb->tail = 0U;
+			ercd = DTQID(p_dtqcb);
+		}
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_ACRE_DTQ_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_acre_dtq */
+
+/*
+ *  f[^L
+[Ìí
+ */
+#ifdef TOPPERS_del_dtq
+
+ER
+del_dtq(ID dtqid)
+{
+	DTQCB	*p_dtqcb;
+	DTQINIB	*p_dtqinib;
+	bool_t	dspreq;
+	ER		ercd;
+
+	LOG_DEL_DTQ_ENTER(dtqid);
+	CHECK_TSKCTX_UNL();
+	CHECK_DTQID(dtqid);
+	p_dtqcb = get_dtqcb(dtqid);
+
+	t_lock_cpu();
+	if (p_dtqcb->p_dtqinib->dtqatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (DTQID(p_dtqcb) > tmax_sdtqid) {
+		dspreq = init_wait_queue(&(p_dtqcb->swait_queue));
+		if (init_wait_queue(&(p_dtqcb->rwait_queue))) {
+			dspreq = true;
+		}
+		p_dtqinib = (DTQINIB *)(p_dtqcb->p_dtqinib);
+		if ((p_dtqinib->dtqatr & TA_MBALLOC) != 0U) {
+			kernel_free(p_dtqinib->p_dtqmb);
+		}
+		p_dtqinib->dtqatr = TA_NOEXS;
+		queue_insert_prev(&free_dtqcb, &(p_dtqcb->swait_queue));
+		if (dspreq) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_OBJ;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_DEL_DTQ_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_del_dtq */
+
+/*
+ *  f[^L
+[ÇÌæÖÌf[^Ìi[
+ */
+#ifdef TOPPERS_dtqenq
+
+void
+enqueue_data(DTQCB *p_dtqcb, intptr_t data)
+{
+	(p_dtqcb->p_dtqinib->p_dtqmb + p_dtqcb->tail)->data = data;
+	p_dtqcb->count++;
+	p_dtqcb->tail++;
+	if (p_dtqcb->tail >= p_dtqcb->p_dtqinib->dtqcnt) {
+		p_dtqcb->tail = 0U;
+	}
+}
+
+#endif /* TOPPERS_dtqenq */
+
+/*
+ *  f[^L
+[ÇÌæÖÌf[^Ì­§i[
+ */
+#ifdef TOPPERS_dtqfenq
+
+void
+force_enqueue_data(DTQCB *p_dtqcb, intptr_t data)
+{
+	(p_dtqcb->p_dtqinib->p_dtqmb + p_dtqcb->tail)->data = data;
+	p_dtqcb->tail++;
+	if (p_dtqcb->tail >= p_dtqcb->p_dtqinib->dtqcnt) {
+		p_dtqcb->tail = 0U;
+	}
+	if (p_dtqcb->count < p_dtqcb->p_dtqinib->dtqcnt) {
+		p_dtqcb->count++;
+	}
+	else {
+		p_dtqcb->head = p_dtqcb->tail;
+	}
+}
+
+#endif /* TOPPERS_dtqfenq */
+
+/*
+ *  f[^L
+[ÇÌæ©çÌf[^Ìæoµ
+ */
+#ifdef TOPPERS_dtqdeq
+
+void
+dequeue_data(DTQCB *p_dtqcb, intptr_t *p_data)
+{
+	*p_data = (p_dtqcb->p_dtqinib->p_dtqmb + p_dtqcb->head)->data;
+	p_dtqcb->count--;
+	p_dtqcb->head++;
+	if (p_dtqcb->head >= p_dtqcb->p_dtqinib->dtqcnt) {
+		p_dtqcb->head = 0U;
+	}
+}
+
+#endif /* TOPPERS_dtqdeq */
+
+/*
+ *  f[^L
+[ÖÌf[^M
+ */
+#ifdef TOPPERS_dtqsnd
+
+bool_t
+send_data(DTQCB *p_dtqcb, intptr_t data, bool_t *p_reqdsp)
+{
+	TCB		*p_tcb;
+
+	if (!queue_empty(&(p_dtqcb->rwait_queue))) {
+		p_tcb = (TCB *) queue_delete_next(&(p_dtqcb->rwait_queue));
+		((WINFO_DTQ *)(p_tcb->p_winfo))->data = data;
+		*p_reqdsp = wait_complete(p_tcb);
+		return(true);
+	}
+	else if (p_dtqcb->count < p_dtqcb->p_dtqinib->dtqcnt) {
+		enqueue_data(p_dtqcb, data);
+		*p_reqdsp = false;
+		return(true);
+	}
+	else {
+		return(false);
+	}
+}
+
+#endif /* TOPPERS_dtqsnd */
+
+/*
+ *  f[^L
+[ÖÌf[^­§M
+ */
+#ifdef TOPPERS_dtqfsnd
+
+bool_t
+force_send_data(DTQCB *p_dtqcb, intptr_t data)
+{
+	TCB		*p_tcb;
+
+	if (!queue_empty(&(p_dtqcb->rwait_queue))) {
+		p_tcb = (TCB *) queue_delete_next(&(p_dtqcb->rwait_queue));
+		((WINFO_DTQ *)(p_tcb->p_winfo))->data = data;
+		return(wait_complete(p_tcb));
+	}
+	else {
+		force_enqueue_data(p_dtqcb, data);
+		return(false);
+	}
+}
+
+#endif /* TOPPERS_dtqfsnd */
+
+/*
+ *  MÒ¿L
+[Ìæª^XN©çÌf[^óM
+ */
+#ifdef TOPPERS_dtqrcv
+
+bool_t
+receive_data(DTQCB *p_dtqcb, intptr_t *p_data, bool_t *p_reqdsp)
+{
+	TCB		*p_tcb;
+	intptr_t data;
+
+	if (p_dtqcb->count > 0U) {
+		dequeue_data(p_dtqcb, p_data);
+		if (!queue_empty(&(p_dtqcb->swait_queue))) {
+			p_tcb = (TCB *) queue_delete_next(&(p_dtqcb->swait_queue));
+			data = ((WINFO_DTQ *)(p_tcb->p_winfo))->data;
+			enqueue_data(p_dtqcb, data);
+			*p_reqdsp = wait_complete(p_tcb);
+		}
+		else {
+			*p_reqdsp = false;
+		}
+		return(true);
+	}
+	else if (!queue_empty(&(p_dtqcb->swait_queue))) {
+		p_tcb = (TCB *) queue_delete_next(&(p_dtqcb->swait_queue));
+		*p_data = ((WINFO_DTQ *)(p_tcb->p_winfo))->data;
+		*p_reqdsp = wait_complete(p_tcb);
+		return(true);
+	}
+	else {
+		return(false);
+	}
+}
+
+#endif /* TOPPERS_dtqrcv */
+
+/*
+ *  f[^L
+[ÖÌM
+ */
+#ifdef TOPPERS_snd_dtq
+
+ER
+snd_dtq(ID dtqid, intptr_t data)
+{
+	DTQCB	*p_dtqcb;
+	WINFO_DTQ winfo_dtq;
+	bool_t	reqdsp;
+	ER		ercd;
+
+	LOG_SND_DTQ_ENTER(dtqid, data);
+	CHECK_DISPATCH();
+	CHECK_DTQID(dtqid);
+	p_dtqcb = get_dtqcb(dtqid);
+
+	t_lock_cpu();
+	if (send_data(p_dtqcb, data, &reqdsp)) {
+		if (reqdsp) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else {
+		winfo_dtq.data = data;
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_SDTQ);
+		wobj_make_wait((WOBJCB *) p_dtqcb, (WINFO_WOBJ *) &winfo_dtq);
+		dispatch();
+		ercd = winfo_dtq.winfo.wercd;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_SND_DTQ_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_snd_dtq */
+
+/*
+ *  f[^L
+[ÖÌMi|[Oj
+ */
+#ifdef TOPPERS_psnd_dtq
+
+ER
+psnd_dtq(ID dtqid, intptr_t data)
+{
+	DTQCB	*p_dtqcb;
+	bool_t	reqdsp;
+	ER		ercd;
+
+	LOG_PSND_DTQ_ENTER(dtqid, data);
+	CHECK_TSKCTX_UNL();
+	CHECK_DTQID(dtqid);
+	p_dtqcb = get_dtqcb(dtqid);
+
+	t_lock_cpu();
+	if (send_data(p_dtqcb, data, &reqdsp)) {
+		if (reqdsp) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_TMOUT;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_PSND_DTQ_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_psnd_dtq */
+
+/*
+ *  f[^L
+[ÖÌMi|[OCñ^XNReLXgpj
+ */
+#ifdef TOPPERS_ipsnd_dtq
+
+ER
+ipsnd_dtq(ID dtqid, intptr_t data)
+{
+	DTQCB	*p_dtqcb;
+	bool_t	reqdsp;
+	ER		ercd;
+
+	LOG_IPSND_DTQ_ENTER(dtqid, data);
+	CHECK_INTCTX_UNL();
+	CHECK_DTQID(dtqid);
+	p_dtqcb = get_dtqcb(dtqid);
+
+	i_lock_cpu();
+	if (send_data(p_dtqcb, data, &reqdsp)) {
+		if (reqdsp) {
+			reqflg = true;
+		}
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_TMOUT;
+	}
+	i_unlock_cpu();
+
+  error_exit:
+	LOG_IPSND_DTQ_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ipsnd_dtq */
+
+/*
+ *  f[^L
+[ÖÌMi^CAEg èj
+ */
+#ifdef TOPPERS_tsnd_dtq
+
+ER
+tsnd_dtq(ID dtqid, intptr_t data, TMO tmout)
+{
+	DTQCB	*p_dtqcb;
+	WINFO_DTQ winfo_dtq;
+	TMEVTB	tmevtb;
+	bool_t	reqdsp;
+	ER		ercd;
+
+	LOG_TSND_DTQ_ENTER(dtqid, data, tmout);
+	CHECK_DISPATCH();
+	CHECK_DTQID(dtqid);
+	CHECK_TMOUT(tmout);
+	p_dtqcb = get_dtqcb(dtqid);
+
+	t_lock_cpu();
+	if (send_data(p_dtqcb, data, &reqdsp)) {
+		if (reqdsp) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else if (tmout == TMO_POL) {
+		ercd = E_TMOUT;
+	}
+	else {
+		winfo_dtq.data = data;
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_SDTQ);
+		wobj_make_wait_tmout((WOBJCB *) p_dtqcb, (WINFO_WOBJ *) &winfo_dtq,
+														&tmevtb, tmout);
+		dispatch();
+		ercd = winfo_dtq.winfo.wercd;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_TSND_DTQ_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_tsnd_dtq */
+
+/*
+ *  f[^L
+[ÖÌ­§M
+ */
+#ifdef TOPPERS_fsnd_dtq
+
+ER
+fsnd_dtq(ID dtqid, intptr_t data)
+{
+	DTQCB	*p_dtqcb;	
+	ER		ercd;
+
+	LOG_FSND_DTQ_ENTER(dtqid, data);
+	CHECK_TSKCTX_UNL();
+	CHECK_DTQID(dtqid);
+	p_dtqcb = get_dtqcb(dtqid);
+	CHECK_ILUSE(p_dtqcb->p_dtqinib->dtqcnt > 0U);
+
+	t_lock_cpu();
+	if (force_send_data(p_dtqcb, data)) {
+		dispatch();
+	}
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_FSND_DTQ_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_fsnd_dtq */
+
+/*
+ *  f[^L
+[ÖÌ­§Miñ^XNReLXgpj
+ */
+#ifdef TOPPERS_ifsnd_dtq
+
+ER
+ifsnd_dtq(ID dtqid, intptr_t data)
+{
+	DTQCB	*p_dtqcb;
+	ER		ercd;
+
+	LOG_IFSND_DTQ_ENTER(dtqid, data);
+	CHECK_INTCTX_UNL();
+	CHECK_DTQID(dtqid);
+	p_dtqcb = get_dtqcb(dtqid);
+	CHECK_ILUSE(p_dtqcb->p_dtqinib->dtqcnt > 0U);
+
+	i_lock_cpu();
+	if (force_send_data(p_dtqcb, data)) {
+		reqflg = true;
+	}
+	ercd = E_OK;
+	i_unlock_cpu();
+
+  error_exit:
+	LOG_IFSND_DTQ_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ifsnd_dtq */
+
+/*
+ *  f[^L
+[©çÌóM
+ */
+#ifdef TOPPERS_rcv_dtq
+
+ER
+rcv_dtq(ID dtqid, intptr_t *p_data)
+{
+	DTQCB	*p_dtqcb;
+	WINFO_DTQ winfo_dtq;
+	bool_t	reqdsp;
+	ER		ercd;
+
+	LOG_RCV_DTQ_ENTER(dtqid, p_data);
+	CHECK_DISPATCH();
+	CHECK_DTQID(dtqid);
+	p_dtqcb = get_dtqcb(dtqid);
+
+	t_lock_cpu();
+	if (receive_data(p_dtqcb, p_data, &reqdsp)) {
+		if (reqdsp) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else {
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_RDTQ);
+		make_wait(&(winfo_dtq.winfo));
+		queue_insert_prev(&(p_dtqcb->rwait_queue), &(p_runtsk->task_queue));
+		winfo_dtq.p_dtqcb = p_dtqcb;
+		LOG_TSKSTAT(p_runtsk);
+		dispatch();
+		ercd = winfo_dtq.winfo.wercd;
+		if (ercd == E_OK) {
+			*p_data = winfo_dtq.data;
+		}
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_RCV_DTQ_LEAVE(ercd, *p_data);
+	return(ercd);
+}
+
+#endif /* TOPPERS_rcv_dtq */
+
+/*
+ *  f[^L
+[©çÌóMi|[Oj
+ */
+#ifdef TOPPERS_prcv_dtq
+
+ER
+prcv_dtq(ID dtqid, intptr_t *p_data)
+{
+	DTQCB	*p_dtqcb;
+	bool_t	reqdsp;
+	ER		ercd;
+
+	LOG_PRCV_DTQ_ENTER(dtqid, p_data);
+	CHECK_TSKCTX_UNL();
+	CHECK_DTQID(dtqid);
+	p_dtqcb = get_dtqcb(dtqid);
+
+	t_lock_cpu();
+	if (receive_data(p_dtqcb, p_data, &reqdsp)) {
+		if (reqdsp) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_TMOUT;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_PRCV_DTQ_LEAVE(ercd, *p_data);
+	return(ercd);
+}
+
+#endif /* TOPPERS_prcv_dtq */
+
+/*
+ *  f[^L
+[©çÌóMi^CAEg èj
+ */
+#ifdef TOPPERS_trcv_dtq
+
+ER
+trcv_dtq(ID dtqid, intptr_t *p_data, TMO tmout)
+{
+	DTQCB	*p_dtqcb;
+	WINFO_DTQ winfo_dtq;
+	TMEVTB	tmevtb;
+	bool_t	reqdsp;
+	ER		ercd;
+
+	LOG_TRCV_DTQ_ENTER(dtqid, p_data, tmout);
+	CHECK_DISPATCH();
+	CHECK_DTQID(dtqid);
+	CHECK_TMOUT(tmout);
+	p_dtqcb = get_dtqcb(dtqid);
+
+	t_lock_cpu();
+	if (receive_data(p_dtqcb, p_data, &reqdsp)) {
+		if (reqdsp) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else if (tmout == TMO_POL) {
+		ercd = E_TMOUT;
+	}
+	else {
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_RDTQ);
+		make_wait_tmout(&(winfo_dtq.winfo), &tmevtb, tmout);
+		queue_insert_prev(&(p_dtqcb->rwait_queue), &(p_runtsk->task_queue));
+		winfo_dtq.p_dtqcb = p_dtqcb;
+		LOG_TSKSTAT(p_runtsk);
+		dispatch();
+		ercd = winfo_dtq.winfo.wercd;
+		if (ercd == E_OK) {
+			*p_data = winfo_dtq.data;
+		}
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_TRCV_DTQ_LEAVE(ercd, *p_data);
+	return(ercd);
+}
+
+#endif /* TOPPERS_trcv_dtq */
+
+/*
+ *  f[^L
+[ÌÄú»
+ */
+#ifdef TOPPERS_ini_dtq
+
+ER
+ini_dtq(ID dtqid)
+{
+	DTQCB	*p_dtqcb;
+	bool_t	dspreq;
+	ER		ercd;
+    
+	LOG_INI_DTQ_ENTER(dtqid);
+	CHECK_TSKCTX_UNL();
+	CHECK_DTQID(dtqid);
+	p_dtqcb = get_dtqcb(dtqid);
+
+	t_lock_cpu();
+	dspreq = init_wait_queue(&(p_dtqcb->swait_queue));
+	if (init_wait_queue(&(p_dtqcb->rwait_queue))) {
+		dspreq = true;
+	};
+	p_dtqcb->count = 0U;
+	p_dtqcb->head = 0U;
+	p_dtqcb->tail = 0U;
+	if (dspreq) {
+		dispatch();
+	}
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_INI_DTQ_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ini_dtq */
+
+/*
+ *  f[^L
+[ÌóÔQÆ
+ */
+#ifdef TOPPERS_ref_dtq
+
+ER
+ref_dtq(ID dtqid, T_RDTQ *pk_rdtq)
+{
+	DTQCB	*p_dtqcb;
+	ER		ercd;
+    
+	LOG_REF_DTQ_ENTER(dtqid, pk_rdtq);
+	CHECK_TSKCTX_UNL();
+	CHECK_DTQID(dtqid);
+	p_dtqcb = get_dtqcb(dtqid);
+
+	t_lock_cpu();
+	pk_rdtq->stskid = wait_tskid(&(p_dtqcb->swait_queue));
+	pk_rdtq->rtskid = wait_tskid(&(p_dtqcb->rwait_queue));
+	pk_rdtq->sdtqcnt = p_dtqcb->count;
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_REF_DTQ_LEAVE(ercd, pk_rdtq);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ref_dtq */
Index: /asp_ewarm/asp-1.7.0/extension/dcre/kernel/dataqueue.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/dcre/kernel/dataqueue.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/dcre/kernel/dataqueue.h	(revision 61)
@@ -0,0 +1,198 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: dataqueue.h 1966 2010-11-20 07:23:56Z ertl-hiro $
+ */
+
+/*
+ *		f[^L
+[@\
+ */
+
+#ifndef TOPPERS_DATAQUEUE_H
+#define TOPPERS_DATAQUEUE_H
+
+#include <queue.h>
+
+/*
+ *  f[^ÇubN
+ */
+typedef struct data_management_block {
+	intptr_t	data;			/* f[^{Ì */
+} DTQMB;
+
+/*
+ *  f[^L
+[ú»ubN
+ *
+ *  ±Ì\¢ÌÍC¯úEÊMIuWFNgÌú»ubNÌ¤Êª
+ *  iWOBJINIBjðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅC
+ *  ÅÌtB[hª¤ÊÉÈÁÄ¢éD
+ */
+typedef struct dataqueue_initialization_block {
+	ATR			dtqatr;			/* f[^L
+[®« */
+	uint_t		dtqcnt;			/* f[^L
+[ÌeÊ */
+	DTQMB		*p_dtqmb;		/* f[^L
+[ÇÌæÌæªÔn */
+} DTQINIB;
+
+/*
+ *  f[^L
+[ÇubN
+ *
+ *  ±Ì\¢ÌÍC¯úEÊMIuWFNgÌÇubNÌ¤ÊªiWOBJCBj
+ *  ðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅCÅÌ2ÂÌ
+ *  tB[hª¤ÊÉÈÁÄ¢éD
+ */
+typedef struct dataqueue_control_block {
+	QUEUE		swait_queue;	/* f[^L
+[MÒ¿L
+[ */
+	const DTQINIB *p_dtqinib;	/* ú»ubNÖÌ|C^ */
+	QUEUE		rwait_queue;	/* f[^L
+[óMÒ¿L
+[ */
+	uint_t		count;			/* f[^L
+[Ìf[^Ì */
+	uint_t		head;			/* ÅÌf[^Ìi[ê */
+	uint_t		tail;			/* ÅãÌf[^Ìi[êÌ */
+} DTQCB;
+
+/*
+ *  f[^L
+[Ò¿îñubNÌè`
+ *
+ *  ±Ì\¢ÌÍC¯úEÊMIuWFNgÌÒ¿îñubNÌ¤Êª
+ *  iWINFO_WOBJjðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅC
+ *  ÅÌ2ÂÌtB[hª¤ÊÉÈÁÄ¢éD
+ *  f[^L
+[ÖÌMÒ¿Æf[^L
+[©çÌóMÒ¿ÅC¯¶Ò¿î
+ *  ñubNðg¤D
+ */
+typedef struct dataqueue_waiting_information {
+	WINFO		winfo;			/* WÌÒ¿îñubN */
+	DTQCB		*p_dtqcb;		/* ÒÁÄ¢éf[^L
+[ÌÇubN */
+	intptr_t	data;			/* óMf[^ */
+} WINFO_DTQ;
+
+/*
+ *  gpµÄ¢È¢f[^L
+[ÇubNÌXg
+ */
+extern QUEUE	free_dtqcb;
+
+/*
+ *  f[^L
+[IDÌÅålikernel_cfg.cj
+ */
+extern const ID	tmax_dtqid;
+extern const ID	tmax_sdtqid;
+
+/*
+ *  f[^L
+[ú»ubNÌGAikernel_cfg.cj
+ */
+extern const DTQINIB	dtqinib_table[];
+extern DTQINIB			adtqinib_table[];
+
+/*
+ *  f[^L
+[ÇubNÌGAikernel_cfg.cj
+ */
+extern DTQCB	dtqcb_table[];
+
+/*
+ *  f[^L
+[ÇubN©çf[^L
+[IDðæèo·½ßÌ}N
+ */
+#define	DTQID(p_dtqcb)	((ID)(((p_dtqcb) - dtqcb_table) + TMIN_DTQID))
+
+/*
+ *  f[^L
+[@\Ìú»
+ */
+extern void	initialize_dataqueue(void);
+
+/*
+ *  f[^L
+[ÇÌæÖÌf[^Ìi[
+ */
+extern void	enqueue_data(DTQCB *p_dtqcb, intptr_t data);
+
+/*
+ *  f[^L
+[ÇÌæÖÌf[^Ì­§i[
+ */
+extern void	force_enqueue_data(DTQCB *p_dtqcb, intptr_t data);
+
+/*
+ *  f[^L
+[ÇÌæ©çÌf[^Ìæoµ
+ */
+extern void	dequeue_data(DTQCB *p_dtqcb, intptr_t *p_data);
+
+/*
+ *  f[^L
+[ÖÌf[^M
+ */
+extern bool_t	send_data(DTQCB *p_dtqcb, intptr_t data, bool_t *p_reqdsp);
+
+/*
+ *  f[^L
+[ÖÌf[^­§M
+ */
+extern bool_t	force_send_data(DTQCB *p_dtqcb, intptr_t data);
+
+/*
+ *  f[^L
+[©çÌf[^óM
+ */
+extern bool_t	receive_data(DTQCB *p_dtqcb, intptr_t *p_data,
+													bool_t *p_reqdsp);
+
+#endif /* TOPPERS_DATAQUEUE_H */
Index: /asp_ewarm/asp-1.7.0/extension/dcre/kernel/eventflag.c
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/dcre/kernel/eventflag.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/dcre/kernel/eventflag.c	(revision 61)
@@ -0,0 +1,647 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: eventflag.c 1966 2010-11-20 07:23:56Z ertl-hiro $
+ */
+
+/*
+ *		CxgtO@\
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+#include "eventflag.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_ACRE_FLG_ENTER
+#define LOG_ACRE_FLG_ENTER(pk_cflg)
+#endif /* LOG_ACRE_FLG_ENTER */
+
+#ifndef LOG_ACRE_FLG_LEAVE
+#define LOG_ACRE_FLG_LEAVE(ercd)
+#endif /* LOG_ACRE_FLG_LEAVE */
+
+#ifndef LOG_DEL_FLG_ENTER
+#define LOG_DEL_FLG_ENTER(flgid)
+#endif /* LOG_DEL_FLG_ENTER */
+
+#ifndef LOG_DEL_FLG_LEAVE
+#define LOG_DEL_FLG_LEAVE(ercd)
+#endif /* LOG_DEL_FLG_LEAVE */
+
+#ifndef LOG_SET_FLG_ENTER
+#define LOG_SET_FLG_ENTER(flgid, setptn)
+#endif /* LOG_SET_FLG_ENTER */
+
+#ifndef LOG_SET_FLG_LEAVE
+#define LOG_SET_FLG_LEAVE(ercd)
+#endif /* LOG_SET_FLG_LEAVE */
+
+#ifndef LOG_ISET_FLG_ENTER
+#define LOG_ISET_FLG_ENTER(flgid, setptn)
+#endif /* LOG_ISET_FLG_ENTER */
+
+#ifndef LOG_ISET_FLG_LEAVE
+#define LOG_ISET_FLG_LEAVE(ercd)
+#endif /* LOG_ISET_FLG_LEAVE */
+
+#ifndef LOG_CLR_FLG_ENTER
+#define LOG_CLR_FLG_ENTER(flgid, clrptn)
+#endif /* LOG_CLR_FLG_ENTER */
+
+#ifndef LOG_CLR_FLG_LEAVE
+#define LOG_CLR_FLG_LEAVE(ercd)
+#endif /* LOG_CLR_FLG_LEAVE */
+
+#ifndef LOG_WAI_FLG_ENTER
+#define LOG_WAI_FLG_ENTER(flgid, waiptn, wfmode, p_flgptn)
+#endif /* LOG_WAI_FLG_ENTER */
+
+#ifndef LOG_WAI_FLG_LEAVE
+#define LOG_WAI_FLG_LEAVE(ercd, flgptn)
+#endif /* LOG_WAI_FLG_LEAVE */
+
+#ifndef LOG_POL_FLG_ENTER
+#define LOG_POL_FLG_ENTER(flgid, waiptn, wfmode, p_flgptn)
+#endif /* LOG_POL_FLG_ENTER */
+
+#ifndef LOG_POL_FLG_LEAVE
+#define LOG_POL_FLG_LEAVE(ercd, flgptn)
+#endif /* LOG_POL_FLG_LEAVE */
+
+#ifndef LOG_TWAI_FLG_ENTER
+#define LOG_TWAI_FLG_ENTER(flgid, waiptn, wfmode, p_flgptn, tmout)
+#endif /* LOG_TWAI_FLG_ENTER */
+
+#ifndef LOG_TWAI_FLG_LEAVE
+#define LOG_TWAI_FLG_LEAVE(ercd, flgptn)
+#endif /* LOG_TWAI_FLG_LEAVE */
+
+#ifndef LOG_INI_FLG_ENTER
+#define LOG_INI_FLG_ENTER(flgid)
+#endif /* LOG_INI_FLG_ENTER */
+
+#ifndef LOG_INI_FLG_LEAVE
+#define LOG_INI_FLG_LEAVE(ercd)
+#endif /* LOG_INI_FLG_LEAVE */
+
+#ifndef LOG_REF_FLG_ENTER
+#define LOG_REF_FLG_ENTER(flgid, pk_rflg)
+#endif /* LOG_REF_FLG_ENTER */
+
+#ifndef LOG_REF_FLG_LEAVE
+#define LOG_REF_FLG_LEAVE(ercd, pk_rflg)
+#endif /* LOG_REF_FLG_LEAVE */
+
+/*
+ *  CxgtOÌ
+ */
+#define tnum_flg	((uint_t)(tmax_flgid - TMIN_FLGID + 1))
+#define tnum_sflg	((uint_t)(tmax_sflgid - TMIN_FLGID + 1))
+
+/*
+ *  CxgtOID©çCxgtOÇubNðæèo·½ßÌ}N
+ */
+#define INDEX_FLG(flgid)	((uint_t)((flgid) - TMIN_FLGID))
+#define get_flgcb(flgid)	(&(flgcb_table[INDEX_FLG(flgid)]))
+
+#ifdef TOPPERS_flgini
+
+/*
+ *  gpµÄ¢È¢CxgtOÇubNÌXg
+ */
+QUEUE	free_flgcb;
+
+/*
+ *  CxgtO@\Ìú»
+ */
+void
+initialize_eventflag(void)
+{
+	uint_t	i, j;
+	FLGCB	*p_flgcb;
+	FLGINIB	*p_flginib;
+
+	for (p_flgcb = flgcb_table, i = 0; i < tnum_sflg; p_flgcb++, i++) {
+		queue_initialize(&(p_flgcb->wait_queue));
+		p_flgcb->p_flginib = &(flginib_table[i]);
+		p_flgcb->flgptn = p_flgcb->p_flginib->iflgptn;
+	}
+	queue_initialize(&free_flgcb);
+	for (j = 0; i < tnum_flg; p_flgcb++, i++, j++) {
+		p_flginib = &(aflginib_table[j]);
+		p_flginib->flgatr = TA_NOEXS;
+		p_flgcb->p_flginib = ((const FLGINIB *) p_flginib);
+		queue_insert_prev(&free_flgcb, &(p_flgcb->wait_queue));
+	}
+}
+
+#endif /* TOPPERS_flgini */
+
+/*
+ *  CxgtOÌ¶¬
+ */
+#ifdef TOPPERS_acre_flg
+
+ER_UINT
+acre_flg(const T_CFLG *pk_cflg)
+{
+	FLGCB	*p_flgcb;
+	FLGINIB	*p_flginib;
+	ER		ercd;
+
+	LOG_ACRE_FLG_ENTER(pk_cflg);
+	CHECK_TSKCTX_UNL();
+	CHECK_RSATR(pk_cflg->flgatr, TA_TPRI|TA_WMUL|TA_CLR);
+
+	t_lock_cpu();
+	if (queue_empty(&free_flgcb)) {
+		ercd = E_NOID;
+	}
+	else {
+		p_flgcb = ((FLGCB *) queue_delete_next(&free_flgcb));
+		p_flginib = (FLGINIB *)(p_flgcb->p_flginib);
+		p_flginib->flgatr = pk_cflg->flgatr;
+		p_flginib->iflgptn = pk_cflg->iflgptn;
+
+		queue_initialize(&(p_flgcb->wait_queue));
+		p_flgcb->flgptn = p_flgcb->p_flginib->iflgptn;
+		ercd = FLGID(p_flgcb);
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_ACRE_FLG_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_acre_flg */
+
+/*
+ *  CxgtOÌí
+ */
+#ifdef TOPPERS_del_flg
+
+ER
+del_flg(ID flgid)
+{
+	FLGCB	*p_flgcb;
+	FLGINIB	*p_flginib;
+	bool_t	dspreq;
+	ER		ercd;
+
+	LOG_DEL_FLG_ENTER(flgid);
+	CHECK_TSKCTX_UNL();
+	CHECK_FLGID(flgid);
+	p_flgcb = get_flgcb(flgid);
+
+	t_lock_cpu();
+	if (p_flgcb->p_flginib->flgatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (FLGID(p_flgcb) > tmax_sflgid) {
+		dspreq = init_wait_queue(&(p_flgcb->wait_queue));
+		p_flginib = (FLGINIB *)(p_flgcb->p_flginib);
+		p_flginib->flgatr = TA_NOEXS;
+		queue_insert_prev(&free_flgcb, &(p_flgcb->wait_queue));
+		if (dspreq) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_OBJ;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_DEL_FLG_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_del_flg */
+
+/*
+ *  CxgtOÒ¿ððÌ`FbN
+ */
+#ifdef TOPPERS_flgcnd
+
+bool_t
+check_flg_cond(FLGCB *p_flgcb, FLGPTN waiptn, MODE wfmode, FLGPTN *p_flgptn)
+{
+	if ((wfmode & TWF_ORW) != 0U ? (p_flgcb->flgptn & waiptn) != 0U
+									: (p_flgcb->flgptn & waiptn) == waiptn) {
+		*p_flgptn = p_flgcb->flgptn;
+		if ((p_flgcb->p_flginib->flgatr & TA_CLR) != 0U) {
+			p_flgcb->flgptn = 0U;
+		}
+		return(true);
+	}
+	return(false);
+}
+
+#endif /* TOPPERS_flgcnd */
+
+/*
+ *  CxgtOÌZbg
+ */
+#ifdef TOPPERS_set_flg
+
+ER
+set_flg(ID flgid, FLGPTN setptn)
+{
+	FLGCB	*p_flgcb;
+	QUEUE	*p_queue;
+	TCB		*p_tcb;
+	WINFO_FLG *p_winfo_flg;
+	bool_t	dspreq = false;
+	ER		ercd;
+
+	LOG_SET_FLG_ENTER(flgid, setptn);
+	CHECK_TSKCTX_UNL();
+	CHECK_FLGID(flgid);
+	p_flgcb = get_flgcb(flgid);
+
+	t_lock_cpu();
+	if (p_flgcb->p_flginib->flgatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else {
+		p_flgcb->flgptn |= setptn;
+		p_queue = p_flgcb->wait_queue.p_next;
+		while (p_queue != &(p_flgcb->wait_queue)) {
+			p_tcb = (TCB *) p_queue;
+			p_queue = p_queue->p_next;
+			p_winfo_flg = (WINFO_FLG *)(p_tcb->p_winfo);
+			if (check_flg_cond(p_flgcb, p_winfo_flg->waiptn,
+							p_winfo_flg->wfmode, &(p_winfo_flg->flgptn))) {
+				queue_delete(&(p_tcb->task_queue));
+				if (wait_complete(p_tcb)) {
+					dspreq = true;
+				}
+				if ((p_flgcb->p_flginib->flgatr & TA_CLR) != 0U) {
+					break;
+				}
+			}
+		}
+		if (dspreq) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_SET_FLG_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_set_flg */
+
+/*
+ *  CxgtOÌZbgiñ^XNReLXgpj
+ */
+#ifdef TOPPERS_iset_flg
+
+ER
+iset_flg(ID flgid, FLGPTN setptn)
+{
+	FLGCB	*p_flgcb;
+	QUEUE	*p_queue;
+	TCB		*p_tcb;
+	WINFO_FLG *p_winfo_flg;
+	ER		ercd;
+
+	LOG_ISET_FLG_ENTER(flgid, setptn);
+	CHECK_INTCTX_UNL();
+	CHECK_FLGID(flgid);
+	p_flgcb = get_flgcb(flgid);
+
+	i_lock_cpu();
+	if (p_flgcb->p_flginib->flgatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else {
+		p_flgcb->flgptn |= setptn;
+		p_queue = p_flgcb->wait_queue.p_next;
+		while (p_queue != &(p_flgcb->wait_queue)) {
+			p_tcb = (TCB *) p_queue;
+			p_queue = p_queue->p_next;
+			p_winfo_flg = (WINFO_FLG *)(p_tcb->p_winfo);
+			if (check_flg_cond(p_flgcb, p_winfo_flg->waiptn,
+							p_winfo_flg->wfmode, &(p_winfo_flg->flgptn))) {
+				queue_delete(&(p_tcb->task_queue));
+				if (wait_complete(p_tcb)) {
+					reqflg = true;
+				}
+				if ((p_flgcb->p_flginib->flgatr & TA_CLR) != 0U) {
+					break;
+				}
+			}
+		}
+		ercd = E_OK;
+	}
+	i_unlock_cpu();
+
+  error_exit:
+	LOG_ISET_FLG_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_iset_flg */
+
+/*
+ *  CxgtOÌNA
+ */
+#ifdef TOPPERS_clr_flg
+
+ER
+clr_flg(ID flgid, FLGPTN clrptn)
+{
+	FLGCB	*p_flgcb;
+	ER		ercd;
+
+	LOG_CLR_FLG_ENTER(flgid, clrptn);
+	CHECK_TSKCTX_UNL();
+	CHECK_FLGID(flgid);
+	p_flgcb = get_flgcb(flgid);
+
+	t_lock_cpu();
+	if (p_flgcb->p_flginib->flgatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else {
+		p_flgcb->flgptn &= clrptn; 
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_CLR_FLG_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_clr_flg */
+
+/*
+ *  CxgtOÒ¿
+ */
+#ifdef TOPPERS_wai_flg
+
+ER
+wai_flg(ID flgid, FLGPTN waiptn, MODE wfmode, FLGPTN *p_flgptn)
+{
+	FLGCB	*p_flgcb;
+	WINFO_FLG winfo_flg;
+	ER		ercd;
+
+	LOG_WAI_FLG_ENTER(flgid, waiptn, wfmode, p_flgptn);
+	CHECK_DISPATCH();
+	CHECK_FLGID(flgid);
+	CHECK_PAR(waiptn != 0U);
+	CHECK_PAR(wfmode == TWF_ORW || wfmode == TWF_ANDW);
+	p_flgcb = get_flgcb(flgid);
+
+	t_lock_cpu();
+	if (p_flgcb->p_flginib->flgatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if ((p_flgcb->p_flginib->flgatr & TA_WMUL) == 0U
+					&& !queue_empty(&(p_flgcb->wait_queue))) {
+		ercd = E_ILUSE;
+	}
+	else if (check_flg_cond(p_flgcb, waiptn, wfmode, p_flgptn)) {
+		ercd = E_OK;
+	}
+	else {
+		winfo_flg.waiptn = waiptn;
+		winfo_flg.wfmode = wfmode;
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_FLG);
+		wobj_make_wait((WOBJCB *) p_flgcb, (WINFO_WOBJ *) &winfo_flg);
+		dispatch();
+		ercd = winfo_flg.winfo.wercd;
+		if (ercd == E_OK) {
+			*p_flgptn = winfo_flg.flgptn;
+		}
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_WAI_FLG_LEAVE(ercd, *p_flgptn);
+	return(ercd);
+}
+
+#endif /* TOPPERS_wai_flg */
+
+/*
+ *  CxgtOÒ¿i|[Oj
+ */
+#ifdef TOPPERS_pol_flg
+
+ER
+pol_flg(ID flgid, FLGPTN waiptn, MODE wfmode, FLGPTN *p_flgptn)
+{
+	FLGCB	*p_flgcb;
+	ER		ercd;
+
+	LOG_POL_FLG_ENTER(flgid, waiptn, wfmode, p_flgptn);
+	CHECK_TSKCTX_UNL();
+	CHECK_FLGID(flgid);
+	CHECK_PAR(waiptn != 0U);
+	CHECK_PAR(wfmode == TWF_ORW || wfmode == TWF_ANDW);
+	p_flgcb = get_flgcb(flgid);
+
+	t_lock_cpu();
+	if (p_flgcb->p_flginib->flgatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if ((p_flgcb->p_flginib->flgatr & TA_WMUL) == 0U
+					&& !queue_empty(&(p_flgcb->wait_queue))) {
+		ercd = E_ILUSE;
+	}
+	else if (check_flg_cond(p_flgcb, waiptn, wfmode, p_flgptn)) {
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_TMOUT;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_POL_FLG_LEAVE(ercd, *p_flgptn);
+	return(ercd);
+}
+
+#endif /* TOPPERS_pol_flg */
+
+/*
+ *  CxgtOÒ¿i^CAEg èj
+ */
+#ifdef TOPPERS_twai_flg
+
+ER
+twai_flg(ID flgid, FLGPTN waiptn, MODE wfmode, FLGPTN *p_flgptn, TMO tmout)
+{
+	FLGCB	*p_flgcb;
+	WINFO_FLG winfo_flg;
+	TMEVTB	tmevtb;
+	ER		ercd;
+
+	LOG_TWAI_FLG_ENTER(flgid, waiptn, wfmode, p_flgptn, tmout);
+	CHECK_DISPATCH();
+	CHECK_FLGID(flgid);
+	CHECK_PAR(waiptn != 0U);
+	CHECK_PAR(wfmode == TWF_ORW || wfmode == TWF_ANDW);
+	CHECK_TMOUT(tmout);
+	p_flgcb = get_flgcb(flgid);
+
+	t_lock_cpu();
+	if (p_flgcb->p_flginib->flgatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if ((p_flgcb->p_flginib->flgatr & TA_WMUL) == 0U
+					&& !queue_empty(&(p_flgcb->wait_queue))) {
+		ercd = E_ILUSE;
+	}
+	else if (check_flg_cond(p_flgcb, waiptn, wfmode, p_flgptn)) {
+		ercd = E_OK;
+	}
+	else if (tmout == TMO_POL) {
+		ercd = E_TMOUT;
+	}
+	else {
+		winfo_flg.waiptn = waiptn;
+		winfo_flg.wfmode = wfmode;
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_FLG);
+		wobj_make_wait_tmout((WOBJCB *) p_flgcb, (WINFO_WOBJ *) &winfo_flg,
+														&tmevtb, tmout);
+		dispatch();
+		ercd = winfo_flg.winfo.wercd;
+		if (ercd == E_OK) {
+			*p_flgptn = winfo_flg.flgptn;
+		}
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_TWAI_FLG_LEAVE(ercd, *p_flgptn);
+	return(ercd);
+}
+
+#endif /* TOPPERS_twai_flg */
+
+/*
+ *  CxgtOÌÄú»
+ */
+#ifdef TOPPERS_ini_flg
+
+ER
+ini_flg(ID flgid)
+{
+	FLGCB	*p_flgcb;
+	bool_t	dspreq;
+	ER		ercd;
+    
+	LOG_INI_FLG_ENTER(flgid);
+	CHECK_TSKCTX_UNL();
+	CHECK_FLGID(flgid);
+	p_flgcb = get_flgcb(flgid);
+
+	t_lock_cpu();
+	if (p_flgcb->p_flginib->flgatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else {
+		dspreq = init_wait_queue(&(p_flgcb->wait_queue));
+		p_flgcb->flgptn = p_flgcb->p_flginib->iflgptn;
+		if (dspreq) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_INI_FLG_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ini_flg */
+
+/*
+ *  CxgtOÌóÔQÆ
+ */
+#ifdef TOPPERS_ref_flg
+
+ER
+ref_flg(ID flgid, T_RFLG *pk_rflg)
+{
+	FLGCB	*p_flgcb;
+	ER		ercd;
+    
+	LOG_REF_FLG_ENTER(flgid, pk_rflg);
+	CHECK_TSKCTX_UNL();
+	CHECK_FLGID(flgid);
+	p_flgcb = get_flgcb(flgid);
+
+	t_lock_cpu();
+	if (p_flgcb->p_flginib->flgatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else {
+		pk_rflg->wtskid = wait_tskid(&(p_flgcb->wait_queue));
+		pk_rflg->flgptn = p_flgcb->flgptn;
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_REF_FLG_LEAVE(ercd, pk_rflg);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ref_flg */
Index: /asp_ewarm/asp-1.7.0/extension/dcre/kernel/eventflag.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/dcre/kernel/eventflag.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/dcre/kernel/eventflag.h	(revision 61)
@@ -0,0 +1,138 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: eventflag.h 1966 2010-11-20 07:23:56Z ertl-hiro $
+ */
+
+/*
+ *		CxgtO@\
+ */
+
+#ifndef TOPPERS_EVENTFLAG_H
+#define TOPPERS_EVENTFLAG_H
+
+#include <queue.h>
+
+/*
+ *  CxgtOú»ubN
+ *
+ *  ±Ì\¢ÌÍC¯úEÊMIuWFNgÌú»ubNÌ¤Êª
+ *  iWOBJINIBjðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅC
+ *  ÅÌtB[hª¤ÊÉÈÁÄ¢éD
+ */
+typedef struct eventflag_initialization_block {
+	ATR			flgatr;			/* CxgtO®« */
+	FLGPTN		iflgptn;		/* CxgtOÌrbgp^[Ìúl */
+} FLGINIB;
+
+/*
+ *  CxgtOÇubN
+ *
+ *  ±Ì\¢ÌÍC¯úEÊMIuWFNgÌÇubNÌ¤ÊªiWOBJCBj
+ *  ðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅCÅÌ2ÂÌ
+ *  tB[hª¤ÊÉÈÁÄ¢éD
+ */
+typedef struct eventflag_control_block {
+	QUEUE		wait_queue;		/* CxgtOÒ¿L
+[ */
+	const FLGINIB *p_flginib;	/* ú»ubNÖÌ|C^ */
+	FLGPTN		flgptn;			/* CxgtO»Ýp^[ */
+} FLGCB;
+
+/*
+ *  CxgtOÒ¿îñubNÌè`
+ *
+ *  ±Ì\¢ÌÍC¯úEÊMIuWFNgÌÒ¿îñubNÌ¤Êª
+ *  iWINFO_WOBJjðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅC
+ *  ÅÌ2ÂÌtB[hª¤ÊÉÈÁÄ¢éD
+ *
+ *  flgptnÍCwaiptn¨æÑwfmodeÆ¯Ég¤±ÆÍÈ¢½ßC¤pÌðg
+ *  ¦Îðßñ·é±ÆªÂ\Å éD
+ */
+typedef struct eventflag_waiting_information {
+	WINFO		winfo;			/* WÌÒ¿îñubN */
+	FLGCB		*p_flgcb;		/* ÒÁÄ¢éCxgtOÌÇubN */
+	FLGPTN		waiptn;			/* Ò¿p^[ */
+	MODE		wfmode;			/* Ò¿[h */
+	FLGPTN		flgptn;			/* Ò¿ðÌp^[ */
+} WINFO_FLG;
+
+/*
+ *  gpµÄ¢È¢CxgtOÇubNÌXg
+ */
+extern QUEUE	free_flgcb;
+
+/*
+ *  CxgtOIDÌÅålikernel_cfg.cj
+ */
+extern const ID	tmax_flgid;
+extern const ID	tmax_sflgid;
+
+/*
+ *  CxgtOú»ubNÌGAikernel_cfg.cj
+ */
+extern const FLGINIB	flginib_table[];
+extern FLGINIB			aflginib_table[];
+
+/*
+ *  CxgtOÇubNÌGAikernel_cfg.cj
+ */
+extern FLGCB	flgcb_table[];
+
+/*
+ *  CxgtOÇubN©çCxgtOIDðæèo·½ßÌ}N
+ */
+#define	FLGID(p_flgcb)	((ID)(((p_flgcb) - flgcb_table) + TMIN_FLGID))
+
+/*
+ *  CxgtO@\Ìú»
+ */
+extern void	initialize_eventflag(void);
+
+/*
+ *  CxgtOÒ¿ððÌ`FbN
+ */
+extern bool_t	check_flg_cond(FLGCB *p_flgcb, FLGPTN waiptn,
+								MODE wfmode, FLGPTN *p_flgptn);
+
+#endif /* TOPPERS_EVENTFLAG_H */
Index: /asp_ewarm/asp-1.7.0/extension/dcre/kernel/interrupt.c
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/dcre/kernel/interrupt.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/dcre/kernel/interrupt.c	(revision 61)
@@ -0,0 +1,495 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: interrupt.c 2018 2010-12-31 13:43:05Z ertl-hiro $
+ */
+
+/*
+ *		ÝÇ@\
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "interrupt.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_ISR_ENTER
+#define LOG_ISR_ENTER(intno)
+#endif /* LOG_ISR_ENTER */
+
+#ifndef LOG_ISR_LEAVE
+#define LOG_ISR_LEAVE(intno)
+#endif /* LOG_ISR_LEAVE */
+
+#ifndef LOG_ACRE_ISR_ENTER
+#define LOG_ACRE_ISR_ENTER(pk_cisr)
+#endif /* LOG_ACRE_ISR_ENTER */
+
+#ifndef LOG_ACRE_ISR_LEAVE
+#define LOG_ACRE_ISR_LEAVE(ercd)
+#endif /* LOG_ACRE_ISR_LEAVE */
+
+#ifndef LOG_DEL_ISR_ENTER
+#define LOG_DEL_ISR_ENTER(isrid)
+#endif /* LOG_DEL_ISR_ENTER */
+
+#ifndef LOG_DEL_ISR_LEAVE
+#define LOG_DEL_ISR_LEAVE(ercd)
+#endif /* LOG_DEL_ISR_LEAVE */
+
+#ifndef LOG_DIS_INT_ENTER
+#define LOG_DIS_INT_ENTER(intno)
+#endif /* LOG_DIS_INT_ENTER */
+
+#ifndef LOG_DIS_INT_LEAVE
+#define LOG_DIS_INT_LEAVE(ercd)
+#endif /* LOG_DIS_INT_LEAVE */
+
+#ifndef LOG_ENA_INT_ENTER
+#define LOG_ENA_INT_ENTER(intno)
+#endif /* LOG_ENA_INT_ENTER */
+
+#ifndef LOG_ENA_INT_LEAVE
+#define LOG_ENA_INT_LEAVE(ercd)
+#endif /* LOG_ENA_INT_LEAVE */
+
+#ifndef LOG_CHG_IPM_ENTER
+#define LOG_CHG_IPM_ENTER(intpri)
+#endif /* LOG_CHG_IPM_ENTER */
+
+#ifndef LOG_CHG_IPM_LEAVE
+#define LOG_CHG_IPM_LEAVE(ercd)
+#endif /* LOG_CHG_IPM_LEAVE */
+
+#ifndef LOG_GET_IPM_ENTER
+#define LOG_GET_IPM_ENTER(p_intpri)
+#endif /* LOG_GET_IPM_ENTER */
+
+#ifndef LOG_GET_IPM_LEAVE
+#define LOG_GET_IPM_LEAVE(ercd, intpri)
+#endif /* LOG_GET_IPM_LEAVE */
+
+/*
+ *  ÝT[rX[`Ì
+ */
+#define tnum_isr	((uint_t)(tmax_isrid - TMIN_SEMID + 1) + tnum_sisr)
+
+/*
+ *  ÝT[rX[`ID©çÝT[rX[`ÇubNðæ
+ *  èo·½ßÌ}N
+ */
+#define INDEX_ISR(isrid)	((uint_t)((isrid) - TMIN_ISRID) + tnum_sisr)
+#define get_isrcb(isrid)	(&(isrcb_table[INDEX_ISR(isrid)]))
+
+/*
+ *  ÝT[rX[`L
+[ÖÌo^
+ */
+Inline void
+enqueue_isr(QUEUE *p_isr_queue, ISRCB *p_isrcb)
+{
+	QUEUE	*p_entry;
+	PRI		isrpri = p_isrcb->p_isrinib->isrpri;
+
+	for (p_entry = p_isr_queue->p_next; p_entry != p_isr_queue;
+											p_entry = p_entry->p_next) {
+		if (isrpri < ((ISRCB *) p_entry)->p_isrinib->isrpri) {
+			break;
+		}
+	}
+	queue_insert_prev(p_entry, &(p_isrcb->isr_queue));
+}
+
+#ifdef TOPPERS_isrini
+
+/*
+ *  gpµÄ¢È¢ÝT[rX[`ÇubNÌXg
+ */
+QUEUE	free_isrcb;
+
+/* 
+ *  ÝT[rX[`@\Ìú»
+ */
+void
+initialize_isr(void)
+{
+	uint_t	i, j;
+	ISRCB	*p_isrcb;
+	ISRINIB	*p_isrinib;
+
+	for (i = 0; i < tnum_isr_queue; i++) {
+		queue_initialize(&(isr_queue_table[i]));
+	}
+	for (p_isrcb = isrcb_table, i = 0; i < tnum_sisr; p_isrcb++, i++) {
+		p_isrcb->p_isrinib = &(sisrinib_table[i]);
+		enqueue_isr(p_isrcb->p_isrinib->p_isr_queue, p_isrcb);
+	}
+	queue_initialize(&free_isrcb);
+	for (j = 0; i < tnum_isr; p_isrcb++, i++, j++) {
+		p_isrinib = &(aisrinib_table[j]);
+		p_isrinib->isratr = TA_NOEXS;
+		p_isrcb->p_isrinib = ((const ISRINIB *) p_isrinib);
+		queue_insert_prev(&free_isrcb, &(p_isrcb->isr_queue));
+	}
+}
+
+#endif /* TOPPERS_isrini */
+
+/*
+ *  ÝT[rX[`ÌÄoµ
+ */
+#ifdef TOPPERS_isrcal
+
+void
+call_isr(QUEUE *p_isr_queue)
+{
+	QUEUE	*p_queue;
+	ISRINIB	*p_isrinib;
+	PRI		saved_ipm;
+
+	saved_ipm = i_get_ipm();
+	for (p_queue = p_isr_queue->p_next; p_queue != p_isr_queue;
+											p_queue = p_queue->p_next) {
+		p_isrinib = (ISRINIB *)(((ISRCB *) p_queue)->p_isrinib);
+		LOG_ISR_ENTER(p_isrinib->intno);
+		(*(p_isrinib->isr))(p_isrinib->exinf);
+		LOG_ISR_LEAVE(p_isrinib->intno);
+
+		if (p_queue->p_next != p_isr_queue) {
+			/* ISRÌÄoµOÌóÔÉß· */
+			if (i_sense_lock()) {
+				i_unlock_cpu();
+			}
+			i_set_ipm(saved_ipm);
+		}
+	}
+}
+
+#endif /* TOPPERS_isrcal */
+
+/*
+ *  ÝT[rX[`ÄoµL
+[Ìõ
+ */
+Inline QUEUE *
+search_isr_queue(INTNO intno)
+{
+	int_t	left, right, i;
+
+	if (tnum_isr_queue == 0) {
+		return(NULL);
+	}
+
+	left = 0;
+	right = tnum_isr_queue - 1;
+	while (left < right) {
+		i = (left + right + 1) / 2;
+		if (intno < isr_queue_list[i].intno) {
+			right = i - 1;
+		}
+		else {
+			left = i;
+		}
+	}
+	if (isr_queue_list[left].intno == intno) {
+		return(isr_queue_list[left].p_isr_queue);
+	}
+	else {
+		return(NULL);
+	}
+}
+
+/*
+ *  ÝT[rX[`Ì¶¬
+ */
+#ifdef TOPPERS_acre_isr
+
+ER_UINT
+acre_isr(const T_CISR *pk_cisr)
+{
+	ISRCB	*p_isrcb;
+	ISRINIB	*p_isrinib;
+	QUEUE	*p_isr_queue;
+	ER		ercd;
+
+	LOG_ACRE_ISR_ENTER(pk_cisr);
+	CHECK_TSKCTX_UNL();
+	CHECK_RSATR(pk_cisr->isratr, TARGET_ISRATR);
+	CHECK_INTNO_CREISR(pk_cisr->intno);
+	CHECK_ALIGN_FUNC(pk_cisr->isr);
+	CHECK_NONNULL_FUNC(pk_cisr->isr);
+	CHECK_ISRPRI(pk_cisr->isrpri);
+
+	p_isr_queue = search_isr_queue(pk_cisr->intno);
+	CHECK_PAR(p_isr_queue != NULL);
+
+	t_lock_cpu();
+	if (queue_empty(&free_isrcb)) {
+		ercd = E_NOID;
+	}
+	else {
+		p_isrcb = ((ISRCB *) queue_delete_next(&free_isrcb));
+		p_isrinib = (ISRINIB *)(p_isrcb->p_isrinib);
+		p_isrinib->isratr = pk_cisr->isratr;
+		p_isrinib->exinf = pk_cisr->exinf;
+		p_isrinib->intno = pk_cisr->intno;
+		p_isrinib->p_isr_queue = p_isr_queue;
+		p_isrinib->isr = pk_cisr->isr;
+		p_isrinib->isrpri = pk_cisr->isrpri;
+		enqueue_isr(p_isr_queue, p_isrcb);
+		ercd = ISRID(p_isrcb);
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_ACRE_ISR_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_acre_isr */
+
+/*
+ *  ÝT[rX[`Ìí
+ */
+#ifdef TOPPERS_del_isr
+
+ER
+del_isr(ID isrid)
+{
+	ISRCB	*p_isrcb;
+	ISRINIB	*p_isrinib;
+	ER		ercd;
+
+	LOG_DEL_ISR_ENTER(isrid);
+	CHECK_TSKCTX_UNL();
+	CHECK_ISRID(isrid);
+	p_isrcb = get_isrcb(isrid);
+
+	t_lock_cpu();
+	if (p_isrcb->p_isrinib->isratr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else {
+		queue_delete(&(p_isrcb->isr_queue));
+		p_isrinib = (ISRINIB *)(p_isrcb->p_isrinib);
+		p_isrinib->isratr = TA_NOEXS;
+		queue_insert_prev(&free_isrcb, &(p_isrcb->isr_queue));
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_DEL_ISR_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_del_isr */
+
+/* 
+ *  ÝÇ@\Ìú»
+ */
+#ifdef TOPPERS_intini
+#ifndef OMIT_INITIALIZE_INTERRUPT
+
+void
+initialize_interrupt(void)
+{
+	uint_t			i;
+	const INHINIB	*p_inhinib;
+	const INTINIB	*p_intinib;
+
+	for (p_inhinib = inhinib_table, i = 0; i < tnum_inhno; p_inhinib++, i++) {
+		x_define_inh(p_inhinib->inhno, p_inhinib->int_entry);
+	}
+	for (p_intinib = intinib_table, i = 0; i < tnum_intno; p_intinib++, i++) {
+		x_config_int(p_intinib->intno, p_intinib->intatr, p_intinib->intpri);
+	}
+}
+
+#endif /* OMIT_INITIALIZE_INTERRUPT */
+#endif /* TOPPERS_intini */
+
+/*
+ *  ÝÌÖ~
+ */
+#ifdef TOPPERS_dis_int
+#ifdef TOPPERS_SUPPORT_DIS_INT
+
+ER
+dis_int(INTNO intno)
+{
+	bool_t	locked;
+	ER		ercd;
+
+	LOG_DIS_INT_ENTER(intno);
+	CHECK_TSKCTX();
+	CHECK_INTNO_DISINT(intno);
+
+	locked = t_sense_lock();
+	if (!locked) {
+		t_lock_cpu();
+	}
+	if (t_disable_int(intno)) {
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_OBJ;
+	}
+	if (!locked) {
+		t_unlock_cpu();
+	}
+
+  error_exit:
+	LOG_DIS_INT_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_SUPPORT_DIS_INT */
+#endif /* TOPPERS_dis_int */
+
+/*
+ *  ÝÌÂ
+ */
+#ifdef TOPPERS_ena_int
+#ifdef TOPPERS_SUPPORT_ENA_INT
+
+ER
+ena_int(INTNO intno)
+{
+	bool_t	locked;
+	ER		ercd;
+
+	LOG_ENA_INT_ENTER(intno);
+	CHECK_TSKCTX();
+	CHECK_INTNO_DISINT(intno);
+
+	locked = t_sense_lock();
+	if (!locked) {
+		t_lock_cpu();
+	}
+	if (t_enable_int(intno)) {
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_OBJ;
+	}
+	if (!locked) {
+		t_unlock_cpu();
+	}
+
+  error_exit:
+	LOG_ENA_INT_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_SUPPORT_ENA_INT */
+#endif /* TOPPERS_ena_int */
+
+/*
+ *  ÝDæx}XNÌÏX
+ */
+#ifdef TOPPERS_chg_ipm
+
+ER
+chg_ipm(PRI intpri)
+{
+	ER		ercd;
+
+	LOG_CHG_IPM_ENTER(intpri);
+	CHECK_TSKCTX_UNL();
+	CHECK_INTPRI_CHGIPM(intpri);
+
+	t_lock_cpu();
+	t_set_ipm(intpri);
+	if (intpri == TIPM_ENAALL) {
+		ipmflg = true;
+		if (!disdsp) {
+			dspflg = true;
+			if (p_runtsk != p_schedtsk) {
+				dispatch();
+			}
+		}
+		if (p_runtsk->enatex && p_runtsk->texptn != 0U) {
+			call_texrtn();
+		}
+	}
+	else {
+		ipmflg = false;
+		dspflg = false;
+	}
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_CHG_IPM_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_chg_ipm */
+
+/*
+ *  ÝDæx}XNÌQÆ
+ */
+#ifdef TOPPERS_get_ipm
+
+ER
+get_ipm(PRI *p_intpri)
+{
+	ER		ercd;
+
+	LOG_GET_IPM_ENTER(p_intpri);
+	CHECK_TSKCTX_UNL();
+
+	t_lock_cpu();
+	*p_intpri = t_get_ipm();
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_GET_IPM_LEAVE(ercd, *p_intpri);
+	return(ercd);
+}
+
+#endif /* TOPPERS_get_ipm */
Index: /asp_ewarm/asp-1.7.0/extension/dcre/kernel/interrupt.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/dcre/kernel/interrupt.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/dcre/kernel/interrupt.h	(revision 61)
@@ -0,0 +1,195 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2000 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: interrupt.h 1966 2010-11-20 07:23:56Z ertl-hiro $
+ */
+
+/*
+ *		ÝÇ@\
+ */
+
+#ifndef TOPPERS_INTERRUPT_H
+#define TOPPERS_INTERRUPT_H
+
+/*
+ *  ÝT[rX[`ú»ubN
+ */
+typedef struct isr_initialization_block {
+	ATR			isratr;			/* ÝT[rX[`®« */
+	intptr_t	exinf;			/* ÝT[rX[`Ìg£îñ */
+	INTNO		intno;			/* ÝT[rX[`ðo^·éÝÔ */
+	QUEUE		*p_isr_queue;	/* o^æÝT[rX[`L
+[ÌÔn */
+	ISR			isr;			/* ÝT[rX[`ÌæªÔn */
+	PRI			isrpri;			/* ÝT[rX[`Dæx */
+} ISRINIB;
+
+/*
+ *  ÝT[rX[`ÇubN
+ */
+typedef struct isr_control_block {
+	QUEUE		isr_queue;		/* ÝT[rX[`ÄoµL
+[ */
+	const ISRINIB *p_isrinib;	/* ú»ubNÖÌ|C^ */
+} ISRCB;
+
+/*
+ *  ÝT[rX[`ÄoµL
+[ðõ·é½ßÌf[^\¢
+ */
+typedef struct {
+	INTNO		intno;			/* ÝÔ */
+	QUEUE		*p_isr_queue;	/* ÝT[rX[`ÄoµL
+[ */
+} ISR_ENTRY;
+
+/*
+ *  ÝT[rX[`L
+[ÌGgikernel_cfg.cj
+ */
+extern const uint_t tnum_isr_queue;
+
+/*
+ *  ÝT[rX[`L
+[Xgikernel_cfg.cj
+ */
+extern const ISR_ENTRY isr_queue_list[];
+
+/*
+ *  ÝT[rX[`L
+[ÌGAikernel_cfg.cj
+ */
+extern QUEUE isr_queue_table[];
+
+/*
+ *  gpµÄ¢È¢ÝT[rX[`ÇubNÌXg
+ */
+extern QUEUE	free_isrcb;
+
+/*
+ *  ÝT[rX[`IDÌÅålikernel_cfg.cj
+ *
+ *  ÃIÉ¶¬³êéÝT[rX[`ÍIDÔð½È¢½ßC
+ *  tmax_isridÍ®IÉ¶¬³êéÝT[rX[`ÌIDÔÌÅål
+ *  Å éDÃIÉ¶¬³êéÝT[rX[`ÌÍCtnum_sisrÉÛ
+ *  ·éD
+ */
+extern const ID		tmax_isrid;
+extern const uint_t	tnum_sisr;
+
+/*
+ *  ÝT[rX[`ú»ubNÌGAikernel_cfg.cj
+ */
+extern const ISRINIB	sisrinib_table[];
+extern ISRINIB			aisrinib_table[];
+
+/*
+ *  ÝT[rX[`ÇubNÌGAikernel_cfg.cj
+ */
+extern ISRCB	isrcb_table[];
+
+/*
+ *  ÝT[rX[`ÇubN©çÝT[rX[`IDðæ
+ *  èo·½ßÌ}N
+ */
+#define	ISRID(p_isrcb)	((ID)(((p_isrcb) - isrcb_table) \
+										- tnum_sisr + TMIN_ISRID))
+
+/*
+ *  ÝT[rX[`@\Ìú»
+ */
+extern void initialize_isr(void);
+
+/*
+ *  ÝT[rX[`ÌÄoµ
+ */
+extern void call_isr(QUEUE *p_isr_queue);
+
+#ifndef OMIT_INITIALIZE_INTERRUPT
+
+/*
+ *  Ýnhú»ubN
+ */
+typedef struct interrupt_handler_initialization_block {
+	INHNO		inhno;			/* ÝnhÔ */
+	ATR			inhatr;			/* Ýnh®« */
+	FP			int_entry;		/* ÝnhÌoüûÌÔn */
+} INHINIB;
+
+/*
+ *  ÝvCú»ubN
+ */
+typedef struct interrupt_request_initialization_block {
+	INTNO		intno;			/* ÝÔ */
+	ATR			intatr;			/* Ý®« */
+	PRI			intpri;			/* ÝDæx */
+} INTINIB;
+
+/*
+ *  ÝnhÔÌikernel_cfg.cj
+ */
+extern const uint_t	tnum_inhno;
+
+/*
+ *  Ýnhú»ubNÌGAikernel_cfg.cj
+ */
+extern const INHINIB	inhinib_table[];
+
+/*
+ *  ÝvCÌikernel_cfg.cj
+ */
+extern const uint_t	tnum_intno;
+
+/*
+ *  ÝvCú»ubNÌGAikernel_cfg.cj
+ */
+extern const INTINIB	intinib_table[];
+
+#endif /* OMIT_INITIALIZE_INTERRUPT */
+
+/*
+ *  ÝÇ@\Ìú»
+ */
+extern void	initialize_interrupt(void);
+
+#endif /* TOPPERS_INTERRUPT_H */
Index: /asp_ewarm/asp-1.7.0/extension/dcre/kernel/kernel.tf
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/dcre/kernel/kernel.tf	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/dcre/kernel/kernel.tf	(revision 61)
@@ -0,0 +1,1372 @@
+$ ======================================================================
+$ 
+$   TOPPERS/ASP Kernel
+$       Toyohashi Open Platform for Embedded Real-Time Systems/
+$       Advanced Standard Profile Kernel
+$ 
+$   Copyright (C) 2007 by TAKAGI Nobuhisa
+$   Copyright (C) 2007-2011 by Embedded and Real-Time Systems Laboratory
+$               Graduate School of Information Science, Nagoya Univ., JAPAN
+$  
+$   ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+$   Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+$   ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+$   (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+$        \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+$       XR[hÉÜÜêÄ¢é±ÆD
+$   (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+$       pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+$       Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+$       Ì³ÛØKèðfÚ·é±ÆD
+$   (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+$       pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+$       ÆD
+$     (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+$         ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+$     (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+$         ñ·é±ÆD
+$   (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+$       Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+$       Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+$       RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+$       ÆÓ·é±ÆD
+$  
+$   {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+$   æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+$   ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+$   AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+$   ÌÓCðíÈ¢D
+$ 
+$   $Id: kernel.tf 2024 2011-01-02 08:59:23Z ertl-hiro $
+$  
+$ =====================================================================
+
+$ =====================================================================
+$ AID_XXXÌ
+$ =====================================================================
+
+$num_atskid = 0$
+$FOREACH i ATSK.ORDER_LIST$
+	$num_atskid = num_atskid + ATSK.NOTSK[i]$
+$END$
+$num_tskid = LENGTH(TSK.ID_LIST) + num_atskid$
+
+$num_asemid = 0$
+$FOREACH i ASEM.ORDER_LIST$
+	$num_asemid = num_asemid + ASEM.NOSEM[i]$
+$END$
+$num_semid = LENGTH(SEM.ID_LIST) + num_asemid$
+
+$num_aflgid = 0$
+$FOREACH i AFLG.ORDER_LIST$
+	$num_aflgid = num_aflgid + AFLG.NOFLG[i]$
+$END$
+$num_flgid = LENGTH(FLG.ID_LIST) + num_aflgid$
+
+$num_adtqid = 0$
+$FOREACH i ADTQ.ORDER_LIST$
+	$num_adtqid = num_adtqid + ADTQ.NODTQ[i]$
+$END$
+$num_dtqid = LENGTH(DTQ.ID_LIST) + num_adtqid$
+
+$num_apdqid = 0$
+$FOREACH i APDQ.ORDER_LIST$
+	$num_apdqid = num_apdqid + APDQ.NOPDQ[i]$
+$END$
+$num_pdqid = LENGTH(PDQ.ID_LIST) + num_apdqid$
+
+$num_ambxid = 0$
+$FOREACH i AMBX.ORDER_LIST$
+	$num_ambxid = num_ambxid + AMBX.NOMBX[i]$
+$END$
+$num_mbxid = LENGTH(MBX.ID_LIST) + num_ambxid$
+
+$num_ampfid = 0$
+$FOREACH i AMPF.ORDER_LIST$
+	$num_ampfid = num_ampfid + AMPF.NOMPF[i]$
+$END$
+$num_mpfid = LENGTH(MPF.ID_LIST) + num_ampfid$
+
+$num_acycid = 0$
+$FOREACH i ACYC.ORDER_LIST$
+	$num_acycid = num_acycid + ACYC.NOCYC[i]$
+$END$
+$num_cycid = LENGTH(CYC.ID_LIST) + num_acycid$
+
+$num_aalmid = 0$
+$FOREACH i AALM.ORDER_LIST$
+	$num_aalmid = num_aalmid + AALM.NOALM[i]$
+$END$
+$num_almid = LENGTH(ALM.ID_LIST) + num_aalmid$
+
+$num_aisrid = 0$
+$FOREACH i AISR.ORDER_LIST$
+	$num_aisrid = num_aisrid + AISR.NOISR[i]$
+$END$
+$num_isrid = num_aisrid$
+$num_isr = LENGTH(ISR.ORDER_LIST) + num_aisrid$
+
+$ =====================================================================
+$ kernel_cfg.hÌ¶¬
+$ =====================================================================
+
+$FILE "kernel_cfg.h"$
+/* kernel_cfg.h */$NL$
+#ifndef TOPPERS_KERNEL_CFG_H$NL$
+#define TOPPERS_KERNEL_CFG_H$NL$
+$NL$
+#define TNUM_TSKID	$num_tskid$$NL$
+#define TNUM_SEMID	$num_semid$$NL$
+#define TNUM_FLGID	$num_flgid$$NL$
+#define TNUM_DTQID	$num_dtqid$$NL$
+#define TNUM_PDQID	$num_pdqid$$NL$
+#define TNUM_MBXID	$num_mbxid$$NL$
+#define TNUM_MPFID	$num_mpfid$$NL$
+#define TNUM_CYCID	$num_cycid$$NL$
+#define TNUM_ALMID	$num_almid$$NL$
+#define TNUM_ISRID	$num_isrid$$NL$
+$NL$
+$FOREACH id TSK.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id SEM.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id FLG.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id DTQ.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id PDQ.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id MBX.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id MPF.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id CYC.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id ALM.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$NL$
+#endif /* TOPPERS_KERNEL_CFG_H */$NL$
+
+$ =====================================================================
+$ kernel_cfg.cÌ¶¬
+$ =====================================================================
+
+$FILE "kernel_cfg.c"$
+/* kernel_cfg.c */$NL$
+#include "kernel/kernel_int.h"$NL$
+#include "kernel_cfg.h"$NL$
+$NL$
+#ifndef TOPPERS_EMPTY_LABEL$NL$
+#define TOPPERS_EMPTY_LABEL(x,y) x y[0]$NL$
+#endif$NL$
+$NL$
+#if TKERNEL_PRID != 0x07u$NL$
+#error The kernel does not match this configuration file.$NL$
+#endif$NL$
+$NL$
+
+$ 
+$  CN[hfBNeBui#includej
+$ 
+/*$NL$
+$SPC$*  Include Directives (#include)$NL$
+$SPC$*/$NL$
+$NL$
+$INCLUDES$
+$NL$
+
+$ 
+$  IuWFNgÌIDÔðÛ·éÏ
+$ 
+$IF USE_EXTERNAL_ID$
+	/*$NL$
+	$SPC$*  Variables for Object ID$NL$
+	$SPC$*/$NL$
+	$NL$
+	$FOREACH id TSK.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id SEM.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id FLG.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id DTQ.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id PDQ.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id MBX.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id MPF.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id CYC.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id ALM.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+$END$
+
+$ 
+$  ^XN
+$ 
+/*$NL$
+$SPC$*  Task Management Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ÃIÉ¶¬³ê½^XNª1ÂÈã¶Ý·é±ÆÌ`FbN
+$IF !LENGTH(TSK.ID_LIST)$
+	$ERROR$$FORMAT(_("no task is registered"))$$END$
+$END$
+
+$ ÃIÉ¶¬³ê½^XNÌ
+#define TNUM_STSKID	$LENGTH(TSK.ID_LIST)$$NL$
+$NL$
+
+$ ^XNIDÔÌÅål
+const ID _kernel_tmax_tskid = (TMIN_TSKID + TNUM_TSKID - 1);$NL$
+const ID _kernel_tmax_stskid = (TMIN_TSKID + TNUM_STSKID - 1);$NL$
+$NL$
+
+$ G[`FbN
+$FOREACH tskid TSK.ID_LIST$
+$	// tskatrªimTA_ACTnjÅÈ¢êiE_RSATRj
+	$IF (TSK.TSKATR[tskid] & ~(TA_ACT|TARGET_TSKATR)) != 0$
+		$ERROR TSK.TEXT_LINE[tskid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "tskatr", TSK.TSKATR[tskid], tskid, "CRE_TSK")$$END$
+	$END$
+
+$	// (TMIN_TPRI <= itskpri && itskpri <= TMAX_TPRI)ÅÈ¢êiE_PARj
+	$IF !(TMIN_TPRI <= TSK.ITSKPRI[tskid] && TSK.ITSKPRI[tskid] <= TMAX_TPRI)$
+		$ERROR TSK.TEXT_LINE[tskid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "itskpri", TSK.ITSKPRI[tskid], tskid, "CRE_TSK")$$END$
+	$END$
+
+$ 	// texatrªiTA_NULLjÅÈ¢êiE_RSATRj
+	$IF LENGTH(TSK.TEXATR[tskid]) && TSK.TEXATR[tskid] != 0$
+		$ERROR DEF_TEX.TEXT_LINE[tskid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "texatr", TSK.TEXATR[tskid], tskid, "DEF_TEX")$$END$
+	$END$
+$END$
+
+$ X^bNÌæÌ¶¬Æ»êÉÖ·éG[`FbN
+$FOREACH tskid TSK.ID_LIST$
+$	// stkszª0©C^[Qbgè`ÌÅ¬liTARGET_MIN_STKSZjæèà¬³¢êiE_PARj
+	$IF TSK.STKSZ[tskid] == 0 || (TARGET_MIN_STKSZ
+									&& TSK.STKSZ[tskid] < TARGET_MIN_STKSZ)$
+		$ERROR TSK.TEXT_LINE[tskid]$E_PAR: $FORMAT(_("%1% `%2%\' of `%3%\' in %4% is too small"), "stksz", TSK.STKSZ[tskid], tskid, "CRE_TSK")$$END$
+	$END$
+$ 	// stkszªX^bNÌæÌTCYÆµÄ³µ­È¢êiE_PARj
+	$IF !EQ(TSK.STK[tskid], "NULL") && CHECK_STKSZ_ALIGN
+							&& (TSK.STKSZ[tskid] & (CHECK_STKSZ_ALIGN - 1))$
+		$ERROR TSK.TEXT_LINE[tskid]$E_PAR: $FORMAT(_("%1% `%2%\' of `%3%\' in %4% is not aligned"), "stksz", TSK.STKSZ[tskid], tskid, "CRE_TSK")$$END$
+	$END$
+
+	$IF EQ(TSK.STK[tskid],"NULL")$
+		static STK_T _kernel_stack_$tskid$[COUNT_STK_T($TSK.STKSZ[tskid]$)];$NL$
+		$TSK.TINIB_STKSZ[tskid] = FORMAT("ROUND_STK_T(%1%)", TSK.STKSZ[tskid])$
+		$TSK.TINIB_STK[tskid] = CONCAT("_kernel_stack_", tskid)$
+	$ELSE$
+		$TSK.TINIB_STKSZ[tskid] = TSK.STKSZ[tskid]$
+		$TSK.TINIB_STK[tskid] = TSK.STK[tskid]$
+	$END$
+$END$
+$NL$
+
+$ ^XNú»ubNÌ¶¬i^XNÍ1ÂÈã¶Ý·éj
+const TINIB _kernel_tinib_table[TNUM_STSKID] = {$NL$
+$JOINEACH tskid TSK.ID_LIST ",\n"$
+$	// ^XN®«Cg£îñCN®ÔnCN®Dæx
+	$TAB${
+	$SPC$($TSK.TSKATR[tskid]$), (intptr_t)($TSK.EXINF[tskid]$),
+	$SPC$((TASK)($TSK.TASK[tskid]$)), INT_PRIORITY($TSK.ITSKPRI[tskid]$),
+
+$	// ^XNú»ReLXgubNCX^bNÌæ
+	$IF USE_TSKINICTXB$
+		$GENERATE_TSKINICTXB(tskid)$
+	$ELSE$
+		$SPC$$TSK.TINIB_STKSZ[tskid]$, $TSK.TINIB_STK[tskid]$,
+	$END$
+
+$	// ^XNáO[`Ì®«ÆN®Ôn
+	$SPC$($ALT(TSK.TEXATR[tskid],"TA_NULL")$), ($ALT(TSK.TEXRTN[tskid],"NULL")$) }
+$END$$NL$
+};$NL$
+$NL$
+
+$ ®I¶¬^XNpÌ^XNú»ubNÌ¶¬
+$IF num_atskid > 0$
+	TINIB _kernel_atinib_table[$num_atskid$];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(TINIB, _kernel_atinib_table);$NL$
+$END$$NL$
+
+$ ^XNÇubNÌ¶¬
+TCB _kernel_tcb_table[TNUM_TSKID];$NL$
+$NL$
+
+$ ^XN¶¬e[uÌ¶¬
+const ID _kernel_torder_table[TNUM_STSKID] = {$NL$
+$TAB$$JOINEACH tskid TSK.ORDER_LIST ", "$$tskid$$END$$NL$
+};$NL$
+$NL$
+
+$ 
+$  Z}tH
+$ 
+/*$NL$
+$SPC$*  Semaphore Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ÃIÉ¶¬³ê½Z}tHÌ
+#define TNUM_SSEMID	$LENGTH(SEM.ID_LIST)$$NL$
+$NL$
+
+$ Z}tHIDÔÌÅål
+const ID _kernel_tmax_semid = (TMIN_SEMID + TNUM_SEMID - 1);$NL$
+const ID _kernel_tmax_ssemid = (TMIN_SEMID + TNUM_SSEMID - 1);$NL$
+$NL$
+
+$ Z}tHú»ubNÌ¶¬
+$IF LENGTH(SEM.ID_LIST)$
+	const SEMINIB _kernel_seminib_table[TNUM_SSEMID] = {$NL$
+	$JOINEACH semid SEM.ID_LIST ",\n"$
+$		// sematrªimTA_TPRInjÅÈ¢êiE_RSATRj
+		$IF (SEM.SEMATR[semid] & ~TA_TPRI) != 0$
+			$ERROR SEM.TEXT_LINE[semid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "sematr", SEM.SEMATR[semid], semid, "CRE_SEM")$$END$
+		$END$
+
+$		// (0 <= isemcnt && isemcnt <= maxsem)ÅÈ¢êiE_PARj
+		$IF !(0 <= SEM.ISEMCNT[semid] && SEM.ISEMCNT[semid] <= SEM.MAXSEM[semid])$
+			$ERROR SEM.TEXT_LINE[semid]$E_PAR: $FORMAT(_("too large %1% `%2%\' of `%3%\' in %4%"), "isemcnt", SEM.ISEMCNT[semid], semid, "CRE_SEM")$$END$
+		$END$
+
+$		// (1 <= maxsem && maxsem <= TMAX_MAXSEM)ÅÈ¢êiE_PARj
+		$IF !(1 <= SEM.MAXSEM[semid] && SEM.MAXSEM[semid] <= TMAX_MAXSEM)$
+			$ERROR SEM.TEXT_LINE[semid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "maxsem", SEM.MAXSEM[semid], semid, "CRE_SEM")$$END$
+		$END$
+
+$		// Z}tHú»ubN
+		$TAB${ ($SEM.SEMATR[semid]$), ($SEM.ISEMCNT[semid]$), ($SEM.MAXSEM[semid]$) }
+	$END$$NL$
+	};$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const SEMINIB, _kernel_seminib_table);$NL$
+$END$$NL$
+
+$ ®I¶¬Z}tHpÌZ}tHú»ubNÌ¶¬
+$IF num_asemid > 0$
+	SEMINIB _kernel_aseminib_table[$num_asemid$];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(SEMINIB, _kernel_aseminib_table);$NL$
+$END$$NL$
+
+$ Z}tHÇubNÌ¶¬
+$IF num_semid$
+	SEMCB _kernel_semcb_table[TNUM_SEMID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(SEMCB, _kernel_semcb_table);$NL$
+$END$$NL$
+
+$ 
+$  CxgtO
+$ 
+/*$NL$
+$SPC$*  Eventflag Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ÃIÉ¶¬³ê½CxgtOÌ
+#define TNUM_SFLGID	$LENGTH(FLG.ID_LIST)$$NL$
+$NL$
+
+$ CxgtOIDÔÌÅål
+const ID _kernel_tmax_flgid = (TMIN_FLGID + TNUM_FLGID - 1);$NL$
+const ID _kernel_tmax_sflgid = (TMIN_FLGID + TNUM_SFLGID - 1);$NL$
+$NL$
+
+$ CxgtOú»ubNÌ¶¬
+$IF LENGTH(FLG.ID_LIST)$
+	const FLGINIB _kernel_flginib_table[TNUM_SFLGID] = {$NL$
+	$JOINEACH flgid FLG.ID_LIST ",\n"$
+$		// flgatrªimTA_TPRInbmTA_WMULnbmTA_CLRnjÅÈ¢êiE_RSATRj
+		$IF (FLG.FLGATR[flgid] & ~(TA_TPRI|TA_WMUL|TA_CLR)) != 0$
+			$ERROR FLG.TEXT_LINE[flgid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "flgatr", FLG.FLGATR[flgid], flgid, "CRE_FLG")$$END$
+		$END$
+
+$		// CxgtOú»ubN
+		$TAB${ ($FLG.FLGATR[flgid]$), ($FLG.IFLGPTN[flgid]$) }
+	$END$$NL$
+	};$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const FLGINIB, _kernel_flginib_table);$NL$
+$END$$NL$
+
+$ ®I¶¬CxgtOpÌCxgtOú»ubNÌ¶¬
+$IF num_aflgid > 0$
+	FLGINIB _kernel_aflginib_table[$num_aflgid$];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(FLGINIB, _kernel_aflginib_table);$NL$
+$END$$NL$
+
+$ CxgtOÇubNÌ¶¬
+$IF num_flgid$
+	FLGCB _kernel_flgcb_table[TNUM_FLGID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(FLGCB, _kernel_flgcb_table);$NL$
+$END$$NL$
+
+$ 
+$  f[^L
+[
+$ 
+/*$NL$
+$SPC$*  Dataqueue Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ÃIÉ¶¬³ê½f[^L
+[Ì
+#define TNUM_SDTQID	$LENGTH(DTQ.ID_LIST)$$NL$
+$NL$
+
+$ f[^L
+[IDÔÌÅål
+const ID _kernel_tmax_dtqid = (TMIN_DTQID + TNUM_DTQID - 1);$NL$
+const ID _kernel_tmax_sdtqid = (TMIN_DTQID + TNUM_SDTQID - 1);$NL$
+$NL$
+
+$IF LENGTH(DTQ.ID_LIST)$
+	$FOREACH dtqid DTQ.ID_LIST$
+$		// dtqatrªimTA_TPRInjÅÈ¢êiE_RSATRj
+		$IF (DTQ.DTQATR[dtqid] & ~TA_TPRI) != 0$
+			$ERROR DTQ.TEXT_LINE[dtqid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "dtqatr", DTQ.DTQATR[dtqid], dtqid, "CRE_DTQ")$$END$
+		$END$
+
+$		// dtqmbªNULLÅÈ¢êiE_NOSPTj
+		$IF !EQ(DTQ.DTQMB[dtqid], "NULL")$
+			$ERROR DTQ.TEXT_LINE[dtqid]$E_NOSPT: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "dtqmb", DTQ.DTQMB[dtqid], dtqid, "CRE_DTQ")$$END$
+		$END$
+
+$		// f[^L
+[Ìæ
+		$IF DTQ.DTQCNT[dtqid]$
+			static intptr_t _kernel_dtqmb_$dtqid$[$DTQ.DTQCNT[dtqid]$];$NL$
+		$END$
+	$END$
+
+$	// f[^L
+[ú»ubNÌ¶¬
+	const DTQINIB _kernel_dtqinib_table[TNUM_SDTQID] = {$NL$
+	$JOINEACH dtqid DTQ.ID_LIST ",\n"$
+		$TAB${ ($DTQ.DTQATR[dtqid]$), ($DTQ.DTQCNT[dtqid]$), $IF DTQ.DTQCNT[dtqid]$(_kernel_dtqmb_$dtqid$)$ELSE$NULL$END$ }
+	$END$$NL$
+	};$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const DTQINIB, _kernel_dtqinib_table);$NL$
+$END$$NL$
+
+$ ®I¶¬f[^L
+[pÌf[^L
+[ú»ubNÌ¶¬
+$IF num_adtqid > 0$
+	DTQINIB _kernel_adtqinib_table[$num_adtqid$];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(DTQINIB, _kernel_adtqinib_table);$NL$
+$END$$NL$
+
+$ f[^L
+[ÇubNÌ¶¬
+$IF num_dtqid$
+	DTQCB _kernel_dtqcb_table[TNUM_DTQID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(DTQCB, _kernel_dtqcb_table);$NL$
+$END$$NL$
+
+$ 
+$  Dæxf[^L
+[
+$ 
+/*$NL$
+$SPC$*  Priority Dataqueue Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ÃIÉ¶¬³ê½Dæxf[^L
+[Ì
+#define TNUM_SPDQID	$LENGTH(PDQ.ID_LIST)$$NL$
+$NL$
+
+$ Dæxf[^L
+[IDÔÌÅål
+const ID _kernel_tmax_pdqid = (TMIN_PDQID + TNUM_PDQID - 1);$NL$
+const ID _kernel_tmax_spdqid = (TMIN_PDQID + TNUM_SPDQID - 1);$NL$
+$NL$
+
+$IF LENGTH(PDQ.ID_LIST)$
+	$FOREACH pdqid PDQ.ID_LIST$
+$		// pdqatrªimTA_TPRInjÅÈ¢êiE_RSATRj
+		$IF (PDQ.PDQATR[pdqid] & ~TA_TPRI) != 0$
+			$ERROR PDQ.TEXT_LINE[pdqid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "pdqatr", PDQ.PDQATR[pdqid], pdqid, "CRE_PDQ")$$END$
+		$END$
+
+$		// (TMIN_DPRI <= maxdpri && maxdpri <= TMAX_DPRI)ÅÈ¢êiE_PARj
+		$IF !(TMIN_DPRI <= PDQ.MAXDPRI[pdqid] && PDQ.MAXDPRI[pdqid] <= TMAX_DPRI)$
+			$ERROR PDQ.TEXT_LINE[pdqid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "maxdpri", PDQ.MAXDPRI[pdqid], pdqid, "CRE_PDQ")$$END$
+		$END$
+
+$		// pdqmbªNULLÅÈ¢êiE_NOSPTj
+		$IF !EQ(PDQ.PDQMB[pdqid], "NULL")$
+			$ERROR PDQ.TEXT_LINE[pdqid]$E_NOSPT: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "pdqmb", PDQ.PDQMB[pdqid], pdqid, "CRE_PDQ")$$END$
+		$END$
+
+$		// Dæxf[^L
+[Ìæ
+		$IF PDQ.PDQCNT[pdqid]$
+			static PDQMB _kernel_pdqmb_$pdqid$[$PDQ.PDQCNT[pdqid]$];$NL$
+		$END$
+	$END$
+
+$	// Dæxf[^L
+[ú»ubNÌ¶¬
+	const PDQINIB _kernel_pdqinib_table[TNUM_SPDQID] = {$NL$
+	$JOINEACH pdqid PDQ.ID_LIST ",\n"$
+		$TAB${ ($PDQ.PDQATR[pdqid]$), ($PDQ.PDQCNT[pdqid]$), ($PDQ.MAXDPRI[pdqid]$), $IF PDQ.PDQCNT[pdqid]$(_kernel_pdqmb_$pdqid$)$ELSE$NULL$END$ }
+	$END$$NL$
+	};$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const PDQINIB, _kernel_pdqinib_table);$NL$
+$END$$NL$
+
+$ ®I¶¬Dæxf[^L
+[pÌDæxf[^L
+[ú»ubNÌ¶¬
+$IF num_apdqid > 0$
+	PDQINIB _kernel_apdqinib_table[$num_apdqid$];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(PDQINIB, _kernel_apdqinib_table);$NL$
+$END$$NL$
+
+$ Dæxf[^L
+[ÇubNÌ¶¬
+$IF num_pdqid$
+	PDQCB _kernel_pdqcb_table[TNUM_PDQID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(PDQCB, _kernel_pdqcb_table);$NL$
+$END$$NL$
+
+$ 
+$  [{bNX
+$ 
+/*$NL$
+$SPC$*  Mailbox Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ÃIÉ¶¬³ê½[{bNXÌ
+#define TNUM_SMBXID	$LENGTH(MBX.ID_LIST)$$NL$
+$NL$
+
+$ [{bNXIDÔÌÅål
+const ID _kernel_tmax_mbxid = (TMIN_MBXID + TNUM_MBXID - 1);$NL$
+const ID _kernel_tmax_smbxid = (TMIN_MBXID + TNUM_SMBXID - 1);$NL$
+$NL$
+
+$ [{bNXú»ubNÌ¶¬
+$IF LENGTH(MBX.ID_LIST)$
+	const MBXINIB _kernel_mbxinib_table[TNUM_SMBXID] = {$NL$
+	$JOINEACH mbxid MBX.ID_LIST ",\n"$
+$		// mbxatrªimTA_TPRInbmTA_MPRInjÅÈ¢êiE_RSATRj
+		$IF (MBX.MBXATR[mbxid] & ~(TA_TPRI|TA_MPRI)) != 0$
+			$ERROR MBX.TEXT_LINE[mbxid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "mbxatr", MBX.MBXATR[mbxid], mbxid, "CRE_MBX")$$END$
+		$END$
+
+$		// (TMIN_MPRI <= maxmpri && maxmpri <= TMAX_MPRI)ÅÈ¢êiE_PARj
+		$IF !(TMIN_MPRI <= MBX.MAXMPRI[mbxid] && MBX.MAXMPRI[mbxid] <= TMAX_MPRI)$
+			$ERROR MBX.TEXT_LINE[mbxid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "maxmpri", MBX.MAXMPRI[mbxid], mbxid, "CRE_MBX")$$END$
+		$END$
+
+$		// mprihdªNULLÅÈ¢êiE_NOSPTj
+		$IF !EQ(MBX.MPRIHD[mbxid], "NULL")$
+			$ERROR MBX.TEXT_LINE[mbxid]$E_NOSPT: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "mprihd", MBX.MPRIHD[mbxid], mbxid, "CRE_MBX")$$END$
+		$END$
+
+$		// [{bNXú»ubN
+		$TAB${ ($MBX.MBXATR[mbxid]$), ($MBX.MAXMPRI[mbxid]$) }
+	$END$$NL$
+	};$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const MBXINIB, _kernel_mbxinib_table);$NL$
+$END$$NL$
+
+$ ®I¶¬[{bNXpÌ[{bNXú»ubNÌ¶¬
+$IF num_ambxid > 0$
+	MBXINIB _kernel_ambxinib_table[$num_ambxid$];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(MBXINIB, _kernel_ambxinib_table);$NL$
+$END$$NL$
+
+$ [{bNXÇubNÌ¶¬
+$IF num_mbxid$
+	MBXCB _kernel_mbxcb_table[TNUM_MBXID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(MBXCB, _kernel_mbxcb_table);$NL$
+$END$$NL$
+
+$ 
+$  Åè·v[
+$ 
+/*$NL$
+$SPC$*  Fixed-sized Memorypool Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ÃIÉ¶¬³ê½Åè·v[Ì
+#define TNUM_SMPFID	$LENGTH(MPF.ID_LIST)$$NL$
+$NL$
+
+$ Åè·v[IDÔÌÅål
+const ID _kernel_tmax_mpfid = (TMIN_MPFID + TNUM_MPFID - 1);$NL$
+const ID _kernel_tmax_smpfid = (TMIN_MPFID + TNUM_SMPFID - 1);$NL$
+$NL$
+
+$IF LENGTH(MPF.ID_LIST)$
+	$FOREACH mpfid MPF.ID_LIST$
+$		// mpfatrªimTA_TPRInjÅÈ¢êiE_RSATRj
+		$IF (MPF.MPFATR[mpfid] & ~TA_TPRI) != 0$
+			$ERROR MPF.TEXT_LINE[mpfid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "mpfatr", MPF.MPFATR[mpfid], mpfid, "CRE_MPF")$$END$
+		$END$
+
+$		// blkcntª0ÌêiE_PARj
+		$IF MPF.BLKCNT[mpfid] == 0$
+			$ERROR MPF.TEXT_LINE[mpfid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "blkcnt", MPF.BLKCNT[mpfid], mpfid, "CRE_MPF")$$END$
+		$END$
+
+$		// blkszª0ÌêiE_PARj
+		$IF MPF.BLKSZ[mpfid] == 0$
+			$ERROR MPF.TEXT_LINE[mpfid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "blksz", MPF.BLKSZ[mpfid], mpfid, "CRE_MPF")$$END$
+		$END$
+
+$		// Åè·v[Ìæ
+		$IF EQ(MPF.MPF[mpfid], "NULL")$
+			static MPF_T _kernel_mpf_$mpfid$[($MPF.BLKCNT[mpfid]$) * COUNT_MPF_T($MPF.BLKSZ[mpfid]$)];$NL$
+		$END$
+
+$		// mpfmbªNULLÅÈ¢êiE_NOSPTj
+		$IF !EQ(MPF.MPFMB[mpfid], "NULL")$
+			$ERROR MPF.TEXT_LINE[mpfid]$E_NOSPT: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "mpfmb", MPF.MPFMB[mpfid], mpfid, "CRE_MPF")$$END$
+		$END$
+
+$		// Åè·v[ÇÌæ
+		static MPFMB _kernel_mpfmb_$mpfid$[$MPF.BLKCNT[mpfid]$];$NL$
+	$END$
+
+$	// Åè·v[ú»ubNÌ¶¬
+	const MPFINIB _kernel_mpfinib_table[TNUM_SMPFID] = {$NL$
+	$JOINEACH mpfid MPF.ID_LIST ",\n"$
+		$TAB${ ($MPF.MPFATR[mpfid]$), ($MPF.BLKCNT[mpfid]$), ROUND_MPF_T($MPF.BLKSZ[mpfid]$), $IF EQ(MPF.MPF[mpfid],"NULL")$(_kernel_mpf_$mpfid$)$ELSE$($MPF.MPF[mpfid]$)$END$, (_kernel_mpfmb_$mpfid$) }
+	$END$$NL$
+	};$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const MPFINIB, _kernel_mpfinib_table);$NL$
+$END$$NL$
+
+$ ®I¶¬Åè·v[pÌÅè·v[ú»ubNÌ¶¬
+$IF num_ampfid > 0$
+	MPFINIB _kernel_ampfinib_table[$num_ampfid$];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(MPFINIB, _kernel_ampfinib_table);$NL$
+$END$$NL$
+
+$ Åè·v[ÇubNÌ¶¬
+$IF num_mpfid$
+	MPFCB _kernel_mpfcb_table[TNUM_MPFID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(MPFCB, _kernel_mpfcb_table);$NL$
+$END$$NL$
+
+$ 
+$  üúnh
+$ 
+/*$NL$
+$SPC$*  Cyclic Handler Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ÃIÉ¶¬³ê½üúnhÌ
+#define TNUM_SCYCID	$LENGTH(CYC.ID_LIST)$$NL$
+$NL$
+
+$ üúnhIDÔÌÅål
+const ID _kernel_tmax_cycid = (TMIN_CYCID + TNUM_CYCID - 1);$NL$
+const ID _kernel_tmax_scycid = (TMIN_CYCID + TNUM_SCYCID - 1);$NL$
+$NL$
+
+$ üúnhú»e[uÌ¶¬
+$IF LENGTH(CYC.ID_LIST)$
+	const CYCINIB _kernel_cycinib_table[TNUM_SCYCID] = {$NL$
+	$JOINEACH cycid CYC.ID_LIST ",\n"$
+$		// cycatrªimTA_STAnjÅÈ¢êiE_RSATRj
+		$IF (CYC.CYCATR[cycid] & ~TA_STA) != 0$
+			$ERROR CYC.TEXT_LINE[cycid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "cycatr", CYC.CYCATR[cycid], cycid, "CRE_CYC")$$END$
+		$END$
+
+$		// (0 < cyctim && cyctim <= TMAX_RELTIM)ÅÈ¢êiE_PARj
+		$IF !(0 < CYC.CYCTIM[cycid] && CYC.CYCTIM[cycid] <= TMAX_RELTIM)$
+			$ERROR CYC.TEXT_LINE[cycid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "cyctim", CYC.CYCTIM[cycid], cycid, "CRE_CYC")$$END$
+		$END$
+
+$		// (0 <= cycphs && cycphs <= TMAX_RELTIM)ÅÈ¢êiE_PARj
+		$IF !(0 <= CYC.CYCPHS[cycid] && CYC.CYCPHS[cycid] <= TMAX_RELTIM)$
+			$ERROR CYC.TEXT_LINE[cycid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "cycphs", CYC.CYCPHS[cycid], cycid, "CRE_CYC")$$END$
+		$END$
+
+$		// xFcycatrÉTA_STAªÝè³êÄ¢ÄC(cycphs == 0)Ìê
+		$IF (CYC.CYCATR[cycid] & TA_STA) != 0 && CYC.CYCPHS[cycid] == 0$
+			$WARNING CYC.TEXT_LINE[cycid]$$FORMAT(_("%1% is not recommended when %2% is set to %3% in %4%"), "cycphs==0", "TA_STA", "cycatr", "CRE_CYC")$$END$
+		$END$
+
+$		// üúnhú»ubN
+		$TAB${ ($CYC.CYCATR[cycid]$), (intptr_t)($CYC.EXINF[cycid]$), ($CYC.CYCHDR[cycid]$), ($CYC.CYCTIM[cycid]$), ($CYC.CYCPHS[cycid]$) }
+	$END$$NL$
+	};$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const CYCINIB, _kernel_cycinib_table);$NL$
+$END$$NL$
+
+$ ®I¶¬üúnhpÌüúnhú»ubNÌ¶¬
+$IF num_acycid > 0$
+	CYCINIB _kernel_acycinib_table[$num_acycid$];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(CYCINIB, _kernel_acycinib_table);$NL$
+$END$$NL$
+
+$ üúnhÇubN
+$IF num_cycid$
+	CYCCB _kernel_cyccb_table[TNUM_CYCID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(CYCCB, _kernel_cyccb_table);$NL$
+$END$$NL$
+
+$ 
+$  A[nh
+$ 
+/*$NL$
+$SPC$*  Alarm Handler Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ÃIÉ¶¬³ê½A[nhÌ
+#define TNUM_SALMID	$LENGTH(ALM.ID_LIST)$$NL$
+$NL$
+
+$ A[nhIDÔÌÅål
+const ID _kernel_tmax_almid = (TMIN_ALMID + TNUM_ALMID - 1);$NL$
+const ID _kernel_tmax_salmid = (TMIN_ALMID + TNUM_SALMID - 1);$NL$
+$NL$
+
+$ A[nhú»ubNÌ¶¬
+$IF LENGTH(ALM.ID_LIST)$
+	const ALMINIB _kernel_alminib_table[TNUM_SALMID] = {$NL$
+	$JOINEACH almid ALM.ID_LIST ",\n"$
+$		// almatrªiTA_NULLjÅÈ¢êiE_RSATRj
+		$IF ALM.ALMATR[almid] != 0$
+			$ERROR ALM.TEXT_LINE[almid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "almatr", ALM.ALMATR[almid], almid, "CRE_ALM")$$END$
+		$END$
+
+$		// A[nhú»ubN
+		$TAB${ ($ALM.ALMATR[almid]$), (intptr_t)($ALM.EXINF[almid]$), ($ALM.ALMHDR[almid]$) }
+	$END$$NL$
+	};$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const ALMINIB, _kernel_alminib_table);$NL$
+$END$$NL$
+
+$ ®I¶¬A[nhpÌA[nhú»ubNÌ¶¬
+$IF num_aalmid > 0$
+	ALMINIB _kernel_aalminib_table[$num_aalmid$];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(ALMINIB, _kernel_aalminib_table);$NL$
+$END$$NL$
+
+$ A[nhÇubN
+$IF num_almid$
+	ALMCB _kernel_almcb_table[TNUM_ALMID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const ALMINIB, _kernel_alminib_table);$NL$
+$END$$NL$
+
+$ 
+$  ÝÇ@\
+$ 
+/*$NL$
+$SPC$*  Interrupt Management Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ÝÔÆÝnhÔÌÏ·e[uÌì¬
+$IF LENGTH(INTNO_ATTISR_VALID) != LENGTH(INHNO_ATTISR_VALID)$
+	$ERROR$length of `INTNO_ATTISR_VALID' is different from length of `INHNO_ATTISR_VALID'$END$
+$END$
+$i = 0$
+$FOREACH intno INTNO_ATTISR_VALID$
+	$inhno = AT(INHNO_ATTISR_VALID, i)$
+	$INHNO[intno] = inhno$
+	$INTNO[inhno] = intno$
+	$i = i + 1$
+$END$
+
+$ ÝvCÉÖ·éG[`FbN
+$i = 0$
+$FOREACH intno INT.ORDER_LIST$
+$	// intnoªCFG_INTÉÎ·éÝÔÆµÄ³µ­È¢êiE_PARj
+	$IF !LENGTH(FIND(INTNO_CFGINT_VALID, INT.INTNO[intno]))$
+		$ERROR INT.TEXT_LINE[intno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "intno", INT.INTNO[intno], "CFG_INT")$$END$
+	$END$
+
+$	// intnoªCFG_INTÉæÁÄÝèÏÝÌêiE_OBJj
+	$j = 0$
+	$FOREACH intno2 INT.ORDER_LIST$
+		$IF INT.INTNO[intno] == INT.INTNO[intno2] && j < i$
+			$ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' in %3% is duplicated"), "intno", INT.INTNO[intno], "CFG_INT")$$END$
+		$END$
+		$j = j + 1$
+	$END$
+
+$	// intatrªimTA_ENAINTnbmTA_EDGEnjÅÈ¢êiE_RSATRj
+	$IF (INT.INTATR[intno] & ~(TA_ENAINT|TA_EDGE|TARGET_INTATR)) != 0$
+		$ERROR INT.TEXT_LINE[intno]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "intatr", INT.INTATR[intno], "intno", INT.INTNO[intno], "CFG_INT")$$END$
+	$END$
+
+$	// intpriªCFG_INTÉÎ·éÝDæxÆµÄ³µ­È¢êiE_PARj
+	$IF !LENGTH(FIND(INTPRI_CFGINT_VALID, INT.INTPRI[intno]))$
+		$ERROR INT.TEXT_LINE[intno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "intpri", INT.INTPRI[intno], "CFG_INT")$$END$
+	$END$
+
+$	// J[lÇÉÅè³êÄ¢éintnoÉÎµÄCintpriÉTMIN_INTPRI
+$	// æèà¬³¢lªwè³ê½êiE_OBJj
+	$IF LENGTH(FIND(INTNO_FIX_KERNEL, intno))$
+		$IF INT.INTPRI[intno] < TMIN_INTPRI$
+			$ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' must not have higher priority than %3%"), "intno", INT.INTNO[intno], "TMIN_INTPRI")$$END$
+		$END$
+	$END$
+
+$	// J[lÇOÉÅè³êÄ¢éintnoÉÎµÄCintpriÉTMIN_INTPRI
+$	// æèà¬³¢lªwè³êÈ©Á½êiE_OBJj
+	$IF LENGTH(FIND(INTNO_FIX_NONKERNEL, intno))$
+		$IF INT.INTPRI[intno] >= TMIN_INTPRI$
+			$ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' must have higher priority than %3%"), "intno", INT.INTNO[intno], "TMIN_INTPRI")$$END$
+		$END$
+	$END$
+	$i = i + 1$
+$END$
+
+$ ÝnhÉÖ·éG[`FbN
+$i = 0$
+$FOREACH inhno INH.ORDER_LIST$
+$	// inhnoªDEF_INHÉÎ·éÝnhÔÆµÄ³µ­È¢êiE_PARj
+	$IF !LENGTH(FIND(INHNO_DEFINH_VALID, INH.INHNO[inhno]))$
+		$ERROR INH.TEXT_LINE[inhno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "inhno", INH.INHNO[inhno], "DEF_INH")$$END$
+	$END$
+
+$	// inhnoªDEF_INHÉæÁÄÝèÏÝÌêiE_OBJj
+	$j = 0$
+	$FOREACH inhno2 INH.ORDER_LIST$
+		$IF INH.INHNO[inhno] == INH.INHNO[inhno2] && j < i$
+			$ERROR INH.TEXT_LINE[inhno]$E_OBJ: $FORMAT(_("%1% `%2%\' in %3% is duplicated"), "inhno", INH.INHNO[inhno], "DEF_INH")$$END$
+		$END$
+		$j = j + 1$
+	$END$
+
+$	// inhatrªiTA_NULLjÅÈ¢êiE_RSATRj
+	$IF (INH.INHATR[inhno] & ~TARGET_INHATR) != 0$
+		$ERROR INH.TEXT_LINE[inhno]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "inhatr", INH.INHATR[inhno], "inhno", INH.INHNO[inhno], "DEF_INH")$$END$
+	$END$
+
+$	// J[lÇÉÅè³êÄ¢éinhnoÉÎµÄCinhatrÉTA_NONKERNEL
+$	//@ªwè³êÄ¢éêiE_RSATRj
+	$IF LENGTH(FIND(INHNO_FIX_KERNEL, inhno))$
+		$IF (INH.INHATR[inhno] & TA_NONKERNEL) != 0$
+			$ERROR INH.TEXT_LINE[inhno]$E_RSATR: $FORMAT(_("%1% `%2%\' must not be non-kernel interrupt"), "inhno", INH.INHNO[inhno])$$END$
+		$END$
+	$END$
+
+$	// J[lÇOÉÅè³êÄ¢éinhnoÉÎµÄCinhatrÉTA_NONKERNEL
+$	// ªwè³êÄ¢È¢êiE_RSATRj
+	$IF LENGTH(FIND(INHNO_FIX_NONKERNEL, inhno))$
+		$IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$
+			$ERROR INH.TEXT_LINE[inhno]$E_RSATR: $FORMAT(_("%1% `%2%\' must be non-kernel interrupt"), "inhno", INH.INHNO[inhno])$$END$
+		$END$
+	$END$
+
+	$IF LENGTH(INTNO[INH.INHNO[inhno]])$
+		$intno = INTNO[INH.INHNO[inhno]]$
+$		// inhnoÉÎ·éintnoÉÎ·éCFG_INTªÈ¢êiE_OBJj
+		$IF !LENGTH(INT.INTNO[intno])$
+			$ERROR INH.TEXT_LINE[inhno]$E_OBJ: $FORMAT(_("%1% `%2%\' corresponding to %3% `%4%\' is not configured with %5%"), "intno", INT.INTNO[intno], "inhno", INH.INHNO[inhno], "CFG_INT")$$END$
+		$ELSE$
+			$IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$
+$				// inhatrÉTA_NONKERNELªwè³êÄ¨ç¸CinhnoÉÎ
+$				// ·éintnoÉÎµÄCFG_INTÅÝè³ê½ÝDæxª
+$				// TMIN_INTPRIæèà¬³¢êiE_OBJj
+				$IF INT.INTPRI[intno] < TMIN_INTPRI$
+					$ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' configured for %3% `%4%\' is higher than %5%"), "intpri", INT.INTPRI[intno], "inhno", INH.INHNO[inhno], "TMIN_INTPRI")$$END$
+				$END$
+			$ELSE$
+$				// inhatrÉTA_NONKERNELªwè³êÄ¨èCinhnoÉÎ
+$				// ·éintnoÉÎµÄCFG_INTÅÝè³ê½ÝDæxª
+$				// TMIN_INTPRIÈãÅ éêiE_OBJj
+				$IF INT.INTPRI[intno] >= TMIN_INTPRI$
+					$ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' configured for %3% `%4%\' is lower than or equal to %5%"), "intpri", INT.INTPRI[intno], "inhno", INH.INHNO[inhno], "TMIN_INTPRI")$$END$
+				$END$
+			$END$
+		$END$
+	$END$
+	$i = i + 1$
+$END$
+
+$ ÝT[rX[`iISRjÉÖ·éG[`FbN
+$FOREACH order ISR.ORDER_LIST$
+$	// isratrªiTA_NULLjÅÈ¢êiE_RSATRj
+	$IF (ISR.ISRATR[order] & ~TARGET_ISRATR) != 0$
+		$ERROR ISR.TEXT_LINE[order]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "isratr", ISR.ISRATR[order], "ATT_ISR")$$END$
+	$END$
+
+$	// intnoªATT_ISRÉÎ·éÝÔÆµÄ³µ­È¢êiE_PARj
+	$IF !LENGTH(FIND(INTNO_ATTISR_VALID, ISR.INTNO[order]))$
+		$ERROR ISR.TEXT_LINE[order]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "intno", ISR.INTNO[order], "ATT_ISR")$$END$
+	$END$
+
+$	// (TMIN_ISRPRI <= isrpri && isrpri <= TMAX_ISRPRI)ÅÈ¢êiE_PARj
+	$IF !(TMIN_ISRPRI <= ISR.ISRPRI[order] && ISR.ISRPRI[order] <= TMAX_ISRPRI)$
+		$ERROR ISR.TEXT_LINE[order]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "isrpri", ISR.ISRPRI[order], "ATT_ISR")$$END$
+	$END$
+$END$
+
+$FOREACH intno INTNO_ATTISR_VALID$
+	$inhno = INHNO[intno]$
+
+$	// ÝÔintnoÉÎµÄo^³ê½ISRÌXgÌì¬
+	$isr_order_list = {}$
+	$FOREACH order ISR.ORDER_LIST$
+		$IF ISR.INTNO[order] == intno$
+			$isr_order_list = APPEND(isr_order_list, order)$
+			$order_for_error = order$
+		$END$
+	$END$
+
+$	// ÝÔintnoÉÎµÄo^³ê½ISRª¶Ý·éê
+	$IF LENGTH(isr_order_list) > 0$
+$		// intnoÉÎ·éinhnoÉÎµÄDEF_INHª éêiE_OBJj
+		$IF LENGTH(INH.INHNO[inhno])$
+			$ERROR ISR.TEXT_LINE[order_for_error]$E_OBJ: $FORMAT(_("%1% `%2%\' in %3% is duplicated with %4% `%5%\'"), "intno", ISR.INTNO[order_for_error], "ATT_ISR", "inhno", INH.INHNO[inhno])$$END$
+		$END$
+
+$		// intnoÉÎ·éCFG_INTªÈ¢êiE_OBJj
+		$IF !LENGTH(INT.INTNO[intno])$
+			$ERROR ISR.TEXT_LINE[order_for_error]$E_OBJ: $FORMAT(_("%1% `%2%\' is not configured with %3%"), "intno", ISR.INTNO[order_for_error], "CFG_INT")$$END$
+		$ELSE$
+$			// intnoÉÎµÄCFG_INTÅÝè³ê½ÝDæxªTMIN_INTPRI
+$			// æèà¬³¢êiE_OBJj
+			$IF INT.INTPRI[intno] < TMIN_INTPRI$
+				$ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' configured for %3% `%4%\' is higher than %5%"), "intpri", INT.INTPRI[intno], "intno", ISR.INTNO[order_for_error], "TMIN_INTPRI")$$END$
+			$END$
+		$END$
+	$END$
+$END$
+
+$ ÝT[rX[`iISRjÇÌf[^\¢
+$intno_isr_list = {}$
+$FOREACH intno INTNO_ATTISR_VALID$
+	$inhno = INHNO[intno]$
+	$IF LENGTH(INT.INTNO[intno]) && !LENGTH(INH.INHNO[inhno])$
+		$intno_isr_list = APPEND(intno_isr_list, intno)$
+	$END$
+$END$
+
+$INTNO_ISR = {}$
+$i = 0$
+$FOREACH intno SORT(intno_isr_list, "INT.INTNO")$
+	$INTNO_ISR = APPEND(INTNO_ISR, intno)$
+	$ISR_QUEUE_HEADER[intno] = FORMAT("&(_kernel_isr_queue_table[%d])", i)$
+	$i = i + 1$
+$END$
+
+const uint_t _kernel_tnum_isr_queue = $LENGTH(INTNO_ISR)$;$NL$
+$NL$
+
+$IF LENGTH(INTNO_ISR)$
+	const ISR_ENTRY _kernel_isr_queue_list[$LENGTH(INTNO_ISR)$] = {$NL$
+	$JOINEACH intno INTNO_ISR ",\n"$
+		$TAB${ $intno$, $ISR_QUEUE_HEADER[intno]$ }
+	$END$$NL$
+	};$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(QUEUE, _kernel_isr_queue_table);$NL$
+$END$$NL$
+
+$IF LENGTH(INTNO_ISR)$
+	QUEUE _kernel_isr_queue_table[$LENGTH(INTNO_ISR)$];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(QUEUE, _kernel_isr_queue_table);$NL$
+$END$$NL$
+
+$ ÝT[rX[`iISRjÄoµÌ½ßÌÝnhÌ¶¬
+$FOREACH intno INTNO_ISR$
+	$inhno = INHNO[intno]$
+
+$	// DEF_INH(inhno, { TA_NULL, _kernel_inthdr_<intno> } );
+	$INH.INHNO[inhno] = inhno$
+	$INH.INHATR[inhno] = VALUE("TA_NULL", 0)$
+	$INH.INTHDR[inhno] = CONCAT("_kernel_inthdr_", intno)$
+	$INH.ORDER_LIST = APPEND(INH.ORDER_LIST, inhno)$
+
+$	// ISRpÌÝnh
+	void$NL$
+	_kernel_inthdr_$intno$(void)$NL$
+	{$NL$
+	$TAB$i_begin_int($intno$);$NL$
+	$TAB$call_isr($ISR_QUEUE_HEADER[intno]$);$NL$
+	$TAB$i_end_int($intno$);$NL$
+	}$NL$
+	$NL$
+$END$
+
+$ ÃIÉ¶¬³ê½ÝT[rX[`Ì
+#define TNUM_SISR	$LENGTH(ISR.ORDER_LIST)$$NL$
+#define TNUM_ISR	$LENGTH(ISR.ORDER_LIST) + num_aisrid$$NL$
+$NL$
+
+$ ÝT[rX[`IDÔÌÅål
+const ID _kernel_tmax_isrid = (TMIN_ISRID + TNUM_ISRID - 1);$NL$
+const uint_t _kernel_tnum_sisr = TNUM_SISR;$NL$
+$NL$
+
+$ ÝT[rX[`ú»ubNÌ¶¬
+$IF LENGTH(ISR.ORDER_LIST)$
+	const ISRINIB _kernel_sisrinib_table[TNUM_SISR] = {$NL$
+	$JOINEACH order ISR.ORDER_LIST ",\n"$
+		$TAB${ ($ISR.ISRATR[order]$), ($ISR.EXINF[order]$), ($ISR.INTNO[order]$), ($ISR_QUEUE_HEADER[ISR.INTNO[order]]$), ($ISR.ISR[order]$), ($ISR.ISRPRI[order]$) }
+	$END$$NL$
+	};$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const ISRINIB, _kernel_sisrinib_table);$NL$
+$END$
+$NL$
+
+$ ®I¶¬ÝT[rX[`pÌÝT[rX[`ú»ub
+$ NÌ¶¬
+$IF num_aisrid > 0$
+	ISRINIB _kernel_aisrinib_table[$num_aisrid$];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(ISRINIB, _kernel_aisrinib_table);$NL$
+$END$
+$NL$
+
+$ ÝT[rX[`ÇubNÌ¶¬
+$IF LENGTH(ISR.ORDER_LIST) || num_aisrid > 0$
+	ISRCB _kernel_isrcb_table[TNUM_ISR];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(ISRCB, _kernel_isrcb_table);$NL$
+$END$
+$NL$
+
+$ 
+$  ÝÇ@\Ì½ßÌWIÈú»îñÌ¶¬
+$ 
+$ ÝnhÌú»ÉKvÈîñ
+$IF !OMIT_INITIALIZE_INTERRUPT || ALT(USE_INHINIB_TABLE,0)$
+
+$ Ýnh
+#define TNUM_INHNO	$LENGTH(INH.ORDER_LIST)$$NL$
+const uint_t _kernel_tnum_inhno = TNUM_INHNO;$NL$
+$NL$
+$FOREACH inhno INH.ORDER_LIST$
+	$IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$
+		INTHDR_ENTRY($INH.INHNO[inhno]$, $+INH.INHNO[inhno]$, $INH.INTHDR[inhno]$)$NL$
+	$END$
+$END$
+$NL$
+
+$ Ýnhú»e[u
+$IF LENGTH(INH.ORDER_LIST)$
+	const INHINIB _kernel_inhinib_table[TNUM_INHNO] = {$NL$
+	$JOINEACH inhno INH.ORDER_LIST ",\n"$
+		$IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$
+			$TAB${ ($INH.INHNO[inhno]$), ($INH.INHATR[inhno]$), (FP)(INT_ENTRY($INH.INHNO[inhno]$, $INH.INTHDR[inhno]$)) }
+		$ELSE$
+			$TAB${ ($INH.INHNO[inhno]$), ($INH.INHATR[inhno]$), (FP)($INH.INTHDR[inhno]$) }
+		$END$
+	$END$$NL$
+	};$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const INHINIB, _kernel_inhinib_table);$NL$
+$END$$NL$
+$END$
+
+$ ÝvCÌú»ÉKvÈîñ
+$IF !OMIT_INITIALIZE_INTERRUPT || ALT(USE_INHINTB_TABLE,0)$
+
+$ ÝvC
+#define TNUM_INTNO	$LENGTH(INT.ORDER_LIST)$$NL$
+const uint_t _kernel_tnum_intno = TNUM_INTNO;$NL$
+$NL$
+
+$ ÝvCú»e[u
+$IF LENGTH(INT.ORDER_LIST)$
+	const INTINIB _kernel_intinib_table[TNUM_INTNO] = {$NL$
+	$JOINEACH intno INT.ORDER_LIST ",\n"$
+		$TAB${ ($INT.INTNO[intno]$), ($INT.INTATR[intno]$), ($INT.INTPRI[intno]$) }
+	$END$$NL$
+	};$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const INTINIB, _kernel_intinib_table);$NL$
+$END$$NL$
+$END$
+
+$ 
+$  CPUáOÇ@\
+$ 
+/*$NL$
+$SPC$*  CPU Exception Management Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ CPUáOnhÉÖ·éG[`FbN
+$i = 0$
+$FOREACH excno EXC.ORDER_LIST$
+$	// excnoªDEF_EXCÉÎ·éCPUáOnhÔÆµÄ³µ­È¢êiE_PARj
+	$IF !LENGTH(FIND(EXCNO_DEFEXC_VALID, EXC.EXCNO[excno]))$
+		$ERROR EXC.TEXT_LINE[excno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "excno", EXC.EXCNO[excno], "DEF_EXC")$$END$
+	$END$
+
+$	// excnoªDEF_EXCÉæÁÄÝèÏÝÌêiE_OBJj
+	$j = 0$
+	$FOREACH excno2 EXC.ORDER_LIST$
+		$IF EXC.EXCNO[excno] == EXC.EXCNO[excno2] && j < i$
+			$ERROR EXC.TEXT_LINE[excno]$E_OBJ: $FORMAT(_("%1% `%2%\' in %3% is duplicated"), "excno", EXC.EXCNO[excno], "DEF_EXC")$$END$
+		$END$
+		$j = j + 1$
+	$END$
+
+$	// excatrªiTA_NULLjÅÈ¢êiE_RSATRj
+	$IF (EXC.EXCATR[excno] & ~TARGET_EXCATR) != 0$
+		$ERROR EXC.TEXT_LINE[excno]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "excatr", EXC.EXCATR[excno], "excno", EXC.EXCNO[excno], "DEF_EXC")$$END$
+	$END$
+	$i = i + 1$
+$END$
+
+$ CPUáOnhÌ½ßÌWIÈú»îñÌ¶¬
+$IF !OMIT_INITIALIZE_EXCEPTION$
+
+$ CPUáOnh
+#define TNUM_EXCNO	$LENGTH(EXC.ORDER_LIST)$$NL$
+const uint_t _kernel_tnum_excno = TNUM_EXCNO;$NL$
+$NL$
+$FOREACH excno EXC.ORDER_LIST$
+	EXCHDR_ENTRY($EXC.EXCNO[excno]$, $+EXC.EXCNO[excno]$, $EXC.EXCHDR[excno]$)$NL$
+$END$
+$NL$
+
+$ CPUáOnhú»e[u
+$IF LENGTH(EXC.ORDER_LIST)$
+	const EXCINIB _kernel_excinib_table[TNUM_EXCNO] = {$NL$
+	$JOINEACH excno EXC.ORDER_LIST ",\n"$
+		$TAB${ ($EXC.EXCNO[excno]$), ($EXC.EXCATR[excno]$), (FP)(EXC_ENTRY($EXC.EXCNO[excno]$, $EXC.EXCHDR[excno]$)) }
+	$END$$NL$
+	};$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const EXCINIB, _kernel_excinib_table);$NL$
+$END$$NL$
+$END$
+
+$ 
+$  ñ^XNReLXgpÌX^bNÌæ
+$ 
+/*$NL$
+$SPC$*  Stack Area for Non-task Context$NL$
+$SPC$*/$NL$
+$NL$
+
+$IF !LENGTH(ICS.ORDER_LIST)$
+$	// DEF_ICSªÈ¢êÌftHglÌÝè
+	#ifdef DEFAULT_ISTK$NL$
+	$NL$
+	#define TOPPERS_ISTKSZ		DEFAULT_ISTKSZ$NL$
+	#define TOPPERS_ISTK		DEFAULT_ISTK$NL$
+	$NL$
+	#else /* DEAULT_ISTK */$NL$
+	$NL$
+	static STK_T				_kernel_istack[COUNT_STK_T(DEFAULT_ISTKSZ)];$NL$
+	#define TOPPERS_ISTKSZ		ROUND_STK_T(DEFAULT_ISTKSZ)$NL$
+	#define TOPPERS_ISTK		_kernel_istack$NL$
+	$NL$
+	#endif /* DEAULT_ISTK */$NL$
+$ELSE$
+
+$	// ÃIAPIuDEF_ICSvª¡ éiE_OBJj
+	$IF LENGTH(ICS.ORDER_LIST) > 1$
+		$ERROR$E_OBJ: $FORMAT(_("too many %1%"), "DEF_ICS")$$END$
+	$END$
+
+$ 	// istkszªX^bNÌæÌTCYÆµÄ³µ­È¢êiE_PARj
+	$IF !EQ(ICS.ISTK[1], "NULL") && CHECK_STKSZ_ALIGN
+							&& (ICS.ISTKSZ[1] & (CHECK_STKSZ_ALIGN - 1))$
+		$ERROR ICS.TEXT_LINE[1]$E_PAR: $FORMAT(_("%1% `%2%\' in %3% is not aligned"), "istksz", ICS.ISTKSZ[1], "DEF_ICS")$$END$
+	$END$
+
+	$IF EQ(ICS.ISTK[1], "NULL")$
+$		// X^bNÌæÌ©®t¯
+		static STK_T				_kernel_istack[COUNT_STK_T($ICS.ISTKSZ[1]$)];$NL$
+		#define TOPPERS_ISTKSZ		ROUND_STK_T($ICS.ISTKSZ[1]$)$NL$
+		#define TOPPERS_ISTK		_kernel_istack$NL$
+	$ELSE$
+		#define TOPPERS_ISTKSZ		($ICS.ISTKSZ[1]$)$NL$
+		#define TOPPERS_ISTK		($ICS.ISTK[1]$)$NL$
+	$END$
+$END$
+$NL$
+
+$ ñ^XNReLXgpÌX^bNÌæ
+const SIZE		_kernel_istksz = TOPPERS_ISTKSZ;$NL$
+STK_T *const	_kernel_istk = TOPPERS_ISTK;$NL$
+$NL$
+#ifdef TOPPERS_ISTKPT$NL$
+STK_T *const	_kernel_istkpt = TOPPERS_ISTKPT(TOPPERS_ISTK, TOPPERS_ISTKSZ);$NL$
+#endif /* TOPPERS_ISTKPT */$NL$
+$NL$
+
+$ 
+$  J[lªèt¯éÌæ
+$ 
+/*$NL$
+$SPC$*  Memory Area Allocated by Kernel$NL$
+$SPC$*/$NL$
+$NL$
+
+$IF !LENGTH(KMM.ORDER_LIST)$
+$	// DEF_KMMªÈ¢êÌftHglÌÝè
+	#define TOPPERS_KMMSZ		0$NL$
+	#define TOPPERS_KMM			NULL$NL$
+$ELSE$
+
+$	// ÃIAPIuDEF_KMMvª¡ éiE_OBJj
+	$IF LENGTH(KMM.ORDER_LIST) > 1$
+		$ERROR$E_OBJ: $FORMAT(_("too many %1%"), "DEF_KMM")$$END$
+	$END$
+
+$ 	// kmmszªJ[lªèt¯éÌæÌTCYÆµÄ³µ­È¢êiE_PARj
+	$IF !EQ(KMM.KMM[1], "NULL") && CHECK_MB_ALIGN
+							&& (KMM.MBSZ[1] & (CHECK_MB_ALIGN - 1))$
+		$ERROR KMM.TEXT_LINE[1]$E_PAR: $FORMAT(_("%1% `%2%\' in %3% is not aligned"), "kmmsz", KMM.KMMSZ[1], "DEF_KMM")$$END$
+	$END$
+
+	$IF EQ(KMM.KMM[1], "NULL")$
+$		// J[lªèt¯éÌæÌ©®t¯
+		static MB_T					_kernel_memory[TOPPERS_COUNT_SZ($KMM.KMMSZ[1]$, sizeof(MB_T))];$NL$
+		#define TOPPERS_KMMSZ		TOPPERS_ROUND_SZ($KMM.KMMSZ[1]$, sizeof(MB_T))$NL$
+		#define TOPPERS_KMM			_kernel_memory$NL$
+	$ELSE$
+		#define TOPPERS_KMMSZ		($KMM.KMMSZ[1]$)$NL$
+		#define TOPPERS_KMM			($KMM.KMM[1]$)$NL$
+	$END$
+$END$
+$NL$
+
+$ J[lªèt¯éÌæ
+const SIZE		_kernel_kmmsz = TOPPERS_KMMSZ;$NL$
+MB_T *const		_kernel_kmm = TOPPERS_KMM;$NL$
+$NL$
+
+$ 
+$  ^CCxgÇ
+$ 
+/*$NL$
+$SPC$*  Time Event Management$NL$
+$SPC$*/$NL$
+$NL$
+TMEVTN   _kernel_tmevt_heap[TNUM_TSKID + TNUM_CYCID + TNUM_ALMID];$NL$
+$NL$
+
+$ 
+$  eW
+[Ìú»Ö
+$ 
+/*$NL$
+$SPC$*  Module Initialization Function$NL$
+$SPC$*/$NL$
+$NL$
+void$NL$
+_kernel_initialize_object(void)$NL$
+{$NL$
+$TAB$_kernel_initialize_task();$NL$
+$IF num_semid$	_kernel_initialize_semaphore();$NL$$END$
+$IF num_flgid$	_kernel_initialize_eventflag();$NL$$END$
+$IF num_dtqid$	_kernel_initialize_dataqueue();$NL$$END$
+$IF num_pdqid$	_kernel_initialize_pridataq();$NL$$END$
+$IF num_mbxid$	_kernel_initialize_mailbox();$NL$$END$
+$IF num_mpfid$	_kernel_initialize_mempfix();$NL$$END$
+$IF num_cycid$	_kernel_initialize_cyclic();$NL$$END$
+$IF num_almid$	_kernel_initialize_alarm();$NL$$END$
+$TAB$_kernel_initialize_interrupt();$NL$
+$IF num_isr$	_kernel_initialize_isr();$NL$$END$
+$TAB$_kernel_initialize_exception();$NL$
+}$NL$
+$NL$
+
+$ 
+$  ú»[`ÌÀsÖ
+$ 
+/*$NL$
+$SPC$*  Initialization Routine$NL$
+$SPC$*/$NL$
+$NL$
+void$NL$
+_kernel_call_inirtn(void)$NL$
+{$NL$
+$FOREACH order INI.ORDER_LIST$
+$ 	// iniatrªiTA_NULLjÅÈ¢êiE_RSATRj
+	$IF INI.INIATR[order] != 0$
+		$ERROR INI.TEXT_LINE[order]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "iniatr", INI.INIATR[order], "inirtn", INI.INIRTN[order], "ATT_INI")$$END$
+	$END$
+	$TAB$((INIRTN)($INI.INIRTN[order]$))((intptr_t)($INI.EXINF[order]$));$NL$
+$END$
+}$NL$
+$NL$
+
+$ 
+$  I¹[`ÌÀsÖ
+$ 
+/*$NL$
+$SPC$*  Termination Routine$NL$
+$SPC$*/$NL$
+$NL$
+void$NL$
+_kernel_call_terrtn(void)$NL$
+{$NL$
+$FOREACH rorder TER.RORDER_LIST$
+$ 	// teratrªiTA_NULLjÅÈ¢êiE_RSATRj
+	$IF TER.TERATR[rorder] != 0$
+		$ERROR TER.TEXT_LINE[rorder]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "teratr", TER.TERATR[rorder], "terrtn", TER.TERRTN[rorder], "ATT_TER")$$END$
+	$END$
+	$TAB$((TERRTN)($TER.TERRTN[rorder]$))((intptr_t)($TER.EXINF[rorder]$));$NL$
+$END$
+}$NL$
+$NL$
Index: /asp_ewarm/asp-1.7.0/extension/dcre/kernel/kernel_api.csv
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/dcre/kernel/kernel_api.csv	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/dcre/kernel/kernel_api.csv	(revision 61)
@@ -0,0 +1,28 @@
+tsk,CRE_TSK,#tskid { .tskatr &exinf &task +itskpri .stksz &stk },,
+tsk,DEF_TEX,%tskid { .texatr &texrtn },0,1,
+atsk,AID_TSK,.notsk,,
+sem,CRE_SEM,#semid { .sematr .isemcnt .maxsem },,
+asem,AID_SEM,.nosem,,
+flg,CRE_FLG,#flgid { .flgatr .iflgptn },,
+aflg,AID_FLG,.nosem,,
+dtq,CRE_DTQ,#dtqid { .dtqatr .dtqcnt &dtqmb },,
+adtq,AID_DTQ,.nodtq,,
+pdq,CRE_PDQ,#pdqid { .pdqatr .pdqcnt +maxdpri &pdqmb },,
+apdq,AID_PDQ,.nopdq,,
+mbx,CRE_MBX,#mbxid { .mbxatr +maxmpri &mprihd },,
+ambx,AID_MBX,.nombx,,
+mpf,CRE_MPF,#mpfid { .mpfatr .blkcnt .blksz &mpf &mpfmb },,
+ampf,AID_MPF,.nompf,,
+cyc,CRE_CYC,#cycid { .cycatr &exinf &cychdr .cyctim .cycphs },,
+acyc,AID_CYC,.nocyc,,
+alm,CRE_ALM,#almid { .almatr &exinf &almhdr },,
+aalm,AID_ALM,.noalm,,
+int,CFG_INT,.intno { .intatr +intpri },,
+isr,ATT_ISR,{ .isratr &exinf .intno &isr +isrpri },-1,
+aisr,AID_ISR,.noisr,,
+inh,DEF_INH,.inhno { .inhatr &inthdr },,
+ics,DEF_ICS,{ .istksz &istk },-1,
+kmm,DEF_KMM,{ .kmmsz &kmm },-1,
+exc,DEF_EXC,.excno { .excatr &exchdr },,
+ini,ATT_INI,{ .iniatr &exinf &inirtn },-1,
+ter,ATT_TER,{ .teratr &exinf &terrtn },-1,
Index: /asp_ewarm/asp-1.7.0/extension/dcre/kernel/kernel_check.tf
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/dcre/kernel/kernel_check.tf	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/dcre/kernel/kernel_check.tf	(revision 61)
@@ -0,0 +1,198 @@
+$ ======================================================================
+$ 
+$   TOPPERS/ASP Kernel
+$       Toyohashi Open Platform for Embedded Real-Time Systems/
+$       Advanced Standard Profile Kernel
+$ 
+$   Copyright (C) 2008-2010 by Embedded and Real-Time Systems Laboratory
+$               Graduate School of Information Science, Nagoya Univ., JAPAN
+$  
+$   ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+$   Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+$   ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+$   (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+$        \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+$       XR[hÉÜÜêÄ¢é±ÆD
+$   (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+$       pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+$       Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+$       Ì³ÛØKèðfÚ·é±ÆD
+$   (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+$       pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+$       ÆD
+$     (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+$         ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+$     (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+$         ñ·é±ÆD
+$   (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+$       Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+$       Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+$       RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+$       ÆÓ·é±ÆD
+$  
+$   {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+$   æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+$   ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+$   AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+$   ÌÓCðíÈ¢D
+$ 
+$   @(#) $Id: kernel_check.tf 2062 2011-04-10 16:27:41Z ertl-hiro $
+$  
+$ =====================================================================
+
+$ 
+$  ÖÌæªÔnÌ`FbN
+$ 
+$IF CHECK_FUNC_ALIGN || CHECK_FUNC_NONNULL$
+$	// ^XNÆ^XNáO[`ÌæªÔnÌ`FbN
+	$tinib = SYMBOL("_kernel_tinib_table")$
+	$FOREACH tskid TSK.ID_LIST$
+		$task = PEEK(tinib + offsetof_TINIB_task, sizeof_FP)$
+		$IF CHECK_FUNC_ALIGN && (task & (CHECK_FUNC_ALIGN - 1)) != 0$
+			$ERROR TSK.TEXT_LINE[tskid]$E_PAR: 
+				$FORMAT(_("%1% `%2%\' of `%3%\' in %4% is not aligned"),
+				"task", TSK.TASK[tskid], tskid, "CRE_TSK")$$END$
+		$END$
+		$IF CHECK_FUNC_NONNULL && task == 0$
+			$ERROR TSK.TEXT_LINE[tskid]$E_PAR: 
+				$FORMAT(_("%1% `%2%\' of `%3%\' in %4% is null"),
+				"task", TSK.TASK[tskid], tskid, "CRE_TSK")$$END$
+		$END$
+		$texrtn = PEEK(tinib + offsetof_TINIB_texrtn, sizeof_FP)$
+		$IF CHECK_FUNC_ALIGN && (texrtn & (CHECK_FUNC_ALIGN - 1)) != 0$
+			$ERROR DEF_TEX.TEXT_LINE[tskid]$E_PAR: 
+				$FORMAT(_("%1% `%2%\' of `%3%\' in %4% is not aligned"),
+				"texrtn", TSK.TEXRTN[tskid], tskid, "DEF_TEX")$$END$
+		$END$
+		$tinib = tinib + sizeof_TINIB$
+	$END$
+
+$	// üúnhÌæªÔnÌ`FbN
+	$cycinib = SYMBOL("_kernel_cycinib_table")$
+	$FOREACH cycid CYC.ID_LIST$
+		$cychdr = PEEK(cycinib + offsetof_CYCINIB_cychdr, 4)$
+		$IF CHECK_FUNC_ALIGN && (cychdr & (CHECK_FUNC_ALIGN - 1)) != 0$
+			$ERROR CYC.TEXT_LINE[cycid]$E_PAR: 
+				$FORMAT(_("%1% `%2%\' of `%3%\' in %4% is not aligned"),
+				"cychdr", CYC.CYCHDR[cycid], cycid, "CRE_CYC")$$END$
+		$END$
+		$IF CHECK_FUNC_NONNULL && cychdr == 0$
+			$ERROR CYC.TEXT_LINE[cycid]$E_PAR: 
+				$FORMAT(_("%1% `%2%\' of `%3%\' in %4% is null"),
+				"cychdr", CYC.CYCHDR[cycid], cycid, "CRE_CYC")$$END$
+		$END$
+		$cycinib = cycinib + sizeof_CYCINIB$
+	$END$
+
+$	// A[nhÌæªÔnÌ`FbN
+	$alminib = SYMBOL("_kernel_alminib_table")$
+	$FOREACH almid ALM.ID_LIST$
+		$almhdr = PEEK(alminib + offsetof_ALMINIB_almhdr, 4)$
+		$IF CHECK_FUNC_ALIGN && (almhdr & (CHECK_FUNC_ALIGN - 1)) != 0$
+			$ERROR ALM.TEXT_LINE[almid]$E_PAR: 
+				$FORMAT(_("%1% `%2%\' of `%3%\' in %4% is not aligned"),
+				"almhdr", ALM.ALMHDR[almid], almid, "CRE_ALM")$$END$
+		$END$
+		$IF CHECK_FUNC_NONNULL && almhdr == 0$
+			$ERROR ALM.TEXT_LINE[almid]$E_PAR: 
+				$FORMAT(_("%1% `%2%\' of `%3%\' in %4% is null"),
+				"almhdr", ALM.ALMHDR[almid], almid, "CRE_ALM")$$END$
+		$END$
+		$alminib = alminib + sizeof_ALMINIB$
+	$END$
+
+$	// ÝT[rX[`ÌæªÔnÌ`FbN
+	$isrinib = SYMBOL("_kernel_sisrinib_table")$
+	$FOREACH order ISR.ORDER_LIST$
+		$isr = PEEK(isrinib + offsetof_ISRINIB_isr, 4)$
+		$IF CHECK_FUNC_ALIGN && (isr & (CHECK_FUNC_ALIGN - 1)) != 0$
+			$ERROR ISR.TEXT_LINE[order]$E_PAR: 
+				$FORMAT(_("%1% `%2%\' in %4% is not aligned"),
+				"isr", ISR.ISR[order], "ATT_ISR")$$END$
+		$END$
+		$IF CHECK_FUNC_NONNULL && isr == 0$
+			$ERROR ISR.TEXT_LINE[order]$E_PAR: 
+				$FORMAT(_("%1% `%2%\' in %4% is null"),
+				"isr", ISR.ISR[order], "ATT_ISR")$$END$
+		$END$
+		$isrinib = isrinib + sizeof_ISRINIB$
+	$END$
+$END$
+
+$ 
+$  X^bNÌæÌæªÔnÌ`FbN
+$ 
+$IF CHECK_STACK_ALIGN || CHECK_STACK_NONNULL$
+$	// ^XNÌX^bNÌæÌæªÔnÌ`FbN
+	$tinib = SYMBOL("_kernel_tinib_table")$
+	$FOREACH tskid TSK.ID_LIST$
+		$IF USE_TSKINICTXB$
+			$stk = GET_STK_TSKINICTXB(tinib)$
+		$ELSE$
+			$stk = PEEK(tinib + offsetof_TINIB_stk, sizeof_void_ptr)$
+		$END$
+		$IF CHECK_STACK_ALIGN && (stk & (CHECK_STACK_ALIGN - 1)) != 0$
+			$ERROR TSK.TEXT_LINE[tskid]$E_PAR: 
+				$FORMAT(_("%1% `%2%\' of `%3%\' in %4% is not aligned"),
+				"stk", TSK.STK[tskid], tskid, "CRE_TSK")$$END$
+		$END$
+		$IF CHECK_STACK_NONNULL && stk == 0$
+			$ERROR TSK.TEXT_LINE[tskid]$E_PAR: 
+				$FORMAT(_("%1% `%2%\' of `%3%\' in %4% is null"),
+				"stk", TSK.STK[tskid], tskid, "CRE_TSK")$$END$
+		$END$
+		$tinib = tinib + sizeof_TINIB$
+	$END$
+
+$	// ñ^XNReLXgpÌX^bNÌæÌæªÔnÌ`FbN
+	$istk = PEEK(SYMBOL("_kernel_istk"), sizeof_void_ptr)$
+	$IF CHECK_STACK_ALIGN && (istk & (CHECK_STACK_ALIGN - 1)) != 0$
+		$ERROR ICE.TEXT_LINE[1]$E_PAR: 
+			$FORMAT(_("%1% `%2%\' in %3% is not aligned"),
+			"istk", ICS.ISTK[1], "DEF_ICS")$$END$
+	$END$
+	$IF CHECK_STACK_NONNULL && istk == 0$
+		$ERROR ICE.TEXT_LINE[1]$E_PAR: 
+			$FORMAT(_("%1% `%2%\' in %3% is null"),
+			"istk", ICS.ISTK[1], "DEF_ICS")$$END$
+	$END$
+$END$
+
+$ 
+$  Åè·v[ÌæÌæªÔnÌ`FbN
+$ 
+$IF CHECK_MPF_ALIGN || CHECK_MPF_NONNULL$
+$	// Åè·v[ÌæÌæªÔnÌ`FbN
+	$mpfinib = SYMBOL("_kernel_mpfinib_table")$
+	$FOREACH mpfid MPF.ID_LIST$
+		$mpf = PEEK(mpfinib + offsetof_MPFINIB_mpf, sizeof_void_ptr)$
+		$IF CHECK_MPF_ALIGN && (mpf & (CHECK_MPF_ALIGN - 1)) != 0$
+			$ERROR MPF.TEXT_LINE[mpfid]$E_PAR: 
+				$FORMAT(_("%1% `%2%\' of `%3%\' in %4% is not aligned"),
+				"mpf", MPF.MPF[mpfid], mpfid, "CRE_MPF")$$END$
+		$END$
+		$IF CHECK_MPF_NONNULL && mpf == 0$
+			$ERROR MPF.TEXT_LINE[mpfid]$E_PAR: 
+				$FORMAT(_("%1% `%2%\' of `%3%\' in %4% is null"),
+				"mpf", MPF.MPF[mpfid], mpfid, "CRE_MPF")$$END$
+		$END$
+		$mpfinib = mpfinib + sizeof_MPFINIB$
+	$END$
+$END$
+
+$ 
+$  J[lªèt¯éÌæÌæªÔnÌ`FbN
+$ 
+$IF CHECK_MB_ALIGN$
+$	// J[lªèt¯éÌæÌæªÔnÌ`FbN
+	$kmm = PEEK(SYMBOL("_kernel_kmm"), sizeof_void_ptr)$
+	$IF CHECK_MB_ALIGN && (kmm & (CHECK_MB_ALIGN - 1)) != 0$
+		$ERROR KMM.TEXT_LINE[1]$E_PAR: 
+			$FORMAT(_("%1% `%2%\' in %3% is not aligned"),
+			"kmm", KMM.KMM[1], "DEF_KMM")$$END$
+	$END$
+$END$
Index: /asp_ewarm/asp-1.7.0/extension/dcre/kernel/kernel_def.csv
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/dcre/kernel/kernel_def.csv	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/dcre/kernel/kernel_def.csv	(revision 61)
@@ -0,0 +1,116 @@
+SIL_ENDIAN_BIG,#defined(SIL_ENDIAN_BIG)
+SIL_ENDIAN_LITTLE,#defined(SIL_ENDIAN_LITTLE)
+TA_NULL,TA_NULL
+TA_ACT,TA_ACT
+TA_TPRI,TA_TPRI
+TA_MPRI,TA_MPRI
+TA_WMUL,TA_WMUL
+TA_CLR,TA_CLR
+TA_STA,TA_STA
+TA_NONKERNEL,TA_NONKERNEL
+TA_ENAINT,TA_ENAINT
+TA_EDGE,TA_EDGE
+TMIN_TPRI,TMIN_TPRI,signed
+TMAX_TPRI,TMAX_TPRI,signed
+TMIN_DPRI,TMIN_DPRI,signed
+TMAX_DPRI,TMAX_DPRI,signed
+TMIN_MPRI,TMIN_MPRI,signed
+TMAX_MPRI,TMAX_MPRI,signed
+TMIN_ISRPRI,TMIN_ISRPRI,signed
+TMAX_ISRPRI,TMAX_ISRPRI,signed
+TMAX_MAXSEM,TMAX_MAXSEM
+TMAX_RELTIM,TMAX_RELTIM
+TMIN_INTPRI,TMIN_INTPRI,signed
+OMIT_INITIALIZE_INTERRUPT,#defined(OMIT_INITIALIZE_INTERRUPT)
+OMIT_INITIALIZE_EXCEPTION,#defined(OMIT_INITIALIZE_EXCEPTION)
+USE_TSKINICTXB,#defined(USE_TSKINICTXB)
+TARGET_TSKATR,#defined(TARGET_TSKATR),,TARGET_TSKATR
+TARGET_INTATR,#defined(TARGET_INTATR),,TARGET_INTATR
+TARGET_INHATR,#defined(TARGET_INHATR),,TARGET_INHATR
+TARGET_ISRATR,#defined(TARGET_ISRATR),,TARGET_ISRATR
+TARGET_EXCATR,#defined(TARGET_EXCATR),,TARGET_EXCATR
+TARGET_MIN_STKSZ,#defined(TARGET_MIN_STKSZ),,TARGET_MIN_STKSZ
+CHECK_STKSZ_ALIGN,#defined(CHECK_STKSZ_ALIGN),,CHECK_STKSZ_ALIGN
+CHECK_FUNC_ALIGN,#defined(CHECK_FUNC_ALIGN),,CHECK_FUNC_ALIGN
+CHECK_FUNC_NONNULL,#defined(CHECK_FUNC_NONNULL)
+CHECK_STACK_ALIGN,#defined(CHECK_STACK_ALIGN),,CHECK_STACK_ALIGN
+CHECK_STACK_NONNULL,#defined(CHECK_STACK_NONNULL)
+CHECK_MPF_ALIGN,#defined(CHECK_MPF_ALIGN),,CHECK_MPF_ALIGN
+CHECK_MPF_NONNULL,#defined(CHECK_MPF_NONNULL)
+CHECK_MB_ALIGN,#defined(CHECK_MB_ALIGN),,CHECK_MB_ALIGN
+sizeof_ID,sizeof(ID)
+sizeof_uint_t,sizeof(uint_t)
+sizeof_SIZE,sizeof(SIZE)
+sizeof_ATR,sizeof(ATR)
+sizeof_PRI,sizeof(PRI)
+sizeof_void_ptr,sizeof(void*)
+sizeof_VP,sizeof(void*)
+sizeof_intptr_t,sizeof(intptr_t)
+sizeof_FP,sizeof(FP)
+sizeof_INHNO,sizeof(INHNO)
+sizeof_INTNO,sizeof(INTNO)
+sizeof_EXCNO,sizeof(EXCNO)
+sizeof_TINIB,sizeof(TINIB)
+offsetof_TINIB_tskatr,"offsetof(TINIB,tskatr)"
+offsetof_TINIB_exinf,"offsetof(TINIB,exinf)"
+offsetof_TINIB_task,"offsetof(TINIB,task)"
+offsetof_TINIB_ipriority,"offsetof(TINIB,ipriority)"
+offsetof_TINIB_stksz,#!defined(USE_TSKINICTXB),,"offsetof(TINIB,stksz)"
+offsetof_TINIB_stk,#!defined(USE_TSKINICTXB),,"offsetof(TINIB,stk)"
+offsetof_TINIB_texatr,"offsetof(TINIB,texatr)"
+offsetof_TINIB_texrtn,"offsetof(TINIB,texrtn)"
+sizeof_SEMINIB,sizeof(SEMINIB)
+offsetof_SEMINIB_sematr,"offsetof(SEMINIB,sematr)"
+offsetof_SEMINIB_isemcnt,"offsetof(SEMINIB,isemcnt)"
+offsetof_SEMINIB_maxsem,"offsetof(SEMINIB,maxsem)"
+sizeof_FLGPTN,sizeof(FLGPTN)
+sizeof_FLGINIB,sizeof(FLGINIB)
+offsetof_FLGINIB_flgatr,"offsetof(FLGINIB,flgatr)"
+offsetof_FLGINIB_iflgptn,"offsetof(FLGINIB,iflgptn)"
+sizeof_DTQINIB,sizeof(DTQINIB)
+offsetof_DTQINIB_dtqatr,"offsetof(DTQINIB,dtqatr)"
+offsetof_DTQINIB_dtqcnt,"offsetof(DTQINIB,dtqcnt)"
+offsetof_DTQINIB_p_dtqmb,"offsetof(DTQINIB,p_dtqmb)"
+sizeof_PDQINIB,sizeof(PDQINIB)
+offsetof_PDQINIB_pdqatr,"offsetof(PDQINIB,pdqatr)"
+offsetof_PDQINIB_pdqcnt,"offsetof(PDQINIB,pdqcnt)"
+offsetof_PDQINIB_maxdpri,"offsetof(PDQINIB,maxdpri)"
+offsetof_PDQINIB_p_pdqmb,"offsetof(PDQINIB,p_pdqmb)"
+sizeof_MBXINIB,sizeof(MBXINIB)
+offsetof_MBXINIB_mbxatr,"offsetof(MBXINIB,mbxatr)"
+offsetof_MBXINIB_maxmpri,"offsetof(MBXINIB,maxmpri)"
+sizeof_MPFINIB,sizeof(MPFINIB)
+offsetof_MPFINIB_mpfatr,"offsetof(MPFINIB,mpfatr)"
+offsetof_MPFINIB_blkcnt,"offsetof(MPFINIB,blkcnt)"
+offsetof_MPFINIB_blksz,"offsetof(MPFINIB,blksz)"
+offsetof_MPFINIB_mpf,"offsetof(MPFINIB,mpf)"
+offsetof_MPFINIB_p_mpfmb,"offsetof(MPFINIB,p_mpfmb)"
+sizeof_CYCINIB,sizeof(CYCINIB)
+offsetof_CYCINIB_cycatr,"offsetof(CYCINIB,cycatr)"
+offsetof_CYCINIB_exinf,"offsetof(CYCINIB,exinf)"
+offsetof_CYCINIB_cychdr,"offsetof(CYCINIB,cychdr)"
+offsetof_CYCINIB_cyctim,"offsetof(CYCINIB,cyctim)"
+offsetof_CYCINIB_cycphs,"offsetof(CYCINIB,cycphs)"
+sizeof_ALMINIB,sizeof(ALMINIB)
+offsetof_ALMINIB_almatr,"offsetof(ALMINIB,almatr)"
+offsetof_ALMINIB_exinf,"offsetof(ALMINIB,exinf)"
+offsetof_ALMINIB_almhdr,"offsetof(ALMINIB,almhdr)"
+sizeof_ISRINIB,sizeof(ISRINIB)
+offsetof_ISRINIB_isratr,"offsetof(ISRINIB,isratr)"
+offsetof_ISRINIB_exinf,"offsetof(ISRINIB,exinf)"
+offsetof_ISRINIB_intno,"offsetof(ISRINIB,intno)"
+offsetof_ISRINIB_p_isr_queue,"offsetof(ISRINIB,p_isr_queue)"
+offsetof_ISRINIB_isr,"offsetof(ISRINIB,isr)"
+offsetof_ISRINIB_isrpri,"offsetof(ISRINIB,isrpri)"
+sizeof_INHINIB,#!defined(OMIT_INITIALIZE_INTERRUPT),,sizeof(INHINIB)
+offset_INHINIB_inhno,#!defined(OMIT_INITIALIZE_INTERRUPT),,"offsetof(INHINIB,inhno)"
+offset_INHINIB_inhatr,#!defined(OMIT_INITIALIZE_INTERRUPT),,"offsetof(INHINIB,inhatr)"
+offset_INHINIB_int_entry,#!defined(OMIT_INITIALIZE_INTERRUPT),,"offsetof(INHINIB,int_entry)"
+sizeof_INTINIB,#!defined(OMIT_INITIALIZE_INTERRUPT),,sizeof(INTINIB)
+offset_INTINIB_intno,#!defined(OMIT_INITIALIZE_INTERRUPT),,"offsetof(INTINIB,intno)"
+offset_INTINIB_intatr,#!defined(OMIT_INITIALIZE_INTERRUPT),,"offsetof(INTINIB,intatr)"
+offset_INTINIB_intpri,#!defined(OMIT_INITIALIZE_INTERRUPT),,"offsetof(INTINIB,intpri)"
+sizeof_EXCINIB,#!defined(OMIT_INITIALIZE_EXCEPTION),,sizeof(EXCINIB)
+offset_EXCINIB_excno,#!defined(OMIT_INITIALIZE_EXCEPTION),,"offsetof(EXCINIB,excno)"
+offset_EXCINIB_excatr,#!defined(OMIT_INITIALIZE_EXCEPTION),,"offsetof(EXCINIB,excatr)"
+offset_EXCINIB_exc_entry,#!defined(OMIT_INITIALIZE_EXCEPTION),,"offsetof(EXCINIB,exc_entry)"
Index: /asp_ewarm/asp-1.7.0/extension/dcre/kernel/kernel_impl.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/dcre/kernel/kernel_impl.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/dcre/kernel/kernel_impl.h	(revision 61)
@@ -0,0 +1,225 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: kernel_impl.h 1966 2010-11-20 07:23:56Z ertl-hiro $
+ */
+
+/*
+ *		TOPPERS/ASPJ[làü¯Wwb_t@C
+ *
+ *  ±Ìwb_t@CÍCJ[lð\¬·évOÌ\[Xt@C
+ *  ÅK¸CN[h·é×«Wwb_t@CÅ éD
+ *
+ *  AZu¾êÌ\[Xt@C©ç±Ìt@CðCN[h·é
+ *  ÍCTOPPERS_MACRO_ONLYðè`µÄ¨­D±êÉæèC}Nè`ÈOð
+ *  ­æ¤ÉÈÁÄ¢éD
+ */
+
+#ifndef TOPPERS_KERNEL_IMPL_H
+#define TOPPERS_KERNEL_IMPL_H
+
+/*
+ *  J[lÌà¯Ê¼Ìl[
+ */
+#include "kernel_rename.h"
+
+/*
+ *  AvP[VÆ¤ÊÌwb_t@C
+ */
+#include <kernel.h>
+
+/*
+ *  VXeO@\Ì½ßÌè`
+ */
+#include <t_syslog.h>
+
+/*
+ *  ^LXgðs¤}NÌè`
+ */
+#ifndef CAST
+#define CAST(type, val)		((type)(val))
+#endif /* CAST */
+
+/*
+ *  ^[QbgË¶îñÌè`
+ */
+#include "target_config.h"
+
+/*
+ *  ·×ÄÌÖðRpC·é½ßÌè`
+ */
+#ifdef ALLFUNC
+#include "allfunc.h"
+#endif /* ALLFUNC */
+
+/*
+ *  rbgtB[hÅÌ³µ®^
+ *
+ *  8rbgÈºÌÌrbgtB[hÅC³µ®lðÛµ½¢ê
+ *  Ép¢é×«f[^^DANSI CÅÍCrbgtB[hÌf[^^ÉÍ
+ *  intÆunsigned intµ©³êÈ¢½ßCftHgÌè`Íunsigned
+ *  intÆµÄ¢éªC^[Qbg¨æÑc[Ë¶ÅCunsigned charÜ½Í
+ *  unsigned shortÉè`µ½ûªø¦ªÇ¢êª éD
+ */
+#ifndef BIT_FIELD_UINT
+#define BIT_FIELD_UINT		unsigned int
+#endif /* BIT_FIELD_UINT */
+
+/*
+ *  rbgtB[hÅÌu[^
+ *
+ *  1rbgÌrbgtB[hÅCu[lðÛµ½¢êÉp¢é×«
+ *  f[^^DftHgÅÍBIT_FIELD_UINTÆ¯êÉè`µÄ¢éªCu[
+ *  lðÛ·é±Æð¾¦·é½ßÉÊÌ¼ÌÆµÄ¢éD
+ */
+#ifndef BIT_FIELD_BOOL
+#define BIT_FIELD_BOOL		BIT_FIELD_UINT
+#endif /* BIT_FIELD_BOOL */
+
+/*
+ *  IuWFNgIDÌÅ¬lÌè`
+ */
+#define TMIN_TSKID		1		/* ^XNIDÌÅ¬l */
+#define TMIN_SEMID		1		/* Z}tHIDÌÅ¬l */
+#define TMIN_FLGID		1		/* tOIDÌÅ¬l */
+#define TMIN_DTQID		1		/* f[^L
+[IDÌÅ¬l */
+#define TMIN_PDQID		1		/* Dæxf[^L
+[IDÌÅ¬l */
+#define TMIN_MBXID		1		/* [{bNXIDÌÅ¬l */
+#define TMIN_MPFID		1		/* Åè·v[IDÌÅ¬l */
+#define TMIN_CYCID		1		/* üúnhIDÌÅ¬l */
+#define TMIN_ALMID		1		/* A[nhIDÌÅ¬l */
+#define TMIN_ISRID		1		/* ÝT[rX[`IDÌÅ¬l */
+
+/*
+ *  DæxÌiKÌè`
+ */
+#define TNUM_TPRI		(TMAX_TPRI - TMIN_TPRI + 1)
+#define TNUM_MPRI		(TMAX_MPRI - TMIN_MPRI + 1)
+#define TNUM_INTPRI		(TMAX_INTPRI - TMIN_INTPRI + 1)
+
+/*
+ *  J[làÅgp·é®«Ìè`
+ */
+#define TA_NOEXS		((ATR)(-1))			/* ¢o^óÔ */
+
+#ifndef TA_MEMALLOC
+#define TA_MEMALLOC		UINT_C(0x8000)		/* ÌæðJ[lÅmÛ */
+#endif /* TA_MEMALLOC */
+#ifndef TA_MBALLOC
+#define TA_MBALLOC		UINT_C(0x4000)		/* ÇÌæðJ[lÅmÛ */
+#endif /* TA_MBALLOC */
+
+/*
+ *  ^[Qbgè`ÌG[`FbN}NÌftHglÌè`
+ */
+#ifndef TARGET_TSKATR
+#define TARGET_TSKATR		0U		/* ^[Qbgè`Ì^XN®« */
+#endif /* TARGET_TSKATR */
+
+#ifndef TARGET_ISRATR
+#define TARGET_ISRATR		0U		/* ^[Qbgè`ÌISR®« */
+#endif /* TARGET_ISRATR */
+
+/*
+ *  wb_t@Cð½È¢W
+[ÌÖEÏÌé¾
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  eW
+[Ìú»ikernel_cfg.cj
+ */
+extern void	initialize_object(void);
+
+/*
+ *  ú»[`ÌÀsikernel_cfg.cj
+ */
+extern void	call_inirtn(void);
+
+/*
+ *  I¹[`ÌÀsikernel_cfg.cj
+ */
+extern void	call_terrtn(void);
+
+/*
+ *  ñ^XNReLXgpÌX^bNÌæikernel_cfg.cj
+ */
+extern const SIZE	istksz;		/* X^bNÌæÌTCYiÛß½lj */
+extern STK_T *const	istk;		/* X^bNÌæÌæªÔn */
+#ifdef TOPPERS_ISTKPT
+extern STK_T *const	istkpt;		/* X^bN|C^Ìúl */
+#endif /* TOPPERS_ISTKPT */
+
+/*
+ *  J[lªèt¯éÌæikernel_cfg.cj
+ */
+extern const SIZE	kmmsz;		/* J[lªèt¯éÌæÌTCY */
+extern MB_T *const	kmm;		/* J[lªèt¯éÌæÌæªÔn */
+
+/*
+ *  J[l®ìóÔtOistartup.cj
+ */
+extern bool_t	kerflg;
+
+/*
+ *  J[lÌN®istartup.cj
+ */
+extern void	sta_ker(void);
+
+/*
+ *  J[lÌI¹istartup.cj
+ */
+extern void	exit_kernel(void);
+
+/*
+ *  J[lÌèt¯éÌæÌÇistartup.cj
+ */
+extern void initialize_kmm(void);
+extern void *kernel_malloc(SIZE size);
+extern void kernel_free(void *ptr);
+
+#endif /* TOPPERS_MACRO_ONLY */
+#endif /* TOPPERS_KERNEL_IMPL_H */
Index: /asp_ewarm/asp-1.7.0/extension/dcre/kernel/kernel_rename.def
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/dcre/kernel/kernel_rename.def	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/dcre/kernel/kernel_rename.def	(revision 61)
@@ -0,0 +1,179 @@
+# startup.c
+kerflg
+exit_kernel
+initialize_kmm
+kernel_malloc
+kernel_free
+
+# task.c
+p_runtsk
+p_schedtsk
+reqflg
+ipmflg
+disdsp
+dspflg
+ready_queue
+ready_primap
+free_tcb
+initialize_task
+search_schedtsk
+make_runnable
+make_non_runnable
+make_dormant
+make_active
+change_priority
+rotate_ready_queue
+call_texrtn
+calltex
+
+# wait.c
+make_wait_tmout
+wait_complete
+wait_tmout
+wait_tmout_ok
+wait_release
+wobj_make_wait
+wobj_make_wait_tmout
+init_wait_queue
+
+# time_event.c
+current_time
+min_time
+next_time
+next_subtime
+last_index
+initialize_tmevt
+tmevt_up
+tmevt_down
+tmevtb_insert
+tmevtb_delete
+tmevt_lefttim
+signal_time
+
+# semaphore.c
+free_semcb
+initialize_semaphore
+
+# eventflag.c
+free_flgcb
+initialize_eventflag
+check_flg_cond
+
+# dataqueue.c
+free_dtqcb
+initialize_dataqueue
+enqueue_data
+force_enqueue_data
+dequeue_data
+send_data
+force_send_data
+receive_data
+
+# pridataq.c
+free_pdqcb
+initialize_pridataq
+enqueue_pridata
+dequeue_pridata
+send_pridata
+receive_pridata
+
+# mailbox.c
+free_mbxcb
+initialize_mailbox
+
+# mempfix.c
+free_mpfcb
+initialize_mempfix
+get_mpf_block
+
+# cyclic.c
+free_cyccb
+initialize_cyclic
+call_cychdr
+
+# alarm.c
+free_almcb
+initialize_alarm
+call_almhdr
+
+# interrupt.c
+free_isrcb
+initialize_isr
+inthdr_call_isr
+initialize_interrupt
+
+# exception.c
+initialize_exception
+
+# kernel_cfg.c
+initialize_object
+call_inirtn
+call_terrtn
+tmax_tskid
+tmax_stskid
+tinib_table
+atinib_table
+tcb_table
+torder_table
+tmax_semid
+tmax_ssemid
+seminib_table
+aseminib_table
+semcb_table
+tmax_flgid
+tmax_sflgid
+flginib_table
+aflginib_table
+flgcb_table
+tmax_dtqid
+tmax_adtqid
+dtqinib_table
+sdtqinib_table
+dtqcb_table
+tmax_pdqid
+tmax_apdqid
+pdqinib_table
+apdqinib_table
+pdqcb_table
+tmax_mbxid
+tmax_smbxid
+mbxinib_table
+ambxinib_table
+mbxcb_table
+tmax_mpfid
+tmax_smpfid
+mpfinib_table
+ampfinib_table
+mpfcb_table
+tmax_cycid
+tmax_scycid
+cycinib_table
+acycinib_table
+cyccb_table
+tmax_almid
+tmax_salmid
+alminib_table
+aalminib_table
+almcb_table
+tnum_isr_queue
+isr_queue_table
+isr_queue_list
+tmax_isrid
+tnum_sisr
+sisrinib_table
+aisrinib_table
+isrcb_table
+tnum_inhno
+inhinib_table
+tnum_intno
+intinib_table
+tnum_excno
+excinib_table
+tmevt_heap
+istksz
+istk
+istkpt
+kmmsz
+kmm
+
+INCLUDE "target"
Index: /asp_ewarm/asp-1.7.0/extension/dcre/kernel/kernel_rename.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/dcre/kernel/kernel_rename.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/dcre/kernel/kernel_rename.h	(revision 61)
@@ -0,0 +1,430 @@
+/* This file is generated from kernel_rename.def by genrename. */
+
+#ifndef TOPPERS_KERNEL_RENAME_H
+#define TOPPERS_KERNEL_RENAME_H
+
+/*
+ *  startup.c
+ */
+#define kerflg						_kernel_kerflg
+#define exit_kernel					_kernel_exit_kernel
+#define initialize_kmm				_kernel_initialize_kmm
+#define kernel_malloc				_kernel_kernel_malloc
+#define kernel_free					_kernel_kernel_free
+
+/*
+ *  task.c
+ */
+#define p_runtsk					_kernel_p_runtsk
+#define p_schedtsk					_kernel_p_schedtsk
+#define reqflg						_kernel_reqflg
+#define ipmflg						_kernel_ipmflg
+#define disdsp						_kernel_disdsp
+#define dspflg						_kernel_dspflg
+#define ready_queue					_kernel_ready_queue
+#define ready_primap				_kernel_ready_primap
+#define free_tcb					_kernel_free_tcb
+#define initialize_task				_kernel_initialize_task
+#define search_schedtsk				_kernel_search_schedtsk
+#define make_runnable				_kernel_make_runnable
+#define make_non_runnable			_kernel_make_non_runnable
+#define make_dormant				_kernel_make_dormant
+#define make_active					_kernel_make_active
+#define change_priority				_kernel_change_priority
+#define rotate_ready_queue			_kernel_rotate_ready_queue
+#define call_texrtn					_kernel_call_texrtn
+#define calltex						_kernel_calltex
+
+/*
+ *  wait.c
+ */
+#define make_wait_tmout				_kernel_make_wait_tmout
+#define wait_complete				_kernel_wait_complete
+#define wait_tmout					_kernel_wait_tmout
+#define wait_tmout_ok				_kernel_wait_tmout_ok
+#define wait_release				_kernel_wait_release
+#define wobj_make_wait				_kernel_wobj_make_wait
+#define wobj_make_wait_tmout		_kernel_wobj_make_wait_tmout
+#define init_wait_queue				_kernel_init_wait_queue
+
+/*
+ *  time_event.c
+ */
+#define current_time				_kernel_current_time
+#define min_time					_kernel_min_time
+#define next_time					_kernel_next_time
+#define next_subtime				_kernel_next_subtime
+#define last_index					_kernel_last_index
+#define initialize_tmevt			_kernel_initialize_tmevt
+#define tmevt_up					_kernel_tmevt_up
+#define tmevt_down					_kernel_tmevt_down
+#define tmevtb_insert				_kernel_tmevtb_insert
+#define tmevtb_delete				_kernel_tmevtb_delete
+#define tmevt_lefttim				_kernel_tmevt_lefttim
+#define signal_time					_kernel_signal_time
+
+/*
+ *  semaphore.c
+ */
+#define free_semcb					_kernel_free_semcb
+#define initialize_semaphore		_kernel_initialize_semaphore
+
+/*
+ *  eventflag.c
+ */
+#define free_flgcb					_kernel_free_flgcb
+#define initialize_eventflag		_kernel_initialize_eventflag
+#define check_flg_cond				_kernel_check_flg_cond
+
+/*
+ *  dataqueue.c
+ */
+#define free_dtqcb					_kernel_free_dtqcb
+#define initialize_dataqueue		_kernel_initialize_dataqueue
+#define enqueue_data				_kernel_enqueue_data
+#define force_enqueue_data			_kernel_force_enqueue_data
+#define dequeue_data				_kernel_dequeue_data
+#define send_data					_kernel_send_data
+#define force_send_data				_kernel_force_send_data
+#define receive_data				_kernel_receive_data
+
+/*
+ *  pridataq.c
+ */
+#define free_pdqcb					_kernel_free_pdqcb
+#define initialize_pridataq			_kernel_initialize_pridataq
+#define enqueue_pridata				_kernel_enqueue_pridata
+#define dequeue_pridata				_kernel_dequeue_pridata
+#define send_pridata				_kernel_send_pridata
+#define receive_pridata				_kernel_receive_pridata
+
+/*
+ *  mailbox.c
+ */
+#define free_mbxcb					_kernel_free_mbxcb
+#define initialize_mailbox			_kernel_initialize_mailbox
+
+/*
+ *  mempfix.c
+ */
+#define free_mpfcb					_kernel_free_mpfcb
+#define initialize_mempfix			_kernel_initialize_mempfix
+#define get_mpf_block				_kernel_get_mpf_block
+
+/*
+ *  cyclic.c
+ */
+#define free_cyccb					_kernel_free_cyccb
+#define initialize_cyclic			_kernel_initialize_cyclic
+#define call_cychdr					_kernel_call_cychdr
+
+/*
+ *  alarm.c
+ */
+#define free_almcb					_kernel_free_almcb
+#define initialize_alarm			_kernel_initialize_alarm
+#define call_almhdr					_kernel_call_almhdr
+
+/*
+ *  interrupt.c
+ */
+#define free_isrcb					_kernel_free_isrcb
+#define initialize_isr				_kernel_initialize_isr
+#define inthdr_call_isr				_kernel_inthdr_call_isr
+#define initialize_interrupt		_kernel_initialize_interrupt
+
+/*
+ *  exception.c
+ */
+#define initialize_exception		_kernel_initialize_exception
+
+/*
+ *  kernel_cfg.c
+ */
+#define initialize_object			_kernel_initialize_object
+#define call_inirtn					_kernel_call_inirtn
+#define call_terrtn					_kernel_call_terrtn
+#define tmax_tskid					_kernel_tmax_tskid
+#define tmax_stskid					_kernel_tmax_stskid
+#define tinib_table					_kernel_tinib_table
+#define atinib_table				_kernel_atinib_table
+#define tcb_table					_kernel_tcb_table
+#define torder_table				_kernel_torder_table
+#define tmax_semid					_kernel_tmax_semid
+#define tmax_ssemid					_kernel_tmax_ssemid
+#define seminib_table				_kernel_seminib_table
+#define aseminib_table				_kernel_aseminib_table
+#define semcb_table					_kernel_semcb_table
+#define tmax_flgid					_kernel_tmax_flgid
+#define tmax_sflgid					_kernel_tmax_sflgid
+#define flginib_table				_kernel_flginib_table
+#define aflginib_table				_kernel_aflginib_table
+#define flgcb_table					_kernel_flgcb_table
+#define tmax_dtqid					_kernel_tmax_dtqid
+#define tmax_adtqid					_kernel_tmax_adtqid
+#define dtqinib_table				_kernel_dtqinib_table
+#define sdtqinib_table				_kernel_sdtqinib_table
+#define dtqcb_table					_kernel_dtqcb_table
+#define tmax_pdqid					_kernel_tmax_pdqid
+#define tmax_apdqid					_kernel_tmax_apdqid
+#define pdqinib_table				_kernel_pdqinib_table
+#define apdqinib_table				_kernel_apdqinib_table
+#define pdqcb_table					_kernel_pdqcb_table
+#define tmax_mbxid					_kernel_tmax_mbxid
+#define tmax_smbxid					_kernel_tmax_smbxid
+#define mbxinib_table				_kernel_mbxinib_table
+#define ambxinib_table				_kernel_ambxinib_table
+#define mbxcb_table					_kernel_mbxcb_table
+#define tmax_mpfid					_kernel_tmax_mpfid
+#define tmax_smpfid					_kernel_tmax_smpfid
+#define mpfinib_table				_kernel_mpfinib_table
+#define ampfinib_table				_kernel_ampfinib_table
+#define mpfcb_table					_kernel_mpfcb_table
+#define tmax_cycid					_kernel_tmax_cycid
+#define tmax_scycid					_kernel_tmax_scycid
+#define cycinib_table				_kernel_cycinib_table
+#define acycinib_table				_kernel_acycinib_table
+#define cyccb_table					_kernel_cyccb_table
+#define tmax_almid					_kernel_tmax_almid
+#define tmax_salmid					_kernel_tmax_salmid
+#define alminib_table				_kernel_alminib_table
+#define aalminib_table				_kernel_aalminib_table
+#define almcb_table					_kernel_almcb_table
+#define tnum_isr_queue				_kernel_tnum_isr_queue
+#define isr_queue_table				_kernel_isr_queue_table
+#define isr_queue_list				_kernel_isr_queue_list
+#define tmax_isrid					_kernel_tmax_isrid
+#define tnum_sisr					_kernel_tnum_sisr
+#define sisrinib_table				_kernel_sisrinib_table
+#define aisrinib_table				_kernel_aisrinib_table
+#define isrcb_table					_kernel_isrcb_table
+#define tnum_inhno					_kernel_tnum_inhno
+#define inhinib_table				_kernel_inhinib_table
+#define tnum_intno					_kernel_tnum_intno
+#define intinib_table				_kernel_intinib_table
+#define tnum_excno					_kernel_tnum_excno
+#define excinib_table				_kernel_excinib_table
+#define tmevt_heap					_kernel_tmevt_heap
+#define istksz						_kernel_istksz
+#define istk						_kernel_istk
+#define istkpt						_kernel_istkpt
+#define kmmsz						_kernel_kmmsz
+#define kmm							_kernel_kmm
+
+
+#ifdef TOPPERS_LABEL_ASM
+
+/*
+ *  startup.c
+ */
+#define _kerflg						__kernel_kerflg
+#define _exit_kernel				__kernel_exit_kernel
+#define _initialize_kmm				__kernel_initialize_kmm
+#define _kernel_malloc				__kernel_kernel_malloc
+#define _kernel_free				__kernel_kernel_free
+
+/*
+ *  task.c
+ */
+#define _p_runtsk					__kernel_p_runtsk
+#define _p_schedtsk					__kernel_p_schedtsk
+#define _reqflg						__kernel_reqflg
+#define _ipmflg						__kernel_ipmflg
+#define _disdsp						__kernel_disdsp
+#define _dspflg						__kernel_dspflg
+#define _ready_queue				__kernel_ready_queue
+#define _ready_primap				__kernel_ready_primap
+#define _free_tcb					__kernel_free_tcb
+#define _initialize_task			__kernel_initialize_task
+#define _search_schedtsk			__kernel_search_schedtsk
+#define _make_runnable				__kernel_make_runnable
+#define _make_non_runnable			__kernel_make_non_runnable
+#define _make_dormant				__kernel_make_dormant
+#define _make_active				__kernel_make_active
+#define _change_priority			__kernel_change_priority
+#define _rotate_ready_queue			__kernel_rotate_ready_queue
+#define _call_texrtn				__kernel_call_texrtn
+#define _calltex					__kernel_calltex
+
+/*
+ *  wait.c
+ */
+#define _make_wait_tmout			__kernel_make_wait_tmout
+#define _wait_complete				__kernel_wait_complete
+#define _wait_tmout					__kernel_wait_tmout
+#define _wait_tmout_ok				__kernel_wait_tmout_ok
+#define _wait_release				__kernel_wait_release
+#define _wobj_make_wait				__kernel_wobj_make_wait
+#define _wobj_make_wait_tmout		__kernel_wobj_make_wait_tmout
+#define _init_wait_queue			__kernel_init_wait_queue
+
+/*
+ *  time_event.c
+ */
+#define _current_time				__kernel_current_time
+#define _min_time					__kernel_min_time
+#define _next_time					__kernel_next_time
+#define _next_subtime				__kernel_next_subtime
+#define _last_index					__kernel_last_index
+#define _initialize_tmevt			__kernel_initialize_tmevt
+#define _tmevt_up					__kernel_tmevt_up
+#define _tmevt_down					__kernel_tmevt_down
+#define _tmevtb_insert				__kernel_tmevtb_insert
+#define _tmevtb_delete				__kernel_tmevtb_delete
+#define _tmevt_lefttim				__kernel_tmevt_lefttim
+#define _signal_time				__kernel_signal_time
+
+/*
+ *  semaphore.c
+ */
+#define _free_semcb					__kernel_free_semcb
+#define _initialize_semaphore		__kernel_initialize_semaphore
+
+/*
+ *  eventflag.c
+ */
+#define _free_flgcb					__kernel_free_flgcb
+#define _initialize_eventflag		__kernel_initialize_eventflag
+#define _check_flg_cond				__kernel_check_flg_cond
+
+/*
+ *  dataqueue.c
+ */
+#define _free_dtqcb					__kernel_free_dtqcb
+#define _initialize_dataqueue		__kernel_initialize_dataqueue
+#define _enqueue_data				__kernel_enqueue_data
+#define _force_enqueue_data			__kernel_force_enqueue_data
+#define _dequeue_data				__kernel_dequeue_data
+#define _send_data					__kernel_send_data
+#define _force_send_data			__kernel_force_send_data
+#define _receive_data				__kernel_receive_data
+
+/*
+ *  pridataq.c
+ */
+#define _free_pdqcb					__kernel_free_pdqcb
+#define _initialize_pridataq		__kernel_initialize_pridataq
+#define _enqueue_pridata			__kernel_enqueue_pridata
+#define _dequeue_pridata			__kernel_dequeue_pridata
+#define _send_pridata				__kernel_send_pridata
+#define _receive_pridata			__kernel_receive_pridata
+
+/*
+ *  mailbox.c
+ */
+#define _free_mbxcb					__kernel_free_mbxcb
+#define _initialize_mailbox			__kernel_initialize_mailbox
+
+/*
+ *  mempfix.c
+ */
+#define _free_mpfcb					__kernel_free_mpfcb
+#define _initialize_mempfix			__kernel_initialize_mempfix
+#define _get_mpf_block				__kernel_get_mpf_block
+
+/*
+ *  cyclic.c
+ */
+#define _free_cyccb					__kernel_free_cyccb
+#define _initialize_cyclic			__kernel_initialize_cyclic
+#define _call_cychdr				__kernel_call_cychdr
+
+/*
+ *  alarm.c
+ */
+#define _free_almcb					__kernel_free_almcb
+#define _initialize_alarm			__kernel_initialize_alarm
+#define _call_almhdr				__kernel_call_almhdr
+
+/*
+ *  interrupt.c
+ */
+#define _free_isrcb					__kernel_free_isrcb
+#define _initialize_isr				__kernel_initialize_isr
+#define _inthdr_call_isr			__kernel_inthdr_call_isr
+#define _initialize_interrupt		__kernel_initialize_interrupt
+
+/*
+ *  exception.c
+ */
+#define _initialize_exception		__kernel_initialize_exception
+
+/*
+ *  kernel_cfg.c
+ */
+#define _initialize_object			__kernel_initialize_object
+#define _call_inirtn				__kernel_call_inirtn
+#define _call_terrtn				__kernel_call_terrtn
+#define _tmax_tskid					__kernel_tmax_tskid
+#define _tmax_stskid				__kernel_tmax_stskid
+#define _tinib_table				__kernel_tinib_table
+#define _atinib_table				__kernel_atinib_table
+#define _tcb_table					__kernel_tcb_table
+#define _torder_table				__kernel_torder_table
+#define _tmax_semid					__kernel_tmax_semid
+#define _tmax_ssemid				__kernel_tmax_ssemid
+#define _seminib_table				__kernel_seminib_table
+#define _aseminib_table				__kernel_aseminib_table
+#define _semcb_table				__kernel_semcb_table
+#define _tmax_flgid					__kernel_tmax_flgid
+#define _tmax_sflgid				__kernel_tmax_sflgid
+#define _flginib_table				__kernel_flginib_table
+#define _aflginib_table				__kernel_aflginib_table
+#define _flgcb_table				__kernel_flgcb_table
+#define _tmax_dtqid					__kernel_tmax_dtqid
+#define _tmax_adtqid				__kernel_tmax_adtqid
+#define _dtqinib_table				__kernel_dtqinib_table
+#define _sdtqinib_table				__kernel_sdtqinib_table
+#define _dtqcb_table				__kernel_dtqcb_table
+#define _tmax_pdqid					__kernel_tmax_pdqid
+#define _tmax_apdqid				__kernel_tmax_apdqid
+#define _pdqinib_table				__kernel_pdqinib_table
+#define _apdqinib_table				__kernel_apdqinib_table
+#define _pdqcb_table				__kernel_pdqcb_table
+#define _tmax_mbxid					__kernel_tmax_mbxid
+#define _tmax_smbxid				__kernel_tmax_smbxid
+#define _mbxinib_table				__kernel_mbxinib_table
+#define _ambxinib_table				__kernel_ambxinib_table
+#define _mbxcb_table				__kernel_mbxcb_table
+#define _tmax_mpfid					__kernel_tmax_mpfid
+#define _tmax_smpfid				__kernel_tmax_smpfid
+#define _mpfinib_table				__kernel_mpfinib_table
+#define _ampfinib_table				__kernel_ampfinib_table
+#define _mpfcb_table				__kernel_mpfcb_table
+#define _tmax_cycid					__kernel_tmax_cycid
+#define _tmax_scycid				__kernel_tmax_scycid
+#define _cycinib_table				__kernel_cycinib_table
+#define _acycinib_table				__kernel_acycinib_table
+#define _cyccb_table				__kernel_cyccb_table
+#define _tmax_almid					__kernel_tmax_almid
+#define _tmax_salmid				__kernel_tmax_salmid
+#define _alminib_table				__kernel_alminib_table
+#define _aalminib_table				__kernel_aalminib_table
+#define _almcb_table				__kernel_almcb_table
+#define _tnum_isr_queue				__kernel_tnum_isr_queue
+#define _isr_queue_table			__kernel_isr_queue_table
+#define _isr_queue_list				__kernel_isr_queue_list
+#define _tmax_isrid					__kernel_tmax_isrid
+#define _tnum_sisr					__kernel_tnum_sisr
+#define _sisrinib_table				__kernel_sisrinib_table
+#define _aisrinib_table				__kernel_aisrinib_table
+#define _isrcb_table				__kernel_isrcb_table
+#define _tnum_inhno					__kernel_tnum_inhno
+#define _inhinib_table				__kernel_inhinib_table
+#define _tnum_intno					__kernel_tnum_intno
+#define _intinib_table				__kernel_intinib_table
+#define _tnum_excno					__kernel_tnum_excno
+#define _excinib_table				__kernel_excinib_table
+#define _tmevt_heap					__kernel_tmevt_heap
+#define _istksz						__kernel_istksz
+#define _istk						__kernel_istk
+#define _istkpt						__kernel_istkpt
+#define _kmmsz						__kernel_kmmsz
+#define _kmm						__kernel_kmm
+
+
+#endif /* TOPPERS_LABEL_ASM */
+
+#include "target_rename.h"
+
+#endif /* TOPPERS_KERNEL_RENAME_H */
Index: /asp_ewarm/asp-1.7.0/extension/dcre/kernel/kernel_unrename.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/dcre/kernel/kernel_unrename.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/dcre/kernel/kernel_unrename.h	(revision 61)
@@ -0,0 +1,431 @@
+/* This file is generated from kernel_rename.def by genrename. */
+
+/* This file is included only when kernel_rename.h has been included. */
+#ifdef TOPPERS_KERNEL_RENAME_H
+#undef TOPPERS_KERNEL_RENAME_H
+
+/*
+ *  startup.c
+ */
+#undef kerflg
+#undef exit_kernel
+#undef initialize_kmm
+#undef kernel_malloc
+#undef kernel_free
+
+/*
+ *  task.c
+ */
+#undef p_runtsk
+#undef p_schedtsk
+#undef reqflg
+#undef ipmflg
+#undef disdsp
+#undef dspflg
+#undef ready_queue
+#undef ready_primap
+#undef free_tcb
+#undef initialize_task
+#undef search_schedtsk
+#undef make_runnable
+#undef make_non_runnable
+#undef make_dormant
+#undef make_active
+#undef change_priority
+#undef rotate_ready_queue
+#undef call_texrtn
+#undef calltex
+
+/*
+ *  wait.c
+ */
+#undef make_wait_tmout
+#undef wait_complete
+#undef wait_tmout
+#undef wait_tmout_ok
+#undef wait_release
+#undef wobj_make_wait
+#undef wobj_make_wait_tmout
+#undef init_wait_queue
+
+/*
+ *  time_event.c
+ */
+#undef current_time
+#undef min_time
+#undef next_time
+#undef next_subtime
+#undef last_index
+#undef initialize_tmevt
+#undef tmevt_up
+#undef tmevt_down
+#undef tmevtb_insert
+#undef tmevtb_delete
+#undef tmevt_lefttim
+#undef signal_time
+
+/*
+ *  semaphore.c
+ */
+#undef free_semcb
+#undef initialize_semaphore
+
+/*
+ *  eventflag.c
+ */
+#undef free_flgcb
+#undef initialize_eventflag
+#undef check_flg_cond
+
+/*
+ *  dataqueue.c
+ */
+#undef free_dtqcb
+#undef initialize_dataqueue
+#undef enqueue_data
+#undef force_enqueue_data
+#undef dequeue_data
+#undef send_data
+#undef force_send_data
+#undef receive_data
+
+/*
+ *  pridataq.c
+ */
+#undef free_pdqcb
+#undef initialize_pridataq
+#undef enqueue_pridata
+#undef dequeue_pridata
+#undef send_pridata
+#undef receive_pridata
+
+/*
+ *  mailbox.c
+ */
+#undef free_mbxcb
+#undef initialize_mailbox
+
+/*
+ *  mempfix.c
+ */
+#undef free_mpfcb
+#undef initialize_mempfix
+#undef get_mpf_block
+
+/*
+ *  cyclic.c
+ */
+#undef free_cyccb
+#undef initialize_cyclic
+#undef call_cychdr
+
+/*
+ *  alarm.c
+ */
+#undef free_almcb
+#undef initialize_alarm
+#undef call_almhdr
+
+/*
+ *  interrupt.c
+ */
+#undef free_isrcb
+#undef initialize_isr
+#undef inthdr_call_isr
+#undef initialize_interrupt
+
+/*
+ *  exception.c
+ */
+#undef initialize_exception
+
+/*
+ *  kernel_cfg.c
+ */
+#undef initialize_object
+#undef call_inirtn
+#undef call_terrtn
+#undef tmax_tskid
+#undef tmax_stskid
+#undef tinib_table
+#undef atinib_table
+#undef tcb_table
+#undef torder_table
+#undef tmax_semid
+#undef tmax_ssemid
+#undef seminib_table
+#undef aseminib_table
+#undef semcb_table
+#undef tmax_flgid
+#undef tmax_sflgid
+#undef flginib_table
+#undef aflginib_table
+#undef flgcb_table
+#undef tmax_dtqid
+#undef tmax_adtqid
+#undef dtqinib_table
+#undef sdtqinib_table
+#undef dtqcb_table
+#undef tmax_pdqid
+#undef tmax_apdqid
+#undef pdqinib_table
+#undef apdqinib_table
+#undef pdqcb_table
+#undef tmax_mbxid
+#undef tmax_smbxid
+#undef mbxinib_table
+#undef ambxinib_table
+#undef mbxcb_table
+#undef tmax_mpfid
+#undef tmax_smpfid
+#undef mpfinib_table
+#undef ampfinib_table
+#undef mpfcb_table
+#undef tmax_cycid
+#undef tmax_scycid
+#undef cycinib_table
+#undef acycinib_table
+#undef cyccb_table
+#undef tmax_almid
+#undef tmax_salmid
+#undef alminib_table
+#undef aalminib_table
+#undef almcb_table
+#undef tnum_isr_queue
+#undef isr_queue_table
+#undef isr_queue_list
+#undef tmax_isrid
+#undef tnum_sisr
+#undef sisrinib_table
+#undef aisrinib_table
+#undef isrcb_table
+#undef tnum_inhno
+#undef inhinib_table
+#undef tnum_intno
+#undef intinib_table
+#undef tnum_excno
+#undef excinib_table
+#undef tmevt_heap
+#undef istksz
+#undef istk
+#undef istkpt
+#undef kmmsz
+#undef kmm
+
+
+#ifdef TOPPERS_LABEL_ASM
+
+/*
+ *  startup.c
+ */
+#undef _kerflg
+#undef _exit_kernel
+#undef _initialize_kmm
+#undef _kernel_malloc
+#undef _kernel_free
+
+/*
+ *  task.c
+ */
+#undef _p_runtsk
+#undef _p_schedtsk
+#undef _reqflg
+#undef _ipmflg
+#undef _disdsp
+#undef _dspflg
+#undef _ready_queue
+#undef _ready_primap
+#undef _free_tcb
+#undef _initialize_task
+#undef _search_schedtsk
+#undef _make_runnable
+#undef _make_non_runnable
+#undef _make_dormant
+#undef _make_active
+#undef _change_priority
+#undef _rotate_ready_queue
+#undef _call_texrtn
+#undef _calltex
+
+/*
+ *  wait.c
+ */
+#undef _make_wait_tmout
+#undef _wait_complete
+#undef _wait_tmout
+#undef _wait_tmout_ok
+#undef _wait_release
+#undef _wobj_make_wait
+#undef _wobj_make_wait_tmout
+#undef _init_wait_queue
+
+/*
+ *  time_event.c
+ */
+#undef _current_time
+#undef _min_time
+#undef _next_time
+#undef _next_subtime
+#undef _last_index
+#undef _initialize_tmevt
+#undef _tmevt_up
+#undef _tmevt_down
+#undef _tmevtb_insert
+#undef _tmevtb_delete
+#undef _tmevt_lefttim
+#undef _signal_time
+
+/*
+ *  semaphore.c
+ */
+#undef _free_semcb
+#undef _initialize_semaphore
+
+/*
+ *  eventflag.c
+ */
+#undef _free_flgcb
+#undef _initialize_eventflag
+#undef _check_flg_cond
+
+/*
+ *  dataqueue.c
+ */
+#undef _free_dtqcb
+#undef _initialize_dataqueue
+#undef _enqueue_data
+#undef _force_enqueue_data
+#undef _dequeue_data
+#undef _send_data
+#undef _force_send_data
+#undef _receive_data
+
+/*
+ *  pridataq.c
+ */
+#undef _free_pdqcb
+#undef _initialize_pridataq
+#undef _enqueue_pridata
+#undef _dequeue_pridata
+#undef _send_pridata
+#undef _receive_pridata
+
+/*
+ *  mailbox.c
+ */
+#undef _free_mbxcb
+#undef _initialize_mailbox
+
+/*
+ *  mempfix.c
+ */
+#undef _free_mpfcb
+#undef _initialize_mempfix
+#undef _get_mpf_block
+
+/*
+ *  cyclic.c
+ */
+#undef _free_cyccb
+#undef _initialize_cyclic
+#undef _call_cychdr
+
+/*
+ *  alarm.c
+ */
+#undef _free_almcb
+#undef _initialize_alarm
+#undef _call_almhdr
+
+/*
+ *  interrupt.c
+ */
+#undef _free_isrcb
+#undef _initialize_isr
+#undef _inthdr_call_isr
+#undef _initialize_interrupt
+
+/*
+ *  exception.c
+ */
+#undef _initialize_exception
+
+/*
+ *  kernel_cfg.c
+ */
+#undef _initialize_object
+#undef _call_inirtn
+#undef _call_terrtn
+#undef _tmax_tskid
+#undef _tmax_stskid
+#undef _tinib_table
+#undef _atinib_table
+#undef _tcb_table
+#undef _torder_table
+#undef _tmax_semid
+#undef _tmax_ssemid
+#undef _seminib_table
+#undef _aseminib_table
+#undef _semcb_table
+#undef _tmax_flgid
+#undef _tmax_sflgid
+#undef _flginib_table
+#undef _aflginib_table
+#undef _flgcb_table
+#undef _tmax_dtqid
+#undef _tmax_adtqid
+#undef _dtqinib_table
+#undef _sdtqinib_table
+#undef _dtqcb_table
+#undef _tmax_pdqid
+#undef _tmax_apdqid
+#undef _pdqinib_table
+#undef _apdqinib_table
+#undef _pdqcb_table
+#undef _tmax_mbxid
+#undef _tmax_smbxid
+#undef _mbxinib_table
+#undef _ambxinib_table
+#undef _mbxcb_table
+#undef _tmax_mpfid
+#undef _tmax_smpfid
+#undef _mpfinib_table
+#undef _ampfinib_table
+#undef _mpfcb_table
+#undef _tmax_cycid
+#undef _tmax_scycid
+#undef _cycinib_table
+#undef _acycinib_table
+#undef _cyccb_table
+#undef _tmax_almid
+#undef _tmax_salmid
+#undef _alminib_table
+#undef _aalminib_table
+#undef _almcb_table
+#undef _tnum_isr_queue
+#undef _isr_queue_table
+#undef _isr_queue_list
+#undef _tmax_isrid
+#undef _tnum_sisr
+#undef _sisrinib_table
+#undef _aisrinib_table
+#undef _isrcb_table
+#undef _tnum_inhno
+#undef _inhinib_table
+#undef _tnum_intno
+#undef _intinib_table
+#undef _tnum_excno
+#undef _excinib_table
+#undef _tmevt_heap
+#undef _istksz
+#undef _istk
+#undef _istkpt
+#undef _kmmsz
+#undef _kmm
+
+
+#endif /* TOPPERS_LABEL_ASM */
+
+#include "target_unrename.h"
+
+#endif /* TOPPERS_KERNEL_RENAME_H */
Index: /asp_ewarm/asp-1.7.0/extension/dcre/kernel/mailbox.c
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/dcre/kernel/mailbox.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/dcre/kernel/mailbox.c	(revision 61)
@@ -0,0 +1,535 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: mailbox.c 1970 2010-11-20 11:27:06Z ertl-hiro $
+ */
+
+/*
+ *		[{bNX@\
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+#include "mailbox.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_ACRE_MBX_ENTER
+#define LOG_ACRE_MBX_ENTER(pk_cmbx)
+#endif /* LOG_ACRE_MBX_ENTER */
+
+#ifndef LOG_ACRE_MBX_LEAVE
+#define LOG_ACRE_MBX_LEAVE(ercd)
+#endif /* LOG_ACRE_MBX_LEAVE */
+
+#ifndef LOG_DEL_MBX_ENTER
+#define LOG_DEL_MBX_ENTER(mbxid)
+#endif /* LOG_DEL_MBX_ENTER */
+
+#ifndef LOG_DEL_MBX_LEAVE
+#define LOG_DEL_MBX_LEAVE(ercd)
+#endif /* LOG_DEL_MBX_LEAVE */
+
+#ifndef LOG_SND_MBX_ENTER
+#define LOG_SND_MBX_ENTER(mbxid, pk_msg)
+#endif /* LOG_SND_MBX_ENTER */
+
+#ifndef LOG_SND_MBX_LEAVE
+#define LOG_SND_MBX_LEAVE(ercd)
+#endif /* LOG_SND_MBX_LEAVE */
+
+#ifndef LOG_RCV_MBX_ENTER
+#define LOG_RCV_MBX_ENTER(mbxid, ppk_msg)
+#endif /* LOG_RCV_MBX_ENTER */
+
+#ifndef LOG_RCV_MBX_LEAVE
+#define LOG_RCV_MBX_LEAVE(ercd, pk_msg)
+#endif /* LOG_RCV_MBX_LEAVE */
+
+#ifndef LOG_PRCV_MBX_ENTER
+#define LOG_PRCV_MBX_ENTER(mbxid, ppk_msg)
+#endif /* LOG_PRCV_MBX_ENTER */
+
+#ifndef LOG_PRCV_MBX_LEAVE
+#define LOG_PRCV_MBX_LEAVE(ercd, pk_msg)
+#endif /* LOG_PRCV_MBX_LEAVE */
+
+#ifndef LOG_TRCV_MBX_ENTER
+#define LOG_TRCV_MBX_ENTER(mbxid, ppk_msg, tmout)
+#endif /* LOG_TRCV_MBX_ENTER */
+
+#ifndef LOG_TRCV_MBX_LEAVE
+#define LOG_TRCV_MBX_LEAVE(ercd, pk_msg)
+#endif /* LOG_TRCV_MBX_LEAVE */
+
+#ifndef LOG_INI_MBX_ENTER
+#define LOG_INI_MBX_ENTER(mbxid)
+#endif /* LOG_INI_MBX_ENTER */
+
+#ifndef LOG_INI_MBX_LEAVE
+#define LOG_INI_MBX_LEAVE(ercd)
+#endif /* LOG_INI_MBX_LEAVE */
+
+#ifndef LOG_REF_MBX_ENTER
+#define LOG_REF_MBX_ENTER(mbxid, pk_rmbx)
+#endif /* LOG_REF_MBX_ENTER */
+
+#ifndef LOG_REF_MBX_LEAVE
+#define LOG_REF_MBX_LEAVE(ercd, pk_rmbx)
+#endif /* LOG_REF_MBX_LEAVE */
+
+/*
+ *  [{bNXÌ
+ */
+#define tnum_mbx	((uint_t)(tmax_mbxid - TMIN_MBXID + 1))
+#define tnum_smbx	((uint_t)(tmax_smbxid - TMIN_MBXID + 1))
+
+/*
+ *  [{bNXID©ç[{bNXÇubNðæèo·½ßÌ}N
+ */
+#define INDEX_MBX(mbxid)	((uint_t)((mbxid) - TMIN_MBXID))
+#define get_mbxcb(mbxid)	(&(mbxcb_table[INDEX_MBX(mbxid)]))
+
+#ifdef TOPPERS_mbxini
+
+/*
+ *  gpµÄ¢È¢[{bNXÇubNÌXg
+ */
+QUEUE	free_mbxcb;
+
+/* 
+ *  [{bNX@\Ìú»
+ */
+void
+initialize_mailbox(void)
+{
+	uint_t	i, j;
+	MBXCB	*p_mbxcb;
+	MBXINIB	*p_mbxinib;
+
+	for (p_mbxcb = mbxcb_table, i = 0; i < tnum_smbx; p_mbxcb++, i++) {
+		queue_initialize(&(p_mbxcb->wait_queue));
+		p_mbxcb->p_mbxinib = &(mbxinib_table[i]);
+		p_mbxcb->pk_head = NULL;
+	}
+	queue_initialize(&free_mbxcb);
+	for (j = 0; i < tnum_mbx; p_mbxcb++, i++, j++) {
+		p_mbxinib = &(ambxinib_table[j]);
+		p_mbxinib->mbxatr = TA_NOEXS;
+		p_mbxcb->p_mbxinib = ((const MBXINIB *) p_mbxinib);
+		queue_insert_prev(&free_mbxcb, &(p_mbxcb->wait_queue));
+	}
+}
+
+#endif /* TOPPERS_mbxini */
+
+/*
+ *  bZ[WDæxÌæoµ
+ */
+#define	MSGPRI(pk_msg)	(((T_MSG_PRI *) pk_msg)->msgpri)
+
+/*
+ *  DæxbZ[WL
+[ÖÌ}ü
+ */
+Inline void
+enqueue_msg_pri(T_MSG **ppk_prevmsg_next, T_MSG *pk_msg)
+{
+	T_MSG	*pk_nextmsg;
+
+	while ((pk_nextmsg = *ppk_prevmsg_next) != NULL) {
+		if (MSGPRI(pk_nextmsg) > MSGPRI(pk_msg)) {
+			break;
+		}
+		ppk_prevmsg_next = &(pk_nextmsg->pk_next);
+	}
+	pk_msg->pk_next = pk_nextmsg;
+	*ppk_prevmsg_next = pk_msg;
+}
+
+/*
+ *  [{bNXÌ¶¬
+ */
+#ifdef TOPPERS_acre_mbx
+
+ER_UINT
+acre_mbx(const T_CMBX *pk_cmbx)
+{
+	MBXCB	*p_mbxcb;
+	MBXINIB	*p_mbxinib;
+	ER		ercd;
+
+	LOG_ACRE_MBX_ENTER(pk_cmbx);
+	CHECK_TSKCTX_UNL();
+	CHECK_RSATR(pk_cmbx->mbxatr, TA_TPRI|TA_MPRI);
+	CHECK_MPRI(pk_cmbx->maxmpri);
+	CHECK_NOSPT(pk_cmbx->mprihd == NULL);
+
+	t_lock_cpu();
+	if (queue_empty(&free_mbxcb)) {
+		ercd = E_NOID;
+	}
+	else {
+		p_mbxcb = ((MBXCB *) queue_delete_next(&free_mbxcb));
+		p_mbxinib = (MBXINIB *)(p_mbxcb->p_mbxinib);
+		p_mbxinib->mbxatr = pk_cmbx->mbxatr;
+		p_mbxinib->maxmpri = pk_cmbx->maxmpri;
+
+		queue_initialize(&(p_mbxcb->wait_queue));
+		p_mbxcb->pk_head = NULL;
+		ercd = MBXID(p_mbxcb);
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_ACRE_MBX_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_acre_mbx */
+
+/*
+ *  [{bNXÌí
+ */
+#ifdef TOPPERS_del_mbx
+
+ER
+del_mbx(ID mbxid)
+{
+	MBXCB	*p_mbxcb;
+	MBXINIB	*p_mbxinib;
+	bool_t	dspreq;
+	ER		ercd;
+
+	LOG_DEL_MBX_ENTER(mbxid);
+	CHECK_TSKCTX_UNL();
+	CHECK_MBXID(mbxid);
+	p_mbxcb = get_mbxcb(mbxid);
+
+	t_lock_cpu();
+	if (p_mbxcb->p_mbxinib->mbxatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (MBXID(p_mbxcb) > tmax_smbxid) {
+		dspreq = init_wait_queue(&(p_mbxcb->wait_queue));
+		p_mbxinib = (MBXINIB *)(p_mbxcb->p_mbxinib);
+		p_mbxinib->mbxatr = TA_NOEXS;
+		queue_insert_prev(&free_mbxcb, &(p_mbxcb->wait_queue));
+		if (dspreq) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_OBJ;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_DEL_MBX_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_del_mbx */
+
+/*
+ *  [{bNXÖÌM
+ */
+#ifdef TOPPERS_snd_mbx
+
+ER
+snd_mbx(ID mbxid, T_MSG *pk_msg)
+{
+	MBXCB	*p_mbxcb;
+	TCB		*p_tcb;
+	ER		ercd;
+    
+	LOG_SND_MBX_ENTER(mbxid, pk_msg);
+	CHECK_TSKCTX_UNL();
+	CHECK_MBXID(mbxid);
+	p_mbxcb = get_mbxcb(mbxid);
+	CHECK_PAR((p_mbxcb->p_mbxinib->mbxatr & TA_MPRI) == 0U
+				|| (TMIN_MPRI <= MSGPRI(pk_msg)
+					&& MSGPRI(pk_msg) <= p_mbxcb->p_mbxinib->maxmpri));
+
+	t_lock_cpu();
+	if (p_mbxcb->p_mbxinib->mbxatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (!queue_empty(&(p_mbxcb->wait_queue))) {
+		p_tcb = (TCB *) queue_delete_next(&(p_mbxcb->wait_queue));
+		((WINFO_MBX *)(p_tcb->p_winfo))->pk_msg = pk_msg;
+		if (wait_complete(p_tcb)) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else if ((p_mbxcb->p_mbxinib->mbxatr & TA_MPRI) != 0U) {
+		enqueue_msg_pri(&(p_mbxcb->pk_head), pk_msg);
+		ercd = E_OK;
+	}
+	else {
+		pk_msg->pk_next = NULL;
+		if (p_mbxcb->pk_head != NULL) {
+			p_mbxcb->pk_last->pk_next = pk_msg;
+		}
+		else {
+			p_mbxcb->pk_head = pk_msg;
+		}
+		p_mbxcb->pk_last = pk_msg;
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_SND_MBX_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_snd_mbx */
+
+/*
+ *  [{bNX©çÌóM
+ */
+#ifdef TOPPERS_rcv_mbx
+
+ER
+rcv_mbx(ID mbxid, T_MSG **ppk_msg)
+{
+	MBXCB	*p_mbxcb;
+	WINFO_MBX winfo_mbx;
+	ER		ercd;
+    
+	LOG_RCV_MBX_ENTER(mbxid, ppk_msg);
+	CHECK_DISPATCH();
+	CHECK_MBXID(mbxid);
+	p_mbxcb = get_mbxcb(mbxid);
+    
+	t_lock_cpu();
+	if (p_mbxcb->p_mbxinib->mbxatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (p_mbxcb->pk_head != NULL) {
+		*ppk_msg = p_mbxcb->pk_head;
+		p_mbxcb->pk_head = (*ppk_msg)->pk_next;
+		ercd = E_OK;
+	}
+	else {
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_MBX);
+		wobj_make_wait((WOBJCB *) p_mbxcb, (WINFO_WOBJ *) &winfo_mbx);
+		dispatch();
+		ercd = winfo_mbx.winfo.wercd;
+		if (ercd == E_OK) {
+			*ppk_msg = winfo_mbx.pk_msg;
+		}
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_RCV_MBX_LEAVE(ercd, *ppk_msg);
+	return(ercd);
+}
+
+#endif /* TOPPERS_rcv_mbx */
+
+/*
+ *  [{bNX©çÌóMi|[Oj
+ */
+#ifdef TOPPERS_prcv_mbx
+
+ER
+prcv_mbx(ID mbxid, T_MSG **ppk_msg)
+{
+	MBXCB	*p_mbxcb;
+	ER		ercd;
+    
+	LOG_PRCV_MBX_ENTER(mbxid, ppk_msg);
+	CHECK_TSKCTX_UNL();
+	CHECK_MBXID(mbxid);
+	p_mbxcb = get_mbxcb(mbxid);
+    
+	t_lock_cpu();
+	if (p_mbxcb->p_mbxinib->mbxatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (p_mbxcb->pk_head != NULL) {
+		*ppk_msg = p_mbxcb->pk_head;
+		p_mbxcb->pk_head = (*ppk_msg)->pk_next;
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_TMOUT;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_PRCV_MBX_LEAVE(ercd, *ppk_msg);
+	return(ercd);
+}
+
+#endif /* TOPPERS_prcv_mbx */
+
+/*
+ *  [{bNX©çÌóMi^CAEg èj
+ */
+#ifdef TOPPERS_trcv_mbx
+
+ER
+trcv_mbx(ID mbxid, T_MSG **ppk_msg, TMO tmout)
+{
+	MBXCB	*p_mbxcb;
+	WINFO_MBX winfo_mbx;
+	TMEVTB	tmevtb;
+	ER		ercd;
+    
+	LOG_TRCV_MBX_ENTER(mbxid, ppk_msg, tmout);
+	CHECK_DISPATCH();
+	CHECK_MBXID(mbxid);
+	CHECK_TMOUT(tmout);
+	p_mbxcb = get_mbxcb(mbxid);
+    
+	t_lock_cpu();
+	if (p_mbxcb->p_mbxinib->mbxatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (p_mbxcb->pk_head != NULL) {
+		*ppk_msg = p_mbxcb->pk_head;
+		p_mbxcb->pk_head = (*ppk_msg)->pk_next;
+		ercd = E_OK;
+	}
+	else if (tmout == TMO_POL) {
+		ercd = E_TMOUT;
+	}
+	else {
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_MBX);
+		wobj_make_wait_tmout((WOBJCB *) p_mbxcb, (WINFO_WOBJ *) &winfo_mbx,
+														&tmevtb, tmout);
+		dispatch();
+		ercd = winfo_mbx.winfo.wercd;
+		if (ercd == E_OK) {
+			*ppk_msg = winfo_mbx.pk_msg;
+		}
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_TRCV_MBX_LEAVE(ercd, *ppk_msg);
+	return(ercd);
+}
+
+#endif /* TOPPERS_trcv_mbx */
+
+/*
+ *  [{bNXÌÄú»
+ */
+#ifdef TOPPERS_ini_mbx
+
+ER
+ini_mbx(ID mbxid)
+{
+	MBXCB	*p_mbxcb;
+	bool_t	dspreq;
+	ER		ercd;
+    
+	LOG_INI_MBX_ENTER(mbxid);
+	CHECK_TSKCTX_UNL();
+	CHECK_MBXID(mbxid);
+	p_mbxcb = get_mbxcb(mbxid);
+
+	t_lock_cpu();
+	if (p_mbxcb->p_mbxinib->mbxatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else {
+		dspreq = init_wait_queue(&(p_mbxcb->wait_queue));
+		p_mbxcb->pk_head = NULL;
+		if (dspreq) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_INI_MBX_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ini_mbx */
+
+/*
+ *  [{bNXÌóÔQÆ
+ */
+#ifdef TOPPERS_ref_mbx
+
+ER
+ref_mbx(ID mbxid, T_RMBX *pk_rmbx)
+{
+	MBXCB	*p_mbxcb;
+	ER		ercd;
+    
+	LOG_REF_MBX_ENTER(mbxid, pk_rmbx);
+	CHECK_TSKCTX_UNL();
+	CHECK_MBXID(mbxid);
+	p_mbxcb = get_mbxcb(mbxid);
+
+	t_lock_cpu();
+	if (p_mbxcb->p_mbxinib->mbxatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else {
+		pk_rmbx->wtskid = wait_tskid(&(p_mbxcb->wait_queue));
+		pk_rmbx->pk_msg = p_mbxcb->pk_head;
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_REF_MBX_LEAVE(ercd, pk_rmbx);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ref_mbx */
Index: /asp_ewarm/asp-1.7.0/extension/dcre/kernel/mailbox.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/dcre/kernel/mailbox.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/dcre/kernel/mailbox.h	(revision 61)
@@ -0,0 +1,134 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2000 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: mailbox.h 1966 2010-11-20 07:23:56Z ertl-hiro $
+ */
+
+/*
+ *		[{bNX@\
+ */
+
+#ifndef TOPPERS_MAILBOX_H
+#define TOPPERS_MAILBOX_H
+
+#include <queue.h>
+
+/*
+ *  [{bNXú»ubN
+ *
+ *  ±Ì\¢ÌÍC¯úEÊMIuWFNgÌú»ubNÌ¤Êª
+ *  iWOBJINIBjðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅC
+ *  ÅÌtB[hª¤ÊÉÈÁÄ¢éD
+ */
+typedef struct mailbox_initialization_block {
+	ATR			mbxatr;			/* [{bNX®« */
+	PRI			maxmpri;		/* bZ[WDæxÌÅål */
+} MBXINIB;
+
+/*
+ *  [{bNXÇubN
+ *
+ *  ±Ì\¢ÌÍC¯úEÊMIuWFNgÌÇubNÌ¤ÊªiWOBJCBj
+ *  ðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅCÅÌ2ÂÌ
+ *  tB[hª¤ÊÉÈÁÄ¢éD
+ *
+ *  bZ[WL
+[ªbZ[WÌDæxÌêÉÍCpk_lastÍgíÈ
+ *  ¢DÜ½CbZ[WL
+[ªóÌêipk_headªNULLÌêjÉàC
+ *  pk_lastÍ³øÅ éD
+ */
+typedef struct mailbox_control_block {
+	QUEUE		wait_queue;		/* [{bNXÒ¿L
+[ */
+	const MBXINIB *p_mbxinib;	/* ú»ubNÖÌ|C^ */
+	T_MSG		*pk_head;		/* æªÌbZ[W */
+	T_MSG		*pk_last;		/* öÌbZ[W */
+} MBXCB;
+
+/*
+ *  [{bNXÒ¿îñubNÌè`
+ *
+ *  ±Ì\¢ÌÍC¯úEÊMIuWFNgÌÒ¿îñubNÌ¤Êª
+ *  iWINFO_WOBJjðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅC
+ *  ÅÌ2ÂÌtB[hª¤ÊÉÈÁÄ¢éD
+ */
+typedef struct mailbox_waiting_information {
+	WINFO		winfo;			/* WÌÒ¿îñubN */
+	MBXCB		*p_mbxcb;		/* ÒÁÄ¢é[{bNXÌÇubN */
+	T_MSG		*pk_msg;		/* óMµ½bZ[W */
+} WINFO_MBX;
+
+/*
+ *  gpµÄ¢È¢[{bNXÇubNÌXg
+ */
+extern QUEUE	free_mbxcb;
+
+/*
+ *  [{bNXIDÌÅålikernel_cfg.cj
+ */
+extern const ID	tmax_mbxid;
+extern const ID	tmax_smbxid;
+
+/*
+ *  [{bNXú»ubNÌGAikernel_cfg.cj
+ */
+extern const MBXINIB	mbxinib_table[];
+extern MBXINIB			ambxinib_table[];
+
+/*
+ *  [{bNXÇubNÌGAikernel_cfg.cj
+ */
+extern MBXCB	mbxcb_table[];
+
+/*
+ *  [{bNXÇubN©ç[{bNXIDðæèo·½ßÌ}N
+ */
+#define	MBXID(p_mbxcb)	((ID)(((p_mbxcb) - mbxcb_table) + TMIN_MBXID))
+
+/*
+ *  [{bNX@\Ìú»
+ */
+extern void	initialize_mailbox(void);
+
+#endif /* TOPPERS_MAILBOX_H */
Index: /asp_ewarm/asp-1.7.0/extension/dcre/kernel/mempfix.c
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/dcre/kernel/mempfix.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/dcre/kernel/mempfix.c	(revision 61)
@@ -0,0 +1,559 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: mempfix.c 1966 2010-11-20 07:23:56Z ertl-hiro $
+ */
+
+/*
+ *		Åè·v[@\
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+#include "mempfix.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_ACRE_MPF_ENTER
+#define LOG_ACRE_MPF_ENTER(pk_cmpf)
+#endif /* LOG_ACRE_MPF_ENTER */
+
+#ifndef LOG_ACRE_MPF_LEAVE
+#define LOG_ACRE_MPF_LEAVE(ercd)
+#endif /* LOG_ACRE_MPF_LEAVE */
+
+#ifndef LOG_DEL_MPF_ENTER
+#define LOG_DEL_MPF_ENTER(mpfid)
+#endif /* LOG_DEL_MPF_ENTER */
+
+#ifndef LOG_DEL_MPF_LEAVE
+#define LOG_DEL_MPF_LEAVE(ercd)
+#endif /* LOG_DEL_MPF_LEAVE */
+
+#ifndef LOG_GET_MPF_ENTER
+#define LOG_GET_MPF_ENTER(mpfid, p_blk)
+#endif /* LOG_GET_MPF_ENTER */
+
+#ifndef LOG_GET_MPF_LEAVE
+#define LOG_GET_MPF_LEAVE(ercd, blk)
+#endif /* LOG_GET_MPF_LEAVE */
+
+#ifndef LOG_PGET_MPF_ENTER
+#define LOG_PGET_MPF_ENTER(mpfid, p_blk)
+#endif /* LOG_PGET_MPF_ENTER */
+
+#ifndef LOG_PGET_MPF_LEAVE
+#define LOG_PGET_MPF_LEAVE(ercd, blk)
+#endif /* LOG_PGET_MPF_LEAVE */
+
+#ifndef LOG_TGET_MPF_ENTER
+#define LOG_TGET_MPF_ENTER(mpfid, p_blk, tmout)
+#endif /* LOG_TGET_MPF_ENTER */
+
+#ifndef LOG_TGET_MPF_LEAVE
+#define LOG_TGET_MPF_LEAVE(ercd, blk)
+#endif /* LOG_TGET_MPF_LEAVE */
+
+#ifndef LOG_REL_MPF_ENTER
+#define LOG_REL_MPF_ENTER(mpfid, blk)
+#endif /* LOG_REL_MPF_ENTER */
+
+#ifndef LOG_REL_MPF_LEAVE
+#define LOG_REL_MPF_LEAVE(ercd)
+#endif /* LOG_REL_MPF_LEAVE */
+
+#ifndef LOG_INI_MPF_ENTER
+#define LOG_INI_MPF_ENTER(mpfid)
+#endif /* LOG_INI_MPF_ENTER */
+
+#ifndef LOG_INI_MPF_LEAVE
+#define LOG_INI_MPF_LEAVE(ercd)
+#endif /* LOG_INI_MPF_LEAVE */
+
+#ifndef LOG_REF_MPF_ENTER
+#define LOG_REF_MPF_ENTER(mpfid, pk_rmpf)
+#endif /* LOG_REF_MPF_ENTER */
+
+#ifndef LOG_REF_MPF_LEAVE
+#define LOG_REF_MPF_LEAVE(ercd, pk_rmpf)
+#endif /* LOG_REF_MPF_LEAVE */
+
+/*
+ *  Åè·v[Ì
+ */
+#define tnum_mpf	((uint_t)(tmax_mpfid - TMIN_MPFID + 1))
+#define tnum_smpf	((uint_t)(tmax_smpfid - TMIN_MPFID + 1))
+
+/*
+ *  Åè·v[ID©çÅè·v[ÇubNðæèo·½
+ *  ßÌ}N
+ */
+#define INDEX_MPF(mpfid)	((uint_t)((mpfid) - TMIN_MPFID))
+#define get_mpfcb(mpfid)	(&(mpfcb_table[INDEX_MPF(mpfid)]))
+
+/*
+ *  ÁêÈCfbNXlÌè`
+ */
+#define INDEX_NULL		(~0U)		/* ó«ubNXgÌÅã */
+#define INDEX_ALLOC		(~1U)		/* ÄÏÝÌubN */
+
+#ifdef TOPPERS_mpfini
+
+/*
+ *  gpµÄ¢È¢Åè·v[ÇubNÌXg
+ */
+QUEUE	free_mpfcb;
+
+/* 
+ *  Åè·v[@\Ìú»
+ */
+void
+initialize_mempfix(void)
+{
+	uint_t	i, j;
+	MPFCB	*p_mpfcb;
+	MPFINIB	*p_mpfinib;
+
+	for (p_mpfcb = mpfcb_table, i = 0; i < tnum_smpf; p_mpfcb++, i++) {
+		queue_initialize(&(p_mpfcb->wait_queue));
+		p_mpfcb->p_mpfinib = &(mpfinib_table[i]);
+		p_mpfcb->fblkcnt = p_mpfcb->p_mpfinib->blkcnt;
+		p_mpfcb->unused = 0U;
+		p_mpfcb->freelist = INDEX_NULL;
+	}
+	queue_initialize(&free_mpfcb);
+	for (j = 0; i < tnum_mpf; p_mpfcb++, i++, j++) {
+		p_mpfinib = &(ampfinib_table[j]);
+		p_mpfinib->mpfatr = TA_NOEXS;
+		p_mpfcb->p_mpfinib = ((const MPFINIB *) p_mpfinib);
+		queue_insert_prev(&free_mpfcb, &(p_mpfcb->wait_queue));
+	}
+}
+
+#endif /* TOPPERS_mpfini */
+
+/*
+ *  Åè·v[©çubNðl¾
+ */
+#ifdef TOPPERS_mpfget
+
+void
+get_mpf_block(MPFCB *p_mpfcb, void **p_blk)
+{
+	uint_t	blkidx;
+
+	if (p_mpfcb->freelist != INDEX_NULL) {
+		blkidx = p_mpfcb->freelist;
+		p_mpfcb->freelist = (p_mpfcb->p_mpfinib->p_mpfmb + blkidx)->next;
+	}
+	else {
+		blkidx = p_mpfcb->unused;
+		p_mpfcb->unused++;
+	}
+	*p_blk = (void *)((char *)(p_mpfcb->p_mpfinib->mpf)
+								+ p_mpfcb->p_mpfinib->blksz * blkidx);
+	p_mpfcb->fblkcnt--;
+	(p_mpfcb->p_mpfinib->p_mpfmb + blkidx)->next = INDEX_ALLOC;
+}
+
+#endif /* TOPPERS_mpfget */
+
+/*
+ *  Åè·v[Ì¶¬
+ */
+#ifdef TOPPERS_acre_mpf
+
+ER_UINT
+acre_mpf(const T_CMPF *pk_cmpf)
+{
+	MPFCB	*p_mpfcb;
+	MPFINIB	*p_mpfinib;
+	ATR		mpfatr;
+	void	*mpf;
+	MPFMB	*p_mpfmb;
+	ER		ercd;
+
+	LOG_ACRE_MPF_ENTER(pk_cmpf);
+	CHECK_TSKCTX_UNL();
+	CHECK_RSATR(pk_cmpf->mpfatr, TA_TPRI|TA_MPRI);
+	CHECK_PAR(pk_cmpf->blkcnt != 0);
+	CHECK_PAR(pk_cmpf->blksz != 0);
+	CHECK_ALIGN_MPF(pk_cmpf->mpf);
+	CHECK_ALIGN_MB(pk_cmpf->mpfmb);
+	mpfatr = pk_cmpf->mpfatr;
+	mpf = pk_cmpf->mpf;
+	p_mpfmb = pk_cmpf->mpfmb;
+
+	t_lock_cpu();
+	if (queue_empty(&free_mpfcb)) {
+		ercd = E_NOID;
+	}
+	else {
+		if (mpf == NULL) {
+			mpf = kernel_malloc(pk_cmpf->blkcnt * ROUND_MPF_T(pk_cmpf->blksz));
+			mpfatr |= TA_MEMALLOC;
+		}
+		if (mpf == NULL) {
+			ercd = E_NOMEM;
+		}
+		else {
+			if (p_mpfmb == NULL) {
+				p_mpfmb = kernel_malloc(sizeof(MPFMB) * pk_cmpf->blkcnt);
+				mpfatr |= TA_MBALLOC;
+			}
+			if (p_mpfmb == NULL) {
+				if ((mpfatr & TA_MEMALLOC) != 0U) {
+					kernel_free(mpf);
+				}
+				ercd = E_NOMEM;
+			}
+			else {
+				p_mpfcb = ((MPFCB *) queue_delete_next(&free_mpfcb));
+				p_mpfinib = (MPFINIB *)(p_mpfcb->p_mpfinib);
+				p_mpfinib->mpfatr = mpfatr;
+				p_mpfinib->blkcnt = pk_cmpf->blkcnt;
+				p_mpfinib->blksz = ROUND_MPF_T(pk_cmpf->blksz);
+				p_mpfinib->mpf = mpf;
+				p_mpfinib->p_mpfmb = p_mpfmb;
+
+				queue_initialize(&(p_mpfcb->wait_queue));
+				p_mpfcb->fblkcnt = p_mpfcb->p_mpfinib->blkcnt;
+				p_mpfcb->unused = 0U;
+				p_mpfcb->freelist = INDEX_NULL;
+				ercd = MPFID(p_mpfcb);
+			}
+		}
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_ACRE_MPF_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_acre_mpf */
+
+/*
+ *  Åè·v[Ìí
+ */
+#ifdef TOPPERS_del_mpf
+
+ER
+del_mpf(ID mpfid)
+{
+	MPFCB	*p_mpfcb;
+	MPFINIB	*p_mpfinib;
+	bool_t	dspreq;
+	ER		ercd;
+
+	LOG_DEL_MPF_ENTER(mpfid);
+	CHECK_TSKCTX_UNL();
+	CHECK_MPFID(mpfid);
+	p_mpfcb = get_mpfcb(mpfid);
+
+	t_lock_cpu();
+	if (p_mpfcb->p_mpfinib->mpfatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (MPFID(p_mpfcb) > tmax_smpfid) {
+		dspreq = init_wait_queue(&(p_mpfcb->wait_queue));
+		p_mpfinib = (MPFINIB *)(p_mpfcb->p_mpfinib);
+		if ((p_mpfinib->mpfatr & TA_MEMALLOC) != 0U) {
+			kernel_free(p_mpfinib->mpf);
+		}
+		if ((p_mpfinib->mpfatr & TA_MBALLOC) != 0U) {
+			kernel_free(p_mpfinib->p_mpfmb);
+		}
+		p_mpfinib->mpfatr = TA_NOEXS;
+		queue_insert_prev(&free_mpfcb, &(p_mpfcb->wait_queue));
+		if (dspreq) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_OBJ;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_DEL_MPF_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_del_mpf */
+
+/*
+ *  Åè·ubNÌl¾
+ */
+#ifdef TOPPERS_get_mpf
+
+ER
+get_mpf(ID mpfid, void **p_blk)
+{
+	MPFCB	*p_mpfcb;
+	WINFO_MPF winfo_mpf;
+	ER		ercd;
+
+	LOG_GET_MPF_ENTER(mpfid, p_blk);
+	CHECK_DISPATCH();
+	CHECK_MPFID(mpfid);
+	p_mpfcb = get_mpfcb(mpfid);
+
+	t_lock_cpu();
+	if (p_mpfcb->fblkcnt > 0) {
+		get_mpf_block(p_mpfcb, p_blk);
+		ercd = E_OK;
+	}
+	else {
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_MPF);
+		wobj_make_wait((WOBJCB *) p_mpfcb, (WINFO_WOBJ *) &winfo_mpf);
+		dispatch();
+		ercd = winfo_mpf.winfo.wercd;
+		if (ercd == E_OK) {
+			*p_blk = winfo_mpf.blk;
+		}
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_GET_MPF_LEAVE(ercd, *p_blk);
+	return(ercd);
+}
+
+#endif /* TOPPERS_get_mpf */
+
+/*
+ *  Åè·ubNÌl¾i|[Oj
+ */
+#ifdef TOPPERS_pget_mpf
+
+ER
+pget_mpf(ID mpfid, void **p_blk)
+{
+	MPFCB	*p_mpfcb;
+	ER		ercd;
+
+	LOG_PGET_MPF_ENTER(mpfid, p_blk);
+	CHECK_TSKCTX_UNL();
+	CHECK_MPFID(mpfid);
+	p_mpfcb = get_mpfcb(mpfid);
+
+	t_lock_cpu();
+	if (p_mpfcb->fblkcnt > 0) {
+		get_mpf_block(p_mpfcb, p_blk);
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_TMOUT;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_PGET_MPF_LEAVE(ercd, *p_blk);
+	return(ercd);
+}
+
+#endif /* TOPPERS_pget_mpf */
+
+/*
+ *  Åè·ubNÌl¾i^CAEg èj
+ */
+#ifdef TOPPERS_tget_mpf
+
+ER
+tget_mpf(ID mpfid, void **p_blk, TMO tmout)
+{
+	MPFCB	*p_mpfcb;
+	WINFO_MPF winfo_mpf;
+	TMEVTB	tmevtb;
+	ER		ercd;
+
+	LOG_TGET_MPF_ENTER(mpfid, p_blk, tmout);
+	CHECK_DISPATCH();
+	CHECK_MPFID(mpfid);
+	CHECK_TMOUT(tmout);
+	p_mpfcb = get_mpfcb(mpfid);
+
+	t_lock_cpu();
+	if (p_mpfcb->fblkcnt > 0) {
+		get_mpf_block(p_mpfcb, p_blk);
+		ercd = E_OK;
+	}
+	else if (tmout == TMO_POL) {
+		ercd = E_TMOUT;
+	}
+	else {
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_MPF);
+		wobj_make_wait_tmout((WOBJCB *) p_mpfcb, (WINFO_WOBJ *) &winfo_mpf,
+														&tmevtb, tmout);
+		dispatch();
+		ercd = winfo_mpf.winfo.wercd;
+		if (ercd == E_OK) {
+			*p_blk = winfo_mpf.blk;
+		}
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_TGET_MPF_LEAVE(ercd, *p_blk);
+	return(ercd);
+}
+
+#endif /* TOPPERS_tget_mpf */
+
+/*
+ *  Åè·ubNÌÔp
+ */
+#ifdef TOPPERS_rel_mpf
+
+ER
+rel_mpf(ID mpfid, void *blk)
+{
+	MPFCB	*p_mpfcb;
+	SIZE	blkoffset;
+	uint_t	blkidx;
+	TCB		*p_tcb;
+	ER		ercd;
+    
+	LOG_REL_MPF_ENTER(mpfid, blk);
+	CHECK_TSKCTX_UNL();
+	CHECK_MPFID(mpfid);
+	p_mpfcb = get_mpfcb(mpfid);
+	CHECK_PAR(p_mpfcb->p_mpfinib->mpf <= blk);
+	blkoffset = ((char *) blk) - (char *)(p_mpfcb->p_mpfinib->mpf);
+	CHECK_PAR(blkoffset % p_mpfcb->p_mpfinib->blksz == 0U);
+	CHECK_PAR(blkoffset / p_mpfcb->p_mpfinib->blksz < p_mpfcb->unused);
+	blkidx = (uint_t)(blkoffset / p_mpfcb->p_mpfinib->blksz);
+	CHECK_PAR((p_mpfcb->p_mpfinib->p_mpfmb + blkidx)->next == INDEX_ALLOC);
+
+	t_lock_cpu();
+	if (!queue_empty(&(p_mpfcb->wait_queue))) {
+		p_tcb = (TCB *) queue_delete_next(&(p_mpfcb->wait_queue));
+		((WINFO_MPF *)(p_tcb->p_winfo))->blk = blk;
+		if (wait_complete(p_tcb)) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else {
+		p_mpfcb->fblkcnt++;
+		(p_mpfcb->p_mpfinib->p_mpfmb + blkidx)->next = p_mpfcb->freelist;
+		p_mpfcb->freelist = blkidx;
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_REL_MPF_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_rel_mpf */
+
+/*
+ *  Åè·v[ÌÄú»
+ */
+#ifdef TOPPERS_ini_mpf
+
+ER
+ini_mpf(ID mpfid)
+{
+	MPFCB	*p_mpfcb;
+	bool_t	dspreq;
+	ER		ercd;
+    
+	LOG_INI_MPF_ENTER(mpfid);
+	CHECK_TSKCTX_UNL();
+	CHECK_MPFID(mpfid);
+	p_mpfcb = get_mpfcb(mpfid);
+
+	t_lock_cpu();
+	dspreq = init_wait_queue(&(p_mpfcb->wait_queue));
+	p_mpfcb->fblkcnt = p_mpfcb->p_mpfinib->blkcnt;
+	p_mpfcb->unused = 0U;
+	p_mpfcb->freelist = INDEX_NULL;
+	if (dspreq) {
+		dispatch();
+	}
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_INI_MPF_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ini_mpf */
+
+/*
+ *  Åè·v[ÌóÔQÆ
+ */
+#ifdef TOPPERS_ref_mpf
+
+ER
+ref_mpf(ID mpfid, T_RMPF *pk_rmpf)
+{
+	MPFCB	*p_mpfcb;
+	ER		ercd;
+    
+	LOG_REF_MPF_ENTER(mpfid, pk_rmpf);
+	CHECK_TSKCTX_UNL();
+	CHECK_MPFID(mpfid);
+	p_mpfcb = get_mpfcb(mpfid);
+
+	t_lock_cpu();
+	pk_rmpf->wtskid = wait_tskid(&(p_mpfcb->wait_queue));
+	pk_rmpf->fblkcnt = p_mpfcb->fblkcnt;
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_REF_MPF_LEAVE(ercd, pk_rmpf);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ref_mpf */
Index: /asp_ewarm/asp-1.7.0/extension/dcre/kernel/mempfix.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/dcre/kernel/mempfix.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/dcre/kernel/mempfix.h	(revision 61)
@@ -0,0 +1,149 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: mempfix.h 1966 2010-11-20 07:23:56Z ertl-hiro $
+ */
+
+/*
+ *		Åè·v[@\
+ */
+
+#ifndef TOPPERS_MEMPFIX_H
+#define TOPPERS_MEMPFIX_H
+
+#include <queue.h>
+
+/*
+ *  Åè·ubNÇubN
+ *
+ *  nexttB[hÉÍCubNªÄÏÝÌêÍINDEX_ALLOCðC
+ *  ¢ÄÌêÍÌ¢ÄubNÌCfbNXÔði[·éD
+ *  ÅãÌ¢ÄubNÌêÉÍCINDEX_NULLði[·éD
+ */
+typedef struct fixed_memoryblock_management_block {
+	uint_t		next;			/* Ì¢ÄubN */
+} MPFMB;
+
+/*
+ *  Åè·v[ú»ubN
+ *
+ *  ±Ì\¢ÌÍC¯úEÊMIuWFNgÌú»ubNÌ¤Êª
+ *  iWOBJINIBjðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅC
+ *  ÅÌtB[hª¤ÊÉÈÁÄ¢éD
+ */
+typedef struct fixed_memorypool_initialization_block {
+	ATR			mpfatr;			/* Åè·v[®« */
+	uint_t		blkcnt;			/* ubN */
+	uint_t		blksz;			/* ubNÌTCYiÛß½lj */
+	void		*mpf;			/* Åè·v[ÌæÌæªÔn */
+	MPFMB		*p_mpfmb;		/* Åè·v[ÇÌæÌæªÔn */
+} MPFINIB;
+
+/*
+ *  Åè·v[ÇubN
+ *
+ *  ±Ì\¢ÌÍC¯úEÊMIuWFNgÌÇubNÌ¤ÊªiWOBJCBj
+ *  ðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅCÅÌ2ÂÌ
+ *  tB[hª¤ÊÉÈÁÄ¢éD
+ */
+typedef struct fixed_memorypool_control_block {
+	QUEUE		wait_queue;		/* Åè·v[Ò¿L
+[ */
+	const MPFINIB *p_mpfinib;	/* ú»ubNÖÌ|C^ */
+	uint_t		fblkcnt;		/* ¢ÄubN */
+	uint_t		unused;			/* ¢gpubNÌæª */
+	uint_t		freelist;		/* ¢ÄubNÌXg */
+} MPFCB;
+
+/*
+ *  Åè·v[Ò¿îñubNÌè`
+ *
+ *  ±Ì\¢ÌÍC¯úEÊMIuWFNgÌÒ¿îñubNÌ¤Êª
+ *  iWINFO_WOBJjðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅC
+ *  ÅÌ2ÂÌtB[hª¤ÊÉÈÁÄ¢éD
+ */
+typedef struct fixed_memorypool_waiting_information {
+	WINFO		winfo;			/* WÌÒ¿îñubN */
+	MPFCB		*p_mpfcb;		/* ÒÁÄ¢éÅè·v[ÌÇubN*/
+	void		*blk;			/* l¾µ½ubN */
+} WINFO_MPF;
+
+/*
+ *  gpµÄ¢È¢Åè·v[ÇubNÌXg
+ */
+extern QUEUE	free_mpfcb;
+
+/*
+ *  Åè·v[IDÌÅålikernel_cfg.cj
+ */
+extern const ID	tmax_mpfid;
+extern const ID	tmax_smpfid;
+
+/*
+ *  Åè·v[ú»ubNÌGAikernel_cfg.cj
+ */
+extern const MPFINIB	mpfinib_table[];
+extern MPFINIB			ampfinib_table[];
+
+/*
+ *  Åè·v[ÇubNÌGAikernel_cfg.cj
+ */
+extern MPFCB	mpfcb_table[];
+
+/*
+ *  Åè·v[ÇubN©çÅè·v[IDðæèo·½
+ *  ßÌ}N
+ */
+#define	MPFID(p_mpfcb)	((ID)(((p_mpfcb) - mpfcb_table) + TMIN_MPFID))
+
+/*
+ *  Åè·v[@\Ìú»
+ */
+extern void	initialize_mempfix(void);
+
+/*
+ *  Åè·v[©çubNðl¾
+ */
+extern void	get_mpf_block(MPFCB *p_mpfcb, void **p_blk);
+
+#endif /* TOPPERS_MEMPFIX_H */
Index: /asp_ewarm/asp-1.7.0/extension/dcre/kernel/pridataq.c
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/dcre/kernel/pridataq.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/dcre/kernel/pridataq.c	(revision 61)
@@ -0,0 +1,857 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: pridataq.c 1966 2010-11-20 07:23:56Z ertl-hiro $
+ */
+
+/*
+ *		Dæxf[^L
+[@\
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+#include "pridataq.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_ACRE_PDQ_ENTER
+#define LOG_ACRE_PDQ_ENTER(pk_cpdq)
+#endif /* LOG_ACRE_PDQ_ENTER */
+
+#ifndef LOG_ACRE_PDQ_LEAVE
+#define LOG_ACRE_PDQ_LEAVE(ercd)
+#endif /* LOG_ACRE_PDQ_LEAVE */
+
+#ifndef LOG_DEL_PDQ_ENTER
+#define LOG_DEL_PDQ_ENTER(pdqid)
+#endif /* LOG_DEL_PDQ_ENTER */
+
+#ifndef LOG_DEL_PDQ_LEAVE
+#define LOG_DEL_PDQ_LEAVE(ercd)
+#endif /* LOG_DEL_PDQ_LEAVE */
+
+#ifndef LOG_SND_PDQ_ENTER
+#define LOG_SND_PDQ_ENTER(pdqid, data, datapri)
+#endif /* LOG_SND_PDQ_ENTER */
+
+#ifndef LOG_SND_PDQ_LEAVE
+#define LOG_SND_PDQ_LEAVE(ercd)
+#endif /* LOG_SND_PDQ_LEAVE */
+
+#ifndef LOG_PSND_PDQ_ENTER
+#define LOG_PSND_PDQ_ENTER(pdqid, data, datapri)
+#endif /* LOG_PSND_PDQ_ENTER */
+
+#ifndef LOG_PSND_PDQ_LEAVE
+#define LOG_PSND_PDQ_LEAVE(ercd)
+#endif /* LOG_PSND_PDQ_LEAVE */
+
+#ifndef LOG_IPSND_PDQ_ENTER
+#define LOG_IPSND_PDQ_ENTER(pdqid, data, datapri)
+#endif /* LOG_IPSND_PDQ_ENTER */
+
+#ifndef LOG_IPSND_PDQ_LEAVE
+#define LOG_IPSND_PDQ_LEAVE(ercd)
+#endif /* LOG_IPSND_PDQ_LEAVE */
+
+#ifndef LOG_TSND_PDQ_ENTER
+#define LOG_TSND_PDQ_ENTER(pdqid, data, datapri, tmout)
+#endif /* LOG_TSND_PDQ_ENTER */
+
+#ifndef LOG_TSND_PDQ_LEAVE
+#define LOG_TSND_PDQ_LEAVE(ercd)
+#endif /* LOG_TSND_PDQ_LEAVE */
+
+#ifndef LOG_RCV_PDQ_ENTER
+#define LOG_RCV_PDQ_ENTER(pdqid, p_data, p_datapri)
+#endif /* LOG_RCV_PDQ_ENTER */
+
+#ifndef LOG_RCV_PDQ_LEAVE
+#define LOG_RCV_PDQ_LEAVE(ercd, data, datapri)
+#endif /* LOG_RCV_PDQ_LEAVE */
+
+#ifndef LOG_PRCV_PDQ_ENTER
+#define LOG_PRCV_PDQ_ENTER(pdqid, p_data, p_datapri)
+#endif /* LOG_PRCV_PDQ_ENTER */
+
+#ifndef LOG_PRCV_PDQ_LEAVE
+#define LOG_PRCV_PDQ_LEAVE(ercd, data, datapri)
+#endif /* LOG_PRCV_PDQ_LEAVE */
+
+#ifndef LOG_TRCV_PDQ_ENTER
+#define LOG_TRCV_PDQ_ENTER(pdqid, p_data, p_datapri, tmout)
+#endif /* LOG_TRCV_PDQ_ENTER */
+
+#ifndef LOG_TRCV_PDQ_LEAVE
+#define LOG_TRCV_PDQ_LEAVE(ercd, data, datapri)
+#endif /* LOG_TRCV_PDQ_LEAVE */
+
+#ifndef LOG_INI_PDQ_ENTER
+#define LOG_INI_PDQ_ENTER(pdqid)
+#endif /* LOG_INI_PDQ_ENTER */
+
+#ifndef LOG_INI_PDQ_LEAVE
+#define LOG_INI_PDQ_LEAVE(ercd)
+#endif /* LOG_INI_PDQ_LEAVE */
+
+#ifndef LOG_REF_PDQ_ENTER
+#define LOG_REF_PDQ_ENTER(pdqid, pk_rpdq)
+#endif /* LOG_REF_PDQ_ENTER */
+
+#ifndef LOG_REF_PDQ_LEAVE
+#define LOG_REF_PDQ_LEAVE(ercd, pk_rpdq)
+#endif /* LOG_REF_PDQ_LEAVE */
+
+/*
+ *  Dæxf[^L
+[Ì
+ */
+#define tnum_pdq	((uint_t)(tmax_pdqid - TMIN_PDQID + 1))
+#define tnum_spdq	((uint_t)(tmax_spdqid - TMIN_PDQID + 1))
+
+/*
+ *  Dæxf[^L
+[ID©çDæxf[^L
+[ÇubNðæèo·½
+ *  ßÌ}N
+ */
+#define INDEX_PDQ(pdqid)	((uint_t)((pdqid) - TMIN_PDQID))
+#define get_pdqcb(pdqid)	(&(pdqcb_table[INDEX_PDQ(pdqid)]))
+
+#ifdef TOPPERS_pdqini
+
+/*
+ *  gpµÄ¢È¢Dæxf[^L
+[ÇubNÌXg
+ */
+QUEUE	free_pdqcb;
+
+/*
+ *  Dæxf[^L
+[@\Ìú»
+ */
+void
+initialize_pridataq(void)
+{
+	uint_t	i, j;
+	PDQCB	*p_pdqcb;
+	PDQINIB	*p_pdqinib;
+
+	for (p_pdqcb = pdqcb_table, i = 0; i < tnum_spdq; p_pdqcb++, i++) {
+		queue_initialize(&(p_pdqcb->swait_queue));
+		p_pdqcb->p_pdqinib = &(pdqinib_table[i]);
+		queue_initialize(&(p_pdqcb->rwait_queue));
+		p_pdqcb->count = 0U;
+		p_pdqcb->p_head = NULL;
+		p_pdqcb->unused = 0U;
+		p_pdqcb->p_freelist = NULL;
+	}
+	queue_initialize(&free_pdqcb);
+	for (j = 0; i < tnum_pdq; p_pdqcb++, i++, j++) {
+		p_pdqinib = &(apdqinib_table[j]);
+		p_pdqinib->pdqatr = TA_NOEXS;
+		p_pdqcb->p_pdqinib = ((const PDQINIB *) p_pdqinib);
+		queue_insert_prev(&free_pdqcb, &(p_pdqcb->swait_queue));
+	}
+}
+
+#endif /* TOPPERS_pdqini */
+
+/*
+ *  Dæxf[^L
+[Ì¶¬
+ */
+#ifdef TOPPERS_acre_pdq
+
+ER_UINT
+acre_pdq(const T_CPDQ *pk_cpdq)
+{
+	PDQCB	*p_pdqcb;
+	PDQINIB	*p_pdqinib;
+	ATR		pdqatr;
+	PDQMB	*p_pdqmb;
+	ER		ercd;
+
+	LOG_ACRE_PDQ_ENTER(pk_cpdq);
+	CHECK_TSKCTX_UNL();
+	CHECK_RSATR(pk_cpdq->pdqatr, TA_TPRI);
+	CHECK_DPRI(pk_cpdq->maxdpri);
+	pdqatr = pk_cpdq->pdqatr;
+	p_pdqmb = pk_cpdq->pdqmb;
+
+	t_lock_cpu();
+	if (queue_empty(&free_pdqcb)) {
+		ercd = E_NOID;
+	}
+	else {
+		if (pk_cpdq->pdqcnt != 0 && p_pdqmb == NULL) {
+			p_pdqmb = kernel_malloc(sizeof(PDQMB) * pk_cpdq->pdqcnt);
+			pdqatr |= TA_MBALLOC;
+		}
+		if (pk_cpdq->pdqcnt != 0 && p_pdqmb == NULL) {
+			ercd = E_NOMEM;
+		}
+		else {
+			p_pdqcb = ((PDQCB *) queue_delete_next(&free_pdqcb));
+			p_pdqinib = (PDQINIB *)(p_pdqcb->p_pdqinib);
+			p_pdqinib->pdqatr = pdqatr;
+			p_pdqinib->pdqcnt = pk_cpdq->pdqcnt;
+			p_pdqinib->maxdpri = pk_cpdq->maxdpri;
+			p_pdqinib->p_pdqmb = p_pdqmb;
+
+			queue_initialize(&(p_pdqcb->swait_queue));
+			queue_initialize(&(p_pdqcb->rwait_queue));
+			p_pdqcb->count = 0U;
+			p_pdqcb->p_head = NULL;
+			p_pdqcb->unused = 0U;
+			p_pdqcb->p_freelist = NULL;
+			ercd = PDQID(p_pdqcb);
+		}
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_ACRE_PDQ_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_acre_pdq */
+
+/*
+ *  Dæxf[^L
+[Ìí
+ */
+#ifdef TOPPERS_del_pdq
+
+ER
+del_pdq(ID pdqid)
+{
+	PDQCB	*p_pdqcb;
+	PDQINIB	*p_pdqinib;
+	bool_t	dspreq;
+	ER		ercd;
+
+	LOG_DEL_PDQ_ENTER(pdqid);
+	CHECK_TSKCTX_UNL();
+	CHECK_PDQID(pdqid);
+	p_pdqcb = get_pdqcb(pdqid);
+
+	t_lock_cpu();
+	if (p_pdqcb->p_pdqinib->pdqatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (PDQID(p_pdqcb) > tmax_spdqid) {
+		dspreq = init_wait_queue(&(p_pdqcb->swait_queue));
+		if (init_wait_queue(&(p_pdqcb->rwait_queue))) {
+			dspreq = true;
+		};
+		p_pdqinib = (PDQINIB *)(p_pdqcb->p_pdqinib);
+		if ((p_pdqinib->pdqatr & TA_MBALLOC) != 0U) {
+			kernel_free(p_pdqinib->p_pdqmb);
+		}
+		p_pdqinib->pdqatr = TA_NOEXS;
+		queue_insert_prev(&free_pdqcb, &(p_pdqcb->swait_queue));
+		if (dspreq) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_OBJ;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_DEL_PDQ_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_del_pdq */
+
+/*
+ *  Dæxf[^L
+[ÇÌæÖÌf[^Ìi[
+ */
+#ifdef TOPPERS_pdqenq
+
+void
+enqueue_pridata(PDQCB *p_pdqcb, intptr_t data, PRI datapri)
+{
+	PDQMB	*p_pdqmb;
+	PDQMB	**pp_prev_next, *p_next;
+
+	if (p_pdqcb->p_freelist != NULL) {
+		p_pdqmb = p_pdqcb->p_freelist;
+		p_pdqcb->p_freelist = p_pdqmb->p_next;
+	}
+	else {
+		p_pdqmb = p_pdqcb->p_pdqinib->p_pdqmb + p_pdqcb->unused;
+		p_pdqcb->unused++;
+	}
+
+	p_pdqmb->data = data;
+	p_pdqmb->datapri = datapri;
+
+	pp_prev_next = &(p_pdqcb->p_head);
+	while ((p_next = *pp_prev_next) != NULL) {
+		if (p_next->datapri > datapri) {
+			break;
+		}
+		pp_prev_next = &(p_next->p_next);
+	}
+	p_pdqmb->p_next = p_next;
+	*pp_prev_next = p_pdqmb;
+	p_pdqcb->count++;
+}
+
+#endif /* TOPPERS_pdqenq */
+
+/*
+ *  Dæxf[^L
+[ÇÌæ©çÌf[^Ìæoµ
+ */
+#ifdef TOPPERS_pdqdeq
+
+void
+dequeue_pridata(PDQCB *p_pdqcb, intptr_t *p_data, PRI *p_datapri)
+{
+	PDQMB	*p_pdqmb;
+
+	p_pdqmb = p_pdqcb->p_head;
+	p_pdqcb->p_head = p_pdqmb->p_next;
+	p_pdqcb->count--;
+
+	*p_data = p_pdqmb->data;
+	*p_datapri = p_pdqmb->datapri;
+
+	p_pdqmb->p_next = p_pdqcb->p_freelist;
+	p_pdqcb->p_freelist = p_pdqmb;
+}
+
+#endif /* TOPPERS_pdqdeq */
+
+/*
+ *  Dæxf[^L
+[ÖÌf[^M
+ */
+#ifdef TOPPERS_pdqsnd
+
+bool_t
+send_pridata(PDQCB *p_pdqcb, intptr_t data, PRI datapri, bool_t *p_reqdsp)
+{
+	TCB		*p_tcb;
+
+	if (!queue_empty(&(p_pdqcb->rwait_queue))) {
+		p_tcb = (TCB *) queue_delete_next(&(p_pdqcb->rwait_queue));
+		((WINFO_PDQ *)(p_tcb->p_winfo))->data = data;
+		((WINFO_PDQ *)(p_tcb->p_winfo))->datapri = datapri;
+		*p_reqdsp = wait_complete(p_tcb);
+		return(true);
+	}
+	else if (p_pdqcb->count < p_pdqcb->p_pdqinib->pdqcnt) {
+		enqueue_pridata(p_pdqcb, data, datapri);
+		*p_reqdsp = false;
+		return(true);
+	}
+	else {
+		return(false);
+	}
+}
+
+#endif /* TOPPERS_pdqsnd */
+
+/*
+ *  Dæxf[^L
+[©çÌf[^óM
+ */
+#ifdef TOPPERS_pdqrcv
+
+bool_t
+receive_pridata(PDQCB *p_pdqcb, intptr_t *p_data,
+									PRI *p_datapri, bool_t *p_reqdsp)
+{
+	TCB		*p_tcb;
+	intptr_t data;
+	PRI		datapri;
+
+	if (p_pdqcb->count > 0U) {
+		dequeue_pridata(p_pdqcb, p_data, p_datapri);
+		if (!queue_empty(&(p_pdqcb->swait_queue))) {
+			p_tcb = (TCB *) queue_delete_next(&(p_pdqcb->swait_queue));
+			data = ((WINFO_PDQ *)(p_tcb->p_winfo))->data;
+			datapri = ((WINFO_PDQ *)(p_tcb->p_winfo))->datapri;
+			enqueue_pridata(p_pdqcb, data, datapri);
+			*p_reqdsp = wait_complete(p_tcb);
+		}
+		else {
+			*p_reqdsp = false;
+		}
+		return(true);
+	}
+	else if (!queue_empty(&(p_pdqcb->swait_queue))) {
+		p_tcb = (TCB *) queue_delete_next(&(p_pdqcb->swait_queue));
+		*p_data = ((WINFO_PDQ *)(p_tcb->p_winfo))->data;
+		*p_datapri = ((WINFO_PDQ *)(p_tcb->p_winfo))->datapri;
+		*p_reqdsp = wait_complete(p_tcb);
+		return(true);
+	}
+	else {
+		return(false);
+	}
+}
+
+#endif /* TOPPERS_pdqrcv */
+
+/*
+ *  Dæxf[^L
+[ÖÌM
+ */
+#ifdef TOPPERS_snd_pdq
+
+ER
+snd_pdq(ID pdqid, intptr_t data, PRI datapri)
+{
+	PDQCB	*p_pdqcb;
+	WINFO_PDQ winfo_pdq;
+	bool_t	reqdsp;
+	ER		ercd;
+
+	LOG_SND_PDQ_ENTER(pdqid, data, datapri);
+	CHECK_DISPATCH();
+	CHECK_PDQID(pdqid);
+	p_pdqcb = get_pdqcb(pdqid);
+	CHECK_PAR(TMIN_DPRI <= datapri && datapri <= p_pdqcb->p_pdqinib->maxdpri);
+
+	t_lock_cpu();
+	if (p_pdqcb->p_pdqinib->pdqatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (send_pridata(p_pdqcb, data, datapri, &reqdsp)) {
+		if (reqdsp) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else {
+		winfo_pdq.data = data;
+		winfo_pdq.datapri = datapri;
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_SPDQ);
+		wobj_make_wait((WOBJCB *) p_pdqcb, (WINFO_WOBJ *) &winfo_pdq);
+		dispatch();
+		ercd = winfo_pdq.winfo.wercd;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_SND_PDQ_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_snd_pdq */
+
+/*
+ *  Dæxf[^L
+[ÖÌMi|[Oj
+ */
+#ifdef TOPPERS_psnd_pdq
+
+ER
+psnd_pdq(ID pdqid, intptr_t data, PRI datapri)
+{
+	PDQCB	*p_pdqcb;
+	bool_t	reqdsp;
+	ER		ercd;
+
+	LOG_PSND_PDQ_ENTER(pdqid, data, datapri);
+	CHECK_TSKCTX_UNL();
+	CHECK_PDQID(pdqid);
+	p_pdqcb = get_pdqcb(pdqid);
+	CHECK_PAR(TMIN_DPRI <= datapri && datapri <= p_pdqcb->p_pdqinib->maxdpri);
+
+	t_lock_cpu();
+	if (p_pdqcb->p_pdqinib->pdqatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (send_pridata(p_pdqcb, data, datapri, &reqdsp)) {
+		if (reqdsp) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_TMOUT;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_PSND_PDQ_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_psnd_pdq */
+
+/*
+ *  Dæxf[^L
+[ÖÌMi|[OCñ^XNReLXgpj
+ */
+#ifdef TOPPERS_ipsnd_pdq
+
+ER
+ipsnd_pdq(ID pdqid, intptr_t data, PRI datapri)
+{
+	PDQCB	*p_pdqcb;
+	bool_t	reqdsp;
+	ER		ercd;
+
+	LOG_IPSND_PDQ_ENTER(pdqid, data, datapri);
+	CHECK_INTCTX_UNL();
+	CHECK_PDQID(pdqid);
+	p_pdqcb = get_pdqcb(pdqid);
+	CHECK_PAR(TMIN_DPRI <= datapri && datapri <= p_pdqcb->p_pdqinib->maxdpri);
+
+	i_lock_cpu();
+	if (p_pdqcb->p_pdqinib->pdqatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (send_pridata(p_pdqcb, data, datapri, &reqdsp)) {
+		if (reqdsp) {
+			reqflg = true;
+		}
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_TMOUT;
+	}
+	i_unlock_cpu();
+
+  error_exit:
+	LOG_IPSND_PDQ_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ipsnd_pdq */
+
+/*
+ *  Dæxf[^L
+[ÖÌMi^CAEg èj
+ */
+#ifdef TOPPERS_tsnd_pdq
+
+ER
+tsnd_pdq(ID pdqid, intptr_t data, PRI datapri, TMO tmout)
+{
+	PDQCB	*p_pdqcb;
+	WINFO_PDQ winfo_pdq;
+	TMEVTB	tmevtb;
+	bool_t	reqdsp;
+	ER		ercd;
+
+	LOG_TSND_PDQ_ENTER(pdqid, data, datapri, tmout);
+	CHECK_DISPATCH();
+	CHECK_PDQID(pdqid);
+	CHECK_TMOUT(tmout);
+	p_pdqcb = get_pdqcb(pdqid);
+	CHECK_PAR(TMIN_DPRI <= datapri && datapri <= p_pdqcb->p_pdqinib->maxdpri);
+
+	t_lock_cpu();
+	if (p_pdqcb->p_pdqinib->pdqatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (send_pridata(p_pdqcb, data, datapri, &reqdsp)) {
+		if (reqdsp) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else if (tmout == TMO_POL) {
+		ercd = E_TMOUT;
+	}
+	else {
+		winfo_pdq.data = data;
+		winfo_pdq.datapri = datapri;
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_SPDQ);
+		wobj_make_wait_tmout((WOBJCB *) p_pdqcb, (WINFO_WOBJ *) &winfo_pdq,
+														&tmevtb, tmout);
+		dispatch();
+		ercd = winfo_pdq.winfo.wercd;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_TSND_PDQ_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_tsnd_pdq */
+
+/*
+ *  Dæxf[^L
+[©çÌóM
+ */
+#ifdef TOPPERS_rcv_pdq
+
+ER
+rcv_pdq(ID pdqid, intptr_t *p_data, PRI *p_datapri)
+{
+	PDQCB	*p_pdqcb;
+	WINFO_PDQ winfo_pdq;
+	bool_t	reqdsp;
+	ER		ercd;
+
+	LOG_RCV_PDQ_ENTER(pdqid, p_data, p_datapri);
+	CHECK_DISPATCH();
+	CHECK_PDQID(pdqid);
+	p_pdqcb = get_pdqcb(pdqid);
+
+	t_lock_cpu();
+	if (p_pdqcb->p_pdqinib->pdqatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (receive_pridata(p_pdqcb, p_data, p_datapri, &reqdsp)) {
+		if (reqdsp) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else {
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_RPDQ);
+		make_wait(&(winfo_pdq.winfo));
+		queue_insert_prev(&(p_pdqcb->rwait_queue), &(p_runtsk->task_queue));
+		winfo_pdq.p_pdqcb = p_pdqcb;
+		LOG_TSKSTAT(p_runtsk);
+		dispatch();
+		ercd = winfo_pdq.winfo.wercd;
+		if (ercd == E_OK) {
+			*p_data = winfo_pdq.data;
+			*p_datapri = winfo_pdq.datapri;
+		}
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_RCV_PDQ_LEAVE(ercd, *p_data, *p_datapri);
+	return(ercd);
+}
+
+#endif /* TOPPERS_rcv_pdq */
+
+/*
+ *  Dæxf[^L
+[©çÌóMi|[Oj
+ */
+#ifdef TOPPERS_prcv_pdq
+
+ER
+prcv_pdq(ID pdqid, intptr_t *p_data, PRI *p_datapri)
+{
+	PDQCB	*p_pdqcb;
+	bool_t	reqdsp;
+	ER		ercd;
+
+	LOG_PRCV_PDQ_ENTER(pdqid, p_data, p_datapri);
+	CHECK_TSKCTX_UNL();
+	CHECK_PDQID(pdqid);
+	p_pdqcb = get_pdqcb(pdqid);
+
+	t_lock_cpu();
+	if (p_pdqcb->p_pdqinib->pdqatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (receive_pridata(p_pdqcb, p_data, p_datapri, &reqdsp)) {
+		if (reqdsp) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_TMOUT;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_PRCV_PDQ_LEAVE(ercd, *p_data, *p_datapri);
+	return(ercd);
+}
+
+#endif /* TOPPERS_prcv_pdq */
+
+/*
+ *  Dæxf[^L
+[©çÌóMi^CAEg èj
+ */
+#ifdef TOPPERS_trcv_pdq
+
+ER
+trcv_pdq(ID pdqid, intptr_t *p_data, PRI *p_datapri, TMO tmout)
+{
+	PDQCB	*p_pdqcb;
+	WINFO_PDQ winfo_pdq;
+	TMEVTB	tmevtb;
+	bool_t	reqdsp;
+	ER		ercd;
+
+	LOG_TRCV_PDQ_ENTER(pdqid, p_data, p_datapri, tmout);
+	CHECK_DISPATCH();
+	CHECK_PDQID(pdqid);
+	CHECK_TMOUT(tmout);
+	p_pdqcb = get_pdqcb(pdqid);
+
+	t_lock_cpu();
+	if (p_pdqcb->p_pdqinib->pdqatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (receive_pridata(p_pdqcb, p_data, p_datapri, &reqdsp)) {
+		if (reqdsp) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else if (tmout == TMO_POL) {
+		ercd = E_TMOUT;
+	}
+	else {
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_RPDQ);
+		make_wait_tmout(&(winfo_pdq.winfo), &tmevtb, tmout);
+		queue_insert_prev(&(p_pdqcb->rwait_queue), &(p_runtsk->task_queue));
+		winfo_pdq.p_pdqcb = p_pdqcb;
+		LOG_TSKSTAT(p_runtsk);
+		dispatch();
+		ercd = winfo_pdq.winfo.wercd;
+		if (ercd == E_OK) {
+			*p_data = winfo_pdq.data;
+			*p_datapri = winfo_pdq.datapri;
+		}
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_TRCV_PDQ_LEAVE(ercd, *p_data, *p_datapri);
+	return(ercd);
+}
+
+#endif /* TOPPERS_trcv_pdq */
+
+/*
+ *  Dæxf[^L
+[ÌÄú»
+ */
+#ifdef TOPPERS_ini_pdq
+
+ER
+ini_pdq(ID pdqid)
+{
+	PDQCB	*p_pdqcb;
+	bool_t	dspreq;
+	ER		ercd;
+    
+	LOG_INI_PDQ_ENTER(pdqid);
+	CHECK_TSKCTX_UNL();
+	CHECK_PDQID(pdqid);
+	p_pdqcb = get_pdqcb(pdqid);
+
+	t_lock_cpu();
+	if (p_pdqcb->p_pdqinib->pdqatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else {
+		dspreq = init_wait_queue(&(p_pdqcb->swait_queue));
+		if (init_wait_queue(&(p_pdqcb->rwait_queue))) {
+			dspreq = true;
+		}
+		p_pdqcb->count = 0U;
+		p_pdqcb->p_head = NULL;
+		p_pdqcb->unused = 0U;
+		p_pdqcb->p_freelist = NULL;
+		if (dspreq) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_INI_PDQ_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ini_pdq */
+
+/*
+ *  Dæxf[^L
+[ÌóÔQÆ
+ */
+#ifdef TOPPERS_ref_pdq
+
+ER
+ref_pdq(ID pdqid, T_RPDQ *pk_rpdq)
+{
+	PDQCB	*p_pdqcb;
+	ER		ercd;
+    
+	LOG_REF_PDQ_ENTER(pdqid, pk_rpdq);
+	CHECK_TSKCTX_UNL();
+	CHECK_PDQID(pdqid);
+	p_pdqcb = get_pdqcb(pdqid);
+
+	t_lock_cpu();
+	if (p_pdqcb->p_pdqinib->pdqatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else {
+		pk_rpdq->stskid = wait_tskid(&(p_pdqcb->swait_queue));
+		pk_rpdq->rtskid = wait_tskid(&(p_pdqcb->rwait_queue));
+		pk_rpdq->spdqcnt = p_pdqcb->count;
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_REF_PDQ_LEAVE(ercd, pk_rpdq);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ref_pdq */
Index: /asp_ewarm/asp-1.7.0/extension/dcre/kernel/pridataq.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/dcre/kernel/pridataq.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/dcre/kernel/pridataq.h	(revision 61)
@@ -0,0 +1,195 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: pridataq.h 1966 2010-11-20 07:23:56Z ertl-hiro $
+ */
+
+/*
+ *		Dæxf[^L
+[@\
+ */
+
+#ifndef TOPPERS_PRIDATAQ_H
+#define TOPPERS_PRIDATAQ_H
+
+#include <queue.h>
+
+/*
+ *  Dæxf[^ÇubN
+ */
+typedef struct pridata_management_block PDQMB;
+
+struct pridata_management_block {
+	PDQMB		*p_next;		/* Ìf[^ */
+	intptr_t	data;			/* f[^{Ì */
+	PRI			datapri;		/* f[^Dæx */
+};
+
+/*
+ *  Dæxf[^L
+[ú»ubN
+ *
+ *  ±Ì\¢ÌÍC¯úEÊMIuWFNgÌú»ubNÌ¤Êª
+ *  iWOBJINIBjðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅC
+ *  ÅÌtB[hª¤ÊÉÈÁÄ¢éD
+ */
+typedef struct pridataq_initialization_block {
+	ATR			pdqatr;			/* Dæxf[^L
+[®« */
+	uint_t		pdqcnt;			/* Dæxf[^L
+[ÌeÊ */
+	PRI			maxdpri;		/* f[^DæxÌÅål */
+	PDQMB		*p_pdqmb;		/* Dæxf[^L
+[ÇÌæÌæªÔn */
+} PDQINIB;
+
+/*
+ *  Dæxf[^L
+[ÇubN
+ *
+ *  ±Ì\¢ÌÍC¯úEÊMIuWFNgÌÇubNÌ¤ÊªiWOBJCBj
+ *  ðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅCÅÌ2ÂÌ
+ *  tB[hª¤ÊÉÈÁÄ¢éD
+ */
+typedef struct pridataq_control_block {
+	QUEUE		swait_queue;	/* Dæxf[^L
+[MÒ¿L
+[ */
+	const PDQINIB *p_pdqinib;	/* ú»ubNÖÌ|C^ */
+	QUEUE		rwait_queue;	/* Dæxf[^L
+[óMÒ¿L
+[ */
+	uint_t		count;			/* Dæxf[^L
+[Ìf[^Ì */
+	PDQMB		*p_head;		/* ÅÌf[^ */
+	uint_t		unused;			/* ¢gpf[^ÇubNÌæª */
+	PDQMB		*p_freelist;	/* ¢Äf[^ÇubNÌXg */
+} PDQCB;
+
+/*
+ *  Dæxf[^L
+[Ò¿îñubNÌè`
+ *
+ *  ±Ì\¢ÌÍC¯úEÊMIuWFNgÌÒ¿îñubNÌ¤Êª
+ *  iWINFO_WOBJjðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅC
+ *  ÅÌ2ÂÌtB[hª¤ÊÉÈÁÄ¢éD
+ *  Dæxf[^L
+[ÖÌMÒ¿ÆDæxf[^L
+[©çÌóMÒ¿ÅC
+ *  ¯¶Ò¿îñubNðg¤D
+ */
+typedef struct pridataq_waiting_information {
+	WINFO		winfo;			/* WÌÒ¿îñubN */
+	PDQCB		*p_pdqcb;		/* ÒÁÄ¢éDæxf[^L
+[ÌÇubN*/
+	intptr_t	data;			/* óMf[^ */
+	PRI			datapri;		/* f[^Dæx */
+} WINFO_PDQ;
+
+/*
+ *  gpµÄ¢È¢Dæxf[^L
+[ÇubNÌXg
+ */
+extern QUEUE	free_pdqcb;
+
+/*
+ *  Dæxf[^L
+[IDÌÅålikernel_cfg.cj
+ */
+extern const ID	tmax_pdqid;
+extern const ID	tmax_spdqid;
+
+/*
+ *  Dæxf[^L
+[ú»ubNÌGAikernel_cfg.cj
+ */
+extern const PDQINIB	pdqinib_table[];
+extern PDQINIB			apdqinib_table[];
+
+/*
+ *  Dæxf[^L
+[ÇubNÌGAikernel_cfg.cj
+ */
+extern PDQCB	pdqcb_table[];
+
+/*
+ *  Dæxf[^L
+[ÇubN©çDæxf[^L
+[IDðæèo·½
+ *  ßÌ}N
+ */
+#define	PDQID(p_pdqcb)	((ID)(((p_pdqcb) - pdqcb_table) + TMIN_PDQID))
+
+/*
+ *  Dæxf[^L
+[@\Ìú»
+ */
+extern void	initialize_pridataq(void);
+
+/*
+ *  Dæxf[^L
+[ÇÌæÖÌf[^Ìi[
+ */
+extern void	enqueue_pridata(PDQCB *p_pdqcb, intptr_t data, PRI datapri);
+
+/*
+ *  Dæxf[^L
+[ÇÌæ©çÌf[^Ìæoµ
+ */
+extern void	dequeue_pridata(PDQCB *p_pdqcb, intptr_t *p_data, PRI *p_datapri);
+
+/*
+ *  Dæxf[^L
+[ÖÌf[^M
+ */
+extern bool_t	send_pridata(PDQCB *p_pdqcb, intptr_t data,
+											PRI datapri, bool_t *p_reqdsp);
+
+/*
+ *  Dæxf[^L
+[©çÌf[^óM
+ */
+extern bool_t	receive_pridata(PDQCB *p_pdqcb, intptr_t *p_data,
+											PRI *p_datapri, bool_t *p_reqdsp);
+
+#endif /* TOPPERS_PRIDATAQ_H */
Index: /asp_ewarm/asp-1.7.0/extension/dcre/kernel/semaphore.c
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/dcre/kernel/semaphore.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/dcre/kernel/semaphore.c	(revision 61)
@@ -0,0 +1,543 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: semaphore.c 1966 2010-11-20 07:23:56Z ertl-hiro $
+ */
+
+/*
+ *		Z}tH@\
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+#include "semaphore.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_ACRE_SEM_ENTER
+#define LOG_ACRE_SEM_ENTER(pk_csem)
+#endif /* LOG_ACRE_SEM_ENTER */
+
+#ifndef LOG_ACRE_SEM_LEAVE
+#define LOG_ACRE_SEM_LEAVE(ercd)
+#endif /* LOG_ACRE_SEM_LEAVE */
+
+#ifndef LOG_DEL_SEM_ENTER
+#define LOG_DEL_SEM_ENTER(semid)
+#endif /* LOG_DEL_SEM_ENTER */
+
+#ifndef LOG_DEL_SEM_LEAVE
+#define LOG_DEL_SEM_LEAVE(ercd)
+#endif /* LOG_DEL_SEM_LEAVE */
+
+#ifndef LOG_SIG_SEM_ENTER
+#define LOG_SIG_SEM_ENTER(semid)
+#endif /* LOG_SIG_SEM_ENTER */
+
+#ifndef LOG_SIG_SEM_LEAVE
+#define LOG_SIG_SEM_LEAVE(ercd)
+#endif /* LOG_SIG_SEM_LEAVE */
+
+#ifndef LOG_ISIG_SEM_ENTER
+#define LOG_ISIG_SEM_ENTER(semid)
+#endif /* LOG_ISIG_SEM_ENTER */
+
+#ifndef LOG_ISIG_SEM_LEAVE
+#define LOG_ISIG_SEM_LEAVE(ercd)
+#endif /* LOG_ISIG_SEM_LEAVE */
+
+#ifndef LOG_WAI_SEM_ENTER
+#define LOG_WAI_SEM_ENTER(semid)
+#endif /* LOG_WAI_SEM_ENTER */
+
+#ifndef LOG_WAI_SEM_LEAVE
+#define LOG_WAI_SEM_LEAVE(ercd)
+#endif /* LOG_WAI_SEM_LEAVE */
+
+#ifndef LOG_POL_SEM_ENTER
+#define LOG_POL_SEM_ENTER(semid)
+#endif /* LOG_POL_SEM_ENTER */
+
+#ifndef LOG_POL_SEM_LEAVE
+#define LOG_POL_SEM_LEAVE(ercd)
+#endif /* LOG_POL_SEM_LEAVE */
+
+#ifndef LOG_TWAI_SEM_ENTER
+#define LOG_TWAI_SEM_ENTER(semid, tmout)
+#endif /* LOG_TWAI_SEM_ENTER */
+
+#ifndef LOG_TWAI_SEM_LEAVE
+#define LOG_TWAI_SEM_LEAVE(ercd)
+#endif /* LOG_TWAI_SEM_LEAVE */
+
+#ifndef LOG_INI_SEM_ENTER
+#define LOG_INI_SEM_ENTER(semid)
+#endif /* LOG_INI_SEM_ENTER */
+
+#ifndef LOG_INI_SEM_LEAVE
+#define LOG_INI_SEM_LEAVE(ercd)
+#endif /* LOG_INI_SEM_LEAVE */
+
+#ifndef LOG_REF_SEM_ENTER
+#define LOG_REF_SEM_ENTER(semid, pk_rsem)
+#endif /* LOG_REF_SEM_ENTER */
+
+#ifndef LOG_REF_SEM_LEAVE
+#define LOG_REF_SEM_LEAVE(ercd, pk_rsem)
+#endif /* LOG_REF_SEM_LEAVE */
+
+/*
+ *  Z}tHÌ
+ */
+#define tnum_sem	((uint_t)(tmax_semid - TMIN_SEMID + 1))
+#define tnum_ssem	((uint_t)(tmax_ssemid - TMIN_SEMID + 1))
+
+/*
+ *  Z}tHID©çZ}tHÇubNðæèo·½ßÌ}N
+ */
+#define INDEX_SEM(semid)	((uint_t)((semid) - TMIN_SEMID))
+#define get_semcb(semid)	(&(semcb_table[INDEX_SEM(semid)]))
+
+#ifdef TOPPERS_semini
+
+/*
+ *  gpµÄ¢È¢Z}tHÇubNÌXg
+ */
+QUEUE	free_semcb;
+
+/* 
+ *  Z}tH@\Ìú»
+ */
+void
+initialize_semaphore(void)
+{
+	uint_t	i, j;
+	SEMCB	*p_semcb;
+	SEMINIB	*p_seminib;
+
+	for (p_semcb = semcb_table, i = 0; i < tnum_ssem; p_semcb++, i++) {
+		queue_initialize(&(p_semcb->wait_queue));
+		p_semcb->p_seminib = &(seminib_table[i]);
+		p_semcb->semcnt = p_semcb->p_seminib->isemcnt;
+	}
+	queue_initialize(&free_semcb);
+	for (j = 0; i < tnum_sem; p_semcb++, i++, j++) {
+		p_seminib = &(aseminib_table[j]);
+		p_seminib->sematr = TA_NOEXS;
+		p_semcb->p_seminib = ((const SEMINIB *) p_seminib);
+		queue_insert_prev(&free_semcb, &(p_semcb->wait_queue));
+	}
+}
+
+#endif /* TOPPERS_semini */
+
+/*
+ *  Z}tHÌ¶¬
+ */
+#ifdef TOPPERS_acre_sem
+
+ER_UINT
+acre_sem(const T_CSEM *pk_csem)
+{
+	SEMCB	*p_semcb;
+	SEMINIB	*p_seminib;
+	ER		ercd;
+
+	LOG_ACRE_SEM_ENTER(pk_csem);
+	CHECK_TSKCTX_UNL();
+	CHECK_RSATR(pk_csem->sematr, TA_TPRI);
+	CHECK_PAR(0 <= pk_csem->isemcnt && pk_csem->isemcnt <= pk_csem->maxsem);
+	CHECK_PAR(1 <= pk_csem->maxsem && pk_csem->maxsem <= TMAX_MAXSEM);
+
+	t_lock_cpu();
+	if (queue_empty(&free_semcb)) {
+		ercd = E_NOID;
+	}
+	else {
+		p_semcb = ((SEMCB *) queue_delete_next(&free_semcb));
+		p_seminib = (SEMINIB *)(p_semcb->p_seminib);
+		p_seminib->sematr = pk_csem->sematr;
+		p_seminib->isemcnt = pk_csem->isemcnt;
+		p_seminib->maxsem = pk_csem->maxsem;
+
+		queue_initialize(&(p_semcb->wait_queue));
+		p_semcb->semcnt = p_semcb->p_seminib->isemcnt;
+		ercd = SEMID(p_semcb);
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_ACRE_SEM_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_acre_sem */
+
+/*
+ *  Z}tHÌí
+ */
+#ifdef TOPPERS_del_sem
+
+ER
+del_sem(ID semid)
+{
+	SEMCB	*p_semcb;
+	SEMINIB	*p_seminib;
+	bool_t	dspreq;
+	ER		ercd;
+
+	LOG_DEL_SEM_ENTER(semid);
+	CHECK_TSKCTX_UNL();
+	CHECK_SEMID(semid);
+	p_semcb = get_semcb(semid);
+
+	t_lock_cpu();
+	if (p_semcb->p_seminib->sematr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (SEMID(p_semcb) > tmax_ssemid) {
+		dspreq = init_wait_queue(&(p_semcb->wait_queue));
+		p_seminib = (SEMINIB *)(p_semcb->p_seminib);
+		p_seminib->sematr = TA_NOEXS;
+		queue_insert_prev(&free_semcb, &(p_semcb->wait_queue));
+		if (dspreq) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_OBJ;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_DEL_SEM_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_del_sem */
+
+/*
+ *  Z}tH¹ÌÔp
+ */
+#ifdef TOPPERS_sig_sem
+
+ER
+sig_sem(ID semid)
+{
+	SEMCB	*p_semcb;
+	TCB		*p_tcb;
+	ER		ercd;
+    
+	LOG_SIG_SEM_ENTER(semid);
+	CHECK_TSKCTX_UNL();
+	CHECK_SEMID(semid);
+	p_semcb = get_semcb(semid);
+
+	t_lock_cpu();
+	if (p_semcb->p_seminib->sematr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (!queue_empty(&(p_semcb->wait_queue))) {
+		p_tcb = (TCB *) queue_delete_next(&(p_semcb->wait_queue));
+		if (wait_complete(p_tcb)) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else if (p_semcb->semcnt < p_semcb->p_seminib->maxsem) {
+		p_semcb->semcnt += 1;
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_QOVR;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_SIG_SEM_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_sig_sem */
+
+/*
+ *  Z}tH¹ÌÔpiñ^XNReLXgpj
+ */
+#ifdef TOPPERS_isig_sem
+
+ER
+isig_sem(ID semid)
+{
+	SEMCB	*p_semcb;
+	TCB		*p_tcb;
+	ER		ercd;
+    
+	LOG_ISIG_SEM_ENTER(semid);
+	CHECK_INTCTX_UNL();
+	CHECK_SEMID(semid);
+	p_semcb = get_semcb(semid);
+
+	i_lock_cpu();
+	if (p_semcb->p_seminib->sematr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (!queue_empty(&(p_semcb->wait_queue))) {
+		p_tcb = (TCB *) queue_delete_next(&(p_semcb->wait_queue));
+		if (wait_complete(p_tcb)) {
+			reqflg = true;
+		}
+		ercd = E_OK;
+	}
+	else if (p_semcb->semcnt < p_semcb->p_seminib->maxsem) {
+		p_semcb->semcnt += 1;
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_QOVR;
+	}
+	i_unlock_cpu();
+
+  error_exit:
+	LOG_ISIG_SEM_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_isig_sem */
+
+/*
+ *  Z}tH¹Ìl¾
+ */
+#ifdef TOPPERS_wai_sem
+
+ER
+wai_sem(ID semid)
+{
+	SEMCB	*p_semcb;
+	WINFO_SEM winfo_sem;
+	ER		ercd;
+
+	LOG_WAI_SEM_ENTER(semid);
+	CHECK_DISPATCH();
+	CHECK_SEMID(semid);
+	p_semcb = get_semcb(semid);
+
+	t_lock_cpu();
+	if (p_semcb->p_seminib->sematr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (p_semcb->semcnt >= 1) {
+		p_semcb->semcnt -= 1;
+		ercd = E_OK;
+	}
+	else {
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_SEM);
+		wobj_make_wait((WOBJCB *) p_semcb, (WINFO_WOBJ *) &winfo_sem);
+		dispatch();
+		ercd = winfo_sem.winfo.wercd;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_WAI_SEM_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_wai_sem */
+
+/*
+ *  Z}tH¹Ìl¾i|[Oj
+ */
+#ifdef TOPPERS_pol_sem
+
+ER
+pol_sem(ID semid)
+{
+	SEMCB	*p_semcb;
+	ER		ercd;
+
+	LOG_POL_SEM_ENTER(semid);
+	CHECK_TSKCTX_UNL();
+	CHECK_SEMID(semid);
+	p_semcb = get_semcb(semid);
+
+	t_lock_cpu();
+	if (p_semcb->p_seminib->sematr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (p_semcb->semcnt >= 1) {
+		p_semcb->semcnt -= 1;
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_TMOUT;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_POL_SEM_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_pol_sem */
+
+/*
+ *  Z}tH¹Ìl¾i^CAEg èj
+ */
+#ifdef TOPPERS_twai_sem
+
+ER
+twai_sem(ID semid, TMO tmout)
+{
+	SEMCB	*p_semcb;
+	WINFO_SEM winfo_sem;
+	TMEVTB	tmevtb;
+	ER		ercd;
+
+	LOG_TWAI_SEM_ENTER(semid, tmout);
+	CHECK_DISPATCH();
+	CHECK_SEMID(semid);
+	CHECK_TMOUT(tmout);
+	p_semcb = get_semcb(semid);
+
+	t_lock_cpu();
+	if (p_semcb->p_seminib->sematr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (p_semcb->semcnt >= 1) {
+		p_semcb->semcnt -= 1;
+		ercd = E_OK;
+	}
+	else if (tmout == TMO_POL) {
+		ercd = E_TMOUT;
+	}
+	else {
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_SEM);
+		wobj_make_wait_tmout((WOBJCB *) p_semcb, (WINFO_WOBJ *) &winfo_sem,
+														&tmevtb, tmout);
+		dispatch();
+		ercd = winfo_sem.winfo.wercd;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_TWAI_SEM_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_twai_sem */
+
+/*
+ *  Z}tHÌÄú»
+ */
+#ifdef TOPPERS_ini_sem
+
+ER
+ini_sem(ID semid)
+{
+	SEMCB	*p_semcb;
+	bool_t	dspreq;
+	ER		ercd;
+    
+	LOG_INI_SEM_ENTER(semid);
+	CHECK_TSKCTX_UNL();
+	CHECK_SEMID(semid);
+	p_semcb = get_semcb(semid);
+
+	t_lock_cpu();
+	if (p_semcb->p_seminib->sematr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else {
+		dspreq = init_wait_queue(&(p_semcb->wait_queue));
+		p_semcb->semcnt = p_semcb->p_seminib->isemcnt;
+		if (dspreq) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_INI_SEM_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ini_sem */
+
+/*
+ *  Z}tHÌóÔQÆ
+ */
+#ifdef TOPPERS_ref_sem
+
+ER
+ref_sem(ID semid, T_RSEM *pk_rsem)
+{
+	SEMCB	*p_semcb;
+	ER		ercd;
+    
+	LOG_REF_SEM_ENTER(semid, pk_rsem);
+	CHECK_TSKCTX_UNL();
+	CHECK_SEMID(semid);
+	p_semcb = get_semcb(semid);
+
+	t_lock_cpu();
+	if (p_semcb->p_seminib->sematr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else {
+		pk_rsem->wtskid = wait_tskid(&(p_semcb->wait_queue));
+		pk_rsem->semcnt = p_semcb->semcnt;
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_REF_SEM_LEAVE(ercd, pk_rsem);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ref_sem */
Index: /asp_ewarm/asp-1.7.0/extension/dcre/kernel/semaphore.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/dcre/kernel/semaphore.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/dcre/kernel/semaphore.h	(revision 61)
@@ -0,0 +1,127 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2000 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: semaphore.h 1966 2010-11-20 07:23:56Z ertl-hiro $
+ */
+
+/*
+ *		Z}tH@\
+ */
+
+#ifndef TOPPERS_SEMAPHORE_H
+#define TOPPERS_SEMAPHORE_H
+
+#include <queue.h>
+
+/*
+ *  Z}tHú»ubN
+ *
+ *  ±Ì\¢ÌÍC¯úEÊMIuWFNgÌú»ubNÌ¤Êª
+ *  iWOBJINIBjðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅC
+ *  ÅÌtB[hª¤ÊÉÈÁÄ¢éD
+ */
+typedef struct semaphore_initialization_block {
+	ATR			sematr;			/* Z}tH®« */
+	uint_t		isemcnt;		/* Z}tHÌ¹Ìúl */
+	uint_t		maxsem;			/* Z}tHÌÅå¹ */
+} SEMINIB;
+
+/*
+ *  Z}tHÇubN
+ *
+ *  ±Ì\¢ÌÍC¯úEÊMIuWFNgÌÇubNÌ¤ÊªiWOBJCBj
+ *  ðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅCÅÌ2ÂÌ
+ *  tB[hª¤ÊÉÈÁÄ¢éD
+ */
+typedef struct semaphore_control_block {
+	QUEUE		wait_queue;		/* Z}tHÒ¿L
+[ */
+	const SEMINIB *p_seminib;	/* ú»ubNÖÌ|C^ */
+	uint_t		semcnt;			/* Z}tH»ÝJEgl */
+} SEMCB;
+
+/*
+ *  Z}tHÒ¿îñubNÌè`
+ *
+ *  ±Ì\¢ÌÍC¯úEÊMIuWFNgÌÒ¿îñubNÌ¤Êª
+ *  iWINFO_WOBJjðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅC
+ *  ·×ÄÌtB[hª¤ÊÉÈÁÄ¢éD
+ */
+typedef struct semaphore_waiting_information {
+	WINFO	winfo;			/* WÌÒ¿îñubN */
+	SEMCB	*p_semcb;		/* ÒÁÄ¢éZ}tHÌÇubN */
+} WINFO_SEM;
+
+/*
+ *  gpµÄ¢È¢Z}tHÇubNÌXg
+ */
+extern QUEUE	free_semcb;
+
+/*
+ *  Z}tHIDÌÅålikernel_cfg.cj
+ */
+extern const ID	tmax_semid;
+extern const ID	tmax_ssemid;
+
+/*
+ *  Z}tHú»ubNÌGAikernel_cfg.cj
+ */
+extern const SEMINIB	seminib_table[];
+extern SEMINIB			aseminib_table[];
+
+/*
+ *  Z}tHÇubNÌGAikernel_cfg.cj
+ */
+extern SEMCB	semcb_table[];
+
+/*
+ *  Z}tHÇubN©çZ}tHIDðæèo·½ßÌ}N
+ */
+#define	SEMID(p_semcb)	((ID)(((p_semcb) - semcb_table) + TMIN_SEMID))
+
+/*
+ *  Z}tH@\Ìú»
+ */
+extern void	initialize_semaphore(void);
+
+#endif /* TOPPERS_SEMAPHORE_H */
Index: /asp_ewarm/asp-1.7.0/extension/dcre/kernel/startup.c
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/dcre/kernel/startup.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/dcre/kernel/startup.c	(revision 61)
@@ -0,0 +1,212 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: startup.c 1966 2010-11-20 07:23:56Z ertl-hiro $
+ */
+
+/*
+ *		J[lÌú»ÆI¹
+ */
+
+#include "kernel_impl.h"
+#include "time_event.h"
+#include <sil.h>
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_KER_ENTER
+#define LOG_KER_ENTER()
+#endif /* LOG_KER_ENTER */
+
+#ifndef LOG_KER_LEAVE
+#define LOG_KER_LEAVE()
+#endif /* LOG_KER_LEAVE */
+
+#ifndef LOG_EXT_KER_ENTER
+#define LOG_EXT_KER_ENTER()
+#endif /* LOG_EXT_KER_ENTER */
+
+#ifndef LOG_EXT_KER_LEAVE
+#define LOG_EXT_KER_LEAVE(ercd)
+#endif /* LOG_EXT_KER_LEAVE */
+
+#ifdef TOPPERS_sta_ker
+
+/*
+ *  J[l®ìóÔtO
+ *
+ *  X^[gAbv[`ÅCfalsei0jÉú»³êé±ÆðúÒµÄ
+ *  ¢éD
+ */
+bool_t	kerflg = false;
+
+/*
+ *  J[lÌN®
+ */
+void
+sta_ker(void)
+{
+	/*
+	 *  ^[QbgË¶Ìú»
+	 */
+	target_initialize();
+
+	/*
+	 *  eW
+[Ìú»
+	 *
+	 *  ^CCxgÇW
+[Í¼ÌW
+[æèæÉú»
+	 *  ·éKvª éD
+	 */
+	initialize_kmm();
+	initialize_tmevt();
+	initialize_object();
+
+	/*
+	 *  ú»[`ÌÀs
+	 */ 
+	call_inirtn();
+
+	/*
+	 *  J[l®ìÌJn
+	 */
+	kerflg = true;
+	LOG_KER_ENTER();
+	start_dispatch();
+	assert(0);
+}
+
+#endif /* TOPPERS_sta_ker */
+
+/*
+ *  J[lÌI¹
+ */
+#ifdef TOPPERS_ext_ker
+
+ER
+ext_ker(void)
+{
+	SIL_PRE_LOC;
+
+	LOG_EXT_KER_ENTER();
+
+	/*
+	 *  ÝbNóÔÉÚs
+	 */
+	SIL_LOC_INT();
+
+	/*
+	 *  J[l®ìÌI¹
+	 */
+	LOG_KER_LEAVE();
+	kerflg = false;
+
+	/*
+	 *  J[lÌI¹ÌÄoµ
+	 *
+	 *  ñ^XNReLXgÉØè·¦ÄCexit_kernelðÄÑo·D
+	 */
+	call_exit_kernel();
+	return(E_SYS);
+}
+
+/*
+ *  J[lÌI¹
+ */
+void
+exit_kernel(void)
+{
+	/*
+	 *  I¹[`ÌÀs
+	 */
+	call_terrtn();
+
+	/*
+	 *  ^[QbgË¶ÌI¹
+	 */
+	target_exit();
+	assert(0);
+}
+
+#endif /* TOPPERS_ext_ker */
+
+/*
+ *  J[lÌèt¯éÌæÌÇ
+ *
+ *  Ìæðæª©çÉèÄCðú³ê½ÌæðÄpµÈ
+ *  ¢ÇW
+[D
+ */
+#ifdef TOPPERS_kermem
+#ifndef OMIT_KMM_ALLOCONLY
+
+static void	*kmm_brk;
+
+void
+initialize_kmm(void)
+{
+	kmm_brk = ((char *) kmm) + kmmsz;
+}
+
+void *
+kernel_malloc(SIZE size)
+{
+	if (((char *) kmm_brk) - ((char *) kmm) >= size) {
+		kmm_brk = ((char *) kmm_brk) - size;
+		return(kmm_brk);
+	}
+	else {
+		return(NULL);
+	}
+}
+
+void
+kernel_free(void *ptr)
+{
+}
+
+#endif /* OMIT_KMM_ALLOCONLY */
+#endif /* TOPPERS_kermem */
Index: /asp_ewarm/asp-1.7.0/extension/dcre/kernel/task.c
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/dcre/kernel/task.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/dcre/kernel/task.c	(revision 61)
@@ -0,0 +1,512 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  $Id: task.c 2018 2010-12-31 13:43:05Z ertl-hiro $
+ */
+
+/*
+ *		^XNÇW
+[
+ */
+
+#include "kernel_impl.h"
+#include "wait.h"
+#include "task.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_TEX_ENTER
+#define LOG_TEX_ENTER(p_tcb, texptn)
+#endif /* LOG_TEX_ENTER */
+
+#ifndef LOG_TEX_LEAVE
+#define LOG_TEX_LEAVE(p_tcb)
+#endif /* LOG_TEX_LEAVE */
+
+#ifdef TOPPERS_tskini
+
+/*
+ *  ÀsóÔÌ^XN
+ */
+TCB		*p_runtsk;
+
+/*
+ *  ÅDæÊÌ^XN
+ */
+TCB		*p_schedtsk;
+
+/*
+ *  ^XNfBXpb`^^XNáO[`N®vtO
+ */
+bool_t	reqflg;
+
+/*
+ *  ÝDæx}XNSðóÔ
+ */
+bool_t	ipmflg;
+
+/*
+ *  fBXpb`Ö~óÔ
+ */
+bool_t	disdsp;
+
+/*
+ *  ^XNfBXpb`Â\óÔ
+ */
+bool_t	dspflg;
+
+/*
+ *  fBL
+[
+ */
+QUEUE	ready_queue[TNUM_TPRI];
+
+/*
+ *  fBL
+[T[`Ì½ßÌrbg}bv
+ */
+uint16_t	ready_primap;
+
+/*
+ *  gpµÄ¢È¢TCBÌXg
+ */
+QUEUE	free_tcb;
+
+/*
+ *  ^XNÇW
+[Ìú»
+ */
+void
+initialize_task(void)
+{
+	uint_t	i, j;
+	TCB		*p_tcb;
+	TINIB	*p_tinib;
+
+	p_runtsk = p_schedtsk = NULL;
+	reqflg = false;
+	ipmflg = true;
+	disdsp = false;
+	dspflg = true;
+
+	for (i = 0; i < TNUM_TPRI; i++) {
+		queue_initialize(&(ready_queue[i]));
+	}
+	ready_primap = 0U;
+
+	for (i = 0; i < tnum_stsk; i++) {
+		j = INDEX_TSK(torder_table[i]);
+		p_tcb = &(tcb_table[j]);
+		p_tcb->p_tinib = &(tinib_table[j]);
+		p_tcb->actque = false;
+		make_dormant(p_tcb);
+		if ((p_tcb->p_tinib->tskatr & TA_ACT) != 0U) {
+			make_active(p_tcb);
+		}
+	}
+	queue_initialize(&free_tcb);
+	for (j = 0; i < tnum_tsk; i++, j++) {
+		p_tcb = &(tcb_table[i]);
+		p_tinib = &(atinib_table[j]);
+		p_tinib->tskatr = TA_NOEXS;
+		p_tcb->p_tinib = ((const TINIB *) p_tinib);
+		queue_insert_prev(&free_tcb, &(p_tcb->task_queue));
+	}
+}
+
+#endif /* TOPPERS_tskini */
+
+/*
+ *  rbg}bvT[`Ö
+ *
+ *  bitmapàÌ1ÌrbgÌàCÅàºÊiEjÌàÌðT[`µC»Ìrb
+ *  gÔðÔ·DrbgÔÍCÅºÊrbgð0Æ·éDbitmapÉ0ðwè
+ *  µÄÍÈçÈ¢D±ÌÖÅÍCbitmapª16rbgÅ é±Æð¼èµC
+ *  uint16_t^ÆµÄ¢éD
+ *
+ *  rbgT[`½ßðÂvZbTÅÍCrbgT[`½ßðg¤æ¤É
+ *  «¼µ½ûªø¦ªÇ¢êª éD±Ìæ¤ÈêÉÍC^[Qbg
+ *  Ë¶ÅrbgT[`½ßðgÁ½bitmap_searchðè`µC
+ *  OMIT_BITMAP_SEARCHð}Nè`·êÎæ¢DÜ½CrbgT[`½ßÌ
+ *  T[`ûüªtÈÇÌRÅDæxÆrbgÆÌÎðÏXµ½¢êÉ
+ *  ÍCPRIMAP_BITð}Nè`·êÎæ¢D
+ *
+ *  Ü½CCuÉffsª éÈçCÌæ¤Éè`µÄCuÖð
+ *  gÁ½ûªø¦ªÇ¢Â\«à éD
+ *		#define	bitmap_search(bitmap) (ffs(bitmap) - 1)
+ */
+#ifndef PRIMAP_BIT
+#define	PRIMAP_BIT(pri)		(1U << (pri))
+#endif /* PRIMAP_BIT */
+
+#ifndef OMIT_BITMAP_SEARCH
+
+static const unsigned char bitmap_search_table[] = { 0, 1, 0, 2, 0, 1, 0,
+												3, 0, 1, 0, 2, 0, 1, 0 };
+
+Inline uint_t
+bitmap_search(uint16_t bitmap)
+{
+	uint_t	n = 0U;
+
+	assert(bitmap != 0U);
+	if ((bitmap & 0x00ffU) == 0U) {
+		bitmap >>= 8;
+		n += 8;
+	}
+	if ((bitmap & 0x0fU) == 0U) {
+		bitmap >>= 4;
+		n += 4;
+	}
+	return(n + bitmap_search_table[(bitmap & 0x0fU) - 1]);
+}
+
+#endif /* OMIT_BITMAP_SEARCH */
+
+/*
+ *  Dæxrbg}bvªó©Ì`FbN
+ */
+Inline bool_t
+primap_empty(void)
+{
+	return(ready_primap == 0U);
+}
+
+/*
+ *  Dæxrbg}bvÌT[`
+ */
+Inline uint_t
+primap_search(void)
+{
+	return(bitmap_search(ready_primap));
+}
+
+/*
+ *  Dæxrbg}bvÌZbg
+ */
+Inline void
+primap_set(uint_t pri)
+{
+	ready_primap |= PRIMAP_BIT(pri);
+}
+
+/*
+ *  Dæxrbg}bvÌNA
+ */
+Inline void
+primap_clear(uint_t pri)
+{
+	ready_primap &= ~PRIMAP_BIT(pri);
+}
+
+/*
+ *  ÅDæÊ^XNÌT[`
+ */
+#ifdef TOPPERS_tsksched
+
+TCB *
+search_schedtsk(void)
+{
+	uint_t	schedpri;
+
+	schedpri = primap_search();
+	return((TCB *)(ready_queue[schedpri].p_next));
+}
+
+#endif /* TOPPERS_tsksched */
+
+/*
+ *  ÀsÅ«éóÔÖÌJÚ
+ *
+ *  ÅDæÊÌ^XNðXV·éÌÍCÀsÅ«é^XNªÈ©Á½ê
+ *  ÆCp_tcbÌDæxªÅDæÊÌ^XNÌDæxæèà¢êÅ 
+ *  éD
+ */
+#ifdef TOPPERS_tskrun
+
+bool_t
+make_runnable(TCB *p_tcb)
+{
+	uint_t	pri = p_tcb->priority;
+
+	queue_insert_prev(&(ready_queue[pri]), &(p_tcb->task_queue));
+	primap_set(pri);
+
+	if (p_schedtsk == (TCB *) NULL || pri < p_schedtsk->priority) {
+		p_schedtsk = p_tcb;
+		return(dspflg);
+	}
+	return(false);
+}
+
+#endif /* TOPPERS_tskrun */
+
+/*
+ *  ÀsÅ«éóÔ©ç¼ÌóÔÖÌJÚ
+ *
+ *  ÅDæÊÌ^XNðXV·éÌÍCp_tcbªÅDæÊÌ^XNÅ
+ *   Á½êÅ éDp_tcbÆ¯¶DæxÌ^XNª¼É éêÍCp_tcb
+ *  ÌÌ^XNªÅDæÊÉÈéD»¤ÅÈ¢êÍCfBL
+[ð
+ *  T[`·éKvª éD
+ */
+#ifdef TOPPERS_tsknrun
+
+bool_t
+make_non_runnable(TCB *p_tcb)
+{
+	uint_t	pri = p_tcb->priority;
+	QUEUE	*p_queue = &(ready_queue[pri]);
+
+	queue_delete(&(p_tcb->task_queue));
+	if (queue_empty(p_queue)) {
+		primap_clear(pri);
+		if (p_schedtsk == p_tcb) {
+			p_schedtsk = primap_empty() ? (TCB *) NULL : search_schedtsk();
+			return(dspflg);
+		}
+	}
+	else {
+		if (p_schedtsk == p_tcb) {
+			p_schedtsk = (TCB *)(p_queue->p_next);
+			return(dspflg);
+		}
+	}
+	return(false);
+}
+
+#endif /* TOPPERS_tsknrun */
+
+/*
+ *  x~óÔÖÌJÚ
+ */
+#ifdef TOPPERS_tskdmt
+
+void
+make_dormant(TCB *p_tcb)
+{
+	p_tcb->tstat = TS_DORMANT;
+	p_tcb->priority = p_tcb->p_tinib->ipriority;
+	p_tcb->wupque = false;
+	p_tcb->enatex = false;
+	p_tcb->texptn = 0U;
+	LOG_TSKSTAT(p_tcb);
+}
+
+#endif /* TOPPERS_tskdmt */
+
+/*
+ *  x~óÔ©çÀsÅ«éóÔÖÌJÚ
+ */
+#ifdef TOPPERS_tskact
+
+bool_t
+make_active(TCB *p_tcb)
+{
+	activate_context(p_tcb);
+	p_tcb->tstat = TS_RUNNABLE;
+	LOG_TSKSTAT(p_tcb);
+	return(make_runnable(p_tcb));
+}
+
+#endif /* TOPPERS_tskact */
+
+/*
+ *  ^XNÌDæxÌÏX
+ *
+ *  ^XNªÀsÅ«éóÔÌêÉÍCfBL
+[ÌÅÌÊuðÏX·
+ *  éDIuWFNgÌÒ¿L
+[ÌÅÒ¿óÔÉÈÁÄ¢éêÉÍCÒ
+ *  ¿L
+[ÌÅÌÊuðÏX·éD
+ *
+ *  ÅDæÊÌ^XNðXV·éÌÍC(1) p_tcbªÅDæÊÌ^X
+ *  NÅ ÁÄC»ÌDæxðº°½êC(2) p_tcbªÅDæÊÌ^X
+ *  NÅÍÈ­CÏXãÌDæxªÅDæÊÌ^XNÌDæxæèà¢
+ *  êÅ éD(1)ÌêÉÍCfBL
+[ðT[`·éKvª éD
+ */
+#ifdef TOPPERS_tskpri
+
+bool_t
+change_priority(TCB *p_tcb, uint_t newpri)
+{
+	uint_t	oldpri;
+
+	oldpri = p_tcb->priority;
+	p_tcb->priority = newpri;
+
+	if (TSTAT_RUNNABLE(p_tcb->tstat)) {
+		/*
+		 *  ^XNªÀsÅ«éóÔÌê
+		 */
+		queue_delete(&(p_tcb->task_queue));
+		if (queue_empty(&(ready_queue[oldpri]))) {
+			primap_clear(oldpri);
+		}
+		queue_insert_prev(&(ready_queue[newpri]), &(p_tcb->task_queue));
+		primap_set(newpri);
+
+		if (p_schedtsk == p_tcb) {
+			if (newpri >= oldpri) {
+				p_schedtsk = search_schedtsk();
+				return(p_schedtsk != p_tcb && dspflg);
+			}
+		}
+		else {
+			if (newpri < p_schedtsk->priority) {
+				p_schedtsk = p_tcb;
+				return(dspflg);
+			}
+		}
+	}
+	else {
+		if (TSTAT_WAIT_WOBJCB(p_tcb->tstat)) {
+			/*
+			 *  ^XNªC¯úEÊMIuWFNgÌÇubNÌ¤Ê
+			 *  ªiWOBJCBjÌÒ¿L
+[ÉÂÈªêÄ¢éê
+			 */
+			wobj_change_priority(((WINFO_WOBJ *)(p_tcb->p_winfo))->p_wobjcb,
+																	p_tcb);
+		}
+	}
+	return(false);
+}
+
+#endif /* TOPPERS_tskpri */
+
+/*
+ *  fBL
+[Ìñ]
+ *
+ *  ÅDæÊÌ^XNðXV·éÌÍCÅDæÊÌ^XNª^XNL
+ *  
+[ÌöÉÚ®µ½êÅ éD
+ */
+#ifdef TOPPERS_tskrot
+
+bool_t
+rotate_ready_queue(uint_t pri)
+{
+	QUEUE	*p_queue = &(ready_queue[pri]);
+	QUEUE	*p_entry;
+
+	if (!queue_empty(p_queue) && p_queue->p_next->p_next != p_queue) {
+		p_entry = queue_delete_next(p_queue);
+		queue_insert_prev(p_queue, p_entry);
+		if (p_schedtsk == (TCB *) p_entry) {
+			p_schedtsk = (TCB *)(p_queue->p_next);
+			return(dspflg);
+		}
+	}
+	return(false);
+}
+
+#endif /* TOPPERS_tskrot */
+
+/*
+ *  ^XNáO[`ÌÄoµ
+ *
+ *  ASPJ[lÅÍC^XNáO[`àÅCPUbNóÔÉJÚµC
+ *  ³ÌóÔÉß³¸É^[µ½êCJ[lª³ÌóÔÉß·D
+ */
+#ifdef TOPPERS_tsktex
+
+void
+call_texrtn(void)
+{
+	TEXPTN	texptn;
+	bool_t	saved_disdsp;
+
+	saved_disdsp = disdsp;
+	p_runtsk->enatex = false;
+	do {
+		texptn = p_runtsk->texptn;
+		p_runtsk->texptn = 0U;
+
+		t_unlock_cpu();
+		LOG_TEX_ENTER(p_runtsk, texptn);
+		(*((TEXRTN)(p_runtsk->p_tinib->texrtn)))(texptn,
+												p_runtsk->p_tinib->exinf);
+		LOG_TEX_LEAVE(p_runtsk);
+		if (!t_sense_lock()) {
+			t_lock_cpu();
+		}
+		if (!ipmflg) {
+			t_set_ipm(TIPM_ENAALL);
+			ipmflg = true;
+		}
+		disdsp = saved_disdsp;
+		dspflg = !disdsp;
+		p_runtsk->enatex = false;
+		if (p_runtsk != p_schedtsk && dspflg) {
+			/*
+			 *  ±±ÅdispatchðÄÑo·ÍCÝÄAÄoµÉÈÁÄ
+			 *  ¢éªCdispatchðÄÔOÉp_runtsk->enatexðfalseÉµÄ
+			 *  ¨¯ÎxáªÈ¢D»ÌRÉÂ¢ÄÍCuTOPPERS/ASP J[
+			 *  l ÝvvðQÆÌ±ÆD
+			 */
+			dispatch();
+		}
+	} while (p_runtsk->texptn != 0U);
+	p_runtsk->enatex = true;
+}
+
+/*
+ *  ^XNáO[`ÌN®
+ */
+#ifndef OMIT_CALLTEX
+
+void
+calltex(void)
+{
+	if (p_runtsk->enatex && p_runtsk->texptn != 0U && ipmflg) {
+		call_texrtn();
+	}
+}
+
+#endif /* OMIT_CALLTEX */
+#endif /* TOPPERS_tsktex */
Index: /asp_ewarm/asp-1.7.0/extension/dcre/kernel/task.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/dcre/kernel/task.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/dcre/kernel/task.h	(revision 61)
@@ -0,0 +1,528 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  $Id: task.h 2018 2010-12-31 13:43:05Z ertl-hiro $
+ */
+
+/*
+ *		^XNÇW
+[
+ */
+
+#ifndef TOPPERS_TASK_H
+#define TOPPERS_TASK_H
+
+#include <queue.h>
+#include "time_event.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_TSKSTAT
+#define LOG_TSKSTAT(p_tcb)
+#endif /* LOG_TSKSTAT */
+
+/*
+ *  ^XNDæxÌà\»EO\»Ï·}N
+ */
+#define INT_PRIORITY(x)		((uint_t)((x) - TMIN_TPRI))
+#define EXT_TSKPRI(x)		((PRI)(x) + TMIN_TPRI)
+
+/*
+ *  ^XNóÔÌà\»
+ *
+ *  TCBÌ^XNóÔÅÍCÀsóÔiRUNNINGjÆÀsÂ\óÔiREADYj
+ *  ÍæÊµÈ¢D¼óÔðÌµÄCÀsÅ«éóÔiRUNNABLEjÆÄÔD
+ *  ñdÒ¿óÔÍC(TS_WAITING | TS_SUSPENDED)Å\·DTS_WAIT_???ÍÒ
+ *  ¿vöð\µCÒ¿óÔiñdÒ¿óÔðÜÞjÌêÉÌÝÝè·éD
+ */
+#define TS_DORMANT		0x00U			/* x~óÔ */
+#define TS_RUNNABLE		0x01U			/* ÀsÅ«éóÔ */
+#define TS_WAITING		0x02U			/* Ò¿óÔ */
+#define TS_SUSPENDED	0x04U			/* ­§Ò¿óÔ */
+
+#define TS_WAIT_DLY		(0x00U << 3)	/* ÔoßÒ¿ */
+#define TS_WAIT_SLP		(0x01U << 3)	/* N°Ò¿ */
+#define TS_WAIT_RDTQ	(0x02U << 3)	/* f[^L
+[©çÌóMÒ¿ */
+#define TS_WAIT_RPDQ	(0x03U << 3)	/* Dæxf[^L
+[©çÌóMÒ¿ */
+#define TS_WAIT_SEM		(0x04U << 3)	/* Z}tH¹Ìl¾Ò¿ */
+#define TS_WAIT_FLG		(0x05U << 3)	/* CxgtOÒ¿ */
+#define TS_WAIT_SDTQ	(0x06U << 3)	/* f[^L
+[ÖÌMÒ¿ */
+#define TS_WAIT_SPDQ	(0x07U << 3)	/* Dæxf[^L
+[ÖÌMÒ¿ */
+#define TS_WAIT_MBX		(0x08U << 3)	/* [{bNX©çÌóMÒ¿ */
+#define TS_WAIT_MPF		(0x09U << 3)	/* Åè·ubNÌl¾Ò¿ */
+
+/*
+ *  ^XNóÔ»Ê}N
+ *
+ *  TSTAT_DORMANTÍ^XNªx~óÔÅ é©Ç¤©ðCTSTAT_RUNNABLEÍ
+ *  ^XNªÀsÅ«éóÔÅ é©Ç¤©ð»Ê·éDTSTAT_WAITINGÍÒ
+ *  ¿óÔÆñdÒ¿óÔÌ¢¸ê©Å é©Ç¤©ðCTSTAT_SUSPENDEDÍ
+ *  ­§Ò¿óÔÆñdÒ¿óÔÌ¢¸ê©Å é©Ç¤©ð»Ê·éD
+ */
+#define TSTAT_DORMANT(tstat)	((tstat) == TS_DORMANT)
+#define TSTAT_RUNNABLE(tstat)	(((tstat) & TS_RUNNABLE) != 0U)
+#define TSTAT_WAITING(tstat)	(((tstat) & TS_WAITING) != 0U)
+#define TSTAT_SUSPENDED(tstat)	(((tstat) & TS_SUSPENDED) != 0U)
+
+/*
+ *  ^XNÒ¿vö»Ê}N
+ *
+ *  TSTAT_WAIT_SLPÍ^XNªN°Ò¿Å é©Ç¤©ðCTSTAT_WAIT_WOBJ
+ *  Í^XNª¯úEÊMIuWFNgÉÎ·éÒ¿Å é©i¾¢·¦éÆC
+ *  ¯úÊMIuWFNgÌÒ¿L
+[ÉÂÈªêÄ¢é©jÇ¤©ð»Ê·
+ *  éDÜ½CTSTAT_WAIT_WOBJCBÍ^XNª¯úEÊMIuWFNgÌÇ
+ *  ubNÌ¤ÊªiWOBJCBjÌÒ¿L
+[ÉÂÈªêÄ¢é©Ç¤©ð
+ *  »Ê·éD
+ *
+ *  TSTAT_WAIT_SLPÍCCÓÌ^XNóÔÌ©çC^XNªN°Ò¿Å é
+ *  ±Æð»ÊÅ«éD·Èí¿CTSTAT_WAITINGÉæèÒ¿óÔÅ é±Æð
+ *  »Ê¹¸ÉCTSTAT_SLP¾¯ðp¢ÄN°Ò¿óÔÅ é±Æð»ÊÅ«éD
+ *  ±êðø¦IÉÀ»·é½ßÉCTS_WAIT_SLPÌlðC(0x00U << 3)ÅÍÈ
+ *  ­(0x01U << 3)ÆµÄ¢éD»Ì½ßC^XNªÔoßÒ¿óÔÅ é
+ *  ±Æð»Ê·é½ßÌTSTAT_WAIT_DLYðCTSTAT_WAIT_SLPÆ¯lÌû@Å
+ *  À»·é±ÆÍÅ«È¢D
+ */
+#define TS_WAIT_MASK	(0x0fU << 3)	/* Ò¿vöÌæoµ}XN */
+
+#define TSTAT_WAIT_SLP(tstat)		(((tstat) & TS_WAIT_MASK) == TS_WAIT_SLP)
+#define TSTAT_WAIT_WOBJ(tstat)		(((tstat) & TS_WAIT_MASK) >= TS_WAIT_RDTQ)
+#define TSTAT_WAIT_WOBJCB(tstat)	(((tstat) & TS_WAIT_MASK) >= TS_WAIT_SEM)
+
+/*
+ *  Ò¿îñubNiWINFOjÌè`
+ *
+ *  ^XNªÒ¿óÔÌÔÍCTCB¨æÑ»Ìp_winfoÅw³êéWINFOðÌ
+ *  æ¤ÉÝèµÈ¯êÎÈçÈ¢D
+ *
+ *  (a) TCBÌ^XNóÔðÒ¿óÔiTS_WAITINGjÉ·éD»ÌÛÉCÒ¿
+ *  vöiTS_WAIT_???jàÝè·éD
+ *
+ *  (b) ^CAEgðÄ·é½ßÉC^CCxgubNðo^·éD
+ *  o^·é^CCxgubNÍCÒ¿ÉüéT[rXR[Ö
+ *  Ì[JÏÆµÄmÛµC»êÖÌ|C^ðWINFOÌp_tmevtbÉL
+ *  ¯·éD^CAEgÌÄªKvÈ¢êiivÒ¿ÌêjÉÍC
+ *  p_tmevtbðNULLÉ·éD
+ *
+ *  ¯úEÊMIuWFNgÉÎ·éÒ¿óÔÌêÉÍCWÌWINFOÉ
+ *  p_wobjcbtB[hðÇÁµ½\¢ÌiWINFO_WOBJCwait.hÅè`jðg
+ *  ¤DÜ½CÈºÌ(c)`(e)ÌÝèðs¤Kvª éD¯úEÊMIuWF
+ *  NgÉÖWµÈ¢Ò¿iN°Ò¿CÔoßÒ¿jÌêÉÍC(c)`(e)
+ *  ÍKvÈ¢D
+ *
+ *  (c) TCBðÒ¿ÎÛÌ¯úEÊMIuWFNgÌÒ¿L
+[ÉÂÈ®DÒ
+ *  ¿L
+[ÉÂÈ®½ßÉCtask_queueðg¤D
+ *
+ *  (d) Ò¿ÎÛÌ¯úEÊMIuWFNgÌÇubNÖÌ|C^ðC
+ *  WINFO_WOBJÌp_wobjcbÉL¯·éD
+ *
+ *  (e) Ò¿ÎÛÌ¯úEÊMIuWFNgÉË¶µÄL¯·é±ÆªKvÈ
+ *  îñª éêÉÍCWINFO_WOBJÉKvÈîñÌ½ßÌtB[hðÇÁ
+ *  µ½\¢Ìðè`µCWINFO_WOBJÌãíèÉp¢éD
+ *
+ *  Ò¿óÔðð·éÛÉÍCÒ¿ðµ½^XNÉÎ·éÔlðWINFOÌ
+ *  wercdÉÝè·éDwercdªKvÈÌÍÒ¿ðÈ~Å éÌÉÎµÄC
+ *  p_tmevtbÍÒ¿ðãÍKvÈ¢½ßCßñÌ½ßÉ¤pÌðgÁ
+ *  Ä¢éD»Ì½ßCwercdÖG[R[hðÝè·éÌÍC^CCxg
+ *  ubNðo^ðµ½ãÉµÈ¯êÎÈçÈ¢D
+ */
+typedef union waiting_information {
+	ER		wercd;			/* Ò¿ðÌG[R[h */
+	TMEVTB	*p_tmevtb;		/* Ò¿óÔpÌ^CCxgubN */
+} WINFO;
+
+/*
+ *  ^XNú»ubN
+ *
+ *  ^XNÉÖ·éîñðClªÏíçÈ¢½ßÉROMÉu¯éªi^XN
+ *  ú»ubNjÆClªÏ»·é½ßÉRAMÉu©È¯êÎÈçÈ¢
+ *  ªi^XNÇubNCTCBjÉª£µCTCBàÉÎ·é^XNú»
+ *  ubNðw·|C^ðüêéD^XNú»ubNàÉÎ·é
+ *  TCBðw·|C^ðüêéû@ÌûªCRAMÌßñÌÏ_©çÍ]Üµ¢
+ *  ªCÀsø¦ª«­Èé½ßÉÌpµÄ¢È¢D¼ÌIuWFNgÉÂ¢
+ *  Äà¯lÉµ¤D
+ *
+ *  ^XNú»ubNÉÍCDEF_TEXÅè`³êé^XNáO[`
+ *  ÉÖ·éîñàÜÞD
+ */
+typedef struct task_initialization_block {
+	ATR			tskatr;			/* ^XN®« */
+	intptr_t	exinf;			/* ^XNÌg£îñ */
+	TASK		task;			/* ^XNÌN®Ôn */
+	uint_t		ipriority;		/* ^XNÌN®Dæxià\»j */
+
+#ifdef USE_TSKINICTXB
+	TSKINICTXB	tskinictxb;		/* ^XNú»ReLXgubN */
+#else /* USE_TSKINICTXB */
+	SIZE		stksz;			/* X^bNÌæÌTCYiÛß½lj */
+	void		*stk;			/* X^bNÌæÌæªÔn */
+#endif /* USE_TSKINICTXB */
+
+	ATR			texatr;			/* ^XNáO[`®« */
+	TEXRTN		texrtn;			/* ^XNáO[`ÌN®Ôn */
+} TINIB;
+
+/*
+ *  TCBÌtB[hÌrbgÌè`
+ *
+ *  vZbTÉæÁÄÍCTCBÌtB[hÌrbgÅgpÊÆ
+ *  «\ªg[hItÉÈé½ßC^[QbgË¶ÉtB[hÌrbg
+ *  ðÏX·é±ÆðµÄ¢éD
+ */
+#ifndef TBIT_TCB_PRIORITY
+#define	TBIT_TCB_PRIORITY		8		/* prioritytB[hÌrbg */
+#endif /* TBIT_TCB_PRIORITY */
+
+/*
+ *  ^XNÇubNiTCBj
+ *
+ *  ASPJ[lÅÍC^XNÌN®vL
+[COÌÅåliTMAX_ACTCNTj
+ *  ÆN°vL
+[COÌÅåliTMAX_WUPCNTjÍ1ÉÅè³êÄ¢é
+ *  ½ßCL
+[CO³êÄ¢é©Ç¤©Ì^UlÅ\»·é±ÆªÅ«éD
+ *  Ü½C­§Ò¿vlXgÌÅåliTMAX_SUSCNTjª1ÉÅè³êÄ¢
+ *  éÌÅC­§Ò¿vlXgisuscntjÍKvÈ¢D
+ *
+ *  TCBÌ¢­Â©ÌtB[hÍCÁèÌ^XNóÔÅÌÝLøÈlðÛµC
+ *  »êÈOÌêÍlªÛØ³êÈ¢iæÁÄCQÆµÄÍÈçÈ¢jDe
+ *  tB[hªLøÈlðÛ·éðÍÌÊèD
+ *
+ *  Eú»ãÍíÉLøF
+ *  		p_tinibCtstatCactque
+ *  Ex~óÔÈOÅLøix~óÔÅÍúlÉÈÁÄ¢éjF
+ *  		priorityCwupqueCenatexCtexptn
+ *  EÒ¿óÔiñdÒ¿óÔðÜÞjÅLøF
+ *  		p_winfo
+ *  EÀsÅ«éóÔÆ¯úEÊMIuWFNgÉÎ·éÒ¿óÔÅLøF
+ *  		task_queue
+ *  EÀsÂ\óÔCÒ¿óÔC­§Ò¿óÔCñdÒ¿óÔÅLøF
+ *  		tskctxb
+ */
+typedef struct task_control_block {
+	QUEUE			task_queue;		/* ^XNL
+[ */
+	const TINIB		*p_tinib;		/* ú»ubNÖÌ|C^ */
+
+#ifdef UINT8_MAX
+	uint8_t			tstat;			/* ^XNóÔià\»j*/
+#else /* UINT8_MAX */
+	BIT_FIELD_UINT	tstat : 8;		/* ^XNóÔià\»j*/
+#endif /* UINT8_MAX */
+#if defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8)
+	uint8_t			priority;		/* »ÝÌDæxià\»j*/
+#else /* defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8) */
+	BIT_FIELD_UINT	priority : TBIT_TCB_PRIORITY;
+									/* »ÝÌDæxià\»j*/
+#endif  /* defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8) */
+	BIT_FIELD_BOOL	actque : 1;		/* N®vL
+[CO */
+	BIT_FIELD_BOOL	wupque : 1;		/* N°vL
+[CO */
+	BIT_FIELD_BOOL	enatex : 1;		/* ^XNáOÂóÔ */
+
+	TEXPTN			texptn;			/* Û¯áOvö */
+	WINFO			*p_winfo;		/* Ò¿îñubNÖÌ|C^ */
+	TSKCTXB			tskctxb;		/* ^XNReLXgubN */
+} TCB;
+
+/*
+ *  ÀsóÔÌ^XN
+ *
+ *  ÀsóÔÌ^XNivZbTªReLXgðÁÄ¢é^XNjÌ
+ *  TCBðw·|C^DÀsóÔÌ^XNªÈ¢êÍNULLÉ·éD
+ *
+ *  T[rXR[ÌÅC©^XNiT[rXR[ðÄÑoµ½^X
+ *  NjÉÖ·éîñðQÆ·éêÍp_runtskðg¤Dp_runtskð«·¦
+ *  éÌÍCfBXpb`iÆú»jÌÝÅ éD
+ */
+extern TCB	*p_runtsk;
+
+/*
+ *  ÅDæÊÌ^XN
+ *
+ *  ÀsÅ«é^XNÌÅÅDæÊÌ^XNÌTCBðw·|C^DÀ
+ *  sÅ«é^XNªÈ¢êÍNULLÉ·éD
+ *
+ *  fBXpb`Ö~óÔÈÇCfBXpb`ªÛ¯³êÄ¢éÔÍp_runtsk
+ *  ÆêvµÄ¢éÆÍÀçÈ¢D
+ */
+extern TCB	*p_schedtsk;
+
+/*
+ *  fBXpb`^^XNáO[`N®vtO
+ *
+ *  Ýnh^CPUáOnhÌoûÉCfBXpb`Ü½Í
+ *  ^XNáO[`ÌN®ðv·é±Æð¦·tOD
+ */
+extern bool_t	reqflg;
+
+/*
+ *  ÝDæx}XNSðóÔ
+ *
+ *  ÝDæx}XNSðóÔÅ é±Æð¦·tOD
+ */
+extern bool_t	ipmflg;
+
+/*
+ *  fBXpb`Ö~óÔ
+ *
+ *  fBXpb`Ö~óÔÅ é±Æð¦·tOD
+ */
+extern bool_t	disdsp;
+
+/*
+ *  ^XNfBXpb`Â\óÔ
+ *
+ *  ÝDæx}XNSðóÔÅ èCfBXpb`ÂóÔÅ éifB
+ *  Xpb`Ö~óÔÅÈ¢j±Æð¦·tOD
+ */
+extern bool_t	dspflg;
+
+/*
+ *  fBL
+[
+ *
+ *  fBL
+[ÍCÀsÅ«éóÔÌ^XNðÇ·é½ßÌL
+[Å éD
+ *  ÀsóÔÌ^XNàÇµÄ¢é½ßCfBiÀsÂ\jL
+[Æ¢¤
+ *  ¼ÌÍ³mÅÍÈ¢ªCfBL
+[Æ¢¤¼Ìªè
+µÄ¢é½ßC±
+ *  Ì¼ÌÅÄÔ±ÆÉ·éD
+ *
+ *  fBL
+[ÍCDæx²ÆÌ^XNL
+[Å\¬³êÄ¢éD^XNÌ
+ *  TCBÍCY·éDæxÌL
+[Éo^³êéD
+ */
+extern QUEUE	ready_queue[TNUM_TPRI];
+
+/*
+ *  fBL
+[T[`Ì½ßÌrbg}bv
+ *
+ *  fBL
+[ÌT[`ðø¦æ­s¤½ßÉCDæx²ÆÌ^XNL
+[
+ *  É^XNªüÁÄ¢é©Ç¤©ð¦·rbg}bvðpÓµÄ¢éDrb
+ *  g}bvðg¤±ÆÅCANZXÌñð¸ç·±ÆªÅ«éªC
+ *  rbgì½ßª[ÀµÄ¢È¢vZbTÅCDæxÌiKª­È¢
+ *  êÉÍCrbg}bvìÌI[o[wbhÌ½ßÉCtÉø¦ª¿
+ *  éÂ\«à éD
+ *
+ *  Dæxª16iKÅ é±Æð¼èµÄ¢é½ßCuint16_t^ÆµÄ¢éD
+ */
+extern uint16_t	ready_primap;
+
+/*
+ *  gpµÄ¢È¢TCBÌXg
+ */
+extern QUEUE	free_tcb;
+
+/*
+ *  ^XNIDÌÅålikernel_cfg.cj
+ */
+extern const ID	tmax_tskid;
+extern const ID	tmax_stskid;
+
+/*
+ *  ^XNú»ubNÌGAikernel_cfg.cj
+ */
+extern const TINIB	tinib_table[];
+extern TINIB		atinib_table[];
+
+/*
+ *  ^XN¶¬e[uikernel_cfg.cj
+ */
+extern const ID	torder_table[];
+
+/*
+ *  TCBÌGAikernel_cfg.cj
+ */
+extern TCB	tcb_table[];
+
+/*
+ *  ^XNÌ
+ */
+#define tnum_tsk	((uint_t)(tmax_tskid - TMIN_TSKID + 1))
+#define tnum_stsk	((uint_t)(tmax_stskid - TMIN_TSKID + 1))
+
+/*
+ *  ^XNID©çTCBðæèo·½ßÌ}N
+ */
+#define INDEX_TSK(tskid)	((uint_t)((tskid) - TMIN_TSKID))
+#define get_tcb(tskid)		(&(tcb_table[INDEX_TSK(tskid)]))
+#define get_tcb_self(tskid)	((tskid) == TSK_SELF ? p_runtsk : get_tcb(tskid))
+
+/*
+ *  TCB©ç^XNIDðæèo·½ßÌ}N
+ */
+#define	TSKID(p_tcb)	((ID)(((p_tcb) - tcb_table) + TMIN_TSKID))
+
+/*
+ *  ^XNÇW
+[Ìú»
+ */
+extern void	initialize_task(void);
+
+/*
+ *  ÅDæÊ^XNÌT[`
+ *
+ *  fBL
+[ÌÅDæÊÌ^XNðT[`µC»ÌTCBÖÌ|C^
+ *  ðÔ·DfBL
+[ªóÌêÉÍC±ÌÖðÄÑoµÄÍÈçÈ¢D
+ */
+extern TCB	*search_schedtsk(void);
+
+/*
+ *  ÀsÅ«éóÔÖÌJÚ
+ *
+ *  p_tcbÅwè³êé^XNðfBL
+[É}ü·éDfBL
+[É}ü
+ *  µ½^XNÌDæxªCÅDæÊÌ^XNÌDæxæèà¢êÍC
+ *  ÅDæÊÌ^XNðXVµCfBXpb`ÂóÔÅ êÎtrueðÔ
+ *  ·D»¤ÅÈ¢êÍfalseðÔ·D
+ */
+extern bool_t	make_runnable(TCB *p_tcb);
+
+/*
+ *  ÀsÅ«éóÔ©ç¼ÌóÔÖÌJÚ
+ *
+ *  p_tcbÅwè³êé^XNðfBL
+[©çí·éDp_tcbÅwèµ½
+ *  ^XNªÅDæÊÌ^XNÅ Á½êÉÍCÅDæÊÌ^XN
+ *  ðÝèµÈ¨µCfBXpb`ÂóÔÅ êÎtrueðÔ·D»¤ÅÈ¢
+ *  êÍfalseðÔ·D^XNÌóÔÍXVµÈ¢D
+ */
+extern bool_t	make_non_runnable(TCB *p_tcb);
+
+/*
+ *  x~óÔÖÌJÚ
+ *
+ *  p_tcbÅwè³êé^XNÌóÔðx~óÔÆ·éDÜ½C^XNÌN®
+ *  Éú»·×«ÏÌú»ÆC^XNN®Ì½ßÌReLXgðÝ
+ *  è·éD
+ */
+extern void	make_dormant(TCB *p_tcb);
+
+/*
+ *  x~óÔ©çÀsÅ«éóÔÖÌJÚ
+ *
+ *  p_tcbÅwè³êé^XNÌóÔðx~óÔ©çÀsÅ«éóÔÆ·éD
+ *  ÀsÅ«éóÔÉJÚµ½^XNÖÌfBXpb`ªKvÈêÍtrueC
+ *  »¤ÅÈ¢êÍfalseðÔ·D
+ */
+extern bool_t	make_active(TCB *p_tcb);
+
+/*
+ *  ^XNÌDæxÌÏX
+ *
+ *  p_tcbÅwè³êé^XNÌDæxðnewpriià\»jÉÏX·éDÜ½C
+ *  KvÈêÉÍÅDæÊÌ^XNðXVµCfBXpb`ÂóÔÅ
+ *   êÎtrueðÔ·D»¤ÅÈ¢êÍfalseðÔ·D
+ */
+extern bool_t	change_priority(TCB *p_tcb, uint_t newpri);
+
+/*
+ *  fBL
+[Ìñ]
+ *
+ *  fBL
+[ÌCpriÅwè³êéDæxÌ^XNL
+[ðñ]³¹éD
+ *  Ü½CKvÈêÉÍÅDæÊÌ^XNðÏXµCfBXpb`ªÛ
+ *  ¯³êÄ¢È¯êÎtrueðÔ·D»¤ÅÈ¢êÍfalseðÔ·D
+ */
+extern bool_t	rotate_ready_queue(uint_t pri);
+
+/*
+ *  ^XNáO[`ÌÄoµ
+ *
+ *  ^XNáO[`ðÄÑo·DÄÑo·OÉCÀsóÔÌ^XNÌ
+ *  Û¯áOvöðNAµC^XNáOÖ~óÔÉµCCPUbNðð
+ *  ·éD
+ *
+ *  ^XNáO[`©çßéÆCÜ¸CPUbNóÔÉßµC»ÌÔ
+ *  ÉÛ¯áOvöª0ÅÈ­ÈÁÄ¢êÎCÄÑ^XNáO[`ð
+ *  ÄÑo·DÛ¯áOvöª0ÌêÉÍCáOÂóÔÉµÄÖ©
+ *  ç^[·éD
+ *
+ *  ±ÌÖÍCÀsóÔÌ^XNªC^XNáOÂóÔienatexª
+ *  truejÅCÛ¯áOvöª0ÅÈ¢itexptnª0ÅÈ¢jêÉÄÑo·±
+ *  ÆðzèµÄ¢éD±ÌÖÍCCPUbNóÔÅÄÑo³È¯êÎÈç
+ *  È¢D
+ */
+extern void	call_texrtn(void);
+
+/*
+ *  ^XNáO[`ÌN®
+ *
+ *  ÀsóÔÌ^XNª^XNáO[`ÌN®ðð½µÄ¢êÎC
+ *  ^XNáO[`ðÄÑo·DCPUáO[`ðÄÑo·
+ *  ÍCêIÉCPUbNðð·éD
+ *
+ *  ±ÌÖÍCfBXpb`âÝnh^CPUáOnhÌoû
+ *  ©çÄÑo³êé±ÆðzèµÄ¢éD±ÌÖÍCCPUbNóÔ
+ *  ÅÄÑo³È¯êÎÈçÈ¢D
+ *
+ *  Àsø¦ðã°é½ßÉC±ÌÖð^[QbgË¶ÅLqµÄàæ¢D
+ *  »ÌêÉÍCOMIT_CALLTEXð}Nè`·éD
+ */
+extern void	calltex(void);
+
+#endif /* TOPPERS_TASK_H */
Index: /asp_ewarm/asp-1.7.0/extension/dcre/kernel/task_except.c
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/dcre/kernel/task_except.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/dcre/kernel/task_except.c	(revision 61)
@@ -0,0 +1,367 @@
+/*
+ *  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-2011 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  $Id: task_except.c 2023 2011-01-02 08:59:06Z ertl-hiro $
+ */
+
+/*
+ *		^XNáO@\
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_DEF_TEX_ENTER
+#define LOG_DEF_TEX_ENTER(tskid, pk_dtex)
+#endif /* LOG_DEF_TEX_ENTER */
+
+#ifndef LOG_DEF_TEX_LEAVE
+#define LOG_DEF_TEX_LEAVE(ercd)
+#endif /* LOG_DEF_TEX_LEAVE */
+
+#ifndef LOG_RAS_TEX_ENTER
+#define LOG_RAS_TEX_ENTER(tskid, rasptn)
+#endif /* LOG_RAS_TEX_ENTER */
+
+#ifndef LOG_RAS_TEX_LEAVE
+#define LOG_RAS_TEX_LEAVE(ercd)
+#endif /* LOG_RAS_TEX_LEAVE */
+
+#ifndef LOG_IRAS_TEX_ENTER
+#define LOG_IRAS_TEX_ENTER(tskid, rasptn)
+#endif /* LOG_IRAS_TEX_ENTER */
+
+#ifndef LOG_IRAS_TEX_LEAVE
+#define LOG_IRAS_TEX_LEAVE(ercd)
+#endif /* LOG_IRAS_TEX_LEAVE */
+
+#ifndef LOG_DIS_TEX_ENTER
+#define LOG_DIS_TEX_ENTER()
+#endif /* LOG_DIS_TEX_ENTER */
+
+#ifndef LOG_DIS_TEX_LEAVE
+#define LOG_DIS_TEX_LEAVE(ercd)
+#endif /* LOG_DIS_TEX_LEAVE */
+
+#ifndef LOG_ENA_TEX_ENTER
+#define LOG_ENA_TEX_ENTER()
+#endif /* LOG_ENA_TEX_ENTER */
+
+#ifndef LOG_ENA_TEX_LEAVE
+#define LOG_ENA_TEX_LEAVE(ercd)
+#endif /* LOG_ENA_TEX_LEAVE */
+
+#ifndef LOG_SNS_TEX_ENTER
+#define LOG_SNS_TEX_ENTER()
+#endif /* LOG_SNS_TEX_ENTER */
+
+#ifndef LOG_SNS_TEX_LEAVE
+#define LOG_SNS_TEX_LEAVE(state)
+#endif /* LOG_SNS_TEX_LEAVE */
+
+#ifndef LOG_REF_TEX_ENTER
+#define LOG_REF_TEX_ENTER(tskid, pk_rtex)
+#endif /* LOG_REF_TEX_ENTER */
+
+#ifndef LOG_REF_TEX_LEAVE
+#define LOG_REF_TEX_LEAVE(ercd, pk_rtex)
+#endif /* LOG_REF_TEX_LEAVE */
+
+/*
+ *  ^XNáO[`Ìè`
+ */
+#ifdef TOPPERS_def_tex
+
+ER_UINT
+def_tex(ID tskid, const T_DTEX *pk_dtex)
+{
+	TCB		*p_tcb;
+	TINIB	*p_tinib;
+	ER		ercd;
+
+	LOG_DEF_TEX_ENTER(tskid, pk_dtex);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID_SELF(tskid);
+	CHECK_RSATR(pk_dtex->texatr, TA_NULL);
+	if (pk_dtex->texrtn != NULL) {
+		CHECK_ALIGN_FUNC(pk_dtex->texrtn);
+		CHECK_NONNULL_FUNC(pk_dtex->texrtn);
+	}
+	p_tcb = get_tcb_self(tskid);
+	p_tinib = (TINIB *)(p_tcb->p_tinib);
+
+	t_lock_cpu();
+	if (TSKID(p_tcb) <= tmax_stskid) {
+		ercd = E_OBJ;
+	}
+	else if (pk_dtex->texrtn != NULL) {
+		if (p_tinib->texrtn != NULL) {
+			ercd = E_OBJ;
+		}
+		else {
+			p_tinib->texatr = pk_dtex->texatr;
+			p_tinib->texrtn = pk_dtex->texrtn;
+			ercd = E_OK;
+		}
+	}
+	else {
+		if (p_tinib->texrtn != NULL) {
+			p_tinib->texrtn = NULL;
+			p_tcb->enatex = false;
+			p_tcb->texptn = 0U;
+			ercd = E_OK;
+		}
+		else {
+			ercd = E_OBJ;
+		}
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_DEF_TEX_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_def_tex */
+
+/*
+ *  ^XNáOÌv
+ */
+#ifdef TOPPERS_ras_tex
+
+ER
+ras_tex(ID tskid, TEXPTN rasptn)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_RAS_TEX_ENTER(tskid, rasptn);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID_SELF(tskid);
+	CHECK_PAR(rasptn != 0U);
+	p_tcb = get_tcb_self(tskid);
+
+	t_lock_cpu();
+	if (p_tcb->p_tinib->tskatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (TSTAT_DORMANT(p_tcb->tstat) || p_tcb->p_tinib->texrtn == NULL) {
+		ercd = E_OBJ;
+	}
+	else {
+		p_tcb->texptn |= rasptn;
+		if (p_tcb == p_runtsk && p_runtsk->enatex && ipmflg) {
+			call_texrtn();
+		}
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_RAS_TEX_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ras_tex */
+
+/*
+ *  ^XNáOÌviñ^XNReLXgpj
+ */
+#ifdef TOPPERS_iras_tex
+
+ER
+iras_tex(ID tskid, TEXPTN rasptn)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_IRAS_TEX_ENTER(tskid, rasptn);
+	CHECK_INTCTX_UNL();
+	CHECK_TSKID(tskid);
+	CHECK_PAR(rasptn != 0U);
+	p_tcb = get_tcb(tskid);
+
+	i_lock_cpu();
+	if (p_tcb->p_tinib->tskatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (TSTAT_DORMANT(p_tcb->tstat) || p_tcb->p_tinib->texrtn == NULL) {
+		ercd = E_OBJ;
+	}
+	else {
+		p_tcb->texptn |= rasptn;
+		if (p_tcb == p_runtsk && p_runtsk->enatex && ipmflg) {
+			reqflg = true;
+		}
+		ercd = E_OK;
+	}
+	i_unlock_cpu();
+
+  error_exit:
+	LOG_IRAS_TEX_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_iras_tex */
+
+/*
+ *  ^XNáOÌÖ~
+ */
+#ifdef TOPPERS_dis_tex
+
+ER
+dis_tex(void)
+{
+	ER		ercd;
+
+	LOG_DIS_TEX_ENTER();
+	CHECK_TSKCTX_UNL();
+
+	t_lock_cpu();
+	if (p_runtsk->p_tinib->texrtn == NULL) {
+		ercd = E_OBJ;
+	}
+	else {
+		p_runtsk->enatex = false;
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_DIS_TEX_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_dis_tex */
+
+/*
+ *  ^XNáOÌÂ
+ */
+#ifdef TOPPERS_ena_tex
+
+ER
+ena_tex(void)
+{
+	ER		ercd;
+
+	LOG_ENA_TEX_ENTER();
+	CHECK_TSKCTX_UNL();
+
+	t_lock_cpu();
+	if (p_runtsk->p_tinib->texrtn == NULL) {
+		ercd = E_OBJ;
+	}
+	else {
+		p_runtsk->enatex = true;
+		if (p_runtsk->texptn != 0U && ipmflg) {
+			call_texrtn();
+		}
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_ENA_TEX_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ena_tex */
+
+/*
+ *  ^XNáOÖ~óÔÌQÆ
+ */
+#ifdef TOPPERS_sns_tex
+
+bool_t
+sns_tex(void)
+{
+	bool_t	state;
+
+	LOG_SNS_TEX_ENTER();
+	state = (p_runtsk != NULL && p_runtsk->enatex) ? false : true;
+	LOG_SNS_TEX_LEAVE(state);
+	return(state);
+}
+
+#endif /* TOPPERS_sns_tex */
+
+/*
+ *  ^XNáOÌóÔQÆ
+ */
+#ifdef TOPPERS_ref_tex
+
+ER
+ref_tex(ID tskid, T_RTEX *pk_rtex)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_REF_TEX_ENTER(tskid, pk_rtex);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID_SELF(tskid);
+	p_tcb = get_tcb_self(tskid);
+
+	t_lock_cpu();
+	if (p_tcb->p_tinib->tskatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (TSTAT_DORMANT(p_tcb->tstat) || p_tcb->p_tinib->texrtn == NULL) {
+		ercd = E_OBJ;
+	}
+	else {
+		pk_rtex->texstat = (p_tcb->enatex) ? TTEX_ENA : TTEX_DIS;
+		pk_rtex->pndptn = p_tcb->texptn;
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_REF_TEX_LEAVE(ercd, pk_rtex);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ref_tex */
Index: /asp_ewarm/asp-1.7.0/extension/dcre/kernel/task_manage.c
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/dcre/kernel/task_manage.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/dcre/kernel/task_manage.c	(revision 61)
@@ -0,0 +1,586 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: task_manage.c 2018 2010-12-31 13:43:05Z ertl-hiro $
+ */
+
+/*
+ *		^XNÇ@\
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_ACRE_TSK_ENTER
+#define LOG_ACRE_TSK_ENTER(pk_ctsk)
+#endif /* LOG_ACRE_TSK_ENTER */
+
+#ifndef LOG_ACRE_TSK_LEAVE
+#define LOG_ACRE_TSK_LEAVE(ercd)
+#endif /* LOG_ACRE_TSK_LEAVE */
+
+#ifndef LOG_DEL_TSK_ENTER
+#define LOG_DEL_TSK_ENTER(tskid)
+#endif /* LOG_DEL_TSK_ENTER */
+
+#ifndef LOG_DEL_TSK_LEAVE
+#define LOG_DEL_TSK_LEAVE(ercd)
+#endif /* LOG_DEL_TSK_LEAVE */
+
+#ifndef LOG_ACT_TSK_ENTER
+#define LOG_ACT_TSK_ENTER(tskid)
+#endif /* LOG_ACT_TSK_ENTER */
+
+#ifndef LOG_ACT_TSK_LEAVE
+#define LOG_ACT_TSK_LEAVE(ercd)
+#endif /* LOG_ACT_TSK_LEAVE */
+
+#ifndef LOG_IACT_TSK_ENTER
+#define LOG_IACT_TSK_ENTER(tskid)
+#endif /* LOG_IACT_TSK_ENTER */
+
+#ifndef LOG_IACT_TSK_LEAVE
+#define LOG_IACT_TSK_LEAVE(ercd)
+#endif /* LOG_IACT_TSK_LEAVE */
+
+#ifndef LOG_CAN_ACT_ENTER
+#define LOG_CAN_ACT_ENTER(tskid)
+#endif /* LOG_CAN_ACT_ENTER */
+
+#ifndef LOG_CAN_ACT_LEAVE
+#define LOG_CAN_ACT_LEAVE(ercd)
+#endif /* LOG_CAN_ACT_LEAVE */
+
+#ifndef LOG_EXT_TSK_ENTER
+#define LOG_EXT_TSK_ENTER()
+#endif /* LOG_EXT_TSK_ENTER */
+
+#ifndef LOG_EXT_TSK_LEAVE
+#define LOG_EXT_TSK_LEAVE(ercd)
+#endif /* LOG_EXT_TSK_LEAVE */
+
+#ifndef LOG_TER_TSK_ENTER
+#define LOG_TER_TSK_ENTER(tskid)
+#endif /* LOG_TER_TSK_ENTER */
+
+#ifndef LOG_TER_TSK_LEAVE
+#define LOG_TER_TSK_LEAVE(ercd)
+#endif /* LOG_TER_TSK_LEAVE */
+
+#ifndef LOG_CHG_PRI_ENTER
+#define LOG_CHG_PRI_ENTER(tskid, tskpri)
+#endif /* LOG_CHG_PRI_ENTER */
+
+#ifndef LOG_CHG_PRI_LEAVE
+#define LOG_CHG_PRI_LEAVE(ercd)
+#endif /* LOG_CHG_PRI_LEAVE */
+
+#ifndef LOG_GET_PRI_ENTER
+#define LOG_GET_PRI_ENTER(tskid, p_tskpri)
+#endif /* LOG_GET_PRI_ENTER */
+
+#ifndef LOG_GET_PRI_LEAVE
+#define LOG_GET_PRI_LEAVE(ercd, tskpri)
+#endif /* LOG_GET_PRI_LEAVE */
+
+#ifndef LOG_GET_INF_ENTER
+#define LOG_GET_INF_ENTER(p_exinf)
+#endif /* LOG_GET_INF_ENTER */
+
+#ifndef LOG_GET_INF_LEAVE
+#define LOG_GET_INF_LEAVE(ercd, exinf)
+#endif /* LOG_GET_INF_LEAVE */
+
+/*
+ *  ^XNÌ¶¬
+ */
+#ifdef TOPPERS_acre_tsk
+
+ER_UINT
+acre_tsk(const T_CTSK *pk_ctsk)
+{
+	TCB		*p_tcb;
+	TINIB	*p_tinib;
+	ATR		tskatr;
+	STK_T	*stk;
+	ER		ercd;
+
+	LOG_ACRE_TSK_ENTER(pk_ctsk);
+	CHECK_TSKCTX_UNL();
+	CHECK_RSATR(pk_ctsk->tskatr, TA_ACT|TARGET_TSKATR);
+	CHECK_ALIGN_FUNC(pk_ctsk->task);
+	CHECK_NONNULL_FUNC(pk_ctsk->task);
+	CHECK_TPRI(pk_ctsk->itskpri);
+	CHECK_STKSZ_MIN(pk_ctsk->stksz);
+	CHECK_ALIGN_STKSZ(pk_ctsk->stksz);
+	CHECK_ALIGN_STACK(pk_ctsk->stk);
+	tskatr = pk_ctsk->tskatr;
+	stk = pk_ctsk->stk;
+
+	t_lock_cpu();
+	if (queue_empty(&free_tcb)) {
+		ercd = E_NOID;
+	}
+	else {
+		if (stk == NULL) {
+			stk = kernel_malloc(pk_ctsk->stksz);
+			tskatr |= TA_MEMALLOC;
+		}
+		if (stk == NULL) {
+			ercd = E_NOMEM;
+		}
+		else {
+			p_tcb = ((TCB *) queue_delete_next(&free_tcb));
+			p_tinib = (TINIB *)(p_tcb->p_tinib);
+			p_tinib->tskatr = tskatr;
+			p_tinib->exinf = pk_ctsk->exinf;
+			p_tinib->task = pk_ctsk->task;
+			p_tinib->ipriority = INT_PRIORITY(pk_ctsk->itskpri);
+#ifdef USE_TSKINICTXB
+			init_tskinictxb(&(p_tinib->tskinictxb), stk, pk_ctsk);
+#else /* USE_TSKINICTXB */
+			p_tinib->stksz = pk_ctsk->stksz;
+			p_tinib->stk = stk;
+#endif /* USE_TSKINICTXB */
+			p_tinib->texatr = TA_NULL;
+			p_tinib->texrtn = NULL;
+
+			p_tcb->actque = false;
+			make_dormant(p_tcb);
+			if ((p_tcb->p_tinib->tskatr & TA_ACT) != 0U) {
+				make_active(p_tcb);
+			}
+			ercd = TSKID(p_tcb);
+		}
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_ACRE_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_acre_tsk */
+
+/*
+ *  ^XNÌí
+ */
+#ifdef TOPPERS_del_tsk
+
+ER
+del_tsk(ID tskid)
+{
+	TCB		*p_tcb;
+	TINIB	*p_tinib;
+	ER		ercd;
+
+	LOG_DEL_TSK_ENTER(tskid);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID(tskid);
+	p_tcb = get_tcb(tskid);
+
+	t_lock_cpu();
+	if (p_tcb->p_tinib->tskatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (TSKID(p_tcb) > tmax_stskid && TSTAT_DORMANT(p_tcb->tstat)) {
+		p_tinib = (TINIB *)(p_tcb->p_tinib);
+#ifdef USE_TSKINICTXB
+		term_tskinictxb(&(p_tinib->tskinictxb));
+#else /* USE_TSKINICTXB */
+		if ((p_tinib->tskatr & TA_MEMALLOC) != 0U) {
+			kernel_free(p_tinib->stk);
+		}
+#endif /* USE_TSKINICTXB */
+		p_tinib->tskatr = TA_NOEXS;
+		queue_insert_prev(&free_tcb, &(p_tcb->task_queue));
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_OBJ;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_DEL_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_del_tsk */
+
+/*
+ *  ^XNÌN®
+ */
+#ifdef TOPPERS_act_tsk
+
+ER
+act_tsk(ID tskid)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_ACT_TSK_ENTER(tskid);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID_SELF(tskid);
+	p_tcb = get_tcb_self(tskid);
+
+	t_lock_cpu();
+	if (p_tcb->p_tinib->tskatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (TSTAT_DORMANT(p_tcb->tstat)) {
+		if (make_active(p_tcb)) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else if (!(p_tcb->actque)) {
+		p_tcb->actque = true;
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_QOVR;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_ACT_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_act_tsk */
+
+/*
+ *  ^XNÌN®iñ^XNReLXgpj
+ */
+#ifdef TOPPERS_iact_tsk
+
+ER
+iact_tsk(ID tskid)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_IACT_TSK_ENTER(tskid);
+	CHECK_INTCTX_UNL();
+	CHECK_TSKID(tskid);
+	p_tcb = get_tcb(tskid);
+
+	i_lock_cpu();
+	if (p_tcb->p_tinib->tskatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (TSTAT_DORMANT(p_tcb->tstat)) {
+		if (make_active(p_tcb)) {
+			reqflg = true;
+		}
+		ercd = E_OK;
+	}
+	else if (!(p_tcb->actque)) {
+		p_tcb->actque = true;
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_QOVR;
+	}
+	i_unlock_cpu();
+
+  error_exit:
+	LOG_IACT_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_iact_tsk */
+
+/*
+ *  ^XNN®vÌLZ
+ */
+#ifdef TOPPERS_can_act
+
+ER_UINT
+can_act(ID tskid)
+{
+	TCB		*p_tcb;
+	ER_UINT	ercd;
+
+	LOG_CAN_ACT_ENTER(tskid);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID_SELF(tskid);
+	p_tcb = get_tcb_self(tskid);
+
+	t_lock_cpu();
+	if (p_tcb->p_tinib->tskatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else {
+		ercd = p_tcb->actque ? 1 : 0;
+	}
+	p_tcb->actque = false;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_CAN_ACT_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_can_act */
+
+/*
+ *  ©^XNÌI¹
+ */
+#ifdef TOPPERS_ext_tsk
+
+ER
+ext_tsk(void)
+{
+	ER		ercd;
+
+	LOG_EXT_TSK_ENTER();
+	CHECK_TSKCTX();
+
+	if (t_sense_lock()) {
+		/*
+		 *  CPUbNóÔÅext_tskªÄÎê½êÍCCPUbNððµ
+		 *  Ä©ç^XNðI¹·éDÀãÍCT[rXR[àÅÌCPU
+		 *  bNðÈª·êÎæ¢¾¯D
+		 */
+	}
+	else {
+		t_lock_cpu();
+	}
+	if (disdsp) {
+		/*
+		 *  fBXpb`Ö~óÔÅext_tskªÄÎê½êÍCfBXpb
+		 *  `ÂóÔÉµÄ©ç^XNðI¹·éD
+		 */
+		disdsp = false;
+	}
+	if (!ipmflg) {
+		/*
+		 *  ÝDæx}XNiIPMjªTIPM_ENAALLÈOÌóÔÅext_tsk
+		 *  ªÄÎê½êÍCIPMðTIPM_ENAALLÉµÄ©ç^XNðI¹·
+		 *  éD
+		 */
+		t_set_ipm(TIPM_ENAALL);
+		ipmflg = true;
+	}
+	dspflg = true;
+
+	(void) make_non_runnable(p_runtsk);
+	make_dormant(p_runtsk);
+	if (p_runtsk->actque) {
+		p_runtsk->actque = false;
+		(void) make_active(p_runtsk);
+	}
+	exit_and_dispatch();
+	ercd = E_SYS;
+
+  error_exit:
+	LOG_EXT_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ext_tsk */
+
+/*
+ *  ^XNÌ­§I¹
+ */
+#ifdef TOPPERS_ter_tsk
+
+ER
+ter_tsk(ID tskid)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_TER_TSK_ENTER(tskid);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID(tskid);
+	p_tcb = get_tcb(tskid);
+	CHECK_NONSELF(p_tcb);
+
+	t_lock_cpu();
+	if (p_tcb->p_tinib->tskatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (TSTAT_DORMANT(p_tcb->tstat)) {
+		ercd = E_OBJ;
+	}
+	else {
+		if (TSTAT_RUNNABLE(p_tcb->tstat)) {
+			/*
+			 *  p_tcbÍ©^XNÅÈ¢½ßCiVOvZbTÅÍjÀ
+			 *  sóÔÅÈ­Cmake_non_runnable(p_tcb)Å^XNfBXpb
+			 *  `ªKvÉÈé±ÆÍÈ¢D
+			 */
+			(void) make_non_runnable(p_tcb);
+		}
+		else if (TSTAT_WAITING(p_tcb->tstat)) {
+			wait_dequeue_wobj(p_tcb);
+			wait_dequeue_tmevtb(p_tcb);
+		}
+		make_dormant(p_tcb);
+		if (p_tcb->actque) {
+			p_tcb->actque = false;
+			if (make_active(p_tcb)) {
+				dispatch();
+			}
+		}
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_TER_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ter_tsk */
+
+/*
+ *  ^XNÌx[XDæxÌÏX
+ */
+#ifdef TOPPERS_chg_pri
+
+ER
+chg_pri(ID tskid, PRI tskpri)
+{
+	TCB		*p_tcb;
+	uint_t	newpri;
+	ER		ercd;
+
+	LOG_CHG_PRI_ENTER(tskid, tskpri);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID_SELF(tskid);
+	CHECK_TPRI_INI(tskpri);
+	p_tcb = get_tcb_self(tskid);
+	newpri = (tskpri == TPRI_INI) ? p_tcb->p_tinib->ipriority
+										: INT_PRIORITY(tskpri);
+
+	t_lock_cpu();
+	if (p_tcb->p_tinib->tskatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (TSTAT_DORMANT(p_tcb->tstat)) {
+		ercd = E_OBJ;
+	}
+	else {
+		if (change_priority(p_tcb, newpri)) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_CHG_PRI_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_chg_pri */
+
+/*
+ *  ^XNDæxÌQÆ
+ */
+#ifdef TOPPERS_get_pri
+
+ER
+get_pri(ID tskid, PRI *p_tskpri)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_GET_PRI_ENTER(tskid, p_tskpri);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID_SELF(tskid);
+	p_tcb = get_tcb_self(tskid);
+
+	t_lock_cpu();
+	if (p_tcb->p_tinib->tskatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (TSTAT_DORMANT(p_tcb->tstat)) {
+		ercd = E_OBJ;
+	}
+	else {
+		*p_tskpri = EXT_TSKPRI(p_tcb->priority);
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_GET_PRI_LEAVE(ercd, *p_tskpri);
+	return(ercd);
+}
+
+#endif /* TOPPERS_get_pri */
+
+/*
+ *  ©^XNÌg£îñÌQÆ
+ */
+#ifdef TOPPERS_get_inf
+
+ER
+get_inf(intptr_t *p_exinf)
+{
+	ER		ercd;
+
+	LOG_GET_INF_ENTER(p_exinf);
+	CHECK_TSKCTX_UNL();
+
+	t_lock_cpu();
+	*p_exinf = p_runtsk->p_tinib->exinf;
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_GET_INF_LEAVE(ercd, *p_exinf);
+	return(ercd);
+}
+
+#endif /* TOPPERS_get_inf */
Index: /asp_ewarm/asp-1.7.0/extension/dcre/kernel/task_refer.c
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/dcre/kernel/task_refer.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/dcre/kernel/task_refer.c	(revision 61)
@@ -0,0 +1,215 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2005-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: task_refer.c 1966 2010-11-20 07:23:56Z ertl-hiro $
+ */
+
+/*
+ *		^XNÌóÔQÆ@\
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+#include "semaphore.h"
+#include "eventflag.h"
+#include "dataqueue.h"
+#include "pridataq.h"
+#include "mailbox.h"
+#include "mempfix.h"
+#include "time_event.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_REF_TSK_ENTER
+#define LOG_REF_TSK_ENTER(tskid, pk_rtsk)
+#endif /* LOG_REF_TSK_ENTER */
+
+#ifndef LOG_REF_TSK_LEAVE
+#define LOG_REF_TSK_LEAVE(ercd, pk_rtsk)
+#endif /* LOG_REF_TSK_LEAVE */
+
+/*
+ *  ^XNÌóÔQÆ
+ */
+#ifdef TOPPERS_ref_tsk
+
+ER
+ref_tsk(ID tskid, T_RTSK *pk_rtsk)
+{
+	TCB		*p_tcb;
+	uint_t	tstat;
+	ER		ercd;
+
+	LOG_REF_TSK_ENTER(tskid, pk_rtsk);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID_SELF(tskid);
+	p_tcb = get_tcb_self(tskid);
+
+	t_lock_cpu();
+	tstat = p_tcb->tstat;
+	if (p_tcb->p_tinib->tskatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else {
+		if (TSTAT_DORMANT(tstat)) {
+			/*
+	 		 *  ÎÛ^XNªx~óÔÌê
+			 */
+			pk_rtsk->tskstat = TTS_DMT;
+		}
+		else {
+			/*
+	 		 *  ^XNóÔÌæoµ
+			 */
+			if (TSTAT_SUSPENDED(tstat)) {
+				if (TSTAT_WAITING(tstat)) {
+					pk_rtsk->tskstat = TTS_WAS;
+				}
+				else {
+					pk_rtsk->tskstat = TTS_SUS;
+				}
+			}
+			else if (TSTAT_WAITING(tstat)) {
+				pk_rtsk->tskstat = TTS_WAI;
+			}
+			else if (p_tcb == p_runtsk) {
+				pk_rtsk->tskstat = TTS_RUN;
+			}
+			else {
+				pk_rtsk->tskstat = TTS_RDY;
+			}
+
+			/*
+	 		 *  »ÝDæxÆx[XDæxÌæoµ
+			 */
+			pk_rtsk->tskpri = EXT_TSKPRI(p_tcb->priority);
+			pk_rtsk->tskbpri = EXT_TSKPRI(p_tcb->priority);
+
+			if (TSTAT_WAITING(tstat)) {
+				/*
+		 		 *  Ò¿vöÆÒ¿ÎÛÌIuWFNgÌIDÌæoµ
+				 */
+				switch (tstat & TS_WAIT_MASK) {
+				case TS_WAIT_SLP:
+					pk_rtsk->tskwait = TTW_SLP;
+					break;
+				case TS_WAIT_DLY:
+					pk_rtsk->tskwait = TTW_DLY;
+					break;
+				case TS_WAIT_SEM:
+					pk_rtsk->tskwait = TTW_SEM;
+					pk_rtsk->wobjid = SEMID(((WINFO_SEM *)(p_tcb->p_winfo))
+																->p_semcb);
+					break;
+				case TS_WAIT_FLG:
+					pk_rtsk->tskwait = TTW_FLG;
+					pk_rtsk->wobjid = FLGID(((WINFO_FLG *)(p_tcb->p_winfo))
+																->p_flgcb);
+					break;
+				case TS_WAIT_SDTQ:
+					pk_rtsk->tskwait = TTW_SDTQ;
+					pk_rtsk->wobjid = DTQID(((WINFO_DTQ *)(p_tcb->p_winfo))
+																->p_dtqcb);
+					break;
+				case TS_WAIT_RDTQ:
+					pk_rtsk->tskwait = TTW_RDTQ;
+					pk_rtsk->wobjid = DTQID(((WINFO_DTQ *)(p_tcb->p_winfo))
+																->p_dtqcb);
+					break;
+				case TS_WAIT_SPDQ:
+					pk_rtsk->tskwait = TTW_SPDQ;
+					pk_rtsk->wobjid = PDQID(((WINFO_PDQ *)(p_tcb->p_winfo))
+																->p_pdqcb);
+					break;
+				case TS_WAIT_RPDQ:
+					pk_rtsk->tskwait = TTW_RPDQ;
+					pk_rtsk->wobjid = PDQID(((WINFO_PDQ *)(p_tcb->p_winfo))
+																->p_pdqcb);
+					break;
+				case TS_WAIT_MBX:
+					pk_rtsk->tskwait = TTW_MBX;
+					pk_rtsk->wobjid = MBXID(((WINFO_MBX *)(p_tcb->p_winfo))
+																->p_mbxcb);
+					break;
+				case TS_WAIT_MPF:
+					pk_rtsk->tskwait = TTW_MPF;
+					pk_rtsk->wobjid = MPFID(((WINFO_MPF *)(p_tcb->p_winfo))
+																->p_mpfcb);
+					break;
+				}
+
+				/*
+		 		 *  ^CAEg·éÜÅÌÔÌæoµ
+				 */
+				if (p_tcb->p_winfo->p_tmevtb != NULL) {
+					pk_rtsk->lefttmo
+							= (TMO) tmevt_lefttim(p_tcb->p_winfo->p_tmevtb);
+				}
+				else {
+					pk_rtsk->lefttmo = TMO_FEVR;
+				}
+			}
+
+			/*
+	 		 *  N°vL
+[COÌæoµ
+			 */
+			pk_rtsk->wupcnt = p_tcb->wupque ? 1U : 0U;
+		}
+
+		/*
+		 *  N®vL
+[COÌæoµ
+		 */
+		pk_rtsk->actcnt = p_tcb->actque ? 1U : 0U;
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_REF_TSK_LEAVE(ercd, pk_rtsk);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ref_tsk */
Index: /asp_ewarm/asp-1.7.0/extension/dcre/kernel/task_sync.c
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/dcre/kernel/task_sync.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/dcre/kernel/task_sync.c	(revision 61)
@@ -0,0 +1,556 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: task_sync.c 1966 2010-11-20 07:23:56Z ertl-hiro $
+ */
+
+/*
+ *		^XNt®¯ú@\
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_SLP_TSK_ENTER
+#define LOG_SLP_TSK_ENTER()
+#endif /* LOG_SLP_TSK_ENTER */
+
+#ifndef LOG_SLP_TSK_LEAVE
+#define LOG_SLP_TSK_LEAVE(ercd)
+#endif /* LOG_SLP_TSK_LEAVE */
+
+#ifndef LOG_TSLP_TSK_ENTER
+#define LOG_TSLP_TSK_ENTER(tmout)
+#endif /* LOG_TSLP_TSK_ENTER */
+
+#ifndef LOG_TSLP_TSK_LEAVE
+#define LOG_TSLP_TSK_LEAVE(ercd)
+#endif /* LOG_TSLP_TSK_LEAVE */
+
+#ifndef LOG_WUP_TSK_ENTER
+#define LOG_WUP_TSK_ENTER(tskid)
+#endif /* LOG_WUP_TSK_ENTER */
+
+#ifndef LOG_WUP_TSK_LEAVE
+#define LOG_WUP_TSK_LEAVE(ercd)
+#endif /* LOG_WUP_TSK_LEAVE */
+
+#ifndef LOG_IWUP_TSK_ENTER
+#define LOG_IWUP_TSK_ENTER(tskid)
+#endif /* LOG_IWUP_TSK_ENTER */
+
+#ifndef LOG_IWUP_TSK_LEAVE
+#define LOG_IWUP_TSK_LEAVE(ercd)
+#endif /* LOG_IWUP_TSK_LEAVE */
+
+#ifndef LOG_CAN_WUP_ENTER
+#define LOG_CAN_WUP_ENTER(tskid)
+#endif /* LOG_CAN_WUP_ENTER */
+
+#ifndef LOG_CAN_WUP_LEAVE
+#define LOG_CAN_WUP_LEAVE(ercd)
+#endif /* LOG_CAN_WUP_LEAVE */
+
+#ifndef LOG_REL_WAI_ENTER
+#define LOG_REL_WAI_ENTER(tskid)
+#endif /* LOG_REL_WAI_ENTER */
+
+#ifndef LOG_REL_WAI_LEAVE
+#define LOG_REL_WAI_LEAVE(ercd)
+#endif /* LOG_REL_WAI_LEAVE */
+
+#ifndef LOG_IREL_WAI_ENTER
+#define LOG_IREL_WAI_ENTER(tskid)
+#endif /* LOG_IREL_WAI_ENTER */
+
+#ifndef LOG_IREL_WAI_LEAVE
+#define LOG_IREL_WAI_LEAVE(ercd)
+#endif /* LOG_IREL_WAI_LEAVE */
+
+#ifndef LOG_SUS_TSK_ENTER
+#define LOG_SUS_TSK_ENTER(tskid)
+#endif /* LOG_SUS_TSK_ENTER */
+
+#ifndef LOG_SUS_TSK_LEAVE
+#define LOG_SUS_TSK_LEAVE(ercd)
+#endif /* LOG_SUS_TSK_LEAVE */
+
+#ifndef LOG_RSM_TSK_ENTER
+#define LOG_RSM_TSK_ENTER(tskid)
+#endif /* LOG_RSM_TSK_ENTER */
+
+#ifndef LOG_RSM_TSK_LEAVE
+#define LOG_RSM_TSK_LEAVE(ercd)
+#endif /* LOG_RSM_TSK_LEAVE */
+
+#ifndef LOG_DLY_TSK_ENTER
+#define LOG_DLY_TSK_ENTER(dlytim)
+#endif /* LOG_DLY_TSK_ENTER */
+
+#ifndef LOG_DLY_TSK_LEAVE
+#define LOG_DLY_TSK_LEAVE(ercd)
+#endif /* LOG_DLY_TSK_LEAVE */
+
+/*
+ *  N°Ò¿
+ */
+#ifdef TOPPERS_slp_tsk
+
+ER
+slp_tsk(void)
+{
+	WINFO	winfo;
+	ER		ercd;
+
+	LOG_SLP_TSK_ENTER();
+	CHECK_DISPATCH();
+
+	t_lock_cpu();
+	if (p_runtsk->wupque) {
+		p_runtsk->wupque = false;
+		ercd = E_OK;
+	}
+	else {
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_SLP);
+		make_wait(&winfo);
+		LOG_TSKSTAT(p_runtsk);
+		dispatch();
+		ercd = winfo.wercd;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_SLP_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_slp_tsk */
+
+/*
+ *  N°Ò¿i^CAEg èj
+ */
+#ifdef TOPPERS_tslp_tsk
+
+ER
+tslp_tsk(TMO tmout)
+{
+	WINFO	winfo;
+	TMEVTB	tmevtb;
+	ER		ercd;
+
+	LOG_TSLP_TSK_ENTER(tmout);
+	CHECK_DISPATCH();
+	CHECK_TMOUT(tmout);
+
+	t_lock_cpu();
+	if (p_runtsk->wupque) {
+		p_runtsk->wupque = false;
+		ercd = E_OK;
+	}
+	else if (tmout == TMO_POL) {
+		ercd = E_TMOUT;
+	}
+	else {
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_SLP);
+		make_wait_tmout(&winfo, &tmevtb, tmout);
+		LOG_TSKSTAT(p_runtsk);
+		dispatch();
+		ercd = winfo.wercd;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_TSLP_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_tslp_tsk */
+
+/*
+ *  ^XNÌN°
+ */
+#ifdef TOPPERS_wup_tsk
+
+ER
+wup_tsk(ID tskid)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_WUP_TSK_ENTER(tskid);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID_SELF(tskid);
+	p_tcb = get_tcb_self(tskid);
+
+	t_lock_cpu();
+	if (p_tcb->p_tinib->tskatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (TSTAT_DORMANT(p_tcb->tstat)) {
+		ercd = E_OBJ;
+	}
+	else if (TSTAT_WAIT_SLP(p_tcb->tstat)) {
+		if (wait_complete(p_tcb)) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else if (!(p_tcb->wupque)) {
+		p_tcb->wupque = true;
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_QOVR;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_WUP_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_wup_tsk */
+
+/*
+ *  ^XNÌN°iñ^XNReLXgpj
+ */
+#ifdef TOPPERS_iwup_tsk
+
+ER
+iwup_tsk(ID tskid)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_IWUP_TSK_ENTER(tskid);
+	CHECK_INTCTX_UNL();
+	CHECK_TSKID(tskid);
+	p_tcb = get_tcb(tskid);
+
+	i_lock_cpu();
+	if (p_tcb->p_tinib->tskatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (TSTAT_DORMANT(p_tcb->tstat)) {
+		ercd = E_OBJ;
+	}
+	else if (TSTAT_WAIT_SLP(p_tcb->tstat)) {
+		if (wait_complete(p_tcb)) {
+			reqflg = true;
+		}
+		ercd = E_OK;
+	}
+	else if (!(p_tcb->wupque)) {
+		p_tcb->wupque = true;
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_QOVR;
+	}
+	i_unlock_cpu();
+
+  error_exit:
+	LOG_IWUP_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_iwup_tsk */
+
+/*
+ *  ^XNN°vÌLZ
+ */
+#ifdef TOPPERS_can_wup
+
+ER_UINT
+can_wup(ID tskid)
+{
+	TCB		*p_tcb;
+	ER_UINT	ercd;
+
+	LOG_CAN_WUP_ENTER(tskid);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID_SELF(tskid);
+	p_tcb = get_tcb_self(tskid);
+
+	t_lock_cpu();
+	if (p_tcb->p_tinib->tskatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (TSTAT_DORMANT(p_tcb->tstat)) {
+		ercd = E_OBJ;
+	}
+	else {
+		ercd = p_tcb->wupque ? 1 : 0;
+		p_tcb->wupque = false;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_CAN_WUP_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_can_wup */
+
+/*
+ *  Ò¿óÔÌ­§ð
+ */
+#ifdef TOPPERS_rel_wai
+
+ER
+rel_wai(ID tskid)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_REL_WAI_ENTER(tskid);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID(tskid);
+	p_tcb = get_tcb(tskid);
+
+	t_lock_cpu();
+	if (p_tcb->p_tinib->tskatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (!TSTAT_WAITING(p_tcb->tstat)) {
+		ercd = E_OBJ;
+	}
+	else {
+		if (wait_release(p_tcb)) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_REL_WAI_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_rel_wai */
+
+/*
+ *  Ò¿óÔÌ­§ðiñ^XNReLXgpj
+ */
+#ifdef TOPPERS_irel_wai
+
+ER
+irel_wai(ID tskid)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_IREL_WAI_ENTER(tskid);
+	CHECK_INTCTX_UNL();
+	CHECK_TSKID(tskid);
+	p_tcb = get_tcb(tskid);
+
+	i_lock_cpu();
+	if (p_tcb->p_tinib->tskatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (!TSTAT_WAITING(p_tcb->tstat)) {
+		ercd = E_OBJ;
+	}
+	else {
+		if (wait_release(p_tcb)) {
+			reqflg = true;
+		}
+		ercd = E_OK;
+	}
+	i_unlock_cpu();
+
+  error_exit:
+	LOG_IREL_WAI_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_irel_wai */
+
+/*
+ *  ­§Ò¿óÔÖÌÚs
+ */
+#ifdef TOPPERS_sus_tsk
+
+ER
+sus_tsk(ID tskid)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_SUS_TSK_ENTER(tskid);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID_SELF(tskid);
+	p_tcb = get_tcb_self(tskid);
+
+	t_lock_cpu();
+	if (p_tcb == p_runtsk && !dspflg) {
+		ercd = E_CTX;
+	}
+	else if (p_tcb->p_tinib->tskatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (TSTAT_DORMANT(p_tcb->tstat)) {
+		ercd = E_OBJ;
+	}
+	else if (TSTAT_RUNNABLE(p_tcb->tstat)) {
+		/*
+		 *  ÀsÅ«éóÔ©ç­§Ò¿óÔÖÌJÚ
+		 */
+		p_tcb->tstat = TS_SUSPENDED;
+		LOG_TSKSTAT(p_tcb);
+		if (make_non_runnable(p_tcb)) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else if (TSTAT_SUSPENDED(p_tcb->tstat)) {
+		ercd = E_QOVR;
+	}
+	else {
+		/*
+		 *  Ò¿óÔ©çñdÒ¿óÔÖÌJÚ
+		 */
+		p_tcb->tstat |= TS_SUSPENDED;
+		LOG_TSKSTAT(p_tcb);
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_SUS_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_sus_tsk */
+
+/*
+ *  ­§Ò¿óÔ©çÌÄJ
+ */
+#ifdef TOPPERS_rsm_tsk
+
+ER
+rsm_tsk(ID tskid)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_RSM_TSK_ENTER(tskid);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID(tskid);
+	p_tcb = get_tcb(tskid);
+
+	t_lock_cpu();
+	if (p_tcb->p_tinib->tskatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (!TSTAT_SUSPENDED(p_tcb->tstat)) {
+		ercd = E_OBJ;
+	}
+	else if (!TSTAT_WAITING(p_tcb->tstat)) {
+		/*
+		 *  ­§Ò¿óÔ©çÀsÅ«éóÔÖÌJÚ
+		 */
+		p_tcb->tstat = TS_RUNNABLE;
+		LOG_TSKSTAT(p_tcb);
+		if (make_runnable(p_tcb)) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else {
+		/*
+		 *  ñdÒ¿óÔ©çÒ¿óÔÖÌJÚ
+		 */
+		p_tcb->tstat &= ~TS_SUSPENDED;
+		LOG_TSKSTAT(p_tcb);
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_RSM_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_rsm_tsk */
+
+/*
+ *  ©^XNÌx
+ */
+#ifdef TOPPERS_dly_tsk
+
+ER
+dly_tsk(RELTIM dlytim)
+{
+	WINFO	winfo;
+	TMEVTB	tmevtb;
+	ER		ercd;
+
+	LOG_DLY_TSK_ENTER(dlytim);
+	CHECK_DISPATCH();
+	CHECK_PAR(dlytim <= TMAX_RELTIM);
+
+	t_lock_cpu();
+	p_runtsk->tstat = (TS_WAITING | TS_WAIT_DLY);
+	(void) make_non_runnable(p_runtsk);
+	p_runtsk->p_winfo = &winfo;
+	winfo.p_tmevtb = &tmevtb;
+	tmevtb_enqueue(&tmevtb, dlytim, (CBACK) wait_tmout_ok, (void *) p_runtsk);
+	LOG_TSKSTAT(p_runtsk);
+	dispatch();
+	ercd = winfo.wercd;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_DLY_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_dly_tsk */
Index: /asp_ewarm/asp-1.7.0/extension/dcre/sample/sample1.c
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/dcre/sample/sample1.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/dcre/sample/sample1.c	(revision 61)
@@ -0,0 +1,541 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: sample1.c 1968 2010-11-20 11:00:07Z ertl-hiro $
+ */
+
+/* 
+ *  TvvO(1)Ì{Ì
+ *
+ *  ASPJ[lÌî{IÈ®ìðmF·é½ßÌTvvOD
+ *
+ *  vOÌTv:
+ *
+ *  [UC^tF[Xðó¯ÂC^XNi^XNID: MAIN_TASKCD
+ *  æx: MAIN_PRIORITYjÆC3ÂÌÀñÀs³êé^XNi^XNID:
+ *  TASK1`TASK3CúDæx: MID_PRIORITYjÅ\¬³êéDÜ½CN®ü
+ *  úª2bÌüúnhiüúnhID: CYCHDR1jðp¢éD
+ *
+ *  ÀñÀs³êé^XNÍCtask_loopñó[vðÀs·éxÉC^XNª
+ *  ÀsÅ é±Æð çí·bZ[Wð\¦·éD
+ *
+ *  üúnhÍCOÂÌDæxiHIGH_PRIORITYCMID_PRIORITYC
+ *  LOW_PRIORITYjÌfBL
+[ðñ]³¹éDvOÌN®¼ãÍC
+ *  üúnhÍâ~óÔÉÈÁÄ¢éD
+ *
+ *  C^XNÍCVAI/O|[g©çÌ¶üÍðs¢i¶üÍð
+ *  ÒÁÄ¢éÔÍCÀñÀs³êé^XNªÀs³êÄ¢éjCüÍ³ê½
+ *  ¶ÉÎµ½ðÀs·éDüÍ³ê½¶ÆÌÖWÍÌÊèD
+ *  Control-CÜ½Í'Q'ªüÍ³êéÆCvOðI¹·éD
+ *
+ *  '1' : ÎÛ^XNðTASK1ÉØè·¦éiúÝèjD
+ *  '2' : ÎÛ^XNðTASK2ÉØè·¦éD
+ *  '3' : ÎÛ^XNðTASK3ÉØè·¦éD
+ *  'a' : ÎÛ^XNðact_tskÉæèN®·éD
+ *  'A' : ÎÛ^XNÉÎ·éN®vðcan_actÉæèLZ·éD
+ *  'e' : ÎÛ^XNÉext_tskðÄÑo³¹CI¹³¹éD
+ *  't' : ÎÛ^XNðter_tskÉæè­§I¹·éD
+ *  '>' : ÎÛ^XNÌDæxðHIGH_PRIORITYÉ·éD
+ *  '=' : ÎÛ^XNÌDæxðMID_PRIORITYÉ·éD
+ *  '<' : ÎÛ^XNÌDæxðLOW_PRIORITYÉ·éD
+ *  'G' : ÎÛ^XNÌDæxðget_priÅÇÝo·D
+ *  's' : ÎÛ^XNÉslp_tskðÄÑo³¹CN°Ò¿É³¹éD
+ *  'S' : ÎÛ^XNÉtslp_tsk(10b)ðÄÑo³¹CN°Ò¿É³¹éD
+ *  'w' : ÎÛ^XNðwup_tskÉæèN°·éD
+ *  'W' : ÎÛ^XNÉÎ·éN°vðcan_wupÉæèLZ·éD
+ *  'l' : ÎÛ^XNðrel_waiÉæè­§IÉÒ¿ðÉ·éD
+ *  'u' : ÎÛ^XNðsus_tskÉæè­§Ò¿óÔÉ·éD
+ *  'm' : ÎÛ^XNÌ­§Ò¿óÔðrsm_tskÉæèð·éD
+ *  'd' : ÎÛ^XNÉdly_tsk(10b)ðÄÑo³¹CÔoßÒ¿É³¹éD
+ *  'x' : ÎÛ^XNÉáOp^[0x0001ÌáOðv·éD
+ *  'X' : ÎÛ^XNÉáOp^[0x0002ÌáOðv·éD
+ *  'y' : ÎÛ^XNÉdis_texðÄÑo³¹C^XNáOðÖ~·éD
+ *  'Y' : ÎÛ^XNÉena_texðÄÑo³¹C^XNáOðÂ·éD
+ *  'r' : 3ÂÌDæxiHIGH_PRIORITYCMID_PRIORITYCLOW_PRIORITYjÌ
+ *        fBL
+[ðñ]³¹éD
+ *  'c' : üúnhð®ìJn³¹éD
+ *  'C' : üúnhð®ìâ~³¹éD
+ *  'b' : A[nhð5bãÉN®·éæ¤®ìJn³¹éD
+ *  'B' : A[nhð®ìâ~³¹éD
+ *  'z' : ÎÛ^XNÉCPUáOð­¶³¹éi^XNðI¹³¹éjD
+ *  'Z' : ÎÛ^XNÉCPUbNóÔÅCPUáOð­¶³¹éivOð
+ *        I¹·éjD
+ *  '@' : ^XN3ðacre_tskÉæè¶¬µCdef_texÉæè^XNáO
+ *        [`ðÝè·éD
+ *  '!' : ÎÛ^XNðdel_tskÉæèí·éD
+ *  'V' : get_utmÅ«\]¿pVXeð2ñÇÞD
+ *  'v' : ­sµ½VXeR[ð\¦·éiftHgjD
+ *  'q' : ­sµ½VXeR[ð\¦µÈ¢D
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include <t_stdlib.h>
+#include "syssvc/serial.h"
+#include "syssvc/syslog.h"
+#include "kernel_cfg.h"
+#include "sample1.h"
+
+/*
+ *  T[rXR[ÌG[ÌOoÍ
+ */
+Inline void
+svc_perror(const char *file, int_t line, const char *expr, ER ercd)
+{
+	if (ercd < 0) {
+		t_perror(LOG_ERROR, file, line, expr, ercd);
+	}
+}
+
+#define	SVC_PERROR(expr)	svc_perror(__FILE__, __LINE__, #expr, (expr))
+
+/*
+ *  ÀsÀs³êé^XNÖÌbZ[WÌæ
+ */
+char_t	message[3];
+
+/*
+ *  [vñ
+ */
+ulong_t	task_loop;		/* ^XNàÅÌ[vñ */
+ulong_t	tex_loop;		/* áO[`àÅÌ[vñ */
+
+/*
+ *  ÀsÀs³êé^XN
+ */
+void task(intptr_t exinf)
+{
+	volatile ulong_t	i;
+	int_t		n = 0;
+	int_t		tskno = (int_t) exinf;
+	const char	*graph[] = { "|", "  +", "    *" };
+	char_t		c;
+
+	SVC_PERROR(ena_tex());
+	while (1) {
+		syslog(LOG_NOTICE, "task%d is running (%03d).   %s",
+										tskno, ++n, graph[tskno-1]);
+		for (i = 0; i < task_loop; i++);
+		c = message[tskno-1];
+		message[tskno-1] = 0;
+		switch (c) {
+		case 'e':
+			syslog(LOG_INFO, "#%d#ext_tsk()", tskno);
+			SVC_PERROR(ext_tsk());
+			assert(0);
+		case 's':
+			syslog(LOG_INFO, "#%d#slp_tsk()", tskno);
+			SVC_PERROR(slp_tsk());
+			break;
+		case 'S':
+			syslog(LOG_INFO, "#%d#tslp_tsk(10000)", tskno);
+			SVC_PERROR(tslp_tsk(10000));
+			break;
+		case 'd':
+			syslog(LOG_INFO, "#%d#dly_tsk(10000)", tskno);
+			SVC_PERROR(dly_tsk(10000));
+			break;
+		case 'y':
+			syslog(LOG_INFO, "#%d#dis_tex()", tskno);
+			SVC_PERROR(dis_tex());
+			break;
+		case 'Y':
+			syslog(LOG_INFO, "#%d#ena_tex()", tskno);
+			SVC_PERROR(ena_tex());
+			break;
+#ifdef CPUEXC1
+		case 'z':
+			syslog(LOG_NOTICE, "#%d#raise CPU exception", tskno);
+			RAISE_CPU_EXCEPTION;
+			break;
+		case 'Z':
+			SVC_PERROR(loc_cpu());
+			syslog(LOG_NOTICE, "#%d#raise CPU exception", tskno);
+			RAISE_CPU_EXCEPTION;
+			SVC_PERROR(unl_cpu());
+			break;
+#endif /* CPUEXC1 */
+		default:
+			break;
+		}
+	}
+}
+
+/*
+ *  ÀsµÄÀs³êé^XNpÌ^XNáO[`
+ */
+void tex_routine(TEXPTN texptn, intptr_t exinf)
+{
+	volatile ulong_t	i;
+	int_t	tskno = (int_t) exinf;
+
+	syslog(LOG_NOTICE, "task%d receives exception 0x%04x.", tskno, texptn);
+	for (i = 0; i < tex_loop; i++);
+
+	if ((texptn & 0x8000U) != 0U) {
+		syslog(LOG_INFO, "#%d#ext_tsk()", tskno);
+		SVC_PERROR(ext_tsk());
+		assert(0);
+	}
+}
+
+/*
+ *  CPUáOnh
+ */
+#ifdef CPUEXC1
+
+void
+cpuexc_handler(void *p_excinf)
+{
+	ID		tskid;
+
+	syslog(LOG_NOTICE, "CPU exception handler (p_excinf = %08p).", p_excinf);
+	if (sns_ctx() != true) {
+		syslog(LOG_WARNING,
+					"sns_ctx() is not true in CPU exception handler.");
+	}
+	if (sns_dpn() != true) {
+		syslog(LOG_WARNING,
+					"sns_dpn() is not true in CPU exception handler.");
+	}
+	syslog(LOG_INFO, "sns_loc = %d sns_dsp = %d sns_tex = %d",
+									sns_loc(), sns_dsp(), sns_tex());
+	syslog(LOG_INFO, "xsns_dpn = %d xsns_xpn = %d",
+									xsns_dpn(p_excinf), xsns_xpn(p_excinf));
+
+	if (xsns_xpn(p_excinf)) {
+		syslog(LOG_NOTICE, "Sample program ends with exception.");
+		SVC_PERROR(ext_ker());
+		assert(0);
+	}
+
+	SVC_PERROR(iget_tid(&tskid));
+	SVC_PERROR(iras_tex(tskid, 0x8000U));
+}
+
+#endif /* CPUEXC1 */
+
+/*
+ *  üúnh
+ *
+ *  HIGH_PRIORITYCMID_PRIORITYCLOW_PRIORITY ÌeDæxÌfBL
+[
+ *  ðñ]³¹éD
+ */
+void cyclic_handler(intptr_t exinf)
+{
+	SVC_PERROR(irot_rdq(HIGH_PRIORITY));
+	SVC_PERROR(irot_rdq(MID_PRIORITY));
+	SVC_PERROR(irot_rdq(LOW_PRIORITY));
+}
+
+/*
+ *  A[nh
+ *
+ *  HIGH_PRIORITYCMID_PRIORITYCLOW_PRIORITY ÌeDæxÌfBL
+[
+ *  ðñ]³¹éD
+ */
+void alarm_handler(intptr_t exinf)
+{
+	SVC_PERROR(irot_rdq(HIGH_PRIORITY));
+	SVC_PERROR(irot_rdq(MID_PRIORITY));
+	SVC_PERROR(irot_rdq(LOW_PRIORITY));
+}
+
+/*
+ *  C^XN
+ */
+void main_task(intptr_t exinf)
+{
+	char_t	c;
+	ID		tskid = TASK1;
+	int_t	tskno = 1;
+	ER_UINT	ercd;
+	PRI		tskpri;
+#ifndef TASK_LOOP
+	volatile ulong_t	i;
+	SYSTIM	stime1, stime2;
+#endif /* TASK_LOOP */
+#ifdef TOPPERS_SUPPORT_GET_UTM
+	SYSUTM	utime1, utime2;
+#endif /* TOPPERS_SUPPORT_GET_UTM */
+	T_CTSK	ctsk;
+	T_DTEX	dtex;
+	ID		TASK3 = -1;
+
+	SVC_PERROR(syslog_msk_log(LOG_UPTO(LOG_INFO), LOG_UPTO(LOG_EMERG)));
+	syslog(LOG_NOTICE, "Sample program starts (exinf = %d).", (int_t) exinf);
+
+	/*
+	 *  VA|[gÌú»
+	 *
+	 *  VXeO^XNÆ¯¶VA|[gðg¤êÈÇCVA
+	 *  |[gªI[vÏÝÌêÉÍ±±ÅE_OBJG[ÉÈéªCxáÍ
+	 *  È¢D
+	 */
+	ercd = serial_opn_por(TASK_PORTID);
+	if (ercd < 0 && MERCD(ercd) != E_OBJ) {
+		syslog(LOG_ERROR, "%s (%d) reported by `serial_opn_por'.",
+									itron_strerror(ercd), SERCD(ercd));
+	}
+	SVC_PERROR(serial_ctl_por(TASK_PORTID,
+							(IOCTL_CRLF | IOCTL_FCSND | IOCTL_FCRCV)));
+
+	/*
+ 	 *  [vñÌÝè
+	 *
+	 *  TASK_LOOPª}Nè`³êÄ¢éêCªè¹¸ÉCTASK_LOOPÉè
+	 *  `³ê½lðC^XNàÅÌ[vñÆ·éD
+	 *
+	 *  MEASURE_TWICEª}Nè`³êÄ¢éêC1ñÚÌªèÊðÌÄ
+	 *  ÄC2ñÚÌªèÊðg¤D1ñÚÌªèÍ·ßÌÔªoé½ßD
+	 */
+#ifdef TASK_LOOP
+	task_loop = TASK_LOOP;
+#else /* TASK_LOOP */
+
+#ifdef MEASURE_TWICE
+	task_loop = LOOP_REF;
+	SVC_PERROR(get_tim(&stime1));
+	for (i = 0; i < task_loop; i++);
+	SVC_PERROR(get_tim(&stime2));
+#endif /* MEASURE_TWICE */
+
+	task_loop = LOOP_REF;
+	SVC_PERROR(get_tim(&stime1));
+	for (i = 0; i < task_loop; i++);
+	SVC_PERROR(get_tim(&stime2));
+	task_loop = LOOP_REF * 400UL / (stime2 - stime1);
+
+#endif /* TASK_LOOP */
+	tex_loop = task_loop / 5;
+
+	/*
+ 	 *  ^XNÌN®
+	 */
+	SVC_PERROR(act_tsk(TASK1));
+	SVC_PERROR(act_tsk(TASK2));
+
+	/*
+ 	 *  C[v
+	 */
+	do {
+		SVC_PERROR(serial_rea_dat(TASK_PORTID, &c, 1));
+		switch (c) {
+		case 'e':
+		case 's':
+		case 'S':
+		case 'd':
+		case 'y':
+		case 'Y':
+		case 'z':
+		case 'Z':
+			message[tskno-1] = c;
+			break;
+		case '1':
+			tskno = 1;
+			tskid = TASK1;
+			break;
+		case '2':
+			tskno = 2;
+			tskid = TASK2;
+			break;
+		case '3':
+			tskno = 3;
+			tskid = TASK3;
+			break;
+		case 'a':
+			syslog(LOG_INFO, "#act_tsk(%d)", tskno);
+			SVC_PERROR(act_tsk(tskid));
+			break;
+		case 'A':
+			syslog(LOG_INFO, "#can_act(%d)", tskno);
+			SVC_PERROR(ercd = can_act(tskid));
+			if (ercd >= 0) {
+				syslog(LOG_NOTICE, "can_act(%d) returns %d", tskno, ercd);
+			}
+			break;
+		case 't':
+			syslog(LOG_INFO, "#ter_tsk(%d)", tskno);
+			SVC_PERROR(ter_tsk(tskid));
+			break;
+		case '>':
+			syslog(LOG_INFO, "#chg_pri(%d, HIGH_PRIORITY)", tskno);
+			SVC_PERROR(chg_pri(tskid, HIGH_PRIORITY));
+			break;
+		case '=':
+			syslog(LOG_INFO, "#chg_pri(%d, MID_PRIORITY)", tskno);
+			SVC_PERROR(chg_pri(tskid, MID_PRIORITY));
+			break;
+		case '<':
+			syslog(LOG_INFO, "#chg_pri(%d, LOW_PRIORITY)", tskno);
+			SVC_PERROR(chg_pri(tskid, LOW_PRIORITY));
+			break;
+		case 'G':
+			syslog(LOG_INFO, "#get_pri(%d, &tskpri)", tskno);
+			SVC_PERROR(ercd = get_pri(tskid, &tskpri));
+			if (ercd >= 0) {
+				syslog(LOG_NOTICE, "priority of task %d is %d", tskno, tskpri);
+			}
+			break;
+		case 'w':
+			syslog(LOG_INFO, "#wup_tsk(%d)", tskno);
+			SVC_PERROR(wup_tsk(tskid));
+			break;
+		case 'W':
+			syslog(LOG_INFO, "#can_wup(%d)", tskno);
+			SVC_PERROR(ercd = can_wup(tskid));
+			if (ercd >= 0) {
+				syslog(LOG_NOTICE, "can_wup(%d) returns %d", tskno, ercd);
+			}
+			break;
+		case 'l':
+			syslog(LOG_INFO, "#rel_wai(%d)", tskno);
+			SVC_PERROR(rel_wai(tskid));
+			break;
+		case 'u':
+			syslog(LOG_INFO, "#sus_tsk(%d)", tskno);
+			SVC_PERROR(sus_tsk(tskid));
+			break;
+		case 'm':
+			syslog(LOG_INFO, "#rsm_tsk(%d)", tskno);
+			SVC_PERROR(rsm_tsk(tskid));
+			break;
+		case 'x':
+			syslog(LOG_INFO, "#ras_tex(%d, 0x0001U)", tskno);
+			SVC_PERROR(ras_tex(tskid, 0x0001U));
+			break;
+		case 'X':
+			syslog(LOG_INFO, "#ras_tex(%d, 0x0002U)", tskno);
+			SVC_PERROR(ras_tex(tskid, 0x0002U));
+			break;
+		case 'r':
+			syslog(LOG_INFO, "#rot_rdq(three priorities)");
+			SVC_PERROR(rot_rdq(HIGH_PRIORITY));
+			SVC_PERROR(rot_rdq(MID_PRIORITY));
+			SVC_PERROR(rot_rdq(LOW_PRIORITY));
+			break;
+		case 'c':
+			syslog(LOG_INFO, "#sta_cyc(1)");
+			SVC_PERROR(sta_cyc(CYCHDR1));
+			break;
+		case 'C':
+			syslog(LOG_INFO, "#stp_cyc(1)");
+			SVC_PERROR(stp_cyc(CYCHDR1));
+			break;
+		case 'b':
+			syslog(LOG_INFO, "#sta_alm(1, 5000)");
+			SVC_PERROR(sta_alm(ALMHDR1, 5000));
+			break;
+		case 'B':
+			syslog(LOG_INFO, "#stp_alm(1)");
+			SVC_PERROR(stp_alm(ALMHDR1));
+			break;
+		case '@':
+			ctsk.tskatr = TA_NULL;
+			ctsk.exinf = 3;
+			ctsk.task = task;
+			ctsk.itskpri = MID_PRIORITY;
+			ctsk.stksz = STACK_SIZE;
+			ctsk.stk = NULL;
+			SVC_PERROR(TASK3 = acre_tsk(&ctsk));
+
+			dtex.texatr = TA_NULL;
+			dtex.texrtn = tex_routine;
+			SVC_PERROR(def_tex(TASK3, &dtex));
+
+			syslog(LOG_NOTICE, "task3 is created with tskid = %d.",
+														(int_t) TASK3);
+			break;
+		case '!':
+			syslog(LOG_INFO, "#del_tsk(%d)", tskno);
+			SVC_PERROR(del_tsk(tskid));
+			break;
+
+		case 'V':
+#ifdef TOPPERS_SUPPORT_GET_UTM
+			SVC_PERROR(get_utm(&utime1));
+			SVC_PERROR(get_utm(&utime2));
+			syslog(LOG_NOTICE, "utime1 = %ld, utime2 = %ld",
+										(ulong_t) utime1, (ulong_t) utime2);
+#else /* TOPPERS_SUPPORT_GET_UTM */
+			syslog(LOG_NOTICE, "get_utm is not supported.");
+#endif /* TOPPERS_SUPPORT_GET_UTM */
+			break;
+
+		case 'v':
+			SVC_PERROR(syslog_msk_log(LOG_UPTO(LOG_INFO),
+										LOG_UPTO(LOG_EMERG)));
+			break;
+		case 'q':
+			SVC_PERROR(syslog_msk_log(LOG_UPTO(LOG_NOTICE),
+										LOG_UPTO(LOG_EMERG)));
+			break;
+
+#ifdef BIT_KERNEL
+		case ' ':
+			SVC_PERROR(loc_cpu());
+			{
+				extern ER	bit_kernel(void);
+
+				SVC_PERROR(ercd = bit_kernel());
+				if (ercd >= 0) {
+					syslog(LOG_NOTICE, "bit_kernel passed.");
+				}
+			}
+			SVC_PERROR(unl_cpu());
+			break;
+#endif /* BIT_KERNEL */
+
+		default:
+			break;
+		}
+	} while (c != '\003' && c != 'Q');
+
+	syslog(LOG_NOTICE, "Sample program ends.");
+	SVC_PERROR(ext_ker());
+	assert(0);
+}
Index: /asp_ewarm/asp-1.7.0/extension/dcre/sample/sample1.cfg
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/dcre/sample/sample1.cfg	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/dcre/sample/sample1.cfg	(revision 61)
@@ -0,0 +1,27 @@
+/*
+ *  @(#) $Id: sample1.cfg 1968 2010-11-20 11:00:07Z ertl-hiro $
+ */
+
+/*
+ *  TvvO(1)ÌVXeRtBM
+[Vt@C
+ */
+INCLUDE("target_timer.cfg");
+INCLUDE("syssvc/syslog.cfg");
+INCLUDE("syssvc/banner.cfg");
+INCLUDE("syssvc/serial.cfg");
+INCLUDE("syssvc/logtask.cfg");
+
+#include "sample1.h"
+CRE_TSK(TASK1, { TA_NULL, 1, task, MID_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK2, { TA_NULL, 2, task, MID_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(MAIN_TASK, { TA_ACT, 0, main_task, MAIN_PRIORITY, STACK_SIZE, NULL });
+AID_TSK(3);
+DEF_TEX(TASK1, { TA_NULL, tex_routine });
+DEF_TEX(TASK2, { TA_NULL, tex_routine });
+CRE_CYC(CYCHDR1, { TA_NULL, 0, cyclic_handler, 2000, 0 });
+CRE_ALM(ALMHDR1, { TA_NULL, 0, alarm_handler });
+#ifdef CPUEXC1
+DEF_EXC(CPUEXC1, { TA_NULL, cpuexc_handler });
+#endif /* CPUEXC1 */
+DEF_KMM( { KMM_SIZE, NULL } );
Index: /asp_ewarm/asp-1.7.0/extension/dcre/sample/sample1.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/dcre/sample/sample1.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/dcre/sample/sample1.h	(revision 61)
@@ -0,0 +1,101 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ *
+ *  @(#) $Id: sample1.h 1968 2010-11-20 11:00:07Z ertl-hiro $
+ */
+
+/*
+ *		TvvO(1)Ìwb_t@C
+ */
+
+/*
+ *  ^[QbgË¶Ìè`
+ */
+#include "target_test.h"
+
+/*
+ *  e^XNÌDæxÌè`
+ */
+
+#define MAIN_PRIORITY	5		/* C^XNÌDæx */
+								/* HIGH_PRIORITYæè­·é±Æ */
+
+#define HIGH_PRIORITY	9		/* ÀñÉÀs³êé^XNÌDæx */
+#define MID_PRIORITY	10
+#define LOW_PRIORITY	11
+
+/*
+ *  ^[QbgÉË¶·éÂ\«Ì éèÌè`
+ */
+
+#ifndef TASK_PORTID
+#define	TASK_PORTID		1			/* ¶üÍ·éVA|[gID */
+#endif /* TASK_PORTID */
+
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ^XNÌX^bNTCY */
+#endif /* STACK_SIZE */
+
+#ifndef KMM_SIZE
+#define	KMM_SIZE		(STACK_SIZE * 16)	/* J[lªèt¯é   */
+#endif /* KMM_SIZE */						/*     ÌæÌTCY */
+
+#ifndef LOOP_REF
+#define LOOP_REF		ULONG_C(1000000)	/* ¬xvªpÌ[vñ */
+#endif /* LOOP_REF */
+
+/*
+ *  ÖÌvg^Cvé¾
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+extern void	task(intptr_t exinf);
+extern void	main_task(intptr_t exinf);
+extern void	tex_routine(TEXPTN texptn, intptr_t exinf);
+#ifdef CPUEXC1
+extern void	cpuexc_handler(void *p_excinf);
+#endif /* CPUEXC1 */
+extern void	cyclic_handler(intptr_t exinf);
+extern void	alarm_handler(intptr_t exinf);
+
+#endif /* TOPPERS_MACRO_ONLY */
Index: /asp_ewarm/asp-1.7.0/extension/mutex/include/kernel.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/include/kernel.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/include/kernel.h	(revision 61)
@@ -0,0 +1,540 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: kernel.h 1959 2010-11-20 02:17:27Z ertl-hiro $
+ */
+
+/*
+ *		TOPPERS/ASPJ[l Wwb_t@C
+ *
+ *  TOPPERS/ASPJ[lªT|[g·éT[rXR[Ìé¾ÆCKvÈf[
+ *  ^^CèC}NÌè`ðÜÞwb_t@CD
+ *
+ *  AZu¾êÌ\[Xt@C©ç±Ìt@CðCN[h·é
+ *  ÍCTOPPERS_MACRO_ONLYðè`µÄ¨­D±êÉæèC}Nè`ÈOð
+ *  ­æ¤ÉÈÁÄ¢éD
+ *
+ *  ±Ìt@CðCN[h·éOÉCN[hµÄ¨­×«t@C
+ *  ÍÈ¢D
+ */
+
+#ifndef TOPPERS_KERNEL_H
+#define TOPPERS_KERNEL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *	TOPPERS¤ÊÌf[^^EèE}N
+ */
+#include <t_stddef.h>
+
+/*
+ *  ^[QbgË¶
+ */
+#include "target_kernel.h"
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  f[^^Ìè`
+ */
+
+/*
+ *  rbgp^[âIuWFNgÔÌ^è`
+ */
+typedef	uint_t		TEXPTN;		/* ^XNáOvöÌrbgp^[ */
+typedef	uint_t		FLGPTN;		/* CxgtOÌrbgp^[ */
+typedef	uint_t		INTNO;		/* ÝÔ */
+typedef	uint_t		INHNO;		/* ÝnhÔ */
+typedef	uint_t		EXCNO;		/* CPUáOnhÔ */
+
+/*
+ *  PÊÌ^è`
+ */
+typedef void	(*TASK)(intptr_t exinf);
+typedef void	(*TEXRTN)(TEXPTN texptn, intptr_t exinf);
+typedef void	(*CYCHDR)(intptr_t exinf);
+typedef void	(*ALMHDR)(intptr_t exinf);
+typedef void	(*ISR)(intptr_t exinf);
+typedef void	(*INTHDR)(void);
+typedef void	(*EXCHDR)(void *p_excinf);
+typedef void	(*INIRTN)(intptr_t exinf);
+typedef void	(*TERRTN)(intptr_t exinf);
+
+/*
+ *  ÌæmÛÌ½ßÌ^è`
+ */
+#ifndef TOPPERS_STK_T
+#define TOPPERS_STK_T	intptr_t
+#endif /* TOPPERS_STK_T */
+typedef	TOPPERS_STK_T	STK_T;	/* X^bNÌæðmÛ·é½ßÌ^ */
+
+#ifndef TOPPERS_MPF_T
+#define TOPPERS_MPF_T	intptr_t
+#endif /* TOPPERS_MPF_T */
+typedef	TOPPERS_MPF_T	MPF_T;	/* Åè·v[ÌæðmÛ·é½ßÌ^ */
+
+/*
+ *  bZ[Wwb_Ì^è`
+ */
+typedef	struct t_msg {			/* [{bNXÌbZ[Wwb_ */
+	struct t_msg	*pk_next;
+} T_MSG;
+
+typedef	struct t_msg_pri {		/* Dæxt«bZ[Wwb_ */
+	T_MSG	msgque;				/* bZ[Wwb_ */
+	PRI		msgpri;				/* bZ[WDæx */
+} T_MSG_PRI;
+
+/*
+ *  pPbg`®Ìè`
+ */
+typedef struct t_rtsk {
+	STAT	tskstat;	/* ^XNóÔ */
+	PRI		tskpri;		/* ^XNÌ»ÝDæx */
+	PRI		tskbpri;	/* ^XNÌx[XDæx */
+	STAT	tskwait;	/* Ò¿vö */
+	ID		wobjid;		/* Ò¿ÎÛÌIuWFNgÌID */
+	TMO		lefttmo;	/* ^CAEg·éÜÅÌÔ */
+	uint_t	actcnt;		/* N®vL
+[CO */
+	uint_t	wupcnt;		/* N°vL
+[CO */
+} T_RTSK;
+
+typedef struct t_rtex {
+	STAT	texstat;	/* ^XNáOÌóÔ */
+	TEXPTN	pndptn;		/* Û¯áOvö */
+} T_RTEX;
+
+typedef struct t_rsem {
+	ID		wtskid;		/* Z}tHÌÒ¿sñÌæªÌ^XNÌIDÔ */
+	uint_t	semcnt;		/* Z}tHÌ»ÝÌ¹ */
+} T_RSEM;
+
+typedef struct t_rflg {
+	ID		wtskid;		/* CxgtOÌÒ¿sñÌæªÌ^XNÌIDÔ */
+	FLGPTN	flgptn;		/* CxgtOÌ»ÝÌrbgp^[ */
+} T_RFLG;
+
+typedef struct t_rdtq {
+	ID		stskid;		/* f[^L
+[ÌMÒ¿sñÌæªÌ^XNÌIDÔ */
+	ID		rtskid;		/* f[^L
+[ÌóMÒ¿sñÌæªÌ^XNÌIDÔ */
+	uint_t	sdtqcnt;	/* f[^L
+[ÇÌæÉi[³êÄ¢éf[^Ì */
+} T_RDTQ;
+
+typedef struct t_rpdq {
+	ID		stskid;		/* Dæxf[^L
+[ÌMÒ¿sñÌæªÌ^XN
+						   ÌIDÔ */
+	ID		rtskid;		/* Dæxf[^L
+[ÌóMÒ¿sñÌæªÌ^XN
+						   ÌIDÔ */
+	uint_t	spdqcnt;	/* Dæxf[^L
+[ÇÌæÉi[³êÄ¢éf[
+						   ^Ì */
+} T_RPDQ;
+
+typedef struct t_rmbx {
+	ID		wtskid;		/* [{bNXÌÒ¿sñÌæªÌ^XNÌIDÔ */
+	T_MSG	*pk_msg;	/* bZ[WL
+[ÌæªÉÂÈªê½bZ[W
+						   ÌæªÔn */
+} T_RMBX;
+
+typedef struct t_rmtx {
+	ID		htskid;		/* ~
+[ebNXðbNµÄ¢é^XNÌIDÔ */
+	ID		wtskid;		/* ~
+[ebNXÌÒ¿sñÌæªÌ^XNÌIDÔ */
+} T_RMTX;
+
+typedef struct t_rmpf {
+	ID		wtskid;		/* Åè·v[ÌÒ¿sñÌæªÌ^XNÌ
+						   IDÔ */
+	uint_t	fblkcnt;	/* Åè·v[ÌæÌó«ÌæÉè
+						   t¯é±ÆªÅ«éÅè·ubNÌ */
+} T_RMPF;
+
+typedef struct t_rcyc {
+	STAT	cycstat;	/* üúnhÌ®ìóÔ */
+	RELTIM	lefttim;	/* ÉüúnhðN®·éÜÅÌÎÔ */
+} T_RCYC;
+
+typedef struct t_ralm {
+	STAT	almstat;	/* A[nhÌ®ìóÔ */
+	RELTIM	lefttim;	/* A[nhðN®·éÜÅÌÎÔ */
+} T_RALM;
+
+/*
+ *  T[rXR[Ìé¾
+ */
+
+/*
+ *  ^XNÇ@\
+ */
+extern ER		act_tsk(ID tskid) throw();
+extern ER		iact_tsk(ID tskid) throw();
+extern ER_UINT	can_act(ID tskid) throw();
+extern ER		ext_tsk(void) throw();
+extern ER		ter_tsk(ID tskid) throw();
+extern ER		chg_pri(ID tskid, PRI tskpri) throw();
+extern ER		get_pri(ID tskid, PRI *p_tskpri) throw();
+extern ER		get_inf(intptr_t *p_exinf) throw();
+extern ER		ref_tsk(ID tskid, T_RTSK *pk_rtsk) throw();
+
+/*
+ *  ^XNt®¯ú@\
+ */
+extern ER		slp_tsk(void) throw();
+extern ER		tslp_tsk(TMO tmout) throw();
+extern ER		wup_tsk(ID tskid) throw();
+extern ER		iwup_tsk(ID tskid) throw();
+extern ER_UINT	can_wup(ID tskid) throw();
+extern ER		rel_wai(ID tskid) throw();
+extern ER		irel_wai(ID tskid) throw();
+extern ER		sus_tsk(ID tskid) throw();
+extern ER		rsm_tsk(ID tskid) throw();
+extern ER		dly_tsk(RELTIM dlytim) throw();
+
+/*
+ *  ^XNáO@\
+ */
+extern ER		ras_tex(ID tskid, TEXPTN rasptn) throw();
+extern ER		iras_tex(ID tskid, TEXPTN rasptn) throw();
+extern ER		dis_tex(void) throw();
+extern ER		ena_tex(void) throw();
+extern bool_t	sns_tex(void) throw();
+extern ER		ref_tex(ID tskid, T_RTEX *pk_rtex) throw();
+
+/*
+ *  ¯úEÊM@\
+ */
+extern ER		sig_sem(ID semid) throw();
+extern ER		isig_sem(ID semid) throw();
+extern ER		wai_sem(ID semid) throw();
+extern ER		pol_sem(ID semid) throw();
+extern ER		twai_sem(ID semid, TMO tmout) throw();
+extern ER		ini_sem(ID semid) throw();
+extern ER		ref_sem(ID semid, T_RSEM *pk_rsem) throw();
+
+extern ER		set_flg(ID flgid, FLGPTN setptn) throw();
+extern ER		iset_flg(ID flgid, FLGPTN setptn) throw();
+extern ER		clr_flg(ID flgid, FLGPTN clrptn) throw();
+extern ER		wai_flg(ID flgid, FLGPTN waiptn,
+						MODE wfmode, FLGPTN *p_flgptn) throw();
+extern ER		pol_flg(ID flgid, FLGPTN waiptn,
+						MODE wfmode, FLGPTN *p_flgptn) throw();
+extern ER		twai_flg(ID flgid, FLGPTN waiptn,
+						MODE wfmode, FLGPTN *p_flgptn, TMO tmout) throw();
+extern ER		ini_flg(ID flgid) throw();
+extern ER		ref_flg(ID flgid, T_RFLG *pk_rflg) throw();
+
+extern ER		snd_dtq(ID dtqid, intptr_t data) throw();
+extern ER		psnd_dtq(ID dtqid, intptr_t data) throw();
+extern ER		ipsnd_dtq(ID dtqid, intptr_t data) throw();
+extern ER		tsnd_dtq(ID dtqid, intptr_t data, TMO tmout) throw();
+extern ER		fsnd_dtq(ID dtqid, intptr_t data) throw();
+extern ER		ifsnd_dtq(ID dtqid, intptr_t data) throw();
+extern ER		rcv_dtq(ID dtqid, intptr_t *p_data) throw();
+extern ER		prcv_dtq(ID dtqid, intptr_t *p_data) throw();
+extern ER		trcv_dtq(ID dtqid, intptr_t *p_data, TMO tmout) throw();
+extern ER		ini_dtq(ID dtqid) throw();
+extern ER		ref_dtq(ID dtqid, T_RDTQ *pk_rdtq) throw();
+
+extern ER		snd_pdq(ID pdqid, intptr_t data, PRI datapri) throw();
+extern ER		psnd_pdq(ID pdqid, intptr_t data, PRI datapri) throw();
+extern ER		ipsnd_pdq(ID pdqid, intptr_t data, PRI datapri) throw();
+extern ER		tsnd_pdq(ID pdqid, intptr_t data,
+										PRI datapri, TMO tmout) throw();
+extern ER		rcv_pdq(ID pdqid, intptr_t *p_data, PRI *p_datapri) throw();
+extern ER		prcv_pdq(ID pdqid, intptr_t *p_data, PRI *p_datapri) throw();
+extern ER		trcv_pdq(ID pdqid, intptr_t *p_data,
+										PRI *p_datapri, TMO tmout) throw();
+extern ER		ini_pdq(ID pdqid) throw();
+extern ER		ref_pdq(ID pdqid, T_RPDQ *pk_rpdq) throw();
+
+extern ER		snd_mbx(ID mbxid, T_MSG *pk_msg) throw();
+extern ER		rcv_mbx(ID mbxid, T_MSG **ppk_msg) throw();
+extern ER		prcv_mbx(ID mbxid, T_MSG **ppk_msg) throw();
+extern ER		trcv_mbx(ID mbxid, T_MSG **ppk_msg, TMO tmout) throw();
+extern ER		ini_mbx(ID mbxid) throw();
+extern ER		ref_mbx(ID mbxid, T_RMBX *pk_rmbx) throw();
+
+extern ER		loc_mtx(ID mtxid) throw();
+extern ER		ploc_mtx(ID mtxid) throw();
+extern ER		tloc_mtx(ID mtxid, TMO tmout) throw();
+extern ER		unl_mtx(ID mtxid) throw();
+extern ER		ini_mtx(ID mtxid) throw();
+extern ER		ref_mtx(ID mtxid, T_RMTX *pk_rmtx) throw();
+
+/*
+ *  v[Ç@\
+ */
+extern ER		get_mpf(ID mpfid, void **p_blk) throw();
+extern ER		pget_mpf(ID mpfid, void **p_blk) throw();
+extern ER		tget_mpf(ID mpfid, void **p_blk, TMO tmout) throw();
+extern ER		rel_mpf(ID mpfid, void *blk) throw();
+extern ER		ini_mpf(ID mpfid) throw();
+extern ER		ref_mpf(ID mpfid, T_RMPF *pk_rmpf) throw();
+
+/*
+ *  ÔÇ@\
+ */
+extern ER		get_tim(SYSTIM *p_systim) throw();
+extern ER		get_utm(SYSUTM *p_sysutm) throw();
+
+extern ER		sta_cyc(ID cycid) throw();
+extern ER		stp_cyc(ID cycid) throw();
+extern ER		ref_cyc(ID cycid, T_RCYC *pk_rcyc) throw();
+
+extern ER		sta_alm(ID almid, RELTIM almtim) throw();
+extern ER		ista_alm(ID almid, RELTIM almtim) throw();
+extern ER		stp_alm(ID almid) throw();
+extern ER		istp_alm(ID almid) throw();
+extern ER		ref_alm(ID almid, T_RALM *pk_ralm) throw();
+
+/*
+ *  VXeóÔÇ@\
+ */
+extern ER		rot_rdq(PRI tskpri) throw();
+extern ER		irot_rdq(PRI tskpri) throw();
+extern ER		get_tid(ID *p_tskid) throw();
+extern ER		iget_tid(ID *p_tskid) throw();
+extern ER		loc_cpu(void) throw();
+extern ER		iloc_cpu(void) throw();
+extern ER		unl_cpu(void) throw();
+extern ER		iunl_cpu(void) throw();
+extern ER		dis_dsp(void) throw();
+extern ER		ena_dsp(void) throw();
+extern bool_t	sns_ctx(void) throw();
+extern bool_t	sns_loc(void) throw();
+extern bool_t	sns_dsp(void) throw();
+extern bool_t	sns_dpn(void) throw();
+extern bool_t	sns_ker(void) throw();
+extern ER		ext_ker(void) throw();
+
+/*
+ *  ÝÇ@\
+ */
+extern ER		dis_int(INTNO intno) throw();
+extern ER		ena_int(INTNO intno) throw();
+extern ER		chg_ipm(PRI intpri) throw();
+extern ER		get_ipm(PRI *p_intpri) throw();
+
+/*
+ *  CPUáOÇ@\
+ */
+extern bool_t	xsns_dpn(void *p_excinf) throw();
+extern bool_t	xsns_xpn(void *p_excinf) throw();
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  IuWFNg®«Ìè`
+ */
+#define TA_ACT			UINT_C(0x02)	/* ^XNðN®³ê½óÔÅ¶¬ */
+
+#define TA_TPRI			UINT_C(0x01)	/* ^XNÌÒ¿sñðDæxÉ */
+#define TA_MPRI			UINT_C(0x02)	/* bZ[WL
+[ðDæxÉ */
+
+#define TA_WMUL			UINT_C(0x02)	/* ¡ÌÒ¿^XN */
+#define TA_CLR			UINT_C(0x04)	/* CxgtOÌNAwè */
+
+#define TA_CEILING		UINT_C(0x03)	/* DæxãÀvgR */
+
+#define TA_STA			UINT_C(0x02)	/* üúnhð®ìóÔÅ¶¬ */
+
+#define TA_NONKERNEL	UINT_C(0x02)	/* J[lÇOÌÝ */
+
+#define TA_ENAINT		UINT_C(0x01)	/* ÝvÖ~tOðNA */
+#define TA_EDGE			UINT_C(0x02)	/* GbWgK */
+
+/*
+ *  T[rXR[Ì®ì[hÌè`
+ */
+#define TWF_ORW			UINT_C(0x01)	/* CxgtOÌORÒ¿ */
+#define TWF_ANDW		UINT_C(0x02)	/* CxgtOÌANDÒ¿ */
+
+/*
+ *  IuWFNgÌóÔÌè`
+ */
+#define TTS_RUN			UINT_C(0x01)	/* ÀsóÔ */
+#define TTS_RDY			UINT_C(0x02)	/* ÀsÂ\óÔ */
+#define TTS_WAI			UINT_C(0x04)	/* Ò¿óÔ */
+#define TTS_SUS			UINT_C(0x08)	/* ­§Ò¿óÔ */
+#define TTS_WAS			UINT_C(0x0c)	/* ñdÒ¿óÔ */
+#define TTS_DMT			UINT_C(0x10)	/* x~óÔ */
+
+#define TTW_SLP			UINT_C(0x0001)	/* N°Ò¿ */
+#define TTW_DLY			UINT_C(0x0002)	/* ÔoßÒ¿ */
+#define TTW_SEM			UINT_C(0x0004)	/* Z}tHÌ¹l¾Ò¿ */
+#define TTW_FLG			UINT_C(0x0008)	/* CxgtOÒ¿ */
+#define TTW_SDTQ		UINT_C(0x0010)	/* f[^L
+[ÖÌMÒ¿ */
+#define TTW_RDTQ		UINT_C(0x0020)	/* f[^L
+[©çÌóMÒ¿ */
+#define TTW_SPDQ		UINT_C(0x0100)	/* Dæxf[^L
+[ÖÌMÒ¿ */
+#define TTW_RPDQ		UINT_C(0x0200)	/* Dæxf[^L
+[©çÌóMÒ¿ */
+#define TTW_MBX			UINT_C(0x0040)	/* [{bNX©çÌóMÒ¿ */
+#define TTW_MPF			UINT_C(0x2000)	/* Åè·ubNÌl¾Ò¿ */
+
+#define TTEX_ENA		UINT_C(0x01)	/* ^XNáOÂóÔ */
+#define TTEX_DIS		UINT_C(0x02)	/* ^XNáOÖ~óÔ */
+
+#define TCYC_STP		UINT_C(0x01)	/* üúnhª®ìµÄ¢È¢ */
+#define TCYC_STA		UINT_C(0x02)	/* üúnhª®ìµÄ¢é */
+
+#define TALM_STP		UINT_C(0x01)	/* A[nhª®ìµÄ¢È¢ */
+#define TALM_STA		UINT_C(0x02)	/* A[nhª®ìµÄ¢é */
+
+/*
+ *  »Ì¼ÌèÌè`
+ */
+#define TSK_SELF		0			/* ©^XNwè */
+#define TSK_NONE		0			/* Y·é^XNªÈ¢ */
+
+#define TPRI_SELF		0			/* ©^XNÌx[XDæx */
+#define TPRI_INI		0			/* ^XNÌN®Dæx */
+
+#define TIPM_ENAALL		0			/* ÝDæx}XNSð */
+
+/*
+ *  \¬èÆ}N
+ */
+
+/*
+ *  T|[g·é@\
+ */
+#ifdef TOPPERS_TARGET_SUPPORT_DIS_INT
+#define TOPPERS_SUPPORT_DIS_INT			/* dis_intªT|[g³êÄ¢é */
+#endif /* TOPPERS_TARGET_SUPPORT_DIS_INT */
+
+#ifdef TOPPERS_TARGET_SUPPORT_ENA_INT
+#define TOPPERS_SUPPORT_ENA_INT			/* ena_intªT|[g³êÄ¢é */
+#endif /* TOPPERS_TARGET_SUPPORT_ENA_INT */
+
+#ifdef TOPPERS_TARGET_SUPPORT_GET_UTM
+#define TOPPERS_SUPPORT_GET_UTM			/* get_utmªT|[g³êÄ¢é */
+#endif /* TOPPERS_TARGET_SUPPORT_GET_UTM */
+
+#define TOPPERS_SUPPORT_MUTEX			/* ~
+[ebNX@\g£ */
+
+/*
+ *  DæxÌÍÍ
+ */
+#define TMIN_TPRI		1			/* ^XNDæxÌÅ¬liÅlj*/
+#define TMAX_TPRI		16			/* ^XNDæxÌÅåliÅálj*/
+#define TMIN_DPRI		1			/* f[^DæxÌÅ¬liÅlj*/
+#define TMAX_DPRI		16			/* f[^DæxÌÅåliÅálj*/
+#define TMIN_MPRI		1			/* bZ[WDæxÌÅ¬liÅlj*/
+#define TMAX_MPRI		16			/* bZ[WDæxÌÅåliÅálj*/
+#define TMIN_ISRPRI		1			/* ÝT[rX[`DæxÌÅ¬l */
+#define TMAX_ISRPRI		16			/* ÝT[rX[`DæxÌÅål */
+
+/*
+ *  o[Wîñ
+ */
+#define TKERNEL_MAKER	UINT_C(0x0118)	/* J[lÌ[J[R[h */
+#define TKERNEL_PRID	UINT_C(0x0007)	/* J[lÌ¯ÊÔ */
+#define TKERNEL_SPVER	UINT_C(0xf513)	/* J[ldlÌo[WÔ */
+#define TKERNEL_PRVER	UINT_C(0x1070)	/* J[lÌo[WÔ */
+
+/*
+ *  L
+[COñÌÅål
+ */
+#define TMAX_ACTCNT		UINT_C(1)		/* N®vL
+[COÌÅål */
+#define TMAX_WUPCNT		UINT_C(1)		/* N°vL
+[COÌÅål */
+
+/*
+ *  rbgp^[Ìrbg
+ */
+#ifndef TBIT_TEXPTN					/* ^XNáOvöÌrbg */
+#define TBIT_TEXPTN		(sizeof(TEXPTN) * CHAR_BIT)
+#endif /* TBIT_TEXPTN */
+
+#ifndef TBIT_FLGPTN					/* CxgtOÌrbg */
+#define TBIT_FLGPTN		(sizeof(FLGPTN) * CHAR_BIT)
+#endif /* TBIT_FLGPTN */
+
+/*
+ *  ÌæmÛÌ½ßÌ}N
+ *
+ *  ÈºÌTOPPERS_COUNT_SZÆTOPPERS_ROUND_SZÌè`ÍCunitª2ÌÐæÅ 
+ *  é±Æð¼èµÄ¢éD
+ */
+#ifndef TOPPERS_COUNT_SZ
+#define TOPPERS_COUNT_SZ(sz, unit)	(((sz) + (unit) - 1) / (unit))
+#endif /* TOPPERS_COUNT_SZ */
+#ifndef TOPPERS_ROUND_SZ
+#define TOPPERS_ROUND_SZ(sz, unit)	(((sz) + (unit) - 1) & ~((unit) - 1))
+#endif /* TOPPERS_ROUND_SZ */
+
+#define COUNT_STK_T(sz)		TOPPERS_COUNT_SZ(sz, sizeof(STK_T))
+#define ROUND_STK_T(sz)		TOPPERS_ROUND_SZ(sz, sizeof(STK_T))
+
+#define COUNT_MPF_T(blksz)	TOPPERS_COUNT_SZ(blksz, sizeof(MPF_T))
+#define ROUND_MPF_T(blksz)	TOPPERS_ROUND_SZ(blksz, sizeof(MPF_T))
+
+/*
+ *  »Ì¼Ì\¬è
+ */
+#define TMAX_MAXSEM		UINT_MAX	/* Z}tHÌÅå¹ÌÅål */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* TOPPERS_KERNEL_H */
Index: /asp_ewarm/asp-1.7.0/extension/mutex/kernel/Makefile.kernel
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/kernel/Makefile.kernel	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/kernel/Makefile.kernel	(revision 61)
@@ -0,0 +1,144 @@
+#
+#  TOPPERS/ASP Kernel
+#      Toyohashi Open Platform for Embedded Real-Time Systems/
+#      Advanced Standard Profile Kernel
+# 
+#  Copyright (C) 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
+# 
+#  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+#  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+#  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+#  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+#       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+#      XR[hÉÜÜêÄ¢é±ÆD
+#  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+#      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+#      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+#      Ì³ÛØKèðfÚ·é±ÆD
+#  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+#      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+#      ÆD
+#    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+#        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+#    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+#        ñ·é±ÆD
+#  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+#      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+#      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+#      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+#      ÆÓ·é±ÆD
+# 
+#  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+#  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+#  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+#  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+#  ÌÓCðíÈ¢D
+# 
+#  @(#) $Id: Makefile.kernel 1694 2010-01-01 15:59:09Z ertl-hiro $
+# 
+
+#
+#		J[lÌt@C\¬Ìè`
+#
+
+#
+#  1ÂÌ\[Xt@C©ç¡ÌIuWFNgt@Cð¶¬·éæ¤Éì
+#  ¬³ê½\[Xt@CÌXg
+#
+KERNEL_FCSRCS = startup.c task.c wait.c time_event.c \
+				task_manage.c task_refer.c task_sync.c task_except.c \
+				semaphore.c eventflag.c dataqueue.c pridataq.c mailbox.c \
+				mutex.c mempfix.c time_manage.c cyclic.c alarm.c \
+				sys_manage.c interrupt.c exception.c
+
+#
+#  e\[Xt@C©ç¶¬³êéIuWFNgt@CÌXg
+#
+startup = sta_ker.o ext_ker.o
+
+task = tskini.o tsksched.o tskrun.o tsknrun.o \
+		tskdmt.o tskact.o tskpri.o tskrot.o tsktex.o
+
+wait = waimake.o waicmp.o waitmo.o waitmook.o \
+		wairel.o wobjwai.o wobjwaitmo.o iniwque.o
+
+time_event = tmeini.o tmeup.o tmedown.o tmeins.o tmedel.o tmeltim.o sigtim.o
+
+task_manage = act_tsk.o iact_tsk.o can_act.o ext_tsk.o ter_tsk.o \
+		chg_pri.o get_pri.o get_inf.o
+
+task_refer = ref_tsk.o
+
+task_sync = slp_tsk.o tslp_tsk.o wup_tsk.o iwup_tsk.o can_wup.o \
+		rel_wai.o irel_wai.o sus_tsk.o rsm_tsk.o dly_tsk.o
+
+task_except = ras_tex.o iras_tex.o dis_tex.o ena_tex.o sns_tex.o ref_tex.o
+
+semaphore = semini.o sig_sem.o isig_sem.o \
+		wai_sem.o pol_sem.o twai_sem.o ini_sem.o ref_sem.o
+
+eventflag = flgini.o flgcnd.o set_flg.o iset_flg.o clr_flg.o \
+		wai_flg.o pol_flg.o twai_flg.o ini_flg.o ref_flg.o
+
+dataqueue = dtqini.o dtqenq.o dtqfenq.o dtqdeq.o dtqsnd.o dtqfsnd.o dtqrcv.o \
+		snd_dtq.o psnd_dtq.o ipsnd_dtq.o tsnd_dtq.o fsnd_dtq.o ifsnd_dtq.o \
+		rcv_dtq.o prcv_dtq.o trcv_dtq.o ini_dtq.o ref_dtq.o
+
+pridataq = pdqini.o pdqenq.o pdqdeq.o pdqsnd.o pdqrcv.o \
+		snd_pdq.o psnd_pdq.o ipsnd_pdq.o tsnd_pdq.o \
+		rcv_pdq.o prcv_pdq.o trcv_pdq.o ini_pdq.o ref_pdq.o
+
+mailbox = mbxini.o snd_mbx.o rcv_mbx.o prcv_mbx.o trcv_mbx.o \
+		ini_mbx.o ref_mbx.o
+
+mutex = mtxhook.o mtxini.o mtxchk.o mtxscan.o mtxcalc.o mtxrel.o mtxrela.o \
+		loc_mtx.o ploc_mtx.o tloc_mtx.o unl_mtx.o ini_mtx.o ref_mtx.o
+
+mempfix = mpfini.o mpfget.o get_mpf.o pget_mpf.o tget_mpf.o \
+		rel_mpf.o ini_mpf.o ref_mpf.o
+
+time_manage = get_tim.o get_utm.o
+
+cyclic = cycini.o sta_cyc.o stp_cyc.o ref_cyc.o cyccal.o
+
+alarm = almini.o sta_alm.o ista_alm.o stp_alm.o istp_alm.o ref_alm.o almcal.o
+
+sys_manage = rot_rdq.o irot_rdq.o get_tid.o iget_tid.o \
+		loc_cpu.o iloc_cpu.o unl_cpu.o iunl_cpu.o dis_dsp.o ena_dsp.o \
+		sns_ctx.o sns_loc.o sns_dsp.o sns_dpn.o sns_ker.o
+
+interrupt = intini.o dis_int.o ena_int.o chg_ipm.o get_ipm.o
+
+exception = excini.o xsns_dpn.o xsns_xpn.o
+
+#
+#  ¶¬³êéIuWFNgt@CÌË¶ÖWÌè`
+#
+$(startup) $(startup:.o=.s) $(startup:.o=.d): startup.c
+$(task) $(task:.o=.s) $(task:.o=.d): task.c
+$(wait) $(wait:.o=.s) $(wait:.o=.d): wait.c
+$(time_event) $(time_event:.o=.s) $(time_event:.o=.d): time_event.c
+$(task_manage) $(task_manage:.o=.s) $(task_manage:.o=.d): task_manage.c
+$(task_refer) $(task_refer:.o=.s) $(task_refer:.o=.d): task_refer.c
+$(task_sync) $(task_sync:.o=.s) $(task_sync:.o=.d): task_sync.c
+$(task_except) $(task_except:.o=.s) $(task_except:.o=.d): task_except.c
+$(semaphore) $(semaphore:.o=.s) $(semaphore:.o=.d): semaphore.c
+$(eventflag) $(eventflag:.o=.s) $(eventflag:.o=.d): eventflag.c
+$(dataqueue) $(dataqueue:.o=.s) $(dataqueue:.o=.d): dataqueue.c
+$(pridataq) $(pridataq:.o=.s) $(pridataq:.o=.d): pridataq.c
+$(mailbox) $(mailbox:.o=.s) $(mailbox:.o=.d): mailbox.c
+$(mutex) $(mutex:.o=.s) $(mutex:.o=.d): mutex.c
+$(mempfix) $(mempfix:.o=.s) $(mempfix:.o=.d): mempfix.c
+$(time_manage) $(time_manage:.o=.s) $(time_manage:.o=.d): time_manage.c
+$(cyclic) $(cyclic:.o=.s) $(cyclic:.o=.d): cyclic.c
+$(alarm) $(alarm:.o=.s) $(alarm:.o=.d): alarm.c
+$(sys_manage) $(sys_manage:.o=.s) $(sys_manage:.o=.d): sys_manage.c
+$(interrupt) $(interrupt:.o=.s) $(interrupt:.o=.d): interrupt.c
+$(exception) $(exception:.o=.s) $(exception:.o=.d): exception.c
Index: /asp_ewarm/asp-1.7.0/extension/mutex/kernel/allfunc.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/kernel/allfunc.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/kernel/allfunc.h	(revision 61)
@@ -0,0 +1,260 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2005-2009 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: allfunc.h 1694 2010-01-01 15:59:09Z ertl-hiro $
+ */
+
+/*
+ *		·×ÄÌÖðRpC·é½ßÌè`
+ */
+
+#ifndef TOPPERS_ALLFUNC_H
+#define TOPPERS_ALLFUNC_H
+
+/* startup.c */
+#define TOPPERS_sta_ker
+#define TOPPERS_ext_ker
+
+/* task.c */
+#define TOPPERS_tskini
+#define TOPPERS_tsksched
+#define TOPPERS_tskrun
+#define TOPPERS_tsknrun
+#define TOPPERS_tskdmt
+#define TOPPERS_tskact
+#define TOPPERS_tskpri
+#define TOPPERS_tskrot
+#define TOPPERS_tsktex
+
+/* wait.c */
+#define TOPPERS_waimake
+#define TOPPERS_waicmp
+#define TOPPERS_waitmo
+#define TOPPERS_waitmook
+#define TOPPERS_wairel
+#define TOPPERS_wobjwai
+#define TOPPERS_wobjwaitmo
+#define TOPPERS_iniwque
+
+/* time_event.c */
+#define TOPPERS_tmeini
+#define TOPPERS_tmeup
+#define TOPPERS_tmedown
+#define TOPPERS_tmeins
+#define TOPPERS_tmedel
+#define TOPPERS_tmeltim
+#define TOPPERS_sigtim
+
+/* task_manage.c */
+#define TOPPERS_act_tsk
+#define TOPPERS_iact_tsk
+#define TOPPERS_can_act
+#define TOPPERS_ext_tsk
+#define TOPPERS_ter_tsk
+#define TOPPERS_chg_pri
+#define TOPPERS_get_pri
+#define TOPPERS_get_inf
+
+/* task_refer.c */
+#define TOPPERS_ref_tsk
+
+/* task_sync.c */
+#define TOPPERS_slp_tsk
+#define TOPPERS_tslp_tsk
+#define TOPPERS_wup_tsk
+#define TOPPERS_iwup_tsk
+#define TOPPERS_can_wup
+#define TOPPERS_rel_wai
+#define TOPPERS_irel_wai
+#define TOPPERS_sus_tsk
+#define TOPPERS_rsm_tsk
+#define TOPPERS_dly_tsk
+
+/* task_except.c */
+#define TOPPERS_ras_tex
+#define TOPPERS_iras_tex
+#define TOPPERS_dis_tex
+#define TOPPERS_ena_tex
+#define TOPPERS_sns_tex
+#define TOPPERS_ref_tex
+
+/* semaphore.c */
+#define TOPPERS_semini
+#define TOPPERS_sig_sem
+#define TOPPERS_isig_sem
+#define TOPPERS_wai_sem
+#define TOPPERS_pol_sem
+#define TOPPERS_twai_sem
+#define TOPPERS_ini_sem
+#define TOPPERS_ref_sem
+
+/* eventflag.c */
+#define TOPPERS_flgini
+#define TOPPERS_flgcnd
+#define TOPPERS_set_flg
+#define TOPPERS_iset_flg
+#define TOPPERS_clr_flg
+#define TOPPERS_wai_flg
+#define TOPPERS_pol_flg
+#define TOPPERS_twai_flg
+#define TOPPERS_ini_flg
+#define TOPPERS_ref_flg
+
+/* dataqueue.c */
+#define TOPPERS_dtqini
+#define TOPPERS_dtqenq
+#define TOPPERS_dtqfenq
+#define TOPPERS_dtqdeq
+#define TOPPERS_dtqsnd
+#define TOPPERS_dtqfsnd
+#define TOPPERS_dtqrcv
+#define TOPPERS_snd_dtq
+#define TOPPERS_psnd_dtq
+#define TOPPERS_ipsnd_dtq
+#define TOPPERS_tsnd_dtq
+#define TOPPERS_fsnd_dtq
+#define TOPPERS_ifsnd_dtq
+#define TOPPERS_rcv_dtq
+#define TOPPERS_prcv_dtq
+#define TOPPERS_trcv_dtq
+#define TOPPERS_ini_dtq
+#define TOPPERS_ref_dtq
+
+/* pridataq.c */
+#define TOPPERS_pdqini
+#define TOPPERS_pdqenq
+#define TOPPERS_pdqdeq
+#define TOPPERS_pdqsnd
+#define TOPPERS_pdqrcv
+#define TOPPERS_snd_pdq
+#define TOPPERS_psnd_pdq
+#define TOPPERS_ipsnd_pdq
+#define TOPPERS_tsnd_pdq
+#define TOPPERS_rcv_pdq
+#define TOPPERS_prcv_pdq
+#define TOPPERS_trcv_pdq
+#define TOPPERS_ini_pdq
+#define TOPPERS_ref_pdq
+
+/* mailbox.c */
+#define TOPPERS_mbxini
+#define TOPPERS_snd_mbx
+#define TOPPERS_rcv_mbx
+#define TOPPERS_prcv_mbx
+#define TOPPERS_trcv_mbx
+#define TOPPERS_ini_mbx
+#define TOPPERS_ref_mbx
+
+/* mutex.c */
+#define TOPPERS_mtxhook
+#define TOPPERS_mtxini
+#define TOPPERS_mtxchk
+#define TOPPERS_mtxscan
+#define TOPPERS_mtxcalc
+#define TOPPERS_mtxrel
+#define TOPPERS_mtxrela
+#define TOPPERS_loc_mtx
+#define TOPPERS_ploc_mtx
+#define TOPPERS_tloc_mtx
+#define TOPPERS_unl_mtx
+#define TOPPERS_ini_mtx
+#define TOPPERS_ref_mtx
+
+/* mempfix.c */
+#define TOPPERS_mpfini
+#define TOPPERS_mpfget
+#define TOPPERS_get_mpf
+#define TOPPERS_pget_mpf
+#define TOPPERS_tget_mpf
+#define TOPPERS_rel_mpf
+#define TOPPERS_ini_mpf
+#define TOPPERS_ref_mpf
+
+/* time_manage.c */
+#define TOPPERS_get_tim
+#define TOPPERS_get_utm
+
+/* cyclic.c */
+#define TOPPERS_cycini
+#define TOPPERS_sta_cyc
+#define TOPPERS_stp_cyc
+#define TOPPERS_ref_cyc
+#define TOPPERS_cyccal
+
+/* alarm.c */
+#define TOPPERS_almini
+#define TOPPERS_sta_alm
+#define TOPPERS_ista_alm
+#define TOPPERS_stp_alm
+#define TOPPERS_istp_alm
+#define TOPPERS_ref_alm
+#define TOPPERS_almcal
+
+/* sys_manage.c */
+#define TOPPERS_rot_rdq
+#define TOPPERS_irot_rdq
+#define TOPPERS_get_tid
+#define TOPPERS_iget_tid
+#define TOPPERS_loc_cpu
+#define TOPPERS_iloc_cpu
+#define TOPPERS_unl_cpu
+#define TOPPERS_iunl_cpu
+#define TOPPERS_dis_dsp
+#define TOPPERS_ena_dsp
+#define TOPPERS_sns_ctx
+#define TOPPERS_sns_loc
+#define TOPPERS_sns_dsp
+#define TOPPERS_sns_dpn
+#define TOPPERS_sns_ker
+
+/* interrupt.c */
+#define TOPPERS_intini
+#define TOPPERS_dis_int
+#define TOPPERS_ena_int
+#define TOPPERS_chg_ipm
+#define TOPPERS_get_ipm
+
+/* exception.c */
+#define TOPPERS_excini
+#define TOPPERS_xsns_dpn
+#define TOPPERS_xsns_xpn
+
+#endif /* TOPPERS_ALLFUNC_H */
Index: /asp_ewarm/asp-1.7.0/extension/mutex/kernel/check.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/kernel/check.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/kernel/check.h	(revision 61)
@@ -0,0 +1,296 @@
+/*
+ *  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-2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: check.h 1965 2010-11-20 07:22:43Z ertl-hiro $
+ */
+
+/*
+ *		G[`FbNp}N
+ */
+
+#ifndef TOPPERS_CHECK_H
+#define TOPPERS_CHECK_H
+
+/*
+ *  DæxÌÍÍÌ»è
+ */
+#define VALID_TPRI(tpri)	(TMIN_TPRI <= (tpri) && (tpri) <= TMAX_TPRI)
+
+#ifndef VALID_INTPRI_CHGIPM
+#define VALID_INTPRI_CHGIPM(intpri) \
+				(TMIN_INTPRI <= (intpri) && (intpri) <= TIPM_ENAALL)
+#endif /* VALID_INTPRI_CHGIPM */
+
+/*
+ *  ^XNDæxÌ`FbNiE_PARj
+ */
+#define CHECK_TPRI(tpri) {									\
+	if (!VALID_TPRI(tpri)) {								\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_TPRI_INI(tpri) {								\
+	if (!(VALID_TPRI(tpri) || (tpri) == TPRI_INI)) {		\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_TPRI_SELF(tpri) {								\
+	if (!(VALID_TPRI(tpri) || (tpri) == TPRI_SELF)) {		\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  ^CAEgwèlÌ`FbNiE_PARj
+ */
+#define CHECK_TMOUT(tmout) {								\
+	if (!(TMO_FEVR <= (tmout))) {							\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  ÝDæxÌ`FbNiE_PARj
+ */
+#define CHECK_INTPRI_CHGIPM(intpri) {						\
+	if (!VALID_INTPRI_CHGIPM(intpri)) {						\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  ÝÔÌ`FbNiE_PARj
+ */
+#define CHECK_INTNO_DISINT(intno) {							\
+	if (!VALID_INTNO_DISINT(intno)) {						\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  »Ì¼Ìp[^G[Ì`FbNiE_PARj
+ */
+#define CHECK_PAR(exp) {									\
+	if (!(exp)) {											\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  IuWFNgIDÌÍÍÌ»è
+ */
+#define VALID_TSKID(tskid)	(TMIN_TSKID <= (tskid) && (tskid) <= tmax_tskid)
+#define VALID_SEMID(semid)	(TMIN_SEMID <= (semid) && (semid) <= tmax_semid)
+#define VALID_FLGID(flgid)	(TMIN_FLGID <= (flgid) && (flgid) <= tmax_flgid)
+#define VALID_DTQID(dtqid)	(TMIN_DTQID <= (dtqid) && (dtqid) <= tmax_dtqid)
+#define VALID_PDQID(pdqid)	(TMIN_PDQID <= (pdqid) && (pdqid) <= tmax_pdqid)
+#define VALID_MBXID(mbxid)	(TMIN_MBXID <= (mbxid) && (mbxid) <= tmax_mbxid)
+#define VALID_MTXID(mtxid)	(TMIN_MTXID <= (mtxid) && (mtxid) <= tmax_mtxid)
+#define VALID_MPFID(mpfid)	(TMIN_MPFID <= (mpfid) && (mpfid) <= tmax_mpfid)
+#define VALID_CYCID(cycid)	(TMIN_CYCID <= (cycid) && (cycid) <= tmax_cycid)
+#define VALID_ALMID(almid)	(TMIN_ALMID <= (almid) && (almid) <= tmax_almid)
+
+/*
+ *  IuWFNgIDÌ`FbNiE_IDj
+ */
+#define CHECK_TSKID(tskid) {								\
+	if (!VALID_TSKID(tskid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_TSKID_SELF(tskid) {							\
+	if (!(VALID_TSKID(tskid) || (tskid) == TSK_SELF)) {		\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_SEMID(semid) {								\
+	if (!VALID_SEMID(semid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_FLGID(flgid) {								\
+	if (!VALID_FLGID(flgid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_DTQID(dtqid) {								\
+	if (!VALID_DTQID(dtqid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_PDQID(pdqid) {								\
+	if (!VALID_PDQID(pdqid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_MBXID(mbxid) {								\
+	if (!VALID_MBXID(mbxid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_MTXID(mtxid) {								\
+	if (!VALID_MTXID(mtxid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_MPFID(mpfid) {								\
+	if (!VALID_MPFID(mpfid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_CYCID(cycid) {								\
+	if (!VALID_CYCID(cycid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_ALMID(almid) {								\
+	if (!VALID_ALMID(almid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  ÄoµReLXgÌ`FbNiE_CTXj
+ */
+#define CHECK_TSKCTX() {									\
+	if (sense_context()) {									\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_INTCTX() {									\
+	if (!sense_context()) {									\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  ÄoµReLXgÆCPUbNóÔÌ`FbNiE_CTXj
+ */
+#define CHECK_TSKCTX_UNL() {								\
+	if (sense_context() || t_sense_lock()) {				\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_INTCTX_UNL() {								\
+	if (!sense_context() || i_sense_lock()) {				\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  fBXpb`Û¯óÔÅÈ¢©Ì`FbNiE_CTXj
+ */
+#define CHECK_DISPATCH() {									\
+	if (sense_context() || t_sense_lock() || !dspflg) {		\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  »Ì¼ÌReLXgG[Ì`FbNiE_CTXj
+ */
+#define CHECK_CTX(exp) {									\
+	if (!(exp)) {											\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  ©^XNðwèµÄ¢È¢©Ì`FbNiE_ILUSEj
+ */
+#define CHECK_NONSELF(p_tcb) {								\
+	if ((p_tcb) == p_runtsk) {								\
+		ercd = E_ILUSE;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  »Ì¼Ìs³gpG[Ì`FbNiE_ILUSEj
+ */
+#define CHECK_ILUSE(exp) {									\
+	if (!(exp)) {											\
+		ercd = E_ILUSE;										\
+		goto error_exit;									\
+	}														\
+}
+
+#endif /* TOPPERS_CHECK_H */
Index: /asp_ewarm/asp-1.7.0/extension/mutex/kernel/kernel.tf
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/kernel/kernel.tf	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/kernel/kernel.tf	(revision 61)
@@ -0,0 +1,1137 @@
+$ ======================================================================
+$ 
+$   TOPPERS/ASP Kernel
+$       Toyohashi Open Platform for Embedded Real-Time Systems/
+$       Advanced Standard Profile Kernel
+$ 
+$   Copyright (C) 2007 by TAKAGI Nobuhisa
+$   Copyright (C) 2007-2011 by Embedded and Real-Time Systems Laboratory
+$               Graduate School of Information Science, Nagoya Univ., JAPAN
+$  
+$   ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+$   Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+$   ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+$   (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+$        \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+$       XR[hÉÜÜêÄ¢é±ÆD
+$   (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+$       pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+$       Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+$       Ì³ÛØKèðfÚ·é±ÆD
+$   (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+$       pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+$       ÆD
+$     (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+$         ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+$     (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+$         ñ·é±ÆD
+$   (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+$       Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+$       Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+$       RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+$       ÆÓ·é±ÆD
+$  
+$   {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+$   æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+$   ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+$   AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+$   ÌÓCðíÈ¢D
+$ 
+$   $Id: kernel.tf 2024 2011-01-02 08:59:23Z ertl-hiro $
+$  
+$ =====================================================================
+
+$ =====================================================================
+$ kernel_cfg.hÌ¶¬
+$ =====================================================================
+
+$FILE "kernel_cfg.h"$
+/* kernel_cfg.h */$NL$
+#ifndef TOPPERS_KERNEL_CFG_H$NL$
+#define TOPPERS_KERNEL_CFG_H$NL$
+$NL$
+#define TNUM_TSKID	$LENGTH(TSK.ID_LIST)$$NL$
+#define TNUM_SEMID	$LENGTH(SEM.ID_LIST)$$NL$
+#define TNUM_FLGID	$LENGTH(FLG.ID_LIST)$$NL$
+#define TNUM_DTQID	$LENGTH(DTQ.ID_LIST)$$NL$
+#define TNUM_PDQID	$LENGTH(PDQ.ID_LIST)$$NL$
+#define TNUM_MBXID	$LENGTH(MBX.ID_LIST)$$NL$
+#define TNUM_MTXID	$LENGTH(MTX.ID_LIST)$$NL$
+#define TNUM_MPFID	$LENGTH(MPF.ID_LIST)$$NL$
+#define TNUM_CYCID	$LENGTH(CYC.ID_LIST)$$NL$
+#define TNUM_ALMID	$LENGTH(ALM.ID_LIST)$$NL$
+$NL$
+$FOREACH id TSK.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id SEM.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id FLG.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id DTQ.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id PDQ.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id MBX.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id MTX.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id MPF.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id CYC.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id ALM.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$NL$
+#endif /* TOPPERS_KERNEL_CFG_H */$NL$
+
+$ =====================================================================
+$ kernel_cfg.cÌ¶¬
+$ =====================================================================
+
+$FILE "kernel_cfg.c"$
+/* kernel_cfg.c */$NL$
+#include "kernel/kernel_int.h"$NL$
+#include "kernel_cfg.h"$NL$
+$NL$
+#ifndef TOPPERS_EMPTY_LABEL$NL$
+#define TOPPERS_EMPTY_LABEL(x,y) x y[0]$NL$
+#endif$NL$
+$NL$
+#if TKERNEL_PRID != 0x07u$NL$
+#error The kernel does not match this configuration file.$NL$
+#endif$NL$
+$NL$
+
+$ 
+$  CN[hfBNeBui#includej
+$ 
+/*$NL$
+$SPC$*  Include Directives (#include)$NL$
+$SPC$*/$NL$
+$NL$
+$INCLUDES$
+$NL$
+
+$ 
+$  IuWFNgÌIDÔðÛ·éÏ
+$ 
+$IF USE_EXTERNAL_ID$
+	/*$NL$
+	$SPC$*  Variables for Object ID$NL$
+	$SPC$*/$NL$
+	$NL$
+	$FOREACH id TSK.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id SEM.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id FLG.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id DTQ.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id PDQ.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id MBX.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id MTX.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id MPF.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id CYC.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id ALM.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+$END$
+
+$ 
+$  g[XO}NÌftHgè`
+$ 
+/*$NL$
+$SPC$*  Default Definitions of Trace Log Macros$NL$
+$SPC$*/$NL$
+$NL$
+#ifndef LOG_ISR_ENTER$NL$
+#define LOG_ISR_ENTER(intno)$NL$
+#endif /* LOG_ISR_ENTER */$NL$
+$NL$
+#ifndef LOG_ISR_LEAVE$NL$
+#define LOG_ISR_LEAVE(intno)$NL$
+#endif /* LOG_ISR_LEAVE */$NL$
+$NL$
+
+$ 
+$  ^XN
+$ 
+/*$NL$
+$SPC$*  Task Management Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ^XNª1ÂÈã¶Ý·é±ÆÌ`FbN
+$IF !LENGTH(TSK.ID_LIST)$
+	$ERROR$$FORMAT(_("no task is registered"))$$END$
+$END$
+
+$ ^XNIDÔÌÅål
+const ID _kernel_tmax_tskid = (TMIN_TSKID + TNUM_TSKID - 1);$NL$
+$NL$
+
+$ G[`FbN
+$FOREACH tskid TSK.ID_LIST$
+$	// tskatrªimTA_ACTnjÅÈ¢êiE_RSATRj
+	$IF (TSK.TSKATR[tskid] & ~(TA_ACT|TARGET_TSKATR)) != 0$
+		$ERROR TSK.TEXT_LINE[tskid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "tskatr", TSK.TSKATR[tskid], tskid, "CRE_TSK")$$END$
+	$END$
+
+$	// (TMIN_TPRI <= itskpri && itskpri <= TMAX_TPRI)ÅÈ¢êiE_PARj
+	$IF !(TMIN_TPRI <= TSK.ITSKPRI[tskid] && TSK.ITSKPRI[tskid] <= TMAX_TPRI)$
+		$ERROR TSK.TEXT_LINE[tskid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "itskpri", TSK.ITSKPRI[tskid], tskid, "CRE_TSK")$$END$
+	$END$
+
+$ 	// texatrªiTA_NULLjÅÈ¢êiE_RSATRj
+	$IF LENGTH(TSK.TEXATR[tskid]) && TSK.TEXATR[tskid] != 0$
+		$ERROR DEF_TEX.TEXT_LINE[tskid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "texatr", TSK.TEXATR[tskid], tskid, "DEF_TEX")$$END$
+	$END$
+$END$
+
+$ X^bNÌæÌ¶¬Æ»êÉÖ·éG[`FbN
+$FOREACH tskid TSK.ID_LIST$
+$	// stkszª0©C^[Qbgè`ÌÅ¬liTARGET_MIN_STKSZjæèà¬³¢êiE_PARj
+	$IF TSK.STKSZ[tskid] == 0 || (TARGET_MIN_STKSZ
+									&& TSK.STKSZ[tskid] < TARGET_MIN_STKSZ)$
+		$ERROR TSK.TEXT_LINE[tskid]$E_PAR: $FORMAT(_("%1% `%2%\' of `%3%\' in %4% is too small"), "stksz", TSK.STKSZ[tskid], tskid, "CRE_TSK")$$END$
+	$END$
+$ 	// stkszªX^bNÌæÌTCYÆµÄ³µ­È¢êiE_PARj
+	$IF !EQ(TSK.STK[tskid], "NULL") && CHECK_STKSZ_ALIGN
+							&& (TSK.STKSZ[tskid] & (CHECK_STKSZ_ALIGN - 1))$
+		$ERROR TSK.TEXT_LINE[tskid]$E_PAR: $FORMAT(_("%1% `%2%\' of `%3%\' in %4% is not aligned"), "stksz", TSK.STKSZ[tskid], tskid, "CRE_TSK")$$END$
+	$END$
+
+	$IF EQ(TSK.STK[tskid],"NULL")$
+		static STK_T _kernel_stack_$tskid$[COUNT_STK_T($TSK.STKSZ[tskid]$)];$NL$
+		$TSK.TINIB_STKSZ[tskid] = FORMAT("ROUND_STK_T(%1%)", TSK.STKSZ[tskid])$
+		$TSK.TINIB_STK[tskid] = CONCAT("_kernel_stack_", tskid)$
+	$ELSE$
+		$TSK.TINIB_STKSZ[tskid] = TSK.STKSZ[tskid]$
+		$TSK.TINIB_STK[tskid] = TSK.STK[tskid]$
+	$END$
+$END$
+$NL$
+
+$ ^XNú»ubNÌ¶¬i^XNÍ1ÂÈã¶Ý·éj
+const TINIB _kernel_tinib_table[TNUM_TSKID] = {$NL$
+$JOINEACH tskid TSK.ID_LIST ",\n"$
+$	// ^XN®«Cg£îñCN®ÔnCN®Dæx
+	$TAB${
+	$SPC$($TSK.TSKATR[tskid]$), (intptr_t)($TSK.EXINF[tskid]$),
+	$SPC$((TASK)($TSK.TASK[tskid]$)), INT_PRIORITY($TSK.ITSKPRI[tskid]$),
+
+$	// ^XNú»ReLXgubNCX^bNÌæ
+	$IF USE_TSKINICTXB$
+		$GENERATE_TSKINICTXB(tskid)$
+	$ELSE$
+		$SPC$$TSK.TINIB_STKSZ[tskid]$, $TSK.TINIB_STK[tskid]$,
+	$END$
+
+$	// ^XNáO[`Ì®«ÆN®Ôn
+	$SPC$($ALT(TSK.TEXATR[tskid],"TA_NULL")$), ($ALT(TSK.TEXRTN[tskid],"NULL")$) }
+$END$$NL$
+};$NL$
+$NL$
+
+$ ^XNÇubNÌ¶¬
+TCB _kernel_tcb_table[TNUM_TSKID];$NL$
+$NL$
+
+$ ^XN¶¬e[uÌ¶¬
+const ID _kernel_torder_table[TNUM_TSKID] = {$NL$
+$TAB$$JOINEACH tskid TSK.ORDER_LIST ", "$$tskid$$END$$NL$
+};$NL$
+$NL$
+
+$ 
+$  Z}tH
+$ 
+/*$NL$
+$SPC$*  Semaphore Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ Z}tHIDÔÌÅål
+const ID _kernel_tmax_semid = (TMIN_SEMID + TNUM_SEMID - 1);$NL$
+$NL$
+
+$ Z}tHú»ubNÌ¶¬
+$IF LENGTH(SEM.ID_LIST)$
+	const SEMINIB _kernel_seminib_table[TNUM_SEMID] = {$NL$
+	$JOINEACH semid SEM.ID_LIST ",\n"$
+$		// sematrªimTA_TPRInjÅÈ¢êiE_RSATRj
+		$IF (SEM.SEMATR[semid] & ~TA_TPRI) != 0$
+			$ERROR SEM.TEXT_LINE[semid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "sematr", SEM.SEMATR[semid], semid, "CRE_SEM")$$END$
+		$END$
+
+$		// (0 <= isemcnt && isemcnt <= maxsem)ÅÈ¢êiE_PARj
+		$IF !(0 <= SEM.ISEMCNT[semid] && SEM.ISEMCNT[semid] <= SEM.MAXSEM[semid])$
+			$ERROR SEM.TEXT_LINE[semid]$E_PAR: $FORMAT(_("too large %1% `%2%\' of `%3%\' in %4%"), "isemcnt", SEM.ISEMCNT[semid], semid, "CRE_SEM")$$END$
+		$END$
+
+$		// (1 <= maxsem && maxsem <= TMAX_MAXSEM)ÅÈ¢êiE_PARj
+		$IF !(1 <= SEM.MAXSEM[semid] && SEM.MAXSEM[semid] <= TMAX_MAXSEM)$
+			$ERROR SEM.TEXT_LINE[semid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "maxsem", SEM.MAXSEM[semid], semid, "CRE_SEM")$$END$
+		$END$
+
+$		// Z}tHú»ubN
+		$TAB${ ($SEM.SEMATR[semid]$), ($SEM.ISEMCNT[semid]$), ($SEM.MAXSEM[semid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// Z}tHÇubN
+	SEMCB _kernel_semcb_table[TNUM_SEMID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const SEMINIB, _kernel_seminib_table);$NL$
+	TOPPERS_EMPTY_LABEL(SEMCB, _kernel_semcb_table);$NL$
+$END$$NL$
+
+$ 
+$  CxgtO
+$ 
+/*$NL$
+$SPC$*  Eventflag Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ CxgtOIDÔÌÅål
+const ID _kernel_tmax_flgid = (TMIN_FLGID + TNUM_FLGID - 1);$NL$
+$NL$
+
+$ CxgtOú»ubNÌ¶¬
+$IF LENGTH(FLG.ID_LIST)$
+	const FLGINIB _kernel_flginib_table[TNUM_FLGID] = {$NL$
+	$JOINEACH flgid FLG.ID_LIST ",\n"$
+$		// flgatrªimTA_TPRInbmTA_WMULnbmTA_CLRnjÅÈ¢êiE_RSATRj
+		$IF (FLG.FLGATR[flgid] & ~(TA_TPRI|TA_WMUL|TA_CLR)) != 0$
+			$ERROR FLG.TEXT_LINE[flgid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "flgatr", FLG.FLGATR[flgid], flgid, "CRE_FLG")$$END$
+		$END$
+
+$		// CxgtOú»ubN
+		$TAB${ ($FLG.FLGATR[flgid]$), ($FLG.IFLGPTN[flgid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// CxgtOÇubN
+	FLGCB _kernel_flgcb_table[TNUM_FLGID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const FLGINIB, _kernel_flginib_table);$NL$
+	TOPPERS_EMPTY_LABEL(FLGCB, _kernel_flgcb_table);$NL$
+$END$$NL$
+
+$ 
+$  f[^L
+[
+$ 
+/*$NL$
+$SPC$*  Dataqueue Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ f[^L
+[IDÔÌÅål
+const ID _kernel_tmax_dtqid = (TMIN_DTQID + TNUM_DTQID - 1);$NL$
+$NL$
+
+$IF LENGTH(DTQ.ID_LIST)$
+	$FOREACH dtqid DTQ.ID_LIST$
+$		// dtqatrªimTA_TPRInjÅÈ¢êiE_RSATRj
+		$IF (DTQ.DTQATR[dtqid] & ~TA_TPRI) != 0$
+			$ERROR DTQ.TEXT_LINE[dtqid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "dtqatr", DTQ.DTQATR[dtqid], dtqid, "CRE_DTQ")$$END$
+		$END$
+
+$		// dtqmbªNULLÅÈ¢êiE_NOSPTj
+		$IF !EQ(DTQ.DTQMB[dtqid], "NULL")$
+			$ERROR DTQ.TEXT_LINE[dtqid]$E_NOSPT: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "dtqmb", DTQ.DTQMB[dtqid], dtqid, "CRE_DTQ")$$END$
+		$END$
+
+$		// f[^L
+[ÇÌæ
+		$IF DTQ.DTQCNT[dtqid]$
+			static DTQMB _kernel_dtqmb_$dtqid$[$DTQ.DTQCNT[dtqid]$];$NL$
+		$END$
+	$END$
+
+$	// f[^L
+[ú»ubNÌ¶¬
+	const DTQINIB _kernel_dtqinib_table[TNUM_DTQID] = {$NL$
+	$JOINEACH dtqid DTQ.ID_LIST ",\n"$
+		$TAB${ ($DTQ.DTQATR[dtqid]$), ($DTQ.DTQCNT[dtqid]$), $IF DTQ.DTQCNT[dtqid]$(_kernel_dtqmb_$dtqid$)$ELSE$NULL$END$ }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// f[^L
+[ÇubN
+	DTQCB _kernel_dtqcb_table[TNUM_DTQID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const DTQINIB, _kernel_dtqinib_table);$NL$
+	TOPPERS_EMPTY_LABEL(DTQCB, _kernel_dtqcb_table);$NL$
+$END$$NL$
+
+$ 
+$  Dæxf[^L
+[
+$ 
+/*$NL$
+$SPC$*  Priority Dataqueue Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ Dæxf[^L
+[IDÔÌÅål
+const ID _kernel_tmax_pdqid = (TMIN_PDQID + TNUM_PDQID - 1);$NL$
+$NL$
+
+$IF LENGTH(PDQ.ID_LIST)$
+	$FOREACH pdqid PDQ.ID_LIST$
+$		// pdqatrªimTA_TPRInjÅÈ¢êiE_RSATRj
+		$IF (PDQ.PDQATR[pdqid] & ~TA_TPRI) != 0$
+			$ERROR PDQ.TEXT_LINE[pdqid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "pdqatr", PDQ.PDQATR[pdqid], pdqid, "CRE_PDQ")$$END$
+		$END$
+
+$		// (TMIN_DPRI <= maxdpri && maxdpri <= TMAX_DPRI)ÅÈ¢êiE_PARj
+		$IF !(TMIN_DPRI <= PDQ.MAXDPRI[pdqid] && PDQ.MAXDPRI[pdqid] <= TMAX_DPRI)$
+			$ERROR PDQ.TEXT_LINE[pdqid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "maxdpri", PDQ.MAXDPRI[pdqid], pdqid, "CRE_PDQ")$$END$
+		$END$
+
+$		// pdqmbªNULLÅÈ¢êiE_NOSPTj
+		$IF !EQ(PDQ.PDQMB[pdqid], "NULL")$
+			$ERROR PDQ.TEXT_LINE[pdqid]$E_NOSPT: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "pdqmb", PDQ.PDQMB[pdqid], pdqid, "CRE_PDQ")$$END$
+		$END$
+
+$		// Dæxf[^L
+[ÇÌæ
+		$IF PDQ.PDQCNT[pdqid]$
+			static PDQMB _kernel_pdqmb_$pdqid$[$PDQ.PDQCNT[pdqid]$];$NL$
+		$END$
+	$END$
+
+$	// Dæxf[^L
+[ú»ubNÌ¶¬
+	const PDQINIB _kernel_pdqinib_table[TNUM_PDQID] = {$NL$
+	$JOINEACH pdqid PDQ.ID_LIST ",\n"$
+		$TAB${ ($PDQ.PDQATR[pdqid]$), ($PDQ.PDQCNT[pdqid]$), ($PDQ.MAXDPRI[pdqid]$), $IF PDQ.PDQCNT[pdqid]$(_kernel_pdqmb_$pdqid$)$ELSE$NULL$END$ }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// Dæxf[^L
+[ÇubN
+	PDQCB _kernel_pdqcb_table[TNUM_PDQID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const PDQINIB, _kernel_pdqinib_table);$NL$
+	TOPPERS_EMPTY_LABEL(PDQCB, _kernel_pdqcb_table);$NL$
+$END$$NL$
+
+$ 
+$  [{bNX
+$ 
+/*$NL$
+$SPC$*  Mailbox Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ [{bNXIDÔÌÅål
+const ID _kernel_tmax_mbxid = (TMIN_MBXID + TNUM_MBXID - 1);$NL$
+$NL$
+
+$ [{bNXú»ubNÌ¶¬
+$IF LENGTH(MBX.ID_LIST)$
+	const MBXINIB _kernel_mbxinib_table[TNUM_MBXID] = {$NL$
+	$JOINEACH mbxid MBX.ID_LIST ",\n"$
+$		// mbxatrªimTA_TPRInbmTA_MPRInjÅÈ¢êiE_RSATRj
+		$IF (MBX.MBXATR[mbxid] & ~(TA_TPRI|TA_MPRI)) != 0$
+			$ERROR MBX.TEXT_LINE[mbxid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "mbxatr", MBX.MBXATR[mbxid], mbxid, "CRE_MBX")$$END$
+		$END$
+
+$		// (TMIN_MPRI <= maxmpri && maxmpri <= TMAX_MPRI)ÅÈ¢êiE_PARj
+		$IF !(TMIN_MPRI <= MBX.MAXMPRI[mbxid] && MBX.MAXMPRI[mbxid] <= TMAX_MPRI)$
+			$ERROR MBX.TEXT_LINE[mbxid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "maxmpri", MBX.MAXMPRI[mbxid], mbxid, "CRE_MBX")$$END$
+		$END$
+
+$		// mprihdªNULLÅÈ¢êiE_NOSPTj
+		$IF !EQ(MBX.MPRIHD[mbxid], "NULL")$
+			$ERROR MBX.TEXT_LINE[mbxid]$E_NOSPT: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "mprihd", MBX.MPRIHD[mbxid], mbxid, "CRE_MBX")$$END$
+		$END$
+
+$		// [{bNXú»ubN
+		$TAB${ ($MBX.MBXATR[mbxid]$), ($MBX.MAXMPRI[mbxid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// [{bNXÇubN
+	MBXCB _kernel_mbxcb_table[TNUM_MBXID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const MBXINIB, _kernel_mbxinib_table);$NL$
+	TOPPERS_EMPTY_LABEL(MBXCB, _kernel_mbxcb_table);$NL$
+$END$$NL$
+
+$ 
+$  ~
+[ebNX
+$ 
+/*$NL$
+$SPC$*  Mutex Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ~
+[ebNXIDÔÌÅål
+const ID _kernel_tmax_mtxid = (TMIN_MTXID + TNUM_MTXID - 1);$NL$
+$NL$
+
+$ ~
+[ebNXú»ubNÌ¶¬
+$IF LENGTH(MTX.ID_LIST)$
+	const MTXINIB _kernel_mtxinib_table[TNUM_MTXID] = {$NL$
+	$JOINEACH mtxid MTX.ID_LIST ",\n"$
+$		// mtxatrªimTA_TPRIbTA_CEILINGnjÅÈ¢êiE_RSATRj
+		$IF !(MTX.MTXATR[mtxid] == 0 || MTX.MTXATR[mtxid] == TA_TPRI || MTX.MTXATR[mtxid] == TA_CEILING)$
+			$ERROR MTX.TEXT_LINE[mtxid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "mtxatr", MTX.MTXATR[mtxid], mtxid, "CRE_MTX")$$END$
+		$END$
+
+$		// ceilpriª¢wèÌêÍ0Æ©È·
+		$IF !LENGTH(MTX.CEILPRI[mtxid])$
+			$MTX.CEILPRI[mtxid] = 0$
+		$END$
+$		// (TMIN_TPRI <= ceilpri && ceilpri <= TMAX_TPRI)ÅÈ¢êiE_PARj
+		$IF MTX.MTXATR[mtxid] == TA_CEILING && (MTX.CEILPRI[mtxid] < TMIN_TPRI || TMAX_TPRI < MTX.CEILPRI[mtxid])$
+			$ERROR MTX.TEXT_LINE[mtxid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "ceilpri", MTX.CEILPRI[mtxid], mtxid, "CRE_MTX")$$END$
+		$END$
+
+$		// ~
+[ebNXú»ubN
+		$TAB${ ($MTX.MTXATR[mtxid]$), INT_PRIORITY($MTX.CEILPRI[mtxid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// ~
+[ebNXÇubN
+	MTXCB _kernel_mtxcb_table[TNUM_MTXID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const MTXINIB, _kernel_mtxinib_table);$NL$
+	TOPPERS_EMPTY_LABEL(MTXCB, _kernel_mtxcb_table);$NL$
+$END$$NL$
+
+$ 
+$  Åè·v[
+$ 
+/*$NL$
+$SPC$*  Fixed-sized Memorypool Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ Åè·v[IDÔÌÅål
+const ID _kernel_tmax_mpfid = (TMIN_MPFID + TNUM_MPFID - 1);$NL$
+$NL$
+
+$IF LENGTH(MPF.ID_LIST)$
+	$FOREACH mpfid MPF.ID_LIST$
+$		// mpfatrªimTA_TPRInjÅÈ¢êiE_RSATRj
+		$IF (MPF.MPFATR[mpfid] & ~TA_TPRI) != 0$
+			$ERROR MPF.TEXT_LINE[mpfid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "mpfatr", MPF.MPFATR[mpfid], mpfid, "CRE_MPF")$$END$
+		$END$
+
+$		// blkcntª0ÌêiE_PARj
+		$IF MPF.BLKCNT[mpfid] == 0$
+			$ERROR MPF.TEXT_LINE[mpfid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "blkcnt", MPF.BLKCNT[mpfid], mpfid, "CRE_MPF")$$END$
+		$END$
+
+$		// blkszª0ÌêiE_PARj
+		$IF MPF.BLKSZ[mpfid] == 0$
+			$ERROR MPF.TEXT_LINE[mpfid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "blksz", MPF.BLKSZ[mpfid], mpfid, "CRE_MPF")$$END$
+		$END$
+
+$		// Åè·v[Ìæ
+		$IF EQ(MPF.MPF[mpfid], "NULL")$
+			static MPF_T _kernel_mpf_$mpfid$[($MPF.BLKCNT[mpfid]$) * COUNT_MPF_T($MPF.BLKSZ[mpfid]$)];$NL$
+		$END$
+
+$		// mpfmbªNULLÅÈ¢êiE_NOSPTj
+		$IF !EQ(MPF.MPFMB[mpfid], "NULL")$
+			$ERROR MPF.TEXT_LINE[mpfid]$E_NOSPT: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "mpfmb", MPF.MPFMB[mpfid], mpfid, "CRE_MPF")$$END$
+		$END$
+
+$		// Åè·v[ÇÌæ
+		static MPFMB _kernel_mpfmb_$mpfid$[$MPF.BLKCNT[mpfid]$];$NL$
+	$END$
+
+$	// Åè·v[ú»ubNÌ¶¬
+	const MPFINIB _kernel_mpfinib_table[TNUM_MPFID] = {$NL$
+	$JOINEACH mpfid MPF.ID_LIST ",\n"$
+		$TAB${ ($MPF.MPFATR[mpfid]$), ($MPF.BLKCNT[mpfid]$), ROUND_MPF_T($MPF.BLKSZ[mpfid]$), $IF EQ(MPF.MPF[mpfid],"NULL")$(_kernel_mpf_$mpfid$)$ELSE$($MPF.MPF[mpfid]$)$END$, (_kernel_mpfmb_$mpfid$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// Åè·v[ÇubN
+	MPFCB _kernel_mpfcb_table[TNUM_MPFID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const MPFINIB, _kernel_mpfinib_table);$NL$
+	TOPPERS_EMPTY_LABEL(MPFCB, _kernel_mpfcb_table);$NL$
+$END$$NL$
+
+$ 
+$  üúnh
+$ 
+/*$NL$
+$SPC$*  Cyclic Handler Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ üúnhIDÔÌÅål
+const ID _kernel_tmax_cycid = (TMIN_CYCID + TNUM_CYCID - 1);$NL$
+$NL$
+
+$ üúnhú»e[uÌ¶¬
+$IF LENGTH(CYC.ID_LIST)$
+	const CYCINIB _kernel_cycinib_table[TNUM_CYCID] = {$NL$
+	$JOINEACH cycid CYC.ID_LIST ",\n"$
+$		// cycatrªimTA_STAnjÅÈ¢êiE_RSATRj
+		$IF (CYC.CYCATR[cycid] & ~TA_STA) != 0$
+			$ERROR CYC.TEXT_LINE[cycid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "cycatr", CYC.CYCATR[cycid], cycid, "CRE_CYC")$$END$
+		$END$
+
+$		// (0 < cyctim && cyctim <= TMAX_RELTIM)ÅÈ¢êiE_PARj
+		$IF !(0 < CYC.CYCTIM[cycid] && CYC.CYCTIM[cycid] <= TMAX_RELTIM)$
+			$ERROR CYC.TEXT_LINE[cycid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "cyctim", CYC.CYCTIM[cycid], cycid, "CRE_CYC")$$END$
+		$END$
+
+$		// (0 <= cycphs && cycphs <= TMAX_RELTIM)ÅÈ¢êiE_PARj
+		$IF !(0 <= CYC.CYCPHS[cycid] && CYC.CYCPHS[cycid] <= TMAX_RELTIM)$
+			$ERROR CYC.TEXT_LINE[cycid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "cycphs", CYC.CYCPHS[cycid], cycid, "CRE_CYC")$$END$
+		$END$
+
+$		// xFcycatrÉTA_STAªÝè³êÄ¢ÄC(cycphs == 0)Ìê
+		$IF (CYC.CYCATR[cycid] & TA_STA) != 0 && CYC.CYCPHS[cycid] == 0$
+			$WARNING CYC.TEXT_LINE[cycid]$$FORMAT(_("%1% is not recommended when %2% is set to %3% in %4%"), "cycphs==0", "TA_STA", "cycatr", "CRE_CYC")$$END$
+		$END$
+
+$		// üúnhú»ubN
+		$TAB${ ($CYC.CYCATR[cycid]$), (intptr_t)($CYC.EXINF[cycid]$), ($CYC.CYCHDR[cycid]$), ($CYC.CYCTIM[cycid]$), ($CYC.CYCPHS[cycid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// üúnhÇubN
+	CYCCB _kernel_cyccb_table[TNUM_CYCID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const CYCINIB, _kernel_cycinib_table);$NL$
+	TOPPERS_EMPTY_LABEL(CYCCB, _kernel_cyccb_table);$NL$
+$END$$NL$
+
+$ 
+$  A[nh
+$ 
+/*$NL$
+$SPC$*  Alarm Handler Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ A[nhIDÔÌÅål
+const ID _kernel_tmax_almid = (TMIN_ALMID + TNUM_ALMID - 1);$NL$
+$NL$
+
+$ A[nhú»ubNÌ¶¬
+$IF LENGTH(ALM.ID_LIST)$
+	const ALMINIB _kernel_alminib_table[TNUM_ALMID] = {$NL$
+	$JOINEACH almid ALM.ID_LIST ",\n"$
+$		// almatrªiTA_NULLjÅÈ¢êiE_RSATRj
+		$IF ALM.ALMATR[almid] != 0$
+			$ERROR ALM.TEXT_LINE[almid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "almatr", ALM.ALMATR[almid], almid, "CRE_ALM")$$END$
+		$END$
+
+$		// A[nhú»ubN
+		$TAB${ ($ALM.ALMATR[almid]$), (intptr_t)($ALM.EXINF[almid]$), ($ALM.ALMHDR[almid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// A[nhÇubN
+	ALMCB _kernel_almcb_table[TNUM_ALMID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const ALMINIB, _kernel_alminib_table);$NL$
+	TOPPERS_EMPTY_LABEL(ALMCB, _kernel_almcb_table);$NL$
+$END$$NL$
+
+$ 
+$  ÝÇ@\
+$ 
+/*$NL$
+$SPC$*  Interrupt Management Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ÝÔÆÝnhÔÌÏ·e[uÌì¬
+$IF LENGTH(INTNO_ATTISR_VALID) != LENGTH(INHNO_ATTISR_VALID)$
+	$ERROR$length of `INTNO_ATTISR_VALID' is different from length of `INHNO_ATTISR_VALID'$END$
+$END$
+$i = 0$
+$FOREACH intno INTNO_ATTISR_VALID$
+	$inhno = AT(INHNO_ATTISR_VALID, i)$
+	$INHNO[intno] = inhno$
+	$INTNO[inhno] = intno$
+	$i = i + 1$
+$END$
+
+$ ÝvCÉÖ·éG[`FbN
+$i = 0$
+$FOREACH intno INT.ORDER_LIST$
+$	// intnoªCFG_INTÉÎ·éÝÔÆµÄ³µ­È¢êiE_PARj
+	$IF !LENGTH(FIND(INTNO_CFGINT_VALID, INT.INTNO[intno]))$
+		$ERROR INT.TEXT_LINE[intno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "intno", INT.INTNO[intno], "CFG_INT")$$END$
+	$END$
+
+$	// intnoªCFG_INTÉæÁÄÝèÏÝÌêiE_OBJj
+	$j = 0$
+	$FOREACH intno2 INT.ORDER_LIST$
+		$IF INT.INTNO[intno] == INT.INTNO[intno2] && j < i$
+			$ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' in %3% is duplicated"), "intno", INT.INTNO[intno], "CFG_INT")$$END$
+		$END$
+		$j = j + 1$
+	$END$
+
+$	// intatrªimTA_ENAINTnbmTA_EDGEnjÅÈ¢êiE_RSATRj
+	$IF (INT.INTATR[intno] & ~(TA_ENAINT|TA_EDGE|TARGET_INTATR)) != 0$
+		$ERROR INT.TEXT_LINE[intno]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "intatr", INT.INTATR[intno], "intno", INT.INTNO[intno], "CFG_INT")$$END$
+	$END$
+
+$	// intpriªCFG_INTÉÎ·éÝDæxÆµÄ³µ­È¢êiE_PARj
+	$IF !LENGTH(FIND(INTPRI_CFGINT_VALID, INT.INTPRI[intno]))$
+		$ERROR INT.TEXT_LINE[intno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "intpri", INT.INTPRI[intno], "CFG_INT")$$END$
+	$END$
+
+$	// J[lÇÉÅè³êÄ¢éintnoÉÎµÄCintpriÉTMIN_INTPRI
+$	// æèà¬³¢lªwè³ê½êiE_OBJj
+	$IF LENGTH(FIND(INTNO_FIX_KERNEL, intno))$
+		$IF INT.INTPRI[intno] < TMIN_INTPRI$
+			$ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' must not have higher priority than %3%"), "intno", INT.INTNO[intno], "TMIN_INTPRI")$$END$
+		$END$
+	$END$
+
+$	// J[lÇOÉÅè³êÄ¢éintnoÉÎµÄCintpriÉTMIN_INTPRI
+$	// æèà¬³¢lªwè³êÈ©Á½êiE_OBJj
+	$IF LENGTH(FIND(INTNO_FIX_NONKERNEL, intno))$
+		$IF INT.INTPRI[intno] >= TMIN_INTPRI$
+			$ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' must have higher priority than %3%"), "intno", INT.INTNO[intno], "TMIN_INTPRI")$$END$
+		$END$
+	$END$
+	$i = i + 1$
+$END$
+
+$ ÝnhÉÖ·éG[`FbN
+$i = 0$
+$FOREACH inhno INH.ORDER_LIST$
+$	// inhnoªDEF_INHÉÎ·éÝnhÔÆµÄ³µ­È¢êiE_PARj
+	$IF !LENGTH(FIND(INHNO_DEFINH_VALID, INH.INHNO[inhno]))$
+		$ERROR INH.TEXT_LINE[inhno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "inhno", INH.INHNO[inhno], "DEF_INH")$$END$
+	$END$
+
+$	// inhnoªDEF_INHÉæÁÄÝèÏÝÌêiE_OBJj
+	$j = 0$
+	$FOREACH inhno2 INH.ORDER_LIST$
+		$IF INH.INHNO[inhno] == INH.INHNO[inhno2] && j < i$
+			$ERROR INH.TEXT_LINE[inhno]$E_OBJ: $FORMAT(_("%1% `%2%\' in %3% is duplicated"), "inhno", INH.INHNO[inhno], "DEF_INH")$$END$
+		$END$
+		$j = j + 1$
+	$END$
+
+$	// inhatrªiTA_NULLjÅÈ¢êiE_RSATRj
+	$IF (INH.INHATR[inhno] & ~TARGET_INHATR) != 0$
+		$ERROR INH.TEXT_LINE[inhno]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "inhatr", INH.INHATR[inhno], "inhno", INH.INHNO[inhno], "DEF_INH")$$END$
+	$END$
+
+$	// J[lÇÉÅè³êÄ¢éinhnoÉÎµÄCinhatrÉTA_NONKERNEL
+$	//@ªwè³êÄ¢éêiE_RSATRj
+	$IF LENGTH(FIND(INHNO_FIX_KERNEL, inhno))$
+		$IF (INH.INHATR[inhno] & TA_NONKERNEL) != 0$
+			$ERROR INH.TEXT_LINE[inhno]$E_RSATR: $FORMAT(_("%1% `%2%\' must not be non-kernel interrupt"), "inhno", INH.INHNO[inhno])$$END$
+		$END$
+	$END$
+
+$	// J[lÇOÉÅè³êÄ¢éinhnoÉÎµÄCinhatrÉTA_NONKERNEL
+$	// ªwè³êÄ¢È¢êiE_RSATRj
+	$IF LENGTH(FIND(INHNO_FIX_NONKERNEL, inhno))$
+		$IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$
+			$ERROR INH.TEXT_LINE[inhno]$E_RSATR: $FORMAT(_("%1% `%2%\' must be non-kernel interrupt"), "inhno", INH.INHNO[inhno])$$END$
+		$END$
+	$END$
+
+	$IF LENGTH(INTNO[INH.INHNO[inhno]])$
+		$intno = INTNO[INH.INHNO[inhno]]$
+$		// inhnoÉÎ·éintnoÉÎ·éCFG_INTªÈ¢êiE_OBJj
+		$IF !LENGTH(INT.INTNO[intno])$
+			$ERROR INH.TEXT_LINE[inhno]$E_OBJ: $FORMAT(_("%1% `%2%\' corresponding to %3% `%4%\' is not configured with %5%"), "intno", INT.INTNO[intno], "inhno", INH.INHNO[inhno], "CFG_INT")$$END$
+		$ELSE$
+			$IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$
+$				// inhatrÉTA_NONKERNELªwè³êÄ¨ç¸CinhnoÉÎ
+$				// ·éintnoÉÎµÄCFG_INTÅÝè³ê½ÝDæxª
+$				// TMIN_INTPRIæèà¬³¢êiE_OBJj
+				$IF INT.INTPRI[intno] < TMIN_INTPRI$
+					$ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' configured for %3% `%4%\' is higher than %5%"), "intpri", INT.INTPRI[intno], "inhno", INH.INHNO[inhno], "TMIN_INTPRI")$$END$
+				$END$
+			$ELSE$
+$				// inhatrÉTA_NONKERNELªwè³êÄ¨èCinhnoÉÎ
+$				// ·éintnoÉÎµÄCFG_INTÅÝè³ê½ÝDæxª
+$				// TMIN_INTPRIÈãÅ éêiE_OBJj
+				$IF INT.INTPRI[intno] >= TMIN_INTPRI$
+					$ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' configured for %3% `%4%\' is lower than or equal to %5%"), "intpri", INT.INTPRI[intno], "inhno", INH.INHNO[inhno], "TMIN_INTPRI")$$END$
+				$END$
+			$END$
+		$END$
+	$END$
+	$i = i + 1$
+$END$
+
+$ ÝT[rX[`iISRjÉÖ·éG[`FbNÆÝnhÌ¶¬
+$FOREACH order ISR.ORDER_LIST$
+$	// isratrªiTA_NULLjÅÈ¢êiE_RSATRj
+	$IF (ISR.ISRATR[order] & ~TARGET_ISRATR) != 0$
+		$ERROR ISR.TEXT_LINE[order]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "isratr", ISR.ISRATR[order], "ATT_ISR")$$END$
+	$END$
+
+$	// intnoªATT_ISRÉÎ·éÝÔÆµÄ³µ­È¢êiE_PARj
+	$IF !LENGTH(FIND(INTNO_ATTISR_VALID, ISR.INTNO[order]))$
+		$ERROR ISR.TEXT_LINE[order]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "intno", ISR.INTNO[order], "ATT_ISR")$$END$
+	$END$
+
+$	// (TMIN_ISRPRI <= isrpri && isrpri <= TMAX_ISRPRI)ÅÈ¢êiE_PARj
+	$IF !(TMIN_ISRPRI <= ISR.ISRPRI[order] && ISR.ISRPRI[order] <= TMAX_ISRPRI)$
+		$ERROR ISR.TEXT_LINE[order]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "isrpri", ISR.ISRPRI[order], "ATT_ISR")$$END$
+	$END$
+$END$
+
+$FOREACH intno INTNO_ATTISR_VALID$
+	$inhno = INHNO[intno]$
+
+$	// ÝÔintnoÉÎµÄo^³ê½ISRÌXgÌì¬
+	$isr_order_list = {}$
+	$FOREACH order ISR.ORDER_LIST$
+		$IF ISR.INTNO[order] == intno$
+			$isr_order_list = APPEND(isr_order_list, order)$
+			$order_for_error = order$
+		$END$
+	$END$
+
+$	// ÝÔintnoÉÎµÄo^³ê½ISRª¶Ý·éê
+	$IF LENGTH(isr_order_list) > 0$
+$		// intnoÉÎ·éinhnoÉÎµÄDEF_INHª éêiE_OBJj
+		$IF LENGTH(INH.INHNO[inhno])$
+			$ERROR ISR.TEXT_LINE[order_for_error]$E_OBJ: $FORMAT(_("%1% `%2%\' in %3% is duplicated with %4% `%5%\'"), "intno", ISR.INTNO[order_for_error], "ATT_ISR", "inhno", INH.INHNO[inhno])$$END$
+		$END$
+
+$		// intnoÉÎ·éCFG_INTªÈ¢êiE_OBJj
+		$IF !LENGTH(INT.INTNO[intno])$
+			$ERROR ISR.TEXT_LINE[order_for_error]$E_OBJ: $FORMAT(_("%1% `%2%\' is not configured with %3%"), "intno", ISR.INTNO[order_for_error], "CFG_INT")$$END$
+		$ELSE$
+$			// intnoÉÎµÄCFG_INTÅÝè³ê½ÝDæxªTMIN_INTPRI
+$			// æèà¬³¢êiE_OBJj
+			$IF INT.INTPRI[intno] < TMIN_INTPRI$
+				$ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' configured for %3% `%4%\' is higher than %5%"), "intpri", INT.INTPRI[intno], "intno", ISR.INTNO[order_for_error], "TMIN_INTPRI")$$END$
+			$END$
+		$END$
+
+$		// DEF_INH(inhno, { TA_NULL, _kernel_inthdr_<intno> } );
+		$INH.INHNO[inhno] = inhno$
+		$INH.INHATR[inhno] = VALUE("TA_NULL", 0)$
+		$INH.INTHDR[inhno] = CONCAT("_kernel_inthdr_", intno)$
+		$INH.ORDER_LIST = APPEND(INH.ORDER_LIST, inhno)$
+
+$		// ISRpÌÝnh
+		void$NL$
+		_kernel_inthdr_$intno$(void)$NL$
+		{$NL$
+		$IF LENGTH(isr_order_list) > 1$
+			$TAB$PRI	saved_ipm;$NL$
+			$NL$
+			$TAB$i_begin_int($intno$);$NL$
+			$TAB$saved_ipm = i_get_ipm();$NL$
+		$ELSE$
+			$TAB$i_begin_int($intno$);$NL$
+		$END$
+$		// ISRðDæxÉÄÑo·
+		$JOINEACH order SORT(isr_order_list, "ISR.ISRPRI") "\tif (i_sense_lock()) {\n\t\ti_unlock_cpu();\n\t}\n\ti_set_ipm(saved_ipm);\n"$
+			$TAB$LOG_ISR_ENTER($intno$);$NL$
+			$TAB$((ISR)($ISR.ISR[order]$))((intptr_t)($ISR.EXINF[order]$));$NL$
+			$TAB$LOG_ISR_LEAVE($intno$);$NL$
+		$END$
+		$TAB$i_end_int($intno$);$NL$
+		}$NL$
+	$END$
+$END$
+$NL$
+
+$ 
+$  ÝÇ@\Ì½ßÌWIÈú»îñÌ¶¬
+$ 
+$ ÝnhÌú»ÉKvÈîñ
+$IF !OMIT_INITIALIZE_INTERRUPT || ALT(USE_INHINIB_TABLE,0)$
+
+$ Ýnh
+#define TNUM_INHNO	$LENGTH(INH.ORDER_LIST)$$NL$
+const uint_t _kernel_tnum_inhno = TNUM_INHNO;$NL$
+$NL$
+$FOREACH inhno INH.ORDER_LIST$
+	$IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$
+		INTHDR_ENTRY($INH.INHNO[inhno]$, $+INH.INHNO[inhno]$, $INH.INTHDR[inhno]$)$NL$
+	$END$
+$END$
+$NL$
+
+$ Ýnhú»e[u
+$IF LENGTH(INH.ORDER_LIST)$
+	const INHINIB _kernel_inhinib_table[TNUM_INHNO] = {$NL$
+	$JOINEACH inhno INH.ORDER_LIST ",\n"$
+		$IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$
+			$TAB${ ($INH.INHNO[inhno]$), ($INH.INHATR[inhno]$), (FP)(INT_ENTRY($INH.INHNO[inhno]$, $INH.INTHDR[inhno]$)) }
+		$ELSE$
+			$TAB${ ($INH.INHNO[inhno]$), ($INH.INHATR[inhno]$), (FP)($INH.INTHDR[inhno]$) }
+		$END$
+	$END$$NL$
+	};$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const INHINIB, _kernel_inhinib_table);$NL$
+$END$$NL$
+$END$
+
+$ ÝvCÌú»ÉKvÈîñ
+$IF !OMIT_INITIALIZE_INTERRUPT || ALT(USE_INHINTB_TABLE,0)$
+
+$ ÝvC
+#define TNUM_INTNO	$LENGTH(INT.ORDER_LIST)$$NL$
+const uint_t _kernel_tnum_intno = TNUM_INTNO;$NL$
+$NL$
+
+$ ÝvCú»e[u
+$IF LENGTH(INT.ORDER_LIST)$
+	const INTINIB _kernel_intinib_table[TNUM_INTNO] = {$NL$
+	$JOINEACH intno INT.ORDER_LIST ",\n"$
+		$TAB${ ($INT.INTNO[intno]$), ($INT.INTATR[intno]$), ($INT.INTPRI[intno]$) }
+	$END$$NL$
+	};$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const INTINIB, _kernel_intinib_table);$NL$
+$END$$NL$
+$END$
+
+$ 
+$  CPUáOÇ@\
+$ 
+/*$NL$
+$SPC$*  CPU Exception Management Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ CPUáOnhÉÖ·éG[`FbN
+$i = 0$
+$FOREACH excno EXC.ORDER_LIST$
+$	// excnoªDEF_EXCÉÎ·éCPUáOnhÔÆµÄ³µ­È¢êiE_PARj
+	$IF !LENGTH(FIND(EXCNO_DEFEXC_VALID, EXC.EXCNO[excno]))$
+		$ERROR EXC.TEXT_LINE[excno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "excno", EXC.EXCNO[excno], "DEF_EXC")$$END$
+	$END$
+
+$	// excnoªDEF_EXCÉæÁÄÝèÏÝÌêiE_OBJj
+	$j = 0$
+	$FOREACH excno2 EXC.ORDER_LIST$
+		$IF EXC.EXCNO[excno] == EXC.EXCNO[excno2] && j < i$
+			$ERROR EXC.TEXT_LINE[excno]$E_OBJ: $FORMAT(_("%1% `%2%\' in %3% is duplicated"), "excno", EXC.EXCNO[excno], "DEF_EXC")$$END$
+		$END$
+		$j = j + 1$
+	$END$
+
+$	// excatrªiTA_NULLjÅÈ¢êiE_RSATRj
+	$IF (EXC.EXCATR[excno] & ~TARGET_EXCATR) != 0$
+		$ERROR EXC.TEXT_LINE[excno]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "excatr", EXC.EXCATR[excno], "excno", EXC.EXCNO[excno], "DEF_EXC")$$END$
+	$END$
+	$i = i + 1$
+$END$
+
+$ CPUáOnhÌ½ßÌWIÈú»îñÌ¶¬
+$IF !OMIT_INITIALIZE_EXCEPTION$
+
+$ CPUáOnh
+#define TNUM_EXCNO	$LENGTH(EXC.ORDER_LIST)$$NL$
+const uint_t _kernel_tnum_excno = TNUM_EXCNO;$NL$
+$NL$
+$FOREACH excno EXC.ORDER_LIST$
+	EXCHDR_ENTRY($EXC.EXCNO[excno]$, $+EXC.EXCNO[excno]$, $EXC.EXCHDR[excno]$)$NL$
+$END$
+$NL$
+
+$ CPUáOnhú»e[u
+$IF LENGTH(EXC.ORDER_LIST)$
+	const EXCINIB _kernel_excinib_table[TNUM_EXCNO] = {$NL$
+	$JOINEACH excno EXC.ORDER_LIST ",\n"$
+		$TAB${ ($EXC.EXCNO[excno]$), ($EXC.EXCATR[excno]$), (FP)(EXC_ENTRY($EXC.EXCNO[excno]$, $EXC.EXCHDR[excno]$)) }
+	$END$$NL$
+	};$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const EXCINIB, _kernel_excinib_table);$NL$
+$END$$NL$
+$END$
+
+$ 
+$  ñ^XNReLXgpÌX^bNÌæ
+$ 
+/*$NL$
+$SPC$*  Stack Area for Non-task Context$NL$
+$SPC$*/$NL$
+$NL$
+
+$IF !LENGTH(ICS.ORDER_LIST)$
+$	// DEF_ICSªÈ¢êÌftHglÌÝè
+	#ifdef DEFAULT_ISTK$NL$
+	$NL$
+	#define TOPPERS_ISTKSZ		DEFAULT_ISTKSZ$NL$
+	#define TOPPERS_ISTK		DEFAULT_ISTK$NL$
+	$NL$
+	#else /* DEAULT_ISTK */$NL$
+	$NL$
+	static STK_T				_kernel_istack[COUNT_STK_T(DEFAULT_ISTKSZ)];$NL$
+	#define TOPPERS_ISTKSZ		ROUND_STK_T(DEFAULT_ISTKSZ)$NL$
+	#define TOPPERS_ISTK		_kernel_istack$NL$
+	$NL$
+	#endif /* DEAULT_ISTK */$NL$
+$ELSE$
+
+$	// ÃIAPIuDEF_ICSvª¡ éiE_OBJj
+	$IF LENGTH(ICS.ORDER_LIST) > 1$
+		$ERROR$E_OBJ: $FORMAT(_("too many %1%"), "DEF_ICS")$$END$
+	$END$
+
+$ 	// istkszªX^bNÌæÌTCYÆµÄ³µ­È¢êiE_PARj
+	$IF !EQ(ICS.ISTK[1], "NULL") && CHECK_STKSZ_ALIGN
+							&& (ICS.ISTKSZ[1] & (CHECK_STKSZ_ALIGN - 1))$
+		$ERROR ICS.TEXT_LINE[1]$E_PAR: $FORMAT(_("%1% `%2%\' in %3% is not aligned"), "istksz", ICS.ISTKSZ[1], "DEF_ICS")$$END$
+	$END$
+
+	$IF EQ(ICS.ISTK[1], "NULL")$
+$		// X^bNÌæÌ©®t¯
+		static STK_T				_kernel_istack[COUNT_STK_T($ICS.ISTKSZ[1]$)];$NL$
+		#define TOPPERS_ISTKSZ		ROUND_STK_T($ICS.ISTKSZ[1]$)$NL$
+		#define TOPPERS_ISTK		_kernel_istack$NL$
+	$ELSE$
+		#define TOPPERS_ISTKSZ		($ICS.ISTKSZ[1]$)$NL$
+		#define TOPPERS_ISTK		($ICS.ISTK[1]$)$NL$
+	$END$
+$END$
+$NL$
+
+$ ñ^XNReLXgpÌX^bNÌæ
+const SIZE		_kernel_istksz = TOPPERS_ISTKSZ;$NL$
+STK_T *const	_kernel_istk = TOPPERS_ISTK;$NL$
+$NL$
+#ifdef TOPPERS_ISTKPT$NL$
+STK_T *const	_kernel_istkpt = TOPPERS_ISTKPT(TOPPERS_ISTK, TOPPERS_ISTKSZ);$NL$
+#endif /* TOPPERS_ISTKPT */$NL$
+$NL$
+
+$ 
+$  ^CCxgÇ
+$ 
+/*$NL$
+$SPC$*  Time Event Management$NL$
+$SPC$*/$NL$
+$NL$
+TMEVTN   _kernel_tmevt_heap[TNUM_TSKID + TNUM_CYCID + TNUM_ALMID];$NL$
+$NL$
+
+$ 
+$  eW
+[Ìú»Ö
+$ 
+/*$NL$
+$SPC$*  Module Initialization Function$NL$
+$SPC$*/$NL$
+$NL$
+void$NL$
+_kernel_initialize_object(void)$NL$
+{$NL$
+$TAB$_kernel_initialize_task();$NL$
+$IF LENGTH(SEM.ID_LIST)$	_kernel_initialize_semaphore();$NL$$END$
+$IF LENGTH(FLG.ID_LIST)$	_kernel_initialize_eventflag();$NL$$END$
+$IF LENGTH(DTQ.ID_LIST)$	_kernel_initialize_dataqueue();$NL$$END$
+$IF LENGTH(PDQ.ID_LIST)$	_kernel_initialize_pridataq();$NL$$END$
+$IF LENGTH(MBX.ID_LIST)$	_kernel_initialize_mailbox();$NL$$END$
+$IF LENGTH(MTX.ID_LIST)$	_kernel_initialize_mutex();$NL$$END$
+$IF LENGTH(MPF.ID_LIST)$	_kernel_initialize_mempfix();$NL$$END$
+$IF LENGTH(CYC.ID_LIST)$	_kernel_initialize_cyclic();$NL$$END$
+$IF LENGTH(ALM.ID_LIST)$	_kernel_initialize_alarm();$NL$$END$
+$TAB$_kernel_initialize_interrupt();$NL$
+$TAB$_kernel_initialize_exception();$NL$
+}$NL$
+$NL$
+
+$ 
+$  ú»[`ÌÀsÖ
+$ 
+/*$NL$
+$SPC$*  Initialization Routine$NL$
+$SPC$*/$NL$
+$NL$
+void$NL$
+_kernel_call_inirtn(void)$NL$
+{$NL$
+$FOREACH order INI.ORDER_LIST$
+$ 	// iniatrªiTA_NULLjÅÈ¢êiE_RSATRj
+	$IF INI.INIATR[order] != 0$
+		$ERROR INI.TEXT_LINE[order]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "iniatr", INI.INIATR[order], "inirtn", INI.INIRTN[order], "ATT_INI")$$END$
+	$END$
+	$TAB$((INIRTN)($INI.INIRTN[order]$))((intptr_t)($INI.EXINF[order]$));$NL$
+$END$
+}$NL$
+$NL$
+
+$ 
+$  I¹[`ÌÀsÖ
+$ 
+/*$NL$
+$SPC$*  Termination Routine$NL$
+$SPC$*/$NL$
+$NL$
+void$NL$
+_kernel_call_terrtn(void)$NL$
+{$NL$
+$FOREACH rorder TER.RORDER_LIST$
+$ 	// teratrªiTA_NULLjÅÈ¢êiE_RSATRj
+	$IF TER.TERATR[rorder] != 0$
+		$ERROR TER.TEXT_LINE[rorder]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "teratr", TER.TERATR[rorder], "terrtn", TER.TERRTN[rorder], "ATT_TER")$$END$
+	$END$
+	$TAB$((TERRTN)($TER.TERRTN[rorder]$))((intptr_t)($TER.EXINF[rorder]$));$NL$
+$END$
+}$NL$
+$NL$
Index: /asp_ewarm/asp-1.7.0/extension/mutex/kernel/kernel_api.csv
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/kernel/kernel_api.csv	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/kernel/kernel_api.csv	(revision 61)
@@ -0,0 +1,18 @@
+tsk,CRE_TSK,#tskid { .tskatr &exinf &task +itskpri .stksz &stk },,
+tsk,DEF_TEX,%tskid { .texatr &texrtn },0,1,
+sem,CRE_SEM,#semid { .sematr .isemcnt .maxsem },,
+flg,CRE_FLG,#flgid { .flgatr .iflgptn },,
+dtq,CRE_DTQ,#dtqid { .dtqatr .dtqcnt &dtqmb },,
+pdq,CRE_PDQ,#pdqid { .pdqatr .pdqcnt +maxdpri &pdqmb },,
+mbx,CRE_MBX,#mbxid { .mbxatr +maxmpri &mprihd },,
+mtx,CRE_MTX,#mtxid { .mtxatr +ceilpri? },,
+mpf,CRE_MPF,#mpfid { .mpfatr .blkcnt .blksz &mpf &mpfmb },,
+cyc,CRE_CYC,#cycid { .cycatr &exinf &cychdr .cyctim .cycphs },,
+alm,CRE_ALM,#almid { .almatr &exinf &almhdr },,
+int,CFG_INT,.intno { .intatr +intpri },,
+isr,ATT_ISR,{ .isratr &exinf .intno &isr +isrpri },-1,
+inh,DEF_INH,.inhno { .inhatr &inthdr },,
+ics,DEF_ICS,{ .istksz &istk },-1,
+exc,DEF_EXC,.excno { .excatr &exchdr },,
+ini,ATT_INI,{ .iniatr &exinf &inirtn },-1,
+ter,ATT_TER,{ .teratr &exinf &terrtn },-1,
Index: /asp_ewarm/asp-1.7.0/extension/mutex/kernel/kernel_def.csv
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/kernel/kernel_def.csv	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/kernel/kernel_def.csv	(revision 61)
@@ -0,0 +1,109 @@
+SIL_ENDIAN_BIG,#defined(SIL_ENDIAN_BIG)
+SIL_ENDIAN_LITTLE,#defined(SIL_ENDIAN_LITTLE)
+TA_NULL,TA_NULL
+TA_ACT,TA_ACT
+TA_TPRI,TA_TPRI
+TA_MPRI,TA_MPRI
+TA_WMUL,TA_WMUL
+TA_CLR,TA_CLR
+TA_CEILING,TA_CEILING
+TA_STA,TA_STA
+TA_NONKERNEL,TA_NONKERNEL
+TA_ENAINT,TA_ENAINT
+TA_EDGE,TA_EDGE
+TMIN_TPRI,TMIN_TPRI,signed
+TMAX_TPRI,TMAX_TPRI,signed
+TMIN_DPRI,TMIN_DPRI,signed
+TMAX_DPRI,TMAX_DPRI,signed
+TMIN_MPRI,TMIN_MPRI,signed
+TMAX_MPRI,TMAX_MPRI,signed
+TMIN_ISRPRI,TMIN_ISRPRI,signed
+TMAX_ISRPRI,TMAX_ISRPRI,signed
+TMAX_MAXSEM,TMAX_MAXSEM
+TMAX_RELTIM,TMAX_RELTIM
+TMIN_INTPRI,TMIN_INTPRI,signed
+OMIT_INITIALIZE_INTERRUPT,#defined(OMIT_INITIALIZE_INTERRUPT)
+OMIT_INITIALIZE_EXCEPTION,#defined(OMIT_INITIALIZE_EXCEPTION)
+USE_TSKINICTXB,#defined(USE_TSKINICTXB)
+TARGET_TSKATR,#defined(TARGET_TSKATR),,TARGET_TSKATR
+TARGET_INTATR,#defined(TARGET_INTATR),,TARGET_INTATR
+TARGET_INHATR,#defined(TARGET_INHATR),,TARGET_INHATR
+TARGET_ISRATR,#defined(TARGET_ISRATR),,TARGET_ISRATR
+TARGET_EXCATR,#defined(TARGET_EXCATR),,TARGET_EXCATR
+TARGET_MIN_STKSZ,#defined(TARGET_MIN_STKSZ),,TARGET_MIN_STKSZ
+CHECK_STKSZ_ALIGN,#defined(CHECK_STKSZ_ALIGN),,CHECK_STKSZ_ALIGN
+CHECK_FUNC_ALIGN,#defined(CHECK_FUNC_ALIGN),,CHECK_FUNC_ALIGN
+CHECK_FUNC_NONNULL,#defined(CHECK_FUNC_NONNULL)
+CHECK_STACK_ALIGN,#defined(CHECK_STACK_ALIGN),,CHECK_STACK_ALIGN
+CHECK_STACK_NONNULL,#defined(CHECK_STACK_NONNULL)
+CHECK_MPF_ALIGN,#defined(CHECK_MPF_ALIGN),,CHECK_MPF_ALIGN
+CHECK_MPF_NONNULL,#defined(CHECK_MPF_NONNULL)
+sizeof_ID,sizeof(ID)
+sizeof_uint_t,sizeof(uint_t)
+sizeof_SIZE,sizeof(SIZE)
+sizeof_ATR,sizeof(ATR)
+sizeof_PRI,sizeof(PRI)
+sizeof_void_ptr,sizeof(void*)
+sizeof_VP,sizeof(void*)
+sizeof_intptr_t,sizeof(intptr_t)
+sizeof_FP,sizeof(FP)
+sizeof_INHNO,sizeof(INHNO)
+sizeof_INTNO,sizeof(INTNO)
+sizeof_EXCNO,sizeof(EXCNO)
+sizeof_TINIB,sizeof(TINIB)
+offsetof_TINIB_tskatr,"offsetof(TINIB,tskatr)"
+offsetof_TINIB_exinf,"offsetof(TINIB,exinf)"
+offsetof_TINIB_task,"offsetof(TINIB,task)"
+offsetof_TINIB_ipriority,"offsetof(TINIB,ipriority)"
+offsetof_TINIB_stksz,#!defined(USE_TSKINICTXB),,"offsetof(TINIB,stksz)"
+offsetof_TINIB_stk,#!defined(USE_TSKINICTXB),,"offsetof(TINIB,stk)"
+offsetof_TINIB_texatr,"offsetof(TINIB,texatr)"
+offsetof_TINIB_texrtn,"offsetof(TINIB,texrtn)"
+sizeof_SEMINIB,sizeof(SEMINIB)
+offsetof_SEMINIB_sematr,"offsetof(SEMINIB,sematr)"
+offsetof_SEMINIB_isemcnt,"offsetof(SEMINIB,isemcnt)"
+offsetof_SEMINIB_maxsem,"offsetof(SEMINIB,maxsem)"
+sizeof_FLGPTN,sizeof(FLGPTN)
+sizeof_FLGINIB,sizeof(FLGINIB)
+offsetof_FLGINIB_flgatr,"offsetof(FLGINIB,flgatr)"
+offsetof_FLGINIB_iflgptn,"offsetof(FLGINIB,iflgptn)"
+sizeof_DTQINIB,sizeof(DTQINIB)
+offsetof_DTQINIB_dtqatr,"offsetof(DTQINIB,dtqatr)"
+offsetof_DTQINIB_dtqcnt,"offsetof(DTQINIB,dtqcnt)"
+offsetof_DTQINIB_p_dtqmb,"offsetof(DTQINIB,p_dtqmb)"
+sizeof_PDQINIB,sizeof(PDQINIB)
+offsetof_PDQINIB_pdqatr,"offsetof(PDQINIB,pdqatr)"
+offsetof_PDQINIB_pdqcnt,"offsetof(PDQINIB,pdqcnt)"
+offsetof_PDQINIB_maxdpri,"offsetof(PDQINIB,maxdpri)"
+offsetof_PDQINIB_p_pdqmb,"offsetof(PDQINIB,p_pdqmb)"
+sizeof_MBXINIB,sizeof(MBXINIB)
+offsetof_MBXINIB_mbxatr,"offsetof(MBXINIB,mbxatr)"
+offsetof_MBXINIB_maxmpri,"offsetof(MBXINIB,maxmpri)"
+sizeof_MPFINIB,sizeof(MPFINIB)
+offsetof_MPFINIB_mpfatr,"offsetof(MPFINIB,mpfatr)"
+offsetof_MPFINIB_blkcnt,"offsetof(MPFINIB,blkcnt)"
+offsetof_MPFINIB_blksz,"offsetof(MPFINIB,blksz)"
+offsetof_MPFINIB_mpf,"offsetof(MPFINIB,mpf)"
+offsetof_MPFINIB_p_mpfmb,"offsetof(MPFINIB,p_mpfmb)"
+sizeof_CYCINIB,sizeof(CYCINIB)
+offsetof_CYCINIB_cycatr,"offsetof(CYCINIB,cycatr)"
+offsetof_CYCINIB_exinf,"offsetof(CYCINIB,exinf)"
+offsetof_CYCINIB_cychdr,"offsetof(CYCINIB,cychdr)"
+offsetof_CYCINIB_cyctim,"offsetof(CYCINIB,cyctim)"
+offsetof_CYCINIB_cycphs,"offsetof(CYCINIB,cycphs)"
+sizeof_ALMINIB,sizeof(ALMINIB)
+offsetof_ALMINIB_almatr,"offsetof(ALMINIB,almatr)"
+offsetof_ALMINIB_exinf,"offsetof(ALMINIB,exinf)"
+offsetof_ALMINIB_almhdr,"offsetof(ALMINIB,almhdr)"
+sizeof_INHINIB,#!defined(OMIT_INITIALIZE_INTERRUPT),,sizeof(INHINIB)
+offset_INHINIB_inhno,#!defined(OMIT_INITIALIZE_INTERRUPT),,"offsetof(INHINIB,inhno)"
+offset_INHINIB_inhatr,#!defined(OMIT_INITIALIZE_INTERRUPT),,"offsetof(INHINIB,inhatr)"
+offset_INHINIB_int_entry,#!defined(OMIT_INITIALIZE_INTERRUPT),,"offsetof(INHINIB,int_entry)"
+sizeof_INTINIB,#!defined(OMIT_INITIALIZE_INTERRUPT),,sizeof(INTINIB)
+offset_INTINIB_intno,#!defined(OMIT_INITIALIZE_INTERRUPT),,"offsetof(INTINIB,intno)"
+offset_INTINIB_intatr,#!defined(OMIT_INITIALIZE_INTERRUPT),,"offsetof(INTINIB,intatr)"
+offset_INTINIB_intpri,#!defined(OMIT_INITIALIZE_INTERRUPT),,"offsetof(INTINIB,intpri)"
+sizeof_EXCINIB,#!defined(OMIT_INITIALIZE_EXCEPTION),,sizeof(EXCINIB)
+offset_EXCINIB_excno,#!defined(OMIT_INITIALIZE_EXCEPTION),,"offsetof(EXCINIB,excno)"
+offset_EXCINIB_excatr,#!defined(OMIT_INITIALIZE_EXCEPTION),,"offsetof(EXCINIB,excatr)"
+offset_EXCINIB_exc_entry,#!defined(OMIT_INITIALIZE_EXCEPTION),,"offsetof(EXCINIB,exc_entry)"
Index: /asp_ewarm/asp-1.7.0/extension/mutex/kernel/kernel_impl.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/kernel/kernel_impl.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/kernel/kernel_impl.h	(revision 61)
@@ -0,0 +1,190 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: kernel_impl.h 1713 2010-01-27 13:23:29Z ertl-hiro $
+ */
+
+/*
+ *		TOPPERS/ASPJ[làü¯Wwb_t@C
+ *
+ *  ±Ìwb_t@CÍCJ[lð\¬·évOÌ\[Xt@C
+ *  ÅK¸CN[h·é×«Wwb_t@CÅ éD
+ *
+ *  AZu¾êÌ\[Xt@C©ç±Ìt@CðCN[h·é
+ *  ÍCTOPPERS_MACRO_ONLYðè`µÄ¨­D±êÉæèC}Nè`ÈOð
+ *  ­æ¤ÉÈÁÄ¢éD
+ */
+
+#ifndef TOPPERS_KERNEL_IMPL_H
+#define TOPPERS_KERNEL_IMPL_H
+
+/*
+ *  J[lÌà¯Ê¼Ìl[
+ */
+#include "kernel_rename.h"
+
+/*
+ *  AvP[VÆ¤ÊÌwb_t@C
+ */
+#include <kernel.h>
+
+/*
+ *  VXeO@\Ì½ßÌè`
+ */
+#include <t_syslog.h>
+
+/*
+ *  ^LXgðs¤}NÌè`
+ */
+#ifndef CAST
+#define CAST(type, val)		((type)(val))
+#endif /* CAST */
+
+/*
+ *  ^[QbgË¶îñÌè`
+ */
+#include "target_config.h"
+
+/*
+ *  ·×ÄÌÖðRpC·é½ßÌè`
+ */
+#ifdef ALLFUNC
+#include "allfunc.h"
+#endif /* ALLFUNC */
+
+/*
+ *  rbgtB[hÅÌ³µ®^
+ *
+ *  8rbgÈºÌÌrbgtB[hÅC³µ®lðÛµ½¢ê
+ *  Ép¢é×«f[^^DANSI CÅÍCrbgtB[hÌf[^^ÉÍ
+ *  intÆunsigned intµ©³êÈ¢½ßCftHgÌè`Íunsigned
+ *  intÆµÄ¢éªC^[Qbg¨æÑc[Ë¶ÅCunsigned charÜ½Í
+ *  unsigned shortÉè`µ½ûªø¦ªÇ¢êª éD
+ */
+#ifndef BIT_FIELD_UINT
+#define BIT_FIELD_UINT		unsigned int
+#endif /* BIT_FIELD_UINT */
+
+/*
+ *  rbgtB[hÅÌu[^
+ *
+ *  1rbgÌrbgtB[hÅCu[lðÛµ½¢êÉp¢é×«
+ *  f[^^DftHgÅÍBIT_FIELD_UINTÆ¯êÉè`µÄ¢éªCu[
+ *  lðÛ·é±Æð¾¦·é½ßÉÊÌ¼ÌÆµÄ¢éD
+ */
+#ifndef BIT_FIELD_BOOL
+#define BIT_FIELD_BOOL		BIT_FIELD_UINT
+#endif /* BIT_FIELD_BOOL */
+
+/*
+ *  IuWFNgIDÌÅ¬lÌè`
+ */
+#define TMIN_TSKID		1		/* ^XNIDÌÅ¬l */
+#define TMIN_SEMID		1		/* Z}tHIDÌÅ¬l */
+#define TMIN_FLGID		1		/* tOIDÌÅ¬l */
+#define TMIN_DTQID		1		/* f[^L
+[IDÌÅ¬l */
+#define TMIN_PDQID		1		/* Dæxf[^L
+[IDÌÅ¬l */
+#define TMIN_MBXID		1		/* [{bNXIDÌÅ¬l */
+#define TMIN_MTXID		1		/* ~
+[ebNXIDÌÅ¬l */
+#define TMIN_MPFID		1		/* Åè·v[IDÌÅ¬l */
+#define TMIN_CYCID		1		/* üúnhIDÌÅ¬l */
+#define TMIN_ALMID		1		/* A[nhIDÌÅ¬l */
+
+/*
+ *  DæxÌiKÌè`
+ */
+#define TNUM_TPRI		(TMAX_TPRI - TMIN_TPRI + 1)
+#define TNUM_MPRI		(TMAX_MPRI - TMIN_MPRI + 1)
+#define TNUM_INTPRI		(TMAX_INTPRI - TMIN_INTPRI + 1)
+
+/*
+ *  wb_t@Cð½È¢W
+[ÌÖEÏÌé¾
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  eW
+[Ìú»ikernel_cfg.cj
+ */
+extern void	initialize_object(void);
+
+/*
+ *  ú»[`ÌÀsikernel_cfg.cj
+ */
+extern void	call_inirtn(void);
+
+/*
+ *  I¹[`ÌÀsikernel_cfg.cj
+ */
+extern void	call_terrtn(void);
+
+/*
+ *  ñ^XNReLXgpÌX^bNÌæikernel_cfg.cj
+ */
+extern const SIZE	istksz;		/* X^bNÌæÌTCYiÛß½lj */
+extern STK_T *const	istk;		/* X^bNÌæÌæªÔn */
+#ifdef TOPPERS_ISTKPT
+extern STK_T *const	istkpt;		/* X^bN|C^Ìúl */
+#endif /* TOPPERS_ISTKPT */
+
+/*
+ *  J[l®ìóÔtOistartup.cj
+ */
+extern bool_t	kerflg;
+
+/*
+ *  J[lÌN®istartup.cj
+ */
+extern void	sta_ker(void);
+
+/*
+ *  J[lÌI¹istartup.cj
+ */
+extern void	exit_kernel(void);
+
+#endif /* TOPPERS_MACRO_ONLY */
+#endif /* TOPPERS_KERNEL_IMPL_H */
Index: /asp_ewarm/asp-1.7.0/extension/mutex/kernel/kernel_int.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/kernel/kernel_int.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/kernel/kernel_int.h	(revision 61)
@@ -0,0 +1,81 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: kernel_int.h 525 2007-09-11 18:01:00Z hiro $
+ */
+
+/*
+ *		kernel_cfg.ci¨æÑcfg1_out.cjpwb_t@C
+ */
+
+#ifndef TOPPERS_KERNEL_INT_H
+#define TOPPERS_KERNEL_INT_H
+
+/*
+ *  J[lWwb_t@C
+ */
+#include "kernel_impl.h"
+
+/*
+ *  J[lÌewb_t@C
+ */
+#include "task.h"
+#include "semaphore.h"
+#include "eventflag.h"
+#include "dataqueue.h"
+#include "pridataq.h"
+#include "mailbox.h"
+#include "mempfix.h"
+#include "mutex.h"
+#include "cyclic.h"
+#include "alarm.h"
+#include "interrupt.h"
+#include "exception.h"
+#include "time_event.h"
+
+/*
+ *  l[µ½V{ð³Éß·½ßÌwb_t@C
+ */
+#include "kernel_unrename.h"
+
+#endif /* TOPPERS_KERNEL_INT_H */
Index: /asp_ewarm/asp-1.7.0/extension/mutex/kernel/kernel_rename.def
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/kernel/kernel_rename.def	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/kernel/kernel_rename.def	(revision 61)
@@ -0,0 +1,150 @@
+# startup.c
+kerflg
+exit_kernel
+
+# task.c
+p_runtsk
+p_schedtsk
+reqflg
+ipmflg
+disdsp
+dspflg
+ready_queue
+ready_primap
+initialize_task
+search_schedtsk
+make_runnable
+make_non_runnable
+make_dormant
+make_active
+change_priority
+rotate_ready_queue
+call_texrtn
+calltex
+
+# wait.c
+make_wait_tmout
+wait_complete
+wait_tmout
+wait_tmout_ok
+wait_release
+wobj_make_wait
+wobj_make_wait_tmout
+init_wait_queue
+
+# time_event.c
+current_time
+min_time
+next_time
+next_subtime
+last_index
+initialize_tmevt
+tmevt_up
+tmevt_down
+tmevtb_insert
+tmevtb_delete
+tmevt_lefttim
+signal_time
+
+# semaphore.c
+initialize_semaphore
+
+# eventflag.c
+initialize_eventflag
+check_flg_cond
+
+# dataqueue.c
+initialize_dataqueue
+enqueue_data
+force_enqueue_data
+dequeue_data
+send_data
+force_send_data
+receive_data
+
+# pridataq.c
+initialize_pridataq
+enqueue_pridata
+dequeue_pridata
+send_pridata
+receive_pridata
+
+# mailbox.c
+initialize_mailbox
+
+# mempfix.c
+initialize_mempfix
+get_mpf_block
+
+# mutex.c
+mtxhook_check_ceilpri
+mtxhook_scan_ceilmtx
+mtxhook_release_all
+initialize_mutex
+mutex_check_ceilpri
+mutex_scan_ceilmtx
+mutex_calc_priority
+mutex_release
+mutex_release_all
+
+# cyclic.c
+initialize_cyclic
+call_cychdr
+
+# alarm.c
+initialize_alarm
+call_almhdr
+
+# interrupt.c
+initialize_interrupt
+
+# exception.c
+initialize_exception
+
+# kernel_cfg.c
+initialize_object
+call_inirtn
+call_terrtn
+tmax_tskid
+tinib_table
+torder_table
+tcb_table
+tmax_semid
+seminib_table
+semcb_table
+tmax_flgid
+flginib_table
+flgcb_table
+tmax_dtqid
+dtqcb_table
+dtqinib_table
+tmax_pdqid
+pdqcb_table
+pdqinib_table
+tmax_mbxid
+mbxcb_table
+mbxinib_table
+tmax_mtxid
+mtxcb_table
+mtxinib_table
+tmax_mpfid
+mpfinib_table
+mpfcb_table
+tmax_cycid
+cycinib_table
+cyccb_table
+tmax_almid
+alminib_table
+almcb_table
+tnum_inhno
+inhinib_table
+tnum_intno
+intinib_table
+tnum_excno
+excinib_table
+tmevt_heap
+istksz
+istk
+istkpt
+
+INCLUDE "target"
Index: /asp_ewarm/asp-1.7.0/extension/mutex/kernel/kernel_rename.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/kernel/kernel_rename.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/kernel/kernel_rename.h	(revision 61)
@@ -0,0 +1,376 @@
+/* This file is generated from kernel_rename.def by genrename. */
+
+#ifndef TOPPERS_KERNEL_RENAME_H
+#define TOPPERS_KERNEL_RENAME_H
+
+/*
+ *  startup.c
+ */
+#define kerflg						_kernel_kerflg
+#define exit_kernel					_kernel_exit_kernel
+
+/*
+ *  task.c
+ */
+#define p_runtsk					_kernel_p_runtsk
+#define p_schedtsk					_kernel_p_schedtsk
+#define reqflg						_kernel_reqflg
+#define ipmflg						_kernel_ipmflg
+#define disdsp						_kernel_disdsp
+#define dspflg						_kernel_dspflg
+#define ready_queue					_kernel_ready_queue
+#define ready_primap				_kernel_ready_primap
+#define initialize_task				_kernel_initialize_task
+#define search_schedtsk				_kernel_search_schedtsk
+#define make_runnable				_kernel_make_runnable
+#define make_non_runnable			_kernel_make_non_runnable
+#define make_dormant				_kernel_make_dormant
+#define make_active					_kernel_make_active
+#define change_priority				_kernel_change_priority
+#define rotate_ready_queue			_kernel_rotate_ready_queue
+#define call_texrtn					_kernel_call_texrtn
+#define calltex						_kernel_calltex
+
+/*
+ *  wait.c
+ */
+#define make_wait_tmout				_kernel_make_wait_tmout
+#define wait_complete				_kernel_wait_complete
+#define wait_tmout					_kernel_wait_tmout
+#define wait_tmout_ok				_kernel_wait_tmout_ok
+#define wait_release				_kernel_wait_release
+#define wobj_make_wait				_kernel_wobj_make_wait
+#define wobj_make_wait_tmout		_kernel_wobj_make_wait_tmout
+#define init_wait_queue				_kernel_init_wait_queue
+
+/*
+ *  time_event.c
+ */
+#define current_time				_kernel_current_time
+#define min_time					_kernel_min_time
+#define next_time					_kernel_next_time
+#define next_subtime				_kernel_next_subtime
+#define last_index					_kernel_last_index
+#define initialize_tmevt			_kernel_initialize_tmevt
+#define tmevt_up					_kernel_tmevt_up
+#define tmevt_down					_kernel_tmevt_down
+#define tmevtb_insert				_kernel_tmevtb_insert
+#define tmevtb_delete				_kernel_tmevtb_delete
+#define tmevt_lefttim				_kernel_tmevt_lefttim
+#define signal_time					_kernel_signal_time
+
+/*
+ *  semaphore.c
+ */
+#define initialize_semaphore		_kernel_initialize_semaphore
+
+/*
+ *  eventflag.c
+ */
+#define initialize_eventflag		_kernel_initialize_eventflag
+#define check_flg_cond				_kernel_check_flg_cond
+
+/*
+ *  dataqueue.c
+ */
+#define initialize_dataqueue		_kernel_initialize_dataqueue
+#define enqueue_data				_kernel_enqueue_data
+#define force_enqueue_data			_kernel_force_enqueue_data
+#define dequeue_data				_kernel_dequeue_data
+#define send_data					_kernel_send_data
+#define force_send_data				_kernel_force_send_data
+#define receive_data				_kernel_receive_data
+
+/*
+ *  pridataq.c
+ */
+#define initialize_pridataq			_kernel_initialize_pridataq
+#define enqueue_pridata				_kernel_enqueue_pridata
+#define dequeue_pridata				_kernel_dequeue_pridata
+#define send_pridata				_kernel_send_pridata
+#define receive_pridata				_kernel_receive_pridata
+
+/*
+ *  mailbox.c
+ */
+#define initialize_mailbox			_kernel_initialize_mailbox
+
+/*
+ *  mempfix.c
+ */
+#define initialize_mempfix			_kernel_initialize_mempfix
+#define get_mpf_block				_kernel_get_mpf_block
+
+/*
+ *  mutex.c
+ */
+#define mtxhook_check_ceilpri		_kernel_mtxhook_check_ceilpri
+#define mtxhook_scan_ceilmtx		_kernel_mtxhook_scan_ceilmtx
+#define mtxhook_release_all			_kernel_mtxhook_release_all
+#define initialize_mutex			_kernel_initialize_mutex
+#define mutex_check_ceilpri			_kernel_mutex_check_ceilpri
+#define mutex_scan_ceilmtx			_kernel_mutex_scan_ceilmtx
+#define mutex_calc_priority			_kernel_mutex_calc_priority
+#define mutex_release				_kernel_mutex_release
+#define mutex_release_all			_kernel_mutex_release_all
+
+/*
+ *  cyclic.c
+ */
+#define initialize_cyclic			_kernel_initialize_cyclic
+#define call_cychdr					_kernel_call_cychdr
+
+/*
+ *  alarm.c
+ */
+#define initialize_alarm			_kernel_initialize_alarm
+#define call_almhdr					_kernel_call_almhdr
+
+/*
+ *  interrupt.c
+ */
+#define initialize_interrupt		_kernel_initialize_interrupt
+
+/*
+ *  exception.c
+ */
+#define initialize_exception		_kernel_initialize_exception
+
+/*
+ *  kernel_cfg.c
+ */
+#define initialize_object			_kernel_initialize_object
+#define call_inirtn					_kernel_call_inirtn
+#define call_terrtn					_kernel_call_terrtn
+#define tmax_tskid					_kernel_tmax_tskid
+#define tinib_table					_kernel_tinib_table
+#define torder_table				_kernel_torder_table
+#define tcb_table					_kernel_tcb_table
+#define tmax_semid					_kernel_tmax_semid
+#define seminib_table				_kernel_seminib_table
+#define semcb_table					_kernel_semcb_table
+#define tmax_flgid					_kernel_tmax_flgid
+#define flginib_table				_kernel_flginib_table
+#define flgcb_table					_kernel_flgcb_table
+#define tmax_dtqid					_kernel_tmax_dtqid
+#define dtqcb_table					_kernel_dtqcb_table
+#define dtqinib_table				_kernel_dtqinib_table
+#define tmax_pdqid					_kernel_tmax_pdqid
+#define pdqcb_table					_kernel_pdqcb_table
+#define pdqinib_table				_kernel_pdqinib_table
+#define tmax_mbxid					_kernel_tmax_mbxid
+#define mbxcb_table					_kernel_mbxcb_table
+#define mbxinib_table				_kernel_mbxinib_table
+#define tmax_mtxid					_kernel_tmax_mtxid
+#define mtxcb_table					_kernel_mtxcb_table
+#define mtxinib_table				_kernel_mtxinib_table
+#define tmax_mpfid					_kernel_tmax_mpfid
+#define mpfinib_table				_kernel_mpfinib_table
+#define mpfcb_table					_kernel_mpfcb_table
+#define tmax_cycid					_kernel_tmax_cycid
+#define cycinib_table				_kernel_cycinib_table
+#define cyccb_table					_kernel_cyccb_table
+#define tmax_almid					_kernel_tmax_almid
+#define alminib_table				_kernel_alminib_table
+#define almcb_table					_kernel_almcb_table
+#define tnum_inhno					_kernel_tnum_inhno
+#define inhinib_table				_kernel_inhinib_table
+#define tnum_intno					_kernel_tnum_intno
+#define intinib_table				_kernel_intinib_table
+#define tnum_excno					_kernel_tnum_excno
+#define excinib_table				_kernel_excinib_table
+#define tmevt_heap					_kernel_tmevt_heap
+#define istksz						_kernel_istksz
+#define istk						_kernel_istk
+#define istkpt						_kernel_istkpt
+
+
+#ifdef TOPPERS_LABEL_ASM
+
+/*
+ *  startup.c
+ */
+#define _kerflg						__kernel_kerflg
+#define _exit_kernel				__kernel_exit_kernel
+
+/*
+ *  task.c
+ */
+#define _p_runtsk					__kernel_p_runtsk
+#define _p_schedtsk					__kernel_p_schedtsk
+#define _reqflg						__kernel_reqflg
+#define _ipmflg						__kernel_ipmflg
+#define _disdsp						__kernel_disdsp
+#define _dspflg						__kernel_dspflg
+#define _ready_queue				__kernel_ready_queue
+#define _ready_primap				__kernel_ready_primap
+#define _initialize_task			__kernel_initialize_task
+#define _search_schedtsk			__kernel_search_schedtsk
+#define _make_runnable				__kernel_make_runnable
+#define _make_non_runnable			__kernel_make_non_runnable
+#define _make_dormant				__kernel_make_dormant
+#define _make_active				__kernel_make_active
+#define _change_priority			__kernel_change_priority
+#define _rotate_ready_queue			__kernel_rotate_ready_queue
+#define _call_texrtn				__kernel_call_texrtn
+#define _calltex					__kernel_calltex
+
+/*
+ *  wait.c
+ */
+#define _make_wait_tmout			__kernel_make_wait_tmout
+#define _wait_complete				__kernel_wait_complete
+#define _wait_tmout					__kernel_wait_tmout
+#define _wait_tmout_ok				__kernel_wait_tmout_ok
+#define _wait_release				__kernel_wait_release
+#define _wobj_make_wait				__kernel_wobj_make_wait
+#define _wobj_make_wait_tmout		__kernel_wobj_make_wait_tmout
+#define _init_wait_queue			__kernel_init_wait_queue
+
+/*
+ *  time_event.c
+ */
+#define _current_time				__kernel_current_time
+#define _min_time					__kernel_min_time
+#define _next_time					__kernel_next_time
+#define _next_subtime				__kernel_next_subtime
+#define _last_index					__kernel_last_index
+#define _initialize_tmevt			__kernel_initialize_tmevt
+#define _tmevt_up					__kernel_tmevt_up
+#define _tmevt_down					__kernel_tmevt_down
+#define _tmevtb_insert				__kernel_tmevtb_insert
+#define _tmevtb_delete				__kernel_tmevtb_delete
+#define _tmevt_lefttim				__kernel_tmevt_lefttim
+#define _signal_time				__kernel_signal_time
+
+/*
+ *  semaphore.c
+ */
+#define _initialize_semaphore		__kernel_initialize_semaphore
+
+/*
+ *  eventflag.c
+ */
+#define _initialize_eventflag		__kernel_initialize_eventflag
+#define _check_flg_cond				__kernel_check_flg_cond
+
+/*
+ *  dataqueue.c
+ */
+#define _initialize_dataqueue		__kernel_initialize_dataqueue
+#define _enqueue_data				__kernel_enqueue_data
+#define _force_enqueue_data			__kernel_force_enqueue_data
+#define _dequeue_data				__kernel_dequeue_data
+#define _send_data					__kernel_send_data
+#define _force_send_data			__kernel_force_send_data
+#define _receive_data				__kernel_receive_data
+
+/*
+ *  pridataq.c
+ */
+#define _initialize_pridataq		__kernel_initialize_pridataq
+#define _enqueue_pridata			__kernel_enqueue_pridata
+#define _dequeue_pridata			__kernel_dequeue_pridata
+#define _send_pridata				__kernel_send_pridata
+#define _receive_pridata			__kernel_receive_pridata
+
+/*
+ *  mailbox.c
+ */
+#define _initialize_mailbox			__kernel_initialize_mailbox
+
+/*
+ *  mempfix.c
+ */
+#define _initialize_mempfix			__kernel_initialize_mempfix
+#define _get_mpf_block				__kernel_get_mpf_block
+
+/*
+ *  mutex.c
+ */
+#define _mtxhook_check_ceilpri		__kernel_mtxhook_check_ceilpri
+#define _mtxhook_scan_ceilmtx		__kernel_mtxhook_scan_ceilmtx
+#define _mtxhook_release_all		__kernel_mtxhook_release_all
+#define _initialize_mutex			__kernel_initialize_mutex
+#define _mutex_check_ceilpri		__kernel_mutex_check_ceilpri
+#define _mutex_scan_ceilmtx			__kernel_mutex_scan_ceilmtx
+#define _mutex_calc_priority		__kernel_mutex_calc_priority
+#define _mutex_release				__kernel_mutex_release
+#define _mutex_release_all			__kernel_mutex_release_all
+
+/*
+ *  cyclic.c
+ */
+#define _initialize_cyclic			__kernel_initialize_cyclic
+#define _call_cychdr				__kernel_call_cychdr
+
+/*
+ *  alarm.c
+ */
+#define _initialize_alarm			__kernel_initialize_alarm
+#define _call_almhdr				__kernel_call_almhdr
+
+/*
+ *  interrupt.c
+ */
+#define _initialize_interrupt		__kernel_initialize_interrupt
+
+/*
+ *  exception.c
+ */
+#define _initialize_exception		__kernel_initialize_exception
+
+/*
+ *  kernel_cfg.c
+ */
+#define _initialize_object			__kernel_initialize_object
+#define _call_inirtn				__kernel_call_inirtn
+#define _call_terrtn				__kernel_call_terrtn
+#define _tmax_tskid					__kernel_tmax_tskid
+#define _tinib_table				__kernel_tinib_table
+#define _torder_table				__kernel_torder_table
+#define _tcb_table					__kernel_tcb_table
+#define _tmax_semid					__kernel_tmax_semid
+#define _seminib_table				__kernel_seminib_table
+#define _semcb_table				__kernel_semcb_table
+#define _tmax_flgid					__kernel_tmax_flgid
+#define _flginib_table				__kernel_flginib_table
+#define _flgcb_table				__kernel_flgcb_table
+#define _tmax_dtqid					__kernel_tmax_dtqid
+#define _dtqcb_table				__kernel_dtqcb_table
+#define _dtqinib_table				__kernel_dtqinib_table
+#define _tmax_pdqid					__kernel_tmax_pdqid
+#define _pdqcb_table				__kernel_pdqcb_table
+#define _pdqinib_table				__kernel_pdqinib_table
+#define _tmax_mbxid					__kernel_tmax_mbxid
+#define _mbxcb_table				__kernel_mbxcb_table
+#define _mbxinib_table				__kernel_mbxinib_table
+#define _tmax_mtxid					__kernel_tmax_mtxid
+#define _mtxcb_table				__kernel_mtxcb_table
+#define _mtxinib_table				__kernel_mtxinib_table
+#define _tmax_mpfid					__kernel_tmax_mpfid
+#define _mpfinib_table				__kernel_mpfinib_table
+#define _mpfcb_table				__kernel_mpfcb_table
+#define _tmax_cycid					__kernel_tmax_cycid
+#define _cycinib_table				__kernel_cycinib_table
+#define _cyccb_table				__kernel_cyccb_table
+#define _tmax_almid					__kernel_tmax_almid
+#define _alminib_table				__kernel_alminib_table
+#define _almcb_table				__kernel_almcb_table
+#define _tnum_inhno					__kernel_tnum_inhno
+#define _inhinib_table				__kernel_inhinib_table
+#define _tnum_intno					__kernel_tnum_intno
+#define _intinib_table				__kernel_intinib_table
+#define _tnum_excno					__kernel_tnum_excno
+#define _excinib_table				__kernel_excinib_table
+#define _tmevt_heap					__kernel_tmevt_heap
+#define _istksz						__kernel_istksz
+#define _istk						__kernel_istk
+#define _istkpt						__kernel_istkpt
+
+
+#endif /* TOPPERS_LABEL_ASM */
+
+#include "target_rename.h"
+
+#endif /* TOPPERS_KERNEL_RENAME_H */
Index: /asp_ewarm/asp-1.7.0/extension/mutex/kernel/kernel_unrename.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/kernel/kernel_unrename.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/kernel/kernel_unrename.h	(revision 61)
@@ -0,0 +1,377 @@
+/* This file is generated from kernel_rename.def by genrename. */
+
+/* This file is included only when kernel_rename.h has been included. */
+#ifdef TOPPERS_KERNEL_RENAME_H
+#undef TOPPERS_KERNEL_RENAME_H
+
+/*
+ *  startup.c
+ */
+#undef kerflg
+#undef exit_kernel
+
+/*
+ *  task.c
+ */
+#undef p_runtsk
+#undef p_schedtsk
+#undef reqflg
+#undef ipmflg
+#undef disdsp
+#undef dspflg
+#undef ready_queue
+#undef ready_primap
+#undef initialize_task
+#undef search_schedtsk
+#undef make_runnable
+#undef make_non_runnable
+#undef make_dormant
+#undef make_active
+#undef change_priority
+#undef rotate_ready_queue
+#undef call_texrtn
+#undef calltex
+
+/*
+ *  wait.c
+ */
+#undef make_wait_tmout
+#undef wait_complete
+#undef wait_tmout
+#undef wait_tmout_ok
+#undef wait_release
+#undef wobj_make_wait
+#undef wobj_make_wait_tmout
+#undef init_wait_queue
+
+/*
+ *  time_event.c
+ */
+#undef current_time
+#undef min_time
+#undef next_time
+#undef next_subtime
+#undef last_index
+#undef initialize_tmevt
+#undef tmevt_up
+#undef tmevt_down
+#undef tmevtb_insert
+#undef tmevtb_delete
+#undef tmevt_lefttim
+#undef signal_time
+
+/*
+ *  semaphore.c
+ */
+#undef initialize_semaphore
+
+/*
+ *  eventflag.c
+ */
+#undef initialize_eventflag
+#undef check_flg_cond
+
+/*
+ *  dataqueue.c
+ */
+#undef initialize_dataqueue
+#undef enqueue_data
+#undef force_enqueue_data
+#undef dequeue_data
+#undef send_data
+#undef force_send_data
+#undef receive_data
+
+/*
+ *  pridataq.c
+ */
+#undef initialize_pridataq
+#undef enqueue_pridata
+#undef dequeue_pridata
+#undef send_pridata
+#undef receive_pridata
+
+/*
+ *  mailbox.c
+ */
+#undef initialize_mailbox
+
+/*
+ *  mempfix.c
+ */
+#undef initialize_mempfix
+#undef get_mpf_block
+
+/*
+ *  mutex.c
+ */
+#undef mtxhook_check_ceilpri
+#undef mtxhook_scan_ceilmtx
+#undef mtxhook_release_all
+#undef initialize_mutex
+#undef mutex_check_ceilpri
+#undef mutex_scan_ceilmtx
+#undef mutex_calc_priority
+#undef mutex_release
+#undef mutex_release_all
+
+/*
+ *  cyclic.c
+ */
+#undef initialize_cyclic
+#undef call_cychdr
+
+/*
+ *  alarm.c
+ */
+#undef initialize_alarm
+#undef call_almhdr
+
+/*
+ *  interrupt.c
+ */
+#undef initialize_interrupt
+
+/*
+ *  exception.c
+ */
+#undef initialize_exception
+
+/*
+ *  kernel_cfg.c
+ */
+#undef initialize_object
+#undef call_inirtn
+#undef call_terrtn
+#undef tmax_tskid
+#undef tinib_table
+#undef torder_table
+#undef tcb_table
+#undef tmax_semid
+#undef seminib_table
+#undef semcb_table
+#undef tmax_flgid
+#undef flginib_table
+#undef flgcb_table
+#undef tmax_dtqid
+#undef dtqcb_table
+#undef dtqinib_table
+#undef tmax_pdqid
+#undef pdqcb_table
+#undef pdqinib_table
+#undef tmax_mbxid
+#undef mbxcb_table
+#undef mbxinib_table
+#undef tmax_mtxid
+#undef mtxcb_table
+#undef mtxinib_table
+#undef tmax_mpfid
+#undef mpfinib_table
+#undef mpfcb_table
+#undef tmax_cycid
+#undef cycinib_table
+#undef cyccb_table
+#undef tmax_almid
+#undef alminib_table
+#undef almcb_table
+#undef tnum_inhno
+#undef inhinib_table
+#undef tnum_intno
+#undef intinib_table
+#undef tnum_excno
+#undef excinib_table
+#undef tmevt_heap
+#undef istksz
+#undef istk
+#undef istkpt
+
+
+#ifdef TOPPERS_LABEL_ASM
+
+/*
+ *  startup.c
+ */
+#undef _kerflg
+#undef _exit_kernel
+
+/*
+ *  task.c
+ */
+#undef _p_runtsk
+#undef _p_schedtsk
+#undef _reqflg
+#undef _ipmflg
+#undef _disdsp
+#undef _dspflg
+#undef _ready_queue
+#undef _ready_primap
+#undef _initialize_task
+#undef _search_schedtsk
+#undef _make_runnable
+#undef _make_non_runnable
+#undef _make_dormant
+#undef _make_active
+#undef _change_priority
+#undef _rotate_ready_queue
+#undef _call_texrtn
+#undef _calltex
+
+/*
+ *  wait.c
+ */
+#undef _make_wait_tmout
+#undef _wait_complete
+#undef _wait_tmout
+#undef _wait_tmout_ok
+#undef _wait_release
+#undef _wobj_make_wait
+#undef _wobj_make_wait_tmout
+#undef _init_wait_queue
+
+/*
+ *  time_event.c
+ */
+#undef _current_time
+#undef _min_time
+#undef _next_time
+#undef _next_subtime
+#undef _last_index
+#undef _initialize_tmevt
+#undef _tmevt_up
+#undef _tmevt_down
+#undef _tmevtb_insert
+#undef _tmevtb_delete
+#undef _tmevt_lefttim
+#undef _signal_time
+
+/*
+ *  semaphore.c
+ */
+#undef _initialize_semaphore
+
+/*
+ *  eventflag.c
+ */
+#undef _initialize_eventflag
+#undef _check_flg_cond
+
+/*
+ *  dataqueue.c
+ */
+#undef _initialize_dataqueue
+#undef _enqueue_data
+#undef _force_enqueue_data
+#undef _dequeue_data
+#undef _send_data
+#undef _force_send_data
+#undef _receive_data
+
+/*
+ *  pridataq.c
+ */
+#undef _initialize_pridataq
+#undef _enqueue_pridata
+#undef _dequeue_pridata
+#undef _send_pridata
+#undef _receive_pridata
+
+/*
+ *  mailbox.c
+ */
+#undef _initialize_mailbox
+
+/*
+ *  mempfix.c
+ */
+#undef _initialize_mempfix
+#undef _get_mpf_block
+
+/*
+ *  mutex.c
+ */
+#undef _mtxhook_check_ceilpri
+#undef _mtxhook_scan_ceilmtx
+#undef _mtxhook_release_all
+#undef _initialize_mutex
+#undef _mutex_check_ceilpri
+#undef _mutex_scan_ceilmtx
+#undef _mutex_calc_priority
+#undef _mutex_release
+#undef _mutex_release_all
+
+/*
+ *  cyclic.c
+ */
+#undef _initialize_cyclic
+#undef _call_cychdr
+
+/*
+ *  alarm.c
+ */
+#undef _initialize_alarm
+#undef _call_almhdr
+
+/*
+ *  interrupt.c
+ */
+#undef _initialize_interrupt
+
+/*
+ *  exception.c
+ */
+#undef _initialize_exception
+
+/*
+ *  kernel_cfg.c
+ */
+#undef _initialize_object
+#undef _call_inirtn
+#undef _call_terrtn
+#undef _tmax_tskid
+#undef _tinib_table
+#undef _torder_table
+#undef _tcb_table
+#undef _tmax_semid
+#undef _seminib_table
+#undef _semcb_table
+#undef _tmax_flgid
+#undef _flginib_table
+#undef _flgcb_table
+#undef _tmax_dtqid
+#undef _dtqcb_table
+#undef _dtqinib_table
+#undef _tmax_pdqid
+#undef _pdqcb_table
+#undef _pdqinib_table
+#undef _tmax_mbxid
+#undef _mbxcb_table
+#undef _mbxinib_table
+#undef _tmax_mtxid
+#undef _mtxcb_table
+#undef _mtxinib_table
+#undef _tmax_mpfid
+#undef _mpfinib_table
+#undef _mpfcb_table
+#undef _tmax_cycid
+#undef _cycinib_table
+#undef _cyccb_table
+#undef _tmax_almid
+#undef _alminib_table
+#undef _almcb_table
+#undef _tnum_inhno
+#undef _inhinib_table
+#undef _tnum_intno
+#undef _intinib_table
+#undef _tnum_excno
+#undef _excinib_table
+#undef _tmevt_heap
+#undef _istksz
+#undef _istk
+#undef _istkpt
+
+
+#endif /* TOPPERS_LABEL_ASM */
+
+#include "target_unrename.h"
+
+#endif /* TOPPERS_KERNEL_RENAME_H */
Index: /asp_ewarm/asp-1.7.0/extension/mutex/kernel/mutex.c
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/kernel/mutex.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/kernel/mutex.c	(revision 61)
@@ -0,0 +1,652 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2005-2009 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: mutex.c 1694 2010-01-01 15:59:09Z ertl-hiro $
+ */
+
+/*
+ *		~
+[ebNX@\
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+#include "mutex.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_LOC_MTX_ENTER
+#define LOG_LOC_MTX_ENTER(mtxid)
+#endif /* LOG_LOC_MTX_ENTER */
+
+#ifndef LOG_LOC_MTX_LEAVE
+#define LOG_LOC_MTX_LEAVE(ercd)
+#endif /* LOG_LOC_MTX_LEAVE */
+
+#ifndef LOG_PLOC_MTX_ENTER
+#define LOG_PLOC_MTX_ENTER(mtxid)
+#endif /* LOG_PLOC_MTX_ENTER */
+
+#ifndef LOG_PLOC_MTX_LEAVE
+#define LOG_PLOC_MTX_LEAVE(ercd)
+#endif /* LOG_PLOC_MTX_LEAVE */
+
+#ifndef LOG_TLOC_MTX_ENTER
+#define LOG_TLOC_MTX_ENTER(mtxid, tmout)
+#endif /* LOG_TLOC_MTX_ENTER */
+
+#ifndef LOG_TLOC_MTX_LEAVE
+#define LOG_TLOC_MTX_LEAVE(ercd)
+#endif /* LOG_TLOC_MTX_LEAVE */
+
+#ifndef LOG_UNL_MTX_ENTER
+#define LOG_UNL_MTX_ENTER(mtxid)
+#endif /* LOG_UNL_MTX_ENTER */
+
+#ifndef LOG_UNL_MTX_LEAVE
+#define LOG_UNL_MTX_LEAVE(ercd)
+#endif /* LOG_UNL_MTX_LEAVE */
+
+#ifndef LOG_INI_MTX_ENTER
+#define LOG_INI_MTX_ENTER(mtxid)
+#endif /* LOG_INI_MTX_ENTER */
+
+#ifndef LOG_INI_MTX_LEAVE
+#define LOG_INI_MTX_LEAVE(ercd)
+#endif /* LOG_INI_MTX_LEAVE */
+
+#ifndef LOG_REF_MTX_ENTER
+#define LOG_REF_MTX_ENTER(mtxid, pk_rmtx)
+#endif /* LOG_REF_MTX_ENTER */
+
+#ifndef LOG_REF_MTX_LEAVE
+#define LOG_REF_MTX_LEAVE(ercd, pk_rmtx)
+#endif /* LOG_REF_MTX_LEAVE */
+
+/*
+ *  ~
+[ebNXÌ
+ */
+#define tnum_mtx	((uint_t)(tmax_mtxid - TMIN_MTXID + 1))
+
+/*
+ *  ~
+[ebNXID©ç~
+[ebNXÇubNðæèo·½ßÌ}N
+ */
+#define INDEX_MTX(mtxid)	((uint_t)((mtxid) - TMIN_MTXID))
+#define get_mtxcb(mtxid)	(&(mtxcb_table[INDEX_MTX(mtxid)]))
+
+/*
+ *  ~
+[ebNXÇubNÌmutex_queueÖÌ|C^©çC~
+[eb
+ *  NXÇubNÖÌ|C^ðæèo·½ßÌ}N
+ */
+#define MTXCB_QUEUE(p_queue) \
+			((MTXCB *)(((char *) p_queue) - offsetof(MTXCB, mutex_queue)))
+
+/*
+ *  ~
+[ebNXÌvgRð»f·é}N
+ */
+#define MTXPROTO_MASK			0x03U
+#define MTXPROTO(p_mtxcb)		((p_mtxcb)->p_mtxinib->mtxatr & MTXPROTO_MASK)
+#define MTX_CEILING(p_mtxcb)	(MTXPROTO(p_mtxcb) == TA_CEILING)
+
+/*
+ *  tbN[`ÄoµpÌÏ
+ */
+#ifdef TOPPERS_mtxhook
+
+bool_t	(*mtxhook_check_ceilpri)(TCB *p_tcb, uint_t bpriority) = NULL;
+bool_t	(*mtxhook_scan_ceilmtx)(TCB *p_tcb) = NULL;
+bool_t	(*mtxhook_release_all)(TCB *p_tcb) = NULL;
+
+#endif /* TOPPERS_mtxhook */
+
+/* 
+ *  ~
+[ebNX@\Ìú»
+ */
+#ifdef TOPPERS_mtxini
+
+void
+initialize_mutex(void)
+{
+	uint_t	i;
+	MTXCB	*p_mtxcb;
+
+	mtxhook_check_ceilpri = mutex_check_ceilpri;
+	mtxhook_scan_ceilmtx = mutex_scan_ceilmtx;
+	mtxhook_release_all = mutex_release_all;
+
+	for (p_mtxcb = mtxcb_table, i = 0; i < tnum_mtx; p_mtxcb++, i++) {
+		queue_initialize(&(p_mtxcb->wait_queue));
+		p_mtxcb->p_mtxinib = &(mtxinib_table[i]);
+		p_mtxcb->p_loctsk = NULL;
+	}
+}
+
+#endif /* TOPPERS_mtxini */
+
+/* 
+ *  ãÀDæxá½Ì`FbN
+ */
+#ifdef TOPPERS_mtxchk
+
+bool_t
+mutex_check_ceilpri(TCB *p_tcb, uint_t bpriority)
+{
+	QUEUE	*p_queue;
+	MTXCB	*p_mtxcb;
+
+	/*
+	 *  ^XNªbNµÄ¢éDæxãÀ~
+[ebNXÌÅCãÀDæ
+	 *  xªbpriorityæèàá¢àÌª êÎCfalseðÔ·D
+	 */
+	p_queue = p_tcb->mutex_queue.p_next;
+	while (p_queue != &(p_tcb->mutex_queue)) {
+		p_mtxcb = MTXCB_QUEUE(p_queue);
+		if (MTX_CEILING(p_mtxcb) && bpriority < p_mtxcb->p_mtxinib->ceilpri) {
+			return(false);
+		}
+		p_queue = p_queue->p_next;
+	}
+
+	/*
+	 *  ^XNªDæxãÀ~
+[ebNXÌbNðÒÁÄ¢éêÉC»
+	 *  ÌãÀDæxªbpriorityæèàá­¯êÎCfalseðÔ·D
+	 */
+	if (TSTAT_WAIT_MTX(p_tcb->tstat)) {
+		p_mtxcb = ((WINFO_MTX *)(p_tcb->p_winfo))->p_mtxcb;
+		if (MTX_CEILING(p_mtxcb) && bpriority < p_mtxcb->p_mtxinib->ceilpri) {
+			return(false);
+		}
+	}
+
+	/*
+	 *  ¢¸êÌðÉàÄÍÜçÈ¯êÎtrueðÔ·D
+	 */
+	return(true);
+}
+
+#endif /* TOPPERS_mtxchk */
+
+/* 
+ *  DæxãÀ~
+[ebNXðbNµÄ¢é©Ì`FbN
+ */
+#ifdef TOPPERS_mtxscan
+
+bool_t
+mutex_scan_ceilmtx(TCB *p_tcb)
+{
+	QUEUE	*p_queue;
+	MTXCB	*p_mtxcb;
+
+	p_queue = p_tcb->mutex_queue.p_next;
+	while (p_queue != &(p_tcb->mutex_queue)) {
+		p_mtxcb = MTXCB_QUEUE(p_queue);
+		if (MTX_CEILING(p_mtxcb)) {
+			return(true);
+		}
+		p_queue = p_queue->p_next;
+	}
+	return(false);
+}
+
+#endif /* TOPPERS_mtxscan */
+
+/* 
+ *  ^XNÌ»ÝDæxÌvZ
+ */
+#ifdef TOPPERS_mtxcalc
+
+uint_t
+mutex_calc_priority(TCB *p_tcb)
+{
+	uint_t	priority;
+	QUEUE	*p_queue;
+	MTXCB	*p_mtxcb;
+
+	priority = p_tcb->bpriority;
+	p_queue = p_tcb->mutex_queue.p_next;
+	while (p_queue != &(p_tcb->mutex_queue)) {
+		p_mtxcb = MTXCB_QUEUE(p_queue);
+		if (MTX_CEILING(p_mtxcb) && p_mtxcb->p_mtxinib->ceilpri < priority) {
+			priority = p_mtxcb->p_mtxinib->ceilpri;
+		}
+		p_queue = p_queue->p_next;
+	}
+	return(priority);
+}
+
+#endif /* TOPPERS_mtxcalc */
+
+/*
+ *  vfDæxªãªéiÜ½Í¦éjêÌ»ÝDæxÏX
+ */
+Inline bool_t
+mutex_raise_priority(TCB *p_tcb, uint_t newpri)
+{
+	if (newpri < p_tcb->priority) {
+		return(change_priority(p_tcb, newpri, true));
+	}
+	return(false);
+}
+
+/*
+ *  vfDæxªºªéiÜ½Í¸éjêÌ»ÝDæxÏX
+ */
+Inline bool_t
+mutex_drop_priority(TCB *p_tcb, uint_t oldpri)
+{
+	uint_t	newpri;
+
+	if (oldpri == p_tcb->priority) {
+		newpri = mutex_calc_priority(p_tcb);
+		if (newpri != p_tcb->priority) {
+			return(change_priority(p_tcb, newpri, true));
+		}
+	}
+	return(false);
+}
+
+/*
+ *  ~
+[ebNXðbNµ½êÌ
+ */
+Inline bool_t
+mutex_acquire(TCB *p_loctsk, MTXCB *p_mtxcb)
+{
+	p_mtxcb->p_loctsk = p_loctsk;
+	queue_insert_prev(&(p_loctsk->mutex_queue), &(p_mtxcb->mutex_queue));
+	if (MTX_CEILING(p_mtxcb)) {
+		return(mutex_raise_priority(p_loctsk, p_mtxcb->p_mtxinib->ceilpri));
+	}
+	return(false);
+}
+
+/*
+ *  ~
+[ebNXÌbNð
+ */
+#ifdef TOPPERS_mtxrel
+
+bool_t
+mutex_release(MTXCB *p_mtxcb)
+{
+	TCB		*p_tcb;
+
+	if (queue_empty(&(p_mtxcb->wait_queue))) {
+		p_mtxcb->p_loctsk = NULL;
+		return(false);
+	}
+	else {
+		/*
+		 *  ~
+[ebNXÒ¿L
+[Ìæª^XNip_tcbjÉC~
+[eb
+		 *  NXðbN³¹éD
+		 */
+		p_tcb = (TCB *) queue_delete_next(&(p_mtxcb->wait_queue));
+		wait_dequeue_tmevtb(p_tcb);
+		p_tcb->p_winfo->wercd = E_OK;
+
+		p_mtxcb->p_loctsk = p_tcb;
+		queue_insert_prev(&(p_tcb->mutex_queue), &(p_mtxcb->mutex_queue));
+		if (MTX_CEILING(p_mtxcb)) {
+			if (p_mtxcb->p_mtxinib->ceilpri < p_tcb->priority) {
+				p_tcb->priority = p_mtxcb->p_mtxinib->ceilpri;
+			}
+		}
+		return(make_non_wait(p_tcb));
+	}
+}
+
+#endif /* TOPPERS_mtxrel */
+
+/*
+ *  ^XNªbNµÄ¢é·×ÄÌ~
+[ebNXÌbNð
+ */
+#ifdef TOPPERS_mtxrela
+
+bool_t
+mutex_release_all(TCB *p_tcb)
+{
+	MTXCB	*p_mtxcb;
+	bool_t	dspreq = false;
+
+	while (!queue_empty(&(p_tcb->mutex_queue))) {
+		p_mtxcb = MTXCB_QUEUE(p_tcb->mutex_queue.p_next);
+		queue_delete(&(p_mtxcb->mutex_queue));
+		if (mutex_release(p_mtxcb)) {
+			dspreq = true;
+		}
+	}
+	return(dspreq);
+}
+
+#endif /* TOPPERS_mtxrela */
+
+/*
+ *  ~
+[ebNXÌbN
+ */
+#ifdef TOPPERS_loc_mtx
+
+ER
+loc_mtx(ID mtxid)
+{
+	MTXCB	*p_mtxcb;
+	WINFO_MTX winfo_mtx;
+	ER		ercd;
+
+	LOG_LOC_MTX_ENTER(mtxid);
+	CHECK_DISPATCH();
+	CHECK_MTXID(mtxid);
+	p_mtxcb = get_mtxcb(mtxid);
+
+	t_lock_cpu();
+	if (MTX_CEILING(p_mtxcb)
+				&& p_runtsk->bpriority < p_mtxcb->p_mtxinib->ceilpri) {
+		ercd = E_ILUSE;
+	}
+	else if (p_mtxcb->p_loctsk == NULL) {
+		(void) mutex_acquire(p_runtsk, p_mtxcb);
+		/*
+		 *  DæxãÀ~
+[ebNXðbNµ½êCp_runtskÌDæx
+		 *  ªãªéÂ\«ª éªCfBXpb`ªKvÉÈé±ÆÍÈ¢D
+		 */
+		assert(!(p_runtsk != p_schedtsk && dspflg));
+		ercd = E_OK;
+	}
+	else if (p_mtxcb->p_loctsk == p_runtsk) {
+		ercd = E_ILUSE;
+	}
+	else {
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_MTX);
+		wobj_make_wait((WOBJCB *) p_mtxcb, (WINFO_WOBJ *) &winfo_mtx);
+		dispatch();
+		ercd = winfo_mtx.winfo.wercd;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_LOC_MTX_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_loc_mtx */
+
+/*
+ *  ~
+[ebNXÌbNi|[Oj
+ */
+#ifdef TOPPERS_ploc_mtx
+
+ER
+ploc_mtx(ID mtxid)
+{
+	MTXCB	*p_mtxcb;
+	ER		ercd;
+
+	LOG_PLOC_MTX_ENTER(mtxid);
+	CHECK_TSKCTX_UNL();
+	CHECK_MTXID(mtxid);
+	p_mtxcb = get_mtxcb(mtxid);
+
+	t_lock_cpu();
+	if (MTX_CEILING(p_mtxcb)
+				&& p_runtsk->bpriority < p_mtxcb->p_mtxinib->ceilpri) {
+		ercd = E_ILUSE;
+	}
+	else if (p_mtxcb->p_loctsk == NULL) {
+		(void) mutex_acquire(p_runtsk, p_mtxcb);
+		/*
+		 *  DæxãÀ~
+[ebNXðbNµ½êCp_runtskÌDæx
+		 *  ªãªéÂ\«ª éªCfBXpb`ªKvÉÈé±ÆÍÈ¢D
+		 */
+		assert(!(p_runtsk != p_schedtsk && dspflg));
+		ercd = E_OK;
+	}
+	else if (p_mtxcb->p_loctsk == p_runtsk) {
+		ercd = E_ILUSE;
+	}
+	else {
+		ercd = E_TMOUT;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_PLOC_MTX_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ploc_mtx */
+
+/*
+ *  ~
+[ebNXÌbNi^CAEg èj
+ */
+#ifdef TOPPERS_tloc_mtx
+
+ER
+tloc_mtx(ID mtxid, TMO tmout)
+{
+	MTXCB	*p_mtxcb;
+	WINFO_MTX winfo_mtx;
+	TMEVTB	tmevtb;
+	ER		ercd;
+
+	LOG_TLOC_MTX_ENTER(mtxid, tmout);
+	CHECK_DISPATCH();
+	CHECK_MTXID(mtxid);
+	CHECK_TMOUT(tmout);
+	p_mtxcb = get_mtxcb(mtxid);
+
+	t_lock_cpu();
+	if (MTX_CEILING(p_mtxcb)
+				&& p_runtsk->bpriority < p_mtxcb->p_mtxinib->ceilpri) {
+		ercd = E_ILUSE;
+	}
+	else if (p_mtxcb->p_loctsk == NULL) {
+		(void) mutex_acquire(p_runtsk, p_mtxcb);
+		/*
+		 *  DæxãÀ~
+[ebNXðbNµ½êCp_runtskÌDæx
+		 *  ªãªéÂ\«ª éªCfBXpb`ªKvÉÈé±ÆÍÈ¢D
+		 */
+		assert(!(p_runtsk != p_schedtsk && dspflg));
+		ercd = E_OK;
+	}
+	else if (p_mtxcb->p_loctsk == p_runtsk) {
+		ercd = E_ILUSE;
+	}
+	else if (tmout == TMO_POL) {
+		ercd = E_TMOUT;
+	}
+	else {
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_MTX);
+		wobj_make_wait_tmout((WOBJCB *) p_mtxcb, (WINFO_WOBJ *) &winfo_mtx,
+														&tmevtb, tmout);
+		dispatch();
+		ercd = winfo_mtx.winfo.wercd;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_TLOC_MTX_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_tloc_mtx */
+
+/*
+ *  ~
+[ebNXÌbNð
+ */
+#ifdef TOPPERS_unl_mtx
+
+ER
+unl_mtx(ID mtxid)
+{
+	MTXCB	*p_mtxcb;
+	bool_t	dspreq = false;
+	ER		ercd;
+    
+	LOG_UNL_MTX_ENTER(mtxid);
+	CHECK_TSKCTX_UNL();
+	CHECK_MTXID(mtxid);
+	p_mtxcb = get_mtxcb(mtxid);
+
+	t_lock_cpu();
+	if (p_mtxcb->p_loctsk != p_runtsk) {
+		ercd = E_ILUSE;
+	}
+	else {
+		queue_delete(&(p_mtxcb->mutex_queue));
+		if (MTX_CEILING(p_mtxcb)) {
+			if (mutex_drop_priority(p_runtsk, p_mtxcb->p_mtxinib->ceilpri)) {
+				dspreq = true;
+			}
+		}
+		if (mutex_release(p_mtxcb)) {
+			dspreq = true;
+		}
+		if (dspreq) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_UNL_MTX_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_unl_mtx */
+
+/*
+ *  ~
+[ebNXÌú»
+ */
+#ifdef TOPPERS_ini_mtx
+
+ER
+ini_mtx(ID mtxid)
+{
+	MTXCB	*p_mtxcb;
+	TCB		*p_loctsk;
+	bool_t	dspreq;
+	ER		ercd;
+    
+	LOG_INI_MTX_ENTER(mtxid);
+	CHECK_TSKCTX_UNL();
+	CHECK_MTXID(mtxid);
+	p_mtxcb = get_mtxcb(mtxid);
+
+	t_lock_cpu();
+	dspreq = init_wait_queue(&(p_mtxcb->wait_queue));
+	p_loctsk = p_mtxcb->p_loctsk;
+	if (p_loctsk != NULL) {
+		queue_delete(&(p_mtxcb->mutex_queue));
+		p_mtxcb->p_loctsk = NULL;
+		if (MTX_CEILING(p_mtxcb)) {
+			if (mutex_drop_priority(p_loctsk, p_mtxcb->p_mtxinib->ceilpri)) {
+				dspreq = true;
+			}
+		}
+	}
+	if (dspreq) {
+		dispatch();
+	}
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_INI_MTX_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ini_mtx */
+
+/*
+ *  ~
+[ebNXÌóÔQÆ
+ */
+#ifdef TOPPERS_ref_mtx
+
+ER
+ref_mtx(ID mtxid, T_RMTX *pk_rmtx)
+{
+	MTXCB	*p_mtxcb;
+	ER		ercd;
+    
+	LOG_REF_MTX_ENTER(mtxid, pk_rmtx);
+	CHECK_TSKCTX_UNL();
+	CHECK_MTXID(mtxid);
+	p_mtxcb = get_mtxcb(mtxid);
+
+	t_lock_cpu();
+	pk_rmtx->htskid = (p_mtxcb->p_loctsk != NULL) ? TSKID(p_mtxcb->p_loctsk)
+													: TSK_NONE;
+	pk_rmtx->wtskid = wait_tskid(&(p_mtxcb->wait_queue));
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_REF_MTX_LEAVE(ercd, pk_rmtx);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ref_mtx */
Index: /asp_ewarm/asp-1.7.0/extension/mutex/kernel/mutex.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/kernel/mutex.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/kernel/mutex.h	(revision 61)
@@ -0,0 +1,199 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2005-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: mutex.h 1910 2010-08-25 06:30:21Z ertl-hiro $
+ */
+
+/*
+ *		~
+[ebNX@\
+ */
+
+#ifndef TOPPERS_MUTEX_H
+#define TOPPERS_MUTEX_H
+
+#include <queue.h>
+
+/*
+ *  ~
+[ebNXú»ubN
+ *
+ *  ±Ì\¢ÌÍC¯úEÊMIuWFNgÌú»ubNÌ¤Êª
+ *  iWOBJINIBjðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅC
+ *  ÅÌtB[hª¤ÊÉÈÁÄ¢éD
+ */
+typedef struct mutex_initialization_block {
+	ATR			mtxatr;			/* ~
+[ebNX®« */
+	uint_t		ceilpri;		/* ~
+[ebNXÌãÀDæxià\»j*/
+} MTXINIB;
+
+/*
+ *  ~
+[ebNXÇubN
+ *
+ *  ±Ì\¢ÌÍC¯úEÊMIuWFNgÌÇubNÌ¤ÊªiWOBJCBj
+ *  ðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅCÅÌ2ÂÌ
+ *  tB[hª¤ÊÉÈÁÄ¢éD
+ */
+typedef struct mutex_control_block {
+	QUEUE		wait_queue;		/* ~
+[ebNXÒ¿L
+[ */
+	const MTXINIB *p_mtxinib;	/* ú»ubNÖÌ|C^ */
+	TCB			*p_loctsk;		/* ~
+[ebNXðbNµÄ¢é^XN */
+	QUEUE		mutex_queue;	/* bNµÄ¢é~
+[ebNXÌL
+[ */
+} MTXCB;
+
+/*
+ *  ~
+[ebNXÒ¿îñubNÌè`
+ *
+ *  ±Ì\¢ÌÍC¯úEÊMIuWFNgÌÒ¿îñubNÌ¤Êª
+ *  iWINFO_WOBJjðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅC
+ *  ·×ÄÌtB[hª¤ÊÉÈÁÄ¢éD
+ */
+typedef struct mutex_waiting_information {
+	WINFO	winfo;			/* WÌÒ¿îñubN */
+	MTXCB	*p_mtxcb;		/* ÒÁÄ¢é~
+[ebNXÌÇubN */
+} WINFO_MTX;
+
+/*
+ *  ~
+[ebNXIDÌÅålikernel_cfg.cj
+ */
+extern const ID	tmax_mtxid;
+
+/*
+ *  ~
+[ebNXú»ubNÌGAikernel_cfg.cj
+ */
+extern const MTXINIB	mtxinib_table[];
+
+/*
+ *  ~
+[ebNXÇubNÌGAikernel_cfg.cj
+ */
+extern MTXCB	mtxcb_table[];
+
+/*
+ *  ~
+[ebNXÇubN©ç~
+[ebNXIDðæèo·½ßÌ}N
+ */
+#define	MTXID(p_mtxcb)	((ID)(((p_mtxcb) - mtxcb_table) + TMIN_MTXID))
+
+/*
+ *  ~
+[ebNX@\Ìú»
+ */
+extern void	initialize_mutex(void);
+
+/*
+ *  ãÀDæxá½Ì`FbN
+ *
+ *  chg_priÌÅãÀDæxá½Ì`FbNðs¤½ßÉp¢éÖÅ èC
+ *  p_tcbÅwè³êé^XNªbNµÄ¢éDæxãÀ~
+[ebNXÆC
+ *  bNðÒÁÄ¢éDæxãÀ~
+[ebNXÌÅCãÀDæxª
+ *  bpriorityæèàá¢àÌª êÎfalseðC»¤ÅÈ¯êÎtrueðÔ·D
+ */
+extern bool_t	(*mtxhook_check_ceilpri)(TCB *p_tcb, uint_t bpriority);
+extern bool_t	mutex_check_ceilpri(TCB *p_tcb, uint_t bpriority);
+
+/* 
+ *  DæxãÀ~
+[ebNXðbNµÄ¢é©Ì`FbN
+ *
+ *  p_tcbÅwè³êé^XNªDæxãÀ~
+[ebNXðbNµÄ¢êÎ
+ *  trueC»¤ÅÈ¯êÎfalseðÔ·D
+ */
+extern bool_t	(*mtxhook_scan_ceilmtx)(TCB *p_tcb);
+extern bool_t	mutex_scan_ceilmtx(TCB *p_tcb);
+
+/* 
+ *  ^XNÌ»ÝDæxÌvZ
+ *
+ *  p_tcbÅwè³êé^XNÌ»ÝDæxiÉÝè·×«ljðvZ·éD
+ */
+extern uint_t	mutex_calc_priority(TCB *p_tcb);
+
+/*
+ *  ~
+[ebNXÌbNð
+ *
+ *  p_mtxcbÅwè³êé~
+[ebNXðbNð·éDbNðµ½
+ *  ~
+[ebNXÉCbNÒ¿óÔÌ^XNª éêÉÍC»Ì^XN
+ *  É~
+[ebNXðbN³¹éD
+ */
+extern bool_t	mutex_release(MTXCB *p_mtxcb);
+
+/*
+ *  ^XNªbNµÄ¢é·×ÄÌ~
+[ebNXÌbNð
+ *
+ *  p_tcbÅwè³êé^XNÉC»êªbNµÄ¢é·×ÄÌ~
+[ebN
+ *  XðbNð³¹éDbNðµ½~
+[ebNXÉCbNÒ¿ó
+ *  ÔÌ^XNª éêÉÍC»Ì^XNÉ~
+[ebNXðbN³¹éD
+ *
+ *  ±ÌÖÍC^XNÌI¹ÉgíêéàÌÅ é½ßCp_tcbÅwè³ê
+ *  é^XNÌDæxðÏX·éÍsíÈ¢D½¾µC±ÌÖÌÅ¼
+ *  Ì^XNÌDæxªÏ»µCÀs·×«^XNªÏíé±Æª éD»Ì
+ *  ½ßC±ÌÖ©çßÁ½ãÉCfBXpb`ªKv©»ÊµÄCKvÈ
+ *  êÉÍfBXpb`ðsíÈ¯êÎÈçÈ¢D
+ */
+extern bool_t	(*mtxhook_release_all)(TCB *p_tcb);
+extern bool_t	mutex_release_all(TCB *p_tcb);
+
+#endif /* TOPPERS_MUTEX_H */
Index: /asp_ewarm/asp-1.7.0/extension/mutex/kernel/sys_manage.c
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/kernel/sys_manage.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/kernel/sys_manage.c	(revision 61)
@@ -0,0 +1,539 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: sys_manage.c 2018 2010-12-31 13:43:05Z ertl-hiro $
+ */
+
+/*
+ *		VXeóÔÇ@\
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_ROT_RDQ_ENTER
+#define LOG_ROT_RDQ_ENTER(tskpri)
+#endif /* LOG_ROT_RDQ_ENTER */
+
+#ifndef LOG_ROT_RDQ_LEAVE
+#define LOG_ROT_RDQ_LEAVE(ercd)
+#endif /* LOG_ROT_RDQ_LEAVE */
+
+#ifndef LOG_IROT_RDQ_ENTER
+#define LOG_IROT_RDQ_ENTER(tskpri)
+#endif /* LOG_IROT_RDQ_ENTER */
+
+#ifndef LOG_IROT_RDQ_LEAVE
+#define LOG_IROT_RDQ_LEAVE(ercd)
+#endif /* LOG_IROT_RDQ_LEAVE */
+
+#ifndef LOG_GET_TID_ENTER
+#define LOG_GET_TID_ENTER(p_tskid)
+#endif /* LOG_GET_TID_ENTER */
+
+#ifndef LOG_GET_TID_LEAVE
+#define LOG_GET_TID_LEAVE(ercd, tskid)
+#endif /* LOG_GET_TID_LEAVE */
+
+#ifndef LOG_IGET_TID_ENTER
+#define LOG_IGET_TID_ENTER(p_tskid)
+#endif /* LOG_IGET_TID_ENTER */
+
+#ifndef LOG_IGET_TID_LEAVE
+#define LOG_IGET_TID_LEAVE(ercd, tskid)
+#endif /* LOG_IGET_TID_LEAVE */
+
+#ifndef LOG_LOC_CPU_ENTER
+#define LOG_LOC_CPU_ENTER()
+#endif /* LOG_LOC_CPU_ENTER */
+
+#ifndef LOG_LOC_CPU_LEAVE
+#define LOG_LOC_CPU_LEAVE(ercd)
+#endif /* LOG_LOC_CPU_LEAVE */
+
+#ifndef LOG_ILOC_CPU_ENTER
+#define LOG_ILOC_CPU_ENTER()
+#endif /* LOG_ILOC_CPU_ENTER */
+
+#ifndef LOG_ILOC_CPU_LEAVE
+#define LOG_ILOC_CPU_LEAVE(ercd)
+#endif /* LOG_ILOC_CPU_LEAVE */
+
+#ifndef LOG_UNL_CPU_ENTER
+#define LOG_UNL_CPU_ENTER()
+#endif /* LOG_UNL_CPU_ENTER */
+
+#ifndef LOG_UNL_CPU_LEAVE
+#define LOG_UNL_CPU_LEAVE(ercd)
+#endif /* LOG_UNL_CPU_LEAVE */
+
+#ifndef LOG_IUNL_CPU_ENTER
+#define LOG_IUNL_CPU_ENTER()
+#endif /* LOG_IUNL_CPU_ENTER */
+
+#ifndef LOG_IUNL_CPU_LEAVE
+#define LOG_IUNL_CPU_LEAVE(ercd)
+#endif /* LOG_IUNL_CPU_LEAVE */
+
+#ifndef LOG_DIS_DSP_ENTER
+#define LOG_DIS_DSP_ENTER()
+#endif /* LOG_DIS_DSP_ENTER */
+
+#ifndef LOG_DIS_DSP_LEAVE
+#define LOG_DIS_DSP_LEAVE(ercd)
+#endif /* LOG_DIS_DSP_LEAVE */
+
+#ifndef LOG_ENA_DSP_ENTER
+#define LOG_ENA_DSP_ENTER()
+#endif /* LOG_ENA_DSP_ENTER */
+
+#ifndef LOG_ENA_DSP_LEAVE
+#define LOG_ENA_DSP_LEAVE(ercd)
+#endif /* LOG_ENA_DSP_LEAVE */
+
+#ifndef LOG_SNS_CTX_ENTER
+#define LOG_SNS_CTX_ENTER()
+#endif /* LOG_SNS_CTX_ENTER */
+
+#ifndef LOG_SNS_CTX_LEAVE
+#define LOG_SNS_CTX_LEAVE(state)
+#endif /* LOG_SNS_CTX_LEAVE */
+
+#ifndef LOG_SNS_LOC_ENTER
+#define LOG_SNS_LOC_ENTER()
+#endif /* LOG_SNS_LOC_ENTER */
+
+#ifndef LOG_SNS_LOC_LEAVE
+#define LOG_SNS_LOC_LEAVE(state)
+#endif /* LOG_SNS_LOC_LEAVE */
+
+#ifndef LOG_SNS_DSP_ENTER
+#define LOG_SNS_DSP_ENTER()
+#endif /* LOG_SNS_DSP_ENTER */
+
+#ifndef LOG_SNS_DSP_LEAVE
+#define LOG_SNS_DSP_LEAVE(state)
+#endif /* LOG_SNS_DSP_LEAVE */
+
+#ifndef LOG_SNS_DPN_ENTER
+#define LOG_SNS_DPN_ENTER()
+#endif /* LOG_SNS_DPN_ENTER */
+
+#ifndef LOG_SNS_DPN_LEAVE
+#define LOG_SNS_DPN_LEAVE(state)
+#endif /* LOG_SNS_DPN_LEAVE */
+
+#ifndef LOG_SNS_KER_ENTER
+#define LOG_SNS_KER_ENTER()
+#endif /* LOG_SNS_KER_ENTER */
+
+#ifndef LOG_SNS_KER_LEAVE
+#define LOG_SNS_KER_LEAVE(state)
+#endif /* LOG_SNS_KER_LEAVE */
+
+/*
+ *  ^XNÌDæÊÌñ]
+ */
+#ifdef TOPPERS_rot_rdq
+
+ER
+rot_rdq(PRI tskpri)
+{
+	uint_t	pri;
+	ER		ercd;
+
+	LOG_ROT_RDQ_ENTER(tskpri);
+	CHECK_TSKCTX_UNL();
+	CHECK_TPRI_SELF(tskpri);
+
+	t_lock_cpu();
+	pri = (tskpri == TPRI_SELF) ? p_runtsk->bpriority : INT_PRIORITY(tskpri);
+	if (rotate_ready_queue(pri)) {
+		dispatch();
+	}
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_ROT_RDQ_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_rot_rdq */
+
+/*
+ *  ^XNÌDæÊÌñ]iñ^XNReLXgpj
+ */
+#ifdef TOPPERS_irot_rdq
+
+ER
+irot_rdq(PRI tskpri)
+{
+	ER		ercd;
+
+	LOG_IROT_RDQ_ENTER(tskpri);
+	CHECK_INTCTX_UNL();
+	CHECK_TPRI(tskpri);
+
+	i_lock_cpu();
+	if (rotate_ready_queue(INT_PRIORITY(tskpri))) {
+		reqflg = true;
+	}
+	ercd = E_OK;
+	i_unlock_cpu();
+
+  error_exit:
+	LOG_IROT_RDQ_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_irot_rdq */
+
+/*
+ *  ÀsóÔÌ^XNIDÌQÆ
+ */
+#ifdef TOPPERS_get_tid
+
+ER
+get_tid(ID *p_tskid)
+{
+	ER		ercd;
+
+	LOG_GET_TID_ENTER(p_tskid);
+	CHECK_TSKCTX_UNL();
+
+	t_lock_cpu();
+	*p_tskid = TSKID(p_runtsk);
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_GET_TID_LEAVE(ercd, *p_tskid);
+	return(ercd);
+}
+
+#endif /* TOPPERS_get_tid */
+
+/*
+ *  ÀsóÔÌ^XNIDÌQÆiñ^XNReLXgpj
+ */
+#ifdef TOPPERS_iget_tid
+
+ER
+iget_tid(ID *p_tskid)
+{
+	ER		ercd;
+
+	LOG_IGET_TID_ENTER(p_tskid);
+	CHECK_INTCTX_UNL();
+
+	i_lock_cpu();
+	*p_tskid = (p_runtsk == NULL) ? TSK_NONE : TSKID(p_runtsk);
+	ercd = E_OK;
+	i_unlock_cpu();
+
+  error_exit:
+	LOG_IGET_TID_LEAVE(ercd, *p_tskid);
+	return(ercd);
+}
+
+#endif /* TOPPERS_iget_tid */
+
+/*
+ *  CPUbNóÔÖÌÚs
+ */
+#ifdef TOPPERS_loc_cpu
+
+ER
+loc_cpu(void)
+{
+	ER		ercd;
+
+	LOG_LOC_CPU_ENTER();
+	CHECK_TSKCTX();
+
+	if (!t_sense_lock()) {
+		t_lock_cpu();
+	}
+	ercd = E_OK;
+
+  error_exit:
+	LOG_LOC_CPU_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_loc_cpu */
+
+/*
+ *  CPUbNóÔÖÌÚsiñ^XNReLXgpj
+ */
+#ifdef TOPPERS_iloc_cpu
+
+ER
+iloc_cpu(void)
+{
+	ER		ercd;
+
+	LOG_ILOC_CPU_ENTER();
+	CHECK_INTCTX();
+
+	if (!i_sense_lock()) {
+		i_lock_cpu();
+	}
+	ercd = E_OK;
+
+  error_exit:
+	LOG_ILOC_CPU_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_iloc_cpu */
+
+/*
+ *  CPUbNóÔÌð
+ *
+ *  CPUbNÍCfBXpb`ªKvÆÈéT[rXR[ðÄÑo·±
+ *  ÆÍÅ«È¢½ßCCPUbNóÔÌðÉfBXpb`ðN®·é
+ *  KvÍÈ¢D
+ */
+#ifdef TOPPERS_unl_cpu
+
+ER
+unl_cpu(void)
+{
+	ER		ercd;
+
+	LOG_UNL_CPU_ENTER();
+	CHECK_TSKCTX();
+
+	if (t_sense_lock()) {
+		t_unlock_cpu();
+	}
+	ercd = E_OK;
+
+  error_exit:
+	LOG_UNL_CPU_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_unl_cpu */
+
+/*
+ *  CPUbNóÔÌðiñ^XNReLXgpj
+ *
+ *  CPUbNÍCfBXpb`ªKvÆÈéT[rXR[ðÄÑo·±
+ *  ÆÍÅ«È¢½ßCCPUbNóÔÌðÉfBXpb`ÌN®ðv
+ *  ·éKvÍÈ¢D
+ */
+#ifdef TOPPERS_iunl_cpu
+
+ER
+iunl_cpu(void)
+{
+	ER		ercd;
+
+	LOG_IUNL_CPU_ENTER();
+	CHECK_INTCTX();
+
+	if (i_sense_lock()) {
+		i_unlock_cpu();
+	}
+	ercd = E_OK;
+
+  error_exit:
+	LOG_IUNL_CPU_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_iunl_cpu */
+
+/*
+ *  fBXpb`ÌÖ~
+ */
+#ifdef TOPPERS_dis_dsp
+
+ER
+dis_dsp(void)
+{
+	ER		ercd;
+
+	LOG_DIS_DSP_ENTER();
+	CHECK_TSKCTX_UNL();
+
+	t_lock_cpu();
+	disdsp = true;
+	dspflg = false;
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_DIS_DSP_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_dis_dsp */
+
+/*
+ *  fBXpb`ÌÂ
+ */
+#ifdef TOPPERS_ena_dsp
+
+ER
+ena_dsp(void)
+{
+	ER		ercd;
+
+	LOG_ENA_DSP_ENTER();
+	CHECK_TSKCTX_UNL();
+
+	t_lock_cpu();
+	disdsp = false;
+	if (ipmflg) {
+		dspflg = true;
+		if (p_runtsk != p_schedtsk) {
+			dispatch();
+		}
+	}
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_ENA_DSP_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ena_dsp */
+
+/*
+ *  ReLXgÌQÆ
+ */
+#ifdef TOPPERS_sns_ctx
+
+bool_t
+sns_ctx(void)
+{
+	bool_t	state;
+
+	LOG_SNS_CTX_ENTER();
+	state = sense_context() ? true : false;
+	LOG_SNS_CTX_LEAVE(state);
+	return(state);
+}
+
+#endif /* TOPPERS_sns_ctx */
+
+/*
+ *  CPUbNóÔÌQÆ
+ */
+#ifdef TOPPERS_sns_loc
+
+bool_t
+sns_loc(void)
+{
+	bool_t	state;
+
+	LOG_SNS_LOC_ENTER();
+	state = x_sense_lock() ? true : false;
+	LOG_SNS_LOC_LEAVE(state);
+	return(state);
+}
+
+#endif /* TOPPERS_sns_loc */
+
+/*
+ *  fBXpb`Ö~óÔÌQÆ
+ */
+#ifdef TOPPERS_sns_dsp
+
+bool_t
+sns_dsp(void)
+{
+	bool_t	state;
+
+	LOG_SNS_DSP_ENTER();
+	state = disdsp;
+	LOG_SNS_DSP_LEAVE(state);
+	return(state);
+}
+
+#endif /* TOPPERS_sns_dsp */
+
+/*
+ *  fBXpb`Û¯óÔÌQÆ
+ */
+#ifdef TOPPERS_sns_dpn
+
+bool_t
+sns_dpn(void)
+{
+	bool_t	state;
+
+	LOG_SNS_DPN_ENTER();
+	state = (sense_context() || t_sense_lock() || !dspflg) ? true : false;
+	LOG_SNS_DPN_LEAVE(state);
+	return(state);
+}
+
+#endif /* TOPPERS_sns_dpn */
+
+/*
+ *  J[lñ®ìóÔÌQÆ
+ */
+#ifdef TOPPERS_sns_ker
+
+bool_t
+sns_ker(void)
+{
+	bool_t	state;
+
+	LOG_SNS_KER_ENTER();
+	state = kerflg ? false : true;
+	LOG_SNS_KER_LEAVE(state);
+	return(state);
+}
+
+#endif /* TOPPERS_sns_ker */
Index: /asp_ewarm/asp-1.7.0/extension/mutex/kernel/task.c
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/kernel/task.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/kernel/task.c	(revision 61)
@@ -0,0 +1,505 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  $Id: task.c 2018 2010-12-31 13:43:05Z ertl-hiro $
+ */
+
+/*
+ *		^XNÇW
+[
+ */
+
+#include "kernel_impl.h"
+#include "wait.h"
+#include "task.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_TEX_ENTER
+#define LOG_TEX_ENTER(p_tcb, texptn)
+#endif /* LOG_TEX_ENTER */
+
+#ifndef LOG_TEX_LEAVE
+#define LOG_TEX_LEAVE(p_tcb)
+#endif /* LOG_TEX_LEAVE */
+
+#ifdef TOPPERS_tskini
+
+/*
+ *  ÀsóÔÌ^XN
+ */
+TCB		*p_runtsk;
+
+/*
+ *  ÅDæÊÌ^XN
+ */
+TCB		*p_schedtsk;
+
+/*
+ *  ^XNfBXpb`^^XNáO[`N®vtO
+ */
+bool_t	reqflg;
+
+/*
+ *  ÝDæx}XNSðóÔ
+ */
+bool_t	ipmflg;
+
+/*
+ *  fBXpb`Ö~óÔ
+ */
+bool_t	disdsp;
+
+/*
+ *  ^XNfBXpb`Â\óÔ
+ */
+bool_t	dspflg;
+
+/*
+ *  fBL
+[
+ */
+QUEUE	ready_queue[TNUM_TPRI];
+
+/*
+ *  fBL
+[T[`Ì½ßÌrbg}bv
+ */
+uint16_t	ready_primap;
+
+/*
+ *  ^XNÇW
+[Ìú»
+ */
+void
+initialize_task(void)
+{
+	uint_t	i, j;
+	TCB		*p_tcb;
+
+	p_runtsk = p_schedtsk = NULL;
+	reqflg = false;
+	ipmflg = true;
+	disdsp = false;
+	dspflg = true;
+
+	for (i = 0; i < TNUM_TPRI; i++) {
+		queue_initialize(&(ready_queue[i]));
+	}
+	ready_primap = 0U;
+
+	for (i = 0; i < tnum_tsk; i++) {
+		j = INDEX_TSK(torder_table[i]);
+		p_tcb = &(tcb_table[j]);
+		p_tcb->p_tinib = &(tinib_table[j]);
+		p_tcb->actque = false;
+		make_dormant(p_tcb);
+		queue_initialize(&(p_tcb->mutex_queue));
+		if ((p_tcb->p_tinib->tskatr & TA_ACT) != 0U) {
+			make_active(p_tcb);
+		}
+	}
+}
+
+#endif /* TOPPERS_tskini */
+
+/*
+ *  rbg}bvT[`Ö
+ *
+ *  bitmapàÌ1ÌrbgÌàCÅàºÊiEjÌàÌðT[`µC»Ìrb
+ *  gÔðÔ·DrbgÔÍCÅºÊrbgð0Æ·éDbitmapÉ0ðwè
+ *  µÄÍÈçÈ¢D±ÌÖÅÍCbitmapª16rbgÅ é±Æð¼èµC
+ *  uint16_t^ÆµÄ¢éD
+ *
+ *  rbgT[`½ßðÂvZbTÅÍCrbgT[`½ßðg¤æ¤É
+ *  «¼µ½ûªø¦ªÇ¢êª éD±Ìæ¤ÈêÉÍC^[Qbg
+ *  Ë¶ÅrbgT[`½ßðgÁ½bitmap_searchðè`µC
+ *  OMIT_BITMAP_SEARCHð}Nè`·êÎæ¢DÜ½CrbgT[`½ßÌ
+ *  T[`ûüªtÈÇÌRÅDæxÆrbgÆÌÎðÏXµ½¢êÉ
+ *  ÍCPRIMAP_BITð}Nè`·êÎæ¢D
+ *
+ *  Ü½CCuÉffsª éÈçCÌæ¤Éè`µÄCuÖð
+ *  gÁ½ûªø¦ªÇ¢Â\«à éD
+ *		#define	bitmap_search(bitmap) (ffs(bitmap) - 1)
+ */
+#ifndef PRIMAP_BIT
+#define	PRIMAP_BIT(pri)		(1U << (pri))
+#endif /* PRIMAP_BIT */
+
+#ifndef OMIT_BITMAP_SEARCH
+
+static const unsigned char bitmap_search_table[] = { 0, 1, 0, 2, 0, 1, 0,
+												3, 0, 1, 0, 2, 0, 1, 0 };
+
+Inline uint_t
+bitmap_search(uint16_t bitmap)
+{
+	uint_t	n = 0U;
+
+	assert(bitmap != 0U);
+	if ((bitmap & 0x00ffU) == 0U) {
+		bitmap >>= 8;
+		n += 8;
+	}
+	if ((bitmap & 0x0fU) == 0U) {
+		bitmap >>= 4;
+		n += 4;
+	}
+	return(n + bitmap_search_table[(bitmap & 0x0fU) - 1]);
+}
+
+#endif /* OMIT_BITMAP_SEARCH */
+
+/*
+ *  Dæxrbg}bvªó©Ì`FbN
+ */
+Inline bool_t
+primap_empty(void)
+{
+	return(ready_primap == 0U);
+}
+
+/*
+ *  Dæxrbg}bvÌT[`
+ */
+Inline uint_t
+primap_search(void)
+{
+	return(bitmap_search(ready_primap));
+}
+
+/*
+ *  Dæxrbg}bvÌZbg
+ */
+Inline void
+primap_set(uint_t pri)
+{
+	ready_primap |= PRIMAP_BIT(pri);
+}
+
+/*
+ *  Dæxrbg}bvÌNA
+ */
+Inline void
+primap_clear(uint_t pri)
+{
+	ready_primap &= ~PRIMAP_BIT(pri);
+}
+
+/*
+ *  ÅDæÊ^XNÌT[`
+ */
+#ifdef TOPPERS_tsksched
+
+TCB *
+search_schedtsk(void)
+{
+	uint_t	schedpri;
+
+	schedpri = primap_search();
+	return((TCB *)(ready_queue[schedpri].p_next));
+}
+
+#endif /* TOPPERS_tsksched */
+
+/*
+ *  ÀsÅ«éóÔÖÌJÚ
+ *
+ *  ÅDæÊÌ^XNðXV·éÌÍCÀsÅ«é^XNªÈ©Á½ê
+ *  ÆCp_tcbÌDæxªÅDæÊÌ^XNÌDæxæèà¢êÅ 
+ *  éD
+ */
+#ifdef TOPPERS_tskrun
+
+bool_t
+make_runnable(TCB *p_tcb)
+{
+	uint_t	pri = p_tcb->priority;
+
+	queue_insert_prev(&(ready_queue[pri]), &(p_tcb->task_queue));
+	primap_set(pri);
+
+	if (p_schedtsk == (TCB *) NULL || pri < p_schedtsk->priority) {
+		p_schedtsk = p_tcb;
+		return(dspflg);
+	}
+	return(false);
+}
+
+#endif /* TOPPERS_tskrun */
+
+/*
+ *  ÀsÅ«éóÔ©ç¼ÌóÔÖÌJÚ
+ *
+ *  ÅDæÊÌ^XNðXV·éÌÍCp_tcbªÅDæÊÌ^XNÅ
+ *   Á½êÅ éDp_tcbÆ¯¶DæxÌ^XNª¼É éêÍCp_tcb
+ *  ÌÌ^XNªÅDæÊÉÈéD»¤ÅÈ¢êÍCfBL
+[ð
+ *  T[`·éKvª éD
+ */
+#ifdef TOPPERS_tsknrun
+
+bool_t
+make_non_runnable(TCB *p_tcb)
+{
+	uint_t	pri = p_tcb->priority;
+	QUEUE	*p_queue = &(ready_queue[pri]);
+
+	queue_delete(&(p_tcb->task_queue));
+	if (queue_empty(p_queue)) {
+		primap_clear(pri);
+		if (p_schedtsk == p_tcb) {
+			p_schedtsk = primap_empty() ? (TCB *) NULL : search_schedtsk();
+			return(dspflg);
+		}
+	}
+	else {
+		if (p_schedtsk == p_tcb) {
+			p_schedtsk = (TCB *)(p_queue->p_next);
+			return(dspflg);
+		}
+	}
+	return(false);
+}
+
+#endif /* TOPPERS_tsknrun */
+
+/*
+ *  x~óÔÖÌJÚ
+ */
+#ifdef TOPPERS_tskdmt
+
+void
+make_dormant(TCB *p_tcb)
+{
+	p_tcb->tstat = TS_DORMANT;
+	p_tcb->bpriority = p_tcb->priority = p_tcb->p_tinib->ipriority;
+	p_tcb->wupque = false;
+	p_tcb->enatex = false;
+	p_tcb->texptn = 0U;
+	LOG_TSKSTAT(p_tcb);
+}
+
+#endif /* TOPPERS_tskdmt */
+
+/*
+ *  x~óÔ©çÀsÅ«éóÔÖÌJÚ
+ */
+#ifdef TOPPERS_tskact
+
+bool_t
+make_active(TCB *p_tcb)
+{
+	activate_context(p_tcb);
+	p_tcb->tstat = TS_RUNNABLE;
+	LOG_TSKSTAT(p_tcb);
+	return(make_runnable(p_tcb));
+}
+
+#endif /* TOPPERS_tskact */
+
+/*
+ *  ^XNÌDæxÌÏX
+ *
+ *  ^XNªÀsÅ«éóÔÌêÉÍCfBL
+[ÌÅÌÊuðÏX·
+ *  éDIuWFNgÌÒ¿L
+[ÌÅÒ¿óÔÉÈÁÄ¢éêÉÍCÒ
+ *  ¿L
+[ÌÅÌÊuðÏX·éD
+ *
+ *  ÅDæÊÌ^XNðXV·éÌÍC(1) p_tcbªÅDæÊÌ^X
+ *  NÅ ÁÄC»ÌDæxðº°½êC(2) p_tcbªÅDæÊÌ^X
+ *  NÅÍÈ­CÏXãÌDæxªÅDæÊÌ^XNÌDæxæèà¢
+ *  êÅ éD(1)ÌêÉÍCfBL
+[ðT[`·éKvª éD
+ */
+#ifdef TOPPERS_tskpri
+
+bool_t
+change_priority(TCB *p_tcb, uint_t newpri, bool_t mtxmode)
+{
+	uint_t	oldpri;
+
+	oldpri = p_tcb->priority;
+	p_tcb->priority = newpri;
+
+	if (TSTAT_RUNNABLE(p_tcb->tstat)) {
+		/*
+		 *  ^XNªÀsÅ«éóÔÌê
+		 */
+		queue_delete(&(p_tcb->task_queue));
+		if (queue_empty(&(ready_queue[oldpri]))) {
+			primap_clear(oldpri);
+		}
+		if (mtxmode) {
+			queue_insert_next(&(ready_queue[newpri]), &(p_tcb->task_queue));
+		}
+		else {
+			queue_insert_prev(&(ready_queue[newpri]), &(p_tcb->task_queue));
+		}
+		primap_set(newpri);
+
+		if (p_schedtsk == p_tcb) {
+			if (newpri >= oldpri) {
+				p_schedtsk = search_schedtsk();
+				return(p_schedtsk != p_tcb && dspflg);
+			}
+		}
+		else {
+			if (mtxmode ? newpri <= p_schedtsk->priority
+						: newpri < p_schedtsk->priority) {
+				p_schedtsk = p_tcb;
+				return(dspflg);
+			}
+		}
+	}
+	else {
+		if (TSTAT_WAIT_WOBJCB(p_tcb->tstat)) {
+			/*
+			 *  ^XNªC¯úEÊMIuWFNgÌÇubNÌ¤Ê
+			 *  ªiWOBJCBjÌÒ¿L
+[ÉÂÈªêÄ¢éê
+			 */
+			wobj_change_priority(((WINFO_WOBJ *)(p_tcb->p_winfo))->p_wobjcb,
+																	p_tcb);
+		}
+	}
+	return(false);
+}
+
+#endif /* TOPPERS_tskpri */
+
+/*
+ *  fBL
+[Ìñ]
+ *
+ *  ÅDæÊÌ^XNðXV·éÌÍCÅDæÊÌ^XNª^XNL
+ *  
+[ÌöÉÚ®µ½êÅ éD
+ */
+#ifdef TOPPERS_tskrot
+
+bool_t
+rotate_ready_queue(uint_t pri)
+{
+	QUEUE	*p_queue = &(ready_queue[pri]);
+	QUEUE	*p_entry;
+
+	if (!queue_empty(p_queue) && p_queue->p_next->p_next != p_queue) {
+		p_entry = queue_delete_next(p_queue);
+		queue_insert_prev(p_queue, p_entry);
+		if (p_schedtsk == (TCB *) p_entry) {
+			p_schedtsk = (TCB *)(p_queue->p_next);
+			return(dspflg);
+		}
+	}
+	return(false);
+}
+
+#endif /* TOPPERS_tskrot */
+
+/*
+ *  ^XNáO[`ÌÄoµ
+ *
+ *  ASPJ[lÅÍC^XNáO[`àÅCPUbNóÔÉJÚµC
+ *  ³ÌóÔÉß³¸É^[µ½êCJ[lª³ÌóÔÉß·D
+ */
+#ifdef TOPPERS_tsktex
+
+void
+call_texrtn(void)
+{
+	TEXPTN	texptn;
+	bool_t	saved_disdsp;
+
+	saved_disdsp = disdsp;
+	p_runtsk->enatex = false;
+	do {
+		texptn = p_runtsk->texptn;
+		p_runtsk->texptn = 0U;
+
+		t_unlock_cpu();
+		LOG_TEX_ENTER(p_runtsk, texptn);
+		(*((TEXRTN)(p_runtsk->p_tinib->texrtn)))(texptn,
+												p_runtsk->p_tinib->exinf);
+		LOG_TEX_LEAVE(p_runtsk);
+		if (!t_sense_lock()) {
+			t_lock_cpu();
+		}
+		if (!ipmflg) {
+			t_set_ipm(TIPM_ENAALL);
+			ipmflg = true;
+		}
+		disdsp = saved_disdsp;
+		dspflg = !disdsp;
+		p_runtsk->enatex = false;
+		if (p_runtsk != p_schedtsk && dspflg) {
+			/*
+			 *  ±±ÅdispatchðÄÑo·ÍCÝÄAÄoµÉÈÁÄ
+			 *  ¢éªCdispatchðÄÔOÉp_runtsk->enatexðfalseÉµÄ
+			 *  ¨¯ÎxáªÈ¢D»ÌRÉÂ¢ÄÍCuTOPPERS/ASP J[
+			 *  l ÝvvðQÆÌ±ÆD
+			 */
+			dispatch();
+		}
+	} while (p_runtsk->texptn != 0U);
+	p_runtsk->enatex = true;
+}
+
+/*
+ *  ^XNáO[`ÌN®
+ */
+#ifndef OMIT_CALLTEX
+
+void
+calltex(void)
+{
+	if (p_runtsk->enatex && p_runtsk->texptn != 0U && ipmflg) {
+		call_texrtn();
+	}
+}
+
+#endif /* OMIT_CALLTEX */
+#endif /* TOPPERS_tsktex */
Index: /asp_ewarm/asp-1.7.0/extension/mutex/kernel/task.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/kernel/task.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/kernel/task.h	(revision 61)
@@ -0,0 +1,532 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  $Id: task.h 2018 2010-12-31 13:43:05Z ertl-hiro $
+ */
+
+/*
+ *		^XNÇW
+[
+ */
+
+#ifndef TOPPERS_TASK_H
+#define TOPPERS_TASK_H
+
+#include <queue.h>
+#include "time_event.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_TSKSTAT
+#define LOG_TSKSTAT(p_tcb)
+#endif /* LOG_TSKSTAT */
+
+/*
+ *  ^XNDæxÌà\»EO\»Ï·}N
+ */
+#define INT_PRIORITY(x)		((uint_t)((x) - TMIN_TPRI))
+#define EXT_TSKPRI(x)		((PRI)(x) + TMIN_TPRI)
+
+/*
+ *  ^XNóÔÌà\»
+ *
+ *  TCBÌ^XNóÔÅÍCÀsóÔiRUNNINGjÆÀsÂ\óÔiREADYj
+ *  ÍæÊµÈ¢D¼óÔðÌµÄCÀsÅ«éóÔiRUNNABLEjÆÄÔD
+ *  ñdÒ¿óÔÍC(TS_WAITING | TS_SUSPENDED)Å\·DTS_WAIT_???ÍÒ
+ *  ¿vöð\µCÒ¿óÔiñdÒ¿óÔðÜÞjÌêÉÌÝÝè·éD
+ */
+#define TS_DORMANT		0x00U			/* x~óÔ */
+#define TS_RUNNABLE		0x01U			/* ÀsÅ«éóÔ */
+#define TS_WAITING		0x02U			/* Ò¿óÔ */
+#define TS_SUSPENDED	0x04U			/* ­§Ò¿óÔ */
+
+#define TS_WAIT_DLY		(0x00U << 3)	/* ÔoßÒ¿ */
+#define TS_WAIT_SLP		(0x01U << 3)	/* N°Ò¿ */
+#define TS_WAIT_RDTQ	(0x02U << 3)	/* f[^L
+[©çÌóMÒ¿ */
+#define TS_WAIT_RPDQ	(0x03U << 3)	/* Dæxf[^L
+[©çÌóMÒ¿ */
+#define TS_WAIT_SEM		(0x04U << 3)	/* Z}tH¹Ìl¾Ò¿ */
+#define TS_WAIT_FLG		(0x05U << 3)	/* CxgtOÒ¿ */
+#define TS_WAIT_SDTQ	(0x06U << 3)	/* f[^L
+[ÖÌMÒ¿ */
+#define TS_WAIT_SPDQ	(0x07U << 3)	/* Dæxf[^L
+[ÖÌMÒ¿ */
+#define TS_WAIT_MBX		(0x08U << 3)	/* [{bNX©çÌóMÒ¿ */
+#define TS_WAIT_MPF		(0x09U << 3)	/* Åè·ubNÌl¾Ò¿ */
+#define TS_WAIT_MTX		(0x0aU << 3)	/* ~
+[ebNXÌbNÒ¿ */
+
+/*
+ *  ^XNóÔ»Ê}N
+ *
+ *  TSTAT_DORMANTÍ^XNªx~óÔÅ é©Ç¤©ðCTSTAT_RUNNABLEÍ
+ *  ^XNªÀsÅ«éóÔÅ é©Ç¤©ð»Ê·éDTSTAT_WAITINGÍÒ
+ *  ¿óÔÆñdÒ¿óÔÌ¢¸ê©Å é©Ç¤©ðCTSTAT_SUSPENDEDÍ
+ *  ­§Ò¿óÔÆñdÒ¿óÔÌ¢¸ê©Å é©Ç¤©ð»Ê·éD
+ */
+#define TSTAT_DORMANT(tstat)	((tstat) == TS_DORMANT)
+#define TSTAT_RUNNABLE(tstat)	(((tstat) & TS_RUNNABLE) != 0U)
+#define TSTAT_WAITING(tstat)	(((tstat) & TS_WAITING) != 0U)
+#define TSTAT_SUSPENDED(tstat)	(((tstat) & TS_SUSPENDED) != 0U)
+
+/*
+ *  ^XNÒ¿vö»Ê}N
+ *
+ *  TSTAT_WAIT_SLPÍ^XNªN°Ò¿Å é©Ç¤©ðCTSTAT_WAIT_WOBJ
+ *  Í^XNª¯úEÊMIuWFNgÉÎ·éÒ¿Å é©i¾¢·¦éÆC
+ *  ¯úÊMIuWFNgÌÒ¿L
+[ÉÂÈªêÄ¢é©jÇ¤©ð»Ê·
+ *  éDÜ½CTSTAT_WAIT_WOBJCBÍ^XNª¯úEÊMIuWFNgÌÇ
+ *  ubNÌ¤ÊªiWOBJCBjÌÒ¿L
+[ÉÂÈªêÄ¢é©Ç¤©ð
+ *  »Ê·éD
+ *
+ *  TSTAT_WAIT_SLPÍCCÓÌ^XNóÔÌ©çC^XNªN°Ò¿Å é
+ *  ±Æð»ÊÅ«éD·Èí¿CTSTAT_WAITINGÉæèÒ¿óÔÅ é±Æð
+ *  »Ê¹¸ÉCTSTAT_SLP¾¯ðp¢ÄN°Ò¿óÔÅ é±Æð»ÊÅ«éD
+ *  ±êðø¦IÉÀ»·é½ßÉCTS_WAIT_SLPÌlðC(0x00U << 3)ÅÍÈ
+ *  ­(0x01U << 3)ÆµÄ¢éD»Ì½ßC^XNªÔoßÒ¿óÔÅ é
+ *  ±Æð»Ê·é½ßÌTSTAT_WAIT_DLYðCTSTAT_WAIT_SLPÆ¯lÌû@Å
+ *  À»·é±ÆÍÅ«È¢D
+ */
+#define TS_WAIT_MASK	(0x0fU << 3)	/* Ò¿vöÌæoµ}XN */
+
+#define TSTAT_WAIT_SLP(tstat)		(((tstat) & TS_WAIT_MASK) == TS_WAIT_SLP)
+#define TSTAT_WAIT_WOBJ(tstat)		(((tstat) & TS_WAIT_MASK) >= TS_WAIT_RDTQ)
+#define TSTAT_WAIT_WOBJCB(tstat)	(((tstat) & TS_WAIT_MASK) >= TS_WAIT_SEM)
+#define TSTAT_WAIT_MTX(tstat)		(((tstat) & TS_WAIT_MASK) == TS_WAIT_MTX)
+
+/*
+ *  Ò¿îñubNiWINFOjÌè`
+ *
+ *  ^XNªÒ¿óÔÌÔÍCTCB¨æÑ»Ìp_winfoÅw³êéWINFOðÌ
+ *  æ¤ÉÝèµÈ¯êÎÈçÈ¢D
+ *
+ *  (a) TCBÌ^XNóÔðÒ¿óÔiTS_WAITINGjÉ·éD»ÌÛÉCÒ¿
+ *  vöiTS_WAIT_???jàÝè·éD
+ *
+ *  (b) ^CAEgðÄ·é½ßÉC^CCxgubNðo^·éD
+ *  o^·é^CCxgubNÍCÒ¿ÉüéT[rXR[Ö
+ *  Ì[JÏÆµÄmÛµC»êÖÌ|C^ðWINFOÌp_tmevtbÉL
+ *  ¯·éD^CAEgÌÄªKvÈ¢êiivÒ¿ÌêjÉÍC
+ *  p_tmevtbðNULLÉ·éD
+ *
+ *  ¯úEÊMIuWFNgÉÎ·éÒ¿óÔÌêÉÍCWÌWINFOÉ
+ *  p_wobjcbtB[hðÇÁµ½\¢ÌiWINFO_WOBJCwait.hÅè`jðg
+ *  ¤DÜ½CÈºÌ(c)`(e)ÌÝèðs¤Kvª éD¯úEÊMIuWF
+ *  NgÉÖWµÈ¢Ò¿iN°Ò¿CÔoßÒ¿jÌêÉÍC(c)`(e)
+ *  ÍKvÈ¢D
+ *
+ *  (c) TCBðÒ¿ÎÛÌ¯úEÊMIuWFNgÌÒ¿L
+[ÉÂÈ®DÒ
+ *  ¿L
+[ÉÂÈ®½ßÉCtask_queueðg¤D
+ *
+ *  (d) Ò¿ÎÛÌ¯úEÊMIuWFNgÌÇubNÖÌ|C^ðC
+ *  WINFO_WOBJÌp_wobjcbÉL¯·éD
+ *
+ *  (e) Ò¿ÎÛÌ¯úEÊMIuWFNgÉË¶µÄL¯·é±ÆªKvÈ
+ *  îñª éêÉÍCWINFO_WOBJÉKvÈîñÌ½ßÌtB[hðÇÁ
+ *  µ½\¢Ìðè`µCWINFO_WOBJÌãíèÉp¢éD
+ *
+ *  Ò¿óÔðð·éÛÉÍCÒ¿ðµ½^XNÉÎ·éÔlðWINFOÌ
+ *  wercdÉÝè·éDwercdªKvÈÌÍÒ¿ðÈ~Å éÌÉÎµÄC
+ *  p_tmevtbÍÒ¿ðãÍKvÈ¢½ßCßñÌ½ßÉ¤pÌðgÁ
+ *  Ä¢éD»Ì½ßCwercdÖG[R[hðÝè·éÌÍC^CCxg
+ *  ubNðo^ðµ½ãÉµÈ¯êÎÈçÈ¢D
+ */
+typedef union waiting_information {
+	ER		wercd;			/* Ò¿ðÌG[R[h */
+	TMEVTB	*p_tmevtb;		/* Ò¿óÔpÌ^CCxgubN */
+} WINFO;
+
+/*
+ *  ^XNú»ubN
+ *
+ *  ^XNÉÖ·éîñðClªÏíçÈ¢½ßÉROMÉu¯éªi^XN
+ *  ú»ubNjÆClªÏ»·é½ßÉRAMÉu©È¯êÎÈçÈ¢
+ *  ªi^XNÇubNCTCBjÉª£µCTCBàÉÎ·é^XNú»
+ *  ubNðw·|C^ðüêéD^XNú»ubNàÉÎ·é
+ *  TCBðw·|C^ðüêéû@ÌûªCRAMÌßñÌÏ_©çÍ]Üµ¢
+ *  ªCÀsø¦ª«­Èé½ßÉÌpµÄ¢È¢D¼ÌIuWFNgÉÂ¢
+ *  Äà¯lÉµ¤D
+ *
+ *  ^XNú»ubNÉÍCDEF_TEXÅè`³êé^XNáO[`
+ *  ÉÖ·éîñàÜÞD
+ */
+typedef struct task_initialization_block {
+	ATR			tskatr;			/* ^XN®« */
+	intptr_t	exinf;			/* ^XNÌg£îñ */
+	TASK		task;			/* ^XNÌN®Ôn */
+	uint_t		ipriority;		/* ^XNÌN®Dæxià\»j */
+
+#ifdef USE_TSKINICTXB
+	TSKINICTXB	tskinictxb;		/* ^XNú»ReLXgubN */
+#else /* USE_TSKINICTXB */
+	SIZE		stksz;			/* X^bNÌæÌTCYiÛß½lj */
+	void		*stk;			/* X^bNÌæÌæªÔn */
+#endif /* USE_TSKINICTXB */
+
+	ATR			texatr;			/* ^XNáO[`®« */
+	TEXRTN		texrtn;			/* ^XNáO[`ÌN®Ôn */
+} TINIB;
+
+/*
+ *  TCBÌtB[hÌrbgÌè`
+ *
+ *  vZbTÉæÁÄÍCTCBÌtB[hÌrbgÅgpÊÆ
+ *  «\ªg[hItÉÈé½ßC^[QbgË¶ÉtB[hÌrbg
+ *  ðÏX·é±ÆðµÄ¢éD
+ */
+#ifndef TBIT_TCB_PRIORITY
+#define	TBIT_TCB_PRIORITY		8		/* prioritytB[hÌrbg */
+#endif /* TBIT_TCB_PRIORITY */
+
+/*
+ *  ^XNÇubNiTCBj
+ *
+ *  ASPJ[lÅÍC^XNÌN®vL
+[COÌÅåliTMAX_ACTCNTj
+ *  ÆN°vL
+[COÌÅåliTMAX_WUPCNTjÍ1ÉÅè³êÄ¢é
+ *  ½ßCL
+[CO³êÄ¢é©Ç¤©Ì^UlÅ\»·é±ÆªÅ«éD
+ *  Ü½C­§Ò¿vlXgÌÅåliTMAX_SUSCNTjª1ÉÅè³êÄ¢
+ *  éÌÅC­§Ò¿vlXgisuscntjÍKvÈ¢D
+ *
+ *  TCBÌ¢­Â©ÌtB[hÍCÁèÌ^XNóÔÅÌÝLøÈlðÛµC
+ *  »êÈOÌêÍlªÛØ³êÈ¢iæÁÄCQÆµÄÍÈçÈ¢jDe
+ *  tB[hªLøÈlðÛ·éðÍÌÊèD
+ *
+ *  Eú»ãÍíÉLøF
+ *  		p_tinibCtstatCactque
+ *  Ex~óÔÈOÅLøix~óÔÅÍúlÉÈÁÄ¢éjF
+ *  		bpriorityCpriorityCwupqueCenatexCtexptnCmutex_queue
+ *  EÒ¿óÔiñdÒ¿óÔðÜÞjÅLøF
+ *  		p_winfo
+ *  EÀsÅ«éóÔÆ¯úEÊMIuWFNgÉÎ·éÒ¿óÔÅLøF
+ *  		task_queue
+ *  EÀsÂ\óÔCÒ¿óÔC­§Ò¿óÔCñdÒ¿óÔÅLøF
+ *  		tskctxb
+ */
+typedef struct task_control_block {
+	QUEUE			task_queue;		/* ^XNL
+[ */
+	const TINIB		*p_tinib;		/* ú»ubNÖÌ|C^ */
+
+#ifdef UINT8_MAX
+	uint8_t			tstat;			/* ^XNóÔià\»j*/
+#else /* UINT8_MAX */
+	BIT_FIELD_UINT	tstat : 8;		/* ^XNóÔià\»j*/
+#endif /* UINT8_MAX */
+	BIT_FIELD_UINT	bpriority : TBIT_TCB_PRIORITY;
+									/* x[XDæxià\»j*/
+#if defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8)
+	uint8_t			priority;		/* »ÝÌDæxià\»j*/
+#else /* defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8) */
+	BIT_FIELD_UINT	priority : TBIT_TCB_PRIORITY;
+									/* »ÝÌDæxià\»j*/
+#endif  /* defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8) */
+	BIT_FIELD_BOOL	actque : 1;		/* N®vL
+[CO */
+	BIT_FIELD_BOOL	wupque : 1;		/* N°vL
+[CO */
+	BIT_FIELD_BOOL	enatex : 1;		/* ^XNáOÂóÔ */
+
+	TEXPTN			texptn;			/* Û¯áOvö */
+	WINFO			*p_winfo;		/* Ò¿îñubNÖÌ|C^ */
+	QUEUE			mutex_queue;	/* bNµÄ¢é~
+[ebNXÌL
+[ */
+	TSKCTXB			tskctxb;		/* ^XNReLXgubN */
+} TCB;
+
+/*
+ *  ÀsóÔÌ^XN
+ *
+ *  ÀsóÔÌ^XNivZbTªReLXgðÁÄ¢é^XNjÌ
+ *  TCBðw·|C^DÀsóÔÌ^XNªÈ¢êÍNULLÉ·éD
+ *
+ *  T[rXR[ÌÅC©^XNiT[rXR[ðÄÑoµ½^X
+ *  NjÉÖ·éîñðQÆ·éêÍp_runtskðg¤Dp_runtskð«·¦
+ *  éÌÍCfBXpb`iÆú»jÌÝÅ éD
+ */
+extern TCB	*p_runtsk;
+
+/*
+ *  ÅDæÊÌ^XN
+ *
+ *  ÀsÅ«é^XNÌÅÅDæÊÌ^XNÌTCBðw·|C^DÀ
+ *  sÅ«é^XNªÈ¢êÍNULLÉ·éD
+ *
+ *  fBXpb`Ö~óÔÈÇCfBXpb`ªÛ¯³êÄ¢éÔÍp_runtsk
+ *  ÆêvµÄ¢éÆÍÀçÈ¢D
+ */
+extern TCB	*p_schedtsk;
+
+/*
+ *  fBXpb`^^XNáO[`N®vtO
+ *
+ *  Ýnh^CPUáOnhÌoûÉCfBXpb`Ü½Í
+ *  ^XNáO[`ÌN®ðv·é±Æð¦·tOD
+ */
+extern bool_t	reqflg;
+
+/*
+ *  ÝDæx}XNSðóÔ
+ *
+ *  ÝDæx}XNSðóÔÅ é±Æð¦·tOD
+ */
+extern bool_t	ipmflg;
+
+/*
+ *  fBXpb`Ö~óÔ
+ *
+ *  fBXpb`Ö~óÔÅ é±Æð¦·tOD
+ */
+extern bool_t	disdsp;
+
+/*
+ *  ^XNfBXpb`Â\óÔ
+ *
+ *  ÝDæx}XNSðóÔÅ èCfBXpb`ÂóÔÅ éifB
+ *  Xpb`Ö~óÔÅÈ¢j±Æð¦·tOD
+ */
+extern bool_t	dspflg;
+
+/*
+ *  fBL
+[
+ *
+ *  fBL
+[ÍCÀsÅ«éóÔÌ^XNðÇ·é½ßÌL
+[Å éD
+ *  ÀsóÔÌ^XNàÇµÄ¢é½ßCfBiÀsÂ\jL
+[Æ¢¤
+ *  ¼ÌÍ³mÅÍÈ¢ªCfBL
+[Æ¢¤¼Ìªè
+µÄ¢é½ßC±
+ *  Ì¼ÌÅÄÔ±ÆÉ·éD
+ *
+ *  fBL
+[ÍCDæx²ÆÌ^XNL
+[Å\¬³êÄ¢éD^XNÌ
+ *  TCBÍCY·éDæxÌL
+[Éo^³êéD
+ */
+extern QUEUE	ready_queue[TNUM_TPRI];
+
+/*
+ *  fBL
+[T[`Ì½ßÌrbg}bv
+ *
+ *  fBL
+[ÌT[`ðø¦æ­s¤½ßÉCDæx²ÆÌ^XNL
+[
+ *  É^XNªüÁÄ¢é©Ç¤©ð¦·rbg}bvðpÓµÄ¢éDrb
+ *  g}bvðg¤±ÆÅCANZXÌñð¸ç·±ÆªÅ«éªC
+ *  rbgì½ßª[ÀµÄ¢È¢vZbTÅCDæxÌiKª­È¢
+ *  êÉÍCrbg}bvìÌI[o[wbhÌ½ßÉCtÉø¦ª¿
+ *  éÂ\«à éD
+ *
+ *  Dæxª16iKÅ é±Æð¼èµÄ¢é½ßCuint16_t^ÆµÄ¢éD
+ */
+extern uint16_t	ready_primap;
+
+/*
+ *  ^XNIDÌÅålikernel_cfg.cj
+ */
+extern const ID	tmax_tskid;
+
+/*
+ *  ^XNú»ubNÌGAikernel_cfg.cj
+ */
+extern const TINIB	tinib_table[];
+
+/*
+ *  ^XN¶¬e[uikernel_cfg.cj
+ */
+extern const ID	torder_table[];
+
+/*
+ *  TCBÌGAikernel_cfg.cj
+ */
+extern TCB	tcb_table[];
+
+/*
+ *  ^XNÌ
+ */
+#define tnum_tsk	((uint_t)(tmax_tskid - TMIN_TSKID + 1))
+
+/*
+ *  ^XNID©çTCBðæèo·½ßÌ}N
+ */
+#define INDEX_TSK(tskid)	((uint_t)((tskid) - TMIN_TSKID))
+#define get_tcb(tskid)		(&(tcb_table[INDEX_TSK(tskid)]))
+#define get_tcb_self(tskid)	((tskid) == TSK_SELF ? p_runtsk : get_tcb(tskid))
+
+/*
+ *  TCB©ç^XNIDðæèo·½ßÌ}N
+ */
+#define	TSKID(p_tcb)	((ID)(((p_tcb) - tcb_table) + TMIN_TSKID))
+
+/*
+ *  ^XNÇW
+[Ìú»
+ */
+extern void	initialize_task(void);
+
+/*
+ *  ÅDæÊ^XNÌT[`
+ *
+ *  fBL
+[ÌÅDæÊÌ^XNðT[`µC»ÌTCBÖÌ|C^
+ *  ðÔ·DfBL
+[ªóÌêÉÍC±ÌÖðÄÑoµÄÍÈçÈ¢D
+ */
+extern TCB	*search_schedtsk(void);
+
+/*
+ *  ÀsÅ«éóÔÖÌJÚ
+ *
+ *  p_tcbÅwè³êé^XNðfBL
+[É}ü·éDfBL
+[É}ü
+ *  µ½^XNÌDæxªCÅDæÊÌ^XNÌDæxæèà¢êÍC
+ *  ÅDæÊÌ^XNðXVµCfBXpb`ÂóÔÅ êÎtrueðÔ
+ *  ·D»¤ÅÈ¢êÍfalseðÔ·D
+ */
+extern bool_t	make_runnable(TCB *p_tcb);
+
+/*
+ *  ÀsÅ«éóÔ©ç¼ÌóÔÖÌJÚ
+ *
+ *  p_tcbÅwè³êé^XNðfBL
+[©çí·éDp_tcbÅwèµ½
+ *  ^XNªÅDæÊÌ^XNÅ Á½êÉÍCÅDæÊÌ^XN
+ *  ðÝèµÈ¨µCfBXpb`ÂóÔÅ êÎtrueðÔ·D»¤ÅÈ¢
+ *  êÍfalseðÔ·D^XNÌóÔÍXVµÈ¢D
+ */
+extern bool_t	make_non_runnable(TCB *p_tcb);
+
+/*
+ *  x~óÔÖÌJÚ
+ *
+ *  p_tcbÅwè³êé^XNÌóÔðx~óÔÆ·éDÜ½C^XNÌN®
+ *  Éú»·×«ÏÌú»ÆC^XNN®Ì½ßÌReLXgðÝ
+ *  è·éD
+ */
+extern void	make_dormant(TCB *p_tcb);
+
+/*
+ *  x~óÔ©çÀsÅ«éóÔÖÌJÚ
+ *
+ *  p_tcbÅwè³êé^XNÌóÔðx~óÔ©çÀsÅ«éóÔÆ·éD
+ *  ÀsÅ«éóÔÉJÚµ½^XNÖÌfBXpb`ªKvÈêÍtrueC
+ *  »¤ÅÈ¢êÍfalseðÔ·D
+ */
+extern bool_t	make_active(TCB *p_tcb);
+
+/*
+ *  ^XNÌDæxÌÏX
+ *
+ *  p_tcbÅwè³êé^XNÌDæxðnewpriià\»jÉÏX·éDÜ½C
+ *  KvÈêÉÍÅDæÊÌ^XNðXVµCfBXpb`ÂóÔÅ
+ *   êÎtrueðÔ·D»¤ÅÈ¢êÍfalseðÔ·D
+ *
+ *  p_tcbÅwè³êé^XNÌDæÊÍCmtxmodeªfalseÌÍ¯¶Dæx
+ *  Ì^XNÌÅÅáCmtxmodeªtrueÌÍ¯¶DæxÌ^XNÌÅÅ
+ *  Æ·éD
+ */
+extern bool_t	change_priority(TCB *p_tcb, uint_t newpri, bool_t mtxmode);
+
+/*
+ *  fBL
+[Ìñ]
+ *
+ *  fBL
+[ÌCpriÅwè³êéDæxÌ^XNL
+[ðñ]³¹éD
+ *  Ü½CKvÈêÉÍÅDæÊÌ^XNðÏXµCfBXpb`ªÛ
+ *  ¯³êÄ¢È¯êÎtrueðÔ·D»¤ÅÈ¢êÍfalseðÔ·D
+ */
+extern bool_t	rotate_ready_queue(uint_t pri);
+
+/*
+ *  ^XNáO[`ÌÄoµ
+ *
+ *  ^XNáO[`ðÄÑo·DÄÑo·OÉCÀsóÔÌ^XNÌ
+ *  Û¯áOvöðNAµC^XNáOÖ~óÔÉµCCPUbNðð
+ *  ·éD
+ *
+ *  ^XNáO[`©çßéÆCÜ¸CPUbNóÔÉßµC»ÌÔ
+ *  ÉÛ¯áOvöª0ÅÈ­ÈÁÄ¢êÎCÄÑ^XNáO[`ð
+ *  ÄÑo·DÛ¯áOvöª0ÌêÉÍCáOÂóÔÉµÄÖ©
+ *  ç^[·éD
+ *
+ *  ±ÌÖÍCÀsóÔÌ^XNªC^XNáOÂóÔienatexª
+ *  truejÅCÛ¯áOvöª0ÅÈ¢itexptnª0ÅÈ¢jêÉÄÑo·±
+ *  ÆðzèµÄ¢éD±ÌÖÍCCPUbNóÔÅÄÑo³È¯êÎÈç
+ *  È¢D
+ */
+extern void	call_texrtn(void);
+
+/*
+ *  ^XNáO[`ÌN®
+ *
+ *  ÀsóÔÌ^XNª^XNáO[`ÌN®ðð½µÄ¢êÎC
+ *  ^XNáO[`ðÄÑo·DCPUáO[`ðÄÑo·
+ *  ÍCêIÉCPUbNðð·éD
+ *
+ *  ±ÌÖÍCfBXpb`âÝnh^CPUáOnhÌoû
+ *  ©çÄÑo³êé±ÆðzèµÄ¢éD±ÌÖÍCCPUbNóÔ
+ *  ÅÄÑo³È¯êÎÈçÈ¢D
+ *
+ *  Àsø¦ðã°é½ßÉC±ÌÖð^[QbgË¶ÅLqµÄàæ¢D
+ *  »ÌêÉÍCOMIT_CALLTEXð}Nè`·éD
+ */
+extern void	calltex(void);
+
+#endif /* TOPPERS_TASK_H */
Index: /asp_ewarm/asp-1.7.0/extension/mutex/kernel/task_manage.c
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/kernel/task_manage.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/kernel/task_manage.c	(revision 61)
@@ -0,0 +1,455 @@
+/*
+ *  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-2009 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: task_manage.c 2018 2010-12-31 13:43:05Z ertl-hiro $
+ */
+
+/*
+ *		^XNÇ@\
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+#include "mutex.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_ACT_TSK_ENTER
+#define LOG_ACT_TSK_ENTER(tskid)
+#endif /* LOG_ACT_TSK_ENTER */
+
+#ifndef LOG_ACT_TSK_LEAVE
+#define LOG_ACT_TSK_LEAVE(ercd)
+#endif /* LOG_ACT_TSK_LEAVE */
+
+#ifndef LOG_IACT_TSK_ENTER
+#define LOG_IACT_TSK_ENTER(tskid)
+#endif /* LOG_IACT_TSK_ENTER */
+
+#ifndef LOG_IACT_TSK_LEAVE
+#define LOG_IACT_TSK_LEAVE(ercd)
+#endif /* LOG_IACT_TSK_LEAVE */
+
+#ifndef LOG_CAN_ACT_ENTER
+#define LOG_CAN_ACT_ENTER(tskid)
+#endif /* LOG_CAN_ACT_ENTER */
+
+#ifndef LOG_CAN_ACT_LEAVE
+#define LOG_CAN_ACT_LEAVE(ercd)
+#endif /* LOG_CAN_ACT_LEAVE */
+
+#ifndef LOG_EXT_TSK_ENTER
+#define LOG_EXT_TSK_ENTER()
+#endif /* LOG_EXT_TSK_ENTER */
+
+#ifndef LOG_EXT_TSK_LEAVE
+#define LOG_EXT_TSK_LEAVE(ercd)
+#endif /* LOG_EXT_TSK_LEAVE */
+
+#ifndef LOG_TER_TSK_ENTER
+#define LOG_TER_TSK_ENTER(tskid)
+#endif /* LOG_TER_TSK_ENTER */
+
+#ifndef LOG_TER_TSK_LEAVE
+#define LOG_TER_TSK_LEAVE(ercd)
+#endif /* LOG_TER_TSK_LEAVE */
+
+#ifndef LOG_CHG_PRI_ENTER
+#define LOG_CHG_PRI_ENTER(tskid, tskpri)
+#endif /* LOG_CHG_PRI_ENTER */
+
+#ifndef LOG_CHG_PRI_LEAVE
+#define LOG_CHG_PRI_LEAVE(ercd)
+#endif /* LOG_CHG_PRI_LEAVE */
+
+#ifndef LOG_GET_PRI_ENTER
+#define LOG_GET_PRI_ENTER(tskid, p_tskpri)
+#endif /* LOG_GET_PRI_ENTER */
+
+#ifndef LOG_GET_PRI_LEAVE
+#define LOG_GET_PRI_LEAVE(ercd, tskpri)
+#endif /* LOG_GET_PRI_LEAVE */
+
+#ifndef LOG_GET_INF_ENTER
+#define LOG_GET_INF_ENTER(p_exinf)
+#endif /* LOG_GET_INF_ENTER */
+
+#ifndef LOG_GET_INF_LEAVE
+#define LOG_GET_INF_LEAVE(ercd, exinf)
+#endif /* LOG_GET_INF_LEAVE */
+
+/*
+ *  ^XNÌN®
+ */
+#ifdef TOPPERS_act_tsk
+
+ER
+act_tsk(ID tskid)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_ACT_TSK_ENTER(tskid);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID_SELF(tskid);
+	p_tcb = get_tcb_self(tskid);
+
+	t_lock_cpu();
+	if (TSTAT_DORMANT(p_tcb->tstat)) {
+		if (make_active(p_tcb)) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else if (!(p_tcb->actque)) {
+		p_tcb->actque = true;
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_QOVR;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_ACT_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_act_tsk */
+
+/*
+ *  ^XNÌN®iñ^XNReLXgpj
+ */
+#ifdef TOPPERS_iact_tsk
+
+ER
+iact_tsk(ID tskid)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_IACT_TSK_ENTER(tskid);
+	CHECK_INTCTX_UNL();
+	CHECK_TSKID(tskid);
+	p_tcb = get_tcb(tskid);
+
+	i_lock_cpu();
+	if (TSTAT_DORMANT(p_tcb->tstat)) {
+		if (make_active(p_tcb)) {
+			reqflg = true;
+		}
+		ercd = E_OK;
+	}
+	else if (!(p_tcb->actque)) {
+		p_tcb->actque = true;
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_QOVR;
+	}
+	i_unlock_cpu();
+
+  error_exit:
+	LOG_IACT_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_iact_tsk */
+
+/*
+ *  ^XNN®vÌLZ
+ */
+#ifdef TOPPERS_can_act
+
+ER_UINT
+can_act(ID tskid)
+{
+	TCB		*p_tcb;
+	ER_UINT	ercd;
+
+	LOG_CAN_ACT_ENTER(tskid);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID_SELF(tskid);
+	p_tcb = get_tcb_self(tskid);
+
+	t_lock_cpu();
+	ercd = p_tcb->actque ? 1 : 0;
+	p_tcb->actque = false;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_CAN_ACT_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_can_act */
+
+/*
+ *  ©^XNÌI¹
+ */
+#ifdef TOPPERS_ext_tsk
+
+ER
+ext_tsk(void)
+{
+	ER		ercd;
+
+	LOG_EXT_TSK_ENTER();
+	CHECK_TSKCTX();
+
+	if (t_sense_lock()) {
+		/*
+		 *  CPUbNóÔÅext_tskªÄÎê½êÍCCPUbNððµ
+		 *  Ä©ç^XNðI¹·éDÀãÍCT[rXR[àÅÌCPU
+		 *  bNðÈª·êÎæ¢¾¯D
+		 */
+	}
+	else {
+		t_lock_cpu();
+	}
+	if (disdsp) {
+		/*
+		 *  fBXpb`Ö~óÔÅext_tskªÄÎê½êÍCfBXpb
+		 *  `ÂóÔÉµÄ©ç^XNðI¹·éD
+		 */
+		disdsp = false;
+	}
+	if (!ipmflg) {
+		/*
+		 *  ÝDæx}XNiIPMjªTIPM_ENAALLÈOÌóÔÅext_tsk
+		 *  ªÄÎê½êÍCIPMðTIPM_ENAALLÉµÄ©ç^XNðI¹·
+		 *  éD
+		 */
+		t_set_ipm(TIPM_ENAALL);
+		ipmflg = true;
+	}
+	dspflg = true;
+
+	(void) make_non_runnable(p_runtsk);
+	if (!queue_empty(&(p_runtsk->mutex_queue))) {
+		(void) (*mtxhook_release_all)(p_runtsk);
+	}
+	make_dormant(p_runtsk);
+	if (p_runtsk->actque) {
+		p_runtsk->actque = false;
+		(void) make_active(p_runtsk);
+	}
+	exit_and_dispatch();
+	ercd = E_SYS;
+
+  error_exit:
+	LOG_EXT_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ext_tsk */
+
+/*
+ *  ^XNÌ­§I¹
+ */
+#ifdef TOPPERS_ter_tsk
+
+ER
+ter_tsk(ID tskid)
+{
+	TCB		*p_tcb;
+	bool_t	dspreq = false;
+	ER		ercd;
+
+	LOG_TER_TSK_ENTER(tskid);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID(tskid);
+	p_tcb = get_tcb(tskid);
+	CHECK_NONSELF(p_tcb);
+
+	t_lock_cpu();
+	if (TSTAT_DORMANT(p_tcb->tstat)) {
+		ercd = E_OBJ;
+	}
+	else {
+		if (TSTAT_RUNNABLE(p_tcb->tstat)) {
+			/*
+			 *  p_tcbÍ©^XNÅÈ¢½ßCiVOvZbTÅÍjÀ
+			 *  sóÔÅÈ­Cmake_non_runnable(p_tcb)Å^XNfBXpb
+			 *  `ªKvÉÈé±ÆÍÈ¢D
+			 */
+			(void) make_non_runnable(p_tcb);
+		}
+		else if (TSTAT_WAITING(p_tcb->tstat)) {
+			wait_dequeue_wobj(p_tcb);
+			wait_dequeue_tmevtb(p_tcb);
+		}
+		if (!queue_empty(&(p_tcb->mutex_queue))) {
+			if ((*mtxhook_release_all)(p_tcb)) {
+				dspreq = true;
+			}
+		}
+		make_dormant(p_tcb);
+		if (p_tcb->actque) {
+			p_tcb->actque = false;
+			if (make_active(p_tcb)) {
+				dspreq = true;
+			}
+		}
+		if (dspreq) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_TER_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ter_tsk */
+
+/*
+ *  ^XNÌx[XDæxÌÏX
+ */
+#ifdef TOPPERS_chg_pri
+
+ER
+chg_pri(ID tskid, PRI tskpri)
+{
+	TCB		*p_tcb;
+	uint_t	newbpri;
+	ER		ercd;
+
+	LOG_CHG_PRI_ENTER(tskid, tskpri);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID_SELF(tskid);
+	CHECK_TPRI_INI(tskpri);
+	p_tcb = get_tcb_self(tskid);
+	newbpri = (tskpri == TPRI_INI) ? p_tcb->p_tinib->ipriority
+										: INT_PRIORITY(tskpri);
+
+	t_lock_cpu();
+	if (TSTAT_DORMANT(p_tcb->tstat)) {
+		ercd = E_OBJ;
+	}
+	else if ((!queue_empty(&(p_tcb->mutex_queue))
+										|| TSTAT_WAIT_MTX(p_tcb->tstat))
+						&& !((*mtxhook_check_ceilpri)(p_tcb, newbpri))) {
+		ercd = E_ILUSE;
+	}
+	else {
+		p_tcb->bpriority = newbpri;
+		if (queue_empty(&(p_tcb->mutex_queue))
+								|| !((*mtxhook_scan_ceilmtx)(p_tcb))) {
+			if (change_priority(p_tcb, newbpri, false)) {
+				dispatch();
+			}
+		}
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_CHG_PRI_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_chg_pri */
+
+/*
+ *  ^XNDæxÌQÆ
+ */
+#ifdef TOPPERS_get_pri
+
+ER
+get_pri(ID tskid, PRI *p_tskpri)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_GET_PRI_ENTER(tskid, p_tskpri);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID_SELF(tskid);
+	p_tcb = get_tcb_self(tskid);
+
+	t_lock_cpu();
+	if (TSTAT_DORMANT(p_tcb->tstat)) {
+		ercd = E_OBJ;
+	}
+	else {
+		*p_tskpri = EXT_TSKPRI(p_tcb->priority);
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_GET_PRI_LEAVE(ercd, *p_tskpri);
+	return(ercd);
+}
+
+#endif /* TOPPERS_get_pri */
+
+/*
+ *  ©^XNÌg£îñÌQÆ
+ */
+#ifdef TOPPERS_get_inf
+
+ER
+get_inf(intptr_t *p_exinf)
+{
+	ER		ercd;
+
+	LOG_GET_INF_ENTER(p_exinf);
+	CHECK_TSKCTX_UNL();
+
+	t_lock_cpu();
+	*p_exinf = p_runtsk->p_tinib->exinf;
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_GET_INF_LEAVE(ercd, *p_exinf);
+	return(ercd);
+}
+
+#endif /* TOPPERS_get_inf */
Index: /asp_ewarm/asp-1.7.0/extension/mutex/kernel/task_refer.c
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/kernel/task_refer.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/kernel/task_refer.c	(revision 61)
@@ -0,0 +1,210 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2005-2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: task_refer.c 1016 2008-05-10 08:42:16Z ertl-hiro $
+ */
+
+/*
+ *		^XNÌóÔQÆ@\
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+#include "semaphore.h"
+#include "eventflag.h"
+#include "dataqueue.h"
+#include "pridataq.h"
+#include "mailbox.h"
+#include "mempfix.h"
+#include "time_event.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_REF_TSK_ENTER
+#define LOG_REF_TSK_ENTER(tskid, pk_rtsk)
+#endif /* LOG_REF_TSK_ENTER */
+
+#ifndef LOG_REF_TSK_LEAVE
+#define LOG_REF_TSK_LEAVE(ercd, pk_rtsk)
+#endif /* LOG_REF_TSK_LEAVE */
+
+/*
+ *  ^XNÌóÔQÆ
+ */
+#ifdef TOPPERS_ref_tsk
+
+ER
+ref_tsk(ID tskid, T_RTSK *pk_rtsk)
+{
+	TCB		*p_tcb;
+	uint_t	tstat;
+	ER		ercd;
+
+	LOG_REF_TSK_ENTER(tskid, pk_rtsk);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID_SELF(tskid);
+	p_tcb = get_tcb_self(tskid);
+
+	t_lock_cpu();
+	tstat = p_tcb->tstat;
+	if (TSTAT_DORMANT(tstat)) {
+		/*
+ 		 *  ÎÛ^XNªx~óÔÌê
+		 */
+		pk_rtsk->tskstat = TTS_DMT;
+	}
+	else {
+		/*
+ 		 *  ^XNóÔÌæoµ
+		 */
+		if (TSTAT_SUSPENDED(tstat)) {
+			if (TSTAT_WAITING(tstat)) {
+				pk_rtsk->tskstat = TTS_WAS;
+			}
+			else {
+				pk_rtsk->tskstat = TTS_SUS;
+			}
+		}
+		else if (TSTAT_WAITING(tstat)) {
+			pk_rtsk->tskstat = TTS_WAI;
+		}
+		else if (p_tcb == p_runtsk) {
+			pk_rtsk->tskstat = TTS_RUN;
+		}
+		else {
+			pk_rtsk->tskstat = TTS_RDY;
+		}
+
+		/*
+ 		 *  »ÝDæxÆx[XDæxÌæoµ
+		 */
+		pk_rtsk->tskpri = EXT_TSKPRI(p_tcb->priority);
+		pk_rtsk->tskbpri = EXT_TSKPRI(p_tcb->bpriority);
+
+		if (TSTAT_WAITING(tstat)) {
+			/*
+	 		 *  Ò¿vöÆÒ¿ÎÛÌIuWFNgÌIDÌæoµ
+			 */
+			switch (tstat & TS_WAIT_MASK) {
+			case TS_WAIT_SLP:
+				pk_rtsk->tskwait = TTW_SLP;
+				break;
+			case TS_WAIT_DLY:
+				pk_rtsk->tskwait = TTW_DLY;
+				break;
+			case TS_WAIT_SEM:
+				pk_rtsk->tskwait = TTW_SEM;
+				pk_rtsk->wobjid = SEMID(((WINFO_SEM *)(p_tcb->p_winfo))
+																->p_semcb);
+				break;
+			case TS_WAIT_FLG:
+				pk_rtsk->tskwait = TTW_FLG;
+				pk_rtsk->wobjid = FLGID(((WINFO_FLG *)(p_tcb->p_winfo))
+																->p_flgcb);
+				break;
+			case TS_WAIT_SDTQ:
+				pk_rtsk->tskwait = TTW_SDTQ;
+				pk_rtsk->wobjid = DTQID(((WINFO_DTQ *)(p_tcb->p_winfo))
+																->p_dtqcb);
+				break;
+			case TS_WAIT_RDTQ:
+				pk_rtsk->tskwait = TTW_RDTQ;
+				pk_rtsk->wobjid = DTQID(((WINFO_DTQ *)(p_tcb->p_winfo))
+																->p_dtqcb);
+				break;
+			case TS_WAIT_SPDQ:
+				pk_rtsk->tskwait = TTW_SPDQ;
+				pk_rtsk->wobjid = PDQID(((WINFO_PDQ *)(p_tcb->p_winfo))
+																->p_pdqcb);
+				break;
+			case TS_WAIT_RPDQ:
+				pk_rtsk->tskwait = TTW_RPDQ;
+				pk_rtsk->wobjid = PDQID(((WINFO_PDQ *)(p_tcb->p_winfo))
+																->p_pdqcb);
+				break;
+			case TS_WAIT_MBX:
+				pk_rtsk->tskwait = TTW_MBX;
+				pk_rtsk->wobjid = MBXID(((WINFO_MBX *)(p_tcb->p_winfo))
+																->p_mbxcb);
+				break;
+			case TS_WAIT_MPF:
+				pk_rtsk->tskwait = TTW_MPF;
+				pk_rtsk->wobjid = MPFID(((WINFO_MPF *)(p_tcb->p_winfo))
+																->p_mpfcb);
+				break;
+			}
+
+			/*
+	 		 *  ^CAEg·éÜÅÌÔÌæoµ
+			 */
+			if (p_tcb->p_winfo->p_tmevtb != NULL) {
+				pk_rtsk->lefttmo
+						= (TMO) tmevt_lefttim(p_tcb->p_winfo->p_tmevtb);
+			}
+			else {
+				pk_rtsk->lefttmo = TMO_FEVR;
+			}
+		}
+
+		/*
+ 		 *  N°vL
+[COÌæoµ
+		 */
+		pk_rtsk->wupcnt = p_tcb->wupque ? 1U : 0U;
+	}
+
+	/*
+	 *  N®vL
+[COÌæoµ
+	 */
+	pk_rtsk->actcnt = p_tcb->actque ? 1U : 0U;
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_REF_TSK_LEAVE(ercd, pk_rtsk);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ref_tsk */
Index: /asp_ewarm/asp-1.7.0/extension/mutex/test/bit_kernel.c
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/test/bit_kernel.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/test/bit_kernel.c	(revision 61)
@@ -0,0 +1,490 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2005-2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: bit_kernel.c 1544 2009-05-08 07:53:48Z ertl-hiro $
+ */
+
+/*
+ *		J[lÌ®«¸
+ */
+
+#include "kernel/kernel_impl.h"
+#include "kernel/task.h"
+#include "kernel/wait.h"
+#include "kernel/semaphore.h"
+#include "kernel/eventflag.h"
+#include "kernel/dataqueue.h"
+#include "kernel/pridataq.h"
+#include "kernel/mailbox.h"
+#include "kernel/mutex.h"
+#include "kernel/mempfix.h"
+#include "kernel/time_event.h"
+
+/*
+ *   G[R[hÌè`
+ */
+#define E_SYS_LINENO	ERCD(E_SYS, -(__LINE__))
+
+/*
+ *  ÇubNÌAhXÌ³«Ì`FbN
+ */
+#define VALID_TCB(p_tcb) \
+		((((char *) p_tcb) - ((char *) tcb_table)) % sizeof(TCB) == 0 \
+			&& TMIN_TSKID <= TSKID(p_tcb) && TSKID(p_tcb) <= tmax_tskid)
+
+#define VALID_SEMCB(p_semcb) \
+		((((char *) p_semcb) - ((char *) semcb_table)) % sizeof(SEMCB) == 0 \
+			&& TMIN_SEMID <= SEMID(p_semcb) && SEMID(p_semcb) <= tmax_semid)
+				
+#define VALID_FLGCB(p_flgcb) \
+		((((char *) p_flgcb) - ((char *) flgcb_table)) % sizeof(FLGCB) == 0 \
+			&& TMIN_FLGID <= FLGID(p_flgcb) && FLGID(p_flgcb) <= tmax_flgid)
+
+#define VALID_DTQCB(p_dtqcb) \
+		((((char *) p_dtqcb) - ((char *) dtqcb_table)) % sizeof(DTQCB) == 0 \
+			&& TMIN_DTQID <= DTQID(p_dtqcb) && DTQID(p_dtqcb) <= tmax_dtqid)
+
+#define VALID_PDQCB(p_pdqcb) \
+		((((char *) p_pdqcb) - ((char *) pdqcb_table)) % sizeof(PDQCB) == 0 \
+			&& TMIN_PDQID <= PDQID(p_pdqcb) && PDQID(p_pdqcb) <= tmax_pdqid)
+
+#define VALID_MBXCB(p_mbxcb) \
+		((((char *) p_mbxcb) - ((char *) mbxcb_table)) % sizeof(MBXCB) == 0 \
+			&& TMIN_MBXID <= MBXID(p_mbxcb) && MBXID(p_mbxcb) <= tmax_mbxid)
+
+#define VALID_MTXCB(p_mtxcb) \
+		((((char *) p_mtxcb) - ((char *) mtxcb_table)) % sizeof(MTXCB) == 0 \
+			&& TMIN_MTXID <= MTXID(p_mtxcb) && MTXID(p_mtxcb) <= tmax_mtxid)
+
+#define VALID_MPFCB(p_mpfcb) \
+		((((char *) p_mpfcb) - ((char *) mpfcb_table)) % sizeof(MPFCB) == 0 \
+			&& TMIN_MPFID <= MPFID(p_mpfcb) && MPFID(p_mpfcb) <= tmax_mpfid)
+
+/*
+ *  L
+[Ì`FbNÌ½ßÌÖ
+ *
+ *  p_queueÉp_entryªÜÜêÄ¢é©ð²×éDÜÜêÄ¢êÎtrueCÜÜ
+ *  êÄ¢È¢êÉÍfalseðÔ·D_uNÌs®ÌêÉàC
+ *  falseðÔ·D
+ */
+static bool_t
+in_queue(QUEUE *p_queue, QUEUE *p_entry)
+{
+	QUEUE	*p_current, *p_next;
+
+	p_current = p_queue->p_next;
+	if (p_current->p_prev != p_queue) {
+		return(false);					/* _uNÌs® */
+	}
+	while (p_current != p_queue) {
+		if (p_current == p_entry) {
+			return(true);				/* p_entryªÜÜêÄ¢½ */
+		}
+
+		/*
+		 *  L
+[ÌÌvfÉiÞ
+		 */
+		p_next = p_current->p_next;
+		if (p_next->p_prev != p_current) {
+			return(false);				 /* _uNÌs® */
+		}
+		p_current = p_next;
+	}
+	return(false);
+}
+
+/*
+ *  X^bNãðwµÄ¢é©Ì¸
+ */
+static bool_t
+on_stack(void *addr, const TINIB *p_tinib)
+{
+	if (p_tinib->stk <= addr
+				&& addr < (void *)((char *)(p_tinib->stk) + p_tinib->stksz)) {
+		return(true);
+	}
+	return(false);
+}
+
+/*
+ *  ^XNÌ®«¸
+ */
+static ER
+bit_task(ID tskid)
+{
+	TCB			*p_tcb;
+	const TINIB	*p_tinib;
+	uint_t		tstat, tstat_wait, priority;
+	TMEVTB		*p_tmevtb;
+	SEMCB		*p_semcb;
+	FLGCB		*p_flgcb;
+	DTQCB		*p_dtqcb;
+	PDQCB		*p_pdqcb;
+	MBXCB		*p_mbxcb;
+	MTXCB		*p_mtxcb;
+	MPFCB		*p_mpfcb;
+
+	if (!(TMIN_TSKID <= (tskid) && (tskid) <= tmax_tskid)) {
+		return(E_ID);
+	}
+	p_tcb = get_tcb(tskid);
+	p_tinib = p_tcb->p_tinib;
+	tstat = p_tcb->tstat;
+	tstat_wait = (tstat & TS_WAIT_MASK);
+	priority = p_tcb->priority;
+
+	/*
+	 *  ú»ubNÖÌ|C^Ì¸
+	 */
+	if (p_tinib != &(tinib_table[INDEX_TSK(tskid)])) {
+		return(E_SYS_LINENO);
+	}
+
+	/*
+	 *  tstatÌ¸
+	 */
+	switch (tstat & (TS_RUNNABLE | TS_WAITING | TS_SUSPENDED)) {
+	case TS_DORMANT:
+		if (tstat != TS_DORMANT) {
+			return(E_SYS_LINENO);
+		}
+		break;
+	case TS_RUNNABLE:
+		if (tstat != TS_RUNNABLE) {
+			return(E_SYS_LINENO);
+		}
+		break;
+	case TS_WAITING:
+	case (TS_WAITING | TS_SUSPENDED):
+		if (!(TS_WAIT_DLY <= tstat_wait && tstat_wait <= TS_WAIT_MTX)) {
+			return(E_SYS_LINENO);
+		}
+		if ((tstat & ~(TS_WAIT_MASK | TS_RUNNABLE | TS_WAITING | TS_SUSPENDED))
+																	!= 0U) {
+			return(E_SYS_LINENO);
+		}
+		break;
+	case TS_SUSPENDED:
+		if (tstat != TS_SUSPENDED) {
+			return(E_SYS_LINENO);
+		}
+		break;
+	default:
+		return(E_SYS_LINENO);
+	}
+
+	/*
+	 *  actqueÌ¸
+	 */
+	if (TSTAT_DORMANT(tstat) && p_tcb->actque) {
+		return(E_SYS_LINENO);
+	}
+
+	/*
+	 *  ^XNDæxÌ¸
+	 */
+	if (priority >= TNUM_TPRI) {
+		return(E_SYS_LINENO);
+	}
+
+	/*
+	 *  texptnÌ¸
+	 */
+	if (p_tcb->p_tinib->texrtn == NULL && p_tcb->texptn != 0U) {
+		return(E_SYS_LINENO);
+	}
+
+	/*
+	 *  x~óÔÉ¨¯é`FbN
+	 */
+	if (TSTAT_DORMANT(tstat)) {
+		if (!(priority == p_tinib->ipriority)
+					&& (p_tcb->wupque == false)
+					&& (p_tcb->enatex == false)
+					&& (p_tcb->texptn == 0U)) {
+			return(E_SYS_LINENO);
+		}
+	}
+
+	/*
+	 *  ÀsÅ«éóÔÉ¨¯é`FbN
+	 */
+	if (TSTAT_RUNNABLE(tstat)) {
+		if (!in_queue(&ready_queue[priority], &(p_tcb->task_queue))) {
+			return(E_SYS_LINENO);
+		}
+	}
+
+	/*
+	 *  Ò¿óÔÉ¨¯é`FbN
+	 */
+	if (TSTAT_WAITING(tstat)) {
+		if (!on_stack(p_tcb->p_winfo, p_tinib)) {
+			return(E_SYS_LINENO);
+		}
+		p_tmevtb = p_tcb->p_winfo->p_tmevtb;
+		if (p_tmevtb != NULL) {
+			if (!on_stack(p_tmevtb, p_tinib)) {
+				return(E_SYS_LINENO);
+			}
+			/*
+			 *  (*p_tmevtb)Ì¸i¢®¬j
+			 */
+		}
+
+		switch (tstat & TS_WAIT_MASK) {
+			case TS_WAIT_SLP:
+				if (p_tcb->wupque == true) {
+					return(E_SYS_LINENO);
+				}
+				break;
+
+			case TS_WAIT_DLY:
+				if (p_tmevtb == NULL) {
+					return(E_SYS_LINENO);
+				}
+				break;
+
+			case TS_WAIT_SEM:
+				p_semcb = ((WINFO_SEM *)(p_tcb->p_winfo))->p_semcb;
+				if (!VALID_SEMCB(p_semcb)) {
+					return(E_SYS_LINENO);
+				}
+				if (!in_queue(&(p_semcb->wait_queue), &(p_tcb->task_queue))) {
+					return(E_SYS_LINENO);
+				}
+				break;
+
+			case TS_WAIT_FLG:
+				p_flgcb = ((WINFO_FLG *)(p_tcb->p_winfo))->p_flgcb;
+				if (!VALID_FLGCB(p_flgcb)) {
+					return(E_SYS_LINENO);
+				}
+				if (!in_queue(&(p_flgcb->wait_queue), &(p_tcb->task_queue))) {
+					return(E_SYS_LINENO);
+				}
+				break;
+
+			case TS_WAIT_SDTQ:
+				p_dtqcb = ((WINFO_DTQ *)(p_tcb->p_winfo))->p_dtqcb;
+				if (!VALID_DTQCB(p_dtqcb)) {
+					return(E_SYS_LINENO);
+				}
+				if (!in_queue(&(p_dtqcb->swait_queue), &(p_tcb->task_queue))) {
+					return(E_SYS_LINENO);
+				}
+				break;
+
+			case TS_WAIT_RDTQ:
+				p_dtqcb = ((WINFO_DTQ *)(p_tcb->p_winfo))->p_dtqcb;
+				if (!VALID_DTQCB(p_dtqcb)) {
+					return(E_SYS_LINENO);
+				}
+				if (!in_queue(&(p_dtqcb->rwait_queue), &(p_tcb->task_queue))) {
+					return(E_SYS_LINENO);
+				}
+				break;
+
+			case TS_WAIT_SPDQ:
+				p_pdqcb = ((WINFO_PDQ *)(p_tcb->p_winfo))->p_pdqcb;
+				if (!VALID_PDQCB(p_pdqcb)) {
+					return(E_SYS_LINENO);
+				}
+				if (!in_queue(&(p_pdqcb->swait_queue), &(p_tcb->task_queue))) {
+					return(E_SYS_LINENO);
+				}
+				break;
+
+			case TS_WAIT_RPDQ:
+				p_pdqcb = ((WINFO_PDQ *)(p_tcb->p_winfo))->p_pdqcb;
+				if (!VALID_PDQCB(p_pdqcb)) {
+					return(E_SYS_LINENO);
+				}
+				if (!in_queue(&(p_pdqcb->rwait_queue), &(p_tcb->task_queue))) {
+					return(E_SYS_LINENO);
+				}
+				break;
+
+			case TS_WAIT_MBX:
+				p_mbxcb = ((WINFO_MBX *)(p_tcb->p_winfo))->p_mbxcb;
+				if (!VALID_MBXCB(p_mbxcb)) {
+					return(E_SYS_LINENO);
+				}
+				if (!in_queue(&(p_mbxcb->wait_queue), &(p_tcb->task_queue))) {
+					return(E_SYS_LINENO);
+				}
+				break;
+
+			case TS_WAIT_MTX:
+				p_mtxcb = ((WINFO_MTX *)(p_tcb->p_winfo))->p_mtxcb;
+				if (!VALID_MTXCB(p_mtxcb)) {
+					return(E_SYS_LINENO);
+				}
+				if (!in_queue(&(p_mtxcb->wait_queue), &(p_tcb->task_queue))) {
+					return(E_SYS_LINENO);
+				}
+				break;
+
+			case TS_WAIT_MPF:
+				p_mpfcb = ((WINFO_MPF *)(p_tcb->p_winfo))->p_mpfcb;
+				if (!VALID_MPFCB(p_mpfcb)) {
+					return(E_SYS_LINENO);
+				}
+				if (!in_queue(&(p_mpfcb->wait_queue), &(p_tcb->task_queue))) {
+					return(E_SYS_LINENO);
+				}
+				break;
+		}
+	}
+
+	/*
+	 *  tskctxbÌ¸
+	 */
+	if (!TSTAT_DORMANT(tstat) && p_tcb != p_runtsk) {
+		/*
+		 *  ^[QbgË¶Ì¸
+		 */
+#if 0
+		if (bit_tskctxb(&(p_tcb->tskctxb))) {
+			return(E_SYS_LINENO);
+		}
+#endif
+	}
+	return(E_OK);
+}
+
+/*
+ *  Z}tHÌ®«¸
+ */
+#define INDEX_SEM(semid)	((uint_t)((semid) - TMIN_SEMID))
+#define get_semcb(semid)	(&(semcb_table[INDEX_SEM(semid)]))
+
+static ER
+bit_semaphore(ID semid)
+{
+	SEMCB			*p_semcb;
+	const SEMINIB	*p_seminib;
+	uint_t			semcnt;
+	QUEUE			*p_queue;
+	TCB				*p_tcb;
+
+	if (!(TMIN_SEMID <= (semid) && (semid) <= tmax_semid)) {
+		return(E_ID);
+	}
+	p_semcb = get_semcb(semid);
+	p_seminib = p_semcb->p_seminib;
+	semcnt = p_semcb->semcnt;
+
+	/*
+	 *  ú»ubNÖÌ|C^Ì¸
+	 */
+	if (p_seminib != &(seminib_table[INDEX_SEM(semid)])) {
+		return(E_SYS_LINENO);
+	}
+
+	/*
+	 *  semcntÌ¸
+	 */
+	if (semcnt > p_seminib->maxsem) {
+		return(E_SYS_LINENO);
+	}
+
+	/*
+	 *  wait_queueÌ¸
+	 */
+	if (semcnt == 0) {
+		p_queue = p_semcb->wait_queue.p_next;
+		while (p_queue != &(p_semcb->wait_queue)) {
+			p_tcb = (TCB *) p_queue;
+			p_queue = p_queue->p_next;
+			if (!VALID_TCB(p_tcb)) {
+				return(E_SYS_LINENO);
+			}
+			if (p_tcb->tstat != (TS_WAITING | TS_WAIT_SEM)) {
+				return(E_SYS_LINENO);
+			}
+			if (p_semcb != ((WINFO_SEM *)(p_tcb->p_winfo))->p_semcb) {
+				return(E_SYS_LINENO);
+			}
+		}
+	}
+	else {
+		if (!queue_empty(&(p_semcb->wait_queue))) {
+			return(E_SYS_LINENO);
+		}
+	}
+	return(E_OK);
+}
+
+/*
+ *  ®«¸[`{Ì
+ */
+ER
+bit_kernel(void)
+{
+	ID		tskid;
+	ID		semid;
+	ER		ercd;
+
+	/*
+	 *  ^XNÌ¸
+	 */
+	for (tskid = TMIN_TSKID; tskid <= tmax_tskid; tskid++) {
+		ercd = bit_task(tskid);
+		if (ercd != E_OK) {
+			return(ercd);
+		}
+	}
+
+	/*
+	 *  Z}tHÌ¸
+	 */
+	for (semid = TMIN_SEMID; semid <= tmax_semid; semid++) {
+		ercd = bit_semaphore(semid);
+		if (ercd != E_OK) {
+			return(ercd);
+		}
+	}
+
+	return(E_OK);
+}
Index: /asp_ewarm/asp-1.7.0/extension/mutex/test/bit_mutex.c
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/test/bit_mutex.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/test/bit_mutex.c	(revision 61)
@@ -0,0 +1,368 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      High Reliable system Profile Kernel
+ * 
+ *  Copyright (C) 2005-2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: bit_mutex.c 762 2008-03-07 23:51:41Z hiro $
+ */
+
+/*
+ *		~
+[ebNX@\Ì®«¸
+ */
+
+#include "kernel/kernel_impl.h"
+#include "kernel/task.h"
+#include "kernel/mutex.h"
+
+/*
+ *  ~
+[ebNXID©ç~
+[ebNXÇubNðæèo·½ßÌ}N
+ *  imutex.cæèj
+ */
+#define INDEX_MTX(mtxid)	((uint_t)((mtxid) - TMIN_MTXID))
+#define get_mtxcb(mtxid)	(&(mtxcb_table[INDEX_MTX(mtxid)]))
+
+/*
+ *  ~
+[ebNXÇubNÌmutex_queueÖÌ|C^©çC~
+[eb
+ *  NXÇubNÖÌ|C^ðæèo·½ßÌ}Nimutex.cæèj
+ */
+#define MTXCB_QUEUE(p_queue) \
+			((MTXCB *)(((char *) p_queue) - offsetof(MTXCB, mutex_queue)))
+
+/*
+ *  ~
+[ebNXÌvgRð»f·é}Nimutex.cæèj
+ */
+#define MTXPROTO_MASK			0x03U
+#define MTXPROTO(p_mtxcb)		((p_mtxcb)->p_mtxinib->mtxatr & MTXPROTO_MASK)
+#define MTX_CEILING(p_mtxcb)	(MTXPROTO(p_mtxcb) == TA_CEILING)
+
+/*
+ *   G[R[hÌè`
+ */
+#define E_SYS_LINENO	ERCD(E_SYS, -(__LINE__))
+
+/*
+ *  ÇubNÌAhXÌ³«Ì`FbN
+ */
+#define VALID_TCB(p_tcb) \
+		((((char *) p_tcb) - ((char *) tcb_table)) % sizeof(TCB) == 0 \
+			&& TMIN_TSKID <= TSKID(p_tcb) && TSKID(p_tcb) <= tmax_tskid)
+
+#define VALID_MTXCB(p_mtxcb) \
+		((((char *) p_mtxcb) - ((char *) mtxcb_table)) % sizeof(MTXCB) == 0 \
+			&& TMIN_MTXID <= MTXID(p_mtxcb) && MTXID(p_mtxcb) <= tmax_mtxid)
+				
+/*
+ *  L
+[Ì`FbNÌ½ßÌÖ
+ *
+ *  p_queueÉp_entryªÜÜêÄ¢é©ð²×éDÜÜêÄ¢êÎtrueCÜÜ
+ *  êÄ¢È¢êÉÍfalseðÔ·D_uNÌs®ÌêÉàC
+ *  falseðÔ·D
+ */
+static bool_t
+in_queue(QUEUE *p_queue, QUEUE *p_entry)
+{
+	QUEUE	*p_current, *p_next;
+
+	p_current = p_queue->p_next;
+	if (p_current->p_prev != p_queue) {
+		return(false);					/* _uNÌs® */
+	}
+	while (p_current != p_queue) {
+		if (p_current == p_entry) {
+			return(true);				/* p_entryªÜÜêÄ¢½ */
+		}
+
+		/*
+		 *  L
+[ÌÌvfÉiÞ
+		 */
+		p_next = p_current->p_next;
+		if (p_next->p_prev != p_current) {
+			return(false);				 /* _uNÌs® */
+		}
+		p_current = p_next;
+	}
+	return(false);
+}
+
+/*
+ *  ^XNÌ¸
+ */
+static ER
+bit_mutex_task(ID tskid)
+{
+	TCB			*p_tcb;
+	MTXCB		*p_mtxcb;
+	QUEUE		*p_queue, *p_next;
+	uint_t		priority;
+
+	if (!(TMIN_TSKID <= (tskid) && (tskid) <= tmax_tskid)) {
+		return(E_ID);
+	}
+	p_tcb = get_tcb(tskid);
+	priority = p_tcb->bpriority;
+
+	/*
+	 *  ^XNªbNµÄ¢é~
+[ebNXÌL
+[Ì¸
+	 */
+	p_queue = p_tcb->mutex_queue.p_next;
+	if (p_queue->p_prev != &(p_tcb->mutex_queue)) {
+		return(E_SYS_LINENO);
+	}
+	while (p_queue != &(p_tcb->mutex_queue)) {
+		p_mtxcb = MTXCB_QUEUE(p_queue);
+		if (!VALID_MTXCB(p_mtxcb)) {
+			return(E_SYS_LINENO);
+		}
+
+		/*
+		 *  ~
+[ebNXðbNµÄ¢é^XNÌ`FbN
+		 */
+		if (p_mtxcb->p_loctsk != p_tcb) {
+			return(E_SYS_LINENO);
+		}
+
+		/*
+		 *  »ÝDæxÌvZ
+		 */
+		if (MTXPROTO(p_mtxcb)) {
+			if (p_mtxcb->p_mtxinib->ceilpri < priority) {
+				priority = p_mtxcb->p_mtxinib->ceilpri;
+			}
+		}
+
+		/*
+		 *  L
+[ÌÌvfÉiÞ
+		 */
+		p_next = p_queue->p_next;
+		if (p_next->p_prev != p_queue) {
+			return(E_SYS_LINENO);
+		}
+		p_queue = p_next;
+	}
+
+	/*
+	 *  »ÝDæxÌ¸
+	 */
+	if (p_tcb->priority != p_tcb->priority) {
+		return(E_SYS_LINENO);
+	}
+
+	/*
+	 *  ^XNªÒÁÄ¢é~
+[ebNXÉÖ·é¸
+	 */
+	if (TSTAT_WAIT_MTX(p_tcb->tstat)) {
+		p_mtxcb = ((WINFO_MTX *)(p_tcb->p_winfo))->p_mtxcb;
+		if (!VALID_MTXCB(p_mtxcb)) {
+			return(E_SYS_LINENO);
+		}
+		if (!in_queue(&(p_mtxcb->wait_queue), &(p_tcb->task_queue))) {
+			return(E_SYS_LINENO);
+		}
+	}
+	return(E_OK);
+}
+
+/*
+ *  ~
+[ebNXÌ¸
+ */
+static ER
+bit_mutex_mutex(ID mtxid)
+{
+	MTXCB		*p_mtxcb;
+	TCB			*p_tcb;
+	QUEUE		*p_queue, *p_next;
+	uint_t		priority;
+
+	if (!(TMIN_MTXID <= (mtxid) && (mtxid) <= tmax_mtxid)) {
+		return(E_ID);
+	}
+	p_mtxcb = get_mtxcb(mtxid);
+
+	/*
+	 *  ú»ubNÖÌ|C^Ì¸
+	 */
+	if (p_mtxcb->p_mtxinib != &(mtxinib_table[INDEX_MTX(mtxid)])) {
+		return(E_SYS_LINENO);
+	}
+
+	/*
+	 *  ~
+[ebNXÒ¿L
+[Ì¸
+	 */
+	p_queue = p_mtxcb->wait_queue.p_next;
+	if (p_queue->p_prev != &(p_mtxcb->wait_queue)) {
+		return(E_SYS_LINENO);
+	}
+	priority = TMIN_TPRI;
+	while (p_queue != &(p_mtxcb->wait_queue)) {
+		p_tcb = (TCB *) p_queue;
+		if (!VALID_TCB(p_tcb)) {
+			return(E_SYS_LINENO);
+		}
+
+		/*
+		 *  L
+[ª^XNDæxÉÈÁÄ¢é©Ì¸
+		 */
+		if (MTXPROTO(p_mtxcb) != TA_NULL) {
+			if (p_tcb->priority < priority) {
+				return(E_SYS_LINENO);
+			}
+		}
+		priority = p_tcb->priority;
+
+		/*
+		 *  ^XNóÔÌ¸
+		 *
+		 *  ~
+[ebNXÒ¿óÔÌ^XNÌ¸ÍC^XNÌ¸ÅsÁ
+		 *  Ä¢é½ßC±±ÅÍsíÈ¢D
+		 */
+		if (!TSTAT_WAIT_MTX(p_tcb->tstat)) {
+			return(E_SYS_LINENO);
+		}
+
+		/*
+		 *  DæxãÀÌ¸
+		 */
+		if (MTXPROTO(p_mtxcb) == TA_CEILING) {
+			if (p_tcb->bpriority < p_mtxcb->p_mtxinib->ceilpri) {
+				return(E_SYS_LINENO);
+			}
+		}
+
+		/*
+		 *  L
+[ÌÌvfÉiÞ
+		 */
+		p_next = p_queue->p_next;
+		if (p_next->p_prev != p_queue) {
+			return(E_SYS_LINENO);
+		}
+		p_queue = p_next;
+	}
+
+	/*
+	 *  ~
+[ebNXðbNµÄ¢é^XNÌ¸
+	 */
+	p_tcb = p_mtxcb->p_loctsk;
+	if (p_tcb == NULL) {
+		/*
+		 *  ~
+[ebNXªbN³êÄ¢È¢
+		 */
+		if (!queue_empty(&(p_mtxcb->wait_queue))) {
+			return(E_SYS_LINENO);
+		}
+	}
+	else {
+		/*
+		 *  ~
+[ebNXªbN³êÄ¢é
+		 *
+		 *  ~
+[ebNXðbNµÄ¢é^XNÌ¸ÍC^XNÌ
+		 *  ¸ÅsÁÄ¢é½ßC±±ÅÍsíÈ¢D
+		 */
+		if (!VALID_TCB(p_tcb)) {
+			return(E_SYS_LINENO);
+		}
+		if (!in_queue(&(p_tcb->mutex_queue), &(p_mtxcb->mutex_queue))) {
+			return(E_SYS_LINENO);
+		}
+
+		/*
+		 *  DæxãÀÌ¸
+		 */
+		if (MTXPROTO(p_mtxcb) == TA_CEILING) {
+			if (p_tcb->bpriority < p_mtxcb->p_mtxinib->ceilpri) {
+				return(E_SYS_LINENO);
+			}
+		}
+	}
+	return(E_OK);
+}
+
+/*
+ *  ®«¸[`{Ì
+ */
+ER
+bit_mutex(void)
+{
+	ID		tskid, mtxid;
+	ER		ercd;
+
+	/*
+	 *  ^XNÌ¸
+	 */
+	for (tskid = TMIN_TSKID; tskid <= tmax_tskid; tskid++) {
+		ercd = bit_mutex_task(tskid);
+		if (ercd != E_OK) {
+			return(ercd);
+		}
+	}
+
+	/*
+	 *  ~
+[ebNXÌ¸
+	 */
+	for (mtxid = TMIN_MTXID; mtxid <= tmax_mtxid; mtxid++) {
+		ercd = bit_mutex_mutex(mtxid);
+		if (ercd != E_OK) {
+			return(ercd);
+		}
+	}
+	return(E_OK);
+}
Index: /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex.h	(revision 61)
@@ -0,0 +1,77 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_mutex.h 495 2007-08-20 02:39:10Z hiro $
+ */
+
+/* 
+ *		~
+[ebNXÌeXg(1)`(3)
+ */
+
+/*
+ *  ^[QbgË¶Ìè`
+ */
+#include "target_test.h"
+
+/*
+ *  DæxÌè`
+ */
+#define HIGH_PRIORITY	9		/* Dæx */
+#define MID_PRIORITY	10		/* Dæx */
+#define LOW_PRIORITY	11		/* áDæx */
+
+/*
+ *  ^[QbgÉË¶·éÂ\«Ì éèÌè`
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ^XNÌX^bNTCY */
+#endif /* STACK_SIZE */
+
+/*
+ *  ÖÌvg^Cvé¾
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+extern void	task1(intptr_t exinf);
+extern void	task2(intptr_t exinf);
+extern void	task3(intptr_t exinf);
+
+#endif /* TOPPERS_MACRO_ONLY */
Index: /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex1.c
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex1.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex1.c	(revision 61)
@@ -0,0 +1,280 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007,2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_mutex1.c 1696 2010-01-01 16:01:25Z ertl-hiro $
+ */
+
+/* 
+ *		~
+[ebNXÌeXg(1)
+ *
+ * yeXgÌÚIz
+ *
+ *  FIFO~
+[ebNXðCbN·éÆbNð·éðêÊè
+ *  eXg·éD
+ *
+ * yeXgÚz
+ *
+ *	(A) ~
+[ebNXÌbNiloc_mtxj
+ *		(A-1) bN³êÄ¢È¢êÉÍC·®ÉbNÅ«é±Æ
+ *		(A-2) ½dÉbNµæ¤Æ·éÆCE_ILUSEG[ÉÈé±Æ
+ *		(A-3) bN³êÄ¢éêÉÍCFIFOÅÒ¿óÔÉÈé±Æ
+ *	(B) ~
+[ebNXÌbNðiunl_mtxj
+ *		(B-1) ¼^XNªbNµÄ¢é~
+[ebNXððúµæ¤Æ·éÆ
+ *		@@@E_ILUSEG[ÉÈé±Æ
+ *		(B-2) Ò¿^XNªÈ¢ÆCPÉbNð·é±Æ
+ *		(B-3) Ò¿^XNÉbNðn·±Æ
+ *		(B-4) Ò¿^XNÉbNðnµÄCfBXpb`ªN±é±Æ
+ *	(C) ~
+[ebNXÌbNiploc_mtxj
+ *		(C-1) bN³êÄ¢éêÉÍC·®ÉE_TMOUTG[ÉÈé±Æ
+ *	(D) ~
+[ebNXÌbNitloc_mtxj
+ *		(D-1) bN³êÄ¢éêÉÍC^CAEgt«ÌÒ¿óÔÉÈ
+ *		@@@é±Æ
+ *	(E) ¨Ü¯
+ *		(E-1) ^XNðI¹·éÆC~
+[ebNXðbNð·é±Æ
+ *
+ * ygp\[Xz
+ *
+ *	TASK1: áDæx^XNCC^XNCÅ©çN®
+ *	TASK2: Dæx^XN
+ *	TASK3: Dæx^XN
+ *	MTX1: ~
+[ebNXiTA_NULL®«j
+ *
+ * yeXgV[PXz
+ *
+ *	== TASK1iDæxFáj==
+ *		call(set_bit_func(bit_mutex))
+ *	1:	ref_mtx(MTX1, &rmtx)
+ *		assert(rmtx.htskid == TSK_NONE)
+ *		assert(rmtx.wtskid == TSK_NONE)
+ *		loc_mtx(MTX1)					... (A-1)
+ *	2:	loc_mtx(MTX1) -> E_ILUSE		... (A-2)
+ *	3:	ref_mtx(MTX1, &rmtx)
+ *		assert(rmtx.htskid == TASK1)
+ *		assert(rmtx.wtskid == TSK_NONE)
+ *		act_tsk(TASK2)
+ *	== TASK2iDæxFj==
+ *	4:	ploc_mtx(MTX1) -> E_TMOUT		... (C-1)
+ *		loc_mtx(MTX1)					... (A-3)
+ *	== TASK1i±«j==
+ *	5:	ref_mtx(MTX1, &rmtx)
+ *		assert(rmtx.htskid == TASK1)
+ *		assert(rmtx.wtskid == TASK2)
+ *		act_tsk(TASK3)
+ *	== TASK3iDæxFj==
+ *	6:	unl_mtx(MTX1) -> E_ILUSE		... (B-1)
+ *	7:	loc_mtx(MTX1)					... (A-3)
+ *	== TASK1i±«j==
+ *	8:	ref_mtx(MTX1, &rmtx)
+ *		assert(rmtx.htskid == TASK1)
+ *		assert(rmtx.wtskid == TASK2)
+ *		dis_dsp()
+ *		unl_mtx(MTX1)					... (B-3)
+ *	9:	ref_mtx(MTX1, &rmtx)
+ *		assert(rmtx.htskid == TASK2)
+ *		assert(rmtx.wtskid == TASK3)
+ *		ena_dsp()
+ *	== TASK2i±«j==
+ *	10:	unl_mtx(MTX1)					... (B-4)
+ *	== TASK3i±«j==
+ *	11:	ext_tsk() -> noreturn			... (E-1)
+ *	== TASK2i±«j==
+ *	12:	loc_mtx(MTX1)
+ *	13:	slp_tsk()
+ *	== TASK1i±«j==
+ *	14:	ref_mtx(MTX1, &rmtx)
+ *		assert(rmtx.htskid == TASK2)
+ *		assert(rmtx.wtskid == TSK_NONE)
+ *		tloc_mtx(MTX1, 10) -> E_TMOUT	... (D-1)
+ *	15:	wup_tsk(TASK2)
+ *	== TASK2i±«j==
+ *	16:	unl_mtx(MTX1)					... (B-2)
+ *	17:	ext_tsk() -> noreturn
+ *	== TASK1i±«j==
+ *	18:	END
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include "syssvc/logtask.h"
+#include "kernel_cfg.h"
+#include "test_lib.h"
+#include "test_mutex.h"
+
+extern ER	bit_mutex(void);
+
+void
+task1(intptr_t exinf)
+{
+	ER		ercd;
+	T_RMTX	rmtx;
+
+	set_bit_func(bit_mutex);
+
+	check_point(1);
+	ercd = ref_mtx(MTX1, &rmtx);
+	check_ercd(ercd, E_OK);
+	check_assert(rmtx.htskid == TSK_NONE);
+	check_assert(rmtx.wtskid == TSK_NONE);
+
+	ercd = loc_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	check_point(2);
+	ercd = loc_mtx(MTX1);
+	check_ercd(ercd, E_ILUSE);
+
+	check_point(3);
+	ercd = ref_mtx(MTX1, &rmtx);
+	check_ercd(ercd, E_OK);
+	check_assert(rmtx.htskid == TASK1);
+	check_assert(rmtx.wtskid == TSK_NONE);
+
+	ercd = act_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_point(5);
+	ercd = ref_mtx(MTX1, &rmtx);
+	check_ercd(ercd, E_OK);
+	check_assert(rmtx.htskid == TASK1);
+	check_assert(rmtx.wtskid == TASK2);
+
+	ercd = act_tsk(TASK3);
+	check_ercd(ercd, E_OK);
+
+	check_point(8);
+	ercd = ref_mtx(MTX1, &rmtx);
+	check_ercd(ercd, E_OK);
+	check_assert(rmtx.htskid == TASK1);
+	check_assert(rmtx.wtskid == TASK2);
+
+	ercd = dis_dsp();
+	check_ercd(ercd, E_OK);
+
+	ercd = unl_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	check_point(9);
+	ercd = ref_mtx(MTX1, &rmtx);
+	check_ercd(ercd, E_OK);
+	check_assert(rmtx.htskid == TASK2);
+	check_assert(rmtx.wtskid == TASK3);
+
+	ercd = ena_dsp();
+	check_ercd(ercd, E_OK);
+
+	check_point(14);
+	ercd = ref_mtx(MTX1, &rmtx);
+	check_ercd(ercd, E_OK);
+	check_assert(rmtx.htskid == TASK2);
+	check_assert(rmtx.wtskid == TSK_NONE);
+
+	ercd = tloc_mtx(MTX1, 10);
+	check_ercd(ercd, E_TMOUT);
+
+	check_point(15);
+	ercd = wup_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_finish(18);
+
+	check_point(0);
+}
+
+void
+task2(intptr_t exinf)
+{
+	ER		ercd;
+
+	check_point(4);
+	ercd = ploc_mtx(MTX1);
+	check_ercd(ercd, E_TMOUT);
+
+	ercd = loc_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	check_point(10);
+	ercd = unl_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	check_point(12);
+	ercd = loc_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	check_point(13);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(16);
+	ercd = unl_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	check_point(17);
+	ercd = ext_tsk();
+
+	check_point(0);
+}
+
+void
+task3(intptr_t exinf)
+{
+	ER		ercd;
+
+	check_point(6);
+	ercd = unl_mtx(MTX1);
+	check_ercd(ercd, E_ILUSE);
+
+	check_point(7);
+	ercd = loc_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	check_point(11);
+	ercd = ext_tsk();
+
+	check_point(0);
+}
Index: /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex1.cfg
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex1.cfg	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex1.cfg	(revision 61)
@@ -0,0 +1,21 @@
+/*
+ *  @(#) $Id: test_mutex1.cfg 1696 2010-01-01 16:01:25Z ertl-hiro $
+ */
+
+/*
+ *  ~
+[ebNXÌeXg(1)ÌVXeRtBM
+[Vt@C
+ */
+INCLUDE("target_timer.cfg");
+INCLUDE("syssvc/syslog.cfg");
+INCLUDE("syssvc/banner.cfg");
+INCLUDE("syssvc/serial.cfg");
+INCLUDE("syssvc/logtask.cfg");
+
+#include "test_mutex.h"
+
+CRE_TSK(TASK1, { TA_ACT, 1, task1, LOW_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK2, { TA_NULL, 2, task2, MID_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK3, { TA_NULL, 3, task3, HIGH_PRIORITY, STACK_SIZE, NULL });
+CRE_MTX(MTX1, { TA_NULL });
Index: /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex2.c
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex2.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex2.c	(revision 61)
@@ -0,0 +1,279 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007,2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_mutex2.c 1696 2010-01-01 16:01:25Z ertl-hiro $
+ */
+
+/* 
+ *		~
+[ebNXÌeXg(2)
+ *
+ * yeXgÌÚIz
+ *
+ *  Dæx~
+[ebNXðCbN·éÆbNð·éðêÊ
+ *  èeXg·éD
+ *
+ * yeXgÚz
+ *
+ *	(A) ~
+[ebNXÌbNiloc_mtxj
+ *		(A-1) bN³êÄ¢È¢êÉÍC·®ÉbNÅ«é±Æ
+ *		(A-2) ½dÉbNµæ¤Æ·éÆCE_ILUSEG[ÉÈé±Æ
+ *		(A-3) bN³êÄ¢éêÉÍCDæxÅÒ¿óÔÉÈé±Æ
+ *	(B) ~
+[ebNXÌbNðiunl_mtxj
+ *		(B-1) ¼^XNªbNµÄ¢é~
+[ebNXððúµæ¤Æ·éÆ
+ *		@@@E_ILUSEG[ÉÈé±Æ
+ *		(B-2) Ò¿^XNªÈ¢ÆCPÉbNð·é±Æ
+ *		(B-3) Ò¿^XNÉbNðn·±Æ
+ *		(B-4) Ò¿^XNÉbNðnµÄCfBXpb`ªN±é±Æ
+ *	(C) ~
+[ebNXÌbNiploc_mtxj
+ *		(C-1) bN³êÄ¢éêÉÍC·®ÉE_TMOUTG[ÉÈé±Æ
+ *	(D) ~
+[ebNXÌbNitloc_mtxj
+ *		(D-1) bN³êÄ¢éêÉÍC^CAEgt«ÌÒ¿óÔÉÈ
+ *		@@@é±Æ
+ *	(E) ¨Ü¯
+ *		(E-1) ^XNðI¹·éÆC~
+[ebNXðbNð·é±Æ
+ *
+ * ygp\[Xz
+ *
+ *	TASK1: áDæx^XNCC^XNCÅ©çN®
+ *	TASK2: Dæx^XN
+ *	TASK3: Dæx^XN
+ *	MTX1: ~
+[ebNXiTA_TPRI®«j
+ *
+ * yeXgV[PXz
+ *
+ *	== TASK1iDæxFáj==
+ *		call(set_bit_func(bit_mutex))
+ *	1:	ref_mtx(MTX1, &rmtx)
+ *		assert(rmtx.htskid == TSK_NONE)
+ *		assert(rmtx.wtskid == TSK_NONE)
+ *		loc_mtx(MTX1)					... (A-1)
+ *	2:	loc_mtx(MTX1) -> E_ILUSE		... (A-2)
+ *	3:	ref_mtx(MTX1, &rmtx)
+ *		assert(rmtx.htskid == TASK1)
+ *		assert(rmtx.wtskid == TSK_NONE)
+ *		act_tsk(TASK2)
+ *	== TASK2iDæxFj==
+ *	4:	ploc_mtx(MTX1) -> E_TMOUT		... (C-1)
+ *		loc_mtx(MTX1)					... (A-3)
+ *	== TASK1i±«j==
+ *	5:	ref_mtx(MTX1, &rmtx)
+ *		assert(rmtx.htskid == TASK1)
+ *		assert(rmtx.wtskid == TASK2)
+ *		act_tsk(TASK3)
+ *	== TASK3iDæxFj==
+ *	6:	unl_mtx(MTX1) -> E_ILUSE		... (B-1)
+ *	7:	loc_mtx(MTX1)					... (A-3)
+ *	== TASK1i±«j==
+ *	8:	ref_mtx(MTX1, &rmtx)
+ *		assert(rmtx.htskid == TASK1)
+ *		assert(rmtx.wtskid == TASK3)
+ *		dis_dsp()
+ *		unl_mtx(MTX1)					... (B-3)
+ *	9:	ref_mtx(MTX1, &rmtx)
+ *		assert(rmtx.htskid == TASK3)
+ *		assert(rmtx.wtskid == TASK2)
+ *		ena_dsp()
+ *	== TASK3i±«j==
+ *	10:	ext_tsk() -> noreturn			... (E-1)
+ *	== TASK2i±«j==
+ *	11:	unl_mtx(MTX1)					... (B-4)
+ *	12:	loc_mtx(MTX1)
+ *	13:	slp_tsk()
+ *	== TASK1i±«j==
+ *	14:	ref_mtx(MTX1, &rmtx)
+ *		assert(rmtx.htskid == TASK2)
+ *		assert(rmtx.wtskid == TSK_NONE)
+ *		tloc_mtx(MTX1, 10) -> E_TMOUT	... (D-1)
+ *	15:	wup_tsk(TASK2)
+ *	== TASK2i±«j==
+ *	16:	unl_mtx(MTX1)					... (B-2)
+ *	17:	ext_tsk() -> noreturn
+ *	== TASK1i±«j==
+ *	18:	END
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include "syssvc/logtask.h"
+#include "kernel_cfg.h"
+#include "test_lib.h"
+#include "test_mutex.h"
+
+extern ER	bit_mutex(void);
+
+void
+task1(intptr_t exinf)
+{
+	ER		ercd;
+	T_RMTX	rmtx;
+
+	set_bit_func(bit_mutex);
+
+	check_point(1);
+	ercd = ref_mtx(MTX1, &rmtx);
+	check_ercd(ercd, E_OK);
+	check_assert(rmtx.htskid == TSK_NONE);
+	check_assert(rmtx.wtskid == TSK_NONE);
+
+	ercd = loc_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	check_point(2);
+	ercd = loc_mtx(MTX1);
+	check_ercd(ercd, E_ILUSE);
+
+	check_point(3);
+	ercd = ref_mtx(MTX1, &rmtx);
+	check_ercd(ercd, E_OK);
+	check_assert(rmtx.htskid == TASK1);
+	check_assert(rmtx.wtskid == TSK_NONE);
+
+	ercd = act_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_point(5);
+	ercd = ref_mtx(MTX1, &rmtx);
+	check_ercd(ercd, E_OK);
+	check_assert(rmtx.htskid == TASK1);
+	check_assert(rmtx.wtskid == TASK2);
+
+	ercd = act_tsk(TASK3);
+	check_ercd(ercd, E_OK);
+
+	check_point(8);
+	ercd = ref_mtx(MTX1, &rmtx);
+	check_ercd(ercd, E_OK);
+	check_assert(rmtx.htskid == TASK1);
+	check_assert(rmtx.wtskid == TASK3);
+
+	ercd = dis_dsp();
+	check_ercd(ercd, E_OK);
+
+	ercd = unl_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	check_point(9);
+	ercd = ref_mtx(MTX1, &rmtx);
+	check_ercd(ercd, E_OK);
+	check_assert(rmtx.htskid == TASK3);
+	check_assert(rmtx.wtskid == TASK2);
+
+	ercd = ena_dsp();
+	check_ercd(ercd, E_OK);
+
+	check_point(14);
+	ercd = ref_mtx(MTX1, &rmtx);
+	check_ercd(ercd, E_OK);
+	check_assert(rmtx.htskid == TASK2);
+	check_assert(rmtx.wtskid == TSK_NONE);
+
+	ercd = tloc_mtx(MTX1, 10);
+	check_ercd(ercd, E_TMOUT);
+
+	check_point(15);
+	ercd = wup_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_finish(18);
+
+	check_point(0);
+}
+
+void
+task2(intptr_t exinf)
+{
+	ER		ercd;
+
+	check_point(4);
+	ercd = ploc_mtx(MTX1);
+	check_ercd(ercd, E_TMOUT);
+
+	ercd = loc_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	check_point(11);
+	ercd = unl_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	check_point(12);
+	ercd = loc_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	check_point(13);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(16);
+	ercd = unl_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	check_point(17);
+	ercd = ext_tsk();
+
+	check_point(0);
+}
+
+void
+task3(intptr_t exinf)
+{
+	ER		ercd;
+
+	check_point(6);
+	ercd = unl_mtx(MTX1);
+	check_ercd(ercd, E_ILUSE);
+
+	check_point(7);
+	ercd = loc_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	check_point(10);
+	ercd = ext_tsk();
+
+	check_point(0);
+}
Index: /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex2.cfg
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex2.cfg	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex2.cfg	(revision 61)
@@ -0,0 +1,21 @@
+/*
+ *  @(#) $Id: test_mutex2.cfg 1696 2010-01-01 16:01:25Z ertl-hiro $
+ */
+
+/*
+ *  ~
+[ebNXÌeXg(2)ÌVXeRtBM
+[Vt@C
+ */
+INCLUDE("target_timer.cfg");
+INCLUDE("syssvc/syslog.cfg");
+INCLUDE("syssvc/banner.cfg");
+INCLUDE("syssvc/serial.cfg");
+INCLUDE("syssvc/logtask.cfg");
+
+#include "test_mutex.h"
+
+CRE_TSK(TASK1, { TA_ACT, 1, task1, LOW_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK2, { TA_NULL, 2, task2, MID_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK3, { TA_NULL, 3, task3, HIGH_PRIORITY, STACK_SIZE, NULL });
+CRE_MTX(MTX1, { TA_TPRI });
Index: /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex3.c
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex3.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex3.c	(revision 61)
@@ -0,0 +1,316 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007,2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_mutex3.c 1696 2010-01-01 16:01:25Z ertl-hiro $
+ */
+
+/* 
+ *		~
+[ebNXÌeXg(3)
+ *
+ * yeXgÌÚIz
+ *
+ *  DæxãÀ~
+[ebNXðCbN·éÆbNð·éðê
+ *  ÊèeXg·éDref_tskÉæéx[XDæxÆ»ÝDæxÌQÆÌe
+ *  XgàËÄ¢éD
+ *
+ * yeXgÚz
+ *
+ *	(A) ~
+[ebNXÌbNiloc_mtxj
+ *		(A-1) bN³êÄ¢È¢êÉÍC·®ÉbNÅ«é±Æ
+ *		(A-2) ½dÉbNµæ¤Æ·éÆCE_ILUSEG[ÉÈé±Æ
+ *		(A-3) bN³êÄ¢éêÉÍCDæxÅÒ¿óÔÉÈé±Æ
+ *	(B) ~
+[ebNXÌbNðiunl_mtxj
+ *		(B-1) ¼^XNªbNµÄ¢é~
+[ebNXððúµæ¤Æ·éÆ
+ *		@@@E_ILUSEG[ÉÈé±Æ
+ *		(B-2) Ò¿^XNªÈ¢ÆCPÉbNð·é±Æ
+ *		(B-3) Ò¿^XNÉbNðn·±Æ
+ *		(B-4) Ò¿^XNÉbNðnµÄCfBXpb`ªN±é±Æ
+ *	(C) ~
+[ebNXÌbNiploc_mtxj
+ *		(C-1) bN³êÄ¢éêÉÍC·®ÉE_TMOUTG[ÉÈé±Æ
+ *	(D) ~
+[ebNXÌbNitloc_mtxj
+ *		(D-1) bN³êÄ¢éêÉÍC^CAEgt«ÌÒ¿óÔÉÈ
+ *		@@@é±Æ
+ *	(E) ¨Ü¯
+ *		(E-1) ^XNðI¹·éÆC~
+[ebNXðbNð·é±Æ
+ *
+ * ygp\[Xz
+ *
+ *	TASK1: áDæx^XNCC^XNCÅ©çN®
+ *	TASK2: Dæx^XN
+ *	TASK3: Dæx^XN
+ *	MTX1: ~
+[ebNXiTA_CEILING®«CãÀÍDæxj
+ *
+ * yeXgV[PXz
+ *
+ *	== TASK1iDæxFáj==
+ *		call(set_bit_func(bit_mutex))
+ *	1:	ref_mtx(MTX1, &rmtx)
+ *		assert(rmtx.htskid == TSK_NONE)
+ *		assert(rmtx.wtskid == TSK_NONE)
+ *		loc_mtx(MTX1)					... (A-1)
+ *	2:	ref_tsk(TASK1, &rtsk)
+ *		assert(rtsk.tskpri == HIGH_PRIORITY)
+ *		assert(rtsk.tskbpri == LOW_PRIORITY)
+ *		loc_mtx(MTX1) -> E_ILUSE		... (A-2)
+ *	3:	ref_mtx(MTX1, &rmtx)
+ *		assert(rmtx.htskid == TASK1)
+ *		assert(rmtx.wtskid == TSK_NONE)
+ *		act_tsk(TASK2)
+ *	4:	tslp_tsk(10) -> E_TMOUT
+ *	== TASK2iDæxFj==
+ *	5:	ploc_mtx(MTX1) -> E_TMOUT		... (C-1)
+ *		loc_mtx(MTX1)					... (A-3)
+ *	== TASK1i±«j==
+ *	6:	ref_mtx(MTX1, &rmtx)
+ *		assert(rmtx.htskid == TASK1)
+ *		assert(rmtx.wtskid == TASK2)
+ *		act_tsk(TASK3)
+ *	7:	tslp_tsk(10) -> E_TMOUT
+ *	== TASK3iDæxFj==
+ *	8:	unl_mtx(MTX1) -> E_ILUSE		... (B-1)
+ *	9:	loc_mtx(MTX1)					... (A-3)
+ *	== TASK1i±«j==
+ *	10:	ref_mtx(MTX1, &rmtx)
+ *		assert(rmtx.htskid == TASK1)
+ *		assert(rmtx.wtskid == TASK3)
+ *		dis_dsp()
+ *		unl_mtx(MTX1)					... (B-3)
+ *	11:	ref_tsk(TASK1, &rtsk)
+ *		assert(rtsk.tskpri == LOW_PRIORITY)
+ *		assert(rtsk.tskbpri == LOW_PRIORITY)
+ *		ref_mtx(MTX1, &rmtx)
+ *		assert(rmtx.htskid == TASK3)
+ *		assert(rmtx.wtskid == TASK2)
+ *		ena_dsp()
+ *	== TASK3i±«j==
+ *	12:	ext_tsk() -> noreturn			... (E-1)
+ *	== TASK2i±«j==
+ *	13:	ref_tsk(TASK2, &rtsk)
+ *		assert(rtsk.tskpri == HIGH_PRIORITY)
+ *		assert(rtsk.tskbpri == MID_PRIORITY)
+ *		unl_mtx(MTX1)					... (B-4)
+ *	14:	loc_mtx(MTX1)
+ *	15:	slp_tsk()
+ *	== TASK1i±«j==
+ *	16:	ref_mtx(MTX1, &rmtx)
+ *		assert(rmtx.htskid == TASK2)
+ *		assert(rmtx.wtskid == TSK_NONE)
+ *		tloc_mtx(MTX1, 10) -> E_TMOUT	... (D-1)
+ *	17:	wup_tsk(TASK2)
+ *	== TASK2i±«j==
+ *	18:	unl_mtx(MTX1)					... (B-2)
+ *	19:	ext_tsk() -> noreturn
+ *	== TASK1i±«j==
+ *	20:	END
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include "syssvc/logtask.h"
+#include "kernel_cfg.h"
+#include "test_lib.h"
+#include "test_mutex.h"
+
+extern ER	bit_mutex(void);
+
+void
+task1(intptr_t exinf)
+{
+	ER		ercd;
+	T_RTSK	rtsk;
+	T_RMTX	rmtx;
+
+	set_bit_func(bit_mutex);
+
+	check_point(1);
+	ercd = ref_mtx(MTX1, &rmtx);
+	check_ercd(ercd, E_OK);
+	check_assert(rmtx.htskid == TSK_NONE);
+	check_assert(rmtx.wtskid == TSK_NONE);
+
+	ercd = loc_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	check_point(2);
+	ercd = ref_tsk(TASK1, &rtsk);
+	check_ercd(ercd, E_OK);
+	check_assert(rtsk.tskpri == HIGH_PRIORITY);
+	check_assert(rtsk.tskbpri == LOW_PRIORITY);
+
+	ercd = loc_mtx(MTX1);
+	check_ercd(ercd, E_ILUSE);
+
+	check_point(3);
+	ercd = ref_mtx(MTX1, &rmtx);
+	check_ercd(ercd, E_OK);
+	check_assert(rmtx.htskid == TASK1);
+	check_assert(rmtx.wtskid == TSK_NONE);
+
+	ercd = act_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_point(4);
+	ercd = tslp_tsk(10);
+	check_ercd(ercd, E_TMOUT);
+
+	check_point(6);
+	ercd = ref_mtx(MTX1, &rmtx);
+	check_ercd(ercd, E_OK);
+	check_assert(rmtx.htskid == TASK1);
+	check_assert(rmtx.wtskid == TASK2);
+
+	ercd = act_tsk(TASK3);
+	check_ercd(ercd, E_OK);
+
+	check_point(7);
+	ercd = tslp_tsk(10);
+	check_ercd(ercd, E_TMOUT);
+
+	check_point(10);
+	ercd = ref_mtx(MTX1, &rmtx);
+	check_ercd(ercd, E_OK);
+	check_assert(rmtx.htskid == TASK1);
+	check_assert(rmtx.wtskid == TASK3);
+
+	ercd = dis_dsp();
+	check_ercd(ercd, E_OK);
+
+	ercd = unl_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	check_point(11);
+	ercd = ref_tsk(TASK1, &rtsk);
+	check_ercd(ercd, E_OK);
+	check_assert(rtsk.tskpri == LOW_PRIORITY);
+	check_assert(rtsk.tskbpri == LOW_PRIORITY);
+
+	ercd = ref_mtx(MTX1, &rmtx);
+	check_ercd(ercd, E_OK);
+	check_assert(rmtx.htskid == TASK3);
+	check_assert(rmtx.wtskid == TASK2);
+
+	ercd = ena_dsp();
+	check_ercd(ercd, E_OK);
+
+	check_point(16);
+	ercd = ref_mtx(MTX1, &rmtx);
+	check_ercd(ercd, E_OK);
+	check_assert(rmtx.htskid == TASK2);
+	check_assert(rmtx.wtskid == TSK_NONE);
+
+	ercd = tloc_mtx(MTX1, 10);
+	check_ercd(ercd, E_TMOUT);
+
+	check_point(17);
+	ercd = wup_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_finish(20);
+
+	check_point(0);
+}
+
+void
+task2(intptr_t exinf)
+{
+	ER		ercd;
+	T_RTSK	rtsk;
+
+	check_point(5);
+	ercd = ploc_mtx(MTX1);
+	check_ercd(ercd, E_TMOUT);
+
+	ercd = loc_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	check_point(13);
+	ercd = ref_tsk(TASK2, &rtsk);
+	check_ercd(ercd, E_OK);
+	check_assert(rtsk.tskpri == HIGH_PRIORITY);
+	check_assert(rtsk.tskbpri == MID_PRIORITY);
+
+	ercd = unl_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	check_point(14);
+	ercd = loc_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	check_point(15);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(18);
+	ercd = unl_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	check_point(19);
+	ercd = ext_tsk();
+
+	check_point(0);
+}
+
+void
+task3(intptr_t exinf)
+{
+	ER		ercd;
+
+	check_point(8);
+	ercd = unl_mtx(MTX1);
+	check_ercd(ercd, E_ILUSE);
+
+	check_point(9);
+	ercd = loc_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	check_point(12);
+	ercd = ext_tsk();
+
+	check_point(0);
+}
Index: /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex3.cfg
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex3.cfg	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex3.cfg	(revision 61)
@@ -0,0 +1,21 @@
+/*
+ *  @(#) $Id: test_mutex3.cfg 733 2008-01-24 08:28:59Z hiro $
+ */
+
+/*
+ *  ~
+[ebNXÌeXg(3)ÌVXeRtBM
+[Vt@C
+ */
+INCLUDE("target_timer.cfg");
+INCLUDE("syssvc/syslog.cfg");
+INCLUDE("syssvc/banner.cfg");
+INCLUDE("syssvc/serial.cfg");
+INCLUDE("syssvc/logtask.cfg");
+
+#include "test_mutex.h"
+
+CRE_TSK(TASK1, { TA_ACT, 1, task1, LOW_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK2, { TA_NULL, 2, task2, MID_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK3, { TA_NULL, 3, task3, HIGH_PRIORITY, STACK_SIZE, NULL });
+CRE_MTX(MTX1, { TA_CEILING, HIGH_PRIORITY });
Index: /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex4.c
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex4.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex4.c	(revision 61)
@@ -0,0 +1,761 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2009 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_mutex4.c 1696 2010-01-01 16:01:25Z ertl-hiro $
+ */
+
+/* 
+ *		~
+[ebNXÌeXg(4)
+ *
+ * yeXgÌÚIz
+ *
+ *  DæxãÀ~
+[ebNXÉÎµÄCloc_mtxÆunl_mtxÉº¤DæxÌÏ
+ *  XðÔ
+IÉeXg·éD½¾µCchange_priorityÆ
+ *  mutex_calc_priorityÌàeÉÍ¥ÝÜÈ¢D
+ *
+ * yeXgÚz
+ *
+ *	(A) ~
+[ebNXÌbNiloc_mtxjÉº¤DæxÏX
+ *		(A-1) bNµ½~
+[ebNXÌDæxãÀª©^XNÌ»ÝDæ
+ *			  xæèà¢êÉC©^XNÌDæxª»ÌDæxãÀÜÅ
+ *			  ãªé±ÆDÜ½C¯¶DæxàÅÌDæÊªÅÉÈé±
+ *			  Æ
+ *		(A-2) bNµ½~
+[ebNXÌDæxãÀª©^XNÌ»ÝDæ
+ *			  xÆ¯¶êÉC©^XNÌDæxªÏíçÈ¢±ÆDÜ½C
+ *			  ¯¶DæxàÅÌDæÊªÏíçÈ¢±Æ
+ *		(A-3) bNµ½~
+[ebNXÌDæxãÀª©^XNÌ»ÝDæ
+ *			  xæèàá¢êÉC©^XNÌDæxªÏíçÈ¢±ÆDÜ
+ *			  ½C¯¶DæxàÅÌDæÊªÏíçÈ¢±Æ
+ *	(B) ~
+[ebNXÌbNðiunl_mtxjÉº¤bNðµ½
+ * 		^XNÌDæxÏX
+ *		(B-1) bNðµ½~
+[ebNXÌãÀDæxª©^XNÌ»Ý
+ *			  DæxÆ¯¶ÅC~
+[ebNXÌbNðÅDæxªºª
+ *			  é×«êÉC©^XNÌDæxªKØÉº°çêé±ÆDÜ
+ *			  ½C¯¶DæxàÅÌDæÊªÅÉÈé±Æ
+ *		(B-2) bNðµ½~
+[ebNXÌãÀDæxª©^XNÌ»Ý
+ *			  DæxÆ¯¶ÅC~
+[ebNXÌbNðÅDæxªÏí
+ *			  é×«ÅÈ¢êÉC©^XNÌDæxªÏíçÈ¢±ÆDÜ
+ *			  ½C¯¶DæxàÅÌDæÊªÏíçÈ¢±Æ
+ *		(B-3) bNðµ½~
+[ebNXÌãÀDæxª©^XNÌ»Ý
+ *			  Dæxæèàá¢êÉC©^XNÌDæxªÏíçÈ¢±ÆD
+ *			  Ü½C¯¶DæxàÅÌDæÊªÏíçÈ¢±Æ
+ *	(C) ~
+[ebNXÌbNðiunl_mtxjÉº¢~
+[ebNXð
+ *		bNµ½^XNÌDæxÏX
+ *		(C-1) ~
+[ebNXÌDæxãÀªV½É~
+[ebNXðbN
+ *			  µ½^XNÌ»ÝDæxæèà¢êÉCY^XNÌDæ
+ *			  xª»ÌDæxãÀÜÅãªé±ÆDÜ½C¯¶DæxàÅÌ
+ *			  DæÊªÅáÉÈé±Æ
+ *		(C-2) ~
+[ebNXÌDæxãÀªV½É~
+[ebNXðbN
+ *			  µ½^XNÌ»ÝDæxÆ¯¶êÉCY^XNÌDæxª
+ *			  ÏíçÈ¢±ÆDÜ½C¯¶DæxàÅÌDæÊªÅáÉÈ
+ *			  é±Æ
+ *		(C-3) ~
+[ebNXÌDæxãÀªV½É~
+[ebNXðbN
+ *			  µ½^XNÌ»ÝDæxæèàá¢êÉCY^XNÌDæ
+ *			  xªÏíçÈ¢±ÆDÜ½C¯¶DæxàÅÌDæÊªÅá
+ *			  ÉÈé±Æ
+ *	(D) ~
+[ebNXÌbNiloc_mtxjÌE_ILUSEG[
+ *		(D-1) ©^XNÌx[XDæxªCbNµæ¤Æµ½~
+[ebN
+ *			  XÌãÀDæxæèà¢CE_ILUSEG[ÉÈé±Æ
+ *		(D-2) ©^XNÌx[XDæxªCbNµæ¤Æµ½~
+[ebN
+ *			  XÌãÀDæxÆ¯¶©»êæèá¯êÎC©^XNÌ»ÝD
+ *			  æxª»êæè­ÄàCE_ILUSEG[ÉÈçÈ¢±Æ
+ *
+ * yeXgÚÌÀ»û@z
+ *
+ *	(A-1)
+ *		Dæx^XNiTASK1jÉCDæxãÀ~
+[ebNXiMTX2jð
+ *		bN³¹CDæxÉÈé±ÆðmF·éDÜ½CÀsÂ\óÔÌ
+ *		Dæx^XNiTASK4jæèàCDæÊª­Èé±ÆðmF·éD
+ *		fBXpb`Ö~óÔÅÀ{·éD
+ *	(A-2)
+ *		Dæx^XNiTASK1jÉCDæxãÀ~
+[ebNXiMTX1jð
+ *		bN³¹CDæxªÏíçÈ¢±ÆðmF·éDÜ½CÀsÂ\ó
+ *		ÔÌDæx^XNð2ÂiTASK2CTASK3jðpÓµÄ¨«CDæÊ
+ *		ªÏíçÈ¢±ÆðmF·éDfBXpb`Ö~óÔÅÀ{·éD
+ *	(A-3)
+ *		Dæx^XNiTASK1jªDæxãÀ~
+[ebNXiMTX2jðb
+ *		NµÄDæxÉÈÁÄ¢éóÔÅCDæxãÀ~
+[ebNX
+ *		iMTX1jðbN³¹CDæxªÏíçÈ¢±ÆðmF·éDÜ½C
+ *		ÀsÂ\óÔÌDæx^XNð2ÂiTASK4CTASK5jðpÓµÄ¨«C
+ *		DæÊªÏíçÈ¢±ÆðmF·éDfBXpb`Ö~óÔÅÀ{
+ *		·éD
+ *	(B-1)
+ *		Dæx^XNiTASK1jÉDæxãÀ~
+[ebNXiMTX2jÌÝ
+ *		ðbN³¹Ä¢éóÔÅC»êðbNð³¹CDæxÉÈé
+ *		±ÆðmF·éDÜ½CÀsÂ\óÔÌDæx^XNiTASK2jæè
+ *		àCDæÊª­Èé±ÆðmF·éD
+ *	(B-2)
+ *		Dæx^XNiTASK1jÉDæxãÀ~
+[ebNXiMTX1jÌÝ
+ *		ðbN³¹Ä¢éóÔÅC»êðbNð³¹CDæxªÏíç
+ *		È¢±ÆðmF·éDÜ½CÀsÂ\óÔÌDæx^XNð2Â
+ *		iTASK2CTASK3jðpÓµÄ¨«CDæÊªÏíçÈ¢±ÆðmF
+ *		·éDfBXpb`Ö~óÔÅÀ{·éD
+ *	(B-3)
+ *		Dæx^XNiTASK1jÉDæxãÀ~
+[ebNXiMTX2jÆ
+ *		DæxãÀ~
+[ebNXiMTX1jðbN³¹Ä¢éóÔÅCD
+ *		æxãÀ~
+[ebNXiMTX1jðbNð³¹CDæxªÏíç
+ *		È¢±ÆðmF·éDÜ½CÀsÂ\óÔÌDæx^XNð2Â
+ *		iTASK4CTASK5jðpÓµÄ¨«CDæÊªÏíçÈ¢±ÆðmF
+ *		·éDfBXpb`Ö~óÔÅÀ{·éD
+ *	(C-1)
+ *		Dæx^XNiTASK1jÉDæxãÀ~
+[ebNXð2ÂiMTX2C
+ *		MTX3jbN³¹CÊÌDæx^XNiTASK2jªMTX2ðÒÁÄ¢é
+ *		óÔÅCTASK1ÉMTX2ðbNð³¹CTASK2ÌDæxªDæxÉ
+ *		Èé±ÆðmF·éDÜ½CTASK2ÌDæÊªCTASK1æèàá­È
+ *		é±ÆðmF·éD
+ *	(C-2)
+ *		Dæx^XNiTASK2jÉDæxãÀ~
+[ebNXiMTX1jðb
+ *		N³¹CÊÌDæx^XNiTASK1jªMTX1ðÒÁÄ¢éóÔÅC
+ *		TASK2ÉMTX1ðbNð³¹CTASK1ÌDæxªDæxÌÜÜÏ»
+ *		µÈ¢±ÆðmF·éDÜ½CÀsÂ\óÔÌDæx^XNðà¤
+ *		1ÂiTASK3jpÓµÄ¨«CTASK1ÌDæÊªTASK3æèàá­Èé
+ *		±ÆðmF·éD
+ *	(C-3)
+ *		Dæx^XNiTASK1jÉDæxãÀ~
+[ebNXiMTX1jÆ
+ *		DæxãÀ~
+[ebNXiMTX3jðbN³¹CÊÌDæx^X
+ *		NiTASK2jªÊÌDæxãÀ~
+[ebNXiMTX2jðbNµÄ
+ *		MTX1ðÒÁÄ¢éóÔÅCTASK1ÉMTX1ðbNð³¹CTASK2ÌD
+ *		æxªDæxÌÜÜÏ»µÈ¢±ÆðmF·éDÜ½CTASK2ÌDæ
+ *		ÊªCTASK1æèàá­Èé±ÆðmF·éD
+ *	(D-1)
+ *		Dæx^XNiTASK4jÉCDæxãÀ~
+[ebNXiMTX1jð
+ *		bN³¹CE_ILUSEG[ÉÈé±ÆðmF·éD
+ *	(D-2)
+ *		Dæx^XNiTASK1jªDæxãÀ~
+[ebNXiMTX2jðb
+ *		NµÄDæxÉÈÁÄ¢éóÔÅCDæxãÀ~
+[ebNX
+ *		iMTX1jðbN³¹CE_ILUSEG[ÉÈéÈ¢±ÆðmF·éD
+ *
+ * ygp\[Xz
+ *
+ *	TASK1: Dæx^XNCC^XNCÅ©çN®
+ *	TASK2: Dæx^XN
+ *	TASK3: Dæx^XN
+ *	TASK4: Dæx^XN
+ *	TASK5: Dæx^XN
+ *	MTX1: ~
+[ebNXiTA_CEILING®«CãÀÍDæxj
+ *	MTX2: ~
+[ebNXiTA_CEILING®«CãÀÍDæxj
+ *	MTX3: ~
+[ebNXiTA_CEILING®«CãÀÍDæxj
+ *
+ * yeXgV[PXz
+ *
+ *	== TASK1iDæxFj==
+ *		call(set_bit_func(bit_mutex))
+ *	1:	dis_dsp()
+ *	2:	act_tsk(TASK2)
+ *		act_tsk(TASK4)
+ *	//		FTASK4CFTASK1¨TASK2
+ *	3:	ploc_mtx(MTX2)								... (A-1)
+ *	//		FTASK1¨TASK4CFTASK2CMTX2FTASK1
+ *		get_pri(TSK_SELF, &tskpri)
+ *		assert(tskpri == HIGH_PRIORITY)
+ *	4:	ena_dsp()
+ *	5:	unl_mtx(MTX2)								... (B-1)
+ *	//		FTASK4CFTASK1¨TASK2
+ *	== TASK4iDæxFj==
+ *	6:	loc_mtx(MTX1) -> E_ILUSE					... (D-1)
+ *	7:	slp_tsk()
+ *	//		FTASK1¨TASK2
+ *	== TASK1i±«j==
+ *	8:	get_pri(TSK_SELF, &tskpri)
+ *		assert(tskpri == MID_PRIORITY)
+ *
+ *	9:	dis_dsp()
+ *	10:	rot_rdq(MID_PRIORITY)
+ *	//		FTASK2¨TASK1
+ *	11:	act_tsk(TASK3)
+ *	//		FTASK2¨TASK1¨TASK3
+ *	12:	ploc_mtx(MTX1)								... (A-2)
+ *	//		FTASK2¨TASK1¨TASK3CMTX1FTASK1
+ *		get_pri(TSK_SELF, &tskpri)
+ *		assert(tskpri == MID_PRIORITY)
+ *	13:	ena_dsp()
+ *	== TASK2iDæxFj==
+ *	14:	slp_tsk()
+ *	//		FTASK1¨TASK3CMTX1FTASK1
+ *	== TASK1i±«j==
+ *	15:	slp_tsk()
+ *	//		FTASK3CMTX1FTASK1
+ *	== TASK3iDæxFj==
+ *	16:	wup_tsk(TASK1)
+ *	//		FTASK3¨TASK1CMTX1FTASK1
+ *	17:	slp_tsk()
+ *	//		FTASK1CMTX1FTASK1
+ *
+ *	== TASK1i±«j==
+ *	18:	wup_tsk(TASK2)
+ *	//		FTASK1¨TASK2CMTX1FTASK1
+ *	19:	dis_dsp()
+ *	20:	rot_rdq(MID_PRIORITY)
+ *	//		FTASK2¨TASK1CMTX1FTASK1
+ *	21:	wup_tsk(TASK3)
+ *	//		FTASK2¨TASK1¨TASK3CMTX1FTASK1
+ *	22:	unl_mtx(MTX1)								... (B-2)
+ *	//		FTASK2¨TASK1¨TASK3
+ *		get_pri(TSK_SELF, &tskpri)
+ *		assert(tskpri == MID_PRIORITY)
+ *	23:	ena_dsp()
+ *	== TASK2iDæxFj==
+ *	24:	slp_tsk()
+ *	//		FTASK1¨TASK3
+ *	== TASK1i±«j==
+ *	25:	slp_tsk()
+ *	//		FTASK3
+ *	== TASK3iDæxFj==
+ *	26:	wup_tsk(TASK1)
+ *	//		FTASK3¨TASK1
+ *	27:	slp_tsk()
+ *	//		FTASK1
+ *
+ *	== TASK1i±«j==
+ *	28:	dis_dsp()
+ *	29:	wup_tsk(TASK4)
+ *	//		FTASK4CFTASK1
+ *	30:	ploc_mtx(MTX2)
+ *	//		FTASK1¨TASK4CMTX2FTASK1
+ *	31:	rot_rdq(HIGH_PRIORITY)
+ *	//		FTASK4¨TASK1CMTX2FTASK1
+ *	32:	act_tsk(TASK5)
+ *	//		FTASK4¨TASK1¨TASK5CMTX2FTASK1
+ *	33:	ploc_mtx(MTX1)								... (A-3)(D-2)
+ *	//		FTASK4¨TASK1¨TASK5CMTX2FTASK1CMTX1FTASK1
+ *		get_pri(TSK_SELF, &tskpri)
+ *		assert(tskpri == HIGH_PRIORITY)
+ *	34:	ena_dsp()
+ *	== TASK4i±«j==
+ *	35:	slp_tsk()
+ *	//		FTASK1¨TASK5CMTX2FTASK1CMTX1FTASK1
+ *	== TASK1i±«j==
+ *	36:	slp_tsk()
+ *	//		FTASK5CMTX2FTASK1CMTX1FTASK1
+ *	== TASK5iDæxFj==
+ *	37:	wup_tsk(TASK1)
+ *	//		FTASK5¨TASK1CMTX2FTASK1CMTX1FTASK1
+ *	38:	slp_tsk()
+ *	//		FTASK1CMTX2FTASK1CMTX1FTASK1
+ *
+ *	== TASK1i±«j==
+ *	39:	dis_dsp()
+ *	40:	wup_tsk(TASK4)
+ *	//		FTASK1¨TASK4CMTX2FTASK1CMTX1FTASK1
+ *	41:	rot_rdq(HIGH_PRIORITY)
+ *	//		FTASK4¨TASK1CMTX2FTASK1CMTX1FTASK1
+ *	42:	wup_tsk(TASK5)
+ *	//		FTASK4¨TASK1¨TASK5CMTX2FTASK1CMTX1FTASK1
+ *	43:	unl_mtx(MTX1)								... (B-3)
+ *	//		FTASK4¨TASK1¨TASK5CMTX2FTASK1
+ *		get_pri(TSK_SELF, &tskpri)
+ *		assert(tskpri == HIGH_PRIORITY)
+ *	44:	ena_dsp()
+ *	== TASK4i±«j==
+ *	45:	slp_tsk()
+ *	//		FTASK1¨TASK5CMTX2FTASK1
+ *	== TASK1i±«j==
+ *	46:	slp_tsk()
+ *	//		FTASK5CMTX2FTASK1
+ *	== TASK5i±«j==
+ *	47:	wup_tsk(TASK1)
+ *	//		FTASK5¨TASK1CMTX2FTASK1
+ *	48:	slp_tsk()
+ *	//		FTASK1CMTX2FTASK1
+ *
+ *	== TASK1i±«j==
+ *	49:	wup_tsk(TASK2)
+ *		wup_tsk(TASK3)
+ *		slp_tsk()
+ *	//		FTASK2¨TASK3CMTX2FTASK1
+ *	== TASK2i±«j==
+ *	50:	loc_mtx(MTX2)
+ *	//		FTASK3CMTX2FTASK1¨TASK2
+ *	== TASK3i±«j==
+ *	51:	wup_tsk(TASK1)
+ *	//		FTASK1CFTASK3CMTX2FTASK1¨TASK2
+ *	== TASK1i±«j==
+ *	52:	loc_mtx(MTX3)
+ *	//		FTASK1CFTASK3CMTX2FTASK1¨TASK2CMTX3FTASK1
+ *	53:	unl_mtx(MTX2)								... (C-1)
+ *	//		FTASK1¨TASK2CFTASK3CMTX2FTASK2CMTX3FTASK1
+ *		get_pri(TASK2, &tskpri)
+ *		assert(tskpri == HIGH_PRIORITY)
+ *	54:	loc_mtx(MTX1)
+ *	//		FTASK1¨TASK2CFTASK3CMTX1FTASK1CMTX2FTASK2CMTX3FTASK1
+ *	55:	slp_tsk()
+ *	//		FTASK2CFTASK3CMTX1FTASK1CMTX2FTASK2CMTX3FTASK1
+ *
+ *	== TASK2i±«j==
+ *	56:	wup_tsk(TASK1)
+ *	//		FTASK2¨TASK1CFTASK3CMTX1FTASK1CMTX2FTASK2CMTX3FTASK1
+ *	57:	loc_mtx(MTX1)
+ *	//		FTASK1CFTASK3CMTX1FTASK1¨TASK2CMTX2FTASK2CMTX3FTASK1
+ *	== TASK1i±«j==
+ *	58:	unl_mtx(MTX1)								... (C-3)
+ *	//		FTASK1¨TASK2CFTASK3CMTX1FTASK2CMTX2FTASK2CMTX3FTASK1
+ *		get_pri(TASK2, &tskpri)
+ *		assert(tskpri == HIGH_PRIORITY)
+ *	59:	unl_mtx(MTX3)
+ *	//		FTASK2CFTASK1¨TASK3CMTX1FTASK2CMTX2FTASK2
+ *	== TASK2i±«j==
+ *	60:	unl_mtx(MTX2)
+ *	//		FTASK2¨TASK1¨TASK3CMTX1FTASK2
+ *
+ *	61:	rot_rdq(MID_PRIORITY)
+ *	//		FTASK1¨TASK3¨TASK2CMTX1FTASK2
+ *	== TASK1i±«j==
+ *	62:	loc_mtx(MTX1)
+ *	//		FTASK3¨TASK2CMTX1FTASK2¨TASK1
+ *	== TASK3i±«j==
+ *	63:	rot_rdq(MID_PRIORITY)
+ *	//		FTASK2¨TASK3CMTX1FTASK2¨TASK1
+ *	== TASK2i±«j==
+ *	64:	unl_mtx(MTX1)								... (C-2)
+ *	//		FTASK2¨TASK3¨TASK1CMTX1FTASK1
+ *		get_pri(TASK1, &tskpri)
+ *		assert(tskpri == MID_PRIORITY)
+ *	== TASK2i±«j==
+ *	65:	ext_tsk() -> noreturn
+ *	//		FTASK3¨TASK1CMTX1FTASK1
+ *	== TASK3i±«j==
+ *	66:	ext_tsk() -> noreturn
+ *	//		FTASK1CMTX1FTASK1
+ *	== TASK1i±«j==
+ *	67:	END
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include "syssvc/logtask.h"
+#include "kernel_cfg.h"
+#include "test_lib.h"
+#include "test_mutex4.h"
+
+extern ER	bit_mutex(void);
+
+void
+task1(intptr_t exinf)
+{
+	ER		ercd;
+	PRI		tskpri;
+
+	set_bit_func(bit_mutex);
+
+	check_point(1);
+	ercd = dis_dsp();
+	check_ercd(ercd, E_OK);
+
+	check_point(2);
+	ercd = act_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	ercd = act_tsk(TASK4);
+	check_ercd(ercd, E_OK);
+
+	check_point(3);
+	ercd = ploc_mtx(MTX2);
+	check_ercd(ercd, E_OK);
+
+	ercd = get_pri(TSK_SELF, &tskpri);
+	check_ercd(ercd, E_OK);
+	check_assert(tskpri == HIGH_PRIORITY);
+
+	check_point(4);
+	ercd = ena_dsp();
+	check_ercd(ercd, E_OK);
+
+	check_point(5);
+	ercd = unl_mtx(MTX2);
+	check_ercd(ercd, E_OK);
+
+	check_point(8);
+	ercd = get_pri(TSK_SELF, &tskpri);
+	check_ercd(ercd, E_OK);
+	check_assert(tskpri == MID_PRIORITY);
+
+	check_point(9);
+	ercd = dis_dsp();
+	check_ercd(ercd, E_OK);
+
+	check_point(10);
+	ercd = rot_rdq(MID_PRIORITY);
+	check_ercd(ercd, E_OK);
+
+	check_point(11);
+	ercd = act_tsk(TASK3);
+	check_ercd(ercd, E_OK);
+
+	check_point(12);
+	ercd = ploc_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	ercd = get_pri(TSK_SELF, &tskpri);
+	check_ercd(ercd, E_OK);
+	check_assert(tskpri == MID_PRIORITY);
+
+	check_point(13);
+	ercd = ena_dsp();
+	check_ercd(ercd, E_OK);
+
+	check_point(15);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(18);
+	ercd = wup_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_point(19);
+	ercd = dis_dsp();
+	check_ercd(ercd, E_OK);
+
+	check_point(20);
+	ercd = rot_rdq(MID_PRIORITY);
+	check_ercd(ercd, E_OK);
+
+	check_point(21);
+	ercd = wup_tsk(TASK3);
+	check_ercd(ercd, E_OK);
+
+	check_point(22);
+	ercd = unl_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	ercd = get_pri(TSK_SELF, &tskpri);
+	check_ercd(ercd, E_OK);
+	check_assert(tskpri == MID_PRIORITY);
+
+	check_point(23);
+	ercd = ena_dsp();
+	check_ercd(ercd, E_OK);
+
+	check_point(25);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(28);
+	ercd = dis_dsp();
+	check_ercd(ercd, E_OK);
+
+	check_point(29);
+	ercd = wup_tsk(TASK4);
+	check_ercd(ercd, E_OK);
+
+	check_point(30);
+	ercd = ploc_mtx(MTX2);
+	check_ercd(ercd, E_OK);
+
+	check_point(31);
+	ercd = rot_rdq(HIGH_PRIORITY);
+	check_ercd(ercd, E_OK);
+
+	check_point(32);
+	ercd = act_tsk(TASK5);
+	check_ercd(ercd, E_OK);
+
+	check_point(33);
+	ercd = ploc_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	ercd = get_pri(TSK_SELF, &tskpri);
+	check_ercd(ercd, E_OK);
+	check_assert(tskpri == HIGH_PRIORITY);
+
+	check_point(34);
+	ercd = ena_dsp();
+	check_ercd(ercd, E_OK);
+
+	check_point(36);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(39);
+	ercd = dis_dsp();
+	check_ercd(ercd, E_OK);
+
+	check_point(40);
+	ercd = wup_tsk(TASK4);
+	check_ercd(ercd, E_OK);
+
+	check_point(41);
+	ercd = rot_rdq(HIGH_PRIORITY);
+	check_ercd(ercd, E_OK);
+
+	check_point(42);
+	ercd = wup_tsk(TASK5);
+	check_ercd(ercd, E_OK);
+
+	check_point(43);
+	ercd = unl_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	ercd = get_pri(TSK_SELF, &tskpri);
+	check_ercd(ercd, E_OK);
+	check_assert(tskpri == HIGH_PRIORITY);
+
+	check_point(44);
+	ercd = ena_dsp();
+	check_ercd(ercd, E_OK);
+
+	check_point(46);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(49);
+	ercd = wup_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	ercd = wup_tsk(TASK3);
+	check_ercd(ercd, E_OK);
+
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(52);
+	ercd = loc_mtx(MTX3);
+	check_ercd(ercd, E_OK);
+
+	check_point(53);
+	ercd = unl_mtx(MTX2);
+	check_ercd(ercd, E_OK);
+
+	ercd = get_pri(TASK2, &tskpri);
+	check_ercd(ercd, E_OK);
+	check_assert(tskpri == HIGH_PRIORITY);
+
+	check_point(54);
+	ercd = loc_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	check_point(55);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(58);
+	ercd = unl_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	ercd = get_pri(TASK2, &tskpri);
+	check_ercd(ercd, E_OK);
+	check_assert(tskpri == HIGH_PRIORITY);
+
+	check_point(59);
+	ercd = unl_mtx(MTX3);
+	check_ercd(ercd, E_OK);
+
+	check_point(62);
+	ercd = loc_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	check_finish(67);
+
+	check_point(0);
+}
+
+void
+task2(intptr_t exinf)
+{
+	ER		ercd;
+	PRI		tskpri;
+
+	check_point(14);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(24);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(50);
+	ercd = loc_mtx(MTX2);
+	check_ercd(ercd, E_OK);
+
+	check_point(56);
+	ercd = wup_tsk(TASK1);
+	check_ercd(ercd, E_OK);
+
+	check_point(57);
+	ercd = loc_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	check_point(60);
+	ercd = unl_mtx(MTX2);
+	check_ercd(ercd, E_OK);
+
+	check_point(61);
+	ercd = rot_rdq(MID_PRIORITY);
+	check_ercd(ercd, E_OK);
+
+	check_point(64);
+	ercd = unl_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	ercd = get_pri(TASK1, &tskpri);
+	check_ercd(ercd, E_OK);
+	check_assert(tskpri == MID_PRIORITY);
+
+	check_point(65);
+	ercd = ext_tsk();
+
+	check_point(0);
+}
+
+void
+task3(intptr_t exinf)
+{
+	ER		ercd;
+
+	check_point(16);
+	ercd = wup_tsk(TASK1);
+	check_ercd(ercd, E_OK);
+
+	check_point(17);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(26);
+	ercd = wup_tsk(TASK1);
+	check_ercd(ercd, E_OK);
+
+	check_point(27);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(51);
+	ercd = wup_tsk(TASK1);
+	check_ercd(ercd, E_OK);
+
+	check_point(63);
+	ercd = rot_rdq(MID_PRIORITY);
+	check_ercd(ercd, E_OK);
+
+	check_point(66);
+	ercd = ext_tsk();
+
+	check_point(0);
+}
+
+void
+task4(intptr_t exinf)
+{
+	ER		ercd;
+
+	check_point(6);
+	ercd = loc_mtx(MTX1);
+	check_ercd(ercd, E_ILUSE);
+
+	check_point(7);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(35);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(45);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(0);
+}
+
+void
+task5(intptr_t exinf)
+{
+	ER		ercd;
+
+	check_point(37);
+	ercd = wup_tsk(TASK1);
+	check_ercd(ercd, E_OK);
+
+	check_point(38);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(47);
+	ercd = wup_tsk(TASK1);
+	check_ercd(ercd, E_OK);
+
+	check_point(48);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(0);
+}
Index: /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex4.cfg
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex4.cfg	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex4.cfg	(revision 61)
@@ -0,0 +1,25 @@
+/*
+ *  @(#) $Id: test_mutex4.cfg 1565 2009-05-24 14:34:47Z ertl-hiro $
+ */
+
+/*
+ *  ~
+[ebNXÌeXg(4)ÌVXeRtBM
+[Vt@C
+ */
+INCLUDE("target_timer.cfg");
+INCLUDE("syssvc/syslog.cfg");
+INCLUDE("syssvc/banner.cfg");
+INCLUDE("syssvc/serial.cfg");
+INCLUDE("syssvc/logtask.cfg");
+
+#include "test_mutex4.h"
+
+CRE_TSK(TASK1, { TA_ACT, 1, task1, MID_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK2, { TA_NULL, 2, task2, MID_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK3, { TA_NULL, 3, task3, MID_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK4, { TA_NULL, 4, task4, HIGH_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK5, { TA_NULL, 5, task5, HIGH_PRIORITY, STACK_SIZE, NULL });
+CRE_MTX(MTX1, { TA_CEILING, MID_PRIORITY });
+CRE_MTX(MTX2, { TA_CEILING, HIGH_PRIORITY });
+CRE_MTX(MTX3, { TA_CEILING, HIGH_PRIORITY });
Index: /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex4.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex4.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex4.h	(revision 61)
@@ -0,0 +1,79 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2009 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_mutex4.h 1696 2010-01-01 16:01:25Z ertl-hiro $
+ */
+
+/* 
+ *		~
+[ebNXÌeXg(4)
+ */
+
+/*
+ *  ^[QbgË¶Ìè`
+ */
+#include "target_test.h"
+
+/*
+ *  DæxÌè`
+ */
+#define HIGH_PRIORITY	9		/* Dæx */
+#define MID_PRIORITY	10		/* Dæx */
+#define LOW_PRIORITY	11		/* áDæx */
+
+/*
+ *  ^[QbgÉË¶·éÂ\«Ì éèÌè`
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ^XNÌX^bNTCY */
+#endif /* STACK_SIZE */
+
+/*
+ *  ÖÌvg^Cvé¾
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+extern void	task1(intptr_t exinf);
+extern void	task2(intptr_t exinf);
+extern void	task3(intptr_t exinf);
+extern void	task4(intptr_t exinf);
+extern void	task5(intptr_t exinf);
+
+#endif /* TOPPERS_MACRO_ONLY */
Index: /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex5.c
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex5.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex5.c	(revision 61)
@@ -0,0 +1,1002 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2009 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_mutex5.c 1696 2010-01-01 16:01:25Z ertl-hiro $
+ */
+
+/* 
+ *		~
+[ebNXÌeXg(5)
+ *
+ * yeXgÌÚIz
+ *
+ *  DæxãÀ~
+[ebNXÉÎµÄC~
+[ebNXÌÄú»ðÔ
+ *  
+IÉeXg·éD½¾µCchange_priorityÆmutex_calc_priorityÌà
+ *  eÉÍ¥ÝÜÈ¢D
+ *
+ * yeXgÚz
+ *
+ *	(A) ~
+[ebNXÌú»iini_mtxjÉº¤~
+[ebNXðbNµ
+ *		Ä¢½^XNiÀsÅ«éóÔjÌDæxÏX
+ *		(A-1) ú»µ½~
+[ebNXÌãÀDæxªC~
+[ebNXð
+ *			  bNµÄ¢½^XNiÀsÅ«éóÔjÌ»ÝDæxÆ¯¶
+ *			  ÅC~
+[ebNXÌbNðÅDæxªºªé×«êÉC
+ *			  Y^XNÌDæxªKØÉº°çêé±ÆDÜ½C¯¶Dæ
+ *			  xàÅÌDæÊªÅÉÈé±Æ
+ *		(A-2) ú»µ½~
+[ebNXÌãÀDæxªC~
+[ebNXð
+ *			  bNµÄ¢½^XNiÀsÅ«éóÔjÌ»ÝDæxÆ¯¶
+ *			  ÅC~
+[ebNXÌbNðÅDæxªÏíé×«ÅÈ¢
+ *			  êÉCY^XNÌDæxªÏíçÈ¢±ÆDÜ½C¯¶D
+ *			  æxàÅÌDæÊªÏíçÈ¢±Æ
+ *		(A-3) ú»µ½~
+[ebNXÌãÀDæxªC~
+[ebNXð
+ *			  bNµÄ¢½^XNiÀsÅ«éóÔjÌ»ÝDæxæèà
+ *			  á¢êÉCY^XNÌDæxªÏíçÈ¢±ÆDÜ½C¯
+ *			  ¶DæxàÅÌDæÊªÏíçÈ¢±Æ
+ *		(A-4) (A-1)ÌÊC^XNfBXpb`ªN±é±ÆD
+ *	(B) ~
+[ebNXÌú»iini_mtxjÉº¤~
+[ebNXðbNµ
+ *		Ä¢½^XNiÒ¿óÔjÌDæxÏX
+ *		(B-1) ú»µ½~
+[ebNXÌãÀDæxªC~
+[ebNXð
+ *			  bNµÄ¢½^XNiÒ¿óÔjÌ»ÝDæxÆ¯¶ÅC
+ *			  ~
+[ebNXÌbNðÅDæxªºªé×«êÉC
+ *			  Y^XNÌDæxªKØÉº°çêé±ÆDÜ½C¯¶Dæx
+ *			  àÅÌªÅãÉÈé±Æ
+ *		(B-2) ú»µ½~
+[ebNXÌãÀDæxªC~
+[ebNXð
+ *			  bNµÄ¢½^XNiÒ¿óÔjÌ»ÝDæxÆ¯¶ÅC
+ *			  ~
+[ebNXÌbNðÅDæxªÏíé×«ÅÈ¢ê
+ *			  ÉCY^XNÌDæxªÏíçÈ¢±ÆDÜ½C¯¶Dæx
+ *			  àÅÌªÏíçÈ¢±Æ
+ *		(B-3) ú»µ½~
+[ebNXÌãÀDæxªC~
+[ebNXð
+ *			  bNµÄ¢½^XNiÒ¿óÔjÌ»ÝDæxæèàá¢ê
+ *			  ÉCY^XNÌDæxªÏíçÈ¢±ÆDÜ½C¯¶Dæ
+ *			  xàÅÌªÏíçÈ¢±Æ
+ *	(C) ~
+[ebNXÌú»iini_mtxjÉº¤~
+[ebNXðÒÁÄ¢
+ *		½^XNÌóÔÏ»
+ *		(C-1) ~
+[ebNXðÒÁÄ¢½^XNªÒ¿ð³êé±ÆD
+ *		(C-2) (C-1)ÌÊC^XNfBXpb`ªN±é±ÆD
+ *
+ * yeXgÚÌÀ»û@z
+ *
+ *	(A-1)
+ *		áDæx^XNiTASK1jªCDæxãÀ~
+[ebNXiMTX1jð
+ *		bNµ½óÔÅCDæx^XNiTASK5j©çMTX1ðÄú»µC
+ *		TASK1ÌDæxªáDæxÉºªé±ÆðmF·éDÜ½CÀsÂ\ó
+ *		ÔÌáDæx^XNiTASK2jæèàCDæÊª­Èé±ÆðmF
+ *		·éD@
+ *	(A-2)
+ *		áDæx^XNiTASK1jªCDæxãÀ~
+[ebNXð2Â
+ *		iMTX1CMTX2jðbNµ½óÔÅCDæx^XNiTASK5j©ç
+ *		MTX1ðÄú»µCTASK1ÌDæxªÏ»µÈ¢±ÆðmF·éDÜ½C
+ *		ÀsÂ\óÔÌDæx^XNð2ÂiTASK3CTASK4jðpÓµÄ¨«C
+ *		DæÊªÏíçÈ¢±ÆðmF·éD
+ *	(A-3)
+ *		áDæx^XNiTASK1jªCDæxãÀ~
+[ebNXiMTX2jÆ
+ *		áDæxãÀ~
+[ebNXiMTX3jðbNµ½óÔÅCDæx
+ *		^XNiTASK5j©çMTX3ðÄú»µCTASK1ÌDæxªÏ»µÈ¢
+ *		±ÆðmF·éDÜ½CÀsÂ\óÔÌDæx^XNð2ÂiTASK3C
+ *		TASK4jðpÓµÄ¨«CDæÊªÏíçÈ¢±ÆðmF·éD
+ *	(A-4)
+ *		áDæx^XNiTASK1jªCDæxãÀ~
+[ebNXiMTX2jð
+ *		bNµ½óÔÅCTASK1©çMTX2ðÄú»µCTASK1ÌDæxªá
+ *		DæxÉºªèCÀsÂ\óÔÌDæx^XNiTASK4jÉØè·í
+ *		é±ÆðmF·éDÜ½CÀsÂ\óÔÌáDæx^XNiTASK2jæ
+ *		èàCDæÊª­Èé±ÆðmF·éD@
+ *	(B-1)
+ *		áDæx^XNiTASK1jªCDæxãÀ~
+[ebNXiMTX1jð
+ *		bNµ½óÔÅCÊÌ~
+[ebNXiMTX4jÒ¿óÔÆµCD
+ *		æx^XNiTASK5j©çMTX1ðÄú»µCTASK1ÌDæxªáDæ
+ *		xÉºªé±ÆðmF·éDÜ½CMTX4Ò¿óÔÌáDæx^XN
+ *		iTASK2jæèàCÒ¿sñÅÌªãÉÈé±ÆðmF·éD
+ *	(B-2)
+ *		áDæx^XNiTASK1jªCDæxãÀ~
+[ebNXð2Â
+ *		iMTX1CMTX2jðbNµ½óÔÅCÊÌ~
+[ebNXiMTX4jÒ
+ *		¿óÔÆµCDæx^XNiTASK5j©çMTX1ðÄú»µCTASK1
+ *		ÌDæxªÏ»µÈ¢±ÆðmF·éDÜ½CMTX4Ò¿óÔÌDæ
+ *		x^XNð2ÂiTASK3CTASK4jðpÓµÄ¨«CÒ¿sñÅÌ
+ *		ªÏíçÈ¢±ÆðmF·éD
+ *	(B-3)
+ *		áDæx^XNiTASK1jªCDæxãÀ~
+[ebNXiMTX2jÆ
+ *		áDæxãÀ~
+[ebNXiMTX3jðbNµ½óÔÅCÊÌ~
+[
+ *		ebNXiMTX4jÒ¿óÔÆµCDæx^XNiTASK5j©çMTX3ð
+ *		Äú»µCTASK1ÌDæxªÏ»µÈ¢±ÆðmF·éDÜ½C
+ *		MTX4Ò¿óÔÌDæx^XNð2ÂiTASK3CTASK4jðpÓµÄ¨«C
+ *		Ò¿sñÅÌªÏíçÈ¢±ÆðmF·éD
+ *	(C-1)
+ *		áDæx^XNiTASK1jªDæxãÀ~
+[ebNXiMTX1jðb
+ *		NµCDæx^XNiTASK3jªMTX1ðÒÁÄ¢éóÔÅCDæx
+ *		^XNiTASK5j©çMTX1ðÄú»µCTASK3ªÒ¿ð³êé±Æ
+ *		ðmF·éDÜ½CÀsÂ\óÔÌDæx^XNiTASK4jæèàC
+ *		TASK3ÌûªDæÊªá­Èé±ÆðmF·éD@
+ *	(C-2)
+ *		áDæx^XNiTASK1jªDæxãÀ~
+[ebNXiMTX1jðb
+ *		NµCDæx^XNiTASK3jªMTX1ðÒ¿CTASK1ðN°Ò¿óÔ
+ *		Æµ½óÔÅCÊÌáDæx^XNiTASK2j©çMTX1ðÄú»µC
+ *		TASK3ªÒ¿ð³êCTASK3ÉØè·íé±ÆðmF·éD
+ *
+ * ygp\[Xz
+ *
+ *	TASK1: áDæx^XNCC^XNCÅ©çN®
+ *	TASK2: áDæx^XN
+ *	TASK3: Dæx^XN
+ *	TASK4: Dæx^XN
+ *	TASK5: Dæx^XN
+ *	MTX1: ~
+[ebNXiTA_CEILING®«CãÀÍDæxj
+ *	MTX2: ~
+[ebNXiTA_CEILING®«CãÀÍDæxj
+ *	MTX3: ~
+[ebNXiTA_CEILING®«CãÀÍáDæxj
+ *	MTX4: ~
+[ebNXiTA_CEILING®«CãÀÍDæxj
+ *
+ * yeXgV[PXz
+ *
+ *	== TASK1iDæxFáj==
+ *		call(set_bit_func(bit_mutex))
+ *	1:	loc_mtx(MTX1)
+ *	2:	act_tsk(TASK2)
+ *	3:	act_tsk(TASK5)
+ *	//		FTASK5CFTASK1CáFTASK2CMTX1FTASK1
+ *	== TASK5iDæxFj==
+ *	4:	ini_mtx(MTX1)			... (A-1)
+ *	//		FTASK5CáFTASK1¨TASK2
+ *		get_pri(TASK1, &tskpri)
+ *		assert(tskpri == LOW_PRIORITY)
+ *	5:	slp_tsk()
+ *	//		áFTASK1¨TASK2
+ *
+ *	== TASK1i±«j==
+ *	6:	sus_tsk(TASK2)
+ *	7:	loc_mtx(MTX1)
+ *		loc_mtx(MTX2)
+ *	8:	act_tsk(TASK3)
+ *	//		FTASK1¨TASK3CMTX1FTASK1CMTX2FTASK1
+ *	9:	dis_dsp()
+ *	10:	rot_rdq(MID_PRIORITY)
+ *	//		FTASK3¨TASK1CMTX1FTASK1CMTX2FTASK1
+ *	11:	act_tsk(TASK4)
+ *	//		FTASK3¨TASK1¨TASK4CMTX1FTASK1CMTX2FTASK1
+ *	12:	wup_tsk(TASK5)
+ *	//		FTASK5CFTASK3¨TASK1¨TASK4CMTX1FTASK1CMTX2FTASK1
+ *	13:	ena_dsp()
+ *	== TASK5i±«j==
+ *	14:	ini_mtx(MTX1)			... (A-2)
+ *	//		FTASK5CFTASK3¨TASK1¨TASK4CMTX2FTASK1
+ *		get_pri(TASK1, &tskpri)
+ *		assert(tskpri == MID_PRIORITY)
+ *	15:	slp_tsk()
+ *	//		FTASK3¨TASK1¨TASK4CMTX2FTASK1
+ *	== TASK3iDæxFj==
+ *	16:	slp_tsk()
+ *	//		FTASK1¨TASK4CMTX2FTASK1
+ *	== TASK1i±«j==
+ *	17:	slp_tsk()
+ *	//		FTASK4CMTX2FTASK1
+ *	== TASK4iDæxFj==
+ *	18:	wup_tsk(TASK1)
+ *	//		FTASK4¨TASK1CMTX2FTASK1
+ *	19:	slp_tsk()
+ *	//		FTASK1CMTX2FTASK1
+ *
+ *	== TASK1i±«j==
+ *	20:	loc_mtx(MTX3)
+ *	//		FTASK1CMTX2FTASK1CMTX3FTASK1
+ *	21:	wup_tsk(TASK3)
+ *	//		FTASK1¨TASK3CMTX2FTASK1CMTX3FTASK1
+ *	22:	dis_dsp()
+ *	23:	rot_rdq(MID_PRIORITY)
+ *	//		FTASK3¨TASK1CMTX2FTASK1CMTX3FTASK1
+ *	24:	wup_tsk(TASK4)
+ *	//		FTASK3¨TASK1¨TASK4CMTX2FTASK1CMTX3FTASK1
+ *	25:	wup_tsk(TASK5)
+ *	//		FTASK5CFTASK3¨TASK1¨TASK4CMTX2FTASK1CMTX3FTASK1
+ *	26:	ena_dsp()
+ *	== TASK5i±«j==
+ *	27:	ini_mtx(MTX3)			... (A-3)
+ *	//		FTASK5CFTASK3¨TASK1¨TASK4CMTX2FTASK1
+ *		get_pri(TASK1, &tskpri)
+ *		assert(tskpri == MID_PRIORITY)
+ *	28:	slp_tsk()
+ *	//		FTASK3¨TASK1¨TASK4CMTX2FTASK1
+ *	== TASK3i±«j==
+ *	29:	slp_tsk()
+ *	//		FTASK1¨TASK4CMTX2FTASK1
+ *
+ *	== TASK1i±«j==
+ *	30:	slp_tsk()
+ *	//		FTASK4CMTX2FTASK1
+ *	== TASK4i±«j==
+ *	31:	wup_tsk(TASK1)
+ *	//		FTASK4¨TASK1CMTX2FTASK1
+ *	32:	rot_rdq(MID_PRIORITY)
+ *	//		FTASK1¨TASK4CMTX2FTASK1
+ *	== TASK1i±«j==
+ *	33:	rsm_tsk(TASK2)
+ *	//		FTASK1¨TASK4CáFTASK2CMTX2FTASK1
+ *	34:	ini_mtx(MTX2)			... (A-4)
+ *	//		FTASK4CáFTASK1¨TASK2
+ *	== TASK4i±«j==
+ *	35:	get_pri(TASK1, &tskpri)
+ *		assert(tskpri == LOW_PRIORITY)
+ *	36:	slp_tsk()
+ *	//		áFTASK1¨TASK2
+ *
+ *	== TASK1i±«j==
+ *	37:	wup_tsk(TASK5)
+ *	== TASK5i±«j==
+ *	38:	loc_mtx(MTX4)
+ *	39:	tslp_tsk(10) -> E_TMOUT
+ *	//		áFTASK1¨TASK2CMTX4FTASK5
+ *	== TASK1i±«j==
+ *	40:	loc_mtx(MTX1)
+ *	//		FTASK1CáFTASK2CMTX1FTASK1CMTX4FTASK5
+ *	41:	loc_mtx(MTX4)
+ *	//		áFTASK2CMTX1FTASK1CMTX4FTASK5¨TASK1
+ *	== TASK2iDæxFáj==
+ *	42:	loc_mtx(MTX4)
+ *	//		MTX1FTASK1CMTX4FTASK5¨TASK1¨TASK2
+ *	//		^CAEgÒ¿
+ *	//		FTASK5CMTX1FTASK1CMTX4FTASK5¨TASK1¨TASK2
+ *	== TASK5i±«j==
+ *	43:	ini_mtx(MTX1)			... (B-1)
+ *	//		FTASK5CMTX4FTASK5¨TASK2¨TASK1
+ *		get_pri(TASK1, &tskpri)
+ *		assert(tskpri == LOW_PRIORITY)
+ *	44:	unl_mtx(MTX4)
+ *	//		FTASK5¨TASK2CMTX4FTASK2¨TASK1
+ *	45:	slp_tsk()
+ *	//		FTASK2CMTX4FTASK2¨TASK1
+ *	== TASK2i±«j==
+ *	46:	unl_mtx(MTX4)
+ *	//		FTASK1CáFTASK2CMTX4FTASK1
+ *	== TASK1i±«j==
+ *	47:	unl_mtx(MTX4)
+ *	//		áFTASK1¨TASK2
+ *
+ *	48:	wup_tsk(TASK5)
+ *	== TASK5i±«j==
+ *	49:	loc_mtx(MTX4)
+ *	50:	slp_tsk()
+ *	//		áFTASK1¨TASK2CMTX4FTASK5
+ *	== TASK1i±«j==
+ *	51:	wup_tsk(TASK3)
+ *	//		FTASK3CáFTASK1¨TASK2CMTX4FTASK5
+ *	== TASK3i±«j==
+ *	52:	loc_mtx(MTX4)
+ *	//		áFTASK1¨TASK2CMTX4FTASK5¨TASK3
+ *	== TASK1i±«j==
+ *	53:	loc_mtx(MTX1)
+ *		loc_mtx(MTX2)
+ *	//		FTASK1CáFTASK2CMTX1FTASK1CMTX2FTASK1CMTX4FTASK5¨TASK3
+ *	54:	loc_mtx(MTX4)
+ *	//		áFTASK2CMTX1FTASK1CMTX2FTASK1CMTX4FTASK5¨TASK3¨TASK1
+ *	== TASK2i±«j==
+ *	55:	wup_tsk(TASK4)
+ *	== TASK4i±«j==
+ *	56:	loc_mtx(MTX4)
+ *	//		áFTASK2CMTX1FTASK1CMTX2FTASK1C
+ *	//								MTX4FTASK5¨TASK3¨TASK1¨TASK4
+ *	== TASK2i±«j==
+ *	57:	wup_tsk(TASK5)
+ *	//		FTASK5CáFTASK2CMTX1FTASK1CMTX2FTASK1C
+ *	//								MTX4FTASK5¨TASK3¨TASK1¨TASK4
+ *	== TASK5i±«j==
+ *	58:	ini_mtx(MTX1)			... (B-2)
+ *	//		FTASK5CáFTASK2CMTX2FTASK1CMTX4FTASK5¨TASK3¨TASK1¨TASK4
+ *		get_pri(TASK1, &tskpri)
+ *		assert(tskpri == MID_PRIORITY)
+ *	59:	unl_mtx(MTX4)
+ *	//		FTASK5¨TASK3CáFTASK2CMTX2FTASK1CMTX4FTASK3¨TASK1¨TASK4
+ *	60:	slp_tsk()
+ *	//		FTASK3CáFTASK2CMTX2FTASK1CMTX4FTASK3¨TASK1¨TASK4
+ *	== TASK3i±«j==
+ *	61:	unl_mtx(MTX4)
+ *	//		FTASK1CFTASK3CáFTASK2CMTX2FTASK1CMTX4FTASK1¨TASK4
+ *	== TASK1i±«j==
+ *	62:	unl_mtx(MTX4)
+ *	//		FTASK4CFTASK1¨TASK3CáFTASK2CMTX2FTASK1CMTX4FTASK4
+ *	== TASK4i±«j==
+ *	63:	unl_mtx(MTX4)
+ *	//		FTASK4¨TASK1¨TASK3CáFTASK2CMTX2FTASK1
+ *	64:	slp_tsk()
+ *	//		FTASK1¨TASK3CáFTASK2CMTX2FTASK1
+ *	== TASK1i±«j==
+ *	65:	slp_tsk()
+ *	//		FTASK3CáFTASK2CMTX2FTASK1
+ *	== TASK3i±«j==
+ *	66:	slp_tsk()
+ *	//		áFTASK2CMTX2FTASK1
+ *
+ *	== TASK2i±«j==
+ *	67: wup_tsk(TASK5)
+ *	== TASK5i±«j==
+ *	68:	loc_mtx(MTX4)
+ *	69:	slp_tsk()
+ *	//		áFTASK2CMTX4FTASK5
+ *	== TASK2i±«j==
+ *	70:	wup_tsk(TASK3)
+ *	== TASK3i±«j==
+ *	71:	loc_mtx(MTX4)
+ *	//		áFTASK2CMTX4FTASK5¨TASK3
+ *	== TASK2i±«j==
+ *	72:	wup_tsk(TASK1)
+ *	//		FTASK1CáFTASK2CMTX4FTASK5
+ *	== TASK1i±«j==
+ *	73:	loc_mtx(MTX3)
+ *	//		FTASK1CáFTASK2CMTX2FTASK1CMTX3FTASK1CMTX4FTASK5¨TASK3
+ *	74:	loc_mtx(MTX4)
+ *	//		áFTASK2CMTX2FTASK1CMTX3FTASK1CMTX4FTASK5¨TASK3¨TASK1
+ *	== TASK2i±«j==
+ *	75:	wup_tsk(TASK4)
+ *	== TASK4i±«j==
+ *	76:	loc_mtx(MTX4)
+ *	//		áFTASK2CMTX2FTASK1CMTX3FTASK1C
+ *	//								MTX4FTASK5¨TASK3¨TASK1¨TASK4
+ *	== TASK2i±«j==
+ *	77:	wup_tsk(TASK5)
+ *	//		FTASK5CáFTASK2CMTX2FTASK1CMTX3FTASK1C
+ *	//								MTX4FTASK5¨TASK3¨TASK1¨TASK4
+ *	== TASK5i±«j==
+ *	78:	ini_mtx(MTX3)			... (B-3)
+ *	//		FTASK5CáFTASK2CMTX2FTASK1CMTX4FTASK5¨TASK3¨TASK1¨TASK4
+ *		get_pri(TASK1, &tskpri)
+ *		assert(tskpri == MID_PRIORITY)
+ *	79:	unl_mtx(MTX4)
+ *	//		FTASK5¨TASK3CáFTASK2CMTX2FTASK1CMTX4FTASK3¨TASK1¨TASK4
+ *	80:	slp_tsk()
+ *	//		FTASK3CáFTASK2CMTX2FTASK1CMTX4FTASK3¨TASK1¨TASK4
+ *	== TASK3i±«j==
+ *	81:	unl_mtx(MTX4)
+ *	//		FTASK1CFTASK3CáFTASK2CMTX2FTASK1CMTX4FTASK1¨TASK4
+ *	== TASK1i±«j==
+ *	82:	unl_mtx(MTX4)
+ *	//		FTASK4CFTASK1¨TASK3CáFTASK2CMTX2FTASK1CMTX4FTASK4
+ *	== TASK4i±«j==
+ *	83:	unl_mtx(MTX4)
+ *	//		FTASK4¨TASK1¨TASK3CáFTASK2CMTX2FTASK1
+ *	84:	slp_tsk()
+ *	//		FTASK1¨TASK3CáFTASK2CMTX2FTASK1
+ *	== TASK1i±«j==
+ *	85:	unl_mtx(MTX2)
+ *	//		FTASK3CáFTASK1¨TASK2
+ *	== TASK3i±«j==
+ *	86:	slp_tsk()
+ *	//		áFTASK1¨TASK2
+ *
+ *	== TASK1i±«j==
+ *	87:	sus_tsk(TASK2)
+ *	//		áFTASK1
+ *	88:	loc_mtx(MTX1)
+ *	//		FTASK1CMTX1FTASK1
+ *	89:	wup_tsk(TASK3)
+ *	//		FTASK1¨TASK3CMTX1FTASK1
+ *	90:	rot_rdq(MID_PRIORITY)
+ *	//		FTASK3¨TASK1CMTX1FTASK1
+ *	== TASK3i±«j==
+ *	91:	loc_mtx(MTX1) -> E_DLT
+ *	//		FTASK1CMTX1FTASK1¨TASK3
+ *	== TASK1i±«j==
+ *	92:	wup_tsk(TASK5)
+ *	//		FTASK5CFTASK1CMTX1FTASK1¨TASK3
+ *	== TASK5i±«j==
+ *	93:	wup_tsk(TASK4)
+ *	//		FTASK5CFTASK1¨TASK4CMTX1FTASK1¨TASK3
+ *	94:	ini_mtx(MTX1)			... (C-1)
+ *	//		FTASK5CFTASK4¨TASK3CáFTASK1
+ *	95:	ext_tsk() -> noreturn
+ *	//		FTASK4¨TASK3CáFTASK1
+ *	== TASK4i±«j==
+ *	96:	ext_tsk() -> noreturn
+ *	//		FTASK3CáFTASK1
+ *	== TASK3i±«j==
+ *	97:	slp_tsk()
+ *	//		áFTASK1
+ *
+ *	== TASK1i±«j==
+ *	98:	loc_mtx(MTX1)
+ *	//		FTASK1CMTX1FTASK1
+ *	99:	wup_tsk(TASK3)
+ *	//		FTASK1¨TASK3CMTX1FTASK1
+ * 100:	rot_rdq(MID_PRIORITY)
+ *	//		FTASK3¨TASK1CMTX1FTASK1
+ *	== TASK3i±«j==
+ * 101:	loc_mtx(MTX1) -> E_DLT
+ *	//		FTASK1CMTX1FTASK1¨TASK3
+ *	== TASK1i±«j==
+ * 102:	rsm_tsk(TASK2)
+ *	//		FTASK1CáFTASK2CMTX1FTASK1¨TASK3
+ * 103:	slp_tsk()
+ *	//		áFTASK2CMTX1FTASK1¨TASK3
+ *	== TASK2i±«j==
+ * 104:	ini_mtx(MTX1)			... (C-2)
+ *	//		FTASK3CáFTASK2
+ *	== TASK3i±«j==
+ * 105:	ext_tsk() -> noreturn
+ *	//		áFTASK2
+ *	== TASK2i±«j==
+ * 106:	ter_tsk(TASK1)
+ * 107:	END
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include "syssvc/logtask.h"
+#include "kernel_cfg.h"
+#include "test_lib.h"
+#include "test_mutex5.h"
+
+extern ER	bit_mutex(void);
+
+void
+task1(intptr_t exinf)
+{
+	ER		ercd;
+
+	set_bit_func(bit_mutex);
+
+	check_point(1);
+	ercd = loc_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	check_point(2);
+	ercd = act_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_point(3);
+	ercd = act_tsk(TASK5);
+	check_ercd(ercd, E_OK);
+
+	check_point(6);
+	ercd = sus_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_point(7);
+	ercd = loc_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	ercd = loc_mtx(MTX2);
+	check_ercd(ercd, E_OK);
+
+	check_point(8);
+	ercd = act_tsk(TASK3);
+	check_ercd(ercd, E_OK);
+
+	check_point(9);
+	ercd = dis_dsp();
+	check_ercd(ercd, E_OK);
+
+	check_point(10);
+	ercd = rot_rdq(MID_PRIORITY);
+	check_ercd(ercd, E_OK);
+
+	check_point(11);
+	ercd = act_tsk(TASK4);
+	check_ercd(ercd, E_OK);
+
+	check_point(12);
+	ercd = wup_tsk(TASK5);
+	check_ercd(ercd, E_OK);
+
+	check_point(13);
+	ercd = ena_dsp();
+	check_ercd(ercd, E_OK);
+
+	check_point(17);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(20);
+	ercd = loc_mtx(MTX3);
+	check_ercd(ercd, E_OK);
+
+	check_point(21);
+	ercd = wup_tsk(TASK3);
+	check_ercd(ercd, E_OK);
+
+	check_point(22);
+	ercd = dis_dsp();
+	check_ercd(ercd, E_OK);
+
+	check_point(23);
+	ercd = rot_rdq(MID_PRIORITY);
+	check_ercd(ercd, E_OK);
+
+	check_point(24);
+	ercd = wup_tsk(TASK4);
+	check_ercd(ercd, E_OK);
+
+	check_point(25);
+	ercd = wup_tsk(TASK5);
+	check_ercd(ercd, E_OK);
+
+	check_point(26);
+	ercd = ena_dsp();
+	check_ercd(ercd, E_OK);
+
+	check_point(30);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(33);
+	ercd = rsm_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_point(34);
+	ercd = ini_mtx(MTX2);
+	check_ercd(ercd, E_OK);
+
+	check_point(37);
+	ercd = wup_tsk(TASK5);
+	check_ercd(ercd, E_OK);
+
+	check_point(40);
+	ercd = loc_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	check_point(41);
+	ercd = loc_mtx(MTX4);
+	check_ercd(ercd, E_OK);
+
+	check_point(47);
+	ercd = unl_mtx(MTX4);
+	check_ercd(ercd, E_OK);
+
+	check_point(48);
+	ercd = wup_tsk(TASK5);
+	check_ercd(ercd, E_OK);
+
+	check_point(51);
+	ercd = wup_tsk(TASK3);
+	check_ercd(ercd, E_OK);
+
+	check_point(53);
+	ercd = loc_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	ercd = loc_mtx(MTX2);
+	check_ercd(ercd, E_OK);
+
+	check_point(54);
+	ercd = loc_mtx(MTX4);
+	check_ercd(ercd, E_OK);
+
+	check_point(62);
+	ercd = unl_mtx(MTX4);
+	check_ercd(ercd, E_OK);
+
+	check_point(65);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(73);
+	ercd = loc_mtx(MTX3);
+	check_ercd(ercd, E_OK);
+
+	check_point(74);
+	ercd = loc_mtx(MTX4);
+	check_ercd(ercd, E_OK);
+
+	check_point(82);
+	ercd = unl_mtx(MTX4);
+	check_ercd(ercd, E_OK);
+
+	check_point(85);
+	ercd = unl_mtx(MTX2);
+	check_ercd(ercd, E_OK);
+
+	check_point(87);
+	ercd = sus_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_point(88);
+	ercd = loc_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	check_point(89);
+	ercd = wup_tsk(TASK3);
+	check_ercd(ercd, E_OK);
+
+	check_point(90);
+	ercd = rot_rdq(MID_PRIORITY);
+	check_ercd(ercd, E_OK);
+
+	check_point(92);
+	ercd = wup_tsk(TASK5);
+	check_ercd(ercd, E_OK);
+
+	check_point(98);
+	ercd = loc_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	check_point(99);
+	ercd = wup_tsk(TASK3);
+	check_ercd(ercd, E_OK);
+
+	check_point(100);
+	ercd = rot_rdq(MID_PRIORITY);
+	check_ercd(ercd, E_OK);
+
+	check_point(102);
+	ercd = rsm_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_point(103);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(0);
+}
+
+void
+task2(intptr_t exinf)
+{
+	ER		ercd;
+
+	check_point(42);
+	ercd = loc_mtx(MTX4);
+	check_ercd(ercd, E_OK);
+
+	check_point(46);
+	ercd = unl_mtx(MTX4);
+	check_ercd(ercd, E_OK);
+
+	check_point(55);
+	ercd = wup_tsk(TASK4);
+	check_ercd(ercd, E_OK);
+
+	check_point(57);
+	ercd = wup_tsk(TASK5);
+	check_ercd(ercd, E_OK);
+
+	check_point(67);
+	ercd = wup_tsk(TASK5);
+	check_ercd(ercd, E_OK);
+
+	check_point(70);
+	ercd = wup_tsk(TASK3);
+	check_ercd(ercd, E_OK);
+
+	check_point(72);
+	ercd = wup_tsk(TASK1);
+	check_ercd(ercd, E_OK);
+
+	check_point(75);
+	ercd = wup_tsk(TASK4);
+	check_ercd(ercd, E_OK);
+
+	check_point(77);
+	ercd = wup_tsk(TASK5);
+	check_ercd(ercd, E_OK);
+
+	check_point(104);
+	ercd = ini_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	check_point(106);
+	ercd = ter_tsk(TASK1);
+	check_ercd(ercd, E_OK);
+
+	check_finish(107);
+
+	check_point(0);
+}
+
+void
+task3(intptr_t exinf)
+{
+	ER		ercd;
+
+	check_point(16);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(29);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(52);
+	ercd = loc_mtx(MTX4);
+	check_ercd(ercd, E_OK);
+
+	check_point(61);
+	ercd = unl_mtx(MTX4);
+	check_ercd(ercd, E_OK);
+
+	check_point(66);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(71);
+	ercd = loc_mtx(MTX4);
+	check_ercd(ercd, E_OK);
+
+	check_point(81);
+	ercd = unl_mtx(MTX4);
+	check_ercd(ercd, E_OK);
+
+	check_point(86);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(91);
+	ercd = loc_mtx(MTX1);
+	check_ercd(ercd, E_DLT);
+
+	check_point(97);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(101);
+	ercd = loc_mtx(MTX1);
+	check_ercd(ercd, E_DLT);
+
+	check_point(105);
+	ercd = ext_tsk();
+
+	check_point(0);
+}
+
+void
+task4(intptr_t exinf)
+{
+	ER		ercd;
+	PRI		tskpri;
+
+	check_point(18);
+	ercd = wup_tsk(TASK1);
+	check_ercd(ercd, E_OK);
+
+	check_point(19);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(31);
+	ercd = wup_tsk(TASK1);
+	check_ercd(ercd, E_OK);
+
+	check_point(32);
+	ercd = rot_rdq(MID_PRIORITY);
+	check_ercd(ercd, E_OK);
+
+	check_point(35);
+	ercd = get_pri(TASK1, &tskpri);
+	check_ercd(ercd, E_OK);
+	check_assert(tskpri == LOW_PRIORITY);
+
+	check_point(36);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(56);
+	ercd = loc_mtx(MTX4);
+	check_ercd(ercd, E_OK);
+
+	check_point(63);
+	ercd = unl_mtx(MTX4);
+	check_ercd(ercd, E_OK);
+
+	check_point(64);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(76);
+	ercd = loc_mtx(MTX4);
+	check_ercd(ercd, E_OK);
+
+	check_point(83);
+	ercd = unl_mtx(MTX4);
+	check_ercd(ercd, E_OK);
+
+	check_point(84);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(96);
+	ercd = ext_tsk();
+
+	check_point(0);
+}
+
+void
+task5(intptr_t exinf)
+{
+	ER		ercd;
+	PRI		tskpri;
+
+	check_point(4);
+	ercd = ini_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	ercd = get_pri(TASK1, &tskpri);
+	check_ercd(ercd, E_OK);
+	check_assert(tskpri == LOW_PRIORITY);
+
+	check_point(5);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(14);
+	ercd = ini_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	ercd = get_pri(TASK1, &tskpri);
+	check_ercd(ercd, E_OK);
+	check_assert(tskpri == MID_PRIORITY);
+
+	check_point(15);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(27);
+	ercd = ini_mtx(MTX3);
+	check_ercd(ercd, E_OK);
+
+	ercd = get_pri(TASK1, &tskpri);
+	check_ercd(ercd, E_OK);
+	check_assert(tskpri == MID_PRIORITY);
+
+	check_point(28);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(38);
+	ercd = loc_mtx(MTX4);
+	check_ercd(ercd, E_OK);
+
+	check_point(39);
+	ercd = tslp_tsk(10);
+	check_ercd(ercd, E_TMOUT);
+
+	check_point(43);
+	ercd = ini_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	ercd = get_pri(TASK1, &tskpri);
+	check_ercd(ercd, E_OK);
+	check_assert(tskpri == LOW_PRIORITY);
+
+	check_point(44);
+	ercd = unl_mtx(MTX4);
+	check_ercd(ercd, E_OK);
+
+	check_point(45);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(49);
+	ercd = loc_mtx(MTX4);
+	check_ercd(ercd, E_OK);
+
+	check_point(50);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(58);
+	ercd = ini_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	ercd = get_pri(TASK1, &tskpri);
+	check_ercd(ercd, E_OK);
+	check_assert(tskpri == MID_PRIORITY);
+
+	check_point(59);
+	ercd = unl_mtx(MTX4);
+	check_ercd(ercd, E_OK);
+
+	check_point(60);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(68);
+	ercd = loc_mtx(MTX4);
+	check_ercd(ercd, E_OK);
+
+	check_point(69);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(78);
+	ercd = ini_mtx(MTX3);
+	check_ercd(ercd, E_OK);
+
+	ercd = get_pri(TASK1, &tskpri);
+	check_ercd(ercd, E_OK);
+	check_assert(tskpri == MID_PRIORITY);
+
+	check_point(79);
+	ercd = unl_mtx(MTX4);
+	check_ercd(ercd, E_OK);
+
+	check_point(80);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(93);
+	ercd = wup_tsk(TASK4);
+	check_ercd(ercd, E_OK);
+
+	check_point(94);
+	ercd = ini_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	check_point(95);
+	ercd = ext_tsk();
+
+	check_point(0);
+}
Index: /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex5.cfg
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex5.cfg	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex5.cfg	(revision 61)
@@ -0,0 +1,26 @@
+/*
+ *  @(#) $Id: test_mutex5.cfg 1696 2010-01-01 16:01:25Z ertl-hiro $
+ */
+
+/*
+ *  ~
+[ebNXÌeXg(5)ÌVXeRtBM
+[Vt@C
+ */
+INCLUDE("target_timer.cfg");
+INCLUDE("syssvc/syslog.cfg");
+INCLUDE("syssvc/banner.cfg");
+INCLUDE("syssvc/serial.cfg");
+INCLUDE("syssvc/logtask.cfg");
+
+#include "test_mutex5.h"
+
+CRE_TSK(TASK1, { TA_ACT, 1, task1, LOW_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK2, { TA_NULL, 2, task2, LOW_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK3, { TA_NULL, 3, task3, MID_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK4, { TA_NULL, 4, task4, MID_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK5, { TA_NULL, 5, task5, HIGH_PRIORITY, STACK_SIZE, NULL });
+CRE_MTX(MTX1, { TA_CEILING, MID_PRIORITY });
+CRE_MTX(MTX2, { TA_CEILING, MID_PRIORITY });
+CRE_MTX(MTX3, { TA_CEILING, LOW_PRIORITY });
+CRE_MTX(MTX4, { TA_CEILING, HIGH_PRIORITY });
Index: /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex5.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex5.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex5.h	(revision 61)
@@ -0,0 +1,79 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2009 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_mutex5.h 1696 2010-01-01 16:01:25Z ertl-hiro $
+ */
+
+/* 
+ *		~
+[ebNXÌeXg(5)
+ */
+
+/*
+ *  ^[QbgË¶Ìè`
+ */
+#include "target_test.h"
+
+/*
+ *  DæxÌè`
+ */
+#define HIGH_PRIORITY	9		/* Dæx */
+#define MID_PRIORITY	10		/* Dæx */
+#define LOW_PRIORITY	11		/* áDæx */
+
+/*
+ *  ^[QbgÉË¶·éÂ\«Ì éèÌè`
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ^XNÌX^bNTCY */
+#endif /* STACK_SIZE */
+
+/*
+ *  ÖÌvg^Cvé¾
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+extern void	task1(intptr_t exinf);
+extern void	task2(intptr_t exinf);
+extern void	task3(intptr_t exinf);
+extern void	task4(intptr_t exinf);
+extern void	task5(intptr_t exinf);
+
+#endif /* TOPPERS_MACRO_ONLY */
Index: /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex6.c
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex6.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex6.c	(revision 61)
@@ -0,0 +1,475 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2009 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_mutex6.c 1696 2010-01-01 16:01:25Z ertl-hiro $
+ */
+
+/* 
+ *		~
+[ebNXÌeXg(6)
+ *
+ * yeXgÌÚIz
+ *
+ *  DæxãÀ~
+[ebNXÉÎµÄC^XNÌI¹C^XNÌDæÊ
+ *  Ìñ]Ì~
+[ebNXÖAÌðÔ
+IÉeXg·éD
+ *
+ * yeXgÚz
+ *
+ *	(A) ^XNÌI¹iext_tskj
+ *		(A-1) bNµÄ¢½~
+[ebNXi1ÂjªbNð³êé±ÆD
+ *		(A-2) bNµÄ¢½~
+[ebNXi1ÂjªbNð³êCb
+ *			  NðÒÁÄ¢½^XNª»êðbNµCDæxªÏ»µCÒ
+ *			  ¿ð³êé±ÆD
+ *		(A-3) bNµÄ¢½~
+[ebNXi¡jª·×ÄbNð³
+ *			  êé±ÆD
+ *		(A-4) bNµÄ¢½~
+[ebNXi¡jªbNð³êCb
+ *			  NðÒÁÄ¢½^XNi¡jª»êðbNµCDæxªÏ
+ *			  »µCÒ¿ð³êé±ÆD»ÌÉCãÅ~
+[ebNXð
+ *			  bNµ½^XNiæÉbNµÄ¢½~
+[ebNXðÒÁ
+ *			  Ä¢½^XNjÌûªCDæÊª­Èé±ÆD
+ *	(B) ^XNÌDæÊÌñ]irot_rdqj
+ *		(B-1) TPRI_SELFðwèµ½ÉC^XNÌx[XDæxÌDæÊª
+ *		@@@ñ]·é±ÆD
+ *		(B-2) TPRI_SELFðwèµ½ÉC^XNÌ»ÝDæxÌDæÊªñ
+ *		@@@]µÈ¢±ÆD
+ *
+ * yeXgÚÌÀ»û@z
+ *
+ *	(A-1)
+ *		áDæx^XNiTASK2jÉ~
+[ebNXiMTX1jðbN³¹C
+ *		ext_tsk·éÆCbNªð³êé±ÆðmF·éD
+ *	(A-2)
+ *		áDæx^XNiTASK2jÉDæxãÀ~
+[ebNXiMTX1jðb
+ *		N³¹CÊÌáDæx^XNiTASK3jÉMTX1ðÒ½¹½óÔÅC
+ *		TASK2 ªext_tsk·éÆCTASK3ªDæxÉÈÁÄÒ¿ð³êé±
+ *		ÆðmF·éD
+ *	(A-3)
+ *		áDæx^XNiTASK2jÉ~
+[ebNXð2ÂiMTX1CMTX2jb
+ *		N³¹Cext_tsk·éÆC¼ûÌbNªð³êé±ÆðmF·éD
+ *	(A-4)
+ *		áDæx^XNiTASK2jÉDæxãÀ~
+[ebNX2ÂiMTX1C
+ *		MTX2jð±ÌÅbN³¹CÊÌáDæx^XN2ÂiTASK3C
+ *		TASK4jÉ»ê¼êÌbNðÒ½¹½óÔÅCTASK2ðext_tsk·éÆC
+ *		TASK3ÆTASK4ªDæxÉÈÁÄÒ¿ð³êé±ÆðmF·éDÜ
+ *		½CæÉbNµÄ¢½~
+[ebNXiMTX1jðÒÁÄ¢½^XN
+ *		iTASK3jªCTASK4æèàDæÊª­Èé±ÆðmF·éD
+ *	(B-1)
+ *		áDæx^XNª3ÂiTASK2CTASK3CTASK4jªÀsÅ«éóÔÌ
+ *		ÉC1ÂÌáDæx^XNiTASK2jÉDæxãÀ~
+[ebNXð
+ *		bN³¹Crot_rdq(TPRI_SELF)·éÆCcèÌ2ÂÌáDæx^XN
+ *		ÌDæÊªñ]·é±ÆðmF·éD
+ *	(B-2)
+ *		ãÆ¯¶óµÅCDæx^XNÌDæÊªñ]µÈ¢±ÆðmF
+ *		·éD
+ *
+ * ygp\[Xz
+ *
+ *	TASK1: áDæx^XNCC^XNCÅ©çN®
+ *	TASK2: áDæx^XN
+ *	TASK3: áDæx^XN
+ *	TASK4: áDæx^XN
+ *	MTX1: ~
+[ebNXiTA_CEILING®«CãÀÍDæxj
+ *	MTX2: ~
+[ebNXiTA_CEILING®«CãÀÍDæxj
+ *
+ * yeXgV[PXz
+ *
+ *	== TASK1iDæxFáj==
+ *		call(set_bit_func(bit_mutex))
+ *	1:	act_tsk(TASK2)
+ *	2:	rot_rdq(TPRI_SELF)
+ *	//		áFTASK2¨TASK1
+ *	== TASK2-1iDæxFáj1ñß ==
+ *	3:	loc_mtx(MTX1)
+ *	//		FTASK2CáFTASK1CMTX1FTASK2
+ *	4:	ext_tsk() -> noreturn			... (A-1)
+ *	//		áFTASK1
+ *	== TASK1i±«j==
+ *	5:	ref_mtx(MTX1, &rmtx)
+ *		assert(rmtx.htskid == TSK_NONE)
+ *		assert(rmtx.wtskid == TSK_NONE)
+ *
+ *	6:	act_tsk(TASK2)
+ *		act_tsk(TASK3)
+ *	7:	rot_rdq(TPRI_SELF)
+ *	//		áFTASK2¨TASK3¨TASK1
+ *	== TASK2-2iDæxFáj2ñß ==
+ *	8:	loc_mtx(MTX1)
+ *	//		FTASK2CáFTASK3¨TASK1CMTX1FTASK2
+ *	9:	slp_tsk()
+ *	//		áFTASK3¨TASK1CMTX1FTASK2
+ *	== TASK3iDæxFáj==
+ *	10:	loc_mtx(MTX1)
+ *	//		áFTASK1CMTX1FTASK2¨TASK3
+ *	== TASK1i±«j==
+ *	11:	wup_tsk(TASK2)
+ *	//		FTASK2CáFTASK1CMTX1FTASK2¨TASK3
+ *	== TASK2-2i±«j==
+ *	12:	ext_tsk() -> noreturn			... (A-2)
+ *	//		FTASK3CáFTASK1CMTX1FTASK3
+ *	== TASK3i±«j==
+ *	13:	ref_mtx(MTX1, &rmtx)
+ *		assert(rmtx.htskid == TASK3)
+ *		assert(rmtx.wtskid == TSK_NONE)
+ *		get_pri(TPRI_SELF, &tskpri)
+ *		assert(tskpri == HIGH_PRIORITY)
+ *		unl_mtx(MTX1)
+ *		slp_tsk()
+ *	//		áFTASK1
+ *
+ *	== TASK1i±«j==
+ *	14:	act_tsk(TASK2)
+ *	15:	rot_rdq(TPRI_SELF)
+ *	//		áFTASK2¨TASK1
+ *	== TASK2-3iDæxFáj3ñß ==
+ *	16:	loc_mtx(MTX1)
+ *		loc_mtx(MTX2)
+ *	//		FTASK2CáFTASK1CMTX1FTASK2CMTX2FTASK2
+ *	17:	ext_tsk() -> noreturn			... (A-3)
+ *	//		áFTASK1
+ *	== TASK1i±«j==
+ *	18:	ref_mtx(MTX1, &rmtx)
+ *		assert(rmtx.htskid == TSK_NONE)
+ *		assert(rmtx.wtskid == TSK_NONE)
+ *		ref_mtx(MTX2, &rmtx)
+ *		assert(rmtx.htskid == TSK_NONE)
+ *		assert(rmtx.wtskid == TSK_NONE)
+ *
+ *	19:	act_tsk(TASK2)
+ *		wup_tsk(TASK3)
+ *		act_tsk(TASK4)
+ *	20:	rot_rdq(TPRI_SELF)
+ *	//		áFTASK2¨TASK3¨TASK4¨TASK1
+ *	== TASK2-4iDæxFáj4ñß ==
+ *	21:	loc_mtx(MTX1)
+ *		loc_mtx(MTX2)
+ *	//		FTASK2CáFTASK3¨TASK4¨TASK1CMTX1FTASK2CMTX2FTASK2
+ *	22:	chg_pri(TASK1, HIGH_PRIORITY)
+ *	//		FTASK2¨TASK1CáFTASK3¨TASK4CMTX1FTASK2CMTX2FTASK2
+ *	23:	rot_rdq(TPRI_SELF)				... (B-1)(B-2)
+ *	//		FTASK2¨TASK1CáFTASK4¨TASK3CMTX1FTASK2CMTX2FTASK2
+ *	24:	slp_tsk()
+ *	//		FTASK1CáFTASK4¨TASK3CMTX1FTASK2CMTX2FTASK2
+ *	== TASK1i±«j==
+ *	25:	chg_pri(TSK_SELF, TPRI_INI)
+ *	//		áFTASK4¨TASK3¨TASK1CMTX1FTASK2CMTX2FTASK2
+ *	== TASK4iDæxFáj==
+ *	26:	loc_mtx(MTX2)
+ *	//		áFTASK3¨TASK1CMTX1FTASK2CMTX2FTASK2¨TASK4
+ *	== TASK3i±«j==
+ *	27:	loc_mtx(MTX1)
+ *	//		áFTASK1CMTX1FTASK2¨TASK3CMTX2FTASK2¨TASK4
+ *	== TASK1i±«j==
+ *	28:	wup_tsk(TASK2)
+ *	//		FTASK2CáFTASK1CMTX1FTASK2¨TASK3CMTX2FTASK2¨TASK4
+ *	== TASK2-4i±«j==
+ *	29:	ext_tsk() -> noreturn			... (A-4)
+ *	//		FTASK3¨TASK4CáFTASK1CMTX1FTASK3CMTX2FTASK4
+ *	== TASK3i±«j==
+ *	30:	ref_mtx(MTX1, &rmtx)
+ *		assert(rmtx.htskid == TASK3)
+ *		assert(rmtx.wtskid == TSK_NONE)
+ *		ref_mtx(MTX2, &rmtx)
+ *		assert(rmtx.htskid == TASK4)
+ *		assert(rmtx.wtskid == TSK_NONE)
+ *		get_pri(TPRI_SELF, &tskpri)
+ *		assert(tskpri == HIGH_PRIORITY)
+ *		ext_tsk() -> noreturn
+ *	//		FTASK4CáFTASK1CMTX2FTASK4
+ *	== TASK4i±«j==
+ *	31:	get_pri(TPRI_SELF, &tskpri)
+ *		assert(tskpri == HIGH_PRIORITY)
+ *		ext_tsk() -> noreturn
+ *	//		áFTASK1
+ *	== TASK1i±«j==
+ *	32:	END
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include "syssvc/logtask.h"
+#include "kernel_cfg.h"
+#include "test_lib.h"
+#include "test_mutex6.h"
+
+extern ER	bit_mutex(void);
+
+void
+task1(intptr_t exinf)
+{
+	ER		ercd;
+	T_RMTX	rmtx;
+
+	set_bit_func(bit_mutex);
+
+	check_point(1);
+	ercd = act_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_point(2);
+	ercd = rot_rdq(TPRI_SELF);
+	check_ercd(ercd, E_OK);
+
+	check_point(5);
+	ercd = ref_mtx(MTX1, &rmtx);
+	check_ercd(ercd, E_OK);
+	check_assert(rmtx.htskid == TSK_NONE);
+	check_assert(rmtx.wtskid == TSK_NONE);
+
+	check_point(6);
+	ercd = act_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	ercd = act_tsk(TASK3);
+	check_ercd(ercd, E_OK);
+
+	check_point(7);
+	ercd = rot_rdq(TPRI_SELF);
+	check_ercd(ercd, E_OK);
+
+	check_point(11);
+	ercd = wup_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_point(14);
+	ercd = act_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_point(15);
+	ercd = rot_rdq(TPRI_SELF);
+	check_ercd(ercd, E_OK);
+
+	check_point(18);
+	ercd = ref_mtx(MTX1, &rmtx);
+	check_ercd(ercd, E_OK);
+	check_assert(rmtx.htskid == TSK_NONE);
+	check_assert(rmtx.wtskid == TSK_NONE);
+
+	ercd = ref_mtx(MTX2, &rmtx);
+	check_ercd(ercd, E_OK);
+	check_assert(rmtx.htskid == TSK_NONE);
+	check_assert(rmtx.wtskid == TSK_NONE);
+
+	check_point(19);
+	ercd = act_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	ercd = wup_tsk(TASK3);
+	check_ercd(ercd, E_OK);
+
+	ercd = act_tsk(TASK4);
+	check_ercd(ercd, E_OK);
+
+	check_point(20);
+	ercd = rot_rdq(TPRI_SELF);
+	check_ercd(ercd, E_OK);
+
+	check_point(25);
+	ercd = chg_pri(TSK_SELF, TPRI_INI);
+	check_ercd(ercd, E_OK);
+
+	check_point(28);
+	ercd = wup_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_finish(32);
+
+	check_point(0);
+}
+
+static uint_t	task2_count = 0;
+
+void
+task2(intptr_t exinf)
+{
+	ER		ercd;
+
+	switch (++task2_count) {
+	case 1:
+		check_point(3);
+		ercd = loc_mtx(MTX1);
+		check_ercd(ercd, E_OK);
+
+		check_point(4);
+		ercd = ext_tsk();
+
+		check_point(0);
+
+	case 2:
+		check_point(8);
+		ercd = loc_mtx(MTX1);
+		check_ercd(ercd, E_OK);
+
+		check_point(9);
+		ercd = slp_tsk();
+		check_ercd(ercd, E_OK);
+
+		check_point(12);
+		ercd = ext_tsk();
+
+		check_point(0);
+
+	case 3:
+		check_point(16);
+		ercd = loc_mtx(MTX1);
+		check_ercd(ercd, E_OK);
+
+		ercd = loc_mtx(MTX2);
+		check_ercd(ercd, E_OK);
+
+		check_point(17);
+		ercd = ext_tsk();
+
+		check_point(0);
+
+	case 4:
+		check_point(21);
+		ercd = loc_mtx(MTX1);
+		check_ercd(ercd, E_OK);
+
+		ercd = loc_mtx(MTX2);
+		check_ercd(ercd, E_OK);
+
+		check_point(22);
+		ercd = chg_pri(TASK1, HIGH_PRIORITY);
+		check_ercd(ercd, E_OK);
+
+		check_point(23);
+		ercd = rot_rdq(TPRI_SELF);
+		check_ercd(ercd, E_OK);
+
+		check_point(24);
+		ercd = slp_tsk();
+		check_ercd(ercd, E_OK);
+
+		check_point(29);
+		ercd = ext_tsk();
+
+		check_point(0);
+	}
+	check_point(0);
+}
+
+void
+task3(intptr_t exinf)
+{
+	ER		ercd;
+	PRI		tskpri;
+	T_RMTX	rmtx;
+
+	check_point(10);
+	ercd = loc_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	check_point(13);
+	ercd = ref_mtx(MTX1, &rmtx);
+	check_ercd(ercd, E_OK);
+	check_assert(rmtx.htskid == TASK3);
+	check_assert(rmtx.wtskid == TSK_NONE);
+
+	ercd = get_pri(TPRI_SELF, &tskpri);
+	check_ercd(ercd, E_OK);
+	check_assert(tskpri == HIGH_PRIORITY);
+
+	ercd = unl_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(27);
+	ercd = loc_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	check_point(30);
+	ercd = ref_mtx(MTX1, &rmtx);
+	check_ercd(ercd, E_OK);
+	check_assert(rmtx.htskid == TASK3);
+	check_assert(rmtx.wtskid == TSK_NONE);
+
+	ercd = ref_mtx(MTX2, &rmtx);
+	check_ercd(ercd, E_OK);
+	check_assert(rmtx.htskid == TASK4);
+	check_assert(rmtx.wtskid == TSK_NONE);
+
+	ercd = get_pri(TPRI_SELF, &tskpri);
+	check_ercd(ercd, E_OK);
+	check_assert(tskpri == HIGH_PRIORITY);
+
+	ercd = ext_tsk();
+
+	check_point(0);
+}
+
+void
+task4(intptr_t exinf)
+{
+	ER		ercd;
+	PRI		tskpri;
+
+	check_point(26);
+	ercd = loc_mtx(MTX2);
+	check_ercd(ercd, E_OK);
+
+	check_point(31);
+	ercd = get_pri(TPRI_SELF, &tskpri);
+	check_ercd(ercd, E_OK);
+	check_assert(tskpri == HIGH_PRIORITY);
+
+	ercd = ext_tsk();
+
+	check_point(0);
+}
Index: /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex6.cfg
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex6.cfg	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex6.cfg	(revision 61)
@@ -0,0 +1,23 @@
+/*
+ *  @(#) $Id: test_mutex6.cfg 733 2008-01-24 08:28:59Z hiro $
+ */
+
+/*
+ *  ~
+[ebNXÌeXg(6)ÌVXeRtBM
+[Vt@C
+ */
+INCLUDE("target_timer.cfg");
+INCLUDE("syssvc/syslog.cfg");
+INCLUDE("syssvc/banner.cfg");
+INCLUDE("syssvc/serial.cfg");
+INCLUDE("syssvc/logtask.cfg");
+
+#include "test_mutex6.h"
+
+CRE_TSK(TASK1, { TA_ACT, 1, task1, LOW_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK2, { TA_NULL, 2, task2, LOW_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK3, { TA_NULL, 3, task3, LOW_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK4, { TA_NULL, 4, task4, LOW_PRIORITY, STACK_SIZE, NULL });
+CRE_MTX(MTX1, { TA_CEILING, HIGH_PRIORITY });
+CRE_MTX(MTX2, { TA_CEILING, HIGH_PRIORITY });
Index: /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex6.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex6.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex6.h	(revision 61)
@@ -0,0 +1,78 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_mutex6.h 519 2007-08-28 02:08:04Z hiro $
+ */
+
+/* 
+ *		~
+[ebNXÌeXg(6)
+ */
+
+/*
+ *  ^[QbgË¶Ìè`
+ */
+#include "target_test.h"
+
+/*
+ *  DæxÌè`
+ */
+#define HIGH_PRIORITY	9		/* Dæx */
+#define MID_PRIORITY	10		/* Dæx */
+#define LOW_PRIORITY	11		/* áDæx */
+
+/*
+ *  ^[QbgÉË¶·éÂ\«Ì éèÌè`
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ^XNÌX^bNTCY */
+#endif /* STACK_SIZE */
+
+/*
+ *  ÖÌvg^Cvé¾
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+extern void	task1(intptr_t exinf);
+extern void	task2(intptr_t exinf);
+extern void	task3(intptr_t exinf);
+extern void	task4(intptr_t exinf);
+
+#endif /* TOPPERS_MACRO_ONLY */
Index: /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex7.c
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex7.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex7.c	(revision 61)
@@ -0,0 +1,641 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2008-2009 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_mutex7.c 1696 2010-01-01 16:01:25Z ertl-hiro $
+ */
+
+/* 
+ *		~
+[ebNXÌeXg(7)
+ *
+ * yeXgÌÚIz
+ *
+ *  DæxãÀ~
+[ebNXÉÎµÄC^XNÌ­§I¹Ì~
+[ebN
+ *  XÖAÌðÔ
+IÉeXg·éD
+ *
+ * yeXgÚz
+ *
+ *	(A) ^XNÌ­§I¹iter_tskj
+ *		(A-1) bNµÄ¢½~
+[ebNXi1ÂjªbNð³êé±ÆD
+ *		(A-2) bNµÄ¢½~
+[ebNXi1ÂjªbNð³êCb
+ *			  NðÒÁÄ¢½^XNª»êðbNµCDæxªÏ»µCÒ
+ *			  ¿ð³êé±ÆD
+ *		(A-3) (A-2)ÌÊC^XNfBXpb`ªN±é±ÆD
+ *		(A-4) bNµÄ¢½~
+[ebNXi¡jª·×ÄbNð³
+ *			  êé±ÆD
+ *		(A-5) bNµÄ¢½~
+[ebNXi¡jªbNð³êCb
+ *			  NðÒÁÄ¢½^XNi¡jª»êðbNµCDæxªÏ
+ *			  »µCÒ¿ð³êé±ÆD»ÌÉCãÅ~
+[ebNXð
+ *			  bNµ½^XNiæÉbNµÄ¢½~
+[ebNXðÒÁ
+ *			  Ä¢½^XNjÌûªCDæÊª­Èé±ÆD
+ *		(A-6) (A-5)ÌÊC^XNfBXpb`ªN±é±ÆD
+ *
+ * yeXgÚÌÀ»û@z
+ *
+ *	(A-1)
+ *		áDæx^XNiTASK2jÉ~
+[ebNXiMTX1jðbN³¹CÊ
+ *		Ì^XNiTASK1j©çTASK2ðter_tsk·éÆCbNªð³êé±
+ *		ÆðmF·éD
+ *	(A-2)
+ *		áDæx^XNiTASK2jÉDæxãÀ~
+[ebNXiMTX1jðb
+ *		N³¹CÊÌáDæx^XNiTASK3jÉMTX1ðÒ½¹½óÔÅCD
+ *		æx^XNiTASK1j©çTASK2ðter_tsk·éÆCTASK3ªDæxÉ
+ *		ÈÁÄÒ¿ð³êé±ÆðmF·éD
+ *	(A-3)
+ *		áDæx^XNiTASK2jÉDæxãÀ~
+[ebNXiMTX1jðb
+ *		N³¹CÊÌáDæx^XNiTASK3jÉMTX1ðÒ½¹½óÔÅCÊÌ
+ *		áDæx^XNiTASK1j©çTASK2ðter_tsk·éÆCTASK3ªDæ
+ *		xÉÈÁÄÒ¿ð³êCTASK3ÉØè·íé±ÆðmF·éD
+ *	(A-4)
+ *		áDæx^XNiTASK2jÉ~
+[ebNXð2ÂiMTX1CMTX2jb
+ *		N³¹CÊÌ^XNiTASK1j©çTASK2ðter_tsk·éÆC¼ûÌb
+ *		Nªð³êé±ÆðmF·éD
+ *	(A-5)
+ *		áDæx^XNiTASK2jÉDæxãÀ~
+[ebNX2ÂiMTX1C
+ *		MTX2jð±ÌÅbN³¹CÊÌáDæx^XN2ÂiTASK3C
+ *		TASK4jÉ»ê¼êÌbNðÒ½¹½óÔÅCDæx^XN
+ *		iTASK1j©çTASK2ðter_tsk·éÆCTASK3ÆTASK4ªDæxÉÈÁ
+ *		ÄÒ¿ð³êé±ÆðmF·éDÜ½CæÉbNµÄ¢½~
+[
+ *		ebNXiMTX1jðÒÁÄ¢½^XNiTASK3jªCTASK4æèàDæ
+ *		Êª­Èé±ÆðmF·éD
+ *	(A-6)
+ *		áDæx^XNiTASK2jÉDæxãÀ~
+[ebNX2ÂiMTX1C
+ *		MTX2jð±ÌÅbN³¹CÊÌáDæx^XN2ÂiTASK3C
+ *		TASK4jÉ»ê¼êÌbNðÒ½¹½óÔÅCÊÌáDæx^XN
+ *		iTASK1j©çTASK2 ðter_tsk·éÆCTASK3ÆTASK4ªDæxÉÈÁ
+ *		ÄÒ¿ð³êCTASK3ÉØè·íé±ÆðmF·éD
+ *
+ * ygp\[Xz
+ *
+ *	TASK1: Dæx^XNCC^XNCÅ©çN®
+ *	TASK2: áDæx^XN
+ *	TASK3: áDæx^XN
+ *	TASK4: áDæx^XN
+ *	MTX1: ~
+[ebNXiTA_CEILING®«CãÀÍDæxj
+ *	MTX2: ~
+[ebNXiTA_CEILING®«CãÀÍDæxj
+ *
+ * yeXgV[PXz
+ *
+ *	== TASK1iDæxFj==
+ *		call(set_bit_func(bit_mutex))
+ *	1:	act_tsk(TASK2)
+ *	2:	slp_tsk()
+ *	== TASK2-1iDæxFáj==
+ *	3:	loc_mtx(MTX1)
+ *	4:	wup_tsk(TASK1)
+ *	== TASK1i±«j==
+ *	5:	ter_tsk(TASK2)			... (A-1)
+ *	6:	ref_mtx(MTX1, &rmtx)
+ *		assert(rmtx.htskid == TSK_NONE)
+ *		assert(rmtx.wtskid == TSK_NONE)
+ *
+ *	7:	act_tsk(TASK2)
+ *		act_tsk(TASK3)
+ *	8:	slp_tsk()
+ *	== TASK2-2iDæxFáj==
+ *	9:	loc_mtx(MTX1)
+ *	10:	tslp_tsk(10) -> E_TMOUT
+ *	== TASK3-1iDæxFáj==
+ *	11:	loc_mtx(MTX1)
+ *	== TASK2-2i±«j==
+ *	12:	wup_tsk(TASK1)
+ *	== TASK1i±«j==
+ *	13:	ter_tsk(TASK2)			... (A-2)
+ *	14:	ref_mtx(MTX1, &rmtx)
+ *		assert(rmtx.htskid == TASK3)
+ *		assert(rmtx.wtskid == TSK_NONE)
+ *		get_pri(TASK3, &tskpri)
+ *		assert(tskpri == MID_PRIORITY)
+ *	15:	ter_tsk(TASK3)
+ *
+ *	16:	act_tsk(TASK2)
+ *		act_tsk(TASK3)
+ *	17:	chg_pri(TSK_SELF, LOW_PRIORITY)
+ *	== TASK2-3iDæxFáj==
+ *	18:	loc_mtx(MTX1)
+ *	19:	slp_tsk()
+ *	== TASK3-2iDæxFáj==
+ *	20:	loc_mtx(MTX1)
+ *	== TASK1i±«j==
+ *	21:	ter_tsk(TASK2)			... (A-3)
+ *	== TASK3-2i±«j==
+ *	22:	ref_mtx(MTX1, &rmtx)
+ *		assert(rmtx.htskid == TASK3)
+ *		assert(rmtx.wtskid == TSK_NONE)
+ *		get_pri(TASK3, &tskpri)
+ *		assert(tskpri == MID_PRIORITY)
+ *	23:	ext_tsk() -> noreturn
+ *	== TASK1i±«j==
+ *	24:	chg_pri(TSK_SELF, HIGH_PRIORITY)
+ *
+ *	25:	act_tsk(TASK2)
+ *	26:	slp_tsk()
+ *	== TASK2-4iDæxFáj==
+ *	27:	loc_mtx(MTX1)
+ *		loc_mtx(MTX2)
+ *	28:	wup_tsk(TASK1)
+ *	== TASK1i±«j==
+ *	29:	ter_tsk(TASK2)			... (A-4)
+ *	30:	ref_mtx(MTX1, &rmtx)
+ *		assert(rmtx.htskid == TSK_NONE)
+ *		assert(rmtx.wtskid == TSK_NONE)
+ *		ref_mtx(MTX2, &rmtx)
+ *		assert(rmtx.htskid == TSK_NONE)
+ *		assert(rmtx.wtskid == TSK_NONE)
+ *	31:	MISSING
+ *
+ *	32:	act_tsk(TASK2)
+ *		act_tsk(TASK3)
+ *		act_tsk(TASK4)
+ *	33:	slp_tsk()
+ *	== TASK2-5iDæxFáj==
+ *	34:	loc_mtx(MTX1)
+ *		loc_mtx(MTX2)
+ *	35:	tslp_tsk(10) -> E_TMOUT
+ *	== TASK3-3iDæxFáj==
+ *	36:	loc_mtx(MTX1)
+ *	== TASK4-1iDæxFáj==
+ *	37:	loc_mtx(MTX2)
+ *	== TASK2-5i±«j==
+ *	38:	wup_tsk(TASK1)
+ *	== TASK1i±«j==
+ *	39:	ter_tsk(TASK2)			... (A-5)
+ *	40:	ref_mtx(MTX1, &rmtx)
+ *		assert(rmtx.htskid == TASK3)
+ *		assert(rmtx.wtskid == TSK_NONE)
+ *		ref_mtx(MTX2, &rmtx)
+ *		assert(rmtx.htskid == TASK4)
+ *		assert(rmtx.wtskid == TSK_NONE)
+ *		get_pri(TASK3, &tskpri)
+ *		assert(tskpri == MID_PRIORITY)
+ *		get_pri(TASK4, &tskpri)
+ *		assert(tskpri == MID_PRIORITY)
+ *	41:	chg_pri(TSK_SELF, LOW_PRIORITY)
+ *	== TASK3-3i±«j==
+ *	42:	ext_tsk() -> noreturn
+ *	== TASK4-1i±«j==
+ *	43:	ext_tsk() -> noreturn
+ *	== TASK1i±«j==
+ *	44:	act_tsk(TASK2)
+ *		act_tsk(TASK3)
+ *		act_tsk(TASK4)
+ *	45:	chg_pri(TSK_SELF, LOW_PRIORITY)
+ *	== TASK2-6iDæxFáj==
+ *	46:	loc_mtx(MTX1)
+ *		loc_mtx(MTX2)
+ *	47:	slp_tsk()
+ *	== TASK3-4iDæxFáj==
+ *	48:	loc_mtx(MTX1)
+ *	== TASK4-2iDæxFáj==
+ *	49:	loc_mtx(MTX2)
+ *	== TASK1i±«j==
+ *	50:	ter_tsk(TASK2)			... (A-6)
+ *	== TASK3-4i±«j==
+ *	51:	ref_mtx(MTX1, &rmtx)
+ *		assert(rmtx.htskid == TASK3)
+ *		assert(rmtx.wtskid == TSK_NONE)
+ *		ref_mtx(MTX2, &rmtx)
+ *		assert(rmtx.htskid == TASK4)
+ *		assert(rmtx.wtskid == TSK_NONE)
+ *		get_pri(TASK3, &tskpri)
+ *		assert(tskpri == MID_PRIORITY)
+ *		get_pri(TASK4, &tskpri)
+ *		assert(tskpri == MID_PRIORITY)
+ *	52:	ext_tsk() -> noreturn
+ *	== TASK4-2i±«j==
+ *	53:	ext_tsk() -> noreturn
+ *	== TASK1i±«j==
+ *	54:	END
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include "syssvc/logtask.h"
+#include "kernel_cfg.h"
+#include "test_lib.h"
+#include "test_mutex7.h"
+
+extern ER	bit_mutex(void);
+
+void
+task1(intptr_t exinf)
+{
+	ER		ercd;
+	PRI		tskpri;
+	T_RMTX	rmtx;
+
+	set_bit_func(bit_mutex);
+
+	check_point(1);
+	ercd = act_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_point(2);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(5);
+	ercd = ter_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_point(6);
+	ercd = ref_mtx(MTX1, &rmtx);
+	check_ercd(ercd, E_OK);
+	check_assert(rmtx.htskid == TSK_NONE);
+	check_assert(rmtx.wtskid == TSK_NONE);
+
+	check_point(7);
+	ercd = act_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	ercd = act_tsk(TASK3);
+	check_ercd(ercd, E_OK);
+
+	check_point(8);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(13);
+	ercd = ter_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_point(14);
+	ercd = ref_mtx(MTX1, &rmtx);
+	check_ercd(ercd, E_OK);
+	check_assert(rmtx.htskid == TASK3);
+	check_assert(rmtx.wtskid == TSK_NONE);
+
+	ercd = get_pri(TASK3, &tskpri);
+	check_ercd(ercd, E_OK);
+	check_assert(tskpri == MID_PRIORITY);
+
+	check_point(15);
+	ercd = ter_tsk(TASK3);
+	check_ercd(ercd, E_OK);
+
+	check_point(16);
+	ercd = act_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	ercd = act_tsk(TASK3);
+	check_ercd(ercd, E_OK);
+
+	check_point(17);
+	ercd = chg_pri(TSK_SELF, LOW_PRIORITY);
+	check_ercd(ercd, E_OK);
+
+	check_point(21);
+	ercd = ter_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_point(24);
+	ercd = chg_pri(TSK_SELF, HIGH_PRIORITY);
+	check_ercd(ercd, E_OK);
+
+	check_point(25);
+	ercd = act_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_point(26);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(29);
+	ercd = ter_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_point(30);
+	ercd = ref_mtx(MTX1, &rmtx);
+	check_ercd(ercd, E_OK);
+	check_assert(rmtx.htskid == TSK_NONE);
+	check_assert(rmtx.wtskid == TSK_NONE);
+
+	ercd = ref_mtx(MTX2, &rmtx);
+	check_ercd(ercd, E_OK);
+	check_assert(rmtx.htskid == TSK_NONE);
+	check_assert(rmtx.wtskid == TSK_NONE);
+
+	check_point(31);
+
+	check_point(32);
+	ercd = act_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	ercd = act_tsk(TASK3);
+	check_ercd(ercd, E_OK);
+
+	ercd = act_tsk(TASK4);
+	check_ercd(ercd, E_OK);
+
+	check_point(33);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(39);
+	ercd = ter_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_point(40);
+	ercd = ref_mtx(MTX1, &rmtx);
+	check_ercd(ercd, E_OK);
+	check_assert(rmtx.htskid == TASK3);
+	check_assert(rmtx.wtskid == TSK_NONE);
+
+	ercd = ref_mtx(MTX2, &rmtx);
+	check_ercd(ercd, E_OK);
+	check_assert(rmtx.htskid == TASK4);
+	check_assert(rmtx.wtskid == TSK_NONE);
+
+	ercd = get_pri(TASK3, &tskpri);
+	check_ercd(ercd, E_OK);
+	check_assert(tskpri == MID_PRIORITY);
+
+	ercd = get_pri(TASK4, &tskpri);
+	check_ercd(ercd, E_OK);
+	check_assert(tskpri == MID_PRIORITY);
+
+	check_point(41);
+	ercd = chg_pri(TSK_SELF, LOW_PRIORITY);
+	check_ercd(ercd, E_OK);
+
+	check_point(44);
+	ercd = act_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	ercd = act_tsk(TASK3);
+	check_ercd(ercd, E_OK);
+
+	ercd = act_tsk(TASK4);
+	check_ercd(ercd, E_OK);
+
+	check_point(45);
+	ercd = chg_pri(TSK_SELF, LOW_PRIORITY);
+	check_ercd(ercd, E_OK);
+
+	check_point(50);
+	ercd = ter_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_finish(54);
+
+	check_point(0);
+}
+
+static uint_t	task2_count = 0;
+
+void
+task2(intptr_t exinf)
+{
+	ER		ercd;
+
+	switch (++task2_count) {
+	case 1:
+		check_point(3);
+		ercd = loc_mtx(MTX1);
+		check_ercd(ercd, E_OK);
+
+		check_point(4);
+		ercd = wup_tsk(TASK1);
+		check_ercd(ercd, E_OK);
+
+		check_point(0);
+
+	case 2:
+		check_point(9);
+		ercd = loc_mtx(MTX1);
+		check_ercd(ercd, E_OK);
+
+		check_point(10);
+		ercd = tslp_tsk(10);
+		check_ercd(ercd, E_TMOUT);
+
+		check_point(12);
+		ercd = wup_tsk(TASK1);
+		check_ercd(ercd, E_OK);
+
+		check_point(0);
+
+	case 3:
+		check_point(18);
+		ercd = loc_mtx(MTX1);
+		check_ercd(ercd, E_OK);
+
+		check_point(19);
+		ercd = slp_tsk();
+		check_ercd(ercd, E_OK);
+
+		check_point(0);
+
+	case 4:
+		check_point(27);
+		ercd = loc_mtx(MTX1);
+		check_ercd(ercd, E_OK);
+
+		ercd = loc_mtx(MTX2);
+		check_ercd(ercd, E_OK);
+
+		check_point(28);
+		ercd = wup_tsk(TASK1);
+		check_ercd(ercd, E_OK);
+
+		check_point(0);
+
+	case 5:
+		check_point(34);
+		ercd = loc_mtx(MTX1);
+		check_ercd(ercd, E_OK);
+
+		ercd = loc_mtx(MTX2);
+		check_ercd(ercd, E_OK);
+
+		check_point(35);
+		ercd = tslp_tsk(10);
+		check_ercd(ercd, E_TMOUT);
+
+		check_point(38);
+		ercd = wup_tsk(TASK1);
+		check_ercd(ercd, E_OK);
+
+		check_point(0);
+
+	case 6:
+		check_point(46);
+		ercd = loc_mtx(MTX1);
+		check_ercd(ercd, E_OK);
+
+		ercd = loc_mtx(MTX2);
+		check_ercd(ercd, E_OK);
+
+		check_point(47);
+		ercd = slp_tsk();
+		check_ercd(ercd, E_OK);
+
+		check_point(0);
+	}
+	check_point(0);
+}
+
+static uint_t	task3_count = 0;
+
+void
+task3(intptr_t exinf)
+{
+	ER		ercd;
+	PRI		tskpri;
+	T_RMTX	rmtx;
+
+	switch (++task3_count) {
+	case 1:
+		check_point(11);
+		ercd = loc_mtx(MTX1);
+		check_ercd(ercd, E_OK);
+
+		check_point(0);
+
+	case 2:
+		check_point(20);
+		ercd = loc_mtx(MTX1);
+		check_ercd(ercd, E_OK);
+
+		check_point(22);
+		ercd = ref_mtx(MTX1, &rmtx);
+		check_ercd(ercd, E_OK);
+		check_assert(rmtx.htskid == TASK3);
+		check_assert(rmtx.wtskid == TSK_NONE);
+
+		ercd = get_pri(TASK3, &tskpri);
+		check_ercd(ercd, E_OK);
+		check_assert(tskpri == MID_PRIORITY);
+
+		check_point(23);
+		ercd = ext_tsk();
+
+		check_point(0);
+
+	case 3:
+		check_point(36);
+		ercd = loc_mtx(MTX1);
+		check_ercd(ercd, E_OK);
+
+		check_point(42);
+		ercd = ext_tsk();
+
+		check_point(0);
+
+	case 4:
+		check_point(48);
+		ercd = loc_mtx(MTX1);
+		check_ercd(ercd, E_OK);
+
+		check_point(51);
+		ercd = ref_mtx(MTX1, &rmtx);
+		check_ercd(ercd, E_OK);
+		check_assert(rmtx.htskid == TASK3);
+		check_assert(rmtx.wtskid == TSK_NONE);
+
+		ercd = ref_mtx(MTX2, &rmtx);
+		check_ercd(ercd, E_OK);
+		check_assert(rmtx.htskid == TASK4);
+		check_assert(rmtx.wtskid == TSK_NONE);
+
+		ercd = get_pri(TASK3, &tskpri);
+		check_ercd(ercd, E_OK);
+		check_assert(tskpri == MID_PRIORITY);
+
+		ercd = get_pri(TASK4, &tskpri);
+		check_ercd(ercd, E_OK);
+		check_assert(tskpri == MID_PRIORITY);
+
+		check_point(52);
+		ercd = ext_tsk();
+
+		check_point(0);
+	}
+	check_point(0);
+}
+
+static uint_t	task4_count = 0;
+
+void
+task4(intptr_t exinf)
+{
+	ER		ercd;
+
+	switch (++task4_count) {
+	case 1:
+		check_point(37);
+		ercd = loc_mtx(MTX2);
+		check_ercd(ercd, E_OK);
+
+		check_point(43);
+		ercd = ext_tsk();
+
+		check_point(0);
+
+	case 2:
+		check_point(49);
+		ercd = loc_mtx(MTX2);
+		check_ercd(ercd, E_OK);
+
+		check_point(53);
+		ercd = ext_tsk();
+
+		check_point(0);
+	}
+	check_point(0);
+}
Index: /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex7.cfg
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex7.cfg	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex7.cfg	(revision 61)
@@ -0,0 +1,23 @@
+/*
+ *  @(#) $Id: test_mutex7.cfg 1566 2009-05-24 14:35:24Z ertl-hiro $
+ */
+
+/*
+ *  ~
+[ebNXÌeXg(7)ÌVXeRtBM
+[Vt@C
+ */
+INCLUDE("target_timer.cfg");
+INCLUDE("syssvc/syslog.cfg");
+INCLUDE("syssvc/banner.cfg");
+INCLUDE("syssvc/serial.cfg");
+INCLUDE("syssvc/logtask.cfg");
+
+#include "test_mutex7.h"
+
+CRE_TSK(TASK1, { TA_ACT, 1, task1, HIGH_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK2, { TA_NULL, 2, task2, LOW_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK3, { TA_NULL, 3, task3, LOW_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK4, { TA_NULL, 4, task4, LOW_PRIORITY, STACK_SIZE, NULL });
+CRE_MTX(MTX1, { TA_CEILING, MID_PRIORITY });
+CRE_MTX(MTX2, { TA_CEILING, MID_PRIORITY });
Index: /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex7.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex7.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex7.h	(revision 61)
@@ -0,0 +1,78 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_mutex7.h 1566 2009-05-24 14:35:24Z ertl-hiro $
+ */
+
+/* 
+ *		~
+[ebNXÌeXg(7)
+ */
+
+/*
+ *  ^[QbgË¶Ìè`
+ */
+#include "target_test.h"
+
+/*
+ *  DæxÌè`
+ */
+#define HIGH_PRIORITY	9		/* Dæx */
+#define MID_PRIORITY	10		/* Dæx */
+#define LOW_PRIORITY	11		/* áDæx */
+
+/*
+ *  ^[QbgÉË¶·éÂ\«Ì éèÌè`
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ^XNÌX^bNTCY */
+#endif /* STACK_SIZE */
+
+/*
+ *  ÖÌvg^Cvé¾
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+extern void	task1(intptr_t exinf);
+extern void	task2(intptr_t exinf);
+extern void	task3(intptr_t exinf);
+extern void	task4(intptr_t exinf);
+
+#endif /* TOPPERS_MACRO_ONLY */
Index: /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex8.c
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex8.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex8.c	(revision 61)
@@ -0,0 +1,740 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2009 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_mutex8.c 1696 2010-01-01 16:01:25Z ertl-hiro $
+ */
+
+/* 
+ *		~
+[ebNXÌeXg(8)
+ *
+ * yeXgÌÚIz
+ *
+ *  DæxãÀ~
+[ebNXÉÎµÄCchg_priÉº¤~
+[ebNXÖAÌ
+ *  DæxÏXðÔ
+IÉeXg·éD½¾µCchange_priorityÆ
+ *  mutex_calc_priorityÌàeÉÍ¥ÝÜÈ¢D
+ *
+ * yeXgÚz
+ *
+ *	(A) ^XNÌx[XDæxÌÏXichg_prij
+ *		(A-1) ÎÛ^XNªÀsÅ«éóÔÅC~
+[ebNXðbNµÄ
+ *			  ¢È¢êÉC¯¶DæxàÅÌDæÊªÅáÉÈé±Æ
+ *		(A-2) ÎÛ^XNªÀsÅ«éóÔÅCDæxãÀ~
+[ebNXÈ
+ *			  OÌ~
+[ebNXÌÝðbNµÄ¢éêÉC¯¶Dæx
+ *			  àÅÌDæÊªÅáÉÈé±Æ
+ *		(A-3) ÎÛ^XNªÀsÅ«éóÔÅCDæxãÀ~
+[ebNXð
+ *			  bNµÄ¢éêÉC¯¶DæxàÅÌDæÊªÏíçÈ
+ *			  ¢±Æ
+ *		(A-4) ÎÛ^XNªÒ¿óÔÅCDæxÌÒ¿sñÉÂÈªêÄ¨
+ *			  èC~
+[ebNXðbNµÄ¢È¢êÉCDæxª³µ
+ *			  ­ÏX³êC¯¶DæxàÅÌªÅãÉÈé±Æ
+ *		(A-5) ÎÛ^XNªÒ¿óÔÅCDæxÌÒ¿sñÉÂÈªêÄ¨
+ *			  èCDæxãÀ~
+[ebNXÈOÌ~
+[ebNXÌÝðb
+ *			  NµÄ¢éêÉCDæxª³µ­ÏX³êC¯¶DæxàÅ
+ *			  ÌªÅãÉÈé±Æ
+ *		(A-6) ÎÛ^XNªÒ¿óÔÅCDæxÌÒ¿sñÉÂÈªêÄ¨
+ *			  èCDæxãÀ~
+[ebNXðbNµÄ¢éêÉC¯¶
+ *			  DæxàÅÌªÏíçÈ¢±Æ
+ *	(B) ^XNÌx[XDæxÌÏXichg_prijÌE_ILUSEG[
+ *		(B-1) ÎÛ^XNªbNµÄ¢é~
+[ebNXÌãÀDæxæè
+ *			  àCx[XDæxð­µæ¤Æµ½CE_ILUSEG[ÉÈé
+ *			  ±Æ
+ *		(B-2) ÎÛ^XNªDæxãÀ~
+[ebNXðbNµÄ¢ÄàC
+ *			  bNµÄ¢é~
+[ebNXÌãÀDæxæèàCx[XD
+ *			  æxð­µæ¤ÆµÈ¢êÉÍCE_ILUSEG[ÉÈçÈ¢
+ *			  ±Æ
+ *		(B-3) ÎÛ^XNªbNðÒÁÄ¢é~
+[ebNXÌãÀDæx
+ *			  æèàCx[XDæxð­µæ¤Æµ½CE_ILUSEG[É
+ *			  Èé±Æ
+ *		(B-4) ÎÛ^XNªDæxãÀ~
+[ebNXÒ¿Å ÁÄàCb
+ *			  NðÒÁÄ¢é~
+[ebNXÌãÀDæxæèàCx[XD
+ *			  æxð­µæ¤ÆµÈ¢êÉÍCE_ILUSEG[ÉÈçÈ¢
+ *			  ±Æ
+ *
+ * yeXgÚÌÀ»û@z
+ *
+ *	(A-1)
+ *		Dæx^XNiTASK1jªÀsÂ\óÔÌÉCDæx^XN
+ *		iTASK5j©çTASK1ðáDæxÉchg_pri·éÆCÀsÂ\óÔÌ¼Ì
+ *		áDæx^XNiTASK4jæèàCDæÊªá­Èé±ÆðmF·éD
+ *	(A-2)
+ *		Dæx^XNiTASK1jªDæx~
+[ebNXiMTX3jðbN
+ *		µCÀsÂ\óÔÌÉCDæx^XNiTASK5j©çTASK1ðáD
+ *		æxÉchg_pri·éÆCÀsÂ\óÔÌ¼ÌáDæx^XNiTASK4j
+ *		æèàCDæÊªá­Èé±ÆðmF·éD
+ *	(A-3)
+ *		Dæx^XNiTASK1jªDæxãÀ~
+[ebNXiMTX1jðb
+ *		NµCÀsÂ\óÔÌÉCDæx^XNiTASK5j©çTASK1ðá
+ *		DæxÉchg_pri·éÆCTASK1ÌDæxªÏ»µÈ¢±ÆðmF·éD
+ *		Ü½CÀsÂ\óÔÌDæx^XNð2ÂiTASK2CTASK3jðpÓµ
+ *		Ä¨«CDæÊªÏíçÈ¢±ÆðmF·éD
+ *	(A-4)
+ *		Dæx^XNiTASK1jªDæxãÀ~
+[ebNXiMTX2jðÒÁ
+ *		Ä¢éÉCDæx^XNiTASK5j©çTASK1ðáDæxÉ
+ *		chg_pri·éÆCMTX2ðÒÁÄ¢é¼ÌáDæx^XNiTASK4jæè
+ *		àCÒ¿sñÅÌªãÉÈé±ÆðmF·éD
+ *	(A-5)
+ *		Dæx^XNiTASK1jªDæx~
+[ebNXiMTX3jðbN
+ *		µCDæxãÀ~
+[ebNXiMTX2jðÒÁÄ¢éÉCDæx^
+ *		XNiTASK5j©çTASK1ðáDæxÉchg_pri·éÆCMTX2ðÒÁÄ¢
+ *		é¼ÌáDæx^XNiTASK4jæèàCÒ¿sñÅÌªÏíç
+ *		È¢±ÆðmF·éD
+ *	(A-6)
+ *		Dæx^XNiTASK1jªDæxãÀ~
+[ebNXiMTX1jðb
+ *		NµCDæxãÀ~
+[ebNXiMTX2jðÒÁÄ¢éÉCD
+ *		æx^XNiTASK5j©çTASK1ðáDæxÉchg_pri·éÆCTASK1Ì
+ *		DæxªÏ»µÈ¢±ÆðmF·éDÜ½CMTX2ðÒÁÄ¢éDæ
+ *		x^XNð2ÂiTASK2CTASK3jðpÓµÄ¨«CÒ¿sñÅÌ
+ *		ªÏíçÈ¢±ÆðmF·éD
+ *	(B-1)
+ *		Dæx^XNiTASK1jªDæxãÀ~
+[ebNXiMTX1jðb
+ *		NµCÀsÂ\óÔÌÉCDæx^XNiTASK5j©çTASK1ð
+ *		DæxÉchg_pri·éÆCE_ILUSEG[ÉÈé±ÆðmF·éD
+ *	(B-2)
+ *		(A-3)ÌeXgÚÅCchg_priªE_ILUSEG[ÉÈçÈ¢±ÆÅmF
+ *		Å«Ä¢éD
+ *	(B-3)
+ *		Dæx^XNiTASK2jªDæxãÀ~
+[ebNXiMTX1jÌb
+ *		NðÒÁÄ¢éÉCDæx^XNiTASK5j©çTASK2ðDæx
+ *		Échg_pri·éÆCE_ILUSEG[ÉÈé±ÆðmF·éD
+ *	(B-4)
+ *		(A-6)ÌeXgÚÅCchg_priªE_ILUSEG[ÉÈçÈ¢±ÆÅmF
+ *		Å«Ä¢éD
+ *
+ * ygp\[Xz
+ *
+ *	TASK1: Dæx^XNCC^XNCÅ©çN®
+ *	TASK2: Dæx^XN
+ *	TASK3: Dæx^XN
+ *	TASK4: áDæx^XN
+ *	TASK5: Dæx^XN
+ *	MTX1: ~
+[ebNXiTA_CEILING®«CãÀÍDæxj
+ *	MTX2: ~
+[ebNXiTA_CEILING®«CãÀÍDæxj
+ *	MTX3: ~
+[ebNXiTA_TPRI®«j
+ *
+ * yeXgV[PXz
+ *
+ *	== TASK1iDæxFj==
+ *		call(set_bit_func(bit_mutex))
+ *	1:	act_tsk(TASK4)
+ *	2:	act_tsk(TASK5)
+ *	//		FTASK5CFTASK1CáFTASK4
+ *	== TASK5iDæxFj==
+ *	3:	chg_pri(TASK1, LOW_PRIORITY)		... (A-1)
+ *	//		FTASK5CáFTASK4¨TASK1
+ *	4:	slp_tsk()
+ *	== TASK4iDæxFáj==
+ *	5:	slp_tsk()
+ *	== TASK1i±«j==
+ *	6:	chg_pri(TSK_SELF, TPRI_INI)
+ *
+ *	7:	loc_mtx(MTX3)
+ *	8:	wup_tsk(TASK4)
+ *	9:	wup_tsk(TASK5)
+ *	//		FTASK5CFTASK1CáFTASK4CMTX3FTASK1
+ *	== TASK5i±«j==
+ *	10:	chg_pri(TASK1, LOW_PRIORITY)		... (A-2)
+ *	//		FTASK5CáFTASK4¨TASK1CMTX3FTASK1
+ *	11:	slp_tsk()
+ *	== TASK4i±«j==
+ *	12:	slp_tsk()
+ *	== TASK1i±«j==
+ *	13:	unl_mtx(MTX3)
+ *		chg_pri(TSK_SELF, TPRI_INI)
+ *
+ *	14:	loc_mtx(MTX1)
+ *	15:	act_tsk(TASK2)
+ *	16:	dis_dsp()
+ *	17:	rot_rdq(MID_PRIORITY)
+ *	18:	act_tsk(TASK3)
+ *	//		FTASK2¨TASK1¨TASK3CMTX1FTASK1
+ *	19:	wup_tsk(TASK5)
+ *	//		FTASK5CFTASK2¨TASK1¨TASK3CMTX1FTASK1
+ *	20:	ena_dsp()
+ *	== TASK5i±«j==
+ *	21:	chg_pri(TASK1, LOW_PRIORITY)		... (A-3)(B-2)
+ *	//		FTASK5CFTASK2¨TASK1¨TASK3CMTX1FTASK1
+ *		get_pri(TASK1, &tskpri)
+ *		assert(tskpri == MID_PRIORITY)
+ *	22:	slp_tsk()
+ *	//		FTASK2¨TASK1¨TASK3CMTX1FTASK1
+ *	== TASK2i±«j==
+ *	23:	slp_tsk()
+ *	//		FTASK1¨TASK3CMTX1FTASK1
+ *	== TASK1i±«j==
+ *	24:	unl_mtx(MTX1)
+ *	//		FTASK3CáFTASK1
+ *	== TASK3i±«j==
+ *	25:	slp_tsk()
+ *	== TASK1i±«j==
+ *	26:	chg_pri(TSK_SELF, TPRI_INI)
+ *
+ *	27:	wup_tsk(TASK5)
+ *	== TASK5i±«j==
+ *	28:	loc_mtx(MTX2)
+ *	29:	tslp_tsk(10) -> E_TMOUT
+ *	== TASK1i±«j==
+ *	30:	wup_tsk(TASK4)
+ *	31:	loc_mtx(MTX2)
+ *	== TASK4i±«j==
+ *	32:	loc_mtx(MTX2)
+ *	//		MTX2FTASK5¨TASK1¨TASK4
+ *	//		^CAEgÒ¿
+ *	//		FTASK5CMTX2FTASK5¨TASK1¨TASK4
+ *	== TASK5i±«j==
+ *	33:	chg_pri(TASK1, LOW_PRIORITY)		... (A-4)
+ *	//		FTASK5CMTX2FTASK5¨TASK4¨TASK1
+ *	34:	unl_mtx(MTX2)
+ *	//		FTASK5¨TASK4CMTX2FTASK4¨TASK1
+ *	35:	slp_tsk()
+ *	//		FTASK4CMTX2FTASK4¨TASK1
+ *	== TASK4i±«j==
+ *	36:	unl_mtx(MTX2)
+ *	//		FTASK1CáFTASK4CMTX2FTASK1
+ *	== TASK1i±«j==
+ *	37:	unl_mtx(MTX2)
+ *	//		áFTASK1¨TASK4
+ *	38:	chg_pri(TSK_SELF, TPRI_INI)
+ *
+ *	39:	loc_mtx(MTX3)
+ *	40:	wup_tsk(TASK5)
+ *	//		FTASK5CFTASK1CáFTASK4CMTX3FTASK1
+ *	== TASK5i±«j==
+ *	41:	loc_mtx(MTX2)
+ *	42:	tslp_tsk(10) -> E_TMOUT
+ *	== TASK1i±«j==
+ *	43:	loc_mtx(MTX2)
+ *	== TASK4i±«j==
+ *	44:	loc_mtx(MTX2)
+ *	//		MTX2FTASK5¨TASK1¨TASK4CMTX3FTASK1
+ *	//		^CAEgÒ¿
+ *	//		FTASK5CMTX2FTASK5¨TASK1¨TASK4CMTX3FTASK1
+ *	== TASK5i±«j==
+ *	45:	chg_pri(TASK1, LOW_PRIORITY)		... (A-5)
+ *	//		FTASK5CMTX2FTASK5¨TASK4¨TASK1CMTX3FTASK1
+ *	46:	unl_mtx(MTX2)
+ *	//		FTASK5¨TASK4CMTX2FTASK4¨TASK1CMTX3FTASK1
+ *	47:	slp_tsk()
+ *	//		FTASK4CMTX2FTASK4¨TASK1CMTX3FTASK1
+ *	== TASK4i±«j==
+ *	48:	unl_mtx(MTX2)
+ *	//		FTASK1CáFTASK4CMTX2FTASK1CMTX3FTASK1
+ *	== TASK1i±«j==
+ *	49:	unl_mtx(MTX2)
+ *	//		áFTASK1¨TASK4CMTX3FTASK1
+ *	50:	unl_mtx(MTX3)
+ *	//		áFTASK1¨TASK4
+ *	51:	ter_tsk(TASK4)
+ *	52:	chg_pri(TSK_SELF, TPRI_INI)
+ *
+ *	53:	loc_mtx(MTX1)
+ *	54:	wup_tsk(TASK5)
+ *	//		FTASK5CFTASK1CMTX1FTASK1
+ *	== TASK5i±«j==
+ *	55:	loc_mtx(MTX2)
+ *	56:	tslp_tsk(10) -> E_TMOUT
+ *	//		FTASK1CMTX1FTASK1CMTX2FTASK5
+ *	== TASK1i±«j==
+ *	57:	wup_tsk(TASK2)
+ *	58:	rot_rdq(MID_PRIORITY)
+ *	== TASK2i±«j==
+ *	59:	loc_mtx(MTX2)
+ *	//		FTASK1CMTX1FTASK1CMTX2FTASK5¨TASK2
+ *	== TASK1i±«j==
+ *	60:	wup_tsk(TASK3)
+ *	61:	loc_mtx(MTX2)
+ *	//		FTASK3CMTX1FTASK1CMTX2FTASK5¨TASK2¨TASK1
+ *	== TASK3i±«j==
+ *	62:	loc_mtx(MTX2)
+ *	//		MTX1FTASK1CMTX2FTASK5¨TASK2¨TASK1¨TASK3
+ *	//		^CAEgÒ¿
+ *	//		FTASK5CMTX1FTASK1CMTX2FTASK5¨TASK2¨TASK1¨TASK3
+ *	== TASK5i±«j==
+ *	63:	chg_pri(TASK1, LOW_PRIORITY)		... (A-6)(B-4)
+ *	//		FTASK5CMTX1FTASK1CMTX2FTASK5¨TASK2¨TASK1¨TASK3
+ *		get_pri(TASK1, &tskpri)
+ *		assert(tskpri == MID_PRIORITY)
+ *	64:	unl_mtx(MTX2)
+ *	//		FTASK5¨TASK2CMTX1FTASK1CMTX2FTASK2¨TASK1¨TASK3
+ *	65:	slp_tsk()
+ *	//		FTASK2CMTX1FTASK1CMTX2FTASK2¨TASK1¨TASK3
+ *	== TASK2i±«j==
+ *	66:	unl_mtx(MTX2)
+ *	//		FTASK1CFTASK2CMTX1FTASK1CMTX2FTASK1¨TASK3
+ *	== TASK1i±«j==
+ *	67:	unl_mtx(MTX2)
+ *	//		FTASK3CFTASK1¨TASK2CMTX1FTASK1CMTX2FTASK3
+ *	== TASK3i±«j==
+ *	68:	unl_mtx(MTX2)
+ *	//		FTASK3¨TASK1¨TASK2CMTX1FTASK1
+ *	69:	ext_tsk() -> noreturn
+ *	//		FTASK1¨TASK2CMTX1FTASK1
+ *	== TASK1i±«j==
+ *	70:	chg_pri(TSK_SELF, TPRI_INI)
+ *	//		FTASK1¨TASK2CMTX1FTASK1
+ *
+ *	71:	rot_rdq(MID_PRIORITY)
+ *	//		FTASK2¨TASK1CMTX1FTASK1
+ *	== TASK2i±«j==
+ *	72:	loc_mtx(MTX1)
+ *	//		FTASK1CMTX1FTASK1¨TASK2
+ *	== TASK1i±«j==
+ *	73:	wup_tsk(TASK5)
+ *	//		FTASK5CFTASK1CMTX1FTASK1¨TASK2
+ *	== TASK5i±«j==
+ *	74:	chg_pri(TASK1, HIGH_PRIORITY) -> E_ILUSE	... (B-1)
+ *	75:	chg_pri(TASK2, HIGH_PRIORITY) -> E_ILUSE	... (B-3)
+ *	76:	ext_tsk() -> noreturn
+ *	//		FTASK1CMTX1FTASK1¨TASK2
+ *	== TASK1i±«j==
+ *	77:	unl_mtx(MTX1)
+ *	//		FTASK1¨TASK2CMTX1FTASK2
+ *	78:	ext_tsk() -> noreturn
+ *	== TASK2i±«j==
+ *	79:	unl_mtx(MTX1)
+ *	80:	END
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include "syssvc/logtask.h"
+#include "kernel_cfg.h"
+#include "test_lib.h"
+#include "test_mutex8.h"
+
+extern ER	bit_mutex(void);
+
+void
+task1(intptr_t exinf)
+{
+	ER		ercd;
+
+	set_bit_func(bit_mutex);
+
+	check_point(1);
+	ercd = act_tsk(TASK4);
+	check_ercd(ercd, E_OK);
+
+	check_point(2);
+	ercd = act_tsk(TASK5);
+	check_ercd(ercd, E_OK);
+
+	check_point(6);
+	ercd = chg_pri(TSK_SELF, TPRI_INI);
+	check_ercd(ercd, E_OK);
+
+	check_point(7);
+	ercd = loc_mtx(MTX3);
+	check_ercd(ercd, E_OK);
+
+	check_point(8);
+	ercd = wup_tsk(TASK4);
+	check_ercd(ercd, E_OK);
+
+	check_point(9);
+	ercd = wup_tsk(TASK5);
+	check_ercd(ercd, E_OK);
+
+	check_point(13);
+	ercd = unl_mtx(MTX3);
+	check_ercd(ercd, E_OK);
+
+	ercd = chg_pri(TSK_SELF, TPRI_INI);
+	check_ercd(ercd, E_OK);
+
+	check_point(14);
+	ercd = loc_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	check_point(15);
+	ercd = act_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_point(16);
+	ercd = dis_dsp();
+	check_ercd(ercd, E_OK);
+
+	check_point(17);
+	ercd = rot_rdq(MID_PRIORITY);
+	check_ercd(ercd, E_OK);
+
+	check_point(18);
+	ercd = act_tsk(TASK3);
+	check_ercd(ercd, E_OK);
+
+	check_point(19);
+	ercd = wup_tsk(TASK5);
+	check_ercd(ercd, E_OK);
+
+	check_point(20);
+	ercd = ena_dsp();
+	check_ercd(ercd, E_OK);
+
+	check_point(24);
+	ercd = unl_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	check_point(26);
+	ercd = chg_pri(TSK_SELF, TPRI_INI);
+	check_ercd(ercd, E_OK);
+
+	check_point(27);
+	ercd = wup_tsk(TASK5);
+	check_ercd(ercd, E_OK);
+
+	check_point(30);
+	ercd = wup_tsk(TASK4);
+	check_ercd(ercd, E_OK);
+
+	check_point(31);
+	ercd = loc_mtx(MTX2);
+	check_ercd(ercd, E_OK);
+
+	check_point(37);
+	ercd = unl_mtx(MTX2);
+	check_ercd(ercd, E_OK);
+
+	check_point(38);
+	ercd = chg_pri(TSK_SELF, TPRI_INI);
+	check_ercd(ercd, E_OK);
+
+	check_point(39);
+	ercd = loc_mtx(MTX3);
+	check_ercd(ercd, E_OK);
+
+	check_point(40);
+	ercd = wup_tsk(TASK5);
+	check_ercd(ercd, E_OK);
+
+	check_point(43);
+	ercd = loc_mtx(MTX2);
+	check_ercd(ercd, E_OK);
+
+	check_point(49);
+	ercd = unl_mtx(MTX2);
+	check_ercd(ercd, E_OK);
+
+	check_point(50);
+	ercd = unl_mtx(MTX3);
+	check_ercd(ercd, E_OK);
+
+	check_point(51);
+	ercd = ter_tsk(TASK4);
+	check_ercd(ercd, E_OK);
+
+	check_point(52);
+	ercd = chg_pri(TSK_SELF, TPRI_INI);
+	check_ercd(ercd, E_OK);
+
+	check_point(53);
+	ercd = loc_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	check_point(54);
+	ercd = wup_tsk(TASK5);
+	check_ercd(ercd, E_OK);
+
+	check_point(57);
+	ercd = wup_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_point(58);
+	ercd = rot_rdq(MID_PRIORITY);
+	check_ercd(ercd, E_OK);
+
+	check_point(60);
+	ercd = wup_tsk(TASK3);
+	check_ercd(ercd, E_OK);
+
+	check_point(61);
+	ercd = loc_mtx(MTX2);
+	check_ercd(ercd, E_OK);
+
+	check_point(67);
+	ercd = unl_mtx(MTX2);
+	check_ercd(ercd, E_OK);
+
+	check_point(70);
+	ercd = chg_pri(TSK_SELF, TPRI_INI);
+	check_ercd(ercd, E_OK);
+
+	check_point(71);
+	ercd = rot_rdq(MID_PRIORITY);
+	check_ercd(ercd, E_OK);
+
+	check_point(73);
+	ercd = wup_tsk(TASK5);
+	check_ercd(ercd, E_OK);
+
+	check_point(77);
+	ercd = unl_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	check_point(78);
+	ercd = ext_tsk();
+
+	check_point(0);
+}
+
+void
+task2(intptr_t exinf)
+{
+	ER		ercd;
+
+	check_point(23);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(59);
+	ercd = loc_mtx(MTX2);
+	check_ercd(ercd, E_OK);
+
+	check_point(66);
+	ercd = unl_mtx(MTX2);
+	check_ercd(ercd, E_OK);
+
+	check_point(72);
+	ercd = loc_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	check_point(79);
+	ercd = unl_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	check_finish(80);
+
+	check_point(0);
+}
+
+void
+task3(intptr_t exinf)
+{
+	ER		ercd;
+
+	check_point(25);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(62);
+	ercd = loc_mtx(MTX2);
+	check_ercd(ercd, E_OK);
+
+	check_point(68);
+	ercd = unl_mtx(MTX2);
+	check_ercd(ercd, E_OK);
+
+	check_point(69);
+	ercd = ext_tsk();
+
+	check_point(0);
+}
+
+void
+task4(intptr_t exinf)
+{
+	ER		ercd;
+
+	check_point(5);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(12);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(32);
+	ercd = loc_mtx(MTX2);
+	check_ercd(ercd, E_OK);
+
+	check_point(36);
+	ercd = unl_mtx(MTX2);
+	check_ercd(ercd, E_OK);
+
+	check_point(44);
+	ercd = loc_mtx(MTX2);
+	check_ercd(ercd, E_OK);
+
+	check_point(48);
+	ercd = unl_mtx(MTX2);
+	check_ercd(ercd, E_OK);
+
+	check_point(0);
+}
+
+void
+task5(intptr_t exinf)
+{
+	ER		ercd;
+	PRI		tskpri;
+
+	check_point(3);
+	ercd = chg_pri(TASK1, LOW_PRIORITY);
+	check_ercd(ercd, E_OK);
+
+	check_point(4);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(10);
+	ercd = chg_pri(TASK1, LOW_PRIORITY);
+	check_ercd(ercd, E_OK);
+
+	check_point(11);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(21);
+	ercd = chg_pri(TASK1, LOW_PRIORITY);
+	check_ercd(ercd, E_OK);
+
+	ercd = get_pri(TASK1, &tskpri);
+	check_ercd(ercd, E_OK);
+	check_assert(tskpri == MID_PRIORITY);
+
+	check_point(22);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(28);
+	ercd = loc_mtx(MTX2);
+	check_ercd(ercd, E_OK);
+
+	check_point(29);
+	ercd = tslp_tsk(10);
+	check_ercd(ercd, E_TMOUT);
+
+	check_point(33);
+	ercd = chg_pri(TASK1, LOW_PRIORITY);
+	check_ercd(ercd, E_OK);
+
+	check_point(34);
+	ercd = unl_mtx(MTX2);
+	check_ercd(ercd, E_OK);
+
+	check_point(35);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(41);
+	ercd = loc_mtx(MTX2);
+	check_ercd(ercd, E_OK);
+
+	check_point(42);
+	ercd = tslp_tsk(10);
+	check_ercd(ercd, E_TMOUT);
+
+	check_point(45);
+	ercd = chg_pri(TASK1, LOW_PRIORITY);
+	check_ercd(ercd, E_OK);
+
+	check_point(46);
+	ercd = unl_mtx(MTX2);
+	check_ercd(ercd, E_OK);
+
+	check_point(47);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(55);
+	ercd = loc_mtx(MTX2);
+	check_ercd(ercd, E_OK);
+
+	check_point(56);
+	ercd = tslp_tsk(10);
+	check_ercd(ercd, E_TMOUT);
+
+	check_point(63);
+	ercd = chg_pri(TASK1, LOW_PRIORITY);
+	check_ercd(ercd, E_OK);
+
+	ercd = get_pri(TASK1, &tskpri);
+	check_ercd(ercd, E_OK);
+	check_assert(tskpri == MID_PRIORITY);
+
+	check_point(64);
+	ercd = unl_mtx(MTX2);
+	check_ercd(ercd, E_OK);
+
+	check_point(65);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(74);
+	ercd = chg_pri(TASK1, HIGH_PRIORITY);
+	check_ercd(ercd, E_ILUSE);
+
+	check_point(75);
+	ercd = chg_pri(TASK2, HIGH_PRIORITY);
+	check_ercd(ercd, E_ILUSE);
+
+	check_point(76);
+	ercd = ext_tsk();
+
+	check_point(0);
+}
Index: /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex8.cfg
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex8.cfg	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex8.cfg	(revision 61)
@@ -0,0 +1,25 @@
+/*
+ *  @(#) $Id: test_mutex8.cfg 1696 2010-01-01 16:01:25Z ertl-hiro $
+ */
+
+/*
+ *  ~
+[ebNXÌeXg(8)ÌVXeRtBM
+[Vt@C
+ */
+INCLUDE("target_timer.cfg");
+INCLUDE("syssvc/syslog.cfg");
+INCLUDE("syssvc/banner.cfg");
+INCLUDE("syssvc/serial.cfg");
+INCLUDE("syssvc/logtask.cfg");
+
+#include "test_mutex8.h"
+
+CRE_TSK(TASK1, { TA_ACT, 1, task1, MID_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK2, { TA_NULL, 2, task2, MID_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK3, { TA_NULL, 3, task3, MID_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK4, { TA_NULL, 4, task4, LOW_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK5, { TA_NULL, 5, task5, HIGH_PRIORITY, STACK_SIZE, NULL });
+CRE_MTX(MTX1, { TA_CEILING, MID_PRIORITY });
+CRE_MTX(MTX2, { TA_CEILING, HIGH_PRIORITY });
+CRE_MTX(MTX3, { TA_TPRI });
Index: /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex8.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex8.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex8.h	(revision 61)
@@ -0,0 +1,79 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2009 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_mutex8.h 1696 2010-01-01 16:01:25Z ertl-hiro $
+ */
+
+/* 
+ *		~
+[ebNXÌeXg(8)
+ */
+
+/*
+ *  ^[QbgË¶Ìè`
+ */
+#include "target_test.h"
+
+/*
+ *  DæxÌè`
+ */
+#define HIGH_PRIORITY	9		/* Dæx */
+#define MID_PRIORITY	10		/* Dæx */
+#define LOW_PRIORITY	11		/* áDæx */
+
+/*
+ *  ^[QbgÉË¶·éÂ\«Ì éèÌè`
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ^XNÌX^bNTCY */
+#endif /* STACK_SIZE */
+
+/*
+ *  ÖÌvg^Cvé¾
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+extern void	task1(intptr_t exinf);
+extern void	task2(intptr_t exinf);
+extern void	task3(intptr_t exinf);
+extern void	task4(intptr_t exinf);
+extern void	task5(intptr_t exinf);
+
+#endif /* TOPPERS_MACRO_ONLY */
Index: /asp_ewarm/asp-1.7.0/extension/ovrhdr/include/kernel.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/ovrhdr/include/kernel.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/ovrhdr/include/kernel.h	(revision 61)
@@ -0,0 +1,548 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: kernel.h 1959 2010-11-20 02:17:27Z ertl-hiro $
+ */
+
+/*
+ *		TOPPERS/ASPJ[l Wwb_t@C
+ *
+ *  TOPPERS/ASPJ[lªT|[g·éT[rXR[Ìé¾ÆCKvÈf[
+ *  ^^CèC}NÌè`ðÜÞwb_t@CD
+ *
+ *  AZu¾êÌ\[Xt@C©ç±Ìt@CðCN[h·é
+ *  ÍCTOPPERS_MACRO_ONLYðè`µÄ¨­D±êÉæèC}Nè`ÈOð
+ *  ­æ¤ÉÈÁÄ¢éD
+ *
+ *  ±Ìt@CðCN[h·éOÉCN[hµÄ¨­×«t@C
+ *  ÍÈ¢D
+ */
+
+#ifndef TOPPERS_KERNEL_H
+#define TOPPERS_KERNEL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *	TOPPERS¤ÊÌf[^^EèE}N
+ */
+#include <t_stddef.h>
+
+/*
+ *  ^[QbgË¶
+ */
+#include "target_kernel.h"
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  f[^^Ìè`
+ */
+
+/*
+ *  rbgp^[âIuWFNgÔÌ^è`
+ */
+typedef	uint_t		TEXPTN;		/* ^XNáOvöÌrbgp^[ */
+typedef	uint_t		FLGPTN;		/* CxgtOÌrbgp^[ */
+typedef	ulong_t		OVRTIM;		/* vZbTÔ */
+typedef	uint_t		INTNO;		/* ÝÔ */
+typedef	uint_t		INHNO;		/* ÝnhÔ */
+typedef	uint_t		EXCNO;		/* CPUáOnhÔ */
+
+/*
+ *  PÊÌ^è`
+ */
+typedef void	(*TASK)(intptr_t exinf);
+typedef void	(*TEXRTN)(TEXPTN texptn, intptr_t exinf);
+typedef void	(*CYCHDR)(intptr_t exinf);
+typedef void	(*ALMHDR)(intptr_t exinf);
+typedef void	(*OVRHDR)(ID tskid, intptr_t exinf);
+typedef void	(*ISR)(intptr_t exinf);
+typedef void	(*INTHDR)(void);
+typedef void	(*EXCHDR)(void *p_excinf);
+typedef void	(*INIRTN)(intptr_t exinf);
+typedef void	(*TERRTN)(intptr_t exinf);
+
+/*
+ *  ÌæmÛÌ½ßÌ^è`
+ */
+#ifndef TOPPERS_STK_T
+#define TOPPERS_STK_T	intptr_t
+#endif /* TOPPERS_STK_T */
+typedef	TOPPERS_STK_T	STK_T;	/* X^bNÌæðmÛ·é½ßÌ^ */
+
+#ifndef TOPPERS_MPF_T
+#define TOPPERS_MPF_T	intptr_t
+#endif /* TOPPERS_MPF_T */
+typedef	TOPPERS_MPF_T	MPF_T;	/* Åè·v[ÌæðmÛ·é½ßÌ^ */
+
+/*
+ *  bZ[Wwb_Ì^è`
+ */
+typedef	struct t_msg {			/* [{bNXÌbZ[Wwb_ */
+	struct t_msg	*pk_next;
+} T_MSG;
+
+typedef	struct t_msg_pri {		/* Dæxt«bZ[Wwb_ */
+	T_MSG	msgque;				/* bZ[Wwb_ */
+	PRI		msgpri;				/* bZ[WDæx */
+} T_MSG_PRI;
+
+/*
+ *  pPbg`®Ìè`
+ */
+typedef struct t_rtsk {
+	STAT	tskstat;	/* ^XNóÔ */
+	PRI		tskpri;		/* ^XNÌ»ÝDæx */
+	PRI		tskbpri;	/* ^XNÌx[XDæx */
+	STAT	tskwait;	/* Ò¿vö */
+	ID		wobjid;		/* Ò¿ÎÛÌIuWFNgÌID */
+	TMO		lefttmo;	/* ^CAEg·éÜÅÌÔ */
+	uint_t	actcnt;		/* N®vL
+[CO */
+	uint_t	wupcnt;		/* N°vL
+[CO */
+} T_RTSK;
+
+typedef struct t_rtex {
+	STAT	texstat;	/* ^XNáOÌóÔ */
+	TEXPTN	pndptn;		/* Û¯áOvö */
+} T_RTEX;
+
+typedef struct t_rsem {
+	ID		wtskid;		/* Z}tHÌÒ¿sñÌæªÌ^XNÌIDÔ */
+	uint_t	semcnt;		/* Z}tHÌ»ÝÌ¹ */
+} T_RSEM;
+
+typedef struct t_rflg {
+	ID		wtskid;		/* CxgtOÌÒ¿sñÌæªÌ^XNÌIDÔ */
+	FLGPTN	flgptn;		/* CxgtOÌ»ÝÌrbgp^[ */
+} T_RFLG;
+
+typedef struct t_rdtq {
+	ID		stskid;		/* f[^L
+[ÌMÒ¿sñÌæªÌ^XNÌIDÔ */
+	ID		rtskid;		/* f[^L
+[ÌóMÒ¿sñÌæªÌ^XNÌIDÔ */
+	uint_t	sdtqcnt;	/* f[^L
+[ÇÌæÉi[³êÄ¢éf[^Ì */
+} T_RDTQ;
+
+typedef struct t_rpdq {
+	ID		stskid;		/* Dæxf[^L
+[ÌMÒ¿sñÌæªÌ^XN
+						   ÌIDÔ */
+	ID		rtskid;		/* Dæxf[^L
+[ÌóMÒ¿sñÌæªÌ^XN
+						   ÌIDÔ */
+	uint_t	spdqcnt;	/* Dæxf[^L
+[ÇÌæÉi[³êÄ¢éf[
+						   ^Ì */
+} T_RPDQ;
+
+typedef struct t_rmbx {
+	ID		wtskid;		/* [{bNXÌÒ¿sñÌæªÌ^XNÌIDÔ */
+	T_MSG	*pk_msg;	/* bZ[WL
+[ÌæªÉÂÈªê½bZ[W
+						   ÌæªÔn */
+} T_RMBX;
+
+typedef struct t_rmpf {
+	ID		wtskid;		/* Åè·v[ÌÒ¿sñÌæªÌ^XNÌ
+						   IDÔ */
+	uint_t	fblkcnt;	/* Åè·v[ÌæÌó«ÌæÉè
+						   t¯é±ÆªÅ«éÅè·ubNÌ */
+} T_RMPF;
+
+typedef struct t_rcyc {
+	STAT	cycstat;	/* üúnhÌ®ìóÔ */
+	RELTIM	lefttim;	/* ÉüúnhðN®·éÜÅÌÎÔ */
+} T_RCYC;
+
+typedef struct t_ralm {
+	STAT	almstat;	/* A[nhÌ®ìóÔ */
+	RELTIM	lefttim;	/* A[nhðN®·éÜÅÌÎÔ */
+} T_RALM;
+
+typedef struct t_rovr {
+	STAT	ovrstat;	/* I[onhÌ®ìóÔ */
+	OVRTIM	leftotm;	/* cèvZbTÔ */
+} T_ROVR;
+
+/*
+ *  T[rXR[Ìé¾
+ */
+
+/*
+ *  ^XNÇ@\
+ */
+extern ER		act_tsk(ID tskid) throw();
+extern ER		iact_tsk(ID tskid) throw();
+extern ER_UINT	can_act(ID tskid) throw();
+extern ER		ext_tsk(void) throw();
+extern ER		ter_tsk(ID tskid) throw();
+extern ER		chg_pri(ID tskid, PRI tskpri) throw();
+extern ER		get_pri(ID tskid, PRI *p_tskpri) throw();
+extern ER		get_inf(intptr_t *p_exinf) throw();
+extern ER		ref_tsk(ID tskid, T_RTSK *pk_rtsk) throw();
+
+/*
+ *  ^XNt®¯ú@\
+ */
+extern ER		slp_tsk(void) throw();
+extern ER		tslp_tsk(TMO tmout) throw();
+extern ER		wup_tsk(ID tskid) throw();
+extern ER		iwup_tsk(ID tskid) throw();
+extern ER_UINT	can_wup(ID tskid) throw();
+extern ER		rel_wai(ID tskid) throw();
+extern ER		irel_wai(ID tskid) throw();
+extern ER		sus_tsk(ID tskid) throw();
+extern ER		rsm_tsk(ID tskid) throw();
+extern ER		dly_tsk(RELTIM dlytim) throw();
+
+/*
+ *  ^XNáO@\
+ */
+extern ER		ras_tex(ID tskid, TEXPTN rasptn) throw();
+extern ER		iras_tex(ID tskid, TEXPTN rasptn) throw();
+extern ER		dis_tex(void) throw();
+extern ER		ena_tex(void) throw();
+extern bool_t	sns_tex(void) throw();
+extern ER		ref_tex(ID tskid, T_RTEX *pk_rtex) throw();
+
+/*
+ *  ¯úEÊM@\
+ */
+extern ER		sig_sem(ID semid) throw();
+extern ER		isig_sem(ID semid) throw();
+extern ER		wai_sem(ID semid) throw();
+extern ER		pol_sem(ID semid) throw();
+extern ER		twai_sem(ID semid, TMO tmout) throw();
+extern ER		ini_sem(ID semid) throw();
+extern ER		ref_sem(ID semid, T_RSEM *pk_rsem) throw();
+
+extern ER		set_flg(ID flgid, FLGPTN setptn) throw();
+extern ER		iset_flg(ID flgid, FLGPTN setptn) throw();
+extern ER		clr_flg(ID flgid, FLGPTN clrptn) throw();
+extern ER		wai_flg(ID flgid, FLGPTN waiptn,
+						MODE wfmode, FLGPTN *p_flgptn) throw();
+extern ER		pol_flg(ID flgid, FLGPTN waiptn,
+						MODE wfmode, FLGPTN *p_flgptn) throw();
+extern ER		twai_flg(ID flgid, FLGPTN waiptn,
+						MODE wfmode, FLGPTN *p_flgptn, TMO tmout) throw();
+extern ER		ini_flg(ID flgid) throw();
+extern ER		ref_flg(ID flgid, T_RFLG *pk_rflg) throw();
+
+extern ER		snd_dtq(ID dtqid, intptr_t data) throw();
+extern ER		psnd_dtq(ID dtqid, intptr_t data) throw();
+extern ER		ipsnd_dtq(ID dtqid, intptr_t data) throw();
+extern ER		tsnd_dtq(ID dtqid, intptr_t data, TMO tmout) throw();
+extern ER		fsnd_dtq(ID dtqid, intptr_t data) throw();
+extern ER		ifsnd_dtq(ID dtqid, intptr_t data) throw();
+extern ER		rcv_dtq(ID dtqid, intptr_t *p_data) throw();
+extern ER		prcv_dtq(ID dtqid, intptr_t *p_data) throw();
+extern ER		trcv_dtq(ID dtqid, intptr_t *p_data, TMO tmout) throw();
+extern ER		ini_dtq(ID dtqid) throw();
+extern ER		ref_dtq(ID dtqid, T_RDTQ *pk_rdtq) throw();
+
+extern ER		snd_pdq(ID pdqid, intptr_t data, PRI datapri) throw();
+extern ER		psnd_pdq(ID pdqid, intptr_t data, PRI datapri) throw();
+extern ER		ipsnd_pdq(ID pdqid, intptr_t data, PRI datapri) throw();
+extern ER		tsnd_pdq(ID pdqid, intptr_t data,
+										PRI datapri, TMO tmout) throw();
+extern ER		rcv_pdq(ID pdqid, intptr_t *p_data, PRI *p_datapri) throw();
+extern ER		prcv_pdq(ID pdqid, intptr_t *p_data, PRI *p_datapri) throw();
+extern ER		trcv_pdq(ID pdqid, intptr_t *p_data,
+										PRI *p_datapri, TMO tmout) throw();
+extern ER		ini_pdq(ID pdqid) throw();
+extern ER		ref_pdq(ID pdqid, T_RPDQ *pk_rpdq) throw();
+
+extern ER		snd_mbx(ID mbxid, T_MSG *pk_msg) throw();
+extern ER		rcv_mbx(ID mbxid, T_MSG **ppk_msg) throw();
+extern ER		prcv_mbx(ID mbxid, T_MSG **ppk_msg) throw();
+extern ER		trcv_mbx(ID mbxid, T_MSG **ppk_msg, TMO tmout) throw();
+extern ER		ini_mbx(ID mbxid) throw();
+extern ER		ref_mbx(ID mbxid, T_RMBX *pk_rmbx) throw();
+
+/*
+ *  v[Ç@\
+ */
+extern ER		get_mpf(ID mpfid, void **p_blk) throw();
+extern ER		pget_mpf(ID mpfid, void **p_blk) throw();
+extern ER		tget_mpf(ID mpfid, void **p_blk, TMO tmout) throw();
+extern ER		rel_mpf(ID mpfid, void *blk) throw();
+extern ER		ini_mpf(ID mpfid) throw();
+extern ER		ref_mpf(ID mpfid, T_RMPF *pk_rmpf) throw();
+
+/*
+ *  ÔÇ@\
+ */
+extern ER		get_tim(SYSTIM *p_systim) throw();
+extern ER		get_utm(SYSUTM *p_sysutm) throw();
+
+extern ER		sta_cyc(ID cycid) throw();
+extern ER		stp_cyc(ID cycid) throw();
+extern ER		ref_cyc(ID cycid, T_RCYC *pk_rcyc) throw();
+
+extern ER		sta_alm(ID almid, RELTIM almtim) throw();
+extern ER		ista_alm(ID almid, RELTIM almtim) throw();
+extern ER		stp_alm(ID almid) throw();
+extern ER		istp_alm(ID almid) throw();
+extern ER		ref_alm(ID almid, T_RALM *pk_ralm) throw();
+
+extern ER		sta_ovr(ID tskid, OVRTIM ovrtim) throw();
+extern ER		ista_ovr(ID tskid, OVRTIM ovrtim) throw();
+extern ER		stp_ovr(ID tskid) throw();
+extern ER		istp_ovr(ID tskid) throw();
+extern ER		ref_ovr(ID tskid, T_ROVR *pk_rovr) throw();
+
+/*
+ *  VXeóÔÇ@\
+ */
+extern ER		rot_rdq(PRI tskpri) throw();
+extern ER		irot_rdq(PRI tskpri) throw();
+extern ER		get_tid(ID *p_tskid) throw();
+extern ER		iget_tid(ID *p_tskid) throw();
+extern ER		loc_cpu(void) throw();
+extern ER		iloc_cpu(void) throw();
+extern ER		unl_cpu(void) throw();
+extern ER		iunl_cpu(void) throw();
+extern ER		dis_dsp(void) throw();
+extern ER		ena_dsp(void) throw();
+extern bool_t	sns_ctx(void) throw();
+extern bool_t	sns_loc(void) throw();
+extern bool_t	sns_dsp(void) throw();
+extern bool_t	sns_dpn(void) throw();
+extern bool_t	sns_ker(void) throw();
+extern ER		ext_ker(void) throw();
+
+/*
+ *  ÝÇ@\
+ */
+extern ER		dis_int(INTNO intno) throw();
+extern ER		ena_int(INTNO intno) throw();
+extern ER		chg_ipm(PRI intpri) throw();
+extern ER		get_ipm(PRI *p_intpri) throw();
+
+/*
+ *  CPUáOÇ@\
+ */
+extern bool_t	xsns_dpn(void *p_excinf) throw();
+extern bool_t	xsns_xpn(void *p_excinf) throw();
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  IuWFNg®«Ìè`
+ */
+#define TA_ACT			UINT_C(0x02)	/* ^XNðN®³ê½óÔÅ¶¬ */
+
+#define TA_TPRI			UINT_C(0x01)	/* ^XNÌÒ¿sñðDæxÉ */
+#define TA_MPRI			UINT_C(0x02)	/* bZ[WL
+[ðDæxÉ */
+
+#define TA_WMUL			UINT_C(0x02)	/* ¡ÌÒ¿^XN */
+#define TA_CLR			UINT_C(0x04)	/* CxgtOÌNAwè */
+
+#define TA_STA			UINT_C(0x02)	/* üúnhð®ìóÔÅ¶¬ */
+
+#define TA_NONKERNEL	UINT_C(0x02)	/* J[lÇOÌÝ */
+
+#define TA_ENAINT		UINT_C(0x01)	/* ÝvÖ~tOðNA */
+#define TA_EDGE			UINT_C(0x02)	/* GbWgK */
+
+/*
+ *  T[rXR[Ì®ì[hÌè`
+ */
+#define TWF_ORW			UINT_C(0x01)	/* CxgtOÌORÒ¿ */
+#define TWF_ANDW		UINT_C(0x02)	/* CxgtOÌANDÒ¿ */
+
+/*
+ *  IuWFNgÌóÔÌè`
+ */
+#define TTS_RUN			UINT_C(0x01)	/* ÀsóÔ */
+#define TTS_RDY			UINT_C(0x02)	/* ÀsÂ\óÔ */
+#define TTS_WAI			UINT_C(0x04)	/* Ò¿óÔ */
+#define TTS_SUS			UINT_C(0x08)	/* ­§Ò¿óÔ */
+#define TTS_WAS			UINT_C(0x0c)	/* ñdÒ¿óÔ */
+#define TTS_DMT			UINT_C(0x10)	/* x~óÔ */
+
+#define TTW_SLP			UINT_C(0x0001)	/* N°Ò¿ */
+#define TTW_DLY			UINT_C(0x0002)	/* ÔoßÒ¿ */
+#define TTW_SEM			UINT_C(0x0004)	/* Z}tHÌ¹l¾Ò¿ */
+#define TTW_FLG			UINT_C(0x0008)	/* CxgtOÒ¿ */
+#define TTW_SDTQ		UINT_C(0x0010)	/* f[^L
+[ÖÌMÒ¿ */
+#define TTW_RDTQ		UINT_C(0x0020)	/* f[^L
+[©çÌóMÒ¿ */
+#define TTW_SPDQ		UINT_C(0x0100)	/* Dæxf[^L
+[ÖÌMÒ¿ */
+#define TTW_RPDQ		UINT_C(0x0200)	/* Dæxf[^L
+[©çÌóMÒ¿ */
+#define TTW_MBX			UINT_C(0x0040)	/* [{bNX©çÌóMÒ¿ */
+#define TTW_MPF			UINT_C(0x2000)	/* Åè·ubNÌl¾Ò¿ */
+
+#define TTEX_ENA		UINT_C(0x01)	/* ^XNáOÂóÔ */
+#define TTEX_DIS		UINT_C(0x02)	/* ^XNáOÖ~óÔ */
+
+#define TCYC_STP		UINT_C(0x01)	/* üúnhª®ìµÄ¢È¢ */
+#define TCYC_STA		UINT_C(0x02)	/* üúnhª®ìµÄ¢é */
+
+#define TALM_STP		UINT_C(0x01)	/* A[nhª®ìµÄ¢È¢ */
+#define TALM_STA		UINT_C(0x02)	/* A[nhª®ìµÄ¢é */
+
+#define TOVR_STP		UINT_C(0x01)	/* I[onhª®ìµÄ¢È¢*/
+#define TOVR_STA		UINT_C(0x02)	/* I[onhª®ìµÄ¢é */
+
+/*
+ *  »Ì¼ÌèÌè`
+ */
+#define TSK_SELF		0			/* ©^XNwè */
+#define TSK_NONE		0			/* Y·é^XNªÈ¢ */
+
+#define TPRI_SELF		0			/* ©^XNÌx[XDæx */
+#define TPRI_INI		0			/* ^XNÌN®Dæx */
+
+#define TIPM_ENAALL		0			/* ÝDæx}XNSð */
+
+/*
+ *  \¬èÆ}N
+ */
+
+/*
+ *  T|[g·é@\
+ */
+#ifdef TOPPERS_TARGET_SUPPORT_DIS_INT
+#define TOPPERS_SUPPORT_DIS_INT			/* dis_intªT|[g³êÄ¢é */
+#endif /* TOPPERS_TARGET_SUPPORT_DIS_INT */
+
+#ifdef TOPPERS_TARGET_SUPPORT_ENA_INT
+#define TOPPERS_SUPPORT_ENA_INT			/* ena_intªT|[g³êÄ¢é */
+#endif /* TOPPERS_TARGET_SUPPORT_ENA_INT */
+
+#ifdef TOPPERS_TARGET_SUPPORT_GET_UTM
+#define TOPPERS_SUPPORT_GET_UTM			/* get_utmªT|[g³êÄ¢é */
+#endif /* TOPPERS_TARGET_SUPPORT_GET_UTM */
+
+#ifdef TOPPERS_TARGET_SUPPORT_OVRHDR
+#define TOPPERS_SUPPORT_OVRHDR			/* I[onh@\g£ */
+#endif /* TOPPERS_TARGET_SUPPORT_OVRHDR */
+
+/*
+ *  DæxÌÍÍ
+ */
+#define TMIN_TPRI		1			/* ^XNDæxÌÅ¬liÅlj*/
+#define TMAX_TPRI		16			/* ^XNDæxÌÅåliÅálj*/
+#define TMIN_DPRI		1			/* f[^DæxÌÅ¬liÅlj*/
+#define TMAX_DPRI		16			/* f[^DæxÌÅåliÅálj*/
+#define TMIN_MPRI		1			/* bZ[WDæxÌÅ¬liÅlj*/
+#define TMAX_MPRI		16			/* bZ[WDæxÌÅåliÅálj*/
+#define TMIN_ISRPRI		1			/* ÝT[rX[`DæxÌÅ¬l */
+#define TMAX_ISRPRI		16			/* ÝT[rX[`DæxÌÅål */
+
+/*
+ *  o[Wîñ
+ */
+#define TKERNEL_MAKER	UINT_C(0x0118)	/* J[lÌ[J[R[h */
+#define TKERNEL_PRID	UINT_C(0x0007)	/* J[lÌ¯ÊÔ */
+#define TKERNEL_SPVER	UINT_C(0xf513)	/* J[ldlÌo[WÔ */
+#define TKERNEL_PRVER	UINT_C(0x1070)	/* J[lÌo[WÔ */
+
+/*
+ *  L
+[COñÌÅål
+ */
+#define TMAX_ACTCNT		UINT_C(1)		/* N®vL
+[COÌÅål */
+#define TMAX_WUPCNT		UINT_C(1)		/* N°vL
+[COÌÅål */
+
+/*
+ *  rbgp^[Ìrbg
+ */
+#ifndef TBIT_TEXPTN					/* ^XNáOvöÌrbg */
+#define TBIT_TEXPTN		(sizeof(TEXPTN) * CHAR_BIT)
+#endif /* TBIT_TEXPTN */
+
+#ifndef TBIT_FLGPTN					/* CxgtOÌrbg */
+#define TBIT_FLGPTN		(sizeof(FLGPTN) * CHAR_BIT)
+#endif /* TBIT_FLGPTN */
+
+/*
+ *  vZbTÔiOVRTIMjÌÅål
+ */
+#ifndef TMAX_OVRTIM
+#define TMAX_OVRTIM		ULONG_MAX
+#endif /* TMAX_OVRTIM */
+
+/*
+ *  ÌæmÛÌ½ßÌ}N
+ *
+ *  ÈºÌTOPPERS_COUNT_SZÆTOPPERS_ROUND_SZÌè`ÍCunitª2ÌÐæÅ 
+ *  é±Æð¼èµÄ¢éD
+ */
+#ifndef TOPPERS_COUNT_SZ
+#define TOPPERS_COUNT_SZ(sz, unit)	(((sz) + (unit) - 1) / (unit))
+#endif /* TOPPERS_COUNT_SZ */
+#ifndef TOPPERS_ROUND_SZ
+#define TOPPERS_ROUND_SZ(sz, unit)	(((sz) + (unit) - 1) & ~((unit) - 1))
+#endif /* TOPPERS_ROUND_SZ */
+
+#define COUNT_STK_T(sz)		TOPPERS_COUNT_SZ(sz, sizeof(STK_T))
+#define ROUND_STK_T(sz)		TOPPERS_ROUND_SZ(sz, sizeof(STK_T))
+
+#define COUNT_MPF_T(blksz)	TOPPERS_COUNT_SZ(blksz, sizeof(MPF_T))
+#define ROUND_MPF_T(blksz)	TOPPERS_ROUND_SZ(blksz, sizeof(MPF_T))
+
+/*
+ *  »Ì¼Ì\¬è
+ */
+#define TMAX_MAXSEM		UINT_MAX	/* Z}tHÌÅå¹ÌÅål */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* TOPPERS_KERNEL_H */
Index: /asp_ewarm/asp-1.7.0/extension/ovrhdr/kernel/Makefile.kernel
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/ovrhdr/kernel/Makefile.kernel	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/ovrhdr/kernel/Makefile.kernel	(revision 61)
@@ -0,0 +1,144 @@
+#
+#  TOPPERS/ASP Kernel
+#      Toyohashi Open Platform for Embedded Real-Time Systems/
+#      Advanced Standard Profile Kernel
+# 
+#  Copyright (C) 2003 by Embedded and Real-Time Systems Laboratory
+#                              Toyohashi Univ. of Technology, JAPAN
+#  Copyright (C) 2005-2010 by Embedded and Real-Time Systems Laboratory
+#              Graduate School of Information Science, Nagoya Univ., JAPAN
+# 
+#  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+#  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+#  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+#  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+#       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+#      XR[hÉÜÜêÄ¢é±ÆD
+#  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+#      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+#      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+#      Ì³ÛØKèðfÚ·é±ÆD
+#  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+#      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+#      ÆD
+#    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+#        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+#    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+#        ñ·é±ÆD
+#  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+#      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+#      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+#      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+#      ÆÓ·é±ÆD
+# 
+#  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+#  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+#  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+#  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+#  ÌÓCðíÈ¢D
+# 
+#  @(#) $Id: Makefile.kernel 1717 2010-01-31 11:41:03Z ertl-hiro $
+# 
+
+#
+#		J[lÌt@C\¬Ìè`
+#
+
+#
+#  1ÂÌ\[Xt@C©ç¡ÌIuWFNgt@Cð¶¬·éæ¤Éì
+#  ¬³ê½\[Xt@CÌXg
+#
+KERNEL_FCSRCS = startup.c task.c wait.c time_event.c \
+				task_manage.c task_refer.c task_sync.c task_except.c \
+				semaphore.c eventflag.c dataqueue.c pridataq.c mailbox.c \
+				mempfix.c time_manage.c cyclic.c alarm.c overrun.c \
+				sys_manage.c interrupt.c exception.c
+
+#
+#  e\[Xt@C©ç¶¬³êéIuWFNgt@CÌXg
+#
+startup = sta_ker.o ext_ker.o
+
+task = tskini.o tsksched.o tskrun.o tsknrun.o \
+		tskdmt.o tskact.o tskpri.o tskrot.o tsktex.o
+
+wait = waimake.o waicmp.o waitmo.o waitmook.o \
+		wairel.o wobjwai.o wobjwaitmo.o iniwque.o
+
+time_event = tmeini.o tmeup.o tmedown.o tmeins.o tmedel.o tmeltim.o sigtim.o
+
+task_manage = act_tsk.o iact_tsk.o can_act.o ext_tsk.o ter_tsk.o \
+		chg_pri.o get_pri.o get_inf.o
+
+task_refer = ref_tsk.o
+
+task_sync = slp_tsk.o tslp_tsk.o wup_tsk.o iwup_tsk.o can_wup.o \
+		rel_wai.o irel_wai.o sus_tsk.o rsm_tsk.o dly_tsk.o
+
+task_except = ras_tex.o iras_tex.o dis_tex.o ena_tex.o sns_tex.o ref_tex.o
+
+semaphore = semini.o sig_sem.o isig_sem.o \
+		wai_sem.o pol_sem.o twai_sem.o ini_sem.o ref_sem.o
+
+eventflag = flgini.o flgcnd.o set_flg.o iset_flg.o clr_flg.o \
+		wai_flg.o pol_flg.o twai_flg.o ini_flg.o ref_flg.o
+
+dataqueue = dtqini.o dtqenq.o dtqfenq.o dtqdeq.o dtqsnd.o dtqfsnd.o dtqrcv.o \
+		snd_dtq.o psnd_dtq.o ipsnd_dtq.o tsnd_dtq.o fsnd_dtq.o ifsnd_dtq.o \
+		rcv_dtq.o prcv_dtq.o trcv_dtq.o ini_dtq.o ref_dtq.o
+
+pridataq = pdqini.o pdqenq.o pdqdeq.o pdqsnd.o pdqrcv.o \
+		snd_pdq.o psnd_pdq.o ipsnd_pdq.o tsnd_pdq.o \
+		rcv_pdq.o prcv_pdq.o trcv_pdq.o ini_pdq.o ref_pdq.o
+
+mailbox = mbxini.o snd_mbx.o rcv_mbx.o prcv_mbx.o trcv_mbx.o \
+		ini_mbx.o ref_mbx.o
+
+mempfix = mpfini.o mpfget.o get_mpf.o pget_mpf.o tget_mpf.o \
+		rel_mpf.o ini_mpf.o ref_mpf.o
+
+time_manage = get_tim.o get_utm.o
+
+cyclic = cycini.o sta_cyc.o stp_cyc.o ref_cyc.o cyccal.o
+
+alarm = almini.o sta_alm.o ista_alm.o stp_alm.o istp_alm.o ref_alm.o almcal.o
+
+overrun = ovrini.o ovrsta.o ovrstp.o sta_ovr.o ista_ovr.o \
+		stp_ovr.o istp_ovr.o ref_ovr.o ovrcal.o
+
+sys_manage = rot_rdq.o irot_rdq.o get_tid.o iget_tid.o \
+		loc_cpu.o iloc_cpu.o unl_cpu.o iunl_cpu.o dis_dsp.o ena_dsp.o \
+		sns_ctx.o sns_loc.o sns_dsp.o sns_dpn.o sns_ker.o
+
+interrupt = intini.o dis_int.o ena_int.o chg_ipm.o get_ipm.o
+
+exception = excini.o xsns_dpn.o xsns_xpn.o
+
+#
+#  ¶¬³êéIuWFNgt@CÌË¶ÖWÌè`
+#
+$(startup) $(startup:.o=.s) $(startup:.o=.d): startup.c
+$(task) $(task:.o=.s) $(task:.o=.d): task.c
+$(wait) $(wait:.o=.s) $(wait:.o=.d): wait.c
+$(time_event) $(time_event:.o=.s) $(time_event:.o=.d): time_event.c
+$(task_manage) $(task_manage:.o=.s) $(task_manage:.o=.d): task_manage.c
+$(task_refer) $(task_refer:.o=.s) $(task_refer:.o=.d): task_refer.c
+$(task_sync) $(task_sync:.o=.s) $(task_sync:.o=.d): task_sync.c
+$(task_except) $(task_except:.o=.s) $(task_except:.o=.d): task_except.c
+$(semaphore) $(semaphore:.o=.s) $(semaphore:.o=.d): semaphore.c
+$(eventflag) $(eventflag:.o=.s) $(eventflag:.o=.d): eventflag.c
+$(dataqueue) $(dataqueue:.o=.s) $(dataqueue:.o=.d): dataqueue.c
+$(pridataq) $(pridataq:.o=.s) $(pridataq:.o=.d): pridataq.c
+$(mailbox) $(mailbox:.o=.s) $(mailbox:.o=.d): mailbox.c
+$(mempfix) $(mempfix:.o=.s) $(mempfix:.o=.d): mempfix.c
+$(time_manage) $(time_manage:.o=.s) $(time_manage:.o=.d): time_manage.c
+$(cyclic) $(cyclic:.o=.s) $(cyclic:.o=.d): cyclic.c
+$(alarm) $(alarm:.o=.s) $(alarm:.o=.d): alarm.c
+$(overrun) $(overrun:.o=.s) $(overrun:.o=.d): overrun.c
+$(sys_manage) $(sys_manage:.o=.s) $(sys_manage:.o=.d): sys_manage.c
+$(interrupt) $(interrupt:.o=.s) $(interrupt:.o=.d): interrupt.c
+$(exception) $(exception:.o=.s) $(exception:.o=.d): exception.c
Index: /asp_ewarm/asp-1.7.0/extension/ovrhdr/kernel/allfunc.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/ovrhdr/kernel/allfunc.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/ovrhdr/kernel/allfunc.h	(revision 61)
@@ -0,0 +1,256 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2005-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: allfunc.h 1717 2010-01-31 11:41:03Z ertl-hiro $
+ */
+
+/*
+ *		·×ÄÌÖðRpC·é½ßÌè`
+ */
+
+#ifndef TOPPERS_ALLFUNC_H
+#define TOPPERS_ALLFUNC_H
+
+/* startup.c */
+#define TOPPERS_sta_ker
+#define TOPPERS_ext_ker
+
+/* task.c */
+#define TOPPERS_tskini
+#define TOPPERS_tsksched
+#define TOPPERS_tskrun
+#define TOPPERS_tsknrun
+#define TOPPERS_tskdmt
+#define TOPPERS_tskact
+#define TOPPERS_tskpri
+#define TOPPERS_tskrot
+#define TOPPERS_tsktex
+
+/* wait.c */
+#define TOPPERS_waimake
+#define TOPPERS_waicmp
+#define TOPPERS_waitmo
+#define TOPPERS_waitmook
+#define TOPPERS_wairel
+#define TOPPERS_wobjwai
+#define TOPPERS_wobjwaitmo
+#define TOPPERS_iniwque
+
+/* time_event.c */
+#define TOPPERS_tmeini
+#define TOPPERS_tmeup
+#define TOPPERS_tmedown
+#define TOPPERS_tmeins
+#define TOPPERS_tmedel
+#define TOPPERS_tmeltim
+#define TOPPERS_sigtim
+
+/* task_manage.c */
+#define TOPPERS_act_tsk
+#define TOPPERS_iact_tsk
+#define TOPPERS_can_act
+#define TOPPERS_ext_tsk
+#define TOPPERS_ter_tsk
+#define TOPPERS_chg_pri
+#define TOPPERS_get_pri
+#define TOPPERS_get_inf
+
+/* task_refer.c */
+#define TOPPERS_ref_tsk
+
+/* task_sync.c */
+#define TOPPERS_slp_tsk
+#define TOPPERS_tslp_tsk
+#define TOPPERS_wup_tsk
+#define TOPPERS_iwup_tsk
+#define TOPPERS_can_wup
+#define TOPPERS_rel_wai
+#define TOPPERS_irel_wai
+#define TOPPERS_sus_tsk
+#define TOPPERS_rsm_tsk
+#define TOPPERS_dly_tsk
+
+/* task_except.c */
+#define TOPPERS_ras_tex
+#define TOPPERS_iras_tex
+#define TOPPERS_dis_tex
+#define TOPPERS_ena_tex
+#define TOPPERS_sns_tex
+#define TOPPERS_ref_tex
+
+/* semaphore.c */
+#define TOPPERS_semini
+#define TOPPERS_sig_sem
+#define TOPPERS_isig_sem
+#define TOPPERS_wai_sem
+#define TOPPERS_pol_sem
+#define TOPPERS_twai_sem
+#define TOPPERS_ini_sem
+#define TOPPERS_ref_sem
+
+/* eventflag.c */
+#define TOPPERS_flgini
+#define TOPPERS_flgcnd
+#define TOPPERS_set_flg
+#define TOPPERS_iset_flg
+#define TOPPERS_clr_flg
+#define TOPPERS_wai_flg
+#define TOPPERS_pol_flg
+#define TOPPERS_twai_flg
+#define TOPPERS_ini_flg
+#define TOPPERS_ref_flg
+
+/* dataqueue.c */
+#define TOPPERS_dtqini
+#define TOPPERS_dtqenq
+#define TOPPERS_dtqfenq
+#define TOPPERS_dtqdeq
+#define TOPPERS_dtqsnd
+#define TOPPERS_dtqfsnd
+#define TOPPERS_dtqrcv
+#define TOPPERS_snd_dtq
+#define TOPPERS_psnd_dtq
+#define TOPPERS_ipsnd_dtq
+#define TOPPERS_tsnd_dtq
+#define TOPPERS_fsnd_dtq
+#define TOPPERS_ifsnd_dtq
+#define TOPPERS_rcv_dtq
+#define TOPPERS_prcv_dtq
+#define TOPPERS_trcv_dtq
+#define TOPPERS_ini_dtq
+#define TOPPERS_ref_dtq
+
+/* pridataq.c */
+#define TOPPERS_pdqini
+#define TOPPERS_pdqenq
+#define TOPPERS_pdqdeq
+#define TOPPERS_pdqsnd
+#define TOPPERS_pdqrcv
+#define TOPPERS_snd_pdq
+#define TOPPERS_psnd_pdq
+#define TOPPERS_ipsnd_pdq
+#define TOPPERS_tsnd_pdq
+#define TOPPERS_rcv_pdq
+#define TOPPERS_prcv_pdq
+#define TOPPERS_trcv_pdq
+#define TOPPERS_ini_pdq
+#define TOPPERS_ref_pdq
+
+/* mailbox.c */
+#define TOPPERS_mbxini
+#define TOPPERS_snd_mbx
+#define TOPPERS_rcv_mbx
+#define TOPPERS_prcv_mbx
+#define TOPPERS_trcv_mbx
+#define TOPPERS_ini_mbx
+#define TOPPERS_ref_mbx
+
+/* mempfix.c */
+#define TOPPERS_mpfini
+#define TOPPERS_mpfget
+#define TOPPERS_get_mpf
+#define TOPPERS_pget_mpf
+#define TOPPERS_tget_mpf
+#define TOPPERS_rel_mpf
+#define TOPPERS_ini_mpf
+#define TOPPERS_ref_mpf
+
+/* time_manage.c */
+#define TOPPERS_get_tim
+#define TOPPERS_get_utm
+
+/* cyclic.c */
+#define TOPPERS_cycini
+#define TOPPERS_sta_cyc
+#define TOPPERS_stp_cyc
+#define TOPPERS_ref_cyc
+#define TOPPERS_cyccal
+
+/* alarm.c */
+#define TOPPERS_almini
+#define TOPPERS_sta_alm
+#define TOPPERS_ista_alm
+#define TOPPERS_stp_alm
+#define TOPPERS_istp_alm
+#define TOPPERS_ref_alm
+#define TOPPERS_almcal
+
+/* overrun.c */
+#define TOPPERS_ovrini
+#define TOPPERS_ovrsta
+#define TOPPERS_ovrstp
+#define TOPPERS_sta_ovr
+#define TOPPERS_ista_ovr
+#define TOPPERS_stp_ovr
+#define TOPPERS_istp_ovr
+#define TOPPERS_ref_ovr
+#define TOPPERS_ovrcal
+
+/* sys_manage.c */
+#define TOPPERS_rot_rdq
+#define TOPPERS_irot_rdq
+#define TOPPERS_get_tid
+#define TOPPERS_iget_tid
+#define TOPPERS_loc_cpu
+#define TOPPERS_iloc_cpu
+#define TOPPERS_unl_cpu
+#define TOPPERS_iunl_cpu
+#define TOPPERS_dis_dsp
+#define TOPPERS_ena_dsp
+#define TOPPERS_sns_ctx
+#define TOPPERS_sns_loc
+#define TOPPERS_sns_dsp
+#define TOPPERS_sns_dpn
+#define TOPPERS_sns_ker
+
+/* interrupt.c */
+#define TOPPERS_intini
+#define TOPPERS_dis_int
+#define TOPPERS_ena_int
+#define TOPPERS_chg_ipm
+#define TOPPERS_get_ipm
+
+/* exception.c */
+#define TOPPERS_excini
+#define TOPPERS_xsns_dpn
+#define TOPPERS_xsns_xpn
+
+#endif /* TOPPERS_ALLFUNC_H */
Index: /asp_ewarm/asp-1.7.0/extension/ovrhdr/kernel/check.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/ovrhdr/kernel/check.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/ovrhdr/kernel/check.h	(revision 61)
@@ -0,0 +1,298 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: check.h 1965 2010-11-20 07:22:43Z ertl-hiro $
+ */
+
+/*
+ *		G[`FbNp}N
+ */
+
+#ifndef TOPPERS_CHECK_H
+#define TOPPERS_CHECK_H
+
+/*
+ *  DæxÌÍÍÌ»è
+ */
+#define VALID_TPRI(tpri)	(TMIN_TPRI <= (tpri) && (tpri) <= TMAX_TPRI)
+
+#ifndef VALID_INTPRI_CHGIPM
+#define VALID_INTPRI_CHGIPM(intpri) \
+				(TMIN_INTPRI <= (intpri) && (intpri) <= TIPM_ENAALL)
+#endif /* VALID_INTPRI_CHGIPM */
+
+/*
+ *  ^XNDæxÌ`FbNiE_PARj
+ */
+#define CHECK_TPRI(tpri) {									\
+	if (!VALID_TPRI(tpri)) {								\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_TPRI_INI(tpri) {								\
+	if (!(VALID_TPRI(tpri) || (tpri) == TPRI_INI)) {		\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_TPRI_SELF(tpri) {								\
+	if (!(VALID_TPRI(tpri) || (tpri) == TPRI_SELF)) {		\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  ^CAEgwèlÌ`FbNiE_PARj
+ */
+#define CHECK_TMOUT(tmout) {								\
+	if (!(TMO_FEVR <= (tmout))) {							\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  ÝDæxÌ`FbNiE_PARj
+ */
+#define CHECK_INTPRI_CHGIPM(intpri) {						\
+	if (!VALID_INTPRI_CHGIPM(intpri)) {						\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  ÝÔÌ`FbNiE_PARj
+ */
+#define CHECK_INTNO_DISINT(intno) {							\
+	if (!VALID_INTNO_DISINT(intno)) {						\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  »Ì¼Ìp[^G[Ì`FbNiE_PARj
+ */
+#define CHECK_PAR(exp) {									\
+	if (!(exp)) {											\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  IuWFNgIDÌÍÍÌ»è
+ */
+#define VALID_TSKID(tskid)	(TMIN_TSKID <= (tskid) && (tskid) <= tmax_tskid)
+#define VALID_SEMID(semid)	(TMIN_SEMID <= (semid) && (semid) <= tmax_semid)
+#define VALID_FLGID(flgid)	(TMIN_FLGID <= (flgid) && (flgid) <= tmax_flgid)
+#define VALID_DTQID(dtqid)	(TMIN_DTQID <= (dtqid) && (dtqid) <= tmax_dtqid)
+#define VALID_PDQID(pdqid)	(TMIN_PDQID <= (pdqid) && (pdqid) <= tmax_pdqid)
+#define VALID_MBXID(mbxid)	(TMIN_MBXID <= (mbxid) && (mbxid) <= tmax_mbxid)
+#define VALID_MPFID(mpfid)	(TMIN_MPFID <= (mpfid) && (mpfid) <= tmax_mpfid)
+#define VALID_CYCID(cycid)	(TMIN_CYCID <= (cycid) && (cycid) <= tmax_cycid)
+#define VALID_ALMID(almid)	(TMIN_ALMID <= (almid) && (almid) <= tmax_almid)
+
+/*
+ *  IuWFNgIDÌ`FbNiE_IDj
+ */
+#define CHECK_TSKID(tskid) {								\
+	if (!VALID_TSKID(tskid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_TSKID_SELF(tskid) {							\
+	if (!(VALID_TSKID(tskid) || (tskid) == TSK_SELF)) {		\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_SEMID(semid) {								\
+	if (!VALID_SEMID(semid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_FLGID(flgid) {								\
+	if (!VALID_FLGID(flgid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_DTQID(dtqid) {								\
+	if (!VALID_DTQID(dtqid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_PDQID(pdqid) {								\
+	if (!VALID_PDQID(pdqid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_MBXID(mbxid) {								\
+	if (!VALID_MBXID(mbxid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_MPFID(mpfid) {								\
+	if (!VALID_MPFID(mpfid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_CYCID(cycid) {								\
+	if (!VALID_CYCID(cycid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_ALMID(almid) {								\
+	if (!VALID_ALMID(almid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  ÄoµReLXgÌ`FbNiE_CTXj
+ */
+#define CHECK_TSKCTX() {									\
+	if (sense_context()) {									\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_INTCTX() {									\
+	if (!sense_context()) {									\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  ÄoµReLXgÆCPUbNóÔÌ`FbNiE_CTXj
+ */
+#define CHECK_TSKCTX_UNL() {								\
+	if (sense_context() || t_sense_lock()) {				\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_INTCTX_UNL() {								\
+	if (!sense_context() || i_sense_lock()) {				\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  fBXpb`Û¯óÔÅÈ¢©Ì`FbNiE_CTXj
+ */
+#define CHECK_DISPATCH() {									\
+	if (sense_context() || t_sense_lock() || !dspflg) {		\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  »Ì¼ÌReLXgG[Ì`FbNiE_CTXj
+ */
+#define CHECK_CTX(exp) {									\
+	if (!(exp)) {											\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  ©^XNðwèµÄ¢È¢©Ì`FbNiE_ILUSEj
+ */
+#define CHECK_NONSELF(p_tcb) {								\
+	if ((p_tcb) == p_runtsk) {								\
+		ercd = E_ILUSE;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  »Ì¼Ìs³gpG[Ì`FbNiE_ILUSEj
+ */
+#define CHECK_ILUSE(exp) {									\
+	if (!(exp)) {											\
+		ercd = E_ILUSE;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  ÃIÈIuWFNgóÔG[Ì`FbNiE_OBJj
+ */
+#define CHECK_OBJ(exp) {									\
+	if (!(exp)) {											\
+		ercd = E_OBJ;										\
+		goto error_exit;									\
+	}														\
+}
+
+#endif /* TOPPERS_CHECK_H */
Index: /asp_ewarm/asp-1.7.0/extension/ovrhdr/kernel/kernel.tf
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/ovrhdr/kernel/kernel.tf	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/ovrhdr/kernel/kernel.tf	(revision 61)
@@ -0,0 +1,1109 @@
+$ ======================================================================
+$ 
+$   TOPPERS/ASP Kernel
+$       Toyohashi Open Platform for Embedded Real-Time Systems/
+$       Advanced Standard Profile Kernel
+$ 
+$   Copyright (C) 2007 by TAKAGI Nobuhisa
+$   Copyright (C) 2007-2011 by Embedded and Real-Time Systems Laboratory
+$               Graduate School of Information Science, Nagoya Univ., JAPAN
+$  
+$   ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+$   Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+$   ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+$   (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+$        \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+$       XR[hÉÜÜêÄ¢é±ÆD
+$   (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+$       pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+$       Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+$       Ì³ÛØKèðfÚ·é±ÆD
+$   (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+$       pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+$       ÆD
+$     (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+$         ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+$     (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+$         ñ·é±ÆD
+$   (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+$       Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+$       Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+$       RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+$       ÆÓ·é±ÆD
+$  
+$   {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+$   æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+$   ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+$   AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+$   ÌÓCðíÈ¢D
+$ 
+$   $Id: kernel.tf 2024 2011-01-02 08:59:23Z ertl-hiro $
+$  
+$ =====================================================================
+
+$ =====================================================================
+$ kernel_cfg.hÌ¶¬
+$ =====================================================================
+
+$FILE "kernel_cfg.h"$
+/* kernel_cfg.h */$NL$
+#ifndef TOPPERS_KERNEL_CFG_H$NL$
+#define TOPPERS_KERNEL_CFG_H$NL$
+$NL$
+#define TNUM_TSKID	$LENGTH(TSK.ID_LIST)$$NL$
+#define TNUM_SEMID	$LENGTH(SEM.ID_LIST)$$NL$
+#define TNUM_FLGID	$LENGTH(FLG.ID_LIST)$$NL$
+#define TNUM_DTQID	$LENGTH(DTQ.ID_LIST)$$NL$
+#define TNUM_PDQID	$LENGTH(PDQ.ID_LIST)$$NL$
+#define TNUM_MBXID	$LENGTH(MBX.ID_LIST)$$NL$
+#define TNUM_MPFID	$LENGTH(MPF.ID_LIST)$$NL$
+#define TNUM_CYCID	$LENGTH(CYC.ID_LIST)$$NL$
+#define TNUM_ALMID	$LENGTH(ALM.ID_LIST)$$NL$
+$NL$
+$FOREACH id TSK.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id SEM.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id FLG.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id DTQ.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id PDQ.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id MBX.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id MPF.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id CYC.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id ALM.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$NL$
+#endif /* TOPPERS_KERNEL_CFG_H */$NL$
+
+$ =====================================================================
+$ kernel_cfg.cÌ¶¬
+$ =====================================================================
+
+$FILE "kernel_cfg.c"$
+/* kernel_cfg.c */$NL$
+#include "kernel/kernel_int.h"$NL$
+#include "kernel_cfg.h"$NL$
+$NL$
+#ifndef TOPPERS_EMPTY_LABEL$NL$
+#define TOPPERS_EMPTY_LABEL(x,y) x y[0]$NL$
+#endif$NL$
+$NL$
+#if TKERNEL_PRID != 0x07u$NL$
+#error The kernel does not match this configuration file.$NL$
+#endif$NL$
+$NL$
+
+$ 
+$  CN[hfBNeBui#includej
+$ 
+/*$NL$
+$SPC$*  Include Directives (#include)$NL$
+$SPC$*/$NL$
+$NL$
+$INCLUDES$
+$NL$
+
+$ 
+$  IuWFNgÌIDÔðÛ·éÏ
+$ 
+$IF USE_EXTERNAL_ID$
+	/*$NL$
+	$SPC$*  Variables for Object ID$NL$
+	$SPC$*/$NL$
+	$NL$
+	$FOREACH id TSK.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id SEM.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id FLG.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id DTQ.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id PDQ.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id MBX.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id MPF.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id CYC.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id ALM.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+$END$
+
+$ 
+$  g[XO}NÌftHgè`
+$ 
+/*$NL$
+$SPC$*  Default Definitions of Trace Log Macros$NL$
+$SPC$*/$NL$
+$NL$
+#ifndef LOG_ISR_ENTER$NL$
+#define LOG_ISR_ENTER(intno)$NL$
+#endif /* LOG_ISR_ENTER */$NL$
+$NL$
+#ifndef LOG_ISR_LEAVE$NL$
+#define LOG_ISR_LEAVE(intno)$NL$
+#endif /* LOG_ISR_LEAVE */$NL$
+$NL$
+
+$ 
+$  ^XN
+$ 
+/*$NL$
+$SPC$*  Task Management Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ^XNª1ÂÈã¶Ý·é±ÆÌ`FbN
+$IF !LENGTH(TSK.ID_LIST)$
+	$ERROR$$FORMAT(_("no task is registered"))$$END$
+$END$
+
+$ ^XNIDÔÌÅål
+const ID _kernel_tmax_tskid = (TMIN_TSKID + TNUM_TSKID - 1);$NL$
+$NL$
+
+$ G[`FbN
+$FOREACH tskid TSK.ID_LIST$
+$	// tskatrªimTA_ACTnjÅÈ¢êiE_RSATRj
+	$IF (TSK.TSKATR[tskid] & ~(TA_ACT|TARGET_TSKATR)) != 0$
+		$ERROR TSK.TEXT_LINE[tskid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "tskatr", TSK.TSKATR[tskid], tskid, "CRE_TSK")$$END$
+	$END$
+
+$	// (TMIN_TPRI <= itskpri && itskpri <= TMAX_TPRI)ÅÈ¢êiE_PARj
+	$IF !(TMIN_TPRI <= TSK.ITSKPRI[tskid] && TSK.ITSKPRI[tskid] <= TMAX_TPRI)$
+		$ERROR TSK.TEXT_LINE[tskid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "itskpri", TSK.ITSKPRI[tskid], tskid, "CRE_TSK")$$END$
+	$END$
+
+$ 	// texatrªiTA_NULLjÅÈ¢êiE_RSATRj
+	$IF LENGTH(TSK.TEXATR[tskid]) && TSK.TEXATR[tskid] != 0$
+		$ERROR DEF_TEX.TEXT_LINE[tskid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "texatr", TSK.TEXATR[tskid], tskid, "DEF_TEX")$$END$
+	$END$
+$END$
+
+$ X^bNÌæÌ¶¬Æ»êÉÖ·éG[`FbN
+$FOREACH tskid TSK.ID_LIST$
+$	// stkszª0©C^[Qbgè`ÌÅ¬liTARGET_MIN_STKSZjæèà¬³¢êiE_PARj
+	$IF TSK.STKSZ[tskid] == 0 || (TARGET_MIN_STKSZ
+									&& TSK.STKSZ[tskid] < TARGET_MIN_STKSZ)$
+		$ERROR TSK.TEXT_LINE[tskid]$E_PAR: $FORMAT(_("%1% `%2%\' of `%3%\' in %4% is too small"), "stksz", TSK.STKSZ[tskid], tskid, "CRE_TSK")$$END$
+	$END$
+$ 	// stkszªX^bNÌæÌTCYÆµÄ³µ­È¢êiE_PARj
+	$IF !EQ(TSK.STK[tskid], "NULL") && CHECK_STKSZ_ALIGN
+							&& (TSK.STKSZ[tskid] & (CHECK_STKSZ_ALIGN - 1))$
+		$ERROR TSK.TEXT_LINE[tskid]$E_PAR: $FORMAT(_("%1% `%2%\' of `%3%\' in %4% is not aligned"), "stksz", TSK.STKSZ[tskid], tskid, "CRE_TSK")$$END$
+	$END$
+
+	$IF EQ(TSK.STK[tskid],"NULL")$
+		static STK_T _kernel_stack_$tskid$[COUNT_STK_T($TSK.STKSZ[tskid]$)];$NL$
+		$TSK.TINIB_STKSZ[tskid] = FORMAT("ROUND_STK_T(%1%)", TSK.STKSZ[tskid])$
+		$TSK.TINIB_STK[tskid] = CONCAT("_kernel_stack_", tskid)$
+	$ELSE$
+		$TSK.TINIB_STKSZ[tskid] = TSK.STKSZ[tskid]$
+		$TSK.TINIB_STK[tskid] = TSK.STK[tskid]$
+	$END$
+$END$
+$NL$
+
+$ ^XNú»ubNÌ¶¬i^XNÍ1ÂÈã¶Ý·éj
+const TINIB _kernel_tinib_table[TNUM_TSKID] = {$NL$
+$JOINEACH tskid TSK.ID_LIST ",\n"$
+$	// ^XN®«Cg£îñCN®ÔnCN®Dæx
+	$TAB${
+	$SPC$($TSK.TSKATR[tskid]$), (intptr_t)($TSK.EXINF[tskid]$),
+	$SPC$((TASK)($TSK.TASK[tskid]$)), INT_PRIORITY($TSK.ITSKPRI[tskid]$),
+
+$	// ^XNú»ReLXgubNCX^bNÌæ
+	$IF USE_TSKINICTXB$
+		$GENERATE_TSKINICTXB(tskid)$
+	$ELSE$
+		$SPC$$TSK.TINIB_STKSZ[tskid]$, $TSK.TINIB_STK[tskid]$,
+	$END$
+
+$	// ^XNáO[`Ì®«ÆN®Ôn
+	$SPC$($ALT(TSK.TEXATR[tskid],"TA_NULL")$), ($ALT(TSK.TEXRTN[tskid],"NULL")$) }
+$END$$NL$
+};$NL$
+$NL$
+
+$ ^XNÇubNÌ¶¬
+TCB _kernel_tcb_table[TNUM_TSKID];$NL$
+$NL$
+
+$ ^XN¶¬e[uÌ¶¬
+const ID _kernel_torder_table[TNUM_TSKID] = {$NL$
+$TAB$$JOINEACH tskid TSK.ORDER_LIST ", "$$tskid$$END$$NL$
+};$NL$
+$NL$
+
+$ 
+$  Z}tH
+$ 
+/*$NL$
+$SPC$*  Semaphore Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ Z}tHIDÔÌÅål
+const ID _kernel_tmax_semid = (TMIN_SEMID + TNUM_SEMID - 1);$NL$
+$NL$
+
+$ Z}tHú»ubNÌ¶¬
+$IF LENGTH(SEM.ID_LIST)$
+	const SEMINIB _kernel_seminib_table[TNUM_SEMID] = {$NL$
+	$JOINEACH semid SEM.ID_LIST ",\n"$
+$		// sematrªimTA_TPRInjÅÈ¢êiE_RSATRj
+		$IF (SEM.SEMATR[semid] & ~TA_TPRI) != 0$
+			$ERROR SEM.TEXT_LINE[semid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "sematr", SEM.SEMATR[semid], semid, "CRE_SEM")$$END$
+		$END$
+
+$		// (0 <= isemcnt && isemcnt <= maxsem)ÅÈ¢êiE_PARj
+		$IF !(0 <= SEM.ISEMCNT[semid] && SEM.ISEMCNT[semid] <= SEM.MAXSEM[semid])$
+			$ERROR SEM.TEXT_LINE[semid]$E_PAR: $FORMAT(_("too large %1% `%2%\' of `%3%\' in %4%"), "isemcnt", SEM.ISEMCNT[semid], semid, "CRE_SEM")$$END$
+		$END$
+
+$		// (1 <= maxsem && maxsem <= TMAX_MAXSEM)ÅÈ¢êiE_PARj
+		$IF !(1 <= SEM.MAXSEM[semid] && SEM.MAXSEM[semid] <= TMAX_MAXSEM)$
+			$ERROR SEM.TEXT_LINE[semid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "maxsem", SEM.MAXSEM[semid], semid, "CRE_SEM")$$END$
+		$END$
+
+$		// Z}tHú»ubN
+		$TAB${ ($SEM.SEMATR[semid]$), ($SEM.ISEMCNT[semid]$), ($SEM.MAXSEM[semid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// Z}tHÇubN
+	SEMCB _kernel_semcb_table[TNUM_SEMID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const SEMINIB, _kernel_seminib_table);$NL$
+	TOPPERS_EMPTY_LABEL(SEMCB, _kernel_semcb_table);$NL$
+$END$$NL$
+
+$ 
+$  CxgtO
+$ 
+/*$NL$
+$SPC$*  Eventflag Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ CxgtOIDÔÌÅål
+const ID _kernel_tmax_flgid = (TMIN_FLGID + TNUM_FLGID - 1);$NL$
+$NL$
+
+$ CxgtOú»ubNÌ¶¬
+$IF LENGTH(FLG.ID_LIST)$
+	const FLGINIB _kernel_flginib_table[TNUM_FLGID] = {$NL$
+	$JOINEACH flgid FLG.ID_LIST ",\n"$
+$		// flgatrªimTA_TPRInbmTA_WMULnbmTA_CLRnjÅÈ¢êiE_RSATRj
+		$IF (FLG.FLGATR[flgid] & ~(TA_TPRI|TA_WMUL|TA_CLR)) != 0$
+			$ERROR FLG.TEXT_LINE[flgid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "flgatr", FLG.FLGATR[flgid], flgid, "CRE_FLG")$$END$
+		$END$
+
+$		// CxgtOú»ubN
+		$TAB${ ($FLG.FLGATR[flgid]$), ($FLG.IFLGPTN[flgid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// CxgtOÇubN
+	FLGCB _kernel_flgcb_table[TNUM_FLGID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const FLGINIB, _kernel_flginib_table);$NL$
+	TOPPERS_EMPTY_LABEL(FLGCB, _kernel_flgcb_table);$NL$
+$END$$NL$
+
+$ 
+$  f[^L
+[
+$ 
+/*$NL$
+$SPC$*  Dataqueue Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ f[^L
+[IDÔÌÅål
+const ID _kernel_tmax_dtqid = (TMIN_DTQID + TNUM_DTQID - 1);$NL$
+$NL$
+
+$IF LENGTH(DTQ.ID_LIST)$
+	$FOREACH dtqid DTQ.ID_LIST$
+$		// dtqatrªimTA_TPRInjÅÈ¢êiE_RSATRj
+		$IF (DTQ.DTQATR[dtqid] & ~TA_TPRI) != 0$
+			$ERROR DTQ.TEXT_LINE[dtqid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "dtqatr", DTQ.DTQATR[dtqid], dtqid, "CRE_DTQ")$$END$
+		$END$
+
+$		// dtqmbªNULLÅÈ¢êiE_NOSPTj
+		$IF !EQ(DTQ.DTQMB[dtqid], "NULL")$
+			$ERROR DTQ.TEXT_LINE[dtqid]$E_NOSPT: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "dtqmb", DTQ.DTQMB[dtqid], dtqid, "CRE_DTQ")$$END$
+		$END$
+
+$		// f[^L
+[ÇÌæ
+		$IF DTQ.DTQCNT[dtqid]$
+			static DTQMB _kernel_dtqmb_$dtqid$[$DTQ.DTQCNT[dtqid]$];$NL$
+		$END$
+	$END$
+
+$	// f[^L
+[ú»ubNÌ¶¬
+	const DTQINIB _kernel_dtqinib_table[TNUM_DTQID] = {$NL$
+	$JOINEACH dtqid DTQ.ID_LIST ",\n"$
+		$TAB${ ($DTQ.DTQATR[dtqid]$), ($DTQ.DTQCNT[dtqid]$), $IF DTQ.DTQCNT[dtqid]$(_kernel_dtqmb_$dtqid$)$ELSE$NULL$END$ }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// f[^L
+[ÇubN
+	DTQCB _kernel_dtqcb_table[TNUM_DTQID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const DTQINIB, _kernel_dtqinib_table);$NL$
+	TOPPERS_EMPTY_LABEL(DTQCB, _kernel_dtqcb_table);$NL$
+$END$$NL$
+
+$ 
+$  Dæxf[^L
+[
+$ 
+/*$NL$
+$SPC$*  Priority Dataqueue Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ Dæxf[^L
+[IDÔÌÅål
+const ID _kernel_tmax_pdqid = (TMIN_PDQID + TNUM_PDQID - 1);$NL$
+$NL$
+
+$IF LENGTH(PDQ.ID_LIST)$
+	$FOREACH pdqid PDQ.ID_LIST$
+$		// pdqatrªimTA_TPRInjÅÈ¢êiE_RSATRj
+		$IF (PDQ.PDQATR[pdqid] & ~TA_TPRI) != 0$
+			$ERROR PDQ.TEXT_LINE[pdqid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "pdqatr", PDQ.PDQATR[pdqid], pdqid, "CRE_PDQ")$$END$
+		$END$
+
+$		// (TMIN_DPRI <= maxdpri && maxdpri <= TMAX_DPRI)ÅÈ¢êiE_PARj
+		$IF !(TMIN_DPRI <= PDQ.MAXDPRI[pdqid] && PDQ.MAXDPRI[pdqid] <= TMAX_DPRI)$
+			$ERROR PDQ.TEXT_LINE[pdqid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "maxdpri", PDQ.MAXDPRI[pdqid], pdqid, "CRE_PDQ")$$END$
+		$END$
+
+$		// pdqmbªNULLÅÈ¢êiE_NOSPTj
+		$IF !EQ(PDQ.PDQMB[pdqid], "NULL")$
+			$ERROR PDQ.TEXT_LINE[pdqid]$E_NOSPT: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "pdqmb", PDQ.PDQMB[pdqid], pdqid, "CRE_PDQ")$$END$
+		$END$
+
+$		// Dæxf[^L
+[ÇÌæ
+		$IF PDQ.PDQCNT[pdqid]$
+			static PDQMB _kernel_pdqmb_$pdqid$[$PDQ.PDQCNT[pdqid]$];$NL$
+		$END$
+	$END$
+
+$	// Dæxf[^L
+[ú»ubNÌ¶¬
+	const PDQINIB _kernel_pdqinib_table[TNUM_PDQID] = {$NL$
+	$JOINEACH pdqid PDQ.ID_LIST ",\n"$
+		$TAB${ ($PDQ.PDQATR[pdqid]$), ($PDQ.PDQCNT[pdqid]$), ($PDQ.MAXDPRI[pdqid]$), $IF PDQ.PDQCNT[pdqid]$(_kernel_pdqmb_$pdqid$)$ELSE$NULL$END$ }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// Dæxf[^L
+[ÇubN
+	PDQCB _kernel_pdqcb_table[TNUM_PDQID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const PDQINIB, _kernel_pdqinib_table);$NL$
+	TOPPERS_EMPTY_LABEL(PDQCB, _kernel_pdqcb_table);$NL$
+$END$$NL$
+
+$ 
+$  [{bNX
+$ 
+/*$NL$
+$SPC$*  Mailbox Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ [{bNXIDÔÌÅål
+const ID _kernel_tmax_mbxid = (TMIN_MBXID + TNUM_MBXID - 1);$NL$
+$NL$
+
+$ [{bNXú»ubNÌ¶¬
+$IF LENGTH(MBX.ID_LIST)$
+	const MBXINIB _kernel_mbxinib_table[TNUM_MBXID] = {$NL$
+	$JOINEACH mbxid MBX.ID_LIST ",\n"$
+$		// mbxatrªimTA_TPRInbmTA_MPRInjÅÈ¢êiE_RSATRj
+		$IF (MBX.MBXATR[mbxid] & ~(TA_TPRI|TA_MPRI)) != 0$
+			$ERROR MBX.TEXT_LINE[mbxid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "mbxatr", MBX.MBXATR[mbxid], mbxid, "CRE_MBX")$$END$
+		$END$
+
+$		// (TMIN_MPRI <= maxmpri && maxmpri <= TMAX_MPRI)ÅÈ¢êiE_PARj
+		$IF !(TMIN_MPRI <= MBX.MAXMPRI[mbxid] && MBX.MAXMPRI[mbxid] <= TMAX_MPRI)$
+			$ERROR MBX.TEXT_LINE[mbxid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "maxmpri", MBX.MAXMPRI[mbxid], mbxid, "CRE_MBX")$$END$
+		$END$
+
+$		// mprihdªNULLÅÈ¢êiE_NOSPTj
+		$IF !EQ(MBX.MPRIHD[mbxid], "NULL")$
+			$ERROR MBX.TEXT_LINE[mbxid]$E_NOSPT: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "mprihd", MBX.MPRIHD[mbxid], mbxid, "CRE_MBX")$$END$
+		$END$
+
+$		// [{bNXú»ubN
+		$TAB${ ($MBX.MBXATR[mbxid]$), ($MBX.MAXMPRI[mbxid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// [{bNXÇubN
+	MBXCB _kernel_mbxcb_table[TNUM_MBXID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const MBXINIB, _kernel_mbxinib_table);$NL$
+	TOPPERS_EMPTY_LABEL(MBXCB, _kernel_mbxcb_table);$NL$
+$END$$NL$
+
+$ 
+$  Åè·v[
+$ 
+/*$NL$
+$SPC$*  Fixed-sized Memorypool Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ Åè·v[IDÔÌÅål
+const ID _kernel_tmax_mpfid = (TMIN_MPFID + TNUM_MPFID - 1);$NL$
+$NL$
+
+$IF LENGTH(MPF.ID_LIST)$
+	$FOREACH mpfid MPF.ID_LIST$
+$		// mpfatrªimTA_TPRInjÅÈ¢êiE_RSATRj
+		$IF (MPF.MPFATR[mpfid] & ~TA_TPRI) != 0$
+			$ERROR MPF.TEXT_LINE[mpfid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "mpfatr", MPF.MPFATR[mpfid], mpfid, "CRE_MPF")$$END$
+		$END$
+
+$		// blkcntª0ÌêiE_PARj
+		$IF MPF.BLKCNT[mpfid] == 0$
+			$ERROR MPF.TEXT_LINE[mpfid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "blkcnt", MPF.BLKCNT[mpfid], mpfid, "CRE_MPF")$$END$
+		$END$
+
+$		// blkszª0ÌêiE_PARj
+		$IF MPF.BLKSZ[mpfid] == 0$
+			$ERROR MPF.TEXT_LINE[mpfid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "blksz", MPF.BLKSZ[mpfid], mpfid, "CRE_MPF")$$END$
+		$END$
+
+$		// Åè·v[Ìæ
+		$IF EQ(MPF.MPF[mpfid], "NULL")$
+			static MPF_T _kernel_mpf_$mpfid$[($MPF.BLKCNT[mpfid]$) * COUNT_MPF_T($MPF.BLKSZ[mpfid]$)];$NL$
+		$END$
+
+$		// mpfmbªNULLÅÈ¢êiE_NOSPTj
+		$IF !EQ(MPF.MPFMB[mpfid], "NULL")$
+			$ERROR MPF.TEXT_LINE[mpfid]$E_NOSPT: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "mpfmb", MPF.MPFMB[mpfid], mpfid, "CRE_MPF")$$END$
+		$END$
+
+$		// Åè·v[ÇÌæ
+		static MPFMB _kernel_mpfmb_$mpfid$[$MPF.BLKCNT[mpfid]$];$NL$
+	$END$
+
+$	// Åè·v[ú»ubNÌ¶¬
+	const MPFINIB _kernel_mpfinib_table[TNUM_MPFID] = {$NL$
+	$JOINEACH mpfid MPF.ID_LIST ",\n"$
+		$TAB${ ($MPF.MPFATR[mpfid]$), ($MPF.BLKCNT[mpfid]$), ROUND_MPF_T($MPF.BLKSZ[mpfid]$), $IF EQ(MPF.MPF[mpfid],"NULL")$(_kernel_mpf_$mpfid$)$ELSE$($MPF.MPF[mpfid]$)$END$, (_kernel_mpfmb_$mpfid$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// Åè·v[ÇubN
+	MPFCB _kernel_mpfcb_table[TNUM_MPFID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const MPFINIB, _kernel_mpfinib_table);$NL$
+	TOPPERS_EMPTY_LABEL(MPFCB, _kernel_mpfcb_table);$NL$
+$END$$NL$
+
+$ 
+$  üúnh
+$ 
+/*$NL$
+$SPC$*  Cyclic Handler Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ üúnhIDÔÌÅål
+const ID _kernel_tmax_cycid = (TMIN_CYCID + TNUM_CYCID - 1);$NL$
+$NL$
+
+$ üúnhú»e[uÌ¶¬
+$IF LENGTH(CYC.ID_LIST)$
+	const CYCINIB _kernel_cycinib_table[TNUM_CYCID] = {$NL$
+	$JOINEACH cycid CYC.ID_LIST ",\n"$
+$		// cycatrªimTA_STAnjÅÈ¢êiE_RSATRj
+		$IF (CYC.CYCATR[cycid] & ~TA_STA) != 0$
+			$ERROR CYC.TEXT_LINE[cycid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "cycatr", CYC.CYCATR[cycid], cycid, "CRE_CYC")$$END$
+		$END$
+
+$		// (0 < cyctim && cyctim <= TMAX_RELTIM)ÅÈ¢êiE_PARj
+		$IF !(0 < CYC.CYCTIM[cycid] && CYC.CYCTIM[cycid] <= TMAX_RELTIM)$
+			$ERROR CYC.TEXT_LINE[cycid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "cyctim", CYC.CYCTIM[cycid], cycid, "CRE_CYC")$$END$
+		$END$
+
+$		// (0 <= cycphs && cycphs <= TMAX_RELTIM)ÅÈ¢êiE_PARj
+		$IF !(0 <= CYC.CYCPHS[cycid] && CYC.CYCPHS[cycid] <= TMAX_RELTIM)$
+			$ERROR CYC.TEXT_LINE[cycid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "cycphs", CYC.CYCPHS[cycid], cycid, "CRE_CYC")$$END$
+		$END$
+
+$		// xFcycatrÉTA_STAªÝè³êÄ¢ÄC(cycphs == 0)Ìê
+		$IF (CYC.CYCATR[cycid] & TA_STA) != 0 && CYC.CYCPHS[cycid] == 0$
+			$WARNING CYC.TEXT_LINE[cycid]$$FORMAT(_("%1% is not recommended when %2% is set to %3% in %4%"), "cycphs==0", "TA_STA", "cycatr", "CRE_CYC")$$END$
+		$END$
+
+$		// üúnhú»ubN
+		$TAB${ ($CYC.CYCATR[cycid]$), (intptr_t)($CYC.EXINF[cycid]$), ($CYC.CYCHDR[cycid]$), ($CYC.CYCTIM[cycid]$), ($CYC.CYCPHS[cycid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// üúnhÇubN
+	CYCCB _kernel_cyccb_table[TNUM_CYCID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const CYCINIB, _kernel_cycinib_table);$NL$
+	TOPPERS_EMPTY_LABEL(CYCCB, _kernel_cyccb_table);$NL$
+$END$$NL$
+
+$ 
+$  A[nh
+$ 
+/*$NL$
+$SPC$*  Alarm Handler Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ A[nhIDÔÌÅål
+const ID _kernel_tmax_almid = (TMIN_ALMID + TNUM_ALMID - 1);$NL$
+$NL$
+
+$ A[nhú»ubNÌ¶¬
+$IF LENGTH(ALM.ID_LIST)$
+	const ALMINIB _kernel_alminib_table[TNUM_ALMID] = {$NL$
+	$JOINEACH almid ALM.ID_LIST ",\n"$
+$		// almatrªiTA_NULLjÅÈ¢êiE_RSATRj
+		$IF ALM.ALMATR[almid] != 0$
+			$ERROR ALM.TEXT_LINE[almid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "almatr", ALM.ALMATR[almid], almid, "CRE_ALM")$$END$
+		$END$
+
+$		// A[nhú»ubN
+		$TAB${ ($ALM.ALMATR[almid]$), (intptr_t)($ALM.EXINF[almid]$), ($ALM.ALMHDR[almid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// A[nhÇubN
+	ALMCB _kernel_almcb_table[TNUM_ALMID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const ALMINIB, _kernel_alminib_table);$NL$
+	TOPPERS_EMPTY_LABEL(ALMCB, _kernel_almcb_table);$NL$
+$END$$NL$
+
+$ 
+$  I[onh
+$ 
+/*$NL$
+$SPC$*  Overrun Handler Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$	// ÃIAPIuDEF_OVRvª¡ éiE_OBJj
+$IF LENGTH(OVR.ORDER_LIST) > 1$
+	$ERROR$E_OBJ: $FORMAT(_("too many %1%"), "DEF_OVR")$$END$
+$END$
+
+$ I[onhú»ubNÌ¶¬
+#ifdef TOPPERS_SUPPORT_OVRHDR$NL$$NL$
+const OVRINIB _kernel_ovrinib = {$NL$
+$IF LENGTH(OVR.ORDER_LIST)$
+	$TAB$($OVR.OVRATR[1]$), ($OVR.OVRHDR[1]$)$NL$
+$ELSE$
+	$TAB$TA_NULL, NULL$NL$
+$END$
+};$NL$$NL$
+#endif /* TOPPERS_SUPPORT_OVRHDR */$NL$
+$NL$
+
+$ 
+$  ÝÇ@\
+$ 
+/*$NL$
+$SPC$*  Interrupt Management Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ÝÔÆÝnhÔÌÏ·e[uÌì¬
+$IF LENGTH(INTNO_ATTISR_VALID) != LENGTH(INHNO_ATTISR_VALID)$
+	$ERROR$length of `INTNO_ATTISR_VALID' is different from length of `INHNO_ATTISR_VALID'$END$
+$END$
+$i = 0$
+$FOREACH intno INTNO_ATTISR_VALID$
+	$inhno = AT(INHNO_ATTISR_VALID, i)$
+	$INHNO[intno] = inhno$
+	$INTNO[inhno] = intno$
+	$i = i + 1$
+$END$
+
+$ ÝvCÉÖ·éG[`FbN
+$i = 0$
+$FOREACH intno INT.ORDER_LIST$
+$	// intnoªCFG_INTÉÎ·éÝÔÆµÄ³µ­È¢êiE_PARj
+	$IF !LENGTH(FIND(INTNO_CFGINT_VALID, INT.INTNO[intno]))$
+		$ERROR INT.TEXT_LINE[intno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "intno", INT.INTNO[intno], "CFG_INT")$$END$
+	$END$
+
+$	// intnoªCFG_INTÉæÁÄÝèÏÝÌêiE_OBJj
+	$j = 0$
+	$FOREACH intno2 INT.ORDER_LIST$
+		$IF INT.INTNO[intno] == INT.INTNO[intno2] && j < i$
+			$ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' in %3% is duplicated"), "intno", INT.INTNO[intno], "CFG_INT")$$END$
+		$END$
+		$j = j + 1$
+	$END$
+
+$	// intatrªimTA_ENAINTnbmTA_EDGEnjÅÈ¢êiE_RSATRj
+	$IF (INT.INTATR[intno] & ~(TA_ENAINT|TA_EDGE|TARGET_INTATR)) != 0$
+		$ERROR INT.TEXT_LINE[intno]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "intatr", INT.INTATR[intno], "intno", INT.INTNO[intno], "CFG_INT")$$END$
+	$END$
+
+$	// intpriªCFG_INTÉÎ·éÝDæxÆµÄ³µ­È¢êiE_PARj
+	$IF !LENGTH(FIND(INTPRI_CFGINT_VALID, INT.INTPRI[intno]))$
+		$ERROR INT.TEXT_LINE[intno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "intpri", INT.INTPRI[intno], "CFG_INT")$$END$
+	$END$
+
+$	// J[lÇÉÅè³êÄ¢éintnoÉÎµÄCintpriÉTMIN_INTPRI
+$	// æèà¬³¢lªwè³ê½êiE_OBJj
+	$IF LENGTH(FIND(INTNO_FIX_KERNEL, intno))$
+		$IF INT.INTPRI[intno] < TMIN_INTPRI$
+			$ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' must not have higher priority than %3%"), "intno", INT.INTNO[intno], "TMIN_INTPRI")$$END$
+		$END$
+	$END$
+
+$	// J[lÇOÉÅè³êÄ¢éintnoÉÎµÄCintpriÉTMIN_INTPRI
+$	// æèà¬³¢lªwè³êÈ©Á½êiE_OBJj
+	$IF LENGTH(FIND(INTNO_FIX_NONKERNEL, intno))$
+		$IF INT.INTPRI[intno] >= TMIN_INTPRI$
+			$ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' must have higher priority than %3%"), "intno", INT.INTNO[intno], "TMIN_INTPRI")$$END$
+		$END$
+	$END$
+	$i = i + 1$
+$END$
+
+$ ÝnhÉÖ·éG[`FbN
+$i = 0$
+$FOREACH inhno INH.ORDER_LIST$
+$	// inhnoªDEF_INHÉÎ·éÝnhÔÆµÄ³µ­È¢êiE_PARj
+	$IF !LENGTH(FIND(INHNO_DEFINH_VALID, INH.INHNO[inhno]))$
+		$ERROR INH.TEXT_LINE[inhno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "inhno", INH.INHNO[inhno], "DEF_INH")$$END$
+	$END$
+
+$	// inhnoªDEF_INHÉæÁÄÝèÏÝÌêiE_OBJj
+	$j = 0$
+	$FOREACH inhno2 INH.ORDER_LIST$
+		$IF INH.INHNO[inhno] == INH.INHNO[inhno2] && j < i$
+			$ERROR INH.TEXT_LINE[inhno]$E_OBJ: $FORMAT(_("%1% `%2%\' in %3% is duplicated"), "inhno", INH.INHNO[inhno], "DEF_INH")$$END$
+		$END$
+		$j = j + 1$
+	$END$
+
+$	// inhatrªiTA_NULLjÅÈ¢êiE_RSATRj
+	$IF (INH.INHATR[inhno] & ~TARGET_INHATR) != 0$
+		$ERROR INH.TEXT_LINE[inhno]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "inhatr", INH.INHATR[inhno], "inhno", INH.INHNO[inhno], "DEF_INH")$$END$
+	$END$
+
+$	// J[lÇÉÅè³êÄ¢éinhnoÉÎµÄCinhatrÉTA_NONKERNEL
+$	//@ªwè³êÄ¢éêiE_RSATRj
+	$IF LENGTH(FIND(INHNO_FIX_KERNEL, inhno))$
+		$IF (INH.INHATR[inhno] & TA_NONKERNEL) != 0$
+			$ERROR INH.TEXT_LINE[inhno]$E_RSATR: $FORMAT(_("%1% `%2%\' must not be non-kernel interrupt"), "inhno", INH.INHNO[inhno])$$END$
+		$END$
+	$END$
+
+$	// J[lÇOÉÅè³êÄ¢éinhnoÉÎµÄCinhatrÉTA_NONKERNEL
+$	// ªwè³êÄ¢È¢êiE_RSATRj
+	$IF LENGTH(FIND(INHNO_FIX_NONKERNEL, inhno))$
+		$IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$
+			$ERROR INH.TEXT_LINE[inhno]$E_RSATR: $FORMAT(_("%1% `%2%\' must be non-kernel interrupt"), "inhno", INH.INHNO[inhno])$$END$
+		$END$
+	$END$
+
+	$IF LENGTH(INTNO[INH.INHNO[inhno]])$
+		$intno = INTNO[INH.INHNO[inhno]]$
+$		// inhnoÉÎ·éintnoÉÎ·éCFG_INTªÈ¢êiE_OBJj
+		$IF !LENGTH(INT.INTNO[intno])$
+			$ERROR INH.TEXT_LINE[inhno]$E_OBJ: $FORMAT(_("%1% `%2%\' corresponding to %3% `%4%\' is not configured with %5%"), "intno", INT.INTNO[intno], "inhno", INH.INHNO[inhno], "CFG_INT")$$END$
+		$ELSE$
+			$IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$
+$				// inhatrÉTA_NONKERNELªwè³êÄ¨ç¸CinhnoÉÎ
+$				// ·éintnoÉÎµÄCFG_INTÅÝè³ê½ÝDæxª
+$				// TMIN_INTPRIæèà¬³¢êiE_OBJj
+				$IF INT.INTPRI[intno] < TMIN_INTPRI$
+					$ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' configured for %3% `%4%\' is higher than %5%"), "intpri", INT.INTPRI[intno], "inhno", INH.INHNO[inhno], "TMIN_INTPRI")$$END$
+				$END$
+			$ELSE$
+$				// inhatrÉTA_NONKERNELªwè³êÄ¨èCinhnoÉÎ
+$				// ·éintnoÉÎµÄCFG_INTÅÝè³ê½ÝDæxª
+$				// TMIN_INTPRIÈãÅ éêiE_OBJj
+				$IF INT.INTPRI[intno] >= TMIN_INTPRI$
+					$ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' configured for %3% `%4%\' is lower than or equal to %5%"), "intpri", INT.INTPRI[intno], "inhno", INH.INHNO[inhno], "TMIN_INTPRI")$$END$
+				$END$
+			$END$
+		$END$
+	$END$
+	$i = i + 1$
+$END$
+
+$ ÝT[rX[`iISRjÉÖ·éG[`FbNÆÝnhÌ¶¬
+$FOREACH order ISR.ORDER_LIST$
+$	// isratrªiTA_NULLjÅÈ¢êiE_RSATRj
+	$IF (ISR.ISRATR[order] & ~TARGET_ISRATR) != 0$
+		$ERROR ISR.TEXT_LINE[order]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "isratr", ISR.ISRATR[order], "ATT_ISR")$$END$
+	$END$
+
+$	// intnoªATT_ISRÉÎ·éÝÔÆµÄ³µ­È¢êiE_PARj
+	$IF !LENGTH(FIND(INTNO_ATTISR_VALID, ISR.INTNO[order]))$
+		$ERROR ISR.TEXT_LINE[order]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "intno", ISR.INTNO[order], "ATT_ISR")$$END$
+	$END$
+
+$	// (TMIN_ISRPRI <= isrpri && isrpri <= TMAX_ISRPRI)ÅÈ¢êiE_PARj
+	$IF !(TMIN_ISRPRI <= ISR.ISRPRI[order] && ISR.ISRPRI[order] <= TMAX_ISRPRI)$
+		$ERROR ISR.TEXT_LINE[order]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "isrpri", ISR.ISRPRI[order], "ATT_ISR")$$END$
+	$END$
+$END$
+
+$FOREACH intno INTNO_ATTISR_VALID$
+	$inhno = INHNO[intno]$
+
+$	// ÝÔintnoÉÎµÄo^³ê½ISRÌXgÌì¬
+	$isr_order_list = {}$
+	$FOREACH order ISR.ORDER_LIST$
+		$IF ISR.INTNO[order] == intno$
+			$isr_order_list = APPEND(isr_order_list, order)$
+			$order_for_error = order$
+		$END$
+	$END$
+
+$	// ÝÔintnoÉÎµÄo^³ê½ISRª¶Ý·éê
+	$IF LENGTH(isr_order_list) > 0$
+$		// intnoÉÎ·éinhnoÉÎµÄDEF_INHª éêiE_OBJj
+		$IF LENGTH(INH.INHNO[inhno])$
+			$ERROR ISR.TEXT_LINE[order_for_error]$E_OBJ: $FORMAT(_("%1% `%2%\' in %3% is duplicated with %4% `%5%\'"), "intno", ISR.INTNO[order_for_error], "ATT_ISR", "inhno", INH.INHNO[inhno])$$END$
+		$END$
+
+$		// intnoÉÎ·éCFG_INTªÈ¢êiE_OBJj
+		$IF !LENGTH(INT.INTNO[intno])$
+			$ERROR ISR.TEXT_LINE[order_for_error]$E_OBJ: $FORMAT(_("%1% `%2%\' is not configured with %3%"), "intno", ISR.INTNO[order_for_error], "CFG_INT")$$END$
+		$ELSE$
+$			// intnoÉÎµÄCFG_INTÅÝè³ê½ÝDæxªTMIN_INTPRI
+$			// æèà¬³¢êiE_OBJj
+			$IF INT.INTPRI[intno] < TMIN_INTPRI$
+				$ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' configured for %3% `%4%\' is higher than %5%"), "intpri", INT.INTPRI[intno], "intno", ISR.INTNO[order_for_error], "TMIN_INTPRI")$$END$
+			$END$
+		$END$
+
+$		// DEF_INH(inhno, { TA_NULL, _kernel_inthdr_<intno> } );
+		$INH.INHNO[inhno] = inhno$
+		$INH.INHATR[inhno] = VALUE("TA_NULL", 0)$
+		$INH.INTHDR[inhno] = CONCAT("_kernel_inthdr_", intno)$
+		$INH.ORDER_LIST = APPEND(INH.ORDER_LIST, inhno)$
+
+$		// ISRpÌÝnh
+		void$NL$
+		_kernel_inthdr_$intno$(void)$NL$
+		{$NL$
+		$IF LENGTH(isr_order_list) > 1$
+			$TAB$PRI	saved_ipm;$NL$
+			$NL$
+			$TAB$i_begin_int($intno$);$NL$
+			$TAB$saved_ipm = i_get_ipm();$NL$
+		$ELSE$
+			$TAB$i_begin_int($intno$);$NL$
+		$END$
+$		// ISRðDæxÉÄÑo·
+		$JOINEACH order SORT(isr_order_list, "ISR.ISRPRI") "\tif (i_sense_lock()) {\n\t\ti_unlock_cpu();\n\t}\n\ti_set_ipm(saved_ipm);\n"$
+			$TAB$LOG_ISR_ENTER($intno$);$NL$
+			$TAB$((ISR)($ISR.ISR[order]$))((intptr_t)($ISR.EXINF[order]$));$NL$
+			$TAB$LOG_ISR_LEAVE($intno$);$NL$
+		$END$
+		$TAB$i_end_int($intno$);$NL$
+		}$NL$
+	$END$
+$END$
+$NL$
+
+$ 
+$  ÝÇ@\Ì½ßÌWIÈú»îñÌ¶¬
+$ 
+$ ÝnhÌú»ÉKvÈîñ
+$IF !OMIT_INITIALIZE_INTERRUPT || ALT(USE_INHINIB_TABLE,0)$
+
+$ Ýnh
+#define TNUM_INHNO	$LENGTH(INH.ORDER_LIST)$$NL$
+const uint_t _kernel_tnum_inhno = TNUM_INHNO;$NL$
+$NL$
+$FOREACH inhno INH.ORDER_LIST$
+	$IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$
+		INTHDR_ENTRY($INH.INHNO[inhno]$, $+INH.INHNO[inhno]$, $INH.INTHDR[inhno]$)$NL$
+	$END$
+$END$
+$NL$
+
+$ Ýnhú»e[u
+$IF LENGTH(INH.ORDER_LIST)$
+	const INHINIB _kernel_inhinib_table[TNUM_INHNO] = {$NL$
+	$JOINEACH inhno INH.ORDER_LIST ",\n"$
+		$IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$
+			$TAB${ ($INH.INHNO[inhno]$), ($INH.INHATR[inhno]$), (FP)(INT_ENTRY($INH.INHNO[inhno]$, $INH.INTHDR[inhno]$)) }
+		$ELSE$
+			$TAB${ ($INH.INHNO[inhno]$), ($INH.INHATR[inhno]$), (FP)($INH.INTHDR[inhno]$) }
+		$END$
+	$END$$NL$
+	};$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const INHINIB, _kernel_inhinib_table);$NL$
+$END$$NL$
+$END$
+
+$ ÝvCÌú»ÉKvÈîñ
+$IF !OMIT_INITIALIZE_INTERRUPT || ALT(USE_INHINTB_TABLE,0)$
+
+$ ÝvC
+#define TNUM_INTNO	$LENGTH(INT.ORDER_LIST)$$NL$
+const uint_t _kernel_tnum_intno = TNUM_INTNO;$NL$
+$NL$
+
+$ ÝvCú»e[u
+$IF LENGTH(INT.ORDER_LIST)$
+	const INTINIB _kernel_intinib_table[TNUM_INTNO] = {$NL$
+	$JOINEACH intno INT.ORDER_LIST ",\n"$
+		$TAB${ ($INT.INTNO[intno]$), ($INT.INTATR[intno]$), ($INT.INTPRI[intno]$) }
+	$END$$NL$
+	};$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const INTINIB, _kernel_intinib_table);$NL$
+$END$$NL$
+$END$
+
+$ 
+$  CPUáOÇ@\
+$ 
+/*$NL$
+$SPC$*  CPU Exception Management Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ CPUáOnhÉÖ·éG[`FbN
+$i = 0$
+$FOREACH excno EXC.ORDER_LIST$
+$	// excnoªDEF_EXCÉÎ·éCPUáOnhÔÆµÄ³µ­È¢êiE_PARj
+	$IF !LENGTH(FIND(EXCNO_DEFEXC_VALID, EXC.EXCNO[excno]))$
+		$ERROR EXC.TEXT_LINE[excno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "excno", EXC.EXCNO[excno], "DEF_EXC")$$END$
+	$END$
+
+$	// excnoªDEF_EXCÉæÁÄÝèÏÝÌêiE_OBJj
+	$j = 0$
+	$FOREACH excno2 EXC.ORDER_LIST$
+		$IF EXC.EXCNO[excno] == EXC.EXCNO[excno2] && j < i$
+			$ERROR EXC.TEXT_LINE[excno]$E_OBJ: $FORMAT(_("%1% `%2%\' in %3% is duplicated"), "excno", EXC.EXCNO[excno], "DEF_EXC")$$END$
+		$END$
+		$j = j + 1$
+	$END$
+
+$	// excatrªiTA_NULLjÅÈ¢êiE_RSATRj
+	$IF (EXC.EXCATR[excno] & ~TARGET_EXCATR) != 0$
+		$ERROR EXC.TEXT_LINE[excno]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "excatr", EXC.EXCATR[excno], "excno", EXC.EXCNO[excno], "DEF_EXC")$$END$
+	$END$
+	$i = i + 1$
+$END$
+
+$ CPUáOnhÌ½ßÌWIÈú»îñÌ¶¬
+$IF !OMIT_INITIALIZE_EXCEPTION$
+
+$ CPUáOnh
+#define TNUM_EXCNO	$LENGTH(EXC.ORDER_LIST)$$NL$
+const uint_t _kernel_tnum_excno = TNUM_EXCNO;$NL$
+$NL$
+$FOREACH excno EXC.ORDER_LIST$
+	EXCHDR_ENTRY($EXC.EXCNO[excno]$, $+EXC.EXCNO[excno]$, $EXC.EXCHDR[excno]$)$NL$
+$END$
+$NL$
+
+$ CPUáOnhú»e[u
+$IF LENGTH(EXC.ORDER_LIST)$
+	const EXCINIB _kernel_excinib_table[TNUM_EXCNO] = {$NL$
+	$JOINEACH excno EXC.ORDER_LIST ",\n"$
+		$TAB${ ($EXC.EXCNO[excno]$), ($EXC.EXCATR[excno]$), (FP)(EXC_ENTRY($EXC.EXCNO[excno]$, $EXC.EXCHDR[excno]$)) }
+	$END$$NL$
+	};$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const EXCINIB, _kernel_excinib_table);$NL$
+$END$$NL$
+$END$
+
+$ 
+$  ñ^XNReLXgpÌX^bNÌæ
+$ 
+/*$NL$
+$SPC$*  Stack Area for Non-task Context$NL$
+$SPC$*/$NL$
+$NL$
+
+$IF !LENGTH(ICS.ORDER_LIST)$
+$	// DEF_ICSªÈ¢êÌftHglÌÝè
+	#ifdef DEFAULT_ISTK$NL$
+	$NL$
+	#define TOPPERS_ISTKSZ		DEFAULT_ISTKSZ$NL$
+	#define TOPPERS_ISTK		DEFAULT_ISTK$NL$
+	$NL$
+	#else /* DEAULT_ISTK */$NL$
+	$NL$
+	static STK_T				_kernel_istack[COUNT_STK_T(DEFAULT_ISTKSZ)];$NL$
+	#define TOPPERS_ISTKSZ		ROUND_STK_T(DEFAULT_ISTKSZ)$NL$
+	#define TOPPERS_ISTK		_kernel_istack$NL$
+	$NL$
+	#endif /* DEAULT_ISTK */$NL$
+$ELSE$
+
+$	// ÃIAPIuDEF_ICSvª¡ éiE_OBJj
+	$IF LENGTH(ICS.ORDER_LIST) > 1$
+		$ERROR$E_OBJ: $FORMAT(_("too many %1%"), "DEF_ICS")$$END$
+	$END$
+
+$ 	// istkszªX^bNÌæÌTCYÆµÄ³µ­È¢êiE_PARj
+	$IF !EQ(ICS.ISTK[1], "NULL") && CHECK_STKSZ_ALIGN
+							&& (ICS.ISTKSZ[1] & (CHECK_STKSZ_ALIGN - 1))$
+		$ERROR ICS.TEXT_LINE[1]$E_PAR: $FORMAT(_("%1% `%2%\' in %3% is not aligned"), "istksz", ICS.ISTKSZ[1], "DEF_ICS")$$END$
+	$END$
+
+	$IF EQ(ICS.ISTK[1], "NULL")$
+$		// X^bNÌæÌ©®t¯
+		static STK_T				_kernel_istack[COUNT_STK_T($ICS.ISTKSZ[1]$)];$NL$
+		#define TOPPERS_ISTKSZ		ROUND_STK_T($ICS.ISTKSZ[1]$)$NL$
+		#define TOPPERS_ISTK		_kernel_istack$NL$
+	$ELSE$
+		#define TOPPERS_ISTKSZ		($ICS.ISTKSZ[1]$)$NL$
+		#define TOPPERS_ISTK		($ICS.ISTK[1]$)$NL$
+	$END$
+$END$
+$NL$
+
+$ ñ^XNReLXgpÌX^bNÌæ
+const SIZE		_kernel_istksz = TOPPERS_ISTKSZ;$NL$
+STK_T *const	_kernel_istk = TOPPERS_ISTK;$NL$
+$NL$
+#ifdef TOPPERS_ISTKPT$NL$
+STK_T *const	_kernel_istkpt = TOPPERS_ISTKPT(TOPPERS_ISTK, TOPPERS_ISTKSZ);$NL$
+#endif /* TOPPERS_ISTKPT */$NL$
+$NL$
+
+$ 
+$  ^CCxgÇ
+$ 
+/*$NL$
+$SPC$*  Time Event Management$NL$
+$SPC$*/$NL$
+$NL$
+TMEVTN   _kernel_tmevt_heap[TNUM_TSKID + TNUM_CYCID + TNUM_ALMID];$NL$
+$NL$
+
+$ 
+$  eW
+[Ìú»Ö
+$ 
+/*$NL$
+$SPC$*  Module Initialization Function$NL$
+$SPC$*/$NL$
+$NL$
+void$NL$
+_kernel_initialize_object(void)$NL$
+{$NL$
+$TAB$_kernel_initialize_task();$NL$
+$IF LENGTH(SEM.ID_LIST)$	_kernel_initialize_semaphore();$NL$$END$
+$IF LENGTH(FLG.ID_LIST)$	_kernel_initialize_eventflag();$NL$$END$
+$IF LENGTH(DTQ.ID_LIST)$	_kernel_initialize_dataqueue();$NL$$END$
+$IF LENGTH(PDQ.ID_LIST)$	_kernel_initialize_pridataq();$NL$$END$
+$IF LENGTH(MBX.ID_LIST)$	_kernel_initialize_mailbox();$NL$$END$
+$IF LENGTH(MPF.ID_LIST)$	_kernel_initialize_mempfix();$NL$$END$
+$IF LENGTH(CYC.ID_LIST)$	_kernel_initialize_cyclic();$NL$$END$
+$IF LENGTH(ALM.ID_LIST)$	_kernel_initialize_alarm();$NL$$END$
+#ifdef TOPPERS_SUPPORT_OVRHDR$NL$
+$TAB$_kernel_initialize_overrun();$NL$
+#endif /* TOPPERS_SUPPORT_OVRHDR */$NL$
+$TAB$_kernel_initialize_interrupt();$NL$
+$TAB$_kernel_initialize_exception();$NL$
+}$NL$
+$NL$
+
+$ 
+$  ú»[`ÌÀsÖ
+$ 
+/*$NL$
+$SPC$*  Initialization Routine$NL$
+$SPC$*/$NL$
+$NL$
+void$NL$
+_kernel_call_inirtn(void)$NL$
+{$NL$
+$FOREACH order INI.ORDER_LIST$
+$ 	// iniatrªiTA_NULLjÅÈ¢êiE_RSATRj
+	$IF INI.INIATR[order] != 0$
+		$ERROR INI.TEXT_LINE[order]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "iniatr", INI.INIATR[order], "inirtn", INI.INIRTN[order], "ATT_INI")$$END$
+	$END$
+	$TAB$((INIRTN)($INI.INIRTN[order]$))((intptr_t)($INI.EXINF[order]$));$NL$
+$END$
+}$NL$
+$NL$
+
+$ 
+$  I¹[`ÌÀsÖ
+$ 
+/*$NL$
+$SPC$*  Termination Routine$NL$
+$SPC$*/$NL$
+$NL$
+void$NL$
+_kernel_call_terrtn(void)$NL$
+{$NL$
+$FOREACH rorder TER.RORDER_LIST$
+$ 	// teratrªiTA_NULLjÅÈ¢êiE_RSATRj
+	$IF TER.TERATR[rorder] != 0$
+		$ERROR TER.TEXT_LINE[rorder]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "teratr", TER.TERATR[rorder], "terrtn", TER.TERRTN[rorder], "ATT_TER")$$END$
+	$END$
+	$TAB$((TERRTN)($TER.TERRTN[rorder]$))((intptr_t)($TER.EXINF[rorder]$));$NL$
+$END$
+}$NL$
+$NL$
Index: /asp_ewarm/asp-1.7.0/extension/ovrhdr/kernel/kernel_api.csv
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/ovrhdr/kernel/kernel_api.csv	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/ovrhdr/kernel/kernel_api.csv	(revision 61)
@@ -0,0 +1,18 @@
+tsk,CRE_TSK,#tskid { .tskatr &exinf &task +itskpri .stksz &stk },,
+tsk,DEF_TEX,%tskid { .texatr &texrtn },0,1,
+sem,CRE_SEM,#semid { .sematr .isemcnt .maxsem },,
+flg,CRE_FLG,#flgid { .flgatr .iflgptn },,
+dtq,CRE_DTQ,#dtqid { .dtqatr .dtqcnt &dtqmb },,
+pdq,CRE_PDQ,#pdqid { .pdqatr .pdqcnt +maxdpri &pdqmb },,
+mbx,CRE_MBX,#mbxid { .mbxatr +maxmpri &mprihd },,
+mpf,CRE_MPF,#mpfid { .mpfatr .blkcnt .blksz &mpf &mpfmb },,
+cyc,CRE_CYC,#cycid { .cycatr &exinf &cychdr .cyctim .cycphs },,
+alm,CRE_ALM,#almid { .almatr &exinf &almhdr },,
+ovr,DEF_OVR,{ .ovratr &ovrhdr },-1,
+int,CFG_INT,.intno { .intatr +intpri },,
+isr,ATT_ISR,{ .isratr &exinf .intno &isr +isrpri },-1,
+inh,DEF_INH,.inhno { .inhatr &inthdr },,
+ics,DEF_ICS,{ .istksz &istk },-1,
+exc,DEF_EXC,.excno { .excatr &exchdr },,
+ini,ATT_INI,{ .iniatr &exinf &inirtn },-1,
+ter,ATT_TER,{ .teratr &exinf &terrtn },-1,
Index: /asp_ewarm/asp-1.7.0/extension/ovrhdr/kernel/kernel_int.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/ovrhdr/kernel/kernel_int.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/ovrhdr/kernel/kernel_int.h	(revision 61)
@@ -0,0 +1,81 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: kernel_int.h 1717 2010-01-31 11:41:03Z ertl-hiro $
+ */
+
+/*
+ *		kernel_cfg.ci¨æÑcfg1_out.cjpwb_t@C
+ */
+
+#ifndef TOPPERS_KERNEL_INT_H
+#define TOPPERS_KERNEL_INT_H
+
+/*
+ *  J[lWwb_t@C
+ */
+#include "kernel_impl.h"
+
+/*
+ *  J[lÌewb_t@C
+ */
+#include "task.h"
+#include "semaphore.h"
+#include "eventflag.h"
+#include "dataqueue.h"
+#include "pridataq.h"
+#include "mailbox.h"
+#include "mempfix.h"
+#include "cyclic.h"
+#include "alarm.h"
+#include "overrun.h"
+#include "interrupt.h"
+#include "exception.h"
+#include "time_event.h"
+
+/*
+ *  l[µ½V{ð³Éß·½ßÌwb_t@C
+ */
+#include "kernel_unrename.h"
+
+#endif /* TOPPERS_KERNEL_INT_H */
Index: /asp_ewarm/asp-1.7.0/extension/ovrhdr/kernel/kernel_rename.def
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/ovrhdr/kernel/kernel_rename.def	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/ovrhdr/kernel/kernel_rename.def	(revision 61)
@@ -0,0 +1,143 @@
+# startup.c
+kerflg
+exit_kernel
+
+# task.c
+p_runtsk
+p_schedtsk
+reqflg
+ipmflg
+disdsp
+dspflg
+ready_queue
+ready_primap
+initialize_task
+search_schedtsk
+make_runnable
+make_non_runnable
+make_dormant
+make_active
+change_priority
+rotate_ready_queue
+call_texrtn
+calltex
+
+# wait.c
+make_wait_tmout
+wait_complete
+wait_tmout
+wait_tmout_ok
+wait_release
+wobj_make_wait
+wobj_make_wait_tmout
+init_wait_queue
+
+# time_event.c
+current_time
+min_time
+next_time
+next_subtime
+last_index
+initialize_tmevt
+tmevt_up
+tmevt_down
+tmevtb_insert
+tmevtb_delete
+tmevt_lefttim
+signal_time
+
+# semaphore.c
+initialize_semaphore
+
+# eventflag.c
+initialize_eventflag
+check_flg_cond
+
+# dataqueue.c
+initialize_dataqueue
+enqueue_data
+force_enqueue_data
+dequeue_data
+send_data
+force_send_data
+receive_data
+
+# pridataq.c
+initialize_pridataq
+enqueue_pridata
+dequeue_pridata
+send_pridata
+receive_pridata
+
+# mailbox.c
+initialize_mailbox
+
+# mempfix.c
+initialize_mempfix
+get_mpf_block
+
+# cyclic.c
+initialize_cyclic
+call_cychdr
+
+# alarm.c
+initialize_alarm
+call_almhdr
+
+# overrun.c
+initialize_overrun
+ovrtimer_start
+ovrtimer_stop
+call_ovrhdr
+
+# interrupt.c
+initialize_interrupt
+
+# exception.c
+initialize_exception
+
+# kernel_cfg.c
+initialize_object
+call_inirtn
+call_terrtn
+tmax_tskid
+tinib_table
+torder_table
+tcb_table
+tmax_semid
+seminib_table
+semcb_table
+tmax_flgid
+flginib_table
+flgcb_table
+tmax_dtqid
+dtqcb_table
+dtqinib_table
+tmax_pdqid
+pdqcb_table
+pdqinib_table
+tmax_mbxid
+mbxcb_table
+mbxinib_table
+tmax_mpfid
+mpfinib_table
+mpfcb_table
+tmax_cycid
+cycinib_table
+cyccb_table
+tmax_almid
+alminib_table
+almcb_table
+ovrinib
+tnum_inhno
+inhinib_table
+tnum_intno
+intinib_table
+tnum_excno
+excinib_table
+tmevt_heap
+istksz
+istk
+istkpt
+
+INCLUDE "target"
Index: /asp_ewarm/asp-1.7.0/extension/ovrhdr/kernel/kernel_rename.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/ovrhdr/kernel/kernel_rename.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/ovrhdr/kernel/kernel_rename.h	(revision 61)
@@ -0,0 +1,362 @@
+/* This file is generated from kernel_rename.def by genrename. */
+
+#ifndef TOPPERS_KERNEL_RENAME_H
+#define TOPPERS_KERNEL_RENAME_H
+
+/*
+ *  startup.c
+ */
+#define kerflg						_kernel_kerflg
+#define exit_kernel					_kernel_exit_kernel
+
+/*
+ *  task.c
+ */
+#define p_runtsk					_kernel_p_runtsk
+#define p_schedtsk					_kernel_p_schedtsk
+#define reqflg						_kernel_reqflg
+#define ipmflg						_kernel_ipmflg
+#define disdsp						_kernel_disdsp
+#define dspflg						_kernel_dspflg
+#define ready_queue					_kernel_ready_queue
+#define ready_primap				_kernel_ready_primap
+#define initialize_task				_kernel_initialize_task
+#define search_schedtsk				_kernel_search_schedtsk
+#define make_runnable				_kernel_make_runnable
+#define make_non_runnable			_kernel_make_non_runnable
+#define make_dormant				_kernel_make_dormant
+#define make_active					_kernel_make_active
+#define change_priority				_kernel_change_priority
+#define rotate_ready_queue			_kernel_rotate_ready_queue
+#define call_texrtn					_kernel_call_texrtn
+#define calltex						_kernel_calltex
+
+/*
+ *  wait.c
+ */
+#define make_wait_tmout				_kernel_make_wait_tmout
+#define wait_complete				_kernel_wait_complete
+#define wait_tmout					_kernel_wait_tmout
+#define wait_tmout_ok				_kernel_wait_tmout_ok
+#define wait_release				_kernel_wait_release
+#define wobj_make_wait				_kernel_wobj_make_wait
+#define wobj_make_wait_tmout		_kernel_wobj_make_wait_tmout
+#define init_wait_queue				_kernel_init_wait_queue
+
+/*
+ *  time_event.c
+ */
+#define current_time				_kernel_current_time
+#define min_time					_kernel_min_time
+#define next_time					_kernel_next_time
+#define next_subtime				_kernel_next_subtime
+#define last_index					_kernel_last_index
+#define initialize_tmevt			_kernel_initialize_tmevt
+#define tmevt_up					_kernel_tmevt_up
+#define tmevt_down					_kernel_tmevt_down
+#define tmevtb_insert				_kernel_tmevtb_insert
+#define tmevtb_delete				_kernel_tmevtb_delete
+#define tmevt_lefttim				_kernel_tmevt_lefttim
+#define signal_time					_kernel_signal_time
+
+/*
+ *  semaphore.c
+ */
+#define initialize_semaphore		_kernel_initialize_semaphore
+
+/*
+ *  eventflag.c
+ */
+#define initialize_eventflag		_kernel_initialize_eventflag
+#define check_flg_cond				_kernel_check_flg_cond
+
+/*
+ *  dataqueue.c
+ */
+#define initialize_dataqueue		_kernel_initialize_dataqueue
+#define enqueue_data				_kernel_enqueue_data
+#define force_enqueue_data			_kernel_force_enqueue_data
+#define dequeue_data				_kernel_dequeue_data
+#define send_data					_kernel_send_data
+#define force_send_data				_kernel_force_send_data
+#define receive_data				_kernel_receive_data
+
+/*
+ *  pridataq.c
+ */
+#define initialize_pridataq			_kernel_initialize_pridataq
+#define enqueue_pridata				_kernel_enqueue_pridata
+#define dequeue_pridata				_kernel_dequeue_pridata
+#define send_pridata				_kernel_send_pridata
+#define receive_pridata				_kernel_receive_pridata
+
+/*
+ *  mailbox.c
+ */
+#define initialize_mailbox			_kernel_initialize_mailbox
+
+/*
+ *  mempfix.c
+ */
+#define initialize_mempfix			_kernel_initialize_mempfix
+#define get_mpf_block				_kernel_get_mpf_block
+
+/*
+ *  cyclic.c
+ */
+#define initialize_cyclic			_kernel_initialize_cyclic
+#define call_cychdr					_kernel_call_cychdr
+
+/*
+ *  alarm.c
+ */
+#define initialize_alarm			_kernel_initialize_alarm
+#define call_almhdr					_kernel_call_almhdr
+
+/*
+ *  overrun.c
+ */
+#define initialize_overrun			_kernel_initialize_overrun
+#define ovrtimer_start				_kernel_ovrtimer_start
+#define ovrtimer_stop				_kernel_ovrtimer_stop
+#define call_ovrhdr					_kernel_call_ovrhdr
+
+/*
+ *  interrupt.c
+ */
+#define initialize_interrupt		_kernel_initialize_interrupt
+
+/*
+ *  exception.c
+ */
+#define initialize_exception		_kernel_initialize_exception
+
+/*
+ *  kernel_cfg.c
+ */
+#define initialize_object			_kernel_initialize_object
+#define call_inirtn					_kernel_call_inirtn
+#define call_terrtn					_kernel_call_terrtn
+#define tmax_tskid					_kernel_tmax_tskid
+#define tinib_table					_kernel_tinib_table
+#define torder_table				_kernel_torder_table
+#define tcb_table					_kernel_tcb_table
+#define tmax_semid					_kernel_tmax_semid
+#define seminib_table				_kernel_seminib_table
+#define semcb_table					_kernel_semcb_table
+#define tmax_flgid					_kernel_tmax_flgid
+#define flginib_table				_kernel_flginib_table
+#define flgcb_table					_kernel_flgcb_table
+#define tmax_dtqid					_kernel_tmax_dtqid
+#define dtqcb_table					_kernel_dtqcb_table
+#define dtqinib_table				_kernel_dtqinib_table
+#define tmax_pdqid					_kernel_tmax_pdqid
+#define pdqcb_table					_kernel_pdqcb_table
+#define pdqinib_table				_kernel_pdqinib_table
+#define tmax_mbxid					_kernel_tmax_mbxid
+#define mbxcb_table					_kernel_mbxcb_table
+#define mbxinib_table				_kernel_mbxinib_table
+#define tmax_mpfid					_kernel_tmax_mpfid
+#define mpfinib_table				_kernel_mpfinib_table
+#define mpfcb_table					_kernel_mpfcb_table
+#define tmax_cycid					_kernel_tmax_cycid
+#define cycinib_table				_kernel_cycinib_table
+#define cyccb_table					_kernel_cyccb_table
+#define tmax_almid					_kernel_tmax_almid
+#define alminib_table				_kernel_alminib_table
+#define almcb_table					_kernel_almcb_table
+#define ovrinib						_kernel_ovrinib
+#define tnum_inhno					_kernel_tnum_inhno
+#define inhinib_table				_kernel_inhinib_table
+#define tnum_intno					_kernel_tnum_intno
+#define intinib_table				_kernel_intinib_table
+#define tnum_excno					_kernel_tnum_excno
+#define excinib_table				_kernel_excinib_table
+#define tmevt_heap					_kernel_tmevt_heap
+#define istksz						_kernel_istksz
+#define istk						_kernel_istk
+#define istkpt						_kernel_istkpt
+
+
+#ifdef TOPPERS_LABEL_ASM
+
+/*
+ *  startup.c
+ */
+#define _kerflg						__kernel_kerflg
+#define _exit_kernel				__kernel_exit_kernel
+
+/*
+ *  task.c
+ */
+#define _p_runtsk					__kernel_p_runtsk
+#define _p_schedtsk					__kernel_p_schedtsk
+#define _reqflg						__kernel_reqflg
+#define _ipmflg						__kernel_ipmflg
+#define _disdsp						__kernel_disdsp
+#define _dspflg						__kernel_dspflg
+#define _ready_queue				__kernel_ready_queue
+#define _ready_primap				__kernel_ready_primap
+#define _initialize_task			__kernel_initialize_task
+#define _search_schedtsk			__kernel_search_schedtsk
+#define _make_runnable				__kernel_make_runnable
+#define _make_non_runnable			__kernel_make_non_runnable
+#define _make_dormant				__kernel_make_dormant
+#define _make_active				__kernel_make_active
+#define _change_priority			__kernel_change_priority
+#define _rotate_ready_queue			__kernel_rotate_ready_queue
+#define _call_texrtn				__kernel_call_texrtn
+#define _calltex					__kernel_calltex
+
+/*
+ *  wait.c
+ */
+#define _make_wait_tmout			__kernel_make_wait_tmout
+#define _wait_complete				__kernel_wait_complete
+#define _wait_tmout					__kernel_wait_tmout
+#define _wait_tmout_ok				__kernel_wait_tmout_ok
+#define _wait_release				__kernel_wait_release
+#define _wobj_make_wait				__kernel_wobj_make_wait
+#define _wobj_make_wait_tmout		__kernel_wobj_make_wait_tmout
+#define _init_wait_queue			__kernel_init_wait_queue
+
+/*
+ *  time_event.c
+ */
+#define _current_time				__kernel_current_time
+#define _min_time					__kernel_min_time
+#define _next_time					__kernel_next_time
+#define _next_subtime				__kernel_next_subtime
+#define _last_index					__kernel_last_index
+#define _initialize_tmevt			__kernel_initialize_tmevt
+#define _tmevt_up					__kernel_tmevt_up
+#define _tmevt_down					__kernel_tmevt_down
+#define _tmevtb_insert				__kernel_tmevtb_insert
+#define _tmevtb_delete				__kernel_tmevtb_delete
+#define _tmevt_lefttim				__kernel_tmevt_lefttim
+#define _signal_time				__kernel_signal_time
+
+/*
+ *  semaphore.c
+ */
+#define _initialize_semaphore		__kernel_initialize_semaphore
+
+/*
+ *  eventflag.c
+ */
+#define _initialize_eventflag		__kernel_initialize_eventflag
+#define _check_flg_cond				__kernel_check_flg_cond
+
+/*
+ *  dataqueue.c
+ */
+#define _initialize_dataqueue		__kernel_initialize_dataqueue
+#define _enqueue_data				__kernel_enqueue_data
+#define _force_enqueue_data			__kernel_force_enqueue_data
+#define _dequeue_data				__kernel_dequeue_data
+#define _send_data					__kernel_send_data
+#define _force_send_data			__kernel_force_send_data
+#define _receive_data				__kernel_receive_data
+
+/*
+ *  pridataq.c
+ */
+#define _initialize_pridataq		__kernel_initialize_pridataq
+#define _enqueue_pridata			__kernel_enqueue_pridata
+#define _dequeue_pridata			__kernel_dequeue_pridata
+#define _send_pridata				__kernel_send_pridata
+#define _receive_pridata			__kernel_receive_pridata
+
+/*
+ *  mailbox.c
+ */
+#define _initialize_mailbox			__kernel_initialize_mailbox
+
+/*
+ *  mempfix.c
+ */
+#define _initialize_mempfix			__kernel_initialize_mempfix
+#define _get_mpf_block				__kernel_get_mpf_block
+
+/*
+ *  cyclic.c
+ */
+#define _initialize_cyclic			__kernel_initialize_cyclic
+#define _call_cychdr				__kernel_call_cychdr
+
+/*
+ *  alarm.c
+ */
+#define _initialize_alarm			__kernel_initialize_alarm
+#define _call_almhdr				__kernel_call_almhdr
+
+/*
+ *  overrun.c
+ */
+#define _initialize_overrun			__kernel_initialize_overrun
+#define _ovrtimer_start				__kernel_ovrtimer_start
+#define _ovrtimer_stop				__kernel_ovrtimer_stop
+#define _call_ovrhdr				__kernel_call_ovrhdr
+
+/*
+ *  interrupt.c
+ */
+#define _initialize_interrupt		__kernel_initialize_interrupt
+
+/*
+ *  exception.c
+ */
+#define _initialize_exception		__kernel_initialize_exception
+
+/*
+ *  kernel_cfg.c
+ */
+#define _initialize_object			__kernel_initialize_object
+#define _call_inirtn				__kernel_call_inirtn
+#define _call_terrtn				__kernel_call_terrtn
+#define _tmax_tskid					__kernel_tmax_tskid
+#define _tinib_table				__kernel_tinib_table
+#define _torder_table				__kernel_torder_table
+#define _tcb_table					__kernel_tcb_table
+#define _tmax_semid					__kernel_tmax_semid
+#define _seminib_table				__kernel_seminib_table
+#define _semcb_table				__kernel_semcb_table
+#define _tmax_flgid					__kernel_tmax_flgid
+#define _flginib_table				__kernel_flginib_table
+#define _flgcb_table				__kernel_flgcb_table
+#define _tmax_dtqid					__kernel_tmax_dtqid
+#define _dtqcb_table				__kernel_dtqcb_table
+#define _dtqinib_table				__kernel_dtqinib_table
+#define _tmax_pdqid					__kernel_tmax_pdqid
+#define _pdqcb_table				__kernel_pdqcb_table
+#define _pdqinib_table				__kernel_pdqinib_table
+#define _tmax_mbxid					__kernel_tmax_mbxid
+#define _mbxcb_table				__kernel_mbxcb_table
+#define _mbxinib_table				__kernel_mbxinib_table
+#define _tmax_mpfid					__kernel_tmax_mpfid
+#define _mpfinib_table				__kernel_mpfinib_table
+#define _mpfcb_table				__kernel_mpfcb_table
+#define _tmax_cycid					__kernel_tmax_cycid
+#define _cycinib_table				__kernel_cycinib_table
+#define _cyccb_table				__kernel_cyccb_table
+#define _tmax_almid					__kernel_tmax_almid
+#define _alminib_table				__kernel_alminib_table
+#define _almcb_table				__kernel_almcb_table
+#define _ovrinib					__kernel_ovrinib
+#define _tnum_inhno					__kernel_tnum_inhno
+#define _inhinib_table				__kernel_inhinib_table
+#define _tnum_intno					__kernel_tnum_intno
+#define _intinib_table				__kernel_intinib_table
+#define _tnum_excno					__kernel_tnum_excno
+#define _excinib_table				__kernel_excinib_table
+#define _tmevt_heap					__kernel_tmevt_heap
+#define _istksz						__kernel_istksz
+#define _istk						__kernel_istk
+#define _istkpt						__kernel_istkpt
+
+
+#endif /* TOPPERS_LABEL_ASM */
+
+#include "target_rename.h"
+
+#endif /* TOPPERS_KERNEL_RENAME_H */
Index: /asp_ewarm/asp-1.7.0/extension/ovrhdr/kernel/kernel_unrename.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/ovrhdr/kernel/kernel_unrename.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/ovrhdr/kernel/kernel_unrename.h	(revision 61)
@@ -0,0 +1,363 @@
+/* This file is generated from kernel_rename.def by genrename. */
+
+/* This file is included only when kernel_rename.h has been included. */
+#ifdef TOPPERS_KERNEL_RENAME_H
+#undef TOPPERS_KERNEL_RENAME_H
+
+/*
+ *  startup.c
+ */
+#undef kerflg
+#undef exit_kernel
+
+/*
+ *  task.c
+ */
+#undef p_runtsk
+#undef p_schedtsk
+#undef reqflg
+#undef ipmflg
+#undef disdsp
+#undef dspflg
+#undef ready_queue
+#undef ready_primap
+#undef initialize_task
+#undef search_schedtsk
+#undef make_runnable
+#undef make_non_runnable
+#undef make_dormant
+#undef make_active
+#undef change_priority
+#undef rotate_ready_queue
+#undef call_texrtn
+#undef calltex
+
+/*
+ *  wait.c
+ */
+#undef make_wait_tmout
+#undef wait_complete
+#undef wait_tmout
+#undef wait_tmout_ok
+#undef wait_release
+#undef wobj_make_wait
+#undef wobj_make_wait_tmout
+#undef init_wait_queue
+
+/*
+ *  time_event.c
+ */
+#undef current_time
+#undef min_time
+#undef next_time
+#undef next_subtime
+#undef last_index
+#undef initialize_tmevt
+#undef tmevt_up
+#undef tmevt_down
+#undef tmevtb_insert
+#undef tmevtb_delete
+#undef tmevt_lefttim
+#undef signal_time
+
+/*
+ *  semaphore.c
+ */
+#undef initialize_semaphore
+
+/*
+ *  eventflag.c
+ */
+#undef initialize_eventflag
+#undef check_flg_cond
+
+/*
+ *  dataqueue.c
+ */
+#undef initialize_dataqueue
+#undef enqueue_data
+#undef force_enqueue_data
+#undef dequeue_data
+#undef send_data
+#undef force_send_data
+#undef receive_data
+
+/*
+ *  pridataq.c
+ */
+#undef initialize_pridataq
+#undef enqueue_pridata
+#undef dequeue_pridata
+#undef send_pridata
+#undef receive_pridata
+
+/*
+ *  mailbox.c
+ */
+#undef initialize_mailbox
+
+/*
+ *  mempfix.c
+ */
+#undef initialize_mempfix
+#undef get_mpf_block
+
+/*
+ *  cyclic.c
+ */
+#undef initialize_cyclic
+#undef call_cychdr
+
+/*
+ *  alarm.c
+ */
+#undef initialize_alarm
+#undef call_almhdr
+
+/*
+ *  overrun.c
+ */
+#undef initialize_overrun
+#undef ovrtimer_start
+#undef ovrtimer_stop
+#undef call_ovrhdr
+
+/*
+ *  interrupt.c
+ */
+#undef initialize_interrupt
+
+/*
+ *  exception.c
+ */
+#undef initialize_exception
+
+/*
+ *  kernel_cfg.c
+ */
+#undef initialize_object
+#undef call_inirtn
+#undef call_terrtn
+#undef tmax_tskid
+#undef tinib_table
+#undef torder_table
+#undef tcb_table
+#undef tmax_semid
+#undef seminib_table
+#undef semcb_table
+#undef tmax_flgid
+#undef flginib_table
+#undef flgcb_table
+#undef tmax_dtqid
+#undef dtqcb_table
+#undef dtqinib_table
+#undef tmax_pdqid
+#undef pdqcb_table
+#undef pdqinib_table
+#undef tmax_mbxid
+#undef mbxcb_table
+#undef mbxinib_table
+#undef tmax_mpfid
+#undef mpfinib_table
+#undef mpfcb_table
+#undef tmax_cycid
+#undef cycinib_table
+#undef cyccb_table
+#undef tmax_almid
+#undef alminib_table
+#undef almcb_table
+#undef ovrinib
+#undef tnum_inhno
+#undef inhinib_table
+#undef tnum_intno
+#undef intinib_table
+#undef tnum_excno
+#undef excinib_table
+#undef tmevt_heap
+#undef istksz
+#undef istk
+#undef istkpt
+
+
+#ifdef TOPPERS_LABEL_ASM
+
+/*
+ *  startup.c
+ */
+#undef _kerflg
+#undef _exit_kernel
+
+/*
+ *  task.c
+ */
+#undef _p_runtsk
+#undef _p_schedtsk
+#undef _reqflg
+#undef _ipmflg
+#undef _disdsp
+#undef _dspflg
+#undef _ready_queue
+#undef _ready_primap
+#undef _initialize_task
+#undef _search_schedtsk
+#undef _make_runnable
+#undef _make_non_runnable
+#undef _make_dormant
+#undef _make_active
+#undef _change_priority
+#undef _rotate_ready_queue
+#undef _call_texrtn
+#undef _calltex
+
+/*
+ *  wait.c
+ */
+#undef _make_wait_tmout
+#undef _wait_complete
+#undef _wait_tmout
+#undef _wait_tmout_ok
+#undef _wait_release
+#undef _wobj_make_wait
+#undef _wobj_make_wait_tmout
+#undef _init_wait_queue
+
+/*
+ *  time_event.c
+ */
+#undef _current_time
+#undef _min_time
+#undef _next_time
+#undef _next_subtime
+#undef _last_index
+#undef _initialize_tmevt
+#undef _tmevt_up
+#undef _tmevt_down
+#undef _tmevtb_insert
+#undef _tmevtb_delete
+#undef _tmevt_lefttim
+#undef _signal_time
+
+/*
+ *  semaphore.c
+ */
+#undef _initialize_semaphore
+
+/*
+ *  eventflag.c
+ */
+#undef _initialize_eventflag
+#undef _check_flg_cond
+
+/*
+ *  dataqueue.c
+ */
+#undef _initialize_dataqueue
+#undef _enqueue_data
+#undef _force_enqueue_data
+#undef _dequeue_data
+#undef _send_data
+#undef _force_send_data
+#undef _receive_data
+
+/*
+ *  pridataq.c
+ */
+#undef _initialize_pridataq
+#undef _enqueue_pridata
+#undef _dequeue_pridata
+#undef _send_pridata
+#undef _receive_pridata
+
+/*
+ *  mailbox.c
+ */
+#undef _initialize_mailbox
+
+/*
+ *  mempfix.c
+ */
+#undef _initialize_mempfix
+#undef _get_mpf_block
+
+/*
+ *  cyclic.c
+ */
+#undef _initialize_cyclic
+#undef _call_cychdr
+
+/*
+ *  alarm.c
+ */
+#undef _initialize_alarm
+#undef _call_almhdr
+
+/*
+ *  overrun.c
+ */
+#undef _initialize_overrun
+#undef _ovrtimer_start
+#undef _ovrtimer_stop
+#undef _call_ovrhdr
+
+/*
+ *  interrupt.c
+ */
+#undef _initialize_interrupt
+
+/*
+ *  exception.c
+ */
+#undef _initialize_exception
+
+/*
+ *  kernel_cfg.c
+ */
+#undef _initialize_object
+#undef _call_inirtn
+#undef _call_terrtn
+#undef _tmax_tskid
+#undef _tinib_table
+#undef _torder_table
+#undef _tcb_table
+#undef _tmax_semid
+#undef _seminib_table
+#undef _semcb_table
+#undef _tmax_flgid
+#undef _flginib_table
+#undef _flgcb_table
+#undef _tmax_dtqid
+#undef _dtqcb_table
+#undef _dtqinib_table
+#undef _tmax_pdqid
+#undef _pdqcb_table
+#undef _pdqinib_table
+#undef _tmax_mbxid
+#undef _mbxcb_table
+#undef _mbxinib_table
+#undef _tmax_mpfid
+#undef _mpfinib_table
+#undef _mpfcb_table
+#undef _tmax_cycid
+#undef _cycinib_table
+#undef _cyccb_table
+#undef _tmax_almid
+#undef _alminib_table
+#undef _almcb_table
+#undef _ovrinib
+#undef _tnum_inhno
+#undef _inhinib_table
+#undef _tnum_intno
+#undef _intinib_table
+#undef _tnum_excno
+#undef _excinib_table
+#undef _tmevt_heap
+#undef _istksz
+#undef _istk
+#undef _istkpt
+
+
+#endif /* TOPPERS_LABEL_ASM */
+
+#include "target_unrename.h"
+
+#endif /* TOPPERS_KERNEL_RENAME_H */
Index: /asp_ewarm/asp-1.7.0/extension/ovrhdr/kernel/overrun.c
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/ovrhdr/kernel/overrun.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/ovrhdr/kernel/overrun.c	(revision 61)
@@ -0,0 +1,362 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2005-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: overrun.c 1902 2010-08-17 22:38:52Z ertl-hiro $
+ */
+
+/*
+ *		I[onh@\
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "overrun.h"
+
+#ifdef TOPPERS_SUPPORT_OVRHDR
+#include "target_timer.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_OVR_ENTER
+#define LOG_OVR_ENTER(p_runtsk)
+#endif /* LOG_OVR_ENTER */
+
+#ifndef LOG_OVR_LEAVE
+#define LOG_OVR_LEAVE(p_runtsk)
+#endif /* LOG_OVR_LEAVE */
+
+#ifndef LOG_STA_OVR_ENTER
+#define LOG_STA_OVR_ENTER(tskid, ovrtim)
+#endif /* LOG_STA_OVR_ENTER */
+
+#ifndef LOG_STA_OVR_LEAVE
+#define LOG_STA_OVR_LEAVE(ercd)
+#endif /* LOG_STA_OVR_LEAVE */
+
+#ifndef LOG_ISTA_OVR_ENTER
+#define LOG_ISTA_OVR_ENTER(tskid, ovrtim)
+#endif /* LOG_ISTA_OVR_ENTER */
+
+#ifndef LOG_ISTA_OVR_LEAVE
+#define LOG_ISTA_OVR_LEAVE(ercd)
+#endif /* LOG_ISTA_OVR_LEAVE */
+
+#ifndef LOG_ISTP_OVR_ENTER
+#define LOG_ISTP_OVR_ENTER(tskid)
+#endif /* LOG_ISTP_OVR_ENTER */
+
+#ifndef LOG_ISTP_OVR_LEAVE
+#define LOG_ISTP_OVR_LEAVE(ercd)
+#endif /* LOG_ISTP_OVR_LEAVE */
+
+#ifndef LOG_STP_OVR_ENTER
+#define LOG_STP_OVR_ENTER(tskid)
+#endif /* LOG_STP_OVR_ENTER */
+
+#ifndef LOG_STP_OVR_LEAVE
+#define LOG_STP_OVR_LEAVE(ercd)
+#endif /* LOG_STP_OVR_LEAVE */
+
+#ifndef LOG_REF_OVR_ENTER
+#define LOG_REF_OVR_ENTER(tskid, pk_rovr)
+#endif /* LOG_REF_OVR_ENTER */
+
+#ifndef LOG_REF_OVR_LEAVE
+#define LOG_REF_OVR_LEAVE(ercd, pk_rovr)
+#endif /* LOG_REF_OVR_LEAVE */
+
+#ifdef TOPPERS_ovrini
+
+/*
+ *  I[o^C}ª®ì©ð¦·tO
+ */
+bool_t	ovrtimer_flag;
+
+/*
+ *  I[onh@\Ìú»
+ */
+void
+initialize_overrun(void)
+{
+	ovrtimer_flag = false;
+}
+
+#endif /* TOPPERS_ovrini */
+
+/*
+ *  I[onhp^C}Ì®ìJn
+ */
+#ifdef TOPPERS_ovrsta
+#ifndef OMIT_OVRTIMER_START
+
+void
+ovrtimer_start(void)
+{
+	if (p_runtsk->leftotm > 0U) {
+		target_ovrtimer_start(p_runtsk->leftotm);
+		ovrtimer_flag = true;
+	}
+}
+
+#endif /* OMIT_OVRTIMER_START */
+#endif /* TOPPERS_ovrsta */
+
+/*
+ *  I[onhp^C}Ìâ~
+ */
+#ifdef TOPPERS_ovrstp
+#ifndef OMIT_OVRTIMER_STOP
+
+void
+ovrtimer_stop(void)
+{
+	if (ovrtimer_flag) {
+		assert(p_runtsk->leftotm > 0U);
+		p_runtsk->leftotm = target_ovrtimer_stop();
+		ovrtimer_flag = false;
+	}
+}
+
+#endif /* OMIT_OVRTIMER_STOP */
+#endif /* TOPPERS_ovrstp */
+
+/*
+ *  I[onhÌ®ìJn
+ */
+#ifdef TOPPERS_sta_ovr
+
+ER
+sta_ovr(ID tskid, OVRTIM ovrtim)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_STA_OVR_ENTER(tskid, ovrtim);
+	CHECK_TSKCTX_UNL();
+	CHECK_OBJ(ovrinib.ovrhdr != NULL);
+	CHECK_TSKID_SELF(tskid);
+	CHECK_PAR(0U < ovrtim && ovrtim <= TMAX_OVRTIM);
+	p_tcb = get_tcb_self(tskid);
+
+	t_lock_cpu();
+	if (p_tcb == p_runtsk) {
+		if (p_tcb->leftotm > 0U) {
+			(void) target_ovrtimer_stop();
+		}
+		target_ovrtimer_start(ovrtim);
+		ovrtimer_flag = true;
+	}
+	p_tcb->leftotm = ovrtim;
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_STA_OVR_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_sta_ovr */
+
+/*
+ *  I[onhÌ®ìJniñ^XNReLXgpj
+ */
+#ifdef TOPPERS_ista_ovr
+
+ER
+ista_ovr(ID tskid, OVRTIM ovrtim)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_ISTA_OVR_ENTER(tskid, ovrtim);
+	CHECK_INTCTX_UNL();
+	CHECK_OBJ(ovrinib.ovrhdr != NULL);
+	CHECK_TSKID(tskid);
+	CHECK_PAR(0U < ovrtim && ovrtim <= TMAX_OVRTIM);
+	p_tcb = get_tcb(tskid);
+
+	i_lock_cpu();
+	p_tcb->leftotm = ovrtim;
+	ercd = E_OK;
+	i_unlock_cpu();
+
+  error_exit:
+	LOG_ISTA_OVR_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ista_ovr */
+
+/*
+ *  I[onhÌ®ìâ~
+ */
+#ifdef TOPPERS_stp_ovr
+
+ER
+stp_ovr(ID tskid)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_STP_OVR_ENTER(tskid);
+	CHECK_TSKCTX_UNL();
+	CHECK_OBJ(ovrinib.ovrhdr != NULL);
+	CHECK_TSKID_SELF(tskid);
+	p_tcb = get_tcb_self(tskid);
+
+	t_lock_cpu();
+	if (p_tcb->leftotm > 0U) {
+		if (p_tcb == p_runtsk) {
+			(void) target_ovrtimer_stop();
+			ovrtimer_flag = false;
+		}
+		p_tcb->leftotm = 0U;
+	}
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_STP_OVR_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_stp_ovr */
+
+/*
+ *  I[onhÌ®ìâ~iñ^XNReLXgpj
+ */
+#ifdef TOPPERS_istp_ovr
+
+ER
+istp_ovr(ID tskid)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_ISTP_OVR_ENTER(tskid);
+	CHECK_INTCTX_UNL();
+	CHECK_OBJ(ovrinib.ovrhdr != NULL);
+	CHECK_TSKID(tskid);
+	p_tcb = get_tcb(tskid);
+
+	i_lock_cpu();
+	p_tcb->leftotm = 0U;
+	ercd = E_OK;
+	i_unlock_cpu();
+
+  error_exit:
+	LOG_ISTP_OVR_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_istp_ovr */
+
+/*
+ *  I[onhÌóÔQÆ
+ */
+#ifdef TOPPERS_ref_ovr
+
+ER
+ref_ovr(ID tskid, T_ROVR *pk_rovr)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+    
+	LOG_REF_OVR_ENTER(tskid, pk_rovr);
+	CHECK_TSKCTX_UNL();
+	CHECK_OBJ(ovrinib.ovrhdr != NULL);
+	CHECK_TSKID_SELF(tskid);
+	p_tcb = get_tcb_self(tskid);
+
+	t_lock_cpu();
+	if (p_tcb->leftotm > 0U) {
+		pk_rovr->ovrstat = TOVR_STA;
+		if (p_tcb == p_runtsk) {
+			pk_rovr->leftotm = target_ovrtimer_get_current();
+		}
+		else {
+			pk_rovr->leftotm = p_tcb->leftotm;
+		}
+	}
+	else {
+		pk_rovr->ovrstat = TOVR_STP;
+	}
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_REF_OVR_LEAVE(ercd, pk_rovr);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ref_ovr */
+
+/*
+ *  I[onhN®[`
+ */
+#ifdef TOPPERS_ovrcal
+
+void
+call_ovrhdr(void)
+{
+	PRI		saved_ipm;
+
+	assert(sense_context());
+	assert(!i_sense_lock());
+	assert(ovrinib.ovrhdr != NULL);
+
+	p_runtsk->leftotm = 0U;
+	saved_ipm = i_get_ipm();
+
+	LOG_OVR_ENTER(p_runtsk);
+	(*((OVRHDR)(ovrinib.ovrhdr)))(TSKID(p_runtsk), p_runtsk->p_tinib->exinf);
+	LOG_OVR_LEAVE(p_runtsk);
+
+	if (i_sense_lock()) {
+		i_unlock_cpu();
+	}
+	i_set_ipm(saved_ipm);
+}
+
+#endif /* TOPPERS_ovrcal */
+#endif /* TOPPERS_SUPPORT_OVRHDR */
Index: /asp_ewarm/asp-1.7.0/extension/ovrhdr/kernel/overrun.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/ovrhdr/kernel/overrun.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/ovrhdr/kernel/overrun.h	(revision 61)
@@ -0,0 +1,109 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2005-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: overrun.h 1717 2010-01-31 11:41:03Z ertl-hiro $
+ */
+
+/*
+ *		I[onh@\
+ */
+
+#ifndef TOPPERS_OVERRUN_H
+#define TOPPERS_OVERRUN_H
+
+#ifdef TOPPERS_SUPPORT_OVRHDR
+#include "target_timer.h"
+
+/*
+ *  I[onhú»ubN
+ */
+typedef struct overrun_handler_initialization_block {
+	ATR			ovratr;			/* I[onh®« */
+	OVRHDR		ovrhdr;			/* I[onhÌN®Ôn */
+} OVRINIB;
+
+/*
+ *  I[onhú»ubNÌGAikernel_cfg.cj
+ */
+extern const OVRINIB	ovrinib;
+
+/*
+ *  I[o^C}ª®ì©ð¦·tO
+ */
+extern bool_t	ovrtimer_flag;
+
+/*
+ *  I[onh@\Ìú»
+ */
+extern void	initialize_overrun(void);
+
+/*
+ *  I[onhp^C}Ì®ìJn
+ */
+extern void	ovrtimer_start(void);
+
+/*
+ *  I[onhp^C}Ìâ~
+ */
+#ifndef OMIT_OVRTIMER_STOP
+
+extern void	ovrtimer_stop(void);
+
+#else /* OMIT_OVRTIMER_STOP */
+
+Inline void
+ovrtimer_stop(void)
+{
+	if (p_runtsk->leftotm > 0U) {
+		p_runtsk->leftotm = target_ovrtimer_stop();
+		ovrtimer_flag = false;
+	}
+}
+
+#endif /* OMIT_OVRTIMER_STOP */
+
+/*
+ *  I[onhN®[`
+ */
+extern void	call_ovrhdr(void);
+
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+#endif /* TOPPERS_OVERRUN_H */
Index: /asp_ewarm/asp-1.7.0/extension/ovrhdr/kernel/task.c
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/ovrhdr/kernel/task.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/ovrhdr/kernel/task.c	(revision 61)
@@ -0,0 +1,501 @@
+/*
+ *  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-2011 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  $Id: task.c 2044 2011-03-06 11:48:03Z ertl-hiro $
+ */
+
+/*
+ *		^XNÇW
+[
+ */
+
+#include "kernel_impl.h"
+#include "wait.h"
+#include "task.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_TEX_ENTER
+#define LOG_TEX_ENTER(p_tcb, texptn)
+#endif /* LOG_TEX_ENTER */
+
+#ifndef LOG_TEX_LEAVE
+#define LOG_TEX_LEAVE(p_tcb)
+#endif /* LOG_TEX_LEAVE */
+
+#ifdef TOPPERS_tskini
+
+/*
+ *  ÀsóÔÌ^XN
+ */
+TCB		*p_runtsk;
+
+/*
+ *  ÅDæÊÌ^XN
+ */
+TCB		*p_schedtsk;
+
+/*
+ *  ^XNfBXpb`^^XNáO[`N®vtO
+ */
+bool_t	reqflg;
+
+/*
+ *  ÝDæx}XNSðóÔ
+ */
+bool_t	ipmflg;
+
+/*
+ *  fBXpb`Ö~óÔ
+ */
+bool_t	disdsp;
+
+/*
+ *  ^XNfBXpb`Â\óÔ
+ */
+bool_t	dspflg;
+
+/*
+ *  fBL
+[
+ */
+QUEUE	ready_queue[TNUM_TPRI];
+
+/*
+ *  fBL
+[T[`Ì½ßÌrbg}bv
+ */
+uint16_t	ready_primap;
+
+/*
+ *  ^XNÇW
+[Ìú»
+ */
+void
+initialize_task(void)
+{
+	uint_t	i, j;
+	TCB		*p_tcb;
+
+	p_runtsk = p_schedtsk = NULL;
+	reqflg = false;
+	ipmflg = true;
+	disdsp = false;
+	dspflg = true;
+
+	for (i = 0; i < TNUM_TPRI; i++) {
+		queue_initialize(&(ready_queue[i]));
+	}
+	ready_primap = 0U;
+
+	for (i = 0; i < tnum_tsk; i++) {
+		j = INDEX_TSK(torder_table[i]);
+		p_tcb = &(tcb_table[j]);
+		p_tcb->p_tinib = &(tinib_table[j]);
+		p_tcb->actque = false;
+		make_dormant(p_tcb);
+		if ((p_tcb->p_tinib->tskatr & TA_ACT) != 0U) {
+			make_active(p_tcb);
+		}
+	}
+}
+
+#endif /* TOPPERS_tskini */
+
+/*
+ *  rbg}bvT[`Ö
+ *
+ *  bitmapàÌ1ÌrbgÌàCÅàºÊiEjÌàÌðT[`µC»Ìrb
+ *  gÔðÔ·DrbgÔÍCÅºÊrbgð0Æ·éDbitmapÉ0ðwè
+ *  µÄÍÈçÈ¢D±ÌÖÅÍCbitmapª16rbgÅ é±Æð¼èµC
+ *  uint16_t^ÆµÄ¢éD
+ *
+ *  rbgT[`½ßðÂvZbTÅÍCrbgT[`½ßðg¤æ¤É
+ *  «¼µ½ûªø¦ªÇ¢êª éD±Ìæ¤ÈêÉÍC^[Qbg
+ *  Ë¶ÅrbgT[`½ßðgÁ½bitmap_searchðè`µC
+ *  OMIT_BITMAP_SEARCHð}Nè`·êÎæ¢DÜ½CrbgT[`½ßÌ
+ *  T[`ûüªtÈÇÌRÅDæxÆrbgÆÌÎðÏXµ½¢êÉ
+ *  ÍCPRIMAP_BITð}Nè`·êÎæ¢D
+ *
+ *  Ü½CCuÉffsª éÈçCÌæ¤Éè`µÄCuÖð
+ *  gÁ½ûªø¦ªÇ¢Â\«à éD
+ *		#define	bitmap_search(bitmap) (ffs(bitmap) - 1)
+ */
+#ifndef PRIMAP_BIT
+#define	PRIMAP_BIT(pri)		(1U << (pri))
+#endif /* PRIMAP_BIT */
+
+#ifndef OMIT_BITMAP_SEARCH
+
+static const unsigned char bitmap_search_table[] = { 0, 1, 0, 2, 0, 1, 0,
+												3, 0, 1, 0, 2, 0, 1, 0 };
+
+Inline uint_t
+bitmap_search(uint16_t bitmap)
+{
+	uint_t	n = 0U;
+
+	assert(bitmap != 0U);
+	if ((bitmap & 0x00ffU) == 0U) {
+		bitmap >>= 8;
+		n += 8;
+	}
+	if ((bitmap & 0x0fU) == 0U) {
+		bitmap >>= 4;
+		n += 4;
+	}
+	return(n + bitmap_search_table[(bitmap & 0x0fU) - 1]);
+}
+
+#endif /* OMIT_BITMAP_SEARCH */
+
+/*
+ *  Dæxrbg}bvªó©Ì`FbN
+ */
+Inline bool_t
+primap_empty(void)
+{
+	return(ready_primap == 0U);
+}
+
+/*
+ *  Dæxrbg}bvÌT[`
+ */
+Inline uint_t
+primap_search(void)
+{
+	return(bitmap_search(ready_primap));
+}
+
+/*
+ *  Dæxrbg}bvÌZbg
+ */
+Inline void
+primap_set(uint_t pri)
+{
+	ready_primap |= PRIMAP_BIT(pri);
+}
+
+/*
+ *  Dæxrbg}bvÌNA
+ */
+Inline void
+primap_clear(uint_t pri)
+{
+	ready_primap &= ~PRIMAP_BIT(pri);
+}
+
+/*
+ *  ÅDæÊ^XNÌT[`
+ */
+#ifdef TOPPERS_tsksched
+
+TCB *
+search_schedtsk(void)
+{
+	uint_t	schedpri;
+
+	schedpri = primap_search();
+	return((TCB *)(ready_queue[schedpri].p_next));
+}
+
+#endif /* TOPPERS_tsksched */
+
+/*
+ *  ÀsÅ«éóÔÖÌJÚ
+ *
+ *  ÅDæÊÌ^XNðXV·éÌÍCÀsÅ«é^XNªÈ©Á½ê
+ *  ÆCp_tcbÌDæxªÅDæÊÌ^XNÌDæxæèà¢êÅ 
+ *  éD
+ */
+#ifdef TOPPERS_tskrun
+
+bool_t
+make_runnable(TCB *p_tcb)
+{
+	uint_t	pri = p_tcb->priority;
+
+	queue_insert_prev(&(ready_queue[pri]), &(p_tcb->task_queue));
+	primap_set(pri);
+
+	if (p_schedtsk == (TCB *) NULL || pri < p_schedtsk->priority) {
+		p_schedtsk = p_tcb;
+		return(dspflg);
+	}
+	return(false);
+}
+
+#endif /* TOPPERS_tskrun */
+
+/*
+ *  ÀsÅ«éóÔ©ç¼ÌóÔÖÌJÚ
+ *
+ *  ÅDæÊÌ^XNðXV·éÌÍCp_tcbªÅDæÊÌ^XNÅ
+ *   Á½êÅ éDp_tcbÆ¯¶DæxÌ^XNª¼É éêÍCp_tcb
+ *  ÌÌ^XNªÅDæÊÉÈéD»¤ÅÈ¢êÍCfBL
+[ð
+ *  T[`·éKvª éD
+ */
+#ifdef TOPPERS_tsknrun
+
+bool_t
+make_non_runnable(TCB *p_tcb)
+{
+	uint_t	pri = p_tcb->priority;
+	QUEUE	*p_queue = &(ready_queue[pri]);
+
+	queue_delete(&(p_tcb->task_queue));
+	if (queue_empty(p_queue)) {
+		primap_clear(pri);
+		if (p_schedtsk == p_tcb) {
+			p_schedtsk = primap_empty() ? (TCB *) NULL : search_schedtsk();
+			return(dspflg);
+		}
+	}
+	else {
+		if (p_schedtsk == p_tcb) {
+			p_schedtsk = (TCB *)(p_queue->p_next);
+			return(dspflg);
+		}
+	}
+	return(false);
+}
+
+#endif /* TOPPERS_tsknrun */
+
+/*
+ *  x~óÔÖÌJÚ
+ */
+#ifdef TOPPERS_tskdmt
+
+void
+make_dormant(TCB *p_tcb)
+{
+	p_tcb->tstat = TS_DORMANT;
+	p_tcb->priority = p_tcb->p_tinib->ipriority;
+	p_tcb->wupque = false;
+	p_tcb->enatex = false;
+	p_tcb->texptn = 0U;
+#ifdef TOPPERS_SUPPORT_OVRTIM
+	p_tcb->leftotm = 0U;
+#endif /* TOPPERS_SUPPORT_OVRTIM */
+	LOG_TSKSTAT(p_tcb);
+}
+
+#endif /* TOPPERS_tskdmt */
+
+/*
+ *  x~óÔ©çÀsÅ«éóÔÖÌJÚ
+ */
+#ifdef TOPPERS_tskact
+
+bool_t
+make_active(TCB *p_tcb)
+{
+	activate_context(p_tcb);
+	p_tcb->tstat = TS_RUNNABLE;
+	LOG_TSKSTAT(p_tcb);
+	return(make_runnable(p_tcb));
+}
+
+#endif /* TOPPERS_tskact */
+
+/*
+ *  ^XNÌDæxÌÏX
+ *
+ *  ^XNªÀsÅ«éóÔÌêÉÍCfBL
+[ÌÅÌÊuðÏX·
+ *  éDIuWFNgÌÒ¿L
+[ÌÅÒ¿óÔÉÈÁÄ¢éêÉÍCÒ
+ *  ¿L
+[ÌÅÌÊuðÏX·éD
+ *
+ *  ÅDæÊÌ^XNðXV·éÌÍC(1) p_tcbªÅDæÊÌ^X
+ *  NÅ ÁÄC»ÌDæxðº°½êC(2) p_tcbªÅDæÊÌ^X
+ *  NÅÍÈ­CÏXãÌDæxªÅDæÊÌ^XNÌDæxæèà¢
+ *  êÅ éD(1)ÌêÉÍCfBL
+[ðT[`·éKvª éD
+ */
+#ifdef TOPPERS_tskpri
+
+bool_t
+change_priority(TCB *p_tcb, uint_t newpri)
+{
+	uint_t	oldpri;
+
+	oldpri = p_tcb->priority;
+	p_tcb->priority = newpri;
+
+	if (TSTAT_RUNNABLE(p_tcb->tstat)) {
+		/*
+		 *  ^XNªÀsÅ«éóÔÌê
+		 */
+		queue_delete(&(p_tcb->task_queue));
+		if (queue_empty(&(ready_queue[oldpri]))) {
+			primap_clear(oldpri);
+		}
+		queue_insert_prev(&(ready_queue[newpri]), &(p_tcb->task_queue));
+		primap_set(newpri);
+
+		if (p_schedtsk == p_tcb) {
+			if (newpri >= oldpri) {
+				p_schedtsk = search_schedtsk();
+				return(p_schedtsk != p_tcb && dspflg);
+			}
+		}
+		else {
+			if (newpri < p_schedtsk->priority) {
+				p_schedtsk = p_tcb;
+				return(dspflg);
+			}
+		}
+	}
+	else {
+		if (TSTAT_WAIT_WOBJCB(p_tcb->tstat)) {
+			/*
+			 *  ^XNªC¯úEÊMIuWFNgÌÇubNÌ¤Ê
+			 *  ªiWOBJCBjÌÒ¿L
+[ÉÂÈªêÄ¢éê
+			 */
+			wobj_change_priority(((WINFO_WOBJ *)(p_tcb->p_winfo))->p_wobjcb,
+																	p_tcb);
+		}
+	}
+	return(false);
+}
+
+#endif /* TOPPERS_tskpri */
+
+/*
+ *  fBL
+[Ìñ]
+ *
+ *  ÅDæÊÌ^XNðXV·éÌÍCÅDæÊÌ^XNª^XNL
+ *  
+[ÌöÉÚ®µ½êÅ éD
+ */
+#ifdef TOPPERS_tskrot
+
+bool_t
+rotate_ready_queue(uint_t pri)
+{
+	QUEUE	*p_queue = &(ready_queue[pri]);
+	QUEUE	*p_entry;
+
+	if (!queue_empty(p_queue) && p_queue->p_next->p_next != p_queue) {
+		p_entry = queue_delete_next(p_queue);
+		queue_insert_prev(p_queue, p_entry);
+		if (p_schedtsk == (TCB *) p_entry) {
+			p_schedtsk = (TCB *)(p_queue->p_next);
+			return(dspflg);
+		}
+	}
+	return(false);
+}
+
+#endif /* TOPPERS_tskrot */
+
+/*
+ *  ^XNáO[`ÌÄoµ
+ *
+ *  ASPJ[lÅÍC^XNáO[`àÅCPUbNóÔÉJÚµC
+ *  ³ÌóÔÉß³¸É^[µ½êCJ[lª³ÌóÔÉß·D
+ */
+#ifdef TOPPERS_tsktex
+
+void
+call_texrtn(void)
+{
+	TEXPTN	texptn;
+	bool_t	saved_disdsp;
+
+	saved_disdsp = disdsp;
+	p_runtsk->enatex = false;
+	do {
+		texptn = p_runtsk->texptn;
+		p_runtsk->texptn = 0U;
+
+		t_unlock_cpu();
+		LOG_TEX_ENTER(p_runtsk, texptn);
+		(*((TEXRTN)(p_runtsk->p_tinib->texrtn)))(texptn,
+												p_runtsk->p_tinib->exinf);
+		LOG_TEX_LEAVE(p_runtsk);
+		if (!t_sense_lock()) {
+			t_lock_cpu();
+		}
+		if (!ipmflg) {
+			t_set_ipm(TIPM_ENAALL);
+			ipmflg = true;
+		}
+		disdsp = saved_disdsp;
+		dspflg = !disdsp;
+		p_runtsk->enatex = false;
+		if (p_runtsk != p_schedtsk && dspflg) {
+			/*
+			 *  ±±ÅdispatchðÄÑo·ÍCÝÄAÄoµÉÈÁÄ
+			 *  ¢éªCdispatchðÄÔOÉp_runtsk->enatexðfalseÉµÄ
+			 *  ¨¯ÎxáªÈ¢D»ÌRÉÂ¢ÄÍCuTOPPERS/ASP J[
+			 *  l ÝvvðQÆÌ±ÆD
+			 */
+			dispatch();
+		}
+	} while (p_runtsk->texptn != 0U);
+	p_runtsk->enatex = true;
+}
+
+/*
+ *  ^XNáO[`ÌN®
+ */
+#ifndef OMIT_CALLTEX
+
+void
+calltex(void)
+{
+	if (p_runtsk->enatex && p_runtsk->texptn != 0U && ipmflg) {
+		call_texrtn();
+	}
+}
+
+#endif /* OMIT_CALLTEX */
+#endif /* TOPPERS_tsktex */
Index: /asp_ewarm/asp-1.7.0/extension/ovrhdr/kernel/task.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/ovrhdr/kernel/task.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/ovrhdr/kernel/task.h	(revision 61)
@@ -0,0 +1,523 @@
+/*
+ *  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-2011 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: task.h 2044 2011-03-06 11:48:03Z ertl-hiro $
+ */
+
+/*
+ *		^XNÇW
+[
+ */
+
+#ifndef TOPPERS_TASK_H
+#define TOPPERS_TASK_H
+
+#include <queue.h>
+#include "time_event.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_TSKSTAT
+#define LOG_TSKSTAT(p_tcb)
+#endif /* LOG_TSKSTAT */
+
+/*
+ *  ^XNDæxÌà\»EO\»Ï·}N
+ */
+#define INT_PRIORITY(x)		((uint_t)((x) - TMIN_TPRI))
+#define EXT_TSKPRI(x)		((PRI)(x) + TMIN_TPRI)
+
+/*
+ *  ^XNóÔÌà\»
+ *
+ *  TCBÌ^XNóÔÅÍCÀsóÔiRUNNINGjÆÀsÂ\óÔiREADYj
+ *  ÍæÊµÈ¢D¼óÔðÌµÄCÀsÅ«éóÔiRUNNABLEjÆÄÔD
+ *  ñdÒ¿óÔÍC(TS_WAITING | TS_SUSPENDED)Å\·DTS_WAIT_???ÍÒ
+ *  ¿vöð\µCÒ¿óÔiñdÒ¿óÔðÜÞjÌêÉÌÝÝè·éD
+ */
+#define TS_DORMANT		0x00U			/* x~óÔ */
+#define TS_RUNNABLE		0x01U			/* ÀsÅ«éóÔ */
+#define TS_WAITING		0x02U			/* Ò¿óÔ */
+#define TS_SUSPENDED	0x04U			/* ­§Ò¿óÔ */
+
+#define TS_WAIT_DLY		(0x00U << 3)	/* ÔoßÒ¿ */
+#define TS_WAIT_SLP		(0x01U << 3)	/* N°Ò¿ */
+#define TS_WAIT_RDTQ	(0x02U << 3)	/* f[^L
+[©çÌóMÒ¿ */
+#define TS_WAIT_RPDQ	(0x03U << 3)	/* Dæxf[^L
+[©çÌóMÒ¿ */
+#define TS_WAIT_SEM		(0x04U << 3)	/* Z}tH¹Ìl¾Ò¿ */
+#define TS_WAIT_FLG		(0x05U << 3)	/* CxgtOÒ¿ */
+#define TS_WAIT_SDTQ	(0x06U << 3)	/* f[^L
+[ÖÌMÒ¿ */
+#define TS_WAIT_SPDQ	(0x07U << 3)	/* Dæxf[^L
+[ÖÌMÒ¿ */
+#define TS_WAIT_MBX		(0x08U << 3)	/* [{bNX©çÌóMÒ¿ */
+#define TS_WAIT_MPF		(0x09U << 3)	/* Åè·ubNÌl¾Ò¿ */
+
+/*
+ *  ^XNóÔ»Ê}N
+ *
+ *  TSTAT_DORMANTÍ^XNªx~óÔÅ é©Ç¤©ðCTSTAT_RUNNABLEÍ
+ *  ^XNªÀsÅ«éóÔÅ é©Ç¤©ð»Ê·éDTSTAT_WAITINGÍÒ
+ *  ¿óÔÆñdÒ¿óÔÌ¢¸ê©Å é©Ç¤©ðCTSTAT_SUSPENDEDÍ
+ *  ­§Ò¿óÔÆñdÒ¿óÔÌ¢¸ê©Å é©Ç¤©ð»Ê·éD
+ */
+#define TSTAT_DORMANT(tstat)	((tstat) == TS_DORMANT)
+#define TSTAT_RUNNABLE(tstat)	(((tstat) & TS_RUNNABLE) != 0U)
+#define TSTAT_WAITING(tstat)	(((tstat) & TS_WAITING) != 0U)
+#define TSTAT_SUSPENDED(tstat)	(((tstat) & TS_SUSPENDED) != 0U)
+
+/*
+ *  ^XNÒ¿vö»Ê}N
+ *
+ *  TSTAT_WAIT_SLPÍ^XNªN°Ò¿Å é©Ç¤©ðCTSTAT_WAIT_WOBJ
+ *  Í^XNª¯úEÊMIuWFNgÉÎ·éÒ¿Å é©i¾¢·¦éÆC
+ *  ¯úÊMIuWFNgÌÒ¿L
+[ÉÂÈªêÄ¢é©jÇ¤©ð»Ê·
+ *  éDÜ½CTSTAT_WAIT_WOBJCBÍ^XNª¯úEÊMIuWFNgÌÇ
+ *  ubNÌ¤ÊªiWOBJCBjÌÒ¿L
+[ÉÂÈªêÄ¢é©Ç¤©ð
+ *  »Ê·éD
+ *
+ *  TSTAT_WAIT_SLPÍCCÓÌ^XNóÔÌ©çC^XNªN°Ò¿Å é
+ *  ±Æð»ÊÅ«éD·Èí¿CTSTAT_WAITINGÉæèÒ¿óÔÅ é±Æð
+ *  »Ê¹¸ÉCTSTAT_SLP¾¯ðp¢ÄN°Ò¿óÔÅ é±Æð»ÊÅ«éD
+ *  ±êðø¦IÉÀ»·é½ßÉCTS_WAIT_SLPÌlðC(0x00U << 3)ÅÍÈ
+ *  ­(0x01U << 3)ÆµÄ¢éD»Ì½ßC^XNªÔoßÒ¿óÔÅ é
+ *  ±Æð»Ê·é½ßÌTSTAT_WAIT_DLYðCTSTAT_WAIT_SLPÆ¯lÌû@Å
+ *  À»·é±ÆÍÅ«È¢D
+ */
+#define TS_WAIT_MASK	(0x0fU << 3)	/* Ò¿vöÌæoµ}XN */
+
+#define TSTAT_WAIT_SLP(tstat)		(((tstat) & TS_WAIT_MASK) == TS_WAIT_SLP)
+#define TSTAT_WAIT_WOBJ(tstat)		(((tstat) & TS_WAIT_MASK) >= TS_WAIT_RDTQ)
+#define TSTAT_WAIT_WOBJCB(tstat)	(((tstat) & TS_WAIT_MASK) >= TS_WAIT_SEM)
+
+/*
+ *  Ò¿îñubNiWINFOjÌè`
+ *
+ *  ^XNªÒ¿óÔÌÔÍCTCB¨æÑ»Ìp_winfoÅw³êéWINFOðÌ
+ *  æ¤ÉÝèµÈ¯êÎÈçÈ¢D
+ *
+ *  (a) TCBÌ^XNóÔðÒ¿óÔiTS_WAITINGjÉ·éD»ÌÛÉCÒ¿
+ *  vöiTS_WAIT_???jàÝè·éD
+ *
+ *  (b) ^CAEgðÄ·é½ßÉC^CCxgubNðo^·éD
+ *  o^·é^CCxgubNÍCÒ¿ÉüéT[rXR[Ö
+ *  Ì[JÏÆµÄmÛµC»êÖÌ|C^ðWINFOÌp_tmevtbÉL
+ *  ¯·éD^CAEgÌÄªKvÈ¢êiivÒ¿ÌêjÉÍC
+ *  p_tmevtbðNULLÉ·éD
+ *
+ *  ¯úEÊMIuWFNgÉÎ·éÒ¿óÔÌêÉÍCWÌWINFOÉ
+ *  p_wobjcbtB[hðÇÁµ½\¢ÌiWINFO_WOBJCwait.hÅè`jðg
+ *  ¤DÜ½CÈºÌ(c)`(e)ÌÝèðs¤Kvª éD¯úEÊMIuWF
+ *  NgÉÖWµÈ¢Ò¿iN°Ò¿CÔoßÒ¿jÌêÉÍC(c)`(e)
+ *  ÍKvÈ¢D
+ *
+ *  (c) TCBðÒ¿ÎÛÌ¯úEÊMIuWFNgÌÒ¿L
+[ÉÂÈ®DÒ
+ *  ¿L
+[ÉÂÈ®½ßÉCtask_queueðg¤D
+ *
+ *  (d) Ò¿ÎÛÌ¯úEÊMIuWFNgÌÇubNÖÌ|C^ðC
+ *  WINFO_WOBJÌp_wobjcbÉL¯·éD
+ *
+ *  (e) Ò¿ÎÛÌ¯úEÊMIuWFNgÉË¶µÄL¯·é±ÆªKvÈ
+ *  îñª éêÉÍCWINFO_WOBJÉKvÈîñÌ½ßÌtB[hðÇÁ
+ *  µ½\¢Ìðè`µCWINFO_WOBJÌãíèÉp¢éD
+ *
+ *  Ò¿óÔðð·éÛÉÍCÒ¿ðµ½^XNÉÎ·éÔlðWINFOÌ
+ *  wercdÉÝè·éDwercdªKvÈÌÍÒ¿ðÈ~Å éÌÉÎµÄC
+ *  p_tmevtbÍÒ¿ðãÍKvÈ¢½ßCßñÌ½ßÉ¤pÌðgÁ
+ *  Ä¢éD»Ì½ßCwercdÖG[R[hðÝè·éÌÍC^CCxg
+ *  ubNðo^ðµ½ãÉµÈ¯êÎÈçÈ¢D
+ */
+typedef union waiting_information {
+	ER		wercd;			/* Ò¿ðÌG[R[h */
+	TMEVTB	*p_tmevtb;		/* Ò¿óÔpÌ^CCxgubN */
+} WINFO;
+
+/*
+ *  ^XNú»ubN
+ *
+ *  ^XNÉÖ·éîñðClªÏíçÈ¢½ßÉROMÉu¯éªi^XN
+ *  ú»ubNjÆClªÏ»·é½ßÉRAMÉu©È¯êÎÈçÈ¢
+ *  ªi^XNÇubNCTCBjÉª£µCTCBàÉÎ·é^XNú»
+ *  ubNðw·|C^ðüêéD^XNú»ubNàÉÎ·é
+ *  TCBðw·|C^ðüêéû@ÌûªCRAMÌßñÌÏ_©çÍ]Üµ¢
+ *  ªCÀsø¦ª«­Èé½ßÉÌpµÄ¢È¢D¼ÌIuWFNgÉÂ¢
+ *  Äà¯lÉµ¤D
+ *
+ *  ^XNú»ubNÉÍCDEF_TEXÅè`³êé^XNáO[`
+ *  ÉÖ·éîñàÜÞD
+ */
+typedef struct task_initialization_block {
+	ATR			tskatr;			/* ^XN®« */
+	intptr_t	exinf;			/* ^XNÌg£îñ */
+	TASK		task;			/* ^XNÌN®Ôn */
+	uint_t		ipriority;		/* ^XNÌN®Dæxià\»j */
+
+#ifdef USE_TSKINICTXB
+	TSKINICTXB	tskinictxb;		/* ^XNú»ReLXgubN */
+#else /* USE_TSKINICTXB */
+	SIZE		stksz;			/* X^bNÌæÌTCYiÛß½lj */
+	void		*stk;			/* X^bNÌæÌæªÔn */
+#endif /* USE_TSKINICTXB */
+
+	ATR			texatr;			/* ^XNáO[`®« */
+	TEXRTN		texrtn;			/* ^XNáO[`ÌN®Ôn */
+} TINIB;
+
+/*
+ *  TCBÌtB[hÌrbgÌè`
+ *
+ *  vZbTÉæÁÄÍCTCBÌtB[hÌrbgÅgpÊÆ
+ *  «\ªg[hItÉÈé½ßC^[QbgË¶ÉtB[hÌrbg
+ *  ðÏX·é±ÆðµÄ¢éD
+ */
+#ifndef TBIT_TCB_PRIORITY
+#define	TBIT_TCB_PRIORITY		8		/* prioritytB[hÌrbg */
+#endif /* TBIT_TCB_PRIORITY */
+
+/*
+ *  ^XNÇubNiTCBj
+ *
+ *  ASPJ[lÅÍC^XNÌN®vL
+[COÌÅåliTMAX_ACTCNTj
+ *  ÆN°vL
+[COÌÅåliTMAX_WUPCNTjÍ1ÉÅè³êÄ¢é
+ *  ½ßCL
+[CO³êÄ¢é©Ç¤©Ì^UlÅ\»·é±ÆªÅ«éD
+ *  Ü½C­§Ò¿vlXgÌÅåliTMAX_SUSCNTjª1ÉÅè³êÄ¢
+ *  éÌÅC­§Ò¿vlXgisuscntjÍKvÈ¢D
+ *
+ *  TCBÌ¢­Â©ÌtB[hÍCÁèÌ^XNóÔÅÌÝLøÈlðÛµC
+ *  »êÈOÌêÍlªÛØ³êÈ¢iæÁÄCQÆµÄÍÈçÈ¢jDe
+ *  tB[hªLøÈlðÛ·éðÍÌÊèD
+ *
+ *  Eú»ãÍíÉLøF
+ *  		p_tinibCtstatCactque
+ *  Ex~óÔÈOÅLøix~óÔÅÍúlÉÈÁÄ¢éjF
+ *  		priorityCwupqueCenatexCtexptnCleftotm
+ *  EÒ¿óÔiñdÒ¿óÔðÜÞjÅLøF
+ *  		p_winfo
+ *  EÀsÅ«éóÔÆ¯úEÊMIuWFNgÉÎ·éÒ¿óÔÅLøF
+ *  		task_queue
+ *  EÀsÂ\óÔCÒ¿óÔC­§Ò¿óÔCñdÒ¿óÔÅLøF
+ *  		tskctxb
+ */
+typedef struct task_control_block {
+	QUEUE			task_queue;		/* ^XNL
+[ */
+	const TINIB		*p_tinib;		/* ú»ubNÖÌ|C^ */
+
+#ifdef UINT8_MAX
+	uint8_t			tstat;			/* ^XNóÔià\»j*/
+#else /* UINT8_MAX */
+	BIT_FIELD_UINT	tstat : 8;		/* ^XNóÔià\»j*/
+#endif /* UINT8_MAX */
+#if defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8)
+	uint8_t			priority;		/* »ÝÌDæxià\»j*/
+#else /* defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8) */
+	BIT_FIELD_UINT	priority : TBIT_TCB_PRIORITY;
+									/* »ÝÌDæxià\»j*/
+#endif  /* defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8) */
+	BIT_FIELD_BOOL	actque : 1;		/* N®vL
+[CO */
+	BIT_FIELD_BOOL	wupque : 1;		/* N°vL
+[CO */
+	BIT_FIELD_BOOL	enatex : 1;		/* ^XNáOÂóÔ */
+
+	TEXPTN			texptn;			/* Û¯áOvö */
+	WINFO			*p_winfo;		/* Ò¿îñubNÖÌ|C^ */
+#ifdef TOPPERS_SUPPORT_OVRTIM
+	OVRTIM			leftotm;		/* cèvZbTÔ */
+#endif /* TOPPERS_SUPPORT_OVRTIM */
+	TSKCTXB			tskctxb;		/* ^XNReLXgubN */
+} TCB;
+
+/*
+ *  ÀsóÔÌ^XN
+ *
+ *  ÀsóÔÌ^XNivZbTªReLXgðÁÄ¢é^XNjÌ
+ *  TCBðw·|C^DÀsóÔÌ^XNªÈ¢êÍNULLÉ·éD
+ *
+ *  T[rXR[ÌÅC©^XNiT[rXR[ðÄÑoµ½^X
+ *  NjÉÖ·éîñðQÆ·éêÍp_runtskðg¤Dp_runtskð«·¦
+ *  éÌÍCfBXpb`iÆú»jÌÝÅ éD
+ */
+extern TCB	*p_runtsk;
+
+/*
+ *  ÅDæÊÌ^XN
+ *
+ *  ÀsÅ«é^XNÌÅÅDæÊÌ^XNÌTCBðw·|C^DÀ
+ *  sÅ«é^XNªÈ¢êÍNULLÉ·éD
+ *
+ *  fBXpb`Ö~óÔÈÇCfBXpb`ªÛ¯³êÄ¢éÔÍp_runtsk
+ *  ÆêvµÄ¢éÆÍÀçÈ¢D
+ */
+extern TCB	*p_schedtsk;
+
+/*
+ *  fBXpb`^^XNáO[`N®vtO
+ *
+ *  Ýnh^CPUáOnhÌoûÉCfBXpb`Ü½Í
+ *  ^XNáO[`ÌN®ðv·é±Æð¦·tOD
+ */
+extern bool_t	reqflg;
+
+/*
+ *  ÝDæx}XNSðóÔ
+ *
+ *  ÝDæx}XNSðóÔÅ é±Æð¦·tOD
+ */
+extern bool_t	ipmflg;
+
+/*
+ *  fBXpb`Ö~óÔ
+ *
+ *  fBXpb`Ö~óÔÅ é±Æð¦·tOD
+ */
+extern bool_t	disdsp;
+
+/*
+ *  ^XNfBXpb`Â\óÔ
+ *
+ *  ÝDæx}XNSðóÔÅ èCfBXpb`ÂóÔÅ éifB
+ *  Xpb`Ö~óÔÅÈ¢j±Æð¦·tOD
+ */
+extern bool_t	dspflg;
+
+/*
+ *  fBL
+[
+ *
+ *  fBL
+[ÍCÀsÅ«éóÔÌ^XNðÇ·é½ßÌL
+[Å éD
+ *  ÀsóÔÌ^XNàÇµÄ¢é½ßCfBiÀsÂ\jL
+[Æ¢¤
+ *  ¼ÌÍ³mÅÍÈ¢ªCfBL
+[Æ¢¤¼Ìªè
+µÄ¢é½ßC±
+ *  Ì¼ÌÅÄÔ±ÆÉ·éD
+ *
+ *  fBL
+[ÍCDæx²ÆÌ^XNL
+[Å\¬³êÄ¢éD^XNÌ
+ *  TCBÍCY·éDæxÌL
+[Éo^³êéD
+ */
+extern QUEUE	ready_queue[TNUM_TPRI];
+
+/*
+ *  fBL
+[T[`Ì½ßÌrbg}bv
+ *
+ *  fBL
+[ÌT[`ðø¦æ­s¤½ßÉCDæx²ÆÌ^XNL
+[
+ *  É^XNªüÁÄ¢é©Ç¤©ð¦·rbg}bvðpÓµÄ¢éDrb
+ *  g}bvðg¤±ÆÅCANZXÌñð¸ç·±ÆªÅ«éªC
+ *  rbgì½ßª[ÀµÄ¢È¢vZbTÅCDæxÌiKª­È¢
+ *  êÉÍCrbg}bvìÌI[o[wbhÌ½ßÉCtÉø¦ª¿
+ *  éÂ\«à éD
+ *
+ *  Dæxª16iKÅ é±Æð¼èµÄ¢é½ßCuint16_t^ÆµÄ¢éD
+ */
+extern uint16_t	ready_primap;
+
+/*
+ *  ^XNIDÌÅålikernel_cfg.cj
+ */
+extern const ID	tmax_tskid;
+
+/*
+ *  ^XNú»ubNÌGAikernel_cfg.cj
+ */
+extern const TINIB	tinib_table[];
+
+/*
+ *  ^XN¶¬e[uikernel_cfg.cj
+ */
+extern const ID	torder_table[];
+
+/*
+ *  TCBÌGAikernel_cfg.cj
+ */
+extern TCB	tcb_table[];
+
+/*
+ *  ^XNÌ
+ */
+#define tnum_tsk	((uint_t)(tmax_tskid - TMIN_TSKID + 1))
+
+/*
+ *  ^XNID©çTCBðæèo·½ßÌ}N
+ */
+#define INDEX_TSK(tskid)	((uint_t)((tskid) - TMIN_TSKID))
+#define get_tcb(tskid)		(&(tcb_table[INDEX_TSK(tskid)]))
+#define get_tcb_self(tskid)	((tskid) == TSK_SELF ? p_runtsk : get_tcb(tskid))
+
+/*
+ *  TCB©ç^XNIDðæèo·½ßÌ}N
+ */
+#define	TSKID(p_tcb)	((ID)(((p_tcb) - tcb_table) + TMIN_TSKID))
+
+/*
+ *  ^XNÇW
+[Ìú»
+ */
+extern void	initialize_task(void);
+
+/*
+ *  ÅDæÊ^XNÌT[`
+ *
+ *  fBL
+[ÌÅDæÊÌ^XNðT[`µC»ÌTCBÖÌ|C^
+ *  ðÔ·DfBL
+[ªóÌêÉÍC±ÌÖðÄÑoµÄÍÈçÈ¢D
+ */
+extern TCB	*search_schedtsk(void);
+
+/*
+ *  ÀsÅ«éóÔÖÌJÚ
+ *
+ *  p_tcbÅwè³êé^XNðfBL
+[É}ü·éDfBL
+[É}ü
+ *  µ½^XNÌDæxªCÅDæÊÌ^XNÌDæxæèà¢êÍC
+ *  ÅDæÊÌ^XNðXVµCfBXpb`ÂóÔÅ êÎtrueðÔ
+ *  ·D»¤ÅÈ¢êÍfalseðÔ·D
+ */
+extern bool_t	make_runnable(TCB *p_tcb);
+
+/*
+ *  ÀsÅ«éóÔ©ç¼ÌóÔÖÌJÚ
+ *
+ *  p_tcbÅwè³êé^XNðfBL
+[©çí·éDp_tcbÅwèµ½
+ *  ^XNªÅDæÊÌ^XNÅ Á½êÉÍCÅDæÊÌ^XN
+ *  ðÝèµÈ¨µCfBXpb`ÂóÔÅ êÎtrueðÔ·D»¤ÅÈ¢
+ *  êÍfalseðÔ·D^XNÌóÔÍXVµÈ¢D
+ */
+extern bool_t	make_non_runnable(TCB *p_tcb);
+
+/*
+ *  x~óÔÖÌJÚ
+ *
+ *  p_tcbÅwè³êé^XNÌóÔðx~óÔÆ·éDÜ½C^XNÌN®
+ *  Éú»·×«ÏÌú»ÆC^XNN®Ì½ßÌReLXgðÝ
+ *  è·éD
+ */
+extern void	make_dormant(TCB *p_tcb);
+
+/*
+ *  x~óÔ©çÀsÅ«éóÔÖÌJÚ
+ *
+ *  p_tcbÅwè³êé^XNÌóÔðx~óÔ©çÀsÅ«éóÔÆ·éD
+ *  ÀsÅ«éóÔÉJÚµ½^XNÖÌfBXpb`ªKvÈêÍtrueC
+ *  »¤ÅÈ¢êÍfalseðÔ·D
+ */
+extern bool_t	make_active(TCB *p_tcb);
+
+/*
+ *  ^XNÌDæxÌÏX
+ *
+ *  p_tcbÅwè³êé^XNÌDæxðnewpriià\»jÉÏX·éDÜ½C
+ *  KvÈêÉÍÅDæÊÌ^XNðXVµCfBXpb`ÂóÔÅ
+ *   êÎtrueðÔ·D»¤ÅÈ¢êÍfalseðÔ·D
+ */
+extern bool_t	change_priority(TCB *p_tcb, uint_t newpri);
+
+/*
+ *  fBL
+[Ìñ]
+ *
+ *  fBL
+[ÌCpriÅwè³êéDæxÌ^XNL
+[ðñ]³¹éD
+ *  Ü½CKvÈêÉÍÅDæÊÌ^XNðÏXµCfBXpb`ªÛ
+ *  ¯³êÄ¢È¯êÎtrueðÔ·D»¤ÅÈ¢êÍfalseðÔ·D
+ */
+extern bool_t	rotate_ready_queue(uint_t pri);
+
+/*
+ *  ^XNáO[`ÌÄoµ
+ *
+ *  ^XNáO[`ðÄÑo·DÄÑo·OÉCÀsóÔÌ^XNÌ
+ *  Û¯áOvöðNAµC^XNáOÖ~óÔÉµCCPUbNðð
+ *  ·éD
+ *
+ *  ^XNáO[`©çßéÆCÜ¸CPUbNóÔÉßµC»ÌÔ
+ *  ÉÛ¯áOvöª0ÅÈ­ÈÁÄ¢êÎCÄÑ^XNáO[`ð
+ *  ÄÑo·DÛ¯áOvöª0ÌêÉÍCáOÂóÔÉµÄÖ©
+ *  ç^[·éD
+ *
+ *  ±ÌÖÍCÀsóÔÌ^XNªC^XNáOÂóÔienatexª
+ *  truejÅCÛ¯áOvöª0ÅÈ¢itexptnª0ÅÈ¢jêÉÄÑo·±
+ *  ÆðzèµÄ¢éD±ÌÖÍCCPUbNóÔÅÄÑo³È¯êÎÈç
+ *  È¢D
+ */
+extern void	call_texrtn(void);
+
+/*
+ *  ^XNáO[`ÌN®
+ *
+ *  ÀsóÔÌ^XNª^XNáO[`ÌN®ðð½µÄ¢êÎC
+ *  ^XNáO[`ðÄÑo·DCPUáO[`ðÄÑo·
+ *  ÍCêIÉCPUbNðð·éD
+ *
+ *  ±ÌÖÍCfBXpb`âÝnh^CPUáOnhÌoû
+ *  ©çÄÑo³êé±ÆðzèµÄ¢éD±ÌÖÍCCPUbNóÔ
+ *  ÅÄÑo³È¯êÎÈçÈ¢D
+ *
+ *  Àsø¦ðã°é½ßÉC±ÌÖð^[QbgË¶ÅLqµÄàæ¢D
+ *  »ÌêÉÍCOMIT_CALLTEXð}Nè`·éD
+ */
+extern void	calltex(void);
+
+#endif /* TOPPERS_TASK_H */
Index: /asp_ewarm/asp-1.7.0/extension/ovrhdr/kernel/task_manage.c
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/ovrhdr/kernel/task_manage.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/ovrhdr/kernel/task_manage.c	(revision 61)
@@ -0,0 +1,437 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: task_manage.c 2018 2010-12-31 13:43:05Z ertl-hiro $
+ */
+
+/*
+ *		^XNÇ@\
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+#include "overrun.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_ACT_TSK_ENTER
+#define LOG_ACT_TSK_ENTER(tskid)
+#endif /* LOG_ACT_TSK_ENTER */
+
+#ifndef LOG_ACT_TSK_LEAVE
+#define LOG_ACT_TSK_LEAVE(ercd)
+#endif /* LOG_ACT_TSK_LEAVE */
+
+#ifndef LOG_IACT_TSK_ENTER
+#define LOG_IACT_TSK_ENTER(tskid)
+#endif /* LOG_IACT_TSK_ENTER */
+
+#ifndef LOG_IACT_TSK_LEAVE
+#define LOG_IACT_TSK_LEAVE(ercd)
+#endif /* LOG_IACT_TSK_LEAVE */
+
+#ifndef LOG_CAN_ACT_ENTER
+#define LOG_CAN_ACT_ENTER(tskid)
+#endif /* LOG_CAN_ACT_ENTER */
+
+#ifndef LOG_CAN_ACT_LEAVE
+#define LOG_CAN_ACT_LEAVE(ercd)
+#endif /* LOG_CAN_ACT_LEAVE */
+
+#ifndef LOG_EXT_TSK_ENTER
+#define LOG_EXT_TSK_ENTER()
+#endif /* LOG_EXT_TSK_ENTER */
+
+#ifndef LOG_EXT_TSK_LEAVE
+#define LOG_EXT_TSK_LEAVE(ercd)
+#endif /* LOG_EXT_TSK_LEAVE */
+
+#ifndef LOG_TER_TSK_ENTER
+#define LOG_TER_TSK_ENTER(tskid)
+#endif /* LOG_TER_TSK_ENTER */
+
+#ifndef LOG_TER_TSK_LEAVE
+#define LOG_TER_TSK_LEAVE(ercd)
+#endif /* LOG_TER_TSK_LEAVE */
+
+#ifndef LOG_CHG_PRI_ENTER
+#define LOG_CHG_PRI_ENTER(tskid, tskpri)
+#endif /* LOG_CHG_PRI_ENTER */
+
+#ifndef LOG_CHG_PRI_LEAVE
+#define LOG_CHG_PRI_LEAVE(ercd)
+#endif /* LOG_CHG_PRI_LEAVE */
+
+#ifndef LOG_GET_PRI_ENTER
+#define LOG_GET_PRI_ENTER(tskid, p_tskpri)
+#endif /* LOG_GET_PRI_ENTER */
+
+#ifndef LOG_GET_PRI_LEAVE
+#define LOG_GET_PRI_LEAVE(ercd, tskpri)
+#endif /* LOG_GET_PRI_LEAVE */
+
+#ifndef LOG_GET_INF_ENTER
+#define LOG_GET_INF_ENTER(p_exinf)
+#endif /* LOG_GET_INF_ENTER */
+
+#ifndef LOG_GET_INF_LEAVE
+#define LOG_GET_INF_LEAVE(ercd, exinf)
+#endif /* LOG_GET_INF_LEAVE */
+
+/*
+ *  ^XNÌN®
+ */
+#ifdef TOPPERS_act_tsk
+
+ER
+act_tsk(ID tskid)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_ACT_TSK_ENTER(tskid);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID_SELF(tskid);
+	p_tcb = get_tcb_self(tskid);
+
+	t_lock_cpu();
+	if (TSTAT_DORMANT(p_tcb->tstat)) {
+		if (make_active(p_tcb)) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else if (!(p_tcb->actque)) {
+		p_tcb->actque = true;
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_QOVR;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_ACT_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_act_tsk */
+
+/*
+ *  ^XNÌN®iñ^XNReLXgpj
+ */
+#ifdef TOPPERS_iact_tsk
+
+ER
+iact_tsk(ID tskid)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_IACT_TSK_ENTER(tskid);
+	CHECK_INTCTX_UNL();
+	CHECK_TSKID(tskid);
+	p_tcb = get_tcb(tskid);
+
+	i_lock_cpu();
+	if (TSTAT_DORMANT(p_tcb->tstat)) {
+		if (make_active(p_tcb)) {
+			reqflg = true;
+		}
+		ercd = E_OK;
+	}
+	else if (!(p_tcb->actque)) {
+		p_tcb->actque = true;
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_QOVR;
+	}
+	i_unlock_cpu();
+
+  error_exit:
+	LOG_IACT_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_iact_tsk */
+
+/*
+ *  ^XNN®vÌLZ
+ */
+#ifdef TOPPERS_can_act
+
+ER_UINT
+can_act(ID tskid)
+{
+	TCB		*p_tcb;
+	ER_UINT	ercd;
+
+	LOG_CAN_ACT_ENTER(tskid);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID_SELF(tskid);
+	p_tcb = get_tcb_self(tskid);
+
+	t_lock_cpu();
+	ercd = p_tcb->actque ? 1 : 0;
+	p_tcb->actque = false;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_CAN_ACT_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_can_act */
+
+/*
+ *  ©^XNÌI¹
+ */
+#ifdef TOPPERS_ext_tsk
+
+ER
+ext_tsk(void)
+{
+	ER		ercd;
+
+	LOG_EXT_TSK_ENTER();
+	CHECK_TSKCTX();
+
+	if (t_sense_lock()) {
+		/*
+		 *  CPUbNóÔÅext_tskªÄÎê½êÍCCPUbNððµ
+		 *  Ä©ç^XNðI¹·éDÀãÍCT[rXR[àÅÌCPU
+		 *  bNðÈª·êÎæ¢¾¯D
+		 */
+	}
+	else {
+		t_lock_cpu();
+	}
+	if (disdsp) {
+		/*
+		 *  fBXpb`Ö~óÔÅext_tskªÄÎê½êÍCfBXpb
+		 *  `ÂóÔÉµÄ©ç^XNðI¹·éD
+		 */
+		disdsp = false;
+	}
+	if (!ipmflg) {
+		/*
+		 *  ÝDæx}XNiIPMjªTIPM_ENAALLÈOÌóÔÅext_tsk
+		 *  ªÄÎê½êÍCIPMðTIPM_ENAALLÉµÄ©ç^XNðI¹·
+		 *  éD
+		 */
+		t_set_ipm(TIPM_ENAALL);
+		ipmflg = true;
+	}
+	dspflg = true;
+
+	(void) make_non_runnable(p_runtsk);
+#ifdef TOPPERS_SUPPORT_OVRHDR
+	ovrtimer_stop();
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+	make_dormant(p_runtsk);
+	if (p_runtsk->actque) {
+		p_runtsk->actque = false;
+		(void) make_active(p_runtsk);
+	}
+	exit_and_dispatch();
+	ercd = E_SYS;
+
+  error_exit:
+	LOG_EXT_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ext_tsk */
+
+/*
+ *  ^XNÌ­§I¹
+ */
+#ifdef TOPPERS_ter_tsk
+
+ER
+ter_tsk(ID tskid)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_TER_TSK_ENTER(tskid);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID(tskid);
+	p_tcb = get_tcb(tskid);
+	CHECK_NONSELF(p_tcb);
+
+	t_lock_cpu();
+	if (TSTAT_DORMANT(p_tcb->tstat)) {
+		ercd = E_OBJ;
+	}
+	else {
+		if (TSTAT_RUNNABLE(p_tcb->tstat)) {
+			/*
+			 *  p_tcbÍ©^XNÅÈ¢½ßCiVOvZbTÅÍjÀ
+			 *  sóÔÅÈ­Cmake_non_runnable(p_tcb)Å^XNfBXpb
+			 *  `ªKvÉÈé±ÆÍÈ¢D
+			 */
+			(void) make_non_runnable(p_tcb);
+		}
+		else if (TSTAT_WAITING(p_tcb->tstat)) {
+			wait_dequeue_wobj(p_tcb);
+			wait_dequeue_tmevtb(p_tcb);
+		}
+		make_dormant(p_tcb);
+		if (p_tcb->actque) {
+			p_tcb->actque = false;
+			if (make_active(p_tcb)) {
+				dispatch();
+			}
+		}
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_TER_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ter_tsk */
+
+/*
+ *  ^XNÌx[XDæxÌÏX
+ */
+#ifdef TOPPERS_chg_pri
+
+ER
+chg_pri(ID tskid, PRI tskpri)
+{
+	TCB		*p_tcb;
+	uint_t	newpri;
+	ER		ercd;
+
+	LOG_CHG_PRI_ENTER(tskid, tskpri);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID_SELF(tskid);
+	CHECK_TPRI_INI(tskpri);
+	p_tcb = get_tcb_self(tskid);
+	newpri = (tskpri == TPRI_INI) ? p_tcb->p_tinib->ipriority
+										: INT_PRIORITY(tskpri);
+
+	t_lock_cpu();
+	if (TSTAT_DORMANT(p_tcb->tstat)) {
+		ercd = E_OBJ;
+	}
+	else {
+		if (change_priority(p_tcb, newpri)) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_CHG_PRI_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_chg_pri */
+
+/*
+ *  ^XNDæxÌQÆ
+ */
+#ifdef TOPPERS_get_pri
+
+ER
+get_pri(ID tskid, PRI *p_tskpri)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_GET_PRI_ENTER(tskid, p_tskpri);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID_SELF(tskid);
+	p_tcb = get_tcb_self(tskid);
+
+	t_lock_cpu();
+	if (TSTAT_DORMANT(p_tcb->tstat)) {
+		ercd = E_OBJ;
+	}
+	else {
+		*p_tskpri = EXT_TSKPRI(p_tcb->priority);
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_GET_PRI_LEAVE(ercd, *p_tskpri);
+	return(ercd);
+}
+
+#endif /* TOPPERS_get_pri */
+
+/*
+ *  ©^XNÌg£îñÌQÆ
+ */
+#ifdef TOPPERS_get_inf
+
+ER
+get_inf(intptr_t *p_exinf)
+{
+	ER		ercd;
+
+	LOG_GET_INF_ENTER(p_exinf);
+	CHECK_TSKCTX_UNL();
+
+	t_lock_cpu();
+	*p_exinf = p_runtsk->p_tinib->exinf;
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_GET_INF_LEAVE(ercd, *p_exinf);
+	return(ercd);
+}
+
+#endif /* TOPPERS_get_inf */
Index: /asp_ewarm/asp-1.7.0/extension/ovrhdr/sample/sample1.c
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/ovrhdr/sample/sample1.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/ovrhdr/sample/sample1.c	(revision 61)
@@ -0,0 +1,567 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: sample1.c 1932 2010-09-19 06:57:36Z ertl-hiro $
+ */
+
+/* 
+ *  TvvO(1)Ì{Ì
+ *
+ *  ASPJ[lÌî{IÈ®ìðmF·é½ßÌTvvOD
+ *
+ *  vOÌTv:
+ *
+ *  [UC^tF[Xðó¯ÂC^XNi^XNID: MAIN_TASKCD
+ *  æx: MAIN_PRIORITYjÆC3ÂÌÀñÀs³êé^XNi^XNID:
+ *  TASK1`TASK3CúDæx: MID_PRIORITYjÅ\¬³êéDÜ½CN®ü
+ *  úª2bÌüúnhiüúnhID: CYCHDR1jðp¢éD
+ *
+ *  ÀñÀs³êé^XNÍCtask_loopñó[vðÀs·éxÉC^XNª
+ *  ÀsÅ é±Æð çí·bZ[Wð\¦·éD
+ *
+ *  üúnhÍCOÂÌDæxiHIGH_PRIORITYCMID_PRIORITYC
+ *  LOW_PRIORITYjÌfBL
+[ðñ]³¹éDvOÌN®¼ãÍC
+ *  üúnhÍâ~óÔÉÈÁÄ¢éD
+ *
+ *  C^XNÍCVAI/O|[g©çÌ¶üÍðs¢i¶üÍð
+ *  ÒÁÄ¢éÔÍCÀñÀs³êé^XNªÀs³êÄ¢éjCüÍ³ê½
+ *  ¶ÉÎµ½ðÀs·éDüÍ³ê½¶ÆÌÖWÍÌÊèD
+ *  Control-CÜ½Í'Q'ªüÍ³êéÆCvOðI¹·éD
+ *
+ *  '1' : ÎÛ^XNðTASK1ÉØè·¦éiúÝèjD
+ *  '2' : ÎÛ^XNðTASK2ÉØè·¦éD
+ *  '3' : ÎÛ^XNðTASK3ÉØè·¦éD
+ *  'a' : ÎÛ^XNðact_tskÉæèN®·éD
+ *  'A' : ÎÛ^XNÉÎ·éN®vðcan_actÉæèLZ·éD
+ *  'e' : ÎÛ^XNÉext_tskðÄÑo³¹CI¹³¹éD
+ *  't' : ÎÛ^XNðter_tskÉæè­§I¹·éD
+ *  '>' : ÎÛ^XNÌDæxðHIGH_PRIORITYÉ·éD
+ *  '=' : ÎÛ^XNÌDæxðMID_PRIORITYÉ·éD
+ *  '<' : ÎÛ^XNÌDæxðLOW_PRIORITYÉ·éD
+ *  'G' : ÎÛ^XNÌDæxðget_priÅÇÝo·D
+ *  's' : ÎÛ^XNÉslp_tskðÄÑo³¹CN°Ò¿É³¹éD
+ *  'S' : ÎÛ^XNÉtslp_tsk(10b)ðÄÑo³¹CN°Ò¿É³¹éD
+ *  'w' : ÎÛ^XNðwup_tskÉæèN°·éD
+ *  'W' : ÎÛ^XNÉÎ·éN°vðcan_wupÉæèLZ·éD
+ *  'l' : ÎÛ^XNðrel_waiÉæè­§IÉÒ¿ðÉ·éD
+ *  'u' : ÎÛ^XNðsus_tskÉæè­§Ò¿óÔÉ·éD
+ *  'm' : ÎÛ^XNÌ­§Ò¿óÔðrsm_tskÉæèð·éD
+ *  'd' : ÎÛ^XNÉdly_tsk(10b)ðÄÑo³¹CÔoßÒ¿É³¹éD
+ *  'x' : ÎÛ^XNÉáOp^[0x0001ÌáOðv·éD
+ *  'X' : ÎÛ^XNÉáOp^[0x0002ÌáOðv·éD
+ *  'y' : ÎÛ^XNÉdis_texðÄÑo³¹C^XNáOðÖ~·éD
+ *  'Y' : ÎÛ^XNÉena_texðÄÑo³¹C^XNáOðÂ·éD
+ *  'r' : 3ÂÌDæxiHIGH_PRIORITYCMID_PRIORITYCLOW_PRIORITYjÌ
+ *        fBL
+[ðñ]³¹éD
+ *  'c' : üúnhð®ìJn³¹éD
+ *  'C' : üúnhð®ìâ~³¹éD
+ *  'b' : A[nhð5bãÉN®·éæ¤®ìJn³¹éD
+ *  'B' : A[nhð®ìâ~³¹éD
+ *  'z' : ÎÛ^XNÉCPUáOð­¶³¹éi^XNðI¹³¹éjD
+ *  'Z' : ÎÛ^XNÉCPUbNóÔÅCPUáOð­¶³¹éivOð
+ *        I¹·éjD
+ *  'V' : get_utmÅ«\]¿pVXeð2ñÇÞD
+ *  'o' : ÎÛ^XNÉÎµÄI[onhð®ìJn³¹é
+ *  'O' : ÎÛ^XNÉÎµÄI[onhð®ìâ~³¹é
+ *  'v' : ­sµ½VXeR[ð\¦·éiftHgjD
+ *  'q' : ­sµ½VXeR[ð\¦µÈ¢D
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include <t_stdlib.h>
+#include "syssvc/serial.h"
+#include "syssvc/syslog.h"
+#include "kernel_cfg.h"
+#include "sample1.h"
+
+/*
+ *  T[rXR[ÌG[ÌOoÍ
+ */
+Inline void
+svc_perror(const char *file, int_t line, const char *expr, ER ercd)
+{
+	if (ercd < 0) {
+		t_perror(LOG_ERROR, file, line, expr, ercd);
+	}
+}
+
+#define	SVC_PERROR(expr)	svc_perror(__FILE__, __LINE__, #expr, (expr))
+
+/*
+ *  ÀsÀs³êé^XNÖÌbZ[WÌæ
+ */
+char_t	message[3];
+
+/*
+ *  [vñ
+ */
+ulong_t	task_loop;		/* ^XNàÅÌ[vñ */
+ulong_t	tex_loop;		/* áO[`àÅÌ[vñ */
+
+/*
+ *  ÀsÀs³êé^XN
+ */
+void task(intptr_t exinf)
+{
+	volatile ulong_t	i;
+	int_t		n = 0;
+	int_t		tskno = (int_t) exinf;
+	const char	*graph[] = { "|    ", "  +  ", "    *" };
+	char_t		c;
+#ifdef TOPPERS_SUPPORT_OVRHDR
+	T_ROVR		pk_rovr;
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+
+	SVC_PERROR(ena_tex());
+	while (1) {
+#ifdef TOPPERS_SUPPORT_OVRHDR
+		SVC_PERROR(ref_ovr(TSK_SELF, &pk_rovr));
+		if ((pk_rovr.ovrstat & TOVR_STA) != 0) {
+			syslog(LOG_NOTICE, "task%d is running (%03d).   %s  [%ld]",
+								tskno, ++n, graph[tskno-1], pk_rovr.leftotm);
+		}
+		else {
+			syslog(LOG_NOTICE, "task%d is running (%03d).   %s",
+										tskno, ++n, graph[tskno-1]);
+		}
+#else /* TOPPERS_SUPPORT_OVRHDR */
+		syslog(LOG_NOTICE, "task%d is running (%03d).   %s",
+										tskno, ++n, graph[tskno-1]);
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+		for (i = 0; i < task_loop; i++);
+		c = message[tskno-1];
+		message[tskno-1] = 0;
+		switch (c) {
+		case 'e':
+			syslog(LOG_INFO, "#%d#ext_tsk()", tskno);
+			SVC_PERROR(ext_tsk());
+			assert(0);
+		case 's':
+			syslog(LOG_INFO, "#%d#slp_tsk()", tskno);
+			SVC_PERROR(slp_tsk());
+			break;
+		case 'S':
+			syslog(LOG_INFO, "#%d#tslp_tsk(10000)", tskno);
+			SVC_PERROR(tslp_tsk(10000));
+			break;
+		case 'd':
+			syslog(LOG_INFO, "#%d#dly_tsk(10000)", tskno);
+			SVC_PERROR(dly_tsk(10000));
+			break;
+		case 'y':
+			syslog(LOG_INFO, "#%d#dis_tex()", tskno);
+			SVC_PERROR(dis_tex());
+			break;
+		case 'Y':
+			syslog(LOG_INFO, "#%d#ena_tex()", tskno);
+			SVC_PERROR(ena_tex());
+			break;
+#ifdef CPUEXC1
+		case 'z':
+			syslog(LOG_NOTICE, "#%d#raise CPU exception", tskno);
+			RAISE_CPU_EXCEPTION;
+			break;
+		case 'Z':
+			SVC_PERROR(loc_cpu());
+			syslog(LOG_NOTICE, "#%d#raise CPU exception", tskno);
+			RAISE_CPU_EXCEPTION;
+			SVC_PERROR(unl_cpu());
+			break;
+#endif /* CPUEXC1 */
+		default:
+			break;
+		}
+	}
+}
+
+/*
+ *  ÀsµÄÀs³êé^XNpÌ^XNáO[`
+ */
+void tex_routine(TEXPTN texptn, intptr_t exinf)
+{
+	volatile ulong_t	i;
+	int_t	tskno = (int_t) exinf;
+
+	syslog(LOG_NOTICE, "task%d receives exception 0x%04x.", tskno, texptn);
+	for (i = 0; i < tex_loop; i++);
+
+	if ((texptn & 0x8000U) != 0U) {
+		syslog(LOG_INFO, "#%d#ext_tsk()", tskno);
+		SVC_PERROR(ext_tsk());
+		assert(0);
+	}
+}
+
+/*
+ *  CPUáOnh
+ */
+#ifdef CPUEXC1
+
+void
+cpuexc_handler(void *p_excinf)
+{
+	ID		tskid;
+
+	syslog(LOG_NOTICE, "CPU exception handler (p_excinf = %08p).", p_excinf);
+	if (sns_ctx() != true) {
+		syslog(LOG_WARNING,
+					"sns_ctx() is not true in CPU exception handler.");
+	}
+	if (sns_dpn() != true) {
+		syslog(LOG_WARNING,
+					"sns_dpn() is not true in CPU exception handler.");
+	}
+	syslog(LOG_INFO, "sns_loc = %d sns_dsp = %d sns_tex = %d",
+									sns_loc(), sns_dsp(), sns_tex());
+	syslog(LOG_INFO, "xsns_dpn = %d xsns_xpn = %d",
+									xsns_dpn(p_excinf), xsns_xpn(p_excinf));
+
+	if (xsns_xpn(p_excinf)) {
+		syslog(LOG_NOTICE, "Sample program ends with exception.");
+		SVC_PERROR(ext_ker());
+		assert(0);
+	}
+
+	SVC_PERROR(iget_tid(&tskid));
+	SVC_PERROR(iras_tex(tskid, 0x8000U));
+}
+
+#endif /* CPUEXC1 */
+
+/*
+ *  üúnh
+ *
+ *  HIGH_PRIORITYCMID_PRIORITYCLOW_PRIORITY ÌeDæxÌfBL
+[
+ *  ðñ]³¹éD
+ */
+void cyclic_handler(intptr_t exinf)
+{
+	SVC_PERROR(irot_rdq(HIGH_PRIORITY));
+	SVC_PERROR(irot_rdq(MID_PRIORITY));
+	SVC_PERROR(irot_rdq(LOW_PRIORITY));
+}
+
+/*
+ *  A[nh
+ *
+ *  HIGH_PRIORITYCMID_PRIORITYCLOW_PRIORITY ÌeDæxÌfBL
+[
+ *  ðñ]³¹éD
+ */
+void alarm_handler(intptr_t exinf)
+{
+	SVC_PERROR(irot_rdq(HIGH_PRIORITY));
+	SVC_PERROR(irot_rdq(MID_PRIORITY));
+	SVC_PERROR(irot_rdq(LOW_PRIORITY));
+}
+
+/*
+ *  I[onh
+ */
+#ifdef TOPPERS_SUPPORT_OVRHDR
+
+void
+overrun_handler(ID tskid, intptr_t exinf)
+{
+	int_t		tskno = (int_t) exinf;
+
+	syslog(LOG_NOTICE, "Overrun handler for task%d.", tskno);
+	syslog(LOG_INFO, "#iras_tex(%d, 0x0004U)", tskno);
+	SVC_PERROR(iras_tex(tskid, 0x0004U));
+}
+
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+
+/*
+ *  C^XN
+ */
+void main_task(intptr_t exinf)
+{
+	char_t	c;
+	ID		tskid = TASK1;
+	int_t	tskno = 1;
+	ER_UINT	ercd;
+	PRI		tskpri;
+#ifndef TASK_LOOP
+	volatile ulong_t	i;
+	SYSTIM	stime1, stime2;
+#endif /* TASK_LOOP */
+#ifdef TOPPERS_SUPPORT_GET_UTM
+	SYSUTM	utime1, utime2;
+#endif /* TOPPERS_SUPPORT_GET_UTM */
+
+	SVC_PERROR(syslog_msk_log(LOG_UPTO(LOG_INFO), LOG_UPTO(LOG_EMERG)));
+	syslog(LOG_NOTICE, "Sample program starts (exinf = %d).", (int_t) exinf);
+
+	/*
+	 *  VA|[gÌú»
+	 *
+	 *  VXeO^XNÆ¯¶VA|[gðg¤êÈÇCVA
+	 *  |[gªI[vÏÝÌêÉÍ±±ÅE_OBJG[ÉÈéªCxáÍ
+	 *  È¢D
+	 */
+	ercd = serial_opn_por(TASK_PORTID);
+	if (ercd < 0 && MERCD(ercd) != E_OBJ) {
+		syslog(LOG_ERROR, "%s (%d) reported by `serial_opn_por'.",
+									itron_strerror(ercd), SERCD(ercd));
+	}
+	SVC_PERROR(serial_ctl_por(TASK_PORTID,
+							(IOCTL_CRLF | IOCTL_FCSND | IOCTL_FCRCV)));
+
+	/*
+ 	 *  [vñÌÝè
+	 *
+	 *  TASK_LOOPª}Nè`³êÄ¢éêCªè¹¸ÉCTASK_LOOPÉè
+	 *  `³ê½lðC^XNàÅÌ[vñÆ·éD
+	 *
+	 *  MEASURE_TWICEª}Nè`³êÄ¢éêC1ñÚÌªèÊðÌÄ
+	 *  ÄC2ñÚÌªèÊðg¤D1ñÚÌªèÍ·ßÌÔªoé½ßD
+	 */
+#ifdef TASK_LOOP
+	task_loop = TASK_LOOP;
+#else /* TASK_LOOP */
+
+#ifdef MEASURE_TWICE
+	task_loop = LOOP_REF;
+	SVC_PERROR(get_tim(&stime1));
+	for (i = 0; i < task_loop; i++);
+	SVC_PERROR(get_tim(&stime2));
+#endif /* MEASURE_TWICE */
+
+	task_loop = LOOP_REF;
+	SVC_PERROR(get_tim(&stime1));
+	for (i = 0; i < task_loop; i++);
+	SVC_PERROR(get_tim(&stime2));
+	task_loop = LOOP_REF * 400UL / (stime2 - stime1);
+
+#endif /* TASK_LOOP */
+	tex_loop = task_loop / 5;
+
+	/*
+ 	 *  ^XNÌN®
+	 */
+	SVC_PERROR(act_tsk(TASK1));
+	SVC_PERROR(act_tsk(TASK2));
+	SVC_PERROR(act_tsk(TASK3));
+
+	/*
+ 	 *  C[v
+	 */
+	do {
+		SVC_PERROR(serial_rea_dat(TASK_PORTID, &c, 1));
+		switch (c) {
+		case 'e':
+		case 's':
+		case 'S':
+		case 'd':
+		case 'y':
+		case 'Y':
+		case 'z':
+		case 'Z':
+			message[tskno-1] = c;
+			break;
+		case '1':
+			tskno = 1;
+			tskid = TASK1;
+			break;
+		case '2':
+			tskno = 2;
+			tskid = TASK2;
+			break;
+		case '3':
+			tskno = 3;
+			tskid = TASK3;
+			break;
+		case 'a':
+			syslog(LOG_INFO, "#act_tsk(%d)", tskno);
+			SVC_PERROR(act_tsk(tskid));
+			break;
+		case 'A':
+			syslog(LOG_INFO, "#can_act(%d)", tskno);
+			SVC_PERROR(ercd = can_act(tskid));
+			if (ercd >= 0) {
+				syslog(LOG_NOTICE, "can_act(%d) returns %d", tskno, ercd);
+			}
+			break;
+		case 't':
+			syslog(LOG_INFO, "#ter_tsk(%d)", tskno);
+			SVC_PERROR(ter_tsk(tskid));
+			break;
+		case '>':
+			syslog(LOG_INFO, "#chg_pri(%d, HIGH_PRIORITY)", tskno);
+			SVC_PERROR(chg_pri(tskid, HIGH_PRIORITY));
+			break;
+		case '=':
+			syslog(LOG_INFO, "#chg_pri(%d, MID_PRIORITY)", tskno);
+			SVC_PERROR(chg_pri(tskid, MID_PRIORITY));
+			break;
+		case '<':
+			syslog(LOG_INFO, "#chg_pri(%d, LOW_PRIORITY)", tskno);
+			SVC_PERROR(chg_pri(tskid, LOW_PRIORITY));
+			break;
+		case 'G':
+			syslog(LOG_INFO, "#get_pri(%d, &tskpri)", tskno);
+			SVC_PERROR(ercd = get_pri(tskid, &tskpri));
+			if (ercd >= 0) {
+				syslog(LOG_NOTICE, "priority of task %d is %d", tskno, tskpri);
+			}
+			break;
+		case 'w':
+			syslog(LOG_INFO, "#wup_tsk(%d)", tskno);
+			SVC_PERROR(wup_tsk(tskid));
+			break;
+		case 'W':
+			syslog(LOG_INFO, "#can_wup(%d)", tskno);
+			SVC_PERROR(ercd = can_wup(tskid));
+			if (ercd >= 0) {
+				syslog(LOG_NOTICE, "can_wup(%d) returns %d", tskno, ercd);
+			}
+			break;
+		case 'l':
+			syslog(LOG_INFO, "#rel_wai(%d)", tskno);
+			SVC_PERROR(rel_wai(tskid));
+			break;
+		case 'u':
+			syslog(LOG_INFO, "#sus_tsk(%d)", tskno);
+			SVC_PERROR(sus_tsk(tskid));
+			break;
+		case 'm':
+			syslog(LOG_INFO, "#rsm_tsk(%d)", tskno);
+			SVC_PERROR(rsm_tsk(tskid));
+			break;
+		case 'x':
+			syslog(LOG_INFO, "#ras_tex(%d, 0x0001U)", tskno);
+			SVC_PERROR(ras_tex(tskid, 0x0001U));
+			break;
+		case 'X':
+			syslog(LOG_INFO, "#ras_tex(%d, 0x0002U)", tskno);
+			SVC_PERROR(ras_tex(tskid, 0x0002U));
+			break;
+		case 'r':
+			syslog(LOG_INFO, "#rot_rdq(three priorities)");
+			SVC_PERROR(rot_rdq(HIGH_PRIORITY));
+			SVC_PERROR(rot_rdq(MID_PRIORITY));
+			SVC_PERROR(rot_rdq(LOW_PRIORITY));
+			break;
+		case 'c':
+			syslog(LOG_INFO, "#sta_cyc(1)");
+			SVC_PERROR(sta_cyc(CYCHDR1));
+			break;
+		case 'C':
+			syslog(LOG_INFO, "#stp_cyc(1)");
+			SVC_PERROR(stp_cyc(CYCHDR1));
+			break;
+		case 'b':
+			syslog(LOG_INFO, "#sta_alm(1, 5000)");
+			SVC_PERROR(sta_alm(ALMHDR1, 5000));
+			break;
+		case 'B':
+			syslog(LOG_INFO, "#stp_alm(1)");
+			SVC_PERROR(stp_alm(ALMHDR1));
+			break;
+
+		case 'V':
+#ifdef TOPPERS_SUPPORT_GET_UTM
+			SVC_PERROR(get_utm(&utime1));
+			SVC_PERROR(get_utm(&utime2));
+			syslog(LOG_NOTICE, "utime1 = %ld, utime2 = %ld",
+										(ulong_t) utime1, (ulong_t) utime2);
+#else /* TOPPERS_SUPPORT_GET_UTM */
+			syslog(LOG_NOTICE, "get_utm is not supported.");
+#endif /* TOPPERS_SUPPORT_GET_UTM */
+			break;
+
+		case 'o':
+#ifdef TOPPERS_SUPPORT_OVRHDR
+			syslog(LOG_INFO, "#sta_ovr(%d, 2000000)", tskno);
+			SVC_PERROR(sta_ovr(tskid, 2000000));
+#else /* TOPPERS_SUPPORT_OVRHDR */
+			syslog(LOG_NOTICE, "sta_ovr is not supported.");
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+			break;
+		case 'O':
+#ifdef TOPPERS_SUPPORT_OVRHDR
+			syslog(LOG_INFO, "#stp_ovr(%d)", tskno);
+			SVC_PERROR(stp_ovr(tskid));
+#else /* TOPPERS_SUPPORT_OVRHDR */
+			syslog(LOG_NOTICE, "stp_ovr is not supported.");
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+			break;
+
+		case 'v':
+			SVC_PERROR(syslog_msk_log(LOG_UPTO(LOG_INFO),
+										LOG_UPTO(LOG_EMERG)));
+			break;
+		case 'q':
+			SVC_PERROR(syslog_msk_log(LOG_UPTO(LOG_NOTICE),
+										LOG_UPTO(LOG_EMERG)));
+			break;
+
+#ifdef BIT_KERNEL
+		case ' ':
+			SVC_PERROR(loc_cpu());
+			{
+				extern ER	bit_kernel(void);
+
+				SVC_PERROR(ercd = bit_kernel());
+				if (ercd >= 0) {
+					syslog(LOG_NOTICE, "bit_kernel passed.");
+				}
+			}
+			SVC_PERROR(unl_cpu());
+			break;
+#endif /* BIT_KERNEL */
+
+		default:
+			break;
+		}
+	} while (c != '\003' && c != 'Q');
+
+	syslog(LOG_NOTICE, "Sample program ends.");
+	SVC_PERROR(ext_ker());
+	assert(0);
+}
Index: /asp_ewarm/asp-1.7.0/extension/ovrhdr/sample/sample1.cfg
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/ovrhdr/sample/sample1.cfg	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/ovrhdr/sample/sample1.cfg	(revision 61)
@@ -0,0 +1,28 @@
+/*
+ *  @(#) $Id: sample1.cfg 1717 2010-01-31 11:41:03Z ertl-hiro $
+ */
+
+/*
+ *  TvvO(1)ÌVXeRtBM
+[Vt@C
+ */
+INCLUDE("target_timer.cfg");
+INCLUDE("syssvc/syslog.cfg");
+INCLUDE("syssvc/banner.cfg");
+INCLUDE("syssvc/serial.cfg");
+INCLUDE("syssvc/logtask.cfg");
+
+#include "sample1.h"
+CRE_TSK(TASK1, { TA_NULL, 1, task, MID_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK2, { TA_NULL, 2, task, MID_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK3, { TA_NULL, 3, task, MID_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(MAIN_TASK, { TA_ACT, 0, main_task, MAIN_PRIORITY, STACK_SIZE, NULL });
+DEF_TEX(TASK1, { TA_NULL, tex_routine });
+DEF_TEX(TASK2, { TA_NULL, tex_routine });
+DEF_TEX(TASK3, { TA_NULL, tex_routine });
+CRE_CYC(CYCHDR1, { TA_NULL, 0, cyclic_handler, 2000, 0 });
+CRE_ALM(ALMHDR1, { TA_NULL, 0, alarm_handler });
+DEF_OVR({ TA_NULL, overrun_handler });
+#ifdef CPUEXC1
+DEF_EXC(CPUEXC1, { TA_NULL, cpuexc_handler });
+#endif /* CPUEXC1 */
Index: /asp_ewarm/asp-1.7.0/extension/ovrhdr/sample/sample1.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/ovrhdr/sample/sample1.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/ovrhdr/sample/sample1.h	(revision 61)
@@ -0,0 +1,100 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ *
+ *  @(#) $Id: sample1.h 1717 2010-01-31 11:41:03Z ertl-hiro $
+ */
+
+/*
+ *		TvvO(1)Ìwb_t@C
+ */
+
+/*
+ *  ^[QbgË¶Ìè`
+ */
+#include "target_test.h"
+
+/*
+ *  e^XNÌDæxÌè`
+ */
+
+#define MAIN_PRIORITY	5		/* C^XNÌDæx */
+								/* HIGH_PRIORITYæè­·é±Æ */
+
+#define HIGH_PRIORITY	9		/* ÀñÉÀs³êé^XNÌDæx */
+#define MID_PRIORITY	10
+#define LOW_PRIORITY	11
+
+/*
+ *  ^[QbgÉË¶·éÂ\«Ì éèÌè`
+ */
+
+#ifndef TASK_PORTID
+#define	TASK_PORTID		1			/* ¶üÍ·éVA|[gID */
+#endif /* TASK_PORTID */
+
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ^XNÌX^bNTCY */
+#endif /* STACK_SIZE */
+
+#ifndef LOOP_REF
+#define LOOP_REF		ULONG_C(1000000)	/* ¬xvªpÌ[vñ */
+#endif /* LOOP_REF */
+
+/*
+ *  ÖÌvg^Cvé¾
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+extern void	task(intptr_t exinf);
+extern void	main_task(intptr_t exinf);
+extern void	tex_routine(TEXPTN texptn, intptr_t exinf);
+#ifdef CPUEXC1
+extern void	cpuexc_handler(void *p_excinf);
+#endif /* CPUEXC1 */
+extern void	cyclic_handler(intptr_t exinf);
+extern void	alarm_handler(intptr_t exinf);
+#ifdef TOPPERS_SUPPORT_OVRHDR
+extern void	overrun_handler(ID tskid, intptr_t exinf);
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+
+#endif /* TOPPERS_MACRO_ONLY */
Index: /asp_ewarm/asp-1.7.0/extension/pri_level/include/kernel.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/pri_level/include/kernel.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/pri_level/include/kernel.h	(revision 61)
@@ -0,0 +1,523 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: kernel.h 1959 2010-11-20 02:17:27Z ertl-hiro $
+ */
+
+/*
+ *		TOPPERS/ASPJ[l Wwb_t@C
+ *
+ *  TOPPERS/ASPJ[lªT|[g·éT[rXR[Ìé¾ÆCKvÈf[
+ *  ^^CèC}NÌè`ðÜÞwb_t@CD
+ *
+ *  AZu¾êÌ\[Xt@C©ç±Ìt@CðCN[h·é
+ *  ÍCTOPPERS_MACRO_ONLYðè`µÄ¨­D±êÉæèC}Nè`ÈOð
+ *  ­æ¤ÉÈÁÄ¢éD
+ *
+ *  ±Ìt@CðCN[h·éOÉCN[hµÄ¨­×«t@C
+ *  ÍÈ¢D
+ */
+
+#ifndef TOPPERS_KERNEL_H
+#define TOPPERS_KERNEL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *	TOPPERS¤ÊÌf[^^EèE}N
+ */
+#include <t_stddef.h>
+
+/*
+ *  ^[QbgË¶
+ */
+#include "target_kernel.h"
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  f[^^Ìè`
+ */
+
+/*
+ *  rbgp^[âIuWFNgÔÌ^è`
+ */
+typedef	uint_t		TEXPTN;		/* ^XNáOvöÌrbgp^[ */
+typedef	uint_t		FLGPTN;		/* CxgtOÌrbgp^[ */
+typedef	uint_t		INTNO;		/* ÝÔ */
+typedef	uint_t		INHNO;		/* ÝnhÔ */
+typedef	uint_t		EXCNO;		/* CPUáOnhÔ */
+
+/*
+ *  PÊÌ^è`
+ */
+typedef void	(*TASK)(intptr_t exinf);
+typedef void	(*TEXRTN)(TEXPTN texptn, intptr_t exinf);
+typedef void	(*CYCHDR)(intptr_t exinf);
+typedef void	(*ALMHDR)(intptr_t exinf);
+typedef void	(*ISR)(intptr_t exinf);
+typedef void	(*INTHDR)(void);
+typedef void	(*EXCHDR)(void *p_excinf);
+typedef void	(*INIRTN)(intptr_t exinf);
+typedef void	(*TERRTN)(intptr_t exinf);
+
+/*
+ *  ÌæmÛÌ½ßÌ^è`
+ */
+#ifndef TOPPERS_STK_T
+#define TOPPERS_STK_T	intptr_t
+#endif /* TOPPERS_STK_T */
+typedef	TOPPERS_STK_T	STK_T;	/* X^bNÌæðmÛ·é½ßÌ^ */
+
+#ifndef TOPPERS_MPF_T
+#define TOPPERS_MPF_T	intptr_t
+#endif /* TOPPERS_MPF_T */
+typedef	TOPPERS_MPF_T	MPF_T;	/* Åè·v[ÌæðmÛ·é½ßÌ^ */
+
+/*
+ *  bZ[Wwb_Ì^è`
+ */
+typedef	struct t_msg {			/* [{bNXÌbZ[Wwb_ */
+	struct t_msg	*pk_next;
+} T_MSG;
+
+typedef	struct t_msg_pri {		/* Dæxt«bZ[Wwb_ */
+	T_MSG	msgque;				/* bZ[Wwb_ */
+	PRI		msgpri;				/* bZ[WDæx */
+} T_MSG_PRI;
+
+/*
+ *  pPbg`®Ìè`
+ */
+typedef struct t_rtsk {
+	STAT	tskstat;	/* ^XNóÔ */
+	PRI		tskpri;		/* ^XNÌ»ÝDæx */
+	PRI		tskbpri;	/* ^XNÌx[XDæx */
+	STAT	tskwait;	/* Ò¿vö */
+	ID		wobjid;		/* Ò¿ÎÛÌIuWFNgÌID */
+	TMO		lefttmo;	/* ^CAEg·éÜÅÌÔ */
+	uint_t	actcnt;		/* N®vL
+[CO */
+	uint_t	wupcnt;		/* N°vL
+[CO */
+} T_RTSK;
+
+typedef struct t_rtex {
+	STAT	texstat;	/* ^XNáOÌóÔ */
+	TEXPTN	pndptn;		/* Û¯áOvö */
+} T_RTEX;
+
+typedef struct t_rsem {
+	ID		wtskid;		/* Z}tHÌÒ¿sñÌæªÌ^XNÌIDÔ */
+	uint_t	semcnt;		/* Z}tHÌ»ÝÌ¹ */
+} T_RSEM;
+
+typedef struct t_rflg {
+	ID		wtskid;		/* CxgtOÌÒ¿sñÌæªÌ^XNÌIDÔ */
+	FLGPTN	flgptn;		/* CxgtOÌ»ÝÌrbgp^[ */
+} T_RFLG;
+
+typedef struct t_rdtq {
+	ID		stskid;		/* f[^L
+[ÌMÒ¿sñÌæªÌ^XNÌIDÔ */
+	ID		rtskid;		/* f[^L
+[ÌóMÒ¿sñÌæªÌ^XNÌIDÔ */
+	uint_t	sdtqcnt;	/* f[^L
+[ÇÌæÉi[³êÄ¢éf[^Ì */
+} T_RDTQ;
+
+typedef struct t_rpdq {
+	ID		stskid;		/* Dæxf[^L
+[ÌMÒ¿sñÌæªÌ^XN
+						   ÌIDÔ */
+	ID		rtskid;		/* Dæxf[^L
+[ÌóMÒ¿sñÌæªÌ^XN
+						   ÌIDÔ */
+	uint_t	spdqcnt;	/* Dæxf[^L
+[ÇÌæÉi[³êÄ¢éf[
+						   ^Ì */
+} T_RPDQ;
+
+typedef struct t_rmbx {
+	ID		wtskid;		/* [{bNXÌÒ¿sñÌæªÌ^XNÌIDÔ */
+	T_MSG	*pk_msg;	/* bZ[WL
+[ÌæªÉÂÈªê½bZ[W
+						   ÌæªÔn */
+} T_RMBX;
+
+typedef struct t_rmpf {
+	ID		wtskid;		/* Åè·v[ÌÒ¿sñÌæªÌ^XNÌ
+						   IDÔ */
+	uint_t	fblkcnt;	/* Åè·v[ÌæÌó«ÌæÉè
+						   t¯é±ÆªÅ«éÅè·ubNÌ */
+} T_RMPF;
+
+typedef struct t_rcyc {
+	STAT	cycstat;	/* üúnhÌ®ìóÔ */
+	RELTIM	lefttim;	/* ÉüúnhðN®·éÜÅÌÎÔ */
+} T_RCYC;
+
+typedef struct t_ralm {
+	STAT	almstat;	/* A[nhÌ®ìóÔ */
+	RELTIM	lefttim;	/* A[nhðN®·éÜÅÌÎÔ */
+} T_RALM;
+
+/*
+ *  T[rXR[Ìé¾
+ */
+
+/*
+ *  ^XNÇ@\
+ */
+extern ER		act_tsk(ID tskid) throw();
+extern ER		iact_tsk(ID tskid) throw();
+extern ER_UINT	can_act(ID tskid) throw();
+extern ER		ext_tsk(void) throw();
+extern ER		ter_tsk(ID tskid) throw();
+extern ER		chg_pri(ID tskid, PRI tskpri) throw();
+extern ER		get_pri(ID tskid, PRI *p_tskpri) throw();
+extern ER		get_inf(intptr_t *p_exinf) throw();
+extern ER		ref_tsk(ID tskid, T_RTSK *pk_rtsk) throw();
+
+/*
+ *  ^XNt®¯ú@\
+ */
+extern ER		slp_tsk(void) throw();
+extern ER		tslp_tsk(TMO tmout) throw();
+extern ER		wup_tsk(ID tskid) throw();
+extern ER		iwup_tsk(ID tskid) throw();
+extern ER_UINT	can_wup(ID tskid) throw();
+extern ER		rel_wai(ID tskid) throw();
+extern ER		irel_wai(ID tskid) throw();
+extern ER		sus_tsk(ID tskid) throw();
+extern ER		rsm_tsk(ID tskid) throw();
+extern ER		dly_tsk(RELTIM dlytim) throw();
+
+/*
+ *  ^XNáO@\
+ */
+extern ER		ras_tex(ID tskid, TEXPTN rasptn) throw();
+extern ER		iras_tex(ID tskid, TEXPTN rasptn) throw();
+extern ER		dis_tex(void) throw();
+extern ER		ena_tex(void) throw();
+extern bool_t	sns_tex(void) throw();
+extern ER		ref_tex(ID tskid, T_RTEX *pk_rtex) throw();
+
+/*
+ *  ¯úEÊM@\
+ */
+extern ER		sig_sem(ID semid) throw();
+extern ER		isig_sem(ID semid) throw();
+extern ER		wai_sem(ID semid) throw();
+extern ER		pol_sem(ID semid) throw();
+extern ER		twai_sem(ID semid, TMO tmout) throw();
+extern ER		ini_sem(ID semid) throw();
+extern ER		ref_sem(ID semid, T_RSEM *pk_rsem) throw();
+
+extern ER		set_flg(ID flgid, FLGPTN setptn) throw();
+extern ER		iset_flg(ID flgid, FLGPTN setptn) throw();
+extern ER		clr_flg(ID flgid, FLGPTN clrptn) throw();
+extern ER		wai_flg(ID flgid, FLGPTN waiptn,
+						MODE wfmode, FLGPTN *p_flgptn) throw();
+extern ER		pol_flg(ID flgid, FLGPTN waiptn,
+						MODE wfmode, FLGPTN *p_flgptn) throw();
+extern ER		twai_flg(ID flgid, FLGPTN waiptn,
+						MODE wfmode, FLGPTN *p_flgptn, TMO tmout) throw();
+extern ER		ini_flg(ID flgid) throw();
+extern ER		ref_flg(ID flgid, T_RFLG *pk_rflg) throw();
+
+extern ER		snd_dtq(ID dtqid, intptr_t data) throw();
+extern ER		psnd_dtq(ID dtqid, intptr_t data) throw();
+extern ER		ipsnd_dtq(ID dtqid, intptr_t data) throw();
+extern ER		tsnd_dtq(ID dtqid, intptr_t data, TMO tmout) throw();
+extern ER		fsnd_dtq(ID dtqid, intptr_t data) throw();
+extern ER		ifsnd_dtq(ID dtqid, intptr_t data) throw();
+extern ER		rcv_dtq(ID dtqid, intptr_t *p_data) throw();
+extern ER		prcv_dtq(ID dtqid, intptr_t *p_data) throw();
+extern ER		trcv_dtq(ID dtqid, intptr_t *p_data, TMO tmout) throw();
+extern ER		ini_dtq(ID dtqid) throw();
+extern ER		ref_dtq(ID dtqid, T_RDTQ *pk_rdtq) throw();
+
+extern ER		snd_pdq(ID pdqid, intptr_t data, PRI datapri) throw();
+extern ER		psnd_pdq(ID pdqid, intptr_t data, PRI datapri) throw();
+extern ER		ipsnd_pdq(ID pdqid, intptr_t data, PRI datapri) throw();
+extern ER		tsnd_pdq(ID pdqid, intptr_t data,
+										PRI datapri, TMO tmout) throw();
+extern ER		rcv_pdq(ID pdqid, intptr_t *p_data, PRI *p_datapri) throw();
+extern ER		prcv_pdq(ID pdqid, intptr_t *p_data, PRI *p_datapri) throw();
+extern ER		trcv_pdq(ID pdqid, intptr_t *p_data,
+										PRI *p_datapri, TMO tmout) throw();
+extern ER		ini_pdq(ID pdqid) throw();
+extern ER		ref_pdq(ID pdqid, T_RPDQ *pk_rpdq) throw();
+
+extern ER		snd_mbx(ID mbxid, T_MSG *pk_msg) throw();
+extern ER		rcv_mbx(ID mbxid, T_MSG **ppk_msg) throw();
+extern ER		prcv_mbx(ID mbxid, T_MSG **ppk_msg) throw();
+extern ER		trcv_mbx(ID mbxid, T_MSG **ppk_msg, TMO tmout) throw();
+extern ER		ini_mbx(ID mbxid) throw();
+extern ER		ref_mbx(ID mbxid, T_RMBX *pk_rmbx) throw();
+
+/*
+ *  v[Ç@\
+ */
+extern ER		get_mpf(ID mpfid, void **p_blk) throw();
+extern ER		pget_mpf(ID mpfid, void **p_blk) throw();
+extern ER		tget_mpf(ID mpfid, void **p_blk, TMO tmout) throw();
+extern ER		rel_mpf(ID mpfid, void *blk) throw();
+extern ER		ini_mpf(ID mpfid) throw();
+extern ER		ref_mpf(ID mpfid, T_RMPF *pk_rmpf) throw();
+
+/*
+ *  ÔÇ@\
+ */
+extern ER		get_tim(SYSTIM *p_systim) throw();
+extern ER		get_utm(SYSUTM *p_sysutm) throw();
+
+extern ER		sta_cyc(ID cycid) throw();
+extern ER		stp_cyc(ID cycid) throw();
+extern ER		ref_cyc(ID cycid, T_RCYC *pk_rcyc) throw();
+
+extern ER		sta_alm(ID almid, RELTIM almtim) throw();
+extern ER		ista_alm(ID almid, RELTIM almtim) throw();
+extern ER		stp_alm(ID almid) throw();
+extern ER		istp_alm(ID almid) throw();
+extern ER		ref_alm(ID almid, T_RALM *pk_ralm) throw();
+
+/*
+ *  VXeóÔÇ@\
+ */
+extern ER		rot_rdq(PRI tskpri) throw();
+extern ER		irot_rdq(PRI tskpri) throw();
+extern ER		get_tid(ID *p_tskid) throw();
+extern ER		iget_tid(ID *p_tskid) throw();
+extern ER		loc_cpu(void) throw();
+extern ER		iloc_cpu(void) throw();
+extern ER		unl_cpu(void) throw();
+extern ER		iunl_cpu(void) throw();
+extern ER		dis_dsp(void) throw();
+extern ER		ena_dsp(void) throw();
+extern bool_t	sns_ctx(void) throw();
+extern bool_t	sns_loc(void) throw();
+extern bool_t	sns_dsp(void) throw();
+extern bool_t	sns_dpn(void) throw();
+extern bool_t	sns_ker(void) throw();
+extern ER		ext_ker(void) throw();
+
+/*
+ *  ÝÇ@\
+ */
+extern ER		dis_int(INTNO intno) throw();
+extern ER		ena_int(INTNO intno) throw();
+extern ER		chg_ipm(PRI intpri) throw();
+extern ER		get_ipm(PRI *p_intpri) throw();
+
+/*
+ *  CPUáOÇ@\
+ */
+extern bool_t	xsns_dpn(void *p_excinf) throw();
+extern bool_t	xsns_xpn(void *p_excinf) throw();
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  IuWFNg®«Ìè`
+ */
+#define TA_ACT			UINT_C(0x02)	/* ^XNðN®³ê½óÔÅ¶¬ */
+
+#define TA_TPRI			UINT_C(0x01)	/* ^XNÌÒ¿sñðDæxÉ */
+#define TA_MPRI			UINT_C(0x02)	/* bZ[WL
+[ðDæxÉ */
+
+#define TA_WMUL			UINT_C(0x02)	/* ¡ÌÒ¿^XN */
+#define TA_CLR			UINT_C(0x04)	/* CxgtOÌNAwè */
+
+#define TA_STA			UINT_C(0x02)	/* üúnhð®ìóÔÅ¶¬ */
+
+#define TA_NONKERNEL	UINT_C(0x02)	/* J[lÇOÌÝ */
+
+#define TA_ENAINT		UINT_C(0x01)	/* ÝvÖ~tOðNA */
+#define TA_EDGE			UINT_C(0x02)	/* GbWgK */
+
+/*
+ *  T[rXR[Ì®ì[hÌè`
+ */
+#define TWF_ORW			UINT_C(0x01)	/* CxgtOÌORÒ¿ */
+#define TWF_ANDW		UINT_C(0x02)	/* CxgtOÌANDÒ¿ */
+
+/*
+ *  IuWFNgÌóÔÌè`
+ */
+#define TTS_RUN			UINT_C(0x01)	/* ÀsóÔ */
+#define TTS_RDY			UINT_C(0x02)	/* ÀsÂ\óÔ */
+#define TTS_WAI			UINT_C(0x04)	/* Ò¿óÔ */
+#define TTS_SUS			UINT_C(0x08)	/* ­§Ò¿óÔ */
+#define TTS_WAS			UINT_C(0x0c)	/* ñdÒ¿óÔ */
+#define TTS_DMT			UINT_C(0x10)	/* x~óÔ */
+
+#define TTW_SLP			UINT_C(0x0001)	/* N°Ò¿ */
+#define TTW_DLY			UINT_C(0x0002)	/* ÔoßÒ¿ */
+#define TTW_SEM			UINT_C(0x0004)	/* Z}tHÌ¹l¾Ò¿ */
+#define TTW_FLG			UINT_C(0x0008)	/* CxgtOÒ¿ */
+#define TTW_SDTQ		UINT_C(0x0010)	/* f[^L
+[ÖÌMÒ¿ */
+#define TTW_RDTQ		UINT_C(0x0020)	/* f[^L
+[©çÌóMÒ¿ */
+#define TTW_SPDQ		UINT_C(0x0100)	/* Dæxf[^L
+[ÖÌMÒ¿ */
+#define TTW_RPDQ		UINT_C(0x0200)	/* Dæxf[^L
+[©çÌóMÒ¿ */
+#define TTW_MBX			UINT_C(0x0040)	/* [{bNX©çÌóMÒ¿ */
+#define TTW_MPF			UINT_C(0x2000)	/* Åè·ubNÌl¾Ò¿ */
+
+#define TTEX_ENA		UINT_C(0x01)	/* ^XNáOÂóÔ */
+#define TTEX_DIS		UINT_C(0x02)	/* ^XNáOÖ~óÔ */
+
+#define TCYC_STP		UINT_C(0x01)	/* üúnhª®ìµÄ¢È¢ */
+#define TCYC_STA		UINT_C(0x02)	/* üúnhª®ìµÄ¢é */
+
+#define TALM_STP		UINT_C(0x01)	/* A[nhª®ìµÄ¢È¢ */
+#define TALM_STA		UINT_C(0x02)	/* A[nhª®ìµÄ¢é */
+
+/*
+ *  »Ì¼ÌèÌè`
+ */
+#define TSK_SELF		0			/* ©^XNwè */
+#define TSK_NONE		0			/* Y·é^XNªÈ¢ */
+
+#define TPRI_SELF		0			/* ©^XNÌx[XDæx */
+#define TPRI_INI		0			/* ^XNÌN®Dæx */
+
+#define TIPM_ENAALL		0			/* ÝDæx}XNSð */
+
+/*
+ *  \¬èÆ}N
+ */
+
+/*
+ *  T|[g·é@\
+ */
+#ifdef TOPPERS_TARGET_SUPPORT_DIS_INT
+#define TOPPERS_SUPPORT_DIS_INT			/* dis_intªT|[g³êÄ¢é */
+#endif /* TOPPERS_TARGET_SUPPORT_DIS_INT */
+
+#ifdef TOPPERS_TARGET_SUPPORT_ENA_INT
+#define TOPPERS_SUPPORT_ENA_INT			/* ena_intªT|[g³êÄ¢é */
+#endif /* TOPPERS_TARGET_SUPPORT_ENA_INT */
+
+#ifdef TOPPERS_TARGET_SUPPORT_GET_UTM
+#define TOPPERS_SUPPORT_GET_UTM			/* get_utmªT|[g³êÄ¢é */
+#endif /* TOPPERS_TARGET_SUPPORT_GET_UTM */
+
+#define TOPPERS_SUPPORT_PRI_LEVEL		/* ^XNDæxÌÍÍÌg£ */
+
+/*
+ *  DæxÌÍÍ
+ */
+#define TMIN_TPRI		1			/* ^XNDæxÌÅ¬liÅlj*/
+#define TMAX_TPRI		256			/* ^XNDæxÌÅåliÅálj*/
+#define TMIN_DPRI		1			/* f[^DæxÌÅ¬liÅlj*/
+#define TMAX_DPRI		256			/* f[^DæxÌÅåliÅálj*/
+#define TMIN_MPRI		1			/* bZ[WDæxÌÅ¬liÅlj*/
+#define TMAX_MPRI		256			/* bZ[WDæxÌÅåliÅálj*/
+#define TMIN_ISRPRI		1			/* ÝT[rX[`DæxÌÅ¬l */
+#define TMAX_ISRPRI		256			/* ÝT[rX[`DæxÌÅål */
+
+/*
+ *  o[Wîñ
+ */
+#define TKERNEL_MAKER	UINT_C(0x0118)	/* J[lÌ[J[R[h */
+#define TKERNEL_PRID	UINT_C(0x0007)	/* J[lÌ¯ÊÔ */
+#define TKERNEL_SPVER	UINT_C(0xf513)	/* J[ldlÌo[WÔ */
+#define TKERNEL_PRVER	UINT_C(0x1070)	/* J[lÌo[WÔ */
+
+/*
+ *  L
+[COñÌÅål
+ */
+#define TMAX_ACTCNT		UINT_C(1)		/* N®vL
+[COÌÅål */
+#define TMAX_WUPCNT		UINT_C(1)		/* N°vL
+[COÌÅål */
+
+/*
+ *  rbgp^[Ìrbg
+ */
+#ifndef TBIT_TEXPTN					/* ^XNáOvöÌrbg */
+#define TBIT_TEXPTN		(sizeof(TEXPTN) * CHAR_BIT)
+#endif /* TBIT_TEXPTN */
+
+#ifndef TBIT_FLGPTN					/* CxgtOÌrbg */
+#define TBIT_FLGPTN		(sizeof(FLGPTN) * CHAR_BIT)
+#endif /* TBIT_FLGPTN */
+
+/*
+ *  ÌæmÛÌ½ßÌ}N
+ *
+ *  ÈºÌTOPPERS_COUNT_SZÆTOPPERS_ROUND_SZÌè`ÍCunitª2ÌÐæÅ 
+ *  é±Æð¼èµÄ¢éD
+ */
+#ifndef TOPPERS_COUNT_SZ
+#define TOPPERS_COUNT_SZ(sz, unit)	(((sz) + (unit) - 1) / (unit))
+#endif /* TOPPERS_COUNT_SZ */
+#ifndef TOPPERS_ROUND_SZ
+#define TOPPERS_ROUND_SZ(sz, unit)	(((sz) + (unit) - 1) & ~((unit) - 1))
+#endif /* TOPPERS_ROUND_SZ */
+
+#define COUNT_STK_T(sz)		TOPPERS_COUNT_SZ(sz, sizeof(STK_T))
+#define ROUND_STK_T(sz)		TOPPERS_ROUND_SZ(sz, sizeof(STK_T))
+
+#define COUNT_MPF_T(blksz)	TOPPERS_COUNT_SZ(blksz, sizeof(MPF_T))
+#define ROUND_MPF_T(blksz)	TOPPERS_ROUND_SZ(blksz, sizeof(MPF_T))
+
+/*
+ *  »Ì¼Ì\¬è
+ */
+#define TMAX_MAXSEM		UINT_MAX	/* Z}tHÌÅå¹ÌÅål */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* TOPPERS_KERNEL_H */
Index: /asp_ewarm/asp-1.7.0/extension/pri_level/kernel/kernel_rename.def
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/pri_level/kernel/kernel_rename.def	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/pri_level/kernel/kernel_rename.def	(revision 61)
@@ -0,0 +1,138 @@
+# startup.c
+kerflg
+exit_kernel
+
+# task.c
+p_runtsk
+p_schedtsk
+reqflg
+ipmflg
+disdsp
+dspflg
+ready_queue
+ready_primap
+ready_primap1
+ready_primap2
+initialize_task
+search_schedtsk
+make_runnable
+make_non_runnable
+make_dormant
+make_active
+change_priority
+rotate_ready_queue
+call_texrtn
+calltex
+
+# wait.c
+make_wait_tmout
+wait_complete
+wait_tmout
+wait_tmout_ok
+wait_release
+wobj_make_wait
+wobj_make_wait_tmout
+init_wait_queue
+
+# time_event.c
+current_time
+min_time
+next_time
+next_subtime
+last_index
+initialize_tmevt
+tmevt_up
+tmevt_down
+tmevtb_insert
+tmevtb_delete
+tmevt_lefttim
+signal_time
+
+# semaphore.c
+initialize_semaphore
+
+# eventflag.c
+initialize_eventflag
+check_flg_cond
+
+# dataqueue.c
+initialize_dataqueue
+enqueue_data
+force_enqueue_data
+dequeue_data
+send_data
+force_send_data
+receive_data
+
+# pridataq.c
+initialize_pridataq
+enqueue_pridata
+dequeue_pridata
+send_pridata
+receive_pridata
+
+# mailbox.c
+initialize_mailbox
+
+# mempfix.c
+initialize_mempfix
+get_mpf_block
+
+# cyclic.c
+initialize_cyclic
+call_cychdr
+
+# alarm.c
+initialize_alarm
+call_almhdr
+
+# interrupt.c
+initialize_interrupt
+
+# exception.c
+initialize_exception
+
+# kernel_cfg.c
+initialize_object
+call_inirtn
+call_terrtn
+tmax_tskid
+tinib_table
+torder_table
+tcb_table
+tmax_semid
+seminib_table
+semcb_table
+tmax_flgid
+flginib_table
+flgcb_table
+tmax_dtqid
+dtqcb_table
+dtqinib_table
+tmax_pdqid
+pdqcb_table
+pdqinib_table
+tmax_mbxid
+mbxcb_table
+mbxinib_table
+tmax_mpfid
+mpfinib_table
+mpfcb_table
+tmax_cycid
+cycinib_table
+cyccb_table
+tmax_almid
+alminib_table
+almcb_table
+tnum_inhno
+inhinib_table
+tnum_intno
+intinib_table
+tnum_excno
+excinib_table
+tmevt_heap
+istksz
+istk
+istkpt
+
+INCLUDE "target"
Index: /asp_ewarm/asp-1.7.0/extension/pri_level/kernel/kernel_rename.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/pri_level/kernel/kernel_rename.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/pri_level/kernel/kernel_rename.h	(revision 61)
@@ -0,0 +1,348 @@
+/* This file is generated from kernel_rename.def by genrename. */
+
+#ifndef TOPPERS_KERNEL_RENAME_H
+#define TOPPERS_KERNEL_RENAME_H
+
+/*
+ *  startup.c
+ */
+#define kerflg						_kernel_kerflg
+#define exit_kernel					_kernel_exit_kernel
+
+/*
+ *  task.c
+ */
+#define p_runtsk					_kernel_p_runtsk
+#define p_schedtsk					_kernel_p_schedtsk
+#define reqflg						_kernel_reqflg
+#define ipmflg						_kernel_ipmflg
+#define disdsp						_kernel_disdsp
+#define dspflg						_kernel_dspflg
+#define ready_queue					_kernel_ready_queue
+#define ready_primap				_kernel_ready_primap
+#define ready_primap1				_kernel_ready_primap1
+#define ready_primap2				_kernel_ready_primap2
+#define initialize_task				_kernel_initialize_task
+#define search_schedtsk				_kernel_search_schedtsk
+#define make_runnable				_kernel_make_runnable
+#define make_non_runnable			_kernel_make_non_runnable
+#define make_dormant				_kernel_make_dormant
+#define make_active					_kernel_make_active
+#define change_priority				_kernel_change_priority
+#define rotate_ready_queue			_kernel_rotate_ready_queue
+#define call_texrtn					_kernel_call_texrtn
+#define calltex						_kernel_calltex
+
+/*
+ *  wait.c
+ */
+#define make_wait_tmout				_kernel_make_wait_tmout
+#define wait_complete				_kernel_wait_complete
+#define wait_tmout					_kernel_wait_tmout
+#define wait_tmout_ok				_kernel_wait_tmout_ok
+#define wait_release				_kernel_wait_release
+#define wobj_make_wait				_kernel_wobj_make_wait
+#define wobj_make_wait_tmout		_kernel_wobj_make_wait_tmout
+#define init_wait_queue				_kernel_init_wait_queue
+
+/*
+ *  time_event.c
+ */
+#define current_time				_kernel_current_time
+#define min_time					_kernel_min_time
+#define next_time					_kernel_next_time
+#define next_subtime				_kernel_next_subtime
+#define last_index					_kernel_last_index
+#define initialize_tmevt			_kernel_initialize_tmevt
+#define tmevt_up					_kernel_tmevt_up
+#define tmevt_down					_kernel_tmevt_down
+#define tmevtb_insert				_kernel_tmevtb_insert
+#define tmevtb_delete				_kernel_tmevtb_delete
+#define tmevt_lefttim				_kernel_tmevt_lefttim
+#define signal_time					_kernel_signal_time
+
+/*
+ *  semaphore.c
+ */
+#define initialize_semaphore		_kernel_initialize_semaphore
+
+/*
+ *  eventflag.c
+ */
+#define initialize_eventflag		_kernel_initialize_eventflag
+#define check_flg_cond				_kernel_check_flg_cond
+
+/*
+ *  dataqueue.c
+ */
+#define initialize_dataqueue		_kernel_initialize_dataqueue
+#define enqueue_data				_kernel_enqueue_data
+#define force_enqueue_data			_kernel_force_enqueue_data
+#define dequeue_data				_kernel_dequeue_data
+#define send_data					_kernel_send_data
+#define force_send_data				_kernel_force_send_data
+#define receive_data				_kernel_receive_data
+
+/*
+ *  pridataq.c
+ */
+#define initialize_pridataq			_kernel_initialize_pridataq
+#define enqueue_pridata				_kernel_enqueue_pridata
+#define dequeue_pridata				_kernel_dequeue_pridata
+#define send_pridata				_kernel_send_pridata
+#define receive_pridata				_kernel_receive_pridata
+
+/*
+ *  mailbox.c
+ */
+#define initialize_mailbox			_kernel_initialize_mailbox
+
+/*
+ *  mempfix.c
+ */
+#define initialize_mempfix			_kernel_initialize_mempfix
+#define get_mpf_block				_kernel_get_mpf_block
+
+/*
+ *  cyclic.c
+ */
+#define initialize_cyclic			_kernel_initialize_cyclic
+#define call_cychdr					_kernel_call_cychdr
+
+/*
+ *  alarm.c
+ */
+#define initialize_alarm			_kernel_initialize_alarm
+#define call_almhdr					_kernel_call_almhdr
+
+/*
+ *  interrupt.c
+ */
+#define initialize_interrupt		_kernel_initialize_interrupt
+
+/*
+ *  exception.c
+ */
+#define initialize_exception		_kernel_initialize_exception
+
+/*
+ *  kernel_cfg.c
+ */
+#define initialize_object			_kernel_initialize_object
+#define call_inirtn					_kernel_call_inirtn
+#define call_terrtn					_kernel_call_terrtn
+#define tmax_tskid					_kernel_tmax_tskid
+#define tinib_table					_kernel_tinib_table
+#define torder_table				_kernel_torder_table
+#define tcb_table					_kernel_tcb_table
+#define tmax_semid					_kernel_tmax_semid
+#define seminib_table				_kernel_seminib_table
+#define semcb_table					_kernel_semcb_table
+#define tmax_flgid					_kernel_tmax_flgid
+#define flginib_table				_kernel_flginib_table
+#define flgcb_table					_kernel_flgcb_table
+#define tmax_dtqid					_kernel_tmax_dtqid
+#define dtqcb_table					_kernel_dtqcb_table
+#define dtqinib_table				_kernel_dtqinib_table
+#define tmax_pdqid					_kernel_tmax_pdqid
+#define pdqcb_table					_kernel_pdqcb_table
+#define pdqinib_table				_kernel_pdqinib_table
+#define tmax_mbxid					_kernel_tmax_mbxid
+#define mbxcb_table					_kernel_mbxcb_table
+#define mbxinib_table				_kernel_mbxinib_table
+#define tmax_mpfid					_kernel_tmax_mpfid
+#define mpfinib_table				_kernel_mpfinib_table
+#define mpfcb_table					_kernel_mpfcb_table
+#define tmax_cycid					_kernel_tmax_cycid
+#define cycinib_table				_kernel_cycinib_table
+#define cyccb_table					_kernel_cyccb_table
+#define tmax_almid					_kernel_tmax_almid
+#define alminib_table				_kernel_alminib_table
+#define almcb_table					_kernel_almcb_table
+#define tnum_inhno					_kernel_tnum_inhno
+#define inhinib_table				_kernel_inhinib_table
+#define tnum_intno					_kernel_tnum_intno
+#define intinib_table				_kernel_intinib_table
+#define tnum_excno					_kernel_tnum_excno
+#define excinib_table				_kernel_excinib_table
+#define tmevt_heap					_kernel_tmevt_heap
+#define istksz						_kernel_istksz
+#define istk						_kernel_istk
+#define istkpt						_kernel_istkpt
+
+
+#ifdef TOPPERS_LABEL_ASM
+
+/*
+ *  startup.c
+ */
+#define _kerflg						__kernel_kerflg
+#define _exit_kernel				__kernel_exit_kernel
+
+/*
+ *  task.c
+ */
+#define _p_runtsk					__kernel_p_runtsk
+#define _p_schedtsk					__kernel_p_schedtsk
+#define _reqflg						__kernel_reqflg
+#define _ipmflg						__kernel_ipmflg
+#define _disdsp						__kernel_disdsp
+#define _dspflg						__kernel_dspflg
+#define _ready_queue				__kernel_ready_queue
+#define _ready_primap				__kernel_ready_primap
+#define _ready_primap1				__kernel_ready_primap1
+#define _ready_primap2				__kernel_ready_primap2
+#define _initialize_task			__kernel_initialize_task
+#define _search_schedtsk			__kernel_search_schedtsk
+#define _make_runnable				__kernel_make_runnable
+#define _make_non_runnable			__kernel_make_non_runnable
+#define _make_dormant				__kernel_make_dormant
+#define _make_active				__kernel_make_active
+#define _change_priority			__kernel_change_priority
+#define _rotate_ready_queue			__kernel_rotate_ready_queue
+#define _call_texrtn				__kernel_call_texrtn
+#define _calltex					__kernel_calltex
+
+/*
+ *  wait.c
+ */
+#define _make_wait_tmout			__kernel_make_wait_tmout
+#define _wait_complete				__kernel_wait_complete
+#define _wait_tmout					__kernel_wait_tmout
+#define _wait_tmout_ok				__kernel_wait_tmout_ok
+#define _wait_release				__kernel_wait_release
+#define _wobj_make_wait				__kernel_wobj_make_wait
+#define _wobj_make_wait_tmout		__kernel_wobj_make_wait_tmout
+#define _init_wait_queue			__kernel_init_wait_queue
+
+/*
+ *  time_event.c
+ */
+#define _current_time				__kernel_current_time
+#define _min_time					__kernel_min_time
+#define _next_time					__kernel_next_time
+#define _next_subtime				__kernel_next_subtime
+#define _last_index					__kernel_last_index
+#define _initialize_tmevt			__kernel_initialize_tmevt
+#define _tmevt_up					__kernel_tmevt_up
+#define _tmevt_down					__kernel_tmevt_down
+#define _tmevtb_insert				__kernel_tmevtb_insert
+#define _tmevtb_delete				__kernel_tmevtb_delete
+#define _tmevt_lefttim				__kernel_tmevt_lefttim
+#define _signal_time				__kernel_signal_time
+
+/*
+ *  semaphore.c
+ */
+#define _initialize_semaphore		__kernel_initialize_semaphore
+
+/*
+ *  eventflag.c
+ */
+#define _initialize_eventflag		__kernel_initialize_eventflag
+#define _check_flg_cond				__kernel_check_flg_cond
+
+/*
+ *  dataqueue.c
+ */
+#define _initialize_dataqueue		__kernel_initialize_dataqueue
+#define _enqueue_data				__kernel_enqueue_data
+#define _force_enqueue_data			__kernel_force_enqueue_data
+#define _dequeue_data				__kernel_dequeue_data
+#define _send_data					__kernel_send_data
+#define _force_send_data			__kernel_force_send_data
+#define _receive_data				__kernel_receive_data
+
+/*
+ *  pridataq.c
+ */
+#define _initialize_pridataq		__kernel_initialize_pridataq
+#define _enqueue_pridata			__kernel_enqueue_pridata
+#define _dequeue_pridata			__kernel_dequeue_pridata
+#define _send_pridata				__kernel_send_pridata
+#define _receive_pridata			__kernel_receive_pridata
+
+/*
+ *  mailbox.c
+ */
+#define _initialize_mailbox			__kernel_initialize_mailbox
+
+/*
+ *  mempfix.c
+ */
+#define _initialize_mempfix			__kernel_initialize_mempfix
+#define _get_mpf_block				__kernel_get_mpf_block
+
+/*
+ *  cyclic.c
+ */
+#define _initialize_cyclic			__kernel_initialize_cyclic
+#define _call_cychdr				__kernel_call_cychdr
+
+/*
+ *  alarm.c
+ */
+#define _initialize_alarm			__kernel_initialize_alarm
+#define _call_almhdr				__kernel_call_almhdr
+
+/*
+ *  interrupt.c
+ */
+#define _initialize_interrupt		__kernel_initialize_interrupt
+
+/*
+ *  exception.c
+ */
+#define _initialize_exception		__kernel_initialize_exception
+
+/*
+ *  kernel_cfg.c
+ */
+#define _initialize_object			__kernel_initialize_object
+#define _call_inirtn				__kernel_call_inirtn
+#define _call_terrtn				__kernel_call_terrtn
+#define _tmax_tskid					__kernel_tmax_tskid
+#define _tinib_table				__kernel_tinib_table
+#define _torder_table				__kernel_torder_table
+#define _tcb_table					__kernel_tcb_table
+#define _tmax_semid					__kernel_tmax_semid
+#define _seminib_table				__kernel_seminib_table
+#define _semcb_table				__kernel_semcb_table
+#define _tmax_flgid					__kernel_tmax_flgid
+#define _flginib_table				__kernel_flginib_table
+#define _flgcb_table				__kernel_flgcb_table
+#define _tmax_dtqid					__kernel_tmax_dtqid
+#define _dtqcb_table				__kernel_dtqcb_table
+#define _dtqinib_table				__kernel_dtqinib_table
+#define _tmax_pdqid					__kernel_tmax_pdqid
+#define _pdqcb_table				__kernel_pdqcb_table
+#define _pdqinib_table				__kernel_pdqinib_table
+#define _tmax_mbxid					__kernel_tmax_mbxid
+#define _mbxcb_table				__kernel_mbxcb_table
+#define _mbxinib_table				__kernel_mbxinib_table
+#define _tmax_mpfid					__kernel_tmax_mpfid
+#define _mpfinib_table				__kernel_mpfinib_table
+#define _mpfcb_table				__kernel_mpfcb_table
+#define _tmax_cycid					__kernel_tmax_cycid
+#define _cycinib_table				__kernel_cycinib_table
+#define _cyccb_table				__kernel_cyccb_table
+#define _tmax_almid					__kernel_tmax_almid
+#define _alminib_table				__kernel_alminib_table
+#define _almcb_table				__kernel_almcb_table
+#define _tnum_inhno					__kernel_tnum_inhno
+#define _inhinib_table				__kernel_inhinib_table
+#define _tnum_intno					__kernel_tnum_intno
+#define _intinib_table				__kernel_intinib_table
+#define _tnum_excno					__kernel_tnum_excno
+#define _excinib_table				__kernel_excinib_table
+#define _tmevt_heap					__kernel_tmevt_heap
+#define _istksz						__kernel_istksz
+#define _istk						__kernel_istk
+#define _istkpt						__kernel_istkpt
+
+
+#endif /* TOPPERS_LABEL_ASM */
+
+#include "target_rename.h"
+
+#endif /* TOPPERS_KERNEL_RENAME_H */
Index: /asp_ewarm/asp-1.7.0/extension/pri_level/kernel/kernel_unrename.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/pri_level/kernel/kernel_unrename.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/pri_level/kernel/kernel_unrename.h	(revision 61)
@@ -0,0 +1,349 @@
+/* This file is generated from kernel_rename.def by genrename. */
+
+/* This file is included only when kernel_rename.h has been included. */
+#ifdef TOPPERS_KERNEL_RENAME_H
+#undef TOPPERS_KERNEL_RENAME_H
+
+/*
+ *  startup.c
+ */
+#undef kerflg
+#undef exit_kernel
+
+/*
+ *  task.c
+ */
+#undef p_runtsk
+#undef p_schedtsk
+#undef reqflg
+#undef ipmflg
+#undef disdsp
+#undef dspflg
+#undef ready_queue
+#undef ready_primap
+#undef ready_primap1
+#undef ready_primap2
+#undef initialize_task
+#undef search_schedtsk
+#undef make_runnable
+#undef make_non_runnable
+#undef make_dormant
+#undef make_active
+#undef change_priority
+#undef rotate_ready_queue
+#undef call_texrtn
+#undef calltex
+
+/*
+ *  wait.c
+ */
+#undef make_wait_tmout
+#undef wait_complete
+#undef wait_tmout
+#undef wait_tmout_ok
+#undef wait_release
+#undef wobj_make_wait
+#undef wobj_make_wait_tmout
+#undef init_wait_queue
+
+/*
+ *  time_event.c
+ */
+#undef current_time
+#undef min_time
+#undef next_time
+#undef next_subtime
+#undef last_index
+#undef initialize_tmevt
+#undef tmevt_up
+#undef tmevt_down
+#undef tmevtb_insert
+#undef tmevtb_delete
+#undef tmevt_lefttim
+#undef signal_time
+
+/*
+ *  semaphore.c
+ */
+#undef initialize_semaphore
+
+/*
+ *  eventflag.c
+ */
+#undef initialize_eventflag
+#undef check_flg_cond
+
+/*
+ *  dataqueue.c
+ */
+#undef initialize_dataqueue
+#undef enqueue_data
+#undef force_enqueue_data
+#undef dequeue_data
+#undef send_data
+#undef force_send_data
+#undef receive_data
+
+/*
+ *  pridataq.c
+ */
+#undef initialize_pridataq
+#undef enqueue_pridata
+#undef dequeue_pridata
+#undef send_pridata
+#undef receive_pridata
+
+/*
+ *  mailbox.c
+ */
+#undef initialize_mailbox
+
+/*
+ *  mempfix.c
+ */
+#undef initialize_mempfix
+#undef get_mpf_block
+
+/*
+ *  cyclic.c
+ */
+#undef initialize_cyclic
+#undef call_cychdr
+
+/*
+ *  alarm.c
+ */
+#undef initialize_alarm
+#undef call_almhdr
+
+/*
+ *  interrupt.c
+ */
+#undef initialize_interrupt
+
+/*
+ *  exception.c
+ */
+#undef initialize_exception
+
+/*
+ *  kernel_cfg.c
+ */
+#undef initialize_object
+#undef call_inirtn
+#undef call_terrtn
+#undef tmax_tskid
+#undef tinib_table
+#undef torder_table
+#undef tcb_table
+#undef tmax_semid
+#undef seminib_table
+#undef semcb_table
+#undef tmax_flgid
+#undef flginib_table
+#undef flgcb_table
+#undef tmax_dtqid
+#undef dtqcb_table
+#undef dtqinib_table
+#undef tmax_pdqid
+#undef pdqcb_table
+#undef pdqinib_table
+#undef tmax_mbxid
+#undef mbxcb_table
+#undef mbxinib_table
+#undef tmax_mpfid
+#undef mpfinib_table
+#undef mpfcb_table
+#undef tmax_cycid
+#undef cycinib_table
+#undef cyccb_table
+#undef tmax_almid
+#undef alminib_table
+#undef almcb_table
+#undef tnum_inhno
+#undef inhinib_table
+#undef tnum_intno
+#undef intinib_table
+#undef tnum_excno
+#undef excinib_table
+#undef tmevt_heap
+#undef istksz
+#undef istk
+#undef istkpt
+
+
+#ifdef TOPPERS_LABEL_ASM
+
+/*
+ *  startup.c
+ */
+#undef _kerflg
+#undef _exit_kernel
+
+/*
+ *  task.c
+ */
+#undef _p_runtsk
+#undef _p_schedtsk
+#undef _reqflg
+#undef _ipmflg
+#undef _disdsp
+#undef _dspflg
+#undef _ready_queue
+#undef _ready_primap
+#undef _ready_primap1
+#undef _ready_primap2
+#undef _initialize_task
+#undef _search_schedtsk
+#undef _make_runnable
+#undef _make_non_runnable
+#undef _make_dormant
+#undef _make_active
+#undef _change_priority
+#undef _rotate_ready_queue
+#undef _call_texrtn
+#undef _calltex
+
+/*
+ *  wait.c
+ */
+#undef _make_wait_tmout
+#undef _wait_complete
+#undef _wait_tmout
+#undef _wait_tmout_ok
+#undef _wait_release
+#undef _wobj_make_wait
+#undef _wobj_make_wait_tmout
+#undef _init_wait_queue
+
+/*
+ *  time_event.c
+ */
+#undef _current_time
+#undef _min_time
+#undef _next_time
+#undef _next_subtime
+#undef _last_index
+#undef _initialize_tmevt
+#undef _tmevt_up
+#undef _tmevt_down
+#undef _tmevtb_insert
+#undef _tmevtb_delete
+#undef _tmevt_lefttim
+#undef _signal_time
+
+/*
+ *  semaphore.c
+ */
+#undef _initialize_semaphore
+
+/*
+ *  eventflag.c
+ */
+#undef _initialize_eventflag
+#undef _check_flg_cond
+
+/*
+ *  dataqueue.c
+ */
+#undef _initialize_dataqueue
+#undef _enqueue_data
+#undef _force_enqueue_data
+#undef _dequeue_data
+#undef _send_data
+#undef _force_send_data
+#undef _receive_data
+
+/*
+ *  pridataq.c
+ */
+#undef _initialize_pridataq
+#undef _enqueue_pridata
+#undef _dequeue_pridata
+#undef _send_pridata
+#undef _receive_pridata
+
+/*
+ *  mailbox.c
+ */
+#undef _initialize_mailbox
+
+/*
+ *  mempfix.c
+ */
+#undef _initialize_mempfix
+#undef _get_mpf_block
+
+/*
+ *  cyclic.c
+ */
+#undef _initialize_cyclic
+#undef _call_cychdr
+
+/*
+ *  alarm.c
+ */
+#undef _initialize_alarm
+#undef _call_almhdr
+
+/*
+ *  interrupt.c
+ */
+#undef _initialize_interrupt
+
+/*
+ *  exception.c
+ */
+#undef _initialize_exception
+
+/*
+ *  kernel_cfg.c
+ */
+#undef _initialize_object
+#undef _call_inirtn
+#undef _call_terrtn
+#undef _tmax_tskid
+#undef _tinib_table
+#undef _torder_table
+#undef _tcb_table
+#undef _tmax_semid
+#undef _seminib_table
+#undef _semcb_table
+#undef _tmax_flgid
+#undef _flginib_table
+#undef _flgcb_table
+#undef _tmax_dtqid
+#undef _dtqcb_table
+#undef _dtqinib_table
+#undef _tmax_pdqid
+#undef _pdqcb_table
+#undef _pdqinib_table
+#undef _tmax_mbxid
+#undef _mbxcb_table
+#undef _mbxinib_table
+#undef _tmax_mpfid
+#undef _mpfinib_table
+#undef _mpfcb_table
+#undef _tmax_cycid
+#undef _cycinib_table
+#undef _cyccb_table
+#undef _tmax_almid
+#undef _alminib_table
+#undef _almcb_table
+#undef _tnum_inhno
+#undef _inhinib_table
+#undef _tnum_intno
+#undef _intinib_table
+#undef _tnum_excno
+#undef _excinib_table
+#undef _tmevt_heap
+#undef _istksz
+#undef _istk
+#undef _istkpt
+
+
+#endif /* TOPPERS_LABEL_ASM */
+
+#include "target_unrename.h"
+
+#endif /* TOPPERS_KERNEL_RENAME_H */
Index: /asp_ewarm/asp-1.7.0/extension/pri_level/kernel/task.c
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/pri_level/kernel/task.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/pri_level/kernel/task.c	(revision 61)
@@ -0,0 +1,533 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  $Id: task.c 2018 2010-12-31 13:43:05Z ertl-hiro $
+ */
+
+/*
+ *		^XNÇW
+[
+ */
+
+#include "kernel_impl.h"
+#include "wait.h"
+#include "task.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_TEX_ENTER
+#define LOG_TEX_ENTER(p_tcb, texptn)
+#endif /* LOG_TEX_ENTER */
+
+#ifndef LOG_TEX_LEAVE
+#define LOG_TEX_LEAVE(p_tcb)
+#endif /* LOG_TEX_LEAVE */
+
+#ifdef TOPPERS_tskini
+
+/*
+ *  ÀsóÔÌ^XN
+ */
+TCB		*p_runtsk;
+
+/*
+ *  ÅDæÊÌ^XN
+ */
+TCB		*p_schedtsk;
+
+/*
+ *  ^XNfBXpb`^^XNáO[`N®vtO
+ */
+bool_t	reqflg;
+
+/*
+ *  ÝDæx}XNSðóÔ
+ */
+bool_t	ipmflg;
+
+/*
+ *  fBXpb`Ö~óÔ
+ */
+bool_t	disdsp;
+
+/*
+ *  ^XNfBXpb`Â\óÔ
+ */
+bool_t	dspflg;
+
+/*
+ *  fBL
+[
+ */
+QUEUE	ready_queue[TNUM_TPRI];
+
+/*
+ *  fBL
+[T[`Ì½ßÌrbg}bv
+ */
+#ifdef PRIMAP_LEVEL_1
+uint16_t	ready_primap;
+#else /* PRIMAP_LEVEL_1 */
+uint16_t	ready_primap1;
+uint16_t	ready_primap2[TNUM_PRIMAP2];
+#endif /* PRIMAP_LEVEL_1 */
+
+/*
+ *  ^XNÇW
+[Ìú»
+ */
+void
+initialize_task(void)
+{
+	uint_t	i, j;
+	TCB		*p_tcb;
+
+	p_runtsk = p_schedtsk = NULL;
+	reqflg = false;
+	ipmflg = true;
+	disdsp = false;
+	dspflg = true;
+
+	for (i = 0; i < TNUM_TPRI; i++) {
+		queue_initialize(&(ready_queue[i]));
+	}
+#ifdef PRIMAP_LEVEL_1
+	ready_primap = 0U;
+#else /* PRIMAP_LEVEL_1 */
+	ready_primap1 = 0U;
+	for (i = 0; i < TNUM_PRIMAP2; i++) {
+		ready_primap2[i] = 0U;
+	}
+#endif /* PRIMAP_LEVEL_1 */
+
+	for (i = 0; i < tnum_tsk; i++) {
+		j = INDEX_TSK(torder_table[i]);
+		p_tcb = &(tcb_table[j]);
+		p_tcb->p_tinib = &(tinib_table[j]);
+		p_tcb->actque = false;
+		make_dormant(p_tcb);
+		if ((p_tcb->p_tinib->tskatr & TA_ACT) != 0U) {
+			make_active(p_tcb);
+		}
+	}
+}
+
+#endif /* TOPPERS_tskini */
+
+/*
+ *  rbg}bvT[`Ö
+ *
+ *  bitmapàÌ1ÌrbgÌàCÅàºÊiEjÌàÌðT[`µC»Ìrb
+ *  gÔðÔ·DrbgÔÍCÅºÊrbgð0Æ·éDbitmapÉ0ðwè
+ *  µÄÍÈçÈ¢D±ÌÖÅÍCbitmapª16rbgÅ é±Æð¼èµC
+ *  uint16_t^ÆµÄ¢éD
+ *
+ *  rbgT[`½ßðÂvZbTÅÍCrbgT[`½ßðg¤æ¤É
+ *  «¼µ½ûªø¦ªÇ¢êª éD±Ìæ¤ÈêÉÍC^[Qbg
+ *  Ë¶ÅrbgT[`½ßðgÁ½bitmap_searchðè`µC
+ *  OMIT_BITMAP_SEARCHð}Nè`·êÎæ¢DÜ½CrbgT[`½ßÌ
+ *  T[`ûüªtÈÇÌRÅDæxÆrbgÆÌÎðÏXµ½¢êÉ
+ *  ÍCPRIMAP_BITð}Nè`·êÎæ¢D
+ *
+ *  Ü½CCuÉffsª éÈçCÌæ¤Éè`µÄCuÖð
+ *  gÁ½ûªø¦ªÇ¢Â\«à éD
+ *		#define	bitmap_search(bitmap) (ffs(bitmap) - 1)
+ */
+#ifndef PRIMAP_BIT
+#define	PRIMAP_BIT(pri)		(1U << (pri))
+#endif /* PRIMAP_BIT */
+
+#ifndef OMIT_BITMAP_SEARCH
+
+static const unsigned char bitmap_search_table[] = { 0, 1, 0, 2, 0, 1, 0,
+												3, 0, 1, 0, 2, 0, 1, 0 };
+
+Inline uint_t
+bitmap_search(uint16_t bitmap)
+{
+	uint_t	n = 0U;
+
+	assert(bitmap != 0U);
+	if ((bitmap & 0x00ffU) == 0U) {
+		bitmap >>= 8;
+		n += 8;
+	}
+	if ((bitmap & 0x0fU) == 0U) {
+		bitmap >>= 4;
+		n += 4;
+	}
+	return(n + bitmap_search_table[(bitmap & 0x0fU) - 1]);
+}
+
+#endif /* OMIT_BITMAP_SEARCH */
+
+/*
+ *  Dæxrbg}bvªó©Ì`FbN
+ */
+Inline bool_t
+primap_empty(void)
+{
+#ifdef PRIMAP_LEVEL_1
+	return(ready_primap == 0U);
+#else /* PRIMAP_LEVEL_1 */
+	return(ready_primap1 == 0U);
+#endif /* PRIMAP_LEVEL_1 */
+}
+
+/*
+ *  Dæxrbg}bvÌT[`
+ */
+Inline uint_t
+primap_search(void)
+{
+#ifdef PRIMAP_LEVEL_1
+	return(bitmap_search(ready_primap));
+#else /* PRIMAP_LEVEL_1 */
+	uint_t	i;
+
+	i = bitmap_search(ready_primap1);
+	return(i * TBIT_PRIMAP + bitmap_search(ready_primap2[i]));
+#endif /* PRIMAP_LEVEL_1 */
+}
+
+/*
+ *  Dæxrbg}bvÌZbg
+ */
+Inline void
+primap_set(uint_t pri)
+{
+#ifdef PRIMAP_LEVEL_1
+	ready_primap |= PRIMAP_BIT(pri);
+#else /* PRIMAP_LEVEL_1 */
+	ready_primap2[pri / TBIT_PRIMAP] |= PRIMAP_BIT(pri % TBIT_PRIMAP);
+	ready_primap1 |= PRIMAP_BIT(pri / TBIT_PRIMAP);
+#endif /* PRIMAP_LEVEL_1 */
+}
+
+/*
+ *  Dæxrbg}bvÌNA
+ */
+Inline void
+primap_clear(uint_t pri)
+{
+#ifdef PRIMAP_LEVEL_1
+	ready_primap &= ~PRIMAP_BIT(pri);
+#else /* PRIMAP_LEVEL_1 */
+	if ((ready_primap2[pri / TBIT_PRIMAP] &= ~PRIMAP_BIT(pri % TBIT_PRIMAP))
+																	== 0U) {
+		ready_primap1 &= ~PRIMAP_BIT(pri / TBIT_PRIMAP);
+	}
+#endif /* PRIMAP_LEVEL_1 */
+}
+
+/*
+ *  ÅDæÊ^XNÌT[`
+ */
+#ifdef TOPPERS_tsksched
+
+TCB *
+search_schedtsk(void)
+{
+	uint_t	schedpri;
+
+	schedpri = primap_search();
+	return((TCB *)(ready_queue[schedpri].p_next));
+}
+
+#endif /* TOPPERS_tsksched */
+
+/*
+ *  ÀsÅ«éóÔÖÌJÚ
+ *
+ *  ÅDæÊÌ^XNðXV·éÌÍCÀsÅ«é^XNªÈ©Á½ê
+ *  ÆCp_tcbÌDæxªÅDæÊÌ^XNÌDæxæèà¢êÅ 
+ *  éD
+ */
+#ifdef TOPPERS_tskrun
+
+bool_t
+make_runnable(TCB *p_tcb)
+{
+	uint_t	pri = p_tcb->priority;
+
+	queue_insert_prev(&(ready_queue[pri]), &(p_tcb->task_queue));
+	primap_set(pri);
+
+	if (p_schedtsk == (TCB *) NULL || pri < p_schedtsk->priority) {
+		p_schedtsk = p_tcb;
+		return(dspflg);
+	}
+	return(false);
+}
+
+#endif /* TOPPERS_tskrun */
+
+/*
+ *  ÀsÅ«éóÔ©ç¼ÌóÔÖÌJÚ
+ *
+ *  ÅDæÊÌ^XNðXV·éÌÍCp_tcbªÅDæÊÌ^XNÅ
+ *   Á½êÅ éDp_tcbÆ¯¶DæxÌ^XNª¼É éêÍCp_tcb
+ *  ÌÌ^XNªÅDæÊÉÈéD»¤ÅÈ¢êÍCfBL
+[ð
+ *  T[`·éKvª éD
+ */
+#ifdef TOPPERS_tsknrun
+
+bool_t
+make_non_runnable(TCB *p_tcb)
+{
+	uint_t	pri = p_tcb->priority;
+	QUEUE	*p_queue = &(ready_queue[pri]);
+
+	queue_delete(&(p_tcb->task_queue));
+	if (queue_empty(p_queue)) {
+		primap_clear(pri);
+		if (p_schedtsk == p_tcb) {
+			p_schedtsk = primap_empty() ? (TCB *) NULL : search_schedtsk();
+			return(dspflg);
+		}
+	}
+	else {
+		if (p_schedtsk == p_tcb) {
+			p_schedtsk = (TCB *)(p_queue->p_next);
+			return(dspflg);
+		}
+	}
+	return(false);
+}
+
+#endif /* TOPPERS_tsknrun */
+
+/*
+ *  x~óÔÖÌJÚ
+ */
+#ifdef TOPPERS_tskdmt
+
+void
+make_dormant(TCB *p_tcb)
+{
+	p_tcb->tstat = TS_DORMANT;
+	p_tcb->priority = p_tcb->p_tinib->ipriority;
+	p_tcb->wupque = false;
+	p_tcb->enatex = false;
+	p_tcb->texptn = 0U;
+	LOG_TSKSTAT(p_tcb);
+}
+
+#endif /* TOPPERS_tskdmt */
+
+/*
+ *  x~óÔ©çÀsÅ«éóÔÖÌJÚ
+ */
+#ifdef TOPPERS_tskact
+
+bool_t
+make_active(TCB *p_tcb)
+{
+	activate_context(p_tcb);
+	p_tcb->tstat = TS_RUNNABLE;
+	LOG_TSKSTAT(p_tcb);
+	return(make_runnable(p_tcb));
+}
+
+#endif /* TOPPERS_tskact */
+
+/*
+ *  ^XNÌDæxÌÏX
+ *
+ *  ^XNªÀsÅ«éóÔÌêÉÍCfBL
+[ÌÅÌÊuðÏX·
+ *  éDIuWFNgÌÒ¿L
+[ÌÅÒ¿óÔÉÈÁÄ¢éêÉÍCÒ
+ *  ¿L
+[ÌÅÌÊuðÏX·éD
+ *
+ *  ÅDæÊÌ^XNðXV·éÌÍC(1) p_tcbªÅDæÊÌ^X
+ *  NÅ ÁÄC»ÌDæxðº°½êC(2) p_tcbªÅDæÊÌ^X
+ *  NÅÍÈ­CÏXãÌDæxªÅDæÊÌ^XNÌDæxæèà¢
+ *  êÅ éD(1)ÌêÉÍCfBL
+[ðT[`·éKvª éD
+ */
+#ifdef TOPPERS_tskpri
+
+bool_t
+change_priority(TCB *p_tcb, uint_t newpri)
+{
+	uint_t	oldpri;
+
+	oldpri = p_tcb->priority;
+	p_tcb->priority = newpri;
+
+	if (TSTAT_RUNNABLE(p_tcb->tstat)) {
+		/*
+		 *  ^XNªÀsÅ«éóÔÌê
+		 */
+		queue_delete(&(p_tcb->task_queue));
+		if (queue_empty(&(ready_queue[oldpri]))) {
+			primap_clear(oldpri);
+		}
+		queue_insert_prev(&(ready_queue[newpri]), &(p_tcb->task_queue));
+		primap_set(newpri);
+
+		if (p_schedtsk == p_tcb) {
+			if (newpri >= oldpri) {
+				p_schedtsk = search_schedtsk();
+				return(p_schedtsk != p_tcb && dspflg);
+			}
+		}
+		else {
+			if (newpri < p_schedtsk->priority) {
+				p_schedtsk = p_tcb;
+				return(dspflg);
+			}
+		}
+	}
+	else {
+		if (TSTAT_WAIT_WOBJCB(p_tcb->tstat)) {
+			/*
+			 *  ^XNªC¯úEÊMIuWFNgÌÇubNÌ¤Ê
+			 *  ªiWOBJCBjÌÒ¿L
+[ÉÂÈªêÄ¢éê
+			 */
+			wobj_change_priority(((WINFO_WOBJ *)(p_tcb->p_winfo))->p_wobjcb,
+																	p_tcb);
+		}
+	}
+	return(false);
+}
+
+#endif /* TOPPERS_tskpri */
+
+/*
+ *  fBL
+[Ìñ]
+ *
+ *  ÅDæÊÌ^XNðXV·éÌÍCÅDæÊÌ^XNª^XNL
+ *  
+[ÌöÉÚ®µ½êÅ éD
+ */
+#ifdef TOPPERS_tskrot
+
+bool_t
+rotate_ready_queue(uint_t pri)
+{
+	QUEUE	*p_queue = &(ready_queue[pri]);
+	QUEUE	*p_entry;
+
+	if (!queue_empty(p_queue) && p_queue->p_next->p_next != p_queue) {
+		p_entry = queue_delete_next(p_queue);
+		queue_insert_prev(p_queue, p_entry);
+		if (p_schedtsk == (TCB *) p_entry) {
+			p_schedtsk = (TCB *)(p_queue->p_next);
+			return(dspflg);
+		}
+	}
+	return(false);
+}
+
+#endif /* TOPPERS_tskrot */
+
+/*
+ *  ^XNáO[`ÌÄoµ
+ *
+ *  ASPJ[lÅÍC^XNáO[`àÅCPUbNóÔÉJÚµC
+ *  ³ÌóÔÉß³¸É^[µ½êCJ[lª³ÌóÔÉß·D
+ */
+#ifdef TOPPERS_tsktex
+
+void
+call_texrtn(void)
+{
+	TEXPTN	texptn;
+	bool_t	saved_disdsp;
+
+	saved_disdsp = disdsp;
+	p_runtsk->enatex = false;
+	do {
+		texptn = p_runtsk->texptn;
+		p_runtsk->texptn = 0U;
+
+		t_unlock_cpu();
+		LOG_TEX_ENTER(p_runtsk, texptn);
+		(*((TEXRTN)(p_runtsk->p_tinib->texrtn)))(texptn,
+												p_runtsk->p_tinib->exinf);
+		LOG_TEX_LEAVE(p_runtsk);
+		if (!t_sense_lock()) {
+			t_lock_cpu();
+		}
+		if (!ipmflg) {
+			t_set_ipm(TIPM_ENAALL);
+			ipmflg = true;
+		}
+		disdsp = saved_disdsp;
+		dspflg = !disdsp;
+		p_runtsk->enatex = false;
+		if (p_runtsk != p_schedtsk && dspflg) {
+			/*
+			 *  ±±ÅdispatchðÄÑo·ÍCÝÄAÄoµÉÈÁÄ
+			 *  ¢éªCdispatchðÄÔOÉp_runtsk->enatexðfalseÉµÄ
+			 *  ¨¯ÎxáªÈ¢D»ÌRÉÂ¢ÄÍCuTOPPERS/ASP J[
+			 *  l ÝvvðQÆÌ±ÆD
+			 */
+			dispatch();
+		}
+	} while (p_runtsk->texptn != 0U);
+	p_runtsk->enatex = true;
+}
+
+/*
+ *  ^XNáO[`ÌN®
+ */
+#ifndef OMIT_CALLTEX
+
+void
+calltex(void)
+{
+	if (p_runtsk->enatex && p_runtsk->texptn != 0U && ipmflg) {
+		call_texrtn();
+	}
+}
+
+#endif /* OMIT_CALLTEX */
+#endif /* TOPPERS_tsktex */
Index: /asp_ewarm/asp-1.7.0/extension/pri_level/kernel/task.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/pri_level/kernel/task.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/pri_level/kernel/task.h	(revision 61)
@@ -0,0 +1,537 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  $Id: task.h 2018 2010-12-31 13:43:05Z ertl-hiro $
+ */
+
+/*
+ *		^XNÇW
+[
+ */
+
+#ifndef TOPPERS_TASK_H
+#define TOPPERS_TASK_H
+
+#include <queue.h>
+#include "time_event.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_TSKSTAT
+#define LOG_TSKSTAT(p_tcb)
+#endif /* LOG_TSKSTAT */
+
+/*
+ *  ^XNDæxÌà\»EO\»Ï·}N
+ */
+#define INT_PRIORITY(x)		((uint_t)((x) - TMIN_TPRI))
+#define EXT_TSKPRI(x)		((PRI)(x) + TMIN_TPRI)
+
+/*
+ *  ^XNóÔÌà\»
+ *
+ *  TCBÌ^XNóÔÅÍCÀsóÔiRUNNINGjÆÀsÂ\óÔiREADYj
+ *  ÍæÊµÈ¢D¼óÔðÌµÄCÀsÅ«éóÔiRUNNABLEjÆÄÔD
+ *  ñdÒ¿óÔÍC(TS_WAITING | TS_SUSPENDED)Å\·DTS_WAIT_???ÍÒ
+ *  ¿vöð\µCÒ¿óÔiñdÒ¿óÔðÜÞjÌêÉÌÝÝè·éD
+ */
+#define TS_DORMANT		0x00U			/* x~óÔ */
+#define TS_RUNNABLE		0x01U			/* ÀsÅ«éóÔ */
+#define TS_WAITING		0x02U			/* Ò¿óÔ */
+#define TS_SUSPENDED	0x04U			/* ­§Ò¿óÔ */
+
+#define TS_WAIT_DLY		(0x00U << 3)	/* ÔoßÒ¿ */
+#define TS_WAIT_SLP		(0x01U << 3)	/* N°Ò¿ */
+#define TS_WAIT_RDTQ	(0x02U << 3)	/* f[^L
+[©çÌóMÒ¿ */
+#define TS_WAIT_RPDQ	(0x03U << 3)	/* Dæxf[^L
+[©çÌóMÒ¿ */
+#define TS_WAIT_SEM		(0x04U << 3)	/* Z}tH¹Ìl¾Ò¿ */
+#define TS_WAIT_FLG		(0x05U << 3)	/* CxgtOÒ¿ */
+#define TS_WAIT_SDTQ	(0x06U << 3)	/* f[^L
+[ÖÌMÒ¿ */
+#define TS_WAIT_SPDQ	(0x07U << 3)	/* Dæxf[^L
+[ÖÌMÒ¿ */
+#define TS_WAIT_MBX		(0x08U << 3)	/* [{bNX©çÌóMÒ¿ */
+#define TS_WAIT_MPF		(0x09U << 3)	/* Åè·ubNÌl¾Ò¿ */
+
+/*
+ *  ^XNóÔ»Ê}N
+ *
+ *  TSTAT_DORMANTÍ^XNªx~óÔÅ é©Ç¤©ðCTSTAT_RUNNABLEÍ
+ *  ^XNªÀsÅ«éóÔÅ é©Ç¤©ð»Ê·éDTSTAT_WAITINGÍÒ
+ *  ¿óÔÆñdÒ¿óÔÌ¢¸ê©Å é©Ç¤©ðCTSTAT_SUSPENDEDÍ
+ *  ­§Ò¿óÔÆñdÒ¿óÔÌ¢¸ê©Å é©Ç¤©ð»Ê·éD
+ */
+#define TSTAT_DORMANT(tstat)	((tstat) == TS_DORMANT)
+#define TSTAT_RUNNABLE(tstat)	(((tstat) & TS_RUNNABLE) != 0U)
+#define TSTAT_WAITING(tstat)	(((tstat) & TS_WAITING) != 0U)
+#define TSTAT_SUSPENDED(tstat)	(((tstat) & TS_SUSPENDED) != 0U)
+
+/*
+ *  ^XNÒ¿vö»Ê}N
+ *
+ *  TSTAT_WAIT_SLPÍ^XNªN°Ò¿Å é©Ç¤©ðCTSTAT_WAIT_WOBJ
+ *  Í^XNª¯úEÊMIuWFNgÉÎ·éÒ¿Å é©i¾¢·¦éÆC
+ *  ¯úÊMIuWFNgÌÒ¿L
+[ÉÂÈªêÄ¢é©jÇ¤©ð»Ê·
+ *  éDÜ½CTSTAT_WAIT_WOBJCBÍ^XNª¯úEÊMIuWFNgÌÇ
+ *  ubNÌ¤ÊªiWOBJCBjÌÒ¿L
+[ÉÂÈªêÄ¢é©Ç¤©ð
+ *  »Ê·éD
+ *
+ *  TSTAT_WAIT_SLPÍCCÓÌ^XNóÔÌ©çC^XNªN°Ò¿Å é
+ *  ±Æð»ÊÅ«éD·Èí¿CTSTAT_WAITINGÉæèÒ¿óÔÅ é±Æð
+ *  »Ê¹¸ÉCTSTAT_SLP¾¯ðp¢ÄN°Ò¿óÔÅ é±Æð»ÊÅ«éD
+ *  ±êðø¦IÉÀ»·é½ßÉCTS_WAIT_SLPÌlðC(0x00U << 3)ÅÍÈ
+ *  ­(0x01U << 3)ÆµÄ¢éD»Ì½ßC^XNªÔoßÒ¿óÔÅ é
+ *  ±Æð»Ê·é½ßÌTSTAT_WAIT_DLYðCTSTAT_WAIT_SLPÆ¯lÌû@Å
+ *  À»·é±ÆÍÅ«È¢D
+ */
+#define TS_WAIT_MASK	(0x0fU << 3)	/* Ò¿vöÌæoµ}XN */
+
+#define TSTAT_WAIT_SLP(tstat)		(((tstat) & TS_WAIT_MASK) == TS_WAIT_SLP)
+#define TSTAT_WAIT_WOBJ(tstat)		(((tstat) & TS_WAIT_MASK) >= TS_WAIT_RDTQ)
+#define TSTAT_WAIT_WOBJCB(tstat)	(((tstat) & TS_WAIT_MASK) >= TS_WAIT_SEM)
+
+/*
+ *  Ò¿îñubNiWINFOjÌè`
+ *
+ *  ^XNªÒ¿óÔÌÔÍCTCB¨æÑ»Ìp_winfoÅw³êéWINFOðÌ
+ *  æ¤ÉÝèµÈ¯êÎÈçÈ¢D
+ *
+ *  (a) TCBÌ^XNóÔðÒ¿óÔiTS_WAITINGjÉ·éD»ÌÛÉCÒ¿
+ *  vöiTS_WAIT_???jàÝè·éD
+ *
+ *  (b) ^CAEgðÄ·é½ßÉC^CCxgubNðo^·éD
+ *  o^·é^CCxgubNÍCÒ¿ÉüéT[rXR[Ö
+ *  Ì[JÏÆµÄmÛµC»êÖÌ|C^ðWINFOÌp_tmevtbÉL
+ *  ¯·éD^CAEgÌÄªKvÈ¢êiivÒ¿ÌêjÉÍC
+ *  p_tmevtbðNULLÉ·éD
+ *
+ *  ¯úEÊMIuWFNgÉÎ·éÒ¿óÔÌêÉÍCWÌWINFOÉ
+ *  p_wobjcbtB[hðÇÁµ½\¢ÌiWINFO_WOBJCwait.hÅè`jðg
+ *  ¤DÜ½CÈºÌ(c)`(e)ÌÝèðs¤Kvª éD¯úEÊMIuWF
+ *  NgÉÖWµÈ¢Ò¿iN°Ò¿CÔoßÒ¿jÌêÉÍC(c)`(e)
+ *  ÍKvÈ¢D
+ *
+ *  (c) TCBðÒ¿ÎÛÌ¯úEÊMIuWFNgÌÒ¿L
+[ÉÂÈ®DÒ
+ *  ¿L
+[ÉÂÈ®½ßÉCtask_queueðg¤D
+ *
+ *  (d) Ò¿ÎÛÌ¯úEÊMIuWFNgÌÇubNÖÌ|C^ðC
+ *  WINFO_WOBJÌp_wobjcbÉL¯·éD
+ *
+ *  (e) Ò¿ÎÛÌ¯úEÊMIuWFNgÉË¶µÄL¯·é±ÆªKvÈ
+ *  îñª éêÉÍCWINFO_WOBJÉKvÈîñÌ½ßÌtB[hðÇÁ
+ *  µ½\¢Ìðè`µCWINFO_WOBJÌãíèÉp¢éD
+ *
+ *  Ò¿óÔðð·éÛÉÍCÒ¿ðµ½^XNÉÎ·éÔlðWINFOÌ
+ *  wercdÉÝè·éDwercdªKvÈÌÍÒ¿ðÈ~Å éÌÉÎµÄC
+ *  p_tmevtbÍÒ¿ðãÍKvÈ¢½ßCßñÌ½ßÉ¤pÌðgÁ
+ *  Ä¢éD»Ì½ßCwercdÖG[R[hðÝè·éÌÍC^CCxg
+ *  ubNðo^ðµ½ãÉµÈ¯êÎÈçÈ¢D
+ */
+typedef union waiting_information {
+	ER		wercd;			/* Ò¿ðÌG[R[h */
+	TMEVTB	*p_tmevtb;		/* Ò¿óÔpÌ^CCxgubN */
+} WINFO;
+
+/*
+ *  ^XNú»ubN
+ *
+ *  ^XNÉÖ·éîñðClªÏíçÈ¢½ßÉROMÉu¯éªi^XN
+ *  ú»ubNjÆClªÏ»·é½ßÉRAMÉu©È¯êÎÈçÈ¢
+ *  ªi^XNÇubNCTCBjÉª£µCTCBàÉÎ·é^XNú»
+ *  ubNðw·|C^ðüêéD^XNú»ubNàÉÎ·é
+ *  TCBðw·|C^ðüêéû@ÌûªCRAMÌßñÌÏ_©çÍ]Üµ¢
+ *  ªCÀsø¦ª«­Èé½ßÉÌpµÄ¢È¢D¼ÌIuWFNgÉÂ¢
+ *  Äà¯lÉµ¤D
+ *
+ *  ^XNú»ubNÉÍCDEF_TEXÅè`³êé^XNáO[`
+ *  ÉÖ·éîñàÜÞD
+ */
+typedef struct task_initialization_block {
+	ATR			tskatr;			/* ^XN®« */
+	intptr_t	exinf;			/* ^XNÌg£îñ */
+	TASK		task;			/* ^XNÌN®Ôn */
+	uint_t		ipriority;		/* ^XNÌN®Dæxià\»j */
+
+#ifdef USE_TSKINICTXB
+	TSKINICTXB	tskinictxb;		/* ^XNú»ReLXgubN */
+#else /* USE_TSKINICTXB */
+	SIZE		stksz;			/* X^bNÌæÌTCYiÛß½lj */
+	void		*stk;			/* X^bNÌæÌæªÔn */
+#endif /* USE_TSKINICTXB */
+
+	ATR			texatr;			/* ^XNáO[`®« */
+	TEXRTN		texrtn;			/* ^XNáO[`ÌN®Ôn */
+} TINIB;
+
+/*
+ *  TCBÌtB[hÌrbgÌè`
+ *
+ *  vZbTÉæÁÄÍCTCBÌtB[hÌrbgÅgpÊÆ
+ *  «\ªg[hItÉÈé½ßC^[QbgË¶ÉtB[hÌrbg
+ *  ðÏX·é±ÆðµÄ¢éD
+ */
+#ifndef TBIT_TCB_PRIORITY
+#define	TBIT_TCB_PRIORITY		8		/* prioritytB[hÌrbg */
+#endif /* TBIT_TCB_PRIORITY */
+
+/*
+ *  ^XNÇubNiTCBj
+ *
+ *  ASPJ[lÅÍC^XNÌN®vL
+[COÌÅåliTMAX_ACTCNTj
+ *  ÆN°vL
+[COÌÅåliTMAX_WUPCNTjÍ1ÉÅè³êÄ¢é
+ *  ½ßCL
+[CO³êÄ¢é©Ç¤©Ì^UlÅ\»·é±ÆªÅ«éD
+ *  Ü½C­§Ò¿vlXgÌÅåliTMAX_SUSCNTjª1ÉÅè³êÄ¢
+ *  éÌÅC­§Ò¿vlXgisuscntjÍKvÈ¢D
+ *
+ *  TCBÌ¢­Â©ÌtB[hÍCÁèÌ^XNóÔÅÌÝLøÈlðÛµC
+ *  »êÈOÌêÍlªÛØ³êÈ¢iæÁÄCQÆµÄÍÈçÈ¢jDe
+ *  tB[hªLøÈlðÛ·éðÍÌÊèD
+ *
+ *  Eú»ãÍíÉLøF
+ *  		p_tinibCtstatCactque
+ *  Ex~óÔÈOÅLøix~óÔÅÍúlÉÈÁÄ¢éjF
+ *  		priorityCwupqueCenatexCtexptn
+ *  EÒ¿óÔiñdÒ¿óÔðÜÞjÅLøF
+ *  		p_winfo
+ *  EÀsÅ«éóÔÆ¯úEÊMIuWFNgÉÎ·éÒ¿óÔÅLøF
+ *  		task_queue
+ *  EÀsÂ\óÔCÒ¿óÔC­§Ò¿óÔCñdÒ¿óÔÅLøF
+ *  		tskctxb
+ */
+typedef struct task_control_block {
+	QUEUE			task_queue;		/* ^XNL
+[ */
+	const TINIB		*p_tinib;		/* ú»ubNÖÌ|C^ */
+
+#ifdef UINT8_MAX
+	uint8_t			tstat;			/* ^XNóÔià\»j*/
+#else /* UINT8_MAX */
+	BIT_FIELD_UINT	tstat : 8;		/* ^XNóÔià\»j*/
+#endif /* UINT8_MAX */
+#if defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8)
+	uint8_t			priority;		/* »ÝÌDæxià\»j*/
+#else /* defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8) */
+	BIT_FIELD_UINT	priority : TBIT_TCB_PRIORITY;
+									/* »ÝÌDæxià\»j*/
+#endif  /* defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8) */
+	BIT_FIELD_BOOL	actque : 1;		/* N®vL
+[CO */
+	BIT_FIELD_BOOL	wupque : 1;		/* N°vL
+[CO */
+	BIT_FIELD_BOOL	enatex : 1;		/* ^XNáOÂóÔ */
+
+	TEXPTN			texptn;			/* Û¯áOvö */
+	WINFO			*p_winfo;		/* Ò¿îñubNÖÌ|C^ */
+	TSKCTXB			tskctxb;		/* ^XNReLXgubN */
+} TCB;
+
+/*
+ *  ÀsóÔÌ^XN
+ *
+ *  ÀsóÔÌ^XNivZbTªReLXgðÁÄ¢é^XNjÌ
+ *  TCBðw·|C^DÀsóÔÌ^XNªÈ¢êÍNULLÉ·éD
+ *
+ *  T[rXR[ÌÅC©^XNiT[rXR[ðÄÑoµ½^X
+ *  NjÉÖ·éîñðQÆ·éêÍp_runtskðg¤Dp_runtskð«·¦
+ *  éÌÍCfBXpb`iÆú»jÌÝÅ éD
+ */
+extern TCB	*p_runtsk;
+
+/*
+ *  ÅDæÊÌ^XN
+ *
+ *  ÀsÅ«é^XNÌÅÅDæÊÌ^XNÌTCBðw·|C^DÀ
+ *  sÅ«é^XNªÈ¢êÍNULLÉ·éD
+ *
+ *  fBXpb`Ö~óÔÈÇCfBXpb`ªÛ¯³êÄ¢éÔÍp_runtsk
+ *  ÆêvµÄ¢éÆÍÀçÈ¢D
+ */
+extern TCB	*p_schedtsk;
+
+/*
+ *  fBXpb`^^XNáO[`N®vtO
+ *
+ *  Ýnh^CPUáOnhÌoûÉCfBXpb`Ü½Í
+ *  ^XNáO[`ÌN®ðv·é±Æð¦·tOD
+ */
+extern bool_t	reqflg;
+
+/*
+ *  ÝDæx}XNSðóÔ
+ *
+ *  ÝDæx}XNSðóÔÅ é±Æð¦·tOD
+ */
+extern bool_t	ipmflg;
+
+/*
+ *  fBXpb`Ö~óÔ
+ *
+ *  fBXpb`Ö~óÔÅ é±Æð¦·tOD
+ */
+extern bool_t	disdsp;
+
+/*
+ *  ^XNfBXpb`Â\óÔ
+ *
+ *  ÝDæx}XNSðóÔÅ èCfBXpb`ÂóÔÅ éifB
+ *  Xpb`Ö~óÔÅÈ¢j±Æð¦·tOD
+ */
+extern bool_t	dspflg;
+
+/*
+ *  fBL
+[
+ *
+ *  fBL
+[ÍCÀsÅ«éóÔÌ^XNðÇ·é½ßÌL
+[Å éD
+ *  ÀsóÔÌ^XNàÇµÄ¢é½ßCfBiÀsÂ\jL
+[Æ¢¤
+ *  ¼ÌÍ³mÅÍÈ¢ªCfBL
+[Æ¢¤¼Ìªè
+µÄ¢é½ßC±
+ *  Ì¼ÌÅÄÔ±ÆÉ·éD
+ *
+ *  fBL
+[ÍCDæx²ÆÌ^XNL
+[Å\¬³êÄ¢éD^XNÌ
+ *  TCBÍCY·éDæxÌL
+[Éo^³êéD
+ */
+extern QUEUE	ready_queue[TNUM_TPRI];
+
+/*
+ *  fBL
+[T[`Ì½ßÌrbg}bv
+ *
+ *  fBL
+[ÌT[`ðø¦æ­s¤½ßÉCDæx²ÆÌ^XNL
+[
+ *  É^XNªüÁÄ¢é©Ç¤©ð¦·rbg}bvðpÓµÄ¢éDrb
+ *  g}bvðg¤±ÆÅCANZXÌñð¸ç·±ÆªÅ«éªC
+ *  rbgì½ßª[ÀµÄ¢È¢vZbTÅCDæxÌiKª­È¢
+ *  êÉÍCrbg}bvìÌI[o[wbhÌ½ßÉCtÉø¦ª¿
+ *  éÂ\«à éD
+ *
+ *  DæxÌiKÉæèCrbg}bvð1iKÉ·é©2iKÉ·é©ð
+ *  è·éD2iKÅ«èÈ¢êÉÍÎµÄ¢È¢D
+ */
+#define TBIT_PRIMAP		16				/* rbg}bv1Â ½èÌiK */
+
+#if TNUM_TPRI <= TBIT_PRIMAP
+#define PRIMAP_LEVEL_1					/* rbg}bvð1iKÉ */
+#elif TNUM_TPRI <= TBIT_PRIMAP * TBIT_PRIMAP
+#define PRIMAP_LEVEL_2					/* rbg}bvð2iKÉ */
+#define TNUM_PRIMAP2	((TNUM_TPRI + TBIT_PRIMAP - 1) / TBIT_PRIMAP)
+#else
+#error too many task priority levels.
+#endif
+
+#ifdef PRIMAP_LEVEL_1
+extern uint16_t	ready_primap;					/* Dæxrbg}bv */
+#else /* PRIMAP_LEVEL_1 */
+extern uint16_t	ready_primap1;					/* 1iÚÌDæxrbg}bv */
+extern uint16_t	ready_primap2[TNUM_PRIMAP2];	/* 2iÚÌDæxrbg}bv */
+#endif /* PRIMAP_LEVEL_1 */
+
+/*
+ *  ^XNIDÌÅålikernel_cfg.cj
+ */
+extern const ID	tmax_tskid;
+
+/*
+ *  ^XNú»ubNÌGAikernel_cfg.cj
+ */
+extern const TINIB	tinib_table[];
+
+/*
+ *  ^XN¶¬e[uikernel_cfg.cj
+ */
+extern const ID	torder_table[];
+
+/*
+ *  TCBÌGAikernel_cfg.cj
+ */
+extern TCB	tcb_table[];
+
+/*
+ *  ^XNÌ
+ */
+#define tnum_tsk	((uint_t)(tmax_tskid - TMIN_TSKID + 1))
+
+/*
+ *  ^XNID©çTCBðæèo·½ßÌ}N
+ */
+#define INDEX_TSK(tskid)	((uint_t)((tskid) - TMIN_TSKID))
+#define get_tcb(tskid)		(&(tcb_table[INDEX_TSK(tskid)]))
+#define get_tcb_self(tskid)	((tskid) == TSK_SELF ? p_runtsk : get_tcb(tskid))
+
+/*
+ *  TCB©ç^XNIDðæèo·½ßÌ}N
+ */
+#define	TSKID(p_tcb)	((ID)(((p_tcb) - tcb_table) + TMIN_TSKID))
+
+/*
+ *  ^XNÇW
+[Ìú»
+ */
+extern void	initialize_task(void);
+
+/*
+ *  ÅDæÊ^XNÌT[`
+ *
+ *  fBL
+[ÌÅDæÊÌ^XNðT[`µC»ÌTCBÖÌ|C^
+ *  ðÔ·DfBL
+[ªóÌêÉÍC±ÌÖðÄÑoµÄÍÈçÈ¢D
+ */
+extern TCB	*search_schedtsk(void);
+
+/*
+ *  ÀsÅ«éóÔÖÌJÚ
+ *
+ *  p_tcbÅwè³êé^XNðfBL
+[É}ü·éDfBL
+[É}ü
+ *  µ½^XNÌDæxªCÅDæÊÌ^XNÌDæxæèà¢êÍC
+ *  ÅDæÊÌ^XNðXVµCfBXpb`ÂóÔÅ êÎtrueðÔ
+ *  ·D»¤ÅÈ¢êÍfalseðÔ·D
+ */
+extern bool_t	make_runnable(TCB *p_tcb);
+
+/*
+ *  ÀsÅ«éóÔ©ç¼ÌóÔÖÌJÚ
+ *
+ *  p_tcbÅwè³êé^XNðfBL
+[©çí·éDp_tcbÅwèµ½
+ *  ^XNªÅDæÊÌ^XNÅ Á½êÉÍCÅDæÊÌ^XN
+ *  ðÝèµÈ¨µCfBXpb`ÂóÔÅ êÎtrueðÔ·D»¤ÅÈ¢
+ *  êÍfalseðÔ·D^XNÌóÔÍXVµÈ¢D
+ */
+extern bool_t	make_non_runnable(TCB *p_tcb);
+
+/*
+ *  x~óÔÖÌJÚ
+ *
+ *  p_tcbÅwè³êé^XNÌóÔðx~óÔÆ·éDÜ½C^XNÌN®
+ *  Éú»·×«ÏÌú»ÆC^XNN®Ì½ßÌReLXgðÝ
+ *  è·éD
+ */
+extern void	make_dormant(TCB *p_tcb);
+
+/*
+ *  x~óÔ©çÀsÅ«éóÔÖÌJÚ
+ *
+ *  p_tcbÅwè³êé^XNÌóÔðx~óÔ©çÀsÅ«éóÔÆ·éD
+ *  ÀsÅ«éóÔÉJÚµ½^XNÖÌfBXpb`ªKvÈêÍtrueC
+ *  »¤ÅÈ¢êÍfalseðÔ·D
+ */
+extern bool_t	make_active(TCB *p_tcb);
+
+/*
+ *  ^XNÌDæxÌÏX
+ *
+ *  p_tcbÅwè³êé^XNÌDæxðnewpriià\»jÉÏX·éDÜ½C
+ *  KvÈêÉÍÅDæÊÌ^XNðXVµCfBXpb`ÂóÔÅ
+ *   êÎtrueðÔ·D»¤ÅÈ¢êÍfalseðÔ·D
+ */
+extern bool_t	change_priority(TCB *p_tcb, uint_t newpri);
+
+/*
+ *  fBL
+[Ìñ]
+ *
+ *  fBL
+[ÌCpriÅwè³êéDæxÌ^XNL
+[ðñ]³¹éD
+ *  Ü½CKvÈêÉÍÅDæÊÌ^XNðÏXµCfBXpb`ªÛ
+ *  ¯³êÄ¢È¯êÎtrueðÔ·D»¤ÅÈ¢êÍfalseðÔ·D
+ */
+extern bool_t	rotate_ready_queue(uint_t pri);
+
+/*
+ *  ^XNáO[`ÌÄoµ
+ *
+ *  ^XNáO[`ðÄÑo·DÄÑo·OÉCÀsóÔÌ^XNÌ
+ *  Û¯áOvöðNAµC^XNáOÖ~óÔÉµCCPUbNðð
+ *  ·éD
+ *
+ *  ^XNáO[`©çßéÆCÜ¸CPUbNóÔÉßµC»ÌÔ
+ *  ÉÛ¯áOvöª0ÅÈ­ÈÁÄ¢êÎCÄÑ^XNáO[`ð
+ *  ÄÑo·DÛ¯áOvöª0ÌêÉÍCáOÂóÔÉµÄÖ©
+ *  ç^[·éD
+ *
+ *  ±ÌÖÍCÀsóÔÌ^XNªC^XNáOÂóÔienatexª
+ *  truejÅCÛ¯áOvöª0ÅÈ¢itexptnª0ÅÈ¢jêÉÄÑo·±
+ *  ÆðzèµÄ¢éD±ÌÖÍCCPUbNóÔÅÄÑo³È¯êÎÈç
+ *  È¢D
+ */
+extern void	call_texrtn(void);
+
+/*
+ *  ^XNáO[`ÌN®
+ *
+ *  ÀsóÔÌ^XNª^XNáO[`ÌN®ðð½µÄ¢êÎC
+ *  ^XNáO[`ðÄÑo·DCPUáO[`ðÄÑo·
+ *  ÍCêIÉCPUbNðð·éD
+ *
+ *  ±ÌÖÍCfBXpb`âÝnh^CPUáOnhÌoû
+ *  ©çÄÑo³êé±ÆðzèµÄ¢éD±ÌÖÍCCPUbNóÔ
+ *  ÅÄÑo³È¯êÎÈçÈ¢D
+ *
+ *  Àsø¦ðã°é½ßÉC±ÌÖð^[QbgË¶ÅLqµÄàæ¢D
+ *  »ÌêÉÍCOMIT_CALLTEXð}Nè`·éD
+ */
+extern void	calltex(void);
+
+#endif /* TOPPERS_TASK_H */
Index: /asp_ewarm/asp-1.7.0/extension/pri_level/test/test_task1.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/pri_level/test/test_task1.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/pri_level/test/test_task1.h	(revision 61)
@@ -0,0 +1,81 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_task1.h 496 2007-08-20 02:53:40Z hiro $
+ */
+
+/* 
+ *		^XNÇW
+[ÌeXg(1)
+ */
+
+/*
+ *  ^[QbgË¶Ìè`
+ */
+#include "target_test.h"
+
+/*
+ *  DæxÌè`
+ */
+#define HIGH_PRIORITY	18		/* Dæx */
+#define MID_PRIORITY	137		/* Dæx */
+#define LOW_PRIORITY	255		/* áDæx */
+
+/*
+ *  ^[QbgÉË¶·éÂ\«Ì éèÌè`
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ^XNÌX^bNTCY */
+#endif /* STACK_SIZE */
+
+/*
+ *  ÖÌvg^Cvé¾
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+extern void	task1(intptr_t exinf);
+extern void	task2(intptr_t exinf);
+extern void	task3(intptr_t exinf);
+extern void	task4(intptr_t exinf);
+extern void	task5(intptr_t exinf);
+extern void	task6(intptr_t exinf);
+extern void	alarm1_handler(intptr_t exinf);
+
+#endif /* TOPPERS_MACRO_ONLY */
Index: /asp_ewarm/asp-1.7.0/extension/rstr_task/include/kernel.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/rstr_task/include/kernel.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/rstr_task/include/kernel.h	(revision 61)
@@ -0,0 +1,525 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  $Id: kernel.h 1959 2010-11-20 02:17:27Z ertl-hiro $
+ */
+
+/*
+ *		TOPPERS/ASPJ[l Wwb_t@C
+ *
+ *  TOPPERS/ASPJ[lªT|[g·éT[rXR[Ìé¾ÆCKvÈf[
+ *  ^^CèC}NÌè`ðÜÞwb_t@CD
+ *
+ *  AZu¾êÌ\[Xt@C©ç±Ìt@CðCN[h·é
+ *  ÍCTOPPERS_MACRO_ONLYðè`µÄ¨­D±êÉæèC}Nè`ÈOð
+ *  ­æ¤ÉÈÁÄ¢éD
+ *
+ *  ±Ìt@CðCN[h·éOÉCN[hµÄ¨­×«t@C
+ *  ÍÈ¢D
+ */
+
+#ifndef TOPPERS_KERNEL_H
+#define TOPPERS_KERNEL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *	TOPPERS¤ÊÌf[^^EèE}N
+ */
+#include <t_stddef.h>
+
+/*
+ *  ^[QbgË¶
+ */
+#include "target_kernel.h"
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  f[^^Ìè`
+ */
+
+/*
+ *  rbgp^[âIuWFNgÔÌ^è`
+ */
+typedef	uint_t		TEXPTN;		/* ^XNáOvöÌrbgp^[ */
+typedef	uint_t		FLGPTN;		/* CxgtOÌrbgp^[ */
+typedef	uint_t		INTNO;		/* ÝÔ */
+typedef	uint_t		INHNO;		/* ÝnhÔ */
+typedef	uint_t		EXCNO;		/* CPUáOnhÔ */
+
+/*
+ *  PÊÌ^è`
+ */
+typedef void	(*TASK)(intptr_t exinf);
+typedef void	(*TEXRTN)(TEXPTN texptn, intptr_t exinf);
+typedef void	(*CYCHDR)(intptr_t exinf);
+typedef void	(*ALMHDR)(intptr_t exinf);
+typedef void	(*ISR)(intptr_t exinf);
+typedef void	(*INTHDR)(void);
+typedef void	(*EXCHDR)(void *p_excinf);
+typedef void	(*INIRTN)(intptr_t exinf);
+typedef void	(*TERRTN)(intptr_t exinf);
+
+/*
+ *  ÌæmÛÌ½ßÌ^è`
+ */
+#ifndef TOPPERS_STK_T
+#define TOPPERS_STK_T	intptr_t
+#endif /* TOPPERS_STK_T */
+typedef	TOPPERS_STK_T	STK_T;	/* X^bNÌæðmÛ·é½ßÌ^ */
+
+#ifndef TOPPERS_MPF_T
+#define TOPPERS_MPF_T	intptr_t
+#endif /* TOPPERS_MPF_T */
+typedef	TOPPERS_MPF_T	MPF_T;	/* Åè·v[ÌæðmÛ·é½ßÌ^ */
+
+/*
+ *  bZ[Wwb_Ì^è`
+ */
+typedef	struct t_msg {			/* [{bNXÌbZ[Wwb_ */
+	struct t_msg	*pk_next;
+} T_MSG;
+
+typedef	struct t_msg_pri {		/* Dæxt«bZ[Wwb_ */
+	T_MSG	msgque;				/* bZ[Wwb_ */
+	PRI		msgpri;				/* bZ[WDæx */
+} T_MSG_PRI;
+
+/*
+ *  pPbg`®Ìè`
+ */
+typedef struct t_rtsk {
+	STAT	tskstat;	/* ^XNóÔ */
+	PRI		tskpri;		/* ^XNÌ»ÝDæx */
+	PRI		tskbpri;	/* ^XNÌx[XDæx */
+	STAT	tskwait;	/* Ò¿vö */
+	ID		wobjid;		/* Ò¿ÎÛÌIuWFNgÌID */
+	TMO		lefttmo;	/* ^CAEg·éÜÅÌÔ */
+	uint_t	actcnt;		/* N®vL
+[CO */
+	uint_t	wupcnt;		/* N°vL
+[CO */
+} T_RTSK;
+
+typedef struct t_rtex {
+	STAT	texstat;	/* ^XNáOÌóÔ */
+	TEXPTN	pndptn;		/* Û¯áOvö */
+} T_RTEX;
+
+typedef struct t_rsem {
+	ID		wtskid;		/* Z}tHÌÒ¿sñÌæªÌ^XNÌIDÔ */
+	uint_t	semcnt;		/* Z}tHÌ»ÝÌ¹ */
+} T_RSEM;
+
+typedef struct t_rflg {
+	ID		wtskid;		/* CxgtOÌÒ¿sñÌæªÌ^XNÌIDÔ */
+	FLGPTN	flgptn;		/* CxgtOÌ»ÝÌrbgp^[ */
+} T_RFLG;
+
+typedef struct t_rdtq {
+	ID		stskid;		/* f[^L
+[ÌMÒ¿sñÌæªÌ^XNÌIDÔ */
+	ID		rtskid;		/* f[^L
+[ÌóMÒ¿sñÌæªÌ^XNÌIDÔ */
+	uint_t	sdtqcnt;	/* f[^L
+[ÇÌæÉi[³êÄ¢éf[^Ì */
+} T_RDTQ;
+
+typedef struct t_rpdq {
+	ID		stskid;		/* Dæxf[^L
+[ÌMÒ¿sñÌæªÌ^XN
+						   ÌIDÔ */
+	ID		rtskid;		/* Dæxf[^L
+[ÌóMÒ¿sñÌæªÌ^XN
+						   ÌIDÔ */
+	uint_t	spdqcnt;	/* Dæxf[^L
+[ÇÌæÉi[³êÄ¢éf[
+						   ^Ì */
+} T_RPDQ;
+
+typedef struct t_rmbx {
+	ID		wtskid;		/* [{bNXÌÒ¿sñÌæªÌ^XNÌIDÔ */
+	T_MSG	*pk_msg;	/* bZ[WL
+[ÌæªÉÂÈªê½bZ[W
+						   ÌæªÔn */
+} T_RMBX;
+
+typedef struct t_rmpf {
+	ID		wtskid;		/* Åè·v[ÌÒ¿sñÌæªÌ^XNÌ
+						   IDÔ */
+	uint_t	fblkcnt;	/* Åè·v[ÌæÌó«ÌæÉè
+						   t¯é±ÆªÅ«éÅè·ubNÌ */
+} T_RMPF;
+
+typedef struct t_rcyc {
+	STAT	cycstat;	/* üúnhÌ®ìóÔ */
+	RELTIM	lefttim;	/* ÉüúnhðN®·éÜÅÌÎÔ */
+} T_RCYC;
+
+typedef struct t_ralm {
+	STAT	almstat;	/* A[nhÌ®ìóÔ */
+	RELTIM	lefttim;	/* A[nhðN®·éÜÅÌÎÔ */
+} T_RALM;
+
+/*
+ *  T[rXR[Ìé¾
+ */
+
+/*
+ *  ^XNÇ@\
+ */
+extern ER		act_tsk(ID tskid) throw();
+extern ER		iact_tsk(ID tskid) throw();
+extern ER_UINT	can_act(ID tskid) throw();
+extern ER		ext_tsk(void) throw();
+extern ER		ter_tsk(ID tskid) throw();
+extern ER		chg_pri(ID tskid, PRI tskpri) throw();
+extern ER		ras_pri(PRI tskpri) throw();
+extern ER		get_pri(ID tskid, PRI *p_tskpri) throw();
+extern ER		get_inf(intptr_t *p_exinf) throw();
+extern ER		ref_tsk(ID tskid, T_RTSK *pk_rtsk) throw();
+
+/*
+ *  ^XNt®¯ú@\
+ */
+extern ER		slp_tsk(void) throw();
+extern ER		tslp_tsk(TMO tmout) throw();
+extern ER		wup_tsk(ID tskid) throw();
+extern ER		iwup_tsk(ID tskid) throw();
+extern ER_UINT	can_wup(ID tskid) throw();
+extern ER		rel_wai(ID tskid) throw();
+extern ER		irel_wai(ID tskid) throw();
+extern ER		sus_tsk(ID tskid) throw();
+extern ER		rsm_tsk(ID tskid) throw();
+extern ER		dly_tsk(RELTIM dlytim) throw();
+
+/*
+ *  ^XNáO@\
+ */
+extern ER		ras_tex(ID tskid, TEXPTN rasptn) throw();
+extern ER		iras_tex(ID tskid, TEXPTN rasptn) throw();
+extern ER		dis_tex(void) throw();
+extern ER		ena_tex(void) throw();
+extern bool_t	sns_tex(void) throw();
+extern ER		ref_tex(ID tskid, T_RTEX *pk_rtex) throw();
+
+/*
+ *  ¯úEÊM@\
+ */
+extern ER		sig_sem(ID semid) throw();
+extern ER		isig_sem(ID semid) throw();
+extern ER		wai_sem(ID semid) throw();
+extern ER		pol_sem(ID semid) throw();
+extern ER		twai_sem(ID semid, TMO tmout) throw();
+extern ER		ini_sem(ID semid) throw();
+extern ER		ref_sem(ID semid, T_RSEM *pk_rsem) throw();
+
+extern ER		set_flg(ID flgid, FLGPTN setptn) throw();
+extern ER		iset_flg(ID flgid, FLGPTN setptn) throw();
+extern ER		clr_flg(ID flgid, FLGPTN clrptn) throw();
+extern ER		wai_flg(ID flgid, FLGPTN waiptn,
+						MODE wfmode, FLGPTN *p_flgptn) throw();
+extern ER		pol_flg(ID flgid, FLGPTN waiptn,
+						MODE wfmode, FLGPTN *p_flgptn) throw();
+extern ER		twai_flg(ID flgid, FLGPTN waiptn,
+						MODE wfmode, FLGPTN *p_flgptn, TMO tmout) throw();
+extern ER		ini_flg(ID flgid) throw();
+extern ER		ref_flg(ID flgid, T_RFLG *pk_rflg) throw();
+
+extern ER		snd_dtq(ID dtqid, intptr_t data) throw();
+extern ER		psnd_dtq(ID dtqid, intptr_t data) throw();
+extern ER		ipsnd_dtq(ID dtqid, intptr_t data) throw();
+extern ER		tsnd_dtq(ID dtqid, intptr_t data, TMO tmout) throw();
+extern ER		fsnd_dtq(ID dtqid, intptr_t data) throw();
+extern ER		ifsnd_dtq(ID dtqid, intptr_t data) throw();
+extern ER		rcv_dtq(ID dtqid, intptr_t *p_data) throw();
+extern ER		prcv_dtq(ID dtqid, intptr_t *p_data) throw();
+extern ER		trcv_dtq(ID dtqid, intptr_t *p_data, TMO tmout) throw();
+extern ER		ini_dtq(ID dtqid) throw();
+extern ER		ref_dtq(ID dtqid, T_RDTQ *pk_rdtq) throw();
+
+extern ER		snd_pdq(ID pdqid, intptr_t data, PRI datapri) throw();
+extern ER		psnd_pdq(ID pdqid, intptr_t data, PRI datapri) throw();
+extern ER		ipsnd_pdq(ID pdqid, intptr_t data, PRI datapri) throw();
+extern ER		tsnd_pdq(ID pdqid, intptr_t data,
+										PRI datapri, TMO tmout) throw();
+extern ER		rcv_pdq(ID pdqid, intptr_t *p_data, PRI *p_datapri) throw();
+extern ER		prcv_pdq(ID pdqid, intptr_t *p_data, PRI *p_datapri) throw();
+extern ER		trcv_pdq(ID pdqid, intptr_t *p_data,
+										PRI *p_datapri, TMO tmout) throw();
+extern ER		ini_pdq(ID pdqid) throw();
+extern ER		ref_pdq(ID pdqid, T_RPDQ *pk_rpdq) throw();
+
+extern ER		snd_mbx(ID mbxid, T_MSG *pk_msg) throw();
+extern ER		rcv_mbx(ID mbxid, T_MSG **ppk_msg) throw();
+extern ER		prcv_mbx(ID mbxid, T_MSG **ppk_msg) throw();
+extern ER		trcv_mbx(ID mbxid, T_MSG **ppk_msg, TMO tmout) throw();
+extern ER		ini_mbx(ID mbxid) throw();
+extern ER		ref_mbx(ID mbxid, T_RMBX *pk_rmbx) throw();
+
+/*
+ *  v[Ç@\
+ */
+extern ER		get_mpf(ID mpfid, void **p_blk) throw();
+extern ER		pget_mpf(ID mpfid, void **p_blk) throw();
+extern ER		tget_mpf(ID mpfid, void **p_blk, TMO tmout) throw();
+extern ER		rel_mpf(ID mpfid, void *blk) throw();
+extern ER		ini_mpf(ID mpfid) throw();
+extern ER		ref_mpf(ID mpfid, T_RMPF *pk_rmpf) throw();
+
+/*
+ *  ÔÇ@\
+ */
+extern ER		get_tim(SYSTIM *p_systim) throw();
+extern ER		get_utm(SYSUTM *p_sysutm) throw();
+
+extern ER		sta_cyc(ID cycid) throw();
+extern ER		stp_cyc(ID cycid) throw();
+extern ER		ref_cyc(ID cycid, T_RCYC *pk_rcyc) throw();
+
+extern ER		sta_alm(ID almid, RELTIM almtim) throw();
+extern ER		ista_alm(ID almid, RELTIM almtim) throw();
+extern ER		stp_alm(ID almid) throw();
+extern ER		istp_alm(ID almid) throw();
+extern ER		ref_alm(ID almid, T_RALM *pk_ralm) throw();
+
+/*
+ *  VXeóÔÇ@\
+ */
+extern ER		rot_rdq(PRI tskpri) throw();
+extern ER		irot_rdq(PRI tskpri) throw();
+extern ER		get_tid(ID *p_tskid) throw();
+extern ER		iget_tid(ID *p_tskid) throw();
+extern ER		loc_cpu(void) throw();
+extern ER		iloc_cpu(void) throw();
+extern ER		unl_cpu(void) throw();
+extern ER		iunl_cpu(void) throw();
+extern ER		dis_dsp(void) throw();
+extern ER		ena_dsp(void) throw();
+extern bool_t	sns_ctx(void) throw();
+extern bool_t	sns_loc(void) throw();
+extern bool_t	sns_dsp(void) throw();
+extern bool_t	sns_dpn(void) throw();
+extern bool_t	sns_ker(void) throw();
+extern ER		ext_ker(void) throw();
+
+/*
+ *  ÝÇ@\
+ */
+extern ER		dis_int(INTNO intno) throw();
+extern ER		ena_int(INTNO intno) throw();
+extern ER		chg_ipm(PRI intpri) throw();
+extern ER		get_ipm(PRI *p_intpri) throw();
+
+/*
+ *  CPUáOÇ@\
+ */
+extern bool_t	xsns_dpn(void *p_excinf) throw();
+extern bool_t	xsns_xpn(void *p_excinf) throw();
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  IuWFNg®«Ìè`
+ */
+#define TA_ACT			UINT_C(0x02)	/* ^XNðN®³ê½óÔÅ¶¬ */
+#define TA_RSTR			UINT_C(0x04)	/* §ñ^XN */
+
+#define TA_TPRI			UINT_C(0x01)	/* ^XNÌÒ¿sñðDæxÉ */
+#define TA_MPRI			UINT_C(0x02)	/* bZ[WL
+[ðDæxÉ */
+
+#define TA_WMUL			UINT_C(0x02)	/* ¡ÌÒ¿^XN */
+#define TA_CLR			UINT_C(0x04)	/* CxgtOÌNAwè */
+
+#define TA_STA			UINT_C(0x02)	/* üúnhð®ìóÔÅ¶¬ */
+
+#define TA_NONKERNEL	UINT_C(0x02)	/* J[lÇOÌÝ */
+
+#define TA_ENAINT		UINT_C(0x01)	/* ÝvÖ~tOðNA */
+#define TA_EDGE			UINT_C(0x02)	/* GbWgK */
+
+/*
+ *  T[rXR[Ì®ì[hÌè`
+ */
+#define TWF_ORW			UINT_C(0x01)	/* CxgtOÌORÒ¿ */
+#define TWF_ANDW		UINT_C(0x02)	/* CxgtOÌANDÒ¿ */
+
+/*
+ *  IuWFNgÌóÔÌè`
+ */
+#define TTS_RUN			UINT_C(0x01)	/* ÀsóÔ */
+#define TTS_RDY			UINT_C(0x02)	/* ÀsÂ\óÔ */
+#define TTS_WAI			UINT_C(0x04)	/* Ò¿óÔ */
+#define TTS_SUS			UINT_C(0x08)	/* ­§Ò¿óÔ */
+#define TTS_WAS			UINT_C(0x0c)	/* ñdÒ¿óÔ */
+#define TTS_DMT			UINT_C(0x10)	/* x~óÔ */
+
+#define TTW_SLP			UINT_C(0x0001)	/* N°Ò¿ */
+#define TTW_DLY			UINT_C(0x0002)	/* ÔoßÒ¿ */
+#define TTW_SEM			UINT_C(0x0004)	/* Z}tHÌ¹l¾Ò¿ */
+#define TTW_FLG			UINT_C(0x0008)	/* CxgtOÒ¿ */
+#define TTW_SDTQ		UINT_C(0x0010)	/* f[^L
+[ÖÌMÒ¿ */
+#define TTW_RDTQ		UINT_C(0x0020)	/* f[^L
+[©çÌóMÒ¿ */
+#define TTW_SPDQ		UINT_C(0x0100)	/* Dæxf[^L
+[ÖÌMÒ¿ */
+#define TTW_RPDQ		UINT_C(0x0200)	/* Dæxf[^L
+[©çÌóMÒ¿ */
+#define TTW_MBX			UINT_C(0x0040)	/* [{bNX©çÌóMÒ¿ */
+#define TTW_MPF			UINT_C(0x2000)	/* Åè·ubNÌl¾Ò¿ */
+
+#define TTEX_ENA		UINT_C(0x01)	/* ^XNáOÂóÔ */
+#define TTEX_DIS		UINT_C(0x02)	/* ^XNáOÖ~óÔ */
+
+#define TCYC_STP		UINT_C(0x01)	/* üúnhª®ìµÄ¢È¢ */
+#define TCYC_STA		UINT_C(0x02)	/* üúnhª®ìµÄ¢é */
+
+#define TALM_STP		UINT_C(0x01)	/* A[nhª®ìµÄ¢È¢ */
+#define TALM_STA		UINT_C(0x02)	/* A[nhª®ìµÄ¢é */
+
+/*
+ *  »Ì¼ÌèÌè`
+ */
+#define TSK_SELF		0			/* ©^XNwè */
+#define TSK_NONE		0			/* Y·é^XNªÈ¢ */
+
+#define TPRI_SELF		0			/* ©^XNÌx[XDæx */
+#define TPRI_INI		0			/* ^XNÌN®Dæx */
+
+#define TIPM_ENAALL		0			/* ÝDæx}XNSð */
+
+/*
+ *  \¬èÆ}N
+ */
+
+/*
+ *  T|[g·é@\
+ */
+#ifdef TOPPERS_TARGET_SUPPORT_DIS_INT
+#define TOPPERS_SUPPORT_DIS_INT			/* dis_intªT|[g³êÄ¢é */
+#endif /* TOPPERS_TARGET_SUPPORT_DIS_INT */
+
+#ifdef TOPPERS_TARGET_SUPPORT_ENA_INT
+#define TOPPERS_SUPPORT_ENA_INT			/* ena_intªT|[g³êÄ¢é */
+#endif /* TOPPERS_TARGET_SUPPORT_ENA_INT */
+
+#ifdef TOPPERS_TARGET_SUPPORT_GET_UTM
+#define TOPPERS_SUPPORT_GET_UTM			/* get_utmªT|[g³êÄ¢é */
+#endif /* TOPPERS_TARGET_SUPPORT_GET_UTM */
+
+#define TOPPERS_SUPPORT_RSTR_TASK		/* §ñ^XN@\g£ */
+
+/*
+ *  DæxÌÍÍ
+ */
+#define TMIN_TPRI		1			/* ^XNDæxÌÅ¬liÅlj*/
+#define TMAX_TPRI		16			/* ^XNDæxÌÅåliÅálj*/
+#define TMIN_DPRI		1			/* f[^DæxÌÅ¬liÅlj*/
+#define TMAX_DPRI		16			/* f[^DæxÌÅåliÅálj*/
+#define TMIN_MPRI		1			/* bZ[WDæxÌÅ¬liÅlj*/
+#define TMAX_MPRI		16			/* bZ[WDæxÌÅåliÅálj*/
+#define TMIN_ISRPRI		1			/* ÝT[rX[`DæxÌÅ¬l */
+#define TMAX_ISRPRI		16			/* ÝT[rX[`DæxÌÅål */
+
+/*
+ *  o[Wîñ
+ */
+#define TKERNEL_MAKER	UINT_C(0x0118)	/* J[lÌ[J[R[h */
+#define TKERNEL_PRID	UINT_C(0x0007)	/* J[lÌ¯ÊÔ */
+#define TKERNEL_SPVER	UINT_C(0xf513)	/* J[ldlÌo[WÔ */
+#define TKERNEL_PRVER	UINT_C(0x1070)	/* J[lÌo[WÔ */
+
+/*
+ *  L
+[COñÌÅål
+ */
+#define TMAX_ACTCNT		UINT_C(1)		/* N®vL
+[COÌÅål */
+#define TMAX_WUPCNT		UINT_C(1)		/* N°vL
+[COÌÅål */
+
+/*
+ *  rbgp^[Ìrbg
+ */
+#ifndef TBIT_TEXPTN					/* ^XNáOvöÌrbg */
+#define TBIT_TEXPTN		(sizeof(TEXPTN) * CHAR_BIT)
+#endif /* TBIT_TEXPTN */
+
+#ifndef TBIT_FLGPTN					/* CxgtOÌrbg */
+#define TBIT_FLGPTN		(sizeof(FLGPTN) * CHAR_BIT)
+#endif /* TBIT_FLGPTN */
+
+/*
+ *  ÌæmÛÌ½ßÌ}N
+ *
+ *  ÈºÌTOPPERS_COUNT_SZÆTOPPERS_ROUND_SZÌè`ÍCunitª2ÌÐæÅ 
+ *  é±Æð¼èµÄ¢éD
+ */
+#ifndef TOPPERS_COUNT_SZ
+#define TOPPERS_COUNT_SZ(sz, unit)	(((sz) + (unit) - 1) / (unit))
+#endif /* TOPPERS_COUNT_SZ */
+#ifndef TOPPERS_ROUND_SZ
+#define TOPPERS_ROUND_SZ(sz, unit)	(((sz) + (unit) - 1) & ~((unit) - 1))
+#endif /* TOPPERS_ROUND_SZ */
+
+#define COUNT_STK_T(sz)		TOPPERS_COUNT_SZ(sz, sizeof(STK_T))
+#define ROUND_STK_T(sz)		TOPPERS_ROUND_SZ(sz, sizeof(STK_T))
+
+#define COUNT_MPF_T(blksz)	TOPPERS_COUNT_SZ(blksz, sizeof(MPF_T))
+#define ROUND_MPF_T(blksz)	TOPPERS_ROUND_SZ(blksz, sizeof(MPF_T))
+
+/*
+ *  »Ì¼Ì\¬è
+ */
+#define TMAX_MAXSEM		UINT_MAX	/* Z}tHÌÅå¹ÌÅål */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* TOPPERS_KERNEL_H */
Index: /asp_ewarm/asp-1.7.0/extension/rstr_task/kernel/Makefile.kernel
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/rstr_task/kernel/Makefile.kernel	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/rstr_task/kernel/Makefile.kernel	(revision 61)
@@ -0,0 +1,140 @@
+#
+#  TOPPERS/ASP Kernel
+#      Toyohashi Open Platform for Embedded Real-Time Systems/
+#      Advanced Standard Profile Kernel
+# 
+#  Copyright (C) 2003 by Embedded and Real-Time Systems Laboratory
+#                              Toyohashi Univ. of Technology, JAPAN
+#  Copyright (C) 2005-2010 by Embedded and Real-Time Systems Laboratory
+#              Graduate School of Information Science, Nagoya Univ., JAPAN
+# 
+#  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+#  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+#  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+#  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+#       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+#      XR[hÉÜÜêÄ¢é±ÆD
+#  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+#      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+#      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+#      Ì³ÛØKèðfÚ·é±ÆD
+#  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+#      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+#      ÆD
+#    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+#        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+#    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+#        ñ·é±ÆD
+#  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+#      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+#      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+#      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+#      ÆÓ·é±ÆD
+# 
+#  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+#  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+#  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+#  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+#  ÌÓCðíÈ¢D
+# 
+#  $Id: Makefile.kernel 1887 2010-08-06 06:15:19Z ertl-hiro $
+# 
+
+#
+#		J[lÌt@C\¬Ìè`
+#
+
+#
+#  1ÂÌ\[Xt@C©ç¡ÌIuWFNgt@Cð¶¬·éæ¤Éì
+#  ¬³ê½\[Xt@CÌXg
+#
+KERNEL_FCSRCS = startup.c task.c wait.c time_event.c \
+				task_manage.c task_refer.c task_sync.c task_except.c \
+				semaphore.c eventflag.c dataqueue.c pridataq.c mailbox.c \
+				mempfix.c time_manage.c cyclic.c alarm.c \
+				sys_manage.c interrupt.c exception.c
+
+#
+#  e\[Xt@C©ç¶¬³êéIuWFNgt@CÌXg
+#
+startup = sta_ker.o ext_ker.o
+
+task = tskini.o tsksched.o tskrun.o tsknrun.o \
+		tskdmt.o tskact.o tskpri.o tskrpri.o tskrot.o tsktex.o
+
+wait = waimake.o waicmp.o waitmo.o waitmook.o \
+		wairel.o wobjwai.o wobjwaitmo.o iniwque.o
+
+time_event = tmeini.o tmeup.o tmedown.o tmeins.o tmedel.o tmeltim.o sigtim.o
+
+task_manage = act_tsk.o iact_tsk.o can_act.o ext_tsk.o ter_tsk.o \
+		chg_pri.o ras_pri.o get_pri.o get_inf.o
+
+task_refer = ref_tsk.o
+
+task_sync = slp_tsk.o tslp_tsk.o wup_tsk.o iwup_tsk.o can_wup.o \
+		rel_wai.o irel_wai.o sus_tsk.o rsm_tsk.o dly_tsk.o
+
+task_except = ras_tex.o iras_tex.o dis_tex.o ena_tex.o sns_tex.o ref_tex.o
+
+semaphore = semini.o sig_sem.o isig_sem.o \
+		wai_sem.o pol_sem.o twai_sem.o ini_sem.o ref_sem.o
+
+eventflag = flgini.o flgcnd.o set_flg.o iset_flg.o clr_flg.o \
+		wai_flg.o pol_flg.o twai_flg.o ini_flg.o ref_flg.o
+
+dataqueue = dtqini.o dtqenq.o dtqfenq.o dtqdeq.o dtqsnd.o dtqfsnd.o dtqrcv.o \
+		snd_dtq.o psnd_dtq.o ipsnd_dtq.o tsnd_dtq.o fsnd_dtq.o ifsnd_dtq.o \
+		rcv_dtq.o prcv_dtq.o trcv_dtq.o ini_dtq.o ref_dtq.o
+
+pridataq = pdqini.o pdqenq.o pdqdeq.o pdqsnd.o pdqrcv.o \
+		snd_pdq.o psnd_pdq.o ipsnd_pdq.o tsnd_pdq.o \
+		rcv_pdq.o prcv_pdq.o trcv_pdq.o ini_pdq.o ref_pdq.o
+
+mailbox = mbxini.o snd_mbx.o rcv_mbx.o prcv_mbx.o trcv_mbx.o \
+		ini_mbx.o ref_mbx.o
+
+mempfix = mpfini.o mpfget.o get_mpf.o pget_mpf.o tget_mpf.o \
+		rel_mpf.o ini_mpf.o ref_mpf.o
+
+time_manage = get_tim.o get_utm.o
+
+cyclic = cycini.o sta_cyc.o stp_cyc.o ref_cyc.o cyccal.o
+
+alarm = almini.o sta_alm.o ista_alm.o stp_alm.o istp_alm.o ref_alm.o almcal.o
+
+sys_manage = rot_rdq.o irot_rdq.o get_tid.o iget_tid.o \
+		loc_cpu.o iloc_cpu.o unl_cpu.o iunl_cpu.o dis_dsp.o ena_dsp.o \
+		sns_ctx.o sns_loc.o sns_dsp.o sns_dpn.o sns_ker.o
+
+interrupt = intini.o dis_int.o ena_int.o chg_ipm.o get_ipm.o
+
+exception = excini.o xsns_dpn.o xsns_xpn.o
+
+#
+#  ¶¬³êéIuWFNgt@CÌË¶ÖWÌè`
+#
+$(startup) $(startup:.o=.s) $(startup:.o=.d): startup.c
+$(task) $(task:.o=.s) $(task:.o=.d): task.c
+$(wait) $(wait:.o=.s) $(wait:.o=.d): wait.c
+$(time_event) $(time_event:.o=.s) $(time_event:.o=.d): time_event.c
+$(task_manage) $(task_manage:.o=.s) $(task_manage:.o=.d): task_manage.c
+$(task_refer) $(task_refer:.o=.s) $(task_refer:.o=.d): task_refer.c
+$(task_sync) $(task_sync:.o=.s) $(task_sync:.o=.d): task_sync.c
+$(task_except) $(task_except:.o=.s) $(task_except:.o=.d): task_except.c
+$(semaphore) $(semaphore:.o=.s) $(semaphore:.o=.d): semaphore.c
+$(eventflag) $(eventflag:.o=.s) $(eventflag:.o=.d): eventflag.c
+$(dataqueue) $(dataqueue:.o=.s) $(dataqueue:.o=.d): dataqueue.c
+$(pridataq) $(pridataq:.o=.s) $(pridataq:.o=.d): pridataq.c
+$(mailbox) $(mailbox:.o=.s) $(mailbox:.o=.d): mailbox.c
+$(mempfix) $(mempfix:.o=.s) $(mempfix:.o=.d): mempfix.c
+$(time_manage) $(time_manage:.o=.s) $(time_manage:.o=.d): time_manage.c
+$(cyclic) $(cyclic:.o=.s) $(cyclic:.o=.d): cyclic.c
+$(alarm) $(alarm:.o=.s) $(alarm:.o=.d): alarm.c
+$(sys_manage) $(sys_manage:.o=.s) $(sys_manage:.o=.d): sys_manage.c
+$(interrupt) $(interrupt:.o=.s) $(interrupt:.o=.d): interrupt.c
+$(exception) $(exception:.o=.s) $(exception:.o=.d): exception.c
Index: /asp_ewarm/asp-1.7.0/extension/rstr_task/kernel/allfunc.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/rstr_task/kernel/allfunc.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/rstr_task/kernel/allfunc.h	(revision 61)
@@ -0,0 +1,247 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2005-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  $Id: allfunc.h 1887 2010-08-06 06:15:19Z ertl-hiro $
+ */
+
+/*
+ *		·×ÄÌÖðRpC·é½ßÌè`
+ */
+
+#ifndef TOPPERS_ALLFUNC_H
+#define TOPPERS_ALLFUNC_H
+
+/* startup.c */
+#define TOPPERS_sta_ker
+#define TOPPERS_ext_ker
+
+/* task.c */
+#define TOPPERS_tskini
+#define TOPPERS_tsksched
+#define TOPPERS_tskrun
+#define TOPPERS_tsknrun
+#define TOPPERS_tskdmt
+#define TOPPERS_tskact
+#define TOPPERS_tskpri
+#define TOPPERS_tskrpri
+#define TOPPERS_tskrot
+#define TOPPERS_tsktex
+
+/* wait.c */
+#define TOPPERS_waimake
+#define TOPPERS_waicmp
+#define TOPPERS_waitmo
+#define TOPPERS_waitmook
+#define TOPPERS_wairel
+#define TOPPERS_wobjwai
+#define TOPPERS_wobjwaitmo
+#define TOPPERS_iniwque
+
+/* time_event.c */
+#define TOPPERS_tmeini
+#define TOPPERS_tmeup
+#define TOPPERS_tmedown
+#define TOPPERS_tmeins
+#define TOPPERS_tmedel
+#define TOPPERS_tmeltim
+#define TOPPERS_sigtim
+
+/* task_manage.c */
+#define TOPPERS_act_tsk
+#define TOPPERS_iact_tsk
+#define TOPPERS_can_act
+#define TOPPERS_ext_tsk
+#define TOPPERS_ter_tsk
+#define TOPPERS_chg_pri
+#define TOPPERS_ras_pri
+#define TOPPERS_get_pri
+#define TOPPERS_get_inf
+
+/* task_refer.c */
+#define TOPPERS_ref_tsk
+
+/* task_sync.c */
+#define TOPPERS_slp_tsk
+#define TOPPERS_tslp_tsk
+#define TOPPERS_wup_tsk
+#define TOPPERS_iwup_tsk
+#define TOPPERS_can_wup
+#define TOPPERS_rel_wai
+#define TOPPERS_irel_wai
+#define TOPPERS_sus_tsk
+#define TOPPERS_rsm_tsk
+#define TOPPERS_dly_tsk
+
+/* task_except.c */
+#define TOPPERS_ras_tex
+#define TOPPERS_iras_tex
+#define TOPPERS_dis_tex
+#define TOPPERS_ena_tex
+#define TOPPERS_sns_tex
+#define TOPPERS_ref_tex
+
+/* semaphore.c */
+#define TOPPERS_semini
+#define TOPPERS_sig_sem
+#define TOPPERS_isig_sem
+#define TOPPERS_wai_sem
+#define TOPPERS_pol_sem
+#define TOPPERS_twai_sem
+#define TOPPERS_ini_sem
+#define TOPPERS_ref_sem
+
+/* eventflag.c */
+#define TOPPERS_flgini
+#define TOPPERS_flgcnd
+#define TOPPERS_set_flg
+#define TOPPERS_iset_flg
+#define TOPPERS_clr_flg
+#define TOPPERS_wai_flg
+#define TOPPERS_pol_flg
+#define TOPPERS_twai_flg
+#define TOPPERS_ini_flg
+#define TOPPERS_ref_flg
+
+/* dataqueue.c */
+#define TOPPERS_dtqini
+#define TOPPERS_dtqenq
+#define TOPPERS_dtqfenq
+#define TOPPERS_dtqdeq
+#define TOPPERS_dtqsnd
+#define TOPPERS_dtqfsnd
+#define TOPPERS_dtqrcv
+#define TOPPERS_snd_dtq
+#define TOPPERS_psnd_dtq
+#define TOPPERS_ipsnd_dtq
+#define TOPPERS_tsnd_dtq
+#define TOPPERS_fsnd_dtq
+#define TOPPERS_ifsnd_dtq
+#define TOPPERS_rcv_dtq
+#define TOPPERS_prcv_dtq
+#define TOPPERS_trcv_dtq
+#define TOPPERS_ini_dtq
+#define TOPPERS_ref_dtq
+
+/* pridataq.c */
+#define TOPPERS_pdqini
+#define TOPPERS_pdqenq
+#define TOPPERS_pdqdeq
+#define TOPPERS_pdqsnd
+#define TOPPERS_pdqrcv
+#define TOPPERS_snd_pdq
+#define TOPPERS_psnd_pdq
+#define TOPPERS_ipsnd_pdq
+#define TOPPERS_tsnd_pdq
+#define TOPPERS_rcv_pdq
+#define TOPPERS_prcv_pdq
+#define TOPPERS_trcv_pdq
+#define TOPPERS_ini_pdq
+#define TOPPERS_ref_pdq
+
+/* mailbox.c */
+#define TOPPERS_mbxini
+#define TOPPERS_snd_mbx
+#define TOPPERS_rcv_mbx
+#define TOPPERS_prcv_mbx
+#define TOPPERS_trcv_mbx
+#define TOPPERS_ini_mbx
+#define TOPPERS_ref_mbx
+
+/* mempfix.c */
+#define TOPPERS_mpfini
+#define TOPPERS_mpfget
+#define TOPPERS_get_mpf
+#define TOPPERS_pget_mpf
+#define TOPPERS_tget_mpf
+#define TOPPERS_rel_mpf
+#define TOPPERS_ini_mpf
+#define TOPPERS_ref_mpf
+
+/* time_manage.c */
+#define TOPPERS_get_tim
+#define TOPPERS_get_utm
+
+/* cyclic.c */
+#define TOPPERS_cycini
+#define TOPPERS_sta_cyc
+#define TOPPERS_stp_cyc
+#define TOPPERS_ref_cyc
+#define TOPPERS_cyccal
+
+/* alarm.c */
+#define TOPPERS_almini
+#define TOPPERS_sta_alm
+#define TOPPERS_ista_alm
+#define TOPPERS_stp_alm
+#define TOPPERS_istp_alm
+#define TOPPERS_ref_alm
+#define TOPPERS_almcal
+
+/* sys_manage.c */
+#define TOPPERS_rot_rdq
+#define TOPPERS_irot_rdq
+#define TOPPERS_get_tid
+#define TOPPERS_iget_tid
+#define TOPPERS_loc_cpu
+#define TOPPERS_iloc_cpu
+#define TOPPERS_unl_cpu
+#define TOPPERS_iunl_cpu
+#define TOPPERS_dis_dsp
+#define TOPPERS_ena_dsp
+#define TOPPERS_sns_ctx
+#define TOPPERS_sns_loc
+#define TOPPERS_sns_dsp
+#define TOPPERS_sns_dpn
+#define TOPPERS_sns_ker
+
+/* interrupt.c */
+#define TOPPERS_intini
+#define TOPPERS_dis_int
+#define TOPPERS_ena_int
+#define TOPPERS_chg_ipm
+#define TOPPERS_get_ipm
+
+/* exception.c */
+#define TOPPERS_excini
+#define TOPPERS_xsns_dpn
+#define TOPPERS_xsns_xpn
+
+#endif /* TOPPERS_ALLFUNC_H */
Index: /asp_ewarm/asp-1.7.0/extension/rstr_task/kernel/check.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/rstr_task/kernel/check.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/rstr_task/kernel/check.h	(revision 61)
@@ -0,0 +1,303 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  $Id: check.h 1965 2010-11-20 07:22:43Z ertl-hiro $
+ */
+
+/*
+ *		G[`FbNp}N
+ */
+
+#ifndef TOPPERS_CHECK_H
+#define TOPPERS_CHECK_H
+
+/*
+ *  DæxÌÍÍÌ»è
+ */
+#define VALID_TPRI(tpri)	(TMIN_TPRI <= (tpri) && (tpri) <= TMAX_TPRI)
+
+#ifndef VALID_INTPRI_CHGIPM
+#define VALID_INTPRI_CHGIPM(intpri) \
+				(TMIN_INTPRI <= (intpri) && (intpri) <= TIPM_ENAALL)
+#endif /* VALID_INTPRI_CHGIPM */
+
+/*
+ *  ^XNDæxÌ`FbNiE_PARj
+ */
+#define CHECK_TPRI(tpri) {									\
+	if (!VALID_TPRI(tpri)) {								\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_TPRI_INI(tpri) {								\
+	if (!(VALID_TPRI(tpri) || (tpri) == TPRI_INI)) {		\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_TPRI_SELF(tpri) {								\
+	if (!(VALID_TPRI(tpri) || (tpri) == TPRI_SELF)) {		\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  ^CAEgwèlÌ`FbNiE_PARj
+ */
+#define CHECK_TMOUT(tmout) {								\
+	if (!(TMO_FEVR <= (tmout))) {							\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  ÝDæxÌ`FbNiE_PARj
+ */
+#define CHECK_INTPRI_CHGIPM(intpri) {						\
+	if (!VALID_INTPRI_CHGIPM(intpri)) {						\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  ÝÔÌ`FbNiE_PARj
+ */
+#define CHECK_INTNO_DISINT(intno) {							\
+	if (!VALID_INTNO_DISINT(intno)) {						\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  »Ì¼Ìp[^G[Ì`FbNiE_PARj
+ */
+#define CHECK_PAR(exp) {									\
+	if (!(exp)) {											\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  IuWFNgIDÌÍÍÌ»è
+ */
+#define VALID_TSKID(tskid)	(TMIN_TSKID <= (tskid) && (tskid) <= tmax_tskid)
+#define VALID_SEMID(semid)	(TMIN_SEMID <= (semid) && (semid) <= tmax_semid)
+#define VALID_FLGID(flgid)	(TMIN_FLGID <= (flgid) && (flgid) <= tmax_flgid)
+#define VALID_DTQID(dtqid)	(TMIN_DTQID <= (dtqid) && (dtqid) <= tmax_dtqid)
+#define VALID_PDQID(pdqid)	(TMIN_PDQID <= (pdqid) && (pdqid) <= tmax_pdqid)
+#define VALID_MBXID(mbxid)	(TMIN_MBXID <= (mbxid) && (mbxid) <= tmax_mbxid)
+#define VALID_MPFID(mpfid)	(TMIN_MPFID <= (mpfid) && (mpfid) <= tmax_mpfid)
+#define VALID_CYCID(cycid)	(TMIN_CYCID <= (cycid) && (cycid) <= tmax_cycid)
+#define VALID_ALMID(almid)	(TMIN_ALMID <= (almid) && (almid) <= tmax_almid)
+
+/*
+ *  IuWFNgIDÌ`FbNiE_IDj
+ */
+#define CHECK_TSKID(tskid) {								\
+	if (!VALID_TSKID(tskid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_TSKID_SELF(tskid) {							\
+	if (!(VALID_TSKID(tskid) || (tskid) == TSK_SELF)) {		\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_SEMID(semid) {								\
+	if (!VALID_SEMID(semid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_FLGID(flgid) {								\
+	if (!VALID_FLGID(flgid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_DTQID(dtqid) {								\
+	if (!VALID_DTQID(dtqid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_PDQID(pdqid) {								\
+	if (!VALID_PDQID(pdqid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_MBXID(mbxid) {								\
+	if (!VALID_MBXID(mbxid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_MPFID(mpfid) {								\
+	if (!VALID_MPFID(mpfid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_CYCID(cycid) {								\
+	if (!VALID_CYCID(cycid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_ALMID(almid) {								\
+	if (!VALID_ALMID(almid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  ÄoµReLXgÌ`FbNiE_CTXj
+ */
+#define CHECK_TSKCTX() {									\
+	if (sense_context()) {									\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_INTCTX() {									\
+	if (!sense_context()) {									\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  ÄoµReLXgÆCPUbNóÔÌ`FbNiE_CTXj
+ */
+#define CHECK_TSKCTX_UNL() {								\
+	if (sense_context() || t_sense_lock()) {				\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_INTCTX_UNL() {								\
+	if (!sense_context() || i_sense_lock()) {				\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  fBXpb`Û¯óÔÅÈ¢©Ì`FbNiE_CTXj
+ *  ©^XNª§ñ^XNÅÈ¢©Ì`FbNiE_NOSPTj
+ */
+#define CHECK_DISPATCH() {									\
+	if (sense_context() || t_sense_lock() || !dspflg) {		\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+	if ((p_runtsk->p_tinib->tskatr & TA_RSTR) != 0U) {		\
+		ercd = E_NOSPT;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  ÎÛ^XNª§ñ^XNÅÈ¢©Ì`FbNiE_NOSPTj
+ */
+#define CHECK_NONRSTR(p_tcb) {								\
+	if (((p_tcb)->p_tinib->tskatr & TA_RSTR) != 0U) {		\
+		ercd = E_NOSPT;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  »Ì¼ÌReLXgG[Ì`FbNiE_CTXj
+ */
+#define CHECK_CTX(exp) {									\
+	if (!(exp)) {											\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  ©^XNðwèµÄ¢È¢©Ì`FbNiE_ILUSEj
+ */
+#define CHECK_NONSELF(p_tcb) {								\
+	if ((p_tcb) == p_runtsk) {								\
+		ercd = E_ILUSE;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  »Ì¼Ìs³gpG[Ì`FbNiE_ILUSEj
+ */
+#define CHECK_ILUSE(exp) {									\
+	if (!(exp)) {											\
+		ercd = E_ILUSE;										\
+		goto error_exit;									\
+	}														\
+}
+
+#endif /* TOPPERS_CHECK_H */
Index: /asp_ewarm/asp-1.7.0/extension/rstr_task/kernel/kernel.tf
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/rstr_task/kernel/kernel.tf	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/rstr_task/kernel/kernel.tf	(revision 61)
@@ -0,0 +1,1099 @@
+$ ======================================================================
+$ 
+$   TOPPERS/ASP Kernel
+$       Toyohashi Open Platform for Embedded Real-Time Systems/
+$       Advanced Standard Profile Kernel
+$ 
+$   Copyright (C) 2007 by TAKAGI Nobuhisa
+$   Copyright (C) 2007-2011 by Embedded and Real-Time Systems Laboratory
+$               Graduate School of Information Science, Nagoya Univ., JAPAN
+$  
+$   ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+$   Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+$   ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+$   (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+$        \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+$       XR[hÉÜÜêÄ¢é±ÆD
+$   (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+$       pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+$       Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+$       Ì³ÛØKèðfÚ·é±ÆD
+$   (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+$       pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+$       ÆD
+$     (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+$         ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+$     (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+$         ñ·é±ÆD
+$   (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+$       Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+$       Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+$       RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+$       ÆÓ·é±ÆD
+$  
+$   {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+$   æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+$   ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+$   AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+$   ÌÓCðíÈ¢D
+$ 
+$   $Id: kernel.tf 2024 2011-01-02 08:59:23Z ertl-hiro $
+$  
+$ =====================================================================
+
+$ =====================================================================
+$ kernel_cfg.hÌ¶¬
+$ =====================================================================
+
+$FILE "kernel_cfg.h"$
+/* kernel_cfg.h */$NL$
+#ifndef TOPPERS_KERNEL_CFG_H$NL$
+#define TOPPERS_KERNEL_CFG_H$NL$
+$NL$
+#define TNUM_TSKID	$LENGTH(TSK.ID_LIST)$$NL$
+#define TNUM_SEMID	$LENGTH(SEM.ID_LIST)$$NL$
+#define TNUM_FLGID	$LENGTH(FLG.ID_LIST)$$NL$
+#define TNUM_DTQID	$LENGTH(DTQ.ID_LIST)$$NL$
+#define TNUM_PDQID	$LENGTH(PDQ.ID_LIST)$$NL$
+#define TNUM_MBXID	$LENGTH(MBX.ID_LIST)$$NL$
+#define TNUM_MPFID	$LENGTH(MPF.ID_LIST)$$NL$
+#define TNUM_CYCID	$LENGTH(CYC.ID_LIST)$$NL$
+#define TNUM_ALMID	$LENGTH(ALM.ID_LIST)$$NL$
+$NL$
+$FOREACH id TSK.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id SEM.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id FLG.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id DTQ.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id PDQ.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id MBX.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id MPF.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id CYC.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id ALM.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$NL$
+#endif /* TOPPERS_KERNEL_CFG_H */$NL$
+
+$ =====================================================================
+$ kernel_cfg.cÌ¶¬
+$ =====================================================================
+
+$FILE "kernel_cfg.c"$
+/* kernel_cfg.c */$NL$
+#include "kernel/kernel_int.h"$NL$
+#include "kernel_cfg.h"$NL$
+$NL$
+#ifndef TOPPERS_EMPTY_LABEL$NL$
+#define TOPPERS_EMPTY_LABEL(x,y) x y[0]$NL$
+#endif$NL$
+$NL$
+#if TKERNEL_PRID != 0x07u$NL$
+#error The kernel does not match this configuration file.$NL$
+#endif$NL$
+$NL$
+
+$ 
+$  CN[hfBNeBui#includej
+$ 
+/*$NL$
+$SPC$*  Include Directives (#include)$NL$
+$SPC$*/$NL$
+$NL$
+$INCLUDES$
+$NL$
+
+$ 
+$  IuWFNgÌIDÔðÛ·éÏ
+$ 
+$IF USE_EXTERNAL_ID$
+	/*$NL$
+	$SPC$*  Variables for Object ID$NL$
+	$SPC$*/$NL$
+	$NL$
+	$FOREACH id TSK.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id SEM.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id FLG.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id DTQ.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id PDQ.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id MBX.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id MPF.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id CYC.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id ALM.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+$END$
+
+$ 
+$  g[XO}NÌftHgè`
+$ 
+/*$NL$
+$SPC$*  Default Definitions of Trace Log Macros$NL$
+$SPC$*/$NL$
+$NL$
+#ifndef LOG_ISR_ENTER$NL$
+#define LOG_ISR_ENTER(intno)$NL$
+#endif /* LOG_ISR_ENTER */$NL$
+$NL$
+#ifndef LOG_ISR_LEAVE$NL$
+#define LOG_ISR_LEAVE(intno)$NL$
+#endif /* LOG_ISR_LEAVE */$NL$
+$NL$
+
+$ 
+$  ^XN
+$ 
+/*$NL$
+$SPC$*  Task Management Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ^XNª1ÂÈã¶Ý·é±ÆÌ`FbN
+$IF !LENGTH(TSK.ID_LIST)$
+	$ERROR$$FORMAT(_("no task is registered"))$$END$
+$END$
+
+$ ^XNIDÔÌÅål
+const ID _kernel_tmax_tskid = (TMIN_TSKID + TNUM_TSKID - 1);$NL$
+$NL$
+
+$ G[`FbN
+$FOREACH tskid TSK.ID_LIST$
+$	// tskatrªimTA_ACT|TA_RSTRnjÅÈ¢êiE_RSATRj
+	$IF (TSK.TSKATR[tskid] & ~(TA_ACT|TA_RSTR|TARGET_TSKATR)) != 0$
+		$ERROR TSK.TEXT_LINE[tskid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "tskatr", TSK.TSKATR[tskid], tskid, "CRE_TSK")$$END$
+	$END$
+
+$	// (TMIN_TPRI <= itskpri && itskpri <= TMAX_TPRI)ÅÈ¢êiE_PARj
+	$IF !(TMIN_TPRI <= TSK.ITSKPRI[tskid] && TSK.ITSKPRI[tskid] <= TMAX_TPRI)$
+		$ERROR TSK.TEXT_LINE[tskid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "itskpri", TSK.ITSKPRI[tskid], tskid, "CRE_TSK")$$END$
+	$END$
+
+$ 	// texatrªiTA_NULLjÅÈ¢êiE_RSATRj
+	$IF LENGTH(TSK.TEXATR[tskid]) && TSK.TEXATR[tskid] != 0$
+		$ERROR DEF_TEX.TEXT_LINE[tskid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "texatr", TSK.TEXATR[tskid], tskid, "DEF_TEX")$$END$
+	$END$
+$END$
+
+$ X^bNÌæÉÖ·éG[`FbN
+$FOREACH tskid TSK.ID_LIST$
+$	// stkszª0©C^[Qbgè`ÌÅ¬liTARGET_MIN_STKSZjæèà¬³¢êiE_PARj
+	$IF TSK.STKSZ[tskid] == 0 || (TARGET_MIN_STKSZ
+									&& TSK.STKSZ[tskid] < TARGET_MIN_STKSZ)$
+		$ERROR TSK.TEXT_LINE[tskid]$E_PAR: $FORMAT(_("%1% `%2%\' of `%3%\' in %4% is too small"), "stksz", TSK.STKSZ[tskid], tskid, "CRE_TSK")$$END$
+	$END$
+$ 	// stkszªX^bNÌæÌTCYÆµÄ³µ­È¢êiE_PARj
+	$IF !EQ(TSK.STK[tskid], "NULL") && CHECK_STKSZ_ALIGN
+							&& (TSK.STKSZ[tskid] & (CHECK_STKSZ_ALIGN - 1))$
+		$ERROR TSK.TEXT_LINE[tskid]$E_PAR: $FORMAT(_("%1% `%2%\' of `%3%\' in %4% is not aligned"), "stksz", TSK.STKSZ[tskid], tskid, "CRE_TSK")$$END$
+	$END$
+$END$
+
+$ X^bNÌæÌ¶¬
+$FOREACH tskid TSK.ID_LIST$
+	$IF EQ(TSK.STK[tskid], "NULL")$
+		$IF (TSK.TSKATR[tskid] & TA_RSTR) == 0$
+			static STK_T _kernel_stack_$tskid$[COUNT_STK_T($TSK.STKSZ[tskid]$)];$NL$
+			$TSK.TINIB_STKSZ[tskid] = FORMAT("ROUND_STK_T(%1%)", TSK.STKSZ[tskid])$
+			$TSK.TINIB_STK[tskid] = CONCAT("_kernel_stack_", tskid)$
+		$ELSE$
+			$TSK.TINIB_STKSZ[tskid] = FORMAT("ROUND_STK_T(%1%)", TSK.STKSZ[tskid])$
+			$TSK.TINIB_STK[tskid] = CONCAT("_kernel_shared_stack_", +TSK.ITSKPRI[tskid])$
+$ 			// §ñ^XNpÌ¤LX^bNÌTCYðßé
+			$IF !LENGTH(shared_stack_size[TSK.ITSKPRI[tskid]])
+					|| shared_stack_size[TSK.ITSKPRI[tskid]] < TSK.STKSZ[tskid]$
+				$shared_stack_size[TSK.ITSKPRI[tskid]] = TSK.STKSZ[tskid]$
+			$END$
+		$END$
+	$ELSE$
+		$TSK.TINIB_STKSZ[tskid] = TSK.STKSZ[tskid]$
+		$TSK.TINIB_STK[tskid] = TSK.STK[tskid]$
+	$END$
+$END$
+$FOREACH tskpri RANGE(TMIN_TPRI, TMAX_TPRI)$
+	$IF LENGTH(shared_stack_size[tskpri])$
+		static STK_T _kernel_shared_stack_$tskpri$[COUNT_STK_T($shared_stack_size[tskpri]$)];$NL$
+	$END$
+$END$
+$NL$
+
+$ ^XNú»ubNÌ¶¬i^XNÍ1ÂÈã¶Ý·éj
+const TINIB _kernel_tinib_table[TNUM_TSKID] = {$NL$
+$JOINEACH tskid TSK.ID_LIST ",\n"$
+$	// ^XN®«Cg£îñCN®ÔnCN®Dæx
+	$TAB${
+	$SPC$($TSK.TSKATR[tskid]$), (intptr_t)($TSK.EXINF[tskid]$),
+	$SPC$((TASK)($TSK.TASK[tskid]$)), INT_PRIORITY($TSK.ITSKPRI[tskid]$),
+
+$	// ^XNú»ReLXgubNCX^bNÌæ
+	$IF USE_TSKINICTXB$
+		$GENERATE_TSKINICTXB(tskid)$
+	$ELSE$
+		$SPC$$TSK.TINIB_STKSZ[tskid]$, $TSK.TINIB_STK[tskid]$,
+	$END$
+
+$	// ^XNáO[`Ì®«ÆN®Ôn
+	$SPC$($ALT(TSK.TEXATR[tskid],"TA_NULL")$), ($ALT(TSK.TEXRTN[tskid],"NULL")$) }
+$END$$NL$
+};$NL$
+$NL$
+
+$ ^XNÇubNÌ¶¬
+TCB _kernel_tcb_table[TNUM_TSKID];$NL$
+$NL$
+
+$ ^XN¶¬e[uÌ¶¬
+const ID _kernel_torder_table[TNUM_TSKID] = {$NL$
+$TAB$$JOINEACH tskid TSK.ORDER_LIST ", "$$tskid$$END$$NL$
+};$NL$
+$NL$
+
+$ 
+$  Z}tH
+$ 
+/*$NL$
+$SPC$*  Semaphore Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ Z}tHIDÔÌÅål
+const ID _kernel_tmax_semid = (TMIN_SEMID + TNUM_SEMID - 1);$NL$
+$NL$
+
+$ Z}tHú»ubNÌ¶¬
+$IF LENGTH(SEM.ID_LIST)$
+	const SEMINIB _kernel_seminib_table[TNUM_SEMID] = {$NL$
+	$JOINEACH semid SEM.ID_LIST ",\n"$
+$		// sematrªimTA_TPRInjÅÈ¢êiE_RSATRj
+		$IF (SEM.SEMATR[semid] & ~TA_TPRI) != 0$
+			$ERROR SEM.TEXT_LINE[semid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "sematr", SEM.SEMATR[semid], semid, "CRE_SEM")$$END$
+		$END$
+
+$		// (0 <= isemcnt && isemcnt <= maxsem)ÅÈ¢êiE_PARj
+		$IF !(0 <= SEM.ISEMCNT[semid] && SEM.ISEMCNT[semid] <= SEM.MAXSEM[semid])$
+			$ERROR SEM.TEXT_LINE[semid]$E_PAR: $FORMAT(_("too large %1% `%2%\' of `%3%\' in %4%"), "isemcnt", SEM.ISEMCNT[semid], semid, "CRE_SEM")$$END$
+		$END$
+
+$		// (1 <= maxsem && maxsem <= TMAX_MAXSEM)ÅÈ¢êiE_PARj
+		$IF !(1 <= SEM.MAXSEM[semid] && SEM.MAXSEM[semid] <= TMAX_MAXSEM)$
+			$ERROR SEM.TEXT_LINE[semid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "maxsem", SEM.MAXSEM[semid], semid, "CRE_SEM")$$END$
+		$END$
+
+$		// Z}tHú»ubN
+		$TAB${ ($SEM.SEMATR[semid]$), ($SEM.ISEMCNT[semid]$), ($SEM.MAXSEM[semid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// Z}tHÇubN
+	SEMCB _kernel_semcb_table[TNUM_SEMID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const SEMINIB, _kernel_seminib_table);$NL$
+	TOPPERS_EMPTY_LABEL(SEMCB, _kernel_semcb_table);$NL$
+$END$$NL$
+
+$ 
+$  CxgtO
+$ 
+/*$NL$
+$SPC$*  Eventflag Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ CxgtOIDÔÌÅål
+const ID _kernel_tmax_flgid = (TMIN_FLGID + TNUM_FLGID - 1);$NL$
+$NL$
+
+$ CxgtOú»ubNÌ¶¬
+$IF LENGTH(FLG.ID_LIST)$
+	const FLGINIB _kernel_flginib_table[TNUM_FLGID] = {$NL$
+	$JOINEACH flgid FLG.ID_LIST ",\n"$
+$		// flgatrªimTA_TPRInbmTA_WMULnbmTA_CLRnjÅÈ¢êiE_RSATRj
+		$IF (FLG.FLGATR[flgid] & ~(TA_TPRI|TA_WMUL|TA_CLR)) != 0$
+			$ERROR FLG.TEXT_LINE[flgid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "flgatr", FLG.FLGATR[flgid], flgid, "CRE_FLG")$$END$
+		$END$
+
+$		// CxgtOú»ubN
+		$TAB${ ($FLG.FLGATR[flgid]$), ($FLG.IFLGPTN[flgid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// CxgtOÇubN
+	FLGCB _kernel_flgcb_table[TNUM_FLGID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const FLGINIB, _kernel_flginib_table);$NL$
+	TOPPERS_EMPTY_LABEL(FLGCB, _kernel_flgcb_table);$NL$
+$END$$NL$
+
+$ 
+$  f[^L
+[
+$ 
+/*$NL$
+$SPC$*  Dataqueue Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ f[^L
+[IDÔÌÅål
+const ID _kernel_tmax_dtqid = (TMIN_DTQID + TNUM_DTQID - 1);$NL$
+$NL$
+
+$IF LENGTH(DTQ.ID_LIST)$
+	$FOREACH dtqid DTQ.ID_LIST$
+$		// dtqatrªimTA_TPRInjÅÈ¢êiE_RSATRj
+		$IF (DTQ.DTQATR[dtqid] & ~TA_TPRI) != 0$
+			$ERROR DTQ.TEXT_LINE[dtqid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "dtqatr", DTQ.DTQATR[dtqid], dtqid, "CRE_DTQ")$$END$
+		$END$
+
+$		// dtqmbªNULLÅÈ¢êiE_NOSPTj
+		$IF !EQ(DTQ.DTQMB[dtqid], "NULL")$
+			$ERROR DTQ.TEXT_LINE[dtqid]$E_NOSPT: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "dtqmb", DTQ.DTQMB[dtqid], dtqid, "CRE_DTQ")$$END$
+		$END$
+
+$		// f[^L
+[ÇÌæ
+		$IF DTQ.DTQCNT[dtqid]$
+			static DTQMB _kernel_dtqmb_$dtqid$[$DTQ.DTQCNT[dtqid]$];$NL$
+		$END$
+	$END$
+
+$	// f[^L
+[ú»ubNÌ¶¬
+	const DTQINIB _kernel_dtqinib_table[TNUM_DTQID] = {$NL$
+	$JOINEACH dtqid DTQ.ID_LIST ",\n"$
+		$TAB${ ($DTQ.DTQATR[dtqid]$), ($DTQ.DTQCNT[dtqid]$), $IF DTQ.DTQCNT[dtqid]$(_kernel_dtqmb_$dtqid$)$ELSE$NULL$END$ }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// f[^L
+[ÇubN
+	DTQCB _kernel_dtqcb_table[TNUM_DTQID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const DTQINIB, _kernel_dtqinib_table);$NL$
+	TOPPERS_EMPTY_LABEL(DTQCB, _kernel_dtqcb_table);$NL$
+$END$$NL$
+
+$ 
+$  Dæxf[^L
+[
+$ 
+/*$NL$
+$SPC$*  Priority Dataqueue Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ Dæxf[^L
+[IDÔÌÅål
+const ID _kernel_tmax_pdqid = (TMIN_PDQID + TNUM_PDQID - 1);$NL$
+$NL$
+
+$IF LENGTH(PDQ.ID_LIST)$
+	$FOREACH pdqid PDQ.ID_LIST$
+$		// pdqatrªimTA_TPRInjÅÈ¢êiE_RSATRj
+		$IF (PDQ.PDQATR[pdqid] & ~TA_TPRI) != 0$
+			$ERROR PDQ.TEXT_LINE[pdqid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "pdqatr", PDQ.PDQATR[pdqid], pdqid, "CRE_PDQ")$$END$
+		$END$
+
+$		// (TMIN_DPRI <= maxdpri && maxdpri <= TMAX_DPRI)ÅÈ¢êiE_PARj
+		$IF !(TMIN_DPRI <= PDQ.MAXDPRI[pdqid] && PDQ.MAXDPRI[pdqid] <= TMAX_DPRI)$
+			$ERROR PDQ.TEXT_LINE[pdqid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "maxdpri", PDQ.MAXDPRI[pdqid], pdqid, "CRE_PDQ")$$END$
+		$END$
+
+$		// pdqmbªNULLÅÈ¢êiE_NOSPTj
+		$IF !EQ(PDQ.PDQMB[pdqid], "NULL")$
+			$ERROR PDQ.TEXT_LINE[pdqid]$E_NOSPT: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "pdqmb", PDQ.PDQMB[pdqid], pdqid, "CRE_PDQ")$$END$
+		$END$
+
+$		// Dæxf[^L
+[ÇÌæ
+		$IF PDQ.PDQCNT[pdqid]$
+			static PDQMB _kernel_pdqmb_$pdqid$[$PDQ.PDQCNT[pdqid]$];$NL$
+		$END$
+	$END$
+
+$	// Dæxf[^L
+[ú»ubNÌ¶¬
+	const PDQINIB _kernel_pdqinib_table[TNUM_PDQID] = {$NL$
+	$JOINEACH pdqid PDQ.ID_LIST ",\n"$
+		$TAB${ ($PDQ.PDQATR[pdqid]$), ($PDQ.PDQCNT[pdqid]$), ($PDQ.MAXDPRI[pdqid]$), $IF PDQ.PDQCNT[pdqid]$(_kernel_pdqmb_$pdqid$)$ELSE$NULL$END$ }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// Dæxf[^L
+[ÇubN
+	PDQCB _kernel_pdqcb_table[TNUM_PDQID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const PDQINIB, _kernel_pdqinib_table);$NL$
+	TOPPERS_EMPTY_LABEL(PDQCB, _kernel_pdqcb_table);$NL$
+$END$$NL$
+
+$ 
+$  [{bNX
+$ 
+/*$NL$
+$SPC$*  Mailbox Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ [{bNXIDÔÌÅål
+const ID _kernel_tmax_mbxid = (TMIN_MBXID + TNUM_MBXID - 1);$NL$
+$NL$
+
+$ [{bNXú»ubNÌ¶¬
+$IF LENGTH(MBX.ID_LIST)$
+	const MBXINIB _kernel_mbxinib_table[TNUM_MBXID] = {$NL$
+	$JOINEACH mbxid MBX.ID_LIST ",\n"$
+$		// mbxatrªimTA_TPRInbmTA_MPRInjÅÈ¢êiE_RSATRj
+		$IF (MBX.MBXATR[mbxid] & ~(TA_TPRI|TA_MPRI)) != 0$
+			$ERROR MBX.TEXT_LINE[mbxid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "mbxatr", MBX.MBXATR[mbxid], mbxid, "CRE_MBX")$$END$
+		$END$
+
+$		// (TMIN_MPRI <= maxmpri && maxmpri <= TMAX_MPRI)ÅÈ¢êiE_PARj
+		$IF !(TMIN_MPRI <= MBX.MAXMPRI[mbxid] && MBX.MAXMPRI[mbxid] <= TMAX_MPRI)$
+			$ERROR MBX.TEXT_LINE[mbxid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "maxmpri", MBX.MAXMPRI[mbxid], mbxid, "CRE_MBX")$$END$
+		$END$
+
+$		// mprihdªNULLÅÈ¢êiE_NOSPTj
+		$IF !EQ(MBX.MPRIHD[mbxid], "NULL")$
+			$ERROR MBX.TEXT_LINE[mbxid]$E_NOSPT: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "mprihd", MBX.MPRIHD[mbxid], mbxid, "CRE_MBX")$$END$
+		$END$
+
+$		// [{bNXú»ubN
+		$TAB${ ($MBX.MBXATR[mbxid]$), ($MBX.MAXMPRI[mbxid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// [{bNXÇubN
+	MBXCB _kernel_mbxcb_table[TNUM_MBXID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const MBXINIB, _kernel_mbxinib_table);$NL$
+	TOPPERS_EMPTY_LABEL(MBXCB, _kernel_mbxcb_table);$NL$
+$END$$NL$
+
+$ 
+$  Åè·v[
+$ 
+/*$NL$
+$SPC$*  Fixed-sized Memorypool Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ Åè·v[IDÔÌÅål
+const ID _kernel_tmax_mpfid = (TMIN_MPFID + TNUM_MPFID - 1);$NL$
+$NL$
+
+$IF LENGTH(MPF.ID_LIST)$
+	$FOREACH mpfid MPF.ID_LIST$
+$		// mpfatrªimTA_TPRInjÅÈ¢êiE_RSATRj
+		$IF (MPF.MPFATR[mpfid] & ~TA_TPRI) != 0$
+			$ERROR MPF.TEXT_LINE[mpfid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "mpfatr", MPF.MPFATR[mpfid], mpfid, "CRE_MPF")$$END$
+		$END$
+
+$		// blkcntª0ÌêiE_PARj
+		$IF MPF.BLKCNT[mpfid] == 0$
+			$ERROR MPF.TEXT_LINE[mpfid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "blkcnt", MPF.BLKCNT[mpfid], mpfid, "CRE_MPF")$$END$
+		$END$
+
+$		// blkszª0ÌêiE_PARj
+		$IF MPF.BLKSZ[mpfid] == 0$
+			$ERROR MPF.TEXT_LINE[mpfid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "blksz", MPF.BLKSZ[mpfid], mpfid, "CRE_MPF")$$END$
+		$END$
+
+$		// Åè·v[Ìæ
+		$IF EQ(MPF.MPF[mpfid], "NULL")$
+			static MPF_T _kernel_mpf_$mpfid$[($MPF.BLKCNT[mpfid]$) * COUNT_MPF_T($MPF.BLKSZ[mpfid]$)];$NL$
+		$END$
+
+$		// mpfmbªNULLÅÈ¢êiE_NOSPTj
+		$IF !EQ(MPF.MPFMB[mpfid], "NULL")$
+			$ERROR MPF.TEXT_LINE[mpfid]$E_NOSPT: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "mpfmb", MPF.MPFMB[mpfid], mpfid, "CRE_MPF")$$END$
+		$END$
+
+$		// Åè·v[ÇÌæ
+		static MPFMB _kernel_mpfmb_$mpfid$[$MPF.BLKCNT[mpfid]$];$NL$
+	$END$
+
+$	// Åè·v[ú»ubNÌ¶¬
+	const MPFINIB _kernel_mpfinib_table[TNUM_MPFID] = {$NL$
+	$JOINEACH mpfid MPF.ID_LIST ",\n"$
+		$TAB${ ($MPF.MPFATR[mpfid]$), ($MPF.BLKCNT[mpfid]$), ROUND_MPF_T($MPF.BLKSZ[mpfid]$), $IF EQ(MPF.MPF[mpfid],"NULL")$(_kernel_mpf_$mpfid$)$ELSE$($MPF.MPF[mpfid]$)$END$, (_kernel_mpfmb_$mpfid$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// Åè·v[ÇubN
+	MPFCB _kernel_mpfcb_table[TNUM_MPFID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const MPFINIB, _kernel_mpfinib_table);$NL$
+	TOPPERS_EMPTY_LABEL(MPFCB, _kernel_mpfcb_table);$NL$
+$END$$NL$
+
+$ 
+$  üúnh
+$ 
+/*$NL$
+$SPC$*  Cyclic Handler Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ üúnhIDÔÌÅål
+const ID _kernel_tmax_cycid = (TMIN_CYCID + TNUM_CYCID - 1);$NL$
+$NL$
+
+$ üúnhú»e[uÌ¶¬
+$IF LENGTH(CYC.ID_LIST)$
+	const CYCINIB _kernel_cycinib_table[TNUM_CYCID] = {$NL$
+	$JOINEACH cycid CYC.ID_LIST ",\n"$
+$		// cycatrªimTA_STAnjÅÈ¢êiE_RSATRj
+		$IF (CYC.CYCATR[cycid] & ~TA_STA) != 0$
+			$ERROR CYC.TEXT_LINE[cycid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "cycatr", CYC.CYCATR[cycid], cycid, "CRE_CYC")$$END$
+		$END$
+
+$		// (0 < cyctim && cyctim <= TMAX_RELTIM)ÅÈ¢êiE_PARj
+		$IF !(0 < CYC.CYCTIM[cycid] && CYC.CYCTIM[cycid] <= TMAX_RELTIM)$
+			$ERROR CYC.TEXT_LINE[cycid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "cyctim", CYC.CYCTIM[cycid], cycid, "CRE_CYC")$$END$
+		$END$
+
+$		// (0 <= cycphs && cycphs <= TMAX_RELTIM)ÅÈ¢êiE_PARj
+		$IF !(0 <= CYC.CYCPHS[cycid] && CYC.CYCPHS[cycid] <= TMAX_RELTIM)$
+			$ERROR CYC.TEXT_LINE[cycid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "cycphs", CYC.CYCPHS[cycid], cycid, "CRE_CYC")$$END$
+		$END$
+
+$		// xFcycatrÉTA_STAªÝè³êÄ¢ÄC(cycphs == 0)Ìê
+		$IF (CYC.CYCATR[cycid] & TA_STA) != 0 && CYC.CYCPHS[cycid] == 0$
+			$WARNING CYC.TEXT_LINE[cycid]$$FORMAT(_("%1% is not recommended when %2% is set to %3% in %4%"), "cycphs==0", "TA_STA", "cycatr", "CRE_CYC")$$END$
+		$END$
+
+$		// üúnhú»ubN
+		$TAB${ ($CYC.CYCATR[cycid]$), (intptr_t)($CYC.EXINF[cycid]$), ($CYC.CYCHDR[cycid]$), ($CYC.CYCTIM[cycid]$), ($CYC.CYCPHS[cycid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// üúnhÇubN
+	CYCCB _kernel_cyccb_table[TNUM_CYCID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const CYCINIB, _kernel_cycinib_table);$NL$
+	TOPPERS_EMPTY_LABEL(CYCCB, _kernel_cyccb_table);$NL$
+$END$$NL$
+
+$ 
+$  A[nh
+$ 
+/*$NL$
+$SPC$*  Alarm Handler Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ A[nhIDÔÌÅål
+const ID _kernel_tmax_almid = (TMIN_ALMID + TNUM_ALMID - 1);$NL$
+$NL$
+
+$ A[nhú»ubNÌ¶¬
+$IF LENGTH(ALM.ID_LIST)$
+	const ALMINIB _kernel_alminib_table[TNUM_ALMID] = {$NL$
+	$JOINEACH almid ALM.ID_LIST ",\n"$
+$		// almatrªiTA_NULLjÅÈ¢êiE_RSATRj
+		$IF ALM.ALMATR[almid] != 0$
+			$ERROR ALM.TEXT_LINE[almid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "almatr", ALM.ALMATR[almid], almid, "CRE_ALM")$$END$
+		$END$
+
+$		// A[nhú»ubN
+		$TAB${ ($ALM.ALMATR[almid]$), (intptr_t)($ALM.EXINF[almid]$), ($ALM.ALMHDR[almid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// A[nhÇubN
+	ALMCB _kernel_almcb_table[TNUM_ALMID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const ALMINIB, _kernel_alminib_table);$NL$
+	TOPPERS_EMPTY_LABEL(ALMCB, _kernel_almcb_table);$NL$
+$END$$NL$
+
+$ 
+$  ÝÇ@\
+$ 
+/*$NL$
+$SPC$*  Interrupt Management Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ÝÔÆÝnhÔÌÏ·e[uÌì¬
+$IF LENGTH(INTNO_ATTISR_VALID) != LENGTH(INHNO_ATTISR_VALID)$
+	$ERROR$length of `INTNO_ATTISR_VALID' is different from length of `INHNO_ATTISR_VALID'$END$
+$END$
+$i = 0$
+$FOREACH intno INTNO_ATTISR_VALID$
+	$inhno = AT(INHNO_ATTISR_VALID, i)$
+	$INHNO[intno] = inhno$
+	$INTNO[inhno] = intno$
+	$i = i + 1$
+$END$
+
+$ ÝvCÉÖ·éG[`FbN
+$i = 0$
+$FOREACH intno INT.ORDER_LIST$
+$	// intnoªCFG_INTÉÎ·éÝÔÆµÄ³µ­È¢êiE_PARj
+	$IF !LENGTH(FIND(INTNO_CFGINT_VALID, INT.INTNO[intno]))$
+		$ERROR INT.TEXT_LINE[intno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "intno", INT.INTNO[intno], "CFG_INT")$$END$
+	$END$
+
+$	// intnoªCFG_INTÉæÁÄÝèÏÝÌêiE_OBJj
+	$j = 0$
+	$FOREACH intno2 INT.ORDER_LIST$
+		$IF INT.INTNO[intno] == INT.INTNO[intno2] && j < i$
+			$ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' in %3% is duplicated"), "intno", INT.INTNO[intno], "CFG_INT")$$END$
+		$END$
+		$j = j + 1$
+	$END$
+
+$	// intatrªimTA_ENAINTnbmTA_EDGEnjÅÈ¢êiE_RSATRj
+	$IF (INT.INTATR[intno] & ~(TA_ENAINT|TA_EDGE|TARGET_INTATR)) != 0$
+		$ERROR INT.TEXT_LINE[intno]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "intatr", INT.INTATR[intno], "intno", INT.INTNO[intno], "CFG_INT")$$END$
+	$END$
+
+$	// intpriªCFG_INTÉÎ·éÝDæxÆµÄ³µ­È¢êiE_PARj
+	$IF !LENGTH(FIND(INTPRI_CFGINT_VALID, INT.INTPRI[intno]))$
+		$ERROR INT.TEXT_LINE[intno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "intpri", INT.INTPRI[intno], "CFG_INT")$$END$
+	$END$
+
+$	// J[lÇÉÅè³êÄ¢éintnoÉÎµÄCintpriÉTMIN_INTPRI
+$	// æèà¬³¢lªwè³ê½êiE_OBJj
+	$IF LENGTH(FIND(INTNO_FIX_KERNEL, intno))$
+		$IF INT.INTPRI[intno] < TMIN_INTPRI$
+			$ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' must not have higher priority than %3%"), "intno", INT.INTNO[intno], "TMIN_INTPRI")$$END$
+		$END$
+	$END$
+
+$	// J[lÇOÉÅè³êÄ¢éintnoÉÎµÄCintpriÉTMIN_INTPRI
+$	// æèà¬³¢lªwè³êÈ©Á½êiE_OBJj
+	$IF LENGTH(FIND(INTNO_FIX_NONKERNEL, intno))$
+		$IF INT.INTPRI[intno] >= TMIN_INTPRI$
+			$ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' must have higher priority than %3%"), "intno", INT.INTNO[intno], "TMIN_INTPRI")$$END$
+		$END$
+	$END$
+	$i = i + 1$
+$END$
+
+$ ÝnhÉÖ·éG[`FbN
+$i = 0$
+$FOREACH inhno INH.ORDER_LIST$
+$	// inhnoªDEF_INHÉÎ·éÝnhÔÆµÄ³µ­È¢êiE_PARj
+	$IF !LENGTH(FIND(INHNO_DEFINH_VALID, INH.INHNO[inhno]))$
+		$ERROR INH.TEXT_LINE[inhno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "inhno", INH.INHNO[inhno], "DEF_INH")$$END$
+	$END$
+
+$	// inhnoªDEF_INHÉæÁÄÝèÏÝÌêiE_OBJj
+	$j = 0$
+	$FOREACH inhno2 INH.ORDER_LIST$
+		$IF INH.INHNO[inhno] == INH.INHNO[inhno2] && j < i$
+			$ERROR INH.TEXT_LINE[inhno]$E_OBJ: $FORMAT(_("%1% `%2%\' in %3% is duplicated"), "inhno", INH.INHNO[inhno], "DEF_INH")$$END$
+		$END$
+		$j = j + 1$
+	$END$
+
+$	// inhatrªiTA_NULLjÅÈ¢êiE_RSATRj
+	$IF (INH.INHATR[inhno] & ~TARGET_INHATR) != 0$
+		$ERROR INH.TEXT_LINE[inhno]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "inhatr", INH.INHATR[inhno], "inhno", INH.INHNO[inhno], "DEF_INH")$$END$
+	$END$
+
+$	// J[lÇÉÅè³êÄ¢éinhnoÉÎµÄCinhatrÉTA_NONKERNEL
+$	//@ªwè³êÄ¢éêiE_RSATRj
+	$IF LENGTH(FIND(INHNO_FIX_KERNEL, inhno))$
+		$IF (INH.INHATR[inhno] & TA_NONKERNEL) != 0$
+			$ERROR INH.TEXT_LINE[inhno]$E_RSATR: $FORMAT(_("%1% `%2%\' must not be non-kernel interrupt"), "inhno", INH.INHNO[inhno])$$END$
+		$END$
+	$END$
+
+$	// J[lÇOÉÅè³êÄ¢éinhnoÉÎµÄCinhatrÉTA_NONKERNEL
+$	// ªwè³êÄ¢È¢êiE_RSATRj
+	$IF LENGTH(FIND(INHNO_FIX_NONKERNEL, inhno))$
+		$IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$
+			$ERROR INH.TEXT_LINE[inhno]$E_RSATR: $FORMAT(_("%1% `%2%\' must be non-kernel interrupt"), "inhno", INH.INHNO[inhno])$$END$
+		$END$
+	$END$
+
+	$IF LENGTH(INTNO[INH.INHNO[inhno]])$
+		$intno = INTNO[INH.INHNO[inhno]]$
+$		// inhnoÉÎ·éintnoÉÎ·éCFG_INTªÈ¢êiE_OBJj
+		$IF !LENGTH(INT.INTNO[intno])$
+			$ERROR INH.TEXT_LINE[inhno]$E_OBJ: $FORMAT(_("%1% `%2%\' corresponding to %3% `%4%\' is not configured with %5%"), "intno", INT.INTNO[intno], "inhno", INH.INHNO[inhno], "CFG_INT")$$END$
+		$ELSE$
+			$IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$
+$				// inhatrÉTA_NONKERNELªwè³êÄ¨ç¸CinhnoÉÎ
+$				// ·éintnoÉÎµÄCFG_INTÅÝè³ê½ÝDæxª
+$				// TMIN_INTPRIæèà¬³¢êiE_OBJj
+				$IF INT.INTPRI[intno] < TMIN_INTPRI$
+					$ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' configured for %3% `%4%\' is higher than %5%"), "intpri", INT.INTPRI[intno], "inhno", INH.INHNO[inhno], "TMIN_INTPRI")$$END$
+				$END$
+			$ELSE$
+$				// inhatrÉTA_NONKERNELªwè³êÄ¨èCinhnoÉÎ
+$				// ·éintnoÉÎµÄCFG_INTÅÝè³ê½ÝDæxª
+$				// TMIN_INTPRIÈãÅ éêiE_OBJj
+				$IF INT.INTPRI[intno] >= TMIN_INTPRI$
+					$ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' configured for %3% `%4%\' is lower than or equal to %5%"), "intpri", INT.INTPRI[intno], "inhno", INH.INHNO[inhno], "TMIN_INTPRI")$$END$
+				$END$
+			$END$
+		$END$
+	$END$
+	$i = i + 1$
+$END$
+
+$ ÝT[rX[`iISRjÉÖ·éG[`FbNÆÝnhÌ¶¬
+$FOREACH order ISR.ORDER_LIST$
+$	// isratrªiTA_NULLjÅÈ¢êiE_RSATRj
+	$IF (ISR.ISRATR[order] & ~TARGET_ISRATR) != 0$
+		$ERROR ISR.TEXT_LINE[order]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "isratr", ISR.ISRATR[order], "ATT_ISR")$$END$
+	$END$
+
+$	// intnoªATT_ISRÉÎ·éÝÔÆµÄ³µ­È¢êiE_PARj
+	$IF !LENGTH(FIND(INTNO_ATTISR_VALID, ISR.INTNO[order]))$
+		$ERROR ISR.TEXT_LINE[order]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "intno", ISR.INTNO[order], "ATT_ISR")$$END$
+	$END$
+
+$	// (TMIN_ISRPRI <= isrpri && isrpri <= TMAX_ISRPRI)ÅÈ¢êiE_PARj
+	$IF !(TMIN_ISRPRI <= ISR.ISRPRI[order] && ISR.ISRPRI[order] <= TMAX_ISRPRI)$
+		$ERROR ISR.TEXT_LINE[order]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "isrpri", ISR.ISRPRI[order], "ATT_ISR")$$END$
+	$END$
+$END$
+
+$FOREACH intno INTNO_ATTISR_VALID$
+	$inhno = INHNO[intno]$
+
+$	// ÝÔintnoÉÎµÄo^³ê½ISRÌXgÌì¬
+	$isr_order_list = {}$
+	$FOREACH order ISR.ORDER_LIST$
+		$IF ISR.INTNO[order] == intno$
+			$isr_order_list = APPEND(isr_order_list, order)$
+			$order_for_error = order$
+		$END$
+	$END$
+
+$	// ÝÔintnoÉÎµÄo^³ê½ISRª¶Ý·éê
+	$IF LENGTH(isr_order_list) > 0$
+$		// intnoÉÎ·éinhnoÉÎµÄDEF_INHª éêiE_OBJj
+		$IF LENGTH(INH.INHNO[inhno])$
+			$ERROR ISR.TEXT_LINE[order_for_error]$E_OBJ: $FORMAT(_("%1% `%2%\' in %3% is duplicated with %4% `%5%\'"), "intno", ISR.INTNO[order_for_error], "ATT_ISR", "inhno", INH.INHNO[inhno])$$END$
+		$END$
+
+$		// intnoÉÎ·éCFG_INTªÈ¢êiE_OBJj
+		$IF !LENGTH(INT.INTNO[intno])$
+			$ERROR ISR.TEXT_LINE[order_for_error]$E_OBJ: $FORMAT(_("%1% `%2%\' is not configured with %3%"), "intno", ISR.INTNO[order_for_error], "CFG_INT")$$END$
+		$ELSE$
+$			// intnoÉÎµÄCFG_INTÅÝè³ê½ÝDæxªTMIN_INTPRI
+$			// æèà¬³¢êiE_OBJj
+			$IF INT.INTPRI[intno] < TMIN_INTPRI$
+				$ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' configured for %3% `%4%\' is higher than %5%"), "intpri", INT.INTPRI[intno], "intno", ISR.INTNO[order_for_error], "TMIN_INTPRI")$$END$
+			$END$
+		$END$
+
+$		// DEF_INH(inhno, { TA_NULL, _kernel_inthdr_<intno> } );
+		$INH.INHNO[inhno] = inhno$
+		$INH.INHATR[inhno] = VALUE("TA_NULL", 0)$
+		$INH.INTHDR[inhno] = CONCAT("_kernel_inthdr_", intno)$
+		$INH.ORDER_LIST = APPEND(INH.ORDER_LIST, inhno)$
+
+$		// ISRpÌÝnh
+		void$NL$
+		_kernel_inthdr_$intno$(void)$NL$
+		{$NL$
+		$IF LENGTH(isr_order_list) > 1$
+			$TAB$PRI	saved_ipm;$NL$
+			$NL$
+			$TAB$i_begin_int($intno$);$NL$
+			$TAB$saved_ipm = i_get_ipm();$NL$
+		$ELSE$
+			$TAB$i_begin_int($intno$);$NL$
+		$END$
+$		// ISRðDæxÉÄÑo·
+		$JOINEACH order SORT(isr_order_list, "ISR.ISRPRI") "\tif (i_sense_lock()) {\n\t\ti_unlock_cpu();\n\t}\n\ti_set_ipm(saved_ipm);\n"$
+			$TAB$LOG_ISR_ENTER($intno$);$NL$
+			$TAB$((ISR)($ISR.ISR[order]$))((intptr_t)($ISR.EXINF[order]$));$NL$
+			$TAB$LOG_ISR_LEAVE($intno$);$NL$
+		$END$
+		$TAB$i_end_int($intno$);$NL$
+		}$NL$
+	$END$
+$END$
+$NL$
+
+$ 
+$  ÝÇ@\Ì½ßÌWIÈú»îñÌ¶¬
+$ 
+$ ÝnhÌú»ÉKvÈîñ
+$IF !OMIT_INITIALIZE_INTERRUPT || ALT(USE_INHINIB_TABLE,0)$
+
+$ Ýnh
+#define TNUM_INHNO	$LENGTH(INH.ORDER_LIST)$$NL$
+const uint_t _kernel_tnum_inhno = TNUM_INHNO;$NL$
+$NL$
+$FOREACH inhno INH.ORDER_LIST$
+	$IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$
+		INTHDR_ENTRY($INH.INHNO[inhno]$, $+INH.INHNO[inhno]$, $INH.INTHDR[inhno]$)$NL$
+	$END$
+$END$
+$NL$
+
+$ Ýnhú»e[u
+$IF LENGTH(INH.ORDER_LIST)$
+	const INHINIB _kernel_inhinib_table[TNUM_INHNO] = {$NL$
+	$JOINEACH inhno INH.ORDER_LIST ",\n"$
+		$IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$
+			$TAB${ ($INH.INHNO[inhno]$), ($INH.INHATR[inhno]$), (FP)(INT_ENTRY($INH.INHNO[inhno]$, $INH.INTHDR[inhno]$)) }
+		$ELSE$
+			$TAB${ ($INH.INHNO[inhno]$), ($INH.INHATR[inhno]$), (FP)($INH.INTHDR[inhno]$) }
+		$END$
+	$END$$NL$
+	};$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const INHINIB, _kernel_inhinib_table);$NL$
+$END$$NL$
+$END$
+
+$ ÝvCÌú»ÉKvÈîñ
+$IF !OMIT_INITIALIZE_INTERRUPT || ALT(USE_INHINTB_TABLE,0)$
+
+$ ÝvC
+#define TNUM_INTNO	$LENGTH(INT.ORDER_LIST)$$NL$
+const uint_t _kernel_tnum_intno = TNUM_INTNO;$NL$
+$NL$
+
+$ ÝvCú»e[u
+$IF LENGTH(INT.ORDER_LIST)$
+	const INTINIB _kernel_intinib_table[TNUM_INTNO] = {$NL$
+	$JOINEACH intno INT.ORDER_LIST ",\n"$
+		$TAB${ ($INT.INTNO[intno]$), ($INT.INTATR[intno]$), ($INT.INTPRI[intno]$) }
+	$END$$NL$
+	};$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const INTINIB, _kernel_intinib_table);$NL$
+$END$$NL$
+$END$
+
+$ 
+$  CPUáOÇ@\
+$ 
+/*$NL$
+$SPC$*  CPU Exception Management Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ CPUáOnhÉÖ·éG[`FbN
+$i = 0$
+$FOREACH excno EXC.ORDER_LIST$
+$	// excnoªDEF_EXCÉÎ·éCPUáOnhÔÆµÄ³µ­È¢êiE_PARj
+	$IF !LENGTH(FIND(EXCNO_DEFEXC_VALID, EXC.EXCNO[excno]))$
+		$ERROR EXC.TEXT_LINE[excno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "excno", EXC.EXCNO[excno], "DEF_EXC")$$END$
+	$END$
+
+$	// excnoªDEF_EXCÉæÁÄÝèÏÝÌêiE_OBJj
+	$j = 0$
+	$FOREACH excno2 EXC.ORDER_LIST$
+		$IF EXC.EXCNO[excno] == EXC.EXCNO[excno2] && j < i$
+			$ERROR EXC.TEXT_LINE[excno]$E_OBJ: $FORMAT(_("%1% `%2%\' in %3% is duplicated"), "excno", EXC.EXCNO[excno], "DEF_EXC")$$END$
+		$END$
+		$j = j + 1$
+	$END$
+
+$	// excatrªiTA_NULLjÅÈ¢êiE_RSATRj
+	$IF (EXC.EXCATR[excno] & ~TARGET_EXCATR) != 0$
+		$ERROR EXC.TEXT_LINE[excno]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "excatr", EXC.EXCATR[excno], "excno", EXC.EXCNO[excno], "DEF_EXC")$$END$
+	$END$
+	$i = i + 1$
+$END$
+
+$ CPUáOnhÌ½ßÌWIÈú»îñÌ¶¬
+$IF !OMIT_INITIALIZE_EXCEPTION$
+
+$ CPUáOnh
+#define TNUM_EXCNO	$LENGTH(EXC.ORDER_LIST)$$NL$
+const uint_t _kernel_tnum_excno = TNUM_EXCNO;$NL$
+$NL$
+$FOREACH excno EXC.ORDER_LIST$
+	EXCHDR_ENTRY($EXC.EXCNO[excno]$, $+EXC.EXCNO[excno]$, $EXC.EXCHDR[excno]$)$NL$
+$END$
+$NL$
+
+$ CPUáOnhú»e[u
+$IF LENGTH(EXC.ORDER_LIST)$
+	const EXCINIB _kernel_excinib_table[TNUM_EXCNO] = {$NL$
+	$JOINEACH excno EXC.ORDER_LIST ",\n"$
+		$TAB${ ($EXC.EXCNO[excno]$), ($EXC.EXCATR[excno]$), (FP)(EXC_ENTRY($EXC.EXCNO[excno]$, $EXC.EXCHDR[excno]$)) }
+	$END$$NL$
+	};$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const EXCINIB, _kernel_excinib_table);$NL$
+$END$$NL$
+$END$
+
+$ 
+$  ñ^XNReLXgpÌX^bNÌæ
+$ 
+/*$NL$
+$SPC$*  Stack Area for Non-task Context$NL$
+$SPC$*/$NL$
+$NL$
+
+$IF !LENGTH(ICS.ORDER_LIST)$
+$	// DEF_ICSªÈ¢êÌftHglÌÝè
+	#ifdef DEFAULT_ISTK$NL$
+	$NL$
+	#define TOPPERS_ISTKSZ		DEFAULT_ISTKSZ$NL$
+	#define TOPPERS_ISTK		DEFAULT_ISTK$NL$
+	$NL$
+	#else /* DEAULT_ISTK */$NL$
+	$NL$
+	static STK_T				_kernel_istack[COUNT_STK_T(DEFAULT_ISTKSZ)];$NL$
+	#define TOPPERS_ISTKSZ		ROUND_STK_T(DEFAULT_ISTKSZ)$NL$
+	#define TOPPERS_ISTK		_kernel_istack$NL$
+	$NL$
+	#endif /* DEAULT_ISTK */$NL$
+$ELSE$
+
+$	// ÃIAPIuDEF_ICSvª¡ éiE_OBJj
+	$IF LENGTH(ICS.ORDER_LIST) > 1$
+		$ERROR$E_OBJ: $FORMAT(_("too many %1%"), "DEF_ICS")$$END$
+	$END$
+
+$ 	// istkszªX^bNÌæÌTCYÆµÄ³µ­È¢êiE_PARj
+	$IF !EQ(ICS.ISTK[1], "NULL") && CHECK_STKSZ_ALIGN
+							&& (ICS.ISTKSZ[1] & (CHECK_STKSZ_ALIGN - 1))$
+		$ERROR ICS.TEXT_LINE[1]$E_PAR: $FORMAT(_("%1% `%2%\' in %3% is not aligned"), "istksz", ICS.ISTKSZ[1], "DEF_ICS")$$END$
+	$END$
+
+	$IF EQ(ICS.ISTK[1], "NULL")$
+$		// X^bNÌæÌ©®t¯
+		static STK_T				_kernel_istack[COUNT_STK_T($ICS.ISTKSZ[1]$)];$NL$
+		#define TOPPERS_ISTKSZ		ROUND_STK_T($ICS.ISTKSZ[1]$)$NL$
+		#define TOPPERS_ISTK		_kernel_istack$NL$
+	$ELSE$
+		#define TOPPERS_ISTKSZ		($ICS.ISTKSZ[1]$)$NL$
+		#define TOPPERS_ISTK		($ICS.ISTK[1]$)$NL$
+	$END$
+$END$
+$NL$
+
+$ ñ^XNReLXgpÌX^bNÌæ
+const SIZE		_kernel_istksz = TOPPERS_ISTKSZ;$NL$
+STK_T *const	_kernel_istk = TOPPERS_ISTK;$NL$
+$NL$
+#ifdef TOPPERS_ISTKPT$NL$
+STK_T *const	_kernel_istkpt = TOPPERS_ISTKPT(TOPPERS_ISTK, TOPPERS_ISTKSZ);$NL$
+#endif /* TOPPERS_ISTKPT */$NL$
+$NL$
+
+$ 
+$  ^CCxgÇ
+$ 
+/*$NL$
+$SPC$*  Time Event Management$NL$
+$SPC$*/$NL$
+$NL$
+TMEVTN   _kernel_tmevt_heap[TNUM_TSKID + TNUM_CYCID + TNUM_ALMID];$NL$
+$NL$
+
+$ 
+$  eW
+[Ìú»Ö
+$ 
+/*$NL$
+$SPC$*  Module Initialization Function$NL$
+$SPC$*/$NL$
+$NL$
+void$NL$
+_kernel_initialize_object(void)$NL$
+{$NL$
+$TAB$_kernel_initialize_task();$NL$
+$IF LENGTH(SEM.ID_LIST)$	_kernel_initialize_semaphore();$NL$$END$
+$IF LENGTH(FLG.ID_LIST)$	_kernel_initialize_eventflag();$NL$$END$
+$IF LENGTH(DTQ.ID_LIST)$	_kernel_initialize_dataqueue();$NL$$END$
+$IF LENGTH(PDQ.ID_LIST)$	_kernel_initialize_pridataq();$NL$$END$
+$IF LENGTH(MBX.ID_LIST)$	_kernel_initialize_mailbox();$NL$$END$
+$IF LENGTH(MPF.ID_LIST)$	_kernel_initialize_mempfix();$NL$$END$
+$IF LENGTH(CYC.ID_LIST)$	_kernel_initialize_cyclic();$NL$$END$
+$IF LENGTH(ALM.ID_LIST)$	_kernel_initialize_alarm();$NL$$END$
+$TAB$_kernel_initialize_interrupt();$NL$
+$TAB$_kernel_initialize_exception();$NL$
+}$NL$
+$NL$
+
+$ 
+$  ú»[`ÌÀsÖ
+$ 
+/*$NL$
+$SPC$*  Initialization Routine$NL$
+$SPC$*/$NL$
+$NL$
+void$NL$
+_kernel_call_inirtn(void)$NL$
+{$NL$
+$FOREACH order INI.ORDER_LIST$
+$ 	// iniatrªiTA_NULLjÅÈ¢êiE_RSATRj
+	$IF INI.INIATR[order] != 0$
+		$ERROR INI.TEXT_LINE[order]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "iniatr", INI.INIATR[order], "inirtn", INI.INIRTN[order], "ATT_INI")$$END$
+	$END$
+	$TAB$((INIRTN)($INI.INIRTN[order]$))((intptr_t)($INI.EXINF[order]$));$NL$
+$END$
+}$NL$
+$NL$
+
+$ 
+$  I¹[`ÌÀsÖ
+$ 
+/*$NL$
+$SPC$*  Termination Routine$NL$
+$SPC$*/$NL$
+$NL$
+void$NL$
+_kernel_call_terrtn(void)$NL$
+{$NL$
+$FOREACH rorder TER.RORDER_LIST$
+$ 	// teratrªiTA_NULLjÅÈ¢êiE_RSATRj
+	$IF TER.TERATR[rorder] != 0$
+		$ERROR TER.TEXT_LINE[rorder]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "teratr", TER.TERATR[rorder], "terrtn", TER.TERRTN[rorder], "ATT_TER")$$END$
+	$END$
+	$TAB$((TERRTN)($TER.TERRTN[rorder]$))((intptr_t)($TER.EXINF[rorder]$));$NL$
+$END$
+}$NL$
+$NL$
Index: /asp_ewarm/asp-1.7.0/extension/rstr_task/kernel/kernel_def.csv
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/rstr_task/kernel/kernel_def.csv	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/rstr_task/kernel/kernel_def.csv	(revision 61)
@@ -0,0 +1,109 @@
+SIL_ENDIAN_BIG,#defined(SIL_ENDIAN_BIG)
+SIL_ENDIAN_LITTLE,#defined(SIL_ENDIAN_LITTLE)
+TA_NULL,TA_NULL
+TA_ACT,TA_ACT
+TA_RSTR,TA_RSTR
+TA_TPRI,TA_TPRI
+TA_MPRI,TA_MPRI
+TA_WMUL,TA_WMUL
+TA_CLR,TA_CLR
+TA_STA,TA_STA
+TA_NONKERNEL,TA_NONKERNEL
+TA_ENAINT,TA_ENAINT
+TA_EDGE,TA_EDGE
+TMIN_TPRI,TMIN_TPRI,signed
+TMAX_TPRI,TMAX_TPRI,signed
+TMIN_DPRI,TMIN_DPRI,signed
+TMAX_DPRI,TMAX_DPRI,signed
+TMIN_MPRI,TMIN_MPRI,signed
+TMAX_MPRI,TMAX_MPRI,signed
+TMIN_ISRPRI,TMIN_ISRPRI,signed
+TMAX_ISRPRI,TMAX_ISRPRI,signed
+TMAX_MAXSEM,TMAX_MAXSEM
+TMAX_RELTIM,TMAX_RELTIM
+TMIN_INTPRI,TMIN_INTPRI,signed
+OMIT_INITIALIZE_INTERRUPT,#defined(OMIT_INITIALIZE_INTERRUPT)
+OMIT_INITIALIZE_EXCEPTION,#defined(OMIT_INITIALIZE_EXCEPTION)
+USE_TSKINICTXB,#defined(USE_TSKINICTXB)
+TARGET_TSKATR,#defined(TARGET_TSKATR),,TARGET_TSKATR
+TARGET_INTATR,#defined(TARGET_INTATR),,TARGET_INTATR
+TARGET_INHATR,#defined(TARGET_INHATR),,TARGET_INHATR
+TARGET_ISRATR,#defined(TARGET_ISRATR),,TARGET_ISRATR
+TARGET_EXCATR,#defined(TARGET_EXCATR),,TARGET_EXCATR
+TARGET_MIN_STKSZ,#defined(TARGET_MIN_STKSZ),,TARGET_MIN_STKSZ
+CHECK_STKSZ_ALIGN,#defined(CHECK_STKSZ_ALIGN),,CHECK_STKSZ_ALIGN
+CHECK_FUNC_ALIGN,#defined(CHECK_FUNC_ALIGN),,CHECK_FUNC_ALIGN
+CHECK_FUNC_NONNULL,#defined(CHECK_FUNC_NONNULL)
+CHECK_STACK_ALIGN,#defined(CHECK_STACK_ALIGN),,CHECK_STACK_ALIGN
+CHECK_STACK_NONNULL,#defined(CHECK_STACK_NONNULL)
+CHECK_MPF_ALIGN,#defined(CHECK_MPF_ALIGN),,CHECK_MPF_ALIGN
+CHECK_MPF_NONNULL,#defined(CHECK_MPF_NONNULL)
+sizeof_ID,sizeof(ID)
+sizeof_uint_t,sizeof(uint_t)
+sizeof_SIZE,sizeof(SIZE)
+sizeof_ATR,sizeof(ATR)
+sizeof_PRI,sizeof(PRI)
+sizeof_void_ptr,sizeof(void*)
+sizeof_VP,sizeof(void*)
+sizeof_intptr_t,sizeof(intptr_t)
+sizeof_FP,sizeof(FP)
+sizeof_INHNO,sizeof(INHNO)
+sizeof_INTNO,sizeof(INTNO)
+sizeof_EXCNO,sizeof(EXCNO)
+sizeof_TINIB,sizeof(TINIB)
+offsetof_TINIB_tskatr,"offsetof(TINIB,tskatr)"
+offsetof_TINIB_exinf,"offsetof(TINIB,exinf)"
+offsetof_TINIB_task,"offsetof(TINIB,task)"
+offsetof_TINIB_ipriority,"offsetof(TINIB,ipriority)"
+offsetof_TINIB_stksz,#!defined(USE_TSKINICTXB),,"offsetof(TINIB,stksz)"
+offsetof_TINIB_stk,#!defined(USE_TSKINICTXB),,"offsetof(TINIB,stk)"
+offsetof_TINIB_texatr,"offsetof(TINIB,texatr)"
+offsetof_TINIB_texrtn,"offsetof(TINIB,texrtn)"
+sizeof_SEMINIB,sizeof(SEMINIB)
+offsetof_SEMINIB_sematr,"offsetof(SEMINIB,sematr)"
+offsetof_SEMINIB_isemcnt,"offsetof(SEMINIB,isemcnt)"
+offsetof_SEMINIB_maxsem,"offsetof(SEMINIB,maxsem)"
+sizeof_FLGPTN,sizeof(FLGPTN)
+sizeof_FLGINIB,sizeof(FLGINIB)
+offsetof_FLGINIB_flgatr,"offsetof(FLGINIB,flgatr)"
+offsetof_FLGINIB_iflgptn,"offsetof(FLGINIB,iflgptn)"
+sizeof_DTQINIB,sizeof(DTQINIB)
+offsetof_DTQINIB_dtqatr,"offsetof(DTQINIB,dtqatr)"
+offsetof_DTQINIB_dtqcnt,"offsetof(DTQINIB,dtqcnt)"
+offsetof_DTQINIB_p_dtqmb,"offsetof(DTQINIB,p_dtqmb)"
+sizeof_PDQINIB,sizeof(PDQINIB)
+offsetof_PDQINIB_pdqatr,"offsetof(PDQINIB,pdqatr)"
+offsetof_PDQINIB_pdqcnt,"offsetof(PDQINIB,pdqcnt)"
+offsetof_PDQINIB_maxdpri,"offsetof(PDQINIB,maxdpri)"
+offsetof_PDQINIB_p_pdqmb,"offsetof(PDQINIB,p_pdqmb)"
+sizeof_MBXINIB,sizeof(MBXINIB)
+offsetof_MBXINIB_mbxatr,"offsetof(MBXINIB,mbxatr)"
+offsetof_MBXINIB_maxmpri,"offsetof(MBXINIB,maxmpri)"
+sizeof_MPFINIB,sizeof(MPFINIB)
+offsetof_MPFINIB_mpfatr,"offsetof(MPFINIB,mpfatr)"
+offsetof_MPFINIB_blkcnt,"offsetof(MPFINIB,blkcnt)"
+offsetof_MPFINIB_blksz,"offsetof(MPFINIB,blksz)"
+offsetof_MPFINIB_mpf,"offsetof(MPFINIB,mpf)"
+offsetof_MPFINIB_p_mpfmb,"offsetof(MPFINIB,p_mpfmb)"
+sizeof_CYCINIB,sizeof(CYCINIB)
+offsetof_CYCINIB_cycatr,"offsetof(CYCINIB,cycatr)"
+offsetof_CYCINIB_exinf,"offsetof(CYCINIB,exinf)"
+offsetof_CYCINIB_cychdr,"offsetof(CYCINIB,cychdr)"
+offsetof_CYCINIB_cyctim,"offsetof(CYCINIB,cyctim)"
+offsetof_CYCINIB_cycphs,"offsetof(CYCINIB,cycphs)"
+sizeof_ALMINIB,sizeof(ALMINIB)
+offsetof_ALMINIB_almatr,"offsetof(ALMINIB,almatr)"
+offsetof_ALMINIB_exinf,"offsetof(ALMINIB,exinf)"
+offsetof_ALMINIB_almhdr,"offsetof(ALMINIB,almhdr)"
+sizeof_INHINIB,#!defined(OMIT_INITIALIZE_INTERRUPT),,sizeof(INHINIB)
+offset_INHINIB_inhno,#!defined(OMIT_INITIALIZE_INTERRUPT),,"offsetof(INHINIB,inhno)"
+offset_INHINIB_inhatr,#!defined(OMIT_INITIALIZE_INTERRUPT),,"offsetof(INHINIB,inhatr)"
+offset_INHINIB_int_entry,#!defined(OMIT_INITIALIZE_INTERRUPT),,"offsetof(INHINIB,int_entry)"
+sizeof_INTINIB,#!defined(OMIT_INITIALIZE_INTERRUPT),,sizeof(INTINIB)
+offset_INTINIB_intno,#!defined(OMIT_INITIALIZE_INTERRUPT),,"offsetof(INTINIB,intno)"
+offset_INTINIB_intatr,#!defined(OMIT_INITIALIZE_INTERRUPT),,"offsetof(INTINIB,intatr)"
+offset_INTINIB_intpri,#!defined(OMIT_INITIALIZE_INTERRUPT),,"offsetof(INTINIB,intpri)"
+sizeof_EXCINIB,#!defined(OMIT_INITIALIZE_EXCEPTION),,sizeof(EXCINIB)
+offset_EXCINIB_excno,#!defined(OMIT_INITIALIZE_EXCEPTION),,"offsetof(EXCINIB,excno)"
+offset_EXCINIB_excatr,#!defined(OMIT_INITIALIZE_EXCEPTION),,"offsetof(EXCINIB,excatr)"
+offset_EXCINIB_exc_entry,#!defined(OMIT_INITIALIZE_EXCEPTION),,"offsetof(EXCINIB,exc_entry)"
Index: /asp_ewarm/asp-1.7.0/extension/rstr_task/kernel/kernel_rename.def
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/rstr_task/kernel/kernel_rename.def	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/rstr_task/kernel/kernel_rename.def	(revision 61)
@@ -0,0 +1,137 @@
+# startup.c
+kerflg
+exit_kernel
+
+# task.c
+p_runtsk
+p_schedtsk
+reqflg
+ipmflg
+disdsp
+dspflg
+ready_queue
+ready_primap
+initialize_task
+search_schedtsk
+make_runnable
+make_non_runnable
+make_dormant
+make_active
+change_priority
+raise_priority
+rotate_ready_queue
+call_texrtn
+calltex
+
+# wait.c
+make_wait_tmout
+wait_complete
+wait_tmout
+wait_tmout_ok
+wait_release
+wobj_make_wait
+wobj_make_wait_tmout
+init_wait_queue
+
+# time_event.c
+current_time
+min_time
+next_time
+next_subtime
+last_index
+initialize_tmevt
+tmevt_up
+tmevt_down
+tmevtb_insert
+tmevtb_delete
+tmevt_lefttim
+signal_time
+
+# semaphore.c
+initialize_semaphore
+
+# eventflag.c
+initialize_eventflag
+check_flg_cond
+
+# dataqueue.c
+initialize_dataqueue
+enqueue_data
+force_enqueue_data
+dequeue_data
+send_data
+force_send_data
+receive_data
+
+# pridataq.c
+initialize_pridataq
+enqueue_pridata
+dequeue_pridata
+send_pridata
+receive_pridata
+
+# mailbox.c
+initialize_mailbox
+
+# mempfix.c
+initialize_mempfix
+get_mpf_block
+
+# cyclic.c
+initialize_cyclic
+call_cychdr
+
+# alarm.c
+initialize_alarm
+call_almhdr
+
+# interrupt.c
+initialize_interrupt
+
+# exception.c
+initialize_exception
+
+# kernel_cfg.c
+initialize_object
+call_inirtn
+call_terrtn
+tmax_tskid
+tinib_table
+torder_table
+tcb_table
+tmax_semid
+seminib_table
+semcb_table
+tmax_flgid
+flginib_table
+flgcb_table
+tmax_dtqid
+dtqcb_table
+dtqinib_table
+tmax_pdqid
+pdqcb_table
+pdqinib_table
+tmax_mbxid
+mbxcb_table
+mbxinib_table
+tmax_mpfid
+mpfinib_table
+mpfcb_table
+tmax_cycid
+cycinib_table
+cyccb_table
+tmax_almid
+alminib_table
+almcb_table
+tnum_inhno
+inhinib_table
+tnum_intno
+intinib_table
+tnum_excno
+excinib_table
+tmevt_heap
+istksz
+istk
+istkpt
+
+INCLUDE "target"
Index: /asp_ewarm/asp-1.7.0/extension/rstr_task/kernel/kernel_rename.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/rstr_task/kernel/kernel_rename.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/rstr_task/kernel/kernel_rename.h	(revision 61)
@@ -0,0 +1,346 @@
+/* This file is generated from kernel_rename.def by genrename. */
+
+#ifndef TOPPERS_KERNEL_RENAME_H
+#define TOPPERS_KERNEL_RENAME_H
+
+/*
+ *  startup.c
+ */
+#define kerflg						_kernel_kerflg
+#define exit_kernel					_kernel_exit_kernel
+
+/*
+ *  task.c
+ */
+#define p_runtsk					_kernel_p_runtsk
+#define p_schedtsk					_kernel_p_schedtsk
+#define reqflg						_kernel_reqflg
+#define ipmflg						_kernel_ipmflg
+#define disdsp						_kernel_disdsp
+#define dspflg						_kernel_dspflg
+#define ready_queue					_kernel_ready_queue
+#define ready_primap				_kernel_ready_primap
+#define initialize_task				_kernel_initialize_task
+#define search_schedtsk				_kernel_search_schedtsk
+#define make_runnable				_kernel_make_runnable
+#define make_non_runnable			_kernel_make_non_runnable
+#define make_dormant				_kernel_make_dormant
+#define make_active					_kernel_make_active
+#define change_priority				_kernel_change_priority
+#define raise_priority				_kernel_raise_priority
+#define rotate_ready_queue			_kernel_rotate_ready_queue
+#define call_texrtn					_kernel_call_texrtn
+#define calltex						_kernel_calltex
+
+/*
+ *  wait.c
+ */
+#define make_wait_tmout				_kernel_make_wait_tmout
+#define wait_complete				_kernel_wait_complete
+#define wait_tmout					_kernel_wait_tmout
+#define wait_tmout_ok				_kernel_wait_tmout_ok
+#define wait_release				_kernel_wait_release
+#define wobj_make_wait				_kernel_wobj_make_wait
+#define wobj_make_wait_tmout		_kernel_wobj_make_wait_tmout
+#define init_wait_queue				_kernel_init_wait_queue
+
+/*
+ *  time_event.c
+ */
+#define current_time				_kernel_current_time
+#define min_time					_kernel_min_time
+#define next_time					_kernel_next_time
+#define next_subtime				_kernel_next_subtime
+#define last_index					_kernel_last_index
+#define initialize_tmevt			_kernel_initialize_tmevt
+#define tmevt_up					_kernel_tmevt_up
+#define tmevt_down					_kernel_tmevt_down
+#define tmevtb_insert				_kernel_tmevtb_insert
+#define tmevtb_delete				_kernel_tmevtb_delete
+#define tmevt_lefttim				_kernel_tmevt_lefttim
+#define signal_time					_kernel_signal_time
+
+/*
+ *  semaphore.c
+ */
+#define initialize_semaphore		_kernel_initialize_semaphore
+
+/*
+ *  eventflag.c
+ */
+#define initialize_eventflag		_kernel_initialize_eventflag
+#define check_flg_cond				_kernel_check_flg_cond
+
+/*
+ *  dataqueue.c
+ */
+#define initialize_dataqueue		_kernel_initialize_dataqueue
+#define enqueue_data				_kernel_enqueue_data
+#define force_enqueue_data			_kernel_force_enqueue_data
+#define dequeue_data				_kernel_dequeue_data
+#define send_data					_kernel_send_data
+#define force_send_data				_kernel_force_send_data
+#define receive_data				_kernel_receive_data
+
+/*
+ *  pridataq.c
+ */
+#define initialize_pridataq			_kernel_initialize_pridataq
+#define enqueue_pridata				_kernel_enqueue_pridata
+#define dequeue_pridata				_kernel_dequeue_pridata
+#define send_pridata				_kernel_send_pridata
+#define receive_pridata				_kernel_receive_pridata
+
+/*
+ *  mailbox.c
+ */
+#define initialize_mailbox			_kernel_initialize_mailbox
+
+/*
+ *  mempfix.c
+ */
+#define initialize_mempfix			_kernel_initialize_mempfix
+#define get_mpf_block				_kernel_get_mpf_block
+
+/*
+ *  cyclic.c
+ */
+#define initialize_cyclic			_kernel_initialize_cyclic
+#define call_cychdr					_kernel_call_cychdr
+
+/*
+ *  alarm.c
+ */
+#define initialize_alarm			_kernel_initialize_alarm
+#define call_almhdr					_kernel_call_almhdr
+
+/*
+ *  interrupt.c
+ */
+#define initialize_interrupt		_kernel_initialize_interrupt
+
+/*
+ *  exception.c
+ */
+#define initialize_exception		_kernel_initialize_exception
+
+/*
+ *  kernel_cfg.c
+ */
+#define initialize_object			_kernel_initialize_object
+#define call_inirtn					_kernel_call_inirtn
+#define call_terrtn					_kernel_call_terrtn
+#define tmax_tskid					_kernel_tmax_tskid
+#define tinib_table					_kernel_tinib_table
+#define torder_table				_kernel_torder_table
+#define tcb_table					_kernel_tcb_table
+#define tmax_semid					_kernel_tmax_semid
+#define seminib_table				_kernel_seminib_table
+#define semcb_table					_kernel_semcb_table
+#define tmax_flgid					_kernel_tmax_flgid
+#define flginib_table				_kernel_flginib_table
+#define flgcb_table					_kernel_flgcb_table
+#define tmax_dtqid					_kernel_tmax_dtqid
+#define dtqcb_table					_kernel_dtqcb_table
+#define dtqinib_table				_kernel_dtqinib_table
+#define tmax_pdqid					_kernel_tmax_pdqid
+#define pdqcb_table					_kernel_pdqcb_table
+#define pdqinib_table				_kernel_pdqinib_table
+#define tmax_mbxid					_kernel_tmax_mbxid
+#define mbxcb_table					_kernel_mbxcb_table
+#define mbxinib_table				_kernel_mbxinib_table
+#define tmax_mpfid					_kernel_tmax_mpfid
+#define mpfinib_table				_kernel_mpfinib_table
+#define mpfcb_table					_kernel_mpfcb_table
+#define tmax_cycid					_kernel_tmax_cycid
+#define cycinib_table				_kernel_cycinib_table
+#define cyccb_table					_kernel_cyccb_table
+#define tmax_almid					_kernel_tmax_almid
+#define alminib_table				_kernel_alminib_table
+#define almcb_table					_kernel_almcb_table
+#define tnum_inhno					_kernel_tnum_inhno
+#define inhinib_table				_kernel_inhinib_table
+#define tnum_intno					_kernel_tnum_intno
+#define intinib_table				_kernel_intinib_table
+#define tnum_excno					_kernel_tnum_excno
+#define excinib_table				_kernel_excinib_table
+#define tmevt_heap					_kernel_tmevt_heap
+#define istksz						_kernel_istksz
+#define istk						_kernel_istk
+#define istkpt						_kernel_istkpt
+
+
+#ifdef TOPPERS_LABEL_ASM
+
+/*
+ *  startup.c
+ */
+#define _kerflg						__kernel_kerflg
+#define _exit_kernel				__kernel_exit_kernel
+
+/*
+ *  task.c
+ */
+#define _p_runtsk					__kernel_p_runtsk
+#define _p_schedtsk					__kernel_p_schedtsk
+#define _reqflg						__kernel_reqflg
+#define _ipmflg						__kernel_ipmflg
+#define _disdsp						__kernel_disdsp
+#define _dspflg						__kernel_dspflg
+#define _ready_queue				__kernel_ready_queue
+#define _ready_primap				__kernel_ready_primap
+#define _initialize_task			__kernel_initialize_task
+#define _search_schedtsk			__kernel_search_schedtsk
+#define _make_runnable				__kernel_make_runnable
+#define _make_non_runnable			__kernel_make_non_runnable
+#define _make_dormant				__kernel_make_dormant
+#define _make_active				__kernel_make_active
+#define _change_priority			__kernel_change_priority
+#define _raise_priority				__kernel_raise_priority
+#define _rotate_ready_queue			__kernel_rotate_ready_queue
+#define _call_texrtn				__kernel_call_texrtn
+#define _calltex					__kernel_calltex
+
+/*
+ *  wait.c
+ */
+#define _make_wait_tmout			__kernel_make_wait_tmout
+#define _wait_complete				__kernel_wait_complete
+#define _wait_tmout					__kernel_wait_tmout
+#define _wait_tmout_ok				__kernel_wait_tmout_ok
+#define _wait_release				__kernel_wait_release
+#define _wobj_make_wait				__kernel_wobj_make_wait
+#define _wobj_make_wait_tmout		__kernel_wobj_make_wait_tmout
+#define _init_wait_queue			__kernel_init_wait_queue
+
+/*
+ *  time_event.c
+ */
+#define _current_time				__kernel_current_time
+#define _min_time					__kernel_min_time
+#define _next_time					__kernel_next_time
+#define _next_subtime				__kernel_next_subtime
+#define _last_index					__kernel_last_index
+#define _initialize_tmevt			__kernel_initialize_tmevt
+#define _tmevt_up					__kernel_tmevt_up
+#define _tmevt_down					__kernel_tmevt_down
+#define _tmevtb_insert				__kernel_tmevtb_insert
+#define _tmevtb_delete				__kernel_tmevtb_delete
+#define _tmevt_lefttim				__kernel_tmevt_lefttim
+#define _signal_time				__kernel_signal_time
+
+/*
+ *  semaphore.c
+ */
+#define _initialize_semaphore		__kernel_initialize_semaphore
+
+/*
+ *  eventflag.c
+ */
+#define _initialize_eventflag		__kernel_initialize_eventflag
+#define _check_flg_cond				__kernel_check_flg_cond
+
+/*
+ *  dataqueue.c
+ */
+#define _initialize_dataqueue		__kernel_initialize_dataqueue
+#define _enqueue_data				__kernel_enqueue_data
+#define _force_enqueue_data			__kernel_force_enqueue_data
+#define _dequeue_data				__kernel_dequeue_data
+#define _send_data					__kernel_send_data
+#define _force_send_data			__kernel_force_send_data
+#define _receive_data				__kernel_receive_data
+
+/*
+ *  pridataq.c
+ */
+#define _initialize_pridataq		__kernel_initialize_pridataq
+#define _enqueue_pridata			__kernel_enqueue_pridata
+#define _dequeue_pridata			__kernel_dequeue_pridata
+#define _send_pridata				__kernel_send_pridata
+#define _receive_pridata			__kernel_receive_pridata
+
+/*
+ *  mailbox.c
+ */
+#define _initialize_mailbox			__kernel_initialize_mailbox
+
+/*
+ *  mempfix.c
+ */
+#define _initialize_mempfix			__kernel_initialize_mempfix
+#define _get_mpf_block				__kernel_get_mpf_block
+
+/*
+ *  cyclic.c
+ */
+#define _initialize_cyclic			__kernel_initialize_cyclic
+#define _call_cychdr				__kernel_call_cychdr
+
+/*
+ *  alarm.c
+ */
+#define _initialize_alarm			__kernel_initialize_alarm
+#define _call_almhdr				__kernel_call_almhdr
+
+/*
+ *  interrupt.c
+ */
+#define _initialize_interrupt		__kernel_initialize_interrupt
+
+/*
+ *  exception.c
+ */
+#define _initialize_exception		__kernel_initialize_exception
+
+/*
+ *  kernel_cfg.c
+ */
+#define _initialize_object			__kernel_initialize_object
+#define _call_inirtn				__kernel_call_inirtn
+#define _call_terrtn				__kernel_call_terrtn
+#define _tmax_tskid					__kernel_tmax_tskid
+#define _tinib_table				__kernel_tinib_table
+#define _torder_table				__kernel_torder_table
+#define _tcb_table					__kernel_tcb_table
+#define _tmax_semid					__kernel_tmax_semid
+#define _seminib_table				__kernel_seminib_table
+#define _semcb_table				__kernel_semcb_table
+#define _tmax_flgid					__kernel_tmax_flgid
+#define _flginib_table				__kernel_flginib_table
+#define _flgcb_table				__kernel_flgcb_table
+#define _tmax_dtqid					__kernel_tmax_dtqid
+#define _dtqcb_table				__kernel_dtqcb_table
+#define _dtqinib_table				__kernel_dtqinib_table
+#define _tmax_pdqid					__kernel_tmax_pdqid
+#define _pdqcb_table				__kernel_pdqcb_table
+#define _pdqinib_table				__kernel_pdqinib_table
+#define _tmax_mbxid					__kernel_tmax_mbxid
+#define _mbxcb_table				__kernel_mbxcb_table
+#define _mbxinib_table				__kernel_mbxinib_table
+#define _tmax_mpfid					__kernel_tmax_mpfid
+#define _mpfinib_table				__kernel_mpfinib_table
+#define _mpfcb_table				__kernel_mpfcb_table
+#define _tmax_cycid					__kernel_tmax_cycid
+#define _cycinib_table				__kernel_cycinib_table
+#define _cyccb_table				__kernel_cyccb_table
+#define _tmax_almid					__kernel_tmax_almid
+#define _alminib_table				__kernel_alminib_table
+#define _almcb_table				__kernel_almcb_table
+#define _tnum_inhno					__kernel_tnum_inhno
+#define _inhinib_table				__kernel_inhinib_table
+#define _tnum_intno					__kernel_tnum_intno
+#define _intinib_table				__kernel_intinib_table
+#define _tnum_excno					__kernel_tnum_excno
+#define _excinib_table				__kernel_excinib_table
+#define _tmevt_heap					__kernel_tmevt_heap
+#define _istksz						__kernel_istksz
+#define _istk						__kernel_istk
+#define _istkpt						__kernel_istkpt
+
+
+#endif /* TOPPERS_LABEL_ASM */
+
+#include "target_rename.h"
+
+#endif /* TOPPERS_KERNEL_RENAME_H */
Index: /asp_ewarm/asp-1.7.0/extension/rstr_task/kernel/kernel_unrename.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/rstr_task/kernel/kernel_unrename.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/rstr_task/kernel/kernel_unrename.h	(revision 61)
@@ -0,0 +1,347 @@
+/* This file is generated from kernel_rename.def by genrename. */
+
+/* This file is included only when kernel_rename.h has been included. */
+#ifdef TOPPERS_KERNEL_RENAME_H
+#undef TOPPERS_KERNEL_RENAME_H
+
+/*
+ *  startup.c
+ */
+#undef kerflg
+#undef exit_kernel
+
+/*
+ *  task.c
+ */
+#undef p_runtsk
+#undef p_schedtsk
+#undef reqflg
+#undef ipmflg
+#undef disdsp
+#undef dspflg
+#undef ready_queue
+#undef ready_primap
+#undef initialize_task
+#undef search_schedtsk
+#undef make_runnable
+#undef make_non_runnable
+#undef make_dormant
+#undef make_active
+#undef change_priority
+#undef raise_priority
+#undef rotate_ready_queue
+#undef call_texrtn
+#undef calltex
+
+/*
+ *  wait.c
+ */
+#undef make_wait_tmout
+#undef wait_complete
+#undef wait_tmout
+#undef wait_tmout_ok
+#undef wait_release
+#undef wobj_make_wait
+#undef wobj_make_wait_tmout
+#undef init_wait_queue
+
+/*
+ *  time_event.c
+ */
+#undef current_time
+#undef min_time
+#undef next_time
+#undef next_subtime
+#undef last_index
+#undef initialize_tmevt
+#undef tmevt_up
+#undef tmevt_down
+#undef tmevtb_insert
+#undef tmevtb_delete
+#undef tmevt_lefttim
+#undef signal_time
+
+/*
+ *  semaphore.c
+ */
+#undef initialize_semaphore
+
+/*
+ *  eventflag.c
+ */
+#undef initialize_eventflag
+#undef check_flg_cond
+
+/*
+ *  dataqueue.c
+ */
+#undef initialize_dataqueue
+#undef enqueue_data
+#undef force_enqueue_data
+#undef dequeue_data
+#undef send_data
+#undef force_send_data
+#undef receive_data
+
+/*
+ *  pridataq.c
+ */
+#undef initialize_pridataq
+#undef enqueue_pridata
+#undef dequeue_pridata
+#undef send_pridata
+#undef receive_pridata
+
+/*
+ *  mailbox.c
+ */
+#undef initialize_mailbox
+
+/*
+ *  mempfix.c
+ */
+#undef initialize_mempfix
+#undef get_mpf_block
+
+/*
+ *  cyclic.c
+ */
+#undef initialize_cyclic
+#undef call_cychdr
+
+/*
+ *  alarm.c
+ */
+#undef initialize_alarm
+#undef call_almhdr
+
+/*
+ *  interrupt.c
+ */
+#undef initialize_interrupt
+
+/*
+ *  exception.c
+ */
+#undef initialize_exception
+
+/*
+ *  kernel_cfg.c
+ */
+#undef initialize_object
+#undef call_inirtn
+#undef call_terrtn
+#undef tmax_tskid
+#undef tinib_table
+#undef torder_table
+#undef tcb_table
+#undef tmax_semid
+#undef seminib_table
+#undef semcb_table
+#undef tmax_flgid
+#undef flginib_table
+#undef flgcb_table
+#undef tmax_dtqid
+#undef dtqcb_table
+#undef dtqinib_table
+#undef tmax_pdqid
+#undef pdqcb_table
+#undef pdqinib_table
+#undef tmax_mbxid
+#undef mbxcb_table
+#undef mbxinib_table
+#undef tmax_mpfid
+#undef mpfinib_table
+#undef mpfcb_table
+#undef tmax_cycid
+#undef cycinib_table
+#undef cyccb_table
+#undef tmax_almid
+#undef alminib_table
+#undef almcb_table
+#undef tnum_inhno
+#undef inhinib_table
+#undef tnum_intno
+#undef intinib_table
+#undef tnum_excno
+#undef excinib_table
+#undef tmevt_heap
+#undef istksz
+#undef istk
+#undef istkpt
+
+
+#ifdef TOPPERS_LABEL_ASM
+
+/*
+ *  startup.c
+ */
+#undef _kerflg
+#undef _exit_kernel
+
+/*
+ *  task.c
+ */
+#undef _p_runtsk
+#undef _p_schedtsk
+#undef _reqflg
+#undef _ipmflg
+#undef _disdsp
+#undef _dspflg
+#undef _ready_queue
+#undef _ready_primap
+#undef _initialize_task
+#undef _search_schedtsk
+#undef _make_runnable
+#undef _make_non_runnable
+#undef _make_dormant
+#undef _make_active
+#undef _change_priority
+#undef _raise_priority
+#undef _rotate_ready_queue
+#undef _call_texrtn
+#undef _calltex
+
+/*
+ *  wait.c
+ */
+#undef _make_wait_tmout
+#undef _wait_complete
+#undef _wait_tmout
+#undef _wait_tmout_ok
+#undef _wait_release
+#undef _wobj_make_wait
+#undef _wobj_make_wait_tmout
+#undef _init_wait_queue
+
+/*
+ *  time_event.c
+ */
+#undef _current_time
+#undef _min_time
+#undef _next_time
+#undef _next_subtime
+#undef _last_index
+#undef _initialize_tmevt
+#undef _tmevt_up
+#undef _tmevt_down
+#undef _tmevtb_insert
+#undef _tmevtb_delete
+#undef _tmevt_lefttim
+#undef _signal_time
+
+/*
+ *  semaphore.c
+ */
+#undef _initialize_semaphore
+
+/*
+ *  eventflag.c
+ */
+#undef _initialize_eventflag
+#undef _check_flg_cond
+
+/*
+ *  dataqueue.c
+ */
+#undef _initialize_dataqueue
+#undef _enqueue_data
+#undef _force_enqueue_data
+#undef _dequeue_data
+#undef _send_data
+#undef _force_send_data
+#undef _receive_data
+
+/*
+ *  pridataq.c
+ */
+#undef _initialize_pridataq
+#undef _enqueue_pridata
+#undef _dequeue_pridata
+#undef _send_pridata
+#undef _receive_pridata
+
+/*
+ *  mailbox.c
+ */
+#undef _initialize_mailbox
+
+/*
+ *  mempfix.c
+ */
+#undef _initialize_mempfix
+#undef _get_mpf_block
+
+/*
+ *  cyclic.c
+ */
+#undef _initialize_cyclic
+#undef _call_cychdr
+
+/*
+ *  alarm.c
+ */
+#undef _initialize_alarm
+#undef _call_almhdr
+
+/*
+ *  interrupt.c
+ */
+#undef _initialize_interrupt
+
+/*
+ *  exception.c
+ */
+#undef _initialize_exception
+
+/*
+ *  kernel_cfg.c
+ */
+#undef _initialize_object
+#undef _call_inirtn
+#undef _call_terrtn
+#undef _tmax_tskid
+#undef _tinib_table
+#undef _torder_table
+#undef _tcb_table
+#undef _tmax_semid
+#undef _seminib_table
+#undef _semcb_table
+#undef _tmax_flgid
+#undef _flginib_table
+#undef _flgcb_table
+#undef _tmax_dtqid
+#undef _dtqcb_table
+#undef _dtqinib_table
+#undef _tmax_pdqid
+#undef _pdqcb_table
+#undef _pdqinib_table
+#undef _tmax_mbxid
+#undef _mbxcb_table
+#undef _mbxinib_table
+#undef _tmax_mpfid
+#undef _mpfinib_table
+#undef _mpfcb_table
+#undef _tmax_cycid
+#undef _cycinib_table
+#undef _cyccb_table
+#undef _tmax_almid
+#undef _alminib_table
+#undef _almcb_table
+#undef _tnum_inhno
+#undef _inhinib_table
+#undef _tnum_intno
+#undef _intinib_table
+#undef _tnum_excno
+#undef _excinib_table
+#undef _tmevt_heap
+#undef _istksz
+#undef _istk
+#undef _istkpt
+
+
+#endif /* TOPPERS_LABEL_ASM */
+
+#include "target_unrename.h"
+
+#endif /* TOPPERS_KERNEL_RENAME_H */
Index: /asp_ewarm/asp-1.7.0/extension/rstr_task/kernel/sys_manage.c
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/rstr_task/kernel/sys_manage.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/rstr_task/kernel/sys_manage.c	(revision 61)
@@ -0,0 +1,559 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  $Id: sys_manage.c 2018 2010-12-31 13:43:05Z ertl-hiro $
+ */
+
+/*
+ *		VXeóÔÇ@\
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_ROT_RDQ_ENTER
+#define LOG_ROT_RDQ_ENTER(tskpri)
+#endif /* LOG_ROT_RDQ_ENTER */
+
+#ifndef LOG_ROT_RDQ_LEAVE
+#define LOG_ROT_RDQ_LEAVE(ercd)
+#endif /* LOG_ROT_RDQ_LEAVE */
+
+#ifndef LOG_IROT_RDQ_ENTER
+#define LOG_IROT_RDQ_ENTER(tskpri)
+#endif /* LOG_IROT_RDQ_ENTER */
+
+#ifndef LOG_IROT_RDQ_LEAVE
+#define LOG_IROT_RDQ_LEAVE(ercd)
+#endif /* LOG_IROT_RDQ_LEAVE */
+
+#ifndef LOG_GET_TID_ENTER
+#define LOG_GET_TID_ENTER(p_tskid)
+#endif /* LOG_GET_TID_ENTER */
+
+#ifndef LOG_GET_TID_LEAVE
+#define LOG_GET_TID_LEAVE(ercd, tskid)
+#endif /* LOG_GET_TID_LEAVE */
+
+#ifndef LOG_IGET_TID_ENTER
+#define LOG_IGET_TID_ENTER(p_tskid)
+#endif /* LOG_IGET_TID_ENTER */
+
+#ifndef LOG_IGET_TID_LEAVE
+#define LOG_IGET_TID_LEAVE(ercd, tskid)
+#endif /* LOG_IGET_TID_LEAVE */
+
+#ifndef LOG_LOC_CPU_ENTER
+#define LOG_LOC_CPU_ENTER()
+#endif /* LOG_LOC_CPU_ENTER */
+
+#ifndef LOG_LOC_CPU_LEAVE
+#define LOG_LOC_CPU_LEAVE(ercd)
+#endif /* LOG_LOC_CPU_LEAVE */
+
+#ifndef LOG_ILOC_CPU_ENTER
+#define LOG_ILOC_CPU_ENTER()
+#endif /* LOG_ILOC_CPU_ENTER */
+
+#ifndef LOG_ILOC_CPU_LEAVE
+#define LOG_ILOC_CPU_LEAVE(ercd)
+#endif /* LOG_ILOC_CPU_LEAVE */
+
+#ifndef LOG_UNL_CPU_ENTER
+#define LOG_UNL_CPU_ENTER()
+#endif /* LOG_UNL_CPU_ENTER */
+
+#ifndef LOG_UNL_CPU_LEAVE
+#define LOG_UNL_CPU_LEAVE(ercd)
+#endif /* LOG_UNL_CPU_LEAVE */
+
+#ifndef LOG_IUNL_CPU_ENTER
+#define LOG_IUNL_CPU_ENTER()
+#endif /* LOG_IUNL_CPU_ENTER */
+
+#ifndef LOG_IUNL_CPU_LEAVE
+#define LOG_IUNL_CPU_LEAVE(ercd)
+#endif /* LOG_IUNL_CPU_LEAVE */
+
+#ifndef LOG_DIS_DSP_ENTER
+#define LOG_DIS_DSP_ENTER()
+#endif /* LOG_DIS_DSP_ENTER */
+
+#ifndef LOG_DIS_DSP_LEAVE
+#define LOG_DIS_DSP_LEAVE(ercd)
+#endif /* LOG_DIS_DSP_LEAVE */
+
+#ifndef LOG_ENA_DSP_ENTER
+#define LOG_ENA_DSP_ENTER()
+#endif /* LOG_ENA_DSP_ENTER */
+
+#ifndef LOG_ENA_DSP_LEAVE
+#define LOG_ENA_DSP_LEAVE(ercd)
+#endif /* LOG_ENA_DSP_LEAVE */
+
+#ifndef LOG_SNS_CTX_ENTER
+#define LOG_SNS_CTX_ENTER()
+#endif /* LOG_SNS_CTX_ENTER */
+
+#ifndef LOG_SNS_CTX_LEAVE
+#define LOG_SNS_CTX_LEAVE(state)
+#endif /* LOG_SNS_CTX_LEAVE */
+
+#ifndef LOG_SNS_LOC_ENTER
+#define LOG_SNS_LOC_ENTER()
+#endif /* LOG_SNS_LOC_ENTER */
+
+#ifndef LOG_SNS_LOC_LEAVE
+#define LOG_SNS_LOC_LEAVE(state)
+#endif /* LOG_SNS_LOC_LEAVE */
+
+#ifndef LOG_SNS_DSP_ENTER
+#define LOG_SNS_DSP_ENTER()
+#endif /* LOG_SNS_DSP_ENTER */
+
+#ifndef LOG_SNS_DSP_LEAVE
+#define LOG_SNS_DSP_LEAVE(state)
+#endif /* LOG_SNS_DSP_LEAVE */
+
+#ifndef LOG_SNS_DPN_ENTER
+#define LOG_SNS_DPN_ENTER()
+#endif /* LOG_SNS_DPN_ENTER */
+
+#ifndef LOG_SNS_DPN_LEAVE
+#define LOG_SNS_DPN_LEAVE(state)
+#endif /* LOG_SNS_DPN_LEAVE */
+
+#ifndef LOG_SNS_KER_ENTER
+#define LOG_SNS_KER_ENTER()
+#endif /* LOG_SNS_KER_ENTER */
+
+#ifndef LOG_SNS_KER_LEAVE
+#define LOG_SNS_KER_LEAVE(state)
+#endif /* LOG_SNS_KER_LEAVE */
+
+/*
+ *  ^XNÌDæÊÌñ]
+ */
+#ifdef TOPPERS_rot_rdq
+
+ER
+rot_rdq(PRI tskpri)
+{
+	uint_t	pri;
+	QUEUE	*p_queue;
+	ER		ercd;
+
+	LOG_ROT_RDQ_ENTER(tskpri);
+	CHECK_TSKCTX_UNL();
+	CHECK_TPRI_SELF(tskpri);
+
+	t_lock_cpu();
+	pri = (tskpri == TPRI_SELF) ? p_runtsk->priority : INT_PRIORITY(tskpri);
+	p_queue = &(ready_queue[pri]);
+	if (queue_empty(p_queue)) {
+		ercd = E_OK;
+	}
+	else if ((((TCB *)(p_queue->p_next))->p_tinib->tskatr & TA_RSTR) != 0U) {
+		ercd = E_NOSPT;
+	}
+	else {
+		if (rotate_ready_queue(p_queue)) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_ROT_RDQ_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_rot_rdq */
+
+/*
+ *  ^XNÌDæÊÌñ]iñ^XNReLXgpj
+ */
+#ifdef TOPPERS_irot_rdq
+
+ER
+irot_rdq(PRI tskpri)
+{
+	QUEUE	*p_queue;
+	ER		ercd;
+
+	LOG_IROT_RDQ_ENTER(tskpri);
+	CHECK_INTCTX_UNL();
+	CHECK_TPRI(tskpri);
+
+	i_lock_cpu();
+	p_queue = &(ready_queue[INT_PRIORITY(tskpri)]);
+	if (queue_empty(p_queue)) {
+		ercd = E_OK;
+	}
+	else if ((((TCB *)(p_queue->p_next))->p_tinib->tskatr & TA_RSTR) != 0U) {
+		ercd = E_NOSPT;
+	}
+	else {
+		if (rotate_ready_queue(p_queue)) {
+			reqflg = true;
+		}
+		ercd = E_OK;
+	}
+	i_unlock_cpu();
+
+  error_exit:
+	LOG_IROT_RDQ_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_irot_rdq */
+
+/*
+ *  ÀsóÔÌ^XNIDÌQÆ
+ */
+#ifdef TOPPERS_get_tid
+
+ER
+get_tid(ID *p_tskid)
+{
+	ER		ercd;
+
+	LOG_GET_TID_ENTER(p_tskid);
+	CHECK_TSKCTX_UNL();
+
+	t_lock_cpu();
+	*p_tskid = TSKID(p_runtsk);
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_GET_TID_LEAVE(ercd, *p_tskid);
+	return(ercd);
+}
+
+#endif /* TOPPERS_get_tid */
+
+/*
+ *  ÀsóÔÌ^XNIDÌQÆiñ^XNReLXgpj
+ */
+#ifdef TOPPERS_iget_tid
+
+ER
+iget_tid(ID *p_tskid)
+{
+	ER		ercd;
+
+	LOG_IGET_TID_ENTER(p_tskid);
+	CHECK_INTCTX_UNL();
+
+	i_lock_cpu();
+	*p_tskid = (p_runtsk == NULL) ? TSK_NONE : TSKID(p_runtsk);
+	ercd = E_OK;
+	i_unlock_cpu();
+
+  error_exit:
+	LOG_IGET_TID_LEAVE(ercd, *p_tskid);
+	return(ercd);
+}
+
+#endif /* TOPPERS_iget_tid */
+
+/*
+ *  CPUbNóÔÖÌÚs
+ */
+#ifdef TOPPERS_loc_cpu
+
+ER
+loc_cpu(void)
+{
+	ER		ercd;
+
+	LOG_LOC_CPU_ENTER();
+	CHECK_TSKCTX();
+
+	if (!t_sense_lock()) {
+		t_lock_cpu();
+	}
+	ercd = E_OK;
+
+  error_exit:
+	LOG_LOC_CPU_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_loc_cpu */
+
+/*
+ *  CPUbNóÔÖÌÚsiñ^XNReLXgpj
+ */
+#ifdef TOPPERS_iloc_cpu
+
+ER
+iloc_cpu(void)
+{
+	ER		ercd;
+
+	LOG_ILOC_CPU_ENTER();
+	CHECK_INTCTX();
+
+	if (!i_sense_lock()) {
+		i_lock_cpu();
+	}
+	ercd = E_OK;
+
+  error_exit:
+	LOG_ILOC_CPU_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_iloc_cpu */
+
+/*
+ *  CPUbNóÔÌð
+ *
+ *  CPUbNÍCfBXpb`ªKvÆÈéT[rXR[ðÄÑo·±
+ *  ÆÍÅ«È¢½ßCCPUbNóÔÌðÉfBXpb`ðN®·é
+ *  KvÍÈ¢D
+ */
+#ifdef TOPPERS_unl_cpu
+
+ER
+unl_cpu(void)
+{
+	ER		ercd;
+
+	LOG_UNL_CPU_ENTER();
+	CHECK_TSKCTX();
+
+	if (t_sense_lock()) {
+		t_unlock_cpu();
+	}
+	ercd = E_OK;
+
+  error_exit:
+	LOG_UNL_CPU_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_unl_cpu */
+
+/*
+ *  CPUbNóÔÌðiñ^XNReLXgpj
+ *
+ *  CPUbNÍCfBXpb`ªKvÆÈéT[rXR[ðÄÑo·±
+ *  ÆÍÅ«È¢½ßCCPUbNóÔÌðÉfBXpb`ÌN®ðv
+ *  ·éKvÍÈ¢D
+ */
+#ifdef TOPPERS_iunl_cpu
+
+ER
+iunl_cpu(void)
+{
+	ER		ercd;
+
+	LOG_IUNL_CPU_ENTER();
+	CHECK_INTCTX();
+
+	if (i_sense_lock()) {
+		i_unlock_cpu();
+	}
+	ercd = E_OK;
+
+  error_exit:
+	LOG_IUNL_CPU_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_iunl_cpu */
+
+/*
+ *  fBXpb`ÌÖ~
+ */
+#ifdef TOPPERS_dis_dsp
+
+ER
+dis_dsp(void)
+{
+	ER		ercd;
+
+	LOG_DIS_DSP_ENTER();
+	CHECK_TSKCTX_UNL();
+
+	t_lock_cpu();
+	disdsp = true;
+	dspflg = false;
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_DIS_DSP_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_dis_dsp */
+
+/*
+ *  fBXpb`ÌÂ
+ */
+#ifdef TOPPERS_ena_dsp
+
+ER
+ena_dsp(void)
+{
+	ER		ercd;
+
+	LOG_ENA_DSP_ENTER();
+	CHECK_TSKCTX_UNL();
+
+	t_lock_cpu();
+	disdsp = false;
+	if (ipmflg) {
+		dspflg = true;
+		if (p_runtsk != p_schedtsk) {
+			dispatch();
+		}
+	}
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_ENA_DSP_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ena_dsp */
+
+/*
+ *  ReLXgÌQÆ
+ */
+#ifdef TOPPERS_sns_ctx
+
+bool_t
+sns_ctx(void)
+{
+	bool_t	state;
+
+	LOG_SNS_CTX_ENTER();
+	state = sense_context() ? true : false;
+	LOG_SNS_CTX_LEAVE(state);
+	return(state);
+}
+
+#endif /* TOPPERS_sns_ctx */
+
+/*
+ *  CPUbNóÔÌQÆ
+ */
+#ifdef TOPPERS_sns_loc
+
+bool_t
+sns_loc(void)
+{
+	bool_t	state;
+
+	LOG_SNS_LOC_ENTER();
+	state = x_sense_lock() ? true : false;
+	LOG_SNS_LOC_LEAVE(state);
+	return(state);
+}
+
+#endif /* TOPPERS_sns_loc */
+
+/*
+ *  fBXpb`Ö~óÔÌQÆ
+ */
+#ifdef TOPPERS_sns_dsp
+
+bool_t
+sns_dsp(void)
+{
+	bool_t	state;
+
+	LOG_SNS_DSP_ENTER();
+	state = disdsp;
+	LOG_SNS_DSP_LEAVE(state);
+	return(state);
+}
+
+#endif /* TOPPERS_sns_dsp */
+
+/*
+ *  fBXpb`Û¯óÔÌQÆ
+ */
+#ifdef TOPPERS_sns_dpn
+
+bool_t
+sns_dpn(void)
+{
+	bool_t	state;
+
+	LOG_SNS_DPN_ENTER();
+	state = (sense_context() || t_sense_lock() || !dspflg) ? true : false;
+	LOG_SNS_DPN_LEAVE(state);
+	return(state);
+}
+
+#endif /* TOPPERS_sns_dpn */
+
+/*
+ *  J[lñ®ìóÔÌQÆ
+ */
+#ifdef TOPPERS_sns_ker
+
+bool_t
+sns_ker(void)
+{
+	bool_t	state;
+
+	LOG_SNS_KER_ENTER();
+	state = kerflg ? false : true;
+	LOG_SNS_KER_LEAVE(state);
+	return(state);
+}
+
+#endif /* TOPPERS_sns_ker */
Index: /asp_ewarm/asp-1.7.0/extension/rstr_task/kernel/task.c
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/rstr_task/kernel/task.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/rstr_task/kernel/task.c	(revision 61)
@@ -0,0 +1,534 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  $Id: task.c 2018 2010-12-31 13:43:05Z ertl-hiro $
+ */
+
+/*
+ *		^XNÇW
+[
+ */
+
+#include "kernel_impl.h"
+#include "wait.h"
+#include "task.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_TEX_ENTER
+#define LOG_TEX_ENTER(p_tcb, texptn)
+#endif /* LOG_TEX_ENTER */
+
+#ifndef LOG_TEX_LEAVE
+#define LOG_TEX_LEAVE(p_tcb)
+#endif /* LOG_TEX_LEAVE */
+
+#ifdef TOPPERS_tskini
+
+/*
+ *  ÀsóÔÌ^XN
+ */
+TCB		*p_runtsk;
+
+/*
+ *  ÅDæÊÌ^XN
+ */
+TCB		*p_schedtsk;
+
+/*
+ *  ^XNfBXpb`^^XNáO[`N®vtO
+ */
+bool_t	reqflg;
+
+/*
+ *  ÝDæx}XNSðóÔ
+ */
+bool_t	ipmflg;
+
+/*
+ *  fBXpb`Ö~óÔ
+ */
+bool_t	disdsp;
+
+/*
+ *  ^XNfBXpb`Â\óÔ
+ */
+bool_t	dspflg;
+
+/*
+ *  fBL
+[
+ */
+QUEUE	ready_queue[TNUM_TPRI];
+
+/*
+ *  fBL
+[T[`Ì½ßÌrbg}bv
+ */
+uint16_t	ready_primap;
+
+/*
+ *  ^XNÇW
+[Ìú»
+ */
+void
+initialize_task(void)
+{
+	uint_t	i, j;
+	TCB		*p_tcb;
+
+	p_runtsk = p_schedtsk = NULL;
+	reqflg = false;
+	ipmflg = true;
+	disdsp = false;
+	dspflg = true;
+
+	for (i = 0; i < TNUM_TPRI; i++) {
+		queue_initialize(&(ready_queue[i]));
+	}
+	ready_primap = 0U;
+
+	for (i = 0; i < tnum_tsk; i++) {
+		j = INDEX_TSK(torder_table[i]);
+		p_tcb = &(tcb_table[j]);
+		p_tcb->p_tinib = &(tinib_table[j]);
+		p_tcb->actque = false;
+		make_dormant(p_tcb);
+		if ((p_tcb->p_tinib->tskatr & TA_ACT) != 0U) {
+			make_active(p_tcb);
+		}
+	}
+}
+
+#endif /* TOPPERS_tskini */
+
+/*
+ *  rbg}bvT[`Ö
+ *
+ *  bitmapàÌ1ÌrbgÌàCÅàºÊiEjÌàÌðT[`µC»Ìrb
+ *  gÔðÔ·DrbgÔÍCÅºÊrbgð0Æ·éDbitmapÉ0ðwè
+ *  µÄÍÈçÈ¢D±ÌÖÅÍCbitmapª16rbgÅ é±Æð¼èµC
+ *  uint16_t^ÆµÄ¢éD
+ *
+ *  rbgT[`½ßðÂvZbTÅÍCrbgT[`½ßðg¤æ¤É
+ *  «¼µ½ûªø¦ªÇ¢êª éD±Ìæ¤ÈêÉÍC^[Qbg
+ *  Ë¶ÅrbgT[`½ßðgÁ½bitmap_searchðè`µC
+ *  OMIT_BITMAP_SEARCHð}Nè`·êÎæ¢DÜ½CrbgT[`½ßÌ
+ *  T[`ûüªtÈÇÌRÅDæxÆrbgÆÌÎðÏXµ½¢êÉ
+ *  ÍCPRIMAP_BITð}Nè`·êÎæ¢D
+ *
+ *  Ü½CCuÉffsª éÈçCÌæ¤Éè`µÄCuÖð
+ *  gÁ½ûªø¦ªÇ¢Â\«à éD
+ *		#define	bitmap_search(bitmap) (ffs(bitmap) - 1)
+ */
+#ifndef PRIMAP_BIT
+#define	PRIMAP_BIT(pri)		(1U << (pri))
+#endif /* PRIMAP_BIT */
+
+#ifndef OMIT_BITMAP_SEARCH
+
+static const unsigned char bitmap_search_table[] = { 0, 1, 0, 2, 0, 1, 0,
+												3, 0, 1, 0, 2, 0, 1, 0 };
+
+Inline uint_t
+bitmap_search(uint16_t bitmap)
+{
+	uint_t	n = 0U;
+
+	assert(bitmap != 0U);
+	if ((bitmap & 0x00ffU) == 0U) {
+		bitmap >>= 8;
+		n += 8;
+	}
+	if ((bitmap & 0x0fU) == 0U) {
+		bitmap >>= 4;
+		n += 4;
+	}
+	return(n + bitmap_search_table[(bitmap & 0x0fU) - 1]);
+}
+
+#endif /* OMIT_BITMAP_SEARCH */
+
+/*
+ *  Dæxrbg}bvªó©Ì`FbN
+ */
+Inline bool_t
+primap_empty(void)
+{
+	return(ready_primap == 0U);
+}
+
+/*
+ *  Dæxrbg}bvÌT[`
+ */
+Inline uint_t
+primap_search(void)
+{
+	return(bitmap_search(ready_primap));
+}
+
+/*
+ *  Dæxrbg}bvÌZbg
+ */
+Inline void
+primap_set(uint_t pri)
+{
+	ready_primap |= PRIMAP_BIT(pri);
+}
+
+/*
+ *  Dæxrbg}bvÌNA
+ */
+Inline void
+primap_clear(uint_t pri)
+{
+	ready_primap &= ~PRIMAP_BIT(pri);
+}
+
+/*
+ *  ÅDæÊ^XNÌT[`
+ */
+#ifdef TOPPERS_tsksched
+
+TCB *
+search_schedtsk(void)
+{
+	uint_t	schedpri;
+
+	schedpri = primap_search();
+	return((TCB *)(ready_queue[schedpri].p_next));
+}
+
+#endif /* TOPPERS_tsksched */
+
+/*
+ *  ÀsÅ«éóÔÖÌJÚ
+ *
+ *  ÅDæÊÌ^XNðXV·éÌÍCÀsÅ«é^XNªÈ©Á½ê
+ *  ÆCp_tcbÌDæxªÅDæÊÌ^XNÌDæxæèà¢êÅ 
+ *  éD
+ */
+#ifdef TOPPERS_tskrun
+
+bool_t
+make_runnable(TCB *p_tcb)
+{
+	uint_t	pri = p_tcb->priority;
+
+	queue_insert_prev(&(ready_queue[pri]), &(p_tcb->task_queue));
+	primap_set(pri);
+
+	if (p_schedtsk == (TCB *) NULL || pri < p_schedtsk->priority) {
+		p_schedtsk = p_tcb;
+		return(dspflg);
+	}
+	return(false);
+}
+
+#endif /* TOPPERS_tskrun */
+
+/*
+ *  ÀsÅ«éóÔ©ç¼ÌóÔÖÌJÚ
+ *
+ *  ÅDæÊÌ^XNðXV·éÌÍCp_tcbªÅDæÊÌ^XNÅ
+ *   Á½êÅ éDp_tcbÆ¯¶DæxÌ^XNª¼É éêÍCp_tcb
+ *  ÌÌ^XNªÅDæÊÉÈéD»¤ÅÈ¢êÍCfBL
+[ð
+ *  T[`·éKvª éD
+ */
+#ifdef TOPPERS_tsknrun
+
+bool_t
+make_non_runnable(TCB *p_tcb)
+{
+	uint_t	pri = p_tcb->priority;
+	QUEUE	*p_queue = &(ready_queue[pri]);
+
+	queue_delete(&(p_tcb->task_queue));
+	if (queue_empty(p_queue)) {
+		primap_clear(pri);
+		if (p_schedtsk == p_tcb) {
+			p_schedtsk = primap_empty() ? (TCB *) NULL : search_schedtsk();
+			return(dspflg);
+		}
+	}
+	else {
+		if (p_schedtsk == p_tcb) {
+			p_schedtsk = (TCB *)(p_queue->p_next);
+			return(dspflg);
+		}
+	}
+	return(false);
+}
+
+#endif /* TOPPERS_tsknrun */
+
+/*
+ *  x~óÔÖÌJÚ
+ */
+#ifdef TOPPERS_tskdmt
+
+void
+make_dormant(TCB *p_tcb)
+{
+	p_tcb->tstat = TS_DORMANT;
+	p_tcb->priority = p_tcb->p_tinib->ipriority;
+	p_tcb->wupque = false;
+	p_tcb->enatex = false;
+	p_tcb->texptn = 0U;
+	LOG_TSKSTAT(p_tcb);
+}
+
+#endif /* TOPPERS_tskdmt */
+
+/*
+ *  x~óÔ©çÀsÅ«éóÔÖÌJÚ
+ */
+#ifdef TOPPERS_tskact
+
+bool_t
+make_active(TCB *p_tcb)
+{
+	activate_context(p_tcb);
+	p_tcb->tstat = TS_RUNNABLE;
+	LOG_TSKSTAT(p_tcb);
+	return(make_runnable(p_tcb));
+}
+
+#endif /* TOPPERS_tskact */
+
+/*
+ *  ^XNÌDæxÌÏX
+ *
+ *  ^XNªÀsÅ«éóÔÌêÉÍCfBL
+[ÌÅÌÊuðÏX·
+ *  éDIuWFNgÌÒ¿L
+[ÌÅÒ¿óÔÉÈÁÄ¢éêÉÍCÒ
+ *  ¿L
+[ÌÅÌÊuðÏX·éD
+ *
+ *  ÅDæÊÌ^XNðXV·éÌÍC(1) p_tcbªÅDæÊÌ^X
+ *  NÅ ÁÄC»ÌDæxðº°½êC(2) p_tcbªÅDæÊÌ^X
+ *  NÅÍÈ­CÏXãÌDæxªÅDæÊÌ^XNÌDæxæèà¢
+ *  êÅ éD(1)ÌêÉÍCfBL
+[ðT[`·éKvª éD
+ */
+#ifdef TOPPERS_tskpri
+
+bool_t
+change_priority(TCB *p_tcb, uint_t newpri)
+{
+	uint_t	oldpri;
+
+	oldpri = p_tcb->priority;
+	p_tcb->priority = newpri;
+
+	if (TSTAT_RUNNABLE(p_tcb->tstat)) {
+		/*
+		 *  ^XNªÀsÅ«éóÔÌê
+		 */
+		queue_delete(&(p_tcb->task_queue));
+		if (queue_empty(&(ready_queue[oldpri]))) {
+			primap_clear(oldpri);
+		}
+		queue_insert_prev(&(ready_queue[newpri]), &(p_tcb->task_queue));
+		primap_set(newpri);
+
+		if (p_schedtsk == p_tcb) {
+			if (newpri >= oldpri) {
+				p_schedtsk = search_schedtsk();
+				return(p_schedtsk != p_tcb && dspflg);
+			}
+		}
+		else {
+			if (newpri < p_schedtsk->priority) {
+				p_schedtsk = p_tcb;
+				return(dspflg);
+			}
+		}
+	}
+	else {
+		if (TSTAT_WAIT_WOBJCB(p_tcb->tstat)) {
+			/*
+			 *  ^XNªC¯úEÊMIuWFNgÌÇubNÌ¤Ê
+			 *  ªiWOBJCBjÌÒ¿L
+[ÉÂÈªêÄ¢éê
+			 */
+			wobj_change_priority(((WINFO_WOBJ *)(p_tcb->p_winfo))->p_wobjcb,
+																	p_tcb);
+		}
+	}
+	return(false);
+}
+
+#endif /* TOPPERS_tskpri */
+
+/*
+ *  ©^XNÌDæxÌø«ã°
+ */
+#ifdef TOPPERS_tskrpri
+
+bool_t
+raise_priority(uint_t newpri)
+{
+	uint_t	oldpri;
+
+	oldpri = p_runtsk->priority;
+	p_runtsk->priority = newpri;
+
+	queue_delete(&(p_runtsk->task_queue));
+	if (queue_empty(&(ready_queue[oldpri]))) {
+		primap_clear(oldpri);
+	}
+	queue_insert_next(&(ready_queue[newpri]), &(p_runtsk->task_queue));
+	primap_set(newpri);
+
+	if (p_schedtsk == p_runtsk) {
+		if (newpri > oldpri) {
+			p_schedtsk = search_schedtsk();
+			return(p_schedtsk != p_runtsk && dspflg);
+		}
+	}
+	else {
+		assert(!dspflg);
+		if (newpri <= p_schedtsk->priority) {
+			p_schedtsk = p_runtsk;
+		}
+	}
+	return(false);
+}
+
+#endif /* TOPPERS_tskrpri */
+
+/*
+ *  fBL
+[Ìñ]
+ *
+ *  ÅDæÊÌ^XNðXV·éÌÍCÅDæÊÌ^XNª^XNL
+ *  
+[ÌöÉÚ®µ½êÅ éD
+ */
+#ifdef TOPPERS_tskrot
+
+bool_t
+rotate_ready_queue(QUEUE *p_queue)
+{
+	QUEUE	*p_entry;
+
+	if (p_queue->p_next->p_next != p_queue) {
+		p_entry = queue_delete_next(p_queue);
+		queue_insert_prev(p_queue, p_entry);
+		if (p_schedtsk == (TCB *) p_entry) {
+			p_schedtsk = (TCB *)(p_queue->p_next);
+			return(dspflg);
+		}
+	}
+	return(false);
+}
+
+#endif /* TOPPERS_tskrot */
+
+/*
+ *  ^XNáO[`ÌÄoµ
+ *
+ *  ASPJ[lÅÍC^XNáO[`àÅCPUbNóÔÉJÚµC
+ *  ³ÌóÔÉß³¸É^[µ½êCJ[lª³ÌóÔÉß·D
+ */
+#ifdef TOPPERS_tsktex
+
+void
+call_texrtn(void)
+{
+	TEXPTN	texptn;
+	bool_t	saved_disdsp;
+
+	saved_disdsp = disdsp;
+	p_runtsk->enatex = false;
+	do {
+		texptn = p_runtsk->texptn;
+		p_runtsk->texptn = 0U;
+
+		t_unlock_cpu();
+		LOG_TEX_ENTER(p_runtsk, texptn);
+		(*((TEXRTN)(p_runtsk->p_tinib->texrtn)))(texptn,
+												p_runtsk->p_tinib->exinf);
+		LOG_TEX_LEAVE(p_runtsk);
+		if (!t_sense_lock()) {
+			t_lock_cpu();
+		}
+		if (!ipmflg) {
+			t_set_ipm(TIPM_ENAALL);
+			ipmflg = true;
+		}
+		disdsp = saved_disdsp;
+		dspflg = !disdsp;
+		p_runtsk->enatex = false;
+		if (p_runtsk != p_schedtsk && dspflg) {
+			/*
+			 *  ±±ÅdispatchðÄÑo·ÍCÝÄAÄoµÉÈÁÄ
+			 *  ¢éªCdispatchðÄÔOÉp_runtsk->enatexðfalseÉµÄ
+			 *  ¨¯ÎxáªÈ¢D»ÌRÉÂ¢ÄÍCuTOPPERS/ASP J[
+			 *  l ÝvvðQÆÌ±ÆD
+			 */
+			dispatch();
+		}
+	} while (p_runtsk->texptn != 0U);
+	p_runtsk->enatex = true;
+}
+
+/*
+ *  ^XNáO[`ÌN®
+ */
+#ifndef OMIT_CALLTEX
+
+void
+calltex(void)
+{
+	if (p_runtsk->enatex && p_runtsk->texptn != 0U && ipmflg) {
+		call_texrtn();
+	}
+}
+
+#endif /* OMIT_CALLTEX */
+#endif /* TOPPERS_tsktex */
Index: /asp_ewarm/asp-1.7.0/extension/rstr_task/kernel/task.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/rstr_task/kernel/task.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/rstr_task/kernel/task.h	(revision 61)
@@ -0,0 +1,529 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  $Id: task.h 2018 2010-12-31 13:43:05Z ertl-hiro $
+ */
+
+/*
+ *		^XNÇW
+[
+ */
+
+#ifndef TOPPERS_TASK_H
+#define TOPPERS_TASK_H
+
+#include <queue.h>
+#include "time_event.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_TSKSTAT
+#define LOG_TSKSTAT(p_tcb)
+#endif /* LOG_TSKSTAT */
+
+/*
+ *  ^XNDæxÌà\»EO\»Ï·}N
+ */
+#define INT_PRIORITY(x)		((uint_t)((x) - TMIN_TPRI))
+#define EXT_TSKPRI(x)		((PRI)(x) + TMIN_TPRI)
+
+/*
+ *  ^XNóÔÌà\»
+ *
+ *  TCBÌ^XNóÔÅÍCÀsóÔiRUNNINGjÆÀsÂ\óÔiREADYj
+ *  ÍæÊµÈ¢D¼óÔðÌµÄCÀsÅ«éóÔiRUNNABLEjÆÄÔD
+ *  ñdÒ¿óÔÍC(TS_WAITING | TS_SUSPENDED)Å\·DTS_WAIT_???ÍÒ
+ *  ¿vöð\µCÒ¿óÔiñdÒ¿óÔðÜÞjÌêÉÌÝÝè·éD
+ */
+#define TS_DORMANT		0x00U			/* x~óÔ */
+#define TS_RUNNABLE		0x01U			/* ÀsÅ«éóÔ */
+#define TS_WAITING		0x02U			/* Ò¿óÔ */
+#define TS_SUSPENDED	0x04U			/* ­§Ò¿óÔ */
+
+#define TS_WAIT_DLY		(0x00U << 3)	/* ÔoßÒ¿ */
+#define TS_WAIT_SLP		(0x01U << 3)	/* N°Ò¿ */
+#define TS_WAIT_RDTQ	(0x02U << 3)	/* f[^L
+[©çÌóMÒ¿ */
+#define TS_WAIT_RPDQ	(0x03U << 3)	/* Dæxf[^L
+[©çÌóMÒ¿ */
+#define TS_WAIT_SEM		(0x04U << 3)	/* Z}tH¹Ìl¾Ò¿ */
+#define TS_WAIT_FLG		(0x05U << 3)	/* CxgtOÒ¿ */
+#define TS_WAIT_SDTQ	(0x06U << 3)	/* f[^L
+[ÖÌMÒ¿ */
+#define TS_WAIT_SPDQ	(0x07U << 3)	/* Dæxf[^L
+[ÖÌMÒ¿ */
+#define TS_WAIT_MBX		(0x08U << 3)	/* [{bNX©çÌóMÒ¿ */
+#define TS_WAIT_MPF		(0x09U << 3)	/* Åè·ubNÌl¾Ò¿ */
+
+/*
+ *  ^XNóÔ»Ê}N
+ *
+ *  TSTAT_DORMANTÍ^XNªx~óÔÅ é©Ç¤©ðCTSTAT_RUNNABLEÍ
+ *  ^XNªÀsÅ«éóÔÅ é©Ç¤©ð»Ê·éDTSTAT_WAITINGÍÒ
+ *  ¿óÔÆñdÒ¿óÔÌ¢¸ê©Å é©Ç¤©ðCTSTAT_SUSPENDEDÍ
+ *  ­§Ò¿óÔÆñdÒ¿óÔÌ¢¸ê©Å é©Ç¤©ð»Ê·éD
+ */
+#define TSTAT_DORMANT(tstat)	((tstat) == TS_DORMANT)
+#define TSTAT_RUNNABLE(tstat)	(((tstat) & TS_RUNNABLE) != 0U)
+#define TSTAT_WAITING(tstat)	(((tstat) & TS_WAITING) != 0U)
+#define TSTAT_SUSPENDED(tstat)	(((tstat) & TS_SUSPENDED) != 0U)
+
+/*
+ *  ^XNÒ¿vö»Ê}N
+ *
+ *  TSTAT_WAIT_SLPÍ^XNªN°Ò¿Å é©Ç¤©ðCTSTAT_WAIT_WOBJ
+ *  Í^XNª¯úEÊMIuWFNgÉÎ·éÒ¿Å é©i¾¢·¦éÆC
+ *  ¯úÊMIuWFNgÌÒ¿L
+[ÉÂÈªêÄ¢é©jÇ¤©ð»Ê·
+ *  éDÜ½CTSTAT_WAIT_WOBJCBÍ^XNª¯úEÊMIuWFNgÌÇ
+ *  ubNÌ¤ÊªiWOBJCBjÌÒ¿L
+[ÉÂÈªêÄ¢é©Ç¤©ð
+ *  »Ê·éD
+ *
+ *  TSTAT_WAIT_SLPÍCCÓÌ^XNóÔÌ©çC^XNªN°Ò¿Å é
+ *  ±Æð»ÊÅ«éD·Èí¿CTSTAT_WAITINGÉæèÒ¿óÔÅ é±Æð
+ *  »Ê¹¸ÉCTSTAT_SLP¾¯ðp¢ÄN°Ò¿óÔÅ é±Æð»ÊÅ«éD
+ *  ±êðø¦IÉÀ»·é½ßÉCTS_WAIT_SLPÌlðC(0x00U << 3)ÅÍÈ
+ *  ­(0x01U << 3)ÆµÄ¢éD»Ì½ßC^XNªÔoßÒ¿óÔÅ é
+ *  ±Æð»Ê·é½ßÌTSTAT_WAIT_DLYðCTSTAT_WAIT_SLPÆ¯lÌû@Å
+ *  À»·é±ÆÍÅ«È¢D
+ */
+#define TS_WAIT_MASK	(0x0fU << 3)	/* Ò¿vöÌæoµ}XN */
+
+#define TSTAT_WAIT_SLP(tstat)		(((tstat) & TS_WAIT_MASK) == TS_WAIT_SLP)
+#define TSTAT_WAIT_WOBJ(tstat)		(((tstat) & TS_WAIT_MASK) >= TS_WAIT_RDTQ)
+#define TSTAT_WAIT_WOBJCB(tstat)	(((tstat) & TS_WAIT_MASK) >= TS_WAIT_SEM)
+
+/*
+ *  Ò¿îñubNiWINFOjÌè`
+ *
+ *  ^XNªÒ¿óÔÌÔÍCTCB¨æÑ»Ìp_winfoÅw³êéWINFOðÌ
+ *  æ¤ÉÝèµÈ¯êÎÈçÈ¢D
+ *
+ *  (a) TCBÌ^XNóÔðÒ¿óÔiTS_WAITINGjÉ·éD»ÌÛÉCÒ¿
+ *  vöiTS_WAIT_???jàÝè·éD
+ *
+ *  (b) ^CAEgðÄ·é½ßÉC^CCxgubNðo^·éD
+ *  o^·é^CCxgubNÍCÒ¿ÉüéT[rXR[Ö
+ *  Ì[JÏÆµÄmÛµC»êÖÌ|C^ðWINFOÌp_tmevtbÉL
+ *  ¯·éD^CAEgÌÄªKvÈ¢êiivÒ¿ÌêjÉÍC
+ *  p_tmevtbðNULLÉ·éD
+ *
+ *  ¯úEÊMIuWFNgÉÎ·éÒ¿óÔÌêÉÍCWÌWINFOÉ
+ *  p_wobjcbtB[hðÇÁµ½\¢ÌiWINFO_WOBJCwait.hÅè`jðg
+ *  ¤DÜ½CÈºÌ(c)`(e)ÌÝèðs¤Kvª éD¯úEÊMIuWF
+ *  NgÉÖWµÈ¢Ò¿iN°Ò¿CÔoßÒ¿jÌêÉÍC(c)`(e)
+ *  ÍKvÈ¢D
+ *
+ *  (c) TCBðÒ¿ÎÛÌ¯úEÊMIuWFNgÌÒ¿L
+[ÉÂÈ®DÒ
+ *  ¿L
+[ÉÂÈ®½ßÉCtask_queueðg¤D
+ *
+ *  (d) Ò¿ÎÛÌ¯úEÊMIuWFNgÌÇubNÖÌ|C^ðC
+ *  WINFO_WOBJÌp_wobjcbÉL¯·éD
+ *
+ *  (e) Ò¿ÎÛÌ¯úEÊMIuWFNgÉË¶µÄL¯·é±ÆªKvÈ
+ *  îñª éêÉÍCWINFO_WOBJÉKvÈîñÌ½ßÌtB[hðÇÁ
+ *  µ½\¢Ìðè`µCWINFO_WOBJÌãíèÉp¢éD
+ *
+ *  Ò¿óÔðð·éÛÉÍCÒ¿ðµ½^XNÉÎ·éÔlðWINFOÌ
+ *  wercdÉÝè·éDwercdªKvÈÌÍÒ¿ðÈ~Å éÌÉÎµÄC
+ *  p_tmevtbÍÒ¿ðãÍKvÈ¢½ßCßñÌ½ßÉ¤pÌðgÁ
+ *  Ä¢éD»Ì½ßCwercdÖG[R[hðÝè·éÌÍC^CCxg
+ *  ubNðo^ðµ½ãÉµÈ¯êÎÈçÈ¢D
+ */
+typedef union waiting_information {
+	ER		wercd;			/* Ò¿ðÌG[R[h */
+	TMEVTB	*p_tmevtb;		/* Ò¿óÔpÌ^CCxgubN */
+} WINFO;
+
+/*
+ *  ^XNú»ubN
+ *
+ *  ^XNÉÖ·éîñðClªÏíçÈ¢½ßÉROMÉu¯éªi^XN
+ *  ú»ubNjÆClªÏ»·é½ßÉRAMÉu©È¯êÎÈçÈ¢
+ *  ªi^XNÇubNCTCBjÉª£µCTCBàÉÎ·é^XNú»
+ *  ubNðw·|C^ðüêéD^XNú»ubNàÉÎ·é
+ *  TCBðw·|C^ðüêéû@ÌûªCRAMÌßñÌÏ_©çÍ]Üµ¢
+ *  ªCÀsø¦ª«­Èé½ßÉÌpµÄ¢È¢D¼ÌIuWFNgÉÂ¢
+ *  Äà¯lÉµ¤D
+ *
+ *  ^XNú»ubNÉÍCDEF_TEXÅè`³êé^XNáO[`
+ *  ÉÖ·éîñàÜÞD
+ */
+typedef struct task_initialization_block {
+	ATR			tskatr;			/* ^XN®« */
+	intptr_t	exinf;			/* ^XNÌg£îñ */
+	TASK		task;			/* ^XNÌN®Ôn */
+	uint_t		ipriority;		/* ^XNÌN®Dæxià\»j */
+
+#ifdef USE_TSKINICTXB
+	TSKINICTXB	tskinictxb;		/* ^XNú»ReLXgubN */
+#else /* USE_TSKINICTXB */
+	SIZE		stksz;			/* X^bNÌæÌTCYiÛß½lj */
+	void		*stk;			/* X^bNÌæÌæªÔn */
+#endif /* USE_TSKINICTXB */
+
+	ATR			texatr;			/* ^XNáO[`®« */
+	TEXRTN		texrtn;			/* ^XNáO[`ÌN®Ôn */
+} TINIB;
+
+/*
+ *  TCBÌtB[hÌrbgÌè`
+ *
+ *  vZbTÉæÁÄÍCTCBÌtB[hÌrbgÅgpÊÆ
+ *  «\ªg[hItÉÈé½ßC^[QbgË¶ÉtB[hÌrbg
+ *  ðÏX·é±ÆðµÄ¢éD
+ */
+#ifndef TBIT_TCB_PRIORITY
+#define	TBIT_TCB_PRIORITY		8		/* prioritytB[hÌrbg */
+#endif /* TBIT_TCB_PRIORITY */
+
+/*
+ *  ^XNÇubNiTCBj
+ *
+ *  ASPJ[lÅÍC^XNÌN®vL
+[COÌÅåliTMAX_ACTCNTj
+ *  ÆN°vL
+[COÌÅåliTMAX_WUPCNTjÍ1ÉÅè³êÄ¢é
+ *  ½ßCL
+[CO³êÄ¢é©Ç¤©Ì^UlÅ\»·é±ÆªÅ«éD
+ *  Ü½C­§Ò¿vlXgÌÅåliTMAX_SUSCNTjª1ÉÅè³êÄ¢
+ *  éÌÅC­§Ò¿vlXgisuscntjÍKvÈ¢D
+ *
+ *  TCBÌ¢­Â©ÌtB[hÍCÁèÌ^XNóÔÅÌÝLøÈlðÛµC
+ *  »êÈOÌêÍlªÛØ³êÈ¢iæÁÄCQÆµÄÍÈçÈ¢jDe
+ *  tB[hªLøÈlðÛ·éðÍÌÊèD
+ *
+ *  Eú»ãÍíÉLøF
+ *  		p_tinibCtstatCactque
+ *  Ex~óÔÈOÅLøix~óÔÅÍúlÉÈÁÄ¢éjF
+ *  		priorityCwupqueCenatexCtexptn
+ *  EÒ¿óÔiñdÒ¿óÔðÜÞjÅLøF
+ *  		p_winfo
+ *  EÀsÅ«éóÔÆ¯úEÊMIuWFNgÉÎ·éÒ¿óÔÅLøF
+ *  		task_queue
+ *  EÀsÂ\óÔCÒ¿óÔC­§Ò¿óÔCñdÒ¿óÔÅLøF
+ *  		tskctxb
+ */
+typedef struct task_control_block {
+	QUEUE			task_queue;		/* ^XNL
+[ */
+	const TINIB		*p_tinib;		/* ú»ubNÖÌ|C^ */
+
+#ifdef UINT8_MAX
+	uint8_t			tstat;			/* ^XNóÔià\»j*/
+#else /* UINT8_MAX */
+	BIT_FIELD_UINT	tstat : 8;		/* ^XNóÔià\»j*/
+#endif /* UINT8_MAX */
+#if defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8)
+	uint8_t			priority;		/* »ÝÌDæxià\»j*/
+#else /* defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8) */
+	BIT_FIELD_UINT	priority : TBIT_TCB_PRIORITY;
+									/* »ÝÌDæxià\»j*/
+#endif  /* defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8) */
+	BIT_FIELD_BOOL	actque : 1;		/* N®vL
+[CO */
+	BIT_FIELD_BOOL	wupque : 1;		/* N°vL
+[CO */
+	BIT_FIELD_BOOL	enatex : 1;		/* ^XNáOÂóÔ */
+
+	TEXPTN			texptn;			/* Û¯áOvö */
+	WINFO			*p_winfo;		/* Ò¿îñubNÖÌ|C^ */
+	TSKCTXB			tskctxb;		/* ^XNReLXgubN */
+} TCB;
+
+/*
+ *  ÀsóÔÌ^XN
+ *
+ *  ÀsóÔÌ^XNivZbTªReLXgðÁÄ¢é^XNjÌ
+ *  TCBðw·|C^DÀsóÔÌ^XNªÈ¢êÍNULLÉ·éD
+ *
+ *  T[rXR[ÌÅC©^XNiT[rXR[ðÄÑoµ½^X
+ *  NjÉÖ·éîñðQÆ·éêÍp_runtskðg¤Dp_runtskð«·¦
+ *  éÌÍCfBXpb`iÆú»jÌÝÅ éD
+ */
+extern TCB	*p_runtsk;
+
+/*
+ *  ÅDæÊÌ^XN
+ *
+ *  ÀsÅ«é^XNÌÅÅDæÊÌ^XNÌTCBðw·|C^DÀ
+ *  sÅ«é^XNªÈ¢êÍNULLÉ·éD
+ *
+ *  fBXpb`Ö~óÔÈÇCfBXpb`ªÛ¯³êÄ¢éÔÍp_runtsk
+ *  ÆêvµÄ¢éÆÍÀçÈ¢D
+ */
+extern TCB	*p_schedtsk;
+
+/*
+ *  fBXpb`^^XNáO[`N®vtO
+ *
+ *  Ýnh^CPUáOnhÌoûÉCfBXpb`Ü½Í
+ *  ^XNáO[`ÌN®ðv·é±Æð¦·tOD
+ */
+extern bool_t	reqflg;
+
+/*
+ *  ÝDæx}XNSðóÔ
+ *
+ *  ÝDæx}XNSðóÔÅ é±Æð¦·tOD
+ */
+extern bool_t	ipmflg;
+
+/*
+ *  fBXpb`Ö~óÔ
+ *
+ *  fBXpb`Ö~óÔÅ é±Æð¦·tOD
+ */
+extern bool_t	disdsp;
+
+/*
+ *  ^XNfBXpb`Â\óÔ
+ *
+ *  ÝDæx}XNSðóÔÅ èCfBXpb`ÂóÔÅ éifB
+ *  Xpb`Ö~óÔÅÈ¢j±Æð¦·tOD
+ */
+extern bool_t	dspflg;
+
+/*
+ *  fBL
+[
+ *
+ *  fBL
+[ÍCÀsÅ«éóÔÌ^XNðÇ·é½ßÌL
+[Å éD
+ *  ÀsóÔÌ^XNàÇµÄ¢é½ßCfBiÀsÂ\jL
+[Æ¢¤
+ *  ¼ÌÍ³mÅÍÈ¢ªCfBL
+[Æ¢¤¼Ìªè
+µÄ¢é½ßC±
+ *  Ì¼ÌÅÄÔ±ÆÉ·éD
+ *
+ *  fBL
+[ÍCDæx²ÆÌ^XNL
+[Å\¬³êÄ¢éD^XNÌ
+ *  TCBÍCY·éDæxÌL
+[Éo^³êéD
+ */
+extern QUEUE	ready_queue[TNUM_TPRI];
+
+/*
+ *  fBL
+[T[`Ì½ßÌrbg}bv
+ *
+ *  fBL
+[ÌT[`ðø¦æ­s¤½ßÉCDæx²ÆÌ^XNL
+[
+ *  É^XNªüÁÄ¢é©Ç¤©ð¦·rbg}bvðpÓµÄ¢éDrb
+ *  g}bvðg¤±ÆÅCANZXÌñð¸ç·±ÆªÅ«éªC
+ *  rbgì½ßª[ÀµÄ¢È¢vZbTÅCDæxÌiKª­È¢
+ *  êÉÍCrbg}bvìÌI[o[wbhÌ½ßÉCtÉø¦ª¿
+ *  éÂ\«à éD
+ *
+ *  Dæxª16iKÅ é±Æð¼èµÄ¢é½ßCuint16_t^ÆµÄ¢éD
+ */
+extern uint16_t	ready_primap;
+
+/*
+ *  ^XNIDÌÅålikernel_cfg.cj
+ */
+extern const ID	tmax_tskid;
+
+/*
+ *  ^XNú»ubNÌGAikernel_cfg.cj
+ */
+extern const TINIB	tinib_table[];
+
+/*
+ *  ^XN¶¬e[uikernel_cfg.cj
+ */
+extern const ID	torder_table[];
+
+/*
+ *  TCBÌGAikernel_cfg.cj
+ */
+extern TCB	tcb_table[];
+
+/*
+ *  ^XNÌ
+ */
+#define tnum_tsk	((uint_t)(tmax_tskid - TMIN_TSKID + 1))
+
+/*
+ *  ^XNID©çTCBðæèo·½ßÌ}N
+ */
+#define INDEX_TSK(tskid)	((uint_t)((tskid) - TMIN_TSKID))
+#define get_tcb(tskid)		(&(tcb_table[INDEX_TSK(tskid)]))
+#define get_tcb_self(tskid)	((tskid) == TSK_SELF ? p_runtsk : get_tcb(tskid))
+
+/*
+ *  TCB©ç^XNIDðæèo·½ßÌ}N
+ */
+#define	TSKID(p_tcb)	((ID)(((p_tcb) - tcb_table) + TMIN_TSKID))
+
+/*
+ *  ^XNÇW
+[Ìú»
+ */
+extern void	initialize_task(void);
+
+/*
+ *  ÅDæÊ^XNÌT[`
+ *
+ *  fBL
+[ÌÅDæÊÌ^XNðT[`µC»ÌTCBÖÌ|C^
+ *  ðÔ·DfBL
+[ªóÌêÉÍC±ÌÖðÄÑoµÄÍÈçÈ¢D
+ */
+extern TCB	*search_schedtsk(void);
+
+/*
+ *  ÀsÅ«éóÔÖÌJÚ
+ *
+ *  p_tcbÅwè³êé^XNðfBL
+[É}ü·éDfBL
+[É}ü
+ *  µ½^XNÌDæxªCÅDæÊÌ^XNÌDæxæèà¢êÍC
+ *  ÅDæÊÌ^XNðXVµCfBXpb`ÂóÔÅ êÎtrueðÔ
+ *  ·D»¤ÅÈ¢êÍfalseðÔ·D
+ */
+extern bool_t	make_runnable(TCB *p_tcb);
+
+/*
+ *  ÀsÅ«éóÔ©ç¼ÌóÔÖÌJÚ
+ *
+ *  p_tcbÅwè³êé^XNðfBL
+[©çí·éDp_tcbÅwèµ½
+ *  ^XNªÅDæÊÌ^XNÅ Á½êÉÍCÅDæÊÌ^XN
+ *  ðÝèµÈ¨µCfBXpb`ÂóÔÅ êÎtrueðÔ·D»¤ÅÈ¢
+ *  êÍfalseðÔ·D^XNÌóÔÍXVµÈ¢D
+ */
+extern bool_t	make_non_runnable(TCB *p_tcb);
+
+/*
+ *  x~óÔÖÌJÚ
+ *
+ *  p_tcbÅwè³êé^XNÌóÔðx~óÔÆ·éDÜ½C^XNÌN®
+ *  Éú»·×«ÏÌú»ÆC^XNN®Ì½ßÌReLXgðÝ
+ *  è·éD
+ */
+extern void	make_dormant(TCB *p_tcb);
+
+/*
+ *  x~óÔ©çÀsÅ«éóÔÖÌJÚ
+ *
+ *  p_tcbÅwè³êé^XNÌóÔðx~óÔ©çÀsÅ«éóÔÆ·éD
+ *  ÀsÅ«éóÔÉJÚµ½^XNÖÌfBXpb`ªKvÈêÍtrueC
+ *  »¤ÅÈ¢êÍfalseðÔ·D
+ */
+extern bool_t	make_active(TCB *p_tcb);
+
+/*
+ *  ^XNÌDæxÌÏX
+ *
+ *  p_tcbÅwè³êé^XNÌDæxðnewpriià\»jÉÏX·éDÜ½C
+ *  KvÈêÉÍÅDæÊÌ^XNðXVµCfBXpb`ÂóÔÅ
+ *   êÎtrueðÔ·D»¤ÅÈ¢êÍfalseðÔ·D
+ */
+extern bool_t	change_priority(TCB *p_tcb, uint_t newpri);
+
+/*
+ *  ©^XNÌDæxÌø«ã°
+ *
+ *  ©^XNÌDæxðnewpriià\»jÉÏX·éDÜ½CKvÈêÉ
+ *  ÍÅDæÊÌ^XNðXVµCfBXpb`ÂóÔÅ êÎtrueð
+ *  Ô·D»¤ÅÈ¢êÍfalseðÔ·D
+ */
+extern bool_t	raise_priority(uint_t newpri);
+
+/*
+ *  fBL
+[Ìñ]
+ *
+ *  fBL
+[ÌCp_queueÅwè³êé^XNL
+[ðñ]³¹éDÜ½C
+ *  KvÈêÉÍÅDæÊÌ^XNðÏXµCfBXpb`ªÛ¯³ê
+ *  Ä¢È¯êÎtrueðÔ·D»¤ÅÈ¢êÍfalseðÔ·D
+ */
+extern bool_t	rotate_ready_queue(QUEUE *p_queue);
+
+/*
+ *  ^XNáO[`ÌÄoµ
+ *
+ *  ^XNáO[`ðÄÑo·DÄÑo·OÉCÀsóÔÌ^XNÌ
+ *  Û¯áOvöðNAµC^XNáOÖ~óÔÉµCCPUbNðð
+ *  ·éD
+ *
+ *  ^XNáO[`©çßéÆCÜ¸CPUbNóÔÉßµC»ÌÔ
+ *  ÉÛ¯áOvöª0ÅÈ­ÈÁÄ¢êÎCÄÑ^XNáO[`ð
+ *  ÄÑo·DÛ¯áOvöª0ÌêÉÍCáOÂóÔÉµÄÖ©
+ *  ç^[·éD
+ *
+ *  ±ÌÖÍCÀsóÔÌ^XNªC^XNáOÂóÔienatexª
+ *  truejÅCÛ¯áOvöª0ÅÈ¢itexptnª0ÅÈ¢jêÉÄÑo·±
+ *  ÆðzèµÄ¢éD±ÌÖÍCCPUbNóÔÅÄÑo³È¯êÎÈç
+ *  È¢D
+ */
+extern void	call_texrtn(void);
+
+/*
+ *  ^XNáO[`ÌN®
+ *
+ *  ÀsóÔÌ^XNª^XNáO[`ÌN®ðð½µÄ¢êÎC
+ *  ^XNáO[`ðÄÑo·DCPUáO[`ðÄÑo·
+ *  ÍCêIÉCPUbNðð·éD
+ *
+ *  ±ÌÖÍCfBXpb`âÝnh^CPUáOnhÌoû
+ *  ©çÄÑo³êé±ÆðzèµÄ¢éD±ÌÖÍCCPUbNóÔ
+ *  ÅÄÑo³È¯êÎÈçÈ¢D
+ *
+ *  Àsø¦ðã°é½ßÉC±ÌÖð^[QbgË¶ÅLqµÄàæ¢D
+ *  »ÌêÉÍCOMIT_CALLTEXð}Nè`·éD
+ */
+extern void	calltex(void);
+
+#endif /* TOPPERS_TASK_H */
Index: /asp_ewarm/asp-1.7.0/extension/rstr_task/kernel/task_manage.c
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/rstr_task/kernel/task_manage.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/rstr_task/kernel/task_manage.c	(revision 61)
@@ -0,0 +1,478 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  $Id: task_manage.c 2018 2010-12-31 13:43:05Z ertl-hiro $
+ */
+
+/*
+ *		^XNÇ@\
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_ACT_TSK_ENTER
+#define LOG_ACT_TSK_ENTER(tskid)
+#endif /* LOG_ACT_TSK_ENTER */
+
+#ifndef LOG_ACT_TSK_LEAVE
+#define LOG_ACT_TSK_LEAVE(ercd)
+#endif /* LOG_ACT_TSK_LEAVE */
+
+#ifndef LOG_IACT_TSK_ENTER
+#define LOG_IACT_TSK_ENTER(tskid)
+#endif /* LOG_IACT_TSK_ENTER */
+
+#ifndef LOG_IACT_TSK_LEAVE
+#define LOG_IACT_TSK_LEAVE(ercd)
+#endif /* LOG_IACT_TSK_LEAVE */
+
+#ifndef LOG_CAN_ACT_ENTER
+#define LOG_CAN_ACT_ENTER(tskid)
+#endif /* LOG_CAN_ACT_ENTER */
+
+#ifndef LOG_CAN_ACT_LEAVE
+#define LOG_CAN_ACT_LEAVE(ercd)
+#endif /* LOG_CAN_ACT_LEAVE */
+
+#ifndef LOG_EXT_TSK_ENTER
+#define LOG_EXT_TSK_ENTER()
+#endif /* LOG_EXT_TSK_ENTER */
+
+#ifndef LOG_EXT_TSK_LEAVE
+#define LOG_EXT_TSK_LEAVE(ercd)
+#endif /* LOG_EXT_TSK_LEAVE */
+
+#ifndef LOG_TER_TSK_ENTER
+#define LOG_TER_TSK_ENTER(tskid)
+#endif /* LOG_TER_TSK_ENTER */
+
+#ifndef LOG_TER_TSK_LEAVE
+#define LOG_TER_TSK_LEAVE(ercd)
+#endif /* LOG_TER_TSK_LEAVE */
+
+#ifndef LOG_CHG_PRI_ENTER
+#define LOG_CHG_PRI_ENTER(tskid, tskpri)
+#endif /* LOG_CHG_PRI_ENTER */
+
+#ifndef LOG_CHG_PRI_LEAVE
+#define LOG_CHG_PRI_LEAVE(ercd)
+#endif /* LOG_CHG_PRI_LEAVE */
+
+#ifndef LOG_RAS_PRI_ENTER
+#define LOG_RAS_PRI_ENTER(tskpri)
+#endif /* LOG_RAS_PRI_ENTER */
+
+#ifndef LOG_RAS_PRI_LEAVE
+#define LOG_RAS_PRI_LEAVE(ercd)
+#endif /* LOG_RAS_PRI_LEAVE */
+
+#ifndef LOG_GET_PRI_ENTER
+#define LOG_GET_PRI_ENTER(tskid, p_tskpri)
+#endif /* LOG_GET_PRI_ENTER */
+
+#ifndef LOG_GET_PRI_LEAVE
+#define LOG_GET_PRI_LEAVE(ercd, tskpri)
+#endif /* LOG_GET_PRI_LEAVE */
+
+#ifndef LOG_GET_INF_ENTER
+#define LOG_GET_INF_ENTER(p_exinf)
+#endif /* LOG_GET_INF_ENTER */
+
+#ifndef LOG_GET_INF_LEAVE
+#define LOG_GET_INF_LEAVE(ercd, exinf)
+#endif /* LOG_GET_INF_LEAVE */
+
+/*
+ *  ^XNÌN®
+ */
+#ifdef TOPPERS_act_tsk
+
+ER
+act_tsk(ID tskid)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_ACT_TSK_ENTER(tskid);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID_SELF(tskid);
+	p_tcb = get_tcb_self(tskid);
+
+	t_lock_cpu();
+	if (TSTAT_DORMANT(p_tcb->tstat)) {
+		if (make_active(p_tcb)) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else if (!(p_tcb->actque)) {
+		p_tcb->actque = true;
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_QOVR;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_ACT_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_act_tsk */
+
+/*
+ *  ^XNÌN®iñ^XNReLXgpj
+ */
+#ifdef TOPPERS_iact_tsk
+
+ER
+iact_tsk(ID tskid)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_IACT_TSK_ENTER(tskid);
+	CHECK_INTCTX_UNL();
+	CHECK_TSKID(tskid);
+	p_tcb = get_tcb(tskid);
+
+	i_lock_cpu();
+	if (TSTAT_DORMANT(p_tcb->tstat)) {
+		if (make_active(p_tcb)) {
+			reqflg = true;
+		}
+		ercd = E_OK;
+	}
+	else if (!(p_tcb->actque)) {
+		p_tcb->actque = true;
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_QOVR;
+	}
+	i_unlock_cpu();
+
+  error_exit:
+	LOG_IACT_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_iact_tsk */
+
+/*
+ *  ^XNN®vÌLZ
+ */
+#ifdef TOPPERS_can_act
+
+ER_UINT
+can_act(ID tskid)
+{
+	TCB		*p_tcb;
+	ER_UINT	ercd;
+
+	LOG_CAN_ACT_ENTER(tskid);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID_SELF(tskid);
+	p_tcb = get_tcb_self(tskid);
+
+	t_lock_cpu();
+	ercd = p_tcb->actque ? 1 : 0;
+	p_tcb->actque = false;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_CAN_ACT_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_can_act */
+
+/*
+ *  ©^XNÌI¹
+ */
+#ifdef TOPPERS_ext_tsk
+
+ER
+ext_tsk(void)
+{
+	ER		ercd;
+
+	LOG_EXT_TSK_ENTER();
+	CHECK_TSKCTX();
+
+	if (t_sense_lock()) {
+		/*
+		 *  CPUbNóÔÅext_tskªÄÎê½êÍCCPUbNððµ
+		 *  Ä©ç^XNðI¹·éDÀãÍCT[rXR[àÅÌCPU
+		 *  bNðÈª·êÎæ¢¾¯D
+		 */
+	}
+	else {
+		t_lock_cpu();
+	}
+	if (disdsp) {
+		/*
+		 *  fBXpb`Ö~óÔÅext_tskªÄÎê½êÍCfBXpb
+		 *  `ÂóÔÉµÄ©ç^XNðI¹·éD
+		 */
+		disdsp = false;
+	}
+	if (!ipmflg) {
+		/*
+		 *  ÝDæx}XNiIPMjªTIPM_ENAALLÈOÌóÔÅext_tsk
+		 *  ªÄÎê½êÍCIPMðTIPM_ENAALLÉµÄ©ç^XNðI¹·
+		 *  éD
+		 */
+		t_set_ipm(TIPM_ENAALL);
+		ipmflg = true;
+	}
+	dspflg = true;
+
+	(void) make_non_runnable(p_runtsk);
+	make_dormant(p_runtsk);
+	if (p_runtsk->actque) {
+		p_runtsk->actque = false;
+		(void) make_active(p_runtsk);
+	}
+	exit_and_dispatch();
+	ercd = E_SYS;
+
+  error_exit:
+	LOG_EXT_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ext_tsk */
+
+/*
+ *  ^XNÌ­§I¹
+ */
+#ifdef TOPPERS_ter_tsk
+
+ER
+ter_tsk(ID tskid)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_TER_TSK_ENTER(tskid);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID(tskid);
+	p_tcb = get_tcb(tskid);
+	CHECK_NONSELF(p_tcb);
+
+	t_lock_cpu();
+	if (TSTAT_DORMANT(p_tcb->tstat)) {
+		ercd = E_OBJ;
+	}
+	else {
+		if (TSTAT_RUNNABLE(p_tcb->tstat)) {
+			/*
+			 *  p_tcbÍ©^XNÅÈ¢½ßCiVOvZbTÅÍjÀ
+			 *  sóÔÅÈ­Cmake_non_runnable(p_tcb)Å^XNfBXpb
+			 *  `ªKvÉÈé±ÆÍÈ¢D
+			 */
+			(void) make_non_runnable(p_tcb);
+		}
+		else if (TSTAT_WAITING(p_tcb->tstat)) {
+			wait_dequeue_wobj(p_tcb);
+			wait_dequeue_tmevtb(p_tcb);
+		}
+		make_dormant(p_tcb);
+		if (p_tcb->actque) {
+			p_tcb->actque = false;
+			if (make_active(p_tcb)) {
+				dispatch();
+			}
+		}
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_TER_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ter_tsk */
+
+/*
+ *  ^XNÌx[XDæxÌÏX
+ */
+#ifdef TOPPERS_chg_pri
+
+ER
+chg_pri(ID tskid, PRI tskpri)
+{
+	TCB		*p_tcb;
+	uint_t	newpri;
+	ER		ercd;
+
+	LOG_CHG_PRI_ENTER(tskid, tskpri);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID_SELF(tskid);
+	CHECK_TPRI_INI(tskpri);
+	p_tcb = get_tcb_self(tskid);
+	CHECK_NONRSTR(p_tcb);
+	newpri = (tskpri == TPRI_INI) ? p_tcb->p_tinib->ipriority
+										: INT_PRIORITY(tskpri);
+
+	t_lock_cpu();
+	if (TSTAT_DORMANT(p_tcb->tstat)) {
+		ercd = E_OBJ;
+	}
+	else {
+		if (change_priority(p_tcb, newpri)) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_CHG_PRI_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_chg_pri */
+
+/*
+ *  ©^XNÌDæxÌø«ã°
+ */
+#ifdef TOPPERS_ras_pri
+
+ER
+ras_pri(PRI tskpri)
+{
+	uint_t	newpri;
+	ER		ercd;
+
+	LOG_RAS_PRI_ENTER(tskpri);
+	CHECK_TSKCTX_UNL();
+	CHECK_TPRI_INI(tskpri);
+	if (tskpri == TPRI_INI) {
+		newpri = p_runtsk->p_tinib->ipriority;
+	}
+	else {
+		newpri = INT_PRIORITY(tskpri);
+		CHECK_ILUSE(newpri <= p_runtsk->p_tinib->ipriority);
+	}
+
+	t_lock_cpu();
+	if (raise_priority(newpri)) {
+		dispatch();
+	}
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_RAS_PRI_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ras_pri */
+
+/*
+ *  ^XNDæxÌQÆ
+ */
+#ifdef TOPPERS_get_pri
+
+ER
+get_pri(ID tskid, PRI *p_tskpri)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_GET_PRI_ENTER(tskid, p_tskpri);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID_SELF(tskid);
+	p_tcb = get_tcb_self(tskid);
+
+	t_lock_cpu();
+	if (TSTAT_DORMANT(p_tcb->tstat)) {
+		ercd = E_OBJ;
+	}
+	else {
+		*p_tskpri = EXT_TSKPRI(p_tcb->priority);
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_GET_PRI_LEAVE(ercd, *p_tskpri);
+	return(ercd);
+}
+
+#endif /* TOPPERS_get_pri */
+
+/*
+ *  ©^XNÌg£îñÌQÆ
+ */
+#ifdef TOPPERS_get_inf
+
+ER
+get_inf(intptr_t *p_exinf)
+{
+	ER		ercd;
+
+	LOG_GET_INF_ENTER(p_exinf);
+	CHECK_TSKCTX_UNL();
+
+	t_lock_cpu();
+	*p_exinf = p_runtsk->p_tinib->exinf;
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_GET_INF_LEAVE(ercd, *p_exinf);
+	return(ercd);
+}
+
+#endif /* TOPPERS_get_inf */
Index: /asp_ewarm/asp-1.7.0/extension/rstr_task/kernel/task_sync.c
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/rstr_task/kernel/task_sync.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/rstr_task/kernel/task_sync.c	(revision 61)
@@ -0,0 +1,542 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  $Id: task_sync.c 1887 2010-08-06 06:15:19Z ertl-hiro $
+ */
+
+/*
+ *		^XNt®¯ú@\
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_SLP_TSK_ENTER
+#define LOG_SLP_TSK_ENTER()
+#endif /* LOG_SLP_TSK_ENTER */
+
+#ifndef LOG_SLP_TSK_LEAVE
+#define LOG_SLP_TSK_LEAVE(ercd)
+#endif /* LOG_SLP_TSK_LEAVE */
+
+#ifndef LOG_TSLP_TSK_ENTER
+#define LOG_TSLP_TSK_ENTER(tmout)
+#endif /* LOG_TSLP_TSK_ENTER */
+
+#ifndef LOG_TSLP_TSK_LEAVE
+#define LOG_TSLP_TSK_LEAVE(ercd)
+#endif /* LOG_TSLP_TSK_LEAVE */
+
+#ifndef LOG_WUP_TSK_ENTER
+#define LOG_WUP_TSK_ENTER(tskid)
+#endif /* LOG_WUP_TSK_ENTER */
+
+#ifndef LOG_WUP_TSK_LEAVE
+#define LOG_WUP_TSK_LEAVE(ercd)
+#endif /* LOG_WUP_TSK_LEAVE */
+
+#ifndef LOG_IWUP_TSK_ENTER
+#define LOG_IWUP_TSK_ENTER(tskid)
+#endif /* LOG_IWUP_TSK_ENTER */
+
+#ifndef LOG_IWUP_TSK_LEAVE
+#define LOG_IWUP_TSK_LEAVE(ercd)
+#endif /* LOG_IWUP_TSK_LEAVE */
+
+#ifndef LOG_CAN_WUP_ENTER
+#define LOG_CAN_WUP_ENTER(tskid)
+#endif /* LOG_CAN_WUP_ENTER */
+
+#ifndef LOG_CAN_WUP_LEAVE
+#define LOG_CAN_WUP_LEAVE(ercd)
+#endif /* LOG_CAN_WUP_LEAVE */
+
+#ifndef LOG_REL_WAI_ENTER
+#define LOG_REL_WAI_ENTER(tskid)
+#endif /* LOG_REL_WAI_ENTER */
+
+#ifndef LOG_REL_WAI_LEAVE
+#define LOG_REL_WAI_LEAVE(ercd)
+#endif /* LOG_REL_WAI_LEAVE */
+
+#ifndef LOG_IREL_WAI_ENTER
+#define LOG_IREL_WAI_ENTER(tskid)
+#endif /* LOG_IREL_WAI_ENTER */
+
+#ifndef LOG_IREL_WAI_LEAVE
+#define LOG_IREL_WAI_LEAVE(ercd)
+#endif /* LOG_IREL_WAI_LEAVE */
+
+#ifndef LOG_SUS_TSK_ENTER
+#define LOG_SUS_TSK_ENTER(tskid)
+#endif /* LOG_SUS_TSK_ENTER */
+
+#ifndef LOG_SUS_TSK_LEAVE
+#define LOG_SUS_TSK_LEAVE(ercd)
+#endif /* LOG_SUS_TSK_LEAVE */
+
+#ifndef LOG_RSM_TSK_ENTER
+#define LOG_RSM_TSK_ENTER(tskid)
+#endif /* LOG_RSM_TSK_ENTER */
+
+#ifndef LOG_RSM_TSK_LEAVE
+#define LOG_RSM_TSK_LEAVE(ercd)
+#endif /* LOG_RSM_TSK_LEAVE */
+
+#ifndef LOG_DLY_TSK_ENTER
+#define LOG_DLY_TSK_ENTER(dlytim)
+#endif /* LOG_DLY_TSK_ENTER */
+
+#ifndef LOG_DLY_TSK_LEAVE
+#define LOG_DLY_TSK_LEAVE(ercd)
+#endif /* LOG_DLY_TSK_LEAVE */
+
+/*
+ *  N°Ò¿
+ */
+#ifdef TOPPERS_slp_tsk
+
+ER
+slp_tsk(void)
+{
+	WINFO	winfo;
+	ER		ercd;
+
+	LOG_SLP_TSK_ENTER();
+	CHECK_DISPATCH();
+
+	t_lock_cpu();
+	if (p_runtsk->wupque) {
+		p_runtsk->wupque = false;
+		ercd = E_OK;
+	}
+	else {
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_SLP);
+		make_wait(&winfo);
+		LOG_TSKSTAT(p_runtsk);
+		dispatch();
+		ercd = winfo.wercd;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_SLP_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_slp_tsk */
+
+/*
+ *  N°Ò¿i^CAEg èj
+ */
+#ifdef TOPPERS_tslp_tsk
+
+ER
+tslp_tsk(TMO tmout)
+{
+	WINFO	winfo;
+	TMEVTB	tmevtb;
+	ER		ercd;
+
+	LOG_TSLP_TSK_ENTER(tmout);
+	CHECK_DISPATCH();
+	CHECK_TMOUT(tmout);
+
+	t_lock_cpu();
+	if (p_runtsk->wupque) {
+		p_runtsk->wupque = false;
+		ercd = E_OK;
+	}
+	else if (tmout == TMO_POL) {
+		ercd = E_TMOUT;
+	}
+	else {
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_SLP);
+		make_wait_tmout(&winfo, &tmevtb, tmout);
+		LOG_TSKSTAT(p_runtsk);
+		dispatch();
+		ercd = winfo.wercd;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_TSLP_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_tslp_tsk */
+
+/*
+ *  ^XNÌN°
+ */
+#ifdef TOPPERS_wup_tsk
+
+ER
+wup_tsk(ID tskid)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_WUP_TSK_ENTER(tskid);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID_SELF(tskid);
+	p_tcb = get_tcb_self(tskid);
+	CHECK_NONRSTR(p_tcb);
+
+	t_lock_cpu();
+	if (TSTAT_DORMANT(p_tcb->tstat)) {
+		ercd = E_OBJ;
+	}
+	else if (TSTAT_WAIT_SLP(p_tcb->tstat)) {
+		if (wait_complete(p_tcb)) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else if (!(p_tcb->wupque)) {
+		p_tcb->wupque = true;
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_QOVR;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_WUP_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_wup_tsk */
+
+/*
+ *  ^XNÌN°iñ^XNReLXgpj
+ */
+#ifdef TOPPERS_iwup_tsk
+
+ER
+iwup_tsk(ID tskid)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_IWUP_TSK_ENTER(tskid);
+	CHECK_INTCTX_UNL();
+	CHECK_TSKID(tskid);
+	p_tcb = get_tcb(tskid);
+	CHECK_NONRSTR(p_tcb);
+
+	i_lock_cpu();
+	if (TSTAT_DORMANT(p_tcb->tstat)) {
+		ercd = E_OBJ;
+	}
+	else if (TSTAT_WAIT_SLP(p_tcb->tstat)) {
+		if (wait_complete(p_tcb)) {
+			reqflg = true;
+		}
+		ercd = E_OK;
+	}
+	else if (!(p_tcb->wupque)) {
+		p_tcb->wupque = true;
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_QOVR;
+	}
+	i_unlock_cpu();
+
+  error_exit:
+	LOG_IWUP_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_iwup_tsk */
+
+/*
+ *  ^XNN°vÌLZ
+ */
+#ifdef TOPPERS_can_wup
+
+ER_UINT
+can_wup(ID tskid)
+{
+	TCB		*p_tcb;
+	ER_UINT	ercd;
+
+	LOG_CAN_WUP_ENTER(tskid);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID_SELF(tskid);
+	p_tcb = get_tcb_self(tskid);
+	CHECK_NONRSTR(p_tcb);
+
+	t_lock_cpu();
+	if (TSTAT_DORMANT(p_tcb->tstat)) {
+		ercd = E_OBJ;
+	}
+	else {
+		ercd = p_tcb->wupque ? 1 : 0;
+		p_tcb->wupque = false;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_CAN_WUP_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_can_wup */
+
+/*
+ *  Ò¿óÔÌ­§ð
+ */
+#ifdef TOPPERS_rel_wai
+
+ER
+rel_wai(ID tskid)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_REL_WAI_ENTER(tskid);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID(tskid);
+	p_tcb = get_tcb(tskid);
+	CHECK_NONRSTR(p_tcb);
+
+	t_lock_cpu();
+	if (!TSTAT_WAITING(p_tcb->tstat)) {
+		ercd = E_OBJ;
+	}
+	else {
+		if (wait_release(p_tcb)) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_REL_WAI_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_rel_wai */
+
+/*
+ *  Ò¿óÔÌ­§ðiñ^XNReLXgpj
+ */
+#ifdef TOPPERS_irel_wai
+
+ER
+irel_wai(ID tskid)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_IREL_WAI_ENTER(tskid);
+	CHECK_INTCTX_UNL();
+	CHECK_TSKID(tskid);
+	p_tcb = get_tcb(tskid);
+	CHECK_NONRSTR(p_tcb);
+
+	i_lock_cpu();
+	if (!TSTAT_WAITING(p_tcb->tstat)) {
+		ercd = E_OBJ;
+	}
+	else {
+		if (wait_release(p_tcb)) {
+			reqflg = true;
+		}
+		ercd = E_OK;
+	}
+	i_unlock_cpu();
+
+  error_exit:
+	LOG_IREL_WAI_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_irel_wai */
+
+/*
+ *  ­§Ò¿óÔÖÌÚs
+ */
+#ifdef TOPPERS_sus_tsk
+
+ER
+sus_tsk(ID tskid)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_SUS_TSK_ENTER(tskid);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID_SELF(tskid);
+	p_tcb = get_tcb_self(tskid);
+	CHECK_NONRSTR(p_tcb);
+
+	t_lock_cpu();
+	if (p_tcb == p_runtsk && !dspflg) {
+		ercd = E_CTX;
+	}
+	else if (TSTAT_DORMANT(p_tcb->tstat)) {
+		ercd = E_OBJ;
+	}
+	else if (TSTAT_RUNNABLE(p_tcb->tstat)) {
+		/*
+		 *  ÀsÅ«éóÔ©ç­§Ò¿óÔÖÌJÚ
+		 */
+		p_tcb->tstat = TS_SUSPENDED;
+		LOG_TSKSTAT(p_tcb);
+		if (make_non_runnable(p_tcb)) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else if (TSTAT_SUSPENDED(p_tcb->tstat)) {
+		ercd = E_QOVR;
+	}
+	else {
+		/*
+		 *  Ò¿óÔ©çñdÒ¿óÔÖÌJÚ
+		 */
+		p_tcb->tstat |= TS_SUSPENDED;
+		LOG_TSKSTAT(p_tcb);
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_SUS_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_sus_tsk */
+
+/*
+ *  ­§Ò¿óÔ©çÌÄJ
+ */
+#ifdef TOPPERS_rsm_tsk
+
+ER
+rsm_tsk(ID tskid)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_RSM_TSK_ENTER(tskid);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID(tskid);
+	p_tcb = get_tcb(tskid);
+	CHECK_NONRSTR(p_tcb);
+
+	t_lock_cpu();
+	if (!TSTAT_SUSPENDED(p_tcb->tstat)) {
+		ercd = E_OBJ;
+	}
+	else if (!TSTAT_WAITING(p_tcb->tstat)) {
+		/*
+		 *  ­§Ò¿óÔ©çÀsÅ«éóÔÖÌJÚ
+		 */
+		p_tcb->tstat = TS_RUNNABLE;
+		LOG_TSKSTAT(p_tcb);
+		if (make_runnable(p_tcb)) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else {
+		/*
+		 *  ñdÒ¿óÔ©çÒ¿óÔÖÌJÚ
+		 */
+		p_tcb->tstat &= ~TS_SUSPENDED;
+		LOG_TSKSTAT(p_tcb);
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_RSM_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_rsm_tsk */
+
+/*
+ *  ©^XNÌx
+ */
+#ifdef TOPPERS_dly_tsk
+
+ER
+dly_tsk(RELTIM dlytim)
+{
+	WINFO	winfo;
+	TMEVTB	tmevtb;
+	ER		ercd;
+
+	LOG_DLY_TSK_ENTER(dlytim);
+	CHECK_DISPATCH();
+	CHECK_PAR(dlytim <= TMAX_RELTIM);
+
+	t_lock_cpu();
+	p_runtsk->tstat = (TS_WAITING | TS_WAIT_DLY);
+	(void) make_non_runnable(p_runtsk);
+	p_runtsk->p_winfo = &winfo;
+	winfo.p_tmevtb = &tmevtb;
+	tmevtb_enqueue(&tmevtb, dlytim, (CBACK) wait_tmout_ok, (void *) p_runtsk);
+	LOG_TSKSTAT(p_runtsk);
+	dispatch();
+	ercd = winfo.wercd;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_DLY_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_dly_tsk */
Index: /asp_ewarm/asp-1.7.0/extension/rstr_task/test/test_rstr1.c
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/rstr_task/test/test_rstr1.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/rstr_task/test/test_rstr1.c	(revision 61)
@@ -0,0 +1,345 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  $Id: test_rstr1.c 1887 2010-08-06 06:15:19Z ertl-hiro $
+ */
+
+/* 
+ *		§ñ^XNÌeXg(1)
+ *
+ * yeXgÌÚIz
+ *
+ *  §ñ^XNÌî{IÈU¢iras_priT[rXR[ÈOÌ®ìjðeX
+ *  g·éD
+ *
+ * yeXgÚz
+ *
+ *	(A) §ñ^XNªC©^XNðÒ¿óÔÉ·éÂ\«Ì éT[rXR[
+ *      ðÄÑoµ½êCE_NOSPTG[ÆÈé
+ *		(A-1) slp_tsk
+ *		(A-2) tslp_tsk
+ *		(A-3) dly_tsk
+ *      ¦ ¼Éà éªC±ê¾¯É¯ßé
+ *	(B) §ñ^XNðÎÛÆµÄCchg_priCwup_tskCiwup_tskCcan_wupC
+ *	    rel_waiCirel_waiCsus_tskCrsm_tskðÄÑoµ½êCE_NOSPTG
+ *	    [ÆÈé
+ *		(B-1) chg_pri
+ *		(B-2) wup_tsk
+ *		(B-3) iwup_tsk
+ *		(B-4) can_wup
+ *		(B-5) rel_wai
+ *		(B-6) irel_wai
+ *		(B-7) sus_tsk
+ *		(B-8) rsm_tsk
+ *  (C) rot_rdqCirot_rdqÍCÎÛDæxðÂÀsÅ«éóÔÌ^XNÌ
+ *      ÅÅàDæÊª¢^XNª§ñ^XNÅ éêCE_NOSPTG[
+ *      ÆÈé
+ *		(C-1) rot_rdqª³µ­®ì·é
+ *		(C-2) rot_rdqªE_NOSPTðÔ·
+ *		(C-3) irot_rdqª³µ­®ì·é
+ *		(C-4) irot_rdqªE_NOSPTðÔ·
+ *
+ * ygp\[Xz
+ *
+ *	TASK1: Dæx^XNCC^XNCÅ©çN®
+ *	TASK2: Dæx^XNC§ñ^XN
+ *	TASK3: Dæx^XNC§ñ^XN
+ *	TASK4: Dæx^XNC§ñ^XN
+ *	ALM1:  A[nh
+ *
+ * yeXgV[PXz
+ *
+ *	== TASK1iDæxFj==
+ *	1:	act_tsk(TASK2)
+ *	== TASK2-1iDæxFj==
+ *	2:	slp_tsk() -> E_NOSPT						... (A-1)
+ *	3:	tslp_tsk(10) -> E_NOSPT						... (A-2)
+ *	4:	dly_tsk(10) -> E_NOSPT						... (A-3)
+ *  5:	ext_tsk()
+ *	== TASK1i±«j==
+ *	6:	chg_pri(TASK3, HIGH_PRIORITY) -> E_NOSPT	... (B-1)
+ *	7:	wup_tsk(TASK3) -> E_NOSPT					... (B-2)
+ *	8:	can_wup(TASK3) -> E_NOSPT					... (B-4)
+ *	9:	rel_wai(TASK3) -> E_NOSPT					... (B-5)
+ *	10:	sus_tsk(TASK3) -> E_NOSPT					... (B-7)
+ *	11:	rsm_tsk(TASK3) -> E_NOSPT					... (B-8)
+ *	12:	sta_alm(ALM1, 10)
+ *	13:	slp_tsk()
+ *	== ALM1 ==
+ *	14:	iwup_tsk(TASK3) -> E_NOSPT					... (B-3)
+ *	15:	irel_wai(TASK3) -> E_NOSPT					... (B-6)
+ *	16:	iwup_tsk(TASK1)
+ *	17:	iact_tsk(TASK3)
+ *	18:	iact_tsk(TASK4)
+ *	19:	irot_rdq(MID_PRIORITY)						... (C-3)
+ *	20:	irot_rdq(MID_PRIORITY) -> E_NOSPT			... (C-4)
+ *	21:	RETURN
+ *	== TASK3-1iDæxFj==
+ *	22:	act_tsk(TASK2)
+ *	== TASK2-2iDæxFj2ñß ==
+ *	23:	rot_rdq(MID_PRIORITY) -> E_NOSPT			... (C-2)
+ *	24:	ext_tsk()
+ *	== TASK3-1i±«j==
+ *	25:	ext_tsk()
+ *	== TASK4-1iDæxFj1ñß ==
+ *	26:	ext_tsk()
+ *	== TASK1i±«j==
+ *	27:	act_tsk(TASK3)
+ *	28:	act_tsk(TASK4)
+ *	29:	act_tsk(TASK2)
+ *	== TASK2-3iDæxFj3ñß ==
+ *	30:	rot_rdq(MID_PRIORITY)						... (C-1)
+ *	31:	ext_tsk()
+ *	== TASK3-2iDæxFj2ñß ==
+ *	32:	ext_tsk()
+ *	== TASK4-2iDæxFj2ñß ==
+ *	33:	ext_tsk()
+ *	== TASK1i±«j==
+ *	34: END
+ */
+
+#include <kernel.h>
+#include <test_lib.h>
+#include <t_syslog.h>
+#include "kernel_cfg.h"
+#include "test_rstr1.h"
+
+void
+alarm1_handler(intptr_t exinf)
+{
+	ER		ercd;
+
+	check_point(14);
+	ercd = iwup_tsk(TASK3);
+	check_ercd(ercd, E_NOSPT);
+
+	check_point(15);
+	ercd = irel_wai(TASK3);
+	check_ercd(ercd, E_NOSPT);
+
+	check_point(16);
+	ercd = iwup_tsk(TASK1);
+	check_ercd(ercd, E_OK);
+
+	check_point(17);
+	ercd = iact_tsk(TASK3);
+	check_ercd(ercd, E_OK);
+
+	check_point(18);
+	ercd = iact_tsk(TASK4);
+	check_ercd(ercd, E_OK);
+
+	check_point(19);
+	ercd = irot_rdq(MID_PRIORITY);
+	check_ercd(ercd, E_OK);
+
+	check_point(20);
+	ercd = irot_rdq(MID_PRIORITY);
+	check_ercd(ercd, E_NOSPT);
+
+	check_point(21);
+	return;
+
+	check_point(0);
+}
+
+void
+task1(intptr_t exinf)
+{
+	ER		ercd;
+
+	check_point(1);
+	ercd = act_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_point(6);
+	ercd = chg_pri(TASK3, HIGH_PRIORITY);
+	check_ercd(ercd, E_NOSPT);
+
+	check_point(7);
+	ercd = wup_tsk(TASK3);
+	check_ercd(ercd, E_NOSPT);
+
+	check_point(8);
+	ercd = can_wup(TASK3);
+	check_ercd(ercd, E_NOSPT);
+
+	check_point(9);
+	ercd = rel_wai(TASK3);
+	check_ercd(ercd, E_NOSPT);
+
+	check_point(10);
+	ercd = sus_tsk(TASK3);
+	check_ercd(ercd, E_NOSPT);
+
+	check_point(11);
+	ercd = rsm_tsk(TASK3);
+	check_ercd(ercd, E_NOSPT);
+
+	check_point(12);
+	ercd = sta_alm(ALM1, 10);
+	check_ercd(ercd, E_OK);
+
+	check_point(13);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(27);
+	ercd = act_tsk(TASK3);
+	check_ercd(ercd, E_OK);
+
+	check_point(28);
+	ercd = act_tsk(TASK4);
+	check_ercd(ercd, E_OK);
+
+	check_point(29);
+	ercd = act_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_finish(34);
+
+	check_point(0);
+}
+
+static uint_t	task2_count = 0;
+
+void
+task2(intptr_t exinf)
+{
+	ER		ercd;
+
+	switch (++task2_count) {
+	case 1:
+		check_point(2);
+		ercd = slp_tsk();
+		check_ercd(ercd, E_NOSPT);
+
+		check_point(3);
+		ercd = tslp_tsk(10);
+		check_ercd(ercd, E_NOSPT);
+
+		check_point(4);
+		ercd = dly_tsk(10);
+		check_ercd(ercd, E_NOSPT);
+
+		check_point(5);
+		ercd = ext_tsk();
+		check_ercd(ercd, E_OK);
+
+		check_point(0);
+
+	case 2:
+		check_point(23);
+		ercd = rot_rdq(MID_PRIORITY);
+		check_ercd(ercd, E_NOSPT);
+
+		check_point(24);
+		ercd = ext_tsk();
+		check_ercd(ercd, E_OK);
+
+		check_point(0);
+
+	case 3:
+		check_point(30);
+		ercd = rot_rdq(MID_PRIORITY);
+		check_ercd(ercd, E_OK);
+
+		check_point(31);
+		ercd = ext_tsk();
+		check_ercd(ercd, E_OK);
+
+		check_point(0);
+	}
+	check_point(0);
+}
+
+static uint_t	task3_count = 0;
+
+void
+task3(intptr_t exinf)
+{
+	ER		ercd;
+
+	switch (++task3_count) {
+	case 1:
+		check_point(22);
+		ercd = act_tsk(TASK2);
+		check_ercd(ercd, E_OK);
+
+		check_point(25);
+		ercd = ext_tsk();
+		check_ercd(ercd, E_OK);
+
+		check_point(0);
+
+	case 2:
+		check_point(32);
+		ercd = ext_tsk();
+		check_ercd(ercd, E_OK);
+
+		check_point(0);
+	}
+	check_point(0);
+}
+
+static uint_t	task4_count = 0;
+
+void
+task4(intptr_t exinf)
+{
+	ER		ercd;
+
+	switch (++task4_count) {
+	case 1:
+		check_point(26);
+		ercd = ext_tsk();
+		check_ercd(ercd, E_OK);
+
+		check_point(0);
+
+	case 2:
+		check_point(33);
+		ercd = ext_tsk();
+		check_ercd(ercd, E_OK);
+
+		check_point(0);
+	}
+	check_point(0);
+}
Index: /asp_ewarm/asp-1.7.0/extension/rstr_task/test/test_rstr1.cfg
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/rstr_task/test/test_rstr1.cfg	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/rstr_task/test/test_rstr1.cfg	(revision 61)
@@ -0,0 +1,20 @@
+/*
+ *  $Id: test_rstr1.cfg 1887 2010-08-06 06:15:19Z ertl-hiro $
+ */
+
+/*
+ *  §ñ^XNÌeXg(1)ÌVXeRtBM
+[Vt@C
+ */
+INCLUDE("target_timer.cfg");
+INCLUDE("syssvc/syslog.cfg");
+INCLUDE("syssvc/banner.cfg");
+INCLUDE("syssvc/serial.cfg");
+
+#include "test_rstr1.h"
+
+CRE_TSK(TASK1, { TA_ACT, 1, task1, MID_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK2, { TA_RSTR, 2, task2, HIGH_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK3, { TA_RSTR, 3, task3, MID_PRIORITY, STACK_SIZE + 256, NULL });
+CRE_TSK(TASK4, { TA_RSTR, 4, task4, MID_PRIORITY, STACK_SIZE, NULL });
+CRE_ALM(ALM1, { TA_NULL, 1, alarm1_handler });
Index: /asp_ewarm/asp-1.7.0/extension/rstr_task/test/test_rstr1.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/rstr_task/test/test_rstr1.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/rstr_task/test/test_rstr1.h	(revision 61)
@@ -0,0 +1,78 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  $Id: test_rstr1.h 1887 2010-08-06 06:15:19Z ertl-hiro $
+ */
+
+/* 
+ *		§ñ^XNÌeXg(1)
+ */
+
+/*
+ *  ^[QbgË¶Ìè`
+ */
+#include "target_test.h"
+
+/*
+ *  DæxÌè`
+ */
+#define HIGH_PRIORITY	4		/* Dæx */
+#define MID_PRIORITY	9		/* Dæx */
+#define LOW_PRIORITY	14		/* áDæx */
+
+/*
+ *  ^[QbgÉË¶·éÂ\«Ì éèÌè`
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ^XNÌX^bNTCY */
+#endif /* STACK_SIZE */
+
+/*
+ *  ÖÌvg^Cvé¾
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+extern void	task1(intptr_t exinf);
+extern void	task2(intptr_t exinf);
+extern void	task3(intptr_t exinf);
+extern void	task4(intptr_t exinf);
+extern void	alarm1_handler(intptr_t exinf);
+
+#endif /* TOPPERS_MACRO_ONLY */
Index: /asp_ewarm/asp-1.7.0/extension/rstr_task/test/test_rstr2.c
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/rstr_task/test/test_rstr2.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/rstr_task/test/test_rstr2.c	(revision 61)
@@ -0,0 +1,224 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  $Id: test_rstr2.c 1887 2010-08-06 06:15:19Z ertl-hiro $
+ */
+
+/* 
+ *		§ñ^XNÌeXg(2)
+ *
+ * yeXgÌÚIz
+ *
+ *  ras_priT[rXR[Ì®ìðeXg·éD
+ *
+ * yeXgÚz
+ *
+ *	(A) §ñ^XN©çras_priðÄÑoµCDæxðã°é
+ *		(A-1) fBXpb`ÂóÔÅÄÑoµ½ê
+ *		(A-2) fBXpb`Ö~óÔÅCÅDæÊ^XNªÀsóÔÅÈ
+ *		      ¢êÉÄÑoµ½ê
+ *	(B) DæxªãªÁ½§ñ^XN©çras_pri(TPRI_INI)ðÄÑoµCN®
+ *      DæxÉß·
+ *		(B-1) N®Dæxæèà¢DæxÌ^XNªÀsÂ\ÌêÉC
+ *		      ^XNØ·¦ªN±é±ÆðmF·é
+ *		(B-2) N®DæxÆ¯¶DæxÌ^XNªÀsÂ\ÌêÉC^X
+ *		      NØ·¦ªN±çÈ¢±ÆðmF·é
+ *		(B-3) N®Dæxæèàá¢DæxÌ^XNªÀsÂ\ÌêÉC
+ *		      ^XNØ·¦ªN±çÈ¢±ÆðmF·é
+ *	(C) §ñ^XN©çras_priðÄÑoµCN®Dæxæèàá¢DæxÉ
+ *	    ÏXµæ¤Æ·éÆCE_ILUSEÉÈé±ÆðmF·é
+ *
+ * ygp\[Xz
+ *
+ *	TASK1: Dæx^XNCC^XNCÅ©çN®
+ *	TASK2: Dæx^XNC§ñ^XN
+ *	TASK3: Dæx^XN
+ *
+ * yeXgV[PXz
+ *
+ *	== TASK1iDæxFj==
+ *	1:	act_tsk(TASK2)
+ *	2:	slp_tsk()
+ *	== TASK2iDæxFj==
+ *	3:	get_pri(TSK_SELF, &tskpri)
+ *		assert(tskpri == MID_PRIORITY)
+ *	4:	ras_pri(HIGH_PRIORITY)
+ *	5:	get_pri(TSK_SELF, &tskpri)
+ *		assert(tskpri == HIGH_PRIORITY)
+ *	6:	act_tsk(TASK3)
+ *	7:	ras_pri(LOW_PRIORITY) -> E_ILUSE			... (C)
+ *	8:	ras_pri(TPRI_INI)							... (B-1)
+ *	== TASK3iDæxFj==
+ *	9:	get_pri(TASK2, &tskpri)
+ *		assert(tskpri == MID_PRIORITY)
+ *	10:	slp_tsk()
+ *	== TASK2i±«j==
+ *	11:	dis_dsp()
+ *	12:	wup_tsk(TASK3)
+ *	13:	ras_pri(HIGH_PRIORITY)						... (A-2)
+ *	14:	ena_dsp()
+ *	15:	ras_pri(TPRI_INI)							... (B-3)
+ *	== TASK3i±«j==
+ *	16:	chg_pri(TSK_SELF, LOW_PRIORITY)
+ *	== TASK2i±«j==
+ *	17:	ras_pri(HIGH_PRIORITY)
+ *	18:	wup_tsk(TASK1)
+ *	19:	ras_pri(TPRI_INI)							... (B-2)
+ *	20:	ext_tsk()
+ *	== TASK1i±«j==
+ *	21: END
+ */
+
+#include <kernel.h>
+#include <test_lib.h>
+#include <t_syslog.h>
+#include "kernel_cfg.h"
+#include "test_rstr1.h"
+
+void
+task1(intptr_t exinf)
+{
+	ER		ercd;
+
+	check_point(1);
+	ercd = act_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_point(2);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_finish(21);
+
+	check_point(0);
+}
+
+void
+task2(intptr_t exinf)
+{
+	ER		ercd;
+	PRI		tskpri;
+
+	check_point(3);
+	ercd = get_pri(TSK_SELF, &tskpri);
+	check_ercd(ercd, E_OK);
+	check_assert(tskpri == MID_PRIORITY);
+
+	check_point(4);
+	ercd = ras_pri(HIGH_PRIORITY);
+	check_ercd(ercd, E_OK);
+
+	check_point(5);
+	ercd = get_pri(TSK_SELF, &tskpri);
+	check_ercd(ercd, E_OK);
+	check_assert(tskpri == HIGH_PRIORITY);
+
+	check_point(6);
+	ercd = act_tsk(TASK3);
+	check_ercd(ercd, E_OK);
+
+	check_point(7);
+	ercd = ras_pri(LOW_PRIORITY);
+	check_ercd(ercd, E_ILUSE);
+
+	check_point(8);
+	ercd = ras_pri(TPRI_INI);
+	check_ercd(ercd, E_OK);
+
+	check_point(11);
+	ercd = dis_dsp();
+	check_ercd(ercd, E_OK);
+
+	check_point(12);
+	ercd = wup_tsk(TASK3);
+	check_ercd(ercd, E_OK);
+
+	check_point(13);
+	ercd = ras_pri(HIGH_PRIORITY);
+	check_ercd(ercd, E_OK);
+
+	check_point(14);
+	ercd = ena_dsp();
+	check_ercd(ercd, E_OK);
+
+	check_point(15);
+	ercd = ras_pri(TPRI_INI);
+	check_ercd(ercd, E_OK);
+
+	check_point(17);
+	ercd = ras_pri(HIGH_PRIORITY);
+	check_ercd(ercd, E_OK);
+
+	check_point(18);
+	ercd = wup_tsk(TASK1);
+	check_ercd(ercd, E_OK);
+
+	check_point(19);
+	ercd = ras_pri(TPRI_INI);
+	check_ercd(ercd, E_OK);
+
+	check_point(20);
+	ercd = ext_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(0);
+}
+
+void
+task3(intptr_t exinf)
+{
+	ER		ercd;
+	PRI		tskpri;
+
+	check_point(9);
+	ercd = get_pri(TASK2, &tskpri);
+	check_ercd(ercd, E_OK);
+	check_assert(tskpri == MID_PRIORITY);
+
+	check_point(10);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(16);
+	ercd = chg_pri(TSK_SELF, LOW_PRIORITY);
+	check_ercd(ercd, E_OK);
+
+	check_point(0);
+}
Index: /asp_ewarm/asp-1.7.0/extension/rstr_task/test/test_rstr2.cfg
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/rstr_task/test/test_rstr2.cfg	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/rstr_task/test/test_rstr2.cfg	(revision 61)
@@ -0,0 +1,18 @@
+/*
+ *  $Id: test_rstr2.cfg 1887 2010-08-06 06:15:19Z ertl-hiro $
+ */
+
+/*
+ *  §ñ^XNÌeXg(2)ÌVXeRtBM
+[Vt@C
+ */
+INCLUDE("target_timer.cfg");
+INCLUDE("syssvc/syslog.cfg");
+INCLUDE("syssvc/banner.cfg");
+INCLUDE("syssvc/serial.cfg");
+
+#include "test_rstr2.h"
+
+CRE_TSK(TASK1, { TA_ACT, 1, task1, MID_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK2, { TA_RSTR, 2, task2, MID_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK3, { TA_NULL, 3, task3, HIGH_PRIORITY, STACK_SIZE, NULL });
Index: /asp_ewarm/asp-1.7.0/extension/rstr_task/test/test_rstr2.h
===================================================================
--- /asp_ewarm/asp-1.7.0/extension/rstr_task/test/test_rstr2.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/extension/rstr_task/test/test_rstr2.h	(revision 61)
@@ -0,0 +1,76 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  $Id: test_rstr2.h 1887 2010-08-06 06:15:19Z ertl-hiro $
+ */
+
+/* 
+ *		§ñ^XNÌeXg(2)
+ */
+
+/*
+ *  ^[QbgË¶Ìè`
+ */
+#include "target_test.h"
+
+/*
+ *  DæxÌè`
+ */
+#define HIGH_PRIORITY	4		/* Dæx */
+#define MID_PRIORITY	9		/* Dæx */
+#define LOW_PRIORITY	14		/* áDæx */
+
+/*
+ *  ^[QbgÉË¶·éÂ\«Ì éèÌè`
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ^XNÌX^bNTCY */
+#endif /* STACK_SIZE */
+
+/*
+ *  ÖÌvg^Cvé¾
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+extern void	task1(intptr_t exinf);
+extern void	task2(intptr_t exinf);
+extern void	task3(intptr_t exinf);
+
+#endif /* TOPPERS_MACRO_ONLY */
Index: /asp_ewarm/asp-1.7.0/include/histogram.h
===================================================================
--- /asp_ewarm/asp-1.7.0/include/histogram.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/include/histogram.h	(revision 61)
@@ -0,0 +1,80 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2006-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: histogram.h 1876 2010-07-29 16:27:57Z ertl-hiro $
+ */
+
+/*
+ *		ÀsÔªzWvW
+[
+ */
+
+#ifndef TOPPERS_HISTOGRAM_H
+#define TOPPERS_HISTOGRAM_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *  ÀsÔªzvªÌú»
+ */
+extern void	init_hist(ID histid, uint_t maxval, uint_t *hist);
+
+/*
+ *  ÀsÔvªÌJn
+ */
+extern void	begin_measure(ID histid);
+
+/*
+ *  ÀsÔvªÌI¹
+ */
+extern void	end_measure(ID histid);
+
+/*
+ *  ÀsÔªzvªÌ\¦
+ */
+extern void	print_hist(ID histid);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* TOPPERS_HISTOGRAM_H */
Index: /asp_ewarm/asp-1.7.0/include/itron.h
===================================================================
--- /asp_ewarm/asp-1.7.0/include/itron.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/include/itron.h	(revision 61)
@@ -0,0 +1,142 @@
+/*
+ *  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
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  $Id: itron.h 1762 2010-02-18 02:24:39Z ertl-hiro $
+ */
+
+/*
+ *		ITRONdl¤ÊKèÌf[^^EèE}N
+ *
+ *  ±Ìwb_t@CÍCITRONdl¤ÊKèÌf[^^EèE}NÌ
+ *  ÅCTOPPERS¤Êwb_t@CÉÜÜêÈ¢àÌÌè`ðÜÞDITRONd
+ *  lÆÌÝ·«ðKvÆ·éAvP[VªCN[h·é±Æðz
+ *  èµÄ¢éD
+ *
+ *  AZu¾êÌ\[Xt@C©ç±Ìt@CðCN[h·é
+ *  ÍCTOPPERS_MACRO_ONLYðè`µÄ¨­D±êÉæèC}Nè`ÈOð
+ *  ­æ¤ÉÈÁÄ¢éD
+ */
+
+#ifndef TOPPERS_ITRON_H
+#define TOPPERS_ITRON_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *  TOPPERS¤Êwb_t@C
+ */
+#include "t_stddef.h"
+
+/*
+ *  ITRONdl¤Êf[^^
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+#ifdef INT8_MAX
+typedef	int8_t			B;			/* t«8rbg® */
+#endif /* INT8_MAX */
+
+#ifdef UINT8_MAX
+typedef	uint8_t			UB;			/* ³µ8rbg® */
+typedef	uint8_t			VB;			/* ^ªèÜçÈ¢8rbgÌl */
+#endif /* UINT8_MAX */
+
+typedef	int16_t			H;			/* t«16rbg® */
+typedef	uint16_t		UH;			/* ³µ16rbg® */
+typedef	uint16_t		VH;			/* ^ªèÜçÈ¢16rbgÌl */
+
+typedef	int32_t			W;			/* t«32rbg® */
+typedef	uint32_t		UW;			/* ³µ32rbg® */
+typedef	uint32_t		VW;			/* ^ªèÜçÈ¢32rbgÌl */
+
+#ifdef INT64_MAX
+typedef	int64_t			D;			/* t«64rbg® */
+#endif /* INT64_MAX */
+
+#ifdef UINT64_MAX
+typedef	uint64_t		UD;			/* ³µ64rbg® */
+typedef	uint64_t		VD;			/* ^ªèÜçÈ¢64rbgÌl */
+#endif /* UINT64_MAX */
+
+typedef	void			*VP;		/* ^ªèÜçÈ¢àÌÖÌ|C^ */
+
+typedef int_t			INT;		/* ©RÈTCYÌt«® */
+typedef uint_t			UINT;		/* ©RÈTCYÌ³µ® */
+
+typedef bool_t			BOOL;		/* ^Ul */
+
+typedef	intptr_t		VP_INT;		/* |C^Ü½Ít«® */
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  ITRONdl¤Êè
+ */
+#define	TRUE		true			/* ^ */
+#define	FALSE		false			/* U */
+
+/*
+ *  IuWFNg®«Ìè`
+ */
+#define TA_HLNG			UINT_C(0x00)	/* ¾êpC^tF[X */
+#define TA_TFIFO		UINT_C(0x00)	/* ^XNÌÒ¿sñðFIFOÉ */
+#define TA_MFIFO		UINT_C(0x00)	/* bZ[WL
+[ðFIFOÉ */
+#define TA_WSGL			UINT_C(0x00)	/* Ò¿^XNÍ1ÂÌÝ */
+
+/*
+ *  lXgñÌÅål
+ */
+#define TMAX_SUSCNT		UINT_C(1)		/* ­§Ò¿vlXgÌÅål */
+
+/*
+ *  ­§Ò¿óÔ©çÌ­§ÄJ
+ */
+#define frsm_tsk(tskid)		rsm_tsk(tskid)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* TOPPERS_ITRON_H */
Index: /asp_ewarm/asp-1.7.0/include/kernel.h
===================================================================
--- /asp_ewarm/asp-1.7.0/include/kernel.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/include/kernel.h	(revision 61)
@@ -0,0 +1,521 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: kernel.h 1959 2010-11-20 02:17:27Z ertl-hiro $
+ */
+
+/*
+ *		TOPPERS/ASPJ[l Wwb_t@C
+ *
+ *  TOPPERS/ASPJ[lªT|[g·éT[rXR[Ìé¾ÆCKvÈf[
+ *  ^^CèC}NÌè`ðÜÞwb_t@CD
+ *
+ *  AZu¾êÌ\[Xt@C©ç±Ìt@CðCN[h·é
+ *  ÍCTOPPERS_MACRO_ONLYðè`µÄ¨­D±êÉæèC}Nè`ÈOð
+ *  ­æ¤ÉÈÁÄ¢éD
+ *
+ *  ±Ìt@CðCN[h·éOÉCN[hµÄ¨­×«t@C
+ *  ÍÈ¢D
+ */
+
+#ifndef TOPPERS_KERNEL_H
+#define TOPPERS_KERNEL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *	TOPPERS¤ÊÌf[^^EèE}N
+ */
+#include <t_stddef.h>
+
+/*
+ *  ^[QbgË¶
+ */
+#include "target_kernel.h"
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  f[^^Ìè`
+ */
+
+/*
+ *  rbgp^[âIuWFNgÔÌ^è`
+ */
+typedef	uint_t		TEXPTN;		/* ^XNáOvöÌrbgp^[ */
+typedef	uint_t		FLGPTN;		/* CxgtOÌrbgp^[ */
+typedef	uint_t		INTNO;		/* ÝÔ */
+typedef	uint_t		INHNO;		/* ÝnhÔ */
+typedef	uint_t		EXCNO;		/* CPUáOnhÔ */
+
+/*
+ *  PÊÌ^è`
+ */
+typedef void	(*TASK)(intptr_t exinf);
+typedef void	(*TEXRTN)(TEXPTN texptn, intptr_t exinf);
+typedef void	(*CYCHDR)(intptr_t exinf);
+typedef void	(*ALMHDR)(intptr_t exinf);
+typedef void	(*ISR)(intptr_t exinf);
+typedef void	(*INTHDR)(void);
+typedef void	(*EXCHDR)(void *p_excinf);
+typedef void	(*INIRTN)(intptr_t exinf);
+typedef void	(*TERRTN)(intptr_t exinf);
+
+/*
+ *  ÌæmÛÌ½ßÌ^è`
+ */
+#ifndef TOPPERS_STK_T
+#define TOPPERS_STK_T	intptr_t
+#endif /* TOPPERS_STK_T */
+typedef	TOPPERS_STK_T	STK_T;	/* X^bNÌæðmÛ·é½ßÌ^ */
+
+#ifndef TOPPERS_MPF_T
+#define TOPPERS_MPF_T	intptr_t
+#endif /* TOPPERS_MPF_T */
+typedef	TOPPERS_MPF_T	MPF_T;	/* Åè·v[ÌæðmÛ·é½ßÌ^ */
+
+/*
+ *  bZ[Wwb_Ì^è`
+ */
+typedef	struct t_msg {			/* [{bNXÌbZ[Wwb_ */
+	struct t_msg	*pk_next;
+} T_MSG;
+
+typedef	struct t_msg_pri {		/* Dæxt«bZ[Wwb_ */
+	T_MSG	msgque;				/* bZ[Wwb_ */
+	PRI		msgpri;				/* bZ[WDæx */
+} T_MSG_PRI;
+
+/*
+ *  pPbg`®Ìè`
+ */
+typedef struct t_rtsk {
+	STAT	tskstat;	/* ^XNóÔ */
+	PRI		tskpri;		/* ^XNÌ»ÝDæx */
+	PRI		tskbpri;	/* ^XNÌx[XDæx */
+	STAT	tskwait;	/* Ò¿vö */
+	ID		wobjid;		/* Ò¿ÎÛÌIuWFNgÌID */
+	TMO		lefttmo;	/* ^CAEg·éÜÅÌÔ */
+	uint_t	actcnt;		/* N®vL
+[CO */
+	uint_t	wupcnt;		/* N°vL
+[CO */
+} T_RTSK;
+
+typedef struct t_rtex {
+	STAT	texstat;	/* ^XNáOÌóÔ */
+	TEXPTN	pndptn;		/* Û¯áOvö */
+} T_RTEX;
+
+typedef struct t_rsem {
+	ID		wtskid;		/* Z}tHÌÒ¿sñÌæªÌ^XNÌIDÔ */
+	uint_t	semcnt;		/* Z}tHÌ»ÝÌ¹ */
+} T_RSEM;
+
+typedef struct t_rflg {
+	ID		wtskid;		/* CxgtOÌÒ¿sñÌæªÌ^XNÌIDÔ */
+	FLGPTN	flgptn;		/* CxgtOÌ»ÝÌrbgp^[ */
+} T_RFLG;
+
+typedef struct t_rdtq {
+	ID		stskid;		/* f[^L
+[ÌMÒ¿sñÌæªÌ^XNÌIDÔ */
+	ID		rtskid;		/* f[^L
+[ÌóMÒ¿sñÌæªÌ^XNÌIDÔ */
+	uint_t	sdtqcnt;	/* f[^L
+[ÇÌæÉi[³êÄ¢éf[^Ì */
+} T_RDTQ;
+
+typedef struct t_rpdq {
+	ID		stskid;		/* Dæxf[^L
+[ÌMÒ¿sñÌæªÌ^XN
+						   ÌIDÔ */
+	ID		rtskid;		/* Dæxf[^L
+[ÌóMÒ¿sñÌæªÌ^XN
+						   ÌIDÔ */
+	uint_t	spdqcnt;	/* Dæxf[^L
+[ÇÌæÉi[³êÄ¢éf[
+						   ^Ì */
+} T_RPDQ;
+
+typedef struct t_rmbx {
+	ID		wtskid;		/* [{bNXÌÒ¿sñÌæªÌ^XNÌIDÔ */
+	T_MSG	*pk_msg;	/* bZ[WL
+[ÌæªÉÂÈªê½bZ[W
+						   ÌæªÔn */
+} T_RMBX;
+
+typedef struct t_rmpf {
+	ID		wtskid;		/* Åè·v[ÌÒ¿sñÌæªÌ^XNÌ
+						   IDÔ */
+	uint_t	fblkcnt;	/* Åè·v[ÌæÌó«ÌæÉè
+						   t¯é±ÆªÅ«éÅè·ubNÌ */
+} T_RMPF;
+
+typedef struct t_rcyc {
+	STAT	cycstat;	/* üúnhÌ®ìóÔ */
+	RELTIM	lefttim;	/* ÉüúnhðN®·éÜÅÌÎÔ */
+} T_RCYC;
+
+typedef struct t_ralm {
+	STAT	almstat;	/* A[nhÌ®ìóÔ */
+	RELTIM	lefttim;	/* A[nhðN®·éÜÅÌÎÔ */
+} T_RALM;
+
+/*
+ *  T[rXR[Ìé¾
+ */
+
+/*
+ *  ^XNÇ@\
+ */
+extern ER		act_tsk(ID tskid) throw();
+extern ER		iact_tsk(ID tskid) throw();
+extern ER_UINT	can_act(ID tskid) throw();
+extern ER		ext_tsk(void) throw();
+extern ER		ter_tsk(ID tskid) throw();
+extern ER		chg_pri(ID tskid, PRI tskpri) throw();
+extern ER		get_pri(ID tskid, PRI *p_tskpri) throw();
+extern ER		get_inf(intptr_t *p_exinf) throw();
+extern ER		ref_tsk(ID tskid, T_RTSK *pk_rtsk) throw();
+
+/*
+ *  ^XNt®¯ú@\
+ */
+extern ER		slp_tsk(void) throw();
+extern ER		tslp_tsk(TMO tmout) throw();
+extern ER		wup_tsk(ID tskid) throw();
+extern ER		iwup_tsk(ID tskid) throw();
+extern ER_UINT	can_wup(ID tskid) throw();
+extern ER		rel_wai(ID tskid) throw();
+extern ER		irel_wai(ID tskid) throw();
+extern ER		sus_tsk(ID tskid) throw();
+extern ER		rsm_tsk(ID tskid) throw();
+extern ER		dly_tsk(RELTIM dlytim) throw();
+
+/*
+ *  ^XNáO@\
+ */
+extern ER		ras_tex(ID tskid, TEXPTN rasptn) throw();
+extern ER		iras_tex(ID tskid, TEXPTN rasptn) throw();
+extern ER		dis_tex(void) throw();
+extern ER		ena_tex(void) throw();
+extern bool_t	sns_tex(void) throw();
+extern ER		ref_tex(ID tskid, T_RTEX *pk_rtex) throw();
+
+/*
+ *  ¯úEÊM@\
+ */
+extern ER		sig_sem(ID semid) throw();
+extern ER		isig_sem(ID semid) throw();
+extern ER		wai_sem(ID semid) throw();
+extern ER		pol_sem(ID semid) throw();
+extern ER		twai_sem(ID semid, TMO tmout) throw();
+extern ER		ini_sem(ID semid) throw();
+extern ER		ref_sem(ID semid, T_RSEM *pk_rsem) throw();
+
+extern ER		set_flg(ID flgid, FLGPTN setptn) throw();
+extern ER		iset_flg(ID flgid, FLGPTN setptn) throw();
+extern ER		clr_flg(ID flgid, FLGPTN clrptn) throw();
+extern ER		wai_flg(ID flgid, FLGPTN waiptn,
+						MODE wfmode, FLGPTN *p_flgptn) throw();
+extern ER		pol_flg(ID flgid, FLGPTN waiptn,
+						MODE wfmode, FLGPTN *p_flgptn) throw();
+extern ER		twai_flg(ID flgid, FLGPTN waiptn,
+						MODE wfmode, FLGPTN *p_flgptn, TMO tmout) throw();
+extern ER		ini_flg(ID flgid) throw();
+extern ER		ref_flg(ID flgid, T_RFLG *pk_rflg) throw();
+
+extern ER		snd_dtq(ID dtqid, intptr_t data) throw();
+extern ER		psnd_dtq(ID dtqid, intptr_t data) throw();
+extern ER		ipsnd_dtq(ID dtqid, intptr_t data) throw();
+extern ER		tsnd_dtq(ID dtqid, intptr_t data, TMO tmout) throw();
+extern ER		fsnd_dtq(ID dtqid, intptr_t data) throw();
+extern ER		ifsnd_dtq(ID dtqid, intptr_t data) throw();
+extern ER		rcv_dtq(ID dtqid, intptr_t *p_data) throw();
+extern ER		prcv_dtq(ID dtqid, intptr_t *p_data) throw();
+extern ER		trcv_dtq(ID dtqid, intptr_t *p_data, TMO tmout) throw();
+extern ER		ini_dtq(ID dtqid) throw();
+extern ER		ref_dtq(ID dtqid, T_RDTQ *pk_rdtq) throw();
+
+extern ER		snd_pdq(ID pdqid, intptr_t data, PRI datapri) throw();
+extern ER		psnd_pdq(ID pdqid, intptr_t data, PRI datapri) throw();
+extern ER		ipsnd_pdq(ID pdqid, intptr_t data, PRI datapri) throw();
+extern ER		tsnd_pdq(ID pdqid, intptr_t data,
+										PRI datapri, TMO tmout) throw();
+extern ER		rcv_pdq(ID pdqid, intptr_t *p_data, PRI *p_datapri) throw();
+extern ER		prcv_pdq(ID pdqid, intptr_t *p_data, PRI *p_datapri) throw();
+extern ER		trcv_pdq(ID pdqid, intptr_t *p_data,
+										PRI *p_datapri, TMO tmout) throw();
+extern ER		ini_pdq(ID pdqid) throw();
+extern ER		ref_pdq(ID pdqid, T_RPDQ *pk_rpdq) throw();
+
+extern ER		snd_mbx(ID mbxid, T_MSG *pk_msg) throw();
+extern ER		rcv_mbx(ID mbxid, T_MSG **ppk_msg) throw();
+extern ER		prcv_mbx(ID mbxid, T_MSG **ppk_msg) throw();
+extern ER		trcv_mbx(ID mbxid, T_MSG **ppk_msg, TMO tmout) throw();
+extern ER		ini_mbx(ID mbxid) throw();
+extern ER		ref_mbx(ID mbxid, T_RMBX *pk_rmbx) throw();
+
+/*
+ *  v[Ç@\
+ */
+extern ER		get_mpf(ID mpfid, void **p_blk) throw();
+extern ER		pget_mpf(ID mpfid, void **p_blk) throw();
+extern ER		tget_mpf(ID mpfid, void **p_blk, TMO tmout) throw();
+extern ER		rel_mpf(ID mpfid, void *blk) throw();
+extern ER		ini_mpf(ID mpfid) throw();
+extern ER		ref_mpf(ID mpfid, T_RMPF *pk_rmpf) throw();
+
+/*
+ *  ÔÇ@\
+ */
+extern ER		get_tim(SYSTIM *p_systim) throw();
+extern ER		get_utm(SYSUTM *p_sysutm) throw();
+
+extern ER		sta_cyc(ID cycid) throw();
+extern ER		stp_cyc(ID cycid) throw();
+extern ER		ref_cyc(ID cycid, T_RCYC *pk_rcyc) throw();
+
+extern ER		sta_alm(ID almid, RELTIM almtim) throw();
+extern ER		ista_alm(ID almid, RELTIM almtim) throw();
+extern ER		stp_alm(ID almid) throw();
+extern ER		istp_alm(ID almid) throw();
+extern ER		ref_alm(ID almid, T_RALM *pk_ralm) throw();
+
+/*
+ *  VXeóÔÇ@\
+ */
+extern ER		rot_rdq(PRI tskpri) throw();
+extern ER		irot_rdq(PRI tskpri) throw();
+extern ER		get_tid(ID *p_tskid) throw();
+extern ER		iget_tid(ID *p_tskid) throw();
+extern ER		loc_cpu(void) throw();
+extern ER		iloc_cpu(void) throw();
+extern ER		unl_cpu(void) throw();
+extern ER		iunl_cpu(void) throw();
+extern ER		dis_dsp(void) throw();
+extern ER		ena_dsp(void) throw();
+extern bool_t	sns_ctx(void) throw();
+extern bool_t	sns_loc(void) throw();
+extern bool_t	sns_dsp(void) throw();
+extern bool_t	sns_dpn(void) throw();
+extern bool_t	sns_ker(void) throw();
+extern ER		ext_ker(void) throw();
+
+/*
+ *  ÝÇ@\
+ */
+extern ER		dis_int(INTNO intno) throw();
+extern ER		ena_int(INTNO intno) throw();
+extern ER		chg_ipm(PRI intpri) throw();
+extern ER		get_ipm(PRI *p_intpri) throw();
+
+/*
+ *  CPUáOÇ@\
+ */
+extern bool_t	xsns_dpn(void *p_excinf) throw();
+extern bool_t	xsns_xpn(void *p_excinf) throw();
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  IuWFNg®«Ìè`
+ */
+#define TA_ACT			UINT_C(0x02)	/* ^XNðN®³ê½óÔÅ¶¬ */
+
+#define TA_TPRI			UINT_C(0x01)	/* ^XNÌÒ¿sñðDæxÉ */
+#define TA_MPRI			UINT_C(0x02)	/* bZ[WL
+[ðDæxÉ */
+
+#define TA_WMUL			UINT_C(0x02)	/* ¡ÌÒ¿^XN */
+#define TA_CLR			UINT_C(0x04)	/* CxgtOÌNAwè */
+
+#define TA_STA			UINT_C(0x02)	/* üúnhð®ìóÔÅ¶¬ */
+
+#define TA_NONKERNEL	UINT_C(0x02)	/* J[lÇOÌÝ */
+
+#define TA_ENAINT		UINT_C(0x01)	/* ÝvÖ~tOðNA */
+#define TA_EDGE			UINT_C(0x02)	/* GbWgK */
+
+/*
+ *  T[rXR[Ì®ì[hÌè`
+ */
+#define TWF_ORW			UINT_C(0x01)	/* CxgtOÌORÒ¿ */
+#define TWF_ANDW		UINT_C(0x02)	/* CxgtOÌANDÒ¿ */
+
+/*
+ *  IuWFNgÌóÔÌè`
+ */
+#define TTS_RUN			UINT_C(0x01)	/* ÀsóÔ */
+#define TTS_RDY			UINT_C(0x02)	/* ÀsÂ\óÔ */
+#define TTS_WAI			UINT_C(0x04)	/* Ò¿óÔ */
+#define TTS_SUS			UINT_C(0x08)	/* ­§Ò¿óÔ */
+#define TTS_WAS			UINT_C(0x0c)	/* ñdÒ¿óÔ */
+#define TTS_DMT			UINT_C(0x10)	/* x~óÔ */
+
+#define TTW_SLP			UINT_C(0x0001)	/* N°Ò¿ */
+#define TTW_DLY			UINT_C(0x0002)	/* ÔoßÒ¿ */
+#define TTW_SEM			UINT_C(0x0004)	/* Z}tHÌ¹l¾Ò¿ */
+#define TTW_FLG			UINT_C(0x0008)	/* CxgtOÒ¿ */
+#define TTW_SDTQ		UINT_C(0x0010)	/* f[^L
+[ÖÌMÒ¿ */
+#define TTW_RDTQ		UINT_C(0x0020)	/* f[^L
+[©çÌóMÒ¿ */
+#define TTW_SPDQ		UINT_C(0x0100)	/* Dæxf[^L
+[ÖÌMÒ¿ */
+#define TTW_RPDQ		UINT_C(0x0200)	/* Dæxf[^L
+[©çÌóMÒ¿ */
+#define TTW_MBX			UINT_C(0x0040)	/* [{bNX©çÌóMÒ¿ */
+#define TTW_MPF			UINT_C(0x2000)	/* Åè·ubNÌl¾Ò¿ */
+
+#define TTEX_ENA		UINT_C(0x01)	/* ^XNáOÂóÔ */
+#define TTEX_DIS		UINT_C(0x02)	/* ^XNáOÖ~óÔ */
+
+#define TCYC_STP		UINT_C(0x01)	/* üúnhª®ìµÄ¢È¢ */
+#define TCYC_STA		UINT_C(0x02)	/* üúnhª®ìµÄ¢é */
+
+#define TALM_STP		UINT_C(0x01)	/* A[nhª®ìµÄ¢È¢ */
+#define TALM_STA		UINT_C(0x02)	/* A[nhª®ìµÄ¢é */
+
+/*
+ *  »Ì¼ÌèÌè`
+ */
+#define TSK_SELF		0			/* ©^XNwè */
+#define TSK_NONE		0			/* Y·é^XNªÈ¢ */
+
+#define TPRI_SELF		0			/* ©^XNÌx[XDæx */
+#define TPRI_INI		0			/* ^XNÌN®Dæx */
+
+#define TIPM_ENAALL		0			/* ÝDæx}XNSð */
+
+/*
+ *  \¬èÆ}N
+ */
+
+/*
+ *  T|[g·é@\
+ */
+#ifdef TOPPERS_TARGET_SUPPORT_DIS_INT
+#define TOPPERS_SUPPORT_DIS_INT			/* dis_intªT|[g³êÄ¢é */
+#endif /* TOPPERS_TARGET_SUPPORT_DIS_INT */
+
+#ifdef TOPPERS_TARGET_SUPPORT_ENA_INT
+#define TOPPERS_SUPPORT_ENA_INT			/* ena_intªT|[g³êÄ¢é */
+#endif /* TOPPERS_TARGET_SUPPORT_ENA_INT */
+
+#ifdef TOPPERS_TARGET_SUPPORT_GET_UTM
+#define TOPPERS_SUPPORT_GET_UTM			/* get_utmªT|[g³êÄ¢é */
+#endif /* TOPPERS_TARGET_SUPPORT_GET_UTM */
+
+/*
+ *  DæxÌÍÍ
+ */
+#define TMIN_TPRI		1			/* ^XNDæxÌÅ¬liÅlj*/
+#define TMAX_TPRI		16			/* ^XNDæxÌÅåliÅálj*/
+#define TMIN_DPRI		1			/* f[^DæxÌÅ¬liÅlj*/
+#define TMAX_DPRI		16			/* f[^DæxÌÅåliÅálj*/
+#define TMIN_MPRI		1			/* bZ[WDæxÌÅ¬liÅlj*/
+#define TMAX_MPRI		16			/* bZ[WDæxÌÅåliÅálj*/
+#define TMIN_ISRPRI		1			/* ÝT[rX[`DæxÌÅ¬l */
+#define TMAX_ISRPRI		16			/* ÝT[rX[`DæxÌÅål */
+
+/*
+ *  o[Wîñ
+ */
+#define TKERNEL_MAKER	UINT_C(0x0118)	/* J[lÌ[J[R[h */
+#define TKERNEL_PRID	UINT_C(0x0007)	/* J[lÌ¯ÊÔ */
+#define TKERNEL_SPVER	UINT_C(0xf513)	/* J[ldlÌo[WÔ */
+#define TKERNEL_PRVER	UINT_C(0x1070)	/* J[lÌo[WÔ */
+
+/*
+ *  L
+[COñÌÅål
+ */
+#define TMAX_ACTCNT		UINT_C(1)		/* N®vL
+[COÌÅål */
+#define TMAX_WUPCNT		UINT_C(1)		/* N°vL
+[COÌÅål */
+
+/*
+ *  rbgp^[Ìrbg
+ */
+#ifndef TBIT_TEXPTN					/* ^XNáOvöÌrbg */
+#define TBIT_TEXPTN		(sizeof(TEXPTN) * CHAR_BIT)
+#endif /* TBIT_TEXPTN */
+
+#ifndef TBIT_FLGPTN					/* CxgtOÌrbg */
+#define TBIT_FLGPTN		(sizeof(FLGPTN) * CHAR_BIT)
+#endif /* TBIT_FLGPTN */
+
+/*
+ *  ÌæmÛÌ½ßÌ}N
+ *
+ *  ÈºÌTOPPERS_COUNT_SZÆTOPPERS_ROUND_SZÌè`ÍCunitª2ÌÐæÅ 
+ *  é±Æð¼èµÄ¢éD
+ */
+#ifndef TOPPERS_COUNT_SZ
+#define TOPPERS_COUNT_SZ(sz, unit)	(((sz) + (unit) - 1) / (unit))
+#endif /* TOPPERS_COUNT_SZ */
+#ifndef TOPPERS_ROUND_SZ
+#define TOPPERS_ROUND_SZ(sz, unit)	(((sz) + (unit) - 1) & ~((unit) - 1))
+#endif /* TOPPERS_ROUND_SZ */
+
+#define COUNT_STK_T(sz)		TOPPERS_COUNT_SZ(sz, sizeof(STK_T))
+#define ROUND_STK_T(sz)		TOPPERS_ROUND_SZ(sz, sizeof(STK_T))
+
+#define COUNT_MPF_T(blksz)	TOPPERS_COUNT_SZ(blksz, sizeof(MPF_T))
+#define ROUND_MPF_T(blksz)	TOPPERS_ROUND_SZ(blksz, sizeof(MPF_T))
+
+/*
+ *  »Ì¼Ì\¬è
+ */
+#define TMAX_MAXSEM		UINT_MAX	/* Z}tHÌÅå¹ÌÅål */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* TOPPERS_KERNEL_H */
Index: /asp_ewarm/asp-1.7.0/include/log_output.h
===================================================================
--- /asp_ewarm/asp-1.7.0/include/log_output.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/include/log_output.h	(revision 61)
@@ -0,0 +1,88 @@
+/*
+ *  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
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: log_output.h 1176 2008-07-01 10:24:46Z ertl-hiro $
+ */
+
+/*
+ *		VXeOÌtH[}bgoÍ
+ */
+
+#ifndef TOPPERS_LOG_OUTPUT_H
+#define TOPPERS_LOG_OUTPUT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <t_syslog.h>
+
+/*
+ *  ¶ñ®`oÍ
+ *
+ *  formatÅwè³êétH[}bgLqÆp_argsÅwè³êéøñ©çì
+ *  ¬µ½bZ[WðC1¶oÍÖputcðp¢ÄoÍ·éD
+ */
+extern void	syslog_printf(const char *format, const intptr_t *p_args,
+										void (*putc)(char_t)) throw();
+
+/*
+ *  OîñÌoÍ
+ *
+ *  p_syslogÅwè³êéOîñð¶ñÉ®`µC1¶oÍÖputcðp
+ *  ¢ÄoÍ·éD
+ */
+extern void	syslog_print(const SYSLOG *p_syslog, void (*putc)(char_t)) throw();
+
+/*
+ *  Oîñr¸bZ[W¶ñ
+ *
+ *  lostÂÌOîñª¸íê½|ÌbZ[WðC1¶oÍÖputcðp¢
+ *  ÄoÍ·éD
+ */
+extern void	syslog_lostmsg(uint_t lost, void (*putc)(char_t)) throw();
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* TOPPERS_LOG_OUTPUT_H */
Index: /asp_ewarm/asp-1.7.0/include/queue.h
===================================================================
--- /asp_ewarm/asp-1.7.0/include/queue.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/include/queue.h	(revision 61)
@@ -0,0 +1,193 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2000 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2006-2009 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: queue.h 1549 2009-05-10 15:21:52Z ertl-hiro $
+ */
+
+/*
+ *		L
+[ìCu
+ *
+ *  ±ÌL
+[ìCuÅÍCL
+[wb_ðÜÞO\¢Ì_u
+ *  NL
+[ðµ¤DïÌIÉÍCL
+[wb_ÌGgÍL
+[Ì
+ *  æªÌGgCOGgÍL
+[ÌöÌGgÆ·éDÜ½CL
+ *  
+[ÌæªÌGgÌOGgÆCL
+[ÌöÌGgÌG
+ *  gÍCL
+[wb_Æ·éDóÌL
+[ÍCGgCOGgÆ
+ *  à©ª©gðw·L
+[wb_Å çí·D
+ */
+
+#ifndef	TOPPERS_QUEUE_H
+#define	TOPPERS_QUEUE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *  L
+[Ìf[^\¢Ìè`
+ */
+typedef struct queue {
+	struct queue *p_next;		/* GgÖÌ|C^ */
+	struct queue *p_prev;		/* OGgÖÌ|C^ */
+} QUEUE;
+
+/*
+ *  L
+[Ìú»
+ *
+ *  p_queueÉÍL
+[wb_ðwè·éD
+ */
+Inline void
+queue_initialize(QUEUE *p_queue)
+{
+	p_queue->p_prev = p_queue->p_next = p_queue;
+}
+
+/*
+ *  L
+[ÌOGgÖÌ}ü
+ *
+ *  p_queueÌOÉp_entryð}ü·éDp_queueÉL
+[wb_ðwèµ½ê
+ *  ÉÍCL
+[ÌöÉp_entryð}ü·é±ÆÉÈéD
+ */
+Inline void
+queue_insert_prev(QUEUE *p_queue, QUEUE *p_entry)
+{
+	p_entry->p_prev = p_queue->p_prev;
+	p_entry->p_next = p_queue;
+	p_queue->p_prev->p_next = p_entry;
+	p_queue->p_prev = p_entry;
+}
+
+/*
+ *  L
+[ÌGgÖÌ}ü
+ *
+ *  p_queueÌÉp_entryð}ü·éDp_queueÉL
+[wb_ðwèµ½ê
+ *  ÉÍCL
+[ÌæªÉp_entryð}ü·é±ÆÉÈéD
+ */
+Inline void
+queue_insert_next(QUEUE *p_queue, QUEUE *p_entry)
+{
+	p_entry->p_prev = p_queue;
+	p_entry->p_next = p_queue->p_next;
+	p_queue->p_next->p_prev = p_entry;
+	p_queue->p_next = p_entry;
+}
+
+/*
+ *  GgÌí
+ *
+ *  p_entryðL
+[©çí·éD
+ */
+Inline void
+queue_delete(QUEUE *p_entry)
+{
+	p_entry->p_prev->p_next = p_entry->p_next;
+	p_entry->p_next->p_prev = p_entry->p_prev;
+}
+
+/*
+ *  L
+[ÌGgÌæoµ
+ *
+ *  p_queueÌGgðL
+[©çíµCíµ½GgðÔ·D
+ *  p_queueÉL
+[wb_ðwèµ½êÉÍCL
+[ÌæªÌGgð
+ *  æèo·±ÆÉÈéDp_queueÉóÌL
+[ðwèµÄÄÑoµÄÍÈç
+ *  È¢D
+ */
+Inline QUEUE *
+queue_delete_next(QUEUE *p_queue)
+{
+	QUEUE	*p_entry;
+
+	assert(p_queue->p_next != p_queue);
+	p_entry = p_queue->p_next;
+	p_queue->p_next = p_entry->p_next;
+	p_entry->p_next->p_prev = p_queue;
+	return(p_entry);
+}
+
+/*
+ *  L
+[ªó©Ç¤©Ì`FbN
+ *
+ *  p_queueÉÍL
+[wb_ðwè·éD
+ */
+Inline bool_t
+queue_empty(QUEUE *p_queue)
+{
+	if (p_queue->p_next == p_queue) {
+		assert(p_queue->p_prev == p_queue);
+		return(true);
+	}
+	return(false);
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* TOPPERS_QUEUE_H */
Index: /asp_ewarm/asp-1.7.0/include/sil.h
===================================================================
--- /asp_ewarm/asp-1.7.0/include/sil.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/include/sil.h	(revision 61)
@@ -0,0 +1,291 @@
+/*
+ *  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-2011 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: sil.h 2037 2011-03-06 07:56:49Z ertl-hiro $
+ */
+
+/*
+ *		VXeC^tF[XC
+ *
+ *  VXeC^tF[XCÌT[rXR[Ìè`Eé¾Æ}NÈ
+ *  ÇÌè`ðÜÞwb_t@CD
+ *
+ *  AZu¾êÌ\[Xt@C©ç±Ìt@CðCN[h·é
+ *  ÍCTOPPERS_MACRO_ONLYðè`µÄ¨­±ÆÅC}Nè`ÈOÌLqð
+ *  ­±ÆªÅ«éD
+ *
+ *  ±Ìt@CðCN[h·éOÉCN[hµÄ¨­×«t@C
+ *  ÍÈ¢D
+ */
+
+#ifndef TOPPERS_SIL_H
+#define TOPPERS_SIL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *	TOPPERS¤ÊÌf[^^EèE}N
+ */
+#include <t_stddef.h>
+
+/*
+ *  ^[QbgË¶
+ */
+#include "target_sil.h"
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  SÝbNóÔÌ§ä
+ *
+ *  SIL_PRE_LOCCSIL_LOC_INT()CSIL_UNL_INT()ÍC^[QbgË¶Åp
+ *  Ó·éDftHgÌè`ÍpÓµÄ¢È¢D
+ */
+
+/*
+ *  ÷­ÔÒ¿
+ */
+extern void	sil_dly_nse(ulong_t dlytim) throw();
+
+/*
+ *  GfBAÌ½]
+ */
+#ifndef TOPPERS_SIL_REV_ENDIAN_UINT16
+#define	TOPPERS_SIL_REV_ENDIAN_UINT16(data) \
+				((((data) & 0xff) << 8) | (((data) >> 8) & 0xff))
+#endif /* TOPPERS_SIL_REV_ENDIAN_UINT16 */
+
+#ifndef TOPPERS_SIL_REV_ENDIAN_UINT32
+#define	TOPPERS_SIL_REV_ENDIAN_UINT32(data) \
+				((((data) & 0xff) << 24) | (((data) & 0xff00) << 8) \
+					| (((data) >> 8) & 0xff00) | (((data) >> 24) & 0xff))
+#endif /* TOPPERS_SIL_REV_ENDIAN_UINT32 */
+
+/*
+ *  óÔANZXÖ
+ */
+#ifndef TOPPERS_OMIT_SIL_ACCESS
+
+/*
+ *  8rbgPÊÌÇoµ^Ý
+ */
+#ifdef UINT8_MAX
+
+Inline uint8_t
+sil_reb_mem(uint8_t *mem)
+{
+	uint8_t	data;
+
+	data = *((volatile uint8_t *) mem);
+	return(data);
+}
+
+Inline void
+sil_wrb_mem(uint8_t *mem, uint8_t data)
+{
+	*((volatile uint8_t *) mem) = data;
+}
+
+#endif /* UINT8_MAX */
+
+/*
+ *  16rbgPÊÌÇoµ^Ý
+ */
+
+Inline uint16_t
+sil_reh_mem(uint16_t *mem)
+{
+	uint16_t	data;
+
+	data = *((volatile uint16_t *) mem);
+	return(data);
+}
+
+Inline void
+sil_wrh_mem(uint16_t *mem, uint16_t data)
+{
+	*((volatile uint16_t *) mem) = data;
+}
+
+#ifdef SIL_ENDIAN_BIG			/* rbOGfBAvZbT */
+
+#define	sil_reh_bem(mem)		sil_reh_mem(mem)
+#define	sil_wrh_bem(mem, data)	sil_wrh_mem(mem, data)
+
+#ifndef TOPPERS_OMIT_SIL_REH_LEM
+
+Inline uint16_t
+sil_reh_lem(uint16_t *mem)
+{
+	uint16_t	data;
+
+	data = *((volatile uint16_t *) mem);
+	return(TOPPERS_SIL_REV_ENDIAN_UINT16(data));
+}
+
+#endif /* TOPPERS_OMIT_SIL_REH_LEM */
+#ifndef TOPPERS_OMIT_SIL_WRH_LEM
+
+Inline void
+sil_wrh_lem(uint16_t *mem, uint16_t data)
+{
+	*((volatile uint16_t *) mem) = TOPPERS_SIL_REV_ENDIAN_UINT16(data);
+}
+
+#endif /* TOPPERS_OMIT_SIL_WRH_LEM */
+#else /* SIL_ENDIAN_BIG */
+#ifdef SIL_ENDIAN_LITTLE		/* gGfBAvZbT */
+
+#define	sil_reh_lem(mem)		sil_reh_mem(mem)
+#define	sil_wrh_lem(mem, data)	sil_wrh_mem(mem, data)
+
+#ifndef TOPPERS_OMIT_SIL_REH_BEM
+
+Inline uint16_t
+sil_reh_bem(uint16_t *mem)
+{
+	uint16_t	data;
+
+	data = *((volatile uint16_t *) mem);
+	return(TOPPERS_SIL_REV_ENDIAN_UINT16(data));
+}
+
+#endif /* TOPPERS_OMIT_SIL_REH_BEM */
+#ifndef TOPPERS_OMIT_SIL_WRH_BEM
+
+Inline void
+sil_wrh_bem(uint16_t *mem, uint16_t data)
+{
+	*((volatile uint16_t *) mem) = TOPPERS_SIL_REV_ENDIAN_UINT16(data);
+}
+
+#endif /* TOPPERS_OMIT_SIL_WRH_BEM */
+#else /* SIL_ENDIAN_LITTLE */
+
+#error Neither SIL_ENDIAN_BIG nor SIL_ENDIAN_LITTLE is defined.
+
+#endif /* SIL_ENDIAN_LITTLE */
+#endif /* SIL_ENDIAN_BIG */
+
+/*
+ *  32rbgPÊÌÇoµ^Ý
+ */
+
+Inline uint32_t
+sil_rew_mem(uint32_t *mem)
+{
+	uint32_t	data;
+
+	data = *((volatile uint32_t *) mem);
+	return(data);
+}
+
+Inline void
+sil_wrw_mem(uint32_t *mem, uint32_t data)
+{
+	*((volatile uint32_t *) mem) = data;
+}
+
+#ifdef SIL_ENDIAN_BIG			/* rbOGfBAvZbT */
+
+#define	sil_rew_bem(mem)		sil_rew_mem(mem)
+#define	sil_wrw_bem(mem, data)	sil_wrw_mem(mem, data)
+
+#ifndef TOPPERS_OMIT_SIL_REW_LEM
+
+Inline uint32_t
+sil_rew_lem(uint32_t *mem)
+{
+	uint32_t	data;
+
+	data = *((volatile uint32_t *) mem);
+	return(TOPPERS_SIL_REV_ENDIAN_UINT32(data));
+}
+
+#endif /* TOPPERS_OMIT_SIL_REW_LEM */
+#ifndef TOPPERS_OMIT_SIL_WRW_LEM
+
+Inline void
+sil_wrw_lem(uint32_t *mem, uint32_t data)
+{
+	*((volatile uint32_t *) mem) = TOPPERS_SIL_REV_ENDIAN_UINT32(data);
+}
+
+#endif /* TOPPERS_OMIT_SIL_WRW_LEM */
+#else /* SIL_ENDIAN_BIG */		/* gGfBAvZbT */
+
+#define	sil_rew_lem(mem)		sil_rew_mem(mem)
+#define	sil_wrw_lem(mem, data)	sil_wrw_mem(mem, data)
+
+#ifndef TOPPERS_OMIT_SIL_REW_BEM
+
+Inline uint32_t
+sil_rew_bem(uint32_t *mem)
+{
+	uint32_t	data;
+
+	data = *((volatile uint32_t *) mem);
+	return(TOPPERS_SIL_REV_ENDIAN_UINT32(data));
+}
+
+#endif /* TOPPERS_OMIT_SIL_REW_BEM */
+#ifndef TOPPERS_OMIT_SIL_WRW_BEM
+
+Inline void
+sil_wrw_bem(uint32_t *mem, uint32_t data)
+{
+	*((volatile uint32_t *) mem) = TOPPERS_SIL_REV_ENDIAN_UINT32(data);
+}
+
+#endif /* TOPPERS_OMIT_SIL_WRW_BEM */
+#endif /* SIL_ENDIAN_BIG */
+#endif /* TOPPERS_OMIT_SIL_ACCESS */
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* TOPPERS_SIL_H */
Index: /asp_ewarm/asp-1.7.0/include/t_stddef.h
===================================================================
--- /asp_ewarm/asp-1.7.0/include/t_stddef.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/include/t_stddef.h	(revision 61)
@@ -0,0 +1,289 @@
+/*
+ *  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
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: t_stddef.h 1958 2010-11-20 02:15:29Z ertl-hiro $
+ */
+
+/*
+ *		TOPPERS¤Êwb_t@C
+ *
+ *  TOPPERSÖAÌ·×ÄÌ\[Xt@CÅCN[h·×«wb_t@C
+ *  DeíÌJ[lâ\tgEFAiÅ¤ÊÉp¢é±ÆðzèµÄ¢
+ *  éDTOPPERSÌeíÌJ[lâ\tgEFAiÅ¤ÊÉp¢éf[^^C
+ *  èC}NÌè`ÈÇðÜÞD
+ *
+ *  AZu¾êÌ\[Xt@C©ç±Ìt@CðCN[h·é
+ *  ÍCTOPPERS_MACRO_ONLYðè`µÄ¨­D±êÉæèC}Nè`ÈOð
+ *  ­æ¤ÉÈÁÄ¢éD
+ *
+ *  ±Ìt@CðCN[h·éOÉCN[hµÄ¨­×«t@C
+ *  ÍÈ¢D
+ */
+
+#ifndef TOPPERS_T_STDDEF_H
+#define TOPPERS_T_STDDEF_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *  ^[QbgË¶
+ */
+#include "target_stddef.h"
+
+/*
+ *  C¾ê/EC++Åthrow()ÉÎ·é½ßÌè`
+ */
+#if !defined(__cplusplus) || defined(__embedded_cplusplus)
+#define throw()
+#endif
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  ^[QbgË¶Ìf[^^Ì}NÌftHgè`
+ */
+#ifndef TOPPERS_bool
+#define TOPPERS_bool	int				/* u[^ */
+#endif /* TOPPERS_bool */
+
+#ifndef TOPPERS_size
+#define TOPPERS_size	uintptr_t		/* TCY^ */
+#endif /* TOPPERS_size */
+
+#ifndef TOPPERS_fp
+struct TOPPERS_dummy_t { int TOPPERS_dummy_field; };
+typedef	void			(*TOPPERS_fp_t)(struct TOPPERS_dummy_t);
+#define TOPPERS_fp		TOPPERS_fp_t	/* vOÌN®Ôn */
+#endif /* TOPPERS_fp */
+
+/*
+ *  ¤Êf[^^
+ */
+typedef TOPPERS_bool	bool_t;		/* ^Ul */
+typedef unsigned char	char_t;		/* ³µÌ¶^ */
+
+typedef signed int		int_t;		/* ©RÈTCYÌt«® */
+typedef unsigned int	uint_t;		/* ©RÈTCYÌ³µ® */
+
+typedef signed long		long_t;		/* ·ßÌTCYÌt«® */
+typedef unsigned long	ulong_t;	/* ·ßÌTCYÌ³µ® */
+
+typedef int_t			FN;			/* @\R[h */
+typedef	int_t			ER;			/* G[R[h */
+typedef	int_t			ID;			/* IuWFNgÌIDÔ */
+typedef	uint_t			ATR;		/* IuWFNgÌ®« */
+typedef	uint_t			STAT;		/* IuWFNgÌóÔ */
+typedef	uint_t			MODE;		/* T[rXR[Ì®ì[h */
+typedef	int_t			PRI;		/* Dæx */
+typedef	TOPPERS_size	SIZE;		/* ÌæÌTCY */
+
+typedef	int_t			TMO;		/* ^CAEgwè */
+typedef	uint_t			RELTIM;		/* ÎÔ */
+typedef	ulong_t			SYSTIM;		/* VXe */
+typedef	ulong_t			SYSUTM;		/* «\]¿pVXe */
+
+typedef	TOPPERS_fp		FP;			/* vOÌN®Ôn */
+
+typedef	int_t			ER_BOOL;	/* G[R[hÜ½Í^Ul */
+typedef	int_t			ER_ID;		/* G[R[hÜ½ÍIDÔ */
+typedef	int_t			ER_UINT;	/* G[R[hÜ½Í³µ® */
+
+typedef uintptr_t		MB_T;		/* ÇÌæðmÛ·é½ßÌf[^^ */
+
+typedef	uint32_t		ACPTN;		/* ANZXÂp^[ */
+typedef	struct acvct {				/* ANZXÂxN^ */
+	ACPTN		acptn1;				/* Êíì1ÌANZXÂp^[ */
+	ACPTN		acptn2;				/* Êíì2ÌANZXÂp^[ */
+	ACPTN		acptn3;				/* ÇìÌANZXÂp^[ */
+	ACPTN		acptn4;				/* QÆìÌANZXÂp^[ */
+} ACVCT;
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  ®èðìé}N
+ */
+#ifndef UINT_C
+#define UINT_C(val)		(val ## U)		/* uint_t^Ìèðìé}N */
+#endif /* UINT_C */
+
+#ifndef ULONG_C
+#define ULONG_C(val)	(val ## UL)		/* ulong_t^Ìèðìé}N */
+#endif /* ULONG_C */
+
+/*
+ *  êÊè
+ */
+#ifndef NULL
+#define NULL		0			/* ³ø|C^ */
+#endif /* NULL */
+
+#ifndef true
+#define true		1			/* ^ */
+#endif /* true */
+
+#ifndef false
+#define false		0			/* U */
+#endif /* false */
+
+#define E_OK		0			/* ³íI¹ */
+
+/*
+ *  CG[R[h
+ */
+#define E_SYS		(-5)		/* VXeG[ */
+#define E_NOSPT		(-9)		/* ¢T|[g@\ */
+#define E_RSFN		(-10)		/* \ñ@\R[h */
+#define E_RSATR		(-11)		/* \ñ®« */
+#define E_PAR		(-17)		/* p[^G[ */
+#define E_ID		(-18)		/* s³IDÔ */
+#define E_CTX		(-25)		/* ReLXgG[ */
+#define E_MACV		(-26)		/* ANZXá½ */
+#define E_OACV		(-27)		/* IuWFNgANZXá½ */
+#define E_ILUSE		(-28)		/* T[rXR[s³gp */
+#define E_NOMEM		(-33)		/* s« */
+#define E_NOID		(-34)		/* IDÔs« */
+#define E_NORES		(-35)		/* ¹s« */
+#define E_OBJ		(-41)		/* IuWFNgóÔG[ */
+#define E_NOEXS		(-42)		/* IuWFNg¢¶¬ */
+#define E_QOVR		(-43)		/* L
+[COI[o[t[ */
+#define E_RLWAI		(-49)		/* Ò¿óÔÌ­§ð */
+#define E_TMOUT		(-50)		/* |[O¸sÜ½Í^CAEg */
+#define E_DLT		(-51)		/* Ò¿IuWFNgÌí */
+#define E_CLS		(-52)		/* Ò¿IuWFNgÌóÔÏ» */
+#define E_WBLK		(-57)		/* mubLOót¯ */
+#define E_BOVR		(-58)		/* obt@I[o[t[ */
+
+/*
+ *  IuWFNg®«
+ */
+#define TA_NULL		UINT_C(0)	/* IuWFNg®«ðwèµÈ¢ */
+
+/*
+ *  ^CAEgwè
+ */
+#define TMO_POL		0			/* |[O */
+#define TMO_FEVR	(-1)		/* ivÒ¿ */
+#define TMO_NBLK	(-2)		/* mubLO */
+
+/*
+ *  ANZXÂp^[
+ */
+#define TACP_KERNEL		(0U)	/* J[lhC¾¯ÉANZXðÂ */
+#define TACP_SHARED		(~0U)	/* ·×ÄÌhC©çANZXðÂ */
+
+/*
+ *  ^ÉÖ·éîñðæèo·½ßÌ}N
+ */
+#ifndef offsetof
+#define	offsetof(structure, field)	((uintptr_t) &(((structure *) 0)->field))
+#endif /* offsetof */
+
+#ifndef alignof
+#define alignof(type)	offsetof(struct { char field1; type field2; }, field2)
+#endif /* alignof */
+
+#ifndef ALIGN_TYPE				/* ACgÌ`FbN */
+#define ALIGN_TYPE(addr, type) \
+						((((uintptr_t)(addr)) & (alignof(type) - 1)) == 0U)
+#endif /* ALIGN_TYPE */
+
+/*
+ *  assert}N
+ */
+#undef assert
+#ifndef NDEBUG
+#define assert(exp)		((void)((exp) ? 0 : (TOPPERS_assert_fail(#exp, \
+							__FILE__, __LINE__), TOPPERS_assert_abort(), 0)))
+#else /* NDEBUG */
+#define assert(exp)		((void) 0)
+#endif /* NDEBUG */
+
+#ifdef __cplusplus
+}
+#endif
+
+/*
+ *  G[R[h¶¬Eªð}N
+ *
+ *  ÈºÌ}Nè`ÍCt«®ª2ÌâÅ\»³êÄ¨èCEVtg
+ *  Zqi>>jªZpVtg³êé±Æð¼èµÄ¢éD»¤ÅÈ¢J­Â
+ *  «ÅÍCtarget_stddef.hÅ±êçÌè`ðã«µÈ¯êÎÈçÈ¢D
+ *
+ *  MERCD}NÌè`ÍCCG[R[hªÅ é±Æð¼èµÄ¢éD
+ *  »¤ÅÈ¢êC2ÂÌè`ªêvµÈ­ÈéD
+ */
+#ifndef ERCD
+#define ERCD(mercd, sercd) \
+				((ER)((((uint_t) sercd) << 8) | (((uint_t) mercd) & 0xffU)))
+#endif /* ERCD */
+
+#ifndef MERCD
+#ifdef INT8_MAX
+#define MERCD(ercd)		((ER)((int8_t)(ercd)))
+#else /* INT8_MAX */
+#define MERCD(ercd)		((ER)(((uint_t) ercd) | ~0xffU))
+#endif /* INT8_MAX */
+#endif /* MERCD */
+
+#ifndef SERCD
+#define SERCD(ercd)		((ER)((ercd) >> 8))
+#endif /* SERCD */
+
+/*
+ *  ANZXÂp^[¶¬}N
+ */
+#define TACP(domid)		(1U << ((domid) - 1))	/* domid¾¯ÉANZXðÂ */
+
+/*
+ *  ÎÔiRELTIMjÉwèÅ«éÅål
+ */
+#if UINT_MAX < LONG_MAX
+#define TMAX_RELTIM		((RELTIM) UINT_MAX)
+#else /* UINT_MAX < LONG_MAX */
+#define TMAX_RELTIM		((RELTIM) LONG_MAX)
+#endif /* UINT_MAX < LONG_MAX */
+
+#endif /* TOPPERS_T_STDDEF_H */
Index: /asp_ewarm/asp-1.7.0/include/t_stdlib.h
===================================================================
--- /asp_ewarm/asp-1.7.0/include/t_stdlib.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/include/t_stdlib.h	(revision 61)
@@ -0,0 +1,78 @@
+/*
+ *  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
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: t_stdlib.h 264 2007-07-12 08:23:10Z hiro $
+ */
+
+/*
+ *		î{IÈCuÖ
+ */
+
+#ifndef TOPPERS_T_STDLIB_H
+#define TOPPERS_T_STDLIB_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *  G[bZ[W¶ñðÔ·Ö
+ *
+ *  ercdÅwè³ê½G[R[hÌCG[R[hÌ¼ÌiE_PARC
+ *  E_OBJÈÇjÌ¶ñðÔ·ÖD
+ */
+extern const char	*itron_strerror(ER ercd) throw();
+
+/*
+ *  G[bZ[WÌOoÍ
+ *
+ *  T[rXR[ªG[ðÔµ½êÉC»Ìt@C¼CsÔCC
+ *  G[R[hð\¦·é½ßÌÖD
+ */
+extern void		t_perror(uint_t prio, const char *file, int_t line,
+									const char *expr, ER ercd) throw();
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* TOPPERS_T_STDLIB_H */
Index: /asp_ewarm/asp-1.7.0/include/t_syslog.h
===================================================================
--- /asp_ewarm/asp-1.7.0/include/t_syslog.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/include/t_syslog.h	(revision 61)
@@ -0,0 +1,339 @@
+/*
+ *  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-2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: t_syslog.h 1900 2010-08-14 02:31:44Z ertl-hiro $
+ */
+
+/*
+ *		VXeOoÍðs¤½ßÌè`
+ *
+ *  VXeOT[rXÍCVXeÌOîñðoÍ·é½ßÌT[rX
+ *  Å éDJ[l©çÌOîñÌoÍÉàp¢é½ßCàÅÒ¿óÔ
+ *  ÉÍ¢é±ÆÍÈ¢D
+ *
+ *  OîñÍCJ[làÌOobt@É«Þ©CáxÌ¶o
+ *  ÍÖðp¢ÄoÍ·éDÇ¿çðg¤©ÍCg£T[rXR[ÅØè
+ *  ·¦é±ÆªÅ«éD
+ *
+ *  Oobt@ÌæªI[ot[µ½êÉÍCÃ¢OîñðÁµÄã
+ *  «·éD
+ *
+ *  AZu¾êÌ\[Xt@C©ç±Ìt@CðCN[h·é
+ *  ÍCTOPPERS_MACRO_ONLYðè`µÄ¨­±ÆÅC}Nè`ÈOÌLqð
+ *  ­±ÆªÅ«éD
+ *
+ *  ±Ìt@CðCN[h·éOÉCt_stddef.hðCN[hµÄ¨
+ *  ­±ÆªKvÅ éD
+ */
+
+#ifndef TOPPERS_T_SYSLOG_H
+#define TOPPERS_T_SYSLOG_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *  OîñÌíÊÌè`
+ */
+#define LOG_TYPE_COMMENT	UINT_C(0x01)	/* Rg */
+#define LOG_TYPE_ASSERT		UINT_C(0x02)	/* AT[VÌ¸s */
+
+#define LOG_TYPE_INH		UINT_C(0x11)	/* Ýnh */
+#define LOG_TYPE_ISR		UINT_C(0x12)	/* ÝT[rX[` */
+#define LOG_TYPE_CYC		UINT_C(0x13)	/* üúnh */
+#define LOG_TYPE_ALM		UINT_C(0x14)	/* A[nh */
+#define LOG_TYPE_OVR		UINT_C(0x15)	/* I[onh */
+#define LOG_TYPE_EXC		UINT_C(0x16)	/* CPUáOnh */
+#define LOG_TYPE_TEX		UINT_C(0x17)	/* ^XNáO[` */
+#define LOG_TYPE_TSKSTAT	UINT_C(0x18)	/* ^XNóÔÏ» */
+#define LOG_TYPE_DSP		UINT_C(0x19)	/* fBXpb` */
+#define LOG_TYPE_SVC		UINT_C(0x1a)	/* T[rXR[ */
+
+#define LOG_ENTER			UINT_C(0x00)	/* üû^Jn */
+#define LOG_LEAVE			UINT_C(0x80)	/* oû^I¹ */
+
+/*
+ *  OîñÌdvxÌè`
+ */
+#define LOG_EMERG			UINT_C(0)		/* Vbg_EÉl·éG[ */
+#define LOG_ALERT			UINT_C(1)
+#define LOG_CRIT			UINT_C(2)
+#define LOG_ERROR			UINT_C(3)		/* VXeG[ */
+#define LOG_WARNING			UINT_C(4)		/* xbZ[W */
+#define LOG_NOTICE			UINT_C(5)
+#define LOG_INFO			UINT_C(6)
+#define LOG_DEBUG			UINT_C(7)		/* fobOpbZ[W */
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  OîñÌf[^\¢
+ */
+
+#define TMAX_LOGINFO	6
+
+typedef struct {
+	uint_t		logtype;				/* OîñÌíÊ */
+	SYSTIM		logtim;					/* O */
+	intptr_t	loginfo[TMAX_LOGINFO];	/* »Ì¼ÌOîñ */
+} SYSLOG;
+
+/*
+ *  OîñÌdvxÌrbg}bvðìé½ßÌ}N
+ */
+#define LOG_MASK(prio)		(1U << (prio))
+#define LOG_UPTO(prio)		((1U << ((prio) + 1)) - 1)
+
+/*
+ *  pPbg`®Ìè`
+ */
+typedef struct t_syslog_rlog {
+	uint_t	count;		/* Oobt@ÌOÌ */
+	uint_t	lost;		/* ¸íê½OÌ */
+	uint_t	logmask;	/* Oobt@ÉL^·×«dvx */
+	uint_t	lowmask;	/* áxoÍ·×«dvx */
+} T_SYSLOG_RLOG;
+
+/*
+ *  OîñðoÍ·é½ßÌCuÖ
+ */
+
+#ifndef TOPPERS_OMIT_SYSLOG
+
+extern ER	syslog_wri_log(uint_t prio, const SYSLOG *p_syslog) throw();
+
+Inline void
+_syslog_0(uint_t prio, uint_t type)
+{
+	SYSLOG	syslog;
+
+	syslog.logtype = type;
+	(void) syslog_wri_log(prio, &syslog);
+}
+
+Inline void
+_syslog_1(uint_t prio, uint_t type, intptr_t arg1)
+{
+	SYSLOG	syslog;
+
+	syslog.logtype = type;
+	syslog.loginfo[0] = arg1;
+	(void) syslog_wri_log(prio, &syslog);
+}
+
+Inline void
+_syslog_2(uint_t prio, uint_t type, intptr_t arg1, intptr_t arg2)
+{
+	SYSLOG	syslog;
+
+	syslog.logtype = type;
+	syslog.loginfo[0] = arg1;
+	syslog.loginfo[1] = arg2;
+	(void) syslog_wri_log(prio, &syslog);
+}
+
+Inline void
+_syslog_3(uint_t prio, uint_t type, intptr_t arg1, intptr_t arg2,
+														intptr_t arg3)
+{
+	SYSLOG	syslog;
+
+	syslog.logtype = type;
+	syslog.loginfo[0] = arg1;
+	syslog.loginfo[1] = arg2;
+	syslog.loginfo[2] = arg3;
+	(void) syslog_wri_log(prio, &syslog);
+}
+
+Inline void
+_syslog_4(uint_t prio, uint_t type, intptr_t arg1, intptr_t arg2,
+										intptr_t arg3, intptr_t arg4)
+{
+	SYSLOG	syslog;
+
+	syslog.logtype = type;
+	syslog.loginfo[0] = arg1;
+	syslog.loginfo[1] = arg2;
+	syslog.loginfo[2] = arg3;
+	syslog.loginfo[3] = arg4;
+	(void) syslog_wri_log(prio, &syslog);
+}
+
+Inline void
+_syslog_5(uint_t prio, uint_t type, intptr_t arg1, intptr_t arg2,
+							intptr_t arg3, intptr_t arg4, intptr_t arg5)
+{
+	SYSLOG	syslog;
+
+	syslog.logtype = type;
+	syslog.loginfo[0] = arg1;
+	syslog.loginfo[1] = arg2;
+	syslog.loginfo[2] = arg3;
+	syslog.loginfo[3] = arg4;
+	syslog.loginfo[4] = arg5;
+	(void) syslog_wri_log(prio, &syslog);
+}
+
+Inline void
+_syslog_6(uint_t prio, uint_t type, intptr_t arg1, intptr_t arg2,
+				intptr_t arg3, intptr_t arg4, intptr_t arg5, intptr_t arg6)
+{
+	SYSLOG	syslog;
+
+	syslog.logtype = type;
+	syslog.loginfo[0] = arg1;
+	syslog.loginfo[1] = arg2;
+	syslog.loginfo[2] = arg3;
+	syslog.loginfo[3] = arg4;
+	syslog.loginfo[4] = arg5;
+	syslog.loginfo[5] = arg6;
+	(void) syslog_wri_log(prio, &syslog);
+}
+
+/*
+ *  OîñiRgjðoÍ·é½ßÌCuÖivasyslog.cj
+ */
+extern void	syslog(uint_t prio, const char *format, ...) throw();
+
+#else /* TOPPERS_OMIT_SYSLOG */
+
+/*
+ *  VXeOoÍð}~·éê
+ */
+
+Inline void
+_syslog_0(uint_t prio, uint_t type)
+{
+}
+
+Inline void
+_syslog_1(uint_t prio, uint_t type, intptr_t arg1)
+{
+}
+
+Inline void
+_syslog_2(uint_t prio, uint_t type, intptr_t arg1, intptr_t arg2)
+{
+}
+
+Inline void
+_syslog_3(uint_t prio, uint_t type, intptr_t arg1, intptr_t arg2,
+														intptr_t arg3)
+{
+}
+
+Inline void
+_syslog_4(uint_t prio, uint_t type, intptr_t arg1, intptr_t arg2,
+										intptr_t arg3, intptr_t arg4)
+{
+}
+
+Inline void
+_syslog_5(uint_t prio, uint_t type, intptr_t arg1, intptr_t arg2,
+							intptr_t arg3, intptr_t arg4, intptr_t arg5)
+{
+}
+
+Inline void
+_syslog_6(uint_t prio, uint_t type, intptr_t arg1, intptr_t arg2,
+				intptr_t arg3, intptr_t arg4, intptr_t arg5, intptr_t arg6)
+{
+}
+
+Inline void
+syslog(uint_t prio, const char *format, ...)
+{
+}
+
+#endif /* TOPPERS_OMIT_SYSLOG */
+
+/*
+ *  OîñiRgjðoÍ·é½ßÌ}N
+ *
+ *  format¨æÑã±Ìø©çì¬µ½bZ[WðCdåxprioÅOî
+ *  ñÆµÄoÍ·é½ßÌ}NDarg1`argnÍintptr_t^ÉLXg·é
+ *  ½ßCintptr_t^É^Ï·Å«éCÓÌ^Åæ¢D
+ */
+
+#define syslog_0(prio, format) \
+				_syslog_1(prio, LOG_TYPE_COMMENT, (intptr_t) format)
+
+#define syslog_1(prio, format, arg1) \
+				_syslog_2(prio, LOG_TYPE_COMMENT, (intptr_t) format, \
+														(intptr_t)(arg1))
+
+#define syslog_2(prio, format, arg1, arg2) \
+				_syslog_3(prio, LOG_TYPE_COMMENT, (intptr_t) format, \
+										(intptr_t)(arg1), (intptr_t)(arg2))
+
+#define syslog_3(prio, format, arg1, arg2, arg3) \
+				_syslog_4(prio, LOG_TYPE_COMMENT, (intptr_t) format, \
+						(intptr_t)(arg1), (intptr_t)(arg2), (intptr_t)(arg3))
+
+#define syslog_4(prio, format, arg1, arg2, arg3, arg4) \
+				_syslog_5(prio, LOG_TYPE_COMMENT, (intptr_t) format, \
+						(intptr_t)(arg1), (intptr_t)(arg2), (intptr_t)(arg3), \
+														(intptr_t)(arg4))
+
+#define syslog_5(prio, format, arg1, arg2, arg3, arg4, arg5) \
+				_syslog_6(prio, LOG_TYPE_COMMENT, (intptr_t) format, \
+						(intptr_t)(arg1), (intptr_t)(arg2), (intptr_t)(arg3), \
+										(intptr_t)(arg4), (intptr_t)(arg5))
+
+/*
+ *  OîñiAT[VÌ¸sjðoÍ·é½ßÌ}N
+ */
+#ifndef TOPPERS_assert_fail
+#define TOPPERS_assert_fail(exp, file, line) \
+				_syslog_3(LOG_EMERG, LOG_TYPE_ASSERT, (intptr_t)(file), \
+										(intptr_t)(line), (intptr_t)(exp))
+#endif /* TOPPERS_assert_fail */
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* TOPPERS_T_SYSLOG_H */
Index: /asp_ewarm/asp-1.7.0/include/test_lib.h
===================================================================
--- /asp_ewarm/asp-1.7.0/include/test_lib.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/include/test_lib.h	(revision 61)
@@ -0,0 +1,136 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2005-2009 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_lib.h 1652 2009-10-10 18:01:05Z ertl-hiro $
+ */
+
+/* 
+ *		eXgvOpCu
+ */
+
+#include <t_stddef.h>
+
+/*
+ *  ^[QbgË¶Ìè`
+ */
+#include "target_test.h"
+
+/*
+ *	©ÈffÖÌ^
+ */
+typedef ER (*BIT_FUNC)(void);
+
+/*
+ *	©ÈffÖÌÝè
+ */
+extern void	set_bit_func(BIT_FUNC bit_func);
+
+/*
+ *  VXeOÌoÍ
+ */
+extern void	syslog_flush(void);
+
+/*
+ *	eXgvOÌI¹
+ */
+extern void	test_finish(void);
+
+/*
+ *	`FbN|Cg
+ */
+extern void	check_point(uint_t count);
+
+/*
+ *	®¹`FbN|Cg
+ */
+extern void	check_finish(uint_t count);
+
+/*
+ *	ð`FbN
+ */
+extern void	_check_assert(const char *expr, const char *file, int_t line);
+#define check_assert(exp) \
+	((void)(!(exp) ? (_check_assert(#exp, __FILE__, __LINE__), 0) : 0))
+
+/*
+ *	G[R[h`FbN
+ */
+extern void	_check_ercd(ER ercd, const char *file, int_t line);
+#define check_ercd(ercd, expected_ercd) \
+	((void)((ercd) != (expected_ercd) ? \
+					(_check_ercd(ercd, __FILE__, __LINE__), 0) : 0))
+
+/*
+ *	VXeóÔÌ`FbN
+ */
+Inline void
+check_state(bool_t ctx, bool_t loc, PRI ipm, bool_t dsp,
+										bool_t dpn, bool_t tex)
+{
+	PRI		intpri;
+	ER		ercd;
+
+	check_assert(sns_ctx() == ctx);
+	check_assert(sns_loc() == loc);
+	if (!loc) {
+		/*
+		 *  IPMÌ`FbNÍCCPUbNðóÔÌêÉÌÝs¤D
+		 */
+		ercd = get_ipm(&intpri);
+		check_ercd(ercd, E_OK);
+		check_assert(intpri == ipm);
+	}
+	check_assert(sns_dsp() == dsp);
+	check_assert(sns_dpn() == dpn);
+	check_assert(sns_tex() == tex);
+}
+
+/*
+ *	VXeóÔÌ`FbNiñ^XNReLXgpj
+ */
+Inline void
+check_state_i(bool_t ctx, bool_t loc, bool_t dsp, bool_t dpn, bool_t tex)
+{
+	check_assert(sns_ctx() == ctx);
+	check_assert(sns_loc() == loc);
+	check_assert(sns_dsp() == dsp);
+	check_assert(sns_dpn() == dpn);
+	check_assert(sns_tex() == tex);
+}
Index: /asp_ewarm/asp-1.7.0/kernel/Makefile.kernel
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/Makefile.kernel	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/Makefile.kernel	(revision 61)
@@ -0,0 +1,140 @@
+#
+#  TOPPERS/ASP Kernel
+#      Toyohashi Open Platform for Embedded Real-Time Systems/
+#      Advanced Standard Profile Kernel
+# 
+#  Copyright (C) 2003 by Embedded and Real-Time Systems Laboratory
+#                              Toyohashi Univ. of Technology, JAPAN
+#  Copyright (C) 2005-2008 by Embedded and Real-Time Systems Laboratory
+#              Graduate School of Information Science, Nagoya Univ., JAPAN
+# 
+#  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+#  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+#  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+#  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+#       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+#      XR[hÉÜÜêÄ¢é±ÆD
+#  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+#      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+#      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+#      Ì³ÛØKèðfÚ·é±ÆD
+#  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+#      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+#      ÆD
+#    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+#        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+#    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+#        ñ·é±ÆD
+#  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+#      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+#      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+#      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+#      ÆÓ·é±ÆD
+# 
+#  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+#  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+#  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+#  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+#  ÌÓCðíÈ¢D
+# 
+#  @(#) $Id: Makefile.kernel 877 2008-04-11 10:36:50Z hiro $
+# 
+
+#
+#		J[lÌt@C\¬Ìè`
+#
+
+#
+#  1ÂÌ\[Xt@C©ç¡ÌIuWFNgt@Cð¶¬·éæ¤Éì
+#  ¬³ê½\[Xt@CÌXg
+#
+KERNEL_FCSRCS = startup.c task.c wait.c time_event.c \
+				task_manage.c task_refer.c task_sync.c task_except.c \
+				semaphore.c eventflag.c dataqueue.c pridataq.c mailbox.c \
+				mempfix.c time_manage.c cyclic.c alarm.c \
+				sys_manage.c interrupt.c exception.c
+
+#
+#  e\[Xt@C©ç¶¬³êéIuWFNgt@CÌXg
+#
+startup = sta_ker.o ext_ker.o
+
+task = tskini.o tsksched.o tskrun.o tsknrun.o \
+		tskdmt.o tskact.o tskpri.o tskrot.o tsktex.o
+
+wait = waimake.o waicmp.o waitmo.o waitmook.o \
+		wairel.o wobjwai.o wobjwaitmo.o iniwque.o
+
+time_event = tmeini.o tmeup.o tmedown.o tmeins.o tmedel.o tmeltim.o sigtim.o
+
+task_manage = act_tsk.o iact_tsk.o can_act.o ext_tsk.o ter_tsk.o \
+		chg_pri.o get_pri.o get_inf.o
+
+task_refer = ref_tsk.o
+
+task_sync = slp_tsk.o tslp_tsk.o wup_tsk.o iwup_tsk.o can_wup.o \
+		rel_wai.o irel_wai.o sus_tsk.o rsm_tsk.o dly_tsk.o
+
+task_except = ras_tex.o iras_tex.o dis_tex.o ena_tex.o sns_tex.o ref_tex.o
+
+semaphore = semini.o sig_sem.o isig_sem.o \
+		wai_sem.o pol_sem.o twai_sem.o ini_sem.o ref_sem.o
+
+eventflag = flgini.o flgcnd.o set_flg.o iset_flg.o clr_flg.o \
+		wai_flg.o pol_flg.o twai_flg.o ini_flg.o ref_flg.o
+
+dataqueue = dtqini.o dtqenq.o dtqfenq.o dtqdeq.o dtqsnd.o dtqfsnd.o dtqrcv.o \
+		snd_dtq.o psnd_dtq.o ipsnd_dtq.o tsnd_dtq.o fsnd_dtq.o ifsnd_dtq.o \
+		rcv_dtq.o prcv_dtq.o trcv_dtq.o ini_dtq.o ref_dtq.o
+
+pridataq = pdqini.o pdqenq.o pdqdeq.o pdqsnd.o pdqrcv.o \
+		snd_pdq.o psnd_pdq.o ipsnd_pdq.o tsnd_pdq.o \
+		rcv_pdq.o prcv_pdq.o trcv_pdq.o ini_pdq.o ref_pdq.o
+
+mailbox = mbxini.o snd_mbx.o rcv_mbx.o prcv_mbx.o trcv_mbx.o \
+		ini_mbx.o ref_mbx.o
+
+mempfix = mpfini.o mpfget.o get_mpf.o pget_mpf.o tget_mpf.o \
+		rel_mpf.o ini_mpf.o ref_mpf.o
+
+time_manage = get_tim.o get_utm.o
+
+cyclic = cycini.o sta_cyc.o stp_cyc.o ref_cyc.o cyccal.o
+
+alarm = almini.o sta_alm.o ista_alm.o stp_alm.o istp_alm.o ref_alm.o almcal.o
+
+sys_manage = rot_rdq.o irot_rdq.o get_tid.o iget_tid.o \
+		loc_cpu.o iloc_cpu.o unl_cpu.o iunl_cpu.o dis_dsp.o ena_dsp.o \
+		sns_ctx.o sns_loc.o sns_dsp.o sns_dpn.o sns_ker.o
+
+interrupt = intini.o dis_int.o ena_int.o chg_ipm.o get_ipm.o
+
+exception = excini.o xsns_dpn.o xsns_xpn.o
+
+#
+#  ¶¬³êéIuWFNgt@CÌË¶ÖWÌè`
+#
+$(startup) $(startup:.o=.s) $(startup:.o=.d): startup.c
+$(task) $(task:.o=.s) $(task:.o=.d): task.c
+$(wait) $(wait:.o=.s) $(wait:.o=.d): wait.c
+$(time_event) $(time_event:.o=.s) $(time_event:.o=.d): time_event.c
+$(task_manage) $(task_manage:.o=.s) $(task_manage:.o=.d): task_manage.c
+$(task_refer) $(task_refer:.o=.s) $(task_refer:.o=.d): task_refer.c
+$(task_sync) $(task_sync:.o=.s) $(task_sync:.o=.d): task_sync.c
+$(task_except) $(task_except:.o=.s) $(task_except:.o=.d): task_except.c
+$(semaphore) $(semaphore:.o=.s) $(semaphore:.o=.d): semaphore.c
+$(eventflag) $(eventflag:.o=.s) $(eventflag:.o=.d): eventflag.c
+$(dataqueue) $(dataqueue:.o=.s) $(dataqueue:.o=.d): dataqueue.c
+$(pridataq) $(pridataq:.o=.s) $(pridataq:.o=.d): pridataq.c
+$(mailbox) $(mailbox:.o=.s) $(mailbox:.o=.d): mailbox.c
+$(mempfix) $(mempfix:.o=.s) $(mempfix:.o=.d): mempfix.c
+$(time_manage) $(time_manage:.o=.s) $(time_manage:.o=.d): time_manage.c
+$(cyclic) $(cyclic:.o=.s) $(cyclic:.o=.d): cyclic.c
+$(alarm) $(alarm:.o=.s) $(alarm:.o=.d): alarm.c
+$(sys_manage) $(sys_manage:.o=.s) $(sys_manage:.o=.d): sys_manage.c
+$(interrupt) $(interrupt:.o=.s) $(interrupt:.o=.d): interrupt.c
+$(exception) $(exception:.o=.s) $(exception:.o=.d): exception.c
Index: /asp_ewarm/asp-1.7.0/kernel/alarm.c
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/alarm.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/alarm.c	(revision 61)
@@ -0,0 +1,335 @@
+/*
+ *  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-2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: alarm.c 748 2008-03-07 17:18:06Z hiro $
+ */
+
+/*
+ *		A[nh@\
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "alarm.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_ALM_ENTER
+#define LOG_ALM_ENTER(p_almcb)
+#endif /* LOG_ALM_ENTER */
+
+#ifndef LOG_ALM_LEAVE
+#define LOG_ALM_LEAVE(p_almcb)
+#endif /* LOG_ALM_LEAVE */
+
+#ifndef LOG_STA_ALM_ENTER
+#define LOG_STA_ALM_ENTER(almid, almtim)
+#endif /* LOG_STA_ALM_ENTER */
+
+#ifndef LOG_STA_ALM_LEAVE
+#define LOG_STA_ALM_LEAVE(ercd)
+#endif /* LOG_STA_ALM_LEAVE */
+
+#ifndef LOG_ISTA_ALM_ENTER
+#define LOG_ISTA_ALM_ENTER(almid, almtim)
+#endif /* LOG_ISTA_ALM_ENTER */
+
+#ifndef LOG_ISTA_ALM_LEAVE
+#define LOG_ISTA_ALM_LEAVE(ercd)
+#endif /* LOG_ISTA_ALM_LEAVE */
+
+#ifndef LOG_STP_ALM_ENTER
+#define LOG_STP_ALM_ENTER(almid)
+#endif /* LOG_STP_ALM_ENTER */
+
+#ifndef LOG_STP_ALM_LEAVE
+#define LOG_STP_ALM_LEAVE(ercd)
+#endif /* LOG_STP_ALM_LEAVE */
+
+#ifndef LOG_ISTP_ALM_ENTER
+#define LOG_ISTP_ALM_ENTER(almid)
+#endif /* LOG_ISTP_ALM_ENTER */
+
+#ifndef LOG_ISTP_ALM_LEAVE
+#define LOG_ISTP_ALM_LEAVE(ercd)
+#endif /* LOG_ISTP_ALM_LEAVE */
+
+#ifndef LOG_REF_ALM_ENTER
+#define LOG_REF_ALM_ENTER(almid, pk_ralm)
+#endif /* LOG_REF_ALM_ENTER */
+
+#ifndef LOG_REF_ALM_LEAVE
+#define LOG_REF_ALM_LEAVE(ercd, pk_ralm)
+#endif /* LOG_REF_ALM_LEAVE */
+
+/*
+ *  A[nhÌ
+ */
+#define tnum_alm	((uint_t)(tmax_almid - TMIN_ALMID + 1))
+
+/*
+ *  A[nhID©çA[nhÇubNðæèo·½ßÌ}N
+ */
+#define INDEX_ALM(almid)	((uint_t)((almid) - TMIN_ALMID))
+#define get_almcb(almid)	(&(almcb_table[INDEX_ALM(almid)]))
+
+/*
+ *  A[nh@\Ìú»
+ */
+#ifdef TOPPERS_almini
+
+void
+initialize_alarm(void)
+{
+	uint_t	i;
+	ALMCB	*p_almcb;
+
+	for (p_almcb = almcb_table, i = 0; i < tnum_alm; p_almcb++, i++) {
+		p_almcb->p_alminib = &(alminib_table[i]);
+		p_almcb->almsta = false;
+	}
+}
+
+#endif /* TOPPERS_almini */
+
+/*
+ *  A[nhÌ®ìJn
+ */
+#ifdef TOPPERS_sta_alm
+
+ER
+sta_alm(ID almid, RELTIM almtim)
+{
+	ALMCB	*p_almcb;
+	ER		ercd;
+
+	LOG_STA_ALM_ENTER(almid, almtim);
+	CHECK_TSKCTX_UNL();
+	CHECK_ALMID(almid);
+	CHECK_PAR(almtim <= TMAX_RELTIM);
+	p_almcb = get_almcb(almid);
+
+	t_lock_cpu();
+	if (p_almcb->almsta) {
+		tmevtb_dequeue(&(p_almcb->tmevtb));
+	}
+	else {
+		p_almcb->almsta = true;
+	}
+	tmevtb_enqueue(&(p_almcb->tmevtb), almtim,
+								(CBACK) call_almhdr, (void *) p_almcb);
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_STA_ALM_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_sta_alm */
+
+/*
+ *  A[nhÌ®ìJniñ^XNReLXgpj
+ */
+#ifdef TOPPERS_ista_alm
+
+ER
+ista_alm(ID almid, RELTIM almtim)
+{
+	ALMCB	*p_almcb;
+	ER		ercd;
+
+	LOG_ISTA_ALM_ENTER(almid, almtim);
+	CHECK_INTCTX_UNL();
+	CHECK_ALMID(almid);
+	CHECK_PAR(almtim <= TMAX_RELTIM);
+	p_almcb = get_almcb(almid);
+
+	i_lock_cpu();
+	if (p_almcb->almsta) {
+		tmevtb_dequeue(&(p_almcb->tmevtb));
+	}
+	else {
+		p_almcb->almsta = true;
+	}
+	tmevtb_enqueue(&(p_almcb->tmevtb), almtim,
+								(CBACK) call_almhdr, (void *) p_almcb);
+	ercd = E_OK;
+	i_unlock_cpu();
+
+  error_exit:
+	LOG_ISTA_ALM_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ista_alm */
+
+/*
+ *  A[nhÌ®ìâ~
+ */
+#ifdef TOPPERS_stp_alm
+
+ER
+stp_alm(ID almid)
+{
+	ALMCB	*p_almcb;
+	ER		ercd;
+
+	LOG_STP_ALM_ENTER(almid);
+	CHECK_TSKCTX_UNL();
+	CHECK_ALMID(almid);
+	p_almcb = get_almcb(almid);
+
+	t_lock_cpu();
+	if (p_almcb->almsta) {
+		p_almcb->almsta = false;
+		tmevtb_dequeue(&(p_almcb->tmevtb));
+	}
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_STP_ALM_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_stp_alm */
+
+/*
+ *  A[nhÌ®ìâ~iñ^XNReLXgpj
+ */
+#ifdef TOPPERS_istp_alm
+
+ER
+istp_alm(ID almid)
+{
+	ALMCB	*p_almcb;
+	ER		ercd;
+
+	LOG_ISTP_ALM_ENTER(almid);
+	CHECK_INTCTX_UNL();
+	CHECK_ALMID(almid);
+	p_almcb = get_almcb(almid);
+
+	i_lock_cpu();
+	if (p_almcb->almsta) {
+		p_almcb->almsta = false;
+		tmevtb_dequeue(&(p_almcb->tmevtb));
+	}
+	ercd = E_OK;
+	i_unlock_cpu();
+
+  error_exit:
+	LOG_ISTP_ALM_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_istp_alm */
+
+/*
+ *  A[nhÌóÔQÆ
+ */
+#ifdef TOPPERS_ref_alm
+
+ER
+ref_alm(ID almid, T_RALM *pk_ralm)
+{
+	ALMCB	*p_almcb;
+	ER		ercd;
+    
+	LOG_REF_ALM_ENTER(almid, pk_ralm);
+	CHECK_TSKCTX_UNL();
+	CHECK_ALMID(almid);
+	p_almcb = get_almcb(almid);
+
+	t_lock_cpu();
+	if (p_almcb->almsta) {
+		pk_ralm->almstat = TALM_STA;
+		pk_ralm->lefttim = tmevt_lefttim(&(p_almcb->tmevtb));
+	}
+	else {
+		pk_ralm->almstat = TALM_STP;
+	}
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_REF_ALM_LEAVE(ercd, pk_ralm);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ref_alm */
+
+/*
+ *  A[nhN®[`
+ */
+#ifdef TOPPERS_almcal
+
+void
+call_almhdr(ALMCB *p_almcb)
+{
+	PRI		saved_ipm;
+
+	/*
+	 *  A[nhðâ~óÔÉ·éD
+	 */
+	p_almcb->almsta = false;
+
+	/*
+	 *  A[nhðCCPUbNðóÔÅÄÑo·D
+	 */
+	saved_ipm = i_get_ipm();
+	i_unlock_cpu();
+
+	LOG_ALM_ENTER(p_almcb);
+	(*((ALMHDR)(p_almcb->p_alminib->almhdr)))(p_almcb->p_alminib->exinf);
+	LOG_ALM_LEAVE(p_almcb);
+
+	if (!i_sense_lock()) {
+		i_lock_cpu();
+	}
+	i_set_ipm(saved_ipm);
+}
+
+#endif /* TOPPERS_almcal */
Index: /asp_ewarm/asp-1.7.0/kernel/alarm.h
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/alarm.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/alarm.h	(revision 61)
@@ -0,0 +1,99 @@
+/*
+ *  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,2006 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: alarm.h 748 2008-03-07 17:18:06Z hiro $
+ */
+
+/*
+ *		A[nh@\
+ */
+
+#ifndef TOPPERS_ALARM_H
+#define TOPPERS_ALARM_H
+
+#include "time_event.h"
+
+/*
+ *  A[nhú»ubN
+ */
+typedef struct alarm_handler_initialization_block {
+	ATR			almatr;			/* A[nh®« */
+	intptr_t	exinf;			/* A[nhÌg£îñ */
+	ALMHDR		almhdr;			/* A[nhÌN®Ôn */
+} ALMINIB;
+
+/*
+ *  A[nhÇubN
+ */
+typedef struct alarm_handler_control_block {
+	const ALMINIB *p_alminib;	/* ú»ubNÖÌ|C^ */
+	bool_t		almsta;			/* A[nhÌ®ìóÔ */
+	TMEVTB		tmevtb;			/* ^CCxgubN */
+} ALMCB;
+
+/*
+ *  A[nhIDÌÅålikernel_cfg.cj
+ */
+extern const ID	tmax_almid;
+
+/*
+ *  A[nhú»ubNÌGAikernel_cfg.cj
+ */
+extern const ALMINIB	alminib_table[];
+
+/*
+ *  A[nhÇubNÌGAikernel_cfg.cj
+ */
+extern ALMCB	almcb_table[];
+
+/*
+ *  A[nh@\Ìú»
+ */
+extern void	initialize_alarm(void);
+
+/*
+ *  A[nhN®[`
+ */
+extern void	call_almhdr(ALMCB *p_almcb);
+
+#endif /* TOPPERS_ALARM_H */
Index: /asp_ewarm/asp-1.7.0/kernel/allfunc.h
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/allfunc.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/allfunc.h	(revision 61)
@@ -0,0 +1,245 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2005-2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: allfunc.h 879 2008-04-11 10:38:16Z hiro $
+ */
+
+/*
+ *		·×ÄÌÖðRpC·é½ßÌè`
+ */
+
+#ifndef TOPPERS_ALLFUNC_H
+#define TOPPERS_ALLFUNC_H
+
+/* startup.c */
+#define TOPPERS_sta_ker
+#define TOPPERS_ext_ker
+
+/* task.c */
+#define TOPPERS_tskini
+#define TOPPERS_tsksched
+#define TOPPERS_tskrun
+#define TOPPERS_tsknrun
+#define TOPPERS_tskdmt
+#define TOPPERS_tskact
+#define TOPPERS_tskpri
+#define TOPPERS_tskrot
+#define TOPPERS_tsktex
+
+/* wait.c */
+#define TOPPERS_waimake
+#define TOPPERS_waicmp
+#define TOPPERS_waitmo
+#define TOPPERS_waitmook
+#define TOPPERS_wairel
+#define TOPPERS_wobjwai
+#define TOPPERS_wobjwaitmo
+#define TOPPERS_iniwque
+
+/* time_event.c */
+#define TOPPERS_tmeini
+#define TOPPERS_tmeup
+#define TOPPERS_tmedown
+#define TOPPERS_tmeins
+#define TOPPERS_tmedel
+#define TOPPERS_tmeltim
+#define TOPPERS_sigtim
+
+/* task_manage.c */
+#define TOPPERS_act_tsk
+#define TOPPERS_iact_tsk
+#define TOPPERS_can_act
+#define TOPPERS_ext_tsk
+#define TOPPERS_ter_tsk
+#define TOPPERS_chg_pri
+#define TOPPERS_get_pri
+#define TOPPERS_get_inf
+
+/* task_refer.c */
+#define TOPPERS_ref_tsk
+
+/* task_sync.c */
+#define TOPPERS_slp_tsk
+#define TOPPERS_tslp_tsk
+#define TOPPERS_wup_tsk
+#define TOPPERS_iwup_tsk
+#define TOPPERS_can_wup
+#define TOPPERS_rel_wai
+#define TOPPERS_irel_wai
+#define TOPPERS_sus_tsk
+#define TOPPERS_rsm_tsk
+#define TOPPERS_dly_tsk
+
+/* task_except.c */
+#define TOPPERS_ras_tex
+#define TOPPERS_iras_tex
+#define TOPPERS_dis_tex
+#define TOPPERS_ena_tex
+#define TOPPERS_sns_tex
+#define TOPPERS_ref_tex
+
+/* semaphore.c */
+#define TOPPERS_semini
+#define TOPPERS_sig_sem
+#define TOPPERS_isig_sem
+#define TOPPERS_wai_sem
+#define TOPPERS_pol_sem
+#define TOPPERS_twai_sem
+#define TOPPERS_ini_sem
+#define TOPPERS_ref_sem
+
+/* eventflag.c */
+#define TOPPERS_flgini
+#define TOPPERS_flgcnd
+#define TOPPERS_set_flg
+#define TOPPERS_iset_flg
+#define TOPPERS_clr_flg
+#define TOPPERS_wai_flg
+#define TOPPERS_pol_flg
+#define TOPPERS_twai_flg
+#define TOPPERS_ini_flg
+#define TOPPERS_ref_flg
+
+/* dataqueue.c */
+#define TOPPERS_dtqini
+#define TOPPERS_dtqenq
+#define TOPPERS_dtqfenq
+#define TOPPERS_dtqdeq
+#define TOPPERS_dtqsnd
+#define TOPPERS_dtqfsnd
+#define TOPPERS_dtqrcv
+#define TOPPERS_snd_dtq
+#define TOPPERS_psnd_dtq
+#define TOPPERS_ipsnd_dtq
+#define TOPPERS_tsnd_dtq
+#define TOPPERS_fsnd_dtq
+#define TOPPERS_ifsnd_dtq
+#define TOPPERS_rcv_dtq
+#define TOPPERS_prcv_dtq
+#define TOPPERS_trcv_dtq
+#define TOPPERS_ini_dtq
+#define TOPPERS_ref_dtq
+
+/* pridataq.c */
+#define TOPPERS_pdqini
+#define TOPPERS_pdqenq
+#define TOPPERS_pdqdeq
+#define TOPPERS_pdqsnd
+#define TOPPERS_pdqrcv
+#define TOPPERS_snd_pdq
+#define TOPPERS_psnd_pdq
+#define TOPPERS_ipsnd_pdq
+#define TOPPERS_tsnd_pdq
+#define TOPPERS_rcv_pdq
+#define TOPPERS_prcv_pdq
+#define TOPPERS_trcv_pdq
+#define TOPPERS_ini_pdq
+#define TOPPERS_ref_pdq
+
+/* mailbox.c */
+#define TOPPERS_mbxini
+#define TOPPERS_snd_mbx
+#define TOPPERS_rcv_mbx
+#define TOPPERS_prcv_mbx
+#define TOPPERS_trcv_mbx
+#define TOPPERS_ini_mbx
+#define TOPPERS_ref_mbx
+
+/* mempfix.c */
+#define TOPPERS_mpfini
+#define TOPPERS_mpfget
+#define TOPPERS_get_mpf
+#define TOPPERS_pget_mpf
+#define TOPPERS_tget_mpf
+#define TOPPERS_rel_mpf
+#define TOPPERS_ini_mpf
+#define TOPPERS_ref_mpf
+
+/* time_manage.c */
+#define TOPPERS_get_tim
+#define TOPPERS_get_utm
+
+/* cyclic.c */
+#define TOPPERS_cycini
+#define TOPPERS_sta_cyc
+#define TOPPERS_stp_cyc
+#define TOPPERS_ref_cyc
+#define TOPPERS_cyccal
+
+/* alarm.c */
+#define TOPPERS_almini
+#define TOPPERS_sta_alm
+#define TOPPERS_ista_alm
+#define TOPPERS_stp_alm
+#define TOPPERS_istp_alm
+#define TOPPERS_ref_alm
+#define TOPPERS_almcal
+
+/* sys_manage.c */
+#define TOPPERS_rot_rdq
+#define TOPPERS_irot_rdq
+#define TOPPERS_get_tid
+#define TOPPERS_iget_tid
+#define TOPPERS_loc_cpu
+#define TOPPERS_iloc_cpu
+#define TOPPERS_unl_cpu
+#define TOPPERS_iunl_cpu
+#define TOPPERS_dis_dsp
+#define TOPPERS_ena_dsp
+#define TOPPERS_sns_ctx
+#define TOPPERS_sns_loc
+#define TOPPERS_sns_dsp
+#define TOPPERS_sns_dpn
+#define TOPPERS_sns_ker
+
+/* interrupt.c */
+#define TOPPERS_intini
+#define TOPPERS_dis_int
+#define TOPPERS_ena_int
+#define TOPPERS_chg_ipm
+#define TOPPERS_get_ipm
+
+/* exception.c */
+#define TOPPERS_excini
+#define TOPPERS_xsns_dpn
+#define TOPPERS_xsns_xpn
+
+#endif /* TOPPERS_ALLFUNC_H */
Index: /asp_ewarm/asp-1.7.0/kernel/check.h
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/check.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/check.h	(revision 61)
@@ -0,0 +1,288 @@
+/*
+ *  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-2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: check.h 1940 2010-10-03 15:09:34Z ertl-hiro $
+ */
+
+/*
+ *		G[`FbNp}N
+ */
+
+#ifndef TOPPERS_CHECK_H
+#define TOPPERS_CHECK_H
+
+/*
+ *  DæxÌÍÍÌ»è
+ */
+#define VALID_TPRI(tpri)	(TMIN_TPRI <= (tpri) && (tpri) <= TMAX_TPRI)
+
+#ifndef VALID_INTPRI_CHGIPM
+#define VALID_INTPRI_CHGIPM(intpri) \
+				(TMIN_INTPRI <= (intpri) && (intpri) <= TIPM_ENAALL)
+#endif /* VALID_INTPRI_CHGIPM */
+
+/*
+ *  ^XNDæxÌ`FbNiE_PARj
+ */
+#define CHECK_TPRI(tpri) {									\
+	if (!VALID_TPRI(tpri)) {								\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_TPRI_INI(tpri) {								\
+	if (!(VALID_TPRI(tpri) || (tpri) == TPRI_INI)) {		\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_TPRI_SELF(tpri) {								\
+	if (!(VALID_TPRI(tpri) || (tpri) == TPRI_SELF)) {		\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  ^CAEgwèlÌ`FbNiE_PARj
+ */
+#define CHECK_TMOUT(tmout) {								\
+	if (!(TMO_FEVR <= (tmout))) {							\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  ÝDæxÌ`FbNiE_PARj
+ */
+#define CHECK_INTPRI_CHGIPM(intpri) {						\
+	if (!VALID_INTPRI_CHGIPM(intpri)) {						\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  ÝÔÌ`FbNiE_PARj
+ */
+#define CHECK_INTNO_DISINT(intno) {							\
+	if (!VALID_INTNO_DISINT(intno)) {						\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  »Ì¼Ìp[^G[Ì`FbNiE_PARj
+ */
+#define CHECK_PAR(exp) {									\
+	if (!(exp)) {											\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  IuWFNgIDÌÍÍÌ»è
+ */
+#define VALID_TSKID(tskid)	(TMIN_TSKID <= (tskid) && (tskid) <= tmax_tskid)
+#define VALID_SEMID(semid)	(TMIN_SEMID <= (semid) && (semid) <= tmax_semid)
+#define VALID_FLGID(flgid)	(TMIN_FLGID <= (flgid) && (flgid) <= tmax_flgid)
+#define VALID_DTQID(dtqid)	(TMIN_DTQID <= (dtqid) && (dtqid) <= tmax_dtqid)
+#define VALID_PDQID(pdqid)	(TMIN_PDQID <= (pdqid) && (pdqid) <= tmax_pdqid)
+#define VALID_MBXID(mbxid)	(TMIN_MBXID <= (mbxid) && (mbxid) <= tmax_mbxid)
+#define VALID_MPFID(mpfid)	(TMIN_MPFID <= (mpfid) && (mpfid) <= tmax_mpfid)
+#define VALID_CYCID(cycid)	(TMIN_CYCID <= (cycid) && (cycid) <= tmax_cycid)
+#define VALID_ALMID(almid)	(TMIN_ALMID <= (almid) && (almid) <= tmax_almid)
+
+/*
+ *  IuWFNgIDÌ`FbNiE_IDj
+ */
+#define CHECK_TSKID(tskid) {								\
+	if (!VALID_TSKID(tskid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_TSKID_SELF(tskid) {							\
+	if (!(VALID_TSKID(tskid) || (tskid) == TSK_SELF)) {		\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_SEMID(semid) {								\
+	if (!VALID_SEMID(semid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_FLGID(flgid) {								\
+	if (!VALID_FLGID(flgid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_DTQID(dtqid) {								\
+	if (!VALID_DTQID(dtqid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_PDQID(pdqid) {								\
+	if (!VALID_PDQID(pdqid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_MBXID(mbxid) {								\
+	if (!VALID_MBXID(mbxid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_MPFID(mpfid) {								\
+	if (!VALID_MPFID(mpfid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_CYCID(cycid) {								\
+	if (!VALID_CYCID(cycid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_ALMID(almid) {								\
+	if (!VALID_ALMID(almid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  ÄoµReLXgÌ`FbNiE_CTXj
+ */
+#define CHECK_TSKCTX() {									\
+	if (sense_context()) {									\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_INTCTX() {									\
+	if (!sense_context()) {									\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  ÄoµReLXgÆCPUbNóÔÌ`FbNiE_CTXj
+ */
+#define CHECK_TSKCTX_UNL() {								\
+	if (sense_context() || t_sense_lock()) {				\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_INTCTX_UNL() {								\
+	if (!sense_context() || i_sense_lock()) {				\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  fBXpb`Û¯óÔÅÈ¢©Ì`FbNiE_CTXj
+ */
+#define CHECK_DISPATCH() {									\
+	if (sense_context() || t_sense_lock() || !dspflg) {		\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  »Ì¼ÌReLXgG[Ì`FbNiE_CTXj
+ */
+#define CHECK_CTX(exp) {									\
+	if (!(exp)) {											\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  ©^XNðwèµÄ¢È¢©Ì`FbNiE_ILUSEj
+ */
+#define CHECK_NONSELF(p_tcb) {								\
+	if ((p_tcb) == p_runtsk) {								\
+		ercd = E_ILUSE;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  »Ì¼Ìs³gpG[Ì`FbNiE_ILUSEj
+ */
+#define CHECK_ILUSE(exp) {									\
+	if (!(exp)) {											\
+		ercd = E_ILUSE;										\
+		goto error_exit;									\
+	}														\
+}
+
+#endif /* TOPPERS_CHECK_H */
Index: /asp_ewarm/asp-1.7.0/kernel/cyclic.c
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/cyclic.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/cyclic.c	(revision 61)
@@ -0,0 +1,271 @@
+/*
+ *  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-2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: cyclic.c 1358 2008-09-21 09:16:57Z ertl-hiro $
+ */
+
+/*
+ *		üúnh@\
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "cyclic.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_CYC_ENTER
+#define LOG_CYC_ENTER(p_cyccb)
+#endif /* LOG_CYC_ENTER */
+
+#ifndef LOG_CYC_LEAVE
+#define LOG_CYC_LEAVE(p_cyccb)
+#endif /* LOG_CYC_LEAVE */
+
+#ifndef LOG_STA_CYC_ENTER
+#define LOG_STA_CYC_ENTER(cycid)
+#endif /* LOG_STA_CYC_ENTER */
+
+#ifndef LOG_STA_CYC_LEAVE
+#define LOG_STA_CYC_LEAVE(ercd)
+#endif /* LOG_STA_CYC_LEAVE */
+
+#ifndef LOG_STP_CYC_ENTER
+#define LOG_STP_CYC_ENTER(cycid)
+#endif /* LOG_STP_CYC_ENTER */
+
+#ifndef LOG_STP_CYC_LEAVE
+#define LOG_STP_CYC_LEAVE(ercd)
+#endif /* LOG_STP_CYC_LEAVE */
+
+#ifndef LOG_REF_CYC_ENTER
+#define LOG_REF_CYC_ENTER(cycid, pk_rcyc)
+#endif /* LOG_REF_CYC_ENTER */
+
+#ifndef LOG_REF_CYC_LEAVE
+#define LOG_REF_CYC_LEAVE(ercd, pk_rcyc)
+#endif /* LOG_REF_CYC_LEAVE */
+
+/*
+ *  üúnhÌ
+ */
+#define tnum_cyc	((uint_t)(tmax_cycid - TMIN_CYCID + 1))
+
+/*
+ *  üúnhID©çüúnhÇubNðæèo·½ßÌ}N
+ */
+#define INDEX_CYC(cycid)	((uint_t)((cycid) - TMIN_CYCID))
+#define get_cyccb(cycid)	(&(cyccb_table[INDEX_CYC(cycid)]))
+
+/*
+ *  üúnhN®Ì½ßÌ^CCxgubNÌo^
+ */
+Inline void
+tmevtb_enqueue_cyc(CYCCB *p_cyccb, EVTTIM evttim)
+{
+	tmevtb_enqueue_evttim(&(p_cyccb->tmevtb), evttim,
+								(CBACK) call_cychdr, (void *) p_cyccb);
+	p_cyccb->evttim = evttim;
+}
+
+/*
+ *  üúnh@\Ìú»
+ */
+#ifdef TOPPERS_cycini
+
+void
+initialize_cyclic(void)
+{
+	uint_t	i;
+	CYCCB	*p_cyccb;
+
+	for (p_cyccb = cyccb_table, i = 0; i < tnum_cyc; p_cyccb++, i++) {
+		p_cyccb->p_cycinib = &(cycinib_table[i]);
+		if ((p_cyccb->p_cycinib->cycatr & TA_STA) != 0U) {
+			p_cyccb->cycsta = true;
+			tmevtb_enqueue_cyc(p_cyccb, (EVTTIM)(p_cyccb->p_cycinib->cycphs));
+		}
+		else {
+			p_cyccb->cycsta = false;
+		}
+	}
+}
+
+#endif /* TOPPERS_cycini */
+
+/*
+ *  üúnhÌ®ìJn
+ */
+#ifdef TOPPERS_sta_cyc
+
+ER
+sta_cyc(ID cycid)
+{
+	CYCCB	*p_cyccb;
+	ER		ercd;
+
+	LOG_STA_CYC_ENTER(cycid);
+	CHECK_TSKCTX_UNL();
+	CHECK_CYCID(cycid);
+	p_cyccb = get_cyccb(cycid);
+
+	t_lock_cpu();
+	if (p_cyccb->cycsta) {
+		tmevtb_dequeue(&(p_cyccb->tmevtb));
+	}
+	else {
+		p_cyccb->cycsta = true;
+	}
+	tmevtb_enqueue_cyc(p_cyccb, base_time + p_cyccb->p_cycinib->cycphs);
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_STA_CYC_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_sta_cyc */
+
+/*
+ *  üúnhÌ®ìâ~
+ */
+#ifdef TOPPERS_stp_cyc
+
+ER
+stp_cyc(ID cycid)
+{
+	CYCCB	*p_cyccb;
+	ER		ercd;
+
+	LOG_STP_CYC_ENTER(cycid);
+	CHECK_TSKCTX_UNL();
+	CHECK_CYCID(cycid);
+	p_cyccb = get_cyccb(cycid);
+
+	t_lock_cpu();
+	if (p_cyccb->cycsta) {
+		p_cyccb->cycsta = false;
+		tmevtb_dequeue(&(p_cyccb->tmevtb));
+	}
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_STP_CYC_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_stp_cyc */
+
+/*
+ *  üúnhÌóÔQÆ
+ */
+#ifdef TOPPERS_ref_cyc
+
+ER
+ref_cyc(ID cycid, T_RCYC *pk_rcyc)
+{
+	CYCCB	*p_cyccb;
+	ER		ercd;
+    
+	LOG_REF_CYC_ENTER(cycid, pk_rcyc);
+	CHECK_TSKCTX_UNL();
+	CHECK_CYCID(cycid);
+	p_cyccb = get_cyccb(cycid);
+
+	t_lock_cpu();
+	if (p_cyccb->cycsta) {
+		pk_rcyc->cycstat = TCYC_STA;
+		pk_rcyc->lefttim = tmevt_lefttim(&(p_cyccb->tmevtb));
+	}
+	else {
+		pk_rcyc->cycstat = TCYC_STP;
+	}
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_REF_CYC_LEAVE(ercd, pk_rcyc);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ref_cyc */
+
+/*
+ *  üúnhN®[`
+ */
+#ifdef TOPPERS_cyccal
+
+void
+call_cychdr(CYCCB *p_cyccb)
+{
+	PRI		saved_ipm;
+
+	/*
+	 *  ñÌN®Ì½ßÌ^CCxgubNðo^·éD
+	 *
+	 *  ¯¶^CeBbNÅüúnhðÄxN®·×«êÉÍC±Ì
+	 *  Ö©çsignal_timeÉßÁ½ãÉCÄx±ÌÖªÄÎêé±ÆÉÈ
+	 *  éD
+	 */
+	tmevtb_enqueue_cyc(p_cyccb, p_cyccb->evttim + p_cyccb->p_cycinib->cyctim);
+
+	/*
+	 *  üúnhðCCPUbNðóÔÅÄÑo·D
+	 */
+	saved_ipm = i_get_ipm();
+	i_unlock_cpu();
+
+	LOG_CYC_ENTER(p_cyccb);
+	(*((CYCHDR)(p_cyccb->p_cycinib->cychdr)))(p_cyccb->p_cycinib->exinf);
+	LOG_CYC_LEAVE(p_cyccb);
+
+	if (!i_sense_lock()) {
+		i_lock_cpu();
+	}
+	i_set_ipm(saved_ipm);
+}
+
+#endif /* TOPPERS_cyccal */
Index: /asp_ewarm/asp-1.7.0/kernel/cyclic.h
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/cyclic.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/cyclic.h	(revision 61)
@@ -0,0 +1,102 @@
+/*
+ *  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,2006 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: cyclic.h 748 2008-03-07 17:18:06Z hiro $
+ */
+
+/*
+ *		üúnh@\
+ */
+
+#ifndef TOPPERS_CYCLIC_H
+#define TOPPERS_CYCLIC_H
+
+#include "time_event.h"
+
+/*
+ *  üúnhú»ubN
+ */
+typedef struct cyclic_handler_initialization_block {
+	ATR			cycatr;			/* üúnh®« */
+	intptr_t	exinf;			/* üúnhÌg£îñ */
+	CYCHDR		cychdr;			/* üúnhÌN®Ôn */
+	RELTIM		cyctim;			/* üúnhÌN®üú */
+	RELTIM		cycphs;			/* üúnhÌN®Ê */
+} CYCINIB;
+
+/*
+ *  üúnhÇubN
+ */
+typedef struct cyclic_handler_control_block {
+	const CYCINIB *p_cycinib;	/* ú»ubNÖÌ|C^ */
+	bool_t		cycsta;			/* üúnhÌ®ìóÔ */
+	EVTTIM		evttim;			/* ÉüúnhðN®·é */
+	TMEVTB		tmevtb;			/* ^CCxgubN */
+} CYCCB;
+
+/*
+ *  üúnhIDÌÅålikernel_cfg.cj
+ */
+extern const ID	tmax_cycid;
+
+/*
+ *  üúnhú»ubNÌGAikernel_cfg.cj
+ */
+extern const CYCINIB	cycinib_table[];
+
+/*
+ *  üúnhÇubNÌGAikernel_cfg.cj
+ */
+extern CYCCB	cyccb_table[];
+
+/*
+ *  üúnh@\Ìú»
+ */
+extern void	initialize_cyclic(void);
+
+/*
+ *  üúnhN®[`
+ */
+extern void	call_cychdr(CYCCB *p_cyccb);
+
+#endif /* TOPPERS_CYCLIC_H */
Index: /asp_ewarm/asp-1.7.0/kernel/dataqueue.c
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/dataqueue.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/dataqueue.c	(revision 61)
@@ -0,0 +1,772 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: dataqueue.c 1960 2010-11-20 02:20:40Z ertl-hiro $
+ */
+
+/*
+ *		f[^L
+[@\
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+#include "dataqueue.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_SND_DTQ_ENTER
+#define LOG_SND_DTQ_ENTER(dtqid, data)
+#endif /* LOG_SND_DTQ_ENTER */
+
+#ifndef LOG_SND_DTQ_LEAVE
+#define LOG_SND_DTQ_LEAVE(ercd)
+#endif /* LOG_SND_DTQ_LEAVE */
+
+#ifndef LOG_PSND_DTQ_ENTER
+#define LOG_PSND_DTQ_ENTER(dtqid, data)
+#endif /* LOG_PSND_DTQ_ENTER */
+
+#ifndef LOG_PSND_DTQ_LEAVE
+#define LOG_PSND_DTQ_LEAVE(ercd)
+#endif /* LOG_PSND_DTQ_LEAVE */
+
+#ifndef LOG_IPSND_DTQ_ENTER
+#define LOG_IPSND_DTQ_ENTER(dtqid, data)
+#endif /* LOG_IPSND_DTQ_ENTER */
+
+#ifndef LOG_IPSND_DTQ_LEAVE
+#define LOG_IPSND_DTQ_LEAVE(ercd)
+#endif /* LOG_IPSND_DTQ_LEAVE */
+
+#ifndef LOG_TSND_DTQ_ENTER
+#define LOG_TSND_DTQ_ENTER(dtqid, data, tmout)
+#endif /* LOG_TSND_DTQ_ENTER */
+
+#ifndef LOG_TSND_DTQ_LEAVE
+#define LOG_TSND_DTQ_LEAVE(ercd)
+#endif /* LOG_TSND_DTQ_LEAVE */
+
+#ifndef LOG_FSND_DTQ_ENTER
+#define LOG_FSND_DTQ_ENTER(dtqid, data)
+#endif /* LOG_FSND_DTQ_ENTER */
+
+#ifndef LOG_FSND_DTQ_LEAVE
+#define LOG_FSND_DTQ_LEAVE(ercd)
+#endif /* LOG_FSND_DTQ_LEAVE */
+
+#ifndef LOG_IFSND_DTQ_ENTER
+#define LOG_IFSND_DTQ_ENTER(dtqid, data)
+#endif /* LOG_IFSND_DTQ_ENTER */
+
+#ifndef LOG_IFSND_DTQ_LEAVE
+#define LOG_IFSND_DTQ_LEAVE(ercd)
+#endif /* LOG_IFSND_DTQ_LEAVE */
+
+#ifndef LOG_RCV_DTQ_ENTER
+#define LOG_RCV_DTQ_ENTER(dtqid, p_data)
+#endif /* LOG_RCV_DTQ_ENTER */
+
+#ifndef LOG_RCV_DTQ_LEAVE
+#define LOG_RCV_DTQ_LEAVE(ercd, data)
+#endif /* LOG_RCV_DTQ_LEAVE */
+
+#ifndef LOG_PRCV_DTQ_ENTER
+#define LOG_PRCV_DTQ_ENTER(dtqid, p_data)
+#endif /* LOG_PRCV_DTQ_ENTER */
+
+#ifndef LOG_PRCV_DTQ_LEAVE
+#define LOG_PRCV_DTQ_LEAVE(ercd, data)
+#endif /* LOG_PRCV_DTQ_LEAVE */
+
+#ifndef LOG_TRCV_DTQ_ENTER
+#define LOG_TRCV_DTQ_ENTER(dtqid, p_data, tmout)
+#endif /* LOG_TRCV_DTQ_ENTER */
+
+#ifndef LOG_TRCV_DTQ_LEAVE
+#define LOG_TRCV_DTQ_LEAVE(ercd, data)
+#endif /* LOG_TRCV_DTQ_LEAVE */
+
+#ifndef LOG_INI_DTQ_ENTER
+#define LOG_INI_DTQ_ENTER(dtqid)
+#endif /* LOG_INI_DTQ_ENTER */
+
+#ifndef LOG_INI_DTQ_LEAVE
+#define LOG_INI_DTQ_LEAVE(ercd)
+#endif /* LOG_INI_DTQ_LEAVE */
+
+#ifndef LOG_REF_DTQ_ENTER
+#define LOG_REF_DTQ_ENTER(dtqid, pk_rdtq)
+#endif /* LOG_REF_DTQ_ENTER */
+
+#ifndef LOG_REF_DTQ_LEAVE
+#define LOG_REF_DTQ_LEAVE(ercd, pk_rdtq)
+#endif /* LOG_REF_DTQ_LEAVE */
+
+/*
+ *  f[^L
+[Ì
+ */
+#define tnum_dtq	((uint_t)(tmax_dtqid - TMIN_DTQID + 1))
+
+/*
+ *  f[^L
+[ID©çf[^L
+[ÇubNðæèo·½ßÌ}N
+ */
+#define INDEX_DTQ(dtqid)	((uint_t)((dtqid) - TMIN_DTQID))
+#define get_dtqcb(dtqid)	(&(dtqcb_table[INDEX_DTQ(dtqid)]))
+
+/*
+ *  f[^L
+[@\Ìú»
+ */
+#ifdef TOPPERS_dtqini
+
+void
+initialize_dataqueue(void)
+{
+	uint_t	i;
+	DTQCB	*p_dtqcb;
+
+	for (p_dtqcb = dtqcb_table, i = 0; i < tnum_dtq; p_dtqcb++, i++) {
+		queue_initialize(&(p_dtqcb->swait_queue));
+		p_dtqcb->p_dtqinib = &(dtqinib_table[i]);
+		queue_initialize(&(p_dtqcb->rwait_queue));
+		p_dtqcb->count = 0U;
+		p_dtqcb->head = 0U;
+		p_dtqcb->tail = 0U;
+	}
+}
+
+#endif /* TOPPERS_dtqini */
+
+/*
+ *  f[^L
+[ÇÌæÖÌf[^Ìi[
+ */
+#ifdef TOPPERS_dtqenq
+
+void
+enqueue_data(DTQCB *p_dtqcb, intptr_t data)
+{
+	(p_dtqcb->p_dtqinib->p_dtqmb + p_dtqcb->tail)->data = data;
+	p_dtqcb->count++;
+	p_dtqcb->tail++;
+	if (p_dtqcb->tail >= p_dtqcb->p_dtqinib->dtqcnt) {
+		p_dtqcb->tail = 0U;
+	}
+}
+
+#endif /* TOPPERS_dtqenq */
+
+/*
+ *  f[^L
+[ÇÌæÖÌf[^Ì­§i[
+ */
+#ifdef TOPPERS_dtqfenq
+
+void
+force_enqueue_data(DTQCB *p_dtqcb, intptr_t data)
+{
+	(p_dtqcb->p_dtqinib->p_dtqmb + p_dtqcb->tail)->data = data;
+	p_dtqcb->tail++;
+	if (p_dtqcb->tail >= p_dtqcb->p_dtqinib->dtqcnt) {
+		p_dtqcb->tail = 0U;
+	}
+	if (p_dtqcb->count < p_dtqcb->p_dtqinib->dtqcnt) {
+		p_dtqcb->count++;
+	}
+	else {
+		p_dtqcb->head = p_dtqcb->tail;
+	}
+}
+
+#endif /* TOPPERS_dtqfenq */
+
+/*
+ *  f[^L
+[ÇÌæ©çÌf[^Ìæoµ
+ */
+#ifdef TOPPERS_dtqdeq
+
+void
+dequeue_data(DTQCB *p_dtqcb, intptr_t *p_data)
+{
+	*p_data = (p_dtqcb->p_dtqinib->p_dtqmb + p_dtqcb->head)->data;
+	p_dtqcb->count--;
+	p_dtqcb->head++;
+	if (p_dtqcb->head >= p_dtqcb->p_dtqinib->dtqcnt) {
+		p_dtqcb->head = 0U;
+	}
+}
+
+#endif /* TOPPERS_dtqdeq */
+
+/*
+ *  f[^L
+[ÖÌf[^M
+ */
+#ifdef TOPPERS_dtqsnd
+
+bool_t
+send_data(DTQCB *p_dtqcb, intptr_t data, bool_t *p_reqdsp)
+{
+	TCB		*p_tcb;
+
+	if (!queue_empty(&(p_dtqcb->rwait_queue))) {
+		p_tcb = (TCB *) queue_delete_next(&(p_dtqcb->rwait_queue));
+		((WINFO_DTQ *)(p_tcb->p_winfo))->data = data;
+		*p_reqdsp = wait_complete(p_tcb);
+		return(true);
+	}
+	else if (p_dtqcb->count < p_dtqcb->p_dtqinib->dtqcnt) {
+		enqueue_data(p_dtqcb, data);
+		*p_reqdsp = false;
+		return(true);
+	}
+	else {
+		return(false);
+	}
+}
+
+#endif /* TOPPERS_dtqsnd */
+
+/*
+ *  f[^L
+[ÖÌf[^­§M
+ */
+#ifdef TOPPERS_dtqfsnd
+
+bool_t
+force_send_data(DTQCB *p_dtqcb, intptr_t data)
+{
+	TCB		*p_tcb;
+
+	if (!queue_empty(&(p_dtqcb->rwait_queue))) {
+		p_tcb = (TCB *) queue_delete_next(&(p_dtqcb->rwait_queue));
+		((WINFO_DTQ *)(p_tcb->p_winfo))->data = data;
+		return(wait_complete(p_tcb));
+	}
+	else {
+		force_enqueue_data(p_dtqcb, data);
+		return(false);
+	}
+}
+
+#endif /* TOPPERS_dtqfsnd */
+
+/*
+ *  MÒ¿L
+[Ìæª^XN©çÌf[^óM
+ */
+#ifdef TOPPERS_dtqrcv
+
+bool_t
+receive_data(DTQCB *p_dtqcb, intptr_t *p_data, bool_t *p_reqdsp)
+{
+	TCB		*p_tcb;
+	intptr_t data;
+
+	if (p_dtqcb->count > 0U) {
+		dequeue_data(p_dtqcb, p_data);
+		if (!queue_empty(&(p_dtqcb->swait_queue))) {
+			p_tcb = (TCB *) queue_delete_next(&(p_dtqcb->swait_queue));
+			data = ((WINFO_DTQ *)(p_tcb->p_winfo))->data;
+			enqueue_data(p_dtqcb, data);
+			*p_reqdsp = wait_complete(p_tcb);
+		}
+		else {
+			*p_reqdsp = false;
+		}
+		return(true);
+	}
+	else if (!queue_empty(&(p_dtqcb->swait_queue))) {
+		p_tcb = (TCB *) queue_delete_next(&(p_dtqcb->swait_queue));
+		*p_data = ((WINFO_DTQ *)(p_tcb->p_winfo))->data;
+		*p_reqdsp = wait_complete(p_tcb);
+		return(true);
+	}
+	else {
+		return(false);
+	}
+}
+
+#endif /* TOPPERS_dtqrcv */
+
+/*
+ *  f[^L
+[ÖÌM
+ */
+#ifdef TOPPERS_snd_dtq
+
+ER
+snd_dtq(ID dtqid, intptr_t data)
+{
+	DTQCB	*p_dtqcb;
+	WINFO_DTQ winfo_dtq;
+	bool_t	reqdsp;
+	ER		ercd;
+
+	LOG_SND_DTQ_ENTER(dtqid, data);
+	CHECK_DISPATCH();
+	CHECK_DTQID(dtqid);
+	p_dtqcb = get_dtqcb(dtqid);
+
+	t_lock_cpu();
+	if (send_data(p_dtqcb, data, &reqdsp)) {
+		if (reqdsp) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else {
+		winfo_dtq.data = data;
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_SDTQ);
+		wobj_make_wait((WOBJCB *) p_dtqcb, (WINFO_WOBJ *) &winfo_dtq);
+		dispatch();
+		ercd = winfo_dtq.winfo.wercd;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_SND_DTQ_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_snd_dtq */
+
+/*
+ *  f[^L
+[ÖÌMi|[Oj
+ */
+#ifdef TOPPERS_psnd_dtq
+
+ER
+psnd_dtq(ID dtqid, intptr_t data)
+{
+	DTQCB	*p_dtqcb;
+	bool_t	reqdsp;
+	ER		ercd;
+
+	LOG_PSND_DTQ_ENTER(dtqid, data);
+	CHECK_TSKCTX_UNL();
+	CHECK_DTQID(dtqid);
+	p_dtqcb = get_dtqcb(dtqid);
+
+	t_lock_cpu();
+	if (send_data(p_dtqcb, data, &reqdsp)) {
+		if (reqdsp) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_TMOUT;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_PSND_DTQ_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_psnd_dtq */
+
+/*
+ *  f[^L
+[ÖÌMi|[OCñ^XNReLXgpj
+ */
+#ifdef TOPPERS_ipsnd_dtq
+
+ER
+ipsnd_dtq(ID dtqid, intptr_t data)
+{
+	DTQCB	*p_dtqcb;
+	bool_t	reqdsp;
+	ER		ercd;
+
+	LOG_IPSND_DTQ_ENTER(dtqid, data);
+	CHECK_INTCTX_UNL();
+	CHECK_DTQID(dtqid);
+	p_dtqcb = get_dtqcb(dtqid);
+
+	i_lock_cpu();
+	if (send_data(p_dtqcb, data, &reqdsp)) {
+		if (reqdsp) {
+			reqflg = true;
+		}
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_TMOUT;
+	}
+	i_unlock_cpu();
+
+  error_exit:
+	LOG_IPSND_DTQ_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ipsnd_dtq */
+
+/*
+ *  f[^L
+[ÖÌMi^CAEg èj
+ */
+#ifdef TOPPERS_tsnd_dtq
+
+ER
+tsnd_dtq(ID dtqid, intptr_t data, TMO tmout)
+{
+	DTQCB	*p_dtqcb;
+	WINFO_DTQ winfo_dtq;
+	TMEVTB	tmevtb;
+	bool_t	reqdsp;
+	ER		ercd;
+
+	LOG_TSND_DTQ_ENTER(dtqid, data, tmout);
+	CHECK_DISPATCH();
+	CHECK_DTQID(dtqid);
+	CHECK_TMOUT(tmout);
+	p_dtqcb = get_dtqcb(dtqid);
+
+	t_lock_cpu();
+	if (send_data(p_dtqcb, data, &reqdsp)) {
+		if (reqdsp) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else if (tmout == TMO_POL) {
+		ercd = E_TMOUT;
+	}
+	else {
+		winfo_dtq.data = data;
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_SDTQ);
+		wobj_make_wait_tmout((WOBJCB *) p_dtqcb, (WINFO_WOBJ *) &winfo_dtq,
+														&tmevtb, tmout);
+		dispatch();
+		ercd = winfo_dtq.winfo.wercd;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_TSND_DTQ_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_tsnd_dtq */
+
+/*
+ *  f[^L
+[ÖÌ­§M
+ */
+#ifdef TOPPERS_fsnd_dtq
+
+ER
+fsnd_dtq(ID dtqid, intptr_t data)
+{
+	DTQCB	*p_dtqcb;	
+	ER		ercd;
+
+	LOG_FSND_DTQ_ENTER(dtqid, data);
+	CHECK_TSKCTX_UNL();
+	CHECK_DTQID(dtqid);
+	p_dtqcb = get_dtqcb(dtqid);
+	CHECK_ILUSE(p_dtqcb->p_dtqinib->dtqcnt > 0U);
+
+	t_lock_cpu();
+	if (force_send_data(p_dtqcb, data)) {
+		dispatch();
+	}
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_FSND_DTQ_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_fsnd_dtq */
+
+/*
+ *  f[^L
+[ÖÌ­§Miñ^XNReLXgpj
+ */
+#ifdef TOPPERS_ifsnd_dtq
+
+ER
+ifsnd_dtq(ID dtqid, intptr_t data)
+{
+	DTQCB	*p_dtqcb;
+	ER		ercd;
+
+	LOG_IFSND_DTQ_ENTER(dtqid, data);
+	CHECK_INTCTX_UNL();
+	CHECK_DTQID(dtqid);
+	p_dtqcb = get_dtqcb(dtqid);
+	CHECK_ILUSE(p_dtqcb->p_dtqinib->dtqcnt > 0U);
+
+	i_lock_cpu();
+	if (force_send_data(p_dtqcb, data)) {
+		reqflg = true;
+	}
+	ercd = E_OK;
+	i_unlock_cpu();
+
+  error_exit:
+	LOG_IFSND_DTQ_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ifsnd_dtq */
+
+/*
+ *  f[^L
+[©çÌóM
+ */
+#ifdef TOPPERS_rcv_dtq
+
+ER
+rcv_dtq(ID dtqid, intptr_t *p_data)
+{
+	DTQCB	*p_dtqcb;
+	WINFO_DTQ winfo_dtq;
+	bool_t	reqdsp;
+	ER		ercd;
+
+	LOG_RCV_DTQ_ENTER(dtqid, p_data);
+	CHECK_DISPATCH();
+	CHECK_DTQID(dtqid);
+	p_dtqcb = get_dtqcb(dtqid);
+
+	t_lock_cpu();
+	if (receive_data(p_dtqcb, p_data, &reqdsp)) {
+		if (reqdsp) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else {
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_RDTQ);
+		make_wait(&(winfo_dtq.winfo));
+		queue_insert_prev(&(p_dtqcb->rwait_queue), &(p_runtsk->task_queue));
+		winfo_dtq.p_dtqcb = p_dtqcb;
+		LOG_TSKSTAT(p_runtsk);
+		dispatch();
+		ercd = winfo_dtq.winfo.wercd;
+		if (ercd == E_OK) {
+			*p_data = winfo_dtq.data;
+		}
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_RCV_DTQ_LEAVE(ercd, *p_data);
+	return(ercd);
+}
+
+#endif /* TOPPERS_rcv_dtq */
+
+/*
+ *  f[^L
+[©çÌóMi|[Oj
+ */
+#ifdef TOPPERS_prcv_dtq
+
+ER
+prcv_dtq(ID dtqid, intptr_t *p_data)
+{
+	DTQCB	*p_dtqcb;
+	bool_t	reqdsp;
+	ER		ercd;
+
+	LOG_PRCV_DTQ_ENTER(dtqid, p_data);
+	CHECK_TSKCTX_UNL();
+	CHECK_DTQID(dtqid);
+	p_dtqcb = get_dtqcb(dtqid);
+
+	t_lock_cpu();
+	if (receive_data(p_dtqcb, p_data, &reqdsp)) {
+		if (reqdsp) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_TMOUT;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_PRCV_DTQ_LEAVE(ercd, *p_data);
+	return(ercd);
+}
+
+#endif /* TOPPERS_prcv_dtq */
+
+/*
+ *  f[^L
+[©çÌóMi^CAEg èj
+ */
+#ifdef TOPPERS_trcv_dtq
+
+ER
+trcv_dtq(ID dtqid, intptr_t *p_data, TMO tmout)
+{
+	DTQCB	*p_dtqcb;
+	WINFO_DTQ winfo_dtq;
+	TMEVTB	tmevtb;
+	bool_t	reqdsp;
+	ER		ercd;
+
+	LOG_TRCV_DTQ_ENTER(dtqid, p_data, tmout);
+	CHECK_DISPATCH();
+	CHECK_DTQID(dtqid);
+	CHECK_TMOUT(tmout);
+	p_dtqcb = get_dtqcb(dtqid);
+
+	t_lock_cpu();
+	if (receive_data(p_dtqcb, p_data, &reqdsp)) {
+		if (reqdsp) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else if (tmout == TMO_POL) {
+		ercd = E_TMOUT;
+	}
+	else {
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_RDTQ);
+		make_wait_tmout(&(winfo_dtq.winfo), &tmevtb, tmout);
+		queue_insert_prev(&(p_dtqcb->rwait_queue), &(p_runtsk->task_queue));
+		winfo_dtq.p_dtqcb = p_dtqcb;
+		LOG_TSKSTAT(p_runtsk);
+		dispatch();
+		ercd = winfo_dtq.winfo.wercd;
+		if (ercd == E_OK) {
+			*p_data = winfo_dtq.data;
+		}
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_TRCV_DTQ_LEAVE(ercd, *p_data);
+	return(ercd);
+}
+
+#endif /* TOPPERS_trcv_dtq */
+
+/*
+ *  f[^L
+[ÌÄú»
+ */
+#ifdef TOPPERS_ini_dtq
+
+ER
+ini_dtq(ID dtqid)
+{
+	DTQCB	*p_dtqcb;
+	bool_t	dspreq;
+	ER		ercd;
+    
+	LOG_INI_DTQ_ENTER(dtqid);
+	CHECK_TSKCTX_UNL();
+	CHECK_DTQID(dtqid);
+	p_dtqcb = get_dtqcb(dtqid);
+
+	t_lock_cpu();
+	dspreq = init_wait_queue(&(p_dtqcb->swait_queue));
+	if (init_wait_queue(&(p_dtqcb->rwait_queue))) {
+		dspreq = true;
+	};
+	p_dtqcb->count = 0U;
+	p_dtqcb->head = 0U;
+	p_dtqcb->tail = 0U;
+	if (dspreq) {
+		dispatch();
+	}
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_INI_DTQ_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ini_dtq */
+
+/*
+ *  f[^L
+[ÌóÔQÆ
+ */
+#ifdef TOPPERS_ref_dtq
+
+ER
+ref_dtq(ID dtqid, T_RDTQ *pk_rdtq)
+{
+	DTQCB	*p_dtqcb;
+	ER		ercd;
+    
+	LOG_REF_DTQ_ENTER(dtqid, pk_rdtq);
+	CHECK_TSKCTX_UNL();
+	CHECK_DTQID(dtqid);
+	p_dtqcb = get_dtqcb(dtqid);
+
+	t_lock_cpu();
+	pk_rdtq->stskid = wait_tskid(&(p_dtqcb->swait_queue));
+	pk_rdtq->rtskid = wait_tskid(&(p_dtqcb->rwait_queue));
+	pk_rdtq->sdtqcnt = p_dtqcb->count;
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_REF_DTQ_LEAVE(ercd, pk_rdtq);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ref_dtq */
Index: /asp_ewarm/asp-1.7.0/kernel/dataqueue.h
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/dataqueue.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/dataqueue.h	(revision 61)
@@ -0,0 +1,190 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: dataqueue.h 1960 2010-11-20 02:20:40Z ertl-hiro $
+ */
+
+/*
+ *		f[^L
+[@\
+ */
+
+#ifndef TOPPERS_DATAQUEUE_H
+#define TOPPERS_DATAQUEUE_H
+
+#include <queue.h>
+
+/*
+ *  f[^ÇubN
+ */
+typedef struct data_management_block {
+	intptr_t	data;			/* f[^{Ì */
+} DTQMB;
+
+/*
+ *  f[^L
+[ú»ubN
+ *
+ *  ±Ì\¢ÌÍC¯úEÊMIuWFNgÌú»ubNÌ¤Êª
+ *  iWOBJINIBjðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅC
+ *  ÅÌtB[hª¤ÊÉÈÁÄ¢éD
+ */
+typedef struct dataqueue_initialization_block {
+	ATR			dtqatr;			/* f[^L
+[®« */
+	uint_t		dtqcnt;			/* f[^L
+[ÌeÊ */
+	DTQMB		*p_dtqmb;		/* f[^L
+[ÇÌæÌæªÔn */
+} DTQINIB;
+
+/*
+ *  f[^L
+[ÇubN
+ *
+ *  ±Ì\¢ÌÍC¯úEÊMIuWFNgÌÇubNÌ¤ÊªiWOBJCBj
+ *  ðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅCÅÌ2ÂÌ
+ *  tB[hª¤ÊÉÈÁÄ¢éD
+ */
+typedef struct dataqueue_control_block {
+	QUEUE		swait_queue;	/* f[^L
+[MÒ¿L
+[ */
+	const DTQINIB *p_dtqinib;	/* ú»ubNÖÌ|C^ */
+	QUEUE		rwait_queue;	/* f[^L
+[óMÒ¿L
+[ */
+	uint_t		count;			/* f[^L
+[Ìf[^Ì */
+	uint_t		head;			/* ÅÌf[^Ìi[ê */
+	uint_t		tail;			/* ÅãÌf[^Ìi[êÌ */
+} DTQCB;
+
+/*
+ *  f[^L
+[Ò¿îñubNÌè`
+ *
+ *  ±Ì\¢ÌÍC¯úEÊMIuWFNgÌÒ¿îñubNÌ¤Êª
+ *  iWINFO_WOBJjðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅC
+ *  ÅÌ2ÂÌtB[hª¤ÊÉÈÁÄ¢éD
+ *  f[^L
+[ÖÌMÒ¿Æf[^L
+[©çÌóMÒ¿ÅC¯¶Ò¿î
+ *  ñubNðg¤D
+ */
+typedef struct dataqueue_waiting_information {
+	WINFO		winfo;			/* WÌÒ¿îñubN */
+	DTQCB		*p_dtqcb;		/* ÒÁÄ¢éf[^L
+[ÌÇubN */
+	intptr_t	data;			/* óMf[^ */
+} WINFO_DTQ;
+
+/*
+ *  f[^L
+[IDÌÅålikernel_cfg.cj
+ */
+extern const ID	tmax_dtqid;
+
+/*
+ *  f[^L
+[ú»ubNÌGAikernel_cfg.cj
+ */
+extern const DTQINIB	dtqinib_table[];
+
+/*
+ *  f[^L
+[ÇubNÌGAikernel_cfg.cj
+ */
+extern DTQCB	dtqcb_table[];
+
+/*
+ *  f[^L
+[ÇubN©çf[^L
+[IDðæèo·½ßÌ}N
+ */
+#define	DTQID(p_dtqcb)	((ID)(((p_dtqcb) - dtqcb_table) + TMIN_DTQID))
+
+/*
+ *  f[^L
+[@\Ìú»
+ */
+extern void	initialize_dataqueue(void);
+
+/*
+ *  f[^L
+[ÇÌæÖÌf[^Ìi[
+ */
+extern void	enqueue_data(DTQCB *p_dtqcb, intptr_t data);
+
+/*
+ *  f[^L
+[ÇÌæÖÌf[^Ì­§i[
+ */
+extern void	force_enqueue_data(DTQCB *p_dtqcb, intptr_t data);
+
+/*
+ *  f[^L
+[ÇÌæ©çÌf[^Ìæoµ
+ */
+extern void	dequeue_data(DTQCB *p_dtqcb, intptr_t *p_data);
+
+/*
+ *  f[^L
+[ÖÌf[^M
+ */
+extern bool_t	send_data(DTQCB *p_dtqcb, intptr_t data, bool_t *p_reqdsp);
+
+/*
+ *  f[^L
+[ÖÌf[^­§M
+ */
+extern bool_t	force_send_data(DTQCB *p_dtqcb, intptr_t data);
+
+/*
+ *  f[^L
+[©çÌf[^óM
+ */
+extern bool_t	receive_data(DTQCB *p_dtqcb, intptr_t *p_data,
+													bool_t *p_reqdsp);
+
+#endif /* TOPPERS_DATAQUEUE_H */
Index: /asp_ewarm/asp-1.7.0/kernel/eventflag.c
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/eventflag.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/eventflag.c	(revision 61)
@@ -0,0 +1,500 @@
+/*
+ *  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-2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: eventflag.c 748 2008-03-07 17:18:06Z hiro $
+ */
+
+/*
+ *		CxgtO@\
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+#include "eventflag.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_SET_FLG_ENTER
+#define LOG_SET_FLG_ENTER(flgid, setptn)
+#endif /* LOG_SET_FLG_ENTER */
+
+#ifndef LOG_SET_FLG_LEAVE
+#define LOG_SET_FLG_LEAVE(ercd)
+#endif /* LOG_SET_FLG_LEAVE */
+
+#ifndef LOG_ISET_FLG_ENTER
+#define LOG_ISET_FLG_ENTER(flgid, setptn)
+#endif /* LOG_ISET_FLG_ENTER */
+
+#ifndef LOG_ISET_FLG_LEAVE
+#define LOG_ISET_FLG_LEAVE(ercd)
+#endif /* LOG_ISET_FLG_LEAVE */
+
+#ifndef LOG_CLR_FLG_ENTER
+#define LOG_CLR_FLG_ENTER(flgid, clrptn)
+#endif /* LOG_CLR_FLG_ENTER */
+
+#ifndef LOG_CLR_FLG_LEAVE
+#define LOG_CLR_FLG_LEAVE(ercd)
+#endif /* LOG_CLR_FLG_LEAVE */
+
+#ifndef LOG_WAI_FLG_ENTER
+#define LOG_WAI_FLG_ENTER(flgid, waiptn, wfmode, p_flgptn)
+#endif /* LOG_WAI_FLG_ENTER */
+
+#ifndef LOG_WAI_FLG_LEAVE
+#define LOG_WAI_FLG_LEAVE(ercd, flgptn)
+#endif /* LOG_WAI_FLG_LEAVE */
+
+#ifndef LOG_POL_FLG_ENTER
+#define LOG_POL_FLG_ENTER(flgid, waiptn, wfmode, p_flgptn)
+#endif /* LOG_POL_FLG_ENTER */
+
+#ifndef LOG_POL_FLG_LEAVE
+#define LOG_POL_FLG_LEAVE(ercd, flgptn)
+#endif /* LOG_POL_FLG_LEAVE */
+
+#ifndef LOG_TWAI_FLG_ENTER
+#define LOG_TWAI_FLG_ENTER(flgid, waiptn, wfmode, p_flgptn, tmout)
+#endif /* LOG_TWAI_FLG_ENTER */
+
+#ifndef LOG_TWAI_FLG_LEAVE
+#define LOG_TWAI_FLG_LEAVE(ercd, flgptn)
+#endif /* LOG_TWAI_FLG_LEAVE */
+
+#ifndef LOG_INI_FLG_ENTER
+#define LOG_INI_FLG_ENTER(flgid)
+#endif /* LOG_INI_FLG_ENTER */
+
+#ifndef LOG_INI_FLG_LEAVE
+#define LOG_INI_FLG_LEAVE(ercd)
+#endif /* LOG_INI_FLG_LEAVE */
+
+#ifndef LOG_REF_FLG_ENTER
+#define LOG_REF_FLG_ENTER(flgid, pk_rflg)
+#endif /* LOG_REF_FLG_ENTER */
+
+#ifndef LOG_REF_FLG_LEAVE
+#define LOG_REF_FLG_LEAVE(ercd, pk_rflg)
+#endif /* LOG_REF_FLG_LEAVE */
+
+/*
+ *  CxgtOÌ
+ */
+#define tnum_flg	((uint_t)(tmax_flgid - TMIN_FLGID + 1))
+
+/*
+ *  CxgtOID©çCxgtOÇubNðæèo·½ßÌ}N
+ */
+#define INDEX_FLG(flgid)	((uint_t)((flgid) - TMIN_FLGID))
+#define get_flgcb(flgid)	(&(flgcb_table[INDEX_FLG(flgid)]))
+
+/*
+ *  CxgtO@\Ìú»
+ */
+#ifdef TOPPERS_flgini
+
+void
+initialize_eventflag(void)
+{
+	uint_t	i;
+	FLGCB	*p_flgcb;
+
+	for (p_flgcb = flgcb_table, i = 0; i < tnum_flg; p_flgcb++, i++) {
+		queue_initialize(&(p_flgcb->wait_queue));
+		p_flgcb->p_flginib = &(flginib_table[i]);
+		p_flgcb->flgptn = p_flgcb->p_flginib->iflgptn;
+	}
+}
+
+#endif /* TOPPERS_flgini */
+
+/*
+ *  CxgtOÒ¿ððÌ`FbN
+ */
+#ifdef TOPPERS_flgcnd
+
+bool_t
+check_flg_cond(FLGCB *p_flgcb, FLGPTN waiptn, MODE wfmode, FLGPTN *p_flgptn)
+{
+	if ((wfmode & TWF_ORW) != 0U ? (p_flgcb->flgptn & waiptn) != 0U
+									: (p_flgcb->flgptn & waiptn) == waiptn) {
+		*p_flgptn = p_flgcb->flgptn;
+		if ((p_flgcb->p_flginib->flgatr & TA_CLR) != 0U) {
+			p_flgcb->flgptn = 0U;
+		}
+		return(true);
+	}
+	return(false);
+}
+
+#endif /* TOPPERS_flgcnd */
+
+/*
+ *  CxgtOÌZbg
+ */
+#ifdef TOPPERS_set_flg
+
+ER
+set_flg(ID flgid, FLGPTN setptn)
+{
+	FLGCB	*p_flgcb;
+	QUEUE	*p_queue;
+	TCB		*p_tcb;
+	WINFO_FLG *p_winfo_flg;
+	bool_t	dspreq = false;
+	ER		ercd;
+
+	LOG_SET_FLG_ENTER(flgid, setptn);
+	CHECK_TSKCTX_UNL();
+	CHECK_FLGID(flgid);
+	p_flgcb = get_flgcb(flgid);
+
+	t_lock_cpu();
+	p_flgcb->flgptn |= setptn;
+	p_queue = p_flgcb->wait_queue.p_next;
+	while (p_queue != &(p_flgcb->wait_queue)) {
+		p_tcb = (TCB *) p_queue;
+		p_queue = p_queue->p_next;
+		p_winfo_flg = (WINFO_FLG *)(p_tcb->p_winfo);
+		if (check_flg_cond(p_flgcb, p_winfo_flg->waiptn,
+							p_winfo_flg->wfmode, &(p_winfo_flg->flgptn))) {
+			queue_delete(&(p_tcb->task_queue));
+			if (wait_complete(p_tcb)) {
+				dspreq = true;
+			}
+			if ((p_flgcb->p_flginib->flgatr & TA_CLR) != 0U) {
+				break;
+			}
+		}
+	}
+	if (dspreq) {
+		dispatch();
+	}
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_SET_FLG_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_set_flg */
+
+/*
+ *  CxgtOÌZbgiñ^XNReLXgpj
+ */
+#ifdef TOPPERS_iset_flg
+
+ER
+iset_flg(ID flgid, FLGPTN setptn)
+{
+	FLGCB	*p_flgcb;
+	QUEUE	*p_queue;
+	TCB		*p_tcb;
+	WINFO_FLG *p_winfo_flg;
+	ER		ercd;
+
+	LOG_ISET_FLG_ENTER(flgid, setptn);
+	CHECK_INTCTX_UNL();
+	CHECK_FLGID(flgid);
+	p_flgcb = get_flgcb(flgid);
+
+	i_lock_cpu();
+	p_flgcb->flgptn |= setptn;
+	p_queue = p_flgcb->wait_queue.p_next;
+	while (p_queue != &(p_flgcb->wait_queue)) {
+		p_tcb = (TCB *) p_queue;
+		p_queue = p_queue->p_next;
+		p_winfo_flg = (WINFO_FLG *)(p_tcb->p_winfo);
+		if (check_flg_cond(p_flgcb, p_winfo_flg->waiptn,
+							p_winfo_flg->wfmode, &(p_winfo_flg->flgptn))) {
+			queue_delete(&(p_tcb->task_queue));
+			if (wait_complete(p_tcb)) {
+				reqflg = true;
+			}
+			if ((p_flgcb->p_flginib->flgatr & TA_CLR) != 0U) {
+				break;
+			}
+		}
+	}
+	ercd = E_OK;
+	i_unlock_cpu();
+
+  error_exit:
+	LOG_ISET_FLG_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_iset_flg */
+
+/*
+ *  CxgtOÌNA
+ */
+#ifdef TOPPERS_clr_flg
+
+ER
+clr_flg(ID flgid, FLGPTN clrptn)
+{
+	FLGCB	*p_flgcb;
+	ER		ercd;
+
+	LOG_CLR_FLG_ENTER(flgid, clrptn);
+	CHECK_TSKCTX_UNL();
+	CHECK_FLGID(flgid);
+	p_flgcb = get_flgcb(flgid);
+
+	t_lock_cpu();
+	p_flgcb->flgptn &= clrptn; 
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_CLR_FLG_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_clr_flg */
+
+/*
+ *  CxgtOÒ¿
+ */
+#ifdef TOPPERS_wai_flg
+
+ER
+wai_flg(ID flgid, FLGPTN waiptn, MODE wfmode, FLGPTN *p_flgptn)
+{
+	FLGCB	*p_flgcb;
+	WINFO_FLG winfo_flg;
+	ER		ercd;
+
+	LOG_WAI_FLG_ENTER(flgid, waiptn, wfmode, p_flgptn);
+	CHECK_DISPATCH();
+	CHECK_FLGID(flgid);
+	CHECK_PAR(waiptn != 0U);
+	CHECK_PAR(wfmode == TWF_ORW || wfmode == TWF_ANDW);
+	p_flgcb = get_flgcb(flgid);
+
+	t_lock_cpu();
+	if ((p_flgcb->p_flginib->flgatr & TA_WMUL) == 0U
+					&& !queue_empty(&(p_flgcb->wait_queue))) {
+		ercd = E_ILUSE;
+	}
+	else if (check_flg_cond(p_flgcb, waiptn, wfmode, p_flgptn)) {
+		ercd = E_OK;
+	}
+	else {
+		winfo_flg.waiptn = waiptn;
+		winfo_flg.wfmode = wfmode;
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_FLG);
+		wobj_make_wait((WOBJCB *) p_flgcb, (WINFO_WOBJ *) &winfo_flg);
+		dispatch();
+		ercd = winfo_flg.winfo.wercd;
+		if (ercd == E_OK) {
+			*p_flgptn = winfo_flg.flgptn;
+		}
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_WAI_FLG_LEAVE(ercd, *p_flgptn);
+	return(ercd);
+}
+
+#endif /* TOPPERS_wai_flg */
+
+/*
+ *  CxgtOÒ¿i|[Oj
+ */
+#ifdef TOPPERS_pol_flg
+
+ER
+pol_flg(ID flgid, FLGPTN waiptn, MODE wfmode, FLGPTN *p_flgptn)
+{
+	FLGCB	*p_flgcb;
+	ER		ercd;
+
+	LOG_POL_FLG_ENTER(flgid, waiptn, wfmode, p_flgptn);
+	CHECK_TSKCTX_UNL();
+	CHECK_FLGID(flgid);
+	CHECK_PAR(waiptn != 0U);
+	CHECK_PAR(wfmode == TWF_ORW || wfmode == TWF_ANDW);
+	p_flgcb = get_flgcb(flgid);
+
+	t_lock_cpu();
+	if ((p_flgcb->p_flginib->flgatr & TA_WMUL) == 0U
+					&& !queue_empty(&(p_flgcb->wait_queue))) {
+		ercd = E_ILUSE;
+	}
+	else if (check_flg_cond(p_flgcb, waiptn, wfmode, p_flgptn)) {
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_TMOUT;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_POL_FLG_LEAVE(ercd, *p_flgptn);
+	return(ercd);
+}
+
+#endif /* TOPPERS_pol_flg */
+
+/*
+ *  CxgtOÒ¿i^CAEg èj
+ */
+#ifdef TOPPERS_twai_flg
+
+ER
+twai_flg(ID flgid, FLGPTN waiptn, MODE wfmode, FLGPTN *p_flgptn, TMO tmout)
+{
+	FLGCB	*p_flgcb;
+	WINFO_FLG winfo_flg;
+	TMEVTB	tmevtb;
+	ER		ercd;
+
+	LOG_TWAI_FLG_ENTER(flgid, waiptn, wfmode, p_flgptn, tmout);
+	CHECK_DISPATCH();
+	CHECK_FLGID(flgid);
+	CHECK_PAR(waiptn != 0U);
+	CHECK_PAR(wfmode == TWF_ORW || wfmode == TWF_ANDW);
+	CHECK_TMOUT(tmout);
+	p_flgcb = get_flgcb(flgid);
+
+	t_lock_cpu();
+	if ((p_flgcb->p_flginib->flgatr & TA_WMUL) == 0U
+					&& !queue_empty(&(p_flgcb->wait_queue))) {
+		ercd = E_ILUSE;
+	}
+	else if (check_flg_cond(p_flgcb, waiptn, wfmode, p_flgptn)) {
+		ercd = E_OK;
+	}
+	else if (tmout == TMO_POL) {
+		ercd = E_TMOUT;
+	}
+	else {
+		winfo_flg.waiptn = waiptn;
+		winfo_flg.wfmode = wfmode;
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_FLG);
+		wobj_make_wait_tmout((WOBJCB *) p_flgcb, (WINFO_WOBJ *) &winfo_flg,
+														&tmevtb, tmout);
+		dispatch();
+		ercd = winfo_flg.winfo.wercd;
+		if (ercd == E_OK) {
+			*p_flgptn = winfo_flg.flgptn;
+		}
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_TWAI_FLG_LEAVE(ercd, *p_flgptn);
+	return(ercd);
+}
+
+#endif /* TOPPERS_twai_flg */
+
+/*
+ *  CxgtOÌÄú»
+ */
+#ifdef TOPPERS_ini_flg
+
+ER
+ini_flg(ID flgid)
+{
+	FLGCB	*p_flgcb;
+	bool_t	dspreq;
+	ER		ercd;
+    
+	LOG_INI_FLG_ENTER(flgid);
+	CHECK_TSKCTX_UNL();
+	CHECK_FLGID(flgid);
+	p_flgcb = get_flgcb(flgid);
+
+	t_lock_cpu();
+	dspreq = init_wait_queue(&(p_flgcb->wait_queue));
+	p_flgcb->flgptn = p_flgcb->p_flginib->iflgptn;
+	if (dspreq) {
+		dispatch();
+	}
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_INI_FLG_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ini_flg */
+
+/*
+ *  CxgtOÌóÔQÆ
+ */
+#ifdef TOPPERS_ref_flg
+
+ER
+ref_flg(ID flgid, T_RFLG *pk_rflg)
+{
+	FLGCB	*p_flgcb;
+	ER		ercd;
+    
+	LOG_REF_FLG_ENTER(flgid, pk_rflg);
+	CHECK_TSKCTX_UNL();
+	CHECK_FLGID(flgid);
+	p_flgcb = get_flgcb(flgid);
+
+	t_lock_cpu();
+	pk_rflg->wtskid = wait_tskid(&(p_flgcb->wait_queue));
+	pk_rflg->flgptn = p_flgcb->flgptn;
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_REF_FLG_LEAVE(ercd, pk_rflg);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ref_flg */
Index: /asp_ewarm/asp-1.7.0/kernel/eventflag.h
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/eventflag.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/eventflag.h	(revision 61)
@@ -0,0 +1,131 @@
+/*
+ *  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-2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: eventflag.h 748 2008-03-07 17:18:06Z hiro $
+ */
+
+/*
+ *		CxgtO@\
+ */
+
+#ifndef TOPPERS_EVENTFLAG_H
+#define TOPPERS_EVENTFLAG_H
+
+#include <queue.h>
+
+/*
+ *  CxgtOú»ubN
+ *
+ *  ±Ì\¢ÌÍC¯úEÊMIuWFNgÌú»ubNÌ¤Êª
+ *  iWOBJINIBjðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅC
+ *  ÅÌtB[hª¤ÊÉÈÁÄ¢éD
+ */
+typedef struct eventflag_initialization_block {
+	ATR			flgatr;			/* CxgtO®« */
+	FLGPTN		iflgptn;		/* CxgtOÌrbgp^[Ìúl */
+} FLGINIB;
+
+/*
+ *  CxgtOÇubN
+ *
+ *  ±Ì\¢ÌÍC¯úEÊMIuWFNgÌÇubNÌ¤ÊªiWOBJCBj
+ *  ðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅCÅÌ2ÂÌ
+ *  tB[hª¤ÊÉÈÁÄ¢éD
+ */
+typedef struct eventflag_control_block {
+	QUEUE		wait_queue;		/* CxgtOÒ¿L
+[ */
+	const FLGINIB *p_flginib;	/* ú»ubNÖÌ|C^ */
+	FLGPTN		flgptn;			/* CxgtO»Ýp^[ */
+} FLGCB;
+
+/*
+ *  CxgtOÒ¿îñubNÌè`
+ *
+ *  ±Ì\¢ÌÍC¯úEÊMIuWFNgÌÒ¿îñubNÌ¤Êª
+ *  iWINFO_WOBJjðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅC
+ *  ÅÌ2ÂÌtB[hª¤ÊÉÈÁÄ¢éD
+ *
+ *  flgptnÍCwaiptn¨æÑwfmodeÆ¯Ég¤±ÆÍÈ¢½ßC¤pÌðg
+ *  ¦Îðßñ·é±ÆªÂ\Å éD
+ */
+typedef struct eventflag_waiting_information {
+	WINFO		winfo;			/* WÌÒ¿îñubN */
+	FLGCB		*p_flgcb;		/* ÒÁÄ¢éCxgtOÌÇubN */
+	FLGPTN		waiptn;			/* Ò¿p^[ */
+	MODE		wfmode;			/* Ò¿[h */
+	FLGPTN		flgptn;			/* Ò¿ðÌp^[ */
+} WINFO_FLG;
+
+/*
+ *  CxgtOIDÌÅålikernel_cfg.cj
+ */
+extern const ID	tmax_flgid;
+
+/*
+ *  CxgtOú»ubNÌGAikernel_cfg.cj
+ */
+extern const FLGINIB	flginib_table[];
+
+/*
+ *  CxgtOÇubNÌGAikernel_cfg.cj
+ */
+extern FLGCB	flgcb_table[];
+
+/*
+ *  CxgtOÇubN©çCxgtOIDðæèo·½ßÌ}N
+ */
+#define	FLGID(p_flgcb)	((ID)(((p_flgcb) - flgcb_table) + TMIN_FLGID))
+
+/*
+ *  CxgtO@\Ìú»
+ */
+extern void	initialize_eventflag(void);
+
+/*
+ *  CxgtOÒ¿ððÌ`FbN
+ */
+extern bool_t	check_flg_cond(FLGCB *p_flgcb, FLGPTN waiptn,
+								MODE wfmode, FLGPTN *p_flgptn);
+
+#endif /* TOPPERS_EVENTFLAG_H */
Index: /asp_ewarm/asp-1.7.0/kernel/exception.c
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/exception.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/exception.c	(revision 61)
@@ -0,0 +1,139 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: exception.c 2010 2010-12-31 12:44:33Z ertl-hiro $
+ */
+
+/*
+ *		CPUáOÇ@\
+ */
+
+#include "kernel_impl.h"
+#include "task.h"
+#include "exception.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_XSNS_DPN_ENTER
+#define LOG_XSNS_DPN_ENTER(p_excinf)
+#endif /* LOG_XSNS_DPN_ENTER */
+
+#ifndef LOG_XSNS_DPN_LEAVE
+#define LOG_XSNS_DPN_LEAVE(state)
+#endif /* LOG_XSNS_DPN_LEAVE */
+
+#ifndef LOG_XSNS_XPN_ENTER
+#define LOG_XSNS_XPN_ENTER(p_excinf)
+#endif /* LOG_XSNS_XPN_ENTER */
+
+#ifndef LOG_XSNS_XPN_LEAVE
+#define LOG_XSNS_XPN_LEAVE(state)
+#endif /* LOG_XSNS_XPN_LEAVE */
+
+/* 
+ *  CPUáOnhÇ@\Ìú»
+ */
+#ifdef TOPPERS_excini
+#ifndef OMIT_INITIALIZE_EXCEPTION
+
+void
+initialize_exception(void)
+{
+	uint_t			i;
+	const EXCINIB	*p_excinib;
+
+	for (p_excinib = excinib_table, i = 0; i < tnum_excno; p_excinib++, i++) {
+		x_define_exc(p_excinib->excno, p_excinib->exc_entry);
+	}
+}
+
+#endif /* OMIT_INITIALIZE_EXCEPTION */
+#endif /* TOPPERS_excini */
+
+/*
+ *  CPUáOÌ­¶µ½ReLXgÌQÆ
+ */
+
+/*
+ *  CPUáO­¶ÌfBXpb`Û¯óÔÌQÆ
+ *
+ *  CPUáOnhÅdisdspªÏ»·é±ÆÍÈ¢½ßCCPUáOª­¶µ
+ *  ½ÌdisdspðÛ¶µÄ¨­KvÍÈ¢D
+ */
+#ifdef TOPPERS_xsns_dpn
+
+bool_t
+xsns_dpn(void *p_excinf)
+{
+	bool_t	state;
+
+	LOG_XSNS_DPN_ENTER(p_excinf);
+	state = (exc_sense_intmask(p_excinf) && !disdsp) ? false : true;
+	LOG_XSNS_DPN_LEAVE(state);
+	return(state);
+}
+
+#endif /* TOPPERS_xsns_dpn */
+
+/*
+ *  CPUáO­¶Ì^XNáOÛ¯óÔÌQÆ
+ *
+ *  CPUáOnhÅp_runtskÆp_runtsk->enatexªÏ»·é±ÆÍÈ¢
+ *  ½ßCCPUáOª­¶µ½Ìp_runtsk->enatexðÛ¶µÄ¨­KvÍÈ
+ *  ¢D
+ */
+#ifdef TOPPERS_xsns_xpn
+
+bool_t
+xsns_xpn(void *p_excinf)
+{
+	bool_t	state;
+
+	LOG_XSNS_XPN_ENTER(p_excinf);
+	state = (exc_sense_intmask(p_excinf) && p_runtsk->enatex) ? false : true;
+	LOG_XSNS_XPN_LEAVE(state);
+	return(state);
+}
+
+#endif /* TOPPERS_xsns_xpn */
Index: /asp_ewarm/asp-1.7.0/kernel/exception.h
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/exception.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/exception.h	(revision 61)
@@ -0,0 +1,82 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2000 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: exception.h 648 2007-12-15 09:35:35Z hiro $
+ */
+
+/*
+ *		CPUáOÇ@\
+ */
+
+#ifndef TOPPERS_EXCEPTION_H
+#define TOPPERS_EXCEPTION_H
+
+#ifndef OMIT_INITIALIZE_EXCEPTION
+
+/*
+ *  CPUáOnhú»ubN
+ */
+typedef struct cpu_exception_handler_initialization_block {
+	EXCNO		excno;			/* CPUáOnhÔ */
+	ATR			excatr;			/* CPUáOnh®« */
+	FP			exc_entry;		/* CPUáOnhÌoüûÌÔn */
+} EXCINIB;
+
+/*
+ *  CPUáOnhÔÌikernel_cfg.cj
+ */
+extern const uint_t	tnum_excno;
+
+/*
+ *  CPUáOnhú»ubNÌGAikernel_cfg.cj
+ */
+extern const EXCINIB	excinib_table[];
+
+#endif /* OMIT_INITIALIZE_EXCEPTION */
+
+/*
+ *  CPUáOnhÇ@\Ìú»
+ */
+extern void	initialize_exception(void);
+
+#endif /* TOPPERS_EXCEPTION_H */
Index: /asp_ewarm/asp-1.7.0/kernel/genoffset.tf
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/genoffset.tf	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/genoffset.tf	(revision 61)
@@ -0,0 +1,150 @@
+$ ======================================================================
+$ 
+$   TOPPERS/ASP Kernel
+$       Toyohashi Open Platform for Embedded Real-Time Systems/
+$       Advanced Standard Profile Kernel
+$ 
+$   Copyright (C) 2011 by Embedded and Real-Time Systems Laboratory
+$               Graduate School of Information Science, Nagoya Univ., JAPAN
+$  
+$   ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+$   Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+$   ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+$   (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+$        \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+$       XR[hÉÜÜêÄ¢é±ÆD
+$   (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+$       pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+$       Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+$       Ì³ÛØKèðfÚ·é±ÆD
+$   (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+$       pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+$       ÆD
+$     (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+$         ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+$     (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+$         ñ·é±ÆD
+$   (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+$       Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+$       Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+$       RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+$       ÆÓ·é±ÆD
+$  
+$   {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+$   æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+$   ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+$   AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+$   ÌÓCðíÈ¢D
+$ 
+$   $Id: genoffset.tf 2046 2011-04-03 02:33:08Z ertl-hiro $
+$ 
+$ =====================================================================
+
+$ 
+$  #definefBNeBuÌ¶¬
+$ 
+$FUNCTION DEFINE$
+	#define $ARGV[1]$$TAB$$FORMAT("%d", +ARGV[2])$$NL$
+$END$
+
+$ 
+$  rbgÌT[`
+$ 
+$FUNCTION SEARCH_BIT$
+	$_val = ARGV[1]$
+	$FOREACH _val_bit RANGE(0,7)$
+		$IF (_val & 1) != 0$
+			$RESULT = _val_bit$
+		$END$
+		$_val = _val >> 1$
+	$END$
+$END$
+
+$ 
+$  rbgtB[hÌItZbgÆrbgÊuÌè`Ì¶¬
+$ 
+$FUNCTION DEFINE_BIT$
+	$label = ARGV[1]$
+	$struct_size = ARGV[2]$
+	$output_size = ARGV[3]$
+
+	$top = SYMBOL(label)$
+	$IF !LENGTH(top)$
+		$ERROR$$FORMAT("label %1% not found", label)$$END$
+	$ELSE$
+		$val = 0$
+		$FOREACH i RANGE(0,struct_size-1)$
+			$tmp_val = PEEK(top + i, 1)$
+			$IF val == 0 && tmp_val != 0$
+				$val = tmp_val$
+				$offset = i$
+			$END$
+		$END$
+
+		$IF val == 0$
+			$ERROR$$FORMAT("bit not found in %1%", ARGV[1])$$END$
+		$ELSE$
+			$val_bit = SEARCH_BIT(val)$
+			$RESULT = {}$
+			$IF EQ(output_size, "W")$
+				$IF SIL_ENDIAN_BIG$
+					$val_bit = val_bit + 24 - ((offset & 0x03) << 3)$
+				$ELSE$
+					$val_bit = val_bit + ((offset & 0x03) << 3)$
+				$END$
+				$offset = offset & ~0x03$
+			$ELSE$$IF EQ(output_size, "H")$
+				$IF SIL_ENDIAN_BIG$
+					$val_bit = val_bit + 8 - ((offset & 0x01) << 3)$
+				$ELSE$
+					$val_bit = val_bit + ((offset & 0x01) << 3)$
+				$END$
+				$offset = offset & ~0x01$
+			$END$$END$
+		$END$
+
+		#define $label$$TAB$$FORMAT("%d", +offset)$$NL$
+		#define $label$_bit$TAB$$FORMAT("%d", +val_bit)$$NL$
+		#define $label$_mask$TAB$$FORMAT("0x%x", 1 << val_bit)$$NL$
+	$END$
+$END$
+
+$ 
+$  oCgzuÌ`FbN
+$ 
+$FUNCTION MAGIC_CHECK$
+	$size = ARGV[1]$
+	$check = ARGV[2]$
+
+	$label = FORMAT("MAGIC_%d", +size)$
+	$top = SYMBOL(label)$
+	$IF !LENGTH(top)$
+		$ERROR$$FORMAT("label %1% not found", label)$$END$
+	$ELSE$
+		$FOREACH offset RANGE(1,size)$
+			$IF SIL_ENDIAN_BIG$
+				$val = PEEK(top + offset - 1, 1)$
+			$ELSE$
+				$val = PEEK(top + size - offset, 1)$
+			$END$
+			$IF val != AT(check, offset - 1)$
+				$ERROR$$FORMAT("value check of %1% failed", label)$$END$
+			$END$
+		$END$
+	$END$
+$END$
+
+$MAGIC_CHECK(1, { 0x12 })$
+$MAGIC_CHECK(2, { 0x12, 0x34 })$
+$MAGIC_CHECK(4, { 0x12, 0x34, 0x56, 0x78 })$
+
+$ 
+$  t@Cwb_Ì¶¬
+$ 
+$FILE "offset.h"$
+/* offset.h */$NL$
+$NL$
Index: /asp_ewarm/asp-1.7.0/kernel/interrupt.c
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/interrupt.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/interrupt.c	(revision 61)
@@ -0,0 +1,256 @@
+/*
+ *  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-2009 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: interrupt.c 2009 2010-12-31 12:43:54Z ertl-hiro $
+ */
+
+/*
+ *		ÝÇ@\
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "interrupt.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_DIS_INT_ENTER
+#define LOG_DIS_INT_ENTER(intno)
+#endif /* LOG_DIS_INT_ENTER */
+
+#ifndef LOG_DIS_INT_LEAVE
+#define LOG_DIS_INT_LEAVE(ercd)
+#endif /* LOG_DIS_INT_LEAVE */
+
+#ifndef LOG_ENA_INT_ENTER
+#define LOG_ENA_INT_ENTER(intno)
+#endif /* LOG_ENA_INT_ENTER */
+
+#ifndef LOG_ENA_INT_LEAVE
+#define LOG_ENA_INT_LEAVE(ercd)
+#endif /* LOG_ENA_INT_LEAVE */
+
+#ifndef LOG_CHG_IPM_ENTER
+#define LOG_CHG_IPM_ENTER(intpri)
+#endif /* LOG_CHG_IPM_ENTER */
+
+#ifndef LOG_CHG_IPM_LEAVE
+#define LOG_CHG_IPM_LEAVE(ercd)
+#endif /* LOG_CHG_IPM_LEAVE */
+
+#ifndef LOG_GET_IPM_ENTER
+#define LOG_GET_IPM_ENTER(p_intpri)
+#endif /* LOG_GET_IPM_ENTER */
+
+#ifndef LOG_GET_IPM_LEAVE
+#define LOG_GET_IPM_LEAVE(ercd, intpri)
+#endif /* LOG_GET_IPM_LEAVE */
+
+/* 
+ *  ÝÇ@\Ìú»
+ */
+#ifdef TOPPERS_intini
+#ifndef OMIT_INITIALIZE_INTERRUPT
+
+void
+initialize_interrupt(void)
+{
+	uint_t			i;
+	const INHINIB	*p_inhinib;
+	const INTINIB	*p_intinib;
+
+	for (p_inhinib = inhinib_table, i = 0; i < tnum_inhno; p_inhinib++, i++) {
+		x_define_inh(p_inhinib->inhno, p_inhinib->int_entry);
+	}
+	for (p_intinib = intinib_table, i = 0; i < tnum_intno; p_intinib++, i++) {
+		x_config_int(p_intinib->intno, p_intinib->intatr, p_intinib->intpri);
+	}
+}
+
+#endif /* OMIT_INITIALIZE_INTERRUPT */
+#endif /* TOPPERS_intini */
+
+/*
+ *  ÝÌÖ~
+ */
+#ifdef TOPPERS_dis_int
+#ifdef TOPPERS_SUPPORT_DIS_INT
+
+ER
+dis_int(INTNO intno)
+{
+	bool_t	locked;
+	ER		ercd;
+
+	LOG_DIS_INT_ENTER(intno);
+	CHECK_TSKCTX();
+	CHECK_INTNO_DISINT(intno);
+
+	locked = t_sense_lock();
+	if (!locked) {
+		t_lock_cpu();
+	}
+	if (t_disable_int(intno)) {
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_OBJ;
+	}
+	if (!locked) {
+		t_unlock_cpu();
+	}
+
+  error_exit:
+	LOG_DIS_INT_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_SUPPORT_DIS_INT */
+#endif /* TOPPERS_dis_int */
+
+/*
+ *  ÝÌÂ
+ */
+#ifdef TOPPERS_ena_int
+#ifdef TOPPERS_SUPPORT_ENA_INT
+
+ER
+ena_int(INTNO intno)
+{
+	bool_t	locked;
+	ER		ercd;
+
+	LOG_ENA_INT_ENTER(intno);
+	CHECK_TSKCTX();
+	CHECK_INTNO_DISINT(intno);
+
+	locked = t_sense_lock();
+	if (!locked) {
+		t_lock_cpu();
+	}
+	if (t_enable_int(intno)) {
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_OBJ;
+	}
+	if (!locked) {
+		t_unlock_cpu();
+	}
+
+  error_exit:
+	LOG_ENA_INT_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_SUPPORT_ENA_INT */
+#endif /* TOPPERS_ena_int */
+
+/*
+ *  ÝDæx}XNÌÏX
+ */
+#ifdef TOPPERS_chg_ipm
+
+ER
+chg_ipm(PRI intpri)
+{
+	ER		ercd;
+
+	LOG_CHG_IPM_ENTER(intpri);
+	CHECK_TSKCTX_UNL();
+	CHECK_INTPRI_CHGIPM(intpri);
+
+	t_lock_cpu();
+	t_set_ipm(intpri);
+	if (intpri == TIPM_ENAALL) {
+		ipmflg = true;
+		if (!disdsp) {
+			dspflg = true;
+			if (p_runtsk != p_schedtsk) {
+				dispatch();
+			}
+		}
+		if (p_runtsk->enatex && p_runtsk->texptn != 0U) {
+			call_texrtn();
+		}
+	}
+	else {
+		ipmflg = false;
+		dspflg = false;
+	}
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_CHG_IPM_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_chg_ipm */
+
+/*
+ *  ÝDæx}XNÌQÆ
+ */
+#ifdef TOPPERS_get_ipm
+
+ER
+get_ipm(PRI *p_intpri)
+{
+	ER		ercd;
+
+	LOG_GET_IPM_ENTER(p_intpri);
+	CHECK_TSKCTX_UNL();
+
+	t_lock_cpu();
+	*p_intpri = t_get_ipm();
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_GET_IPM_LEAVE(ercd, *p_intpri);
+	return(ercd);
+}
+
+#endif /* TOPPERS_get_ipm */
Index: /asp_ewarm/asp-1.7.0/kernel/interrupt.h
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/interrupt.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/interrupt.h	(revision 61)
@@ -0,0 +1,101 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2000 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: interrupt.h 648 2007-12-15 09:35:35Z hiro $
+ */
+
+/*
+ *		ÝÇ@\
+ */
+
+#ifndef TOPPERS_INTERRUPT_H
+#define TOPPERS_INTERRUPT_H
+
+#ifndef OMIT_INITIALIZE_INTERRUPT
+
+/*
+ *  Ýnhú»ubN
+ */
+typedef struct interrupt_handler_initialization_block {
+	INHNO		inhno;			/* ÝnhÔ */
+	ATR			inhatr;			/* Ýnh®« */
+	FP			int_entry;		/* ÝnhÌoüûÌÔn */
+} INHINIB;
+
+/*
+ *  ÝvCú»ubN
+ */
+typedef struct interrupt_request_initialization_block {
+	INTNO		intno;			/* ÝÔ */
+	ATR			intatr;			/* Ý®« */
+	PRI			intpri;			/* ÝDæx */
+} INTINIB;
+
+/*
+ *  ÝnhÔÌikernel_cfg.cj
+ */
+extern const uint_t	tnum_inhno;
+
+/*
+ *  Ýnhú»ubNÌGAikernel_cfg.cj
+ */
+extern const INHINIB	inhinib_table[];
+
+/*
+ *  ÝvCÌikernel_cfg.cj
+ */
+extern const uint_t	tnum_intno;
+
+/*
+ *  ÝvCú»ubNÌGAikernel_cfg.cj
+ */
+extern const INTINIB	intinib_table[];
+
+#endif /* OMIT_INITIALIZE_INTERRUPT */
+
+/*
+ *  ÝÇ@\Ìú»
+ */
+extern void	initialize_interrupt(void);
+
+#endif /* TOPPERS_INTERRUPT_H */
Index: /asp_ewarm/asp-1.7.0/kernel/kernel.tf
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/kernel.tf	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/kernel.tf	(revision 61)
@@ -0,0 +1,1081 @@
+$ ======================================================================
+$ 
+$   TOPPERS/ASP Kernel
+$       Toyohashi Open Platform for Embedded Real-Time Systems/
+$       Advanced Standard Profile Kernel
+$ 
+$   Copyright (C) 2007 by TAKAGI Nobuhisa
+$   Copyright (C) 2007-2011 by Embedded and Real-Time Systems Laboratory
+$               Graduate School of Information Science, Nagoya Univ., JAPAN
+$  
+$   ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+$   Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+$   ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+$   (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+$        \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+$       XR[hÉÜÜêÄ¢é±ÆD
+$   (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+$       pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+$       Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+$       Ì³ÛØKèðfÚ·é±ÆD
+$   (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+$       pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+$       ÆD
+$     (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+$         ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+$     (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+$         ñ·é±ÆD
+$   (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+$       Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+$       Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+$       RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+$       ÆÓ·é±ÆD
+$  
+$   {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+$   æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+$   ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+$   AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+$   ÌÓCðíÈ¢D
+$ 
+$   $Id: kernel.tf 2024 2011-01-02 08:59:23Z ertl-hiro $
+$  
+$ =====================================================================
+
+$ =====================================================================
+$ kernel_cfg.hÌ¶¬
+$ =====================================================================
+
+$FILE "kernel_cfg.h"$
+/* kernel_cfg.h */$NL$
+#ifndef TOPPERS_KERNEL_CFG_H$NL$
+#define TOPPERS_KERNEL_CFG_H$NL$
+$NL$
+#define TNUM_TSKID	$LENGTH(TSK.ID_LIST)$$NL$
+#define TNUM_SEMID	$LENGTH(SEM.ID_LIST)$$NL$
+#define TNUM_FLGID	$LENGTH(FLG.ID_LIST)$$NL$
+#define TNUM_DTQID	$LENGTH(DTQ.ID_LIST)$$NL$
+#define TNUM_PDQID	$LENGTH(PDQ.ID_LIST)$$NL$
+#define TNUM_MBXID	$LENGTH(MBX.ID_LIST)$$NL$
+#define TNUM_MPFID	$LENGTH(MPF.ID_LIST)$$NL$
+#define TNUM_CYCID	$LENGTH(CYC.ID_LIST)$$NL$
+#define TNUM_ALMID	$LENGTH(ALM.ID_LIST)$$NL$
+$NL$
+$FOREACH id TSK.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id SEM.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id FLG.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id DTQ.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id PDQ.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id MBX.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id MPF.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id CYC.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id ALM.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$NL$
+#endif /* TOPPERS_KERNEL_CFG_H */$NL$
+
+$ =====================================================================
+$ kernel_cfg.cÌ¶¬
+$ =====================================================================
+
+$FILE "kernel_cfg.c"$
+/* kernel_cfg.c */$NL$
+#include "kernel/kernel_int.h"$NL$
+#include "kernel_cfg.h"$NL$
+$NL$
+#ifndef TOPPERS_EMPTY_LABEL$NL$
+#define TOPPERS_EMPTY_LABEL(x,y) x y[0]$NL$
+#endif$NL$
+$NL$
+#if TKERNEL_PRID != 0x07u$NL$
+#error The kernel does not match this configuration file.$NL$
+#endif$NL$
+$NL$
+
+$ 
+$  CN[hfBNeBui#includej
+$ 
+/*$NL$
+$SPC$*  Include Directives (#include)$NL$
+$SPC$*/$NL$
+$NL$
+$INCLUDES$
+$NL$
+
+$ 
+$  IuWFNgÌIDÔðÛ·éÏ
+$ 
+$IF USE_EXTERNAL_ID$
+	/*$NL$
+	$SPC$*  Variables for Object ID$NL$
+	$SPC$*/$NL$
+	$NL$
+	$FOREACH id TSK.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id SEM.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id FLG.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id DTQ.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id PDQ.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id MBX.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id MPF.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id CYC.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id ALM.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+$END$
+
+$ 
+$  g[XO}NÌftHgè`
+$ 
+/*$NL$
+$SPC$*  Default Definitions of Trace Log Macros$NL$
+$SPC$*/$NL$
+$NL$
+#ifndef LOG_ISR_ENTER$NL$
+#define LOG_ISR_ENTER(intno)$NL$
+#endif /* LOG_ISR_ENTER */$NL$
+$NL$
+#ifndef LOG_ISR_LEAVE$NL$
+#define LOG_ISR_LEAVE(intno)$NL$
+#endif /* LOG_ISR_LEAVE */$NL$
+$NL$
+
+$ 
+$  ^XN
+$ 
+/*$NL$
+$SPC$*  Task Management Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ^XNª1ÂÈã¶Ý·é±ÆÌ`FbN
+$IF !LENGTH(TSK.ID_LIST)$
+	$ERROR$$FORMAT(_("no task is registered"))$$END$
+$END$
+
+$ ^XNIDÔÌÅål
+const ID _kernel_tmax_tskid = (TMIN_TSKID + TNUM_TSKID - 1);$NL$
+$NL$
+
+$ G[`FbN
+$FOREACH tskid TSK.ID_LIST$
+$	// tskatrªimTA_ACTnjÅÈ¢êiE_RSATRj
+	$IF (TSK.TSKATR[tskid] & ~(TA_ACT|TARGET_TSKATR)) != 0$
+		$ERROR TSK.TEXT_LINE[tskid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "tskatr", TSK.TSKATR[tskid], tskid, "CRE_TSK")$$END$
+	$END$
+
+$	// (TMIN_TPRI <= itskpri && itskpri <= TMAX_TPRI)ÅÈ¢êiE_PARj
+	$IF !(TMIN_TPRI <= TSK.ITSKPRI[tskid] && TSK.ITSKPRI[tskid] <= TMAX_TPRI)$
+		$ERROR TSK.TEXT_LINE[tskid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "itskpri", TSK.ITSKPRI[tskid], tskid, "CRE_TSK")$$END$
+	$END$
+
+$ 	// texatrªiTA_NULLjÅÈ¢êiE_RSATRj
+	$IF LENGTH(TSK.TEXATR[tskid]) && TSK.TEXATR[tskid] != 0$
+		$ERROR DEF_TEX.TEXT_LINE[tskid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "texatr", TSK.TEXATR[tskid], tskid, "DEF_TEX")$$END$
+	$END$
+$END$
+
+$ X^bNÌæÌ¶¬Æ»êÉÖ·éG[`FbN
+$FOREACH tskid TSK.ID_LIST$
+$	// stkszª0©C^[Qbgè`ÌÅ¬liTARGET_MIN_STKSZjæèà¬³¢êiE_PARj
+	$IF TSK.STKSZ[tskid] == 0 || (TARGET_MIN_STKSZ
+									&& TSK.STKSZ[tskid] < TARGET_MIN_STKSZ)$
+		$ERROR TSK.TEXT_LINE[tskid]$E_PAR: $FORMAT(_("%1% `%2%\' of `%3%\' in %4% is too small"), "stksz", TSK.STKSZ[tskid], tskid, "CRE_TSK")$$END$
+	$END$
+$ 	// stkszªX^bNÌæÌTCYÆµÄ³µ­È¢êiE_PARj
+	$IF !EQ(TSK.STK[tskid], "NULL") && CHECK_STKSZ_ALIGN
+							&& (TSK.STKSZ[tskid] & (CHECK_STKSZ_ALIGN - 1))$
+		$ERROR TSK.TEXT_LINE[tskid]$E_PAR: $FORMAT(_("%1% `%2%\' of `%3%\' in %4% is not aligned"), "stksz", TSK.STKSZ[tskid], tskid, "CRE_TSK")$$END$
+	$END$
+
+	$IF EQ(TSK.STK[tskid],"NULL")$
+		static STK_T _kernel_stack_$tskid$[COUNT_STK_T($TSK.STKSZ[tskid]$)];$NL$
+		$TSK.TINIB_STKSZ[tskid] = FORMAT("ROUND_STK_T(%1%)", TSK.STKSZ[tskid])$
+		$TSK.TINIB_STK[tskid] = CONCAT("_kernel_stack_", tskid)$
+	$ELSE$
+		$TSK.TINIB_STKSZ[tskid] = TSK.STKSZ[tskid]$
+		$TSK.TINIB_STK[tskid] = TSK.STK[tskid]$
+	$END$
+$END$
+$NL$
+
+$ ^XNú»ubNÌ¶¬i^XNÍ1ÂÈã¶Ý·éj
+const TINIB _kernel_tinib_table[TNUM_TSKID] = {$NL$
+$JOINEACH tskid TSK.ID_LIST ",\n"$
+$	// ^XN®«Cg£îñCN®ÔnCN®Dæx
+	$TAB${
+	$SPC$($TSK.TSKATR[tskid]$), (intptr_t)($TSK.EXINF[tskid]$),
+	$SPC$((TASK)($TSK.TASK[tskid]$)), INT_PRIORITY($TSK.ITSKPRI[tskid]$),
+
+$	// ^XNú»ReLXgubNCX^bNÌæ
+	$IF USE_TSKINICTXB$
+		$GENERATE_TSKINICTXB(tskid)$
+	$ELSE$
+		$SPC$$TSK.TINIB_STKSZ[tskid]$, $TSK.TINIB_STK[tskid]$,
+	$END$
+
+$	// ^XNáO[`Ì®«ÆN®Ôn
+	$SPC$($ALT(TSK.TEXATR[tskid],"TA_NULL")$), ($ALT(TSK.TEXRTN[tskid],"NULL")$) }
+$END$$NL$
+};$NL$
+$NL$
+
+$ ^XNÇubNÌ¶¬
+TCB _kernel_tcb_table[TNUM_TSKID];$NL$
+$NL$
+
+$ ^XN¶¬e[uÌ¶¬
+const ID _kernel_torder_table[TNUM_TSKID] = {$NL$
+$TAB$$JOINEACH tskid TSK.ORDER_LIST ", "$$tskid$$END$$NL$
+};$NL$
+$NL$
+
+$ 
+$  Z}tH
+$ 
+/*$NL$
+$SPC$*  Semaphore Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ Z}tHIDÔÌÅål
+const ID _kernel_tmax_semid = (TMIN_SEMID + TNUM_SEMID - 1);$NL$
+$NL$
+
+$ Z}tHú»ubNÌ¶¬
+$IF LENGTH(SEM.ID_LIST)$
+	const SEMINIB _kernel_seminib_table[TNUM_SEMID] = {$NL$
+	$JOINEACH semid SEM.ID_LIST ",\n"$
+$		// sematrªimTA_TPRInjÅÈ¢êiE_RSATRj
+		$IF (SEM.SEMATR[semid] & ~TA_TPRI) != 0$
+			$ERROR SEM.TEXT_LINE[semid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "sematr", SEM.SEMATR[semid], semid, "CRE_SEM")$$END$
+		$END$
+
+$		// (0 <= isemcnt && isemcnt <= maxsem)ÅÈ¢êiE_PARj
+		$IF !(0 <= SEM.ISEMCNT[semid] && SEM.ISEMCNT[semid] <= SEM.MAXSEM[semid])$
+			$ERROR SEM.TEXT_LINE[semid]$E_PAR: $FORMAT(_("too large %1% `%2%\' of `%3%\' in %4%"), "isemcnt", SEM.ISEMCNT[semid], semid, "CRE_SEM")$$END$
+		$END$
+
+$		// (1 <= maxsem && maxsem <= TMAX_MAXSEM)ÅÈ¢êiE_PARj
+		$IF !(1 <= SEM.MAXSEM[semid] && SEM.MAXSEM[semid] <= TMAX_MAXSEM)$
+			$ERROR SEM.TEXT_LINE[semid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "maxsem", SEM.MAXSEM[semid], semid, "CRE_SEM")$$END$
+		$END$
+
+$		// Z}tHú»ubN
+		$TAB${ ($SEM.SEMATR[semid]$), ($SEM.ISEMCNT[semid]$), ($SEM.MAXSEM[semid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// Z}tHÇubN
+	SEMCB _kernel_semcb_table[TNUM_SEMID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const SEMINIB, _kernel_seminib_table);$NL$
+	TOPPERS_EMPTY_LABEL(SEMCB, _kernel_semcb_table);$NL$
+$END$$NL$
+
+$ 
+$  CxgtO
+$ 
+/*$NL$
+$SPC$*  Eventflag Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ CxgtOIDÔÌÅål
+const ID _kernel_tmax_flgid = (TMIN_FLGID + TNUM_FLGID - 1);$NL$
+$NL$
+
+$ CxgtOú»ubNÌ¶¬
+$IF LENGTH(FLG.ID_LIST)$
+	const FLGINIB _kernel_flginib_table[TNUM_FLGID] = {$NL$
+	$JOINEACH flgid FLG.ID_LIST ",\n"$
+$		// flgatrªimTA_TPRInbmTA_WMULnbmTA_CLRnjÅÈ¢êiE_RSATRj
+		$IF (FLG.FLGATR[flgid] & ~(TA_TPRI|TA_WMUL|TA_CLR)) != 0$
+			$ERROR FLG.TEXT_LINE[flgid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "flgatr", FLG.FLGATR[flgid], flgid, "CRE_FLG")$$END$
+		$END$
+
+$		// CxgtOú»ubN
+		$TAB${ ($FLG.FLGATR[flgid]$), ($FLG.IFLGPTN[flgid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// CxgtOÇubN
+	FLGCB _kernel_flgcb_table[TNUM_FLGID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const FLGINIB, _kernel_flginib_table);$NL$
+	TOPPERS_EMPTY_LABEL(FLGCB, _kernel_flgcb_table);$NL$
+$END$$NL$
+
+$ 
+$  f[^L
+[
+$ 
+/*$NL$
+$SPC$*  Dataqueue Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ f[^L
+[IDÔÌÅål
+const ID _kernel_tmax_dtqid = (TMIN_DTQID + TNUM_DTQID - 1);$NL$
+$NL$
+
+$IF LENGTH(DTQ.ID_LIST)$
+	$FOREACH dtqid DTQ.ID_LIST$
+$		// dtqatrªimTA_TPRInjÅÈ¢êiE_RSATRj
+		$IF (DTQ.DTQATR[dtqid] & ~TA_TPRI) != 0$
+			$ERROR DTQ.TEXT_LINE[dtqid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "dtqatr", DTQ.DTQATR[dtqid], dtqid, "CRE_DTQ")$$END$
+		$END$
+
+$		// dtqmbªNULLÅÈ¢êiE_NOSPTj
+		$IF !EQ(DTQ.DTQMB[dtqid], "NULL")$
+			$ERROR DTQ.TEXT_LINE[dtqid]$E_NOSPT: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "dtqmb", DTQ.DTQMB[dtqid], dtqid, "CRE_DTQ")$$END$
+		$END$
+
+$		// f[^L
+[ÇÌæ
+		$IF DTQ.DTQCNT[dtqid]$
+			static DTQMB _kernel_dtqmb_$dtqid$[$DTQ.DTQCNT[dtqid]$];$NL$
+		$END$
+	$END$
+
+$	// f[^L
+[ú»ubNÌ¶¬
+	const DTQINIB _kernel_dtqinib_table[TNUM_DTQID] = {$NL$
+	$JOINEACH dtqid DTQ.ID_LIST ",\n"$
+		$TAB${ ($DTQ.DTQATR[dtqid]$), ($DTQ.DTQCNT[dtqid]$), $IF DTQ.DTQCNT[dtqid]$(_kernel_dtqmb_$dtqid$)$ELSE$NULL$END$ }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// f[^L
+[ÇubN
+	DTQCB _kernel_dtqcb_table[TNUM_DTQID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const DTQINIB, _kernel_dtqinib_table);$NL$
+	TOPPERS_EMPTY_LABEL(DTQCB, _kernel_dtqcb_table);$NL$
+$END$$NL$
+
+$ 
+$  Dæxf[^L
+[
+$ 
+/*$NL$
+$SPC$*  Priority Dataqueue Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ Dæxf[^L
+[IDÔÌÅål
+const ID _kernel_tmax_pdqid = (TMIN_PDQID + TNUM_PDQID - 1);$NL$
+$NL$
+
+$IF LENGTH(PDQ.ID_LIST)$
+	$FOREACH pdqid PDQ.ID_LIST$
+$		// pdqatrªimTA_TPRInjÅÈ¢êiE_RSATRj
+		$IF (PDQ.PDQATR[pdqid] & ~TA_TPRI) != 0$
+			$ERROR PDQ.TEXT_LINE[pdqid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "pdqatr", PDQ.PDQATR[pdqid], pdqid, "CRE_PDQ")$$END$
+		$END$
+
+$		// (TMIN_DPRI <= maxdpri && maxdpri <= TMAX_DPRI)ÅÈ¢êiE_PARj
+		$IF !(TMIN_DPRI <= PDQ.MAXDPRI[pdqid] && PDQ.MAXDPRI[pdqid] <= TMAX_DPRI)$
+			$ERROR PDQ.TEXT_LINE[pdqid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "maxdpri", PDQ.MAXDPRI[pdqid], pdqid, "CRE_PDQ")$$END$
+		$END$
+
+$		// pdqmbªNULLÅÈ¢êiE_NOSPTj
+		$IF !EQ(PDQ.PDQMB[pdqid], "NULL")$
+			$ERROR PDQ.TEXT_LINE[pdqid]$E_NOSPT: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "pdqmb", PDQ.PDQMB[pdqid], pdqid, "CRE_PDQ")$$END$
+		$END$
+
+$		// Dæxf[^L
+[ÇÌæ
+		$IF PDQ.PDQCNT[pdqid]$
+			static PDQMB _kernel_pdqmb_$pdqid$[$PDQ.PDQCNT[pdqid]$];$NL$
+		$END$
+	$END$
+
+$	// Dæxf[^L
+[ú»ubNÌ¶¬
+	const PDQINIB _kernel_pdqinib_table[TNUM_PDQID] = {$NL$
+	$JOINEACH pdqid PDQ.ID_LIST ",\n"$
+		$TAB${ ($PDQ.PDQATR[pdqid]$), ($PDQ.PDQCNT[pdqid]$), ($PDQ.MAXDPRI[pdqid]$), $IF PDQ.PDQCNT[pdqid]$(_kernel_pdqmb_$pdqid$)$ELSE$NULL$END$ }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// Dæxf[^L
+[ÇubN
+	PDQCB _kernel_pdqcb_table[TNUM_PDQID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const PDQINIB, _kernel_pdqinib_table);$NL$
+	TOPPERS_EMPTY_LABEL(PDQCB, _kernel_pdqcb_table);$NL$
+$END$$NL$
+
+$ 
+$  [{bNX
+$ 
+/*$NL$
+$SPC$*  Mailbox Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ [{bNXIDÔÌÅål
+const ID _kernel_tmax_mbxid = (TMIN_MBXID + TNUM_MBXID - 1);$NL$
+$NL$
+
+$ [{bNXú»ubNÌ¶¬
+$IF LENGTH(MBX.ID_LIST)$
+	const MBXINIB _kernel_mbxinib_table[TNUM_MBXID] = {$NL$
+	$JOINEACH mbxid MBX.ID_LIST ",\n"$
+$		// mbxatrªimTA_TPRInbmTA_MPRInjÅÈ¢êiE_RSATRj
+		$IF (MBX.MBXATR[mbxid] & ~(TA_TPRI|TA_MPRI)) != 0$
+			$ERROR MBX.TEXT_LINE[mbxid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "mbxatr", MBX.MBXATR[mbxid], mbxid, "CRE_MBX")$$END$
+		$END$
+
+$		// (TMIN_MPRI <= maxmpri && maxmpri <= TMAX_MPRI)ÅÈ¢êiE_PARj
+		$IF !(TMIN_MPRI <= MBX.MAXMPRI[mbxid] && MBX.MAXMPRI[mbxid] <= TMAX_MPRI)$
+			$ERROR MBX.TEXT_LINE[mbxid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "maxmpri", MBX.MAXMPRI[mbxid], mbxid, "CRE_MBX")$$END$
+		$END$
+
+$		// mprihdªNULLÅÈ¢êiE_NOSPTj
+		$IF !EQ(MBX.MPRIHD[mbxid], "NULL")$
+			$ERROR MBX.TEXT_LINE[mbxid]$E_NOSPT: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "mprihd", MBX.MPRIHD[mbxid], mbxid, "CRE_MBX")$$END$
+		$END$
+
+$		// [{bNXú»ubN
+		$TAB${ ($MBX.MBXATR[mbxid]$), ($MBX.MAXMPRI[mbxid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// [{bNXÇubN
+	MBXCB _kernel_mbxcb_table[TNUM_MBXID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const MBXINIB, _kernel_mbxinib_table);$NL$
+	TOPPERS_EMPTY_LABEL(MBXCB, _kernel_mbxcb_table);$NL$
+$END$$NL$
+
+$ 
+$  Åè·v[
+$ 
+/*$NL$
+$SPC$*  Fixed-sized Memorypool Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ Åè·v[IDÔÌÅål
+const ID _kernel_tmax_mpfid = (TMIN_MPFID + TNUM_MPFID - 1);$NL$
+$NL$
+
+$IF LENGTH(MPF.ID_LIST)$
+	$FOREACH mpfid MPF.ID_LIST$
+$		// mpfatrªimTA_TPRInjÅÈ¢êiE_RSATRj
+		$IF (MPF.MPFATR[mpfid] & ~TA_TPRI) != 0$
+			$ERROR MPF.TEXT_LINE[mpfid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "mpfatr", MPF.MPFATR[mpfid], mpfid, "CRE_MPF")$$END$
+		$END$
+
+$		// blkcntª0ÌêiE_PARj
+		$IF MPF.BLKCNT[mpfid] == 0$
+			$ERROR MPF.TEXT_LINE[mpfid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "blkcnt", MPF.BLKCNT[mpfid], mpfid, "CRE_MPF")$$END$
+		$END$
+
+$		// blkszª0ÌêiE_PARj
+		$IF MPF.BLKSZ[mpfid] == 0$
+			$ERROR MPF.TEXT_LINE[mpfid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "blksz", MPF.BLKSZ[mpfid], mpfid, "CRE_MPF")$$END$
+		$END$
+
+$		// Åè·v[Ìæ
+		$IF EQ(MPF.MPF[mpfid], "NULL")$
+			static MPF_T _kernel_mpf_$mpfid$[($MPF.BLKCNT[mpfid]$) * COUNT_MPF_T($MPF.BLKSZ[mpfid]$)];$NL$
+		$END$
+
+$		// mpfmbªNULLÅÈ¢êiE_NOSPTj
+		$IF !EQ(MPF.MPFMB[mpfid], "NULL")$
+			$ERROR MPF.TEXT_LINE[mpfid]$E_NOSPT: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "mpfmb", MPF.MPFMB[mpfid], mpfid, "CRE_MPF")$$END$
+		$END$
+
+$		// Åè·v[ÇÌæ
+		static MPFMB _kernel_mpfmb_$mpfid$[$MPF.BLKCNT[mpfid]$];$NL$
+	$END$
+
+$	// Åè·v[ú»ubNÌ¶¬
+	const MPFINIB _kernel_mpfinib_table[TNUM_MPFID] = {$NL$
+	$JOINEACH mpfid MPF.ID_LIST ",\n"$
+		$TAB${ ($MPF.MPFATR[mpfid]$), ($MPF.BLKCNT[mpfid]$), ROUND_MPF_T($MPF.BLKSZ[mpfid]$), $IF EQ(MPF.MPF[mpfid],"NULL")$(_kernel_mpf_$mpfid$)$ELSE$($MPF.MPF[mpfid]$)$END$, (_kernel_mpfmb_$mpfid$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// Åè·v[ÇubN
+	MPFCB _kernel_mpfcb_table[TNUM_MPFID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const MPFINIB, _kernel_mpfinib_table);$NL$
+	TOPPERS_EMPTY_LABEL(MPFCB, _kernel_mpfcb_table);$NL$
+$END$$NL$
+
+$ 
+$  üúnh
+$ 
+/*$NL$
+$SPC$*  Cyclic Handler Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ üúnhIDÔÌÅål
+const ID _kernel_tmax_cycid = (TMIN_CYCID + TNUM_CYCID - 1);$NL$
+$NL$
+
+$ üúnhú»e[uÌ¶¬
+$IF LENGTH(CYC.ID_LIST)$
+	const CYCINIB _kernel_cycinib_table[TNUM_CYCID] = {$NL$
+	$JOINEACH cycid CYC.ID_LIST ",\n"$
+$		// cycatrªimTA_STAnjÅÈ¢êiE_RSATRj
+		$IF (CYC.CYCATR[cycid] & ~TA_STA) != 0$
+			$ERROR CYC.TEXT_LINE[cycid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "cycatr", CYC.CYCATR[cycid], cycid, "CRE_CYC")$$END$
+		$END$
+
+$		// (0 < cyctim && cyctim <= TMAX_RELTIM)ÅÈ¢êiE_PARj
+		$IF !(0 < CYC.CYCTIM[cycid] && CYC.CYCTIM[cycid] <= TMAX_RELTIM)$
+			$ERROR CYC.TEXT_LINE[cycid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "cyctim", CYC.CYCTIM[cycid], cycid, "CRE_CYC")$$END$
+		$END$
+
+$		// (0 <= cycphs && cycphs <= TMAX_RELTIM)ÅÈ¢êiE_PARj
+		$IF !(0 <= CYC.CYCPHS[cycid] && CYC.CYCPHS[cycid] <= TMAX_RELTIM)$
+			$ERROR CYC.TEXT_LINE[cycid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "cycphs", CYC.CYCPHS[cycid], cycid, "CRE_CYC")$$END$
+		$END$
+
+$		// xFcycatrÉTA_STAªÝè³êÄ¢ÄC(cycphs == 0)Ìê
+		$IF (CYC.CYCATR[cycid] & TA_STA) != 0 && CYC.CYCPHS[cycid] == 0$
+			$WARNING CYC.TEXT_LINE[cycid]$$FORMAT(_("%1% is not recommended when %2% is set to %3% in %4%"), "cycphs==0", "TA_STA", "cycatr", "CRE_CYC")$$END$
+		$END$
+
+$		// üúnhú»ubN
+		$TAB${ ($CYC.CYCATR[cycid]$), (intptr_t)($CYC.EXINF[cycid]$), ($CYC.CYCHDR[cycid]$), ($CYC.CYCTIM[cycid]$), ($CYC.CYCPHS[cycid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// üúnhÇubN
+	CYCCB _kernel_cyccb_table[TNUM_CYCID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const CYCINIB, _kernel_cycinib_table);$NL$
+	TOPPERS_EMPTY_LABEL(CYCCB, _kernel_cyccb_table);$NL$
+$END$$NL$
+
+$ 
+$  A[nh
+$ 
+/*$NL$
+$SPC$*  Alarm Handler Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ A[nhIDÔÌÅål
+const ID _kernel_tmax_almid = (TMIN_ALMID + TNUM_ALMID - 1);$NL$
+$NL$
+
+$ A[nhú»ubNÌ¶¬
+$IF LENGTH(ALM.ID_LIST)$
+	const ALMINIB _kernel_alminib_table[TNUM_ALMID] = {$NL$
+	$JOINEACH almid ALM.ID_LIST ",\n"$
+$		// almatrªiTA_NULLjÅÈ¢êiE_RSATRj
+		$IF ALM.ALMATR[almid] != 0$
+			$ERROR ALM.TEXT_LINE[almid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "almatr", ALM.ALMATR[almid], almid, "CRE_ALM")$$END$
+		$END$
+
+$		// A[nhú»ubN
+		$TAB${ ($ALM.ALMATR[almid]$), (intptr_t)($ALM.EXINF[almid]$), ($ALM.ALMHDR[almid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// A[nhÇubN
+	ALMCB _kernel_almcb_table[TNUM_ALMID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const ALMINIB, _kernel_alminib_table);$NL$
+	TOPPERS_EMPTY_LABEL(ALMCB, _kernel_almcb_table);$NL$
+$END$$NL$
+
+$ 
+$  ÝÇ@\
+$ 
+/*$NL$
+$SPC$*  Interrupt Management Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ÝÔÆÝnhÔÌÏ·e[uÌì¬
+$IF LENGTH(INTNO_ATTISR_VALID) != LENGTH(INHNO_ATTISR_VALID)$
+	$ERROR$length of `INTNO_ATTISR_VALID' is different from length of `INHNO_ATTISR_VALID'$END$
+$END$
+$i = 0$
+$FOREACH intno INTNO_ATTISR_VALID$
+	$inhno = AT(INHNO_ATTISR_VALID, i)$
+	$INHNO[intno] = inhno$
+	$INTNO[inhno] = intno$
+	$i = i + 1$
+$END$
+
+$ ÝvCÉÖ·éG[`FbN
+$i = 0$
+$FOREACH intno INT.ORDER_LIST$
+$	// intnoªCFG_INTÉÎ·éÝÔÆµÄ³µ­È¢êiE_PARj
+	$IF !LENGTH(FIND(INTNO_CFGINT_VALID, INT.INTNO[intno]))$
+		$ERROR INT.TEXT_LINE[intno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "intno", INT.INTNO[intno], "CFG_INT")$$END$
+	$END$
+
+$	// intnoªCFG_INTÉæÁÄÝèÏÝÌêiE_OBJj
+	$j = 0$
+	$FOREACH intno2 INT.ORDER_LIST$
+		$IF INT.INTNO[intno] == INT.INTNO[intno2] && j < i$
+			$ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' in %3% is duplicated"), "intno", INT.INTNO[intno], "CFG_INT")$$END$
+		$END$
+		$j = j + 1$
+	$END$
+
+$	// intatrªimTA_ENAINTnbmTA_EDGEnjÅÈ¢êiE_RSATRj
+	$IF (INT.INTATR[intno] & ~(TA_ENAINT|TA_EDGE|TARGET_INTATR)) != 0$
+		$ERROR INT.TEXT_LINE[intno]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "intatr", INT.INTATR[intno], "intno", INT.INTNO[intno], "CFG_INT")$$END$
+	$END$
+
+$	// intpriªCFG_INTÉÎ·éÝDæxÆµÄ³µ­È¢êiE_PARj
+	$IF !LENGTH(FIND(INTPRI_CFGINT_VALID, INT.INTPRI[intno]))$
+		$ERROR INT.TEXT_LINE[intno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "intpri", INT.INTPRI[intno], "CFG_INT")$$END$
+	$END$
+
+$	// J[lÇÉÅè³êÄ¢éintnoÉÎµÄCintpriÉTMIN_INTPRI
+$	// æèà¬³¢lªwè³ê½êiE_OBJj
+	$IF LENGTH(FIND(INTNO_FIX_KERNEL, intno))$
+		$IF INT.INTPRI[intno] < TMIN_INTPRI$
+			$ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' must not have higher priority than %3%"), "intno", INT.INTNO[intno], "TMIN_INTPRI")$$END$
+		$END$
+	$END$
+
+$	// J[lÇOÉÅè³êÄ¢éintnoÉÎµÄCintpriÉTMIN_INTPRI
+$	// æèà¬³¢lªwè³êÈ©Á½êiE_OBJj
+	$IF LENGTH(FIND(INTNO_FIX_NONKERNEL, intno))$
+		$IF INT.INTPRI[intno] >= TMIN_INTPRI$
+			$ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' must have higher priority than %3%"), "intno", INT.INTNO[intno], "TMIN_INTPRI")$$END$
+		$END$
+	$END$
+	$i = i + 1$
+$END$
+
+$ ÝnhÉÖ·éG[`FbN
+$i = 0$
+$FOREACH inhno INH.ORDER_LIST$
+$	// inhnoªDEF_INHÉÎ·éÝnhÔÆµÄ³µ­È¢êiE_PARj
+	$IF !LENGTH(FIND(INHNO_DEFINH_VALID, INH.INHNO[inhno]))$
+		$ERROR INH.TEXT_LINE[inhno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "inhno", INH.INHNO[inhno], "DEF_INH")$$END$
+	$END$
+
+$	// inhnoªDEF_INHÉæÁÄÝèÏÝÌêiE_OBJj
+	$j = 0$
+	$FOREACH inhno2 INH.ORDER_LIST$
+		$IF INH.INHNO[inhno] == INH.INHNO[inhno2] && j < i$
+			$ERROR INH.TEXT_LINE[inhno]$E_OBJ: $FORMAT(_("%1% `%2%\' in %3% is duplicated"), "inhno", INH.INHNO[inhno], "DEF_INH")$$END$
+		$END$
+		$j = j + 1$
+	$END$
+
+$	// inhatrªiTA_NULLjÅÈ¢êiE_RSATRj
+	$IF (INH.INHATR[inhno] & ~TARGET_INHATR) != 0$
+		$ERROR INH.TEXT_LINE[inhno]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "inhatr", INH.INHATR[inhno], "inhno", INH.INHNO[inhno], "DEF_INH")$$END$
+	$END$
+
+$	// J[lÇÉÅè³êÄ¢éinhnoÉÎµÄCinhatrÉTA_NONKERNEL
+$	//@ªwè³êÄ¢éêiE_RSATRj
+	$IF LENGTH(FIND(INHNO_FIX_KERNEL, inhno))$
+		$IF (INH.INHATR[inhno] & TA_NONKERNEL) != 0$
+			$ERROR INH.TEXT_LINE[inhno]$E_RSATR: $FORMAT(_("%1% `%2%\' must not be non-kernel interrupt"), "inhno", INH.INHNO[inhno])$$END$
+		$END$
+	$END$
+
+$	// J[lÇOÉÅè³êÄ¢éinhnoÉÎµÄCinhatrÉTA_NONKERNEL
+$	// ªwè³êÄ¢È¢êiE_RSATRj
+	$IF LENGTH(FIND(INHNO_FIX_NONKERNEL, inhno))$
+		$IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$
+			$ERROR INH.TEXT_LINE[inhno]$E_RSATR: $FORMAT(_("%1% `%2%\' must be non-kernel interrupt"), "inhno", INH.INHNO[inhno])$$END$
+		$END$
+	$END$
+
+	$IF LENGTH(INTNO[INH.INHNO[inhno]])$
+		$intno = INTNO[INH.INHNO[inhno]]$
+$		// inhnoÉÎ·éintnoÉÎ·éCFG_INTªÈ¢êiE_OBJj
+		$IF !LENGTH(INT.INTNO[intno])$
+			$ERROR INH.TEXT_LINE[inhno]$E_OBJ: $FORMAT(_("%1% `%2%\' corresponding to %3% `%4%\' is not configured with %5%"), "intno", INT.INTNO[intno], "inhno", INH.INHNO[inhno], "CFG_INT")$$END$
+		$ELSE$
+			$IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$
+$				// inhatrÉTA_NONKERNELªwè³êÄ¨ç¸CinhnoÉÎ
+$				// ·éintnoÉÎµÄCFG_INTÅÝè³ê½ÝDæxª
+$				// TMIN_INTPRIæèà¬³¢êiE_OBJj
+				$IF INT.INTPRI[intno] < TMIN_INTPRI$
+					$ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' configured for %3% `%4%\' is higher than %5%"), "intpri", INT.INTPRI[intno], "inhno", INH.INHNO[inhno], "TMIN_INTPRI")$$END$
+				$END$
+			$ELSE$
+$				// inhatrÉTA_NONKERNELªwè³êÄ¨èCinhnoÉÎ
+$				// ·éintnoÉÎµÄCFG_INTÅÝè³ê½ÝDæxª
+$				// TMIN_INTPRIÈãÅ éêiE_OBJj
+				$IF INT.INTPRI[intno] >= TMIN_INTPRI$
+					$ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' configured for %3% `%4%\' is lower than or equal to %5%"), "intpri", INT.INTPRI[intno], "inhno", INH.INHNO[inhno], "TMIN_INTPRI")$$END$
+				$END$
+			$END$
+		$END$
+	$END$
+	$i = i + 1$
+$END$
+
+$ ÝT[rX[`iISRjÉÖ·éG[`FbNÆÝnhÌ¶¬
+$FOREACH order ISR.ORDER_LIST$
+$	// isratrªiTA_NULLjÅÈ¢êiE_RSATRj
+	$IF (ISR.ISRATR[order] & ~TARGET_ISRATR) != 0$
+		$ERROR ISR.TEXT_LINE[order]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "isratr", ISR.ISRATR[order], "ATT_ISR")$$END$
+	$END$
+
+$	// intnoªATT_ISRÉÎ·éÝÔÆµÄ³µ­È¢êiE_PARj
+	$IF !LENGTH(FIND(INTNO_ATTISR_VALID, ISR.INTNO[order]))$
+		$ERROR ISR.TEXT_LINE[order]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "intno", ISR.INTNO[order], "ATT_ISR")$$END$
+	$END$
+
+$	// (TMIN_ISRPRI <= isrpri && isrpri <= TMAX_ISRPRI)ÅÈ¢êiE_PARj
+	$IF !(TMIN_ISRPRI <= ISR.ISRPRI[order] && ISR.ISRPRI[order] <= TMAX_ISRPRI)$
+		$ERROR ISR.TEXT_LINE[order]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "isrpri", ISR.ISRPRI[order], "ATT_ISR")$$END$
+	$END$
+$END$
+
+$FOREACH intno INTNO_ATTISR_VALID$
+	$inhno = INHNO[intno]$
+
+$	// ÝÔintnoÉÎµÄo^³ê½ISRÌXgÌì¬
+	$isr_order_list = {}$
+	$FOREACH order ISR.ORDER_LIST$
+		$IF ISR.INTNO[order] == intno$
+			$isr_order_list = APPEND(isr_order_list, order)$
+			$order_for_error = order$
+		$END$
+	$END$
+
+$	// ÝÔintnoÉÎµÄo^³ê½ISRª¶Ý·éê
+	$IF LENGTH(isr_order_list) > 0$
+$		// intnoÉÎ·éinhnoÉÎµÄDEF_INHª éêiE_OBJj
+		$IF LENGTH(INH.INHNO[inhno])$
+			$ERROR ISR.TEXT_LINE[order_for_error]$E_OBJ: $FORMAT(_("%1% `%2%\' in %3% is duplicated with %4% `%5%\'"), "intno", ISR.INTNO[order_for_error], "ATT_ISR", "inhno", INH.INHNO[inhno])$$END$
+		$END$
+
+$		// intnoÉÎ·éCFG_INTªÈ¢êiE_OBJj
+		$IF !LENGTH(INT.INTNO[intno])$
+			$ERROR ISR.TEXT_LINE[order_for_error]$E_OBJ: $FORMAT(_("%1% `%2%\' is not configured with %3%"), "intno", ISR.INTNO[order_for_error], "CFG_INT")$$END$
+		$ELSE$
+$			// intnoÉÎµÄCFG_INTÅÝè³ê½ÝDæxªTMIN_INTPRI
+$			// æèà¬³¢êiE_OBJj
+			$IF INT.INTPRI[intno] < TMIN_INTPRI$
+				$ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' configured for %3% `%4%\' is higher than %5%"), "intpri", INT.INTPRI[intno], "intno", ISR.INTNO[order_for_error], "TMIN_INTPRI")$$END$
+			$END$
+		$END$
+
+$		// DEF_INH(inhno, { TA_NULL, _kernel_inthdr_<intno> } );
+		$INH.INHNO[inhno] = inhno$
+		$INH.INHATR[inhno] = VALUE("TA_NULL", 0)$
+		$INH.INTHDR[inhno] = CONCAT("_kernel_inthdr_", intno)$
+		$INH.ORDER_LIST = APPEND(INH.ORDER_LIST, inhno)$
+
+$		// ISRpÌÝnh
+		void$NL$
+		_kernel_inthdr_$intno$(void)$NL$
+		{$NL$
+		$IF LENGTH(isr_order_list) > 1$
+			$TAB$PRI	saved_ipm;$NL$
+			$NL$
+			$TAB$i_begin_int($intno$);$NL$
+			$TAB$saved_ipm = i_get_ipm();$NL$
+		$ELSE$
+			$TAB$i_begin_int($intno$);$NL$
+		$END$
+$		// ISRðDæxÉÄÑo·
+		$JOINEACH order SORT(isr_order_list, "ISR.ISRPRI") "\tif (i_sense_lock()) {\n\t\ti_unlock_cpu();\n\t}\n\ti_set_ipm(saved_ipm);\n"$
+			$TAB$LOG_ISR_ENTER($intno$);$NL$
+			$TAB$((ISR)($ISR.ISR[order]$))((intptr_t)($ISR.EXINF[order]$));$NL$
+			$TAB$LOG_ISR_LEAVE($intno$);$NL$
+		$END$
+		$TAB$i_end_int($intno$);$NL$
+		}$NL$
+	$END$
+$END$
+$NL$
+
+$ 
+$  ÝÇ@\Ì½ßÌWIÈú»îñÌ¶¬
+$ 
+$ ÝnhÌú»ÉKvÈîñ
+$IF !OMIT_INITIALIZE_INTERRUPT || ALT(USE_INHINIB_TABLE,0)$
+
+$ Ýnh
+#define TNUM_INHNO	$LENGTH(INH.ORDER_LIST)$$NL$
+const uint_t _kernel_tnum_inhno = TNUM_INHNO;$NL$
+$NL$
+$FOREACH inhno INH.ORDER_LIST$
+	$IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$
+		INTHDR_ENTRY($INH.INHNO[inhno]$, $+INH.INHNO[inhno]$, $INH.INTHDR[inhno]$)$NL$
+	$END$
+$END$
+$NL$
+
+$ Ýnhú»e[u
+$IF LENGTH(INH.ORDER_LIST)$
+	const INHINIB _kernel_inhinib_table[TNUM_INHNO] = {$NL$
+	$JOINEACH inhno INH.ORDER_LIST ",\n"$
+		$IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$
+			$TAB${ ($INH.INHNO[inhno]$), ($INH.INHATR[inhno]$), (FP)(INT_ENTRY($INH.INHNO[inhno]$, $INH.INTHDR[inhno]$)) }
+		$ELSE$
+			$TAB${ ($INH.INHNO[inhno]$), ($INH.INHATR[inhno]$), (FP)($INH.INTHDR[inhno]$) }
+		$END$
+	$END$$NL$
+	};$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const INHINIB, _kernel_inhinib_table);$NL$
+$END$$NL$
+$END$
+
+$ ÝvCÌú»ÉKvÈîñ
+$IF !OMIT_INITIALIZE_INTERRUPT || ALT(USE_INHINTB_TABLE,0)$
+
+$ ÝvC
+#define TNUM_INTNO	$LENGTH(INT.ORDER_LIST)$$NL$
+const uint_t _kernel_tnum_intno = TNUM_INTNO;$NL$
+$NL$
+
+$ ÝvCú»e[u
+$IF LENGTH(INT.ORDER_LIST)$
+	const INTINIB _kernel_intinib_table[TNUM_INTNO] = {$NL$
+	$JOINEACH intno INT.ORDER_LIST ",\n"$
+		$TAB${ ($INT.INTNO[intno]$), ($INT.INTATR[intno]$), ($INT.INTPRI[intno]$) }
+	$END$$NL$
+	};$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const INTINIB, _kernel_intinib_table);$NL$
+$END$$NL$
+$END$
+
+$ 
+$  CPUáOÇ@\
+$ 
+/*$NL$
+$SPC$*  CPU Exception Management Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ CPUáOnhÉÖ·éG[`FbN
+$i = 0$
+$FOREACH excno EXC.ORDER_LIST$
+$	// excnoªDEF_EXCÉÎ·éCPUáOnhÔÆµÄ³µ­È¢êiE_PARj
+	$IF !LENGTH(FIND(EXCNO_DEFEXC_VALID, EXC.EXCNO[excno]))$
+		$ERROR EXC.TEXT_LINE[excno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "excno", EXC.EXCNO[excno], "DEF_EXC")$$END$
+	$END$
+
+$	// excnoªDEF_EXCÉæÁÄÝèÏÝÌêiE_OBJj
+	$j = 0$
+	$FOREACH excno2 EXC.ORDER_LIST$
+		$IF EXC.EXCNO[excno] == EXC.EXCNO[excno2] && j < i$
+			$ERROR EXC.TEXT_LINE[excno]$E_OBJ: $FORMAT(_("%1% `%2%\' in %3% is duplicated"), "excno", EXC.EXCNO[excno], "DEF_EXC")$$END$
+		$END$
+		$j = j + 1$
+	$END$
+
+$	// excatrªiTA_NULLjÅÈ¢êiE_RSATRj
+	$IF (EXC.EXCATR[excno] & ~TARGET_EXCATR) != 0$
+		$ERROR EXC.TEXT_LINE[excno]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "excatr", EXC.EXCATR[excno], "excno", EXC.EXCNO[excno], "DEF_EXC")$$END$
+	$END$
+	$i = i + 1$
+$END$
+
+$ CPUáOnhÌ½ßÌWIÈú»îñÌ¶¬
+$IF !OMIT_INITIALIZE_EXCEPTION$
+
+$ CPUáOnh
+#define TNUM_EXCNO	$LENGTH(EXC.ORDER_LIST)$$NL$
+const uint_t _kernel_tnum_excno = TNUM_EXCNO;$NL$
+$NL$
+$FOREACH excno EXC.ORDER_LIST$
+	EXCHDR_ENTRY($EXC.EXCNO[excno]$, $+EXC.EXCNO[excno]$, $EXC.EXCHDR[excno]$)$NL$
+$END$
+$NL$
+
+$ CPUáOnhú»e[u
+$IF LENGTH(EXC.ORDER_LIST)$
+	const EXCINIB _kernel_excinib_table[TNUM_EXCNO] = {$NL$
+	$JOINEACH excno EXC.ORDER_LIST ",\n"$
+		$TAB${ ($EXC.EXCNO[excno]$), ($EXC.EXCATR[excno]$), (FP)(EXC_ENTRY($EXC.EXCNO[excno]$, $EXC.EXCHDR[excno]$)) }
+	$END$$NL$
+	};$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const EXCINIB, _kernel_excinib_table);$NL$
+$END$$NL$
+$END$
+
+$ 
+$  ñ^XNReLXgpÌX^bNÌæ
+$ 
+/*$NL$
+$SPC$*  Stack Area for Non-task Context$NL$
+$SPC$*/$NL$
+$NL$
+
+$IF !LENGTH(ICS.ORDER_LIST)$
+$	// DEF_ICSªÈ¢êÌftHglÌÝè
+	#ifdef DEFAULT_ISTK$NL$
+	$NL$
+	#define TOPPERS_ISTKSZ		DEFAULT_ISTKSZ$NL$
+	#define TOPPERS_ISTK		DEFAULT_ISTK$NL$
+	$NL$
+	#else /* DEAULT_ISTK */$NL$
+	$NL$
+	static STK_T				_kernel_istack[COUNT_STK_T(DEFAULT_ISTKSZ)];$NL$
+	#define TOPPERS_ISTKSZ		ROUND_STK_T(DEFAULT_ISTKSZ)$NL$
+	#define TOPPERS_ISTK		_kernel_istack$NL$
+	$NL$
+	#endif /* DEAULT_ISTK */$NL$
+$ELSE$
+
+$	// ÃIAPIuDEF_ICSvª¡ éiE_OBJj
+	$IF LENGTH(ICS.ORDER_LIST) > 1$
+		$ERROR$E_OBJ: $FORMAT(_("too many %1%"), "DEF_ICS")$$END$
+	$END$
+
+$ 	// istkszªX^bNÌæÌTCYÆµÄ³µ­È¢êiE_PARj
+	$IF !EQ(ICS.ISTK[1], "NULL") && CHECK_STKSZ_ALIGN
+							&& (ICS.ISTKSZ[1] & (CHECK_STKSZ_ALIGN - 1))$
+		$ERROR ICS.TEXT_LINE[1]$E_PAR: $FORMAT(_("%1% `%2%\' in %3% is not aligned"), "istksz", ICS.ISTKSZ[1], "DEF_ICS")$$END$
+	$END$
+
+	$IF EQ(ICS.ISTK[1], "NULL")$
+$		// X^bNÌæÌ©®t¯
+		static STK_T				_kernel_istack[COUNT_STK_T($ICS.ISTKSZ[1]$)];$NL$
+		#define TOPPERS_ISTKSZ		ROUND_STK_T($ICS.ISTKSZ[1]$)$NL$
+		#define TOPPERS_ISTK		_kernel_istack$NL$
+	$ELSE$
+		#define TOPPERS_ISTKSZ		($ICS.ISTKSZ[1]$)$NL$
+		#define TOPPERS_ISTK		($ICS.ISTK[1]$)$NL$
+	$END$
+$END$
+$NL$
+
+$ ñ^XNReLXgpÌX^bNÌæ
+const SIZE		_kernel_istksz = TOPPERS_ISTKSZ;$NL$
+STK_T *const	_kernel_istk = TOPPERS_ISTK;$NL$
+$NL$
+#ifdef TOPPERS_ISTKPT$NL$
+STK_T *const	_kernel_istkpt = TOPPERS_ISTKPT(TOPPERS_ISTK, TOPPERS_ISTKSZ);$NL$
+#endif /* TOPPERS_ISTKPT */$NL$
+$NL$
+
+$ 
+$  ^CCxgÇ
+$ 
+/*$NL$
+$SPC$*  Time Event Management$NL$
+$SPC$*/$NL$
+$NL$
+TMEVTN   _kernel_tmevt_heap[TNUM_TSKID + TNUM_CYCID + TNUM_ALMID];$NL$
+$NL$
+
+$ 
+$  eW
+[Ìú»Ö
+$ 
+/*$NL$
+$SPC$*  Module Initialization Function$NL$
+$SPC$*/$NL$
+$NL$
+void$NL$
+_kernel_initialize_object(void)$NL$
+{$NL$
+$TAB$_kernel_initialize_task();$NL$
+$IF LENGTH(SEM.ID_LIST)$	_kernel_initialize_semaphore();$NL$$END$
+$IF LENGTH(FLG.ID_LIST)$	_kernel_initialize_eventflag();$NL$$END$
+$IF LENGTH(DTQ.ID_LIST)$	_kernel_initialize_dataqueue();$NL$$END$
+$IF LENGTH(PDQ.ID_LIST)$	_kernel_initialize_pridataq();$NL$$END$
+$IF LENGTH(MBX.ID_LIST)$	_kernel_initialize_mailbox();$NL$$END$
+$IF LENGTH(MPF.ID_LIST)$	_kernel_initialize_mempfix();$NL$$END$
+$IF LENGTH(CYC.ID_LIST)$	_kernel_initialize_cyclic();$NL$$END$
+$IF LENGTH(ALM.ID_LIST)$	_kernel_initialize_alarm();$NL$$END$
+$TAB$_kernel_initialize_interrupt();$NL$
+$TAB$_kernel_initialize_exception();$NL$
+}$NL$
+$NL$
+
+$ 
+$  ú»[`ÌÀsÖ
+$ 
+/*$NL$
+$SPC$*  Initialization Routine$NL$
+$SPC$*/$NL$
+$NL$
+void$NL$
+_kernel_call_inirtn(void)$NL$
+{$NL$
+$FOREACH order INI.ORDER_LIST$
+$ 	// iniatrªiTA_NULLjÅÈ¢êiE_RSATRj
+	$IF INI.INIATR[order] != 0$
+		$ERROR INI.TEXT_LINE[order]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "iniatr", INI.INIATR[order], "inirtn", INI.INIRTN[order], "ATT_INI")$$END$
+	$END$
+	$TAB$((INIRTN)($INI.INIRTN[order]$))((intptr_t)($INI.EXINF[order]$));$NL$
+$END$
+}$NL$
+$NL$
+
+$ 
+$  I¹[`ÌÀsÖ
+$ 
+/*$NL$
+$SPC$*  Termination Routine$NL$
+$SPC$*/$NL$
+$NL$
+void$NL$
+_kernel_call_terrtn(void)$NL$
+{$NL$
+$FOREACH rorder TER.RORDER_LIST$
+$ 	// teratrªiTA_NULLjÅÈ¢êiE_RSATRj
+	$IF TER.TERATR[rorder] != 0$
+		$ERROR TER.TEXT_LINE[rorder]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "teratr", TER.TERATR[rorder], "terrtn", TER.TERRTN[rorder], "ATT_TER")$$END$
+	$END$
+	$TAB$((TERRTN)($TER.TERRTN[rorder]$))((intptr_t)($TER.EXINF[rorder]$));$NL$
+$END$
+}$NL$
+$NL$
Index: /asp_ewarm/asp-1.7.0/kernel/kernel_api.csv
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/kernel_api.csv	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/kernel_api.csv	(revision 61)
@@ -0,0 +1,17 @@
+tsk,CRE_TSK,#tskid { .tskatr &exinf &task +itskpri .stksz &stk },,
+tsk,DEF_TEX,%tskid { .texatr &texrtn },0,1,
+sem,CRE_SEM,#semid { .sematr .isemcnt .maxsem },,
+flg,CRE_FLG,#flgid { .flgatr .iflgptn },,
+dtq,CRE_DTQ,#dtqid { .dtqatr .dtqcnt &dtqmb },,
+pdq,CRE_PDQ,#pdqid { .pdqatr .pdqcnt +maxdpri &pdqmb },,
+mbx,CRE_MBX,#mbxid { .mbxatr +maxmpri &mprihd },,
+mpf,CRE_MPF,#mpfid { .mpfatr .blkcnt .blksz &mpf &mpfmb },,
+cyc,CRE_CYC,#cycid { .cycatr &exinf &cychdr .cyctim .cycphs },,
+alm,CRE_ALM,#almid { .almatr &exinf &almhdr },,
+int,CFG_INT,.intno { .intatr +intpri },,
+isr,ATT_ISR,{ .isratr &exinf .intno &isr +isrpri },-1,
+inh,DEF_INH,.inhno { .inhatr &inthdr },,
+ics,DEF_ICS,{ .istksz &istk },-1,
+exc,DEF_EXC,.excno { .excatr &exchdr },,
+ini,ATT_INI,{ .iniatr &exinf &inirtn },-1,
+ter,ATT_TER,{ .teratr &exinf &terrtn },-1,
Index: /asp_ewarm/asp-1.7.0/kernel/kernel_check.tf
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/kernel_check.tf	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/kernel_check.tf	(revision 61)
@@ -0,0 +1,168 @@
+$ ======================================================================
+$ 
+$   TOPPERS/ASP Kernel
+$       Toyohashi Open Platform for Embedded Real-Time Systems/
+$       Advanced Standard Profile Kernel
+$ 
+$   Copyright (C) 2008-2011 by Embedded and Real-Time Systems Laboratory
+$               Graduate School of Information Science, Nagoya Univ., JAPAN
+$  
+$   ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+$   Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+$   ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+$   (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+$        \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+$       XR[hÉÜÜêÄ¢é±ÆD
+$   (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+$       pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+$       Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+$       Ì³ÛØKèðfÚ·é±ÆD
+$   (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+$       pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+$       ÆD
+$     (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+$         ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+$     (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+$         ñ·é±ÆD
+$   (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+$       Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+$       Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+$       RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+$       ÆÓ·é±ÆD
+$  
+$   {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+$   æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+$   ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+$   AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+$   ÌÓCðíÈ¢D
+$ 
+$   @(#) $Id: kernel_check.tf 2062 2011-04-10 16:27:41Z ertl-hiro $
+$  
+$ =====================================================================
+
+$ 
+$  ÖÌæªÔnÌ`FbN
+$ 
+$IF CHECK_FUNC_ALIGN || CHECK_FUNC_NONNULL$
+$	// ^XNÆ^XNáO[`ÌæªÔnÌ`FbN
+	$tinib = SYMBOL("_kernel_tinib_table")$
+	$FOREACH tskid TSK.ID_LIST$
+		$task = PEEK(tinib + offsetof_TINIB_task, sizeof_FP)$
+		$IF CHECK_FUNC_ALIGN && (task & (CHECK_FUNC_ALIGN - 1)) != 0$
+			$ERROR TSK.TEXT_LINE[tskid]$E_PAR: 
+				$FORMAT(_("%1% `%2%\' of `%3%\' in %4% is not aligned"),
+				"task", TSK.TASK[tskid], tskid, "CRE_TSK")$$END$
+		$END$
+		$IF CHECK_FUNC_NONNULL && task == 0$
+			$ERROR TSK.TEXT_LINE[tskid]$E_PAR: 
+				$FORMAT(_("%1% `%2%\' of `%3%\' in %4% is null"),
+				"task", TSK.TASK[tskid], tskid, "CRE_TSK")$$END$
+		$END$
+		$texrtn = PEEK(tinib + offsetof_TINIB_texrtn, sizeof_FP)$
+		$IF CHECK_FUNC_ALIGN && (texrtn & (CHECK_FUNC_ALIGN - 1)) != 0$
+			$ERROR DEF_TEX.TEXT_LINE[tskid]$E_PAR: 
+				$FORMAT(_("%1% `%2%\' of `%3%\' in %4% is not aligned"),
+				"texrtn", TSK.TEXRTN[tskid], tskid, "DEF_TEX")$$END$
+		$END$
+		$tinib = tinib + sizeof_TINIB$
+	$END$
+
+$	// üúnhÌæªÔnÌ`FbN
+	$cycinib = SYMBOL("_kernel_cycinib_table")$
+	$FOREACH cycid CYC.ID_LIST$
+		$cychdr = PEEK(cycinib + offsetof_CYCINIB_cychdr, 4)$
+		$IF CHECK_FUNC_ALIGN && (cychdr & (CHECK_FUNC_ALIGN - 1)) != 0$
+			$ERROR CYC.TEXT_LINE[cycid]$E_PAR: 
+				$FORMAT(_("%1% `%2%\' of `%3%\' in %4% is not aligned"),
+				"cychdr", CYC.CYCHDR[cycid], cycid, "CRE_CYC")$$END$
+		$END$
+		$IF CHECK_FUNC_NONNULL && cychdr == 0$
+			$ERROR CYC.TEXT_LINE[cycid]$E_PAR: 
+				$FORMAT(_("%1% `%2%\' of `%3%\' in %4% is null"),
+				"cychdr", CYC.CYCHDR[cycid], cycid, "CRE_CYC")$$END$
+		$END$
+		$cycinib = cycinib + sizeof_CYCINIB$
+	$END$
+
+$	// A[nhÌæªÔnÌ`FbN
+	$alminib = SYMBOL("_kernel_alminib_table")$
+	$FOREACH almid ALM.ID_LIST$
+		$almhdr = PEEK(alminib + offsetof_ALMINIB_almhdr, 4)$
+		$IF CHECK_FUNC_ALIGN && (almhdr & (CHECK_FUNC_ALIGN - 1)) != 0$
+			$ERROR ALM.TEXT_LINE[almid]$E_PAR: 
+				$FORMAT(_("%1% `%2%\' of `%3%\' in %4% is not aligned"),
+				"almhdr", ALM.ALMHDR[almid], almid, "CRE_ALM")$$END$
+		$END$
+		$IF CHECK_FUNC_NONNULL && almhdr == 0$
+			$ERROR ALM.TEXT_LINE[almid]$E_PAR: 
+				$FORMAT(_("%1% `%2%\' of `%3%\' in %4% is null"),
+				"almhdr", ALM.ALMHDR[almid], almid, "CRE_ALM")$$END$
+		$END$
+		$alminib = alminib + sizeof_ALMINIB$
+	$END$
+$END$
+
+$ 
+$  X^bNÌæÌæªÔnÌ`FbN
+$ 
+$IF CHECK_STACK_ALIGN || CHECK_STACK_NONNULL$
+$	// ^XNÌX^bNÌæÌæªÔnÌ`FbN
+	$tinib = SYMBOL("_kernel_tinib_table")$
+	$FOREACH tskid TSK.ID_LIST$
+		$IF USE_TSKINICTXB$
+			$stk = GET_STK_TSKINICTXB(tinib)$
+		$ELSE$
+			$stk = PEEK(tinib + offsetof_TINIB_stk, sizeof_void_ptr)$
+		$END$
+		$IF CHECK_STACK_ALIGN && (stk & (CHECK_STACK_ALIGN - 1)) != 0$
+			$ERROR TSK.TEXT_LINE[tskid]$E_PAR: 
+				$FORMAT(_("%1% `%2%\' of `%3%\' in %4% is not aligned"),
+				"stk", TSK.STK[tskid], tskid, "CRE_TSK")$$END$
+		$END$
+		$IF CHECK_STACK_NONNULL && stk == 0$
+			$ERROR TSK.TEXT_LINE[tskid]$E_PAR: 
+				$FORMAT(_("%1% `%2%\' of `%3%\' in %4% is null"),
+				"stk", TSK.STK[tskid], tskid, "CRE_TSK")$$END$
+		$END$
+		$tinib = tinib + sizeof_TINIB$
+	$END$
+
+$	// ñ^XNReLXgpÌX^bNÌæÌæªÔnÌ`FbN
+	$istk = PEEK(SYMBOL("_kernel_istk"), sizeof_void_ptr)$
+	$IF CHECK_STACK_ALIGN && (istk & (CHECK_STACK_ALIGN - 1)) != 0$
+		$ERROR ICE.TEXT_LINE[1]$E_PAR: 
+			$FORMAT(_("%1% `%2%\' in %3% is not aligned"),
+			"istk", ICS.ISTK[1], "DEF_ICS")$$END$
+	$END$
+	$IF CHECK_STACK_NONNULL && istk == 0$
+		$ERROR ICE.TEXT_LINE[1]$E_PAR: 
+			$FORMAT(_("%1% `%2%\' in %3% is null"),
+			"istk", ICS.ISTK[1], "DEF_ICS")$$END$
+	$END$
+$END$
+
+$ 
+$  Åè·v[ÌæÌæªÔnÌ`FbN
+$ 
+$IF CHECK_MPF_ALIGN || CHECK_MPF_NONNULL$
+$	// Åè·v[ÌæÌæªÔnÌ`FbN
+	$mpfinib = SYMBOL("_kernel_mpfinib_table")$
+	$FOREACH mpfid MPF.ID_LIST$
+		$mpf = PEEK(mpfinib + offsetof_MPFINIB_mpf, sizeof_void_ptr)$
+		$IF CHECK_MPF_ALIGN && (mpf & (CHECK_MPF_ALIGN - 1)) != 0$
+			$ERROR MPF.TEXT_LINE[mpfid]$E_PAR: 
+				$FORMAT(_("%1% `%2%\' of `%3%\' in %4% is not aligned"),
+				"mpf", MPF.MPF[mpfid], mpfid, "CRE_MPF")$$END$
+		$END$
+		$IF CHECK_MPF_NONNULL && mpf == 0$
+			$ERROR MPF.TEXT_LINE[mpfid]$E_PAR: 
+				$FORMAT(_("%1% `%2%\' of `%3%\' in %4% is null"),
+				"mpf", MPF.MPF[mpfid], mpfid, "CRE_MPF")$$END$
+		$END$
+		$mpfinib = mpfinib + sizeof_MPFINIB$
+	$END$
+$END$
Index: /asp_ewarm/asp-1.7.0/kernel/kernel_def.csv
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/kernel_def.csv	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/kernel_def.csv	(revision 61)
@@ -0,0 +1,108 @@
+SIL_ENDIAN_BIG,#defined(SIL_ENDIAN_BIG)
+SIL_ENDIAN_LITTLE,#defined(SIL_ENDIAN_LITTLE)
+TA_NULL,TA_NULL
+TA_ACT,TA_ACT
+TA_TPRI,TA_TPRI
+TA_MPRI,TA_MPRI
+TA_WMUL,TA_WMUL
+TA_CLR,TA_CLR
+TA_STA,TA_STA
+TA_NONKERNEL,TA_NONKERNEL
+TA_ENAINT,TA_ENAINT
+TA_EDGE,TA_EDGE
+TMIN_TPRI,TMIN_TPRI,signed
+TMAX_TPRI,TMAX_TPRI,signed
+TMIN_DPRI,TMIN_DPRI,signed
+TMAX_DPRI,TMAX_DPRI,signed
+TMIN_MPRI,TMIN_MPRI,signed
+TMAX_MPRI,TMAX_MPRI,signed
+TMIN_ISRPRI,TMIN_ISRPRI,signed
+TMAX_ISRPRI,TMAX_ISRPRI,signed
+TMAX_MAXSEM,TMAX_MAXSEM
+TMAX_RELTIM,TMAX_RELTIM
+TMIN_INTPRI,TMIN_INTPRI,signed
+OMIT_INITIALIZE_INTERRUPT,#defined(OMIT_INITIALIZE_INTERRUPT)
+OMIT_INITIALIZE_EXCEPTION,#defined(OMIT_INITIALIZE_EXCEPTION)
+USE_TSKINICTXB,#defined(USE_TSKINICTXB)
+TARGET_TSKATR,#defined(TARGET_TSKATR),,TARGET_TSKATR
+TARGET_INTATR,#defined(TARGET_INTATR),,TARGET_INTATR
+TARGET_INHATR,#defined(TARGET_INHATR),,TARGET_INHATR
+TARGET_ISRATR,#defined(TARGET_ISRATR),,TARGET_ISRATR
+TARGET_EXCATR,#defined(TARGET_EXCATR),,TARGET_EXCATR
+TARGET_MIN_STKSZ,#defined(TARGET_MIN_STKSZ),,TARGET_MIN_STKSZ
+CHECK_STKSZ_ALIGN,#defined(CHECK_STKSZ_ALIGN),,CHECK_STKSZ_ALIGN
+CHECK_FUNC_ALIGN,#defined(CHECK_FUNC_ALIGN),,CHECK_FUNC_ALIGN
+CHECK_FUNC_NONNULL,#defined(CHECK_FUNC_NONNULL)
+CHECK_STACK_ALIGN,#defined(CHECK_STACK_ALIGN),,CHECK_STACK_ALIGN
+CHECK_STACK_NONNULL,#defined(CHECK_STACK_NONNULL)
+CHECK_MPF_ALIGN,#defined(CHECK_MPF_ALIGN),,CHECK_MPF_ALIGN
+CHECK_MPF_NONNULL,#defined(CHECK_MPF_NONNULL)
+sizeof_ID,sizeof(ID)
+sizeof_uint_t,sizeof(uint_t)
+sizeof_SIZE,sizeof(SIZE)
+sizeof_ATR,sizeof(ATR)
+sizeof_PRI,sizeof(PRI)
+sizeof_void_ptr,sizeof(void*)
+sizeof_VP,sizeof(void*)
+sizeof_intptr_t,sizeof(intptr_t)
+sizeof_FP,sizeof(FP)
+sizeof_INHNO,sizeof(INHNO)
+sizeof_INTNO,sizeof(INTNO)
+sizeof_EXCNO,sizeof(EXCNO)
+sizeof_TINIB,sizeof(TINIB)
+offsetof_TINIB_tskatr,"offsetof(TINIB,tskatr)"
+offsetof_TINIB_exinf,"offsetof(TINIB,exinf)"
+offsetof_TINIB_task,"offsetof(TINIB,task)"
+offsetof_TINIB_ipriority,"offsetof(TINIB,ipriority)"
+offsetof_TINIB_stksz,#!defined(USE_TSKINICTXB),,"offsetof(TINIB,stksz)"
+offsetof_TINIB_stk,#!defined(USE_TSKINICTXB),,"offsetof(TINIB,stk)"
+offsetof_TINIB_texatr,"offsetof(TINIB,texatr)"
+offsetof_TINIB_texrtn,"offsetof(TINIB,texrtn)"
+sizeof_SEMINIB,sizeof(SEMINIB)
+offsetof_SEMINIB_sematr,"offsetof(SEMINIB,sematr)"
+offsetof_SEMINIB_isemcnt,"offsetof(SEMINIB,isemcnt)"
+offsetof_SEMINIB_maxsem,"offsetof(SEMINIB,maxsem)"
+sizeof_FLGPTN,sizeof(FLGPTN)
+sizeof_FLGINIB,sizeof(FLGINIB)
+offsetof_FLGINIB_flgatr,"offsetof(FLGINIB,flgatr)"
+offsetof_FLGINIB_iflgptn,"offsetof(FLGINIB,iflgptn)"
+sizeof_DTQINIB,sizeof(DTQINIB)
+offsetof_DTQINIB_dtqatr,"offsetof(DTQINIB,dtqatr)"
+offsetof_DTQINIB_dtqcnt,"offsetof(DTQINIB,dtqcnt)"
+offsetof_DTQINIB_p_dtqmb,"offsetof(DTQINIB,p_dtqmb)"
+sizeof_PDQINIB,sizeof(PDQINIB)
+offsetof_PDQINIB_pdqatr,"offsetof(PDQINIB,pdqatr)"
+offsetof_PDQINIB_pdqcnt,"offsetof(PDQINIB,pdqcnt)"
+offsetof_PDQINIB_maxdpri,"offsetof(PDQINIB,maxdpri)"
+offsetof_PDQINIB_p_pdqmb,"offsetof(PDQINIB,p_pdqmb)"
+sizeof_MBXINIB,sizeof(MBXINIB)
+offsetof_MBXINIB_mbxatr,"offsetof(MBXINIB,mbxatr)"
+offsetof_MBXINIB_maxmpri,"offsetof(MBXINIB,maxmpri)"
+sizeof_MPFINIB,sizeof(MPFINIB)
+offsetof_MPFINIB_mpfatr,"offsetof(MPFINIB,mpfatr)"
+offsetof_MPFINIB_blkcnt,"offsetof(MPFINIB,blkcnt)"
+offsetof_MPFINIB_blksz,"offsetof(MPFINIB,blksz)"
+offsetof_MPFINIB_mpf,"offsetof(MPFINIB,mpf)"
+offsetof_MPFINIB_p_mpfmb,"offsetof(MPFINIB,p_mpfmb)"
+sizeof_CYCINIB,sizeof(CYCINIB)
+offsetof_CYCINIB_cycatr,"offsetof(CYCINIB,cycatr)"
+offsetof_CYCINIB_exinf,"offsetof(CYCINIB,exinf)"
+offsetof_CYCINIB_cychdr,"offsetof(CYCINIB,cychdr)"
+offsetof_CYCINIB_cyctim,"offsetof(CYCINIB,cyctim)"
+offsetof_CYCINIB_cycphs,"offsetof(CYCINIB,cycphs)"
+sizeof_ALMINIB,sizeof(ALMINIB)
+offsetof_ALMINIB_almatr,"offsetof(ALMINIB,almatr)"
+offsetof_ALMINIB_exinf,"offsetof(ALMINIB,exinf)"
+offsetof_ALMINIB_almhdr,"offsetof(ALMINIB,almhdr)"
+sizeof_INHINIB,#!defined(OMIT_INITIALIZE_INTERRUPT),,sizeof(INHINIB)
+offset_INHINIB_inhno,#!defined(OMIT_INITIALIZE_INTERRUPT),,"offsetof(INHINIB,inhno)"
+offset_INHINIB_inhatr,#!defined(OMIT_INITIALIZE_INTERRUPT),,"offsetof(INHINIB,inhatr)"
+offset_INHINIB_int_entry,#!defined(OMIT_INITIALIZE_INTERRUPT),,"offsetof(INHINIB,int_entry)"
+sizeof_INTINIB,#!defined(OMIT_INITIALIZE_INTERRUPT),,sizeof(INTINIB)
+offset_INTINIB_intno,#!defined(OMIT_INITIALIZE_INTERRUPT),,"offsetof(INTINIB,intno)"
+offset_INTINIB_intatr,#!defined(OMIT_INITIALIZE_INTERRUPT),,"offsetof(INTINIB,intatr)"
+offset_INTINIB_intpri,#!defined(OMIT_INITIALIZE_INTERRUPT),,"offsetof(INTINIB,intpri)"
+sizeof_EXCINIB,#!defined(OMIT_INITIALIZE_EXCEPTION),,sizeof(EXCINIB)
+offset_EXCINIB_excno,#!defined(OMIT_INITIALIZE_EXCEPTION),,"offsetof(EXCINIB,excno)"
+offset_EXCINIB_excatr,#!defined(OMIT_INITIALIZE_EXCEPTION),,"offsetof(EXCINIB,excatr)"
+offset_EXCINIB_exc_entry,#!defined(OMIT_INITIALIZE_EXCEPTION),,"offsetof(EXCINIB,exc_entry)"
Index: /asp_ewarm/asp-1.7.0/kernel/kernel_impl.h
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/kernel_impl.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/kernel_impl.h	(revision 61)
@@ -0,0 +1,188 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: kernel_impl.h 1713 2010-01-27 13:23:29Z ertl-hiro $
+ */
+
+/*
+ *		TOPPERS/ASPJ[làü¯Wwb_t@C
+ *
+ *  ±Ìwb_t@CÍCJ[lð\¬·évOÌ\[Xt@C
+ *  ÅK¸CN[h·é×«Wwb_t@CÅ éD
+ *
+ *  AZu¾êÌ\[Xt@C©ç±Ìt@CðCN[h·é
+ *  ÍCTOPPERS_MACRO_ONLYðè`µÄ¨­D±êÉæèC}Nè`ÈOð
+ *  ­æ¤ÉÈÁÄ¢éD
+ */
+
+#ifndef TOPPERS_KERNEL_IMPL_H
+#define TOPPERS_KERNEL_IMPL_H
+
+/*
+ *  J[lÌà¯Ê¼Ìl[
+ */
+#include "kernel_rename.h"
+
+/*
+ *  AvP[VÆ¤ÊÌwb_t@C
+ */
+#include <kernel.h>
+
+/*
+ *  VXeO@\Ì½ßÌè`
+ */
+#include <t_syslog.h>
+
+/*
+ *  ^LXgðs¤}NÌè`
+ */
+#ifndef CAST
+#define CAST(type, val)		((type)(val))
+#endif /* CAST */
+
+/*
+ *  ^[QbgË¶îñÌè`
+ */
+#include "target_config.h"
+
+/*
+ *  ·×ÄÌÖðRpC·é½ßÌè`
+ */
+#ifdef ALLFUNC
+#include "allfunc.h"
+#endif /* ALLFUNC */
+
+/*
+ *  rbgtB[hÅÌ³µ®^
+ *
+ *  8rbgÈºÌÌrbgtB[hÅC³µ®lðÛµ½¢ê
+ *  Ép¢é×«f[^^DANSI CÅÍCrbgtB[hÌf[^^ÉÍ
+ *  intÆunsigned intµ©³êÈ¢½ßCftHgÌè`Íunsigned
+ *  intÆµÄ¢éªC^[Qbg¨æÑc[Ë¶ÅCunsigned charÜ½Í
+ *  unsigned shortÉè`µ½ûªø¦ªÇ¢êª éD
+ */
+#ifndef BIT_FIELD_UINT
+#define BIT_FIELD_UINT		unsigned int
+#endif /* BIT_FIELD_UINT */
+
+/*
+ *  rbgtB[hÅÌu[^
+ *
+ *  1rbgÌrbgtB[hÅCu[lðÛµ½¢êÉp¢é×«
+ *  f[^^DftHgÅÍBIT_FIELD_UINTÆ¯êÉè`µÄ¢éªCu[
+ *  lðÛ·é±Æð¾¦·é½ßÉÊÌ¼ÌÆµÄ¢éD
+ */
+#ifndef BIT_FIELD_BOOL
+#define BIT_FIELD_BOOL		BIT_FIELD_UINT
+#endif /* BIT_FIELD_BOOL */
+
+/*
+ *  IuWFNgIDÌÅ¬lÌè`
+ */
+#define TMIN_TSKID		1		/* ^XNIDÌÅ¬l */
+#define TMIN_SEMID		1		/* Z}tHIDÌÅ¬l */
+#define TMIN_FLGID		1		/* tOIDÌÅ¬l */
+#define TMIN_DTQID		1		/* f[^L
+[IDÌÅ¬l */
+#define TMIN_PDQID		1		/* Dæxf[^L
+[IDÌÅ¬l */
+#define TMIN_MBXID		1		/* [{bNXIDÌÅ¬l */
+#define TMIN_MPFID		1		/* Åè·v[IDÌÅ¬l */
+#define TMIN_CYCID		1		/* üúnhIDÌÅ¬l */
+#define TMIN_ALMID		1		/* A[nhIDÌÅ¬l */
+
+/*
+ *  DæxÌiKÌè`
+ */
+#define TNUM_TPRI		(TMAX_TPRI - TMIN_TPRI + 1)
+#define TNUM_MPRI		(TMAX_MPRI - TMIN_MPRI + 1)
+#define TNUM_INTPRI		(TMAX_INTPRI - TMIN_INTPRI + 1)
+
+/*
+ *  wb_t@Cð½È¢W
+[ÌÖEÏÌé¾
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  eW
+[Ìú»ikernel_cfg.cj
+ */
+extern void	initialize_object(void);
+
+/*
+ *  ú»[`ÌÀsikernel_cfg.cj
+ */
+extern void	call_inirtn(void);
+
+/*
+ *  I¹[`ÌÀsikernel_cfg.cj
+ */
+extern void	call_terrtn(void);
+
+/*
+ *  ñ^XNReLXgpÌX^bNÌæikernel_cfg.cj
+ */
+extern const SIZE	istksz;		/* X^bNÌæÌTCYiÛß½lj */
+extern STK_T *const	istk;		/* X^bNÌæÌæªÔn */
+#ifdef TOPPERS_ISTKPT
+extern STK_T *const	istkpt;		/* X^bN|C^Ìúl */
+#endif /* TOPPERS_ISTKPT */
+
+/*
+ *  J[l®ìóÔtOistartup.cj
+ */
+extern bool_t	kerflg;
+
+/*
+ *  J[lÌN®istartup.cj
+ */
+extern void	sta_ker(void);
+
+/*
+ *  J[lÌI¹istartup.cj
+ */
+extern void	exit_kernel(void);
+
+#endif /* TOPPERS_MACRO_ONLY */
+#endif /* TOPPERS_KERNEL_IMPL_H */
Index: /asp_ewarm/asp-1.7.0/kernel/kernel_int.h
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/kernel_int.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/kernel_int.h	(revision 61)
@@ -0,0 +1,80 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: kernel_int.h 508 2007-08-22 23:08:54Z hiro $
+ */
+
+/*
+ *		kernel_cfg.ci¨æÑcfg1_out.cjpwb_t@C
+ */
+
+#ifndef TOPPERS_KERNEL_INT_H
+#define TOPPERS_KERNEL_INT_H
+
+/*
+ *  J[lWwb_t@C
+ */
+#include "kernel_impl.h"
+
+/*
+ *  J[lÌewb_t@C
+ */
+#include "task.h"
+#include "semaphore.h"
+#include "eventflag.h"
+#include "dataqueue.h"
+#include "pridataq.h"
+#include "mailbox.h"
+#include "mempfix.h"
+#include "cyclic.h"
+#include "alarm.h"
+#include "interrupt.h"
+#include "exception.h"
+#include "time_event.h"
+
+/*
+ *  l[µ½V{ð³Éß·½ßÌwb_t@C
+ */
+#include "kernel_unrename.h"
+
+#endif /* TOPPERS_KERNEL_INT_H */
Index: /asp_ewarm/asp-1.7.0/kernel/kernel_rename.def
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/kernel_rename.def	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/kernel_rename.def	(revision 61)
@@ -0,0 +1,136 @@
+# startup.c
+kerflg
+exit_kernel
+
+# task.c
+p_runtsk
+p_schedtsk
+reqflg
+ipmflg
+disdsp
+dspflg
+ready_queue
+ready_primap
+initialize_task
+search_schedtsk
+make_runnable
+make_non_runnable
+make_dormant
+make_active
+change_priority
+rotate_ready_queue
+call_texrtn
+calltex
+
+# wait.c
+make_wait_tmout
+wait_complete
+wait_tmout
+wait_tmout_ok
+wait_release
+wobj_make_wait
+wobj_make_wait_tmout
+init_wait_queue
+
+# time_event.c
+current_time
+min_time
+next_time
+next_subtime
+last_index
+initialize_tmevt
+tmevt_up
+tmevt_down
+tmevtb_insert
+tmevtb_delete
+tmevt_lefttim
+signal_time
+
+# semaphore.c
+initialize_semaphore
+
+# eventflag.c
+initialize_eventflag
+check_flg_cond
+
+# dataqueue.c
+initialize_dataqueue
+enqueue_data
+force_enqueue_data
+dequeue_data
+send_data
+force_send_data
+receive_data
+
+# pridataq.c
+initialize_pridataq
+enqueue_pridata
+dequeue_pridata
+send_pridata
+receive_pridata
+
+# mailbox.c
+initialize_mailbox
+
+# mempfix.c
+initialize_mempfix
+get_mpf_block
+
+# cyclic.c
+initialize_cyclic
+call_cychdr
+
+# alarm.c
+initialize_alarm
+call_almhdr
+
+# interrupt.c
+initialize_interrupt
+
+# exception.c
+initialize_exception
+
+# kernel_cfg.c
+initialize_object
+call_inirtn
+call_terrtn
+tmax_tskid
+tinib_table
+torder_table
+tcb_table
+tmax_semid
+seminib_table
+semcb_table
+tmax_flgid
+flginib_table
+flgcb_table
+tmax_dtqid
+dtqcb_table
+dtqinib_table
+tmax_pdqid
+pdqcb_table
+pdqinib_table
+tmax_mbxid
+mbxcb_table
+mbxinib_table
+tmax_mpfid
+mpfinib_table
+mpfcb_table
+tmax_cycid
+cycinib_table
+cyccb_table
+tmax_almid
+alminib_table
+almcb_table
+tnum_inhno
+inhinib_table
+tnum_intno
+intinib_table
+tnum_excno
+excinib_table
+tmevt_heap
+istksz
+istk
+istkpt
+
+INCLUDE "target"
Index: /asp_ewarm/asp-1.7.0/kernel/kernel_rename.h
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/kernel_rename.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/kernel_rename.h	(revision 61)
@@ -0,0 +1,344 @@
+/* This file is generated from kernel_rename.def by genrename. */
+
+#ifndef TOPPERS_KERNEL_RENAME_H
+#define TOPPERS_KERNEL_RENAME_H
+
+/*
+ *  startup.c
+ */
+#define kerflg						_kernel_kerflg
+#define exit_kernel					_kernel_exit_kernel
+
+/*
+ *  task.c
+ */
+#define p_runtsk					_kernel_p_runtsk
+#define p_schedtsk					_kernel_p_schedtsk
+#define reqflg						_kernel_reqflg
+#define ipmflg						_kernel_ipmflg
+#define disdsp						_kernel_disdsp
+#define dspflg						_kernel_dspflg
+#define ready_queue					_kernel_ready_queue
+#define ready_primap				_kernel_ready_primap
+#define initialize_task				_kernel_initialize_task
+#define search_schedtsk				_kernel_search_schedtsk
+#define make_runnable				_kernel_make_runnable
+#define make_non_runnable			_kernel_make_non_runnable
+#define make_dormant				_kernel_make_dormant
+#define make_active					_kernel_make_active
+#define change_priority				_kernel_change_priority
+#define rotate_ready_queue			_kernel_rotate_ready_queue
+#define call_texrtn					_kernel_call_texrtn
+#define calltex						_kernel_calltex
+
+/*
+ *  wait.c
+ */
+#define make_wait_tmout				_kernel_make_wait_tmout
+#define wait_complete				_kernel_wait_complete
+#define wait_tmout					_kernel_wait_tmout
+#define wait_tmout_ok				_kernel_wait_tmout_ok
+#define wait_release				_kernel_wait_release
+#define wobj_make_wait				_kernel_wobj_make_wait
+#define wobj_make_wait_tmout		_kernel_wobj_make_wait_tmout
+#define init_wait_queue				_kernel_init_wait_queue
+
+/*
+ *  time_event.c
+ */
+#define current_time				_kernel_current_time
+#define min_time					_kernel_min_time
+#define next_time					_kernel_next_time
+#define next_subtime				_kernel_next_subtime
+#define last_index					_kernel_last_index
+#define initialize_tmevt			_kernel_initialize_tmevt
+#define tmevt_up					_kernel_tmevt_up
+#define tmevt_down					_kernel_tmevt_down
+#define tmevtb_insert				_kernel_tmevtb_insert
+#define tmevtb_delete				_kernel_tmevtb_delete
+#define tmevt_lefttim				_kernel_tmevt_lefttim
+#define signal_time					_kernel_signal_time
+
+/*
+ *  semaphore.c
+ */
+#define initialize_semaphore		_kernel_initialize_semaphore
+
+/*
+ *  eventflag.c
+ */
+#define initialize_eventflag		_kernel_initialize_eventflag
+#define check_flg_cond				_kernel_check_flg_cond
+
+/*
+ *  dataqueue.c
+ */
+#define initialize_dataqueue		_kernel_initialize_dataqueue
+#define enqueue_data				_kernel_enqueue_data
+#define force_enqueue_data			_kernel_force_enqueue_data
+#define dequeue_data				_kernel_dequeue_data
+#define send_data					_kernel_send_data
+#define force_send_data				_kernel_force_send_data
+#define receive_data				_kernel_receive_data
+
+/*
+ *  pridataq.c
+ */
+#define initialize_pridataq			_kernel_initialize_pridataq
+#define enqueue_pridata				_kernel_enqueue_pridata
+#define dequeue_pridata				_kernel_dequeue_pridata
+#define send_pridata				_kernel_send_pridata
+#define receive_pridata				_kernel_receive_pridata
+
+/*
+ *  mailbox.c
+ */
+#define initialize_mailbox			_kernel_initialize_mailbox
+
+/*
+ *  mempfix.c
+ */
+#define initialize_mempfix			_kernel_initialize_mempfix
+#define get_mpf_block				_kernel_get_mpf_block
+
+/*
+ *  cyclic.c
+ */
+#define initialize_cyclic			_kernel_initialize_cyclic
+#define call_cychdr					_kernel_call_cychdr
+
+/*
+ *  alarm.c
+ */
+#define initialize_alarm			_kernel_initialize_alarm
+#define call_almhdr					_kernel_call_almhdr
+
+/*
+ *  interrupt.c
+ */
+#define initialize_interrupt		_kernel_initialize_interrupt
+
+/*
+ *  exception.c
+ */
+#define initialize_exception		_kernel_initialize_exception
+
+/*
+ *  kernel_cfg.c
+ */
+#define initialize_object			_kernel_initialize_object
+#define call_inirtn					_kernel_call_inirtn
+#define call_terrtn					_kernel_call_terrtn
+#define tmax_tskid					_kernel_tmax_tskid
+#define tinib_table					_kernel_tinib_table
+#define torder_table				_kernel_torder_table
+#define tcb_table					_kernel_tcb_table
+#define tmax_semid					_kernel_tmax_semid
+#define seminib_table				_kernel_seminib_table
+#define semcb_table					_kernel_semcb_table
+#define tmax_flgid					_kernel_tmax_flgid
+#define flginib_table				_kernel_flginib_table
+#define flgcb_table					_kernel_flgcb_table
+#define tmax_dtqid					_kernel_tmax_dtqid
+#define dtqcb_table					_kernel_dtqcb_table
+#define dtqinib_table				_kernel_dtqinib_table
+#define tmax_pdqid					_kernel_tmax_pdqid
+#define pdqcb_table					_kernel_pdqcb_table
+#define pdqinib_table				_kernel_pdqinib_table
+#define tmax_mbxid					_kernel_tmax_mbxid
+#define mbxcb_table					_kernel_mbxcb_table
+#define mbxinib_table				_kernel_mbxinib_table
+#define tmax_mpfid					_kernel_tmax_mpfid
+#define mpfinib_table				_kernel_mpfinib_table
+#define mpfcb_table					_kernel_mpfcb_table
+#define tmax_cycid					_kernel_tmax_cycid
+#define cycinib_table				_kernel_cycinib_table
+#define cyccb_table					_kernel_cyccb_table
+#define tmax_almid					_kernel_tmax_almid
+#define alminib_table				_kernel_alminib_table
+#define almcb_table					_kernel_almcb_table
+#define tnum_inhno					_kernel_tnum_inhno
+#define inhinib_table				_kernel_inhinib_table
+#define tnum_intno					_kernel_tnum_intno
+#define intinib_table				_kernel_intinib_table
+#define tnum_excno					_kernel_tnum_excno
+#define excinib_table				_kernel_excinib_table
+#define tmevt_heap					_kernel_tmevt_heap
+#define istksz						_kernel_istksz
+#define istk						_kernel_istk
+#define istkpt						_kernel_istkpt
+
+
+#ifdef TOPPERS_LABEL_ASM
+
+/*
+ *  startup.c
+ */
+#define _kerflg						__kernel_kerflg
+#define _exit_kernel				__kernel_exit_kernel
+
+/*
+ *  task.c
+ */
+#define _p_runtsk					__kernel_p_runtsk
+#define _p_schedtsk					__kernel_p_schedtsk
+#define _reqflg						__kernel_reqflg
+#define _ipmflg						__kernel_ipmflg
+#define _disdsp						__kernel_disdsp
+#define _dspflg						__kernel_dspflg
+#define _ready_queue				__kernel_ready_queue
+#define _ready_primap				__kernel_ready_primap
+#define _initialize_task			__kernel_initialize_task
+#define _search_schedtsk			__kernel_search_schedtsk
+#define _make_runnable				__kernel_make_runnable
+#define _make_non_runnable			__kernel_make_non_runnable
+#define _make_dormant				__kernel_make_dormant
+#define _make_active				__kernel_make_active
+#define _change_priority			__kernel_change_priority
+#define _rotate_ready_queue			__kernel_rotate_ready_queue
+#define _call_texrtn				__kernel_call_texrtn
+#define _calltex					__kernel_calltex
+
+/*
+ *  wait.c
+ */
+#define _make_wait_tmout			__kernel_make_wait_tmout
+#define _wait_complete				__kernel_wait_complete
+#define _wait_tmout					__kernel_wait_tmout
+#define _wait_tmout_ok				__kernel_wait_tmout_ok
+#define _wait_release				__kernel_wait_release
+#define _wobj_make_wait				__kernel_wobj_make_wait
+#define _wobj_make_wait_tmout		__kernel_wobj_make_wait_tmout
+#define _init_wait_queue			__kernel_init_wait_queue
+
+/*
+ *  time_event.c
+ */
+#define _current_time				__kernel_current_time
+#define _min_time					__kernel_min_time
+#define _next_time					__kernel_next_time
+#define _next_subtime				__kernel_next_subtime
+#define _last_index					__kernel_last_index
+#define _initialize_tmevt			__kernel_initialize_tmevt
+#define _tmevt_up					__kernel_tmevt_up
+#define _tmevt_down					__kernel_tmevt_down
+#define _tmevtb_insert				__kernel_tmevtb_insert
+#define _tmevtb_delete				__kernel_tmevtb_delete
+#define _tmevt_lefttim				__kernel_tmevt_lefttim
+#define _signal_time				__kernel_signal_time
+
+/*
+ *  semaphore.c
+ */
+#define _initialize_semaphore		__kernel_initialize_semaphore
+
+/*
+ *  eventflag.c
+ */
+#define _initialize_eventflag		__kernel_initialize_eventflag
+#define _check_flg_cond				__kernel_check_flg_cond
+
+/*
+ *  dataqueue.c
+ */
+#define _initialize_dataqueue		__kernel_initialize_dataqueue
+#define _enqueue_data				__kernel_enqueue_data
+#define _force_enqueue_data			__kernel_force_enqueue_data
+#define _dequeue_data				__kernel_dequeue_data
+#define _send_data					__kernel_send_data
+#define _force_send_data			__kernel_force_send_data
+#define _receive_data				__kernel_receive_data
+
+/*
+ *  pridataq.c
+ */
+#define _initialize_pridataq		__kernel_initialize_pridataq
+#define _enqueue_pridata			__kernel_enqueue_pridata
+#define _dequeue_pridata			__kernel_dequeue_pridata
+#define _send_pridata				__kernel_send_pridata
+#define _receive_pridata			__kernel_receive_pridata
+
+/*
+ *  mailbox.c
+ */
+#define _initialize_mailbox			__kernel_initialize_mailbox
+
+/*
+ *  mempfix.c
+ */
+#define _initialize_mempfix			__kernel_initialize_mempfix
+#define _get_mpf_block				__kernel_get_mpf_block
+
+/*
+ *  cyclic.c
+ */
+#define _initialize_cyclic			__kernel_initialize_cyclic
+#define _call_cychdr				__kernel_call_cychdr
+
+/*
+ *  alarm.c
+ */
+#define _initialize_alarm			__kernel_initialize_alarm
+#define _call_almhdr				__kernel_call_almhdr
+
+/*
+ *  interrupt.c
+ */
+#define _initialize_interrupt		__kernel_initialize_interrupt
+
+/*
+ *  exception.c
+ */
+#define _initialize_exception		__kernel_initialize_exception
+
+/*
+ *  kernel_cfg.c
+ */
+#define _initialize_object			__kernel_initialize_object
+#define _call_inirtn				__kernel_call_inirtn
+#define _call_terrtn				__kernel_call_terrtn
+#define _tmax_tskid					__kernel_tmax_tskid
+#define _tinib_table				__kernel_tinib_table
+#define _torder_table				__kernel_torder_table
+#define _tcb_table					__kernel_tcb_table
+#define _tmax_semid					__kernel_tmax_semid
+#define _seminib_table				__kernel_seminib_table
+#define _semcb_table				__kernel_semcb_table
+#define _tmax_flgid					__kernel_tmax_flgid
+#define _flginib_table				__kernel_flginib_table
+#define _flgcb_table				__kernel_flgcb_table
+#define _tmax_dtqid					__kernel_tmax_dtqid
+#define _dtqcb_table				__kernel_dtqcb_table
+#define _dtqinib_table				__kernel_dtqinib_table
+#define _tmax_pdqid					__kernel_tmax_pdqid
+#define _pdqcb_table				__kernel_pdqcb_table
+#define _pdqinib_table				__kernel_pdqinib_table
+#define _tmax_mbxid					__kernel_tmax_mbxid
+#define _mbxcb_table				__kernel_mbxcb_table
+#define _mbxinib_table				__kernel_mbxinib_table
+#define _tmax_mpfid					__kernel_tmax_mpfid
+#define _mpfinib_table				__kernel_mpfinib_table
+#define _mpfcb_table				__kernel_mpfcb_table
+#define _tmax_cycid					__kernel_tmax_cycid
+#define _cycinib_table				__kernel_cycinib_table
+#define _cyccb_table				__kernel_cyccb_table
+#define _tmax_almid					__kernel_tmax_almid
+#define _alminib_table				__kernel_alminib_table
+#define _almcb_table				__kernel_almcb_table
+#define _tnum_inhno					__kernel_tnum_inhno
+#define _inhinib_table				__kernel_inhinib_table
+#define _tnum_intno					__kernel_tnum_intno
+#define _intinib_table				__kernel_intinib_table
+#define _tnum_excno					__kernel_tnum_excno
+#define _excinib_table				__kernel_excinib_table
+#define _tmevt_heap					__kernel_tmevt_heap
+#define _istksz						__kernel_istksz
+#define _istk						__kernel_istk
+#define _istkpt						__kernel_istkpt
+
+
+#endif /* TOPPERS_LABEL_ASM */
+
+#include "target_rename.h"
+
+#endif /* TOPPERS_KERNEL_RENAME_H */
Index: /asp_ewarm/asp-1.7.0/kernel/kernel_unrename.h
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/kernel_unrename.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/kernel_unrename.h	(revision 61)
@@ -0,0 +1,345 @@
+/* This file is generated from kernel_rename.def by genrename. */
+
+/* This file is included only when kernel_rename.h has been included. */
+#ifdef TOPPERS_KERNEL_RENAME_H
+#undef TOPPERS_KERNEL_RENAME_H
+
+/*
+ *  startup.c
+ */
+#undef kerflg
+#undef exit_kernel
+
+/*
+ *  task.c
+ */
+#undef p_runtsk
+#undef p_schedtsk
+#undef reqflg
+#undef ipmflg
+#undef disdsp
+#undef dspflg
+#undef ready_queue
+#undef ready_primap
+#undef initialize_task
+#undef search_schedtsk
+#undef make_runnable
+#undef make_non_runnable
+#undef make_dormant
+#undef make_active
+#undef change_priority
+#undef rotate_ready_queue
+#undef call_texrtn
+#undef calltex
+
+/*
+ *  wait.c
+ */
+#undef make_wait_tmout
+#undef wait_complete
+#undef wait_tmout
+#undef wait_tmout_ok
+#undef wait_release
+#undef wobj_make_wait
+#undef wobj_make_wait_tmout
+#undef init_wait_queue
+
+/*
+ *  time_event.c
+ */
+#undef current_time
+#undef min_time
+#undef next_time
+#undef next_subtime
+#undef last_index
+#undef initialize_tmevt
+#undef tmevt_up
+#undef tmevt_down
+#undef tmevtb_insert
+#undef tmevtb_delete
+#undef tmevt_lefttim
+#undef signal_time
+
+/*
+ *  semaphore.c
+ */
+#undef initialize_semaphore
+
+/*
+ *  eventflag.c
+ */
+#undef initialize_eventflag
+#undef check_flg_cond
+
+/*
+ *  dataqueue.c
+ */
+#undef initialize_dataqueue
+#undef enqueue_data
+#undef force_enqueue_data
+#undef dequeue_data
+#undef send_data
+#undef force_send_data
+#undef receive_data
+
+/*
+ *  pridataq.c
+ */
+#undef initialize_pridataq
+#undef enqueue_pridata
+#undef dequeue_pridata
+#undef send_pridata
+#undef receive_pridata
+
+/*
+ *  mailbox.c
+ */
+#undef initialize_mailbox
+
+/*
+ *  mempfix.c
+ */
+#undef initialize_mempfix
+#undef get_mpf_block
+
+/*
+ *  cyclic.c
+ */
+#undef initialize_cyclic
+#undef call_cychdr
+
+/*
+ *  alarm.c
+ */
+#undef initialize_alarm
+#undef call_almhdr
+
+/*
+ *  interrupt.c
+ */
+#undef initialize_interrupt
+
+/*
+ *  exception.c
+ */
+#undef initialize_exception
+
+/*
+ *  kernel_cfg.c
+ */
+#undef initialize_object
+#undef call_inirtn
+#undef call_terrtn
+#undef tmax_tskid
+#undef tinib_table
+#undef torder_table
+#undef tcb_table
+#undef tmax_semid
+#undef seminib_table
+#undef semcb_table
+#undef tmax_flgid
+#undef flginib_table
+#undef flgcb_table
+#undef tmax_dtqid
+#undef dtqcb_table
+#undef dtqinib_table
+#undef tmax_pdqid
+#undef pdqcb_table
+#undef pdqinib_table
+#undef tmax_mbxid
+#undef mbxcb_table
+#undef mbxinib_table
+#undef tmax_mpfid
+#undef mpfinib_table
+#undef mpfcb_table
+#undef tmax_cycid
+#undef cycinib_table
+#undef cyccb_table
+#undef tmax_almid
+#undef alminib_table
+#undef almcb_table
+#undef tnum_inhno
+#undef inhinib_table
+#undef tnum_intno
+#undef intinib_table
+#undef tnum_excno
+#undef excinib_table
+#undef tmevt_heap
+#undef istksz
+#undef istk
+#undef istkpt
+
+
+#ifdef TOPPERS_LABEL_ASM
+
+/*
+ *  startup.c
+ */
+#undef _kerflg
+#undef _exit_kernel
+
+/*
+ *  task.c
+ */
+#undef _p_runtsk
+#undef _p_schedtsk
+#undef _reqflg
+#undef _ipmflg
+#undef _disdsp
+#undef _dspflg
+#undef _ready_queue
+#undef _ready_primap
+#undef _initialize_task
+#undef _search_schedtsk
+#undef _make_runnable
+#undef _make_non_runnable
+#undef _make_dormant
+#undef _make_active
+#undef _change_priority
+#undef _rotate_ready_queue
+#undef _call_texrtn
+#undef _calltex
+
+/*
+ *  wait.c
+ */
+#undef _make_wait_tmout
+#undef _wait_complete
+#undef _wait_tmout
+#undef _wait_tmout_ok
+#undef _wait_release
+#undef _wobj_make_wait
+#undef _wobj_make_wait_tmout
+#undef _init_wait_queue
+
+/*
+ *  time_event.c
+ */
+#undef _current_time
+#undef _min_time
+#undef _next_time
+#undef _next_subtime
+#undef _last_index
+#undef _initialize_tmevt
+#undef _tmevt_up
+#undef _tmevt_down
+#undef _tmevtb_insert
+#undef _tmevtb_delete
+#undef _tmevt_lefttim
+#undef _signal_time
+
+/*
+ *  semaphore.c
+ */
+#undef _initialize_semaphore
+
+/*
+ *  eventflag.c
+ */
+#undef _initialize_eventflag
+#undef _check_flg_cond
+
+/*
+ *  dataqueue.c
+ */
+#undef _initialize_dataqueue
+#undef _enqueue_data
+#undef _force_enqueue_data
+#undef _dequeue_data
+#undef _send_data
+#undef _force_send_data
+#undef _receive_data
+
+/*
+ *  pridataq.c
+ */
+#undef _initialize_pridataq
+#undef _enqueue_pridata
+#undef _dequeue_pridata
+#undef _send_pridata
+#undef _receive_pridata
+
+/*
+ *  mailbox.c
+ */
+#undef _initialize_mailbox
+
+/*
+ *  mempfix.c
+ */
+#undef _initialize_mempfix
+#undef _get_mpf_block
+
+/*
+ *  cyclic.c
+ */
+#undef _initialize_cyclic
+#undef _call_cychdr
+
+/*
+ *  alarm.c
+ */
+#undef _initialize_alarm
+#undef _call_almhdr
+
+/*
+ *  interrupt.c
+ */
+#undef _initialize_interrupt
+
+/*
+ *  exception.c
+ */
+#undef _initialize_exception
+
+/*
+ *  kernel_cfg.c
+ */
+#undef _initialize_object
+#undef _call_inirtn
+#undef _call_terrtn
+#undef _tmax_tskid
+#undef _tinib_table
+#undef _torder_table
+#undef _tcb_table
+#undef _tmax_semid
+#undef _seminib_table
+#undef _semcb_table
+#undef _tmax_flgid
+#undef _flginib_table
+#undef _flgcb_table
+#undef _tmax_dtqid
+#undef _dtqcb_table
+#undef _dtqinib_table
+#undef _tmax_pdqid
+#undef _pdqcb_table
+#undef _pdqinib_table
+#undef _tmax_mbxid
+#undef _mbxcb_table
+#undef _mbxinib_table
+#undef _tmax_mpfid
+#undef _mpfinib_table
+#undef _mpfcb_table
+#undef _tmax_cycid
+#undef _cycinib_table
+#undef _cyccb_table
+#undef _tmax_almid
+#undef _alminib_table
+#undef _almcb_table
+#undef _tnum_inhno
+#undef _inhinib_table
+#undef _tnum_intno
+#undef _intinib_table
+#undef _tnum_excno
+#undef _excinib_table
+#undef _tmevt_heap
+#undef _istksz
+#undef _istk
+#undef _istkpt
+
+
+#endif /* TOPPERS_LABEL_ASM */
+
+#include "target_unrename.h"
+
+#endif /* TOPPERS_KERNEL_RENAME_H */
Index: /asp_ewarm/asp-1.7.0/kernel/mailbox.c
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/mailbox.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/mailbox.c	(revision 61)
@@ -0,0 +1,398 @@
+/*
+ *  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-2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: mailbox.c 748 2008-03-07 17:18:06Z hiro $
+ */
+
+/*
+ *		[{bNX@\
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+#include "mailbox.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_SND_MBX_ENTER
+#define LOG_SND_MBX_ENTER(mbxid, pk_msg)
+#endif /* LOG_SND_MBX_ENTER */
+
+#ifndef LOG_SND_MBX_LEAVE
+#define LOG_SND_MBX_LEAVE(ercd)
+#endif /* LOG_SND_MBX_LEAVE */
+
+#ifndef LOG_RCV_MBX_ENTER
+#define LOG_RCV_MBX_ENTER(mbxid, ppk_msg)
+#endif /* LOG_RCV_MBX_ENTER */
+
+#ifndef LOG_RCV_MBX_LEAVE
+#define LOG_RCV_MBX_LEAVE(ercd, pk_msg)
+#endif /* LOG_RCV_MBX_LEAVE */
+
+#ifndef LOG_PRCV_MBX_ENTER
+#define LOG_PRCV_MBX_ENTER(mbxid, ppk_msg)
+#endif /* LOG_PRCV_MBX_ENTER */
+
+#ifndef LOG_PRCV_MBX_LEAVE
+#define LOG_PRCV_MBX_LEAVE(ercd, pk_msg)
+#endif /* LOG_PRCV_MBX_LEAVE */
+
+#ifndef LOG_TRCV_MBX_ENTER
+#define LOG_TRCV_MBX_ENTER(mbxid, ppk_msg, tmout)
+#endif /* LOG_TRCV_MBX_ENTER */
+
+#ifndef LOG_TRCV_MBX_LEAVE
+#define LOG_TRCV_MBX_LEAVE(ercd, pk_msg)
+#endif /* LOG_TRCV_MBX_LEAVE */
+
+#ifndef LOG_INI_MBX_ENTER
+#define LOG_INI_MBX_ENTER(mbxid)
+#endif /* LOG_INI_MBX_ENTER */
+
+#ifndef LOG_INI_MBX_LEAVE
+#define LOG_INI_MBX_LEAVE(ercd)
+#endif /* LOG_INI_MBX_LEAVE */
+
+#ifndef LOG_REF_MBX_ENTER
+#define LOG_REF_MBX_ENTER(mbxid, pk_rmbx)
+#endif /* LOG_REF_MBX_ENTER */
+
+#ifndef LOG_REF_MBX_LEAVE
+#define LOG_REF_MBX_LEAVE(ercd, pk_rmbx)
+#endif /* LOG_REF_MBX_LEAVE */
+
+/*
+ *  [{bNXÌ
+ */
+#define tnum_mbx	((uint_t)(tmax_mbxid - TMIN_MBXID + 1))
+
+/*
+ *  [{bNXID©ç[{bNXÇubNðæèo·½ßÌ}N
+ */
+#define INDEX_MBX(mbxid)	((uint_t)((mbxid) - TMIN_MBXID))
+#define get_mbxcb(mbxid)	(&(mbxcb_table[INDEX_MBX(mbxid)]))
+
+/* 
+ *  [{bNX@\Ìú»
+ */
+#ifdef TOPPERS_mbxini
+
+void
+initialize_mailbox(void)
+{
+	uint_t	i;
+	MBXCB	*p_mbxcb;
+
+	for (p_mbxcb = mbxcb_table, i = 0; i < tnum_mbx; p_mbxcb++, i++) {
+		queue_initialize(&(p_mbxcb->wait_queue));
+		p_mbxcb->p_mbxinib = &(mbxinib_table[i]);
+		p_mbxcb->pk_head = NULL;
+	}
+}
+
+#endif /* TOPPERS_mbxini */
+
+/*
+ *  bZ[WDæxÌæoµ
+ */
+#define	MSGPRI(pk_msg)	(((T_MSG_PRI *) pk_msg)->msgpri)
+
+/*
+ *  DæxbZ[WL
+[ÖÌ}ü
+ */
+Inline void
+enqueue_msg_pri(T_MSG **ppk_prevmsg_next, T_MSG *pk_msg)
+{
+	T_MSG	*pk_nextmsg;
+
+	while ((pk_nextmsg = *ppk_prevmsg_next) != NULL) {
+		if (MSGPRI(pk_nextmsg) > MSGPRI(pk_msg)) {
+			break;
+		}
+		ppk_prevmsg_next = &(pk_nextmsg->pk_next);
+	}
+	pk_msg->pk_next = pk_nextmsg;
+	*ppk_prevmsg_next = pk_msg;
+}
+
+/*
+ *  [{bNXÖÌM
+ */
+#ifdef TOPPERS_snd_mbx
+
+ER
+snd_mbx(ID mbxid, T_MSG *pk_msg)
+{
+	MBXCB	*p_mbxcb;
+	TCB		*p_tcb;
+	ER		ercd;
+    
+	LOG_SND_MBX_ENTER(mbxid, pk_msg);
+	CHECK_TSKCTX_UNL();
+	CHECK_MBXID(mbxid);
+	p_mbxcb = get_mbxcb(mbxid);
+	CHECK_PAR((p_mbxcb->p_mbxinib->mbxatr & TA_MPRI) == 0U
+				|| (TMIN_MPRI <= MSGPRI(pk_msg)
+					&& MSGPRI(pk_msg) <= p_mbxcb->p_mbxinib->maxmpri));
+
+	t_lock_cpu();
+	if (!queue_empty(&(p_mbxcb->wait_queue))) {
+		p_tcb = (TCB *) queue_delete_next(&(p_mbxcb->wait_queue));
+		((WINFO_MBX *)(p_tcb->p_winfo))->pk_msg = pk_msg;
+		if (wait_complete(p_tcb)) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else if ((p_mbxcb->p_mbxinib->mbxatr & TA_MPRI) != 0U) {
+		enqueue_msg_pri(&(p_mbxcb->pk_head), pk_msg);
+		ercd = E_OK;
+	}
+	else {
+		pk_msg->pk_next = NULL;
+		if (p_mbxcb->pk_head != NULL) {
+			p_mbxcb->pk_last->pk_next = pk_msg;
+		}
+		else {
+			p_mbxcb->pk_head = pk_msg;
+		}
+		p_mbxcb->pk_last = pk_msg;
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_SND_MBX_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_snd_mbx */
+
+/*
+ *  [{bNX©çÌóM
+ */
+#ifdef TOPPERS_rcv_mbx
+
+ER
+rcv_mbx(ID mbxid, T_MSG **ppk_msg)
+{
+	MBXCB	*p_mbxcb;
+	WINFO_MBX winfo_mbx;
+	ER		ercd;
+    
+	LOG_RCV_MBX_ENTER(mbxid, ppk_msg);
+	CHECK_DISPATCH();
+	CHECK_MBXID(mbxid);
+	p_mbxcb = get_mbxcb(mbxid);
+    
+	t_lock_cpu();
+	if (p_mbxcb->pk_head != NULL) {
+		*ppk_msg = p_mbxcb->pk_head;
+		p_mbxcb->pk_head = (*ppk_msg)->pk_next;
+		ercd = E_OK;
+	}
+	else {
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_MBX);
+		wobj_make_wait((WOBJCB *) p_mbxcb, (WINFO_WOBJ *) &winfo_mbx);
+		dispatch();
+		ercd = winfo_mbx.winfo.wercd;
+		if (ercd == E_OK) {
+			*ppk_msg = winfo_mbx.pk_msg;
+		}
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_RCV_MBX_LEAVE(ercd, *ppk_msg);
+	return(ercd);
+}
+
+#endif /* TOPPERS_rcv_mbx */
+
+/*
+ *  [{bNX©çÌóMi|[Oj
+ */
+#ifdef TOPPERS_prcv_mbx
+
+ER
+prcv_mbx(ID mbxid, T_MSG **ppk_msg)
+{
+	MBXCB	*p_mbxcb;
+	ER		ercd;
+    
+	LOG_PRCV_MBX_ENTER(mbxid, ppk_msg);
+	CHECK_TSKCTX_UNL();
+	CHECK_MBXID(mbxid);
+	p_mbxcb = get_mbxcb(mbxid);
+    
+	t_lock_cpu();
+	if (p_mbxcb->pk_head != NULL) {
+		*ppk_msg = p_mbxcb->pk_head;
+		p_mbxcb->pk_head = (*ppk_msg)->pk_next;
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_TMOUT;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_PRCV_MBX_LEAVE(ercd, *ppk_msg);
+	return(ercd);
+}
+
+#endif /* TOPPERS_prcv_mbx */
+
+/*
+ *  [{bNX©çÌóMi^CAEg èj
+ */
+#ifdef TOPPERS_trcv_mbx
+
+ER
+trcv_mbx(ID mbxid, T_MSG **ppk_msg, TMO tmout)
+{
+	MBXCB	*p_mbxcb;
+	WINFO_MBX winfo_mbx;
+	TMEVTB	tmevtb;
+	ER		ercd;
+    
+	LOG_TRCV_MBX_ENTER(mbxid, ppk_msg, tmout);
+	CHECK_DISPATCH();
+	CHECK_MBXID(mbxid);
+	CHECK_TMOUT(tmout);
+	p_mbxcb = get_mbxcb(mbxid);
+    
+	t_lock_cpu();
+	if (p_mbxcb->pk_head != NULL) {
+		*ppk_msg = p_mbxcb->pk_head;
+		p_mbxcb->pk_head = (*ppk_msg)->pk_next;
+		ercd = E_OK;
+	}
+	else if (tmout == TMO_POL) {
+		ercd = E_TMOUT;
+	}
+	else {
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_MBX);
+		wobj_make_wait_tmout((WOBJCB *) p_mbxcb, (WINFO_WOBJ *) &winfo_mbx,
+														&tmevtb, tmout);
+		dispatch();
+		ercd = winfo_mbx.winfo.wercd;
+		if (ercd == E_OK) {
+			*ppk_msg = winfo_mbx.pk_msg;
+		}
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_TRCV_MBX_LEAVE(ercd, *ppk_msg);
+	return(ercd);
+}
+
+#endif /* TOPPERS_trcv_mbx */
+
+/*
+ *  [{bNXÌÄú»
+ */
+#ifdef TOPPERS_ini_mbx
+
+ER
+ini_mbx(ID mbxid)
+{
+	MBXCB	*p_mbxcb;
+	bool_t	dspreq;
+	ER		ercd;
+    
+	LOG_INI_MBX_ENTER(mbxid);
+	CHECK_TSKCTX_UNL();
+	CHECK_MBXID(mbxid);
+	p_mbxcb = get_mbxcb(mbxid);
+
+	t_lock_cpu();
+	dspreq = init_wait_queue(&(p_mbxcb->wait_queue));
+	p_mbxcb->pk_head = NULL;
+	if (dspreq) {
+		dispatch();
+	}
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_INI_MBX_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ini_mbx */
+
+/*
+ *  [{bNXÌóÔQÆ
+ */
+#ifdef TOPPERS_ref_mbx
+
+ER
+ref_mbx(ID mbxid, T_RMBX *pk_rmbx)
+{
+	MBXCB	*p_mbxcb;
+	ER		ercd;
+    
+	LOG_REF_MBX_ENTER(mbxid, pk_rmbx);
+	CHECK_TSKCTX_UNL();
+	CHECK_MBXID(mbxid);
+	p_mbxcb = get_mbxcb(mbxid);
+
+	t_lock_cpu();
+	pk_rmbx->wtskid = wait_tskid(&(p_mbxcb->wait_queue));
+	pk_rmbx->pk_msg = p_mbxcb->pk_head;
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_REF_MBX_LEAVE(ercd, pk_rmbx);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ref_mbx */
Index: /asp_ewarm/asp-1.7.0/kernel/mailbox.h
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/mailbox.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/mailbox.h	(revision 61)
@@ -0,0 +1,127 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2000 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005,2006 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: mailbox.h 264 2007-07-12 08:23:10Z hiro $
+ */
+
+/*
+ *		[{bNX@\
+ */
+
+#ifndef TOPPERS_MAILBOX_H
+#define TOPPERS_MAILBOX_H
+
+#include <queue.h>
+
+/*
+ *  [{bNXú»ubN
+ *
+ *  ±Ì\¢ÌÍC¯úEÊMIuWFNgÌú»ubNÌ¤Êª
+ *  iWOBJINIBjðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅC
+ *  ÅÌtB[hª¤ÊÉÈÁÄ¢éD
+ */
+typedef struct mailbox_initialization_block {
+	ATR			mbxatr;			/* [{bNX®« */
+	PRI			maxmpri;		/* bZ[WDæxÌÅål */
+} MBXINIB;
+
+/*
+ *  [{bNXÇubN
+ *
+ *  ±Ì\¢ÌÍC¯úEÊMIuWFNgÌÇubNÌ¤ÊªiWOBJCBj
+ *  ðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅCÅÌ2ÂÌ
+ *  tB[hª¤ÊÉÈÁÄ¢éD
+ *
+ *  bZ[WL
+[ªbZ[WÌDæxÌêÉÍCpk_lastÍgíÈ
+ *  ¢DÜ½CbZ[WL
+[ªóÌêipk_headªNULLÌêjÉàC
+ *  pk_lastÍ³øÅ éD
+ */
+typedef struct mailbox_control_block {
+	QUEUE		wait_queue;		/* [{bNXÒ¿L
+[ */
+	const MBXINIB *p_mbxinib;	/* ú»ubNÖÌ|C^ */
+	T_MSG		*pk_head;		/* æªÌbZ[W */
+	T_MSG		*pk_last;		/* öÌbZ[W */
+} MBXCB;
+
+/*
+ *  [{bNXÒ¿îñubNÌè`
+ *
+ *  ±Ì\¢ÌÍC¯úEÊMIuWFNgÌÒ¿îñubNÌ¤Êª
+ *  iWINFO_WOBJjðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅC
+ *  ÅÌ2ÂÌtB[hª¤ÊÉÈÁÄ¢éD
+ */
+typedef struct mailbox_waiting_information {
+	WINFO		winfo;			/* WÌÒ¿îñubN */
+	MBXCB		*p_mbxcb;		/* ÒÁÄ¢é[{bNXÌÇubN */
+	T_MSG		*pk_msg;		/* óMµ½bZ[W */
+} WINFO_MBX;
+
+/*
+ *  [{bNXIDÌÅålikernel_cfg.cj
+ */
+extern const ID	tmax_mbxid;
+
+/*
+ *  [{bNXú»ubNÌGAikernel_cfg.cj
+ */
+extern const MBXINIB	mbxinib_table[];
+
+/*
+ *  [{bNXÇubNÌGAikernel_cfg.cj
+ */
+extern MBXCB	mbxcb_table[];
+
+/*
+ *  [{bNXÇubN©ç[{bNXIDðæèo·½ßÌ}N
+ */
+#define	MBXID(p_mbxcb)	((ID)(((p_mbxcb) - mbxcb_table) + TMIN_MBXID))
+
+/*
+ *  [{bNX@\Ìú»
+ */
+extern void	initialize_mailbox(void);
+
+#endif /* TOPPERS_MAILBOX_H */
Index: /asp_ewarm/asp-1.7.0/kernel/mempfix.c
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/mempfix.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/mempfix.c	(revision 61)
@@ -0,0 +1,404 @@
+/*
+ *  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-2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: mempfix.c 748 2008-03-07 17:18:06Z hiro $
+ */
+
+/*
+ *		Åè·v[@\
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+#include "mempfix.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_GET_MPF_ENTER
+#define LOG_GET_MPF_ENTER(mpfid, p_blk)
+#endif /* LOG_GET_MPF_ENTER */
+
+#ifndef LOG_GET_MPF_LEAVE
+#define LOG_GET_MPF_LEAVE(ercd, blk)
+#endif /* LOG_GET_MPF_LEAVE */
+
+#ifndef LOG_PGET_MPF_ENTER
+#define LOG_PGET_MPF_ENTER(mpfid, p_blk)
+#endif /* LOG_PGET_MPF_ENTER */
+
+#ifndef LOG_PGET_MPF_LEAVE
+#define LOG_PGET_MPF_LEAVE(ercd, blk)
+#endif /* LOG_PGET_MPF_LEAVE */
+
+#ifndef LOG_TGET_MPF_ENTER
+#define LOG_TGET_MPF_ENTER(mpfid, p_blk, tmout)
+#endif /* LOG_TGET_MPF_ENTER */
+
+#ifndef LOG_TGET_MPF_LEAVE
+#define LOG_TGET_MPF_LEAVE(ercd, blk)
+#endif /* LOG_TGET_MPF_LEAVE */
+
+#ifndef LOG_REL_MPF_ENTER
+#define LOG_REL_MPF_ENTER(mpfid, blk)
+#endif /* LOG_REL_MPF_ENTER */
+
+#ifndef LOG_REL_MPF_LEAVE
+#define LOG_REL_MPF_LEAVE(ercd)
+#endif /* LOG_REL_MPF_LEAVE */
+
+#ifndef LOG_INI_MPF_ENTER
+#define LOG_INI_MPF_ENTER(mpfid)
+#endif /* LOG_INI_MPF_ENTER */
+
+#ifndef LOG_INI_MPF_LEAVE
+#define LOG_INI_MPF_LEAVE(ercd)
+#endif /* LOG_INI_MPF_LEAVE */
+
+#ifndef LOG_REF_MPF_ENTER
+#define LOG_REF_MPF_ENTER(mpfid, pk_rmpf)
+#endif /* LOG_REF_MPF_ENTER */
+
+#ifndef LOG_REF_MPF_LEAVE
+#define LOG_REF_MPF_LEAVE(ercd, pk_rmpf)
+#endif /* LOG_REF_MPF_LEAVE */
+
+/*
+ *  Åè·v[Ì
+ */
+#define tnum_mpf	((uint_t)(tmax_mpfid - TMIN_MPFID + 1))
+
+/*
+ *  Åè·v[ID©çÅè·v[ÇubNðæèo·½
+ *  ßÌ}N
+ */
+#define INDEX_MPF(mpfid)	((uint_t)((mpfid) - TMIN_MPFID))
+#define get_mpfcb(mpfid)	(&(mpfcb_table[INDEX_MPF(mpfid)]))
+
+/*
+ *  ÁêÈCfbNXlÌè`
+ */
+#define INDEX_NULL		(~0U)		/* ó«ubNXgÌÅã */
+#define INDEX_ALLOC		(~1U)		/* ÄÏÝÌubN */
+
+/* 
+ *  Åè·v[@\Ìú»
+ */
+#ifdef TOPPERS_mpfini
+
+void
+initialize_mempfix(void)
+{
+	uint_t	i;
+	MPFCB	*p_mpfcb;
+
+	for (p_mpfcb = mpfcb_table, i = 0; i < tnum_mpf; p_mpfcb++, i++) {
+		queue_initialize(&(p_mpfcb->wait_queue));
+		p_mpfcb->p_mpfinib = &(mpfinib_table[i]);
+		p_mpfcb->fblkcnt = p_mpfcb->p_mpfinib->blkcnt;
+		p_mpfcb->unused = 0U;
+		p_mpfcb->freelist = INDEX_NULL;
+	}
+}
+
+#endif /* TOPPERS_mpfini */
+
+/*
+ *  Åè·v[©çubNðl¾
+ */
+#ifdef TOPPERS_mpfget
+
+void
+get_mpf_block(MPFCB *p_mpfcb, void **p_blk)
+{
+	uint_t	blkidx;
+
+	if (p_mpfcb->freelist != INDEX_NULL) {
+		blkidx = p_mpfcb->freelist;
+		p_mpfcb->freelist = (p_mpfcb->p_mpfinib->p_mpfmb + blkidx)->next;
+	}
+	else {
+		blkidx = p_mpfcb->unused;
+		p_mpfcb->unused++;
+	}
+	*p_blk = (void *)((char *)(p_mpfcb->p_mpfinib->mpf)
+								+ p_mpfcb->p_mpfinib->blksz * blkidx);
+	p_mpfcb->fblkcnt--;
+	(p_mpfcb->p_mpfinib->p_mpfmb + blkidx)->next = INDEX_ALLOC;
+}
+
+#endif /* TOPPERS_mpfget */
+
+/*
+ *  Åè·ubNÌl¾
+ */
+#ifdef TOPPERS_get_mpf
+
+ER
+get_mpf(ID mpfid, void **p_blk)
+{
+	MPFCB	*p_mpfcb;
+	WINFO_MPF winfo_mpf;
+	ER		ercd;
+
+	LOG_GET_MPF_ENTER(mpfid, p_blk);
+	CHECK_DISPATCH();
+	CHECK_MPFID(mpfid);
+	p_mpfcb = get_mpfcb(mpfid);
+
+	t_lock_cpu();
+	if (p_mpfcb->fblkcnt > 0) {
+		get_mpf_block(p_mpfcb, p_blk);
+		ercd = E_OK;
+	}
+	else {
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_MPF);
+		wobj_make_wait((WOBJCB *) p_mpfcb, (WINFO_WOBJ *) &winfo_mpf);
+		dispatch();
+		ercd = winfo_mpf.winfo.wercd;
+		if (ercd == E_OK) {
+			*p_blk = winfo_mpf.blk;
+		}
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_GET_MPF_LEAVE(ercd, *p_blk);
+	return(ercd);
+}
+
+#endif /* TOPPERS_get_mpf */
+
+/*
+ *  Åè·ubNÌl¾i|[Oj
+ */
+#ifdef TOPPERS_pget_mpf
+
+ER
+pget_mpf(ID mpfid, void **p_blk)
+{
+	MPFCB	*p_mpfcb;
+	ER		ercd;
+
+	LOG_PGET_MPF_ENTER(mpfid, p_blk);
+	CHECK_TSKCTX_UNL();
+	CHECK_MPFID(mpfid);
+	p_mpfcb = get_mpfcb(mpfid);
+
+	t_lock_cpu();
+	if (p_mpfcb->fblkcnt > 0) {
+		get_mpf_block(p_mpfcb, p_blk);
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_TMOUT;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_PGET_MPF_LEAVE(ercd, *p_blk);
+	return(ercd);
+}
+
+#endif /* TOPPERS_pget_mpf */
+
+/*
+ *  Åè·ubNÌl¾i^CAEg èj
+ */
+#ifdef TOPPERS_tget_mpf
+
+ER
+tget_mpf(ID mpfid, void **p_blk, TMO tmout)
+{
+	MPFCB	*p_mpfcb;
+	WINFO_MPF winfo_mpf;
+	TMEVTB	tmevtb;
+	ER		ercd;
+
+	LOG_TGET_MPF_ENTER(mpfid, p_blk, tmout);
+	CHECK_DISPATCH();
+	CHECK_MPFID(mpfid);
+	CHECK_TMOUT(tmout);
+	p_mpfcb = get_mpfcb(mpfid);
+
+	t_lock_cpu();
+	if (p_mpfcb->fblkcnt > 0) {
+		get_mpf_block(p_mpfcb, p_blk);
+		ercd = E_OK;
+	}
+	else if (tmout == TMO_POL) {
+		ercd = E_TMOUT;
+	}
+	else {
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_MPF);
+		wobj_make_wait_tmout((WOBJCB *) p_mpfcb, (WINFO_WOBJ *) &winfo_mpf,
+														&tmevtb, tmout);
+		dispatch();
+		ercd = winfo_mpf.winfo.wercd;
+		if (ercd == E_OK) {
+			*p_blk = winfo_mpf.blk;
+		}
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_TGET_MPF_LEAVE(ercd, *p_blk);
+	return(ercd);
+}
+
+#endif /* TOPPERS_tget_mpf */
+
+/*
+ *  Åè·ubNÌÔp
+ */
+#ifdef TOPPERS_rel_mpf
+
+ER
+rel_mpf(ID mpfid, void *blk)
+{
+	MPFCB	*p_mpfcb;
+	SIZE	blkoffset;
+	uint_t	blkidx;
+	TCB		*p_tcb;
+	ER		ercd;
+    
+	LOG_REL_MPF_ENTER(mpfid, blk);
+	CHECK_TSKCTX_UNL();
+	CHECK_MPFID(mpfid);
+	p_mpfcb = get_mpfcb(mpfid);
+	CHECK_PAR(p_mpfcb->p_mpfinib->mpf <= blk);
+	blkoffset = ((char *) blk) - (char *)(p_mpfcb->p_mpfinib->mpf);
+	CHECK_PAR(blkoffset % p_mpfcb->p_mpfinib->blksz == 0U);
+	CHECK_PAR(blkoffset / p_mpfcb->p_mpfinib->blksz < p_mpfcb->unused);
+	blkidx = (uint_t)(blkoffset / p_mpfcb->p_mpfinib->blksz);
+	CHECK_PAR((p_mpfcb->p_mpfinib->p_mpfmb + blkidx)->next == INDEX_ALLOC);
+
+	t_lock_cpu();
+	if (!queue_empty(&(p_mpfcb->wait_queue))) {
+		p_tcb = (TCB *) queue_delete_next(&(p_mpfcb->wait_queue));
+		((WINFO_MPF *)(p_tcb->p_winfo))->blk = blk;
+		if (wait_complete(p_tcb)) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else {
+		p_mpfcb->fblkcnt++;
+		(p_mpfcb->p_mpfinib->p_mpfmb + blkidx)->next = p_mpfcb->freelist;
+		p_mpfcb->freelist = blkidx;
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_REL_MPF_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_rel_mpf */
+
+/*
+ *  Åè·v[ÌÄú»
+ */
+#ifdef TOPPERS_ini_mpf
+
+ER
+ini_mpf(ID mpfid)
+{
+	MPFCB	*p_mpfcb;
+	bool_t	dspreq;
+	ER		ercd;
+    
+	LOG_INI_MPF_ENTER(mpfid);
+	CHECK_TSKCTX_UNL();
+	CHECK_MPFID(mpfid);
+	p_mpfcb = get_mpfcb(mpfid);
+
+	t_lock_cpu();
+	dspreq = init_wait_queue(&(p_mpfcb->wait_queue));
+	p_mpfcb->fblkcnt = p_mpfcb->p_mpfinib->blkcnt;
+	p_mpfcb->unused = 0U;
+	p_mpfcb->freelist = INDEX_NULL;
+	if (dspreq) {
+		dispatch();
+	}
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_INI_MPF_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ini_mpf */
+
+/*
+ *  Åè·v[ÌóÔQÆ
+ */
+#ifdef TOPPERS_ref_mpf
+
+ER
+ref_mpf(ID mpfid, T_RMPF *pk_rmpf)
+{
+	MPFCB	*p_mpfcb;
+	ER		ercd;
+    
+	LOG_REF_MPF_ENTER(mpfid, pk_rmpf);
+	CHECK_TSKCTX_UNL();
+	CHECK_MPFID(mpfid);
+	p_mpfcb = get_mpfcb(mpfid);
+
+	t_lock_cpu();
+	pk_rmpf->wtskid = wait_tskid(&(p_mpfcb->wait_queue));
+	pk_rmpf->fblkcnt = p_mpfcb->fblkcnt;
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_REF_MPF_LEAVE(ercd, pk_rmpf);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ref_mpf */
Index: /asp_ewarm/asp-1.7.0/kernel/mempfix.h
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/mempfix.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/mempfix.h	(revision 61)
@@ -0,0 +1,142 @@
+/*
+ *  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,2006 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: mempfix.h 264 2007-07-12 08:23:10Z hiro $
+ */
+
+/*
+ *		Åè·v[@\
+ */
+
+#ifndef TOPPERS_MEMPFIX_H
+#define TOPPERS_MEMPFIX_H
+
+#include <queue.h>
+
+/*
+ *  Åè·ubNÇubN
+ *
+ *  nexttB[hÉÍCubNªÄÏÝÌêÍINDEX_ALLOCðC
+ *  ¢ÄÌêÍÌ¢ÄubNÌCfbNXÔði[·éD
+ *  ÅãÌ¢ÄubNÌêÉÍCINDEX_NULLði[·éD
+ */
+typedef struct fixed_memoryblock_management_block {
+	uint_t		next;			/* Ì¢ÄubN */
+} MPFMB;
+
+/*
+ *  Åè·v[ú»ubN
+ *
+ *  ±Ì\¢ÌÍC¯úEÊMIuWFNgÌú»ubNÌ¤Êª
+ *  iWOBJINIBjðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅC
+ *  ÅÌtB[hª¤ÊÉÈÁÄ¢éD
+ */
+typedef struct fixed_memorypool_initialization_block {
+	ATR			mpfatr;			/* Åè·v[®« */
+	uint_t		blkcnt;			/* ubN */
+	uint_t		blksz;			/* ubNÌTCYiÛß½lj */
+	void		*mpf;			/* Åè·v[ÌæÌæªÔn */
+	MPFMB		*p_mpfmb;		/* Åè·v[ÇÌæÌæªÔn */
+} MPFINIB;
+
+/*
+ *  Åè·v[ÇubN
+ *
+ *  ±Ì\¢ÌÍC¯úEÊMIuWFNgÌÇubNÌ¤ÊªiWOBJCBj
+ *  ðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅCÅÌ2ÂÌ
+ *  tB[hª¤ÊÉÈÁÄ¢éD
+ */
+typedef struct fixed_memorypool_control_block {
+	QUEUE		wait_queue;		/* Åè·v[Ò¿L
+[ */
+	const MPFINIB *p_mpfinib;	/* ú»ubNÖÌ|C^ */
+	uint_t		fblkcnt;		/* ¢ÄubN */
+	uint_t		unused;			/* ¢gpubNÌæª */
+	uint_t		freelist;		/* ¢ÄubNÌXg */
+} MPFCB;
+
+/*
+ *  Åè·v[Ò¿îñubNÌè`
+ *
+ *  ±Ì\¢ÌÍC¯úEÊMIuWFNgÌÒ¿îñubNÌ¤Êª
+ *  iWINFO_WOBJjðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅC
+ *  ÅÌ2ÂÌtB[hª¤ÊÉÈÁÄ¢éD
+ */
+typedef struct fixed_memorypool_waiting_information {
+	WINFO		winfo;			/* WÌÒ¿îñubN */
+	MPFCB		*p_mpfcb;		/* ÒÁÄ¢éÅè·v[ÌÇubN*/
+	void		*blk;			/* l¾µ½ubN */
+} WINFO_MPF;
+
+/*
+ *  Åè·v[IDÌÅålikernel_cfg.cj
+ */
+extern const ID	tmax_mpfid;
+
+/*
+ *  Åè·v[ú»ubNÌGAikernel_cfg.cj
+ */
+extern const MPFINIB	mpfinib_table[];
+
+/*
+ *  Åè·v[ÇubNÌGAikernel_cfg.cj
+ */
+extern MPFCB	mpfcb_table[];
+
+/*
+ *  Åè·v[ÇubN©çÅè·v[IDðæèo·½
+ *  ßÌ}N
+ */
+#define	MPFID(p_mpfcb)	((ID)(((p_mpfcb) - mpfcb_table) + TMIN_MPFID))
+
+/*
+ *  Åè·v[@\Ìú»
+ */
+extern void	initialize_mempfix(void);
+
+/*
+ *  Åè·v[©çubNðl¾
+ */
+extern void	get_mpf_block(MPFCB *p_mpfcb, void **p_blk);
+
+#endif /* TOPPERS_MEMPFIX_H */
Index: /asp_ewarm/asp-1.7.0/kernel/pridataq.c
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/pridataq.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/pridataq.c	(revision 61)
@@ -0,0 +1,684 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: pridataq.c 1774 2010-03-19 12:45:46Z ertl-hiro $
+ */
+
+/*
+ *		Dæxf[^L
+[@\
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+#include "pridataq.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_SND_PDQ_ENTER
+#define LOG_SND_PDQ_ENTER(pdqid, data, datapri)
+#endif /* LOG_SND_PDQ_ENTER */
+
+#ifndef LOG_SND_PDQ_LEAVE
+#define LOG_SND_PDQ_LEAVE(ercd)
+#endif /* LOG_SND_PDQ_LEAVE */
+
+#ifndef LOG_PSND_PDQ_ENTER
+#define LOG_PSND_PDQ_ENTER(pdqid, data, datapri)
+#endif /* LOG_PSND_PDQ_ENTER */
+
+#ifndef LOG_PSND_PDQ_LEAVE
+#define LOG_PSND_PDQ_LEAVE(ercd)
+#endif /* LOG_PSND_PDQ_LEAVE */
+
+#ifndef LOG_IPSND_PDQ_ENTER
+#define LOG_IPSND_PDQ_ENTER(pdqid, data, datapri)
+#endif /* LOG_IPSND_PDQ_ENTER */
+
+#ifndef LOG_IPSND_PDQ_LEAVE
+#define LOG_IPSND_PDQ_LEAVE(ercd)
+#endif /* LOG_IPSND_PDQ_LEAVE */
+
+#ifndef LOG_TSND_PDQ_ENTER
+#define LOG_TSND_PDQ_ENTER(pdqid, data, datapri, tmout)
+#endif /* LOG_TSND_PDQ_ENTER */
+
+#ifndef LOG_TSND_PDQ_LEAVE
+#define LOG_TSND_PDQ_LEAVE(ercd)
+#endif /* LOG_TSND_PDQ_LEAVE */
+
+#ifndef LOG_RCV_PDQ_ENTER
+#define LOG_RCV_PDQ_ENTER(pdqid, p_data, p_datapri)
+#endif /* LOG_RCV_PDQ_ENTER */
+
+#ifndef LOG_RCV_PDQ_LEAVE
+#define LOG_RCV_PDQ_LEAVE(ercd, data, datapri)
+#endif /* LOG_RCV_PDQ_LEAVE */
+
+#ifndef LOG_PRCV_PDQ_ENTER
+#define LOG_PRCV_PDQ_ENTER(pdqid, p_data, p_datapri)
+#endif /* LOG_PRCV_PDQ_ENTER */
+
+#ifndef LOG_PRCV_PDQ_LEAVE
+#define LOG_PRCV_PDQ_LEAVE(ercd, data, datapri)
+#endif /* LOG_PRCV_PDQ_LEAVE */
+
+#ifndef LOG_TRCV_PDQ_ENTER
+#define LOG_TRCV_PDQ_ENTER(pdqid, p_data, p_datapri, tmout)
+#endif /* LOG_TRCV_PDQ_ENTER */
+
+#ifndef LOG_TRCV_PDQ_LEAVE
+#define LOG_TRCV_PDQ_LEAVE(ercd, data, datapri)
+#endif /* LOG_TRCV_PDQ_LEAVE */
+
+#ifndef LOG_INI_PDQ_ENTER
+#define LOG_INI_PDQ_ENTER(pdqid)
+#endif /* LOG_INI_PDQ_ENTER */
+
+#ifndef LOG_INI_PDQ_LEAVE
+#define LOG_INI_PDQ_LEAVE(ercd)
+#endif /* LOG_INI_PDQ_LEAVE */
+
+#ifndef LOG_REF_PDQ_ENTER
+#define LOG_REF_PDQ_ENTER(pdqid, pk_rpdq)
+#endif /* LOG_REF_PDQ_ENTER */
+
+#ifndef LOG_REF_PDQ_LEAVE
+#define LOG_REF_PDQ_LEAVE(ercd, pk_rpdq)
+#endif /* LOG_REF_PDQ_LEAVE */
+
+/*
+ *  Dæxf[^L
+[Ì
+ */
+#define tnum_pdq	((uint_t)(tmax_pdqid - TMIN_PDQID + 1))
+
+/*
+ *  Dæxf[^L
+[ID©çDæxf[^L
+[ÇubNðæèo·½
+ *  ßÌ}N
+ */
+#define INDEX_PDQ(pdqid)	((uint_t)((pdqid) - TMIN_PDQID))
+#define get_pdqcb(pdqid)	(&(pdqcb_table[INDEX_PDQ(pdqid)]))
+
+/*
+ *  Dæxf[^L
+[@\Ìú»
+ */
+#ifdef TOPPERS_pdqini
+
+void
+initialize_pridataq(void)
+{
+	uint_t	i;
+	PDQCB	*p_pdqcb;
+
+	for (p_pdqcb = pdqcb_table, i = 0; i < tnum_pdq; p_pdqcb++, i++) {
+		queue_initialize(&(p_pdqcb->swait_queue));
+		p_pdqcb->p_pdqinib = &(pdqinib_table[i]);
+		queue_initialize(&(p_pdqcb->rwait_queue));
+		p_pdqcb->count = 0U;
+		p_pdqcb->p_head = NULL;
+		p_pdqcb->unused = 0U;
+		p_pdqcb->p_freelist = NULL;
+	}
+}
+
+#endif /* TOPPERS_pdqini */
+
+/*
+ *  Dæxf[^L
+[ÇÌæÖÌf[^Ìi[
+ */
+#ifdef TOPPERS_pdqenq
+
+void
+enqueue_pridata(PDQCB *p_pdqcb, intptr_t data, PRI datapri)
+{
+	PDQMB	*p_pdqmb;
+	PDQMB	**pp_prev_next, *p_next;
+
+	if (p_pdqcb->p_freelist != NULL) {
+		p_pdqmb = p_pdqcb->p_freelist;
+		p_pdqcb->p_freelist = p_pdqmb->p_next;
+	}
+	else {
+		p_pdqmb = p_pdqcb->p_pdqinib->p_pdqmb + p_pdqcb->unused;
+		p_pdqcb->unused++;
+	}
+
+	p_pdqmb->data = data;
+	p_pdqmb->datapri = datapri;
+
+	pp_prev_next = &(p_pdqcb->p_head);
+	while ((p_next = *pp_prev_next) != NULL) {
+		if (p_next->datapri > datapri) {
+			break;
+		}
+		pp_prev_next = &(p_next->p_next);
+	}
+	p_pdqmb->p_next = p_next;
+	*pp_prev_next = p_pdqmb;
+	p_pdqcb->count++;
+}
+
+#endif /* TOPPERS_pdqenq */
+
+/*
+ *  Dæxf[^L
+[ÇÌæ©çÌf[^Ìæoµ
+ */
+#ifdef TOPPERS_pdqdeq
+
+void
+dequeue_pridata(PDQCB *p_pdqcb, intptr_t *p_data, PRI *p_datapri)
+{
+	PDQMB	*p_pdqmb;
+
+	p_pdqmb = p_pdqcb->p_head;
+	p_pdqcb->p_head = p_pdqmb->p_next;
+	p_pdqcb->count--;
+
+	*p_data = p_pdqmb->data;
+	*p_datapri = p_pdqmb->datapri;
+
+	p_pdqmb->p_next = p_pdqcb->p_freelist;
+	p_pdqcb->p_freelist = p_pdqmb;
+}
+
+#endif /* TOPPERS_pdqdeq */
+
+/*
+ *  Dæxf[^L
+[ÖÌf[^M
+ */
+#ifdef TOPPERS_pdqsnd
+
+bool_t
+send_pridata(PDQCB *p_pdqcb, intptr_t data, PRI datapri, bool_t *p_reqdsp)
+{
+	TCB		*p_tcb;
+
+	if (!queue_empty(&(p_pdqcb->rwait_queue))) {
+		p_tcb = (TCB *) queue_delete_next(&(p_pdqcb->rwait_queue));
+		((WINFO_PDQ *)(p_tcb->p_winfo))->data = data;
+		((WINFO_PDQ *)(p_tcb->p_winfo))->datapri = datapri;
+		*p_reqdsp = wait_complete(p_tcb);
+		return(true);
+	}
+	else if (p_pdqcb->count < p_pdqcb->p_pdqinib->pdqcnt) {
+		enqueue_pridata(p_pdqcb, data, datapri);
+		*p_reqdsp = false;
+		return(true);
+	}
+	else {
+		return(false);
+	}
+}
+
+#endif /* TOPPERS_pdqsnd */
+
+/*
+ *  Dæxf[^L
+[©çÌf[^óM
+ */
+#ifdef TOPPERS_pdqrcv
+
+bool_t
+receive_pridata(PDQCB *p_pdqcb, intptr_t *p_data,
+									PRI *p_datapri, bool_t *p_reqdsp)
+{
+	TCB		*p_tcb;
+	intptr_t data;
+	PRI		datapri;
+
+	if (p_pdqcb->count > 0U) {
+		dequeue_pridata(p_pdqcb, p_data, p_datapri);
+		if (!queue_empty(&(p_pdqcb->swait_queue))) {
+			p_tcb = (TCB *) queue_delete_next(&(p_pdqcb->swait_queue));
+			data = ((WINFO_PDQ *)(p_tcb->p_winfo))->data;
+			datapri = ((WINFO_PDQ *)(p_tcb->p_winfo))->datapri;
+			enqueue_pridata(p_pdqcb, data, datapri);
+			*p_reqdsp = wait_complete(p_tcb);
+		}
+		else {
+			*p_reqdsp = false;
+		}
+		return(true);
+	}
+	else if (!queue_empty(&(p_pdqcb->swait_queue))) {
+		p_tcb = (TCB *) queue_delete_next(&(p_pdqcb->swait_queue));
+		*p_data = ((WINFO_PDQ *)(p_tcb->p_winfo))->data;
+		*p_datapri = ((WINFO_PDQ *)(p_tcb->p_winfo))->datapri;
+		*p_reqdsp = wait_complete(p_tcb);
+		return(true);
+	}
+	else {
+		return(false);
+	}
+}
+
+#endif /* TOPPERS_pdqrcv */
+
+/*
+ *  Dæxf[^L
+[ÖÌM
+ */
+#ifdef TOPPERS_snd_pdq
+
+ER
+snd_pdq(ID pdqid, intptr_t data, PRI datapri)
+{
+	PDQCB	*p_pdqcb;
+	WINFO_PDQ winfo_pdq;
+	bool_t	reqdsp;
+	ER		ercd;
+
+	LOG_SND_PDQ_ENTER(pdqid, data, datapri);
+	CHECK_DISPATCH();
+	CHECK_PDQID(pdqid);
+	p_pdqcb = get_pdqcb(pdqid);
+	CHECK_PAR(TMIN_DPRI <= datapri && datapri <= p_pdqcb->p_pdqinib->maxdpri);
+
+	t_lock_cpu();
+	if (send_pridata(p_pdqcb, data, datapri, &reqdsp)) {
+		if (reqdsp) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else {
+		winfo_pdq.data = data;
+		winfo_pdq.datapri = datapri;
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_SPDQ);
+		wobj_make_wait((WOBJCB *) p_pdqcb, (WINFO_WOBJ *) &winfo_pdq);
+		dispatch();
+		ercd = winfo_pdq.winfo.wercd;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_SND_PDQ_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_snd_pdq */
+
+/*
+ *  Dæxf[^L
+[ÖÌMi|[Oj
+ */
+#ifdef TOPPERS_psnd_pdq
+
+ER
+psnd_pdq(ID pdqid, intptr_t data, PRI datapri)
+{
+	PDQCB	*p_pdqcb;
+	bool_t	reqdsp;
+	ER		ercd;
+
+	LOG_PSND_PDQ_ENTER(pdqid, data, datapri);
+	CHECK_TSKCTX_UNL();
+	CHECK_PDQID(pdqid);
+	p_pdqcb = get_pdqcb(pdqid);
+	CHECK_PAR(TMIN_DPRI <= datapri && datapri <= p_pdqcb->p_pdqinib->maxdpri);
+
+	t_lock_cpu();
+	if (send_pridata(p_pdqcb, data, datapri, &reqdsp)) {
+		if (reqdsp) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_TMOUT;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_PSND_PDQ_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_psnd_pdq */
+
+/*
+ *  Dæxf[^L
+[ÖÌMi|[OCñ^XNReLXgpj
+ */
+#ifdef TOPPERS_ipsnd_pdq
+
+ER
+ipsnd_pdq(ID pdqid, intptr_t data, PRI datapri)
+{
+	PDQCB	*p_pdqcb;
+	bool_t	reqdsp;
+	ER		ercd;
+
+	LOG_IPSND_PDQ_ENTER(pdqid, data, datapri);
+	CHECK_INTCTX_UNL();
+	CHECK_PDQID(pdqid);
+	p_pdqcb = get_pdqcb(pdqid);
+	CHECK_PAR(TMIN_DPRI <= datapri && datapri <= p_pdqcb->p_pdqinib->maxdpri);
+
+	i_lock_cpu();
+	if (send_pridata(p_pdqcb, data, datapri, &reqdsp)) {
+		if (reqdsp) {
+			reqflg = true;
+		}
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_TMOUT;
+	}
+	i_unlock_cpu();
+
+  error_exit:
+	LOG_IPSND_PDQ_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ipsnd_pdq */
+
+/*
+ *  Dæxf[^L
+[ÖÌMi^CAEg èj
+ */
+#ifdef TOPPERS_tsnd_pdq
+
+ER
+tsnd_pdq(ID pdqid, intptr_t data, PRI datapri, TMO tmout)
+{
+	PDQCB	*p_pdqcb;
+	WINFO_PDQ winfo_pdq;
+	TMEVTB	tmevtb;
+	bool_t	reqdsp;
+	ER		ercd;
+
+	LOG_TSND_PDQ_ENTER(pdqid, data, datapri, tmout);
+	CHECK_DISPATCH();
+	CHECK_PDQID(pdqid);
+	CHECK_TMOUT(tmout);
+	p_pdqcb = get_pdqcb(pdqid);
+	CHECK_PAR(TMIN_DPRI <= datapri && datapri <= p_pdqcb->p_pdqinib->maxdpri);
+
+	t_lock_cpu();
+	if (send_pridata(p_pdqcb, data, datapri, &reqdsp)) {
+		if (reqdsp) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else if (tmout == TMO_POL) {
+		ercd = E_TMOUT;
+	}
+	else {
+		winfo_pdq.data = data;
+		winfo_pdq.datapri = datapri;
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_SPDQ);
+		wobj_make_wait_tmout((WOBJCB *) p_pdqcb, (WINFO_WOBJ *) &winfo_pdq,
+														&tmevtb, tmout);
+		dispatch();
+		ercd = winfo_pdq.winfo.wercd;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_TSND_PDQ_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_tsnd_pdq */
+
+/*
+ *  Dæxf[^L
+[©çÌóM
+ */
+#ifdef TOPPERS_rcv_pdq
+
+ER
+rcv_pdq(ID pdqid, intptr_t *p_data, PRI *p_datapri)
+{
+	PDQCB	*p_pdqcb;
+	WINFO_PDQ winfo_pdq;
+	bool_t	reqdsp;
+	ER		ercd;
+
+	LOG_RCV_PDQ_ENTER(pdqid, p_data, p_datapri);
+	CHECK_DISPATCH();
+	CHECK_PDQID(pdqid);
+	p_pdqcb = get_pdqcb(pdqid);
+
+	t_lock_cpu();
+	if (receive_pridata(p_pdqcb, p_data, p_datapri, &reqdsp)) {
+		if (reqdsp) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else {
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_RPDQ);
+		make_wait(&(winfo_pdq.winfo));
+		queue_insert_prev(&(p_pdqcb->rwait_queue), &(p_runtsk->task_queue));
+		winfo_pdq.p_pdqcb = p_pdqcb;
+		LOG_TSKSTAT(p_runtsk);
+		dispatch();
+		ercd = winfo_pdq.winfo.wercd;
+		if (ercd == E_OK) {
+			*p_data = winfo_pdq.data;
+			*p_datapri = winfo_pdq.datapri;
+		}
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_RCV_PDQ_LEAVE(ercd, *p_data, *p_datapri);
+	return(ercd);
+}
+
+#endif /* TOPPERS_rcv_pdq */
+
+/*
+ *  Dæxf[^L
+[©çÌóMi|[Oj
+ */
+#ifdef TOPPERS_prcv_pdq
+
+ER
+prcv_pdq(ID pdqid, intptr_t *p_data, PRI *p_datapri)
+{
+	PDQCB	*p_pdqcb;
+	bool_t	reqdsp;
+	ER		ercd;
+
+	LOG_PRCV_PDQ_ENTER(pdqid, p_data, p_datapri);
+	CHECK_TSKCTX_UNL();
+	CHECK_PDQID(pdqid);
+	p_pdqcb = get_pdqcb(pdqid);
+
+	t_lock_cpu();
+	if (receive_pridata(p_pdqcb, p_data, p_datapri, &reqdsp)) {
+		if (reqdsp) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_TMOUT;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_PRCV_PDQ_LEAVE(ercd, *p_data, *p_datapri);
+	return(ercd);
+}
+
+#endif /* TOPPERS_prcv_pdq */
+
+/*
+ *  Dæxf[^L
+[©çÌóMi^CAEg èj
+ */
+#ifdef TOPPERS_trcv_pdq
+
+ER
+trcv_pdq(ID pdqid, intptr_t *p_data, PRI *p_datapri, TMO tmout)
+{
+	PDQCB	*p_pdqcb;
+	WINFO_PDQ winfo_pdq;
+	TMEVTB	tmevtb;
+	bool_t	reqdsp;
+	ER		ercd;
+
+	LOG_TRCV_PDQ_ENTER(pdqid, p_data, p_datapri, tmout);
+	CHECK_DISPATCH();
+	CHECK_PDQID(pdqid);
+	CHECK_TMOUT(tmout);
+	p_pdqcb = get_pdqcb(pdqid);
+
+	t_lock_cpu();
+	if (receive_pridata(p_pdqcb, p_data, p_datapri, &reqdsp)) {
+		if (reqdsp) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else if (tmout == TMO_POL) {
+		ercd = E_TMOUT;
+	}
+	else {
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_RPDQ);
+		make_wait_tmout(&(winfo_pdq.winfo), &tmevtb, tmout);
+		queue_insert_prev(&(p_pdqcb->rwait_queue), &(p_runtsk->task_queue));
+		winfo_pdq.p_pdqcb = p_pdqcb;
+		LOG_TSKSTAT(p_runtsk);
+		dispatch();
+		ercd = winfo_pdq.winfo.wercd;
+		if (ercd == E_OK) {
+			*p_data = winfo_pdq.data;
+			*p_datapri = winfo_pdq.datapri;
+		}
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_TRCV_PDQ_LEAVE(ercd, *p_data, *p_datapri);
+	return(ercd);
+}
+
+#endif /* TOPPERS_trcv_pdq */
+
+/*
+ *  Dæxf[^L
+[ÌÄú»
+ */
+#ifdef TOPPERS_ini_pdq
+
+ER
+ini_pdq(ID pdqid)
+{
+	PDQCB	*p_pdqcb;
+	bool_t	dspreq;
+	ER		ercd;
+    
+	LOG_INI_PDQ_ENTER(pdqid);
+	CHECK_TSKCTX_UNL();
+	CHECK_PDQID(pdqid);
+	p_pdqcb = get_pdqcb(pdqid);
+
+	t_lock_cpu();
+	dspreq = init_wait_queue(&(p_pdqcb->swait_queue));
+	if (init_wait_queue(&(p_pdqcb->rwait_queue))) {
+		dspreq = true;
+	}
+	p_pdqcb->count = 0U;
+	p_pdqcb->p_head = NULL;
+	p_pdqcb->unused = 0U;
+	p_pdqcb->p_freelist = NULL;
+	if (dspreq) {
+		dispatch();
+	}
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_INI_PDQ_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ini_pdq */
+
+/*
+ *  Dæxf[^L
+[ÌóÔQÆ
+ */
+#ifdef TOPPERS_ref_pdq
+
+ER
+ref_pdq(ID pdqid, T_RPDQ *pk_rpdq)
+{
+	PDQCB	*p_pdqcb;
+	ER		ercd;
+    
+	LOG_REF_PDQ_ENTER(pdqid, pk_rpdq);
+	CHECK_TSKCTX_UNL();
+	CHECK_PDQID(pdqid);
+	p_pdqcb = get_pdqcb(pdqid);
+
+	t_lock_cpu();
+	pk_rpdq->stskid = wait_tskid(&(p_pdqcb->swait_queue));
+	pk_rpdq->rtskid = wait_tskid(&(p_pdqcb->rwait_queue));
+	pk_rpdq->spdqcnt = p_pdqcb->count;
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_REF_PDQ_LEAVE(ercd, pk_rpdq);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ref_pdq */
Index: /asp_ewarm/asp-1.7.0/kernel/pridataq.h
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/pridataq.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/pridataq.h	(revision 61)
@@ -0,0 +1,187 @@
+/*
+ *  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-2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: pridataq.h 748 2008-03-07 17:18:06Z hiro $
+ */
+
+/*
+ *		Dæxf[^L
+[@\
+ */
+
+#ifndef TOPPERS_PRIDATAQ_H
+#define TOPPERS_PRIDATAQ_H
+
+#include <queue.h>
+
+/*
+ *  Dæxf[^ÇubN
+ */
+typedef struct pridata_management_block PDQMB;
+
+struct pridata_management_block {
+	PDQMB		*p_next;		/* Ìf[^ */
+	intptr_t	data;			/* f[^{Ì */
+	PRI			datapri;		/* f[^Dæx */
+};
+
+/*
+ *  Dæxf[^L
+[ú»ubN
+ *
+ *  ±Ì\¢ÌÍC¯úEÊMIuWFNgÌú»ubNÌ¤Êª
+ *  iWOBJINIBjðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅC
+ *  ÅÌtB[hª¤ÊÉÈÁÄ¢éD
+ */
+typedef struct pridataq_initialization_block {
+	ATR			pdqatr;			/* Dæxf[^L
+[®« */
+	uint_t		pdqcnt;			/* Dæxf[^L
+[ÌeÊ */
+	PRI			maxdpri;		/* f[^DæxÌÅål */
+	PDQMB		*p_pdqmb;		/* Dæxf[^L
+[ÇÌæÌæªÔn */
+} PDQINIB;
+
+/*
+ *  Dæxf[^L
+[ÇubN
+ *
+ *  ±Ì\¢ÌÍC¯úEÊMIuWFNgÌÇubNÌ¤ÊªiWOBJCBj
+ *  ðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅCÅÌ2ÂÌ
+ *  tB[hª¤ÊÉÈÁÄ¢éD
+ */
+typedef struct pridataq_control_block {
+	QUEUE		swait_queue;	/* Dæxf[^L
+[MÒ¿L
+[ */
+	const PDQINIB *p_pdqinib;	/* ú»ubNÖÌ|C^ */
+	QUEUE		rwait_queue;	/* Dæxf[^L
+[óMÒ¿L
+[ */
+	uint_t		count;			/* Dæxf[^L
+[Ìf[^Ì */
+	PDQMB		*p_head;		/* ÅÌf[^ */
+	uint_t		unused;			/* ¢gpf[^ÇubNÌæª */
+	PDQMB		*p_freelist;	/* ¢Äf[^ÇubNÌXg */
+} PDQCB;
+
+/*
+ *  Dæxf[^L
+[Ò¿îñubNÌè`
+ *
+ *  ±Ì\¢ÌÍC¯úEÊMIuWFNgÌÒ¿îñubNÌ¤Êª
+ *  iWINFO_WOBJjðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅC
+ *  ÅÌ2ÂÌtB[hª¤ÊÉÈÁÄ¢éD
+ *  Dæxf[^L
+[ÖÌMÒ¿ÆDæxf[^L
+[©çÌóMÒ¿ÅC
+ *  ¯¶Ò¿îñubNðg¤D
+ */
+typedef struct pridataq_waiting_information {
+	WINFO		winfo;			/* WÌÒ¿îñubN */
+	PDQCB		*p_pdqcb;		/* ÒÁÄ¢éDæxf[^L
+[ÌÇubN*/
+	intptr_t	data;			/* óMf[^ */
+	PRI			datapri;		/* f[^Dæx */
+} WINFO_PDQ;
+
+/*
+ *  Dæxf[^L
+[IDÌÅålikernel_cfg.cj
+ */
+extern const ID	tmax_pdqid;
+
+/*
+ *  Dæxf[^L
+[ú»ubNÌGAikernel_cfg.cj
+ */
+extern const PDQINIB	pdqinib_table[];
+
+/*
+ *  Dæxf[^L
+[ÇubNÌGAikernel_cfg.cj
+ */
+extern PDQCB	pdqcb_table[];
+
+/*
+ *  Dæxf[^L
+[ÇubN©çDæxf[^L
+[IDðæèo·½
+ *  ßÌ}N
+ */
+#define	PDQID(p_pdqcb)	((ID)(((p_pdqcb) - pdqcb_table) + TMIN_PDQID))
+
+/*
+ *  Dæxf[^L
+[@\Ìú»
+ */
+extern void	initialize_pridataq(void);
+
+/*
+ *  Dæxf[^L
+[ÇÌæÖÌf[^Ìi[
+ */
+extern void	enqueue_pridata(PDQCB *p_pdqcb, intptr_t data, PRI datapri);
+
+/*
+ *  Dæxf[^L
+[ÇÌæ©çÌf[^Ìæoµ
+ */
+extern void	dequeue_pridata(PDQCB *p_pdqcb, intptr_t *p_data, PRI *p_datapri);
+
+/*
+ *  Dæxf[^L
+[ÖÌf[^M
+ */
+extern bool_t	send_pridata(PDQCB *p_pdqcb, intptr_t data,
+											PRI datapri, bool_t *p_reqdsp);
+
+/*
+ *  Dæxf[^L
+[©çÌf[^óM
+ */
+extern bool_t	receive_pridata(PDQCB *p_pdqcb, intptr_t *p_data,
+											PRI *p_datapri, bool_t *p_reqdsp);
+
+#endif /* TOPPERS_PRIDATAQ_H */
Index: /asp_ewarm/asp-1.7.0/kernel/semaphore.c
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/semaphore.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/semaphore.c	(revision 61)
@@ -0,0 +1,402 @@
+/*
+ *  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-2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: semaphore.c 748 2008-03-07 17:18:06Z hiro $
+ */
+
+/*
+ *		Z}tH@\
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+#include "semaphore.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_SIG_SEM_ENTER
+#define LOG_SIG_SEM_ENTER(semid)
+#endif /* LOG_SIG_SEM_ENTER */
+
+#ifndef LOG_SIG_SEM_LEAVE
+#define LOG_SIG_SEM_LEAVE(ercd)
+#endif /* LOG_SIG_SEM_LEAVE */
+
+#ifndef LOG_ISIG_SEM_ENTER
+#define LOG_ISIG_SEM_ENTER(semid)
+#endif /* LOG_ISIG_SEM_ENTER */
+
+#ifndef LOG_ISIG_SEM_LEAVE
+#define LOG_ISIG_SEM_LEAVE(ercd)
+#endif /* LOG_ISIG_SEM_LEAVE */
+
+#ifndef LOG_WAI_SEM_ENTER
+#define LOG_WAI_SEM_ENTER(semid)
+#endif /* LOG_WAI_SEM_ENTER */
+
+#ifndef LOG_WAI_SEM_LEAVE
+#define LOG_WAI_SEM_LEAVE(ercd)
+#endif /* LOG_WAI_SEM_LEAVE */
+
+#ifndef LOG_POL_SEM_ENTER
+#define LOG_POL_SEM_ENTER(semid)
+#endif /* LOG_POL_SEM_ENTER */
+
+#ifndef LOG_POL_SEM_LEAVE
+#define LOG_POL_SEM_LEAVE(ercd)
+#endif /* LOG_POL_SEM_LEAVE */
+
+#ifndef LOG_TWAI_SEM_ENTER
+#define LOG_TWAI_SEM_ENTER(semid, tmout)
+#endif /* LOG_TWAI_SEM_ENTER */
+
+#ifndef LOG_TWAI_SEM_LEAVE
+#define LOG_TWAI_SEM_LEAVE(ercd)
+#endif /* LOG_TWAI_SEM_LEAVE */
+
+#ifndef LOG_INI_SEM_ENTER
+#define LOG_INI_SEM_ENTER(semid)
+#endif /* LOG_INI_SEM_ENTER */
+
+#ifndef LOG_INI_SEM_LEAVE
+#define LOG_INI_SEM_LEAVE(ercd)
+#endif /* LOG_INI_SEM_LEAVE */
+
+#ifndef LOG_REF_SEM_ENTER
+#define LOG_REF_SEM_ENTER(semid, pk_rsem)
+#endif /* LOG_REF_SEM_ENTER */
+
+#ifndef LOG_REF_SEM_LEAVE
+#define LOG_REF_SEM_LEAVE(ercd, pk_rsem)
+#endif /* LOG_REF_SEM_LEAVE */
+
+/*
+ *  Z}tHÌ
+ */
+#define tnum_sem	((uint_t)(tmax_semid - TMIN_SEMID + 1))
+
+/*
+ *  Z}tHID©çZ}tHÇubNðæèo·½ßÌ}N
+ */
+#define INDEX_SEM(semid)	((uint_t)((semid) - TMIN_SEMID))
+#define get_semcb(semid)	(&(semcb_table[INDEX_SEM(semid)]))
+
+/* 
+ *  Z}tH@\Ìú»
+ */
+#ifdef TOPPERS_semini
+
+void
+initialize_semaphore(void)
+{
+	uint_t	i;
+	SEMCB	*p_semcb;
+
+	for (p_semcb = semcb_table, i = 0; i < tnum_sem; p_semcb++, i++) {
+		queue_initialize(&(p_semcb->wait_queue));
+		p_semcb->p_seminib = &(seminib_table[i]);
+		p_semcb->semcnt = p_semcb->p_seminib->isemcnt;
+	}
+}
+
+#endif /* TOPPERS_semini */
+
+/*
+ *  Z}tH¹ÌÔp
+ */
+#ifdef TOPPERS_sig_sem
+
+ER
+sig_sem(ID semid)
+{
+	SEMCB	*p_semcb;
+	TCB		*p_tcb;
+	ER		ercd;
+    
+	LOG_SIG_SEM_ENTER(semid);
+	CHECK_TSKCTX_UNL();
+	CHECK_SEMID(semid);
+	p_semcb = get_semcb(semid);
+
+	t_lock_cpu();
+	if (!queue_empty(&(p_semcb->wait_queue))) {
+		p_tcb = (TCB *) queue_delete_next(&(p_semcb->wait_queue));
+		if (wait_complete(p_tcb)) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else if (p_semcb->semcnt < p_semcb->p_seminib->maxsem) {
+		p_semcb->semcnt += 1;
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_QOVR;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_SIG_SEM_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_sig_sem */
+
+/*
+ *  Z}tH¹ÌÔpiñ^XNReLXgpj
+ */
+#ifdef TOPPERS_isig_sem
+
+ER
+isig_sem(ID semid)
+{
+	SEMCB	*p_semcb;
+	TCB		*p_tcb;
+	ER		ercd;
+    
+	LOG_ISIG_SEM_ENTER(semid);
+	CHECK_INTCTX_UNL();
+	CHECK_SEMID(semid);
+	p_semcb = get_semcb(semid);
+
+	i_lock_cpu();
+	if (!queue_empty(&(p_semcb->wait_queue))) {
+		p_tcb = (TCB *) queue_delete_next(&(p_semcb->wait_queue));
+		if (wait_complete(p_tcb)) {
+			reqflg = true;
+		}
+		ercd = E_OK;
+	}
+	else if (p_semcb->semcnt < p_semcb->p_seminib->maxsem) {
+		p_semcb->semcnt += 1;
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_QOVR;
+	}
+	i_unlock_cpu();
+
+  error_exit:
+	LOG_ISIG_SEM_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_isig_sem */
+
+/*
+ *  Z}tH¹Ìl¾
+ */
+#ifdef TOPPERS_wai_sem
+
+ER
+wai_sem(ID semid)
+{
+	SEMCB	*p_semcb;
+	WINFO_SEM winfo_sem;
+	ER		ercd;
+
+	LOG_WAI_SEM_ENTER(semid);
+	CHECK_DISPATCH();
+	CHECK_SEMID(semid);
+	p_semcb = get_semcb(semid);
+
+	t_lock_cpu();
+	if (p_semcb->semcnt >= 1) {
+		p_semcb->semcnt -= 1;
+		ercd = E_OK;
+	}
+	else {
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_SEM);
+		wobj_make_wait((WOBJCB *) p_semcb, (WINFO_WOBJ *) &winfo_sem);
+		dispatch();
+		ercd = winfo_sem.winfo.wercd;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_WAI_SEM_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_wai_sem */
+
+/*
+ *  Z}tH¹Ìl¾i|[Oj
+ */
+#ifdef TOPPERS_pol_sem
+
+ER
+pol_sem(ID semid)
+{
+	SEMCB	*p_semcb;
+	ER		ercd;
+
+	LOG_POL_SEM_ENTER(semid);
+	CHECK_TSKCTX_UNL();
+	CHECK_SEMID(semid);
+	p_semcb = get_semcb(semid);
+
+	t_lock_cpu();
+	if (p_semcb->semcnt >= 1) {
+		p_semcb->semcnt -= 1;
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_TMOUT;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_POL_SEM_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_pol_sem */
+
+/*
+ *  Z}tH¹Ìl¾i^CAEg èj
+ */
+#ifdef TOPPERS_twai_sem
+
+ER
+twai_sem(ID semid, TMO tmout)
+{
+	SEMCB	*p_semcb;
+	WINFO_SEM winfo_sem;
+	TMEVTB	tmevtb;
+	ER		ercd;
+
+	LOG_TWAI_SEM_ENTER(semid, tmout);
+	CHECK_DISPATCH();
+	CHECK_SEMID(semid);
+	CHECK_TMOUT(tmout);
+	p_semcb = get_semcb(semid);
+
+	t_lock_cpu();
+	if (p_semcb->semcnt >= 1) {
+		p_semcb->semcnt -= 1;
+		ercd = E_OK;
+	}
+	else if (tmout == TMO_POL) {
+		ercd = E_TMOUT;
+	}
+	else {
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_SEM);
+		wobj_make_wait_tmout((WOBJCB *) p_semcb, (WINFO_WOBJ *) &winfo_sem,
+														&tmevtb, tmout);
+		dispatch();
+		ercd = winfo_sem.winfo.wercd;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_TWAI_SEM_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_twai_sem */
+
+/*
+ *  Z}tHÌÄú»
+ */
+#ifdef TOPPERS_ini_sem
+
+ER
+ini_sem(ID semid)
+{
+	SEMCB	*p_semcb;
+	bool_t	dspreq;
+	ER		ercd;
+    
+	LOG_INI_SEM_ENTER(semid);
+	CHECK_TSKCTX_UNL();
+	CHECK_SEMID(semid);
+	p_semcb = get_semcb(semid);
+
+	t_lock_cpu();
+	dspreq = init_wait_queue(&(p_semcb->wait_queue));
+	p_semcb->semcnt = p_semcb->p_seminib->isemcnt;
+	if (dspreq) {
+		dispatch();
+	}
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_INI_SEM_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ini_sem */
+
+/*
+ *  Z}tHÌóÔQÆ
+ */
+#ifdef TOPPERS_ref_sem
+
+ER
+ref_sem(ID semid, T_RSEM *pk_rsem)
+{
+	SEMCB	*p_semcb;
+	ER		ercd;
+    
+	LOG_REF_SEM_ENTER(semid, pk_rsem);
+	CHECK_TSKCTX_UNL();
+	CHECK_SEMID(semid);
+	p_semcb = get_semcb(semid);
+
+	t_lock_cpu();
+	pk_rsem->wtskid = wait_tskid(&(p_semcb->wait_queue));
+	pk_rsem->semcnt = p_semcb->semcnt;
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_REF_SEM_LEAVE(ercd, pk_rsem);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ref_sem */
Index: /asp_ewarm/asp-1.7.0/kernel/semaphore.h
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/semaphore.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/semaphore.h	(revision 61)
@@ -0,0 +1,120 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2000 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005,2006 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: semaphore.h 264 2007-07-12 08:23:10Z hiro $
+ */
+
+/*
+ *		Z}tH@\
+ */
+
+#ifndef TOPPERS_SEMAPHORE_H
+#define TOPPERS_SEMAPHORE_H
+
+#include <queue.h>
+
+/*
+ *  Z}tHú»ubN
+ *
+ *  ±Ì\¢ÌÍC¯úEÊMIuWFNgÌú»ubNÌ¤Êª
+ *  iWOBJINIBjðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅC
+ *  ÅÌtB[hª¤ÊÉÈÁÄ¢éD
+ */
+typedef struct semaphore_initialization_block {
+	ATR			sematr;			/* Z}tH®« */
+	uint_t		isemcnt;		/* Z}tHÌ¹Ìúl */
+	uint_t		maxsem;			/* Z}tHÌÅå¹ */
+} SEMINIB;
+
+/*
+ *  Z}tHÇubN
+ *
+ *  ±Ì\¢ÌÍC¯úEÊMIuWFNgÌÇubNÌ¤ÊªiWOBJCBj
+ *  ðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅCÅÌ2ÂÌ
+ *  tB[hª¤ÊÉÈÁÄ¢éD
+ */
+typedef struct semaphore_control_block {
+	QUEUE		wait_queue;		/* Z}tHÒ¿L
+[ */
+	const SEMINIB *p_seminib;	/* ú»ubNÖÌ|C^ */
+	uint_t		semcnt;			/* Z}tH»ÝJEgl */
+} SEMCB;
+
+/*
+ *  Z}tHÒ¿îñubNÌè`
+ *
+ *  ±Ì\¢ÌÍC¯úEÊMIuWFNgÌÒ¿îñubNÌ¤Êª
+ *  iWINFO_WOBJjðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅC
+ *  ·×ÄÌtB[hª¤ÊÉÈÁÄ¢éD
+ */
+typedef struct semaphore_waiting_information {
+	WINFO	winfo;			/* WÌÒ¿îñubN */
+	SEMCB	*p_semcb;		/* ÒÁÄ¢éZ}tHÌÇubN */
+} WINFO_SEM;
+
+/*
+ *  Z}tHIDÌÅålikernel_cfg.cj
+ */
+extern const ID	tmax_semid;
+
+/*
+ *  Z}tHú»ubNÌGAikernel_cfg.cj
+ */
+extern const SEMINIB	seminib_table[];
+
+/*
+ *  Z}tHÇubNÌGAikernel_cfg.cj
+ */
+extern SEMCB	semcb_table[];
+
+/*
+ *  Z}tHÇubN©çZ}tHIDðæèo·½ßÌ}N
+ */
+#define	SEMID(p_semcb)	((ID)(((p_semcb) - semcb_table) + TMIN_SEMID))
+
+/*
+ *  Z}tH@\Ìú»
+ */
+extern void	initialize_semaphore(void);
+
+#endif /* TOPPERS_SEMAPHORE_H */
Index: /asp_ewarm/asp-1.7.0/kernel/startup.c
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/startup.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/startup.c	(revision 61)
@@ -0,0 +1,179 @@
+/*
+ *  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-2009 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: startup.c 2067 2011-05-05 00:46:29Z ertl-hiro $
+ */
+
+/*
+ *		J[lÌú»ÆI¹
+ */
+
+#include "kernel_impl.h"
+#include "time_event.h"
+#include <sil.h>
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_KER_ENTER
+#define LOG_KER_ENTER()
+#endif /* LOG_KER_ENTER */
+
+#ifndef LOG_KER_LEAVE
+#define LOG_KER_LEAVE()
+#endif /* LOG_KER_LEAVE */
+
+#ifndef LOG_EXT_KER_ENTER
+#define LOG_EXT_KER_ENTER()
+#endif /* LOG_EXT_KER_ENTER */
+
+#ifndef LOG_EXT_KER_LEAVE
+#define LOG_EXT_KER_LEAVE(ercd)
+#endif /* LOG_EXT_KER_LEAVE */
+
+#ifdef TOPPERS_sta_ker
+
+/*
+ *  J[l®ìóÔtO
+ *
+ *  X^[gAbv[`ÅCfalsei0jÉú»³êé±ÆðúÒµÄ
+ *  ¢éD
+ */
+bool_t	kerflg = false;
+
+/*
+ *  J[lÌN®
+ */
+void
+sta_ker(void)
+{
+	/*
+	 *  ^[QbgË¶Ìú»
+	 */
+	target_initialize();
+
+	/*
+	 *  eW
+[Ìú»
+	 *
+	 *  ^CCxgÇW
+[Í¼ÌW
+[æèæÉú»
+	 *  ·éKvª éD
+	 */
+	initialize_tmevt();
+	initialize_object();
+
+	/*
+	 *  ú»[`ÌÀs
+	 */ 
+	call_inirtn();
+
+	/*
+	 *  J[l®ìÌJn
+	 */
+	kerflg = true;
+	LOG_KER_ENTER();
+	start_dispatch();
+	assert(0);
+}
+
+#endif /* TOPPERS_sta_ker */
+
+/*
+ *  J[lÌI¹
+ */
+#ifdef TOPPERS_ext_ker
+
+ER
+ext_ker(void)
+{
+	SIL_PRE_LOC;
+
+	LOG_EXT_KER_ENTER();
+
+	/*
+	 *  ÝbNóÔÉÚs
+	 */
+	SIL_LOC_INT();
+
+	/*
+	 *  J[l®ìÌI¹
+	 */
+	LOG_KER_LEAVE();
+	kerflg = false;
+
+	/*
+	 *  J[lÌI¹ÌÄoµ
+	 *
+	 *  ñ^XNReLXgÉØè·¦ÄCexit_kernelðÄÑo·D
+	 */
+	call_exit_kernel();
+
+	/*
+	 *  RpCÌxÎôi±±Öé±ÆÍÈ¢Í¸j
+	 */
+	SIL_UNL_INT();
+	LOG_EXT_KER_LEAVE(E_SYS);
+	return(E_SYS);
+}
+
+/*
+ *  J[lÌI¹
+ */
+void
+exit_kernel(void)
+{
+	/*
+	 *  I¹[`ÌÀs
+	 */
+	call_terrtn();
+
+	/*
+	 *  ^[QbgË¶ÌI¹
+	 */
+	target_exit();
+	assert(0);
+}
+
+#endif /* TOPPERS_ext_ker */
Index: /asp_ewarm/asp-1.7.0/kernel/sys_manage.c
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/sys_manage.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/sys_manage.c	(revision 61)
@@ -0,0 +1,539 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: sys_manage.c 2008 2010-12-31 12:41:42Z ertl-hiro $
+ */
+
+/*
+ *		VXeóÔÇ@\
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_ROT_RDQ_ENTER
+#define LOG_ROT_RDQ_ENTER(tskpri)
+#endif /* LOG_ROT_RDQ_ENTER */
+
+#ifndef LOG_ROT_RDQ_LEAVE
+#define LOG_ROT_RDQ_LEAVE(ercd)
+#endif /* LOG_ROT_RDQ_LEAVE */
+
+#ifndef LOG_IROT_RDQ_ENTER
+#define LOG_IROT_RDQ_ENTER(tskpri)
+#endif /* LOG_IROT_RDQ_ENTER */
+
+#ifndef LOG_IROT_RDQ_LEAVE
+#define LOG_IROT_RDQ_LEAVE(ercd)
+#endif /* LOG_IROT_RDQ_LEAVE */
+
+#ifndef LOG_GET_TID_ENTER
+#define LOG_GET_TID_ENTER(p_tskid)
+#endif /* LOG_GET_TID_ENTER */
+
+#ifndef LOG_GET_TID_LEAVE
+#define LOG_GET_TID_LEAVE(ercd, tskid)
+#endif /* LOG_GET_TID_LEAVE */
+
+#ifndef LOG_IGET_TID_ENTER
+#define LOG_IGET_TID_ENTER(p_tskid)
+#endif /* LOG_IGET_TID_ENTER */
+
+#ifndef LOG_IGET_TID_LEAVE
+#define LOG_IGET_TID_LEAVE(ercd, tskid)
+#endif /* LOG_IGET_TID_LEAVE */
+
+#ifndef LOG_LOC_CPU_ENTER
+#define LOG_LOC_CPU_ENTER()
+#endif /* LOG_LOC_CPU_ENTER */
+
+#ifndef LOG_LOC_CPU_LEAVE
+#define LOG_LOC_CPU_LEAVE(ercd)
+#endif /* LOG_LOC_CPU_LEAVE */
+
+#ifndef LOG_ILOC_CPU_ENTER
+#define LOG_ILOC_CPU_ENTER()
+#endif /* LOG_ILOC_CPU_ENTER */
+
+#ifndef LOG_ILOC_CPU_LEAVE
+#define LOG_ILOC_CPU_LEAVE(ercd)
+#endif /* LOG_ILOC_CPU_LEAVE */
+
+#ifndef LOG_UNL_CPU_ENTER
+#define LOG_UNL_CPU_ENTER()
+#endif /* LOG_UNL_CPU_ENTER */
+
+#ifndef LOG_UNL_CPU_LEAVE
+#define LOG_UNL_CPU_LEAVE(ercd)
+#endif /* LOG_UNL_CPU_LEAVE */
+
+#ifndef LOG_IUNL_CPU_ENTER
+#define LOG_IUNL_CPU_ENTER()
+#endif /* LOG_IUNL_CPU_ENTER */
+
+#ifndef LOG_IUNL_CPU_LEAVE
+#define LOG_IUNL_CPU_LEAVE(ercd)
+#endif /* LOG_IUNL_CPU_LEAVE */
+
+#ifndef LOG_DIS_DSP_ENTER
+#define LOG_DIS_DSP_ENTER()
+#endif /* LOG_DIS_DSP_ENTER */
+
+#ifndef LOG_DIS_DSP_LEAVE
+#define LOG_DIS_DSP_LEAVE(ercd)
+#endif /* LOG_DIS_DSP_LEAVE */
+
+#ifndef LOG_ENA_DSP_ENTER
+#define LOG_ENA_DSP_ENTER()
+#endif /* LOG_ENA_DSP_ENTER */
+
+#ifndef LOG_ENA_DSP_LEAVE
+#define LOG_ENA_DSP_LEAVE(ercd)
+#endif /* LOG_ENA_DSP_LEAVE */
+
+#ifndef LOG_SNS_CTX_ENTER
+#define LOG_SNS_CTX_ENTER()
+#endif /* LOG_SNS_CTX_ENTER */
+
+#ifndef LOG_SNS_CTX_LEAVE
+#define LOG_SNS_CTX_LEAVE(state)
+#endif /* LOG_SNS_CTX_LEAVE */
+
+#ifndef LOG_SNS_LOC_ENTER
+#define LOG_SNS_LOC_ENTER()
+#endif /* LOG_SNS_LOC_ENTER */
+
+#ifndef LOG_SNS_LOC_LEAVE
+#define LOG_SNS_LOC_LEAVE(state)
+#endif /* LOG_SNS_LOC_LEAVE */
+
+#ifndef LOG_SNS_DSP_ENTER
+#define LOG_SNS_DSP_ENTER()
+#endif /* LOG_SNS_DSP_ENTER */
+
+#ifndef LOG_SNS_DSP_LEAVE
+#define LOG_SNS_DSP_LEAVE(state)
+#endif /* LOG_SNS_DSP_LEAVE */
+
+#ifndef LOG_SNS_DPN_ENTER
+#define LOG_SNS_DPN_ENTER()
+#endif /* LOG_SNS_DPN_ENTER */
+
+#ifndef LOG_SNS_DPN_LEAVE
+#define LOG_SNS_DPN_LEAVE(state)
+#endif /* LOG_SNS_DPN_LEAVE */
+
+#ifndef LOG_SNS_KER_ENTER
+#define LOG_SNS_KER_ENTER()
+#endif /* LOG_SNS_KER_ENTER */
+
+#ifndef LOG_SNS_KER_LEAVE
+#define LOG_SNS_KER_LEAVE(state)
+#endif /* LOG_SNS_KER_LEAVE */
+
+/*
+ *  ^XNÌDæÊÌñ]
+ */
+#ifdef TOPPERS_rot_rdq
+
+ER
+rot_rdq(PRI tskpri)
+{
+	uint_t	pri;
+	ER		ercd;
+
+	LOG_ROT_RDQ_ENTER(tskpri);
+	CHECK_TSKCTX_UNL();
+	CHECK_TPRI_SELF(tskpri);
+
+	t_lock_cpu();
+	pri = (tskpri == TPRI_SELF) ? p_runtsk->priority : INT_PRIORITY(tskpri);
+	if (rotate_ready_queue(pri)) {
+		dispatch();
+	}
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_ROT_RDQ_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_rot_rdq */
+
+/*
+ *  ^XNÌDæÊÌñ]iñ^XNReLXgpj
+ */
+#ifdef TOPPERS_irot_rdq
+
+ER
+irot_rdq(PRI tskpri)
+{
+	ER		ercd;
+
+	LOG_IROT_RDQ_ENTER(tskpri);
+	CHECK_INTCTX_UNL();
+	CHECK_TPRI(tskpri);
+
+	i_lock_cpu();
+	if (rotate_ready_queue(INT_PRIORITY(tskpri))) {
+		reqflg = true;
+	}
+	ercd = E_OK;
+	i_unlock_cpu();
+
+  error_exit:
+	LOG_IROT_RDQ_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_irot_rdq */
+
+/*
+ *  ÀsóÔÌ^XNIDÌQÆ
+ */
+#ifdef TOPPERS_get_tid
+
+ER
+get_tid(ID *p_tskid)
+{
+	ER		ercd;
+
+	LOG_GET_TID_ENTER(p_tskid);
+	CHECK_TSKCTX_UNL();
+
+	t_lock_cpu();
+	*p_tskid = TSKID(p_runtsk);
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_GET_TID_LEAVE(ercd, *p_tskid);
+	return(ercd);
+}
+
+#endif /* TOPPERS_get_tid */
+
+/*
+ *  ÀsóÔÌ^XNIDÌQÆiñ^XNReLXgpj
+ */
+#ifdef TOPPERS_iget_tid
+
+ER
+iget_tid(ID *p_tskid)
+{
+	ER		ercd;
+
+	LOG_IGET_TID_ENTER(p_tskid);
+	CHECK_INTCTX_UNL();
+
+	i_lock_cpu();
+	*p_tskid = (p_runtsk == NULL) ? TSK_NONE : TSKID(p_runtsk);
+	ercd = E_OK;
+	i_unlock_cpu();
+
+  error_exit:
+	LOG_IGET_TID_LEAVE(ercd, *p_tskid);
+	return(ercd);
+}
+
+#endif /* TOPPERS_iget_tid */
+
+/*
+ *  CPUbNóÔÖÌÚs
+ */
+#ifdef TOPPERS_loc_cpu
+
+ER
+loc_cpu(void)
+{
+	ER		ercd;
+
+	LOG_LOC_CPU_ENTER();
+	CHECK_TSKCTX();
+
+	if (!t_sense_lock()) {
+		t_lock_cpu();
+	}
+	ercd = E_OK;
+
+  error_exit:
+	LOG_LOC_CPU_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_loc_cpu */
+
+/*
+ *  CPUbNóÔÖÌÚsiñ^XNReLXgpj
+ */
+#ifdef TOPPERS_iloc_cpu
+
+ER
+iloc_cpu(void)
+{
+	ER		ercd;
+
+	LOG_ILOC_CPU_ENTER();
+	CHECK_INTCTX();
+
+	if (!i_sense_lock()) {
+		i_lock_cpu();
+	}
+	ercd = E_OK;
+
+  error_exit:
+	LOG_ILOC_CPU_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_iloc_cpu */
+
+/*
+ *  CPUbNóÔÌð
+ *
+ *  CPUbNÍCfBXpb`ªKvÆÈéT[rXR[ðÄÑo·±
+ *  ÆÍÅ«È¢½ßCCPUbNóÔÌðÉfBXpb`ðN®·é
+ *  KvÍÈ¢D
+ */
+#ifdef TOPPERS_unl_cpu
+
+ER
+unl_cpu(void)
+{
+	ER		ercd;
+
+	LOG_UNL_CPU_ENTER();
+	CHECK_TSKCTX();
+
+	if (t_sense_lock()) {
+		t_unlock_cpu();
+	}
+	ercd = E_OK;
+
+  error_exit:
+	LOG_UNL_CPU_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_unl_cpu */
+
+/*
+ *  CPUbNóÔÌðiñ^XNReLXgpj
+ *
+ *  CPUbNÍCfBXpb`ªKvÆÈéT[rXR[ðÄÑo·±
+ *  ÆÍÅ«È¢½ßCCPUbNóÔÌðÉfBXpb`ÌN®ðv
+ *  ·éKvÍÈ¢D
+ */
+#ifdef TOPPERS_iunl_cpu
+
+ER
+iunl_cpu(void)
+{
+	ER		ercd;
+
+	LOG_IUNL_CPU_ENTER();
+	CHECK_INTCTX();
+
+	if (i_sense_lock()) {
+		i_unlock_cpu();
+	}
+	ercd = E_OK;
+
+  error_exit:
+	LOG_IUNL_CPU_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_iunl_cpu */
+
+/*
+ *  fBXpb`ÌÖ~
+ */
+#ifdef TOPPERS_dis_dsp
+
+ER
+dis_dsp(void)
+{
+	ER		ercd;
+
+	LOG_DIS_DSP_ENTER();
+	CHECK_TSKCTX_UNL();
+
+	t_lock_cpu();
+	disdsp = true;
+	dspflg = false;
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_DIS_DSP_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_dis_dsp */
+
+/*
+ *  fBXpb`ÌÂ
+ */
+#ifdef TOPPERS_ena_dsp
+
+ER
+ena_dsp(void)
+{
+	ER		ercd;
+
+	LOG_ENA_DSP_ENTER();
+	CHECK_TSKCTX_UNL();
+
+	t_lock_cpu();
+	disdsp = false;
+	if (ipmflg) {
+		dspflg = true;
+		if (p_runtsk != p_schedtsk) {
+			dispatch();
+		}
+	}
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_ENA_DSP_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ena_dsp */
+
+/*
+ *  ReLXgÌQÆ
+ */
+#ifdef TOPPERS_sns_ctx
+
+bool_t
+sns_ctx(void)
+{
+	bool_t	state;
+
+	LOG_SNS_CTX_ENTER();
+	state = sense_context() ? true : false;
+	LOG_SNS_CTX_LEAVE(state);
+	return(state);
+}
+
+#endif /* TOPPERS_sns_ctx */
+
+/*
+ *  CPUbNóÔÌQÆ
+ */
+#ifdef TOPPERS_sns_loc
+
+bool_t
+sns_loc(void)
+{
+	bool_t	state;
+
+	LOG_SNS_LOC_ENTER();
+	state = x_sense_lock() ? true : false;
+	LOG_SNS_LOC_LEAVE(state);
+	return(state);
+}
+
+#endif /* TOPPERS_sns_loc */
+
+/*
+ *  fBXpb`Ö~óÔÌQÆ
+ */
+#ifdef TOPPERS_sns_dsp
+
+bool_t
+sns_dsp(void)
+{
+	bool_t	state;
+
+	LOG_SNS_DSP_ENTER();
+	state = disdsp;
+	LOG_SNS_DSP_LEAVE(state);
+	return(state);
+}
+
+#endif /* TOPPERS_sns_dsp */
+
+/*
+ *  fBXpb`Û¯óÔÌQÆ
+ */
+#ifdef TOPPERS_sns_dpn
+
+bool_t
+sns_dpn(void)
+{
+	bool_t	state;
+
+	LOG_SNS_DPN_ENTER();
+	state = (sense_context() || t_sense_lock() || !dspflg) ? true : false;
+	LOG_SNS_DPN_LEAVE(state);
+	return(state);
+}
+
+#endif /* TOPPERS_sns_dpn */
+
+/*
+ *  J[lñ®ìóÔÌQÆ
+ */
+#ifdef TOPPERS_sns_ker
+
+bool_t
+sns_ker(void)
+{
+	bool_t	state;
+
+	LOG_SNS_KER_ENTER();
+	state = kerflg ? false : true;
+	LOG_SNS_KER_LEAVE(state);
+	return(state);
+}
+
+#endif /* TOPPERS_sns_ker */
Index: /asp_ewarm/asp-1.7.0/kernel/task.c
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/task.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/task.c	(revision 61)
@@ -0,0 +1,498 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  $Id: task.c 2011 2010-12-31 12:45:41Z ertl-hiro $
+ */
+
+/*
+ *		^XNÇW
+[
+ */
+
+#include "kernel_impl.h"
+#include "wait.h"
+#include "task.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_TEX_ENTER
+#define LOG_TEX_ENTER(p_tcb, texptn)
+#endif /* LOG_TEX_ENTER */
+
+#ifndef LOG_TEX_LEAVE
+#define LOG_TEX_LEAVE(p_tcb)
+#endif /* LOG_TEX_LEAVE */
+
+#ifdef TOPPERS_tskini
+
+/*
+ *  ÀsóÔÌ^XN
+ */
+TCB		*p_runtsk;
+
+/*
+ *  ÅDæÊÌ^XN
+ */
+TCB		*p_schedtsk;
+
+/*
+ *  ^XNfBXpb`^^XNáO[`N®vtO
+ */
+bool_t	reqflg;
+
+/*
+ *  ÝDæx}XNSðóÔ
+ */
+bool_t	ipmflg;
+
+/*
+ *  fBXpb`Ö~óÔ
+ */
+bool_t	disdsp;
+
+/*
+ *  ^XNfBXpb`Â\óÔ
+ */
+bool_t	dspflg;
+
+/*
+ *  fBL
+[
+ */
+QUEUE	ready_queue[TNUM_TPRI];
+
+/*
+ *  fBL
+[T[`Ì½ßÌrbg}bv
+ */
+uint16_t	ready_primap;
+
+/*
+ *  ^XNÇW
+[Ìú»
+ */
+void
+initialize_task(void)
+{
+	uint_t	i, j;
+	TCB		*p_tcb;
+
+	p_runtsk = p_schedtsk = NULL;
+	reqflg = false;
+	ipmflg = true;
+	disdsp = false;
+	dspflg = true;
+
+	for (i = 0; i < TNUM_TPRI; i++) {
+		queue_initialize(&(ready_queue[i]));
+	}
+	ready_primap = 0U;
+
+	for (i = 0; i < tnum_tsk; i++) {
+		j = INDEX_TSK(torder_table[i]);
+		p_tcb = &(tcb_table[j]);
+		p_tcb->p_tinib = &(tinib_table[j]);
+		p_tcb->actque = false;
+		make_dormant(p_tcb);
+		if ((p_tcb->p_tinib->tskatr & TA_ACT) != 0U) {
+			make_active(p_tcb);
+		}
+	}
+}
+
+#endif /* TOPPERS_tskini */
+
+/*
+ *  rbg}bvT[`Ö
+ *
+ *  bitmapàÌ1ÌrbgÌàCÅàºÊiEjÌàÌðT[`µC»Ìrb
+ *  gÔðÔ·DrbgÔÍCÅºÊrbgð0Æ·éDbitmapÉ0ðwè
+ *  µÄÍÈçÈ¢D±ÌÖÅÍCbitmapª16rbgÅ é±Æð¼èµC
+ *  uint16_t^ÆµÄ¢éD
+ *
+ *  rbgT[`½ßðÂvZbTÅÍCrbgT[`½ßðg¤æ¤É
+ *  «¼µ½ûªø¦ªÇ¢êª éD±Ìæ¤ÈêÉÍC^[Qbg
+ *  Ë¶ÅrbgT[`½ßðgÁ½bitmap_searchðè`µC
+ *  OMIT_BITMAP_SEARCHð}Nè`·êÎæ¢DÜ½CrbgT[`½ßÌ
+ *  T[`ûüªtÈÇÌRÅDæxÆrbgÆÌÎðÏXµ½¢êÉ
+ *  ÍCPRIMAP_BITð}Nè`·êÎæ¢D
+ *
+ *  Ü½CCuÉffsª éÈçCÌæ¤Éè`µÄCuÖð
+ *  gÁ½ûªø¦ªÇ¢Â\«à éD
+ *		#define	bitmap_search(bitmap) (ffs(bitmap) - 1)
+ */
+#ifndef PRIMAP_BIT
+#define	PRIMAP_BIT(pri)		(1U << (pri))
+#endif /* PRIMAP_BIT */
+
+#ifndef OMIT_BITMAP_SEARCH
+
+static const unsigned char bitmap_search_table[] = { 0, 1, 0, 2, 0, 1, 0,
+												3, 0, 1, 0, 2, 0, 1, 0 };
+
+Inline uint_t
+bitmap_search(uint16_t bitmap)
+{
+	uint_t	n = 0U;
+
+	assert(bitmap != 0U);
+	if ((bitmap & 0x00ffU) == 0U) {
+		bitmap >>= 8;
+		n += 8;
+	}
+	if ((bitmap & 0x0fU) == 0U) {
+		bitmap >>= 4;
+		n += 4;
+	}
+	return(n + bitmap_search_table[(bitmap & 0x0fU) - 1]);
+}
+
+#endif /* OMIT_BITMAP_SEARCH */
+
+/*
+ *  Dæxrbg}bvªó©Ì`FbN
+ */
+Inline bool_t
+primap_empty(void)
+{
+	return(ready_primap == 0U);
+}
+
+/*
+ *  Dæxrbg}bvÌT[`
+ */
+Inline uint_t
+primap_search(void)
+{
+	return(bitmap_search(ready_primap));
+}
+
+/*
+ *  Dæxrbg}bvÌZbg
+ */
+Inline void
+primap_set(uint_t pri)
+{
+	ready_primap |= PRIMAP_BIT(pri);
+}
+
+/*
+ *  Dæxrbg}bvÌNA
+ */
+Inline void
+primap_clear(uint_t pri)
+{
+	ready_primap &= ~PRIMAP_BIT(pri);
+}
+
+/*
+ *  ÅDæÊ^XNÌT[`
+ */
+#ifdef TOPPERS_tsksched
+
+TCB *
+search_schedtsk(void)
+{
+	uint_t	schedpri;
+
+	schedpri = primap_search();
+	return((TCB *)(ready_queue[schedpri].p_next));
+}
+
+#endif /* TOPPERS_tsksched */
+
+/*
+ *  ÀsÅ«éóÔÖÌJÚ
+ *
+ *  ÅDæÊÌ^XNðXV·éÌÍCÀsÅ«é^XNªÈ©Á½ê
+ *  ÆCp_tcbÌDæxªÅDæÊÌ^XNÌDæxæèà¢êÅ 
+ *  éD
+ */
+#ifdef TOPPERS_tskrun
+
+bool_t
+make_runnable(TCB *p_tcb)
+{
+	uint_t	pri = p_tcb->priority;
+
+	queue_insert_prev(&(ready_queue[pri]), &(p_tcb->task_queue));
+	primap_set(pri);
+
+	if (p_schedtsk == (TCB *) NULL || pri < p_schedtsk->priority) {
+		p_schedtsk = p_tcb;
+		return(dspflg);
+	}
+	return(false);
+}
+
+#endif /* TOPPERS_tskrun */
+
+/*
+ *  ÀsÅ«éóÔ©ç¼ÌóÔÖÌJÚ
+ *
+ *  ÅDæÊÌ^XNðXV·éÌÍCp_tcbªÅDæÊÌ^XNÅ
+ *   Á½êÅ éDp_tcbÆ¯¶DæxÌ^XNª¼É éêÍCp_tcb
+ *  ÌÌ^XNªÅDæÊÉÈéD»¤ÅÈ¢êÍCfBL
+[ð
+ *  T[`·éKvª éD
+ */
+#ifdef TOPPERS_tsknrun
+
+bool_t
+make_non_runnable(TCB *p_tcb)
+{
+	uint_t	pri = p_tcb->priority;
+	QUEUE	*p_queue = &(ready_queue[pri]);
+
+	queue_delete(&(p_tcb->task_queue));
+	if (queue_empty(p_queue)) {
+		primap_clear(pri);
+		if (p_schedtsk == p_tcb) {
+			p_schedtsk = primap_empty() ? (TCB *) NULL : search_schedtsk();
+			return(dspflg);
+		}
+	}
+	else {
+		if (p_schedtsk == p_tcb) {
+			p_schedtsk = (TCB *)(p_queue->p_next);
+			return(dspflg);
+		}
+	}
+	return(false);
+}
+
+#endif /* TOPPERS_tsknrun */
+
+/*
+ *  x~óÔÖÌJÚ
+ */
+#ifdef TOPPERS_tskdmt
+
+void
+make_dormant(TCB *p_tcb)
+{
+	p_tcb->tstat = TS_DORMANT;
+	p_tcb->priority = p_tcb->p_tinib->ipriority;
+	p_tcb->wupque = false;
+	p_tcb->enatex = false;
+	p_tcb->texptn = 0U;
+	LOG_TSKSTAT(p_tcb);
+}
+
+#endif /* TOPPERS_tskdmt */
+
+/*
+ *  x~óÔ©çÀsÅ«éóÔÖÌJÚ
+ */
+#ifdef TOPPERS_tskact
+
+bool_t
+make_active(TCB *p_tcb)
+{
+	activate_context(p_tcb);
+	p_tcb->tstat = TS_RUNNABLE;
+	LOG_TSKSTAT(p_tcb);
+	return(make_runnable(p_tcb));
+}
+
+#endif /* TOPPERS_tskact */
+
+/*
+ *  ^XNÌDæxÌÏX
+ *
+ *  ^XNªÀsÅ«éóÔÌêÉÍCfBL
+[ÌÅÌÊuðÏX·
+ *  éDIuWFNgÌÒ¿L
+[ÌÅÒ¿óÔÉÈÁÄ¢éêÉÍCÒ
+ *  ¿L
+[ÌÅÌÊuðÏX·éD
+ *
+ *  ÅDæÊÌ^XNðXV·éÌÍC(1) p_tcbªÅDæÊÌ^X
+ *  NÅ ÁÄC»ÌDæxðº°½êC(2) p_tcbªÅDæÊÌ^X
+ *  NÅÍÈ­CÏXãÌDæxªÅDæÊÌ^XNÌDæxæèà¢
+ *  êÅ éD(1)ÌêÉÍCfBL
+[ðT[`·éKvª éD
+ */
+#ifdef TOPPERS_tskpri
+
+bool_t
+change_priority(TCB *p_tcb, uint_t newpri)
+{
+	uint_t	oldpri;
+
+	oldpri = p_tcb->priority;
+	p_tcb->priority = newpri;
+
+	if (TSTAT_RUNNABLE(p_tcb->tstat)) {
+		/*
+		 *  ^XNªÀsÅ«éóÔÌê
+		 */
+		queue_delete(&(p_tcb->task_queue));
+		if (queue_empty(&(ready_queue[oldpri]))) {
+			primap_clear(oldpri);
+		}
+		queue_insert_prev(&(ready_queue[newpri]), &(p_tcb->task_queue));
+		primap_set(newpri);
+
+		if (p_schedtsk == p_tcb) {
+			if (newpri >= oldpri) {
+				p_schedtsk = search_schedtsk();
+				return(p_schedtsk != p_tcb && dspflg);
+			}
+		}
+		else {
+			if (newpri < p_schedtsk->priority) {
+				p_schedtsk = p_tcb;
+				return(dspflg);
+			}
+		}
+	}
+	else {
+		if (TSTAT_WAIT_WOBJCB(p_tcb->tstat)) {
+			/*
+			 *  ^XNªC¯úEÊMIuWFNgÌÇubNÌ¤Ê
+			 *  ªiWOBJCBjÌÒ¿L
+[ÉÂÈªêÄ¢éê
+			 */
+			wobj_change_priority(((WINFO_WOBJ *)(p_tcb->p_winfo))->p_wobjcb,
+																	p_tcb);
+		}
+	}
+	return(false);
+}
+
+#endif /* TOPPERS_tskpri */
+
+/*
+ *  fBL
+[Ìñ]
+ *
+ *  ÅDæÊÌ^XNðXV·éÌÍCÅDæÊÌ^XNª^XNL
+ *  
+[ÌöÉÚ®µ½êÅ éD
+ */
+#ifdef TOPPERS_tskrot
+
+bool_t
+rotate_ready_queue(uint_t pri)
+{
+	QUEUE	*p_queue = &(ready_queue[pri]);
+	QUEUE	*p_entry;
+
+	if (!queue_empty(p_queue) && p_queue->p_next->p_next != p_queue) {
+		p_entry = queue_delete_next(p_queue);
+		queue_insert_prev(p_queue, p_entry);
+		if (p_schedtsk == (TCB *) p_entry) {
+			p_schedtsk = (TCB *)(p_queue->p_next);
+			return(dspflg);
+		}
+	}
+	return(false);
+}
+
+#endif /* TOPPERS_tskrot */
+
+/*
+ *  ^XNáO[`ÌÄoµ
+ *
+ *  ASPJ[lÅÍC^XNáO[`àÅCPUbNóÔÉJÚµC
+ *  ³ÌóÔÉß³¸É^[µ½êCJ[lª³ÌóÔÉß·D
+ */
+#ifdef TOPPERS_tsktex
+
+void
+call_texrtn(void)
+{
+	TEXPTN	texptn;
+	bool_t	saved_disdsp;
+
+	saved_disdsp = disdsp;
+	p_runtsk->enatex = false;
+	do {
+		texptn = p_runtsk->texptn;
+		p_runtsk->texptn = 0U;
+
+		t_unlock_cpu();
+		LOG_TEX_ENTER(p_runtsk, texptn);
+		(*((TEXRTN)(p_runtsk->p_tinib->texrtn)))(texptn,
+												p_runtsk->p_tinib->exinf);
+		LOG_TEX_LEAVE(p_runtsk);
+		if (!t_sense_lock()) {
+			t_lock_cpu();
+		}
+		if (!ipmflg) {
+			t_set_ipm(TIPM_ENAALL);
+			ipmflg = true;
+		}
+		disdsp = saved_disdsp;
+		dspflg = !disdsp;
+		p_runtsk->enatex = false;
+		if (p_runtsk != p_schedtsk && dspflg) {
+			/*
+			 *  ±±ÅdispatchðÄÑo·ÍCÝÄAÄoµÉÈÁÄ
+			 *  ¢éªCdispatchðÄÔOÉp_runtsk->enatexðfalseÉµÄ
+			 *  ¨¯ÎxáªÈ¢D»ÌRÉÂ¢ÄÍCuTOPPERS/ASP J[
+			 *  l ÝvvðQÆÌ±ÆD
+			 */
+			dispatch();
+		}
+	} while (p_runtsk->texptn != 0U);
+	p_runtsk->enatex = true;
+}
+
+/*
+ *  ^XNáO[`ÌN®
+ */
+#ifndef OMIT_CALLTEX
+
+void
+calltex(void)
+{
+	if (p_runtsk->enatex && p_runtsk->texptn != 0U && ipmflg) {
+		call_texrtn();
+	}
+}
+
+#endif /* OMIT_CALLTEX */
+#endif /* TOPPERS_tsktex */
Index: /asp_ewarm/asp-1.7.0/kernel/task.h
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/task.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/task.h	(revision 61)
@@ -0,0 +1,520 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  $Id: task.h 2008 2010-12-31 12:41:42Z ertl-hiro $
+ */
+
+/*
+ *		^XNÇW
+[
+ */
+
+#ifndef TOPPERS_TASK_H
+#define TOPPERS_TASK_H
+
+#include <queue.h>
+#include "time_event.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_TSKSTAT
+#define LOG_TSKSTAT(p_tcb)
+#endif /* LOG_TSKSTAT */
+
+/*
+ *  ^XNDæxÌà\»EO\»Ï·}N
+ */
+#define INT_PRIORITY(x)		((uint_t)((x) - TMIN_TPRI))
+#define EXT_TSKPRI(x)		((PRI)(x) + TMIN_TPRI)
+
+/*
+ *  ^XNóÔÌà\»
+ *
+ *  TCBÌ^XNóÔÅÍCÀsóÔiRUNNINGjÆÀsÂ\óÔiREADYj
+ *  ÍæÊµÈ¢D¼óÔðÌµÄCÀsÅ«éóÔiRUNNABLEjÆÄÔD
+ *  ñdÒ¿óÔÍC(TS_WAITING | TS_SUSPENDED)Å\·DTS_WAIT_???ÍÒ
+ *  ¿vöð\µCÒ¿óÔiñdÒ¿óÔðÜÞjÌêÉÌÝÝè·éD
+ */
+#define TS_DORMANT		0x00U			/* x~óÔ */
+#define TS_RUNNABLE		0x01U			/* ÀsÅ«éóÔ */
+#define TS_WAITING		0x02U			/* Ò¿óÔ */
+#define TS_SUSPENDED	0x04U			/* ­§Ò¿óÔ */
+
+#define TS_WAIT_DLY		(0x00U << 3)	/* ÔoßÒ¿ */
+#define TS_WAIT_SLP		(0x01U << 3)	/* N°Ò¿ */
+#define TS_WAIT_RDTQ	(0x02U << 3)	/* f[^L
+[©çÌóMÒ¿ */
+#define TS_WAIT_RPDQ	(0x03U << 3)	/* Dæxf[^L
+[©çÌóMÒ¿ */
+#define TS_WAIT_SEM		(0x04U << 3)	/* Z}tH¹Ìl¾Ò¿ */
+#define TS_WAIT_FLG		(0x05U << 3)	/* CxgtOÒ¿ */
+#define TS_WAIT_SDTQ	(0x06U << 3)	/* f[^L
+[ÖÌMÒ¿ */
+#define TS_WAIT_SPDQ	(0x07U << 3)	/* Dæxf[^L
+[ÖÌMÒ¿ */
+#define TS_WAIT_MBX		(0x08U << 3)	/* [{bNX©çÌóMÒ¿ */
+#define TS_WAIT_MPF		(0x09U << 3)	/* Åè·ubNÌl¾Ò¿ */
+
+/*
+ *  ^XNóÔ»Ê}N
+ *
+ *  TSTAT_DORMANTÍ^XNªx~óÔÅ é©Ç¤©ðCTSTAT_RUNNABLEÍ
+ *  ^XNªÀsÅ«éóÔÅ é©Ç¤©ð»Ê·éDTSTAT_WAITINGÍÒ
+ *  ¿óÔÆñdÒ¿óÔÌ¢¸ê©Å é©Ç¤©ðCTSTAT_SUSPENDEDÍ
+ *  ­§Ò¿óÔÆñdÒ¿óÔÌ¢¸ê©Å é©Ç¤©ð»Ê·éD
+ */
+#define TSTAT_DORMANT(tstat)	((tstat) == TS_DORMANT)
+#define TSTAT_RUNNABLE(tstat)	(((tstat) & TS_RUNNABLE) != 0U)
+#define TSTAT_WAITING(tstat)	(((tstat) & TS_WAITING) != 0U)
+#define TSTAT_SUSPENDED(tstat)	(((tstat) & TS_SUSPENDED) != 0U)
+
+/*
+ *  ^XNÒ¿vö»Ê}N
+ *
+ *  TSTAT_WAIT_SLPÍ^XNªN°Ò¿Å é©Ç¤©ðCTSTAT_WAIT_WOBJ
+ *  Í^XNª¯úEÊMIuWFNgÉÎ·éÒ¿Å é©i¾¢·¦éÆC
+ *  ¯úÊMIuWFNgÌÒ¿L
+[ÉÂÈªêÄ¢é©jÇ¤©ð»Ê·
+ *  éDÜ½CTSTAT_WAIT_WOBJCBÍ^XNª¯úEÊMIuWFNgÌÇ
+ *  ubNÌ¤ÊªiWOBJCBjÌÒ¿L
+[ÉÂÈªêÄ¢é©Ç¤©ð
+ *  »Ê·éD
+ *
+ *  TSTAT_WAIT_SLPÍCCÓÌ^XNóÔÌ©çC^XNªN°Ò¿Å é
+ *  ±Æð»ÊÅ«éD·Èí¿CTSTAT_WAITINGÉæèÒ¿óÔÅ é±Æð
+ *  »Ê¹¸ÉCTSTAT_SLP¾¯ðp¢ÄN°Ò¿óÔÅ é±Æð»ÊÅ«éD
+ *  ±êðø¦IÉÀ»·é½ßÉCTS_WAIT_SLPÌlðC(0x00U << 3)ÅÍÈ
+ *  ­(0x01U << 3)ÆµÄ¢éD»Ì½ßC^XNªÔoßÒ¿óÔÅ é
+ *  ±Æð»Ê·é½ßÌTSTAT_WAIT_DLYðCTSTAT_WAIT_SLPÆ¯lÌû@Å
+ *  À»·é±ÆÍÅ«È¢D
+ */
+#define TS_WAIT_MASK	(0x0fU << 3)	/* Ò¿vöÌæoµ}XN */
+
+#define TSTAT_WAIT_SLP(tstat)		(((tstat) & TS_WAIT_MASK) == TS_WAIT_SLP)
+#define TSTAT_WAIT_WOBJ(tstat)		(((tstat) & TS_WAIT_MASK) >= TS_WAIT_RDTQ)
+#define TSTAT_WAIT_WOBJCB(tstat)	(((tstat) & TS_WAIT_MASK) >= TS_WAIT_SEM)
+
+/*
+ *  Ò¿îñubNiWINFOjÌè`
+ *
+ *  ^XNªÒ¿óÔÌÔÍCTCB¨æÑ»Ìp_winfoÅw³êéWINFOðÌ
+ *  æ¤ÉÝèµÈ¯êÎÈçÈ¢D
+ *
+ *  (a) TCBÌ^XNóÔðÒ¿óÔiTS_WAITINGjÉ·éD»ÌÛÉCÒ¿
+ *  vöiTS_WAIT_???jàÝè·éD
+ *
+ *  (b) ^CAEgðÄ·é½ßÉC^CCxgubNðo^·éD
+ *  o^·é^CCxgubNÍCÒ¿ÉüéT[rXR[Ö
+ *  Ì[JÏÆµÄmÛµC»êÖÌ|C^ðWINFOÌp_tmevtbÉL
+ *  ¯·éD^CAEgÌÄªKvÈ¢êiivÒ¿ÌêjÉÍC
+ *  p_tmevtbðNULLÉ·éD
+ *
+ *  ¯úEÊMIuWFNgÉÎ·éÒ¿óÔÌêÉÍCWÌWINFOÉ
+ *  p_wobjcbtB[hðÇÁµ½\¢ÌiWINFO_WOBJCwait.hÅè`jðg
+ *  ¤DÜ½CÈºÌ(c)`(e)ÌÝèðs¤Kvª éD¯úEÊMIuWF
+ *  NgÉÖWµÈ¢Ò¿iN°Ò¿CÔoßÒ¿jÌêÉÍC(c)`(e)
+ *  ÍKvÈ¢D
+ *
+ *  (c) TCBðÒ¿ÎÛÌ¯úEÊMIuWFNgÌÒ¿L
+[ÉÂÈ®DÒ
+ *  ¿L
+[ÉÂÈ®½ßÉCtask_queueðg¤D
+ *
+ *  (d) Ò¿ÎÛÌ¯úEÊMIuWFNgÌÇubNÖÌ|C^ðC
+ *  WINFO_WOBJÌp_wobjcbÉL¯·éD
+ *
+ *  (e) Ò¿ÎÛÌ¯úEÊMIuWFNgÉË¶µÄL¯·é±ÆªKvÈ
+ *  îñª éêÉÍCWINFO_WOBJÉKvÈîñÌ½ßÌtB[hðÇÁ
+ *  µ½\¢Ìðè`µCWINFO_WOBJÌãíèÉp¢éD
+ *
+ *  Ò¿óÔðð·éÛÉÍCÒ¿ðµ½^XNÉÎ·éÔlðWINFOÌ
+ *  wercdÉÝè·éDwercdªKvÈÌÍÒ¿ðÈ~Å éÌÉÎµÄC
+ *  p_tmevtbÍÒ¿ðãÍKvÈ¢½ßCßñÌ½ßÉ¤pÌðgÁ
+ *  Ä¢éD»Ì½ßCwercdÖG[R[hðÝè·éÌÍC^CCxg
+ *  ubNðo^ðµ½ãÉµÈ¯êÎÈçÈ¢D
+ */
+typedef union waiting_information {
+	ER		wercd;			/* Ò¿ðÌG[R[h */
+	TMEVTB	*p_tmevtb;		/* Ò¿óÔpÌ^CCxgubN */
+} WINFO;
+
+/*
+ *  ^XNú»ubN
+ *
+ *  ^XNÉÖ·éîñðClªÏíçÈ¢½ßÉROMÉu¯éªi^XN
+ *  ú»ubNjÆClªÏ»·é½ßÉRAMÉu©È¯êÎÈçÈ¢
+ *  ªi^XNÇubNCTCBjÉª£µCTCBàÉÎ·é^XNú»
+ *  ubNðw·|C^ðüêéD^XNú»ubNàÉÎ·é
+ *  TCBðw·|C^ðüêéû@ÌûªCRAMÌßñÌÏ_©çÍ]Üµ¢
+ *  ªCÀsø¦ª«­Èé½ßÉÌpµÄ¢È¢D¼ÌIuWFNgÉÂ¢
+ *  Äà¯lÉµ¤D
+ *
+ *  ^XNú»ubNÉÍCDEF_TEXÅè`³êé^XNáO[`
+ *  ÉÖ·éîñàÜÞD
+ */
+typedef struct task_initialization_block {
+	ATR			tskatr;			/* ^XN®« */
+	intptr_t	exinf;			/* ^XNÌg£îñ */
+	TASK		task;			/* ^XNÌN®Ôn */
+	uint_t		ipriority;		/* ^XNÌN®Dæxià\»j */
+
+#ifdef USE_TSKINICTXB
+	TSKINICTXB	tskinictxb;		/* ^XNú»ReLXgubN */
+#else /* USE_TSKINICTXB */
+	SIZE		stksz;			/* X^bNÌæÌTCYiÛß½lj */
+	void		*stk;			/* X^bNÌæÌæªÔn */
+#endif /* USE_TSKINICTXB */
+
+	ATR			texatr;			/* ^XNáO[`®« */
+	TEXRTN		texrtn;			/* ^XNáO[`ÌN®Ôn */
+} TINIB;
+
+/*
+ *  TCBÌtB[hÌrbgÌè`
+ *
+ *  vZbTÉæÁÄÍCTCBÌtB[hÌrbgÅgpÊÆ
+ *  «\ªg[hItÉÈé½ßC^[QbgË¶ÉtB[hÌrbg
+ *  ðÏX·é±ÆðµÄ¢éD
+ */
+#ifndef TBIT_TCB_PRIORITY
+#define	TBIT_TCB_PRIORITY		8		/* prioritytB[hÌrbg */
+#endif /* TBIT_TCB_PRIORITY */
+
+/*
+ *  ^XNÇubNiTCBj
+ *
+ *  ASPJ[lÅÍC^XNÌN®vL
+[COÌÅåliTMAX_ACTCNTj
+ *  ÆN°vL
+[COÌÅåliTMAX_WUPCNTjÍ1ÉÅè³êÄ¢é
+ *  ½ßCL
+[CO³êÄ¢é©Ç¤©Ì^UlÅ\»·é±ÆªÅ«éD
+ *  Ü½C­§Ò¿vlXgÌÅåliTMAX_SUSCNTjª1ÉÅè³êÄ¢
+ *  éÌÅC­§Ò¿vlXgisuscntjÍKvÈ¢D
+ *
+ *  TCBÌ¢­Â©ÌtB[hÍCÁèÌ^XNóÔÅÌÝLøÈlðÛµC
+ *  »êÈOÌêÍlªÛØ³êÈ¢iæÁÄCQÆµÄÍÈçÈ¢jDe
+ *  tB[hªLøÈlðÛ·éðÍÌÊèD
+ *
+ *  Eú»ãÍíÉLøF
+ *  		p_tinibCtstatCactque
+ *  Ex~óÔÈOÅLøix~óÔÅÍúlÉÈÁÄ¢éjF
+ *  		priorityCwupqueCenatexCtexptn
+ *  EÒ¿óÔiñdÒ¿óÔðÜÞjÅLøF
+ *  		p_winfo
+ *  EÀsÅ«éóÔÆ¯úEÊMIuWFNgÉÎ·éÒ¿óÔÅLøF
+ *  		task_queue
+ *  EÀsÂ\óÔCÒ¿óÔC­§Ò¿óÔCñdÒ¿óÔÅLøF
+ *  		tskctxb
+ */
+typedef struct task_control_block {
+	QUEUE			task_queue;		/* ^XNL
+[ */
+	const TINIB		*p_tinib;		/* ú»ubNÖÌ|C^ */
+
+#ifdef UINT8_MAX
+	uint8_t			tstat;			/* ^XNóÔià\»j*/
+#else /* UINT8_MAX */
+	BIT_FIELD_UINT	tstat : 8;		/* ^XNóÔià\»j*/
+#endif /* UINT8_MAX */
+#if defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8)
+	uint8_t			priority;		/* »ÝÌDæxià\»j*/
+#else /* defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8) */
+	BIT_FIELD_UINT	priority : TBIT_TCB_PRIORITY;
+									/* »ÝÌDæxià\»j*/
+#endif  /* defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8) */
+	BIT_FIELD_BOOL	actque : 1;		/* N®vL
+[CO */
+	BIT_FIELD_BOOL	wupque : 1;		/* N°vL
+[CO */
+	BIT_FIELD_BOOL	enatex : 1;		/* ^XNáOÂóÔ */
+
+	TEXPTN			texptn;			/* Û¯áOvö */
+	WINFO			*p_winfo;		/* Ò¿îñubNÖÌ|C^ */
+	TSKCTXB			tskctxb;		/* ^XNReLXgubN */
+} TCB;
+
+/*
+ *  ÀsóÔÌ^XN
+ *
+ *  ÀsóÔÌ^XNivZbTªReLXgðÁÄ¢é^XNjÌ
+ *  TCBðw·|C^DÀsóÔÌ^XNªÈ¢êÍNULLÉ·éD
+ *
+ *  T[rXR[ÌÅC©^XNiT[rXR[ðÄÑoµ½^X
+ *  NjÉÖ·éîñðQÆ·éêÍp_runtskðg¤Dp_runtskð«·¦
+ *  éÌÍCfBXpb`iÆú»jÌÝÅ éD
+ */
+extern TCB	*p_runtsk;
+
+/*
+ *  ÅDæÊÌ^XN
+ *
+ *  ÀsÅ«é^XNÌÅÅDæÊÌ^XNÌTCBðw·|C^DÀ
+ *  sÅ«é^XNªÈ¢êÍNULLÉ·éD
+ *
+ *  fBXpb`Ö~óÔÈÇCfBXpb`ªÛ¯³êÄ¢éÔÍp_runtsk
+ *  ÆêvµÄ¢éÆÍÀçÈ¢D
+ */
+extern TCB	*p_schedtsk;
+
+/*
+ *  fBXpb`^^XNáO[`N®vtO
+ *
+ *  Ýnh^CPUáOnhÌoûÉCfBXpb`Ü½Í
+ *  ^XNáO[`ÌN®ðv·é±Æð¦·tOD
+ */
+extern bool_t	reqflg;
+
+/*
+ *  ÝDæx}XNSðóÔ
+ *
+ *  ÝDæx}XNSðóÔÅ é±Æð¦·tOD
+ */
+extern bool_t	ipmflg;
+
+/*
+ *  fBXpb`Ö~óÔ
+ *
+ *  fBXpb`Ö~óÔÅ é±Æð¦·tOD
+ */
+extern bool_t	disdsp;
+
+/*
+ *  ^XNfBXpb`Â\óÔ
+ *
+ *  ÝDæx}XNSðóÔÅ èCfBXpb`ÂóÔÅ éifB
+ *  Xpb`Ö~óÔÅÈ¢j±Æð¦·tOD
+ */
+extern bool_t	dspflg;
+
+/*
+ *  fBL
+[
+ *
+ *  fBL
+[ÍCÀsÅ«éóÔÌ^XNðÇ·é½ßÌL
+[Å éD
+ *  ÀsóÔÌ^XNàÇµÄ¢é½ßCfBiÀsÂ\jL
+[Æ¢¤
+ *  ¼ÌÍ³mÅÍÈ¢ªCfBL
+[Æ¢¤¼Ìªè
+µÄ¢é½ßC±
+ *  Ì¼ÌÅÄÔ±ÆÉ·éD
+ *
+ *  fBL
+[ÍCDæx²ÆÌ^XNL
+[Å\¬³êÄ¢éD^XNÌ
+ *  TCBÍCY·éDæxÌL
+[Éo^³êéD
+ */
+extern QUEUE	ready_queue[TNUM_TPRI];
+
+/*
+ *  fBL
+[T[`Ì½ßÌrbg}bv
+ *
+ *  fBL
+[ÌT[`ðø¦æ­s¤½ßÉCDæx²ÆÌ^XNL
+[
+ *  É^XNªüÁÄ¢é©Ç¤©ð¦·rbg}bvðpÓµÄ¢éDrb
+ *  g}bvðg¤±ÆÅCANZXÌñð¸ç·±ÆªÅ«éªC
+ *  rbgì½ßª[ÀµÄ¢È¢vZbTÅCDæxÌiKª­È¢
+ *  êÉÍCrbg}bvìÌI[o[wbhÌ½ßÉCtÉø¦ª¿
+ *  éÂ\«à éD
+ *
+ *  Dæxª16iKÅ é±Æð¼èµÄ¢é½ßCuint16_t^ÆµÄ¢éD
+ */
+extern uint16_t	ready_primap;
+
+/*
+ *  ^XNIDÌÅålikernel_cfg.cj
+ */
+extern const ID	tmax_tskid;
+
+/*
+ *  ^XNú»ubNÌGAikernel_cfg.cj
+ */
+extern const TINIB	tinib_table[];
+
+/*
+ *  ^XN¶¬e[uikernel_cfg.cj
+ */
+extern const ID	torder_table[];
+
+/*
+ *  TCBÌGAikernel_cfg.cj
+ */
+extern TCB	tcb_table[];
+
+/*
+ *  ^XNÌ
+ */
+#define tnum_tsk	((uint_t)(tmax_tskid - TMIN_TSKID + 1))
+
+/*
+ *  ^XNID©çTCBðæèo·½ßÌ}N
+ */
+#define INDEX_TSK(tskid)	((uint_t)((tskid) - TMIN_TSKID))
+#define get_tcb(tskid)		(&(tcb_table[INDEX_TSK(tskid)]))
+#define get_tcb_self(tskid)	((tskid) == TSK_SELF ? p_runtsk : get_tcb(tskid))
+
+/*
+ *  TCB©ç^XNIDðæèo·½ßÌ}N
+ */
+#define	TSKID(p_tcb)	((ID)(((p_tcb) - tcb_table) + TMIN_TSKID))
+
+/*
+ *  ^XNÇW
+[Ìú»
+ */
+extern void	initialize_task(void);
+
+/*
+ *  ÅDæÊ^XNÌT[`
+ *
+ *  fBL
+[ÌÅDæÊÌ^XNðT[`µC»ÌTCBÖÌ|C^
+ *  ðÔ·DfBL
+[ªóÌêÉÍC±ÌÖðÄÑoµÄÍÈçÈ¢D
+ */
+extern TCB	*search_schedtsk(void);
+
+/*
+ *  ÀsÅ«éóÔÖÌJÚ
+ *
+ *  p_tcbÅwè³êé^XNðfBL
+[É}ü·éDfBL
+[É}ü
+ *  µ½^XNÌDæxªCÅDæÊÌ^XNÌDæxæèà¢êÍC
+ *  ÅDæÊÌ^XNðXVµCfBXpb`ÂóÔÅ êÎtrueðÔ
+ *  ·D»¤ÅÈ¢êÍfalseðÔ·D
+ */
+extern bool_t	make_runnable(TCB *p_tcb);
+
+/*
+ *  ÀsÅ«éóÔ©ç¼ÌóÔÖÌJÚ
+ *
+ *  p_tcbÅwè³êé^XNðfBL
+[©çí·éDp_tcbÅwèµ½
+ *  ^XNªÅDæÊÌ^XNÅ Á½êÉÍCÅDæÊÌ^XN
+ *  ðÝèµÈ¨µCfBXpb`ÂóÔÅ êÎtrueðÔ·D»¤ÅÈ¢
+ *  êÍfalseðÔ·D^XNÌóÔÍXVµÈ¢D
+ */
+extern bool_t	make_non_runnable(TCB *p_tcb);
+
+/*
+ *  x~óÔÖÌJÚ
+ *
+ *  p_tcbÅwè³êé^XNÌóÔðx~óÔÆ·éDÜ½C^XNÌN®
+ *  Éú»·×«ÏÌú»ÆC^XNN®Ì½ßÌReLXgðÝ
+ *  è·éD
+ */
+extern void	make_dormant(TCB *p_tcb);
+
+/*
+ *  x~óÔ©çÀsÅ«éóÔÖÌJÚ
+ *
+ *  p_tcbÅwè³êé^XNÌóÔðx~óÔ©çÀsÅ«éóÔÆ·éD
+ *  ÀsÅ«éóÔÉJÚµ½^XNÖÌfBXpb`ªKvÈêÍtrueC
+ *  »¤ÅÈ¢êÍfalseðÔ·D
+ */
+extern bool_t	make_active(TCB *p_tcb);
+
+/*
+ *  ^XNÌDæxÌÏX
+ *
+ *  p_tcbÅwè³êé^XNÌDæxðnewpriià\»jÉÏX·éDÜ½C
+ *  KvÈêÉÍÅDæÊÌ^XNðXVµCfBXpb`ÂóÔÅ
+ *   êÎtrueðÔ·D»¤ÅÈ¢êÍfalseðÔ·D
+ */
+extern bool_t	change_priority(TCB *p_tcb, uint_t newpri);
+
+/*
+ *  fBL
+[Ìñ]
+ *
+ *  fBL
+[ÌCpriÅwè³êéDæxÌ^XNL
+[ðñ]³¹éD
+ *  Ü½CKvÈêÉÍÅDæÊÌ^XNðÏXµCfBXpb`ªÛ
+ *  ¯³êÄ¢È¯êÎtrueðÔ·D»¤ÅÈ¢êÍfalseðÔ·D
+ */
+extern bool_t	rotate_ready_queue(uint_t pri);
+
+/*
+ *  ^XNáO[`ÌÄoµ
+ *
+ *  ^XNáO[`ðÄÑo·DÄÑo·OÉCÀsóÔÌ^XNÌ
+ *  Û¯áOvöðNAµC^XNáOÖ~óÔÉµCCPUbNðð
+ *  ·éD
+ *
+ *  ^XNáO[`©çßéÆCÜ¸CPUbNóÔÉßµC»ÌÔ
+ *  ÉÛ¯áOvöª0ÅÈ­ÈÁÄ¢êÎCÄÑ^XNáO[`ð
+ *  ÄÑo·DÛ¯áOvöª0ÌêÉÍCáOÂóÔÉµÄÖ©
+ *  ç^[·éD
+ *
+ *  ±ÌÖÍCÀsóÔÌ^XNªC^XNáOÂóÔienatexª
+ *  truejÅCÛ¯áOvöª0ÅÈ¢itexptnª0ÅÈ¢jêÉÄÑo·±
+ *  ÆðzèµÄ¢éD±ÌÖÍCCPUbNóÔÅÄÑo³È¯êÎÈç
+ *  È¢D
+ */
+extern void	call_texrtn(void);
+
+/*
+ *  ^XNáO[`ÌN®
+ *
+ *  ÀsóÔÌ^XNª^XNáO[`ÌN®ðð½µÄ¢êÎC
+ *  ^XNáO[`ðÄÑo·DCPUáO[`ðÄÑo·
+ *  ÍCêIÉCPUbNðð·éD
+ *
+ *  ±ÌÖÍCfBXpb`âÝnh^CPUáOnhÌoû
+ *  ©çÄÑo³êé±ÆðzèµÄ¢éD±ÌÖÍCCPUbNóÔ
+ *  ÅÄÑo³È¯êÎÈçÈ¢D
+ *
+ *  Àsø¦ðã°é½ßÉC±ÌÖð^[QbgË¶ÅLqµÄàæ¢D
+ *  »ÌêÉÍCOMIT_CALLTEXð}Nè`·éD
+ */
+extern void	calltex(void);
+
+#endif /* TOPPERS_TASK_H */
Index: /asp_ewarm/asp-1.7.0/kernel/task_except.c
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/task_except.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/task_except.c	(revision 61)
@@ -0,0 +1,293 @@
+/*
+ *  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-2011 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  $Id: task_except.c 2023 2011-01-02 08:59:06Z ertl-hiro $
+ */
+
+/*
+ *		^XNáO@\
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_RAS_TEX_ENTER
+#define LOG_RAS_TEX_ENTER(tskid, rasptn)
+#endif /* LOG_RAS_TEX_ENTER */
+
+#ifndef LOG_RAS_TEX_LEAVE
+#define LOG_RAS_TEX_LEAVE(ercd)
+#endif /* LOG_RAS_TEX_LEAVE */
+
+#ifndef LOG_IRAS_TEX_ENTER
+#define LOG_IRAS_TEX_ENTER(tskid, rasptn)
+#endif /* LOG_IRAS_TEX_ENTER */
+
+#ifndef LOG_IRAS_TEX_LEAVE
+#define LOG_IRAS_TEX_LEAVE(ercd)
+#endif /* LOG_IRAS_TEX_LEAVE */
+
+#ifndef LOG_DIS_TEX_ENTER
+#define LOG_DIS_TEX_ENTER()
+#endif /* LOG_DIS_TEX_ENTER */
+
+#ifndef LOG_DIS_TEX_LEAVE
+#define LOG_DIS_TEX_LEAVE(ercd)
+#endif /* LOG_DIS_TEX_LEAVE */
+
+#ifndef LOG_ENA_TEX_ENTER
+#define LOG_ENA_TEX_ENTER()
+#endif /* LOG_ENA_TEX_ENTER */
+
+#ifndef LOG_ENA_TEX_LEAVE
+#define LOG_ENA_TEX_LEAVE(ercd)
+#endif /* LOG_ENA_TEX_LEAVE */
+
+#ifndef LOG_SNS_TEX_ENTER
+#define LOG_SNS_TEX_ENTER()
+#endif /* LOG_SNS_TEX_ENTER */
+
+#ifndef LOG_SNS_TEX_LEAVE
+#define LOG_SNS_TEX_LEAVE(state)
+#endif /* LOG_SNS_TEX_LEAVE */
+
+#ifndef LOG_REF_TEX_ENTER
+#define LOG_REF_TEX_ENTER(tskid, pk_rtex)
+#endif /* LOG_REF_TEX_ENTER */
+
+#ifndef LOG_REF_TEX_LEAVE
+#define LOG_REF_TEX_LEAVE(ercd, pk_rtex)
+#endif /* LOG_REF_TEX_LEAVE */
+
+/*
+ *  ^XNáOÌv
+ */
+#ifdef TOPPERS_ras_tex
+
+ER
+ras_tex(ID tskid, TEXPTN rasptn)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_RAS_TEX_ENTER(tskid, rasptn);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID_SELF(tskid);
+	CHECK_PAR(rasptn != 0U);
+	p_tcb = get_tcb_self(tskid);
+
+	t_lock_cpu();
+	if (TSTAT_DORMANT(p_tcb->tstat) || p_tcb->p_tinib->texrtn == NULL) {
+		ercd = E_OBJ;
+	}
+	else {
+		p_tcb->texptn |= rasptn;
+		if (p_tcb == p_runtsk && p_runtsk->enatex && ipmflg) {
+			call_texrtn();
+		}
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_RAS_TEX_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ras_tex */
+
+/*
+ *  ^XNáOÌviñ^XNReLXgpj
+ */
+#ifdef TOPPERS_iras_tex
+
+ER
+iras_tex(ID tskid, TEXPTN rasptn)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_IRAS_TEX_ENTER(tskid, rasptn);
+	CHECK_INTCTX_UNL();
+	CHECK_TSKID(tskid);
+	CHECK_PAR(rasptn != 0U);
+	p_tcb = get_tcb(tskid);
+
+	i_lock_cpu();
+	if (TSTAT_DORMANT(p_tcb->tstat) || p_tcb->p_tinib->texrtn == NULL) {
+		ercd = E_OBJ;
+	}
+	else {
+		p_tcb->texptn |= rasptn;
+		if (p_tcb == p_runtsk && p_runtsk->enatex && ipmflg) {
+			reqflg = true;
+		}
+		ercd = E_OK;
+	}
+	i_unlock_cpu();
+
+  error_exit:
+	LOG_IRAS_TEX_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_iras_tex */
+
+/*
+ *  ^XNáOÌÖ~
+ */
+#ifdef TOPPERS_dis_tex
+
+ER
+dis_tex(void)
+{
+	ER		ercd;
+
+	LOG_DIS_TEX_ENTER();
+	CHECK_TSKCTX_UNL();
+
+	t_lock_cpu();
+	if (p_runtsk->p_tinib->texrtn == NULL) {
+		ercd = E_OBJ;
+	}
+	else {
+		p_runtsk->enatex = false;
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_DIS_TEX_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_dis_tex */
+
+/*
+ *  ^XNáOÌÂ
+ */
+#ifdef TOPPERS_ena_tex
+
+ER
+ena_tex(void)
+{
+	ER		ercd;
+
+	LOG_ENA_TEX_ENTER();
+	CHECK_TSKCTX_UNL();
+
+	t_lock_cpu();
+	if (p_runtsk->p_tinib->texrtn == NULL) {
+		ercd = E_OBJ;
+	}
+	else {
+		p_runtsk->enatex = true;
+		if (p_runtsk->texptn != 0U && ipmflg) {
+			call_texrtn();
+		}
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_ENA_TEX_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ena_tex */
+
+/*
+ *  ^XNáOÖ~óÔÌQÆ
+ */
+#ifdef TOPPERS_sns_tex
+
+bool_t
+sns_tex(void)
+{
+	bool_t	state;
+
+	LOG_SNS_TEX_ENTER();
+	state = (p_runtsk != NULL && p_runtsk->enatex) ? false : true;
+	LOG_SNS_TEX_LEAVE(state);
+	return(state);
+}
+
+#endif /* TOPPERS_sns_tex */
+
+/*
+ *  ^XNáOÌóÔQÆ
+ */
+#ifdef TOPPERS_ref_tex
+
+ER
+ref_tex(ID tskid, T_RTEX *pk_rtex)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_REF_TEX_ENTER(tskid, pk_rtex);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID_SELF(tskid);
+	p_tcb = get_tcb_self(tskid);
+
+	t_lock_cpu();
+	if (TSTAT_DORMANT(p_tcb->tstat) || p_tcb->p_tinib->texrtn == NULL) {
+		ercd = E_OBJ;
+	}
+	else {
+		pk_rtex->texstat = (p_tcb->enatex) ? TTEX_ENA : TTEX_DIS;
+		pk_rtex->pndptn = p_tcb->texptn;
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_REF_TEX_LEAVE(ercd, pk_rtex);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ref_tex */
Index: /asp_ewarm/asp-1.7.0/kernel/task_manage.c
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/task_manage.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/task_manage.c	(revision 61)
@@ -0,0 +1,433 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: task_manage.c 2008 2010-12-31 12:41:42Z ertl-hiro $
+ */
+
+/*
+ *		^XNÇ@\
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_ACT_TSK_ENTER
+#define LOG_ACT_TSK_ENTER(tskid)
+#endif /* LOG_ACT_TSK_ENTER */
+
+#ifndef LOG_ACT_TSK_LEAVE
+#define LOG_ACT_TSK_LEAVE(ercd)
+#endif /* LOG_ACT_TSK_LEAVE */
+
+#ifndef LOG_IACT_TSK_ENTER
+#define LOG_IACT_TSK_ENTER(tskid)
+#endif /* LOG_IACT_TSK_ENTER */
+
+#ifndef LOG_IACT_TSK_LEAVE
+#define LOG_IACT_TSK_LEAVE(ercd)
+#endif /* LOG_IACT_TSK_LEAVE */
+
+#ifndef LOG_CAN_ACT_ENTER
+#define LOG_CAN_ACT_ENTER(tskid)
+#endif /* LOG_CAN_ACT_ENTER */
+
+#ifndef LOG_CAN_ACT_LEAVE
+#define LOG_CAN_ACT_LEAVE(ercd)
+#endif /* LOG_CAN_ACT_LEAVE */
+
+#ifndef LOG_EXT_TSK_ENTER
+#define LOG_EXT_TSK_ENTER()
+#endif /* LOG_EXT_TSK_ENTER */
+
+#ifndef LOG_EXT_TSK_LEAVE
+#define LOG_EXT_TSK_LEAVE(ercd)
+#endif /* LOG_EXT_TSK_LEAVE */
+
+#ifndef LOG_TER_TSK_ENTER
+#define LOG_TER_TSK_ENTER(tskid)
+#endif /* LOG_TER_TSK_ENTER */
+
+#ifndef LOG_TER_TSK_LEAVE
+#define LOG_TER_TSK_LEAVE(ercd)
+#endif /* LOG_TER_TSK_LEAVE */
+
+#ifndef LOG_CHG_PRI_ENTER
+#define LOG_CHG_PRI_ENTER(tskid, tskpri)
+#endif /* LOG_CHG_PRI_ENTER */
+
+#ifndef LOG_CHG_PRI_LEAVE
+#define LOG_CHG_PRI_LEAVE(ercd)
+#endif /* LOG_CHG_PRI_LEAVE */
+
+#ifndef LOG_GET_PRI_ENTER
+#define LOG_GET_PRI_ENTER(tskid, p_tskpri)
+#endif /* LOG_GET_PRI_ENTER */
+
+#ifndef LOG_GET_PRI_LEAVE
+#define LOG_GET_PRI_LEAVE(ercd, tskpri)
+#endif /* LOG_GET_PRI_LEAVE */
+
+#ifndef LOG_GET_INF_ENTER
+#define LOG_GET_INF_ENTER(p_exinf)
+#endif /* LOG_GET_INF_ENTER */
+
+#ifndef LOG_GET_INF_LEAVE
+#define LOG_GET_INF_LEAVE(ercd, exinf)
+#endif /* LOG_GET_INF_LEAVE */
+
+/*
+ *  ^XNÌN®
+ */
+#ifdef TOPPERS_act_tsk
+
+ER
+act_tsk(ID tskid)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_ACT_TSK_ENTER(tskid);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID_SELF(tskid);
+	p_tcb = get_tcb_self(tskid);
+
+	t_lock_cpu();
+	if (TSTAT_DORMANT(p_tcb->tstat)) {
+		if (make_active(p_tcb)) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else if (!(p_tcb->actque)) {
+		p_tcb->actque = true;
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_QOVR;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_ACT_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_act_tsk */
+
+/*
+ *  ^XNÌN®iñ^XNReLXgpj
+ */
+#ifdef TOPPERS_iact_tsk
+
+ER
+iact_tsk(ID tskid)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_IACT_TSK_ENTER(tskid);
+	CHECK_INTCTX_UNL();
+	CHECK_TSKID(tskid);
+	p_tcb = get_tcb(tskid);
+
+	i_lock_cpu();
+	if (TSTAT_DORMANT(p_tcb->tstat)) {
+		if (make_active(p_tcb)) {
+			reqflg = true;
+		}
+		ercd = E_OK;
+	}
+	else if (!(p_tcb->actque)) {
+		p_tcb->actque = true;
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_QOVR;
+	}
+	i_unlock_cpu();
+
+  error_exit:
+	LOG_IACT_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_iact_tsk */
+
+/*
+ *  ^XNN®vÌLZ
+ */
+#ifdef TOPPERS_can_act
+
+ER_UINT
+can_act(ID tskid)
+{
+	TCB		*p_tcb;
+	ER_UINT	ercd;
+
+	LOG_CAN_ACT_ENTER(tskid);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID_SELF(tskid);
+	p_tcb = get_tcb_self(tskid);
+
+	t_lock_cpu();
+	ercd = p_tcb->actque ? 1 : 0;
+	p_tcb->actque = false;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_CAN_ACT_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_can_act */
+
+/*
+ *  ©^XNÌI¹
+ */
+#ifdef TOPPERS_ext_tsk
+
+ER
+ext_tsk(void)
+{
+	ER		ercd;
+
+	LOG_EXT_TSK_ENTER();
+	CHECK_TSKCTX();
+
+	if (t_sense_lock()) {
+		/*
+		 *  CPUbNóÔÅext_tskªÄÎê½êÍCCPUbNððµ
+		 *  Ä©ç^XNðI¹·éDÀãÍCT[rXR[àÅÌCPU
+		 *  bNðÈª·êÎæ¢¾¯D
+		 */
+	}
+	else {
+		t_lock_cpu();
+	}
+	if (disdsp) {
+		/*
+		 *  fBXpb`Ö~óÔÅext_tskªÄÎê½êÍCfBXpb
+		 *  `ÂóÔÉµÄ©ç^XNðI¹·éD
+		 */
+		disdsp = false;
+	}
+	if (!ipmflg) {
+		/*
+		 *  ÝDæx}XNiIPMjªTIPM_ENAALLÈOÌóÔÅext_tsk
+		 *  ªÄÎê½êÍCIPMðTIPM_ENAALLÉµÄ©ç^XNðI¹·
+		 *  éD
+		 */
+		t_set_ipm(TIPM_ENAALL);
+		ipmflg = true;
+	}
+	dspflg = true;
+
+	(void) make_non_runnable(p_runtsk);
+	make_dormant(p_runtsk);
+	if (p_runtsk->actque) {
+		p_runtsk->actque = false;
+		(void) make_active(p_runtsk);
+	}
+	exit_and_dispatch();
+	ercd = E_SYS;
+
+  error_exit:
+	LOG_EXT_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ext_tsk */
+
+/*
+ *  ^XNÌ­§I¹
+ */
+#ifdef TOPPERS_ter_tsk
+
+ER
+ter_tsk(ID tskid)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_TER_TSK_ENTER(tskid);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID(tskid);
+	p_tcb = get_tcb(tskid);
+	CHECK_NONSELF(p_tcb);
+
+	t_lock_cpu();
+	if (TSTAT_DORMANT(p_tcb->tstat)) {
+		ercd = E_OBJ;
+	}
+	else {
+		if (TSTAT_RUNNABLE(p_tcb->tstat)) {
+			/*
+			 *  p_tcbÍ©^XNÅÈ¢½ßCiVOvZbTÅÍjÀ
+			 *  sóÔÅÈ­Cmake_non_runnable(p_tcb)Å^XNfBXpb
+			 *  `ªKvÉÈé±ÆÍÈ¢D
+			 */
+			(void) make_non_runnable(p_tcb);
+		}
+		else if (TSTAT_WAITING(p_tcb->tstat)) {
+			wait_dequeue_wobj(p_tcb);
+			wait_dequeue_tmevtb(p_tcb);
+		}
+		make_dormant(p_tcb);
+		if (p_tcb->actque) {
+			p_tcb->actque = false;
+			if (make_active(p_tcb)) {
+				dispatch();
+			}
+		}
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_TER_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ter_tsk */
+
+/*
+ *  ^XNÌx[XDæxÌÏX
+ */
+#ifdef TOPPERS_chg_pri
+
+ER
+chg_pri(ID tskid, PRI tskpri)
+{
+	TCB		*p_tcb;
+	uint_t	newpri;
+	ER		ercd;
+
+	LOG_CHG_PRI_ENTER(tskid, tskpri);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID_SELF(tskid);
+	CHECK_TPRI_INI(tskpri);
+	p_tcb = get_tcb_self(tskid);
+	newpri = (tskpri == TPRI_INI) ? p_tcb->p_tinib->ipriority
+										: INT_PRIORITY(tskpri);
+
+	t_lock_cpu();
+	if (TSTAT_DORMANT(p_tcb->tstat)) {
+		ercd = E_OBJ;
+	}
+	else {
+		if (change_priority(p_tcb, newpri)) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_CHG_PRI_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_chg_pri */
+
+/*
+ *  ^XNDæxÌQÆ
+ */
+#ifdef TOPPERS_get_pri
+
+ER
+get_pri(ID tskid, PRI *p_tskpri)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_GET_PRI_ENTER(tskid, p_tskpri);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID_SELF(tskid);
+	p_tcb = get_tcb_self(tskid);
+
+	t_lock_cpu();
+	if (TSTAT_DORMANT(p_tcb->tstat)) {
+		ercd = E_OBJ;
+	}
+	else {
+		*p_tskpri = EXT_TSKPRI(p_tcb->priority);
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_GET_PRI_LEAVE(ercd, *p_tskpri);
+	return(ercd);
+}
+
+#endif /* TOPPERS_get_pri */
+
+/*
+ *  ©^XNÌg£îñÌQÆ
+ */
+#ifdef TOPPERS_get_inf
+
+ER
+get_inf(intptr_t *p_exinf)
+{
+	ER		ercd;
+
+	LOG_GET_INF_ENTER(p_exinf);
+	CHECK_TSKCTX_UNL();
+
+	t_lock_cpu();
+	*p_exinf = p_runtsk->p_tinib->exinf;
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_GET_INF_LEAVE(ercd, *p_exinf);
+	return(ercd);
+}
+
+#endif /* TOPPERS_get_inf */
Index: /asp_ewarm/asp-1.7.0/kernel/task_refer.c
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/task_refer.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/task_refer.c	(revision 61)
@@ -0,0 +1,210 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2005-2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: task_refer.c 1016 2008-05-10 08:42:16Z ertl-hiro $
+ */
+
+/*
+ *		^XNÌóÔQÆ@\
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+#include "semaphore.h"
+#include "eventflag.h"
+#include "dataqueue.h"
+#include "pridataq.h"
+#include "mailbox.h"
+#include "mempfix.h"
+#include "time_event.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_REF_TSK_ENTER
+#define LOG_REF_TSK_ENTER(tskid, pk_rtsk)
+#endif /* LOG_REF_TSK_ENTER */
+
+#ifndef LOG_REF_TSK_LEAVE
+#define LOG_REF_TSK_LEAVE(ercd, pk_rtsk)
+#endif /* LOG_REF_TSK_LEAVE */
+
+/*
+ *  ^XNÌóÔQÆ
+ */
+#ifdef TOPPERS_ref_tsk
+
+ER
+ref_tsk(ID tskid, T_RTSK *pk_rtsk)
+{
+	TCB		*p_tcb;
+	uint_t	tstat;
+	ER		ercd;
+
+	LOG_REF_TSK_ENTER(tskid, pk_rtsk);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID_SELF(tskid);
+	p_tcb = get_tcb_self(tskid);
+
+	t_lock_cpu();
+	tstat = p_tcb->tstat;
+	if (TSTAT_DORMANT(tstat)) {
+		/*
+ 		 *  ÎÛ^XNªx~óÔÌê
+		 */
+		pk_rtsk->tskstat = TTS_DMT;
+	}
+	else {
+		/*
+ 		 *  ^XNóÔÌæoµ
+		 */
+		if (TSTAT_SUSPENDED(tstat)) {
+			if (TSTAT_WAITING(tstat)) {
+				pk_rtsk->tskstat = TTS_WAS;
+			}
+			else {
+				pk_rtsk->tskstat = TTS_SUS;
+			}
+		}
+		else if (TSTAT_WAITING(tstat)) {
+			pk_rtsk->tskstat = TTS_WAI;
+		}
+		else if (p_tcb == p_runtsk) {
+			pk_rtsk->tskstat = TTS_RUN;
+		}
+		else {
+			pk_rtsk->tskstat = TTS_RDY;
+		}
+
+		/*
+ 		 *  »ÝDæxÆx[XDæxÌæoµ
+		 */
+		pk_rtsk->tskpri = EXT_TSKPRI(p_tcb->priority);
+		pk_rtsk->tskbpri = EXT_TSKPRI(p_tcb->priority);
+
+		if (TSTAT_WAITING(tstat)) {
+			/*
+	 		 *  Ò¿vöÆÒ¿ÎÛÌIuWFNgÌIDÌæoµ
+			 */
+			switch (tstat & TS_WAIT_MASK) {
+			case TS_WAIT_SLP:
+				pk_rtsk->tskwait = TTW_SLP;
+				break;
+			case TS_WAIT_DLY:
+				pk_rtsk->tskwait = TTW_DLY;
+				break;
+			case TS_WAIT_SEM:
+				pk_rtsk->tskwait = TTW_SEM;
+				pk_rtsk->wobjid = SEMID(((WINFO_SEM *)(p_tcb->p_winfo))
+																->p_semcb);
+				break;
+			case TS_WAIT_FLG:
+				pk_rtsk->tskwait = TTW_FLG;
+				pk_rtsk->wobjid = FLGID(((WINFO_FLG *)(p_tcb->p_winfo))
+																->p_flgcb);
+				break;
+			case TS_WAIT_SDTQ:
+				pk_rtsk->tskwait = TTW_SDTQ;
+				pk_rtsk->wobjid = DTQID(((WINFO_DTQ *)(p_tcb->p_winfo))
+																->p_dtqcb);
+				break;
+			case TS_WAIT_RDTQ:
+				pk_rtsk->tskwait = TTW_RDTQ;
+				pk_rtsk->wobjid = DTQID(((WINFO_DTQ *)(p_tcb->p_winfo))
+																->p_dtqcb);
+				break;
+			case TS_WAIT_SPDQ:
+				pk_rtsk->tskwait = TTW_SPDQ;
+				pk_rtsk->wobjid = PDQID(((WINFO_PDQ *)(p_tcb->p_winfo))
+																->p_pdqcb);
+				break;
+			case TS_WAIT_RPDQ:
+				pk_rtsk->tskwait = TTW_RPDQ;
+				pk_rtsk->wobjid = PDQID(((WINFO_PDQ *)(p_tcb->p_winfo))
+																->p_pdqcb);
+				break;
+			case TS_WAIT_MBX:
+				pk_rtsk->tskwait = TTW_MBX;
+				pk_rtsk->wobjid = MBXID(((WINFO_MBX *)(p_tcb->p_winfo))
+																->p_mbxcb);
+				break;
+			case TS_WAIT_MPF:
+				pk_rtsk->tskwait = TTW_MPF;
+				pk_rtsk->wobjid = MPFID(((WINFO_MPF *)(p_tcb->p_winfo))
+																->p_mpfcb);
+				break;
+			}
+
+			/*
+	 		 *  ^CAEg·éÜÅÌÔÌæoµ
+			 */
+			if (p_tcb->p_winfo->p_tmevtb != NULL) {
+				pk_rtsk->lefttmo
+						= (TMO) tmevt_lefttim(p_tcb->p_winfo->p_tmevtb);
+			}
+			else {
+				pk_rtsk->lefttmo = TMO_FEVR;
+			}
+		}
+
+		/*
+ 		 *  N°vL
+[COÌæoµ
+		 */
+		pk_rtsk->wupcnt = p_tcb->wupque ? 1U : 0U;
+	}
+
+	/*
+	 *  N®vL
+[COÌæoµ
+	 */
+	pk_rtsk->actcnt = p_tcb->actque ? 1U : 0U;
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_REF_TSK_LEAVE(ercd, pk_rtsk);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ref_tsk */
Index: /asp_ewarm/asp-1.7.0/kernel/task_sync.c
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/task_sync.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/task_sync.c	(revision 61)
@@ -0,0 +1,535 @@
+/*
+ *  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-2009 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: task_sync.c 1453 2009-02-18 09:09:34Z ertl-hiro $
+ */
+
+/*
+ *		^XNt®¯ú@\
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_SLP_TSK_ENTER
+#define LOG_SLP_TSK_ENTER()
+#endif /* LOG_SLP_TSK_ENTER */
+
+#ifndef LOG_SLP_TSK_LEAVE
+#define LOG_SLP_TSK_LEAVE(ercd)
+#endif /* LOG_SLP_TSK_LEAVE */
+
+#ifndef LOG_TSLP_TSK_ENTER
+#define LOG_TSLP_TSK_ENTER(tmout)
+#endif /* LOG_TSLP_TSK_ENTER */
+
+#ifndef LOG_TSLP_TSK_LEAVE
+#define LOG_TSLP_TSK_LEAVE(ercd)
+#endif /* LOG_TSLP_TSK_LEAVE */
+
+#ifndef LOG_WUP_TSK_ENTER
+#define LOG_WUP_TSK_ENTER(tskid)
+#endif /* LOG_WUP_TSK_ENTER */
+
+#ifndef LOG_WUP_TSK_LEAVE
+#define LOG_WUP_TSK_LEAVE(ercd)
+#endif /* LOG_WUP_TSK_LEAVE */
+
+#ifndef LOG_IWUP_TSK_ENTER
+#define LOG_IWUP_TSK_ENTER(tskid)
+#endif /* LOG_IWUP_TSK_ENTER */
+
+#ifndef LOG_IWUP_TSK_LEAVE
+#define LOG_IWUP_TSK_LEAVE(ercd)
+#endif /* LOG_IWUP_TSK_LEAVE */
+
+#ifndef LOG_CAN_WUP_ENTER
+#define LOG_CAN_WUP_ENTER(tskid)
+#endif /* LOG_CAN_WUP_ENTER */
+
+#ifndef LOG_CAN_WUP_LEAVE
+#define LOG_CAN_WUP_LEAVE(ercd)
+#endif /* LOG_CAN_WUP_LEAVE */
+
+#ifndef LOG_REL_WAI_ENTER
+#define LOG_REL_WAI_ENTER(tskid)
+#endif /* LOG_REL_WAI_ENTER */
+
+#ifndef LOG_REL_WAI_LEAVE
+#define LOG_REL_WAI_LEAVE(ercd)
+#endif /* LOG_REL_WAI_LEAVE */
+
+#ifndef LOG_IREL_WAI_ENTER
+#define LOG_IREL_WAI_ENTER(tskid)
+#endif /* LOG_IREL_WAI_ENTER */
+
+#ifndef LOG_IREL_WAI_LEAVE
+#define LOG_IREL_WAI_LEAVE(ercd)
+#endif /* LOG_IREL_WAI_LEAVE */
+
+#ifndef LOG_SUS_TSK_ENTER
+#define LOG_SUS_TSK_ENTER(tskid)
+#endif /* LOG_SUS_TSK_ENTER */
+
+#ifndef LOG_SUS_TSK_LEAVE
+#define LOG_SUS_TSK_LEAVE(ercd)
+#endif /* LOG_SUS_TSK_LEAVE */
+
+#ifndef LOG_RSM_TSK_ENTER
+#define LOG_RSM_TSK_ENTER(tskid)
+#endif /* LOG_RSM_TSK_ENTER */
+
+#ifndef LOG_RSM_TSK_LEAVE
+#define LOG_RSM_TSK_LEAVE(ercd)
+#endif /* LOG_RSM_TSK_LEAVE */
+
+#ifndef LOG_DLY_TSK_ENTER
+#define LOG_DLY_TSK_ENTER(dlytim)
+#endif /* LOG_DLY_TSK_ENTER */
+
+#ifndef LOG_DLY_TSK_LEAVE
+#define LOG_DLY_TSK_LEAVE(ercd)
+#endif /* LOG_DLY_TSK_LEAVE */
+
+/*
+ *  N°Ò¿
+ */
+#ifdef TOPPERS_slp_tsk
+
+ER
+slp_tsk(void)
+{
+	WINFO	winfo;
+	ER		ercd;
+
+	LOG_SLP_TSK_ENTER();
+	CHECK_DISPATCH();
+
+	t_lock_cpu();
+	if (p_runtsk->wupque) {
+		p_runtsk->wupque = false;
+		ercd = E_OK;
+	}
+	else {
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_SLP);
+		make_wait(&winfo);
+		LOG_TSKSTAT(p_runtsk);
+		dispatch();
+		ercd = winfo.wercd;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_SLP_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_slp_tsk */
+
+/*
+ *  N°Ò¿i^CAEg èj
+ */
+#ifdef TOPPERS_tslp_tsk
+
+ER
+tslp_tsk(TMO tmout)
+{
+	WINFO	winfo;
+	TMEVTB	tmevtb;
+	ER		ercd;
+
+	LOG_TSLP_TSK_ENTER(tmout);
+	CHECK_DISPATCH();
+	CHECK_TMOUT(tmout);
+
+	t_lock_cpu();
+	if (p_runtsk->wupque) {
+		p_runtsk->wupque = false;
+		ercd = E_OK;
+	}
+	else if (tmout == TMO_POL) {
+		ercd = E_TMOUT;
+	}
+	else {
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_SLP);
+		make_wait_tmout(&winfo, &tmevtb, tmout);
+		LOG_TSKSTAT(p_runtsk);
+		dispatch();
+		ercd = winfo.wercd;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_TSLP_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_tslp_tsk */
+
+/*
+ *  ^XNÌN°
+ */
+#ifdef TOPPERS_wup_tsk
+
+ER
+wup_tsk(ID tskid)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_WUP_TSK_ENTER(tskid);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID_SELF(tskid);
+	p_tcb = get_tcb_self(tskid);
+
+	t_lock_cpu();
+	if (TSTAT_DORMANT(p_tcb->tstat)) {
+		ercd = E_OBJ;
+	}
+	else if (TSTAT_WAIT_SLP(p_tcb->tstat)) {
+		if (wait_complete(p_tcb)) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else if (!(p_tcb->wupque)) {
+		p_tcb->wupque = true;
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_QOVR;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_WUP_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_wup_tsk */
+
+/*
+ *  ^XNÌN°iñ^XNReLXgpj
+ */
+#ifdef TOPPERS_iwup_tsk
+
+ER
+iwup_tsk(ID tskid)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_IWUP_TSK_ENTER(tskid);
+	CHECK_INTCTX_UNL();
+	CHECK_TSKID(tskid);
+	p_tcb = get_tcb(tskid);
+
+	i_lock_cpu();
+	if (TSTAT_DORMANT(p_tcb->tstat)) {
+		ercd = E_OBJ;
+	}
+	else if (TSTAT_WAIT_SLP(p_tcb->tstat)) {
+		if (wait_complete(p_tcb)) {
+			reqflg = true;
+		}
+		ercd = E_OK;
+	}
+	else if (!(p_tcb->wupque)) {
+		p_tcb->wupque = true;
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_QOVR;
+	}
+	i_unlock_cpu();
+
+  error_exit:
+	LOG_IWUP_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_iwup_tsk */
+
+/*
+ *  ^XNN°vÌLZ
+ */
+#ifdef TOPPERS_can_wup
+
+ER_UINT
+can_wup(ID tskid)
+{
+	TCB		*p_tcb;
+	ER_UINT	ercd;
+
+	LOG_CAN_WUP_ENTER(tskid);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID_SELF(tskid);
+	p_tcb = get_tcb_self(tskid);
+
+	t_lock_cpu();
+	if (TSTAT_DORMANT(p_tcb->tstat)) {
+		ercd = E_OBJ;
+	}
+	else {
+		ercd = p_tcb->wupque ? 1 : 0;
+		p_tcb->wupque = false;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_CAN_WUP_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_can_wup */
+
+/*
+ *  Ò¿óÔÌ­§ð
+ */
+#ifdef TOPPERS_rel_wai
+
+ER
+rel_wai(ID tskid)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_REL_WAI_ENTER(tskid);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID(tskid);
+	p_tcb = get_tcb(tskid);
+
+	t_lock_cpu();
+	if (!TSTAT_WAITING(p_tcb->tstat)) {
+		ercd = E_OBJ;
+	}
+	else {
+		if (wait_release(p_tcb)) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_REL_WAI_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_rel_wai */
+
+/*
+ *  Ò¿óÔÌ­§ðiñ^XNReLXgpj
+ */
+#ifdef TOPPERS_irel_wai
+
+ER
+irel_wai(ID tskid)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_IREL_WAI_ENTER(tskid);
+	CHECK_INTCTX_UNL();
+	CHECK_TSKID(tskid);
+	p_tcb = get_tcb(tskid);
+
+	i_lock_cpu();
+	if (!TSTAT_WAITING(p_tcb->tstat)) {
+		ercd = E_OBJ;
+	}
+	else {
+		if (wait_release(p_tcb)) {
+			reqflg = true;
+		}
+		ercd = E_OK;
+	}
+	i_unlock_cpu();
+
+  error_exit:
+	LOG_IREL_WAI_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_irel_wai */
+
+/*
+ *  ­§Ò¿óÔÖÌÚs
+ */
+#ifdef TOPPERS_sus_tsk
+
+ER
+sus_tsk(ID tskid)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_SUS_TSK_ENTER(tskid);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID_SELF(tskid);
+	p_tcb = get_tcb_self(tskid);
+
+	t_lock_cpu();
+	if (p_tcb == p_runtsk && !dspflg) {
+		ercd = E_CTX;
+	}
+	else if (TSTAT_DORMANT(p_tcb->tstat)) {
+		ercd = E_OBJ;
+	}
+	else if (TSTAT_RUNNABLE(p_tcb->tstat)) {
+		/*
+		 *  ÀsÅ«éóÔ©ç­§Ò¿óÔÖÌJÚ
+		 */
+		p_tcb->tstat = TS_SUSPENDED;
+		LOG_TSKSTAT(p_tcb);
+		if (make_non_runnable(p_tcb)) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else if (TSTAT_SUSPENDED(p_tcb->tstat)) {
+		ercd = E_QOVR;
+	}
+	else {
+		/*
+		 *  Ò¿óÔ©çñdÒ¿óÔÖÌJÚ
+		 */
+		p_tcb->tstat |= TS_SUSPENDED;
+		LOG_TSKSTAT(p_tcb);
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_SUS_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_sus_tsk */
+
+/*
+ *  ­§Ò¿óÔ©çÌÄJ
+ */
+#ifdef TOPPERS_rsm_tsk
+
+ER
+rsm_tsk(ID tskid)
+{
+	TCB		*p_tcb;
+	ER		ercd;
+
+	LOG_RSM_TSK_ENTER(tskid);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID(tskid);
+	p_tcb = get_tcb(tskid);
+
+	t_lock_cpu();
+	if (!TSTAT_SUSPENDED(p_tcb->tstat)) {
+		ercd = E_OBJ;
+	}
+	else if (!TSTAT_WAITING(p_tcb->tstat)) {
+		/*
+		 *  ­§Ò¿óÔ©çÀsÅ«éóÔÖÌJÚ
+		 */
+		p_tcb->tstat = TS_RUNNABLE;
+		LOG_TSKSTAT(p_tcb);
+		if (make_runnable(p_tcb)) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else {
+		/*
+		 *  ñdÒ¿óÔ©çÒ¿óÔÖÌJÚ
+		 */
+		p_tcb->tstat &= ~TS_SUSPENDED;
+		LOG_TSKSTAT(p_tcb);
+		ercd = E_OK;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_RSM_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_rsm_tsk */
+
+/*
+ *  ©^XNÌx
+ */
+#ifdef TOPPERS_dly_tsk
+
+ER
+dly_tsk(RELTIM dlytim)
+{
+	WINFO	winfo;
+	TMEVTB	tmevtb;
+	ER		ercd;
+
+	LOG_DLY_TSK_ENTER(dlytim);
+	CHECK_DISPATCH();
+	CHECK_PAR(dlytim <= TMAX_RELTIM);
+
+	t_lock_cpu();
+	p_runtsk->tstat = (TS_WAITING | TS_WAIT_DLY);
+	(void) make_non_runnable(p_runtsk);
+	p_runtsk->p_winfo = &winfo;
+	winfo.p_tmevtb = &tmevtb;
+	tmevtb_enqueue(&tmevtb, dlytim, (CBACK) wait_tmout_ok, (void *) p_runtsk);
+	LOG_TSKSTAT(p_runtsk);
+	dispatch();
+	ercd = winfo.wercd;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_DLY_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_dly_tsk */
Index: /asp_ewarm/asp-1.7.0/kernel/time_event.c
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/time_event.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/time_event.c	(revision 61)
@@ -0,0 +1,405 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  $Id: time_event.c 1747 2010-02-11 18:24:19Z ertl-hiro $
+ */
+
+/*
+ *		^CCxgÇW
+[
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "time_event.h"
+
+/*
+ *  ^CCxgq[vì}N
+ */
+#define	PARENT(index)		((index) >> 1)		/* em[hðßé */
+#define	LCHILD(index)		((index) << 1)		/* ¶Ìqm[hðßé */
+#define	TMEVT_NODE(index)	(tmevt_heap[(index) - 1])
+
+/*
+ *  Cxg­¶är}N
+ *
+ *  Cxg­¶ÍCmin_time©çÌÎlÅär·éD·Èí¿C
+ *  min_timeðÅ¬liÅàß¢jCmit_time-1ªÅåliÅà¢j
+ *  ÆÝÈµÄär·éD
+ */
+#define	EVTTIM_LT(t1, t2) (((t1) - min_time) < ((t2) - min_time))
+#define	EVTTIM_LE(t1, t2) (((t1) - min_time) <= ((t2) - min_time))
+
+#ifdef TOPPERS_tmeini
+
+/*
+ *  »ÝÌVXeiPÊ: 1~bj
+ *
+ *  µ§ÉÍCOÌ^CeBbNÌVXeD
+ */
+EVTTIM	current_time;
+
+/*
+ *  ^CCxgq[vÅLøÈÅ¬ÌVXeiPÊ: 1~bj
+ */
+EVTTIM	min_time;
+
+/*
+ *  Ì^CeBbNÌVXeiPÊ: 1~bj
+ */
+EVTTIM	next_time;
+
+/*
+ *  VXeÏZpÏiPÊ: 1/TIC_DENO~bj
+ */
+#if TIC_DENO != 1U
+uint_t	next_subtime;
+#endif /* TIC_DENO != 1U */
+
+/*
+ *  ^CCxgq[vÌÅãÌgpÌæÌCfbNX
+ */
+uint_t	last_index;
+
+/*
+ *  ^C}W
+[Ìú»
+ */
+void
+initialize_tmevt(void)
+{
+	current_time = min_time = 0U;
+	next_time = current_time + TIC_NUME / TIC_DENO;
+#if TIC_DENO != 1U
+	next_subtime = TIC_NUME % TIC_DENO;
+#endif /* TIC_DENO != 1U */
+	last_index = 0U;
+}
+
+#endif /* TOPPERS_tmeini */
+
+/*
+ *  ^CCxgÌ}üÊuðãü«ÉTõ
+ *
+ *  timeÉ­¶·é^CCxgð}ü·ém[hðó¯é½ßÉC
+ *  q[vÌãÉü©ÁÄóm[hðÚ®³¹éDÚ®OÌóm[hÌÊuð
+ *  indexÉn·ÆCÚ®ãÌóm[hÌÊui·Èí¿}üÊujðÔ·D
+ */
+#ifdef TOPPERS_tmeup
+
+uint_t
+tmevt_up(uint_t index, EVTTIM time)
+{
+	uint_t	parent;
+
+	while (index > 1) {
+		/*
+		 *  em[hÌCxg­¶Ìûª¢iÜ½Í¯¶jÈçÎC
+		 *  indexª}üÊuÈÌÅ[vð²¯éD
+		 */
+		parent = PARENT(index);
+		if (EVTTIM_LE(TMEVT_NODE(parent).time, time)) {
+			break;
+		}
+
+		/*
+		 *  em[hðindexÌÊuÉÚ®³¹éD
+		 */
+		TMEVT_NODE(index) = TMEVT_NODE(parent);
+		TMEVT_NODE(index).p_tmevtb->index = index;
+
+		/*
+		 *  indexðem[hÌÊuÉXVD
+		 */
+		index = parent;
+	}
+	return(index);
+}
+
+#endif /* TOPPERS_tmeup */
+
+/*
+ *  ^CCxgÌ}üÊuðºü«ÉTõ
+ *
+ *  timeÉ­¶·é^CCxgð}ü·ém[hðó¯é½ßÉC
+ *  q[vÌºÉü©ÁÄóm[hðÚ®³¹éDÚ®OÌóm[hÌÊuð 
+ *  indexÉn·ÆCÚ®ãÌóm[hÌÊui·Èí¿}üÊujðÔ·D
+ */
+#ifdef TOPPERS_tmedown
+
+uint_t
+tmevt_down(uint_t index, EVTTIM time)
+{
+	uint_t	child;
+
+	while ((child = LCHILD(index)) <= last_index) {
+		/*
+		 *  ¶EÌqm[hÌCxg­¶ðärµC¢ûÌqm[h
+		 *  ÌÊuðchildÉÝè·éDÈºÌqm[hÍC±±ÅIÎê½û
+		 *  Ìqm[hÌ±ÆD
+		 */
+		if (child + 1 <= last_index
+						&& EVTTIM_LT(TMEVT_NODE(child + 1).time,
+										TMEVT_NODE(child).time)) {
+			child = child + 1;
+		}
+
+		/*
+		 *  qm[hÌCxg­¶Ìûªx¢iÜ½Í¯¶jÈçÎC
+		 *  indexª}üÊuÈÌÅ[vð²¯éD
+		 */
+		if (EVTTIM_LE(time, TMEVT_NODE(child).time)) {
+			break;
+		}
+
+		/*
+		 *  qm[hðindexÌÊuÉÚ®³¹éD
+		 */
+		TMEVT_NODE(index) = TMEVT_NODE(child);
+		TMEVT_NODE(index).p_tmevtb->index = index;
+
+		/*
+		 *  indexðqm[hÌÊuÉXVD
+		 */
+		index = child;
+	}
+	return(index);
+}
+
+#endif /* TOPPERS_tmedown */
+
+/*
+ *  ^CCxgq[vÖÌo^
+ *
+ *  p_tmevtbÅwèµ½^CCxgubNðCtimeÅwèµ½Ôªo
+ *  ßãÉCxgª­¶·éæ¤ÉC^CCxgq[vÉo^·éD
+ */
+#ifdef TOPPERS_tmeins
+
+void
+tmevtb_insert(TMEVTB *p_tmevtb, EVTTIM time)
+{
+	uint_t	index;
+
+	/*
+	 *  last_indexðCNgµC»±©çãÉ}üÊuðT·D
+	 */
+	index = tmevt_up(++last_index, time);
+
+	/*
+	 *  ^CCxgðindexÌÊuÉ}ü·éD
+	 */ 
+	TMEVT_NODE(index).time = time;
+	TMEVT_NODE(index).p_tmevtb = p_tmevtb;
+	p_tmevtb->index = index;
+}
+
+#endif /* TOPPERS_tmeins */
+
+/*
+ *  ^CCxgq[v©çÌí
+ */
+#ifdef TOPPERS_tmedel
+
+void
+tmevtb_delete(TMEVTB *p_tmevtb)
+{
+	uint_t	index = p_tmevtb->index;
+	uint_t	parent;
+	EVTTIM	event_time = TMEVT_NODE(last_index).time;
+
+	/*
+	 *  íÉæè^CCxgq[vªóÉÈéêÍ½àµÈ¢D
+	 */
+	if (--last_index == 0) {
+		return;
+	}
+
+	/*
+	 *  íµ½m[hÌÊuÉÅãÌm[hilast_index+1ÌÊuÌm[hj
+	 *  ð}üµC»êðKØÈÊuÖÚ®³¹éDÀÛÉÍCÅãÌm[h
+	 *  ðÀÛÉ}ü·éÌÅÍÈ­Cíµ½m[hÌÊuªóm[hÉÈ
+	 *  éÌÅCÅãÌm[hð}ü·×«ÊuÖü¯Äóm[hðÚ®³¹
+	 *  éD
+	 *  ÅãÌm[hÌCxg­¶ªCíµ½m[hÌem[hÌC
+	 *  xg­¶æèOÌêÉÍCãÉü©ÁÄ}üÊuðT·D»
+	 *  ¤ÅÈ¢êÉÍCºÉü©ÁÄT·D
+	 */
+	if (index > 1 && EVTTIM_LT(event_time,
+								TMEVT_NODE(parent = PARENT(index)).time)) {
+		/*
+		 *  em[hðindexÌÊuÉÚ®³¹éD
+		 */
+		TMEVT_NODE(index) = TMEVT_NODE(parent);
+		TMEVT_NODE(index).p_tmevtb->index = index;
+
+		/*
+		 *  íµ½m[hÌem[h©çãÉü©ÁÄ}üÊuðT·D
+		 */
+		index = tmevt_up(parent, event_time);
+	}
+	else {
+		/*
+		 *  íµ½m[h©çºÉü©ÁÄ}üÊuðT·D
+		 */
+		index = tmevt_down(index, event_time);
+	}
+
+	/*
+	 *  ÅãÌm[hðindexÌÊuÉ}ü·éD
+	 */ 
+	TMEVT_NODE(index) = TMEVT_NODE(last_index + 1);
+	TMEVT_NODE(index).p_tmevtb->index = index;
+}
+
+#endif /* TOPPERS_tmedel */
+
+/*
+ *  ^CCxgq[vÌæªÌm[hÌí
+ */
+Inline void
+tmevtb_delete_top(void)
+{
+	uint_t	index;
+	EVTTIM	event_time = TMEVT_NODE(last_index).time;
+
+	/*
+	 *  íÉæè^CCxgq[vªóÉÈéêÍ½àµÈ¢D
+	 */
+	if (--last_index == 0) {
+		return;
+	}
+
+	/*
+	 *  [gm[hÉÅãÌm[hilast_index + 1 ÌÊuÌm[hjð
+	 *  }üµC»êðKØÈÊuÖÚ®³¹éDÀÛÉÍCÅãÌm[hð
+	 *  ÀÛÉ}ü·éÌÅÍÈ­C[gm[hªóm[hÉÈéÌÅCÅ
+	 *  ãÌm[hð}ü·×«ÊuÖü¯Äóm[hðÚ®³¹éD
+	 */
+	index = tmevt_down(1, event_time);
+
+	/*
+	 *  ÅãÌm[hðindexÌÊuÉ}ü·éD
+	 */ 
+	TMEVT_NODE(index) = TMEVT_NODE(last_index + 1);
+	TMEVT_NODE(index).p_tmevtb->index = index;
+}
+
+/*
+ *  ^CCxgÜÅÌcèÔÌvZ
+ */
+#ifdef TOPPERS_tmeltim
+
+RELTIM
+tmevt_lefttim(TMEVTB *p_tmevtb)
+{
+	EVTTIM	time;
+
+	time = TMEVT_NODE(p_tmevtb->index).time;
+	if (EVTTIM_LE(time, next_time)) {
+		/*
+		 *  Ì^CeBbNÅ³êéêÉÍ0ðÔ·D
+		 */
+		return(0U);
+	}
+	else {
+		return((RELTIM)(time - base_time));
+	}
+}
+
+#endif /* TOPPERS_tmeltim */
+
+/*
+ *  ^CeBbNÌ
+ */
+#ifdef TOPPERS_sigtim
+
+void
+signal_time(void)
+{
+	TMEVTB	*p_tmevtb;
+
+	assert(sense_context());
+	assert(!i_sense_lock());
+
+	i_lock_cpu();
+
+	/*
+	 *  current_timeðXV·éD
+	 */
+	current_time = next_time;
+
+	/*
+	 *  next_timeCnext_subtimeðXV·éD
+	 */
+#if TIC_DENO == 1U
+	next_time = current_time + TIC_NUME;
+#else /* TIC_DENO == 1U */
+	next_subtime += TIC_NUME % TIC_DENO;
+	next_time = current_time + TIC_NUME / TIC_DENO;
+	if (next_subtime >= TIC_DENO) {
+		next_subtime -= TIC_DENO;
+		next_time += 1U;
+	}
+#endif /* TIC_DENO == 1U */
+
+	/*
+	 *  current_timeæèCxg­¶Ì¢iÜ½Í¯¶j^CCx
+	 *  gðC^CCxgq[v©çíµCR[obNÖðÄÑ
+	 *  o·D
+	 */
+	while (last_index > 0 && EVTTIM_LE(TMEVT_NODE(1).time, current_time)) {
+		p_tmevtb = TMEVT_NODE(1).p_tmevtb;
+		tmevtb_delete_top();
+		(*(p_tmevtb->callback))(p_tmevtb->arg);
+	}
+
+	/*
+	 *  min_timeðXV·éD
+	 */
+	min_time = current_time;
+
+	i_unlock_cpu();
+}
+
+#endif /* TOPPERS_sigtim */
Index: /asp_ewarm/asp-1.7.0/kernel/time_event.h
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/time_event.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/time_event.h	(revision 61)
@@ -0,0 +1,209 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  $Id: time_event.h 1774 2010-03-19 12:45:46Z ertl-hiro $
+ */
+
+/*
+ *		^CCxgÇW
+[
+ */
+
+#ifndef TOPPERS_TIME_EVENT_H
+#define TOPPERS_TIME_EVENT_H
+
+/*
+ *  Cxg­¶Ìf[^^Ìè`
+ *
+ *  EVTTIMÍCRELTIMÆµÄwèÅ«éÍÍæèàL¢ÍÍð\»Å«éKv
+ *  ª éDÊITRON4.0dlÌX^_[hvt@CÅÍCRELTIMª16rb
+ *  gÈãÅÈ¯êÎÈçÈ¢½ßCEVTTIMÍ17rbgÈãÅ é±ÆªKv
+ *  Å éD»Ì½ßC16rbgÉÈéêª éuint_tÅÍÈ­Culong_tÉ
+ *  è`µÄ¢éD
+ */
+typedef ulong_t	EVTTIM;
+
+/* 
+ *  ^CCxgubNÌf[^^Ìè`
+ */
+typedef void	(*CBACK)(void *);	/* R[obNÖÌ^ */
+
+typedef struct time_event_block {
+	uint_t	index;			/* ^CCxgq[vÅÌÊu */
+	CBACK	callback;		/* R[obNÖ */
+	void	*arg;			/* R[obNÖÖn·ø */
+} TMEVTB;
+
+/*
+ *  ^CCxgq[vÌm[hÌf[^^Ìè`
+ */
+typedef struct time_event_node {
+	EVTTIM	time;			/* Cxg­¶ */
+	TMEVTB	*p_tmevtb;		/* Î·é^CCxgubN */
+} TMEVTN;
+
+/*
+ *  ^CCxgq[vikernel_cfg.cj
+ */
+extern TMEVTN	tmevt_heap[];
+
+/*
+ *  »ÝÌVXeiPÊ: 1~bj
+ *
+ *  VXeN®É0Éú»³êCÈ~C^CeBbNª³êéxÉ
+ *  P²ÉÁ·éD
+ */
+extern EVTTIM	current_time;
+
+/*
+ *  ^CCxgq[vÅLøÈÅ¬ÌVXeiPÊ: 1~bj
+ */
+extern EVTTIM	min_time;
+
+/*
+ *  Ì^CeBbNÌVXeiPÊ: 1~bj
+ */
+extern EVTTIM	next_time;
+
+/*
+ *  VXeÏZpÏiPÊ: 1/TIC_DENO~bj
+ *
+ *  Ì^CeBbNÌVXeÌºÊ
+ð¦·iãÊ
+Ínext_timejD
+ *  TIC_DENOª1ÌÍCºÊ
+ÍíÉ0Å é½ßC±ÌÏÍKvÈ¢D
+ */
+#if TIC_DENO != 1U
+extern uint_t	next_subtime;
+#endif /* TIC_DENO != 1U */
+
+/*
+ *  ÎÔÌîiPÊ: 1~bj
+ *
+ *  Ì^CeBbNÌVXeðØèã°½DTIC_DENOª1Ì
+ *  ÍCnext_timeÉêv·éD
+ */
+#if TIC_DENO == 1U
+#define	base_time	(next_time)
+#else /* TIC_DENO == 1U */
+#define	base_time	(next_time + (next_subtime > 0U ? 1U : 0U))
+#endif /* TIC_DENO == 1U */
+
+/*
+ *  ^CCxgq[vÌÅãÌgpÌæÌCfbNX
+ *
+ *  ^CCxgq[vÉo^³êÄ¢é^CCxgÌÉêv·éD
+ */
+extern uint_t	last_index;
+
+/*
+ *  ^CCxgÇW
+[Ìú»
+ */
+extern void	initialize_tmevt(void);
+
+/*
+ *  ^CCxgÌ}üÊuÌTõ
+ */
+extern uint_t	tmevt_up(uint_t index, EVTTIM time);
+extern uint_t	tmevt_down(uint_t index, EVTTIM time);
+
+/*
+ *  ^CCxgq[vÖÌo^Æí
+ */
+extern void	tmevtb_insert(TMEVTB *p_tmevtb, EVTTIM time);
+extern void	tmevtb_delete(TMEVTB *p_tmevtb);
+
+/*
+ *  ^CCxgubNÌo^iÎÔwèj
+ *
+ *  timeÅwèµ½ÎÔªoßµ½ãÉCargðøÆµÄcallbackªÄ
+ *  Ño³êéæ¤ÉCp_tmevtbÅwèµ½^CCxgubNðo^·
+ *  éD
+ *  
+ */
+Inline void
+tmevtb_enqueue(TMEVTB *p_tmevtb, RELTIM time, CBACK callback, void *arg)
+{
+	assert(time <= TMAX_RELTIM);
+
+	p_tmevtb->callback = callback;
+	p_tmevtb->arg = arg;
+	tmevtb_insert(p_tmevtb, base_time + time);
+}
+
+/*
+ *  ^CCxgubNÌo^iCxg­¶wèj
+ *
+ *  timeÅwèµ½Cxg­¶ÉCargðøÆµÄcallbackªÄÑo
+ *  ³êéæ¤ÉCp_tmevtbÅwèµ½^CCxgubNðo^·éD
+ */
+Inline void
+tmevtb_enqueue_evttim(TMEVTB *p_tmevtb, EVTTIM time, CBACK callback, void *arg)
+{
+	p_tmevtb->callback = callback;
+	p_tmevtb->arg = arg;
+	tmevtb_insert(p_tmevtb, time);
+}
+
+/*
+ *  ^CCxgubNÌo^ð
+ */
+Inline void
+tmevtb_dequeue(TMEVTB *p_tmevtb)
+{
+	tmevtb_delete(p_tmevtb);
+}
+
+/*
+ *  ^CCxgÜÅÌcèÔÌvZ
+ */
+extern RELTIM	tmevt_lefttim(TMEVTB *p_tmevtb);
+
+/*
+ *  ^CeBbNÌ
+ */
+extern void	signal_time(void);
+
+#endif /* TOPPERS_TIME_EVENT_H */
Index: /asp_ewarm/asp-1.7.0/kernel/time_manage.c
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/time_manage.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/time_manage.c	(revision 61)
@@ -0,0 +1,148 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  $Id: time_manage.c 1747 2010-02-11 18:24:19Z ertl-hiro $
+ */
+
+/*
+ *		VXeÇ@\
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "time_event.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_GET_TIM_ENTER
+#define LOG_GET_TIM_ENTER(p_systim)
+#endif /* LOG_GET_TIM_ENTER */
+
+#ifndef LOG_GET_TIM_LEAVE
+#define LOG_GET_TIM_LEAVE(ercd, systim)
+#endif /* LOG_GET_TIM_LEAVE */
+
+#ifndef LOG_GET_UTM_ENTER
+#define LOG_GET_UTM_ENTER(p_sysutm)
+#endif /* LOG_GET_UTM_ENTER */
+
+#ifndef LOG_GET_UTM_LEAVE
+#define LOG_GET_UTM_LEAVE(ercd, sysutm)
+#endif /* LOG_GET_UTM_LEAVE */
+
+/*
+ *  VXeÌQÆ
+ */
+#ifdef TOPPERS_get_tim
+
+ER
+get_tim(SYSTIM *p_systim)
+{
+	ER		ercd;
+
+	LOG_GET_TIM_ENTER(p_systim);
+	CHECK_TSKCTX_UNL();
+
+	t_lock_cpu();
+	*p_systim = current_time;
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_GET_TIM_LEAVE(ercd, *p_systim);
+	return(ercd);
+}
+
+#endif /* TOPPERS_get_tim */
+
+/*
+ *  «\]¿pVXeÌQÆ
+ */
+#ifdef TOPPERS_get_utm
+#ifdef TOPPERS_SUPPORT_GET_UTM
+#ifndef OMIT_GET_UTM
+#include "target_timer.h"
+
+ER
+get_utm(SYSUTM *p_sysutm)
+{
+	SYSUTM	utime;
+	SYSTIM	time;
+#if TIC_DENO != 1
+	uint_t	subtime;
+#endif /* TIC_DENO != 1 */
+	CLOCK	clock1, clock2;
+	bool_t	ireq;
+	SIL_PRE_LOC;
+
+	LOG_GET_UTM_ENTER(p_sysutm);
+
+	SIL_LOC_INT();
+	time = next_time;
+#if TIC_DENO != 1
+	subtime = next_subtime;
+#endif /* TIC_DENO != 1 */
+	clock1 = target_timer_get_current();
+	ireq = target_timer_probe_int();
+	clock2 = target_timer_get_current();
+	SIL_UNL_INT();
+
+	utime = ((SYSUTM) time) * 1000U;
+#if TIC_DENO != 1
+	utime += subtime * 1000U / TIC_DENO;
+#endif /* TIC_DENO != 1 */
+
+	if (!ireq || clock1 > clock2) {
+		utime -= TIC_NUME * 1000U / TIC_DENO;
+	}
+	utime += TO_USEC(clock1);
+	*p_sysutm = utime;
+
+	LOG_GET_UTM_LEAVE(E_OK, *p_sysutm);
+	return(E_OK);
+}
+
+#endif /* OMIT_GET_UTM */
+#endif /* TOPPERS_SUPPORT_GET_UTM */
+#endif /* TOPPERS_get_utm */
Index: /asp_ewarm/asp-1.7.0/kernel/wait.c
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/wait.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/wait.c	(revision 61)
@@ -0,0 +1,221 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: wait.c 1841 2010-07-10 17:37:34Z ertl-hiro $
+ */
+
+/*
+ *		Ò¿óÔÇW
+[
+ */
+
+#include "kernel_impl.h"
+#include "wait.h"
+
+/*
+ *  Ò¿óÔÖÌJÚi^CAEgwèj
+ */
+#ifdef TOPPERS_waimake
+
+void
+make_wait_tmout(WINFO *p_winfo, TMEVTB *p_tmevtb, TMO tmout)
+{
+	(void) make_non_runnable(p_runtsk);
+	p_runtsk->p_winfo = p_winfo;
+	if (tmout > 0) {
+		p_winfo->p_tmevtb = p_tmevtb;
+		tmevtb_enqueue(p_tmevtb, (RELTIM) tmout,
+						(CBACK) wait_tmout, (void *) p_runtsk);
+	}
+	else {
+		assert(tmout == TMO_FEVR);
+		p_winfo->p_tmevtb = NULL;
+	}
+}
+
+#endif /* TOPPERS_waimake */
+
+/*
+ *  Ò¿ð
+ */
+#ifdef TOPPERS_waicmp
+
+bool_t
+wait_complete(TCB *p_tcb)
+{
+	wait_dequeue_tmevtb(p_tcb);
+	p_tcb->p_winfo->wercd = E_OK;
+	return(make_non_wait(p_tcb));
+}
+
+#endif /* TOPPERS_waicmp */
+
+/*
+ *  ^CAEgÉº¤Ò¿ð
+ */
+#ifdef TOPPERS_waitmo
+
+void
+wait_tmout(TCB *p_tcb)
+{
+	wait_dequeue_wobj(p_tcb);
+	p_tcb->p_winfo->wercd = E_TMOUT;
+	if (make_non_wait(p_tcb)) {
+		reqflg = true;
+	}
+
+	/*
+	 *  ±±ÅDæxÌ¢Ýðó¯t¯éD
+	 */
+	i_unlock_cpu();
+	i_lock_cpu();
+}
+
+#endif /* TOPPERS_waitmo */
+#ifdef TOPPERS_waitmook
+
+void
+wait_tmout_ok(TCB *p_tcb)
+{
+	p_tcb->p_winfo->wercd = E_OK;
+	if (make_non_wait(p_tcb)) {
+		reqflg = true;
+	}
+
+	/*
+	 *  ±±ÅDæxÌ¢Ýðó¯t¯éD
+	 */
+	i_unlock_cpu();
+	i_lock_cpu();
+}
+
+#endif /* TOPPERS_waitmook */
+
+/*
+ *  Ò¿óÔÌ­§ð
+ */
+#ifdef TOPPERS_wairel
+
+bool_t
+wait_release(TCB *p_tcb)
+{
+	wait_dequeue_wobj(p_tcb);
+	wait_dequeue_tmevtb(p_tcb);
+	p_tcb->p_winfo->wercd = E_RLWAI;
+	return(make_non_wait(p_tcb));
+}
+
+#endif /* TOPPERS_wairel */
+
+/*
+ *  ÀsÌ^XNÌ¯úEÊMIuWFNgÌÒ¿L
+[ÖÌ}ü
+ *
+ *  ÀsÌ^XNðC¯úEÊMIuWFNgÌÒ¿L
+[Ö}ü·éDI
+ *  uWFNgÌ®«É¶ÄCFIFOÜ½Í^XNDæxÅ}ü·éD
+ */
+Inline void
+wobj_queue_insert(WOBJCB *p_wobjcb)
+{
+	if ((p_wobjcb->p_wobjinib->wobjatr & TA_TPRI) != 0U) {
+		queue_insert_tpri(&(p_wobjcb->wait_queue), p_runtsk);
+	}
+	else {
+		queue_insert_prev(&(p_wobjcb->wait_queue), &(p_runtsk->task_queue));
+	}
+}
+
+/*
+ *  ¯úEÊMIuWFNgÉÎ·éÒ¿óÔÖÌJÚ
+ */
+#ifdef TOPPERS_wobjwai
+
+void
+wobj_make_wait(WOBJCB *p_wobjcb, WINFO_WOBJ *p_winfo_wobj)
+{
+	make_wait(&(p_winfo_wobj->winfo));
+	wobj_queue_insert(p_wobjcb);
+	p_winfo_wobj->p_wobjcb = p_wobjcb;
+	LOG_TSKSTAT(p_runtsk);
+}
+
+#endif /* TOPPERS_wobjwai */
+#ifdef TOPPERS_wobjwaitmo
+
+void
+wobj_make_wait_tmout(WOBJCB *p_wobjcb, WINFO_WOBJ *p_winfo_wobj,
+								TMEVTB *p_tmevtb, TMO tmout)
+{
+	make_wait_tmout(&(p_winfo_wobj->winfo), p_tmevtb, tmout);
+	wobj_queue_insert(p_wobjcb);
+	p_winfo_wobj->p_wobjcb = p_wobjcb;
+	LOG_TSKSTAT(p_runtsk);
+}
+
+#endif /* TOPPERS_wobjwaitmo */
+
+/*
+ *  Ò¿L
+[Ìú»
+ */
+#ifdef TOPPERS_iniwque
+
+bool_t
+init_wait_queue(QUEUE *p_wait_queue)
+{
+	TCB		*p_tcb;
+	bool_t	dspreq = false;
+
+	while (!queue_empty(p_wait_queue)) {
+		p_tcb = (TCB *) queue_delete_next(p_wait_queue);
+		wait_dequeue_tmevtb(p_tcb);
+		p_tcb->p_winfo->wercd = E_DLT;
+		if (make_non_wait(p_tcb)) {
+			dspreq = true;
+		};
+	}
+	return(dspreq);
+}
+
+#endif /* TOPPERS_iniwque */
Index: /asp_ewarm/asp-1.7.0/kernel/wait.h
===================================================================
--- /asp_ewarm/asp-1.7.0/kernel/wait.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/kernel/wait.h	(revision 61)
@@ -0,0 +1,318 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2000 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: wait.h 1841 2010-07-10 17:37:34Z ertl-hiro $
+ */
+
+/*
+ *		Ò¿óÔÇW
+[
+ */
+
+#ifndef TOPPERS_WAIT_H
+#define TOPPERS_WAIT_H
+
+#include "task.h"
+#include "time_event.h"
+
+/*
+ *  ^XNÌDæxÌÒ¿L
+[ÖÌ}ü
+ *
+ *  p_tcbÅwè³êé^XNðC^XNDæxÌL
+[p_queueÉ}ü·éD
+ *  L
+[ÌÉ¯¶DæxÌ^XNª éêÉÍC»ÌÅãÉ}ü·éD
+ */
+Inline void
+queue_insert_tpri(QUEUE *p_queue, TCB *p_tcb)
+{
+	QUEUE	*p_entry;
+	uint_t	priority = p_tcb->priority;
+
+	for (p_entry = p_queue->p_next; p_entry != p_queue;
+										p_entry = p_entry->p_next) {
+		if (priority < ((TCB *) p_entry)->priority) {
+			break;
+		}
+	}
+	queue_insert_prev(p_entry, &(p_tcb->task_queue));
+}
+
+/*
+ *  Ò¿óÔÖÌJÚ
+ *
+ *  ÀsÌ^XNðÒ¿óÔÉJÚ³¹éDïÌIÉÍCÀsÌ^XNð
+ *  fBL
+[©çíµCTCBÌp_winfotB[hCWINFOÌp_tmevtbtB[
+ *  hðÝè·éD
+ */
+Inline void
+make_wait(WINFO *p_winfo)
+{
+	(void) make_non_runnable(p_runtsk);
+	p_runtsk->p_winfo = p_winfo;
+	p_winfo->p_tmevtb = NULL;
+}
+
+/*
+ *  Ò¿óÔÖÌJÚi^CAEgwèj
+ *
+ *  ÀsÌ^XNðC^CAEgwèt«ÅÒ¿óÔÉJÚ³¹éDïÌ
+ *  IÉÍCÀsÌ^XNðfBL
+[©çíµCTCBÌp_winfotB[
+ *  hCWINFOÌp_tmevtbtB[hðÝè·éDÜ½C^CCxgu
+ *  bNðo^·éD
+ */
+extern void	make_wait_tmout(WINFO *p_winfo, TMEVTB *p_tmevtb, TMO tmout);
+
+/*
+ *  Ò¿ðÌ½ßÌ^XNóÔÌXV
+ *
+ *  p_tcbÅwè³êé^XNðCÒ¿ð·éæ¤^XNóÔðXV·éD
+ *  Ò¿ð·é^XNªÀsÅ«éóÔÉÈéêÍCfBL
+[ÉÂÈ
+ *  ®DÜ½CfBXpb`ªKvÈêÉÍtrueðÔ·D
+ */
+Inline bool_t
+make_non_wait(TCB *p_tcb)
+{
+	assert(TSTAT_WAITING(p_tcb->tstat));
+
+	if (!TSTAT_SUSPENDED(p_tcb->tstat)) {
+		/*
+		 *  Ò¿óÔ©çÀsÅ«éóÔÖÌJÚ
+		 */
+		p_tcb->tstat = TS_RUNNABLE;
+		LOG_TSKSTAT(p_tcb);
+		return(make_runnable(p_tcb));
+	}
+	else {
+		/*
+		 *  ñdÒ¿óÔ©ç­§Ò¿óÔÖÌJÚ
+		 */
+		p_tcb->tstat = TS_SUSPENDED;
+		LOG_TSKSTAT(p_tcb);
+		return(false);
+	}
+}
+
+/*
+ *  IuWFNgÒ¿L
+[©çÌí
+ *
+ *  p_tcbÅwè³êé^XNªC¯úEÊMIuWFNgÌÒ¿L
+[ÉÂ
+ *  ÈªêÄ¢êÎCÒ¿L
+[©çí·éD
+ */
+Inline void
+wait_dequeue_wobj(TCB *p_tcb)
+{
+	if (TSTAT_WAIT_WOBJ(p_tcb->tstat)) {
+		queue_delete(&(p_tcb->task_queue));
+	}
+}
+
+/*
+ *  ÔÒ¿Ì½ßÌ^CCxgubNÌo^ð
+ *
+ *  p_tcbÅwè³êé^XNÉÎµÄCÔÒ¿Ì½ßÌ^CCxgu
+ *  bNªo^³êÄ¢êÎC»êðo^ð·éD
+ */
+Inline void
+wait_dequeue_tmevtb(TCB *p_tcb)
+{
+	if (p_tcb->p_winfo->p_tmevtb != NULL) {
+		tmevtb_dequeue(p_tcb->p_winfo->p_tmevtb);
+	}
+}
+
+/*
+ *  Ò¿ð
+ *
+ *  p_tcbÅwè³êé^XNÌÒ¿óÔðð·éDïÌIÉÍC^CC
+ *  xgubNªo^³êÄ¢êÎC»êðo^ð·éDÜ½C^XN
+ *  óÔðXVµCÒ¿ðµ½^XN©çÌÔlðE_OKÆ·éDÒ¿L
+[
+ *  ©çÌíÍsíÈ¢DÒ¿ðµ½^XNÖÌfBXpb`ªKvÈê
+ *  ÉÍtrueðÔ·D
+ */
+extern bool_t	wait_complete(TCB *p_tcb);
+
+/*
+ *  ^CAEgÉº¤Ò¿ð
+ *
+ *  p_tcbÅwè³êé^XNªCÒ¿L
+[ÉÂÈªêÄ¢êÎÒ¿L
+[
+ *  ©çíµC^XNóÔðXV·éDÜ½CÒ¿ðµ½^XN©çÌÔ
+ *  lðCwait_tmoutÅÍE_TMOUTCwait_tmout_okÅÍE_OKÆ·éDÒ¿ð
+ *  µ½^XNÖÌfBXpb`ªKvÈÍCreqflgðtrueÉ·éD
+ *
+ *  wait_tmout_okÍCdly_tskÅg¤½ßÌàÌÅCÒ¿L
+[©çí·é
+ *  ðsíÈ¢D
+ *
+ *  ¢¸êÌÖàC^CCxgÌR[obNÖÆµÄp¢é½ßÌ
+ *  àÌÅCÝnh©çÄÑo³êé±ÆðzèµÄ¢éD
+ */
+extern void	wait_tmout(TCB *p_tcb);
+extern void	wait_tmout_ok(TCB *p_tcb);
+
+/*
+ *  Ò¿óÔÌ­§ð
+ *
+ *  p_tcbÅwè³êé^XNÌÒ¿óÔð­§IÉð·éDïÌIÉÍC
+ *  ^XNªÒ¿L
+[ÉÂÈªêÄ¢êÎÒ¿L
+[©çíµC^CC
+ *  xgubNªo^³êÄ¢êÎ»êðo^ð·éDÜ½C^XNÌ
+ *  óÔðXVµCÒ¿ðµ½^XN©çÌÔlðE_RLWAIÆ·éDÜ½C
+ *  Ò¿ðµ½^XNÖÌfBXpb`ªKvÈêÉÍtrueðÔ·D
+ */
+extern bool_t	wait_release(TCB *p_tcb);
+
+/*
+ *  Ò¿L
+[ÌæªÌ^XNID
+ *
+ *  p_wait_queueÅwèµ½Ò¿L
+[ÌæªÌ^XNIDðÔ·DÒ¿L
+[
+ *  ªóÌêÉÍCTSK_NONEðÔ·D
+ */
+Inline ID
+wait_tskid(QUEUE *p_wait_queue)
+{
+	if (!queue_empty(p_wait_queue)) {
+		return(TSKID((TCB *) p_wait_queue->p_next));
+	}
+	else {
+		return(TSK_NONE);
+	}
+}
+
+/*
+ *  ¯úEÊMIuWFNgÌÇubNÌ¤Êªì[`
+ *
+ *  ¯úEÊMIuWFNgÌú»ubNÆÇubNÌæªªÍ¤
+ *  ÊÉÈÁÄ¢éDÈºÍC»Ì¤Êªðµ¤½ßÌ^¨æÑ[`Q
+ *  Å éD
+ *
+ *  ¡ÌÒ¿L
+[ðÂ¯úEÊMIuWFNgÌêCæªÈOÌÒ¿
+ *  L
+[ðì·éêÉÍC±êçÌ[`Íg¦È¢DÜ½CIuWF
+ *  Ng®«ÌTA_TPRIrbgðQÆ·éÌÅC±Ìrbgð¼ÌÚIÉgÁÄ
+ *  ¢éêàC±êçÌ[`Íg¦È¢D
+ */
+
+/*
+ *  ¯úEÊMIuWFNgÌú»ubNÌ¤Êª
+ */
+typedef struct wait_object_initialization_block {
+	ATR			wobjatr;		/* IuWFNg®« */
+} WOBJINIB;
+
+/*
+ *  ¯úEÊMIuWFNgÌÇubNÌ¤Êª
+ */
+typedef struct wait_object_control_block {
+	QUEUE		wait_queue;		/* Ò¿L
+[ */
+	const WOBJINIB *p_wobjinib;	/* ú»ubNÖÌ|C^ */
+} WOBJCB;
+
+/*
+ *  ¯úEÊMIuWFNgÌÒ¿îñubNÌ¤Êª
+ *
+ *  ±Ì\¢ÌÍCÒ¿îñubNiWINFOjðg£iIuWFNgwü¾
+ *  êÌp³Éjµ½àÌÅ éªCWINFOª¤pÌÅè`³êÄ¢é½
+ *  ßÉC1ÂÌtB[hÆµÄÜßÄ¢éD
+ */
+typedef struct wait_object_waiting_information {
+	WINFO	winfo;			/* WÌÒ¿îñubN */
+	WOBJCB	*p_wobjcb;		/* Ò¿IuWFNgÌÇubN */
+} WINFO_WOBJ;
+
+/*
+ *  ¯úEÊMIuWFNgÉÎ·éÒ¿óÔÖÌJÚ
+ *  
+ *  ÀsÌ^XNðÒ¿óÔÉJÚ³¹C¯úEÊMIuWFNgÌÒ¿L
+[
+ *  ÉÂÈ®DÜ½CÒ¿îñubNiWINFOjÌp_wobjcbðÝè·éD
+ *  wobj_make_wait_tmoutÍC^CCxgubNÌo^às¤D
+ */
+extern void	wobj_make_wait(WOBJCB *p_wobjcb, WINFO_WOBJ *p_winfo);
+extern void	wobj_make_wait_tmout(WOBJCB *p_wobjcb, WINFO_WOBJ *p_winfo,
+											TMEVTB *p_tmevtb, TMO tmout);
+
+/*
+ *  ^XNDæxÏXÌ
+ *
+ *  ¯úEÊMIuWFNgÉÎ·éÒ¿óÔÉ é^XNÌDæxªÏX³
+ *  ê½êÉCÒ¿L
+[ÌÅÌ^XNÌÊuðC³·éD
+ */
+Inline void
+wobj_change_priority(WOBJCB *p_wobjcb, TCB *p_tcb)
+{
+	if ((p_wobjcb->p_wobjinib->wobjatr & TA_TPRI) != 0U) {
+		queue_delete(&(p_tcb->task_queue));
+		queue_insert_tpri(&(p_wobjcb->wait_queue), p_tcb);
+	}
+}
+
+/*
+ *  Ò¿L
+[Ìú»
+ *
+ *  Ò¿L
+[ÉÂÈªêÄ¢é^XNð·×ÄÒ¿ð·éDÒ¿ðµ½
+ *  ^XN©çÌÔlÍCE_DLTÆ·éDÒ¿ðµ½^XNÖÌfBXpb`
+ *  ªKvÈêÍtrueC»¤ÅÈ¢êÍfalseðÔ·D
+ */
+extern bool_t	init_wait_queue(QUEUE *p_wait_queue);
+
+#endif /* TOPPERS_WAIT_H */
Index: /asp_ewarm/asp-1.7.0/library/histogram.c
===================================================================
--- /asp_ewarm/asp-1.7.0/library/histogram.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/library/histogram.c	(revision 61)
@@ -0,0 +1,194 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2006-2009 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: histogram.c 1574 2009-05-31 13:57:37Z ertl-hiro $
+ */
+
+/*
+ *		ÀsÔªzWvW
+[
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include <test_lib.h>
+#include <histogram.h>
+#include "target_test.h"
+
+/*
+ *  ÀsÔªzvªÌ
+ */
+#ifndef TNUM_HIST
+#define TNUM_HIST		10
+#endif /* TNUM_HIST */
+
+/*
+ *  ^[QbgË¶ÅÝèÏX·é½ßÌ}N
+ */
+#ifndef HISTTIM						/* ÀsÔvªpÌÌf[^^ */
+#define HISTTIM			SYSUTM
+#endif /* HISTTIM */
+
+#ifndef HIST_GET_TIM				/* ÀsÔvªpÌ»ÝÌæ¾ */
+#ifndef TOPPERS_SUPPORT_GET_UTM
+#error get_utm is not supported.
+#endif /* TOPPERS_SUPPORT_GET_UTM */
+#define HIST_GET_TIM(p_time)	((void) get_utm(p_time))
+#endif /* HIST_GET_TIM */
+
+#ifndef HIST_CONV_TIM				/* Ì·©çÀsÔÖÌÏ· */
+#define HIST_CONV_TIM(time)		((uint_t)(time))
+#endif /* HIST_CONV_TIM */
+
+#ifndef HIST_BM_HOOK				/* ÀsÔvª¼OÉs¤×« */
+#define HIST_BM_HOOK()			((void) 0)
+#endif
+
+/*
+ *  ÀsÔªzvªÇubN
+ */
+typedef struct histogram_control_block {
+	HISTTIM		begin_time;			/* vªJn */
+	uint_t		maxval;				/* ªzðL^·éÅåÔ */
+	uint_t		*histarea;			/* ªzðL^·éÌæ */
+	uint_t		over;				/* ÅåÔð´¦½x */
+	uint_t		under;				/* ÔÌt]ª^íêéx */
+} HISTCB;
+
+/*
+ *  ÀsÔªzvªÇubNÌGA
+ */
+HISTCB	histcb_table[TNUM_HIST];
+
+/*
+ *  ÀsÔªzvªIDÌÅ¬lÆÅål
+ */
+#define TMIN_HISTID		1
+#define TMAX_HISTID		(TMIN_HISTID + TNUM_HIST - 1)
+
+/*
+ *  ÀsÔªzvªÌú»
+ */
+void
+init_hist(ID histid, uint_t maxval, uint_t histarea[])
+{
+	HISTCB	*p_histcb;
+	uint_t	i;
+
+	assert(TMIN_HISTID <= histid && histid <= TMAX_HISTID);
+	p_histcb = &(histcb_table[histid - TMIN_HISTID]);
+
+	for (i = 0; i <= maxval; i++) {
+		histarea[i] = 0U;
+	}
+	p_histcb->maxval = maxval;
+	p_histcb->histarea = histarea;
+	p_histcb->over = 0U;
+	p_histcb->under = 0U;
+}
+
+/*
+ *  ÀsÔvªÌJn
+ */
+void
+begin_measure(ID histid)
+{
+	HISTCB	*p_histcb;
+
+	assert(TMIN_HISTID <= histid && histid <= TMAX_HISTID);
+	p_histcb = &(histcb_table[histid - TMIN_HISTID]);
+
+	HIST_BM_HOOK();
+	HIST_GET_TIM(&(p_histcb->begin_time));
+}
+
+/*
+ *  ÀsÔvªÌI¹
+ */
+void
+end_measure(ID histid)
+{
+	HISTCB	*p_histcb;
+	HISTTIM	end_time;
+	uint_t	val;
+
+	HIST_GET_TIM(&end_time);
+
+	assert(TMIN_HISTID <= histid && histid <= TMAX_HISTID);
+	p_histcb = &(histcb_table[histid - TMIN_HISTID]);
+
+	val = HIST_CONV_TIM(end_time - p_histcb->begin_time);
+	if (val <= p_histcb->maxval) {
+		p_histcb->histarea[val]++;
+	}
+	else if (val <= ((uint_t) INT_MAX)) {
+		p_histcb->over++;
+	}
+	else {
+		p_histcb->under++;
+	}
+}
+
+/*
+ *  ÀsÔªzvªÌ\¦
+ */
+void
+print_hist(ID histid)
+{
+	HISTCB	*p_histcb;
+	uint_t	i;
+
+	assert(TMIN_HISTID <= histid && histid <= TMAX_HISTID);
+	p_histcb = &(histcb_table[histid - TMIN_HISTID]);
+
+	for (i = 0; i <= p_histcb->maxval; i++) {
+		if (p_histcb->histarea[i] > 0) {
+			syslog_2(LOG_NOTICE, "%d : %d", i, p_histcb->histarea[i]);
+			syslog_flush();
+		}
+	}
+	if (p_histcb->over > 0) {
+		syslog_2(LOG_NOTICE, "> %d : %d", p_histcb->maxval, p_histcb->over);
+	}
+	if (p_histcb->under > 0) {
+		syslog_1(LOG_NOTICE, "> INT_MAX : %d", p_histcb->under);
+	}
+	syslog_flush();
+}
Index: /asp_ewarm/asp-1.7.0/library/log_output.c
===================================================================
--- /asp_ewarm/asp-1.7.0/library/log_output.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/library/log_output.c	(revision 61)
@@ -0,0 +1,198 @@
+/*
+ *  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
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: log_output.c 1176 2008-07-01 10:24:46Z ertl-hiro $
+ */
+
+/*
+ *		VXeOÌtH[}bgoÍ
+ */
+
+#include <t_stddef.h>
+#include <t_syslog.h>
+
+/*
+ *  lð¶ñÉÏ·
+ */
+#define CONVERT_BUFLEN	((sizeof(uintptr_t) * CHAR_BIT + 2) / 3)
+										/* uintptr_t^ÌlÌÅå¶ */
+static void
+convert(uintptr_t val, uint_t radix, const char *radchar,
+			uint_t width, bool_t minus, bool_t padzero, void (*putc)(char_t))
+{
+	char	buf[CONVERT_BUFLEN];
+	uint_t	i, j;
+
+	i = 0U;
+	do {
+		buf[i++] = radchar[val % radix];
+		val /= radix;
+	} while (i < CONVERT_BUFLEN && val != 0);
+
+	if (minus && width > 0) {
+		width -= 1;
+	}
+	if (minus && padzero) {
+		(*putc)('-');
+	}
+	for (j = i; j < width; j++) {
+		(*putc)((char_t)(padzero ? '0' : ' '));
+	}
+	if (minus && !padzero) {
+		(*putc)('-');
+	}
+	while (i > 0U) {
+		(*putc)(buf[--i]);
+	}
+}
+
+/*
+ *  ¶ñ®`oÍ
+ */
+static const char raddec[] = "0123456789";
+static const char radhex[] = "0123456789abcdef";
+static const char radHEX[] = "0123456789ABCDEF";
+
+void
+syslog_printf(const char *format, const intptr_t *p_args, void (*putc)(char_t))
+{
+	char		c;
+	uint_t		width;
+	bool_t		padzero;
+	intptr_t	val;
+	const char	*str;
+
+	while ((c = *format++) != '\0') {
+		if (c != '%') {
+			(*putc)(c);
+			continue;
+		}
+
+		width = 0U;
+		padzero = false;
+		if ((c = *format++) == '0') {
+			padzero = true;
+			c = *format++;
+		}
+		while ('0' <= c && c <= '9') {
+			width = width * 10U + c - '0';
+			c = *format++;
+		}
+		if (c == 'l') {
+			c = *format++;
+		}
+		switch (c) {
+		case 'd':
+			val = (intptr_t)(*p_args++);
+			if (val >= 0) {
+				convert((uintptr_t) val, 10U, raddec,
+										width, false, padzero, putc);
+			}
+			else {
+				convert((uintptr_t)(-val), 10U, raddec,
+										width, true, padzero, putc);
+			}
+			break;
+		case 'u':
+			val = (intptr_t)(*p_args++);
+			convert((uintptr_t) val, 10U, raddec, width, false, padzero, putc);
+			break;
+		case 'x':
+		case 'p':
+			val = (intptr_t)(*p_args++);
+			convert((uintptr_t) val, 16U, radhex, width, false, padzero, putc);
+			break;
+		case 'X':
+			val = (intptr_t)(*p_args++);
+			convert((uintptr_t) val, 16U, radHEX, width, false, padzero, putc);
+			break;
+		case 'c':
+			(*putc)((char_t)(intptr_t)(*p_args++));
+			break;
+		case 's':
+			str = (const char *)(*p_args++);
+			while ((c = *str++) != '\0') {
+				(*putc)(c);
+			}
+			break;
+		case '%':
+			(*putc)('%');
+			break;
+		case '\0':
+			format--;
+			break;
+		default:
+			break;
+		}
+	}
+}
+
+/*
+ *  OîñÌoÍ
+ */
+void
+syslog_print(const SYSLOG *p_syslog, void (*putc)(char_t))
+{
+	switch (p_syslog->logtype) {
+	case LOG_TYPE_COMMENT:
+		syslog_printf((const char *)(p_syslog->loginfo[0]),
+								&(p_syslog->loginfo[1]), putc);
+		break;
+	case LOG_TYPE_ASSERT:
+		syslog_printf("%s:%u: Assertion `%s' failed.",
+								&(p_syslog->loginfo[0]), putc);
+		break;
+	}
+}
+
+/*
+ *  Oîñr¸bZ[WÌoÍ
+ */
+void
+syslog_lostmsg(uint_t lost, void (*putc)(char_t))
+{
+	intptr_t	lostinfo[1];
+
+	lostinfo[0] = (intptr_t) lost;
+	syslog_printf("%d messages are lost.", lostinfo, putc);
+	(*putc)('\n');
+}
Index: /asp_ewarm/asp-1.7.0/library/strerror.c
===================================================================
--- /asp_ewarm/asp-1.7.0/library/strerror.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/library/strerror.c	(revision 61)
@@ -0,0 +1,114 @@
+/*
+ *  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
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: strerror.c 1732 2010-02-03 03:15:52Z ertl-hiro $
+ */
+
+/*
+ *		G[bZ[W¶ñðÔ·Ö
+ */
+
+#include <t_stddef.h>
+#include <t_stdlib.h>
+
+const char *
+itron_strerror(ER ercd)
+{
+	switch (MERCD(ercd)) {
+	case E_OK:
+		return("E_OK");
+
+	case E_SYS:
+		return("E_SYS");
+	case E_NOSPT:
+		return("E_NOSPT");
+	case E_RSFN:
+		return("E_RSFN");
+	case E_RSATR:
+		return("E_RSATR");
+
+	case E_PAR:
+		return("E_PAR");
+	case E_ID:
+		return("E_ID");
+
+	case E_CTX:
+		return("E_CTX");
+	case E_MACV:
+		return("E_MACV");
+	case E_OACV:
+		return("E_OACV");
+	case E_ILUSE:
+		return("E_ILUSE");
+
+	case E_NOMEM:
+		return("E_NOMEM");
+	case E_NOID:
+		return("E_NOID");
+	case E_NORES:
+		return("E_NORES");
+
+	case E_OBJ:
+		return("E_OBJ");
+	case E_NOEXS:
+		return("E_NOEXS");
+	case E_QOVR:
+		return("E_QOVR");
+
+	case E_RLWAI:
+		return("E_RLWAI");
+	case E_TMOUT:
+		return("E_TMOUT");
+	case E_DLT:
+		return("E_DLT");
+	case E_CLS:
+		return("E_CLS");
+
+	case E_WBLK:
+		return("E_WBLK");
+	case E_BOVR:
+		return("E_BOVR");
+
+	default:
+		return("unknown error");
+	}
+}
Index: /asp_ewarm/asp-1.7.0/library/t_perror.c
===================================================================
--- /asp_ewarm/asp-1.7.0/library/t_perror.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/library/t_perror.c	(revision 61)
@@ -0,0 +1,60 @@
+/*
+ *  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
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: t_perror.c 264 2007-07-12 08:23:10Z hiro $
+ */
+
+/*
+ *		G[bZ[WÌoÍ
+ */
+
+#include <t_stddef.h>
+#include <t_syslog.h>
+#include <t_stdlib.h>
+
+void
+t_perror(uint_t prio, const char *file, int_t line, const char *expr, ER ercd)
+{
+	syslog_5(prio, "%s (%d) reported by `%s' in line %d of `%s'.",
+						itron_strerror(ercd), SERCD(ercd), expr, line, file);
+
+}
Index: /asp_ewarm/asp-1.7.0/library/test_lib.c
===================================================================
--- /asp_ewarm/asp-1.7.0/library/test_lib.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/library/test_lib.c	(revision 61)
@@ -0,0 +1,198 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2005-2011 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_lib.c 2067 2011-05-05 00:46:29Z ertl-hiro $
+ */
+
+/* 
+ *		eXgvOpCu
+ */
+
+#include <kernel.h>
+#include <sil.h>
+#include <t_syslog.h>
+#include <t_stdlib.h>
+#include <log_output.h>
+#include "syssvc/syslog.h"
+#include "target_syssvc.h"
+#include "test_lib.h"
+
+/*
+ *	`FbN|Cg
+ */
+static uint_t	check_count = 0u;
+
+/*
+ *	©ÈffÖ
+ */
+static BIT_FUNC	check_bit_func = NULL;
+
+/*
+ *	©ÈffÖÌÝè
+ */
+void
+set_bit_func(BIT_FUNC bit_func)
+{
+	check_bit_func = bit_func;
+}
+
+/*
+ *  VXeOÌoÍ
+ */
+void
+syslog_flush(void)
+{
+	SYSLOG	syslog;
+	ER_UINT	rercd;
+
+	/*
+	 *  Oobt@ÉL^³ê½OîñðCáxoÍ@\ðp¢Äo
+	 *  Í·éD
+	 */
+	while ((rercd = syslog_rea_log(&syslog)) >= 0) {
+		if (rercd > 0) {
+			syslog_lostmsg((uint_t) rercd, target_fput_log);
+		}
+		if (syslog.logtype >= LOG_TYPE_COMMENT) {
+			syslog_print(&syslog, target_fput_log);
+			target_fput_log('\n');
+		}
+	}
+}
+
+/*
+ *	eXgvOÌI¹
+ */
+void
+test_finish(void)
+{
+	SIL_PRE_LOC;
+
+	SIL_LOC_INT();
+	syslog_flush();
+	ext_ker();
+
+	/* ±±Öé±ÆÍÈ¢Í¸ */
+	SIL_UNL_INT();
+}
+
+/*
+ *	`FbN|Cg
+ */
+void
+check_point(uint_t count)
+{
+	bool_t	errorflag = false;
+	ER		rercd;
+	SIL_PRE_LOC;
+
+	/*
+	 *  ÝbNóÔÉ
+	 */
+	SIL_LOC_INT();
+
+	/*
+	 *  V[PX`FbN
+	 */
+	if (++check_count == count) {
+		syslog_1(LOG_NOTICE, "Check point %d passed.", count);
+	}
+	else {
+		syslog_1(LOG_ERROR, "## Unexpected check point %d.", count);
+		errorflag = true;
+	}
+
+	/*
+	 *  J[lÌàóÔÌ¸
+	 */
+	if (check_bit_func != NULL) {
+		rercd = (*check_bit_func)();
+		if (rercd < 0) {
+			syslog_2(LOG_ERROR, "## Internal inconsistency detected (%s, %d).",
+								itron_strerror(rercd), SERCD(rercd));
+			errorflag = true;
+		}
+	}
+
+	/*
+	 *  G[ªo³ê½êÍCeXgvOðI¹·éD
+	 */
+	if (errorflag) {
+		test_finish();
+	}
+
+	/*
+	 *  ÝbNóÔðð
+	 */
+	SIL_UNL_INT();
+}
+
+/*
+ *	®¹`FbN|Cg
+ */
+void
+check_finish(uint_t count)
+{
+	check_point(count);
+	syslog_0(LOG_NOTICE, "All check points passed.");
+	test_finish();
+}
+
+/*
+ *	ð`FbNÌG[
+ */
+void
+_check_assert(const char *expr, const char *file, int_t line)
+{
+	syslog_3(LOG_ERROR, "## Assertion `%s' failed at %s:%u.",
+								expr, file, line);
+	test_finish();
+}
+
+/*
+ *	G[R[h`FbNÌG[
+ */
+void
+_check_ercd(ER ercd, const char *file, int_t line)
+{
+	syslog_3(LOG_ERROR, "## Unexpected error %s detected at %s:%u.",
+								itron_strerror(ercd), file, line);
+	test_finish();
+}
Index: /asp_ewarm/asp-1.7.0/pdic/upd72001/MANIFEST
===================================================================
--- /asp_ewarm/asp-1.7.0/pdic/upd72001/MANIFEST	(revision 61)
+++ /asp_ewarm/asp-1.7.0/pdic/upd72001/MANIFEST	(revision 61)
@@ -0,0 +1,5 @@
+PACKAGE asp
+
+MANIFEST
+upd72001.c
+upd72001.h
Index: /asp_ewarm/asp-1.7.0/pdic/upd72001/upd72001.c
===================================================================
--- /asp_ewarm/asp-1.7.0/pdic/upd72001/upd72001.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/pdic/upd72001/upd72001.c	(revision 61)
@@ -0,0 +1,437 @@
+/*
+ *  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-2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: upd72001.c 873 2008-04-11 10:32:26Z hiro $
+ */
+
+/*
+ *		ÊPD72001p ÈÕSIOhCo
+ */
+
+#include <sil.h>
+#include "target_syssvc.h"
+#include "upd72001.h"
+
+/*
+ *  foCXWX^ÌANZXÔuÔinsecPÊj
+ *
+ *  200Æ¢¤lÉ ÜèªÍÈ¢D
+ */
+#define	UPD72001_DELAY	200U
+
+/*
+ *  ÊPD72001ÌWX^ÌÔ
+ */
+#define	UPD72001_CR0	0x00U		/* Rg[WX^ */
+#define	UPD72001_CR1	0x01U
+#define	UPD72001_CR2	0x02U
+#define	UPD72001_CR3	0x03U
+#define	UPD72001_CR4	0x04U
+#define	UPD72001_CR5	0x05U
+#define	UPD72001_CR10	0x0aU
+#define	UPD72001_CR12	0x0cU
+#define	UPD72001_CR14	0x0eU
+#define	UPD72001_CR15	0x0fU
+
+#define	UPD72001_SR0	0x00U		/* Xe[^XWX^ */
+
+/*
+ *  Rg[WX^ÌÝèl
+ */
+#define CR_RESET	0x18U		/* |[gZbgR}h */
+
+#define CR0_EOI		0x38U		/* EOIiEnd of Interruptj*/
+
+#define CR1_DOWN	0x00U		/* SÝðÖ~ */
+#define CR1_RECV	0x10U		/* óMÝÂrbg */
+#define CR1_SEND	0x02U		/* MÝÂrbg */
+
+#define CR3_DEF		0xc1U		/* f[^ 8bitCóMCl[u */
+#define CR4_DEF		0x44U		/* Xgbvrbg 1bitCpeBÈµ */
+#define CR5_DEF		0xeaU		/* f[^ 8bitCMCl[u */
+
+#define CR10_DEF	0x00U		/* NRZ */
+#define CR14_DEF	0x07U		/* {[[gWFl[^Cl[u */
+#define CR15_DEF	0x56U		/* {[[gWFl[^gp */
+
+#define SR0_RECV	0x01U		/* óMÊmrbg */
+#define SR0_SEND	0x04U		/* MÂ\rbg */
+
+/*
+ *  VAI/O|[gú»ubNÌè`
+ */
+typedef struct sio_port_initialization_block {
+	void		*data;			/* f[^WX^ÌÔn */
+	void		*ctrl;			/* Rg[WX^ÌÔn */
+
+	uint8_t		cr3_def;		/* CR3ÌÝèlióMrbgj*/
+	uint8_t		cr4_def;		/* CR4ÌÝèliXgbvrbgCpeBj*/
+	uint8_t		cr5_def;		/* CR5ÌÝèliMrbgj*/
+	uint8_t		brg1_def;		/* {[[gãÊÌÝèl */
+	uint8_t		brg2_def;		/* {[[gºÊÌÝèl */
+} SIOPINIB;
+
+/*
+ *  VAI/O|[gÇubNÌè`
+ */
+struct sio_port_control_block {
+	const SIOPINIB *p_siopinib;	/* VAI/O|[gú»ubN */
+	intptr_t	exinf;			/* g£îñ */
+	bool_t		openflag;		/* I[vÏÝtO */
+	uint8_t		cr1;			/* CR1ÌÝèliÝÂj*/
+	bool_t		getready;		/* ¶ðóMµ½óÔ */
+	bool_t		putready;		/* ¶ðMÅ«éóÔ */
+};
+
+/*
+ *  VAI/O|[gú»ubN
+ */
+const SIOPINIB siopinib_table[TNUM_SIOP] = {
+	{ (void *) TADR_UPD72001_DATAA, (void *) TADR_UPD72001_CTRLA,
+					CR3_DEF, CR4_DEF, CR5_DEF, BRG1_DEF, BRG2_DEF },
+	{ (void *) TADR_UPD72001_DATAB, (void *) TADR_UPD72001_CTRLB,
+					CR3_DEF, CR4_DEF, CR5_DEF, BRG1_DEF, BRG2_DEF }
+};
+
+/*
+ *  VAI/O|[gÇubNÌGA
+ */
+SIOPCB	siopcb_table[TNUM_SIOP];
+
+/*
+ *  VAI/O|[gID©çÇubNðæèo·½ßÌ}N
+ */
+#define INDEX_SIOP(siopid)	((uint_t)((siopid) - 1))
+#define get_siopcb(siopid)	(&(siopcb_table[INDEX_SIOP(siopid)]))
+
+/*
+ *  foCXWX^ÖÌANZXÖ
+ */
+Inline uint8_t
+upd72001_read_reg(void *addr)
+{
+	uint8_t	val;
+
+	val = upd72001_reb_reg(addr);
+	sil_dly_nse(UPD72001_DELAY);
+	return(val);
+}
+
+Inline void
+upd72001_write_reg(void *addr, uint8_t val)
+{
+	upd72001_wrb_reg(addr, val);
+	sil_dly_nse(UPD72001_DELAY);
+}
+
+Inline uint8_t
+upd72001_read_ctrl(void *addr, uint8_t reg)
+{
+	upd72001_write_reg(addr, reg);
+	return(upd72001_read_reg(addr));
+}
+
+Inline void
+upd72001_write_ctrl(void *addr, uint8_t reg, uint8_t val)
+{
+	upd72001_write_reg(addr, reg);
+	upd72001_write_reg(addr, val);
+}
+
+Inline void
+upd72001_write_brg(void *addr, uint8_t reg, uint8_t val,
+									uint8_t brg2, uint8_t brg1)
+{
+	upd72001_write_reg(addr, reg);
+	upd72001_write_reg(addr, val);
+	upd72001_write_reg(addr, brg2);
+	upd72001_write_reg(addr, brg1);
+	(void) upd72001_read_reg(addr);		/* _~[[h */
+}
+
+/*
+ *  óÔÌÇoµiSR0ÌÇoµj
+ *
+ *  ÊPD72001ÍCóÔiSR0jðêxÇÞÆóMÊmrbgª¿ÄµÜ¤½
+ *  ßCóÔðÇÝo·ÖðÝ¯CVAI/O|[gÇubNÌ
+ *  getreadyÉóMÊmóÔCputreadyÉMÂ\óÔðÛ¶µÄ¢éiM
+ *  Â\óÔÌÛ¶Ísv©àµêÈ¢jD
+ *  óÔWX^ðÇñÅàóMÊmrbgª¿È¢foCXi±¿çª
+ *  ÊÆvíêéjÅÍC±ÌÖÍKvÈ¢D
+ */
+static void
+upd72001_get_stat(SIOPCB *p_siopcb)
+{
+	uint8_t	sr0;
+
+	sr0 = upd72001_read_ctrl(p_siopcb->p_siopinib->ctrl, UPD72001_SR0);
+	if ((sr0 & SR0_RECV) != 0) {
+		p_siopcb->getready = true;
+	}
+	if ((sr0 & SR0_SEND) != 0) {
+		p_siopcb->putready = true;
+	}
+}
+
+/*
+ *  ¶ðóMÅ«é©H
+ */
+Inline bool_t
+upd72001_getready(SIOPCB *p_siopcb)
+{
+	upd72001_get_stat(p_siopcb);
+	return(p_siopcb->getready);
+}
+
+/*
+ *  ¶ðMÅ«é©H
+ */
+Inline bool_t
+upd72001_putready(SIOPCB *p_siopcb)
+{
+	upd72001_get_stat(p_siopcb);
+	return(p_siopcb->putready);
+}
+
+/*
+ *  óMµ½¶Ìæoµ
+ */
+Inline char_t
+upd72001_getchar(SIOPCB *p_siopcb)
+{
+	p_siopcb->getready = false;
+	return((char_t) upd72001_read_reg(p_siopcb->p_siopinib->data));
+}
+
+/*
+ *  M·é¶ÌÝ
+ */
+Inline void
+upd72001_putchar(SIOPCB *p_siopcb, char_t c)
+{
+	p_siopcb->putready = false;
+	upd72001_write_reg(p_siopcb->p_siopinib->data, (uint8_t) c);
+}
+
+/*
+ *  EOIiEnd Of Interruptj­s
+ */
+Inline void
+upd72001_eoi(void)
+{
+	upd72001_write_ctrl((void *) TADR_UPD72001_CTRLA, UPD72001_CR0, CR0_EOI);
+}
+
+/*
+ *  SIOhCoÌú»
+ */
+void
+upd72001_initialize(void)
+{
+	SIOPCB	*p_siopcb;
+	uint_t	i;
+
+	/*
+	 *  VAI/O|[gÇubNÌú»
+	 */
+	for (p_siopcb = siopcb_table, i = 0; i < TNUM_SIOP; p_siopcb++, i++) {
+		p_siopcb->p_siopinib = &(siopinib_table[i]);
+		p_siopcb->openflag = false;
+	}
+}
+
+/*
+ *  I[vµÄ¢é|[gª é©H
+ */
+bool_t
+upd72001_openflag(void)
+{
+	return(siopcb_table[0].openflag || siopcb_table[1].openflag);
+}
+
+/*
+ *  VAI/O|[gÌI[v
+ */
+SIOPCB *
+upd72001_opn_por(ID siopid, intptr_t exinf)
+{
+	SIOPCB		*p_siopcb;
+	const SIOPINIB	*p_siopinib;
+
+	p_siopcb = get_siopcb(siopid);
+	p_siopinib = p_siopcb->p_siopinib;
+
+	upd72001_write_reg(p_siopinib->ctrl, CR_RESET);
+	if (!upd72001_openflag()) {
+		upd72001_write_ctrl((void *) TADR_UPD72001_CTRLA, UPD72001_CR2, 0x18);
+		upd72001_write_ctrl((void *) TADR_UPD72001_CTRLB, UPD72001_CR2, 0x00);
+	}
+	p_siopcb->cr1 = CR1_DOWN;
+	upd72001_write_ctrl(p_siopinib->ctrl, UPD72001_CR1, p_siopcb->cr1);
+	upd72001_write_ctrl(p_siopinib->ctrl, UPD72001_CR4, p_siopinib->cr4_def);
+	upd72001_write_brg(p_siopinib->ctrl, UPD72001_CR12, 0x01U,
+							p_siopinib->brg2_def, p_siopinib->brg1_def);
+	upd72001_write_brg(p_siopinib->ctrl, UPD72001_CR12, 0x02U,
+							p_siopinib->brg2_def, p_siopinib->brg1_def);
+	upd72001_write_ctrl(p_siopinib->ctrl, UPD72001_CR15, CR15_DEF);
+	upd72001_write_ctrl(p_siopinib->ctrl, UPD72001_CR14, CR14_DEF);
+	upd72001_write_ctrl(p_siopinib->ctrl, UPD72001_CR10, CR10_DEF);
+	upd72001_write_ctrl(p_siopinib->ctrl, UPD72001_CR3, p_siopinib->cr3_def);
+	upd72001_write_ctrl(p_siopinib->ctrl, UPD72001_CR5, p_siopinib->cr5_def);
+	p_siopcb->exinf = exinf;
+	p_siopcb->getready = p_siopcb->putready = false;
+	p_siopcb->openflag = true;
+	return(p_siopcb);
+}
+
+/*
+ *  VAI/O|[gÌN[Y
+ */
+void
+upd72001_cls_por(SIOPCB *p_siopcb)
+{
+	upd72001_write_ctrl(p_siopcb->p_siopinib->ctrl, UPD72001_CR1, CR1_DOWN);
+	p_siopcb->openflag = false;
+}
+
+/*
+ *  VAI/O|[gÖÌ¶M
+ */
+bool_t
+upd72001_snd_chr(SIOPCB *p_siopcb, char_t c)
+{
+	if (upd72001_putready(p_siopcb)) {
+		upd72001_putchar(p_siopcb, c);
+		return(true);
+	}
+	return(false);
+}
+
+/*
+ *  VAI/O|[g©çÌ¶óM
+ */
+int_t
+upd72001_rcv_chr(SIOPCB *p_siopcb)
+{
+	if (upd72001_getready(p_siopcb)) {
+		return((int_t)(uint8_t) upd72001_getchar(p_siopcb));
+	}
+	return(-1);
+}
+
+/*
+ *  VAI/O|[g©çÌR[obNÌÂ
+ */
+void
+upd72001_ena_cbr(SIOPCB *p_siopcb, uint_t cbrtn)
+{
+	uint8_t	cr1_bit = 0;
+
+	switch (cbrtn) {
+	case SIO_RDY_SND:
+		cr1_bit = CR1_SEND;
+		break;
+	case SIO_RDY_RCV:
+		cr1_bit = CR1_RECV;
+		break;
+	}
+	p_siopcb->cr1 |= cr1_bit;
+	upd72001_write_ctrl(p_siopcb->p_siopinib->ctrl,
+									UPD72001_CR1, p_siopcb->cr1);
+}
+
+/*
+ *  VAI/O|[g©çÌR[obNÌÖ~
+ */
+void
+upd72001_dis_cbr(SIOPCB *p_siopcb, uint_t cbrtn)
+{
+	uint8_t	cr1_bit = 0;
+
+	switch (cbrtn) {
+	case SIO_RDY_SND:
+		cr1_bit = CR1_SEND;
+		break;
+	case SIO_RDY_RCV:
+		cr1_bit = CR1_RECV;
+		break;
+	}
+	p_siopcb->cr1 &= ~cr1_bit;
+	upd72001_write_ctrl(p_siopcb->p_siopinib->ctrl,
+									UPD72001_CR1, p_siopcb->cr1);
+}
+
+/*
+ *  VAI/O|[gÉÎ·éÝ
+ */
+static void
+upd72001_isr_siop(SIOPCB *p_siopcb)
+{
+	if ((p_siopcb->cr1 & CR1_RECV) != 0U && upd72001_getready(p_siopcb)) {
+		/*
+		 *  óMÊmR[obN[`ðÄÑo·D
+		 */
+		upd72001_irdy_rcv(p_siopcb->exinf);
+	}
+	if ((p_siopcb->cr1 & CR1_SEND) != 0U && upd72001_putready(p_siopcb)) {
+		/*
+		 *  MÂ\R[obN[`ðÄÑo·D
+		 */
+		upd72001_irdy_snd(p_siopcb->exinf);
+	}
+}
+
+/*
+ *  SIOÌÝT[rX[`
+ */
+void
+upd72001_isr(void)
+{
+	if (siopcb_table[0].openflag) {
+		upd72001_isr_siop(&(siopcb_table[0]));
+	}
+	if (siopcb_table[1].openflag) {
+		upd72001_isr_siop(&(siopcb_table[1]));
+	}
+	upd72001_eoi();
+}
Index: /asp_ewarm/asp-1.7.0/pdic/upd72001/upd72001.h
===================================================================
--- /asp_ewarm/asp-1.7.0/pdic/upd72001/upd72001.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/pdic/upd72001/upd72001.h	(revision 61)
@@ -0,0 +1,128 @@
+/*
+ *  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-2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: upd72001.h 873 2008-04-11 10:32:26Z hiro $
+ */
+
+/*
+ *		ÊPD72001p ÈÕSIOhCo
+ */
+
+#ifndef TOPPERS_UPD72001_H
+#define TOPPERS_UPD72001_H
+
+/*
+ *  VAI/O|[gÌè`
+ */
+#define TNUM_SIOP		2		/* T|[g·éVAI/O|[gÌ */
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  VAI/O|[gÇubNÌè`
+ */
+typedef struct sio_port_control_block	SIOPCB;
+
+/*
+ *  R[obN[`Ì¯ÊÔ
+ */
+#define SIO_RDY_SND		1U		/* MÂ\R[obN */
+#define SIO_RDY_RCV		2U		/* óMÊmR[obN */
+
+/*
+ *  SIOhCoÌú»[`
+ */
+extern void		upd72001_initialize(void);
+
+/*
+ *  I[vµÄ¢é|[gª é©H
+ */
+extern bool_t	upd72001_openflag(void);
+
+/*
+ *  VAI/O|[gÌI[v
+ */
+extern SIOPCB	*upd72001_opn_por(ID siopid, intptr_t exinf);
+
+/*
+ *  VAI/O|[gÌN[Y
+ */
+extern void		upd72001_cls_por(SIOPCB *siopcb);
+
+/*
+ *  VAI/O|[gÖÌ¶M
+ */
+extern bool_t	upd72001_snd_chr(SIOPCB *siopcb, char_t c);
+
+/*
+ *  VAI/O|[g©çÌ¶óM
+ */
+extern int_t	upd72001_rcv_chr(SIOPCB *siopcb);
+
+/*
+ *  VAI/O|[g©çÌR[obNÌÂ
+ */
+extern void		upd72001_ena_cbr(SIOPCB *siopcb, uint_t cbrtn);
+
+/*
+ *  VAI/O|[g©çÌR[obNÌÖ~
+ */
+extern void		upd72001_dis_cbr(SIOPCB *siopcb, uint_t cbrtn);
+
+/*
+ *  SIOÌÝT[rX[`
+ */
+extern void		upd72001_isr(void);
+
+/*
+ *  VAI/O|[g©çÌMÂ\R[obN
+ */
+extern void		upd72001_irdy_snd(intptr_t exinf);
+
+/*
+ *  VAI/O|[g©çÌóMÊmR[obN
+ */
+extern void		upd72001_irdy_rcv(intptr_t exinf);
+
+#endif /* TOPPERS_MACRO_ONLY */
+#endif /* TOPPERS_UPD72001_H */
Index: /asp_ewarm/asp-1.7.0/sample/Makefile
===================================================================
--- /asp_ewarm/asp-1.7.0/sample/Makefile	(revision 61)
+++ /asp_ewarm/asp-1.7.0/sample/Makefile	(revision 61)
@@ -0,0 +1,560 @@
+#
+#  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
+# 
+#  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+#  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+#  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+#  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+#       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+#      XR[hÉÜÜêÄ¢é±ÆD
+#  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+#      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+#      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+#      Ì³ÛØKèðfÚ·é±ÆD
+#  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+#      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+#      ÆD
+#    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+#        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+#    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+#        ñ·é±ÆD
+#  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+#      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+#      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+#      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+#      ÆÓ·é±ÆD
+# 
+#  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+#  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+#  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+#  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+#  ÌÓCðíÈ¢D
+# 
+#  @(#) $Id: Makefile 2048 2011-04-03 02:36:03Z ertl-hiro $
+# 
+
+#
+#  ^[QbgÌwèiMakefile.targetÅã«³êéÌðh®½ßj
+#
+all:
+
+#
+#  ^[QbgªÌÌè`
+#
+TARGET = @(TARGET)
+
+#
+#  vO~O¾êÌè`
+#
+SRCLANG = @(SRCLANG)
+ifeq ($(SRCLANG),c++)
+  USE_CXX = true
+  CXXLIBS = -lstdc++ -lm -lc
+  CXXRTS = cxxrt.o newlibrt.o
+endif
+
+#
+#  \[Xt@CÌfBNgÌè`
+#
+SRCDIR = @(SRCDIR)
+
+#
+#  IuWFNgt@C¼Ìg£qÌÝè
+#
+OBJEXT = @(OBJEXT)
+
+#
+#  ÀsÂ«Ìè`i^[QbgË¶Éã«³êéêª éj
+#
+DBGENV := @(DBGENV)
+
+#
+#  J[lCuilibkernel.ajÌfBNg¼
+#  iJ[lCuàmakeÎÛÉ·éÍCóÉè`·éj
+#
+KERNEL_LIB = @(KERNEL_LIB)
+
+#
+#  J[lðÖPÊÅRpC·é©Ç¤©Ìè`
+#
+KERNEL_FUNCOBJS = @(KERNEL_FUNCOBJS)
+
+#
+#  g[XOðæ¾·é©Ç¤©Ìè`
+#
+ENABLE_TRACE = @(ENABLE_TRACE)
+
+#
+#  [eBeBvOÌ¼Ì
+#
+PERL = @(PERL)
+CFG = @(CFG)
+
+#
+#  IuWFNgt@C¼Ìè`
+#
+OBJNAME = asp
+ifdef OBJEXT
+  OBJFILE = $(OBJNAME).$(OBJEXT)
+  CFG1_OUT = cfg1_out.$(OBJEXT)
+else
+  OBJFILE = $(OBJNAME)
+  CFG1_OUT = cfg1_out
+endif
+
+#
+#  ^[QbgË¶ÌfBNgÌè`
+#
+TARGETDIR = $(SRCDIR)/target/$(TARGET)
+
+#
+#  ^[QbgË¶Ìè`ÌCN[h
+#
+include $(TARGETDIR)/Makefile.target
+
+#
+#  RtBM
+[^ÖWÌÏÌè`
+#
+CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.csv \
+			--cfg1-def-table $(SRCDIR)/kernel/kernel_def.csv $(CFG_TABS)
+CFG_OBJS := kernel_cfg.o $(CFG_OBJS)
+CFG2_OUT := kernel_cfg.c kernel_cfg.h $(CFG2_OUT)
+
+#
+#  ¤ÊRpCIvVÌè`
+#
+COPTS := $(COPTS) -g
+ifndef OMIT_WARNING_ALL
+  COPTS := $(COPTS) -Wall
+endif
+ifndef OMIT_OPTIMIZATION
+  COPTS := $(COPTS) -O2
+endif
+CDEFS := $(CDEFS)
+INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR)/arch -I$(SRCDIR) $(INCLUDES)
+LDFLAGS := $(LDFLAGS)
+LIBS := $(LIBS) $(CXXLIBS)
+CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES)
+
+#
+#  AvP[VvOÉÖ·éè`
+#
+APPLNAME = @(APPLNAME)
+APPLDIR = @(APPLDIR)
+APPL_CFG = $(APPLNAME).cfg
+
+APPL_DIR = $(APPLDIR) $(SRCDIR)/library
+APPL_ASMOBJS =
+ifdef USE_CXX
+  APPL_CXXOBJS = $(APPLNAME).o @(APPLOBJS)
+  APPL_COBJS =
+else
+  APPL_COBJS = $(APPLNAME).o @(APPLOBJS)
+endif
+APPL_CFLAGS =
+APPL_LIBS =
+ifdef APPLDIR
+  INCLUDES := $(INCLUDES) $(foreach dir,$(APPLDIR),-I$(dir))
+endif
+
+#
+#  VXeT[rXÉÖ·éè`
+#
+SYSSVC_DIR := $(SYSSVC_DIR) $(SRCDIR)/syssvc $(SRCDIR)/library
+SYSSVC_ASMOBJS := $(SYSSVC_ASMOBJS)
+SYSSVC_COBJS := $(SYSSVC_COBJS) banner.o syslog.o serial.o logtask.o \
+				log_output.o vasyslog.o t_perror.o strerror.o \
+				$(CXXRTS)
+SYSSVC_CFLAGS := $(SYSSVC_CFLAGS)
+SYSSVC_LIBS := $(SYSSVC_LIBS)
+INCLUDES := $(INCLUDES)
+
+#
+#  J[lÉÖ·éè`
+#
+#  KERNEL_ASMOBJS: J[lCuÉÜßéC\[XªAZu¾êÌ
+#				   IuWFNgt@CD
+#  KERNEL_COBJS: J[lÌCuÉÜßéC\[XªC¾êÅC\[X
+#				 t@CÆ1Î1ÉÎ·éIuWFNgt@CD
+#  KERNEL_LCSRCS: J[lÌCuÉÜßéC¾êÌ\[Xt@CÅC
+#				  1ÂÌ\[Xt@C©ç¡ÌIuWFNgt@Cð¶
+#				  ¬·éàÌD
+#  KERNEL_LCOBJS: ãÌ\[Xt@C©ç¶¬³êéIuWFNgt@CD
+#  KERNEL_AUX_COBJS: [hW
+[ÉÜßÈ¢ªCJ[lÌ\[Xt@
+#					 CÆ¯¶IvVðKpµÄRpC·×«C\[
+#					 XªC¾êÌIuWFNgt@CD
+#
+KERNEL_DIR := $(KERNEL_DIR) $(SRCDIR)/kernel
+KERNEL_ASMOBJS := $(KERNEL_ASMOBJS)
+KERNEL_COBJS := $(KERNEL_COBJS)
+KERNEL_CFLAGS := $(KERNEL_CFLAGS) -I$(SRCDIR)/kernel
+ifdef OMIT_MAKEOFFSET
+  OFFSET_H =
+else
+  OFFSET_H = offset.h
+ifndef OFFSET_TF
+  KERNEL_AUX_COBJS := $(KERNEL_AUX_COBJS) makeoffset.o
+endif
+endif
+
+#
+#  ^[Qbgt@Ci¡ð¯ÉIðµÄÍÈçÈ¢j
+#
+all: $(OBJFILE)
+#all: $(OBJNAME).bin
+#all: $(OBJNAME).srec
+
+##### ÈºÍÒWµÈ¢±Æ #####
+
+#
+#  Â«ÉË¶·éRpCIvVÌè`
+#
+ifdef DBGENV
+  CDEFS := $(CDEFS) -D$(DBGENV)
+endif
+
+#
+#  J[lCuÉÖA·éè`
+#
+ifdef KERNEL_LIB
+  LIBKERNEL = $(KERNEL_LIB)/libkernel.a
+else
+  LIBKERNEL = libkernel.a
+endif
+
+#
+#  J[lÌt@C\¬Ìè`
+#
+include $(SRCDIR)/kernel/Makefile.kernel
+ifdef KERNEL_FUNCOBJS
+  KERNEL_LCSRCS := $(KERNEL_FCSRCS)
+  KERNEL_LCOBJS := $(foreach file,$(KERNEL_FCSRCS),$($(file:.c=)))
+else
+  KERNEL_CFLAGS := -DALLFUNC $(KERNEL_CFLAGS)
+  KERNEL_COBJS := $(KERNEL_COBJS) \
+					$(foreach file,$(KERNEL_FCSRCS),$(file:.c=.o))
+endif
+
+#
+#  \[Xt@CÌ éfBNgÉÖ·éè`
+#
+vpath %.c $(KERNEL_DIR) $(SYSSVC_DIR) $(APPL_DIR)
+vpath %.S $(KERNEL_DIR) $(SYSSVC_DIR) $(APPL_DIR)
+vpath %.cfg $(APPL_DIR)
+
+#
+#  RpCÌ½ßÌÏÌè`
+#
+KERNEL_LIB_OBJS = $(KERNEL_ASMOBJS) $(KERNEL_COBJS) $(KERNEL_LCOBJS)
+SYSSVC_OBJS = $(SYSSVC_ASMOBJS) $(SYSSVC_COBJS)
+APPL_OBJS = $(APPL_ASMOBJS) $(APPL_COBJS) $(APPL_CXXOBJS)
+ALL_OBJS = $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \
+											$(END_OBJS) $(HIDDEN_OBJS)
+ALL_LIBS = $(APPL_LIBS) $(SYSSVC_LIBS) $(LIBKERNEL) $(LIBS)
+
+ifdef TEXT_START_ADDRESS
+  LDFLAGS := $(LDFLAGS) -Wl,-Ttext,$(TEXT_START_ADDRESS)
+endif
+ifdef DATA_START_ADDRESS
+  LDFLAGS := $(LDFLAGS) -Wl,-Tdata,$(DATA_START_ADDRESS)
+endif
+ifdef LDSCRIPT
+  LDFLAGS := $(LDFLAGS) -T $(LDSCRIPT)
+endif
+
+#
+#  ItZbgt@Cioffset.hjÌ¶¬K¥
+#
+ifdef OFFSET_TF
+offset.h: kernel_cfg.timestamp
+	$(CFG) --pass 3 --kernel asp $(INCLUDES) \
+				--rom-image cfg1_out.srec --symbol-table cfg1_out.syms \
+				-T $(OFFSET_TF) $(CFG_TABS) $(APPL_CFG)
+else
+offset.h: makeoffset.s $(SRCDIR)/utils/genoffset
+	$(PERL) $(SRCDIR)/utils/genoffset makeoffset.s > offset.h
+endif
+
+#
+#  J[lÌRtBM
+[Vt@CÌ¶¬
+#
+cfg1_out.c: $(APPL_CFG)
+	$(CFG) --pass 1 --kernel asp $(INCLUDES) $(CFG_TABS) $<
+
+kernel_cfg.timestamp: $(START_OBJS) cfg1_out.o $(END_OBJS) $(HIDDEN_OBJS)
+kernel_cfg.timestamp $(CFG2_OUT): $(APPL_CFG)
+	$(LINK) $(CFLAGS) $(LDFLAGS) $(CFG1_OUT_LDFLAGS) -o $(CFG1_OUT) \
+						$(START_OBJS) cfg1_out.o $(END_OBJS)
+	$(NM) -C $(CFG1_OUT) > cfg1_out.syms
+	$(OBJCOPY) -O srec -S $(CFG1_OUT) cfg1_out.srec
+	$(CFG) --pass 2 --kernel asp $(INCLUDES) \
+				-T $(TARGETDIR)/target.tf $(CFG_TABS) $<
+	touch kernel_cfg.timestamp
+
+#
+#  J[lCut@CÌ¶¬
+#
+libkernel.a: $(OFFSET_H) $(KERNEL_LIB_OBJS)
+	rm -f libkernel.a
+	$(AR) -rcs libkernel.a $(KERNEL_LIB_OBJS)
+	$(RANLIB) libkernel.a
+
+#
+#  ÁÊÈË¶ÖWÌè`
+#
+banner.o: kernel_cfg.timestamp $(filter-out banner.o,$(ALL_OBJS)) \
+											$(filter %.a,$(ALL_LIBS))
+
+#
+#  SÌÌN
+#
+$(OBJFILE): $(APPL_CFG) kernel_cfg.timestamp $(ALL_OBJS) \
+											$(filter %.a,$(ALL_LIBS))
+	$(LINK) $(CFLAGS) $(LDFLAGS) -o $(OBJFILE) $(START_OBJS) \
+			$(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) $(ALL_LIBS) $(END_OBJS)
+	$(NM) -C $(OBJFILE) > $(OBJNAME).syms
+	$(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).srec
+	$(CFG) --pass 3 --kernel asp $(INCLUDES) \
+				--rom-image $(OBJNAME).srec --symbol-table $(OBJNAME).syms \
+				-T $(TARGETDIR)/target_check.tf $(CFG_TABS) $<
+
+#
+#  oCit@CÌ¶¬
+#
+$(OBJNAME).bin: $(OBJFILE)
+	$(OBJCOPY) -O binary -S $(OBJFILE) $(OBJNAME).bin
+
+#
+#  SR[ht@CÌ¶¬
+#
+$(OBJNAME).srec: $(OBJFILE)
+	$(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).srec
+
+#
+#  RpCÊÌÁ
+#
+.PHONY: clean
+clean:
+	rm -f \#* *~ *.o $(CLEAN_FILES)
+	rm -f $(OBJFILE) $(OBJNAME).syms $(OBJNAME).srec $(OBJNAME).bin
+	rm -f kernel_cfg.timestamp $(CFG2_OUT)
+	rm -f cfg1_out.c $(CFG1_OUT) cfg1_out.syms cfg1_out.srec
+ifndef KERNEL_LIB
+	rm -f $(LIBKERNEL)
+endif
+	rm -f makeoffset.s offset.h
+
+.PHONY: cleankernel
+cleankernel:
+	rm -rf $(KERNEL_LIB_OBJS)
+	rm -f makeoffset.s offset.h
+
+.PHONY: cleandep
+cleandep:
+	if ! [ -f Makefile.depend ]; then \
+		rm -f kernel_cfg.timestamp $(CFG2_OUT); \
+		rm -f cfg1_out.c cfg1_out.o $(CFG1_OUT) cfg1_out.syms cfg1_out.srec; \
+		rm -f makeoffset.s offset.h; \
+	fi
+	rm -f Makefile.depend
+
+.PHONY: realclean
+realclean: cleandep clean
+	rm -f $(REALCLEAN_FILES)
+
+#
+#  kernel_cfg.cÆcfg1_out.cÌRpC[ÆË¶ÖWì¬[Ìè`
+#
+#  kernel_cfg.cÆcfg1_out.cÍCAvP[VvOpCVXeT[
+#  rXpCJ[lpÌ·×ÄÌIvVðt¯ÄRpC·éD
+#
+KERNEL_CFG_CFLAGS = $(APPL_CFLAGS) $(SYSSVC_CFLAGS) $(KERNEL_CFLAGS)
+
+kernel_cfg.o cfg1_out.o: %.o: %.c
+	$(CC) -c $(CFLAGS) $(KERNEL_CFG_CFLAGS) $<
+
+kernel_cfg.s cfg1_out.s: %.s: %.c
+	$(CC) -S $(CFLAGS) $(KERNEL_CFG_CFLAGS) $<
+
+kernel_cfg.d cfg1_out.d: %.d: %.c
+	@$(PERL) $(SRCDIR)/utils/makedep -C $(CC) $(MAKEDEP_OPTS) \
+		-O "$(CFLAGS) $(KERNEL_CFG_CFLAGS)" $< >> Makefile.depend
+
+#
+#  ÁêÈË¶ÖWì¬[Ìè`
+#
+cfg1_out.depend: $(APPL_CFG)
+	@$(CFG) -M cfg1_out.c $(INCLUDES) $< >> Makefile.depend
+
+makeoffset.d: makeoffset.c
+	@$(PERL) $(SRCDIR)/utils/makedep -C $(CC) $(MAKEDEP_OPTS) \
+		-T "makeoffset.s" -O "$(CFLAGS) $(KERNEL_CFLAGS)" $< >> Makefile.depend
+
+#
+#  Ë¶ÖWt@CÌ¶¬
+#
+.PHONY: gendepend
+gendepend:
+	@echo "Generating Makefile.depend."
+
+.PHONY: depend
+ifdef KERNEL_LIB
+depend: cleandep kernel_cfg.timestamp gendepend \
+		cfg1_out.depend cfg1_out.d \
+		$(ALL_OBJS:.o=.d)
+else
+depend: cleandep $(OFFSET_H) kernel_cfg.timestamp gendepend \
+		cfg1_out.depend cfg1_out.d \
+		$(KERNEL_AUX_COBJS:.o=.d) $(KERNEL_ASMOBJS:.o=.d) \
+		$(KERNEL_COBJS:.o=.d) $(KERNEL_LCSRCS:.c=.d) $(ALL_OBJS:.o=.d)
+endif
+
+#
+#  Ë¶ÖWt@CðCN[h
+#
+-include Makefile.depend
+
+#
+#  J­c[ÌR}h¼Ìè`
+#
+ifeq ($(TOOL),gcc)
+  #
+  #  GNUJ­Â«p
+  #
+  ifdef GCC_TARGET
+    GCC_TARGET_PREFIX = $(GCC_TARGET)-
+  else
+    GCC_TARGET_PREFIX =
+  endif
+  CC = $(GCC_TARGET_PREFIX)gcc
+  CXX = $(GCC_TARGET_PREFIX)g++
+  AS = $(GCC_TARGET_PREFIX)as
+  LD = $(GCC_TARGET_PREFIX)ld
+  AR = $(GCC_TARGET_PREFIX)ar
+  NM = $(GCC_TARGET_PREFIX)nm
+  RANLIB = $(GCC_TARGET_PREFIX)ranlib
+  OBJCOPY = $(GCC_TARGET_PREFIX)objcopy
+  OBJDUMP = $(GCC_TARGET_PREFIX)objdump
+endif
+
+ifdef USE_CXX
+  LINK = $(CXX)
+else
+  LINK = $(CC)
+endif
+
+#
+#  RpC[Ìè`
+#
+KERNEL_ALL_COBJS = $(KERNEL_COBJS) $(KERNEL_AUX_COBJS)
+
+$(KERNEL_ALL_COBJS): %.o: %.c
+	$(CC) -c $(CFLAGS) $(KERNEL_CFLAGS) $<
+
+$(KERNEL_ALL_COBJS:.o=.s): %.s: %.c
+	$(CC) -S $(CFLAGS) $(KERNEL_CFLAGS) $<
+
+$(KERNEL_LCOBJS): %.o:
+	$(CC) -DTOPPERS_$(*F) -o $@ -c $(CFLAGS) $(KERNEL_CFLAGS) $<
+
+$(KERNEL_LCOBJS:.o=.s): %.s:
+	$(CC) -DTOPPERS_$(*F) -o $@ -S $(CFLAGS) $(KERNEL_CFLAGS) $<
+
+$(KERNEL_ASMOBJS): %.o: %.S
+	$(CC) -c $(CFLAGS) $(KERNEL_CFLAGS) $<
+
+$(SYSSVC_COBJS): %.o: %.c
+	$(CC) -c $(CFLAGS) $(SYSSVC_CFLAGS) $<
+
+$(SYSSVC_COBJS:.o=.s): %.s: %.c
+	$(CC) -S $(CFLAGS) $(SYSSVC_CFLAGS) $<
+
+$(SYSSVC_ASMOBJS): %.o: %.S
+	$(CC) -c $(CFLAGS) $(SYSSVC_CFLAGS) $<
+
+$(APPL_COBJS): %.o: %.c
+	$(CC) -c $(CFLAGS) $(APPL_CFLAGS) $<
+
+$(APPL_COBJS:.o=.s): %.s: %.c
+	$(CC) -S $(CFLAGS) $(APPL_CFLAGS) $<
+
+$(APPL_CXXOBJS): %.o: %.cpp
+	$(CXX) -c $(CFLAGS) $(APPL_CFLAGS) $<
+
+$(APPL_CXXOBJS:.o=.s): %.s: %.cpp
+	$(CXX) -S $(CFLAGS) $(APPL_CFLAGS) $<
+
+$(APPL_ASMOBJS): %.o: %.S
+	$(CC) -c $(CFLAGS) $(APPL_CFLAGS) $<
+
+#
+#  Ë¶ÖWì¬[Ìè`
+#
+$(KERNEL_COBJS:.o=.d): %.d: %.c
+	@$(PERL) $(SRCDIR)/utils/makedep -C $(CC) $(MAKEDEP_OPTS) \
+		-O "$(CFLAGS) $(KERNEL_CFLAGS)" $< >> Makefile.depend
+
+$(KERNEL_LCSRCS:.c=.d): %.d: %.c
+	@$(PERL) $(SRCDIR)/utils/makedep -C $(CC) $(MAKEDEP_OPTS) -T "$($*)" \
+		-O "-DALLFUNC $(CFLAGS) $(KERNEL_CFLAGS)" $< >> Makefile.depend
+
+$(KERNEL_ASMOBJS:.o=.d): %.d: %.S
+	@$(PERL) $(SRCDIR)/utils/makedep -C $(CC) $(MAKEDEP_OPTS) \
+		-O "$(CFLAGS) $(KERNEL_CFLAGS)" $< >> Makefile.depend
+
+$(SYSSVC_COBJS:.o=.d): %.d: %.c
+	@$(PERL) $(SRCDIR)/utils/makedep -C $(CC) $(MAKEDEP_OPTS) \
+		-O "$(CFLAGS) $(SYSSVC_CFLAGS)" $< >> Makefile.depend
+
+$(SYSSVC_ASMOBJS:.o=.d): %.d: %.S
+	@$(PERL) $(SRCDIR)/utils/makedep -C $(CC) $(MAKEDEP_OPTS) \
+		-O "$(CFLAGS) $(SYSSVC_CFLAGS)" $< >> Makefile.depend
+
+$(APPL_COBJS:.o=.d): %.d: %.c
+	@$(PERL) $(SRCDIR)/utils/makedep -C $(CC) $(MAKEDEP_OPTS) \
+		-O "$(CFLAGS) $(APPL_CFLAGS)" $< >> Makefile.depend
+
+$(APPL_CXXOBJS:.o=.d): %.d: %.cpp
+	@$(PERL) $(SRCDIR)/utils/makedep -C $(CXX) $(MAKEDEP_OPTS) \
+		-O "$(CFLAGS) $(APPL_CFLAGS)" $< >> Makefile.depend
+
+$(APPL_ASMOBJS:.o=.d): %.d: %.S
+	@$(PERL) $(SRCDIR)/utils/makedep -C $(CC) $(MAKEDEP_OPTS) \
+		-O "$(CFLAGS) $(APPL_CFLAGS)" $< >> Makefile.depend
+
+#
+#  ftHgRpC[ðã«
+#
+%.o: %.c
+	@echo "*** Default compile rules should not be used."
+	$(CC) -c $(CFLAGS) $<
+
+%.s: %.c
+	@echo "*** Default compile rules should not be used."
+	$(CC) -S $(CFLAGS) $<
+
+%.o: %.cpp
+	@echo "*** Default compile rules should not be used."
+	$(CXX) -c $(CFLAGS) $<
+
+%.s: %.cpp
+	@echo "*** Default compile rules should not be used."
+	$(CXX) -S $(CFLAGS) $<
+
+%.o: %.S
+	@echo "*** Default compile rules should not be used."
+	$(CC) -c $(CFLAGS) $<
Index: /asp_ewarm/asp-1.7.0/sample/sample1.c
===================================================================
--- /asp_ewarm/asp-1.7.0/sample/sample1.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/sample/sample1.c	(revision 61)
@@ -0,0 +1,516 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: sample1.c 1797 2010-06-07 04:24:19Z ertl-hiro $
+ */
+
+/* 
+ *  TvvO(1)Ì{Ì
+ *
+ *  ASPJ[lÌî{IÈ®ìðmF·é½ßÌTvvOD
+ *
+ *  vOÌTv:
+ *
+ *  [UC^tF[Xðó¯ÂC^XNi^XNID: MAIN_TASKCD
+ *  æx: MAIN_PRIORITYjÆC3ÂÌÀñÀs³êé^XNi^XNID:
+ *  TASK1`TASK3CúDæx: MID_PRIORITYjÅ\¬³êéDÜ½CN®ü
+ *  úª2bÌüúnhiüúnhID: CYCHDR1jðp¢éD
+ *
+ *  ÀñÀs³êé^XNÍCtask_loopñó[vðÀs·éxÉC^XNª
+ *  ÀsÅ é±Æð çí·bZ[Wð\¦·éD
+ *
+ *  üúnhÍCOÂÌDæxiHIGH_PRIORITYCMID_PRIORITYC
+ *  LOW_PRIORITYjÌfBL
+[ðñ]³¹éDvOÌN®¼ãÍC
+ *  üúnhÍâ~óÔÉÈÁÄ¢éD
+ *
+ *  C^XNÍCVAI/O|[g©çÌ¶üÍðs¢i¶üÍð
+ *  ÒÁÄ¢éÔÍCÀñÀs³êé^XNªÀs³êÄ¢éjCüÍ³ê½
+ *  ¶ÉÎµ½ðÀs·éDüÍ³ê½¶ÆÌÖWÍÌÊèD
+ *  Control-CÜ½Í'Q'ªüÍ³êéÆCvOðI¹·éD
+ *
+ *  '1' : ÎÛ^XNðTASK1ÉØè·¦éiúÝèjD
+ *  '2' : ÎÛ^XNðTASK2ÉØè·¦éD
+ *  '3' : ÎÛ^XNðTASK3ÉØè·¦éD
+ *  'a' : ÎÛ^XNðact_tskÉæèN®·éD
+ *  'A' : ÎÛ^XNÉÎ·éN®vðcan_actÉæèLZ·éD
+ *  'e' : ÎÛ^XNÉext_tskðÄÑo³¹CI¹³¹éD
+ *  't' : ÎÛ^XNðter_tskÉæè­§I¹·éD
+ *  '>' : ÎÛ^XNÌDæxðHIGH_PRIORITYÉ·éD
+ *  '=' : ÎÛ^XNÌDæxðMID_PRIORITYÉ·éD
+ *  '<' : ÎÛ^XNÌDæxðLOW_PRIORITYÉ·éD
+ *  'G' : ÎÛ^XNÌDæxðget_priÅÇÝo·D
+ *  's' : ÎÛ^XNÉslp_tskðÄÑo³¹CN°Ò¿É³¹éD
+ *  'S' : ÎÛ^XNÉtslp_tsk(10b)ðÄÑo³¹CN°Ò¿É³¹éD
+ *  'w' : ÎÛ^XNðwup_tskÉæèN°·éD
+ *  'W' : ÎÛ^XNÉÎ·éN°vðcan_wupÉæèLZ·éD
+ *  'l' : ÎÛ^XNðrel_waiÉæè­§IÉÒ¿ðÉ·éD
+ *  'u' : ÎÛ^XNðsus_tskÉæè­§Ò¿óÔÉ·éD
+ *  'm' : ÎÛ^XNÌ­§Ò¿óÔðrsm_tskÉæèð·éD
+ *  'd' : ÎÛ^XNÉdly_tsk(10b)ðÄÑo³¹CÔoßÒ¿É³¹éD
+ *  'x' : ÎÛ^XNÉáOp^[0x0001ÌáOðv·éD
+ *  'X' : ÎÛ^XNÉáOp^[0x0002ÌáOðv·éD
+ *  'y' : ÎÛ^XNÉdis_texðÄÑo³¹C^XNáOðÖ~·éD
+ *  'Y' : ÎÛ^XNÉena_texðÄÑo³¹C^XNáOðÂ·éD
+ *  'r' : 3ÂÌDæxiHIGH_PRIORITYCMID_PRIORITYCLOW_PRIORITYjÌ
+ *        fBL
+[ðñ]³¹éD
+ *  'c' : üúnhð®ìJn³¹éD
+ *  'C' : üúnhð®ìâ~³¹éD
+ *  'b' : A[nhð5bãÉN®·éæ¤®ìJn³¹éD
+ *  'B' : A[nhð®ìâ~³¹éD
+ *  'z' : ÎÛ^XNÉCPUáOð­¶³¹éi^XNðI¹³¹éjD
+ *  'Z' : ÎÛ^XNÉCPUbNóÔÅCPUáOð­¶³¹éivOð
+ *        I¹·éjD
+ *  'V' : get_utmÅ«\]¿pVXeð2ñÇÞD
+ *  'v' : ­sµ½VXeR[ð\¦·éiftHgjD
+ *  'q' : ­sµ½VXeR[ð\¦µÈ¢D
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include <t_stdlib.h>
+#include "syssvc/serial.h"
+#include "syssvc/syslog.h"
+#include "kernel_cfg.h"
+#include "sample1.h"
+
+/*
+ *  T[rXR[ÌG[ÌOoÍ
+ */
+Inline void
+svc_perror(const char *file, int_t line, const char *expr, ER ercd)
+{
+	if (ercd < 0) {
+		t_perror(LOG_ERROR, file, line, expr, ercd);
+	}
+}
+
+#define	SVC_PERROR(expr)	svc_perror(__FILE__, __LINE__, #expr, (expr))
+
+/*
+ *  ÀsÀs³êé^XNÖÌbZ[WÌæ
+ */
+char_t	message[3];
+
+/*
+ *  [vñ
+ */
+ulong_t	task_loop;		/* ^XNàÅÌ[vñ */
+ulong_t	tex_loop;		/* áO[`àÅÌ[vñ */
+
+/*
+ *  ÀsÀs³êé^XN
+ */
+void task(intptr_t exinf)
+{
+	volatile ulong_t	i;
+	int_t		n = 0;
+	int_t		tskno = (int_t) exinf;
+	const char	*graph[] = { "|", "  +", "    *" };
+	char_t		c;
+
+	SVC_PERROR(ena_tex());
+	while (1) {
+		syslog(LOG_NOTICE, "task%d is running (%03d).   %s",
+										tskno, ++n, graph[tskno-1]);
+		for (i = 0; i < task_loop; i++);
+		c = message[tskno-1];
+		message[tskno-1] = 0;
+		switch (c) {
+		case 'e':
+			syslog(LOG_INFO, "#%d#ext_tsk()", tskno);
+			SVC_PERROR(ext_tsk());
+			assert(0);
+		case 's':
+			syslog(LOG_INFO, "#%d#slp_tsk()", tskno);
+			SVC_PERROR(slp_tsk());
+			break;
+		case 'S':
+			syslog(LOG_INFO, "#%d#tslp_tsk(10000)", tskno);
+			SVC_PERROR(tslp_tsk(10000));
+			break;
+		case 'd':
+			syslog(LOG_INFO, "#%d#dly_tsk(10000)", tskno);
+			SVC_PERROR(dly_tsk(10000));
+			break;
+		case 'y':
+			syslog(LOG_INFO, "#%d#dis_tex()", tskno);
+			SVC_PERROR(dis_tex());
+			break;
+		case 'Y':
+			syslog(LOG_INFO, "#%d#ena_tex()", tskno);
+			SVC_PERROR(ena_tex());
+			break;
+#ifdef CPUEXC1
+		case 'z':
+			syslog(LOG_NOTICE, "#%d#raise CPU exception", tskno);
+			RAISE_CPU_EXCEPTION;
+			break;
+		case 'Z':
+			SVC_PERROR(loc_cpu());
+			syslog(LOG_NOTICE, "#%d#raise CPU exception", tskno);
+			RAISE_CPU_EXCEPTION;
+			SVC_PERROR(unl_cpu());
+			break;
+#endif /* CPUEXC1 */
+		default:
+			break;
+		}
+	}
+}
+
+/*
+ *  ÀsµÄÀs³êé^XNpÌ^XNáO[`
+ */
+void tex_routine(TEXPTN texptn, intptr_t exinf)
+{
+	volatile ulong_t	i;
+	int_t	tskno = (int_t) exinf;
+
+	syslog(LOG_NOTICE, "task%d receives exception 0x%04x.", tskno, texptn);
+	for (i = 0; i < tex_loop; i++);
+
+	if ((texptn & 0x8000U) != 0U) {
+		syslog(LOG_INFO, "#%d#ext_tsk()", tskno);
+		SVC_PERROR(ext_tsk());
+		assert(0);
+	}
+}
+
+/*
+ *  CPUáOnh
+ */
+#ifdef CPUEXC1
+
+void
+cpuexc_handler(void *p_excinf)
+{
+	ID		tskid;
+
+	syslog(LOG_NOTICE, "CPU exception handler (p_excinf = %08p).", p_excinf);
+	if (sns_ctx() != true) {
+		syslog(LOG_WARNING,
+					"sns_ctx() is not true in CPU exception handler.");
+	}
+	if (sns_dpn() != true) {
+		syslog(LOG_WARNING,
+					"sns_dpn() is not true in CPU exception handler.");
+	}
+	syslog(LOG_INFO, "sns_loc = %d sns_dsp = %d sns_tex = %d",
+									sns_loc(), sns_dsp(), sns_tex());
+	syslog(LOG_INFO, "xsns_dpn = %d xsns_xpn = %d",
+									xsns_dpn(p_excinf), xsns_xpn(p_excinf));
+
+	if (xsns_xpn(p_excinf)) {
+		syslog(LOG_NOTICE, "Sample program ends with exception.");
+		SVC_PERROR(ext_ker());
+		assert(0);
+	}
+
+	SVC_PERROR(iget_tid(&tskid));
+	SVC_PERROR(iras_tex(tskid, 0x8000U));
+}
+
+#endif /* CPUEXC1 */
+
+/*
+ *  üúnh
+ *
+ *  HIGH_PRIORITYCMID_PRIORITYCLOW_PRIORITY ÌeDæxÌfBL
+[
+ *  ðñ]³¹éD
+ */
+void cyclic_handler(intptr_t exinf)
+{
+	SVC_PERROR(irot_rdq(HIGH_PRIORITY));
+	SVC_PERROR(irot_rdq(MID_PRIORITY));
+	SVC_PERROR(irot_rdq(LOW_PRIORITY));
+}
+
+/*
+ *  A[nh
+ *
+ *  HIGH_PRIORITYCMID_PRIORITYCLOW_PRIORITY ÌeDæxÌfBL
+[
+ *  ðñ]³¹éD
+ */
+void alarm_handler(intptr_t exinf)
+{
+	SVC_PERROR(irot_rdq(HIGH_PRIORITY));
+	SVC_PERROR(irot_rdq(MID_PRIORITY));
+	SVC_PERROR(irot_rdq(LOW_PRIORITY));
+}
+
+/*
+ *  C^XN
+ */
+void main_task(intptr_t exinf)
+{
+	char_t	c;
+	ID		tskid = TASK1;
+	int_t	tskno = 1;
+	ER_UINT	ercd;
+	PRI		tskpri;
+#ifndef TASK_LOOP
+	volatile ulong_t	i;
+	SYSTIM	stime1, stime2;
+#endif /* TASK_LOOP */
+#ifdef TOPPERS_SUPPORT_GET_UTM
+	SYSUTM	utime1, utime2;
+#endif /* TOPPERS_SUPPORT_GET_UTM */
+
+	SVC_PERROR(syslog_msk_log(LOG_UPTO(LOG_INFO), LOG_UPTO(LOG_EMERG)));
+	syslog(LOG_NOTICE, "Sample program starts (exinf = %d).", (int_t) exinf);
+
+	/*
+	 *  VA|[gÌú»
+	 *
+	 *  VXeO^XNÆ¯¶VA|[gðg¤êÈÇCVA
+	 *  |[gªI[vÏÝÌêÉÍ±±ÅE_OBJG[ÉÈéªCxáÍ
+	 *  È¢D
+	 */
+	ercd = serial_opn_por(TASK_PORTID);
+	if (ercd < 0 && MERCD(ercd) != E_OBJ) {
+		syslog(LOG_ERROR, "%s (%d) reported by `serial_opn_por'.",
+									itron_strerror(ercd), SERCD(ercd));
+	}
+	SVC_PERROR(serial_ctl_por(TASK_PORTID,
+							(IOCTL_CRLF | IOCTL_FCSND | IOCTL_FCRCV)));
+
+	/*
+ 	 *  [vñÌÝè
+	 *
+	 *  TASK_LOOPª}Nè`³êÄ¢éêCªè¹¸ÉCTASK_LOOPÉè
+	 *  `³ê½lðC^XNàÅÌ[vñÆ·éD
+	 *
+	 *  MEASURE_TWICEª}Nè`³êÄ¢éêC1ñÚÌªèÊðÌÄ
+	 *  ÄC2ñÚÌªèÊðg¤D1ñÚÌªèÍ·ßÌÔªoé½ßD
+	 */
+#ifdef TASK_LOOP
+	task_loop = TASK_LOOP;
+#else /* TASK_LOOP */
+
+#ifdef MEASURE_TWICE
+	task_loop = LOOP_REF;
+	SVC_PERROR(get_tim(&stime1));
+	for (i = 0; i < task_loop; i++);
+	SVC_PERROR(get_tim(&stime2));
+#endif /* MEASURE_TWICE */
+
+	task_loop = LOOP_REF;
+	SVC_PERROR(get_tim(&stime1));
+	for (i = 0; i < task_loop; i++);
+	SVC_PERROR(get_tim(&stime2));
+	task_loop = LOOP_REF * 400UL / (stime2 - stime1);
+
+#endif /* TASK_LOOP */
+	tex_loop = task_loop / 5;
+
+	/*
+ 	 *  ^XNÌN®
+	 */
+	SVC_PERROR(act_tsk(TASK1));
+	SVC_PERROR(act_tsk(TASK2));
+	SVC_PERROR(act_tsk(TASK3));
+
+	/*
+ 	 *  C[v
+	 */
+	do {
+		SVC_PERROR(serial_rea_dat(TASK_PORTID, &c, 1));
+		switch (c) {
+		case 'e':
+		case 's':
+		case 'S':
+		case 'd':
+		case 'y':
+		case 'Y':
+		case 'z':
+		case 'Z':
+			message[tskno-1] = c;
+			break;
+		case '1':
+			tskno = 1;
+			tskid = TASK1;
+			break;
+		case '2':
+			tskno = 2;
+			tskid = TASK2;
+			break;
+		case '3':
+			tskno = 3;
+			tskid = TASK3;
+			break;
+		case 'a':
+			syslog(LOG_INFO, "#act_tsk(%d)", tskno);
+			SVC_PERROR(act_tsk(tskid));
+			break;
+		case 'A':
+			syslog(LOG_INFO, "#can_act(%d)", tskno);
+			SVC_PERROR(ercd = can_act(tskid));
+			if (ercd >= 0) {
+				syslog(LOG_NOTICE, "can_act(%d) returns %d", tskno, ercd);
+			}
+			break;
+		case 't':
+			syslog(LOG_INFO, "#ter_tsk(%d)", tskno);
+			SVC_PERROR(ter_tsk(tskid));
+			break;
+		case '>':
+			syslog(LOG_INFO, "#chg_pri(%d, HIGH_PRIORITY)", tskno);
+			SVC_PERROR(chg_pri(tskid, HIGH_PRIORITY));
+			break;
+		case '=':
+			syslog(LOG_INFO, "#chg_pri(%d, MID_PRIORITY)", tskno);
+			SVC_PERROR(chg_pri(tskid, MID_PRIORITY));
+			break;
+		case '<':
+			syslog(LOG_INFO, "#chg_pri(%d, LOW_PRIORITY)", tskno);
+			SVC_PERROR(chg_pri(tskid, LOW_PRIORITY));
+			break;
+		case 'G':
+			syslog(LOG_INFO, "#get_pri(%d, &tskpri)", tskno);
+			SVC_PERROR(ercd = get_pri(tskid, &tskpri));
+			if (ercd >= 0) {
+				syslog(LOG_NOTICE, "priority of task %d is %d", tskno, tskpri);
+			}
+			break;
+		case 'w':
+			syslog(LOG_INFO, "#wup_tsk(%d)", tskno);
+			SVC_PERROR(wup_tsk(tskid));
+			break;
+		case 'W':
+			syslog(LOG_INFO, "#can_wup(%d)", tskno);
+			SVC_PERROR(ercd = can_wup(tskid));
+			if (ercd >= 0) {
+				syslog(LOG_NOTICE, "can_wup(%d) returns %d", tskno, ercd);
+			}
+			break;
+		case 'l':
+			syslog(LOG_INFO, "#rel_wai(%d)", tskno);
+			SVC_PERROR(rel_wai(tskid));
+			break;
+		case 'u':
+			syslog(LOG_INFO, "#sus_tsk(%d)", tskno);
+			SVC_PERROR(sus_tsk(tskid));
+			break;
+		case 'm':
+			syslog(LOG_INFO, "#rsm_tsk(%d)", tskno);
+			SVC_PERROR(rsm_tsk(tskid));
+			break;
+		case 'x':
+			syslog(LOG_INFO, "#ras_tex(%d, 0x0001U)", tskno);
+			SVC_PERROR(ras_tex(tskid, 0x0001U));
+			break;
+		case 'X':
+			syslog(LOG_INFO, "#ras_tex(%d, 0x0002U)", tskno);
+			SVC_PERROR(ras_tex(tskid, 0x0002U));
+			break;
+		case 'r':
+			syslog(LOG_INFO, "#rot_rdq(three priorities)");
+			SVC_PERROR(rot_rdq(HIGH_PRIORITY));
+			SVC_PERROR(rot_rdq(MID_PRIORITY));
+			SVC_PERROR(rot_rdq(LOW_PRIORITY));
+			break;
+		case 'c':
+			syslog(LOG_INFO, "#sta_cyc(1)");
+			SVC_PERROR(sta_cyc(CYCHDR1));
+			break;
+		case 'C':
+			syslog(LOG_INFO, "#stp_cyc(1)");
+			SVC_PERROR(stp_cyc(CYCHDR1));
+			break;
+		case 'b':
+			syslog(LOG_INFO, "#sta_alm(1, 5000)");
+			SVC_PERROR(sta_alm(ALMHDR1, 5000));
+			break;
+		case 'B':
+			syslog(LOG_INFO, "#stp_alm(1)");
+			SVC_PERROR(stp_alm(ALMHDR1));
+			break;
+
+		case 'V':
+#ifdef TOPPERS_SUPPORT_GET_UTM
+			SVC_PERROR(get_utm(&utime1));
+			SVC_PERROR(get_utm(&utime2));
+			syslog(LOG_NOTICE, "utime1 = %ld, utime2 = %ld",
+										(ulong_t) utime1, (ulong_t) utime2);
+#else /* TOPPERS_SUPPORT_GET_UTM */
+			syslog(LOG_NOTICE, "get_utm is not supported.");
+#endif /* TOPPERS_SUPPORT_GET_UTM */
+			break;
+
+		case 'v':
+			SVC_PERROR(syslog_msk_log(LOG_UPTO(LOG_INFO),
+										LOG_UPTO(LOG_EMERG)));
+			break;
+		case 'q':
+			SVC_PERROR(syslog_msk_log(LOG_UPTO(LOG_NOTICE),
+										LOG_UPTO(LOG_EMERG)));
+			break;
+
+#ifdef BIT_KERNEL
+		case ' ':
+			SVC_PERROR(loc_cpu());
+			{
+				extern ER	bit_kernel(void);
+
+				SVC_PERROR(ercd = bit_kernel());
+				if (ercd >= 0) {
+					syslog(LOG_NOTICE, "bit_kernel passed.");
+				}
+			}
+			SVC_PERROR(unl_cpu());
+			break;
+#endif /* BIT_KERNEL */
+
+		default:
+			break;
+		}
+	} while (c != '\003' && c != 'Q');
+
+	syslog(LOG_NOTICE, "Sample program ends.");
+	SVC_PERROR(ext_ker());
+	assert(0);
+}
Index: /asp_ewarm/asp-1.7.0/sample/sample1.cfg
===================================================================
--- /asp_ewarm/asp-1.7.0/sample/sample1.cfg	(revision 61)
+++ /asp_ewarm/asp-1.7.0/sample/sample1.cfg	(revision 61)
@@ -0,0 +1,27 @@
+/*
+ *  @(#) $Id: sample1.cfg 718 2008-01-01 12:30:48Z hiro $
+ */
+
+/*
+ *  TvvO(1)ÌVXeRtBM
+[Vt@C
+ */
+INCLUDE("target_timer.cfg");
+INCLUDE("syssvc/syslog.cfg");
+INCLUDE("syssvc/banner.cfg");
+INCLUDE("syssvc/serial.cfg");
+INCLUDE("syssvc/logtask.cfg");
+
+#include "sample1.h"
+CRE_TSK(TASK1, { TA_NULL, 1, task, MID_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK2, { TA_NULL, 2, task, MID_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK3, { TA_NULL, 3, task, MID_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(MAIN_TASK, { TA_ACT, 0, main_task, MAIN_PRIORITY, STACK_SIZE, NULL });
+DEF_TEX(TASK1, { TA_NULL, tex_routine });
+DEF_TEX(TASK2, { TA_NULL, tex_routine });
+DEF_TEX(TASK3, { TA_NULL, tex_routine });
+CRE_CYC(CYCHDR1, { TA_NULL, 0, cyclic_handler, 2000, 0 });
+CRE_ALM(ALMHDR1, { TA_NULL, 0, alarm_handler });
+#ifdef CPUEXC1
+DEF_EXC(CPUEXC1, { TA_NULL, cpuexc_handler });
+#endif /* CPUEXC1 */
Index: /asp_ewarm/asp-1.7.0/sample/sample1.h
===================================================================
--- /asp_ewarm/asp-1.7.0/sample/sample1.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/sample/sample1.h	(revision 61)
@@ -0,0 +1,97 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ *
+ *  @(#) $Id: sample1.h 1716 2010-01-31 11:39:18Z ertl-hiro $
+ */
+
+/*
+ *		TvvO(1)Ìwb_t@C
+ */
+
+/*
+ *  ^[QbgË¶Ìè`
+ */
+#include "target_test.h"
+
+/*
+ *  e^XNÌDæxÌè`
+ */
+
+#define MAIN_PRIORITY	5		/* C^XNÌDæx */
+								/* HIGH_PRIORITYæè­·é±Æ */
+
+#define HIGH_PRIORITY	9		/* ÀñÉÀs³êé^XNÌDæx */
+#define MID_PRIORITY	10
+#define LOW_PRIORITY	11
+
+/*
+ *  ^[QbgÉË¶·éÂ\«Ì éèÌè`
+ */
+
+#ifndef TASK_PORTID
+#define	TASK_PORTID		1			/* ¶üÍ·éVA|[gID */
+#endif /* TASK_PORTID */
+
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ^XNÌX^bNTCY */
+#endif /* STACK_SIZE */
+
+#ifndef LOOP_REF
+#define LOOP_REF		ULONG_C(1000000)	/* ¬xvªpÌ[vñ */
+#endif /* LOOP_REF */
+
+/*
+ *  ÖÌvg^Cvé¾
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+extern void	task(intptr_t exinf);
+extern void	main_task(intptr_t exinf);
+extern void	tex_routine(TEXPTN texptn, intptr_t exinf);
+#ifdef CPUEXC1
+extern void	cpuexc_handler(void *p_excinf);
+#endif /* CPUEXC1 */
+extern void	cyclic_handler(intptr_t exinf);
+extern void	alarm_handler(intptr_t exinf);
+
+#endif /* TOPPERS_MACRO_ONLY */
Index: /asp_ewarm/asp-1.7.0/syssvc/banner.c
===================================================================
--- /asp_ewarm/asp-1.7.0/syssvc/banner.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/syssvc/banner.c	(revision 61)
@@ -0,0 +1,75 @@
+/*
+ *  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-2011 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: banner.c 2042 2011-03-06 11:26:14Z ertl-hiro $
+ */
+
+/*
+ *		J[lN®bZ[WÌoÍ
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include "target_syssvc.h"
+
+#ifndef TARGET_COPYRIGHT
+#define TARGET_COPYRIGHT
+#endif /* TARGET_COPYRIGHT */
+
+static const char banner[] = "\n"
+"TOPPERS/ASP Kernel Release %d.%X.%d for " TARGET_NAME
+" (" __DATE__ ", " __TIME__ ")\n"
+"Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory\n"
+"                            Toyohashi Univ. of Technology, JAPAN\n"
+"Copyright (C) 2004-2011 by Embedded and Real-Time Systems Laboratory\n"
+"            Graduate School of Information Science, Nagoya Univ., JAPAN\n"
+TARGET_COPYRIGHT;
+
+void
+print_banner(intptr_t exinf)
+{
+	syslog_3(LOG_NOTICE, banner,
+				(TKERNEL_PRVER >> 12) & 0x0fU,
+				(TKERNEL_PRVER >> 4) & 0xffU,
+				TKERNEL_PRVER & 0x0fU);
+}
Index: /asp_ewarm/asp-1.7.0/syssvc/banner.cfg
===================================================================
--- /asp_ewarm/asp-1.7.0/syssvc/banner.cfg	(revision 61)
+++ /asp_ewarm/asp-1.7.0/syssvc/banner.cfg	(revision 61)
@@ -0,0 +1,11 @@
+/*
+ *  @(#) $Id: banner.cfg 823 2008-03-18 13:02:11Z hiro $
+ */
+
+/*
+ *		J[lN®bZ[WÌoÍÌRtBM
+[Vt@C
+ */
+
+#include "syssvc/banner.h"
+ATT_INI({ TA_NULL, 0, print_banner });
Index: /asp_ewarm/asp-1.7.0/syssvc/banner.h
===================================================================
--- /asp_ewarm/asp-1.7.0/syssvc/banner.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/syssvc/banner.h	(revision 61)
@@ -0,0 +1,57 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: banner.h 774 2008-03-08 06:35:57Z hiro $
+ */
+
+/*
+ *		J[lN®bZ[WÌoÍ
+ */
+
+#ifndef TOPPERS_BANNER_H
+#define TOPPERS_BANNER_H
+
+/*
+ *  J[lN®bZ[WÌoÍ
+ */
+extern void	print_banner(intptr_t exinf) throw();
+
+#endif /* TOPPERS_BANNER_H */
Index: /asp_ewarm/asp-1.7.0/syssvc/logtask.c
===================================================================
--- /asp_ewarm/asp-1.7.0/syssvc/logtask.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/syssvc/logtask.c	(revision 61)
@@ -0,0 +1,202 @@
+/*
+ *  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-2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: logtask.c 1111 2008-06-12 08:42:26Z ertl-hiro $
+ */
+
+/*
+ *		VXeO^XN
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include <log_output.h>
+#include "syssvc/serial.h"
+#include "syssvc/syslog.h"
+#include "logtask.h"
+
+/*
+ *  VXeO^XNÌoÍæÌ|[gID
+ */
+static ID	logtask_portid;
+
+/*
+ *  VAC^tF[XÖÌ1¶oÍ
+ */
+static void
+logtask_putc(char_t c)
+{
+	serial_wri_dat(logtask_portid, &c, 1);
+}
+
+/*
+ *  VXeOoÍÌÒ¿í¹
+ */
+ER
+logtask_flush(uint_t count)
+{
+	T_SYSLOG_RLOG	rlog;
+	T_SERIAL_RPOR	rpor;
+	ER				ercd, rercd;
+
+	if (sns_dpn()) {
+		ercd = E_CTX;
+	}
+	else {
+		for (;;) {
+			if (syslog_ref_log(&rlog) < 0) {
+				ercd = E_SYS;
+				goto error_exit;
+			}
+			if (rlog.count <= count) {
+				if (count == 0U) {
+					/*
+					 *  countª0ÌêÉÍCVAobt@ªó©ðm
+					 *  F·éD
+					 */
+					if (serial_ref_por(logtask_portid, &rpor) < 0) {
+						ercd = E_SYS;
+						goto error_exit;
+					}
+					if (rpor.wricnt == 0U) {
+						ercd = E_OK;
+						goto error_exit;
+					}
+				}
+				else {
+					ercd = E_OK;
+					goto error_exit;
+				}
+			}
+
+			/*
+			 *  LOGTASK_FLUSH_WAIT~bÒÂD
+			 */
+			rercd = dly_tsk(LOGTASK_FLUSH_WAIT);
+			if (rercd < 0) {
+				ercd = (rercd == E_RLWAI) ? rercd : E_SYS;
+				goto error_exit;
+			}
+		}
+	}
+
+  error_exit:
+	return(ercd);
+}
+
+/*
+ *  VXeO^XNÌ{Ì
+ */
+void
+logtask_main(intptr_t exinf)
+{
+	SYSLOG	syslog;
+	uint_t	lost;
+	ER_UINT	rercd;
+
+	logtask_portid = (ID) exinf;
+	serial_opn_por(logtask_portid);
+	syslog_msk_log(LOG_UPTO(LOG_NOTICE), LOG_UPTO(LOG_EMERG));
+	syslog_1(LOG_NOTICE, "System logging task is started on port %d.",
+													logtask_portid);
+	for (;;) {
+		lost = 0U;
+		while ((rercd = syslog_rea_log(&syslog)) >= 0) {
+			lost += (uint_t) rercd;
+			if (syslog.logtype >= LOG_TYPE_COMMENT) {
+				if (lost > 0U) {
+					syslog_lostmsg(lost, logtask_putc);
+					lost = 0U;
+				}
+				syslog_print(&syslog, logtask_putc);
+				logtask_putc('\n');
+			}
+		}
+		if (lost > 0U) {
+			syslog_lostmsg(lost, logtask_putc);
+		}
+		dly_tsk(LOGTASK_INTERVAL);
+	}
+}
+
+/*
+ *  VXeO^XNÌI¹
+ */
+void
+logtask_terminate(intptr_t exinf)
+{
+	char_t	c;
+	SYSLOG	syslog;
+	bool_t	msgflg = false;
+	ER_UINT	rercd;
+
+	/*
+	 *  VAC^tF[XhCoÌMobt@É~Ï³ê½f[^
+	 *  ðCáxoÍ@\ðp¢ÄoÍ·éD
+	 */
+	while (serial_get_chr(logtask_portid, &c)) {
+		target_fput_log(c);
+	}
+
+	/*
+	 *  Oobt@ÉL^³ê½OîñðCáxoÍ@\ðp¢Äo
+	 *  Í·éD
+	 */
+	while ((rercd = syslog_rea_log(&syslog)) >= 0) {
+		if (!msgflg) {
+			/*
+			 *  Oobt@ÉcÁ½OîñÅ é±Æð¦·¶ñðo
+			 *  Í·éD
+			 */
+			syslog_printf("-- buffered messages --\n", NULL, target_fput_log);
+			msgflg = true;
+		}
+		if (rercd > 0) {
+			syslog_lostmsg((uint_t) rercd, target_fput_log);
+		}
+		if (syslog.logtype >= LOG_TYPE_COMMENT) {
+			syslog_print(&syslog, target_fput_log);
+			target_fput_log('\n');
+		}
+	}
+}
Index: /asp_ewarm/asp-1.7.0/syssvc/logtask.cfg
===================================================================
--- /asp_ewarm/asp-1.7.0/syssvc/logtask.cfg	(revision 61)
+++ /asp_ewarm/asp-1.7.0/syssvc/logtask.cfg	(revision 61)
@@ -0,0 +1,13 @@
+/*
+ *  @(#) $Id: logtask.cfg 823 2008-03-18 13:02:11Z hiro $
+ */
+
+/*
+ *		VXeO^XNÌRtBM
+[Vt@C
+ */
+
+#include "syssvc/logtask.h"
+CRE_TSK(LOGTASK, { TA_ACT, LOGTASK_PORTID, logtask_main,
+						LOGTASK_PRIORITY, LOGTASK_STACK_SIZE, NULL });
+ATT_TER({ TA_NULL, 0, logtask_terminate });
Index: /asp_ewarm/asp-1.7.0/syssvc/logtask.h
===================================================================
--- /asp_ewarm/asp-1.7.0/syssvc/logtask.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/syssvc/logtask.h	(revision 61)
@@ -0,0 +1,106 @@
+/*
+ *  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-2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: logtask.h 774 2008-03-08 06:35:57Z hiro $
+ */
+
+/*
+ *		VXeO^XN
+ */
+
+#ifndef TOPPERS_LOGTASK_H
+#define TOPPERS_LOGTASK_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "target_syssvc.h"
+
+/*
+ *  VXeO^XNÖAÌèÌftHglÌè`
+ */ 
+#ifndef LOGTASK_PRIORITY
+#define LOGTASK_PRIORITY	3		/* úDæx */
+#endif /* LOGTASK_PRIORITY */
+
+#ifndef LOGTASK_STACK_SIZE
+#define LOGTASK_STACK_SIZE	1024	/* X^bNÌæÌTCY */
+#endif /* LOGTASK_STACK_SIZE */
+
+#ifndef LOGTASK_PORTID
+#define LOGTASK_PORTID		1		/* VXeOpÌVA|[gÔ */
+#endif /* LOGTASK_PORTID */
+
+#ifndef LOGTASK_INTERVAL
+#define LOGTASK_INTERVAL	10U		/* VXeO^XNÌ®ìÔui~bj*/
+#endif /* LOGTASK_INTERVAL */
+
+#ifndef LOGTASK_FLUSH_WAIT
+#define LOGTASK_FLUSH_WAIT	1U		/* tbV
+Ò¿ÌPÊÔi~bj*/
+#endif /* LOGTASK_FLUSH_WAIT */
+
+/*
+ *  VXeOoÍÌÒ¿í¹
+ *
+ *  Oobt@ÌOÌªcountÈºÉÈéÜÅÒÂDcountª0ÌêÉ
+ *  ÍCVAobt@ªóÉÈéÌàÒÂD
+ */
+extern ER	logtask_flush(uint_t count) throw();
+
+/*
+ *  VXeO^XNÌ{Ì
+ */
+extern void	logtask_main(intptr_t exinf) throw();
+
+/*
+ *  VXeO^XNÌI¹
+ */
+extern void	logtask_terminate(intptr_t exinf) throw();
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* TOPPERS_LOGTASK_H */
Index: /asp_ewarm/asp-1.7.0/syssvc/serial.c
===================================================================
--- /asp_ewarm/asp-1.7.0/syssvc/serial.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/syssvc/serial.c	(revision 61)
@@ -0,0 +1,770 @@
+/*
+ *  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
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: serial.c 2055 2011-04-10 11:36:13Z ertl-hiro $
+ */
+
+/*
+ *		VAC^tF[XhCo
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include "target_syssvc.h"
+#include "target_serial.h"
+#include "serial.h"
+#include "kernel_cfg.h"
+
+/*
+ *  obt@TCYÌftHglÆobt@Ìè`
+ */
+#ifndef SERIAL_RCV_BUFSZ1
+#define	SERIAL_RCV_BUFSZ1	256			/* |[g1ÌóMobt@TCY */
+#endif /* SERIAL_RCV_BUFSZ1 */
+
+#ifndef SERIAL_SND_BUFSZ1
+#define	SERIAL_SND_BUFSZ1	256			/* |[g1ÌMobt@TCY */
+#endif /* SERIAL_SND_BUFSZ1 */
+
+static char_t	rcv_buffer1[SERIAL_RCV_BUFSZ1];
+static char_t	snd_buffer1[SERIAL_SND_BUFSZ1];
+
+#if TNUM_PORT >= 2						/* |[g2ÉÖ·éè` */
+
+#ifndef SERIAL_RCV_BUFSZ2
+#define	SERIAL_RCV_BUFSZ2	256			/* |[g2ÌóMobt@TCY */
+#endif /* SERIAL_RCV_BUFSZ2 */
+
+#ifndef SERIAL_SND_BUFSZ2
+#define	SERIAL_SND_BUFSZ2	256			/* |[g2ÌMobt@TCY */
+#endif /* SERIAL_SND_BUFSZ2 */
+
+static char_t	rcv_buffer2[SERIAL_RCV_BUFSZ2];
+static char_t	snd_buffer2[SERIAL_SND_BUFSZ2];
+
+#endif /* TNUM_PORT >= 2 */
+
+#if TNUM_PORT >= 3						/* |[g3ÉÖ·éè` */
+
+#ifndef SERIAL_RCV_BUFSZ3
+#define	SERIAL_RCV_BUFSZ3	256			/* |[g3ÌóMobt@TCY */
+#endif /* SERIAL_RCV_BUFSZ3 */
+
+#ifndef SERIAL_SND_BUFSZ3
+#define	SERIAL_SND_BUFSZ3	256			/* |[g3ÌMobt@TCY */
+#endif /* SERIAL_SND_BUFSZ3 */
+
+static char_t	rcv_buffer3[SERIAL_RCV_BUFSZ3];
+static char_t	snd_buffer3[SERIAL_SND_BUFSZ3];
+
+#endif /* TNUM_PORT >= 3 */
+
+#if TNUM_PORT >= 4						/* |[g4ÉÖ·éè` */
+
+#ifndef SERIAL_RCV_BUFSZ4
+#define	SERIAL_RCV_BUFSZ4	256			/* |[g4ÌóMobt@TCY */
+#endif /* SERIAL_RCV_BUFSZ4 */
+
+#ifndef SERIAL_SND_BUFSZ4
+#define	SERIAL_SND_BUFSZ4	256			/* |[g4ÌMobt@TCY */
+#endif /* SERIAL_SND_BUFSZ4 */
+
+static char_t	rcv_buffer4[SERIAL_RCV_BUFSZ4];
+static char_t	snd_buffer4[SERIAL_SND_BUFSZ4];
+
+#endif /* TNUM_PORT >= 4 */
+
+/*
+ *  t[§äÉÖA·éèÆ}N
+ */
+#define	FC_STOP			'\023'		/* Rg[-S */
+#define	FC_START		'\021'		/* Rg[-Q */
+
+#define BUFCNT_STOP(bufsz)		((bufsz) * 3 / 4)	/* STOPðéî¶ */
+#define BUFCNT_START(bufsz)		((bufsz) / 2)		/* STARTðéî¶ */
+
+/*
+ *  VA|[gú»ubN
+ */
+typedef struct serial_port_initialization_block {
+	ID		rcv_semid;		/* óMobt@ÇpZ}tHÌID */
+	ID		snd_semid;		/* Mobt@ÇpZ}tHÌID */
+	uint_t	rcv_bufsz;		/* óMobt@TCY */
+	char_t	*rcv_buffer;	/* óMobt@ */
+	uint_t	snd_bufsz;		/* Mobt@TCY */
+	char_t	*snd_buffer;	/* Mobt@ */
+} SPINIB;
+
+static const SPINIB spinib_table[TNUM_PORT] = {
+	{ SERIAL_RCV_SEM1, SERIAL_SND_SEM1,
+	  SERIAL_RCV_BUFSZ1, rcv_buffer1,
+	  SERIAL_SND_BUFSZ1, snd_buffer1 },
+#if TNUM_PORT >= 2
+	{ SERIAL_RCV_SEM2, SERIAL_SND_SEM2,
+	  SERIAL_RCV_BUFSZ2, rcv_buffer2,
+	  SERIAL_SND_BUFSZ2, snd_buffer2 },
+#endif /* TNUM_PORT >= 2 */
+#if TNUM_PORT >= 3
+	{ SERIAL_RCV_SEM3, SERIAL_SND_SEM3,
+	  SERIAL_RCV_BUFSZ3, rcv_buffer3,
+	  SERIAL_SND_BUFSZ3, snd_buffer3 },
+#endif /* TNUM_PORT >= 3 */
+#if TNUM_PORT >= 4
+	{ SERIAL_RCV_SEM4, SERIAL_SND_SEM4,
+	  SERIAL_RCV_BUFSZ4, rcv_buffer4,
+	  SERIAL_SND_BUFSZ4, snd_buffer4 },
+#endif /* TNUM_PORT >= 4 */
+};
+
+/*
+ *  VA|[gÇubN
+ */
+typedef struct serial_port_control_block {
+	const SPINIB *p_spinib;		/* VA|[gú»ubN */
+	SIOPCB	*p_siopcb;			/* VAI/O|[gÇubN */
+	bool_t	openflag;			/* I[vÏÝtO */
+	bool_t	errorflag;			/* G[tO */
+	uint_t	ioctl;				/* ®ì§äÌÝèl */
+
+	uint_t	rcv_read_ptr;		/* óMobt@Çoµ|C^ */
+	uint_t	rcv_write_ptr;		/* óMobt@Ý|C^ */
+	uint_t	rcv_count;			/* óMobt@Ì¶ */
+	char_t	rcv_fc_chr;			/* é×«START/STOP */
+	bool_t	rcv_stopped;		/* STOPðÁ½óÔ©H */
+
+	uint_t	snd_read_ptr;		/* Mobt@Çoµ|C^ */
+	uint_t	snd_write_ptr;		/* Mobt@Ý|C^ */
+	uint_t	snd_count;			/* Mobt@Ì¶ */
+	bool_t	snd_stopped;		/* STOPðó¯æÁ½óÔ©H */
+} SPCB;
+
+static SPCB	spcb_table[TNUM_PORT];
+
+/*
+ *  VA|[gID©çVA|[gÇubNðæèo·½ßÌ}N
+ */
+#define INDEX_PORT(portid)	((uint_t)((portid) - 1))
+#define get_spcb(portid)	(&(spcb_table[INDEX_PORT(portid)]))
+
+/*
+ *  |C^ÌCNg
+ */
+#define INC_PTR(ptr, bufsz)		{ if (++(ptr) == (bufsz)) { (ptr) = 0; }}
+
+/*
+ *  T[rXR[Äoµ}N
+ *
+ *  T[rXR[ÄoµðÜÞ®expð]¿µCÔlªG[iÌljÌê
+ *  ÉÍCercÉercd_expð]¿µ½lðãüµCerror_exitÉgoto·éD
+ */
+#define SVC(exp, ercd_exp) \
+				{ if ((exp) < 0) { ercd = (ercd_exp); goto error_exit; }}
+
+/*
+ *  E_SYSG[Ì¶¬
+ */
+static ER
+gen_ercd_sys(SPCB *p_spcb)
+{
+	p_spcb->errorflag = true;
+	return(E_SYS);
+}
+
+/*
+ *  Ò¿ÉüéT[rXR[©çÌG[ÌÏ·
+ */
+static ER
+gen_ercd_wait(ER rercd, SPCB *p_spcb)
+{
+	switch (MERCD(rercd)) {
+	case E_RLWAI:
+	case E_DLT:
+		return(rercd);
+	default:
+		p_spcb->errorflag = true;
+		return(E_SYS);
+	}
+}
+
+/*
+ *  VAC^tF[XhCoÌú»[`
+ */
+void
+serial_initialize(intptr_t exinf)
+{
+	uint_t	i;
+	SPCB	*p_spcb;
+
+	for (p_spcb = spcb_table, i = 0; i < TNUM_PORT; p_spcb++, i++) {
+		p_spcb->p_spinib = &(spinib_table[i]);
+		p_spcb->openflag = false;
+	}
+}
+
+/*
+ *  VA|[gÌI[viT[rXR[j
+ */
+ER
+serial_opn_por(ID portid)
+{
+	SPCB	*p_spcb;
+	ER		ercd;
+
+	if (sns_dpn()) {				/* ReLXgÌ`FbN */
+		return(E_CTX);
+	}
+	if (!(1 <= portid && portid <= TNUM_PORT)) {
+		return(E_ID);				/* |[gÔÌ`FbN */
+	}
+	p_spcb = get_spcb(portid);
+
+	SVC(dis_dsp(), gen_ercd_sys(p_spcb));
+	if (p_spcb->openflag) {			/* I[vÏÝ©Ì`FbN */
+		ercd = E_OBJ;
+	}
+	else {
+		/*
+		 *  ÏÌú»
+		 */
+		p_spcb->ioctl = (IOCTL_ECHO | IOCTL_CRLF | IOCTL_FCSND | IOCTL_FCRCV);
+
+		p_spcb->rcv_read_ptr = p_spcb->rcv_write_ptr = 0U;
+		p_spcb->rcv_count = 0U;
+		p_spcb->rcv_fc_chr = '\0';
+		p_spcb->rcv_stopped = false;
+
+		p_spcb->snd_read_ptr = p_spcb->snd_write_ptr = 0U;
+		p_spcb->snd_count = 0U;
+		p_spcb->snd_stopped = false;
+
+		/*
+		 *  ±êÈ~CÝðÖ~·éD
+		 */
+		if (loc_cpu() < 0) {
+			ercd = E_SYS;
+			goto error_exit_enadsp;
+		}
+
+		/*
+		 *  n[hEFAË¶ÌI[v
+		 */
+		p_spcb->p_siopcb = sio_opn_por(portid, (intptr_t) p_spcb);
+
+		/*
+		 *  óMÊmR[obNðÂ·éD
+		 */
+		sio_ena_cbr(p_spcb->p_siopcb, SIO_RDY_RCV);
+		p_spcb->openflag = true;
+		p_spcb->errorflag = false;
+
+		if (unl_cpu() < 0) {
+			p_spcb->errorflag = true;
+			ercd = E_SYS;
+			goto error_exit_enadsp;
+		}
+		ercd = E_OK;
+	}
+
+  error_exit_enadsp:
+	SVC(ena_dsp(), gen_ercd_sys(p_spcb));
+
+  error_exit:
+	return(ercd);
+}
+
+/*
+ *  VA|[gÌN[YiT[rXR[j
+ */
+ER
+serial_cls_por(ID portid)
+{
+	SPCB	*p_spcb;
+	ER		ercd;
+	bool_t	eflag = false;
+
+	if (sns_dpn()) {				/* ReLXgÌ`FbN */
+		return(E_CTX);
+	}
+	if (!(1 <= portid && portid <= TNUM_PORT)) {
+		return(E_ID);				/* |[gÔÌ`FbN */
+	}
+	p_spcb = get_spcb(portid);
+
+	SVC(dis_dsp(), gen_ercd_sys(p_spcb));
+	if (!(p_spcb->openflag)) {		/* I[vÏÝ©Ì`FbN */
+		ercd = E_OBJ;
+	}
+	else {
+		/*
+		 *  n[hEFAË¶ÌN[Y
+		 */
+		if (loc_cpu() < 0) {
+			eflag = true;
+		}
+		sio_cls_por(p_spcb->p_siopcb);
+		p_spcb->openflag = false;
+		if (unl_cpu() < 0) {
+			eflag = true;
+		}
+
+		/*
+		 *  Z}tHÌú»
+		 */
+		if (ini_sem(p_spcb->p_spinib->snd_semid) < 0) {
+			eflag = true;
+		}
+		if (ini_sem(p_spcb->p_spinib->rcv_semid) < 0) {
+			eflag = true;
+		}
+
+		/*
+		 *  G[R[hÌÝè
+		 */
+		if (eflag) {
+			ercd = gen_ercd_sys(p_spcb);
+		}
+		else {
+			ercd = E_OK;
+		}
+	}
+	SVC(ena_dsp(), gen_ercd_sys(p_spcb));
+
+  error_exit:
+	return(ercd);
+}
+
+/*
+ *  VA|[gÖÌ¶M
+ *
+ *  p_spcbÅwè³êéVAI/O|[gÉÎµÄC¶cðM·éD¶
+ *  ðMWX^É¢ê½êÉÍtrueðÔ·D»¤ÅÈ¢êÉÍCM
+ *  WX^ªó¢½±ÆðÊm·éR[obNÖðÂµCfalseðÔ·D
+ *  ±ÌÖÍCCPUbNóÔÅÄÑo³êéD
+ */
+Inline bool_t
+serial_snd_chr(SPCB *p_spcb, char_t c)
+{
+	if (sio_snd_chr(p_spcb->p_siopcb, c)) {
+		return(true);
+	}
+	else {
+		sio_ena_cbr(p_spcb->p_siopcb, SIO_RDY_SND);
+		return(false);
+	}
+}
+
+/*
+ *  VA|[gÖÌ1¶M
+ */
+static ER_BOOL
+serial_wri_chr(SPCB *p_spcb, char_t c)
+{
+	bool_t	buffer_full;
+	ER		ercd, rercd;
+
+	/*
+	 *  LFÌOÉCRðM·éD
+	 */
+	if (c == '\n' && (p_spcb->ioctl & IOCTL_CRLF) != 0U) {
+		SVC(rercd = serial_wri_chr(p_spcb, '\r'), rercd);
+		if ((bool_t) rercd) {
+			SVC(rercd = wai_sem(p_spcb->p_spinib->snd_semid),
+										gen_ercd_wait(rercd, p_spcb));
+		}
+	}
+
+	SVC(loc_cpu(), gen_ercd_sys(p_spcb));
+	if (p_spcb->snd_count == 0U && !(p_spcb->snd_stopped)
+								&& serial_snd_chr(p_spcb, c)) {
+		/*
+		 *  VAI/OfoCXÌMWX^É¶ðüêé±ÆÉ¬÷µ
+		 *  ½êD
+		 */
+		buffer_full = false;
+	}
+	else {
+		/*
+		 *  Mobt@É¶ðüêéD
+		 */
+		p_spcb->p_spinib->snd_buffer[p_spcb->snd_write_ptr] = c;
+		INC_PTR(p_spcb->snd_write_ptr, p_spcb->p_spinib->snd_bufsz);
+		p_spcb->snd_count++;
+		buffer_full = (p_spcb->snd_count == p_spcb->p_spinib->snd_bufsz);
+	}
+
+	SVC(unl_cpu(), gen_ercd_sys(p_spcb));
+	ercd = (ER_BOOL) buffer_full;
+
+  error_exit:
+	return(ercd);
+}
+
+/*
+ *  VA|[gÖÌ¶ñMiT[rXR[j
+ */
+ER_UINT
+serial_wri_dat(ID portid, const char_t *buf, uint_t len)
+{
+	SPCB	*p_spcb;
+	bool_t	buffer_full;
+	uint_t	wricnt = 0U;
+	ER		ercd, rercd;
+
+	if (sns_dpn()) {				/* ReLXgÌ`FbN */
+		return(E_CTX);
+	}
+	if (!(1 <= portid && portid <= TNUM_PORT)) {
+		return(E_ID);				/* |[gÔÌ`FbN */
+	}
+
+	p_spcb = get_spcb(portid);
+	if (!(p_spcb->openflag)) {		/* I[vÏÝ©Ì`FbN */
+		return(E_OBJ);
+	}
+	if (p_spcb->errorflag) {		/* G[óÔ©Ì`FbN */
+		return(E_SYS);
+	}
+
+	buffer_full = true;				/* [vÌ1ñßÍwai_sem·é */
+	while (wricnt < len) {
+		if (buffer_full) {
+			SVC(rercd = wai_sem(p_spcb->p_spinib->snd_semid),
+										gen_ercd_wait(rercd, p_spcb));
+		}
+		SVC(rercd = serial_wri_chr(p_spcb, *buf++), rercd);
+		wricnt++;
+		buffer_full = (bool_t) rercd;
+	}
+	if (!buffer_full) {
+		SVC(sig_sem(p_spcb->p_spinib->snd_semid), gen_ercd_sys(p_spcb));
+	}
+	ercd = E_OK;
+
+  error_exit:
+	return(wricnt > 0U ? (ER_UINT) wricnt : ercd);
+}
+
+/*
+ *  VA|[g©çÌ1¶óM
+ */
+static bool_t
+serial_rea_chr(SPCB *p_spcb, char_t *p_c)
+{
+	bool_t	buffer_empty;
+	ER		ercd;
+
+	SVC(loc_cpu(), gen_ercd_sys(p_spcb));
+
+	/*
+	 *  óMobt@©ç¶ðæèo·D
+	 */
+	*p_c = p_spcb->p_spinib->rcv_buffer[p_spcb->rcv_read_ptr];
+	INC_PTR(p_spcb->rcv_read_ptr, p_spcb->p_spinib->rcv_bufsz);
+	p_spcb->rcv_count--;
+	buffer_empty = (p_spcb->rcv_count == 0U);
+
+	/*
+	 *  STARTðM·éD
+	 */
+	if (p_spcb->rcv_stopped && p_spcb->rcv_count
+								<= BUFCNT_START(p_spcb->p_spinib->rcv_bufsz)) {
+		if (!serial_snd_chr(p_spcb, FC_START)) {
+			p_spcb->rcv_fc_chr = FC_START;
+		}
+		p_spcb->rcv_stopped = false;
+	}
+
+	SVC(unl_cpu(), gen_ercd_sys(p_spcb));
+	ercd = (ER_BOOL) buffer_empty;
+
+  error_exit:
+	return(ercd);
+}
+
+/*
+ *  VA|[g©çÌ¶ñóMiT[rXR[j
+ */
+ER_UINT
+serial_rea_dat(ID portid, char_t *buf, uint_t len)
+{
+	SPCB	*p_spcb;
+	bool_t	buffer_empty;
+	uint_t	reacnt = 0U;
+	char_t	c = '\0';		/* RpCÌxð}~·é½ßÉú»·é */
+	ER		ercd, rercd;
+
+	if (sns_dpn()) {				/* ReLXgÌ`FbN */
+		return(E_CTX);
+	}
+	if (!(1 <= portid && portid <= TNUM_PORT)) {
+		return(E_ID);				/* |[gÔÌ`FbN */
+	}
+
+	p_spcb = get_spcb(portid);
+	if (!(p_spcb->openflag)) {		/* I[vÏÝ©Ì`FbN */
+		return(E_OBJ);
+	}
+	if (p_spcb->errorflag) {		/* G[óÔ©Ì`FbN */
+		return(E_SYS);
+	}
+
+	buffer_empty = true;			/* [vÌ1ñßÍwai_sem·é */
+	while (reacnt < len) {
+		if (buffer_empty) {
+			SVC(rercd = wai_sem(p_spcb->p_spinib->rcv_semid),
+										gen_ercd_wait(rercd, p_spcb));
+		}
+		SVC(rercd = serial_rea_chr(p_spcb, &c), rercd);
+		*buf++ = c;
+		reacnt++;
+		buffer_empty = (bool_t) rercd;
+
+		/*
+		 *  GR[obND
+		 */
+		if ((p_spcb->ioctl & IOCTL_ECHO) != 0U) {
+			SVC(rercd = wai_sem(p_spcb->p_spinib->snd_semid),
+										gen_ercd_wait(rercd, p_spcb));
+			SVC(rercd = serial_wri_chr(p_spcb, c), rercd);
+			if (!((bool_t) rercd)) {
+				SVC(sig_sem(p_spcb->p_spinib->snd_semid),
+										gen_ercd_sys(p_spcb));
+			}
+		}
+	}
+	if (!buffer_empty) {
+		SVC(sig_sem(p_spcb->p_spinib->rcv_semid), gen_ercd_sys(p_spcb));
+	}
+	ercd = E_OK;
+
+  error_exit:
+	return(reacnt > 0U ? (ER_UINT) reacnt : ercd);
+}
+
+/*
+ *  VA|[gÌ§äiT[rXR[j
+ */
+ER
+serial_ctl_por(ID portid, uint_t ioctl)
+{
+	SPCB	*p_spcb;
+
+	if (sns_dpn()) {				/* ReLXgÌ`FbN */
+		return(E_CTX);
+	}
+	if (!(1 <= portid && portid <= TNUM_PORT)) {
+		return(E_ID);				/* |[gÔÌ`FbN */
+	}
+
+	p_spcb = get_spcb(portid);
+	if (!(p_spcb->openflag)) {		/* I[vÏÝ©Ì`FbN */
+		return(E_OBJ);
+	}
+	if (p_spcb->errorflag) {		/* G[óÔ©Ì`FbN */
+		return(E_SYS);
+	}
+
+	p_spcb->ioctl = ioctl;
+	return(E_OK);
+}
+
+/*
+ *  VA|[góÔÌQÆiT[rXR[j
+ */
+ER
+serial_ref_por(ID portid, T_SERIAL_RPOR *pk_rpor)
+{
+	SPCB	*p_spcb;
+
+	if (sns_dpn()) {				/* ReLXgÌ`FbN */
+		return(E_CTX);
+	}
+	if (!(1 <= portid && portid <= TNUM_PORT)) {
+		return(E_ID);				/* |[gÔÌ`FbN */
+	}
+
+	p_spcb = get_spcb(portid);
+	if (!(p_spcb->openflag)) {		/* I[vÏÝ©Ì`FbN */
+		return(E_OBJ);
+	}
+	if (p_spcb->errorflag) {		/* G[óÔ©Ì`FbN */
+		return(E_SYS);
+	}
+
+	pk_rpor->reacnt = p_spcb->rcv_count;
+	pk_rpor->wricnt = p_spcb->snd_count;
+	return(E_OK);
+}
+
+/*
+ *  VA|[g©çÌMÂ\R[obN
+ */
+void
+sio_irdy_snd(intptr_t exinf)
+{
+	SPCB	*p_spcb;
+
+	p_spcb = (SPCB *) exinf;
+	if (p_spcb->rcv_fc_chr != '\0') {
+		/*
+		 *  START/STOP ðM·éD
+		 */
+		(void) sio_snd_chr(p_spcb->p_siopcb, p_spcb->rcv_fc_chr);
+		p_spcb->rcv_fc_chr = '\0';
+	}
+	else if (!(p_spcb->snd_stopped) && p_spcb->snd_count > 0U) {
+		/*
+		 *  Mobt@©ç¶ðæèoµÄM·éD
+		 */
+		(void) sio_snd_chr(p_spcb->p_siopcb,
+					p_spcb->p_spinib->snd_buffer[p_spcb->snd_read_ptr]);
+		INC_PTR(p_spcb->snd_read_ptr, p_spcb->p_spinib->snd_bufsz);
+		if (p_spcb->snd_count == p_spcb->p_spinib->snd_bufsz) {
+			if (isig_sem(p_spcb->p_spinib->snd_semid) < 0) {
+				p_spcb->errorflag = true;
+			}
+		}
+		p_spcb->snd_count--;
+	}
+	else {
+		/*
+		 *  M·×«¶ªÈ¢êÍCMÂ\R[obNðÖ~·éD
+		 */
+		sio_dis_cbr(p_spcb->p_siopcb, SIO_RDY_SND);
+	}
+}
+
+/*
+ *  VA|[g©çÌóMÊmR[obN
+ */
+void
+sio_irdy_rcv(intptr_t exinf)
+{
+	SPCB	*p_spcb;
+	char_t	c;
+
+	p_spcb = (SPCB *) exinf;
+	c = (char_t) sio_rcv_chr(p_spcb->p_siopcb);
+	if ((p_spcb->ioctl & IOCTL_FCSND) != 0U && c == FC_STOP) {
+		/*
+		 *  Mðêâ~·éDMÌ¶Í»ÌÜÜM·éD
+		 */
+		p_spcb->snd_stopped = true;
+	}
+	else if (p_spcb->snd_stopped && (c == FC_START
+				|| (p_spcb->ioctl & IOCTL_FCANY) != 0U)) {
+		/*
+		 *  MðÄJ·éD
+		 */
+		p_spcb->snd_stopped = false;
+		if (p_spcb->snd_count > 0U) {
+			c = p_spcb->p_spinib->snd_buffer[p_spcb->snd_read_ptr];
+			if (serial_snd_chr(p_spcb, c)) {
+				INC_PTR(p_spcb->snd_read_ptr, p_spcb->p_spinib->snd_bufsz);
+				if (p_spcb->snd_count == p_spcb->p_spinib->snd_bufsz) {
+					if (isig_sem(p_spcb->p_spinib->snd_semid) < 0) {
+						p_spcb->errorflag = true;
+					}
+				}
+				p_spcb->snd_count--;
+			}
+		}
+	}
+	else if ((p_spcb->ioctl & IOCTL_FCSND) != 0U && c == FC_START) {
+		/*
+		 *  MÉÎµÄt[§äµÄ¢éêCSTART ÍÌÄéD
+		 */
+	}
+	else if (p_spcb->rcv_count == p_spcb->p_spinib->rcv_bufsz) {
+		/*
+		 *  obt@tÌêCóMµ½¶ðÌÄéD
+		 */
+	}
+	else {
+		/*
+		 *  óMµ½¶ðóMobt@ÉüêéD
+		 */
+		p_spcb->p_spinib->rcv_buffer[p_spcb->rcv_write_ptr] = c;
+		INC_PTR(p_spcb->rcv_write_ptr, p_spcb->p_spinib->rcv_bufsz);
+		if (p_spcb->rcv_count == 0U) {
+			if (isig_sem(p_spcb->p_spinib->rcv_semid) < 0) {
+				p_spcb->errorflag = true;
+			}
+		}
+		p_spcb->rcv_count++;
+
+		/*
+		 *  STOPðM·éD
+		 */
+		if ((p_spcb->ioctl & IOCTL_FCRCV) != 0U && !(p_spcb->rcv_stopped)
+						&& p_spcb->rcv_count
+							>= BUFCNT_STOP(p_spcb->p_spinib->rcv_bufsz)) {
+			if (!serial_snd_chr(p_spcb, FC_STOP)) {
+				p_spcb->rcv_fc_chr = FC_STOP;
+			}
+			p_spcb->rcv_stopped = true;
+		}
+	}
+}
+
+/*
+ *  VAC^tF[XhCo©çÌ¢M¶Ìæoµ
+ */
+bool_t
+serial_get_chr(ID portid, char_t *p_c)
+{
+	SPCB	*p_spcb;
+
+	if (1 <= portid && portid <= TNUM_PORT) {	/* |[gÔÌ`FbN */
+		p_spcb = get_spcb(portid);
+		if (p_spcb->openflag) {					/* I[vÏÝ©Ì`FbN */
+			if (p_spcb->snd_count > 0U) {
+				*p_c = p_spcb->p_spinib->snd_buffer[p_spcb->snd_read_ptr];
+				INC_PTR(p_spcb->snd_read_ptr, p_spcb->p_spinib->snd_bufsz);
+				p_spcb->snd_count--;
+				return(true);
+			}
+		}
+	}
+	return(false);
+}
Index: /asp_ewarm/asp-1.7.0/syssvc/serial.cfg
===================================================================
--- /asp_ewarm/asp-1.7.0/syssvc/serial.cfg	(revision 61)
+++ /asp_ewarm/asp-1.7.0/syssvc/serial.cfg	(revision 61)
@@ -0,0 +1,29 @@
+/*
+ *  @(#) $Id: serial.cfg 2060 2011-04-10 15:36:38Z ertl-hiro $
+ */
+
+/*
+ *  VAC^tF[XhCoÌRtBM
+[Vt@C
+ */
+
+#include "target_syssvc.h"
+INCLUDE("target_serial.cfg");
+
+#include "syssvc/serial.h"
+ATT_INI({ TA_NULL, 0, serial_initialize });
+
+CRE_SEM(SERIAL_RCV_SEM1, { TA_TPRI, 0, 1 });
+CRE_SEM(SERIAL_SND_SEM1, { TA_TPRI, 1, 1 });
+#if TNUM_PORT >= 2
+CRE_SEM(SERIAL_RCV_SEM2, { TA_TPRI, 0, 1 });
+CRE_SEM(SERIAL_SND_SEM2, { TA_TPRI, 1, 1 });
+#endif /* TNUM_PORT >= 2 */
+#if TNUM_PORT >= 3
+CRE_SEM(SERIAL_RCV_SEM3, { TA_TPRI, 0, 1 });
+CRE_SEM(SERIAL_SND_SEM3, { TA_TPRI, 1, 1 });
+#endif /* TNUM_PORT >= 3 */
+#if TNUM_PORT >= 4
+CRE_SEM(SERIAL_RCV_SEM4, { TA_TPRI, 0, 1 });
+CRE_SEM(SERIAL_SND_SEM4, { TA_TPRI, 1, 1 });
+#endif /* TNUM_PORT >= 4 */
Index: /asp_ewarm/asp-1.7.0/syssvc/serial.h
===================================================================
--- /asp_ewarm/asp-1.7.0/syssvc/serial.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/syssvc/serial.h	(revision 61)
@@ -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) 2004-2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: serial.h 1176 2008-07-01 10:24:46Z ertl-hiro $
+ */
+
+/*
+ *		VAC^tF[XhCo
+ */
+
+#ifndef TOPPERS_SERIAL_H
+#define TOPPERS_SERIAL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *  VAC^tF[XhCoÌp¢épPbg
+ */
+typedef struct {
+	uint_t		reacnt;			/* óMobt@Ì¶ */
+	uint_t		wricnt;			/* Mobt@Ì¶ */
+} T_SERIAL_RPOR;
+
+/*
+ *  VAC^tF[XhCoÌú»[`
+ */
+extern void		serial_initialize(intptr_t exinf) throw();
+
+/*
+ *  VAC^tF[XhCo©çÌ¢M¶Ìæoµ
+ */
+extern bool_t	serial_get_chr(ID portid, char_t *p_c) throw();
+
+/*
+ *  VAC^tF[XhCoÌT[rXR[
+ */
+extern ER		serial_opn_por(ID portid) throw();
+extern ER		serial_cls_por(ID portid) throw();
+extern ER_UINT	serial_rea_dat(ID portid, char_t *buf, uint_t len) throw();
+extern ER_UINT	serial_wri_dat(ID portid, const char_t *buf, uint_t len)
+																	throw();
+extern ER		serial_ctl_por(ID portid, uint_t ioctl) throw();
+extern ER		serial_ref_por(ID portid, T_SERIAL_RPOR *pk_rpor) throw();
+
+/*
+ *  VAC^tF[XhCoÌ®ì§äpÌ½ßÌè
+ *
+ *  ÈºÌèÍCrbgÉ_aðÆÁÄp¢éD
+ */
+#define	IOCTL_NULL	0U			/* wèÈµ */
+#define	IOCTL_ECHO	0x0001U		/* óMµ½¶ðGR[obN */
+#define	IOCTL_CRLF	0x0010U		/* LFðM·éOÉCRðtÁ */
+#define	IOCTL_FCSND	0x0100U		/* MÉÎµÄt[§äðs¤ */
+#define	IOCTL_FCANY	0x0200U		/* ÇÌæ¤È¶ÅàMÄJ */
+#define	IOCTL_FCRCV	0x0400U		/* óMÉÎµÄt[§äðs¤ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* TOPPERS_SERIAL_H */
Index: /asp_ewarm/asp-1.7.0/syssvc/syslog.c
===================================================================
--- /asp_ewarm/asp-1.7.0/syssvc/syslog.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/syssvc/syslog.c	(revision 61)
@@ -0,0 +1,246 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  $Id: syslog.c 1846 2010-07-14 07:37:41Z ertl-hiro $
+ */
+
+/*
+ *		VXeO@\
+ */
+
+#include <sil.h>
+#undef TOPPERS_OMIT_SYSLOG
+#include <t_syslog.h>
+#include <log_output.h>
+#include "target_syssvc.h"
+#include "syslog.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_SYSLOG_WRI_LOG_ENTER
+#define LOG_SYSLOG_WRI_LOG_ENTER(prio, p_syslog)
+#endif /* LOG_SYSLOG_WRI_LOG_ENTER */
+
+#ifndef LOG_SYSLOG_WRI_LOG_LEAVE
+#define LOG_SYSLOG_WRI_LOG_LEAVE(ercd)
+#endif /* LOG_SYSLOG_WRI_LOG_LEAVE */
+
+#ifndef LOG_SYSLOG_REA_LOG_ENTER
+#define LOG_SYSLOG_REA_LOG_ENTER(p_syslog)
+#endif /* LOG_SYSLOG_REA_LOG_ENTER */
+
+#ifndef LOG_SYSLOG_REA_LOG_LEAVE
+#define LOG_SYSLOG_REA_LOG_LEAVE(ercd, p_syslog)
+#endif /* LOG_SYSLOG_REA_LOG_LEAVE */
+
+#ifndef LOG_SYSLOG_MSK_LOG_ENTER
+#define LOG_SYSLOG_MSK_LOG_ENTER(logmask, lowmask)
+#endif /* LOG_SYSLOG_MSK_LOG_ENTER */
+
+#ifndef LOG_SYSLOG_MSK_LOG_LEAVE
+#define LOG_SYSLOG_MSK_LOG_LEAVE(ercd)
+#endif /* LOG_SYSLOG_MSK_LOG_LEAVE */
+
+#ifndef LOG_SYSLOG_REF_LOG_ENTER
+#define LOG_SYSLOG_REF_LOG_ENTER(pk_rlog)
+#endif /* LOG_SYSLOG_REF_LOG_ENTER */
+
+#ifndef LOG_SYSLOG_REF_LOG_LEAVE
+#define LOG_SYSLOG_REF_LOG_LEAVE(pk_rlog)
+#endif /* LOG_SYSLOG_REF_LOG_LEAVE */
+
+/*
+ *  »ÝÌVXe
+ *
+ *  Oðæèo·½ßÉCâÞÈ­CJ[lÌàÏðQÆµÄ¢
+ *  éD
+ */
+extern ulong_t	_kernel_current_time;
+
+/*
+ *  Oobt@Æ»êÉANZX·é½ßÌ|C^
+ */
+static SYSLOG	syslog_buffer[TCNT_SYSLOG_BUFFER];	/* Oobt@ */
+static uint_t	syslog_count;			/* Oobt@ÌOÌ */
+static uint_t	syslog_head;			/* æªÌOÌi[Êu */
+static uint_t	syslog_tail;			/* ÌOÌi[Êu */
+static uint_t	syslog_lost;			/* ¸íê½OÌ */
+
+/*
+ *  oÍ·×«OîñÌdvxirbg}bvj
+ */
+static uint_t	syslog_logmask;			/* Oobt@ÉL^·×«dvx */
+static uint_t	syslog_lowmask_not;		/* áxoÍ·×«dvxi½]j*/
+
+/*
+ *  VXeO@\Ìú»
+ */
+void
+syslog_initialize(intptr_t exinf)
+{
+	syslog_count = 0U;
+	syslog_head = syslog_tail = 0U;
+	syslog_lost = 0U;
+	syslog_logmask = 0U;
+	syslog_lowmask_not = 0U;
+}     
+
+/* 
+ *  OîñÌoÍ
+ *
+ *  CPUbNóÔâÀsReLXgÉæç¸®ìÅ«éæ¤ÉÀµÄ éD
+ */
+ER
+syslog_wri_log(uint_t prio, const SYSLOG *p_syslog)
+{
+	SIL_PRE_LOC;
+
+	LOG_SYSLOG_WRI_LOG_ENTER(prio, p_syslog);
+	SIL_LOC_INT();
+
+	/*
+	 *  OÌÝè
+	 */
+	((SYSLOG *) p_syslog)->logtim = _kernel_current_time;
+
+	/*
+	 *  Oobt@ÉL^
+	 */
+	if ((syslog_logmask & LOG_MASK(prio)) != 0U) {
+		syslog_buffer[syslog_tail] = *p_syslog;
+		syslog_tail++;
+		if (syslog_tail >= TCNT_SYSLOG_BUFFER) {
+			syslog_tail = 0U;
+		}
+		if (syslog_count < TCNT_SYSLOG_BUFFER) {
+			syslog_count++;
+		}
+		else {
+			syslog_head = syslog_tail;
+			syslog_lost++;
+		}
+	}
+
+	/*
+	 *  áxoÍ
+	 */
+	if (((~syslog_lowmask_not) & LOG_MASK(prio)) != 0U) {
+		syslog_print(p_syslog, target_fput_log);
+		(*target_fput_log)('\n');
+	}
+
+	SIL_UNL_INT();
+	LOG_SYSLOG_WRI_LOG_LEAVE(E_OK);
+	return(E_OK);
+}
+
+/*
+ *  Oobt@©çÌÇoµ
+ *
+ *  CPUbNóÔâÀsReLXgÉæç¸®ìÅ«éæ¤ÉÀµÄ éD
+ */
+ER_UINT
+syslog_rea_log(SYSLOG *p_syslog)
+{
+	ER_UINT	ercd;
+	SIL_PRE_LOC;
+
+	LOG_SYSLOG_REA_LOG_ENTER(p_syslog);
+	SIL_LOC_INT();
+
+	/*
+	 *  Oobt@©çÌæoµ
+	 */
+	if (syslog_count > 0U) {
+		*p_syslog = syslog_buffer[syslog_head];
+		syslog_count--;
+		syslog_head++;
+		if (syslog_head >= TCNT_SYSLOG_BUFFER) {
+			syslog_head = 0U;
+		}
+		ercd = (ER_UINT) syslog_lost;
+		syslog_lost = 0U;
+	}
+	else {
+		ercd = E_OBJ;
+	}
+
+	SIL_UNL_INT();
+	LOG_SYSLOG_REA_LOG_LEAVE(ercd, p_syslog);
+	return(ercd);
+}
+
+/* 
+ *  oÍ·×«OîñÌdvxÌÝè
+ */
+ER
+syslog_msk_log(uint_t logmask, uint_t lowmask)
+{
+	LOG_SYSLOG_MSK_LOG_ENTER(logmask, lowmask);
+	syslog_logmask = logmask;
+	syslog_lowmask_not = ~lowmask;
+	LOG_SYSLOG_MSK_LOG_LEAVE(E_OK);
+	return(E_OK);
+}
+
+/*
+ *  Oobt@ÌóÔQÆ
+ */
+ER_UINT
+syslog_ref_log(T_SYSLOG_RLOG *pk_rlog)
+{
+	SIL_PRE_LOC;
+
+	LOG_SYSLOG_REF_LOG_ENTER(pk_rlog);
+	SIL_LOC_INT();
+
+	pk_rlog->count = syslog_count;
+	pk_rlog->lost = syslog_lost;
+	pk_rlog->logmask = syslog_logmask;
+	pk_rlog->lowmask = ~syslog_lowmask_not;
+
+	SIL_UNL_INT();
+	LOG_SYSLOG_REF_LOG_LEAVE(pk_rlog);
+	return(E_OK);
+}
Index: /asp_ewarm/asp-1.7.0/syssvc/syslog.cfg
===================================================================
--- /asp_ewarm/asp-1.7.0/syssvc/syslog.cfg	(revision 61)
+++ /asp_ewarm/asp-1.7.0/syssvc/syslog.cfg	(revision 61)
@@ -0,0 +1,11 @@
+/*
+ *  $Id: syslog.cfg 1788 2010-05-16 21:06:02Z ertl-hiro $
+ */
+
+/*
+ *		VXeO@\ÌRtBM
+[Vt@C
+ */
+
+#include "syssvc/syslog.h"
+ATT_INI({ TA_NULL, 0, syslog_initialize });
Index: /asp_ewarm/asp-1.7.0/syssvc/syslog.h
===================================================================
--- /asp_ewarm/asp-1.7.0/syssvc/syslog.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/syssvc/syslog.h	(revision 61)
@@ -0,0 +1,99 @@
+/*
+ *  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-2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  $Id: syslog.h 1788 2010-05-16 21:06:02Z ertl-hiro $
+ */
+
+/*
+ *		VXeO@\
+ */
+
+#ifndef TOPPERS_SYSLOG_H
+#define TOPPERS_SYSLOG_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *  VXeOoÍðs¤½ßÌè`
+ */
+#include <t_syslog.h>
+
+/*
+ *  Oobt@Æ»êÉANZX·é½ßÌ|C^
+ */
+#ifndef TCNT_SYSLOG_BUFFER
+#define TCNT_SYSLOG_BUFFER	32		/* Oobt@ÌTCY */
+#endif /* TCNT_SYSLOG_BUFFER */
+
+/*
+ *  VXeO@\Ìú»
+ */
+extern void	syslog_initialize(intptr_t exinf) throw();
+
+/*
+ *  OîñÌoÍ
+ */
+extern ER	syslog_wri_log(uint_t prio, const SYSLOG *p_syslog) throw();
+
+/*
+ *  Oobt@©çÌOîñÌÇoµ
+ */
+extern ER_UINT	syslog_rea_log(SYSLOG *p_syslog) throw();
+
+/* 
+ *  oÍ·×«OîñÌdvxÌÝè
+ */
+extern ER	syslog_msk_log(uint_t logmask, uint_t lowmask) throw();
+
+/* 
+ *  Oobt@ÌóÔQÆ
+ */
+extern ER	syslog_ref_log(T_SYSLOG_RLOG *pk_rlog) throw();
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* TOPPERS_SYSLOG_H */
Index: /asp_ewarm/asp-1.7.0/syssvc/vasyslog.c
===================================================================
--- /asp_ewarm/asp-1.7.0/syssvc/vasyslog.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/syssvc/vasyslog.c	(revision 61)
@@ -0,0 +1,111 @@
+/*
+ *  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
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: vasyslog.c 755 2008-03-07 17:42:37Z hiro $
+ */
+
+/*
+ *		ÂÏøÌVXeOCu
+ */
+
+#include <t_stddef.h>
+#include <t_syslog.h>
+#include <stdarg.h>
+
+void
+syslog(uint_t prio, const char *format, ...)
+{
+	SYSLOG	syslog;
+	va_list	ap;
+	uint_t	i;
+	char	c;
+	bool_t	lflag;
+
+	syslog.logtype = LOG_TYPE_COMMENT;
+	syslog.loginfo[0] = (intptr_t) format;
+	i = 1U;
+	va_start(ap, format);
+
+	while ((c = *format++) != '\0' && i < TMAX_LOGINFO) {
+		if (c != '%') {
+			continue;
+		}
+
+		lflag = false;
+		c = *format++;
+		while ('0' <= c && c <= '9') {
+			c = *format++;
+		}
+		if (c == 'l') {
+			lflag = true;
+			c = *format++;
+		}
+		switch (c) {
+		case 'd':
+			syslog.loginfo[i++] = lflag ? (intptr_t) va_arg(ap, long_t)
+										: (intptr_t) va_arg(ap, int_t);
+			break;
+		case 'u':
+		case 'x':
+		case 'X':
+			syslog.loginfo[i++] = lflag ? (intptr_t) va_arg(ap, ulong_t)
+										: (intptr_t) va_arg(ap, uint_t);
+			break;
+		case 'p':
+			syslog.loginfo[i++] = (intptr_t) va_arg(ap, void *);
+			break;
+		case 'c':
+			syslog.loginfo[i++] = (intptr_t) va_arg(ap, int);
+			break;
+		case 's':
+			syslog.loginfo[i++] = (intptr_t) va_arg(ap, const char *);
+			break;
+		case '\0':
+			format--;
+			break;
+		default:
+			break;
+		}
+	}
+	va_end(ap);
+	(void) syslog_wri_log(prio, &syslog);
+}
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/E_PACKAGE
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/E_PACKAGE	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/E_PACKAGE	(revision 61)
@@ -0,0 +1,5 @@
+E_PACKAGE asp_fs_k70f120m_EWARM
+VERSION %date
+
+INCLUDE ../../MANIFEST
+INCLUDE ../../arch/arm_m_iccarm/MANIFEST
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/MANIFEST
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/MANIFEST	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/MANIFEST	(revision 61)
@@ -0,0 +1,27 @@
+PACKAGE asp_arch_arm_m_iccarm
+
+E_PACKAGE
+MANIFEST
+Makefile.target
+fs_k70f120m.h
+target.tf
+target_cfg1_out.h
+target_check.tf
+target_config.c
+target_config.h
+target_kernel.h
+target_offset.tf
+target_rename.def
+target_rename.h
+target_serial.c
+target_serial.cfg
+target_serial.h
+target_sil.h
+target_stddef.h
+target_support.S
+target_syssvc.h
+target_test.h
+target_timer.cfg
+target_timer.h
+target_unrename.h
+target_user.txt
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/fs_k70f120m.h
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/fs_k70f120m.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/fs_k70f120m.h	(revision 61)
@@ -0,0 +1,167 @@
+/*
+ *  TOPPERS/JSP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Just Standard Profile Kernel
+ *
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCFree Software Foundation ÉæÁÄö\³êÄ¢é 
+ *  GNU General Public License Ì Version 2 ÉLq³êÄ¢éð©CÈ
+ *  ºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEFAi{\tgEF
+ *  AðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»EüÏEÄzziÈºC
+ *  pÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðÄpÂ\ÈoCiR[hiP[^uIu
+ *      WFNgt@CâCuÈÇjÌ`Åp·éêÉÍCp
+ *      Éº¤hL
+gipÒ}j
+AÈÇjÉCãLÌì \¦C
+ *      ±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðÄpsÂ\ÈoCiR[hÌ`Ü½Í@íÉg
+ *      Ýñ¾`Åp·éêÉÍCÌ¢¸ê©Ìðð½·±ÆD
+ *    (a) pÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌì
+ *         \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) pÌ`ÔðCÊÉèßéû@ÉæÁÄCãLì ÒÉñ·é
+ *        ±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì ÒðÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì ÒÍC
+ *  {\tgEFAÉÖµÄC»ÌKpÂ\«àÜßÄC¢©ÈéÛØàsí
+ *  È¢DÜ½C{\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢
+ *  ©Èé¹QÉÖµÄàC»ÌÓCðíÈ¢D
+ * 
+ */
+#ifndef TOPPERS_CQ_STARM_H
+#define TOPPERS_CQ_STARM_H
+
+#include <sil.h>
+
+/*
+ * CORTEX-M3 CPUÌË¶ÌCN[h
+ */
+#include "arm_m_iccarm/arm_m.h"
+
+/*
+ *  VXeNbNÌè`
+ */
+#define BUS_CLOCK		(60000000)
+#define SYS_CLOCK		(120000000)
+#define FLASH_CLOCK		(20000000)
+#define DDR_CLOCK		(150000000)
+
+/*
+ *  ÝÔÌÅål
+ */
+#define TMAX_INTNO   (16 + 105)
+
+/*
+ *  ÝDæxÌrbg
+ */
+#define TBITW_IPRI     4
+
+/*
+ *  ÝDæxrbgÌTuDæxÌrbg
+ */
+#define TBITW_SUBIPRI  0
+
+/*
+ *  ÝxN^Ôè`
+ */
+#define IRQ_VECTOR_USART2		(16 + 49)
+
+
+/* ytFWX^è` */
+#define PERIPH_REG_BASE			(0x40000000UL)
+#define SRAM_BASE				(0x1FFF0000UL)
+
+
+#define SIM_BASE				(PERIPH_REG_BASE + 0x47000)
+#define PORTA_BASE				(PERIPH_REG_BASE + 0x49000)
+#define PORTE_BASE				(PERIPH_REG_BASE + 0x4D000)
+#define WDOG_BASE				(PERIPH_REG_BASE + 0x52000)
+#define MCG_BASE				(PERIPH_REG_BASE + 0x64000)
+#define UART2_BASE				(PERIPH_REG_BASE + 0x6C000)
+#define PMC_BASE				(PERIPH_REG_BASE + 0x7D000)
+#define GPIOA_BASE				(PERIPH_REG_BASE + 0xFF000)
+
+
+/* System Control space */
+#define SCS_BASE				(0xE000E000)
+#define SYSTM_BASE				(SCS_BASE + 0x0010)
+#define NVIC_BASE				(SCS_BASE + 0x0100)
+#define SYSCB_BASE				(SCS_BASE + 0x0D00)
+
+/* WDOG */
+#define WDOG_STCTRTLH   (WDOG_BASE + 0x00)
+#define WDOG_UNLOCK     (WDOG_BASE + 0x0E)
+
+/* SIM */
+#define SIM_SCGC4       (SIM_BASE + 0x1034)
+#define SIM_SCGC5       (SIM_BASE + 0x1038)
+#define SIM_CLKDIV1     (SIM_BASE + 0x1044)
+
+/* PMC */
+#define PMC_REGSC       (PMC_BASE + 0x02)
+
+/* PORT_A */
+#define PORTA_PCR10     (PORTA_BASE + 0x28)
+#define PORTA_PCR11     (PORTA_BASE + 0x2C)
+#define PORTA_PCR28     (PORTA_BASE + 0x70)
+#define PORTA_PCR29     (PORTA_BASE + 0x74)
+
+/* PORT_E */
+#define PORTE_PCR16     (PORTE_BASE + 0x40)
+#define PORTE_PCR17     (PORTE_BASE + 0x44)
+
+/* GPIO_A */
+#define GPIOA_PSOR      (GPIOA_BASE + 0x04)
+#define GPIOA_PCOR      (GPIOA_BASE + 0x08)
+#define GPIOA_PTOR      (GPIOA_BASE + 0x0C)
+#define GPIOA_PDDR      (GPIOA_BASE + 0x14)
+
+/* MCG */
+#define MCG_C1          (MCG_BASE + 0x00)
+#define MCG_C2          (MCG_BASE + 0x01)
+#define MCG_C5          (MCG_BASE + 0x04)
+#define MCG_C6          (MCG_BASE + 0x05)
+#define MCG_S           (MCG_BASE + 0x06)
+#define MCG_C11         (MCG_BASE + 0x10)
+#define MCG_C12         (MCG_BASE + 0x11)
+#define MCG_S2          (MCG_BASE + 0x12)
+
+/* UART2 */
+#define UART2_BDH       (UART2_BASE + 0x00)
+#define UART2_BDL       (UART2_BASE + 0x01)
+#define UART2_C1        (UART2_BASE  +0x02)
+#define UART2_C2        (UART2_BASE + 0x03)
+#define UART2_S1        (UART2_BASE + 0x04)
+#define UART2_D         (UART2_BASE + 0x07)
+#define UART2_C4        (UART2_BASE + 0x0A)
+
+/* SCB */
+#define SCB_VTOR        (SYSCB_BASE + 0x08)
+#define SCB_AIRCR       (SYSCB_BASE + 0x0C)
+#define SCB_SHPR3       (SYSCB_BASE + 0x20)
+
+/* NVIC */
+#define NVIC_ENAVLE_REG(ch)		(NVIC_BASE + ((ch) >> 5))
+#define NVIC_DISABLE_REG(ch)	(NVIC_BASE + 0x80 + ((ch) >> 5))
+#define NVIC_SET_PEND_REG(ch)	(NVIC_BASE + 0x100 + ((ch) >> 5))
+#define NVIC_CLEAR_PEND_REG(ch)	(NVIC_BASE + 0x180 + ((ch) >> 5))
+#define NVIC_ACTIVE_REG(ch)		(NVIC_BASE + 0x200 + ((ch) >> 5))
+#define NVIC_PRIO_REG(ch)		(NVIC_BASE + 0x300 + ((ch) >> 2))
+#define NVIC_STIR       		(NVIC_BASE+0xE00)     
+
+
+#ifndef TOPPERS_MACRO_ONLY
+
+#endif /* TOPPERS_MACRO_ONLY */
+#endif /* TOPPERS_CQ_STARM_H */
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/cfg1_out.c
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/cfg1_out.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/cfg1_out.c	(revision 61)
@@ -0,0 +1,472 @@
+/* cfg1_out.c */
+#define TOPPERS_CFG1_OUT  1
+#include "kernel/kernel_int.h"
+#include "target_timer.h"
+#include "syssvc/syslog.h"
+#include "syssvc/banner.h"
+#include "target_syssvc.h"
+#include "target_serial.h"
+#include "syssvc/serial.h"
+#include "syssvc/logtask.h"
+#include "sample1.h"
+
+
+#ifdef INT64_MAX
+  typedef int64_t signed_t;
+  typedef uint64_t unsigned_t;
+#else
+  typedef int32_t signed_t;
+  typedef uint32_t unsigned_t;
+#endif
+
+#include <target_cfg1_out.h>
+
+const uint32_t TOPPERS_cfg_magic_number = 0x12345678;
+const uint32_t TOPPERS_cfg_sizeof_signed_t = sizeof(signed_t);
+const uint32_t TOPPERS_cfg_sizeof_pointer = sizeof(const volatile void*);
+const unsigned_t TOPPERS_cfg_CHAR_BIT = CHAR_BIT;
+const unsigned_t TOPPERS_cfg_CHAR_MAX = CHAR_MAX;
+const unsigned_t TOPPERS_cfg_CHAR_MIN = CHAR_MIN;
+const unsigned_t TOPPERS_cfg_SCHAR_MAX = SCHAR_MAX;
+const unsigned_t TOPPERS_cfg_SHRT_MAX = SHRT_MAX;
+const unsigned_t TOPPERS_cfg_INT_MAX = INT_MAX;
+const unsigned_t TOPPERS_cfg_LONG_MAX = LONG_MAX;
+
+const unsigned_t TOPPERS_cfg_SIL_ENDIAN_BIG = 
+#if defined(SIL_ENDIAN_BIG)
+(1);
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_SIL_ENDIAN_LITTLE = 
+#if defined(SIL_ENDIAN_LITTLE)
+(1);
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_TA_NULL = ( unsigned_t )TA_NULL;
+const unsigned_t TOPPERS_cfg_TA_ACT = ( unsigned_t )TA_ACT;
+const unsigned_t TOPPERS_cfg_TA_TPRI = ( unsigned_t )TA_TPRI;
+const unsigned_t TOPPERS_cfg_TA_MPRI = ( unsigned_t )TA_MPRI;
+const unsigned_t TOPPERS_cfg_TA_WMUL = ( unsigned_t )TA_WMUL;
+const unsigned_t TOPPERS_cfg_TA_CLR = ( unsigned_t )TA_CLR;
+const unsigned_t TOPPERS_cfg_TA_STA = ( unsigned_t )TA_STA;
+const unsigned_t TOPPERS_cfg_TA_NONKERNEL = ( unsigned_t )TA_NONKERNEL;
+const unsigned_t TOPPERS_cfg_TA_ENAINT = ( unsigned_t )TA_ENAINT;
+const unsigned_t TOPPERS_cfg_TA_EDGE = ( unsigned_t )TA_EDGE;
+const signed_t TOPPERS_cfg_TMIN_TPRI = ( signed_t )TMIN_TPRI;
+const signed_t TOPPERS_cfg_TMAX_TPRI = ( signed_t )TMAX_TPRI;
+const signed_t TOPPERS_cfg_TMIN_DPRI = ( signed_t )TMIN_DPRI;
+const signed_t TOPPERS_cfg_TMAX_DPRI = ( signed_t )TMAX_DPRI;
+const signed_t TOPPERS_cfg_TMIN_MPRI = ( signed_t )TMIN_MPRI;
+const signed_t TOPPERS_cfg_TMAX_MPRI = ( signed_t )TMAX_MPRI;
+const signed_t TOPPERS_cfg_TMIN_ISRPRI = ( signed_t )TMIN_ISRPRI;
+const signed_t TOPPERS_cfg_TMAX_ISRPRI = ( signed_t )TMAX_ISRPRI;
+const unsigned_t TOPPERS_cfg_TMAX_MAXSEM = ( unsigned_t )TMAX_MAXSEM;
+const unsigned_t TOPPERS_cfg_TMAX_RELTIM = ( unsigned_t )TMAX_RELTIM;
+const signed_t TOPPERS_cfg_TMIN_INTPRI = ( signed_t )TMIN_INTPRI;
+const unsigned_t TOPPERS_cfg_OMIT_INITIALIZE_INTERRUPT = 
+#if defined(OMIT_INITIALIZE_INTERRUPT)
+(1);
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_OMIT_INITIALIZE_EXCEPTION = 
+#if defined(OMIT_INITIALIZE_EXCEPTION)
+(1);
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_USE_TSKINICTXB = 
+#if defined(USE_TSKINICTXB)
+(1);
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_TARGET_TSKATR = 
+#if defined(TARGET_TSKATR)
+(TARGET_TSKATR);
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_TARGET_INTATR = 
+#if defined(TARGET_INTATR)
+(TARGET_INTATR);
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_TARGET_INHATR = 
+#if defined(TARGET_INHATR)
+(TARGET_INHATR);
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_TARGET_ISRATR = 
+#if defined(TARGET_ISRATR)
+(TARGET_ISRATR);
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_TARGET_EXCATR = 
+#if defined(TARGET_EXCATR)
+(TARGET_EXCATR);
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_TARGET_MIN_STKSZ = 
+#if defined(TARGET_MIN_STKSZ)
+(TARGET_MIN_STKSZ);
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_CHECK_STKSZ_ALIGN = 
+#if defined(CHECK_STKSZ_ALIGN)
+(CHECK_STKSZ_ALIGN);
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_CHECK_FUNC_ALIGN = 
+#if defined(CHECK_FUNC_ALIGN)
+(CHECK_FUNC_ALIGN);
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_CHECK_FUNC_NONNULL = 
+#if defined(CHECK_FUNC_NONNULL)
+(1);
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_CHECK_STACK_ALIGN = 
+#if defined(CHECK_STACK_ALIGN)
+(CHECK_STACK_ALIGN);
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_CHECK_STACK_NONNULL = 
+#if defined(CHECK_STACK_NONNULL)
+(1);
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_CHECK_MPF_ALIGN = 
+#if defined(CHECK_MPF_ALIGN)
+(CHECK_MPF_ALIGN);
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_CHECK_MPF_NONNULL = 
+#if defined(CHECK_MPF_NONNULL)
+(1);
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_sizeof_ID = ( unsigned_t )sizeof(ID);
+const unsigned_t TOPPERS_cfg_sizeof_uint_t = ( unsigned_t )sizeof(uint_t);
+const unsigned_t TOPPERS_cfg_sizeof_SIZE = ( unsigned_t )sizeof(SIZE);
+const unsigned_t TOPPERS_cfg_sizeof_ATR = ( unsigned_t )sizeof(ATR);
+const unsigned_t TOPPERS_cfg_sizeof_PRI = ( unsigned_t )sizeof(PRI);
+const unsigned_t TOPPERS_cfg_sizeof_void_ptr = ( unsigned_t )sizeof(void*);
+const unsigned_t TOPPERS_cfg_sizeof_VP = ( unsigned_t )sizeof(void*);
+const unsigned_t TOPPERS_cfg_sizeof_intptr_t = ( unsigned_t )sizeof(intptr_t);
+const unsigned_t TOPPERS_cfg_sizeof_FP = ( unsigned_t )sizeof(FP);
+const unsigned_t TOPPERS_cfg_sizeof_INHNO = ( unsigned_t )sizeof(INHNO);
+const unsigned_t TOPPERS_cfg_sizeof_INTNO = ( unsigned_t )sizeof(INTNO);
+const unsigned_t TOPPERS_cfg_sizeof_EXCNO = ( unsigned_t )sizeof(EXCNO);
+const unsigned_t TOPPERS_cfg_sizeof_TINIB = ( unsigned_t )sizeof(TINIB);
+const unsigned_t TOPPERS_cfg_offsetof_TINIB_tskatr = ( unsigned_t )offsetof(TINIB,tskatr);
+const unsigned_t TOPPERS_cfg_offsetof_TINIB_exinf = ( unsigned_t )offsetof(TINIB,exinf);
+const unsigned_t TOPPERS_cfg_offsetof_TINIB_task = ( unsigned_t )offsetof(TINIB,task);
+const unsigned_t TOPPERS_cfg_offsetof_TINIB_ipriority = ( unsigned_t )offsetof(TINIB,ipriority);
+const unsigned_t TOPPERS_cfg_offsetof_TINIB_stksz = 
+#if !defined(USE_TSKINICTXB)
+(offsetof(TINIB,stksz));
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_offsetof_TINIB_stk = 
+#if !defined(USE_TSKINICTXB)
+(offsetof(TINIB,stk));
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_offsetof_TINIB_texatr = ( unsigned_t )offsetof(TINIB,texatr);
+const unsigned_t TOPPERS_cfg_offsetof_TINIB_texrtn = ( unsigned_t )offsetof(TINIB,texrtn);
+const unsigned_t TOPPERS_cfg_sizeof_SEMINIB = ( unsigned_t )sizeof(SEMINIB);
+const unsigned_t TOPPERS_cfg_offsetof_SEMINIB_sematr = ( unsigned_t )offsetof(SEMINIB,sematr);
+const unsigned_t TOPPERS_cfg_offsetof_SEMINIB_isemcnt = ( unsigned_t )offsetof(SEMINIB,isemcnt);
+const unsigned_t TOPPERS_cfg_offsetof_SEMINIB_maxsem = ( unsigned_t )offsetof(SEMINIB,maxsem);
+const unsigned_t TOPPERS_cfg_sizeof_FLGPTN = ( unsigned_t )sizeof(FLGPTN);
+const unsigned_t TOPPERS_cfg_sizeof_FLGINIB = ( unsigned_t )sizeof(FLGINIB);
+const unsigned_t TOPPERS_cfg_offsetof_FLGINIB_flgatr = ( unsigned_t )offsetof(FLGINIB,flgatr);
+const unsigned_t TOPPERS_cfg_offsetof_FLGINIB_iflgptn = ( unsigned_t )offsetof(FLGINIB,iflgptn);
+const unsigned_t TOPPERS_cfg_sizeof_DTQINIB = ( unsigned_t )sizeof(DTQINIB);
+const unsigned_t TOPPERS_cfg_offsetof_DTQINIB_dtqatr = ( unsigned_t )offsetof(DTQINIB,dtqatr);
+const unsigned_t TOPPERS_cfg_offsetof_DTQINIB_dtqcnt = ( unsigned_t )offsetof(DTQINIB,dtqcnt);
+const unsigned_t TOPPERS_cfg_offsetof_DTQINIB_p_dtqmb = ( unsigned_t )offsetof(DTQINIB,p_dtqmb);
+const unsigned_t TOPPERS_cfg_sizeof_PDQINIB = ( unsigned_t )sizeof(PDQINIB);
+const unsigned_t TOPPERS_cfg_offsetof_PDQINIB_pdqatr = ( unsigned_t )offsetof(PDQINIB,pdqatr);
+const unsigned_t TOPPERS_cfg_offsetof_PDQINIB_pdqcnt = ( unsigned_t )offsetof(PDQINIB,pdqcnt);
+const unsigned_t TOPPERS_cfg_offsetof_PDQINIB_maxdpri = ( unsigned_t )offsetof(PDQINIB,maxdpri);
+const unsigned_t TOPPERS_cfg_offsetof_PDQINIB_p_pdqmb = ( unsigned_t )offsetof(PDQINIB,p_pdqmb);
+const unsigned_t TOPPERS_cfg_sizeof_MBXINIB = ( unsigned_t )sizeof(MBXINIB);
+const unsigned_t TOPPERS_cfg_offsetof_MBXINIB_mbxatr = ( unsigned_t )offsetof(MBXINIB,mbxatr);
+const unsigned_t TOPPERS_cfg_offsetof_MBXINIB_maxmpri = ( unsigned_t )offsetof(MBXINIB,maxmpri);
+const unsigned_t TOPPERS_cfg_sizeof_MPFINIB = ( unsigned_t )sizeof(MPFINIB);
+const unsigned_t TOPPERS_cfg_offsetof_MPFINIB_mpfatr = ( unsigned_t )offsetof(MPFINIB,mpfatr);
+const unsigned_t TOPPERS_cfg_offsetof_MPFINIB_blkcnt = ( unsigned_t )offsetof(MPFINIB,blkcnt);
+const unsigned_t TOPPERS_cfg_offsetof_MPFINIB_blksz = ( unsigned_t )offsetof(MPFINIB,blksz);
+const unsigned_t TOPPERS_cfg_offsetof_MPFINIB_mpf = ( unsigned_t )offsetof(MPFINIB,mpf);
+const unsigned_t TOPPERS_cfg_offsetof_MPFINIB_p_mpfmb = ( unsigned_t )offsetof(MPFINIB,p_mpfmb);
+const unsigned_t TOPPERS_cfg_sizeof_CYCINIB = ( unsigned_t )sizeof(CYCINIB);
+const unsigned_t TOPPERS_cfg_offsetof_CYCINIB_cycatr = ( unsigned_t )offsetof(CYCINIB,cycatr);
+const unsigned_t TOPPERS_cfg_offsetof_CYCINIB_exinf = ( unsigned_t )offsetof(CYCINIB,exinf);
+const unsigned_t TOPPERS_cfg_offsetof_CYCINIB_cychdr = ( unsigned_t )offsetof(CYCINIB,cychdr);
+const unsigned_t TOPPERS_cfg_offsetof_CYCINIB_cyctim = ( unsigned_t )offsetof(CYCINIB,cyctim);
+const unsigned_t TOPPERS_cfg_offsetof_CYCINIB_cycphs = ( unsigned_t )offsetof(CYCINIB,cycphs);
+const unsigned_t TOPPERS_cfg_sizeof_ALMINIB = ( unsigned_t )sizeof(ALMINIB);
+const unsigned_t TOPPERS_cfg_offsetof_ALMINIB_almatr = ( unsigned_t )offsetof(ALMINIB,almatr);
+const unsigned_t TOPPERS_cfg_offsetof_ALMINIB_exinf = ( unsigned_t )offsetof(ALMINIB,exinf);
+const unsigned_t TOPPERS_cfg_offsetof_ALMINIB_almhdr = ( unsigned_t )offsetof(ALMINIB,almhdr);
+const unsigned_t TOPPERS_cfg_sizeof_INHINIB = 
+#if !defined(OMIT_INITIALIZE_INTERRUPT)
+(sizeof(INHINIB));
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_offset_INHINIB_inhno = 
+#if !defined(OMIT_INITIALIZE_INTERRUPT)
+(offsetof(INHINIB,inhno));
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_offset_INHINIB_inhatr = 
+#if !defined(OMIT_INITIALIZE_INTERRUPT)
+(offsetof(INHINIB,inhatr));
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_offset_INHINIB_int_entry = 
+#if !defined(OMIT_INITIALIZE_INTERRUPT)
+(offsetof(INHINIB,int_entry));
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_sizeof_INTINIB = 
+#if !defined(OMIT_INITIALIZE_INTERRUPT)
+(sizeof(INTINIB));
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_offset_INTINIB_intno = 
+#if !defined(OMIT_INITIALIZE_INTERRUPT)
+(offsetof(INTINIB,intno));
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_offset_INTINIB_intatr = 
+#if !defined(OMIT_INITIALIZE_INTERRUPT)
+(offsetof(INTINIB,intatr));
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_offset_INTINIB_intpri = 
+#if !defined(OMIT_INITIALIZE_INTERRUPT)
+(offsetof(INTINIB,intpri));
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_sizeof_EXCINIB = 
+#if !defined(OMIT_INITIALIZE_EXCEPTION)
+(sizeof(EXCINIB));
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_offset_EXCINIB_excno = 
+#if !defined(OMIT_INITIALIZE_EXCEPTION)
+(offsetof(EXCINIB,excno));
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_offset_EXCINIB_excatr = 
+#if !defined(OMIT_INITIALIZE_EXCEPTION)
+(offsetof(EXCINIB,excatr));
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_offset_EXCINIB_exc_entry = 
+#if !defined(OMIT_INITIALIZE_EXCEPTION)
+(offsetof(EXCINIB,exc_entry));
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_TMAX_INTNO = ( unsigned_t )TMAX_INTNO;
+const unsigned_t TOPPERS_cfg_TIPM_LOCK = ( unsigned_t )TIPM_LOCK ;
+const unsigned_t TOPPERS_cfg_TBITW_IPRI = ( unsigned_t )TBITW_IPRI;
+const unsigned_t TOPPERS_cfg_sizeof_TCB = ( unsigned_t )sizeof(TCB);
+const unsigned_t TOPPERS_cfg_offsetof_TCB_p_tinib = ( unsigned_t )offsetof(TCB,p_tinib);
+const unsigned_t TOPPERS_cfg_offsetof_TCB_texptn = ( unsigned_t )offsetof(TCB,texptn);
+const unsigned_t TOPPERS_cfg_offsetof_TCB_sp = ( unsigned_t )offsetof(TCB,tskctxb.sp);
+const unsigned_t TOPPERS_cfg_offsetof_TCB_pc = ( unsigned_t )offsetof(TCB,tskctxb.pc);
+
+
+/* #include "target_timer.h" */
+
+#line 4 "../../../arch/arm_m_iccarm/prc_timer.cfg"
+const unsigned_t TOPPERS_cfg_static_api_0 = 0;
+const unsigned_t TOPPERS_cfg_valueof_iniatr_0 = ( unsigned_t )( TA_NULL ); 
+#line 5 "../../../arch/arm_m_iccarm/prc_timer.cfg"
+const unsigned_t TOPPERS_cfg_static_api_1 = 1;
+const unsigned_t TOPPERS_cfg_valueof_teratr_1 = ( unsigned_t )( TA_NULL ); 
+#line 6 "../../../arch/arm_m_iccarm/prc_timer.cfg"
+const unsigned_t TOPPERS_cfg_static_api_2 = 2;
+const unsigned_t TOPPERS_cfg_valueof_inhno_2 = ( unsigned_t )( INHNO_TIMER ); const unsigned_t TOPPERS_cfg_valueof_inhatr_2 = ( unsigned_t )( TA_NULL ); 
+#line 7 "../../../arch/arm_m_iccarm/prc_timer.cfg"
+const unsigned_t TOPPERS_cfg_static_api_3 = 3;
+const unsigned_t TOPPERS_cfg_valueof_intno_3 = ( unsigned_t )( INTNO_TIMER ); const unsigned_t TOPPERS_cfg_valueof_intatr_3 = ( unsigned_t )( TA_ENAINT|INTATR_TIMER ); const signed_t TOPPERS_cfg_valueof_intpri_3 = ( signed_t )( INTPRI_TIMER ); /* #include "syssvc/syslog.h" */
+
+#line 10 "../../../syssvc/syslog.cfg"
+const unsigned_t TOPPERS_cfg_static_api_4 = 4;
+const unsigned_t TOPPERS_cfg_valueof_iniatr_4 = ( unsigned_t )( TA_NULL ); /* #include "syssvc/banner.h" */
+
+#line 10 "../../../syssvc/banner.cfg"
+const unsigned_t TOPPERS_cfg_static_api_5 = 5;
+const unsigned_t TOPPERS_cfg_valueof_iniatr_5 = ( unsigned_t )( TA_NULL ); /* #include "target_syssvc.h" */
+/* #include "target_serial.h" */
+
+#line 6 "../../../target/fs_k70f120m_EWARM2/target_serial.cfg"
+const unsigned_t TOPPERS_cfg_static_api_6 = 6;
+const unsigned_t TOPPERS_cfg_valueof_iniatr_6 = ( unsigned_t )( TA_NULL ); 
+#line 7 "../../../target/fs_k70f120m_EWARM2/target_serial.cfg"
+const unsigned_t TOPPERS_cfg_static_api_7 = 7;
+const unsigned_t TOPPERS_cfg_valueof_isratr_7 = ( unsigned_t )( TA_NULL ); const unsigned_t TOPPERS_cfg_valueof_intno_7 = ( unsigned_t )( INTNO_SIO ); const signed_t TOPPERS_cfg_valueof_isrpri_7 = ( signed_t )( 1 ); 
+#line 8 "../../../target/fs_k70f120m_EWARM2/target_serial.cfg"
+const unsigned_t TOPPERS_cfg_static_api_8 = 8;
+const unsigned_t TOPPERS_cfg_valueof_intno_8 = ( unsigned_t )( INTNO_SIO ); const unsigned_t TOPPERS_cfg_valueof_intatr_8 = ( unsigned_t )( TA_ENAINT|INTATR_SIO ); const signed_t TOPPERS_cfg_valueof_intpri_8 = ( signed_t )( INTPRI_SIO ); /* #include "syssvc/serial.h" */
+
+#line 13 "../../../syssvc/serial.cfg"
+const unsigned_t TOPPERS_cfg_static_api_9 = 9;
+const unsigned_t TOPPERS_cfg_valueof_iniatr_9 = ( unsigned_t )( TA_NULL ); 
+#line 15 "../../../syssvc/serial.cfg"
+const unsigned_t TOPPERS_cfg_static_api_10 = 10;
+#define SERIAL_RCV_SEM1	(<>)
+
+#line 15 "../../../syssvc/serial.cfg"
+const unsigned_t TOPPERS_cfg_valueof_sematr_10 = ( unsigned_t )( TA_TPRI ); const unsigned_t TOPPERS_cfg_valueof_isemcnt_10 = ( unsigned_t )( 0 ); const unsigned_t TOPPERS_cfg_valueof_maxsem_10 = ( unsigned_t )( 1 ); 
+#line 16 "../../../syssvc/serial.cfg"
+const unsigned_t TOPPERS_cfg_static_api_11 = 11;
+#define SERIAL_SND_SEM1	(<>)
+
+#line 16 "../../../syssvc/serial.cfg"
+const unsigned_t TOPPERS_cfg_valueof_sematr_11 = ( unsigned_t )( TA_TPRI ); const unsigned_t TOPPERS_cfg_valueof_isemcnt_11 = ( unsigned_t )( 1 ); const unsigned_t TOPPERS_cfg_valueof_maxsem_11 = ( unsigned_t )( 1 ); 
+#if TNUM_PORT >= 2
+
+#line 18 "../../../syssvc/serial.cfg"
+const unsigned_t TOPPERS_cfg_static_api_12 = 12;
+#define SERIAL_RCV_SEM2	(<>)
+
+#line 18 "../../../syssvc/serial.cfg"
+const unsigned_t TOPPERS_cfg_valueof_sematr_12 = ( unsigned_t )( TA_TPRI ); const unsigned_t TOPPERS_cfg_valueof_isemcnt_12 = ( unsigned_t )( 0 ); const unsigned_t TOPPERS_cfg_valueof_maxsem_12 = ( unsigned_t )( 1 ); 
+#line 19 "../../../syssvc/serial.cfg"
+const unsigned_t TOPPERS_cfg_static_api_13 = 13;
+#define SERIAL_SND_SEM2	(<>)
+
+#line 19 "../../../syssvc/serial.cfg"
+const unsigned_t TOPPERS_cfg_valueof_sematr_13 = ( unsigned_t )( TA_TPRI ); const unsigned_t TOPPERS_cfg_valueof_isemcnt_13 = ( unsigned_t )( 1 ); const unsigned_t TOPPERS_cfg_valueof_maxsem_13 = ( unsigned_t )( 1 ); 
+#endif 
+
+#if TNUM_PORT >= 3
+
+#line 22 "../../../syssvc/serial.cfg"
+const unsigned_t TOPPERS_cfg_static_api_14 = 14;
+#define SERIAL_RCV_SEM3	(<>)
+
+#line 22 "../../../syssvc/serial.cfg"
+const unsigned_t TOPPERS_cfg_valueof_sematr_14 = ( unsigned_t )( TA_TPRI ); const unsigned_t TOPPERS_cfg_valueof_isemcnt_14 = ( unsigned_t )( 0 ); const unsigned_t TOPPERS_cfg_valueof_maxsem_14 = ( unsigned_t )( 1 ); 
+#line 23 "../../../syssvc/serial.cfg"
+const unsigned_t TOPPERS_cfg_static_api_15 = 15;
+#define SERIAL_SND_SEM3	(<>)
+
+#line 23 "../../../syssvc/serial.cfg"
+const unsigned_t TOPPERS_cfg_valueof_sematr_15 = ( unsigned_t )( TA_TPRI ); const unsigned_t TOPPERS_cfg_valueof_isemcnt_15 = ( unsigned_t )( 1 ); const unsigned_t TOPPERS_cfg_valueof_maxsem_15 = ( unsigned_t )( 1 ); 
+#endif 
+
+#if TNUM_PORT >= 4
+
+#line 26 "../../../syssvc/serial.cfg"
+const unsigned_t TOPPERS_cfg_static_api_16 = 16;
+#define SERIAL_RCV_SEM4	(<>)
+
+#line 26 "../../../syssvc/serial.cfg"
+const unsigned_t TOPPERS_cfg_valueof_sematr_16 = ( unsigned_t )( TA_TPRI ); const unsigned_t TOPPERS_cfg_valueof_isemcnt_16 = ( unsigned_t )( 0 ); const unsigned_t TOPPERS_cfg_valueof_maxsem_16 = ( unsigned_t )( 1 ); 
+#line 27 "../../../syssvc/serial.cfg"
+const unsigned_t TOPPERS_cfg_static_api_17 = 17;
+#define SERIAL_SND_SEM4	(<>)
+
+#line 27 "../../../syssvc/serial.cfg"
+const unsigned_t TOPPERS_cfg_valueof_sematr_17 = ( unsigned_t )( TA_TPRI ); const unsigned_t TOPPERS_cfg_valueof_isemcnt_17 = ( unsigned_t )( 1 ); const unsigned_t TOPPERS_cfg_valueof_maxsem_17 = ( unsigned_t )( 1 ); 
+#endif 
+/* #include "syssvc/logtask.h" */
+
+#line 10 "../../../syssvc/logtask.cfg"
+const unsigned_t TOPPERS_cfg_static_api_18 = 18;
+#define LOGTASK	(<>)
+
+#line 10 "../../../syssvc/logtask.cfg"
+const unsigned_t TOPPERS_cfg_valueof_tskatr_18 = ( unsigned_t )( TA_ACT ); const signed_t TOPPERS_cfg_valueof_itskpri_18 = ( signed_t )( LOGTASK_PRIORITY ); const unsigned_t TOPPERS_cfg_valueof_stksz_18 = ( unsigned_t )( LOGTASK_STACK_SIZE ); 
+#line 12 "../../../syssvc/logtask.cfg"
+const unsigned_t TOPPERS_cfg_static_api_19 = 19;
+const unsigned_t TOPPERS_cfg_valueof_teratr_19 = ( unsigned_t )( TA_NULL ); /* #include "sample1.h" */
+
+#line 15 "src/sample1.cfg"
+const unsigned_t TOPPERS_cfg_static_api_20 = 20;
+#define TASK1	(<>)
+
+#line 15 "src/sample1.cfg"
+const unsigned_t TOPPERS_cfg_valueof_tskatr_20 = ( unsigned_t )( TA_NULL ); const signed_t TOPPERS_cfg_valueof_itskpri_20 = ( signed_t )( MID_PRIORITY ); const unsigned_t TOPPERS_cfg_valueof_stksz_20 = ( unsigned_t )( STACK_SIZE ); 
+#line 16 "src/sample1.cfg"
+const unsigned_t TOPPERS_cfg_static_api_21 = 21;
+#define TASK2	(<>)
+
+#line 16 "src/sample1.cfg"
+const unsigned_t TOPPERS_cfg_valueof_tskatr_21 = ( unsigned_t )( TA_NULL ); const signed_t TOPPERS_cfg_valueof_itskpri_21 = ( signed_t )( MID_PRIORITY ); const unsigned_t TOPPERS_cfg_valueof_stksz_21 = ( unsigned_t )( STACK_SIZE ); 
+#line 17 "src/sample1.cfg"
+const unsigned_t TOPPERS_cfg_static_api_22 = 22;
+#define TASK3	(<>)
+
+#line 17 "src/sample1.cfg"
+const unsigned_t TOPPERS_cfg_valueof_tskatr_22 = ( unsigned_t )( TA_NULL ); const signed_t TOPPERS_cfg_valueof_itskpri_22 = ( signed_t )( MID_PRIORITY ); const unsigned_t TOPPERS_cfg_valueof_stksz_22 = ( unsigned_t )( STACK_SIZE ); 
+#line 18 "src/sample1.cfg"
+const unsigned_t TOPPERS_cfg_static_api_23 = 23;
+#define MAIN_TASK	(<>)
+
+#line 18 "src/sample1.cfg"
+const unsigned_t TOPPERS_cfg_valueof_tskatr_23 = ( unsigned_t )( TA_ACT ); const signed_t TOPPERS_cfg_valueof_itskpri_23 = ( signed_t )( MAIN_PRIORITY ); const unsigned_t TOPPERS_cfg_valueof_stksz_23 = ( unsigned_t )( STACK_SIZE ); 
+#line 19 "src/sample1.cfg"
+const unsigned_t TOPPERS_cfg_static_api_24 = 24;
+const unsigned_t TOPPERS_cfg_valueof_texatr_24 = ( unsigned_t )( TA_NULL ); 
+#line 20 "src/sample1.cfg"
+const unsigned_t TOPPERS_cfg_static_api_25 = 25;
+const unsigned_t TOPPERS_cfg_valueof_texatr_25 = ( unsigned_t )( TA_NULL ); 
+#line 21 "src/sample1.cfg"
+const unsigned_t TOPPERS_cfg_static_api_26 = 26;
+const unsigned_t TOPPERS_cfg_valueof_texatr_26 = ( unsigned_t )( TA_NULL ); 
+#line 22 "src/sample1.cfg"
+const unsigned_t TOPPERS_cfg_static_api_27 = 27;
+#define CYCHDR1	(<>)
+
+#line 22 "src/sample1.cfg"
+const unsigned_t TOPPERS_cfg_valueof_cycatr_27 = ( unsigned_t )( TA_NULL ); const unsigned_t TOPPERS_cfg_valueof_cyctim_27 = ( unsigned_t )( 2000 ); const unsigned_t TOPPERS_cfg_valueof_cycphs_27 = ( unsigned_t )( 0 ); 
+#line 23 "src/sample1.cfg"
+const unsigned_t TOPPERS_cfg_static_api_28 = 28;
+#define ALMHDR1	(<>)
+
+#line 23 "src/sample1.cfg"
+const unsigned_t TOPPERS_cfg_valueof_almatr_28 = ( unsigned_t )( TA_NULL ); 
+#ifdef CPUEXC1
+
+#line 25 "src/sample1.cfg"
+const unsigned_t TOPPERS_cfg_static_api_29 = 29;
+const unsigned_t TOPPERS_cfg_valueof_excno_29 = ( unsigned_t )( CPUEXC1 ); const unsigned_t TOPPERS_cfg_valueof_excatr_29 = ( unsigned_t )( TA_NULL ); 
+#endif 
+
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/cfg1_out.srec
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/cfg1_out.srec	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/cfg1_out.srec	(revision 61)
@@ -0,0 +1,113 @@
+S0100000636667315F6F75742E73726563FC
+S11300000020FF1FA10A00007B0A00007B0A0000F9
+S11300107B0A00007B0A00007B0A0000000000004D
+S11300200000000000000000000000007B0A000047
+S11300307B0A0000000000007B0A00007B0A00002D
+S1130410000000001200341278563412000000006C
+S113042000000000000000000000040000000000C4
+S113043000000000000000000000000078563412A4
+S11304400800000004000000080000000000000094
+S1130450FF00000000000000000000000000000099
+S11304607F00000000000000FF7F0000000000008B
+S1130470FFFFFF7F00000000FFFFFF7F0000000080
+S11304800000000000000000010000000000000067
+S11304900000000000000000020000000000000056
+S11304A00100000000000000020000000000000045
+S11304B00200000000000000040000000000000032
+S11304C00200000000000000020000000000000024
+S11304D00100000000000000020000000000000015
+S11304E001000000000000001000000000000000F7
+S11304F001000000000000001000000000000000E7
+S113050001000000000000001000000000000000D6
+S113051001000000000000001000000000000000C6
+S1130520FFFFFFFF00000000FFFFFF7F000000004F
+S1130530F1FFFFFFFFFFFFFF0000000000000000CD
+S113054000000000000000000000000000000000A7
+S11305500000000000000000000000000000000097
+S11305600200000000000000000000000000000085
+S11305700000000000000000000000000000000077
+S1130580080000000000000001000000000000005E
+S1130590010000000000000008000000000000004E
+S11305A00100000000000000040000000000000042
+S11305B00100000000000000040000000000000032
+S11305C0040000000000000004000000000000001F
+S11305D0040000000000000004000000000000000F
+S11305E004000000000000000400000000000000FF
+S11305F004000000000000000400000000000000EF
+S113060004000000000000000400000000000000DE
+S113061004000000000000002000000000000000B2
+S113062000000000000000000400000000000000C2
+S113063008000000000000000C00000000000000A2
+S11306401000000000000000140000000000000082
+S113065018000000000000001C0000000000000062
+S11306600C0000000000000000000000000000007A
+S1130670040000000000000008000000000000006A
+S1130680040000000000000008000000000000005A
+S11306900000000000000000040000000000000052
+S11306A00C0000000000000000000000000000003A
+S11306B0040000000000000008000000000000002A
+S11306C01000000000000000000000000000000016
+S11306D0040000000000000008000000000000000A
+S11306E00C000000000000000800000000000000F2
+S11306F000000000000000000400000000000000F2
+S113070014000000000000000000000000000000D1
+S113071004000000000000000800000000000000C9
+S11307200C000000000000001000000000000000A9
+S113073014000000000000000000000000000000A1
+S11307400400000000000000080000000000000099
+S11307500C00000000000000100000000000000079
+S11307600C00000000000000000000000000000079
+S11307700400000000000000080000000000000069
+S11307800C00000000000000000000000000000059
+S11307900400000000000000080000000000000049
+S11307A00C00000000000000000000000000000039
+S11307B00400000000000000080000000000000029
+S11307C00C00000000000000000000000000000019
+S11307D00400000000000000080000000000000009
+S11307E07900000000000000F1FFFFFFFFFFFFFFA2
+S11307F004000000000000002000000000000000D1
+S113080008000000000000001000000000000000CC
+S113081018000000000000001C00000000000000A0
+S113082000000000000000000000000000000000C4
+S113083001000000000000000000000000000000B3
+S113084002000000000000000F0000000000000093
+S11308500000000000000000030000000000000091
+S11308600F00000000000000010000000000000074
+S1130870FAFFFFFFFFFFFFFF04000000000000007D
+S1130880000000000000000005000000000000005F
+S1130890000000000000000006000000000000004E
+S11308A0000000000000000007000000000000003D
+S11308B000000000000000004100000000000000F3
+S11308C0010000000000000008000000000000001B
+S11308D041000000000000000100000000000000D2
+S11308E0FDFFFFFFFFFFFFFF090000000000000005
+S11308F000000000000000000A00000000000000EA
+S113090001000000000000000000000000000000E2
+S113091001000000000000000B00000000000000C7
+S113092001000000000000000100000000000000C1
+S113093001000000000000001200000000000000A0
+S1130940020000000000000003000000000000009E
+S1130950000400000000000013000000000000007C
+S1130960000000000000000014000000000000006F
+S113097000000000000000000A0000000000000069
+S1130980001000000000000015000000000000003E
+S113099000000000000000000A0000000000000049
+S11309A0001000000000000016000000000000001D
+S11309B000000000000000000A0000000000000029
+S11309C000100000000000001700000000000000FC
+S11309D0020000000000000005000000000000000C
+S11309E000100000000000001800000000000000DB
+S11309F000000000000000001900000000000000DA
+S1130A0000000000000000001A00000000000000C8
+S1130A1000000000000000001B00000000000000B7
+S1130A200000000000000000D007000000000000EB
+S1130A3000000000000000001C0000000000000096
+S1130A4000000000000000001D0000000000000085
+S1130A50060000000000000000000000000000008C
+S1130A600120C046002801D0C046C0460020C04630
+S1130A70C04600F000F800F001B8FEE70746C046A3
+S1130A80C046C046C046C046C046384600F002F8DC
+S1130A90FBE7000001491820ABBEFBE7260002007B
+S1130AA0C046C046C046C046FFF7DAFF70477047ED
+S1070AB00120704766
+S9030AA151
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/cfg1_out.syms
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/cfg1_out.syms	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/cfg1_out.syms	(revision 61)
@@ -0,0 +1,231 @@
+00000a61 t ?main
+00000a7b t BusFault_Handler
+1fff0000 t CSTACK$$Base
+1fff2000 t CSTACK$$Limit
+00000a7b t DebugMon_Handler
+00000a7b t HardFault_Handler
+00000414 t MAGIC_1
+00000416 t MAGIC_2
+00000418 t MAGIC_4
+00000a7b t MemManage_Handler
+00000a7b t NMI_Handler
+00000a7b t PendSV_Handler
+00000000 t Region$$Table$$Base
+00000000 t Region$$Table$$Limit
+00000a7b t SVC_Handler
+00000a7b t SysTick_Handler
+0000041c t TCB_enatex
+00000448 t TOPPERS_cfg_CHAR_BIT
+00000450 t TOPPERS_cfg_CHAR_MAX
+00000458 t TOPPERS_cfg_CHAR_MIN
+00000588 t TOPPERS_cfg_CHECK_FUNC_ALIGN
+00000590 t TOPPERS_cfg_CHECK_FUNC_NONNULL
+000005a8 t TOPPERS_cfg_CHECK_MPF_ALIGN
+000005b0 t TOPPERS_cfg_CHECK_MPF_NONNULL
+00000598 t TOPPERS_cfg_CHECK_STACK_ALIGN
+000005a0 t TOPPERS_cfg_CHECK_STACK_NONNULL
+00000580 t TOPPERS_cfg_CHECK_STKSZ_ALIGN
+00000470 t TOPPERS_cfg_INT_MAX
+00000478 t TOPPERS_cfg_LONG_MAX
+00000540 t TOPPERS_cfg_OMIT_INITIALIZE_EXCEPTION
+00000538 t TOPPERS_cfg_OMIT_INITIALIZE_INTERRUPT
+00000460 t TOPPERS_cfg_SCHAR_MAX
+00000468 t TOPPERS_cfg_SHRT_MAX
+00000480 t TOPPERS_cfg_SIL_ENDIAN_BIG
+00000488 t TOPPERS_cfg_SIL_ENDIAN_LITTLE
+00000570 t TOPPERS_cfg_TARGET_EXCATR
+00000560 t TOPPERS_cfg_TARGET_INHATR
+00000558 t TOPPERS_cfg_TARGET_INTATR
+00000568 t TOPPERS_cfg_TARGET_ISRATR
+00000578 t TOPPERS_cfg_TARGET_MIN_STKSZ
+00000550 t TOPPERS_cfg_TARGET_TSKATR
+00000498 t TOPPERS_cfg_TA_ACT
+000004b8 t TOPPERS_cfg_TA_CLR
+000004d8 t TOPPERS_cfg_TA_EDGE
+000004d0 t TOPPERS_cfg_TA_ENAINT
+000004a8 t TOPPERS_cfg_TA_MPRI
+000004c8 t TOPPERS_cfg_TA_NONKERNEL
+00000490 t TOPPERS_cfg_TA_NULL
+000004c0 t TOPPERS_cfg_TA_STA
+000004a0 t TOPPERS_cfg_TA_TPRI
+000004b0 t TOPPERS_cfg_TA_WMUL
+000007f0 t TOPPERS_cfg_TBITW_IPRI
+000007e8 t TOPPERS_cfg_TIPM_LOCK
+000004f8 t TOPPERS_cfg_TMAX_DPRI
+000007e0 t TOPPERS_cfg_TMAX_INTNO
+00000518 t TOPPERS_cfg_TMAX_ISRPRI
+00000520 t TOPPERS_cfg_TMAX_MAXSEM
+00000508 t TOPPERS_cfg_TMAX_MPRI
+00000528 t TOPPERS_cfg_TMAX_RELTIM
+000004e8 t TOPPERS_cfg_TMAX_TPRI
+000004f0 t TOPPERS_cfg_TMIN_DPRI
+00000530 t TOPPERS_cfg_TMIN_INTPRI
+00000510 t TOPPERS_cfg_TMIN_ISRPRI
+00000500 t TOPPERS_cfg_TMIN_MPRI
+000004e0 t TOPPERS_cfg_TMIN_TPRI
+00000548 t TOPPERS_cfg_USE_TSKINICTXB
+0000043c t TOPPERS_cfg_magic_number
+000007d8 t TOPPERS_cfg_offset_EXCINIB_exc_entry
+000007d0 t TOPPERS_cfg_offset_EXCINIB_excatr
+000007c8 t TOPPERS_cfg_offset_EXCINIB_excno
+00000790 t TOPPERS_cfg_offset_INHINIB_inhatr
+00000788 t TOPPERS_cfg_offset_INHINIB_inhno
+00000798 t TOPPERS_cfg_offset_INHINIB_int_entry
+000007b0 t TOPPERS_cfg_offset_INTINIB_intatr
+000007a8 t TOPPERS_cfg_offset_INTINIB_intno
+000007b8 t TOPPERS_cfg_offset_INTINIB_intpri
+00000768 t TOPPERS_cfg_offsetof_ALMINIB_almatr
+00000778 t TOPPERS_cfg_offsetof_ALMINIB_almhdr
+00000770 t TOPPERS_cfg_offsetof_ALMINIB_exinf
+00000738 t TOPPERS_cfg_offsetof_CYCINIB_cycatr
+00000748 t TOPPERS_cfg_offsetof_CYCINIB_cychdr
+00000758 t TOPPERS_cfg_offsetof_CYCINIB_cycphs
+00000750 t TOPPERS_cfg_offsetof_CYCINIB_cyctim
+00000740 t TOPPERS_cfg_offsetof_CYCINIB_exinf
+000006a8 t TOPPERS_cfg_offsetof_DTQINIB_dtqatr
+000006b0 t TOPPERS_cfg_offsetof_DTQINIB_dtqcnt
+000006b8 t TOPPERS_cfg_offsetof_DTQINIB_p_dtqmb
+00000690 t TOPPERS_cfg_offsetof_FLGINIB_flgatr
+00000698 t TOPPERS_cfg_offsetof_FLGINIB_iflgptn
+000006f8 t TOPPERS_cfg_offsetof_MBXINIB_maxmpri
+000006f0 t TOPPERS_cfg_offsetof_MBXINIB_mbxatr
+00000710 t TOPPERS_cfg_offsetof_MPFINIB_blkcnt
+00000718 t TOPPERS_cfg_offsetof_MPFINIB_blksz
+00000720 t TOPPERS_cfg_offsetof_MPFINIB_mpf
+00000708 t TOPPERS_cfg_offsetof_MPFINIB_mpfatr
+00000728 t TOPPERS_cfg_offsetof_MPFINIB_p_mpfmb
+000006d8 t TOPPERS_cfg_offsetof_PDQINIB_maxdpri
+000006e0 t TOPPERS_cfg_offsetof_PDQINIB_p_pdqmb
+000006c8 t TOPPERS_cfg_offsetof_PDQINIB_pdqatr
+000006d0 t TOPPERS_cfg_offsetof_PDQINIB_pdqcnt
+00000670 t TOPPERS_cfg_offsetof_SEMINIB_isemcnt
+00000678 t TOPPERS_cfg_offsetof_SEMINIB_maxsem
+00000668 t TOPPERS_cfg_offsetof_SEMINIB_sematr
+00000800 t TOPPERS_cfg_offsetof_TCB_p_tinib
+00000818 t TOPPERS_cfg_offsetof_TCB_pc
+00000810 t TOPPERS_cfg_offsetof_TCB_sp
+00000808 t TOPPERS_cfg_offsetof_TCB_texptn
+00000628 t TOPPERS_cfg_offsetof_TINIB_exinf
+00000638 t TOPPERS_cfg_offsetof_TINIB_ipriority
+00000648 t TOPPERS_cfg_offsetof_TINIB_stk
+00000640 t TOPPERS_cfg_offsetof_TINIB_stksz
+00000630 t TOPPERS_cfg_offsetof_TINIB_task
+00000650 t TOPPERS_cfg_offsetof_TINIB_texatr
+00000658 t TOPPERS_cfg_offsetof_TINIB_texrtn
+00000620 t TOPPERS_cfg_offsetof_TINIB_tskatr
+00000760 t TOPPERS_cfg_sizeof_ALMINIB
+000005d0 t TOPPERS_cfg_sizeof_ATR
+00000730 t TOPPERS_cfg_sizeof_CYCINIB
+000006a0 t TOPPERS_cfg_sizeof_DTQINIB
+000007c0 t TOPPERS_cfg_sizeof_EXCINIB
+00000610 t TOPPERS_cfg_sizeof_EXCNO
+00000688 t TOPPERS_cfg_sizeof_FLGINIB
+00000680 t TOPPERS_cfg_sizeof_FLGPTN
+000005f8 t TOPPERS_cfg_sizeof_FP
+000005b8 t TOPPERS_cfg_sizeof_ID
+00000780 t TOPPERS_cfg_sizeof_INHINIB
+00000600 t TOPPERS_cfg_sizeof_INHNO
+000007a0 t TOPPERS_cfg_sizeof_INTINIB
+00000608 t TOPPERS_cfg_sizeof_INTNO
+000006e8 t TOPPERS_cfg_sizeof_MBXINIB
+00000700 t TOPPERS_cfg_sizeof_MPFINIB
+000006c0 t TOPPERS_cfg_sizeof_PDQINIB
+000005d8 t TOPPERS_cfg_sizeof_PRI
+00000660 t TOPPERS_cfg_sizeof_SEMINIB
+000005c8 t TOPPERS_cfg_sizeof_SIZE
+000007f8 t TOPPERS_cfg_sizeof_TCB
+00000618 t TOPPERS_cfg_sizeof_TINIB
+000005e8 t TOPPERS_cfg_sizeof_VP
+000005f0 t TOPPERS_cfg_sizeof_intptr_t
+00000444 t TOPPERS_cfg_sizeof_pointer
+00000440 t TOPPERS_cfg_sizeof_signed_t
+000005c0 t TOPPERS_cfg_sizeof_uint_t
+000005e0 t TOPPERS_cfg_sizeof_void_ptr
+00000820 t TOPPERS_cfg_static_api_0
+00000830 t TOPPERS_cfg_static_api_1
+000008f8 t TOPPERS_cfg_static_api_10
+00000918 t TOPPERS_cfg_static_api_11
+00000938 t TOPPERS_cfg_static_api_18
+00000958 t TOPPERS_cfg_static_api_19
+00000840 t TOPPERS_cfg_static_api_2
+00000968 t TOPPERS_cfg_static_api_20
+00000988 t TOPPERS_cfg_static_api_21
+000009a8 t TOPPERS_cfg_static_api_22
+000009c8 t TOPPERS_cfg_static_api_23
+000009e8 t TOPPERS_cfg_static_api_24
+000009f8 t TOPPERS_cfg_static_api_25
+00000a08 t TOPPERS_cfg_static_api_26
+00000a18 t TOPPERS_cfg_static_api_27
+00000a38 t TOPPERS_cfg_static_api_28
+00000a48 t TOPPERS_cfg_static_api_29
+00000858 t TOPPERS_cfg_static_api_3
+00000878 t TOPPERS_cfg_static_api_4
+00000888 t TOPPERS_cfg_static_api_5
+00000898 t TOPPERS_cfg_static_api_6
+000008a8 t TOPPERS_cfg_static_api_7
+000008c8 t TOPPERS_cfg_static_api_8
+000008e8 t TOPPERS_cfg_static_api_9
+00000a40 t TOPPERS_cfg_valueof_almatr_28
+00000a20 t TOPPERS_cfg_valueof_cycatr_27
+00000a30 t TOPPERS_cfg_valueof_cycphs_27
+00000a28 t TOPPERS_cfg_valueof_cyctim_27
+00000a58 t TOPPERS_cfg_valueof_excatr_29
+00000a50 t TOPPERS_cfg_valueof_excno_29
+00000850 t TOPPERS_cfg_valueof_inhatr_2
+00000848 t TOPPERS_cfg_valueof_inhno_2
+00000828 t TOPPERS_cfg_valueof_iniatr_0
+00000880 t TOPPERS_cfg_valueof_iniatr_4
+00000890 t TOPPERS_cfg_valueof_iniatr_5
+000008a0 t TOPPERS_cfg_valueof_iniatr_6
+000008f0 t TOPPERS_cfg_valueof_iniatr_9
+00000868 t TOPPERS_cfg_valueof_intatr_3
+000008d8 t TOPPERS_cfg_valueof_intatr_8
+00000860 t TOPPERS_cfg_valueof_intno_3
+000008b8 t TOPPERS_cfg_valueof_intno_7
+000008d0 t TOPPERS_cfg_valueof_intno_8
+00000870 t TOPPERS_cfg_valueof_intpri_3
+000008e0 t TOPPERS_cfg_valueof_intpri_8
+00000908 t TOPPERS_cfg_valueof_isemcnt_10
+00000928 t TOPPERS_cfg_valueof_isemcnt_11
+000008b0 t TOPPERS_cfg_valueof_isratr_7
+000008c0 t TOPPERS_cfg_valueof_isrpri_7
+00000948 t TOPPERS_cfg_valueof_itskpri_18
+00000978 t TOPPERS_cfg_valueof_itskpri_20
+00000998 t TOPPERS_cfg_valueof_itskpri_21
+000009b8 t TOPPERS_cfg_valueof_itskpri_22
+000009d8 t TOPPERS_cfg_valueof_itskpri_23
+00000910 t TOPPERS_cfg_valueof_maxsem_10
+00000930 t TOPPERS_cfg_valueof_maxsem_11
+00000900 t TOPPERS_cfg_valueof_sematr_10
+00000920 t TOPPERS_cfg_valueof_sematr_11
+00000950 t TOPPERS_cfg_valueof_stksz_18
+00000980 t TOPPERS_cfg_valueof_stksz_20
+000009a0 t TOPPERS_cfg_valueof_stksz_21
+000009c0 t TOPPERS_cfg_valueof_stksz_22
+000009e0 t TOPPERS_cfg_valueof_stksz_23
+00000838 t TOPPERS_cfg_valueof_teratr_1
+00000960 t TOPPERS_cfg_valueof_teratr_19
+000009f0 t TOPPERS_cfg_valueof_texatr_24
+00000a00 t TOPPERS_cfg_valueof_texatr_25
+00000a10 t TOPPERS_cfg_valueof_texatr_26
+00000940 t TOPPERS_cfg_valueof_tskatr_18
+00000970 t TOPPERS_cfg_valueof_tskatr_20
+00000990 t TOPPERS_cfg_valueof_tskatr_21
+000009b0 t TOPPERS_cfg_valueof_tskatr_22
+000009d0 t TOPPERS_cfg_valueof_tskatr_23
+00000a7b t UsageFault_Handler
+00000a7f t __cexit_call_dtors
+00000a87 t __cexit_clearlocks
+00000a83 t __cexit_closeall
+00000a61 t __cmain
+00000a95 t __exit
+00000aa1 t __iar_program_start
+00000ab1 t __low_level_init
+00000000 t __vector_table
+00000a6d t _call_main
+00000a7d t _exit
+00000410 t _kernel_istkpt
+00000a73 t _main
+00000a77 t exit
+00000aaf t main
+00000aad t sta_ker
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/cspy.mac
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/cspy.mac	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/cspy.mac	(revision 61)
@@ -0,0 +1,6 @@
+execUserReset() {
+
+
+__hwReset(0);
+
+}
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/depend.dep
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/depend.dep	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/depend.dep	(revision 61)
@@ -0,0 +1,268 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<project>
+  <fileVersion>2</fileVersion>
+  <fileChecksum>864712099</fileChecksum>
+  <configuration>
+    <name>Debug</name>
+    <outputs>
+      <file>$PROJ_DIR$\cfg1_out.c</file>
+      <file>$PROJ_DIR$\..\target_kernel.h</file>
+      <file>$PROJ_DIR$\..\target_stddef.h</file>
+      <file>$PROJ_DIR$\..\fs_k70f120m.h</file>
+      <file>$PROJ_DIR$\Debug\Exe\cfg1_out.srec</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_insn.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\pridataq.h</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\logtask.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_unrename.h</file>
+      <file>$PROJ_DIR$\..\..\..\include\t_syslog.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\alarm.h</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\serial.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\cfg1_out.pbi</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\dataqueue.h</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\banner.h</file>
+      <file>$PROJ_DIR$\src\sample1.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\kernel_unrename.h</file>
+      <file>$TOOLKIT_DIR$\lib\dl7M_tln.a</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\mailbox.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\interrupt.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\exception.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\limits.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\ysizet.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\kernel_int.h</file>
+      <file>$TOOLKIT_DIR$\lib\m7M_tl.a</file>
+      <file>$PROJ_DIR$\..\..\..\arch\iccarm\tool_stddef.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_cfg1_out.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\xencoding_limits.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\DLib_Product.h</file>
+      <file>$TOOLKIT_DIR$\config\linker\Freescale\MK70xN1M_12.icf</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\task.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\allfunc.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\DLib_Threads.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\time_event.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_test.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_sil.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\DLib_Config_Normal.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_config.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\arm_m.h</file>
+      <file>$PROJ_DIR$\Debug\Exe\cfg1_out.out</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_kernel.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\eventflag.h</file>
+      <file>$PROJ_DIR$\..\..\..\include\sil.h</file>
+      <file>$PROJ_DIR$\Debug\List\cfg1_out.lst</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_stddef.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\cfg1_out.o</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\syslog.h</file>
+      <file>$PROJ_DIR$\..\..\..\include\t_stddef.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\yvals.h</file>
+      <file>$TOOLKIT_DIR$\lib\shb_l.a</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\kernel_rename.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\ycheck.h</file>
+      <file>$PROJ_DIR$\..\..\..\include\queue.h</file>
+      <file>$TOOLKIT_DIR$\lib\rt7M_tl.a</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_rename.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\semaphore.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\DLib_Defaults.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\mempfix.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\cyclic.h</file>
+      <file>$PROJ_DIR$\Debug\List\cfg1_out.map</file>
+      <file>$PROJ_DIR$\..\..\..\include\kernel.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_timer.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\kernel_impl.h</file>
+      <file>$PROJ_DIR$\..\target_sil.h</file>
+      <file>$PROJ_DIR$\..\target_test.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\stddef.h</file>
+      <file>$PROJ_DIR$\..\target_timer.h</file>
+      <file>$PROJ_DIR$\..\target_cfg1_out.h</file>
+      <file>$PROJ_DIR$\..\target_syssvc.h</file>
+      <file>$PROJ_DIR$\..\target_serial.h</file>
+      <file>$PROJ_DIR$\..\target_rename.h</file>
+      <file>$PROJ_DIR$\..\target_unrename.h</file>
+      <file>$PROJ_DIR$\..\target_config.h</file>
+    </outputs>
+    <file>
+      <name>$PROJ_DIR$\cfg1_out.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 12</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 43 45</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 23 62 50 70 54 60 47 2 25 65 51 48 56 36 28 27 32 22 21 44 1 40 9 72 3 42 63 35 38 37 5 31 30 52 33 55 41 13 6 18 57 58 10 19 20 16 71 8 66 61 46 14 68 69 11 7 15 64 34 67 26</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 23 62 50 70 54 60 47 2 25 65 51 48 56 36 28 27 32 22 21 44 1 40 9 72 3 42 63 35 38 37 5 31 30 52 33 55 41 13 6 18 57 58 10 19 20 16 71 8 66 61 46 14 68 69 11 7 15 64 34 67 26</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>[ROOT_NODE]</name>
+      <outputs>
+        <tool>
+          <name>ILINK</name>
+          <file> 59 39</file>
+        </tool>
+      </outputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\Debug\Exe\cfg1_out.out</name>
+      <outputs>
+        <tool>
+          <name>ILINK</name>
+          <file> 59</file>
+        </tool>
+        <tool>
+          <name>OBJCOPY</name>
+          <file> 4</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>ILINK</name>
+          <file> 29 45 49 53 24 17</file>
+        </tool>
+      </inputs>
+    </file>
+  </configuration>
+  <configuration>
+    <name>Release</name>
+    <outputs>
+      <file>$PROJ_DIR$\cfg1_out.c</file>
+      <file>$PROJ_DIR$\post_depend.bat</file>
+      <file>$PROJ_DIR$\..\target_kernel.h</file>
+      <file>$PROJ_DIR$\..\target_stddef.h</file>
+      <file>$PROJ_DIR$\..\fs_k70f120m.h</file>
+      <file>$PROJ_DIR$\Release\Exe\cfg1_out.out</file>
+      <file>$PROJ_DIR$\Release\Obj\cfg1_out.pbi</file>
+      <file>$PROJ_DIR$\Release\List\cfg1_out.map</file>
+      <file>$PROJ_DIR$\Release\Obj\cfg1_out.o</file>
+      <file>$PROJ_DIR$\Release\Exe\cfg1_out.srec</file>
+      <file>$PROJ_DIR$\Release\Obj\depend.pbd</file>
+      <file>$PROJ_DIR$\pre_depend.bat</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_insn.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\pridataq.h</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\logtask.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_unrename.h</file>
+      <file>$PROJ_DIR$\..\..\..\include\t_syslog.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\alarm.h</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\serial.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\dataqueue.h</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\banner.h</file>
+      <file>$PROJ_DIR$\src\sample1.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\kernel_unrename.h</file>
+      <file>$TOOLKIT_DIR$\lib\dl7M_tln.a</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\mailbox.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\interrupt.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\exception.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\limits.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\ysizet.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\kernel_int.h</file>
+      <file>$TOOLKIT_DIR$\lib\m7M_tl.a</file>
+      <file>$PROJ_DIR$\..\..\..\arch\iccarm\tool_stddef.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_cfg1_out.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\xencoding_limits.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\DLib_Product.h</file>
+      <file>$TOOLKIT_DIR$\config\linker\Freescale\MK70xN1M_12.icf</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\task.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\allfunc.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\DLib_Threads.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\time_event.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_test.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_sil.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\DLib_Config_Normal.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_config.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\arm_m.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_kernel.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\eventflag.h</file>
+      <file>$PROJ_DIR$\..\..\..\include\sil.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_stddef.h</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\syslog.h</file>
+      <file>$PROJ_DIR$\..\..\..\include\t_stddef.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\yvals.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\kernel_rename.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\ycheck.h</file>
+      <file>$PROJ_DIR$\..\..\..\include\queue.h</file>
+      <file>$TOOLKIT_DIR$\lib\rt7M_tl.a</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_rename.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\semaphore.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\DLib_Defaults.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\mempfix.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\cyclic.h</file>
+      <file>$PROJ_DIR$\..\..\..\include\kernel.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_timer.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\kernel_impl.h</file>
+      <file>$PROJ_DIR$\..\target_sil.h</file>
+      <file>$PROJ_DIR$\..\target_test.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\stddef.h</file>
+      <file>$PROJ_DIR$\..\target_timer.h</file>
+      <file>$PROJ_DIR$\..\target_cfg1_out.h</file>
+      <file>$PROJ_DIR$\..\target_syssvc.h</file>
+      <file>$PROJ_DIR$\..\target_serial.h</file>
+      <file>$PROJ_DIR$\..\target_rename.h</file>
+      <file>$PROJ_DIR$\..\target_unrename.h</file>
+      <file>$PROJ_DIR$\..\target_config.h</file>
+      <file>$PROJ_DIR$\..\target_config.c</file>
+    </outputs>
+    <file>
+      <name>$PROJ_DIR$\cfg1_out.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 6</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 8</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 29 63 52 71 56 61 50 3 31 66 53 51 58 42 34 33 38 28 27 48 2 45 16 73 4 47 64 41 44 43 12 37 36 54 39 57 46 19 13 24 59 60 17 25 26 22 72 15 67 62 49 20 69 70 18 14 21 65 40 68 32</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 29 63 52 71 56 61 50 3 31 66 53 51 58 42 34 33 38 28 27 48 2 45 16 73 4 47 64 41 44 43 12 37 36 54 39 57 46 19 13 24 59 60 17 25 26 22 72 15 67 62 49 20 69 70 18 14 21 65 40 68 32</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>[ROOT_NODE]</name>
+      <outputs>
+        <tool>
+          <name>ILINK</name>
+          <file> 5 7</file>
+        </tool>
+      </outputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\Release\Exe\cfg1_out.out</name>
+      <outputs>
+        <tool>
+          <name>ILINK</name>
+          <file> 7</file>
+        </tool>
+        <tool>
+          <name>OBJCOPY</name>
+          <file> 9</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>ILINK</name>
+          <file> 35 8 55 30 23</file>
+        </tool>
+      </inputs>
+    </file>
+  </configuration>
+</project>
+
+
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/depend.ewd
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/depend.ewd	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/depend.ewd	(revision 61)
@@ -0,0 +1,2227 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<project>
+  <fileVersion>2</fileVersion>
+  <configuration>
+    <name>Debug</name>
+    <toolchain>
+      <name>ARM</name>
+    </toolchain>
+    <debug>1</debug>
+    <settings>
+      <name>C-SPY</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>23</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>CInput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CEndian</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCVariant</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>MemOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MemFile</name>
+          <state>$TOOLKIT_DIR$\CONFIG\debugger\ST\STM32F100xB.ddf</state>
+        </option>
+        <option>
+          <name>RunToEnable</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>RunToName</name>
+          <state>main</state>
+        </option>
+        <option>
+          <name>CExtraOptionsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CExtraOptions</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CFpuProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCDDFArgumentProducer</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCDownloadSuppressDownload</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCDownloadVerifyAll</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCProductVersion</name>
+          <state>6.50.1.4445</state>
+        </option>
+        <option>
+          <name>OCDynDriverList</name>
+          <state>PEMICRO_ID</state>
+        </option>
+        <option>
+          <name>OCLastSavedByProductVersion</name>
+          <state>6.50.1.4445</state>
+        </option>
+        <option>
+          <name>OCDownloadAttachToProgram</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>UseFlashLoader</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CLowLevel</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCBE8Slave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacFile2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CDevice</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>FlashLoadersV3</name>
+          <state>$TOOLKIT_DIR$\config\flashloader\ST\FlashSTM32F100xB.board</state>
+        </option>
+        <option>
+          <name>OCImagesSuppressCheck1</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesPath1</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesSuppressCheck2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesPath2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesSuppressCheck3</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesPath3</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OverrideDefFlashBoard</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesOffset1</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesOffset2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesOffset3</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesUse1</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesUse2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesUse3</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCDeviceConfigMacroFile</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>ARMSIM_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>OCSimDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCSimEnablePSP</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCSimPspOverrideConfig</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCSimPspConfigFile</name>
+          <state></state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>ANGEL_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>CCAngelHeartbeat</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CAngelCommunication</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CAngelCommBaud</name>
+          <version>0</version>
+          <state>3</state>
+        </option>
+        <option>
+          <name>CAngelCommPort</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ANGELTCPIP</name>
+          <state>aaa.bbb.ccc.ddd</state>
+        </option>
+        <option>
+          <name>DoAngelLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AngelLogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>GDBSERVER_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>TCPIP</name>
+          <state>aaa.bbb.ccc.ddd</state>
+        </option>
+        <option>
+          <name>DoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>LogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CCJTagBreakpointRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJTagDoUpdateBreakpoints</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJTagUpdateBreakpoints</name>
+          <state>_call_main</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>IARROM_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>CRomLogFileCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CRomLogFileEditB</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CRomCommPort</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CRomCommBaud</name>
+          <version>0</version>
+          <state>7</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>IJET_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IjetAttachSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCIarProbeScriptFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IjetResetList</name>
+          <version>1</version>
+          <state>10</state>
+        </option>
+        <option>
+          <name>IjetHWResetDuration</name>
+          <state>300</state>
+        </option>
+        <option>
+          <name>IjetHWResetDelay</name>
+          <state>200</state>
+        </option>
+        <option>
+          <name>IjetPowerFromProbe</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IjetPowerRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetDoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetLogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>IjetInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetMultiTargetEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetMultiTarget</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetScanChainNonARMDevices</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetIRLength</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetJtagSpeedList</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetProtocolRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetSwoPin</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetCpuClockEdit</name>
+          <state>72.0</state>
+        </option>
+        <option>
+          <name>IjetSwoPrescalerList</name>
+          <version>1</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetBreakpointRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetRestoreBreakpointsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetUpdateBreakpointsEdit</name>
+          <state>_call_main</state>
+        </option>
+        <option>
+          <name>RDICatchReset</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchUndef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchSWI</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchData</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchPrefetch</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchIRQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchFIQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchCORERESET</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchMMERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchNOCPERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchCHKERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchSTATERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchBUSERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchINTERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchHARDERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchDummy</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCProbeCfgOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCProbeConfig</name>
+          <state></state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>JLINK_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>14</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>JLinkSpeed</name>
+          <state>32</state>
+        </option>
+        <option>
+          <name>CCJLinkDoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkLogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CCJLinkHWResetDelay</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>JLinkInitialSpeed</name>
+          <state>32</state>
+        </option>
+        <option>
+          <name>CCDoJlinkMultiTarget</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCScanChainNonARMDevices</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkMultiTarget</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkIRLength</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkCommRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkTCPIP</name>
+          <state>aaa.bbb.ccc.ddd</state>
+        </option>
+        <option>
+          <name>CCJLinkSpeedRadioV2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCUSBDevice</name>
+          <version>1</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCRDICatchReset</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchUndef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchSWI</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchData</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchPrefetch</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchIRQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchFIQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkBreakpointRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkDoUpdateBreakpoints</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkUpdateBreakpoints</name>
+          <state>_call_main</state>
+        </option>
+        <option>
+          <name>CCJLinkInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCJLinkAttachSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCJLinkResetList</name>
+          <version>6</version>
+          <state>5</state>
+        </option>
+        <option>
+          <name>CCJLinkInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchCORERESET</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchMMERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchNOCPERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchCHRERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchSTATERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchBUSERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchINTERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchHARDERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchDummy</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCJLinkScriptFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCJLinkUsbSerialNo</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCTcpIpAlt</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkTcpIpSerialNo</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCCpuClockEdit</name>
+          <state>72.0</state>
+        </option>
+        <option>
+          <name>CCSwoClockAuto</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSwoClockEdit</name>
+          <state>2000</state>
+        </option>
+        <option>
+          <name>OCJLinkTraceSource</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCJLinkTraceSourceDummy</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>LMIFTDI_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>2</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>LmiftdiSpeed</name>
+          <state>500</state>
+        </option>
+        <option>
+          <name>CCLmiftdiDoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCLmiftdiLogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CCLmiFtdiInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCLmiFtdiInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>MACRAIGOR_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>3</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>jtag</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>EmuSpeed</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>TCPIP</name>
+          <state>aaa.bbb.ccc.ddd</state>
+        </option>
+        <option>
+          <name>DoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>LogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>DoEmuMultiTarget</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>EmuMultiTarget</name>
+          <state>0@ARM7TDMI</state>
+        </option>
+        <option>
+          <name>EmuHWReset</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CEmuCommBaud</name>
+          <version>0</version>
+          <state>4</state>
+        </option>
+        <option>
+          <name>CEmuCommPort</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>jtago</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>UnusedAddr</name>
+          <state>0x00800000</state>
+        </option>
+        <option>
+          <name>CCMacraigorHWResetDelay</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCJTagBreakpointRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJTagDoUpdateBreakpoints</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJTagUpdateBreakpoints</name>
+          <state>_call_main</state>
+        </option>
+        <option>
+          <name>CCMacraigorInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCMacraigorInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>PEMICRO_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCPEMicroAttachSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCPEMicroInterfaceList</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPEMicroResetDelay</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCPEMicroJtagSpeed</name>
+          <state>5000</state>
+        </option>
+        <option>
+          <name>CCJPEMicroShowSettings</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>DoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>LogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CCPEMicroUSBDevice</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPEMicroSerialPort</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJPEMicroTCPIPAutoScanNetwork</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCPEMicroTCPIP</name>
+          <state>10.0.0.1</state>
+        </option>
+        <option>
+          <name>CCPEMicroCommCmdLineProducer</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSTLinkInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSTLinkInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>RDI_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>2</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>CRDIDriverDll</name>
+          <state>###Uninitialized###</state>
+        </option>
+        <option>
+          <name>CRDILogFileCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CRDILogFileEdit</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CCRDIHWReset</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchReset</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchUndef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchSWI</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchData</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchPrefetch</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchIRQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchFIQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>STLINK_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>2</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCSTLinkInterfaceRadio</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCSTLinkInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSTLinkResetList</name>
+          <version>1</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCpuClockEdit</name>
+          <state>72.0</state>
+        </option>
+        <option>
+          <name>CCSwoClockAuto</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSwoClockEdit</name>
+          <state>2000</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>THIRDPARTY_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>CThirdPartyDriverDll</name>
+          <state>###Uninitialized###</state>
+        </option>
+        <option>
+          <name>CThirdPartyLogFileCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CThirdPartyLogFileEditB</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>XDS100_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>2</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCXDS100AttachSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>TIPackageOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>TIPackage</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCXds100InterfaceList</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>BoardFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>DoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>LogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+      </data>
+    </settings>
+    <debuggerPlugins>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\middleware\HCCWare\HCCWare.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.JPN.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.JPN.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB6_Plugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.JPN.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.JPN.ewplugin</file>
+        <loadFlag>1</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$EW_DIR$\common\plugins\Orti\Orti.JPN.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$EW_DIR$\common\plugins\SymList\SymList.JPN.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+    </debuggerPlugins>
+  </configuration>
+  <configuration>
+    <name>Release</name>
+    <toolchain>
+      <name>ARM</name>
+    </toolchain>
+    <debug>0</debug>
+    <settings>
+      <name>C-SPY</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>23</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>CInput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CEndian</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCVariant</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>MemOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MemFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>RunToEnable</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>RunToName</name>
+          <state>main</state>
+        </option>
+        <option>
+          <name>CExtraOptionsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CExtraOptions</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CFpuProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCDDFArgumentProducer</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCDownloadSuppressDownload</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCDownloadVerifyAll</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCProductVersion</name>
+          <state>6.50.1.4445</state>
+        </option>
+        <option>
+          <name>OCDynDriverList</name>
+          <state>ARMSIM_ID</state>
+        </option>
+        <option>
+          <name>OCLastSavedByProductVersion</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCDownloadAttachToProgram</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>UseFlashLoader</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CLowLevel</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCBE8Slave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacFile2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CDevice</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>FlashLoadersV3</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesSuppressCheck1</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesPath1</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesSuppressCheck2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesPath2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesSuppressCheck3</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesPath3</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OverrideDefFlashBoard</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesOffset1</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesOffset2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesOffset3</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesUse1</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesUse2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesUse3</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCDeviceConfigMacroFile</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>ARMSIM_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>OCSimDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCSimEnablePSP</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCSimPspOverrideConfig</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCSimPspConfigFile</name>
+          <state></state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>ANGEL_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>CCAngelHeartbeat</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CAngelCommunication</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CAngelCommBaud</name>
+          <version>0</version>
+          <state>3</state>
+        </option>
+        <option>
+          <name>CAngelCommPort</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ANGELTCPIP</name>
+          <state>aaa.bbb.ccc.ddd</state>
+        </option>
+        <option>
+          <name>DoAngelLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AngelLogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>GDBSERVER_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>TCPIP</name>
+          <state>aaa.bbb.ccc.ddd</state>
+        </option>
+        <option>
+          <name>DoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>LogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CCJTagBreakpointRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJTagDoUpdateBreakpoints</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJTagUpdateBreakpoints</name>
+          <state>_call_main</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>IARROM_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>CRomLogFileCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CRomLogFileEditB</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CRomCommPort</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CRomCommBaud</name>
+          <version>0</version>
+          <state>7</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>IJET_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IjetAttachSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCIarProbeScriptFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IjetResetList</name>
+          <version>1</version>
+          <state>10</state>
+        </option>
+        <option>
+          <name>IjetHWResetDuration</name>
+          <state>300</state>
+        </option>
+        <option>
+          <name>IjetHWResetDelay</name>
+          <state>200</state>
+        </option>
+        <option>
+          <name>IjetPowerFromProbe</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IjetPowerRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetDoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetLogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>IjetInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetMultiTargetEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetMultiTarget</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetScanChainNonARMDevices</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetIRLength</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetJtagSpeedList</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetProtocolRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetSwoPin</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetCpuClockEdit</name>
+          <state>72.0</state>
+        </option>
+        <option>
+          <name>IjetSwoPrescalerList</name>
+          <version>1</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetBreakpointRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetRestoreBreakpointsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetUpdateBreakpointsEdit</name>
+          <state>_call_main</state>
+        </option>
+        <option>
+          <name>RDICatchReset</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchUndef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchSWI</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchData</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchPrefetch</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchIRQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchFIQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchCORERESET</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchMMERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchNOCPERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchCHKERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchSTATERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchBUSERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchINTERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchHARDERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchDummy</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCProbeCfgOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCProbeConfig</name>
+          <state></state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>JLINK_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>14</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>JLinkSpeed</name>
+          <state>32</state>
+        </option>
+        <option>
+          <name>CCJLinkDoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkLogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CCJLinkHWResetDelay</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>JLinkInitialSpeed</name>
+          <state>32</state>
+        </option>
+        <option>
+          <name>CCDoJlinkMultiTarget</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCScanChainNonARMDevices</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkMultiTarget</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkIRLength</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkCommRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkTCPIP</name>
+          <state>aaa.bbb.ccc.ddd</state>
+        </option>
+        <option>
+          <name>CCJLinkSpeedRadioV2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCUSBDevice</name>
+          <version>1</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCRDICatchReset</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchUndef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchSWI</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchData</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchPrefetch</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchIRQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchFIQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkBreakpointRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkDoUpdateBreakpoints</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkUpdateBreakpoints</name>
+          <state>_call_main</state>
+        </option>
+        <option>
+          <name>CCJLinkInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCJLinkAttachSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCJLinkResetList</name>
+          <version>6</version>
+          <state>5</state>
+        </option>
+        <option>
+          <name>CCJLinkInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchCORERESET</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchMMERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchNOCPERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchCHRERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchSTATERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchBUSERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchINTERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchHARDERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchDummy</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCJLinkScriptFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCJLinkUsbSerialNo</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCTcpIpAlt</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkTcpIpSerialNo</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCCpuClockEdit</name>
+          <state>72.0</state>
+        </option>
+        <option>
+          <name>CCSwoClockAuto</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSwoClockEdit</name>
+          <state>2000</state>
+        </option>
+        <option>
+          <name>OCJLinkTraceSource</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCJLinkTraceSourceDummy</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>LMIFTDI_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>2</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>LmiftdiSpeed</name>
+          <state>500</state>
+        </option>
+        <option>
+          <name>CCLmiftdiDoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCLmiftdiLogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CCLmiFtdiInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCLmiFtdiInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>MACRAIGOR_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>3</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>jtag</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>EmuSpeed</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>TCPIP</name>
+          <state>aaa.bbb.ccc.ddd</state>
+        </option>
+        <option>
+          <name>DoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>LogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>DoEmuMultiTarget</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>EmuMultiTarget</name>
+          <state>0@ARM7TDMI</state>
+        </option>
+        <option>
+          <name>EmuHWReset</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CEmuCommBaud</name>
+          <version>0</version>
+          <state>4</state>
+        </option>
+        <option>
+          <name>CEmuCommPort</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>jtago</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>UnusedAddr</name>
+          <state>0x00800000</state>
+        </option>
+        <option>
+          <name>CCMacraigorHWResetDelay</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCJTagBreakpointRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJTagDoUpdateBreakpoints</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJTagUpdateBreakpoints</name>
+          <state>_call_main</state>
+        </option>
+        <option>
+          <name>CCMacraigorInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCMacraigorInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>PEMICRO_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCPEMicroAttachSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCPEMicroInterfaceList</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPEMicroResetDelay</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCPEMicroJtagSpeed</name>
+          <state>#UNINITIALIZED#</state>
+        </option>
+        <option>
+          <name>CCJPEMicroShowSettings</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>DoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>LogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CCPEMicroUSBDevice</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPEMicroSerialPort</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJPEMicroTCPIPAutoScanNetwork</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCPEMicroTCPIP</name>
+          <state>10.0.0.1</state>
+        </option>
+        <option>
+          <name>CCPEMicroCommCmdLineProducer</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSTLinkInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSTLinkInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>RDI_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>2</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>CRDIDriverDll</name>
+          <state>###Uninitialized###</state>
+        </option>
+        <option>
+          <name>CRDILogFileCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CRDILogFileEdit</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CCRDIHWReset</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchReset</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchUndef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchSWI</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchData</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchPrefetch</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchIRQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchFIQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>STLINK_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>2</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCSTLinkInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSTLinkInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSTLinkResetList</name>
+          <version>1</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCpuClockEdit</name>
+          <state>72.0</state>
+        </option>
+        <option>
+          <name>CCSwoClockAuto</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSwoClockEdit</name>
+          <state>2000</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>THIRDPARTY_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>CThirdPartyDriverDll</name>
+          <state>###Uninitialized###</state>
+        </option>
+        <option>
+          <name>CThirdPartyLogFileCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CThirdPartyLogFileEditB</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>XDS100_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>2</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCXDS100AttachSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>TIPackageOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>TIPackage</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCXds100InterfaceList</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>BoardFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>DoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>LogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+      </data>
+    </settings>
+    <debuggerPlugins>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\middleware\HCCWare\HCCWare.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.JPN.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.JPN.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB6_Plugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.JPN.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.JPN.ewplugin</file>
+        <loadFlag>1</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$EW_DIR$\common\plugins\Orti\Orti.JPN.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$EW_DIR$\common\plugins\SymList\SymList.JPN.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+    </debuggerPlugins>
+  </configuration>
+</project>
+
+
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/depend.ewp
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/depend.ewp	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/depend.ewp	(revision 61)
@@ -0,0 +1,1879 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<project>
+  <fileVersion>2</fileVersion>
+  <configuration>
+    <name>Debug</name>
+    <toolchain>
+      <name>ARM</name>
+    </toolchain>
+    <debug>1</debug>
+    <settings>
+      <name>General</name>
+      <archiveVersion>3</archiveVersion>
+      <data>
+        <version>21</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>ExePath</name>
+          <state>Debug\Exe</state>
+        </option>
+        <option>
+          <name>ObjPath</name>
+          <state>Debug\Obj</state>
+        </option>
+        <option>
+          <name>ListPath</name>
+          <state>Debug\List</state>
+        </option>
+        <option>
+          <name>Variant</name>
+          <version>20</version>
+          <state>39</state>
+        </option>
+        <option>
+          <name>GEndianMode</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Input variant</name>
+          <version>3</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Input description</name>
+          <state>Automatic choice of formatter.</state>
+        </option>
+        <option>
+          <name>Output variant</name>
+          <version>2</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Output description</name>
+          <state>Automatic choice of formatter.</state>
+        </option>
+        <option>
+          <name>GOutputBinary</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>FPU</name>
+          <version>2</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGCoreOrChip</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>GRuntimeLibSelect</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>GRuntimeLibSelectSlave</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>RTDescription</name>
+          <state>Use the normal configuration of the C/C++ runtime library. No locale interface, C locale, no file descriptor support, no multibytes in printf and scanf, and no hex floats in strtod.</state>
+        </option>
+        <option>
+          <name>OGProductVersion</name>
+          <state>6.50.1.4445</state>
+        </option>
+        <option>
+          <name>OGLastSavedByProductVersion</name>
+          <state>6.50.6.4952</state>
+        </option>
+        <option>
+          <name>GeneralEnableMisra</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraVerbose</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGChipSelectEditMenu</name>
+          <state>MK70FN1M0xxx12	Freescale MK70FN1M0xxx12</state>
+        </option>
+        <option>
+          <name>GenLowLevelInterface</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>GEndianModeBE</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OGBufferedTerminalOutput</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GenStdoutInterface</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraRules98</name>
+          <version>0</version>
+          <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+        </option>
+        <option>
+          <name>GeneralMisraVer</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraRules04</name>
+          <version>0</version>
+          <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+        </option>
+        <option>
+          <name>RTConfigPath2</name>
+          <state>$TOOLKIT_DIR$\INC\c\DLib_Config_Normal.h</state>
+        </option>
+        <option>
+          <name>GFPUCoreSlave</name>
+          <version>20</version>
+          <state>39</state>
+        </option>
+        <option>
+          <name>GBECoreSlave</name>
+          <version>20</version>
+          <state>39</state>
+        </option>
+        <option>
+          <name>OGUseCmsis</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGUseCmsisDspLib</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>ICCARM</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>28</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>CCDefines</name>
+          <state>TOPPERS_LABEL_ASM</state>
+          <state>ALLFUNC</state>
+        </option>
+        <option>
+          <name>CCPreprocFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPreprocComments</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPreprocLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListCFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCListCMnemonics</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCListCMessages</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListAssFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListAssSource</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCEnableRemarks</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCDiagSuppress</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCDiagRemark</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCDiagWarning</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCDiagError</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCObjPrefix</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCAllowList</name>
+          <version>1</version>
+          <state>0000000</state>
+        </option>
+        <option>
+          <name>CCDebugInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IEndianMode</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IExtraOptionsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IExtraOptions</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCLangConformance</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSignedPlainChar</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCRequirePrototypes</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCMultibyteSupport</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCDiagWarnAreErr</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCompilerRuntimeInfo</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IFpuProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OutputFile</name>
+          <state>$FILE_BNAME$.o</state>
+        </option>
+        <option>
+          <name>CCLibConfigHeader</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>PreInclude</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CompilerMisraOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCIncludePath2</name>
+          <state>$PROJ_DIR$\..\..\..\include</state>
+          <state>$PROJ_DIR$\..\..\..\kernel</state>
+          <state>$PROJ_DIR$\..\..\..\arch</state>
+          <state>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm</state>
+          <state>$PROJ_DIR$\..\..\..</state>
+          <state>$PROJ_DIR$\..\..\..\target\fs_k70f120m_EWARM2</state>
+          <state>$PROJ_DIR$\src</state>
+          <state>$PROJ_DIR$</state>
+        </option>
+        <option>
+          <name>CCStdIncCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCodeSection</name>
+          <state>.text</state>
+        </option>
+        <option>
+          <name>IInterwork2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IProcessorMode2</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCOptLevel</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCOptStrategy</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCOptLevelSlave</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CompilerMisraRules98</name>
+          <version>0</version>
+          <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+        </option>
+        <option>
+          <name>CompilerMisraRules04</name>
+          <version>0</version>
+          <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+        </option>
+        <option>
+          <name>CCPosIndRopi</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPosIndRwpi</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPosIndNoDynInit</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccLang</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccCDialect</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccAllowVLA</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccCppDialect</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccExceptions</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccRTTI</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccStaticDestr</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccCppInlineSemantics</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccCmsis</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccFloatSemantics</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCOptimizationNoSizeConstraints</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>AARM</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>8</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>AObjPrefix</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AEndian</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ACaseSensitivity</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacroChars</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnWhat</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnOne</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AWarnRange1</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AWarnRange2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>ADebug</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AltRegisterNames</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ADefines</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AList</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AListHeader</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AListing</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Includes</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacDefs</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacExps</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacExec</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OnlyAssed</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MultiLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>PageLengthCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>PageLength</name>
+          <state>80</state>
+        </option>
+        <option>
+          <name>TabSpacing</name>
+          <state>8</state>
+        </option>
+        <option>
+          <name>AXRef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefDefines</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefInternal</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefDual</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AFpuProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AOutputFile</name>
+          <state>$FILE_BNAME$.o</state>
+        </option>
+        <option>
+          <name>AMultibyteSupport</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ALimitErrorsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ALimitErrorsEdit</name>
+          <state>100</state>
+        </option>
+        <option>
+          <name>AIgnoreStdInclude</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AUserIncludes</name>
+          <state>$PROJ_DIR$\..\..\..\include</state>
+          <state>$PROJ_DIR$\..\..\..\kernel</state>
+          <state>$PROJ_DIR$\..\..\..\arch</state>
+          <state>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm</state>
+          <state>$PROJ_DIR$\..\..\..</state>
+          <state>$PROJ_DIR$\..\..\..\target\fs_k70f120m_EWARM</state>
+          <state>$PROJ_DIR$\src</state>
+          <state>$PROJ_DIR$</state>
+        </option>
+        <option>
+          <name>AExtraOptionsCheckV2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AExtraOptionsV2</name>
+          <state></state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>OBJCOPY</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>OOCOutputFormat</name>
+          <version>2</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCOutputOverride</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OOCOutputFile</name>
+          <state>cfg1_out.srec</state>
+        </option>
+        <option>
+          <name>OOCCommandLineProducer</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OOCObjCopyEnable</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>CUSTOM</name>
+      <archiveVersion>3</archiveVersion>
+      <data>
+        <extensions></extensions>
+        <cmdline></cmdline>
+      </data>
+    </settings>
+    <settings>
+      <name>BICOMP</name>
+      <archiveVersion>0</archiveVersion>
+      <data/>
+    </settings>
+    <settings>
+      <name>BUILDACTION</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <prebuild>$PROJ_DIR$\pre_depend.bat $PROJ_DIR$  $LIST_DIR$ $EXE_DIR$</prebuild>
+        <postbuild>$PROJ_DIR$\post_depend.bat $PROJ_DIR$  $LIST_DIR$ $EXE_DIR$</postbuild>
+      </data>
+    </settings>
+    <settings>
+      <name>ILINK</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>15</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>IlinkLibIOConfig</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>XLinkMisraHandler</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkInputFileSlave</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOutputFile</name>
+          <state>cfg1_out.out</state>
+        </option>
+        <option>
+          <name>IlinkDebugInfoEnable</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkKeepSymbols</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinaryFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinarySymbol</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinarySegment</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinaryAlign</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkDefines</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkConfigDefines</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkMapFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkLogFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogInitialization</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogModule</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogSection</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogVeneer</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkIcfOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkIcfFile</name>
+          <state>$TOOLKIT_DIR$\config\linker\Freescale\MK70xN1M_12.icf</state>
+        </option>
+        <option>
+          <name>IlinkIcfFileSlave</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkEnableRemarks</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkSuppressDiags</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkTreatAsRem</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkTreatAsWarn</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkTreatAsErr</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkWarningsAreErrors</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkUseExtraOptions</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkExtraOptions</name>
+          <state>--no_remove</state>
+        </option>
+        <option>
+          <name>IlinkLowLevelInterfaceSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkAutoLibEnable</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkAdditionalLibs</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkOverrideProgramEntryLabel</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkProgramEntryLabelSelect</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkProgramEntryLabel</name>
+          <state>__iar_program_start</state>
+        </option>
+        <option>
+          <name>DoFill</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>FillerByte</name>
+          <state>0xFF</state>
+        </option>
+        <option>
+          <name>FillerStart</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>FillerEnd</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>CrcSize</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcAlign</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcPoly</name>
+          <state>0x11021</state>
+        </option>
+        <option>
+          <name>CrcCompl</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CrcBitOrder</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CrcInitialValue</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>DoCrc</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkBE8Slave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkBufferedTerminalOutput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkStdoutInterfaceSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcFullSize</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkIElfToolPostProcess</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogAutoLibSelect</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogRedirSymbols</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogUnusedFragments</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCrcReverseByteOrder</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCrcUseAsInput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptInline</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOptExceptionsAllow</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptExceptionsForce</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCmsis</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptMergeDuplSections</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOptUseVfe</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOptForceVfe</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkStackAnalysisEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkStackControlFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkStackCallGraphFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CrcAlgorithm</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcUnitSize</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>IARCHIVE</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>IarchiveInputs</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IarchiveOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IarchiveOutput</name>
+          <state>###Unitialized###</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>BILINK</name>
+      <archiveVersion>0</archiveVersion>
+      <data/>
+    </settings>
+  </configuration>
+  <configuration>
+    <name>Release</name>
+    <toolchain>
+      <name>ARM</name>
+    </toolchain>
+    <debug>0</debug>
+    <settings>
+      <name>General</name>
+      <archiveVersion>3</archiveVersion>
+      <data>
+        <version>21</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>ExePath</name>
+          <state>Release\Exe</state>
+        </option>
+        <option>
+          <name>ObjPath</name>
+          <state>Release\Obj</state>
+        </option>
+        <option>
+          <name>ListPath</name>
+          <state>Release\List</state>
+        </option>
+        <option>
+          <name>Variant</name>
+          <version>20</version>
+          <state>39</state>
+        </option>
+        <option>
+          <name>GEndianMode</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Input variant</name>
+          <version>3</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Input description</name>
+          <state>&#x30D5;&#x30A9;&#x30FC;&#x30De;&#x30C3;&#x30BF;&#x306e;&#x81eA;&#x52D5;&#x9078;&#x629e;&#x3002;</state>
+        </option>
+        <option>
+          <name>Output variant</name>
+          <version>2</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Output description</name>
+          <state>&#x30D5;&#x30A9;&#x30FC;&#x30De;&#x30C3;&#x30BF;&#x306e;&#x81eA;&#x52D5;&#x9078;&#x629e;&#x3002;</state>
+        </option>
+        <option>
+          <name>GOutputBinary</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>FPU</name>
+          <version>2</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGCoreOrChip</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>GRuntimeLibSelect</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>GRuntimeLibSelectSlave</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>RTDescription</name>
+          <state>C/C++&#x30e9;&#x30F3;&#x30BF;&#x30A4;&#x30e0;&#x30e9;&#x30A4;&#x30D6;&#x30e9;&#x30eA;&#x306e;&#x901A;&#x5e38;&#x306e;&#x8A2D;&#x5B9A;&#x3092;&#x4F7F;&#x7528;&#x3057;&#x307e;&#x3059;&#x3002;&#x30eD;&#x30B1;&#x30FC;&#x30eB;&#x30A4;&#x30F3;&#x30BF;&#x30D5;&#x30A7;&#x30FC;&#x30B9;&#x306A;&#x3057;&#x3001;C&#x30eD;&#x30B1;&#x30FC;&#x30eB;&#x3001;&#x30D5;&#x30A1;&#x30A4;&#x30eB;&#x8A18;&#x8FF0;&#x5B50;&#x30B5;&#x30DD;&#x30FC;&#x30C8;&#x306A;&#x3057;&#x3001;printf/scanf&#x3067;&#x306e;&#x30De;&#x30eB;&#x30C1;&#x30D0;&#x30A4;&#x30C8;&#x6587;&#x5B57;&#x306A;&#x3057;&#x3001;strtod&#x3067;&#x306e;16&#x9032;&#x6570;&#x6D6e;&#x52D5;&#x5C0F;&#x6570;&#x70B9;&#x6570;&#x306A;&#x3057;&#x3002;</state>
+        </option>
+        <option>
+          <name>OGProductVersion</name>
+          <state>6.50.1.4445</state>
+        </option>
+        <option>
+          <name>OGLastSavedByProductVersion</name>
+          <state>6.50.6.4952</state>
+        </option>
+        <option>
+          <name>GeneralEnableMisra</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraVerbose</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGChipSelectEditMenu</name>
+          <state>MK70FN1M0xxx12	Freescale MK70FN1M0xxx12</state>
+        </option>
+        <option>
+          <name>GenLowLevelInterface</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GEndianModeBE</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OGBufferedTerminalOutput</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GenStdoutInterface</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraRules98</name>
+          <version>0</version>
+          <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+        </option>
+        <option>
+          <name>GeneralMisraVer</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraRules04</name>
+          <version>0</version>
+          <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+        </option>
+        <option>
+          <name>RTConfigPath2</name>
+          <state>$TOOLKIT_DIR$\INC\c\DLib_Config_Normal.h</state>
+        </option>
+        <option>
+          <name>GFPUCoreSlave</name>
+          <version>20</version>
+          <state>39</state>
+        </option>
+        <option>
+          <name>GBECoreSlave</name>
+          <version>20</version>
+          <state>39</state>
+        </option>
+        <option>
+          <name>OGUseCmsis</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGUseCmsisDspLib</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>ICCARM</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>28</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>CCDefines</name>
+          <state>NDEBUG</state>
+          <state>TOPPERS_LABEL_ASM</state>
+          <state>ALLFUNC</state>
+        </option>
+        <option>
+          <name>CCPreprocFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPreprocComments</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPreprocLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListCFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListCMnemonics</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListCMessages</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListAssFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListAssSource</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCEnableRemarks</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCDiagSuppress</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCDiagRemark</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCDiagWarning</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCDiagError</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCObjPrefix</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCAllowList</name>
+          <version>1</version>
+          <state>1111111</state>
+        </option>
+        <option>
+          <name>CCDebugInfo</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IEndianMode</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IExtraOptionsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IExtraOptions</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCLangConformance</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSignedPlainChar</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCRequirePrototypes</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCMultibyteSupport</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCDiagWarnAreErr</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCompilerRuntimeInfo</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IFpuProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OutputFile</name>
+          <state>$FILE_BNAME$.o</state>
+        </option>
+        <option>
+          <name>CCLibConfigHeader</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>PreInclude</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CompilerMisraOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCIncludePath2</name>
+          <state>$PROJ_DIR$\..\..\..\include</state>
+          <state>$PROJ_DIR$\..\..\..\kernel</state>
+          <state>$PROJ_DIR$\..\..\..\arch</state>
+          <state>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm</state>
+          <state>$PROJ_DIR$\..\..\..</state>
+          <state>$PROJ_DIR$\..\..\..\target\fs_k70f120m_EWARM2</state>
+          <state>$PROJ_DIR$\src</state>
+          <state>$PROJ_DIR$</state>
+        </option>
+        <option>
+          <name>CCStdIncCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCodeSection</name>
+          <state>.text</state>
+        </option>
+        <option>
+          <name>IInterwork2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IProcessorMode2</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCOptLevel</name>
+          <state>3</state>
+        </option>
+        <option>
+          <name>CCOptStrategy</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCOptLevelSlave</name>
+          <state>3</state>
+        </option>
+        <option>
+          <name>CompilerMisraRules98</name>
+          <version>0</version>
+          <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+        </option>
+        <option>
+          <name>CompilerMisraRules04</name>
+          <version>0</version>
+          <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+        </option>
+        <option>
+          <name>CCPosIndRopi</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPosIndRwpi</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPosIndNoDynInit</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccLang</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccCDialect</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccAllowVLA</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccCppDialect</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccExceptions</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccRTTI</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccStaticDestr</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccCppInlineSemantics</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccCmsis</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccFloatSemantics</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCOptimizationNoSizeConstraints</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>AARM</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>8</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>AObjPrefix</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AEndian</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ACaseSensitivity</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacroChars</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnWhat</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnOne</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AWarnRange1</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AWarnRange2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>ADebug</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AltRegisterNames</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ADefines</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AList</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AListHeader</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AListing</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Includes</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacDefs</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacExps</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacExec</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OnlyAssed</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MultiLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>PageLengthCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>PageLength</name>
+          <state>80</state>
+        </option>
+        <option>
+          <name>TabSpacing</name>
+          <state>8</state>
+        </option>
+        <option>
+          <name>AXRef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefDefines</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefInternal</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefDual</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AFpuProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AOutputFile</name>
+          <state>$FILE_BNAME$.o</state>
+        </option>
+        <option>
+          <name>AMultibyteSupport</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ALimitErrorsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ALimitErrorsEdit</name>
+          <state>100</state>
+        </option>
+        <option>
+          <name>AIgnoreStdInclude</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AUserIncludes</name>
+          <state>$PROJ_DIR$\..\..\..\include</state>
+          <state>$PROJ_DIR$\..\..\..\kernel</state>
+          <state>$PROJ_DIR$\..\..\..\arch</state>
+          <state>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm</state>
+          <state>$PROJ_DIR$\..\..\..</state>
+          <state>$PROJ_DIR$\..\..\..\target\fs_k70f120m_EWARM</state>
+          <state>$PROJ_DIR$\src</state>
+          <state>$PROJ_DIR$</state>
+        </option>
+        <option>
+          <name>AExtraOptionsCheckV2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AExtraOptionsV2</name>
+          <state></state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>OBJCOPY</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>OOCOutputFormat</name>
+          <version>2</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCOutputOverride</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OOCOutputFile</name>
+          <state>cfg1_out.srec</state>
+        </option>
+        <option>
+          <name>OOCCommandLineProducer</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OOCObjCopyEnable</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>CUSTOM</name>
+      <archiveVersion>3</archiveVersion>
+      <data>
+        <extensions></extensions>
+        <cmdline></cmdline>
+      </data>
+    </settings>
+    <settings>
+      <name>BICOMP</name>
+      <archiveVersion>0</archiveVersion>
+      <data/>
+    </settings>
+    <settings>
+      <name>BUILDACTION</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <prebuild>$PROJ_DIR$\pre_depend.bat $PROJ_DIR$  $LIST_DIR$ $EXE_DIR$ </prebuild>
+        <postbuild>$PROJ_DIR$\post_depend.bat $PROJ_DIR$  $LIST_DIR$ $EXE_DIR$ </postbuild>
+      </data>
+    </settings>
+    <settings>
+      <name>ILINK</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>15</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>IlinkLibIOConfig</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>XLinkMisraHandler</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkInputFileSlave</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOutputFile</name>
+          <state>cfg1_out.out</state>
+        </option>
+        <option>
+          <name>IlinkDebugInfoEnable</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkKeepSymbols</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinaryFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinarySymbol</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinarySegment</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinaryAlign</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkDefines</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkConfigDefines</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkMapFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkLogFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogInitialization</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogModule</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogSection</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogVeneer</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkIcfOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkIcfFile</name>
+          <state>$TOOLKIT_DIR$\config\linker\Freescale\MK70xN1M_12.icf</state>
+        </option>
+        <option>
+          <name>IlinkIcfFileSlave</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkEnableRemarks</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkSuppressDiags</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkTreatAsRem</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkTreatAsWarn</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkTreatAsErr</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkWarningsAreErrors</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkUseExtraOptions</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkExtraOptions</name>
+          <state>--no_remove</state>
+        </option>
+        <option>
+          <name>IlinkLowLevelInterfaceSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkAutoLibEnable</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkAdditionalLibs</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkOverrideProgramEntryLabel</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkProgramEntryLabelSelect</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkProgramEntryLabel</name>
+          <state>__iar_program_start</state>
+        </option>
+        <option>
+          <name>DoFill</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>FillerByte</name>
+          <state>0xFF</state>
+        </option>
+        <option>
+          <name>FillerStart</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>FillerEnd</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>CrcSize</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcAlign</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcPoly</name>
+          <state>0x11021</state>
+        </option>
+        <option>
+          <name>CrcCompl</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CrcBitOrder</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CrcInitialValue</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>DoCrc</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkBE8Slave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkBufferedTerminalOutput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkStdoutInterfaceSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcFullSize</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkIElfToolPostProcess</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogAutoLibSelect</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogRedirSymbols</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogUnusedFragments</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCrcReverseByteOrder</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCrcUseAsInput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptInline</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptExceptionsAllow</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptExceptionsForce</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCmsis</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptMergeDuplSections</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOptUseVfe</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptForceVfe</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkStackAnalysisEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkStackControlFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkStackCallGraphFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CrcAlgorithm</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcUnitSize</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>IARCHIVE</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>IarchiveInputs</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IarchiveOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IarchiveOutput</name>
+          <state>###Unitialized###</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>BILINK</name>
+      <archiveVersion>0</archiveVersion>
+      <data/>
+    </settings>
+  </configuration>
+  <file>
+    <name>$PROJ_DIR$\cfg1_out.c</name>
+  </file>
+  <file>
+    <name>$PROJ_DIR$\post_depend.bat</name>
+  </file>
+  <file>
+    <name>$PROJ_DIR$\pre_depend.bat</name>
+  </file>
+</project>
+
+
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/kernel_cfg.c
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/kernel_cfg.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/kernel_cfg.c	(revision 61)
@@ -0,0 +1,661 @@
+/* kernel_cfg.c */
+#include "kernel/kernel_int.h"
+#include "kernel_cfg.h"
+
+#ifndef TOPPERS_EMPTY_LABEL
+#define TOPPERS_EMPTY_LABEL(x,y) x y[0]
+#endif
+
+#if TKERNEL_PRID != 0x07u
+#error The kernel does not match this configuration file.
+#endif
+
+/*
+ *  Include Directives (#include)
+ */
+
+#include "target_timer.h"
+#include "syssvc/syslog.h"
+#include "syssvc/banner.h"
+#include "target_syssvc.h"
+#include "target_serial.h"
+#include "syssvc/serial.h"
+#include "syssvc/logtask.h"
+#include "sample1.h"
+
+/*
+ *  Default Definitions of Trace Log Macros
+ */
+
+#ifndef LOG_ISR_ENTER
+#define LOG_ISR_ENTER(intno)
+#endif /* LOG_ISR_ENTER */
+
+#ifndef LOG_ISR_LEAVE
+#define LOG_ISR_LEAVE(intno)
+#endif /* LOG_ISR_LEAVE */
+
+/*
+ *  Task Management Functions
+ */
+
+const ID _kernel_tmax_tskid = (TMIN_TSKID + TNUM_TSKID - 1);
+
+static STK_T _kernel_stack_LOGTASK[COUNT_STK_T(LOGTASK_STACK_SIZE)];
+static STK_T _kernel_stack_TASK1[COUNT_STK_T(STACK_SIZE)];
+static STK_T _kernel_stack_TASK2[COUNT_STK_T(STACK_SIZE)];
+static STK_T _kernel_stack_TASK3[COUNT_STK_T(STACK_SIZE)];
+static STK_T _kernel_stack_MAIN_TASK[COUNT_STK_T(STACK_SIZE)];
+
+const TINIB _kernel_tinib_table[TNUM_TSKID] = {
+	{ (TA_ACT), (intptr_t)(LOGTASK_PORTID), ((TASK)(logtask_main)), INT_PRIORITY(LOGTASK_PRIORITY), ROUND_STK_T(LOGTASK_STACK_SIZE), _kernel_stack_LOGTASK, (TA_NULL), (NULL) },
+	{ (TA_NULL), (intptr_t)(1), ((TASK)(task)), INT_PRIORITY(MID_PRIORITY), ROUND_STK_T(STACK_SIZE), _kernel_stack_TASK1, (TA_NULL), (tex_routine) },
+	{ (TA_NULL), (intptr_t)(2), ((TASK)(task)), INT_PRIORITY(MID_PRIORITY), ROUND_STK_T(STACK_SIZE), _kernel_stack_TASK2, (TA_NULL), (tex_routine) },
+	{ (TA_NULL), (intptr_t)(3), ((TASK)(task)), INT_PRIORITY(MID_PRIORITY), ROUND_STK_T(STACK_SIZE), _kernel_stack_TASK3, (TA_NULL), (tex_routine) },
+	{ (TA_ACT), (intptr_t)(0), ((TASK)(main_task)), INT_PRIORITY(MAIN_PRIORITY), ROUND_STK_T(STACK_SIZE), _kernel_stack_MAIN_TASK, (TA_NULL), (NULL) }
+};
+
+TCB _kernel_tcb_table[TNUM_TSKID];
+
+const ID _kernel_torder_table[TNUM_TSKID] = {
+	LOGTASK, TASK1, TASK2, TASK3, MAIN_TASK
+};
+
+/*
+ *  Semaphore Functions
+ */
+
+const ID _kernel_tmax_semid = (TMIN_SEMID + TNUM_SEMID - 1);
+
+const SEMINIB _kernel_seminib_table[TNUM_SEMID] = {
+	{ (TA_TPRI), (0), (1) },
+	{ (TA_TPRI), (1), (1) }
+};
+
+SEMCB _kernel_semcb_table[TNUM_SEMID];
+
+/*
+ *  Eventflag Functions
+ */
+
+const ID _kernel_tmax_flgid = (TMIN_FLGID + TNUM_FLGID - 1);
+
+TOPPERS_EMPTY_LABEL(const FLGINIB, _kernel_flginib_table);
+TOPPERS_EMPTY_LABEL(FLGCB, _kernel_flgcb_table);
+
+/*
+ *  Dataqueue Functions
+ */
+
+const ID _kernel_tmax_dtqid = (TMIN_DTQID + TNUM_DTQID - 1);
+
+TOPPERS_EMPTY_LABEL(const DTQINIB, _kernel_dtqinib_table);
+TOPPERS_EMPTY_LABEL(DTQCB, _kernel_dtqcb_table);
+
+/*
+ *  Priority Dataqueue Functions
+ */
+
+const ID _kernel_tmax_pdqid = (TMIN_PDQID + TNUM_PDQID - 1);
+
+TOPPERS_EMPTY_LABEL(const PDQINIB, _kernel_pdqinib_table);
+TOPPERS_EMPTY_LABEL(PDQCB, _kernel_pdqcb_table);
+
+/*
+ *  Mailbox Functions
+ */
+
+const ID _kernel_tmax_mbxid = (TMIN_MBXID + TNUM_MBXID - 1);
+
+TOPPERS_EMPTY_LABEL(const MBXINIB, _kernel_mbxinib_table);
+TOPPERS_EMPTY_LABEL(MBXCB, _kernel_mbxcb_table);
+
+/*
+ *  Fixed-sized Memorypool Functions
+ */
+
+const ID _kernel_tmax_mpfid = (TMIN_MPFID + TNUM_MPFID - 1);
+
+TOPPERS_EMPTY_LABEL(const MPFINIB, _kernel_mpfinib_table);
+TOPPERS_EMPTY_LABEL(MPFCB, _kernel_mpfcb_table);
+
+/*
+ *  Cyclic Handler Functions
+ */
+
+const ID _kernel_tmax_cycid = (TMIN_CYCID + TNUM_CYCID - 1);
+
+const CYCINIB _kernel_cycinib_table[TNUM_CYCID] = {
+	{ (TA_NULL), (intptr_t)(0), (cyclic_handler), (2000), (0) }
+};
+
+CYCCB _kernel_cyccb_table[TNUM_CYCID];
+
+/*
+ *  Alarm Handler Functions
+ */
+
+const ID _kernel_tmax_almid = (TMIN_ALMID + TNUM_ALMID - 1);
+
+const ALMINIB _kernel_alminib_table[TNUM_ALMID] = {
+	{ (TA_NULL), (intptr_t)(0), (alarm_handler) }
+};
+
+ALMCB _kernel_almcb_table[TNUM_ALMID];
+
+/*
+ *  Interrupt Management Functions
+ */
+
+void
+_kernel_inthdr_65(void)
+{
+	i_begin_int(65);
+	LOG_ISR_ENTER(65);
+	((ISR)(sio_isr))((intptr_t)(SIO_PORTID));
+	LOG_ISR_LEAVE(65);
+	i_end_int(65);
+}
+
+#define TNUM_INHNO	2
+const uint_t _kernel_tnum_inhno = TNUM_INHNO;
+
+INTHDR_ENTRY(INHNO_TIMER, 15, target_timer_handler)
+INTHDR_ENTRY(65, 65, _kernel_inthdr_65)
+
+const INHINIB _kernel_inhinib_table[TNUM_INHNO] = {
+	{ (INHNO_TIMER), (TA_NULL), (FP)(INT_ENTRY(INHNO_TIMER, target_timer_handler)) },
+	{ (65), (TA_NULL), (FP)(INT_ENTRY(65, _kernel_inthdr_65)) }
+};
+
+#define TNUM_INTNO	2
+const uint_t _kernel_tnum_intno = TNUM_INTNO;
+
+const INTINIB _kernel_intinib_table[TNUM_INTNO] = {
+	{ (INTNO_TIMER), (TA_ENAINT|INTATR_TIMER), (INTPRI_TIMER) },
+	{ (INTNO_SIO), (TA_ENAINT|INTATR_SIO), (INTPRI_SIO) }
+};
+
+/*
+ *  CPU Exception Management Functions
+ */
+
+#define TNUM_EXCNO	1
+const uint_t _kernel_tnum_excno = TNUM_EXCNO;
+
+EXCHDR_ENTRY(CPUEXC1, 6, cpuexc_handler)
+
+const EXCINIB _kernel_excinib_table[TNUM_EXCNO] = {
+	{ (CPUEXC1), (TA_NULL), (FP)(EXC_ENTRY(CPUEXC1, cpuexc_handler)) }
+};
+
+/*
+ *  Stack Area for Non-task Context
+ */
+
+#ifdef DEFAULT_ISTK
+
+#define TOPPERS_ISTKSZ		DEFAULT_ISTKSZ
+#define TOPPERS_ISTK		DEFAULT_ISTK
+
+#else /* DEAULT_ISTK */
+
+static STK_T				_kernel_istack[COUNT_STK_T(DEFAULT_ISTKSZ)];
+#define TOPPERS_ISTKSZ		ROUND_STK_T(DEFAULT_ISTKSZ)
+#define TOPPERS_ISTK		_kernel_istack
+
+#endif /* DEAULT_ISTK */
+
+const SIZE		_kernel_istksz = TOPPERS_ISTKSZ;
+STK_T *const	_kernel_istk = TOPPERS_ISTK;
+
+#ifdef TOPPERS_ISTKPT
+STK_T *const	_kernel_istkpt = TOPPERS_ISTKPT(TOPPERS_ISTK, TOPPERS_ISTKSZ);
+#endif /* TOPPERS_ISTKPT */
+
+/*
+ *  Time Event Management
+ */
+
+TMEVTN   _kernel_tmevt_heap[TNUM_TSKID + TNUM_CYCID + TNUM_ALMID];
+
+/*
+ *  Module Initialization Function
+ */
+
+void
+_kernel_initialize_object(void)
+{
+	_kernel_initialize_task();
+	_kernel_initialize_semaphore();
+	_kernel_initialize_cyclic();
+	_kernel_initialize_alarm();
+	_kernel_initialize_interrupt();
+	_kernel_initialize_exception();
+}
+
+/*
+ *  Initialization Routine
+ */
+
+void
+_kernel_call_inirtn(void)
+{
+	((INIRTN)(target_timer_initialize))((intptr_t)(0));
+	((INIRTN)(syslog_initialize))((intptr_t)(0));
+	((INIRTN)(print_banner))((intptr_t)(0));
+	((INIRTN)(sio_initialize))((intptr_t)(0));
+	((INIRTN)(serial_initialize))((intptr_t)(0));
+}
+
+/*
+ *  Termination Routine
+ */
+
+void
+_kernel_call_terrtn(void)
+{
+	((TERRTN)(logtask_terminate))((intptr_t)(0));
+	((TERRTN)(target_timer_terminate))((intptr_t)(0));
+}
+
+/*
+ *  Target-dependent Definitions (ARM-M)
+ */
+
+
+
+#pragma location=".intvec" 
+const FP _kernel_vector_table[] =      
+ {                                    
+	(FP)(TOPPERS_ISTKPT(TOPPERS_ISTK, TOPPERS_ISTKSZ)),   // 0 The initial stack pointer 
+	(FP)_start,                 // 1 The reset handler         
+ 	(FP)(_kernel_core_exc_entry), /* 2 */
+ 	(FP)(_kernel_core_exc_entry), /* 3 */
+ 	(FP)(_kernel_core_exc_entry), /* 4 */
+ 	(FP)(_kernel_core_exc_entry), /* 5 */
+ 	(FP)(_kernel_core_exc_entry), /* 6 */
+ 	(FP)(_kernel_core_exc_entry), /* 7 */
+ 	(FP)(_kernel_core_exc_entry), /* 8 */
+ 	(FP)(_kernel_core_exc_entry), /* 9 */
+ 	(FP)(_kernel_core_exc_entry), /* 10 */
+ 	(FP)(_kernel_svc_handler),      // 11 SVCall handler /* 11 */
+ 	(FP)(_kernel_core_exc_entry), /* 12 */
+ 	(FP)(_kernel_core_exc_entry), /* 13 */
+ 	(FP)(_kernel_core_exc_entry), /* 14 */
+ 	(FP)(_kernel_core_int_entry), /* 15 */
+ 	(FP)(_kernel_core_int_entry), /* 16 */
+ 	(FP)(_kernel_core_int_entry), /* 17 */
+ 	(FP)(_kernel_core_int_entry), /* 18 */
+ 	(FP)(_kernel_core_int_entry), /* 19 */
+ 	(FP)(_kernel_core_int_entry), /* 20 */
+ 	(FP)(_kernel_core_int_entry), /* 21 */
+ 	(FP)(_kernel_core_int_entry), /* 22 */
+ 	(FP)(_kernel_core_int_entry), /* 23 */
+ 	(FP)(_kernel_core_int_entry), /* 24 */
+ 	(FP)(_kernel_core_int_entry), /* 25 */
+ 	(FP)(_kernel_core_int_entry), /* 26 */
+ 	(FP)(_kernel_core_int_entry), /* 27 */
+ 	(FP)(_kernel_core_int_entry), /* 28 */
+ 	(FP)(_kernel_core_int_entry), /* 29 */
+ 	(FP)(_kernel_core_int_entry), /* 30 */
+ 	(FP)(_kernel_core_int_entry), /* 31 */
+ 	(FP)(_kernel_core_int_entry), /* 32 */
+ 	(FP)(_kernel_core_int_entry), /* 33 */
+ 	(FP)(_kernel_core_int_entry), /* 34 */
+ 	(FP)(_kernel_core_int_entry), /* 35 */
+ 	(FP)(_kernel_core_int_entry), /* 36 */
+ 	(FP)(_kernel_core_int_entry), /* 37 */
+ 	(FP)(_kernel_core_int_entry), /* 38 */
+ 	(FP)(_kernel_core_int_entry), /* 39 */
+ 	(FP)(_kernel_core_int_entry), /* 40 */
+ 	(FP)(_kernel_core_int_entry), /* 41 */
+ 	(FP)(_kernel_core_int_entry), /* 42 */
+ 	(FP)(_kernel_core_int_entry), /* 43 */
+ 	(FP)(_kernel_core_int_entry), /* 44 */
+ 	(FP)(_kernel_core_int_entry), /* 45 */
+ 	(FP)(_kernel_core_int_entry), /* 46 */
+ 	(FP)(_kernel_core_int_entry), /* 47 */
+ 	(FP)(_kernel_core_int_entry), /* 48 */
+ 	(FP)(_kernel_core_int_entry), /* 49 */
+ 	(FP)(_kernel_core_int_entry), /* 50 */
+ 	(FP)(_kernel_core_int_entry), /* 51 */
+ 	(FP)(_kernel_core_int_entry), /* 52 */
+ 	(FP)(_kernel_core_int_entry), /* 53 */
+ 	(FP)(_kernel_core_int_entry), /* 54 */
+ 	(FP)(_kernel_core_int_entry), /* 55 */
+ 	(FP)(_kernel_core_int_entry), /* 56 */
+ 	(FP)(_kernel_core_int_entry), /* 57 */
+ 	(FP)(_kernel_core_int_entry), /* 58 */
+ 	(FP)(_kernel_core_int_entry), /* 59 */
+ 	(FP)(_kernel_core_int_entry), /* 60 */
+ 	(FP)(_kernel_core_int_entry), /* 61 */
+ 	(FP)(_kernel_core_int_entry), /* 62 */
+ 	(FP)(_kernel_core_int_entry), /* 63 */
+ 	(FP)(_kernel_core_int_entry), /* 64 */
+ 	(FP)(_kernel_core_int_entry), /* 65 */
+ 	(FP)(_kernel_core_int_entry), /* 66 */
+ 	(FP)(_kernel_core_int_entry), /* 67 */
+ 	(FP)(_kernel_core_int_entry), /* 68 */
+ 	(FP)(_kernel_core_int_entry), /* 69 */
+ 	(FP)(_kernel_core_int_entry), /* 70 */
+ 	(FP)(_kernel_core_int_entry), /* 71 */
+ 	(FP)(_kernel_core_int_entry), /* 72 */
+ 	(FP)(_kernel_core_int_entry), /* 73 */
+ 	(FP)(_kernel_core_int_entry), /* 74 */
+ 	(FP)(_kernel_core_int_entry), /* 75 */
+ 	(FP)(_kernel_core_int_entry), /* 76 */
+ 	(FP)(_kernel_core_int_entry), /* 77 */
+ 	(FP)(_kernel_core_int_entry), /* 78 */
+ 	(FP)(_kernel_core_int_entry), /* 79 */
+ 	(FP)(_kernel_core_int_entry), /* 80 */
+ 	(FP)(_kernel_core_int_entry), /* 81 */
+ 	(FP)(_kernel_core_int_entry), /* 82 */
+ 	(FP)(_kernel_core_int_entry), /* 83 */
+ 	(FP)(_kernel_core_int_entry), /* 84 */
+ 	(FP)(_kernel_core_int_entry), /* 85 */
+ 	(FP)(_kernel_core_int_entry), /* 86 */
+ 	(FP)(_kernel_core_int_entry), /* 87 */
+ 	(FP)(_kernel_core_int_entry), /* 88 */
+ 	(FP)(_kernel_core_int_entry), /* 89 */
+ 	(FP)(_kernel_core_int_entry), /* 90 */
+ 	(FP)(_kernel_core_int_entry), /* 91 */
+ 	(FP)(_kernel_core_int_entry), /* 92 */
+ 	(FP)(_kernel_core_int_entry), /* 93 */
+ 	(FP)(_kernel_core_int_entry), /* 94 */
+ 	(FP)(_kernel_core_int_entry), /* 95 */
+ 	(FP)(_kernel_core_int_entry), /* 96 */
+ 	(FP)(_kernel_core_int_entry), /* 97 */
+ 	(FP)(_kernel_core_int_entry), /* 98 */
+ 	(FP)(_kernel_core_int_entry), /* 99 */
+ 	(FP)(_kernel_core_int_entry), /* 100 */
+ 	(FP)(_kernel_core_int_entry), /* 101 */
+ 	(FP)(_kernel_core_int_entry), /* 102 */
+ 	(FP)(_kernel_core_int_entry), /* 103 */
+ 	(FP)(_kernel_core_int_entry), /* 104 */
+ 	(FP)(_kernel_core_int_entry), /* 105 */
+ 	(FP)(_kernel_core_int_entry), /* 106 */
+ 	(FP)(_kernel_core_int_entry), /* 107 */
+ 	(FP)(_kernel_core_int_entry), /* 108 */
+ 	(FP)(_kernel_core_int_entry), /* 109 */
+ 	(FP)(_kernel_core_int_entry), /* 110 */
+ 	(FP)(_kernel_core_int_entry), /* 111 */
+ 	(FP)(_kernel_core_int_entry), /* 112 */
+ 	(FP)(_kernel_core_int_entry), /* 113 */
+ 	(FP)(_kernel_core_int_entry), /* 114 */
+ 	(FP)(_kernel_core_int_entry), /* 115 */
+ 	(FP)(_kernel_core_int_entry), /* 116 */
+ 	(FP)(_kernel_core_int_entry), /* 117 */
+ 	(FP)(_kernel_core_int_entry), /* 118 */
+ 	(FP)(_kernel_core_int_entry), /* 119 */
+ 	(FP)(_kernel_core_int_entry), /* 120 */
+ 	(FP)(_kernel_core_int_entry), /* 121 */
+
+};
+
+
+const FP _kernel_exc_tbl[] = 
+{
+	(FP)(_kernel_default_exc_handler), /* 0 */
+	(FP)(_kernel_default_exc_handler), /* 1 */
+	(FP)(_kernel_default_exc_handler), /* 2 */
+	(FP)(_kernel_default_exc_handler), /* 3 */
+	(FP)(_kernel_default_exc_handler), /* 4 */
+	(FP)(_kernel_default_exc_handler), /* 5 */
+	(FP)(cpuexc_handler), /* 6 */
+	(FP)(_kernel_default_exc_handler), /* 7 */
+	(FP)(_kernel_default_exc_handler), /* 8 */
+	(FP)(_kernel_default_exc_handler), /* 9 */
+	(FP)(_kernel_default_exc_handler), /* 10 */
+	(FP)(_kernel_default_exc_handler), /* 11 */
+	(FP)(_kernel_default_exc_handler), /* 12 */
+	(FP)(_kernel_default_exc_handler), /* 13 */
+	(FP)(_kernel_default_exc_handler), /* 14 */
+	(FP)(target_timer_handler), /* 15 */
+	(FP)(_kernel_default_int_handler), /* 16 */
+	(FP)(_kernel_default_int_handler), /* 17 */
+	(FP)(_kernel_default_int_handler), /* 18 */
+	(FP)(_kernel_default_int_handler), /* 19 */
+	(FP)(_kernel_default_int_handler), /* 20 */
+	(FP)(_kernel_default_int_handler), /* 21 */
+	(FP)(_kernel_default_int_handler), /* 22 */
+	(FP)(_kernel_default_int_handler), /* 23 */
+	(FP)(_kernel_default_int_handler), /* 24 */
+	(FP)(_kernel_default_int_handler), /* 25 */
+	(FP)(_kernel_default_int_handler), /* 26 */
+	(FP)(_kernel_default_int_handler), /* 27 */
+	(FP)(_kernel_default_int_handler), /* 28 */
+	(FP)(_kernel_default_int_handler), /* 29 */
+	(FP)(_kernel_default_int_handler), /* 30 */
+	(FP)(_kernel_default_int_handler), /* 31 */
+	(FP)(_kernel_default_int_handler), /* 32 */
+	(FP)(_kernel_default_int_handler), /* 33 */
+	(FP)(_kernel_default_int_handler), /* 34 */
+	(FP)(_kernel_default_int_handler), /* 35 */
+	(FP)(_kernel_default_int_handler), /* 36 */
+	(FP)(_kernel_default_int_handler), /* 37 */
+	(FP)(_kernel_default_int_handler), /* 38 */
+	(FP)(_kernel_default_int_handler), /* 39 */
+	(FP)(_kernel_default_int_handler), /* 40 */
+	(FP)(_kernel_default_int_handler), /* 41 */
+	(FP)(_kernel_default_int_handler), /* 42 */
+	(FP)(_kernel_default_int_handler), /* 43 */
+	(FP)(_kernel_default_int_handler), /* 44 */
+	(FP)(_kernel_default_int_handler), /* 45 */
+	(FP)(_kernel_default_int_handler), /* 46 */
+	(FP)(_kernel_default_int_handler), /* 47 */
+	(FP)(_kernel_default_int_handler), /* 48 */
+	(FP)(_kernel_default_int_handler), /* 49 */
+	(FP)(_kernel_default_int_handler), /* 50 */
+	(FP)(_kernel_default_int_handler), /* 51 */
+	(FP)(_kernel_default_int_handler), /* 52 */
+	(FP)(_kernel_default_int_handler), /* 53 */
+	(FP)(_kernel_default_int_handler), /* 54 */
+	(FP)(_kernel_default_int_handler), /* 55 */
+	(FP)(_kernel_default_int_handler), /* 56 */
+	(FP)(_kernel_default_int_handler), /* 57 */
+	(FP)(_kernel_default_int_handler), /* 58 */
+	(FP)(_kernel_default_int_handler), /* 59 */
+	(FP)(_kernel_default_int_handler), /* 60 */
+	(FP)(_kernel_default_int_handler), /* 61 */
+	(FP)(_kernel_default_int_handler), /* 62 */
+	(FP)(_kernel_default_int_handler), /* 63 */
+	(FP)(_kernel_default_int_handler), /* 64 */
+	(FP)(_kernel_inthdr_65), /* 65 */
+	(FP)(_kernel_default_int_handler), /* 66 */
+	(FP)(_kernel_default_int_handler), /* 67 */
+	(FP)(_kernel_default_int_handler), /* 68 */
+	(FP)(_kernel_default_int_handler), /* 69 */
+	(FP)(_kernel_default_int_handler), /* 70 */
+	(FP)(_kernel_default_int_handler), /* 71 */
+	(FP)(_kernel_default_int_handler), /* 72 */
+	(FP)(_kernel_default_int_handler), /* 73 */
+	(FP)(_kernel_default_int_handler), /* 74 */
+	(FP)(_kernel_default_int_handler), /* 75 */
+	(FP)(_kernel_default_int_handler), /* 76 */
+	(FP)(_kernel_default_int_handler), /* 77 */
+	(FP)(_kernel_default_int_handler), /* 78 */
+	(FP)(_kernel_default_int_handler), /* 79 */
+	(FP)(_kernel_default_int_handler), /* 80 */
+	(FP)(_kernel_default_int_handler), /* 81 */
+	(FP)(_kernel_default_int_handler), /* 82 */
+	(FP)(_kernel_default_int_handler), /* 83 */
+	(FP)(_kernel_default_int_handler), /* 84 */
+	(FP)(_kernel_default_int_handler), /* 85 */
+	(FP)(_kernel_default_int_handler), /* 86 */
+	(FP)(_kernel_default_int_handler), /* 87 */
+	(FP)(_kernel_default_int_handler), /* 88 */
+	(FP)(_kernel_default_int_handler), /* 89 */
+	(FP)(_kernel_default_int_handler), /* 90 */
+	(FP)(_kernel_default_int_handler), /* 91 */
+	(FP)(_kernel_default_int_handler), /* 92 */
+	(FP)(_kernel_default_int_handler), /* 93 */
+	(FP)(_kernel_default_int_handler), /* 94 */
+	(FP)(_kernel_default_int_handler), /* 95 */
+	(FP)(_kernel_default_int_handler), /* 96 */
+	(FP)(_kernel_default_int_handler), /* 97 */
+	(FP)(_kernel_default_int_handler), /* 98 */
+	(FP)(_kernel_default_int_handler), /* 99 */
+	(FP)(_kernel_default_int_handler), /* 100 */
+	(FP)(_kernel_default_int_handler), /* 101 */
+	(FP)(_kernel_default_int_handler), /* 102 */
+	(FP)(_kernel_default_int_handler), /* 103 */
+	(FP)(_kernel_default_int_handler), /* 104 */
+	(FP)(_kernel_default_int_handler), /* 105 */
+	(FP)(_kernel_default_int_handler), /* 106 */
+	(FP)(_kernel_default_int_handler), /* 107 */
+	(FP)(_kernel_default_int_handler), /* 108 */
+	(FP)(_kernel_default_int_handler), /* 109 */
+	(FP)(_kernel_default_int_handler), /* 110 */
+	(FP)(_kernel_default_int_handler), /* 111 */
+	(FP)(_kernel_default_int_handler), /* 112 */
+	(FP)(_kernel_default_int_handler), /* 113 */
+	(FP)(_kernel_default_int_handler), /* 114 */
+	(FP)(_kernel_default_int_handler), /* 115 */
+	(FP)(_kernel_default_int_handler), /* 116 */
+	(FP)(_kernel_default_int_handler), /* 117 */
+	(FP)(_kernel_default_int_handler), /* 118 */
+	(FP)(_kernel_default_int_handler), /* 119 */
+	(FP)(_kernel_default_int_handler), /* 120 */
+	(FP)(_kernel_default_int_handler), /* 121 */
+
+};
+
+const uint32_t _kernel_bitpat_cfgint[8] = {
+	UINT32_C(0x00008000), 
+	UINT32_C(0x00000000), 
+	UINT32_C(0x00000002), 
+	UINT32_C(0x00000000), 
+	UINT32_C(0x00000000), 
+	UINT32_C(0x00000000), 
+	UINT32_C(0x00000000), 
+	UINT32_C(0x00000000), 
+
+};
+
+const uint32_t _kernel_int_iipm_tbl[] = {
+	UINT32_C(0x00000000), /* 0x000 */
+	UINT32_C(0x00000000), /* 0x001 */
+	UINT32_C(0x00000000), /* 0x002 */
+	UINT32_C(0x00000000), /* 0x003 */
+	UINT32_C(0x00000000), /* 0x004 */
+	UINT32_C(0x00000000), /* 0x005 */
+	UINT32_C(0x00000000), /* 0x006 */
+	UINT32_C(0x00000000), /* 0x007 */
+	UINT32_C(0x00000000), /* 0x008 */
+	UINT32_C(0x00000000), /* 0x009 */
+	UINT32_C(0x00000000), /* 0x00a */
+	UINT32_C(0x00000000), /* 0x00b */
+	UINT32_C(0x00000000), /* 0x00c */
+	UINT32_C(0x00000000), /* 0x00d */
+	UINT32_C(0x00000000), /* 0x00e */
+	UINT32_C(0x000000a0), /* 0x00f */
+	UINT32_C(0x00000000), /* 0x010 */
+	UINT32_C(0x00000000), /* 0x011 */
+	UINT32_C(0x00000000), /* 0x012 */
+	UINT32_C(0x00000000), /* 0x013 */
+	UINT32_C(0x00000000), /* 0x014 */
+	UINT32_C(0x00000000), /* 0x015 */
+	UINT32_C(0x00000000), /* 0x016 */
+	UINT32_C(0x00000000), /* 0x017 */
+	UINT32_C(0x00000000), /* 0x018 */
+	UINT32_C(0x00000000), /* 0x019 */
+	UINT32_C(0x00000000), /* 0x01a */
+	UINT32_C(0x00000000), /* 0x01b */
+	UINT32_C(0x00000000), /* 0x01c */
+	UINT32_C(0x00000000), /* 0x01d */
+	UINT32_C(0x00000000), /* 0x01e */
+	UINT32_C(0x00000000), /* 0x01f */
+	UINT32_C(0x00000000), /* 0x020 */
+	UINT32_C(0x00000000), /* 0x021 */
+	UINT32_C(0x00000000), /* 0x022 */
+	UINT32_C(0x00000000), /* 0x023 */
+	UINT32_C(0x00000000), /* 0x024 */
+	UINT32_C(0x00000000), /* 0x025 */
+	UINT32_C(0x00000000), /* 0x026 */
+	UINT32_C(0x00000000), /* 0x027 */
+	UINT32_C(0x00000000), /* 0x028 */
+	UINT32_C(0x00000000), /* 0x029 */
+	UINT32_C(0x00000000), /* 0x02a */
+	UINT32_C(0x00000000), /* 0x02b */
+	UINT32_C(0x00000000), /* 0x02c */
+	UINT32_C(0x00000000), /* 0x02d */
+	UINT32_C(0x00000000), /* 0x02e */
+	UINT32_C(0x00000000), /* 0x02f */
+	UINT32_C(0x00000000), /* 0x030 */
+	UINT32_C(0x00000000), /* 0x031 */
+	UINT32_C(0x00000000), /* 0x032 */
+	UINT32_C(0x00000000), /* 0x033 */
+	UINT32_C(0x00000000), /* 0x034 */
+	UINT32_C(0x00000000), /* 0x035 */
+	UINT32_C(0x00000000), /* 0x036 */
+	UINT32_C(0x00000000), /* 0x037 */
+	UINT32_C(0x00000000), /* 0x038 */
+	UINT32_C(0x00000000), /* 0x039 */
+	UINT32_C(0x00000000), /* 0x03a */
+	UINT32_C(0x00000000), /* 0x03b */
+	UINT32_C(0x00000000), /* 0x03c */
+	UINT32_C(0x00000000), /* 0x03d */
+	UINT32_C(0x00000000), /* 0x03e */
+	UINT32_C(0x00000000), /* 0x03f */
+	UINT32_C(0x00000000), /* 0x040 */
+	UINT32_C(0x000000d0), /* 0x041 */
+	UINT32_C(0x00000000), /* 0x042 */
+	UINT32_C(0x00000000), /* 0x043 */
+	UINT32_C(0x00000000), /* 0x044 */
+	UINT32_C(0x00000000), /* 0x045 */
+	UINT32_C(0x00000000), /* 0x046 */
+	UINT32_C(0x00000000), /* 0x047 */
+	UINT32_C(0x00000000), /* 0x048 */
+	UINT32_C(0x00000000), /* 0x049 */
+	UINT32_C(0x00000000), /* 0x04a */
+	UINT32_C(0x00000000), /* 0x04b */
+	UINT32_C(0x00000000), /* 0x04c */
+	UINT32_C(0x00000000), /* 0x04d */
+	UINT32_C(0x00000000), /* 0x04e */
+	UINT32_C(0x00000000), /* 0x04f */
+	UINT32_C(0x00000000), /* 0x050 */
+	UINT32_C(0x00000000), /* 0x051 */
+	UINT32_C(0x00000000), /* 0x052 */
+	UINT32_C(0x00000000), /* 0x053 */
+	UINT32_C(0x00000000), /* 0x054 */
+	UINT32_C(0x00000000), /* 0x055 */
+	UINT32_C(0x00000000), /* 0x056 */
+	UINT32_C(0x00000000), /* 0x057 */
+	UINT32_C(0x00000000), /* 0x058 */
+	UINT32_C(0x00000000), /* 0x059 */
+	UINT32_C(0x00000000), /* 0x05a */
+	UINT32_C(0x00000000), /* 0x05b */
+	UINT32_C(0x00000000), /* 0x05c */
+	UINT32_C(0x00000000), /* 0x05d */
+	UINT32_C(0x00000000), /* 0x05e */
+	UINT32_C(0x00000000), /* 0x05f */
+	UINT32_C(0x00000000), /* 0x060 */
+	UINT32_C(0x00000000), /* 0x061 */
+	UINT32_C(0x00000000), /* 0x062 */
+	UINT32_C(0x00000000), /* 0x063 */
+	UINT32_C(0x00000000), /* 0x064 */
+	UINT32_C(0x00000000), /* 0x065 */
+	UINT32_C(0x00000000), /* 0x066 */
+	UINT32_C(0x00000000), /* 0x067 */
+	UINT32_C(0x00000000), /* 0x068 */
+	UINT32_C(0x00000000), /* 0x069 */
+	UINT32_C(0x00000000), /* 0x06a */
+	UINT32_C(0x00000000), /* 0x06b */
+	UINT32_C(0x00000000), /* 0x06c */
+	UINT32_C(0x00000000), /* 0x06d */
+	UINT32_C(0x00000000), /* 0x06e */
+	UINT32_C(0x00000000), /* 0x06f */
+	UINT32_C(0x00000000), /* 0x070 */
+	UINT32_C(0x00000000), /* 0x071 */
+	UINT32_C(0x00000000), /* 0x072 */
+	UINT32_C(0x00000000), /* 0x073 */
+	UINT32_C(0x00000000), /* 0x074 */
+	UINT32_C(0x00000000), /* 0x075 */
+	UINT32_C(0x00000000), /* 0x076 */
+	UINT32_C(0x00000000), /* 0x077 */
+	UINT32_C(0x00000000), /* 0x078 */
+	UINT32_C(0x00000000), /* 0x079 */
+
+};
+
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/kernel_cfg.h
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/kernel_cfg.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/kernel_cfg.h	(revision 61)
@@ -0,0 +1,26 @@
+/* kernel_cfg.h */
+#ifndef TOPPERS_KERNEL_CFG_H
+#define TOPPERS_KERNEL_CFG_H
+
+#define TNUM_TSKID	5
+#define TNUM_SEMID	2
+#define TNUM_FLGID	0
+#define TNUM_DTQID	0
+#define TNUM_PDQID	0
+#define TNUM_MBXID	0
+#define TNUM_MPFID	0
+#define TNUM_CYCID	1
+#define TNUM_ALMID	1
+
+#define LOGTASK	1
+#define TASK1	2
+#define TASK2	3
+#define TASK3	4
+#define MAIN_TASK	5
+#define SERIAL_RCV_SEM1	1
+#define SERIAL_SND_SEM1	2
+#define CYCHDR1	1
+#define ALMHDR1	1
+
+#endif /* TOPPERS_KERNEL_CFG_H */
+
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/offset.h
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/offset.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/offset.h	(revision 61)
@@ -0,0 +1,11 @@
+/* offset.h */
+
+#define TCB_p_tinib	8
+#define TCB_texptn	16
+#define TCB_sp	24
+#define TCB_pc	28
+#define TINIB_exinf	4
+#define TINIB_task	8
+#define TCB_enatex	14
+#define TCB_enatex_bit	2
+#define TCB_enatex_mask	0x4
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/post_depend.bat
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/post_depend.bat	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/post_depend.bat	(revision 61)
@@ -0,0 +1,32 @@
+REM @ECHO OFF
+SETLOCAL
+
+REM AvÌcfgt@CðpXt«Åwè
+SET APP_CFG=src\sample1.cfg
+
+
+
+
+SET CURRENT_DIR=%1
+SET LIST_DIR=%2
+SET EXE_DIR=%3
+CHDIR %CURRENT_DIR%
+
+
+REM cfgtH_ÌºÉu¢½ê
+REM ..\..\..\cfg\cfg\ewgen_sym  -i %LIST_DIR%\cfg1_out.map -o cfg1_out.syms 
+
+REM  VXeÂ«ÏÅwè·éê
+%EWGENSYM%  -i %LIST_DIR%\cfg1_out.map -o cfg1_out.syms 
+
+
+XCOPY /Y %EXE_DIR%\cfg1_out.srec .\
+
+
+REM ..\..\..\cfg\cfg\cfg --pass 2 --kernel asp -I. -I..\..\..\include -I..\..\..\arch -I..\..\..  -I.. -I..\..\..\arch\arm_m_iccarm\ -T ..\target.tf --api-table ..\..\..\kernel\kernel_api.csv  --cfg1-def-table ..\..\..\kernel\kernel_def.csv  --cfg1-def-table ..\..\..\arch\arm_m_iccarm\prc_def.csv %APP_CFG% 
+%ASPCFG% --pass 2 --kernel asp -I. -I..\..\..\include -I..\..\..\arch -I..\..\..  -I.. -I..\..\..\arch\arm_m_iccarm\ -T ..\target.tf --api-table ..\..\..\kernel\kernel_api.csv  --cfg1-def-table ..\..\..\kernel\kernel_def.csv  --cfg1-def-table ..\..\..\arch\arm_m_iccarm\prc_def.csv %APP_CFG% 
+
+REM ..\..\..\cfg\cfg\cfg --pass 3 --kernel asp -I. -I..\..\..\include -I..\..\..\arch -I..\..\..  -I.. -I..\..\..\arch\arm_m_iccarm\ --rom-image cfg1_out.srec --symbol-table cfg1_out.syms -T ..\target_offset.tf --api-table ..\..\..\kernel\kernel_api.csv  --cfg1-def-table ..\..\..\kernel\kernel_def.csv  --cfg1-def-table ..\..\..\arch\arm_m_iccarm\prc_def.csv %APP_CFG% 
+%ASPCFG% --pass 3 --kernel asp -I. -I..\..\..\include -I..\..\..\arch -I..\..\..  -I.. -I..\..\..\arch\arm_m_iccarm\ --rom-image cfg1_out.srec --symbol-table cfg1_out.syms -T ..\target_offset.tf --api-table ..\..\..\kernel\kernel_api.csv  --cfg1-def-table ..\..\..\kernel\kernel_def.csv  --cfg1-def-table ..\..\..\arch\arm_m_iccarm\prc_def.csv %APP_CFG% 
+
+ENDLOCAL
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/pre_depend.bat
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/pre_depend.bat	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/pre_depend.bat	(revision 61)
@@ -0,0 +1,15 @@
+REM @ECHO OFF
+SETLOCAL
+
+REM AvÌcfgt@CðpXt«Åwè
+SET APP_CFG=src\sample1.cfg
+
+
+SET CURRENT_DIR=%1
+CHDIR %CURRENT_DIR%
+
+REM ..\..\..\cfg\cfg\cfg --pass 1 --kernel asp -I. -I..\..\..\include -I..\..\..\arch -I..\..\..  -I..\..\..\target\fs_k70f120m_EWARM2 -I..\..\..\arch\arm_m_iccarm\ --api-table ..\..\..\kernel\kernel_api.csv  --cfg1-def-table ..\..\..\kernel\kernel_def.csv  --cfg1-def-table ..\..\..\arch\arm_m_iccarm\prc_def.csv %APP_CFG%
+%ASPCFG%  --pass 1 --kernel asp -I. -I..\..\..\include -I..\..\..\arch -I..\..\..  -I..\..\..\target\fs_k70f120m_EWARM2 -I..\..\..\arch\arm_m_iccarm\ --api-table ..\..\..\kernel\kernel_api.csv  --cfg1-def-table ..\..\..\kernel\kernel_def.csv  --cfg1-def-table ..\..\..\arch\arm_m_iccarm\prc_def.csv %APP_CFG%
+
+
+ENDLOCAL
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/sample.dep
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/sample.dep	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/sample.dep	(revision 61)
@@ -0,0 +1,2228 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<project>
+  <fileVersion>2</fileVersion>
+  <fileChecksum>1538527089</fileChecksum>
+  <configuration>
+    <name>Debug</name>
+    <outputs>
+      <file>$PROJ_DIR$\..\..\..\kernel\alarm.c</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_support.S</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_config.c</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\start.S</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_timer.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\cyclic.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\dataqueue.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\eventflag.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\exception.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\interrupt.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\mailbox.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\mempfix.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\pridataq.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\semaphore.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\startup.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\sys_manage.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\task.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\task_except.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\task_manage.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\task_refer.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\task_sync.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\time_event.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\time_manage.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\wait.c</file>
+      <file>$PROJ_DIR$\..\..\..\library\histogram.c</file>
+      <file>$PROJ_DIR$\..\..\..\library\log_output.c</file>
+      <file>$PROJ_DIR$\..\..\..\library\strerror.c</file>
+      <file>$PROJ_DIR$\..\..\..\library\t_perror.c</file>
+      <file>$PROJ_DIR$\..\..\..\library\test_lib.c</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\banner.c</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\logtask.c</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\serial.c</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\syslog.c</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\vasyslog.c</file>
+      <file>$PROJ_DIR$\..\target_config.c</file>
+      <file>$PROJ_DIR$\..\target_serial.c</file>
+      <file>$PROJ_DIR$\..\target_support.S</file>
+      <file>$TOOLKIT_DIR$\lib\dl7M_tln.a</file>
+      <file>$PROJ_DIR$\Debug\List\mailbox.lst</file>
+      <file>$PROJ_DIR$\Debug\Obj\target_config.o</file>
+      <file>$TOOLKIT_DIR$\lib\rt7M_tl.a</file>
+      <file>$PROJ_DIR$\Debug\List\kernel_cfg.lst</file>
+      <file>$PROJ_DIR$\Debug\List\task_except.lst</file>
+      <file>$PROJ_DIR$\Debug\List\log_output.lst</file>
+      <file>$TOOLKIT_DIR$\lib\m7M_tl.a</file>
+      <file>$PROJ_DIR$\Debug\List\strerror.lst</file>
+      <file>$PROJ_DIR$\Debug\Obj\semaphore.pbi</file>
+      <file>$PROJ_DIR$\Debug\Obj\strerror.pbi</file>
+      <file>$PROJ_DIR$\Debug\Obj\target_serial.pbi</file>
+      <file>$PROJ_DIR$\Debug\Obj\logtask.pbi</file>
+      <file>$PROJ_DIR$\Debug\Obj\eventflag.pbi</file>
+      <file>$PROJ_DIR$\Debug\Obj\prc_timer.pbi</file>
+      <file>$PROJ_DIR$\..\target_kernel.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\task_refer.pbi</file>
+      <file>$PROJ_DIR$\Debug\Obj\test_lib.pbi</file>
+      <file>$PROJ_DIR$\Debug\Obj\mempfix.pbi</file>
+      <file>$PROJ_DIR$\Debug\Obj\task_except.pbi</file>
+      <file>$PROJ_DIR$\Debug\Obj\time_manage.o</file>
+      <file>$TOOLKIT_DIR$\inc\c\stdarg.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\semaphore.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\mailbox.h</file>
+      <file>$PROJ_DIR$\..\target_syssvc.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\pridataq.h</file>
+      <file>$PROJ_DIR$\..\..\..\include\histogram.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\interrupt.o</file>
+      <file>$PROJ_DIR$\Debug\Obj\prc_config.pbi</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_config.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\iccarm\tool_stddef.h</file>
+      <file>$PROJ_DIR$\Debug\List\wait.lst</file>
+      <file>$PROJ_DIR$\Debug\List\task_manage.lst</file>
+      <file>$TOOLKIT_DIR$\inc\c\DLib_Config_Normal.h</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\serial.h</file>
+      <file>$PROJ_DIR$\src\sample1.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\logtask.o</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\logtask.h</file>
+      <file>$TOOLKIT_DIR$\lib\shb_l.a</file>
+      <file>$PROJ_DIR$\Debug\Obj\task_manage.o</file>
+      <file>$PROJ_DIR$\Debug\List\target_config.lst</file>
+      <file>$PROJ_DIR$\Debug\List\target_support.lst</file>
+      <file>$TOOLKIT_DIR$\inc\c\DLib_Defaults.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\eventflag.o</file>
+      <file>$PROJ_DIR$\..\target_serial.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\wait.pbi</file>
+      <file>$PROJ_DIR$\Debug\Obj\task.pbi</file>
+      <file>$PROJ_DIR$\Debug\List\mempfix.lst</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_kernel.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\vasyslog.o</file>
+      <file>$PROJ_DIR$\Debug\Obj\banner.o</file>
+      <file>$PROJ_DIR$\Debug\List\cyclic.lst</file>
+      <file>$PROJ_DIR$\Debug\List\logtask.lst</file>
+      <file>$PROJ_DIR$\Debug\List\eventflag.lst</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\exception.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\task_except.o</file>
+      <file>$PROJ_DIR$\..\target_stddef.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\dataqueue.o</file>
+      <file>$PROJ_DIR$\Debug\List\histogram.lst</file>
+      <file>$PROJ_DIR$\Debug\Obj\banner.pbi</file>
+      <file>$PROJ_DIR$\Debug\Obj\task.o</file>
+      <file>$PROJ_DIR$\Debug\Obj\target_support.o</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_stddef.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\allfunc.h</file>
+      <file>$TOOLKIT_DIR$\config\linker\Freescale\MK70xN1M_12.icf</file>
+      <file>$PROJ_DIR$\Debug\List\target_serial.lst</file>
+      <file>$PROJ_DIR$\Debug\List\task_refer.lst</file>
+      <file>$PROJ_DIR$\Debug\List\time_event.lst</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\check.h</file>
+      <file>$PROJ_DIR$\Debug\List\task_sync.lst</file>
+      <file>$PROJ_DIR$\Debug\List\prc_timer.lst</file>
+      <file>$PROJ_DIR$\Debug\List\time_manage.lst</file>
+      <file>$PROJ_DIR$\Debug\List\dataqueue.lst</file>
+      <file>$PROJ_DIR$\Debug\Obj\prc_support.o</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\task.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\time_manage.pbi</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_rename.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\prc_timer.o</file>
+      <file>$TOOLKIT_DIR$\inc\c\limits.h</file>
+      <file>$PROJ_DIR$\Debug\List\banner.lst</file>
+      <file>$PROJ_DIR$\Debug\Obj\target_config.pbi</file>
+      <file>$PROJ_DIR$\Debug\List\sample.map</file>
+      <file>$PROJ_DIR$\Debug\Obj\strerror.o</file>
+      <file>$PROJ_DIR$\Debug\Obj\time_event.pbi</file>
+      <file>$PROJ_DIR$\..\..\..\include\sil.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\serial.pbi</file>
+      <file>$TOOLKIT_DIR$\inc\c\xencoding_limits.h</file>
+      <file>$PROJ_DIR$\Debug\List\prc_config.lst</file>
+      <file>$PROJ_DIR$\Debug\List\pridataq.lst</file>
+      <file>$PROJ_DIR$\Debug\Obj\exception.o</file>
+      <file>$PROJ_DIR$\..\target_timer.h</file>
+      <file>$PROJ_DIR$\..\target_test.h</file>
+      <file>$PROJ_DIR$\..\target_unrename.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\sample1.o</file>
+      <file>$PROJ_DIR$\Debug\List\syslog.lst</file>
+      <file>$PROJ_DIR$\Debug\Obj\serial.o</file>
+      <file>$PROJ_DIR$\Debug\Obj\startup.pbi</file>
+      <file>$PROJ_DIR$\Debug\Obj\task_sync.pbi</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\kernel_impl.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\mailbox.o</file>
+      <file>$PROJ_DIR$\..\..\..\include\t_stddef.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\cyclic.o</file>
+      <file>$PROJ_DIR$\Debug\Obj\target_serial.o</file>
+      <file>$PROJ_DIR$\..\..\..\include\test_lib.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_timer.h</file>
+      <file>$PROJ_DIR$\Debug\List\task.lst</file>
+      <file>$PROJ_DIR$\Debug\Obj\task_sync.o</file>
+      <file>$PROJ_DIR$\Debug\List\test_lib.lst</file>
+      <file>$PROJ_DIR$\Debug\Obj\alarm.pbi</file>
+      <file>$PROJ_DIR$\Debug\Obj\cyclic.pbi</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\interrupt.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\t_perror.o</file>
+      <file>$PROJ_DIR$\Debug\Obj\pridataq.o</file>
+      <file>$PROJ_DIR$\..\target_config.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\sys_manage.o</file>
+      <file>$PROJ_DIR$\Debug\List\sample1.lst</file>
+      <file>$PROJ_DIR$\Debug\List\t_perror.lst</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\kernel_rename.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\dataqueue.pbi</file>
+      <file>$PROJ_DIR$\Debug\Obj\syslog.pbi</file>
+      <file>$PROJ_DIR$\Debug\Obj\mailbox.pbi</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\mempfix.h</file>
+      <file>$PROJ_DIR$\..\..\..\include\queue.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\histogram.o</file>
+      <file>$PROJ_DIR$\..\..\..\include\t_stdlib.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\wait.o</file>
+      <file>$PROJ_DIR$\Debug\Obj\t_perror.pbi</file>
+      <file>$PROJ_DIR$\Debug\Obj\semaphore.o</file>
+      <file>$PROJ_DIR$\Debug\Obj\exception.pbi</file>
+      <file>$PROJ_DIR$\Debug\Obj\interrupt.pbi</file>
+      <file>$PROJ_DIR$\Debug\Obj\task_manage.pbi</file>
+      <file>$PROJ_DIR$\Debug\Obj\start.o</file>
+      <file>$PROJ_DIR$\Debug\Obj\log_output.pbi</file>
+      <file>$PROJ_DIR$\Debug\Obj\histogram.pbi</file>
+      <file>$PROJ_DIR$\Debug\Obj\startup.o</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\banner.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\kernel_int.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_test.h</file>
+      <file>$PROJ_DIR$\Debug\List\vasyslog.lst</file>
+      <file>$TOOLKIT_DIR$\inc\c\ysizet.h</file>
+      <file>$PROJ_DIR$\Debug\List\exception.lst</file>
+      <file>$PROJ_DIR$\kernel_cfg.c</file>
+      <file>$PROJ_DIR$\src\sample1.c</file>
+      <file>$PROJ_DIR$\..\target_sil.h</file>
+      <file>$PROJ_DIR$\Debug\List\sys_manage.lst</file>
+      <file>$PROJ_DIR$\Debug\List\start.lst</file>
+      <file>$PROJ_DIR$\..\..\..\include\kernel.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\stddef.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\cyclic.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\time_event.h</file>
+      <file>$PROJ_DIR$\..\..\..\include\log_output.h</file>
+      <file>$PROJ_DIR$\kernel_cfg.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\dataqueue.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\kernel_unrename.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\eventflag.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\ycheck.h</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\syslog.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_unrename.h</file>
+      <file>$PROJ_DIR$\Debug\List\startup.lst</file>
+      <file>$PROJ_DIR$\Debug\List\interrupt.lst</file>
+      <file>$PROJ_DIR$\Debug\Obj\sample1.pbi</file>
+      <file>$PROJ_DIR$\..\fs_k70f120m.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\DLib_Product.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\prc_config.o</file>
+      <file>$TOOLKIT_DIR$\inc\c\yvals.h</file>
+      <file>$PROJ_DIR$\..\..\..\include\t_syslog.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\alarm.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\alarm.o</file>
+      <file>$TOOLKIT_DIR$\inc\c\DLib_Threads.h</file>
+      <file>$PROJ_DIR$\Debug\List\prc_support.lst</file>
+      <file>$PROJ_DIR$\Debug\Obj\syslog.o</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_insn.h</file>
+      <file>$PROJ_DIR$\Debug\List\alarm.lst</file>
+      <file>$PROJ_DIR$\Debug\List\semaphore.lst</file>
+      <file>$PROJ_DIR$\Debug\Obj\kernel_cfg.o</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\arm_m.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\sys_manage.pbi</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_sil.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\time_event.o</file>
+      <file>$PROJ_DIR$\Debug\Obj\vasyslog.pbi</file>
+      <file>$PROJ_DIR$\..\target_rename.h</file>
+      <file>$PROJ_DIR$\Debug\List\serial.lst</file>
+      <file>$PROJ_DIR$\Debug\Obj\log_output.o</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\wait.h</file>
+      <file>$PROJ_DIR$\Debug\Exe\sample.out</file>
+      <file>$PROJ_DIR$\offset.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\test_lib.o</file>
+      <file>$PROJ_DIR$\Debug\Obj\kernel_cfg.pbi</file>
+      <file>$PROJ_DIR$\Debug\Obj\pridataq.pbi</file>
+      <file>$PROJ_DIR$\Debug\Obj\task_refer.o</file>
+      <file>$PROJ_DIR$\Debug\Obj\mempfix.o</file>
+    </outputs>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\alarm.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 145</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 209 204</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 105 203 186</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 105 203 186</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_support.S</name>
+      <outputs>
+        <tool>
+          <name>AARM</name>
+          <file> 110 206</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>AARM</name>
+          <file> 135 154 217 113 183 137 93 67 99 52 85 202 150 198 121 180 214 212 66 222</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_config.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 65</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 124 200</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 105 111 159 186</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 105 111 159 186</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\start.S</name>
+      <outputs>
+        <tool>
+          <name>AARM</name>
+          <file> 168 182</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>AARM</name>
+          <file> 135 154 217 113 183 137 93 67 99 52 85 202 150 198 121 180 214 212 66</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_timer.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 51</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 107 114</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 121 137 93 67 184 192 201 79 70 199 123 205 176 115 99 180 214 135 154 217 113 183 52 85 202 150 198 212 66 208 100 186 127 141</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 121 137 93 67 184 192 201 79 70 199 123 205 176 115 99 180 214 135 154 217 113 183 52 85 202 150 198 212 66 208 100 186 127 141</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\cyclic.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 146</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 88 138</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 105 185 186</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 105 185 186</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\dataqueue.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 155</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 109 94</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 105 111 159 186 220 189</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 105 111 159 186 220 189</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\eventflag.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 50</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 90 80</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 105 111 159 186 220 191</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 105 111 159 186 220 191</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\exception.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 165</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 177 126</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 111 159 186 91</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 111 159 186 91</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\interrupt.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 166</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 196 64</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 105 111 159 186 147</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 105 111 159 186 147</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\mailbox.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 157</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 38 136</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 105 111 159 186 220 60</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 105 111 159 186 220 60</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\mempfix.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 55</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 84 227</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 105 111 159 186 220 158</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 105 111 159 186 220 158</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\pridataq.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 225</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 125 149</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 105 111 159 186 220 62</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 105 111 159 186 220 62</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\semaphore.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 46</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 210 164</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 105 111 159 186 220 59</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 105 111 159 186 220 59</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\startup.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 133</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 195 171</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 186</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 186</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\sys_manage.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 213</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 181 151</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 105 111 159 186</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 105 111 159 186</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\task.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 83</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 142 97</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 220 111 159 186</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 220 111 159 186</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\task_except.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 56</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 42 92</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 105 111 159 186</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 105 111 159 186</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\task_manage.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 167</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 69 76</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 105 111 159 186 220</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 105 111 159 186 220</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\task_refer.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 53</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 103 226</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 105 111 159 186 220 59 191 189 62 60 158</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 105 111 159 186 220 59 191 189 62 60 158</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\task_sync.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 134</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 106 143</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 105 111 159 186 220</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 105 111 159 186 220</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\time_event.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 120</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 104 215</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 105 186</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 105 186</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\time_manage.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 112</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 108 57</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 105 186 127 141</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 105 186 127 141</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\wait.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 82</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 68 162</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 220 111 159 186</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 220 111 159 186</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\library\histogram.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 170</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 95 160</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 140 128 174 63</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 140 128 174 63</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\library\log_output.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 169</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 43 219</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 137 93 67 184 192 201 79 70 199 123 205 176 115 99 202</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 137 93 67 184 192 201 79 70 199 123 205 176 115 99 202</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\library\strerror.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 47</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 45 119</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 137 93 67 184 192 201 79 70 199 123 205 176 115 99 161</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 137 93 67 184 192 201 79 70 199 123 205 176 115 99 161</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\library\t_perror.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 163</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 153 148</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 137 93 67 184 192 201 79 70 199 123 205 176 115 99 202 161</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 137 93 67 184 192 201 79 70 199 123 205 176 115 99 202 161</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\library\test_lib.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 54</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 144 223</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 121 180 214 202 161 187 193 61 198 212 140 128 174</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 121 180 214 202 161 187 193 61 198 212 140 128 174</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\syssvc\banner.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 96</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 116 87</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 61 198 121 180 214 212</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 61 198 121 180 214 212</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\syssvc\logtask.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 49</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 89 73</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 187 71 193 74 61 198 121 180 214 212</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 187 71 193 74 61 198 121 180 214 212</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\syssvc\serial.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 122</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 218 132</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 61 198 121 180 214 212 81 71 188</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 61 198 121 180 214 212 81 71 188</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\syssvc\syslog.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 156</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 131 207</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 121 137 93 67 184 192 201 79 70 199 123 205 176 115 99 180 214 202 187 61 198 212 193</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 121 137 93 67 184 192 201 79 70 199 123 205 176 115 99 180 214 202 187 61 198 212 193</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\syssvc\vasyslog.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 216</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 175 86</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 137 93 67 184 192 201 79 70 199 123 205 176 115 99 202 58</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 137 93 67 184 192 201 79 70 199 123 205 176 115 99 202 58</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\target_config.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 117</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 77 39</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 81 61</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 81 61</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\target_serial.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 48</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 102 139</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 121 180 214 81 198 212 61</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 121 180 214 81 198 212 61</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\target_support.S</name>
+      <outputs>
+        <tool>
+          <name>AARM</name>
+          <file> 98 78</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>AARM</name>
+          <file> 135 154 217 113 183 137 93 67 99 52 85 202 150 198 121 180 214 212 66</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>[ROOT_NODE]</name>
+      <outputs>
+        <tool>
+          <name>ILINK</name>
+          <file> 221 118</file>
+        </tool>
+      </outputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\kernel_cfg.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 224</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 41 211</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 173 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 111 159 186 59 191 189 62 60 158 185 203 147 91 190 129 194 188 127 141 193 172 61 81 71 74 72 128 174</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 173 135 154 217 113 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 150 198 121 180 214 212 66 208 100 111 159 186 59 191 189 62 60 158 185 203 147 91 190 129 194 188 127 141 193 172 61 81 71 74 72 128 174</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\src\sample1.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 197</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 152 130</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 161 71 193 188 72 128 174</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 183 137 93 67 184 192 201 79 70 199 123 205 176 115 99 52 85 202 161 71 193 188 72 128 174</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\Debug\Exe\sample.out</name>
+      <outputs>
+        <tool>
+          <name>ILINK</name>
+          <file> 118</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>ILINK</name>
+          <file> 101 204 87 138 94 80 126 160 64 211 219 73 136 227 200 110 114 149 130 164 132 168 171 119 151 207 148 39 139 98 97 92 76 226 143 223 215 57 86 162 75 40 44 37</file>
+        </tool>
+      </inputs>
+    </file>
+  </configuration>
+  <configuration>
+    <name>Release</name>
+    <outputs>
+      <file>$PROJ_DIR$\..\..\..\kernel\alarm.c</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_support.S</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_config.c</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\start.S</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_timer.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\cyclic.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\dataqueue.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\eventflag.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\exception.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\interrupt.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\mailbox.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\mempfix.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\pridataq.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\semaphore.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\startup.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\sys_manage.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\task.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\task_except.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\task_manage.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\task_refer.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\task_sync.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\time_event.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\time_manage.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\wait.c</file>
+      <file>$PROJ_DIR$\..\..\..\library\histogram.c</file>
+      <file>$PROJ_DIR$\..\..\..\library\log_output.c</file>
+      <file>$PROJ_DIR$\..\..\..\library\strerror.c</file>
+      <file>$PROJ_DIR$\..\..\..\library\t_perror.c</file>
+      <file>$PROJ_DIR$\..\..\..\library\test_lib.c</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\banner.c</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\logtask.c</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\serial.c</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\syslog.c</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\vasyslog.c</file>
+      <file>$PROJ_DIR$\..\target_config.c</file>
+      <file>$PROJ_DIR$\..\target_serial.c</file>
+      <file>$PROJ_DIR$\..\target_support.S</file>
+      <file>$TOOLKIT_DIR$\lib\dl7M_tln.a</file>
+      <file>$TOOLKIT_DIR$\lib\rt7M_tl.a</file>
+      <file>$TOOLKIT_DIR$\lib\m7M_tl.a</file>
+      <file>$PROJ_DIR$\..\target_kernel.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\stdarg.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\semaphore.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\mailbox.h</file>
+      <file>$PROJ_DIR$\..\target_syssvc.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\pridataq.h</file>
+      <file>$PROJ_DIR$\..\..\..\include\histogram.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_config.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\iccarm\tool_stddef.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\DLib_Config_Normal.h</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\serial.h</file>
+      <file>$PROJ_DIR$\src\sample1.h</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\logtask.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\DLib_Defaults.h</file>
+      <file>$PROJ_DIR$\..\target_serial.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_kernel.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\exception.h</file>
+      <file>$PROJ_DIR$\..\target_stddef.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_stddef.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\allfunc.h</file>
+      <file>$TOOLKIT_DIR$\config\linker\Freescale\MK70xN1M_12.icf</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\check.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\task.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_rename.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\limits.h</file>
+      <file>$PROJ_DIR$\Release\Obj\task_refer.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\interrupt.pbi</file>
+      <file>$PROJ_DIR$\Release\List\sample.map</file>
+      <file>$PROJ_DIR$\Release\Obj\semaphore.o</file>
+      <file>$PROJ_DIR$\Release\Obj\time_event.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\task_sync.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\time_manage.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\wait.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\histogram.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\log_output.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\prc_support.o</file>
+      <file>$PROJ_DIR$\Release\Obj\target_support.o</file>
+      <file>$PROJ_DIR$\Release\Obj\start.o</file>
+      <file>$PROJ_DIR$\Release\Obj\prc_config.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\prc_timer.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\alarm.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\cyclic.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\dataqueue.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\eventflag.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\exception.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\target_serial.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\kernel_cfg.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\sample1.pbi</file>
+      <file>$PROJ_DIR$\Release\Exe\sample.out</file>
+      <file>$PROJ_DIR$\Release\Obj\target_serial.o</file>
+      <file>$PROJ_DIR$\Release\Obj\sample1.o</file>
+      <file>$PROJ_DIR$\Release\Obj\syslog.o</file>
+      <file>$PROJ_DIR$\Release\Obj\logtask.o</file>
+      <file>$PROJ_DIR$\Release\Obj\vasyslog.o</file>
+      <file>$PROJ_DIR$\Release\Obj\wait.o</file>
+      <file>$PROJ_DIR$\Release\Obj\histogram.o</file>
+      <file>$PROJ_DIR$\Release\Obj\log_output.o</file>
+      <file>$PROJ_DIR$\Release\Obj\task_refer.o</file>
+      <file>$PROJ_DIR$\Release\Obj\pridataq.o</file>
+      <file>$PROJ_DIR$\Release\Obj\time_manage.o</file>
+      <file>$PROJ_DIR$\Release\Obj\sys_manage.o</file>
+      <file>$PROJ_DIR$\Release\Obj\startup.o</file>
+      <file>$PROJ_DIR$\Release\Obj\time_event.o</file>
+      <file>$PROJ_DIR$\Release\Obj\task_sync.o</file>
+      <file>$PROJ_DIR$\Release\Obj\kernel_cfg.o</file>
+      <file>$PROJ_DIR$\Release\Obj\target_config.o</file>
+      <file>$PROJ_DIR$\Release\Obj\task_except.o</file>
+      <file>$PROJ_DIR$\Release\Obj\task.o</file>
+      <file>$PROJ_DIR$\Release\Obj\banner.o</file>
+      <file>$PROJ_DIR$\Release\Obj\test_lib.o</file>
+      <file>$PROJ_DIR$\Release\Obj\t_perror.o</file>
+      <file>$PROJ_DIR$\Release\Obj\strerror.o</file>
+      <file>$PROJ_DIR$\Release\Obj\mempfix.o</file>
+      <file>$PROJ_DIR$\Release\Obj\task_manage.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\target_config.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\serial.o</file>
+      <file>$PROJ_DIR$\Release\Obj\task_manage.o</file>
+      <file>$PROJ_DIR$\Release\Obj\cyclic.o</file>
+      <file>$PROJ_DIR$\Release\Obj\alarm.o</file>
+      <file>$PROJ_DIR$\Release\Obj\dataqueue.o</file>
+      <file>$PROJ_DIR$\Release\Obj\eventflag.o</file>
+      <file>$PROJ_DIR$\Release\Obj\interrupt.o</file>
+      <file>$PROJ_DIR$\Release\Obj\exception.o</file>
+      <file>$PROJ_DIR$\Release\Obj\prc_config.o</file>
+      <file>$PROJ_DIR$\Release\Obj\prc_timer.o</file>
+      <file>$PROJ_DIR$\Release\Obj\mailbox.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\mempfix.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\pridataq.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\semaphore.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\startup.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\sys_manage.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\task.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\task_except.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\t_perror.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\mailbox.o</file>
+      <file>$PROJ_DIR$\Release\Obj\strerror.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\test_lib.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\banner.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\logtask.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\serial.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\syslog.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\vasyslog.pbi</file>
+      <file>$PROJ_DIR$\..\..\..\include\sil.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\xencoding_limits.h</file>
+      <file>$PROJ_DIR$\..\target_timer.h</file>
+      <file>$PROJ_DIR$\..\target_test.h</file>
+      <file>$PROJ_DIR$\..\target_unrename.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\kernel_impl.h</file>
+      <file>$PROJ_DIR$\..\..\..\include\t_stddef.h</file>
+      <file>$PROJ_DIR$\..\..\..\include\test_lib.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_timer.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\interrupt.h</file>
+      <file>$PROJ_DIR$\..\target_config.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\kernel_rename.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\mempfix.h</file>
+      <file>$PROJ_DIR$\..\..\..\include\queue.h</file>
+      <file>$PROJ_DIR$\..\..\..\include\t_stdlib.h</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\banner.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\kernel_int.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_test.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\ysizet.h</file>
+      <file>$PROJ_DIR$\kernel_cfg.c</file>
+      <file>$PROJ_DIR$\src\sample1.c</file>
+      <file>$PROJ_DIR$\..\target_sil.h</file>
+      <file>$PROJ_DIR$\..\..\..\include\kernel.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\stddef.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\cyclic.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\time_event.h</file>
+      <file>$PROJ_DIR$\..\..\..\include\log_output.h</file>
+      <file>$PROJ_DIR$\kernel_cfg.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\dataqueue.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\kernel_unrename.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\eventflag.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\ycheck.h</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\syslog.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_unrename.h</file>
+      <file>$PROJ_DIR$\..\fs_k70f120m.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\DLib_Product.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\yvals.h</file>
+      <file>$PROJ_DIR$\..\..\..\include\t_syslog.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\alarm.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\DLib_Threads.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_insn.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\arm_m.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_sil.h</file>
+      <file>$PROJ_DIR$\..\target_rename.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\wait.h</file>
+      <file>$PROJ_DIR$\offset.h</file>
+    </outputs>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\alarm.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 80</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 118</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 61 180 167</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 61 180 167</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_support.S</name>
+      <outputs>
+        <tool>
+          <name>AARM</name>
+          <file> 75</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>AARM</name>
+          <file> 147 153 185 63 164 148 57 48 58 40 55 179 152 176 142 163 184 183 47 187</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_config.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 78</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 123</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 61 62 155 167</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 61 62 155 167</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\start.S</name>
+      <outputs>
+        <tool>
+          <name>AARM</name>
+          <file> 77</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>AARM</name>
+          <file> 147 153 185 63 164 148 57 48 58 40 55 179 152 176 142 163 184 183 47</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_timer.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 79</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 124</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 142 148 57 48 165 173 178 53 49 177 143 181 160 64 58 163 184 147 153 185 63 164 40 55 179 152 176 183 47 182 59 167 144 150</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 142 148 57 48 165 173 178 53 49 177 143 181 160 64 58 163 184 147 153 185 63 164 40 55 179 152 176 183 47 182 59 167 144 150</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\cyclic.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 81</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 117</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 61 166 167</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 61 166 167</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\dataqueue.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 82</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 119</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 61 62 155 167 186 170</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 61 62 155 167 186 170</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\eventflag.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 83</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 120</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 61 62 155 167 186 172</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 61 62 155 167 186 172</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\exception.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 84</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 122</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 62 155 167 56</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 62 155 167 56</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\interrupt.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 66</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 121</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 61 62 155 167 151</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 61 62 155 167 151</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\mailbox.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 125</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 134</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 61 62 155 167 186 43</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 61 62 155 167 186 43</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\mempfix.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 126</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 112</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 61 62 155 167 186 154</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 61 62 155 167 186 154</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\pridataq.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 127</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 98</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 61 62 155 167 186 45</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 61 62 155 167 186 45</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\semaphore.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 128</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 68</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 61 62 155 167 186 42</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 61 62 155 167 186 42</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\startup.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 129</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 101</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 167</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 167</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\sys_manage.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 130</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 100</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 61 62 155 167</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 61 62 155 167</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\task.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 131</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 107</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 186 62 155 167</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 186 62 155 167</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\task_except.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 132</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 106</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 61 62 155 167</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 61 62 155 167</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\task_manage.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 113</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 116</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 61 62 155 167 186</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 61 62 155 167 186</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\task_refer.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 65</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 97</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 61 62 155 167 186 42 172 170 45 43 154</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 61 62 155 167 186 42 172 170 45 43 154</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\task_sync.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 70</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 103</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 61 62 155 167 186</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 61 62 155 167 186</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\time_event.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 69</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 102</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 61 167</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 61 167</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\time_manage.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 71</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 99</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 61 167 144 150</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 61 167 144 150</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\wait.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 72</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 94</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 186 62 155 167</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 186 62 155 167</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\library\histogram.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 73</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 95</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 149 145 159 46</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 149 145 159 46</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\library\log_output.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 74</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 96</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 148 57 48 165 173 178 53 49 177 143 181 160 64 58 179</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 148 57 48 165 173 178 53 49 177 143 181 160 64 58 179</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\library\strerror.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 135</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 111</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 148 57 48 165 173 178 53 49 177 143 181 160 64 58 156</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 148 57 48 165 173 178 53 49 177 143 181 160 64 58 156</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\library\t_perror.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 133</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 110</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 148 57 48 165 173 178 53 49 177 143 181 160 64 58 179 156</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 148 57 48 165 173 178 53 49 177 143 181 160 64 58 179 156</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\library\test_lib.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 136</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 109</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 142 163 184 179 156 168 174 44 176 183 149 145 159</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 142 163 184 179 156 168 174 44 176 183 149 145 159</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\syssvc\banner.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 137</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 108</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 44 176 142 163 184 183</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 44 176 142 163 184 183</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\syssvc\logtask.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 138</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 92</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 168 50 174 52 44 176 142 163 184 183</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 168 50 174 52 44 176 142 163 184 183</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\syssvc\serial.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 139</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 115</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 44 176 142 163 184 183 54 50 169</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 44 176 142 163 184 183 54 50 169</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\syssvc\syslog.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 140</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 91</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 142 148 57 48 165 173 178 53 49 177 143 181 160 64 58 163 184 179 168 44 176 183 174</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 142 148 57 48 165 173 178 53 49 177 143 181 160 64 58 163 184 179 168 44 176 183 174</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\syssvc\vasyslog.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 141</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 93</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 148 57 48 165 173 178 53 49 177 143 181 160 64 58 179 41</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 148 57 48 165 173 178 53 49 177 143 181 160 64 58 179 41</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\target_config.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 114</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 105</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 54 44</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 54 44</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\target_serial.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 85</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 89</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 142 163 184 54 176 183 44</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 142 163 184 54 176 183 44</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\target_support.S</name>
+      <outputs>
+        <tool>
+          <name>AARM</name>
+          <file> 76</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>AARM</name>
+          <file> 147 153 185 63 164 148 57 48 58 40 55 179 152 176 142 163 184 183 47</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>[ROOT_NODE]</name>
+      <outputs>
+        <tool>
+          <name>ILINK</name>
+          <file> 88 67</file>
+        </tool>
+      </outputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\Release\Exe\sample.out</name>
+      <outputs>
+        <tool>
+          <name>ILINK</name>
+          <file> 67</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>ILINK</name>
+          <file> 60 118 108 117 119 120 122 95 121 104 96 92 134 112 123 75 124 98 90 68 115 77 101 111 100 91 110 105 89 76 107 106 116 97 103 109 102 99 93 94 38 39 37</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\kernel_cfg.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 86</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 104</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 158 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 62 155 167 42 172 170 45 43 154 166 180 151 56 171 146 175 169 144 150 174 157 44 54 50 52 51 145 159</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 158 147 153 185 63 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 152 176 142 163 184 183 47 182 59 62 155 167 42 172 170 45 43 154 166 180 151 56 171 146 175 169 144 150 174 157 44 54 50 52 51 145 159</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\src\sample1.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 87</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 90</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 156 50 174 169 51 145 159</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 164 148 57 48 165 173 178 53 49 177 143 181 160 64 58 40 55 179 156 50 174 169 51 145 159</file>
+        </tool>
+      </inputs>
+    </file>
+  </configuration>
+</project>
+
+
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/sample.ewd
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/sample.ewd	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/sample.ewd	(revision 61)
@@ -0,0 +1,2291 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<project>
+  <fileVersion>2</fileVersion>
+  <configuration>
+    <name>Debug</name>
+    <toolchain>
+      <name>ARM</name>
+    </toolchain>
+    <debug>1</debug>
+    <settings>
+      <name>C-SPY</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>25</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>CInput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CEndian</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCVariant</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacOverride</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacFile</name>
+          <state>$PROJ_DIR$\cspy.mac</state>
+        </option>
+        <option>
+          <name>MemOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MemFile</name>
+          <state>$TOOLKIT_DIR$\CONFIG\debugger\Freescale\MK70FN1M0xxx12.ddf</state>
+        </option>
+        <option>
+          <name>RunToEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RunToName</name>
+          <state>main</state>
+        </option>
+        <option>
+          <name>CExtraOptionsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CExtraOptions</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CFpuProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCDDFArgumentProducer</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCDownloadSuppressDownload</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCDownloadVerifyAll</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCProductVersion</name>
+          <state>6.50.1.4445</state>
+        </option>
+        <option>
+          <name>OCDynDriverList</name>
+          <state>IJET_ID</state>
+        </option>
+        <option>
+          <name>OCLastSavedByProductVersion</name>
+          <state>6.50.2.4581</state>
+        </option>
+        <option>
+          <name>OCDownloadAttachToProgram</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>UseFlashLoader</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CLowLevel</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCBE8Slave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacFile2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CDevice</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>FlashLoadersV3</name>
+          <state>$TOOLKIT_DIR$\config\flashloader\Freescale\FlashK70Fxxx128K.board</state>
+        </option>
+        <option>
+          <name>OCImagesSuppressCheck1</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesPath1</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesSuppressCheck2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesPath2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesSuppressCheck3</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesPath3</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OverrideDefFlashBoard</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesOffset1</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesOffset2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesOffset3</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesUse1</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesUse2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesUse3</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCDeviceConfigMacroFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCDebuggerExtraOption</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCAllMTBOptions</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>ARMSIM_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>OCSimDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCSimEnablePSP</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCSimPspOverrideConfig</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCSimPspConfigFile</name>
+          <state></state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>ANGEL_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>CCAngelHeartbeat</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CAngelCommunication</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CAngelCommBaud</name>
+          <version>0</version>
+          <state>3</state>
+        </option>
+        <option>
+          <name>CAngelCommPort</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ANGELTCPIP</name>
+          <state>aaa.bbb.ccc.ddd</state>
+        </option>
+        <option>
+          <name>DoAngelLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AngelLogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>GDBSERVER_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>TCPIP</name>
+          <state>aaa.bbb.ccc.ddd</state>
+        </option>
+        <option>
+          <name>DoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>LogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CCJTagBreakpointRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJTagDoUpdateBreakpoints</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJTagUpdateBreakpoints</name>
+          <state>_call_main</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>IARROM_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>CRomLogFileCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CRomLogFileEditB</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CRomCommPort</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CRomCommBaud</name>
+          <version>0</version>
+          <state>7</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>IJET_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>2</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IjetAttachSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCIarProbeScriptFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IjetResetList</name>
+          <version>1</version>
+          <state>5</state>
+        </option>
+        <option>
+          <name>IjetHWResetDuration</name>
+          <state>300</state>
+        </option>
+        <option>
+          <name>IjetHWResetDelay</name>
+          <state>200</state>
+        </option>
+        <option>
+          <name>IjetPowerFromProbe</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IjetPowerRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetDoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetLogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>IjetInterfaceRadio</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IjetInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetMultiTargetEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetMultiTarget</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetScanChainNonARMDevices</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetIRLength</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetJtagSpeedList</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetProtocolRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetSwoPin</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetCpuClockEdit</name>
+          <state>72.0</state>
+        </option>
+        <option>
+          <name>IjetSwoPrescalerList</name>
+          <version>1</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetBreakpointRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetRestoreBreakpointsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetUpdateBreakpointsEdit</name>
+          <state>_call_main</state>
+        </option>
+        <option>
+          <name>RDICatchReset</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchUndef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchSWI</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchData</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchPrefetch</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchIRQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchFIQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchCORERESET</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchMMERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchNOCPERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchCHKERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchSTATERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchBUSERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchINTERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchHARDERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchDummy</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCProbeCfgOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCProbeConfig</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IjetProbeConfigRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetMultiCPUEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetMultiCPUNumber</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetSelectedCPUBehaviour</name>
+          <state></state>
+        </option>
+        <option>
+          <name>ICpuName</name>
+          <state></state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>JLINK_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>15</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>JLinkSpeed</name>
+          <state>32</state>
+        </option>
+        <option>
+          <name>CCJLinkDoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkLogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CCJLinkHWResetDelay</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>JLinkInitialSpeed</name>
+          <state>32</state>
+        </option>
+        <option>
+          <name>CCDoJlinkMultiTarget</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCScanChainNonARMDevices</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkMultiTarget</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkIRLength</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkCommRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkTCPIP</name>
+          <state>aaa.bbb.ccc.ddd</state>
+        </option>
+        <option>
+          <name>CCJLinkSpeedRadioV2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCUSBDevice</name>
+          <version>1</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCRDICatchReset</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchUndef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchSWI</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchData</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchPrefetch</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchIRQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchFIQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkBreakpointRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkDoUpdateBreakpoints</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkUpdateBreakpoints</name>
+          <state>_call_main</state>
+        </option>
+        <option>
+          <name>CCJLinkInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCJLinkAttachSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCJLinkResetList</name>
+          <version>6</version>
+          <state>5</state>
+        </option>
+        <option>
+          <name>CCJLinkInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchCORERESET</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchMMERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchNOCPERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchCHRERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchSTATERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchBUSERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchINTERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchHARDERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchDummy</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCJLinkScriptFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCJLinkUsbSerialNo</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCTcpIpAlt</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkTcpIpSerialNo</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCCpuClockEdit</name>
+          <state>72.0</state>
+        </option>
+        <option>
+          <name>CCSwoClockAuto</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSwoClockEdit</name>
+          <state>2000</state>
+        </option>
+        <option>
+          <name>OCJLinkTraceSource</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCJLinkTraceSourceDummy</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCJLinkDeviceName</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>LMIFTDI_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>2</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>LmiftdiSpeed</name>
+          <state>500</state>
+        </option>
+        <option>
+          <name>CCLmiftdiDoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCLmiftdiLogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CCLmiFtdiInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCLmiFtdiInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>MACRAIGOR_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>3</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>jtag</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>EmuSpeed</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>TCPIP</name>
+          <state>aaa.bbb.ccc.ddd</state>
+        </option>
+        <option>
+          <name>DoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>LogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>DoEmuMultiTarget</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>EmuMultiTarget</name>
+          <state>0@ARM7TDMI</state>
+        </option>
+        <option>
+          <name>EmuHWReset</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CEmuCommBaud</name>
+          <version>0</version>
+          <state>4</state>
+        </option>
+        <option>
+          <name>CEmuCommPort</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>jtago</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>UnusedAddr</name>
+          <state>0x00800000</state>
+        </option>
+        <option>
+          <name>CCMacraigorHWResetDelay</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCJTagBreakpointRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJTagDoUpdateBreakpoints</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJTagUpdateBreakpoints</name>
+          <state>_call_main</state>
+        </option>
+        <option>
+          <name>CCMacraigorInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCMacraigorInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>PEMICRO_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCPEMicroAttachSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCPEMicroInterfaceList</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPEMicroResetDelay</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCPEMicroJtagSpeed</name>
+          <state>5000</state>
+        </option>
+        <option>
+          <name>CCJPEMicroShowSettings</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>DoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>LogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CCPEMicroUSBDevice</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPEMicroSerialPort</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJPEMicroTCPIPAutoScanNetwork</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCPEMicroTCPIP</name>
+          <state>10.0.0.1</state>
+        </option>
+        <option>
+          <name>CCPEMicroCommCmdLineProducer</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSTLinkInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSTLinkInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>RDI_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>2</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>CRDIDriverDll</name>
+          <state>###Uninitialized###</state>
+        </option>
+        <option>
+          <name>CRDILogFileCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CRDILogFileEdit</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CCRDIHWReset</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchReset</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchUndef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchSWI</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchData</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchPrefetch</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchIRQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchFIQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>STLINK_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>2</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCSTLinkInterfaceRadio</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCSTLinkInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSTLinkResetList</name>
+          <version>1</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCpuClockEdit</name>
+          <state>72.0</state>
+        </option>
+        <option>
+          <name>CCSwoClockAuto</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSwoClockEdit</name>
+          <state>2000</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>THIRDPARTY_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>CThirdPartyDriverDll</name>
+          <state>###Uninitialized###</state>
+        </option>
+        <option>
+          <name>CThirdPartyLogFileCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CThirdPartyLogFileEditB</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>XDS100_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>2</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCXDS100AttachSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>TIPackageOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>TIPackage</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCXds100InterfaceList</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>BoardFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>DoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>LogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+      </data>
+    </settings>
+    <debuggerPlugins>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\middleware\HCCWare\HCCWare.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.JPN.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.JPN.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB6_Plugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.JPN.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.JPN.ewplugin</file>
+        <loadFlag>1</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$EW_DIR$\common\plugins\Orti\Orti.JPN.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$EW_DIR$\common\plugins\SymList\SymList.JPN.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+    </debuggerPlugins>
+  </configuration>
+  <configuration>
+    <name>Release</name>
+    <toolchain>
+      <name>ARM</name>
+    </toolchain>
+    <debug>0</debug>
+    <settings>
+      <name>C-SPY</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>25</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>CInput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CEndian</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCVariant</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>MemOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MemFile</name>
+          <state>$TOOLKIT_DIR$\CONFIG\debugger\Freescale\MK70FN1M0xxx12.ddf</state>
+        </option>
+        <option>
+          <name>RunToEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RunToName</name>
+          <state>main</state>
+        </option>
+        <option>
+          <name>CExtraOptionsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CExtraOptions</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CFpuProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCDDFArgumentProducer</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCDownloadSuppressDownload</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCDownloadVerifyAll</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCProductVersion</name>
+          <state>6.50.1.4445</state>
+        </option>
+        <option>
+          <name>OCDynDriverList</name>
+          <state>IJET_ID</state>
+        </option>
+        <option>
+          <name>OCLastSavedByProductVersion</name>
+          <state>6.50.2.4581</state>
+        </option>
+        <option>
+          <name>OCDownloadAttachToProgram</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>UseFlashLoader</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CLowLevel</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCBE8Slave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacFile2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CDevice</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>FlashLoadersV3</name>
+          <state>$TOOLKIT_DIR$\config\flashloader\Freescale\FlashK70Fxxx128K.board</state>
+        </option>
+        <option>
+          <name>OCImagesSuppressCheck1</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesPath1</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesSuppressCheck2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesPath2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesSuppressCheck3</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesPath3</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OverrideDefFlashBoard</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesOffset1</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesOffset2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesOffset3</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesUse1</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesUse2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesUse3</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCDeviceConfigMacroFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCDebuggerExtraOption</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCAllMTBOptions</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>ARMSIM_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>OCSimDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCSimEnablePSP</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCSimPspOverrideConfig</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCSimPspConfigFile</name>
+          <state></state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>ANGEL_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>CCAngelHeartbeat</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CAngelCommunication</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CAngelCommBaud</name>
+          <version>0</version>
+          <state>3</state>
+        </option>
+        <option>
+          <name>CAngelCommPort</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ANGELTCPIP</name>
+          <state>aaa.bbb.ccc.ddd</state>
+        </option>
+        <option>
+          <name>DoAngelLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AngelLogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>GDBSERVER_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>TCPIP</name>
+          <state>aaa.bbb.ccc.ddd</state>
+        </option>
+        <option>
+          <name>DoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>LogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CCJTagBreakpointRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJTagDoUpdateBreakpoints</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJTagUpdateBreakpoints</name>
+          <state>_call_main</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>IARROM_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>CRomLogFileCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CRomLogFileEditB</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CRomCommPort</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CRomCommBaud</name>
+          <version>0</version>
+          <state>7</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>IJET_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>2</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IjetAttachSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCIarProbeScriptFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IjetResetList</name>
+          <version>1</version>
+          <state>5</state>
+        </option>
+        <option>
+          <name>IjetHWResetDuration</name>
+          <state>300</state>
+        </option>
+        <option>
+          <name>IjetHWResetDelay</name>
+          <state>200</state>
+        </option>
+        <option>
+          <name>IjetPowerFromProbe</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetPowerRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetDoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetLogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>IjetInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetMultiTargetEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetMultiTarget</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetScanChainNonARMDevices</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetIRLength</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetJtagSpeedList</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetProtocolRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetSwoPin</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetCpuClockEdit</name>
+          <state>72.0</state>
+        </option>
+        <option>
+          <name>IjetSwoPrescalerList</name>
+          <version>1</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetBreakpointRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetRestoreBreakpointsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetUpdateBreakpointsEdit</name>
+          <state>_call_main</state>
+        </option>
+        <option>
+          <name>RDICatchReset</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchUndef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchSWI</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchData</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchPrefetch</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchIRQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchFIQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchCORERESET</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchMMERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchNOCPERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchCHKERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchSTATERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchBUSERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchINTERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchHARDERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchDummy</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCProbeCfgOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCProbeConfig</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IjetProbeConfigRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetMultiCPUEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetMultiCPUNumber</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetSelectedCPUBehaviour</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ICpuName</name>
+          <state></state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>JLINK_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>15</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>JLinkSpeed</name>
+          <state>32</state>
+        </option>
+        <option>
+          <name>CCJLinkDoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkLogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CCJLinkHWResetDelay</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>JLinkInitialSpeed</name>
+          <state>32</state>
+        </option>
+        <option>
+          <name>CCDoJlinkMultiTarget</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCScanChainNonARMDevices</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkMultiTarget</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkIRLength</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkCommRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkTCPIP</name>
+          <state>aaa.bbb.ccc.ddd</state>
+        </option>
+        <option>
+          <name>CCJLinkSpeedRadioV2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCUSBDevice</name>
+          <version>1</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCRDICatchReset</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchUndef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchSWI</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchData</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchPrefetch</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchIRQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchFIQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkBreakpointRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkDoUpdateBreakpoints</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkUpdateBreakpoints</name>
+          <state>_call_main</state>
+        </option>
+        <option>
+          <name>CCJLinkInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCJLinkAttachSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCJLinkResetList</name>
+          <version>6</version>
+          <state>5</state>
+        </option>
+        <option>
+          <name>CCJLinkInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchCORERESET</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchMMERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchNOCPERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchCHRERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchSTATERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchBUSERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchINTERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchHARDERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchDummy</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCJLinkScriptFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCJLinkUsbSerialNo</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCTcpIpAlt</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkTcpIpSerialNo</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCCpuClockEdit</name>
+          <state>72.0</state>
+        </option>
+        <option>
+          <name>CCSwoClockAuto</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSwoClockEdit</name>
+          <state>2000</state>
+        </option>
+        <option>
+          <name>OCJLinkTraceSource</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCJLinkTraceSourceDummy</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCJLinkDeviceName</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>LMIFTDI_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>2</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>LmiftdiSpeed</name>
+          <state>500</state>
+        </option>
+        <option>
+          <name>CCLmiftdiDoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCLmiftdiLogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CCLmiFtdiInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCLmiFtdiInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>MACRAIGOR_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>3</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>jtag</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>EmuSpeed</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>TCPIP</name>
+          <state>aaa.bbb.ccc.ddd</state>
+        </option>
+        <option>
+          <name>DoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>LogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>DoEmuMultiTarget</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>EmuMultiTarget</name>
+          <state>0@ARM7TDMI</state>
+        </option>
+        <option>
+          <name>EmuHWReset</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CEmuCommBaud</name>
+          <version>0</version>
+          <state>4</state>
+        </option>
+        <option>
+          <name>CEmuCommPort</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>jtago</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>UnusedAddr</name>
+          <state>0x00800000</state>
+        </option>
+        <option>
+          <name>CCMacraigorHWResetDelay</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCJTagBreakpointRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJTagDoUpdateBreakpoints</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJTagUpdateBreakpoints</name>
+          <state>_call_main</state>
+        </option>
+        <option>
+          <name>CCMacraigorInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCMacraigorInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>PEMICRO_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCPEMicroAttachSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCPEMicroInterfaceList</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPEMicroResetDelay</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCPEMicroJtagSpeed</name>
+          <state>#UNINITIALIZED#</state>
+        </option>
+        <option>
+          <name>CCJPEMicroShowSettings</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>DoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>LogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CCPEMicroUSBDevice</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPEMicroSerialPort</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJPEMicroTCPIPAutoScanNetwork</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCPEMicroTCPIP</name>
+          <state>10.0.0.1</state>
+        </option>
+        <option>
+          <name>CCPEMicroCommCmdLineProducer</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSTLinkInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSTLinkInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>RDI_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>2</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>CRDIDriverDll</name>
+          <state>###Uninitialized###</state>
+        </option>
+        <option>
+          <name>CRDILogFileCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CRDILogFileEdit</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CCRDIHWReset</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchReset</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchUndef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchSWI</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchData</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchPrefetch</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchIRQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchFIQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>STLINK_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>2</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCSTLinkInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSTLinkInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSTLinkResetList</name>
+          <version>1</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCpuClockEdit</name>
+          <state>72.0</state>
+        </option>
+        <option>
+          <name>CCSwoClockAuto</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSwoClockEdit</name>
+          <state>2000</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>THIRDPARTY_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>CThirdPartyDriverDll</name>
+          <state>###Uninitialized###</state>
+        </option>
+        <option>
+          <name>CThirdPartyLogFileCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CThirdPartyLogFileEditB</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>XDS100_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>2</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCXDS100AttachSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>TIPackageOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>TIPackage</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCXds100InterfaceList</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>BoardFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>DoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>LogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+      </data>
+    </settings>
+    <debuggerPlugins>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\middleware\HCCWare\HCCWare.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.JPN.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.JPN.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB6_Plugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.JPN.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.JPN.ewplugin</file>
+        <loadFlag>1</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$EW_DIR$\common\plugins\Orti\Orti.JPN.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$EW_DIR$\common\plugins\SymList\SymList.JPN.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+    </debuggerPlugins>
+  </configuration>
+</project>
+
+
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/sample.ewp
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/sample.ewp	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/sample.ewp	(revision 61)
@@ -0,0 +1,2002 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<project>
+  <fileVersion>2</fileVersion>
+  <configuration>
+    <name>Debug</name>
+    <toolchain>
+      <name>ARM</name>
+    </toolchain>
+    <debug>1</debug>
+    <settings>
+      <name>General</name>
+      <archiveVersion>3</archiveVersion>
+      <data>
+        <version>21</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>ExePath</name>
+          <state>Debug\Exe</state>
+        </option>
+        <option>
+          <name>ObjPath</name>
+          <state>Debug\Obj</state>
+        </option>
+        <option>
+          <name>ListPath</name>
+          <state>Debug\List</state>
+        </option>
+        <option>
+          <name>Variant</name>
+          <version>20</version>
+          <state>39</state>
+        </option>
+        <option>
+          <name>GEndianMode</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Input variant</name>
+          <version>3</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Input description</name>
+          <state>&#x30D5;&#x30A9;&#x30FC;&#x30De;&#x30C3;&#x30BF;&#x306e;&#x81eA;&#x52D5;&#x9078;&#x629e;&#x3002;</state>
+        </option>
+        <option>
+          <name>Output variant</name>
+          <version>2</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Output description</name>
+          <state>&#x30D5;&#x30A9;&#x30FC;&#x30De;&#x30C3;&#x30BF;&#x306e;&#x81eA;&#x52D5;&#x9078;&#x629e;&#x3002;</state>
+        </option>
+        <option>
+          <name>GOutputBinary</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>FPU</name>
+          <version>2</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGCoreOrChip</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>GRuntimeLibSelect</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>GRuntimeLibSelectSlave</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>RTDescription</name>
+          <state>C/C++&#x30e9;&#x30F3;&#x30BF;&#x30A4;&#x30e0;&#x30e9;&#x30A4;&#x30D6;&#x30e9;&#x30eA;&#x306e;&#x901A;&#x5e38;&#x306e;&#x8A2D;&#x5B9A;&#x3092;&#x4F7F;&#x7528;&#x3057;&#x307e;&#x3059;&#x3002;&#x30eD;&#x30B1;&#x30FC;&#x30eB;&#x30A4;&#x30F3;&#x30BF;&#x30D5;&#x30A7;&#x30FC;&#x30B9;&#x306A;&#x3057;&#x3001;C&#x30eD;&#x30B1;&#x30FC;&#x30eB;&#x3001;&#x30D5;&#x30A1;&#x30A4;&#x30eB;&#x8A18;&#x8FF0;&#x5B50;&#x30B5;&#x30DD;&#x30FC;&#x30C8;&#x306A;&#x3057;&#x3001;printf/scanf&#x3067;&#x306e;&#x30De;&#x30eB;&#x30C1;&#x30D0;&#x30A4;&#x30C8;&#x6587;&#x5B57;&#x306A;&#x3057;&#x3001;strtod&#x3067;&#x306e;16&#x9032;&#x6570;&#x6D6e;&#x52D5;&#x5C0F;&#x6570;&#x70B9;&#x6570;&#x306A;&#x3057;&#x3002;</state>
+        </option>
+        <option>
+          <name>OGProductVersion</name>
+          <state>6.50.1.4445</state>
+        </option>
+        <option>
+          <name>OGLastSavedByProductVersion</name>
+          <state>6.50.6.4952</state>
+        </option>
+        <option>
+          <name>GeneralEnableMisra</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraVerbose</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGChipSelectEditMenu</name>
+          <state>MK70FN1M0xxx12	Freescale MK70FN1M0xxx12</state>
+        </option>
+        <option>
+          <name>GenLowLevelInterface</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>GEndianModeBE</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OGBufferedTerminalOutput</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GenStdoutInterface</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraRules98</name>
+          <version>0</version>
+          <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+        </option>
+        <option>
+          <name>GeneralMisraVer</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraRules04</name>
+          <version>0</version>
+          <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+        </option>
+        <option>
+          <name>RTConfigPath2</name>
+          <state>$TOOLKIT_DIR$\INC\c\DLib_Config_Normal.h</state>
+        </option>
+        <option>
+          <name>GFPUCoreSlave</name>
+          <version>20</version>
+          <state>39</state>
+        </option>
+        <option>
+          <name>GBECoreSlave</name>
+          <version>20</version>
+          <state>39</state>
+        </option>
+        <option>
+          <name>OGUseCmsis</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGUseCmsisDspLib</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>ICCARM</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>28</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>CCDefines</name>
+          <state>ALLFUNC</state>
+          <state>TOPPERS_LABEL_ASM</state>
+        </option>
+        <option>
+          <name>CCPreprocFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPreprocComments</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPreprocLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListCFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCListCMnemonics</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCListCMessages</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCListAssFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListAssSource</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCEnableRemarks</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCDiagSuppress</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCDiagRemark</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCDiagWarning</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCDiagError</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCObjPrefix</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCAllowList</name>
+          <version>1</version>
+          <state>1111111</state>
+        </option>
+        <option>
+          <name>CCDebugInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IEndianMode</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IExtraOptionsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IExtraOptions</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCLangConformance</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSignedPlainChar</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCRequirePrototypes</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCMultibyteSupport</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCDiagWarnAreErr</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCompilerRuntimeInfo</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IFpuProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OutputFile</name>
+          <state>$FILE_BNAME$.o</state>
+        </option>
+        <option>
+          <name>CCLibConfigHeader</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>PreInclude</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CompilerMisraOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCIncludePath2</name>
+          <state>$PROJ_DIR$\..\..\..\include</state>
+          <state>$PROJ_DIR$\..\..\..\kernel</state>
+          <state>$PROJ_DIR$\..\..\..\arch</state>
+          <state>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm</state>
+          <state>$PROJ_DIR$\..\..\..</state>
+          <state>$PROJ_DIR$\..\..\..\target\fs_k70f120m_EWARM2</state>
+          <state>$PROJ_DIR$\src</state>
+          <state>$PROJ_DIR$</state>
+        </option>
+        <option>
+          <name>CCStdIncCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCodeSection</name>
+          <state>.text</state>
+        </option>
+        <option>
+          <name>IInterwork2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IProcessorMode2</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCOptLevel</name>
+          <state>3</state>
+        </option>
+        <option>
+          <name>CCOptStrategy</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCOptLevelSlave</name>
+          <state>3</state>
+        </option>
+        <option>
+          <name>CompilerMisraRules98</name>
+          <version>0</version>
+          <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+        </option>
+        <option>
+          <name>CompilerMisraRules04</name>
+          <version>0</version>
+          <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+        </option>
+        <option>
+          <name>CCPosIndRopi</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPosIndRwpi</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPosIndNoDynInit</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccLang</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccCDialect</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccAllowVLA</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccCppDialect</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccExceptions</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccRTTI</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccStaticDestr</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccCppInlineSemantics</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccCmsis</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccFloatSemantics</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCOptimizationNoSizeConstraints</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>AARM</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>8</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>AObjPrefix</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AEndian</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ACaseSensitivity</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacroChars</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnWhat</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnOne</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AWarnRange1</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AWarnRange2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>ADebug</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AltRegisterNames</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ADefines</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AList</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AListHeader</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AListing</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Includes</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacDefs</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacExps</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacExec</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OnlyAssed</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MultiLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>PageLengthCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>PageLength</name>
+          <state>80</state>
+        </option>
+        <option>
+          <name>TabSpacing</name>
+          <state>8</state>
+        </option>
+        <option>
+          <name>AXRef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefDefines</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefInternal</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefDual</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AFpuProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AOutputFile</name>
+          <state>$FILE_BNAME$.o</state>
+        </option>
+        <option>
+          <name>AMultibyteSupport</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ALimitErrorsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ALimitErrorsEdit</name>
+          <state>100</state>
+        </option>
+        <option>
+          <name>AIgnoreStdInclude</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AUserIncludes</name>
+          <state>$PROJ_DIR$\..\..\..\include</state>
+          <state>$PROJ_DIR$\..\..\..\kernel</state>
+          <state>$PROJ_DIR$\..\..\..\arch</state>
+          <state>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm</state>
+          <state>$PROJ_DIR$\..\..\..</state>
+          <state>$PROJ_DIR$\..\..\..\target\fs_k70f120m_EWARM2</state>
+          <state>$PROJ_DIR$\src</state>
+          <state>$PROJ_DIR$</state>
+        </option>
+        <option>
+          <name>AExtraOptionsCheckV2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AExtraOptionsV2</name>
+          <state></state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>OBJCOPY</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>OOCOutputFormat</name>
+          <version>2</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCOutputOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OOCOutputFile</name>
+          <state>sample.srec</state>
+        </option>
+        <option>
+          <name>OOCCommandLineProducer</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OOCObjCopyEnable</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>CUSTOM</name>
+      <archiveVersion>3</archiveVersion>
+      <data>
+        <extensions></extensions>
+        <cmdline></cmdline>
+      </data>
+    </settings>
+    <settings>
+      <name>BICOMP</name>
+      <archiveVersion>0</archiveVersion>
+      <data/>
+    </settings>
+    <settings>
+      <name>BUILDACTION</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <prebuild></prebuild>
+        <postbuild></postbuild>
+      </data>
+    </settings>
+    <settings>
+      <name>ILINK</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>15</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>IlinkLibIOConfig</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>XLinkMisraHandler</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkInputFileSlave</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOutputFile</name>
+          <state>sample.out</state>
+        </option>
+        <option>
+          <name>IlinkDebugInfoEnable</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkKeepSymbols</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinaryFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinarySymbol</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinarySegment</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinaryAlign</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkDefines</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkConfigDefines</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkMapFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkLogFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogInitialization</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogModule</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogSection</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogVeneer</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkIcfOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkIcfFile</name>
+          <state>$TOOLKIT_DIR$\config\linker\Freescale\MK70xN1M_12.icf</state>
+        </option>
+        <option>
+          <name>IlinkIcfFileSlave</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkEnableRemarks</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkSuppressDiags</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkTreatAsRem</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkTreatAsWarn</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkTreatAsErr</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkWarningsAreErrors</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkUseExtraOptions</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkExtraOptions</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkLowLevelInterfaceSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkAutoLibEnable</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkAdditionalLibs</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkOverrideProgramEntryLabel</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkProgramEntryLabelSelect</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkProgramEntryLabel</name>
+          <state>__iar_program_start</state>
+        </option>
+        <option>
+          <name>DoFill</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>FillerByte</name>
+          <state>0xFF</state>
+        </option>
+        <option>
+          <name>FillerStart</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>FillerEnd</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>CrcSize</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcAlign</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcPoly</name>
+          <state>0x11021</state>
+        </option>
+        <option>
+          <name>CrcCompl</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CrcBitOrder</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CrcInitialValue</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>DoCrc</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkBE8Slave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkBufferedTerminalOutput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkStdoutInterfaceSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcFullSize</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkIElfToolPostProcess</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogAutoLibSelect</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogRedirSymbols</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogUnusedFragments</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCrcReverseByteOrder</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCrcUseAsInput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptInline</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptExceptionsAllow</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOptExceptionsForce</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCmsis</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptMergeDuplSections</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOptUseVfe</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptForceVfe</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkStackAnalysisEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkStackControlFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkStackCallGraphFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CrcAlgorithm</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcUnitSize</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>IARCHIVE</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>IarchiveInputs</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IarchiveOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IarchiveOutput</name>
+          <state>###Unitialized###</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>BILINK</name>
+      <archiveVersion>0</archiveVersion>
+      <data/>
+    </settings>
+  </configuration>
+  <configuration>
+    <name>Release</name>
+    <toolchain>
+      <name>ARM</name>
+    </toolchain>
+    <debug>0</debug>
+    <settings>
+      <name>General</name>
+      <archiveVersion>3</archiveVersion>
+      <data>
+        <version>21</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>ExePath</name>
+          <state>Release\Exe</state>
+        </option>
+        <option>
+          <name>ObjPath</name>
+          <state>Release\Obj</state>
+        </option>
+        <option>
+          <name>ListPath</name>
+          <state>Release\List</state>
+        </option>
+        <option>
+          <name>Variant</name>
+          <version>20</version>
+          <state>39</state>
+        </option>
+        <option>
+          <name>GEndianMode</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Input variant</name>
+          <version>3</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Input description</name>
+          <state>Automatic choice of formatter.</state>
+        </option>
+        <option>
+          <name>Output variant</name>
+          <version>2</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Output description</name>
+          <state>Automatic choice of formatter.</state>
+        </option>
+        <option>
+          <name>GOutputBinary</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>FPU</name>
+          <version>2</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGCoreOrChip</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>GRuntimeLibSelect</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>GRuntimeLibSelectSlave</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>RTDescription</name>
+          <state>Use the normal configuration of the C/C++ runtime library. No locale interface, C locale, no file descriptor support, no multibytes in printf and scanf, and no hex floats in strtod.</state>
+        </option>
+        <option>
+          <name>OGProductVersion</name>
+          <state>6.50.1.4445</state>
+        </option>
+        <option>
+          <name>OGLastSavedByProductVersion</name>
+          <state>6.50.6.4952</state>
+        </option>
+        <option>
+          <name>GeneralEnableMisra</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraVerbose</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGChipSelectEditMenu</name>
+          <state>MK70FN1M0xxx12	Freescale MK70FN1M0xxx12</state>
+        </option>
+        <option>
+          <name>GenLowLevelInterface</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GEndianModeBE</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OGBufferedTerminalOutput</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GenStdoutInterface</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraRules98</name>
+          <version>0</version>
+          <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+        </option>
+        <option>
+          <name>GeneralMisraVer</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraRules04</name>
+          <version>0</version>
+          <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+        </option>
+        <option>
+          <name>RTConfigPath2</name>
+          <state>$TOOLKIT_DIR$\INC\c\DLib_Config_Normal.h</state>
+        </option>
+        <option>
+          <name>GFPUCoreSlave</name>
+          <version>20</version>
+          <state>39</state>
+        </option>
+        <option>
+          <name>GBECoreSlave</name>
+          <version>20</version>
+          <state>39</state>
+        </option>
+        <option>
+          <name>OGUseCmsis</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGUseCmsisDspLib</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>ICCARM</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>28</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>CCDefines</name>
+          <state>NDEBUG</state>
+          <state>ALLFUNC</state>
+          <state>TOPPERS_LABEL_ASM</state>
+        </option>
+        <option>
+          <name>CCPreprocFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPreprocComments</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPreprocLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListCFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListCMnemonics</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListCMessages</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListAssFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListAssSource</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCEnableRemarks</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCDiagSuppress</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCDiagRemark</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCDiagWarning</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCDiagError</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCObjPrefix</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCAllowList</name>
+          <version>1</version>
+          <state>1111111</state>
+        </option>
+        <option>
+          <name>CCDebugInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IEndianMode</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IExtraOptionsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IExtraOptions</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCLangConformance</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSignedPlainChar</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCRequirePrototypes</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCMultibyteSupport</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCDiagWarnAreErr</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCompilerRuntimeInfo</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IFpuProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OutputFile</name>
+          <state>$FILE_BNAME$.o</state>
+        </option>
+        <option>
+          <name>CCLibConfigHeader</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>PreInclude</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CompilerMisraOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCIncludePath2</name>
+          <state>$PROJ_DIR$\..\..\..\include</state>
+          <state>$PROJ_DIR$\..\..\..\kernel</state>
+          <state>$PROJ_DIR$\..\..\..\arch</state>
+          <state>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm</state>
+          <state>$PROJ_DIR$\..\..\..</state>
+          <state>$PROJ_DIR$\..\..\..\target\fs_k70f120m_EWARM2</state>
+          <state>$PROJ_DIR$\src</state>
+          <state>$PROJ_DIR$\</state>
+        </option>
+        <option>
+          <name>CCStdIncCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCodeSection</name>
+          <state>.text</state>
+        </option>
+        <option>
+          <name>IInterwork2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IProcessorMode2</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCOptLevel</name>
+          <state>3</state>
+        </option>
+        <option>
+          <name>CCOptStrategy</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCOptLevelSlave</name>
+          <state>3</state>
+        </option>
+        <option>
+          <name>CompilerMisraRules98</name>
+          <version>0</version>
+          <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+        </option>
+        <option>
+          <name>CompilerMisraRules04</name>
+          <version>0</version>
+          <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+        </option>
+        <option>
+          <name>CCPosIndRopi</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPosIndRwpi</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPosIndNoDynInit</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccLang</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccCDialect</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccAllowVLA</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccCppDialect</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccExceptions</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccRTTI</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccStaticDestr</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccCppInlineSemantics</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccCmsis</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccFloatSemantics</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCOptimizationNoSizeConstraints</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>AARM</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>8</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>AObjPrefix</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AEndian</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ACaseSensitivity</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacroChars</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnWhat</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnOne</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AWarnRange1</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AWarnRange2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>ADebug</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AltRegisterNames</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ADefines</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AList</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AListHeader</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AListing</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Includes</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacDefs</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacExps</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacExec</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OnlyAssed</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MultiLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>PageLengthCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>PageLength</name>
+          <state>80</state>
+        </option>
+        <option>
+          <name>TabSpacing</name>
+          <state>8</state>
+        </option>
+        <option>
+          <name>AXRef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefDefines</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefInternal</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefDual</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AFpuProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AOutputFile</name>
+          <state>$FILE_BNAME$.o</state>
+        </option>
+        <option>
+          <name>AMultibyteSupport</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ALimitErrorsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ALimitErrorsEdit</name>
+          <state>100</state>
+        </option>
+        <option>
+          <name>AIgnoreStdInclude</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AUserIncludes</name>
+          <state>$PROJ_DIR$\..\..\..\include</state>
+          <state>$PROJ_DIR$\..\..\..\kernel</state>
+          <state>$PROJ_DIR$\..\..\..\arch</state>
+          <state>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm</state>
+          <state>$PROJ_DIR$\..\..\..</state>
+          <state>$PROJ_DIR$\..\..\..\target\fs_k70f120m_EWARM2</state>
+          <state>$PROJ_DIR$\src</state>
+          <state>$PROJ_DIR$</state>
+        </option>
+        <option>
+          <name>AExtraOptionsCheckV2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AExtraOptionsV2</name>
+          <state></state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>OBJCOPY</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>OOCOutputFormat</name>
+          <version>2</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCOutputOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OOCOutputFile</name>
+          <state>sample.srec</state>
+        </option>
+        <option>
+          <name>OOCCommandLineProducer</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OOCObjCopyEnable</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>CUSTOM</name>
+      <archiveVersion>3</archiveVersion>
+      <data>
+        <extensions></extensions>
+        <cmdline></cmdline>
+      </data>
+    </settings>
+    <settings>
+      <name>BICOMP</name>
+      <archiveVersion>0</archiveVersion>
+      <data/>
+    </settings>
+    <settings>
+      <name>BUILDACTION</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <prebuild></prebuild>
+        <postbuild></postbuild>
+      </data>
+    </settings>
+    <settings>
+      <name>ILINK</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>15</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>IlinkLibIOConfig</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>XLinkMisraHandler</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkInputFileSlave</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOutputFile</name>
+          <state>sample.out</state>
+        </option>
+        <option>
+          <name>IlinkDebugInfoEnable</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkKeepSymbols</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinaryFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinarySymbol</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinarySegment</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinaryAlign</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkDefines</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkConfigDefines</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkMapFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkLogFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogInitialization</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogModule</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogSection</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogVeneer</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkIcfOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkIcfFile</name>
+          <state>$TOOLKIT_DIR$\config\linker\Freescale\MK70xN1M_12.icf</state>
+        </option>
+        <option>
+          <name>IlinkIcfFileSlave</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkEnableRemarks</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkSuppressDiags</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkTreatAsRem</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkTreatAsWarn</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkTreatAsErr</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkWarningsAreErrors</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkUseExtraOptions</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkExtraOptions</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkLowLevelInterfaceSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkAutoLibEnable</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkAdditionalLibs</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkOverrideProgramEntryLabel</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkProgramEntryLabelSelect</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkProgramEntryLabel</name>
+          <state>__iar_program_start</state>
+        </option>
+        <option>
+          <name>DoFill</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>FillerByte</name>
+          <state>0xFF</state>
+        </option>
+        <option>
+          <name>FillerStart</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>FillerEnd</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>CrcSize</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcAlign</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcPoly</name>
+          <state>0x11021</state>
+        </option>
+        <option>
+          <name>CrcCompl</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CrcBitOrder</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CrcInitialValue</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>DoCrc</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkBE8Slave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkBufferedTerminalOutput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkStdoutInterfaceSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcFullSize</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkIElfToolPostProcess</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogAutoLibSelect</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogRedirSymbols</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogUnusedFragments</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCrcReverseByteOrder</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCrcUseAsInput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptInline</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptExceptionsAllow</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOptExceptionsForce</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCmsis</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptMergeDuplSections</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOptUseVfe</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptForceVfe</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkStackAnalysisEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkStackControlFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkStackCallGraphFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CrcAlgorithm</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcUnitSize</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>IARCHIVE</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>IarchiveInputs</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IarchiveOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IarchiveOutput</name>
+          <state>###Unitialized###</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>BILINK</name>
+      <archiveVersion>0</archiveVersion>
+      <data/>
+    </settings>
+  </configuration>
+  <group>
+    <name>arch</name>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_config.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_support.S</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_timer.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\start.S</name>
+    </file>
+  </group>
+  <group>
+    <name>kernel</name>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\alarm.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\cyclic.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\dataqueue.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\eventflag.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\exception.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\interrupt.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\mailbox.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\mempfix.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\pridataq.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\semaphore.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\startup.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\sys_manage.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\task.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\task_except.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\task_manage.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\task_refer.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\task_sync.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\time_event.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\time_manage.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\wait.c</name>
+    </file>
+  </group>
+  <group>
+    <name>library</name>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\library\histogram.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\library\log_output.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\library\strerror.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\library\t_perror.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\library\test_lib.c</name>
+    </file>
+  </group>
+  <group>
+    <name>syssvc</name>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\syssvc\banner.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\syssvc\logtask.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\syssvc\serial.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\syssvc\syslog.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\syssvc\vasyslog.c</name>
+    </file>
+  </group>
+  <group>
+    <name>target</name>
+    <file>
+      <name>$PROJ_DIR$\..\target_config.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\target_serial.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\target_support.S</name>
+    </file>
+  </group>
+  <file>
+    <name>$PROJ_DIR$\kernel_cfg.c</name>
+  </file>
+  <file>
+    <name>$PROJ_DIR$\src\sample1.c</name>
+  </file>
+</project>
+
+
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/sample.eww
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/sample.eww	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/sample.eww	(revision 61)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<workspace>
+  <project>
+    <path>$WS_DIR$\depend.ewp</path>
+  </project>
+  <project>
+    <path>$WS_DIR$\sample.ewp</path>
+  </project>
+  <batchBuild/>
+</workspace>
+
+
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/src/sample1.c
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/src/sample1.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/src/sample1.c	(revision 61)
@@ -0,0 +1,516 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: sample1.c 1797 2010-06-07 04:24:19Z ertl-hiro $
+ */
+
+/* 
+ *  TvvO(1)Ì{Ì
+ *
+ *  ASPJ[lÌî{IÈ®ìðmF·é½ßÌTvvOD
+ *
+ *  vOÌTv:
+ *
+ *  [UC^tF[Xðó¯ÂC^XNi^XNID: MAIN_TASKCD
+ *  æx: MAIN_PRIORITYjÆC3ÂÌÀñÀs³êé^XNi^XNID:
+ *  TASK1`TASK3CúDæx: MID_PRIORITYjÅ\¬³êéDÜ½CN®ü
+ *  úª2bÌüúnhiüúnhID: CYCHDR1jðp¢éD
+ *
+ *  ÀñÀs³êé^XNÍCtask_loopñó[vðÀs·éxÉC^XNª
+ *  ÀsÅ é±Æð çí·bZ[Wð\¦·éD
+ *
+ *  üúnhÍCOÂÌDæxiHIGH_PRIORITYCMID_PRIORITYC
+ *  LOW_PRIORITYjÌfBL
+[ðñ]³¹éDvOÌN®¼ãÍC
+ *  üúnhÍâ~óÔÉÈÁÄ¢éD
+ *
+ *  C^XNÍCVAI/O|[g©çÌ¶üÍðs¢i¶üÍð
+ *  ÒÁÄ¢éÔÍCÀñÀs³êé^XNªÀs³êÄ¢éjCüÍ³ê½
+ *  ¶ÉÎµ½ðÀs·éDüÍ³ê½¶ÆÌÖWÍÌÊèD
+ *  Control-CÜ½Í'Q'ªüÍ³êéÆCvOðI¹·éD
+ *
+ *  '1' : ÎÛ^XNðTASK1ÉØè·¦éiúÝèjD
+ *  '2' : ÎÛ^XNðTASK2ÉØè·¦éD
+ *  '3' : ÎÛ^XNðTASK3ÉØè·¦éD
+ *  'a' : ÎÛ^XNðact_tskÉæèN®·éD
+ *  'A' : ÎÛ^XNÉÎ·éN®vðcan_actÉæèLZ·éD
+ *  'e' : ÎÛ^XNÉext_tskðÄÑo³¹CI¹³¹éD
+ *  't' : ÎÛ^XNðter_tskÉæè­§I¹·éD
+ *  '>' : ÎÛ^XNÌDæxðHIGH_PRIORITYÉ·éD
+ *  '=' : ÎÛ^XNÌDæxðMID_PRIORITYÉ·éD
+ *  '<' : ÎÛ^XNÌDæxðLOW_PRIORITYÉ·éD
+ *  'G' : ÎÛ^XNÌDæxðget_priÅÇÝo·D
+ *  's' : ÎÛ^XNÉslp_tskðÄÑo³¹CN°Ò¿É³¹éD
+ *  'S' : ÎÛ^XNÉtslp_tsk(10b)ðÄÑo³¹CN°Ò¿É³¹éD
+ *  'w' : ÎÛ^XNðwup_tskÉæèN°·éD
+ *  'W' : ÎÛ^XNÉÎ·éN°vðcan_wupÉæèLZ·éD
+ *  'l' : ÎÛ^XNðrel_waiÉæè­§IÉÒ¿ðÉ·éD
+ *  'u' : ÎÛ^XNðsus_tskÉæè­§Ò¿óÔÉ·éD
+ *  'm' : ÎÛ^XNÌ­§Ò¿óÔðrsm_tskÉæèð·éD
+ *  'd' : ÎÛ^XNÉdly_tsk(10b)ðÄÑo³¹CÔoßÒ¿É³¹éD
+ *  'x' : ÎÛ^XNÉáOp^[0x0001ÌáOðv·éD
+ *  'X' : ÎÛ^XNÉáOp^[0x0002ÌáOðv·éD
+ *  'y' : ÎÛ^XNÉdis_texðÄÑo³¹C^XNáOðÖ~·éD
+ *  'Y' : ÎÛ^XNÉena_texðÄÑo³¹C^XNáOðÂ·éD
+ *  'r' : 3ÂÌDæxiHIGH_PRIORITYCMID_PRIORITYCLOW_PRIORITYjÌ
+ *        fBL
+[ðñ]³¹éD
+ *  'c' : üúnhð®ìJn³¹éD
+ *  'C' : üúnhð®ìâ~³¹éD
+ *  'b' : A[nhð5bãÉN®·éæ¤®ìJn³¹éD
+ *  'B' : A[nhð®ìâ~³¹éD
+ *  'z' : ÎÛ^XNÉCPUáOð­¶³¹éi^XNðI¹³¹éjD
+ *  'Z' : ÎÛ^XNÉCPUbNóÔÅCPUáOð­¶³¹éivOð
+ *        I¹·éjD
+ *  'V' : get_utmÅ«\]¿pVXeð2ñÇÞD
+ *  'v' : ­sµ½VXeR[ð\¦·éiftHgjD
+ *  'q' : ­sµ½VXeR[ð\¦µÈ¢D
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include <t_stdlib.h>
+#include "syssvc/serial.h"
+#include "syssvc/syslog.h"
+#include "kernel_cfg.h"
+#include "sample1.h"
+
+/*
+ *  T[rXR[ÌG[ÌOoÍ
+ */
+Inline void
+svc_perror(const char *file, int_t line, const char *expr, ER ercd)
+{
+	if (ercd < 0) {
+		t_perror(LOG_ERROR, file, line, expr, ercd);
+	}
+}
+
+#define	SVC_PERROR(expr)	svc_perror(__FILE__, __LINE__, #expr, (expr))
+
+/*
+ *  ÀsÀs³êé^XNÖÌbZ[WÌæ
+ */
+char_t	message[3];
+
+/*
+ *  [vñ
+ */
+ulong_t	task_loop;		/* ^XNàÅÌ[vñ */
+ulong_t	tex_loop;		/* áO[`àÅÌ[vñ */
+
+/*
+ *  ÀsÀs³êé^XN
+ */
+void task(intptr_t exinf)
+{
+	volatile ulong_t	i;
+	int_t		n = 0;
+	int_t		tskno = (int_t) exinf;
+	const char	*graph[] = { "|", "  +", "    *" };
+	char_t		c;
+
+	SVC_PERROR(ena_tex());
+	while (1) {
+		syslog(LOG_NOTICE, "task%d is running (%03d).   %s",
+										tskno, ++n, graph[tskno-1]);
+		for (i = 0; i < task_loop; i++);
+		c = message[tskno-1];
+		message[tskno-1] = 0;
+		switch (c) {
+		case 'e':
+			syslog(LOG_INFO, "#%d#ext_tsk()", tskno);
+			SVC_PERROR(ext_tsk());
+			assert(0);
+		case 's':
+			syslog(LOG_INFO, "#%d#slp_tsk()", tskno);
+			SVC_PERROR(slp_tsk());
+			break;
+		case 'S':
+			syslog(LOG_INFO, "#%d#tslp_tsk(10000)", tskno);
+			SVC_PERROR(tslp_tsk(10000));
+			break;
+		case 'd':
+			syslog(LOG_INFO, "#%d#dly_tsk(10000)", tskno);
+			SVC_PERROR(dly_tsk(10000));
+			break;
+		case 'y':
+			syslog(LOG_INFO, "#%d#dis_tex()", tskno);
+			SVC_PERROR(dis_tex());
+			break;
+		case 'Y':
+			syslog(LOG_INFO, "#%d#ena_tex()", tskno);
+			SVC_PERROR(ena_tex());
+			break;
+#ifdef CPUEXC1
+		case 'z':
+			syslog(LOG_NOTICE, "#%d#raise CPU exception", tskno);
+			RAISE_CPU_EXCEPTION;
+			break;
+		case 'Z':
+			SVC_PERROR(loc_cpu());
+			syslog(LOG_NOTICE, "#%d#raise CPU exception", tskno);
+			RAISE_CPU_EXCEPTION;
+			SVC_PERROR(unl_cpu());
+			break;
+#endif /* CPUEXC1 */
+		default:
+			break;
+		}
+	}
+}
+
+/*
+ *  ÀsµÄÀs³êé^XNpÌ^XNáO[`
+ */
+void tex_routine(TEXPTN texptn, intptr_t exinf)
+{
+	volatile ulong_t	i;
+	int_t	tskno = (int_t) exinf;
+
+	syslog(LOG_NOTICE, "task%d receives exception 0x%04x.", tskno, texptn);
+	for (i = 0; i < tex_loop; i++);
+
+	if ((texptn & 0x8000U) != 0U) {
+		syslog(LOG_INFO, "#%d#ext_tsk()", tskno);
+		SVC_PERROR(ext_tsk());
+		assert(0);
+	}
+}
+
+/*
+ *  CPUáOnh
+ */
+#ifdef CPUEXC1
+
+void
+cpuexc_handler(void *p_excinf)
+{
+	ID		tskid;
+
+	syslog(LOG_NOTICE, "CPU exception handler (p_excinf = %08p).", p_excinf);
+	if (sns_ctx() != true) {
+		syslog(LOG_WARNING,
+					"sns_ctx() is not true in CPU exception handler.");
+	}
+	if (sns_dpn() != true) {
+		syslog(LOG_WARNING,
+					"sns_dpn() is not true in CPU exception handler.");
+	}
+	syslog(LOG_INFO, "sns_loc = %d sns_dsp = %d sns_tex = %d",
+									sns_loc(), sns_dsp(), sns_tex());
+	syslog(LOG_INFO, "xsns_dpn = %d xsns_xpn = %d",
+									xsns_dpn(p_excinf), xsns_xpn(p_excinf));
+
+	if (xsns_xpn(p_excinf)) {
+		syslog(LOG_NOTICE, "Sample program ends with exception.");
+		SVC_PERROR(ext_ker());
+		assert(0);
+	}
+
+	SVC_PERROR(iget_tid(&tskid));
+	SVC_PERROR(iras_tex(tskid, 0x8000U));
+}
+
+#endif /* CPUEXC1 */
+
+/*
+ *  üúnh
+ *
+ *  HIGH_PRIORITYCMID_PRIORITYCLOW_PRIORITY ÌeDæxÌfBL
+[
+ *  ðñ]³¹éD
+ */
+void cyclic_handler(intptr_t exinf)
+{
+	SVC_PERROR(irot_rdq(HIGH_PRIORITY));
+	SVC_PERROR(irot_rdq(MID_PRIORITY));
+	SVC_PERROR(irot_rdq(LOW_PRIORITY));
+}
+
+/*
+ *  A[nh
+ *
+ *  HIGH_PRIORITYCMID_PRIORITYCLOW_PRIORITY ÌeDæxÌfBL
+[
+ *  ðñ]³¹éD
+ */
+void alarm_handler(intptr_t exinf)
+{
+	SVC_PERROR(irot_rdq(HIGH_PRIORITY));
+	SVC_PERROR(irot_rdq(MID_PRIORITY));
+	SVC_PERROR(irot_rdq(LOW_PRIORITY));
+}
+
+/*
+ *  C^XN
+ */
+void main_task(intptr_t exinf)
+{
+	char_t	c;
+	ID		tskid = TASK1;
+	int_t	tskno = 1;
+	ER_UINT	ercd;
+	PRI		tskpri;
+#ifndef TASK_LOOP
+	volatile ulong_t	i;
+	SYSTIM	stime1, stime2;
+#endif /* TASK_LOOP */
+#ifdef TOPPERS_SUPPORT_GET_UTM
+	SYSUTM	utime1, utime2;
+#endif /* TOPPERS_SUPPORT_GET_UTM */
+
+	SVC_PERROR(syslog_msk_log(LOG_UPTO(LOG_INFO), LOG_UPTO(LOG_EMERG)));
+	syslog(LOG_NOTICE, "Sample program starts (exinf = %d).", (int_t) exinf);
+
+	/*
+	 *  VA|[gÌú»
+	 *
+	 *  VXeO^XNÆ¯¶VA|[gðg¤êÈÇCVA
+	 *  |[gªI[vÏÝÌêÉÍ±±ÅE_OBJG[ÉÈéªCxáÍ
+	 *  È¢D
+	 */
+	ercd = serial_opn_por(TASK_PORTID);
+	if (ercd < 0 && MERCD(ercd) != E_OBJ) {
+		syslog(LOG_ERROR, "%s (%d) reported by `serial_opn_por'.",
+									itron_strerror(ercd), SERCD(ercd));
+	}
+	SVC_PERROR(serial_ctl_por(TASK_PORTID,
+							(IOCTL_CRLF | IOCTL_FCSND | IOCTL_FCRCV)));
+
+	/*
+ 	 *  [vñÌÝè
+	 *
+	 *  TASK_LOOPª}Nè`³êÄ¢éêCªè¹¸ÉCTASK_LOOPÉè
+	 *  `³ê½lðC^XNàÅÌ[vñÆ·éD
+	 *
+	 *  MEASURE_TWICEª}Nè`³êÄ¢éêC1ñÚÌªèÊðÌÄ
+	 *  ÄC2ñÚÌªèÊðg¤D1ñÚÌªèÍ·ßÌÔªoé½ßD
+	 */
+#ifdef TASK_LOOP
+	task_loop = TASK_LOOP;
+#else /* TASK_LOOP */
+
+#ifdef MEASURE_TWICE
+	task_loop = LOOP_REF;
+	SVC_PERROR(get_tim(&stime1));
+	for (i = 0; i < task_loop; i++);
+	SVC_PERROR(get_tim(&stime2));
+#endif /* MEASURE_TWICE */
+
+	task_loop = LOOP_REF;
+	SVC_PERROR(get_tim(&stime1));
+	for (i = 0; i < task_loop; i++);
+	SVC_PERROR(get_tim(&stime2));
+	task_loop = LOOP_REF * 400UL / (stime2 - stime1);
+
+#endif /* TASK_LOOP */
+	tex_loop = task_loop / 5;
+
+	/*
+ 	 *  ^XNÌN®
+	 */
+	SVC_PERROR(act_tsk(TASK1));
+	SVC_PERROR(act_tsk(TASK2));
+	SVC_PERROR(act_tsk(TASK3));
+
+	/*
+ 	 *  C[v
+	 */
+	do {
+		SVC_PERROR(serial_rea_dat(TASK_PORTID, &c, 1));
+		switch (c) {
+		case 'e':
+		case 's':
+		case 'S':
+		case 'd':
+		case 'y':
+		case 'Y':
+		case 'z':
+		case 'Z':
+			message[tskno-1] = c;
+			break;
+		case '1':
+			tskno = 1;
+			tskid = TASK1;
+			break;
+		case '2':
+			tskno = 2;
+			tskid = TASK2;
+			break;
+		case '3':
+			tskno = 3;
+			tskid = TASK3;
+			break;
+		case 'a':
+			syslog(LOG_INFO, "#act_tsk(%d)", tskno);
+			SVC_PERROR(act_tsk(tskid));
+			break;
+		case 'A':
+			syslog(LOG_INFO, "#can_act(%d)", tskno);
+			SVC_PERROR(ercd = can_act(tskid));
+			if (ercd >= 0) {
+				syslog(LOG_NOTICE, "can_act(%d) returns %d", tskno, ercd);
+			}
+			break;
+		case 't':
+			syslog(LOG_INFO, "#ter_tsk(%d)", tskno);
+			SVC_PERROR(ter_tsk(tskid));
+			break;
+		case '>':
+			syslog(LOG_INFO, "#chg_pri(%d, HIGH_PRIORITY)", tskno);
+			SVC_PERROR(chg_pri(tskid, HIGH_PRIORITY));
+			break;
+		case '=':
+			syslog(LOG_INFO, "#chg_pri(%d, MID_PRIORITY)", tskno);
+			SVC_PERROR(chg_pri(tskid, MID_PRIORITY));
+			break;
+		case '<':
+			syslog(LOG_INFO, "#chg_pri(%d, LOW_PRIORITY)", tskno);
+			SVC_PERROR(chg_pri(tskid, LOW_PRIORITY));
+			break;
+		case 'G':
+			syslog(LOG_INFO, "#get_pri(%d, &tskpri)", tskno);
+			SVC_PERROR(ercd = get_pri(tskid, &tskpri));
+			if (ercd >= 0) {
+				syslog(LOG_NOTICE, "priority of task %d is %d", tskno, tskpri);
+			}
+			break;
+		case 'w':
+			syslog(LOG_INFO, "#wup_tsk(%d)", tskno);
+			SVC_PERROR(wup_tsk(tskid));
+			break;
+		case 'W':
+			syslog(LOG_INFO, "#can_wup(%d)", tskno);
+			SVC_PERROR(ercd = can_wup(tskid));
+			if (ercd >= 0) {
+				syslog(LOG_NOTICE, "can_wup(%d) returns %d", tskno, ercd);
+			}
+			break;
+		case 'l':
+			syslog(LOG_INFO, "#rel_wai(%d)", tskno);
+			SVC_PERROR(rel_wai(tskid));
+			break;
+		case 'u':
+			syslog(LOG_INFO, "#sus_tsk(%d)", tskno);
+			SVC_PERROR(sus_tsk(tskid));
+			break;
+		case 'm':
+			syslog(LOG_INFO, "#rsm_tsk(%d)", tskno);
+			SVC_PERROR(rsm_tsk(tskid));
+			break;
+		case 'x':
+			syslog(LOG_INFO, "#ras_tex(%d, 0x0001U)", tskno);
+			SVC_PERROR(ras_tex(tskid, 0x0001U));
+			break;
+		case 'X':
+			syslog(LOG_INFO, "#ras_tex(%d, 0x0002U)", tskno);
+			SVC_PERROR(ras_tex(tskid, 0x0002U));
+			break;
+		case 'r':
+			syslog(LOG_INFO, "#rot_rdq(three priorities)");
+			SVC_PERROR(rot_rdq(HIGH_PRIORITY));
+			SVC_PERROR(rot_rdq(MID_PRIORITY));
+			SVC_PERROR(rot_rdq(LOW_PRIORITY));
+			break;
+		case 'c':
+			syslog(LOG_INFO, "#sta_cyc(1)");
+			SVC_PERROR(sta_cyc(CYCHDR1));
+			break;
+		case 'C':
+			syslog(LOG_INFO, "#stp_cyc(1)");
+			SVC_PERROR(stp_cyc(CYCHDR1));
+			break;
+		case 'b':
+			syslog(LOG_INFO, "#sta_alm(1, 5000)");
+			SVC_PERROR(sta_alm(ALMHDR1, 5000));
+			break;
+		case 'B':
+			syslog(LOG_INFO, "#stp_alm(1)");
+			SVC_PERROR(stp_alm(ALMHDR1));
+			break;
+
+		case 'V':
+#ifdef TOPPERS_SUPPORT_GET_UTM
+			SVC_PERROR(get_utm(&utime1));
+			SVC_PERROR(get_utm(&utime2));
+			syslog(LOG_NOTICE, "utime1 = %ld, utime2 = %ld",
+										(ulong_t) utime1, (ulong_t) utime2);
+#else /* TOPPERS_SUPPORT_GET_UTM */
+			syslog(LOG_NOTICE, "get_utm is not supported.");
+#endif /* TOPPERS_SUPPORT_GET_UTM */
+			break;
+
+		case 'v':
+			SVC_PERROR(syslog_msk_log(LOG_UPTO(LOG_INFO),
+										LOG_UPTO(LOG_EMERG)));
+			break;
+		case 'q':
+			SVC_PERROR(syslog_msk_log(LOG_UPTO(LOG_NOTICE),
+										LOG_UPTO(LOG_EMERG)));
+			break;
+
+#ifdef BIT_KERNEL
+		case ' ':
+			SVC_PERROR(loc_cpu());
+			{
+				extern ER	bit_kernel(void);
+
+				SVC_PERROR(ercd = bit_kernel());
+				if (ercd >= 0) {
+					syslog(LOG_NOTICE, "bit_kernel passed.");
+				}
+			}
+			SVC_PERROR(unl_cpu());
+			break;
+#endif /* BIT_KERNEL */
+
+		default:
+			break;
+		}
+	} while (c != '\003' && c != 'Q');
+
+	syslog(LOG_NOTICE, "Sample program ends.");
+	SVC_PERROR(ext_ker());
+	assert(0);
+}
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/src/sample1.cfg
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/src/sample1.cfg	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/src/sample1.cfg	(revision 61)
@@ -0,0 +1,27 @@
+/*
+ *  @(#) $Id: sample1.cfg 718 2008-01-01 12:30:48Z hiro $
+ */
+
+/*
+ *  TvvO(1)ÌVXeRtBM
+[Vt@C
+ */
+INCLUDE("target_timer.cfg");
+INCLUDE("syssvc/syslog.cfg");
+INCLUDE("syssvc/banner.cfg");
+INCLUDE("syssvc/serial.cfg");
+INCLUDE("syssvc/logtask.cfg");
+
+#include "sample1.h"
+CRE_TSK(TASK1, { TA_NULL, 1, task, MID_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK2, { TA_NULL, 2, task, MID_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK3, { TA_NULL, 3, task, MID_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(MAIN_TASK, { TA_ACT, 0, main_task, MAIN_PRIORITY, STACK_SIZE, NULL });
+DEF_TEX(TASK1, { TA_NULL, tex_routine });
+DEF_TEX(TASK2, { TA_NULL, tex_routine });
+DEF_TEX(TASK3, { TA_NULL, tex_routine });
+CRE_CYC(CYCHDR1, { TA_NULL, 0, cyclic_handler, 2000, 0 });
+CRE_ALM(ALMHDR1, { TA_NULL, 0, alarm_handler });
+#ifdef CPUEXC1
+DEF_EXC(CPUEXC1, { TA_NULL, cpuexc_handler });
+#endif /* CPUEXC1 */
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/src/sample1.h
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/src/sample1.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/sample_workspace/src/sample1.h	(revision 61)
@@ -0,0 +1,97 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ *
+ *  @(#) $Id: sample1.h 1716 2010-01-31 11:39:18Z ertl-hiro $
+ */
+
+/*
+ *		TvvO(1)Ìwb_t@C
+ */
+
+/*
+ *  ^[QbgË¶Ìè`
+ */
+#include "target_test.h"
+
+/*
+ *  e^XNÌDæxÌè`
+ */
+
+#define MAIN_PRIORITY	5		/* C^XNÌDæx */
+								/* HIGH_PRIORITYæè­·é±Æ */
+
+#define HIGH_PRIORITY	9		/* ÀñÉÀs³êé^XNÌDæx */
+#define MID_PRIORITY	10
+#define LOW_PRIORITY	11
+
+/*
+ *  ^[QbgÉË¶·éÂ\«Ì éèÌè`
+ */
+
+#ifndef TASK_PORTID
+#define	TASK_PORTID		1			/* ¶üÍ·éVA|[gID */
+#endif /* TASK_PORTID */
+
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ^XNÌX^bNTCY */
+#endif /* STACK_SIZE */
+
+#ifndef LOOP_REF
+#define LOOP_REF		ULONG_C(1000000)	/* ¬xvªpÌ[vñ */
+#endif /* LOOP_REF */
+
+/*
+ *  ÖÌvg^Cvé¾
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+extern void	task(intptr_t exinf);
+extern void	main_task(intptr_t exinf);
+extern void	tex_routine(TEXPTN texptn, intptr_t exinf);
+#ifdef CPUEXC1
+extern void	cpuexc_handler(void *p_excinf);
+#endif /* CPUEXC1 */
+extern void	cyclic_handler(intptr_t exinf);
+extern void	alarm_handler(intptr_t exinf);
+
+#endif /* TOPPERS_MACRO_ONLY */
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target.tf
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target.tf	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target.tf	(revision 61)
@@ -0,0 +1,8 @@
+$ 
+$     pX2Ì^[QbgË¶ev[giFS K70pj
+$ 
+
+$ 
+$  vZbTË¶Ìev[gt@CÌCN[h
+$ 
+$INCLUDE"arm_m_iccarm/prc.tf"$
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_cfg1_out.h
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_cfg1_out.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_cfg1_out.h	(revision 61)
@@ -0,0 +1,11 @@
+/*
+ *		cfg1_out.cðN·é½ßÉKvÈX^uÌè`
+ */
+
+/*
+ *  RAË¶ÌX^uÌè` 
+ */
+
+STK_T *const	_kernel_istkpt = 0x00;
+
+#include "arm_m_iccarm/prc_cfg1_out.h"
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_check.tf
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_check.tf	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_check.tf	(revision 61)
@@ -0,0 +1,8 @@
+$ 
+$     pX3Ì^[QbgË¶ev[giFS K70pj
+$ 
+
+$ 
+$  pX3ÌvZbTË¶Ìev[gÌCN[h
+$ 
+$INCLUDE"arm_m_iccarm/prc_check.tf"$
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_config.c
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_config.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_config.c	(revision 61)
@@ -0,0 +1,147 @@
+/*
+ *  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-2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ * ^[QbgË¶W
+[iFS K70pj
+ */
+#include "kernel_impl.h"
+#include <sil.h>
+#include "fs_k70f120m.h"
+#include "target_serial.h"
+#include "target_syssvc.h"
+
+STK_T _target_istk[DEFAULT_ISTKSZ];
+
+
+/*
+ * ^[QbgË¶@ú»
+ */
+void target_initialize(void)
+{
+	/*
+	 *  vZbTNbNÌú»
+	 */
+	if ((sil_reb_mem( (void*)PMC_REGSC ) & 0x8) == 0)
+		sil_orb( (void*)PMC_REGSC, 0x8 );
+
+	sil_wrw_mem( (void*)SIM_CLKDIV1, 0x01250000);
+
+	sil_wrb_mem( (void*)MCG_C2, ((sil_reb_mem( (void*)MCG_C2 ) & ~0x3C) | 0x10) );
+	sil_wrb_mem( (void*)MCG_C1, ((sil_reb_mem( (void*)MCG_C1 ) & ~0xFC) | 0x80 | 0x28) );
+	while ( ( sil_reb_mem( (void*)MCG_S ) & 0x10 ) == 0 ) ;
+	while ((( sil_reb_mem( (void*)MCG_S ) & 0x0C ) >> 2 ) != 0x2 ) ;
+
+	sil_orb( (void*)MCG_C6, 0x20 );
+	sil_andb( (void*)MCG_C5, ~0x80 );
+	sil_andb( (void*)MCG_C11, ~0x10 );
+
+	sil_wrb_mem( (void*)MCG_C5, ((sil_reb_mem( (void*)MCG_C5 ) & ~0x07) | (0x05 - 1)) );
+	sil_wrb_mem( (void*)MCG_C6, ((sil_reb_mem( (void*)MCG_C6 ) & ~0x1F) | (0x40 | (0x18 - 16))) );
+	while ( ( sil_reb_mem( (void*)MCG_S ) & 0x20 ) == 0 ) ;
+	while ( ( sil_reb_mem( (void*)MCG_S ) & 0x40 ) == 0 ) ;
+
+	sil_andb( (void*)MCG_C1, ~0xC0 );
+	while ( (( sil_reb_mem( (void*)MCG_S ) & 0x0C ) >> 2) != 0x03 ) ;
+
+	sil_andb( (void*)MCG_C11, ~0x80 );
+	sil_wrb_mem( (void*)MCG_C11, ((sil_reb_mem( (void*)MCG_C11 ) & ~0x07) | (0x05 - 1)) );
+	sil_wrb_mem( (void*)MCG_C12, ((sil_reb_mem( (void*)MCG_C12 ) & ~0x1F) | (0x1E - 16)) );
+
+	sil_orb( (void*)MCG_C11, 0x40 );
+	while ( ( sil_reb_mem( (void*)MCG_S2 ) & 0x40 ) == 0 ) ;
+
+	/*
+	 *  vZbTË¶Ìú»
+	 */
+	core_initialize();
+
+	/* LED|[g */
+	sil_orw( (void*)SIM_SCGC5, 0x00047F80 );
+	sil_wrw_mem( (void*)PORTA_PCR10, 0x00000100 );
+	sil_wrw_mem( (void*)PORTA_PCR11, 0x00000100 );
+	sil_wrw_mem( (void*)PORTA_PCR28, 0x00000100 );
+	sil_wrw_mem( (void*)PORTA_PCR29, 0x00000100 );
+	sil_orw( (void*)GPIOA_PDDR, 0x30000C00 );
+
+	/*
+	 *  I/O|[gÌú»
+	 */
+	/* USART2*/
+	sil_wrw_mem( (void*)PORTE_PCR16, 0x00000300 );
+	sil_wrw_mem( (void*)PORTE_PCR17, 0x00000300 );
+	/* USART2 clock enable */
+	sil_orw( (void*)SIM_SCGC4, 0x00001000 );
+
+	/*
+	 *  o[i[oÍpÌVAú»
+	 */
+	target_uart_init(SIO_PORTID);
+}
+
+/*
+ * ^[QbgË¶@I¹
+ */
+void target_exit(void)
+{
+	/* vZbTË¶ÌI¹ */
+	core_terminate();
+
+	/*
+	 *  J­Â«Ë¶ÌI¹
+	 */
+	while(1);
+}
+
+/*
+ * VXeOÌáxoÍÌ½ßÌ¶oÍ
+ */
+void target_fput_log(char_t c)
+{
+	if (c == '\n') {
+		sio_pol_snd_chr('\r', SIO_PORTID);
+	}
+	sio_pol_snd_chr(c, SIO_PORTID);
+}
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_config.h
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_config.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_config.h	(revision 61)
@@ -0,0 +1,108 @@
+/*
+ *  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-2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+#ifndef TOPPERS_TARGET_CONFIG_H
+#define TOPPERS_TARGET_CONFIG_H
+
+/*
+ * ^[QbgË¶W
+[iFS K70pj
+ *
+ * J[lÌ^[QbgË¶ÌCN[ht@CDkernel_impl.hÌ^[
+ * QbgË¶ÌÊut¯ÆÈ·D
+ */
+
+/*
+ * ^[QbgVXeÌn[hEFA¹Ìè`
+ */
+#include "fs_k70f120m.h"
+
+
+/*
+ *  g[XOÉÖ·éÝè
+ */
+#ifdef TOPPERS_ENABLE_TRACE
+#include "logtrace/trace_config.h"
+#endif /* TOPPERS_ENABLE_TRACE */
+
+/*
+ *  ftHgÌñ^XNReLXgpÌX^bNÌæÌè`
+ *  8bytePÊÅæ¾³êéD 
+ */
+#define DEFAULT_ISTKSZ			(0x400/8U)		/* 1KByte */
+#define DEFAULT_ISTK			_target_istk
+
+/*
+ *  ÷­ÔÒ¿Ì½ßÌè`i{ÍSILÌ^[QbgË¶j
+ */
+#define SIL_DLY_TIM1    162
+#define SIL_DLY_TIM2    100
+
+
+#ifndef TOPPERS_MACRO_ONLY
+
+extern STK_T _target_istk[];
+
+/*
+ *  ^[QbgVXeË¶Ìú»
+ */
+extern void	target_initialize(void);
+
+/*
+ *  ^[QbgVXeÌI¹
+ *
+ *  VXeðI¹·éÉg¤D
+ */
+extern NoReturn void	target_exit(void);
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  `bvË¶W
+[iARM-Mpj
+ */
+#include "arm_m_iccarm/prc_config.h"
+
+#endif /* TOPPERS_TARGET_CONFIG_H */
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_kernel.h
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_kernel.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_kernel.h	(revision 61)
@@ -0,0 +1,74 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *  kernel.hÌ^[QbgË¶iFS K70pj
+ *
+ *  ±ÌCN[ht@CÍCkernel.hÅCN[h³êéD¼Ìt@
+ *  C©ç¼ÚCN[h·é±ÆÍÈ¢D±Ìt@CðCN[h
+ *  ·éOÉCt_stddef.hªCN[h³êéÌÅC»êçÉË¶µÄàæ
+ *  ¢D
+ */
+
+#ifndef TOPPERS_TARGET_KERNEL_H
+#define TOPPERS_TARGET_KERNEL_H
+
+#define TMIN_INTPRI		(-15)		/* ÝDæxÌÅ¬liÅlj*/
+
+/*
+ *  T|[g·é@\Ìè`
+ */
+#define TOPPERS_TARGET_SUPPORT_GET_UTM		/* get_utmðT|[g·é */
+
+/*
+ *  ^CeBbNÌè`
+ */
+#define TIC_NUME			1U		/* ^CeBbNÌüúÌªq */
+#define TIC_DENO			1U		/* ^CeBbNÌüúÌªê */
+
+/*
+ *  vZbTÅ¤ÊÈè`
+ */
+#include "arm_m_iccarm/prc_kernel.h"
+
+#endif /* TOPPERS_TARGET_KERNEL_H */
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_offset.tf
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_offset.tf	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_offset.tf	(revision 61)
@@ -0,0 +1,13 @@
+$
+$       ItZbgt@C¶¬pev[gt@CiFS K70pj
+$
+
+$
+$  Wev[gt@CÌCN[h
+$
+$INCLUDE "kernel/genoffset.tf"$
+
+$ 
+$  RAË¶ev[gÌCN[hiARM-Mpj
+$ 
+$INCLUDE"../../arch/arm_m_iccarm/prc_offset.tf"$
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_ram.icf
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_ram.icf	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_ram.icf	(revision 61)
@@ -0,0 +1,41 @@
+/*###ICF### Section handled by ICF editor, don't touch! ****/
+/*-Editor annotation file-*/
+/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */
+/*-Specials-*/
+define symbol __ICFEDIT_intvec_start__ = 0x1fff0000;
+/*-Memory Regions-*/
+define symbol __ICFEDIT_region_ROM_start__ = 0x00000000;
+define symbol __ICFEDIT_region_ROM_end__   = 0x00000000;
+define symbol __ICFEDIT_region_RAM_start__ = 0x1fff0000;
+define symbol __ICFEDIT_region_RAM_end__   = 0x1fffffff;
+/*-Sizes-*/
+define symbol __ICFEDIT_size_cstack__ = 0x10;
+define symbol __ICFEDIT_size_heap__   = 0x00; //b06862
+/**** End of ICF editor section. ###ICF###*/
+
+define exported symbol __VECTOR_TABLE = 0x1fff0000;
+define exported symbol __VECTOR_RAM = 0x1fff0000;
+
+
+define symbol __code_start__ = 0x1fff0410;
+
+define symbol __FlashConfig_start__	= 0x00000400;
+define symbol __FlashConfig_end__  	= 0x0000040f;
+
+define memory mem with size = 4G;
+define region ROM_region   = mem:[from __ICFEDIT_region_ROM_start__   to __ICFEDIT_region_ROM_end__];
+define region RAM_region   = mem:[from __ICFEDIT_region_RAM_start__   to __ICFEDIT_region_RAM_end__];
+
+define block CSTACK    with alignment = 8, size = __ICFEDIT_size_cstack__   { };
+define block HEAP      with alignment = 8, size = __ICFEDIT_size_heap__     { };
+
+define region FlashConfig_region = mem:[from __FlashConfig_start__ to __FlashConfig_end__];
+
+initialize by copy { readwrite };
+do not initialize  { section .noinit };
+
+place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
+place at address mem:__code_start__ { readonly section .noinit };
+
+place in RAM_region   { readonly };
+place in RAM_region   { readwrite, block CSTACK, block HEAP };
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_rename.def
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_rename.def	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_rename.def	(revision 61)
@@ -0,0 +1,5 @@
+INCLUDE	"arm_m_iccarm/prc"
+
+#target_config.c
+target_initialize
+target_exit
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_rename.h
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_rename.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_rename.h	(revision 61)
@@ -0,0 +1,26 @@
+/* This file is generated from target_rename.def by genrename. */
+
+#ifndef TOPPERS_TARGET_RENAME_H
+#define TOPPERS_TARGET_RENAME_H
+
+
+/*
+ * target_config.c
+ */
+#define target_initialize			_kernel_target_initialize
+#define target_exit					_kernel_target_exit
+
+#ifdef TOPPERS_LABEL_ASM
+
+
+/*
+ * target_config.c
+ */
+#define _target_initialize			__kernel_target_initialize
+#define _target_exit				__kernel_target_exit
+
+#endif /* TOPPERS_LABEL_ASM */
+
+#include "arm_m_iccarm/prc_rename.h"
+
+#endif /* TOPPERS_TARGET_RENAME_H */
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_serial.c
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_serial.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_serial.c	(revision 61)
@@ -0,0 +1,285 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ * VAhCoiFS K70pj
+ */
+
+#include <kernel.h>
+#include <sil.h>
+#include "target_serial.h"
+#include "target_syssvc.h"
+
+/*
+ * WX^Ýèl
+ */
+#define PORT2SIOPID(x)	((x) + 1)
+#define INDEX_PORT(x)	((x) - 1)
+#define GET_SIOPCB(x)	(&siopcb_table[INDEX_PORT(x)])
+
+/*
+ * UARTWX^è`
+ */
+#define UART_BDH(x)		(x)
+#define UART_BDL(x)		(x + 0x01)
+#define UART_C1(x)		(x + 0x02)
+#define UART_C2(x)		(x + 0x03)
+#define UART_S1(x)		(x + 0x04)
+#define UART_C3(x)		(x + 0x06)
+#define UART_D(x)		(x + 0x07)
+#define UART_C4(x)		(x + 0x0A)
+
+#define S1_TDRE			(0x80)
+#define S1_TC			(0x40)
+#define S1_RDRF			(0x20)
+#define S1_OR			(0x08)
+#define S1_FE			(0x02)
+#define S1_PE			(0x01)
+#define C2_TIE			(0x80)
+#define C2_TCIE			(0x40)
+#define C2_RIE			(0x20)
+#define C2_TE			(0x08)
+#define C2_RE			(0x04)
+#define C3_ORIE			(0x08)
+#define C3_NEIE			(0x04)
+#define C3_FEIE			(0x02)
+#define C3_PEIE			(0x01)
+
+/*
+ * VAI/O|[gÇubNGA
+ */
+SIOPCB siopcb_table[TNUM_PORT];
+
+static const uint32_t sioreg_table[TNUM_PORT] = {
+	UART2_BASE,
+};
+
+#pragma inline
+bool_t  sio_putready(SIOPCB* siopcb)
+{
+	return (sil_reb_mem((void*)UART_S1(siopcb->reg)) & S1_TC) != 0;
+}
+
+#pragma inline
+bool_t sio_getready(SIOPCB* siopcb)
+{
+	return (sil_reb_mem((void*)UART_S1(siopcb->reg)) & S1_RDRF) != 0;
+}
+
+/*
+ *  ^[QbgÌVAú»
+ */
+void target_uart_init(ID siopid)
+{
+	uint32_t tmp, brfa;
+	uint32_t reg = sioreg_table[INDEX_PORT(siopid)];
+	uint32_t src_clock;
+
+	/* UARTÌ³ø» */
+	sil_andb((void*)UART_C2(reg), ~(C2_TE|C2_RE));
+
+	/* 1STOP BIT, 1START BIT, 8DATA bits, ParityÈµ */
+	sil_wrb_mem((void*)UART_C1(reg), 0);
+
+	/* fck=60MHz */
+	src_clock = BUS_CLOCK;
+
+	tmp = src_clock / (BPS_SETTING * 16);
+	sil_wrb_mem( (void*)UART2_BDH, (sil_reb_mem( (void*)UART2_BDH ) & ~(0x1F)) | ((tmp & 0x1F00) >> 8) );
+	sil_wrb_mem( (void*)UART2_BDL, (char_t)(tmp & 0xFF) );
+
+	brfa = (((src_clock / 1000 * 32000) / (BPS_SETTING * 16)) - (tmp * 32) );
+	sil_wrb_mem( (void*)UART2_C4, (sil_reb_mem( (void*)UART2_C4 ) & ~(0x1F)) | (brfa & 0x1F) );
+
+	/* G[ÝÌLø» */
+	sil_orb((void*)UART_C3(reg), (C3_ORIE|C3_NEIE|C3_FEIE|C3_PEIE));
+
+	/* óMÌLø» */
+	sil_orb( (void*)UART2_C2, (C2_RIE|C2_TE|C2_RE) );
+}
+
+/*
+ *  ^[QbgÌVAI¹
+ */
+void target_uart_term(ID siopid)
+{
+	uint32_t reg = sioreg_table[INDEX_PORT(siopid)];
+
+	/* UARTÌ³ø» */
+	sil_andb((void*)UART_C2(reg), ~(C2_TE|C2_RE));
+}
+
+/*
+ *  SIOú»
+ */
+void sio_initialize(intptr_t exinf)
+{
+	int i;
+
+	for (i = 0; i < TNUM_PORT; i++) {
+		siopcb_table[i].port = i;
+		siopcb_table[i].reg = sioreg_table[i];
+		siopcb_table[i].exinf = 0;
+	}
+}
+
+/*
+ *  VAI[v
+ */
+SIOPCB *sio_opn_por(ID siopid, intptr_t exinf)
+{
+	SIOPCB* siopcb;
+
+	if (siopid > TNUM_PORT) {
+		return NULL;
+	}
+
+	siopcb = GET_SIOPCB(siopid);
+	siopcb->exinf = exinf;
+
+	target_uart_init(siopid);
+
+	return siopcb;
+}
+
+/*
+ *  VAN[Y
+ */
+void sio_cls_por(SIOPCB *p_siopcb)
+{
+	target_uart_term(PORT2SIOPID(p_siopcb->port));
+}
+
+/*
+ *  Ýnh
+ */
+void sio_isr(intptr_t exinf)
+{
+	SIOPCB* siopcb = GET_SIOPCB(exinf);
+
+	if (sio_putready(siopcb)) {
+		sio_irdy_snd(siopcb->exinf);
+	}
+	if (sio_getready(siopcb)) {
+		sio_irdy_rcv(siopcb->exinf);
+	}
+}
+
+/*
+ *  1¶M
+ */
+bool_t sio_snd_chr(SIOPCB *siopcb, char c)
+{
+	bool_t stat;
+
+	if (sio_putready(siopcb)) {
+		sil_wrb_mem((void*)UART_D(siopcb->reg), c);
+		stat = true;
+	}
+	else
+	{
+		stat = false;
+	}
+
+	return stat;
+}
+
+/*
+ *  1¶óM
+ */
+int_t sio_rcv_chr(SIOPCB *siopcb)
+{
+	int_t c = -1;
+
+	if (sio_getready(siopcb)) {
+		c = sil_reb_mem((void*)UART_D(siopcb->reg));
+	}
+
+	return c;
+}
+
+/*
+ *  R[obNÌÂ
+ */
+void sio_ena_cbr(SIOPCB *siopcb, uint_t cbrtn)
+{
+	switch (cbrtn) {
+	case SIO_RDY_SND:
+		sil_orb((void*)UART_C2(siopcb->reg), C2_TCIE);
+		break;
+	case SIO_RDY_RCV:
+		sil_orb((void*)UART_C2(siopcb->reg), C2_RIE);
+		break;
+	default:
+		break;
+	}
+}
+
+/* 
+ *  R[obNÌÖ~
+ */
+void sio_dis_cbr(SIOPCB *siopcb, uint_t cbrtn)
+{
+	switch (cbrtn) {
+	case SIO_RDY_SND:
+		sil_andb((void*)UART_C2(siopcb->reg), ~C2_TCIE);
+		break;
+	case SIO_RDY_RCV:
+		sil_andb((void*)UART_C2(siopcb->reg), ~C2_RIE);
+		break;
+	default:
+		break;
+	}
+}
+
+/*
+ *  1¶oÍi|[OÅÌoÍj
+ */
+void sio_pol_snd_chr(char_t c, ID siopid)
+{
+	uint32_t reg = sioreg_table[INDEX_PORT(siopid)];
+
+	sil_wrb_mem((void*)UART_D(reg), c);
+
+	while ((sil_reb_mem((void*)UART_S1(reg)) & S1_TC) == 0) ;
+}
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_serial.cfg
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_serial.cfg	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_serial.cfg	(revision 61)
@@ -0,0 +1,8 @@
+/*
+ *  SIOhCoiFS K70pjÌRtBO[Vt@C
+ */
+
+#include "target_serial.h"
+ATT_INI({ TA_NULL, 0, sio_initialize });
+ATT_ISR({ TA_NULL, SIO_PORTID, INTNO_SIO, sio_isr, 1 });
+CFG_INT(INTNO_SIO, { TA_ENAINT|INTATR_SIO, INTPRI_SIO });
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_serial.h
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_serial.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_serial.h	(revision 61)
@@ -0,0 +1,145 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *  VAI/OfoCXiSIOjhCoiFS K70pj
+ */
+
+#ifndef TOPPERS_TARGET_SERIAL_H
+#define TOPPERS_TARGET_SERIAL_H
+
+#include "fs_k70f120m.h"
+
+/*
+ *  SIOÌÝxN^Ô
+ */
+#define INHNO_SIO		IRQ_VECTOR_USART2
+#define INTNO_SIO		IRQ_VECTOR_USART2
+
+#define INTPRI_SIO		-3				/* ÝDæx */
+#define INTATR_SIO		0				/* Ý®« */
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  VA|[gÌÇubN
+ */
+typedef struct sio_port_control_block {
+	ID port;
+	uint32_t reg;
+	intptr_t exinf;
+} SIOPCB;
+
+/*
+ *  R[obN[`Ì¯ÊÔ
+ */
+#define SIO_RDY_SND    1U        /* MÂ\R[obN */
+#define SIO_RDY_RCV    2U        /* óMÊmR[obN */
+
+/*
+ *  gp·éVA|[gID
+ */
+#define SIO_PORTID		(1)
+
+/*
+ *  SIOú»
+ */
+extern void sio_initialize(intptr_t exinf);
+
+/*
+ *  VAI[v
+ */
+extern SIOPCB *sio_opn_por(ID siopid, intptr_t exinf);
+
+/*
+ *  VAN[Y
+ */
+extern void sio_cls_por(SIOPCB *p_siopcb);
+
+/*
+ *  Ýnh
+ */
+extern void sio_isr(intptr_t exinf);
+
+/*
+ *  1¶M
+ */
+extern bool_t sio_snd_chr(SIOPCB *siopcb, char c);
+
+/*
+ *  1¶óM
+ */
+extern int_t sio_rcv_chr(SIOPCB *siopcb);
+
+/*
+ *  R[obNÌÂ
+ */
+extern void sio_ena_cbr(SIOPCB *siopcb, uint_t cbrtn);
+
+/* 
+ *  R[obNÌÖ~
+ */
+extern void sio_dis_cbr(SIOPCB *siopcb, uint_t cbrtn);
+
+/*
+ *  MÂ\R[obN
+ */
+extern void sio_irdy_snd(intptr_t exinf);
+
+/*
+ *  óMÊmR[obN
+ */
+extern void sio_irdy_rcv(intptr_t exinf);
+
+/*
+ *  ^[QbgÌVAú»
+ */
+extern void target_uart_init(ID siopid);
+
+/*
+ *  1¶oÍi|[OÅÌoÍj
+ */
+extern void sio_pol_snd_chr(char_t c, ID siopid);
+
+#endif /* TOPPERS_MACRO_ONLY */
+#endif /* TOPPERS_TARGET_SERIAL_H */
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_sil.h
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_sil.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_sil.h	(revision 61)
@@ -0,0 +1,77 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *  sil.hÌ^[QbgË¶iARM-Mpj
+ *
+ *  ±ÌCN[ht@CÍCsil.hÌæªÅCN[h³êéD¼Ìt@
+ *  C©çÍ¼ÚCN[h·é±ÆÍÈ¢D±Ìt@CðCN[
+ *  h·éOÉCt_stddef.hªCN[h³êéÌÅC»êçÉË¶µÄà
+ *  æ¢D
+ */
+
+#ifndef TOPPERS_TARGET_SIL_H
+#define TOPPERS_TARGET_SIL_H
+
+/*
+ *  vZbTÌCfBAè`
+ *    STM32F10XÍgGfBA
+ */
+#define SIL_ENDIAN_LITTLE
+
+/*
+ *  vZbTÅ¤ÊÈè` 
+ */
+#include "arm_m_iccarm/prc_sil.h"
+
+/*
+ *  STM32F10XpêÊ¤ÊWX^ìÖ
+ */
+#define sil_orb( mem, val )		sil_wrb_mem( mem, sil_reb_mem( mem ) | val )
+#define sil_andb( mem, val )	sil_wrb_mem( mem, sil_reb_mem( mem ) & val )
+#define sil_orh( mem, val )		sil_wrh_mem( mem, sil_reh_mem( mem ) | val )
+#define sil_andh( mem, val )	sil_wrh_mem( mem, sil_reh_mem( mem ) & val )
+#define sil_orw( mem, val )		sil_wrw_mem( mem, sil_rew_mem( mem ) | val )
+#define sil_andw( mem, val )	sil_wrw_mem( mem, sil_rew_mem( mem ) & val )
+
+
+#endif /* TOPPERS_TARGET_SIL_H */
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_stddef.h
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_stddef.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_stddef.h	(revision 61)
@@ -0,0 +1,86 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *  t_stddef.hÌ^[QbgË¶iARM-Mpj
+ *
+ *  ±ÌCN[ht@CÍCt_stddef.hÌæªÅCN[h³êéD
+ *  ¼Ìt@C©çÍ¼ÚCN[h·é±ÆÍÈ¢D¼ÌCN[h
+ *  t@CÉæ§ÁÄ³êé½ßC¼ÌCN[ht@CÉË¶µ
+ *  ÄÍÈçÈ¢D
+ */
+
+#ifndef TOPPERS_TARGET_STDDEF_H
+#define TOPPERS_TARGET_STDDEF_H
+
+/*
+ *  ^[Qbgð¯Ê·é½ßÌ}NÌè`
+ */
+#define TOPPERS_FSK70			/* VXeªÌ */
+
+
+/*
+ *  J­Â«Å¤ÊÈè`
+ */
+#define TOPPERS_STDINT_TYPE1
+#define TOPPERS_STDFLOAT_TYPE1
+#include "iccarm/tool_stddef.h"
+
+/*
+ *  vZbTÅ¤ÊÈè`
+ */
+#include "arm_m_iccarm/prc_stddef.h"
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  AT[VÌ¸sÌÀsfiT.B.Dj
+ */
+#pragma inline
+void
+TOPPERS_assert_abort(void)
+{
+    while(1);
+}
+
+#endif /* TOPPERS_MACRO_ONLY */
+#endif /* TOPPERS_TARGET_STDDEF_H */
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_support.S
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_support.S	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_support.S	(revision 61)
@@ -0,0 +1,90 @@
+/*
+ *  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) 2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ * ^[QbgË¶@AZu¾êiFS K70j
+ */
+
+	NAME    target_support
+
+#define TOPPERS_MACRO_ONLY
+#define UINT_C(val)			(val)
+#define ULONG_C(val)		(val)
+#include "kernel_impl.h"
+#include "fs_k70f120m.h"
+
+
+/*
+ * áxÌ^[QbgË¶Ìú»
+ *
+ * ú»ÌOÉÄÑo³êé
+ */
+
+	PUBLIC  hardware_init_hook
+
+	SECTION .text : CODE (2)
+	THUMB
+
+hardware_init_hook:
+	/*
+	 * WDOGâ~
+	 */
+	ldr r0, =WDOG_UNLOCK
+	mov r1, #0xC520
+	strh r1, [r0]
+	mov r1, #0xD928
+	strh r1, [r0]
+	ldr r0, =WDOG_STCTRTLH
+	ldr r1, =_WDOG_DATA
+	ldrh r1, [r1]
+	strh r1, [r0]
+
+	bx r14
+
+	DATA
+	_WDOG_DATA: DC16 ~0x0001
+
+	END
+  
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_syssvc.h
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_syssvc.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_syssvc.h	(revision 61)
@@ -0,0 +1,96 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *  VXeT[rXÌ^[QbgË¶iFS K70pj
+ *
+ *  VXeT[rXÌ^[QbgË¶ÌCN[ht@CD±Ìt@
+ *  CÌàeÍCR|[lgLqt@CÉLq³êC±Ìt@CÍ
+ *  ³­Èé©ÝD
+ */
+
+#ifndef TOPPERS_TARGET_SYSSVC_H
+#define TOPPERS_TARGET_SYSSVC_H
+
+/*
+ *  ^[QbgVXeÌn[hEFA¹Ìè`
+ */
+#include "fs_k70f120m.h"
+
+/*
+ *  g[XOÉÖ·éÝè
+ */
+#ifdef TOPPERS_ENABLE_TRACE
+#include "logtrace/trace_config.h"
+#endif /* TOPPERS_ENABLE_TRACE */
+
+/*
+ *  N®bZ[WÌ^[QbgVXe¼
+ */
+#define TARGET_NAME    "FS-K70(PK70FN1M0VMJ12)"
+
+/*
+ *  VXeOÌáxoÍÌ½ßÌ¶oÍ
+ *
+ *  ^[QbgË¶Ìû@ÅC¶cð\¦/oÍ/Û¶·éD
+ */
+extern void	target_fput_log(char_t c);
+
+/*
+ *  VA|[gÌè`
+ */
+#define TNUM_PORT        (1)		/* T|[g·éVA|[gÌ */
+#define TNUM_SIOP        (1)
+
+/*
+ *  {[[g
+ */
+#define BPS_SETTING		(115200)
+
+/*
+ *  VXeO^XNÖAÌèÌè`
+ *
+ *  ftHglÌÊèD
+ */
+
+#endif /* TOPPERS_TARGET_SYSSVC_H */
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_test.h
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_test.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_test.h	(revision 61)
@@ -0,0 +1,58 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *		eXgvOÌ^[QbgË¶è`iFS K70pj
+ */
+
+#ifndef TOPPERS_TARGET_TEST_H
+#define TOPPERS_TARGET_TEST_H
+
+
+/*
+ *  vZbTË¶W
+[(ARM-Mp)
+ */
+#include "arm_m_iccarm/prc_test.h"
+
+#endif /* TOPPERS_TARGET_TEST_H */
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_timer.cfg
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_timer.cfg	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_timer.cfg	(revision 61)
@@ -0,0 +1,3 @@
+#include "target_timer.h"
+
+INCLUDE("arm_m_iccarm/prc_timer.cfg");
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_timer.h
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_timer.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_timer.h	(revision 61)
@@ -0,0 +1,67 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *  ^C}hCoiFS K70pj
+ */
+
+#ifndef TOPPERS_TARGET_TIMER_H
+#define TOPPERS_TARGET_TIMER_H
+
+/*
+ *  ^C}lÌà\»ÆÐØbPÊÆÌÏ·
+ */
+#define TIMER_CLOCK		(SYS_CLOCK / 1000)
+
+/*
+ *  ^C}Ýnho^Ì½ßÌè
+ */
+#define INTPRI_TIMER    (-6)          /* ÝDæx */
+#define INTATR_TIMER    0U            /* Ý®« */
+
+/*
+ *  vZbTË¶Åè`·é
+ */
+#include "arm_m_iccarm/prc_timer.h"
+
+#endif /* TOPPERS_TARGET_TIMER_H */
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_unrename.h
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_unrename.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_unrename.h	(revision 61)
@@ -0,0 +1,28 @@
+/* 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
+
+
+/*
+ * target_config.c
+ */
+#undef target_initialize
+#undef target_exit
+
+#ifdef TOPPERS_LABEL_ASM
+
+
+/*
+ * target_config.c
+ */
+#undef _target_initialize
+#undef _target_exit
+
+#endif /* TOPPERS_LABEL_ASM */
+
+#include "arm_m_iccarm/prc_unrename.h"
+
+#endif /* TOPPERS_TARGET_RENAME_H */
+
Index: /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_user.txt
===================================================================
--- /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_user.txt	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/fs_k70f120m_EWARM2/target_user.txt	(revision 61)
@@ -0,0 +1,95 @@
+=====================================================================
+                         FS K70^[QbgË¶ (asp-1.7.0Îj
+                                  Last Modified: '13/01/30
+=====================================================================
+
+Tv
+
+FreeScale K70^[QbgË¶ÍCvZbTÉK70(Cortex-M4)ðÚµ½C
+TWR-K70F120M ðT|[gµÄ¢éD
+
+
+J[lÌgp\[X
+
+J[lÍÈºÌ\[Xðgp·éD
+
+  EROM
+     R[hðzu·éD
+     gpÊÍgp·éAPIÌÉË¶·éD
+
+  ERAM
+     f[^ðzu·éD
+  	 gpÊÍIuWFNgÉË¶·éD
+  
+  ESysTick
+     J[làÌeBbNÌ¶¬Ép¢éD
+     
+  EUSART`l2
+     R\[ÌoÍÉgpD
+
+
+¼Ì^[QbgÖÌÚA
+
+FreeScale K70^[QbgË¶Ågp·éVAÍCK70FXXXMnÌà @\Ì
+Ýðgp·é½ßCK70FXXXMÌCotex-M4ðp¢½Â«ÉÍeÕÉ|[eB
+OªÂ\Å éD|[eBOÉÖµÄÍCÈºÌú»[`É^[Q
+bgÌú»ðÇÁ·êÎæ¢D
+
+  Etarget_initialize() : target_config.c
+    ^[QbgË¶Ìú»iC¾êj
+  E_hardware_init_hook : target_support.S
+    áxÌ^[QbgË¶Ìú»
+    X^[gAbvW
+[ÌÅCÌú»ÌOÉÄÑo³êé
+
+
+fobOÂ«
+
+fobOÂ«ÆµÄÍCJ­Â« EWARM v6.5 ðgpµÄ¢éD
+
+RpC
+
+J­Â« EWARM v6.5 Ét®ÌRpCÅ®ìmFðsÁ½D
+
+
+ÝDæx
+
+ÝDæxÆµÄwèÂ\ÈÍÍÍC-15 ` -1 Å éD
+
+R\[oÍ
+
+R\[oÍÉÍCUARTÌ`l2ðp¢éDFreeScale K70ãÅÍUARTÌ
+`l1ÍCPTEÉÚ±³êÄ¢éDÊMtH[}bgÍÈºÌÊèÅ éD
+
+  E1152200bps, Data 8bit, Parity none, Stop 1bit, Flow control none
+
+AhX}bsO
+
+@0x0800,0000 - 0x0810,0000 à FlashROM 1MB
+@@@@@@@@@@@@@@@EvectorZNV
+@@@@@@@@@@@@@@@EtextZNV
+@@@@@@@@@@@@@@@ErodataZNV
+@0x1fff,0000 - 0x2000,0000 à RAM 128KB
+@@@@@@@@@@@@@@@EdataZNV
+@@@@@@@@@@@@@@@EbssZNV
+
+eíÝèÌÏX
+
+ôÂ©Ìp[^ÍÏXÂ\ÉÈÁÄ¢éDÝèt@CÉÝèÂ\Ú
+ÍÌæ¤ÉÈÁÄ¢éD
+
+target_config.h ÌÝèÚ
+
+EDEFAULT_ISTKSZ
+  fBtHgÌñ^XNReLXgpÌX^bNTCY
+
+ESIL_DLY_TIM1/2
+  ÷­ÔÒ¿Ì½ßÌè`
+
+target_syssvc.h ÌÝèÚ
+
+EBPS_SETTING
+  R\[Égp·é|[giSCIFÌ|[g1jÌ{[[g
+
+
+ÏXð
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/E_PACKAGE
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/E_PACKAGE	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/E_PACKAGE	(revision 61)
@@ -0,0 +1,5 @@
+E_PACKAGE asp_stm32_discovery_EWARM
+VERSION %date
+
+INCLUDE ../../MANIFEST
+INCLUDE ../../arch/arm_m_iccarm/MANIFEST
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/MANIFEST
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/MANIFEST	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/MANIFEST	(revision 61)
@@ -0,0 +1,27 @@
+PACKAGE asp_arch_arm_m_iccarm
+
+E_PACKAGE
+MANIFEST
+stm32_discovery.h
+target.tf
+target_cfg1_out.h
+target_check.tf
+target_config.c
+target_config.h
+target_def.csv
+target_kernel.h
+target_offset.tf
+target_rename.def
+target_rename.h
+target_serial.c
+target_serial.cfg
+target_serial.h
+target_sil.h
+target_stddef.h
+target_support.S
+target_syssvc.h
+target_test.h
+target_timer.cfg
+target_timer.h
+target_unrename.h
+target_user.txt
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/cfg1_out.c
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/cfg1_out.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/cfg1_out.c	(revision 61)
@@ -0,0 +1,472 @@
+/* cfg1_out.c */
+#define TOPPERS_CFG1_OUT  1
+#include "kernel/kernel_int.h"
+#include "target_timer.h"
+#include "syssvc/syslog.h"
+#include "syssvc/banner.h"
+#include "target_syssvc.h"
+#include "target_serial.h"
+#include "syssvc/serial.h"
+#include "syssvc/logtask.h"
+#include "sample1.h"
+
+
+#ifdef INT64_MAX
+  typedef int64_t signed_t;
+  typedef uint64_t unsigned_t;
+#else
+  typedef int32_t signed_t;
+  typedef uint32_t unsigned_t;
+#endif
+
+#include <target_cfg1_out.h>
+
+const uint32_t TOPPERS_cfg_magic_number = 0x12345678;
+const uint32_t TOPPERS_cfg_sizeof_signed_t = sizeof(signed_t);
+const uint32_t TOPPERS_cfg_sizeof_pointer = sizeof(const volatile void*);
+const unsigned_t TOPPERS_cfg_CHAR_BIT = CHAR_BIT;
+const unsigned_t TOPPERS_cfg_CHAR_MAX = CHAR_MAX;
+const unsigned_t TOPPERS_cfg_CHAR_MIN = CHAR_MIN;
+const unsigned_t TOPPERS_cfg_SCHAR_MAX = SCHAR_MAX;
+const unsigned_t TOPPERS_cfg_SHRT_MAX = SHRT_MAX;
+const unsigned_t TOPPERS_cfg_INT_MAX = INT_MAX;
+const unsigned_t TOPPERS_cfg_LONG_MAX = LONG_MAX;
+
+const unsigned_t TOPPERS_cfg_SIL_ENDIAN_BIG = 
+#if defined(SIL_ENDIAN_BIG)
+(1);
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_SIL_ENDIAN_LITTLE = 
+#if defined(SIL_ENDIAN_LITTLE)
+(1);
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_TA_NULL = ( unsigned_t )TA_NULL;
+const unsigned_t TOPPERS_cfg_TA_ACT = ( unsigned_t )TA_ACT;
+const unsigned_t TOPPERS_cfg_TA_TPRI = ( unsigned_t )TA_TPRI;
+const unsigned_t TOPPERS_cfg_TA_MPRI = ( unsigned_t )TA_MPRI;
+const unsigned_t TOPPERS_cfg_TA_WMUL = ( unsigned_t )TA_WMUL;
+const unsigned_t TOPPERS_cfg_TA_CLR = ( unsigned_t )TA_CLR;
+const unsigned_t TOPPERS_cfg_TA_STA = ( unsigned_t )TA_STA;
+const unsigned_t TOPPERS_cfg_TA_NONKERNEL = ( unsigned_t )TA_NONKERNEL;
+const unsigned_t TOPPERS_cfg_TA_ENAINT = ( unsigned_t )TA_ENAINT;
+const unsigned_t TOPPERS_cfg_TA_EDGE = ( unsigned_t )TA_EDGE;
+const signed_t TOPPERS_cfg_TMIN_TPRI = ( signed_t )TMIN_TPRI;
+const signed_t TOPPERS_cfg_TMAX_TPRI = ( signed_t )TMAX_TPRI;
+const signed_t TOPPERS_cfg_TMIN_DPRI = ( signed_t )TMIN_DPRI;
+const signed_t TOPPERS_cfg_TMAX_DPRI = ( signed_t )TMAX_DPRI;
+const signed_t TOPPERS_cfg_TMIN_MPRI = ( signed_t )TMIN_MPRI;
+const signed_t TOPPERS_cfg_TMAX_MPRI = ( signed_t )TMAX_MPRI;
+const signed_t TOPPERS_cfg_TMIN_ISRPRI = ( signed_t )TMIN_ISRPRI;
+const signed_t TOPPERS_cfg_TMAX_ISRPRI = ( signed_t )TMAX_ISRPRI;
+const unsigned_t TOPPERS_cfg_TMAX_MAXSEM = ( unsigned_t )TMAX_MAXSEM;
+const unsigned_t TOPPERS_cfg_TMAX_RELTIM = ( unsigned_t )TMAX_RELTIM;
+const signed_t TOPPERS_cfg_TMIN_INTPRI = ( signed_t )TMIN_INTPRI;
+const unsigned_t TOPPERS_cfg_OMIT_INITIALIZE_INTERRUPT = 
+#if defined(OMIT_INITIALIZE_INTERRUPT)
+(1);
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_OMIT_INITIALIZE_EXCEPTION = 
+#if defined(OMIT_INITIALIZE_EXCEPTION)
+(1);
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_USE_TSKINICTXB = 
+#if defined(USE_TSKINICTXB)
+(1);
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_TARGET_TSKATR = 
+#if defined(TARGET_TSKATR)
+(TARGET_TSKATR);
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_TARGET_INTATR = 
+#if defined(TARGET_INTATR)
+(TARGET_INTATR);
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_TARGET_INHATR = 
+#if defined(TARGET_INHATR)
+(TARGET_INHATR);
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_TARGET_ISRATR = 
+#if defined(TARGET_ISRATR)
+(TARGET_ISRATR);
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_TARGET_EXCATR = 
+#if defined(TARGET_EXCATR)
+(TARGET_EXCATR);
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_TARGET_MIN_STKSZ = 
+#if defined(TARGET_MIN_STKSZ)
+(TARGET_MIN_STKSZ);
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_CHECK_STKSZ_ALIGN = 
+#if defined(CHECK_STKSZ_ALIGN)
+(CHECK_STKSZ_ALIGN);
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_CHECK_FUNC_ALIGN = 
+#if defined(CHECK_FUNC_ALIGN)
+(CHECK_FUNC_ALIGN);
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_CHECK_FUNC_NONNULL = 
+#if defined(CHECK_FUNC_NONNULL)
+(1);
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_CHECK_STACK_ALIGN = 
+#if defined(CHECK_STACK_ALIGN)
+(CHECK_STACK_ALIGN);
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_CHECK_STACK_NONNULL = 
+#if defined(CHECK_STACK_NONNULL)
+(1);
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_CHECK_MPF_ALIGN = 
+#if defined(CHECK_MPF_ALIGN)
+(CHECK_MPF_ALIGN);
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_CHECK_MPF_NONNULL = 
+#if defined(CHECK_MPF_NONNULL)
+(1);
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_sizeof_ID = ( unsigned_t )sizeof(ID);
+const unsigned_t TOPPERS_cfg_sizeof_uint_t = ( unsigned_t )sizeof(uint_t);
+const unsigned_t TOPPERS_cfg_sizeof_SIZE = ( unsigned_t )sizeof(SIZE);
+const unsigned_t TOPPERS_cfg_sizeof_ATR = ( unsigned_t )sizeof(ATR);
+const unsigned_t TOPPERS_cfg_sizeof_PRI = ( unsigned_t )sizeof(PRI);
+const unsigned_t TOPPERS_cfg_sizeof_void_ptr = ( unsigned_t )sizeof(void*);
+const unsigned_t TOPPERS_cfg_sizeof_VP = ( unsigned_t )sizeof(void*);
+const unsigned_t TOPPERS_cfg_sizeof_intptr_t = ( unsigned_t )sizeof(intptr_t);
+const unsigned_t TOPPERS_cfg_sizeof_FP = ( unsigned_t )sizeof(FP);
+const unsigned_t TOPPERS_cfg_sizeof_INHNO = ( unsigned_t )sizeof(INHNO);
+const unsigned_t TOPPERS_cfg_sizeof_INTNO = ( unsigned_t )sizeof(INTNO);
+const unsigned_t TOPPERS_cfg_sizeof_EXCNO = ( unsigned_t )sizeof(EXCNO);
+const unsigned_t TOPPERS_cfg_sizeof_TINIB = ( unsigned_t )sizeof(TINIB);
+const unsigned_t TOPPERS_cfg_offsetof_TINIB_tskatr = ( unsigned_t )offsetof(TINIB,tskatr);
+const unsigned_t TOPPERS_cfg_offsetof_TINIB_exinf = ( unsigned_t )offsetof(TINIB,exinf);
+const unsigned_t TOPPERS_cfg_offsetof_TINIB_task = ( unsigned_t )offsetof(TINIB,task);
+const unsigned_t TOPPERS_cfg_offsetof_TINIB_ipriority = ( unsigned_t )offsetof(TINIB,ipriority);
+const unsigned_t TOPPERS_cfg_offsetof_TINIB_stksz = 
+#if !defined(USE_TSKINICTXB)
+(offsetof(TINIB,stksz));
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_offsetof_TINIB_stk = 
+#if !defined(USE_TSKINICTXB)
+(offsetof(TINIB,stk));
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_offsetof_TINIB_texatr = ( unsigned_t )offsetof(TINIB,texatr);
+const unsigned_t TOPPERS_cfg_offsetof_TINIB_texrtn = ( unsigned_t )offsetof(TINIB,texrtn);
+const unsigned_t TOPPERS_cfg_sizeof_SEMINIB = ( unsigned_t )sizeof(SEMINIB);
+const unsigned_t TOPPERS_cfg_offsetof_SEMINIB_sematr = ( unsigned_t )offsetof(SEMINIB,sematr);
+const unsigned_t TOPPERS_cfg_offsetof_SEMINIB_isemcnt = ( unsigned_t )offsetof(SEMINIB,isemcnt);
+const unsigned_t TOPPERS_cfg_offsetof_SEMINIB_maxsem = ( unsigned_t )offsetof(SEMINIB,maxsem);
+const unsigned_t TOPPERS_cfg_sizeof_FLGPTN = ( unsigned_t )sizeof(FLGPTN);
+const unsigned_t TOPPERS_cfg_sizeof_FLGINIB = ( unsigned_t )sizeof(FLGINIB);
+const unsigned_t TOPPERS_cfg_offsetof_FLGINIB_flgatr = ( unsigned_t )offsetof(FLGINIB,flgatr);
+const unsigned_t TOPPERS_cfg_offsetof_FLGINIB_iflgptn = ( unsigned_t )offsetof(FLGINIB,iflgptn);
+const unsigned_t TOPPERS_cfg_sizeof_DTQINIB = ( unsigned_t )sizeof(DTQINIB);
+const unsigned_t TOPPERS_cfg_offsetof_DTQINIB_dtqatr = ( unsigned_t )offsetof(DTQINIB,dtqatr);
+const unsigned_t TOPPERS_cfg_offsetof_DTQINIB_dtqcnt = ( unsigned_t )offsetof(DTQINIB,dtqcnt);
+const unsigned_t TOPPERS_cfg_offsetof_DTQINIB_p_dtqmb = ( unsigned_t )offsetof(DTQINIB,p_dtqmb);
+const unsigned_t TOPPERS_cfg_sizeof_PDQINIB = ( unsigned_t )sizeof(PDQINIB);
+const unsigned_t TOPPERS_cfg_offsetof_PDQINIB_pdqatr = ( unsigned_t )offsetof(PDQINIB,pdqatr);
+const unsigned_t TOPPERS_cfg_offsetof_PDQINIB_pdqcnt = ( unsigned_t )offsetof(PDQINIB,pdqcnt);
+const unsigned_t TOPPERS_cfg_offsetof_PDQINIB_maxdpri = ( unsigned_t )offsetof(PDQINIB,maxdpri);
+const unsigned_t TOPPERS_cfg_offsetof_PDQINIB_p_pdqmb = ( unsigned_t )offsetof(PDQINIB,p_pdqmb);
+const unsigned_t TOPPERS_cfg_sizeof_MBXINIB = ( unsigned_t )sizeof(MBXINIB);
+const unsigned_t TOPPERS_cfg_offsetof_MBXINIB_mbxatr = ( unsigned_t )offsetof(MBXINIB,mbxatr);
+const unsigned_t TOPPERS_cfg_offsetof_MBXINIB_maxmpri = ( unsigned_t )offsetof(MBXINIB,maxmpri);
+const unsigned_t TOPPERS_cfg_sizeof_MPFINIB = ( unsigned_t )sizeof(MPFINIB);
+const unsigned_t TOPPERS_cfg_offsetof_MPFINIB_mpfatr = ( unsigned_t )offsetof(MPFINIB,mpfatr);
+const unsigned_t TOPPERS_cfg_offsetof_MPFINIB_blkcnt = ( unsigned_t )offsetof(MPFINIB,blkcnt);
+const unsigned_t TOPPERS_cfg_offsetof_MPFINIB_blksz = ( unsigned_t )offsetof(MPFINIB,blksz);
+const unsigned_t TOPPERS_cfg_offsetof_MPFINIB_mpf = ( unsigned_t )offsetof(MPFINIB,mpf);
+const unsigned_t TOPPERS_cfg_offsetof_MPFINIB_p_mpfmb = ( unsigned_t )offsetof(MPFINIB,p_mpfmb);
+const unsigned_t TOPPERS_cfg_sizeof_CYCINIB = ( unsigned_t )sizeof(CYCINIB);
+const unsigned_t TOPPERS_cfg_offsetof_CYCINIB_cycatr = ( unsigned_t )offsetof(CYCINIB,cycatr);
+const unsigned_t TOPPERS_cfg_offsetof_CYCINIB_exinf = ( unsigned_t )offsetof(CYCINIB,exinf);
+const unsigned_t TOPPERS_cfg_offsetof_CYCINIB_cychdr = ( unsigned_t )offsetof(CYCINIB,cychdr);
+const unsigned_t TOPPERS_cfg_offsetof_CYCINIB_cyctim = ( unsigned_t )offsetof(CYCINIB,cyctim);
+const unsigned_t TOPPERS_cfg_offsetof_CYCINIB_cycphs = ( unsigned_t )offsetof(CYCINIB,cycphs);
+const unsigned_t TOPPERS_cfg_sizeof_ALMINIB = ( unsigned_t )sizeof(ALMINIB);
+const unsigned_t TOPPERS_cfg_offsetof_ALMINIB_almatr = ( unsigned_t )offsetof(ALMINIB,almatr);
+const unsigned_t TOPPERS_cfg_offsetof_ALMINIB_exinf = ( unsigned_t )offsetof(ALMINIB,exinf);
+const unsigned_t TOPPERS_cfg_offsetof_ALMINIB_almhdr = ( unsigned_t )offsetof(ALMINIB,almhdr);
+const unsigned_t TOPPERS_cfg_sizeof_INHINIB = 
+#if !defined(OMIT_INITIALIZE_INTERRUPT)
+(sizeof(INHINIB));
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_offset_INHINIB_inhno = 
+#if !defined(OMIT_INITIALIZE_INTERRUPT)
+(offsetof(INHINIB,inhno));
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_offset_INHINIB_inhatr = 
+#if !defined(OMIT_INITIALIZE_INTERRUPT)
+(offsetof(INHINIB,inhatr));
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_offset_INHINIB_int_entry = 
+#if !defined(OMIT_INITIALIZE_INTERRUPT)
+(offsetof(INHINIB,int_entry));
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_sizeof_INTINIB = 
+#if !defined(OMIT_INITIALIZE_INTERRUPT)
+(sizeof(INTINIB));
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_offset_INTINIB_intno = 
+#if !defined(OMIT_INITIALIZE_INTERRUPT)
+(offsetof(INTINIB,intno));
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_offset_INTINIB_intatr = 
+#if !defined(OMIT_INITIALIZE_INTERRUPT)
+(offsetof(INTINIB,intatr));
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_offset_INTINIB_intpri = 
+#if !defined(OMIT_INITIALIZE_INTERRUPT)
+(offsetof(INTINIB,intpri));
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_sizeof_EXCINIB = 
+#if !defined(OMIT_INITIALIZE_EXCEPTION)
+(sizeof(EXCINIB));
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_offset_EXCINIB_excno = 
+#if !defined(OMIT_INITIALIZE_EXCEPTION)
+(offsetof(EXCINIB,excno));
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_offset_EXCINIB_excatr = 
+#if !defined(OMIT_INITIALIZE_EXCEPTION)
+(offsetof(EXCINIB,excatr));
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_offset_EXCINIB_exc_entry = 
+#if !defined(OMIT_INITIALIZE_EXCEPTION)
+(offsetof(EXCINIB,exc_entry));
+#else
+(0);
+#endif
+const unsigned_t TOPPERS_cfg_TMAX_INTNO = ( unsigned_t )TMAX_INTNO;
+const unsigned_t TOPPERS_cfg_TIPM_LOCK = ( unsigned_t )TIPM_LOCK ;
+const unsigned_t TOPPERS_cfg_TBITW_IPRI = ( unsigned_t )TBITW_IPRI;
+const unsigned_t TOPPERS_cfg_sizeof_TCB = ( unsigned_t )sizeof(TCB);
+const unsigned_t TOPPERS_cfg_offsetof_TCB_p_tinib = ( unsigned_t )offsetof(TCB,p_tinib);
+const unsigned_t TOPPERS_cfg_offsetof_TCB_texptn = ( unsigned_t )offsetof(TCB,texptn);
+const unsigned_t TOPPERS_cfg_offsetof_TCB_sp = ( unsigned_t )offsetof(TCB,tskctxb.sp);
+const unsigned_t TOPPERS_cfg_offsetof_TCB_pc = ( unsigned_t )offsetof(TCB,tskctxb.pc);
+
+
+/* #include "target_timer.h" */
+
+#line 4 "../../../arch/arm_m_iccarm/prc_timer.cfg"
+const unsigned_t TOPPERS_cfg_static_api_0 = 0;
+const unsigned_t TOPPERS_cfg_valueof_iniatr_0 = ( unsigned_t )( TA_NULL ); 
+#line 5 "../../../arch/arm_m_iccarm/prc_timer.cfg"
+const unsigned_t TOPPERS_cfg_static_api_1 = 1;
+const unsigned_t TOPPERS_cfg_valueof_teratr_1 = ( unsigned_t )( TA_NULL ); 
+#line 6 "../../../arch/arm_m_iccarm/prc_timer.cfg"
+const unsigned_t TOPPERS_cfg_static_api_2 = 2;
+const unsigned_t TOPPERS_cfg_valueof_inhno_2 = ( unsigned_t )( INHNO_TIMER ); const unsigned_t TOPPERS_cfg_valueof_inhatr_2 = ( unsigned_t )( TA_NULL ); 
+#line 7 "../../../arch/arm_m_iccarm/prc_timer.cfg"
+const unsigned_t TOPPERS_cfg_static_api_3 = 3;
+const unsigned_t TOPPERS_cfg_valueof_intno_3 = ( unsigned_t )( INTNO_TIMER ); const unsigned_t TOPPERS_cfg_valueof_intatr_3 = ( unsigned_t )( TA_ENAINT|INTATR_TIMER ); const signed_t TOPPERS_cfg_valueof_intpri_3 = ( signed_t )( INTPRI_TIMER ); /* #include "syssvc/syslog.h" */
+
+#line 10 "../../../syssvc/syslog.cfg"
+const unsigned_t TOPPERS_cfg_static_api_4 = 4;
+const unsigned_t TOPPERS_cfg_valueof_iniatr_4 = ( unsigned_t )( TA_NULL ); /* #include "syssvc/banner.h" */
+
+#line 10 "../../../syssvc/banner.cfg"
+const unsigned_t TOPPERS_cfg_static_api_5 = 5;
+const unsigned_t TOPPERS_cfg_valueof_iniatr_5 = ( unsigned_t )( TA_NULL ); /* #include "target_syssvc.h" */
+/* #include "target_serial.h" */
+
+#line 6 "../../../target/stm32_discovery_EWARM2/target_serial.cfg"
+const unsigned_t TOPPERS_cfg_static_api_6 = 6;
+const unsigned_t TOPPERS_cfg_valueof_iniatr_6 = ( unsigned_t )( TA_NULL ); 
+#line 7 "../../../target/stm32_discovery_EWARM2/target_serial.cfg"
+const unsigned_t TOPPERS_cfg_static_api_7 = 7;
+const unsigned_t TOPPERS_cfg_valueof_isratr_7 = ( unsigned_t )( TA_NULL ); const unsigned_t TOPPERS_cfg_valueof_intno_7 = ( unsigned_t )( INTNO_SIO ); const signed_t TOPPERS_cfg_valueof_isrpri_7 = ( signed_t )( 1 ); 
+#line 8 "../../../target/stm32_discovery_EWARM2/target_serial.cfg"
+const unsigned_t TOPPERS_cfg_static_api_8 = 8;
+const unsigned_t TOPPERS_cfg_valueof_intno_8 = ( unsigned_t )( INTNO_SIO ); const unsigned_t TOPPERS_cfg_valueof_intatr_8 = ( unsigned_t )( TA_ENAINT|INTATR_SIO ); const signed_t TOPPERS_cfg_valueof_intpri_8 = ( signed_t )( INTPRI_SIO ); /* #include "syssvc/serial.h" */
+
+#line 13 "../../../syssvc/serial.cfg"
+const unsigned_t TOPPERS_cfg_static_api_9 = 9;
+const unsigned_t TOPPERS_cfg_valueof_iniatr_9 = ( unsigned_t )( TA_NULL ); 
+#line 15 "../../../syssvc/serial.cfg"
+const unsigned_t TOPPERS_cfg_static_api_10 = 10;
+#define SERIAL_RCV_SEM1	(<>)
+
+#line 15 "../../../syssvc/serial.cfg"
+const unsigned_t TOPPERS_cfg_valueof_sematr_10 = ( unsigned_t )( TA_TPRI ); const unsigned_t TOPPERS_cfg_valueof_isemcnt_10 = ( unsigned_t )( 0 ); const unsigned_t TOPPERS_cfg_valueof_maxsem_10 = ( unsigned_t )( 1 ); 
+#line 16 "../../../syssvc/serial.cfg"
+const unsigned_t TOPPERS_cfg_static_api_11 = 11;
+#define SERIAL_SND_SEM1	(<>)
+
+#line 16 "../../../syssvc/serial.cfg"
+const unsigned_t TOPPERS_cfg_valueof_sematr_11 = ( unsigned_t )( TA_TPRI ); const unsigned_t TOPPERS_cfg_valueof_isemcnt_11 = ( unsigned_t )( 1 ); const unsigned_t TOPPERS_cfg_valueof_maxsem_11 = ( unsigned_t )( 1 ); 
+#if TNUM_PORT >= 2
+
+#line 18 "../../../syssvc/serial.cfg"
+const unsigned_t TOPPERS_cfg_static_api_12 = 12;
+#define SERIAL_RCV_SEM2	(<>)
+
+#line 18 "../../../syssvc/serial.cfg"
+const unsigned_t TOPPERS_cfg_valueof_sematr_12 = ( unsigned_t )( TA_TPRI ); const unsigned_t TOPPERS_cfg_valueof_isemcnt_12 = ( unsigned_t )( 0 ); const unsigned_t TOPPERS_cfg_valueof_maxsem_12 = ( unsigned_t )( 1 ); 
+#line 19 "../../../syssvc/serial.cfg"
+const unsigned_t TOPPERS_cfg_static_api_13 = 13;
+#define SERIAL_SND_SEM2	(<>)
+
+#line 19 "../../../syssvc/serial.cfg"
+const unsigned_t TOPPERS_cfg_valueof_sematr_13 = ( unsigned_t )( TA_TPRI ); const unsigned_t TOPPERS_cfg_valueof_isemcnt_13 = ( unsigned_t )( 1 ); const unsigned_t TOPPERS_cfg_valueof_maxsem_13 = ( unsigned_t )( 1 ); 
+#endif 
+
+#if TNUM_PORT >= 3
+
+#line 22 "../../../syssvc/serial.cfg"
+const unsigned_t TOPPERS_cfg_static_api_14 = 14;
+#define SERIAL_RCV_SEM3	(<>)
+
+#line 22 "../../../syssvc/serial.cfg"
+const unsigned_t TOPPERS_cfg_valueof_sematr_14 = ( unsigned_t )( TA_TPRI ); const unsigned_t TOPPERS_cfg_valueof_isemcnt_14 = ( unsigned_t )( 0 ); const unsigned_t TOPPERS_cfg_valueof_maxsem_14 = ( unsigned_t )( 1 ); 
+#line 23 "../../../syssvc/serial.cfg"
+const unsigned_t TOPPERS_cfg_static_api_15 = 15;
+#define SERIAL_SND_SEM3	(<>)
+
+#line 23 "../../../syssvc/serial.cfg"
+const unsigned_t TOPPERS_cfg_valueof_sematr_15 = ( unsigned_t )( TA_TPRI ); const unsigned_t TOPPERS_cfg_valueof_isemcnt_15 = ( unsigned_t )( 1 ); const unsigned_t TOPPERS_cfg_valueof_maxsem_15 = ( unsigned_t )( 1 ); 
+#endif 
+
+#if TNUM_PORT >= 4
+
+#line 26 "../../../syssvc/serial.cfg"
+const unsigned_t TOPPERS_cfg_static_api_16 = 16;
+#define SERIAL_RCV_SEM4	(<>)
+
+#line 26 "../../../syssvc/serial.cfg"
+const unsigned_t TOPPERS_cfg_valueof_sematr_16 = ( unsigned_t )( TA_TPRI ); const unsigned_t TOPPERS_cfg_valueof_isemcnt_16 = ( unsigned_t )( 0 ); const unsigned_t TOPPERS_cfg_valueof_maxsem_16 = ( unsigned_t )( 1 ); 
+#line 27 "../../../syssvc/serial.cfg"
+const unsigned_t TOPPERS_cfg_static_api_17 = 17;
+#define SERIAL_SND_SEM4	(<>)
+
+#line 27 "../../../syssvc/serial.cfg"
+const unsigned_t TOPPERS_cfg_valueof_sematr_17 = ( unsigned_t )( TA_TPRI ); const unsigned_t TOPPERS_cfg_valueof_isemcnt_17 = ( unsigned_t )( 1 ); const unsigned_t TOPPERS_cfg_valueof_maxsem_17 = ( unsigned_t )( 1 ); 
+#endif 
+/* #include "syssvc/logtask.h" */
+
+#line 10 "../../../syssvc/logtask.cfg"
+const unsigned_t TOPPERS_cfg_static_api_18 = 18;
+#define LOGTASK	(<>)
+
+#line 10 "../../../syssvc/logtask.cfg"
+const unsigned_t TOPPERS_cfg_valueof_tskatr_18 = ( unsigned_t )( TA_ACT ); const signed_t TOPPERS_cfg_valueof_itskpri_18 = ( signed_t )( LOGTASK_PRIORITY ); const unsigned_t TOPPERS_cfg_valueof_stksz_18 = ( unsigned_t )( LOGTASK_STACK_SIZE ); 
+#line 12 "../../../syssvc/logtask.cfg"
+const unsigned_t TOPPERS_cfg_static_api_19 = 19;
+const unsigned_t TOPPERS_cfg_valueof_teratr_19 = ( unsigned_t )( TA_NULL ); /* #include "sample1.h" */
+
+#line 15 "src/sample1.cfg"
+const unsigned_t TOPPERS_cfg_static_api_20 = 20;
+#define TASK1	(<>)
+
+#line 15 "src/sample1.cfg"
+const unsigned_t TOPPERS_cfg_valueof_tskatr_20 = ( unsigned_t )( TA_NULL ); const signed_t TOPPERS_cfg_valueof_itskpri_20 = ( signed_t )( MID_PRIORITY ); const unsigned_t TOPPERS_cfg_valueof_stksz_20 = ( unsigned_t )( STACK_SIZE ); 
+#line 16 "src/sample1.cfg"
+const unsigned_t TOPPERS_cfg_static_api_21 = 21;
+#define TASK2	(<>)
+
+#line 16 "src/sample1.cfg"
+const unsigned_t TOPPERS_cfg_valueof_tskatr_21 = ( unsigned_t )( TA_NULL ); const signed_t TOPPERS_cfg_valueof_itskpri_21 = ( signed_t )( MID_PRIORITY ); const unsigned_t TOPPERS_cfg_valueof_stksz_21 = ( unsigned_t )( STACK_SIZE ); 
+#line 17 "src/sample1.cfg"
+const unsigned_t TOPPERS_cfg_static_api_22 = 22;
+#define TASK3	(<>)
+
+#line 17 "src/sample1.cfg"
+const unsigned_t TOPPERS_cfg_valueof_tskatr_22 = ( unsigned_t )( TA_NULL ); const signed_t TOPPERS_cfg_valueof_itskpri_22 = ( signed_t )( MID_PRIORITY ); const unsigned_t TOPPERS_cfg_valueof_stksz_22 = ( unsigned_t )( STACK_SIZE ); 
+#line 18 "src/sample1.cfg"
+const unsigned_t TOPPERS_cfg_static_api_23 = 23;
+#define MAIN_TASK	(<>)
+
+#line 18 "src/sample1.cfg"
+const unsigned_t TOPPERS_cfg_valueof_tskatr_23 = ( unsigned_t )( TA_ACT ); const signed_t TOPPERS_cfg_valueof_itskpri_23 = ( signed_t )( MAIN_PRIORITY ); const unsigned_t TOPPERS_cfg_valueof_stksz_23 = ( unsigned_t )( STACK_SIZE ); 
+#line 19 "src/sample1.cfg"
+const unsigned_t TOPPERS_cfg_static_api_24 = 24;
+const unsigned_t TOPPERS_cfg_valueof_texatr_24 = ( unsigned_t )( TA_NULL ); 
+#line 20 "src/sample1.cfg"
+const unsigned_t TOPPERS_cfg_static_api_25 = 25;
+const unsigned_t TOPPERS_cfg_valueof_texatr_25 = ( unsigned_t )( TA_NULL ); 
+#line 21 "src/sample1.cfg"
+const unsigned_t TOPPERS_cfg_static_api_26 = 26;
+const unsigned_t TOPPERS_cfg_valueof_texatr_26 = ( unsigned_t )( TA_NULL ); 
+#line 22 "src/sample1.cfg"
+const unsigned_t TOPPERS_cfg_static_api_27 = 27;
+#define CYCHDR1	(<>)
+
+#line 22 "src/sample1.cfg"
+const unsigned_t TOPPERS_cfg_valueof_cycatr_27 = ( unsigned_t )( TA_NULL ); const unsigned_t TOPPERS_cfg_valueof_cyctim_27 = ( unsigned_t )( 2000 ); const unsigned_t TOPPERS_cfg_valueof_cycphs_27 = ( unsigned_t )( 0 ); 
+#line 23 "src/sample1.cfg"
+const unsigned_t TOPPERS_cfg_static_api_28 = 28;
+#define ALMHDR1	(<>)
+
+#line 23 "src/sample1.cfg"
+const unsigned_t TOPPERS_cfg_valueof_almatr_28 = ( unsigned_t )( TA_NULL ); 
+#ifdef CPUEXC1
+
+#line 25 "src/sample1.cfg"
+const unsigned_t TOPPERS_cfg_static_api_29 = 29;
+const unsigned_t TOPPERS_cfg_valueof_excno_29 = ( unsigned_t )( CPUEXC1 ); const unsigned_t TOPPERS_cfg_valueof_excatr_29 = ( unsigned_t )( TA_NULL ); 
+#endif 
+
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/cfg1_out.srec
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/cfg1_out.srec	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/cfg1_out.srec	(revision 61)
@@ -0,0 +1,112 @@
+S0100000636667315F6F75742E73726563FC
+S3150800000010000020A10000089300000893000008D3
+S315080000109300000893000008930000080000000001
+S315080000200000000000000000000000009300000827
+S3150800003093000008000000009300000893000008E1
+S31508000040000000000000000000000000000004009E
+S315080000500000000000000000000000000000000092
+S315080000600120C046002801D0C046C0460020C04630
+S31508000070C04600F000F800F001B834120746C04642
+S31508000080C046C046C046C046C046384600F002F8DC
+S31508000090FBE7FEE701491820ABBEFBE72600020096
+S315080000A0C046C046C046C046FFF7DAFF7856341247
+S315080000B00800000000000000FF000000000000002B
+S315080000C000000000000000007F00000000000000A3
+S315080000D0FF7F000000000000FFFFFF7F0000000018
+S315080000E0FFFFFF7F00000000000000000000000086
+S315080000F001000000000000000000000000000000F1
+S3150800010002000000000000000100000000000000DE
+S3150800011002000000000000000200000000000000CD
+S3150800012004000000000000000200000000000000BB
+S3150800013002000000000000000100000000000000AE
+S31508000140020000000000000001000000000000009E
+S315080001501000000000000000010000000000000080
+S315080001601000000000000000010000000000000070
+S315080001701000000000000000010000000000000060
+S315080001801000000000000000FFFFFFFF0000000055
+S31508000190FFFFFF7F00000000F1FFFFFFFFFFFFFFEB
+S315080001A00000000000000000000000000000000041
+S315080001B00000000000000000000000000000000031
+S315080001C0000000000000000002000000000000001F
+S315080001D00000000000000000000000000000000011
+S315080001E000000000000000000800000000000000F9
+S315080001F001000000000000000100000000000000EF
+S3150800020008000000000000000100000000000000D7
+S3150800021004000000000000000100000000000000CB
+S3150800022004000000000000000400000000000000B8
+S3150800023004000000000000000400000000000000A8
+S315080002400400000000000000040000000000000098
+S315080002500400000000000000040000000000000088
+S315080002600400000000000000040000000000000078
+S315080002700400000000000000040000000000000068
+S315080002802000000000000000000000000000000040
+S315080002900400000000000000080000000000000044
+S315080002A00C00000000000000100000000000000024
+S315080002B01400000000000000180000000000000004
+S315080002C01C000000000000000C00000000000000F8
+S315080002D0000000000000000004000000000000000C
+S315080002E008000000000000000400000000000000F4
+S315080002F008000000000000000000000000000000E8
+S3150800030004000000000000000C00000000000000CF
+S3150800031000000000000000000400000000000000CB
+S3150800032008000000000000001000000000000000A7
+S3150800033000000000000000000400000000000000AB
+S3150800034008000000000000000C000000000000008B
+S315080003500800000000000000000000000000000087
+S315080003600400000000000000140000000000000067
+S31508000370000000000000000004000000000000006B
+S3150800038008000000000000000C000000000000004B
+S31508000390100000000000000014000000000000002B
+S315080003A0000000000000000004000000000000003B
+S315080003B008000000000000000C000000000000001B
+S315080003C010000000000000000C0000000000000003
+S315080003D0000000000000000004000000000000000B
+S315080003E008000000000000000C00000000000000EB
+S315080003F000000000000000000400000000000000EB
+S3150800040008000000000000000C00000000000000CA
+S3150800041000000000000000000400000000000000CA
+S3150800042008000000000000000C00000000000000AA
+S3150800043000000000000000000400000000000000AA
+S3150800044008000000000000004C000000000000004A
+S31508000450F1FFFFFFFFFFFFFF0400000000000000A0
+S315080004602000000000000000080000000000000056
+S315080004701000000000000000180000000000000046
+S315080004801C00000000000000000000000000000042
+S31508000490000000000000000001000000000000004D
+S315080004A0000000000000000002000000000000003C
+S315080004B00F0000000000000000000000000000001F
+S315080004C003000000000000000F000000000000000C
+S315080004D00100000000000000FAFFFFFFFFFFFFFF1A
+S315080004E004000000000000000000000000000000FA
+S315080004F005000000000000000000000000000000E9
+S3150800050006000000000000000000000000000000D7
+S3150800051007000000000000000000000000000000C6
+S315080005203500000000000000010000000000000087
+S315080005300800000000000000350000000000000070
+S315080005400100000000000000FDFFFFFFFFFFFFFFA6
+S315080005500900000000000000000000000000000084
+S315080005600A00000000000000010000000000000072
+S31508000570000000000000000001000000000000006C
+S315080005800B00000000000000010000000000000051
+S31508000590010000000000000001000000000000004B
+S315080005A01200000000000000020000000000000029
+S315080005B00300000000000000000400000000000026
+S315080005C0130000000000000000000000000000000A
+S315080005D014000000000000000000000000000000F9
+S315080005E00A000000000000000004000000000000EF
+S315080005F015000000000000000000000000000000D8
+S315080006000A000000000000000004000000000000CE
+S3150800061016000000000000000000000000000000B6
+S315080006200A000000000000000004000000000000AE
+S315080006301700000000000000020000000000000093
+S315080006400500000000000000000400000000000093
+S315080006501800000000000000000000000000000074
+S315080006601900000000000000000000000000000063
+S315080006701A00000000000000000000000000000052
+S315080006801B00000000000000000000000000000041
+S31508000690D007000000000000000000000000000075
+S315080006A01C00000000000000000000000000000020
+S315080006B01D00000000000000060000000000000009
+S315080006C00000000000000000785634120800000000
+S315080006D004000000704770470120704712000000B0
+S705080000A151
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/cfg1_out.syms
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/cfg1_out.syms	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/cfg1_out.syms	(revision 61)
@@ -0,0 +1,230 @@
+08000061 t ?main
+08000093 t BusFault_Handler
+20000000 t CSTACK$$Base
+20000010 t CSTACK$$Limit
+08000093 t DebugMon_Handler
+08000093 t HardFault_Handler
+080006dc t MAGIC_1
+0800007a t MAGIC_2
+080000ac t MAGIC_4
+08000093 t MemManage_Handler
+08000093 t NMI_Handler
+08000093 t PendSV_Handler
+00000000 t Region$$Table$$Base
+00000000 t Region$$Table$$Limit
+08000093 t SVC_Handler
+08000093 t SysTick_Handler
+08000040 t TCB_enatex
+080000b0 t TOPPERS_cfg_CHAR_BIT
+080000b8 t TOPPERS_cfg_CHAR_MAX
+080000c0 t TOPPERS_cfg_CHAR_MIN
+080001f0 t TOPPERS_cfg_CHECK_FUNC_ALIGN
+080001f8 t TOPPERS_cfg_CHECK_FUNC_NONNULL
+08000210 t TOPPERS_cfg_CHECK_MPF_ALIGN
+08000218 t TOPPERS_cfg_CHECK_MPF_NONNULL
+08000200 t TOPPERS_cfg_CHECK_STACK_ALIGN
+08000208 t TOPPERS_cfg_CHECK_STACK_NONNULL
+080001e8 t TOPPERS_cfg_CHECK_STKSZ_ALIGN
+080000d8 t TOPPERS_cfg_INT_MAX
+080000e0 t TOPPERS_cfg_LONG_MAX
+080001a8 t TOPPERS_cfg_OMIT_INITIALIZE_EXCEPTION
+080001a0 t TOPPERS_cfg_OMIT_INITIALIZE_INTERRUPT
+080000c8 t TOPPERS_cfg_SCHAR_MAX
+080000d0 t TOPPERS_cfg_SHRT_MAX
+080000e8 t TOPPERS_cfg_SIL_ENDIAN_BIG
+080000f0 t TOPPERS_cfg_SIL_ENDIAN_LITTLE
+080001d8 t TOPPERS_cfg_TARGET_EXCATR
+080001c8 t TOPPERS_cfg_TARGET_INHATR
+080001c0 t TOPPERS_cfg_TARGET_INTATR
+080001d0 t TOPPERS_cfg_TARGET_ISRATR
+080001e0 t TOPPERS_cfg_TARGET_MIN_STKSZ
+080001b8 t TOPPERS_cfg_TARGET_TSKATR
+08000100 t TOPPERS_cfg_TA_ACT
+08000120 t TOPPERS_cfg_TA_CLR
+08000140 t TOPPERS_cfg_TA_EDGE
+08000138 t TOPPERS_cfg_TA_ENAINT
+08000110 t TOPPERS_cfg_TA_MPRI
+08000130 t TOPPERS_cfg_TA_NONKERNEL
+080000f8 t TOPPERS_cfg_TA_NULL
+08000128 t TOPPERS_cfg_TA_STA
+08000108 t TOPPERS_cfg_TA_TPRI
+08000118 t TOPPERS_cfg_TA_WMUL
+08000458 t TOPPERS_cfg_TBITW_IPRI
+08000450 t TOPPERS_cfg_TIPM_LOCK
+08000160 t TOPPERS_cfg_TMAX_DPRI
+08000448 t TOPPERS_cfg_TMAX_INTNO
+08000180 t TOPPERS_cfg_TMAX_ISRPRI
+08000188 t TOPPERS_cfg_TMAX_MAXSEM
+08000170 t TOPPERS_cfg_TMAX_MPRI
+08000190 t TOPPERS_cfg_TMAX_RELTIM
+08000150 t TOPPERS_cfg_TMAX_TPRI
+08000158 t TOPPERS_cfg_TMIN_DPRI
+08000198 t TOPPERS_cfg_TMIN_INTPRI
+08000178 t TOPPERS_cfg_TMIN_ISRPRI
+08000168 t TOPPERS_cfg_TMIN_MPRI
+08000148 t TOPPERS_cfg_TMIN_TPRI
+080001b0 t TOPPERS_cfg_USE_TSKINICTXB
+080006c8 t TOPPERS_cfg_magic_number
+08000440 t TOPPERS_cfg_offset_EXCINIB_exc_entry
+08000438 t TOPPERS_cfg_offset_EXCINIB_excatr
+08000430 t TOPPERS_cfg_offset_EXCINIB_excno
+080003f8 t TOPPERS_cfg_offset_INHINIB_inhatr
+080003f0 t TOPPERS_cfg_offset_INHINIB_inhno
+08000400 t TOPPERS_cfg_offset_INHINIB_int_entry
+08000418 t TOPPERS_cfg_offset_INTINIB_intatr
+08000410 t TOPPERS_cfg_offset_INTINIB_intno
+08000420 t TOPPERS_cfg_offset_INTINIB_intpri
+080003d0 t TOPPERS_cfg_offsetof_ALMINIB_almatr
+080003e0 t TOPPERS_cfg_offsetof_ALMINIB_almhdr
+080003d8 t TOPPERS_cfg_offsetof_ALMINIB_exinf
+080003a0 t TOPPERS_cfg_offsetof_CYCINIB_cycatr
+080003b0 t TOPPERS_cfg_offsetof_CYCINIB_cychdr
+080003c0 t TOPPERS_cfg_offsetof_CYCINIB_cycphs
+080003b8 t TOPPERS_cfg_offsetof_CYCINIB_cyctim
+080003a8 t TOPPERS_cfg_offsetof_CYCINIB_exinf
+08000310 t TOPPERS_cfg_offsetof_DTQINIB_dtqatr
+08000318 t TOPPERS_cfg_offsetof_DTQINIB_dtqcnt
+08000320 t TOPPERS_cfg_offsetof_DTQINIB_p_dtqmb
+080002f8 t TOPPERS_cfg_offsetof_FLGINIB_flgatr
+08000300 t TOPPERS_cfg_offsetof_FLGINIB_iflgptn
+08000360 t TOPPERS_cfg_offsetof_MBXINIB_maxmpri
+08000358 t TOPPERS_cfg_offsetof_MBXINIB_mbxatr
+08000378 t TOPPERS_cfg_offsetof_MPFINIB_blkcnt
+08000380 t TOPPERS_cfg_offsetof_MPFINIB_blksz
+08000388 t TOPPERS_cfg_offsetof_MPFINIB_mpf
+08000370 t TOPPERS_cfg_offsetof_MPFINIB_mpfatr
+08000390 t TOPPERS_cfg_offsetof_MPFINIB_p_mpfmb
+08000340 t TOPPERS_cfg_offsetof_PDQINIB_maxdpri
+08000348 t TOPPERS_cfg_offsetof_PDQINIB_p_pdqmb
+08000330 t TOPPERS_cfg_offsetof_PDQINIB_pdqatr
+08000338 t TOPPERS_cfg_offsetof_PDQINIB_pdqcnt
+080002d8 t TOPPERS_cfg_offsetof_SEMINIB_isemcnt
+080002e0 t TOPPERS_cfg_offsetof_SEMINIB_maxsem
+080002d0 t TOPPERS_cfg_offsetof_SEMINIB_sematr
+08000468 t TOPPERS_cfg_offsetof_TCB_p_tinib
+08000480 t TOPPERS_cfg_offsetof_TCB_pc
+08000478 t TOPPERS_cfg_offsetof_TCB_sp
+08000470 t TOPPERS_cfg_offsetof_TCB_texptn
+08000290 t TOPPERS_cfg_offsetof_TINIB_exinf
+080002a0 t TOPPERS_cfg_offsetof_TINIB_ipriority
+080002b0 t TOPPERS_cfg_offsetof_TINIB_stk
+080002a8 t TOPPERS_cfg_offsetof_TINIB_stksz
+08000298 t TOPPERS_cfg_offsetof_TINIB_task
+080002b8 t TOPPERS_cfg_offsetof_TINIB_texatr
+080002c0 t TOPPERS_cfg_offsetof_TINIB_texrtn
+08000288 t TOPPERS_cfg_offsetof_TINIB_tskatr
+080003c8 t TOPPERS_cfg_sizeof_ALMINIB
+08000238 t TOPPERS_cfg_sizeof_ATR
+08000398 t TOPPERS_cfg_sizeof_CYCINIB
+08000308 t TOPPERS_cfg_sizeof_DTQINIB
+08000428 t TOPPERS_cfg_sizeof_EXCINIB
+08000278 t TOPPERS_cfg_sizeof_EXCNO
+080002f0 t TOPPERS_cfg_sizeof_FLGINIB
+080002e8 t TOPPERS_cfg_sizeof_FLGPTN
+08000260 t TOPPERS_cfg_sizeof_FP
+08000220 t TOPPERS_cfg_sizeof_ID
+080003e8 t TOPPERS_cfg_sizeof_INHINIB
+08000268 t TOPPERS_cfg_sizeof_INHNO
+08000408 t TOPPERS_cfg_sizeof_INTINIB
+08000270 t TOPPERS_cfg_sizeof_INTNO
+08000350 t TOPPERS_cfg_sizeof_MBXINIB
+08000368 t TOPPERS_cfg_sizeof_MPFINIB
+08000328 t TOPPERS_cfg_sizeof_PDQINIB
+08000240 t TOPPERS_cfg_sizeof_PRI
+080002c8 t TOPPERS_cfg_sizeof_SEMINIB
+08000230 t TOPPERS_cfg_sizeof_SIZE
+08000460 t TOPPERS_cfg_sizeof_TCB
+08000280 t TOPPERS_cfg_sizeof_TINIB
+08000250 t TOPPERS_cfg_sizeof_VP
+08000258 t TOPPERS_cfg_sizeof_intptr_t
+080006d0 t TOPPERS_cfg_sizeof_pointer
+080006cc t TOPPERS_cfg_sizeof_signed_t
+08000228 t TOPPERS_cfg_sizeof_uint_t
+08000248 t TOPPERS_cfg_sizeof_void_ptr
+08000488 t TOPPERS_cfg_static_api_0
+08000498 t TOPPERS_cfg_static_api_1
+08000560 t TOPPERS_cfg_static_api_10
+08000580 t TOPPERS_cfg_static_api_11
+080005a0 t TOPPERS_cfg_static_api_18
+080005c0 t TOPPERS_cfg_static_api_19
+080004a8 t TOPPERS_cfg_static_api_2
+080005d0 t TOPPERS_cfg_static_api_20
+080005f0 t TOPPERS_cfg_static_api_21
+08000610 t TOPPERS_cfg_static_api_22
+08000630 t TOPPERS_cfg_static_api_23
+08000650 t TOPPERS_cfg_static_api_24
+08000660 t TOPPERS_cfg_static_api_25
+08000670 t TOPPERS_cfg_static_api_26
+08000680 t TOPPERS_cfg_static_api_27
+080006a0 t TOPPERS_cfg_static_api_28
+080006b0 t TOPPERS_cfg_static_api_29
+080004c0 t TOPPERS_cfg_static_api_3
+080004e0 t TOPPERS_cfg_static_api_4
+080004f0 t TOPPERS_cfg_static_api_5
+08000500 t TOPPERS_cfg_static_api_6
+08000510 t TOPPERS_cfg_static_api_7
+08000530 t TOPPERS_cfg_static_api_8
+08000550 t TOPPERS_cfg_static_api_9
+080006a8 t TOPPERS_cfg_valueof_almatr_28
+08000688 t TOPPERS_cfg_valueof_cycatr_27
+08000698 t TOPPERS_cfg_valueof_cycphs_27
+08000690 t TOPPERS_cfg_valueof_cyctim_27
+080006c0 t TOPPERS_cfg_valueof_excatr_29
+080006b8 t TOPPERS_cfg_valueof_excno_29
+080004b8 t TOPPERS_cfg_valueof_inhatr_2
+080004b0 t TOPPERS_cfg_valueof_inhno_2
+08000490 t TOPPERS_cfg_valueof_iniatr_0
+080004e8 t TOPPERS_cfg_valueof_iniatr_4
+080004f8 t TOPPERS_cfg_valueof_iniatr_5
+08000508 t TOPPERS_cfg_valueof_iniatr_6
+08000558 t TOPPERS_cfg_valueof_iniatr_9
+080004d0 t TOPPERS_cfg_valueof_intatr_3
+08000540 t TOPPERS_cfg_valueof_intatr_8
+080004c8 t TOPPERS_cfg_valueof_intno_3
+08000520 t TOPPERS_cfg_valueof_intno_7
+08000538 t TOPPERS_cfg_valueof_intno_8
+080004d8 t TOPPERS_cfg_valueof_intpri_3
+08000548 t TOPPERS_cfg_valueof_intpri_8
+08000570 t TOPPERS_cfg_valueof_isemcnt_10
+08000590 t TOPPERS_cfg_valueof_isemcnt_11
+08000518 t TOPPERS_cfg_valueof_isratr_7
+08000528 t TOPPERS_cfg_valueof_isrpri_7
+080005b0 t TOPPERS_cfg_valueof_itskpri_18
+080005e0 t TOPPERS_cfg_valueof_itskpri_20
+08000600 t TOPPERS_cfg_valueof_itskpri_21
+08000620 t TOPPERS_cfg_valueof_itskpri_22
+08000640 t TOPPERS_cfg_valueof_itskpri_23
+08000578 t TOPPERS_cfg_valueof_maxsem_10
+08000598 t TOPPERS_cfg_valueof_maxsem_11
+08000568 t TOPPERS_cfg_valueof_sematr_10
+08000588 t TOPPERS_cfg_valueof_sematr_11
+080005b8 t TOPPERS_cfg_valueof_stksz_18
+080005e8 t TOPPERS_cfg_valueof_stksz_20
+08000608 t TOPPERS_cfg_valueof_stksz_21
+08000628 t TOPPERS_cfg_valueof_stksz_22
+08000648 t TOPPERS_cfg_valueof_stksz_23
+080004a0 t TOPPERS_cfg_valueof_teratr_1
+080005c8 t TOPPERS_cfg_valueof_teratr_19
+08000658 t TOPPERS_cfg_valueof_texatr_24
+08000668 t TOPPERS_cfg_valueof_texatr_25
+08000678 t TOPPERS_cfg_valueof_texatr_26
+080005a8 t TOPPERS_cfg_valueof_tskatr_18
+080005d8 t TOPPERS_cfg_valueof_tskatr_20
+080005f8 t TOPPERS_cfg_valueof_tskatr_21
+08000618 t TOPPERS_cfg_valueof_tskatr_22
+08000638 t TOPPERS_cfg_valueof_tskatr_23
+08000093 t UsageFault_Handler
+0800007f t __cexit_call_dtors
+08000087 t __cexit_clearlocks
+08000083 t __cexit_closeall
+08000061 t __cmain
+08000095 t __exit
+080000a1 t __iar_program_start
+080006d9 t __low_level_init
+08000000 t __vector_table
+0800006d t _call_main
+0800007d t _exit
+08000073 t _main
+08000077 t exit
+080006d7 t main
+080006d5 t sta_ker
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/depend.dep
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/depend.dep	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/depend.dep	(revision 61)
@@ -0,0 +1,273 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<project>
+  <fileVersion>2</fileVersion>
+  <fileChecksum>3836251794</fileChecksum>
+  <configuration>
+    <name>Debug</name>
+    <outputs>
+      <file>$PROJ_DIR$\post_depend.bat</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\arm_m.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\semaphore.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\xencoding_limits.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\ycheck.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\exception.h</file>
+      <file>$PROJ_DIR$\..\..\..\include\t_stddef.h</file>
+      <file>$TOOLKIT_DIR$\lib\dl7M_tln.a</file>
+      <file>$TOOLKIT_DIR$\inc\c\DLib_Threads.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_insn.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\pridataq.h</file>
+      <file>$PROJ_DIR$\..\..\..\include\t_syslog.h</file>
+      <file>$PROJ_DIR$\..\..\..\include\kernel.h</file>
+      <file>$PROJ_DIR$\src\sample1.cfg</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\time_event.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\DLib_Product.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_config.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\cfg1_out.pbi</file>
+      <file>$PROJ_DIR$\cfg1_out.c</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_cfg1_out.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\cyclic.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\allfunc.h</file>
+      <file>$PROJ_DIR$\..\..\..\include\sil.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\ysizet.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\kernel_int.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\eventflag.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\cfg1_out.o</file>
+      <file>$TOOLKIT_DIR$\lib\m7M_tl.a</file>
+      <file>$PROJ_DIR$\..\..\..\include\queue.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_timer.h</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\syslog.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\DLib_Defaults.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\DLib_Config_Normal.h</file>
+      <file>$TOOLKIT_DIR$\lib\shb_l.a</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\kernel_unrename.h</file>
+      <file>$TOOLKIT_DIR$\lib\rt7M_tl.a</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_test.h</file>
+      <file>$PROJ_DIR$\Debug\List\cfg1_out.map</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_kernel.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_stddef.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_unrename.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\stddef.h</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\serial.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\depend.pbd</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_rename.h</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\logtask.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\kernel_rename.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\alarm.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\interrupt.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\yvals.h</file>
+      <file>$PROJ_DIR$\pre_depend.bat</file>
+      <file>$PROJ_DIR$\Debug\Exe\cfg1_out.out</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\banner.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\task.h</file>
+      <file>$PROJ_DIR$\..\target_rom.icf</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\dataqueue.h</file>
+      <file>$PROJ_DIR$\src\sample1.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\iccarm\tool_stddef.h</file>
+      <file>$PROJ_DIR$\Debug\Exe\cfg1_out.srec</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_sil.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\limits.h</file>
+      <file>$PROJ_DIR$\..\target_stddef.h</file>
+      <file>$PROJ_DIR$\..\target_kernel.h</file>
+      <file>$PROJ_DIR$\..\target_timer.h</file>
+      <file>$PROJ_DIR$\..\target_rename.h</file>
+      <file>$PROJ_DIR$\..\stm32_discovery.h</file>
+      <file>$PROJ_DIR$\..\target_config.h</file>
+      <file>$PROJ_DIR$\..\target_sil.h</file>
+      <file>$PROJ_DIR$\..\target_unrename.h</file>
+      <file>$PROJ_DIR$\..\target_syssvc.h</file>
+      <file>$PROJ_DIR$\..\target_serial.h</file>
+      <file>$PROJ_DIR$\..\target_test.h</file>
+      <file>$PROJ_DIR$\..\target_cfg1_out.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\mailbox.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\kernel_impl.h</file>
+      <file>$PROJ_DIR$\Debug\List\cfg1_out.lst</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\mempfix.h</file>
+    </outputs>
+    <file>
+      <name>$PROJ_DIR$\cfg1_out.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 17</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 75 26</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 24 74 46 64 44 12 6 61 57 41 4 49 31 32 15 3 8 23 60 39 62 38 11 66 65 22 67 59 1 16 9 21 53 28 14 2 25 55 10 73 76 20 47 48 5 34 68 40 63 29 30 52 69 70 42 45 56 71 36 72 19</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 24 74 46 64 44 12 6 61 57 41 4 49 31 32 15 3 8 23 60 39 62 38 11 66 65 22 67 59 1 16 9 21 53 28 14 2 25 55 10 73 76 20 47 48 5 34 68 40 63 29 30 52 69 70 42 45 56 71 36 72 19</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\Debug\Exe\cfg1_out.out</name>
+      <outputs>
+        <tool>
+          <name>ILINK</name>
+          <file> 37</file>
+        </tool>
+        <tool>
+          <name>OBJCOPY</name>
+          <file> 58</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>ILINK</name>
+          <file> 54 26 33 35 27 7</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>[ROOT_NODE]</name>
+      <outputs>
+        <tool>
+          <name>ILINK</name>
+          <file> 51 37</file>
+        </tool>
+      </outputs>
+    </file>
+  </configuration>
+  <configuration>
+    <name>Release</name>
+    <outputs>
+      <file>$PROJ_DIR$\Release\Obj\depend.pbd</file>
+      <file>$PROJ_DIR$\post_depend.bat</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\arm_m.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\semaphore.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\xencoding_limits.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\ycheck.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\exception.h</file>
+      <file>$PROJ_DIR$\..\..\..\include\t_stddef.h</file>
+      <file>$TOOLKIT_DIR$\lib\dl7M_tln.a</file>
+      <file>$TOOLKIT_DIR$\inc\c\DLib_Threads.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_insn.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\pridataq.h</file>
+      <file>$PROJ_DIR$\..\..\..\include\t_syslog.h</file>
+      <file>$PROJ_DIR$\..\..\..\include\kernel.h</file>
+      <file>$PROJ_DIR$\src\sample1.cfg</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\time_event.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\DLib_Product.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_config.h</file>
+      <file>$PROJ_DIR$\cfg1_out.c</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_cfg1_out.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\cyclic.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\allfunc.h</file>
+      <file>$PROJ_DIR$\..\..\..\include\sil.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\ysizet.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\kernel_int.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\eventflag.h</file>
+      <file>$TOOLKIT_DIR$\lib\m7M_tl.a</file>
+      <file>$PROJ_DIR$\..\..\..\include\queue.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_timer.h</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\syslog.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\DLib_Defaults.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\DLib_Config_Normal.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\kernel_unrename.h</file>
+      <file>$TOOLKIT_DIR$\lib\rt7M_tl.a</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_test.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_kernel.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_stddef.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_unrename.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\stddef.h</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\serial.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_rename.h</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\logtask.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\kernel_rename.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\alarm.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\interrupt.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\yvals.h</file>
+      <file>$PROJ_DIR$\pre_depend.bat</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\banner.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\task.h</file>
+      <file>$PROJ_DIR$\..\target_rom.icf</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\dataqueue.h</file>
+      <file>$PROJ_DIR$\src\sample1.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\iccarm\tool_stddef.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_sil.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\limits.h</file>
+      <file>$PROJ_DIR$\..\target_stddef.h</file>
+      <file>$PROJ_DIR$\..\target_kernel.h</file>
+      <file>$PROJ_DIR$\..\target_timer.h</file>
+      <file>$PROJ_DIR$\..\target_rename.h</file>
+      <file>$PROJ_DIR$\..\stm32_discovery.h</file>
+      <file>$PROJ_DIR$\..\target_config.h</file>
+      <file>$PROJ_DIR$\..\target_sil.h</file>
+      <file>$PROJ_DIR$\..\target_unrename.h</file>
+      <file>$PROJ_DIR$\..\target_syssvc.h</file>
+      <file>$PROJ_DIR$\..\target_serial.h</file>
+      <file>$PROJ_DIR$\..\target_test.h</file>
+      <file>$PROJ_DIR$\..\target_cfg1_out.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\mailbox.h</file>
+      <file>$PROJ_DIR$\Release\Obj\cfg1_out.pbi</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\kernel_impl.h</file>
+      <file>$PROJ_DIR$\Release\List\cfg1_out.map</file>
+      <file>$PROJ_DIR$\Release\Exe\cfg1_out.srec</file>
+      <file>$PROJ_DIR$\Release\Exe\cfg1_out.out</file>
+      <file>$PROJ_DIR$\Release\Obj\cfg1_out.o</file>
+      <file>$PROJ_DIR$\Release\List\cfg1_out.lst</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\mempfix.h</file>
+    </outputs>
+    <file>
+      <name>$PROJ_DIR$\cfg1_out.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 68</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 74 73</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 24 69 42 58 40 13 7 55 52 38 5 45 30 31 16 4 9 23 54 36 56 35 12 60 59 22 61 53 2 17 10 21 48 27 15 3 25 50 11 67 75 20 43 44 6 32 62 37 57 28 29 47 63 64 39 41 51 65 34 66 19</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 24 69 42 58 40 13 7 55 52 38 5 45 30 31 16 4 9 23 54 36 56 35 12 60 59 22 61 53 2 17 10 21 48 27 15 3 25 50 11 67 75 20 43 44 6 32 62 37 57 28 29 47 63 64 39 41 51 65 34 66 19</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>[ROOT_NODE]</name>
+      <outputs>
+        <tool>
+          <name>ILINK</name>
+          <file> 72 70</file>
+        </tool>
+      </outputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\Release\Exe\cfg1_out.out</name>
+      <outputs>
+        <tool>
+          <name>ILINK</name>
+          <file> 70</file>
+        </tool>
+        <tool>
+          <name>OBJCOPY</name>
+          <file> 71</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>ILINK</name>
+          <file> 49 73 33 26 8</file>
+        </tool>
+      </inputs>
+    </file>
+  </configuration>
+</project>
+
+
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/depend.ewd
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/depend.ewd	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/depend.ewd	(revision 61)
@@ -0,0 +1,2291 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<project>
+  <fileVersion>2</fileVersion>
+  <configuration>
+    <name>Debug</name>
+    <toolchain>
+      <name>ARM</name>
+    </toolchain>
+    <debug>1</debug>
+    <settings>
+      <name>C-SPY</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>25</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>CInput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CEndian</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCVariant</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>MemOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MemFile</name>
+          <state>$TOOLKIT_DIR$\CONFIG\debugger\ST\STM32F100xB.ddf</state>
+        </option>
+        <option>
+          <name>RunToEnable</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>RunToName</name>
+          <state>main</state>
+        </option>
+        <option>
+          <name>CExtraOptionsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CExtraOptions</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CFpuProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCDDFArgumentProducer</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCDownloadSuppressDownload</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCDownloadVerifyAll</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCProductVersion</name>
+          <state>6.50.1.4445</state>
+        </option>
+        <option>
+          <name>OCDynDriverList</name>
+          <state>STLINK_ID</state>
+        </option>
+        <option>
+          <name>OCLastSavedByProductVersion</name>
+          <state>6.50.2.4581</state>
+        </option>
+        <option>
+          <name>OCDownloadAttachToProgram</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>UseFlashLoader</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CLowLevel</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCBE8Slave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacFile2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CDevice</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>FlashLoadersV3</name>
+          <state>$TOOLKIT_DIR$\config\flashloader\ST\FlashSTM32F100xB.board</state>
+        </option>
+        <option>
+          <name>OCImagesSuppressCheck1</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesPath1</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesSuppressCheck2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesPath2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesSuppressCheck3</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesPath3</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OverrideDefFlashBoard</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesOffset1</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesOffset2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesOffset3</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesUse1</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesUse2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesUse3</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCDeviceConfigMacroFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCDebuggerExtraOption</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCAllMTBOptions</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>ARMSIM_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>OCSimDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCSimEnablePSP</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCSimPspOverrideConfig</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCSimPspConfigFile</name>
+          <state></state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>ANGEL_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>CCAngelHeartbeat</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CAngelCommunication</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CAngelCommBaud</name>
+          <version>0</version>
+          <state>3</state>
+        </option>
+        <option>
+          <name>CAngelCommPort</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ANGELTCPIP</name>
+          <state>aaa.bbb.ccc.ddd</state>
+        </option>
+        <option>
+          <name>DoAngelLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AngelLogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>GDBSERVER_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>TCPIP</name>
+          <state>aaa.bbb.ccc.ddd</state>
+        </option>
+        <option>
+          <name>DoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>LogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CCJTagBreakpointRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJTagDoUpdateBreakpoints</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJTagUpdateBreakpoints</name>
+          <state>_call_main</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>IARROM_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>CRomLogFileCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CRomLogFileEditB</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CRomCommPort</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CRomCommBaud</name>
+          <version>0</version>
+          <state>7</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>IJET_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>2</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IjetAttachSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCIarProbeScriptFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IjetResetList</name>
+          <version>1</version>
+          <state>10</state>
+        </option>
+        <option>
+          <name>IjetHWResetDuration</name>
+          <state>300</state>
+        </option>
+        <option>
+          <name>IjetHWResetDelay</name>
+          <state>200</state>
+        </option>
+        <option>
+          <name>IjetPowerFromProbe</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IjetPowerRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetDoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetLogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>IjetInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetMultiTargetEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetMultiTarget</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetScanChainNonARMDevices</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetIRLength</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetJtagSpeedList</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetProtocolRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetSwoPin</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetCpuClockEdit</name>
+          <state>72.0</state>
+        </option>
+        <option>
+          <name>IjetSwoPrescalerList</name>
+          <version>1</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetBreakpointRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetRestoreBreakpointsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetUpdateBreakpointsEdit</name>
+          <state>_call_main</state>
+        </option>
+        <option>
+          <name>RDICatchReset</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchUndef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchSWI</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchData</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchPrefetch</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchIRQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchFIQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchCORERESET</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchMMERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchNOCPERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchCHKERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchSTATERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchBUSERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchINTERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchHARDERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchDummy</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCProbeCfgOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCProbeConfig</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IjetProbeConfigRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetMultiCPUEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetMultiCPUNumber</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetSelectedCPUBehaviour</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ICpuName</name>
+          <state></state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>JLINK_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>15</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>JLinkSpeed</name>
+          <state>32</state>
+        </option>
+        <option>
+          <name>CCJLinkDoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkLogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CCJLinkHWResetDelay</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>JLinkInitialSpeed</name>
+          <state>32</state>
+        </option>
+        <option>
+          <name>CCDoJlinkMultiTarget</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCScanChainNonARMDevices</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkMultiTarget</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkIRLength</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkCommRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkTCPIP</name>
+          <state>aaa.bbb.ccc.ddd</state>
+        </option>
+        <option>
+          <name>CCJLinkSpeedRadioV2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCUSBDevice</name>
+          <version>1</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCRDICatchReset</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchUndef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchSWI</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchData</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchPrefetch</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchIRQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchFIQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkBreakpointRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkDoUpdateBreakpoints</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkUpdateBreakpoints</name>
+          <state>_call_main</state>
+        </option>
+        <option>
+          <name>CCJLinkInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCJLinkAttachSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCJLinkResetList</name>
+          <version>6</version>
+          <state>5</state>
+        </option>
+        <option>
+          <name>CCJLinkInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchCORERESET</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchMMERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchNOCPERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchCHRERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchSTATERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchBUSERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchINTERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchHARDERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchDummy</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCJLinkScriptFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCJLinkUsbSerialNo</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCTcpIpAlt</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkTcpIpSerialNo</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCCpuClockEdit</name>
+          <state>72.0</state>
+        </option>
+        <option>
+          <name>CCSwoClockAuto</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSwoClockEdit</name>
+          <state>2000</state>
+        </option>
+        <option>
+          <name>OCJLinkTraceSource</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCJLinkTraceSourceDummy</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCJLinkDeviceName</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>LMIFTDI_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>2</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>LmiftdiSpeed</name>
+          <state>500</state>
+        </option>
+        <option>
+          <name>CCLmiftdiDoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCLmiftdiLogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CCLmiFtdiInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCLmiFtdiInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>MACRAIGOR_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>3</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>jtag</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>EmuSpeed</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>TCPIP</name>
+          <state>aaa.bbb.ccc.ddd</state>
+        </option>
+        <option>
+          <name>DoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>LogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>DoEmuMultiTarget</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>EmuMultiTarget</name>
+          <state>0@ARM7TDMI</state>
+        </option>
+        <option>
+          <name>EmuHWReset</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CEmuCommBaud</name>
+          <version>0</version>
+          <state>4</state>
+        </option>
+        <option>
+          <name>CEmuCommPort</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>jtago</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>UnusedAddr</name>
+          <state>0x00800000</state>
+        </option>
+        <option>
+          <name>CCMacraigorHWResetDelay</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCJTagBreakpointRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJTagDoUpdateBreakpoints</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJTagUpdateBreakpoints</name>
+          <state>_call_main</state>
+        </option>
+        <option>
+          <name>CCMacraigorInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCMacraigorInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>PEMICRO_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCPEMicroAttachSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCPEMicroInterfaceList</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPEMicroResetDelay</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCPEMicroJtagSpeed</name>
+          <state>#UNINITIALIZED#</state>
+        </option>
+        <option>
+          <name>CCJPEMicroShowSettings</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>DoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>LogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CCPEMicroUSBDevice</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPEMicroSerialPort</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJPEMicroTCPIPAutoScanNetwork</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCPEMicroTCPIP</name>
+          <state>10.0.0.1</state>
+        </option>
+        <option>
+          <name>CCPEMicroCommCmdLineProducer</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSTLinkInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSTLinkInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>RDI_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>2</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>CRDIDriverDll</name>
+          <state>###Uninitialized###</state>
+        </option>
+        <option>
+          <name>CRDILogFileCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CRDILogFileEdit</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CCRDIHWReset</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchReset</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchUndef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchSWI</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchData</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchPrefetch</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchIRQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchFIQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>STLINK_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>2</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCSTLinkInterfaceRadio</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCSTLinkInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSTLinkResetList</name>
+          <version>1</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCpuClockEdit</name>
+          <state>72.0</state>
+        </option>
+        <option>
+          <name>CCSwoClockAuto</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSwoClockEdit</name>
+          <state>2000</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>THIRDPARTY_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>CThirdPartyDriverDll</name>
+          <state>###Uninitialized###</state>
+        </option>
+        <option>
+          <name>CThirdPartyLogFileCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CThirdPartyLogFileEditB</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>XDS100_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>2</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCXDS100AttachSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>TIPackageOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>TIPackage</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCXds100InterfaceList</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>BoardFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>DoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>LogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+      </data>
+    </settings>
+    <debuggerPlugins>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\middleware\HCCWare\HCCWare.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.JPN.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.JPN.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB6_Plugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.JPN.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.JPN.ewplugin</file>
+        <loadFlag>1</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$EW_DIR$\common\plugins\Orti\Orti.JPN.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$EW_DIR$\common\plugins\SymList\SymList.JPN.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+    </debuggerPlugins>
+  </configuration>
+  <configuration>
+    <name>Release</name>
+    <toolchain>
+      <name>ARM</name>
+    </toolchain>
+    <debug>0</debug>
+    <settings>
+      <name>C-SPY</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>25</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>CInput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CEndian</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCVariant</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>MemOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MemFile</name>
+          <state>$TOOLKIT_DIR$\CONFIG\debugger\ST\STM32F100xB.ddf</state>
+        </option>
+        <option>
+          <name>RunToEnable</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>RunToName</name>
+          <state>main</state>
+        </option>
+        <option>
+          <name>CExtraOptionsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CExtraOptions</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CFpuProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCDDFArgumentProducer</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCDownloadSuppressDownload</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCDownloadVerifyAll</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCProductVersion</name>
+          <state>6.50.1.4445</state>
+        </option>
+        <option>
+          <name>OCDynDriverList</name>
+          <state>STLINK_ID</state>
+        </option>
+        <option>
+          <name>OCLastSavedByProductVersion</name>
+          <state>6.50.2.4581</state>
+        </option>
+        <option>
+          <name>OCDownloadAttachToProgram</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>UseFlashLoader</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CLowLevel</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCBE8Slave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacFile2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CDevice</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>FlashLoadersV3</name>
+          <state>$TOOLKIT_DIR$\config\flashloader\ST\FlashSTM32F100xB.board</state>
+        </option>
+        <option>
+          <name>OCImagesSuppressCheck1</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesPath1</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesSuppressCheck2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesPath2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesSuppressCheck3</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesPath3</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OverrideDefFlashBoard</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesOffset1</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesOffset2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesOffset3</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesUse1</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesUse2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesUse3</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCDeviceConfigMacroFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCDebuggerExtraOption</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCAllMTBOptions</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>ARMSIM_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>OCSimDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCSimEnablePSP</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCSimPspOverrideConfig</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCSimPspConfigFile</name>
+          <state></state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>ANGEL_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>CCAngelHeartbeat</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CAngelCommunication</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CAngelCommBaud</name>
+          <version>0</version>
+          <state>3</state>
+        </option>
+        <option>
+          <name>CAngelCommPort</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ANGELTCPIP</name>
+          <state>aaa.bbb.ccc.ddd</state>
+        </option>
+        <option>
+          <name>DoAngelLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AngelLogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>GDBSERVER_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>TCPIP</name>
+          <state>aaa.bbb.ccc.ddd</state>
+        </option>
+        <option>
+          <name>DoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>LogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CCJTagBreakpointRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJTagDoUpdateBreakpoints</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJTagUpdateBreakpoints</name>
+          <state>_call_main</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>IARROM_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>CRomLogFileCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CRomLogFileEditB</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CRomCommPort</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CRomCommBaud</name>
+          <version>0</version>
+          <state>7</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>IJET_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>2</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IjetAttachSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCIarProbeScriptFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IjetResetList</name>
+          <version>1</version>
+          <state>10</state>
+        </option>
+        <option>
+          <name>IjetHWResetDuration</name>
+          <state>300</state>
+        </option>
+        <option>
+          <name>IjetHWResetDelay</name>
+          <state>200</state>
+        </option>
+        <option>
+          <name>IjetPowerFromProbe</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IjetPowerRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetDoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetLogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>IjetInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetMultiTargetEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetMultiTarget</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetScanChainNonARMDevices</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetIRLength</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetJtagSpeedList</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetProtocolRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetSwoPin</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetCpuClockEdit</name>
+          <state>72.0</state>
+        </option>
+        <option>
+          <name>IjetSwoPrescalerList</name>
+          <version>1</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetBreakpointRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetRestoreBreakpointsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetUpdateBreakpointsEdit</name>
+          <state>_call_main</state>
+        </option>
+        <option>
+          <name>RDICatchReset</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchUndef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchSWI</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchData</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchPrefetch</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchIRQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchFIQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchCORERESET</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchMMERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchNOCPERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchCHKERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchSTATERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchBUSERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchINTERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchHARDERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchDummy</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCProbeCfgOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCProbeConfig</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IjetProbeConfigRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetMultiCPUEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetMultiCPUNumber</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetSelectedCPUBehaviour</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ICpuName</name>
+          <state></state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>JLINK_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>15</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>JLinkSpeed</name>
+          <state>32</state>
+        </option>
+        <option>
+          <name>CCJLinkDoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkLogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CCJLinkHWResetDelay</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>JLinkInitialSpeed</name>
+          <state>32</state>
+        </option>
+        <option>
+          <name>CCDoJlinkMultiTarget</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCScanChainNonARMDevices</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkMultiTarget</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkIRLength</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkCommRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkTCPIP</name>
+          <state>aaa.bbb.ccc.ddd</state>
+        </option>
+        <option>
+          <name>CCJLinkSpeedRadioV2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCUSBDevice</name>
+          <version>1</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCRDICatchReset</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchUndef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchSWI</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchData</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchPrefetch</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchIRQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchFIQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkBreakpointRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkDoUpdateBreakpoints</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkUpdateBreakpoints</name>
+          <state>_call_main</state>
+        </option>
+        <option>
+          <name>CCJLinkInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCJLinkAttachSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCJLinkResetList</name>
+          <version>6</version>
+          <state>5</state>
+        </option>
+        <option>
+          <name>CCJLinkInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchCORERESET</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchMMERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchNOCPERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchCHRERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchSTATERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchBUSERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchINTERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchHARDERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchDummy</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCJLinkScriptFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCJLinkUsbSerialNo</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCTcpIpAlt</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkTcpIpSerialNo</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCCpuClockEdit</name>
+          <state>72.0</state>
+        </option>
+        <option>
+          <name>CCSwoClockAuto</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSwoClockEdit</name>
+          <state>2000</state>
+        </option>
+        <option>
+          <name>OCJLinkTraceSource</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCJLinkTraceSourceDummy</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCJLinkDeviceName</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>LMIFTDI_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>2</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>LmiftdiSpeed</name>
+          <state>500</state>
+        </option>
+        <option>
+          <name>CCLmiftdiDoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCLmiftdiLogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CCLmiFtdiInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCLmiFtdiInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>MACRAIGOR_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>3</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>jtag</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>EmuSpeed</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>TCPIP</name>
+          <state>aaa.bbb.ccc.ddd</state>
+        </option>
+        <option>
+          <name>DoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>LogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>DoEmuMultiTarget</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>EmuMultiTarget</name>
+          <state>0@ARM7TDMI</state>
+        </option>
+        <option>
+          <name>EmuHWReset</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CEmuCommBaud</name>
+          <version>0</version>
+          <state>4</state>
+        </option>
+        <option>
+          <name>CEmuCommPort</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>jtago</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>UnusedAddr</name>
+          <state>0x00800000</state>
+        </option>
+        <option>
+          <name>CCMacraigorHWResetDelay</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCJTagBreakpointRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJTagDoUpdateBreakpoints</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJTagUpdateBreakpoints</name>
+          <state>_call_main</state>
+        </option>
+        <option>
+          <name>CCMacraigorInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCMacraigorInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>PEMICRO_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCPEMicroAttachSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCPEMicroInterfaceList</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPEMicroResetDelay</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCPEMicroJtagSpeed</name>
+          <state>#UNINITIALIZED#</state>
+        </option>
+        <option>
+          <name>CCJPEMicroShowSettings</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>DoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>LogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CCPEMicroUSBDevice</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPEMicroSerialPort</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJPEMicroTCPIPAutoScanNetwork</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCPEMicroTCPIP</name>
+          <state>10.0.0.1</state>
+        </option>
+        <option>
+          <name>CCPEMicroCommCmdLineProducer</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSTLinkInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSTLinkInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>RDI_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>2</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>CRDIDriverDll</name>
+          <state>###Uninitialized###</state>
+        </option>
+        <option>
+          <name>CRDILogFileCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CRDILogFileEdit</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CCRDIHWReset</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchReset</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchUndef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchSWI</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchData</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchPrefetch</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchIRQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchFIQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>STLINK_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>2</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCSTLinkInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSTLinkInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSTLinkResetList</name>
+          <version>1</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCpuClockEdit</name>
+          <state>72.0</state>
+        </option>
+        <option>
+          <name>CCSwoClockAuto</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSwoClockEdit</name>
+          <state>2000</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>THIRDPARTY_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>CThirdPartyDriverDll</name>
+          <state>###Uninitialized###</state>
+        </option>
+        <option>
+          <name>CThirdPartyLogFileCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CThirdPartyLogFileEditB</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>XDS100_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>2</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCXDS100AttachSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>TIPackageOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>TIPackage</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCXds100InterfaceList</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>BoardFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>DoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>LogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+      </data>
+    </settings>
+    <debuggerPlugins>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\middleware\HCCWare\HCCWare.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.JPN.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.JPN.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB6_Plugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.JPN.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.JPN.ewplugin</file>
+        <loadFlag>1</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$EW_DIR$\common\plugins\Orti\Orti.JPN.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$EW_DIR$\common\plugins\SymList\SymList.JPN.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+    </debuggerPlugins>
+  </configuration>
+</project>
+
+
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/depend.ewp
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/depend.ewp	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/depend.ewp	(revision 61)
@@ -0,0 +1,1882 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<project>
+  <fileVersion>2</fileVersion>
+  <configuration>
+    <name>Debug</name>
+    <toolchain>
+      <name>ARM</name>
+    </toolchain>
+    <debug>1</debug>
+    <settings>
+      <name>General</name>
+      <archiveVersion>3</archiveVersion>
+      <data>
+        <version>21</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>ExePath</name>
+          <state>Debug\Exe</state>
+        </option>
+        <option>
+          <name>ObjPath</name>
+          <state>Debug\Obj</state>
+        </option>
+        <option>
+          <name>ListPath</name>
+          <state>Debug\List</state>
+        </option>
+        <option>
+          <name>Variant</name>
+          <version>20</version>
+          <state>38</state>
+        </option>
+        <option>
+          <name>GEndianMode</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Input variant</name>
+          <version>3</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Input description</name>
+          <state>&#x30D5;&#x30A9;&#x30FC;&#x30De;&#x30C3;&#x30BF;&#x306e;&#x81eA;&#x52D5;&#x9078;&#x629e;&#x3002;</state>
+        </option>
+        <option>
+          <name>Output variant</name>
+          <version>2</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Output description</name>
+          <state>&#x30D5;&#x30A9;&#x30FC;&#x30De;&#x30C3;&#x30BF;&#x306e;&#x81eA;&#x52D5;&#x9078;&#x629e;&#x3002;</state>
+        </option>
+        <option>
+          <name>GOutputBinary</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>FPU</name>
+          <version>2</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGCoreOrChip</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>GRuntimeLibSelect</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>GRuntimeLibSelectSlave</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>RTDescription</name>
+          <state>C/C++&#x30e9;&#x30F3;&#x30BF;&#x30A4;&#x30e0;&#x30e9;&#x30A4;&#x30D6;&#x30e9;&#x30eA;&#x306e;&#x901A;&#x5e38;&#x306e;&#x8A2D;&#x5B9A;&#x3092;&#x4F7F;&#x7528;&#x3057;&#x307e;&#x3059;&#x3002;&#x30eD;&#x30B1;&#x30FC;&#x30eB;&#x30A4;&#x30F3;&#x30BF;&#x30D5;&#x30A7;&#x30FC;&#x30B9;&#x306A;&#x3057;&#x3001;C&#x30eD;&#x30B1;&#x30FC;&#x30eB;&#x3001;&#x30D5;&#x30A1;&#x30A4;&#x30eB;&#x8A18;&#x8FF0;&#x5B50;&#x30B5;&#x30DD;&#x30FC;&#x30C8;&#x306A;&#x3057;&#x3001;printf/scanf&#x3067;&#x306e;&#x30De;&#x30eB;&#x30C1;&#x30D0;&#x30A4;&#x30C8;&#x6587;&#x5B57;&#x306A;&#x3057;&#x3001;strtod&#x3067;&#x306e;16&#x9032;&#x6570;&#x6D6e;&#x52D5;&#x5C0F;&#x6570;&#x70B9;&#x6570;&#x306A;&#x3057;&#x3002;</state>
+        </option>
+        <option>
+          <name>OGProductVersion</name>
+          <state>6.50.1.4445</state>
+        </option>
+        <option>
+          <name>OGLastSavedByProductVersion</name>
+          <state>6.50.6.4952</state>
+        </option>
+        <option>
+          <name>GeneralEnableMisra</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraVerbose</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGChipSelectEditMenu</name>
+          <state>STM32F100xB	ST STM32F100xB</state>
+        </option>
+        <option>
+          <name>GenLowLevelInterface</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>GEndianModeBE</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OGBufferedTerminalOutput</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GenStdoutInterface</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraRules98</name>
+          <version>0</version>
+          <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+        </option>
+        <option>
+          <name>GeneralMisraVer</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraRules04</name>
+          <version>0</version>
+          <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+        </option>
+        <option>
+          <name>RTConfigPath2</name>
+          <state>$TOOLKIT_DIR$\INC\c\DLib_Config_Normal.h</state>
+        </option>
+        <option>
+          <name>GFPUCoreSlave</name>
+          <version>20</version>
+          <state>38</state>
+        </option>
+        <option>
+          <name>GBECoreSlave</name>
+          <version>20</version>
+          <state>38</state>
+        </option>
+        <option>
+          <name>OGUseCmsis</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGUseCmsisDspLib</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>ICCARM</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>28</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>CCDefines</name>
+          <state>TOPPERS_LABEL_ASM</state>
+          <state>ALLFUNC</state>
+        </option>
+        <option>
+          <name>CCPreprocFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPreprocComments</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPreprocLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListCFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCListCMnemonics</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCListCMessages</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListAssFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListAssSource</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCEnableRemarks</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCDiagSuppress</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCDiagRemark</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCDiagWarning</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCDiagError</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCObjPrefix</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCAllowList</name>
+          <version>1</version>
+          <state>0000000</state>
+        </option>
+        <option>
+          <name>CCDebugInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IEndianMode</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IExtraOptionsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IExtraOptions</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCLangConformance</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSignedPlainChar</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCRequirePrototypes</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCMultibyteSupport</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCDiagWarnAreErr</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCompilerRuntimeInfo</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IFpuProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OutputFile</name>
+          <state>$FILE_BNAME$.o</state>
+        </option>
+        <option>
+          <name>CCLibConfigHeader</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>PreInclude</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CompilerMisraOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCIncludePath2</name>
+          <state>$PROJ_DIR$\..\..\..\include</state>
+          <state>$PROJ_DIR$\..\..\..\kernel</state>
+          <state>$PROJ_DIR$\..\..\..\arch</state>
+          <state>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm</state>
+          <state>$PROJ_DIR$\..\..\..</state>
+          <state>$PROJ_DIR$\..\..\..\target\stm32_discovery_EWARM2</state>
+          <state>$PROJ_DIR$\src</state>
+          <state>$PROJ_DIR$</state>
+        </option>
+        <option>
+          <name>CCStdIncCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCodeSection</name>
+          <state>.text</state>
+        </option>
+        <option>
+          <name>IInterwork2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IProcessorMode2</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCOptLevel</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCOptStrategy</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCOptLevelSlave</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CompilerMisraRules98</name>
+          <version>0</version>
+          <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+        </option>
+        <option>
+          <name>CompilerMisraRules04</name>
+          <version>0</version>
+          <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+        </option>
+        <option>
+          <name>CCPosIndRopi</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPosIndRwpi</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPosIndNoDynInit</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccLang</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccCDialect</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccAllowVLA</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccCppDialect</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccExceptions</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccRTTI</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccStaticDestr</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccCppInlineSemantics</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccCmsis</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccFloatSemantics</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCOptimizationNoSizeConstraints</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>AARM</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>8</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>AObjPrefix</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AEndian</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ACaseSensitivity</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacroChars</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnWhat</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnOne</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AWarnRange1</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AWarnRange2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>ADebug</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AltRegisterNames</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ADefines</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AList</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AListHeader</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AListing</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Includes</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacDefs</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacExps</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacExec</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OnlyAssed</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MultiLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>PageLengthCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>PageLength</name>
+          <state>80</state>
+        </option>
+        <option>
+          <name>TabSpacing</name>
+          <state>8</state>
+        </option>
+        <option>
+          <name>AXRef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefDefines</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefInternal</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefDual</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AFpuProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AOutputFile</name>
+          <state>$FILE_BNAME$.o</state>
+        </option>
+        <option>
+          <name>AMultibyteSupport</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ALimitErrorsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ALimitErrorsEdit</name>
+          <state>100</state>
+        </option>
+        <option>
+          <name>AIgnoreStdInclude</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AUserIncludes</name>
+          <state>$PROJ_DIR$\..\..\..\include</state>
+          <state>$PROJ_DIR$\..\..\..\kernel</state>
+          <state>$PROJ_DIR$\..\..\..\arch</state>
+          <state>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm</state>
+          <state>$PROJ_DIR$\..\..\..</state>
+          <state>$PROJ_DIR$\..\..\..\target\stm32_discovery_EWARM</state>
+          <state>$PROJ_DIR$\src</state>
+          <state>$PROJ_DIR$</state>
+        </option>
+        <option>
+          <name>AExtraOptionsCheckV2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AExtraOptionsV2</name>
+          <state></state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>OBJCOPY</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>OOCOutputFormat</name>
+          <version>2</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCOutputOverride</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OOCOutputFile</name>
+          <state>cfg1_out.srec</state>
+        </option>
+        <option>
+          <name>OOCCommandLineProducer</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OOCObjCopyEnable</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>CUSTOM</name>
+      <archiveVersion>3</archiveVersion>
+      <data>
+        <extensions></extensions>
+        <cmdline></cmdline>
+      </data>
+    </settings>
+    <settings>
+      <name>BICOMP</name>
+      <archiveVersion>0</archiveVersion>
+      <data/>
+    </settings>
+    <settings>
+      <name>BUILDACTION</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <prebuild>$PROJ_DIR$\pre_depend.bat $PROJ_DIR$ $LIST_DIR$ $EXE_DIR$</prebuild>
+        <postbuild>$PROJ_DIR$\post_depend.bat $PROJ_DIR$  $LIST_DIR$ $EXE_DIR$</postbuild>
+      </data>
+    </settings>
+    <settings>
+      <name>ILINK</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>15</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>IlinkLibIOConfig</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>XLinkMisraHandler</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkInputFileSlave</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOutputFile</name>
+          <state>cfg1_out.out</state>
+        </option>
+        <option>
+          <name>IlinkDebugInfoEnable</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkKeepSymbols</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinaryFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinarySymbol</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinarySegment</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinaryAlign</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkDefines</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkConfigDefines</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkMapFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkLogFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogInitialization</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogModule</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogSection</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogVeneer</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkIcfOverride</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkIcfFile</name>
+          <state>$PROJ_DIR$\..\target_rom.icf</state>
+        </option>
+        <option>
+          <name>IlinkIcfFileSlave</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkEnableRemarks</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkSuppressDiags</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkTreatAsRem</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkTreatAsWarn</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkTreatAsErr</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkWarningsAreErrors</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkUseExtraOptions</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkExtraOptions</name>
+          <state>--no_remove</state>
+        </option>
+        <option>
+          <name>IlinkLowLevelInterfaceSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkAutoLibEnable</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkAdditionalLibs</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkOverrideProgramEntryLabel</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkProgramEntryLabelSelect</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkProgramEntryLabel</name>
+          <state>__iar_program_start</state>
+        </option>
+        <option>
+          <name>DoFill</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>FillerByte</name>
+          <state>0xFF</state>
+        </option>
+        <option>
+          <name>FillerStart</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>FillerEnd</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>CrcSize</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcAlign</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcPoly</name>
+          <state>0x11021</state>
+        </option>
+        <option>
+          <name>CrcCompl</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CrcBitOrder</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CrcInitialValue</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>DoCrc</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkBE8Slave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkBufferedTerminalOutput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkStdoutInterfaceSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcFullSize</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkIElfToolPostProcess</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogAutoLibSelect</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogRedirSymbols</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogUnusedFragments</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCrcReverseByteOrder</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCrcUseAsInput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptInline</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOptExceptionsAllow</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptExceptionsForce</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCmsis</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptMergeDuplSections</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOptUseVfe</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOptForceVfe</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkStackAnalysisEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkStackControlFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkStackCallGraphFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CrcAlgorithm</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcUnitSize</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>IARCHIVE</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>IarchiveInputs</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IarchiveOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IarchiveOutput</name>
+          <state>###Unitialized###</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>BILINK</name>
+      <archiveVersion>0</archiveVersion>
+      <data/>
+    </settings>
+  </configuration>
+  <configuration>
+    <name>Release</name>
+    <toolchain>
+      <name>ARM</name>
+    </toolchain>
+    <debug>0</debug>
+    <settings>
+      <name>General</name>
+      <archiveVersion>3</archiveVersion>
+      <data>
+        <version>21</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>ExePath</name>
+          <state>Release\Exe</state>
+        </option>
+        <option>
+          <name>ObjPath</name>
+          <state>Release\Obj</state>
+        </option>
+        <option>
+          <name>ListPath</name>
+          <state>Release\List</state>
+        </option>
+        <option>
+          <name>Variant</name>
+          <version>20</version>
+          <state>38</state>
+        </option>
+        <option>
+          <name>GEndianMode</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Input variant</name>
+          <version>3</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Input description</name>
+          <state>&#x30D5;&#x30A9;&#x30FC;&#x30De;&#x30C3;&#x30BF;&#x306e;&#x81eA;&#x52D5;&#x9078;&#x629e;&#x3002;</state>
+        </option>
+        <option>
+          <name>Output variant</name>
+          <version>2</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Output description</name>
+          <state>&#x30D5;&#x30A9;&#x30FC;&#x30De;&#x30C3;&#x30BF;&#x306e;&#x81eA;&#x52D5;&#x9078;&#x629e;&#x3002;</state>
+        </option>
+        <option>
+          <name>GOutputBinary</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>FPU</name>
+          <version>2</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGCoreOrChip</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>GRuntimeLibSelect</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>GRuntimeLibSelectSlave</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>RTDescription</name>
+          <state>C/C++&#x30e9;&#x30F3;&#x30BF;&#x30A4;&#x30e0;&#x30e9;&#x30A4;&#x30D6;&#x30e9;&#x30eA;&#x306e;&#x901A;&#x5e38;&#x306e;&#x8A2D;&#x5B9A;&#x3092;&#x4F7F;&#x7528;&#x3057;&#x307e;&#x3059;&#x3002;&#x30eD;&#x30B1;&#x30FC;&#x30eB;&#x30A4;&#x30F3;&#x30BF;&#x30D5;&#x30A7;&#x30FC;&#x30B9;&#x306A;&#x3057;&#x3001;C&#x30eD;&#x30B1;&#x30FC;&#x30eB;&#x3001;&#x30D5;&#x30A1;&#x30A4;&#x30eB;&#x8A18;&#x8FF0;&#x5B50;&#x30B5;&#x30DD;&#x30FC;&#x30C8;&#x306A;&#x3057;&#x3001;printf/scanf&#x3067;&#x306e;&#x30De;&#x30eB;&#x30C1;&#x30D0;&#x30A4;&#x30C8;&#x6587;&#x5B57;&#x306A;&#x3057;&#x3001;strtod&#x3067;&#x306e;16&#x9032;&#x6570;&#x6D6e;&#x52D5;&#x5C0F;&#x6570;&#x70B9;&#x6570;&#x306A;&#x3057;&#x3002;</state>
+        </option>
+        <option>
+          <name>OGProductVersion</name>
+          <state>6.50.1.4445</state>
+        </option>
+        <option>
+          <name>OGLastSavedByProductVersion</name>
+          <state>6.50.6.4952</state>
+        </option>
+        <option>
+          <name>GeneralEnableMisra</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraVerbose</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGChipSelectEditMenu</name>
+          <state>STM32F100xB	ST STM32F100xB</state>
+        </option>
+        <option>
+          <name>GenLowLevelInterface</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GEndianModeBE</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OGBufferedTerminalOutput</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GenStdoutInterface</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraRules98</name>
+          <version>0</version>
+          <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+        </option>
+        <option>
+          <name>GeneralMisraVer</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraRules04</name>
+          <version>0</version>
+          <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+        </option>
+        <option>
+          <name>RTConfigPath2</name>
+          <state>$TOOLKIT_DIR$\INC\c\DLib_Config_Normal.h</state>
+        </option>
+        <option>
+          <name>GFPUCoreSlave</name>
+          <version>20</version>
+          <state>38</state>
+        </option>
+        <option>
+          <name>GBECoreSlave</name>
+          <version>20</version>
+          <state>38</state>
+        </option>
+        <option>
+          <name>OGUseCmsis</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGUseCmsisDspLib</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>ICCARM</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>28</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>CCDefines</name>
+          <state>NDEBUG</state>
+          <state>TOPPERS_LABEL_ASM</state>
+          <state>ALLFUNC</state>
+        </option>
+        <option>
+          <name>CCPreprocFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPreprocComments</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPreprocLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListCFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCListCMnemonics</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListCMessages</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListAssFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListAssSource</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCEnableRemarks</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCDiagSuppress</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCDiagRemark</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCDiagWarning</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCDiagError</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCObjPrefix</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCAllowList</name>
+          <version>1</version>
+          <state>0000000</state>
+        </option>
+        <option>
+          <name>CCDebugInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IEndianMode</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IExtraOptionsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IExtraOptions</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCLangConformance</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSignedPlainChar</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCRequirePrototypes</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCMultibyteSupport</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCDiagWarnAreErr</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCompilerRuntimeInfo</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IFpuProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OutputFile</name>
+          <state>$FILE_BNAME$.o</state>
+        </option>
+        <option>
+          <name>CCLibConfigHeader</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>PreInclude</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CompilerMisraOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCIncludePath2</name>
+          <state>$PROJ_DIR$\..\..\..\include</state>
+          <state>$PROJ_DIR$\..\..\..\kernel</state>
+          <state>$PROJ_DIR$\..\..\..\arch</state>
+          <state>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm</state>
+          <state>$PROJ_DIR$\..\..\..</state>
+          <state>$PROJ_DIR$\..\..\..\target\stm32_discovery_EWARM2</state>
+          <state>$PROJ_DIR$\src</state>
+          <state>$PROJ_DIR$</state>
+        </option>
+        <option>
+          <name>CCStdIncCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCodeSection</name>
+          <state>.text</state>
+        </option>
+        <option>
+          <name>IInterwork2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IProcessorMode2</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCOptLevel</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCOptStrategy</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCOptLevelSlave</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CompilerMisraRules98</name>
+          <version>0</version>
+          <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+        </option>
+        <option>
+          <name>CompilerMisraRules04</name>
+          <version>0</version>
+          <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+        </option>
+        <option>
+          <name>CCPosIndRopi</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPosIndRwpi</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPosIndNoDynInit</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccLang</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccCDialect</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccAllowVLA</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccCppDialect</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccExceptions</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccRTTI</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccStaticDestr</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccCppInlineSemantics</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccCmsis</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccFloatSemantics</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCOptimizationNoSizeConstraints</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>AARM</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>8</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>AObjPrefix</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AEndian</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ACaseSensitivity</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacroChars</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnWhat</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnOne</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AWarnRange1</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AWarnRange2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>ADebug</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AltRegisterNames</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ADefines</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AList</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AListHeader</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AListing</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Includes</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacDefs</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacExps</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacExec</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OnlyAssed</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MultiLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>PageLengthCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>PageLength</name>
+          <state>80</state>
+        </option>
+        <option>
+          <name>TabSpacing</name>
+          <state>8</state>
+        </option>
+        <option>
+          <name>AXRef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefDefines</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefInternal</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefDual</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AFpuProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AOutputFile</name>
+          <state>$FILE_BNAME$.o</state>
+        </option>
+        <option>
+          <name>AMultibyteSupport</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ALimitErrorsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ALimitErrorsEdit</name>
+          <state>100</state>
+        </option>
+        <option>
+          <name>AIgnoreStdInclude</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AUserIncludes</name>
+          <state>$PROJ_DIR$\..\..\..\include</state>
+          <state>$PROJ_DIR$\..\..\..\kernel</state>
+          <state>$PROJ_DIR$\..\..\..\arch</state>
+          <state>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm</state>
+          <state>$PROJ_DIR$\..\..\..</state>
+          <state>$PROJ_DIR$\..\..\..\target\stm32_discovery_EWARM</state>
+          <state>$PROJ_DIR$\src</state>
+          <state>$PROJ_DIR$</state>
+        </option>
+        <option>
+          <name>AExtraOptionsCheckV2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AExtraOptionsV2</name>
+          <state></state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>OBJCOPY</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>OOCOutputFormat</name>
+          <version>2</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCOutputOverride</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OOCOutputFile</name>
+          <state>cfg1_out.srec</state>
+        </option>
+        <option>
+          <name>OOCCommandLineProducer</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OOCObjCopyEnable</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>CUSTOM</name>
+      <archiveVersion>3</archiveVersion>
+      <data>
+        <extensions></extensions>
+        <cmdline></cmdline>
+      </data>
+    </settings>
+    <settings>
+      <name>BICOMP</name>
+      <archiveVersion>0</archiveVersion>
+      <data/>
+    </settings>
+    <settings>
+      <name>BUILDACTION</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <prebuild>$PROJ_DIR$\pre_depend.bat $PROJ_DIR$ $LIST_DIR$ $EXE_DIR$</prebuild>
+        <postbuild>$PROJ_DIR$\post_depend.bat $PROJ_DIR$ $LIST_DIR$ $EXE_DIR$</postbuild>
+      </data>
+    </settings>
+    <settings>
+      <name>ILINK</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>15</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>IlinkLibIOConfig</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>XLinkMisraHandler</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkInputFileSlave</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOutputFile</name>
+          <state>cfg1_out.out</state>
+        </option>
+        <option>
+          <name>IlinkDebugInfoEnable</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkKeepSymbols</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinaryFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinarySymbol</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinarySegment</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinaryAlign</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkDefines</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkConfigDefines</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkMapFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkLogFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogInitialization</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogModule</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogSection</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogVeneer</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkIcfOverride</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkIcfFile</name>
+          <state>$PROJ_DIR$\..\target_rom.icf</state>
+        </option>
+        <option>
+          <name>IlinkIcfFileSlave</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkEnableRemarks</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkSuppressDiags</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkTreatAsRem</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkTreatAsWarn</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkTreatAsErr</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkWarningsAreErrors</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkUseExtraOptions</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkExtraOptions</name>
+          <state>--no_remove</state>
+        </option>
+        <option>
+          <name>IlinkLowLevelInterfaceSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkAutoLibEnable</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkAdditionalLibs</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkOverrideProgramEntryLabel</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkProgramEntryLabelSelect</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkProgramEntryLabel</name>
+          <state>__iar_program_start</state>
+        </option>
+        <option>
+          <name>DoFill</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>FillerByte</name>
+          <state>0xFF</state>
+        </option>
+        <option>
+          <name>FillerStart</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>FillerEnd</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>CrcSize</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcAlign</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcPoly</name>
+          <state>0x11021</state>
+        </option>
+        <option>
+          <name>CrcCompl</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CrcBitOrder</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CrcInitialValue</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>DoCrc</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkBE8Slave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkBufferedTerminalOutput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkStdoutInterfaceSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcFullSize</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkIElfToolPostProcess</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogAutoLibSelect</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogRedirSymbols</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogUnusedFragments</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCrcReverseByteOrder</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCrcUseAsInput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptInline</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptExceptionsAllow</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOptExceptionsForce</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCmsis</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptMergeDuplSections</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOptUseVfe</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptForceVfe</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkStackAnalysisEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkStackControlFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkStackCallGraphFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CrcAlgorithm</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcUnitSize</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>IARCHIVE</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>IarchiveInputs</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IarchiveOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IarchiveOutput</name>
+          <state>###Unitialized###</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>BILINK</name>
+      <archiveVersion>0</archiveVersion>
+      <data/>
+    </settings>
+  </configuration>
+  <file>
+    <name>$PROJ_DIR$\cfg1_out.c</name>
+  </file>
+  <file>
+    <name>$PROJ_DIR$\post_depend.bat</name>
+  </file>
+  <file>
+    <name>$PROJ_DIR$\pre_depend.bat</name>
+  </file>
+  <file>
+    <name>$PROJ_DIR$\src\sample1.cfg</name>
+  </file>
+</project>
+
+
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/kernel_cfg.c
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/kernel_cfg.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/kernel_cfg.c	(revision 61)
@@ -0,0 +1,523 @@
+/* kernel_cfg.c */
+#include "kernel/kernel_int.h"
+#include "kernel_cfg.h"
+
+#ifndef TOPPERS_EMPTY_LABEL
+#define TOPPERS_EMPTY_LABEL(x,y) x y[0]
+#endif
+
+#if TKERNEL_PRID != 0x07u
+#error The kernel does not match this configuration file.
+#endif
+
+/*
+ *  Include Directives (#include)
+ */
+
+#include "target_timer.h"
+#include "syssvc/syslog.h"
+#include "syssvc/banner.h"
+#include "target_syssvc.h"
+#include "target_serial.h"
+#include "syssvc/serial.h"
+#include "syssvc/logtask.h"
+#include "sample1.h"
+
+/*
+ *  Default Definitions of Trace Log Macros
+ */
+
+#ifndef LOG_ISR_ENTER
+#define LOG_ISR_ENTER(intno)
+#endif /* LOG_ISR_ENTER */
+
+#ifndef LOG_ISR_LEAVE
+#define LOG_ISR_LEAVE(intno)
+#endif /* LOG_ISR_LEAVE */
+
+/*
+ *  Task Management Functions
+ */
+
+const ID _kernel_tmax_tskid = (TMIN_TSKID + TNUM_TSKID - 1);
+
+static STK_T _kernel_stack_LOGTASK[COUNT_STK_T(LOGTASK_STACK_SIZE)];
+static STK_T _kernel_stack_TASK1[COUNT_STK_T(STACK_SIZE)];
+static STK_T _kernel_stack_TASK2[COUNT_STK_T(STACK_SIZE)];
+static STK_T _kernel_stack_TASK3[COUNT_STK_T(STACK_SIZE)];
+static STK_T _kernel_stack_MAIN_TASK[COUNT_STK_T(STACK_SIZE)];
+
+const TINIB _kernel_tinib_table[TNUM_TSKID] = {
+	{ (TA_ACT), (intptr_t)(LOGTASK_PORTID), ((TASK)(logtask_main)), INT_PRIORITY(LOGTASK_PRIORITY), ROUND_STK_T(LOGTASK_STACK_SIZE), _kernel_stack_LOGTASK, (TA_NULL), (NULL) },
+	{ (TA_NULL), (intptr_t)(1), ((TASK)(task)), INT_PRIORITY(MID_PRIORITY), ROUND_STK_T(STACK_SIZE), _kernel_stack_TASK1, (TA_NULL), (tex_routine) },
+	{ (TA_NULL), (intptr_t)(2), ((TASK)(task)), INT_PRIORITY(MID_PRIORITY), ROUND_STK_T(STACK_SIZE), _kernel_stack_TASK2, (TA_NULL), (tex_routine) },
+	{ (TA_NULL), (intptr_t)(3), ((TASK)(task)), INT_PRIORITY(MID_PRIORITY), ROUND_STK_T(STACK_SIZE), _kernel_stack_TASK3, (TA_NULL), (tex_routine) },
+	{ (TA_ACT), (intptr_t)(0), ((TASK)(main_task)), INT_PRIORITY(MAIN_PRIORITY), ROUND_STK_T(STACK_SIZE), _kernel_stack_MAIN_TASK, (TA_NULL), (NULL) }
+};
+
+TCB _kernel_tcb_table[TNUM_TSKID];
+
+const ID _kernel_torder_table[TNUM_TSKID] = {
+	LOGTASK, TASK1, TASK2, TASK3, MAIN_TASK
+};
+
+/*
+ *  Semaphore Functions
+ */
+
+const ID _kernel_tmax_semid = (TMIN_SEMID + TNUM_SEMID - 1);
+
+const SEMINIB _kernel_seminib_table[TNUM_SEMID] = {
+	{ (TA_TPRI), (0), (1) },
+	{ (TA_TPRI), (1), (1) }
+};
+
+SEMCB _kernel_semcb_table[TNUM_SEMID];
+
+/*
+ *  Eventflag Functions
+ */
+
+const ID _kernel_tmax_flgid = (TMIN_FLGID + TNUM_FLGID - 1);
+
+TOPPERS_EMPTY_LABEL(const FLGINIB, _kernel_flginib_table);
+TOPPERS_EMPTY_LABEL(FLGCB, _kernel_flgcb_table);
+
+/*
+ *  Dataqueue Functions
+ */
+
+const ID _kernel_tmax_dtqid = (TMIN_DTQID + TNUM_DTQID - 1);
+
+TOPPERS_EMPTY_LABEL(const DTQINIB, _kernel_dtqinib_table);
+TOPPERS_EMPTY_LABEL(DTQCB, _kernel_dtqcb_table);
+
+/*
+ *  Priority Dataqueue Functions
+ */
+
+const ID _kernel_tmax_pdqid = (TMIN_PDQID + TNUM_PDQID - 1);
+
+TOPPERS_EMPTY_LABEL(const PDQINIB, _kernel_pdqinib_table);
+TOPPERS_EMPTY_LABEL(PDQCB, _kernel_pdqcb_table);
+
+/*
+ *  Mailbox Functions
+ */
+
+const ID _kernel_tmax_mbxid = (TMIN_MBXID + TNUM_MBXID - 1);
+
+TOPPERS_EMPTY_LABEL(const MBXINIB, _kernel_mbxinib_table);
+TOPPERS_EMPTY_LABEL(MBXCB, _kernel_mbxcb_table);
+
+/*
+ *  Fixed-sized Memorypool Functions
+ */
+
+const ID _kernel_tmax_mpfid = (TMIN_MPFID + TNUM_MPFID - 1);
+
+TOPPERS_EMPTY_LABEL(const MPFINIB, _kernel_mpfinib_table);
+TOPPERS_EMPTY_LABEL(MPFCB, _kernel_mpfcb_table);
+
+/*
+ *  Cyclic Handler Functions
+ */
+
+const ID _kernel_tmax_cycid = (TMIN_CYCID + TNUM_CYCID - 1);
+
+const CYCINIB _kernel_cycinib_table[TNUM_CYCID] = {
+	{ (TA_NULL), (intptr_t)(0), (cyclic_handler), (2000), (0) }
+};
+
+CYCCB _kernel_cyccb_table[TNUM_CYCID];
+
+/*
+ *  Alarm Handler Functions
+ */
+
+const ID _kernel_tmax_almid = (TMIN_ALMID + TNUM_ALMID - 1);
+
+const ALMINIB _kernel_alminib_table[TNUM_ALMID] = {
+	{ (TA_NULL), (intptr_t)(0), (alarm_handler) }
+};
+
+ALMCB _kernel_almcb_table[TNUM_ALMID];
+
+/*
+ *  Interrupt Management Functions
+ */
+
+void
+_kernel_inthdr_53(void)
+{
+	i_begin_int(53);
+	LOG_ISR_ENTER(53);
+	((ISR)(sio_isr))((intptr_t)(SIO_PORTID));
+	LOG_ISR_LEAVE(53);
+	i_end_int(53);
+}
+
+#define TNUM_INHNO	2
+const uint_t _kernel_tnum_inhno = TNUM_INHNO;
+
+INTHDR_ENTRY(INHNO_TIMER, 15, target_timer_handler)
+INTHDR_ENTRY(53, 53, _kernel_inthdr_53)
+
+const INHINIB _kernel_inhinib_table[TNUM_INHNO] = {
+	{ (INHNO_TIMER), (TA_NULL), (FP)(INT_ENTRY(INHNO_TIMER, target_timer_handler)) },
+	{ (53), (TA_NULL), (FP)(INT_ENTRY(53, _kernel_inthdr_53)) }
+};
+
+#define TNUM_INTNO	2
+const uint_t _kernel_tnum_intno = TNUM_INTNO;
+
+const INTINIB _kernel_intinib_table[TNUM_INTNO] = {
+	{ (INTNO_TIMER), (TA_ENAINT|INTATR_TIMER), (INTPRI_TIMER) },
+	{ (INTNO_SIO), (TA_ENAINT|INTATR_SIO), (INTPRI_SIO) }
+};
+
+/*
+ *  CPU Exception Management Functions
+ */
+
+#define TNUM_EXCNO	1
+const uint_t _kernel_tnum_excno = TNUM_EXCNO;
+
+EXCHDR_ENTRY(CPUEXC1, 6, cpuexc_handler)
+
+const EXCINIB _kernel_excinib_table[TNUM_EXCNO] = {
+	{ (CPUEXC1), (TA_NULL), (FP)(EXC_ENTRY(CPUEXC1, cpuexc_handler)) }
+};
+
+/*
+ *  Stack Area for Non-task Context
+ */
+
+#ifdef DEFAULT_ISTK
+
+#define TOPPERS_ISTKSZ		DEFAULT_ISTKSZ
+#define TOPPERS_ISTK		DEFAULT_ISTK
+
+#else /* DEAULT_ISTK */
+
+static STK_T				_kernel_istack[COUNT_STK_T(DEFAULT_ISTKSZ)];
+#define TOPPERS_ISTKSZ		ROUND_STK_T(DEFAULT_ISTKSZ)
+#define TOPPERS_ISTK		_kernel_istack
+
+#endif /* DEAULT_ISTK */
+
+const SIZE		_kernel_istksz = TOPPERS_ISTKSZ;
+STK_T *const	_kernel_istk = TOPPERS_ISTK;
+
+#ifdef TOPPERS_ISTKPT
+STK_T *const	_kernel_istkpt = TOPPERS_ISTKPT(TOPPERS_ISTK, TOPPERS_ISTKSZ);
+#endif /* TOPPERS_ISTKPT */
+
+/*
+ *  Time Event Management
+ */
+
+TMEVTN   _kernel_tmevt_heap[TNUM_TSKID + TNUM_CYCID + TNUM_ALMID];
+
+/*
+ *  Module Initialization Function
+ */
+
+void
+_kernel_initialize_object(void)
+{
+	_kernel_initialize_task();
+	_kernel_initialize_semaphore();
+	_kernel_initialize_cyclic();
+	_kernel_initialize_alarm();
+	_kernel_initialize_interrupt();
+	_kernel_initialize_exception();
+}
+
+/*
+ *  Initialization Routine
+ */
+
+void
+_kernel_call_inirtn(void)
+{
+	((INIRTN)(target_timer_initialize))((intptr_t)(0));
+	((INIRTN)(syslog_initialize))((intptr_t)(0));
+	((INIRTN)(print_banner))((intptr_t)(0));
+	((INIRTN)(sio_initialize))((intptr_t)(0));
+	((INIRTN)(serial_initialize))((intptr_t)(0));
+}
+
+/*
+ *  Termination Routine
+ */
+
+void
+_kernel_call_terrtn(void)
+{
+	((TERRTN)(logtask_terminate))((intptr_t)(0));
+	((TERRTN)(target_timer_terminate))((intptr_t)(0));
+}
+
+/*
+ *  Target-dependent Definitions (ARM-M)
+ */
+
+
+
+#pragma location=".intvec" 
+const FP _kernel_vector_table[] =      
+ {                                    
+	(FP)(TOPPERS_ISTKPT(TOPPERS_ISTK, TOPPERS_ISTKSZ)),   // 0 The initial stack pointer 
+	(FP)_start,                 // 1 The reset handler         
+ 	(FP)(_kernel_core_exc_entry), /* 2 */
+ 	(FP)(_kernel_core_exc_entry), /* 3 */
+ 	(FP)(_kernel_core_exc_entry), /* 4 */
+ 	(FP)(_kernel_core_exc_entry), /* 5 */
+ 	(FP)(_kernel_core_exc_entry), /* 6 */
+ 	(FP)(_kernel_core_exc_entry), /* 7 */
+ 	(FP)(_kernel_core_exc_entry), /* 8 */
+ 	(FP)(_kernel_core_exc_entry), /* 9 */
+ 	(FP)(_kernel_core_exc_entry), /* 10 */
+ 	(FP)(_kernel_svc_handler),      // 11 SVCall handler /* 11 */
+ 	(FP)(_kernel_core_exc_entry), /* 12 */
+ 	(FP)(_kernel_core_exc_entry), /* 13 */
+ 	(FP)(_kernel_core_exc_entry), /* 14 */
+ 	(FP)(_kernel_core_int_entry), /* 15 */
+ 	(FP)(_kernel_core_int_entry), /* 16 */
+ 	(FP)(_kernel_core_int_entry), /* 17 */
+ 	(FP)(_kernel_core_int_entry), /* 18 */
+ 	(FP)(_kernel_core_int_entry), /* 19 */
+ 	(FP)(_kernel_core_int_entry), /* 20 */
+ 	(FP)(_kernel_core_int_entry), /* 21 */
+ 	(FP)(_kernel_core_int_entry), /* 22 */
+ 	(FP)(_kernel_core_int_entry), /* 23 */
+ 	(FP)(_kernel_core_int_entry), /* 24 */
+ 	(FP)(_kernel_core_int_entry), /* 25 */
+ 	(FP)(_kernel_core_int_entry), /* 26 */
+ 	(FP)(_kernel_core_int_entry), /* 27 */
+ 	(FP)(_kernel_core_int_entry), /* 28 */
+ 	(FP)(_kernel_core_int_entry), /* 29 */
+ 	(FP)(_kernel_core_int_entry), /* 30 */
+ 	(FP)(_kernel_core_int_entry), /* 31 */
+ 	(FP)(_kernel_core_int_entry), /* 32 */
+ 	(FP)(_kernel_core_int_entry), /* 33 */
+ 	(FP)(_kernel_core_int_entry), /* 34 */
+ 	(FP)(_kernel_core_int_entry), /* 35 */
+ 	(FP)(_kernel_core_int_entry), /* 36 */
+ 	(FP)(_kernel_core_int_entry), /* 37 */
+ 	(FP)(_kernel_core_int_entry), /* 38 */
+ 	(FP)(_kernel_core_int_entry), /* 39 */
+ 	(FP)(_kernel_core_int_entry), /* 40 */
+ 	(FP)(_kernel_core_int_entry), /* 41 */
+ 	(FP)(_kernel_core_int_entry), /* 42 */
+ 	(FP)(_kernel_core_int_entry), /* 43 */
+ 	(FP)(_kernel_core_int_entry), /* 44 */
+ 	(FP)(_kernel_core_int_entry), /* 45 */
+ 	(FP)(_kernel_core_int_entry), /* 46 */
+ 	(FP)(_kernel_core_int_entry), /* 47 */
+ 	(FP)(_kernel_core_int_entry), /* 48 */
+ 	(FP)(_kernel_core_int_entry), /* 49 */
+ 	(FP)(_kernel_core_int_entry), /* 50 */
+ 	(FP)(_kernel_core_int_entry), /* 51 */
+ 	(FP)(_kernel_core_int_entry), /* 52 */
+ 	(FP)(_kernel_core_int_entry), /* 53 */
+ 	(FP)(_kernel_core_int_entry), /* 54 */
+ 	(FP)(_kernel_core_int_entry), /* 55 */
+ 	(FP)(_kernel_core_int_entry), /* 56 */
+ 	(FP)(_kernel_core_int_entry), /* 57 */
+ 	(FP)(_kernel_core_int_entry), /* 58 */
+ 	(FP)(_kernel_core_int_entry), /* 59 */
+ 	(FP)(_kernel_core_int_entry), /* 60 */
+ 	(FP)(_kernel_core_int_entry), /* 61 */
+ 	(FP)(_kernel_core_int_entry), /* 62 */
+ 	(FP)(_kernel_core_int_entry), /* 63 */
+ 	(FP)(_kernel_core_int_entry), /* 64 */
+ 	(FP)(_kernel_core_int_entry), /* 65 */
+ 	(FP)(_kernel_core_int_entry), /* 66 */
+ 	(FP)(_kernel_core_int_entry), /* 67 */
+ 	(FP)(_kernel_core_int_entry), /* 68 */
+ 	(FP)(_kernel_core_int_entry), /* 69 */
+ 	(FP)(_kernel_core_int_entry), /* 70 */
+ 	(FP)(_kernel_core_int_entry), /* 71 */
+ 	(FP)(_kernel_core_int_entry), /* 72 */
+ 	(FP)(_kernel_core_int_entry), /* 73 */
+ 	(FP)(_kernel_core_int_entry), /* 74 */
+ 	(FP)(_kernel_core_int_entry), /* 75 */
+ 	(FP)(_kernel_core_int_entry), /* 76 */
+
+};
+
+
+const FP _kernel_exc_tbl[] = 
+{
+	(FP)(_kernel_default_exc_handler), /* 0 */
+	(FP)(_kernel_default_exc_handler), /* 1 */
+	(FP)(_kernel_default_exc_handler), /* 2 */
+	(FP)(_kernel_default_exc_handler), /* 3 */
+	(FP)(_kernel_default_exc_handler), /* 4 */
+	(FP)(_kernel_default_exc_handler), /* 5 */
+	(FP)(cpuexc_handler), /* 6 */
+	(FP)(_kernel_default_exc_handler), /* 7 */
+	(FP)(_kernel_default_exc_handler), /* 8 */
+	(FP)(_kernel_default_exc_handler), /* 9 */
+	(FP)(_kernel_default_exc_handler), /* 10 */
+	(FP)(_kernel_default_exc_handler), /* 11 */
+	(FP)(_kernel_default_exc_handler), /* 12 */
+	(FP)(_kernel_default_exc_handler), /* 13 */
+	(FP)(_kernel_default_exc_handler), /* 14 */
+	(FP)(target_timer_handler), /* 15 */
+	(FP)(_kernel_default_int_handler), /* 16 */
+	(FP)(_kernel_default_int_handler), /* 17 */
+	(FP)(_kernel_default_int_handler), /* 18 */
+	(FP)(_kernel_default_int_handler), /* 19 */
+	(FP)(_kernel_default_int_handler), /* 20 */
+	(FP)(_kernel_default_int_handler), /* 21 */
+	(FP)(_kernel_default_int_handler), /* 22 */
+	(FP)(_kernel_default_int_handler), /* 23 */
+	(FP)(_kernel_default_int_handler), /* 24 */
+	(FP)(_kernel_default_int_handler), /* 25 */
+	(FP)(_kernel_default_int_handler), /* 26 */
+	(FP)(_kernel_default_int_handler), /* 27 */
+	(FP)(_kernel_default_int_handler), /* 28 */
+	(FP)(_kernel_default_int_handler), /* 29 */
+	(FP)(_kernel_default_int_handler), /* 30 */
+	(FP)(_kernel_default_int_handler), /* 31 */
+	(FP)(_kernel_default_int_handler), /* 32 */
+	(FP)(_kernel_default_int_handler), /* 33 */
+	(FP)(_kernel_default_int_handler), /* 34 */
+	(FP)(_kernel_default_int_handler), /* 35 */
+	(FP)(_kernel_default_int_handler), /* 36 */
+	(FP)(_kernel_default_int_handler), /* 37 */
+	(FP)(_kernel_default_int_handler), /* 38 */
+	(FP)(_kernel_default_int_handler), /* 39 */
+	(FP)(_kernel_default_int_handler), /* 40 */
+	(FP)(_kernel_default_int_handler), /* 41 */
+	(FP)(_kernel_default_int_handler), /* 42 */
+	(FP)(_kernel_default_int_handler), /* 43 */
+	(FP)(_kernel_default_int_handler), /* 44 */
+	(FP)(_kernel_default_int_handler), /* 45 */
+	(FP)(_kernel_default_int_handler), /* 46 */
+	(FP)(_kernel_default_int_handler), /* 47 */
+	(FP)(_kernel_default_int_handler), /* 48 */
+	(FP)(_kernel_default_int_handler), /* 49 */
+	(FP)(_kernel_default_int_handler), /* 50 */
+	(FP)(_kernel_default_int_handler), /* 51 */
+	(FP)(_kernel_default_int_handler), /* 52 */
+	(FP)(_kernel_inthdr_53), /* 53 */
+	(FP)(_kernel_default_int_handler), /* 54 */
+	(FP)(_kernel_default_int_handler), /* 55 */
+	(FP)(_kernel_default_int_handler), /* 56 */
+	(FP)(_kernel_default_int_handler), /* 57 */
+	(FP)(_kernel_default_int_handler), /* 58 */
+	(FP)(_kernel_default_int_handler), /* 59 */
+	(FP)(_kernel_default_int_handler), /* 60 */
+	(FP)(_kernel_default_int_handler), /* 61 */
+	(FP)(_kernel_default_int_handler), /* 62 */
+	(FP)(_kernel_default_int_handler), /* 63 */
+	(FP)(_kernel_default_int_handler), /* 64 */
+	(FP)(_kernel_default_int_handler), /* 65 */
+	(FP)(_kernel_default_int_handler), /* 66 */
+	(FP)(_kernel_default_int_handler), /* 67 */
+	(FP)(_kernel_default_int_handler), /* 68 */
+	(FP)(_kernel_default_int_handler), /* 69 */
+	(FP)(_kernel_default_int_handler), /* 70 */
+	(FP)(_kernel_default_int_handler), /* 71 */
+	(FP)(_kernel_default_int_handler), /* 72 */
+	(FP)(_kernel_default_int_handler), /* 73 */
+	(FP)(_kernel_default_int_handler), /* 74 */
+	(FP)(_kernel_default_int_handler), /* 75 */
+	(FP)(_kernel_default_int_handler), /* 76 */
+
+};
+
+const uint32_t _kernel_bitpat_cfgint[5] = {
+	UINT32_C(0x00008000), 
+	UINT32_C(0x00200000), 
+	UINT32_C(0x00000000), 
+	UINT32_C(0x00000000), 
+	UINT32_C(0x00000000), 
+
+};
+
+const uint32_t _kernel_int_iipm_tbl[] = {
+	UINT32_C(0x00000000), /* 0x000 */
+	UINT32_C(0x00000000), /* 0x001 */
+	UINT32_C(0x00000000), /* 0x002 */
+	UINT32_C(0x00000000), /* 0x003 */
+	UINT32_C(0x00000000), /* 0x004 */
+	UINT32_C(0x00000000), /* 0x005 */
+	UINT32_C(0x00000000), /* 0x006 */
+	UINT32_C(0x00000000), /* 0x007 */
+	UINT32_C(0x00000000), /* 0x008 */
+	UINT32_C(0x00000000), /* 0x009 */
+	UINT32_C(0x00000000), /* 0x00a */
+	UINT32_C(0x00000000), /* 0x00b */
+	UINT32_C(0x00000000), /* 0x00c */
+	UINT32_C(0x00000000), /* 0x00d */
+	UINT32_C(0x00000000), /* 0x00e */
+	UINT32_C(0x000000a0), /* 0x00f */
+	UINT32_C(0x00000000), /* 0x010 */
+	UINT32_C(0x00000000), /* 0x011 */
+	UINT32_C(0x00000000), /* 0x012 */
+	UINT32_C(0x00000000), /* 0x013 */
+	UINT32_C(0x00000000), /* 0x014 */
+	UINT32_C(0x00000000), /* 0x015 */
+	UINT32_C(0x00000000), /* 0x016 */
+	UINT32_C(0x00000000), /* 0x017 */
+	UINT32_C(0x00000000), /* 0x018 */
+	UINT32_C(0x00000000), /* 0x019 */
+	UINT32_C(0x00000000), /* 0x01a */
+	UINT32_C(0x00000000), /* 0x01b */
+	UINT32_C(0x00000000), /* 0x01c */
+	UINT32_C(0x00000000), /* 0x01d */
+	UINT32_C(0x00000000), /* 0x01e */
+	UINT32_C(0x00000000), /* 0x01f */
+	UINT32_C(0x00000000), /* 0x020 */
+	UINT32_C(0x00000000), /* 0x021 */
+	UINT32_C(0x00000000), /* 0x022 */
+	UINT32_C(0x00000000), /* 0x023 */
+	UINT32_C(0x00000000), /* 0x024 */
+	UINT32_C(0x00000000), /* 0x025 */
+	UINT32_C(0x00000000), /* 0x026 */
+	UINT32_C(0x00000000), /* 0x027 */
+	UINT32_C(0x00000000), /* 0x028 */
+	UINT32_C(0x00000000), /* 0x029 */
+	UINT32_C(0x00000000), /* 0x02a */
+	UINT32_C(0x00000000), /* 0x02b */
+	UINT32_C(0x00000000), /* 0x02c */
+	UINT32_C(0x00000000), /* 0x02d */
+	UINT32_C(0x00000000), /* 0x02e */
+	UINT32_C(0x00000000), /* 0x02f */
+	UINT32_C(0x00000000), /* 0x030 */
+	UINT32_C(0x00000000), /* 0x031 */
+	UINT32_C(0x00000000), /* 0x032 */
+	UINT32_C(0x00000000), /* 0x033 */
+	UINT32_C(0x00000000), /* 0x034 */
+	UINT32_C(0x000000d0), /* 0x035 */
+	UINT32_C(0x00000000), /* 0x036 */
+	UINT32_C(0x00000000), /* 0x037 */
+	UINT32_C(0x00000000), /* 0x038 */
+	UINT32_C(0x00000000), /* 0x039 */
+	UINT32_C(0x00000000), /* 0x03a */
+	UINT32_C(0x00000000), /* 0x03b */
+	UINT32_C(0x00000000), /* 0x03c */
+	UINT32_C(0x00000000), /* 0x03d */
+	UINT32_C(0x00000000), /* 0x03e */
+	UINT32_C(0x00000000), /* 0x03f */
+	UINT32_C(0x00000000), /* 0x040 */
+	UINT32_C(0x00000000), /* 0x041 */
+	UINT32_C(0x00000000), /* 0x042 */
+	UINT32_C(0x00000000), /* 0x043 */
+	UINT32_C(0x00000000), /* 0x044 */
+	UINT32_C(0x00000000), /* 0x045 */
+	UINT32_C(0x00000000), /* 0x046 */
+	UINT32_C(0x00000000), /* 0x047 */
+	UINT32_C(0x00000000), /* 0x048 */
+	UINT32_C(0x00000000), /* 0x049 */
+	UINT32_C(0x00000000), /* 0x04a */
+	UINT32_C(0x00000000), /* 0x04b */
+	UINT32_C(0x00000000), /* 0x04c */
+
+};
+
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/kernel_cfg.h
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/kernel_cfg.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/kernel_cfg.h	(revision 61)
@@ -0,0 +1,26 @@
+/* kernel_cfg.h */
+#ifndef TOPPERS_KERNEL_CFG_H
+#define TOPPERS_KERNEL_CFG_H
+
+#define TNUM_TSKID	5
+#define TNUM_SEMID	2
+#define TNUM_FLGID	0
+#define TNUM_DTQID	0
+#define TNUM_PDQID	0
+#define TNUM_MBXID	0
+#define TNUM_MPFID	0
+#define TNUM_CYCID	1
+#define TNUM_ALMID	1
+
+#define LOGTASK	1
+#define TASK1	2
+#define TASK2	3
+#define TASK3	4
+#define MAIN_TASK	5
+#define SERIAL_RCV_SEM1	1
+#define SERIAL_SND_SEM1	2
+#define CYCHDR1	1
+#define ALMHDR1	1
+
+#endif /* TOPPERS_KERNEL_CFG_H */
+
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/offset.h
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/offset.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/offset.h	(revision 61)
@@ -0,0 +1,11 @@
+/* offset.h */
+
+#define TCB_p_tinib	8
+#define TCB_texptn	16
+#define TCB_sp	24
+#define TCB_pc	28
+#define TINIB_exinf	4
+#define TINIB_task	8
+#define TCB_enatex	14
+#define TCB_enatex_bit	2
+#define TCB_enatex_mask	0x4
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/post_depend.bat
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/post_depend.bat	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/post_depend.bat	(revision 61)
@@ -0,0 +1,34 @@
+REM @ECHO OFF
+SETLOCAL
+
+REM AvÌcfgt@CðpXt«Åwè
+SET APP_CFG=src\sample1.cfg
+
+
+
+
+SET CURRENT_DIR=%1
+SET LIST_DIR=%2
+SET EXE_DIR=%3
+
+%CURRENT_DIR:~0,2%
+CHDIR %CURRENT_DIR%
+
+
+REM cfgtH_ÌºÉu¢½ê
+REM ..\..\..\cfg\cfg\ewgen_sym  -i %LIST_DIR%\cfg1_out.map -o cfg1_out.syms 
+
+REM  VXeÂ«ÏÅwè·éê
+%EWGENSYM%  -i %LIST_DIR%\cfg1_out.map -o cfg1_out.syms 
+
+
+XCOPY /Y %EXE_DIR%\cfg1_out.srec .\
+
+
+REM ..\..\..\cfg\cfg\cfg --pass 2 --kernel asp -I. -I..\..\..\include -I..\..\..\arch -I..\..\..  -I.. -I..\..\..\arch\arm_m_iccarm\ -T ..\target.tf --api-table ..\..\..\kernel\kernel_api.csv  --cfg1-def-table ..\..\..\kernel\kernel_def.csv  --cfg1-def-table ..\..\..\arch\arm_m_iccarm\prc_def.csv %APP_CFG% 
+%ASPCFG% --pass 2 --kernel asp -I. -I..\..\..\include -I..\..\..\arch -I..\..\..  -I.. -I..\..\..\arch\arm_m_iccarm\ -T ..\target.tf --api-table ..\..\..\kernel\kernel_api.csv  --cfg1-def-table ..\..\..\kernel\kernel_def.csv  --cfg1-def-table ..\..\..\arch\arm_m_iccarm\prc_def.csv %APP_CFG% 
+
+REM ..\..\..\cfg\cfg\cfg --pass 3 --kernel asp -I. -I..\..\..\include -I..\..\..\arch -I..\..\..  -I.. -I..\..\..\arch\arm_m_iccarm\ --rom-image cfg1_out.srec --symbol-table cfg1_out.syms -T ..\target_offset.tf --api-table ..\..\..\kernel\kernel_api.csv  --cfg1-def-table ..\..\..\kernel\kernel_def.csv  --cfg1-def-table ..\..\..\arch\arm_m_iccarm\prc_def.csv %APP_CFG% 
+%ASPCFG% --pass 3 --kernel asp -I. -I..\..\..\include -I..\..\..\arch -I..\..\..  -I.. -I..\..\..\arch\arm_m_iccarm\ --rom-image cfg1_out.srec --symbol-table cfg1_out.syms -T ..\target_offset.tf --api-table ..\..\..\kernel\kernel_api.csv  --cfg1-def-table ..\..\..\kernel\kernel_def.csv  --cfg1-def-table ..\..\..\arch\arm_m_iccarm\prc_def.csv %APP_CFG% 
+
+ENDLOCAL
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/pre_depend.bat
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/pre_depend.bat	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/pre_depend.bat	(revision 61)
@@ -0,0 +1,17 @@
+REM @ECHO OFF
+SETLOCAL
+
+REM AvÌcfgt@CðpXt«Åwè
+SET APP_CFG=src\sample1.cfg
+
+
+SET CURRENT_DIR=%1
+
+%CURRENT_DIR:~0,2%
+CHDIR %CURRENT_DIR%
+
+REM ..\..\..\cfg\cfg\cfg --pass 1 --kernel asp -I. -I..\..\..\include -I..\..\..\arch -I..\..\..  -I..\..\..\target\stm32_discovery_EWARM2 -I..\..\..\arch\arm_m_iccarm\ --api-table ..\..\..\kernel\kernel_api.csv  --cfg1-def-table ..\..\..\kernel\kernel_def.csv  --cfg1-def-table ..\..\..\arch\arm_m_iccarm\prc_def.csv %APP_CFG%
+%ASPCFG%  --pass 1 --kernel asp -I. -I..\..\..\include -I..\..\..\arch -I..\..\..  -I..\..\..\target\stm32_discovery_EWARM2 -I..\..\..\arch\arm_m_iccarm\ --api-table ..\..\..\kernel\kernel_api.csv  --cfg1-def-table ..\..\..\kernel\kernel_def.csv  --cfg1-def-table ..\..\..\arch\arm_m_iccarm\prc_def.csv %APP_CFG%
+
+
+ENDLOCAL
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/sample.dep
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/sample.dep	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/sample.dep	(revision 61)
@@ -0,0 +1,2266 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<project>
+  <fileVersion>2</fileVersion>
+  <fileChecksum>1584675781</fileChecksum>
+  <configuration>
+    <name>Debug</name>
+    <outputs>
+      <file>$PROJ_DIR$\Debug\Obj\cyclic.o</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\eventflag.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\mempfix.o</file>
+      <file>$PROJ_DIR$\Debug\Obj\sys_manage.pbi</file>
+      <file>$PROJ_DIR$\..\target_config.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\exception.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\mempfix.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\dataqueue.pbi</file>
+      <file>$PROJ_DIR$\Debug\Obj\histogram.pbi</file>
+      <file>$PROJ_DIR$\Debug\Exe\sample.out</file>
+      <file>$PROJ_DIR$\Debug\List\test_lib.lst</file>
+      <file>$PROJ_DIR$\Debug\Obj\task_sync.pbi</file>
+      <file>$TOOLKIT_DIR$\inc\c\ysizet.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\prc_timer.pbi</file>
+      <file>$PROJ_DIR$\Debug\Obj\mailbox.pbi</file>
+      <file>$PROJ_DIR$\Debug\List\task_refer.lst</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_sil.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\strerror.pbi</file>
+      <file>$PROJ_DIR$\..\target_rom.icf</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_kernel.h</file>
+      <file>$PROJ_DIR$\Debug\List\prc_timer.lst</file>
+      <file>$PROJ_DIR$\..\..\..\include\log_output.h</file>
+      <file>$PROJ_DIR$\Debug\List\target_config.lst</file>
+      <file>$PROJ_DIR$\..\..\..\include\histogram.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\yvals.h</file>
+      <file>$PROJ_DIR$\..\target_timer.h</file>
+      <file>$PROJ_DIR$\Debug\List\mailbox.lst</file>
+      <file>$PROJ_DIR$\Debug\List\cyclic.lst</file>
+      <file>$PROJ_DIR$\Debug\Obj\dataqueue.o</file>
+      <file>$PROJ_DIR$\Debug\Obj\target_serial.o</file>
+      <file>$PROJ_DIR$\..\..\..\library\test_lib.c</file>
+      <file>$PROJ_DIR$\..\..\..\library\t_perror.c</file>
+      <file>$PROJ_DIR$\Debug\Obj\serial.pbi</file>
+      <file>$PROJ_DIR$\Debug\List\pridataq.lst</file>
+      <file>$PROJ_DIR$\Debug\List\sample.map</file>
+      <file>$TOOLKIT_DIR$\inc\c\DLib_Config_Normal.h</file>
+      <file>$PROJ_DIR$\kernel_cfg.c</file>
+      <file>$PROJ_DIR$\..\target_support.S</file>
+      <file>$PROJ_DIR$\kernel_cfg.h</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\serial.c</file>
+      <file>$TOOLKIT_DIR$\inc\c\stdarg.h</file>
+      <file>$PROJ_DIR$\Debug\List\alarm.lst</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\logtask.c</file>
+      <file>$PROJ_DIR$\Debug\Obj\t_perror.o</file>
+      <file>$PROJ_DIR$\Debug\List\wait.lst</file>
+      <file>$PROJ_DIR$\Debug\List\task_manage.lst</file>
+      <file>$PROJ_DIR$\..\..\..\library\strerror.c</file>
+      <file>$PROJ_DIR$\Debug\Obj\kernel_cfg.pbi</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\syslog.c</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\serial.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\pridataq.o</file>
+      <file>$PROJ_DIR$\src\sample1.c</file>
+      <file>$PROJ_DIR$\..\target_config.c</file>
+      <file>$PROJ_DIR$\Debug\List\sample1.lst</file>
+      <file>$PROJ_DIR$\Debug\Obj\log_output.pbi</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\vasyslog.c</file>
+      <file>$TOOLKIT_DIR$\inc\c\xencoding_limits.h</file>
+      <file>$PROJ_DIR$\Debug\List\vasyslog.lst</file>
+      <file>$PROJ_DIR$\..\target_serial.c</file>
+      <file>$TOOLKIT_DIR$\inc\c\limits.h</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\banner.c</file>
+      <file>$PROJ_DIR$\Debug\Obj\eventflag.o</file>
+      <file>$PROJ_DIR$\..\target_serial.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_rename.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_test.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\cyclic.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\target_support.o</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\time_event.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\ycheck.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\task_refer.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\alarm.c</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_timer.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\exception.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\dataqueue.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\task_manage.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\interrupt.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\mailbox.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\task_sync.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\task_except.c</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_config.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\task.c</file>
+      <file>$PROJ_DIR$\..\..\..\library\log_output.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\eventflag.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\time_event.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\startup.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\mempfix.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\time_manage.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\pridataq.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\cyclic.c</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_support.S</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\semaphore.c</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\start.S</file>
+      <file>$PROJ_DIR$\..\..\..\library\histogram.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\sys_manage.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\wait.c</file>
+      <file>$PROJ_DIR$\Debug\Obj\vasyslog.o</file>
+      <file>$PROJ_DIR$\Debug\List\eventflag.lst</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\kernel_impl.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\task_manage.o</file>
+      <file>$PROJ_DIR$\Debug\Obj\prc_support.o</file>
+      <file>$PROJ_DIR$\Debug\Obj\sample1.o</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\wait.h</file>
+      <file>$PROJ_DIR$\..\..\..\include\sil.h</file>
+      <file>$PROJ_DIR$\..\target_kernel.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\sys_manage.o</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_stddef.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\eventflag.pbi</file>
+      <file>$PROJ_DIR$\Debug\Obj\interrupt.pbi</file>
+      <file>$PROJ_DIR$\Debug\Obj\cyclic.pbi</file>
+      <file>$PROJ_DIR$\Debug\Obj\mailbox.o</file>
+      <file>$PROJ_DIR$\Debug\Obj\pridataq.pbi</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\task.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\log_output.o</file>
+      <file>$PROJ_DIR$\Debug\Obj\time_event.o</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\kernel_rename.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\task_manage.pbi</file>
+      <file>$PROJ_DIR$\Debug\List\logtask.lst</file>
+      <file>$PROJ_DIR$\Debug\List\dataqueue.lst</file>
+      <file>$PROJ_DIR$\Debug\Obj\semaphore.pbi</file>
+      <file>$PROJ_DIR$\Debug\List\time_event.lst</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\syslog.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\pridataq.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\kernel_int.h</file>
+      <file>$TOOLKIT_DIR$\lib\shb_l.a</file>
+      <file>$PROJ_DIR$\Debug\Obj\task_except.pbi</file>
+      <file>$TOOLKIT_DIR$\lib\dl7M_tln.a</file>
+      <file>$TOOLKIT_DIR$\lib\m7M_tl.a</file>
+      <file>$PROJ_DIR$\Debug\Obj\sample.pbd</file>
+      <file>$PROJ_DIR$\Debug\List\t_perror.lst</file>
+      <file>$PROJ_DIR$\Debug\List\start.lst</file>
+      <file>$PROJ_DIR$\Debug\List\kernel_cfg.lst</file>
+      <file>$PROJ_DIR$\Debug\List\sys_manage.lst</file>
+      <file>$PROJ_DIR$\Debug\List\syslog.lst</file>
+      <file>$PROJ_DIR$\Debug\List\startup.lst</file>
+      <file>$PROJ_DIR$\Debug\List\task.lst</file>
+      <file>$PROJ_DIR$\src\sample1.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\allfunc.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\kernel_unrename.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\vasyslog.pbi</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\logtask.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\banner.o</file>
+      <file>$TOOLKIT_DIR$\inc\c\DLib_Threads.h</file>
+      <file>$PROJ_DIR$\..\stm32_discovery.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\wait.o</file>
+      <file>$PROJ_DIR$\..\..\..\include\t_stdlib.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\test_lib.o</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\semaphore.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\banner.pbi</file>
+      <file>$PROJ_DIR$\Debug\Obj\task_refer.o</file>
+      <file>$PROJ_DIR$\..\..\..\arch\iccarm\tool_stddef.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\dataqueue.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\DLib_Product.h</file>
+      <file>$PROJ_DIR$\Debug\List\banner.lst</file>
+      <file>$PROJ_DIR$\Debug\List\target_support.lst</file>
+      <file>$PROJ_DIR$\Debug\Obj\exception.pbi</file>
+      <file>$PROJ_DIR$\..\..\..\include\kernel.h</file>
+      <file>$PROJ_DIR$\..\target_unrename.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\prc_config.o</file>
+      <file>$PROJ_DIR$\Debug\List\exception.lst</file>
+      <file>$PROJ_DIR$\Debug\Obj\alarm.pbi</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\banner.h</file>
+      <file>$PROJ_DIR$\..\..\..\include\t_syslog.h</file>
+      <file>$PROJ_DIR$\..\target_sil.h</file>
+      <file>$PROJ_DIR$\Debug\List\prc_config.lst</file>
+      <file>$PROJ_DIR$\Debug\Obj\logtask.o</file>
+      <file>$PROJ_DIR$\Debug\Obj\semaphore.o</file>
+      <file>$TOOLKIT_DIR$\inc\c\stddef.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\strerror.o</file>
+      <file>$TOOLKIT_DIR$\lib\rt7M_tl.a</file>
+      <file>$PROJ_DIR$\Debug\List\prc_support.lst</file>
+      <file>$PROJ_DIR$\Debug\Obj\logtask.pbi</file>
+      <file>$PROJ_DIR$\..\target_syssvc.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\task_refer.pbi</file>
+      <file>$PROJ_DIR$\Debug\Obj\task.pbi</file>
+      <file>$PROJ_DIR$\Debug\List\target_serial.lst</file>
+      <file>$PROJ_DIR$\Debug\Obj\wait.pbi</file>
+      <file>$PROJ_DIR$\Debug\Obj\prc_config.pbi</file>
+      <file>$PROJ_DIR$\Debug\Obj\task_except.o</file>
+      <file>$PROJ_DIR$\Debug\List\strerror.lst</file>
+      <file>$PROJ_DIR$\Debug\Obj\task_sync.o</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_timer.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\prc_timer.o</file>
+      <file>$PROJ_DIR$\Debug\Obj\time_event.pbi</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_config.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\target_config.o</file>
+      <file>$PROJ_DIR$\Debug\Obj\syslog.pbi</file>
+      <file>$PROJ_DIR$\..\..\..\include\t_stddef.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\test_lib.pbi</file>
+      <file>$PROJ_DIR$\Debug\Obj\task.o</file>
+      <file>$PROJ_DIR$\Debug\Obj\time_manage.pbi</file>
+      <file>$PROJ_DIR$\Debug\List\log_output.lst</file>
+      <file>$PROJ_DIR$\Debug\List\semaphore.lst</file>
+      <file>$PROJ_DIR$\Debug\List\histogram.lst</file>
+      <file>$PROJ_DIR$\Debug\Obj\t_perror.pbi</file>
+      <file>$TOOLKIT_DIR$\inc\c\DLib_Defaults.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\mailbox.h</file>
+      <file>$PROJ_DIR$\offset.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\serial.o</file>
+      <file>$PROJ_DIR$\Debug\Obj\target_config.pbi</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\alarm.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\interrupt.o</file>
+      <file>$PROJ_DIR$\..\target_test.h</file>
+      <file>$PROJ_DIR$\..\..\..\include\test_lib.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\startup.o</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_insn.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\time_manage.o</file>
+      <file>$PROJ_DIR$\Debug\Obj\kernel_cfg.o</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\interrupt.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\syslog.o</file>
+      <file>$PROJ_DIR$\Debug\Obj\start.o</file>
+      <file>$PROJ_DIR$\Debug\Obj\alarm.o</file>
+      <file>$PROJ_DIR$\Debug\Obj\startup.pbi</file>
+      <file>$PROJ_DIR$\..\target_rename.h</file>
+      <file>$PROJ_DIR$\Debug\List\interrupt.lst</file>
+      <file>$PROJ_DIR$\Debug\List\time_manage.lst</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\arm_m.h</file>
+      <file>$PROJ_DIR$\Debug\List\serial.lst</file>
+      <file>$PROJ_DIR$\Debug\List\task_sync.lst</file>
+      <file>$PROJ_DIR$\..\..\..\include\queue.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\target_serial.pbi</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_unrename.h</file>
+      <file>$PROJ_DIR$\Debug\List\mempfix.lst</file>
+      <file>$PROJ_DIR$\Debug\Obj\exception.o</file>
+      <file>$PROJ_DIR$\Debug\List\task_except.lst</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\check.h</file>
+      <file>$PROJ_DIR$\..\target_stddef.h</file>
+      <file>$PROJ_DIR$\Debug\Obj\mempfix.pbi</file>
+      <file>$PROJ_DIR$\Debug\Obj\histogram.o</file>
+      <file>$PROJ_DIR$\Debug\Obj\sample1.pbi</file>
+    </outputs>
+    <file>
+      <name>$PROJ_DIR$\Debug\Exe\sample.out</name>
+      <outputs>
+        <tool>
+          <name>ILINK</name>
+          <file> 34</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>ILINK</name>
+          <file> 18 210 140 0 28 61 222 227 200 206 112 164 109 2 157 99 181 50 100 165 197 209 203 167 104 208 43 184 29 66 188 177 98 148 179 145 113 205 95 143 123 168 126 125</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>[ROOT_NODE]</name>
+      <outputs>
+        <tool>
+          <name>ILINK</name>
+          <file> 9 34</file>
+        </tool>
+      </outputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\library\test_lib.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 187</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 10 145</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 102 162 16 161 144 21 120 171 142 215 202 201 64</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 102 162 16 161 144 21 120 171 142 215 202 201 64</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\library\t_perror.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 193</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 128 43</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 186 225 149 166 68 24 194 35 151 56 141 12 59 105 161 144</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 186 225 149 166 68 24 194 35 151 56 141 12 59 105 161 144</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\kernel_cfg.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 47</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 130 206</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 122 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 111 218 67 146 1 150 121 195 6 65 199 207 5 137 156 220 38 25 180 120 160 171 62 49 139 135 201 64</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 122 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 111 218 67 146 1 150 121 195 6 65 199 207 5 137 156 220 38 25 180 120 160 171 62 49 139 135 201 64</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\target_support.S</name>
+      <outputs>
+        <tool>
+          <name>AARM</name>
+          <file> 66 153</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>AARM</name>
+          <file> 97 114 212 63 155 186 225 149 105 103 19 161 4 142 102 162 16 215 183</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\syssvc\serial.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 32</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 216 197</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 171 142 102 162 16 215 62 49 38</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 171 142 102 162 16 215 62 49 38</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\syssvc\logtask.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 170</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 116 164</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 21 49 120 139 171 142 102 162 16 215</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 21 49 120 139 171 142 102 162 16 215</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\library\strerror.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 17</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 178 167</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 186 225 149 166 68 24 194 35 151 56 141 12 59 105 144</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 186 225 149 166 68 24 194 35 151 56 141 12 59 105 144</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\syssvc\syslog.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 185</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 132 208</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 102 186 225 149 166 68 24 194 35 151 56 141 12 59 105 162 16 161 21 171 142 215 120</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 102 186 225 149 166 68 24 194 35 151 56 141 12 59 105 162 16 161 21 171 142 215 120</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\src\sample1.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 228</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 53 100</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 144 49 120 38 135 201 64</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 144 49 120 38 135 201 64</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\target_config.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 198</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 22 184</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 62 171</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 62 171</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\syssvc\vasyslog.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 138</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 57 95</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 186 225 149 166 68 24 194 35 151 56 141 12 59 105 161 40</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 186 225 149 166 68 24 194 35 151 56 141 12 59 105 161 40</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\target_serial.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 219</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 174 29</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 102 162 16 62 142 215 171</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 102 162 16 62 142 215 171</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\syssvc\banner.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 147</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 152 140</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 171 142 102 162 16 215</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 171 142 102 162 16 215</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\task_refer.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 172</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 15 148</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 224 111 218 67 101 146 1 150 121 195 6</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 224 111 218 67 101 146 1 150 121 195 6</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\alarm.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 159</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 41 210</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 224 199 67</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 224 199 67</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_timer.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 13</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 20 181</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 102 186 225 149 166 68 24 194 35 151 56 141 12 59 105 162 16 97 114 212 63 155 103 19 161 4 142 215 183 204 136 67 25 180</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 102 186 225 149 166 68 24 194 35 151 56 141 12 59 105 162 16 97 114 212 63 155 103 19 161 4 142 215 183 204 136 67 25 180</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\exception.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 154</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 158 222</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 111 218 67 5</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 111 218 67 5</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\dataqueue.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 7</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 117 28</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 224 111 218 67 101 150</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 224 111 218 67 101 150</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\task_manage.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 115</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 45 98</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 224 111 218 67 101</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 224 111 218 67 101</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\interrupt.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 107</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 213 200</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 224 111 218 67 207</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 224 111 218 67 207</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\mailbox.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 14</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 26 109</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 224 111 218 67 101 195</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 224 111 218 67 101 195</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\task_sync.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 11</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 217 179</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 224 111 218 67 101</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 224 111 218 67 101</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\task_except.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 124</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 223 177</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 224 111 218 67</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 224 111 218 67</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_config.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 176</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 163 157</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 224 111 218 67</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 224 111 218 67</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\task.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 173</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 134 188</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 101 111 218 67</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 101 111 218 67</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\library\log_output.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 54</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 190 112</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 186 225 149 166 68 24 194 35 151 56 141 12 59 105 161</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 186 225 149 166 68 24 194 35 151 56 141 12 59 105 161</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\eventflag.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 106</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 96 61</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 224 111 218 67 101 1</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 224 111 218 67 101 1</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\time_event.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 182</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 119 113</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 224 67</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 224 67</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\startup.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 211</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 133 203</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 67</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 67</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\mempfix.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 226</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 221 2</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 224 111 218 67 101 6</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 224 111 218 67 101 6</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\time_manage.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 189</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 214 205</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 224 67 25 180</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 224 67 25 180</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\pridataq.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 110</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 33 50</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 224 111 218 67 101 121</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 224 111 218 67 101 121</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\cyclic.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 108</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 27 0</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 224 65 67</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 224 65 67</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_support.S</name>
+      <outputs>
+        <tool>
+          <name>AARM</name>
+          <file> 99 169</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>AARM</name>
+          <file> 97 114 212 63 155 186 225 149 105 103 19 161 4 142 102 162 16 215 183 196</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\semaphore.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 118</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 191 165</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 224 111 218 67 101 146</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 224 111 218 67 101 146</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\start.S</name>
+      <outputs>
+        <tool>
+          <name>AARM</name>
+          <file> 209 129</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>AARM</name>
+          <file> 97 114 212 63 155 186 225 149 105 103 19 161 4 142 102 162 16 215 183</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\library\histogram.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 8</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 192 227</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 202 201 64 23</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 202 201 64 23</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\sys_manage.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 3</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 131 104</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 224 111 218 67</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 224 111 218 67</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\wait.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 175</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 44 143</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 101 111 218 67</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 97 114 212 63 155 186 225 149 166 68 24 194 35 151 56 141 12 59 105 103 19 161 4 142 102 162 16 215 183 204 136 101 111 218 67</file>
+        </tool>
+      </inputs>
+    </file>
+  </configuration>
+  <configuration>
+    <name>Release</name>
+    <outputs>
+      <file>$PROJ_DIR$\Release\Obj\sample.pbd</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\eventflag.h</file>
+      <file>$PROJ_DIR$\..\target_config.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\exception.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\mempfix.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\ysizet.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_sil.h</file>
+      <file>$PROJ_DIR$\..\target_rom.icf</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_kernel.h</file>
+      <file>$PROJ_DIR$\..\..\..\include\log_output.h</file>
+      <file>$PROJ_DIR$\..\..\..\include\histogram.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\yvals.h</file>
+      <file>$PROJ_DIR$\..\target_timer.h</file>
+      <file>$PROJ_DIR$\Release\Obj\logtask.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\pridataq.o</file>
+      <file>$PROJ_DIR$\Release\Obj\mempfix.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\task_sync.o</file>
+      <file>$PROJ_DIR$\Release\Obj\task_refer.pbi</file>
+      <file>$PROJ_DIR$\Release\List\task_sync.lst</file>
+      <file>$PROJ_DIR$\Release\Obj\exception.o</file>
+      <file>$PROJ_DIR$\Release\List\sys_manage.lst</file>
+      <file>$PROJ_DIR$\Release\Obj\prc_timer.o</file>
+      <file>$PROJ_DIR$\Release\Obj\prc_timer.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\t_perror.o</file>
+      <file>$PROJ_DIR$\Release\Obj\alarm.o</file>
+      <file>$PROJ_DIR$\Release\Obj\task_sync.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\target_config.o</file>
+      <file>$PROJ_DIR$\Release\Obj\interrupt.o</file>
+      <file>$PROJ_DIR$\Release\Obj\eventflag.o</file>
+      <file>$PROJ_DIR$\Release\Obj\mailbox.o</file>
+      <file>$PROJ_DIR$\Release\Obj\time_event.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\dataqueue.o</file>
+      <file>$PROJ_DIR$\Release\Obj\prc_config.o</file>
+      <file>$PROJ_DIR$\Release\List\target_config.lst</file>
+      <file>$PROJ_DIR$\Release\List\semaphore.lst</file>
+      <file>$PROJ_DIR$\Release\Obj\task_manage.o</file>
+      <file>$PROJ_DIR$\Release\Obj\semaphore.o</file>
+      <file>$PROJ_DIR$\Release\Obj\sys_manage.o</file>
+      <file>$PROJ_DIR$\Release\Obj\cyclic.o</file>
+      <file>$PROJ_DIR$\Release\Obj\time_event.o</file>
+      <file>$PROJ_DIR$\Release\Obj\task.o</file>
+      <file>$PROJ_DIR$\Release\Obj\vasyslog.o</file>
+      <file>$PROJ_DIR$\Release\Obj\kernel_cfg.o</file>
+      <file>$PROJ_DIR$\Release\Obj\banner.o</file>
+      <file>$PROJ_DIR$\Release\Obj\test_lib.o</file>
+      <file>$PROJ_DIR$\Release\Obj\startup.o</file>
+      <file>$PROJ_DIR$\..\..\..\library\test_lib.c</file>
+      <file>$PROJ_DIR$\..\..\..\library\t_perror.c</file>
+      <file>$TOOLKIT_DIR$\inc\c\DLib_Config_Normal.h</file>
+      <file>$PROJ_DIR$\kernel_cfg.c</file>
+      <file>$PROJ_DIR$\..\target_support.S</file>
+      <file>$PROJ_DIR$\kernel_cfg.h</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\serial.c</file>
+      <file>$TOOLKIT_DIR$\inc\c\stdarg.h</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\logtask.c</file>
+      <file>$PROJ_DIR$\..\..\..\library\strerror.c</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\syslog.c</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\serial.h</file>
+      <file>$PROJ_DIR$\src\sample1.c</file>
+      <file>$PROJ_DIR$\..\target_config.c</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\vasyslog.c</file>
+      <file>$TOOLKIT_DIR$\inc\c\xencoding_limits.h</file>
+      <file>$PROJ_DIR$\..\target_serial.c</file>
+      <file>$TOOLKIT_DIR$\inc\c\limits.h</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\banner.c</file>
+      <file>$PROJ_DIR$\..\target_serial.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_rename.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_test.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\cyclic.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\time_event.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\ycheck.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\task_refer.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\alarm.c</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_timer.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\exception.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\dataqueue.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\task_manage.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\interrupt.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\mailbox.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\task_sync.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\task_except.c</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_config.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\task.c</file>
+      <file>$PROJ_DIR$\..\..\..\library\log_output.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\eventflag.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\time_event.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\startup.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\mempfix.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\time_manage.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\pridataq.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\cyclic.c</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_support.S</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\semaphore.c</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\start.S</file>
+      <file>$PROJ_DIR$\..\..\..\library\histogram.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\sys_manage.c</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\wait.c</file>
+      <file>$PROJ_DIR$\Release\Obj\semaphore.pbi</file>
+      <file>$PROJ_DIR$\Release\List\banner.lst</file>
+      <file>$PROJ_DIR$\Release\Obj\start.o</file>
+      <file>$PROJ_DIR$\Release\List\task.lst</file>
+      <file>$PROJ_DIR$\Release\List\t_perror.lst</file>
+      <file>$PROJ_DIR$\Release\List\syslog.lst</file>
+      <file>$PROJ_DIR$\Release\Obj\prc_support.o</file>
+      <file>$PROJ_DIR$\Release\Obj\target_support.o</file>
+      <file>$PROJ_DIR$\Release\Obj\sample1.o</file>
+      <file>$PROJ_DIR$\Release\List\dataqueue.lst</file>
+      <file>$PROJ_DIR$\Release\List\alarm.lst</file>
+      <file>$PROJ_DIR$\Release\Obj\task_except.o</file>
+      <file>$PROJ_DIR$\Release\Obj\logtask.o</file>
+      <file>$PROJ_DIR$\Release\Obj\serial.o</file>
+      <file>$PROJ_DIR$\Release\Obj\task_refer.o</file>
+      <file>$PROJ_DIR$\Release\Obj\histogram.o</file>
+      <file>$PROJ_DIR$\Release\Obj\log_output.o</file>
+      <file>$PROJ_DIR$\Release\Obj\wait.o</file>
+      <file>$PROJ_DIR$\Release\Obj\time_manage.o</file>
+      <file>$PROJ_DIR$\Release\Obj\task.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\startup.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\test_lib.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\strerror.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\target_serial.o</file>
+      <file>$PROJ_DIR$\Release\Obj\sample1.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\dataqueue.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\t_perror.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\serial.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\cyclic.pbi</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\kernel_impl.h</file>
+      <file>$PROJ_DIR$\Release\Obj\task_except.pbi</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\wait.h</file>
+      <file>$PROJ_DIR$\..\..\..\include\sil.h</file>
+      <file>$PROJ_DIR$\Release\List\task_manage.lst</file>
+      <file>$PROJ_DIR$\Release\Obj\syslog.o</file>
+      <file>$PROJ_DIR$\Release\List\wait.lst</file>
+      <file>$PROJ_DIR$\Release\Obj\mempfix.o</file>
+      <file>$PROJ_DIR$\Release\Obj\mailbox.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\prc_config.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\exception.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\pridataq.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\histogram.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\wait.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\log_output.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\target_serial.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\kernel_cfg.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\target_config.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\vasyslog.pbi</file>
+      <file>$PROJ_DIR$\Release\Exe\sample.out</file>
+      <file>$PROJ_DIR$\Release\Obj\syslog.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\time_manage.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\alarm.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\interrupt.pbi</file>
+      <file>$PROJ_DIR$\..\target_kernel.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_stddef.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\task.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\kernel_rename.h</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\syslog.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\pridataq.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\kernel_int.h</file>
+      <file>$TOOLKIT_DIR$\lib\dl7M_tln.a</file>
+      <file>$TOOLKIT_DIR$\lib\m7M_tl.a</file>
+      <file>$PROJ_DIR$\src\sample1.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\allfunc.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\kernel_unrename.h</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\logtask.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\DLib_Threads.h</file>
+      <file>$PROJ_DIR$\..\stm32_discovery.h</file>
+      <file>$PROJ_DIR$\..\..\..\include\t_stdlib.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\semaphore.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\iccarm\tool_stddef.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\dataqueue.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\DLib_Product.h</file>
+      <file>$PROJ_DIR$\..\..\..\include\kernel.h</file>
+      <file>$PROJ_DIR$\Release\Obj\banner.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\eventflag.pbi</file>
+      <file>$PROJ_DIR$\Release\List\task_except.lst</file>
+      <file>$PROJ_DIR$\Release\List\time_event.lst</file>
+      <file>$PROJ_DIR$\Release\List\test_lib.lst</file>
+      <file>$PROJ_DIR$\Release\List\mailbox.lst</file>
+      <file>$PROJ_DIR$\Release\List\pridataq.lst</file>
+      <file>$PROJ_DIR$\Release\List\prc_config.lst</file>
+      <file>$PROJ_DIR$\Release\List\target_serial.lst</file>
+      <file>$PROJ_DIR$\Release\List\log_output.lst</file>
+      <file>$PROJ_DIR$\Release\List\startup.lst</file>
+      <file>$PROJ_DIR$\Release\List\logtask.lst</file>
+      <file>$PROJ_DIR$\Release\List\histogram.lst</file>
+      <file>$PROJ_DIR$\Release\List\interrupt.lst</file>
+      <file>$PROJ_DIR$\Release\List\exception.lst</file>
+      <file>$PROJ_DIR$\Release\List\sample1.lst</file>
+      <file>$PROJ_DIR$\Release\List\prc_timer.lst</file>
+      <file>$PROJ_DIR$\Release\List\strerror.lst</file>
+      <file>$PROJ_DIR$\Release\List\mempfix.lst</file>
+      <file>$PROJ_DIR$\Release\List\kernel_cfg.lst</file>
+      <file>$PROJ_DIR$\Release\List\sample.map</file>
+      <file>$PROJ_DIR$\Release\List\cyclic.lst</file>
+      <file>$PROJ_DIR$\Release\List\eventflag.lst</file>
+      <file>$PROJ_DIR$\Release\List\task_refer.lst</file>
+      <file>$PROJ_DIR$\Release\List\serial.lst</file>
+      <file>$PROJ_DIR$\Release\Obj\task_manage.pbi</file>
+      <file>$PROJ_DIR$\Release\Obj\sys_manage.pbi</file>
+      <file>$PROJ_DIR$\Release\List\time_manage.lst</file>
+      <file>$PROJ_DIR$\Release\Obj\strerror.o</file>
+      <file>$PROJ_DIR$\Release\List\vasyslog.lst</file>
+      <file>$PROJ_DIR$\..\target_unrename.h</file>
+      <file>$PROJ_DIR$\..\..\..\syssvc\banner.h</file>
+      <file>$PROJ_DIR$\..\..\..\include\t_syslog.h</file>
+      <file>$PROJ_DIR$\..\target_sil.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\stddef.h</file>
+      <file>$TOOLKIT_DIR$\lib\rt7M_tl.a</file>
+      <file>$PROJ_DIR$\..\target_syssvc.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_timer.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_config.h</file>
+      <file>$PROJ_DIR$\..\..\..\include\t_stddef.h</file>
+      <file>$TOOLKIT_DIR$\inc\c\DLib_Defaults.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\mailbox.h</file>
+      <file>$PROJ_DIR$\offset.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\alarm.h</file>
+      <file>$PROJ_DIR$\..\target_test.h</file>
+      <file>$PROJ_DIR$\..\..\..\include\test_lib.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_insn.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\interrupt.h</file>
+      <file>$PROJ_DIR$\..\target_rename.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\arm_m.h</file>
+      <file>$PROJ_DIR$\..\..\..\include\queue.h</file>
+      <file>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_unrename.h</file>
+      <file>$PROJ_DIR$\..\..\..\kernel\check.h</file>
+      <file>$PROJ_DIR$\..\target_stddef.h</file>
+    </outputs>
+    <file>
+      <name>[ROOT_NODE]</name>
+      <outputs>
+        <tool>
+          <name>ILINK</name>
+          <file> 145 191</file>
+        </tool>
+      </outputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\library\test_lib.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 118</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 175 44</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 129 204 6 203 165 9 154 207 164 220 216 215 67</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 129 204 6 203 165 9 154 207 164 220 216 215 67</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\library\t_perror.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 123</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 101 23</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 210 224 167 205 70 11 211 48 169 61 163 5 63 151 203 165</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 210 224 167 205 70 11 211 48 169 61 163 5 63 151 203 165</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\kernel_cfg.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 142</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 190 42</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 156 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 152 221 69 166 1 168 155 212 4 68 214 218 3 161 201 222 51 12 208 154 202 207 65 57 162 159 215 67</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 156 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 152 221 69 166 1 168 155 212 4 68 214 218 3 161 201 222 51 12 208 154 202 207 65 57 162 159 215 67</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\target_support.S</name>
+      <outputs>
+        <tool>
+          <name>AARM</name>
+          <file> 104</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>AARM</name>
+          <file> 126 153 219 66 170 210 224 167 151 150 8 203 2 164 129 204 6 220 209</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\syssvc\serial.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 124</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 195 110</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 207 164 129 204 6 220 65 57 51</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 207 164 129 204 6 220 65 57 51</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\syssvc\logtask.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 13</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 182 109</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 9 57 154 162 207 164 129 204 6 220</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 9 57 154 162 207 164 129 204 6 220</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\library\strerror.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 119</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 188 199</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 210 224 167 205 70 11 211 48 169 61 163 5 63 151 165</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 210 224 167 205 70 11 211 48 169 61 163 5 63 151 165</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\syssvc\syslog.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 146</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 102 131</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 129 210 224 167 205 70 11 211 48 169 61 163 5 63 151 204 6 203 9 207 164 220 154</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 129 210 224 167 205 70 11 211 48 169 61 163 5 63 151 204 6 203 9 207 164 220 154</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\src\sample1.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 121</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 186 105</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 165 57 154 51 159 215 67</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 165 57 154 51 159 215 67</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\target_config.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 143</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 33 26</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 65 207</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 65 207</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\syssvc\vasyslog.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 144</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 200 41</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 210 224 167 205 70 11 211 48 169 61 163 5 63 151 203 53</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 210 224 167 205 70 11 211 48 169 61 163 5 63 151 203 53</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\target_serial.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 141</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 179 120</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 129 204 6 65 164 220 207</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 129 204 6 65 164 220 207</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\syssvc\banner.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 171</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 98 43</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 207 164 129 204 6 220</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 207 164 129 204 6 220</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\task_refer.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 17</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 194 111</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 223 152 221 69 128 166 1 168 155 212 4</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 223 152 221 69 128 166 1 168 155 212 4</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\alarm.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 148</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 107 24</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 223 214 69</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 223 214 69</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_timer.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 22</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 187 21</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 129 210 224 167 205 70 11 211 48 169 61 163 5 63 151 204 6 126 153 219 66 170 150 8 203 2 164 220 209 217 160 69 12 208</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 129 210 224 167 205 70 11 211 48 169 61 163 5 63 151 204 6 126 153 219 66 170 150 8 203 2 164 220 209 217 160 69 12 208</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\exception.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 136</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 185 19</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 152 221 69 3</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 152 221 69 3</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\dataqueue.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 122</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 106 31</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 223 152 221 69 128 168</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 223 152 221 69 128 168</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\task_manage.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 196</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 130 35</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 223 152 221 69 128</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 223 152 221 69 128</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\interrupt.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 149</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 184 27</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 223 152 221 69 218</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 223 152 221 69 218</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\mailbox.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 134</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 176 29</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 223 152 221 69 128 212</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 223 152 221 69 128 212</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\task_sync.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 25</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 18 16</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 223 152 221 69 128</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 223 152 221 69 128</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\task_except.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 127</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 173 108</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 223 152 221 69</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 223 152 221 69</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_config.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 135</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 178 32</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 223 152 221 69</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 223 152 221 69</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\task.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 116</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 100 40</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 128 152 221 69</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 128 152 221 69</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\library\log_output.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 140</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 180 113</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 210 224 167 205 70 11 211 48 169 61 163 5 63 151 203</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 210 224 167 205 70 11 211 48 169 61 163 5 63 151 203</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\eventflag.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 172</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 193 28</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 223 152 221 69 128 1</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 223 152 221 69 128 1</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\time_event.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 30</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 174 39</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 223 69</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 223 69</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\startup.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 117</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 181 45</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 69</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 69</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\mempfix.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 15</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 189 133</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 223 152 221 69 128 4</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 223 152 221 69 128 4</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\time_manage.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 147</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 198 115</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 223 69 12 208</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 223 69 12 208</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\pridataq.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 137</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 177 14</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 223 152 221 69 128 155</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 223 152 221 69 128 155</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\cyclic.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 125</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 192 38</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 223 68 69</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 223 68 69</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_support.S</name>
+      <outputs>
+        <tool>
+          <name>AARM</name>
+          <file> 103</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>AARM</name>
+          <file> 126 153 219 66 170 210 224 167 151 150 8 203 2 164 129 204 6 220 209 213</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\semaphore.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 97</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 34 36</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 223 152 221 69 128 166</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 223 152 221 69 128 166</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\start.S</name>
+      <outputs>
+        <tool>
+          <name>AARM</name>
+          <file> 99</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>AARM</name>
+          <file> 126 153 219 66 170 210 224 167 151 150 8 203 2 164 129 204 6 220 209</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\library\histogram.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 138</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 183 112</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 216 215 67 10</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 216 215 67 10</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\sys_manage.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 197</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 20 37</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 223 152 221 69</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 223 152 221 69</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\wait.c</name>
+      <outputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 139</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 132 114</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>BICOMP</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 128 152 221 69</file>
+        </tool>
+        <tool>
+          <name>ICCARM</name>
+          <file> 126 153 219 66 170 210 224 167 205 70 11 211 48 169 61 163 5 63 151 150 8 203 2 164 129 204 6 220 209 217 160 128 152 221 69</file>
+        </tool>
+      </inputs>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\Release\Exe\sample.out</name>
+      <outputs>
+        <tool>
+          <name>ILINK</name>
+          <file> 191</file>
+        </tool>
+      </outputs>
+      <inputs>
+        <tool>
+          <name>ILINK</name>
+          <file> 7 24 43 38 31 28 19 112 27 42 113 109 29 133 32 103 21 14 105 36 110 99 45 199 37 131 23 26 120 104 40 108 35 111 16 44 39 115 41 114 206 158 157</file>
+        </tool>
+      </inputs>
+    </file>
+  </configuration>
+</project>
+
+
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/sample.ewd
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/sample.ewd	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/sample.ewd	(revision 61)
@@ -0,0 +1,2291 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<project>
+  <fileVersion>2</fileVersion>
+  <configuration>
+    <name>Debug</name>
+    <toolchain>
+      <name>ARM</name>
+    </toolchain>
+    <debug>1</debug>
+    <settings>
+      <name>C-SPY</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>25</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>CInput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CEndian</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCVariant</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>MemOverride</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MemFile</name>
+          <state>$TOOLKIT_DIR$\CONFIG\debugger\ST\STM32F100xB.ddf</state>
+        </option>
+        <option>
+          <name>RunToEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RunToName</name>
+          <state>main</state>
+        </option>
+        <option>
+          <name>CExtraOptionsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CExtraOptions</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CFpuProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCDDFArgumentProducer</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCDownloadSuppressDownload</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCDownloadVerifyAll</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCProductVersion</name>
+          <state>6.50.1.4445</state>
+        </option>
+        <option>
+          <name>OCDynDriverList</name>
+          <state>STLINK_ID</state>
+        </option>
+        <option>
+          <name>OCLastSavedByProductVersion</name>
+          <state>6.50.2.4581</state>
+        </option>
+        <option>
+          <name>OCDownloadAttachToProgram</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>UseFlashLoader</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CLowLevel</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCBE8Slave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacFile2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CDevice</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>FlashLoadersV3</name>
+          <state>$TOOLKIT_DIR$\config\flashloader\ST\FlashSTM32F100xB.board</state>
+        </option>
+        <option>
+          <name>OCImagesSuppressCheck1</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesPath1</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesSuppressCheck2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesPath2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesSuppressCheck3</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesPath3</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OverrideDefFlashBoard</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesOffset1</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesOffset2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesOffset3</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesUse1</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesUse2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesUse3</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCDeviceConfigMacroFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCDebuggerExtraOption</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCAllMTBOptions</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>ARMSIM_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>OCSimDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCSimEnablePSP</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCSimPspOverrideConfig</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCSimPspConfigFile</name>
+          <state></state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>ANGEL_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>CCAngelHeartbeat</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CAngelCommunication</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CAngelCommBaud</name>
+          <version>0</version>
+          <state>3</state>
+        </option>
+        <option>
+          <name>CAngelCommPort</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ANGELTCPIP</name>
+          <state>aaa.bbb.ccc.ddd</state>
+        </option>
+        <option>
+          <name>DoAngelLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AngelLogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>GDBSERVER_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>TCPIP</name>
+          <state>aaa.bbb.ccc.ddd</state>
+        </option>
+        <option>
+          <name>DoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>LogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CCJTagBreakpointRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJTagDoUpdateBreakpoints</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJTagUpdateBreakpoints</name>
+          <state>_call_main</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>IARROM_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>CRomLogFileCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CRomLogFileEditB</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CRomCommPort</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CRomCommBaud</name>
+          <version>0</version>
+          <state>7</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>IJET_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>2</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IjetAttachSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCIarProbeScriptFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IjetResetList</name>
+          <version>1</version>
+          <state>10</state>
+        </option>
+        <option>
+          <name>IjetHWResetDuration</name>
+          <state>300</state>
+        </option>
+        <option>
+          <name>IjetHWResetDelay</name>
+          <state>200</state>
+        </option>
+        <option>
+          <name>IjetPowerFromProbe</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IjetPowerRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetDoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetLogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>IjetInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetMultiTargetEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetMultiTarget</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetScanChainNonARMDevices</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetIRLength</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetJtagSpeedList</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetProtocolRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetSwoPin</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetCpuClockEdit</name>
+          <state>72.0</state>
+        </option>
+        <option>
+          <name>IjetSwoPrescalerList</name>
+          <version>1</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetBreakpointRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetRestoreBreakpointsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetUpdateBreakpointsEdit</name>
+          <state>_call_main</state>
+        </option>
+        <option>
+          <name>RDICatchReset</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchUndef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchSWI</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchData</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchPrefetch</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchIRQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchFIQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchCORERESET</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchMMERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchNOCPERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchCHKERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchSTATERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchBUSERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchINTERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchHARDERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchDummy</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCProbeCfgOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCProbeConfig</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IjetProbeConfigRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetMultiCPUEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetMultiCPUNumber</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetSelectedCPUBehaviour</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ICpuName</name>
+          <state></state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>JLINK_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>15</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>JLinkSpeed</name>
+          <state>32</state>
+        </option>
+        <option>
+          <name>CCJLinkDoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkLogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CCJLinkHWResetDelay</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>JLinkInitialSpeed</name>
+          <state>32</state>
+        </option>
+        <option>
+          <name>CCDoJlinkMultiTarget</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCScanChainNonARMDevices</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkMultiTarget</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkIRLength</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkCommRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkTCPIP</name>
+          <state>aaa.bbb.ccc.ddd</state>
+        </option>
+        <option>
+          <name>CCJLinkSpeedRadioV2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCUSBDevice</name>
+          <version>1</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCRDICatchReset</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchUndef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchSWI</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchData</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchPrefetch</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchIRQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchFIQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkBreakpointRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkDoUpdateBreakpoints</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkUpdateBreakpoints</name>
+          <state>_call_main</state>
+        </option>
+        <option>
+          <name>CCJLinkInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCJLinkAttachSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCJLinkResetList</name>
+          <version>6</version>
+          <state>5</state>
+        </option>
+        <option>
+          <name>CCJLinkInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchCORERESET</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchMMERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchNOCPERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchCHRERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchSTATERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchBUSERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchINTERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchHARDERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchDummy</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCJLinkScriptFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCJLinkUsbSerialNo</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCTcpIpAlt</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkTcpIpSerialNo</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCCpuClockEdit</name>
+          <state>72.0</state>
+        </option>
+        <option>
+          <name>CCSwoClockAuto</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSwoClockEdit</name>
+          <state>2000</state>
+        </option>
+        <option>
+          <name>OCJLinkTraceSource</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCJLinkTraceSourceDummy</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCJLinkDeviceName</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>LMIFTDI_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>2</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>LmiftdiSpeed</name>
+          <state>500</state>
+        </option>
+        <option>
+          <name>CCLmiftdiDoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCLmiftdiLogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CCLmiFtdiInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCLmiFtdiInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>MACRAIGOR_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>3</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>jtag</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>EmuSpeed</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>TCPIP</name>
+          <state>aaa.bbb.ccc.ddd</state>
+        </option>
+        <option>
+          <name>DoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>LogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>DoEmuMultiTarget</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>EmuMultiTarget</name>
+          <state>0@ARM7TDMI</state>
+        </option>
+        <option>
+          <name>EmuHWReset</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CEmuCommBaud</name>
+          <version>0</version>
+          <state>4</state>
+        </option>
+        <option>
+          <name>CEmuCommPort</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>jtago</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>UnusedAddr</name>
+          <state>0x00800000</state>
+        </option>
+        <option>
+          <name>CCMacraigorHWResetDelay</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCJTagBreakpointRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJTagDoUpdateBreakpoints</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJTagUpdateBreakpoints</name>
+          <state>_call_main</state>
+        </option>
+        <option>
+          <name>CCMacraigorInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCMacraigorInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>PEMICRO_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCPEMicroAttachSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCPEMicroInterfaceList</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPEMicroResetDelay</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCPEMicroJtagSpeed</name>
+          <state>#UNINITIALIZED#</state>
+        </option>
+        <option>
+          <name>CCJPEMicroShowSettings</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>DoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>LogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CCPEMicroUSBDevice</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPEMicroSerialPort</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJPEMicroTCPIPAutoScanNetwork</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCPEMicroTCPIP</name>
+          <state>10.0.0.1</state>
+        </option>
+        <option>
+          <name>CCPEMicroCommCmdLineProducer</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSTLinkInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSTLinkInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>RDI_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>2</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>CRDIDriverDll</name>
+          <state>###Uninitialized###</state>
+        </option>
+        <option>
+          <name>CRDILogFileCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CRDILogFileEdit</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CCRDIHWReset</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchReset</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchUndef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchSWI</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchData</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchPrefetch</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchIRQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchFIQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>STLINK_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>2</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCSTLinkInterfaceRadio</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCSTLinkInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSTLinkResetList</name>
+          <version>1</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCpuClockEdit</name>
+          <state>72.0</state>
+        </option>
+        <option>
+          <name>CCSwoClockAuto</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSwoClockEdit</name>
+          <state>2000</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>THIRDPARTY_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>CThirdPartyDriverDll</name>
+          <state>###Uninitialized###</state>
+        </option>
+        <option>
+          <name>CThirdPartyLogFileCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CThirdPartyLogFileEditB</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>XDS100_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>2</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCXDS100AttachSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>TIPackageOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>TIPackage</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCXds100InterfaceList</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>BoardFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>DoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>LogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+      </data>
+    </settings>
+    <debuggerPlugins>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\middleware\HCCWare\HCCWare.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.JPN.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.JPN.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB6_Plugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.JPN.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.JPN.ewplugin</file>
+        <loadFlag>1</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$EW_DIR$\common\plugins\Orti\Orti.JPN.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$EW_DIR$\common\plugins\SymList\SymList.JPN.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+    </debuggerPlugins>
+  </configuration>
+  <configuration>
+    <name>Release</name>
+    <toolchain>
+      <name>ARM</name>
+    </toolchain>
+    <debug>0</debug>
+    <settings>
+      <name>C-SPY</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>25</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>CInput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CEndian</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCVariant</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>MemOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MemFile</name>
+          <state>$TOOLKIT_DIR$\CONFIG\debugger\ST\STM32F100xB.ddf</state>
+        </option>
+        <option>
+          <name>RunToEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RunToName</name>
+          <state>main</state>
+        </option>
+        <option>
+          <name>CExtraOptionsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CExtraOptions</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CFpuProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCDDFArgumentProducer</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCDownloadSuppressDownload</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCDownloadVerifyAll</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCProductVersion</name>
+          <state>6.50.1.4445</state>
+        </option>
+        <option>
+          <name>OCDynDriverList</name>
+          <state>STLINK_ID</state>
+        </option>
+        <option>
+          <name>OCLastSavedByProductVersion</name>
+          <state>6.50.2.4581</state>
+        </option>
+        <option>
+          <name>OCDownloadAttachToProgram</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>UseFlashLoader</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CLowLevel</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCBE8Slave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacFile2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CDevice</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>FlashLoadersV3</name>
+          <state>$TOOLKIT_DIR$\config\flashloader\ST\FlashSTM32F100xB.board</state>
+        </option>
+        <option>
+          <name>OCImagesSuppressCheck1</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesPath1</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesSuppressCheck2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesPath2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesSuppressCheck3</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesPath3</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OverrideDefFlashBoard</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesOffset1</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesOffset2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesOffset3</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesUse1</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesUse2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesUse3</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCDeviceConfigMacroFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCDebuggerExtraOption</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCAllMTBOptions</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>ARMSIM_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>OCSimDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCSimEnablePSP</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCSimPspOverrideConfig</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCSimPspConfigFile</name>
+          <state></state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>ANGEL_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>CCAngelHeartbeat</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CAngelCommunication</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CAngelCommBaud</name>
+          <version>0</version>
+          <state>3</state>
+        </option>
+        <option>
+          <name>CAngelCommPort</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ANGELTCPIP</name>
+          <state>aaa.bbb.ccc.ddd</state>
+        </option>
+        <option>
+          <name>DoAngelLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AngelLogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>GDBSERVER_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>TCPIP</name>
+          <state>aaa.bbb.ccc.ddd</state>
+        </option>
+        <option>
+          <name>DoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>LogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CCJTagBreakpointRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJTagDoUpdateBreakpoints</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJTagUpdateBreakpoints</name>
+          <state>_call_main</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>IARROM_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>CRomLogFileCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CRomLogFileEditB</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CRomCommPort</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CRomCommBaud</name>
+          <version>0</version>
+          <state>7</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>IJET_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>2</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IjetAttachSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCIarProbeScriptFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IjetResetList</name>
+          <version>1</version>
+          <state>10</state>
+        </option>
+        <option>
+          <name>IjetHWResetDuration</name>
+          <state>300</state>
+        </option>
+        <option>
+          <name>IjetHWResetDelay</name>
+          <state>200</state>
+        </option>
+        <option>
+          <name>IjetPowerFromProbe</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IjetPowerRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetDoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetLogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>IjetInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetMultiTargetEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetMultiTarget</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetScanChainNonARMDevices</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetIRLength</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetJtagSpeedList</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetProtocolRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetSwoPin</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetCpuClockEdit</name>
+          <state>72.0</state>
+        </option>
+        <option>
+          <name>IjetSwoPrescalerList</name>
+          <version>1</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetBreakpointRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetRestoreBreakpointsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetUpdateBreakpointsEdit</name>
+          <state>_call_main</state>
+        </option>
+        <option>
+          <name>RDICatchReset</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchUndef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchSWI</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchData</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchPrefetch</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchIRQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RDICatchFIQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchCORERESET</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchMMERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchNOCPERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchCHKERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchSTATERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchBUSERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchINTERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchHARDERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CatchDummy</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCProbeCfgOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCProbeConfig</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IjetProbeConfigRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetMultiCPUEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetMultiCPUNumber</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IjetSelectedCPUBehaviour</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ICpuName</name>
+          <state></state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>JLINK_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>15</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>JLinkSpeed</name>
+          <state>32</state>
+        </option>
+        <option>
+          <name>CCJLinkDoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkLogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CCJLinkHWResetDelay</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>JLinkInitialSpeed</name>
+          <state>32</state>
+        </option>
+        <option>
+          <name>CCDoJlinkMultiTarget</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCScanChainNonARMDevices</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkMultiTarget</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkIRLength</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkCommRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkTCPIP</name>
+          <state>aaa.bbb.ccc.ddd</state>
+        </option>
+        <option>
+          <name>CCJLinkSpeedRadioV2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCUSBDevice</name>
+          <version>1</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCRDICatchReset</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchUndef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchSWI</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchData</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchPrefetch</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchIRQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchFIQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkBreakpointRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkDoUpdateBreakpoints</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkUpdateBreakpoints</name>
+          <state>_call_main</state>
+        </option>
+        <option>
+          <name>CCJLinkInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCJLinkAttachSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCJLinkResetList</name>
+          <version>6</version>
+          <state>5</state>
+        </option>
+        <option>
+          <name>CCJLinkInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchCORERESET</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchMMERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchNOCPERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchCHRERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchSTATERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchBUSERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchINTERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchHARDERR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCatchDummy</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCJLinkScriptFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCJLinkUsbSerialNo</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCTcpIpAlt</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJLinkTcpIpSerialNo</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCCpuClockEdit</name>
+          <state>72.0</state>
+        </option>
+        <option>
+          <name>CCSwoClockAuto</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSwoClockEdit</name>
+          <state>2000</state>
+        </option>
+        <option>
+          <name>OCJLinkTraceSource</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCJLinkTraceSourceDummy</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCJLinkDeviceName</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>LMIFTDI_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>2</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>LmiftdiSpeed</name>
+          <state>500</state>
+        </option>
+        <option>
+          <name>CCLmiftdiDoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCLmiftdiLogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CCLmiFtdiInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCLmiFtdiInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>MACRAIGOR_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>3</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>jtag</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>EmuSpeed</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>TCPIP</name>
+          <state>aaa.bbb.ccc.ddd</state>
+        </option>
+        <option>
+          <name>DoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>LogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>DoEmuMultiTarget</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>EmuMultiTarget</name>
+          <state>0@ARM7TDMI</state>
+        </option>
+        <option>
+          <name>EmuHWReset</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CEmuCommBaud</name>
+          <version>0</version>
+          <state>4</state>
+        </option>
+        <option>
+          <name>CEmuCommPort</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>jtago</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>UnusedAddr</name>
+          <state>0x00800000</state>
+        </option>
+        <option>
+          <name>CCMacraigorHWResetDelay</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCJTagBreakpointRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJTagDoUpdateBreakpoints</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJTagUpdateBreakpoints</name>
+          <state>_call_main</state>
+        </option>
+        <option>
+          <name>CCMacraigorInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCMacraigorInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>PEMICRO_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCPEMicroAttachSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCPEMicroInterfaceList</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPEMicroResetDelay</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCPEMicroJtagSpeed</name>
+          <state>5000</state>
+        </option>
+        <option>
+          <name>CCJPEMicroShowSettings</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>DoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>LogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CCPEMicroUSBDevice</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPEMicroSerialPort</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCJPEMicroTCPIPAutoScanNetwork</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCPEMicroTCPIP</name>
+          <state>10.0.0.1</state>
+        </option>
+        <option>
+          <name>CCPEMicroCommCmdLineProducer</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSTLinkInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSTLinkInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>RDI_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>2</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>CRDIDriverDll</name>
+          <state>###Uninitialized###</state>
+        </option>
+        <option>
+          <name>CRDILogFileCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CRDILogFileEdit</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>CCRDIHWReset</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchReset</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchUndef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchSWI</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchData</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchPrefetch</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchIRQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRDICatchFIQ</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>STLINK_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>2</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCSTLinkInterfaceRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSTLinkInterfaceCmdLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSTLinkResetList</name>
+          <version>1</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCpuClockEdit</name>
+          <state>72.0</state>
+        </option>
+        <option>
+          <name>CCSwoClockAuto</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSwoClockEdit</name>
+          <state>2000</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>THIRDPARTY_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>CThirdPartyDriverDll</name>
+          <state>###Uninitialized###</state>
+        </option>
+        <option>
+          <name>CThirdPartyLogFileCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CThirdPartyLogFileEditB</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>XDS100_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>2</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>OCDriverInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCXDS100AttachSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>TIPackageOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>TIPackage</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCXds100InterfaceList</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>BoardFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>DoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>LogFile</name>
+          <state>$PROJ_DIR$\cspycomm.log</state>
+        </option>
+      </data>
+    </settings>
+    <debuggerPlugins>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\middleware\HCCWare\HCCWare.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.JPN.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.JPN.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB6_Plugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.JPN.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.JPN.ewplugin</file>
+        <loadFlag>1</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$EW_DIR$\common\plugins\Orti\Orti.JPN.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$EW_DIR$\common\plugins\SymList\SymList.JPN.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+    </debuggerPlugins>
+  </configuration>
+</project>
+
+
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/sample.ewp
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/sample.ewp	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/sample.ewp	(revision 61)
@@ -0,0 +1,2002 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<project>
+  <fileVersion>2</fileVersion>
+  <configuration>
+    <name>Debug</name>
+    <toolchain>
+      <name>ARM</name>
+    </toolchain>
+    <debug>1</debug>
+    <settings>
+      <name>General</name>
+      <archiveVersion>3</archiveVersion>
+      <data>
+        <version>21</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>ExePath</name>
+          <state>Debug\Exe</state>
+        </option>
+        <option>
+          <name>ObjPath</name>
+          <state>Debug\Obj</state>
+        </option>
+        <option>
+          <name>ListPath</name>
+          <state>Debug\List</state>
+        </option>
+        <option>
+          <name>Variant</name>
+          <version>20</version>
+          <state>38</state>
+        </option>
+        <option>
+          <name>GEndianMode</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Input variant</name>
+          <version>3</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Input description</name>
+          <state>&#x30D5;&#x30A9;&#x30FC;&#x30De;&#x30C3;&#x30BF;&#x306e;&#x81eA;&#x52D5;&#x9078;&#x629e;&#x3002;</state>
+        </option>
+        <option>
+          <name>Output variant</name>
+          <version>2</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Output description</name>
+          <state>&#x30D5;&#x30A9;&#x30FC;&#x30De;&#x30C3;&#x30BF;&#x306e;&#x81eA;&#x52D5;&#x9078;&#x629e;&#x3002;</state>
+        </option>
+        <option>
+          <name>GOutputBinary</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>FPU</name>
+          <version>2</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGCoreOrChip</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>GRuntimeLibSelect</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>GRuntimeLibSelectSlave</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>RTDescription</name>
+          <state>C/C++&#x30e9;&#x30F3;&#x30BF;&#x30A4;&#x30e0;&#x30e9;&#x30A4;&#x30D6;&#x30e9;&#x30eA;&#x306e;&#x901A;&#x5e38;&#x306e;&#x8A2D;&#x5B9A;&#x3092;&#x4F7F;&#x7528;&#x3057;&#x307e;&#x3059;&#x3002;&#x30eD;&#x30B1;&#x30FC;&#x30eB;&#x30A4;&#x30F3;&#x30BF;&#x30D5;&#x30A7;&#x30FC;&#x30B9;&#x306A;&#x3057;&#x3001;C&#x30eD;&#x30B1;&#x30FC;&#x30eB;&#x3001;&#x30D5;&#x30A1;&#x30A4;&#x30eB;&#x8A18;&#x8FF0;&#x5B50;&#x30B5;&#x30DD;&#x30FC;&#x30C8;&#x306A;&#x3057;&#x3001;printf/scanf&#x3067;&#x306e;&#x30De;&#x30eB;&#x30C1;&#x30D0;&#x30A4;&#x30C8;&#x6587;&#x5B57;&#x306A;&#x3057;&#x3001;strtod&#x3067;&#x306e;16&#x9032;&#x6570;&#x6D6e;&#x52D5;&#x5C0F;&#x6570;&#x70B9;&#x6570;&#x306A;&#x3057;&#x3002;</state>
+        </option>
+        <option>
+          <name>OGProductVersion</name>
+          <state>6.50.1.4445</state>
+        </option>
+        <option>
+          <name>OGLastSavedByProductVersion</name>
+          <state>6.50.6.4952</state>
+        </option>
+        <option>
+          <name>GeneralEnableMisra</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraVerbose</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGChipSelectEditMenu</name>
+          <state>STM32F100xB	ST STM32F100xB</state>
+        </option>
+        <option>
+          <name>GenLowLevelInterface</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>GEndianModeBE</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OGBufferedTerminalOutput</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GenStdoutInterface</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraRules98</name>
+          <version>0</version>
+          <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+        </option>
+        <option>
+          <name>GeneralMisraVer</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraRules04</name>
+          <version>0</version>
+          <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+        </option>
+        <option>
+          <name>RTConfigPath2</name>
+          <state>$TOOLKIT_DIR$\INC\c\DLib_Config_Normal.h</state>
+        </option>
+        <option>
+          <name>GFPUCoreSlave</name>
+          <version>20</version>
+          <state>38</state>
+        </option>
+        <option>
+          <name>GBECoreSlave</name>
+          <version>20</version>
+          <state>38</state>
+        </option>
+        <option>
+          <name>OGUseCmsis</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGUseCmsisDspLib</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>ICCARM</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>28</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>CCDefines</name>
+          <state>ALLFUNC</state>
+          <state>TOPPERS_LABEL_ASM</state>
+        </option>
+        <option>
+          <name>CCPreprocFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPreprocComments</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPreprocLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListCFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCListCMnemonics</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCListCMessages</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCListAssFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListAssSource</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCEnableRemarks</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCDiagSuppress</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCDiagRemark</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCDiagWarning</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCDiagError</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCObjPrefix</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCAllowList</name>
+          <version>1</version>
+          <state>1001010</state>
+        </option>
+        <option>
+          <name>CCDebugInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IEndianMode</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IExtraOptionsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IExtraOptions</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCLangConformance</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSignedPlainChar</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCRequirePrototypes</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCMultibyteSupport</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCDiagWarnAreErr</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCompilerRuntimeInfo</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IFpuProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OutputFile</name>
+          <state>$FILE_BNAME$.o</state>
+        </option>
+        <option>
+          <name>CCLibConfigHeader</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>PreInclude</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CompilerMisraOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCIncludePath2</name>
+          <state>$PROJ_DIR$\..\..\..\include</state>
+          <state>$PROJ_DIR$\..\..\..\kernel</state>
+          <state>$PROJ_DIR$\..\..\..\arch</state>
+          <state>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm</state>
+          <state>$PROJ_DIR$\..\..\..</state>
+          <state>$PROJ_DIR$\..\..\..\target\stm32_discovery_EWARM2</state>
+          <state>$PROJ_DIR$\src</state>
+          <state>$PROJ_DIR$</state>
+        </option>
+        <option>
+          <name>CCStdIncCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCodeSection</name>
+          <state>.text</state>
+        </option>
+        <option>
+          <name>IInterwork2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IProcessorMode2</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCOptLevel</name>
+          <state>2</state>
+        </option>
+        <option>
+          <name>CCOptStrategy</name>
+          <version>0</version>
+          <state>2</state>
+        </option>
+        <option>
+          <name>CCOptLevelSlave</name>
+          <state>2</state>
+        </option>
+        <option>
+          <name>CompilerMisraRules98</name>
+          <version>0</version>
+          <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+        </option>
+        <option>
+          <name>CompilerMisraRules04</name>
+          <version>0</version>
+          <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+        </option>
+        <option>
+          <name>CCPosIndRopi</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPosIndRwpi</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPosIndNoDynInit</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccLang</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccCDialect</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccAllowVLA</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccCppDialect</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccExceptions</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccRTTI</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccStaticDestr</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccCppInlineSemantics</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccCmsis</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccFloatSemantics</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCOptimizationNoSizeConstraints</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>AARM</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>8</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>AObjPrefix</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AEndian</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ACaseSensitivity</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacroChars</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnWhat</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnOne</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AWarnRange1</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AWarnRange2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>ADebug</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AltRegisterNames</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ADefines</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AList</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AListHeader</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AListing</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Includes</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacDefs</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacExps</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacExec</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OnlyAssed</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MultiLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>PageLengthCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>PageLength</name>
+          <state>80</state>
+        </option>
+        <option>
+          <name>TabSpacing</name>
+          <state>8</state>
+        </option>
+        <option>
+          <name>AXRef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefDefines</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefInternal</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefDual</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AFpuProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AOutputFile</name>
+          <state>$FILE_BNAME$.o</state>
+        </option>
+        <option>
+          <name>AMultibyteSupport</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ALimitErrorsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ALimitErrorsEdit</name>
+          <state>100</state>
+        </option>
+        <option>
+          <name>AIgnoreStdInclude</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AUserIncludes</name>
+          <state>$PROJ_DIR$\..\..\..\include</state>
+          <state>$PROJ_DIR$\..\..\..\kernel</state>
+          <state>$PROJ_DIR$\..\..\..\arch</state>
+          <state>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm</state>
+          <state>$PROJ_DIR$\..\..\..</state>
+          <state>$PROJ_DIR$\..\..\..\target\stm32_discovery_EWARM2</state>
+          <state>$PROJ_DIR$\src</state>
+          <state>$PROJ_DIR$</state>
+        </option>
+        <option>
+          <name>AExtraOptionsCheckV2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AExtraOptionsV2</name>
+          <state></state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>OBJCOPY</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>OOCOutputFormat</name>
+          <version>2</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCOutputOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OOCOutputFile</name>
+          <state>sample.srec</state>
+        </option>
+        <option>
+          <name>OOCCommandLineProducer</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OOCObjCopyEnable</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>CUSTOM</name>
+      <archiveVersion>3</archiveVersion>
+      <data>
+        <extensions></extensions>
+        <cmdline></cmdline>
+      </data>
+    </settings>
+    <settings>
+      <name>BICOMP</name>
+      <archiveVersion>0</archiveVersion>
+      <data/>
+    </settings>
+    <settings>
+      <name>BUILDACTION</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <prebuild></prebuild>
+        <postbuild></postbuild>
+      </data>
+    </settings>
+    <settings>
+      <name>ILINK</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>15</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>IlinkLibIOConfig</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>XLinkMisraHandler</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkInputFileSlave</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOutputFile</name>
+          <state>sample.out</state>
+        </option>
+        <option>
+          <name>IlinkDebugInfoEnable</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkKeepSymbols</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinaryFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinarySymbol</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinarySegment</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinaryAlign</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkDefines</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkConfigDefines</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkMapFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkLogFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogInitialization</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogModule</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogSection</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogVeneer</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkIcfOverride</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkIcfFile</name>
+          <state>$PROJ_DIR$\..\target_rom.icf</state>
+        </option>
+        <option>
+          <name>IlinkIcfFileSlave</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkEnableRemarks</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkSuppressDiags</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkTreatAsRem</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkTreatAsWarn</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkTreatAsErr</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkWarningsAreErrors</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkUseExtraOptions</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkExtraOptions</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkLowLevelInterfaceSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkAutoLibEnable</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkAdditionalLibs</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkOverrideProgramEntryLabel</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkProgramEntryLabelSelect</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkProgramEntryLabel</name>
+          <state>__iar_program_start</state>
+        </option>
+        <option>
+          <name>DoFill</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>FillerByte</name>
+          <state>0xFF</state>
+        </option>
+        <option>
+          <name>FillerStart</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>FillerEnd</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>CrcSize</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcAlign</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcPoly</name>
+          <state>0x11021</state>
+        </option>
+        <option>
+          <name>CrcCompl</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CrcBitOrder</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CrcInitialValue</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>DoCrc</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkBE8Slave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkBufferedTerminalOutput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkStdoutInterfaceSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcFullSize</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkIElfToolPostProcess</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogAutoLibSelect</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogRedirSymbols</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogUnusedFragments</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCrcReverseByteOrder</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCrcUseAsInput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptInline</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOptExceptionsAllow</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptExceptionsForce</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCmsis</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptMergeDuplSections</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptUseVfe</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptForceVfe</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkStackAnalysisEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkStackControlFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkStackCallGraphFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CrcAlgorithm</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcUnitSize</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>IARCHIVE</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>IarchiveInputs</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IarchiveOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IarchiveOutput</name>
+          <state>###Unitialized###</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>BILINK</name>
+      <archiveVersion>0</archiveVersion>
+      <data/>
+    </settings>
+  </configuration>
+  <configuration>
+    <name>Release</name>
+    <toolchain>
+      <name>ARM</name>
+    </toolchain>
+    <debug>0</debug>
+    <settings>
+      <name>General</name>
+      <archiveVersion>3</archiveVersion>
+      <data>
+        <version>21</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>ExePath</name>
+          <state>Release\Exe</state>
+        </option>
+        <option>
+          <name>ObjPath</name>
+          <state>Release\Obj</state>
+        </option>
+        <option>
+          <name>ListPath</name>
+          <state>Release\List</state>
+        </option>
+        <option>
+          <name>Variant</name>
+          <version>20</version>
+          <state>38</state>
+        </option>
+        <option>
+          <name>GEndianMode</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Input variant</name>
+          <version>3</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Input description</name>
+          <state>&#x30D5;&#x30A9;&#x30FC;&#x30De;&#x30C3;&#x30BF;&#x306e;&#x81eA;&#x52D5;&#x9078;&#x629e;&#x3002;</state>
+        </option>
+        <option>
+          <name>Output variant</name>
+          <version>2</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Output description</name>
+          <state>&#x30D5;&#x30A9;&#x30FC;&#x30De;&#x30C3;&#x30BF;&#x306e;&#x81eA;&#x52D5;&#x9078;&#x629e;&#x3002;</state>
+        </option>
+        <option>
+          <name>GOutputBinary</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>FPU</name>
+          <version>2</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGCoreOrChip</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>GRuntimeLibSelect</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>GRuntimeLibSelectSlave</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>RTDescription</name>
+          <state>C/C++&#x30e9;&#x30F3;&#x30BF;&#x30A4;&#x30e0;&#x30e9;&#x30A4;&#x30D6;&#x30e9;&#x30eA;&#x306e;&#x901A;&#x5e38;&#x306e;&#x8A2D;&#x5B9A;&#x3092;&#x4F7F;&#x7528;&#x3057;&#x307e;&#x3059;&#x3002;&#x30eD;&#x30B1;&#x30FC;&#x30eB;&#x30A4;&#x30F3;&#x30BF;&#x30D5;&#x30A7;&#x30FC;&#x30B9;&#x306A;&#x3057;&#x3001;C&#x30eD;&#x30B1;&#x30FC;&#x30eB;&#x3001;&#x30D5;&#x30A1;&#x30A4;&#x30eB;&#x8A18;&#x8FF0;&#x5B50;&#x30B5;&#x30DD;&#x30FC;&#x30C8;&#x306A;&#x3057;&#x3001;printf/scanf&#x3067;&#x306e;&#x30De;&#x30eB;&#x30C1;&#x30D0;&#x30A4;&#x30C8;&#x6587;&#x5B57;&#x306A;&#x3057;&#x3001;strtod&#x3067;&#x306e;16&#x9032;&#x6570;&#x6D6e;&#x52D5;&#x5C0F;&#x6570;&#x70B9;&#x6570;&#x306A;&#x3057;&#x3002;</state>
+        </option>
+        <option>
+          <name>OGProductVersion</name>
+          <state>6.50.1.4445</state>
+        </option>
+        <option>
+          <name>OGLastSavedByProductVersion</name>
+          <state>6.50.6.4952</state>
+        </option>
+        <option>
+          <name>GeneralEnableMisra</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraVerbose</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGChipSelectEditMenu</name>
+          <state>STM32F100xB	ST STM32F100xB</state>
+        </option>
+        <option>
+          <name>GenLowLevelInterface</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GEndianModeBE</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OGBufferedTerminalOutput</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GenStdoutInterface</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraRules98</name>
+          <version>0</version>
+          <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+        </option>
+        <option>
+          <name>GeneralMisraVer</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraRules04</name>
+          <version>0</version>
+          <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+        </option>
+        <option>
+          <name>RTConfigPath2</name>
+          <state>$TOOLKIT_DIR$\INC\c\DLib_Config_Normal.h</state>
+        </option>
+        <option>
+          <name>GFPUCoreSlave</name>
+          <version>20</version>
+          <state>38</state>
+        </option>
+        <option>
+          <name>GBECoreSlave</name>
+          <version>20</version>
+          <state>38</state>
+        </option>
+        <option>
+          <name>OGUseCmsis</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OGUseCmsisDspLib</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>ICCARM</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>28</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>CCDefines</name>
+          <state>NDEBUG</state>
+          <state>ALLFUNC</state>
+          <state>TOPPERS_LABEL_ASM</state>
+        </option>
+        <option>
+          <name>CCPreprocFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPreprocComments</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPreprocLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListCFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCListCMnemonics</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCListCMessages</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListAssFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListAssSource</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCEnableRemarks</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCDiagSuppress</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCDiagRemark</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCDiagWarning</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCDiagError</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCObjPrefix</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCAllowList</name>
+          <version>1</version>
+          <state>1111111</state>
+        </option>
+        <option>
+          <name>CCDebugInfo</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IEndianMode</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IExtraOptionsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IExtraOptions</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCLangConformance</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCSignedPlainChar</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCRequirePrototypes</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCMultibyteSupport</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCDiagWarnAreErr</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCompilerRuntimeInfo</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IFpuProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OutputFile</name>
+          <state>$FILE_BNAME$.o</state>
+        </option>
+        <option>
+          <name>CCLibConfigHeader</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>PreInclude</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CompilerMisraOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCIncludePath2</name>
+          <state>$PROJ_DIR$\..\..\..\include</state>
+          <state>$PROJ_DIR$\..\..\..\kernel</state>
+          <state>$PROJ_DIR$\..\..\..\arch</state>
+          <state>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm</state>
+          <state>$PROJ_DIR$\..\..\..</state>
+          <state>$PROJ_DIR$\..\..\..\target\stm32_discovery_EWARM2</state>
+          <state>$PROJ_DIR$\src</state>
+          <state>$PROJ_DIR$</state>
+        </option>
+        <option>
+          <name>CCStdIncCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCodeSection</name>
+          <state>.text</state>
+        </option>
+        <option>
+          <name>IInterwork2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IProcessorMode2</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCOptLevel</name>
+          <state>3</state>
+        </option>
+        <option>
+          <name>CCOptStrategy</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCOptLevelSlave</name>
+          <state>3</state>
+        </option>
+        <option>
+          <name>CompilerMisraRules98</name>
+          <version>0</version>
+          <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+        </option>
+        <option>
+          <name>CompilerMisraRules04</name>
+          <version>0</version>
+          <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+        </option>
+        <option>
+          <name>CCPosIndRopi</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPosIndRwpi</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPosIndNoDynInit</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccLang</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccCDialect</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccAllowVLA</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccCppDialect</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccExceptions</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccRTTI</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccStaticDestr</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccCppInlineSemantics</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IccCmsis</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IccFloatSemantics</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCOptimizationNoSizeConstraints</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>AARM</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>8</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>AObjPrefix</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AEndian</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ACaseSensitivity</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacroChars</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnWhat</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnOne</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AWarnRange1</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AWarnRange2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>ADebug</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AltRegisterNames</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ADefines</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AList</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AListHeader</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AListing</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Includes</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacDefs</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacExps</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacExec</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OnlyAssed</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MultiLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>PageLengthCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>PageLength</name>
+          <state>80</state>
+        </option>
+        <option>
+          <name>TabSpacing</name>
+          <state>8</state>
+        </option>
+        <option>
+          <name>AXRef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefDefines</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefInternal</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefDual</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AFpuProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AOutputFile</name>
+          <state>$FILE_BNAME$.o</state>
+        </option>
+        <option>
+          <name>AMultibyteSupport</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ALimitErrorsCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ALimitErrorsEdit</name>
+          <state>100</state>
+        </option>
+        <option>
+          <name>AIgnoreStdInclude</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AUserIncludes</name>
+          <state>$PROJ_DIR$\..\..\..\include</state>
+          <state>$PROJ_DIR$\..\..\..\kernel</state>
+          <state>$PROJ_DIR$\..\..\..\arch</state>
+          <state>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm</state>
+          <state>$PROJ_DIR$\..\..\..</state>
+          <state>$PROJ_DIR$\..\..\..\target\stm32_discovery_EWARM2</state>
+          <state>$PROJ_DIR$\src</state>
+          <state>$PROJ_DIR$</state>
+        </option>
+        <option>
+          <name>AExtraOptionsCheckV2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AExtraOptionsV2</name>
+          <state></state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>OBJCOPY</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>OOCOutputFormat</name>
+          <version>2</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCOutputOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OOCOutputFile</name>
+          <state>sample.srec</state>
+        </option>
+        <option>
+          <name>OOCCommandLineProducer</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OOCObjCopyEnable</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>CUSTOM</name>
+      <archiveVersion>3</archiveVersion>
+      <data>
+        <extensions></extensions>
+        <cmdline></cmdline>
+      </data>
+    </settings>
+    <settings>
+      <name>BICOMP</name>
+      <archiveVersion>0</archiveVersion>
+      <data/>
+    </settings>
+    <settings>
+      <name>BUILDACTION</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <prebuild></prebuild>
+        <postbuild></postbuild>
+      </data>
+    </settings>
+    <settings>
+      <name>ILINK</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>15</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>IlinkLibIOConfig</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>XLinkMisraHandler</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkInputFileSlave</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOutputFile</name>
+          <state>sample.out</state>
+        </option>
+        <option>
+          <name>IlinkDebugInfoEnable</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkKeepSymbols</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinaryFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinarySymbol</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinarySegment</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkRawBinaryAlign</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkDefines</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkConfigDefines</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkMapFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkLogFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogInitialization</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogModule</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogSection</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogVeneer</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkIcfOverride</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkIcfFile</name>
+          <state>$PROJ_DIR$\..\target_rom.icf</state>
+        </option>
+        <option>
+          <name>IlinkIcfFileSlave</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkEnableRemarks</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkSuppressDiags</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkTreatAsRem</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkTreatAsWarn</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkTreatAsErr</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkWarningsAreErrors</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkUseExtraOptions</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkExtraOptions</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkLowLevelInterfaceSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkAutoLibEnable</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkAdditionalLibs</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkOverrideProgramEntryLabel</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkProgramEntryLabelSelect</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkProgramEntryLabel</name>
+          <state>__iar_program_start</state>
+        </option>
+        <option>
+          <name>DoFill</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>FillerByte</name>
+          <state>0xFF</state>
+        </option>
+        <option>
+          <name>FillerStart</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>FillerEnd</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>CrcSize</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcAlign</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcPoly</name>
+          <state>0x11021</state>
+        </option>
+        <option>
+          <name>CrcCompl</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CrcBitOrder</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CrcInitialValue</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>DoCrc</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkBE8Slave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkBufferedTerminalOutput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkStdoutInterfaceSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcFullSize</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkIElfToolPostProcess</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogAutoLibSelect</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogRedirSymbols</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkLogUnusedFragments</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCrcReverseByteOrder</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCrcUseAsInput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptInline</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptExceptionsAllow</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOptExceptionsForce</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkCmsis</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptMergeDuplSections</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkOptUseVfe</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IlinkOptForceVfe</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkStackAnalysisEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IlinkStackControlFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IlinkStackCallGraphFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CrcAlgorithm</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcUnitSize</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>IARCHIVE</name>
+      <archiveVersion>0</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>0</debug>
+        <option>
+          <name>IarchiveInputs</name>
+          <state></state>
+        </option>
+        <option>
+          <name>IarchiveOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IarchiveOutput</name>
+          <state>###Unitialized###</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>BILINK</name>
+      <archiveVersion>0</archiveVersion>
+      <data/>
+    </settings>
+  </configuration>
+  <group>
+    <name>arch</name>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_config.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_support.S</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\prc_timer.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\arch\arm_m_iccarm\start.S</name>
+    </file>
+  </group>
+  <group>
+    <name>kernel</name>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\alarm.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\cyclic.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\dataqueue.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\eventflag.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\exception.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\interrupt.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\mailbox.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\mempfix.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\pridataq.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\semaphore.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\startup.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\sys_manage.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\task.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\task_except.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\task_manage.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\task_refer.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\task_sync.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\time_event.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\time_manage.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\kernel\wait.c</name>
+    </file>
+  </group>
+  <group>
+    <name>library</name>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\library\histogram.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\library\log_output.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\library\strerror.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\library\t_perror.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\library\test_lib.c</name>
+    </file>
+  </group>
+  <group>
+    <name>syssvc</name>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\syssvc\banner.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\syssvc\logtask.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\syssvc\serial.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\syssvc\syslog.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\..\syssvc\vasyslog.c</name>
+    </file>
+  </group>
+  <group>
+    <name>target</name>
+    <file>
+      <name>$PROJ_DIR$\..\target_config.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\target_serial.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\target_support.S</name>
+    </file>
+  </group>
+  <file>
+    <name>$PROJ_DIR$\kernel_cfg.c</name>
+  </file>
+  <file>
+    <name>$PROJ_DIR$\src\sample1.c</name>
+  </file>
+</project>
+
+
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/sample.eww
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/sample.eww	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/sample.eww	(revision 61)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<workspace>
+  <project>
+    <path>$WS_DIR$\depend.ewp</path>
+  </project>
+  <project>
+    <path>$WS_DIR$\sample.ewp</path>
+  </project>
+  <batchBuild/>
+</workspace>
+
+
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/src/sample1.c
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/src/sample1.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/src/sample1.c	(revision 61)
@@ -0,0 +1,516 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: sample1.c 1797 2010-06-07 04:24:19Z ertl-hiro $
+ */
+
+/* 
+ *  TvvO(1)Ì{Ì
+ *
+ *  ASPJ[lÌî{IÈ®ìðmF·é½ßÌTvvOD
+ *
+ *  vOÌTv:
+ *
+ *  [UC^tF[Xðó¯ÂC^XNi^XNID: MAIN_TASKCD
+ *  æx: MAIN_PRIORITYjÆC3ÂÌÀñÀs³êé^XNi^XNID:
+ *  TASK1`TASK3CúDæx: MID_PRIORITYjÅ\¬³êéDÜ½CN®ü
+ *  úª2bÌüúnhiüúnhID: CYCHDR1jðp¢éD
+ *
+ *  ÀñÀs³êé^XNÍCtask_loopñó[vðÀs·éxÉC^XNª
+ *  ÀsÅ é±Æð çí·bZ[Wð\¦·éD
+ *
+ *  üúnhÍCOÂÌDæxiHIGH_PRIORITYCMID_PRIORITYC
+ *  LOW_PRIORITYjÌfBL
+[ðñ]³¹éDvOÌN®¼ãÍC
+ *  üúnhÍâ~óÔÉÈÁÄ¢éD
+ *
+ *  C^XNÍCVAI/O|[g©çÌ¶üÍðs¢i¶üÍð
+ *  ÒÁÄ¢éÔÍCÀñÀs³êé^XNªÀs³êÄ¢éjCüÍ³ê½
+ *  ¶ÉÎµ½ðÀs·éDüÍ³ê½¶ÆÌÖWÍÌÊèD
+ *  Control-CÜ½Í'Q'ªüÍ³êéÆCvOðI¹·éD
+ *
+ *  '1' : ÎÛ^XNðTASK1ÉØè·¦éiúÝèjD
+ *  '2' : ÎÛ^XNðTASK2ÉØè·¦éD
+ *  '3' : ÎÛ^XNðTASK3ÉØè·¦éD
+ *  'a' : ÎÛ^XNðact_tskÉæèN®·éD
+ *  'A' : ÎÛ^XNÉÎ·éN®vðcan_actÉæèLZ·éD
+ *  'e' : ÎÛ^XNÉext_tskðÄÑo³¹CI¹³¹éD
+ *  't' : ÎÛ^XNðter_tskÉæè­§I¹·éD
+ *  '>' : ÎÛ^XNÌDæxðHIGH_PRIORITYÉ·éD
+ *  '=' : ÎÛ^XNÌDæxðMID_PRIORITYÉ·éD
+ *  '<' : ÎÛ^XNÌDæxðLOW_PRIORITYÉ·éD
+ *  'G' : ÎÛ^XNÌDæxðget_priÅÇÝo·D
+ *  's' : ÎÛ^XNÉslp_tskðÄÑo³¹CN°Ò¿É³¹éD
+ *  'S' : ÎÛ^XNÉtslp_tsk(10b)ðÄÑo³¹CN°Ò¿É³¹éD
+ *  'w' : ÎÛ^XNðwup_tskÉæèN°·éD
+ *  'W' : ÎÛ^XNÉÎ·éN°vðcan_wupÉæèLZ·éD
+ *  'l' : ÎÛ^XNðrel_waiÉæè­§IÉÒ¿ðÉ·éD
+ *  'u' : ÎÛ^XNðsus_tskÉæè­§Ò¿óÔÉ·éD
+ *  'm' : ÎÛ^XNÌ­§Ò¿óÔðrsm_tskÉæèð·éD
+ *  'd' : ÎÛ^XNÉdly_tsk(10b)ðÄÑo³¹CÔoßÒ¿É³¹éD
+ *  'x' : ÎÛ^XNÉáOp^[0x0001ÌáOðv·éD
+ *  'X' : ÎÛ^XNÉáOp^[0x0002ÌáOðv·éD
+ *  'y' : ÎÛ^XNÉdis_texðÄÑo³¹C^XNáOðÖ~·éD
+ *  'Y' : ÎÛ^XNÉena_texðÄÑo³¹C^XNáOðÂ·éD
+ *  'r' : 3ÂÌDæxiHIGH_PRIORITYCMID_PRIORITYCLOW_PRIORITYjÌ
+ *        fBL
+[ðñ]³¹éD
+ *  'c' : üúnhð®ìJn³¹éD
+ *  'C' : üúnhð®ìâ~³¹éD
+ *  'b' : A[nhð5bãÉN®·éæ¤®ìJn³¹éD
+ *  'B' : A[nhð®ìâ~³¹éD
+ *  'z' : ÎÛ^XNÉCPUáOð­¶³¹éi^XNðI¹³¹éjD
+ *  'Z' : ÎÛ^XNÉCPUbNóÔÅCPUáOð­¶³¹éivOð
+ *        I¹·éjD
+ *  'V' : get_utmÅ«\]¿pVXeð2ñÇÞD
+ *  'v' : ­sµ½VXeR[ð\¦·éiftHgjD
+ *  'q' : ­sµ½VXeR[ð\¦µÈ¢D
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include <t_stdlib.h>
+#include "syssvc/serial.h"
+#include "syssvc/syslog.h"
+#include "kernel_cfg.h"
+#include "sample1.h"
+
+/*
+ *  T[rXR[ÌG[ÌOoÍ
+ */
+Inline void
+svc_perror(const char *file, int_t line, const char *expr, ER ercd)
+{
+	if (ercd < 0) {
+		t_perror(LOG_ERROR, file, line, expr, ercd);
+	}
+}
+
+#define	SVC_PERROR(expr)	svc_perror(__FILE__, __LINE__, #expr, (expr))
+
+/*
+ *  ÀsÀs³êé^XNÖÌbZ[WÌæ
+ */
+char_t	message[3];
+
+/*
+ *  [vñ
+ */
+ulong_t	task_loop;		/* ^XNàÅÌ[vñ */
+ulong_t	tex_loop;		/* áO[`àÅÌ[vñ */
+
+/*
+ *  ÀsÀs³êé^XN
+ */
+void task(intptr_t exinf)
+{
+	volatile ulong_t	i;
+	int_t		n = 0;
+	int_t		tskno = (int_t) exinf;
+	const char	*graph[] = { "|", "  +", "    *" };
+	char_t		c;
+
+	SVC_PERROR(ena_tex());
+	while (1) {
+		syslog(LOG_NOTICE, "task%d is running (%03d).   %s",
+										tskno, ++n, graph[tskno-1]);
+		for (i = 0; i < task_loop; i++);
+		c = message[tskno-1];
+		message[tskno-1] = 0;
+		switch (c) {
+		case 'e':
+			syslog(LOG_INFO, "#%d#ext_tsk()", tskno);
+			SVC_PERROR(ext_tsk());
+			assert(0);
+		case 's':
+			syslog(LOG_INFO, "#%d#slp_tsk()", tskno);
+			SVC_PERROR(slp_tsk());
+			break;
+		case 'S':
+			syslog(LOG_INFO, "#%d#tslp_tsk(10000)", tskno);
+			SVC_PERROR(tslp_tsk(10000));
+			break;
+		case 'd':
+			syslog(LOG_INFO, "#%d#dly_tsk(10000)", tskno);
+			SVC_PERROR(dly_tsk(10000));
+			break;
+		case 'y':
+			syslog(LOG_INFO, "#%d#dis_tex()", tskno);
+			SVC_PERROR(dis_tex());
+			break;
+		case 'Y':
+			syslog(LOG_INFO, "#%d#ena_tex()", tskno);
+			SVC_PERROR(ena_tex());
+			break;
+#ifdef CPUEXC1
+		case 'z':
+			syslog(LOG_NOTICE, "#%d#raise CPU exception", tskno);
+			RAISE_CPU_EXCEPTION;
+			break;
+		case 'Z':
+			SVC_PERROR(loc_cpu());
+			syslog(LOG_NOTICE, "#%d#raise CPU exception", tskno);
+			RAISE_CPU_EXCEPTION;
+			SVC_PERROR(unl_cpu());
+			break;
+#endif /* CPUEXC1 */
+		default:
+			break;
+		}
+	}
+}
+
+/*
+ *  ÀsµÄÀs³êé^XNpÌ^XNáO[`
+ */
+void tex_routine(TEXPTN texptn, intptr_t exinf)
+{
+	volatile ulong_t	i;
+	int_t	tskno = (int_t) exinf;
+
+	syslog(LOG_NOTICE, "task%d receives exception 0x%04x.", tskno, texptn);
+	for (i = 0; i < tex_loop; i++);
+
+	if ((texptn & 0x8000U) != 0U) {
+		syslog(LOG_INFO, "#%d#ext_tsk()", tskno);
+		SVC_PERROR(ext_tsk());
+		assert(0);
+	}
+}
+
+/*
+ *  CPUáOnh
+ */
+#ifdef CPUEXC1
+
+void
+cpuexc_handler(void *p_excinf)
+{
+	ID		tskid;
+
+	syslog(LOG_NOTICE, "CPU exception handler (p_excinf = %08p).", p_excinf);
+	if (sns_ctx() != true) {
+		syslog(LOG_WARNING,
+					"sns_ctx() is not true in CPU exception handler.");
+	}
+	if (sns_dpn() != true) {
+		syslog(LOG_WARNING,
+					"sns_dpn() is not true in CPU exception handler.");
+	}
+	syslog(LOG_INFO, "sns_loc = %d sns_dsp = %d sns_tex = %d",
+									sns_loc(), sns_dsp(), sns_tex());
+	syslog(LOG_INFO, "xsns_dpn = %d xsns_xpn = %d",
+									xsns_dpn(p_excinf), xsns_xpn(p_excinf));
+
+	if (xsns_xpn(p_excinf)) {
+		syslog(LOG_NOTICE, "Sample program ends with exception.");
+		SVC_PERROR(ext_ker());
+		assert(0);
+	}
+
+	SVC_PERROR(iget_tid(&tskid));
+	SVC_PERROR(iras_tex(tskid, 0x8000U));
+}
+
+#endif /* CPUEXC1 */
+
+/*
+ *  üúnh
+ *
+ *  HIGH_PRIORITYCMID_PRIORITYCLOW_PRIORITY ÌeDæxÌfBL
+[
+ *  ðñ]³¹éD
+ */
+void cyclic_handler(intptr_t exinf)
+{
+	SVC_PERROR(irot_rdq(HIGH_PRIORITY));
+	SVC_PERROR(irot_rdq(MID_PRIORITY));
+	SVC_PERROR(irot_rdq(LOW_PRIORITY));
+}
+
+/*
+ *  A[nh
+ *
+ *  HIGH_PRIORITYCMID_PRIORITYCLOW_PRIORITY ÌeDæxÌfBL
+[
+ *  ðñ]³¹éD
+ */
+void alarm_handler(intptr_t exinf)
+{
+	SVC_PERROR(irot_rdq(HIGH_PRIORITY));
+	SVC_PERROR(irot_rdq(MID_PRIORITY));
+	SVC_PERROR(irot_rdq(LOW_PRIORITY));
+}
+
+/*
+ *  C^XN
+ */
+void main_task(intptr_t exinf)
+{
+	char_t	c;
+	ID		tskid = TASK1;
+	int_t	tskno = 1;
+	ER_UINT	ercd;
+	PRI		tskpri;
+#ifndef TASK_LOOP
+	volatile ulong_t	i;
+	SYSTIM	stime1, stime2;
+#endif /* TASK_LOOP */
+#ifdef TOPPERS_SUPPORT_GET_UTM
+	SYSUTM	utime1, utime2;
+#endif /* TOPPERS_SUPPORT_GET_UTM */
+
+	SVC_PERROR(syslog_msk_log(LOG_UPTO(LOG_INFO), LOG_UPTO(LOG_EMERG)));
+	syslog(LOG_NOTICE, "Sample program starts (exinf = %d).", (int_t) exinf);
+
+	/*
+	 *  VA|[gÌú»
+	 *
+	 *  VXeO^XNÆ¯¶VA|[gðg¤êÈÇCVA
+	 *  |[gªI[vÏÝÌêÉÍ±±ÅE_OBJG[ÉÈéªCxáÍ
+	 *  È¢D
+	 */
+	ercd = serial_opn_por(TASK_PORTID);
+	if (ercd < 0 && MERCD(ercd) != E_OBJ) {
+		syslog(LOG_ERROR, "%s (%d) reported by `serial_opn_por'.",
+									itron_strerror(ercd), SERCD(ercd));
+	}
+	SVC_PERROR(serial_ctl_por(TASK_PORTID,
+							(IOCTL_CRLF | IOCTL_FCSND | IOCTL_FCRCV)));
+
+	/*
+ 	 *  [vñÌÝè
+	 *
+	 *  TASK_LOOPª}Nè`³êÄ¢éêCªè¹¸ÉCTASK_LOOPÉè
+	 *  `³ê½lðC^XNàÅÌ[vñÆ·éD
+	 *
+	 *  MEASURE_TWICEª}Nè`³êÄ¢éêC1ñÚÌªèÊðÌÄ
+	 *  ÄC2ñÚÌªèÊðg¤D1ñÚÌªèÍ·ßÌÔªoé½ßD
+	 */
+#ifdef TASK_LOOP
+	task_loop = TASK_LOOP;
+#else /* TASK_LOOP */
+
+#ifdef MEASURE_TWICE
+	task_loop = LOOP_REF;
+	SVC_PERROR(get_tim(&stime1));
+	for (i = 0; i < task_loop; i++);
+	SVC_PERROR(get_tim(&stime2));
+#endif /* MEASURE_TWICE */
+
+	task_loop = LOOP_REF;
+	SVC_PERROR(get_tim(&stime1));
+	for (i = 0; i < task_loop; i++);
+	SVC_PERROR(get_tim(&stime2));
+	task_loop = LOOP_REF * 400UL / (stime2 - stime1);
+
+#endif /* TASK_LOOP */
+	tex_loop = task_loop / 5;
+
+	/*
+ 	 *  ^XNÌN®
+	 */
+	SVC_PERROR(act_tsk(TASK1));
+	SVC_PERROR(act_tsk(TASK2));
+	SVC_PERROR(act_tsk(TASK3));
+
+	/*
+ 	 *  C[v
+	 */
+	do {
+		SVC_PERROR(serial_rea_dat(TASK_PORTID, &c, 1));
+		switch (c) {
+		case 'e':
+		case 's':
+		case 'S':
+		case 'd':
+		case 'y':
+		case 'Y':
+		case 'z':
+		case 'Z':
+			message[tskno-1] = c;
+			break;
+		case '1':
+			tskno = 1;
+			tskid = TASK1;
+			break;
+		case '2':
+			tskno = 2;
+			tskid = TASK2;
+			break;
+		case '3':
+			tskno = 3;
+			tskid = TASK3;
+			break;
+		case 'a':
+			syslog(LOG_INFO, "#act_tsk(%d)", tskno);
+			SVC_PERROR(act_tsk(tskid));
+			break;
+		case 'A':
+			syslog(LOG_INFO, "#can_act(%d)", tskno);
+			SVC_PERROR(ercd = can_act(tskid));
+			if (ercd >= 0) {
+				syslog(LOG_NOTICE, "can_act(%d) returns %d", tskno, ercd);
+			}
+			break;
+		case 't':
+			syslog(LOG_INFO, "#ter_tsk(%d)", tskno);
+			SVC_PERROR(ter_tsk(tskid));
+			break;
+		case '>':
+			syslog(LOG_INFO, "#chg_pri(%d, HIGH_PRIORITY)", tskno);
+			SVC_PERROR(chg_pri(tskid, HIGH_PRIORITY));
+			break;
+		case '=':
+			syslog(LOG_INFO, "#chg_pri(%d, MID_PRIORITY)", tskno);
+			SVC_PERROR(chg_pri(tskid, MID_PRIORITY));
+			break;
+		case '<':
+			syslog(LOG_INFO, "#chg_pri(%d, LOW_PRIORITY)", tskno);
+			SVC_PERROR(chg_pri(tskid, LOW_PRIORITY));
+			break;
+		case 'G':
+			syslog(LOG_INFO, "#get_pri(%d, &tskpri)", tskno);
+			SVC_PERROR(ercd = get_pri(tskid, &tskpri));
+			if (ercd >= 0) {
+				syslog(LOG_NOTICE, "priority of task %d is %d", tskno, tskpri);
+			}
+			break;
+		case 'w':
+			syslog(LOG_INFO, "#wup_tsk(%d)", tskno);
+			SVC_PERROR(wup_tsk(tskid));
+			break;
+		case 'W':
+			syslog(LOG_INFO, "#can_wup(%d)", tskno);
+			SVC_PERROR(ercd = can_wup(tskid));
+			if (ercd >= 0) {
+				syslog(LOG_NOTICE, "can_wup(%d) returns %d", tskno, ercd);
+			}
+			break;
+		case 'l':
+			syslog(LOG_INFO, "#rel_wai(%d)", tskno);
+			SVC_PERROR(rel_wai(tskid));
+			break;
+		case 'u':
+			syslog(LOG_INFO, "#sus_tsk(%d)", tskno);
+			SVC_PERROR(sus_tsk(tskid));
+			break;
+		case 'm':
+			syslog(LOG_INFO, "#rsm_tsk(%d)", tskno);
+			SVC_PERROR(rsm_tsk(tskid));
+			break;
+		case 'x':
+			syslog(LOG_INFO, "#ras_tex(%d, 0x0001U)", tskno);
+			SVC_PERROR(ras_tex(tskid, 0x0001U));
+			break;
+		case 'X':
+			syslog(LOG_INFO, "#ras_tex(%d, 0x0002U)", tskno);
+			SVC_PERROR(ras_tex(tskid, 0x0002U));
+			break;
+		case 'r':
+			syslog(LOG_INFO, "#rot_rdq(three priorities)");
+			SVC_PERROR(rot_rdq(HIGH_PRIORITY));
+			SVC_PERROR(rot_rdq(MID_PRIORITY));
+			SVC_PERROR(rot_rdq(LOW_PRIORITY));
+			break;
+		case 'c':
+			syslog(LOG_INFO, "#sta_cyc(1)");
+			SVC_PERROR(sta_cyc(CYCHDR1));
+			break;
+		case 'C':
+			syslog(LOG_INFO, "#stp_cyc(1)");
+			SVC_PERROR(stp_cyc(CYCHDR1));
+			break;
+		case 'b':
+			syslog(LOG_INFO, "#sta_alm(1, 5000)");
+			SVC_PERROR(sta_alm(ALMHDR1, 5000));
+			break;
+		case 'B':
+			syslog(LOG_INFO, "#stp_alm(1)");
+			SVC_PERROR(stp_alm(ALMHDR1));
+			break;
+
+		case 'V':
+#ifdef TOPPERS_SUPPORT_GET_UTM
+			SVC_PERROR(get_utm(&utime1));
+			SVC_PERROR(get_utm(&utime2));
+			syslog(LOG_NOTICE, "utime1 = %ld, utime2 = %ld",
+										(ulong_t) utime1, (ulong_t) utime2);
+#else /* TOPPERS_SUPPORT_GET_UTM */
+			syslog(LOG_NOTICE, "get_utm is not supported.");
+#endif /* TOPPERS_SUPPORT_GET_UTM */
+			break;
+
+		case 'v':
+			SVC_PERROR(syslog_msk_log(LOG_UPTO(LOG_INFO),
+										LOG_UPTO(LOG_EMERG)));
+			break;
+		case 'q':
+			SVC_PERROR(syslog_msk_log(LOG_UPTO(LOG_NOTICE),
+										LOG_UPTO(LOG_EMERG)));
+			break;
+
+#ifdef BIT_KERNEL
+		case ' ':
+			SVC_PERROR(loc_cpu());
+			{
+				extern ER	bit_kernel(void);
+
+				SVC_PERROR(ercd = bit_kernel());
+				if (ercd >= 0) {
+					syslog(LOG_NOTICE, "bit_kernel passed.");
+				}
+			}
+			SVC_PERROR(unl_cpu());
+			break;
+#endif /* BIT_KERNEL */
+
+		default:
+			break;
+		}
+	} while (c != '\003' && c != 'Q');
+
+	syslog(LOG_NOTICE, "Sample program ends.");
+	SVC_PERROR(ext_ker());
+	assert(0);
+}
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/src/sample1.cfg
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/src/sample1.cfg	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/src/sample1.cfg	(revision 61)
@@ -0,0 +1,27 @@
+/*
+ *  @(#) $Id: sample1.cfg 718 2008-01-01 12:30:48Z hiro $
+ */
+
+/*
+ *  TvvO(1)ÌVXeRtBM
+[Vt@C
+ */
+INCLUDE("target_timer.cfg");
+INCLUDE("syssvc/syslog.cfg");
+INCLUDE("syssvc/banner.cfg");
+INCLUDE("syssvc/serial.cfg");
+INCLUDE("syssvc/logtask.cfg");
+
+#include "sample1.h"
+CRE_TSK(TASK1, { TA_NULL, 1, task, MID_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK2, { TA_NULL, 2, task, MID_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK3, { TA_NULL, 3, task, MID_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(MAIN_TASK, { TA_ACT, 0, main_task, MAIN_PRIORITY, STACK_SIZE, NULL });
+DEF_TEX(TASK1, { TA_NULL, tex_routine });
+DEF_TEX(TASK2, { TA_NULL, tex_routine });
+DEF_TEX(TASK3, { TA_NULL, tex_routine });
+CRE_CYC(CYCHDR1, { TA_NULL, 0, cyclic_handler, 2000, 0 });
+CRE_ALM(ALMHDR1, { TA_NULL, 0, alarm_handler });
+#ifdef CPUEXC1
+DEF_EXC(CPUEXC1, { TA_NULL, cpuexc_handler });
+#endif /* CPUEXC1 */
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/src/sample1.h
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/src/sample1.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/sample_workspace/src/sample1.h	(revision 61)
@@ -0,0 +1,97 @@
+/*
+ *  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-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ *
+ *  @(#) $Id: sample1.h 1716 2010-01-31 11:39:18Z ertl-hiro $
+ */
+
+/*
+ *		TvvO(1)Ìwb_t@C
+ */
+
+/*
+ *  ^[QbgË¶Ìè`
+ */
+#include "target_test.h"
+
+/*
+ *  e^XNÌDæxÌè`
+ */
+
+#define MAIN_PRIORITY	5		/* C^XNÌDæx */
+								/* HIGH_PRIORITYæè­·é±Æ */
+
+#define HIGH_PRIORITY	9		/* ÀñÉÀs³êé^XNÌDæx */
+#define MID_PRIORITY	10
+#define LOW_PRIORITY	11
+
+/*
+ *  ^[QbgÉË¶·éÂ\«Ì éèÌè`
+ */
+
+#ifndef TASK_PORTID
+#define	TASK_PORTID		1			/* ¶üÍ·éVA|[gID */
+#endif /* TASK_PORTID */
+
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ^XNÌX^bNTCY */
+#endif /* STACK_SIZE */
+
+#ifndef LOOP_REF
+#define LOOP_REF		ULONG_C(1000000)	/* ¬xvªpÌ[vñ */
+#endif /* LOOP_REF */
+
+/*
+ *  ÖÌvg^Cvé¾
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+extern void	task(intptr_t exinf);
+extern void	main_task(intptr_t exinf);
+extern void	tex_routine(TEXPTN texptn, intptr_t exinf);
+#ifdef CPUEXC1
+extern void	cpuexc_handler(void *p_excinf);
+#endif /* CPUEXC1 */
+extern void	cyclic_handler(intptr_t exinf);
+extern void	alarm_handler(intptr_t exinf);
+
+#endif /* TOPPERS_MACRO_ONLY */
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/stm32_discovery.h
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/stm32_discovery.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/stm32_discovery.h	(revision 61)
@@ -0,0 +1,243 @@
+/*
+ *  TOPPERS/JSP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Just Standard Profile Kernel
+ *
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCFree Software Foundation ÉæÁÄö\³êÄ¢é 
+ *  GNU General Public License Ì Version 2 ÉLq³êÄ¢éð©CÈ
+ *  ºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEFAi{\tgEF
+ *  AðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»EüÏEÄzziÈºC
+ *  pÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðÄpÂ\ÈoCiR[hiP[^uIu
+ *      WFNgt@CâCuÈÇjÌ`Åp·éêÉÍCp
+ *      Éº¤hL
+gipÒ}j
+AÈÇjÉCãLÌì \¦C
+ *      ±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðÄpsÂ\ÈoCiR[hÌ`Ü½Í@íÉg
+ *      Ýñ¾`Åp·éêÉÍCÌ¢¸ê©Ìðð½·±ÆD
+ *    (a) pÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌì
+ *         \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) pÌ`ÔðCÊÉèßéû@ÉæÁÄCãLì ÒÉñ·é
+ *        ±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì ÒðÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì ÒÍC
+ *  {\tgEFAÉÖµÄC»ÌKpÂ\«àÜßÄC¢©ÈéÛØàsí
+ *  È¢DÜ½C{\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢
+ *  ©Èé¹QÉÖµÄàC»ÌÓCðíÈ¢D
+ * 
+ */
+#ifndef TOPPERS_CQ_STARM_H
+#define TOPPERS_CQ_STARM_H
+
+#include <sil.h>
+
+/*
+ * CORTEX-M3 CPUÌË¶ÌCN[h
+ */
+#include "arm_m_iccarm/arm_m.h"
+
+/*
+ *  VXeNbNÌè`i­Uqüg8MHzj
+ */
+#define HSE_CLOCK		(8000000)
+#define SYS_CLOCK		(HSE_CLOCK * 3)
+#define PCLK1_CLOCK		(HSE_CLOCK * 3)
+#define PCLK2_CLOCK		(HSE_CLOCK * 3)
+
+/*
+ *  ÝÔÌÅål
+ */
+#define TMAX_INTNO   (16 + 60)
+
+/*
+ *  ÝDæxÌrbg
+ */
+#define TBITW_IPRI     4
+
+/*
+ *  ÝDæxrbgÌTuDæxÌrbg
+ */
+#define TBITW_SUBIPRI  0
+
+/*
+ *  ÝxN^Ôè`
+ */
+#define IRQ_VECTOR_USART1		(16 + 37)
+
+
+/* STM32F10XÌytFWX^è` */
+#define PERIPH_REG_BASE			(0x40000000UL)
+#define SRAM_BASE				(0x20000000UL)
+
+#define APB1_PERIPH				(PERIPH_REG_BASE)
+#define APB2_PERIPH				(PERIPH_REG_BASE + 0x10000)
+#define AHB_PERIPH				(PERIPH_REG_BASE + 0x20000)
+
+/* BUS:APB1 */
+#define TIM2_BASE				(APB1_PERIPH)
+#define TIM3_BASE				(APB1_PERIPH + 0x400)
+#define TIM4_BASE				(APB1_PERIPH + 0x800)
+#define TIM6_BASE				(APB1_PERIPH + 0x1000)
+#define TIM7_BASE				(APB1_PERIPH + 0x1400)
+#define RTC_BASE				(APB1_PERIPH + 0x2800)
+#define WWDG_BASE				(APB1_PERIPH + 0x2C00)
+#define IWDG_BASE				(APB1_PERIPH + 0x3000)
+#define SPI2_BASE				(APB1_PERIPH + 0x3800)
+#define USART2_BASE				(APB1_PERIPH + 0x4400)
+#define USART3_BASE				(APB1_PERIPH + 0x4800)
+#define I2C1_BASE				(APB1_PERIPH + 0x5400)
+#define I2C2_BASE				(APB1_PERIPH + 0x5800)
+#define BKP_BASE				(APB1_PERIPH + 0x6C00)
+#define PWR_BASE				(APB1_PERIPH + 0x7000)
+#define DAC_BASE				(APB1_PERIPH + 0x7400)
+#define CEC_BASE				(APB1_PERIPH + 0x7800)
+
+/* BUS:APB2 */
+#define AFIO_BASE				(APB2_PERIPH)
+#define EXTI_BASE				(APB2_PERIPH + 0x400)
+#define GPIOA_BASE				(APB2_PERIPH + 0x800)
+#define GPIOB_BASE				(APB2_PERIPH + 0xC00)
+#define GPIOC_BASE				(APB2_PERIPH + 0x1000)
+#define GPIOD_BASE				(APB2_PERIPH + 0x1400)
+#define GPIOE_BASE				(APB2_PERIPH + 0x1800)
+#define ADC1_BASE				(APB2_PERIPH + 0x2400)
+#define TIM1_BASE				(APB2_PERIPH + 0x2C00)
+#define SPI1_BASE				(APB2_PERIPH + 0x3000)
+#define USART1_BASE				(APB2_PERIPH + 0x3800)
+#define TIM15_BASE				(APB2_PERIPH + 0x4000)
+#define TIM16_BASE				(APB2_PERIPH + 0x4400)
+#define TIM17_BASE				(APB2_PERIPH + 0x4800)
+
+/* BUS:AHB */
+#define DMA_BASE				(AHB_PERIPH)
+#define RCC_BASE				(AHB_PERIPH + 0x1000)
+#define FLASH_BASE				(AHB_PERIPH + 0x2000)
+#define CRC_BASE				(AHB_PERIPH + 0x3000)
+
+/* System Control space */
+#define SCS_BASE				(0xE000E000)
+#define SYSTM_BASE				(SCS_BASE + 0x0010)
+#define NVIC_BASE				(SCS_BASE + 0x0100)
+#define SYSCB_BASE				(SCS_BASE + 0x0D00)
+
+/* RCC */
+#define RCC_CR					(RCC_BASE)
+#define RCC_CFGR				(RCC_BASE + 0x04)
+#define RCC_CIR					(RCC_BASE + 0x08)
+#define RCC_APB2RSTR			(RCC_BASE + 0x0C)
+#define RCC_APB1RSTR			(RCC_BASE + 0x10)
+#define RCC_AHBENR				(RCC_BASE + 0x14)
+#define RCC_APB2ENR				(RCC_BASE + 0x18)
+#define RCC_APB1ENR				(RCC_BASE + 0x1C)
+#define RCC_BDCR				(RCC_BASE + 0x20)
+#define RCC_CSR					(RCC_BASE + 0x24)
+#define RCC_CFGR2				(RCC_BASE + 0x2C)
+
+/* NVIC */
+#define NVIC_ENAVLE_REG(ch)		(NVIC_BASE + ((ch) >> 5))
+#define NVIC_DISABLE_REG(ch)	(NVIC_BASE + 0x80 + ((ch) >> 5))
+#define NVIC_SET_PEND_REG(ch)	(NVIC_BASE + 0x100 + ((ch) >> 5))
+#define NVIC_CLEAR_PEND_REG(ch)	(NVIC_BASE + 0x180 + ((ch) >> 5))
+#define NVIC_ACTIVE_REG(ch)		(NVIC_BASE + 0x200 + ((ch) >> 5))
+#define NVIC_PRIO_REG(ch)		(NVIC_BASE + 0x300 + ((ch) >> 2))
+
+/* GPIOx */
+#define GPIO_CRL(x)				(x)
+#define GPIO_CRH(x)				((x) + 0x04)
+#define GPIO_IDR(x)				((x) + 0x08)
+#define GPIO_ODR(x)				((x) + 0x0C)
+#define GPIO_BSRR(x)			((x) + 0x10)
+#define GPIO_BRR(x)				((x) + 0x14)
+#define GPIO_LCKR(x)			((x) + 0x18)
+
+/* AFIO */
+#define AFIO_EVCR				(AFIO_BASE)
+#define AFIO_MAPR				(AFIO_BASE + 0x04)
+#define AFIO_EXTICR1			(AFIO_BASE + 0x08)
+#define AFIO_EXTICR2			(AFIO_BASE + 0x0C)
+#define AFIO_EXTICR3			(AFIO_BASE + 0x10)
+#define AFIO_EXTICR4			(AFIO_BASE + 0x14)
+#define AFIO_MAPR2				(AFIO_BASE + 0x0C)
+
+/* FLASH */
+#define FLASH_ACR				(FLASH_BASE)
+
+/* RCCWX^è` */
+#define CR_PLL_RDY				(0x02000000)
+#define CR_PLL_ON				(0x01000000)
+#define CR_HSE_RDY				(0x00020000)
+#define CR_HSE_ON				(0x00010000)
+#define CR_HSI_RDY				(0x00000002)
+#define CR_HSI_ON				(0x00000001)
+#define CFGR_PLLMUL_MASK		(0x003C0000)
+#define CFGR_PLL_XTPRE			(0x00020000)
+#define CFGR_PLL_SRC			(0x00010000)
+#define CFGR_HPRE_MASK			(0x000000F0)
+#define CFGR_PPRE2_MASK			(0x00003800)
+#define CFGR_PPRE1_MASK			(0x00000700)
+#define CFGR_SWS_MASK			(0x0000000C)
+#define CFGR_SW_MASK			(0x00000003)
+#define CFGR_SW_PLL				(0x02)
+#define APB2ENR_ADC3_EN			(0x8000)
+#define APB2ENR_USART1_EN		(0x4000)
+#define APB2ENR_TIM8_EN			(0x2000)
+#define APB2ENR_SPI1_EN			(0x1000)
+#define APB2ENR_TIM1_EN			(0x0800)
+#define APB2ENR_ADC2_EN			(0x0400)
+#define APB2ENR_ADC1_EN			(0x0200)
+#define APB2ENR_IOPG_EN			(0x0100)
+#define APB2ENR_IOPF_EN			(0x0080)
+#define APB2ENR_IOPE_EN			(0x0040)
+#define APB2ENR_IOPD_EN			(0x0020)
+#define APB2ENR_IOPC_EN			(0x0010)
+#define APB2ENR_IOPB_EN			(0x0008)
+#define APB2ENR_IOPA_EN			(0x0004)
+#define APB2ENR_AFIO_EN			(0x0001)
+#define AHBENR_SDIO_EN			(0x0400)
+#define AHBENR_FSMC_EN			(0x0100)
+#define AHBENR_CRCE_EN			(0x0040)
+#define AHBENR_FLITF_EN			(0x0010)
+#define AHBENR_SRAM_EN			(0x0004)
+#define AHBENR_DMA_EN			(0x0001)
+
+/* FLASHWX^è` */
+#define ACR_LATENCY_MASK		(0x07)
+#define ACR_LATENCY_ZERO		(0x00)
+#define ACR_LATENCY_ONE			(0x01)
+#define ACR_LATENCY_TWO			(0x02)
+
+/* GPIOxWX^è` */
+#define CNF_IN_ANALOG			(0x00)
+#define CNF_IN_FLOATING			(0x01)
+#define CNF_IN_PULL				(0x02)
+#define CNF_OUT_GP_PP			(0x00)
+#define CNF_OUT_GP_OD			(0x01)
+#define CNF_OUT_AF_PP			(0x02)
+#define CNF_OUT_AF_OD			(0x03)
+#define MODE_INPUT				(0x00)
+#define MODE_OUTPUT_10MHZ		(0x01)
+#define MODE_OUTPUT_2MHZ		(0x02)
+#define MODE_OUTPUT_50MHZ		(0x03)
+
+#define CR_MODE_MASK(x)			(0x03 << ((x) << 2))
+#define CR_CNF_MASK(x)			(0x0C << ((x) << 2))
+#define CR_MODE(x,v)			(((v) & 0x03) << ((x) << 2))
+#define CR_CNF(x,v)				((((v) << 2) & 0x0C) << ((x) << 2))
+
+#ifndef TOPPERS_MACRO_ONLY
+
+#endif /* TOPPERS_MACRO_ONLY */
+#endif /* TOPPERS_CQ_STARM_H */
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target.tf
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target.tf	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target.tf	(revision 61)
@@ -0,0 +1,8 @@
+$ 
+$     pX2Ì^[QbgË¶ev[giSTM32 DISCOVERYpj
+$ 
+
+$ 
+$  vZbTË¶Ìev[gt@CÌCN[h
+$ 
+$INCLUDE"arm_m_iccarm/prc.tf"$
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_cfg1_out.h
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_cfg1_out.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_cfg1_out.h	(revision 61)
@@ -0,0 +1,8 @@
+/*
+ *		cfg1_out.cðN·é½ßÉKvÈX^uÌè`
+ */
+
+/*
+ *  RAË¶ÌX^uÌè` 
+ */
+#include "arm_m_iccarm/prc_cfg1_out.h"
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_check.tf
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_check.tf	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_check.tf	(revision 61)
@@ -0,0 +1,8 @@
+$ 
+$     pX3Ì^[QbgË¶ev[giSTM32 DISCOVERYpj
+$ 
+
+$ 
+$  pX3ÌvZbTË¶Ìev[gÌCN[h
+$ 
+$INCLUDE"arm_m_iccarm/prc_check.tf"$
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_config.c
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_config.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_config.c	(revision 61)
@@ -0,0 +1,182 @@
+/*
+ *  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-2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ * ^[QbgË¶W
+[iSTM32 DISCOVERYpj
+ */
+#include "kernel_impl.h"
+#include <sil.h>
+#include "stm32_discovery.h"
+#include "target_serial.h"
+#include "target_syssvc.h"
+
+STK_T _target_istk[DEFAULT_ISTKSZ];
+
+/*
+ * GPIOWX^ìÖ
+ */
+#pragma inline
+void set_cr_mode(uint32_t reg, uint_t p, int_t v)
+{
+	if (p < 8) {
+		sil_andw((void*)GPIO_CRL(reg), ~CR_MODE_MASK(p));
+		sil_orw((void*)GPIO_CRL(reg), CR_MODE(p, v));
+	} else if (8 <= p && p < 16) {
+		sil_andw((void*)GPIO_CRH(reg), ~CR_MODE_MASK(p - 8));
+		sil_orw((void*)GPIO_CRH(reg), CR_MODE(p - 8, v));
+	}
+}
+
+#pragma inline
+void set_cr_cnf(uint32_t reg, uint_t p, int_t v)
+{
+	if (p < 8) {
+		sil_andw((void*)GPIO_CRL(reg), ~CR_CNF_MASK(p));
+		sil_orw((void*)GPIO_CRL(reg), CR_CNF(p, v));
+	} else if (8 <= p && p < 16) {
+		sil_andw((void*)GPIO_CRH(reg), ~CR_CNF_MASK(p - 8));
+		sil_orw((void*)GPIO_CRH(reg), CR_CNF(p - 8, v));
+	}
+}
+
+#pragma inline
+void set_port_pull(uint32_t reg, uint_t p, bool_t up)
+{
+	if (up) {
+		sil_wrw_mem((void*)GPIO_BSRR(reg), 0x01 << p);
+	} else {
+		sil_wrw_mem((void*)GPIO_BRR(reg), 0x01 << p);
+	}
+}
+
+/*
+ * ^[QbgË¶@ú»
+ */
+void target_initialize(void)
+{
+	/*
+	 *  vZbTNbN(RCC)Ìú»
+	 */
+	/* HSEÌLø» */
+	sil_orw((void*)RCC_CR, CR_HSE_ON);
+
+	/* HSELøÒ¿ */
+	while ((sil_rew_mem((void*)RCC_CR) & CR_HSE_RDY) == 0) ;
+
+	/* FLASH ROMÍ2waitÒ¿ */
+	sil_andw((void*)FLASH_ACR, ~ACR_LATENCY_MASK);
+	sil_orw((void*)FLASH_ACR, ACR_LATENCY_TWO);
+
+	/* HCLK = SYSCLK, PCLK2 = HCLK, PCLK1 = HCLK/2  */
+	sil_orw((void*)RCC_CFGR, 0x00 | (0x01 << 17) | (0x00 << 11) | (0x04 << 8));
+
+	/* PLLCLK = 4MHz x 6 = 24, HSE as PLL clock */
+	sil_orw((void*)RCC_CFGR, 0x04 << 18);
+	sil_orw((void*)RCC_CFGR, CFGR_PLL_SRC);
+
+	/* PLLÌLø» */
+	sil_orw((void*)RCC_CR, CR_PLL_ON);
+
+	/* PLLLøÒ¿ */
+	while ((sil_rew_mem((void*)RCC_CR) & CR_PLL_RDY) == 0) ;
+
+	/* PLLðVXeNbNÉIð */
+	sil_orw((void*)RCC_CFGR, CFGR_SW_PLL);
+
+	/* PLLÌVXeNbNIðÒ¿ */
+	while ((sil_rew_mem((void*)RCC_CFGR) & CFGR_SWS_MASK) != (CFGR_SW_PLL << 2)) ;
+
+
+	/*
+	 *  vZbTË¶Ìú»
+	 */
+	core_initialize();
+
+	/*
+	 *  ytFÌLø»
+	 */
+	sil_orw((void*)RCC_APB2ENR, APB2ENR_USART1_EN | APB2ENR_IOPA_EN |
+			APB2ENR_IOPC_EN | APB2ENR_AFIO_EN);
+	/*
+	 *  I/O|[gÌú»
+	 */
+	/* USART1(RX)  vAbv */
+	set_cr_mode(GPIOA_BASE, 10, MODE_INPUT);
+	set_cr_cnf(GPIOA_BASE, 10, CNF_IN_FLOATING);
+
+	/* USART1(TX) */
+	set_cr_mode(GPIOA_BASE, 9, MODE_OUTPUT_50MHZ);
+	set_cr_cnf(GPIOA_BASE, 9, CNF_OUT_AF_PP);
+
+	/* LED|[g */
+	set_cr_mode(GPIOC_BASE, 9, MODE_OUTPUT_50MHZ);
+	set_cr_cnf(GPIOC_BASE, 9, CNF_OUT_GP_PP);
+
+	/*
+	 *  o[i[oÍpÌVAú»
+	 */
+	target_usart_init(SIO_PORTID);
+}
+
+/*
+ * ^[QbgË¶@I¹
+ */
+void target_exit(void)
+{
+	/* vZbTË¶ÌI¹ */
+	core_terminate();
+}
+
+/*
+ * VXeOÌáxoÍÌ½ßÌ¶oÍ
+ */
+void target_fput_log(char_t c)
+{
+	if (c == '\n') {
+		sio_pol_snd_chr('\r', SIO_PORTID);
+	}
+	sio_pol_snd_chr(c, SIO_PORTID);
+}
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_config.h
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_config.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_config.h	(revision 61)
@@ -0,0 +1,125 @@
+/*
+ *  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-2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+#ifndef TOPPERS_TARGET_CONFIG_H
+#define TOPPERS_TARGET_CONFIG_H
+
+/*
+ * ^[QbgË¶W
+[iSTM32 DISCOVERYpj
+ *
+ * J[lÌ^[QbgË¶ÌCN[ht@CDkernel_impl.hÌ^[
+ * QbgË¶ÌÊut¯ÆÈ·D
+ */
+
+/*
+ * ^[QbgVXeÌn[hEFA¹Ìè`
+ */
+#include "stm32_discovery.h"
+
+/*
+ *  g[XOÉÖ·éÝè
+ */
+#ifdef TOPPERS_ENABLE_TRACE
+#include "logtrace/trace_config.h"
+#endif /* TOPPERS_ENABLE_TRACE */
+
+/*
+ *  ftHgÌñ^XNReLXgpÌX^bNÌæÌè`
+ *  8bytePÊÅæ¾³êéD 
+ */
+#define DEFAULT_ISTKSZ			(0x200/8U)		/* 0.5KByte */
+#define DEFAULT_ISTK			_target_istk
+
+/*
+ *  ÷­ÔÒ¿Ì½ßÌè`i{ÍSILÌ^[QbgË¶j
+ */
+#define SIL_DLY_TIM1    162
+#define SIL_DLY_TIM2    100
+
+/*
+ *  gp·éVA|[gID
+ */
+#define SIO_PORTID		(1)
+
+/*
+ * CQ-STARMpÌIDLEÌè`
+ *
+ * TXyhÉOpenOCDfobOc[ªg¦È­ÈéâèÌÎ
+ * WFIÅTXyhµÄ¢évOÉÎµÄCtbV
+ROM
+ * «ÝàoÈ­Èé½ßCIDELÏXD
+ */
+#define TOPPERS_CUSTOM_IDEL
+#define toppers_asm_custom_idle		\
+	msr		basepri, r0;			\
+	msr		basepri, r1;
+
+
+#ifndef TOPPERS_MACRO_ONLY
+
+extern STK_T _target_istk[];
+
+/*
+ *  ^[QbgVXeË¶Ìú»
+ */
+extern void	target_initialize(void);
+
+/*
+ *  ^[QbgVXeÌI¹
+ *
+ *  VXeðI¹·éÉg¤D
+ */
+extern NoReturn void	target_exit(void);
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  `bvË¶W
+[iARM-Mpj
+ */
+#include "arm_m_iccarm/prc_config.h"
+
+#endif /* TOPPERS_TARGET_CONFIG_H */
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_kernel.h
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_kernel.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_kernel.h	(revision 61)
@@ -0,0 +1,74 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *  kernel.hÌ^[QbgË¶iSTM32 DISCOVERYpj
+ *
+ *  ±ÌCN[ht@CÍCkernel.hÅCN[h³êéD¼Ìt@
+ *  C©ç¼ÚCN[h·é±ÆÍÈ¢D±Ìt@CðCN[h
+ *  ·éOÉCt_stddef.hªCN[h³êéÌÅC»êçÉË¶µÄàæ
+ *  ¢D
+ */
+
+#ifndef TOPPERS_TARGET_KERNEL_H
+#define TOPPERS_TARGET_KERNEL_H
+
+#define TMIN_INTPRI		(-15)		/* ÝDæxÌÅ¬liÅlj*/
+
+/*
+ *  T|[g·é@\Ìè`
+ */
+#define TOPPERS_SUPPORT_GET_UTM		/* get_utmðT|[g·é */
+
+/*
+ *  ^CeBbNÌè`
+ */
+#define TIC_NUME			1U		/* ^CeBbNÌüúÌªq */
+#define TIC_DENO			1U		/* ^CeBbNÌüúÌªê */
+
+/*
+ *  vZbTÅ¤ÊÈè`
+ */
+#include "arm_m_iccarm/prc_kernel.h"
+
+#endif /* TOPPERS_TARGET_KERNEL_H */
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_offset.tf
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_offset.tf	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_offset.tf	(revision 61)
@@ -0,0 +1,13 @@
+$
+$       ItZbgt@C¶¬pev[gt@CiSTM32 DISCOVERYpj
+$
+
+$
+$  Wev[gt@CÌCN[h
+$
+$INCLUDE "kernel/genoffset.tf"$
+
+$ 
+$  RAË¶ev[gÌCN[hiARM-Mpj
+$ 
+$INCLUDE"../../arch/arm_m_iccarm/prc_offset.tf"$
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_rename.def
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_rename.def	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_rename.def	(revision 61)
@@ -0,0 +1,1 @@
+INCLUDE	"arm_m_iccarm/prc"
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_rename.h
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_rename.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_rename.h	(revision 61)
@@ -0,0 +1,14 @@
+/* This file is generated from target_rename.def by genrename. */
+
+#ifndef TOPPERS_TARGET_RENAME_H
+#define TOPPERS_TARGET_RENAME_H
+
+
+#ifdef TOPPERS_LABEL_ASM
+
+
+#endif /* TOPPERS_LABEL_ASM */
+
+#include "arm_m_iccarm/prc_rename.h"
+
+#endif /* TOPPERS_TARGET_RENAME_H */
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_rom.icf
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_rom.icf	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_rom.icf	(revision 61)
@@ -0,0 +1,29 @@
+/*###ICF### Section handled by ICF editor, don't touch! ****/
+/*-Editor annotation file-*/
+/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */
+/*-Specials-*/
+define symbol __ICFEDIT_intvec_start__ = 0x08000000;
+/*-Memory Regions-*/
+define symbol __ICFEDIT_region_ROM_start__ = 0x08000000;
+define symbol __ICFEDIT_region_ROM_end__   = 0x0801FFFF;
+define symbol __ICFEDIT_region_RAM_start__ = 0x20000000;
+define symbol __ICFEDIT_region_RAM_end__   = 0x20001FFF;
+/*-Sizes-*/
+define symbol __ICFEDIT_size_cstack__ = 0x10;
+define symbol __ICFEDIT_size_heap__   = 0x00;
+/**** End of ICF editor section. ###ICF###*/
+
+define memory mem with size = 4G;
+define region ROM_region   = mem:[from __ICFEDIT_region_ROM_start__   to __ICFEDIT_region_ROM_end__];
+define region RAM_region   = mem:[from __ICFEDIT_region_RAM_start__   to __ICFEDIT_region_RAM_end__];
+
+define block CSTACK    with alignment = 8, size = __ICFEDIT_size_cstack__   { };
+define block HEAP      with alignment = 8, size = __ICFEDIT_size_heap__     { };
+
+initialize by copy { readwrite };
+do not initialize  { section .noinit };
+
+place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
+
+place in ROM_region   { readonly };
+place in RAM_region   { readwrite, block CSTACK, block HEAP };
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_serial.c
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_serial.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_serial.c	(revision 61)
@@ -0,0 +1,292 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ * VAhCoiSTM32 DISCOVERYpj
+ */
+
+#include <kernel.h>
+#include <sil.h>
+#include "target_serial.h"
+#include "target_syssvc.h"
+
+/*
+ * WX^Ýèl
+ */
+#define PORT2SIOPID(x)	((x) + 1)
+#define INDEX_PORT(x)	((x) - 1)
+#define GET_SIOPCB(x)	(&siopcb_table[INDEX_PORT(x)])
+
+/*
+ * USARTWX^è`
+ */
+#define USART_SR(x)		(x)
+#define USART_DR(x)		(x + 0x04)
+#define USART_BRR(x)	(x + 0x08)
+#define USART_CR1(x)	(x + 0x0C)
+#define USART_CR2(x)	(x + 0x10)
+#define USART_CR3(x)	(x + 0x14)
+#define USART_GTPR(x)	(x + 0x18)
+
+#define SR_TXE			(0x0080)
+#define SR_RXNE			(0x0020)
+#define SR_ORE			(0x0008)
+#define SR_FE			(0x0002)
+#define SR_PE			(0x0001)
+#define CR1_UE			(0x2000)
+#define CR1_TXEIE		(0x0080)
+#define CR1_RXNEIE		(0x0020)
+#define CR1_TE			(0x0008)
+#define CR1_RE			(0x0004)
+#define CR3_EIE			(0x0001)
+
+/*
+ * VAI/O|[gÇubNGA
+ */
+SIOPCB siopcb_table[TNUM_PORT];
+
+static const uint32_t sioreg_table[TNUM_PORT] = {
+	USART1_BASE,
+};
+
+#pragma inline
+bool_t  sio_putready(SIOPCB* siopcb)
+{
+	return (sil_rew_mem((void*)USART_SR(siopcb->reg)) & SR_TXE) != 0;
+}
+
+#pragma inline
+bool_t sio_getready(SIOPCB* siopcb)
+{
+	return (sil_rew_mem((void*)USART_SR(siopcb->reg)) & SR_RXNE) != 0;
+}
+
+/*
+ *  ^[QbgÌVAú»
+ */
+void target_usart_init(ID siopid)
+{
+	uint32_t tmp, usartdiv, fraction;
+	uint32_t reg = sioreg_table[INDEX_PORT(siopid)];
+	uint32_t src_clock;
+
+	/* USARTÌ³ø» */
+	sil_andw((void*)USART_CR1(reg), ~CR1_UE);
+
+	/* 1STOP BIT */
+	sil_wrw_mem((void*)USART_CR2(reg), 0);
+
+	/* 1START BIT, 8DATA bits, ParityÈµ */
+	sil_wrw_mem((void*)USART_CR1(reg), 0);
+
+	/* CR3ú» */
+	sil_wrw_mem((void*)USART_CR3(reg), 0);
+
+	/* ÊM¬xÝè */
+	if (siopid == 1) {
+		/* fck=72MHz */
+		src_clock = PCLK2_CLOCK;
+	} else {
+		/* fck=36MHz */
+		src_clock = PCLK1_CLOCK;
+	}
+	tmp = (1000 * (src_clock / 100)) / ((BPS_SETTING / 100) * 16);
+	usartdiv = (tmp / 1000) << 4;
+	fraction = tmp - ((usartdiv >> 4) * 1000);
+	fraction = ((16 * fraction) + 500) / 1000;
+	usartdiv |= (fraction & 0x0F);
+	sil_wrw_mem((void*)USART_BRR(reg), usartdiv);
+
+	/* óMÌLø»AG[ÝÌLø» */
+	sil_orw((void*)USART_CR1(reg), CR1_RE | CR1_TE);
+	sil_orw((void*)USART_CR3(reg), CR3_EIE);
+
+	/* USARTÌLø» */
+	sil_orw((void*)USART_CR1(reg), CR1_UE);
+}
+
+/*
+ *  ^[QbgÌVAI¹
+ */
+void target_usart_term(ID siopid)
+{
+	uint32_t reg = sioreg_table[INDEX_PORT(siopid)];
+
+	/* USARTÌ³ø» */
+	sil_andw((void*)USART_CR1(reg),  ~CR1_UE);
+}
+
+/*
+ *  SIOú»
+ */
+void sio_initialize(intptr_t exinf)
+{
+	int i;
+
+	for (i = 0; i < TNUM_PORT; i++) {
+		siopcb_table[i].port = i;
+		siopcb_table[i].reg = sioreg_table[i];
+		siopcb_table[i].exinf = 0;
+	}
+}
+
+/*
+ *  VAI[v
+ */
+SIOPCB *sio_opn_por(ID siopid, intptr_t exinf)
+{
+	SIOPCB* siopcb;
+
+	if (siopid > TNUM_PORT) {
+		return NULL;
+	}
+
+	siopcb = GET_SIOPCB(siopid);
+	siopcb->exinf = exinf;
+
+	target_usart_init(siopid);
+
+	return siopcb;
+}
+
+/*
+ *  VAN[Y
+ */
+void sio_cls_por(SIOPCB *p_siopcb)
+{
+	target_usart_term(PORT2SIOPID(p_siopcb->port));
+}
+
+/*
+ *  Ýnh
+ */
+void sio_isr(intptr_t exinf)
+{
+	SIOPCB* siopcb = GET_SIOPCB(exinf);
+
+	if (sio_putready(siopcb)) {
+		sio_irdy_snd(siopcb->exinf);
+	}
+	if (sio_getready(siopcb)) {
+		sio_irdy_rcv(siopcb->exinf);
+	}
+}
+
+/*
+ *  1¶M
+ */
+bool_t sio_snd_chr(SIOPCB *siopcb, char_t c)
+{
+	bool_t stat;
+
+	if (sio_putready(siopcb)) {
+		sil_wrw_mem((void*)USART_DR(siopcb->reg), c);
+		stat = true;
+	}
+	else
+	{
+		stat = false;
+	}
+
+	return stat;
+}
+
+/*
+ *  1¶óM
+ */
+int_t sio_rcv_chr(SIOPCB *siopcb)
+{
+	int_t c = -1;
+
+	if (sio_getready(siopcb)) {
+		c = sil_rew_mem((void*)USART_DR(siopcb->reg)) & 0xFF;
+	}
+
+	return c;
+}
+
+/*
+ *  R[obNÌÂ
+ */
+void sio_ena_cbr(SIOPCB *siopcb, uint_t cbrtn)
+{
+	switch (cbrtn) {
+	case SIO_RDY_SND:
+		sil_orw((void*)USART_CR1(siopcb->reg), CR1_TXEIE);
+		break;
+	case SIO_RDY_RCV:
+		sil_orw((void*)USART_CR1(siopcb->reg), CR1_RXNEIE);
+		break;
+	default:
+		break;
+	}
+}
+
+/* 
+ *  R[obNÌÖ~
+ */
+void sio_dis_cbr(SIOPCB *siopcb, uint_t cbrtn)
+{
+	switch (cbrtn) {
+	case SIO_RDY_SND:
+		sil_andw((void*)USART_CR1(siopcb->reg), ~CR1_TXEIE);
+		break;
+	case SIO_RDY_RCV:
+		sil_andw((void*)USART_CR1(siopcb->reg), ~CR1_RXNEIE);
+		break;
+	default:
+		break;
+	}
+}
+
+/*
+ *  1¶oÍi|[OÅÌoÍj
+ */
+void sio_pol_snd_chr(char_t c, ID siopid)
+{
+	uint32_t reg = sioreg_table[INDEX_PORT(siopid)];
+
+	sil_wrw_mem((void*)USART_DR(reg), c);
+
+	while ((sil_rew_mem((void*)USART_SR(reg)) & SR_TXE) == 0) ;
+}
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_serial.cfg
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_serial.cfg	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_serial.cfg	(revision 61)
@@ -0,0 +1,8 @@
+/*
+ *  SIOhCoiSTM32 DISCOVERYpjÌRtBO[Vt@C
+ */
+
+#include "target_serial.h"
+ATT_INI({ TA_NULL, 0, sio_initialize });
+ATT_ISR({ TA_NULL, SIO_PORTID, INTNO_SIO, sio_isr, 1 });
+CFG_INT(INTNO_SIO, { TA_ENAINT|INTATR_SIO, INTPRI_SIO });
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_serial.h
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_serial.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_serial.h	(revision 61)
@@ -0,0 +1,140 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *  VAI/OfoCXiSIOjhCoiSTM32 DISCOVERYpj
+ */
+
+#ifndef TOPPERS_TARGET_SERIAL_H
+#define TOPPERS_TARGET_SERIAL_H
+
+#include "stm32_discovery.h"
+
+/*
+ *  SIOÌÝxN^Ô
+ */
+#define INHNO_SIO		IRQ_VECTOR_USART1
+#define INTNO_SIO		IRQ_VECTOR_USART1
+
+#define INTPRI_SIO		-3				/* ÝDæx */
+#define INTATR_SIO		0				/* Ý®« */
+
+/*
+ *  R[obN[`Ì¯ÊÔ
+ */
+#define SIO_RDY_SND    1U        /* MÂ\R[obN */
+#define SIO_RDY_RCV    2U        /* óMÊmR[obN */
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  VA|[gÌÇubN
+ */
+typedef struct sio_port_control_block {
+	ID port;
+	uint32_t reg;
+	intptr_t exinf;
+} SIOPCB;
+
+/*
+ *  SIOú»
+ */
+extern void sio_initialize(intptr_t exinf);
+
+/*
+ *  VAI[v
+ */
+extern SIOPCB *sio_opn_por(ID siopid, intptr_t exinf);
+
+/*
+ *  VAN[Y
+ */
+extern void sio_cls_por(SIOPCB *p_siopcb);
+
+/*
+ *  Ýnh
+ */
+extern void sio_isr(intptr_t exinf);
+
+/*
+ *  1¶M
+ */
+extern bool_t sio_snd_chr(SIOPCB *siopcb, char_t c);
+
+/*
+ *  1¶óM
+ */
+extern int_t sio_rcv_chr(SIOPCB *siopcb);
+
+/*
+ *  R[obNÌÂ
+ */
+extern void sio_ena_cbr(SIOPCB *siopcb, uint_t cbrtn);
+
+/* 
+ *  R[obNÌÖ~
+ */
+extern void sio_dis_cbr(SIOPCB *siopcb, uint_t cbrtn);
+
+/*
+ *  MÂ\R[obN
+ */
+extern void sio_irdy_snd(intptr_t exinf);
+
+/*
+ *  óMÊmR[obN
+ */
+extern void sio_irdy_rcv(intptr_t exinf);
+
+/*
+ *  1¶Mi|[OÅÌoÍj
+ */
+extern void sio_pol_snd_chr(char_t c, ID siopid);
+
+/*
+ *  ^[QbgÌVAú»
+ */
+extern void target_usart_init(ID siopid);
+
+#endif /* TOPPERS_MACRO_ONLY */
+#endif /* TOPPERS_TARGET_SERIAL_H */
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_sil.h
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_sil.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_sil.h	(revision 61)
@@ -0,0 +1,77 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *  sil.hÌ^[QbgË¶iARM-Mpj
+ *
+ *  ±ÌCN[ht@CÍCsil.hÌæªÅCN[h³êéD¼Ìt@
+ *  C©çÍ¼ÚCN[h·é±ÆÍÈ¢D±Ìt@CðCN[
+ *  h·éOÉCt_stddef.hªCN[h³êéÌÅC»êçÉË¶µÄà
+ *  æ¢D
+ */
+
+#ifndef TOPPERS_TARGET_SIL_H
+#define TOPPERS_TARGET_SIL_H
+
+/*
+ *  vZbTÌCfBAè`
+ *    STM32F10XÍgGfBA
+ */
+#define SIL_ENDIAN_LITTLE
+
+/*
+ *  vZbTÅ¤ÊÈè` 
+ */
+#include "arm_m_iccarm/prc_sil.h"
+
+/*
+ *  STM32F10XpêÊ¤ÊWX^ìÖ
+ */
+#define sil_orb( mem, val )		sil_wrb_mem( mem, sil_reb_mem( mem ) | val )
+#define sil_andb( mem, val )	sil_wrb_mem( mem, sil_reb_mem( mem ) & val )
+#define sil_orh( mem, val )		sil_wrh_mem( mem, sil_reh_mem( mem ) | val )
+#define sil_andh( mem, val )	sil_wrh_mem( mem, sil_reh_mem( mem ) & val )
+#define sil_orw( mem, val )		sil_wrw_mem( mem, sil_rew_mem( mem ) | val )
+#define sil_andw( mem, val )	sil_wrw_mem( mem, sil_rew_mem( mem ) & val )
+
+
+#endif /* TOPPERS_TARGET_SIL_H */
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_stddef.h
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_stddef.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_stddef.h	(revision 61)
@@ -0,0 +1,86 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *  t_stddef.hÌ^[QbgË¶iARM-Mpj
+ *
+ *  ±ÌCN[ht@CÍCt_stddef.hÌæªÅCN[h³êéD
+ *  ¼Ìt@C©çÍ¼ÚCN[h·é±ÆÍÈ¢D¼ÌCN[h
+ *  t@CÉæ§ÁÄ³êé½ßC¼ÌCN[ht@CÉË¶µ
+ *  ÄÍÈçÈ¢D
+ */
+
+#ifndef TOPPERS_TARGET_STDDEF_H
+#define TOPPERS_TARGET_STDDEF_H
+
+/*
+ *  ^[Qbgð¯Ê·é½ßÌ}NÌè`
+ */
+#define TOPPERS_CQSTARM			/* VXeªÌ */
+
+
+/*
+ *  J­Â«Å¤ÊÈè`
+ */
+#define TOPPERS_STDINT_TYPE1
+#define TOPPERS_STDFLOAT_TYPE1
+#include "iccarm/tool_stddef.h"
+
+/*
+ *  vZbTÅ¤ÊÈè`
+ */
+#include "arm_m_iccarm/prc_stddef.h"
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  AT[VÌ¸sÌÀsfiT.B.Dj
+ */
+#pragma inline
+void
+TOPPERS_assert_abort(void)
+{
+    while(1);
+}
+
+#endif /* TOPPERS_MACRO_ONLY */
+#endif /* TOPPERS_TARGET_STDDEF_H */
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_support.S
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_support.S	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_support.S	(revision 61)
@@ -0,0 +1,74 @@
+/*
+ *  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) 2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ * ^[QbgË¶@AZu¾êiSTM32 DISCOVERYj
+ */
+
+	NAME    target_support
+
+#define TOPPERS_MACRO_ONLY
+#define UINT_C(val)			(val)
+#define ULONG_C(val)		(val)
+#include "kernel_impl.h"
+#include "stm32_discovery.h"
+
+
+/*
+ * áxÌ^[QbgË¶Ìú»
+ *
+ * ú»ÌOÉÄÑo³êé
+ */
+
+	PUBLIC  hardware_init_hook
+
+	SECTION .text : CODE (2)
+	THUMB
+
+hardware_init_hook:
+	bx r14
+
+  END
+  
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_syssvc.h
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_syssvc.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_syssvc.h	(revision 61)
@@ -0,0 +1,106 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *  VXeT[rXÌ^[QbgË¶iSTM32 DISCOVERYpj
+ *
+ *  VXeT[rXÌ^[QbgË¶ÌCN[ht@CD±Ìt@
+ *  CÌàeÍCR|[lgLqt@CÉLq³êC±Ìt@CÍ
+ *  ³­Èé©ÝD
+ */
+
+#ifndef TOPPERS_TARGET_SYSSVC_H
+#define TOPPERS_TARGET_SYSSVC_H
+
+/*
+ *  ^[QbgVXeÌn[hEFA¹Ìè`
+ */
+#include "stm32_discovery.h"
+
+/*
+ *  g[XOÉÖ·éÝè
+ */
+#ifdef TOPPERS_TRACE_ENABLE
+#include "logtrace/trace_config.h"
+#endif /* TOPPERS_TRACE_ENABLE */
+
+/*
+ *  N®bZ[WÌ^[QbgVXe¼
+ */
+#define TARGET_NAME    "STM32-DISCOVERY(STM32F100B)"
+
+/*
+ *  N®bZ[WÉ^[QbgË¶Ìì \¦ð
+ *  ÇÁ·é½ßÌ}ND
+ */
+#ifdef PRC_COPYRIGHT
+#define TARGET_COPYRIGHT	PRC_COPYRIGHT
+#endif /* PRC_COPYRIGHT */
+
+/*
+ *  VXeOÌáxoÍÌ½ßÌ¶oÍ
+ *
+ *  ^[QbgË¶Ìû@ÅC¶cð\¦/oÍ/Û¶·éD
+ */
+extern void	target_fput_log(char_t c);
+
+/*
+ *  VA|[gÌè`
+ */
+#define TNUM_PORT        (1)		/* T|[g·éVA|[gÌ */
+#define TNUM_SIOP        (1)
+
+#define LOGTASK_PORTID   SIO_PORTID
+
+/*
+ *  {[[g
+ */
+#define BPS_SETTING		(115200)
+
+/*
+ *  VXeO^XNÖAÌèÌè`
+ *
+ *  ftHglÌÊèD
+ */
+
+#endif /* TOPPERS_TARGET_SYSSVC_H */
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_test.h
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_test.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_test.h	(revision 61)
@@ -0,0 +1,59 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *		eXgvOÌ^[QbgË¶è`iSTM32 DISCOVERYpj
+ */
+
+#ifndef TOPPERS_TARGET_TEST_H
+#define TOPPERS_TARGET_TEST_H
+
+#define STACK_SIZE			(1024)
+
+/*
+ *  vZbTË¶W
+[(ARM-Mp)
+ */
+#include "arm_m_iccarm/prc_test.h"
+
+#endif /* TOPPERS_TARGET_TEST_H */
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_timer.cfg
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_timer.cfg	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_timer.cfg	(revision 61)
@@ -0,0 +1,3 @@
+#include "target_timer.h"
+
+INCLUDE("arm_m_iccarm/prc_timer.cfg");
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_timer.h
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_timer.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_timer.h	(revision 61)
@@ -0,0 +1,67 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *  ^C}hCoiSTM32 DISCOVERYpj
+ */
+
+#ifndef TOPPERS_TARGET_TIMER_H
+#define TOPPERS_TARGET_TIMER_H
+
+/*
+ *  ^C}lÌà\»ÆÐØbPÊÆÌÏ·
+ */
+#define TIMER_CLOCK		(SYS_CLOCK / 1000)
+
+/*
+ *  ^C}Ýnho^Ì½ßÌè
+ */
+#define INTPRI_TIMER    (-6)          /* ÝDæx */
+#define INTATR_TIMER    0U            /* Ý®« */
+
+/*
+ *  vZbTË¶Åè`·é
+ */
+#include "arm_m_iccarm/prc_timer.h"
+
+#endif /* TOPPERS_TARGET_TIMER_H */
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_unrename.h
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_unrename.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_unrename.h	(revision 61)
@@ -0,0 +1,16 @@
+/* This file is generated from target_rename.def by genrename. */
+
+/* This file is included only when target_rename.h has been included. */
+#ifdef TOPPERS_TARGET_RENAME_H
+#undef TOPPERS_TARGET_RENAME_H
+
+
+#ifdef TOPPERS_LABEL_ASM
+
+
+#endif /* TOPPERS_LABEL_ASM */
+
+#include "arm_m_iccarm/prc_unrename.h"
+
+#endif /* TOPPERS_TARGET_RENAME_H */
+
Index: /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_user.txt
===================================================================
--- /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_user.txt	(revision 61)
+++ /asp_ewarm/asp-1.7.0/target/stm32_discovery_EWARM2/target_user.txt	(revision 61)
@@ -0,0 +1,95 @@
+=====================================================================
+                         FS K70^[QbgË¶ (asp-1.7.0Îj
+                                  Last Modified: '13/01/30
+=====================================================================
+
+Tv
+
+STM32 DISCOVERY^[QbgË¶ÍCvZbTÉSTM32F10x(Cortex-M3)ð
+Úµ½CSTM32 DISCOVERY ðT|[gµÄ¢éD
+
+
+J[lÌgp\[X
+
+J[lÍÈºÌ\[Xðgp·éD
+
+  EROM
+     R[hðzu·éD
+     gpÊÍgp·éAPIÌÉË¶·éD
+
+  ERAM
+     f[^ðzu·éD
+  	 gpÊÍIuWFNgÉË¶·éD
+  
+  ESysTick
+     J[làÌeBbNÌ¶¬Ép¢éD
+     
+  EUSART`l1
+     R\[ÌoÍÉgpD
+
+
+¼Ì^[QbgÖÌÚA
+
+STM32 DISCOVERY^[QbgË¶Ågp·éVAÍCSTM32F10xnÌà @\Ì
+Ýðgp·é½ßCSTM32F10xÌCotex-M4ðp¢½Â«ÉÍeÕÉ|[eB
+OªÂ\Å éD|[eBOÉÖµÄÍCÈºÌú»[`É^[Q
+bgÌú»ðÇÁ·êÎæ¢D
+
+  Etarget_initialize() : target_config.c
+    ^[QbgË¶Ìú»iC¾êj
+  E_hardware_init_hook : target_support.S
+    áxÌ^[QbgË¶Ìú»
+    X^[gAbvW
+[ÌÅCÌú»ÌOÉÄÑo³êé
+
+
+fobOÂ«
+
+fobOÂ«ÆµÄÍCJ­Â« EWARM v6.5 ðgpµÄ¢éD
+
+RpC
+
+J­Â« EWARM v6.5 Ét®ÌRpCÅ®ìmFðsÁ½D
+
+
+ÝDæx
+
+ÝDæxÆµÄwèÂ\ÈÍÍÍC-15 ` -1 Å éD
+
+R\[oÍ
+
+R\[oÍÉÍCUARTÌ`l1ðp¢éDSTM32 DISCOVERYãÅÍUARTÌ
+`l1ÍCPAÉÚ±³êÄ¢éDÊMtH[}bgÍÈºÌÊèÅ éD
+
+  E1152200bps, Data 8bit, Parity none, Stop 1bit, Flow control none
+
+AhX}bsO
+
+@0x0800,0000 - 0x0802,0000 à FlashROM 128KB
+@@@@@@@@@@@@@@@EvectorZNV
+@@@@@@@@@@@@@@@EtextZNV
+@@@@@@@@@@@@@@@ErodataZNV
+@0x2000,0000 - 0x2000,1000 à RAM 8KB
+@@@@@@@@@@@@@@@EdataZNV
+@@@@@@@@@@@@@@@EbssZNV
+
+eíÝèÌÏX
+
+ôÂ©Ìp[^ÍÏXÂ\ÉÈÁÄ¢éDÝèt@CÉÝèÂ\Ú
+ÍÌæ¤ÉÈÁÄ¢éD
+
+target_config.h ÌÝèÚ
+
+EDEFAULT_ISTKSZ
+  fBtHgÌñ^XNReLXgpÌX^bNTCY
+
+ESIL_DLY_TIM1/2
+  ÷­ÔÒ¿Ì½ßÌè`
+
+target_syssvc.h ÌÝèÚ
+
+EBPS_SETTING
+  R\[Égp·é|[giSCIFÌ|[g1jÌ{[[g
+
+
+ÏXð
Index: /asp_ewarm/asp-1.7.0/test/MANIFEST
===================================================================
--- /asp_ewarm/asp-1.7.0/test/MANIFEST	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/MANIFEST	(revision 61)
@@ -0,0 +1,59 @@
+PACKAGE asp
+
+MANIFEST
+bit_kernel.c
+perf0.c
+perf0.cfg
+perf0.h
+perf1.c
+perf1.cfg
+perf1.h
+perf2.c
+perf2.cfg
+perf2.h
+perf3.c
+perf3.cfg
+perf3.h
+perf4.c
+perf4.cfg
+perf4.h
+test_cpuexc.cfg
+test_cpuexc.h
+test_cpuexc.txt
+test_cpuexc1.c
+test_cpuexc2.c
+test_cpuexc3.c
+test_cpuexc4.c
+test_cpuexc5.c
+test_cpuexc6.c
+test_cpuexc7.c
+test_cpuexc8.c
+test_cpuexc9.c
+test_cpuexc10.c
+test_cpuexc11.c
+test_cpuexc12.c
+test_cpuexc13.c
+test_dlynse.c
+test_dlynse.cfg
+test_dlynse.h
+test_sem1.c
+test_sem1.cfg
+test_sem1.h
+test_sem2.c
+test_sem2.cfg
+test_sem2.h
+test_sysstat1.c
+test_sysstat1.cfg
+test_sysstat1.h
+test_task1.c
+test_task1.cfg
+test_task1.h
+test_tex1.c
+test_tex1.cfg
+test_tex1.h
+test_tex2.c
+test_tex2.cfg
+test_tex2.h
+test_utm1.c
+test_utm1.cfg
+test_utm1.h
Index: /asp_ewarm/asp-1.7.0/test/bit_kernel.c
===================================================================
--- /asp_ewarm/asp-1.7.0/test/bit_kernel.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/bit_kernel.c	(revision 61)
@@ -0,0 +1,474 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2005-2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: bit_kernel.c 1234 2008-08-09 14:24:38Z ertl-hiro $
+ */
+
+/*
+ *		J[lÌ®«¸
+ */
+
+#include "kernel/kernel_impl.h"
+#include "kernel/task.h"
+#include "kernel/wait.h"
+#include "kernel/semaphore.h"
+#include "kernel/eventflag.h"
+#include "kernel/dataqueue.h"
+#include "kernel/pridataq.h"
+#include "kernel/mailbox.h"
+#include "kernel/mempfix.h"
+#include "kernel/time_event.h"
+
+/*
+ *   G[R[hÌè`
+ */
+#define E_SYS_LINENO	ERCD(E_SYS, -(__LINE__))
+
+/*
+ *  ÇubNÌAhXÌ³«Ì`FbN
+ */
+#define VALID_TCB(p_tcb) \
+		((((char *) p_tcb) - ((char *) tcb_table)) % sizeof(TCB) == 0 \
+			&& TMIN_TSKID <= TSKID(p_tcb) && TSKID(p_tcb) <= tmax_tskid)
+
+#define VALID_SEMCB(p_semcb) \
+		((((char *) p_semcb) - ((char *) semcb_table)) % sizeof(SEMCB) == 0 \
+			&& TMIN_SEMID <= SEMID(p_semcb) && SEMID(p_semcb) <= tmax_semid)
+				
+#define VALID_FLGCB(p_flgcb) \
+		((((char *) p_flgcb) - ((char *) flgcb_table)) % sizeof(FLGCB) == 0 \
+			&& TMIN_FLGID <= FLGID(p_flgcb) && FLGID(p_flgcb) <= tmax_flgid)
+
+#define VALID_DTQCB(p_dtqcb) \
+		((((char *) p_dtqcb) - ((char *) dtqcb_table)) % sizeof(DTQCB) == 0 \
+			&& TMIN_DTQID <= DTQID(p_dtqcb) && DTQID(p_dtqcb) <= tmax_dtqid)
+
+#define VALID_PDQCB(p_pdqcb) \
+		((((char *) p_pdqcb) - ((char *) pdqcb_table)) % sizeof(PDQCB) == 0 \
+			&& TMIN_PDQID <= PDQID(p_pdqcb) && PDQID(p_pdqcb) <= tmax_pdqid)
+
+#define VALID_MBXCB(p_mbxcb) \
+		((((char *) p_mbxcb) - ((char *) mbxcb_table)) % sizeof(MBXCB) == 0 \
+			&& TMIN_MBXID <= MBXID(p_mbxcb) && MBXID(p_mbxcb) <= tmax_mbxid)
+
+#define VALID_MPFCB(p_mpfcb) \
+		((((char *) p_mpfcb) - ((char *) mpfcb_table)) % sizeof(MPFCB) == 0 \
+			&& TMIN_MPFID <= MPFID(p_mpfcb) && MPFID(p_mpfcb) <= tmax_mpfid)
+
+/*
+ *  L
+[Ì`FbNÌ½ßÌÖ
+ *
+ *  p_queueÉp_entryªÜÜêÄ¢é©ð²×éDÜÜêÄ¢êÎtrueCÜÜ
+ *  êÄ¢È¢êÉÍfalseðÔ·D_uNÌs®ÌêÉàC
+ *  falseðÔ·D
+ */
+static bool_t
+in_queue(QUEUE *p_queue, QUEUE *p_entry)
+{
+	QUEUE	*p_current, *p_next;
+
+	p_current = p_queue->p_next;
+	if (p_current->p_prev != p_queue) {
+		return(false);					/* _uNÌs® */
+	}
+	while (p_current != p_queue) {
+		if (p_current == p_entry) {
+			return(true);				/* p_entryªÜÜêÄ¢½ */
+		}
+
+		/*
+		 *  L
+[ÌÌvfÉiÞ
+		 */
+		p_next = p_current->p_next;
+		if (p_next->p_prev != p_current) {
+			return(false);				 /* _uNÌs® */
+		}
+		p_current = p_next;
+	}
+	return(false);
+}
+
+/*
+ *  X^bNãðwµÄ¢é©Ì¸
+ */
+static bool_t
+on_stack(void *addr, const TINIB *p_tinib)
+{
+	if (p_tinib->stk <= addr
+				&& addr < (void *)((char *)(p_tinib->stk) + p_tinib->stksz)) {
+		return(true);
+	}
+	return(false);
+}
+
+/*
+ *  ^XNÌ®«¸
+ */
+static ER
+bit_task(ID tskid)
+{
+	TCB			*p_tcb;
+	const TINIB	*p_tinib;
+	uint_t		tstat, tstat_wait, priority;
+	TMEVTB		*p_tmevtb;
+	SEMCB		*p_semcb;
+	FLGCB		*p_flgcb;
+	DTQCB		*p_dtqcb;
+	PDQCB		*p_pdqcb;
+	MBXCB		*p_mbxcb;
+	MPFCB		*p_mpfcb;
+
+	if (!(TMIN_TSKID <= (tskid) && (tskid) <= tmax_tskid)) {
+		return(E_ID);
+	}
+	p_tcb = get_tcb(tskid);
+	p_tinib = p_tcb->p_tinib;
+	tstat = p_tcb->tstat;
+	tstat_wait = (tstat & TS_WAIT_MASK);
+	priority = p_tcb->priority;
+
+	/*
+	 *  ú»ubNÖÌ|C^Ì¸
+	 */
+	if (p_tinib != &(tinib_table[INDEX_TSK(tskid)])) {
+		return(E_SYS_LINENO);
+	}
+
+	/*
+	 *  tstatÌ¸
+	 */
+	switch (tstat & (TS_RUNNABLE | TS_WAITING | TS_SUSPENDED)) {
+	case TS_DORMANT:
+		if (tstat != TS_DORMANT) {
+			return(E_SYS_LINENO);
+		}
+		break;
+	case TS_RUNNABLE:
+		if (tstat != TS_RUNNABLE) {
+			return(E_SYS_LINENO);
+		}
+		break;
+	case TS_WAITING:
+	case (TS_WAITING | TS_SUSPENDED):
+		if (!(TS_WAIT_DLY <= tstat_wait && tstat_wait <= TS_WAIT_MPF)) {
+			return(E_SYS_LINENO);
+		}
+		if ((tstat & ~(TS_WAIT_MASK | TS_RUNNABLE | TS_WAITING | TS_SUSPENDED))
+																	!= 0U) {
+			return(E_SYS_LINENO);
+		}
+		break;
+	case TS_SUSPENDED:
+		if (tstat != TS_SUSPENDED) {
+			return(E_SYS_LINENO);
+		}
+		break;
+	default:
+		return(E_SYS_LINENO);
+	}
+
+	/*
+	 *  actqueÌ¸
+	 */
+	if (TSTAT_DORMANT(tstat) && p_tcb->actque) {
+		return(E_SYS_LINENO);
+	}
+
+	/*
+	 *  ^XNDæxÌ¸
+	 */
+	if (priority >= TNUM_TPRI) {
+		return(E_SYS_LINENO);
+	}
+
+	/*
+	 *  texptnÌ¸
+	 */
+	if (p_tcb->p_tinib->texrtn == NULL && p_tcb->texptn != 0U) {
+		return(E_SYS_LINENO);
+	}
+
+	/*
+	 *  x~óÔÉ¨¯é`FbN
+	 */
+	if (TSTAT_DORMANT(tstat)) {
+		if (!(priority == p_tinib->ipriority)
+					&& (p_tcb->wupque == false)
+					&& (p_tcb->enatex == false)
+					&& (p_tcb->texptn == 0U)) {
+			return(E_SYS_LINENO);
+		}
+	}
+
+	/*
+	 *  ÀsÅ«éóÔÉ¨¯é`FbN
+	 */
+	if (TSTAT_RUNNABLE(tstat)) {
+		if (!in_queue(&ready_queue[priority], &(p_tcb->task_queue))) {
+			return(E_SYS_LINENO);
+		}
+	}
+
+	/*
+	 *  Ò¿óÔÉ¨¯é`FbN
+	 */
+	if (TSTAT_WAITING(tstat)) {
+		if (!on_stack(p_tcb->p_winfo, p_tinib)) {
+			return(E_SYS_LINENO);
+		}
+		p_tmevtb = p_tcb->p_winfo->p_tmevtb;
+		if (p_tmevtb != NULL) {
+			if (!on_stack(p_tmevtb, p_tinib)) {
+				return(E_SYS_LINENO);
+			}
+			/*
+			 *  (*p_tmevtb)Ì¸i¢®¬j
+			 */
+		}
+
+		switch (tstat & TS_WAIT_MASK) {
+			case TS_WAIT_SLP:
+				if (p_tcb->wupque == true) {
+					return(E_SYS_LINENO);
+				}
+				break;
+
+			case TS_WAIT_DLY:
+				if (p_tmevtb == NULL) {
+					return(E_SYS_LINENO);
+				}
+				break;
+
+			case TS_WAIT_SEM:
+				p_semcb = ((WINFO_SEM *)(p_tcb->p_winfo))->p_semcb;
+				if (!VALID_SEMCB(p_semcb)) {
+					return(E_SYS_LINENO);
+				}
+				if (!in_queue(&(p_semcb->wait_queue), &(p_tcb->task_queue))) {
+					return(E_SYS_LINENO);
+				}
+				break;
+
+			case TS_WAIT_FLG:
+				p_flgcb = ((WINFO_FLG *)(p_tcb->p_winfo))->p_flgcb;
+				if (!VALID_FLGCB(p_flgcb)) {
+					return(E_SYS_LINENO);
+				}
+				if (!in_queue(&(p_flgcb->wait_queue), &(p_tcb->task_queue))) {
+					return(E_SYS_LINENO);
+				}
+				break;
+
+			case TS_WAIT_SDTQ:
+				p_dtqcb = ((WINFO_DTQ *)(p_tcb->p_winfo))->p_dtqcb;
+				if (!VALID_DTQCB(p_dtqcb)) {
+					return(E_SYS_LINENO);
+				}
+				if (!in_queue(&(p_dtqcb->swait_queue), &(p_tcb->task_queue))) {
+					return(E_SYS_LINENO);
+				}
+				break;
+
+			case TS_WAIT_RDTQ:
+				p_dtqcb = ((WINFO_DTQ *)(p_tcb->p_winfo))->p_dtqcb;
+				if (!VALID_DTQCB(p_dtqcb)) {
+					return(E_SYS_LINENO);
+				}
+				if (!in_queue(&(p_dtqcb->rwait_queue), &(p_tcb->task_queue))) {
+					return(E_SYS_LINENO);
+				}
+				break;
+
+			case TS_WAIT_SPDQ:
+				p_pdqcb = ((WINFO_PDQ *)(p_tcb->p_winfo))->p_pdqcb;
+				if (!VALID_PDQCB(p_pdqcb)) {
+					return(E_SYS_LINENO);
+				}
+				if (!in_queue(&(p_pdqcb->swait_queue), &(p_tcb->task_queue))) {
+					return(E_SYS_LINENO);
+				}
+				break;
+
+			case TS_WAIT_RPDQ:
+				p_pdqcb = ((WINFO_PDQ *)(p_tcb->p_winfo))->p_pdqcb;
+				if (!VALID_PDQCB(p_pdqcb)) {
+					return(E_SYS_LINENO);
+				}
+				if (!in_queue(&(p_pdqcb->rwait_queue), &(p_tcb->task_queue))) {
+					return(E_SYS_LINENO);
+				}
+				break;
+
+			case TS_WAIT_MBX:
+				p_mbxcb = ((WINFO_MBX *)(p_tcb->p_winfo))->p_mbxcb;
+				if (!VALID_MBXCB(p_mbxcb)) {
+					return(E_SYS_LINENO);
+				}
+				if (!in_queue(&(p_mbxcb->wait_queue), &(p_tcb->task_queue))) {
+					return(E_SYS_LINENO);
+				}
+				break;
+
+			case TS_WAIT_MPF:
+				p_mpfcb = ((WINFO_MPF *)(p_tcb->p_winfo))->p_mpfcb;
+				if (!VALID_MPFCB(p_mpfcb)) {
+					return(E_SYS_LINENO);
+				}
+				if (!in_queue(&(p_mpfcb->wait_queue), &(p_tcb->task_queue))) {
+					return(E_SYS_LINENO);
+				}
+				break;
+		}
+	}
+
+	/*
+	 *  tskctxbÌ¸
+	 */
+	if (!TSTAT_DORMANT(tstat) && p_tcb != p_runtsk) {
+		/*
+		 *  ^[QbgË¶Ì¸
+		 */
+#if 0
+		if (bit_tskctxb(&(p_tcb->tskctxb))) {
+			return(E_SYS_LINENO);
+		}
+#endif
+	}
+	return(E_OK);
+}
+
+/*
+ *  Z}tHÌ®«¸
+ */
+#define INDEX_SEM(semid)	((uint_t)((semid) - TMIN_SEMID))
+#define get_semcb(semid)	(&(semcb_table[INDEX_SEM(semid)]))
+
+static ER
+bit_semaphore(ID semid)
+{
+	SEMCB			*p_semcb;
+	const SEMINIB	*p_seminib;
+	uint_t			semcnt;
+	QUEUE			*p_queue;
+	TCB				*p_tcb;
+
+	if (!(TMIN_SEMID <= (semid) && (semid) <= tmax_semid)) {
+		return(E_ID);
+	}
+	p_semcb = get_semcb(semid);
+	p_seminib = p_semcb->p_seminib;
+	semcnt = p_semcb->semcnt;
+
+	/*
+	 *  ú»ubNÖÌ|C^Ì¸
+	 */
+	if (p_seminib != &(seminib_table[INDEX_SEM(semid)])) {
+		return(E_SYS_LINENO);
+	}
+
+	/*
+	 *  semcntÌ¸
+	 */
+	if (semcnt > p_seminib->maxsem) {
+		return(E_SYS_LINENO);
+	}
+
+	/*
+	 *  wait_queueÌ¸
+	 */
+	if (semcnt == 0) {
+		p_queue = p_semcb->wait_queue.p_next;
+		while (p_queue != &(p_semcb->wait_queue)) {
+			p_tcb = (TCB *) p_queue;
+			p_queue = p_queue->p_next;
+			if (!VALID_TCB(p_tcb)) {
+				return(E_SYS_LINENO);
+			}
+			if (p_tcb->tstat != (TS_WAITING | TS_WAIT_SEM)) {
+				return(E_SYS_LINENO);
+			}
+			if (p_semcb != ((WINFO_SEM *)(p_tcb->p_winfo))->p_semcb) {
+				return(E_SYS_LINENO);
+			}
+		}
+	}
+	else {
+		if (!queue_empty(&(p_semcb->wait_queue))) {
+			return(E_SYS_LINENO);
+		}
+	}
+	return(E_OK);
+}
+
+/*
+ *  ®«¸[`{Ì
+ */
+ER
+bit_kernel(void)
+{
+	ID		tskid;
+	ID		semid;
+	ER		ercd;
+
+	/*
+	 *  ^XNÌ¸
+	 */
+	for (tskid = TMIN_TSKID; tskid <= tmax_tskid; tskid++) {
+		ercd = bit_task(tskid);
+		if (ercd != E_OK) {
+			return(ercd);
+		}
+	}
+
+	/*
+	 *  Z}tHÌ¸
+	 */
+	for (semid = TMIN_SEMID; semid <= tmax_semid; semid++) {
+		ercd = bit_semaphore(semid);
+		if (ercd != E_OK) {
+			return(ercd);
+		}
+	}
+
+	return(E_OK);
+}
Index: /asp_ewarm/asp-1.7.0/test/perf0.c
===================================================================
--- /asp_ewarm/asp-1.7.0/test/perf0.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/perf0.c	(revision 61)
@@ -0,0 +1,87 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2006-2009 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: perf0.c 1575 2009-05-31 14:15:46Z ertl-hiro $
+ */
+
+/*
+ *		J[l«\]¿vO(0)
+ *
+ *  ÔvªÌI[owbhðvª·é½ßÌvOD
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include <test_lib.h>
+#include <histogram.h>
+#include "kernel_cfg.h"
+#include "perf0.h"
+
+/*
+ *  vªñÆÀsÔªzðL^·éÅåÔ
+ */
+#define NO_MEASURE	10000U			/* vªñ */
+#define MAX_TIME	1000U			/* ÀsÔªzðL^·éÅåÔ */
+
+/*
+ *  ÀsÔªzðL^·éÌæ
+ */
+static uint_t	histarea1[MAX_TIME + 1];
+
+/*
+ *  C^XN
+ */
+void main_task(intptr_t exinf)
+{
+	uint_t	i;
+
+	syslog_0(LOG_NOTICE, "Performance evaluation program (0)");
+	init_hist(1, MAX_TIME, histarea1);
+	syslog_flush();
+
+	for (i = 0; i < NO_MEASURE; i++) {
+		begin_measure(1);
+		end_measure(1);
+	}
+
+	syslog_0(LOG_NOTICE, "Measurement overhead");
+	print_hist(1);
+	test_finish();
+}
Index: /asp_ewarm/asp-1.7.0/test/perf0.cfg
===================================================================
--- /asp_ewarm/asp-1.7.0/test/perf0.cfg	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/perf0.cfg	(revision 61)
@@ -0,0 +1,15 @@
+/*
+ *  @(#) $Id: perf0.cfg 1575 2009-05-31 14:15:46Z ertl-hiro $
+ */
+
+/*
+ *  J[l«\]¿vO(0)ÌVXeRtBM
+[Vt@C
+ */
+INCLUDE("target_timer.cfg");
+INCLUDE("syssvc/syslog.cfg");
+INCLUDE("syssvc/banner.cfg");
+INCLUDE("syssvc/serial.cfg");
+
+#include "perf0.h"
+CRE_TSK(MAIN_TASK, { TA_ACT, 0, main_task, MAIN_PRIORITY, STACK_SIZE, NULL });
Index: /asp_ewarm/asp-1.7.0/test/perf0.h
===================================================================
--- /asp_ewarm/asp-1.7.0/test/perf0.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/perf0.h	(revision 61)
@@ -0,0 +1,68 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2006,2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: perf0.h 329 2007-07-17 07:28:32Z hiro $
+ */
+
+/*
+ *		J[l«\]¿vO(0)
+ */
+
+/*
+ *  ^[QbgË¶Ìè`
+ */
+#include "target_test.h"
+
+/*
+ *  e^XNÌDæxÌè`
+ */
+#define MAIN_PRIORITY	11		/* C^XNÌDæx */
+
+/*
+ *  ^[QbgÉË¶·éÂ\«Ì éèÌè`
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ^XNÌX^bNTCY */
+#endif /* STACK_SIZE */
+
+/*
+ *  ÖÌvg^Cvé¾
+ */
+extern void	main_task(intptr_t exinf);
Index: /asp_ewarm/asp-1.7.0/test/perf1.c
===================================================================
--- /asp_ewarm/asp-1.7.0/test/perf1.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/perf1.c	(revision 61)
@@ -0,0 +1,120 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2006-2009 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: perf1.c 1575 2009-05-31 14:15:46Z ertl-hiro $
+ */
+
+/*
+ *		J[l«\]¿vO(1)
+ *
+ *  slp_tskCwup_tskÉæé^XNØ·¦Ôðvª·é½ßÌvOD
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include <test_lib.h>
+#include <histogram.h>
+#include "kernel_cfg.h"
+#include "perf1.h"
+
+/*
+ *  vªñÆÀsÔªzðL^·éÅåÔ
+ */
+#define NO_MEASURE	10000U			/* vªñ */
+#define MAX_TIME	1000U			/* ÀsÔªzðL^·éÅåÔ */
+
+/*
+ *  ÀsÔªzðL^·éÌæ
+ */
+static uint_t	histarea1[MAX_TIME + 1];
+static uint_t	histarea2[MAX_TIME + 1];
+
+/*
+ *  vª^XN1iDæxj
+ */
+void task1(intptr_t exinf)
+{
+	uint_t	i;
+
+	slp_tsk();
+	end_measure(1);
+	for (i = 1; i < NO_MEASURE; i++) {
+		begin_measure(2);
+		slp_tsk();
+		end_measure(1);
+	}
+	begin_measure(2);
+	slp_tsk();
+}
+
+/*
+ *  vª^XN2iDæxj
+ */
+void task2(intptr_t exinf)
+{
+	uint_t	i;
+
+	for (i = 0; i < NO_MEASURE; i++) {
+		begin_measure(1);
+		wup_tsk(TASK1);
+		end_measure(2);
+	}
+	wup_tsk(TASK1);
+}
+
+/*
+ *  C^XNiáDæxj
+ */
+void main_task(intptr_t exinf)
+{
+	syslog_0(LOG_NOTICE, "Performance evaluation program (1)");
+	init_hist(1, MAX_TIME, histarea1);
+	init_hist(2, MAX_TIME, histarea2);
+	syslog_flush();
+
+	act_tsk(TASK1);
+	act_tsk(TASK2);
+
+	syslog_0(LOG_NOTICE, "Execution times of wup_tsk -> slp_tsk");
+	print_hist(1);
+	syslog_0(LOG_NOTICE, "Execution times of slp_tsk -> wup_tsk");
+	print_hist(2);
+	test_finish();
+}
Index: /asp_ewarm/asp-1.7.0/test/perf1.cfg
===================================================================
--- /asp_ewarm/asp-1.7.0/test/perf1.cfg	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/perf1.cfg	(revision 61)
@@ -0,0 +1,17 @@
+/*
+ *  @(#) $Id: perf1.cfg 1575 2009-05-31 14:15:46Z ertl-hiro $
+ */
+
+/*
+ *  J[l«\]¿vO(1)ÌVXeRtBM
+[Vt@C
+ */
+INCLUDE("target_timer.cfg");
+INCLUDE("syssvc/syslog.cfg");
+INCLUDE("syssvc/banner.cfg");
+INCLUDE("syssvc/serial.cfg");
+
+#include "perf1.h"
+CRE_TSK(TASK1, { TA_NULL, 1, task1, TASK1_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK2, { TA_NULL, 2, task2, TASK2_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(MAIN_TASK, { TA_ACT, 0, main_task, MAIN_PRIORITY, STACK_SIZE, NULL });
Index: /asp_ewarm/asp-1.7.0/test/perf1.h
===================================================================
--- /asp_ewarm/asp-1.7.0/test/perf1.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/perf1.h	(revision 61)
@@ -0,0 +1,72 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2006,2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: perf1.h 329 2007-07-17 07:28:32Z hiro $
+ */
+
+/*
+ *		J[l«\]¿vO(1)
+ */
+
+/*
+ *  ^[QbgË¶Ìè`
+ */
+#include "target_test.h"
+
+/*
+ *  e^XNÌDæxÌè`
+ */
+#define TASK1_PRIORITY	9		/* vª^XN1ÌDæx */
+#define TASK2_PRIORITY	10		/* vª^XN2ÌDæx */
+#define MAIN_PRIORITY	11		/* C^XNÌDæx */
+
+/*
+ *  ^[QbgÉË¶·éÂ\«Ì éèÌè`
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ^XNÌX^bNTCY */
+#endif /* STACK_SIZE */
+
+/*
+ *  ÖÌvg^Cvé¾
+ */
+extern void	task1(intptr_t exinf);
+extern void	task2(intptr_t exinf);
+extern void	main_task(intptr_t exinf);
Index: /asp_ewarm/asp-1.7.0/test/perf2.c
===================================================================
--- /asp_ewarm/asp-1.7.0/test/perf2.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/perf2.c	(revision 61)
@@ -0,0 +1,120 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2009 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: perf2.c 1575 2009-05-31 14:15:46Z ertl-hiro $
+ */
+
+/*
+ *		J[l«\]¿vO(2)
+ *
+ *  Dæxf[^L
+[É~Ï³êÄ¢éf[^ÌÉæèCsnd_pdqÌ
+ *  ÔªÇÌæ¤ÉÏ»·é©ðvª·é½ßÌvOD
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include <test_lib.h>
+#include <histogram.h>
+#include "kernel_cfg.h"
+#include "perf2.h"
+
+/*
+ *  vªñÆÀsÔªzðL^·éÅåÔ
+ */
+#define NO_MEASURE	10000U			/* vªñ */
+#define MAX_TIME	1000U			/* ÀsÔªzðL^·éÅåÔ */
+
+/*
+ *  ÀsÔªzðL^·éÌæ
+ */
+static uint_t	histarea1[MAX_TIME + 1];
+
+/*
+ *  vª[`
+ */
+void
+perf_eval(uint_t n)
+{
+	uint_t		i;
+	intptr_t	data;
+	PRI			pri;
+
+	ini_pdq(PDQ1);
+	init_hist(1, MAX_TIME, histarea1);
+
+	for (i = 0; i < n; i++) {
+		data = i;
+		snd_pdq(PDQ1, data, 1);
+	}
+
+	for (i = 0; i < NO_MEASURE; i++) {
+		data = i;
+		begin_measure(1);
+		snd_pdq(PDQ1, data, 2);
+		end_measure(1);
+		rcv_pdq(PDQ1, &data, &pri);
+	}
+
+	syslog_1(LOG_NOTICE, "Execution times of snd_pdq"
+								" when %d data are queued.", n);
+	print_hist(1);
+	syslog_flush();
+}
+
+/*
+ *  C^XNiáDæxj
+ */
+void main_task(intptr_t exinf)
+{
+	syslog_0(LOG_NOTICE, "Performance evaluation program (2)");
+	syslog_flush();
+
+	perf_eval(0);
+	perf_eval(10);
+	perf_eval(20);
+	perf_eval(30);
+	perf_eval(40);
+	perf_eval(50);
+	perf_eval(100);
+	perf_eval(200);
+	perf_eval(300);
+	test_finish();
+}
Index: /asp_ewarm/asp-1.7.0/test/perf2.cfg
===================================================================
--- /asp_ewarm/asp-1.7.0/test/perf2.cfg	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/perf2.cfg	(revision 61)
@@ -0,0 +1,16 @@
+/*
+ *  @(#) $Id: perf2.cfg 1575 2009-05-31 14:15:46Z ertl-hiro $
+ */
+
+/*
+ *  J[l«\]¿vO(2)ÌVXeRtBM
+[Vt@C
+ */
+INCLUDE("target_timer.cfg");
+INCLUDE("syssvc/syslog.cfg");
+INCLUDE("syssvc/banner.cfg");
+INCLUDE("syssvc/serial.cfg");
+
+#include "perf2.h"
+CRE_TSK(MAIN_TASK, { TA_ACT, 0, main_task, MAIN_PRIORITY, STACK_SIZE, NULL });
+CRE_PDQ(PDQ1, { TA_NULL, 301, 16, NULL });
Index: /asp_ewarm/asp-1.7.0/test/perf2.h
===================================================================
--- /asp_ewarm/asp-1.7.0/test/perf2.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/perf2.h	(revision 61)
@@ -0,0 +1,68 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: perf2.h 459 2007-08-05 14:08:56Z hiro $
+ */
+
+/*
+ *		J[l«\]¿vO(2)
+ */
+
+/*
+ *  ^[QbgË¶Ìè`
+ */
+#include "target_test.h"
+
+/*
+ *  e^XNÌDæxÌè`
+ */
+#define MAIN_PRIORITY	11		/* C^XNÌDæx */
+
+/*
+ *  ^[QbgÉË¶·éÂ\«Ì éèÌè`
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ^XNÌX^bNTCY */
+#endif /* STACK_SIZE */
+
+/*
+ *  ÖÌvg^Cvé¾
+ */
+extern void	main_task(intptr_t exinf);
Index: /asp_ewarm/asp-1.7.0/test/perf3.c
===================================================================
--- /asp_ewarm/asp-1.7.0/test/perf3.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/perf3.c	(revision 61)
@@ -0,0 +1,140 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2009 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: perf3.c 1575 2009-05-31 14:15:46Z ertl-hiro $
+ */
+
+/*
+ *		J[l«\]¿vO(3)
+ *
+ *  Ò¿ð·é^XNÌÉæèCset_flgÌÔªÇÌæ¤ÉÏ»·é
+ *  ©ðvª·é½ßÌvOD
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include <test_lib.h>
+#include <histogram.h>
+#include "kernel_cfg.h"
+#include "perf3.h"
+
+/*
+ *  vªñÆÀsÔªzðL^·éÅåÔ
+ */
+#define NO_MEASURE	10000U			/* vªñ */
+#define MAX_TIME	1000U			/* ÀsÔªzðL^·éÅåÔ */
+
+/*
+ *  ÀsÔªzðL^·éÌæ
+ */
+static uint_t	histarea1[MAX_TIME + 1];
+
+/*
+ *  vª^XNÌXg
+ */
+static ID task_list[20] = {
+	TASK1, TASK2, TASK3, TASK4, TASK5,
+	TASK6, TASK7, TASK8, TASK9, TASK10,
+	TASK11, TASK12, TASK13, TASK14, TASK15,
+	TASK16, TASK17, TASK18, TASK19, TASK20
+};
+
+/*
+ *  vª^XNiDæxj
+ */
+void task(intptr_t exinf)
+{
+	FLGPTN	flgptn;
+
+	wai_flg(FLG1, 0x01U, TWF_ORW, &flgptn);
+}
+
+/*
+ *  vª[`
+ */
+void
+perf_eval(uint_t n)
+{
+	uint_t		i, j;
+
+	init_hist(1, MAX_TIME, histarea1);
+
+	for (i = 0; i < NO_MEASURE; i++) {
+		ini_flg(FLG1);
+		for (j = 0; j < n; j++) {
+			act_tsk(task_list[j]);
+		}
+		chg_pri(TSK_SELF, MAIN_PRIORITY_LOW);
+		/* ^XNªÒ¿óÔÉüéÌðÒÂ */
+		chg_pri(TSK_SELF, TPRI_INI);
+
+		begin_measure(1);
+		set_flg(FLG1, 0x01U);
+		end_measure(1);
+
+		chg_pri(TSK_SELF, MAIN_PRIORITY_LOW);
+		/* ^XNªI¹·éÌðÒÂ */
+		chg_pri(TSK_SELF, TPRI_INI);
+	}
+
+	syslog_1(LOG_NOTICE, "Execution times of set_flg"
+							" when %d tasks are released from waiting.", n);
+	print_hist(1);
+	syslog_flush();
+}
+
+/*
+ *  C^XNiDæxj
+ */
+void main_task(intptr_t exinf)
+{
+	syslog_0(LOG_NOTICE, "Performance evaluation program (3)");
+	syslog_flush();
+
+	perf_eval(0);
+	perf_eval(1);
+	perf_eval(2);
+	perf_eval(3);
+	perf_eval(4);
+	perf_eval(5);
+	perf_eval(10);
+	perf_eval(20);
+	test_finish();
+}
Index: /asp_ewarm/asp-1.7.0/test/perf3.cfg
===================================================================
--- /asp_ewarm/asp-1.7.0/test/perf3.cfg	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/perf3.cfg	(revision 61)
@@ -0,0 +1,36 @@
+/*
+ *  @(#) $Id: perf3.cfg 1575 2009-05-31 14:15:46Z ertl-hiro $
+ */
+
+/*
+ *  J[l«\]¿vO(3)ÌVXeRtBM
+[Vt@C
+ */
+INCLUDE("target_timer.cfg");
+INCLUDE("syssvc/syslog.cfg");
+INCLUDE("syssvc/banner.cfg");
+INCLUDE("syssvc/serial.cfg");
+
+#include "perf3.h"
+CRE_TSK(TASK1, { TA_NULL, 1, task, TASK_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK2, { TA_NULL, 2, task, TASK_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK3, { TA_NULL, 3, task, TASK_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK4, { TA_NULL, 4, task, TASK_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK5, { TA_NULL, 5, task, TASK_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK6, { TA_NULL, 6, task, TASK_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK7, { TA_NULL, 7, task, TASK_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK8, { TA_NULL, 8, task, TASK_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK9, { TA_NULL, 9, task, TASK_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK10, { TA_NULL, 10, task, TASK_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK11, { TA_NULL, 11, task, TASK_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK12, { TA_NULL, 12, task, TASK_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK13, { TA_NULL, 13, task, TASK_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK14, { TA_NULL, 14, task, TASK_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK15, { TA_NULL, 15, task, TASK_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK16, { TA_NULL, 16, task, TASK_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK17, { TA_NULL, 17, task, TASK_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK18, { TA_NULL, 18, task, TASK_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK19, { TA_NULL, 19, task, TASK_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK20, { TA_NULL, 20, task, TASK_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(MAIN_TASK, { TA_ACT, 0, main_task, MAIN_PRIORITY, STACK_SIZE, NULL });
+CRE_FLG(FLG1, { TA_WMUL, 0x00U });
Index: /asp_ewarm/asp-1.7.0/test/perf3.h
===================================================================
--- /asp_ewarm/asp-1.7.0/test/perf3.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/perf3.h	(revision 61)
@@ -0,0 +1,71 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: perf3.h 459 2007-08-05 14:08:56Z hiro $
+ */
+
+/*
+ *		J[l«\]¿vO(3)
+ */
+
+/*
+ *  ^[QbgË¶Ìè`
+ */
+#include "target_test.h"
+
+/*
+ *  e^XNÌDæxÌè`
+ */
+#define TASK_PRIORITY		10		/* ^XNÌDæx */
+#define MAIN_PRIORITY		9		/* C^XNÌDæx */
+#define MAIN_PRIORITY_LOW	11		/* C^XNÌáDæx */
+
+/*
+ *  ^[QbgÉË¶·éÂ\«Ì éèÌè`
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ^XNÌX^bNTCY */
+#endif /* STACK_SIZE */
+
+/*
+ *  ÖÌvg^Cvé¾
+ */
+extern void	task(intptr_t exinf);
+extern void	main_task(intptr_t exinf);
Index: /asp_ewarm/asp-1.7.0/test/perf4.c
===================================================================
--- /asp_ewarm/asp-1.7.0/test/perf4.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/perf4.c	(revision 61)
@@ -0,0 +1,183 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2006-2009 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: perf4.c 1575 2009-05-31 14:15:46Z ertl-hiro $
+ */
+
+/*
+ *		J[l«\]¿vO(4)
+ *
+ *  act_tskCiact_tskÌÔÆ^XNØ·¦Ôðvª·é½ßÌvO
+ *  DÈºÌ3ÂÌÔðªè·éD
+ *
+ *  (1) ^XNØ·¦ðN±³È¢act_tskÌÔD©^XNæèàDæx
+ *      Ìá¢^XNÉÎµÄact_tskð­sµCx~óÔ©çÀsÅ«éóÔ
+ *      ÉJÚ³¹éÌÔD
+ *
+ *  (2) ^XNØ·¦ðN±·act_tskÌÔD©^XNæèàDæxÌ
+ *      ¢^XNÉÎµÄact_tskð­sµCx~óÔ©çÀsÅ«éóÔÉJ
+ *      Ú³¹C^XNØ·¦ðN±µÄC¢DæxÌ^XNÌÀsªnÜ
+ *      éÜÅÌÔD
+ *
+ *  (3) ^XNØ·¦ðN±·iact_tskÌÔDüúnh©çCÀs
+ *      óÔÌ^XNæèà¢DæxÌ^XNÉÎµÄact_tskð­sµCx
+ *      ~óÔ©çÀsÅ«éóÔÉJÚ³¹½ ÆÉüúnh©ç^[
+ *      µC^XNØ·¦ðN±µÄC¢DæxÌ^XNÌÀsªnÜé
+ *      ÜÅÌÔD
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include <test_lib.h>
+#include <histogram.h>
+#include "kernel_cfg.h"
+#include "perf4.h"
+
+/*
+ *  vªñÆÀsÔªzðL^·éÅåÔ
+ */
+#define NO_MEASURE	10000U			/* vªñ */
+#define MAX_TIME	1000U			/* ÀsÔªzðL^·éÅåÔ */
+
+/*
+ *  ÀsÔªzðL^·éÌæ
+ */
+static uint_t	histarea1[MAX_TIME + 1];
+static uint_t	histarea2[MAX_TIME + 1];
+static uint_t	histarea3[MAX_TIME + 1];
+
+/*
+ *  vª^XN1iDæxj
+ */
+void task1(intptr_t exinf)
+{
+	end_measure(2);
+	ext_tsk();
+}
+
+/*
+ *  vª^XN2ÆC^XNÌ¤LÏ
+ */
+volatile uint_t		task2_count;
+
+/*
+ *  vª^XN2iDæxj
+ */
+void task2(intptr_t exinf)
+{
+	end_measure(3);
+	task2_count++;
+	ext_tsk();
+}
+
+/*
+ *  vª^XN3iáDæxj
+ */
+void task3(intptr_t exinf)
+{
+	ext_tsk();
+}
+
+/*
+ *  vª^XN4iÅáDæxj
+ */
+void task4(intptr_t exinf)
+{
+	while (true) {
+		wup_tsk(MAIN_TASK);
+	}
+}
+
+/*
+ *  üúnh
+ */
+void cyclic_handler(intptr_t exinf)
+{
+	begin_measure(3);
+	iact_tsk(TASK2);
+}
+
+/*
+ *  C^XNiDæxj
+ */
+void main_task(intptr_t exinf)
+{
+	uint_t	i;
+
+	syslog_0(LOG_NOTICE, "Performance evaluation program (4)");
+	init_hist(1, MAX_TIME, histarea1);
+	init_hist(2, MAX_TIME, histarea2);
+	init_hist(3, MAX_TIME, histarea3);
+	syslog_flush();
+
+	/*
+	 *  ^XNØ·¦ðN±³È¢act_tskÌÔÌªè
+	 */
+	for (i = 0; i < NO_MEASURE; i++) {
+		begin_measure(1);
+		act_tsk(TASK3);
+		end_measure(1);
+		slp_tsk();
+	}
+
+	/*
+	 *  ^XNØ·¦ðN±·act_tskÌÔÌªè
+	 */
+	for (i = 0; i < NO_MEASURE; i++) {
+		begin_measure(2);
+		act_tsk(TASK1);
+	}
+
+	/*
+	 *  ^XNØ·¦ðN±·iact_tskÌÔÌªèiªèñÍ10ªÌ1j
+	 */
+	task2_count = 0;
+	sta_cyc(CYC1);
+	while (task2_count < NO_MEASURE / 10) ;
+	stp_cyc(CYC1);
+
+	syslog_0(LOG_NOTICE, "Execution times of act_tsk without task switch");
+	print_hist(1);
+	syslog_0(LOG_NOTICE, "Execution times of act_tsk with task switch");
+	print_hist(2);
+	syslog_0(LOG_NOTICE, "Execution times of iact_tsk with task switch");
+	print_hist(3);
+	test_finish();
+}
Index: /asp_ewarm/asp-1.7.0/test/perf4.cfg
===================================================================
--- /asp_ewarm/asp-1.7.0/test/perf4.cfg	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/perf4.cfg	(revision 61)
@@ -0,0 +1,22 @@
+/*
+ *  @(#) $Id: perf4.cfg 1575 2009-05-31 14:15:46Z ertl-hiro $
+ */
+
+/*
+ *  J[l«\]¿vO(4)ÌVXeRtBM
+[Vt@C
+ */
+INCLUDE("target_timer.cfg");
+INCLUDE("syssvc/syslog.cfg");
+INCLUDE("syssvc/banner.cfg");
+INCLUDE("syssvc/serial.cfg");
+
+#include "perf4.h"
+CRE_TSK(TASK1, { TA_NULL, 1, task1, TASK1_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK2, { TA_NULL, 2, task2, TASK2_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK3, { TA_NULL, 3, task3, TASK3_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK4, { TA_ACT, 4, task4, TASK4_PRIORITY, STACK_SIZE, NULL });
+CRE_CYC(CYC1, { TA_NULL, 0, cyclic_handler,
+					(TIC_NUME + TIC_DENO - 1) / TIC_DENO,
+					(TIC_NUME + TIC_DENO - 1) / TIC_DENO });
+CRE_TSK(MAIN_TASK, { TA_ACT, 0, main_task, MAIN_PRIORITY, STACK_SIZE, NULL });
Index: /asp_ewarm/asp-1.7.0/test/perf4.h
===================================================================
--- /asp_ewarm/asp-1.7.0/test/perf4.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/perf4.h	(revision 61)
@@ -0,0 +1,77 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2006-2009 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: perf4.h 1552 2009-05-12 02:35:57Z ertl-hiro $
+ */
+
+/*
+ *		J[l«\]¿vO(4)
+ */
+
+/*
+ *  ^[QbgË¶Ìè`
+ */
+#include "target_test.h"
+
+/*
+ *  e^XNÌDæxÌè`
+ */
+#define TASK1_PRIORITY	9		/* vª^XN1ÌDæx */
+#define TASK2_PRIORITY	9		/* vª^XN2ÌDæx */
+#define TASK3_PRIORITY	11		/* vª^XN3ÌDæx */
+#define TASK4_PRIORITY	12		/* vª^XN4ÌDæx */
+#define MAIN_PRIORITY	10		/* C^XNÌDæx */
+
+/*
+ *  ^[QbgÉË¶·éÂ\«Ì éèÌè`
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ^XNÌX^bNTCY */
+#endif /* STACK_SIZE */
+
+/*
+ *  ÖÌvg^Cvé¾
+ */
+extern void	task1(intptr_t exinf);
+extern void	task2(intptr_t exinf);
+extern void	task3(intptr_t exinf);
+extern void	task4(intptr_t exinf);
+extern void	cyclic_handler(intptr_t exinf);
+extern void	main_task(intptr_t exinf);
Index: /asp_ewarm/asp-1.7.0/test/test_cpuexc.cfg
===================================================================
--- /asp_ewarm/asp-1.7.0/test/test_cpuexc.cfg	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/test_cpuexc.cfg	(revision 61)
@@ -0,0 +1,23 @@
+/*
+ *  @(#) $Id: test_cpuexc.cfg 1572 2009-05-31 13:40:39Z ertl-hiro $
+ */
+
+/*
+ *  CPUáOÌeXg(1)`(13)ÌVXeRtBM
+[Vt@C
+ */
+INCLUDE("target_timer.cfg");
+INCLUDE("syssvc/syslog.cfg");
+INCLUDE("syssvc/banner.cfg");
+INCLUDE("syssvc/serial.cfg");
+
+#include "test_cpuexc.h"
+
+CRE_TSK(TASK1, { TA_ACT, 1, task1, MID_PRIORITY, STACK_SIZE, NULL });
+DEF_TEX(TASK1, { TA_NULL, tex_task1 });
+
+CRE_TSK(TASK2, { TA_NULL, 2, task2, HIGH_PRIORITY, STACK_SIZE, NULL });
+
+CRE_ALM(ALM1, { TA_NULL, 1, alarm1_handler });
+
+DEF_EXC(CPUEXC1, { TA_NULL, cpuexc_handler });
Index: /asp_ewarm/asp-1.7.0/test/test_cpuexc.h
===================================================================
--- /asp_ewarm/asp-1.7.0/test/test_cpuexc.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/test_cpuexc.h	(revision 61)
@@ -0,0 +1,80 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_cpuexc.h 329 2007-07-17 07:28:32Z hiro $
+ */
+
+/* 
+ *		CPUáOÌeXg(1)`(13)
+ */
+
+/*
+ *  ^[QbgË¶Ìè`
+ */
+#include "target_test.h"
+
+/*
+ *  e^XNÌDæxÌè`
+ */
+#define HIGH_PRIORITY	9		/* Dæx */
+#define MID_PRIORITY	10		/* Dæx */
+
+/*
+ *  ^[QbgÉË¶·éÂ\«Ì éèÌè`
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ^XNÌX^bNTCY */
+#endif /* STACK_SIZE */
+
+/*
+ *  ÖÌvg^Cvé¾
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+extern void	task1(intptr_t exinf);
+extern void	tex_task1(TEXPTN texptn, intptr_t exinf);
+
+extern void	task2(intptr_t exinf);
+
+extern void	alarm1_handler(intptr_t exinf);
+
+extern void	cpuexc_handler(void *p_excinf);
+
+#endif /* TOPPERS_MACRO_ONLY */
Index: /asp_ewarm/asp-1.7.0/test/test_cpuexc.txt
===================================================================
--- /asp_ewarm/asp-1.7.0/test/test_cpuexc.txt	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/test_cpuexc.txt	(revision 61)
@@ -0,0 +1,128 @@
+
+		CPUáOÌeXg
+
+yeXgÌÚIz
+
+CPUáOnhÌÀsJn^^[ÌVXeóÔÆCCPUáOnh
+ÅÌxsns_dpnÆxsns_xpnÌ®ìðÔ
+IÉeXg·éD
+
+yeXgÚz
+
+(A) CPUáOnhÀsJnÉCPUbNtOªÏ»µÈ¢±Æ
+
+(B) CPUáOnhÀsJnÉÝDæx}XNªÏ»µÈ¢±Æ
+	ICPUáOnhÅÝDæx}XNðÇßÈ¢½ßCeXgÅ«È
+	@¢D
+
+(C) CPUáOnhÀsJnÉfBXpb`Ö~tOªÏ»µÈ¢±Æ
+
+(D) CPUáOnhÀsJnÉ^XNáOÖ~tOªÏ»µÈ¢±Æ
+
+(E) CPUáOnh^[ÉCPUbNtOª³Éßé±Æ
+
+(F) CPUáOnh^[ÉÝDæx}XNª³Éßé±Æ
+
+(G) CPUáOnh^[ÉfBXpb`Ö~tOªÏ»µÈ¢±Æ
+
+(H) CPUáOnh^[É^XNáOÖ~tOªÏ»µÈ¢±Æ
+
+(I) xsns_xpnª³µ¢lðÔ·±Æ
+
+xsns_xpnÍCCPUáOª­¶µ½óµªÌðð·×Ä½·êÉfalseC
+»¤ÅÈ¢êÉtrueðÔ·D
+@E^XNReLXg
+@EÝbNðóÔ
+@ECPUbNðóÔ
+@EÝDæx}XNSðóÔ
+@E^XNáOÂóÔ
+
+(J) xsns_dpnª³µ¢lðÔ·±Æ
+
+xsns_dpnÍCCPUáOª­¶µ½óµªÌðð·×Ä½·êÉfalseC
+»¤ÅÈ¢êÉtrueðÔ·D
+@E^XNReLXg
+@EÝbNðóÔ
+@ECPUbNðóÔ
+@EÝDæx}XNSðóÔ
+@EfBXpb`ÂóÔ
+
+(K) ^XNØ·¦ÉæéJo[ªÅ«é±Æ
+
+(L) ^XNáOÉæéJo[ªÅ«é±Æ
+
+yeXgðÀ{·éóµz
+
+CPUáOÌ­¶·éóµÍCÌæ¤ÉªÞ·é±ÆªÅ«éD±êçÌóµ
+ÉeXgvOðpÓ·éD
+
+(a-1) ñ^XNReLXg
+(a-2) ^XNReLXg
+
+(b-1) ÝbNóÔ
+(b-2) ÝbNðóÔ
+
+(c-1) CPUbNóÔ
+(c-2) CPUbNðóÔ
+
+(d-1) ÝDæx}XNTIPM_ENAALL
+(d-2) ÝDæx}XNTMAX_INTPRI
+	 ITMAX_INTPRITMIN_INTPRIÌêÍ(d-3)Æ¯¶ÉÈéÌÅÀ{µÈ¢D
+(d-3) ÝDæx}XNTMIN_INTPRI
+(d-4) ÝDæx}XNTMIN_INTPRI-1
+	 ITMAX_INTPRI-1ªÝèÅ«é©Í^[QbgÉË¶·éD
+
+(e-1) fBXpb`Ö~óÔ
+(e-2) fBXpb`ÂóÔ
+
+(f-1) ^XNáOÖ~óÔ
+(f-2) ^XNáOÂóÔ
+
+±ÌgÝí¹ð·×ÄeXg·é±ÆÍ»ÀIÅÈ¢½ßCã\IÈp^[
+ÉièÞD
+
+Ü¸C(a)`(c)ÌgÝí¹ÅCÌ5ÂÌp^[ðeXg·éD±êçÌe
+Xgð·éÛÉÍC(d)`(f)ÉÂ¢ÄÍC(d-1)(e-1)(f-2)ÌgÝí¹ÉÅè
+·éD
+
+(1) (a-1)(b-1)(c-2) ¨ Jo[sÂ
+	I(a-1)(b-1)(c-1)ÌeXgÍÈ­D
+(2) (a-1)(b-2)(c-1) ¨ Jo[sÂ
+(3) (a-1)(b-2)(c-2) ¨ Jo[sÂ
+
+(4) (a-2)(b-1)(c-2) ¨ Jo[sÂ
+	I(a-2)(b-1)(c-1)ÌeXgÍÈ­D
+(5) (a-2)(b-2)(c-1) ¨ Jo[sÂ
+
+ÉC(a)`(c)ð(a-2)(b-2)(c-2)ÉÅèµÄC(d)`(f)ÌgÝí¹ÅCÌ
+8ÂÌp^[ðeXg·éD
+
+(6) (d-1)(e-2)(f-1) ¨ ^XNØ·¦ÉæéJo[Â\
+
+(7) (d-1)(e-1)(f-2) ¨ ^XNáOÉæéJo[Â\
+
+(8) (d-2)(e-2)(f-2) ¨ Jo[sÂ
+	I(d-2)(e-1)(f-2)ÌeXgÍÈ­D
+
+(9) (d-3)(e-2)(f-2) ¨ Jo[sÂ
+	I(d-3)(e-1)(f-2)ÌeXgÍÈ­D
+
+(10) (d-4)(e-2)(f-2) ¨ Jo[sÂ
+	I(d-4)(e-1)(f-2)ÌeXgÍÈ­D
+
+(11) (d-1)(e-2)(f-2) ¨ ¼û@ÉæéJo[Â\
+
+(12) (d-1)(e-1)(f-1) ¨ Jo[sÂ
+		(d-2)`(d-4)~(e-1)~(f-1) ÌeXgi3p^[jÍÈ­D
+
+(13) (d-3)(e-2)(f-1) ¨ Jo[sÂ
+		(d-2),(d-4)~(e-2)~(f-1) ÌeXgi2p^[jÍÈ­D
+
+ygp\[Xz
+
+TASK1: TA_ACTCDæxC^XNáO[`o^
+TASK2: TA_NULLCDæx
+CPUEXC1: TA_NULL
+ALM1: TA_NULL
+
+Èã
Index: /asp_ewarm/asp-1.7.0/test/test_cpuexc1.c
===================================================================
--- /asp_ewarm/asp-1.7.0/test/test_cpuexc1.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/test_cpuexc1.c	(revision 61)
@@ -0,0 +1,190 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2009 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_cpuexc1.c 1577 2009-05-31 14:30:51Z ertl-hiro $
+ */
+
+/* 
+ *		CPUáOÌeXg(1)
+ *
+ * yeXgÌÚIz
+ *
+ *  ñ^XNReLXgCbNóÔÅ­¶µ½CPUáOÉ¨¯éVXe
+ *  óÔÌeXgDÝDæx}XNTIPM_ENAALLCfBXpb`Ö~ó
+ *  ÔC^XNáOÂóÔÅeXg·éD
+ *
+ * yeXgÚz
+ *
+ *  ¢¸êàCñ^XNReLXgCbNóÔÅ­¶µ½CPUáOÉ¨
+ *  ¢ÄC
+ *
+ *	(A) CPUáOnhÀsJnÉCPUbNtOªÏ»µÈ¢±Æ
+ *		IÝbNóÔÅ­¶µ½CPUáOÅÍCVXeóÔð³µ­Ç
+ *		ßé±ÆªÛØ³êÈ¢½ßCeXgÅ«È¢D
+ *	(B) CPUáOnhÀsJnÉÝDæx}XNªÏ»µÈ¢±Æ
+ *		IÝbNóÔÅ­¶µ½CPUáOÅÍCVXeóÔð³µ­Ç
+ *		ßé±ÆªÛØ³êÈ¢½ßCeXgÅ«È¢D
+ *	(C) CPUáOnhÀsJnÉfBXpb`Ö~tOªÏ»µÈ¢±Æ
+ *		IÝbNóÔÅ­¶µ½CPUáOÅÍCVXeóÔð³µ­Ç
+ *		ßé±ÆªÛØ³êÈ¢½ßCeXgÅ«È¢D
+ *	(D) CPUáOnhÀsJnÉ^XNáOÖ~tOªÏ»µÈ¢±Æ
+ *		IÝbNóÔÅ­¶µ½CPUáOÅÍCVXeóÔð³µ­Ç
+ *		ßé±ÆªÛØ³êÈ¢½ßCeXgÅ«È¢D
+ *	(E) CPUáOnh^[ÉCPUbNtOª³Éßé±Æ
+ *		ICPUáOnh©ç^[Å«éêÌÝeXg·éD
+ *	(F) CPUáOnh^[ÉÝDæx}XNª³Éßé±Æ
+ *		ICPUáOnh©ç^[Å«éêÌÝeXg·éD
+ *	(G) CPUáOnh^[ÉfBXpb`Ö~tOªÏ»µÈ¢±Æ
+ *		ICPUáOnh©ç^[Å«éêÌÝeXg·éD
+ *	(H) CPUáOnh^[É^XNáOÖ~tOªÏ»µÈ¢±Æ
+ *		ICPUáOnh©ç^[Å«éêÌÝeXg·éD
+ *	(I) xsns_xpnªtrueðÔ·±Æ
+ *	(J) xsns_dpnªtrueðÔ·±Æ
+ *
+ * ygp\[Xz
+ *
+ *	TASK1: TA_ACTCDæxC^XNáO[`o^
+ *	CPUEXC1: TA_NULL
+ *	ALM1: TA_NULL
+ *
+ * yeXgV[PXz
+ *
+ *	== TASK1iDæxj==
+ *	1:	óÔÌ`FbN
+ *		dis_dsp()
+ *		ena_tex()
+ *	2:	óÔÌ`FbN
+ *		sta_alm(ALM1, 1U)
+ *		A[nh1ÌÀsðÒÂ
+ *	== ALM1 ==
+ *	3:	óÔÌ`FbN
+ *		SIL_LOC_INT()
+ *		RAISE_CPU_EXCEPTION
+ *	== CPUEXC1 ==
+ *	4:	xsns_xpn() == true			... (I)
+ *		xsns_dpn() == true			... (J)
+ *	5:	CPUáOnh©ç^[Å«È¢êÍC±±ÅI¹
+ *	5:	^[
+ *	== ALM1i±«j==
+ *	6:	SIL_UNL_LOC()
+ *	7:	óÔÌ`FbN				... (E)(G)(H)
+ *		^[
+ *	== TASK1i±«j==
+ *	8:	óÔÌ`FbN				... (F)
+ *	9:	eXgI¹
+ */
+
+#include <sil.h>
+#include <kernel.h>
+#include <t_syslog.h>
+#include <test_lib.h>
+#include "kernel_cfg.h"
+#include "test_cpuexc.h"
+
+volatile bool_t	alm1_flag = false;
+
+void
+task1(intptr_t exinf)
+{
+	ER		ercd;
+
+	check_point(1);
+	check_state(false, false, TIPM_ENAALL, false, false, true);
+	ercd = dis_dsp();
+	check_ercd(ercd, E_OK);
+	ercd = ena_tex();
+	check_ercd(ercd, E_OK);
+
+	check_point(2);
+	check_state(false, false, TIPM_ENAALL, true, true, false);
+	ercd = sta_alm(ALM1, 1U);
+	check_ercd(ercd, E_OK);
+
+	while (!(alm1_flag));
+
+	check_point(8);
+	check_state(false, false, TIPM_ENAALL, true, true, false);
+
+	check_finish(9);
+}
+
+void
+tex_task1(TEXPTN texptn, intptr_t exinf)
+{
+	check_point(0);
+}
+
+void
+task2(intptr_t exinf)
+{
+	check_point(0);
+}
+
+void
+alarm1_handler(intptr_t exinf)
+{
+	SIL_PRE_LOC;
+
+	check_point(3);
+	check_state_i(true, false, true, true, false);
+	SIL_LOC_INT();
+	RAISE_CPU_EXCEPTION;
+
+	check_point(6);
+	SIL_UNL_INT();
+
+	check_point(7);
+	check_state_i(true, false, true, true, false);
+	alm1_flag = true;
+}
+
+void
+cpuexc_handler(void *p_excinf)
+{
+	check_point(4);
+	check_assert(xsns_xpn(p_excinf) == true);
+	check_assert(xsns_dpn(p_excinf) == true);
+
+#ifdef CANNOT_RETURN_CPUEXC
+	check_finish(5);
+#endif /* CANNOT_RETURN_CPUEXC */
+
+	check_point(5);
+}
Index: /asp_ewarm/asp-1.7.0/test/test_cpuexc10.c
===================================================================
--- /asp_ewarm/asp-1.7.0/test/test_cpuexc10.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/test_cpuexc10.c	(revision 61)
@@ -0,0 +1,164 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_cpuexc10.c 2005 2010-12-31 04:20:08Z ertl-hiro $
+ */
+
+/* 
+ *		CPUáOÌeXg(10)
+ *
+ * yeXgÌÚIz
+ *
+ *  ÝDæx}XNTMIN_INTPRI-1CfBXpb`ÂóÔC^XNáO
+ *  ÂóÔÅ­¶µ½CPUáOÉ¨¯éVXeóÔÌeXgD
+ *
+ *  ±ÌeXgÍCÝDæx}XNðTMIN_INTPRI-1ÉÝèÅ«éêÌÝ
+ *  À{·éD
+ *
+ * yeXgÚz
+ *
+ *  ¢¸êàCÝDæx}XNTMIN_INTPRI-1CfBXpb`ÂóÔC
+ *  ^XNáOÂóÔÅ­¶µ½CPUáOÉ¨¢ÄC
+ *
+ *	(A) CPUáOnhÀsJnÉCPUbNtOªÏ»µÈ¢±Æ
+ *	(B) CPUáOnhÀsJnÉÝDæx}XNªÏ»µÈ¢±Æ
+ *		ICPUáOnhÅÝDæx}XNðÇßÈ¢½ßCeXgÅ
+ *		«È¢D
+ *	(C) CPUáOnhÀsJnÉfBXpb`Ö~tOªÏ»µÈ¢±Æ
+ *	(D) CPUáOnhÀsJnÉ^XNáOÖ~tOªÏ»µÈ¢±Æ
+ *	(E) CPUáOnh^[ÉCPUbNtOª³Éßé±Æ
+ *		ICPUáOnh©ç^[Å«éêÌÝeXg·éD
+ *	(F) CPUáOnh^[ÉÝDæx}XNª³Éßé±Æ
+ *		ICPUáOnh©ç^[Å«éêÌÝeXg·éD
+ *	(G) CPUáOnh^[ÉfBXpb`Ö~tOªÏ»µÈ¢±Æ
+ *		ICPUáOnh©ç^[Å«éêÌÝeXg·éD
+ *	(H) CPUáOnh^[É^XNáOÖ~tOªÏ»µÈ¢±Æ
+ *		ICPUáOnh©ç^[Å«éêÌÝeXg·éD
+ *	(I) xsns_xpnªtrueðÔ·±Æ
+ *	(J) xsns_dpnªtrueðÔ·±Æ
+ *
+ * ygp\[Xz
+ *
+ *	TASK1: TA_ACTCDæxC^XNáO[`o^
+ *	CPUEXC1: TA_NULL
+ *
+ * yeXgV[PXz
+ *
+ *	== TASK1iDæxj==
+ *	1:	óÔÌ`FbN
+ *		chg_ipm(TMIN_INTPRI-1)
+ *		ena_tex()
+ *	2:	óÔÌ`FbN
+ *		RAISE_CPU_EXCEPTION
+ *	== CPUEXC1 ==
+ *	3:	óÔÌ`FbN				... (A)(C)(D)
+ *		xsns_xpn() == true			... (I)
+ *		xsns_dpn() == true			... (J)
+ *	4:	CPUáOnh©ç^[Å«È¢êÍC±±ÅI¹
+ *	4:	^[
+ *	== TASK1i±«j==
+ *	5:	óÔÌ`FbN				... (E)(F)(G)(H)
+ *	6:	eXgI¹
+ */
+
+#include <kernel.h>
+#include <test_lib.h>
+#include <t_syslog.h>
+#include "kernel_cfg.h"
+#include "test_cpuexc.h"
+
+void
+task1(intptr_t exinf)
+{
+	ER		ercd;
+
+	check_point(1);
+	check_state(false, false, TIPM_ENAALL, false, false, true);
+	ercd = chg_ipm(TMAX_INTPRI - 1);
+	if (ercd == E_PAR) {
+		syslog_0(LOG_NOTICE, "This test program is not necessary.");
+		ext_ker();
+	}
+	check_ercd(ercd, E_OK);
+	ercd = ena_tex();
+	check_ercd(ercd, E_OK);
+
+	check_point(2);
+	check_state(false, false, TMAX_INTPRI - 1, false, true, false);
+	RAISE_CPU_EXCEPTION;
+
+	check_point(5);
+	check_state(false, false, TMAX_INTPRI - 1, false, true, false);
+
+	check_finish(6);
+}
+
+void
+tex_task1(TEXPTN texptn, intptr_t exinf)
+{
+	check_point(0);
+}
+
+void
+task2(intptr_t exinf)
+{
+	check_point(0);
+}
+
+void
+alarm1_handler(intptr_t exinf)
+{
+	check_point(0);
+}
+
+void
+cpuexc_handler(void *p_excinf)
+{
+	check_point(3);
+	check_state_i(true, false, false, true, false);
+	check_assert(xsns_xpn(p_excinf) == true);
+	check_assert(xsns_dpn(p_excinf) == true);
+
+#ifdef CANNOT_RETURN_CPUEXC
+	check_finish(4);
+#endif /* CANNOT_RETURN_CPUEXC */
+
+	check_point(4);
+}
Index: /asp_ewarm/asp-1.7.0/test/test_cpuexc11.c
===================================================================
--- /asp_ewarm/asp-1.7.0/test/test_cpuexc11.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/test_cpuexc11.c	(revision 61)
@@ -0,0 +1,258 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2009 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_cpuexc11.c 2005 2010-12-31 04:20:08Z ertl-hiro $
+ */
+
+/* 
+ *		CPUáOÌeXg(11)
+ *
+ * yeXgÌÚIz
+ *
+ *  ÝDæx}XNTIPM_ENAALLCfBXpb`ÂóÔC^XNáO
+ *  ÂóÔÅ­¶µ½CPUáOÉ¨¯éVXeóÔÌeXgD^XNØ·¦É
+ *  æèJo[Å«é±ÆàeXg·éD
+ *
+ * yeXgÚz
+ *
+ *  ¢¸êàCÝDæx}XNTIPM_ENAALLCfBXpb`ÂóÔC^
+ *  XNáOÂóÔÅ­¶µ½CPUáOÉ¨¢ÄC
+ *
+ *	(A) CPUáOnhÀsJnÉCPUbNtOªÏ»µÈ¢±Æ
+ *	(B) CPUáOnhÀsJnÉÝDæx}XNªÏ»µÈ¢±Æ
+ *		ICPUáOnhÅÝDæx}XNðÇßÈ¢½ßCeXgÅ
+ *		«È¢D
+ *	(C) CPUáOnhÀsJnÉfBXpb`Ö~tOªÏ»µÈ¢±Æ
+ *	(D) CPUáOnhÀsJnÉ^XNáOÖ~tOªÏ»µÈ¢±Æ
+ *	(E) CPUáOnh^[ÉCPUbNtOª³Éßé±Æ
+ *	(F) CPUáOnh^[ÉÝDæx}XNª³Éßé±Æ
+ *	(G) CPUáOnh^[ÉfBXpb`Ö~tOªÏ»µÈ¢±Æ
+ *	(H) CPUáOnh^[É^XNáOÖ~tOªÏ»µÈ¢±Æ
+ *	(I) xsns_xpnªfalseðÔ·±Æ
+ *	(J) xsns_dpnªfalseðÔ·±Æ
+ *	(K) ^XNØ·¦ÉæéJo[ªÅ«é±Æ
+ *	(L) ^XNáOÉæéJo[ªÅ«é±Æ
+ *
+ * ygp\[Xz
+ *
+ *	TASK1: TA_ACTCDæxC^XNáO[`o^
+ *	TASK2: TA_NULLCDæx
+ *	CPUEXC1: TA_NULL
+ *
+ * yeXgV[PXz
+ *
+ *	== TASK1iDæxC1ñÚj==
+ *	1:	óÔÌ`FbN
+ *		ena_tex()
+ *	2:	óÔÌ`FbN
+ *		RAISE_CPU_EXCEPTION
+ *	== CPUEXC1i1ñÚj==
+ *	3:	óÔÌ`FbN				... (A)(C)(D)
+ *		xsns_xpn() == false			... (I)
+ *		xsns_dpn() == false			... (J)
+ *	4:	iact_tsk(TASK2)
+ *		iloc_cpu()
+ *		^[
+ *	== TASK2iDæxj==
+ *	5:	óÔÌ`FbN				... (E)(F)(G)(H)
+ *	6:	ter_tsk(TASK1)				... (K)
+ *	7:	act_tsk(TASK1)				... (K)
+ *	8:	ext_tsk()
+ *	== TASK1iDæxC2ñÚj==
+ *	9:	óÔÌ`FbN				... (K)
+ *		ena_tex()
+ *	10:	óÔÌ`FbN
+ *		RAISE_CPU_EXCEPTION
+ *	== CPUEXC1i2ñÚj==
+ *	11:	óÔÌ`FbN				... (A)(C)(D)
+ *		xsns_xpn() == false			... (I)
+ *		xsns_dpn() == false			... (J)
+ *	12:	iras_tex(TASK1, 1U)
+ *		iloc_cpu()
+ *		^[
+ *	== TASK1Ì^XNáO[` ==
+ *	13:	óÔÌ`FbN				... (E)(F)(G)(H)
+ *	14:	act_tsk(TASK1)				... (L)
+ *	15:	ext_tsk()					... (L)
+ *	== TASK1iDæxC3ñÚj==
+ *	16:	óÔÌ`FbN				... (L)
+ *	17:	eXgI¹
+ */
+
+#include <kernel.h>
+#include <test_lib.h>
+#include <t_syslog.h>
+#include "kernel_cfg.h"
+#include "test_cpuexc.h"
+
+int_t	task1_count = 0;
+
+void
+task1(intptr_t exinf)
+{
+	ER		ercd;
+
+	switch (++task1_count) {
+	case 1:
+		check_point(1);
+		check_state(false, false, TIPM_ENAALL, false, false, true);
+		ercd = ena_tex();
+		check_ercd(ercd, E_OK);
+
+		check_point(2);
+		check_state(false, false, TIPM_ENAALL, false, false, false);
+		RAISE_CPU_EXCEPTION;
+
+		check_point(0);
+		break;
+
+	case 2:
+		check_point(9);
+		check_state(false, false, TIPM_ENAALL, false, false, true);
+		ercd = ena_tex();
+		check_ercd(ercd, E_OK);
+
+		check_point(10);
+		check_state(false, false, TIPM_ENAALL, false, false, false);
+		RAISE_CPU_EXCEPTION;
+
+		check_point(0);
+		break;
+
+	case 3:
+		check_point(16);
+		check_state(false, false, TIPM_ENAALL, false, false, true);
+
+		check_finish(17);
+		break;
+
+	default:
+		check_point(0);
+		break;
+	}
+}
+
+void
+tex_task1(TEXPTN texptn, intptr_t exinf)
+{
+	ER		ercd;
+
+	check_point(13);
+	check_state(false, false, TIPM_ENAALL, false, false, true);
+
+	check_point(14);
+	ercd = act_tsk(TASK1);
+	check_ercd(ercd, E_OK);
+
+	check_point(15);
+	ercd = ext_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(0);
+}
+
+void
+task2(intptr_t exinf)
+{
+	ER		ercd;
+
+	check_point(5);
+	check_state(false, false, TIPM_ENAALL, false, false, true);
+
+	check_point(6);
+	ercd = ter_tsk(TASK1);
+	check_ercd(ercd, E_OK);
+
+	check_point(7);
+	ercd = act_tsk(TASK1);
+	check_ercd(ercd, E_OK);
+
+	check_point(8);
+	ercd = ext_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(0);
+}
+
+void
+alarm1_handler(intptr_t exinf)
+{
+	check_point(0);
+}
+
+int_t	cpuexc_count = 0;
+
+void
+cpuexc_handler(void *p_excinf)
+{
+	ER		ercd;
+
+	switch (++cpuexc_count) {
+	case 1:
+		check_point(3);
+		check_state_i(true, false, false, true, false);
+		check_assert(xsns_xpn(p_excinf) == false);
+		check_assert(xsns_dpn(p_excinf) == false);
+
+		check_point(4);
+		ercd = iact_tsk(TASK2);
+		check_ercd(ercd, E_OK);
+		ercd = iloc_cpu();
+		check_ercd(ercd, E_OK);
+		break;
+
+	case 2:
+		check_point(11);
+		check_state_i(true, false, false, true, false);
+		check_assert(xsns_xpn(p_excinf) == false);
+		check_assert(xsns_dpn(p_excinf) == false);
+
+		check_point(12);
+		ercd = iras_tex(TASK1, 1U);
+		check_ercd(ercd, E_OK);
+		ercd = iloc_cpu();
+		check_ercd(ercd, E_OK);
+		break;
+
+	default:
+		check_point(0);
+		break;
+	}
+}
Index: /asp_ewarm/asp-1.7.0/test/test_cpuexc12.c
===================================================================
--- /asp_ewarm/asp-1.7.0/test/test_cpuexc12.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/test_cpuexc12.c	(revision 61)
@@ -0,0 +1,154 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_cpuexc12.c 2005 2010-12-31 04:20:08Z ertl-hiro $
+ */
+
+/* 
+ *		CPUáOÌeXg(12)
+ *
+ * yeXgÌÚIz
+ *
+ *  ÝDæx}XNTIPM_ENAALLCfBXpb`Ö~óÔC^XNáOÖ
+ *  ~óÔÅ­¶µ½CPUáOÉ¨¯éVXeóÔÌeXgD
+ *
+ * yeXgÚz
+ *
+ *  ¢¸êàCÝDæx}XNTIPM_ENAALLCfBXpb`Ö~óÔC^
+ *  XNáOÖ~óÔÅ­¶µ½CPUáOÉ¨¢ÄC
+ *
+ *	(A) CPUáOnhÀsJnÉCPUbNtOªÏ»µÈ¢±Æ
+ *	(B) CPUáOnhÀsJnÉÝDæx}XNªÏ»µÈ¢±Æ
+ *		ICPUáOnhÅÝDæx}XNðÇßÈ¢½ßCeXgÅ
+ *		«È¢D
+ *	(C) CPUáOnhÀsJnÉfBXpb`Ö~tOªÏ»µÈ¢±Æ
+ *	(D) CPUáOnhÀsJnÉ^XNáOÖ~tOªÏ»µÈ¢±Æ
+ *	(E) CPUáOnh^[ÉCPUbNtOª³Éßé±Æ
+ *		ICPUáOnh©ç^[Å«éêÌÝeXg·éD
+ *	(F) CPUáOnh^[ÉÝDæx}XNª³Éßé±Æ
+ *		ICPUáOnh©ç^[Å«éêÌÝeXg·éD
+ *	(G) CPUáOnh^[ÉfBXpb`Ö~tOªÏ»µÈ¢±Æ
+ *		ICPUáOnh©ç^[Å«éêÌÝeXg·éD
+ *	(H) CPUáOnh^[É^XNáOÖ~tOªÏ»µÈ¢±Æ
+ *		ICPUáOnh©ç^[Å«éêÌÝeXg·éD
+ *	(I) xsns_xpnªtrueðÔ·±Æ
+ *	(J) xsns_dpnªtrueðÔ·±Æ
+ *
+ * ygp\[Xz
+ *
+ *	TASK1: TA_ACTCDæxC^XNáO[`o^
+ *	CPUEXC1: TA_NULL
+ *
+ * yeXgV[PXz
+ *
+ *	== TASK1iDæxj==
+ *	1:	óÔÌ`FbN
+ *		dis_dsp()
+ *	2:	óÔÌ`FbN
+ *		RAISE_CPU_EXCEPTION
+ *	== CPUEXC1 ==
+ *	3:	óÔÌ`FbN				... (A)(C)(D)
+ *		xsns_xpn() == true			... (I)
+ *		xsns_dpn() == true			... (J)
+ *	4:	CPUáOnh©ç^[Å«È¢êÍC±±ÅI¹
+ *	4:	^[
+ *	== TASK1i±«j==
+ *	5:	óÔÌ`FbN				... (E)(F)(G)(H)
+ *	6:	eXgI¹
+ */
+
+#include <kernel.h>
+#include <test_lib.h>
+#include <t_syslog.h>
+#include "kernel_cfg.h"
+#include "test_cpuexc.h"
+
+void
+task1(intptr_t exinf)
+{
+	ER		ercd;
+
+	check_point(1);
+	check_state(false, false, TIPM_ENAALL, false, false, true);
+	ercd = dis_dsp();
+	check_ercd(ercd, E_OK);
+
+	check_point(2);
+	check_state(false, false, TIPM_ENAALL, true, true, true);
+	RAISE_CPU_EXCEPTION;
+
+	check_point(5);
+	check_state(false, false, TIPM_ENAALL, true, true, true);
+
+	check_finish(6);
+}
+
+void
+tex_task1(TEXPTN texptn, intptr_t exinf)
+{
+	check_point(0);
+}
+
+void
+task2(intptr_t exinf)
+{
+	check_point(0);
+}
+
+void
+alarm1_handler(intptr_t exinf)
+{
+	check_point(0);
+}
+
+void
+cpuexc_handler(void *p_excinf)
+{
+	check_point(3);
+	check_state_i(true, false, true, true, true);
+	check_assert(xsns_xpn(p_excinf) == true);
+	check_assert(xsns_dpn(p_excinf) == true);
+
+#ifdef CANNOT_RETURN_CPUEXC
+	check_finish(4);
+#endif /* CANNOT_RETURN_CPUEXC */
+
+	check_point(4);
+}
Index: /asp_ewarm/asp-1.7.0/test/test_cpuexc13.c
===================================================================
--- /asp_ewarm/asp-1.7.0/test/test_cpuexc13.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/test_cpuexc13.c	(revision 61)
@@ -0,0 +1,154 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_cpuexc13.c 2005 2010-12-31 04:20:08Z ertl-hiro $
+ */
+
+/* 
+ *		CPUáOÌeXg(13)
+ *
+ * yeXgÌÚIz
+ *
+ *  ÝDæx}XNTMIN_INTPRICfBXpb`ÂóÔC^XNáOÖ
+ *  ~óÔÅ­¶µ½CPUáOÉ¨¯éVXeóÔÌeXgD
+ *
+ * yeXgÚz
+ *
+ *  ¢¸êàCÝDæx}XNTMIN_INTPRICfBXpb`ÂóÔC^
+ *  XNáOÖ~óÔÅ­¶µ½CPUáOÉ¨¢ÄC
+ *
+ *	(A) CPUáOnhÀsJnÉCPUbNtOªÏ»µÈ¢±Æ
+ *	(B) CPUáOnhÀsJnÉÝDæx}XNªÏ»µÈ¢±Æ
+ *		ICPUáOnhÅÝDæx}XNðÇßÈ¢½ßCeXgÅ
+ *		«È¢D
+ *	(C) CPUáOnhÀsJnÉfBXpb`Ö~tOªÏ»µÈ¢±Æ
+ *	(D) CPUáOnhÀsJnÉ^XNáOÖ~tOªÏ»µÈ¢±Æ
+ *	(E) CPUáOnh^[ÉCPUbNtOª³Éßé±Æ
+ *		ICPUáOnh©ç^[Å«éêÌÝeXg·éD
+ *	(F) CPUáOnh^[ÉÝDæx}XNª³Éßé±Æ
+ *		ICPUáOnh©ç^[Å«éêÌÝeXg·éD
+ *	(G) CPUáOnh^[ÉfBXpb`Ö~tOªÏ»µÈ¢±Æ
+ *		ICPUáOnh©ç^[Å«éêÌÝeXg·éD
+ *	(H) CPUáOnh^[É^XNáOÖ~tOªÏ»µÈ¢±Æ
+ *		ICPUáOnh©ç^[Å«éêÌÝeXg·éD
+ *	(I) xsns_xpnªtrueðÔ·±Æ
+ *	(J) xsns_dpnªtrueðÔ·±Æ
+ *
+ * ygp\[Xz
+ *
+ *	TASK1: TA_ACTCDæxC^XNáO[`o^
+ *	CPUEXC1: TA_NULL
+ *
+ * yeXgV[PXz
+ *
+ *	== TASK1iDæxj==
+ *	1:	óÔÌ`FbN
+ *		chg_ipm(TMIN_INTPRI)
+ *	2:	óÔÌ`FbN
+ *		RAISE_CPU_EXCEPTION
+ *	== CPUEXC1 ==
+ *	3:	óÔÌ`FbN				... (A)(C)(D)
+ *		xsns_xpn() == true			... (I)
+ *		xsns_dpn() == true			... (J)
+ *	4:	CPUáOnh©ç^[Å«È¢êÍC±±ÅI¹
+ *	4:	^[
+ *	== TASK1i±«j==
+ *	5:	óÔÌ`FbN				... (E)(F)(G)(H)
+ *	6:	eXgI¹
+ */
+
+#include <kernel.h>
+#include <test_lib.h>
+#include <t_syslog.h>
+#include "kernel_cfg.h"
+#include "test_cpuexc.h"
+
+void
+task1(intptr_t exinf)
+{
+	ER		ercd;
+
+	check_point(1);
+	check_state(false, false, TIPM_ENAALL, false, false, true);
+	ercd = chg_ipm(TMIN_INTPRI);
+	check_ercd(ercd, E_OK);
+
+	check_point(2);
+	check_state(false, false, TMIN_INTPRI, false, true, true);
+	RAISE_CPU_EXCEPTION;
+
+	check_point(5);
+	check_state(false, false, TMIN_INTPRI, false, true, true);
+
+	check_finish(6);
+}
+
+void
+tex_task1(TEXPTN texptn, intptr_t exinf)
+{
+	check_point(0);
+}
+
+void
+task2(intptr_t exinf)
+{
+	check_point(0);
+}
+
+void
+alarm1_handler(intptr_t exinf)
+{
+	check_point(0);
+}
+
+void
+cpuexc_handler(void *p_excinf)
+{
+	check_point(3);
+	check_state_i(true, false, false, true, true);
+	check_assert(xsns_xpn(p_excinf) == true);
+	check_assert(xsns_dpn(p_excinf) == true);
+
+#ifdef CANNOT_RETURN_CPUEXC
+	check_finish(4);
+#endif /* CANNOT_RETURN_CPUEXC */
+
+	check_point(4);
+}
Index: /asp_ewarm/asp-1.7.0/test/test_cpuexc2.c
===================================================================
--- /asp_ewarm/asp-1.7.0/test/test_cpuexc2.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/test_cpuexc2.c	(revision 61)
@@ -0,0 +1,182 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_cpuexc2.c 2005 2010-12-31 04:20:08Z ertl-hiro $
+ */
+
+/* 
+ *		CPUáOÌeXg(2)
+ *
+ * yeXgÌÚIz
+ *
+ *  ñ^XNReLXgCbNðCCPUbNóÔÅ­¶µ½CPUá
+ *  OÉ¨¯éVXeóÔÌeXgDÝDæx}XNTIPM_ENAALLCfB
+ *  Xpb`Ö~óÔC^XNáOÂóÔÅeXg·éD
+ *
+ * yeXgÚz
+ *
+ *  ¢¸êàCñ^XNReLXgCbNðCCPUbNóÔÅ­¶
+ *  µ½CPUáOÉ¨¢ÄC
+ *
+ *	(A) CPUáOnhÀsJnÉCPUbNtOªÏ»µÈ¢±Æ
+ *	(B) CPUáOnhÀsJnÉÝDæx}XNªÏ»µÈ¢±Æ
+ *		ICPUáOnhÅÝDæx}XNðÇßÈ¢½ßCeXgÅ
+ *		«È¢D
+ *	(C) CPUáOnhÀsJnÉfBXpb`Ö~tOªÏ»µÈ¢±Æ
+ *	(D) CPUáOnhÀsJnÉ^XNáOÖ~tOªÏ»µÈ¢±Æ
+ *	(E) CPUáOnh^[ÉCPUbNtOª³Éßé±Æ
+ *		ICPUáOnh©ç^[Å«éêÌÝeXg·éD
+ *	(F) CPUáOnh^[ÉÝDæx}XNª³Éßé±Æ
+ *		ICPUáOnh©ç^[Å«éêÌÝeXg·éD
+ *	(G) CPUáOnh^[ÉfBXpb`Ö~tOªÏ»µÈ¢±Æ
+ *		ICPUáOnh©ç^[Å«éêÌÝeXg·éD
+ *	(H) CPUáOnh^[É^XNáOÖ~tOªÏ»µÈ¢±Æ
+ *		ICPUáOnh©ç^[Å«éêÌÝeXg·éD
+ *	(I) xsns_xpnªtrueðÔ·±Æ
+ *	(J) xsns_dpnªtrueðÔ·±Æ
+ *
+ * ygp\[Xz
+ *
+ *	TASK1: TA_ACTCDæxC^XNáO[`o^
+ *	CPUEXC1: TA_NULL
+ *	ALM1: TA_NULL
+ *
+ * yeXgV[PXz
+ *
+ *	== TASK1iDæxj==
+ *	1:	óÔÌ`FbN
+ *		dis_dsp()
+ *		ena_tex()
+ *	2:	óÔÌ`FbN
+ *		sta_alm(ALM1, 1U)
+ *		A[nh1ÌÀsðÒÂ
+ *	== ALM1 ==
+ *	3:	óÔÌ`FbN
+ *		iloc_cpu()
+ *		RAISE_CPU_EXCEPTION
+ *	== CPUEXC1 ==
+ *	4:	óÔÌ`FbN				... (A)(C)(D)
+ *		xsns_xpn() == true			... (I)
+ *		xsns_dpn() == true			... (J)
+ *	5:	CPUáOnh©ç^[Å«È¢êÍC±±ÅI¹
+ *	5:	^[
+ *	== ALM1i±«j==
+ *	6:	óÔÌ`FbN				... (E)(G)(H)
+ *		^[
+ *	== TASK1i±«j==
+ *	7:	óÔÌ`FbN				... (F)
+ *	8:	eXgI¹
+ */
+
+#include <kernel.h>
+#include <test_lib.h>
+#include <t_syslog.h>
+#include "kernel_cfg.h"
+#include "test_cpuexc.h"
+
+volatile bool_t	alm1_flag = false;
+
+void
+task1(intptr_t exinf)
+{
+	ER		ercd;
+
+	check_point(1);
+	check_state(false, false, TIPM_ENAALL, false, false, true);
+	ercd = dis_dsp();
+	check_ercd(ercd, E_OK);
+	ercd = ena_tex();
+	check_ercd(ercd, E_OK);
+
+	check_point(2);
+	check_state(false, false, TIPM_ENAALL, true, true, false);
+	ercd = sta_alm(ALM1, 1U);
+	check_ercd(ercd, E_OK);
+
+	while (!(alm1_flag));
+
+	check_point(7);
+	check_state(false, false, TIPM_ENAALL, true, true, false);
+
+	check_finish(8);
+}
+
+void
+tex_task1(TEXPTN texptn, intptr_t exinf)
+{
+	check_point(0);
+}
+
+void
+task2(intptr_t exinf)
+{
+	check_point(0);
+}
+
+void
+alarm1_handler(intptr_t exinf)
+{
+	ER		ercd;
+
+	check_point(3);
+	check_state_i(true, false, true, true, false);
+	ercd = iloc_cpu();
+	check_ercd(ercd, E_OK);
+	RAISE_CPU_EXCEPTION;
+
+	check_point(6);
+	check_state_i(true, true, true, true, false);
+	alm1_flag = true;
+}
+
+void
+cpuexc_handler(void *p_excinf)
+{
+	check_point(4);
+	check_state_i(true, true, true, true, false);
+	check_assert(xsns_xpn(p_excinf) == true);
+	check_assert(xsns_dpn(p_excinf) == true);
+
+#ifdef CANNOT_RETURN_CPUEXC
+	check_finish(5);
+#endif /* CANNOT_RETURN_CPUEXC */
+
+	check_point(5);
+}
Index: /asp_ewarm/asp-1.7.0/test/test_cpuexc3.c
===================================================================
--- /asp_ewarm/asp-1.7.0/test/test_cpuexc3.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/test_cpuexc3.c	(revision 61)
@@ -0,0 +1,177 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_cpuexc3.c 2005 2010-12-31 04:20:08Z ertl-hiro $
+ */
+
+/* 
+ *		CPUáOÌeXg(3)
+ *
+ * yeXgÌÚIz
+ *
+ *  ñ^XNReLXgCbNðCCPUbNðÅ­¶µ½CPUá
+ *  OÉ¨¯éVXeóÔÌeXgDÝDæx}XNTIPM_ENAALLCfB
+ *  Xpb`Ö~óÔC^XNáOÂóÔÅeXg·éD
+ *
+ * yeXgÚz
+ *
+ *  ¢¸êàCñ^XNReLXgCbNðCCPUbNðÅ­¶
+ *  µ½CPUáOÉ¨¢ÄC
+ *
+ *	(A) CPUáOnhÀsJnÉCPUbNtOªÏ»µÈ¢±Æ
+ *	(B) CPUáOnhÀsJnÉÝDæx}XNªÏ»µÈ¢±Æ
+ *		ICPUáOnhÅÝDæx}XNðÇßÈ¢½ßCeXgÅ
+ *		«È¢D
+ *	(C) CPUáOnhÀsJnÉfBXpb`Ö~tOªÏ»µÈ¢±Æ
+ *	(D) CPUáOnhÀsJnÉ^XNáOÖ~tOªÏ»µÈ¢±Æ
+ *	(E) CPUáOnh^[ÉCPUbNtOª³Éßé±Æ
+ *		ICPUáOnh©ç^[Å«éêÌÝeXg·éD
+ *	(F) CPUáOnh^[ÉÝDæx}XNª³Éßé±Æ
+ *		ICPUáOnh©ç^[Å«éêÌÝeXg·éD
+ *	(G) CPUáOnh^[ÉfBXpb`Ö~tOªÏ»µÈ¢±Æ
+ *		ICPUáOnh©ç^[Å«éêÌÝeXg·éD
+ *	(H) CPUáOnh^[É^XNáOÖ~tOªÏ»µÈ¢±Æ
+ *		ICPUáOnh©ç^[Å«éêÌÝeXg·éD
+ *	(I) xsns_xpnªtrueðÔ·±Æ
+ *	(J) xsns_dpnªtrueðÔ·±Æ
+ *
+ * ygp\[Xz
+ *
+ *	TASK1: TA_ACTCDæxC^XNáO[`o^
+ *	CPUEXC1: TA_NULL
+ *	ALM1: TA_NULL
+ *
+ * yeXgV[PXz
+ *
+ *	== TASK1iDæxj==
+ *	1:	óÔÌ`FbN
+ *		dis_dsp()
+ *		ena_tex()
+ *	2:	óÔÌ`FbN
+ *		sta_alm(ALM1, 1U)
+ *		A[nh1ÌÀsðÒÂ
+ *	== ALM1 ==
+ *	3:	óÔÌ`FbN
+ *		RAISE_CPU_EXCEPTION
+ *	== CPUEXC1 ==
+ *	4:	óÔÌ`FbN				... (A)(C)(D)
+ *		xsns_xpn() == true			... (I)
+ *		xsns_dpn() == true			... (J)
+ *	5:	CPUáOnh©ç^[Å«È¢êÍC±±ÅI¹
+ *	5:	^[
+ *	== ALM1i±«j==
+ *	6:	óÔÌ`FbN				... (E)(G)(H)
+ *		^[
+ *	== TASK1i±«j==
+ *	7:	óÔÌ`FbN				... (F)
+ *	8:	eXgI¹
+ */
+
+#include <kernel.h>
+#include <test_lib.h>
+#include <t_syslog.h>
+#include "kernel_cfg.h"
+#include "test_cpuexc.h"
+
+volatile bool_t	alm1_flag = false;
+
+void
+task1(intptr_t exinf)
+{
+	ER		ercd;
+
+	check_point(1);
+	check_state(false, false, TIPM_ENAALL, false, false, true);
+	ercd = dis_dsp();
+	check_ercd(ercd, E_OK);
+	ercd = ena_tex();
+	check_ercd(ercd, E_OK);
+
+	check_point(2);
+	check_state(false, false, TIPM_ENAALL, true, true, false);
+	ercd = sta_alm(ALM1, 1U);
+	check_ercd(ercd, E_OK);
+
+	while (!(alm1_flag));
+
+	check_point(7);
+	check_state(false, false, TIPM_ENAALL, true, true, false);
+
+	check_finish(8);
+}
+
+void
+tex_task1(TEXPTN texptn, intptr_t exinf)
+{
+	check_point(0);
+}
+
+void
+task2(intptr_t exinf)
+{
+	check_point(0);
+}
+
+void
+alarm1_handler(intptr_t exinf)
+{
+	check_point(3);
+	check_state_i(true, false, true, true, false);
+	RAISE_CPU_EXCEPTION;
+
+	check_point(6);
+	check_state_i(true, false, true, true, false);
+	alm1_flag = true;
+}
+
+void
+cpuexc_handler(void *p_excinf)
+{
+	check_point(4);
+	check_state_i(true, false, true, true, false);
+	check_assert(xsns_xpn(p_excinf) == true);
+	check_assert(xsns_dpn(p_excinf) == true);
+
+#ifdef CANNOT_RETURN_CPUEXC
+	check_finish(5);
+#endif /* CANNOT_RETURN_CPUEXC */
+
+	check_point(5);
+}
Index: /asp_ewarm/asp-1.7.0/test/test_cpuexc4.c
===================================================================
--- /asp_ewarm/asp-1.7.0/test/test_cpuexc4.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/test_cpuexc4.c	(revision 61)
@@ -0,0 +1,170 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2009 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_cpuexc4.c 1577 2009-05-31 14:30:51Z ertl-hiro $
+ */
+
+/* 
+ *		CPUáOÌeXg(4)
+ *
+ * yeXgÌÚIz
+ *
+ *  ^XNReLXgCbNóÔÅ­¶µ½CPUáOÉ¨¯éVXe
+ *  óÔÌeXgDÝDæx}XNTIPM_ENAALLCfBXpb`Ö~óÔC
+ *  ^XNáOÂóÔÅeXg·éD
+ *
+ * yeXgÚz
+ *
+ *  ¢¸êàC^XNReLXgCbNóÔÅ­¶µ½CPUáOÉ¨¢
+ *  ÄC
+ *
+ *	(A) CPUáOnhÀsJnÉCPUbNtOªÏ»µÈ¢±Æ
+ *		IÝbNóÔÅ­¶µ½CPUáOÅÍCVXeóÔð³µ­Ç
+ *		ßé±ÆªÛØ³êÈ¢½ßCeXgÅ«È¢D
+ *	(B) CPUáOnhÀsJnÉÝDæx}XNªÏ»µÈ¢±Æ
+ *		IÝbNóÔÅ­¶µ½CPUáOÅÍCVXeóÔð³µ­Ç
+ *		ßé±ÆªÛØ³êÈ¢½ßCeXgÅ«È¢D
+ *	(C) CPUáOnhÀsJnÉfBXpb`Ö~tOªÏ»µÈ¢±Æ
+ *		IÝbNóÔÅ­¶µ½CPUáOÅÍCVXeóÔð³µ­Ç
+ *		ßé±ÆªÛØ³êÈ¢½ßCeXgÅ«È¢D
+ *	(D) CPUáOnhÀsJnÉ^XNáOÖ~tOªÏ»µÈ¢±Æ
+ *		IÝbNóÔÅ­¶µ½CPUáOÅÍCVXeóÔð³µ­Ç
+ *		ßé±ÆªÛØ³êÈ¢½ßCeXgÅ«È¢D
+ *	(E) CPUáOnh^[ÉCPUbNtOª³Éßé±Æ
+ *		ICPUáOnh©ç^[Å«éêÌÝeXg·éD
+ *	(F) CPUáOnh^[ÉÝDæx}XNª³Éßé±Æ
+ *		ICPUáOnh©ç^[Å«éêÌÝeXg·éD
+ *	(G) CPUáOnh^[ÉfBXpb`Ö~tOªÏ»µÈ¢±Æ
+ *		ICPUáOnh©ç^[Å«éêÌÝeXg·éD
+ *	(H) CPUáOnh^[É^XNáOÖ~tOªÏ»µÈ¢±Æ
+ *		ICPUáOnh©ç^[Å«éêÌÝeXg·éD
+ *	(I) xsns_xpnªtrueðÔ·±Æ
+ *	(J) xsns_dpnªtrueðÔ·±Æ
+ *
+ * ygp\[Xz
+ *
+ *	TASK1: TA_ACTCDæxC^XNáO[`o^
+ *	CPUEXC1: TA_NULL
+ *
+ * yeXgV[PXz
+ *
+ *	== TASK1iDæxj==
+ *	1:	óÔÌ`FbN
+ *		dis_dsp()
+ *		ena_tex()
+ *	2:	óÔÌ`FbN
+ *		SIL_LOC_INT()
+ *		RAISE_CPU_EXCEPTION
+ *	== CPUEXC1 ==
+ *	3:	xsns_xpn() == true			... (I)
+ *		xsns_dpn() == true			... (J)
+ *	4:	CPUáOnh©ç^[Å«È¢êÍC±±ÅI¹
+ *	4:	^[
+ *	== TASK1i±«j==
+ *	5:	SIL_UNL_LOC()
+ *	6:	óÔÌ`FbN				... (E)(F)(G)(H)
+ *	7:	eXgI¹
+ */
+
+#include <sil.h>
+#include <kernel.h>
+#include <test_lib.h>
+#include <t_syslog.h>
+#include "kernel_cfg.h"
+#include "test_cpuexc.h"
+
+void
+task1(intptr_t exinf)
+{
+	ER		ercd;
+	SIL_PRE_LOC;
+
+	check_point(1);
+	check_state(false, false, TIPM_ENAALL, false, false, true);
+	ercd = dis_dsp();
+	check_ercd(ercd, E_OK);
+	ercd = ena_tex();
+	check_ercd(ercd, E_OK);
+
+	check_point(2);
+	check_state(false, false, TIPM_ENAALL, true, true, false);
+	SIL_LOC_INT();
+	RAISE_CPU_EXCEPTION;
+
+	check_point(5);
+	SIL_UNL_INT();
+
+	check_point(6);
+	check_state(false, false, TIPM_ENAALL, true, true, false);
+
+	check_finish(7);
+}
+
+void
+tex_task1(TEXPTN texptn, intptr_t exinf)
+{
+	check_point(0);
+}
+
+void
+task2(intptr_t exinf)
+{
+	check_point(0);
+}
+
+void
+alarm1_handler(intptr_t exinf)
+{
+	check_point(0);
+}
+
+void
+cpuexc_handler(void *p_excinf)
+{
+	check_point(3);
+	check_assert(xsns_xpn(p_excinf) == true);
+	check_assert(xsns_dpn(p_excinf) == true);
+
+#ifdef CANNOT_RETURN_CPUEXC
+	check_finish(4);
+#endif /* CANNOT_RETURN_CPUEXC */
+
+	check_point(4);
+}
Index: /asp_ewarm/asp-1.7.0/test/test_cpuexc5.c
===================================================================
--- /asp_ewarm/asp-1.7.0/test/test_cpuexc5.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/test_cpuexc5.c	(revision 61)
@@ -0,0 +1,161 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2009 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_cpuexc5.c 1577 2009-05-31 14:30:51Z ertl-hiro $
+ */
+
+/* 
+ *		CPUáOÌeXg(5)
+ *
+ * yeXgÌÚIz
+ *
+ *  ^XNReLXgCbNðCCPUbNóÔÅ­¶µ½CPUáO
+ *  É¨¯éVXeóÔÌeXgDÝDæx}XNTIPM_ENAALLCfB
+ *  Xpb`Ö~óÔC^XNáOÂóÔÅeXg·éD
+ *
+ * yeXgÚz
+ *
+ *  ¢¸êàC^XNReLXgCbNðCCPUbNóÔÅ­¶µ
+ *  ½CPUáOÉ¨¢ÄC
+ *
+ *	(A) CPUáOnhÀsJnÉCPUbNtOªÏ»µÈ¢±Æ
+ *	(B) CPUáOnhÀsJnÉÝDæx}XNªÏ»µÈ¢±Æ
+ *		ICPUáOnhÅÝDæx}XNðÇßÈ¢½ßCeXgÅ
+ *		«È¢D
+ *	(C) CPUáOnhÀsJnÉfBXpb`Ö~tOªÏ»µÈ¢±Æ
+ *	(D) CPUáOnhÀsJnÉ^XNáOÖ~tOªÏ»µÈ¢±Æ
+ *	(E) CPUáOnh^[ÉCPUbNtOª³Éßé±Æ
+ *		ICPUáOnh©ç^[Å«éêÌÝeXg·éD
+ *	(F) CPUáOnh^[ÉÝDæx}XNª³Éßé±Æ
+ *		ICPUáOnh©ç^[Å«éêÌÝeXg·éD
+ *	(G) CPUáOnh^[ÉfBXpb`Ö~tOªÏ»µÈ¢±Æ
+ *		ICPUáOnh©ç^[Å«éêÌÝeXg·éD
+ *	(H) CPUáOnh^[É^XNáOÖ~tOªÏ»µÈ¢±Æ
+ *		ICPUáOnh©ç^[Å«éêÌÝeXg·éD
+ *	(I) xsns_xpnªtrueðÔ·±Æ
+ *	(J) xsns_dpnªtrueðÔ·±Æ
+ *
+ * ygp\[Xz
+ *
+ *	TASK1: TA_ACTCDæxC^XNáO[`o^
+ *	CPUEXC1: TA_NULL
+ *
+ * yeXgV[PXz
+ *
+ *	== TASK1iDæxj==
+ *	1:	óÔÌ`FbN
+ *		dis_dsp()
+ *		ena_tex()
+ *		loc_cpu()
+ *	2:	óÔÌ`FbN
+ *		RAISE_CPU_EXCEPTION
+ *	== CPUEXC1 ==
+ *	3:	óÔÌ`FbN				... (A)(C)(D)
+ *		xsns_xpn() == true			... (I)
+ *		xsns_dpn() == true			... (J)
+ *	4:	CPUáOnh©ç^[Å«È¢êÍC±±ÅI¹
+ *	4:	^[
+ *	== TASK1i±«j==
+ *	5:	óÔÌ`FbN				... (E)(F)(G)(H)
+ *	6:	eXgI¹
+ */
+
+#include <kernel.h>
+#include <test_lib.h>
+#include <t_syslog.h>
+#include "kernel_cfg.h"
+#include "test_cpuexc.h"
+
+void
+task1(intptr_t exinf)
+{
+	ER		ercd;
+
+	check_point(1);
+	check_state(false, false, TIPM_ENAALL, false, false, true);
+	ercd = dis_dsp();
+	check_ercd(ercd, E_OK);
+	ercd = ena_tex();
+	check_ercd(ercd, E_OK);
+	ercd = loc_cpu();
+	check_ercd(ercd, E_OK);
+
+	check_point(2);
+	check_state(false, true, TIPM_ENAALL, true, true, false);
+	RAISE_CPU_EXCEPTION;
+
+	check_point(5);
+	check_state(false, true, TIPM_ENAALL, true, true, false);
+
+	check_finish(6);
+}
+
+void
+tex_task1(TEXPTN texptn, intptr_t exinf)
+{
+	check_point(0);
+}
+
+void
+task2(intptr_t exinf)
+{
+	check_point(0);
+}
+
+void
+alarm1_handler(intptr_t exinf)
+{
+	check_point(0);
+}
+
+void
+cpuexc_handler(void *p_excinf)
+{
+	check_point(3);
+	check_state_i(true, true, true, true, false);
+	check_assert(xsns_xpn(p_excinf) == true);
+	check_assert(xsns_dpn(p_excinf) == true);
+
+#ifdef CANNOT_RETURN_CPUEXC
+	check_finish(4);
+#endif /* CANNOT_RETURN_CPUEXC */
+
+	check_point(4);
+}
Index: /asp_ewarm/asp-1.7.0/test/test_cpuexc6.c
===================================================================
--- /asp_ewarm/asp-1.7.0/test/test_cpuexc6.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/test_cpuexc6.c	(revision 61)
@@ -0,0 +1,185 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2009 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_cpuexc6.c 1577 2009-05-31 14:30:51Z ertl-hiro $
+ */
+
+/* 
+ *		CPUáOÌeXg(6)
+ *
+ * yeXgÌÚIz
+ *
+ *  ÝDæx}XNTIPM_ENAALLCfBXpb`ÂóÔC^XNáOÖ
+ *  ~óÔÅ­¶µ½CPUáOÉ¨¯éVXeóÔÌeXgD^XNØ·¦É
+ *  æèJo[Å«é±ÆàeXg·éD
+ *
+ * yeXgÚz
+ *
+ *  ¢¸êàCÝDæx}XNTIPM_ENAALLCfBXpb`ÂóÔC^
+ *  XNáOÖ~óÔÅ­¶µ½CPUáOÉ¨¢ÄC
+ *
+ *	(A) CPUáOnhÀsJnÉCPUbNtOªÏ»µÈ¢±Æ
+ *	(B) CPUáOnhÀsJnÉÝDæx}XNªÏ»µÈ¢±Æ
+ *		ICPUáOnhÅÝDæx}XNðÇßÈ¢½ßCeXgÅ
+ *		«È¢D
+ *	(C) CPUáOnhÀsJnÉfBXpb`Ö~tOªÏ»µÈ¢±Æ
+ *	(D) CPUáOnhÀsJnÉ^XNáOÖ~tOªÏ»µÈ¢±Æ
+ *	(E) CPUáOnh^[ÉCPUbNtOª³Éßé±Æ
+ *	(F) CPUáOnh^[ÉÝDæx}XNª³Éßé±Æ
+ *	(G) CPUáOnh^[ÉfBXpb`Ö~tOªÏ»µÈ¢±Æ
+ *	(H) CPUáOnh^[É^XNáOÖ~tOªÏ»µÈ¢±Æ
+ *	(I) xsns_xpnªtrueðÔ·±Æ
+ *	(J) xsns_dpnªfalseðÔ·±Æ
+ *	(K) ^XNØ·¦ÉæéJo[ªÅ«é±Æ
+ *
+ * ygp\[Xz
+ *
+ *	TASK1: TA_ACTCDæxC^XNáO[`o^
+ *	TASK2: TA_NULLCDæx
+ *	CPUEXC1: TA_NULL
+ *
+ * yeXgV[PXz
+ *
+ *	== TASK1iDæxC1ñÚj==
+ *	1:	óÔÌ`FbN
+ *	2:	RAISE_CPU_EXCEPTION
+ *	== CPUEXC1 ==
+ *	3:	óÔÌ`FbN				... (A),(C),(D)
+ *		xsns_xpn() == true			... (I)
+ *		xsns_dpn() == false			... (J)
+ *  4:	iact_tsk(TASK2)
+ *		iloc_cpu()
+ *  	^[
+ *	== TASK2iDæxj==
+ *	5:	óÔÌ`FbN				... (E),(F),(G),(H)
+ *	6:	ter_tsk(TASK1)				... (K)
+ *	7:	act_tsk(TASK1)				... (K)
+ *	8:	ext_tsk()
+ *	== TASK1iDæxC2ñÚj==
+ *	9:	óÔÌ`FbN				... (K)
+ *	10:	eXgI¹
+ */
+
+#include <kernel.h>
+#include <test_lib.h>
+#include <t_syslog.h>
+#include "kernel_cfg.h"
+#include "test_cpuexc.h"
+
+int_t	task1_count = 0;
+
+void
+task1(intptr_t exinf)
+{
+	switch (++task1_count) {
+	case 1:
+		check_point(1);
+		check_state(false, false, TIPM_ENAALL, false, false, true);
+
+		check_point(2);
+		RAISE_CPU_EXCEPTION;
+
+		check_point(0);
+		break;
+
+	case 2:
+		check_point(9);
+		check_state(false, false, TIPM_ENAALL, false, false, true);
+
+		check_finish(10);
+		break;
+
+	default:
+		check_point(0);
+		break;
+	}
+}
+
+void
+tex_task1(TEXPTN texptn, intptr_t exinf)
+{
+	check_point(0);
+}
+
+void
+task2(intptr_t exinf)
+{
+	ER		ercd;
+
+	check_point(5);
+	check_state(false, false, TIPM_ENAALL, false, false, true);
+
+	check_point(6);
+	ercd = ter_tsk(TASK1);
+	check_ercd(ercd, E_OK);
+
+	check_point(7);
+	ercd = act_tsk(TASK1);
+	check_ercd(ercd, E_OK);
+
+	check_point(8);
+	ercd = ext_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(0);
+}
+
+void
+alarm1_handler(intptr_t exinf)
+{
+	check_point(0);
+}
+
+void
+cpuexc_handler(void *p_excinf)
+{
+	ER		ercd;
+
+	check_point(3);
+	check_state_i(true, false, false, true, true);
+	check_assert(xsns_xpn(p_excinf) == true);
+	check_assert(xsns_dpn(p_excinf) == false);
+
+	check_point(4);
+	ercd = iact_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+	ercd = iloc_cpu();
+	check_ercd(ercd, E_OK);
+}
Index: /asp_ewarm/asp-1.7.0/test/test_cpuexc7.c
===================================================================
--- /asp_ewarm/asp-1.7.0/test/test_cpuexc7.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/test_cpuexc7.c	(revision 61)
@@ -0,0 +1,189 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2009 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_cpuexc7.c 1577 2009-05-31 14:30:51Z ertl-hiro $
+ */
+
+/* 
+ *		CPUáOÌeXg(7)
+ *
+ * yeXgÌÚIz
+ *
+ *  ÝDæx}XNTIPM_ENAALLCfBXpb`Ö~óÔC^XNáO
+ *  ÂóÔÅ­¶µ½CPUáOÉ¨¯éVXeóÔÌeXgD^XNáOÉæ
+ *  èJo[Å«é±ÆàeXg·éD
+ *
+ * yeXgÚz
+ *
+ *  ¢¸êàCÝDæx}XNTIPM_ENAALLCfBXpb`Ö~óÔC^
+ *  XNáOÂóÔÅ­¶µ½CPUáOÉ¨¢ÄC
+ *
+ *	(A) CPUáOnhÀsJnÉCPUbNtOªÏ»µÈ¢±Æ
+ *	(B) CPUáOnhÀsJnÉÝDæx}XNªÏ»µÈ¢±Æ
+ *		ICPUáOnhÅÝDæx}XNðÇßÈ¢½ßCeXgÅ
+ *		«È¢D
+ *	(C) CPUáOnhÀsJnÉfBXpb`Ö~tOªÏ»µÈ¢±Æ
+ *	(D) CPUáOnhÀsJnÉ^XNáOÖ~tOªÏ»µÈ¢±Æ
+ *	(E) CPUáOnh^[ÉCPUbNtOª³Éßé±Æ
+ *	(F) CPUáOnh^[ÉÝDæx}XNª³Éßé±Æ
+ *	(G) CPUáOnh^[ÉfBXpb`Ö~tOªÏ»µÈ¢±Æ
+ *	(H) CPUáOnh^[É^XNáOÖ~tOªÏ»µÈ¢±Æ
+ *	(I) xsns_xpnªfalseðÔ·±Æ
+ *	(J) xsns_dpnªtrueðÔ·±Æ
+ *	(L) ^XNáOÉæéJo[ªÅ«é±Æ
+ *
+ * ygp\[Xz
+ *
+ *	TASK1: TA_ACTCDæxC^XNáO[`o^
+ *	CPUEXC1: TA_NULL
+ *
+ * yeXgV[PXz
+ *
+ *	== TASK1iDæxC1ñÚj==
+ *	1:	óÔÌ`FbN
+ *		dis_dsp()
+ *		ena_tex()
+ *	2:	óÔÌ`FbN
+ *		RAISE_CPU_EXCEPTION
+ *	== CPUEXC1 ==
+ *	3:	óÔÌ`FbN				... (A),(C),(D)
+ *		xsns_xpn() == false			... (I)
+ *		xsns_dpn() == true			... (J)
+ *	4:	iras_tex(TASK1, 1U)
+ *		iloc_cpu()
+ *		^[
+ *	== TASK1Ì^XNáO[` ==
+ *	5:	óÔÌ`FbN				... (E),(F),(G),(H)
+ *	6:	act_tsk(TASK1)				... (L)
+ *	7:	ext_tsk()					... (L)
+ *	== TASK1iDæxC2ñÚj==
+ *	8:	óÔÌ`FbN				... (L)
+ *	9:	eXgI¹
+ */
+
+#include <kernel.h>
+#include <test_lib.h>
+#include <t_syslog.h>
+#include "kernel_cfg.h"
+#include "test_cpuexc.h"
+
+int_t	task1_count = 0;
+
+void
+task1(intptr_t exinf)
+{
+	ER		ercd;
+
+	switch (++task1_count) {
+	case 1:
+		check_point(1);
+		check_state(false, false, TIPM_ENAALL, false, false, true);
+		ercd = dis_dsp();
+		check_ercd(ercd, E_OK);
+		ercd = ena_tex();
+		check_ercd(ercd, E_OK);
+
+		check_point(2);
+		check_state(false, false, TIPM_ENAALL, true, true, false);
+		RAISE_CPU_EXCEPTION;
+
+		check_point(0);
+		break;
+
+	case 2:
+		check_point(8);
+		check_state(false, false, TIPM_ENAALL, false, false, true);
+
+		check_finish(9);
+		break;
+
+	default:
+		check_point(0);
+		break;
+	}
+}
+
+void
+tex_task1(TEXPTN texptn, intptr_t exinf)
+{
+	ER		ercd;
+
+	check_point(5);
+	check_state(false, false, TIPM_ENAALL, true, true, true);
+
+	check_point(6);
+	ercd = act_tsk(TASK1);
+	check_ercd(ercd, E_OK);
+
+	check_point(7);
+	ercd = ext_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(0);
+}
+
+void
+task2(intptr_t exinf)
+{
+	check_point(0);
+}
+
+void
+alarm1_handler(intptr_t exinf)
+{
+	check_point(0);
+}
+
+void
+cpuexc_handler(void *p_excinf)
+{
+	ER		ercd;
+
+	check_point(3);
+	check_state_i(true, false, true, true, false);
+	check_assert(xsns_xpn(p_excinf) == false);
+	check_assert(xsns_dpn(p_excinf) == true);
+
+	check_point(4);
+	ercd = iras_tex(TASK1, 1U);
+	check_ercd(ercd, E_OK);
+	ercd = iloc_cpu();
+	check_ercd(ercd, E_OK);
+}
Index: /asp_ewarm/asp-1.7.0/test/test_cpuexc8.c
===================================================================
--- /asp_ewarm/asp-1.7.0/test/test_cpuexc8.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/test_cpuexc8.c	(revision 61)
@@ -0,0 +1,164 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_cpuexc8.c 2005 2010-12-31 04:20:08Z ertl-hiro $
+ */
+
+/* 
+ *		CPUáOÌeXg(8)
+ *
+ * yeXgÌÚIz
+ *
+ *  ÝDæx}XNTMAX_INTPRICfBXpb`ÂóÔC^XNáO
+ *  ÂóÔÅ­¶µ½CPUáOÉ¨¯éVXeóÔÌeXgD
+ *
+ *  ±ÌeXgÍCTMAX_INTPRIÆTMIN_INTPRIªÙÈéêÌÝÀ{·éD
+ *
+ * yeXgÚz
+ *
+ *  ¢¸êàCÝDæx}XNTMAX_INTPRICfBXpb`ÂóÔC^
+ *  XNáOÂóÔÅ­¶µ½CPUáOÉ¨¢ÄC
+ *
+ *	(A) CPUáOnhÀsJnÉCPUbNtOªÏ»µÈ¢±Æ
+ *	(B) CPUáOnhÀsJnÉÝDæx}XNªÏ»µÈ¢±Æ
+ *		ICPUáOnhÅÝDæx}XNðÇßÈ¢½ßCeXgÅ
+ *		«È¢D
+ *	(C) CPUáOnhÀsJnÉfBXpb`Ö~tOªÏ»µÈ¢±Æ
+ *	(D) CPUáOnhÀsJnÉ^XNáOÖ~tOªÏ»µÈ¢±Æ
+ *	(E) CPUáOnh^[ÉCPUbNtOª³Éßé±Æ
+ *		ICPUáOnh©ç^[Å«éêÌÝeXg·éD
+ *	(F) CPUáOnh^[ÉÝDæx}XNª³Éßé±Æ
+ *		ICPUáOnh©ç^[Å«éêÌÝeXg·éD
+ *	(G) CPUáOnh^[ÉfBXpb`Ö~tOªÏ»µÈ¢±Æ
+ *		ICPUáOnh©ç^[Å«éêÌÝeXg·éD
+ *	(H) CPUáOnh^[É^XNáOÖ~tOªÏ»µÈ¢±Æ
+ *		ICPUáOnh©ç^[Å«éêÌÝeXg·éD
+ *	(I) xsns_xpnªtrueðÔ·±Æ
+ *	(J) xsns_dpnªtrueðÔ·±Æ
+ *
+ * ygp\[Xz
+ *
+ *	TASK1: TA_ACTCDæxC^XNáO[`o^
+ *	CPUEXC1: TA_NULL
+ *
+ * yeXgV[PXz
+ *
+ *	== TASK1iDæxj==
+ *	1:	óÔÌ`FbN
+ *		chg_ipm(TMAX_INTPRI)
+ *		ena_tex()
+ *	2:	óÔÌ`FbN
+ *		RAISE_CPU_EXCEPTION
+ *	== CPUEXC1 ==
+ *	3:	óÔÌ`FbN				... (A)(C)(D)
+ *		xsns_xpn() == true			... (I)
+ *		xsns_dpn() == true			... (J)
+ *	4:	CPUáOnh©ç^[Å«È¢êÍC±±ÅI¹
+ *	4:	^[
+ *	== TASK1i±«j==
+ *	5:	óÔÌ`FbN				... (E)(F)(G)(H)
+ *	6:	eXgI¹
+ */
+
+#include <kernel.h>
+#include <test_lib.h>
+#include <t_syslog.h>
+#include "kernel_cfg.h"
+#include "test_cpuexc.h"
+
+void
+task1(intptr_t exinf)
+{
+	ER		ercd;
+
+	if (TMAX_INTPRI == TMIN_INTPRI) {
+		syslog_0(LOG_NOTICE, "This test program is not necessary.");
+		ext_ker();
+	}
+
+	check_point(1);
+	check_state(false, false, TIPM_ENAALL, false, false, true);
+	ercd = chg_ipm(TMAX_INTPRI);
+	check_ercd(ercd, E_OK);
+	ercd = ena_tex();
+	check_ercd(ercd, E_OK);
+
+	check_point(2);
+	check_state(false, false, TMAX_INTPRI, false, true, false);
+	RAISE_CPU_EXCEPTION;
+
+	check_point(5);
+	check_state(false, false, TMAX_INTPRI, false, true, false);
+
+	check_finish(6);
+}
+
+void
+tex_task1(TEXPTN texptn, intptr_t exinf)
+{
+	check_point(0);
+}
+
+void
+task2(intptr_t exinf)
+{
+	check_point(0);
+}
+
+void
+alarm1_handler(intptr_t exinf)
+{
+	check_point(0);
+}
+
+void
+cpuexc_handler(void *p_excinf)
+{
+	check_point(3);
+	check_state_i(true, false, false, true, false);
+	check_assert(xsns_xpn(p_excinf) == true);
+	check_assert(xsns_dpn(p_excinf) == true);
+
+#ifdef CANNOT_RETURN_CPUEXC
+	check_finish(4);
+#endif /* CANNOT_RETURN_CPUEXC */
+
+	check_point(4);
+}
Index: /asp_ewarm/asp-1.7.0/test/test_cpuexc9.c
===================================================================
--- /asp_ewarm/asp-1.7.0/test/test_cpuexc9.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/test_cpuexc9.c	(revision 61)
@@ -0,0 +1,157 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_cpuexc9.c 2005 2010-12-31 04:20:08Z ertl-hiro $
+ */
+
+/* 
+ *		CPUáOÌeXg(9)
+ *
+ * yeXgÌÚIz
+ *
+ *  ÝDæx}XNTMIN_INTPRICfBXpb`ÂóÔC^XNáO
+ *  ÂóÔÅ­¶µ½CPUáOÉ¨¯éVXeóÔÌeXgD
+ *
+ * yeXgÚz
+ *
+ *  ¢¸êàCÝDæx}XNTMIN_INTPRICfBXpb`ÂóÔC^
+ *  XNáOÂóÔÅ­¶µ½CPUáOÉ¨¢ÄC
+ *
+ *	(A) CPUáOnhÀsJnÉCPUbNtOªÏ»µÈ¢±Æ
+ *	(B) CPUáOnhÀsJnÉÝDæx}XNªÏ»µÈ¢±Æ
+ *		ICPUáOnhÅÝDæx}XNðÇßÈ¢½ßCeXgÅ
+ *		«È¢D
+ *	(C) CPUáOnhÀsJnÉfBXpb`Ö~tOªÏ»µÈ¢±Æ
+ *	(D) CPUáOnhÀsJnÉ^XNáOÖ~tOªÏ»µÈ¢±Æ
+ *	(E) CPUáOnh^[ÉCPUbNtOª³Éßé±Æ
+ *		ICPUáOnh©ç^[Å«éêÌÝeXg·éD
+ *	(F) CPUáOnh^[ÉÝDæx}XNª³Éßé±Æ
+ *		ICPUáOnh©ç^[Å«éêÌÝeXg·éD
+ *	(G) CPUáOnh^[ÉfBXpb`Ö~tOªÏ»µÈ¢±Æ
+ *		ICPUáOnh©ç^[Å«éêÌÝeXg·éD
+ *	(H) CPUáOnh^[É^XNáOÖ~tOªÏ»µÈ¢±Æ
+ *		ICPUáOnh©ç^[Å«éêÌÝeXg·éD
+ *	(I) xsns_xpnªtrueðÔ·±Æ
+ *	(J) xsns_dpnªtrueðÔ·±Æ
+ *
+ * ygp\[Xz
+ *
+ *	TASK1: TA_ACTCDæxC^XNáO[`o^
+ *	CPUEXC1: TA_NULL
+ *
+ * yeXgV[PXz
+ *
+ *	== TASK1iDæxj==
+ *	1:	óÔÌ`FbN
+ *		chg_ipm(TMIN_INTPRI)
+ *		ena_tex()
+ *	2:	óÔÌ`FbN
+ *		RAISE_CPU_EXCEPTION
+ *	== CPUEXC1 ==
+ *	3:	óÔÌ`FbN				... (A)(C)(D)
+ *		xsns_xpn() == true			... (I)
+ *		xsns_dpn() == true			... (J)
+ *	4:	CPUáOnh©ç^[Å«È¢êÍC±±ÅI¹
+ *	4:	^[
+ *	== TASK1i±«j==
+ *	5:	óÔÌ`FbN				... (E)(F)(G)(H)
+ *	6:	eXgI¹
+ */
+
+#include <kernel.h>
+#include <test_lib.h>
+#include <t_syslog.h>
+#include "kernel_cfg.h"
+#include "test_cpuexc.h"
+
+void
+task1(intptr_t exinf)
+{
+	ER		ercd;
+
+	check_point(1);
+	check_state(false, false, TIPM_ENAALL, false, false, true);
+	ercd = chg_ipm(TMIN_INTPRI);
+	check_ercd(ercd, E_OK);
+	ercd = ena_tex();
+	check_ercd(ercd, E_OK);
+
+	check_point(2);
+	check_state(false, false, TMIN_INTPRI, false, true, false);
+	RAISE_CPU_EXCEPTION;
+
+	check_point(5);
+	check_state(false, false, TMIN_INTPRI, false, true, false);
+
+	check_finish(6);
+}
+
+void
+tex_task1(TEXPTN texptn, intptr_t exinf)
+{
+	check_point(0);
+}
+
+void
+task2(intptr_t exinf)
+{
+	check_point(0);
+}
+
+void
+alarm1_handler(intptr_t exinf)
+{
+	check_point(0);
+}
+
+void
+cpuexc_handler(void *p_excinf)
+{
+	check_point(3);
+	check_state_i(true, false, false, true, false);
+	check_assert(xsns_xpn(p_excinf) == true);
+	check_assert(xsns_dpn(p_excinf) == true);
+
+#ifdef CANNOT_RETURN_CPUEXC
+	check_finish(4);
+#endif /* CANNOT_RETURN_CPUEXC */
+
+	check_point(4);
+}
Index: /asp_ewarm/asp-1.7.0/test/test_dlynse.c
===================================================================
--- /asp_ewarm/asp-1.7.0/test/test_dlynse.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/test_dlynse.c	(revision 61)
@@ -0,0 +1,122 @@
+/*
+ *  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) 2007-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_dlynse.c 1803 2010-06-20 08:55:06Z ertl-hiro $
+ */
+
+/*
+ *		sil_dly_nseÉÖ·éeXg
+ */
+
+#include <kernel.h>
+#include <sil.h>
+#include <test_lib.h>
+#include <t_syslog.h>
+#include "kernel_cfg.h"
+#include "test_dlynse.h"
+
+/*
+ *  SIL_DLY_TIM1ÆSIL_DLY_TIM2ðQÆ·é½ßÉCJ[lpÌwb_t@
+ *  CðCN[h·éD
+ */
+#include "kernel/kernel_impl.h"
+
+#define	NO_LOOP		ULONG_C(1000000)
+
+SYSTIM	empty_time;
+
+static void
+test_empty(void)
+{
+	SYSTIM	stime, etime;
+	volatile ulong_t	i;
+
+	get_tim(&stime);
+	for (i = 0; i < NO_LOOP; i++) {
+	}
+	get_tim(&etime);
+	empty_time = etime - stime;
+	syslog(LOG_NOTICE, "empty loop: %u", empty_time);
+	syslog_flush();
+}
+
+static void
+test_dly_nse(ulong_t dlytim)
+{
+	SYSTIM	stime, etime, delay_time;
+	volatile ulong_t	i;
+
+	get_tim(&stime);
+	for (i = 0; i < NO_LOOP; i++) {
+		sil_dly_nse(dlytim);
+	}
+	get_tim(&etime);
+	delay_time = (etime - stime) - empty_time;
+	syslog(LOG_NOTICE, "sil_dly_nse(%u): %u %s", (uint_t)(dlytim),
+				(uint_t)(delay_time), delay_time > dlytim ? "OK" : "NG");
+	syslog_flush();
+}
+
+void
+main_task(intptr_t exinf)
+{
+	test_empty();
+
+	syslog(LOG_NOTICE, "-- for fitting parameters --");
+	test_dly_nse(0);
+	test_dly_nse(SIL_DLY_TIM1);
+	test_dly_nse(SIL_DLY_TIM1 + SIL_DLY_TIM2 * 1);
+	test_dly_nse(SIL_DLY_TIM1 + SIL_DLY_TIM2 * 2);
+	test_dly_nse(SIL_DLY_TIM1 + SIL_DLY_TIM2 * 3);
+	test_dly_nse(SIL_DLY_TIM1 + SIL_DLY_TIM2 * 4);
+	test_dly_nse(SIL_DLY_TIM1 + SIL_DLY_TIM2 * 5);
+	test_dly_nse(SIL_DLY_TIM1 + SIL_DLY_TIM2 * 10);
+	test_dly_nse(SIL_DLY_TIM1 + SIL_DLY_TIM2 * 20);
+	test_dly_nse(SIL_DLY_TIM1 + SIL_DLY_TIM2 * 50);
+
+	syslog(LOG_NOTICE, "-- for checking boundary conditions --");
+	test_dly_nse(SIL_DLY_TIM1 + 1);
+	test_dly_nse(SIL_DLY_TIM1 + SIL_DLY_TIM2 * 1 + 1);
+	test_dly_nse(SIL_DLY_TIM1 + SIL_DLY_TIM2 * 2 + 1);
+
+	test_finish();
+}
Index: /asp_ewarm/asp-1.7.0/test/test_dlynse.cfg
===================================================================
--- /asp_ewarm/asp-1.7.0/test/test_dlynse.cfg	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/test_dlynse.cfg	(revision 61)
@@ -0,0 +1,15 @@
+/*
+ *  @(#) $Id: test_dlynse.cfg 1572 2009-05-31 13:40:39Z ertl-hiro $
+ */
+
+/*
+ *  sil_dly_nseÉÖ·éeXgÌVXeRtBM
+[Vt@C
+ */
+INCLUDE("target_timer.cfg");
+INCLUDE("syssvc/syslog.cfg");
+INCLUDE("syssvc/banner.cfg");
+INCLUDE("syssvc/serial.cfg");
+
+#include "test_dlynse.h"
+CRE_TSK(MAIN_TASK, { TA_ACT, 0, main_task, MAIN_PRIORITY, STACK_SIZE, NULL });
Index: /asp_ewarm/asp-1.7.0/test/test_dlynse.h
===================================================================
--- /asp_ewarm/asp-1.7.0/test/test_dlynse.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/test_dlynse.h	(revision 61)
@@ -0,0 +1,72 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2006,2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_dlynse.h 329 2007-07-17 07:28:32Z hiro $
+ */
+
+/*
+ *		sil_dly_nseÉÖ·éeXg
+ */
+
+/*
+ *  ^[QbgË¶Ìè`
+ */
+#include "target_test.h"
+
+/*
+ *  e^XNÌDæxÌè`
+ */
+#define MAIN_PRIORITY	10
+
+/*
+ *  ^[QbgÉË¶·éÂ\«Ì éèÌè`
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ^XNÌX^bNTCY */
+#endif /* STACK_SIZE */
+
+/*
+ *  ÖÌvg^Cvé¾
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+extern void	main_task(intptr_t exinf);
+
+#endif /* TOPPERS_MACRO_ONLY */
Index: /asp_ewarm/asp-1.7.0/test/test_sem1.c
===================================================================
--- /asp_ewarm/asp-1.7.0/test/test_sem1.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/test_sem1.c	(revision 61)
@@ -0,0 +1,602 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2008,2009 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_sem1.c 1577 2009-05-31 14:30:51Z ertl-hiro $
+ */
+
+/* 
+ *		Z}tH@\ÌeXg(1)
+ *
+ * yeXgÌÚIz
+ *
+ *  sig_semCwai_semCCRE_SEMðÔ
+IÉeXg·éD
+ *  ½¾µCCRE_SEMÌG[ÌeXgÍ­D
+ *
+ * yeXgÚz
+ *
+ *	(A) sig_semÌÃIG[ÌeXg
+ *		(A-1) ñ^XNReLXg©çÌÄoµ
+ *		(A-2) CPUbNóÔ©çÌÄoµ
+ *		(A-3) semidªs³i¬³·¬éj
+ *		(A-4) semidªs³iå«·¬éj
+ *	(B) sig_semÉæèZ}tHÒ¿óÔÌ^XNªÒ¿ð³êé
+ *		(B-1) Ò¿ð³ê½^XNÉØè·íé
+ *		(B-2) fBXpb`Û¯óÔÅCØè·íçÈ¢
+ *		(B-3) Ò¿ð³ê½^XNª­§Ò¿óÔÅCØè·íçÈ¢
+ *		(B-4) Ò¿ð³ê½^XNªDæxªá­CØè·íçÈ¢
+ *	(C) sig_semÉæèZ}tHÌ¹ª1¦é
+ *		(C-1) Z}tHÌ¹ª0©ç1ÉÈé
+ *		(C-2) Z}tHÌ¹ª1©ç2ÉÈé
+ *	(D) sig_semªE_QOVRG[ÆÈé
+ *		(D-1) Z}tHÌÅå¹ª1Ì
+ *		(D-2) Z}tHÌÅå¹ª2Ì
+ *	(E) wai_semÌÃIG[ÌeXg
+ *		(E-1) ñ^XNReLXg©çÌÄoµ
+ *		(E-2) CPUbNóÔ©çÌÄoµ
+ *		(E-3) fBXpb`Ö~óÔ©çÌÄoµ
+ *		(E-4) ÝDæx}XNSðÅÈ¢óÔ©çÌÄoµ
+ *		(E-5) semidªs³i¬³·¬éj
+ *		(E-6) semidªs³iå«·¬éj
+ *	(F) wai_semÉæèZ}tHÌ¹ª1¸é
+ *		(F-1) Z}tHÌ¹ª1©ç0ÉÈé
+ *		(F-2) Z}tHÌ¹ª2©ç1ÉÈé
+ *	(G) wai_semÉæèZ}tHÒ¿óÔÉÈé
+ *		(G-1) TA_TNULL®«ÌZ}tHÅCÒÁÄ¢é^XNªÈ©Á½ê
+ *		(G-2) TA_TNULL®«ÌZ}tHÅCÒÁÄ¢é^XNª Á½ê
+ *		(G-3) TA_TPRI®«ÌZ}tHÅCÒÁÄ¢é^XNªÈ©Á½ê
+ *		(G-4) TA_TPRI®«ÌZ}tHÅCDæxª¢^XNªÒÁÄ¢éê
+ *		(G-5) TA_TPRI®«ÌZ}tHÅCDæxª¯¶^XNªÒÁÄ¢éê
+ *		(G-6) TA_TPRI®«ÌZ}tHÅCDæxªá¢^XNªÒÁÄ¢éê
+ *	(H) Z}tHÒ¿óÔª­§ð³êé
+ *	(I) Z}tHÒ¿óÔÌÔÉZ}tHªú»³êé
+ *	(J) Z}tHÌ¹Ìúlª³µ­Ýè³êé
+ *		(J-1) Z}tHÌ¹Ìúlª0
+ *		(J-2) Z}tHÌ¹Ìúlª1
+ *		(J-3) Z}tHÌ¹Ìúlª2
+ *
+ * ygp\[Xz
+ *
+ *	TASK1: Dæx^XNCTA_ACT®«
+ *	TASK2: Dæx^XN
+ *	TASK3: áDæx^XN
+ *	TASK4: Dæx^XN
+ *	TASK5: Dæx^XN
+ *	ALM1:  A[nh
+ *  SEM1:  TA_NULL®«Cú¹1CÅå¹1
+ *  SEM2:  TA_NULL®«Cú¹2CÅå¹2
+ *  SEM3:  TA_TPRI®«Cú¹0CÅå¹1
+ *
+ * yeXgV[PXz
+ *
+ *	== TASK1iDæxFj==
+ *  1:	ref_sem(SEM1, &rsem)
+ *		assert(rsem.wtskid == TSK_NONE)
+ *		assert(rsem.semcnt == 1)			... (J-2)
+ *  	ref_sem(SEM2, &rsem)
+ *		assert(rsem.wtskid == TSK_NONE)
+ *		assert(rsem.semcnt == 2)			... (J-3)
+ *  	ref_sem(SEM3, &rsem)
+ *		assert(rsem.wtskid == TSK_NONE)
+ *		assert(rsem.semcnt == 0)			... (J-1)
+ *	2:	loc_cpu()
+ *		sig_sem(SEM1) -> E_CTX				... (A-2)
+ *		wai_sem(SEM1) -> E_CTX				... (E-2)
+ *		unl_cpu()
+ *		dis_dsp()
+ *		wai_sem(SEM1) -> E_CTX				... (E-3)
+ *		ena_dsp()
+ *		chg_ipm(TMAX_INTPRI)
+ *		wai_sem(SEM1) -> E_CTX				... (E-4)
+ *		chg_ipm(TIPM_ENAALL)
+ *		sig_sem(0) -> E_ID					... (A-3)
+ *		wai_sem(0) -> E_ID					... (E-5)
+ *		sig_sem(TNUM_SEMID+1) -> E_ID		... (A-4)
+ *		wai_sem(TNUM_SEMID+1) -> E_ID		... (E-6)
+ *	3:	act_tsk(TASK3)
+ *	4:	slp_tsk()
+ *	== TASK3iDæxFáj==
+ *	5:	wai_sem(SEM1)						... (F-1)
+ *  6:	ref_sem(SEM1, &rsem)
+ *		assert(rsem.wtskid == TSK_NONE)
+ *		assert(rsem.semcnt == 0)
+ *	7:	sta_alm(ALM1, 10)
+ *	8:	wai_sem(SEM1)						... (G-1)
+ *	== ALM1 ==
+ *	9:	sig_sem(SEM1) -> E_CTX				... (A-1)
+ *		wai_sem(SEM1) -> E_CTX				... (E-1)
+ *	10:	iwup_tsk(TASK1)
+ *	11:	RETURN
+ *	== TASK1i±«j==
+ *	12:	act_tsk(TASK2)
+ *	== TASK2iDæxFj==
+ *	13:	wai_sem(SEM1)						... (G-2)
+ *	== TASK1i±«j==
+ *  14:	ref_sem(SEM1, &rsem)
+ *		assert(rsem.wtskid == TASK3)
+ *		assert(rsem.semcnt == 0)
+ *	15:	sig_sem(SEM1)						... (B-4)
+ *	16:	sig_sem(SEM1)						... (B-1)
+ *	== TASK2i±«j==
+ *	17:	wai_sem(SEM1)						... (G-1)
+ *	== TASK1i±«j==
+ *	18: dis_dsp()
+ *	19:	sig_sem(SEM1)						... (B-2)
+ *	20:	ena_dsp()
+ *	== TASK2i±«j==
+ *	21:	wai_sem(SEM1)						... (G-1)
+ *	== TASK1i±«j==
+ *	22: sus_tsk(TASK2)
+ *	23:	sig_sem(SEM1)						... (B-3)
+ *	24: sig_sem(SEM1)						... (C-1)
+ *	25: sig_sem(SEM1) -> E_QOVR				... (D-1)
+ *  26:	ref_sem(SEM1, &rsem)
+ *		assert(rsem.wtskid == TSK_NONE)
+ *		assert(rsem.semcnt == 1)
+ *	27:	rsm_tsk(TASK2)
+ *	== TASK2i±«j==
+ *	28:	wai_sem(SEM2)						... (F-2)
+ *  29:	ref_sem(SEM2, &rsem)
+ *		assert(rsem.wtskid == TSK_NONE)
+ *		assert(rsem.semcnt == 1)
+ *	30:	wai_sem(SEM2)						... (F-1)
+ *	31: wai_sem(SEM2)						... (G-1)
+ *	== TASK1i±«j==
+ *	32:	sig_sem(SEM2)						... (B-1)
+ *	== TASK2i±«j==
+ *	33:	wai_sem(SEM3)						... (G-3)
+ *	== TASK1i±«j==
+ *	34:	sig_sem(SEM2)						... (C-1)
+ *	35:	sig_sem(SEM2)						... (C-2)
+ *  36:	ref_sem(SEM2, &rsem)
+ *		assert(rsem.wtskid == TSK_NONE)
+ *		assert(rsem.semcnt == 2)
+ *	37:	sig_sem(SEM2) -> E_QOVR				... (D-2)
+ *  38:	ref_sem(SEM2, &rsem)
+ *		assert(rsem.wtskid == TSK_NONE)
+ *		assert(rsem.semcnt == 2)
+ *	39:	MISSING
+ *	40:	tslp_tsk(10) -> E_TMOUT
+ *	== TASK3i±«j==
+ *	41:	wai_sem(SEM3)						... (G-4)
+ *	== TASK1i±«j==
+ *	42:	act_tsk(TASK4)
+ *	43:	act_tsk(TASK5)
+ *	44:	rot_rdq(TPRI_SELF)
+ *	== TASK4iDæxFj==
+ *	45:	wai_sem(SEM3)						... (G-6)
+ *	== TASK5iDæxFj==
+ *	46:	wai_sem(SEM3)						... (G-5)
+ *	== TASK1i±«j==
+ *	47:	sig_sem(SEM3)						... (B-1)
+ *	== TASK2i±«j==
+ *	48:	wai_sem(SEM1)
+ *		wai_sem(SEM1) -> E_RLWAI
+ *	== TASK1i±«j==
+ *	49:	sig_sem(SEM3)						... (B-4)
+ *	50:	tslp_tsk(10) -> E_TMOUT
+ *	== TASK4i±«j==
+ *	51:	ext_tsk() -> noreturn
+ *	== TASK1i±«j==
+ *	52:	sig_sem(SEM3)						... (B-4)
+ *	53:	tslp_tsk(10) -> E_TMOUT
+ *	== TASK5i±«j==
+ *	54:	ext_tsk() -> noreturn
+ *	== TASK1i±«j==
+ *	55:	sig_sem(SEM3)						... (B-4)
+ *	56:	tslp_tsk(10) -> E_TMOUT
+ *	== TASK3i±«j==
+ *	57:	ext_tsk() -> noreturn
+ *	== TASK1i±«j==
+ *	58: rel_wai(TASK2)						... (H)
+ *	== TASK2i±«j==
+ *	59:	wai_sem(SEM1) -> E_DLT
+ *	== TASK1i±«j==
+ *	60: ini_sem(SEM1)						... (I)
+ *	== TASK2i±«j==
+ *	61: ext_tsk() -> noreturn
+ *	== TASK1i±«j==
+ *	62: END
+ */
+
+#include <kernel.h>
+#include <test_lib.h>
+#include <t_syslog.h>
+#include "kernel_cfg.h"
+#include "test_sem1.h"
+
+void
+alarm1_handler(intptr_t exinf)
+{
+	ER		ercd;
+
+	check_point(9);
+	ercd = sig_sem(SEM1);
+	check_ercd(ercd, E_CTX);
+
+	ercd = wai_sem(SEM1);
+	check_ercd(ercd, E_CTX);
+
+	check_point(10);
+	ercd = iwup_tsk(TASK1);
+	check_ercd(ercd, E_OK);
+
+	check_point(11);
+	return;
+
+	check_point(0);
+}
+
+void
+task1(intptr_t exinf)
+{
+	ER		ercd;
+	T_RSEM	rsem;
+
+	check_point(1);
+	ercd = ref_sem(SEM1, &rsem);
+	check_ercd(ercd, E_OK);
+	check_assert(rsem.wtskid == TSK_NONE);
+	check_assert(rsem.semcnt == 1);
+
+	ercd = ref_sem(SEM2, &rsem);
+	check_ercd(ercd, E_OK);
+	check_assert(rsem.wtskid == TSK_NONE);
+	check_assert(rsem.semcnt == 2);
+
+	ercd = ref_sem(SEM3, &rsem);
+	check_ercd(ercd, E_OK);
+	check_assert(rsem.wtskid == TSK_NONE);
+	check_assert(rsem.semcnt == 0);
+
+	check_point(2);
+	ercd = loc_cpu();
+	check_ercd(ercd, E_OK);
+
+	ercd = sig_sem(SEM1);
+	check_ercd(ercd, E_CTX);
+
+	ercd = wai_sem(SEM1);
+	check_ercd(ercd, E_CTX);
+
+	ercd = unl_cpu();
+	check_ercd(ercd, E_OK);
+
+	ercd = dis_dsp();
+	check_ercd(ercd, E_OK);
+
+	ercd = wai_sem(SEM1);
+	check_ercd(ercd, E_CTX);
+
+	ercd = ena_dsp();
+	check_ercd(ercd, E_OK);
+
+	ercd = chg_ipm(TMAX_INTPRI);
+	check_ercd(ercd, E_OK);
+
+	ercd = wai_sem(SEM1);
+	check_ercd(ercd, E_CTX);
+
+	ercd = chg_ipm(TIPM_ENAALL);
+	check_ercd(ercd, E_OK);
+
+	ercd = sig_sem(0);
+	check_ercd(ercd, E_ID);
+
+	ercd = wai_sem(0);
+	check_ercd(ercd, E_ID);
+
+	ercd = sig_sem(TNUM_SEMID+1);
+	check_ercd(ercd, E_ID);
+
+	ercd = wai_sem(TNUM_SEMID+1);
+	check_ercd(ercd, E_ID);
+
+	check_point(3);
+	ercd = act_tsk(TASK3);
+	check_ercd(ercd, E_OK);
+
+	check_point(4);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(12);
+	ercd = act_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_point(14);
+	ercd = ref_sem(SEM1, &rsem);
+	check_ercd(ercd, E_OK);
+	check_assert(rsem.wtskid == TASK3);
+	check_assert(rsem.semcnt == 0);
+
+	check_point(15);
+	ercd = sig_sem(SEM1);
+	check_ercd(ercd, E_OK);
+
+	check_point(16);
+	ercd = sig_sem(SEM1);
+	check_ercd(ercd, E_OK);
+
+	check_point(18);
+	ercd = dis_dsp();
+	check_ercd(ercd, E_OK);
+
+	check_point(19);
+	ercd = sig_sem(SEM1);
+	check_ercd(ercd, E_OK);
+
+	check_point(20);
+	ercd = ena_dsp();
+	check_ercd(ercd, E_OK);
+
+	check_point(22);
+	ercd = sus_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_point(23);
+	ercd = sig_sem(SEM1);
+	check_ercd(ercd, E_OK);
+
+	check_point(24);
+	ercd = sig_sem(SEM1);
+	check_ercd(ercd, E_OK);
+
+	check_point(25);
+	ercd = sig_sem(SEM1);
+	check_ercd(ercd, E_QOVR);
+
+	check_point(26);
+	ercd = ref_sem(SEM1, &rsem);
+	check_ercd(ercd, E_OK);
+	check_assert(rsem.wtskid == TSK_NONE);
+	check_assert(rsem.semcnt == 1);
+
+	check_point(27);
+	ercd = rsm_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_point(32);
+	ercd = sig_sem(SEM2);
+	check_ercd(ercd, E_OK);
+
+	check_point(34);
+	ercd = sig_sem(SEM2);
+	check_ercd(ercd, E_OK);
+
+	check_point(35);
+	ercd = sig_sem(SEM2);
+	check_ercd(ercd, E_OK);
+
+	check_point(36);
+	ercd = ref_sem(SEM2, &rsem);
+	check_ercd(ercd, E_OK);
+	check_assert(rsem.wtskid == TSK_NONE);
+	check_assert(rsem.semcnt == 2);
+
+	check_point(37);
+	ercd = sig_sem(SEM2);
+	check_ercd(ercd, E_QOVR);
+
+	check_point(38);
+	ercd = ref_sem(SEM2, &rsem);
+	check_ercd(ercd, E_OK);
+	check_assert(rsem.wtskid == TSK_NONE);
+	check_assert(rsem.semcnt == 2);
+
+	check_point(39);
+
+	check_point(40);
+	ercd = tslp_tsk(10);
+	check_ercd(ercd, E_TMOUT);
+
+	check_point(42);
+	ercd = act_tsk(TASK4);
+	check_ercd(ercd, E_OK);
+
+	check_point(43);
+	ercd = act_tsk(TASK5);
+	check_ercd(ercd, E_OK);
+
+	check_point(44);
+	ercd = rot_rdq(TPRI_SELF);
+	check_ercd(ercd, E_OK);
+
+	check_point(47);
+	ercd = sig_sem(SEM3);
+	check_ercd(ercd, E_OK);
+
+	check_point(49);
+	ercd = sig_sem(SEM3);
+	check_ercd(ercd, E_OK);
+
+	check_point(50);
+	ercd = tslp_tsk(10);
+	check_ercd(ercd, E_TMOUT);
+
+	check_point(52);
+	ercd = sig_sem(SEM3);
+	check_ercd(ercd, E_OK);
+
+	check_point(53);
+	ercd = tslp_tsk(10);
+	check_ercd(ercd, E_TMOUT);
+
+	check_point(55);
+	ercd = sig_sem(SEM3);
+	check_ercd(ercd, E_OK);
+
+	check_point(56);
+	ercd = tslp_tsk(10);
+	check_ercd(ercd, E_TMOUT);
+
+	check_point(58);
+	ercd = rel_wai(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_point(60);
+	ercd = ini_sem(SEM1);
+	check_ercd(ercd, E_OK);
+
+	check_finish(62);
+
+	check_point(0);
+}
+
+void
+task2(intptr_t exinf)
+{
+	ER		ercd;
+	T_RSEM	rsem;
+
+	check_point(13);
+	ercd = wai_sem(SEM1);
+	check_ercd(ercd, E_OK);
+
+	check_point(17);
+	ercd = wai_sem(SEM1);
+	check_ercd(ercd, E_OK);
+
+	check_point(21);
+	ercd = wai_sem(SEM1);
+	check_ercd(ercd, E_OK);
+
+	check_point(28);
+	ercd = wai_sem(SEM2);
+	check_ercd(ercd, E_OK);
+
+	check_point(29);
+	ercd = ref_sem(SEM2, &rsem);
+	check_ercd(ercd, E_OK);
+	check_assert(rsem.wtskid == TSK_NONE);
+	check_assert(rsem.semcnt == 1);
+
+	check_point(30);
+	ercd = wai_sem(SEM2);
+	check_ercd(ercd, E_OK);
+
+	check_point(31);
+	ercd = wai_sem(SEM2);
+	check_ercd(ercd, E_OK);
+
+	check_point(33);
+	ercd = wai_sem(SEM3);
+	check_ercd(ercd, E_OK);
+
+	check_point(48);
+	ercd = wai_sem(SEM1);
+	check_ercd(ercd, E_OK);
+
+	ercd = wai_sem(SEM1);
+	check_ercd(ercd, E_RLWAI);
+
+	check_point(59);
+	ercd = wai_sem(SEM1);
+	check_ercd(ercd, E_DLT);
+
+	check_point(61);
+	ercd = ext_tsk();
+
+	check_point(0);
+}
+
+void
+task3(intptr_t exinf)
+{
+	ER		ercd;
+	T_RSEM	rsem;
+
+	check_point(5);
+	ercd = wai_sem(SEM1);
+	check_ercd(ercd, E_OK);
+
+	check_point(6);
+	ercd = ref_sem(SEM1, &rsem);
+	check_ercd(ercd, E_OK);
+	check_assert(rsem.wtskid == TSK_NONE);
+	check_assert(rsem.semcnt == 0);
+
+	check_point(7);
+	ercd = sta_alm(ALM1, 10);
+	check_ercd(ercd, E_OK);
+
+	check_point(8);
+	ercd = wai_sem(SEM1);
+	check_ercd(ercd, E_OK);
+
+	check_point(41);
+	ercd = wai_sem(SEM3);
+	check_ercd(ercd, E_OK);
+
+	check_point(57);
+	ercd = ext_tsk();
+
+	check_point(0);
+}
+
+void
+task4(intptr_t exinf)
+{
+	ER		ercd;
+
+	check_point(45);
+	ercd = wai_sem(SEM3);
+	check_ercd(ercd, E_OK);
+
+	check_point(51);
+	ercd = ext_tsk();
+
+	check_point(0);
+}
+
+void
+task5(intptr_t exinf)
+{
+	ER		ercd;
+
+	check_point(46);
+	ercd = wai_sem(SEM3);
+	check_ercd(ercd, E_OK);
+
+	check_point(54);
+	ercd = ext_tsk();
+
+	check_point(0);
+}
Index: /asp_ewarm/asp-1.7.0/test/test_sem1.cfg
===================================================================
--- /asp_ewarm/asp-1.7.0/test/test_sem1.cfg	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/test_sem1.cfg	(revision 61)
@@ -0,0 +1,24 @@
+/*
+ *  @(#) $Id: test_sem1.cfg 1572 2009-05-31 13:40:39Z ertl-hiro $
+ */
+
+/*
+ *  Z}tH@\ÌeXg(1)ÌVXeRtBM
+[Vt@C
+ */
+INCLUDE("target_timer.cfg");
+INCLUDE("syssvc/syslog.cfg");
+INCLUDE("syssvc/banner.cfg");
+INCLUDE("syssvc/serial.cfg");
+
+#include "test_sem1.h"
+
+CRE_TSK(TASK1, { TA_ACT, 1, task1, MID_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK2, { TA_NULL, 2, task2, HIGH_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK3, { TA_NULL, 3, task3, LOW_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK4, { TA_NULL, 4, task4, MID_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK5, { TA_NULL, 5, task5, MID_PRIORITY, STACK_SIZE, NULL });
+CRE_ALM(ALM1, { TA_NULL, 1, alarm1_handler });
+CRE_SEM(SEM1, { TA_NULL, 1, 1 });
+CRE_SEM(SEM2, { TA_NULL, 2, 2 });
+CRE_SEM(SEM3, { TA_TPRI, 0, 1 });
Index: /asp_ewarm/asp-1.7.0/test/test_sem1.h
===================================================================
--- /asp_ewarm/asp-1.7.0/test/test_sem1.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/test_sem1.h	(revision 61)
@@ -0,0 +1,79 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_sem1.h 1232 2008-08-09 13:30:32Z ertl-hiro $
+ */
+
+/* 
+ *		Z}tH@\ÌeXg(1)
+ */
+
+/*
+ *  ^[QbgË¶Ìè`
+ */
+#include "target_test.h"
+
+/*
+ *  DæxÌè`
+ */
+#define HIGH_PRIORITY	9		/* Dæx */
+#define MID_PRIORITY	10		/* Dæx */
+#define LOW_PRIORITY	11		/* áDæx */
+
+/*
+ *  ^[QbgÉË¶·éÂ\«Ì éèÌè`
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ^XNÌX^bNTCY */
+#endif /* STACK_SIZE */
+
+/*
+ *  ÖÌvg^Cvé¾
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+extern void	task1(intptr_t exinf);
+extern void	task2(intptr_t exinf);
+extern void	task3(intptr_t exinf);
+extern void	task4(intptr_t exinf);
+extern void	task5(intptr_t exinf);
+extern void	alarm1_handler(intptr_t exinf);
+
+#endif /* TOPPERS_MACRO_ONLY */
Index: /asp_ewarm/asp-1.7.0/test/test_sem2.c
===================================================================
--- /asp_ewarm/asp-1.7.0/test/test_sem2.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/test_sem2.c	(revision 61)
@@ -0,0 +1,468 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2008,2009 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_sem2.c 1577 2009-05-31 14:30:51Z ertl-hiro $
+ */
+
+/* 
+ *		Z}tH@\ÌeXg(2)
+ *
+ * yeXgÌÚIz
+ *
+ *  isig_semðCsig_semÆÌá¢ðSÉeXg·éD
+ *  pol_semCtwai_semðCwai_semÆÌá¢ðSÉeXg·éD
+ *
+ * yeXgÚz
+ *
+ *	(A) isig_semÌÃIG[ÌeXg
+ *		(A-1) ^XNReLXg©çÌÄoµ
+ *		(A-2) CPUbNóÔ©çÌÄoµ
+ *	(B) isig_semÉæèZ}tHÒ¿óÔÌ^XNªÒ¿ð³êé
+ *		(B-1) AChóÔ©çCÒ¿ð³ê½^XNÉØè·íé
+ *		(B-2) ÀsóÔÌ^XN©çCÒ¿ð³ê½^XNÉØè·íé
+ *		(B-3) fBXpb`Û¯óÔÅCØè·íçÈ¢
+ *		(B-4) Ò¿ð³ê½^XNª­§Ò¿óÔÅCØè·íçÈ¢
+ *		(B-5) Ò¿ð³ê½^XNªDæxªá­CØè·íçÈ¢
+ *	(C) pol_semÌÃIG[ÌeXg
+ *		(C-1) ñ^XNReLXg©çÌÄoµ
+ *		(C-2) CPUbNóÔ©çÌÄoµ
+ *		(C-3) fBXpb`Ö~óÔ©çÌÄoµiE_CTXG[ÉÈçÈ¢j
+ *		(C-4) ÝDæx}XNSðÅÈ¢óÔ©çÌÄoµiE_CTXG[
+ *		      ÉÈçÈ¢j
+ *	(D) pol_semÅ|[O¸s·é
+ *	(E) twai_semÌÃIG[ÌeXg
+ *		(E-1) ñ^XNReLXg©çÌÄoµ
+ *		(E-2) CPUbNóÔ©çÌÄoµ
+ *		(E-3) fBXpb`Ö~óÔ©çÌÄoµ
+ *		(E-4) ÝDæx}XNSðÅÈ¢óÔ©çÌÄoµ
+ *		(E-5) tmoutªs³
+ *	(F) twai_semÅtmout=TMO_POLÌÉ|[O¸s·é
+ *	(G) twai_semÅtmout=TMO_FEVRÌÉZ}tHÒ¿óÔÉÈé
+ *	(H) twai_semÅtmoutÉ^CAEgðÝèµ½ÉC^CAEgt«Ì
+ *		Z}tHÒ¿óÔÉÈé
+ *
+ * ygp\[Xz
+ *
+ *	TASK1: Dæx^XNCTA_ACT®«
+ *	TASK2: Dæx^XN
+ *	TASK3: áDæx^XN
+ *	TASK4: Dæx^XN
+ *	TASK5: Dæx^XN
+ *	ALM1:  A[nh
+ *  SEM1:  TA_NULL®«Cú¹1CÅå¹1
+ *
+ * yeXgV[PXz
+ *
+ *	== TASK1iDæxFj==
+ *  1:	isig_sem(SEM1) -> E_CTX				... (A-1)
+ *	2:	loc_cpu()
+ *		pol_sem(SEM1) -> E_CTX				... (C-2)
+ *		twai_sem(SEM1, TMO_POL) -> E_CTX	... (E-2)
+ *		unl_cpu()
+ *	3:	dis_dsp()
+ *		pol_sem(SEM1)						... (C-3)
+ *		twai_sem(SEM1, TMO_POL) -> E_CTX	... (E-3)
+ *		ena_dsp()
+ *	4:	chg_ipm(TMAX_INTPRI)
+ *		pol_sem(SEM1) -> E_TMOUT			... (C-4)(D)
+ *		twai_sem(SEM1, TMO_POL) -> E_CTX	... (E-4)
+ *		chg_ipm(TIPM_ENAALL)
+ *	5:	twai_sem(SEM1, -2) -> E_PAR			... (E-5)
+ *		twai_sem(SEM1, TMO_POL) -> E_TMOUT	... (F)
+ *	6:	sta_alm(ALM1, 10)
+ *	7:	twai_sem(SEM1, TMO_FEVR)			... (G)
+ *	== ALM1-1 ==
+ *	8:	pol_sem(SEM1) -> E_CTX				... (C-1)
+ *		twai_sem(SEM1, TMO_POL) -> E_CTX	... (E-1)
+ *	9:	iloc_cpu()
+ *		isig_sem(SEM1) -> E_CTX				... (A-2)
+ *		iunl_cpu()
+ *	10:	isig_sem(SEM1)						... (B-1)
+ *		RETURN
+ *	== TASK1i±«j==
+ *	11:	act_tsk(TASK3)
+ *	12:	wai_sem(SEM1)
+ *	== TASK3iDæxFáj==
+ *	13:	sta_alm(ALM1, 10)
+ *		call(wait_var())
+ *	== ALM1-2 ==
+ *	14:	isig_sem(SEM1)						... (B-2)
+ *		call(signal_var())
+ *		RETURN
+ *	== TASK1i±«j==
+ *	15:	wai_sem(SEM1)
+ *	== TASK3i±«j==
+ *	16:	sta_alm(ALM1, 10)
+ *		dis_dsp()
+ *		call(wait_var())
+ *	== ALM1-3 ==
+ *	17:	isig_sem(SEM1)						... (B-3)
+ *		call(signal_var())
+ *		RETURN
+ *	== TASK3i±«j==
+ *	18:	ena_dsp()
+ *	== TASK1i±«j==
+ *	19:	wai_sem(SEM1)
+ *	== TASK3i±«j==
+ *	20:	sta_alm(ALM1, 10)
+ *		sus_tsk(TASK1)
+ *		call(wait_var())
+ *	== ALM1-4 ==
+ *	21:	isig_sem(SEM1)						... (B-4)
+ *		call(signal_var())
+ *		RETURN
+ *	== TASK3i±«j==
+ *	22:	rsm_tsk(TASK1)
+ *	== TASK1i±«j==
+ *	23:	act_tsk(TASK2)
+ *	== TASK2iDæxFj==
+ *	24:	tslp_tsk(10) -> E_TMOUT
+ *	== TASK1i±«j==
+ *	25:	wai_sem(SEM1)
+ *	== TASK3i±«j==
+ *	26:	ext_tsk() -> noreturn
+ *	== TASK2i±«j==
+ *	27:	sta_alm(ALM1, 10)
+ *		call(wait_var())
+ *	== ALM1-5 ==
+ *	28:	isig_sem(SEM1)						... (B-5)
+ *		call(signal_var())
+ *		RETURN
+ *	== TASK2i±«j==
+ *	29:	ext_tsk() -> noreturn
+ *	== TASK1i±«j==
+ *	30:	sta_alm(ALM1, 10)
+ *	31:	twai_sem(SEM1, 100) -> E_RLWAI
+ *	== ALM1-6 ==
+ *	32:	irel_wai(TASK1)
+ *		RETURN
+ *	== TASK1i±«j==
+ *	33:	sta_alm(ALM1, 100)
+ *	34:	twai_sem(SEM1, 10) -> E_TMOUT		... (H)
+ *	35:	stp_alm(ALM1)
+ *	36:	END
+ */
+
+#include <kernel.h>
+#include <test_lib.h>
+#include <t_syslog.h>
+#include "kernel_cfg.h"
+#include "test_sem2.h"
+
+static volatile bool_t	flagvar;
+
+static void
+wait_var(void)
+{
+	flagvar = false;
+	while (!flagvar);
+}
+
+static void
+signal_var(void)
+{
+	flagvar = true;
+}
+
+static uint_t	alarm1_count = 0;
+
+void
+alarm1_handler(intptr_t exinf)
+{
+	ER		ercd;
+
+	switch (++alarm1_count) {
+	case 1:
+		check_point(8);
+		ercd = pol_sem(SEM1);
+		check_ercd(ercd, E_CTX);
+
+		ercd = twai_sem(SEM1, TMO_POL);
+		check_ercd(ercd, E_CTX);
+
+		check_point(9);
+		ercd = iloc_cpu();
+		check_ercd(ercd, E_OK);
+
+		ercd = isig_sem(SEM1);
+		check_ercd(ercd, E_CTX);
+
+		ercd = iunl_cpu();
+		check_ercd(ercd, E_OK);
+
+		check_point(10);
+		ercd = isig_sem(SEM1);
+		check_ercd(ercd, E_OK);
+
+		return;
+
+		check_point(0);
+
+	case 2:
+		check_point(14);
+		ercd = isig_sem(SEM1);
+		check_ercd(ercd, E_OK);
+
+		signal_var();
+
+		return;
+
+		check_point(0);
+
+	case 3:
+		check_point(17);
+		ercd = isig_sem(SEM1);
+		check_ercd(ercd, E_OK);
+
+		signal_var();
+
+		return;
+
+		check_point(0);
+
+	case 4:
+		check_point(21);
+		ercd = isig_sem(SEM1);
+		check_ercd(ercd, E_OK);
+
+		signal_var();
+
+		return;
+
+		check_point(0);
+
+	case 5:
+		check_point(28);
+		ercd = isig_sem(SEM1);
+		check_ercd(ercd, E_OK);
+
+		signal_var();
+
+		return;
+
+		check_point(0);
+
+	case 6:
+		check_point(32);
+		ercd = irel_wai(TASK1);
+		check_ercd(ercd, E_OK);
+
+		return;
+
+		check_point(0);
+	}
+	check_point(0);
+}
+
+void
+task1(intptr_t exinf)
+{
+	ER		ercd;
+
+	check_point(1);
+	ercd = isig_sem(SEM1);
+	check_ercd(ercd, E_CTX);
+
+	check_point(2);
+	ercd = loc_cpu();
+	check_ercd(ercd, E_OK);
+
+	ercd = pol_sem(SEM1);
+	check_ercd(ercd, E_CTX);
+
+	ercd = twai_sem(SEM1, TMO_POL);
+	check_ercd(ercd, E_CTX);
+
+	ercd = unl_cpu();
+	check_ercd(ercd, E_OK);
+
+	check_point(3);
+	ercd = dis_dsp();
+	check_ercd(ercd, E_OK);
+
+	ercd = pol_sem(SEM1);
+	check_ercd(ercd, E_OK);
+
+	ercd = twai_sem(SEM1, TMO_POL);
+	check_ercd(ercd, E_CTX);
+
+	ercd = ena_dsp();
+	check_ercd(ercd, E_OK);
+
+	check_point(4);
+	ercd = chg_ipm(TMAX_INTPRI);
+	check_ercd(ercd, E_OK);
+
+	ercd = pol_sem(SEM1);
+	check_ercd(ercd, E_TMOUT);
+
+	ercd = twai_sem(SEM1, TMO_POL);
+	check_ercd(ercd, E_CTX);
+
+	ercd = chg_ipm(TIPM_ENAALL);
+	check_ercd(ercd, E_OK);
+
+	check_point(5);
+	ercd = twai_sem(SEM1, -2);
+	check_ercd(ercd, E_PAR);
+
+	ercd = twai_sem(SEM1, TMO_POL);
+	check_ercd(ercd, E_TMOUT);
+
+	check_point(6);
+	ercd = sta_alm(ALM1, 10);
+	check_ercd(ercd, E_OK);
+
+	check_point(7);
+	ercd = twai_sem(SEM1, TMO_FEVR);
+	check_ercd(ercd, E_OK);
+
+	check_point(11);
+	ercd = act_tsk(TASK3);
+	check_ercd(ercd, E_OK);
+
+	check_point(12);
+	ercd = wai_sem(SEM1);
+	check_ercd(ercd, E_OK);
+
+	check_point(15);
+	ercd = wai_sem(SEM1);
+	check_ercd(ercd, E_OK);
+
+	check_point(19);
+	ercd = wai_sem(SEM1);
+	check_ercd(ercd, E_OK);
+
+	check_point(23);
+	ercd = act_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_point(25);
+	ercd = wai_sem(SEM1);
+	check_ercd(ercd, E_OK);
+
+	check_point(30);
+	ercd = sta_alm(ALM1, 10);
+	check_ercd(ercd, E_OK);
+
+	check_point(31);
+	ercd = twai_sem(SEM1, 100);
+	check_ercd(ercd, E_RLWAI);
+
+	check_point(33);
+	ercd = sta_alm(ALM1, 100);
+	check_ercd(ercd, E_OK);
+
+	check_point(34);
+	ercd = twai_sem(SEM1, 10);
+	check_ercd(ercd, E_TMOUT);
+
+	check_point(35);
+	ercd = stp_alm(ALM1);
+	check_ercd(ercd, E_OK);
+
+	check_finish(36);
+
+	check_point(0);
+}
+
+void
+task2(intptr_t exinf)
+{
+	ER		ercd;
+
+	check_point(24);
+	ercd = tslp_tsk(10);
+	check_ercd(ercd, E_TMOUT);
+
+	check_point(27);
+	ercd = sta_alm(ALM1, 10);
+	check_ercd(ercd, E_OK);
+
+	wait_var();
+
+	check_point(29);
+	ercd = ext_tsk();
+
+	check_point(0);
+}
+
+void
+task3(intptr_t exinf)
+{
+	ER		ercd;
+
+	check_point(13);
+	ercd = sta_alm(ALM1, 10);
+	check_ercd(ercd, E_OK);
+
+	wait_var();
+
+	check_point(16);
+	ercd = sta_alm(ALM1, 10);
+	check_ercd(ercd, E_OK);
+
+	ercd = dis_dsp();
+	check_ercd(ercd, E_OK);
+
+	wait_var();
+
+	check_point(18);
+	ercd = ena_dsp();
+	check_ercd(ercd, E_OK);
+
+	check_point(20);
+	ercd = sta_alm(ALM1, 10);
+	check_ercd(ercd, E_OK);
+
+	ercd = sus_tsk(TASK1);
+	check_ercd(ercd, E_OK);
+
+	wait_var();
+
+	check_point(22);
+	ercd = rsm_tsk(TASK1);
+	check_ercd(ercd, E_OK);
+
+	check_point(26);
+	ercd = ext_tsk();
+
+	check_point(0);
+}
Index: /asp_ewarm/asp-1.7.0/test/test_sem2.cfg
===================================================================
--- /asp_ewarm/asp-1.7.0/test/test_sem2.cfg	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/test_sem2.cfg	(revision 61)
@@ -0,0 +1,21 @@
+/*
+ *  @(#) $Id: test_sem2.cfg 1572 2009-05-31 13:40:39Z ertl-hiro $
+ */
+
+/*
+ *  Z}tH@\ÌeXg(2)ÌVXeRtBM
+[Vt@C
+ */
+INCLUDE("target_timer.cfg");
+INCLUDE("syssvc/syslog.cfg");
+INCLUDE("syssvc/banner.cfg");
+INCLUDE("syssvc/serial.cfg");
+
+#include "test_sem2.h"
+
+CRE_TSK(TASK1, { TA_ACT, 1, task1, MID_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK2, { TA_NULL, 2, task2, HIGH_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK3, { TA_NULL, 3, task3, LOW_PRIORITY, STACK_SIZE, NULL });
+CRE_ALM(ALM1, { TA_NULL, 1, alarm1_handler });
+CRE_SEM(SEM1, { TA_NULL, 1, 1 });
+CRE_SEM(SEM2, { TA_TPRI, 0, 1 });
Index: /asp_ewarm/asp-1.7.0/test/test_sem2.h
===================================================================
--- /asp_ewarm/asp-1.7.0/test/test_sem2.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/test_sem2.h	(revision 61)
@@ -0,0 +1,77 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_sem2.h 1390 2008-11-23 14:24:08Z ertl-hiro $
+ */
+
+/* 
+ *		Z}tH@\ÌeXg(2)
+ */
+
+/*
+ *  ^[QbgË¶Ìè`
+ */
+#include "target_test.h"
+
+/*
+ *  DæxÌè`
+ */
+#define HIGH_PRIORITY	9		/* Dæx */
+#define MID_PRIORITY	10		/* Dæx */
+#define LOW_PRIORITY	11		/* áDæx */
+
+/*
+ *  ^[QbgÉË¶·éÂ\«Ì éèÌè`
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ^XNÌX^bNTCY */
+#endif /* STACK_SIZE */
+
+/*
+ *  ÖÌvg^Cvé¾
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+extern void	task1(intptr_t exinf);
+extern void	task2(intptr_t exinf);
+extern void	task3(intptr_t exinf);
+extern void	alarm1_handler(intptr_t exinf);
+
+#endif /* TOPPERS_MACRO_ONLY */
Index: /asp_ewarm/asp-1.7.0/test/test_sysstat1.c
===================================================================
--- /asp_ewarm/asp-1.7.0/test/test_sysstat1.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/test_sysstat1.c	(revision 61)
@@ -0,0 +1,243 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2006-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_sysstat1.c 2006 2010-12-31 04:20:56Z ertl-hiro $
+ */
+
+/* 
+ *		VXeóÔÉÖ·éeXg(1)
+ *
+ *  eXgV[PXF
+ *
+ *	== TASK1iDæxF10j==
+ *	1:	úóÔÌ`FbN
+ *	2:	loc_cpu() ... VXeóÔð_ÉÏ»³¹é
+ *		chg_ipm(TMAX_INTPRI) -> E_CTX
+ *	3:	unl_cpu()
+ *	4:	chg_ipm(TMAX_INTPRI)
+ *	5:	dis_dsp()
+ *	6:	ena_tex()
+ *	7:	chg_ipm(TIPM_ENAALL)
+ *	8:	ena_dsp()
+ *	9:	dis_tex()
+ *	10:	dis_dsp() ... ^XNáO[`ðÄÑo·õ
+ *		ena_tex()
+ *	11:	ras_tex(TSK_SELF, 0x0001)
+ *	== TASK1^XNáO[`i1ñÚj==
+ *	12:	úóÔÌ`FbN
+ *	13:	ena_dsp() ... 3ÂÌóÔðÏ»³¹C^[Å³ÉàÇé©²×é
+ *		chg_ipm(TMIN_INTPRI)
+ *		ena_tex()
+ *		^[
+ *	== TASK1i±«j==
+ *	14:	ßÁÄ«½óÔÌ`FbN
+ *	15:	loc_cpu() ... CPUbNóÔÌÜÜ^XNðI¹³¹é
+ *	16:	^[i^XNI¹j
+ *	== TASK2iDæxF10j	==
+ *	17:	úóÔÌ`FbN
+ *	18:	I¹
+ */
+
+#include <kernel.h>
+#include <test_lib.h>
+#include <t_syslog.h>
+#include "kernel_cfg.h"
+#include "test_sysstat1.h"
+
+void
+tex_task1(TEXPTN texptn, intptr_t exinf)
+{
+	ER		ercd;
+
+	switch (texptn) {
+	case 0x0001:
+		check_point(12);
+		check_state(false, false, TIPM_ENAALL, true, true, true);
+
+		/*
+		 *  fBXpb`ÂCÝDæx}XNÏXC^XNáOÂ
+		 */
+		check_point(13);
+		ercd = ena_dsp();
+		check_ercd(ercd, E_OK);
+		ercd = chg_ipm(TMIN_INTPRI);
+		check_ercd(ercd, E_OK);
+		ercd = ena_tex();
+		check_ercd(ercd, E_OK);
+		check_state(false, false, TMIN_INTPRI, false, true, false);
+		break;
+
+	default:
+		check_point(0);
+		break;
+	}
+}
+
+void
+task1(intptr_t exinf)
+{
+	ER		ercd;
+
+	/*
+	 *  úóÔÌ`FbN
+	 */
+	check_point(1);
+	check_state(false, false, TIPM_ENAALL, false, false, true);
+
+	/*
+	 *  CPUbNóÔÌ`FbN
+	 */
+	check_point(2);
+	ercd = loc_cpu();
+	check_ercd(ercd, E_OK);
+	check_state(false, true, TIPM_ENAALL, false, true, true);
+
+	/*
+	 *  ÝDæx}XNÏXÌ`FbN
+	 */
+	ercd = chg_ipm(TMAX_INTPRI);
+	check_ercd(ercd, E_CTX);
+	check_state(false, true, TIPM_ENAALL, false, true, true);
+
+	/*
+	 *  CPUbNðÌ`FbN
+	 */
+	check_point(3);
+	ercd = unl_cpu();
+	check_ercd(ercd, E_OK);
+	check_state(false, false, TIPM_ENAALL, false, false, true);
+
+	/*
+	 *  ÝDæx}XNÏXÌ`FbN
+	 */
+	check_point(4);
+	ercd = chg_ipm(TMAX_INTPRI);
+	check_ercd(ercd, E_OK);
+	check_state(false, false, TMAX_INTPRI, false, true, true);
+
+	/*
+	 *  fBXpb`Ö~Ì`FbN
+	 */
+	check_point(5);
+	ercd = dis_dsp();
+	check_ercd(ercd, E_OK);
+	check_state(false, false, TMAX_INTPRI, true, true, true);
+
+	/*
+	 *  ^XNáOÂÌ`FbN
+	 */
+	check_point(6);
+	ercd = ena_tex();
+	check_ercd(ercd, E_OK);
+	check_state(false, false, TMAX_INTPRI, true, true, false);
+
+	/*
+	 *  ÝDæx}XNSðÌ`FbN
+	 */
+	check_point(7);
+	ercd = chg_ipm(TIPM_ENAALL);
+	check_ercd(ercd, E_OK);
+	check_state(false, false, TIPM_ENAALL, true, true, false);
+
+	/*
+	 *  fBXpb`ÂÌ`FbN
+	 */
+	check_point(8);
+	ercd = ena_dsp();
+	check_ercd(ercd, E_OK);
+	check_state(false, false, TIPM_ENAALL, false, false, false);
+
+	/*
+	 *  ^XNáOÖ~Ì`FbN
+	 */
+	check_point(9);
+	ercd = dis_tex();
+	check_ercd(ercd, E_OK);
+	check_state(false, false, TIPM_ENAALL, false, false, true);
+
+	/*
+	 *  fBXpb`Ö~C^XNáOÂ
+	 */
+	check_point(10);
+	ercd = dis_dsp();
+	check_ercd(ercd, E_OK);
+	ercd = ena_tex();
+	check_ercd(ercd, E_OK);
+	check_state(false, false, TIPM_ENAALL, true, true, false);
+
+	/*
+	 *  ^XNáOðv
+	 */
+	check_point(11);
+	ercd = ras_tex(TSK_SELF, 0x0001);
+	/* ±±Å^XNáO[`ª®ì·é */
+	check_ercd(ercd, E_OK);
+
+	/*
+	 *  ^XNáO©çÌ^[Éæè³ÌóÔÉßÁÄ¢é±Æð
+	 *  `FbN
+	 */
+	check_point(14);
+	check_state(false, false, TIPM_ENAALL, true, true, false);
+
+	/*
+	 *  CPUbNóÔÉ
+	 */
+	check_point(15);
+	ercd = loc_cpu();
+	check_ercd(ercd, E_OK);
+
+	/*
+	 *  »ÌÜÜ^XNI¹
+	 */
+	check_point(16);
+}
+
+void
+task2(intptr_t exinf)
+{
+	/*
+	 *  úóÔÌ`FbN
+	 */
+	check_point(17);
+	check_state(false, false, TIPM_ENAALL, false, false, true);
+
+	check_finish(18);
+}
Index: /asp_ewarm/asp-1.7.0/test/test_sysstat1.cfg
===================================================================
--- /asp_ewarm/asp-1.7.0/test/test_sysstat1.cfg	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/test_sysstat1.cfg	(revision 61)
@@ -0,0 +1,19 @@
+/*
+ *  @(#) $Id: test_sysstat1.cfg 1572 2009-05-31 13:40:39Z ertl-hiro $
+ */
+
+/*
+ *  VXeóÔÉÖ·éeXg(1)ÌVXeRtBM
+[Vt@C
+ */
+INCLUDE("target_timer.cfg");
+INCLUDE("syssvc/syslog.cfg");
+INCLUDE("syssvc/banner.cfg");
+INCLUDE("syssvc/serial.cfg");
+
+#include "test_sysstat1.h"
+
+CRE_TSK(TASK1, { TA_ACT, 1, task1, TASK1_PRIORITY, STACK_SIZE, NULL });
+DEF_TEX(TASK1, { TA_NULL, tex_task1 });
+
+CRE_TSK(TASK2, { TA_ACT, 2, task2, TASK2_PRIORITY, STACK_SIZE, NULL });
Index: /asp_ewarm/asp-1.7.0/test/test_sysstat1.h
===================================================================
--- /asp_ewarm/asp-1.7.0/test/test_sysstat1.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/test_sysstat1.h	(revision 61)
@@ -0,0 +1,76 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2006,2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_sysstat1.h 329 2007-07-17 07:28:32Z hiro $
+ */
+
+/* 
+ *		VXeóÔÉÖ·éeXg(1)
+ */
+
+/*
+ *  ^[QbgË¶Ìè`
+ */
+#include "target_test.h"
+
+/*
+ *  e^XNÌDæxÌè`
+ */
+#define TASK1_PRIORITY	10		/* ^XN1ÌDæx */
+#define TASK2_PRIORITY	10		/* ^XN2ÌDæx */
+
+/*
+ *  ^[QbgÉË¶·éÂ\«Ì éèÌè`
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ^XNÌX^bNTCY */
+#endif /* STACK_SIZE */
+
+/*
+ *  ÖÌvg^Cvé¾
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+extern void	tex_task1(TEXPTN texptn, intptr_t exinf);
+extern void	task1(intptr_t exinf);
+
+extern void	task2(intptr_t exinf);
+
+#endif /* TOPPERS_MACRO_ONLY */
Index: /asp_ewarm/asp-1.7.0/test/test_task1.c
===================================================================
--- /asp_ewarm/asp-1.7.0/test/test_task1.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/test_task1.c	(revision 61)
@@ -0,0 +1,366 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2009 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_task1.c 1577 2009-05-31 14:30:51Z ertl-hiro $
+ */
+
+/* 
+ *		^XNÇW
+[ÌeXg(1)
+ *
+ * yeXgÌÚIz
+ *
+ *  make_runnableÆmake_non_runnableðÔ
+IÉeXg·éD
+ *
+ * yeXgÚz
+ *
+ *	(A) ÀsóÔÌ^XNæèà¢DæxÌ^XNðÀsÅ«éóÔÉ·é
+ *		(A-1) fBXpb`Û¯óÔÅÍÈ¢ê
+ *		(A-2) fBXpb`Û¯óÔÌê
+ *	(B) ÀsóÔÌ^XNÆ¯¶DæxÌ^XNðÀsÅ«éóÔÉ·é
+ *		I¯¶DæxÌ^XNÌÌöÉüé±ÆðmF·é
+ *	(C) ÀsóÔÌ^XNæèàá¢DæxÌ^XNðÀsÅ«éóÔÉ·é
+ *		I¯¶DæxÌ^XNÌÌöÉüé±ÆðmF·é
+ *	(D) ÀsÅ«éóÔÌ^XNªÈ¢óÔÅC^XNðÀsÅ«éóÔÉ·é
+ *		I±ÌêÍCfBXpb`Û¯óÔÅÍÈ¢
+ *	(E) fBXpb`Û¯óÔÅCÀsóÔÉÈé×«¾ªÀsÂ\óÔ^X
+ *		Næèà¢DæxÌ^XNðCÀsÅ«éóÔÉ·é
+ *	(F) fBXpb`Û¯óÔÅCÀsóÔÉÈé×«¾ªÀsÂ\óÔ^X
+ *		NÆ¯¶DæxÌ^XNðCÀsÅ«éóÔÉ·é
+ *	(G) fBXpb`Û¯óÔÅCÀsóÔÉÈé×«¾ªÀsÂ\óÔ^X
+ *		Næèàá¢DæxÌ^XNðCÀsÅ«éóÔÉ·é
+ *	(H) ÀsóÔÌ^XNðCÀsÅ«éóÔÅÈ­·
+ *		(H-1) ÀsÅ«éóÔÌ^XNªÈ­Èéê
+ *		(H-2) ¯êDæxÌ^XNªÈ­Èéê
+ *		(H-3) ¯êDæxÌ^XNªÈ­ÈçÈ¢ê
+ *	(I) ÀsÂ\óÔÌ^XNðCÀsÅ«éóÔÅÈ­·
+ *		(I-1) ¯êDæxÌ^XNªÈ­Èéê
+ *		(I-2) ¯êDæxÌ^XNªÈ­ÈçÈ¢ê
+ *	(J) fBXpb`Û¯óÔÅCÀsóÔÉÈé×«¾ªÀsÂ\óÔÆÈÁ
+ *		Ä¢é^XNðCÀsÅ«éóÔÅÈ­·
+ *		(J-1) ¯êDæxÌ^XNªÈ­Èéê
+ *		(J-2) ¯êDæxÌ^XNªÈ­ÈçÈ¢ê
+ *	(K) fBXpb`Û¯óÔÅCÀsÂ\óÔÉÈé×«¾ªÀsóÔÌ^
+ *		XNðCÀsÅ«éóÔÅÈ­·
+ *		IfBXpb`Û¯ÅÍCÀsóÔÌ^XNªÀsÅ«éóÔÅÈ­
+ *		Èéæ¤ÈJÚðN±·±ÆªÅ«È¢½ßC±ÌóµÍN±çÈ¢D
+ *
+ * ygp\[Xz
+ *
+ *	TASK1: Dæx^XNCC^XNCÅ©çN®
+ *	TASK2: Dæx^XN
+ *	TASK3: Dæx^XN
+ *	TASK4: Dæx^XN
+ *	TASK5: áDæx^XN
+ *	TASK6: áDæx^XN
+ *	ALM1:  A[nh
+ *
+ * yeXgV[PXz
+ *
+ *	== TASK1iDæxFj==
+ *	1:	act_tsk(TASK2)					... (A-1)
+ *	== TASK2iDæxFj==
+ *	2:	slp_tsk()						... (H-2)
+ *	== TASK1i±«j==
+ *	3:	act_tsk(TASK3)					... (B)
+ *	4:	act_tsk(TASK4)					... (B)
+ *	5:	slp_tsk()						... (H-3)
+ *	== TASK3iDæxFj==
+ *	6:	slp_tsk()						... (H-3)
+ *	== TASK4iDæxFj==
+ *	7:	wup_tsk(TASK1)
+ *	8:	slp_tsk()						... (H-3)
+ *	== TASK1i±«j==
+ *	9:	act_tsk(TASK5)					... (C)
+ *	10:	act_tsk(TASK6)					... (C)
+ *	11:	sus_tsk(TASK6)					... (I-2)
+ *	12:	sus_tsk(TASK5)					... (I-1)
+ *	13:	rsm_tsk(TASK5)					... (C)
+ *	14:	rsm_tsk(TASK6)					... (C)
+ *	15:	slp_tsk()						... (H-2)
+ *	== TASK5iDæxFáj==
+ *	16:	slp_tsk()						... (H-3)
+ *	== TASK6iDæxFáj==
+ *	17:	dis_dsp()
+ *	18:	wup_tsk(TASK1)					... (A-2)
+ *	19:	wup_tsk(TASK2)					... (E)
+ *	20:	sus_tsk(TASK2)					... (J-1)
+ *	21:	wup_tsk(TASK3)					... (F)
+ *	22:	wup_tsk(TASK4)					... (F)
+ *	23:	sus_tsk(TASK1)					... (J-2)
+ *	24:	ena_dsp()
+ *	== TASK3i±«j==
+ *	25:	slp_tsk()						... (H-3)
+ *	== TASK4i±«j==
+ *	26:	slp_tsk()						... (H-2)
+ *	== TASK6i±«j==
+ *	27:	dis_dsp()
+ *	28:	rsm_tsk(TASK1)					... (A-2)
+ *	29:	wup_tsk(TASK5)					... (G)
+ *	30:	ena_dsp()
+ *	== TASK1i±«j==
+ *	31:	slp_tsk()						... (H-2)
+ *	== TASK6i±«j==
+ *	32:	slp_tsk()						... (H-3)
+ *	== TASK5i±«j==
+ *	33:	sta_alm(ALM1, 10)
+ *	34:	slp_tsk()						... (H-1)
+ *	== ALM1 ==
+ *	35:	iget_tid(&tskid)
+ *		assert(tskid == TSK_NONE)
+ *	36:	iwup_tsk(TASK1)					... (D)
+ *	37:	RETURN
+ *	== TASK1i±«j==
+ *	38: END
+ */
+
+#include <kernel.h>
+#include <test_lib.h>
+#include <t_syslog.h>
+#include "kernel_cfg.h"
+#include "test_task1.h"
+
+void
+alarm1_handler(intptr_t exinf)
+{
+	ER		ercd;
+	ID		tskid;
+
+	check_point(35);
+	ercd = iget_tid(&tskid);
+	check_ercd(ercd, E_OK);
+	check_assert(tskid == TSK_NONE);
+
+	check_point(36);
+	ercd = iwup_tsk(TASK1);
+	check_ercd(ercd, E_OK);
+
+	check_point(37);
+	return;
+
+	check_point(0);
+}
+
+void
+task1(intptr_t exinf)
+{
+	ER		ercd;
+
+	check_point(1);
+	ercd = act_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_point(3);
+	ercd = act_tsk(TASK3);
+	check_ercd(ercd, E_OK);
+
+	check_point(4);
+	ercd = act_tsk(TASK4);
+	check_ercd(ercd, E_OK);
+
+	check_point(5);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(9);
+	ercd = act_tsk(TASK5);
+	check_ercd(ercd, E_OK);
+
+	check_point(10);
+	ercd = act_tsk(TASK6);
+	check_ercd(ercd, E_OK);
+
+	check_point(11);
+	ercd = sus_tsk(TASK6);
+	check_ercd(ercd, E_OK);
+
+	check_point(12);
+	ercd = sus_tsk(TASK5);
+	check_ercd(ercd, E_OK);
+
+	check_point(13);
+	ercd = rsm_tsk(TASK5);
+	check_ercd(ercd, E_OK);
+
+	check_point(14);
+	ercd = rsm_tsk(TASK6);
+	check_ercd(ercd, E_OK);
+
+	check_point(15);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(31);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_finish(38);
+
+	check_point(0);
+}
+
+void
+task2(intptr_t exinf)
+{
+	ER		ercd;
+
+	check_point(2);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(0);
+}
+
+void
+task3(intptr_t exinf)
+{
+	ER		ercd;
+
+	check_point(6);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(25);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(0);
+}
+
+void
+task4(intptr_t exinf)
+{
+	ER		ercd;
+
+	check_point(7);
+	ercd = wup_tsk(TASK1);
+	check_ercd(ercd, E_OK);
+
+	check_point(8);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(26);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(0);
+}
+
+void
+task5(intptr_t exinf)
+{
+	ER		ercd;
+
+	check_point(16);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(33);
+	ercd = sta_alm(ALM1, 10);
+	check_ercd(ercd, E_OK);
+
+	check_point(34);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(0);
+}
+
+void
+task6(intptr_t exinf)
+{
+	ER		ercd;
+
+	check_point(17);
+	ercd = dis_dsp();
+	check_ercd(ercd, E_OK);
+
+	check_point(18);
+	ercd = wup_tsk(TASK1);
+	check_ercd(ercd, E_OK);
+
+	check_point(19);
+	ercd = wup_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_point(20);
+	ercd = sus_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_point(21);
+	ercd = wup_tsk(TASK3);
+	check_ercd(ercd, E_OK);
+
+	check_point(22);
+	ercd = wup_tsk(TASK4);
+	check_ercd(ercd, E_OK);
+
+	check_point(23);
+	ercd = sus_tsk(TASK1);
+	check_ercd(ercd, E_OK);
+
+	check_point(24);
+	ercd = ena_dsp();
+	check_ercd(ercd, E_OK);
+
+	check_point(27);
+	ercd = dis_dsp();
+	check_ercd(ercd, E_OK);
+
+	check_point(28);
+	ercd = rsm_tsk(TASK1);
+	check_ercd(ercd, E_OK);
+
+	check_point(29);
+	ercd = wup_tsk(TASK5);
+	check_ercd(ercd, E_OK);
+
+	check_point(30);
+	ercd = ena_dsp();
+	check_ercd(ercd, E_OK);
+
+	check_point(32);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(0);
+}
Index: /asp_ewarm/asp-1.7.0/test/test_task1.cfg
===================================================================
--- /asp_ewarm/asp-1.7.0/test/test_task1.cfg	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/test_task1.cfg	(revision 61)
@@ -0,0 +1,23 @@
+/*
+ *  @(#) $Id: test_task1.cfg 1569 2009-05-31 13:23:47Z ertl-hiro $
+ */
+
+/*
+ *  ^XNÇW
+[ÌeXg(1)ÌVXeRtBM
+[Vt@C
+ */
+INCLUDE("target_timer.cfg");
+INCLUDE("syssvc/syslog.cfg");
+INCLUDE("syssvc/banner.cfg");
+INCLUDE("syssvc/serial.cfg");
+
+#include "test_task1.h"
+
+CRE_TSK(TASK1, { TA_ACT, 1, task1, MID_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK2, { TA_NULL, 2, task2, HIGH_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK3, { TA_NULL, 3, task3, MID_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK4, { TA_NULL, 4, task4, MID_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK5, { TA_NULL, 5, task5, LOW_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK6, { TA_NULL, 6, task6, LOW_PRIORITY, STACK_SIZE, NULL });
+CRE_ALM(ALM1, { TA_NULL, 1, alarm1_handler });
Index: /asp_ewarm/asp-1.7.0/test/test_task1.h
===================================================================
--- /asp_ewarm/asp-1.7.0/test/test_task1.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/test_task1.h	(revision 61)
@@ -0,0 +1,81 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_task1.h 329 2007-07-17 07:28:32Z hiro $
+ */
+
+/* 
+ *		^XNÇW
+[ÌeXg(1)
+ */
+
+/*
+ *  ^[QbgË¶Ìè`
+ */
+#include "target_test.h"
+
+/*
+ *  DæxÌè`
+ */
+#define HIGH_PRIORITY	4		/* Dæx */
+#define MID_PRIORITY	9		/* Dæx */
+#define LOW_PRIORITY	14		/* áDæx */
+
+/*
+ *  ^[QbgÉË¶·éÂ\«Ì éèÌè`
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ^XNÌX^bNTCY */
+#endif /* STACK_SIZE */
+
+/*
+ *  ÖÌvg^Cvé¾
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+extern void	task1(intptr_t exinf);
+extern void	task2(intptr_t exinf);
+extern void	task3(intptr_t exinf);
+extern void	task4(intptr_t exinf);
+extern void	task5(intptr_t exinf);
+extern void	task6(intptr_t exinf);
+extern void	alarm1_handler(intptr_t exinf);
+
+#endif /* TOPPERS_MACRO_ONLY */
Index: /asp_ewarm/asp-1.7.0/test/test_tex1.c
===================================================================
--- /asp_ewarm/asp-1.7.0/test/test_tex1.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/test_tex1.c	(revision 61)
@@ -0,0 +1,568 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2006-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_tex1.c 2007 2010-12-31 05:48:15Z ertl-hiro $
+ */
+
+/* 
+ *		^XNáOÉÖ·éeXg(1)
+ *
+ * yeXgÌÚIz
+ *
+ *  ^XN©ç^XNáO[`ðN®·éðÔ
+IÉeXg·éD
+ *
+ * yeXgÚz
+ *
+ *	(A) ras_texÌG[o
+ *		(A-1) ÎÛ^XNªx~óÔ
+ *		(A-2) ÎÛ^XNÌ^XNáO[`ªè`³êÄ¢È¢
+ *	(B) dis_texÌG[o
+ *		(B-1) ©^XNÌ^XNáO[`ªè`³êÄ¢È¢
+ *	(C) ena_texÌG[o
+ *		(C-1) ©^XNÌ^XNáO[`ªè`³êÄ¢È¢
+ *	(D) ref_texÌG[o
+ *		(D-1) ÎÛ^XNªx~óÔ
+ *		(D-2) ÎÛ^XNÌ^XNáO[`ªè`³êÄ¢È¢
+ *	(E) ras_texÌ³í
+ *		(E-1) ÎÛ^XNª©^XNC^XNáOÂC©ÂÝDæ
+ *			  x}XNSðóÔÅC·®ÉÀsJn
+ *		(E-2) ÎÛ^XNª©^XNÅÈ¢
+ *		(E-3) ÎÛ^XNª©^XN¾ªC^XNáOÖ~
+ *		(E-4) ÎÛ^XNª©^XNÅ^XNáOÂ¾ªCÝDæ
+ *			  x}XNªSðÅÈ¢
+ *	(F) ena_texÌ³í
+ *		(F-1) ^XNáOvª èC©ÂÝDæx}XNSðó
+ *			  ÔÅC·®ÉÀsJn
+ *		(F-2) ^XNáOvªÈ¢
+ *		(F-3) ^XNáOvª éªCÝDæx}XNªSðÅ
+ *			  È¢
+ *	(G) chg_ipmÌ³í
+ *		(G-1) ^XNáOvª èC©Â^XNáOÂÅC·®
+ *			  ÉÀsJn
+ *		(G-2) ^XNáOvªÈ¢
+ *		(G-3) ^XNáOvª éªC^XNáOÖ~
+ *	(H) ^XNfBXpb`ÉæéN®
+ *		(H-1) fBXpb`ãÌ^XNª^XNáOÂÅ^XNáOv
+ *			   è
+ *	(I) ^XNáO[`©çÌ^[ÉæéN®iA±N®j
+ *	(J) ^XNáO[`©çÌßèÉæéóÔA
+ *		(J-1) ^XNÉßÁÄ­é
+ *		(J-2) ^XNáO[`ªA±N®³êé
+ *	(K) ^XNáO[`Ì½dN®
+ *	(L) ^XNáO[`©çÌßèÌ^XNØ·¦
+ *
+ * ygp\[Xz
+ *
+ *	TASK1: CÌ^XND©^XNÉÎµÄ^XNáOðv·é
+ *	TASK2: ¼^XNÉÎµÄ^XNáOðv·éÎÛ^XN
+ *	TASK3: ^XNáO[`ªè`³êÄ¢È¢^XN
+ *	TASK4: x~óÔÌ^XN
+ *
+ * yeXgV[PXz
+ *
+ *	== TASK1iDæxF10j==
+ *	1:	úóÔÌ`FbN
+ *		ref_tex(TSK_SELF, &rtex)
+ *		ras_tex(TASK3, 0x0001) -> E_OBJ		... (A-2)
+ *		ras_tex(TASK4, 0x0001) -> E_OBJ		... (A-1)
+ *		ref_tex(TASK3, &rtex) -> E_OBJ		... (D-2)
+ *		ref_tex(TASK4, &rtex) -> E_OBJ		... (D-1)
+ *	2:	ena_tex()							... (F-2)
+ *		ref_tex(TSK_SELF, &rtex)
+ *	3:	ras_tex(TSK_SELF, 0x0001)			... (E-1)
+ *	== TASK1^XNáO[`i1ñÚj==
+ *	4:	úóÔÌ`FbN
+ *	5:	dis_dsp() ... 4ÂÌóÔð»ê¼êÏ»³¹é
+ *		chg_ipm(TMAX_INTPRI)
+ *		ena_tex()
+ *		loc_cpu()
+ *		^[
+ *	== TASK1i±«j==
+ *	6:	ßÁÄ«½óÔÌ`FbN			... (J-1)
+ *	7:	dis_dsp() ... fBXpb`Ö~C^XNáOÖ~
+ *		dis_tex()
+ *	8:	ras_tex(TASK1, 0x0002)				... (E-3)
+ *		ref_tex(TSK_SELF, &rtex)
+ *	9:	ena_tex()							... (F-1)
+ *	== TASK1^XNáO[`i2ñÚj==
+ *	10:	úóÔÌ`FbN
+ *	11:	ras_tex(TASK1, 0x0001)				... (E-3)
+ *		ras_tex(TASK1, 0x0002)				... (E-3)
+ *	12:	ena_dsp() ... 3ÂÌóÔð»ê¼êÏ»³¹é
+ *		chg_ipm(TMAX_INTPRI)
+ *		loc_cpu()
+ *		^[							... (I)
+ *	== TASK1^XNáO[`i3ñÚj==
+ *	13:	úóÔÌ`FbN
+ *	14:	ena_dsp() ... fBXpb`ÂC^XNáOÂ
+ *		chg_ipm(TMAX_INTPRI)
+ *		ena_tex()
+ *		chg_ipm(TIPM_ENAALL)				... (G-2)
+ *		chg_ipm(TMAX_INTPRI)
+ *	15: ras_tex(TSK_SELF, 0x0004)			... (E-4)
+ *		dis_tex()
+ *		chg_ipm(TIPM_ENAALL)				... (G-3)
+ *		chg_ipm(TMAX_INTPRI)
+ *		ena_tex()							... (F-3)
+ *	16:	chg_ipm(TIPM_ENAALL)				... (G-1)(K)
+ *	== TASK1^XNáO[`i4ñÚj==
+ *	17:	úóÔÌ`FbN
+ *	18:	dis_dsp() ... 3ÂÌóÔð»ê¼êÏ»³¹é
+ *		chg_ipm(TMAX_INTPRI)
+ *		loc_cpu()
+ *		^[
+ *	== TASK1^XNáO[`i3ñÚ±«j==
+ *	19:	ßÁÄ«½óÔÌ`FbN			... (J-2)
+ *		^[
+ *	== TASK1i±«j==
+ *	20:	ßÁÄ«½óÔÌ`FbN			... (J-1)
+ *	21: ena_dsp()
+ *		rot_rdq(TPRI_SELF)
+ *	== TASK2iDæxF10j	==
+ *	22:	úóÔÌ`FbN
+ *	23:	ena_tex()
+ *		rot_rdq(TPRI_SELF)
+ *	== TASK3iDæxF10j	==
+ *	24:	úóÔÌ`FbN
+ *	25:	ena_tex() -> E_OBJ					... (C-1)
+ *	26:	dis_tex() -> E_OBJ					... (B-1)
+ *		ext_tsk()
+ *	== TASK1i±«j==
+ *	27: ras_tex(TASK2, 0x0001)				... (E-2)
+ *		ref_tex(TASK2, &rtex)
+ *	28:	rot_rdq(TPRI_SELF)					... (H-1)
+ *	== TASK2^XNáO[`i1ñÚj==
+ *	29:	úóÔÌ`FbN
+ *		^[
+ *	== TASK2i±«j==
+ *	30: ras_tex(TSK_SELF, 0x0002)
+ *	== TASK2^XNáO[`i2ñÚj==
+ *	31:	úóÔÌ`FbN
+ *	32:	dis_dsp()
+ *		rot_rdq(TPRI_SELF)
+ *	33:	^[							... (L)
+ *	== TASK1i±«j==
+ *	34:	^[i^XNI¹j
+ *	== TASK2i±«j==
+ *	35:	eXgI¹
+ */
+
+#include <kernel.h>
+#include <test_lib.h>
+#include <t_syslog.h>
+#include "kernel_cfg.h"
+#include "test_tex1.h"
+
+void
+tex_task1(TEXPTN texptn, intptr_t exinf)
+{
+	ER		ercd;
+
+	switch (texptn) {
+	case 0x0001:
+		check_point(4);
+		check_state(false, false, TIPM_ENAALL, false, false, true);
+
+		/*
+		 *  fBXpb`Ö~CÝDæx}XNÏXC^XNáOÂ
+		 */
+		check_point(5);
+		ercd = dis_dsp();
+		check_ercd(ercd, E_OK);
+		ercd = chg_ipm(TMAX_INTPRI);
+		check_ercd(ercd, E_OK);
+		ercd = ena_tex();
+		check_ercd(ercd, E_OK);
+		ercd = loc_cpu();
+		check_ercd(ercd, E_OK);
+		check_state(false, true, TMAX_INTPRI, true, true, false);
+		break;
+
+	case 0x0002:
+		check_point(10);
+		check_state(false, false, TIPM_ENAALL, true, true, true);
+
+		/*
+		 *  ^XNáOðv
+		 */
+		check_point(11);
+		ercd = ras_tex(TSK_SELF, 0x0001);
+		check_ercd(ercd, E_OK);
+		ercd = ras_tex(TSK_SELF, 0x0002);
+		check_ercd(ercd, E_OK);
+
+		/*
+		 *  fBXpb`ÂCÝDæx}XNÏXCCPUbN
+		 */
+		check_point(12);
+		ercd = ena_dsp();
+		check_ercd(ercd, E_OK);
+		ercd = chg_ipm(TMAX_INTPRI);
+		check_ercd(ercd, E_OK);
+		ercd = loc_cpu();
+		check_ercd(ercd, E_OK);
+		check_state(false, true, TMAX_INTPRI, false, true, true);
+		break;
+
+	case 0x0003:
+		check_point(13);
+		check_state(false, false, TIPM_ENAALL, true, true, true);
+
+		/*
+		 *  fBXpb`ÂCÝDæx}XNÏXC^XNáOÂ
+		 */
+		check_point(14);
+		ercd = ena_dsp();
+		check_ercd(ercd, E_OK);
+		ercd = chg_ipm(TMAX_INTPRI);
+		check_ercd(ercd, E_OK);
+		ercd = ena_tex();
+		check_ercd(ercd, E_OK);
+		check_state(false, false, TMAX_INTPRI, false, true, false);
+
+		ercd = chg_ipm(TIPM_ENAALL);
+		check_ercd(ercd, E_OK);
+		ercd = chg_ipm(TMAX_INTPRI);
+		check_ercd(ercd, E_OK);
+
+		/*
+		 *  ^XNáOðv
+		 */
+		check_point(15);
+		ercd = ras_tex(TSK_SELF, 0x0004);
+
+		ercd = dis_tex();
+		check_ercd(ercd, E_OK);
+		ercd = chg_ipm(TIPM_ENAALL);
+		check_ercd(ercd, E_OK);
+		ercd = chg_ipm(TMAX_INTPRI);
+		check_ercd(ercd, E_OK);
+		ercd = ena_tex();
+		check_ercd(ercd, E_OK);
+
+		check_point(16);
+		ercd = chg_ipm(TIPM_ENAALL);
+		/* ±±Å^XNáO[`ª®ì·é */
+		check_ercd(ercd, E_OK);
+
+		/*
+		 *  ^XNáO©çÌ^[Éæè³ÌóÔÉßÁÄ¢é±Æ
+		 *  ð`FbN
+		 */
+		check_point(19);
+		check_state(false, false, TIPM_ENAALL, false, false, false);
+		break;
+
+	case 0x0004:
+		check_point(17);
+		check_state(false, false, TIPM_ENAALL, false, false, true);
+
+		/*
+		 *  fBXpb`Ö~CÝDæx}XNÏXCCPUbN
+		 */
+		check_point(18);
+		ercd = dis_dsp();
+		check_ercd(ercd, E_OK);
+		ercd = chg_ipm(TMAX_INTPRI);
+		check_ercd(ercd, E_OK);
+		ercd = loc_cpu();
+		check_ercd(ercd, E_OK);
+		check_state(false, true, TMAX_INTPRI, true, true, true);
+		break;
+
+	default:
+		check_point(0);
+		break;
+	}
+}
+
+void
+task1(intptr_t exinf)
+{
+	ER		ercd;
+	T_RTEX	rtex;
+
+	/*
+	 *  úóÔÌ`FbN
+	 */
+	check_point(1);
+	check_state(false, false, TIPM_ENAALL, false, false, true);
+	ercd = ref_tex(TSK_SELF, &rtex);
+	check_ercd(ercd, E_OK);
+	check_assert((rtex.texstat & TTEX_DIS) != 0);
+	check_assert(rtex.pndptn == 0);
+
+	/*
+	 *  ras_texÌG[o
+	 */
+	ercd = ras_tex(TASK3, 0x0001);
+	check_ercd(ercd, E_OBJ);
+	ercd = ras_tex(TASK4, 0x0001);
+	check_ercd(ercd, E_OBJ);
+
+	/*
+	 *  ref_texÌG[o
+	 */
+	ercd = ref_tex(TASK3, &rtex);
+	check_ercd(ercd, E_OBJ);
+	ercd = ref_tex(TASK4, &rtex);
+	check_ercd(ercd, E_OBJ);
+
+	/*
+	 *  ^XNáOÌÂ
+	 */
+	check_point(2);
+	ercd = ena_tex();
+	check_ercd(ercd, E_OK);
+	check_state(false, false, TIPM_ENAALL, false, false, false);
+	ercd = ref_tex(TSK_SELF, &rtex);
+	check_ercd(ercd, E_OK);
+	check_assert((rtex.texstat & TTEX_ENA) != 0);
+	check_assert(rtex.pndptn == 0);
+
+	/*
+	 *  ^XNáOðv
+	 */
+	check_point(3);
+	ercd = ras_tex(TSK_SELF, 0x0001);
+	/* ±±Å^XNáO[`ª®ì·é */
+	check_ercd(ercd, E_OK);
+
+	/*
+	 *  ^XNáO©çÌ^[Éæè³ÌóÔÉßÁÄ¢é±Æð
+	 *  `FbN
+	 */
+	check_point(6);
+	check_state(false, false, TIPM_ENAALL, false, false, false);
+
+	/*
+	 *  fBXpb`Ö~C^XNáOÖ~
+	 */
+	check_point(7);
+	ercd = dis_dsp();
+	check_ercd(ercd, E_OK);
+	ercd = dis_tex();
+	check_ercd(ercd, E_OK);
+	check_state(false, false, TIPM_ENAALL, true, true, true);
+
+	/*
+	 *  ^XNáOðv
+	 */
+	check_point(8);
+	ercd = ras_tex(TASK1, 0x0002);
+	check_ercd(ercd, E_OK);
+	ercd = ref_tex(TSK_SELF, &rtex);
+	check_ercd(ercd, E_OK);
+	check_assert((rtex.texstat & TTEX_DIS) != 0);
+	check_assert(rtex.pndptn == 0x0002);
+
+	/*
+	 *  ^XNáOðÂ
+	 */
+	check_point(9);
+	ercd = ena_tex();
+	/* ±±Å^XNáO[`ª®ì·é */
+	check_ercd(ercd, E_OK);
+
+	/*
+	 *  ^XNáO©çÌ^[Éæè³ÌóÔÉßÁÄ¢é±Æð
+	 *  `FbN
+	 */
+	check_point(20);
+	check_state(false, false, TIPM_ENAALL, true, true, false);
+
+	/*
+	 *  ^XN2ÉØè·¦é
+	 */
+	check_point(21);
+	ercd = ena_dsp();
+	check_ercd(ercd, E_OK);
+	ercd = rot_rdq(TPRI_SELF);
+	/* ±±Å¼Ì^XNª®ì·é */
+	check_ercd(ercd, E_OK);
+
+	/*
+	 *  ^XN2ÉÎµÄ^XNáOðv
+	 */
+	check_point(27);
+	ercd = ras_tex(TASK2, 0x0001);
+	check_ercd(ercd, E_OK);
+	ercd = ref_tex(TASK2, &rtex);
+	check_ercd(ercd, E_OK);
+	check_assert((rtex.texstat & TTEX_ENA) != 0);
+	check_assert(rtex.pndptn == 0x0001);
+
+	/*
+	 *  ^XN2ÉØè·¦é
+	 */
+	check_point(28);
+	ercd = rot_rdq(TPRI_SELF);
+	/* ±±Å¼Ì^XNª®ì·é */
+	check_ercd(ercd, E_OK);
+
+	/*
+	 *  ^XNI¹
+	 */
+	check_point(34);
+}
+
+void
+tex_task2(TEXPTN texptn, intptr_t exinf)
+{
+	ER		ercd;
+
+	switch (texptn) {
+	case 0x0001:
+		check_point(29);
+		check_state(false, false, TIPM_ENAALL, false, false, true);
+		break;
+
+	case 0x0002:
+		check_point(31);
+		check_state(false, false, TIPM_ENAALL, false, false, true);
+
+		/*
+		 *  fBXpb`ðÖ~µÄC^XNØ·¦ðv·éD
+		 */
+		check_point(32);
+		ercd = dis_dsp();
+		check_ercd(ercd, E_OK);
+		ercd = rot_rdq(TPRI_SELF);
+		check_ercd(ercd, E_OK);
+
+		/*
+		 *  ^XNáO[`©çÌ^[ÅC^XNØ·¦ª­¶
+		 *  ·éD
+		 */
+		check_point(33);
+		break;
+
+	default:
+		check_point(0);
+		break;
+	}
+}
+
+void
+task2(intptr_t exinf)
+{
+	ER		ercd;
+
+	/*
+	 *  úóÔÌ`FbN
+	 */
+	check_point(22);
+	check_state(false, false, TIPM_ENAALL, false, false, true);
+
+	/*
+	 *  ^XNáOÌÂ
+	 */
+	check_point(23);
+	ercd = ena_tex();
+	check_ercd(ercd, E_OK);
+	check_state(false, false, TIPM_ENAALL, false, false, false);
+
+	/*
+	 *  ^XN3ÉØè·¦é
+	 */
+	ercd = rot_rdq(TPRI_SELF);
+	/* ±±Å¼Ì^XNª®ì·é */
+	check_ercd(ercd, E_OK);
+
+	/*
+	 *  ^XNáOðv
+	 */
+	check_point(30);
+	ercd = ras_tex(TSK_SELF, 0x0002);
+	/* ±±Å^XNáO[`ª®ì·é */
+	check_ercd(ercd, E_OK);
+
+	/*
+	 *  eXgI¹
+	 */
+	check_finish(35);
+}
+
+void
+task3(intptr_t exinf)
+{
+	ER		ercd;
+
+	/*
+	 *  úóÔÌ`FbN
+	 */
+	check_point(24);
+	check_state(false, false, TIPM_ENAALL, false, false, true);
+
+	/*
+	 *  ^XNáOÌÂ
+	 */
+	check_point(25);
+	ercd = ena_tex();
+	check_ercd(ercd, E_OBJ);
+	check_state(false, false, TIPM_ENAALL, false, false, true);
+
+	/*
+	 *  ^XNáOÌÖ~
+	 */
+	check_point(26);
+	ercd = dis_tex();
+	check_ercd(ercd, E_OBJ);
+	check_state(false, false, TIPM_ENAALL, false, false, true);
+
+	/*
+	 *  ^XNI¹
+	 */
+	ercd = ext_tsk();
+	check_point(0);
+}
+
+void
+task4(intptr_t exinf)
+{
+	check_point(0);
+}
+
+void
+tex_task4(TEXPTN texptn, intptr_t exinf)
+{
+	check_point(0);
+}
Index: /asp_ewarm/asp-1.7.0/test/test_tex1.cfg
===================================================================
--- /asp_ewarm/asp-1.7.0/test/test_tex1.cfg	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/test_tex1.cfg	(revision 61)
@@ -0,0 +1,25 @@
+/*
+ *  @(#) $Id: test_tex1.cfg 1572 2009-05-31 13:40:39Z ertl-hiro $
+ */
+
+/*
+ *  ^XNáOÉÖ·éeXg(1)ÌVXeRtBM
+[Vt@C
+ */
+INCLUDE("target_timer.cfg");
+INCLUDE("syssvc/syslog.cfg");
+INCLUDE("syssvc/banner.cfg");
+INCLUDE("syssvc/serial.cfg");
+
+#include "test_tex1.h"
+
+CRE_TSK(TASK1, { TA_ACT, 1, task1, TASK1_PRIORITY, STACK_SIZE, NULL });
+DEF_TEX(TASK1, { TA_NULL, tex_task1 });
+
+CRE_TSK(TASK2, { TA_ACT, 2, task2, TASK2_PRIORITY, STACK_SIZE, NULL });
+DEF_TEX(TASK2, { TA_NULL, tex_task2 });
+
+CRE_TSK(TASK3, { TA_ACT, 3, task3, TASK3_PRIORITY, STACK_SIZE, NULL });
+
+CRE_TSK(TASK4, { TA_NULL, 4, task4, TASK4_PRIORITY, STACK_SIZE, NULL });
+DEF_TEX(TASK4, { TA_NULL, tex_task4 });
Index: /asp_ewarm/asp-1.7.0/test/test_tex1.h
===================================================================
--- /asp_ewarm/asp-1.7.0/test/test_tex1.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/test_tex1.h	(revision 61)
@@ -0,0 +1,84 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2006,2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_tex1.h 329 2007-07-17 07:28:32Z hiro $
+ */
+
+/* 
+ *		^XNáOÉÖ·éeXg(1)
+ */
+
+/*
+ *  ^[QbgË¶Ìè`
+ */
+#include "target_test.h"
+
+/*
+ *  e^XNÌDæxÌè`
+ */
+#define TASK1_PRIORITY	10		/* ^XN1ÌDæx */
+#define TASK2_PRIORITY	10		/* ^XN2ÌDæx */
+#define TASK3_PRIORITY	10		/* ^XN3ÌDæx */
+#define TASK4_PRIORITY	10		/* ^XN4ÌDæx */
+
+/*
+ *  ^[QbgÉË¶·éÂ\«Ì éèÌè`
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ^XNÌX^bNTCY */
+#endif /* STACK_SIZE */
+
+/*
+ *  ÖÌvg^Cvé¾
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+extern void	tex_task1(TEXPTN texptn, intptr_t exinf);
+extern void	task1(intptr_t exinf);
+
+extern void	tex_task2(TEXPTN texptn, intptr_t exinf);
+extern void	task2(intptr_t exinf);
+
+extern void	task3(intptr_t exinf);
+
+extern void	tex_task4(TEXPTN texptn, intptr_t exinf);
+extern void	task4(intptr_t exinf);
+
+#endif /* TOPPERS_MACRO_ONLY */
Index: /asp_ewarm/asp-1.7.0/test/test_tex2.c
===================================================================
--- /asp_ewarm/asp-1.7.0/test/test_tex2.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/test_tex2.c	(revision 61)
@@ -0,0 +1,497 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2009 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_tex2.c 1577 2009-05-31 14:30:51Z ertl-hiro $
+ */
+
+/* 
+ *		^XNáOÉÖ·éeXg(2)
+ *
+ * yeXgÌÚIz
+ *
+ *  ÝnhiA[nhj¨æÑCPUáOnh©ç^XNá
+ *  O[`ðN®·éðÔ
+IÉeXg·éD
+ *
+ * yeXgÚz
+ *
+ *	(A) iras_texÌG[o
+ *		(A-1) ÎÛ^XNªx~óÔ
+ *		(A-2) ÎÛ^XNÌ^XNáO[`ªè`³êÄ¢È¢
+ *	(B) Ýnh©çÄÎê½iras_texÌ³í
+ *		(B-1) ÎÛ^XNªÀsóÔÌ^XN©Â^XNáOÂ
+ *		(B-2) ÎÛ^XNªÀsóÔÌ^XNÅÈ¢
+ *		(B-3) ÎÛ^XNªÀsóÔÌ^XN¾ª^XNáOÖ~
+ *	(C) CPUáOnh©çÄÎê½iras_texÌ³í
+ *		(C-1) ÎÛ^XNªÀsóÔÌ^XN©Â^XNáOÂ
+ *		(C-2) ÎÛ^XNªÀsóÔÌ^XNÅÈ¢
+ *		(C-3) ÎÛ^XNªÀsóÔÌ^XN¾ª^XNáOÖ~
+ *				¨ À{µÈ¢i^[QbgñË¶ÉÀ»Å«È¢j
+ *	(D) ÝnhÌoûÉæéN®
+ *		(D-1) fBXpb`ãÌ^XNª^XNáOÂÅ^XNáOv
+ *			   è
+ *	(E) CPUáOnhÌoûÉæéN®
+ *		(E-1) fBXpb`ãÌ^XNª^XNáOÂÅ^XNáOv
+ *			   è
+ *	(F) sns_texÅÀsóÔÌ^XNªÈ¢
+ *
+ * ygp\[Xz
+ *
+ *	TASK1: CÌ^XNDÀsóÔÌ^XNÉÎµÄ^XNáOðv·
+ *		   éÎÛ^XN
+ *	TASK2: ÀsóÔÅÈ¢^XNÉÎµÄ^XNáOðv·éÎÛ^XN
+ *	TASK3: ^XNáO[`ªè`³êÄ¢È¢^XN
+ *	TASK4: x~óÔÌ^XN
+ *	ALM1:  A[nh1
+ *	ALM2:  A[nh2
+ *	ALM3:  A[nh3
+ *	CPUEXC1: CPUáOnh
+ *
+ * yeXgV[PXz
+ *
+ *	== TASK1iDæxF10j==
+ *	1:	úóÔÌ`FbN
+ *		ref_tex(TSK_SELF, &rtex)
+ *	2:	sta_alm(ALM1, 1U)
+ *		A[nh1ÌÀsðÒÂ
+ *	== ALM1 ==
+ *	3:	úóÔÌ`FbN
+ *		iras_tex(TASK3, 0x0001)		... (A-2)
+ *		iras_tex(TASK4, 0x0001)		... (A-1)
+ *		iras_tex(TASK2, 0x0001)		... (B-2)
+ *		iras_tex(TASK1, 0x0001)		... (B-3)
+ *		^[
+ *	== TASK1i±«j==
+ *	4:	ena_tex()
+ *	== TASK1^XNáO[`i1ñÚj==
+ *	5:	úóÔÌ`FbN
+ *	6:	dis_dsp() ... 4ÂÌóÔð»ê¼êÏ»³¹é
+ *		chg_ipm(TMAX_INTPRI)
+ *		ena_tex()
+ *		loc_cpu()
+ *		^[
+ *	== TASK1i±«j==
+ *	7:	ßÁÄ«½óÔÌ`FbN
+ *		ref_tex(TSK_SELF, &rtex)
+ *	8:	sta_alm(ALM2, 1U)
+ *		A[nh2ÌÀsðÒÂ
+ *	== ALM2 ==
+ *	9:	úóÔÌ`FbN
+ *		iras_tex(TASK1, 0x0002)		... (B-1)
+ *		^[					... (D-1)
+ *	== TASK1^XNáO[`i2ñÚj==
+ *	10:	úóÔÌ`FbN
+ *		^[
+ *	== TASK1i±«j==
+ *	11:	sus_tsk(TASK2)
+ *		sus_tsk(TASK3)
+ *	12:	sta_alm(ALM3, 10U)
+ *	13:	dly_tsk(50U)
+ *	== ALM3 ==
+ *	14:	úóÔÌ`FbN
+ *		msns_tex()ðÜÞn			... (F)
+ *		iget_tid(&tskid)
+ *		iras_tex(TASK1, 0x0004)		... (B-2)
+ *		^[
+ *	== TASK1^XNáO[`i3ñÚj==
+ *	15:	úóÔÌ`FbN
+ *		^[
+ *	== TASK1i±«j==
+ *	16:	rsm_tsk(TASK2)
+ *		rsm_tsk(TASK3)
+ *		dis_dsp()
+ *	17:	RAISE_CPU_EXCEPTION
+ *	== CPUEXC1 ==
+ *	18:	úóÔÌ`FbN
+ *		xsns_xpn(p_excinf)
+ *		iras_tex(TASK3, 0x0010)		... (A-2)
+ *		iras_tex(TASK4, 0x0010)		... (A-1)
+ *		iras_tex(TASK2, 0x0010)		... (C-2)
+ *		iras_tex(TASK1, 0x0010)		... (C-1)
+ *		^[					... (E-1)
+ *	== TASK1^XNáO[`i4ñÚj==
+ *	19:	úóÔÌ`FbN
+ *	20:	ext_tsk()
+ *	== TASK2iDæxF10j==
+ *	21:	úóÔÌ`FbN
+ *	22:	ena_tex()
+ *	== TASK2^XNáO[` ==
+ *	23:	úóÔÌ`FbN
+ *		^[
+ *	== TASK2i±«j==
+ *	24:	sus_tsk(TASK3)
+ *	25:	eXgI¹
+ */
+
+#include <kernel.h>
+#include <test_lib.h>
+#include <t_syslog.h>
+#include "kernel_cfg.h"
+#include "test_tex2.h"
+
+volatile bool_t	alm1_flag = false;
+volatile bool_t	alm2_flag = false;
+volatile bool_t	alm3_flag = false;
+
+void
+tex_task1(TEXPTN texptn, intptr_t exinf)
+{
+	ER		ercd;
+
+	switch (texptn) {
+	case 0x0001:
+		check_point(5);
+		check_state(false, false, TIPM_ENAALL, false, false, true);
+
+		/*
+		 *  fBXpb`Ö~CÝDæx}XNÏXC^XNáOÂC
+		 *  CPUbN
+		 */
+		check_point(6);
+		ercd = dis_dsp();
+		check_ercd(ercd, E_OK);
+		ercd = chg_ipm(TMAX_INTPRI);
+		check_ercd(ercd, E_OK);
+		ercd = ena_tex();
+		check_ercd(ercd, E_OK);
+		ercd = loc_cpu();
+		check_ercd(ercd, E_OK);
+		check_state(false, true, TMAX_INTPRI, true, true, false);
+		break;
+
+	case 0x0002:
+		check_point(10);
+		check_state(false, false, TIPM_ENAALL, false, false, true);
+		break;
+
+	case 0x0004:
+		check_point(15);
+		check_state(false, false, TIPM_ENAALL, false, false, true);
+		break;
+
+	case 0x0010:
+		check_point(19);
+		check_state(false, false, TIPM_ENAALL, true, true, true);
+
+		/*
+		 *  ^XNI¹
+		 */
+		check_point(20);
+		ercd = ext_tsk();
+		check_point(0);
+		break;
+
+	default:
+		check_point(0);
+		break;
+	}
+}
+
+void
+task1(intptr_t exinf)
+{
+	ER		ercd;
+	T_RTEX	rtex;
+
+	/*
+	 *  úóÔÌ`FbN
+	 */
+	check_point(1);
+	check_state(false, false, TIPM_ENAALL, false, false, true);
+	ercd = ref_tex(TSK_SELF, &rtex);
+	check_ercd(ercd, E_OK);
+	check_assert((rtex.texstat & TTEX_DIS) != 0);
+	check_assert(rtex.pndptn == 0);
+
+	/*
+	 *  A[nh1Ì®ìJn
+	 */
+	check_point(2);
+	ercd = sta_alm(ALM1, 1U);
+	check_ercd(ercd, E_OK);
+
+	/*
+	 *  A[nh1ÌÀsðÒÂ
+	 */
+	while (!(alm1_flag));
+
+	/*
+	 *  ^XNáOðÂ
+	 */
+	check_point(4);
+	ercd = ena_tex();
+	/* ±±Å^XNáO[`ª®ì·é */
+	check_ercd(ercd, E_OK);
+
+	/*
+	 *  ^XNáO©çÌ^[Éæè³ÌóÔÉßÁÄ¢é±Æð
+	 *  `FbN
+	 */
+	check_point(7);
+	check_state(false, false, TIPM_ENAALL, false, false, false);
+	ercd = ref_tex(TSK_SELF, &rtex);
+	check_ercd(ercd, E_OK);
+	check_assert((rtex.texstat & TTEX_ENA) != 0);
+	check_assert(rtex.pndptn == 0);
+
+	/*
+	 *  A[nh2Ì®ìJn
+	 */
+	check_point(8);
+	ercd = sta_alm(ALM2, 1U);
+	check_ercd(ercd, E_OK);
+
+	/*
+	 *  A[nh2ÌÀsðÒÂ
+	 */
+	while (!(alm2_flag));
+
+	/*
+	 *  TASK2ÆTASK3ð~ßéD
+	 */
+	check_point(11);
+	ercd = sus_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+	ercd = sus_tsk(TASK3);
+	check_ercd(ercd, E_OK);
+
+	/*
+	 *  A[nh3Ì®ìJn
+	 */
+	check_point(12);
+	ercd = sta_alm(ALM3, 10U);
+	check_ercd(ercd, E_OK);
+
+	/*
+	 *  Àsx
+	 */
+	check_point(13);
+	ercd = dly_tsk(50U);
+	/* A[nh3ª®ì·é */
+	check_ercd(ercd, E_OK);
+
+	/*
+	 *  TASK2ÆTASK3ðÄJ·éD
+	 */
+	check_point(16);
+	ercd = rsm_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+	ercd = rsm_tsk(TASK3);
+	check_ercd(ercd, E_OK);
+
+	/*
+	 *  fBXpb`Ö~
+	 */
+	ercd = dis_dsp();
+	check_ercd(ercd, E_OK);
+
+	/*
+	 *  CPUáOð­¶³¹é
+	 */
+	check_point(17);
+	RAISE_CPU_EXCEPTION;
+
+	check_point(0);
+}
+
+void
+tex_task2(TEXPTN texptn, intptr_t exinf)
+{
+	switch (texptn) {
+	case 0x0011:
+		check_point(23);
+		check_state(false, false, TIPM_ENAALL, false, false, true);
+		break;
+
+	default:
+		check_point(0);
+		break;
+	}
+}
+
+void
+task2(intptr_t exinf)
+{
+	ER		ercd;
+
+	/*
+	 *  úóÔÌ`FbN
+	 */
+	check_point(21);
+	check_state(false, false, TIPM_ENAALL, false, false, true);
+
+	/*
+	 *  ^XNáOðÂ
+	 */
+	check_point(22);
+	ercd = ena_tex();
+	/* ±±Å^XNáO[`ª®ì·é */
+	check_ercd(ercd, E_OK);
+
+	/*
+	 *  TASK3ð~ßéD
+	 */
+	check_point(24);
+	ercd = sus_tsk(TASK3);
+	check_ercd(ercd, E_OK);
+
+	/*
+	 *  eXgI¹
+	 */
+	check_finish(25);
+}
+
+void
+task3(intptr_t exinf)
+{
+	check_point(0);
+}
+
+void
+task4(intptr_t exinf)
+{
+	check_point(0);
+}
+
+void
+tex_task4(TEXPTN texptn, intptr_t exinf)
+{
+	check_point(0);
+}
+
+void
+alarm1_handler(intptr_t exinf)
+{
+	ER		ercd;
+
+	/*
+	 *  úóÔÌ`FbN
+	 */
+	check_point(3);
+	check_state_i(true, false, false, true, true);
+
+	/*
+	 *  iras_texÌG[o
+	 */
+	ercd = iras_tex(TASK3, 0x0001);
+	check_ercd(ercd, E_OBJ);
+	ercd = iras_tex(TASK4, 0x0001);
+	check_ercd(ercd, E_OBJ);
+
+	/*
+	 *  ^XNáOðv
+	 */
+	ercd = iras_tex(TASK2, 0x0001);
+	check_ercd(ercd, E_OK);
+	ercd = iras_tex(TASK1, 0x0001);
+	check_ercd(ercd, E_OK);
+
+	alm1_flag = true;
+}
+
+void
+alarm2_handler(intptr_t exinf)
+{
+	ER		ercd;
+
+	/*
+	 *  úóÔÌ`FbN
+	 */
+	check_point(9);
+	check_state_i(true, false, false, true, false);
+
+	/*
+	 *  ^XNáOðv
+	 */
+	ercd = iras_tex(TASK1, 0x0002);
+	check_ercd(ercd, E_OK);
+
+	alm2_flag = true;
+}
+
+void
+alarm3_handler(intptr_t exinf)
+{
+	ER		ercd;
+	ID		tskid;
+
+	check_point(14);
+	check_state_i(true, false, false, true, true);
+	ercd = iget_tid(&tskid);
+	check_ercd(ercd, E_OK);
+	check_assert(tskid == TSK_NONE);
+
+	/*
+	 *  ^XNáOðv
+	 */
+	ercd = iras_tex(TASK1, 0x0004);
+	check_ercd(ercd, E_OK);
+
+	alm3_flag = true;
+}
+
+void
+cpuexc_handler(void *p_excinf)
+{
+	ER		ercd;
+
+	/*
+	 *  úóÔÌ`FbN
+	 */
+	check_point(18);
+	check_state_i(true, false, true, true, false);
+	check_assert(xsns_xpn(p_excinf) == false);
+
+	/*
+	 *  iras_texÌG[o
+	 */
+	ercd = iras_tex(TASK3, 0x0010);
+	check_ercd(ercd, E_OBJ);
+	ercd = iras_tex(TASK4, 0x0010);
+	check_ercd(ercd, E_OBJ);
+
+	/*
+	 *  ^XNáOðv
+	 */
+	ercd = iras_tex(TASK2, 0x0010);
+	check_ercd(ercd, E_OK);
+	ercd = iras_tex(TASK1, 0x0010);
+	check_ercd(ercd, E_OK);
+}
Index: /asp_ewarm/asp-1.7.0/test/test_tex2.cfg
===================================================================
--- /asp_ewarm/asp-1.7.0/test/test_tex2.cfg	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/test_tex2.cfg	(revision 61)
@@ -0,0 +1,31 @@
+/*
+ *  @(#) $Id: test_tex2.cfg 1572 2009-05-31 13:40:39Z ertl-hiro $
+ */
+
+/*
+ *  ^XNáOÉÖ·éeXg(1)ÌVXeRtBM
+[Vt@C
+ */
+INCLUDE("target_timer.cfg");
+INCLUDE("syssvc/syslog.cfg");
+INCLUDE("syssvc/banner.cfg");
+INCLUDE("syssvc/serial.cfg");
+
+#include "test_tex2.h"
+
+CRE_TSK(TASK1, { TA_ACT, 1, task1, TASK1_PRIORITY, STACK_SIZE, NULL });
+DEF_TEX(TASK1, { TA_NULL, tex_task1 });
+
+CRE_TSK(TASK2, { TA_ACT, 2, task2, TASK2_PRIORITY, STACK_SIZE, NULL });
+DEF_TEX(TASK2, { TA_NULL, tex_task2 });
+
+CRE_TSK(TASK3, { TA_ACT, 3, task3, TASK3_PRIORITY, STACK_SIZE, NULL });
+
+CRE_TSK(TASK4, { TA_NULL, 4, task4, TASK4_PRIORITY, STACK_SIZE, NULL });
+DEF_TEX(TASK4, { TA_NULL, tex_task4 });
+
+CRE_ALM(ALM1, { TA_NULL, 1, alarm1_handler });
+CRE_ALM(ALM2, { TA_NULL, 2, alarm2_handler });
+CRE_ALM(ALM3, { TA_NULL, 3, alarm3_handler });
+
+DEF_EXC(CPUEXC1, { TA_NULL, cpuexc_handler });
Index: /asp_ewarm/asp-1.7.0/test/test_tex2.h
===================================================================
--- /asp_ewarm/asp-1.7.0/test/test_tex2.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/test_tex2.h	(revision 61)
@@ -0,0 +1,89 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id: test_tex2.h 329 2007-07-17 07:28:32Z hiro $
+ */
+
+/* 
+ *		^XNáOÉÖ·éeXg(2)
+ */
+
+/*
+ *  ^[QbgË¶Ìè`
+ */
+#include "target_test.h"
+
+/*
+ *  e^XNÌDæxÌè`
+ */
+#define TASK1_PRIORITY	10		/* ^XN1ÌDæx */
+#define TASK2_PRIORITY	10		/* ^XN2ÌDæx */
+#define TASK3_PRIORITY	10		/* ^XN3ÌDæx */
+#define TASK4_PRIORITY	10		/* ^XN4ÌDæx */
+
+/*
+ *  ^[QbgÉË¶·éÂ\«Ì éèÌè`
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ^XNÌX^bNTCY */
+#endif /* STACK_SIZE */
+
+/*
+ *  ÖÌvg^Cvé¾
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+extern void	tex_task1(TEXPTN texptn, intptr_t exinf);
+extern void	task1(intptr_t exinf);
+
+extern void	tex_task2(TEXPTN texptn, intptr_t exinf);
+extern void	task2(intptr_t exinf);
+
+extern void	task3(intptr_t exinf);
+
+extern void	tex_task4(TEXPTN texptn, intptr_t exinf);
+extern void	task4(intptr_t exinf);
+
+extern void	alarm1_handler(intptr_t exinf);
+extern void	alarm2_handler(intptr_t exinf);
+extern void	alarm3_handler(intptr_t exinf);
+extern void	cpuexc_handler(void *p_excinf);
+
+#endif /* TOPPERS_MACRO_ONLY */
Index: /asp_ewarm/asp-1.7.0/test/test_utm1.c
===================================================================
--- /asp_ewarm/asp-1.7.0/test/test_utm1.c	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/test_utm1.c	(revision 61)
@@ -0,0 +1,114 @@
+/*
+ *  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) 2007-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  $Id: test_utm1.c 1860 2010-07-25 07:36:40Z ertl-hiro $
+ */
+
+/*
+ *		get_utmÉÖ·éeXg(1)
+ */
+
+#include <kernel.h>
+#include <test_lib.h>
+#include <t_syslog.h>
+#include "kernel_cfg.h"
+#include "test_utm1.h"
+
+#define	NO_LOOP		ULONG_C(100000)
+
+SYSUTM	recent_sysutm;
+char	*recent_sysutm_pos;
+uint_t	cyclic_count;
+
+void
+cyclic_handler(intptr_t exinf)
+{
+	SYSUTM		sysutm, prev_sysutm;
+	char		*prev_sysutm_pos;
+
+	iloc_cpu();
+	get_utm(&sysutm);
+	prev_sysutm = recent_sysutm;
+	prev_sysutm_pos = recent_sysutm_pos;
+	recent_sysutm = sysutm;
+	recent_sysutm_pos = "CYC";
+	iunl_cpu();
+
+	if (prev_sysutm > sysutm) {
+		syslog(LOG_NOTICE,
+				"system performance time goes back: %ld(%s) %ld(CYC)",
+				((long_t) prev_sysutm), prev_sysutm_pos, ((ulong_t) sysutm));
+	}
+	cyclic_count += 1;
+}
+
+void
+main_task(intptr_t exinf)
+{
+	SYSUTM		sysutm, prev_sysutm;
+	char		*prev_sysutm_pos;
+	ulong_t		i;
+
+	cyclic_count = 0U;
+	get_utm(&recent_sysutm);
+	syslog(LOG_NOTICE, "system performance time test starts.");
+
+	for (i = 0; i < NO_LOOP; i++) {
+		loc_cpu();
+		get_utm(&sysutm);
+		prev_sysutm = recent_sysutm;
+		prev_sysutm_pos = recent_sysutm_pos;
+		recent_sysutm = sysutm;
+		recent_sysutm_pos = "TSK";
+		unl_cpu();
+
+		if (prev_sysutm > sysutm) {
+			syslog(LOG_NOTICE,
+				"system performance time goes back: %ld(%s) %ld(TSK)",
+				((long_t) prev_sysutm), prev_sysutm_pos, ((ulong_t) sysutm));
+		}
+	}
+
+	syslog(LOG_NOTICE, "system performance time test finishes.");
+	syslog(LOG_NOTICE, "number of cyclic handler execution: %d", cyclic_count);
+	test_finish();
+}
Index: /asp_ewarm/asp-1.7.0/test/test_utm1.cfg
===================================================================
--- /asp_ewarm/asp-1.7.0/test/test_utm1.cfg	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/test_utm1.cfg	(revision 61)
@@ -0,0 +1,17 @@
+/*
+ *  $Id: test_utm1.cfg 1746 2010-02-11 18:18:25Z ertl-hiro $
+ */
+
+/*
+ *  get_utmÉÖ·éeXg(1)ÌVXeRtBM
+[Vt@C
+ */
+INCLUDE("target_timer.cfg");
+INCLUDE("syssvc/syslog.cfg");
+INCLUDE("syssvc/banner.cfg");
+INCLUDE("syssvc/serial.cfg");
+
+#include "test_utm1.h"
+
+CRE_CYC(CYC1, { TA_STA, 0, cyclic_handler, 2, 1 });
+CRE_TSK(MAIN_TASK, { TA_ACT, 0, main_task, MAIN_PRIORITY, STACK_SIZE, NULL });
Index: /asp_ewarm/asp-1.7.0/test/test_utm1.h
===================================================================
--- /asp_ewarm/asp-1.7.0/test/test_utm1.h	(revision 61)
+++ /asp_ewarm/asp-1.7.0/test/test_utm1.h	(revision 61)
@@ -0,0 +1,73 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2006-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  $Id: test_utm1.h 1746 2010-02-11 18:18:25Z ertl-hiro $
+ */
+
+/*
+ *		get_utmÉÖ·éeXg(1)
+ */
+
+/*
+ *  ^[QbgË¶Ìè`
+ */
+#include "target_test.h"
+
+/*
+ *  e^XNÌDæxÌè`
+ */
+#define MAIN_PRIORITY	10
+
+/*
+ *  ^[QbgÉË¶·éÂ\«Ì éèÌè`
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ^XNÌX^bNTCY */
+#endif /* STACK_SIZE */
+
+/*
+ *  ÖÌvg^Cvé¾
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+extern void	cyclic_handler(intptr_t exinf);
+extern void	main_task(intptr_t exinf);
+
+#endif /* TOPPERS_MACRO_ONLY */
Index: /asp_ewarm/asp-1.7.0/utils/applyrename
===================================================================
--- /asp_ewarm/asp-1.7.0/utils/applyrename	(revision 61)
+++ /asp_ewarm/asp-1.7.0/utils/applyrename	(revision 61)
@@ -0,0 +1,119 @@
+#! /usr/bin/perl
+#
+#  TOPPERS Software
+#      Toyohashi Open Platform for Embedded Real-Time Systems
+# 
+#  Copyright (C) 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
+# 
+#  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+#  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+#  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+#  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+#      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+#      スコード中に含まれていること．
+#  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+#      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+#      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+#      の無保証規定を掲載すること．
+#  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+#      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+#      と．
+#    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+#        作権表示，この利用条件および下記の無保証規定を掲載すること．
+#    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+#        報告すること．
+#  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+#      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+#      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+#      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+#      免責すること．
+# 
+#  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+#  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+#  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+#  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+#  の責任を負わない．
+# 
+#  @(#) $Id: applyrename 332 2007-07-17 12:15:37Z hiro $
+# 
+
+#
+#  ファイルにリネームを適用する
+#
+sub applyrename
+{
+	local($infile) = @_;
+	local($outfile) = $infile.".new";
+	local($line);
+
+	open(INFILE, "< ".$infile) || die;
+	open(OUTFILE, "> ".$outfile) || die;
+
+	while ($line = <INFILE>) {
+		$line =~ s/\b(_?)($syms)\b/$1_kernel_$2/gc;
+		print OUTFILE $line;
+	}
+
+	close(INFILE);
+	close(OUTFILE);
+
+	if (`cmp $infile $outfile`) {
+		rename($infile, $infile.".bak");
+		rename($outfile, $infile);
+		print STDERR "Modified: ",$infile,"\n";
+	}
+	else {
+		unlink($outfile);
+	}
+}
+
+#
+#  エラーチェック
+#
+if ($#ARGV < 1) {
+	die "Usage: appyrename <prefix> <filelist>\n";
+}
+
+#
+#  初期化
+#
+@syms = ();
+$name = $ARGV[0];
+
+#
+#  シンボルリストを読み込む
+#
+$deffile = $name."_rename.def";
+open(INFILE, $deffile) || die "Cannot open $deffile";
+while ($line = <INFILE>) {
+	chomp $line;
+	if ($line =~ /^#(.*)$/) {
+		# do nothing
+	}
+	elsif ($line =~ /^INCLUDE[ \t]+(.*)$/) {
+		# do nothing
+	}
+	elsif ($line ne "") {
+		@syms = (@syms, $line)
+	}
+}
+close(INFILE);
+
+#
+#  正規表現を作る
+#
+$syms = join("|", @syms);
+
+#
+#  ファイルにリネームを適用する
+#
+shift @ARGV;
+foreach $infile (@ARGV) {
+	# ファイルでなければスキップ
+	next unless (-f $infile);
+
+	do applyrename($infile) if ($infile ne $deffile);
+}
Index: /asp_ewarm/asp-1.7.0/utils/genoffset
===================================================================
--- /asp_ewarm/asp-1.7.0/utils/genoffset	(revision 61)
+++ /asp_ewarm/asp-1.7.0/utils/genoffset	(revision 61)
@@ -0,0 +1,271 @@
+#! /usr/bin/perl
+#
+#  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: genoffset 1891 2010-08-06 10:22:51Z ertl-hiro $
+# 
+
+#
+#  初期化
+#
+$infile = $ARGV[0];
+$sil_endian = "";
+
+#
+#  解釈できるディレクティブのテーブル
+#
+%directives = (
+	"long", "",
+	"dword", "",
+	"word", "",
+	"hword", "",
+	"int", "",
+	"short", "",
+	"half", "",
+	"byte", "",
+	"value", "",
+	"uaword", "",
+	"uashort", "",
+	"data32", 4,
+	"data16", 2,
+	"data8", 1,
+	"zero", -1,
+	"space", -1,
+	"globl", 0,
+	"global", 0,
+	"align", 0,
+	"p2align", 0,
+	"even", 0,
+	"data", 0,
+	"stabs", 0,
+	"type", 0,
+	"size", 0,
+	"section", 0,
+	"sdata", 0,
+	"code", 0,
+);
+
+#
+#  オフセット値の出力
+#
+sub parse_offset {
+	my($label, $val) = @_;
+
+	printf "#define %s\t%d\n",$label,$val;
+}
+
+#
+#  ディレクティブの読み取り
+#
+sub ref_bit {
+	my($size) = @_;
+	my($dir, $directive);
+
+	while ($line = <INFILE>) {
+		chomp $line;
+		next if ($line =~ /^[ \t]*[#;].*$/);
+
+		if ($line =~ /[ \t]*\.([a-zA-Z0-9]+)[ \t]*([^ \t]*)[ \t]*/
+						&& defined($dir = $directives{$1})) {
+			$directive = $1;
+			if ($dir eq "") {
+				# 登録すべきディレクティブ
+				$directives{$directive} = $size;
+			}
+			last;
+		}
+		else {
+			# 解析できない行
+			print STDERR "genoffset: cannot parse: $line\n";
+			$error = 1;
+		}
+	}
+}
+
+#
+#  ビットサーチ
+#
+sub search_bit {
+	my($val) = @_;
+	my($val_bit);
+
+	return(-1) if ($val == 0);
+
+	$val_bit = 0;
+	while (($val & 1) == 0) {
+		$val >>= 1;
+		$val_bit++;
+	}
+	return($val_bit);
+}
+
+#
+#  ビット位置の出力
+#
+sub parse_bit {
+	my($endian, $size, $label) = @_;
+	my($offset, $dir, $val, $val_bit);
+
+	if ($sil_endian && $endian ne $sil_endian) {
+		# エンディアンの不一致
+		print STDERR "genoffset: endian mismatch: $line\n";
+		$error = 1;
+	}
+
+	$offset = 0;
+	while ($line = <INFILE>) {
+		chomp $line;
+		next if ($line =~ /^[ \t]*[#;].*$/);
+
+		if ($line =~ /[ \t]*\.([a-zA-Z0-9]+)[ \t]*([^ \t]*)[ \t]*/
+						&& defined($dir = $directives{$1})) {
+			$val = $2;
+
+			# 16進数と8進数の数値への変換処理
+			if ($val =~ /^0x(.+)$/) {
+				$val = hex($1);
+			}
+			elsif ($val =~ /^0(.+)$/) {
+				$val = oct($1);
+			}
+
+			if ($dir eq "") {
+				# サイズを知らないディレクティブ
+				print STDERR "genoffset: unknown directive: $line\n";
+				$error = 1;
+			}
+			elsif ($dir == 0) {
+				# 読み飛ばすべきディレクティブ
+			}
+			elsif ($dir == -1) {
+				# .zeroディレクティブの処理
+				$offset += $val;
+			}
+			elsif ($val == 0) {
+				# 値が0のフィールドの処理
+				$offset += $dir;
+			}
+			else {
+				# 値が0でないフィールドが見つかればループを終了
+				last;
+			}
+		}
+		else {
+			# 解析できない行
+			print STDERR "genoffset: cannot parse: $line\n";
+			$error = 1;
+		}
+	}
+
+	# ビット位置を探す
+	$val_bit = do search_bit($val);
+
+	# バイト単位に換算する
+	if ($endian eq "B") {
+		$offset += $dir - 1;
+		$offset -= $val_bit >> 3;
+	}
+	else {
+		$offset += $val_bit >> 3;
+	}
+	$val_bit &= 0x07;
+
+	# 出力単位に換算する
+	if ($size eq "W") {
+		if ($endian eq "B") {
+			$val_bit += 24;
+			$val_bit -= ($offset & 0x03) << 3;
+		}
+		else {
+			$val_bit += ($offset & 0x03) << 3;
+		}
+		$offset &= ~0x03;
+	}
+	elsif ($size eq "H") {
+		if ($endian eq "B") {
+			$val_bit += 8;
+			$val_bit -= ($offset & 0x01) << 3;
+		}
+		else {
+			$val_bit += ($offset & 0x01) << 3;
+		}
+		$offset &= ~0x01;
+	}
+
+	# 定義の出力
+	$label =~ s/^_//;
+	printf "#define %s\t%d\n",$label,$offset;
+	printf "#define %s_bit\t%d\n",$label,$val_bit;
+	printf "#define %s_mask\t0x%x\n",$label,(1 << $val_bit);
+}
+
+#
+#  メインルーチン
+#
+print "/* This file is generated by genoffset. */\n";
+print "\n";
+
+$error = 0;
+open(INFILE, $infile) || die "Cannot open $infile";
+while ($line = <INFILE>) {
+	chomp $line;
+
+	if ($line =~ /^[ \t]*OFFSET_DEF ([^ \t]+) = [#\$]?([^ \t]+)/) {
+		do parse_offset($1, $2);
+	}
+	elsif ($line =~ /^[ \t]*_?BIT_REF_([0-9]+):/) {
+		do ref_bit($1);
+	}
+	elsif ($line =~ /^[ \t]*SIL_ENDIAN = ([BL])/) {
+		$sil_endian = $1;
+	}
+}
+#
+#  コンパイラがグローバル変数の配置順序を変更すると，BIT_REF_?が下にな
+#  る可能性があるため，頭から読み直す．
+#
+seek(INFILE, 0, SEEK_SET);
+while ($line = <INFILE>) {
+	chomp $line;
+
+	if ($line =~ /^[ \t]*_?BIT_([BL])([BHW])_([^ \t]+):/) {
+		do parse_bit($1, $2, $3);
+	}
+}
+close(INFILE);
+exit($error);
Index: /asp_ewarm/asp-1.7.0/utils/genrename
===================================================================
--- /asp_ewarm/asp-1.7.0/utils/genrename	(revision 61)
+++ /asp_ewarm/asp-1.7.0/utils/genrename	(revision 61)
@@ -0,0 +1,249 @@
+#! /usr/bin/perl
+#
+#  TOPPERS Software
+#      Toyohashi Open Platform for Embedded Real-Time Systems
+# 
+#  Copyright (C) 2003 by Embedded and Real-Time Systems Laboratory
+#                              Toyohashi Univ. of Technology, JAPAN
+#  Copyright (C) 2005-2007 by Embedded and Real-Time Systems Laboratory
+#              Graduate School of Information Science, Nagoya Univ., JAPAN
+# 
+#  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+#  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+#  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+#  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+#      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+#      スコード中に含まれていること．
+#  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+#      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+#      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+#      の無保証規定を掲載すること．
+#  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+#      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+#      と．
+#    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+#        作権表示，この利用条件および下記の無保証規定を掲載すること．
+#    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+#        報告すること．
+#  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+#      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+#      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+#      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+#      免責すること．
+# 
+#  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+#  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+#  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+#  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+#  の責任を負わない．
+# 
+#  @(#) $Id: genrename 509 2007-08-22 23:09:56Z hiro $
+# 
+
+#
+#  先頭につける文字列
+#
+sub prefix_string {
+	local($sym) = @_;
+
+	if ($sym =~ /[a-z]/) {
+		return("_kernel_");
+	}
+	else {
+		return("_KERNEL_");
+	}
+}
+
+#
+#  リネーム定義を生成する
+#
+sub generate_define
+{
+	local($sym, $prefix) = @_;
+
+	print FILE "#define ",$prefix,$sym;
+	print FILE "\t" if (length($prefix.$sym) < 4);
+	print FILE "\t" if (length($prefix.$sym) < 8);
+	print FILE "\t" if (length($prefix.$sym) < 12);
+	print FILE "\t" if (length($prefix.$sym) < 16);
+	print FILE "\t" if (length($prefix.$sym) < 20);
+	print FILE "\t" if (length($prefix.$sym) < 24);
+	print FILE "\t",$prefix,do prefix_string($sym),$sym,"\n";
+}
+
+#
+#  リネーム解除を生成する
+#
+sub generate_undef
+{
+	local($sym, $prefix) = @_;
+
+	print FILE "#undef ",$prefix,$sym,"\n";
+}
+
+#
+#  インクルードディレクティブを生成する
+#
+sub generate_include
+{
+	local($file, $prefix) = @_;
+
+	$file =~ s/([>"])$/_$prefix.h$1/;
+	$includes .= "#include ".$file."\n";
+}
+
+#
+#  エラーチェック
+#
+if ($#ARGV != 0) {
+	die "Usage: genrename <prefix>\n";
+}
+
+#
+#  初期化
+#
+@syms = ();
+$name = $ARGV[0];
+$NAME = $name; $NAME =~ y/a-z/A-Z/;
+
+$infile = $name."_rename.def";
+$header_defsym = "TOPPERS_".$NAME."_RENAME_H";
+
+#
+#  シンボルリストを読み込む
+#
+open(INFILE, $infile) || die "Cannot open $infile";
+while ($line = <INFILE>) {
+	chomp $line;
+	@syms = (@syms, $line);
+}
+close(INFILE);
+
+#
+#  ???_rename.h を生成する
+#
+$includes = "";
+$file = $name."_rename.h";
+open(FILE, "> ".$file);
+
+print FILE <<END;
+/* This file is generated from $infile by genrename. */
+
+#ifndef $header_defsym
+#define $header_defsym
+
+END
+
+foreach $sym (@syms) {
+	if ($sym =~ /^#(.*)$/) {
+		print FILE "/*\n";
+		print FILE " * ",$1,"\n";
+		print FILE " */\n";
+	}
+	elsif ($sym =~ /^INCLUDE[ \t]+(.*)$/) {
+		do generate_include($1, "rename");
+	}
+	elsif ($sym ne "") {
+		do generate_define($sym, "");
+	}
+	else {
+		print FILE "\n";
+	}
+}
+
+print FILE <<END;
+
+#ifdef TOPPERS_LABEL_ASM
+
+END
+
+foreach $sym (@syms) {
+	if ($sym =~ /^#(.*)$/) {
+		print FILE "/*\n";
+		print FILE " * ",$1,"\n";
+		print FILE " */\n";
+	}
+	elsif ($sym =~ /^INCLUDE[ \t]+(.*)$/) {
+		# do nothing
+	}
+	elsif ($sym ne "") {
+		do generate_define($sym, "_");
+	}
+	else {
+		print FILE "\n";
+	}
+}
+
+print FILE <<END;
+
+#endif /* TOPPERS_LABEL_ASM */
+
+$includes
+#endif /* $header_defsym */
+END
+
+#
+#  ???_unrename.h を生成する
+#
+$includes = "";
+$file = $name."_unrename.h";
+open(FILE, "> ".$file);
+
+print FILE <<END;
+/* This file is generated from $infile by genrename. */
+
+/* This file is included only when $name\_rename.h has been included. */
+#ifdef $header_defsym
+#undef $header_defsym
+
+END
+
+foreach $sym (@syms) {
+	if ($sym =~ /^#(.*)$/) {
+		print FILE "/*\n";
+		print FILE " * ",$1,"\n";
+		print FILE " */\n";
+	}
+	elsif ($sym =~ /^INCLUDE[ \t]+(.*)$/) {
+		do generate_include($1, "unrename");
+	}
+	elsif ($sym ne "") {
+		do generate_undef($sym, "");
+	}
+	else {
+		print FILE "\n";
+	}
+}
+
+print FILE <<END;
+
+#ifdef TOPPERS_LABEL_ASM
+
+END
+
+foreach $sym (@syms) {
+	if ($sym =~ /^#(.*)$/) {
+		print FILE "/*\n";
+		print FILE " * ",$1,"\n";
+		print FILE " */\n";
+	}
+	elsif ($sym =~ /^INCLUDE[ \t]+(.*)$/) {
+		# do nothing
+	}
+	elsif ($sym ne "") {
+		do generate_undef($sym, "_");
+	}
+	else {
+		print FILE "\n";
+	}
+}
+
+print FILE <<END;
+
+#endif /* TOPPERS_LABEL_ASM */
+
+$includes
+#endif /* $header_defsym */
+END
+
+close(FILE);
Index: /asp_ewarm/asp-1.7.0/utils/gentest
===================================================================
--- /asp_ewarm/asp-1.7.0/utils/gentest	(revision 61)
+++ /asp_ewarm/asp-1.7.0/utils/gentest	(revision 61)
@@ -0,0 +1,280 @@
+#! /usr/bin/perl
+#
+#  TOPPERS Software
+#      Toyohashi Open Platform for Embedded Real-Time Systems
+# 
+#  Copyright (C) 2007-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: gentest 1546 2009-05-08 10:05:22Z ertl-hiro $
+# 
+
+#
+#		テストプログラム生成ツール
+#
+
+$infile = $ARGV[0];
+
+%parampos = (
+	"get_pri" => 2,
+	"get_inf" => 1,
+	"ref_tsk" => 2,
+	"ref_tex" => 2,
+	"ref_sem" => 2,
+	"ref_flg" => 2,
+	"ref_dtq" => 2,
+	"ref_pdq" => 2,
+	"ref_mbx" => 2,
+	"ref_mtx" => 2,
+	"ref_mpf" => 2,
+	"get_tim" => 1,
+	"get_utm" => 1,
+	"ref_cyc" => 2,
+	"ref_alm" => 2,
+	"get_tid" => 1,
+	"iget_tid" => 1,
+	"get_ipm" => 1,
+);
+
+%paramtype = (
+	"get_pri" => "PRI",
+	"get_inf" => "intptr_t",
+	"ref_tsk" => "T_RTSK",
+	"ref_tex" => "T_RTEX",
+	"ref_sem" => "T_RSEM",
+	"ref_flg" => "T_RFLG",
+	"ref_dtq" => "T_RDTQ",
+	"ref_pdq" => "T_RPDQ",
+	"ref_mbx" => "T_RMBX",
+	"ref_mtx" => "T_RMTX",
+	"ref_mpf" => "T_RMPF",
+	"get_tim" => "SYSTIM",
+	"get_utm" => "SYSUTM",
+	"ref_cyc" => "T_RCYC",
+	"ref_alm" => "T_RALM",
+	"get_tid" => "ID",
+	"iget_tid" => "ID",
+	"get_ipm" => "PRI",
+);
+
+sub gen_var_def {
+	local($svc_call) = @_;
+	local($svcname, @params);
+	local($typename, $varname);
+
+	if ($svc_call =~ /^([a-z_]+)\((.*)\)$/) {
+		$svcname = $1;
+		@params = split(/\s*,\s*/, $2);
+
+		if ($parampos{$svcname}) {
+			$varname = $params[@parampos{$svcname} - 1];
+			$varname =~ s/^\&//;
+			$typename = $paramtype{$svcname};
+			${$TASKVAR{$tskid}}{$typename} = ${varname};
+		}
+	}
+}
+
+sub gen_svc_call {
+	local($svc_call, $error_code_string) = @_;
+	local($error_code);
+
+	$TASKCODE{$tskid} .= $indentstr;
+	$TASKCODE{$tskid} .= sprintf("ercd = %s;\n", $svc_call);
+	do gen_var_def($svc_call);
+
+	if ($error_code_string eq "") {
+		$TASKCODE{$tskid} .= $indentstr;
+		$TASKCODE{$tskid} .= sprintf("check_ercd(ercd, E_OK);\n");
+	}
+	elsif ($error_code_string =~ /^\-\>\s*noreturn$/) {
+		# do nothing.
+	}
+	else {
+		$error_code = $error_code_string;
+		$error_code =~ s/^\-\>\s*([A-Z_]*)$/$1/;
+		$TASKCODE{$tskid} .= $indentstr;
+		$TASKCODE{$tskid} .= sprintf("check_ercd(ercd, %s);\n", $error_code);
+	}
+}
+
+sub parse_line {
+	local($line) = @_;
+
+	if ($line =~ /^\.\./) {
+		# do nothing.
+	}
+	elsif ($line =~ /^==\s*((TASK|ALM)[0-9]+)(.*)$/) {
+		$startflag = 1;
+		$tskid = $1;
+		$line2 = $3;
+		if ($line2 =~ /^\-([0-9]+)/) {
+			$tskcount = $1;
+			$indentstr = "\t\t";
+			if (!$TASKCOUNT{$tskid}) {
+				$TASKCOUNT{$tskid} = 0;
+				if ($tskid =~ /^TASK([0-9]+)$/) {
+					$countvar = "task$1_count";
+				}
+				elsif ($tskid =~ /^ALM([0-9]+)$/) {
+					$countvar = "alarm$1_count";
+				}
+				$TASKCOUNTVAR{$tskid} = $countvar;
+			}
+			if ($tskcount == $TASKCOUNT{$tskid} + 1) {
+				if ($tskcount > 1) {
+					$TASKCODE{$tskid} .= "\n".$indentstr;
+					$TASKCODE{$tskid} .= sprintf("check_point(0);\n\n");
+				}
+				$TASKCOUNT{$tskid} = $tskcount;
+				$TASKCODE{$tskid} .= sprintf("\tcase %d:", $tskcount);
+			}
+			elsif ($tskcount != $TASKCOUNT{$tskid}) {
+				printf STDERR "Subtask count error: %d-%d\n",$tskid,$tskcount;
+			}
+		}
+		else {
+			$tskcount = "";
+			$indentstr = "\t";
+		}
+	}
+	elsif (!$startflag) {
+		# do nothing.
+	}
+	elsif ($line =~ /^(assert\(.*\))$/) {
+		$assert_string = $1;
+		$TASKCODE{$tskid} .= $indentstr;
+		$TASKCODE{$tskid} .= sprintf("check_%s;\n", $assert_string);
+	}
+	elsif ($line =~ /^call\((.*)\)$/) {
+		$call_string = $1;
+		$TASKCODE{$tskid} .= "\n".$indentstr;
+		$TASKCODE{$tskid} .= sprintf("%s;\n", $call_string);
+	}
+	elsif ($line =~ /^([0-9]+)\:\s*MISSING$/) {
+		$check_no = $1;
+		$TASKCODE{$tskid} .= "\n".$indentstr;
+		$TASKCODE{$tskid} .= sprintf("check_point(%d);\n", $check_no);
+	}
+	elsif ($line =~ /^([0-9]+)\:\s*RETURN$/) {
+		$check_no = $1;
+		$TASKCODE{$tskid} .= "\n".$indentstr;
+		$TASKCODE{$tskid} .= sprintf("check_point(%d);\n", $check_no);
+		$TASKCODE{$tskid} .= $indentstr;
+		$TASKCODE{$tskid} .= "return;\n";
+	}
+	elsif ($line =~ /^RETURN$/) {
+		$TASKCODE{$tskid} .= "\n".$indentstr;
+		$TASKCODE{$tskid} .= "return;\n";
+	}
+	elsif ($line =~ /^([0-9]+)\:\s*END$/) {
+		$check_no = $1;
+		$TASKCODE{$tskid} .= "\n".$indentstr;
+		$TASKCODE{$tskid} .= sprintf("check_finish(%d);\n", $check_no);
+		$endflag = 1;
+	}
+	elsif ($line =~ /^([0-9]+)\:\s*([a-z_]+\(.*\))\s*(\-\>\s*[A-Za-z_]*)?\s*$/) {
+		$check_no = $1;
+		$svc_call = $2;
+		$error_code_string = $3;
+		$TASKCODE{$tskid} .= "\n".$indentstr;
+		$TASKCODE{$tskid} .= sprintf("check_point(%d);\n", $check_no);
+		do gen_svc_call($svc_call, $error_code_string);
+	}
+	elsif ($line =~ /^([a-z_]+\(.*\))\s*(\-\>\s*[A-Za-z_]*)?\s*$/) {
+		$svc_call = $1;
+		$error_code_string = $2;
+		$TASKCODE{$tskid} .= "\n";
+		do gen_svc_call($svc_call, $error_code_string);
+	}
+	else {
+		print STDERR "Error: ",$line,"\n";
+	}
+}
+
+#
+#  スクリプトファイル読込み処理
+#
+$startflag = 0;
+$endflag = 0;
+open(INFILE, $infile) || die "Cannot open $infile";
+while (($line = <INFILE>) && !$endflag) {
+	chomp $line;
+	$line =~ s/^\s*\*\s*//;
+	$line =~ s/\s*\/\/.*$//;
+	$line =~ s/\s*\.\.\..*$//;
+	next unless($line);
+	do parse_line($line);
+}
+close(INFILE);
+
+#
+#  タスクコードの出力
+#
+sub output_task {
+	if ($TASKCOUNT{$tskid}) {
+		printf "\nstatic uint_t\t%s = 0;\n", $TASKCOUNTVAR{$tskid};
+	}
+	print "\nvoid\n";
+	if ($tskid =~ /^TASK([0-9]+)$/) {
+		print "task$1(intptr_t exinf)\n";
+	}
+	elsif ($tskid =~ /^ALM([0-9]+)$/) {
+		print "alarm$1_handler(intptr_t exinf)\n";
+	}
+	print "{\n";
+	print "\tER\t\tercd;\n";
+	foreach $typename (keys(%{$TASKVAR{$tskid}})) {
+		print "\t",$typename, (length($typename) < 4 ? "\t\t" : "\t"),
+								${$TASKVAR{$tskid}}{$typename},";\n";
+	}
+	if ($TASKCOUNT{$tskid}) {
+		printf "\n\tswitch (++%s) {\n", $TASKCOUNTVAR{$tskid};
+	}
+	print $TASKCODE{$tskid};
+	if ($TASKCOUNT{$tskid}) {
+		printf "\n\t\tcheck_point(0);\n";
+		printf "\t}\n";
+	}
+	else {
+		print "\n";
+	}
+	print "\tcheck_point(0);\n";
+	print "}\n";
+}
+
+#
+#  テストプログラム出力処理
+#
+foreach $tskid (sort(keys(TASKCODE))) {
+	do output_task();
+}
Index: /asp_ewarm/asp-1.7.0/utils/makedep
===================================================================
--- /asp_ewarm/asp-1.7.0/utils/makedep	(revision 61)
+++ /asp_ewarm/asp-1.7.0/utils/makedep	(revision 61)
@@ -0,0 +1,180 @@
+#! /usr/bin/perl
+#
+#  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-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: makedep 2004 2010-12-31 00:43:36Z ertl-hiro $
+# 
+
+require "getopt.pl";
+
+#  オプションの定義
+#
+#  -C <cc_path>		Cコンパイラのコマンド名
+#  -O <cc_opts>		Cコンパイラ/CPPに渡すオプション
+#  -X				ソースファイルを強制的にCヘッダファイルと見なす
+#
+#  -T <target>		ターゲット名（のリスト）
+#  -D <t_dir>		ターゲットのディレクトリ名を指定する（-Tを用いた場
+#					合は無効）
+#  -d				ターゲットのディレクトリ部を保持する（-Tを用いた場
+#					合は無効）
+#  -S				複数のターゲットがある依存ルールを，ターゲット毎に
+#					分割する（こうしないと対応できないmakeがあるらしい）
+#
+#  -R <dirname>		Cygwin環境におけるルートディレクトリ名を指定する
+#					（デフォルトはcygdrive）
+
+#
+#  オプションの処理
+#
+do Getopt("COTDR");
+
+$cc_path = $opt_C;
+$cc_opts = $opt_O;
+
+if ($opt_T) {
+	$target_name = $opt_T;
+}
+elsif ($opt_D) {
+	$target_dir = $opt_D;
+}
+elsif (!$opt_d) {
+	$target_dir = "";
+}
+
+if ($opt_R) {
+	$cygwin_root = $opt_R;
+}
+else {
+	$cygwin_root = "cygdrive";
+}
+
+#
+#  Cygwin環境の判別
+#
+use POSIX;
+@uname = do uname();
+if ($uname[0] =~ /^cygwin/i) {
+	$cygwin = 1;
+}
+
+#
+#  %dependlist に作られた依存関係を出力する
+#
+sub output_dependlist {
+	local($target) = @_;
+	local($column, $len, $file);
+
+	print $target, ": ";
+	$column = length($target) + 2;
+
+	foreach $file (keys(%dependlist)) {
+		$len = length($file) + 1;
+		if ($column > 8 && $column + $len >= 70) {
+			print "\\\n\t";
+			$column = 8;
+		}
+		$column += $len;
+		print "$file ";
+	}
+	print "\n";
+}
+
+#
+#  $file の依存関係を %dependlist に作る
+#
+sub makedepend_one {
+	local($file) = @_;
+	local($command, $input, $dir, $filename);
+
+	$command = "$cc_path -E $cc_opts";
+	if ($opt_X) {
+		$command .= " -x c-header";
+	}
+	unless (open(INPUT, "$command $file |")) {
+		print STDERR "makedep: can't open $file\n";
+		exit(1);
+	}
+	while ($line = <INPUT>) {
+		if ($line =~ /^\#\s*([0-9]+)\s*\"([^\"]+)\"/) {
+			$filename = $2;
+			$filename =~ s/ /\\ /g;
+			if ($filename !~ /^\<.*\>$/ && $filename !~ /\/$/) {
+				if ($cygwin) {
+					$filename =~ s/^([a-zA-Z]):/\/$cygwin_root\/$1/;
+				}
+				$dependlist{$filename} = 1;
+			}
+		}
+	}
+	unless (close(INPUT)) {
+		print STDERR "makedep: can't execute $command\n";
+		exit(1);
+	}
+}
+
+#
+#  メインルーチン
+#
+foreach $file (@ARGV) {
+	%dependlist = ();
+	do makedepend_one($file);
+	if (%dependlist) {
+		if ($target_name) {
+			if ($opt_S) {
+				foreach $target (split(/[ \t]+/, $target_name)) {
+					do output_dependlist($target);
+				}
+			}
+			else {
+				do output_dependlist($target_name);
+			}
+		}
+		else {
+			$target = $file;
+			$target =~ s/(.*)\.(.*)/$1.o/;
+			if (defined($target_dir)) {
+				$target =~ s/^.*\/([^\/]+)$/$1/;
+				if ($target_dir) {
+					$target = $target_dir."/".$target;
+				}
+			}
+			do output_dependlist($target);
+		}
+	}
+}
Index: /asp_ewarm/asp-1.7.0/utils/makerelease
===================================================================
--- /asp_ewarm/asp-1.7.0/utils/makerelease	(revision 61)
+++ /asp_ewarm/asp-1.7.0/utils/makerelease	(revision 61)
@@ -0,0 +1,156 @@
+#! /usr/bin/perl
+#
+#  TOPPERS Software
+#      Toyohashi Open Platform for Embedded Real-Time Systems
+# 
+#  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: makerelease 1866 2010-07-25 13:19:17Z ertl-hiro $
+# 
+
+require 'getcwd.pl';
+
+$cwd = getcwd();
+$cwd =~ s/^.*[\/\\]([^\/\\]+)$/$1/;
+$prefix = "./".$cwd;
+
+@file_list = ();
+%file_list = ();
+
+if ($#ARGV >= 0) {
+	$arg1 = $ARGV[0];
+	$arg1 =~ s/\.\///;
+}
+else {
+	$arg1 = "MANIFEST";
+}
+
+sub gen_path
+{
+	local($base, $path) = @_;
+
+	while ($path =~ /^..\/(.*)$/) {
+		$path = $1;
+		$base =~ s/(\/?)[^\/]*\/$/$1/;
+	}
+	return($base.$path);
+}
+
+sub read_file {
+	local($filename) = @_;
+	local($fh, $dirname);
+
+	if ($filename =~ /^(.*\/)[^\/]*$/) {
+		$dirname = $1;
+	}
+	else {
+		$dirname = "";
+	}
+
+	open($fh, $filename) || die "Cannot open $infile";
+	while ($line = <$fh>) {
+		chomp $line;
+		$line =~ s/\r$//;
+		$line =~ s/[ \t]*\#.*$//;
+		next if ($line =~ /^[ \t]*$/);
+
+		if ($line =~ /^E_PACKAGE[ \t]+(.*)$/) {
+			if ($package) {
+				die "Duplicated E_PACKAGE directive.";
+			}
+			else {
+				$package = $1;
+				$e_package = 1;
+			}
+		}
+		elsif ($line =~ /^PACKAGE[ \t]+(.*)$/) {
+			if ($package) {
+				if (!$e_package && $package != $1) {
+					die "Inconsistent PACKAGE directive.";
+				}
+			}
+			else {
+				$package = $1;
+			}
+		}
+		elsif ($line =~ /^VERSION[ \t]+(.*)$/) {
+			if ($version) {
+				if (!$e_package && $version != $1) {
+					die "Inconsistent VERSION directive.";
+				}
+			}
+			else {
+				$version = $1;
+				if ($version =~ /%date/) {
+					@current_time = localtime();
+					$vdate = sprintf("%04d%02d%02d", $current_time[5]+1900,
+										$current_time[4]+1, $current_time[3]);
+					$version =~ s/%date/$vdate/;
+				}
+			}
+		}
+		elsif ($line =~ /^INCLUDE[ \t]+(.*)$/) {
+			do read_file(do gen_path($dirname, $1));
+		}
+		else {
+			$filename = $prefix."/".$dirname.$line;
+			while ($filename =~ s|/[^/]+/\.\./|/|) {}
+			if ($file_list{$filename}) {
+				die "$filename is duplicated.";
+			}
+			else {
+				push(@file_list, $filename);
+				$file_list{$filename} = $filename;
+			}
+		}
+	}
+	close($fh);
+}
+
+do read_file($arg1);
+unless ($package) {
+	die "PACKAGE/E_PACKAGE directive not found.";
+}
+unless ($version) {
+	die "VERSION directive not found.";
+}
+
+if (! -d "RELEASE") {
+	mkdir("RELEASE");
+}
+
+$archive_name = $package."-".$version.".tar.gz";
+$file_list = join(" ", @file_list);
+$command = "tar cvfz RELEASE/$archive_name -C .. $file_list\n";
+die if (system($command));
+print STDERR "== RELEASE/$archive_name is generated. ==\n";
