Index: /MANIFEST
===================================================================
--- /MANIFEST	(revision 7)
+++ /MANIFEST	(revision 7)
@@ -0,0 +1,112 @@
+PACKAGE asp
+VERSION 1.9.2
+
+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
+library/vasyslog.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
+
+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: /README.txt
===================================================================
--- /README.txt	(revision 7)
+++ /README.txt	(revision 7)
@@ -0,0 +1,47 @@
+
+	TOPPERS/ASP Kernel¡ÊRelease 1.9.2¡Ë
+		Toyohashi Open Platform for Embedded Real-Time Systems/
+		Advanced Standard Profile Kernel
+
+TOPPERS/ASP¥«¡Œ¥Í¥ë¡Ê°Ê²Œ¡€ASP¥«¡Œ¥Í¥ë¡Ë€Ï¡€TOPPERS¿·À€Âå¥«¡Œ¥Í¥ë€ÎŽðÈ×
+€È€Ê€ë€â€Î€È€·€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë€ª€€€Æ³«È¯€·€¿¥ê¥¢¥ë¥¿¥€¥à¥«¡Œ¥Í
+¥ë€Ç€¹¡¥ŠÌITRON4.0»ÅÍÍ€Î¥¹¥¿¥ó¥À¡Œ¥É¥×¥í¥Õ¥¡¥€¥ëœàµò€Î¥ê¥¢¥ë¥¿¥€¥à¥«¡Œ
+¥Í¥ë€Ç€¢€ëTOPPERS/JSP¥«¡Œ¥Í¥ë€ò³ÈÄ¥¡Š²þÎÉ€¹€ë·Á€Ç³«È¯€·€Þ€·€¿¡¥
+
+¡ÚºÇœé€ËÆÉ€à€Ù€­¥É¥­¥å¥á¥ó¥È¡Û
+
+ASP¥«¡Œ¥Í¥ë€Î¥æ¡Œ¥¶¡Œ¥º¥Þ¥Ë¥å¥¢¥ë€¬¡€doc/user.txt€Ë€¢€ê€Þ€¹¡¥ASP¥«¡Œ¥Í
+¥ë€ò»ÈÍÑ€¹€ëŸì¹ç€Ë€Ï¡€€Þ€º€Ï€³€Î¥É¥­¥å¥á¥ó¥È€«€é€ªÆÉ€ß²Œ€µ€€¡¥
+
+¡Ú¥Õ¥¡¥€¥ë€Î±ÜÍ÷€Ë€¢€¿€Ã€Æ¡Û
+
+ASP¥«¡Œ¥Í¥ë€Î¥É¥­¥å¥á¥ó¥È¡Ê¥×¥ì¡Œ¥ó¥Æ¥­¥¹¥È¥Õ¥¡¥€¥ë¡Ë€ª€è€Ó¥œ¡Œ¥¹¥Õ¥¡¥€
+¥ë€òÆÉ€àºÝ€Ë€Ï¡€TAB€ò4€ËÀßÄê€·€Æ€¯€À€µ€€¡¥
+
+¡ÚÍøÍÑŸò·ï¡Û
+
+ASP¥«¡Œ¥Í¥ë€ÎÍøÍÑŸò·ï€Ï¡€³Æ¥Õ¥¡¥€¥ë€ÎÀèÆ¬€ËÉœŒš€µ€ì€Æ€€€ëTOPPERS¥é¥€¥»
+¥ó¥¹€Ç€¹¡¥TOPPERS¥é¥€¥»¥ó¥¹€ËŽØ€¹€ëFAQ€¬¡€°Ê²Œ€Î¥Ú¡Œ¥ž€Ë€¢€ê€Þ€¹¡¥
+
+	http://www.toppers.jp/faq/faq_ct12.html
+
+¡ÚŒÁÌä¡Š¥Ð¥°¥ì¥Ý¡Œ¥È¡Š°Õž«Åù€ÎÁ÷ÉÕÀè¡Û
+
+ASP¥«¡Œ¥Í¥ë€ò€è€êÎÉ€€€â€Î€Ë€¹€ë€¿€á€Î€Ž°Õž«Åù€òŽ¿·Þ€·€Þ€¹¡¥ASP¥«¡Œ¥Í¥ë
+€ËŽØ€¹€ëŒÁÌä€ä¥Ð¥°¥ì¥Ý¡Œ¥È¡€€Ž°Õž«Åù€Ï¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Î²ñ°÷€Ï
+TOPPERS³«È¯ŒÔ¥á¡Œ¥ê¥ó¥°¥ê¥¹¥È¡Êdev@toppers.jp¡Ë°ž€Þ€¿€ÏASP¥«¡Œ¥Í¥ë€Î¥Ð
+¥°¥È¥é¥Ã¥­¥ó¥°¥·¥¹¥Æ¥à¡ÊTrac¡Ë€Ë¡€€œ€ÎÂŸ€ÎÊý€ÏTOPPERS¥æ¡Œ¥¶¡Œ¥º¥á¡Œ¥ê¥ó
+¥°¥ê¥¹¥È¡Êusers@toppers.jp¡Ë°ž€Ë€ªŽê€€€·€Þ€¹¡¥
+
+TOPPERS¥æ¡Œ¥¶¡Œ¥º¥á¡Œ¥ê¥ó¥°¥ê¥¹¥È€Ø€ÎÅÐÏ¿ÊýË¡€Ë€Ä€€€Æ€Ï¡€°Ê²Œ€Î¥Ú¡Œ¥ž€Ë
+ÀâÌÀ€¬€¢€ê€Þ€¹¡¥
+
+	http://www.toppers.jp/community.html
+
+¡Ú¥Ý¡Œ¥Æ¥£¥ó¥°€Ë€¢€¿€Ã€Æ¡Û
+
+ASP¥«¡Œ¥Í¥ë€ò¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€«€é¥ª¡Œ¥×¥ó¥œ¡Œ¥¹€Ë€¹€ë€³€È€òÁ°Äó€Ë¡€
+Ì€¥µ¥Ý¡Œ¥È€Î¥¿¡Œ¥²¥Ã¥È€Ë¥Ý¡Œ¥Æ¥£¥ó¥°€µ€ì€ëŸì¹ç€Ë€Ï¡€€¢€é€«€ž€á€ŽÁêÃÌ€¯
+€À€µ€ë€È¹¬€€€Ç€¹¡¥
+
+°ÊŸå
Index: /arch/gcc/MANIFEST
===================================================================
--- /arch/gcc/MANIFEST	(revision 7)
+++ /arch/gcc/MANIFEST	(revision 7)
@@ -0,0 +1,4 @@
+PACKAGE asp
+
+MANIFEST
+tool_stddef.h
Index: /arch/gcc/tool_stddef.h
===================================================================
--- /arch/gcc/tool_stddef.h	(revision 7)
+++ /arch/gcc/tool_stddef.h	(revision 7)
@@ -0,0 +1,202 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		t_stddef.h€Î³«È¯ŽÄ¶­°ÍÂžÉô¡ÊGCCÍÑ¡Ë
+ */
+
+#ifndef TOPPERS_TOOL_STDDEF_H
+#define TOPPERS_TOOL_STDDEF_H
+
+/*
+ *  ¥³¥ó¥Ñ¥€¥é€Î³ÈÄ¥µ¡Çœ€Î€¿€á€Î¥Þ¥¯¥íÄêµÁ
+ */
+#ifndef __cplusplus					/* C++€Ë€Ïinline €¬€¢€ë */
+#if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901L
+									/* C99€Ë€Ïinline €¬€¢€ë */
+#define inline	__inline__			/* ¥€¥ó¥é¥€¥óŽØ¿ô */
+#endif /* !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901L */
+#endif /* __cplusplus */
+
+#define Inline	static __inline__	/* ¥€¥ó¥é¥€¥óŽØ¿ô */
+
+#ifndef __cplusplus					/* C++€Ë€Ïasm€¬€¢€ë */
+#define asm		__asm__				/* ¥€¥ó¥é¥€¥ó¥¢¥»¥ó¥Ö¥é */
+#endif /* __cplusplus */
+
+#define Asm		__asm__ volatile	/* ¥€¥ó¥é¥€¥ó¥¢¥»¥ó¥Ö¥é¡ÊºÇÅ¬²œÍÞ»ß¡Ë*/
+
+#define NoReturn	__attribute__((__noreturn__))
+									/* ¥ê¥¿¡Œ¥ó€·€Ê€€ŽØ¿ô */
+
+/*
+ *  ³«È¯ŽÄ¶­€ÎÉžœà¥€¥ó¥¯¥ë¡Œ¥É¥Õ¥¡¥€¥ë€ÎÍøÍÑ
+ *
+ *  NULL€ÎÄêµÁ€òstddef.h€«€é¡€INT_MAX¡€INT_MIN¡€UINT_MAX¡€LONG_MAX¡€
+ *  LONG_MIN¡€ULONG_MAX¡€CHAR_BIT€ÎÄêµÁ€òlimits.h€«€éŒè€ê¹þ€à¡¥
+ *
+ *  C++/EC++€Ç€Ï¡€Éžœà»ÅÍÍŸå€Ï€³€ì€é€Î¥€¥ó¥¯¥ë¡Œ¥É¥Õ¥¡¥€¥ë€¬ÍÑ°Õ€µ€ì€Æ
+ *  €€€ë€È€ÏžÂ€é€Ê€€€Î€ÇÃí°Õ€¬É¬Í×€Ç€¢€ë¡Ê€Û€È€ó€É€Î³«È¯ŽÄ¶­€ÇÍÑ°Õ€µ€ì
+ *  €Æ€€€ë¡Ë¡¥
+ */
+#ifndef TOPPERS_MACRO_ONLY
+#include <stddef.h>
+#include <limits.h>
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  stdint.h€ÎÂåÍÑ€È€Ê€ëÄêµÁ
+ *
+ *  ³«È¯ŽÄ¶­€Ëstdint.h€¬ÍÑ°Õ€µ€ì€Æ€ª€é€º¡€³ÆÀ°¿ô·¿€Î¥µ¥€¥º€¬€¢€ë¥Ñ¥¿¡Œ
+ *  ¥ó€ËÅö€Æ€Ï€Þ€ëŸì¹ç€Ë¡€stdint.h€ÎÂåÍÑ€È€Ê€ëÄêµÁ€òÍ¿€š€ë¡¥
+ *
+ *  TOPPERS_STDINT_TYPE1: char/short/int/long long€Î¥Ó¥Ã¥ÈÄ¹€¬€œ€ì€Ÿ€ì
+ *                        8/16/32/64¥Ó¥Ã¥È€Ç¡€¥Ý¥€¥ó¥¿€Î¥Ó¥Ã¥ÈÄ¹€¬long
+ *                        €Î¥Ó¥Ã¥ÈÄ¹€È°ìÃ×€¹€ëŸì¹ç
+ */
+#ifdef TOPPERS_STDINT_TYPE1
+
+/*
+ *  ¥³¥ó¥Ñ¥€¥é°ÍÂž€Î¥Ç¡Œ¥¿·¿€ÎÄêµÁ
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+typedef signed char			int8_t;		/* Éä¹æÉÕ€­8¥Ó¥Ã¥ÈÀ°¿ô */
+typedef unsigned char		uint8_t;	/* Éä¹æÌµ€·8¥Ó¥Ã¥ÈÀ°¿ô */
+
+typedef signed short		int16_t;	/* Éä¹æÉÕ€­16¥Ó¥Ã¥ÈÀ°¿ô */
+typedef unsigned short		uint16_t;	/* Éä¹æÌµ€·16¥Ó¥Ã¥ÈÀ°¿ô */
+
+typedef signed int			int32_t;	/* Éä¹æÉÕ€­32¥Ó¥Ã¥ÈÀ°¿ô */
+typedef unsigned int		uint32_t;	/* Éä¹æÌµ€·32¥Ó¥Ã¥ÈÀ°¿ô */
+
+typedef signed long long	int64_t;	/* Éä¹æÉÕ€­64¥Ó¥Ã¥ÈÀ°¿ô */
+typedef unsigned long long	uint64_t;	/* Éä¹æÌµ€·64¥Ó¥Ã¥ÈÀ°¿ô */
+
+typedef int8_t				int_least8_t;	/* 8¥Ó¥Ã¥È°ÊŸå€ÎÉä¹æÉÕ€­À°¿ô */
+typedef uint8_t				uint_least8_t;	/* 8¥Ó¥Ã¥È°ÊŸå€ÎÉä¹æÌµ€·À°¿ô */
+
+typedef long				intptr_t;	/* ¥Ý¥€¥ó¥¿€ò³ÊÇŒ€Ç€­€ëÉä¹æÉÕ€­À°¿ô */
+typedef unsigned long		uintptr_t;	/* ¥Ý¥€¥ó¥¿€ò³ÊÇŒ€Ç€­€ëÉä¹æÌµ€·À°¿ô */
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  ¥³¥ó¥Ñ¥€¥é°ÍÂž€Î¥Ç¡Œ¥¿·¿€ÎÀ°¿ôÄê¿ô€òºî€ë¥Þ¥¯¥í
+ */
+#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 */
+
+/*
+ *  ¥³¥ó¥Ñ¥€¥é°ÍÂž€Î¥Ç¡Œ¥¿·¿€Ë³ÊÇŒ€Ç€­€ëºÇÂçÃÍ€ÈºÇŸ®ÃÍ€ÎÄêµÁ
+ */
+#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œàµò€ÎÃ±ÀºÅÙÉâÆ°Ÿ®¿ôÅÀ¿ô¡€
+ *							double€¬ÇÜÀºÅÙÉâÆ°Ÿ®¿ôÅÀ¿ô€ÎŸì¹ç
+ */
+#ifdef TOPPERS_STDFLOAT_TYPE1
+#ifndef TOPPERS_MACRO_ONLY
+
+typedef float		float32_t;			/* IEEE754œàµò€ÎÃ±ÀºÅÙÉâÆ°Ÿ®¿ôÅÀ¿ô */
+typedef double		double64_t;			/* IEEE754œàµò€ÎÇÜÀºÅÙÉâÆ°Ÿ®¿ôÅÀ¿ô */
+
+#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: /arch/logtrace/MANIFEST
===================================================================
--- /arch/logtrace/MANIFEST	(revision 7)
+++ /arch/logtrace/MANIFEST	(revision 7)
@@ -0,0 +1,6 @@
+PACKAGE asp
+
+MANIFEST
+trace_config.c
+trace_config.h
+trace_dump.c
Index: /arch/logtrace/trace_config.c
===================================================================
--- /arch/logtrace/trace_config.c	(revision 7)
+++ /arch/logtrace/trace_config.c	(revision 7)
@@ -0,0 +1,249 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-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$
+ */
+
+/*
+ *		¥È¥ì¡Œ¥¹¥í¥°µ¡Çœ
+ */
+
+#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 = 0U;
+	trace_tail = 0U;
+	trace_mode = mode;
+}     
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°€Î³«»Ï
+ */
+ER
+trace_sta_log(MODE mode)
+{
+	if ((mode & TRACE_CLEAR) != 0U) {
+		trace_count = 0U;
+		trace_head = 0U;
+		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: /arch/logtrace/trace_config.h
===================================================================
--- /arch/logtrace/trace_config.h	(revision 7)
+++ /arch/logtrace/trace_config.h	(revision 7)
@@ -0,0 +1,181 @@
+/*
+ *  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-2012 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  $Id$
+ */
+
+/*
+ *		¥È¥ì¡Œ¥¹¥í¥°€ËŽØ€¹€ëÀßÄê
+ *
+ *  €³€Î¥€¥ó¥¯¥ë¡Œ¥É¥Õ¥¡¥€¥ë€Ï¡€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: /arch/logtrace/trace_dump.c
===================================================================
--- /arch/logtrace/trace_dump.c	(revision 7)
+++ /arch/logtrace/trace_dump.c	(revision 7)
@@ -0,0 +1,154 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2011 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  $Id$
+ */
+
+/*
+ *		¥È¥ì¡Œ¥¹¥í¥°€Î¥À¥ó¥×
+ */
+
+#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))
+{
+	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);
+
+	putc = (void (*)(char)) exinf;
+	while (trace_rea_log(&trace) >= 0) {
+		trace_print(&trace, putc);
+	}
+}
Index: /arch/m68k_gcc/MANIFEST
===================================================================
--- /arch/m68k_gcc/MANIFEST	(revision 7)
+++ /arch/m68k_gcc/MANIFEST	(revision 7)
@@ -0,0 +1,21 @@
+PACKAGE asp
+
+MANIFEST
+Makefile.prc
+m68kelf.ld
+makeoffset.c
+prc_cfg1_out.h
+prc_config.c
+prc_config.h
+prc_def.csv
+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_unrename.h
+start.S
Index: /arch/m68k_gcc/Makefile.prc
===================================================================
--- /arch/m68k_gcc/Makefile.prc	(revision 7)
+++ /arch/m68k_gcc/Makefile.prc	(revision 7)
@@ -0,0 +1,36 @@
+#
+#		Makefile€Î¥×¥í¥»¥Ã¥µ°ÍÂžÉô¡ÊM68040ÍÑ¡Ë
+#
+
+#
+#  GNU³«È¯ŽÄ¶­€Î¥¿¡Œ¥²¥Ã¥È¥¢¡Œ¥­¥Æ¥¯¥Á¥ã€ÎÄêµÁ
+#
+GCC_TARGET = m68k-unknown-elf
+
+#
+#  ¥×¥í¥»¥Ã¥µ°ÍÂžÉô¥Ç¥£¥ì¥¯¥È¥êÌŸ€ÎÄêµÁ
+#
+PRCDIR = $(SRCDIR)/arch/$(PRC)_$(TOOL)
+
+#
+#  ¥³¥ó¥Ñ¥€¥ë¥ª¥×¥·¥ç¥ó
+#
+COPTS := $(COPTS) -m68020-40 -msoft-float
+LDFLAGS := $(LDFLAGS) -msoft-float
+
+#
+#  ¥«¡Œ¥Í¥ë€ËŽØ€¹€ëÄêµÁ
+#
+KERNEL_DIR := $(KERNEL_DIR) $(PRCDIR)
+KERNEL_ASMOBJS := $(KERNEL_ASMOBJS) prc_support.o
+KERNEL_COBJS := $(KERNEL_COBJS) prc_config.o
+
+#
+#  ¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿ŽØ·ž€ÎÊÑ¿ô€ÎÄêµÁ
+#
+CFG_TABS := $(CFG_TABS) --cfg1-def-table $(PRCDIR)/prc_def.csv
+
+#
+#  ¥ª¥Õ¥»¥Ã¥È¥Õ¥¡¥€¥ëÀžÀ®€Î€¿€á€ÎÄêµÁ
+#
+OFFSET_TF = $(PRCDIR)/prc_offset.tf
Index: /arch/m68k_gcc/m68kelf.ld
===================================================================
--- /arch/m68k_gcc/m68kelf.ld	(revision 7)
+++ /arch/m68k_gcc/m68kelf.ld	(revision 7)
@@ -0,0 +1,78 @@
+/*
+ *  @(#) $Id$
+ */
+
+OUTPUT_FORMAT("elf32-m68k","elf32-m68k","elf32-m68k")
+OUTPUT_ARCH(m68k)
+STARTUP(start.o)
+
+PROVIDE (__stack = 0) ;
+PROVIDE (hardware_init_hook = 0) ;
+PROVIDE (software_init_hook = 0) ;
+PROVIDE (software_term_hook = 0) ;
+SECTIONS
+{
+    .init :
+    {
+        KEEP (*(.init))
+    }
+    .text :
+    {
+        __text = . ;
+        *(.text .stub .text.* .gnu.linkonce.t.*)
+
+    }
+    .fini :
+    {
+        KEEP (*(.fini))
+    }
+    _etext = . ;
+    PROVIDE (etext = .) ;
+    .rodata :
+    {
+        *(.rodata .rodata.* .gnu.linkonce.r.*)
+    }
+    . = ALIGN(4) ;
+    __idata_start = . ;
+    .data : AT(__idata_start) 
+    {
+        __data_start = . ;
+        *(.data)
+    }
+    .eh_frame : { KEEP (*(.eh_frame)) }
+    .gcc_except_table : { *(.gcc_except_table) }
+    .ctors :
+    {
+        KEEP (*crtbegin.o(.ctors))
+        KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors))
+        KEEP (*(SORT(.ctors.*)))
+        KEEP (*(.ctors))
+    }
+    .dtors :
+    {
+        KEEP (*crtbegin.o(.dtors))
+        KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors))
+        KEEP (*(SORT(.dtors.*)))
+        KEEP (*(.dtors))
+    }
+    __idata_end = __idata_start + SIZEOF(.data) ;
+    _edata  = . ;
+    PROVIDE (edata = .) ;
+    . = ALIGN(4) ;
+    __bss_start = . ;
+    .bss :
+    {
+        *(.bss)
+        *(COMMON)
+    }
+    _end = . ;
+    __bss_end = . ;
+    PROVIDE (end = .) ;
+    .comment        0 : { *(.comment) }
+    .debug          0 : { *(.debug) }
+    .line           0 : { *(.line) }
+    .debug_srcinfo  0 : { *(.debug_srcinfo) }
+    .debug_sfnames  0 : { *(.debug_sfnames) }
+    .debug_aranges  0 : { *(.debug_aranges) }
+    .debug_pubnames 0 : { *(.debug_pubnames) }
+}
Index: /arch/m68k_gcc/makeoffset.c
===================================================================
--- /arch/m68k_gcc/makeoffset.c	(revision 7)
+++ /arch/m68k_gcc/makeoffset.c	(revision 7)
@@ -0,0 +1,105 @@
+/*
+ *  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-2012 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+#include "kernel_impl.h"
+#include "task.h"
+#include "sil.h"
+
+#define OFFSET_DEF(TYPE, FIELD)							\
+	Asm("OFFSET_DEF " #TYPE "_" #FIELD " = %0"			\
+	  : /* no output */									\
+	  : "g"(offsetof(TYPE, FIELD)))
+
+#define OFFSET_DEF2(TYPE, FIELD, FIELDNAME)				\
+	Asm("OFFSET_DEF " #TYPE "_" #FIELDNAME " = %0"		\
+	  : /* no output */									\
+	  : "g"(offsetof(TYPE, FIELD)))
+
+void
+makeoffset(void)
+{
+	OFFSET_DEF(TCB, p_tinib);
+	OFFSET_DEF(TCB, texptn);
+	OFFSET_DEF2(TCB, tskctxb.msp, msp);
+	OFFSET_DEF2(TCB, tskctxb.pc, pc);
+
+	OFFSET_DEF(TINIB, exinf);
+	OFFSET_DEF(TINIB, task);
+}
+
+void
+sil_endian(void)
+{
+#ifdef SIL_ENDIAN_BIG			/* ¥Ó¥Ã¥°¥š¥ó¥Ç¥£¥¢¥ó¥×¥í¥»¥Ã¥µ */
+	Asm("SIL_ENDIAN = BIG");
+#else /* SIL_ENDIAN_BIG */
+#ifdef SIL_ENDIAN_LITTLE		/* ¥ê¥È¥ë¥š¥ó¥Ç¥£¥¢¥ó¥×¥í¥»¥Ã¥µ */
+	Asm("SIL_ENDIAN = LITTLE");
+#endif /* SIL_ENDIAN_LITTLE */
+#endif /* SIL_ENDIAN_BIG */
+}
+
+uint32_t	BIT_REF_4 = 0x12345678;
+uint16_t	BIT_REF_2 = 0x1234;
+uint8_t		BIT_REF_1 = 0x12;
+
+TCB	BIT_BB_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_OVRHDR
+	0U,						/* leftotm */
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+	{ NULL, NULL }			/* tskctxb */
+};
Index: /arch/m68k_gcc/prc_cfg1_out.h
===================================================================
--- /arch/m68k_gcc/prc_cfg1_out.h	(revision 7)
+++ /arch/m68k_gcc/prc_cfg1_out.h	(revision 7)
@@ -0,0 +1,48 @@
+/*
+ *		cfg1_out.c€Î¥ê¥ó¥¯€ËÉ¬Í×€Ê¥¹¥¿¥Ö€ÎÄêµÁ
+ */
+
+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;
+
+/*
+ *  ¥ª¥Õ¥»¥Ã¥È¥Õ¥¡¥€¥ë€òÀžÀ®€¹€ë€¿€á€ÎÄêµÁ
+ */
+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,						/* texptn */
+	NULL,					/* p_winifo */
+#ifdef TOPPERS_SUPPORT_MUTEX
+	{ NULL, NULL },			/* mutex_queue */
+#endif /* TOPPERS_SUPPORT_MUTEX */
+#ifdef TOPPERS_SUPPORT_OVRHDR
+	0U,						/* leftotm */
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+	{ NULL, NULL }			/* tskctxb */
+};
Index: /arch/m68k_gcc/prc_config.c
===================================================================
--- /arch/m68k_gcc/prc_config.c	(revision 7)
+++ /arch/m68k_gcc/prc_config.c	(revision 7)
@@ -0,0 +1,130 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥×¥í¥»¥Ã¥µ°ÍÂž¥â¥ž¥å¡Œ¥ë¡ÊM68040ÍÑ¡Ë
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+
+/*
+ *  CPU¥í¥Ã¥¯¥Õ¥é¥°ŒÂžœ€Î€¿€á€ÎÊÑ¿ô
+ */
+volatile bool_t		lock_flag;		/* CPU¥í¥Ã¥¯¥Õ¥é¥°€ÎÃÍ€òÊÝ»ý€¹€ëÊÑ¿ô */
+volatile uint16_t	saved_iipm;		/* ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€òÊÝÂž€¹€ëÊÑ¿ô */
+
+/*
+ *  ¥×¥í¥»¥Ã¥µ°ÍÂž€ÎœéŽü²œ
+ */
+void
+prc_initialize(void)
+{
+	/*
+	 *  CPU¥í¥Ã¥¯¥Õ¥é¥°ŒÂžœ€Î€¿€á€ÎÊÑ¿ô€ÎœéŽü²œ
+	 */
+	lock_flag = true;
+	saved_iipm = IIPM_ENAALL;
+
+	/*
+	 *  Îã³°¥Ù¥¯¥¿¥Æ¡Œ¥Ö¥ë€ÎœéŽü²œ
+	 */
+#ifdef EXCVT_KERNEL
+	memcpy(EXCVT_KERNEL, EXCVT_ORIG, EXCVT_LEN);
+	set_vbr(EXCVT_KERNEL);
+#endif /* EXCVT_KERNEL */
+}
+
+/*
+ *  ¥×¥í¥»¥Ã¥µ°ÍÂž€ÎœªÎ»œèÍý
+ */
+void
+prc_terminate(void)
+{
+	extern void	software_term_hook(void);
+	void (*volatile fp)(void) = software_term_hook;
+
+	/*
+	 *  software_term_hook€Ø€Î¥Ý¥€¥ó¥¿€ò¡€°ìÃ¶volatile»ØÄê€Î€¢€ëfp€ËÂå
+	 *  Æþ€·€Æ€«€é»È€Š€Î€Ï¡€0€È€ÎÈæ³Ó€¬ºÇÅ¬²œ€Çºïœü€µ€ì€Ê€€€è€Š€Ë€¹€ë€¿
+	 *  €á€Ç€¢€ë¡¥
+	 */
+	if (fp != 0) {
+		(*fp)();
+	}
+
+#ifdef EXCVT_KERNEL
+	set_vbr(EXCVT_ORIG);
+#endif /* EXCVT_KERNEL */
+}
+
+/*
+ *  CPUÎã³°€ÎÈ¯ÀžŸõ¶·€Î¥í¥°œÐÎÏ
+ *
+ *  CPUÎã³°¥Ï¥ó¥É¥é€ÎÃæ€«€é¡€CPUÎã³°ŸðÊó¥Ý¥€¥ó¥¿¡Êp_excinf¡Ë€ò°ú¿ô€È€·
+ *  €ÆžÆ€ÓœÐ€¹€³€È€Ç¡€CPUÎã³°€ÎÈ¯ÀžŸõ¶·€ò¥·¥¹¥Æ¥à¥í¥°€ËœÐÎÏ€¹€ë¡¥
+ */
+#ifdef SUPPORT_XLOG_SYS
+
+void
+xlog_sys(void *p_excinf)
+{
+	char	*excsp = (char *) p_excinf;
+	uint_t	format;
+
+	syslog_0(LOG_ERROR, "CPU Exception Information:");
+	syslog_4(LOG_ERROR, "SR = %04x (M = %d, S = %d, IPM = %d)",
+				*((uint16_t *) excsp),
+				(*((uint16_t *) excsp) & 0x1000U) >> 12,
+				(*((uint16_t *) excsp) & 0x2000U) >> 13,
+				(*((uint16_t *) excsp) & 0x0700U) >> 8);
+	syslog_1(LOG_ERROR, "PC = %08x", *((uint32_t *)(excsp + 2)));
+	format = (*((uint16_t *)(excsp + 6)) & 0xf000U) >> 12;
+	syslog_2(LOG_ERROR, "Format = %d, Vector Offset = %03x",
+				format, (*((uint16_t *)(excsp + 6)) & 0x0fffU));
+	if (format >= 2U) {
+		syslog_1(LOG_ERROR, "ADR = %08x", *((uint32_t *)(excsp + 8)));
+	}
+}
+
+#endif /* SUPPORT_XLOG_SYS */
Index: /arch/m68k_gcc/prc_config.h
===================================================================
--- /arch/m68k_gcc/prc_config.h	(revision 7)
+++ /arch/m68k_gcc/prc_config.h	(revision 7)
@@ -0,0 +1,603 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  $Id$
+ */
+
+/*
+ *		¥×¥í¥»¥Ã¥µ°ÍÂž¥â¥ž¥å¡Œ¥ë¡ÊM68040ÍÑ¡Ë
+ *
+ *  €³€Î¥€¥ó¥¯¥ë¡Œ¥É¥Õ¥¡¥€¥ë€Ï¡€target_config.h¡Ê€Þ€¿€Ï¡€€œ€³€«€é¥€¥ó¥¯
+ *  ¥ë¡Œ¥É€µ€ì€ë¥Õ¥¡¥€¥ë¡Ë€Î€ß€«€é¥€¥ó¥¯¥ë¡Œ¥É€µ€ì€ë¡¥ÂŸ€Î¥Õ¥¡¥€¥ë€«€é
+ *  ÄŸÀÜ¥€¥ó¥¯¥ë¡Œ¥É€·€Æ€Ï€Ê€é€Ê€€¡¥
+ */
+
+#ifndef TOPPERS_PRC_CONFIG_H
+#define TOPPERS_PRC_CONFIG_H
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  ¥×¥í¥»¥Ã¥µ€ÎÆÃŒìÌ¿Îá€Î¥€¥ó¥é¥€¥óŽØ¿ôÄêµÁ
+ */
+#include "prc_insn.h"
+
+/*
+ *  ¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È¥Ö¥í¥Ã¥¯€ÎÄêµÁ
+ */
+typedef struct task_context_block {
+	void	*msp;		/* ¥¹¥¿¥Ã¥¯¥Ý¥€¥ó¥¿ */
+	FP		pc;			/* ¥×¥í¥°¥é¥à¥«¥Š¥ó¥¿ */
+} TSKCTXB;
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯Áàºî¥é¥€¥Ö¥é¥ê
+ *
+ *  M68040€Ç€Ï¡€¥¹¥Æ¡Œ¥¿¥¹¥ì¥ž¥¹¥¿¡ÊSR¡Ë€Î²Œ€«€é8¡Á10¥Ó¥Ã¥È€á€Î3¥Ó¥Ã¥È
+ *  €Ë³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡Ê¥Ï¡Œ¥É¥Š¥§¥¢€Î³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡€IPM¡Ë€¬ÃÖ€«
+ *  €ì€Æ€€€ë¡¥IPM€òÊÝÂž€·€Æ€ª€¯€¿€á€Ë¡€³ä¹þ€ßÍ¥ÀèÅÙ€Î³°ÉôÉœžœ¡Ê-1€«€éÏ¢
+ *  Â³€·€¿Éé€ÎÃÍ¡Ë€ò»È€Š€³€È€â²ÄÇœ€Ç€¢€ë€¬¡€ÍŸ·×€Êºž±Š¥Ó¥Ã¥È¥·¥Õ¥È€ÈÉä
+ *  ¹æÈ¿ÅŸ€¬É¬Í×€Ë€Ê€ë¡¥€³€ì€òÈò€±€ë€¿€á€Ë¡€IPM€òÊÝÂž€¹€ëŸì¹ç€Ë€Ï¡€SR€Î
+ *  8¡Á10¥Ó¥Ã¥È€á€òŒè€êœÐ€·€¿ÃÍ€ò»È€Š€³€È€Ë€¹€ë¡¥€³€ÎÃÍ€ò³ä¹þ€ßÍ¥ÀèÅÙ¥Þ
+ *  ¥¹¥¯€ÎÆâÉôÉœžœ€ÈžÆ€Ó¡€IIPM€Èœñ€¯€³€È€Ë€¹€ë¡¥
+ */
+
+/*
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€Î³°ÉôÉœžœ€ÈÆâÉôÉœžœ€ÎÊÑŽ¹
+ */
+#define EXT_IPM(iipm)	(-CAST(PRI, (iipm) >> 8))		/* ³°ÉôÉœžœ€ËÊÑŽ¹ */
+#define INT_IPM(ipm)	(CAST(uint16_t, -(ipm)) << 8)	/* ÆâÉôÉœžœ€ËÊÑŽ¹ */
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  IPM¡Ê¥Ï¡Œ¥É¥Š¥§¥¢€Î³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡€ÆâÉôÉœžœ¡Ë€ÎžœºßÃÍ€ÎÆÉœÐ€·
+ */
+Inline uint16_t
+current_iipm(void)
+{
+	return(current_sr() & 0x0700U);
+}
+
+/*
+ *  IPM¡Ê¥Ï¡Œ¥É¥Š¥§¥¢€Î³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡€ÆâÉôÉœžœ¡Ë€ÎžœºßÃÍ€ÎÀßÄê
+ */
+Inline void
+set_iipm(uint16_t iipm)
+{
+	set_sr((current_sr() & ~0x0700U) | iipm);
+}
+
+/*
+ *  TOPPERSÉžœà³ä¹þ€ßœèÍý¥â¥Ç¥ë€ÎŒÂžœ
+ *
+ *  M68040€Ï¡€¥¹¥Æ¡Œ¥¿¥¹¥ì¥ž¥¹¥¿¡ÊSR¡ËÃæ€Ë³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡Ê¥Ï¡Œ¥É¥Š¥§
+ *  ¥¢€Î³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡€IPM¡Ë€ò»ý€Ã€Æ€€€ë€¬¡€CPU¥í¥Ã¥¯¥Õ¥é¥°€ËÁêÅö
+ *  €¹€ëµ¡Çœ€ò»ý€¿€Ê€€¡¥€œ€Î€¿€á¡€CPU¥í¥Ã¥¯¥Õ¥é¥°€Îµ¡Çœ€ò¡€IPM€Ë€è€Ã€Æ
+ *  ŒÂžœ€¹€ë¡¥
+ *
+ *  €Þ€ºCPU¥í¥Ã¥¯¥Õ¥é¥°€ÎÃÍ¡Ê€¹€Ê€ï€Á¡€CPU¥í¥Ã¥¯ŸõÂÖ€«CPU¥í¥Ã¥¯²òœüŸõÂÖ
+ *  €«¡Ë€Ï¡€€œ€Î€¿€á€ÎÊÑ¿ô¡Êlock_flag¡Ë€òÍÑ°Õ€·€ÆÊÝ»ý€¹€ë¡¥
+ *
+ *  CPU¥í¥Ã¥¯¥Õ¥é¥°€¬¥¯¥ê¥¢€µ€ì€Æ€€€ëŽÖ¡Ê€¹€Ê€ï€Á¡€CPU¥í¥Ã¥¯²òœüŸõÂÖ€Î
+ *  ŽÖ¡Ë€Ï¡€IPM¡Ê¥Ï¡Œ¥É¥Š¥§¥¢€Î³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡Ë€ò¡€¥â¥Ç¥ëŸå€Î³ä¹þ€ß
+ *  Í¥ÀèÅÙ¥Þ¥¹¥¯€ÎÃÍ€ËÀßÄê€¹€ë¡¥€³€ÎŽÖ€Ï¡€¥â¥Ç¥ëŸå€Î³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯
+ *  €Ï¡€IPM€òÍÑ€€€ÆÊÝ»ý€¹€ë¡¥
+ *
+ *  €œ€ì€ËÂÐ€·€ÆCPU¥í¥Ã¥¯¥Õ¥é¥°€¬¥»¥Ã¥È€µ€ì€Æ€€€ëŽÖ¡Ê€¹€Ê€ï€Á¡€CPU¥í¥Ã
+ *  ¥¯ŸõÂÖ€ÎŽÖ¡Ë€Ï¡€IPM¡Ê¥Ï¡Œ¥É¥Š¥§¥¢€Î³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡Ë€ò¡€¥«¡Œ¥Í¥ë
+ *  ŽÉÍý€Î³ä¹þ€ß€ò€¹€Ù€Æ¥Þ¥¹¥¯€¹€ëÃÍ¡ÊTIPM_LOCK¡Ë€È¡€¥â¥Ç¥ëŸå€Î³ä¹þ€ßÍ¥
+ *  ÀèÅÙ¥Þ¥¹¥¯€È€Î¹â€€Êý€ËÀßÄê€¹€ë¡¥€³€ÎŽÖ€Î¥â¥Ç¥ëŸå€Î³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹
+ *  ¥¯€Ï¡€€œ€Î€¿€á€ÎÊÑ¿ô¡Êsaved_iipm¡€ÆâÉôÉœžœ€ÇÊÝ»ý¡Ë€òÍÑ°Õ€·€ÆÊÝ»ý€¹
+ *  €ë¡¥
+ */
+
+/*
+ *  ¥³¥ó¥Æ¥­¥¹¥È€Î»²ŸÈ
+ *
+ *  M68040€Ç€Ï¡€¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€ò¥Þ¥¹¥¿¥â¡Œ¥É€Ç¡€Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹
+ *  ¥È€ò³ä¹þ€ß¥â¡Œ¥É€ÇŒÂ¹Ô€¹€ë¡¥¥Þ¥¹¥¿¥â¡Œ¥É€«³ä¹þ€ß¥â¡Œ¥É€«€Ï¡€¥¹¥Æ¡Œ
+ *  ¥¿¥¹¥ì¥ž¥¹¥¿¡ÊSR¡ËÃæ€Î³ä¹þ€ß¥â¡Œ¥É¥Ó¥Ã¥È€Ë€è€êÈœÊÌ€Ç€­€ë¡¥
+ */
+Inline bool_t
+sense_context(void)
+{
+	return((current_sr() & 0x1000U) == 0U);
+}
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  CPU¥í¥Ã¥¯ŸõÂÖ€Ç€Î³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯
+ *
+ *  TIPM_LOCK€Ï¡€¥«¡Œ¥Í¥ëŽÉÍý€Î³ä¹þ€ß€ò€¹€Ù€Æ¥Þ¥¹¥¯€¹€ëÃÍ€ËÄêµÁ€¹€ë¡¥
+ *
+ *  TIPM_LOCK€Ï¡€ŽðËÜÅª€Ë€ÏTMIN_INTPRI€Ë°ìÃ×€µ€»€ì€Ð€è€€€¬¡€M68040€Ç€Ï¡€
+ *  IPM¡Ê¥Ï¡Œ¥É¥Š¥§¥¢€Î³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡Ë€¬-6€ÎŸì¹ç€È-7€ÎŸì¹ç€Î¿¶Éñ€€
+ *  €¬Æ±€ž€Ç¡€IPM€Ë-7€òÀßÄê€¹€ë€³€È€ÏžúÎšÅª€Ë¹Ô€š€ë€³€È€«€é¡€
+ *  TMIN_INTPRI€¬-6€Î»þ€ÏTIPM_LOCK€ò-7€Ë€·€Æ€€€ë¡¥
+ */
+#if TMIN_INTPRI == -6		/* NMI°Ê³°€Ë¥«¡Œ¥Í¥ëŽÉÍý³°€Î³ä¹þ€ß€òÀß€±€Ê€€ */
+#define TIPM_LOCK		(-7)
+#else /* TMIN_INTPRI == -6 */
+#if (-1 >= TMIN_INTPRI) && (TMIN_INTPRI > -6)
+#define TIPM_LOCK		TMIN_INTPRI
+#else /* (-1 >= TMIN_INTPRI) && (TMIN_INTPRI > -6) */
+#error TMIN_INTPRI out of range.
+#endif /* (-1 >= TMIN_INTPRI) && (TMIN_INTPRI > -6) */
+#endif /* TMIN_INTPRI == -6 */
+
+/*
+ *  CPU¥í¥Ã¥¯ŸõÂÖ€Ç€Î³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€ÎÆâÉôÉœžœ
+ */
+#define IIPM_LOCK		INT_IPM(TIPM_LOCK)
+
+/*
+ *  TIPM_ENAALL¡Ê³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœü¡Ë€ÎÆâÉôÉœžœ
+ */
+#define IIPM_ENAALL		INT_IPM(TIPM_ENAALL)
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  CPU¥í¥Ã¥¯¥Õ¥é¥°ŒÂžœ€Î€¿€á€ÎÊÑ¿ô
+ *
+ *  €³€ì€é€ÎÊÑ¿ô€Ï¡€CPU¥í¥Ã¥¯ŸõÂÖ€Î»þ€Î€ßœñ€­Ž¹€š€Æ€è€€€â€Î€È€¹€ë¡¥
+ */
+extern volatile bool_t		lock_flag;	/* CPU¥í¥Ã¥¯¥Õ¥é¥°€ÎÃÍ€òÊÝ»ý€¹€ëÊÑ¿ô */
+extern volatile uint16_t	saved_iipm;	/* ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€òÊÝÂž€¹€ëÊÑ¿ô */
+
+/*
+ *  CPU¥í¥Ã¥¯ŸõÂÖ€Ø€Î°Ü¹Ô
+ *
+ *  IPM¡Ê¥Ï¡Œ¥É¥Š¥§¥¢€Î³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡Ë€ò¡€saved_iipm€ËÊÝÂž€·¡€¥«¡Œ
+ *  ¥Í¥ëŽÉÍý€Î³ä¹þ€ß€ò€¹€Ù€Æ¥Þ¥¹¥¯€¹€ëÃÍ¡ÊTIPM_LOCK¡Ë€ËÀßÄê€¹€ë¡¥€Þ€¿¡€
+ *  lock_flag€òtrue€Ë€¹€ë¡¥
+ *
+ *  IPM€¬¡€ºÇœé€«€éTIPM_LOCK€ÈÆ±€ž€«€œ€ì€è€ê¹â€€Ÿì¹ç€Ë€Ï¡€€œ€ì€ò
+ *  saved_iipm€ËÊÝÂž€¹€ë€Î€ß€Ç¡€TIPM_LOCK€Ë€ÏÀßÄê€·€Ê€€¡¥€³€ì€Ï¡€¥â¥Ç¥ë
+ *  Ÿå€Î³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€¬¡€TIPM_LOCK€ÈÆ±€ž€«€œ€ì€è€ê¹â€€¥ì¥Ù¥ë€ËÀßÄê
+ *  €µ€ì€Æ€€€ëŸõÂÖ€Ë€¢€¿€ë¡¥
+ *
+ *  €³€ÎŽØ¿ô€Ï¡€CPU¥í¥Ã¥¯ŸõÂÖ¡Êlock_flag€¬true€ÎŸõÂÖ¡Ë€ÇžÆ€Ð€ì€ë€³€È€Ï
+ *  €Ê€€€â€Î€ÈÁÛÄê€·€Æ€€€ë¡¥
+ */
+Inline void
+x_lock_cpu(void)
+{
+	uint16_t	iipm;
+
+	/*
+	 *  current_iipm()€ÎÊÖ€êÃÍ€òÄŸÀÜsaved_iipm€ËÊÝÂž€»€º¡€°ì»þÊÑ¿ôiipm
+	 *  €òÍÑ€€€Æ€€€ë€Î€Ï¡€current_iipm()€òžÆ€ó€ÀÄŸžå€Ë³ä¹þ€ß€¬È¯Àž€·¡€
+	 *  µ¯Æ°€µ€ì€¿³ä¹þ€ßœèÍý€Çsaved_iipm€¬ÊÑ¹¹€µ€ì€ë²ÄÇœÀ­€¬€¢€ë€¿€á€Ç
+	 *  €¢€ë¡¥
+	 */
+	iipm = current_iipm();
+#if TIPM_LOCK == -7
+	disint();
+#else /* TIPM_LOCK == -7 */
+	if (IIPM_LOCK > iipm) {
+		set_iipm(IIPM_LOCK);
+	}
+#endif /* TIPM_LOCK == -7 */
+	saved_iipm = iipm;
+	lock_flag = true;
+	Asm("":::"memory");
+}
+
+#define t_lock_cpu()	x_lock_cpu()
+#define i_lock_cpu()	x_lock_cpu()
+
+/*
+ *  CPU¥í¥Ã¥¯ŸõÂÖ€Î²òœü
+ *
+ *  lock_flag€òfalse€Ë€·¡€IPM¡Ê¥Ï¡Œ¥É¥Š¥§¥¢€Î³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡Ë€ò¡€
+ *  saved_iipm€ËÊÝÂž€·€¿ÃÍ€ËÌá€¹¡¥
+ *
+ *  €³€ÎŽØ¿ô€Ï¡€CPU¥í¥Ã¥¯ŸõÂÖ¡Êlock_flag€¬true€ÎŸõÂÖ¡Ë€Ç€Î€ßžÆ€Ð€ì€ë€â
+ *  €Î€ÈÁÛÄê€·€Æ€€€ë¡¥
+ */
+Inline void
+x_unlock_cpu(void)
+{
+	Asm("":::"memory");
+	lock_flag = false;
+	set_iipm(saved_iipm);
+}
+
+#define t_unlock_cpu()	x_unlock_cpu()
+#define i_unlock_cpu()	x_unlock_cpu()
+
+/*
+ *  CPU¥í¥Ã¥¯ŸõÂÖ€Î»²ŸÈ
+ */
+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€ÇÍ­žú€Ê³ä¹þ€ßÍ¥ÀèÅÙ€ÎÈÏ°Ï€ÎÈœÄê
+ *
+ *  TMIN_INTPRI€ÎÃÍ€Ë€è€é€º¡€chg_ipm€Ç€Ï¡€-6¡ÁTIPM_ENAALL¡Ê¡á0¡Ë€ÎÈÏ°Ï
+ *  €ËÀßÄê€Ç€­€ë€³€È€È€¹€ë¡Ê¥¿¡Œ¥²¥Ã¥ÈÄêµÁ€Î³ÈÄ¥¡Ë¡¥
+ */
+#define VALID_INTPRI_CHGIPM(intpri) \
+				(-6 <= (intpri) && (intpri) <= TIPM_ENAALL)
+
+/*
+ * ¡Ê¥â¥Ç¥ëŸå€Î¡Ë³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€ÎÀßÄê
+ *
+ *  CPU¥í¥Ã¥¯¥Õ¥é¥°€¬¥¯¥ê¥¢€µ€ì€Æ€€€ë»þ€Ï¡€¥Ï¡Œ¥É¥Š¥§¥¢€Î³ä¹þ€ßÍ¥ÀèÅÙ¥Þ
+ *  ¥¹¥¯€òÀßÄê€¹€ë¡¥CPU¥í¥Ã¥¯¥Õ¥é¥°€¬¥»¥Ã¥È€µ€ì€Æ€€€ë»þ€Ï¡€saved_iipm
+ *  €òÀßÄê€·¡€€µ€é€Ë¡€¥Ï¡Œ¥É¥Š¥§¥¢€Î³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€ò¡€ÀßÄê€·€è€Š€È
+ *  €·€¿¡Ê¥â¥Ç¥ëŸå€Î¡Ë³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€ÈTIPM_LOCK€Î¹â€€Êý€ËÀßÄê€¹€ë¡¥
+ */
+Inline void
+x_set_ipm(PRI intpri)
+{
+	uint16_t	iipm = INT_IPM(intpri);
+
+	if (!lock_flag) {
+		set_iipm(iipm);
+	}
+	else {
+		saved_iipm = iipm;
+#if TIPM_LOCK == -7
+		/*
+		 *  TIPM_LOCK€¬-7€ÎŸì¹ç€Ë€Ï¡€€³€Î»þÅÀ€Ç¥Ï¡Œ¥É¥Š¥§¥¢€Î³ä¹þ€ßÍ¥Àè
+		 *  ÅÙ¥Þ¥¹¥¯€¬É¬€º7€ËÀßÄê€µ€ì€Æ€€€ë€¿€á¡€ÀßÄê€·€Ê€ª€¹É¬Í×€¬€Ê€€¡¥
+		 */
+#else /* TIPM_LOCK == -7 */
+		set_iipm(iipm > IIPM_LOCK ? iipm : IIPM_LOCK);
+#endif /* TIPM_LOCK == -7 */
+	}
+}
+
+#define t_set_ipm(intpri)	x_set_ipm(intpri)
+#define i_set_ipm(intpri)	x_set_ipm(intpri)
+
+/*
+ * ¡Ê¥â¥Ç¥ëŸå€Î¡Ë³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€Î»²ŸÈ
+ *
+ *  CPU¥í¥Ã¥¯¥Õ¥é¥°€¬¥¯¥ê¥¢€µ€ì€Æ€€€ë»þ€Ï¥Ï¡Œ¥É¥Š¥§¥¢€Î³ä¹þ€ßÍ¥ÀèÅÙ¥Þ
+ *  ¥¹¥¯€ò¡€¥»¥Ã¥È€µ€ì€Æ€€€ë»þ€Ïsaved_iipm€ò»²ŸÈ€¹€ë¡¥
+ */
+Inline PRI
+x_get_ipm(void)
+{
+	uint16_t	iipm;
+
+	if (!lock_flag) {
+		iipm = current_iipm();
+	}
+	else {
+		iipm = saved_iipm;
+	}
+	return(EXT_IPM(iipm));
+}
+
+#define t_get_ipm()		x_get_ipm()
+#define i_get_ipm()		x_get_ipm()
+
+/*
+ *  ºÇ¹âÍ¥Àèœç°Ì¥¿¥¹¥¯€Ø€Î¥Ç¥£¥¹¥Ñ¥Ã¥Á¡Êprc_support.S¡Ë
+ *
+ *  dispatch€Ï¡€¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€«€éžÆ€ÓœÐ€µ€ì€¿¥µ¡Œ¥Ó¥¹¥³¡Œ¥ëœèÍý€«
+ *  €éžÆ€ÓœÐ€¹€Ù€­€â€Î€Ç¡€¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È¡ŠCPU¥í¥Ã¥¯ŸõÂÖ¡Š¥Ç¥£¥¹¥Ñ¥Ã
+ *  ¥Áµö²ÄŸõÂÖ¡Š¡Ê¥â¥Ç¥ëŸå€Î¡Ë³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ€ÇžÆ€ÓœÐ€µ€Ê
+ *  €±€ì€Ð€Ê€é€Ê€€¡¥
+ */
+extern void	dispatch(void);
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã€ÎÆ°ºî³«»Ï¡Êprc_support.S¡Ë
+ *
+ *  start_dispatch€Ï¡€¥«¡Œ¥Í¥ëµ¯Æ°»þ€ËžÆ€ÓœÐ€¹€Ù€­€â€Î€Ç¡€€¹€Ù€Æ€Î³ä¹þ
+ *  €ß€ò¶Ø»ß€·€¿ŸõÂÖ¡Ê³ä¹þ€ß¥í¥Ã¥¯ŸõÂÖ€ÈÆ±Åù€ÎŸõÂÖ¡Ë€ÇžÆ€ÓœÐ€µ€Ê€±€ì€Ð
+ *  €Ê€é€Ê€€¡¥
+ */
+extern void	start_dispatch(void) NoReturn;
+
+/*
+ *  žœºß€Î¥³¥ó¥Æ¥­¥¹¥È€òŒÎ€Æ€Æ¥Ç¥£¥¹¥Ñ¥Ã¥Á¡Êprc_support.S¡Ë
+ *
+ *  exit_and_dispatch€Ï¡€ext_tsk€«€éžÆ€ÓœÐ€¹€Ù€­€â€Î€Ç¡€¥¿¥¹¥¯¥³¥ó¥Æ¥­
+ *  ¥¹¥È¡ŠCPU¥í¥Ã¥¯ŸõÂÖ¡Š¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ¡Š¡Ê¥â¥Ç¥ëŸå€Î¡Ë³ä¹þ€ßÍ¥Àè
+ *  ÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ€ÇžÆ€ÓœÐ€µ€Ê€±€ì€Ð€Ê€é€Ê€€¡¥
+ */
+extern void	exit_and_dispatch(void) NoReturn;
+
+/*
+ *  ¥«¡Œ¥Í¥ë€ÎœªÎ»œèÍý€ÎžÆœÐ€·¡Êprc_support.S¡Ë
+ *
+ *  call_exit_kernel€Ï¡€¥«¡Œ¥Í¥ë€ÎœªÎ»»þ€ËžÆ€ÓœÐ€¹€Ù€­€â€Î€Ç¡€Èó¥¿¥¹¥¯
+ *  ¥³¥ó¥Æ¥­¥¹¥È€ËÀÚ€êŽ¹€š€Æ¡€¥«¡Œ¥Í¥ë€ÎœªÎ»œèÍý¡Êexit_kernel¡Ë€òžÆ€ÓœÐ
+ *  €¹¡¥
+ */
+extern void call_exit_kernel(void) NoReturn;
+
+/*
+ *  ¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€ÎœéŽü²œ
+ *
+ *  ¥¿¥¹¥¯€¬µÙ»ßŸõÂÖ€«€éŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ë°Ü¹Ô€¹€ë»þ€ËžÆ€Ð€ì€ë¡¥€³€Î»þÅÀ
+ *  €Ç¥¹¥¿¥Ã¥¯ÎÎ°è€ò»È€Ã€Æ€Ï€Ê€é€Ê€€¡¥
+ *
+ *  activate_context€ò¡€¥€¥ó¥é¥€¥óŽØ¿ô€Ç€Ï€Ê€¯¥Þ¥¯¥íÄêµÁ€È€·€Æ€€€ë€Î€Ï¡€
+ *  €³€Î»þÅÀ€Ç€ÏTCB€¬ÄêµÁ€µ€ì€Æ€€€Ê€€€¿€á€Ç€¢€ë¡¥
+ */
+extern void	start_r(void);
+
+#define activate_context(p_tcb)											\
+{																		\
+	(p_tcb)->tskctxb.msp = (void *)((char *)((p_tcb)->p_tinib->stk)		\
+										+ (p_tcb)->p_tinib->stksz);		\
+	(p_tcb)->tskctxb.pc = (void *) start_r;								\
+}
+
+/*
+ *  calltex€Ï»ÈÍÑ€·€Ê€€
+ */
+#define OMIT_CALLTEX
+
+/*
+ *  Îã³°¥Ù¥¯¥¿¥Æ¡Œ¥Ö¥ë€Î¹œÂ€€ÎÄêµÁ
+ */
+typedef struct exc_vector_entry {
+	FP		exc_handler;		/* Îã³°¥Ï¥ó¥É¥é€Îµ¯Æ°ÈÖÃÏ */
+} EXCVE;
+
+/*
+ *  ³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ€ÈCPUÎã³°¥Ï¥ó¥É¥éÈÖ¹æ€ÎÈÏ°Ï€ÎÈœÄê
+ */
+#define VALID_INHNO_DEFINH(inhno)	((0x10U <= (inhno) && (inhno) <= 0x1fU) \
+									|| (0x40U <= (inhno) && (inhno) <= 0xffU))
+#define VALID_EXCNO_DEFEXC(excno)	((0x02U <= (excno) && (excno) <= 0x0fU) \
+									|| (0x20U <= (excno) && (excno) <= 0x3fU))
+
+/*
+ *  ³ä¹þ€ß¥Ï¥ó¥É¥é€ÎÀßÄê
+ *
+ *  ¥Ù¥¯¥È¥ëÈÖ¹æinhno€Î³ä¹þ€ß¥Ï¥ó¥É¥é€ÎœÐÆþžýœèÍý€ÎÈÖÃÏ€òint_entry€ËÀß
+ *  Äê€¹€ë¡¥
+ */
+Inline void
+x_define_inh(INHNO inhno, FP int_entry)
+{
+	EXCVE	*excvt;
+
+	assert(VALID_INHNO_DEFINH(inhno));
+
+#ifdef EXCVT_KERNEL
+	/*
+	 *  EXCVT_KERNEL€¬ÄêµÁ€µ€ì€Æ€€€ë»þ€Ï¡€œéŽü²œœèÍý€ÎÃæ€ÇVBR€ò
+	 *  EXCVT_KERNEL€ËÀßÄê€¹€ë€Î€Ç¡€EXCVT_KERNEL€ò»È€Š¡¥
+	 */
+	excvt = (EXCVE *) EXCVT_KERNEL;
+#else /* EXCVT_KERNEL */
+	excvt = (EXCVE *) current_vbr();
+#endif /* EXCVT_KERNEL */
+	excvt[inhno].exc_handler = int_entry;
+}
+
+/*
+ *  CPUÎã³°¥Ï¥ó¥É¥é€ÎÀßÄê
+ *
+ *  ¥Ù¥¯¥È¥ëÈÖ¹æexcno€ÎCPUÎã³°¥Ï¥ó¥É¥é€ÎœÐÆþžýœèÍý€ÎÈÖÃÏ€òexc_entry€ËÀß
+ *  Äê€¹€ë¡¥
+ */
+Inline void
+x_define_exc(EXCNO excno, FP exc_entry)
+{
+	EXCVE	*excvt;
+
+	assert(VALID_EXCNO_DEFEXC(excno));
+
+#ifdef EXCVT_KERNEL
+	/*
+	 *  EXCVT_KERNEL€¬ÄêµÁ€µ€ì€Æ€€€ë»þ€Ï¡€œéŽü²œœèÍý€ÎÃæ€ÇVBR€ò
+	 *  EXCVT_KERNEL€ËÀßÄê€¹€ë€Î€Ç¡€EXCVT_KERNEL€ò»È€Š¡¥
+	 */
+	excvt = (EXCVE *) EXCVT_KERNEL;
+#else /* EXCVT_KERNEL */
+	excvt = (EXCVE *) current_vbr();
+#endif /* EXCVT_KERNEL */
+	excvt[excno].exc_handler = exc_entry;
+}
+
+/*
+ *  ³ä¹þ€ß¥Ï¥ó¥É¥é€ÎœÐÆþžýœèÍý€ÎÀžÀ®
+ */
+
+/*
+ *  ³ä¹þ€ß¥Ï¥ó¥É¥é€ÎœÐÆþžýœèÍý€Î¥é¥Ù¥ë€òºî€ë¥Þ¥¯¥í
+ */
+#define INT_ENTRY(inhno, inthdr)	_kernel_##inthdr##_##inhno
+
+/*
+ *  LOG_INH_ENTER€¬¥Þ¥¯¥íÄêµÁ€µ€ì€Æ€€€ëŸì¹ç€Ë¡€CALL_LOG_INH_ENTER€ò¡€
+ *  inhno_num€ò¥Ñ¥é¥á¡Œ¥¿€È€·€Ælog_inh_enter€òžÆ€ÓœÐ€¹¥¢¥»¥ó¥Ö¥êžÀžì¥³¡Œ
+ *  ¥É€Ë¥Þ¥¯¥íÄêµÁ€¹€ë¡¥
+ */
+#ifdef LOG_INH_ENTER
+
+#define CALL_LOG_INH_ENTER(inhno_num) \
+"	move.l #" #inhno_num ", -(%sp)	\n"  /* inhno_num€ò¥Ñ¥é¥á¡Œ¥¿€Ë */ \
+"	jsr _kernel_log_inh_enter		\n"  /* log_inh_enter€òžÆ€ÓœÐ€¹ */ \
+"	addq.l #4, %sp					\n"
+
+#else /* LOG_INH_ENTER */
+#define CALL_LOG_INH_ENTER(inhno_num)
+#endif /* LOG_INH_ENTER */
+
+#ifdef LOG_INH_LEAVE
+
+/*
+ *  CALL_LOG_INH_LEAVE€ò¡€inhno_num€ò¥Ñ¥é¥á¡Œ¥¿€È€·€Ælog_inh_leave€òžÆ
+ *  €ÓœÐ€¹¥¢¥»¥ó¥Ö¥êžÀžì¥³¡Œ¥É€Ë¥Þ¥¯¥íÄêµÁ€¹€ë¡¥
+ */
+#define CALL_LOG_INH_LEAVE(inhno_num) \
+"	move.l #" #inhno_num ", -(%sp)	\n"  /* inhno_num€ò¥Ñ¥é¥á¡Œ¥¿€Ë */ \
+"	jsr _kernel_log_inh_leave		\n"  /* log_inh_leave€òžÆ€ÓœÐ€¹ */ \
+"	addq.l #4, %sp					\n"
+
+/*
+ *  LOG_INH_LEAVE€¬¥Þ¥¯¥íÄêµÁ€µ€ì€Æ€€€ëŸì¹ç€Î³ä¹þ€ß¥Ï¥ó¥É¥é€ÎœÐÆþžýœèÍý¡¥
+ *  ³ä¹þ€ß¥Ï¥ó¥É¥é€ò¥µ¥Ö¥ë¡Œ¥Á¥ó¥³¡Œ¥ë€·¡€Ìá€Ã€Æ€­€¿€é¡€¥È¥ì¡Œ¥¹¥í¥°€Î
+ *  ŒèÆÀžå¡€ret_int€ËÊ¬Žô€¹€ë¡¥
+ */
+#define INTHDR_ENTRY(inhno, inhno_num, inthdr) \
+extern void _kernel_##inthdr##_##inhno(void); \
+asm(".text							\n" \
+"_kernel_" #inthdr "_" #inhno ":	\n" \
+"	movem.l %d0-%d1/%a0-%a1, -(%sp)	\n"  /* ¥¹¥¯¥é¥Ã¥Á¥ì¥ž¥¹¥¿€òÊÝÂž */ \
+	CALL_LOG_INH_ENTER(inhno_num) \
+"	jsr " #inthdr "					\n"  /* ³ä¹þ€ß¥Ï¥ó¥É¥é€òžÆ€ÓœÐ€¹ */ \
+	CALL_LOG_INH_LEAVE(inhno_num) \
+"	jmp _kernel_ret_int				\n");/* ret_int€ØÊ¬Žô */
+
+#else /* LOG_INH_LEAVE */
+
+/*
+ *  LOG_INH_LEAVE€¬¥Þ¥¯¥íÄêµÁ€µ€ì€Æ€€€Ê€€Ÿì¹ç€Î³ä¹þ€ß¥Ï¥ó¥É¥é€ÎœÐÆþžýœè
+ *  Íý¡¥Ìá€êÈÖÃÏ€È€·€Æret_int€ò¥¹¥¿¥Ã¥¯€ËÀÑ€ó€Àžå¡€³ä¹þ€ß¥Ï¥ó¥É¥é€Îµ¯Æ°
+ *  ÈÖÃÏ€ËÊ¬Žô€¹€ë¡¥³ä¹þ€ß¥Ï¥ó¥É¥é€«€é€Î¥ê¥¿¡Œ¥ó€Ë€è€ê¡€ret_int€ØÊ¬Žô€¹
+ *  €ë¡¥
+ */
+#define INTHDR_ENTRY(inhno, inhno_num, inthdr) \
+extern void _kernel_##inthdr##_##inhno(void); \
+asm(".text							\n" \
+"_kernel_" #inthdr "_" #inhno ":	\n" \
+"	movem.l %d0-%d1/%a0-%a1, -(%sp)	\n"  /* ¥¹¥¯¥é¥Ã¥Á¥ì¥ž¥¹¥¿€òÊÝÂž */ \
+	CALL_LOG_INH_ENTER(inhno_num) \
+"	move.l #_kernel_ret_int, -(%sp)	\n"  /* Ìá€êÈÖÃÏ€ò¥¹¥¿¥Ã¥¯€ËÀÑ€à */ \
+"	jmp " #inthdr "					\n");/* ³ä¹þ€ß¥Ï¥ó¥É¥é€ØÊ¬Žô */
+
+#endif /* LOG_INH_LEAVE */
+
+/*
+ *  CPUÎã³°¥Ï¥ó¥É¥é€ÎœÐÆþžýœèÍý€ÎÀžÀ®
+ *
+ *  CPUÎã³°¥Ï¥ó¥É¥é€ÎÈÖÃÏ€òA1€Ë¡€CPUÎã³°¥Ï¥ó¥É¥éÈÖ¹æ€òD1€ËÆþ€ì€Æ¡€
+ *  exchdr_entry€ËÊ¬Žô€¹€ë¡¥³ä¹þ€ß¥Ï¥ó¥É¥é€ÎœÐÆþžýœèÍý€ÈÆ±ÍÍ€Ë¡€CPUÎã³°
+ *  ¥Ï¥ó¥É¥éËè€ËCPUÎã³°¥Ï¥ó¥É¥é€òžÆ€ÓœÐ€¹œèÍý€òÅž³«€¹€ëÊýË¡€â€¢€ë€¬¡€Åž
+ *  ³«€¹€ëœèÍýÆâÍÆ€¬Ê£»š€Ç€¢€ë€¿€á¡€ºÎÍÑ€·€Æ€€€Ê€€¡¥
+ */
+
+/*
+ *  CPUÎã³°¥Ï¥ó¥É¥é€ÎœÐÆþžýœèÍý€Î¥é¥Ù¥ë€òºî€ë¥Þ¥¯¥í
+ */
+#define EXC_ENTRY(excno, exchdr)	_kernel_##exchdr##_##excno
+
+/*
+ *  CPUÎã³°¥Ï¥ó¥É¥é€ÎœÐÆþžýœèÍý
+ */
+#define EXCHDR_ENTRY(excno, excno_num, exchdr) \
+extern void _kernel_##exchdr##_##excno(void *sp); \
+asm(".text							\n" \
+"_kernel_" #exchdr "_" #excno ":	\n" \
+"	movem.l %d0-%d1/%a0-%a1, -(%sp)	\n"  /* ¥¹¥¯¥é¥Ã¥Á¥ì¥ž¥¹¥¿€òÊÝÂž */ \
+"	lea.l " #exchdr ", %a1			\n"  /* CPUÎã³°¥Ï¥ó¥É¥é€ÎÈÖÃÏ€òA1€Ë */ \
+"	move.l #" #excno_num ", %d1		\n"  /* excno_num€òD1€Ë */ \
+"	jmp _kernel_exchdr_entry		\n");/* exchdr_entry€ËÊ¬Žô */
+
+/*
+ *  CPUÎã³°€ÎÈ¯Àž€·€¿»þ€Î¥³¥ó¥Æ¥­¥¹¥È€Î»²ŸÈ
+ *
+ *  CPUÎã³°€ÎÈ¯Àž€·€¿»þ€Î¥³¥ó¥Æ¥­¥¹¥È€¬¡€¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€Î»þ€Ëfalse¡€
+ *  €œ€Š€Ç€Ê€€»þ€Ëtrue€òÊÖ€¹¡¥
+ */
+Inline bool_t
+exc_sense_context(void *p_excinf)
+{
+	return((*((uint16_t *) p_excinf) & 0x1000U) == 0U);
+}
+
+/*
+ *  CPUÎã³°€ÎÈ¯Àž€·€¿»þ€ÎIPM¡Ê¥Ï¡Œ¥É¥Š¥§¥¢€Î³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡€ÆâÉôÉœ
+ *  žœ¡Ë€Î»²ŸÈ
+ */
+Inline uint16_t
+exc_get_iipm(void *p_excinf)
+{
+	return(*((uint16_t *) p_excinf) & 0x0700U);
+}
+
+/*
+ *  CPUÎã³°€ÎÈ¯Àž€·€¿»þ€Î¥³¥ó¥Æ¥­¥¹¥È€È³ä¹þ€ß€Î¥Þ¥¹¥¯ŸõÂÖ€Î»²ŸÈ
+ *
+ *  CPUÎã³°€ÎÈ¯Àž€·€¿»þ€Î¥·¥¹¥Æ¥àŸõÂÖ€¬¡€¥«¡Œ¥Í¥ëŒÂ¹ÔÃæ€Ç€Ê€¯¡€¥¿¥¹¥¯¥³
+ *  ¥ó¥Æ¥­¥¹¥È€Ç€¢€ê¡€ÁŽ³ä¹þ€ß¥í¥Ã¥¯ŸõÂÖ€Ç€Ê€¯¡€CPU¥í¥Ã¥¯ŸõÂÖ€Ç€Ê€¯¡€³ä
+ *  ¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ€Ç€¢€ë»þ€Ëtrue¡€€œ€Š€Ç€Ê€€»þ€Ëfalse€òÊÖ€¹
+ *  ¡ÊCPUÎã³°€¬¥«¡Œ¥Í¥ëŽÉÍý³°€Î³ä¹þ€ßœèÍýÃæ€ÇÈ¯Àž€·€¿Ÿì¹ç€Ë€âfalse€òÊÖ
+ *  €¹¡Ë¡¥
+ *
+ *  M68040€Ç€Ï¡€CPUÎã³°€ÎÈ¯Àž€·€¿»þ€ÎIPM¡Ê¥Ï¡Œ¥É¥Š¥§¥¢€Î³ä¹þ€ßÍ¥ÀèÅÙ¥Þ
+ *  ¥¹¥¯¡Ë€¬€¹€Ù€Æ€Î³ä¹þ€ß€òµö²Ä€¹€ëŸõÂÖ€Ç€¢€ë€³€È€ò¥Á¥§¥Ã¥¯€¹€ë€³€È€Ç¡€
+ *  ¥«¡Œ¥Í¥ëŒÂ¹ÔÃæ€Ç€Ê€€€³€È¡€ÁŽ³ä¹þ€ß¥í¥Ã¥¯ŸõÂÖ€Ç€Ê€€€³€È¡€CPU¥í¥Ã¥¯Ÿõ
+ *  ÂÖ€Ç€Ê€€€³€È¡€³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ€Ç€¢€ë€³€È€Î4€Ä€ÎŸò·ï€ò
+ *  ¥Á¥§¥Ã¥¯€¹€ë€³€È€¬€Ç€­€ë¡ÊCPUÎã³°€¬È¯Àž€·€¿»þ€Îlock_flag€ò»²ŸÈ€¹€ë
+ *  É¬Í×€Ï€Ê€€¡Ë¡¥
+ */
+Inline bool_t
+exc_sense_intmask(void *p_excinf)
+{
+	return(!exc_sense_context(p_excinf)
+					&& exc_get_iipm(p_excinf) == IIPM_ENAALL);
+}
+
+/*
+ *  ¥×¥í¥»¥Ã¥µ°ÍÂž€ÎœéŽü²œ
+ */
+extern void	prc_initialize(void);
+
+/*
+ *  ¥×¥í¥»¥Ã¥µ°ÍÂž€ÎœªÎ»»þœèÍý
+ */
+extern void	prc_terminate(void);
+
+#endif /* TOPPERS_MACRO_ONLY */
+#endif /* TOPPERS_PRC_CONFIG_H */
Index: /arch/m68k_gcc/prc_def.csv
===================================================================
--- /arch/m68k_gcc/prc_def.csv	(revision 7)
+++ /arch/m68k_gcc/prc_def.csv	(revision 7)
@@ -0,0 +1,5 @@
+sizeof_TCB,sizeof(TCB)
+offsetof_TCB_p_tinib,"offsetof(TCB,p_tinib)"
+offsetof_TCB_texptn,"offsetof(TCB,texptn)"
+offsetof_TCB_msp,"offsetof(TCB,tskctxb.msp)"
+offsetof_TCB_pc,"offsetof(TCB,tskctxb.pc)"
Index: /arch/m68k_gcc/prc_insn.h
===================================================================
--- /arch/m68k_gcc/prc_insn.h	(revision 7)
+++ /arch/m68k_gcc/prc_insn.h	(revision 7)
@@ -0,0 +1,134 @@
+/*
+ *  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$
+ */
+
+/*
+ *		¥×¥í¥»¥Ã¥µ€ÎÆÃŒìÌ¿Îá€Î¥€¥ó¥é¥€¥óŽØ¿ôÄêµÁ¡ÊM68040ÍÑ¡Ë
+ */
+
+#ifndef	TOPPERS_PRC_INSN_H
+#define	TOPPERS_PRC_INSN_H
+
+/*
+ *  ¥¹¥Æ¡Œ¥¿¥¹¥ì¥ž¥¹¥¿¡ÊSR¡Ë€ÎžœºßÃÍ€ÎÆÉœÐ€·
+ */
+Inline uint16_t
+current_sr(void)
+{
+	uint16_t	sr;
+
+	Asm("move.w %%sr, %0" : "=g"(sr));
+	return(sr);
+}
+
+/*
+ *  ¥¹¥Æ¡Œ¥¿¥¹¥ì¥ž¥¹¥¿¡ÊSR¡Ë€ÎžœºßÃÍ€ÎÀßÄê
+ */
+Inline void
+set_sr(uint16_t sr)
+{
+	Asm("move.w %0, %%sr" : : "g"(sr) : "cc");
+}
+
+/*
+ *  NMI€òœü€¯€¹€Ù€Æ€Î³ä¹þ€ß€Î¶Ø»ß
+ *
+ *  set_sr€òÍÑ€€€ÆŒÂžœ€¹€ë€³€È€â€Ç€­€ë€¬¡€ÊÌ€ÎÌ¿Îá€òÍÑ€€€ÆŒÂžœ€·€¿Êý€¬
+ *  žúÎš€¬ÎÉ€€€¿€á€ËÍÑ°Õ€·€Æ€€€ë¡¥
+ */
+Inline void
+disint(void)
+{
+	Asm("or.w #0x0700, %sr");
+}
+
+/*
+ *  €¹€Ù€Æ€Î³ä¹þ€ß€Îµö²Ä
+ *
+ *  set_sr€òÍÑ€€€ÆŒÂžœ€¹€ë€³€È€â€Ç€­€ë€¬¡€ÊÌ€ÎÌ¿Îá€òÍÑ€€€ÆŒÂžœ€·€¿Êý€¬
+ *  žúÎš€¬ÎÉ€€€¿€á€ËÍÑ°Õ€·€Æ€€€ë¡¥
+ */
+Inline void
+enaint(void)
+{
+	Asm("and.w #~0x0700, %sr");
+}
+
+/*
+ *  ¥Ù¥¯¥¿¥Ù¡Œ¥¹¥ì¥ž¥¹¥¿¡ÊVBR¡Ë€ÎžœºßÃÍ€ÎÆÉœÐ€·
+ */
+Inline void
+*current_vbr(void)
+{
+	void	*vbr;
+
+	Asm("movec.l %%vbr, %0" : "=r"(vbr));
+	return(vbr);
+}
+
+/*
+ *  ¥Ù¥¯¥¿¥Ù¡Œ¥¹¥ì¥ž¥¹¥¿¡ÊVBR¡Ë€ÎžœºßÃÍ€ÎÀßÄê
+ */
+Inline void
+set_vbr(void *vbr)
+{
+	Asm("movec.l %0, %%vbr" : : "r"(vbr));
+}
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ¥µ¡Œ¥Á€Î€¿€á€Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥µ¡Œ¥ÁŽØ¿ô
+ *
+ *  bfffoÌ¿Îá€ÏºÇŸå°Ì¥Ó¥Ã¥È€«€é¥µ¡Œ¥Á€¹€ë€¿€á¡€ºÇŸå°Ì¥Ó¥Ã¥È€òºÇ¹âÍ¥ÀèÅÙ
+ *  €ËÂÐ±þ€µ€»€ë¡¥
+ */
+#define	OMIT_BITMAP_SEARCH
+#define	PRIMAP_BIT(pri)		(0x8000U >> (pri))
+
+Inline uint_t
+bitmap_search(uint16_t bitmap)
+{
+	uint32_t	offset;
+
+	Asm("bfffo %1{16,16}, %0" : "=d"(offset) : "d"((uint32_t) bitmap));
+	return((uint_t)(offset - 16));
+}
+
+#endif /* TOPPERS_PRC_INSN_H */
Index: /arch/m68k_gcc/prc_kernel.h
===================================================================
--- /arch/m68k_gcc/prc_kernel.h	(revision 7)
+++ /arch/m68k_gcc/prc_kernel.h	(revision 7)
@@ -0,0 +1,70 @@
+/*
+ *  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$
+ */
+
+/*
+ *		kernel.h€Î¥×¥í¥»¥Ã¥µ°ÍÂžÉô¡ÊM68040ÍÑ¡Ë
+ *
+ *  €³€Î¥€¥ó¥¯¥ë¡Œ¥É¥Õ¥¡¥€¥ë€Ï¡€target_kernel.h¡Ê€Þ€¿€Ï¡€€œ€³€«€é¥€¥ó¥¯
+ *  ¥ë¡Œ¥É€µ€ì€ë¥Õ¥¡¥€¥ë¡Ë€Î€ß€«€é¥€¥ó¥¯¥ë¡Œ¥É€µ€ì€ë¡¥ÂŸ€Î¥Õ¥¡¥€¥ë€«€é
+ *  ÄŸÀÜ¥€¥ó¥¯¥ë¡Œ¥É€·€Æ€Ï€Ê€é€Ê€€¡¥
+ */
+
+#ifndef TOPPERS_PRC_KERNEL_H
+#define TOPPERS_PRC_KERNEL_H
+
+/*
+ *  ¥«¡Œ¥Í¥ëŽÉÍý€Î³ä¹þ€ßÍ¥ÀèÅÙ€ÎÈÏ°Ï
+ *
+ *  TMIN_INTPRI€ÎÄêµÁ€òÊÑ¹¹€¹€ë€³€È€Ç¡€€É€Î¥ì¥Ù¥ë€è€ê€â¹â€€³ä¹þ€ßÍ¥ÀèÅÙ
+ *  €ò»ý€Ä€â€Î€ò¥«¡Œ¥Í¥ëŽÉÍý³°€Î³ä¹þ€ß€È€¹€ë€«€òÊÑ¹¹€Ç€­€ë¡¥
+ *
+ *  TMIN_INTPRI€ËÀßÄê€Ç€­€ëÃÍ€Ï¡€-6¡Á-1€ÎÈÏ°Ï€Ç€¢€ë¡¥Îã€š€ÐTMIN_INTPRI
+ *  €ò-5€ËÀßÄê€¹€ë€È¡€NMI€Ë²Ã€š€Æ¥ì¥Ù¥ë6€Î³ä¹þ€ß€¬¥«¡Œ¥Í¥ëŽÉÍý³°€È€Ê€ë
+ *  ¡ÊM68040€Ç€Ï¡€¥ì¥Ù¥ë7€ÏNMI€òŒš€¹¡Ë¡¥TMIN_INTPRI€ò-6€ËÀßÄê€¹€ë€È¡€
+ *  NMI°Ê³°€Ë¥«¡Œ¥Í¥ëŽÉÍý³°€Î³ä¹þ€ß€òÀß€±€Ê€€€³€È€Ë€Ê€ë¡¥
+ */
+#ifndef TMIN_INTPRI
+#define TMIN_INTPRI		(-6)		/* ³ä¹þ€ßÍ¥ÀèÅÙ€ÎºÇŸ®ÃÍ¡ÊºÇ¹âÃÍ¡Ë*/
+#endif /* TMIN_INTPRI */
+#define TMAX_INTPRI		(-1)		/* ³ä¹þ€ßÍ¥ÀèÅÙ€ÎºÇÂçÃÍ¡ÊºÇÄãÃÍ¡Ë */
+
+#endif /* TOPPERS_PRC_KERNEL_H */
Index: /arch/m68k_gcc/prc_offset.tf
===================================================================
--- /arch/m68k_gcc/prc_offset.tf	(revision 7)
+++ /arch/m68k_gcc/prc_offset.tf	(revision 7)
@@ -0,0 +1,24 @@
+$ 
+$ 		¥ª¥Õ¥»¥Ã¥È¥Õ¥¡¥€¥ëÀžÀ®ÍÑ¥Æ¥ó¥×¥ì¡Œ¥È¥Õ¥¡¥€¥ë¡ÊM68040ÍÑ¡Ë
+$ 
+
+$ 
+$  Éžœà¥Æ¥ó¥×¥ì¡Œ¥È¥Õ¥¡¥€¥ë€Î¥€¥ó¥¯¥ë¡Œ¥É
+$ 
+$INCLUDE "kernel/genoffset.tf"$
+
+$ 
+$  ¥ª¥Õ¥»¥Ã¥ÈÃÍ€Î¥Þ¥¯¥íÄêµÁ€ÎÀžÀ®
+$ 
+$DEFINE("TCB_p_tinib", offsetof_TCB_p_tinib)$
+$DEFINE("TCB_texptn", offsetof_TCB_texptn)$
+$DEFINE("TCB_msp", offsetof_TCB_msp)$
+$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: /arch/m68k_gcc/prc_rename.def
===================================================================
--- /arch/m68k_gcc/prc_rename.def	(revision 7)
+++ /arch/m68k_gcc/prc_rename.def	(revision 7)
@@ -0,0 +1,14 @@
+# prc_config.c
+prc_initialize
+prc_terminate
+
+# prc_support.S
+dispatch
+start_dispatch
+exit_and_dispatch
+call_exit_kernel
+start_r
+ret_int
+exchdr_entry
+lock_flag
+saved_iipm
Index: /arch/m68k_gcc/prc_rename.h
===================================================================
--- /arch/m68k_gcc/prc_rename.h	(revision 7)
+++ /arch/m68k_gcc/prc_rename.h	(revision 7)
@@ -0,0 +1,49 @@
+/* This file is generated from prc_rename.def by genrename. */
+
+#ifndef TOPPERS_PRC_RENAME_H
+#define TOPPERS_PRC_RENAME_H
+
+/*
+ *  prc_config.c
+ */
+#define prc_initialize				_kernel_prc_initialize
+#define prc_terminate				_kernel_prc_terminate
+
+/*
+ *  prc_support.S
+ */
+#define dispatch					_kernel_dispatch
+#define start_dispatch				_kernel_start_dispatch
+#define exit_and_dispatch			_kernel_exit_and_dispatch
+#define call_exit_kernel			_kernel_call_exit_kernel
+#define start_r						_kernel_start_r
+#define ret_int						_kernel_ret_int
+#define exchdr_entry				_kernel_exchdr_entry
+#define lock_flag					_kernel_lock_flag
+#define saved_iipm					_kernel_saved_iipm
+
+#ifdef TOPPERS_LABEL_ASM
+
+/*
+ *  prc_config.c
+ */
+#define _prc_initialize				__kernel_prc_initialize
+#define _prc_terminate				__kernel_prc_terminate
+
+/*
+ *  prc_support.S
+ */
+#define _dispatch					__kernel_dispatch
+#define _start_dispatch				__kernel_start_dispatch
+#define _exit_and_dispatch			__kernel_exit_and_dispatch
+#define _call_exit_kernel			__kernel_call_exit_kernel
+#define _start_r					__kernel_start_r
+#define _ret_int					__kernel_ret_int
+#define _exchdr_entry				__kernel_exchdr_entry
+#define _lock_flag					__kernel_lock_flag
+#define _saved_iipm					__kernel_saved_iipm
+
+#endif /* TOPPERS_LABEL_ASM */
+
+
+#endif /* TOPPERS_PRC_RENAME_H */
Index: /arch/m68k_gcc/prc_sil.h
===================================================================
--- /arch/m68k_gcc/prc_sil.h	(revision 7)
+++ /arch/m68k_gcc/prc_sil.h	(revision 7)
@@ -0,0 +1,101 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2004-2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		sil.h€Î¥×¥í¥»¥Ã¥µ°ÍÂžÉô¡ÊM68040ÍÑ¡Ë
+ */
+
+#ifndef TOPPERS_PRC_SIL_H
+#define TOPPERS_PRC_SIL_H
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  NMI€òœü€¯€¹€Ù€Æ€Î³ä¹þ€ß€Î¶Ø»ß
+ */
+Inline uint16_t
+TOPPERS_disint(void)
+{
+	uint16_t	TOPPERS_sr;
+
+	Asm("move.w %%sr, %0" : "=g"(TOPPERS_sr));
+	Asm("or.w #0x0700, %%sr" : : : "memory");
+	return(TOPPERS_sr & 0x0700U);
+}
+
+/*
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡ÊÆâÉôÉœžœ¡Ë€ÎžœºßÃÍ€ÎÀßÄê
+ */
+Inline void
+TOPPERS_set_iipm(uint16_t TOPPERS_iipm)
+{
+	uint16_t	TOPPERS_sr;
+
+	Asm("move.w %%sr, %0" : "=g"(TOPPERS_sr));
+	Asm("move.w %0, %%sr" : : "g"((TOPPERS_sr & ~0x0700U) | TOPPERS_iipm)
+							: "memory");
+}
+
+/*
+ *  ÁŽ³ä¹þ€ß¥í¥Ã¥¯ŸõÂÖ€ÎÀ©žæ
+ */
+#define SIL_PRE_LOC		uint16_t TOPPERS_iipm
+#define SIL_LOC_INT()	((void)(TOPPERS_iipm = TOPPERS_disint()))
+#define SIL_UNL_INT()	(TOPPERS_set_iipm(TOPPERS_iipm))
+
+/*
+ *  ÈùŸ¯»þŽÖÂÔ€Á
+ */
+Inline void
+sil_dly_nse(ulong_t dlytim)
+{
+	register uint32_t d0 asm("d0") = (uint32_t) dlytim;
+	Asm("jsr _sil_dly_nse" : "=g"(d0) : "0"(d0));
+}
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  ¥×¥í¥»¥Ã¥µ€Î¥š¥ó¥Ç¥£¥¢¥ó
+ */
+#define SIL_ENDIAN_BIG				/* ¥Ó¥Ã¥°¥š¥ó¥Ç¥£¥¢¥ó */
+
+#endif /* TOPPERS_PRC_SIL_H */
Index: /arch/m68k_gcc/prc_stddef.h
===================================================================
--- /arch/m68k_gcc/prc_stddef.h	(revision 7)
+++ /arch/m68k_gcc/prc_stddef.h	(revision 7)
@@ -0,0 +1,58 @@
+/*
+ *  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$
+ */
+
+/*
+ *		t_stddef.h€Î¥×¥í¥»¥Ã¥µ°ÍÂžÉô¡ÊM68040ÍÑ¡Ë
+ *
+ *  €³€Î¥€¥ó¥¯¥ë¡Œ¥É¥Õ¥¡¥€¥ë€Ï¡€target_stddef.h¡Ê€Þ€¿€Ï¡€€œ€³€«€é¥€¥ó¥¯
+ *  ¥ë¡Œ¥É€µ€ì€ë¥Õ¥¡¥€¥ë¡Ë€Î€ß€«€é¥€¥ó¥¯¥ë¡Œ¥É€µ€ì€ë¡¥ÂŸ€Î¥Õ¥¡¥€¥ë€«€é
+ *  ÄŸÀÜ¥€¥ó¥¯¥ë¡Œ¥É€·€Æ€Ï€Ê€é€Ê€€¡¥
+ */
+
+#ifndef TOPPERS_PRC_STDDEF_H
+#define TOPPERS_PRC_STDDEF_H
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È€òŒ±ÊÌ€¹€ë€¿€á€Î¥Þ¥¯¥í€ÎÄêµÁ
+ */
+#define TOPPERS_M68K				/* ¥×¥í¥»¥Ã¥µÎ¬ŸÎ */
+
+#endif /* TOPPERS_PRC_STDDEF_H */
Index: /arch/m68k_gcc/prc_support.S
===================================================================
--- /arch/m68k_gcc/prc_support.S	(revision 7)
+++ /arch/m68k_gcc/prc_support.S	(revision 7)
@@ -0,0 +1,434 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  $Id$
+ */
+
+/*
+ *		¥×¥í¥»¥Ã¥µ°ÍÂž¥â¥ž¥å¡Œ¥ë ¥¢¥»¥ó¥Ö¥êžÀžìÉô¡ÊM68040ÍÑ¡Ë
+ */
+
+#define	TOPPERS_MACRO_ONLY
+#define UINT_C(val)			(val)		/* uint_t·¿€ÎÄê¿ô€òºî€ë¥Þ¥¯¥í */
+#define ULONG_C(val)		(val)		/* ulong_t·¿€ÎÄê¿ô€òºî€ë¥Þ¥¯¥í */
+#define CAST(type, val)		(val)		/* ·¿¥­¥ã¥¹¥È€ò¹Ô€Š¥Þ¥¯¥í */
+#include "kernel_impl.h"
+#include "offset.h"
+
+/*
+ *  ¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã
+ */
+	.text
+	.globl dispatch
+dispatch:
+	/*
+	 *  €³€Î¥ë¡Œ¥Á¥ó€Ï¡€¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È¡ŠCPU¥í¥Ã¥¯ŸõÂÖ¡Š¥Ç¥£¥¹¥Ñ¥Ã¥Á
+	 *  µö²ÄŸõÂÖ¡Š¡Ê¥â¥Ç¥ëŸå€Î¡Ë³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ€ÇžÆ€ÓœÐ€µ
+	 *  €ì€ë¡¥
+	 */
+	movem.l %d2-%d7/%a2-%a6, -(%sp)		/* ¥ì¥ž¥¹¥¿€òÊÝÂž */
+	move.l p_runtsk, %a0				/* p_runtsk€òA0€Ë */
+	move.l %sp, TCB_msp(%a0)			/* ¥¿¥¹¥¯¥¹¥¿¥Ã¥¯€òÊÝÂž */
+	move.l #dispatch_r, TCB_pc(%a0)		/* ŒÂ¹ÔºÆ³«ÈÖÃÏ€òÊÝÂž */
+	jbra dispatcher
+
+dispatch_r:
+	movem.l (%sp)+, %d2-%d7/%a2-%a6		/* ¥ì¥ž¥¹¥¿€òÉüµ¢ */
+	btst.b #TCB_enatex_bit, TCB_enatex(%a0)
+	jbeq dispatch_r_1					/* enatex€¬false€Ê€é¥ê¥¿¡Œ¥ó */
+	tst.l TCB_texptn(%a0)				/* texptn€¬0€Ê€é¥ê¥¿¡Œ¥ó */
+	jbeq dispatch_r_1
+	tst.l ipmflg						/* ipmflg€¬true€Ç€¢€ì€Ð            */
+	jbne call_texrtn					/*  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎžÆœÐ€· */
+dispatch_r_1:
+	rts
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã€ÎÆ°ºî³«»Ï¡Êprc_support.S¡Ë
+ */
+	.globl start_dispatch
+start_dispatch:
+	/*
+	 *  €³€Î¥ë¡Œ¥Á¥ó€Ï¡€¥«¡Œ¥Í¥ëµ¯Æ°»þ€Ë¡€€¹€Ù€Æ€Î³ä¹þ€ß€ò¶Ø»ß€·€¿ŸõÂÖ
+	 * ¡Ê³ä¹þ€ß¥í¥Ã¥¯ŸõÂÖ€ÈÆ±Åù¡Ë€ÇžÆ€ÓœÐ€µ€ì€ë¡¥€Þ€¿¡€³ä¹þ€ß¥â¡Œ¥É¡ÊÈó
+	 *  ¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€ÈÆ±Åù¡Ë€ÇžÆ€ÓœÐ€µ€ì€ë€³€È€òÁÛÄê€·€Æ€€€ë¡¥
+	 *
+	 *  prc_initialize€Ç¡€lock_flag€òtrue€Ë¡€saved_iipm€òIIPM_ENAALL€Ë
+	 *  œéŽü²œ€·€Æ€€€ë€¿€á¡€¥«¡Œ¥Í¥ëŽÉÍý³°€Î³ä¹þ€ß€òµö²Ä€¹€ë€³€È€Ç¡€
+	 *  CPU¥í¥Ã¥¯ŸõÂÖ¡Š¡Ê¥â¥Ç¥ëŸå€Î¡Ë³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ€Ë€Ê€ë¡¥
+	 *  €Þ€¿¡€initialize_task€Çdisdsp€òfalse€ËœéŽü²œ€·€Æ€€€ë€¿€á¡€¥Ç¥£
+	 *  ¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ€Ë€Ê€Ã€Æ€€€ë¡¥
+	 */
+#if TIPM_LOCK == -7
+	or.w #0x1000, %sr					/* ¥Þ¥¹¥¿¥â¡Œ¥É€Ë */
+#else /* TIPM_LOCK == -7 */
+	move.w %sr, %d0						/* ¥Þ¥¹¥¿¥â¡Œ¥É¡Š                */
+	and.w #~0x0700, %d0					/*  ¥«¡Œ¥Í¥ëŽÉÍý³°€Î³ä¹þ€ß€òµö²Ä */
+	or.w #(0x1000 | IIPM_LOCK), %d0
+	move.w %d0, %sr
+#endif /* TIPM_LOCK == -7 */
+	jbra dispatcher_0
+
+/*
+ *  žœºß€Î¥³¥ó¥Æ¥­¥¹¥È€òŒÎ€Æ€Æ¥Ç¥£¥¹¥Ñ¥Ã¥Á
+ */
+	.globl exit_and_dispatch
+exit_and_dispatch:
+	/* ¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ãËÜÂÎ¡Êdispatcher¡Ë€Ø */
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ãËÜÂÎ
+ */
+dispatcher:
+	/*
+	 *  €³€Î¥ë¡Œ¥Á¥ó€Ï¡€¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È¡ŠCPU¥í¥Ã¥¯ŸõÂÖ¡Š¥Ç¥£¥¹¥Ñ¥Ã¥Á
+	 *  µö²ÄŸõÂÖ¡Š¡Ê¥â¥Ç¥ëŸå€Î¡Ë³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ€ÇžÆ€ÓœÐ€µ
+	 *  €ì€ë¡¥
+	 *
+	 *  €¹€Ê€ï€Á¡€¥Þ¥¹¥¿¥â¡Œ¥É¡Šlock_flag€¬true¡Šdisdsp€¬false¡Šdspflg
+	 *  €¬true¡Šsaved_iipm€¬IIPM_ENAALL€È€Ê€Ã€Æ€€€ë¡¥ŒÂ¹ÔºÆ³«ÈÖÃÏ€Ø€â€³
+	 *  €ÎŸõÂÖ€Î€Þ€ÞÊ¬Žô€¹€ë¡¥
+	 */
+#ifdef LOG_DSP_ENTER
+	move.l p_runtsk, %d0				/* p_runtsk€ò¥Ñ¥é¥á¡Œ¥¿€Ë */
+	move.l %d0, -(%sp)
+	jsr log_dsp_enter
+	addq.l #4, %sp
+#endif /* LOG_DSP_ENTER */
+dispatcher_0:
+	move.l p_schedtsk, %a0				/* p_schedtsk€òp_runtsk€Ë */
+	move.l %a0, p_runtsk
+	jbeq dispatcher_1					/* p_runtsk€¬NULL€Ê€édispatcher_1€Ø */
+	move.l TCB_msp(%a0), %sp			/* ¥¿¥¹¥¯¥¹¥¿¥Ã¥¯€òÉüµ¢ */
+#ifdef LOG_DSP_LEAVE
+	move.l %a0, -(%sp)					/* p_runtsk€ò¥Ñ¥é¥á¡Œ¥¿€Ë */
+	jsr log_dsp_leave
+	addq.l #4, %sp
+	move.l p_runtsk, %a0
+#endif /* LOG_DSP_LEAVE */
+	move.l TCB_pc(%a0), %a1				/* ŒÂ¹ÔºÆ³«ÈÖÃÏ€ØÊ¬Žô */
+	jmp (%a1)
+dispatcher_1:
+	/*
+	 *  CPU¥í¥Ã¥¯ŸõÂÖ€ò²òœü€¹€ëœàÈ÷€ò€¹€ë¡¥
+	 */
+	move.w %sr, %d0						/* SR€òD0€ËÊÝÂž */
+	clr.l lock_flag						/* CPU¥í¥Ã¥¯²òœüŸõÂÖ€Ë */
+dispatcher_2:
+	/*
+	 *  ³ä¹þ€ß€òµö²Ä€·¡€³ä¹þ€ß¥â¡Œ¥É€ËÀÚ€êŽ¹€š€Æ¡€³ä¹þ€ß€òÂÔ€Ä¡¥
+	 *
+	 *  €³€³€Ç³ä¹þ€ß¥â¡Œ¥É€ËÀÚ€êŽ¹€š€ë€Î€Ï¡€€³€³€ÇÈ¯Àž€¹€ë³ä¹þ€ßœèÍý€Ë
+	 *  €É€Î¥¹¥¿¥Ã¥¯€ò»È€Š€«€È€€€ŠÌäÂê€Î²ò·è€È¡€³ä¹þ€ß¥Ï¥ó¥É¥éÆâ€Ç€Î¥¿
+	 *  ¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á€ÎËÉ»ß€È€€€Š2€Ä€Î°ÕÌ£€¬€¢€ë¡¥
+	 *
+	 *  ¥×¥í¥»¥Ã¥µ€ò³ä¹þ€ßÂÔ€Á€Ë°Ü¹Ô€µ€»€ëœèÍý€È¡€³ä¹þ€ßµö²Ä€È€Ï¡€ÉÔ²Ä
+	 *  Ê¬€Ë¹Ô€Ê€ŠÉ¬Í×€¬€¢€ë¡ÊM68040€Ç€ÏstopÌ¿Îá€ÇÎŸÊý¹Ô€Ê€Š€Î€ÇÌäÂê€Ê
+	 *  €€¡Ë¡¥€³€ì€òÉÔ²ÄÊ¬€Ë¹Ô€Ê€ï€Ê€€Ÿì¹ç¡€³ä¹þ€ß€òµö²Ä€·€¿ÄŸžå€Ë³ä¹þ
+	 *  €ß€¬Æþ€ê¡€€œ€ÎÃæ€Ç¥¿¥¹¥¯€¬ŒÂ¹Ô²ÄÇœŸõÂÖ€Ë€Ê€ë€È¡€ŒÂ¹Ô€¹€Ù€­¥¿¥¹
+	 *  ¥¯€¬€¢€ë€Ë€â€«€«€ï€é€º¥×¥í¥»¥Ã¥µ€¬³ä¹þ€ßÂÔ€Á€Ë€Ê€Ã€Æ€·€Þ€Š¡¥
+	 *
+	 *  ³ä¹þ€ßÂÔ€Á€ÎŽÖ€Ï¡€p_runtsk€òNULL¡Ê¡á0¡Ë€ËÀßÄê€·€Ê€±€ì€Ð€Ê€é€Ê
+	 *  €€¡¥€³€Î€è€Š€ËÀßÄê€·€Ê€€€È¡€³ä¹þ€ß¥Ï¥ó¥É¥é€«€éiget_tid€òžÆ€ÓœÐ
+	 *  €·€¿ºÝ€ÎÆ°ºî€¬»ÅÍÍ€Ë¹çÃ×€·€Ê€¯€Ê€ë¡¥
+	 */
+	stop #0x2000						/* ³ä¹þ€ßÂÔ€Á */
+	move.w %d0, %sr						/* žµ€ÎŸõÂÖ€ËÌá€¹ */
+	tst.l reqflg						/* reqflg€¬false€Ê€édispatcher_2€Ø */
+	jbeq dispatcher_2
+	clr.l reqflg						/* reqflg€òfalse€Ë */
+	/*
+	 *  CPU¥í¥Ã¥¯ŸõÂÖ€ËÌá€¹¡¥³ä¹þ€ßÂÔ€Á€ÎŽÖ€ËŒÂ¹Ô€·€¿³ä¹þ€ß¥Ï¥ó¥É¥é€Ë€è
+	 *  €ê¡€saved_iipm€¬œñ€­Ž¹€š€é€ì€ë²ÄÇœÀ­€¬€¢€ë€¿€á¡€žµ€ÎÃÍ€ËÌá€¹É¬
+	 *  Í×€¬€¢€ë¡¥dispatcher€¬ŒÂ¹Ô€µ€ì€ë»þ€Ï¡€saved_iipm€¬IIPM_ENAALL
+	 *  €È€Ê€Ã€Æ€€€ë€¿€á¡€€³€³€Ç€Ïsaved_iipm€òIIPM_ENAALL¡Ê¡á0¡Ë€ËÌá€»
+	 *  €Ð€è€€¡¥
+	 */
+	clr.w saved_iipm					/* saved_iipm€ò0€Ë€¹€ë */
+	move.l #true, lock_flag				/* CPU¥í¥Ã¥¯ŸõÂÖ€Ë */
+	jbra dispatcher_0
+
+/*
+ *  ¥«¡Œ¥Í¥ë€ÎœªÎ»œèÍý€ÎžÆœÐ€·
+ *
+ *  M68040€Ç€Ï¡€¥â¡Œ¥ÉÀÚŽ¹€š€Ë€è€ê¥¹¥¿¥Ã¥¯€âÀÚ€êŽ¹€ï€ë€¿€á¡€ÌÀŒšÅª€Ê¥¹
+ *  ¥¿¥Ã¥¯ÀÚŽ¹€š€ÏÉ¬Í×€Ê€€¡¥ºÇœé€«€é³ä¹þ€ß¥â¡Œ¥É€Ç€¢€Ã€¿Ÿì¹ç€â¡€Æ±€žœè
+ *  Íý€Ç€è€€¡¥
+ */
+	.globl call_exit_kernel
+call_exit_kernel:
+	and.w #~0x1000, %sr					/* ³ä¹þ€ß¥â¡Œ¥É€Ë */
+	jmp exit_kernel						/* ¥«¡Œ¥Í¥ë€ÎœªÎ»œèÍý€òžÆ€Ö */
+	
+/*
+ *  ¥¿¥¹¥¯³«»Ï»þœèÍý
+ */
+	.text
+	.globl start_r
+start_r:
+	clr.l lock_flag						/* CPU¥í¥Ã¥¯²òœüŸõÂÖ€Ë */
+	and.w #~0x0700, %sr
+	move.l TCB_p_tinib(%a0), %a1		/* p_runtsk->p_tinib€òA1€Ë */
+	move.l TINIB_exinf(%a1), -(%sp)		/* exinf€ò¥¹¥¿¥Ã¥¯€ËÀÑ€à */
+	move.l #ext_tsk, -(%sp)				/* ext_tsk€ò¥¹¥¿¥Ã¥¯€ËÀÑ€à */
+	move.l TINIB_task(%a1), %a0			/* ¥¿¥¹¥¯€Îµ¯Æ°ÈÖÃÏ€òA0€Ë */
+	jmp (%a0)
+
+/*
+ *  ³ä¹þ€ß¥Ï¥ó¥É¥éœÐžýœèÍý
+ *
+ *  ret_int€Ï¡€³ä¹þ€ß¥Ï¥ó¥É¥é€«€éÌá€Ã€¿ÄŸžå€ËŒÂ¹Ô€¹€ë¥ë¡Œ¥Á¥ó€Ç¡€
+ *  INTHDR_ENTRY¥Þ¥¯¥í€ÇÅž³«€¹€ë³ä¹þ€ß¥Ï¥ó¥É¥é€ÎÆþžýœèÍý€Ç¡€³ä¹þ€ß¥Ï¥ó
+ *  ¥É¥é€«€é€ÎÌá€êÈÖÃÏ€ËÀßÄê€µ€ì€ë¡¥
+ */
+	.text
+	.globl ret_int
+ret_int:
+	btst.b #4, 16(%sp)					/* Ìá€êÀè€¬³ä¹þ€ß¥â¡Œ¥É€Ê€é */
+	jbeq ret_int_1						/*           €¹€°€Ë¥ê¥¿¡Œ¥ó */
+	/*
+	 *  ¥«¡Œ¥Í¥ëŽÉÍý€Î³ä¹þ€ß€ò¶Ø»ß€¹€ë¡¥€³€Î»þÅÀ€Ç€Ï¡€CPU¥í¥Ã¥¯ŸõÂÖ€Ë
+	 *  €Ï€Ê€é€Ê€€¡Êlock_flag€Èsaved_iipm€Ï¹¹¿·€·€Ê€€¡Ë¡¥
+	 *
+	 *  reqflg€ò¥Á¥§¥Ã¥¯€¹€ëÁ°€Ë³ä¹þ€ß€ò¶Ø»ß€¹€ë€Î€Ï¡€reqflg€ò¥Á¥§¥Ã¥¯
+	 *  €·€¿ÄŸžå€Ë³ä¹þ€ß¥Ï¥ó¥É¥é€¬µ¯Æ°€µ€ì¡€€œ€ÎÃæ€Ç¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬Í×µá
+	 *  €µ€ì€¿Ÿì¹ç€Ë¡€€¹€°€Ë¥Ç¥£¥¹¥Ñ¥Ã¥Á€µ€ì€Ê€€€È€€€ŠÌäÂê€¬Àž€ž€ë€¿€á
+	 *  €Ç€¢€ë¡¥
+	 */
+#if TIPM_LOCK == -7
+	or.w #0x0700, %sr					/* €¹€Ù€Æ€Î³ä¹þ€ß€ò¶Ø»ß */
+#else /* TIPM_LOCK == -7 */
+	/*
+	 *  €³€Î¥ë¡Œ¥Á¥ó€Ï¥«¡Œ¥Í¥ëŽÉÍý€Î³ä¹þ€ß€«€éµ¯Æ°€µ€ì€ë€¿€á¡€€³€³€Ç€Ï¡€
+	 *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€¬TIPM_LOCK€è€ê€âÄã€€€ÈÁÛÄê€Ç€­€ë¡¥
+	 */
+	move.w %sr, %d0						/* ¥«¡Œ¥Í¥ëŽÉÍý€Î³ä¹þ€ß€ò¶Ø»ß */
+	and.w #~0x0700, %d0
+	or.w #IIPM_LOCK, %d0
+	move.w %d0, %sr
+#endif /* TIPM_LOCK == -7 */
+	tst.l reqflg						/* reqflg€¬true€Ç€¢€ì€Ðret_int_2€Ø */
+	jbne ret_int_2
+ret_int_1:
+	/*
+	 *  ³ä¹þ€ßœèÍý€«€é€Î¥ê¥¿¡Œ¥ó€Ë€è€ê¡€CPU¥í¥Ã¥¯²òœüŸõÂÖ€Ë°Ü¹Ô€¹€ë€è€Š
+	 *  œàÈ÷€¹€ë¡¥³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€Ï¡€RTEÌ¿Îá€Ë€è€êžµ€ÎÃÍ€ËÌá€ë€¿€á¡€
+	 *  lock_flag€òfalse€Ë€·€Æ€ª€±€Ð€è€€¡Êlock_flag€òfalse€Ë€¹€ë€Î€Ï¡€
+	 *  CPU¥í¥Ã¥¯ŸõÂÖ€Î€Þ€Þ³ä¹þ€ß¥Ï¥ó¥É¥é€«€éÌá€Ã€¿»þ€ÎÂÐºö¡Ë¡¥
+	 */
+	clr.l lock_flag						/* CPU¥í¥Ã¥¯²òœü€ÎœàÈ÷ */
+	movem.l (%sp)+, %d0-%d1/%a0-%a1		/* ¥¹¥¯¥é¥Ã¥Á¥ì¥ž¥¹¥¿€òÉüµ¢ */
+	rte
+
+ret_int_2:
+	movem.l (%sp)+, %d0-%d1/%a0-%a1		/* ¥¹¥¯¥é¥Ã¥Á¥ì¥ž¥¹¥¿€òÉüµ¢ */
+	addq.l #8, %sp						/* ¥¹¥í¡Œ¥¢¥Š¥§¥€¥Õ¥ì¡Œ¥à€òŒÎ€Æ€ë */
+	or.w #0x1000, %sr					/* ¥Þ¥¹¥¿¥â¡Œ¥É€Ë¡Ê¥¹¥¿¥Ã¥¯ÀÚŽ¹€š¡Ë*/
+	movem.l %d0-%d1/%a0-%a1, -(%sp)		/* ¥¹¥¯¥é¥Ã¥Á¥ì¥ž¥¹¥¿€òÊÝÂž */
+ret_int_3:
+	/*
+	 *  €³€³€Ø€Ï¡€CPUÎã³°¥Ï¥ó¥É¥é€ÎœÐžýœèÍý€«€é€âÊ¬Žô€·€Æ€¯€ë¡¥
+	 *
+	 *  €³€³€Ç€Ï¡€Ìá€êÀè€¬¥¿¥¹¥¯€Ç€¢€ê¡€¥¹¥¿¥Ã¥¯€Ï¡€Îã³°¥¹¥¿¥Ã¥¯¥Õ¥ì¡Œ
+	 *  ¥à€ÎŸå€Ë¥¹¥¯¥é¥Ã¥Á¥ì¥ž¥¹¥¿€Î€ß€¬ÊÝÂž€µ€ì€¿ŸõÂÖ€Ë€Ê€Ã€Æ€€€ë¡¥€Þ
+	 *  €¿¡€¥×¥í¥»¥Ã¥µ€Ï¡€¥Þ¥¹¥¿¥â¡Œ¥É¡Š¥«¡Œ¥Í¥ëŽÉÍý€Î³ä¹þ€ß€ò¶Ø»ß€·€¿
+	 *  ŸõÂÖ€È€Ê€Ã€Æ€€€ë¡¥
+	 */
+	clr.l reqflg						/* reqflg€òfalse€Ë */
+	/*
+	 *  CPU¥í¥Ã¥¯ŸõÂÖ€Ë°Ü¹Ô€·¡€³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€ò³ä¹þ€ßœèÍýÁ°€ÎÃÍ€ËÀß
+	 *	Äê€¹€ë¡¥¥«¡Œ¥Í¥ëŽÉÍý€Î³ä¹þ€ß€Ï€¹€Ç€Ë¶Ø»ß€·€Æ€€€ë€Î€Ç¡€lock_flag
+	 *  €Èsaved_iipm€ò¹¹¿·€¹€ë¡¥saved_iipm€Ï¡€Ìá€êÀè€Î³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹
+	 *  ¥¯¡Ê€ÎÆâÉôÉœžœ¡Ë€ËÀßÄê€¹€ë¡¥
+	 *
+	 *  €³€Î»þÅÀ€ÇCPU¥í¥Ã¥¯ŸõÂÖ€È€¹€ë€Î€Ï¡€dispatcher€ØÊ¬Žô€¹€ë»þ€È¡€
+	 *  call_texrtn€òžÆ€ÓœÐ€¹»þ€Ë¡€CPU¥í¥Ã¥¯ŸõÂÖ€Ë€Ê€Ã€Æ€€€ëÉ¬Í×€¬€¢€ë
+	 *  €¿€á€Ç€¢€ë¡¥
+	 */
+	move.w 16(%sp), %d0					/* Ìá€êÀè€ÎSR€òD0€Ë */
+	and.w #0x0700, %d0					/* IPM€òŒè€êœÐ€·€Æsaved_iipm€Ë */
+	move.w %d0, saved_iipm
+	move.l #true, lock_flag				/* lock_flag€òtrue€Ë */
+	/*
+	 *  dspflg€¬false€Ç€¢€ëŸì¹ç€È¡€p_runtsk€Èp_schedtsk€¬Æ±€žŸì¹ç€Ë€Ï¡€
+	 *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á€ò¹Ô€ï€Ê€€¡¥€³€Î¥Á¥§¥Ã¥¯€¬É¬Í×€Ê€Î€Ï¡€¥¿¥¹¥¯Îã³°œè
+	 *  Íý¥ë¡Œ¥Á¥ó€ÎžÆœÐ€·€¬É¬Í×€ÊŸì¹ç€Ë¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬É¬Í×€Ê€¯€Æ€â¡€
+	 *  reqflg€òtrue€Ë€¹€ë€¿€á€Ç€¢€ë¡¥
+	 */
+	move.l p_runtsk, %a0				/* p_runtsk€òA0€Ë */
+	tst.l dspflg						/* dspflg€¬false€Ê€éret_int_4€Ø */
+	jbeq ret_int_4
+	cmp.l p_schedtsk, %a0				/* p_runtsk€Èp_schedtsk€¬Æ±€ž€Ê€é */
+	jbeq ret_int_4						/*                    ret_int_4€Ø */
+	movem.l %d2-%d7/%a2-%a6, -(%sp)		/* »Ä€ê€Î¥ì¥ž¥¹¥¿€òÊÝÂž */
+	move.l %sp, TCB_msp(%a0)			/* ¥¿¥¹¥¯¥¹¥¿¥Ã¥¯€òÊÝÂž */
+	move.l #ret_int_r, TCB_pc(%a0)		/* ŒÂ¹ÔºÆ³«ÈÖÃÏ€òÊÝÂž */
+	jbra dispatcher
+
+ret_int_r:
+	movem.l (%sp)+, %d2-%d7/%a2-%a6		/* ¥ì¥ž¥¹¥¿€òÉüµ¢ */
+ret_int_4:
+	/*
+	 *  enatex€¬true€Ç¡€texptn€¬0€Ç€Ê€¯¡€ipmflg€¬true€Ç€¢€ì€Ð¡€¥¿¥¹¥¯
+	 *  Îã³°œèÍý¥ë¡Œ¥Á¥ó€òžÆ€ÓœÐ€¹¡¥
+	 */
+	btst.b #TCB_enatex_bit, TCB_enatex(%a0)
+	jbeq ret_int_5						/* enatex€¬false€Ê€éret_int_5€Ø */
+	tst.l TCB_texptn(%a0)				/* texptn€¬0€Ê€éret_int_5€Ø */
+	jbeq ret_int_5
+	tst.l ipmflg						/* ipmflg€¬false€Ê€éret_int_5€Ø */
+	jbeq ret_int_5
+	jsr call_texrtn						/* ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎžÆœÐ€· */
+ret_int_5:
+	/*
+	 *  ³ä¹þ€ßœèÍý€«€é€Î¥ê¥¿¡Œ¥ó€Ë€è€ê¡€CPU¥í¥Ã¥¯²òœüŸõÂÖ€Ë°Ü¹Ô€¹€ë€è
+	 *  €ŠœàÈ÷€¹€ë¡¥³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€Ï¡€RTEÌ¿Îá€Ë€è€êžµ€ÎÃÍ€ËÌá€ë€¿
+	 *  €á¡€lock_flag€òfalse€Ë€·€Æ€ª€±€Ð€è€€¡¥
+	 */
+	clr.l lock_flag						/* CPU¥í¥Ã¥¯²òœü€ÎœàÈ÷ */
+	movem.l (%sp)+, %d0-%d1/%a0-%a1		/* ¥¹¥¯¥é¥Ã¥Á¥ì¥ž¥¹¥¿€òÉüµ¢ */
+	rte
+
+/*
+ *  CPUÎã³°¥Ï¥ó¥É¥éœÐÆþžýœèÍý
+ *
+ *  exchdr_entry€Ï¡€CPUÎã³°€¬È¯Àž€·€¿»þ€ËŒÂ¹Ô€¹€ë¥ë¡Œ¥Á¥ó€Ç¡€EXCHDR_ENTRY
+ *  ¥Þ¥¯¥í€ÇÅž³«€¹€ëCPUÎã³°¥Ï¥ó¥É¥é€ÎÆþžýœèÍý€«€é¡€CPUÎã³°¥Ï¥ó¥É¥é€ÎÈÖÃÏ€ò
+ *  A1€Ë¡€CPUÎã³°¥Ï¥ó¥É¥éÈÖ¹æ€òD1€ËÆþ€ì€ÆÊ¬Žô€·€Æ€¯€ë¡¥
+ *
+ *  CPUÎã³°¥Ï¥ó¥É¥é€Ï¡€Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€ÇŒÂ¹Ô€¹€ë¡¥€œ€Î€¿€á¡€CPUÎã
+ *  ³°¥Ï¥ó¥É¥é€òžÆ€ÓœÐ€¹Á°€Ë³ä¹þ€ß¥â¡Œ¥É€Ë°Ü¹Ô€·¡€¥ê¥¿¡Œ¥ó€·€Æ€­€¿žå€Ë
+ *  žµ€Î¥â¡Œ¥É€ËÌá€¹¡¥žµ€Î¥â¡Œ¥É€ËÌá€¹€¿€á€Ë¡€³ä¹þ€ß¥â¡Œ¥É€Ë°Ü¹Ô€¹€ëÁ°
+ *  €ÎSR€ò³ä¹þ€ß¥¹¥¿¥Ã¥¯Ÿå€ËÊÝÂž€¹€ë¡Ê¥ê¥¿¡Œ¥óÀè€ÎSR€ò»²ŸÈ€¹€ëŒê€â€¢€ë
+ *  €¬¡€¥¿¥¹¥¯¥¹¥¿¥Ã¥¯Ÿå€ËÊÝÂž€µ€ì€ëŸì¹ç€¬€¢€ê¡€»²ŸÈ€¹€ë€Î€¬ÌÌÅÝ¡Ë¡¥
+ */
+	.text
+	.globl exchdr_entry
+exchdr_entry:
+	lea.l 16(%sp), %a0					/* Îã³°¥Õ¥ì¡Œ¥à€ÎÀèÆ¬€òA0€Ë */
+	move.w %sr, %d0						/* SR€òD0€Ë */
+	and.w #~0x1000, %sr					/* ³ä¹þ€ß¥â¡Œ¥É€Ë¡Ê¥¹¥¿¥Ã¥¯ÀÚŽ¹€š¡Ë*/
+	move.l %d0, -(%sp)					/* žµ€ÎSR€ò¥¹¥¿¥Ã¥¯€ËÊÝÂž */
+	and.w #0x0700, %d0					/* IPM€¬INT_IPM(TMIN_INTPRI) */
+	cmp.w #INT_IPM(TMIN_INTPRI), %d0	/*    €è€êŸ®€µ€±€ì€Ð¡€¥«¡Œ¥Í¥ë */
+	blt exchdr_entry_1					/*    ŽÉÍý€ÎCPUÎã³°€ÎœèÍý€Ø */
+
+	/*
+	 *  ¥«¡Œ¥Í¥ëŽÉÍý³°€ÎCPUÎã³°¥Ï¥ó¥É¥é€ÎžÆœÐ€·
+	 */
+	move.l lock_flag, %d0				/* žµ€Îlock_flag€ò¥¹¥¿¥Ã¥¯€ËÊÝÂž */
+	move.l %d0, -(%sp)
+	move.l %a0, -(%sp)					/* A0€ò¥Ñ¥é¥á¡Œ¥¿€Ë */
+	jsr (%a1)							/* CPUÎã³°¥Ï¥ó¥É¥é€òžÆ€ÓœÐ€¹ */
+	addq.l #4, %sp						/* ¥¹¥¿¥Ã¥¯Ÿå€Î°ú¿ô€òŒÎ€Æ€ë */
+	move.l (%sp)+, %d0					/* lock_flag€òžµ€ËÌá€¹ */
+	move.l %d0, lock_flag
+	move.l (%sp)+, %d0					/* SR€òžµ€ËÌá€¹ */
+	move.w %d0, %sr
+	movem.l (%sp)+, %d0-%d1/%a0-%a1		/* ¥¹¥¯¥é¥Ã¥Á¥ì¥ž¥¹¥¿€òÉüµ¢ */
+	rte
+
+	/*
+	 *  ¥«¡Œ¥Í¥ëŽÉÍý€ÎCPUÎã³°¥Ï¥ó¥É¥é€ÎžÆœÐ€·
+	 */
+exchdr_entry_1:
+#ifdef LOG_EXC_LEAVE					/* excno_num€òlog_exc_leave€Î */
+	move.l %d1, -(%sp)					/*               ¥Ñ¥é¥á¡Œ¥¿€Ë */
+#endif /* LOG_EXC_LEAVE */
+	move.l %a0, -(%sp)					/* A0€òCPUÎã³°¥Ï¥ó¥É¥é€Î¥Ñ¥é¥á¡Œ¥¿€Ë */
+#ifdef LOG_EXC_ENTER
+	move.l %a1, -(%sp)					/* A1€òÊÝÂž */
+	move.l %d1, -(%sp)					/* excno_num€ò¥Ñ¥é¥á¡Œ¥¿€Ë */
+	jsr _kernel_log_exc_enter			/* log_exc_enter€òžÆ€ÓœÐ€¹ */
+	addq.l #4, %sp
+	move.l (%sp)+, %a1					/* A1€òÉüµ¢ */
+#endif /* LOG_EXC_ENTER */
+	jsr (%a1)							/* CPUÎã³°¥Ï¥ó¥É¥é€òžÆ€ÓœÐ€¹ */
+	addq.l #4, %sp						/* ¥¹¥¿¥Ã¥¯Ÿå€Î°ú¿ô€òŒÎ€Æ€ë */
+#ifdef LOG_EXC_LEAVE
+	jsr _kernel_log_exc_leave			/* log_exc_leave€òžÆ€ÓœÐ€¹ */
+	addq.l #4, %sp
+#endif /* LOG_EXC_LEAVE */
+ret_exc:
+	move.l (%sp)+, %d0					/* žµ€ÎSR€òD0€Ë */
+	and.w #0x1000, %d0					/* žµ€¬³ä¹þ€ß¥â¡Œ¥É€Ê€é */
+	jbeq ret_exc_1						/*       €¹€°€Ë¥ê¥¿¡Œ¥ó */
+	/*
+	 *  ¥«¡Œ¥Í¥ëŽÉÍý€Î³ä¹þ€ß€ò¶Ø»ß€·¡€¥Þ¥¹¥¿¥â¡Œ¥É€ËÌá€¹¡¥€³€Î»þÅÀ€Ç€Ï¡€
+	 *  CPU¥í¥Ã¥¯ŸõÂÖ€Ë€Ï€Ê€é€Ê€€¡Êlock_flag€Èsaved_iipm€Ï¹¹¿·€·€Ê€€¡Ë¡¥
+	 *
+	 *  reqflg€ò¥Á¥§¥Ã¥¯€¹€ëÁ°€Ë³ä¹þ€ß€ò¶Ø»ß€¹€ë€Î€Ï¡€reqflg€ò¥Á¥§¥Ã¥¯
+	 *  €·€¿ÄŸžå€Ë³ä¹þ€ß¥Ï¥ó¥É¥é€¬µ¯Æ°€µ€ì¡€€œ€ÎÃæ€Ç¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬Í×µá
+	 *  €µ€ì€¿Ÿì¹ç€Ë¡€€¹€°€Ë¥Ç¥£¥¹¥Ñ¥Ã¥Á€µ€ì€Ê€€€È€€€ŠÌäÂê€¬Àž€ž€ë€¿€á
+	 *  €Ç€¢€ë¡¥
+	 */
+#if TIPM_LOCK == -7
+	or.w #0x1700, %sr					/* ¥Þ¥¹¥¿¥â¡Œ¥É¡ŠÁŽ³ä¹þ€ß¶Ø»ß */
+#else /* TIPM_LOCK == -7 */
+	/*
+	 *  €³€Î¥ë¡Œ¥Á¥ó€Ï¥«¡Œ¥Í¥ëŽÉÍý€ÎCPUÎã³°€«€éµ¯Æ°€µ€ì€ë€¿€á¡€€³€³€Ç€Ï¡€
+	 *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€¬TIPM_LOCK€è€ê€âÄã€€€ÈÁÛÄê€Ç€­€ë¡¥
+	 */
+	move.w %sr, %d0						/* ¥Þ¥¹¥¿¥â¡Œ¥É¡Š                */
+	and.w #~0x0700, %d0					/*    ¥«¡Œ¥Í¥ëŽÉÍý€Î³ä¹þ€ß€ò¶Ø»ß */
+	or.w #(0x1000|IIPM_LOCK), %d0
+	move.w %d0, %sr
+#endif /* TIPM_LOCK == -7 */
+	/*
+	 *  CPUÎã³°€Ç€Ï³ä¹þ€ß¥â¡Œ¥É€ËÀÚ€êŽ¹€ï€é€Ê€€€¿€á¡€reqflg€¬true€ÎŸì¹ç¡€
+	 *  ret_int_2€Ç€Ï€Ê€¯¡€ret_int_3€ØÊ¬Žô€¹€ë¡¥
+	 */
+	tst.l reqflg						/* reqflg€¬true€Ç€¢€ì€Ðret_int_3€Ø */
+	jbne ret_int_3
+ret_exc_1:
+	movem.l (%sp)+, %d0-%d1/%a0-%a1		/* ¥¹¥¯¥é¥Ã¥Á¥ì¥ž¥¹¥¿€òÉüµ¢ */
+	rte
+
+/*
+ *  ÈùŸ¯»þŽÖÂÔ€Á¡ÊËÜÍè€ÏSIL€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô¡Ë
+ */
+	.globl _sil_dly_nse
+_sil_dly_nse:
+	subi.l #SIL_DLY_TIM1, %d0			/* D0€«€éSIL_DLY_TIM1€ò°ú€¯ */
+	jbhi _sil_dly_nse_1					/* ·ë²Ì€¬0°Ê²Œ€Ê€é¥ê¥¿¡Œ¥ó */
+	rts
+_sil_dly_nse_1:
+	subi.l #SIL_DLY_TIM2, %d0			/* D0€«€éSIL_DLY_TIM2€ò°ú€¯ */
+	jbhi _sil_dly_nse_1					/* ·ë²Ì€¬0€è€êÂç€­€±€ì€Ð¥ë¡Œ¥× */
+	rts
Index: /arch/m68k_gcc/prc_test.h
===================================================================
--- /arch/m68k_gcc/prc_test.h	(revision 7)
+++ /arch/m68k_gcc/prc_test.h	(revision 7)
@@ -0,0 +1,51 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2006,2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥Æ¥¹¥È¥×¥í¥°¥é¥à€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÄêµÁ¡ÊM68040ÍÑ¡Ë
+ */
+
+#ifndef TOPPERS_PRC_TEST_H
+#define TOPPERS_PRC_TEST_H
+
+#define CPUEXC1					5		/* ¥Œ¥íœü»»Îã³° */
+#define RAISE_CPU_EXCEPTION		syslog(LOG_NOTICE, "zerodiv = %d", 10 / 0)
+
+#endif /* TOPPERS_PRC_TEST_H */
Index: /arch/m68k_gcc/prc_unrename.h
===================================================================
--- /arch/m68k_gcc/prc_unrename.h	(revision 7)
+++ /arch/m68k_gcc/prc_unrename.h	(revision 7)
@@ -0,0 +1,50 @@
+/* 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 prc_initialize
+#undef prc_terminate
+
+/*
+ *  prc_support.S
+ */
+#undef dispatch
+#undef start_dispatch
+#undef exit_and_dispatch
+#undef call_exit_kernel
+#undef start_r
+#undef ret_int
+#undef exchdr_entry
+#undef lock_flag
+#undef saved_iipm
+
+#ifdef TOPPERS_LABEL_ASM
+
+/*
+ *  prc_config.c
+ */
+#undef _prc_initialize
+#undef _prc_terminate
+
+/*
+ *  prc_support.S
+ */
+#undef _dispatch
+#undef _start_dispatch
+#undef _exit_and_dispatch
+#undef _call_exit_kernel
+#undef _start_r
+#undef _ret_int
+#undef _exchdr_entry
+#undef _lock_flag
+#undef _saved_iipm
+
+#endif /* TOPPERS_LABEL_ASM */
+
+
+#endif /* TOPPERS_PRC_RENAME_H */
Index: /arch/m68k_gcc/start.S
===================================================================
--- /arch/m68k_gcc/start.S	(revision 7)
+++ /arch/m68k_gcc/start.S	(revision 7)
@@ -0,0 +1,129 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005,2006 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥«¡Œ¥Í¥ëÂÐ±þ€Î¥¹¥¿¡Œ¥È¥¢¥Ã¥×¥â¥ž¥å¡Œ¥ë¡ÊM68040ÍÑ¡Ë
+ */
+
+#define	TOPPERS_MACRO_ONLY
+#include "kernel_impl.h"
+
+	.text
+	.globl start
+start:
+	/*
+	 *  ¥×¥í¥»¥Ã¥µ¥â¡Œ¥É€È¥¹¥¿¥Ã¥¯¥Ý¥€¥ó¥¿€ÎœéŽü²œ
+	 */
+	cinva %bc							/* €¹€Ù€Æ€Î¥­¥ã¥Ã¥·¥å€òÌµžú²œ */
+	move.l #0x80008000, %d0				/* ÎŸÊý€Î¥­¥ã¥Ã¥·¥å€òON */
+	movec.l %d0, %cacr
+
+	move.w %sr, %d0
+	or.w #0x2700, %d0					/* ¥¹¡Œ¥Ñ¥Ð¥€¥¶¥â¡Œ¥É¡€IPM=7€ËÀßÄê */
+	and.w #0xefff ,%d0					/* ³ä¹þ€ß¥â¡Œ¥É€ËÀßÄê */
+	move.w %d0, %sr
+
+	move.l _kernel_istk, %sp			/* ¥¹¥¿¥Ã¥¯¥Ý¥€¥ó¥¿¡ÊSPI¡Ë€ÎœéŽü²œ */
+	add.l _kernel_istksz, %sp
+	move.l #0, %fp						/* ¥Õ¥ì¡Œ¥à¥Ý¥€¥ó¥¿€ÎœéŽü²œ */
+
+	/*
+	 *  hardware_init_hook€ÎžÆœÐ€·¡Ê0€Ç€Ê€€Ÿì¹ç¡Ë
+	 *
+	 *  ¥¿¡Œ¥²¥Ã¥È¥Ï¡Œ¥É¥Š¥§¥¢€Ë°ÍÂž€·€ÆÉ¬Í×€ÊœéŽü²œœèÍý€¬€¢€ëŸì¹ç€Ï¡€
+	 *  hardware_init_hook€È€€€ŠŽØ¿ô€òÍÑ°Õ€¹€ë¡¥
+	 */
+	move.l #hardware_init_hook, %a0
+	cmp.l #0, %a0
+	jbeq start_1
+	jsr (%a0)
+
+	/*
+	 *  bss¥»¥¯¥·¥ç¥ó€Î¥¯¥ê¥¢
+	 */
+start_1:
+	move.l #__bss_start, %a0
+	move.l #_end, %d0
+	sub.l %a0, %d0
+	jbeq start_3
+start_2:
+	clr.b (%a0)+
+	dbra %d0, start_2
+	clr.w %d0
+	subq.l #1, %d0
+	jbcc start_2
+
+	/*
+	 *  data¥»¥¯¥·¥ç¥ó€ÎœéŽü²œ¡ÊROM²œÂÐ±þ¡Ë
+	 *
+	 *  __idata_start€«€é__idata_end€Þ€Ç€ò¡€__data_start°Ê¹ß€Ë¥³¥Ô¡Œ€¹
+	 *  €ë¡¥
+	 */
+start_3:
+	move.l #__idata_end, %d0
+	sub.l #__idata_start, %d0
+	jbls start_5
+	move.l #__idata_start, %a0
+	move.l #__data_start, %a1
+start_4:
+	move.b (%a0)+, (%a1)+
+	dbra %d0, start_4
+	clr.w %d0
+	subq.l #1, %d0
+	jbcc start_4
+
+	/*
+	 *  software_init_hook€ÎžÆœÐ€·¡Ê0€Ç€Ê€€Ÿì¹ç¡Ë
+	 *
+	 *  ¥œ¥Õ¥È¥Š¥§¥¢ŽÄ¶­¡ÊÆÃ€Ë¥é¥€¥Ö¥é¥ê¡Ë€Ë°ÍÂž€·€ÆÉ¬Í×€ÊœéŽü²œœèÍý€¬
+	 *  €¢€ëŸì¹ç€Ï¡€software_init_hook€È€€€ŠŽØ¿ô€òÍÑ°Õ€¹€ì€Ð€è€€¡¥
+	 */
+start_5:
+	move.l #software_init_hook, %a0
+	cmp.l #0, %a0
+	jbeq start_6
+	jsr (%a0)
+
+	/*
+	 *  ¥«¡Œ¥Í¥ë€òµ¯Æ°€¹€ë¡¥
+	 */
+start_6:
+	jmp sta_ker
Index: /configure
===================================================================
--- /configure	(revision 7)
+++ /configure	(revision 7)
@@ -0,0 +1,273 @@
+#! /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-2012 by Embedded and Real-Time Systems Laboratory
+#              Graduate School of Information Science, Nagoya Univ., JAPAN
+# 
+#  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+#  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+#  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+#  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+#      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+#      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+#  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+#      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+#      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+#      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+#  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+#      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+#      €È¡¥
+#    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+#        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+#    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+#        Êó¹ð€¹€ë€³€È¡¥
+#  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+#      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+#      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+#      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+#      ÌÈÀÕ€¹€ë€³€È¡¥
+# 
+#  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+#  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+#  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+#  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+#  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+# 
+#  @(#) $Id$
+# 
+
+use Getopt::Std;
+
+#  ¥ª¥×¥·¥ç¥ó€ÎÄêµÁ
+#
+#  -T <target>			¥¿¡Œ¥²¥Ã¥ÈÌŸ¡ÊÉ¬¿Ü¡Ë
+#  -A <applname>		¥¢¥×¥ê¥±¡Œ¥·¥ç¥ó¥×¥í¥°¥é¥àÌŸ¡Ê¥Ç¥Õ¥©¥ë¥È€Ïsample1¡Ë
+#  -a <appldir>			¥¢¥×¥ê¥±¡Œ¥·¥ç¥ó€Î¥Ç¥£¥ì¥¯¥È¥êÌŸ
+#  -U <applobjs>		ÂŸ€Î¥¢¥×¥ê¥±¡Œ¥·¥ç¥ó¥×¥í¥°¥é¥à¥Õ¥¡¥€¥ë
+#						¡Ê.o¥Õ¥¡¥€¥ëÌŸ€Ç»ØÄê¡¥Ê£¿ô»ØÄê²Ä¡Ë
+#  -S <syssvcobjs>		¥·¥¹¥Æ¥à¥µ¡Œ¥Ó¥¹€Î¥×¥í¥°¥é¥à¥Õ¥¡¥€¥ë
+#						¡Ê.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¡Ë€Î¥Ñ¥¹ÌŸ
+#  -P <num>				¥×¥í¥»¥Ã¥µ¿ô¡Ê¥Þ¥ë¥Á¥×¥í¥»¥Ã¥µÂÐ±þ¥«¡Œ¥Í¥ë€ÎŸì¹ç¡Ë
+#  -o <options>			¶ŠÄÌ¥³¥ó¥Ñ¥€¥ë¥ª¥×¥·¥ç¥ó¡ÊCOPTS€ËÄÉ²Ã¡Ë
+#  -O <options>			¶ŠÄÌ¥·¥ó¥Ü¥ëÄêµÁ¥ª¥×¥·¥ç¥ó¡ÊCDEFS€ËÄÉ²Ã¡Ë
+#  -k <options>			¶ŠÄÌ¥ê¥ó¥«¥ª¥×¥·¥ç¥ó¡ÊLDFLAGSÅù€ËÄÉ²Ã¡Ë
+
+#  »ÈÍÑÎã(1)
+#
+#  % ../configure -T dve68k_gcc -D GDB_STUB -A perf1 -a ../test -U histogram.o
+#
+#  »ÈÍÑÎã(2)
+#
+#  % ../configure -T macosx_gcc -L .
+#	¥¢¥×¥ê¥±¡Œ¥·¥ç¥ó¥×¥í¥°¥é¥à€Ï sample1 €Ë€Ê€ë¡¥
+
+#
+#  ¥ª¥×¥·¥ç¥ó€ÎœèÍý
+#
+getopt("TAaUSLDltmdpgPoOk");
+
+#
+#  ÊÑ¿ô€ÎœéŽü²œ
+#
+
+$target = $opt_T;
+$applname = $opt_A ? $opt_A : "sample1";
+$appldir = $opt_a ? $opt_a : "";
+$applobjs = $opt_U ? $opt_U : "";
+$syssvcobjs = $opt_S ? $opt_S : "";
+$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" : "";
+$prc_num = $opt_P ? $opt_P : "";
+$copts = $opt_o ? $opt_o : "";
+$cdefs = $opt_O ? $opt_O : "";
+$ldflags = $opt_k ? $opt_k : "";
+
+#
+#  ¥ª¥Ö¥ž¥§¥¯¥È¥Õ¥¡¥€¥ëÌŸ€Î³ÈÄ¥»Ò€òÊÖ€¹
+#
+sub get_objext {
+	if ($^O eq 'cygwin') {
+		return("exe");
+	}
+	else {
+		return("");
+	}
+}
+
+#
+#  ¥×¥í¥°¥é¥à€ÎŸìœê€òž¡º÷€¹€ë
+#
+sub get_path {
+	my($progname, @pathlist) = @_;
+	my($path);
+
+	foreach $path (@pathlist) {
+		if (-x $path."/".$progname) {
+			return($path."/".$progname);
+		}
+	}
+	return("");
+}
+
+#
+#  ¥Õ¥¡¥€¥ë€òÊÑŽ¹€¹€ë
+#
+sub convert {
+	my($infile, $outfile) = @_;
+	my($line);
+
+	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 {
+	my($file, $mandatory) = @_;
+	my($path);
+
+	$path = $templatedir."/".$file.".".$target;
+	if (-f $path) {
+		convert($path, $file);
+		return;
+	}	
+
+	$path = $templatedir."/".$file;
+	if ($mandatory || -f $path) {
+		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 : 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-Z0-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{"SYSSVCOBJS"} = $syssvcobjs;
+$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 = get_objext();
+$vartable{"OBJEXT"} = $objext;
+$vartable{"PRC_NUM"} = $prc_num;
+$vartable{"COPTS"} = $copts;
+$vartable{"CDEFS"} = $cdefs;
+$vartable{"LDFLAGS"} = $ldflags;
+
+#
+#  ¥¿¡Œ¥²¥Ã¥È¥Ç¥£¥ì¥¯¥È¥ê€Î¥Á¥§¥Ã¥¯
+#
+
+if (! -d $srcdir."/target/".$target) {
+	print STDERR "configure: $srcdir/target/$target not exist\n";
+	exit(1);
+}
+
+#
+#  Makefile €È¥¢¥×¥ê¥±¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë€ÎÀžÀ®
+#
+
+generate($makefile, 1);
+generate($applname.".c", 0);
+generate($applname.".cpp", 0);
+generate($applname.".h", 0);
+generate($applname.".cfg", 0);
+
+#
+#  cfg €¬€Ç€­€Æ€€€ë€«€Î¥Á¥§¥Ã¥¯
+#
+
+if (!(-x ($objext eq "" ? $cfgfile : $cfgfile.".".$objext))) {
+	print STDERR "Executable file of the configurator (cfg) is not found.\n";
+}
Index: /doc/asp_spec.txt
===================================================================
--- /doc/asp_spec.txt	(revision 7)
+++ /doc/asp_spec.txt	(revision 7)
@@ -0,0 +1,422 @@
+
+		TOPPERS/ASP¥«¡Œ¥Í¥ë€Î»ÅÍÍ³µÍ×
+
+		ÂÐ±þ¥Ð¡Œ¥ž¥ç¥ó: Release 1.9
+		ºÇœª¹¹¿·: 2013Ç¯12·î31Æü
+
+€³€Î¥É¥­¥å¥á¥ó¥È€Ï¡€TOPPERS/ASP¥«¡Œ¥Í¥ë€Î»ÅÍÍ³µÍ×€Ë€Ä€€€ÆÀâÌÀ€·€¿€â€Î€Ç
+€¢€ë¡¥ŠÌITRON4.0»ÅÍÍ€Î¥¹¥¿¥ó¥À¡Œ¥É¥×¥í¥Õ¥¡¥€¥ë€ËÂÐ€¹€ë³ÈÄ¥€ª€è€ÓÊÑ¹¹²Õ
+œê€òÃæ¿Ž€ËÀâÌÀ€¹€ë¡¥
+
+----------------------------------------------------------------------
+ TOPPERS/ASP Kernel
+     Toyohashi Open Platform for Embedded Real-Time Systems/
+     Advanced Standard Profile Kernel
+
+ Copyright (C) 2005-2013 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$
+----------------------------------------------------------------------
+
+¡ûÁ°Äó€È€Ê€ëÊžœñ
+
+[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€Î¥³¥ó¥Ý¡Œ
+¥Í¥ó¥È€È€·€Æ°·€š€ë€è€Š€Ë€¹€ë¡¥
+
+€Ê€ª¡€TECS€ËÂÐ±þ€¹€ë€¿€á€Îœ€Àµ€Ï¡€TECS€ÎÇÛÉÛ¥Ñ¥Ã¥±¡Œ¥ž€ËŽÞ€Þ€ì€Æ€ª€ê¡€
+ASP¥«¡Œ¥Í¥ë€ÎÇÛÉÛ¥Ñ¥Ã¥±¡Œ¥ž€Ë€ÏŽÞ€Þ€ì€Æ€€€Ê€€¡¥
+
+°ÊŸå
Index: /doc/configurator.txt
===================================================================
--- /doc/configurator.txt	(revision 7)
+++ /doc/configurator.txt	(revision 7)
@@ -0,0 +1,1153 @@
+
+		TOPPERS/ASP¥«¡Œ¥Í¥ë
+		¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿»ÅÍÍ
+
+		ÂÐ±þ¥Ð¡Œ¥ž¥ç¥ó: Release 1.9.2
+		ºÇœª¹¹¿·: 2013Ç¯12·î31Æü
+
+€³€Î¥É¥­¥å¥á¥ó¥È€Ï¡€TOPPERS/ASP¥«¡Œ¥Í¥ë€Î¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿€¬ÉžœàÅª€ËÀž
+À®€¹€Ù€­¥Õ¥¡¥€¥ë€ÎÆâÍÆ€Ë€Ä€€€Æ²òÀâ€·€¿€â€Î€Ç€¢€ë¡¥¥¿¡Œ¥²¥Ã¥È°ÍÂž€ËÀžÀ®
+€¹€ëÆâÍÆ€Ë€Ä€€€Æ€Ï¡€€³€Î¥É¥­¥å¥á¥ó¥È€ÎÈÏ°Ï³°€Ç€¢€ë¡¥
+
+----------------------------------------------------------------------
+ TOPPERS/ASP Kernel
+     Toyohashi Open Platform for Embedded Real-Time Systems/
+     Advanced Standard Profile Kernel
+
+ Copyright (C) 2005-2013 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$
+----------------------------------------------------------------------
+
+¡ûÌÜŒ¡
+
+¡ŠÀžÀ®€¹€ë¥Õ¥¡¥€¥ë€ÎŒïÎà
+¡ŠÀÅÅªAPI°ìÍ÷
+¡Š¥«¡Œ¥Í¥ë¹œÀ®¡ŠœéŽü²œ¥Ø¥Ã¥À¥Õ¥¡¥€¥ë¡Êkernel_cfg.h¡Ë
+	(1) žÇÄêÀžÀ®ÉôÊ¬
+	(2) ¥ª¥Ö¥ž¥§¥¯¥È¿ô€ÎÄêµÁ
+	(3) ¥ª¥Ö¥ž¥§¥¯¥È€ÎIDÈÖ¹æ€ÎÄêµÁ
+¡Š¥«¡Œ¥Í¥ë¹œÀ®¡ŠœéŽü²œ¥Õ¥¡¥€¥ë¡Êkernel_cfg.c¡Ë
+	(1) žÇÄêÀžÀ®ÉôÊ¬
+	(2) ¥«¡Œ¥Í¥ë€ÎŒïÎà€Î¥Á¥§¥Ã¥¯
+	(3) ¥€¥ó¥¯¥ë¡Œ¥É¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¡Ê#include¡Ë€ÎœèÍý
+	(4) ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+	(5) ¥ª¥Ö¥ž¥§¥¯¥È€ÎIDÈÖ¹æ€òÊÝ»ý€¹€ëÊÑ¿ô€ÎÄêµÁ
+	(6) ³Æ¥«¡Œ¥Í¥ë¥ª¥Ö¥ž¥§¥¯¥È€ËŽØ€¹€ëÄêµÁ
+	(7) ³ä¹þ€ß€ËŽØ€¹€ëÄêµÁ
+	(8) CPUÎã³°€ËŽØ€¹€ëÄêµÁ
+	(9) Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ€Î¥¹¥¿¥Ã¥¯ÎÎ°è€ËŽØ€¹€ëÄêµÁ
+	(10) ¥¿¥€¥à¥€¥Ù¥ó¥ÈŽÉÍý€ËŽØ€¹€ëÄêµÁ
+	(11) ³Æ¥â¥ž¥å¡Œ¥ë€ÎœéŽü²œŽØ¿ô€ÎÄêµÁ
+	(12) œéŽü²œ¥ë¡Œ¥Á¥ó€ÎŒÂ¹ÔŽØ¿ô€ÎÄêµÁ
+	(13) œªÎ»œèÍý¥ë¡Œ¥Á¥ó€ÎŒÂ¹ÔŽØ¿ô€ÎÄêµÁ
+
+
+¡ûÀžÀ®€¹€ë¥Õ¥¡¥€¥ë€ÎŒïÎà
+
+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) ¥«¡Œ¥Í¥ë€ÎŒïÎà€Î¥Á¥§¥Ã¥¯
+
+kernel_cfg.c€È¥«¡Œ¥Í¥ë€ÎŒïÎà€¬°ìÃ×€·€Æ€€€ë€«€ò¥Á¥§¥Ã¥¯€¹€ë€¿€á€Ë¡€Œ¡€Î
+¹Ô€òÀžÀ®€¹€ë¡¥
+
+#if TKERNEL_PRID != 0x07u
+#error The kernel does not match this configuration file.
+#endif
+
+(3) ¥€¥ó¥¯¥ë¡Œ¥É¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¡Ê#include¡Ë€ÎœèÍý
+
+¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë€ËŽÞ€Þ€ì€ëCžÀžì¥×¥ê¥×¥í¥»¥Ã¥µ€Î¥€
+¥ó¥¯¥ë¡Œ¥É¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¡Ê#include¡Ë€ÈÆ±°ì€Î¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¡Ê#include¡Ë
+€òÀžÀ®€¹€ë¡¥Îã€š€Ð¡€
+
+#include "sample1.h"
+
+€È€€€Š¥€¥ó¥¯¥ë¡Œ¥É¥Ç¥£¥ì¥¯¥Æ¥£¥Ö€ËÂÐ€·€Æ¡€
+
+#include "sample1.h"
+
+€È€€€Š¥Ç¥£¥ì¥¯¥Æ¥£¥Ö€òÀžÀ®€¹€ë¡¥ÀžÀ®€¹€ë¥Ç¥£¥ì¥¯¥Æ¥£¥Ö€Îœçœø€Ï¡€¥·¥¹¥Æ
+¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ëÃæ€Ç€Î¥€¥ó¥¯¥ë¡Œ¥É¥Ç¥£¥ì¥¯¥Æ¥£¥Ö€Îœçœø
+€Ë°ìÃ×€µ€»€ë¡¥
+
+(4) ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+
+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 */
+
+(5) ¥ª¥Ö¥ž¥§¥¯¥È€ÎIDÈÖ¹æ€òÊÝ»ý€¹€ëÊÑ¿ô€ÎÄêµÁ
+
+¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿€ËÂÐ€¹€ë¥ª¥×¥·¥ç¥ó»ØÄê¡Ê--external-id¡Ë€Ë€è€ê¡€¥³¥ó¥Õ¥£
+¥®¥å¥ì¡Œ¥¿€¬ID ÈÖ¹æ€ò³ä€êÉÕ€±€¿¥ª¥Ö¥ž¥§¥¯¥È€ÎÌŸÁ°€ÎËöÈø€Ë"_id"€òÉÕ²Ã€·
+€¿ÌŸÁ°€ÎÊÑ¿ô€òÀžÀ®€¹€ë¡¥ÊÑ¿ô€Ï¡€constÂ°À­€òÉÕ²Ã€·€¿ID·¿€ÎÊÑ¿ô€È€·¡€³ä€ê
+ÉÕ€±€¿IDÈÖ¹æ€òÃÍ€È€¹€ë¡¥Îã€š€Ð¡€Œ¡€Î€è€Š€Êµ­œÒ€òÀžÀ®€¹€ë¡¥
+
+const ID TASK1_id = 1;
+const ID TASK2_id = 2;
+const ID SEM1_id = 1;
+
+(6) ³Æ¥«¡Œ¥Í¥ë¥ª¥Ö¥ž¥§¥¯¥È€ËŽØ€¹€ëÄêµÁ
+
+¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ëÃæ€Ë¡€¥ª¥Ö¥ž¥§¥¯¥È€òÀžÀ®€¹€ëÀÅÅª
+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];
+
+(6-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 });
+
+(6-1-1) ¥¿¥¹¥¯€ËÉ¬Í×€Ê¥á¥â¥êÎÎ°è€ÎÄêµÁ
+
+¥¿¥¹¥¯€ËÉ¬Í×€Ê¥á¥â¥êÎÎ°è€È€·€Æ¡€¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯ÎÎ°è€¬€¢€ë¡¥stk€¬NULL€Î
+Ÿì¹ç€Ë€Ï¡€ÀžÀ®€¹€ë¥¿¥¹¥¯Ëè€Ë¡€»ØÄê€µ€ì€¿¥µ¥€¥º€Î¥¹¥¿¥Ã¥¯ÎÎ°è€ò³ÎÊÝ€¹€ë¡¥
+¶ñÂÎÅª€Ë€Ï¡€Ÿåµ­€ÎÀÅÅªAPI€ËÂÐ€·€Æ¡€Œ¡€ÎÄêµÁ€òÀžÀ®€¹€ë¡¥
+
+¡östk€¬NULL€ÎŸì¹ç€Î€ßÀžÀ®
+static STK_T _kernel_stack_<¥¿¥¹¥¯ÌŸ>[COUNT_STK_T(stksz)];
+
+(6-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€È€¹€ë¡¥
+
+(6-1-3) ¥¿¥¹¥¯ÀžÀ®œçœø¥Æ¡Œ¥Ö¥ë€ÎÄêµÁ
+
+¥¿¥¹¥¯€ËÂÐ€·€Æ€Ï¡€ÀžÀ®€µ€ì€¿œçœø¡Ê¥¿¥¹¥¯€òÀžÀ®€¹€ëÀÅÅªAPI€¬µ­œÒ€µ€ì€¿
+œçœø¡Ë€ò¥Æ¡Œ¥Ö¥ë€ËœÐÎÏ€¹€ëÉ¬Í×€¬€¢€ë¡¥€³€ì€Ï¡€¥¿¥¹¥¯€ÎÀžÀ®€µ€ì€¿œçœø€Ç¡€
+¥¿¥¹¥¯€ÎœéŽü²œ¡Ê€è€ê¶ñÂÎÅª€Ë€Ï¡€¥¿¥¹¥¯€Îµ¯Æ°¡Ë€ò¹Ô€ŠÉ¬Í×€¬€¢€ë€¿€á€Ç€¢
+€ë¡¥
+
+¶ñÂÎÅª€Ë€Ï¡€Œ¡€Î€è€Š€Ê¹Ô€òÀžÀ®€¹€ë¡¥
+
+const ID _kernel_torder_table[TNUM_TSKID] = {
+	<ºÇœé€ËÀžÀ®€µ€ì€¿¥¿¥¹¥¯€Î¥¿¥¹¥¯ID>,
+	<2ÈÖÌÜ€ËÀžÀ®€µ€ì€¿¥¿¥¹¥¯€Î¥¿¥¹¥¯ID>,
+				¡Ä¡Ä
+	<ºÇžå€ËÀžÀ®€µ€ì€¿¥¿¥¹¥¯€Î¥¿¥¹¥¯ID>
+};
+
+(6-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¡Ë
+
+(6-2) ¥»¥Þ¥Õ¥©€ËŽØ€¹€ëÄêµÁ
+
+¥»¥Þ¥Õ¥©€ÎŸÊÎ¬µ­¹æ€Ï¡ÖSEM¡¿sem¡×€Ç€¢€ë¡¥°Ê²Œ€Ç€Ï¡€¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ
+¥·¥ç¥ó¥Õ¥¡¥€¥ë€ËŒ¡€ÎÀÅÅªAPI€¬ŽÞ€Þ€ì€Æ€€€ë»þ€ËÀžÀ®€¹€Ù€­ŸðÊó€Ë€Ä€€€ÆœÒ€Ù
+€ë¡¥€Ê€ª¡€¥»¥Þ¥Õ¥©€ËÉ¬Í×€Ê¥á¥â¥êÎÎ°è€Ï€Ê€€¡¥
+
+CRE_SEM(semid, { sematr, isemcnt, maxsem });
+
+(6-2-1) ¥»¥Þ¥Õ¥©€ÎœéŽü²œŸðÊó
+
+¥»¥Þ¥Õ¥©œéŽü²œ¥Ö¥í¥Ã¥¯Ãæ€ËÀžÀ®€¹€ë¥»¥Þ¥Õ¥©€ÎœéŽü²œŸðÊó€Ï¡€Œ¡€Î·ÁŒ°€È€¹
+€ë¡¥
+
+	{ (sematr), (isemcnt), (maxsem) }
+
+(6-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¡Ë
+
+(6-3) ¥€¥Ù¥ó¥È¥Õ¥é¥°€ËŽØ€¹€ëÄêµÁ
+
+¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎŸÊÎ¬µ­¹æ€Ï¡ÖFLG¡¿flg¡×€Ç€¢€ë¡¥°Ê²Œ€Ç€Ï¡€¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£
+¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë€ËŒ¡€ÎÀÅÅªAPI€¬ŽÞ€Þ€ì€Æ€€€ë»þ€ËÀžÀ®€¹€Ù€­ŸðÊó€Ë€Ä
+€€€ÆœÒ€Ù€ë¡¥€Ê€ª¡€¥€¥Ù¥ó¥È¥Õ¥é¥°€ËÉ¬Í×€Ê¥á¥â¥êÎÎ°è€Ï€Ê€€¡¥
+
+CRE_FLG(flgid, { flgatr, iflgptn });
+
+(6-3-1) ¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎœéŽü²œŸðÊó
+
+¥€¥Ù¥ó¥È¥Õ¥é¥°œéŽü²œ¥Ö¥í¥Ã¥¯Ãæ€ËÀžÀ®€¹€ë¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎœéŽü²œŸðÊó€Ï¡€
+Œ¡€Î·ÁŒ°€È€¹€ë¡¥
+
+	{ (flgatr), (iflgptn) }
+
+(6-3-2) ¥š¥é¡ŒŸò·ï
+
+¥€¥Ù¥ó¥È¥Õ¥é¥°€ËŽØ€¹€ë¥š¥é¡ŒŸò·ï€ÏŒ¡€ÎÄÌ€ê€Ç€¢€ë¡¥
+
+¡ö¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿ËÜÂÎ€¬ž¡œÐ€¹€ë€â€Î
+¡ŠÆ±€žflgid€ËÂÐ€¹€ëCRE_FLG€¬Ê£¿ô€¢€ëŸì¹ç¡ÊE_OBJ¡Ë
+
+¡ö¥Ñ¥¹1€Çž¡œÐ€¹€ë€â€Î
+¡Šiflgptn€¬FLGPTN€Ë³ÊÇŒ€Ç€­€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	¢ª iflgptn€¬uint32_t€Ë³ÊÇŒ€Ç€­€Ê€€Ÿì¹ç€Ï¡€cfg1_out.c€Î¥³¥ó¥Ñ¥€¥ë»þ
+	   €Ë¥š¥é¡Œ€È€Ê€ë¡¥
+
+¡ö¥Ñ¥¹2€Çž¡œÐ€¹€ë€â€Î
+¡Šflgatr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ã¡ÎTA_WMUL¡Ï¡Ã¡ÎTA_CLR¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+¡Šiflgptn€¬FLGPTN€Ë³ÊÇŒ€Ç€­€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	¢ª iflgptn€¬uint32_t€Ë€Ï³ÊÇŒ€Ç€­€ë€¬¡€FLGPTN€Ë³ÊÇŒ€Ç€­€Ê€€Ÿì¹ç€Ï¡€
+	   ¥Ñ¥¹2€Ç¥š¥é¡Œ€òž¡œÐ€¹€ë¡¥
+
+(6-4) ¥Ç¡Œ¥¿¥­¥å¡Œ€ËŽØ€¹€ëÄêµÁ
+
+¥Ç¡Œ¥¿¥­¥å¡Œ€ÎŸÊÎ¬µ­¹æ€Ï¡ÖDTQ¡¿dtq¡×€Ç€¢€ë¡¥°Ê²Œ€Ç€Ï¡€¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å
+¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë€ËŒ¡€ÎÀÅÅªAPI€¬ŽÞ€Þ€ì€Æ€€€ë»þ€ËÀžÀ®€¹€Ù€­ŸðÊó€Ë€Ä€€€Æ
+œÒ€Ù€ë¡¥
+
+CRE_DTQ(dtqid, { dtqatr, dtqcnt, dtqmb });
+
+(6-4-1) ¥Ç¡Œ¥¿¥­¥å¡Œ€ËÉ¬Í×€Ê¥á¥â¥êÎÎ°è€ÎÄêµÁ
+
+¥Ç¡Œ¥¿¥­¥å¡Œ€ËÉ¬Í×€Ê¥á¥â¥êÎÎ°è€È€·€Æ¡€¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€¬€¢€ë¡¥ÀžÀ®
+€¹€ë¥Ç¡Œ¥¿¥­¥å¡ŒËè€Ë¡€É¬Í×€Ê¥µ¥€¥º€Î¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€òÄêµÁ€¹€ë¡¥¶ñ
+ÂÎÅª€Ë€Ï¡€Ÿåµ­€ÎÀÅÅªAPI€ËÂÐ€·€Æ¡€Œ¡€ÎÄêµÁ€òÀžÀ®€¹€ë¡¥
+
+¡ödtqcnt€¬0€Ç€Ê€€Ÿì¹ç€Î€ßÀžÀ®
+static DTQMB _kernel_dtqmb_<¥Ç¡Œ¥¿¥­¥å¡ŒÌŸ>[dtqcnt];
+
+(6-4-2) ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎœéŽü²œŸðÊó
+
+¥Ç¡Œ¥¿¥­¥å¡ŒœéŽü²œ¥Ö¥í¥Ã¥¯Ãæ€ËÀžÀ®€¹€ë¥Ç¡Œ¥¿¥­¥å¡Œ€ÎœéŽü²œŸðÊó€Ï¡€Œ¡€Î
+·ÁŒ°€È€¹€ë¡¥
+
+	{ (dtqatr), (dtqcnt), (_kernel_dtqmb_<¥Ç¡Œ¥¿¥­¥å¡ŒÌŸ>) }
+
+€³€³€Ç¡€dtqcnt€¬0€ÎŸì¹ç€Ë€Ï¡€_kernel_dtqmb_<¥Ç¡Œ¥¿¥­¥å¡ŒÌŸ>€ËÂå€š€Æ¡€
+NULL€òÍÑ€€€ë¡¥
+
+(6-4-3) ¥š¥é¡ŒŸò·ï
+
+¥Ç¡Œ¥¿¥­¥å¡Œ€ËŽØ€¹€ë¥š¥é¡ŒŸò·ï€ÏŒ¡€ÎÄÌ€ê€Ç€¢€ë¡¥
+
+¡ö¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿ËÜÂÎ€¬ž¡œÐ€¹€ë€â€Î
+¡ŠÆ±€ždtqid€ËÂÐ€¹€ëCRE_DTQ€¬Ê£¿ô€¢€ëŸì¹ç¡ÊE_OBJ¡Ë
+
+¡ö¥Ñ¥¹2€Çž¡œÐ€¹€ë€â€Î
+¡Šdtqatr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+¡Šdtqcnt€¬Éé€ÎÃÍ€ÎŸì¹ç¡ÊE_PAR¡Ë
+¡Šdtqmb€¬NULL€Ç€Ê€€Ÿì¹ç¡ÊE_NOSPT¡Ë
+
+(6-5) Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€ËŽØ€¹€ëÄêµÁ
+
+Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎŸÊÎ¬µ­¹æ€Ï¡ÖPDQ¡¿pdq¡×€Ç€¢€ë¡¥°Ê²Œ€Ç€Ï¡€¥·¥¹¥Æ¥à¥³
+¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë€ËŒ¡€ÎÀÅÅªAPI€¬ŽÞ€Þ€ì€Æ€€€ë»þ€ËÀžÀ®€¹€Ù€­Ÿð
+Êó€Ë€Ä€€€ÆœÒ€Ù€ë¡¥
+
+CRE_PDQ(ID pdqid, { pdqatr, pdqcnt, maxdpri, pdqmb });
+
+(6-5-1) Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€ËÉ¬Í×€Ê¥á¥â¥êÎÎ°è€ÎÄêµÁ
+
+Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€ËÉ¬Í×€Ê¥á¥â¥êÎÎ°è€È€·€Æ¡€Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è
+€¬€¢€ë¡¥ÀžÀ®€¹€ëÍ¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒËè€Ë¡€É¬Í×€Ê¥µ¥€¥º€ÎÍ¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ
+ŽÉÍýÎÎ°è€òÄêµÁ€¹€ë¡¥¶ñÂÎÅª€Ë€Ï¡€Ÿåµ­€ÎÀÅÅªAPI€ËÂÐ€·€Æ¡€Œ¡€ÎÄêµÁ€òÀžÀ®€¹
+€ë¡¥
+
+¡öpdqcnt€¬0€Ç€Ê€€Ÿì¹ç€Î€ßÀžÀ®
+static PDQMB _kernel_pdqmb_<Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒÌŸ>[pdqcnt];
+
+(6-5-2) Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎœéŽü²œŸðÊó
+
+Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒœéŽü²œ¥Ö¥í¥Ã¥¯Ãæ€ËÀžÀ®€¹€ëÍ¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎœéŽü²œ
+ŸðÊó€Ï¡€Œ¡€Î·ÁŒ°€È€¹€ë¡¥
+
+	{ (pdqatr), (pdqcnt), (maxdpri), (_kernel_pdqmb_<Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒÌŸ>) }
+
+€³€³€Ç¡€pdqcnt€¬0€ÎŸì¹ç€Ë€Ï¡€_kernel_pdqmb_<Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒÌŸ>€ËÂå€š
+€Æ¡€NULL€òÍÑ€€€ë¡¥
+
+(6-5-3) ¥š¥é¡ŒŸò·ï
+
+Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€ËŽØ€¹€ë¥š¥é¡ŒŸò·ï€ÏŒ¡€ÎÄÌ€ê€Ç€¢€ë¡¥
+
+¡ö¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿ËÜÂÎ€¬ž¡œÐ€¹€ë€â€Î
+¡ŠÆ±€žpdqid€ËÂÐ€¹€ëCRE_PDQ€¬Ê£¿ô€¢€ëŸì¹ç¡ÊE_OBJ¡Ë
+
+¡ö¥Ñ¥¹2€Çž¡œÐ€¹€ë€â€Î
+¡Špdqatr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+¡Špdqcnt€¬Éé€ÎÃÍ€ÎŸì¹ç¡ÊE_PAR¡Ë
+¡Š(TMIN_DPRI <= maxdpri && maxdpri <= TMAX_DPRI)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+¡Špdqmb€¬NULL€Ç€Ê€€Ÿì¹ç¡ÊE_NOSPT¡Ë
+
+(6-6) ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€ËŽØ€¹€ëÄêµÁ
+
+¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€ÎŸÊÎ¬µ­¹æ€Ï¡ÖMBX¡¿mbx¡×€Ç€¢€ë¡¥°Ê²Œ€Ç€Ï¡€¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£
+¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë€ËŒ¡€ÎÀÅÅªAPI€¬ŽÞ€Þ€ì€Æ€€€ë»þ€ËÀžÀ®€¹€Ù€­ŸðÊó€Ë€Ä
+€€€ÆœÒ€Ù€ë¡¥€Ê€ª¡€¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€ËÉ¬Í×€Ê¥á¥â¥êÎÎ°è€Ï€Ê€€¡¥
+
+CRE_MBX(mbxid, { mbxatr, maxmpri, mprihd });
+
+(6-6-1) ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€ÎœéŽü²œŸðÊó
+
+¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹œéŽü²œ¥Ö¥í¥Ã¥¯Ãæ€ËÀžÀ®€¹€ë¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€ÎœéŽü²œŸðÊó€Ï¡€
+Œ¡€Î·ÁŒ°€È€¹€ë¡¥
+
+	{ (mbxatr), (maxmpri) }
+
+(6-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¡Ë
+
+(6-7) žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ë€ËŽØ€¹€ëÄêµÁ
+
+žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ë€ÎŸÊÎ¬µ­¹æ€Ï¡ÖMPF¡¿mpf¡×€Ç€¢€ë¡¥°Ê²Œ€Ç€Ï¡€¥·¥¹¥Æ¥à¥³
+¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë€ËŒ¡€ÎÀÅÅªAPI€¬ŽÞ€Þ€ì€Æ€€€ë»þ€ËÀžÀ®€¹€Ù€­Ÿð
+Êó€Ë€Ä€€€ÆœÒ€Ù€ë¡¥
+
+CRE_MPF(mpfid, { mpfatr, blkcnt, blksz, mpf, mpfmb });
+
+(6-7-1) žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ë€ËÉ¬Í×€Ê¥á¥â¥êÎÎ°è€ÎÄêµÁ
+
+žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ë€ËÉ¬Í×€Ê¥á¥â¥êÎÎ°è€È€·€Æ¡€žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÎÎ°è€ÈžÇ
+ÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëŽÉÍýÎÎ°è€¬€¢€ë¡¥ÀžÀ®€¹€ëžÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëËè€Ë¡€É¬Í×€Ê
+¥µ¥€¥º€ÎžÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÎÎ°è¡Êmpf€¬NULL€ÎŸì¹ç€Î€ß¡Ë€ÈžÇÄêÄ¹¥á¥â¥ê¥×¡Œ
+¥ëŽÉÍýÎÎ°è€ò³ÎÊÝ€¹€ë¡¥¶ñÂÎÅª€Ë€Ï¡€Ÿåµ­€ÎÀÅÅªAPI€ËÂÐ€·€Æ¡€Œ¡€ÎÄêµÁ€òÀžÀ®
+€¹€ë¡¥
+
+¡ömpf€¬NULL€ÎŸì¹ç€Î€ßÀžÀ®
+static MPF_T _kernel_mpf_<žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÌŸ>[(blkcnt) * COUNT_MPF_T(blksz)];
+								
+¡öÉ¬€ºÀžÀ®
+static MPFMB _kernel_mpfmb_<žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÌŸ>[blkcnt];
+
+(6-7-2) žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ë€ÎœéŽü²œŸðÊó
+
+žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëœéŽü²œ¥Ö¥í¥Ã¥¯Ãæ€ËÀžÀ®€¹€ëžÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ë€ÎœéŽü²œ
+ŸðÊó€Ï¡€Œ¡€Î·ÁŒ°€È€¹€ë¡¥
+
+	{ (mpfatr), (blkcnt), ROUND_MPF_T(blksz), mpf,
+						(_kernel_mpfmb_<žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÌŸ>) }
+
+€³€³€Ç¡€mpf€¬NULL€ÎŸì¹ç€Ë€Ï¡€mpf€ËÂå€š€Æ¡€_kernel_mpf_<žÇÄêÄ¹¥á¥â¥ê¥×¡Œ
+¥ëÌŸ>€òÍÑ€€€ë¡¥
+
+(6-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¡Ë
+
+(6-8) ŒþŽü¥Ï¥ó¥É¥é€ËŽØ€¹€ëÄêµÁ
+
+ŒþŽü¥Ï¥ó¥É¥é€ÎŸÊÎ¬µ­¹æ€Ï¡ÖCYC¡¿cyc¡×€Ç€¢€ë¡¥°Ê²Œ€Ç€Ï¡€¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£
+¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë€ËŒ¡€ÎÀÅÅªAPI€¬ŽÞ€Þ€ì€Æ€€€ë»þ€ËÀžÀ®€¹€Ù€­ŸðÊó€Ë€Ä
+€€€ÆœÒ€Ù€ë¡¥€Ê€ª¡€ŒþŽü¥Ï¥ó¥É¥é€ËÉ¬Í×€Ê¥á¥â¥êÎÎ°è€Ï€Ê€€¡¥
+
+CRE_CYC(cycid, { cycatr, exinf, cychdr, cyctim, cycphs });
+
+(6-8-1) ŒþŽü¥Ï¥ó¥É¥é€ÎœéŽü²œŸðÊó
+
+ŒþŽü¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯Ãæ€ËÀžÀ®€¹€ëŒþŽü¥Ï¥ó¥É¥é€ÎœéŽü²œŸðÊó€Ï¡€Œ¡€Î
+·ÁŒ°€È€¹€ë¡¥
+
+	{ (cycatr), (intptr_t)(exinf), (cychdr), (cyctim), (cycphs) }
+
+(6-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¡Ë
+
+(6-9) ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ËŽØ€¹€ëÄêµÁ
+
+¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ÎŸÊÎ¬µ­¹æ€Ï¡ÖALM¡¿alm¡×€Ç€¢€ë¡¥°Ê²Œ€Ç€Ï¡€¥·¥¹¥Æ¥à¥³¥ó
+¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë€ËŒ¡€ÎÀÅÅªAPI€¬ŽÞ€Þ€ì€Æ€€€ë»þ€ËÀžÀ®€¹€Ù€­ŸðÊó
+€Ë€Ä€€€ÆœÒ€Ù€ë¡¥€Ê€ª¡€¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ËÉ¬Í×€Ê¥á¥â¥êÎÎ°è€Ï€Ê€€¡¥
+
+CRE_ALM(ID almid, { almatr, (intptr_t)(exinf), almhdr });
+
+(6-9-1) ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ÎœéŽü²œŸðÊó
+
+¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯Ãæ€ËÀžÀ®€¹€ë¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ÎœéŽü²œŸðÊó
+€Ï¡€Œ¡€Î·ÁŒ°€È€¹€ë¡¥
+
+	{ (almatr), (exinf), (almhdr) }
+
+(6-9-2) ¥š¥é¡ŒŸò·ï
+
+¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ËŽØ€¹€ë¥š¥é¡ŒŸò·ï€ÏŒ¡€ÎÄÌ€ê€Ç€¢€ë¡¥
+
+¡ö¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿ËÜÂÎ€¬ž¡œÐ€¹€ë€â€Î
+¡ŠÆ±€žalmid€ËÂÐ€¹€ëCRE_ALM€¬Ê£¿ô€¢€ëŸì¹ç¡ÊE_OBJ¡Ë
+
+¡ö¥Ñ¥¹2€Çž¡œÐ€¹€ë€â€Î
+¡Šalmatr€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+
+¡ö¥Ñ¥¹3€Çž¡œÐ€¹€ë€â€Î
+¡Šalmhdr€¬¥×¥í¥°¥é¥à€Î³«»ÏÈÖÃÏ€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	- ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎÃÍ¡ÊCHECK_FUNC_ALIGN¡Ë€ÎÇÜ¿ô€Ç€Ê€€Ÿì¹ç
+	- NULL€ÎŸì¹ç¡Ê¥¿¡Œ¥²¥Ã¥È°ÍÂž¡€CHECK_FUNC_NONNULL¡Ë
+
+(7) ³ä¹þ€ß€ËŽØ€¹€ëÄêµÁ
+
+³ä¹þ€ß€ËŽØ€·€ÆÀžÀ®€¹€ëŸðÊó€Ï¡€¥¿¡Œ¥²¥Ã¥ÈËè€ËÄê€á€ë€³€È€¬€Ç€­€ë¡¥¥¿¡Œ¥²¥Ã
+¥ÈËè€ËÄê€á€Ê€€Ÿì¹ç€Ë€Ï¡€°Ê²Œ€ÇœÒ€Ù€ë¥¿¡Œ¥²¥Ã¥È€Ë°ÍÂž€·€Ê€€ÉžœàÅª€ÊŸðÊó
+€òÀžÀ®€¹€ë¡¥¥¿¡Œ¥²¥Ã¥ÈËè€ËÄê€á€ëŸì¹ç€Ë€Ï¡€(7-1)€È(7-3)€ËœÒ€Ù€ëŸðÊó€ÏÀž
+À®€·€Ê€€¡Ê(7-2)€ËœÒ€Ù€ëŸðÊó€ÏÀžÀ®€¹€ë¡Ë¡¥
+
+(7-1) ³ä¹þ€ßÍ×µá¥é¥€¥ó€ËŽØ€¹€ëÄêµÁ
+
+³ä¹þ€ßÍ×µá¥é¥€¥ó€ÎÂ°À­€òÀßÄê€¹€ëÀÅÅªAPI¡ÖCFG_INT¡×€ÇÀßÄê€·€¿³ä¹þ€ßÍ×µá
+¥é¥€¥ó€ËŽØ€¹€ëÄêµÁ€òÀžÀ®€¹€ë¡¥¶ñÂÎÅª€Ë€ÏŒ¡€ÎÄÌ€ê¡¥
+
+°Ê²Œ€Ç€Ï¡€¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë€ËŒ¡€ÎÀÅÅªAPI€¬ŽÞ€Þ€ì
+€Æ€€€ë»þ€ËÀžÀ®€¹€Ù€­ŸðÊó€Ë€Ä€€€ÆœÒ€Ù€ë¡¥
+
+CFG_INT(INTNO intno, { intatr, intpri });
+
+(7-1-1) ÀßÄê€¹€ë³ä¹þ€ßÍ×µá¥é¥€¥ó€Î¿ô
+
+ÀßÄê€¹€ë³ä¹þ€ßÍ×µá¥é¥€¥ó€Î¿ô€ò¥Þ¥¯¥íÄêµÁ€¹€ë¥×¥ê¥×¥í¥»¥Ã¥µ¥Ç¥£¥ì¥¯¥Æ¥£
+¥Ö¡Ê#define¡Ë€òÀžÀ®€¹€ë¡¥€Þ€¿¡€€œ€ÎÃÍ€ò»ý€ÄÊÑ¿ô€ÎÄêµÁ€òÀžÀ®€¹€ë¡¥¶ñÂÎÅª
+€Ë€Ï¡€Œ¡€Î€è€Š€Ê¹Ô€òÀžÀ®€¹€ë¡¥
+
+#define TNUM_INTNO <ÀßÄê€¹€ë³ä¹þ€ßÍ×µá¥é¥€¥ó€Î¿ô>
+const uint_t	_kernel_tnum_intno = TNUM_INTNO;
+
+(7-1-2) ³ä¹þ€ßÍ×µá¥é¥€¥óœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÄêµÁ
+
+³ä¹þ€ßÍ×µá¥é¥€¥óœéŽü²œ¥Ö¥í¥Ã¥¯€òÀžÀ®€¹€ë¡¥¶ñÂÎÅª€Ë€Ï¡€Œ¡€Î€è€Š€Ê¹Ô€òÀž
+À®€¹€ë¡¥
+
+const INTINIB _kernel_intinib_table[TNUM_INTNO] = {
+	<³ä¹þ€ßÍ×µá¥é¥€¥ó1€ÎœéŽü²œŸðÊó>,
+	<³ä¹þ€ßÍ×µá¥é¥€¥ó2€ÎœéŽü²œŸðÊó>,
+				¡Ä¡Ä
+	<³ä¹þ€ßÍ×µá¥é¥€¥óTNUM_INTNO€ÎœéŽü²œŸðÊó>
+};
+
+€³€ÎÃæ€Î³ä¹þ€ßÍ×µá¥é¥€¥ó€ÎœéŽü²œŸðÊó€Ï¡€Œ¡€Î·ÁŒ°€È€¹€ë¡¥
+
+	{ (intno), (intatr), (intpri) }
+
+(7-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¡Ë
+
+(7-2) ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó€ËŽØ€¹€ëÄêµÁ
+
+(7-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¡Ë€âÅÏ€¹€Ù€­€«€â€·€ì€Ê€€¡¥
+
+(7-2-2) ³ä¹þ€ß¥Ï¥ó¥É¥é€ÎÄêµÁ€ËÁêÅö€¹€ëœèÍý
+
+Ÿå€Î€è€Š€Ë³ä¹þ€ß¥Ï¥ó¥É¥é€òÀžÀ®€·€¿Ÿì¹ç€Ë€Ï¡€Œ¡€ËÀâÌÀ€¹€ë³ä¹þ€ß¥Ï¥ó¥É¥é
+€ËŽØ€¹€ëÄêµÁ€Ë€ª€€€Æ¡€¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ëÃæ€ËŒ¡€ÎÀÅ
+ÅªAPI€¬ŽÞ€Þ€ì€Æ€€€ë€Î€ÈÆ±ÍÍ€ËœèÍý€¹€ë¡¥
+
+DEF_INH(inhno, { TA_NULL, _kernel_inthdr_<intno> });
+
+€³€³€Çinhno€Ï¡€intno€ËÂÐ±þ€¹€ë³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ€Ç€¢€ë¡¥
+
+(7-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¡Ë
+
+(7-3) ³ä¹þ€ß¥Ï¥ó¥É¥é€ËŽØ€¹€ëÄêµÁ
+
+³ä¹þ€ß¥Ï¥ó¥É¥é€òÄêµÁ€¹€ëÀÅÅªAPI¡ÖDEF_INH¡×€ÇÄêµÁ€·€¿³ä¹þ€ß¥Ï¥ó¥É¥é¡ÊŸå
+œÒ€Î³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó€ÎÄÉ²Ã€Ë€è€ê¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿€¬ÀžÀ®€·€¿³ä¹þ
+€ß¥Ï¥ó¥É¥é€òŽÞ€à¡Ë€ËŽØ€¹€ëÄêµÁ€òÀžÀ®€¹€ë¡¥¶ñÂÎÅª€Ë€ÏŒ¡€ÎÄÌ€ê¡¥
+
+°Ê²Œ€Ç€Ï¡€¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë€ËŒ¡€ÎÀÅÅªAPI€¬ŽÞ€Þ€ì
+€Æ€€€ë»þ€ËÀžÀ®€¹€Ù€­ŸðÊó€Ë€Ä€€€ÆœÒ€Ù€ë¡¥
+
+DEF_INH(inhno, { inhatr, inthdr });
+
+(7-3-1) ÄêµÁ€¹€ë³ä¹þ€ß¥Ï¥ó¥É¥é€Î¿ô
+
+ÄêµÁ€¹€ë³ä¹þ€ß¥Ï¥ó¥É¥é€Î¿ô€ò¥Þ¥¯¥íÄêµÁ€¹€ë¥×¥ê¥×¥í¥»¥Ã¥µ¥Ç¥£¥ì¥¯¥Æ¥£¥Ö
+¡Ê#define¡Ë€òÀžÀ®€¹€ë¡¥€Þ€¿¡€€œ€ÎÃÍ€ò»ý€ÄÊÑ¿ô€ÎÄêµÁ€òÀžÀ®€¹€ë¡¥¶ñÂÎÅª
+€Ë€Ï¡€Œ¡€Î€è€Š€Ê¹Ô€òÀžÀ®€¹€ë¡¥
+
+#define TNUM_INHNO <ÄêµÁ€¹€ë³ä¹þ€ß¥Ï¥ó¥É¥é€Î¿ô>
+const uint_t	_kernel_tnum_inhno = TNUM_INHNO;
+
+(7-3-2) ³ä¹þ€ß¥Ï¥ó¥É¥é€ÎœÐÆþžýœèÍý
+
+ÄêµÁ€¹€ë³ä¹þ€ß¥Ï¥ó¥É¥éËè€Ë¡€³ä¹þ€ß¥Ï¥ó¥É¥é€ÎœÐÆþžýœèÍý¥ë¡Œ¥Á¥ó€òÀžÀ®€¹
+€ë¡¥¶ñÂÎÅª€Ë€Ï¡€Œ¡€Î€è€Š€Ê¹Ô€òÀžÀ®€¹€ë¡¥
+
+INTHDR_ENTRY(inhno, inhno_num, inthdr)
+
+€³€³€Çinhno_num€Ï¡€inhno¡Ê³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ¡Ë€ò¿ôÃÍ€ÇÉœžœ€·€¿€â€Î€Ç¡€
+¥¢¥»¥ó¥Ö¥êžÀžìµ­œÒ€Ë»ÈÍÑ€¹€ë€¿€á€Î€â€Î€Ç€¢€ë¡¥
+
+(7-3-3) ³ä¹þ€ß¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÄêµÁ
+
+³ä¹þ€ß¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯€òÀžÀ®€¹€ë¡¥¶ñÂÎÅª€Ë€Ï¡€Œ¡€Î€è€Š€Ê¹Ô€òÀžÀ®
+€¹€ë¡¥
+
+const INHINIB _kernel_inhinib_table[TNUM_INHNO] = {
+	<³ä¹þ€ß¥Ï¥ó¥É¥é1€ÎœéŽü²œŸðÊó>,
+	<³ä¹þ€ß¥Ï¥ó¥É¥é2€ÎœéŽü²œŸðÊó>,
+				¡Ä¡Ä
+	<³ä¹þ€ß¥Ï¥ó¥É¥éTNUM_INHNO€ÎœéŽü²œŸðÊó>
+};
+
+€³€ÎÃæ€Î³ä¹þ€ß¥Ï¥ó¥É¥é€ÎœéŽü²œŸðÊó€Ï¡€Œ¡€Î·ÁŒ°€È€¹€ë¡¥
+
+	{ (inhno), (inhatr), (FP)(INT_ENTRY(inhno, inthdr)) }
+
+(7-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¡Ë
+
+(8) CPUÎã³°€ËŽØ€¹€ëÄêµÁ
+
+CPUÎã³°€ËŽØ€·€ÆÀžÀ®€¹€ëŸðÊó€Ï¡€¥¿¡Œ¥²¥Ã¥ÈËè€ËÄê€á€ë€³€È€¬€Ç€­€ë¡¥¥¿¡Œ¥²¥Ã
+¥ÈËè€ËÄê€á€Ê€€Ÿì¹ç€Ë€Ï¡€°Ê²Œ€ÇœÒ€Ù€ë¥¿¡Œ¥²¥Ã¥È€Ë°ÍÂž€·€Ê€€ÉžœàÅª€ÊŸðÊó
+€òÀžÀ®€¹€ë¡¥¥¿¡Œ¥²¥Ã¥ÈËè€ËÄê€á€ëŸì¹ç€Ë€Ï¡€€³€ì€é€ÎŸðÊó€ÏÀžÀ®€µ€ì€Ê€€¡¥
+
+¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ëÃæ€Ë¡€CPUÎã³°¥Ï¥ó¥É¥é€òÄêµÁ€¹€ë
+ÀÅÅªAPI¡ÖDEF_EXC¡×€¬ŽÞ€Þ€ì€Æ€€€ëŸì¹ç€Ë¡€CPUÎã³°¥Ï¥ó¥É¥é€ËŽØ€¹€ëÄêµÁ€ò
+ÀžÀ®€¹€ë¡¥
+
+°Ê²Œ€Ç€Ï¡€¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë€ËŒ¡€ÎÀÅÅªAPI€¬ŽÞ€Þ€ì
+€Æ€€€ë»þ€ËÀžÀ®€¹€Ù€­ŸðÊó€Ë€Ä€€€ÆœÒ€Ù€ë¡¥
+
+DEF_EXC(excno, { excatr, exchdr });
+
+(8-1) ÄêµÁ€¹€ëCPUÎã³°¥Ï¥ó¥É¥é€Î¿ô
+
+ÄêµÁ€¹€ëCPUÎã³°¥Ï¥ó¥É¥é€Î¿ô€ò¥Þ¥¯¥íÄêµÁ€¹€ë¥×¥ê¥×¥í¥»¥Ã¥µ¥Ç¥£¥ì¥¯¥Æ¥£
+¥Ö¡Ê#define¡Ë€òÀžÀ®€¹€ë¡¥€Þ€¿¡€€œ€ÎÃÍ€ò»ý€ÄÊÑ¿ô€ÎÄêµÁ€òÀžÀ®€¹€ë¡¥¶ñÂÎ
+Åª€Ë€Ï¡€Œ¡€Î€è€Š€Ê¹Ô€òÀžÀ®€¹€ë¡¥
+
+#define TNUM_EXCNO <ÄêµÁ€¹€ëCPUÎã³°¥Ï¥ó¥É¥é€Î¿ô>
+const uint_t	_kernel_tnum_excno = TNUM_EXCNO;
+
+(8-2) CPUÎã³°¥Ï¥ó¥É¥é€ÎœÐÆþžýœèÍý
+
+ÄêµÁ€¹€ëCPUÎã³°¥Ï¥ó¥É¥éËè€Ë¡€CPUÎã³°¥Ï¥ó¥É¥é€ÎœÐÆþžýœèÍý¥ë¡Œ¥Á¥ó€òÀžÀ®
+€¹€ë¡¥¶ñÂÎÅª€Ë€Ï¡€Œ¡€Î€è€Š€Ê¹Ô€òÀžÀ®€¹€ë¡¥
+
+EXCHDR_ENTRY(excno, excno_num, exchdr)
+
+€³€³€Çexcno_num€Ï¡€excno¡ÊCPUÎã³°¥Ï¥ó¥É¥éÈÖ¹æ¡Ë€ò¿ôÃÍ€ÇÉœžœ€·€¿€â€Î€Ç¡€
+¥¢¥»¥ó¥Ö¥êžÀžìµ­œÒ€Ë»ÈÍÑ€¹€ë€¿€á€Î€â€Î€Ç€¢€ë¡¥
+
+(8-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)) }
+
+(8-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¡Ë
+
+(9) Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ€Î¥¹¥¿¥Ã¥¯ÎÎ°è€ËŽØ€¹€ëÄêµÁ
+
+Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ€Î¥¹¥¿¥Ã¥¯ÎÎ°è€ËŽØ€¹€ëÄêµÁ€Ï¡€É¬€ºÀžÀ®€·€Ê€±€ì€Ð
+€Ê€é€Ê€€¡¥
+
+(9-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 */
+
+(9-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)
+
+(9-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 */
+
+(9-4) ¥š¥é¡ŒŸò·ï
+
+Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ€Î¥¹¥¿¥Ã¥¯ÎÎ°è€ËŽØ€¹€ë¥š¥é¡ŒŸò·ï€ÏŒ¡€ÎÄÌ€ê€Ç€¢€ë¡¥
+
+¡ö¥Ñ¥¹2€Çž¡œÐ€¹€ë€â€Î
+¡ŠÀÅÅªAPI¡ÖDEF_ICS¡×€¬Ê£¿ô€¢€ë¡ÊE_OBJ¡Ë
+¡Šistksz€¬0°Ê²Œ€«¡€¥¿¡Œ¥²¥Ã¥ÈÄêµÁ€ÎºÇŸ®ÃÍ¡ÊTARGET_MIN_ISTKSZ¡Ë€è€ê€âŸ®
+¡¡€µ€€Ÿì¹ç¡ÊE_PAR¡Ë
+¡Šistksz€¬¥¹¥¿¥Ã¥¯ÎÎ°è€Î¥µ¥€¥º€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	- ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎÃÍ¡ÊCHECK_STKSZ_ALIGN¡Ë€ÎÇÜ¿ô€Ç€Ê€€Ÿì¹ç
+	¢š €³€Î¥š¥é¡Œ¥Á¥§¥Ã¥¯€Ï¡€istk€¬NULL€Ç€Ê€€Ÿì¹ç€Ë€Î€ß¹Ô€Š
+
+¡ö¥Ñ¥¹3€Çž¡œÐ€¹€ë€â€Î
+¡Šistk€¬¥¹¥¿¥Ã¥¯ÎÎ°è€ÎÀèÆ¬ÈÖÃÏ€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	- ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎÃÍ¡ÊCHECK_STACK_ALIGN¡Ë€ÎÇÜ¿ô€Ç€Ê€€Ÿì¹ç
+	- NULL€ÎŸì¹ç¡Ê¥¿¡Œ¥²¥Ã¥È°ÍÂž¡€CHECK_STACK_NONNULL¡Ë
+
+(10) ¥¿¥€¥à¥€¥Ù¥ó¥ÈŽÉÍý€ËŽØ€¹€ëÄêµÁ
+
+¥¿¥€¥à¥€¥Ù¥ó¥ÈŽÉÍý€ËŽØÏ¢€·€Æ¡€Œ¡€ÎÄêµÁ€òÀžÀ®€¹€ë¡¥
+
+TMEVTN	_kernel_tmevt_heap[TNUM_TSKID + TNUM_CYCID + TNUM_ALMID];
+
+(11) ³Æ¥â¥ž¥å¡Œ¥ë€ÎœéŽü²œŽØ¿ô€ÎÄêµÁ
+
+³Æ¥«¡Œ¥Í¥ë¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý¡€³ä¹þ€ßŽÉÍý¡€CPUÎã³°¥Ï¥ó¥É¥éŽÉÍý€Î³Æµ¡Çœ€ò
+œéŽü²œŽØ¿ô€òœç€ËžÆ€ÓœÐ€¹ŽØ¿ô¡Ê_kernel_initialize_object¡Ë€òÀžÀ®€¹€ë¡¥Œ¡
+€Î3€Ä€ÎœéŽü²œŽØ¿ô€òœü€€€Æ€Ï¡€»ÈÍÑ€·€Ê€€µ¡Çœ€ÎœéŽü²œŽØ¿ô€ÏžÆ€ÓœÐ€µ€Ê€€¡¥
+
+	_kernel_initialize_task
+	_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();
+}
+
+(12) œéŽü²œ¥ë¡Œ¥Á¥ó€ÎŒÂ¹ÔŽØ¿ô€ÎÄêµÁ
+
+¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ëÃæ€ËŽÞ€Þ€ì€ëœéŽü²œ¥ë¡Œ¥Á¥ó€òÄÉ²Ã
+€¹€ëÀÅÅª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));
+}
+
+(12-1) ¥š¥é¡ŒŸò·ï
+
+œéŽü²œ¥ë¡Œ¥Á¥ó€ËŽØ€¹€ë¥š¥é¡ŒŸò·ï€ÏŒ¡€ÎÄÌ€ê€Ç€¢€ë¡¥
+
+¡ö¥Ñ¥¹2€Çž¡œÐ€¹€ë€â€Î
+¡Šiniatr€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+
+¡ö²ÄÇœ€Ç€¢€ì€Ð¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€Çž¡œÐ€¹€ë€â€Î
+¡Šinirtn€¬¥×¥í¥°¥é¥à€Î³«»ÏÈÖÃÏ€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+
+(13) œªÎ»œèÍý¥ë¡Œ¥Á¥ó€ÎŒÂ¹ÔŽØ¿ô€ÎÄêµÁ
+
+¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ëÃæ€ËŽÞ€Þ€ì€ëœªÎ»œèÍý¥ë¡Œ¥Á¥ó€òÄÉ
+²Ã€¹€ëÀÅÅª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));
+}
+
+(13-1) ¥š¥é¡ŒŸò·ï
+
+œªÎ»œèÍý¥ë¡Œ¥Á¥ó€ËŽØ€¹€ë¥š¥é¡ŒŸò·ï€ÏŒ¡€ÎÄÌ€ê€Ç€¢€ë¡¥
+
+¡ö¥Ñ¥¹2€Çž¡œÐ€¹€ë€â€Î
+¡Šteratr€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+
+¡ö²ÄÇœ€Ç€¢€ì€Ð¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€Çž¡œÐ€¹€ë€â€Î
+¡Šterrtn€¬¥×¥í¥°¥é¥à€Î³«»ÏÈÖÃÏ€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+
+°ÊŸå
Index: /doc/design.txt
===================================================================
--- /doc/design.txt	(revision 7)
+++ /doc/design.txt	(revision 7)
@@ -0,0 +1,1522 @@
+
+		TOPPERS/ASP¥«¡Œ¥Í¥ë
+		Àß·×¥á¥â
+
+		ÂÐ±þ¥Ð¡Œ¥ž¥ç¥ó: Release 1.9.2
+		ºÇœª¹¹¿·: 2014Ç¯4·î15Æü¡ÊºîÀ®Ãæ¡Ë
+
+€³€Î¥É¥­¥å¥á¥ó¥È€Ï¡€TOPPERS/ASP¥«¡Œ¥Í¥ë€ÎÀß·×¥á¥â€Ç€¢€ë¡¥ºîÀ®ÅÓÃæ€Î€â€Î
+€Ç€¢€ê¡€ÌÖÍåÅª€Ç€Ï€Ê€€¡¥
+
+----------------------------------------------------------------------
+ TOPPERS/ASP Kernel
+     Toyohashi Open Platform for Embedded Real-Time Systems/
+     Advanced Standard Profile Kernel
+
+ Copyright (C) 2005-2014 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$
+----------------------------------------------------------------------
+
+¡ûÌÜŒ¡
+
+¡ŠTOPPERS/ASP¥«¡Œ¥Í¥ë€ÎŒÂÁõÀß·×Êý¿Ë
+¡Š¥·¥¹¥Æ¥àŸõÂÖ€È¥³¥ó¥Æ¥­¥¹¥È€ÎŒÂÁõ
+	- ¥«¡Œ¥Í¥ëÆ°ºîŸõÂÖ€ÈÈóÆ°ºîŸõÂÖ
+	- ¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€ÈÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È
+	- ÁŽ³ä¹þ€ß¥í¥Ã¥¯ŸõÂÖ€ÈÁŽ³ä¹þ€ß¥í¥Ã¥¯²òœüŸõÂÖ
+	- CPU¥í¥Ã¥¯ŸõÂÖ€ÈCPU¥í¥Ã¥¯²òœüŸõÂÖ
+	- ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯
+	- ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ€È¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ
+	- ¥Ç¥£¥¹¥Ñ¥Ã¥ÁÊÝÎ±ŸõÂÖ
+¡Š¥¿¥¹¥¯ŸõÂÖ€ÎŽÉÍý€È¥¹¥±¥ž¥å¡Œ¥ê¥ó¥°
+	- ¥¿¥¹¥¯ŸõÂÖ€ÎŽÉÍý
+	- ¥¿¥¹¥¯¥¹¥±¥ž¥å¡Œ¥é
+¡Š¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥ÁœèÍý€ÎŒÂÁõ
+	- ¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥ÁœèÍý€ÎÉ¬Í×€Ê¥¿¥€¥ß¥ó¥°
+	- ¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã€Î¹œÂ€
+	- ¥¿¥¹¥¯€ÎœªÎ»»þ€Î¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á
+	- reqflg€ÎÆ³ÆþÍýÍ³
+¡Š¥¿¥¹¥¯Îã³°œèÍýµ¡Çœ€ÎŒÂÁõ
+	- ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎŒÂ¹Ô³«»ÏŸò·ï€È¥·¥¹¥Æ¥àŸõÂÖ¡Ê»ÅÍÍ€Î³ÎÇ§¡Ë
+	- ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎžÆœÐ€·œèÍý
+	- ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎŒÂ¹Ô³«»Ï€¬É¬Í×€Ê¥¿¥€¥ß¥ó¥°
+	- ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎŒÂ¹Ô³«»ÏœèÍý
+	- call_texrtn€«€édispatch€òžÆ€ÓœÐ€¹œèÍý€Ë€Ä€€€Æ
+¡Š¥š¥é¡Œ€Î¥Á¥§¥Ã¥¯œçœø
+	- ¥š¥é¡Œ€Î3Ê¬Îà
+	- ÀÅÅª¥š¥é¡Œ€Î¥Á¥§¥Ã¥¯œçœø
+	- œàÀÅÅª¥š¥é¡Œ€Î¥Á¥§¥Ã¥¯œçœø
+¡Š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¡Ë
+
+¡ü¥¿¥¹¥¯€ÎœªÎ»»þ€Î¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á
+
+ext_tsk€Ë€è€ë¥¿¥¹¥¯€ÎœªÎ»»þ€Ë¡€µ¯Æ°Í×µá€¬¥­¥å¡Œ¥€¥ó¥°€µ€ì€Æ€€€ë€È¡€Æ±€ž
+¥¿¥¹¥¯€¬€¹€°€Ëµ¯Æ°€µ€ì€ë¡¥€³€ÎŸì¹ç¡€¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã€Ë€È€Ã€Æ€Ï¡€Æ±
+€ž¥¿¥¹¥¯€Ø€ÎÀÚŽ¹€š€Ëž«€š¡€¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥ÁœèÍý€ò¥¹¥­¥Ã¥×²ÄÇœ€Ë»×€š€ë
+€¬¡€ŒÂºÝ€Ë€Ï¡€Æ±€ž¥¿¥¹¥¯€Î°Û€Ê€ë¥€¥ó¥¹¥¿¥ó¥¹€Ø€ÎÀÚŽ¹€š€Ç€¢€ë€¿€á¡€¥¿¥¹
+¥¯¥Ç¥£¥¹¥Ñ¥Ã¥ÁœèÍý€ò¥¹¥­¥Ã¥×€·€Æ€Ï€Ê€é€Ê€€¡¥
+
+ŸåœÒ€Î¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã€Î¹œÂ€€Ë€è€ê¡€¥¿¥¹¥¯€ÎœªÎ»»þ€Ë€Ï¡€€œ€ìÀìÍÑ€Î
+œèÍý¡Êexit_and_dispatch¡Ë€òžÆ€ÓœÐ€¹¡¥€³€ÎœèÍý€Ç€Ï¡€ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€ò»²
+ŸÈ€»€º¡€¥³¥ó¥Æ¥­¥¹¥È€ÎÊÝÂž€â¹Ô€ï€º€Ë¡€Œ¡€Ë»ö¹à€¹€ë¥¿¥¹¥¯€ÎÁªÂòœèÍý€ò¹Ô
+€Š€¿€á¡€¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥ÁœèÍý€¬¥¹¥­¥Ã¥×€µ€ì€ë€³€È€Ï€Ê€€¡¥
+
+€Ê€ª¡€ter_tsk€Ë€è€Ã€ÆŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€òœªÎ»€µ€»€ë€³€È€Ï€Ç€­€Ê€€€¿€á¡€
+ter_tsk€Ç€Ï€³€Î€è€Š€ÊŸõ¶·€Ïµ¯€³€é€Ê€€¡¥
+
+¡üreqflg€ÎÆ³ÆþÍýÍ³
+
+³ä¹þ€ß¥Ï¥ó¥É¥é¡¿CPUÎã³°¥Ï¥ó¥É¥é€ÎœÐžýœèÍý€Ë¡€¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á€Þ€¿€Ï¥¿
+¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎŒÂ¹Ô³«»Ï€òÍ×µá€¹€ë€³€È€òŒš€¹¥Õ¥é¥°€È€·€Æ¡€reqflg
+€òÍÑ°Õ€·€Æ€€€ë¡¥Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€Ë€ª€€€Æ¡€¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬É¬Í×
+€Ë€Ê€Ã€¿Ÿì¹ç€ä¡€¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎŒÂ¹Ô³«»Ï€¬É¬Í×€Ë€Ê€Ã€¿Ÿì¹ç€Ë€Ï¡€
+€³€Î¥Õ¥é¥°€ò¥»¥Ã¥È€¹€ë¡¥
+
+reqflg€òÆ³Æþ€·€¿ÍýÍ³€Ï¡€³ä¹þ€ß¥Ï¥ó¥É¥é¡¿CPUÎã³°¥Ï¥ó¥É¥é€ÎœÐžýœèÍý€ÎÅµ·¿
+Åª€Ê¥±¡Œ¥¹¡Ê¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á€â¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎŒÂ¹Ô³«»Ï€âÉ¬Í×
+€Ê€€Ÿì¹ç¡Ë€ò¹âÂ®²œ€¹€ë€¿€á€Ç€¢€ë¡¥€Þ€¿¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ãËÜÂÎ¡Êdispatcher¡Ë
+€Î¥¢¥€¥É¥ëœèÍý€â¹âÂ®²œ€Ç€­€ë¡¥
+
+€·€«€·¡€³ä¹þ€ß¥Ï¥ó¥É¥é¡¿CPUÎã³°¥Ï¥ó¥É¥é€ÎœÐžýœèÍýÁŽÂÎ€Î¥ª¡Œ¥Ð¥Ø¥Ã¥É€ò¹Í
+€š€ë€È¡€reqflg€Ë€è€ë¹âÂ®²œ€Îžú²Ì€Ï€œ€ì€Û€ÉÂç€­€¯€Ê€€€â€Î€È»×€ï€ì€ë¡¥
+
+
+¡û¥¿¥¹¥¯Îã³°œèÍýµ¡Çœ€ÎŒÂÁõ
+
+¡ü¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎŒÂ¹Ô³«»ÏŸò·ï€È¥·¥¹¥Æ¥àŸõÂÖ¡Ê»ÅÍÍ€Î³ÎÇ§¡Ë
+
+¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€Ï¡€Œ¡€Î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€Ë€¹€ë¡¥
+
+
+¡û¥š¥é¡Œ€Î¥Á¥§¥Ã¥¯œçœø
+
+¥µ¡Œ¥Ó¥¹¥³¡Œ¥ëÆâ€Ë€ª€±€ë¥š¥é¡Œ¥Á¥§¥Ã¥¯€Ï¡€°Ê²Œ€Îœçœø€Ç¹Ô€Š€³€È€òž¶Â§€È
+€¹€ë¡¥€Ê€ª¡€€³€ÎÀá€Ë€Ï¡€ÊÝžîµ¡ÇœÂÐ±þ¥«¡Œ¥Í¥ë€ËŽØ€¹€ëµ­œÒ€¬ŽÞ€Þ€ì€Æ€€€ë
+€¬¡€€œ€ì€é€Îµ­œÒ€ÏŸ­ÍèÅª€Ë€Ï€è€êÅ¬ÀÚ€Ê¥É¥­¥å¥á¥ó¥È€Ë°ÜÆ°€¹€ëÍœÄê€Ç€¢€ë¡¥
+
+¡ü¥š¥é¡Œ€Î3Ê¬Îà
+
+¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€Î¥š¥é¡Œ€Ï¡€Âç€­€¯°Ê²Œ€Î3€Ä€ËÊ¬Îà€¹€ë€³€È€¬€Ç€­€ë¡¥
+
+(a) ÀÅÅª¥š¥é¡Œ
+
+ÂÐŸÝ€Î¥«¡Œ¥Í¥ë¥ª¥Ö¥ž¥§¥¯¥È€¬ÅÐÏ¿€µ€ì€Æ€€€ë€«ÈÝ€«€ä¡€€œ€ÎŸõÂÖ€Ë°ÍÂž€»€º
+€Ë¡€¥Á¥§¥Ã¥¯€¹€ë€³€È€¬€Ç€­€ë¥š¥é¡Œ¡¥
+
+(b) œàÀÅÅª¥š¥é¡Œ
+
+ÂÐŸÝ€Î¥«¡Œ¥Í¥ë¥ª¥Ö¥ž¥§¥¯¥È€¬ÅÐÏ¿€µ€ì€Æ€€€ì€Ð¡€€œ€ÎŸõÂÖ€Ë°ÍÂž€»€º€Ë¥Á¥§¥Ã
+¥¯€¹€ë€³€È€¬€Ç€­€ë¥š¥é¡Œ¡¥
+
+(c) Æ°Åª¥š¥é¡Œ
+
+ÂÐŸÝ€Î¥«¡Œ¥Í¥ë¥ª¥Ö¥ž¥§¥¯¥È€ÎŸõÂÖ€Ë°ÍÂž€¹€ë¥š¥é¡Œ¡¥
+
+ASP¥«¡Œ¥Í¥ë€Ë€ª€€€Æ€Ï¡€(a)€È(b)€Î¥š¥é¡Œ€Ï¥¯¥ê¥Æ¥£¥«¥ë¥»¥¯¥·¥ç¥ó€Î³°ÂŠ€Ç¡€
+€³€Îœçœø€Ç¥Á¥§¥Ã¥¯€·¡€(c)€Î¥š¥é¡Œ€Ï¥¯¥ê¥Æ¥£¥«¥ë¥»¥¯¥·¥ç¥ó€ÎÆâÂŠ€Ç¥Á¥§¥Ã
+¥¯€¹€ë¡¥€¿€À€·¡€Æ°ÅªÀžÀ®µ¡Çœ³ÈÄ¥¥Ñ¥Ã¥±¡Œ¥ž€Ç€Ï¡€(b)€Î¥š¥é¡Œ¡Ê€Î°ìÉô¡Ë€Ï
+¥¯¥ê¥Æ¥£¥«¥ë¥»¥¯¥·¥ç¥ó€ÎÆâÂŠ€ÇŒÂ»Ü€¹€ëÉ¬Í×€¬€¢€ë¡¥
+
+¡üÀÅÅª¥š¥é¡Œ€Î¥Á¥§¥Ã¥¯œçœø
+
+ÀÅÅª¥š¥é¡Œ€Ë€Ï¡€ŒÂ¹Ô¥³¥ó¥Æ¥­¥¹¥È€Î¥š¥é¡Œ¡Ê¥Ç¥£¥¹¥Ñ¥Ã¥ÁÊÝÎ±ŸõÂÖ€«€é€ÎžÆ
+œÐ€·¥š¥é¡Œ€âŽÞ€à¡Ë¡€¥Ñ¥é¥á¡Œ¥¿€ÎÈÏ°ÏÅù€Î¥š¥é¡Œ¡ÊÂÐŸÝ€Î¥«¡Œ¥Í¥ë¥ª¥Ö¥ž¥§
+¥¯¥È€Ë°ÍÂž€»€º€Ë¥Á¥§¥Ã¥¯€Ç€­€ë€â€Î¡Ë€¬ŽÞ€Þ€ì€ë¡¥
+
+¥µ¡Œ¥Ó¥¹¥³¡Œ¥ëÃæ€Ç€Ï¡€ºÇœé€ËŒÂ¹Ô¥³¥ó¥Æ¥­¥¹¥È€Î¥š¥é¡Œ€ò¥Á¥§¥Ã¥¯€·¡€€œ€Î
+žå¡€¥Ñ¥é¥á¡Œ¥¿€ÎÊÂ€Óœç€Ë¡€ÈÏ°ÏÅù€Î¥š¥é¡Œ€ò¥Á¥§¥Ã¥¯€¹€ë¡¥
+
+ÊÝžîµ¡ÇœÂÐ±þ¥«¡Œ¥Í¥ë€Ç€Ï¡€¥Ñ¥é¥á¡Œ¥¿€¬¥Ý¥€¥ó¥¿€Ç€¢€ëŸì¹ç€Ë¡€¥Ý¥€¥ó¥¿€Î
+»Ø€¹¥á¥â¥êÎÎ°è€¬¥¢¥¯¥»¥¹²ÄÇœ€Ç€¢€ë€«€ò¥Á¥§¥Ã¥¯€¹€ëÉ¬Í×€¬€¢€ë€¬¡€¥á¥â¥ê
+ÎÎ°è€ÎÀßÄê€¬ÀÅÅª€Ç€¢€ëŸì¹ç€Ë€Ï¡€€³€Î¥š¥é¡Œ¥Á¥§¥Ã¥¯€â€³€³€ÇŒÂ»Ü€¹€ë¡¥€¿
+€À€·¡€¥á¥â¥êÎÎ°è€ÎÀßÄê€¬ÀÅÅª€Ç€Ê€€Ÿì¹ç€Ë€Ï¡€€³€Î¥š¥é¡Œ¥Á¥§¥Ã¥¯€Ï¥¯¥ê¥Æ¥£
+¥«¥ë¥»¥¯¥·¥ç¥ó€ÎÆâÂŠ€Ç¹Ô€ŠÉ¬Í×€¬€¢€ë¡¥
+
+¡üœÚÀÅÅª¥š¥é¡Œ€Î¥Á¥§¥Ã¥¯œçœø
+
+œÚÀÅÅª¥š¥é¡Œ€Î¥Á¥§¥Ã¥¯€ÎÁ°€Ë¡€ÂÐŸÝ€Î¥«¡Œ¥Í¥ë¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý¥Ö¥í¥Ã¥¯
+€ÎÀèÆ¬ÈÖÃÏ€ò¡€¥í¡Œ¥«¥ëÊÑ¿ô€ËÂåÆþ€¹€ë¡¥
+
+ÊÝžîµ¡ÇœÂÐ±þ¥«¡Œ¥Í¥ë€Ç€Ï¡€€³€ÎŒ¡€Ë¡€ÂÐŸÝ€Î¥«¡Œ¥Í¥ë¥ª¥Ö¥ž¥§¥¯¥È€¬¥¢¥¯¥»
+¥¹²ÄÇœ€Ç€¢€ë€«€ò¥Á¥§¥Ã¥¯€¹€ëœèÍý€ò¹Ô€Š¡¥Åö³º¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎžÆœÐ€·€¬¡€
+¥·¥¹¥Æ¥àŸõÂÖ€ËÂÐ€¹€ë¥¢¥¯¥»¥¹µö²Ä¥Ù¥¯¥¿€ÇÊÝžî€µ€ì€Æ€€€ëŸì¹ç€Ë€â¡€€³€ÎÃÊ
+³¬€Ç¥Á¥§¥Ã¥¯€òŒÂ»Ü€¹€ë¡¥
+
+€œ€Îžå€Ç¡€¥Ñ¥é¥á¡Œ¥¿€ÎÈÏ°ÏÅù€Î¥š¥é¡Œ€ÎÃæ€Ç¡€ÂÐŸÝ€Î¥«¡Œ¥Í¥ë¥ª¥Ö¥ž¥§¥¯¥È
+€ÎÅÐÏ¿ŸðÊó¡ÊœéŽü²œ¥Ö¥í¥Ã¥¯€ËŽÞ€Þ€ì€Æ€€€ëŸðÊó¡Ë€Ë°ÍÂž€·€Æ¥Á¥§¥Ã¥¯€¹€Ù€­
+€â€Î€Î¥Á¥§¥Ã¥¯€ò¡€¥Ñ¥é¥á¡Œ¥¿€ÎÊÂ€Óœç€ÇŒÂ»Ü€¹€ë¡¥
+
+
+¡û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¡ËÃæ€Î·Ù¹ð¥á¥Ã¥»¡Œ¥ž€Ë€Ä€€€Æ€â¡€€œ€Î€Þ€ÞÅö€Æ€Ï€Þ€ë¡¥
+
+
+¡ûÀ­ÇœÉŸ²ÁÍÑ¥·¥¹¥Æ¥à»þ¹ï»²ŸÈµ¡Çœ
+
+¡üÉ¬Í×À­€È»ÈÅÓ
+
+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: /doc/extension.txt
===================================================================
--- /doc/extension.txt	(revision 7)
+++ /doc/extension.txt	(revision 7)
@@ -0,0 +1,426 @@
+
+		TOPPERS/ASP¥«¡Œ¥Í¥ë
+		µ¡Çœ³ÈÄ¥¡Š¥Á¥å¡Œ¥Ë¥ó¥°¥¬¥€¥É
+
+		ÂÐ±þ¥Ð¡Œ¥ž¥ç¥ó: Release 1.9.2
+		ºÇœª¹¹¿·: 2014Ç¯1·î2Æü
+
+€³€Î¥É¥­¥å¥á¥ó¥È€Ï¡€TOPPERS/ASP¥«¡Œ¥Í¥ë€ò¡€µ¡Çœ³ÈÄ¥¡Š¥Á¥å¡Œ¥Ë¥ó¥°€¹€ë€¿
+€á€ÎÊýË¡¡Ê€Þ€¿€Ï¥Ò¥ó¥È¡Ë€òÀâÌÀ€¹€ë€â€Î€Ç€¢€ë¡¥
+
+----------------------------------------------------------------------
+ TOPPERS/ASP Kernel
+     Toyohashi Open Platform for Embedded Real-Time Systems/
+     Advanced Standard Profile Kernel
+
+ Copyright (C) 2005-2014 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$
+----------------------------------------------------------------------
+
+¡ûÌÜŒ¡
+
+¡Š¥š¥é¡Œ¥Á¥§¥Ã¥¯€ÎŸÊÎ¬
+¡Š¥¿¥€¥à¥Æ¥£¥Ã¥¯€ÎŒþŽü€ÎÊÑ¹¹
+¡ŠÆÃŒìÌÜÅª€Î¥ì¥ž¥¹¥¿€Î°·€€
+¡Š³ÈÄ¥¥Ñ¥Ã¥±¡Œ¥ž€Î»È€€Êý
+	- ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹µ¡Çœ³ÈÄ¥¥Ñ¥Ã¥±¡Œ¥ž
+	- ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡µ¡Çœ³ÈÄ¥¥Ñ¥Ã¥±¡Œ¥ž
+	- ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éµ¡Çœ³ÈÄ¥¥Ñ¥Ã¥±¡Œ¥ž
+	- ¥¿¥¹¥¯Í¥ÀèÅÙ³ÈÄ¥¥Ñ¥Ã¥±¡Œ¥ž
+	- À©Ìó¥¿¥¹¥¯³ÈÄ¥¥Ñ¥Ã¥±¡Œ¥ž
+	- Æ°ÅªÀžÀ®µ¡Çœ³ÈÄ¥¥Ñ¥Ã¥±¡Œ¥ž
+¡Š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/messagebuf¥Ç¥£¥ì¥¯¥È¥ê€ËÃÖ€€€Æ€¢€ë¡¥
+
+¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡µ¡Çœ³ÈÄ¥¥Ñ¥Ã¥±¡Œ¥ž€Ç€Ï¡€TOPPERS_SUPPORT_MESSAGEBUF€¬
+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€ËTPRI_INI¡Ê¡á0¡Ë€ò»ØÄê€¹€ë€È¡€Œ«¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ€¬¡€µ¯Æ°»þÍ¥
+ÀèÅÙ€ËÊÑ¹¹€µ€ì€ë¡¥
+
+tskpri€Ï¡€Œ«¥¿¥¹¥¯€Îµ¯Æ°»þÍ¥ÀèÅÙ€ÈÆ±€ž€«€œ€ì€è€ê€â¹â€¯€Ê€±€ì€Ð€Ê€é€Ê€€¡¥
+€œ€Š€Ç€Ê€€Ÿì¹ç€Ë€Ï¡€E_ILUSE¥š¥é¡Œ€È€Ê€ë¡¥
+----------------------------------------------------------------------
+
+¡üÆ°ÅªÀžÀ®µ¡Çœ³ÈÄ¥¥Ñ¥Ã¥±¡Œ¥ž
+
+Æ°ÅªÀžÀ®µ¡Çœ³ÈÄ¥¥Ñ¥Ã¥±¡Œ¥ž€Ï¡€¥ª¥Ö¥ž¥§¥¯¥È€ÎÆ°ÅªÀžÀ®µ¡Çœ€òÄÉ²Ã€¹€ë€¿€á
+€Î³ÈÄ¥¥Ñ¥Ã¥±¡Œ¥ž€Ç€¢€ë¡¥TOPPERS¿·À€Âå¥«¡Œ¥Í¥ëÅý¹ç»ÅÍÍœñ€Ëµ¬Äê€µ€ì€¿°Ê²Œ
+€Î¥ª¥Ö¥ž¥§¥¯¥ÈÀžÀ®¡¿ºïœü€Î€¿€á€Î¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë¡€³äÉÕ€±²ÄÇœ€ÊIDÈÖ¹æ€Î¿ô
+€ò»ØÄê€¹€ëÀÅÅªAPI€Ë²Ã€š€Æ¡€¥«¡Œ¥Í¥ë€¬³ä€êÉÕ€±€ë¥á¥â¥êÎÎ°è€òÀßÄê€¹€ëÀÅÅª
+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)
+
+Æ°ÅªÀžÀ®µ¡Çœ³ÈÄ¥¥Ñ¥Ã¥±¡Œ¥ž€Ë€è€êÄÉ²Ã€µ€ì€ëÀÅÅªAPI
+
+	AID_TSK(uint_t notsk)
+	AID_SEM(uint_t nosem)
+	AID_FLG(uint_t noflg)
+	AID_DTQ(uint_t nodtq)
+	AID_PDQ(uint_t nopdq)
+	AID_MBX(uint_t nombx)
+	AID_MPF(uint_t nompf)
+	AID_CYC(uint_t nocyc)
+	AID_ALM(uint_t noalm)
+	AID_ISR(uint_t noisr)
+	DEF_KMM({ SIZE kmmsz, STK_T *kmm })
+
+----------------------------------------------------------------------
+DEF_KMM		¥«¡Œ¥Í¥ë€¬³ä€êÉÕ€±€ë¥á¥â¥êÎÎ°è€ÎÀßÄê¡ÌSD¡Í
+
+¡ÚÀÅÅªAPI¡Û
+	DEF_KMM({ SIZE kmmsz, STK_T *kmm })
+
+¡Ú¥Ñ¥é¥á¡Œ¥¿¡Û
+¡¡¡ö¥«¡Œ¥Í¥ë€¬³ä€êÉÕ€±€ë¥á¥â¥êÎÎ°è€ÎÀßÄêŸðÊó
+	SIZE		kmmsz		¥«¡Œ¥Í¥ë€¬³ä€êÉÕ€±€ë¥á¥â¥êÎÎ°è€Î¥µ¥€¥º¡Ê¥Ð¥€¥È¿ô¡Ë
+	STK_T		kmm			¥«¡Œ¥Í¥ë€¬³ä€êÉÕ€±€ë¥á¥â¥êÎÎ°è€ÎÀèÆ¬ÈÖÃÏ
+
+¡Ú¥š¥é¡Œ¥³¡Œ¥É¡Û
+	E_PAR		¥Ñ¥é¥á¡Œ¥¿¥š¥é¡Œ
+				¡Škmmsz€¬0°Ê²Œ
+				¡Š€œ€ÎÂŸ€ÎŸò·ï€Ë€Ä€€€Æ€Ïµ¡Çœ€Î¹à€ò»²ŸÈ
+	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: /doc/mutex_memo.txt
===================================================================
--- /doc/mutex_memo.txt	(revision 7)
+++ /doc/mutex_memo.txt	(revision 7)
@@ -0,0 +1,1221 @@
+													TOPPERS Confidential
+		TOPPERS¥×¥í¥ž¥§¥¯¥È ¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¥á¥â
+		¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹µ¡Çœ€ËŽØ€¹€ëž¡Æ€
+
+		ºîÀ®ŒÔ: ¹âÅÄ¹­ŸÏ¡ÊÌŸžÅ²°Âç³Ø¡Ë
+		ºÇœª¹¹¿·: 2009Ç¯12·î31Æü
+
+¡û¥á¥â€Î°ÌÃÖÉÕ€±
+
+€³€Î¥É¥­¥å¥á¥ó¥È€Ï¡€TOPPERS¿·À€Âå¥«¡Œ¥Í¥ë€Ë€ª€±€ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹µ¡Çœ€Î»Å
+ÍÍ€ÈŒÂÁõ€Ë€Ä€€€Æž¡Æ€€¹€ë€â€Î€Ç€¢€ë¡¥TOPPERS/ASP¥«¡Œ¥Í¥ë€Î¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹
+µ¡Çœ³ÈÄ¥€ËŽØ€¹€ëÀß·×¥á¥â€âŽÞ€ó€Ç€€€ë¡¥
+
+¡ûÁ°Äó€È€Ê€ëÊý¿Ë
+
+TOPPERS¿·À€Âå¥«¡Œ¥Í¥ë€Ë€ª€€€Æ€Ï¡€žœ»þÅÀ€Ç€Ï¡€ŠÌITRON4.0»ÅÍÍ€Î¥ß¥å¡Œ¥Æ¥Ã
+¥¯¥¹µ¡Çœ€ÎÍ¥ÀèÅÙ·ÑŸµ¥×¥í¥È¥³¥ë€Ï¥µ¥Ý¡Œ¥È€·€Ê€€¡¥€Þ€¿¡€ž·Ì©€ÊÍ¥ÀèÅÙÀ©žæ
+µ¬Â§€Î€ß€ò¥µ¥Ý¡Œ¥È€·¡€ŽÊÎ¬²œ€·€¿Í¥ÀèÅÙÀ©žæµ¬Â§€Ï¥µ¥Ý¡Œ¥È€·€Ê€€€â€Î€È€¹
+€ë¡¥
+
+¡ûŠÌITRON4.0»ÅÍÍ€ª€è€ÓHRP¥«¡Œ¥Í¥ë»ÅÍÍ€ÎÌäÂêÅÀ
+
+ŠÌITRON4.0»ÅÍÍ€ª€è€ÓHRP¥«¡Œ¥Í¥ë€Ë€ª€±€ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î»ÅÍÍ€ËÂÐ€·€Æ¡€°Ê
+²Œ€ÎÌäÂê€¬»ØÅŠ€µ€ì€Æ€€€ë¡¥€Ê€ª¡€ÌäÂêÅÀ€òŒš€¹œçœø€Ï¡€€ª€ª€è€œ»ØÅŠ€Î€¢€Ã
+€¿œçœø€Ç€¢€ê¡€ÌäÂêÅÀ€ÎœÅÂçÀ­€òŒš€¹€â€Î€Ç€Ï€Ê€€¡¥
+
+¡üÌäÂêÅÀ€Î»ØÅŠ£±¡ÊŠÌITRON4.0»ÅÍÍ¡Ë
+----------------------------------------
+¡Š¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹µ¡Çœ€ò»ÈÍÑ€·€Æ€€€¿Ÿì¹ç€Î¡¢chg_pri€ÎÆ°ºî€Ë€Ä€€€Æ
+
+¡¡ŠÌITRON»ÅÍÍœñ€Î"chg_pri"€ÎÀâÌÀÍó€Ë¡¢°Ê²Œ€Îµ­ºÜ€¬€¢€ë€«€È»×€€€Þ€¹¡¥
+
+¡¡¡Ö¡Š¡Š¡Š¡¥€³€Î¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€òŒÂ¹Ô€·€¿·ë²Ì¡¢ÂÐŸÝ¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ
+¡¡€¬¥Ù¡Œ¥¹Í¥ÀèÅÙ€Ë°ìÃ×€·€Æ€€€ëŸì¹ç€Ë€Ï¡¢Œ¡€ÎœèÍý€ò¹Ô€Š¡¥¡Š¡Š¡Š¡×
+
+¡¡ÂÐŸÝ€È€Ê€ë¥¿¥¹¥¯€¬¡¢Í¥ÀèÅÙŸåžÂ€â€·€¯€Ï·ÑŸµ¥×¥í¥È¥³¥ë€Î¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹
+¡¡€ò¥í¥Ã¥¯€·€Æ€€€ë¡¢€¢€ë€€€Ï²òœüÂÔ€ÁŸõÂÖ€ÎŸì¹ç€Ç€â¡¢Ÿåµ­Ÿò·ï€òËþ€¿€·€Æ
+¡¡€€€ë€Ê€é€Ð¡¢»ØÄê€µ€ì€¿Í¥ÀèÅÙ€ÎÃæ€ÇºÇÄã€ÎÍ¥Àèœç°Ì€ËÊÑ¹¹€¹€ëÉ¬Í×€¬€¢€ë
+¡¡€Î€Ç€·€ç€Š€«¡¥
+
+¡¡€³€Î»ÅÍÍ€òÅ¬ÍÑ€¹€ë€Î€¬Àµ€·€€Ÿì¹ç¡¢ÆÃ€Ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€€ë
+¡¡¥¿¥¹¥¯€ËÂÐ€·€Æ¡¢Æ±€žÍ¥ÀèÅÙ€ÎÃæ€Ç€âÍ¥Àèœç°Ì€ò²Œ€²€ë€³€ÈŒ«ÂÎ€¬¡¢
+¡¡¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹ËÜÍè€Î»ÈÍÑ°Õ¿Þ€ËÈ¿€·€Æ€€€ë€è€Š€Ë»×€š€ë€Î€Ç€¹€¬¡¢Ç¡²¿€Ç
+¡¡€·€ç€Š€«¡¥
+----------------------------------------
+
+¡üÌäÂêÅÀ€Î»ØÅŠ£²¡ÊHRP¥«¡Œ¥Í¥ë¡Ë
+----------------------------------------
+ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯A€¬¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ß€·€¿žå¡€¹âÍ¥ÀèÅÙ¥¿¥¹¥¯B€¬¥ì¥Ç¥£ŸõÂÖ€Ë
+€Ê€ê¡Ê¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ß€Ê€Î€Ç¥¿¥¹¥¯ÀÚŽ¹€š€Ïµ¯€³€é€Ê€€¡Ë¡€€œ€Îžå€Ë¥¿¥¹¥¯
+A€¬Í¥ÀèÅÙŸåžÂ€¬¥¿¥¹¥¯B€ÈÆ±€ž¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ËÂÐ€·€Æploc_mtx€òÈ¯¹Ô€·€Æ¡€
+¥¿¥¹¥¯B€ÈÆ±€žÍ¥ÀèÅÙ€Þ€ÇŸå€¬€Ã€¿Ÿì¹ç€ò¹Í€š€ë¡¥HRP¥«¡Œ¥Í¥ë€Ç€Ï¡€¥¿¥¹¥¯A€Ï
+¥¿¥¹¥¯B€è€ê€âÍ¥Àèœç°Ì€¬Äã€¯€Ê€ë¡¥€œ€Îžå¡€¥¿¥¹¥¯A€¬¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²Ä€¹€ë
+€È¡€¥¿¥¹¥¯B€ËÀÚ€êŽ¹€ï€ë€³€È€Ë€Ê€ê¡€ÇÓÂŸÀ©žæÂÐŸÝ€Î¥¿¥¹¥¯ÁŽÂÎ€ÈÇÓÂŸ€µ€ì€ë
+€ï€±€Ç€Ï€Ê€¯€Ê€ë¡¥
+----------------------------------------
+
+¡üÌäÂêÅÀ£³¡ÊŠÌITRON4.0»ÅÍÍ¡Ë
+----------------------------------------
+Æ±€žÍ¥ÀèÅÙ€Î¥¿¥¹¥¯A€È¥¿¥¹¥¯B¡€€œ€ì€é€è€ê€â¹â€€ŸåžÂÍ¥ÀèÅÙ€ò»ý€Ã€¿Í¥ÀèÅÙ
+ŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€¬€¢€ëŸì¹ç€ò¹Í€š€ë¡¥¥¿¥¹¥¯A€¬¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·¡€
+¥¿¥¹¥¯B€¬¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€òÂÔ€Ã€Æ€€€ëŸõ¶·€Ç¡€¥¿¥¹¥¯A€¬¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã
+¥¯²òœü€·€¿Ÿì¹ç€Ë¡€¥¿¥¹¥¯B€¬¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€ÆÍ¥ÀèÅÙ€¬Ÿå€¬€ê¡€¥¿
+¥¹¥¯B€ËÀÚ€êŽ¹€ï€Ã€Æ€·€Þ€Š¡¥¥¿¥¹¥¯A€¬°ìÏ¢€ÇŒÂ¹Ô€µ€ì€Ê€€¡¥
+
+€³€ÎÌäÂê€Ï¡€¥¿¥¹¥¯B€ÎÍ¥ÀèÅÙ€¬¡€¥¿¥¹¥¯A€è€ê€âÄã€€Ÿì¹ç€Ë€âµ¯€³€ë¡¥
+
+¢ª ¥¹¥±¥ž¥å¡Œ¥ê¥ó¥°ÍýÏÀÅª€Ë€Ï¡€Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ËÂÐ€·€ÆÂÔ€ÁŸõÂÖ
+€Ë€Ê€ë€³€È€Ï€Ê€€€Î€Ç¡€€³€Š€€€Š¥±¡Œ¥¹€Ï¹ÍÎž€µ€ì€Æ€€€Ê€€¡¥
+
+¢ª ¥¿¥¹¥¯A€¬°ìÏ¢€ÇŒÂ¹Ô€µ€ì€Ê€€€Î€Ï¡€Âç€­€€ÌäÂê€Ç€Ï€Ê€€€È€€€Š°Õž«€â¡¥
+
+Îà»÷€À€¬Í¥Àèœç°Ì€Î°·€€€Ë€è€Ã€Æ€Ï²óÈò²ÄÇœ€Ê¥±¡Œ¥¹¡§
+
+(a) ¹âÍ¥ÀèÅÙ€Î¥¿¥¹¥¯A€ÈÄãÍ¥ÀèÅÙ€Î¥¿¥¹¥¯B¡€¥¿¥¹¥¯A€ÎÍ¥ÀèÅÙ€ÈÆ±€žŸåžÂÍ¥Àè
+ÅÙ€ò»ý€Ã€¿Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€¬€¢€ëŸì¹ç€ò¹Í€š€ë¡¥¥¿¥¹¥¯A€¬¥ß¥å¡Œ¥Æ¥Ã
+¥¯¥¹€ò¥í¥Ã¥¯€·¡€¥¿¥¹¥¯B€¬¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€òÂÔ€Ã€Æ€€€ëŸõ¶·€Ç¡€¥¿¥¹¥¯A€¬
+¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯²òœü€·€¿Ÿì¹ç€Ë¡€¥¿¥¹¥¯B€¬¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·
+€ÆÍ¥ÀèÅÙ€¬Ÿå€¬€ë¡¥Í¥Àèœç°Ì€Î°·€€€Ë€è€Ã€Æ€Ï¡€¥¿¥¹¥¯B€ËÀÚ€êŽ¹€ï€Ã€Æ€·€Þ€Š¡¥
+
+(b) Æ±€žÍ¥ÀèÅÙ€Î¥¿¥¹¥¯A€È¥¿¥¹¥¯B¡€€œ€ì€é€ÈÆ±€žŸåžÂÍ¥ÀèÅÙ€ò»ý€Ã€¿Í¥ÀèÅÙ
+ŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€¬€¢€ëŸì¹ç€ò¹Í€š€ë¡¥¥¿¥¹¥¯A€¬¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·¡€
+¥¿¥¹¥¯B€¬¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€òÂÔ€Ã€Æ€€€ëŸõ¶·€Ç¡€¥¿¥¹¥¯A€¬¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã
+¥¯²òœü€·€¿Ÿì¹ç€Ë¡€Í¥Àèœç°Ì€Î°·€€€Ë€è€Ã€Æ€Ï¡€¥¿¥¹¥¯B€ËÀÚ€êŽ¹€ï€Ã€Æ€·€Þ€Š¡¥
+----------------------------------------
+
+¡üÌäÂêÅÀ£³¡Ý£²¡ÊŠÌITRON4.0»ÅÍÍ€ò¥Þ¥ë¥Á¥×¥í¥»¥Ã¥µ³ÈÄ¥€·€¿Ÿì¹ç¡Ë
+----------------------------------------
+¥Þ¥ë¥Á¥×¥í¥»¥Ã¥µ€Ë€ª€€€Æ¡€¥×¥í¥»¥Ã¥µ1€Ë¥¿¥¹¥¯A¡€¥×¥í¥»¥Ã¥µ2€ËÍ¥ÀèÅÙ€ÎÄã
+€€¥¿¥¹¥¯B1,B2,B3€ÈÍ¥ÀèÅÙ€Î¹â€€¥¿¥¹¥¯C¡€€œ€ì€é€è€ê€â¹â€€ŸåžÂÍ¥ÀèÅÙ€ò»ý€Ã
+€¿Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€¬€¢€ëŸì¹ç€ò¹Í€š€ë¡¥¥¿¥¹¥¯A€¬¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò
+¥í¥Ã¥¯€·¡€¥¿¥¹¥¯B1,B2,B3€¬¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€òÂÔ€Ã€Æ€ª€ê¡€¥×¥í¥»¥Ã¥µ2€Ç€Ï¥¿
+¥¹¥¯C€¬ŒÂ¹Ô€µ€ì€Æ€€€ëŸõ¶·€Ç¡€¥¿¥¹¥¯A€¬¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯²òœü€·€¿Ÿì
+¹ç€Ë¡€¥¿¥¹¥¯B1€¬¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€ÆÍ¥ÀèÅÙ€¬Ÿå€¬€ê¡€¥¿¥¹¥¯B1€ËÀÚ
+€êŽ¹€ï€Ã€Æ€·€Þ€Š¡¥€µ€é€Ë¡€¥¿¥¹¥¯B2,B3€â¹â€€Í¥ÀèÅÙ€ÇŒÂ¹Ô€µ€ì¡€¥¿¥¹¥¯C€¬
+¥¿¥¹¥¯B1,B2,B3€Î¥¯¥ê¥Æ¥£¥«¥ë¥»¥¯¥·¥ç¥ó€ËÂÔ€¿€µ€ì€Æ€·€Þ€Š¡¥
+----------------------------------------
+
+¡üÌäÂêÅÀ£Ž¡ÊHRP¥«¡Œ¥Í¥ë¡Ë
+----------------------------------------
+HRP¥«¡Œ¥Í¥ë€Ç€Ï¡€Í¥ÀèÅÙ·ÑŸµ€ËÈŒ€Ã€Æ¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€¬ÊÑ²œ€¹€ëŸì¹ç€Ë¡€
+Æ±Í¥ÀèÅÙÆâ€Ç€ÎÍ¥Àèœç°Ì€òºÇÄã€Ë€¹€ë¡ÊŠÌITRON4.0»ÅÍÍ€Ç€ÏŒÂÁõ°ÍÂž€È€·€Æ€€
+€ë¡Ë¡¥€³€Î»ÅÍÍ€Ë€Ï¡€Œ¡€Î€è€Š€ÊÌäÂê€¬€¢€ë¡¥
+
+Æ±€žÍ¥ÀèÅÙ€Î¥¿¥¹¥¯A€È¥¿¥¹¥¯B¡€€œ€ì€é€è€ê€â¹â€€ŸåžÂÍ¥ÀèÅÙ€ò»ý€Ã€¿Í¥ÀèÅÙ
+ŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€¬€¢€ëŸì¹ç€ò¹Í€š€ë¡¥¥¿¥¹¥¯A€¬ŒÂ¹ÔŸõÂÖ¡€¥¿¥¹¥¯B€¬ŒÂ¹Ô
+²ÄÇœŸõÂÖ€Ç€¢€ë€È€¹€ë¡¥¥¿¥¹¥¯A€¬¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·¡€€œ€Îžå¥í¥Ã¥¯²ò
+œü€¹€ë€È¡€¥¿¥¹¥¯A€ÎÍ¥Àèœç°Ì€¬Æ±Í¥ÀèÅÙÆâ€ÇºÇÄã€È€Ê€ê¡€¥¿¥¹¥¯B€ËÀÚ€êŽ¹€ï€Ã
+€Æ€·€Þ€Š¡¥
+
+€³€Î¿¶Éñ€€€Ï¡€°ìÅÙ¥¿¥¹¥¯€ÎŒÂ¹Ô€¬³«»Ï€¹€ë€ÈÍ¥ÀèÅÙµÕÅŸ€Ë€¢€ï€Ê€€€È€€€ŠÍ¥
+ÀèÅÙŸåžÂ¥×¥í¥È¥³¥ë€ÎÀ­ŒÁ€ËÈ¿€¹€ë¡¥
+----------------------------------------
+
+¡ûÌäÂêÅÀ£³€Î¹Í»¡€ÈÊý¿Ë
+
+ÌäÂêÅÀ£³€ò²óÈò€¹€ë€¿€á€Ë€Ï¡€Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯²òœü€·€¿»þ
+€Ë¡€¥í¥Ã¥¯ÂÔ€ÁŸõÂÖ€Î¥¿¥¹¥¯€Ë€¹€°€Ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€µ€»€Æ€Ï€Ê€é€Ê
+€€€³€È€Ë€Ê€ë¡¥€¹€Ê€ï€Á¡€¥í¥Ã¥¯ÂÔ€ÁŸõÂÖ€Î¥¿¥¹¥¯€ÎÂÔ€Á²òœü€Î€ß€ò¹Ô€€¡€€œ
+€Î¥¿¥¹¥¯€¬Œ¡€Ë¥¹¥±¥ž¥å¡Œ¥ë€µ€ì€¿»þ€Ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·¡€Í¥ÀèÅÙ€ò
+ÊÑ¹¹€¹€ëœèÍý€ò¹Ô€š€Ð€è€€¡¥POSIX€Î¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Ï¡€€³€ÎÊý¿Ë€ÇŒÂÁõ€¹€Ù€­
+€â€Î€È»×€ï€ì€ë¡¥
+
+€³€Î€è€Š€Ë»ÅÍÍÊÑ¹¹€·€¿Ÿì¹ç¡€rel_wai€Î°·€€€ä¡€¥¿¥€¥à¥¢¥Š¥È€Î°·€€€¬ÌäÂê€Ë
+€Ê€ë¡¥¥¿¥€¥à¥¢¥Š¥È€Ï¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎÂÔ€Á¹ÔÎó€Ë€Ä€Ê€¬€ì€ÆÂÔ€ÁŸõÂÖ€È€Ê€Ã
+€Æ€€€ë»þŽÖ€À€±€Ç€Ê€¯¡€ÂÔ€Á²òœü€µ€ì€ÆŒ¡€Ë¥¹¥±¥ž¥å¡Œ¥ë€µ€ì€ë€Î€òÂÔ€Ã€Æ€€
+€ë»þŽÖ€âŽÞ€á€Æ°·€Š€Ù€­€Ç€¢€ë¡¥€Þ€¿¡€€œ€Î¥¿¥€¥ß¥ó¥°€Çrel_wai€¬È¯¹Ô€µ€ì€¿
+Ÿì¹ç€Î°·€€€â¡€€É€Á€é€Ë€¹€ë€«·è€á€Æ€ª€¯€³€È€¬É¬Í×€Ç€¢€ë¡Ê€É€Á€é€Î»ÅÍÍ€Ç
+€âÀ®Î©€¹€ë€È¹Í€š€é€ì€ë¡Ë¡¥€³€ì€Þ€Ç€ÎITRON»ÅÍÍ€ÎÆ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€Ë
+€Ê€«€Ã€¿¿¶Éñ€€€Ç€¢€ê¡€€¢€Á€³€Á€Ë±Æ¶Á€¬µÚ€Ö²ÄÇœÀ­€¬€¢€ë¡¥
+
+€³€Î€è€Š€ÊÂçµ¬ÌÏ€Ê»ÅÍÍÊÑ¹¹€òÈò€±€ë€¿€á€Ë€Ï¡€€œ€â€œ€â¡€Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ
+¥Æ¥Ã¥¯¥¹€òŒèÆÀ€·€¿¥¿¥¹¥¯€¬ÂÔ€ÁŸõÂÖ€Ë€Ê€ë€è€Š€Ê»È€€Êý€¬¿äŸ©€µ€ì€ë€â€Î€Ç
+€Ï€Ê€¯¡€€œ€ÎŸì¹ç€Ë€ÏÁÛÄêÄÌ€ê€Ë€Ï¿¶€ëÉñ€ï€Ê€€€³€È€òÀ©žÂ»ö¹à€È€¹€ë°Ê³°€Ë
+€Ê€€€È»×€ï€ì€ë¡¥Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€òŒèÆÀ€·€¿¥¿¥¹¥¯€¬ÂÔ€ÁŸõÂÖ€Ë€Ê
+€ë€Ê€É€ÎÍýÍ³€ÇŒÂ¹Ôž¢€òŒº€ï€Ê€±€ì€Ð¡€Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ËÂÐ€·€ÆÂÔ
+€ÁŸõÂÖ€Ë€Ê€ëŸõ¶·€âµ¯€³€é€Ê€€¡Ê¥Þ¥ë¥Á¥×¥í¥»¥Ã¥µ€ÎŸì¹ç€òœü€¯¡Ë¡¥€œ€Î€¿€á¡€
+€³€ÎÀ©žÂ»ö¹à€òÀß€±€ì€Ð¡€ÌäÂêÅÀ£³€ÎŸõ¶·€Ïµ¯€³€é€º¡€ÌäÂê€Ç€Ï€Ê€€€³€È€Ë€Ê
+€ë¡¥
+
+¥æ¡Œ¥¶€ËÂÐ€·€Æ€Ï¡€Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€¹€ë»þ€Ë€Ïploc_mtx€ò
+»È€Š€³€È€ò¿äŸ©€¹€ì€Ð¡€€³€ÎÌäÂê€ò³ÎŒÂ€Ë²óÈò€¹€ë€³€È€¬€Ç€­€ë¡¥
+
+¥Þ¥ë¥Á¥×¥í¥»¥Ã¥µ€ÎŸì¹ç€Ë€Ï¡€Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€òŒèÆÀ€·€¿¥¿¥¹¥¯€¬
+ŒÂ¹Ôž¢€òŒº€ï€Ê€¯€Æ€â¡€Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ËÂÐ€·€ÆÂÔ€ÁŸõÂÖ€Ë€Ê€ëŸõ
+¶·€¬µ¯€³€ë¡¥€œ€Î€¿€á¡€ÌäÂêÅÀ£³¡Ý£²€Î€è€Š€ÊÌäÂê€¬Èò€±€é€ì€Ê€€¡¥
+
+º£€Î€È€³€í¡€¥Þ¥ë¥Á¥×¥í¥»¥Ã¥µ€ÎŸì¹ç€Ë€³€ì€ËÂÐœè€¹€ë€Ë€Ï¡€POSIX€ÎŒÂÁõÊý¿Ë
+€òºÎÍÑ€¹€ë€·€«€Ê€€€â€Î€È»×€ï€ì€ë€¬¡€POSIX€ÎŒÂÁõÊý¿Ë€Ë€Ï¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹
+²òÊü»þ€Ë€¹€Ù€Æ€Î¥¿¥¹¥¯€¬Æ°€­œÐ€·€Æ€·€Þ€Š€¿€á€Ë¥ª¡Œ¥Ð¥Ø¥Ã¥É€¬Âç€­€€€È€€
+€ŠÊÌ€ÎÌäÂê€¬€¢€ë¡¥
+
+·ë¶É¡€¥Þ¥ë¥Á¥×¥í¥»¥Ã¥µ€ÎŸì¹ç€ÎÎÉ€€²ò·èË¡€¬€Ê€€€Î€¬žœŸõ€Ç€¢€ë¡¥
+
+°ÊŸå€è€ê¡€¡ÊÆÃ€Ë¥Þ¥ë¥Á¥×¥í¥»¥Ã¥µ€ÎŸì¹ç€Ë¡ËÌäÂê€Ï»Ä€Ã€Æ€€€ë€¬¡€žœ»þÅÀ€Ç
+€Ï¡€žœŸõ€Î»ÅÍÍ€Ç€ä€à€Ê€·€È€¹€ë¡¥
+
+¡ûÌäÂêÅÀ£Ž€Î¹Í»¡€ÈÊý¿Ë
+
+ÌäÂêÅÀ£Ž€Ë€Ä€€€Æ€Ï¡€ÁÛÄê€µ€ì€¿»ÈÍÑÊýË¡€ÇÈ¯Àž€¹€ë€¿€á¡€À©žÂ»ö¹à€È€¹€ë€³
+€È€Ï€Ç€­€º¡€²¿€é€«€Î»ÅÍÍ€Îž«ÄŸ€·€¬É¬Í×€Ç€¢€ë¡¥
+
+ÌäÂêÅÀ£Ž€ò²óÈò€¹€ë€Ë€Ï¡€Ÿ¯€Ê€¯€È€â¡€Œ¡€ÎÊÑ¹¹€¬É¬Í×€Ç€¢€ë¡¥
+
+¡ŠÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò²òÊü€·€¿€³€È€Ë€è€ê¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€¬Äã€¯
+¡¡€Ê€ëŸì¹ç€Ë€Ï¡€Æ±Í¥ÀèÅÙÆâ€Ç€ÎÍ¥Àèœç°Ì€òºÇ¹â€Ë€¹€ë¡¥
+
+€³€ì€Ï¡€Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò³ÍÆÀ€·€ÆŒÂ¹Ô€·€Æ€€€¿¥¿¥¹¥¯€Ï¡€Äã€¯€Ê€Ã
+€¿žå€ÎÍ¥ÀèÅÙ€ÈÆ±€žÍ¥ÀèÅÙ€ò»ý€ÄÂŸ¥¿¥¹¥¯€è€ê€âÀè€ËŒÂ¹Ô²ÄÇœ€Ë€Ê€Ã€¿€Ï€º€Ç
+€¢€ê¡€€œ€ÎÃæ€Ç€ÏºÇ¹âÍ¥Àèœç°Ì€ò»ý€Ä€Ù€­€È¹Í€š€é€ì€ë€¿€á€Ç€¢€ë¡¥
+
+Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò²òÊü€·€¿€³€È€Ë€è€ê¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€¬ÊÑ²œ€·
+€Ê€€Ÿì¹ç€Ë€âÆ±€ž€³€È€¬žÀ€š€ë€¬¡€€œ€ÎžœºßÍ¥ÀèÅÙ€ÇŒÂ¹ÔŸõÂÖ€Ç€¢€Ã€¿€È€€€Š
+€³€È€Ï¡€Æ±Í¥ÀèÅÙÆâ€Ç€ÏºÇ¹âÍ¥Àèœç°Ì€ò»ý€Ã€Æ€€€¿€³€È€Ë€Ê€ê¡Ê¥Ç¥£¥¹¥Ñ¥Ã¥Á
+ÊÝÎ±ŸõÂÖ€ÎŸì¹ç€òœü€¯¡Ë¡€Í¥Àèœç°Ì€ÏÊÑ²œ€·€Ê€€€â€Î€È€·€Æ€âÆ±€ž·ë²Ì€È€Ê€ë¡¥
+€¿€À€·¡€¥Ç¥£¥¹¥Ñ¥Ã¥ÁÊÝÎ±ŸõÂÖ€ÎŸì¹ç€Î¿¶€ëÉñ€€€òµ¬Äê€¹€ë€¿€á€Ë¡€Í¥Àèœç°Ì
+€òºÇ¹â€È€¹€ë€«ÊÑ¹¹€·€Ê€€€È€¹€ë€«€Ï·è€á€Æ€ª€¯É¬Í×€¬€¢€ë¡¥
+
+»ÅÍÍ€ÎÃ±œã€µ€ò¹Í€š€ë€È¡€ÆÃŒì€ÊŸõ¶·¡ÊÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò²òÊü€·€¿
+€³€È€Ë€è€ê¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€¬Äã€¯€Ê€ëŸì¹ç¡Ë€Ç€Î€ßºÇ¹âÍ¥Àèœç°Ì€È€¹€ë€è
+€ê¡€ºÇ¹âÍ¥Àèœç°Ì€È€¹€ëŸì¹ç€ò€Ç€­€ëžÂ€ê°ìÈÌÅª€Ë€·€¿Êý€¬€è€€€È¹Í€š€é€ì€ë¡¥
+€³€Î€³€È€«€é¡€Œ¡€Î»ÅÍÍ€¬Í­ÎÏ€Ê°Æ€È€·€ÆœÐ€Æ€¯€ë¡¥
+
+¡Š¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹µ¡Çœ€Ë€è€ê¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€¬ÊÑ²œ€¹€ëŸì¹ç€Ë€Ï¡€Æ±€žÍ¥
+¡¡ÀèÅÙ€Î¥¿¥¹¥¯€ÎÃæ€ÇºÇ¹âÍ¥Àèœç°Ì€È€Ê€ë¡¥žœºßÍ¥ÀèÅÙ€¬ÊÑ²œ€·€Ê€€Ÿì¹ç€Ë€Ï¡€
+¡¡¥¿¥¹¥¯€ÎÍ¥Àèœç°Ì€ÏÊÑ¹¹€µ€ì€Ê€€¡¥
+
+€³€³€Ç¡€žœºßÍ¥ÀèÅÙ€¬ÊÑ²œ€¹€ë¥¿¥¹¥¯€¬ÂÔ€ÁŸõÂÖ€ÎŸì¹ç€Î¿¶Éñ€€€òµ¬Äê€¹€ëÉ¬
+Í×€¬€¢€ë¡¥Ÿå€ÈÀ°¹ç€µ€»€ë€Ê€é¡€¥¿¥¹¥¯€¬ÂÔ€ÁŸõÂÖ€Ç¡€¥¿¥¹¥¯€ÎÍ¥ÀèÅÙœç€ÎÂÔ
+€Á¹ÔÎó€Ë€Ä€Ê€¬€ì€Æ€€€ëŸì¹ç€Ë€Ï¡€Æ±€žÍ¥ÀèÅÙ€Î¥¿¥¹¥¯€ÎÃæ€ÇºÇœé€Ë€¹€ë€Î€¬
+Œ«Á³€Ç€¢€ë€¬¡€ÂÔ€ÁŸõÂÖ€ÎŽÖ€Þ€ÇÍ¥Àèœç°Ì€òÊÝ»ý€¹€ë€Î€Ï€ä€ê€¹€®€È€â¹Í€š€é
+€ì€ë¡¥€Þ€¿¡€¥¿¥¹¥¯ŸõÂÖ€¬ÊÑ²œ€¹€ë€ÈÆ±»þ€Ë¡€Í¥ÀèÅÙ€¬ÊÑ²œ€¹€ëŸì¹ç€â¹Í€š€ë
+É¬Í×€¬€¢€ë¡¥
+
+€³€ì€é€ò¹ÍÎž€·€Æ¡€Œ¡€Î»ÅÍÍ€È€¹€ë¡¥
+
+¡Š¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹µ¡Çœ€Ë€è€ê¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€¬ÊÑ²œ€¹€ëŸì¹ç€Î°·€€€ÏŒ¡€Î
+¡¡ÄÌ€ê€È€¹€ë¡¥ÂÐŸÝ¥¿¥¹¥¯€¬¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎÁ°žå€È€âŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ç€¢€ë
+¡¡Ÿì¹ç€Ë€Ï¡€Æ±€žÍ¥ÀèÅÙ€Î¥¿¥¹¥¯€ÎÃæ€ÇºÇ¹âÍ¥Àèœç°Ì€È€Ê€ë¡¥€œ€Š€Ç€Ê€€Ÿì¹ç
+¡¡€Ë€Ï¡€Æ±€žÍ¥ÀèÅÙ€Î¥¿¥¹¥¯€ÎÃæ€ÇºÇÄãÍ¥Àèœç°Ì€È€Ê€ë¡¥žœºßÍ¥ÀèÅÙ€¬ÊÑ²œ€·
+¡¡€Ê€€Ÿì¹ç€Ë€Ï¡€¥¿¥¹¥¯€ÎÍ¥Àèœç°Ì€ÏÊÑ¹¹€µ€ì€Ê€€¡¥
+
+¡ªÂÐŸÝ¥¿¥¹¥¯€¬ÂÔ€ÁŸõÂÖ€ÎŸì¹ç€Î¿¶Éñ€€€Ï¡€€è€êž·Ì©€Ëµ¬Äê€¹€ëÉ¬Í×€¬€¢€ë¡¥
+
+€µ€é€Ë¡€Ê£¿ô€Î¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€¬Æ±»þ€ËÊÑ²œ€¹€ëŸì¹ç€Ë€Ï¡€¥¿¥¹¥¯€Îžœºß
+Í¥ÀèÅÙ€òÊÑ²œ€µ€»€ëœçœø€Ë€è€Ã€Æ·ë²Ì€¬°Û€Ê€Ã€Æ€¯€ë€¿€á¡€Í¥ÀèÅÙ€òÊÑ²œ€µ€»
+€ëœçœø€òÌÀ³Î²œ€¹€ë€³€È€¬É¬Í×€Ç€¢€ë¡¥
+
+--------------------
+¡úŸå€Î»ÅÍÍ€ÇÌäÂê€¬€Ê€€€³€È€ò³ÎÇ§€¹€ë€¿€á€Îž¡Æ€¡ÊÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯
+¥¹€Ë€è€ëŸì¹ç¡Ë
+
+Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¡ÊÂÔ€ÁŸõÂÖ€ËÆþ€ë€³€È€Ê€¯¡Ë³ÍÆÀ€·€¿€³€È€Ë€è€ê
+¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€¬Ÿå€¬€ëŸì¹ç€Ë€Ï¡€€œ€ì€Þ€Ç€ÎžœºßÍ¥ÀèÅÙ€ÇŒÂ¹ÔŸõÂÖ€Ç€¢€Ã
+€¿€³€È€«€é¡€¿·€·€€žœºßÍ¥ÀèÅÙ€ÈÆ±€žÍ¥ÀèÅÙ€ò»ý€Ä¥¿¥¹¥¯€ÏÂŸ€Ë€Ê€€€³€È€Ë€Ê
+€ê¡Ê¥Ç¥£¥¹¥Ñ¥Ã¥ÁÊÝÎ±ŸõÂÖ€ÎŸì¹ç€òœü€¯¡Ë¡€Í¥Àèœç°Ì€òºÇ¹â€È€·€Æ€âºÇÄã€È€·
+€Æ€âÆ±€ž·ë²Ì€È€Ê€ë¡¥
+
+Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¡ÊÂÔ€ÁŸõÂÖ€ËÆþ€ë€³€È€Ê€¯¡Ë³ÍÆÀ€·€¿€³€È€Ë€è€ê
+¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€¬ÊÑ²œ€·€Ê€€Ÿì¹ç€Ë€Ï¡€€œ€ì€Þ€Ç€ÎžœºßÍ¥ÀèÅÙ€ÇŒÂ¹ÔŸõÂÖ
+€Ç€¢€Ã€¿€³€È€«€é¡€Æ±Í¥ÀèÅÙÆâ€Ç€ÏºÇ¹âÍ¥Àèœç°Ì€ò»ý€Ã€Æ€€€¿€³€È€Ë€Ê€ê¡Ê¥Ç¥£
+¥¹¥Ñ¥Ã¥ÁÊÝÎ±ŸõÂÖ€ÎŸì¹ç€òœü€¯¡Ë¡€Í¥Àèœç°Ì€òºÇ¹â€È€·€Æ€âÊÑ²œ€·€Ê€€€â€Î€È
+€·€Æ€âÆ±€ž·ë²Ì€È€Ê€ë¡¥
+
+Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹ÂÔ€ÁŸõÂÖ€«€éÂÔ€Á²òœü€µ€ì¡€Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã
+¥¯¥¹€ò³ÍÆÀ€¹€ëŸì¹ç€Ï¡€À©žÂ»ö¹à€È€·€Æ€€€ë€³€È€«€é¡€€É€Î€è€Š€Ë·è€á€Æ€â€è
+€€¡¥
+--------------------
+
+¡ûÂŸ€ÎÌäÂêÅÀ€Î¹Í»¡€ÈÊý¿Ë
+
+À©žÂ»ö¹à€òÀß€±€ë€³€È€ÇÌäÂêÅÀ£³€ÏÌäÂê€Ç€Ï€Ê€€€È€¹€ë€È¡€ÌäÂêÅÀ£²€Ë€Ä€€€Æ
+€â¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ß€ÈÊ»ÍÑ€¹€ë€ÈÁÛÄêÄÌ€ê€Ë€Ï¿¶€ëÉñ€ï€Ê€€€È€¹€ì€Ð€è€€¡¥
+€œ€ÎÂŸ€Ë¡€rot_rdq€ÈÊ»ÍÑ€·€¿Ÿì¹ç€Ë€Ï¡€ÌÀ€é€«€ËÀ©žÂ»ö¹à€òÀß€±€Ê€±€ì€Ð€Ê€é
+€Ê€€¡¥
+
+ÌäÂêÅÀ£±€Ë€Ä€€€Æ€â¡€¥Ù¡Œ¥¹Í¥ÀèÅÙ€ÎÊÑ¹¹€ÈÊ»ÍÑ€¹€ë€ÈÁÛÄêÄÌ€ê€Ë€Ï¿¶€ëÉñ€ï
+€Ê€€€È€¹€ëŒê€â€¢€ë€¬¡€Œ¡€Î€è€Š€Ë»ÅÍÍ€òœ€Àµ€¹€ëŒê€â€¢€ë¡¥
+
+¡Šchg_pri€Ç¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ€òÊÑ¹¹€·€¿Ÿì¹ç€Î°·€€€ÏŒ¡€ÎÄÌ€ê€È€¹€ë¡¥ÂÐ
+¡¡ŸÝ¥¿¥¹¥¯€¬¥Ù¡Œ¥¹Í¥ÀèÅÙ€òÊÑ¹¹€·€¿žå€ÎŸõÂÖ€Ç¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹·ÐÍ³€Ç¥Ù¡Œ¥¹
+¡¡Í¥ÀèÅÙ€ÈÆ±€ž€«€œ€ì€è€ê¹â€€Í¥ÀèÅÙ€ò·ÑŸµ€·€Æ€€€ëŸì¹ç€Ë€Ï¡€žœºßÍ¥ÀèÅÙ€¬
+¡¡ÊÑ²œ€¹€ë€Ê€éÆ±€žÍ¥ÀèÅÙ€Î¥¿¥¹¥¯€ÎÃæ€ÇºÇ¹âÍ¥Àèœç°Ì€È€Ê€ê¡€žœºßÍ¥ÀèÅÙ€¬
+¡¡ÊÑ²œ€·€Ê€€€Ê€éÍ¥Àèœç°Ì€âÊÑ²œ€·€Ê€€¡¥€œ€ì°Ê³°€ÎŸì¹ç€Ë€Ï¡€Æ±€žÍ¥ÀèÅÙ€Î
+¡¡¥¿¥¹¥¯€ÎÃæ€ÇºÇÄãÍ¥Àèœç°Ì€È€Ê€ë¡¥
+
+€³€³€Ç¡€Í¥ÀèÅÙ·ÑŸµ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥µ¥Ý¡Œ¥È€·€Ê€€Ÿì¹ç€Ë€Ï¡€Œ¡€Î€³€È€¬žÀ
+€š€ë¡¥¥¿¥¹¥¯€¬¥í¥Ã¥¯€¹€ë€³€È€¬€Ç€­€ëÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎŸåžÂÍ¥Àè
+ÅÙ€Ï¡€€œ€Î¥¿¥¹¥¯€ÎÊÑ¹¹Á°žå€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ€ÈÆ±€ž€«€œ€ì€è€ê¹â€€¡¥€œ€Î€¿€á¡€
+Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€€ëŸì¹ç€Ë€Ï¡€É¬€º¡€¡Ö¥ß¥å¡Œ¥Æ¥Ã¥¯
+¥¹·ÐÍ³€Ç¥Ù¡Œ¥¹Í¥ÀèÅÙ€ÈÆ±€ž€«€œ€ì€è€ê¹â€€Í¥ÀèÅÙ€ò·ÑŸµ€·€Æ€€€ë¡×¡¥€Ä€Þ€ê¡€
+¡Ö¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹·ÐÍ³€Ç¥Ù¡Œ¥¹Í¥ÀèÅÙ€ÈÆ±€ž€«€œ€ì€è€ê¹â€€Í¥ÀèÅÙ€ò·ÑŸµ€·€Æ
+€€€ëŸì¹ç¡×€Ï¡ÖÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€€ëŸì¹ç¡×€È°ìÃ×€¹€ë¡¥
+€µ€é€Ë¡€Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€€ëŸì¹ç€Ë€Ï¡€chg_pri€Ç¥¿¥¹
+¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙÊÑ¹¹€·€Æ€â¡€€œ€Î¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€¬ÊÑ²œ€¹€ë€³€È€Ï€Ê€€¡¥
+
+°ÊŸå€Î€³€È€«€é¡€Ÿå€Îœ€Àµ»ÅÍÍ€Ï¡€Œ¡€ÎÄÌ€ê€ËŽÊÃ±²œ€¹€ë€³€È€¬€Ç€­€ë¡¥
+
+¡Šchg_pri€Ç¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ€òÊÑ¹¹€·€¿Ÿì¹ç€Î°·€€€ÏŒ¡€ÎÄÌ€ê€È€¹€ë¡¥ÂÐ
+¡¡ŸÝ¥¿¥¹¥¯€¬Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€€Ê€€Ÿì¹ç¡€Æ±€žÍ¥ÀèÅÙ
+¡¡€Î¥¿¥¹¥¯€ÎÃæ€ÇºÇÄãÍ¥Àèœç°Ì€È€Ê€ë¡¥€œ€ì°Ê³°€ÎŸì¹ç€Ë€Ï¡€ÂÐŸÝ¥¿¥¹¥¯€Îžœ
+¡¡ºßÍ¥ÀèÅÙ€¬ÊÑ¹¹€µ€ì€ë€³€È€Ï€Ê€¯¡€Í¥Àèœç°Ì€âÊÑ¹¹€µ€ì€Ê€€¡¥
+
+¡ûchg_pri€Îµ¡Çœµ­œÒ¡ÊŽØÏ¢ÉôÊ¬€Î€ß¡Ë
+
+----------------------------------------------------------------------
+ÂÐŸÝ¥¿¥¹¥¯€¬µÙ»ßŸõÂÖ€Ç€Ê€€Ÿì¹ç€Ë€Ï¡€ÂÐŸÝ¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ€¬¡€tskpri
+€Ç»ØÄê€·€¿Í¥ÀèÅÙ€ËÊÑ¹¹€µ€ì€ë¡¥€œ€ì€ËÈŒ€Ã€Æ¡€ÂÐŸÝ¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€âÊÑ
+¹¹€µ€ì€ë¡¥
+
+ÂÐŸÝ¥¿¥¹¥¯€¬¡€Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€€Ê€€Ÿì¹ç€Ë€Ï¡€Œ¡€Î
+œèÍý€¬¹Ô€ï€ì€ë¡¥ÂÐŸÝ¥¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂÖ€ÎŸì¹ç€Ë€Ï¡€Æ±€žÍ¥ÀèÅÙ€Î¥¿¥¹
+¥¯€ÎÃæ€ÇºÇÄãÍ¥Àèœç°Ì€È€Ê€ë¡¥ÂÐŸÝ¥¿¥¹¥¯€¬ÂÔ€ÁŸõÂÖ€Ç¡€¥¿¥¹¥¯€ÎÍ¥ÀèÅÙœç€Î
+ÂÔ€Á¹ÔÎó€Ë€Ä€Ê€¬€ì€Æ€€€ëŸì¹ç€Ë€Ï¡€ÂÐŸÝ¥¿¥¹¥¯€ÎÊÑ¹¹žå€ÎžœºßÍ¥ÀèÅÙ€ËœŸ€Ã
+€Æ¡€€œ€ÎÂÔ€Á¹ÔÎóÃæ€Ç€Îœçœø€¬ÊÑ¹¹€µ€ì€ë¡¥ÂÔ€Á¹ÔÎóÃæ€ËÆ±€žžœºßÍ¥ÀèÅÙ€Î¥¿
+¥¹¥¯€¬€¢€ëŸì¹ç€Ë€Ï¡€ÂÐŸÝ¥¿¥¹¥¯€Îœçœø€Ï€œ€ì€é€ÎÃæ€ÇºÇžå€Ë€Ê€ë¡¥
+
+ÂÐŸÝ¥¿¥¹¥¯€¬¡€Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€€ëŸì¹ç€Ë€Ï¡€ÂÐŸÝ¥¿
+¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€¬ÊÑ¹¹€µ€ì€ë€³€È€Ï€Ê€¯¡€Í¥Àèœç°Ì€âÊÑ¹¹€µ€ì€Ê€€¡¥
+----------------------------------------------------------------------
+
+¡ûASP¥«¡Œ¥Í¥ë€Ø€ÎŒÂÁõÊý¿Ë
+
+¡ü¥¿¥¹¥¯ŽÉÍý¥Ö¥í¥Ã¥¯€È¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹ŽÉÍý¥Ö¥í¥Ã¥¯
+
+¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹µ¡Çœ€òŒÂžœ€¹€ë€¿€á€Î¥Ç¡Œ¥¿¹œÂ€€È€·€Æ¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎÂÔ
+€Á¹ÔÎó¡Ê¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€òÂÔ€Ã€Æ€€€ë¥¿¥¹¥¯€Î¥ê¥¹¥È¡Ë€Ë²Ã€š€Æ¡€¥¿¥¹¥¯€ËÂÐ
+€·€Æ€œ€ì€¬¥í¥Ã¥¯€·€Æ€€€ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥ê¥¹¥È€È¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ËÂÐ€·
+€Æ€œ€ì€òÊÝ»ý€·€Æ€€€ë¥¿¥¹¥¯€òŽÉÍý€¹€ëÉ¬Í×€¬€¢€ë¡¥
+
+€œ€³€Ç¡€TCB€Ë€Ï¡€¥í¥Ã¥¯€·€Æ€€€ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥­¥å¡Œ¥Ø¥Ã¥À€Î¥Õ¥£¡Œ¥ë¥É
+€òÄÉ²Ã€¹€ë¡¥€Þ€¿¡€žœºßÍ¥ÀèÅÙ€Ë²Ã€š€Æ¡€¥Ù¡Œ¥¹Í¥ÀèÅÙ€òÊÝ»ý€¹€ë¥Õ¥£¡Œ¥ë¥É
+€òÄÉ²Ã€¹€ë¡¥
+
+----------------------------------------
+typedef struct task_control_block {
+	...
+	BIT_FIELD_UINT	bpriority : TBIT_TCB_PRIORITY;
+									/* ¥Ù¡Œ¥¹Í¥ÀèÅÙ¡ÊÆâÉôÉœžœ¡Ë*/
+	BIT_FIELD_UINT	priority : TBIT_TCB_PRIORITY;
+									/* žœºßÍ¥ÀèÅÙ¡ÊÆâÉôÉœžœ¡Ë*/
+	...
+	QUEUE			mutex_queue;	/* ¥í¥Ã¥¯€·€Æ€€€ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥­¥å¡Œ */
+	...
+} TCB;
+----------------------------------------
+
+bpriority€Ï¡€µÙ»ßŸõÂÖ°Ê³°€ÇÍ­žú€ÊÊÑ¿ô€Ç€¢€ë€¿€á¡€make_dormant€ÇœéŽü²œ€¹
+€ë¡¥
+
+mutex_queue€Ï¡€µÙ»ßŸõÂÖ°Ê³°€ÇÍ­žú€ÊÊÑ¿ô€Ç€¢€ë€¬¡€µÙ»ßŸõÂÖ€ËÁ«°Ü€¹€ëºÝ€Ë
+É¬€º¶õ€Ë€¹€ë€Î€Ç¡€¡Êmake_dormant€Ç€Ï€Ê€¯¡Ëinitialize_task€Ë€ª€€€ÆœéŽü²œ
+€¹€ë¡¥
+
+€Þ€¿¡€tstat¥Õ¥£¡Œ¥ë¥É€ËÆþ€ì€ë¥¿¥¹¥¯ŸõÂÖ€ÎÆâÉôÉœžœ€Ë¡€TS_WAIT_MTX¡Ê¥ß¥å¡Œ
+¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯ÂÔ€Á¡Ë€òÄÉ²Ã€¹€ë¡¥
+
+¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹ŽÉÍý¥Ö¥í¥Ã¥¯€Ë€Ï¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹ÂÔ€Á¥­¥å¡Œ€Ë²Ã€š€Æ¡€¥ß¥å¡Œ
+¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€€ë¥¿¥¹¥¯€ÎTCB€Ø€Î¥Ý¥€¥ó¥¿€È¡€¥¿¥¹¥¯€¬¥í¥Ã¥¯€·€Æ€€
+€ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥­¥å¡Œ€Ë€Ä€Ê€°€¿€á€Î¥Õ¥£¡Œ¥ë¥É€òÍÑ°Õ€¹€ë¡¥
+
+----------------------------------------
+typedef struct mutex_control_block {
+	QUEUE		wait_queue;		/* ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹ÂÔ€Á¥­¥å¡Œ */
+	const MTXINIB *p_mtxinib;	/* œéŽü²œ¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿ */
+	TCB			*p_loctsk;		/* ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€€ë¥¿¥¹¥¯ */
+	QUEUE		mutex_queue;	/* ¥í¥Ã¥¯€·€Æ€€€ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥­¥å¡Œ */
+} MTXCB;
+----------------------------------------
+
+¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€¬¥í¥Ã¥¯€µ€ì€Æ€€€Ê€€€³€È€Ï¡€p_loctsk€òNULL€ËÀßÄê€¹€ë€³€È
+€ÇÉœ€¹¡¥¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€¬¥í¥Ã¥¯€µ€ì€Æ€€€Ê€€»þ€Ë€Ï¡€mutex_queue€ÏÌµžú€Ç
+€¢€ë¡¥
+
+¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹œéŽü²œ¥Ö¥í¥Ã¥¯€Ë€Ï¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹Â°À­€È¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î
+ŸåžÂÍ¥ÀèÅÙ€òÊÝ»ý€¹€ë¡¥
+
+----------------------------------------
+typedef struct mutex_initialization_block {
+	ATR			mtxatr;			/* ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹Â°À­ */
+	uint_t		ceilpri;		/* ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎŸåžÂÍ¥ÀèÅÙ¡ÊÆâÉôÉœžœ¡Ë*/
+} MTXINIB;
+----------------------------------------
+
+¥¿¥¹¥¯€òŒê³Ý€«€ê€Ë¡€€œ€ì€¬¥í¥Ã¥¯€·€Æ€€€ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€òÁàºî€¹€ë€³€È€¬
+Â¿€€€¿€á¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹ŽÉÍý¥Ö¥í¥Ã¥¯Ãæ€Îmutex_queue€Ø€Î¥Ý¥€¥ó¥¿€«€é¡€
+¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹ŽÉÍý¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í€òÍÑ°Õ€·€Æ
+€ª€¯¡Êmutex.c¡Ë¡¥
+
+----------------------------------------
+#define MTXCB_QUEUE(p_queue) \
+			((MTXCB *)(((char *) p_queue) - offsetof(MTXCB, mutex_queue)))
+----------------------------------------
+
+¡üÍ¥ÀèÅÙÀ©žæµ¬Â§€ÈžœºßÍ¥ÀèÅÙ€Î·×»»
+
+TOPPERS¿·À€Âå¥«¡Œ¥Í¥ë€Ç€Ï¡€ŠÌITRON4.0»ÅÍÍ€Îž·Ì©€ÊÍ¥ÀèÅÙÀ©žæµ¬Â§€Î€ß€òŒÂ
+Áõ€¹€ë¡¥ž·Ì©€ÊÍ¥ÀèÅÙÀ©žæµ¬Â§€Ë€ª€€€Æ€Ï¡€¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€ò¡€Ÿï€Ë¡€°Ê
+²Œ€ÎÍ¥ÀèÅÙ€ÎºÇ¹âÃÍ€Ë°ìÃ×€¹€ë€è€Š€ËÀßÄê€¹€ë¡¥
+
+(1) ¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ
+
+(2) ¥¿¥¹¥¯€¬Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€€ëŸì¹ç¡€€œ€ì€é€Î¥ß¥å¡Œ
+	¥Æ¥Ã¥¯¥¹Ãæ€Ç¡€ºÇ€â¹â€€ŸåžÂÍ¥ÀèÅÙ€ò»ý€Ä¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎŸåžÂÍ¥ÀèÅÙ
+
+(3) ¥¿¥¹¥¯€¬Í¥ÀèÅÙ·ÑŸµ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€€ëŸì¹ç¡€€œ€ì€é€Î¥ß¥å¡Œ
+	¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯€òÂÔ€Ã€Æ€€€ë¥¿¥¹¥¯€ÎÃæ€Ç¡€ºÇ€â¹â€€žœºßÍ¥ÀèÅÙ€ò»ý€Ä
+	¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ
+
+€³€ì€é€ÎÍ¥ÀèÅÙ€ò¡€€³€³€Ç€Ï¡€žœºßÍ¥ÀèÅÙ€ò·èÄê€¹€ëÍ×ÁÇ€È€Ê€ë€È€€€Š°ÕÌ£€Ç¡€
+Í×ÁÇÍ¥ÀèÅÙ€ÈžÆ€Ö¡¥
+
+ASP¥«¡Œ¥Í¥ë€Î¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹³ÈÄ¥€Ç€Ï¡€Í¥ÀèÅÙ·ÑŸµ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Ï¥µ¥Ý¡Œ¥È
+€·€Ê€€€¿€á¡€(3)€Ï¹Í€š€ëÉ¬Í×€¬€Ê€€¡¥
+
+€Þ€º€Ï¡€€¹€Ù€Æ€ÎÍ×ÁÇÍ¥ÀèÅÙ€ò¥¹¥­¥ã¥ó€·¡€¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€ò·×»»€¹€ëŽØ
+¿ô€òŒÂÁõ€¹€ë¡¥€³€ÎŽØ¿ô€òžÆ€Ö€³€È€Ë€è€ê¡€¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€ËÀßÄê€¹€Ù€­
+ÃÍ€ò·×»»€¹€ë€³€È€¬€Ç€­€ë¡¥
+
+----------------------------------------
+/* 
+ *  ¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€Î·×»»
+ */
+static 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);
+}
+----------------------------------------
+
+¡üžœºßÍ¥ÀèÅÙ€ÎÊÑ¹¹žå€ÎœèÍý
+
+¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹µ¡Çœ€Ë€è€ê¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€òÊÑ¹¹€·€¿Ÿì¹ç€Ë€Ï¡€TCBÃæ€Îžœ
+ºßÍ¥ÀèÅÙ€ò¹¹¿·€¹€ë€³€È€Ë²Ã€š€Æ¡€Œ¡€ÎœèÍý€ò¹Ô€ŠÉ¬Í×€¬€¢€ë
+
+----------------------------------------
+¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹µ¡Çœ€Ë€è€ê¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€¬ÊÑ²œ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€ÎœèÍý
+€¬¹Ô€ï€ì€ë¡¥žœºßÍ¥ÀèÅÙ€òÊÑ²œ€µ€»€ë¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎÁ°žå€È€â¡€Åö³º¥¿¥¹¥¯
+€¬ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ç€¢€ëŸì¹ç€Ë€Ï¡€Æ±€žÍ¥ÀèÅÙ€Î¥¿¥¹¥¯€ÎÃæ€ÇºÇ¹âÍ¥Àèœç°Ì€È
+€Ê€ë¡¥€œ€Î¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€Ë€è€ê¡€Åö³º¥¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂÖ€ËÁ«°Ü€¹€ëŸì
+¹ç€Ë€Ï¡€Æ±€žÍ¥ÀèÅÙ€Î¥¿¥¹¥¯€ÎÃæ€ÇºÇÄãÍ¥Àèœç°Ì€È€Ê€ë¡¥€œ€Î¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë
+€Îžå€Ç¡€Åö³º¥¿¥¹¥¯€¬ÂÔ€ÁŸõÂÖ€Ç¡€¥¿¥¹¥¯€ÎÍ¥ÀèÅÙœç€ÎÂÔ€Á¹ÔÎó€Ë€Ä€Ê€¬€ì€Æ
+€€€ëŸì¹ç€Ë€Ï¡€Åö³º¥¿¥¹¥¯€ÎÊÑ¹¹žå€ÎžœºßÍ¥ÀèÅÙ€ËœŸ€Ã€Æ¡€€œ€ÎÂÔ€Á¹ÔÎóÃæ€Ç
+€Îœçœø€¬ÊÑ¹¹€µ€ì€ë¡¥ÂÔ€Á¹ÔÎóÃæ€ËÆ±€žžœºßÍ¥ÀèÅÙ€Î¥¿¥¹¥¯€¬€¢€ëŸì¹ç€Ë€Ï¡€
+Åö³º¥¿¥¹¥¯€Îœçœø€Ï€œ€ì€é€ÎÃæ€ÇºÇžå€Ë€Ê€ë¡¥
+----------------------------------------
+
+€³€ÎœèÍý€òŒÂžœ€¹€ë€¿€á€Ë¡€žœºßÍ¥ÀèÅÙ€òÊÑ¹¹€¹€ëºÝ€Ë¡€Æ±€žÍ¥ÀèÅÙ€Î¥¿¥¹¥¯
+€ÎÃæ€ÇºÇ¹âÍ¥Àèœç°Ì€È€¹€ëŽØ¿ô€¬É¬Í×€Ç€¢€ë¡¥€³€Î€è€Š€ÊŽØ¿ô€ò¿·€¿€ËÍÑ°Õ€¹
+€ë€³€È€â²ÄÇœ€Ç€¢€ë€¬¡€Â¿€¯€ÎÉôÊ¬€¬change_priority€È¶ŠÄÌ€Ç€¢€ë€¿€á¡€
+change_priority€Ë¿·€¿€Ê¥Ñ¥é¥á¡Œ¥¿mtxmode€òÄÉ²Ã€·¡€mtxmode€¬false€Î»þ€Ï
+Æ±€žÍ¥ÀèÅÙ€Î¥¿¥¹¥¯€ÎÃæ€ÇºÇÄãÍ¥Àèœç°Ì¡€mtxmode€¬true€Î»þ€ÏÆ±€žÍ¥ÀèÅÙ€Î¥¿
+¥¹¥¯€ÎÃæ€ÇºÇ¹âÍ¥Àèœç°Ì€È€¹€ë€è€Š€Ëœ€Àµ€¹€ë¡¥
+
+----------------------------------------
+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)) {
+		/*
+		 *  ¥¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂÖ€ÎŸì¹ç
+		 */
+		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)) {
+			/*
+			 *  ¥¿¥¹¥¯€¬¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉô
+			 *  Ê¬¡ÊWOBJCB¡Ë€ÎÂÔ€Á¥­¥å¡Œ€Ë€Ä€Ê€¬€ì€Æ€€€ëŸì¹ç
+			 */
+			wobj_change_priority(((WINFO_WOBJ *)(p_tcb->p_winfo))->p_wobjcb,
+																	p_tcb);
+		}
+	}
+	return(false);
+}
+----------------------------------------
+
+€³€³€Ç¡€Æ±€žÍ¥ÀèÅÙ€Î¥¿¥¹¥¯€ÎÃæ€ÇºÇ¹âÍ¥Àèœç°Ì€È€Ê€ë€Î€Ï¡€žœºßÍ¥ÀèÅÙ€òÊÑ
+²œ€µ€»€ë¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎÁ°žå€È€âÅö³º¥¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ç€¢€ëŸì¹ç€Ë
+žÂ€é€ì€ë€¿€á¡€wobj_change_priority€òœ€Àµ€¹€ëÉ¬Í×€Ï€Ê€€¡¥
+
+chg_pri€«€échange_priority€òžÆ€ÖŸì¹ç€Ë€Ï¡€mtxmode€òfalse€Ë€¹€ë¡¥
+
+°ìÊý¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹µ¡Çœ€Ë€è€ê¡€¥¿¥¹¥¯€ÎŸõÂÖ€¬ÊÑ²œ€»€º€Ë¡€¥¿¥¹¥¯€Îžœºß
+Í¥ÀèÅÙ€¬ÊÑ²œ€¹€ë»þ€Ï¡€mtxmode€òtrue€Ë€·€Æchange_priority€òžÆ€Ö¡¥¥¿¥¹¥¯
+€ÎŸõÂÖ€¬ÊÑ²œ€¹€ëŸì¹ç€Ë€Ï¡€ÊÌÅÓž¡Æ€€¹€ë¡¥
+
+¡üžœºßÍ¥ÀèÅÙ€ÎÀ©žæœèÍý
+
+žœºßÍ¥ÀèÅÙ€ÎÀ©žæ€ò¹Ô€ŠºÝ€Ë¡€žœºßÍ¥ÀèÅÙ€ò·èÄê€¹€ë€¿€á€ÎÍ×ÁÇÍ¥ÀèÅÙ€¬Ÿå€¬
+€ë¡Ê€Þ€¿€ÏÁý€š€ë¡ËŸì¹ç€È¡€²Œ€¬€ë¡Ê€Þ€¿€Ïžº€ë¡ËŸì¹ç€Ç€ÏÂç€­€€°ã€€€¬€¢€ë¡¥
+
+Í×ÁÇÍ¥ÀèÅÙ€¬Ÿå€¬€ë¡Ê€Þ€¿€ÏÁý€š€ë¡ËŸì¹ç€Ë€Ï¡€Ÿå€¬€Ã€¿žå€ÎÍ×ÁÇÍ¥ÀèÅÙ€È¥¿
+¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€òÈæ³Ó€¹€ë€À€±€Ç¡€žœºßÍ¥ÀèÅÙ€ÎÊÑ¹¹€ÎÉ¬Í×À­€¬ÈœÃÇ€Ç€­€ë¡¥
+€¹€Ù€Æ€ÎÍ×ÁÇÍ¥ÀèÅÙ€ò¥¹¥­¥ã¥ó€¹€ëÉ¬Í×€Ï€Ê€€¡¥
+
+€œ€ì€ËÂÐ€·€Æ¡€Í×ÁÇÍ¥ÀèÅÙ€¬²Œ€¬€ë¡Ê€Þ€¿€Ïžº€ë¡ËŸì¹ç€Ç¡€²Œ€¬€ëÁ°€ÎÍ×ÁÇÍ¥
+ÀèÅÙ€¬¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€È°ìÃ×€·€Æ€€€¿Ÿì¹ç¡ÊžÀ€€Ž¹€š€ë€È¡€€œ€ÎÍ×ÁÇÍ¥Àè
+ÅÙ€¬¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€ò·èÄê€·€Æ€€€¿Ÿì¹ç¡Ë€Ë€Ï¡€€¹€Ù€Æ€ÎÍ×ÁÇÍ¥ÀèÅÙ€ò¥¹
+¥­¥ã¥ó€·€Æ¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€ò·×»»€¹€ë€³€È€¬É¬Í×€Ç€¢€ë¡¥²Œ€¬€ëÁ°€ÎÍ×ÁÇ
+Í¥ÀèÅÙ€¬¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€È°ìÃ×€·€Æ€€€Ê€«€Ã€¿Ÿì¹ç€Ë€Ï¡€žœºßÍ¥ÀèÅÙ€¬ÊÑ
+¹¹€Ë€Ê€ë²ÄÇœÀ­€Ï€Ê€¯¡€€³€ÎœèÍý€ÏÉ¬Í×€Ê€€¡¥
+
+žÀ€Š€Þ€Ç€â€Ê€¯¡€Í×ÁÇÍ¥ÀèÅÙ€¬ÊÑ²œ€·€Ê€€Ÿì¹ç€Ë€Ï¡€¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€âÊÑ
+²œ€»€º¡€œèÍý€ÏÉ¬Í×€Ê€€¡¥
+
+Í×ÁÇÍ¥ÀèÅÙ€¬Ÿå€¬€ë¡Ê€Þ€¿€ÏÁý€š€ë¡ËŸì¹ç€ÎœèÍý€ÏŒ¡€ÎÄÌ€ê¡¥newpri€Ë€Ï¡€Ÿå
+€¬€Ã€¿žå€Î¡Ê€Þ€¿€ÏÁý€š€¿¡ËÍ×ÁÇÍ¥ÀèÅÙ€òÅÏ€¹¡¥
+
+----------------------------------------
+/*
+ *  Í×ÁÇÍ¥ÀèÅÙ€¬Ÿå€¬€ë¡Ê€Þ€¿€ÏÁý€š€ë¡ËŸì¹ç€ÎžœºßÍ¥ÀèÅÙÊÑ¹¹œèÍý
+ */
+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);
+}
+----------------------------------------
+
+Í×ÁÇÍ¥ÀèÅÙ€¬²Œ€¬€ë¡Ê€Þ€¿€Ïžº€ë¡ËŸì¹ç€ÎœèÍý€ÏŒ¡€ÎÄÌ€ê¡¥oldpri€Ë€Ï¡€²Œ€¬
+€ëÁ°€Î¡Ê€Þ€¿€Ïžº€Ã€¿¡ËÍ×ÁÇÍ¥ÀèÅÙ€òÅÏ€¹¡¥
+
+----------------------------------------
+/*
+ *  Í×ÁÇÍ¥ÀèÅÙ€¬²Œ€¬€ë¡Ê€Þ€¿€Ïžº€ë¡ËŸì¹ç€ÎžœºßÍ¥ÀèÅÙÊÑ¹¹œèÍý
+ */
+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);
+}
+----------------------------------------
+
+€€€º€ì€ÎŽØ¿ô€â¡€¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬É¬Í×€ÊŸì¹ç€Ëtrue¡€É¬Í×€Ê€€Ÿì¹ç€Ë
+false€òÊÖ€¹¡¥
+
+¡üÍ¥ÀèÅÙÀ©žæ€ÎÉ¬Í×²Õœê
+
+Á°œÒ€Î(1)€ª€è€Ó(2)€ÎÍ¥ÀèÅÙ€¬ÊÑ²œ€¹€ëŸì¹ç€Ë¡€¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€ÎÊÑ¹¹€¬
+É¬Í×€Ë€Ê€ë²ÄÇœÀ­€¬€¢€ë¡¥€œ€³€Ç¡€(1)€ª€è€Ó(2)€ÎÍ¥ÀèÅÙ€Î€œ€ì€Ÿ€ì€Ë€Ä€€€Æ¡€
+€É€Î€è€Š€ÊŸì¹ç€ËÊÑ²œ€¹€ë€«€òž¡Æ€€·¡€¥×¥í¥°¥é¥àÃæ€Î€É€Î²Õœê€ÇžœºßÍ¥ÀèÅÙ
+€òÊÑ¹¹€¹€Ù€­€«Àö€€œÐ€¹¡¥
+
+(1)¡Ö¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ¡×€¬ÊÑ²œ€¹€ë€Î€Ï¡€chg_pri€Ë€è€Ã€Æ¥¿¥¹¥¯€Î¥Ù¡Œ
+	¥¹Í¥ÀèÅÙ€òÊÑ¹¹€·€¿Ÿì¹ç€Î€ß€Ç€¢€ë¡¥€³€Î»þ€Ï¡€Í×ÁÇÍ¥ÀèÅÙ€¬Ÿå€¬€ëŸì¹ç
+	€â²Œ€¬€ëŸì¹ç€â€¢€ë¡¥
+
+(2)¡Ö¥¿¥¹¥¯€¬Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€€ëŸì¹ç¡€€œ€ì€é€Î¥ß¥å¡Œ
+	¥Æ¥Ã¥¯¥¹Ãæ€Ç¡€ºÇ€â¹â€€ŸåžÂÍ¥ÀèÅÙ€ò»ý€Ä¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎŸåžÂÍ¥ÀèÅÙ¡×
+	€¬ÊÑ²œ€¹€ë€Î€Ï¡€°Ê²Œ€Î€€€º€ì€«€ÎŸõ¶·€Ç€¢€ë¡¥
+
+(2-1) Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€¿»þ¡¥€³€Î»þ€Ï¡€Í×ÁÇÍ¥ÀèÅÙ€¬Áý
+	  €š€ë¡¥
+
+(2-2) Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯²òœü€·€¿»þ¡¥€³€Î»þ€Ï¡€Í×ÁÇÍ¥ÀèÅÙ
+	  €¬žº€ë¡¥
+
+¡üÍ¥ÀèÅÙÀ©žæ€ÎŒÂÁõ
+
+Ÿå€ÇÀ°Íý€·€¿Í¥ÀèÅÙÀ©žæ€ÎÉ¬Í×²ÕœêËè€Ë¡€ŒÂÁõÊýË¡€òž¡Æ€€¹€ë¡¥(1)€Îchg_pri
+€ÎœèÍý€Ë€Ä€€€Æ€Ïžå€Ç€Þ€È€á€Æž¡Æ€€¹€ë€³€È€È€·¡€€³€³€Ç€Ï(2-1)€È(2-2)€Ë€Ä
+€€€Æž¡Æ€€¹€ë¡¥
+
+(2-1) Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€¿»þ
+
+¥¿¥¹¥¯€¬¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€¹€ëœèÍý€Ï¡€loc_mtx¡€ploc_mtx¡€tloc_mtx€Ë
+²Ã€š€Æ¡€unl_mtx¡€ext_tsk¡€ter_tsk€Ë€¢€ë¡¥
+
+loc_mtx¡€ploc_mtx¡€tloc_mtx€Ç¥¿¥¹¥¯€¬¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€¿Ÿì¹ç€Ë€Ï¡€
+¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€¿¥¿¥¹¥¯€òp_loctsk¡€¥í¥Ã¥¯€·€¿¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò
+p_mtxcb€È€¹€ë€È¡€Œ¡€ÎœèÍý€ò¹Ô€š€Ð€è€€¡¥
+
+----------------------------------------
+	mutex_raise_priority(p_loctsk, p_mtxcb->p_mtxinib->ceilpri);
+----------------------------------------
+
+°ìÊý¡€unl_mtx¡€ext_tsk¡€ter_tsk€Ç¥¿¥¹¥¯€¬¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€¹€ë€Î€Ï¡€
+¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹ÂÔ€ÁŸõÂÖ€Î¥¿¥¹¥¯€¬ÂÔ€Á²òœü€µ€ì€¿Ÿì¹ç€Ç€¢€ë¡¥€³€ÎŸì¹ç€Ë€Ï¡€
+¡ÖžœºßÍ¥ÀèÅÙ€òÊÑ²œ€µ€»€ë¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎÁ°žå€È€âÅö³º¥¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ë
+ŸõÂÖ€Ç€¢€ëŸì¹ç¡×€Ë³ºÅö€·€Ê€€€¿€á¡€ÂÔ€Á²òœü€µ€ì€¿¥¿¥¹¥¯€Ï¡€Æ±€žÍ¥ÀèÅÙ€Î
+¥¿¥¹¥¯€ÎÃæ€ÇºÇÄãÍ¥Àèœç°Ì€È€Ê€ë¡¥
+
+€œ€³€Ç¡€€³€ÎŸì¹ç€Ë€Ïmtxmode€òtrue€Ë€·€Æchange_priority€òžÆ€ÓœÐ€¹
+mutex_raise_priority€ò»È€ï€º€Ë¡€¿·€·€€žœºßÍ¥ÀèÅÙ€òTCB€ËÀßÄê€·€¿žå€Ë¡€
+make_non_wait€òžÆ€ÓœÐ€¹·Á€ÇŒÂÁõ€¹€ë¡¥¶ñÂÎÅª€Ë€Ï¡€ÂÔ€Á²òœü€µ€ì€Æ¥ß¥å¡Œ¥Æ¥Ã
+¥¯¥¹€ò¥í¥Ã¥¯€·€¿¥¿¥¹¥¯€òp_tcb¡€¥í¥Ã¥¯€·€¿¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€òp_mtxcb€È€¹€ë
+€È¡€Œ¡€ÎœèÍý€ò¹Ô€Š¡¥
+
+----------------------------------------
+		if (MTX_CEILING(p_mtxcb)) {
+			if (p_mtxcb->p_mtxinib->ceilpri < p_tcb->priority) {
+				p_tcb->priority = p_mtxcb->p_mtxinib->ceilpri;
+			}
+		}
+		make_non_wait(p_tcb);
+----------------------------------------
+
+Ÿåµ­€Î¥³¡Œ¥É€Ï¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯²òœüœèÍý€ò¹Ô€Šmutex_release€ÎÃæ€Ë
+ŽÞ€á€ë¡¥mutex_release€ÎŒÂÁõ€ÏŒ¡€ÎÄÌ€ê¡¥
+
+----------------------------------------
+static 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 {
+		/*
+		 *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹ÂÔ€Á¥­¥å¡Œ€ÎÀèÆ¬¥¿¥¹¥¯¡Êp_tcb¡Ë€Ë¡€¥ß¥å¡Œ¥Æ¥Ã
+		 *  ¥¯¥¹€ò¥í¥Ã¥¯€µ€»€ë¡¥
+		 */
+		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));
+	}
+}
+----------------------------------------
+
+€³€ÎŽØ¿ô€ÎžåÈŸ€Ï¡€Œ¡€Î€è€Š€ËŒÂÁõ€¹€ë€³€È€â²ÄÇœ€Ë»×€š€ë¡¥
+
+----------------------------------------
+	else {
+			bool_t	dspreq = false;
+
+			p_tcb = (TCB *) queue_delete_next(&(p_mtxcb->wait_queue));
+			if (wait_complete(p_tcb)) {
+				dspreq = true;
+			}
+			if (mutex_acquire(p_tcb, p_mtxcb)) {
+				dspreq = true;
+			}
+			return(dspreq);
+	}
+----------------------------------------
+
+€·€«€·€³€Î¥³¡Œ¥É€Ë€Ï¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€¿¥¿¥¹¥¯€ÎÍ¥Àèœç°Ì€¬¡€Æ±
+€žÍ¥ÀèÅÙ€Î¥¿¥¹¥¯€ÎÃæ€ÇºÇ¹â€È€Ê€Ã€Æ€·€Þ€Š€È€€€ŠÌäÂê€¬€¢€ë¡¥»ÅÍÍ€Ë¹ç€ï€»
+€ë€¿€á€Ë€Ï¡€mutex_acquire€ËÂÐ€·€Æ¥Ñ¥é¥á¡Œ¥¿mtxmode€òÄÉ²Ã€¹€ë€Ê€É€Îœ€Àµ
+€¬É¬Í×€Ç€¢€ë¡¥
+
+€Þ€¿€³€Î¥³¡Œ¥É€Ï¡€wait_compleate€Ç¥¿¥¹¥¯€ò¥ì¥Ç¥£¥­¥å¡Œ€Ë€Ä€Ê€€€Àžå¡€
+mutex_acquire€«€éžÆ€ó€Àmutex_raise_priority€Ç¥ì¥Ç¥£¥­¥å¡Œ€«€é€Îºïœü€ÈÁÞ
+Æþ€ò¹Ô€ŠŸì¹ç€¬€¢€ê¡€žúÎš€¬°­€€¡¥
+
+(2-2) Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯²òœü€·€¿»þ
+
+¥¿¥¹¥¯€¬¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯²òœü€¹€ëœèÍý€Ï¡€unl_mtx€Ë²Ã€š€Æ¡€ext_tsk¡€
+ter_tsk¡€ini_mtx€Ë€¢€ë¡¥€³€ÎŸì¹ç€Ë€Ï¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯²òœü€·€¿¥¿
+¥¹¥¯€òp_loctsk¡€¥í¥Ã¥¯²òœü€·€¿¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€òp_mtxcb€È€¹€ë€È¡€Œ¡€ÎœèÍý
+€ò¹Ô€š€Ð€è€€¡¥
+								   
+----------------------------------------
+	mutex_drop_priority(p_loctsk, p_mtxcb->p_mtxinib->ceilpri);
+----------------------------------------
+
+¡ü³ÆœèÍý€ÎŒÂÁõ
+
+¡Šloc_mtx¡€ploc_mtx¡€tloc_mtx
+
+loc_mtx€ÎÃæ€Ç€Ï¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€¹€ëœèÍý€È¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã
+¥¯€òÂÔ€Á»Ï€á€ëœèÍý€ò¹Ô€Š¡¥€œ€Î€¿€á¡€Á°œÒ€ÎÍ¥ÀèÅÙÊÑ¹¹²Õœê€Î(2-1) €ËÂÐ±þ
+€·€Ê€±€ì€Ð€Ê€é€Ê€€¡¥€³€ÎÆâ(2-1)€ÎœèÍý€Ï¡€mutex_acquire€ÎÃæ€Ç¹Ô€Š¡¥
+
+¡Šunl_mtx
+
+unl_mtx€ÎÃæ€Ç€Ï¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯²òœü€¹€ëœèÍý€È¡€ÂÔ€ÁŸõÂÖ€Ç€¢€Ã€¿
+¥¿¥¹¥¯€Ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€µ€»€ëœèÍý€ò¹Ô€Š¡¥€œ€Î€¿€á¡€Á°œÒ€ÎÍ¥ÀèÅÙ
+ÊÑ¹¹²Õœê€Î(2-1)¡€(2-2)€ËÂÐ±þ€·€Ê€±€ì€Ð€Ê€é€Ê€€¡¥€³€ÎÆâ(2-1)€ÎœèÍý€Ï¡€
+mutex_release€ÎÃæ€Ç¹Ô€Š¡¥
+
+¡Šini_mtx
+
+ini_mtx€ÎÃæ€Ç€Ï¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯²òœü€¹€ëœèÍý€È¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î
+¥í¥Ã¥¯€òÂÔ€Ä€Î€ò€ä€á€ëœèÍý€ò¹Ô€Š¡¥€œ€Î€¿€á¡€Á°œÒ€ÎÍ¥ÀèÅÙÊÑ¹¹²Õœê€Î
+(2-2)€ËÂÐ±þ€·€Ê€±€ì€Ð€Ê€é€Ê€€¡¥
+
+¡Šext_tsk
+
+ext_tsk€ÎÃæ€Ç€Ï¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯²òœü€¹€ëœèÍý€È¡€ÂÔ€ÁŸõÂÖ€Ç€¢€Ã€¿
+¥¿¥¹¥¯€Ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€µ€»€ëœèÍý€ò¹Ô€Š¡¥€œ€Î€¿€á¡€Á°œÒ€ÎÍ¥ÀèÅÙ
+ÊÑ¹¹²Õœê€Î(2-1)¡€(2-2)€ËÂÐ±þ€·€Ê€±€ì€Ð€Ê€é€Ê€€¡¥(2-1)€ÎœèÍý€Ï¡€
+mutex_release_all€«€éžÆ€ÓœÐ€µ€ì€ëmutex_release€ÎÃæ€Ç¹Ô€Š¡¥
+
+(2-2)€ÎœèÍý€Ë€Ä€€€Æ€Ï¡€Œ¡€ÎÍýÍ³€Ë€è€êŸÊÎ¬€¹€ë€³€È€¬€Ç€­€ë¡¥€³€ÎœèÍý€Ï¡€
+¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯²òœü€Ë€è€êŒ«¥¿¥¹¥¯€ÎÍ¥Àè€òÊÑ¹¹€¹€ëœèÍý€Ç€¢€ë€¬¡€
+Œ«¥¿¥¹¥¯€Ï€³€Î¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€Ë€è€êœªÎ»€¹€ë€¿€á¡€Í¥ÀèÅÙ€ò¹¹¿·€¹€ëÉ¬Í×€Ï
+€Ê€€¡¥
+
+¡Šter_tsk
+
+ter_tsk€ÎÃæ€Ç€Ï¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯€òÂÔ€Ä€Î€ò€ä€á€ëœèÍý¡€¥ß¥å¡Œ¥Æ¥Ã
+¥¯¥¹€ò¥í¥Ã¥¯²òœü€¹€ëœèÍý€È¡€ÂÔ€ÁŸõÂÖ€Ç€¢€Ã€¿¥¿¥¹¥¯€Ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã
+¥¯€µ€»€ëœèÍý€ò¹Ô€Š¡¥€œ€Î€¿€á¡€Á°œÒ€ÎÍ¥ÀèÅÙÊÑ¹¹²Õœê€Î(2-1)¡€(2-2)€ËÂÐ±þ
+€·€Ê€±€ì€Ð€Ê€é€Ê€€¡¥(2-1)€ÎœèÍý€Ï¡€mutex_release_all€«€éžÆ€ÓœÐ€µ€ì€ë
+mutex_release€ÎÃæ€Ç¹Ô€Š¡¥
+
+(2-2)€ÎœèÍý€Ë€Ä€€€Æ€Ï¡€Œ¡€ÎÍýÍ³€Ë€è€êŸÊÎ¬€¹€ë€³€È€¬€Ç€­€ë¡¥€³€ÎœèÍý€Ï¡€
+¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯²òœü€Ë€è€êÂÐŸÝ¥¿¥¹¥¯€ÎÍ¥Àè€òÊÑ¹¹€¹€ëœèÍý€Ç€¢€ë€¬¡€
+ÂÐŸÝ¥¿¥¹¥¯€Ï€³€Î¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€Ë€è€êœªÎ»€¹€ë€¿€á¡€Í¥ÀèÅÙ€ò¹¹¿·€¹€ëÉ¬Í×
+€Ï€Ê€€¡¥
+
+¡üchg_pri€Îœ€Àµ
+
+€Þ€º¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥µ¥Ý¡Œ¥È€¹€ë€³€È€Ë€è€ê¡€chg_pri€Ë°Ê²Œ€Î¥š¥é¡Œ¥Á¥§¥Ã
+¥¯€òÄÉ²Ã€¹€ëÉ¬Í×€¬€¢€ë¡¥
+
+----------------------------------------
+ÂÐŸÝ¥¿¥¹¥¯€¬Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€€ë€«¥í¥Ã¥¯€òÂÔ€Ã€Æ€€
+€ëŸì¹ç¡€tskpri€Ï¡€€œ€ì€é€Î¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎŸåžÂÍ¥ÀèÅÙ€ÈÆ±€ž€«€œ€ì€è€êÄã
+€¯€Ê€±€ì€Ð€Ê€é€Ê€€¡¥
+----------------------------------------
+
+€³€Î¥š¥é¡Œ€òž¡œÐ€¹€ë€¿€á€Ë¡€chg_pri€Ë€ÏŒ¡€Î¥³¡Œ¥É€òÄÉ²Ã€¹€ë¡¥
+
+----------------------------------------
+	else if ((!queue_empty(&(p_tcb->mutex_queue))
+										|| TSTAT_WAIT_MTX(p_tcb->tstat))
+						&& !mutex_check_ceilpri(p_tcb, newbpri)) {
+		ercd = E_ILUSE;
+	}
+----------------------------------------
+
+mutex_check_ceilpri€ÎŒÂÁõ€ÏŒ¡€ÎÄÌ€ê¡¥€³€ÎŽØ¿ô€Ï¡€¥š¥é¡Œ€òž¡œÐ€·€¿Ÿì¹ç
+€Ëfalse€ò¡€€œ€Š€Ç€Ê€€Ÿì¹ç€Ëtrue€òÊÖ€¹¡¥
+
+----------------------------------------
+bool_t
+mutex_check_ceilpri(TCB *p_tcb, uint_t bpriority)
+{
+	QUEUE	*p_queue;
+	MTXCB	*p_mtxcb;
+
+	/*
+	 *  ¥¿¥¹¥¯€¬¥í¥Ã¥¯€·€Æ€€€ëÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎÃæ€Ç¡€ŸåžÂÍ¥Àè
+	 *  ÅÙ€¬bpriority€è€ê€âÄã€€€â€Î€¬€¢€ì€Ð¡€false€òÊÖ€¹¡¥
+	 */
+	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;
+	}
+
+	/*
+	 *  ¥¿¥¹¥¯€¬Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯€òÂÔ€Ã€Æ€€€ëŸì¹ç€Ë¡€€œ
+	 *  €ÎŸåžÂÍ¥ÀèÅÙ€¬bpriority€è€ê€âÄã€¯€±€ì€Ð¡€false€òÊÖ€¹¡¥
+	 */
+	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€òÊÖ€¹¡¥
+	 */
+	return(true);
+}
+----------------------------------------
+
+Œ¡€Ë¡€¥Ù¡Œ¥¹Í¥ÀèÅÙ€òÊÑ¹¹€·€¿žå¡€Œ¡€ÎœèÍý€ò¹Ô€ŠÉ¬Í×€¬€¢€ë¡¥
+
+----------------------------------------
+€œ€ì€ËÈŒ€Ã€Æ¡€ÂÐŸÝ¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€âÊÑ¹¹€µ€ì€ë¡¥
+
+ÂÐŸÝ¥¿¥¹¥¯€¬¡€Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€€Ê€€Ÿì¹ç€Ë€Ï¡€Œ¡€Î
+œèÍý€¬¹Ô€ï€ì€ë¡¥ÂÐŸÝ¥¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂÖ€ÎŸì¹ç€Ë€Ï¡€Æ±€žÍ¥ÀèÅÙ€Î¥¿¥¹
+¥¯€ÎÃæ€ÇºÇÄãÍ¥Àèœç°Ì€È€Ê€ë¡¥ÂÐŸÝ¥¿¥¹¥¯€¬ÂÔ€ÁŸõÂÖ€Ç¡€¥¿¥¹¥¯€ÎÍ¥ÀèÅÙœç€Î
+ÂÔ€Á¹ÔÎó€Ë€Ä€Ê€¬€ì€Æ€€€ëŸì¹ç€Ë€Ï¡€ÂÐŸÝ¥¿¥¹¥¯€ÎÊÑ¹¹žå€ÎžœºßÍ¥ÀèÅÙ€ËœŸ€Ã
+€Æ¡€€œ€ÎÂÔ€Á¹ÔÎóÃæ€Ç€Îœçœø€¬ÊÑ¹¹€µ€ì€ë¡¥ÂÔ€Á¹ÔÎóÃæ€ËÆ±€žžœºßÍ¥ÀèÅÙ€Î¥¿
+¥¹¥¯€¬€¢€ëŸì¹ç€Ë€Ï¡€ÂÐŸÝ¥¿¥¹¥¯€Îœçœø€Ï€œ€ì€é€ÎÃæ€ÇºÇžå€Ë€Ê€ë¡¥
+
+ÂÐŸÝ¥¿¥¹¥¯€¬¡€Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€€ëŸì¹ç€Ë€Ï¡€ÂÐŸÝ¥¿
+¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€¬ÊÑ¹¹€µ€ì€ë€³€È€Ï€Ê€¯¡€Í¥Àèœç°Ì€âÊÑ¹¹€µ€ì€Ê€€¡¥
+----------------------------------------
+
+€³€ì€òŒÂžœ€¹€ë€¿€á€Ë€Ï¡€Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€€Ê€€Ÿì¹ç
+€Ë€Î€ßchange_priority€òžÆ€Ö€è€Š€Ëœ€Àµ€¹€ì€Ð€è€€¡Êchange_priority€Ï¡€
+mtxmode€òfalse€Ë€·€ÆžÆ€Ö¡Ë¡¥¶ñÂÎÅª€Ë€Ï¡€chg_pri€ÎŒçÍ×ÉôÊ¬€ÏŒ¡€Î€è€Š€Ë€Ê
+€ë¡¥
+
+----------------------------------------
+		p_tcb->bpriority = newbpri;
+		if (queue_empty(&(p_tcb->mutex_queue))
+								|| !mutex_scan_ceilmtx(p_tcb)) {
+			if (change_priority(p_tcb, newbpri, false)) {
+				dispatch();
+			}
+		}
+		ercd = E_OK;
+----------------------------------------
+
+€³€³€Ç¡€mutex_scan_ceilmtx€Ï¡€¥¿¥¹¥¯€¬Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯
+€·€Æ€€€ëŸì¹ç€Ëtrue€òÊÖ€¹ŽØ¿ô€Ç¡€Œ¡€Î€è€Š€ËŒÂÁõ€µ€ì€ë¡¥
+
+----------------------------------------
+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);
+}
+----------------------------------------
+
+¡ürot_rdq€Îœ€Àµ
+
+rot_rdq€Ï¡€tskpri€ËTPRI_SELF€¬»ØÄê€µ€ì€¿Ÿì¹ç€Ë¡€Œ«¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ
+€òÂÐŸÝÍ¥ÀèÅÙ€È€¹€ë¡¥¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎÆ³Æþ€Ë€è€ê¡€¥Ù¡Œ¥¹Í¥ÀèÅÙ€òÉœ€¹¥Õ¥£¡Œ
+¥ë¥É€¬¿·Àß€µ€ì€¿€¿€á¡€€œ€ÎÉôÊ¬€Î¥³¡Œ¥É€òœ€Àµ€¹€ëÉ¬Í×€¬€¢€ë¡¥¶ñÂÎÅª€Ë€Ï¡€
+rot_rdqÃæ€Î
+
+----------------------------------------
+	pri = (tskpri == TPRI_SELF) ? p_runtsk->priority : INT_PRIORITY(tskpri);
+----------------------------------------
+
+€Î¹Ô€ò¡€Œ¡€Î€è€Š€Ëœ€Àµ€¹€ë¡¥
+
+----------------------------------------
+	pri = (tskpri == TPRI_SELF) ? p_runtsk->bpriority : INT_PRIORITY(tskpri);
+----------------------------------------
+
+¡üref_tsk€Îœ€Àµ
+
+ref_tsk€Ï¡€tskbpri€ËÂÐŸÝ¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ€òÊÖ€¹¡¥¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎÆ³
+Æþ€Ë€è€ê¡€¥Ù¡Œ¥¹Í¥ÀèÅÙ€òÉœ€¹¥Õ¥£¡Œ¥ë¥É€¬¿·Àß€µ€ì€¿€¿€á¡€€œ€ÎÉôÊ¬€Î¥³¡Œ
+¥É€òœ€Àµ€¹€ëÉ¬Í×€¬€¢€ë¡¥¶ñÂÎÅª€Ë€Ï¡€ref_tskÃæ€Î
+
+----------------------------------------
+		pk_rtsk->tskbpri = EXT_TSKPRI(p_tcb->priority);
+----------------------------------------
+
+€Î¹Ô€ò¡€Œ¡€Î€è€Š€Ëœ€Àµ€¹€ë¡¥
+
+----------------------------------------
+		pk_rtsk->tskbpri = EXT_TSKPRI(p_tcb->bpriority);
+----------------------------------------
+
+¡ü¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹µ¡Çœ€ò¥ê¥ó¥¯€·€Ê€€¹©É×
+
+ºÇžå€Ë¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹µ¡Çœ€ò»ÈÍÑ€·€Ê€€Ÿì¹ç€Ë¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹ŽØÏ¢€Î¥³¡Œ
+¥É€ò¥ê¥ó¥¯€·€Ê€€¹©É×€ò¹Ô€Š¡¥
+
+¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¥â¥ž¥å¡Œ¥ë€Î³°€«€éžÆ€ÓœÐ€¹¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¥â¥ž¥å¡Œ¥ë€ÎÆâÉô
+ŽØ¿ô€ÏŒ¡€ÎÄÌ€ê¡¥
+
+	mutex_check_ceilpri¡Êchg_pri€è€ê¡Ë
+	mutex_scan_ceilmtx¡Êchg_pri€è€ê¡Ë
+	mutex_release_all¡Êext_tsk¡€ter_tsk€è€ê¡Ë
+
+€³€ì€é€ÎŽØ¿ô€Ï¥Õ¥Ã¥¯¥ë¡Œ¥Á¥ó€Ç€¢€ë€â€Î€È€·¡€žÆ€ÓœÐ€¹ºÝ€Ë€Ï¡€ÊÑ¿ô»²ŸÈ€ò
+€Ï€µ€à€³€È€Ë€¹€ë¡¥Îã€š€Ð¡Ömutex_release_all(p_runtsk)¡×€ÎÂå€ï€ê€Ë¡€
+
+	(*mtxhook_release_all)(p_runtsk);
+
+€Èµ­œÒ€¹€ë¡¥mtxhook_release_all€Ë€Ï¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¥â¥ž¥å¡Œ¥ë€¬¥ê¥ó¥¯€µ
+€ì€¿Ÿì¹ç€Ë€Ïmutex_release_all€Ø€Î¥Ý¥€¥ó¥¿€ò³ÊÇŒ€¹€ë¡¥¶ñÂÎÅª€Ë€Ï¡€
+initialize_mutex€Ë€ª€€€ÆÀßÄê€¹€ë¡¥¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¥â¥ž¥å¡Œ¥ë€¬¥ê¥ó¥¯€µ€ì
+€Ê€€Ÿì¹ç€Ë€Ï¡€mtxhook_release_all€ò»²ŸÈ€·€Æ€Ï€Ê€é€Ê€€€â€Î€È€¹€ë¡Ê0€¬Æþ
+€ë€³€È€Ï²ŸÄê€·€Ê€€¡Ë¡¥
+
+Îã€š€Ð¡€ext_tsk€«€émutex_release_all€òžÆ€Ö²Õœê€ÏŒ¡€Î€è€Š€Ë€Ê€ë¡¥
+
+----------------------------------------
+	if (!queue_empty(&(p_runtsk->mutex_queue))) {
+		(void) (*mtxhook_release_all)(p_runtsk);
+	}
+----------------------------------------
+
+TCBÃæ€Îmutex_queue€¬¶õ€Ç€Ê€¯€Ê€ë€Î€Ï¡€¥¿¥¹¥¯€¬¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·
+€Æ€€€ëŸì¹ç€Î€ß€Ç¡€€³€ì€Ï¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¥â¥ž¥å¡Œ¥ë€¬¥ê¥ó¥¯€µ€ì€¿Ÿì¹ç€ËžÂ
+€é€ì€ë¡¥€œ€Î€¿€áŸå€Î¥³¡Œ¥É€Ç¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¥â¥ž¥å¡Œ¥ë€¬¥ê¥ó¥¯€µ€ì€Ê€€
+Ÿì¹ç€Ë€Ï¡€mtxhook_release_all€¬»²ŸÈ€µ€ì€ë€³€È€Ï€Ê€€¡¥
+
+ÂŸ€Î2€Ä€ÎŽØ¿ô€Ë€Ä€€€Æ€â€³€ì€ÈÆ±ÍÍ€Ë°·€Š¡¥
+
+¡ü¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹µ¡Çœ³ÈÄ¥€Î¥³¡Œ¥ë¥°¥é¥Õ
+
+	chg_pri -- mutex_check_ceilpri
+			-- change_priority -- wobj_change_priority
+
+	ext_tsk -- mutex_release_all -- mutex_release
+
+	ter_tsk -- mutex_release_all -- mutex_release
+
+	initialize_mutex
+
+	mutex_check_ceilpri
+
+	mutex_calc_priority
+
+	mutex_raise_priority -- change_priority -- wobj_change_priority
+
+	mutex_drop_priority -- mutex_calc_priority
+						-- change_priority -- wobj_change_priority
+
+	mutex_acquire -- mutex_raise_priority --
+
+	mutex_release_all -- mutex_release
+
+	loc_mtx -- mutex_acquire -- mutex_raise_priority --
+	ploc_mtx -- mutex_acquire -- mutex_raise_priority --
+	tloc_mtx -- mutex_acquire -- mutex_raise_priority --
+
+	unl_mtx -- mutex_drop_priority --
+			-- mutex_release
+
+	ini_mtx -- mutex_drop_priority --
+
+	ref_mtx 
+
+¡û¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹µ¡Çœ€Î¥Æ¥¹¥È
+
+¡ü¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥Æ¥¹¥È(1)
+
+FIFOœç¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¡€¥í¥Ã¥¯€¹€ëœèÍý€È¥í¥Ã¥¯²òœü€¹€ëœèÍý€ò°ìÄÌ€ê¥Æ¥¹
+¥È€¹€ë¡¥
+
+¡ü¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥Æ¥¹¥È(2)
+
+Í¥ÀèÅÙœç¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¡€¥í¥Ã¥¯€¹€ëœèÍý€È¥í¥Ã¥¯²òœü€¹€ëœèÍý€ò°ìÄÌ€ê¥Æ
+¥¹¥È€¹€ë¡¥
+
+¡ü¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥Æ¥¹¥È(3)
+
+Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¡€¥í¥Ã¥¯€¹€ëœèÍý€È¥í¥Ã¥¯²òœü€¹€ëœèÍý€ò°ìÄÌ€ê
+¥Æ¥¹¥È€¹€ë¡¥ref_tsk€Ë€è€ë¥Ù¡Œ¥¹Í¥ÀèÅÙ€ÈžœºßÍ¥ÀèÅÙ€Î»²ŸÈœèÍý€Î¥Æ¥¹¥È€â·ó
+€Í€Æ€€€ë¡¥
+
+¡ü¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥Æ¥¹¥È(4)
+
+Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ËÂÐ€·€Æ¡€loc_mtx€Èunl_mtx€ËÈŒ€ŠÍ¥ÀèÅÙ€ÎÊÑ¹¹œè
+Íý€òÌÖÍåÅª€Ë¥Æ¥¹¥È€¹€ë¡¥€¿€À€·¡€change_priority€Èmutex_calc_priority€Î
+ÆâÍÆ€Ë€ÏÆ§€ß¹þ€Þ€Ê€€¡¥
+
+¡ü¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥Æ¥¹¥È(5)
+
+Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ËÂÐ€·€Æ¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎºÆœéŽü²œœèÍý€òÌÖÍåÅª
+€Ë¥Æ¥¹¥È€¹€ë¡¥€¿€À€·¡€change_priority€Èmutex_calc_priority€ÎÆâÍÆ€Ë€ÏÆ§
+€ß¹þ€Þ€Ê€€¡¥
+
+¡ü¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥Æ¥¹¥È(6)
+
+Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ËÂÐ€·€Æ¡€¥¿¥¹¥¯€ÎœªÎ»»þ¡€¥¿¥¹¥¯€ÎÍ¥Àèœç°Ì€Î²ó
+ÅŸ»þ€Î¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹ŽØÏ¢€ÎœèÍý€òÌÖÍåÅª€Ë¥Æ¥¹¥È€¹€ë¡¥
+
+¡ü¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥Æ¥¹¥È(7)
+
+Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ËÂÐ€·€Æ¡€¥¿¥¹¥¯€Î¶¯À©œªÎ»»þ€Î¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹ŽØ
+Ï¢€ÎœèÍý€òÌÖÍåÅª€Ë¥Æ¥¹¥È€¹€ë¡¥
+
+¡ü¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥Æ¥¹¥È(8)
+
+Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ËÂÐ€·€Æ¡€chg_pri€ËÈŒ€Š¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹ŽØÏ¢€ÎÍ¥Àè
+ÅÙÊÑ¹¹œèÍý€òÌÖÍåÅª€Ë¥Æ¥¹¥È€¹€ë¡¥€¿€À€·¡€change_priority€È
+mutex_check_ceilpri¡€mutex_scan_ceilmtx€ÎÆâÍÆ€Ë€ÏÆ§€ß¹þ€Þ€Ê€€¡¥
+
+°ÊŸå
+
+**********************************************************************
+ºÎÍÑ€µ€ì€Ê€«€Ã€¿ž¡Æ€
+**********************************************************************
+
+¡û¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹µ¡Çœ€Îœ€Àµ»ÅÍÍ°Æ
+
+¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹µ¡Çœ€Î»ÅÍÍ€Ë€Ä€€€Æ€Ï¡€ŠÌITRON4.0»ÅÍÍ€Î¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹µ¡Çœ
+€ò¥Ù¡Œ¥¹€È€¹€ë€¬¡€Œ¡€Îœ€Àµ€ò²Ã€š€ë¡¥
+
+¡Š¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹Áàºî€ËÈŒ€€¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€¬ÊÑ²œ€¹€ëŸì¹ç€Ë€Ï¡€Æ±€žÍ¥
+¡¡ÀèÅÙ€Î¥¿¥¹¥¯€ÎÃæ€ÇºÇ¹âÍ¥Àèœç°Ì€È€Ê€ë¡¥
+
+	¡ú¥¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂÖ€ÎŸì¹ç€ËžÂ€ë€Ù€­€«
+		ŒÂ¹ÔŸõÂÖ€ËžÂ€ë€È€¹€ë°Æ€â€¢€ë ¢ª ÉÔºÎÍÑ
+		¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎÁ°žå€È€âŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ç€¢€ëŸì¹ç€ËžÂ€ë°Æ€â€¢€ë ¢ª ºÎÍÑ
+	¡ú¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€€ëŸì¹ç€ËžÂ€é€ì€ë
+		¡Ê¿·€¿€Ë¥í¥Ã¥¯€¹€ëŸì¹ç¡€€³€ì€Þ€Ç¥í¥Ã¥¯€·€Æ€€€¿Ÿì¹ç€âŽÞ€à¡Ë
+
+¡Šchg_pri€Ç¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ€òÊÑ¹¹€·€¿Ÿì¹ç€Ç¡€¥Ù¡Œ¥¹Í¥ÀèÅÙ€òÊÑ¹¹€·€¿
+¡¡žå€ÎŸõÂÖ€Ç¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹·ÐÍ³€ÇÍ¥ÀèÅÙ€ò·ÑŸµ€·€Æ€€€Ê€€Ÿì¹ç€ËžÂ€ê¡€Æ±€ž
+¡¡Í¥ÀèÅÙ€Î¥¿¥¹¥¯€ÎÃæ€ÇºÇÄãÍ¥Àèœç°Ì€È€Ê€ë¡¥¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹·ÐÍ³€ÇÍ¥ÀèÅÙ€ò
+¡¡·ÑŸµ€·€Æ€€€ëŸì¹ç€Ë€É€Š€Ê€ë€«€ÏÍ×ž¡Æ€¡ÊÍ¥ÀèÅÙ€¬ÊÑ€ï€ë»þ€ÏºÇ¹âÍ¥Àèœç°Ì¡€
+¡¡ÊÑ€ï€é€Ê€€Ÿì¹ç€Ï€œ€Î€Þ€Þ€È€¹€ë€Î€¬ÂÅÅö€«¡Ë¡¥
+
+	¡ú¥¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂÖ€ÎŸì¹ç€ËžÂ€ë€Ù€­€« ¢ª ºÎÍÑ
+		ŒÂ¹ÔŸõÂÖ€ËžÂ€ë€È€¹€ë°Æ€â€¢€ë ¢ª ÉÔºÎÍÑ
+
+Ÿå€Îž¡Æ€€òŒõ€±€Æ¡€Œ¡€Î€è€Š€ËŸÜºÙ²œ€¹€ë¡¥
+
+¡Š¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹Áàºî€ËÈŒ€€¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€¬ÊÑ²œ€¹€ëŸì¹ç€Î°·€€€ÏŒ¡€Î
+¡¡ÄÌ€ê€È€¹€ë¡¥ÂÐŸÝ¥¿¥¹¥¯€¬¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎÁ°žå€È€âŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ç€¢€ë
+¡¡Ÿì¹ç€Ë€Ï¡€Æ±€žÍ¥ÀèÅÙ€Î¥¿¥¹¥¯€ÎÃæ€ÇºÇ¹âÍ¥Àèœç°Ì€È€Ê€ë¡¥€œ€Š€Ç€Ê€€Ÿì¹ç
+¡¡€Ë€Ï¡€Æ±€žÍ¥ÀèÅÙ€Î¥¿¥¹¥¯€ÎÃæ€ÇºÇÄãÍ¥Àèœç°Ì€È€Ê€ë¡¥
+
+¡Šchg_pri€Ç¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ€òÊÑ¹¹€·€¿Ÿì¹ç€Î°·€€€ÏŒ¡€ÎÄÌ€ê€È€¹€ë¡¥ÂÐ
+¡¡ŸÝ¥¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ç¡€¥Ù¡Œ¥¹Í¥ÀèÅÙ€òÊÑ¹¹€·€¿žå€ÎŸõÂÖ€Ç¥ß¥å¡Œ¥Æ¥Ã
+¡¡¥¯¥¹·ÐÍ³€Ç¥Ù¡Œ¥¹Í¥ÀèÅÙ€ÈÆ±€ž€«€œ€ì€è€ê¹â€€Í¥ÀèÅÙ€ò·ÑŸµ€·€Æ€€€ëŸì¹ç€Ë
+¡¡€Ï¡€žœºßÍ¥ÀèÅÙ€¬ÊÑ²œ€¹€ë€Ê€éÆ±€žÍ¥ÀèÅÙ€Î¥¿¥¹¥¯€ÎÃæ€ÇºÇ¹âÍ¥Àèœç°Ì€È€Ê
+¡¡€ê¡€žœºßÍ¥ÀèÅÙ€¬ÊÑ²œ€·€Ê€€€Ê€éÍ¥Àèœç°Ì€âÊÑ²œ€·€Ê€€¡¥€œ€ì°Ê³°€ÎŸì¹ç€Ë
+¡¡€Ï¡€Æ±€žÍ¥ÀèÅÙ€Î¥¿¥¹¥¯€ÎÃæ€ÇºÇÄãÍ¥Àèœç°Ì€È€Ê€ë¡¥
+
+Ãí¡Ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹·ÐÍ³€Ç¥Ù¡Œ¥¹Í¥ÀèÅÙ€è€ê€âÄã€€Í¥ÀèÅÙ€ò·ÑŸµ€¹€ëŸõ¶·€Ï¡€
+	Í¥ÀèÅÙ·ÑŸµ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î€ß€Çµ¯€³€ê¡€Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Ç€Ï
+	µ¯€³€é€Ê€€¡¥€œ€Î€¿€á¡€Í¥ÀèÅÙ·ÑŸµ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥µ¥Ý¡Œ¥È€·€Ê€€Ÿì¹ç
+	€Ë€Ï¡€¡Ö¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹·ÐÍ³€Ç¥Ù¡Œ¥¹Í¥ÀèÅÙ€ÈÆ±€ž€«€œ€ì€è€ê¹â€€Í¥ÀèÅÙ
+	€ò·ÑŸµ€·€Æ€€€ëŸì¹ç¡×€Ï¡ÖÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€€ëŸì
+	¹ç¡×€È°ìÃ×€¹€ë¡¥
+
+¡Ú»²¹Í¡Û
+
+Í¥ÀèÅÙ·ÑŸµœèÍý€Ï¡€ËÜÍè€Ï¡€Í¥ÀèÅÙ€Ç€Ï€Ê€¯Í¥Àèœç°Ì€ò·ÑŸµ€¹€Ù€­€Ç€¢€ë€Ù€­
+€È€€€Š°Õž«€¬€¢€ë€¬¡€žœŸõ€ÎŒÂÁõ€Ç€ÏÍ¥Àèœç°Ì€òµ­²±€·€Æ€€€Ê€€€¿€á¡€ŒÂžœ€¬
+Æñ€·€€€È€€€ŠÌäÂê€¬€¢€ë¡¥
+
+¡ûchg_pri€Îµ¡Çœµ­œÒ¡ÊŽØÏ¢ÉôÊ¬€Î€ß¡Ë
+
+----------------------------------------------------------------------
+tskid€Ç»ØÄê€·€¿¥¿¥¹¥¯¡ÊÂÐŸÝ¥¿¥¹¥¯¡Ë€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ€ò¡€tskpri€Ç»ØÄê€·€¿Í¥
+ÀèÅÙ€ËÊÑ¹¹€¹€ë¡¥¶ñÂÎÅª€Ê¿¶Éñ€€€Ï°Ê²Œ€ÎÄÌ€ê¡¥
+
+ÂÐŸÝ¥¿¥¹¥¯€¬µÙ»ßŸõÂÖ€Ç€Ê€€Ÿì¹ç€Ë€Ï¡€ÂÐŸÝ¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ€¬¡€tskpri
+€Ç»ØÄê€·€¿Í¥ÀèÅÙ€ËÊÑ¹¹€µ€ì€ë¡¥€œ€ì€ËÈŒ€Ã€Æ¡€ÂÐŸÝ¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€âÊÑ
+¹¹€µ€ì€ë¡¥
+
+ÂÐŸÝ¥¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂÖ€ÎŸì¹ç€Ë€Ï¡€ÂÐŸÝ¥¿¥¹¥¯€ÎÍ¥Àèœç°Ì€ÏŒ¡€ÎÄÌ€ê€È
+€Ê€ë¡¥ÊÑ¹¹žå€ÎžœºßÍ¥ÀèÅÙ€¬¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹·ÐÍ³€ÇÍ¥ÀèÅÙ€ò·ÑŸµ€·€Æ€€€Ê€€Ÿì
+¹ç€Ë€Ï¡€Æ±€žÍ¥ÀèÅÙ€Î¥¿¥¹¥¯€ÎÃæ€ÇºÇÄãÍ¥Àèœç°Ì€È€Ê€ë¡¥¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹·ÐÍ³
+€ÇÍ¥ÀèÅÙ€ò·ÑŸµ€·€Æ€€€ëŸì¹ç€Ë€Ï¡€žœºßÍ¥ÀèÅÙ€¬ÊÑ²œ€¹€ë€Ê€éÆ±€žÍ¥ÀèÅÙ€Î¥¿
+¥¹¥¯€ÎÃæ€ÇºÇ¹âÍ¥Àèœç°Ì€È€Ê€ê¡€žœºßÍ¥ÀèÅÙ€¬ÊÑ²œ€·€Ê€€€Ê€éÍ¥Àèœç°Ì€âÊÑ²œ
+€·€Ê€€¡¥
+
+€³€³€Ç¡€žœºßÍ¥ÀèÅÙ€¬¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹·ÐÍ³€ÇÍ¥ÀèÅÙ€ò·ÑŸµ€·€Æ€€€ë€È€Ï¡€ÂÐŸÝ
+¥¿¥¹¥¯€¬¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€€ë€³€È€Ë€è€ê¡€¥Ù¡Œ¥¹Í¥ÀèÅÙ€ÈÆ±€ž€«
+€œ€ì€è€ê¹â€€Í¥ÀèÅÙ€ò·ÑŸµ€·€Æ€€€ë€³€È€òžÀ€Š¡¥€¹€Ê€ï€Á¡€Œ¡€Î€€€º€ì€«¡Ê€Þ
+€¿€ÏÎŸÊý¡Ë€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€Ç€¢€ë¡¥
+
+¡¡¡ŠÂÐŸÝ¥¿¥¹¥¯€¬¥í¥Ã¥¯€·€Æ€€€ëÍ¥ÀèÅÙ·ÑŸµ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¡€ÂÐŸÝ¥¿¥¹¥¯€Î
+	¥Ù¡Œ¥¹Í¥ÀèÅÙ€ÈÆ±€ž€«€œ€ì€è€ê¹â€€Í¥ÀèÅÙ€ò»ý€Ã€¿¥¿¥¹¥¯€¬ÂÔ€Ã€Æ€€€ë¡¥
+¡¡¡ŠÂÐŸÝ¥¿¥¹¥¯€¬Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€€ë¡Ê¥¿¥¹¥¯€¬¥í¥Ã
+	¥¯€·€Æ€€€ëÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎŸåžÂÍ¥ÀèÅÙ€Ï¡€É¬€º¡€€œ€Î¥¿¥¹¥¯
+	€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ€ÈÆ±€ž€«€œ€ì€è€ê¹â€€¡Ë¡¥
+
+ÂÐŸÝ¥¿¥¹¥¯€¬ÂÔ€ÁŸõÂÖ€Ç¡€¥¿¥¹¥¯€ÎÍ¥ÀèÅÙœç€ÎÂÔ€Á¹ÔÎó€Ë€Ä€Ê€¬€ì€Æ€€€ëŸì¹ç
+€Ë€Ï¡€ÂÐŸÝ¥¿¥¹¥¯€ÎÊÑ¹¹žå€ÎžœºßÍ¥ÀèÅÙ€ËœŸ€Ã€Æ¡€€œ€ÎÂÔ€Á¹ÔÎóÃæ€Ç€Îœçœø€¬
+ÊÑ¹¹€µ€ì€ë¡¥ÂÔ€Á¹ÔÎóÃæ€ËÆ±€žžœºßÍ¥ÀèÅÙ€Î¥¿¥¹¥¯€¬€¢€ëŸì¹ç€Ë€Ï¡€ÂÐŸÝ¥¿¥¹
+¥¯€Îœçœø€Ï€œ€ì€é€ÎÃæ€ÇºÇžå€Ë€Ê€ë¡¥
+----------------------------------------------------------------------
+
+¡û»²¹Í¡§ŠÌITRON4.0»ÅÍÍ¡Ê4.02.00¡Ë€Ë€ª€±€ëchg_pri
+
+----------------------------------------------------------------------
+€³€Î¥µ¡Œ¥Ó¥ë¥³¡Œ¥ë€òŒÂ¹Ô€·€¿·ë²Ì¡€ÂÐŸÝ¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€¬ÊÑ²œ€·€¿Ÿì¹ç
+€ª€è€ÓžœºßÍ¥ÀèÅÙ€¬¥Ù¡Œ¥¹Í¥ÀèÅÙ€Ë°ìÃ×€·€Æ€€€ëŸì¹ç¡Ê¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹µ¡Çœ€ò
+»È€ï€Ê€€Ÿì¹ç€Ë€Ï¡€€³€ÎŸò·ï€ÏŸï€ËÀ®€êÎ©€Ä¡Ë€Ë€Ï¡€Œ¡€ÎœèÍý€ò¹Ô€Š¡¥ÂÐŸÝ¥¿
+¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ç€¢€ëŸì¹ç¡€¥¿¥¹¥¯€ÎÍ¥Àèœç°Ì€ò¡€ÊÑ¹¹žå€ÎÍ¥ÀèÅÙ€Ë€·
+€¿€¬€Ã€ÆÊÑ²œ€µ€»€ë¡¥ÊÑ¹¹žå€ÎÍ¥ÀèÅÙ€ÈÆ±€žÍ¥ÀèÅÙ€ò»ý€Ä¥¿¥¹¥¯€ÎŽÖ€Ç€Ï¡€ÂÐ
+ŸÝ¥¿¥¹¥¯€ÎÍ¥Àèœç°Ì€òºÇÄã€È€¹€ë¡¥ÂÐŸÝ¥¿¥¹¥¯€¬²¿€é€«€Î¥¿¥¹¥¯Í¥ÀèÅÙœç€ÎÂÔ
+€Á¹ÔÎó€Ë€Ä€Ê€¬€ì€Æ€€€ëŸì¹ç€Ë€â¡€€œ€ÎÂÔ€Á¹ÔÎó€ÎÃæ€Ç€Îœçœø€ò¡€ÊÑ¹¹žå€ÎÍ¥
+ÀèÅÙ€Ë€·€¿€¬€Ã€ÆÊÑ²œ€µ€»€ë¡¥ÊÑ¹¹žå€ÎÍ¥ÀèÅÙ€ÈÆ±€žÍ¥ÀèÅÙ€ò»ý€Ä¥¿¥¹¥¯€ÎŽÖ
+€Ç€Ï¡€ÂÐŸÝ¥¿¥¹¥¯€òºÇžå€Ë€Ä€Ê€°¡¥
+----------------------------------------------------------------------
+
+¡ûchg_pri€Ë€ª€±€ëÍ¥Àèœç°ÌÊÑ²œ€ËŽØ€¹€ëÊ¬ÀÏ
+
+(a) €³€Î¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€òŒÂ¹Ô€·€¿·ë²Ì¡€ÂÐŸÝ¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€¬ÊÑ²œ€·€¿
+Ÿì¹ç€ª€è€ÓžœºßÍ¥ÀèÅÙ€¬¥Ù¡Œ¥¹Í¥ÀèÅÙ€Ë°ìÃ×€·€Æ€€€ëŸì¹ç
+
+(a1)¡ÖžœºßÍ¥ÀèÅÙ€¬¥Ù¡Œ¥¹Í¥ÀèÅÙ€Ë°ìÃ×¡×
+		¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹·ÐÍ³€ÇÍ¥ÀèÅÙ€ò·ÑŸµ€·€Æ€€€Ê€€ or
+		¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹·ÐÍ³€ÇÍ¥ÀèÅÙ€ò·ÑŸµ€·€Æ€€€ëÍ¥ÀèÅÙ€¬¥Ù¡Œ¥¹Í¥ÀèÅÙ€È
+		Æ±€ž€«€œ€ì€è€êÄã€€
+(a2) ÂÐŸÝ¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€¬ÊÑ²œ€·€¿
+
+(a-) €³€Î¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€òŒÂ¹Ô€·€¿·ë²Ì¡€ÂÐŸÝ¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€¬ÊÑ²œ€»€º¡€
+žœºßÍ¥ÀèÅÙ€¬¥Ù¡Œ¥¹Í¥ÀèÅÙ€Ë°ìÃ×€·€Æ€€€Ê€€Ÿì¹ç
+
+(a1-)¡ÖžœºßÍ¥ÀèÅÙ€¬¥Ù¡Œ¥¹Í¥ÀèÅÙ€Ë°ìÃ×€·€Æ€€€Ê€€¡×
+		¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹·ÐÍ³€Ç¡€¥Ù¡Œ¥¹Í¥ÀèÅÙ€è€ê€â¹â€€Í¥ÀèÅÙ€ò·ÑŸµ€·€Æ€€€ë
+(a2-) ÂÐŸÝ¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€¬ÊÑ²œ€·€¿
+
+¥Ù¡Œ¥¹Í¥ÀèÅÙ€¬¡€chg_pri€ÎÁ°žå€Ç€É€Î€è€Š€ËÊÑ²œ€·€¿€«€ò¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹·Ð
+Í³€Ç·ÑŸµ€·€Æ€€€ëºÇ¹âÍ¥ÀèÅÙ€È€ÎÈæ³Ó€ÇÊ¬Îà€¹€ë¡¥²Œ€ÎÉœ€Ç¡Ö¹â€€¡×€È€Ï¡€¥Ù¡Œ
+¥¹Í¥ÀèÅÙ€¬¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹·ÐÍ³€Ç·ÑŸµ€·€Æ€€€ëºÇ¹âÍ¥ÀèÅÙ€è€ê€â¹â€€€³€È€ò
+Œš€¹¡¥€Þ€¿¡€¡Ö(ÊÑ²œ€¢€ê)¡×€È€Ï¡€chg_pri€ÎÁ°žå€Ç¥Ù¡Œ¥¹Í¥ÀèÅÙ€ÎÃÍ€¬ÊÑ€ï€ë
+€³€È€òŒš€¹¡¥
+													Í¥Àèœç°Ì€ÎÊÑ²œ
+	chg_priÁ°	chg_prižå		À®Î©Ÿò·ï			ŒÂ¹Ô€Ç€­€ëŸõÂÖ	ÂÔ€ÁŸõÂÖ
+	¹â€€		¹â€€(ÊÑ²œ€¢€ê)	(a1)(a2)(a)	(b)		ºÇÄã			ºÇÄã
+	¹â€€		¹â€€(ÊÑ²œ€Ê€·)	(a1)    (a)	(b)		ºÇÄã			ºÇÄã
+	¹â€€		Æ±€ž			(a1)(a2)(a)			ºÇÄã¢ªºÇ¹â		ºÇÄã
+	¹â€€		Äã€€			    (a2)(a)			ºÇÄã¢ªºÇ¹â		ºÇÄã
+	Æ±€ž		¹â€€			(a1)(a2)(a)	(b)		ºÇÄã			ºÇÄã
+	Æ±€ž		Æ±€ž(ÊÑ²œ€Ê€·)	(a1)    (a)			ºÇÄã¢ªÊÑ²œ€Ê€·	ºÇÄã¢ª¡©
+	Æ±€ž		Äã€€								ÊÑ²œ€Ê€·		ÊÑ²œ€Ê€·
+	Äã€€		¹â€€			(a1)(a2)(a)	(b)		ºÇÄã			ºÇÄã
+	Äã€€		Æ±€ž			(a1)    (a)			ºÇÄã¢ªÊÑ²œ€Ê€·	ºÇÄã¢ª¡©
+	Äã€€		Äã€€(ÊÑ²œ€¢€ê)						ÊÑ²œ€Ê€·		ÊÑ²œ€Ê€·
+	Äã€€		Äã€€(ÊÑ²œ€Ê€·)						ÊÑ²œ€Ê€·		ÊÑ²œ€Ê€·
+
+(b) ÊÑ¹¹žå€ÎžœºßÍ¥ÀèÅÙ€¬¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹·ÐÍ³€ÇÍ¥ÀèÅÙ€ò·ÑŸµ€·€Æ€€€Ê€€Ÿì¹ç
+
+(b-) ÊÑ¹¹žå€ÎžœºßÍ¥ÀèÅÙ€¬¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹·ÐÍ³€ÇÍ¥ÀèÅÙ€ò·ÑŸµ€·€Æ€€€ëŸì¹ç
+
+¡ûž¡Æ€²áÄø€Î¥á¥â
+
+¡ùÍ¥ÀèÅÙŸåžÂ€Ë€·€Ü€Ã€Æ¹Í€š€ë
+
+Í¥ÀèÅÙŸåžÂ€Ç€Ï¡€Í¥ÀèÅÙ€¬ÊÑ²œ€¹€ë€Î€Ï¡€°Ê²Œ€ÎŸõ¶·¡¥
+
+¡Š¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€¿€È€­
+		Í¥ÀèÅÙ€¬Ÿå€¬€ë¡Ê€Þ€¿€Ï¡€ÊÑ€ï€é€Ê€€¡Ë
+		¢ª »ØÅŠ£²€ÎŸõ¶·€ò¹Í€š€ë€È¡€Æ±Í¥ÀèÅÙÆâ€Ç€ÏºÇ¹âÍ¥Àèœç°Ì€Ç€¢€ë€Ù€­
+
+¡Š¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯²òœü€·€¿€È€­
+		Í¥ÀèÅÙ€¬²Œ€¬€ë¡Ê€Þ€¿€Ï¡€ÊÑ€ï€é€Ê€€¡Ë
+		¢ª ÂŸ€ÎÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€€ëŸì¹ç€Ë€Ï¡€
+				Æ±Í¥ÀèÅÙÆâ€Ç€ÏºÇ¹âÍ¥Àèœç°Ì€Ç€¢€ë€Ù€­
+		¢ª €œ€Š€Ç€Ê€€Ÿì¹ç€Ë€Ï¡€€É€Á€é€Ç€âÌäÂê€Ê€€€È»×€ï€ì€ë€¬¡€
+				stack resource policy €òŒÂžœ€¹€ë€Ë€Ï¡€ºÇ¹âÍ¥Àèœç°Ì€Ç€¢€ë€Ù€­
+
+²ÝÂê¡§€¢€ë¥¿¥¹¥¯€¬¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯²òœü€·¡€ÂŸ€Î¥¿¥¹¥¯€¬¥í¥Ã¥¯€¹€ë»þ
+		Ÿå€Î£²€Ä€¬Æ±»þ€Ëµ¯€³€ë
+
+	¢ª ÂÔ€ÁŸõÂÖ€«€éŒÂ¹Ô²ÄÇœŸõÂÖ€Ë€Ê€ë»þ€Ï¡€ºÇ¹âÍ¥Àèœç°Ì€Ç€¢€ëÉ¬Í×€¬€Ê€€
+		¥í¥Ã¥¯€òŒèÆÀ€¹€ë¡ÖÂŸ€Î¥¿¥¹¥¯¡×€ÏºÇÄãÍ¥Àèœç°Ì€È€¹€ë
+
+	žÀ€€Ž¹€š€ë€È¡€
+		ÂŸ¥¿¥¹¥¯€Ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€µ€»€¿»þ€Ï¡€ºÇÄãÍ¥Àèœç°Ì€È€¹€ë
+
+¡Š¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€¬œéŽü²œ€µ€ì€¿»þ
+		¥í¥Ã¥¯€·€Æ€€€¿¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€¬²Œ€¬€ë¡Ê€Þ€¿€Ï¡€ÊÑ€ï€é€Ê€€¡Ë
+
+¡Šchg_pri€¬È¯¹Ô€µ€ì€¿»þ
+		¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€€ë»þ
+			¥Ù¡Œ¥¹Í¥ÀèÅÙ€òŸå€²€ë»þ
+				¥Ù¡Œ¥¹Í¥ÀèÅÙ€¬¡€¥í¥Ã¥¯€·€Æ€€€ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎÍ¥ÀèÅÙŸå
+				žÂ€è€ê€â¹â€¯€Ê€ë€³€È€Ï€Ê€€€¿€á¡€¥Ù¡Œ¥¹Í¥ÀèÅÙ€òŸå€²€¿€³
+				€È€Ç¡€žœºßÍ¥ÀèÅÙ€ÎÊÑ¹¹€Ï€Ê€€¡¥
+			¥Ù¡Œ¥¹Í¥ÀèÅÙ€ò²Œ€²€ë»þ
+				€œ€ì€Þ€Ç€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ€¬¡€¥í¥Ã¥¯€·€Æ€€€ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹
+				€ÎÍ¥ÀèÅÙŸåžÂ€è€ê€â¹â€€€³€È€Ï€Ê€€€¿€á¡€¥Ù¡Œ¥¹Í¥ÀèÅÙ€ò²Œ
+				€²€¿€³€È€Ç¡€žœºßÍ¥ÀèÅÙ€ÎÊÑ¹¹€Ï€Ê€€¡¥
+
+			¢ª ¥í¥Ã¥¯€·€Æ€€€ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎÍ¥ÀèÅÙŸåžÂ€Ï¡€ÊÑ¹¹Á°žå€Î¥Ù¡Œ
+			¥¹Í¥ÀèÅÙ€ÈÆ±€ž€«€œ€ì€è€ê¹â€€€¿€á¡€žœºßÍ¥ÀèÅÙ€ÎÊÑ¹¹€Ï€Ê€€¡¥
+			€è€Ã€Æ¡€Í¥Àèœç°Ì€ÏÊÑ¹¹€·€Ê€€€Î€¬ÁÇÄŸ¡¥
+
+			¡úÍ¥ÀèÅÙ·ÑŸµ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€¬€¢€ë€ÈÀ®€êÎ©€¿€Ê€¯€Ê€ë¡¥
+
+		¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€€Ê€€»þ€Ï¡€ÄÌŸï€Î¿¶€ëÉñ€€€È°ìÃ×€¹€Ù€­
+				€Ä€Þ€ê¡€ºÇÄãÍ¥Àèœç°Ì€È€¹€ë
+
+¡Š¥¿¥¹¥¯€¬œªÎ»€·€¿»þ¡Š¶¯À©œªÎ»€µ€ì€¿»þ
+		¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€€ì€Ð¡€¥í¥Ã¥¯²òœü€¹€ë€³€È€Ë€Ê€ë€¬¡€
+		¥¿¥¹¥¯€¬œªÎ»€·€Æ€·€Þ€Š€Î€Ç¡€Í¥Àèœç°Ì€Ï°ÕÌ£€¬€Ê€¯€Ê€ë
+
+¡ûŒÂÁõ€Ëžþ€±€Æ€Î»ÅÍÍ€ÎŸÜºÙž¡Æ€¡ÊžÅ€€¡Ë
+
+ŠÌITRON4.0»ÅÍÍ€Îž·Ì©€ÊÍ¥ÀèÅÙÀ©žæµ¬Â§€Ë€ª€€€Æ€Ï¡€¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€ò¡€
+Ÿï€Ë¡€Œ¡€ÎÍ¥ÀèÅÙ€ÎºÇ¹âÃÍ€Ë°ìÃ×€¹€ë€è€Š€ËÀßÄê€¹€ë¡¥
+
+(1) ¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ
+
+(2) ¥¿¥¹¥¯€¬TA_INHERITÂ°À­€Î¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€€ëŸì¹ç¡€€œ€ì€é
+	€Î¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯€òÂÔ€Ã€Æ€€€ë¥¿¥¹¥¯€ÎÃæ€Ç¡€ºÇ€â¹â€€žœºßÍ¥Àè
+	ÅÙ€ò»ý€Ä¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ
+
+(3) ¥¿¥¹¥¯€¬TA_CEILINGÂ°À­€Î¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€€ëŸì¹ç¡€€œ€ì€é
+	€Î¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹Ãæ€Ç¡€ºÇ€â¹â€€ŸåžÂÍ¥ÀèÅÙ€ò»ý€Ä¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎŸåžÂ
+	Í¥ÀèÅÙ
+
+€³€ì€é€ÎÍ¥ÀèÅÙ€ò¡€€³€³€Ç€Ï¡€žœºßÍ¥ÀèÅÙ€ò·èÄê€¹€ëÍ×ÁÇ€È€Ê€ë€È€€€Š°ÕÌ£€Ç¡€
+Í×ÁÇÍ¥ÀèÅÙ€ÈžÆ€Ö¡¥
+
+œ€Àµ»ÅÍÍ(A)€Ë€è€ê¡€(2)€È(3)€ÎÍ×ÁÇÍ¥ÀèÅÙ€Ï¡€Æ±Í¥ÀèÅÙÆâ€ÎºÇ¹âÍ¥Àèœç°Ì€È€ß
+€Ê€¹€³€È€Ë€Ê€ë¡¥
+
+€Þ€¿(2)€Ë€ª€€€Æ¡€TA_INHERITÂ°À­€Î¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎÂÔ€Á¥­¥å¡Œ€Ï¥¿¥¹¥¯€ÎÍ¥
+ÀèÅÙœç€Ç€¢€ë€¿€á¡€ºÇ€â¹â€€žœºßÍ¥ÀèÅÙ€ò»ý€Ä¥¿¥¹¥¯€Ï¡€ÂÔ€Á¥­¥å¡Œ€ÎÀèÆ¬€Î
+¥¿¥¹¥¯€Ç€¢€ë¡¥€Ä€Þ€ê¡€(2)€ÎÍ×ÁÇÍ¥ÀèÅÙ€òµá€á€ë€¿€á€Ë¡€ÂÔ€Á¥­¥å¡Œ€ò¥¹¥­¥ã
+¥ó€¹€ëÉ¬Í×€Ï€Ê€€¡¥
+**********************************************************************
Index: /doc/ovrhdr_memo.txt
===================================================================
--- /doc/ovrhdr_memo.txt	(revision 7)
+++ /doc/ovrhdr_memo.txt	(revision 7)
@@ -0,0 +1,500 @@
+													TOPPERS Confidential
+		TOPPERS¥×¥í¥ž¥§¥¯¥È ¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¥á¥â
+		¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€ËŽØ€¹€ëÀß·×¥á¥â
+
+		ºîÀ®ŒÔ: ¹âÅÄ¹­ŸÏ¡ÊÌŸžÅ²°Âç³Ø¡Ë
+		ºÇœª¹¹¿·: 2014Ç¯9·î28Æü
+
+¡û¥á¥â€Î°ÌÃÖÉÕ€±
+
+€³€Î¥É¥­¥å¥á¥ó¥È€Ï¡€TOPPERS/ASP¥«¡Œ¥Í¥ë€Î¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éµ¡Çœ³ÈÄ¥€ËŽØ
+€¹€ëÀß·×¥á¥â€Ç€¢€ë¡¥
+
+¡û¥Ç¡Œ¥¿·¿€ÈÄê¿ô€ÎÄêµÁ
+
+¥×¥í¥»¥Ã¥µ»þŽÖ€òÉœžœ€¹€ë¥Ç¡Œ¥¿·¿OVRTIM€ÎÄêµÁ€ò¡€kernel.h€ËŽÞ€á€ë¡¥
+
+----------------------------------------
+typedef	ulong_t		OVRTIM;		/* ¥×¥í¥»¥Ã¥µ»þŽÖ */
+----------------------------------------
+
+¥×¥í¥»¥Ã¥µ»þŽÖ€Ë»ØÄê€Ç€­€ëºÇÂçÃÍ€Ï¡€¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô¡Êtarget_kernel.h€Þ
+€¿€Ï€œ€³€«€é¥€¥ó¥¯¥ë¡Œ¥É€µ€ì€ë¥Õ¥¡¥€¥ë¡Ë€ÇÄêµÁ€¹€ë€â€Î€È€¹€ë€¬¡€¥Ç¥Õ¥©
+¥ë¥È€ÎÄêµÁ€òkernel.h€ËŽÞ€á€ë¡¥
+
+----------------------------------------
+#ifndef TMAX_OVRTIM
+#define TMAX_OVRTIM		ULONG_MAX
+#endif /* TMAX_OVRTIM */
+----------------------------------------
+
+€Þ€¿¡€¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€Î¥Ç¡Œ¥¿·¿OVRHDR€ÎÄêµÁ€ò¡€kernel.h€ËŽÞ€á€ë¡¥
+
+----------------------------------------
+typedef void	(*OVRHDR)(ID tskid, intptr_t exinf);
+----------------------------------------
+
+€³€ÎÂŸ€Ë¡€¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éµ¡Çœ€Î¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎÀëžÀ€ÈŽØÏ¢€¹€ëÄê¿ô€Î
+ÄêµÁ€ò¡€kernel€ËŽÞ€á€ë¡¥
+
+¡ûÍÑ€€€ë¥Ï¡Œ¥É¥Š¥§¥¢»ñž»€È¥µ¥Ý¡Œ¥È€Ç€­€Ê€€Ÿì¹ç€ÎÁŒÃÖ
+
+¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€òŒÂžœ€¹€ë€Ë¡€¥¿¥€¥à¥Æ¥£¥Ã¥¯€Î³ä¹þ€ß€òÈ¯Àž€µ€»€ë€Î€È
+€ÏÊÌ€Î¥¿¥€¥Þ¡Ê°Ê²Œ¡€€³€ì€ò¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÈžÆ€Ö¡Ë€òÍÑ€€€ë¡¥€œ€Î€¿€á¡€
+¥¿¡Œ¥²¥Ã¥È€Ë€è€Ã€Æ€Ï¡€¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€ò¥µ¥Ý¡Œ¥È€Ç€­€Ê€€Ÿì¹ç€â¹Í€š€é
+€ì€ë¡¥€Þ€¿¡€¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€ò¥µ¥Ý¡Œ¥È€¹€ë€³€È€Ç¡€¥¿¥¹¥¯ÀÚŽ¹€š€Ë€«€«
+€ë¥ª¡Œ¥Ð¥Ø¥Ã¥É€¬ÌäÂê€Ë€Ê€ëŸì¹ç€â¹Í€š€é€ì€ë¡¥
+
+€œ€³€Ç¡€¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€ò¥µ¥Ý¡Œ¥È€Ç€­€ëŸì¹ç€Ë€Ï¡€¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€Ë
+€ª€€€Æ¡€TOPPERS_TARGET_SUPPORT_OVRHDR€ò¥Þ¥¯¥íÄêµÁ€¹€ë€â€Î€È€¹€ë¡¥
+
+¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éµ¡Çœ³ÈÄ¥€Îkernel.h€Ç€Ï¡€TOPPERS_TARGET_SUPPORT_OVRHDR
+€¬¥Þ¥¯¥íÄêµÁ€µ€ì€Æ€€€ì€Ð¡€TOPPERS_SUPPORT_OVRHDR€òÄêµÁ€¹€ë¡¥
+
+----------------------------------------
+#ifdef TOPPERS_TARGET_SUPPORT_OVRHDR
+#define TOPPERS_SUPPORT_OVRHDR			/* ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éµ¡Çœ³ÈÄ¥ */
+#endif /* TOPPERS_TARGET_SUPPORT_OVRHDR */
+----------------------------------------
+
+¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éµ¡Çœ€Ï¡€TOPPERS_SUPPORT_OVRHDR€¬ÄêµÁ€µ€ì€Æ€€€ëŸì¹ç€Î
+€ßÁÈ€ß¹þ€à¡¥€³€ì€Ë€è€ê¡€¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éµ¡Çœ³ÈÄ¥€ò»ÈÍÑ€·¡€¥¿¡Œ¥²¥Ã¥È
+°ÍÂžÉô€¬¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€ò¥µ¥Ý¡Œ¥È€·€Æ€€€ëŸì¹ç€Î€ß¡€¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É
+¥éµ¡Çœ€¬ÁÈ€ß¹þ€Þ€ì€ë€³€È€Ë€Ê€ë¡¥
+
+¡û¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€ËŽØÏ¢€¹€ë¥Ç¡Œ¥¿¹œÂ€
+
+¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€òŒÂÁõ€¹€ë€¿€á€Ë¡€TCB€Ë¡€»Ä€ê¥×¥í¥»¥Ã¥µ»þŽÖ€òÉœ€¹¥Õ¥£¡Œ
+¥ë¥Éleftotm€òÀß€±€ë¡Êtask.h¡Ë¡¥
+
+----------------------------------------
+typedef struct task_control_block {
+	...
+	OVRTIM	leftotm;				/* »Ä€ê¥×¥í¥»¥Ã¥µ»þŽÖ */
+	...
+} TCB;
+----------------------------------------
+
+¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€Ê€€ŸõÂÖ€Î»þ€Ï¡€leftotm€ò0€ËÀßÄê€¹€ë€³€È
+€È€·¡€make_dormant€ÎÃæ€Ç0€ËœéŽü²œ€¹€ë¡Êtask.c¡Ë¡¥
+
+----------------------------------------
+void
+make_dormant(TCB *p_tcb)
+{
+	...
+	p_tcb->leftotm = 0U;
+	...
+}
+----------------------------------------
+
+¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€ËÂÐ€·€Æ€Ï¡€ŽÉÍý¥Ö¥í¥Ã¥¯€ÏÉ¬Í×€Ê€¯¡€DEF_OVR€ÇÄêµÁ€·€¿
+ŸðÊó€ò³ÊÇŒ€·€¿œéŽü²œ¥Ö¥í¥Ã¥¯€Î€ß€òÍÑ°Õ€¹€ë¡¥œéŽü²œ¥Ö¥í¥Ã¥¯€â¡€Ã±°ì€ÎÍ×
+ÁÇ€ÇœœÊ¬€Ç€¢€ê¡€ÇÛÎó€Ç€¢€ëÉ¬Í×€Ï€Ê€€¡Êoverrun.h¡Ë¡¥
+
+----------------------------------------
+typedef struct overrun_handler_initialization_block {
+	ATR			ovratr;			/* ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éÂ°À­ */
+	OVRHDR		ovrhdr;			/* ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€Îµ¯Æ°ÈÖÃÏ */
+} OVRINIB;
+----------------------------------------
+extern const OVRINIB	ovrinib;
+----------------------------------------
+
+¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€¬Æ°ºîÃæ€«€òŒš€¹¥Õ¥é¥°€È€·€Æ¡€boot_t·¿€ÎÊÑ¿ô
+ovrtimer_flag€òÍÑ°Õ€¹€ë¡Êoverrun.h¡€overrun.c¡Ë¡¥
+
+----------------------------------------
+extern boot_t	ovrtimer_flag;
+----------------------------------------
+
+¥·¥ó¥°¥ë¥×¥í¥»¥Ã¥µ€ÎŸì¹ç€Ë€Ï¡€¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€¬Æ°ºîÃæ€«€Ï¡€Œ¡€ÎÊýË¡€Ç
+ÈœÊÌ€¹€ë€³€È€¬€Ç€­€ë¡¥
+
+	¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€Ç€Ï¡€(p_runtsk->leftotm > 0U)€Î»þ€Î€ßÆ°ºî€·€Æ€€€ë¡¥
+	Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€Ç€Ï¡€Æ°ºî€·€Æ€€€Ê€€¡¥
+
+€œ€Î€¿€á¡€€³€Î¥Õ¥é¥°€òÍÑ€€€Ê€€ŒÂÁõ€â²ÄÇœ€Ç€¢€ë€¬¡€¥Þ¥ë¥Á¥×¥í¥»¥Ã¥µ€Ø€Î
+³ÈÄ¥À­€ä¥¿¡Œ¥²¥Ã¥È°ÍÂžÀ­€ò²Œ€²€ë€¿€á€Ë¡€€³€ì€òÍÑ€€€ëŒÂÁõ€È€·€Æ€€€ë¡ÊŒÂ
+ºÝ¡€Mac OS X¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€Ç€Ï¡€€³€ì€ò³èÍÑ€·€Æ€€€ë¡Ë¡¥
+
+¡û»Ä€ê¥×¥í¥»¥Ã¥µ»þŽÖ€ÎÊÝÂž¡¿Éüµ¢œèÍý€ÎÆâÍÆ
+
+¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã€ª€è€Ó³ä¹þ€ßœèÍý¡¿CPUÎã³°œèÍý€ÎœÐÆþžý€Ç¡€¥¿¥¹¥¯€Î»Ä€ê¥×¥í
+¥»¥Ã¥µ»þŽÖ€òÊÝÂž¡¿Éüµ¢€¹€ëÉ¬Í×€¬€¢€ë¡¥¶ñÂÎÅª€Ë€Ï¡€°Ê²Œ€Î€è€Š€ÊœèÍý€¬É¬
+Í×€Ç€¢€ë¡¥
+
+(a) dispatch€Ø€ÎÆþžý
+
+ovrtimer_flag€¬true€Ç€¢€ì€Ð¡Ê€Þ€¿€Ï¡€p_runtsk->leftotm€¬0€Ç€Ê€±€ì€Ð¡Ë¡€
+¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€òÄä»ß€µ€»¡€»Ä€ê¥×¥í¥»¥Ã¥µ»þŽÖ€òp_runtsk->leftotm€Ë³ÊÇŒ
+€¹€ë¡¥»Ä€ê¥×¥í¥»¥Ã¥µ»þŽÖ€¬0¡Ê€Þ€¿€Ï€œ€ìÌ€Ëþ¡Ë€Ë€Ê€Ã€Æ€€€¿Ÿì¹ç€Ë€Ï¡€
+p_runtsk->leftotm€Ë1€ò³ÊÇŒ€¹€ë¡¥
+
+(b) dispatch€«€é€ÎœÐžý
+
+¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎžÆœÐ€·Á°€Ë¡€p_runtsk->leftotm€¬0€Ç€Ê€±€ì€Ð¡€»Ä
+€ê¥×¥í¥»¥Ã¥µ»þŽÖ€òp_runtsk->leftotm€È€·€Æ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€òÆ°ºî³«»Ï€¹€ë¡¥
+
+(c) ³ä¹þ€ßœèÍý¡¿CPUÎã³°œèÍý€ÎÆþžý
+
+ovrtimer_flag€¬true€Ç€¢€ì€Ð¡€¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€òÄä»ß€µ€»¡€»Ä€ê¥×¥í¥»¥Ã¥µ
+»þŽÖ€òp_runtsk->leftotm€Ë³ÊÇŒ€¹€ë¡¥»Ä€ê¥×¥í¥»¥Ã¥µ»þŽÖ€¬0¡Ê€Þ€¿€Ï€œ€ìÌ€
+Ëþ¡Ë€Ë€Ê€Ã€Æ€€€¿Ÿì¹ç€Ë€Ï¡€p_runtsk->leftotm€Ë1€ò³ÊÇŒ€¹€ë¡¥
+
+€³€ÎœèÍý€Ï¡€¥«¡Œ¥Í¥ëŽÉÍý€Î³ä¹þ€ß€ò€¹€Ù€Æ¶Ø»ß€·€¿ŸõÂÖ€Ç¹Ô€ŠÉ¬Í×€¬€¢€ë¡¥
+³ä¹þ€ß¡¿CPUÎã³°È¯ÀžÄŸžå€Ë€¹€Ù€Æ€Î³ä¹þ€ß€¬¶Ø»ß€µ€ì€Ê€€¥×¥í¥»¥Ã¥µ€Ç€Ï¡€³ä
+¹þ€ß€ò¶Ø»ß€·€¿žå€Ë€³€ÎœèÍý€ò¹Ô€ŠÉ¬Í×€¬€¢€ë¡¥
+
+(d) ³ä¹þ€ßœèÍý¡¿CPUÎã³°œèÍý€ÎœÐžý
+
+¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€ËÌá€ëŸì¹ç€Ë¡€p_runtsk->leftotm€¬0€Ç€Ê€±€ì€Ð¡€»Ä€ê¥×
+¥í¥»¥Ã¥µ»þŽÖ€òp_runtsk->leftotm€È€·€Æ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€òÆ°ºî³«»Ï€¹€ë¡¥
+
+(e) ¥¿¥¹¥¯€ÎœªÎ»»þ
+
+ovrtimer_flag€¬true€Ç€¢€ì€Ð¡Ê€Þ€¿€Ï¡€p_runtsk->leftotm€¬0€Ç€Ê€±€ì€Ð¡Ë¡€
+¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€òÄä»ß€µ€»€ë¡¥»Ä€ê¥×¥í¥»¥Ã¥µ»þŽÖ€òp_runtsk->leftotm€Ë³Ê
+ÇŒ€¹€ëÉ¬Í×€Ï€Ê€€¡Êmake_dormant€Ç0€¬³ÊÇŒ€µ€ì€ë¡Ë¡¥
+
+(f) ¥¿¥¹¥¯€ÎŒÂ¹Ô³«»Ï»þ
+
+p_runtsk->leftotm€¬0€Ç€Ê€±€ì€Ð¡€»Ä€ê¥×¥í¥»¥Ã¥µ»þŽÖ€òp_runtsk->leftotm€È
+€·€Æ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€òÆ°ºî³«»Ï€¹€ë¡¥
+
+¡û¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€Î¥€¥ó¥¿¥Õ¥§¡Œ¥¹
+
+¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éµ¡Çœ€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€Ç€Ï¡€¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éÍÑ€Î¥¿
+¥€¥Þ¡Ê°Ê²Œ¡€¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÈžÆ€Ö¡Ë€òÁàºî€¹€ë€¿€á€Îµ¡Çœ€òÄó¶¡€¹€ë¡¥
+
+€Þ€º¡€Œ¡€ÎÄê¿ô€ò¥Þ¥¯¥íÄêµÁ€¹€ë¡¥
+
+(1) TMAX_OVRTIM
+
+¥×¥í¥»¥Ã¥µ»þŽÖ€È€·€Æ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éÍÑ¥¿¥€¥Þ€ËÀßÄê€Ç€­€ëºÇÂç€ÎÃÍ¡¥Ã±
+°Ì€Ï¥Þ¥€¥¯¥íÉÃ€È€¹€ë¡¥¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€ÇÄêµÁ€·€Ê€€Ÿì¹ç€Ë€Ï¡€kernel.h€Ç
+ULONG_MAX€ËÄêµÁ€¹€ë¡¥
+
+€Þ€¿¡€Œ¡€Î5€Ä€ÎŽØ¿ô€òÍÑ°Õ€¹€ë¡¥
+
+(1) void target_ovrtimer_initialize(intptr_t exinf)
+
+¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÎœéŽü²œœèÍý€ò¹Ô€Š¡¥¥¿¥€¥Þ€ÎÆ°ºî³«»Ï€Ï¹Ô€ï€Ê€€¡¥
+
+€³€ÎŽØ¿ô€Ï¡€target_timer.cfgÃæ€Ëµ­œÒ€¹€ëÀÅÅªAPI€Ë€è€ê¡€œéŽü²œ¥ë¡Œ¥Á¥ó€È
+€·€Æ¥«¡Œ¥Í¥ë€ËÅÐÏ¿€¹€ë€³€È€òÁÛÄê€·€Æ€€€ë¡¥
+
+(2) void target_ovrtimer_terminate(intptr_t exinf)
+
+¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÎÄä»ßœèÍý€ò¹Ô€Š¡¥
+
+€³€ÎŽØ¿ô€Ï¡€target_timer.cfgÃæ€Ëµ­œÒ€¹€ëÀÅÅªAPI€Ë€è€ê¡€œªÎ»œèÍý¥ë¡Œ¥Á¥ó
+€È€·€Æ¥«¡Œ¥Í¥ë€ËÅÐÏ¿€¹€ë€³€È€òÁÛÄê€·€Æ€€€ë¡¥
+
+(3) void target_ovrtimer_start(OVRTIM ovrtim)
+
+¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ò¡€ovrtim€Ç»ØÄê€·€¿»þŽÖ€¬·Ð²á€·€¿€é³ä¹þ€ß€¬È¯Àž€¹€ë€è
+€Š€ËÀßÄê€·¡€Æ°ºî³«»Ï€¹€ë¡¥ovrtim€ÎÃ±°Ì€Ï¥Þ¥€¥¯¥íÉÃ€È€¹€ë¡¥
+
+(4) OVRTIM target_ovrtimer_stop(void)
+
+¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€òÄä»ß€·¡€¥¿¥€¥Þ€Î»Ä€ê»þŽÖ€òÆÉ€ßœÐ€¹¡¥€â€·»Ä€ê»þŽÖ€¬
+0¡Ê€Þ€¿€Ï€œ€ìÌ€Ëþ¡Ë€Ë€Ê€Ã€Æ€€€¿Ÿì¹ç€Ë€Ï¡€1€òÊÖ€¹¡¥€Þ€¿¡€¥ª¡Œ¥Ð¥é¥ó¥¿¥€
+¥Þ€«€é€Î³ä¹þ€ß€ò¥¯¥ê¥¢€¹€ë¡¥
+
+(5) OVRTIM target_ovrtimer_get_current(void)
+
+¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€Î»Ä€ê»þŽÖ€òÆÉ€ßœÐ€¹¡¥€â€·»Ä€ê»þŽÖ€¬0¡Ê€Þ€¿€Ï€œ€ìÌ€Ëþ¡Ë
+€Ë€Ê€Ã€Æ€€€¿Ÿì¹ç€Ë€Ï¡€0€òÊÖ€¹¡¥¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€«€é€Î³ä¹þ€ß€Ï¥¯¥ê¥¢€·€Ê
+€€¡¥
+
+¡û»Ä€ê¥×¥í¥»¥Ã¥µ»þŽÖ€ÎÊÝÂž¡¿Éüµ¢€ÎŒÂÁõ¡Ê¥¿¡Œ¥²¥Ã¥ÈÈó°ÍÂžÉô¡Ë
+
+Á°µ­€ÎœèÍýÆâÍÆ€ÎÃæ€Ç¡€(a)€È(c)€Ï¡€žÆœÐ€·Ÿò·ï€¬°ã€Š€À€±€ÇœèÍýÆâÍÆ€ÏÆ±°ì
+€Ç€¢€ë€¿€á¡€€³€ì€òŒÂžœ€¹€ëŽØ¿ôovrtimer_stop€ò¥¿¡Œ¥²¥Ã¥ÈÈó°ÍÂžÉô€ËÀß€±¡€
+¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€Î³ºÅö²Õœê€«€éžÆ€ÓœÐ€¹€è€Š€Ë€¹€ë¡¥
+
+----------------------------------------
+void
+ovrtimer_stop(void)
+{
+	if (ovrtimer_flag) {
+		assert(p_runtsk->leftotm > 0U);
+		p_runtsk->leftotm = target_ovrtimer_stop();
+		ovrtimer_flag = false;
+	}
+}
+----------------------------------------
+
+€Þ€¿(b),(d),(f)€â¡€žÆœÐ€·Ÿò·ï€¬°ã€Š€À€±€ÇœèÍýÆâÍÆ€ÏÆ±°ì€Ç€¢€ë€¿€á¡€€³€ì
+€òŒÂžœ€¹€ëŽØ¿ôovrtimer_start€ò¥¿¡Œ¥²¥Ã¥ÈÈó°ÍÂžÉô€ËÀß€±¡€¥¿¡Œ¥²¥Ã¥È°ÍÂž
+Éô€Î³ºÅö²Õœê€«€éžÆ€ÓœÐ€¹€è€Š€Ë€¹€ë¡¥
+
+----------------------------------------
+void
+ovrtimer_start(void)
+{
+	if (p_runtsk->leftotm > 0U) {
+		target_ovrtimer_start(p_runtsk->leftotm);
+		ovrtimer_flag = true;
+	}
+}
+----------------------------------------
+
+(e)€Ï¡€»Ä€ê¥×¥í¥»¥Ã¥µ»þŽÖ€òp_runtsk->leftotm€Ë³ÊÇŒ€¹€ëÉ¬Í×€Ï€Ê€€ÅÀ€Ç
+(a),(c)€ÈœèÍýÆâÍÆ€¬°Û€Ê€ë€¬¡€p_runtsk->leftotm€Ïmake_dormant€Ç0€ËœéŽü²œ
+€µ€ì€ë€¿€á¡€make_dormant€òžÆ€ÓœÐ€¹Á°€Ç€¢€ì€Ð¡€ovrtimer_stop€òÎ®ÍÑ€¹€ë€³
+€È€¬€Ç€­€ë¡¥€œ€³€Ç¡€ext_tsk€ËŒ¡€Îœ€Àµ€ò²Ã€š€ë¡Êtask_manage.c¡Ë¡¥
+
+----------------------------------------
+ER
+ext_tsk(void)
+{
+	...
+	(void) make_non_runnable(p_runtsk);
+|#ifdef TOPPERS_SUPPORT_OVRHDR
+|	ovrtimer_stop();
+|#endif /* TOPPERS_SUPPORT_OVRHDR */
+	make_dormant(p_runtsk);
+	...
+}
+----------------------------------------
+
+¡û»Ä€ê¥×¥í¥»¥Ã¥µ»þŽÖ€ÎÊÝÂž¡¿Éüµ¢€ÎŒÂÁõ¡Ê¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô¡Ë
+
+(a) dispatch€Ø€ÎÆþžý
+
+----------------------------------------
+void
+dispatch(void)
+{
+|#ifdef TOPPERS_SUPPORT_OVRHDR
+|	ovrtimer_stop();					/* ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÎÄä»ß */
+|#endif /* TOPPERS_SUPPORT_OVRHDR */
+	¥¹¥¯¥é¥Ã¥Á¥ì¥ž¥¹¥¿€òœü€¯€¹€Ù€Æ€Î¥ì¥ž¥¹¥¿€ò¥¹¥¿¥Ã¥¯€ËÊÝÂž€¹€ë
+	...
+}
+----------------------------------------
+
+(b) dispatch€«€é€ÎœÐžý
+
+----------------------------------------
+void
+dispatch(void)
+{
+	...
+
+  dispatch_r:
+	¥¹¥¯¥é¥Ã¥Á¥ì¥ž¥¹¥¿€òœü€¯€¹€Ù€Æ€Î¥ì¥ž¥¹¥¿€ò¥¹¥¿¥Ã¥¯€«€éÉüµ¢€¹€ë
+|#ifdef TOPPERS_SUPPORT_OVRHDR
+|	ovrtimer_start();					/* ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÎÆ°ºî³«»Ï */
+|#endif /* TOPPERS_SUPPORT_OVRHDR */
+	calltex(); ¡Ä (*b)
+}
+----------------------------------------
+
+(c) ³ä¹þ€ßœèÍý¡¿CPUÎã³°œèÍý€ÎÆþžý
+
+³ä¹þ€ßœèÍý¡¿CPUÎã³°œèÍý€ÎÆþžý€ÏŒ¡€ÎÄÌ€ê€Ëœ€Àµ€¹€ë¡¥
+
+----------------------------------------
+void
+<³ä¹þ€ß€ÎœÐÆþžýœèÍý>(void)
+{
+	¥¹¥¯¥é¥Ã¥Á¥ì¥ž¥¹¥¿€ò¥¹¥¿¥Ã¥¯€ËÊÝÂž€¹€ë
+	if (¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€Ç³ä¹þ€ßÈ¯Àž) {
+|#ifdef TOPPERS_SUPPORT_OVRHDR
+|		¡ÊŸ¯€Ê€¯€È€â¡Ë¥«¡Œ¥Í¥ëŽÉÍý€Î³ä¹þ€ß€ò¶Ø»ß€·€¿ŸõÂÖ€Ë€¹€ë
+|		ovrtimer_stop();				/* ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÎÄä»ß */
+|		¡ÊÉ¬Í×€Ê€é¡Ëžµ€ÎŸõÂÖ€ËÌá€¹
+|#endif /* TOPPERS_SUPPORT_OVRHDR */
+		¥¹¥¿¥Ã¥¯€òÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ€Î¥¹¥¿¥Ã¥¯€ËÀÚ€êŽ¹€š¡€
+								Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€ËÀÚ€êŽ¹€š€ë
+	}
+	...
+}
+----------------------------------------
+void
+<CPUÎã³°€ÎœÐÆþžýœèÍý>(void)
+{
+	¥¹¥¯¥é¥Ã¥Á¥ì¥ž¥¹¥¿€ò¥¹¥¿¥Ã¥¯€ËÊÝÂž€¹€ë
+	if (¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€ÇCPUÎã³°È¯Àž) {
+|#ifdef TOPPERS_SUPPORT_OVRHDR
+|		¡ÊŸ¯€Ê€¯€È€â¡Ë¥«¡Œ¥Í¥ëŽÉÍý€Î³ä¹þ€ß€ò¶Ø»ß€·€¿ŸõÂÖ€Ë€¹€ë
+|		ovrtimer_stop();				/* ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÎÄä»ß */
+|		¡ÊÉ¬Í×€Ê€é¡Ëžµ€ÎŸõÂÖ€ËÌá€¹
+|#endif /* TOPPERS_SUPPORT_OVRHDR */
+		¥¹¥¿¥Ã¥¯€òÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ€Î¥¹¥¿¥Ã¥¯€ËÀÚ€êŽ¹€š¡€
+								Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€ËÀÚ€êŽ¹€š€ë
+	}
+	...
+}
+----------------------------------------
+
+(d) ³ä¹þ€ßœèÍý¡¿CPUÎã³°œèÍý€ÎœÐžý
+
+³ä¹þ€ßœèÍý¡¿CPUÎã³°œèÍý€ÎœÐžý€ÏŒ¡€ÎÄÌ€ê€Ëœ€Àµ€¹€ë¡¥
+
+----------------------------------------
+void
+<³ä¹þ€ß€ÎœÐÆþžýœèÍý>(void)
+{
+	...
+
+			  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 */
+	}
+	...
+}
+----------------------------------------
+void
+<CPUÎã³°€ÎœÐÆþžýœèÍý>(void)
+{
+	...
+
+			  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Îã³°œèÍý€«€é€Î¥ê¥¿¡Œ¥ó
+}
+----------------------------------------
+
+(e) ¥¿¥¹¥¯€ÎœªÎ»»þ
+
+¥¿¡Œ¥²¥Ã¥ÈÈó°ÍÂžÉô€Îext_tsk€ÇÂÐ±þ€·€¿¡¥
+
+(f) ¥¿¥¹¥¯€ÎŒÂ¹Ô³«»Ï»þ
+
+----------------------------------------
+void
+activate_context(TCB *p_tcb)
+{
+	...
+
+  start_r:
+|#ifdef TOPPERS_SUPPORT_OVRHDR
+|	ovrtimer_start();					/* ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÎÆ°ºî³«»Ï */
+|#endif /* TOPPERS_SUPPORT_OVRHDR */
+	CPU¥í¥Ã¥¯²òœüŸõÂÖ€Ë€¹€ë
+	Œ«¥¿¥¹¥¯¡Êp_runtsk¡Ë€Îµ¯Æ°ÈÖÃÏ€ò¡€³ÈÄ¥ŸðÊó€ò¥Ñ¥é¥á¡Œ¥¿€È€·€ÆžÆ€ÓœÐ€¹
+	ext_tsk€ËÊ¬Žô€¹€ë ... (*c)
+}
+----------------------------------------
+
+¡û¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€ÎžÆœÐ€·€ÎŒÂÁõ
+
+¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€¬ËþÎ»€·¡€³ä¹þ€ß€¬È¯Àž€·€¿Ÿì¹ç€Ë€Ï¡€¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€Î
+³ä¹þ€ß¥Ï¥ó¥É¥é¡Ê€Þ€¿€Ï¡€³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó¡Ë€«€é¡€¥¿¡Œ¥²¥Ã¥ÈÈó°ÍÂž
+Éô€Îcall_ovrhdr€òžÆ€ÓœÐ€¹¡¥
+
+€³€³€Ç¡€¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ³ä¹þ€ß¥Ï¥ó¥É¥é€Îµ¯Æ°€È¡€sta_ovr¡¿stp_ovr€ÎžÆœÐ
+€·€Î¶¥¹ç€ÎÌäÂê€¬€¢€ë¡¥¶ñÂÎÎã€È€·€Æ¡€¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€¬ËþÎ»€·€¿ÄŸžå€Ë¡€
+ÂŸ€Î¹âÍ¥ÀèÅÙ€Î³ä¹þ€ß€¬È¯Àž€·¡€€œ€ÎœèÍýÃæ€Ç¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€¬ºÆÆ°ºî³«
+»Ï¡Ê»Ä€ê¥×¥í¥»¥Ã¥µ€Ï¹¹¿·€µ€ì€ë¡Ë€µ€ì€¿Ÿì¹ç€äÄä»ß€µ€ì€¿Ÿì¹ç€¬ÌäÂê€Ë€Ê€ë¡¥
+€³€ÎŸì¹ç¡€¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ³ä¹þ€ß¥Ï¥ó¥É¥é€ÎÃæ€Ç¡€¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€òžÆ
+€ÓœÐ€µ€Ê€€€è€Š€Ë€¹€Ù€­€Ç€¢€ë¡¥
+
+¥¿¡Œ¥²¥Ã¥ÈÈó°ÍÂžÉô€Îcall_ovrhdr€ÎŒÂÁõ€ÏŒ¡€ÎÄÌ€ê¡¥
+
+----------------------------------------
+void
+call_ovrhdr(void)
+{
+	assert(sense_context());
+	assert(!sense_lock());
+	assert(ovrinib.ovrhdr != NULL);
+
+	i_lock_cpu();
+	if (p_runtsk!= NULL && p_runtsk->leftotm == 1U) {
+		p_runtsk->leftotm = 0U;
+		i_unlock_cpu();
+
+		LOG_OVR_ENTER(p_runtsk);
+		((OVRHDR)(ovrinib.ovrhdr))(TSKID(p_runtsk), p_runtsk->p_tinib->exinf);
+		LOG_OVR_LEAVE(p_runtsk);
+	}
+	else {
+		/*
+		 *  €³€Î¥ë¡Œ¥Á¥ó€¬žÆ€ÓœÐ€µ€ì€ëÁ°€Ë¡€¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€Îµ¯Æ°€¬
+		 *  ¥­¥ã¥ó¥»¥ë€µ€ì€¿Ÿì¹ç
+		 */
+		i_unlock_cpu();
+	}
+}
+----------------------------------------
+
+p_runtsk€¬NULL€ÎŸì¹ç€ò¹ÍÎž€·€Æ€€€ë€Î€Ï¡€¥¹¥×¥ê¥¢¥¹³ä¹þ€ß€ËÂÐ€¹€ë¥í¥Ð¥¹
+¥ÈÀ­€ò³ÎÊÝ€¹€ë€¿€á€Ç€¢€ë¡¥
+
+¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€ÎžÆœÐ€·žå€Ë¡€žÆœÐ€·Á°€ÎŸõÂÖ¡ÊCPU¥í¥Ã¥¯¡€³ä¹þ€ßÍ¥ÀèÅÙ
+¥Þ¥¹¥¯¡Ë€ËÌá€µ€Ê€€€Î€Ï¡€€³€Î¥ë¡Œ¥Á¥ó€«€é€Î¥ê¥¿¡Œ¥óžå€Ë¡€³ä¹þ€ßœÐžýœèÍý
+€Çžµ€ÎŸõÂÖ€ËÌá€¹€¿€á€Ç€¢€ë¡¥
+
+call_ovrhdr€Ï¡€³ä¹þ€ß¥Ï¥ó¥É¥é€«€é¡Ê€Þ€¿€Ï¡€³ä¹þ€ß¥Ï¥ó¥É¥é€È€·€Æ¡ËžÆ€ÓœÐ
+€µ€ì€ë€¿€á¡€€³€Î¥ë¡Œ¥Á¥ó€ËÍè€ë€Þ€Ç€Ë¡€ovrtimer_stop€¬žÆ€Ð€ì€Æ€€€ë¡Ê€¹€Ê
+€ï€Á¡€¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€¬Ää»ß€·€Æ€€€ë¡Ë¡¥
+
+³ä¹þ€ß¥Ï¥ó¥É¥é€ÎÀßÄê€Ï¡€°Ê²Œ€Î€è€Š€ÊÀÅÅªAPI€ò¡€target_timer.hÃæ€Ëµ­œÒ€¹
+€ë€³€È€Ç¹Ô€Š€â€Î€È€¹€ë¡Ê¥¿¡Œ¥²¥Ã¥È€Î»öŸð€ÇÊÑ¹¹€·€Æ€è€€¡Ë¡¥
+
+----------------------------------------
+#ifdef TOPPERS_SUPPORT_OVRHDR
+ATT_INI({ TA_NULL, 0, target_ovrtimer_initialize });
+ATT_TER({ TA_NULL, 0, target_ovrtimer_terminate });
+CFG_INT(INTNO_OVRTIMER, { TA_ENAINT | INTATR_OVRTIMER, INTPRI_OVRTIMER });
+DEF_INH(INHNO_OVRTIMER, { TA_NULL, target_ovrtimer_handler });
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+----------------------------------------
+
+€³€ì€é€ÎÀÅÅªAPIÃæ€Î¡€INHNO_OVRTIMER¡€INTNO_OVRTIMER¡€INTPRI_OVRTIMER¡€
+INTATR_OVRTIMER€Î4€Ä€ÎÄê¿ô€Ï¡€target_timer.hÃæ€ÇÄêµÁ€¹€ë¡¥
+
+¡û¥ª¡Œ¥Ð¥Ø¥Ã¥É€ÎÄãžºÊýË¡
+
+°ÊŸå€ÇÀâÌÀ€·€¿ÊýË¡€Ç€Ï¡€¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€Î¥¢¥»¥ó¥Ö¥êžÀžì€Çµ­œÒ€¹€ë€³€È
+€òÁÛÄê€·€¿¥³¡Œ¥É€«€é¡€¥¿¡Œ¥²¥Ã¥ÈÈó°ÍÂžÉô€Îovrtimer_start€È
+ovrtimer_stop€òžÆ€ÓœÐ€·€Æ€€€ë€¬¡€€³€ì€é€ÎŽØ¿ô€ÏÃ»€€€â€Î€Ç¡€¥¢¥»¥ó¥Ö¥êžÀ
+žì€ÎÃæ€ËÅž³«€·€¿Êý€¬žúÎš€¬€è€€¡¥€³€ì€é€ÎŽØ¿ô€ò¥¢¥»¥ó¥Ö¥êžÀžì€ÎÃæ€ËÅž³«
+€¹€ëŸì¹ç€Ë€Ï¡€€œ€ì€Ÿ€ì¡€OMIT_OVRTIMER_START€ÈOMIT_OVRTIMER_STOP€ò¥Þ¥¯¥í
+ÄêµÁ€¹€ë¡¥
+
+¡û¥Þ¥ë¥Á¥×¥í¥»¥Ã¥µÂÐ±þ¥«¡Œ¥Í¥ë€Ø€ÎÂÐ±þ€ËŽØ€¹€ë¥á¥â
+
+¥Þ¥ë¥Á¥×¥í¥»¥Ã¥µÂÐ±þ¥«¡Œ¥Í¥ë€Ë€ª€€€Æ¡€sta_ovr¡¿ista_ovr¡€stp_ovr¡¿
+istp_ovr€ò¡€žÆ€ÓœÐ€·€¿œèÍýÃ±°Ì€È°Û€Ê€ë¥×¥í¥»¥Ã¥µ€Ë³ä€êÉÕ€±€é€ì€¿¥¿¥¹¥¯
+€òÂÐŸÝ€ËÈ¯¹Ô€·€¿Ÿì¹ç€ÎŒÂÁõ€Ï¹©É×€òÍ×€¹€ë¡¥
+
+ŽðËÜÅª€Ë€Ï¡€ÂÐŸÝ¥¿¥¹¥¯€¬³ä€êÉÕ€±€é€ì€¿¥×¥í¥»¥Ã¥µ€ËÂÐ€·€Æ¥×¥í¥»¥Ã¥µŽÖ³ä
+¹þ€ß€ò€«€±€ë€³€È€Ë€è€Ã€Æ¡€ÂÐŸÝ¥¿¥¹¥¯€Î¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€ÎÆ°ºî€ò³«»Ï¡¿
+Ää»ß€µ€»€ë€³€È€¬É¬Í×€Ç€¢€ë€¬¡€³ä¹þ€ß€ÎÆþžýœèÍý€ÇžÆ€ÓœÐ€¹ovrtimer_stop€Ç¡€
+ovrtimer_flag€È(p_runtsk->leftotm > 0U)€¬°ìŽÓ€·€Ê€¯€Ê€ë€¿€á¡€¹©É×€òÍ×€¹
+€ë€â€Î€È»×€ï€ì€ë¡¥
+
+°ÊŸå
Index: /doc/porting.txt
===================================================================
--- /doc/porting.txt	(revision 7)
+++ /doc/porting.txt	(revision 7)
@@ -0,0 +1,4057 @@
+
+		TOPPERS/ASP¥«¡Œ¥Í¥ë
+		¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô ¥Ý¡Œ¥Æ¥£¥ó¥°¥¬¥€¥É
+
+		ÂÐ±þ¥Ð¡Œ¥ž¥ç¥ó: Release 1.9.2
+		ºÇœª¹¹¿·: 2014Ç¯11·î17Æü
+
+€³€Î¥É¥­¥å¥á¥ó¥È€Ï¡€TOPPERS/ASP¥«¡Œ¥Í¥ë€ò¡€Ì€¥µ¥Ý¡Œ¥È€Î¥¿¡Œ¥²¥Ã¥È¥·¥¹¥Æ
+¥à€Ë¥Ý¡Œ¥Æ¥£¥ó¥°€¹€ë€¿€á€ËÉ¬Í×€È€Ê€ë¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€ÎŒÂÁõÊýË¡€òÀâÌÀ€¹
+€ë€â€Î€Ç€¢€ë¡¥
+
+----------------------------------------------------------------------
+ TOPPERS/ASP Kernel
+     Toyohashi Open Platform for Embedded Real-Time Systems/
+     Advanced Standard Profile Kernel
+
+ Copyright (C) 2005-2013 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$
+----------------------------------------------------------------------
+
+¡ûÌÜŒ¡
+
+£±¡¥¶ŠÄÌ»ö¹à
+	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€ò¥ê¥ó¥¯€¹€ëºÝ€ËÅ¬ÍÑ€¹€ë¥ª¥×¥·¥ç¥ó€òÄÉ
+²Ã€¹€ëŸì¹ç€Ë€Ï¡€Ÿå€ËŒš€·€¿ÊÑ¿ô€ËÄêµÁ€¹€ë¡¥
+
+€Ê€ª¡€LDFLAGS€Ï¡€cfg1_out.c€ò¥ê¥ó¥¯€¹€ëºÝ€Ë€ÏÅ¬ÍÑ€µ€ì€Ê€€€¿€á¡€LDFLAGS
+€ËÄêµÁ€·€¿¥ª¥×¥·¥ç¥ó€Ç¡€cfg1_out.c€ò¥ê¥ó¥¯€¹€ëºÝ€Ë€âÉ¬Í×€Ê€â€Î€Ï¡€
+CFG1_OUT_LDFLAGS€Ë€âÄêµÁ€¹€ëÉ¬Í×€¬€¢€ë¡¥
+
+(2-4-17) CFG_ASMOBJS		¥¢¥»¥ó¥Ö¥êžÀžì€Çµ­œÒ€µ€ì€¿¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£
+							¥®¥å¥ì¡Œ¥·¥ç¥ó€Î€¿€á€Î¥ª¥Ö¥ž¥§¥¯¥È
+(2-4-18) CFG_COBJS			CžÀžì€Çµ­œÒ€µ€ì€¿¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ
+							¥·¥ç¥ó€Î€¿€á€Î¥ª¥Ö¥ž¥§¥¯¥È
+
+¥¿¡Œ¥²¥Ã¥È€Ë°ÍÂž€·€Æ¡€¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó€Î€¿€á€Î¥ª¥Ö¥ž¥§¥¯
+¥È¥Õ¥¡¥€¥ë€ò¡Êkernel_cfg.o°Ê³°€Ë¡ËÄÉ²Ã€¹€ëŸì¹ç€Ë€Ï¡€Ÿå€ËŒš€·€¿ÊÑ¿ô€ËÄê
+µÁ€¹€ë¡¥€³€ÎŸì¹ç¡€ÄÉ²Ã€·€¿¥ª¥Ö¥ž¥§¥¯¥È¥Õ¥¡¥€¥ë€ÎºîÀ®¥ë¡Œ¥ë¡Ê¥³¥ó¥Ñ¥€¥ë¡¿
+¥¢¥»¥ó¥Ö¥ë¥ë¡Œ¥ë€È°ÍÂžŽØ·žºîÀ®¥ë¡Œ¥ë¡Ë€ò¡€Makefile€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€Ë
+µ­œÒ€¹€ëÉ¬Í×€¬€¢€ë¡¥
+
+(2-4-19) CFG2_OUT_SRCS
+
+¥¿¡Œ¥²¥Ã¥È€Ë°ÍÂž€·€Æ¡€¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿€Î¥Ñ¥¹2€Çkernel_cfg.c€È
+kernel_cfg.h°Ê³°€Î¥Õ¥¡¥€¥ë€òÀžÀ®€¹€ëŸì¹ç€Ë€Ï¡€Ÿå€ËŒš€·€¿ÊÑ¿ô€ËÄêµÁ€¹€ë¡¥
+
+(2-4-20) OMIT_WARNING_ALL
+(2-4-21) 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_OVRHDR
+	0U,						/* leftotm */
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+	{ 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€ÈCFG1_OUT_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)
+CFG1_OUT_LDFLAGS := -nostdlib $(CFG1_OUT_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)
+CFG1_OUT_LDFLAGS := -nostdlib $(CFG1_OUT_LDFLAGS)
+LIBS := $(LIBS) -lgcc
+----------------------------------------
+
+€³€ÎŸì¹ç¡€€³€ì€é€Î¥Õ¥¡¥€¥ë€ò¥³¥ó¥Ñ¥€¥ë€¹€ë€³€È€Ï€Ê€€€¿€á¡€¥³¥ó¥Ñ¥€¥ë¥ë¡Œ
+¥ë€ÏÉÔÍ×€Ç€¢€ë¡¥€Þ€¿¡€°ÍÂžŽØ·žºîÀ®¥ë¡Œ¥ë€Ï¥À¥ß¡Œ€Ç€è€€¡Ê°ÍÂžŽØ·žºîÀ®¥ë¡Œ
+¥ë€¬€Ê€€€È¥š¥é¡Œ€Ë€Ê€ë¡Ë¡¥
+
+(2-6-6) HIDDEN_OBJS				»ØÄê€·€Ê€¯€Æ€â¥ê¥ó¥¯€µ€ì€ë¥â¥ž¥å¡Œ¥ëÌŸ
+
+¥í¡Œ¥É¥â¥ž¥å¡Œ¥ë€Ë¥ê¥ó¥¯€¹€Ù€­¥â¥ž¥å¡Œ¥ë€ò¡€¥ê¥ó¥«€ËÂÐ€¹€ë¥Ñ¥é¥á¡Œ¥¿€Ç
+€Ï€Ê€¯¡€¥ê¥ó¥«¥¹¥¯¥ê¥×¥ÈÃæ€Ë¡ÊÎã€š€Ð¡€GNU³«È¯ŽÄ¶­€Î¥ê¥ó¥«¥¹¥¯¥ê¥×¥È€Î
+STARTUP€ò»È€Ã€Æ¡Ëµ­œÒ€¹€ëŸì¹ç€Ë€Ï¡€€œ€Î¥ª¥Ö¥ž¥§¥¯¥È¥Õ¥¡¥€¥ëÌŸ€ò¡€
+¡ÊSTART_OBJS€Þ€¿€ÏEND_OBJS€Ç€Ï€Ê€¯¡ËHIDDEN_OBJS€ËÄêµÁ€·¡€€œ€ì€ËÂÐ€¹€ë¥³
+¥ó¥Ñ¥€¥ë¥ë¡Œ¥ë€È°ÍÂžŽØ·žºîÀ®¥ë¡Œ¥ë€òÄêµÁ€¹€ë¡¥HIDDEN_OBJS€ËÄêµÁ€·€¿¥â
+¥ž¥å¡Œ¥ë€Ï¡€¥ê¥ó¥«€ËÂÐ€¹€ë¥Ñ¥é¥á¡Œ¥¿€«€é€Ïœü³°€µ€ì€ë¡¥LDFLAGS€È
+CFG1_OUT_LDFLAGS¡€LIBS€Ë€Ä€€€Æ€Ï¡€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)
+CFG1_OUT_LDFLAGS := -nostdlib $(CFG1_OUT_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€òžÆ€ÓœÐ€·€¿ºÝ€ÎÆ°ºî€¬»ÅÍÍ€Ë¹çÃ×€·€Ê€¯€Ê€ë¡¥
+
+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¡Ë€Ï¡€¥¿¥¹¥¯€òµÙ»ßŸõÂÖ€«€éŒÂ¹Ô€Ç€­€ë
+ŸõÂÖ€Ë€¹€ë»þ€ËžÆ€Ð€ì¡€p_tcb€Ç»ØÄê€µ€ì€¿¥¿¥¹¥¯¡ÊÂÐŸÝ¥¿¥¹¥¯¡Ë€Î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€ÎÈÖÃÏ€È€·€Æ€ª€¯ÊýË¡€¬€¢€ë¡¥
+
+€³€³€Ç¡€¥¿¥¹¥¯€Îµ¯Æ°œèÍý€Ë€ª€€€ÆÂÐŸÝ¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯ÎÎ°è€ò»È€Ã€Æ€Ï€Ê€é
+€Ê€€ÍýÍ³€Ï¡€Œ¡€ÎÄÌ€ê¡¥À©Ìó¥¿¥¹¥¯³ÈÄ¥¥Ñ¥Ã¥±¡Œ¥ž€Ë€ª€€€Æ¡€Ê£¿ô€ÎÀ©Ìó¥¿¥¹
+¥¯€¬¥¹¥¿¥Ã¥¯ÎÎ°è€ò¶ŠÍ­€·€Æ€€€ëŸì¹ç€Ë¡€¥¿¥¹¥¯€Îµ¯Æ°»þÅÀ€Ç€Ï¡€€œ€Î¥¿¥¹¥¯
+€È¥¹¥¿¥Ã¥¯ÎÎ°è€ò¶ŠÍ­€·€Æ€€€ë¥¿¥¹¥¯€¬¡€¥¹¥¿¥Ã¥¯ÎÎ°è€ò»ÈÍÑ€·€Æ€€€ë²ÄÇœÀ­
+€¬€¢€ë€¿€á€Ç€¢€ë¡¥
+
+€³€Î¥Ý¡Œ¥Æ¥£¥ó¥°¥¬¥€¥É€Ç€Ï¡€¥¿¥¹¥¯€ÎŒÂ¹ÔºÆ³«ÈÖÃÏ€òTCB€ËÊÝÂž€·€Æ€€€ë
+(*a)¡£€³€ì€ò¥¹¥¿¥Ã¥¯€ËÊÝÂž€¹€ëÊýË¡€â¹Í€š€é€ì€ë€¬¡€¥¿¥¹¥¯€Îµ¯Æ°œèÍý€Ç¥¹
+¥¿¥Ã¥¯ÎÎ°è€¬»È€š€Ê€€€³€È€«€é¡€¥¿¥¹¥¯€Îµ¯Æ°œèÍý€À€±€ÏÎã³°°·€€€·€Ê€±€ì€Ð
+€Ê€é€Ê€€¡¥Îã€š€Ð¡€¥¿¥¹¥¯€Îµ¯Æ°œèÍý€Ë€ª€€€Æ€ÏTCBÃæ€Î¥¹¥¿¥Ã¥¯¥Ý¥€¥ó¥¿€òÆÃ
+Œì€ÊÃÍ¡ÊÎã€š€Ð0¡Ë€ËÀßÄê€·€Æ€ª€­¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ãËÜÂÎ€ÇTCBÃæ€Î¥¹¥¿¥Ã¥¯¥Ý
+¥€¥ó¥¿€¬€œ€ÎÃÍ€ÎŸì¹ç€Ë€Ïstart_r€ËÊ¬Žô€µ€»¡€start_r€Ë€ª€€€Æ¥¹¥¿¥Ã¥¯¥Ý¥€
+¥ó¥¿€òœéŽü²œ€¹€ëÊýË¡€¬¹Í€š€é€ì€ë¡¥
+
+6.6 ³ä¹þ€ß¥Ï¥ó¥É¥é
+
+6.6.1 ³ä¹þ€ß¥Ï¥ó¥É¥é€ÎœÐÆþžýœèÍý
+
+¥«¡Œ¥Í¥ëŽÉÍý€Î³ä¹þ€ß€ÎœÐÆþžýœèÍý€ÎÊýË¡€Ï¡€¥×¥í¥»¥Ã¥µ€Ë€è€Ã€ÆÂç€­€¯°Û€Ê
+€ë€¬¡€€ª€ª€è€œ€ÎœèÍýÆâÍÆ€ÏŒ¡€ÎÄÌ€ê¡¥
+
+----------------------------------------
+void
+<³ä¹þ€ß€ÎœÐÆþžýœèÍý>(void)
+{
+	Ÿ¯€Ê€¯€È€â¥«¡Œ¥Í¥ëŽÉÍý€Î³ä¹þ€ß€ò¶Ø»ß€·€¿ŸõÂÖ€Ë€¹€ë ¡Ä (*f)
+	¥¹¥¯¥é¥Ã¥Á¥ì¥ž¥¹¥¿€ò¥¹¥¿¥Ã¥¯€ËÊÝÂž€¹€ë
+	if (¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€Ç³ä¹þ€ßÈ¯Àž) {
+#ifdef TOPPERS_SUPPORT_OVRHDR
+		ovrtimer_stop();				/* ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÎÄä»ß */
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+		¥¹¥¿¥Ã¥¯€òÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ€Î¥¹¥¿¥Ã¥¯€ËÀÚ€êŽ¹€š¡€
+								Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€ËÀÚ€êŽ¹€š€ë
+	}
+	³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€ò¡€Œõ€±ÉÕ€±€¿³ä¹þ€ßÍ×µá€Î³ä¹þÍ¥ÀèÅÙ€ËÀßÄê€·¡€
+				CPU¥í¥Ã¥¯²òœüŸõÂÖ€Ë€¹€ë¡ÊŒõ€±ÉÕ€±€¿³ä¹þ€ß€è€ê€â
+				Í¥ÀèÅÙ€Î¹â€€³ä¹þ€ß€òŒõ€±ÉÕ€±€ë€è€Š€Ë€¹€ë¡Ë¡Ä (*i)
+
+
+#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¥í¥Ã¥¯²òœüŸõÂÖ€ËÌá€ë€è€Š€ËœàÈ÷€¹€ë
+	¥¹¥¯¥é¥Ã¥Á¥ì¥ž¥¹¥¿€ò¥¹¥¿¥Ã¥¯€«€éÉüµ¢€¹€ë
+	³ä¹þ€ßœèÍý€«€é€Î¥ê¥¿¡Œ¥ó
+}
+----------------------------------------
+
+³ä¹þ€ß€ÎŒõÉÕ€±€Ë€è€ê¡€¥¹¥¿¥Ã¥¯¥Ý¥€¥ó¥¿€¬ÀÚ€êŽ¹€ï€é€º¡€€¹€Ù€Æ€Î³ä¹þ€ß€¬
+¶Ø»ß€µ€ì€Ê€€¥×¥í¥»¥Ã¥µ€Ç€Ï¡€(*f)€Ë€ª€€€Æ¡€Ÿ¯€Ê€¯€È€â¥«¡Œ¥Í¥ëŽÉÍý€Î³ä¹þ
+€ß€ò¶Ø»ß€¹€ë¡¥€³€ÎÍýÍ³€ÏŒ¡€ÎÄÌ€ê€Ç€¢€ë¡¥
+
+³ä¹þ€ß€ÎÆþžýœèÍý€Ë€ª€€€Æ¡€¥¹¥¿¥Ã¥¯€òÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ€Î¥¹¥¿¥Ã¥¯€Ë
+ÀÚ€êŽ¹€š€ëÁ°€ËÂ¿œÅ³ä¹þ€ß€¬È¯Àž€¹€ë€È¡€¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯ÎÎ°è€¬»ÈÍÑ€µ€ì€ë¡¥
+Ÿåµ­€Î€è€Š€Ê¥×¥í¥»¥Ã¥µ€Ç€Ï¡€¥¹¥¿¥Ã¥¯€ÎÀÚŽ¹€šÁ°€Ë¡€ºÇÂç€Ç³ä¹þ€ßÍ¥ÀèÅÙ€Î
+ÃÊ¿ôÊ¬€ÎÂ¿œÅ³ä¹þ€ß€¬È¯Àž€¹€ë€³€È€òËÉ€°€³€È€Ï€Ç€­€º¡€³Æ¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯
+ÎÎ°è€ò³ÎÊÝ€¹€ëºÝ€Ë¡€€œ€ÎÊ¬€òž«¹þ€ó€Ç³ÎÊÝ€·€Ê€±€ì€Ð€Ê€é€Ê€€¡¥³Æ¥¿¥¹¥¯€Î
+¥¹¥¿¥Ã¥¯ÎÎ°è€ò€Ê€ë€Ù€¯Ÿ®€µ€¯€¹€ë€¿€á€Ë€Ï¡€¥¹¥¿¥Ã¥¯€ò€Ê€ë€Ù€¯»ÈÍÑ€·€Ê€€
+Æâ€Ë¡€Â¿œÅ³ä¹þ€ß€ò¶Ø»ß€¹€ë€Î€¬ËŸ€Þ€·€€¡¥€œ€Î€¿€á¡€¥¹¥¯¥é¥Ã¥Á¥ì¥ž¥¹¥¿€ò
+¥¹¥¿¥Ã¥¯€ËÊÝÂž€¹€ëÁ°€Ë¡€³ä¹þ€ß€ò¶Ø»ß€¹€ë¡¥€¿€À€·¡€³ä¹þ€ß€Î¶Ø»ßœèÍý€ËÉ¬
+Í×€ÊºÇÄãžÂ€Î¥ì¥ž¥¹¥¿€Ë€Ä€€€Æ€Ï¡€³ä¹þ€ß€Î¶Ø»ß€ËÀèÎ©€Ã€Æ¥¹¥¿¥Ã¥¯€ËÊÝÂž€¹
+€ëÉ¬Í×€¬€¢€ë¡¥
+
+Æ±ÍÍ€Î€³€È€Ï¡€¥«¡Œ¥Í¥ëŽÉÍý³°€Î³ä¹þ€ß€Ë€âÅö€Æ€Ï€Þ€ë¡¥€¹€Ê€ï€Á¡€¥«¡Œ¥Í¥ë
+ŽÉÍý³°€Î³ä¹þ€ß€Ë€Ä€€€Æ€â¡€¥¹¥¿¥Ã¥¯€ò€Ê€ë€Ù€¯»ÈÍÑ€·€Ê€€Æâ€Ë¶Ø»ß€¹€ë€Î€¬
+ËŸ€Þ€·€€¡¥€³€Î€³€È€«€é¡€¥«¡Œ¥Í¥ëŽÉÍý³°€Î³ä¹þ€ß€ò»ÈÍÑ€¹€ëŸì¹ç€Ë€Ï¡€(*f)
+€Ë€ª€€€Æ¡€€¹€Ù€Æ€Î³ä¹þ€ß€ò¶Ø»ß€·€¿ŸõÂÖ€Ë€¹€ë€Î€¬ËŸ€Þ€·€€€³€È€Ë€Ê€ë¡¥°ì
+Êý€Ç¡€¥«¡Œ¥Í¥ëŽÉÍý³°€Î³ä¹þ€ß€Î¶Ø»ß»þŽÖ€¬Ä¹€¯€Ê€ë€È¡€¥«¡Œ¥Í¥ëŽÉÍý³°€Î³ä
+¹þ€ß€Î±þÅúÀ­€¬Äã²Œ€¹€ë€¿€á¡€¥æ¡Œ¥¶€ËÃí°Õ€òÂ¥€¹É¬Í×€¬€¢€ë¡¥€Þ€¿¡€¥«¡Œ¥Í
+¥ëŽÉÍý³°€Î³ä¹þ€ßœèÍý€Ë€ª€€€Æ€â¡€Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ€Î¥¹¥¿¥Ã¥¯¡Ê€Þ€¿
+€Ï¡€¥«¡Œ¥Í¥ëŽÉÍý³°€Î³ä¹þ€ßœèÍýÍÑ€Î¥¹¥¿¥Ã¥¯¡Ë€ËÀÚ€êŽ¹€š€ë€³€È€¬ËŸ€Þ€·€€
+€¬¡€€³€ì€Ï¥«¡Œ¥Í¥ë€ÎŽÉ³í³°€Ç€¢€ë¡¥
+
+(*i)€ËŽÞ€Þ€ì€ë³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€òÀßÄê€¹€ëœèÍý€Ï¡€¥×¥í¥»¥Ã¥µ€¬¥Ï¡Œ¥É¥Š¥§
+¥¢€ÇŒÂžœ€·€Æ€€€ëŸì¹ç€âÂ¿€€¡¥
+
+(*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) void 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_CREISR(INTNO intno)
+
+intno€¬¡€acre_isr€ËÂÐ€¹€ë³ä¹þ€ßÈÖ¹æ€È€·€ÆÍ­žú€ÊÃÍ€Ç€¢€ëŸì¹ç€Ëtrue¡€€œ€Š
+€Ç€Ê€€Ÿì¹ç€Ëfalse€òÊÖ€¹¥Þ¥¯¥í¡¥Æ°ÅªÀžÀ®µ¡Çœ³ÈÄ¥¥Ñ¥Ã¥±¡Œ¥ž€ò»ÈÍÑ€·€Ê€€Ÿì
+¹ç€Ë€Ï¡€ÄêµÁ€¹€ëÉ¬Í×€¬€Ê€€¡¥
+
+6.7 CPUÎã³°¥Ï¥ó¥É¥é€ÈCPUÎã³°È¯Àž»þ€Î¥·¥¹¥Æ¥àŸõÂÖ€Î»²ŸÈ
+
+6.7.1 CPUÎã³°¥Ï¥ó¥É¥é€ÎœÐÆþžýœèÍý
+
+CPUÎã³°€ÎœÐÆþžýœèÍý€ÎÊýË¡€Ï¥×¥í¥»¥Ã¥µ€Ë€è€Ã€ÆÂç€­€¯°Û€Ê€ë€¬¡€€ª€ª€è€œ€Î
+œèÍýÆâÍÆ€ÏŒ¡€ÎÄÌ€ê¡¥
+
+----------------------------------------
+void
+<CPUÎã³°€ÎœÐÆþžýœèÍý>(void)
+{
+	¥¹¥¯¥é¥Ã¥Á¥ì¥ž¥¹¥¿€ò¥¹¥¿¥Ã¥¯€ËÊÝÂž€¹€ë
+	if (¥«¡Œ¥Í¥ëŽÉÍý³°€ÎCPUÎã³°) {
+		if (¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€ÇCPUÎã³°È¯Àž) {
+			¥¹¥¿¥Ã¥¯€òÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ€Î¥¹¥¿¥Ã¥¯€ËÀÚ€êŽ¹€š¡€
+									Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€ËÀÚ€êŽ¹€š€ë ¡Ä (*j)
+		}
+		¥·¥¹¥Æ¥àŸõÂÖ¡Ê¥³¥ó¥Æ¥­¥¹¥È€Ïœü€¯¡Ë€ò¡€CPUÎã³°È¯Àž»þ€ÎŸõÂÖ€Ë€¹€ë
+		CPUÎã³°¥Ï¥ó¥É¥é€ò¡€CPUÎã³°€ÎŸðÊó€òµ­²±€·€Æ€€€ëÎÎ°è€ÎÀèÆ¬ÈÖÃÏ€ò
+									¥Ñ¥é¥á¡Œ¥¿¡Êp_excinf¡Ë€È€·€ÆžÆ€ÓœÐ€¹
+		if (¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€ÇCPUÎã³°È¯Àž) {
+			¥¹¥¿¥Ã¥¯€ò¥¿¥¹¥¯ÍÑ€Î¥¹¥¿¥Ã¥¯€ËÌá€·¡€
+									¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€ËÀÚ€êŽ¹€š€ë ¡Ä (*j)
+		}
+		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Îã³°¥Ï¥ó¥É¥é€òžÆ€Ö»þ€Ë¡€(*j)€Ë€ª€€€Æ¡€¥¹¥¿¥Ã¥¯€òÈó¥¿
+¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ€Î¥¹¥¿¥Ã¥¯€ËÀÚ€êŽ¹€š¡€Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€ËÀÚ€êŽ¹€š
+€Æ€€€ë€¬¡€€³€ÎÀÚŽ¹€š€Ï¥¿¡Œ¥²¥Ã¥ÈÄêµÁ€ÇŸÊ€€€Æ€âÎÉ€€¡¥€³€ì€Ï¡€¥«¡Œ¥Í¥ëŽÉ
+Íý³°€Î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) void default_exc_handler(void *p_excinf)¡Ê¥ª¥×¥·¥ç¥ó¡Ë
+
+¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿€Ë€è€ê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-1) TARGET_TSKATR¡Ê¥ª¥×¥·¥ç¥ó¡Ë	¥¿¡Œ¥²¥Ã¥ÈÄêµÁ€Î¥¿¥¹¥¯Â°À­
+(6-10-1-2) TARGET_ISRATR¡Ê¥ª¥×¥·¥ç¥ó¡Ë	¥¿¡Œ¥²¥Ã¥ÈÄêµÁ€ÎISRÂ°À­
+(6-10-1-3) TARGET_INHATR¡Ê¥ª¥×¥·¥ç¥ó¡Ë	¥¿¡Œ¥²¥Ã¥ÈÄêµÁ€Î³ä¹þ€ß¥Ï¥ó¥É¥éÂ°À­
+(6-10-1-4) TARGET_INTATR¡Ê¥ª¥×¥·¥ç¥ó¡Ë	¥¿¡Œ¥²¥Ã¥ÈÄêµÁ€Î³ä¹þ€ßÂ°À­
+(6-10-1-5) TARGET_EXCATR¡Ê¥ª¥×¥·¥ç¥ó¡Ë	¥¿¡Œ¥²¥Ã¥ÈÄêµÁ€ÎCPUÎã³°¥Ï¥ó¥É¥éÂ°À­
+
+³Æ¥ª¥Ö¥ž¥§¥¯¥È€ÎÂ°À­€ò¡€¥¿¡Œ¥²¥Ã¥ÈÄêµÁ€Ë³ÈÄ¥€¹€ëŸì¹ç€Ë¡€³ºÅö€¹€ë¥ª¥Ö¥ž¥§
+¥¯¥ÈÂ°À­€òŒš€¹ÊÑ¿ô€Ë¡€³ÈÄ¥€Ë»ÈÍÑ€¹€ë¥Ó¥Ã¥È€ÎÏÀÍýÏÂ€òÄêµÁ€¹€ë¡¥€³€ì€Ë€è
+€ê¡€³ÈÄ¥€Ë»ÈÍÑ€¹€ë¥Ó¥Ã¥È€¬ÀßÄê€µ€ì€Æ€€€ëŸì¹ç€Ë¡€¥š¥é¡Œ€Ë€Ê€ë€Î€òËÉ€°¡¥
+
+€Ê€ª¡€TOPPERS¿·À€Âå¥«¡Œ¥Í¥ëÅý¹ç»ÅÍÍœñ€Ç€Ï¡€³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó¡ÊISR¡Ë
+Â°À­€ò¥¿¡Œ¥²¥Ã¥ÈÄêµÁ€Ç³ÈÄ¥€Ç€­€ë»ÅÍÍ€È€Ï€Ê€Ã€Æ€€€Ê€€¡¥
+
+6.10.2 ¥š¥é¡Œ¥Á¥§¥Ã¥¯ÊýË¡€Î»ØÄê
+
+(6-10-2-1) TARGET_MIN_STKSZ¡Ê¥ª¥×¥·¥ç¥ó¡Ë
+
+¥¿¡Œ¥²¥Ã¥ÈÄêµÁ€Ç¡€¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯¥µ¥€¥º€ÎºÇŸ®ÃÍ€òÀßÄê€¹€ëŸì¹ç€Ë€Ï¡€€³
+€ÎÊÑ¿ô€ò¥¹¥¿¥Ã¥¯¥µ¥€¥º€ÎºÇŸ®ÃÍ€ËÄêµÁ€¹€ë¡¥
+
+(6-10-2-2) TARGET_MIN_ISTKSZ¡Ê¥ª¥×¥·¥ç¥ó¡Ë
+
+¥¿¡Œ¥²¥Ã¥ÈÄêµÁ€Ç¡€Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€Î¥¹¥¿¥Ã¥¯¥µ¥€¥º€ÎºÇŸ®ÃÍ€òÀßÄê€¹
+€ëŸì¹ç€Ë€Ï¡€€³€ÎÊÑ¿ô€ò¥¹¥¿¥Ã¥¯¥µ¥€¥º€ÎºÇŸ®ÃÍ€ËÄêµÁ€¹€ë¡¥
+
+(6-10-2-3) CHECK_STKSZ_ALIGN¡Ê¥ª¥×¥·¥ç¥ó¡Ë
+
+¥¹¥¿¥Ã¥¯ÎÎ°è€Î¥µ¥€¥º€¬€¢€ëÃÍ¡Ê¥¢¥é¥€¥óÃ±°Ì¡Ë€ÎÇÜ¿ô€Ç€Ê€±€ì€Ð€Ê€é€Ê€€Ÿì
+¹ç€Ë¡€€³€ÎÊÑ¿ô€ò¥¢¥é¥€¥óÃ±°Ì€ËÄêµÁ€¹€ë¡¥€³€ÎÊÑ¿ô€òÄêµÁ€¹€ë€³€È€Ç¡€
+kernel.tf€ª€è€Óacre_tsk¡ÊÆ°ÅªÀžÀ®µ¡Çœ³ÈÄ¥¥Ñ¥Ã¥±¡Œ¥ž€Î€ß¡Ë€Ë€ª€€€Æ¡€¥¹¥¿¥Ã
+¥¯ÎÎ°è€Î¥µ¥€¥º€¬Àµ€·€¯€Ê€€¡Ê€³€ÎÊÑ¿ô€ËÄêµÁ€·€¿ÃÍ€ÎÇÜ¿ô€Ç€Ê€€¡ËŸì¹ç€Î¥š
+¥é¡Œ€ò¥Á¥§¥Ã¥¯€¹€ë€è€Š€Ë€Ê€ë¡¥¥Á¥§¥Ã¥¯€¬É¬Í×€Ê€€Ÿì¹ç€Ë€Ï¡€€³€ÎÊÑ¿ô€òÄê
+µÁ€·€Ê€€¡¥
+
+(6-10-2-4) CHECK_FUNC_ALIGN¡Ê¥ª¥×¥·¥ç¥ó¡Ë	œèÍýÃ±°Ì€Î¥¢¥é¥€¥óÃ±°Ì
+(6-10-2-5) CHECK_FUNC_NONNULL¡Ê¥ª¥×¥·¥ç¥ó¡Ë	œèÍýÃ±°Ì€ÎÈóNULL¥Á¥§¥Ã¥¯
+(6-10-2-6) CHECK_STACK_ALIGN¡Ê¥ª¥×¥·¥ç¥ó¡Ë	¥¹¥¿¥Ã¥¯ÎÎ°è€Î¥¢¥é¥€¥óÃ±°Ì
+(6-10-2-7) CHECK_STACK_NONNULL¡Ê¥ª¥×¥·¥ç¥ó¡Ë¥¹¥¿¥Ã¥¯ÎÎ°è€ÎÈóNULL¥Á¥§¥Ã¥¯
+(6-10-2-8) CHECK_MPF_ALIGN¡Ê¥ª¥×¥·¥ç¥ó¡Ë	žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÎÎ°è€Î¥¢¥é¥€¥óÃ±°Ì
+(6-10-2-9) 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-2-10) 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-14-2-7) OMIT_OVRTIMER_START
+(6-14-2-8) OMIT_OVRTIMER_STOP
+
+¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€«€éžÆ€ÓœÐ€¹ovrtimer_start€Èovrtimer_stop€ò¡€¥¢¥»¥ó¥Ö¥ê
+žÀžì€Î¥œ¡Œ¥¹¥³¡Œ¥ÉÃæ€ËÅž³«€·¡€CžÀžì€ÎŽØ¿ô€¬ÉÔÍ×€Ë€Ê€ëŸì¹ç€Ë€Ï¡€€œ€ì€Ÿ€ì¡€
+OMIT_OVRTIMER_START€ÈOMIT_OVRTIMER_STOP€ò¥Þ¥¯¥íÄêµÁ€¹€ë¡¥
+
+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-1) INTNO_ATTISR_VALID	ATT_ISR€Ç»ÈÍÑ€Ç€­€ë³ä¹þ€ßÈÖ¹æ
+(7-2-1-2) INHNO_ATTISR_VALID	INTNO_ATTISR_VALID€ËÂÐ±þ€¹€ë³ä¹þ¥Ï¥ó¥É¥éÈÖ¹æ
+(7-2-1-3) INHNO_DEFINH_VALID	DEF_INT€Ç»ÈÍÑ€Ç€­€ë³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ
+(7-2-1-4) EXCNO_DEFEXC_VALID	DEF_EXC€Ç»ÈÍÑ€Ç€­€ëCPUÎã³°¥Ï¥ó¥É¥éÈÖ¹æ
+(7-2-1-5) INTNO_CFGINT_VALID	CFG_INT€Ç»ÈÍÑ€Ç€­€ë³ä¹þ€ßÈÖ¹æ
+(7-2-1-6) INTPRI_CFGINT_VALID	CFG_INT€Ç»ÈÍÑ€Ç€­€ë³ä¹þ€ßÍ¥ÀèÅÙ
+
+API€Ç»ÈÍÑ€Ç€­€ë³ä¹þ€ßÈÖ¹æ¡¿³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ¡¿CPUÎã³°¥Ï¥ó¥É¥éÈÖ¹æ¡¿³ä
+¹þ€ßÍ¥ÀèÅÙ€Î¥ê¥¹¥È€ò¡€³ÆÊÑ¿ô€ËÄêµÁ€¹€ë¡¥INHNO_ATTISR_VALID€Ë€Ï¡€
+INTNO_ATTISR_VALID€Ë¥ê¥¹¥È¥¢¥Ã¥×€·€¿³ä¹þ€ßÈÖ¹æ€ËÂÐ±þ€¹€ë³ä¹þ€ß¥Ï¥ó¥É¥é
+ÈÖ¹æ€Î¥ê¥¹¥È€òÄêµÁ€¹€ë¡¥CFG_INT€Ë€Ï¡€€¹€Ù€Æ€Î³ä¹þ€ßÈÖ¹æ€ò»ØÄê€¹€ë€³€È€¬
+€Ç€­€ë€¿€á¡€INTNO_CFGINT_VALID€Ë€Ï¡€Í­žú€Ê³ä¹þ€ßÈÖ¹æ€ò€¹€Ù€Æ¥ê¥¹¥È¥¢¥Ã
+¥×€¹€ë¡¥
+
+(7-2-1-7) INTNO_FIX_KERNEL¡Ê¥ª¥×¥·¥ç¥ó¡Ë	¥«¡Œ¥Í¥ëŽÉÍý€ËžÇÄê€µ€ì€Æ€€€ë
+											³ä¹þ€ßÈÖ¹æ
+(7-2-1-8) INHNO_FIX_KERNEL¡Ê¥ª¥×¥·¥ç¥ó¡Ë	¥«¡Œ¥Í¥ëŽÉÍý€ËžÇÄê€µ€ì€Æ€€€ë
+		 									³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ
+(7-2-1-9) INHNO_FIX_NONKERNEL¡Ê¥ª¥×¥·¥ç¥ó¡Ë	¥«¡Œ¥Í¥ëŽÉÍý³°€ËžÇÄê€µ€ì€Æ€€€ë
+											³ä¹þ€ßÈÖ¹æ
+(7-2-1-10) INHNO_FIX_NONKERNEL¡Ê¥ª¥×¥·¥ç¥ó¡Ë¥«¡Œ¥Í¥ëŽÉÍý³°€ËžÇÄê€µ€ì€Æ€€€ë
+		 									³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ
+
+¥«¡Œ¥Í¥ëŽÉÍý€Þ€¿€Ï¥«¡Œ¥Í¥ëŽÉÍý³°€ËžÇÄê€µ€ì€Æ€€€ë³ä¹þ€ß€¬€¢€ëŸì¹ç€Ë€Ï¡€
+€œ€ì€é€Î³ä¹þ€ßÈÖ¹æ€È³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ€Î¥ê¥¹¥È€ò¡€³ÆÊÑ¿ô€ËÄêµÁ€¹€ë¡¥
+
+(7-2-1-11) USE_INHINIB_TABLE¡Ê¥ª¥×¥·¥ç¥ó¡Ë
+
+OMIT_INITIALIZE_INTERRUPT€òÄêµÁ€·€¿€¬¡€³ä¹þ€ß¥Ï¥ó¥É¥é€ÎœéŽü²œ€ËÉ¬Í×€ÊŸð
+Êó€òkernel_cfg.c€ËÀžÀ®€·€¿€€Ÿì¹ç€Ë€Ï¡€€³€ÎÊÑ¿ô€ò1€ËÀßÄê€¹€ë¡¥¶ñÂÎÅª€Ë€Ï¡€
+TNUM_INHNO¡€tnum_inhno¡€inhinib_table€ÎÄêµÁ€È¡€³ä¹þ€ß¥Ï¥ó¥É¥éËè€ÎœÐÆþžý
+œèÍý€òÀžÀ®€¹€ë€¿€á€Îµ­œÒ¡ÊINTHDR_ENTRY¥Þ¥¯¥í€Î¥ê¥¹¥È¡Ë€¬¡€¥¿¡Œ¥²¥Ã¥ÈÈó
+°ÍÂžÉô€Ë€è€Ã€ÆÀžÀ®€µ€ì€ë¡¥
+
+(7-2-1-12) USE_INTINIB_TABLE¡Ê¥ª¥×¥·¥ç¥ó¡Ë
+
+OMIT_INITIALIZE_INTERRUPT€òÄêµÁ€·€¿€¬¡€³ä¹þ€ßÍ×µá¥é¥€¥ó€ÎœéŽü²œ€ËÉ¬Í×€Ê
+ŸðÊó€òkernel_cfg.c€ËÀžÀ®€·€¿€€Ÿì¹ç€Ë€Ï¡€€³€ÎÊÑ¿ô€ò1€ËÀßÄê€¹€ë¡¥¶ñÂÎÅª€Ë
+€Ï¡€TNUM_INTNO¡€tnum_intno¡€intinib_table€ÎÄêµÁ€¬¡€¥¿¡Œ¥²¥Ã¥ÈÈó°ÍÂžÉô€Ë
+€è€Ã€ÆÀžÀ®€µ€ì€ë¡¥
+
+(7-2-1-13) GENERATE_TSKINICTXB¡Ê¥ª¥×¥·¥ç¥ó¡Ë
+
+USE_TSKINICTXB€ò¥Þ¥¯¥íÄêµÁ€·€¿Ÿì¹ç¡€TSKINICTXB€ÎœéŽü²œŸðÊó€òÀžÀ®€¹€ë€¿
+€á¥Æ¥ó¥×¥ì¡Œ¥È¥Õ¥¡¥€¥ëŽØ¿ôGENERATE_TSKINICTXB€òÄêµÁ€¹€ë¡¥
+GENERATE_TSKINICTXB€Ë€Ï¡€¥¿¥¹¥¯ID€¬¥Ñ¥é¥á¡Œ¥¿€È€·€ÆÅÏ€µ€ì€ë¡¥
+
+(7-2-1-14) ALLOC_STACK¡Ê¥ª¥×¥·¥ç¥ó¡Ë
+
+¥¹¥¿¥Ã¥¯ÎÎ°è€ÎÀžÀ®ÊýË¡€ò¥Ç¥Õ¥©¥ë¥È€«€éÊÑ¹¹€·€¿€€Ÿì¹ç€Ë€Ï¡€¥¹¥¿¥Ã¥¯ÎÎ°è
+€òÀžÀ®€¹€ë€¿€á€Î¥Æ¥ó¥×¥ì¡Œ¥È¥Õ¥¡¥€¥ëŽØ¿ôALLOC_STACK€òÄêµÁ€¹€ë¡¥
+ALLOC_STACK€Ë€Ï¡€¥¹¥¿¥Ã¥¯ÎÎ°è€ÎÊÑ¿ôÌŸ€ÈŽÝ€á€ëÁ°€Î¥µ¥€¥º€¬¥Ñ¥é¥á¡Œ¥¿€È€·
+€ÆÅÏ€µ€ì€ë€Î€Ç¡€¥¹¥¿¥Ã¥¯ÎÎ°è€òÀžÀ®€¹€ë¥³¡Œ¥É€òÀžÀ®€·¡€Âç€­€€Êý€ËŽÝ€á€¿
+¥µ¥€¥º€òÉœ€¹Êž»úÎó€òÊÖ€¹¡¥
+
+7.2.2 ¥¿¡Œ¥²¥Ã¥ÈÈó°ÍÂžÉô€ÇÄêµÁ€µ€ì€ëÊÑ¿ô
+
+kernel.tf€ÎÃæ€Ç€ÏŒ¡€ÎÊÑ¿ô€¬ÄêµÁ€µ€ì€ë€¿€á¡€kernel.tf€ò¥€¥ó¥¯¥ë¡Œ¥É€·€¿
+žå¡€target.tf€ÎÃæ€Ç€³€ì€é€ò»²ŸÈ€¹€ë€³€È€¬€Ç€­€ë¡¥
+
+(7-2-2-1) INTNO[inhno]		inhno€òÂÐ±þ€¹€ëintno€ËÊÑŽ¹€¹€ë€¿€á€ÎÏ¢ÁÛÇÛÎó
+(7-2-2-2) INHNO[intno]		intno€òÂÐ±þ€¹€ëinhno€ËÊÑŽ¹€¹€ë€¿€á€ÎÏ¢ÁÛÇÛÎó
+
+7.3 ¥Ñ¥¹3€Î¥Æ¥ó¥×¥ì¡Œ¥È¥Õ¥¡¥€¥ë€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô
+
+°Ê²Œ€Ç€Ï¡€¥Ñ¥¹3€Î¥Æ¥ó¥×¥ì¡Œ¥È¥Õ¥¡¥€¥ë€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€òµ­œÒ€¹€ëŸå€ÇÉ¬
+Í×€Ê»ö¹à€Ë€Ä€€€ÆÀâÌÀ€¹€ë¡¥
+
+7.3.1 ¥¿¡Œ¥²¥Ã¥ÈÈó°ÍÂžÉô€ò¥€¥ó¥¯¥ë¡Œ¥É€¹€ëÁ°€ËÄêµÁ€¹€Ù€­ÊÑ¿ô
+
+target_check.tf€«€ékernel_check.tf€ò¥€¥ó¥¯¥ë¡Œ¥É€¹€ëÁ°€Ë¡€É¬Í×€Ë±þ€ž€Æ¡€
+Œ¡€ÎÊÑ¿ô€òÄêµÁ€·€Æ€ª€«€Ê€±€ì€Ð€Ê€é€Ê€€¡¥
+
+(7-3-1-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-1-2) LMA.ORDER_LIST¡Ê¥ª¥×¥·¥ç¥ó¡Ë
+(7-3-1-3) LMA.START_DATA[lmano]¡Ê¥ª¥×¥·¥ç¥ó¡Ë
+(7-3-1-4) LMA.END_DATA[lmano]¡Ê¥ª¥×¥·¥ç¥ó¡Ë
+(7-3-1-5) LMA.START_IDATA[lmano]¡Ê¥ª¥×¥·¥ç¥ó¡Ë
+
+¥Ñ¥¹3€Î¥Æ¥ó¥×¥ì¡Œ¥È¥Õ¥¡¥€¥ë€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€Çdata¥»¥¯¥·¥ç¥ó€«€é¥Ç¡Œ¥¿
+€òŒèÆÀ€¹€ëŸì¹ç€ä¡€rodata¥»¥¯¥·¥ç¥ó€òRAM€ËÃÖ€¯Ÿì¹ç¡Ê¥æ¡Œ¥¶¡Œ¥º¥Þ¥Ë¥å¥¢¥ë
+€Î¡Ö11.8 rodata¥»¥¯¥·¥ç¥ó€òRAM€ËÃÖ€¯Ÿì¹ç¡×€ÎÀá€ò»²ŸÈ¡Ë€Ë€Ï¡€€³€ì€é€Î¥»
+¥¯¥·¥ç¥ó€ÎÆâÍÆ€ò¡€ÇÛÃÖ¥¢¥É¥ì¥¹¡ÊROMÆâ€Î¥¢¥É¥ì¥¹¡€LMA€ÈžÆ€Ö¡Ë€«€é¥¢¥¯¥»
+¥¹¥¢¥É¥ì¥¹¡ÊRAMÆâ€Î¥¢¥É¥ì¥¹¡€VMA€ÈžÆ€Ö¡Ë€Ë¥³¥Ô¡Œ€¹€ëÉ¬Í×€¬€¢€ë¡¥
+
+€³€Î¥³¥Ô¡Œ€Ï¡€LMA.ORDER_LIST€Ë¡€¥³¥Ô¡Œ€¹€ë¥»¥¯¥·¥ç¥ó€ÎÈÖ¹æ¡Êlmano¡Ë€Î¥ê
+¥¹¥È¡ÊÈÖ¹æ€ÏÇ€°Õ€ËÉÕÍ¿€·€Æ€è€€¡Ë¡€LMA.START_DATA[lmano]€Ë¥³¥Ô¡Œ€¹€ë¥»¥¯
+¥·¥ç¥ó€Î¥¢¥¯¥»¥¹¥¢¥É¥ì¥¹€ÎÀèÆ¬€Î¥é¥Ù¥ë¡€LMA.END_DATA[lmano]€ËËöÈø€Î¥é¥Ù
+¥ë¡€LMA.START_IDATA[lmano]€Ë€œ€ÎÇÛÃÖ¥¢¥É¥ì¥¹€ÎÀèÆ¬€Î¥é¥Ù¥ë€òÀßÄê€¹€ë€³
+€È€Ç¡€¥Ñ¥¹3€Î¥Æ¥ó¥×¥ì¡Œ¥È¥Õ¥¡¥€¥ë€Î¥¿¡Œ¥²¥Ã¥ÈÈó°ÍÂžÉô€ÇŒÂ»Ü€¹€ë¡¥
+
+Îã€š€Ð¡€¥³¥Ô¡Œ€¹€ë¥»¥¯¥·¥ç¥ó€Î¥¢¥¯¥»¥¹¥¢¥É¥ì¥¹€ÎÀèÆ¬€Î¥é¥Ù¥ë€¬
+"__data_start"¡€ËöÈø€Î¥é¥Ù¥ë€¬"__data_end"¡€€œ€ÎÇÛÃÖ¥¢¥É¥ì¥¹€ÎÀèÆ¬€Î¥é
+¥Ù¥ë€¬"__idata_start"€ÎŸì¹ç€Ë€Ï¡€¥Ñ¥¹3€Î¥Æ¥ó¥×¥ì¡Œ¥È¥Õ¥¡¥€¥ë€Î¥¿¡Œ¥²¥Ã
+¥È°ÍÂžÉô€Ë°Ê²Œ€Îµ­œÒ€òŽÞ€á€ë¡¥
+
+----------------------------------------
+$LMA.ORDER_LIST = { 1 }$
+$LMA.START_DATA[1] = "__data_start"$
+$LMA.END_DATA[1] = "__data_end"$
+$LMA.START_IDATA[1] = "__idata_start"$
+----------------------------------------
+
+
+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 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 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·¿¡€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Éžœà³ä¹þ€ßœèÍý¥â¥Ç¥ë€«€é€Î€œ€ÎÂŸ€Î°ïÃŠ
+	¡Š¥Ç¥Õ¥©¥ë¥È€Î³ä¹þ€ß¥Ï¥ó¥É¥é¡Êdefault_int_handler¡Ë€ÎÍ­Ìµ€ÈœèÍýÆâÍÆ
+
+(3-3) ¥«¡Œ¥Í¥ëŽÉÍý³°€Î³ä¹þ€ß€ËŽØ€¹€ëµ¬Äê
+	¡ŠTMIN_INTPRI€ÏžÇÄê€«ÀßÄê€Ç€­€ë€«¡€€œ€ÎÀßÄêÊýË¡
+	¡ŠNMI°Ê³°€Ë¥«¡Œ¥Í¥ëŽÉÍý³°€Î³ä¹þ€ß€òÀß€±€ë€«¡ÊÀß€±€é€ì€ë€è€Š€Ë€¹€ë€«¡Ë
+	¡Š¥«¡Œ¥Í¥ëŽÉÍý³°€Î³ä¹þ€ß€ÎÀßÄêÊýË¡
+	¡Š¥«¡Œ¥Í¥ëŽÉÍý³°€Î³ä¹þ€ß€ËÂÐ€·€ÆDEF_INH¡€CFG_INT€ò¥µ¥Ý¡Œ¥È€¹€ë€«
+	¡Š¥«¡Œ¥Í¥ëŽÉÍý³°€Î³ä¹þ€ß¥Ï¥ó¥É¥é€¬ŒÂ¹Ô³«»Ï€µ€ì€ë»þ€Î¥·¥¹¥Æ¥àŸõÂÖ€È
+	¡¡¥³¥ó¥Æ¥­¥¹¥È
+	¡Š³ä¹þ€ß¥Ï¥ó¥É¥é€ÎœªÎ»»þ€Ë¹Ô€ï€ì€ëœèÍý
+	¡Š¥«¡Œ¥Í¥ëŽÉÍý³°€Î³ä¹þ€ß¥Ï¥ó¥É¥é€Îµ­œÒÊýË¡
+	¡Š¥«¡Œ¥Í¥ëÆâ€Î³ä¹þ€ßœÐÆþžýœèÍý€Çµ¯€³€ë²ÄÇœÀ­€Î€¢€ëCPUÎã³°
+
+(3-4) CPUÎã³°œèÍý€ËŽØ€¹€ëµ¬Äê
+	¡ŠCPUÎã³°¥Ï¥ó¥É¥éÈÖ¹æ€Î³äÅö€Æ
+	¡Š³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€òTMIN_INTPRI€ÈÆ±€ž€«€œ€ì€è€ê€â¹â€€ÃÍ€ËÀßÄê€·€Æ
+	¡¡€€€ëŸõÂÖ€ÇÈ¯Àž€·€¿CPUÎã³°€ò¡€¥«¡Œ¥Í¥ëŽÉÍý³°€ÎCPUÎã³°€È°·€Š€«
+	¡Š¥«¡Œ¥Í¥ëÆâ€ÎCPUÎã³°œÐÆþžýœèÍý€Çµ¯€³€ë²ÄÇœÀ­€Î€¢€ëCPUÎã³°
+	¡Š¥Ç¥Õ¥©¥ë¥È€ÎCPUÎã³°¥Ï¥ó¥É¥é¡Êdefault_exc_handler¡Ë€ÎÍ­Ìµ€ÈœèÍýÆâÍÆ
+
+(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: /doc/rstr_task.txt
===================================================================
--- /doc/rstr_task.txt	(revision 7)
+++ /doc/rstr_task.txt	(revision 7)
@@ -0,0 +1,135 @@
+													TOPPERS Confidential
+		TOPPERS¥×¥í¥ž¥§¥¯¥È ¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¥á¥â
+		À©Ìó¥¿¥¹¥¯€Î»ÅÍÍ€ËŽØ€¹€ëž¡Æ€
+
+		ºîÀ®ŒÔ: ¹âÅÄ¹­ŸÏ¡ÊÌŸžÅ²°Âç³Ø¡Ë
+		ºÇœª¹¹¿·: 2010Ç¯8·î25Æü
+
+¡û¥á¥â€Î°ÌÃÖÉÕ€±
+
+€³€Î¥É¥­¥å¥á¥ó¥È€Ï¡€TOPPERS/ASP¥«¡Œ¥Í¥ë€ËÀ©Ìó¥¿¥¹¥¯€òÆ³Æþ€¹€ë€¿€á€Î»ÅÍÍ
+€Ë€Ä€€€Æž¡Æ€€¹€ë€â€Î€Ç€¢€ë¡¥
+
+¡û¥¹¥¿¥Ã¥¯¶ŠÍ­€ÎÊý¿Ë
+
+€¹€Ù€Æ€ÎÀ©Ìó¥¿¥¹¥¯€ò1€Ä€Î¥¹¥¿¥Ã¥¯€ÇŒÂ¹Ô€¹€ëÊýË¡€â€¢€ë€¬¡€ASP¥«¡Œ¥Í¥ë€Ë
+ÂÐ€¹€ëœ€Àµ€¬Âç€­€¯€Ê€ë€¿€áºÎÍÑ€»€º¡€Æ±€žµ¯Æ°»þÍ¥ÀèÅÙ€ò»ý€ÄÀ©Ìó¥¿¥¹¥¯€ò
+Æ±°ì€Î¥¹¥¿¥Ã¥¯€ÇŒÂ¹Ô€¹€ëÊý¿Ë€È€¹€ë¡¥
+
+¡ûŠÌITRON4.0»ÅÍÍ€ÎÀ©Ìó¥¿¥¹¥¯€Î»ÅÍÍ€Ë€Ä€€€Æ
+
+ŠÌITRON4.0»ÅÍÍ€Ë€ª€±€ëÀ©Ìó¥¿¥¹¥¯€Î»ÅÍÍ€Ï¡€Œ¡€ÎÄÌ€ê€Ç€¢€ë¡ÊŠÌITRON4.0»Å
+ÍÍ 5.2.1Àá€è€ê¡Ë¡¥
+
+----------------------------------------------------------------------
+À©Ìó¥¿¥¹¥¯€Ï¡€¥¿¥¹¥¯€Î»ý€Äµ¡Çœ€òÀ©žÂ€¹€ë€³€È€Ç¡€Ê£¿ô€Î¥¿¥¹¥¯€òÆ±°ì€Î¥¹
+¥¿¥Ã¥¯¶õŽÖ€òÍÑ€€€ÆÆ°ºî€µ€»€ë€³€È€ò²ÄÇœ€Ë€·¡€€œ€ì€Ë€è€ê¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯
+€Î€¿€á€Î¥á¥â¥êÎÎ°è€Îºïžº€ò¿Þ€ë€â€Î€Ç€¢€ë¡¥¶ñÂÎÅª€Ë€Ï¡€À©Ìó¥¿¥¹¥¯€Ï¡€ÄÌ
+Ÿï€Î¥¿¥¹¥¯€ÈÈæ³Ó€·€Æ°Ê²Œ€ÎÀ©žÂ€ò»ý€Ä¡¥
+
+(a) ÂÔ€ÁŸõÂÖ€ËÆþ€ë€³€È€¬€Ç€­€Ê€€¡¥
+(b) Í¥ÀèÅÙ€òÊÑ¹¹€¹€ë€³€È€¬€Ç€­€Ê€€¡¥
+(c) ¥¿¥¹¥¯ÀžÀ®»þ€ÎœéŽüÍ¥ÀèÅÙ€Î»ØÄê€Ë¡€Œ°€òÍÑ€€€ë€³€È€¬€Ç€­€Ê€€¡¥
+(d) ¥¿¥¹¥¯€Î¥á¥€¥ó¥ë¡Œ¥Á¥ó€«€é€Î¥ê¥¿¡Œ¥ó°Ê³°€ÎÊýË¡€Ç¡€¥¿¥¹¥¯€òœªÎ»€¹€ë
+    €³€È€Ï€Ç€­€Ê€€¡¥
+
+¥¿¥¹¥¯€¬À©Ìó¥¿¥¹¥¯€Ç€¢€ë€«€É€Š€«€Ï¡€¥¿¥¹¥¯€ÎÀžÀ®»þ€Ë¡€¥¿¥¹¥¯Â°À­€Ë€è€Ã
+€Æ»ØÄê€¹€ë¡¥
+----------------------------------------------------------------------
+
+(a)€ÎÀ©žÂ€ÏËÜŒÁÅª€Ç€¢€ë¡¥Ÿå€Îµ­œÒ€Ï¡€Œ«Æ°ŒÖÀ©žæ¥×¥í¥Õ¥¡¥€¥ë€ÎÈÏ°Ï€Çµ­œÒ
+€·€Æ€¢€ë€¿€á€Ë¡ÖÂÔ€ÁŸõÂÖ¡×€È€·€Æ€¢€ë€¬¡€ASP¥«¡Œ¥Í¥ë€ËÅ¬ÍÑ€¹€ëŸì¹ç€Ë€Ï¡€
+¡Ö¹­µÁ€ÎÂÔ€ÁŸõÂÖ¡×€È€¹€Ù€­€Ç€¢€ë¡¥
+
+(b)€ÎÀ©žÂ€Ï¡€ŽË€á€ë€³€È€â²ÄÇœ€Ç€¢€ë¡¥¶ñÂÎÅª€Ë€Ï¡€À©Ìó¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€ò¡€
+µ¯Æ°»þÍ¥ÀèÅÙ€ÈÆ±€ž€«¡€€œ€ì€è€ê€â¹â€€ÃÍ€ËÀßÄê€¹€ë€³€È€Ïµö€·€Æ€â€è€€¡¥€¿
+€À€·¡€Í¥ÀèÅÙ€ÎÊÑ¹¹žå€Ï¡€Æ±€žÍ¥ÀèÅÙÆâ€ÇºÇ¹âÍ¥Àèœç°Ì€È€·€Ê€±€ì€Ð€Ê€é€Ê€€
+€¿€á¡€chg_pri¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€È€Ï¿¶Éñ€€€¬°Û€Ê€ë€³€È€Ë€Ê€ë¡¥
+
+(c)€Ï¡€ŠÌITRON4.0»ÅÍÍ€Î¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥óŒêœç€«€éÍè€ëÀ©žÂ€Ç€¢€ê¡€
+TOPPERS¿·À€Âå¥«¡Œ¥Í¥ë€Ç€ÏÉ¬Í×€Ê€€¡¥
+
+(d)€ÎÀ©žÂ€Ï¡€Æ±€žµ¯Æ°»þÍ¥ÀèÅÙ€ò»ý€ÄÀ©Ìó¥¿¥¹¥¯€òÆ±°ì€Î¥¹¥¿¥Ã¥¯€ÇŒÂ¹Ô€¹€ë
+Êý¿Ë€È€·€¿€¿€á¡€Œè€êÊ§€Ã€Æ€âÌäÂê€¬€Ê€€¡¥
+
+€³€³€Ë€Ïµ­ºÜ€·€Æ€€€Ê€€€¬¡€À©Ìó¥¿¥¹¥¯€òŽÞ€à¥ì¥Ç¥£¥­¥å¡Œ€ËÂÐ€¹€ërot_rdq€Ï¡€
+À©žÂ€·€Ê€±€ì€Ð€Ê€é€Ê€€¡¥
+
+¡ûASP¥«¡Œ¥Í¥ë€Ë€ª€±€ëÀ©Ìó¥¿¥¹¥¯€Î»ÅÍÍ
+
+ŸåœÒ€Îž¡Æ€€ò€Õ€Þ€š€Æ¡€ASP¥«¡Œ¥Í¥ë€Ë€ª€±€ëÀ©Ìó¥¿¥¹¥¯€Ï¡€ÄÌŸï€Î¥¿¥¹¥¯€ÈÈæ
+³Ó€·€ÆŒ¡€ÎÀ©žÂ€ò»ý€Ä€â€Î€È€¹€ë¡¥
+
+(a) ¹­µÁ€ÎÂÔ€ÁŸõÂÖ€ËÆþ€ë€³€È€¬€Ç€­€Ê€€
+(b) chg_pri€Ë€è€ê¥Ù¡Œ¥¹Í¥ÀèÅÙ€òÊÑ¹¹€¹€ë€³€È€¬€Ç€­€Ê€€
+(c) Œ«¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ€ò¡Êµ¯Æ°»þÍ¥ÀèÅÙ€ÈÆ±€ž€«€œ€ì€è€ê¹â€€ÃÍ€Ë¡ËÊÑ
+    ¹¹€¹€ë¥µ¡Œ¥Ó¥¹¥³¡Œ¥ëras_pri€ò¿·Àß€¹€ë
+
+€Þ€¿¡€ÂÐŸÝÍ¥ÀèÅÙ€ÎÃæ€ÎÀèÆ¬€Î¥¿¥¹¥¯€¬À©Ìó¥¿¥¹¥¯€Ç€¢€ëŸì¹ç€Ë€Ï¡€rot_rdq€Ï
+È¯¹Ô€Ç€­€Ê€€€â€Î€È€¹€ë¡¥
+
+°ÊŸå€«€é»ÅÍÍ€ò¶ñÂÎ²œ€¹€ë€È¡€Œ¡€Î€è€Š€Ë€Ê€ë¡¥
+
+(1) CRE_TSK€Ë€ª€€€Æ¡€¥¿¥¹¥¯Â°À­€ËTA_RSTR€ò»ØÄê€¹€ë€È¡€ÀžÀ®€µ€ì€ë¥¿¥¹¥¯
+€ÏÀ©Ìó¥¿¥¹¥¯€È€Ê€ë¡¥À©Ìó¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯ÎÎ°è€ÎÀèÆ¬ÈÖÃÏ€ËNULL€ò»ØÄê€·€¿
+Ÿì¹ç¡€Æ±€žµ¯Æ°»þÍ¥ÀèÅÙ€ò»ý€ÄÀ©Ìó¥¿¥¹¥¯€Ç¡€Æ±°ì€Î¥¹¥¿¥Ã¥¯ÎÎ°è€¬¶ŠÍ­€µ€ì
+€ë¡¥
+
+(2) À©Ìó¥¿¥¹¥¯€¬¡€Œ«¥¿¥¹¥¯€òÂÔ€ÁŸõÂÖ€Ë€¹€ë²ÄÇœÀ­€Î€¢€ë¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ò
+žÆ€ÓœÐ€·€¿Ÿì¹ç¡€E_NOSPT¥š¥é¡Œ€È€Ê€ë¡¥
+
+(3) À©Ìó¥¿¥¹¥¯€òÂÐŸÝ€È€·€Æ¡€wup_tsk¡€iwup_tsk¡€can_wup¡€rel_wai¡€
+irel_wai¡€sus_tsk¡€rsm_tsk€òžÆ€ÓœÐ€·€¿Ÿì¹ç¡€E_NOSPT¥š¥é¡Œ€È€Ê€ë¡¥
+
+(4) À©Ìó¥¿¥¹¥¯€òÂÐŸÝ€È€·€Æchg_pri€òžÆ€ÓœÐ€·€¿Ÿì¹ç¡€E_NOSPT¥š¥é¡Œ€È€Ê€ë¡¥
+
+(5) rot_rdq¡€irot_rdq€Ï¡€ÂÐŸÝÍ¥ÀèÅÙ€ò»ý€ÄŒÂ¹Ô€Ç€­€ëŸõÂÖ€Î¥¿¥¹¥¯€ÎÃæ€ÇºÇ
+€âÍ¥Àèœç°Ì€¬¹â€€¥¿¥¹¥¯€¬À©Ìó¥¿¥¹¥¯€Ç€¢€ëŸì¹ç¡€E_NOSPT¥š¥é¡Œ€È€Ê€ë¡¥
+
+(6) °Ê²Œ€Î»ÅÍÍ€Î¥µ¡Œ¥Ó¥¹¥³¡Œ¥ëras_pri€ò¿·Àß€¹€ë¡¥
+
+----------------------------------------------------------------------
+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€Ç»ØÄê€·€¿Í¥ÀèÅÙ€ËÊÑ¹¹€µ€ì€ë¡¥€œ€ì€ËÈŒ€Ã
+€Æ¡€Œ«¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€âÊÑ¹¹€µ€ì€ë¡¥
+
+Œ«¥¿¥¹¥¯€¬¡€Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€€Ê€€Ÿì¹ç€Ë€Ï¡€Æ±€žÍ¥
+ÀèÅÙ€Î¥¿¥¹¥¯€ÎÃæ€ÇºÇ¹âÍ¥Àèœç°Ì€È€Ê€ë¡¥Œ«¥¿¥¹¥¯€¬¡€Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã
+¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€€ëŸì¹ç€Ë€Ï¡€Œ«¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€¬ÊÑ¹¹€µ€ì€ë€³€È€Ï€Ê
+€¯¡€Í¥Àèœç°Ì€âÊÑ¹¹€µ€ì€Ê€€¡¥
+
+tskpri€ËTPRI_INI¡Ê¡á0¡Ë€ò»ØÄê€¹€ë€È¡€Œ«¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ€¬¡€µ¯Æ°»þÍ¥
+ÀèÅÙ€ËÊÑ¹¹€µ€ì€ë¡¥
+
+tskpri€Ï¡€TPRI_INI€Ç€¢€ë€«¡€TMIN_TPRI°ÊŸå¡€TMAX_TPRI°Ê²Œ€Ç€Ê€±€ì€Ð€Ê€é
+€Ê€€¡¥€Þ€¿¡€tskpri€Ï¡€Œ«¥¿¥¹¥¯€Îµ¯Æ°»þÍ¥ÀèÅÙ€ÈÆ±€ž€«€œ€ì€è€ê€â¹â€¯€Ê€±
+€ì€Ð€Ê€é€Ê€€¡¥€µ€é€Ë¡€Œ«¥¿¥¹¥¯€¬Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€
+€ë€«¥í¥Ã¥¯€òÂÔ€Ã€Æ€€€ëŸì¹ç¡€tskpri€Ï¡€€œ€ì€é€Î¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎŸåžÂÍ¥Àè
+ÅÙ€ÈÆ±€ž€«€œ€ì€è€êÄã€¯€Ê€±€ì€Ð€Ê€é€Ê€€¡¥
+----------------------------------------------------------------------
+
+°ÊŸå
Index: /doc/sysstat.txt
===================================================================
--- /doc/sysstat.txt	(revision 7)
+++ /doc/sysstat.txt	(revision 7)
@@ -0,0 +1,293 @@
+													TOPPERS Confidential
+		TOPPERS¥×¥í¥ž¥§¥¯¥È ¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó¥á¥â
+		œèÍýÃ±°Ì€ÎŒÂ¹Ô³«»Ï¡¿¥ê¥¿¡Œ¥ó»þ€Î¥·¥¹¥Æ¥àŸõÂÖ
+
+		ºîÀ®ŒÔ: ¹âÅÄ¹­ŸÏ¡ÊÌŸžÅ²°Âç³Ø¡Ë
+		ºÇœª¹¹¿·: 2007Ç¯7·î17Æü
+
+¡û¥á¥â€Î°ÌÃÖÉÕ€±
+
+€³€Î¥á¥â€Ï¡€TOPPERS¿·À€Âå¥«¡Œ¥Í¥ë€Ë€ª€±€ëœèÍýÃ±°Ì€ÎŒÂ¹Ô³«»Ï¡¿¥ê¥¿¡Œ¥ó»þ
+€Î¥·¥¹¥Æ¥àŸõÂÖ€ËŽØ€¹€ë»ÅÍÍ€È¡€TOPPERS/ASP¥«¡Œ¥Í¥ë€Ë€ª€€€Æ€œ€ì€¬€É€Î€è€Š
+€ËŒÂžœ€µ€ì€Æ€€€ë€«€òµ­œÒ€·€¿€â€Î€Ç€¢€ë¡¥
+
+¡ûœèÍýÃ±°Ì€ÎŒÂ¹Ô³«»Ï¡¿¥ê¥¿¡Œ¥ó»þ€Î¥·¥¹¥Æ¥àŸõÂÖ
+
+TOPPERS¿·À€Âå¥«¡Œ¥Í¥ë€Ë€ª€±€ëœèÍýÃ±°Ì€ÎŒÂ¹Ô³«»Ï¡¿¥ê¥¿¡Œ¥ó»þ€Î¥·¥¹¥Æ¥àŸõ
+ÂÖ€Ë€Ä€€€Æ¡€ŠÌITRON4.0»ÅÍÍ€è€ê¶¯€¯µ¬Äê€¹€ë¡¥µ¬Äê€ÎÆâÍÆ€Ë€Ä€€€Æ€Ï¡€
+TOPPERS¿·À€Âå¥«¡Œ¥Í¥ë»ÅÍÍœñ¡Ö2.5.12 œèÍýÃ±°Ì€È¥·¥¹¥Æ¥àŸõÂÖ¡×€ò»²ŸÈ€¹€ë
+€³€È¡¥
+
+¡ü»²¹Í¡§ŠÌITRON4.0/PX»ÅÍÍ
+
+				CPU¥í¥Ã¥¯¡¿		³ä¹þ€ßÍ¥ÀèÅÙ	¥Ç¥£¥¹¥Ñ¥Ã¥Á	¥¿¥¹¥¯Îã³°
+				¥í¥Ã¥¯²òœüŸõÂÖ	¥Þ¥¹¥¯			¶Ø»ß¡¿µö²ÄŸõÂÖ	¶Ø»ß¡¿µö²ÄŸõÂÖ
+------------------------------------------------------------------------------
+¡Ú¥¿¥¹¥¯¡Û
+ŒÂ¹Ô³«»ÏŸò·ï	²òœü			¡Ý				µö²Ä			¡Ý
+ŒÂ¹Ô³«»Ï»þœèÍý	€œ€Î€Þ€Þ		¡Ý				€œ€Î€Þ€Þ		¶Ø»ß€¹€ë
+œªÎ»Á°			²òœü			¡Ý				µö²Ä			Ç€°Õ
+œªÎ»»þœèÍý		Ì€µ¬Äê(*1)		¡Ý				Ì€µ¬Äê(*1)¡¡¡¡¡¡¡Ý
+------------------------------------------------------------------------------
+¡Ú¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó¡Û
+ŒÂ¹Ô³«»ÏŸò·ï	²òœü			¡Ý				Ç€°Õ			µö²Ä
+ŒÂ¹Ô³«»Ï»þœèÍý	€œ€Î€Þ€Þ		¡Ý				€œ€Î€Þ€Þ		¶Ø»ß€¹€ë
+¥ê¥¿¡Œ¥óÁ°		²òœü			¡Ý				Ç€°Õ(*3)		Ç€°Õ
+¥ê¥¿¡Œ¥ó»þœèÍý	Ì€µ¬Äê(*1)		¡Ý				€œ€Î€Þ€Þ		µö²Ä€¹€ë
+------------------------------------------------------------------------------
+¡Ú³ä¹þ€ß¥Ï¥ó¥É¥é¡Û
+ŒÂ¹Ô³«»ÏŸò·ï	²òœü			¡Ý				Ç€°Õ			Ç€°Õ
+ŒÂ¹Ô³«»Ï»þœèÍý	ŒÂÁõ°ÍÂž		¡Ý				€œ€Î€Þ€Þ		€œ€Î€Þ€Þ
+¥ê¥¿¡Œ¥óÁ°		ŒÂÁõÄêµÁ(*2)	¡Ý				žµ€ËÌá€¹(*4)	ÊÑ¹¹ÉÔ²Ä
+¥ê¥¿¡Œ¥ó»þœèÍý	Ì€µ¬Äê(*2)		¡Ý				Ì€µ¬Äê(*1)		€œ€Î€Þ€Þ
+------------------------------------------------------------------------------
+¡ÚISR¡€¥¿¥€¥à¥€¥Ù¥ó¥È¥Ï¥ó¥É¥é¡Û
+ŒÂ¹Ô³«»ÏŸò·ï	²òœü			¡Ý				Ç€°Õ			Ç€°Õ
+ŒÂ¹Ô³«»Ï»þœèÍý	€œ€Î€Þ€Þ		¡Ý				€œ€Î€Þ€Þ		€œ€Î€Þ€Þ
+¥ê¥¿¡Œ¥óÁ°		²òœü			¡Ý				žµ€ËÌá€¹(*4)	ÊÑ¹¹ÉÔ²Ä
+¥ê¥¿¡Œ¥ó»þœèÍý	Ì€µ¬Äê(*1)		¡Ý				Ì€µ¬Äê(*1)		€œ€Î€Þ€Þ
+------------------------------------------------------------------------------
+¡ÚCPUÎã³°¥Ï¥ó¥É¥é¡Û
+ŒÂ¹Ô³«»ÏŸò·ï	Ç€°Õ			¡Ý				Ç€°Õ			Ç€°Õ
+ŒÂ¹Ô³«»Ï»þœèÍý	€œ€Î€Þ€Þ		¡Ý				€œ€Î€Þ€Þ		€œ€Î€Þ€Þ
+¥ê¥¿¡Œ¥óÁ°		žµ€ËÌá€¹		¡Ý				žµ€ËÌá€¹(*4)	ÊÑ¹¹ÉÔ²Ä
+¥ê¥¿¡Œ¥ó»þœèÍý	Ì€µ¬Äê(*1)		¡Ý				Ì€µ¬Äê(*1)		€œ€Î€Þ€Þ
+------------------------------------------------------------------------------
+¡Ú³ÈÄ¥¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë¥ë¡Œ¥Á¥ó¡Û
+ŒÂ¹Ô³«»ÏŸò·ï	Ç€°Õ			¡Ý				Ç€°Õ			Ç€°Õ
+ŒÂ¹Ô³«»Ï»þœèÍý	€œ€Î€Þ€Þ		¡Ý				€œ€Î€Þ€Þ		€œ€Î€Þ€Þ
+¥ê¥¿¡Œ¥óÁ°		Ç€°Õ			¡Ý				Ç€°Õ			Ç€°Õ
+¥ê¥¿¡Œ¥ó»þœèÍý	€œ€Î€Þ€Þ		¡Ý				€œ€Î€Þ€Þ		€œ€Î€Þ€Þ
+------------------------------------------------------------------------------
+
+(*1) ¥ê¥¿¡Œ¥óÁ°€ÎŸò·ï€ËœŸ€ï€º€Ë¥ê¥¿¡Œ¥ó€·€¿Ÿì¹ç€Î¿¶Éñ€€€ÏÌ€ÄêµÁ¡¥¥ê¥¿
+¡Œ¥óÁ°€ÎŸò·ï€ËœŸ€š€Ð¡€¥ê¥¿¡Œ¥óÄŸžå€Ï€œ€Î€Þ€Þ€È€Ê€ë¡¥
+
+(*2) ŒÂÁõÄêµÁ€ÎÊýË¡€ËœŸ€ï€º¥ê¥¿¡Œ¥ó€·€¿Ÿì¹ç€Î¿¶Éñ€€€ÏÌ€ÄêµÁ¡¥ŒÂÁõÄêµÁ
+€ÎÊýË¡€ËœŸ€š€Ð¡€¥ê¥¿¡Œ¥óÄŸžå€ÏCPU¥í¥Ã¥¯²òœüŸõÂÖ€È€Ê€ë¡¥
+
+(*3)¡ÖÇ€°Õ¡×€ÏŒ¡€ÎÍýÍ³€ÇÉÔÅÔ¹ç€Ç€¢€ë¡¥dis_dsp€Èena_dsp€ÎÂÐ€ò¥Í¥¹¥È€µ€»
+€¿€€Ÿì¹ç€ÎÂÐœèË¡€È€·€Æ¡€ŠÌITRON4.0»ÅÍÍ€Ç€Ï¡€sns_dsp€òÍÑ€€€ëÊýË¡€òÄóŒš€·
+€Æ€€€ë¡¥€È€³€í€¬¡€ÈóÆ±Žü€ËŒÂ¹Ô€µ€ì€ë¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óÃæ€Ç¥Ç¥£¥¹¥Ñ¥Ã
+¥Á¶Ø»ß¡¿µö²ÄŸõÂÖ€¬ÊÑ¹¹€µ€ì€ë€È¡€€³€ÎÊýË¡€Ç€ÏÂÐ±þ€Ç€­€Ê€€¡¥€Þ€¿¡€€³€ì€Ë
+Âå€ï€ëÎÉ€€ÊýË¡€âÍÑ°Õ€µ€ì€Æ€€€Ê€€¡¥ŠÌITRON4.0»ÅÍÍºöÄê»þ€Î¹ÍÎžÉÔÂ­€È¹Í€š
+€é€ì€ë¡¥
+
+(*4) ÊÑ¹¹€¹€ë€¿€á€ÎAPI€ÏÉžœà€Ç€Ïµ¬Äê€µ€ì€Æ€€€Ê€€€¿€á¡€¡ÖÊÑ¹¹ÉÔ²Ä¡×€Èž«
+€ë€³€È€â€Ç€­€ë¡¥
+
+¡ûTOPPERS/ASP¥«¡Œ¥Í¥ë€Ë€ª€±€ëŒÂžœ¡ÊµŒ»÷¥³¡Œ¥É¥Ù¡Œ¥¹¡Ë
+
+¡ü¥¿¥¹¥¯€ÎŒÂ¹Ô³«»Ï»þœèÍý
+
+¥¿¥¹¥¯€ÎŒÂ¹Ô³«»Ï»þ€Ï¡€CPU¥í¥Ã¥¯²òœüŸõÂÖ¡Š³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ¡Š
+¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ¡Š¥¿¥¹¥¯Îã³°¶Ø»ßŸõÂÖ€È€·€Ê€±€ì€Ð€Ê€é€Ê€€¡¥°Ê²Œ¡€€³
+€ì€¬ŒÂžœ€µ€ì€Æ€€€ë€³€È€ò³ÎÇ§€¹€ë¡¥
+
+¥¿¥¹¥¯€ÎŒÂ¹Ô³«»Ï»þ€Ï¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ãËÜÂÎ¡Êdispatcher¡Ë€«€é¡€¥¿¥¹¥¯€òŒÂ
+¹Ô³«»Ï€¹€ëœèÍý¡Êstart_r¡Ë€ËÊ¬Žô€·¡€€œ€³€«€é¥¿¥¹¥¯€Îµ¯Æ°ÈÖÃÏ€¬žÆ€ÓœÐ€µ€ì
+€ë¡¥
+
+CPU¥í¥Ã¥¯²òœüŸõÂÖ€Ë€Ä€€€Æ€Ï¡€start_r€Ë€ª€€€Æ¡€CPU¥í¥Ã¥¯²òœüŸõÂÖ€Ë€¹€ëœè
+Íý€¬¹Ô€ï€ì€ë¡¥
+
+dispatcher€Ï¡€¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È¡ŠCPU¥í¥Ã¥¯ŸõÂÖ¡Š³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²ò
+œüŸõÂÖ¡Š¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ€ÇžÆ€ÓœÐ€µ€ì¡€Æ±€žŸõÂÖ€Çstart_r€ØÊ¬Žô€¹€ë¡¥
+start_r€Ç€Ï¡€³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€È¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ß¥Õ¥é¥°€òÊÑ¹¹€·€Ê€€€¿€á¡€
+¥¿¥¹¥¯€ÎŒÂ¹Ô³«»Ï»þ€Ë€Ï¡€³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ¡Š¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²Ä
+ŸõÂÖ€È€Ê€Ã€Æ€€€ë¡¥
+
+¡údispatcher€¬Ÿåµ­Ÿò·ï€ÇžÆ€ÓœÐ€µ€ì€ë€³€È€Î³ÎÇ§€¬É¬Í×¡¥
+
+¥¿¥¹¥¯Îã³°¶Ø»ßŸõÂÖ€Ë€Ä€€€Æ€Ï¡€make_dormant€Ë€ª€€€Æ¡€TCB€Îenatex¥Õ¥£¡Œ¥ë
+¥É€òFALSE€Ë€·€Æ€ª€ê¡€¥¿¥¹¥¯€¬µÙ»ßŸõÂÖ€ÎŽÖ€Ï€³€ì€¬ÊÝ€¿€ì€ë¡¥€œ€Î€¿€á¡€¥¿
+¥¹¥¯€ÎŒÂ¹Ô³«»Ï»þ€Ë€Ï¡€ÆÃÊÌ€ÊœèÍý€ÏÉ¬Í×€Ê€€¡¥
+
+¡ü¥¿¥¹¥¯€ÎœªÎ»»þœèÍý
+
+¥¿¥¹¥¯€ÎœªÎ»»þ€Ë€Ï¡€CPU¥í¥Ã¥¯²òœüŸõÂÖ¡Š³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ¡Š¥Ç¥£
+¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ€È€·€Ê€±€ì€Ð€Ê€é€Ê€€¡¥°Ê²Œ¡€€³€ì€¬ŒÂžœ€µ€ì€Æ€€€ë€³€È€ò
+³ÎÇ§€¹€ë¡¥
+
+¥¿¥¹¥¯€ÎœªÎ»»þ€Ë€Ïext_tsk€¬žÆ€ÓœÐ€µ€ì€ë€¬¡€€œ€ÎÃæ€Ç¡€CPU¥í¥Ã¥¯ŸõÂÖ€ÇžÆ
+€Ð€ì€¿Ÿì¹ç€Ë€Ï€œ€Î²òœü¡Ê¥³¡Œ¥ÉŸå€Ï¡€ext_tskÃæ€ÇCPU¥í¥Ã¥¯ŸõÂÖ€Ë°Ü¹Ô€¹€ë
+ºÝ€Ë¡€CPU¥í¥Ã¥¯ŸõÂÖ€ÇžÆ€Ð€ì€¿Ÿì¹ç€Ë€Ï¡€°Ü¹ÔœèÍý€òŸÊÎ¬€·€Æ€€€ë€À€±¡Ë¡€³ä
+¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœü°Ê³°€ÇžÆ€Ð€ì€¿Ÿì¹ç€Ë€Ï€œ€ÎÁŽ²òœü¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø
+»ßŸõÂÖ€ÇžÆ€Ð€ì€¿Ÿì¹ç€Ë€Ï¥Ç¥£¥¹¥Ñ¥Ã¥Á€Îµö²Ä€ò¹Ô€Ã€Æ€€€ë¡¥
+
+¡ãÌ€Ž°À®¡ä
+
+¡ûTOPPERS/ASP¥«¡Œ¥Í¥ë€Ë€ª€±€ëŒÂžœ¡ÊM68040°ÍÂž¡Ë
+
+¡ü¥¿¥¹¥¯€ÎŒÂ¹Ô³«»Ï
+
+¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã¡Êdispatcher¡Ë€Ï¡€¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È¡€CPU¥í¥Ã¥¯ŸõÂÖ¡€¥Ç¥£
+¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ¡€³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ€ÇžÆ€ÓœÐ€µ€ì€ë¡¥
+
+M68040€Ë€ª€€€Æ€Ï¡€¡úŸå€ÎŸò·ï€¬Ëþ€¿€µ€ì€Æ€€€ë€³€È€ò³ÎÇ§€¹€ëÉ¬Í×€¬€¢€ë¡ú¡¥
+
+¥¿¥¹¥¯ŒÂ¹Ô³«»Ï»þ€Ï¡€CPU¥í¥Ã¥¯²òœüŸõÂÖ¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ¡€³ä¹þ€ßÍ¥Àè
+ÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ€È€·€Ê€±€ì€Ð€Ê€é€Ê€€€¿€á¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã€«€é¥¿¥¹¥¯ŒÂ
+¹Ô³«»Ï€¹€ëœèÍý¡Êstart_r¡Ë€Ë€ª€€€Æ¡€CPU¥í¥Ã¥¯€ò²òœü€¹€ë¡¥
+
+M68040€Ë€ª€€€Æ€Ï¡€start_rÃæ€ÎŒ¡€ÎœèÍý€Ç€³€ì€òŒÂžœ€·€Æ€€€ë¡¥
+
+----------------------------------------
+	clr.l lock_flag						/* CPU¥í¥Ã¥¯²òœüŸõÂÖ€Ë */
+	and.w #~0x0700, %sr
+----------------------------------------
+
+start_r€¬ŒÂ¹Ô€µ€ì€ë»þ€Ë€Ï¡€¡Ê¥â¥Ç¥ëŸå€Î¡Ë³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ€È
+€Ê€Ã€Æ€€€ë€¿€á¡€¥¹¥Æ¡Œ¥¿¥¹¥ì¥ž¥¹¥¿¡ÊSR¡ËÃæ€ÎIPM€ò0€È€·€Æ€è€€¡Êsaved_iipm
+€ËÊÝÂž€·€¿ÃÍ€ËÌá€¹É¬Í×€Ï€Ê€€¡Ë¡¥
+
+make_dormant€Ë€ª€€€Æ¡€TCB€Îenatex¥Õ¥£¡Œ¥ë¥É€òfalse€Ë€·€Æ€ª€ê¡€¥¿¥¹¥¯€¬
+µÙ»ßŸõÂÖ€ÎŽÖ€Ï€³€ì€¬ÊÝ€¿€ì€ë¡¥€œ€Î€¿€á¡€¥¿¥¹¥¯€ÎŒÂ¹Ô³«»Ï»þ€Ë¥¿¥¹¥¯Îã³°
+¶Ø»ßŸõÂÖ€È€¹€ë€¿€á€Ë¡€ÆÃÊÌ€ÊœèÍý€ÏÉ¬Í×€Ê€€¡¥
+
+¡ü¥¿¥¹¥¯€ÎœªÎ»
+
+ext_tsk€Ë€ª€€€Æ¡€CPU¥í¥Ã¥¯ŸõÂÖ€ÇžÆ€Ð€ì€¿Ÿì¹ç€Ë€Ï€œ€Î²òœü¡Ê¥³¡Œ¥ÉŸå€Ï¡€
+ext_tskÃæ€ÇCPU¥í¥Ã¥¯ŸõÂÖ€Ë°Ü¹Ô€¹€ëºÝ€Ë¡€CPU¥í¥Ã¥¯ŸõÂÖ€ÇžÆ€Ð€ì€¿Ÿì¹ç€Ë€Ï¡€
+°Ü¹ÔœèÍý€òŸÊÎ¬€·€Æ€€€ë€À€±¡Ë¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ€ÇžÆ€Ð€ì€¿Ÿì¹ç€Ë€Ï¥Ç¥£
+¥¹¥Ñ¥Ã¥Á€Îµö²Ä¡€³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœü°Ê³°€ÇžÆ€Ð€ì€¿Ÿì¹ç€Ë€Ï€œ€ÎÁŽ²ò
+œü€ò¹Ô€Ã€Æ€€€ë¡¥
+
+¡ü¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎŒÂ¹Ô³«»Ï
+
+¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎžÆœÐ€·œèÍý¡Êcall_texrtn¡Ë€Ï¡€¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È¡€
+CPU¥í¥Ã¥¯ŸõÂÖ¡€¥¿¥¹¥¯Îã³°µö²ÄŸõÂÖ€ÇžÆ€ÓœÐ€µ€ì€ë¡¥¥¿¡Œ¥²¥Ã¥ÈÈó°ÍÂžÉô€Ë€ª
+€€€Æ€Ï¡€ras_tex€Èena_tex€«€écall_texrtn€òžÆ€ÓœÐ€·€Æ€€€ë€¬¡€€€€º€ì€â€³€Î
+Ÿò·ï€òËþ€¿€·€Æ€€€ë¡¥
+
+M68040€Ë€ª€€€Æ€Ï¡€dispatch_r€Èret_int_r€Î2²Õœê€«€écall_texrtn€òžÆ€ÓœÐ€·
+€Æ€€€ë¡¥dispatch_r€¬ŒÂ¹Ô€µ€ì€ë»þ€Ë€Ï¡€CPU¥í¥Ã¥¯ŸõÂÖ€È€Ê€Ã€Æ€ª€ê¡€¥¿¥¹¥¯
+Îã³°µö²ÄŸõÂÖ€ÎŸì¹ç€Î€ßcall_texrtn€òžÆ€ÓœÐ€¹€è€Š€Ë€·€Æ€€€ë¡¥ret_int_r€Ë
+€Ä€€€Æ€â¡€ŒÂ¹Ô€µ€ì€ë»þ€Ë€ÏCPU¥í¥Ã¥¯ŸõÂÖ€È€Ê€Ã€Æ€ª€ê¡€¥¿¥¹¥¯Îã³°µö²ÄŸõÂÖ
+€ÎŸì¹ç€Î€ßcall_texrtn€òžÆ€ÓœÐ€¹€è€Š€Ë€·€Æ€€€ë¡Êcall_texrtn€òÄŸÀÜžÆ€ÖÂå
+€ï€ê€Ëcalltex€òžÆ€Ù€Ð¡€calltex€Ë€ª€€€Æ¡€¥¿¥¹¥¯Îã³°µö²ÄŸõÂÖ€ÎŸì¹ç€Î€ß
+call_texrtn€òžÆ€ÓœÐ€¹€è€Š€Ë€Ê€Ã€Æ€€€ë¡Ë¡¥
+
+¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óŒÂ¹Ô³«»Ï»þ€Ï¡€CPU¥í¥Ã¥¯²òœüŸõÂÖ¡€¥¿¥¹¥¯Îã³°¶Ø»ßŸõ
+ÂÖ€È€·€Ê€±€ì€Ð€Ê€é€Ê€€€¿€á¡€call_texrtn€Ë€ª€€€Æ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ò
+žÆ€ÓœÐ€¹Á°€Ë¡€CPU¥í¥Ã¥¯€ò²òœü€·¡€¥¿¥¹¥¯Îã³°¶Ø»ßŸõÂÖ€È€·€Æ€€€ë¡¥€Þ€¿¡€¥Ç¥£
+¥¹¥Ñ¥Ã¥Á¶Ø»ß¡¿µö²ÄŸõÂÖ€È³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€Ï¡€žÆ€ÓœÐ€·Á°€ÎŸõÂÖ€òÊÝÂž€¹
+€ë€Î€ß€Ç¡€ŸõÂÖ€ÎÊÑ¹¹€Ï¹Ô€ï€Ê€€¡¥
+
+¡ü¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€«€é€Î¥ê¥¿¡Œ¥ó
+
+call_texrtn€Ë€ª€€€Æ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€«€éÌá€Ã€¿žå€Ë¡€CPU¥í¥Ã¥¯ŸõÂÖ
+€Ø€Î°Ü¹Ô¡ÊCPU¥í¥Ã¥¯ŸõÂÖ€ÇÌá€Ã€Æ€­€¿Ÿì¹ç€Ë€ÏŸÊÎ¬¡Ë€È¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ß¡¿
+µö²ÄŸõÂÖ€È³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€òžÆ€ÓœÐ€·Á°€ÎŸõÂÖ€ËÌá€¹œèÍý€ò¹Ô€Š¡¥€Þ€¿¡€
+¥¿¥¹¥¯Îã³°µö²ÄŸõÂÖ€È€¹€ë¡Ê¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€òÂ³€±€ÆžÆ€ÓœÐ€¹Ÿì¹ç€Ë
+€Ï¡€¥¿¥¹¥¯Îã³°µö²ÄŸõÂÖ€Ë€Ï€·€Ê€€¡Ë¡¥CPU¥í¥Ã¥¯ŸõÂÖ€Î²òœü€Ï¡€call_texrtn
+€«€é¥ê¥¿¡Œ¥ó€·€¿žå€Ë¹Ô€Š¡¥
+
+¥¿¡Œ¥²¥Ã¥ÈÈó°ÍÂžÉô€Ë€ª€€€Æ¡€ras_tex€Èena_tex€«€écall_texrtn€¬žÆ€ÓœÐ€µ€ì
+€¿Ÿì¹ç€Ë€Ï¡€call_texrtn€«€é€Î¥ê¥¿¡Œ¥ó€Ë€è€ê¥µ¡Œ¥Ó¥¹¥³¡Œ¥ëœèÍýŽØ¿ô€ËÌá€ë¡¥
+¥µ¡Œ¥Ó¥¹¥³¡Œ¥ëœèÍýŽØ¿ô€Ç€Ï¡€call_texrtn€«€éÌá€Ã€¿žå€Ë¡€t_unlock_cpu€òžÆ
+€ÓœÐ€·€ÆCPU¥í¥Ã¥¯ŸõÂÖ€ò²òœü€¹€ë¡¥
+
+M68040€Ë€ª€€€Æ¡€dispatch_r€«€écall_texrtn€¬žÆ€ÓœÐ€µ€ì€¿Ÿì¹ç€Ë€Ï¡€
+call_texrtn€«€é€Î¥ê¥¿¡Œ¥ó€Ë€è€ê¡€ÄŸÀÜ¥µ¡Œ¥Ó¥¹¥³¡Œ¥ëœèÍýŽØ¿ô€ËÌá€ë
+¡Êdispatch€ÎžÆœÐ€·€«€éÌá€ë¡Ë¡¥¥µ¡Œ¥Ó¥¹¥³¡Œ¥ëœèÍýŽØ¿ô€Ç€Ï¡€dispatch€«€é
+Ìá€Ã€¿žå€Ë¡€t_unlock_cpu€òžÆ€ÓœÐ€·€ÆCPU¥í¥Ã¥¯ŸõÂÖ€ò²òœü€¹€ë¡¥
+
+ret_int_r€«€écall_texrtn€¬žÆ€ÓœÐ€µ€ì€¿Ÿì¹ç€Ë€Ï¡€call_texrtn€«€é€Î¥ê¥¿¡Œ
+¥óžå€Ë¡€lock_flag€ò¥¯¥ê¥¢€·¡€rteÌ¿Îá€Ë€è€êIPM€ò³ä¹þ€ßÈ¯ÀžÁ°€ÎÃÍ€ËÌá€·€Æ¡€
+CPU¥í¥Ã¥¯ŸõÂÖ€ò²òœü€¹€ë¡¥€³€Î¥±¡Œ¥¹€Ï€µ€é€Ë¡€ret_int€Ë€ª€€€Æ¥¿¥¹¥¯ÀÚŽ¹
+€š€ò¹Ô€Ã€¿Ÿì¹ç€È¡€¹Ô€ï€Ê€«€Ã€¿Ÿì¹ç¡Ê¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€òŒÂ¹Ô€¹€ë€¿
+€á€Ëreqflg€ò¥»¥Ã¥È€·€¿Ÿì¹ç¡Ë€ËÊ¬Îà€Ç€­€ë€¬¡€€€€º€ì€ÎŸì¹ç€â¡€rteÌ¿Îá€Ë€è
+€ê¡€IPM€Ï¥¿¥¹¥¯€¬³ä¹þ€ß€òŒõ€±ÉÕ€±€¿»þ€ÎŸõÂÖ€ËÌá€ê¡€»ÅÍÍ€Ë¹çÃ×€·€¿¿¶Éñ€€
+€È€Ê€Ã€Æ€€€ë¡¥
+
+¡ü³ä¹þ€ß¥Ï¥ó¥É¥é€ÎŒÂ¹Ô³«»Ï
+
+³ä¹þ€ß¥Ï¥ó¥É¥é€ÎŒÂ¹Ô³«»Ï»þ€Ë€Ï¡€¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€Ë€ª€€€Æ¡€³ä¹þ€ßÍ¥ÀèÅÙ
+¥Þ¥¹¥¯€ò¡€ŒÂ¹Ô³«»Ï€¹€ë³ä¹þ€ß¥Ï¥ó¥É¥é€Î³ä¹þ€ßÍ¥ÀèÅÙ€ËÀßÄê€¹€ë¡¥
+
+M68040€Ë€ª€€€Æ€Ï¡€³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€ÎÊÑ¹¹€Ï¡€¥Ï¡Œ¥É¥Š¥§¥¢€Ç¹Ô€ï€ì€ë€¿
+€á¡€¥œ¥Õ¥È¥Š¥§¥¢€Ç€ÏÆÃÊÌ€ÎœèÍý€ò¹Ô€ŠÉ¬Í×€¬€Ê€€¡¥
+
+¡ü³ä¹þ€ß¥Ï¥ó¥É¥é€«€é€Î¥ê¥¿¡Œ¥ó
+
+³ä¹þ€ß¥Ï¥ó¥É¥é€«€é€Î¥ê¥¿¡Œ¥ó»þ€Ë€Ï¡€¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€Ë€ª€€€Æ¡€CPU¥í¥Ã¥¯
+²òœüŸõÂÖ€ËÌá€·¡€³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€ò³ä¹þ€ß¥Ï¥ó¥É¥éŒÂ¹Ô³«»ÏÁ°€ÎÃÍ€ËÌá€¹¡¥
+
+M68040€Ë€ª€€€Æ€Ï¡€³ä¹þ€ß¥Ï¥ó¥É¥é€«€é€ÎœÐžýœèÍý¡Êret_int¡Ë€ÎœèÍý€ò¡€€€€¯
+€Ä€«€ÎŒÂ¹Ô·ÐÏ©€ËÊ¬€±€Æ³ÎÇ§€¹€ëÉ¬Í×€¬€¢€ë¡¥
+
+(1) Ìá€êÀè€¬Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€«¡€reqflg€¬false€ÎŸì¹ç€Ë€Ï¡€ret_int_1
+€Ë€ª€€€Æ¡€lock_flag€ò¥¯¥ê¥¢€·¡€rteÌ¿Îá€Ë€è€êIPM€ò³ä¹þ€ßÈ¯ÀžÁ°€ÎÃÍ€ËÌá€·
+€Æ¡€CPU¥í¥Ã¥¯ŸõÂÖ€ò²òœü€·¡€³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€òžµ€ÎÃÍ€ËÌá€¹¡¥
+
+(2) ¥¿¥¹¥¯ÀÚŽ¹€š€¬É¬Í×€ÊŸì¹ç€Ë€Ï¡€CPU¥í¥Ã¥¯ŸõÂÖ€Ë°Ü¹Ô€·€Æ¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã
+¡Êdispatcher¡Ë€ØÊ¬Žô€¹€ë¡¥€³€ÎºÝ€Ë¡€³ä¹þ€ßÈ¯ÀžÁ°€ÎIPM¡Ê¥Ç¥£¥¹¥Ñ¥Ã¥ÁÊÝÎ±
+ŸõÂÖ€Ç€Ê€€€³€È€«€é¡€TIPM_ENAALL€Ë€Ê€Ã€Æ€€€ë€Ï€º¡Ë€ò¡€saved_iipm€ËÊÝÂž€¹
+€ë¡¥€³€ì€Ë€è€ê¡€Œ¡€ËŒÂ¹Ô€¹€Ù€­¥¿¥¹¥¯€Ø€ÈÌá€ëÁ°€ËCPU¥í¥Ã¥¯ŸõÂÖ€ò²òœü€¹€ë
+¥¿¥€¥ß¥ó¥°€Ç¡€CPU¥í¥Ã¥¯ŸõÂÖ€ò²òœü€·¡€³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€¬³ä¹þ€ßÈ¯ÀžÁ°€Î
+ÃÍ€ËÀßÄê€µ€ì€ë€³€È€Ë€Ê€ë¡¥
+
+(3) ¥¿¥¹¥¯ÀÚŽ¹€š€¬É¬Í×€Ê€¯¡€¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎŒÂ¹Ô€¬É¬Í×€ÊŸì¹ç€Ë
+€Ï¡€CPU¥í¥Ã¥¯ŸõÂÖ€Ë°Ü¹Ô€·€Æ¡€call_rettex€òžÆ€ÓœÐ€¹¡¥€³€ÎºÝ€Ë¡€³ä¹þ€ßÈ¯
+ÀžÁ°€ÎIPM¡ÊTIPM_ENAALL€Ç€¢€ë€È€ÏžÂ€é€Ê€€¡Ë€ò¡€saved_iipm€ËÊÝÂž€¹€ë¡¥€³
+€ì€Ë€è€ê¡€call_rettex€ÎÃæ€Ç¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€òžÆ€ÓœÐ€¹Á°€ËCPU¥í¥Ã
+¥¯ŸõÂÖ€ò²òœü€¹€ë¥¿¥€¥ß¥ó¥°€Ç¡€CPU¥í¥Ã¥¯ŸõÂÖ€ò²òœü€·¡€³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯
+€¬³ä¹þ€ßÈ¯ÀžÁ°€ÎÃÍ€ËÀßÄê€µ€ì€ë€³€È€Ë€Ê€ë¡¥
+
+¡ü³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó¡ÊISR¡Ë€ÎŒÂ¹Ô³«»Ï
+
+³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó¡ÊISR¡Ë€Ï¡€¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿€¬ÀžÀ®€¹€ë³ä¹þ€ß¥Ï¥ó
+¥É¥é€«€éžÆ€ÓœÐ€¹¡¥ISR€ÎžÆœÐ€·€Ï¡€³ä¹þ€ß¥Ï¥ó¥É¥é€ÎŒÂ¹Ô³«»Ïžå€Ë€œ€Î€Þ€Þ€Î
+ŸõÂÖ€Ç¹Ô€Š€«¡€ÂŸ€ÎISR€«€é¥ê¥¿¡Œ¥ó€·€¿žå€Ëžµ€ÎŸõÂÖ€ËÌá€·€¿žå€Ë¹Ô€Š¡¥€€€º
+€ì€ÎŸì¹ç€â¡€ISR€ÎŒÂ¹Ô³«»Ï»þ€ÎŸò·ï€òËþ€¿€·€Æ€€€ë¡¥
+
+¡ü³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó¡ÊISR¡Ë€«€é€Î¥ê¥¿¡Œ¥ó
+
+³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó¡ÊISR¡Ë€«€é€Î¥ê¥¿¡Œ¥óžå€ÎœèÍý€Ï¡€¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ
+¥¿€¬ÀžÀ®€¹€ë³ä¹þ€ß¥Ï¥ó¥É¥é€ËŽÞ€Þ€ì€ë¡¥€œ€³€Ç€Ï¡€CPU¥í¥Ã¥¯ŸõÂÖ€Ç€¢€ì€Ð€œ
+€ì€ò²òœü€·¡€³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€òISRžÆœÐ€·Á°€ÎÃÍ€ËÌá€¹¡¥
+
+¡ü¥¿¥€¥à¥€¥Ù¥ó¥È¥Ï¥ó¥É¥é€ÎŒÂ¹Ô³«»Ï
+
+ŒþŽü¥Ï¥ó¥É¥é€Ï¥¿¡Œ¥²¥Ã¥ÈÈó°ÍÂžÉô€Îcall_cychdr€«€é¡€¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€Ï¥¿¡Œ
+¥²¥Ã¥ÈÈó°ÍÂžÉô€Îcall_almhdr€«€éžÆ€ÓœÐ€¹¡¥€€€º€ì€â¡€žÆœÐ€·Á°€ËCPU¥í¥Ã¥¯
+ŸõÂÖ€ò²òœü€¹€ë¡¥€³€³€Ç¡€CPU¥í¥Ã¥¯ŸõÂÖ€Ë°Ü¹Ô€·€¿€Î€Ïsignal_time€ÎÃæ€Î€Ï
+€º€Ê€Î€Ç¡€³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€Ï¡€signal_time€¬žÆ€Ð€ì€¿»þ€ÎÃÍ€ËÀßÄê€µ€ì€ë¡¥
+
+¡ü¥¿¥€¥à¥€¥Ù¥ó¥È¥Ï¥ó¥É¥é€«€é€Î¥ê¥¿¡Œ¥ó
+
+¥¿¥€¥à¥€¥Ù¥ó¥È¥Ï¥ó¥É¥é€«€é€Î¥ê¥¿¡Œ¥óžå€ÎœèÍý€Ï¡€ŒþŽü¥Ï¥ó¥É¥é€Ë€Ä€€€Æ€Ï
+¥¿¡Œ¥²¥Ã¥ÈÈó°ÍÂžÉô€Îcall_cychdr€Ë¡€¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€Ë€Ä€€€Æ€Ï¥¿¡Œ¥²¥Ã¥È
+Èó°ÍÂžÉô€Îcall_almhdr€ËŽÞ€Þ€ì€ë¡¥€œ€³€Ç€Ï¡€CPU¥í¥Ã¥¯ŸõÂÖ€Ç€Ê€±€ì€ÐCPU¥í¥Ã
+¥¯ŸõÂÖ€ËÌá€·¡ÊCPU¥í¥Ã¥¯ŸõÂÖ€Î²òœü€Ï¡€signal_time€Ç¹Ô€ï€ì€ë¡Ë¡€³ä¹þ€ßÍ¥
+ÀèÅÙ¥Þ¥¹¥¯€ò¥¿¥€¥à¥€¥Ù¥ó¥È¥Ï¥ó¥É¥éžÆœÐ€·Á°€ÎÃÍ€ËÌá€¹¡¥
+
+¡üCPUÎã³°¥Ï¥ó¥É¥é€ÎŒÂ¹Ô³«»Ï
+
+CPUÎã³°¥Ï¥ó¥É¥é€ÎŒÂ¹Ô³«»Ï»þ€Ë€Ï¡€ŒÂ¹Ô³«»ÏÁ°€Î¥·¥¹¥Æ¥àŸõÂÖ€òÊÝÂž€¹€ë€Î€ß
+€Ç¡€¥·¥¹¥Æ¥àŸõÂÖ€ò€œ€Î€Þ€Þ°ú€­·Ñ€°¡¥
+
+M68040€Ë€ª€€€Æ€Ï¡€Îã³°œèÍýŒÂ¹Ô³«»ÏÄŸžå€Î¥¹¥Æ¡Œ¥¿¥¹¥ì¥ž¥¹¥¿¡ÊSR¡Ë€È
+lock_flag€ò¥¹¥¿¥Ã¥¯€ËÊÝÂž€·€¿žå¡€¥·¥¹¥Æ¥àŸõÂÖ€òÊÑ¹¹€»€º€Ë¡€CPUÎã³°œèÍý
+¥ë¡Œ¥Á¥ó€òžÆ€ÓœÐ€¹¡¥
+
+¡üCPUÎã³°¥Ï¥ó¥É¥é€«€é€Î¥ê¥¿¡Œ¥ó
+
+CPUÎã³°¥Ï¥ó¥É¥é€«€é€Î¥ê¥¿¡Œ¥ó»þ€Ë€Ï¡€¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€Ë€ª€€€Æ¡€CPU¥í¥Ã
+¥¯¡¿¥í¥Ã¥¯²òœüŸõÂÖ€È³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€ò¡€CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»ÏÁ°€ÎŸõ
+ÂÖ€ËÌá€¹¡¥
+
+M68040€Ë€ª€€€Æ€Ï¡€CPUÎã³°¥Ï¥ó¥É¥é€«€é€ÎœÐžýœèÍý¡Êret_exc¡Ë€Ë€ª€€€Æ¡€€Þ
+€º¡€lock_flag€òžµ€ÎÃÍ€ËÌá€·€Æ€€€ë¡¥³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€Ë€Ä€€€Æ€Ï¡€€€€¯€Ä
+€«€ÎŒÂ¹Ô·ÐÏ©€ËÊ¬€±€Æ³ÎÇ§€¹€ëÉ¬Í×€¬€¢€ë¡¥
+
+(1) Ìá€êÀè€¬Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€«¡€reqflg€¬false€ÎŸì¹ç€Ë€Ï¡€ret_exc_2
+€Ë€ª€€€Æ¡€rteÌ¿Îá€Ë€è€êIPM€ò³ä¹þ€ßÈ¯ÀžÁ°€ÎÃÍ€ËÌá€·€Æ¡€³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹
+¥¯€òžµ€ÎÃÍ€ËÌá€¹¡¥CPU¥í¥Ã¥¯ŸõÂÖ€ÇCPUÎã³°€¬È¯Àž€·€¿Ÿì¹ç€Ë€Ï¡€reqflg€¬
+true€Ë€Ê€ë€³€È€Ï€Ê€€€Î€Ç¡€€³€Î·ÐÏ©€ÇŒÂ¹Ô€µ€ì€ë¡¥
+
+(2,3) €œ€ÎÂŸ€ÎŸì¹ç€Ï¡€CPU¥í¥Ã¥¯²òœüŸõÂÖ€ÇCPUÎã³°€¬È¯Àž€·€¿Ÿì¹ç€Ç€¢€ê¡€
+³ä¹þ€ß¥Ï¥ó¥É¥é€«€é€ÎœÐžýœèÍý€ÈÆ±ÍÍ€Ç€¢€ë¡¥
+
+°ÊŸå
Index: /doc/user.txt
===================================================================
--- /doc/user.txt	(revision 7)
+++ /doc/user.txt	(revision 7)
@@ -0,0 +1,2304 @@
+
+		TOPPERS/ASP¥«¡Œ¥Í¥ë
+		¥æ¡Œ¥¶¡Œ¥º¥Þ¥Ë¥å¥¢¥ë
+
+		ÂÐ±þ¥Ð¡Œ¥ž¥ç¥ó: Release 1.9.3
+		ºÇœª¹¹¿·: 2015Ç¯7·î31Æü
+
+€³€Î¥É¥­¥å¥á¥ó¥È€Ï¡€TOPPERS/ASP¥«¡Œ¥Í¥ë€ò»ÈÍÑ€¹€ë€¿€á€ËÉ¬Í×€Ê»ö¹à€òÀâÌÀ
+€¹€ë€â€Î€Ç€¢€ë¡¥
+
+----------------------------------------------------------------------
+ TOPPERS/ASP Kernel
+     Toyohashi Open Platform for Embedded Real-Time Systems/
+     Advanced Standard Profile Kernel
+
+ Copyright (C) 2005-2015 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$
+----------------------------------------------------------------------
+
+¡ûÌÜŒ¡
+
+£±¡¥TOPPERS/ASP¥«¡Œ¥Í¥ë€Î³µÍ×
+	1.1 TOPPERS/ASP¥«¡Œ¥Í¥ë€Î°ÌÃÖÉÕ€±
+	1.2 TOPPERS/ASP¥«¡Œ¥Í¥ë€Î»ÅÍÍ
+	1.3 ¥Þ¥€¥°¥ì¡Œ¥·¥ç¥ó¥¬¥€¥É
+	1.4 µ¡Çœ³ÈÄ¥¡Š¥Á¥å¡Œ¥Ë¥ó¥°¥¬¥€¥É
+	1.5 ŽûÃÎ€ÎÌäÂê
+	1.6 CygwinŽÄ¶­€Ë€ª€±€ëÃí°Õ»ö¹à
+£²¡¥¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô
+	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 ¥·¥¹¥Æ¥à€Îµ¯Æ°»þ€ÎœéŽü²œœèÍý
+	11.8 rodata¥»¥¯¥·¥ç¥ó€òRAM€ËÃÖ€¯Ÿì¹ç
+£±£²¡¥»²¹ÍŸðÊó
+	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¿·À€Âå¥«¡Œ¥Í¥ëÅý
+¹ç»ÅÍÍœñ¡ÊRelease 1.7.1¡Ë¡×€ò»²ŸÈ€¹€ë€³€È¡¥
+
+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¥Ó¥Ã¥È¥¢¥É¥ì¥¹€ËÂÐ±þ€·€Æ€€€Ê€€€³€È€Ç€¢€ë¡¥
+
+1.6 CygwinŽÄ¶­€Ë€ª€±€ëÃí°Õ»ö¹à
+
+CygwinŽÄ¶­€Ë€ª€€€Æ€Ï¡€¥Ç¥£¥ì¥¯¥È¥ê€Î»ØÄê€òÁêÂÐ¥Ñ¥¹€Ç¹Ô€Š€³€È€ò¿äŸ©€¹€ë¡¥
+€³€ì€Ï¡€CygwinŽÄ¶­€ÎÀäÂÐ¥Ñ¥¹€Ï¡€Windows¥Í¥€¥Æ¥£¥Ö€Ç¥Ó¥ë¥É€µ€ì€¿¥Ä¡Œ¥ë€Ï
+²òŒá€Ç€­€Ê€€€¿€á€Ç€¢€ë¡¥
+
+
+£²¡¥¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô
+
+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.9.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.52.0
+		GNU Make	Æ°ºî³ÎÇ§¡§3.81
+
+ºÇœé€Ë¡€¥Ñ¥Ã¥±¡Œ¥ž€Ë¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿€Î¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€¬ŽÞ€Þ€ì€Æ€€€Ê€€
+Ÿì¹ç€Ë€Ï¡€¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿€Î¥Ñ¥Ã¥±¡Œ¥ž€ò¡€ASP¥«¡Œ¥Í¥ë€Î¥œ¡Œ¥¹¥Õ¥¡¥€¥ë
+€òÅž³«€·€¿¥Ç¥£¥ì¥¯¥È¥ê€Î²Œ€ËÅž³«€¹€ë¡¥
+
+	% cd asp
+	% tar xvfz cfg-1.9.2.tar.gz
+
+€Þ€¿€Ï¡€¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿€Î¥Ñ¥Ã¥±¡Œ¥ž€òÂŸ€Î¥Ç¥£¥ì¥¯¥È¥ê€ËÅž³«€·¡€ASP¥«¡Œ
+¥Í¥ë€Î¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€òÅž³«€·€¿¥Ç¥£¥ì¥¯¥È¥ê€«€é¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯€ò€Ï€Ã
+€Æ€â€è€€¡¥
+
+¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€¬Åž³«€Ç€­€ë€È¡€cfg¥Ç¥£¥ì¥¯¥È¥ê€Ë°ÜÆ°€·¡€¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ
+¥·¥ç¥ó¥¹¥¯¥ê¥×¥È¡Êconfigure¡Ë€ÇMakefile€ÎŽÄ¶­°ÍÂžÉô¡ÊMakefile.config¡Ë
+€òÀžÀ®€·€¿žå¡€make¥³¥Þ¥ó¥É€Ë€è€ê¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿¡Êcfg¥×¥í¥°¥é¥à¡Ë€¬¹œ
+ÃÛ€Ç€­€ë¡¥
+
+	% cd cfg
+	% ./configure --without-xml
+	% make depend
+	% make
+
+€¿€À€·¡€Boost€ò¥€¥ó¥¹¥È¡Œ¥ë€·€¿¥Ç¥£¥ì¥¯¥È¥ê€ª€è€ÓÌŸŸÎ€¬Éžœà€ÇÁÛÄê€·€Æ€€
+€ë€â€Î€È€Ï°ã€ŠŸì¹ç€Ë€Ï¡€configure€Î--with-headers€ª€è€Ó--with-libraries
+¥ª¥×¥·¥ç¥ó€Ë€è€ê¡€¥Ø¥Ã¥À¥Õ¥¡¥€¥ë€ª€è€Ó¥é¥€¥Ö¥é¥ê€ÎÃÖ€«€ì€¿¥Ç¥£¥ì¥¯¥È¥ê
+€ò»ØÄê€¹€ëÉ¬Í×€¬€¢€ë¡¥--without-xml€Ï¡€AUTOSAR XML¥Õ¥¡¥€¥ë€ÎÆÉ€ß¹þ€ßµ¡
+Çœ¡ÊASP¥«¡Œ¥Í¥ëÍÑ€Ë€ÏÉ¬Í×€Ê€€¡Ë€òŒè€ê¹þ€Þ€Ê€€€³€È€ò»ØÄê€¹€ë¥ª¥×¥·¥ç¥ó€Ç
+€¢€ë¡ÊAUTOSAR XML¥Õ¥¡¥€¥ë€ÎÆÉ€ß¹þ€ßµ¡Çœ€òŒè€ê¹þ€à€Ë€Ï¡€Xerces-C++ XML
+Parser€¬É¬Í×€Ë€Ê€ë¡Ë¡¥
+
+€Þ€¿¡€¥Û¥¹¥È¥·¥¹¥Æ¥à€Ë€è€Ã€Æ€Ï¡€ºÇÅ¬²œ¥ì¥Ù¥ë€òŸå€²€ë€ÈÀµ€·€¯¥³¥ó¥Ñ¥€¥ë
+€Ç€­€Ê€€€³€È€¬ÃÎ€é€ì€Æ€€€ë¡¥€œ€Î€è€Š€ÊŸì¹ç€Ë€Ï¡€ºÇÅ¬²œ¥ì¥Ù¥ë€ò²Œ€²€ë€«¡€
+ºÇÅ¬²œ€òÍÞ»ß€¹€ë€è€Š€Ë¡€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		¥·¥¹¥Æ¥à¥í¥°µ¡Çœ€Î¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+
+	library/
+		histogram.c		ŒÂ¹Ô»þŽÖÊ¬ÉÛœž·×¥â¥ž¥å¡Œ¥ë
+		log_output.c	¥·¥¹¥Æ¥à¥í¥°€Î¥Õ¥©¡Œ¥Þ¥Ã¥ÈœÐÎÏ
+		strerror.c		¥š¥é¡Œ¥á¥Ã¥»¡Œ¥žÊž»úÎó€òÊÖ€¹ŽØ¿ô
+		t_perror.c		¥š¥é¡Œ¥á¥Ã¥»¡Œ¥ž€ÎœÐÎÏ
+		test_lib.c		¥Æ¥¹¥È¥×¥í¥°¥é¥àÍÑ¥é¥€¥Ö¥é¥ê
+		vasyslog.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¡Ë€È€Ê€ë¡¥
+
+	-o <¥ª¥×¥·¥ç¥óÊž»úÎó>
+		¥³¥ó¥Ñ¥€¥é€ËÍ¿€š€ë¥ª¥×¥·¥ç¥óÊž»úÎó€Ç¡€¥·¥ó¥Ü¥ëÄêµÁ°Ê³°€Î€â€Î¡¥
+		¥·¥ó¥Ü¥ëÄêµÁ€Î¥ª¥×¥·¥ç¥ó€Ï¡€-O¥ª¥×¥·¥ç¥ó€ò»ÈÍÑ€¹€ë¡¥¥ª¥×¥·¥ç¥ó
+		Êž»úÎó€Ë¥¹¥Ú¡Œ¥¹€¬ŽÞ€Þ€ì€ëŸì¹ç€Ë€Ï¡€"-O2 -Wall"€Î€è€Š€Ë¡€""€Ç°Ï
+		€ó€Çµ­œÒ€¹€ëÉ¬Í×€¬€¢€ë¡¥
+
+	-O <¥ª¥×¥·¥ç¥óÊž»úÎó>
+		¥³¥ó¥Ñ¥€¥é€ËÍ¿€š€ë¥·¥ó¥Ü¥ëÄêµÁ€Î€¿€á€Î¥ª¥×¥·¥ç¥óÊž»úÎó¡¥¥ª¥×¥·¥ç
+		¥óÊž»úÎó€Ë¥¹¥Ú¡Œ¥¹€¬ŽÞ€Þ€ì€ëŸì¹ç€Ë€Ï¡€"-DTEST -DPERF"€Î€è€Š€Ë¡€
+		""€Ç°Ï€ó€Çµ­œÒ€¹€ëÉ¬Í×€¬€¢€ë¡¥
+
+	-k <¥ª¥×¥·¥ç¥óÊž»úÎó>
+		¥ê¥ó¥«€ËÍ¿€š€ë¥ª¥×¥·¥ç¥óÊž»úÎó¡¥¥ª¥×¥·¥ç¥óÊž»úÎó€Ë¥¹¥Ú¡Œ¥¹€¬ŽÞ
+		€Þ€ì€ëŸì¹ç€Ë€Ï¡€""€Ç°Ï€ó€Çµ­œÒ€¹€ëÉ¬Í×€¬€¢€ë¡¥
+
+¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥¹¥¯¥ê¥×¥È€¬¹Ô€ŠœèÍý€ÏŒ¡€ÎÄÌ€ê€Ç€¢€ë¡¥
+
+(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 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 *buf, uint_t len)
+
+portid€Ç»ØÄê€µ€ì€¿¥·¥ê¥¢¥ë¥Ý¡Œ¥È€«€é¡€len¥Ð¥€¥È€ÎÊž»úÎó€òŒõ¿®€·¡€buf€«
+€é€ÎÎÎ°è€ËÆþ€ì€ë¡¥len¥Ð¥€¥ÈŒõ¿®€¹€ë€Þ€Ç¡€ÂÔ€ÁŸõÂÖ€È€Ê€ë¡¥Œõ¿®€·€¿Êž»ú¿ô
+€Þ€¿€Ï¥š¥é¡Œ¥³¡Œ¥É€òÊÖ€¹¡¥
+
+(4) ER_UINT serial_wri_dat(ID portid, const char *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 *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 *p_args,
+												void (*putc)(char))
+
+format€Ç»ØÄê€µ€ì€ë¥Õ¥©¡Œ¥Þ¥Ã¥Èµ­œÒ€Èp_args€Ç»ØÄê€µ€ì€ë°ú¿ôÎó€«€éºîÀ®€·
+€¿¥á¥Ã¥»¡Œ¥ž€ò¡€1Êž»úœÐÎÏŽØ¿ôputc€òÍÑ€€€ÆœÐÎÏ€¹€ë¡¥
+
+(2) void syslog_print(const SYSLOG *p_syslog, void (*putc)(char))
+
+p_syslog€Ç»ØÄê€µ€ì€ë¥í¥°ŸðÊó€òÊž»úÎó€ËÄŸ€·¡€1Êž»úœÐÎÏŽØ¿ôputc€òÍÑ€€€ÆœÐ
+ÎÏ€¹€ë¡¥
+
+(3) void syslog_lostmsg(uint_t lost, void (*putc)(char))
+
+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 histarea[])
+
+histid€Ç»ØÄê€µ€ì€¿¥Ç¡Œ¥¿¹œÂ€€òœéŽü²œ€¹€ë¡¥maxval€Ë€Ïµ­Ï¿€¹€ëºÇÂç»þŽÖ€ò¡€
+histarea€Ë€Ïµ­Ï¿ÎÎ°è€ÎÀèÆ¬ÈÖÃÏ€ò»ØÄê€¹€ë¡¥histarea€Ç»Ï€Þ€ëµ­²±ÎÎ°è€Ï¡€
+Í×ÁÇ¿ô€¬maxval€Ë»ØÄê€·€¿ÃÍ+1€Îuint_t·¿€ÎÇÛÎó€È€·€Æ³ÎÊÝ€¹€ë¡¥Îã€š€Ð¡€
+maxval€Ë1000€ò»ØÄê€¹€ëŸì¹ç€Ë€Ï¡€histarea€Ë€ÏÍ×ÁÇ¿ô€¬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 ¥Æ¥¹¥È¥×¥í¥°¥é¥àÍÑ¥é¥€¥Ö¥é¥ê
+
+¥Æ¥¹¥È¥×¥í¥°¥é¥àÍÑ¥é¥€¥Ö¥é¥ê€Ï¡€¥×¥í¥°¥é¥àÃæ€Î¥Á¥§¥Ã¥¯¥Ý¥€¥ó¥È€¬Àµ€·€€
+œçœø€ÇŒÂ¹Ô€µ€ì€¿€³€È€Ê€É¡€¥×¥í¥°¥é¥à€¬Àµ€·€¯Æ°ºî€·€Æ€€€ë€³€È€ò¥Á¥§¥Ã¥¯
+€¹€ë€¿€á€ÎŽØ¿ô·²€Ç€¢€ë¡¥¥×¥í¥°¥é¥à€¬Àµ€·€¯Æ°ºî€·€Æ€€€Ê€€€³€È€òž¡œÐ€·€¿
+Ÿì¹ç€Ë€Ï¡€¥×¥í¥°¥é¥à€òœªÎ»€µ€»€ë¡¥
+
+¥Æ¥¹¥È¥×¥í¥°¥é¥àÍÑ¥é¥€¥Ö¥é¥êŽØ¿ô€òÍÑ€€€ëŸì¹ç€Ë€Ï¡€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 test_start(char *progname)
+
+¥Æ¥¹¥È³«»Ï»þ€Ë¡€¥Æ¥¹¥È¥×¥í¥°¥é¥àÌŸ€òœÐÎÏ€¹€ë€¿€á€ÎŽØ¿ô¡¥
+
+(9) void syslog_flush(void)
+
+¥·¥¹¥Æ¥à¥í¥°µ¡Çœ€Ëµ­Ï¿€µ€ì€¿¥í¥°ŸðÊó€ò¡€Äã¥ì¥Ù¥ëœÐÎÏµ¡Çœ€ËÍÑ€€€ëÊž»úœÐ
+ÎÏŽØ¿ô€Ë€è€êœÐÎÏ€¹€ë¡¥
+
+(10) 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€òžÆ€ÓœÐ€¹€è€Š€Ë
+ŒÂÁõ€µ€ì€Æ€€€Ê€€Ÿì¹ç€Ë€Ï¡€¥¹¥¿¡Œ¥È¥¢¥Ã¥×¥â¥ž¥å¡Œ¥ë€ò¥¢¥×¥ê¥±¡Œ¥·¥ç¥ó€Ç
+ÍÑ°Õ€·€¿€â€Î€ËÃÖ€­Ž¹€š€ëÊýË¡€ò¿äŸ©€¹€ë¡¥
+
+11.8 rodata¥»¥¯¥·¥ç¥ó€òRAM€ËÃÖ€¯Ÿì¹ç
+
+²¿€é€«€ÎÍýÍ³€Çrodata¥»¥¯¥·¥ç¥ó€òRAM€ËÃÖ€¯Ÿì¹ç¡€data¥»¥¯¥·¥ç¥ó€ÈÆ±ÍÍ€Ë¡€
+€œ€ÎœéŽüÃÍ€ÏROM€ËÃÖ€­¡€¥¹¥¿¡Œ¥È¥¢¥Ã¥×¥â¥ž¥å¡Œ¥ë€ÇRAM€Ë¥³¥Ô¡Œ€¹€ë€Î€¬ÁÇ
+ÄŸ€Ç€¢€ë¡¥€³€ì€òŒÂžœ€¹€ë€Ë€Ï¡€data¥»¥¯¥·¥ç¥ó€ÎŒè°·€€€ò»²¹Í€Ë¡€¥ê¥ó¥«¥¹
+¥¯¥ê¥×¥È€È¥¹¥¿¡Œ¥È¥¢¥Ã¥×¥â¥ž¥å¡Œ¥ë€òœ€Àµ€¹€ëÉ¬Í×€¬€¢€ë€¬¡€€œ€ì€Ë²Ã€š€Æ¡€
+°Ê²Œ€ÎÁŒÃÖ€¬É¬Í×€Ç€¢€ë¡¥
+
+¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿€Ï¡€¥Ñ¥¹1€È¥Ñ¥¹3€Ë€ª€€€Æ¡€¥í¡Œ¥É¥â¥ž¥å¡Œ¥ë€Î¥·¥ó¥Ü¥ë
+¥Õ¥¡¥€¥ë€òÍÑ€€€Æ¡€¥í¡Œ¥É¥â¥ž¥å¡Œ¥ëÆâ€Îrodata¥»¥¯¥·¥ç¥ó€òÆÉ€ß¹þ€à€³€È€Ç¡€
+³ÆŒï€ÎÄê¿ôÃÍ€òŒèÆÀ€¹€ë¡¥€œ€Î€¿€á¡€rodata¥»¥¯¥·¥ç¥ó€òdata¥»¥¯¥·¥ç¥ó€ÈÆ±
+ÍÍ€Ë°·€Š€È¡€€œ€Î¥¢¥¯¥»¥¹¥¢¥É¥ì¥¹¡ÊRAMÆâ€Î¥¢¥É¥ì¥¹¡€VMA€ÈžÆ€Ö¡Ë€ÈÇÛÃÖ¥¢
+¥É¥ì¥¹¡ÊROMÆâ€Î¥¢¥É¥ì¥¹¡€LMA€ÈžÆ€Ö¡Ë€¬°ìÃ×€·€Ê€¯€Ê€ë€¿€á€Ë¡€Äê¿ôÃÍ€òŒè
+ÆÀ€¹€ë€³€È€¬€Ç€­€º¡€¥š¥é¡Œ€È€Ê€ë¡¥
+
+¥Ñ¥¹1€Ç€Î¥š¥é¡Œ€ò²óÈò€¹€ë€¿€á€Ë€Ï¡€¥Ñ¥¹1€Î¥ê¥ó¥¯»þ¡Êcfg1_out€ò¥ê¥ó¥¯€¹
+€ë»þ¡Ë€Ë€Ï¡€rodata¥»¥¯¥·¥ç¥ó€Î¥¢¥¯¥»¥¹¥¢¥É¥ì¥¹€ÈÇÛÃÖ¥¢¥É¥ì¥¹€ò°ìÃ×€µ€»
+€ë¥ê¥ó¥«¥¹¥¯¥ê¥×¥È¡ÊÉžœà€Î¥ê¥ó¥«¥¹¥¯¥ê¥×¥È€Ï€³€Î€è€Š€Ë€Ê€Ã€Æ€€€ë¡Ë€òÍÑ
+€€€ë¡¥¥µ¥ó¥×¥ë€ÎMakefile€Ç€Ï¡€LDSCRIPT€Ë€è€ê¥ê¥ó¥«¥¹¥¯¥ê¥×¥È€ò»ØÄê€¹€ë
+€Î€Ç€Ï€Ê€¯¡€LDFLAGS€ÈCFG1_OUT_LDFLAGS€Ë°Û€Ê€ë¥ê¥ó¥«¥¹¥¯¥ê¥×¥È€òÍÑ€€€ë¥ª
+¥×¥·¥ç¥ó€òÀßÄê€¹€ì€Ð€è€€¡¥
+
+¥Ñ¥¹3€Ç€Î¥š¥é¡Œ€ò²óÈò€¹€ë€¿€á€Ë€Ï¡€¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿€Î¥Ñ¥¹3€Î¥Æ¥ó¥×¥ì¡Œ
+¥È¥Õ¥¡¥€¥ë€Ë€ª€€€Æ¡€rodata¥»¥¯¥·¥ç¥ó€ÎÆâÍÆ€ò¡€ÇÛÃÖ¥¢¥É¥ì¥¹€«€é¥¢¥¯¥»¥¹
+¥¢¥É¥ì¥¹€Ë¥³¥Ô¡Œ€¹€ë¡¥€œ€Î€¿€á€Ë€Ï¡€¥Ñ¥¹3€Î¥Æ¥ó¥×¥ì¡Œ¥È¥Õ¥¡¥€¥ë€Î¥¿¡Œ¥²¥Ã
+¥È°ÍÂžÉô€Ç¡€LMA.ORDER_LISTÅù€Î¥Æ¥ó¥×¥ì¡Œ¥È¥Õ¥¡¥€¥ëÊÑ¿ô€òÀßÄê€¹€ì€Ð€è€€¡¥
+¶ñÂÎÅª€ÊÊýË¡€Ï¡€¡Ö¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô ¥Ý¡Œ¥Æ¥£¥ó¥°¥¬¥€¥É¡×€ò»²ŸÈ€¹€ë€³€È¡¥
+
+
+£±£²¡¥»²¹ÍŸðÊó
+
+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/trac/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) ³ä¹þ€ßŽÉÍýµ¡Çœ
+
+	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 })
+
+(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		Æ°ÅªÀžÀ®µ¡Çœ³ÈÄ¥¥Ñ¥Ã¥±¡Œ¥žÅù€ÎÄÉ²Ã
+	2012Ç¯12·î26Æü	Release 1.8.0
+	2014Ç¯1·î6Æü	Release 1.9.0		¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡µ¡Çœ³ÈÄ¥€ÎÄÉ²Ã
+	2014Ç¯11·î17Æü	Release 1.9.1
+	2015Ç¯5·î30Æü	Release 1.9.2
+	201 Ç¯ ·î  Æü	Release 1.9.3
+
+°ÊŸå
Index: /doc/version.txt
===================================================================
--- /doc/version.txt	(revision 7)
+++ /doc/version.txt	(revision 7)
@@ -0,0 +1,1121 @@
+
+		TOPPERS/ASP¥«¡Œ¥Í¥ë
+		ÊÑ¹¹ÍúÎò
+
+		ÂÐ±þ¥Ð¡Œ¥ž¥ç¥ó: Release 1.9.3
+		ºÇœª¹¹¿·: 2015Ç¯7·î31Æü
+
+€³€Î¥É¥­¥å¥á¥ó¥È€Ï¡€TOPPERS/ASP¥«¡Œ¥Í¥ë€ÎRelease 1.0.0°Ê¹ß€ÎÊÑ¹¹ÍúÎò€ò¡€
+¿·€·€€Êý€«€éœç€Ëµ­œÒ€·€¿€â€Î€Ç€¢€ë¡¥
+
+----------------------------------------------------------------------
+ TOPPERS/ASP Kernel
+     Toyohashi Open Platform for Embedded Real-Time Systems/
+     Advanced Standard Profile Kernel
+
+ Copyright (C) 2005-2015 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$
+----------------------------------------------------------------------
+
+		TOPPERS/ASP¥«¡Œ¥Í¥ë
+		Release 1.9.2 €«€é 1.9.3 €Ø€ÎÊÑ¹¹ÅÀ
+
+¡ûÊÑ¹¹ÅÀ€Î¥ê¥¹¥È
+
+¡Š€œ€ÎÂŸ€Îœ€Àµ¡¥
+	- syslog_ref_log€ÎœÐžý€Î¥í¥°œÐÎÏ¥Þ¥¯¥í¡ÊLOG_SYSLOG_REF_LOG_LEAVE¡Ë
+	  €Î¥Ñ¥é¥á¡Œ¥¿€Ë¥š¥é¡Œ¥³¡Œ¥É€òÄÉ²Ã¡¥
+
+¡Š¥Ð¡Œ¥ž¥ç¥óÈÖ¹æ€Î¹¹¿·
+	- ¥«¡Œ¥Í¥ë€Î¥Ð¡Œ¥ž¥ç¥óÈÖ¹æ€ò¹¹¿·¡¥
+
+----------------------------------------------------------------------
+
+		TOPPERS/ASP¥«¡Œ¥Í¥ë
+		Release 1.9.1 €«€é 1.9.2 €Ø€ÎÊÑ¹¹ÅÀ
+
+¡ûÊÑ¹¹ÅÀ€Î¥ê¥¹¥È
+
+¡ŠÆ°ÅªÀžÀ®µ¡Çœ³ÈÄ¥€Î¥Ð¥°¥Õ¥£¥Ã¥¯¥¹
+	- acre_cyc€Ç¡€ŒþŽü¥Ï¥ó¥É¥é€ò³«»Ï€¹€ëœèÍý€Î¥Ð¥°€òœ€Àµ¡¥
+
+¡Š€œ€ÎÂŸ€Î¥Ð¥°¥Õ¥£¥Ã¥¯¥¹
+	- test_cpuexc10.c€Î¥Á¥§¥Ã¥¯ÃÍ€Îží€ê€Îœ€Àµ¡¥
+
+¡Š¥É¥­¥å¥á¥ó¥È€Îœ€Àµ¡¥
+
+¡Š¥Ð¡Œ¥ž¥ç¥óÈÖ¹æ€Î¹¹¿·
+	- ¥«¡Œ¥Í¥ë€Î¥Ð¡Œ¥ž¥ç¥óÈÖ¹æ€ò¹¹¿·¡¥
+
+----------------------------------------------------------------------
+
+		TOPPERS/ASP¥«¡Œ¥Í¥ë
+		Release 1.9.0 €«€é 1.9.1 €Ø€ÎÊÑ¹¹ÅÀ
+
+¡ûÊÑ¹¹ÅÀ€Î¥ê¥¹¥È
+
+¡Š¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹µ¡Çœ³ÈÄ¥€Î»ÅÍÍÊÑ¹¹
+	- Œ«¥¿¥¹¥¯€¬¥í¥Ã¥¯€·€Æ€€€ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€òºÆÅÙ¥í¥Ã¥¯€·€è€Š€È€·€¿Ÿì
+	  ¹ç€È¡€Œ«¥¿¥¹¥¯€¬¥í¥Ã¥¯€·€Æ€€€Ê€€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯²òœü€·€è€Š
+	  €È€·€¿Ÿì¹ç€Î¥š¥é¡Œ¥³¡Œ¥É€òE_OBJ€ËÊÑ¹¹¡¥
+
+¡Š¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹µ¡Çœ³ÈÄ¥€Î¥Ð¥°¥Õ¥£¥Ã¥¯¥¹
+	- ¥¿¥¹¥¯œªÎ»»þ€Î¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î²òÊüœçœø€òµÕœç€Ë¡¥
+
+¡ŠÆ°ÅªÀžÀ®µ¡Çœ³ÈÄ¥€Î¥Ð¥°¥Õ¥£¥Ã¥¯¥¹
+	- ¥ª¥Ö¥ž¥§¥¯¥ÈÌ€ÅÐÏ¿¥š¥é¡Œ€Î¥Á¥§¥Ã¥¯€ÎÈŽ€±€ª€è€Ó¥Ð¥°€òœ€Àµ¡¥
+	- ¥ª¥Ö¥ž¥§¥¯¥ÈÌ€ÅÐÏ¿€ÎŸì¹ç€ÎÂŸ€Î¥š¥é¡Œ€Î¥Á¥§¥Ã¥¯Ÿìœê€Îœ€Àµ¡¥
+
+¡Š¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éµ¡Çœ³ÈÄ¥€Î¥Ð¥°¥Õ¥£¥Ã¥¯¥¹
+	- ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ³ä¹þ€ß¥Ï¥ó¥É¥é€Îµ¯Æ°€È¡€¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÎºÆÆ°ºî
+	  ³«»Ï¡¿Ää»ß€È€Î¶¥¹ç€ÎÌäÂê€òœ€Àµ¡¥
+
+¡Š¥Æ¥¹¥È¥×¥í¥°¥é¥àŽØ·ž€Îœ€Àµ
+
+¡Š€œ€ÎÂŸ€Îœ€Àµ
+	- xsns_dpn€Èxsns_xpn€Ç¡€kerflg€â¥Á¥§¥Ã¥¯€¹€ë€è€Š€Ëœ€Àµ¡Ê°ÂÁŽÀ­€Îžþ
+	  Ÿå€Î€¿€á€Îœ€Àµ¡Ë¡¥
+	- kernel.tfÃæ€Ç¡€¥¹¥¿¥Ã¥¯ÎÎ°è€Î³ÎÊÝ€ËALLOC_STACK€ò»È€Š€è€Š€Ëœ€Àµ¡¥
+
+¡Š¥É¥­¥å¥á¥ó¥È€ÎœŒŒÂ¡€¥³¥á¥ó¥È€Îœ€Àµ
+
+¡Š¥Ð¡Œ¥ž¥ç¥óÈÖ¹æ€Î¹¹¿·
+	- ¥«¡Œ¥Í¥ë€Î¥Ð¡Œ¥ž¥ç¥óÈÖ¹æ€ò¹¹¿·¡¥
+
+----------------------------------------------------------------------
+
+		TOPPERS/ASP¥«¡Œ¥Í¥ë
+		Release 1.8.0 €«€é 1.9.0 €Ø€ÎÊÑ¹¹ÅÀ
+
+¡ûÊÑ¹¹ÅÀ€Î¥ê¥¹¥È
+
+¡Š¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡µ¡Çœ³ÈÄ¥¥Ñ¥Ã¥±¡Œ¥ž€ÎÄÉ²Ã
+
+¡Š¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿€Î¥Ñ¥¹3€Î¥Æ¥ó¥×¥ì¡Œ¥È¥Õ¥¡¥€¥ë€Ë¡€¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€Ç
+¡¡ÀßÄê€·€¿¥»¥¯¥·¥ç¥ó€ò¡€LMA€«€éVMA€Ë¥³¥Ô¡Œ€¹€ëœèÍý€òÄÉ²Ã
+
+¡Š¥µ¥ó¥×¥ë€ÎMakefile€Îœ€Àµ
+	- CžÀžì€Î»þ€Ë-lc€òÉÕ€±€ë€è€Š€Ëœ€Àµ¡¥
+	- CFG_OBJS€ò¡€CFG_ASMOBJS€ÈCFG_COBJS€ËÊ¬Î¥¡¥
+
+¡ŠÀèÆ¬ÈÖÃÏ€Î¥Á¥§¥Ã¥¯¥³¡Œ¥É€Îœ€Àµ
+	- ÀèÆ¬ÈÖÃÏ€Î¥µ¥€¥º€¬žÇÄêÃÍ€Ë€Ê€Ã€Æ€€€¿€È€³€í€ò¡€sizeof_FP€Ëœ€Àµ¡¥
+	- ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éµ¡Çœ³ÈÄ¥€Ë€ª€€€Æ¡€¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€ÎÀèÆ¬ÈÖÃÏ
+	  €Î¥Á¥§¥Ã¥¯€òÄÉ²Ã¡¥
+
+¡ŠÀÅÅªAPI€Ë€ª€±€ë¥š¥é¡Œ¥Á¥§¥Ã¥¯€ÎÄÉ²Ã
+	- Éä¹æÌµ€·€Î¥Ñ¥é¥á¡Œ¥¿€ËÉé€ÎÃÍ€ò»ØÄê€·€¿Ÿì¹ç€Î¥š¥é¡Œ¥Á¥§¥Ã¥¯€òÄÉ²Ã¡¥
+	- ¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎœéŽü¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó€Î¥š¥é¡Œ¥Á¥§¥Ã¥¯€òÄÉ²Ã¡¥
+
+¡Š¥Æ¥¹¥È¥×¥í¥°¥é¥àŽØ·ž€Îœ€Àµ
+	- ¥Æ¥¹¥È¥é¥€¥Ö¥é¥ê€Ë¡€test_start€òÄÉ²Ã¡¥
+	- ¥Æ¥¹¥È¥×¥í¥°¥é¥à€ÎÀèÆ¬€Ç¡€¥×¥í¥°¥é¥àÌŸ€òÉœŒš€¹€ë€è€Š€Ëœ€Àµ¡¥
+	- gentest€ò³ÈÄ¥¡¥
+
+¡ŠÆ°ÅªÀžÀ®µ¡Çœ³ÈÄ¥€Î¥Ð¥°¥Õ¥£¥Ã¥¯¥¹
+	- ¥«¡Œ¥Í¥ë€¬³ä€êÉÕ€±€ë¥á¥â¥êÎÎ°è€Î¥µ¥€¥º€Î¥Á¥§¥Ã¥¯¥³¡Œ¥É€òœ€Àµ¡¥
+	- DEF_KMM€Îkmmsz€¬0°Ê²Œ€ÎŸì¹ç€Î¥š¥é¡Œ¥Á¥§¥Ã¥¯€òÄÉ²Ã¡¥
+	- ¥«¡Œ¥Í¥ëÆâÉô¥·¥ó¥Ü¥ë€Î¥ê¥Í¡Œ¥àÉœ€òœ€Àµ¡¥
+
+¡Š€œ€ÎÂŸ€Î¥Ð¥°¥Õ¥£¥Ã¥¯¥¹
+	- kernel_def.csv€ËTARGET_MIN_ISTKSZ€òÄÉ²Ã¡¥
+	- ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éµ¡Çœ³ÈÄ¥€Ç¡€¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€ò¥µ¥Ý¡Œ¥È€·€Æ€€
+	  €Ê€€¥¿¡Œ¥²¥Ã¥È€ÇDEF_OVR€ò»ÈÍÑ€·€¿Ÿì¹ç€Ë€Ï¡€¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿€Ç¥š
+	  ¥é¡Œ€È€¹€ë€è€Š€Ëœ€Àµ¡¥
+
+¡Š€œ€ÎÂŸ€Îœ€Àµ
+	- reqdsp€òdspreq€Ë¡€p_reqdsp€òp_dspreq€Ë¥ê¥Í¡Œ¥à¡¥
+	- ¥¹¥¿¥Ã¥¯ÎÎ°è€ÈžÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÎÎ°è€ÎÀèÆ¬ÈÖÃÏ€ò¥æ¡Œ¥¶€¬»ØÄê€·€¿
+	  Ÿì¹ç€Ë€Ï¡€kernel_cfg.cÃæ€Ç(void *)·¿€Ë¥­¥ã¥¹¥È€¹€ë€è€Š€Ëœ€Àµ¡¥Æ°
+	  ÅªÀžÀ®µ¡Çœ³ÈÄ¥€Î¥«¡Œ¥Í¥ë€¬³ä€êÉÕ€±€ë¥á¥â¥êÎÎ°è€ÎÀèÆ¬ÈÖÃÏ€âÆ±ÍÍ¡¥
+	- TNUM_PORT€¬5°ÊŸå€Î»þ€Ï¡€serial.c€Ç¥š¥é¡Œ€òÊó¹ð€¹€ë¡¥
+	- makedep€Èmakerelease€ò²þÁ±¡¥
+
+¡Š¥É¥­¥å¥á¥ó¥È€ÎœŒŒÂ¡€¥³¥á¥ó¥È€Îœ€Àµ
+	- ¥æ¡Œ¥¶¡Œ¥º¥Þ¥Ë¥å¥¢¥ë€Ë¡Ö1.6 CygwinŽÄ¶­€Ë€ª€±€ëÃí°Õ»ö¹à¡×€òÄÉ²Ã¡¥
+	- ¥æ¡Œ¥¶¡Œ¥º¥Þ¥Ë¥å¥¢¥ë€Ë¡Ö11.8 rodata¥»¥¯¥·¥ç¥ó€òRAM€ËÃÖ€¯Ÿì¹ç¡×€ò
+	  ÄÉ²Ã¡¥
+
+¡Š¥Ð¡Œ¥ž¥ç¥óÈÖ¹æ€Î¹¹¿·
+	- ¥«¡Œ¥Í¥ë€Î¥Ð¡Œ¥ž¥ç¥óÈÖ¹æ€ò¹¹¿·¡¥
+
+¡û¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€ÎÍ×œ€Àµ²Õœê¡Ê1.8.0 ¢ª 1.9.0¡Ë
+
+(1) CFG_OBJS€òCFG_COBJS€Ë¥ê¥Í¡Œ¥à
+	- Makefile€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€ÇCFG_OBJS€òÄêµÁ€·€Æ€€€ëŸì¹ç€Ë€Ï¡€
+	  CFG_COBJS€Ë¥ê¥Í¡Œ¥à€¹€ë¡¥
+
+----------------------------------------------------------------------
+
+		TOPPERS/ASP¥«¡Œ¥Í¥ë
+		Release 1.7.0 €«€é 1.8.0 €Ø€ÎÊÑ¹¹ÅÀ
+
+¡ûÊÑ¹¹ÅÀ€Î¥ê¥¹¥È
+
+¡Šchar_t·¿€ÎÇÑ»ß
+
+¡ŠSIL€Î¥á¥â¥ê¶õŽÖÆÉœÐ€·ŽØ¿ô€ËÅÏ€¹¥Ý¥€¥ó¥¿€ÎÂ°À­€ÎÊÑ¹¹
+	- sil_r??_???€ËÅÏ€·¥Ý¥€¥ó¥¿€Ë¡€constÂ°À­€òÄÉ²Ã¡¥
+
+¡ŠÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ€Î¥¹¥¿¥Ã¥¯ÎÎ°è€Î¥µ¥€¥º¥Á¥§¥Ã¥¯€ÎÄÉ²Ã
+	- DEF_ICS€Îistksz€¬¥¿¡Œ¥²¥Ã¥ÈÄêµÁ€ÎºÇŸ®ÃÍ¡ÊTARGET_MIN_ISTKSZ¡Ë€è€ê
+	  €âŸ®€µ€€Ÿì¹ç€ËE_PAR¥š¥é¡Œ€È€¹€ëœèÍý€òÄÉ²Ã¡¥
+
+¡Švasyslog.c€òlibrary¥Ç¥£¥ì¥¯¥È¥ê€Ë°ÜÆ°
+
+¡ŠMISRA-CÂÐ±þ€Î€¿€á€Î¥³¡Œ¥É€Îœ€Àµ
+	- Êž€ò¥Þ¥¯¥íÄêµÁ€·€Æ€€€ë²Õœê€òdo{}while(false)€Ç°Ï€à¡¥
+	- ¥³¥ó¥Þ±é»»»Ò€Ë»ÈÍÑ€òºÇŸ®žÂ€Ë¡¥
+	- Â¿œÅÂåÆþÊž€ò€ä€á€ë¡¥
+	- Éä¹æÌµ€·À°¿ôÄê¿ô€ËU€ò€Ä€±€ë¡¥
+	- ÉžœàÅª€ÊÌŸÁ°€òÊÑ¿ôÌŸ€È€·€Æ»È€ï€Ê€€€è€Š€Ëœ€Àµ¡¥
+	- ÊÖÃÍ€ò»È€ï€Ê€€ŽØ¿ôžÆœÐ€·€ò(void)€Ë¥­¥ã¥¹¥È€¹€ë¡¥
+
+¡Š€œ€ÎÂŸ€Î¥Ð¥°¥Õ¥£¥Ã¥¯¥¹
+	- ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹µ¡Çœ³ÈÄ¥€Ç¡€ref_tsk€¬TTW_MTX€òÊÖ€¹œèÍý€òÄÉ²Ã¡¥
+	- Æ°ÅªÀžÀ®µ¡Çœ³ÈÄ¥€Ç¡€acre_isr€Î¥š¥é¡Œ¥³¡Œ¥É€òœ€Àµ¡¥
+	- Æ°ÅªÀžÀ®µ¡Çœ³ÈÄ¥€Ç¡€¥ª¥Ö¥ž¥§¥¯¥È¥³¥ó¥È¥í¡Œ¥ë¥Ö¥í¥Ã¥¯€¬€Ê€€»þ€Ë
+	  acre_yyy€òžÆ€ó€ÀŸì¹ç€ÎÌäÂê€òœ€Àµ¡¥
+	- kernel_check.tf€Ç¥š¥é¡Œ¥á¥Ã¥»¡Œ¥ž€ÎœÐÎÏœèÍý€òœ€Àµ¡¥
+	- ³ÈÄ¥¥â¥ž¥å¡Œ¥ë€ÎÄÉœŸ¥ß¥¹€Îœ€Àµ¡¥
+	- TOPPERS_SUPPORT_OVRTIM€òTOPPERS_SUPPORT_OVRHDR€Ëœ€Àµ¡¥
+
+¡Š¥µ¥ó¥×¥ë€ÎMakefile€Îœ€Àµ
+	- ¥«¡Œ¥Í¥ë¥é¥€¥Ö¥é¥ê€òÊÌ¥Ç¥£¥ì¥¯¥È¥ê€ÇºîÀ®€¹€ë»þ€Ë¡€¥«¡Œ¥Í¥ë¥é¥€¥Ö
+	  ¥é¥ê€¬¹¹¿·€µ€ì€¿€é¡€¥ª¥Ö¥ž¥§¥¯¥È¥Õ¥¡¥€¥ë€òºÆ¹œÃÛ€¹€ë€è€Š€Ëœ€Àµ¡¥
+	- CFG2_OUT€òCFG2_OUT_SRCS€Ë¥ê¥Í¡Œ¥à¡¥
+	- LDFLAGS€Ï¡€cfg1_out.c€Î¥ê¥ó¥¯»þ€Ë€ÏÅ¬ÍÑ€µ€ì€Ê€€€è€Š€Ëœ€Àµ¡¥
+	- log_output.o¡€vasyslog.o¡€t_perror.o¡€strerror.o€ò¡€SYS_COBJS€«€é
+	  APPL_COBJS€Ë°ÜÆ°¡¥
+
+¡Š€œ€ÎÂŸ€Îœ€Àµ
+	- semaphore.hÅù€«€éwait.h€ò¥€¥ó¥¯¥ë¡Œ¥É€¹€ë€è€Š€Ëœ€Àµ¡¥
+	- TOPPERS_EMPTY_LABEL€Î¥Ç¥Õ¥©¥ë¥È€ÎÄêµÁ€òkernel_int.h€Ë°ÜÆ°¡¥
+	- __STDC_VERSION__€¬ÄêµÁ€µ€ì€Æ€€€Ê€€Ÿì¹ç€ËÂÐ±þ¡¥
+	- test_lib.h€ËÂ¿œÅ¥€¥ó¥¯¥ë¡Œ¥É€ÎËÉ»ß¥³¡Œ¥É€òÄÉ²Ã¡¥
+	- ¥æ¡Œ¥Æ¥£¥ê¥Æ¥£¥×¥í¥°¥é¥à€ò¿·€·€€perl€ËÂÐ±þ€¹€ë€è€Š€Ëœ€Àµ¡¥
+	- gentest€ò³ÈÄ¥¡ÊCPUÎã³°¥Ï¥ó¥É¥é€ÎÀžÀ®¡€GOTO€ËÂÐ±þ€Ê€É¡Ë¡¥
+	- configure€Ë¥ª¥×¥·¥ç¥ó€òÄÉ²Ã¡¥
+	- test_tex1€Ë¥Æ¥¹¥È¥±¡Œ¥¹1·ï€òÄÉ²Ã¡¥
+
+¡Š¥É¥­¥å¥á¥ó¥È€ÎœŒŒÂ¡€¥³¥á¥ó¥È€Îœ€Àµ
+
+¡Š¥Ð¡Œ¥ž¥ç¥óÈÖ¹æ€Î¹¹¿·
+	- ¥«¡Œ¥Í¥ë€Î¥Ð¡Œ¥ž¥ç¥óÈÖ¹æ€ò¹¹¿·¡¥
+
+¡û¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€ÎÍ×œ€Àµ²Õœê¡Ê1.7.0 ¢ª 1.8.0¡Ë
+
+(1) char_t·¿€òchar·¿€Ëœ€Àµ
+
+(2) TARGET_MIN_ISTKSZ€ÎÄêµÁ€òÄÉ²Ã¡Ê¥ª¥×¥·¥ç¥ó¡Ë
+	- Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€Î¥¹¥¿¥Ã¥¯¥µ¥€¥º€ÎºÇŸ®ÃÍ€ò¥Á¥§¥Ã¥¯€¹€ëŸì¹ç€Ë
+	  €Ï¡€ºÇŸ®ÃÍ€òTARGET_MIN_ISTKSZ€ËÄêµÁ€¹€ë¡¥
+
+(3) CFG2_OUT€òCFG2_OUT_SRCS€Ë¥ê¥Í¡Œ¥à
+	- Makefile€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€ÇCFG2_OUT€òÄêµÁ€·€Æ€€€ëŸì¹ç€Ë€Ï¡€
+	  CFG2_OUT_SRCS€Ë¥ê¥Í¡Œ¥à€¹€ë¡¥
+
+(4) CFG1_OUT_LDFLAGS€ÎÄêµÁ
+	- Makefile€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€ÇÄêµÁ€·€¿LDFLAGS€Ï¡€cfg1_out.c€ò¥ê¥ó¥¯
+	  €¹€ëºÝ€Ë€ÏÅ¬ÍÑ€µ€ì€Ê€€€è€Š€ËÊÑ¹¹€·€¿€¿€á¡€LDFLAGS€ËÄêµÁ€·€¿¥ª¥×¥·¥ç
+	  ¥ó€Ç¡€cfg1_out.c€ò¥ê¥ó¥¯€¹€ëºÝ€Ë€âÉ¬Í×€Ê€â€Î€Ï¡€CFG1_OUT_LDFLAGS
+	  €Ë€âÄêµÁ€¹€ë€è€Š€Ëœ€Àµ€¹€ë¡¥
+
+----------------------------------------------------------------------
+
+		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: /extension/MANIFEST
===================================================================
--- /extension/MANIFEST	(revision 7)
+++ /extension/MANIFEST	(revision 7)
@@ -0,0 +1,179 @@
+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
+
+messagebuf/include/kernel.h
+
+messagebuf/kernel/Makefile.kernel
+messagebuf/kernel/allfunc.h
+messagebuf/kernel/check.h
+messagebuf/kernel/kernel.tf
+messagebuf/kernel/kernel_api.csv
+messagebuf/kernel/kernel_def.csv
+messagebuf/kernel/kernel_impl.h
+messagebuf/kernel/kernel_int.h
+messagebuf/kernel/kernel_rename.def
+messagebuf/kernel/kernel_rename.h
+messagebuf/kernel/kernel_unrename.h
+messagebuf/kernel/messagebuf.c
+messagebuf/kernel/messagebuf.h
+messagebuf/kernel/task.c
+messagebuf/kernel/task.h
+messagebuf/kernel/task_manage.c
+messagebuf/kernel/task_refer.c
+messagebuf/kernel/wait.c
+messagebuf/kernel/wait.h
+
+messagebuf/test/bit_kernel.c
+messagebuf/test/test_messagebuf1.c
+messagebuf/test/test_messagebuf1.cfg
+messagebuf/test/test_messagebuf1.h
+messagebuf/test/test_messagebuf2.c
+messagebuf/test/test_messagebuf2.cfg
+messagebuf/test/test_messagebuf2.h
+messagebuf/test/test_messagebuf3.c
+messagebuf/test/test_messagebuf3.cfg
+messagebuf/test/test_messagebuf3.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_check.tf
+ovrhdr/kernel/kernel_def.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: /extension/dcre/include/kernel.h
===================================================================
--- /extension/dcre/include/kernel.h	(revision 7)
+++ /extension/dcre/include/kernel.h	(revision 7)
@@ -0,0 +1,610 @@
+/*
+ *  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-2014 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$
+ */
+
+/*
+ *		TOPPERS/ASP¥«¡Œ¥Í¥ë Éžœà¥Ø¥Ã¥À¥Õ¥¡¥€¥ë
+ *
+ *  TOPPERS/ASP¥«¡Œ¥Í¥ë€¬¥µ¥Ý¡Œ¥È€¹€ë¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎÀëžÀ€È¡€É¬Í×€Ê¥Ç¡Œ
+ *  ¥¿·¿¡€Äê¿ô¡€¥Þ¥¯¥í€ÎÄêµÁ€òŽÞ€à¥Ø¥Ã¥À¥Õ¥¡¥€¥ë¡¥
+ *
+ *  ¥¢¥»¥ó¥Ö¥êžÀžì€Î¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€«€é€³€Î¥Õ¥¡¥€¥ë€ò¥€¥ó¥¯¥ë¡Œ¥É€¹€ë»þ
+ *  €Ï¡€TOPPERS_MACRO_ONLY€òÄêµÁ€·€Æ€ª€¯¡¥€³€ì€Ë€è€ê¡€¥Þ¥¯¥íÄêµÁ°Ê³°€ò
+ *  œü€¯€è€Š€Ë€Ê€Ã€Æ€€€ë¡¥
+ *
+ *  €³€Î¥Õ¥¡¥€¥ë€ò¥€¥ó¥¯¥ë¡Œ¥É€¹€ëÁ°€Ë¥€¥ó¥¯¥ë¡Œ¥É€·€Æ€ª€¯€Ù€­¥Õ¥¡¥€¥ë
+ *  €Ï€Ê€€¡¥
+ */
+
+#ifndef TOPPERS_KERNEL_H
+#define TOPPERS_KERNEL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *	TOPPERS¶ŠÄÌ€Î¥Ç¡Œ¥¿·¿¡ŠÄê¿ô¡Š¥Þ¥¯¥í
+ */
+#include <t_stddef.h>
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô
+ */
+#include "target_kernel.h"
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  ¥Ç¡Œ¥¿·¿€ÎÄêµÁ
+ */
+
+/*
+ *  ¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó€ä¥ª¥Ö¥ž¥§¥¯¥ÈÈÖ¹æ€Î·¿ÄêµÁ
+ */
+typedef	uint_t		TEXPTN;		/* ¥¿¥¹¥¯Îã³°Í×°ø€Î¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó */
+typedef	uint_t		FLGPTN;		/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€Î¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó */
+typedef	uint_t		INTNO;		/* ³ä¹þ€ßÈÖ¹æ */
+typedef	uint_t		INHNO;		/* ³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ */
+typedef	uint_t		EXCNO;		/* CPUÎã³°¥Ï¥ó¥É¥éÈÖ¹æ */
+
+/*
+ *  œèÍýÃ±°Ì€Î·¿ÄêµÁ
+ */
+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);
+
+/*
+ *  ¥á¥â¥êÎÎ°è³ÎÊÝ€Î€¿€á€Î·¿ÄêµÁ
+ */
+#ifndef TOPPERS_STK_T
+#define TOPPERS_STK_T	intptr_t
+#endif /* TOPPERS_STK_T */
+typedef	TOPPERS_STK_T	STK_T;	/* ¥¹¥¿¥Ã¥¯ÎÎ°è€ò³ÎÊÝ€¹€ë€¿€á€Î·¿ */
+
+#ifndef TOPPERS_MPF_T
+#define TOPPERS_MPF_T	intptr_t
+#endif /* TOPPERS_MPF_T */
+typedef	TOPPERS_MPF_T	MPF_T;	/* žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÎÎ°è€ò³ÎÊÝ€¹€ë€¿€á€Î·¿ */
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ø¥Ã¥À€Î·¿ÄêµÁ
+ */
+typedef	struct t_msg {			/* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€Î¥á¥Ã¥»¡Œ¥ž¥Ø¥Ã¥À */
+	struct t_msg	*pk_next;
+} T_MSG;
+
+typedef	struct t_msg_pri {		/* Í¥ÀèÅÙÉÕ€­¥á¥Ã¥»¡Œ¥ž¥Ø¥Ã¥À */
+	T_MSG	msgque;				/* ¥á¥Ã¥»¡Œ¥ž¥Ø¥Ã¥À */
+	PRI		msgpri;				/* ¥á¥Ã¥»¡Œ¥žÍ¥ÀèÅÙ */
+} T_MSG_PRI;
+
+/*
+ *  ¥Ñ¥±¥Ã¥È·ÁŒ°€ÎÄêµÁ
+ */
+typedef struct t_ctsk {
+	ATR			tskatr;		/* ¥¿¥¹¥¯Â°À­ */
+	intptr_t	exinf;		/* ¥¿¥¹¥¯€Î³ÈÄ¥ŸðÊó */
+	TASK		task;		/* ¥¿¥¹¥¯€Î¥á¥€¥ó¥ë¡Œ¥Á¥ó€ÎÀèÆ¬ÈÖÃÏ */
+	PRI			itskpri;	/* ¥¿¥¹¥¯€Îµ¯Æ°»þÍ¥ÀèÅÙ */
+	SIZE		stksz;		/* ¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯ÎÎ°è€Î¥µ¥€¥º */
+	STK_T 		*stk;		/* ¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯ÎÎ°è€ÎÀèÆ¬ÈÖÃÏ */
+} T_CTSK;
+
+typedef struct t_rtsk {
+	STAT	tskstat;	/* ¥¿¥¹¥¯ŸõÂÖ */
+	PRI		tskpri;		/* ¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ */
+	PRI		tskbpri;	/* ¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ */
+	STAT	tskwait;	/* ÂÔ€ÁÍ×°ø */
+	ID		wobjid;		/* ÂÔ€ÁÂÐŸÝ€Î¥ª¥Ö¥ž¥§¥¯¥È€ÎID */
+	TMO		lefttmo;	/* ¥¿¥€¥à¥¢¥Š¥È€¹€ë€Þ€Ç€Î»þŽÖ */
+	uint_t	actcnt;		/* µ¯Æ°Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô */
+	uint_t	wupcnt;		/* µ¯Ÿ²Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô */
+} T_RTSK;
+
+typedef struct t_dtex {
+	ATR		texatr;		/* ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óÂ°À­ */
+	TEXRTN	texrtn;		/* ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎÀèÆ¬ÈÖÃÏ */
+} T_DTEX;
+
+typedef struct t_rtex {
+	STAT	texstat;	/* ¥¿¥¹¥¯Îã³°œèÍý€ÎŸõÂÖ */
+	TEXPTN	pndptn;		/* ÊÝÎ±Îã³°Í×°ø */
+} T_RTEX;
+
+typedef struct t_csem {
+	ATR		sematr;		/* ¥»¥Þ¥Õ¥©Â°À­ */
+	uint_t	isemcnt;	/* ¥»¥Þ¥Õ¥©€ÎœéŽü»ñž»¿ô */
+	uint_t	maxsem;		/* ¥»¥Þ¥Õ¥©€ÎºÇÂç»ñž»¿ô */
+} T_CSEM;
+
+typedef struct t_rsem {
+	ID		wtskid;		/* ¥»¥Þ¥Õ¥©€ÎÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
+	uint_t	semcnt;		/* ¥»¥Þ¥Õ¥©€Îžœºß€Î»ñž»¿ô */
+} T_RSEM;
+
+typedef struct t_cflg {
+	ATR		flgatr;		/* ¥€¥Ù¥ó¥È¥Õ¥é¥°Â°À­ */
+	FLGPTN	iflgptn;	/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎœéŽü¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó */
+} T_CFLG;
+
+typedef struct t_rflg {
+	ID		wtskid;		/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
+	FLGPTN	flgptn;		/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€Îžœºß€Î¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó */
+} T_RFLG;
+
+typedef struct t_cdtq {
+	ATR		dtqatr;		/* ¥Ç¡Œ¥¿¥­¥å¡ŒÂ°À­ */
+	uint_t	dtqcnt;		/* ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€Ë³ÊÇŒ€Ç€­€ë¥Ç¡Œ¥¿¿ô */
+	void 	*dtqmb;		/* ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€ÎÀèÆ¬ÈÖÃÏ */
+} T_CDTQ;
+
+typedef struct t_rdtq {
+	ID		stskid;		/* ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎÁ÷¿®ÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
+	ID		rtskid;		/* ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎŒõ¿®ÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
+	uint_t	sdtqcnt;	/* ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€Ë³ÊÇŒ€µ€ì€Æ€€€ë¥Ç¡Œ¥¿€Î¿ô */
+} T_RDTQ;
+
+typedef struct t_cpdq {
+	ATR		pdqatr;		/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒÂ°À­ */
+	uint_t	pdqcnt;		/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€Ë³ÊÇŒ€Ç€­€ë¥Ç¡Œ¥¿¿ô */
+	PRI		maxdpri;	/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€ËÁ÷¿®€Ç€­€ë¥Ç¡Œ¥¿Í¥ÀèÅÙ€ÎºÇ
+						   ÂçÃÍ */
+	void 	*pdqmb;		/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€ÎÀèÆ¬ÈÖÃÏ */
+} T_CPDQ;
+
+typedef struct t_rpdq {
+	ID		stskid;		/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎÁ÷¿®ÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯
+						   €ÎIDÈÖ¹æ */
+	ID		rtskid;		/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎŒõ¿®ÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯
+						   €ÎIDÈÖ¹æ */
+	uint_t	spdqcnt;	/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€Ë³ÊÇŒ€µ€ì€Æ€€€ë¥Ç¡Œ
+						   ¥¿€Î¿ô */
+} T_RPDQ;
+
+typedef struct t_cmbx {
+	ATR		mbxatr;		/* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹Â°À­ */
+	PRI		maxmpri;	/* Í¥ÀèÅÙ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€ËÁ÷¿®€Ç€­€ë¥á¥Ã¥»¡Œ¥žÍ¥Àè
+						   ÅÙ€ÎºÇÂçÃÍ */
+	void 	*mprihd;	/* Í¥ÀèÅÙÊÌ€Î¥á¥Ã¥»¡Œ¥ž¥­¥å¡Œ¥Ø¥Ã¥ÀÎÎ°è€ÎÀèÆ¬ÈÖÃÏ */
+} T_CMBX;
+
+typedef struct t_rmbx {
+	ID		wtskid;		/* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€ÎÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
+	T_MSG	*pk_msg;	/* ¥á¥Ã¥»¡Œ¥ž¥­¥å¡Œ€ÎÀèÆ¬€Ë€Ä€Ê€¬€ì€¿¥á¥Ã¥»¡Œ¥ž
+						   €ÎÀèÆ¬ÈÖÃÏ */
+} T_RMBX;
+
+typedef struct t_cmpf {
+	ATR		mpfatr;		/* žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÂ°À­ */
+	uint_t	blkcnt;		/* ³ÍÆÀ€Ç€­€ëžÇÄêÄ¹¥á¥â¥ê¥Ö¥í¥Ã¥¯€Î¿ô */
+	uint_t	blksz;		/* žÇÄêÄ¹¥á¥â¥ê¥Ö¥í¥Ã¥¯€Î¥µ¥€¥º */
+	MPF_T 	*mpf;		/* žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÎÎ°è€ÎÀèÆ¬ÈÖÃÏ */
+	void 	*mpfmb;		/* žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëŽÉÍýÎÎ°è€ÎÀèÆ¬ÈÖÃÏ */
+} T_CMPF;
+
+typedef struct t_rmpf {
+	ID		wtskid;		/* žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ë€ÎÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€Î
+						   IDÈÖ¹æ */
+	uint_t	fblkcnt;	/* žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÎÎ°è€Î¶õ€­¥á¥â¥êÎÎ°è€Ë³ä€ê
+						   ÉÕ€±€ë€³€È€¬€Ç€­€ëžÇÄêÄ¹¥á¥â¥ê¥Ö¥í¥Ã¥¯€Î¿ô */
+} T_RMPF;
+
+typedef struct t_ccyc {
+	ATR			cycatr;		/* ŒþŽü¥Ï¥ó¥É¥éÂ°À­ */
+	intptr_t	exinf;		/* ŒþŽü¥Ï¥ó¥É¥é€Î³ÈÄ¥ŸðÊó */
+	CYCHDR		cychdr;		/* ŒþŽü¥Ï¥ó¥É¥é€ÎÀèÆ¬ÈÖÃÏ */
+	RELTIM		cyctim;		/* ŒþŽü¥Ï¥ó¥É¥é€Îµ¯Æ°ŒþŽü */
+	RELTIM		cycphs;		/* ŒþŽü¥Ï¥ó¥É¥é€Îµ¯Æ°°ÌÁê */
+} T_CCYC;
+
+typedef struct t_rcyc {
+	STAT	cycstat;	/* ŒþŽü¥Ï¥ó¥É¥é€ÎÆ°ºîŸõÂÖ */
+	RELTIM	lefttim;	/* Œ¡€ËŒþŽü¥Ï¥ó¥É¥é€òµ¯Æ°€¹€ë»þ¹ï€Þ€Ç€ÎÁêÂÐ»þŽÖ */
+} T_RCYC;
+
+typedef struct t_calm {
+	ATR			almatr;		/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éÂ°À­ */
+	intptr_t	exinf;		/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€Î³ÈÄ¥ŸðÊó */
+	ALMHDR		almhdr;		/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ÎÀèÆ¬ÈÖÃÏ */
+} T_CALM;
+
+typedef struct t_ralm {
+	STAT	almstat;	/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ÎÆ°ºîŸõÂÖ */
+	RELTIM	lefttim;	/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€òµ¯Æ°€¹€ë»þ¹ï€Þ€Ç€ÎÁêÂÐ»þŽÖ */
+} T_RALM;
+
+typedef struct t_cisr {
+	ATR			isratr;		/* ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óÂ°À­ */
+	intptr_t	exinf;		/* ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó€Î³ÈÄ¥ŸðÊó */
+	INTNO		intno;		/* ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó€òÅÐÏ¿€¹€ë³ä¹þ€ßÈÖ¹æ */
+	ISR			isr;		/* ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó€ÎÀèÆ¬ÈÖÃÏ */
+	PRI			isrpri;		/* ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óÍ¥ÀèÅÙ */
+} T_CISR;
+
+/*
+ *  ¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎÀëžÀ
+ */
+
+/*
+ *  ¥¿¥¹¥¯ŽÉÍýµ¡Çœ
+ */
+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();
+
+/*
+ *  ¥¿¥¹¥¯ÉÕÂ°Æ±Žüµ¡Çœ
+ */
+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();
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍýµ¡Çœ
+ */
+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();
+
+/*
+ *  Æ±Žü¡ŠÄÌ¿®µ¡Çœ
+ */
+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();
+
+/*
+ *  ¥á¥â¥ê¥×¡Œ¥ëŽÉÍýµ¡Çœ
+ */
+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();
+
+/*
+ *  ¥·¥¹¥Æ¥àŸõÂÖŽÉÍýµ¡Çœ
+ */
+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Îã³°ŽÉÍýµ¡Çœ
+ */
+extern bool_t	xsns_dpn(void *p_excinf) throw();
+extern bool_t	xsns_xpn(void *p_excinf) throw();
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  ¥ª¥Ö¥ž¥§¥¯¥ÈÂ°À­€ÎÄêµÁ
+ */
+#define TA_ACT			UINT_C(0x02)	/* ¥¿¥¹¥¯€òµ¯Æ°€µ€ì€¿ŸõÂÖ€ÇÀžÀ® */
+
+#define TA_TPRI			UINT_C(0x01)	/* ¥¿¥¹¥¯€ÎÂÔ€Á¹ÔÎó€òÍ¥ÀèÅÙœç€Ë */
+#define TA_MPRI			UINT_C(0x02)	/* ¥á¥Ã¥»¡Œ¥ž¥­¥å¡Œ€òÍ¥ÀèÅÙœç€Ë */
+
+#define TA_WMUL			UINT_C(0x02)	/* Ê£¿ô€ÎÂÔ€Á¥¿¥¹¥¯ */
+#define TA_CLR			UINT_C(0x04)	/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€Î¥¯¥ê¥¢»ØÄê */
+
+#define TA_STA			UINT_C(0x02)	/* ŒþŽü¥Ï¥ó¥É¥é€òÆ°ºîŸõÂÖ€ÇÀžÀ® */
+
+#define TA_NONKERNEL	UINT_C(0x02)	/* ¥«¡Œ¥Í¥ëŽÉÍý³°€Î³ä¹þ€ß */
+
+#define TA_ENAINT		UINT_C(0x01)	/* ³ä¹þ€ßÍ×µá¶Ø»ß¥Õ¥é¥°€ò¥¯¥ê¥¢ */
+#define TA_EDGE			UINT_C(0x02)	/* ¥š¥Ã¥ž¥È¥ê¥¬ */
+
+/*
+ *  ¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎÆ°ºî¥â¡Œ¥É€ÎÄêµÁ
+ */
+#define TWF_ORW			UINT_C(0x01)	/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎORÂÔ€Á */
+#define TWF_ANDW		UINT_C(0x02)	/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎANDÂÔ€Á */
+
+/*
+ *  ¥ª¥Ö¥ž¥§¥¯¥È€ÎŸõÂÖ€ÎÄêµÁ
+ */
+#define TTS_RUN			UINT_C(0x01)	/* ŒÂ¹ÔŸõÂÖ */
+#define TTS_RDY			UINT_C(0x02)	/* ŒÂ¹Ô²ÄÇœŸõÂÖ */
+#define TTS_WAI			UINT_C(0x04)	/* ÂÔ€ÁŸõÂÖ */
+#define TTS_SUS			UINT_C(0x08)	/* ¶¯À©ÂÔ€ÁŸõÂÖ */
+#define TTS_WAS			UINT_C(0x0c)	/* ÆóœÅÂÔ€ÁŸõÂÖ */
+#define TTS_DMT			UINT_C(0x10)	/* µÙ»ßŸõÂÖ */
+
+#define TTW_SLP			UINT_C(0x0001)	/* µ¯Ÿ²ÂÔ€Á */
+#define TTW_DLY			UINT_C(0x0002)	/* »þŽÖ·Ð²áÂÔ€Á */
+#define TTW_SEM			UINT_C(0x0004)	/* ¥»¥Þ¥Õ¥©€Î»ñž»³ÍÆÀÂÔ€Á */
+#define TTW_FLG			UINT_C(0x0008)	/* ¥€¥Ù¥ó¥È¥Õ¥é¥°ÂÔ€Á */
+#define TTW_SDTQ		UINT_C(0x0010)	/* ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®ÂÔ€Á */
+#define TTW_RDTQ		UINT_C(0x0020)	/* ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TTW_SPDQ		UINT_C(0x0100)	/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®ÂÔ€Á */
+#define TTW_RPDQ		UINT_C(0x0200)	/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TTW_MBX			UINT_C(0x0040)	/* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TTW_MPF			UINT_C(0x2000)	/* žÇÄêÄ¹¥á¥â¥ê¥Ö¥í¥Ã¥¯€Î³ÍÆÀÂÔ€Á */
+
+#define TTEX_ENA		UINT_C(0x01)	/* ¥¿¥¹¥¯Îã³°œèÍýµö²ÄŸõÂÖ */
+#define TTEX_DIS		UINT_C(0x02)	/* ¥¿¥¹¥¯Îã³°œèÍý¶Ø»ßŸõÂÖ */
+
+#define TCYC_STP		UINT_C(0x01)	/* ŒþŽü¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€Ê€€ */
+#define TCYC_STA		UINT_C(0x02)	/* ŒþŽü¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€ë */
+
+#define TALM_STP		UINT_C(0x01)	/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€Ê€€ */
+#define TALM_STA		UINT_C(0x02)	/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€ë */
+
+/*
+ *  €œ€ÎÂŸ€ÎÄê¿ô€ÎÄêµÁ
+ */
+#define TSK_SELF		0			/* Œ«¥¿¥¹¥¯»ØÄê */
+#define TSK_NONE		0			/* ³ºÅö€¹€ë¥¿¥¹¥¯€¬€Ê€€ */
+
+#define TPRI_SELF		0			/* Œ«¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ */
+#define TPRI_INI		0			/* ¥¿¥¹¥¯€Îµ¯Æ°»þÍ¥ÀèÅÙ */
+
+#define TIPM_ENAALL		0			/* ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœü */
+
+/*
+ *  ¹œÀ®Äê¿ô€È¥Þ¥¯¥í
+ */
+
+/*
+ *  ¥µ¥Ý¡Œ¥È€¹€ëµ¡Çœ
+ */
+#ifdef TOPPERS_TARGET_SUPPORT_DIS_INT
+#define TOPPERS_SUPPORT_DIS_INT			/* dis_int€¬¥µ¥Ý¡Œ¥È€µ€ì€Æ€€€ë */
+#endif /* TOPPERS_TARGET_SUPPORT_DIS_INT */
+
+#ifdef TOPPERS_TARGET_SUPPORT_ENA_INT
+#define TOPPERS_SUPPORT_ENA_INT			/* ena_int€¬¥µ¥Ý¡Œ¥È€µ€ì€Æ€€€ë */
+#endif /* TOPPERS_TARGET_SUPPORT_ENA_INT */
+
+#ifdef TOPPERS_TARGET_SUPPORT_GET_UTM
+#define TOPPERS_SUPPORT_GET_UTM			/* get_utm€¬¥µ¥Ý¡Œ¥È€µ€ì€Æ€€€ë */
+#endif /* TOPPERS_TARGET_SUPPORT_GET_UTM */
+
+#define TOPPERS_SUPPORT_DYNAMIC_CRE		/* Æ°ÅªÀžÀ®µ¡Çœ³ÈÄ¥ */
+
+/*
+ *  Í¥ÀèÅÙ€ÎÈÏ°Ï
+ */
+#define TMIN_TPRI		1			/* ¥¿¥¹¥¯Í¥ÀèÅÙ€ÎºÇŸ®ÃÍ¡ÊºÇ¹âÃÍ¡Ë*/
+#define TMAX_TPRI		16			/* ¥¿¥¹¥¯Í¥ÀèÅÙ€ÎºÇÂçÃÍ¡ÊºÇÄãÃÍ¡Ë*/
+#define TMIN_DPRI		1			/* ¥Ç¡Œ¥¿Í¥ÀèÅÙ€ÎºÇŸ®ÃÍ¡ÊºÇ¹âÃÍ¡Ë*/
+#define TMAX_DPRI		16			/* ¥Ç¡Œ¥¿Í¥ÀèÅÙ€ÎºÇÂçÃÍ¡ÊºÇÄãÃÍ¡Ë*/
+#define TMIN_MPRI		1			/* ¥á¥Ã¥»¡Œ¥žÍ¥ÀèÅÙ€ÎºÇŸ®ÃÍ¡ÊºÇ¹âÃÍ¡Ë*/
+#define TMAX_MPRI		16			/* ¥á¥Ã¥»¡Œ¥žÍ¥ÀèÅÙ€ÎºÇÂçÃÍ¡ÊºÇÄãÃÍ¡Ë*/
+#define TMIN_ISRPRI		1			/* ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óÍ¥ÀèÅÙ€ÎºÇŸ®ÃÍ */
+#define TMAX_ISRPRI		16			/* ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óÍ¥ÀèÅÙ€ÎºÇÂçÃÍ */
+
+/*
+ *  ¥Ð¡Œ¥ž¥ç¥óŸðÊó
+ */
+#define TKERNEL_MAKER	UINT_C(0x0118)	/* ¥«¡Œ¥Í¥ë€Î¥á¡Œ¥«¡Œ¥³¡Œ¥É */
+#define TKERNEL_PRID	UINT_C(0x0007)	/* ¥«¡Œ¥Í¥ë€ÎŒ±ÊÌÈÖ¹æ */
+#define TKERNEL_SPVER	UINT_C(0xf517)	/* ¥«¡Œ¥Í¥ë»ÅÍÍ€Î¥Ð¡Œ¥ž¥ç¥óÈÖ¹æ */
+#define TKERNEL_PRVER	UINT_C(0x1092)	/* ¥«¡Œ¥Í¥ë€Î¥Ð¡Œ¥ž¥ç¥óÈÖ¹æ */
+
+/*
+ *  ¥­¥å¡Œ¥€¥ó¥°²ó¿ô€ÎºÇÂçÃÍ
+ */
+#define TMAX_ACTCNT		UINT_C(1)		/* µ¯Æ°Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô€ÎºÇÂçÃÍ */
+#define TMAX_WUPCNT		UINT_C(1)		/* µ¯Ÿ²Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô€ÎºÇÂçÃÍ */
+
+/*
+ *  ¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó€Î¥Ó¥Ã¥È¿ô
+ */
+#ifndef TBIT_TEXPTN					/* ¥¿¥¹¥¯Îã³°Í×°ø€Î¥Ó¥Ã¥È¿ô */
+#define TBIT_TEXPTN		(sizeof(TEXPTN) * CHAR_BIT)
+#endif /* TBIT_TEXPTN */
+
+#ifndef TBIT_FLGPTN					/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€Î¥Ó¥Ã¥È¿ô */
+#define TBIT_FLGPTN		(sizeof(FLGPTN) * CHAR_BIT)
+#endif /* TBIT_FLGPTN */
+
+/*
+ *  ¥á¥â¥êÎÎ°è³ÎÊÝ€Î€¿€á€Î¥Þ¥¯¥í
+ *
+ *  °Ê²Œ€ÎTOPPERS_COUNT_SZ€ÈTOPPERS_ROUND_SZ€ÎÄêµÁ€Ï¡€unit€¬2€Î¶ÒŸè€Ç€¢
+ *  €ë€³€È€ò²ŸÄê€·€Æ€€€ë¡¥
+ */
+#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	/* ¥»¥Þ¥Õ¥©€ÎºÇÂç»ñž»¿ô€ÎºÇÂçÃÍ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* TOPPERS_KERNEL_H */
Index: /extension/dcre/kernel/Makefile.kernel
===================================================================
--- /extension/dcre/kernel/Makefile.kernel	(revision 7)
+++ /extension/dcre/kernel/Makefile.kernel	(revision 7)
@@ -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
+# 
+#  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+#  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+#  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+#  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+#      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+#      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+#  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+#      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+#      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+#      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+#  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+#      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+#      €È¡¥
+#    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+#        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+#    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+#        Êó¹ð€¹€ë€³€È¡¥
+#  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+#      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+#      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+#      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+#      ÌÈÀÕ€¹€ë€³€È¡¥
+# 
+#  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+#  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+#  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+#  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+#  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+# 
+#  @(#) $Id$
+# 
+
+#
+#		¥«¡Œ¥Í¥ë€Î¥Õ¥¡¥€¥ë¹œÀ®€ÎÄêµÁ
+#
+
+#
+#  1€Ä€Î¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€«€éÊ£¿ô€Î¥ª¥Ö¥ž¥§¥¯¥È¥Õ¥¡¥€¥ë€òÀžÀ®€¹€ë€è€Š€Ëºî
+#  À®€µ€ì€¿¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€Î¥ê¥¹¥È
+#
+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
+
+#
+#  ³Æ¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€«€éÀžÀ®€µ€ì€ë¥ª¥Ö¥ž¥§¥¯¥È¥Õ¥¡¥€¥ë€Î¥ê¥¹¥È
+#
+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
+
+#
+#  ÀžÀ®€µ€ì€ë¥ª¥Ö¥ž¥§¥¯¥È¥Õ¥¡¥€¥ë€Î°ÍÂžŽØ·ž€ÎÄêµÁ
+#
+$(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: /extension/dcre/kernel/alarm.c
===================================================================
--- /extension/dcre/kernel/alarm.c	(revision 7)
+++ /extension/dcre/kernel/alarm.c	(revision 7)
@@ -0,0 +1,477 @@
+/*
+ *  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-2014 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$
+ */
+
+/*
+ *		¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éµ¡Çœ
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "alarm.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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 */
+
+/*
+ *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€Î¿ô
+ */
+#define tnum_alm	((uint_t)(tmax_almid - TMIN_ALMID + 1))
+#define tnum_salm	((uint_t)(tmax_salmid - TMIN_ALMID + 1))
+
+/*
+ *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éID€«€é¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éŽÉÍý¥Ö¥í¥Ã¥¯€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#define INDEX_ALM(almid)	((uint_t)((almid) - TMIN_ALMID))
+#define get_almcb(almid)	(&(almcb_table[INDEX_ALM(almid)]))
+
+#ifdef TOPPERS_almini
+
+/*
+ *  »ÈÍÑ€·€Æ€€€Ê€€¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éŽÉÍý¥Ö¥í¥Ã¥¯€Î¥ê¥¹¥È
+ *
+ *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éŽÉÍý¥Ö¥í¥Ã¥¯€ÎÀèÆ¬€Ë€Ï¥­¥å¡Œ€Ë€Ä€Ê€°€¿€á€ÎÎÎ°è€¬€Ê
+ *  €€€¿€á¡€¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯¡Êtmevtb¡Ë€ÎÎÎ°è€òÍÑ€€€ë¡¥
+ */
+QUEUE	free_almcb;
+
+/*
+ *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éµ¡Çœ€ÎœéŽü²œ
+ */
+void
+initialize_alarm(void)
+{
+	uint_t	i, j;
+	ALMCB	*p_almcb;
+	ALMINIB	*p_alminib;
+
+	for (i = 0; i < tnum_salm; i++) {
+		p_almcb = &(almcb_table[i]);
+		p_almcb->p_alminib = &(alminib_table[i]);
+		p_almcb->almsta = false;
+	}
+	queue_initialize(&free_almcb);
+	for (j = 0; i < tnum_alm; i++, j++) {
+		p_almcb = &(almcb_table[i]);
+		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 */
+
+/*
+ *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ÎÀžÀ®
+ */
+#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 (tnum_alm == 0 || 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 */
+
+/*
+ *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€Îºïœü
+ */
+#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 */
+
+/*
+ *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ÎÆ°ºî³«»Ï
+ */
+#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 */
+
+/*
+ *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ÎÆ°ºî³«»Ï¡ÊÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ */
+#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 */
+
+/*
+ *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ÎÆ°ºîÄä»ß
+ */
+#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 */
+
+/*
+ *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ÎÆ°ºîÄä»ß¡ÊÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ */
+#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 */
+
+/*
+ *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ÎŸõÂÖ»²ŸÈ
+ */
+#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 */
+
+/*
+ *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éµ¯Æ°¥ë¡Œ¥Á¥ó
+ */
+#ifdef TOPPERS_almcal
+
+void
+call_almhdr(ALMCB *p_almcb)
+{
+	PRI		saved_ipm;
+
+	/*
+	 *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€òÄä»ßŸõÂÖ€Ë€¹€ë¡¥
+	 */
+	p_almcb->almsta = false;
+
+	/*
+	 *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ò¡€CPU¥í¥Ã¥¯²òœüŸõÂÖ€ÇžÆ€ÓœÐ€¹¡¥
+	 */
+	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: /extension/dcre/kernel/alarm.h
===================================================================
--- /extension/dcre/kernel/alarm.h	(revision 7)
+++ /extension/dcre/kernel/alarm.h	(revision 7)
@@ -0,0 +1,109 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 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$
+ */
+
+/*
+ *		¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éµ¡Çœ
+ */
+
+#ifndef TOPPERS_ALARM_H
+#define TOPPERS_ALARM_H
+
+#include <queue.h>
+#include "time_event.h"
+
+/*
+ *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯
+ */
+typedef struct alarm_handler_initialization_block {
+	ATR			almatr;			/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éÂ°À­ */
+	intptr_t	exinf;			/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€Î³ÈÄ¥ŸðÊó */
+	ALMHDR		almhdr;			/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€Îµ¯Æ°ÈÖÃÏ */
+} ALMINIB;
+
+/*
+ *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éŽÉÍý¥Ö¥í¥Ã¥¯
+ */
+typedef struct alarm_handler_control_block {
+	const ALMINIB *p_alminib;	/* œéŽü²œ¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿ */
+	bool_t		almsta;			/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ÎÆ°ºîŸõÂÖ */
+	TMEVTB		tmevtb;			/* ¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯ */
+} ALMCB;
+
+/*
+ *  »ÈÍÑ€·€Æ€€€Ê€€¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éŽÉÍý¥Ö¥í¥Ã¥¯€Î¥ê¥¹¥È
+ */
+extern QUEUE	free_almcb;
+
+/*
+ *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éID€ÎºÇÂçÃÍ¡Êkernel_cfg.c¡Ë
+ */
+extern const ID	tmax_almid;
+extern const ID	tmax_salmid;
+
+/*
+ *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern const ALMINIB	alminib_table[];
+extern ALMINIB			aalminib_table[];
+
+/*
+ *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éŽÉÍý¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern ALMCB	almcb_table[];
+
+/*
+ *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éŽÉÍý¥Ö¥í¥Ã¥¯€«€é¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éID€òŒè€êœÐ€¹€¿€á€Î
+ *  ¥Þ¥¯¥í
+ */
+#define	ALMID(p_almcb)	((ID)(((p_almcb) - almcb_table) + TMIN_ALMID))
+
+/*
+ *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éµ¡Çœ€ÎœéŽü²œ
+ */
+extern void	initialize_alarm(void);
+
+/*
+ *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éµ¯Æ°¥ë¡Œ¥Á¥ó
+ */
+extern void	call_almhdr(ALMCB *p_almcb);
+
+#endif /* TOPPERS_ALARM_H */
Index: /extension/dcre/kernel/allfunc.h
===================================================================
--- /extension/dcre/kernel/allfunc.h	(revision 7)
+++ /extension/dcre/kernel/allfunc.h	(revision 7)
@@ -0,0 +1,265 @@
+/*
+ *  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$
+ */
+
+/*
+ *		€¹€Ù€Æ€ÎŽØ¿ô€ò¥³¥ó¥Ñ¥€¥ë€¹€ë€¿€á€ÎÄêµÁ
+ */
+
+#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: /extension/dcre/kernel/check.h
===================================================================
--- /extension/dcre/kernel/check.h	(revision 7)
+++ /extension/dcre/kernel/check.h	(revision 7)
@@ -0,0 +1,467 @@
+/*
+ *  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-2014 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$
+ */
+
+/*
+ *		¥š¥é¡Œ¥Á¥§¥Ã¥¯ÍÑ¥Þ¥¯¥í
+ */
+
+#ifndef TOPPERS_CHECK_H
+#define TOPPERS_CHECK_H
+
+/*
+ *  ÍœÌóÂ°À­¥š¥é¡Œ€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
+ */
+#define CHECK_RSATR(atr, valid_atr) do {					\
+	if (((atr) & ~(valid_atr)) != 0U) {						\
+		ercd = E_RSATR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  Í¥ÀèÅÙ€ÎÈÏ°Ï€ÎÈœÄê
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯Í¥ÀèÅÙ€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
+ */
+#define CHECK_TPRI(tpri) do {								\
+	if (!VALID_TPRI(tpri)) {								\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_TPRI_INI(tpri) do {							\
+	if (!(VALID_TPRI(tpri) || (tpri) == TPRI_INI)) {		\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_TPRI_SELF(tpri) do {							\
+	if (!(VALID_TPRI(tpri) || (tpri) == TPRI_SELF)) {		\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  ¥Ç¡Œ¥¿Í¥ÀèÅÙ€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
+ */
+#define CHECK_DPRI(dpri) do {								\
+	if (!VALID_DPRI(dpri)) {								\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥žÍ¥ÀèÅÙ€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
+ */
+#define CHECK_MPRI(mpri) do {								\
+	if (!VALID_MPRI(mpri)) {								\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óÍ¥ÀèÅÙ€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
+ */
+#define CHECK_ISRPRI(isrpri) do {							\
+	if (!VALID_ISRPRI(isrpri)) {							\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  ¥¿¥€¥à¥¢¥Š¥È»ØÄêÃÍ€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
+ */
+#define CHECK_TMOUT(tmout) do {								\
+	if (!(TMO_FEVR <= (tmout))) {							\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
+ */
+#define CHECK_INTPRI_CHGIPM(intpri) do {					\
+	if (!VALID_INTPRI_CHGIPM(intpri)) {						\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  ³ä¹þ€ßÈÖ¹æ€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
+ */
+#define CHECK_INTNO_CREISR(intno) do {						\
+	if (!VALID_INTNO_CREISR(intno)) {						\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_INTNO_DISINT(intno) do {						\
+	if (!VALID_INTNO_DISINT(intno)) {						\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  ¥¢¥é¥€¥ó€·€Æ€€€ë€«€ÎÈœÄê
+ */
+#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€Ç€Ê€€€³€È€Î¥Á¥§¥Ã¥¯
+ */
+#ifdef CHECK_FUNC_NONNULL
+#define FUNC_NONNULL(func)		((func) != NULL)
+#else /* CHECK_FUNC_NONNULL */
+#define FUNC_NONNULL(func)		true
+#endif /* CHECK_FUNC_NONNULL */
+
+/*
+ *  ŽØ¿ô€ÎÀèÆ¬ÈÖÃÏ€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
+ */
+#define CHECK_ALIGN_FUNC(func) do {							\
+	if (!FUNC_ALIGNED(func)) {								\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_NONNULL_FUNC(func) do {						\
+	if (!FUNC_NONNULL(func)) {								\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  ¥¹¥¿¥Ã¥¯¥µ¥€¥º€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
+ */
+#define CHECK_ALIGN_STKSZ(stksz) do {						\
+	if (!STKSZ_ALIGNED(stksz)) {							\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  ¥¹¥¿¥Ã¥¯€ÎÀèÆ¬ÈÖÃÏ€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
+ */
+#define CHECK_ALIGN_STACK(stack) do {						\
+	if (!STACK_ALIGNED(stack)) {							\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÎÎ°è€ÎÀèÆ¬ÈÖÃÏ€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
+ */
+#define CHECK_ALIGN_MPF(mpf) do {							\
+	if (!MPF_ALIGNED(mpf)) {								\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  ŽÉÍýÎÎ°è€ÎÀèÆ¬ÈÖÃÏ€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
+ */
+#define CHECK_ALIGN_MB(mb) do {								\
+	if (!MB_ALIGNED(mb)) {									\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  €œ€ÎÂŸ€Î¥Ñ¥é¥á¡Œ¥¿¥š¥é¡Œ€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
+ */
+#define CHECK_PAR(exp) do {									\
+	if (!(exp)) {											\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  ¥ª¥Ö¥ž¥§¥¯¥ÈID€ÎÈÏ°Ï€ÎÈœÄê
+ */
+#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)
+
+/*
+ *  ¥ª¥Ö¥ž¥§¥¯¥ÈID€Î¥Á¥§¥Ã¥¯¡ÊE_ID¡Ë
+ */
+#define CHECK_TSKID(tskid) do {								\
+	if (!VALID_TSKID(tskid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_TSKID_SELF(tskid) do {						\
+	if (!(VALID_TSKID(tskid) || (tskid) == TSK_SELF)) {		\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_SEMID(semid) do {								\
+	if (!VALID_SEMID(semid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_FLGID(flgid) do {								\
+	if (!VALID_FLGID(flgid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_DTQID(dtqid) do {								\
+	if (!VALID_DTQID(dtqid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_PDQID(pdqid) do {								\
+	if (!VALID_PDQID(pdqid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_MBXID(mbxid) do {								\
+	if (!VALID_MBXID(mbxid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_MPFID(mpfid) do {								\
+	if (!VALID_MPFID(mpfid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_CYCID(cycid) do {								\
+	if (!VALID_CYCID(cycid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_ALMID(almid) do {								\
+	if (!VALID_ALMID(almid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_ISRID(isrid) do {								\
+	if (!VALID_ISRID(isrid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  žÆœÐ€·¥³¥ó¥Æ¥­¥¹¥È€Î¥Á¥§¥Ã¥¯¡ÊE_CTX¡Ë
+ */
+#define CHECK_TSKCTX() do {									\
+	if (sense_context()) {									\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_INTCTX() do {									\
+	if (!sense_context()) {									\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  žÆœÐ€·¥³¥ó¥Æ¥­¥¹¥È€ÈCPU¥í¥Ã¥¯ŸõÂÖ€Î¥Á¥§¥Ã¥¯¡ÊE_CTX¡Ë
+ */
+#define CHECK_TSKCTX_UNL() do {								\
+	if (sense_context() || t_sense_lock()) {				\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_INTCTX_UNL() do {								\
+	if (!sense_context() || i_sense_lock()) {				\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥ÁÊÝÎ±ŸõÂÖ€Ç€Ê€€€«€Î¥Á¥§¥Ã¥¯¡ÊE_CTX¡Ë
+ */
+#define CHECK_DISPATCH() do {								\
+	if (sense_context() || t_sense_lock() || !dspflg) {		\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  €œ€ÎÂŸ€Î¥³¥ó¥Æ¥­¥¹¥È¥š¥é¡Œ€Î¥Á¥§¥Ã¥¯¡ÊE_CTX¡Ë
+ */
+#define CHECK_CTX(exp) do {									\
+	if (!(exp)) {											\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  Œ«¥¿¥¹¥¯€ò»ØÄê€·€Æ€€€Ê€€€«€Î¥Á¥§¥Ã¥¯¡ÊE_ILUSE¡Ë
+ */
+#define CHECK_NONSELF(p_tcb) do {							\
+	if ((p_tcb) == p_runtsk) {								\
+		ercd = E_ILUSE;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  €œ€ÎÂŸ€ÎÉÔÀµ»ÈÍÑ¥š¥é¡Œ€Î¥Á¥§¥Ã¥¯¡ÊE_ILUSE¡Ë
+ */
+#define CHECK_ILUSE(exp) do {								\
+	if (!(exp)) {											\
+		ercd = E_ILUSE;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  Ì€¥µ¥Ý¡Œ¥Èµ¡Çœ¥š¥é¡Œ€Î¥Á¥§¥Ã¥¯¡ÊE_NOSPT¡Ë
+ */
+#define CHECK_NOSPT(exp) do {								\
+	if (!(exp)) {											\
+		ercd = E_NOSPT;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  ÀÅÅª€Ê¥ª¥Ö¥ž¥§¥¯¥ÈŸõÂÖ¥š¥é¡Œ€Î¥Á¥§¥Ã¥¯¡ÊE_OBJ¡Ë
+ */
+#define CHECK_OBJ(exp) do {									\
+	if (!(exp)) {											\
+		ercd = E_OBJ;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#endif /* TOPPERS_CHECK_H */
Index: /extension/dcre/kernel/cyclic.c
===================================================================
--- /extension/dcre/kernel/cyclic.c	(revision 7)
+++ /extension/dcre/kernel/cyclic.c	(revision 7)
@@ -0,0 +1,414 @@
+/*
+ *  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-2014 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$
+ */
+
+/*
+ *		ŒþŽü¥Ï¥ó¥É¥éµ¡Çœ
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "cyclic.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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 */
+
+/*
+ *  ŒþŽü¥Ï¥ó¥É¥é€Î¿ô
+ */
+#define tnum_cyc	((uint_t)(tmax_cycid - TMIN_CYCID + 1))
+#define tnum_scyc	((uint_t)(tmax_scycid - TMIN_CYCID + 1))
+
+/*
+ *  ŒþŽü¥Ï¥ó¥É¥éID€«€éŒþŽü¥Ï¥ó¥É¥éŽÉÍý¥Ö¥í¥Ã¥¯€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#define INDEX_CYC(cycid)	((uint_t)((cycid) - TMIN_CYCID))
+#define get_cyccb(cycid)	(&(cyccb_table[INDEX_CYC(cycid)]))
+
+/*
+ *  ŒþŽü¥Ï¥ó¥É¥éµ¯Æ°€Î€¿€á€Î¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯€ÎÅÐÏ¿
+ */
+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
+
+/*
+ *  »ÈÍÑ€·€Æ€€€Ê€€ŒþŽü¥Ï¥ó¥É¥éŽÉÍý¥Ö¥í¥Ã¥¯€Î¥ê¥¹¥È
+ *
+ *  ŒþŽü¥Ï¥ó¥É¥éŽÉÍý¥Ö¥í¥Ã¥¯€ÎÀèÆ¬€Ë€Ï¥­¥å¡Œ€Ë€Ä€Ê€°€¿€á€ÎÎÎ°è€¬€Ê€€€¿
+ *  €á¡€¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯¡Êtmevtb¡Ë€ÎÎÎ°è€òÍÑ€€€ë¡¥
+ */
+QUEUE	free_cyccb;
+
+/*
+ *  ŒþŽü¥Ï¥ó¥É¥éµ¡Çœ€ÎœéŽü²œ
+ */
+void
+initialize_cyclic(void)
+{
+	uint_t	i, j;
+	CYCCB	*p_cyccb;
+	CYCINIB	*p_cycinib;
+
+	for (i = 0; i < tnum_scyc; i++) {
+		p_cyccb = &(cyccb_table[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; i++, j++) {
+		p_cyccb = &(cyccb_table[i]);
+		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 */
+
+/*
+ *  ŒþŽü¥Ï¥ó¥É¥é€ÎÀžÀ®
+ */
+#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 (tnum_cyc == 0 || 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,
+								base_time + 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 */
+
+/*
+ *  ŒþŽü¥Ï¥ó¥É¥é€Îºïœü
+ */
+#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 */
+
+/*
+ *  ŒþŽü¥Ï¥ó¥É¥é€ÎÆ°ºî³«»Ï
+ */
+#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 */
+
+/*
+ *  ŒþŽü¥Ï¥ó¥É¥é€ÎÆ°ºîÄä»ß
+ */
+#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 */
+
+/*
+ *  ŒþŽü¥Ï¥ó¥É¥é€ÎŸõÂÖ»²ŸÈ
+ */
+#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 */
+
+/*
+ *  ŒþŽü¥Ï¥ó¥É¥éµ¯Æ°¥ë¡Œ¥Á¥ó
+ */
+#ifdef TOPPERS_cyccal
+
+void
+call_cychdr(CYCCB *p_cyccb)
+{
+	PRI		saved_ipm;
+
+	/*
+	 *  Œ¡²ó€Îµ¯Æ°€Î€¿€á€Î¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯€òÅÐÏ¿€¹€ë¡¥
+	 *
+	 *  Æ±€ž¥¿¥€¥à¥Æ¥£¥Ã¥¯€ÇŒþŽü¥Ï¥ó¥É¥é€òºÆÅÙµ¯Æ°€¹€Ù€­Ÿì¹ç€Ë€Ï¡€€³€Î
+	 *  ŽØ¿ô€«€ésignal_time€ËÌá€Ã€¿žå€Ë¡€ºÆÅÙ€³€ÎŽØ¿ô€¬žÆ€Ð€ì€ë€³€È€Ë€Ê
+	 *  €ë¡¥
+	 */
+	tmevtb_enqueue_cyc(p_cyccb, p_cyccb->evttim + p_cyccb->p_cycinib->cyctim);
+
+	/*
+	 *  ŒþŽü¥Ï¥ó¥É¥é€ò¡€CPU¥í¥Ã¥¯²òœüŸõÂÖ€ÇžÆ€ÓœÐ€¹¡¥
+	 */
+	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: /extension/dcre/kernel/cyclic.h
===================================================================
--- /extension/dcre/kernel/cyclic.h	(revision 7)
+++ /extension/dcre/kernel/cyclic.h	(revision 7)
@@ -0,0 +1,111 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		ŒþŽü¥Ï¥ó¥É¥éµ¡Çœ
+ */
+
+#ifndef TOPPERS_CYCLIC_H
+#define TOPPERS_CYCLIC_H
+
+#include <queue.h>
+#include "time_event.h"
+
+/*
+ *  ŒþŽü¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯
+ */
+typedef struct cyclic_handler_initialization_block {
+	ATR			cycatr;			/* ŒþŽü¥Ï¥ó¥É¥éÂ°À­ */
+	intptr_t	exinf;			/* ŒþŽü¥Ï¥ó¥É¥é€Î³ÈÄ¥ŸðÊó */
+	CYCHDR		cychdr;			/* ŒþŽü¥Ï¥ó¥É¥é€Îµ¯Æ°ÈÖÃÏ */
+	RELTIM		cyctim;			/* ŒþŽü¥Ï¥ó¥É¥é€Îµ¯Æ°ŒþŽü */
+	RELTIM		cycphs;			/* ŒþŽü¥Ï¥ó¥É¥é€Îµ¯Æ°°ÌÁê */
+} CYCINIB;
+
+/*
+ *  ŒþŽü¥Ï¥ó¥É¥éŽÉÍý¥Ö¥í¥Ã¥¯
+ */
+typedef struct cyclic_handler_control_block {
+	const CYCINIB *p_cycinib;	/* œéŽü²œ¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿ */
+	bool_t		cycsta;			/* ŒþŽü¥Ï¥ó¥É¥é€ÎÆ°ºîŸõÂÖ */
+	EVTTIM		evttim;			/* Œ¡€ËŒþŽü¥Ï¥ó¥É¥é€òµ¯Æ°€¹€ë»þ¹ï */
+	TMEVTB		tmevtb;			/* ¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯ */
+} CYCCB;
+
+/*
+ *  »ÈÍÑ€·€Æ€€€Ê€€ŒþŽü¥Ï¥ó¥É¥éŽÉÍý¥Ö¥í¥Ã¥¯€Î¥ê¥¹¥È
+ */
+extern QUEUE	free_cyccb;
+
+/*
+ *  ŒþŽü¥Ï¥ó¥É¥éID€ÎºÇÂçÃÍ¡Êkernel_cfg.c¡Ë
+ */
+extern const ID	tmax_cycid;
+extern const ID	tmax_scycid;
+
+/*
+ *  ŒþŽü¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern const CYCINIB	cycinib_table[];
+extern CYCINIB			acycinib_table[];
+
+/*
+ *  ŒþŽü¥Ï¥ó¥É¥éŽÉÍý¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern CYCCB	cyccb_table[];
+
+/*
+ *  ŒþŽü¥Ï¥ó¥É¥éŽÉÍý¥Ö¥í¥Ã¥¯€«€éŒþŽü¥Ï¥ó¥É¥éID€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#define	CYCID(p_cyccb)	((ID)(((p_cyccb) - cyccb_table) + TMIN_CYCID))
+
+/*
+ *  ŒþŽü¥Ï¥ó¥É¥éµ¡Çœ€ÎœéŽü²œ
+ */
+extern void	initialize_cyclic(void);
+
+/*
+ *  ŒþŽü¥Ï¥ó¥É¥éµ¯Æ°¥ë¡Œ¥Á¥ó
+ */
+extern void	call_cychdr(CYCCB *p_cyccb);
+
+#endif /* TOPPERS_CYCLIC_H */
Index: /extension/dcre/kernel/dataqueue.c
===================================================================
--- /extension/dcre/kernel/dataqueue.c	(revision 7)
+++ /extension/dcre/kernel/dataqueue.c	(revision 7)
@@ -0,0 +1,928 @@
+/*
+ *  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-2014 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$
+ */
+
+/*
+ *		¥Ç¡Œ¥¿¥­¥å¡Œµ¡Çœ
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+#include "dataqueue.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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 */
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œ€Î¿ô
+ */
+#define tnum_dtq	((uint_t)(tmax_dtqid - TMIN_DTQID + 1))
+#define tnum_sdtq	((uint_t)(tmax_sdtqid - TMIN_DTQID + 1))
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡ŒID€«€é¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍý¥Ö¥í¥Ã¥¯€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#define INDEX_DTQ(dtqid)	((uint_t)((dtqid) - TMIN_DTQID))
+#define get_dtqcb(dtqid)	(&(dtqcb_table[INDEX_DTQ(dtqid)]))
+
+#ifdef TOPPERS_dtqini
+
+/*
+ *  »ÈÍÑ€·€Æ€€€Ê€€¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍý¥Ö¥í¥Ã¥¯€Î¥ê¥¹¥È
+ */
+QUEUE	free_dtqcb;
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œµ¡Çœ€ÎœéŽü²œ
+ */
+void
+initialize_dataqueue(void)
+{
+	uint_t	i, j;
+	DTQCB	*p_dtqcb;
+	DTQINIB	*p_dtqinib;
+
+	for (i = 0; i < tnum_sdtq; i++) {
+		p_dtqcb = &(dtqcb_table[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; i++, j++) {
+		p_dtqcb = &(dtqcb_table[i]);
+		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 */
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€Ø€Î¥Ç¡Œ¥¿€Î³ÊÇŒ
+ */
+#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 */
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€Ø€Î¥Ç¡Œ¥¿€Î¶¯À©³ÊÇŒ
+ */
+#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 */
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€«€é€Î¥Ç¡Œ¥¿€ÎŒèœÐ€·
+ */
+#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 */
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€Î¥Ç¡Œ¥¿Á÷¿®
+ */
+#ifdef TOPPERS_dtqsnd
+
+bool_t
+send_data(DTQCB *p_dtqcb, intptr_t data, bool_t *p_dspreq)
+{
+	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_dspreq = wait_complete(p_tcb);
+		return(true);
+	}
+	else if (p_dtqcb->count < p_dtqcb->p_dtqinib->dtqcnt) {
+		enqueue_data(p_dtqcb, data);
+		*p_dspreq = false;
+		return(true);
+	}
+	else {
+		return(false);
+	}
+}
+
+#endif /* TOPPERS_dtqsnd */
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€Î¥Ç¡Œ¥¿¶¯À©Á÷¿®
+ */
+#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 */
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€Î¥Ç¡Œ¥¿Œõ¿®
+ */
+#ifdef TOPPERS_dtqrcv
+
+bool_t
+receive_data(DTQCB *p_dtqcb, intptr_t *p_data, bool_t *p_dspreq)
+{
+	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_dspreq = wait_complete(p_tcb);
+		}
+		else {
+			*p_dspreq = 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_dspreq = wait_complete(p_tcb);
+		return(true);
+	}
+	else {
+		return(false);
+	}
+}
+
+#endif /* TOPPERS_dtqrcv */
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎÀžÀ®
+ */
+#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);
+	if (pk_cdtq->dtqmb != NULL) {
+		CHECK_ALIGN_MB(pk_cdtq->dtqmb);
+	}
+	dtqatr = pk_cdtq->dtqatr;
+	p_dtqmb = pk_cdtq->dtqmb;
+
+	t_lock_cpu();
+	if (tnum_dtq == 0 || 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 */
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œ€Îºïœü
+ */
+#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 */
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®
+ */
+#ifdef TOPPERS_snd_dtq
+
+ER
+snd_dtq(ID dtqid, intptr_t data)
+{
+	DTQCB	*p_dtqcb;
+	WINFO_DTQ winfo_dtq;
+	bool_t	dspreq;
+	ER		ercd;
+
+	LOG_SND_DTQ_ENTER(dtqid, data);
+	CHECK_DISPATCH();
+	CHECK_DTQID(dtqid);
+	p_dtqcb = get_dtqcb(dtqid);
+
+	t_lock_cpu();
+	if (p_dtqcb->p_dtqinib->dtqatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (send_data(p_dtqcb, data, &dspreq)) {
+		if (dspreq) {
+			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 */
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®¡Ê¥Ý¡Œ¥ê¥ó¥°¡Ë
+ */
+#ifdef TOPPERS_psnd_dtq
+
+ER
+psnd_dtq(ID dtqid, intptr_t data)
+{
+	DTQCB	*p_dtqcb;
+	bool_t	dspreq;
+	ER		ercd;
+
+	LOG_PSND_DTQ_ENTER(dtqid, data);
+	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 (send_data(p_dtqcb, data, &dspreq)) {
+		if (dspreq) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_TMOUT;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_PSND_DTQ_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_psnd_dtq */
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®¡Ê¥Ý¡Œ¥ê¥ó¥°¡€Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ */
+#ifdef TOPPERS_ipsnd_dtq
+
+ER
+ipsnd_dtq(ID dtqid, intptr_t data)
+{
+	DTQCB	*p_dtqcb;
+	bool_t	dspreq;
+	ER		ercd;
+
+	LOG_IPSND_DTQ_ENTER(dtqid, data);
+	CHECK_INTCTX_UNL();
+	CHECK_DTQID(dtqid);
+	p_dtqcb = get_dtqcb(dtqid);
+
+	i_lock_cpu();
+	if (p_dtqcb->p_dtqinib->dtqatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (send_data(p_dtqcb, data, &dspreq)) {
+		if (dspreq) {
+			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 */
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®¡Ê¥¿¥€¥à¥¢¥Š¥È€¢€ê¡Ë
+ */
+#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	dspreq;
+	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 (p_dtqcb->p_dtqinib->dtqatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (send_data(p_dtqcb, data, &dspreq)) {
+		if (dspreq) {
+			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 */
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€Î¶¯À©Á÷¿®
+ */
+#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);
+
+	t_lock_cpu();
+	if (p_dtqcb->p_dtqinib->dtqatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (!(p_dtqcb->p_dtqinib->dtqcnt > 0U)) {
+		ercd = E_ILUSE;
+	}
+	else 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 */
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€Î¶¯À©Á÷¿®¡ÊÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ */
+#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);
+
+	i_lock_cpu();
+	if (p_dtqcb->p_dtqinib->dtqatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (!(p_dtqcb->p_dtqinib->dtqcnt > 0U)) {
+		ercd = E_ILUSE;
+	}
+	else 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 */
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®
+ */
+#ifdef TOPPERS_rcv_dtq
+
+ER
+rcv_dtq(ID dtqid, intptr_t *p_data)
+{
+	DTQCB	*p_dtqcb;
+	WINFO_DTQ winfo_dtq;
+	bool_t	dspreq;
+	ER		ercd;
+
+	LOG_RCV_DTQ_ENTER(dtqid, p_data);
+	CHECK_DISPATCH();
+	CHECK_DTQID(dtqid);
+	p_dtqcb = get_dtqcb(dtqid);
+
+	t_lock_cpu();
+	if (p_dtqcb->p_dtqinib->dtqatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (receive_data(p_dtqcb, p_data, &dspreq)) {
+		if (dspreq) {
+			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 */
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®¡Ê¥Ý¡Œ¥ê¥ó¥°¡Ë
+ */
+#ifdef TOPPERS_prcv_dtq
+
+ER
+prcv_dtq(ID dtqid, intptr_t *p_data)
+{
+	DTQCB	*p_dtqcb;
+	bool_t	dspreq;
+	ER		ercd;
+
+	LOG_PRCV_DTQ_ENTER(dtqid, p_data);
+	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 (receive_data(p_dtqcb, p_data, &dspreq)) {
+		if (dspreq) {
+			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 */
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®¡Ê¥¿¥€¥à¥¢¥Š¥È€¢€ê¡Ë
+ */
+#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	dspreq;
+	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 (p_dtqcb->p_dtqinib->dtqatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (receive_data(p_dtqcb, p_data, &dspreq)) {
+		if (dspreq) {
+			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 */
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎºÆœéŽü²œ
+ */
+#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();
+	if (p_dtqcb->p_dtqinib->dtqatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else {
+		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 */
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎŸõÂÖ»²ŸÈ
+ */
+#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();
+	if (p_dtqcb->p_dtqinib->dtqatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else {
+		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: /extension/dcre/kernel/dataqueue.h
===================================================================
--- /extension/dcre/kernel/dataqueue.h	(revision 7)
+++ /extension/dcre/kernel/dataqueue.h	(revision 7)
@@ -0,0 +1,166 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2013 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥Ç¡Œ¥¿¥­¥å¡Œµ¡Çœ
+ */
+
+#ifndef TOPPERS_DATAQUEUE_H
+#define TOPPERS_DATAQUEUE_H
+
+#include "wait.h"
+
+/*
+ *  ¥Ç¡Œ¥¿ŽÉÍý¥Ö¥í¥Ã¥¯
+ */
+typedef struct data_management_block {
+	intptr_t	data;			/* ¥Ç¡Œ¥¿ËÜÂÎ */
+} DTQMB;
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡ŒœéŽü²œ¥Ö¥í¥Ã¥¯
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎœéŽü²œ¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬
+ *  ¡ÊWOBJINIB¡Ë€ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀžì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç¡€
+ *  ºÇœé€Î¥Õ¥£¡Œ¥ë¥É€¬¶ŠÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥
+ */
+typedef struct dataqueue_initialization_block {
+	ATR			dtqatr;			/* ¥Ç¡Œ¥¿¥­¥å¡ŒÂ°À­ */
+	uint_t		dtqcnt;			/* ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎÍÆÎÌ */
+	DTQMB		*p_dtqmb;		/* ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€ÎÀèÆ¬ÈÖÃÏ */
+} DTQINIB;
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍý¥Ö¥í¥Ã¥¯
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬¡ÊWOBJCB¡Ë
+ *  €ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀžì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç¡€ºÇœé€Î2€Ä€Î
+ *  ¥Õ¥£¡Œ¥ë¥É€¬¶ŠÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥
+ */
+typedef struct dataqueue_control_block {
+	QUEUE		swait_queue;	/* ¥Ç¡Œ¥¿¥­¥å¡ŒÁ÷¿®ÂÔ€Á¥­¥å¡Œ */
+	const DTQINIB *p_dtqinib;	/* œéŽü²œ¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿ */
+	QUEUE		rwait_queue;	/* ¥Ç¡Œ¥¿¥­¥å¡ŒŒõ¿®ÂÔ€Á¥­¥å¡Œ */
+	uint_t		count;			/* ¥Ç¡Œ¥¿¥­¥å¡ŒÃæ€Î¥Ç¡Œ¥¿€Î¿ô */
+	uint_t		head;			/* ºÇœé€Î¥Ç¡Œ¥¿€Î³ÊÇŒŸìœê */
+	uint_t		tail;			/* ºÇžå€Î¥Ç¡Œ¥¿€Î³ÊÇŒŸìœê€ÎŒ¡ */
+} DTQCB;
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡ŒÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯€ÎÄêµÁ
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬
+ *  ¡ÊWINFO_WOBJ¡Ë€ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀžì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç¡€
+ *  ºÇœé€Î2€Ä€Î¥Õ¥£¡Œ¥ë¥É€¬¶ŠÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®ÂÔ€Á€È¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®ÂÔ€Á€Ç¡€Æ±€žÂÔ€ÁŸð
+ *  Êó¥Ö¥í¥Ã¥¯€ò»È€Š¡¥
+ */
+typedef struct dataqueue_waiting_information {
+	WINFO		winfo;			/* Éžœà€ÎÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯ */
+	DTQCB		*p_dtqcb;		/* ÂÔ€Ã€Æ€€€ë¥Ç¡Œ¥¿¥­¥å¡Œ€ÎŽÉÍý¥Ö¥í¥Ã¥¯ */
+	intptr_t	data;			/* Á÷Œõ¿®¥Ç¡Œ¥¿ */
+} WINFO_DTQ;
+
+/*
+ *  »ÈÍÑ€·€Æ€€€Ê€€¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍý¥Ö¥í¥Ã¥¯€Î¥ê¥¹¥È
+ */
+extern QUEUE	free_dtqcb;
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡ŒID€ÎºÇÂçÃÍ¡Êkernel_cfg.c¡Ë
+ */
+extern const ID	tmax_dtqid;
+extern const ID	tmax_sdtqid;
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡ŒœéŽü²œ¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern const DTQINIB	dtqinib_table[];
+extern DTQINIB			adtqinib_table[];
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍý¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern DTQCB	dtqcb_table[];
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍý¥Ö¥í¥Ã¥¯€«€é¥Ç¡Œ¥¿¥­¥å¡ŒID€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#define	DTQID(p_dtqcb)	((ID)(((p_dtqcb) - dtqcb_table) + TMIN_DTQID))
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œµ¡Çœ€ÎœéŽü²œ
+ */
+extern void	initialize_dataqueue(void);
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€Ø€Î¥Ç¡Œ¥¿€Î³ÊÇŒ
+ */
+extern void	enqueue_data(DTQCB *p_dtqcb, intptr_t data);
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€Ø€Î¥Ç¡Œ¥¿€Î¶¯À©³ÊÇŒ
+ */
+extern void	force_enqueue_data(DTQCB *p_dtqcb, intptr_t data);
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€«€é€Î¥Ç¡Œ¥¿€ÎŒèœÐ€·
+ */
+extern void	dequeue_data(DTQCB *p_dtqcb, intptr_t *p_data);
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€Î¥Ç¡Œ¥¿Á÷¿®
+ */
+extern bool_t	send_data(DTQCB *p_dtqcb, intptr_t data, bool_t *p_dspreq);
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€Î¥Ç¡Œ¥¿¶¯À©Á÷¿®
+ */
+extern bool_t	force_send_data(DTQCB *p_dtqcb, intptr_t data);
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€Î¥Ç¡Œ¥¿Œõ¿®
+ */
+extern bool_t	receive_data(DTQCB *p_dtqcb, intptr_t *p_data,
+													bool_t *p_dspreq);
+
+#endif /* TOPPERS_DATAQUEUE_H */
Index: /extension/dcre/kernel/eventflag.c
===================================================================
--- /extension/dcre/kernel/eventflag.c	(revision 7)
+++ /extension/dcre/kernel/eventflag.c	(revision 7)
@@ -0,0 +1,645 @@
+/*
+ *  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-2014 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$
+ */
+
+/*
+ *		¥€¥Ù¥ó¥È¥Õ¥é¥°µ¡Çœ
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+#include "eventflag.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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 */
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°€Î¿ô
+ */
+#define tnum_flg	((uint_t)(tmax_flgid - TMIN_FLGID + 1))
+#define tnum_sflg	((uint_t)(tmax_sflgid - TMIN_FLGID + 1))
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°ID€«€é¥€¥Ù¥ó¥È¥Õ¥é¥°ŽÉÍý¥Ö¥í¥Ã¥¯€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#define INDEX_FLG(flgid)	((uint_t)((flgid) - TMIN_FLGID))
+#define get_flgcb(flgid)	(&(flgcb_table[INDEX_FLG(flgid)]))
+
+#ifdef TOPPERS_flgini
+
+/*
+ *  »ÈÍÑ€·€Æ€€€Ê€€¥€¥Ù¥ó¥È¥Õ¥é¥°ŽÉÍý¥Ö¥í¥Ã¥¯€Î¥ê¥¹¥È
+ */
+QUEUE	free_flgcb;
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°µ¡Çœ€ÎœéŽü²œ
+ */
+void
+initialize_eventflag(void)
+{
+	uint_t	i, j;
+	FLGCB	*p_flgcb;
+	FLGINIB	*p_flginib;
+
+	for (i = 0; i < tnum_sflg; i++) {
+		p_flgcb = &(flgcb_table[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; i++, j++) {
+		p_flgcb = &(flgcb_table[i]);
+		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 */
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°ÂÔ€Á²òœüŸò·ï€Î¥Á¥§¥Ã¥¯
+ */
+#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 */
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎÀžÀ®
+ */
+#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 (tnum_flg == 0 || 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 */
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°€Îºïœü
+ */
+#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 */
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°€Î¥»¥Ã¥È
+ */
+#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 */
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°€Î¥»¥Ã¥È¡ÊÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ */
+#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 */
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°€Î¥¯¥ê¥¢
+ */
+#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 */
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°ÂÔ€Á
+ */
+#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 */
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°ÂÔ€Á¡Ê¥Ý¡Œ¥ê¥ó¥°¡Ë
+ */
+#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 */
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°ÂÔ€Á¡Ê¥¿¥€¥à¥¢¥Š¥È€¢€ê¡Ë
+ */
+#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 */
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎºÆœéŽü²œ
+ */
+#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 */
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎŸõÂÖ»²ŸÈ
+ */
+#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: /extension/dcre/kernel/eventflag.h
===================================================================
--- /extension/dcre/kernel/eventflag.h	(revision 7)
+++ /extension/dcre/kernel/eventflag.h	(revision 7)
@@ -0,0 +1,133 @@
+/*
+ *  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-2012 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥€¥Ù¥ó¥È¥Õ¥é¥°µ¡Çœ
+ */
+
+#ifndef TOPPERS_EVENTFLAG_H
+#define TOPPERS_EVENTFLAG_H
+
+#include "wait.h"
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°œéŽü²œ¥Ö¥í¥Ã¥¯
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎœéŽü²œ¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬
+ *  ¡ÊWOBJINIB¡Ë€ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀžì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç¡€
+ *  ºÇœé€Î¥Õ¥£¡Œ¥ë¥É€¬¶ŠÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥
+ */
+typedef struct eventflag_initialization_block {
+	ATR			flgatr;			/* ¥€¥Ù¥ó¥È¥Õ¥é¥°Â°À­ */
+	FLGPTN		iflgptn;		/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€Î¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó€ÎœéŽüÃÍ */
+} FLGINIB;
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°ŽÉÍý¥Ö¥í¥Ã¥¯
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬¡ÊWOBJCB¡Ë
+ *  €ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀžì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç¡€ºÇœé€Î2€Ä€Î
+ *  ¥Õ¥£¡Œ¥ë¥É€¬¶ŠÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥
+ */
+typedef struct eventflag_control_block {
+	QUEUE		wait_queue;		/* ¥€¥Ù¥ó¥È¥Õ¥é¥°ÂÔ€Á¥­¥å¡Œ */
+	const FLGINIB *p_flginib;	/* œéŽü²œ¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿ */
+	FLGPTN		flgptn;			/* ¥€¥Ù¥ó¥È¥Õ¥é¥°žœºß¥Ñ¥¿¡Œ¥ó */
+} FLGCB;
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°ÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯€ÎÄêµÁ
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬
+ *  ¡ÊWINFO_WOBJ¡Ë€ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀžì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç¡€
+ *  ºÇœé€Î2€Ä€Î¥Õ¥£¡Œ¥ë¥É€¬¶ŠÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥
+ *
+ *  flgptn€Ï¡€waiptn€ª€è€Ówfmode€ÈÆ±»þ€Ë»È€Š€³€È€Ï€Ê€€€¿€á¡€¶ŠÍÑÂÎ€ò»È
+ *  €š€Ð¥á¥â¥ê€òÀáÌó€¹€ë€³€È€¬²ÄÇœ€Ç€¢€ë¡¥
+ */
+typedef struct eventflag_waiting_information {
+	WINFO		winfo;			/* Éžœà€ÎÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯ */
+	FLGCB		*p_flgcb;		/* ÂÔ€Ã€Æ€€€ë¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎŽÉÍý¥Ö¥í¥Ã¥¯ */
+	FLGPTN		waiptn;			/* ÂÔ€Á¥Ñ¥¿¡Œ¥ó */
+	MODE		wfmode;			/* ÂÔ€Á¥â¡Œ¥É */
+	FLGPTN		flgptn;			/* ÂÔ€Á²òœü»þ€Î¥Ñ¥¿¡Œ¥ó */
+} WINFO_FLG;
+
+/*
+ *  »ÈÍÑ€·€Æ€€€Ê€€¥€¥Ù¥ó¥È¥Õ¥é¥°ŽÉÍý¥Ö¥í¥Ã¥¯€Î¥ê¥¹¥È
+ */
+extern QUEUE	free_flgcb;
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°ID€ÎºÇÂçÃÍ¡Êkernel_cfg.c¡Ë
+ */
+extern const ID	tmax_flgid;
+extern const ID	tmax_sflgid;
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°œéŽü²œ¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern const FLGINIB	flginib_table[];
+extern FLGINIB			aflginib_table[];
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°ŽÉÍý¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern FLGCB	flgcb_table[];
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°ŽÉÍý¥Ö¥í¥Ã¥¯€«€é¥€¥Ù¥ó¥È¥Õ¥é¥°ID€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#define	FLGID(p_flgcb)	((ID)(((p_flgcb) - flgcb_table) + TMIN_FLGID))
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°µ¡Çœ€ÎœéŽü²œ
+ */
+extern void	initialize_eventflag(void);
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°ÂÔ€Á²òœüŸò·ï€Î¥Á¥§¥Ã¥¯
+ */
+extern bool_t	check_flg_cond(FLGCB *p_flgcb, FLGPTN waiptn,
+								MODE wfmode, FLGPTN *p_flgptn);
+
+#endif /* TOPPERS_EVENTFLAG_H */
Index: /extension/dcre/kernel/interrupt.c
===================================================================
--- /extension/dcre/kernel/interrupt.c	(revision 7)
+++ /extension/dcre/kernel/interrupt.c	(revision 7)
@@ -0,0 +1,494 @@
+/*
+ *  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-2012 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		³ä¹þ€ßŽÉÍýµ¡Çœ
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "interrupt.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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 */
+
+/*
+ *  ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó€Î¿ô
+ */
+#define tnum_isr	((uint_t)(tmax_isrid - TMIN_SEMID + 1) + tnum_sisr)
+
+/*
+ *  ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óID€«€é³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óŽÉÍý¥Ö¥í¥Ã¥¯€òŒè
+ *  €êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#define INDEX_ISR(isrid)	((uint_t)((isrid) - TMIN_ISRID) + tnum_sisr)
+#define get_isrcb(isrid)	(&(isrcb_table[INDEX_ISR(isrid)]))
+
+/*
+ *  ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó¥­¥å¡Œ€Ø€ÎÅÐÏ¿
+ */
+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
+
+/*
+ *  »ÈÍÑ€·€Æ€€€Ê€€³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óŽÉÍý¥Ö¥í¥Ã¥¯€Î¥ê¥¹¥È
+ */
+QUEUE	free_isrcb;
+
+/* 
+ *  ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óµ¡Çœ€ÎœéŽü²œ
+ */
+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 (i = 0; i < tnum_sisr; i++) {
+		p_isrcb = &(isrcb_table[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; i++, j++) {
+		p_isrcb = &(isrcb_table[i]);
+		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 */
+
+/*
+ *  ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó€ÎžÆœÐ€·
+ */
+#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€ÎžÆœÐ€·Á°€ÎŸõÂÖ€ËÌá€¹ */
+			if (i_sense_lock()) {
+				i_unlock_cpu();
+			}
+			i_set_ipm(saved_ipm);
+		}
+	}
+}
+
+#endif /* TOPPERS_isrcal */
+
+/*
+ *  ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óžÆœÐ€·¥­¥å¡Œ€Îž¡º÷
+ */
+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);
+	}
+}
+
+/*
+ *  ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó€ÎÀžÀ®
+ */
+#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_OBJ(p_isr_queue != NULL);
+
+	t_lock_cpu();
+	if (tnum_isr == 0 || 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 */
+
+/*
+ *  ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó€Îºïœü
+ */
+#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));
+		ercd = E_OK;
+	}
+	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 (i = 0; i < tnum_inhno; i++) {
+		p_inhinib = &(inhinib_table[i]);
+		x_define_inh(p_inhinib->inhno, p_inhinib->int_entry);
+	}
+	for (i = 0; i < tnum_intno; i++) {
+		p_intinib = &(intinib_table[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 */
+
+/*
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€ÎÊÑ¹¹
+ */
+#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 */
+
+/*
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€Î»²ŸÈ
+ */
+#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: /extension/dcre/kernel/interrupt.h
===================================================================
--- /extension/dcre/kernel/interrupt.h	(revision 7)
+++ /extension/dcre/kernel/interrupt.h	(revision 7)
@@ -0,0 +1,184 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		³ä¹þ€ßŽÉÍýµ¡Çœ
+ */
+
+#ifndef TOPPERS_INTERRUPT_H
+#define TOPPERS_INTERRUPT_H
+
+/*
+ *  ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óœéŽü²œ¥Ö¥í¥Ã¥¯
+ */
+typedef struct isr_initialization_block {
+	ATR			isratr;			/* ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óÂ°À­ */
+	intptr_t	exinf;			/* ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó€Î³ÈÄ¥ŸðÊó */
+	INTNO		intno;			/* ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó€òÅÐÏ¿€¹€ë³ä¹þ€ßÈÖ¹æ */
+	QUEUE		*p_isr_queue;	/* ÅÐÏ¿Àè³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó¥­¥å¡Œ€ÎÈÖÃÏ */
+	ISR			isr;			/* ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó€ÎÀèÆ¬ÈÖÃÏ */
+	PRI			isrpri;			/* ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óÍ¥ÀèÅÙ */
+} ISRINIB;
+
+/*
+ *  ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óŽÉÍý¥Ö¥í¥Ã¥¯
+ */
+typedef struct isr_control_block {
+	QUEUE		isr_queue;		/* ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óžÆœÐ€·¥­¥å¡Œ */
+	const ISRINIB *p_isrinib;	/* œéŽü²œ¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿ */
+} ISRCB;
+
+/*
+ *  ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óžÆœÐ€·¥­¥å¡Œ€òž¡º÷€¹€ë€¿€á€Î¥Ç¡Œ¥¿¹œÂ€
+ */
+typedef struct {
+	INTNO		intno;			/* ³ä¹þ€ßÈÖ¹æ */
+	QUEUE		*p_isr_queue;	/* ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óžÆœÐ€·¥­¥å¡Œ */
+} ISR_ENTRY;
+
+/*
+ *  ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó¥­¥å¡Œ€Î¥š¥ó¥È¥ê¿ô¡Êkernel_cfg.c¡Ë
+ */
+extern const uint_t tnum_isr_queue;
+
+/*
+ *  ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó¥­¥å¡Œ¥ê¥¹¥È¡Êkernel_cfg.c¡Ë
+ */
+extern const ISR_ENTRY isr_queue_list[];
+
+/*
+ *  ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó¥­¥å¡Œ€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern QUEUE isr_queue_table[];
+
+/*
+ *  »ÈÍÑ€·€Æ€€€Ê€€³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óŽÉÍý¥Ö¥í¥Ã¥¯€Î¥ê¥¹¥È
+ */
+extern QUEUE	free_isrcb;
+
+/*
+ *  ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óID€ÎºÇÂçÃÍ¡Êkernel_cfg.c¡Ë
+ *
+ *  ÀÅÅª€ËÀžÀ®€µ€ì€ë³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó€ÏIDÈÖ¹æ€ò»ý€¿€Ê€€€¿€á¡€
+ *  tmax_isrid€ÏÆ°Åª€ËÀžÀ®€µ€ì€ë³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó€ÎIDÈÖ¹æ€ÎºÇÂçÃÍ
+ *  €Ç€¢€ë¡¥ÀÅÅª€ËÀžÀ®€µ€ì€ë³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó€Î¿ô€Ï¡€tnum_sisr€ËÊÝ
+ *  »ý€¹€ë¡¥
+ */
+extern const ID		tmax_isrid;
+extern const uint_t	tnum_sisr;
+
+/*
+ *  ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óœéŽü²œ¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern const ISRINIB	sisrinib_table[];
+extern ISRINIB			aisrinib_table[];
+
+/*
+ *  ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óŽÉÍý¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern ISRCB	isrcb_table[];
+
+/*
+ *  ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óŽÉÍý¥Ö¥í¥Ã¥¯€«€é³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óID€òŒè
+ *  €êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#define	ISRID(p_isrcb)	((ID)(((p_isrcb) - isrcb_table) \
+										- tnum_sisr + TMIN_ISRID))
+
+/*
+ *  ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óµ¡Çœ€ÎœéŽü²œ
+ */
+extern void initialize_isr(void);
+
+/*
+ *  ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó€ÎžÆœÐ€·
+ */
+extern void call_isr(QUEUE *p_isr_queue);
+
+#ifndef OMIT_INITIALIZE_INTERRUPT
+
+/*
+ *  ³ä¹þ€ß¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯
+ */
+typedef struct interrupt_handler_initialization_block {
+	INHNO		inhno;			/* ³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ */
+	ATR			inhatr;			/* ³ä¹þ€ß¥Ï¥ó¥É¥éÂ°À­ */
+	FP			int_entry;		/* ³ä¹þ€ß¥Ï¥ó¥É¥é€ÎœÐÆþžýœèÍý€ÎÈÖÃÏ */
+} INHINIB;
+
+/*
+ *  ³ä¹þ€ßÍ×µá¥é¥€¥óœéŽü²œ¥Ö¥í¥Ã¥¯
+ */
+typedef struct interrupt_request_initialization_block {
+	INTNO		intno;			/* ³ä¹þ€ßÈÖ¹æ */
+	ATR			intatr;			/* ³ä¹þ€ßÂ°À­ */
+	PRI			intpri;			/* ³ä¹þ€ßÍ¥ÀèÅÙ */
+} INTINIB;
+
+/*
+ *  ³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ€Î¿ô¡Êkernel_cfg.c¡Ë
+ */
+extern const uint_t	tnum_inhno;
+
+/*
+ *  ³ä¹þ€ß¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern const INHINIB	inhinib_table[];
+
+/*
+ *  ³ä¹þ€ßÍ×µá¥é¥€¥ó€Î¿ô¡Êkernel_cfg.c¡Ë
+ */
+extern const uint_t	tnum_intno;
+
+/*
+ *  ³ä¹þ€ßÍ×µá¥é¥€¥óœéŽü²œ¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern const INTINIB	intinib_table[];
+
+#endif /* OMIT_INITIALIZE_INTERRUPT */
+
+/*
+ *  ³ä¹þ€ßŽÉÍýµ¡Çœ€ÎœéŽü²œ
+ */
+extern void	initialize_interrupt(void);
+
+#endif /* TOPPERS_INTERRUPT_H */
Index: /extension/dcre/kernel/kernel.tf
===================================================================
--- /extension/dcre/kernel/kernel.tf	(revision 7)
+++ /extension/dcre/kernel/kernel.tf	(revision 7)
@@ -0,0 +1,1426 @@
+$ ======================================================================
+$ 
+$   TOPPERS/ASP Kernel
+$       Toyohashi Open Platform for Embedded Real-Time Systems/
+$       Advanced Standard Profile Kernel
+$ 
+$   Copyright (C) 2007 by TAKAGI Nobuhisa
+$   Copyright (C) 2007-2015 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$
+$  
+$ =====================================================================
+
+$ =====================================================================
+$ AID_YYY€ÎœèÍý
+$ =====================================================================
+
+$num_atskid = 0$
+$FOREACH i ATSK.ORDER_LIST$
+$	// notsk€¬Éé€ÎŸì¹ç¡ÊE_PAR¡Ë
+	$IF ATSK.NOTSK[i] < 0$
+		$ERROR ATSK.TEXT_LINE[i]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "notsk", ATSK.NOTSK[i], "AID_TSK")$$END$
+	$END$
+	$num_atskid = num_atskid + ATSK.NOTSK[i]$
+$END$
+$num_tskid = LENGTH(TSK.ID_LIST) + num_atskid$
+
+$num_asemid = 0$
+$FOREACH i ASEM.ORDER_LIST$
+$	// nosem€¬Éé€ÎŸì¹ç¡ÊE_PAR¡Ë
+	$IF ASEM.NOSEM[i] < 0$
+		$ERROR ASEM.TEXT_LINE[i]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "nosem", ASEM.NOSEM[i], "AID_SEM")$$END$
+	$END$
+	$num_asemid = num_asemid + ASEM.NOSEM[i]$
+$END$
+$num_semid = LENGTH(SEM.ID_LIST) + num_asemid$
+
+$num_aflgid = 0$
+$FOREACH i AFLG.ORDER_LIST$
+$	// noflg€¬Éé€ÎŸì¹ç¡ÊE_PAR¡Ë
+	$IF AFLG.NOFLG[i] < 0$
+		$ERROR AFLG.TEXT_LINE[i]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "noflg", AFLG.NOFLG[i], "AID_FLG")$$END$
+	$END$
+	$num_aflgid = num_aflgid + AFLG.NOFLG[i]$
+$END$
+$num_flgid = LENGTH(FLG.ID_LIST) + num_aflgid$
+
+$num_adtqid = 0$
+$FOREACH i ADTQ.ORDER_LIST$
+$	// nodtq€¬Éé€ÎŸì¹ç¡ÊE_PAR¡Ë
+	$IF ADTQ.NODTQ[i] < 0$
+		$ERROR ADTQ.TEXT_LINE[i]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "nodtq", ADTQ.NODTQ[i], "AID_DTQ")$$END$
+	$END$
+	$num_adtqid = num_adtqid + ADTQ.NODTQ[i]$
+$END$
+$num_dtqid = LENGTH(DTQ.ID_LIST) + num_adtqid$
+
+$num_apdqid = 0$
+$FOREACH i APDQ.ORDER_LIST$
+$	// nopdq€¬Éé€ÎŸì¹ç¡ÊE_PAR¡Ë
+	$IF APDQ.NOPDQ[i] < 0$
+		$ERROR APDQ.TEXT_LINE[i]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "nopdq", APDQ.NOPDQ[i], "AID_PDQ")$$END$
+	$END$
+	$num_apdqid = num_apdqid + APDQ.NOPDQ[i]$
+$END$
+$num_pdqid = LENGTH(PDQ.ID_LIST) + num_apdqid$
+
+$num_ambxid = 0$
+$FOREACH i AMBX.ORDER_LIST$
+$	// nombx€¬Éé€ÎŸì¹ç¡ÊE_PAR¡Ë
+	$IF AMBX.NOMBX[i] < 0$
+		$ERROR AMBX.TEXT_LINE[i]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "nombx", AMBX.NOMBX[i], "AID_MBX")$$END$
+	$END$
+	$num_ambxid = num_ambxid + AMBX.NOMBX[i]$
+$END$
+$num_mbxid = LENGTH(MBX.ID_LIST) + num_ambxid$
+
+$num_ampfid = 0$
+$FOREACH i AMPF.ORDER_LIST$
+$	// nompf€¬Éé€ÎŸì¹ç¡ÊE_PAR¡Ë
+	$IF AMPF.NOMPF[i] < 0$
+		$ERROR AMPF.TEXT_LINE[i]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "nompf", AMPF.NOMPF[i], "AID_MPF")$$END$
+	$END$
+	$num_ampfid = num_ampfid + AMPF.NOMPF[i]$
+$END$
+$num_mpfid = LENGTH(MPF.ID_LIST) + num_ampfid$
+
+$num_acycid = 0$
+$FOREACH i ACYC.ORDER_LIST$
+$	// nocyc€¬Éé€ÎŸì¹ç¡ÊE_PAR¡Ë
+	$IF ACYC.NOCYC[i] < 0$
+		$ERROR ACYC.TEXT_LINE[i]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "nocyc", ACYC.NOCYC[i], "AID_CYC")$$END$
+	$END$
+	$num_acycid = num_acycid + ACYC.NOCYC[i]$
+$END$
+$num_cycid = LENGTH(CYC.ID_LIST) + num_acycid$
+
+$num_aalmid = 0$
+$FOREACH i AALM.ORDER_LIST$
+$	// noalm€¬Éé€ÎŸì¹ç¡ÊE_PAR¡Ë
+	$IF AALM.NOALM[i] < 0$
+		$ERROR AALM.TEXT_LINE[i]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "noalm", AALM.NOALM[i], "AID_ALM")$$END$
+	$END$
+	$num_aalmid = num_aalmid + AALM.NOALM[i]$
+$END$
+$num_almid = LENGTH(ALM.ID_LIST) + num_aalmid$
+
+$num_aisrid = 0$
+$FOREACH i AISR.ORDER_LIST$
+$	// noisr€¬Éé€ÎŸì¹ç¡ÊE_PAR¡Ë
+	$IF AISR.NOISR[i] < 0$
+		$ERROR AISR.TEXT_LINE[i]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "noisr", AISR.NOISR[i], "AID_ISR")$$END$
+	$END$
+	$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$
+#if TKERNEL_PRID != 0x07u$NL$
+#error The kernel does not match this configuration file.$NL$
+#endif$NL$
+$NL$
+
+$ 
+$  ¥€¥ó¥¯¥ë¡Œ¥É¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¡Ê#include¡Ë
+$ 
+/*$NL$
+$SPC$*  Include Directives (#include)$NL$
+$SPC$*/$NL$
+$NL$
+$INCLUDES$
+$NL$
+
+$ 
+$  ¥ª¥Ö¥ž¥§¥¯¥È€Î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$
+
+$
+$  ¥¹¥¿¥Ã¥¯ÎÎ°è€Î³ÎÊÝŽØ¿ô
+$
+$IF !ISFUNCTION("ALLOC_STACK")$
+$FUNCTION ALLOC_STACK$
+$	// Âç€­€€Êý€ËŽÝ€á€¿¥µ¥€¥º€Ç³ÎÊÝ€¹€ë
+	static STK_T $ARGV[1]$[COUNT_STK_T($ARGV[2]$)];$NL$
+	$RESULT = FORMAT("ROUND_STK_T(%1%)", ARGV[2])$
+$END$
+$END$
+
+$ 
+$  ¥¿¥¹¥¯
+$ 
+/*$NL$
+$SPC$*  Task Management Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ÀÅÅª€ËÀžÀ®€µ€ì€¿¥¿¥¹¥¯€¬1žÄ°ÊŸåÂžºß€¹€ë€³€È€Î¥Á¥§¥Ã¥¯
+$IF !LENGTH(TSK.ID_LIST)$
+	$ERROR$$FORMAT(_("no task is registered"))$$END$
+$END$
+
+$ ÀÅÅª€ËÀžÀ®€µ€ì€¿¥¿¥¹¥¯€Î¿ô
+#define TNUM_STSKID	$LENGTH(TSK.ID_LIST)$$NL$
+$NL$
+
+$ ¥¿¥¹¥¯IDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_tskid = (TMIN_TSKID + TNUM_TSKID - 1);$NL$
+const ID _kernel_tmax_stskid = (TMIN_TSKID + TNUM_STSKID - 1);$NL$
+$NL$
+
+$ ¥š¥é¡Œ¥Á¥§¥Ã¥¯
+$FOREACH tskid TSK.ID_LIST$
+$	// tskatr€¬¡Ê¡ÎTA_ACT¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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$
+
+$ ¥¹¥¿¥Ã¥¯ÎÎ°è€ÎÀžÀ®€È€œ€ì€ËŽØ€¹€ë¥š¥é¡Œ¥Á¥§¥Ã¥¯
+$FOREACH tskid TSK.ID_LIST$
+$	// stksz€¬0°Ê²Œ€«¡€¥¿¡Œ¥²¥Ã¥ÈÄêµÁ€ÎºÇŸ®ÃÍ¡ÊTARGET_MIN_STKSZ¡Ë€è€ê€â
+$	// Ÿ®€µ€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$IF TSK.STKSZ[tskid] <= 0 || (TARGET_MIN_STKSZ
+									&& TSK.STKSZ[tskid] < TARGET_MIN_STKSZ)$
+		$ERROR TSK.TEXT_LINE[tskid]$E_PAR: $FORMAT(_("too small %1% `%2%\' of `%3%\' in %4%"), "stksz", TSK.STKSZ[tskid], tskid, "CRE_TSK")$$END$
+	$END$
+
+$ 	// stksz€¬¥¹¥¿¥Ã¥¯ÎÎ°è€Î¥µ¥€¥º€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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")$
+		$TSK.TINIB_STKSZ[tskid] = ALLOC_STACK(CONCAT("_kernel_stack_",
+												tskid), TSK.STKSZ[tskid])$
+		$TSK.TINIB_STK[tskid] = CONCAT("_kernel_stack_", tskid)$
+	$ELSE$
+		$TSK.TINIB_STKSZ[tskid] = FORMAT("(%1%)", TSK.STKSZ[tskid])$
+		$TSK.TINIB_STK[tskid] = FORMAT("(void *)(%1%)", TSK.STK[tskid])$
+	$END$
+$END$
+$NL$
+
+$ ¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®¡Ê¥¿¥¹¥¯€Ï1žÄ°ÊŸåÂžºß€¹€ë¡Ë
+const TINIB _kernel_tinib_table[TNUM_STSKID] = {$NL$
+$JOINEACH tskid TSK.ID_LIST ",\n"$
+$	// ¥¿¥¹¥¯Â°À­¡€³ÈÄ¥ŸðÊó¡€µ¯Æ°ÈÖÃÏ¡€µ¯Æ°»þÍ¥ÀèÅÙ
+	$TAB${
+	$SPC$($TSK.TSKATR[tskid]$), (intptr_t)($TSK.EXINF[tskid]$),
+	$SPC$((TASK)($TSK.TASK[tskid]$)), INT_PRIORITY($TSK.ITSKPRI[tskid]$),
+
+$	// ¥¿¥¹¥¯œéŽü²œ¥³¥ó¥Æ¥­¥¹¥È¥Ö¥í¥Ã¥¯¡€¥¹¥¿¥Ã¥¯ÎÎ°è
+	$IF USE_TSKINICTXB$
+		$GENERATE_TSKINICTXB(tskid)$
+	$ELSE$
+		$SPC$$TSK.TINIB_STKSZ[tskid]$, $TSK.TINIB_STK[tskid]$,
+	$END$
+
+$	// ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎÂ°À­€Èµ¯Æ°ÈÖÃÏ
+	$SPC$($ALT(TSK.TEXATR[tskid],"TA_NULL")$), ($ALT(TSK.TEXRTN[tskid],"NULL")$) }
+$END$$NL$
+};$NL$
+$NL$
+
+$ Æ°ÅªÀžÀ®¥¿¥¹¥¯ÍÑ€Î¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF num_atskid > 0$
+	TINIB _kernel_atinib_table[$num_atskid$];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(TINIB, _kernel_atinib_table);$NL$
+$END$$NL$
+
+$ ¥¿¥¹¥¯ŽÉÍý¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+TCB _kernel_tcb_table[TNUM_TSKID];$NL$
+$NL$
+
+$ ¥¿¥¹¥¯ÀžÀ®œçœø¥Æ¡Œ¥Ö¥ë€ÎÀžÀ®
+const ID _kernel_torder_table[TNUM_STSKID] = {$NL$
+$TAB$$JOINEACH tskid TSK.ORDER_LIST ", "$$tskid$$END$$NL$
+};$NL$
+$NL$
+
+$ 
+$  ¥»¥Þ¥Õ¥©
+$ 
+/*$NL$
+$SPC$*  Semaphore Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ÀÅÅª€ËÀžÀ®€µ€ì€¿¥»¥Þ¥Õ¥©€Î¿ô
+#define TNUM_SSEMID	$LENGTH(SEM.ID_LIST)$$NL$
+$NL$
+
+$ ¥»¥Þ¥Õ¥©IDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_semid = (TMIN_SEMID + TNUM_SEMID - 1);$NL$
+const ID _kernel_tmax_ssemid = (TMIN_SEMID + TNUM_SSEMID - 1);$NL$
+$NL$
+
+$ ¥»¥Þ¥Õ¥©œéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF LENGTH(SEM.ID_LIST)$
+	const SEMINIB _kernel_seminib_table[TNUM_SSEMID] = {$NL$
+	$JOINEACH semid SEM.ID_LIST ",\n"$
+$		// sematr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$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)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$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$
+
+$		// ¥»¥Þ¥Õ¥©œéŽü²œ¥Ö¥í¥Ã¥¯
+		$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$
+
+$ Æ°ÅªÀžÀ®¥»¥Þ¥Õ¥©ÍÑ€Î¥»¥Þ¥Õ¥©œéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF num_asemid > 0$
+	SEMINIB _kernel_aseminib_table[$num_asemid$];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(SEMINIB, _kernel_aseminib_table);$NL$
+$END$$NL$
+
+$ ¥»¥Þ¥Õ¥©ŽÉÍý¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF num_semid > 0$
+	SEMCB _kernel_semcb_table[TNUM_SEMID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(SEMCB, _kernel_semcb_table);$NL$
+$END$$NL$
+
+$ 
+$  ¥€¥Ù¥ó¥È¥Õ¥é¥°
+$ 
+/*$NL$
+$SPC$*  Eventflag Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ÀÅÅª€ËÀžÀ®€µ€ì€¿¥€¥Ù¥ó¥È¥Õ¥é¥°€Î¿ô
+#define TNUM_SFLGID	$LENGTH(FLG.ID_LIST)$$NL$
+$NL$
+
+$ ¥€¥Ù¥ó¥È¥Õ¥é¥°IDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_flgid = (TMIN_FLGID + TNUM_FLGID - 1);$NL$
+const ID _kernel_tmax_sflgid = (TMIN_FLGID + TNUM_SFLGID - 1);$NL$
+$NL$
+
+$ ¥€¥Ù¥ó¥È¥Õ¥é¥°œéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF LENGTH(FLG.ID_LIST)$
+	const FLGINIB _kernel_flginib_table[TNUM_SFLGID] = {$NL$
+	$JOINEACH flgid FLG.ID_LIST ",\n"$
+$		// flgatr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ã¡ÎTA_WMUL¡Ï¡Ã¡ÎTA_CLR¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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$
+
+$		// iflgptn€¬FLGPTN€Ë³ÊÇŒ€Ç€­€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$IF (FLG.IFLGPTN[flgid] & ~((1 << TBIT_FLGPTN) - 1)) != 0$
+			$ERROR FLG.TEXT_LINE[flgid]$E_PAR: $FORMAT(_("too large %1% `%2%\' of `%3%\' in %4%"), "iflgptn", FLG.IFLGPTN[flgid], flgid, "CRE_FLG")$$END$
+		$END$
+
+$		// ¥€¥Ù¥ó¥È¥Õ¥é¥°œéŽü²œ¥Ö¥í¥Ã¥¯
+		$TAB${ ($FLG.FLGATR[flgid]$), ($FLG.IFLGPTN[flgid]$) }
+	$END$$NL$
+	};$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const FLGINIB, _kernel_flginib_table);$NL$
+$END$$NL$
+
+$ Æ°ÅªÀžÀ®¥€¥Ù¥ó¥È¥Õ¥é¥°ÍÑ€Î¥€¥Ù¥ó¥È¥Õ¥é¥°œéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF num_aflgid > 0$
+	FLGINIB _kernel_aflginib_table[$num_aflgid$];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(FLGINIB, _kernel_aflginib_table);$NL$
+$END$$NL$
+
+$ ¥€¥Ù¥ó¥È¥Õ¥é¥°ŽÉÍý¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF num_flgid > 0$
+	FLGCB _kernel_flgcb_table[TNUM_FLGID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(FLGCB, _kernel_flgcb_table);$NL$
+$END$$NL$
+
+$ 
+$  ¥Ç¡Œ¥¿¥­¥å¡Œ
+$ 
+/*$NL$
+$SPC$*  Dataqueue Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ÀÅÅª€ËÀžÀ®€µ€ì€¿¥Ç¡Œ¥¿¥­¥å¡Œ€Î¿ô
+#define TNUM_SDTQID	$LENGTH(DTQ.ID_LIST)$$NL$
+$NL$
+
+$ ¥Ç¡Œ¥¿¥­¥å¡ŒIDÈÖ¹æ€ÎºÇÂçÃÍ
+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€¬¡Ê¡ÎTA_TPRI¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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$
+
+$		// dtqcnt€¬Éé€ÎŸì¹ç¡ÊE_PAR¡Ë
+		$IF DTQ.DTQCNT[dtqid] < 0$
+			$ERROR DTQ.TEXT_LINE[dtqid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "dtqcnt", DTQ.DTQCNT[dtqid], dtqid, "CRE_DTQ")$$END$
+		$END$
+
+$		// dtqmb€¬NULL€Ç€Ê€€Ÿì¹ç¡ÊE_NOSPT¡Ë
+		$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$
+
+$		// ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è
+		$IF DTQ.DTQCNT[dtqid]$
+			static DTQMB _kernel_dtqmb_$dtqid$[$DTQ.DTQCNT[dtqid]$];$NL$
+		$END$
+	$END$
+
+$	// ¥Ç¡Œ¥¿¥­¥å¡ŒœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+	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$
+
+$ Æ°ÅªÀžÀ®¥Ç¡Œ¥¿¥­¥å¡ŒÍÑ€Î¥Ç¡Œ¥¿¥­¥å¡ŒœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF num_adtqid > 0$
+	DTQINIB _kernel_adtqinib_table[$num_adtqid$];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(DTQINIB, _kernel_adtqinib_table);$NL$
+$END$$NL$
+
+$ ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍý¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF num_dtqid > 0$
+	DTQCB _kernel_dtqcb_table[TNUM_DTQID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(DTQCB, _kernel_dtqcb_table);$NL$
+$END$$NL$
+
+$ 
+$  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ
+$ 
+/*$NL$
+$SPC$*  Priority Dataqueue Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ÀÅÅª€ËÀžÀ®€µ€ì€¿Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€Î¿ô
+#define TNUM_SPDQID	$LENGTH(PDQ.ID_LIST)$$NL$
+$NL$
+
+$ Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒIDÈÖ¹æ€ÎºÇÂçÃÍ
+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€¬¡Ê¡ÎTA_TPRI¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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$
+
+$		// pdqcnt€¬Éé€ÎŸì¹ç¡ÊE_PAR¡Ë
+		$IF PDQ.PDQCNT[pdqid] < 0$
+			$ERROR PDQ.TEXT_LINE[pdqid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "pdqcnt", PDQ.PDQCNT[pdqid], pdqid, "CRE_PDQ")$$END$
+		$END$
+
+$		// (TMIN_DPRI <= maxdpri && maxdpri <= TMAX_DPRI)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$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€Ç€Ê€€Ÿì¹ç¡ÊE_NOSPT¡Ë
+		$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$
+
+$		// Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è
+		$IF PDQ.PDQCNT[pdqid]$
+			static PDQMB _kernel_pdqmb_$pdqid$[$PDQ.PDQCNT[pdqid]$];$NL$
+		$END$
+	$END$
+
+$	// Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+	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$
+
+$ Æ°ÅªÀžÀ®Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒÍÑ€ÎÍ¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF num_apdqid > 0$
+	PDQINIB _kernel_apdqinib_table[$num_apdqid$];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(PDQINIB, _kernel_apdqinib_table);$NL$
+$END$$NL$
+
+$ Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍý¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF num_pdqid > 0$
+	PDQCB _kernel_pdqcb_table[TNUM_PDQID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(PDQCB, _kernel_pdqcb_table);$NL$
+$END$$NL$
+
+$ 
+$  ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹
+$ 
+/*$NL$
+$SPC$*  Mailbox Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ÀÅÅª€ËÀžÀ®€µ€ì€¿¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€Î¿ô
+#define TNUM_SMBXID	$LENGTH(MBX.ID_LIST)$$NL$
+$NL$
+
+$ ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹IDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_mbxid = (TMIN_MBXID + TNUM_MBXID - 1);$NL$
+const ID _kernel_tmax_smbxid = (TMIN_MBXID + TNUM_SMBXID - 1);$NL$
+$NL$
+
+$ ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹œéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF LENGTH(MBX.ID_LIST)$
+	const MBXINIB _kernel_mbxinib_table[TNUM_SMBXID] = {$NL$
+	$JOINEACH mbxid MBX.ID_LIST ",\n"$
+$		// mbxatr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ã¡ÎTA_MPRI¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$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€Ç€Ê€€Ÿì¹ç¡ÊE_NOSPT¡Ë
+		$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$
+
+$		// ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹œéŽü²œ¥Ö¥í¥Ã¥¯
+		$TAB${ ($MBX.MBXATR[mbxid]$), ($MBX.MAXMPRI[mbxid]$) }
+	$END$$NL$
+	};$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const MBXINIB, _kernel_mbxinib_table);$NL$
+$END$$NL$
+
+$ Æ°ÅªÀžÀ®¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹ÍÑ€Î¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹œéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF num_ambxid > 0$
+	MBXINIB _kernel_ambxinib_table[$num_ambxid$];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(MBXINIB, _kernel_ambxinib_table);$NL$
+$END$$NL$
+
+$ ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹ŽÉÍý¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF num_mbxid > 0$
+	MBXCB _kernel_mbxcb_table[TNUM_MBXID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(MBXCB, _kernel_mbxcb_table);$NL$
+$END$$NL$
+
+$ 
+$  žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ë
+$ 
+/*$NL$
+$SPC$*  Fixed-sized Memorypool Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ÀÅÅª€ËÀžÀ®€µ€ì€¿žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ë€Î¿ô
+#define TNUM_SMPFID	$LENGTH(MPF.ID_LIST)$$NL$
+$NL$
+
+$ žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëIDÈÖ¹æ€ÎºÇÂçÃÍ
+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€¬¡Ê¡ÎTA_TPRI¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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°Ê²Œ€ÎŸì¹ç¡ÊE_PAR¡Ë
+		$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°Ê²Œ€ÎŸì¹ç¡ÊE_PAR¡Ë
+		$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$
+
+$		// žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÎÎ°è
+		$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€Ç€Ê€€Ÿì¹ç¡ÊE_NOSPT¡Ë
+		$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$
+
+$		// žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëŽÉÍýÎÎ°è
+		static MPFMB _kernel_mpfmb_$mpfid$[$MPF.BLKCNT[mpfid]$];$NL$
+	$END$
+
+$	// žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+	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$(void *)($MPF.MPF[mpfid]$)$END$, (_kernel_mpfmb_$mpfid$) }
+	$END$$NL$
+	};$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const MPFINIB, _kernel_mpfinib_table);$NL$
+$END$$NL$
+
+$ Æ°ÅªÀžÀ®žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÍÑ€ÎžÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF num_ampfid > 0$
+	MPFINIB _kernel_ampfinib_table[$num_ampfid$];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(MPFINIB, _kernel_ampfinib_table);$NL$
+$END$$NL$
+
+$ žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëŽÉÍý¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF num_mpfid > 0$
+	MPFCB _kernel_mpfcb_table[TNUM_MPFID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(MPFCB, _kernel_mpfcb_table);$NL$
+$END$$NL$
+
+$ 
+$  ŒþŽü¥Ï¥ó¥É¥é
+$ 
+/*$NL$
+$SPC$*  Cyclic Handler Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ÀÅÅª€ËÀžÀ®€µ€ì€¿ŒþŽü¥Ï¥ó¥É¥é€Î¿ô
+#define TNUM_SCYCID	$LENGTH(CYC.ID_LIST)$$NL$
+$NL$
+
+$ ŒþŽü¥Ï¥ó¥É¥éIDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_cycid = (TMIN_CYCID + TNUM_CYCID - 1);$NL$
+const ID _kernel_tmax_scycid = (TMIN_CYCID + TNUM_SCYCID - 1);$NL$
+$NL$
+
+$ ŒþŽü¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF LENGTH(CYC.ID_LIST)$
+	const CYCINIB _kernel_cycinib_table[TNUM_SCYCID] = {$NL$
+	$JOINEACH cycid CYC.ID_LIST ",\n"$
+$		// cycatr€¬¡Ê¡ÎTA_STA¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$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)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$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$
+
+$		// ·Ù¹ð¡§cycatr€ËTA_STA€¬ÀßÄê€µ€ì€Æ€€€Æ¡€(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$
+
+$		// ŒþŽü¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯
+		$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$
+
+$ Æ°ÅªÀžÀ®ŒþŽü¥Ï¥ó¥É¥éÍÑ€ÎŒþŽü¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF num_acycid > 0$
+	CYCINIB _kernel_acycinib_table[$num_acycid$];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(CYCINIB, _kernel_acycinib_table);$NL$
+$END$$NL$
+
+$ ŒþŽü¥Ï¥ó¥É¥éŽÉÍý¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF num_cycid > 0$
+	CYCCB _kernel_cyccb_table[TNUM_CYCID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(CYCCB, _kernel_cyccb_table);$NL$
+$END$$NL$
+
+$ 
+$  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é
+$ 
+/*$NL$
+$SPC$*  Alarm Handler Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ÀÅÅª€ËÀžÀ®€µ€ì€¿¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€Î¿ô
+#define TNUM_SALMID	$LENGTH(ALM.ID_LIST)$$NL$
+$NL$
+
+$ ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éIDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_almid = (TMIN_ALMID + TNUM_ALMID - 1);$NL$
+const ID _kernel_tmax_salmid = (TMIN_ALMID + TNUM_SALMID - 1);$NL$
+$NL$
+
+$ ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF LENGTH(ALM.ID_LIST)$
+	const ALMINIB _kernel_alminib_table[TNUM_SALMID] = {$NL$
+	$JOINEACH almid ALM.ID_LIST ",\n"$
+$		// almatr€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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$
+
+$		// ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯
+		$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$
+
+$ Æ°ÅªÀžÀ®¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éÍÑ€Î¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF num_aalmid > 0$
+	ALMINIB _kernel_aalminib_table[$num_aalmid$];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(ALMINIB, _kernel_aalminib_table);$NL$
+$END$$NL$
+
+$ ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éŽÉÍý¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF num_almid > 0$
+	ALMCB _kernel_almcb_table[TNUM_ALMID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(ALMCB, _kernel_almcb_table);$NL$
+$END$$NL$
+
+$ 
+$  ³ä¹þ€ßŽÉÍýµ¡Çœ
+$ 
+/*$NL$
+$SPC$*  Interrupt Management Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ³ä¹þ€ßÈÖ¹æ€È³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ€ÎÊÑŽ¹¥Æ¡Œ¥Ö¥ë€ÎºîÀ®
+$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$
+
+$ ³ä¹þ€ßÍ×µá¥é¥€¥ó€ËŽØ€¹€ë¥š¥é¡Œ¥Á¥§¥Ã¥¯
+$i = 0$
+$FOREACH intno INT.ORDER_LIST$
+$	// intno€¬CFG_INT€ËÂÐ€¹€ë³ä¹þ€ßÈÖ¹æ€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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€Ë€è€Ã€ÆÀßÄêºÑ€ß€ÎŸì¹ç¡ÊE_OBJ¡Ë
+	$j = 0$
+	$FOREACH intno2 INT.ORDER_LIST$
+		$IF j < i && INT.INTNO[intno] == INT.INTNO[intno2]$
+			$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€¬¡Ê¡ÎTA_ENAINT¡Ï¡Ã¡ÎTA_EDGE¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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€ËÂÐ€¹€ë³ä¹þ€ßÍ¥ÀèÅÙ€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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$
+
+$	// ¥«¡Œ¥Í¥ëŽÉÍý€ËžÇÄê€µ€ì€Æ€€€ëintno€ËÂÐ€·€Æ¡€intpri€ËTMIN_INTPRI
+$	// €è€ê€âŸ®€µ€€ÃÍ€¬»ØÄê€µ€ì€¿Ÿì¹ç¡ÊE_OBJ¡Ë
+	$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$
+
+$	// ¥«¡Œ¥Í¥ëŽÉÍý³°€ËžÇÄê€µ€ì€Æ€€€ëintno€ËÂÐ€·€Æ¡€intpri€ËTMIN_INTPRI
+$	// €è€ê€âŸ®€µ€€ÃÍ€¬»ØÄê€µ€ì€Ê€«€Ã€¿Ÿì¹ç¡ÊE_OBJ¡Ë
+	$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$
+
+$ ³ä¹þ€ß¥Ï¥ó¥É¥é€ËŽØ€¹€ë¥š¥é¡Œ¥Á¥§¥Ã¥¯
+$i = 0$
+$FOREACH inhno INH.ORDER_LIST$
+$	// inhno€¬DEF_INH€ËÂÐ€¹€ë³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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€Ë€è€Ã€ÆÀßÄêºÑ€ß€ÎŸì¹ç¡ÊE_OBJ¡Ë
+	$j = 0$
+	$FOREACH inhno2 INH.ORDER_LIST$
+		$IF j < i && INH.INHNO[inhno] == INH.INHNO[inhno2]$
+			$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€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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$
+
+$	// ¥«¡Œ¥Í¥ëŽÉÍý€ËžÇÄê€µ€ì€Æ€€€ëinhno€ËÂÐ€·€Æ¡€inhatr€ËTA_NONKERNEL
+$	//¡¡€¬»ØÄê€µ€ì€Æ€€€ëŸì¹ç¡ÊE_RSATR¡Ë
+	$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$
+
+$	// ¥«¡Œ¥Í¥ëŽÉÍý³°€ËžÇÄê€µ€ì€Æ€€€ëinhno€ËÂÐ€·€Æ¡€inhatr€ËTA_NONKERNEL
+$	// €¬»ØÄê€µ€ì€Æ€€€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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€¬€Ê€€Ÿì¹ç¡ÊE_OBJ¡Ë
+		$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", intno, "inhno", INH.INHNO[inhno], "CFG_INT")$$END$
+		$ELSE$
+			$IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$
+$				// inhatr€ËTA_NONKERNEL€¬»ØÄê€µ€ì€Æ€ª€é€º¡€inhno€ËÂÐ±þ
+$				// €¹€ëintno€ËÂÐ€·€ÆCFG_INT€ÇÀßÄê€µ€ì€¿³ä¹þ€ßÍ¥ÀèÅÙ€¬
+$				// TMIN_INTPRI€è€ê€âŸ®€µ€€Ÿì¹ç¡ÊE_OBJ¡Ë
+				$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€¬»ØÄê€µ€ì€Æ€ª€ê¡€inhno€ËÂÐ±þ
+$				// €¹€ëintno€ËÂÐ€·€ÆCFG_INT€ÇÀßÄê€µ€ì€¿³ä¹þ€ßÍ¥ÀèÅÙ€¬
+$				// TMIN_INTPRI°ÊŸå€Ç€¢€ëŸì¹ç¡ÊE_OBJ¡Ë
+				$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$
+
+$ ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó¡ÊISR¡Ë€ËŽØ€¹€ë¥š¥é¡Œ¥Á¥§¥Ã¥¯
+$FOREACH order ISR.ORDER_LIST$
+$	// isratr€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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€ËÂÐ€¹€ë³ä¹þ€ßÈÖ¹æ€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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€ËÂÐ€·€ÆÅÐÏ¿€µ€ì€¿ISR€Î¥ê¥¹¥È€ÎºîÀ®
+	$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€ËÂÐ€·€ÆÅÐÏ¿€µ€ì€¿ISR€¬Âžºß€¹€ëŸì¹ç
+	$IF LENGTH(isr_order_list) > 0$
+$		// intno€ËÂÐ±þ€¹€ëinhno€ËÂÐ€·€ÆDEF_INH€¬€¢€ëŸì¹ç¡ÊE_OBJ¡Ë
+		$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€¬€Ê€€Ÿì¹ç¡ÊE_OBJ¡Ë
+		$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€ÇÀßÄê€µ€ì€¿³ä¹þ€ßÍ¥ÀèÅÙ€¬TMIN_INTPRI
+$			// €è€ê€âŸ®€µ€€Ÿì¹ç¡ÊE_OBJ¡Ë
+			$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$
+
+$ ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó¡ÊISR¡ËŽÉÍý€Î¥Ç¡Œ¥¿¹œÂ€
+$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$
+
+$ ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó¡ÊISR¡ËžÆœÐ€·€Î€¿€á€Î³ä¹þ€ß¥Ï¥ó¥É¥é€ÎÀžÀ®
+$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)$
+
+$	// ISRÍÑ€Î³ä¹þ€ß¥Ï¥ó¥É¥é
+	void$NL$
+	_kernel_inthdr_$intno$(void)$NL$
+	{$NL$
+	$TAB$i_begin_int($intno$);$NL$
+	$TAB$_kernel_call_isr($ISR_QUEUE_HEADER[intno]$);$NL$
+	$TAB$i_end_int($intno$);$NL$
+	}$NL$
+	$NL$
+$END$
+
+$ ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó€Î¿ô
+#define TNUM_SISR	$LENGTH(ISR.ORDER_LIST)$$NL$
+#define TNUM_ISR	$LENGTH(ISR.ORDER_LIST) + num_aisrid$$NL$
+$NL$
+
+$ ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óIDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_isrid = (TMIN_ISRID + TNUM_ISRID - 1);$NL$
+const uint_t _kernel_tnum_sisr = TNUM_SISR;$NL$
+$NL$
+
+$ ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$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$
+
+$ Æ°ÅªÀžÀ®³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óÍÑ€Î³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óœéŽü²œ¥Ö¥í¥Ã
+$ ¥¯€ÎÀžÀ®
+$IF num_aisrid > 0$
+	ISRINIB _kernel_aisrinib_table[$num_aisrid$];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(ISRINIB, _kernel_aisrinib_table);$NL$
+$END$
+$NL$
+
+$ ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óŽÉÍý¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF num_isr > 0$
+	ISRCB _kernel_isrcb_table[TNUM_ISR];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(ISRCB, _kernel_isrcb_table);$NL$
+$END$
+$NL$
+
+$ 
+$  ³ä¹þ€ßŽÉÍýµ¡Çœ€Î€¿€á€ÎÉžœàÅª€ÊœéŽü²œŸðÊó€ÎÀžÀ®
+$ 
+$ ³ä¹þ€ß¥Ï¥ó¥É¥é€ÎœéŽü²œ€ËÉ¬Í×€ÊŸðÊó
+$IF !OMIT_INITIALIZE_INTERRUPT || ALT(USE_INHINIB_TABLE,0)$
+
+$ ³ä¹þ€ß¥Ï¥ó¥É¥é¿ô
+#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$
+
+$ ³ä¹þ€ß¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯
+$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$
+
+$ ³ä¹þ€ßÍ×µá¥é¥€¥ó€ÎœéŽü²œ€ËÉ¬Í×€ÊŸðÊó
+$IF !OMIT_INITIALIZE_INTERRUPT || ALT(USE_INTINIB_TABLE,0)$
+
+$ ³ä¹þ€ßÍ×µá¥é¥€¥ó¿ô
+#define TNUM_INTNO	$LENGTH(INT.ORDER_LIST)$$NL$
+const uint_t _kernel_tnum_intno = TNUM_INTNO;$NL$
+$NL$
+
+$ ³ä¹þ€ßÍ×µá¥é¥€¥óœéŽü²œ¥Ö¥í¥Ã¥¯
+$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Îã³°ŽÉÍýµ¡Çœ
+$ 
+/*$NL$
+$SPC$*  CPU Exception Management Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ CPUÎã³°¥Ï¥ó¥É¥é€ËŽØ€¹€ë¥š¥é¡Œ¥Á¥§¥Ã¥¯
+$i = 0$
+$FOREACH excno EXC.ORDER_LIST$
+$	// excno€¬DEF_EXC€ËÂÐ€¹€ëCPUÎã³°¥Ï¥ó¥É¥éÈÖ¹æ€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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€Ë€è€Ã€ÆÀßÄêºÑ€ß€ÎŸì¹ç¡ÊE_OBJ¡Ë
+	$j = 0$
+	$FOREACH excno2 EXC.ORDER_LIST$
+		$IF j < i && EXC.EXCNO[excno] == EXC.EXCNO[excno2]$
+			$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€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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Îã³°¥Ï¥ó¥É¥é€Î€¿€á€ÎÉžœàÅª€ÊœéŽü²œŸðÊó€ÎÀžÀ®
+$IF !OMIT_INITIALIZE_EXCEPTION$
+
+$ CPUÎã³°¥Ï¥ó¥É¥é¿ô
+#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Îã³°¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯
+$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$
+
+$ 
+$  Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ€Î¥¹¥¿¥Ã¥¯ÎÎ°è
+$ 
+/*$NL$
+$SPC$*  Stack Area for Non-task Context$NL$
+$SPC$*/$NL$
+$NL$
+
+$IF !LENGTH(ICS.ORDER_LIST)$
+$	// DEF_ICS€¬€Ê€€Ÿì¹ç€Î¥Ç¥Õ¥©¥ë¥ÈÃÍ€ÎÀßÄê
+	#ifdef DEFAULT_ISTK$NL$
+	$NL$
+	#define TOPPERS_ISTKSZ		DEFAULT_ISTKSZ$NL$
+	#define TOPPERS_ISTK		DEFAULT_ISTK$NL$
+	$NL$
+	#else /* DEAULT_ISTK */$NL$
+	$NL$
+	$istksz = ALLOC_STACK("_kernel_istack", "DEFAULT_ISTKSZ")$$NL$
+	#define TOPPERS_ISTKSZ		$istksz$$NL$
+	#define TOPPERS_ISTK		_kernel_istack$NL$
+	$NL$
+	#endif /* DEAULT_ISTK */$NL$
+$ELSE$
+
+$	// ÀÅÅªAPI¡ÖDEF_ICS¡×€¬Ê£¿ô€¢€ë¡ÊE_OBJ¡Ë
+	$IF LENGTH(ICS.ORDER_LIST) > 1$
+		$ERROR$E_OBJ: $FORMAT(_("too many %1%"), "DEF_ICS")$$END$
+	$END$
+
+$	// istksz€¬0°Ê²Œ€«¡€¥¿¡Œ¥²¥Ã¥ÈÄêµÁ€ÎºÇŸ®ÃÍ¡ÊTARGET_MIN_ISTKSZ¡Ë€è€ê€â
+$	// Ÿ®€µ€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$IF ICS.ISTKSZ[1] <= 0 || (TARGET_MIN_ISTKSZ
+									&& ICS.ISTKSZ[1] < TARGET_MIN_ISTKSZ)$
+		$ERROR ICS.TEXT_LINE[1]$E_PAR: $FORMAT(_("too small %1% `%2%\' in %3%"), "istksz", ICS.ISTKSZ[1], "DEF_ICS")$$END$
+	$END$
+
+$ 	// istksz€¬¥¹¥¿¥Ã¥¯ÎÎ°è€Î¥µ¥€¥º€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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")$
+$		// ¥¹¥¿¥Ã¥¯ÎÎ°è€ÎŒ«Æ°³äÉÕ€±
+		$istksz = ALLOC_STACK("_kernel_istack", ICS.ISTKSZ[1])$$NL$
+		#define TOPPERS_ISTKSZ		$istksz$$NL$
+		#define TOPPERS_ISTK		_kernel_istack$NL$
+	$ELSE$
+		#define TOPPERS_ISTKSZ		($ICS.ISTKSZ[1]$)$NL$
+		#define TOPPERS_ISTK		(void *)($ICS.ISTK[1]$)$NL$
+	$END$
+$END$
+$NL$
+
+$ Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ€Î¥¹¥¿¥Ã¥¯ÎÎ°è
+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$
+
+$ 
+$  ¥«¡Œ¥Í¥ë€¬³ä€êÉÕ€±€ë¥á¥â¥êÎÎ°è
+$ 
+/*$NL$
+$SPC$*  Memory Area Allocated by Kernel$NL$
+$SPC$*/$NL$
+$NL$
+
+$IF !LENGTH(KMM.ORDER_LIST)$
+$	// DEF_KMM€¬€Ê€€Ÿì¹ç€Î¥Ç¥Õ¥©¥ë¥ÈÃÍ€ÎÀßÄê
+	#define TOPPERS_KMMSZ		0$NL$
+	#define TOPPERS_KMM			NULL$NL$
+$ELSE$
+$	// ÀÅÅªAPI¡ÖDEF_KMM¡×€¬Ê£¿ô€¢€ë¡ÊE_OBJ¡Ë
+	$IF LENGTH(KMM.ORDER_LIST) > 1$
+		$ERROR$E_OBJ: $FORMAT(_("too many %1%"), "DEF_KMM")$$END$
+	$END$
+
+$	// kmmsz€¬0°Ê²Œ€ÎŸì¹ç¡ÊE_PAR¡Ë
+	$IF KMM.KMMSZ[1] <= 0$
+		$ERROR KMM.TEXT_LINE[1]$E_PAR: $FORMAT(_("%1% `%2%\' is zero in %3%"), "kmmsz", KMM.KMMSZ[1], "DEF_KMM")$$END$
+	$END$
+
+$ 	// kmmsz€¬¥«¡Œ¥Í¥ë€¬³ä€êÉÕ€±€ë¥á¥â¥êÎÎ°è€Î¥µ¥€¥º€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$IF !EQ(KMM.KMM[1], "NULL") && CHECK_MB_ALIGN
+							&& (KMM.KMMSZ[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")$
+$		// ¥«¡Œ¥Í¥ë€¬³ä€êÉÕ€±€ë¥á¥â¥êÎÎ°è€ÎŒ«Æ°³äÉÕ€±
+		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			(void *)($KMM.KMM[1]$)$NL$
+	$END$
+$END$
+$NL$
+
+$ ¥«¡Œ¥Í¥ë€¬³ä€êÉÕ€±€ë¥á¥â¥êÎÎ°è
+const SIZE		_kernel_kmmsz = TOPPERS_KMMSZ;$NL$
+MB_T *const		_kernel_kmm = TOPPERS_KMM;$NL$
+$NL$
+
+$ 
+$  ¥¿¥€¥à¥€¥Ù¥ó¥ÈŽÉÍý
+$ 
+/*$NL$
+$SPC$*  Time Event Management$NL$
+$SPC$*/$NL$
+$NL$
+TMEVTN   _kernel_tmevt_heap[TNUM_TSKID + TNUM_CYCID + TNUM_ALMID];$NL$
+$NL$
+
+$ 
+$  ³Æ¥â¥ž¥å¡Œ¥ë€ÎœéŽü²œŽØ¿ô
+$ 
+/*$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$$TAB$_kernel_initialize_semaphore();$NL$$END$
+$IF num_flgid$$TAB$_kernel_initialize_eventflag();$NL$$END$
+$IF num_dtqid$$TAB$_kernel_initialize_dataqueue();$NL$$END$
+$IF num_pdqid$$TAB$_kernel_initialize_pridataq();$NL$$END$
+$IF num_mbxid$$TAB$_kernel_initialize_mailbox();$NL$$END$
+$IF num_mpfid$$TAB$_kernel_initialize_mempfix();$NL$$END$
+$IF num_cycid$$TAB$_kernel_initialize_cyclic();$NL$$END$
+$IF num_almid$$TAB$_kernel_initialize_alarm();$NL$$END$
+$TAB$_kernel_initialize_interrupt();$NL$
+$IF num_isr$$TAB$_kernel_initialize_isr();$NL$$END$
+$TAB$_kernel_initialize_exception();$NL$
+}$NL$
+$NL$
+
+$ 
+$  œéŽü²œ¥ë¡Œ¥Á¥ó€ÎŒÂ¹ÔŽØ¿ô
+$ 
+/*$NL$
+$SPC$*  Initialization Routine$NL$
+$SPC$*/$NL$
+$NL$
+void$NL$
+_kernel_call_inirtn(void)$NL$
+{$NL$
+$FOREACH order INI.ORDER_LIST$
+$ 	// iniatr€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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$
+
+$ 
+$  œªÎ»œèÍý¥ë¡Œ¥Á¥ó€ÎŒÂ¹ÔŽØ¿ô
+$ 
+/*$NL$
+$SPC$*  Termination Routine$NL$
+$SPC$*/$NL$
+$NL$
+void$NL$
+_kernel_call_terrtn(void)$NL$
+{$NL$
+$FOREACH rorder TER.RORDER_LIST$
+$ 	// teratr€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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: /extension/dcre/kernel/kernel_api.csv
===================================================================
--- /extension/dcre/kernel/kernel_api.csv	(revision 7)
+++ /extension/dcre/kernel/kernel_api.csv	(revision 7)
@@ -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 },,
+exc,DEF_EXC,.excno { .excatr &exchdr },,
+ics,DEF_ICS,{ .istksz &istk },-1,
+kmm,DEF_KMM,{ .kmmsz &kmm },-1,
+ini,ATT_INI,{ .iniatr &exinf &inirtn },-1,
+ter,ATT_TER,{ .teratr &exinf &terrtn },-1,
Index: /extension/dcre/kernel/kernel_check.tf
===================================================================
--- /extension/dcre/kernel/kernel_check.tf	(revision 7)
+++ /extension/dcre/kernel/kernel_check.tf	(revision 7)
@@ -0,0 +1,212 @@
+$ ======================================================================
+$ 
+$   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
+$  
+$   Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+$   ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+$   ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+$   (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+$       ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+$       ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+$   (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+$       ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+$       ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+$       €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+$   (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+$       ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+$       €È¡¥
+$     (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+$         ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+$     (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+$         Êó¹ð€¹€ë€³€È¡¥
+$   (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+$       ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+$       €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+$       Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+$       ÌÈÀÕ€¹€ë€³€È¡¥
+$  
+$   ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+$   €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+$   €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+$   ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+$   €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+$ 
+$   @(#) $Id$
+$  
+$ =====================================================================
+
+$
+$  ¥Ç¡Œ¥¿¥»¥¯¥·¥ç¥ó€ÎLMA€«€éVMA€Ø€Î¥³¥Ô¡Œ
+$
+$FOREACH lma LMA.ORDER_LIST$
+	$start_data = SYMBOL(LMA.START_DATA[lma])$
+	$end_data = SYMBOL(LMA.END_DATA[lma])$
+	$start_idata = SYMBOL(LMA.START_IDATA[lma])$
+	$IF !LENGTH(start_data)$
+		$ERROR$$FORMAT(_("symbol '%1%' not found"), LMA.START_DATA[lma])$$END$
+	$ELIF !LENGTH(end_data)$
+		$ERROR$$FORMAT(_("symbol '%1%' not found"), LMA.END_DATA[lma])$$END$
+	$ELIF !LENGTH(start_idata)$
+		$ERROR$$FORMAT(_("symbol '%1%' not found"), LMA.START_IDATA[lma])$$END$
+	$ELSE$
+		$BCOPY(start_idata, start_data, end_data - start_data)$
+	$END$
+$END$
+
+$ 
+$  ŽØ¿ô€ÎÀèÆ¬ÈÖÃÏ€Î¥Á¥§¥Ã¥¯
+$ 
+$IF CHECK_FUNC_ALIGN || CHECK_FUNC_NONNULL$
+$	// ¥¿¥¹¥¯€È¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎÀèÆ¬ÈÖÃÏ€Î¥Á¥§¥Ã¥¯
+	$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$
+
+$	// ŒþŽü¥Ï¥ó¥É¥é€ÎÀèÆ¬ÈÖÃÏ€Î¥Á¥§¥Ã¥¯
+	$cycinib = SYMBOL("_kernel_cycinib_table")$
+	$FOREACH cycid CYC.ID_LIST$
+		$cychdr = PEEK(cycinib + offsetof_CYCINIB_cychdr, sizeof_FP)$
+		$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$
+
+$	// ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ÎÀèÆ¬ÈÖÃÏ€Î¥Á¥§¥Ã¥¯
+	$alminib = SYMBOL("_kernel_alminib_table")$
+	$FOREACH almid ALM.ID_LIST$
+		$almhdr = PEEK(alminib + offsetof_ALMINIB_almhdr, sizeof_FP)$
+		$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$
+
+$	// ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó€ÎÀèÆ¬ÈÖÃÏ€Î¥Á¥§¥Ã¥¯
+	$isrinib = SYMBOL("_kernel_sisrinib_table")$
+	$FOREACH order ISR.ORDER_LIST$
+		$isr = PEEK(isrinib + offsetof_ISRINIB_isr, sizeof_FP)$
+		$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$
+
+$ 
+$  ¥¹¥¿¥Ã¥¯ÎÎ°è€ÎÀèÆ¬ÈÖÃÏ€Î¥Á¥§¥Ã¥¯
+$ 
+$IF CHECK_STACK_ALIGN || CHECK_STACK_NONNULL$
+$	// ¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯ÎÎ°è€ÎÀèÆ¬ÈÖÃÏ€Î¥Á¥§¥Ã¥¯
+	$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$
+
+$	// Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ€Î¥¹¥¿¥Ã¥¯ÎÎ°è€ÎÀèÆ¬ÈÖÃÏ€Î¥Á¥§¥Ã¥¯
+	$istk = PEEK(SYMBOL("_kernel_istk"), sizeof_void_ptr)$
+	$IF CHECK_STACK_ALIGN && (istk & (CHECK_STACK_ALIGN - 1)) != 0$
+		$ERROR ICS.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 ICS.TEXT_LINE[1]$E_PAR: 
+			$FORMAT(_("%1% `%2%\' in %3% is null"),
+			"istk", ICS.ISTK[1], "DEF_ICS")$$END$
+	$END$
+$END$
+
+$ 
+$  žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÎÎ°è€ÎÀèÆ¬ÈÖÃÏ€Î¥Á¥§¥Ã¥¯
+$ 
+$IF CHECK_MPF_ALIGN || CHECK_MPF_NONNULL$
+$	// žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÎÎ°è€ÎÀèÆ¬ÈÖÃÏ€Î¥Á¥§¥Ã¥¯
+	$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$
+
+$ 
+$  ¥«¡Œ¥Í¥ë€¬³ä€êÉÕ€±€ë¥á¥â¥êÎÎ°è€ÎÀèÆ¬ÈÖÃÏ€Î¥Á¥§¥Ã¥¯
+$ 
+$IF CHECK_MB_ALIGN$
+$	// ¥«¡Œ¥Í¥ë€¬³ä€êÉÕ€±€ë¥á¥â¥êÎÎ°è€ÎÀèÆ¬ÈÖÃÏ€Î¥Á¥§¥Ã¥¯
+	$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: /extension/dcre/kernel/kernel_def.csv
===================================================================
--- /extension/dcre/kernel/kernel_def.csv	(revision 7)
+++ /extension/dcre/kernel/kernel_def.csv	(revision 7)
@@ -0,0 +1,119 @@
+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
+TBIT_TEXPTN,TBIT_TEXPTN
+TBIT_FLGPTN,TBIT_FLGPTN
+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
+TARGET_MIN_ISTKSZ,#defined(TARGET_MIN_ISTKSZ),,TARGET_MIN_ISTKSZ
+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: /extension/dcre/kernel/kernel_impl.h
===================================================================
--- /extension/dcre/kernel/kernel_impl.h	(revision 7)
+++ /extension/dcre/kernel/kernel_impl.h	(revision 7)
@@ -0,0 +1,217 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		TOPPERS/ASP¥«¡Œ¥Í¥ëÆâÉôžþ€±Éžœà¥Ø¥Ã¥À¥Õ¥¡¥€¥ë
+ *
+ *  €³€Î¥Ø¥Ã¥À¥Õ¥¡¥€¥ë€Ï¡€¥«¡Œ¥Í¥ë€ò¹œÀ®€¹€ë¥×¥í¥°¥é¥à€Î¥œ¡Œ¥¹¥Õ¥¡¥€¥ë
+ *  €ÇÉ¬€º¥€¥ó¥¯¥ë¡Œ¥É€¹€ë€Ù€­Éžœà¥Ø¥Ã¥À¥Õ¥¡¥€¥ë€Ç€¢€ë¡¥
+ *
+ *  ¥¢¥»¥ó¥Ö¥êžÀžì€Î¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€«€é€³€Î¥Õ¥¡¥€¥ë€ò¥€¥ó¥¯¥ë¡Œ¥É€¹€ë»þ
+ *  €Ï¡€TOPPERS_MACRO_ONLY€òÄêµÁ€·€Æ€ª€¯¡¥€³€ì€Ë€è€ê¡€¥Þ¥¯¥íÄêµÁ°Ê³°€ò
+ *  œü€¯€è€Š€Ë€Ê€Ã€Æ€€€ë¡¥
+ */
+
+#ifndef TOPPERS_KERNEL_IMPL_H
+#define TOPPERS_KERNEL_IMPL_H
+
+/*
+ *  ¥«¡Œ¥Í¥ë€ÎÆâÉôŒ±ÊÌÌŸ€Î¥ê¥Í¡Œ¥à
+ */
+#include "kernel_rename.h"
+
+/*
+ *  ¥¢¥×¥ê¥±¡Œ¥·¥ç¥ó€È¶ŠÄÌ€Î¥Ø¥Ã¥À¥Õ¥¡¥€¥ë
+ */
+#include <kernel.h>
+
+/*
+ *  ¥·¥¹¥Æ¥à¥í¥°µ¡Çœ€Î€¿€á€ÎÄêµÁ
+ */
+#include <t_syslog.h>
+
+/*
+ *  ·¿¥­¥ã¥¹¥È€ò¹Ô€Š¥Þ¥¯¥í€ÎÄêµÁ
+ */
+#ifndef CAST
+#define CAST(type, val)		((type)(val))
+#endif /* CAST */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂžŸðÊó€ÎÄêµÁ
+ */
+#include "target_config.h"
+
+/*
+ *  €¹€Ù€Æ€ÎŽØ¿ô€ò¥³¥ó¥Ñ¥€¥ë€¹€ë€¿€á€ÎÄêµÁ
+ */
+#ifdef ALLFUNC
+#include "allfunc.h"
+#endif /* ALLFUNC */
+
+/*
+ *  ¥Ó¥Ã¥È¥Õ¥£¡Œ¥ë¥É€Ç€ÎÉä¹æÌµ€·À°¿ô·¿
+ *
+ *  8¥Ó¥Ã¥È°Ê²Œ€ÎÉý€Î¥Ó¥Ã¥È¥Õ¥£¡Œ¥ë¥É€Ç¡€Éä¹æÌµ€·À°¿ôÃÍ€òÊÝ»ý€·€¿€€Ÿì¹ç
+ *  €ËÍÑ€€€ë€Ù€­¥Ç¡Œ¥¿·¿¡¥ANSI C€Ç€Ï¡€¥Ó¥Ã¥È¥Õ¥£¡Œ¥ë¥É€Î¥Ç¡Œ¥¿·¿€Ë€Ï
+ *  int€Èunsigned int€·€«µö€µ€ì€Ê€€€¿€á¡€¥Ç¥Õ¥©¥ë¥È€ÎÄêµÁ€Ïunsigned
+ *  int€È€·€Æ€€€ë€¬¡€¥¿¡Œ¥²¥Ã¥È€ª€è€Ó¥Ä¡Œ¥ë°ÍÂž€Ç¡€unsigned char€Þ€¿€Ï
+ *  unsigned short€ËÄêµÁ€·€¿Êý€¬žúÎš€¬ÎÉ€€Ÿì¹ç€¬€¢€ë¡¥
+ */
+#ifndef BIT_FIELD_UINT
+#define BIT_FIELD_UINT		unsigned int
+#endif /* BIT_FIELD_UINT */
+
+/*
+ *  ¥Ó¥Ã¥È¥Õ¥£¡Œ¥ë¥É€Ç€Î¥Ö¡Œ¥ë·¿
+ *
+ *  1¥Ó¥Ã¥ÈÉý€Î¥Ó¥Ã¥È¥Õ¥£¡Œ¥ë¥É€Ç¡€¥Ö¡Œ¥ëÃÍ€òÊÝ»ý€·€¿€€Ÿì¹ç€ËÍÑ€€€ë€Ù€­
+ *  ¥Ç¡Œ¥¿·¿¡¥¥Ç¥Õ¥©¥ë¥È€Ç€ÏBIT_FIELD_UINT€ÈÆ±°ì€ËÄêµÁ€·€Æ€€€ë€¬¡€¥Ö¡Œ
+ *  ¥ëÃÍ€òÊÝ»ý€¹€ë€³€È€òÌÀŒš€¹€ë€¿€á€ËÊÌ€ÎÌŸŸÎ€È€·€Æ€€€ë¡¥
+ */
+#ifndef BIT_FIELD_BOOL
+#define BIT_FIELD_BOOL		BIT_FIELD_UINT
+#endif /* BIT_FIELD_BOOL */
+
+/*
+ *  ¥ª¥Ö¥ž¥§¥¯¥ÈID€ÎºÇŸ®ÃÍ€ÎÄêµÁ
+ */
+#define TMIN_TSKID		1		/* ¥¿¥¹¥¯ID€ÎºÇŸ®ÃÍ */
+#define TMIN_SEMID		1		/* ¥»¥Þ¥Õ¥©ID€ÎºÇŸ®ÃÍ */
+#define TMIN_FLGID		1		/* ¥Õ¥é¥°ID€ÎºÇŸ®ÃÍ */
+#define TMIN_DTQID		1		/* ¥Ç¡Œ¥¿¥­¥å¡ŒID€ÎºÇŸ®ÃÍ */
+#define TMIN_PDQID		1		/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒID€ÎºÇŸ®ÃÍ */
+#define TMIN_MBXID		1		/* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹ID€ÎºÇŸ®ÃÍ */
+#define TMIN_MPFID		1		/* žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëID€ÎºÇŸ®ÃÍ */
+#define TMIN_CYCID		1		/* ŒþŽü¥Ï¥ó¥É¥éID€ÎºÇŸ®ÃÍ */
+#define TMIN_ALMID		1		/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éID€ÎºÇŸ®ÃÍ */
+#define TMIN_ISRID		1		/* ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óID€ÎºÇŸ®ÃÍ */
+
+/*
+ *  Í¥ÀèÅÙ€ÎÃÊ³¬¿ô€ÎÄêµÁ
+ */
+#define TNUM_TPRI		(TMAX_TPRI - TMIN_TPRI + 1)
+#define TNUM_MPRI		(TMAX_MPRI - TMIN_MPRI + 1)
+#define TNUM_INTPRI		(TMAX_INTPRI - TMIN_INTPRI + 1)
+
+/*
+ *  ¥«¡Œ¥Í¥ëÆâÉô€Ç»ÈÍÑ€¹€ëÂ°À­€ÎÄêµÁ
+ */
+#define TA_NOEXS		((ATR)(-1))			/* Ì€ÅÐÏ¿ŸõÂÖ */
+
+#ifndef TA_MEMALLOC
+#define TA_MEMALLOC		UINT_C(0x8000)		/* ¥á¥â¥êÎÎ°è€ò¥«¡Œ¥Í¥ë€Ç³ÎÊÝ */
+#endif /* TA_MEMALLOC */
+#ifndef TA_MBALLOC
+#define TA_MBALLOC		UINT_C(0x4000)		/* ŽÉÍýÎÎ°è€ò¥«¡Œ¥Í¥ë€Ç³ÎÊÝ */
+#endif /* TA_MBALLOC */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥ÈÄêµÁ€Î¥š¥é¡Œ¥Á¥§¥Ã¥¯¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÃÍ€ÎÄêµÁ
+ */
+#ifndef TARGET_TSKATR
+#define TARGET_TSKATR		0U		/* ¥¿¡Œ¥²¥Ã¥ÈÄêµÁ€Î¥¿¥¹¥¯Â°À­ */
+#endif /* TARGET_TSKATR */
+
+#ifndef TARGET_ISRATR
+#define TARGET_ISRATR		0U		/* ¥¿¡Œ¥²¥Ã¥ÈÄêµÁ€ÎISRÂ°À­ */
+#endif /* TARGET_ISRATR */
+
+/*
+ *  ¥Ø¥Ã¥À¥Õ¥¡¥€¥ë€ò»ý€¿€Ê€€¥â¥ž¥å¡Œ¥ë€ÎŽØ¿ô¡ŠÊÑ¿ô€ÎÀëžÀ
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  ³Æ¥â¥ž¥å¡Œ¥ë€ÎœéŽü²œ¡Êkernel_cfg.c¡Ë
+ */
+extern void	initialize_object(void);
+
+/*
+ *  œéŽü²œ¥ë¡Œ¥Á¥ó€ÎŒÂ¹Ô¡Êkernel_cfg.c¡Ë
+ */
+extern void	call_inirtn(void);
+
+/*
+ *  œªÎ»œèÍý¥ë¡Œ¥Á¥ó€ÎŒÂ¹Ô¡Êkernel_cfg.c¡Ë
+ */
+extern void	call_terrtn(void);
+
+/*
+ *  Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ€Î¥¹¥¿¥Ã¥¯ÎÎ°è¡Êkernel_cfg.c¡Ë
+ */
+extern const SIZE	istksz;		/* ¥¹¥¿¥Ã¥¯ÎÎ°è€Î¥µ¥€¥º¡ÊŽÝ€á€¿ÃÍ¡Ë */
+extern STK_T *const	istk;		/* ¥¹¥¿¥Ã¥¯ÎÎ°è€ÎÀèÆ¬ÈÖÃÏ */
+#ifdef TOPPERS_ISTKPT
+extern STK_T *const	istkpt;		/* ¥¹¥¿¥Ã¥¯¥Ý¥€¥ó¥¿€ÎœéŽüÃÍ */
+#endif /* TOPPERS_ISTKPT */
+
+/*
+ *  ¥«¡Œ¥Í¥ë€¬³ä€êÉÕ€±€ë¥á¥â¥êÎÎ°è¡Êkernel_cfg.c¡Ë
+ */
+extern const SIZE	kmmsz;		/* ¥«¡Œ¥Í¥ë€¬³ä€êÉÕ€±€ë¥á¥â¥êÎÎ°è€Î¥µ¥€¥º */
+extern MB_T *const	kmm;		/* ¥«¡Œ¥Í¥ë€¬³ä€êÉÕ€±€ë¥á¥â¥êÎÎ°è€ÎÀèÆ¬ÈÖÃÏ */
+
+/*
+ *  ¥«¡Œ¥Í¥ëÆ°ºîŸõÂÖ¥Õ¥é¥°¡Êstartup.c¡Ë
+ */
+extern bool_t	kerflg;
+
+/*
+ *  ¥«¡Œ¥Í¥ë€Îµ¯Æ°¡Êstartup.c¡Ë
+ */
+extern void	sta_ker(void);
+
+/*
+ *  ¥«¡Œ¥Í¥ë€ÎœªÎ»œèÍý¡Êstartup.c¡Ë
+ */
+extern void	exit_kernel(void);
+
+/*
+ *  ¥«¡Œ¥Í¥ë€Î³ä€êÉÕ€±€ë¥á¥â¥êÎÎ°è€ÎŽÉÍý¡Êstartup.c¡Ë
+ */
+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: /extension/dcre/kernel/kernel_rename.def
===================================================================
--- /extension/dcre/kernel/kernel_rename.def	(revision 7)
+++ /extension/dcre/kernel/kernel_rename.def	(revision 7)
@@ -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
+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_sdtqid
+dtqinib_table
+adtqinib_table
+dtqcb_table
+tmax_pdqid
+tmax_spdqid
+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: /extension/dcre/kernel/kernel_rename.h
===================================================================
--- /extension/dcre/kernel/kernel_rename.h	(revision 7)
+++ /extension/dcre/kernel/kernel_rename.h	(revision 7)
@@ -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 call_isr					_kernel_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_sdtqid					_kernel_tmax_sdtqid
+#define dtqinib_table				_kernel_dtqinib_table
+#define adtqinib_table				_kernel_adtqinib_table
+#define dtqcb_table					_kernel_dtqcb_table
+#define tmax_pdqid					_kernel_tmax_pdqid
+#define tmax_spdqid					_kernel_tmax_spdqid
+#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 _call_isr					__kernel_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_sdtqid				__kernel_tmax_sdtqid
+#define _dtqinib_table				__kernel_dtqinib_table
+#define _adtqinib_table				__kernel_adtqinib_table
+#define _dtqcb_table				__kernel_dtqcb_table
+#define _tmax_pdqid					__kernel_tmax_pdqid
+#define _tmax_spdqid				__kernel_tmax_spdqid
+#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: /extension/dcre/kernel/kernel_unrename.h
===================================================================
--- /extension/dcre/kernel/kernel_unrename.h	(revision 7)
+++ /extension/dcre/kernel/kernel_unrename.h	(revision 7)
@@ -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 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_sdtqid
+#undef dtqinib_table
+#undef adtqinib_table
+#undef dtqcb_table
+#undef tmax_pdqid
+#undef tmax_spdqid
+#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 _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_sdtqid
+#undef _dtqinib_table
+#undef _adtqinib_table
+#undef _dtqcb_table
+#undef _tmax_pdqid
+#undef _tmax_spdqid
+#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: /extension/dcre/kernel/mailbox.c
===================================================================
--- /extension/dcre/kernel/mailbox.c	(revision 7)
+++ /extension/dcre/kernel/mailbox.c	(revision 7)
@@ -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-2014 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$
+ */
+
+/*
+ *		¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹µ¡Çœ
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+#include "mailbox.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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 */
+
+/*
+ *  ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€Î¿ô
+ */
+#define tnum_mbx	((uint_t)(tmax_mbxid - TMIN_MBXID + 1))
+#define tnum_smbx	((uint_t)(tmax_smbxid - TMIN_MBXID + 1))
+
+/*
+ *  ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹ID€«€é¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹ŽÉÍý¥Ö¥í¥Ã¥¯€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#define INDEX_MBX(mbxid)	((uint_t)((mbxid) - TMIN_MBXID))
+#define get_mbxcb(mbxid)	(&(mbxcb_table[INDEX_MBX(mbxid)]))
+
+#ifdef TOPPERS_mbxini
+
+/*
+ *  »ÈÍÑ€·€Æ€€€Ê€€¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹ŽÉÍý¥Ö¥í¥Ã¥¯€Î¥ê¥¹¥È
+ */
+QUEUE	free_mbxcb;
+
+/* 
+ *  ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹µ¡Çœ€ÎœéŽü²œ
+ */
+void
+initialize_mailbox(void)
+{
+	uint_t	i, j;
+	MBXCB	*p_mbxcb;
+	MBXINIB	*p_mbxinib;
+
+	for (i = 0; i < tnum_smbx; i++) {
+		p_mbxcb = &(mbxcb_table[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; i++, j++) {
+		p_mbxcb = &(mbxcb_table[i]);
+		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 */
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥žÍ¥ÀèÅÙ€ÎŒèœÐ€·
+ */
+#define	MSGPRI(pk_msg)	(((T_MSG_PRI *)(pk_msg))->msgpri)
+
+/*
+ *  Í¥ÀèÅÙœç¥á¥Ã¥»¡Œ¥ž¥­¥å¡Œ€Ø€ÎÁÞÆþ
+ */
+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;
+}
+
+/*
+ *  ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€ÎÀžÀ®
+ */
+#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 (tnum_mbx == 0 || 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 */
+
+/*
+ *  ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€Îºïœü
+ */
+#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 */
+
+/*
+ *  ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€Ø€ÎÁ÷¿®
+ */
+#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);
+
+	t_lock_cpu();
+	if (p_mbxcb->p_mbxinib->mbxatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (!((p_mbxcb->p_mbxinib->mbxatr & TA_MPRI) == 0U
+				|| (TMIN_MPRI <= MSGPRI(pk_msg)
+					&& MSGPRI(pk_msg) <= p_mbxcb->p_mbxinib->maxmpri))) {
+		ercd = E_PAR;
+	}
+	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 */
+
+/*
+ *  ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€«€é€ÎŒõ¿®
+ */
+#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 */
+
+/*
+ *  ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€«€é€ÎŒõ¿®¡Ê¥Ý¡Œ¥ê¥ó¥°¡Ë
+ */
+#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 */
+
+/*
+ *  ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€«€é€ÎŒõ¿®¡Ê¥¿¥€¥à¥¢¥Š¥È€¢€ê¡Ë
+ */
+#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 */
+
+/*
+ *  ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€ÎºÆœéŽü²œ
+ */
+#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 */
+
+/*
+ *  ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€ÎŸõÂÖ»²ŸÈ
+ */
+#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: /extension/dcre/kernel/mailbox.h
===================================================================
--- /extension/dcre/kernel/mailbox.h	(revision 7)
+++ /extension/dcre/kernel/mailbox.h	(revision 7)
@@ -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-2012 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹µ¡Çœ
+ */
+
+#ifndef TOPPERS_MAILBOX_H
+#define TOPPERS_MAILBOX_H
+
+#include "wait.h"
+
+/*
+ *  ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹œéŽü²œ¥Ö¥í¥Ã¥¯
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎœéŽü²œ¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬
+ *  ¡ÊWOBJINIB¡Ë€ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀžì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç¡€
+ *  ºÇœé€Î¥Õ¥£¡Œ¥ë¥É€¬¶ŠÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥
+ */
+typedef struct mailbox_initialization_block {
+	ATR			mbxatr;			/* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹Â°À­ */
+	PRI			maxmpri;		/* ¥á¥Ã¥»¡Œ¥žÍ¥ÀèÅÙ€ÎºÇÂçÃÍ */
+} MBXINIB;
+
+/*
+ *  ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹ŽÉÍý¥Ö¥í¥Ã¥¯
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬¡ÊWOBJCB¡Ë
+ *  €ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀžì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç¡€ºÇœé€Î2€Ä€Î
+ *  ¥Õ¥£¡Œ¥ë¥É€¬¶ŠÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥
+ *
+ *  ¥á¥Ã¥»¡Œ¥ž¥­¥å¡Œ€¬¥á¥Ã¥»¡Œ¥ž€ÎÍ¥ÀèÅÙœç€ÎŸì¹ç€Ë€Ï¡€pk_last€Ï»È€ï€Ê
+ *  €€¡¥€Þ€¿¡€¥á¥Ã¥»¡Œ¥ž¥­¥å¡Œ€¬¶õ€ÎŸì¹ç¡Êpk_head€¬NULL€ÎŸì¹ç¡Ë€Ë€â¡€
+ *  pk_last€ÏÌµžú€Ç€¢€ë¡¥
+ */
+typedef struct mailbox_control_block {
+	QUEUE		wait_queue;		/* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹ÂÔ€Á¥­¥å¡Œ */
+	const MBXINIB *p_mbxinib;	/* œéŽü²œ¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿ */
+	T_MSG		*pk_head;		/* ÀèÆ¬€Î¥á¥Ã¥»¡Œ¥ž */
+	T_MSG		*pk_last;		/* ËöÈø€Î¥á¥Ã¥»¡Œ¥ž */
+} MBXCB;
+
+/*
+ *  ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹ÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯€ÎÄêµÁ
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬
+ *  ¡ÊWINFO_WOBJ¡Ë€ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀžì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç¡€
+ *  ºÇœé€Î2€Ä€Î¥Õ¥£¡Œ¥ë¥É€¬¶ŠÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥
+ */
+typedef struct mailbox_waiting_information {
+	WINFO		winfo;			/* Éžœà€ÎÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯ */
+	MBXCB		*p_mbxcb;		/* ÂÔ€Ã€Æ€€€ë¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€ÎŽÉÍý¥Ö¥í¥Ã¥¯ */
+	T_MSG		*pk_msg;		/* Œõ¿®€·€¿¥á¥Ã¥»¡Œ¥ž */
+} WINFO_MBX;
+
+/*
+ *  »ÈÍÑ€·€Æ€€€Ê€€¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹ŽÉÍý¥Ö¥í¥Ã¥¯€Î¥ê¥¹¥È
+ */
+extern QUEUE	free_mbxcb;
+
+/*
+ *  ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹ID€ÎºÇÂçÃÍ¡Êkernel_cfg.c¡Ë
+ */
+extern const ID	tmax_mbxid;
+extern const ID	tmax_smbxid;
+
+/*
+ *  ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹œéŽü²œ¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern const MBXINIB	mbxinib_table[];
+extern MBXINIB			ambxinib_table[];
+
+/*
+ *  ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹ŽÉÍý¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern MBXCB	mbxcb_table[];
+
+/*
+ *  ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹ŽÉÍý¥Ö¥í¥Ã¥¯€«€é¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹ID€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#define	MBXID(p_mbxcb)	((ID)(((p_mbxcb) - mbxcb_table) + TMIN_MBXID))
+
+/*
+ *  ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹µ¡Çœ€ÎœéŽü²œ
+ */
+extern void	initialize_mailbox(void);
+
+#endif /* TOPPERS_MAILBOX_H */
Index: /extension/dcre/kernel/mempfix.c
===================================================================
--- /extension/dcre/kernel/mempfix.c	(revision 7)
+++ /extension/dcre/kernel/mempfix.c	(revision 7)
@@ -0,0 +1,588 @@
+/*
+ *  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-2014 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$
+ */
+
+/*
+ *		žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëµ¡Çœ
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+#include "mempfix.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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 */
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ë€Î¿ô
+ */
+#define tnum_mpf	((uint_t)(tmax_mpfid - TMIN_MPFID + 1))
+#define tnum_smpf	((uint_t)(tmax_smpfid - TMIN_MPFID + 1))
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëID€«€éžÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëŽÉÍý¥Ö¥í¥Ã¥¯€òŒè€êœÐ€¹€¿
+ *  €á€Î¥Þ¥¯¥í
+ */
+#define INDEX_MPF(mpfid)	((uint_t)((mpfid) - TMIN_MPFID))
+#define get_mpfcb(mpfid)	(&(mpfcb_table[INDEX_MPF(mpfid)]))
+
+/*
+ *  ÆÃŒì€Ê¥€¥ó¥Ç¥Ã¥¯¥¹ÃÍ€ÎÄêµÁ
+ */
+#define INDEX_NULL		(~0U)		/* ¶õ€­¥Ö¥í¥Ã¥¯¥ê¥¹¥È€ÎºÇžå */
+#define INDEX_ALLOC		(~1U)		/* ³äÅö€ÆºÑ€ß€Î¥Ö¥í¥Ã¥¯ */
+
+#ifdef TOPPERS_mpfini
+
+/*
+ *  »ÈÍÑ€·€Æ€€€Ê€€žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëŽÉÍý¥Ö¥í¥Ã¥¯€Î¥ê¥¹¥È
+ */
+QUEUE	free_mpfcb;
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëµ¡Çœ€ÎœéŽü²œ
+ */
+void
+initialize_mempfix(void)
+{
+	uint_t	i, j;
+	MPFCB	*p_mpfcb;
+	MPFINIB	*p_mpfinib;
+
+	for (i = 0; i < tnum_smpf; i++) {
+		p_mpfcb = &(mpfcb_table[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; i++, j++) {
+		p_mpfcb = &(mpfcb_table[i]);
+		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 */
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ë€«€é¥Ö¥í¥Ã¥¯€ò³ÍÆÀ
+ */
+#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 */
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ë€ÎÀžÀ®
+ */
+#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);
+	CHECK_PAR(pk_cmpf->blkcnt != 0);
+	CHECK_PAR(pk_cmpf->blksz != 0);
+	if (pk_cmpf->mpf != NULL) {
+		CHECK_ALIGN_MPF(pk_cmpf->mpf);
+	}
+	if (pk_cmpf->mpfmb != NULL) {
+		CHECK_ALIGN_MB(pk_cmpf->mpfmb);
+	}
+	mpfatr = pk_cmpf->mpfatr;
+	mpf = pk_cmpf->mpf;
+	p_mpfmb = pk_cmpf->mpfmb;
+
+	t_lock_cpu();
+	if (tnum_mpf == 0 || queue_empty(&free_mpfcb)) {
+		ercd = E_NOID;
+	}
+	else {
+		if (mpf == NULL) {
+			mpf = kernel_malloc(ROUND_MPF_T(pk_cmpf->blksz) * pk_cmpf->blkcnt);
+			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 (pk_cmpf->mpf == NULL) {
+					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 */
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ë€Îºïœü
+ */
+#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 */
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥Ö¥í¥Ã¥¯€Î³ÍÆÀ
+ */
+#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->p_mpfinib->mpfatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else 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 */
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥Ö¥í¥Ã¥¯€Î³ÍÆÀ¡Ê¥Ý¡Œ¥ê¥ó¥°¡Ë
+ */
+#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->p_mpfinib->mpfatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else 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 */
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥Ö¥í¥Ã¥¯€Î³ÍÆÀ¡Ê¥¿¥€¥à¥¢¥Š¥È€¢€ê¡Ë
+ */
+#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->p_mpfinib->mpfatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else 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 */
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥Ö¥í¥Ã¥¯€ÎÊÖµÑ
+ */
+#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);
+
+	t_lock_cpu();
+	if (p_mpfcb->p_mpfinib->mpfatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else {
+		blkoffset = ((char *) blk) - (char *)(p_mpfcb->p_mpfinib->mpf);
+		blkidx = (uint_t)(blkoffset / p_mpfcb->p_mpfinib->blksz);
+		if (!(p_mpfcb->p_mpfinib->mpf <= blk)
+				|| !(blkoffset % p_mpfcb->p_mpfinib->blksz == 0U)
+				|| !(blkoffset / p_mpfcb->p_mpfinib->blksz < p_mpfcb->unused)
+				|| !((p_mpfcb->p_mpfinib->p_mpfmb + blkidx)->next
+															== INDEX_ALLOC)) {
+			ercd = E_PAR;
+		}
+		else 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 */
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ë€ÎºÆœéŽü²œ
+ */
+#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();
+	if (p_mpfcb->p_mpfinib->mpfatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else {
+		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 */
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ë€ÎŸõÂÖ»²ŸÈ
+ */
+#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();
+	if (p_mpfcb->p_mpfinib->mpfatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else {
+		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: /extension/dcre/kernel/mempfix.h
===================================================================
--- /extension/dcre/kernel/mempfix.h	(revision 7)
+++ /extension/dcre/kernel/mempfix.h	(revision 7)
@@ -0,0 +1,144 @@
+/*
+ *  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-2012 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëµ¡Çœ
+ */
+
+#ifndef TOPPERS_MEMPFIX_H
+#define TOPPERS_MEMPFIX_H
+
+#include "wait.h"
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥Ö¥í¥Ã¥¯ŽÉÍý¥Ö¥í¥Ã¥¯
+ *
+ *  next¥Õ¥£¡Œ¥ë¥É€Ë€Ï¡€¥á¥â¥ê¥Ö¥í¥Ã¥¯€¬³äÅö€ÆºÑ€ß€ÎŸì¹ç€ÏINDEX_ALLOC€ò¡€
+ *  Ì€³äÅö€Æ€ÎŸì¹ç€ÏŒ¡€ÎÌ€³äÅö€Æ¥Ö¥í¥Ã¥¯€Î¥€¥ó¥Ç¥Ã¥¯¥¹ÈÖ¹æ€ò³ÊÇŒ€¹€ë¡¥
+ *  ºÇžå€ÎÌ€³äÅö€Æ¥Ö¥í¥Ã¥¯€ÎŸì¹ç€Ë€Ï¡€INDEX_NULL€ò³ÊÇŒ€¹€ë¡¥
+ */
+typedef struct fixed_memoryblock_management_block {
+	uint_t		next;			/* Œ¡€ÎÌ€³äÅö€Æ¥Ö¥í¥Ã¥¯ */
+} MPFMB;
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëœéŽü²œ¥Ö¥í¥Ã¥¯
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎœéŽü²œ¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬
+ *  ¡ÊWOBJINIB¡Ë€ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀžì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç¡€
+ *  ºÇœé€Î¥Õ¥£¡Œ¥ë¥É€¬¶ŠÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥
+ */
+typedef struct fixed_memorypool_initialization_block {
+	ATR			mpfatr;			/* žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÂ°À­ */
+	uint_t		blkcnt;			/* ¥á¥â¥ê¥Ö¥í¥Ã¥¯¿ô */
+	uint_t		blksz;			/* ¥á¥â¥ê¥Ö¥í¥Ã¥¯€Î¥µ¥€¥º¡ÊŽÝ€á€¿ÃÍ¡Ë */
+	void		*mpf;			/* žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÎÎ°è€ÎÀèÆ¬ÈÖÃÏ */
+	MPFMB		*p_mpfmb;		/* žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëŽÉÍýÎÎ°è€ÎÀèÆ¬ÈÖÃÏ */
+} MPFINIB;
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëŽÉÍý¥Ö¥í¥Ã¥¯
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬¡ÊWOBJCB¡Ë
+ *  €ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀžì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç¡€ºÇœé€Î2€Ä€Î
+ *  ¥Õ¥£¡Œ¥ë¥É€¬¶ŠÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥
+ */
+typedef struct fixed_memorypool_control_block {
+	QUEUE		wait_queue;		/* žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÂÔ€Á¥­¥å¡Œ */
+	const MPFINIB *p_mpfinib;	/* œéŽü²œ¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿ */
+	uint_t		fblkcnt;		/* Ì€³äÅö€Æ¥Ö¥í¥Ã¥¯¿ô */
+	uint_t		unused;			/* Ì€»ÈÍÑ¥Ö¥í¥Ã¥¯€ÎÀèÆ¬ */
+	uint_t		freelist;		/* Ì€³äÅö€Æ¥Ö¥í¥Ã¥¯€Î¥ê¥¹¥È */
+} MPFCB;
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯€ÎÄêµÁ
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬
+ *  ¡ÊWINFO_WOBJ¡Ë€ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀžì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç¡€
+ *  ºÇœé€Î2€Ä€Î¥Õ¥£¡Œ¥ë¥É€¬¶ŠÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥
+ */
+typedef struct fixed_memorypool_waiting_information {
+	WINFO		winfo;			/* Éžœà€ÎÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯ */
+	MPFCB		*p_mpfcb;		/* ÂÔ€Ã€Æ€€€ëžÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ë€ÎŽÉÍý¥Ö¥í¥Ã¥¯*/
+	void		*blk;			/* ³ÍÆÀ€·€¿¥á¥â¥ê¥Ö¥í¥Ã¥¯ */
+} WINFO_MPF;
+
+/*
+ *  »ÈÍÑ€·€Æ€€€Ê€€žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëŽÉÍý¥Ö¥í¥Ã¥¯€Î¥ê¥¹¥È
+ */
+extern QUEUE	free_mpfcb;
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëID€ÎºÇÂçÃÍ¡Êkernel_cfg.c¡Ë
+ */
+extern const ID	tmax_mpfid;
+extern const ID	tmax_smpfid;
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëœéŽü²œ¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern const MPFINIB	mpfinib_table[];
+extern MPFINIB			ampfinib_table[];
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëŽÉÍý¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern MPFCB	mpfcb_table[];
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëŽÉÍý¥Ö¥í¥Ã¥¯€«€éžÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëID€òŒè€êœÐ€¹€¿
+ *  €á€Î¥Þ¥¯¥í
+ */
+#define	MPFID(p_mpfcb)	((ID)(((p_mpfcb) - mpfcb_table) + TMIN_MPFID))
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëµ¡Çœ€ÎœéŽü²œ
+ */
+extern void	initialize_mempfix(void);
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ë€«€é¥Ö¥í¥Ã¥¯€ò³ÍÆÀ
+ */
+extern void	get_mpf_block(MPFCB *p_mpfcb, void **p_blk);
+
+#endif /* TOPPERS_MEMPFIX_H */
Index: /extension/dcre/kernel/pridataq.c
===================================================================
--- /extension/dcre/kernel/pridataq.c	(revision 7)
+++ /extension/dcre/kernel/pridataq.c	(revision 7)
@@ -0,0 +1,849 @@
+/*
+ *  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-2014 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$
+ */
+
+/*
+ *		Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œµ¡Çœ
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+#include "pridataq.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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 */
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€Î¿ô
+ */
+#define tnum_pdq	((uint_t)(tmax_pdqid - TMIN_PDQID + 1))
+#define tnum_spdq	((uint_t)(tmax_spdqid - TMIN_PDQID + 1))
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒID€«€éÍ¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍý¥Ö¥í¥Ã¥¯€òŒè€êœÐ€¹€¿
+ *  €á€Î¥Þ¥¯¥í
+ */
+#define INDEX_PDQ(pdqid)	((uint_t)((pdqid) - TMIN_PDQID))
+#define get_pdqcb(pdqid)	(&(pdqcb_table[INDEX_PDQ(pdqid)]))
+
+#ifdef TOPPERS_pdqini
+
+/*
+ *  »ÈÍÑ€·€Æ€€€Ê€€Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍý¥Ö¥í¥Ã¥¯€Î¥ê¥¹¥È
+ */
+QUEUE	free_pdqcb;
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œµ¡Çœ€ÎœéŽü²œ
+ */
+void
+initialize_pridataq(void)
+{
+	uint_t	i, j;
+	PDQCB	*p_pdqcb;
+	PDQINIB	*p_pdqinib;
+
+	for (i = 0; i < tnum_spdq; i++) {
+		p_pdqcb = &(pdqcb_table[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; i++, j++) {
+		p_pdqcb = &(pdqcb_table[i]);
+		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 */
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€Ø€Î¥Ç¡Œ¥¿€Î³ÊÇŒ
+ */
+#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 */
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€«€é€Î¥Ç¡Œ¥¿€ÎŒèœÐ€·
+ */
+#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 */
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€Î¥Ç¡Œ¥¿Á÷¿®
+ */
+#ifdef TOPPERS_pdqsnd
+
+bool_t
+send_pridata(PDQCB *p_pdqcb, intptr_t data, PRI datapri, bool_t *p_dspreq)
+{
+	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_dspreq = wait_complete(p_tcb);
+		return(true);
+	}
+	else if (p_pdqcb->count < p_pdqcb->p_pdqinib->pdqcnt) {
+		enqueue_pridata(p_pdqcb, data, datapri);
+		*p_dspreq = false;
+		return(true);
+	}
+	else {
+		return(false);
+	}
+}
+
+#endif /* TOPPERS_pdqsnd */
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€Î¥Ç¡Œ¥¿Œõ¿®
+ */
+#ifdef TOPPERS_pdqrcv
+
+bool_t
+receive_pridata(PDQCB *p_pdqcb, intptr_t *p_data,
+									PRI *p_datapri, bool_t *p_dspreq)
+{
+	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_dspreq = wait_complete(p_tcb);
+		}
+		else {
+			*p_dspreq = 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_dspreq = wait_complete(p_tcb);
+		return(true);
+	}
+	else {
+		return(false);
+	}
+}
+
+#endif /* TOPPERS_pdqrcv */
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎÀžÀ®
+ */
+#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);
+	if (pk_cpdq->pdqmb != NULL) {
+		CHECK_ALIGN_MB(pk_cpdq->pdqmb);
+	}
+	pdqatr = pk_cpdq->pdqatr;
+	p_pdqmb = pk_cpdq->pdqmb;
+
+	t_lock_cpu();
+	if (tnum_pdq == 0 || 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 */
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€Îºïœü
+ */
+#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 */
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®
+ */
+#ifdef TOPPERS_snd_pdq
+
+ER
+snd_pdq(ID pdqid, intptr_t data, PRI datapri)
+{
+	PDQCB	*p_pdqcb;
+	WINFO_PDQ winfo_pdq;
+	bool_t	dspreq;
+	ER		ercd;
+
+	LOG_SND_PDQ_ENTER(pdqid, data, datapri);
+	CHECK_DISPATCH();
+	CHECK_PDQID(pdqid);
+	p_pdqcb = get_pdqcb(pdqid);
+	CHECK_PAR(TMIN_DPRI <= datapri);
+
+	t_lock_cpu();
+	if (p_pdqcb->p_pdqinib->pdqatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (!(datapri <= p_pdqcb->p_pdqinib->maxdpri)) {
+		ercd = E_PAR;
+	}
+	else if (send_pridata(p_pdqcb, data, datapri, &dspreq)) {
+		if (dspreq) {
+			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 */
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®¡Ê¥Ý¡Œ¥ê¥ó¥°¡Ë
+ */
+#ifdef TOPPERS_psnd_pdq
+
+ER
+psnd_pdq(ID pdqid, intptr_t data, PRI datapri)
+{
+	PDQCB	*p_pdqcb;
+	bool_t	dspreq;
+	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);
+
+	t_lock_cpu();
+	if (p_pdqcb->p_pdqinib->pdqatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (!(datapri <= p_pdqcb->p_pdqinib->maxdpri)) {
+		ercd = E_PAR;
+	}
+	else if (send_pridata(p_pdqcb, data, datapri, &dspreq)) {
+		if (dspreq) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_TMOUT;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_PSND_PDQ_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_psnd_pdq */
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®¡Ê¥Ý¡Œ¥ê¥ó¥°¡€Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ */
+#ifdef TOPPERS_ipsnd_pdq
+
+ER
+ipsnd_pdq(ID pdqid, intptr_t data, PRI datapri)
+{
+	PDQCB	*p_pdqcb;
+	bool_t	dspreq;
+	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);
+
+	i_lock_cpu();
+	if (p_pdqcb->p_pdqinib->pdqatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (!(datapri <= p_pdqcb->p_pdqinib->maxdpri)) {
+		ercd = E_PAR;
+	}
+	else if (send_pridata(p_pdqcb, data, datapri, &dspreq)) {
+		if (dspreq) {
+			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 */
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®¡Ê¥¿¥€¥à¥¢¥Š¥È€¢€ê¡Ë
+ */
+#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	dspreq;
+	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);
+
+	t_lock_cpu();
+	if (p_pdqcb->p_pdqinib->pdqatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (!(datapri <= p_pdqcb->p_pdqinib->maxdpri)) {
+		ercd = E_PAR;
+	}
+	else if (send_pridata(p_pdqcb, data, datapri, &dspreq)) {
+		if (dspreq) {
+			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 */
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®
+ */
+#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	dspreq;
+	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, &dspreq)) {
+		if (dspreq) {
+			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 */
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®¡Ê¥Ý¡Œ¥ê¥ó¥°¡Ë
+ */
+#ifdef TOPPERS_prcv_pdq
+
+ER
+prcv_pdq(ID pdqid, intptr_t *p_data, PRI *p_datapri)
+{
+	PDQCB	*p_pdqcb;
+	bool_t	dspreq;
+	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, &dspreq)) {
+		if (dspreq) {
+			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 */
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®¡Ê¥¿¥€¥à¥¢¥Š¥È€¢€ê¡Ë
+ */
+#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	dspreq;
+	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, &dspreq)) {
+		if (dspreq) {
+			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 */
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎºÆœéŽü²œ
+ */
+#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 */
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎŸõÂÖ»²ŸÈ
+ */
+#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: /extension/dcre/kernel/pridataq.h
===================================================================
--- /extension/dcre/kernel/pridataq.h	(revision 7)
+++ /extension/dcre/kernel/pridataq.h	(revision 7)
@@ -0,0 +1,165 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2013 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œµ¡Çœ
+ */
+
+#ifndef TOPPERS_PRIDATAQ_H
+#define TOPPERS_PRIDATAQ_H
+
+#include "wait.h"
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿ŽÉÍý¥Ö¥í¥Ã¥¯
+ */
+typedef struct pridata_management_block PDQMB;
+
+struct pridata_management_block {
+	PDQMB		*p_next;		/* Œ¡€Î¥Ç¡Œ¥¿ */
+	intptr_t	data;			/* ¥Ç¡Œ¥¿ËÜÂÎ */
+	PRI			datapri;		/* ¥Ç¡Œ¥¿Í¥ÀèÅÙ */
+};
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒœéŽü²œ¥Ö¥í¥Ã¥¯
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎœéŽü²œ¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬
+ *  ¡ÊWOBJINIB¡Ë€ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀžì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç¡€
+ *  ºÇœé€Î¥Õ¥£¡Œ¥ë¥É€¬¶ŠÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥
+ */
+typedef struct pridataq_initialization_block {
+	ATR			pdqatr;			/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒÂ°À­ */
+	uint_t		pdqcnt;			/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎÍÆÎÌ */
+	PRI			maxdpri;		/* ¥Ç¡Œ¥¿Í¥ÀèÅÙ€ÎºÇÂçÃÍ */
+	PDQMB		*p_pdqmb;		/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€ÎÀèÆ¬ÈÖÃÏ */
+} PDQINIB;
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍý¥Ö¥í¥Ã¥¯
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬¡ÊWOBJCB¡Ë
+ *  €ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀžì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç¡€ºÇœé€Î2€Ä€Î
+ *  ¥Õ¥£¡Œ¥ë¥É€¬¶ŠÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥
+ */
+typedef struct pridataq_control_block {
+	QUEUE		swait_queue;	/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒÁ÷¿®ÂÔ€Á¥­¥å¡Œ */
+	const PDQINIB *p_pdqinib;	/* œéŽü²œ¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿ */
+	QUEUE		rwait_queue;	/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŒõ¿®ÂÔ€Á¥­¥å¡Œ */
+	uint_t		count;			/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒÃæ€Î¥Ç¡Œ¥¿€Î¿ô */
+	PDQMB		*p_head;		/* ºÇœé€Î¥Ç¡Œ¥¿ */
+	uint_t		unused;			/* Ì€»ÈÍÑ¥Ç¡Œ¥¿ŽÉÍý¥Ö¥í¥Ã¥¯€ÎÀèÆ¬ */
+	PDQMB		*p_freelist;	/* Ì€³äÅö€Æ¥Ç¡Œ¥¿ŽÉÍý¥Ö¥í¥Ã¥¯€Î¥ê¥¹¥È */
+} PDQCB;
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯€ÎÄêµÁ
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬
+ *  ¡ÊWINFO_WOBJ¡Ë€ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀžì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç¡€
+ *  ºÇœé€Î2€Ä€Î¥Õ¥£¡Œ¥ë¥É€¬¶ŠÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®ÂÔ€Á€ÈÍ¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®ÂÔ€Á€Ç¡€
+ *  Æ±€žÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯€ò»È€Š¡¥
+ */
+typedef struct pridataq_waiting_information {
+	WINFO		winfo;			/* Éžœà€ÎÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯ */
+	PDQCB		*p_pdqcb;		/* ÂÔ€Ã€Æ€€€ëÍ¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎŽÉÍý¥Ö¥í¥Ã¥¯*/
+	intptr_t	data;			/* Á÷Œõ¿®¥Ç¡Œ¥¿ */
+	PRI			datapri;		/* ¥Ç¡Œ¥¿Í¥ÀèÅÙ */
+} WINFO_PDQ;
+
+/*
+ *  »ÈÍÑ€·€Æ€€€Ê€€Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍý¥Ö¥í¥Ã¥¯€Î¥ê¥¹¥È
+ */
+extern QUEUE	free_pdqcb;
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒID€ÎºÇÂçÃÍ¡Êkernel_cfg.c¡Ë
+ */
+extern const ID	tmax_pdqid;
+extern const ID	tmax_spdqid;
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒœéŽü²œ¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern const PDQINIB	pdqinib_table[];
+extern PDQINIB			apdqinib_table[];
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍý¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern PDQCB	pdqcb_table[];
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍý¥Ö¥í¥Ã¥¯€«€éÍ¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒID€òŒè€êœÐ€¹€¿
+ *  €á€Î¥Þ¥¯¥í
+ */
+#define	PDQID(p_pdqcb)	((ID)(((p_pdqcb) - pdqcb_table) + TMIN_PDQID))
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œµ¡Çœ€ÎœéŽü²œ
+ */
+extern void	initialize_pridataq(void);
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€Ø€Î¥Ç¡Œ¥¿€Î³ÊÇŒ
+ */
+extern void	enqueue_pridata(PDQCB *p_pdqcb, intptr_t data, PRI datapri);
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€«€é€Î¥Ç¡Œ¥¿€ÎŒèœÐ€·
+ */
+extern void	dequeue_pridata(PDQCB *p_pdqcb, intptr_t *p_data, PRI *p_datapri);
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€Î¥Ç¡Œ¥¿Á÷¿®
+ */
+extern bool_t	send_pridata(PDQCB *p_pdqcb, intptr_t data,
+											PRI datapri, bool_t *p_dspreq);
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€Î¥Ç¡Œ¥¿Œõ¿®
+ */
+extern bool_t	receive_pridata(PDQCB *p_pdqcb, intptr_t *p_data,
+											PRI *p_datapri, bool_t *p_dspreq);
+
+#endif /* TOPPERS_PRIDATAQ_H */
Index: /extension/dcre/kernel/semaphore.c
===================================================================
--- /extension/dcre/kernel/semaphore.c	(revision 7)
+++ /extension/dcre/kernel/semaphore.c	(revision 7)
@@ -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) 2005-2012 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥»¥Þ¥Õ¥©µ¡Çœ
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+#include "semaphore.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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 */
+
+/*
+ *  ¥»¥Þ¥Õ¥©€Î¿ô
+ */
+#define tnum_sem	((uint_t)(tmax_semid - TMIN_SEMID + 1))
+#define tnum_ssem	((uint_t)(tmax_ssemid - TMIN_SEMID + 1))
+
+/*
+ *  ¥»¥Þ¥Õ¥©ID€«€é¥»¥Þ¥Õ¥©ŽÉÍý¥Ö¥í¥Ã¥¯€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#define INDEX_SEM(semid)	((uint_t)((semid) - TMIN_SEMID))
+#define get_semcb(semid)	(&(semcb_table[INDEX_SEM(semid)]))
+
+#ifdef TOPPERS_semini
+
+/*
+ *  »ÈÍÑ€·€Æ€€€Ê€€¥»¥Þ¥Õ¥©ŽÉÍý¥Ö¥í¥Ã¥¯€Î¥ê¥¹¥È
+ */
+QUEUE	free_semcb;
+
+/* 
+ *  ¥»¥Þ¥Õ¥©µ¡Çœ€ÎœéŽü²œ
+ */
+void
+initialize_semaphore(void)
+{
+	uint_t	i, j;
+	SEMCB	*p_semcb;
+	SEMINIB	*p_seminib;
+
+	for (i = 0; i < tnum_ssem; i++) {
+		p_semcb = &(semcb_table[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; i++, j++) {
+		p_semcb = &(semcb_table[i]);
+		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 */
+
+/*
+ *  ¥»¥Þ¥Õ¥©€ÎÀžÀ®
+ */
+#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 (tnum_sem == 0 || 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 */
+
+/*
+ *  ¥»¥Þ¥Õ¥©€Îºïœü
+ */
+#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 */
+
+/*
+ *  ¥»¥Þ¥Õ¥©»ñž»€ÎÊÖµÑ
+ */
+#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 */
+
+/*
+ *  ¥»¥Þ¥Õ¥©»ñž»€ÎÊÖµÑ¡ÊÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ */
+#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 */
+
+/*
+ *  ¥»¥Þ¥Õ¥©»ñž»€Î³ÍÆÀ
+ */
+#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 */
+
+/*
+ *  ¥»¥Þ¥Õ¥©»ñž»€Î³ÍÆÀ¡Ê¥Ý¡Œ¥ê¥ó¥°¡Ë
+ */
+#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 */
+
+/*
+ *  ¥»¥Þ¥Õ¥©»ñž»€Î³ÍÆÀ¡Ê¥¿¥€¥à¥¢¥Š¥È€¢€ê¡Ë
+ */
+#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 */
+
+/*
+ *  ¥»¥Þ¥Õ¥©€ÎºÆœéŽü²œ
+ */
+#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 */
+
+/*
+ *  ¥»¥Þ¥Õ¥©€ÎŸõÂÖ»²ŸÈ
+ */
+#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: /extension/dcre/kernel/semaphore.h
===================================================================
--- /extension/dcre/kernel/semaphore.h	(revision 7)
+++ /extension/dcre/kernel/semaphore.h	(revision 7)
@@ -0,0 +1,122 @@
+/*
+ *  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-2012 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥»¥Þ¥Õ¥©µ¡Çœ
+ */
+
+#ifndef TOPPERS_SEMAPHORE_H
+#define TOPPERS_SEMAPHORE_H
+
+#include "wait.h"
+
+/*
+ *  ¥»¥Þ¥Õ¥©œéŽü²œ¥Ö¥í¥Ã¥¯
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎœéŽü²œ¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬
+ *  ¡ÊWOBJINIB¡Ë€ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀžì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç¡€
+ *  ºÇœé€Î¥Õ¥£¡Œ¥ë¥É€¬¶ŠÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥
+ */
+typedef struct semaphore_initialization_block {
+	ATR			sematr;			/* ¥»¥Þ¥Õ¥©Â°À­ */
+	uint_t		isemcnt;		/* ¥»¥Þ¥Õ¥©€Î»ñž»¿ô€ÎœéŽüÃÍ */
+	uint_t		maxsem;			/* ¥»¥Þ¥Õ¥©€ÎºÇÂç»ñž»¿ô */
+} SEMINIB;
+
+/*
+ *  ¥»¥Þ¥Õ¥©ŽÉÍý¥Ö¥í¥Ã¥¯
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬¡ÊWOBJCB¡Ë
+ *  €ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀžì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç¡€ºÇœé€Î2€Ä€Î
+ *  ¥Õ¥£¡Œ¥ë¥É€¬¶ŠÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥
+ */
+typedef struct semaphore_control_block {
+	QUEUE		wait_queue;		/* ¥»¥Þ¥Õ¥©ÂÔ€Á¥­¥å¡Œ */
+	const SEMINIB *p_seminib;	/* œéŽü²œ¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿ */
+	uint_t		semcnt;			/* ¥»¥Þ¥Õ¥©žœºß¥«¥Š¥ó¥ÈÃÍ */
+} SEMCB;
+
+/*
+ *  ¥»¥Þ¥Õ¥©ÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯€ÎÄêµÁ
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬
+ *  ¡ÊWINFO_WOBJ¡Ë€ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀžì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç¡€
+ *  €¹€Ù€Æ€Î¥Õ¥£¡Œ¥ë¥É€¬¶ŠÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥
+ */
+typedef struct semaphore_waiting_information {
+	WINFO	winfo;			/* Éžœà€ÎÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯ */
+	SEMCB	*p_semcb;		/* ÂÔ€Ã€Æ€€€ë¥»¥Þ¥Õ¥©€ÎŽÉÍý¥Ö¥í¥Ã¥¯ */
+} WINFO_SEM;
+
+/*
+ *  »ÈÍÑ€·€Æ€€€Ê€€¥»¥Þ¥Õ¥©ŽÉÍý¥Ö¥í¥Ã¥¯€Î¥ê¥¹¥È
+ */
+extern QUEUE	free_semcb;
+
+/*
+ *  ¥»¥Þ¥Õ¥©ID€ÎºÇÂçÃÍ¡Êkernel_cfg.c¡Ë
+ */
+extern const ID	tmax_semid;
+extern const ID	tmax_ssemid;
+
+/*
+ *  ¥»¥Þ¥Õ¥©œéŽü²œ¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern const SEMINIB	seminib_table[];
+extern SEMINIB			aseminib_table[];
+
+/*
+ *  ¥»¥Þ¥Õ¥©ŽÉÍý¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern SEMCB	semcb_table[];
+
+/*
+ *  ¥»¥Þ¥Õ¥©ŽÉÍý¥Ö¥í¥Ã¥¯€«€é¥»¥Þ¥Õ¥©ID€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#define	SEMID(p_semcb)	((ID)(((p_semcb) - semcb_table) + TMIN_SEMID))
+
+/*
+ *  ¥»¥Þ¥Õ¥©µ¡Çœ€ÎœéŽü²œ
+ */
+extern void	initialize_semaphore(void);
+
+#endif /* TOPPERS_SEMAPHORE_H */
Index: /extension/dcre/kernel/startup.c
===================================================================
--- /extension/dcre/kernel/startup.c	(revision 7)
+++ /extension/dcre/kernel/startup.c	(revision 7)
@@ -0,0 +1,210 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥«¡Œ¥Í¥ë€ÎœéŽü²œ€ÈœªÎ»œèÍý
+ */
+
+#include "kernel_impl.h"
+#include "time_event.h"
+#include <sil.h>
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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
+
+/*
+ *  ¥«¡Œ¥Í¥ëÆ°ºîŸõÂÖ¥Õ¥é¥°
+ *
+ *  ¥¹¥¿¡Œ¥È¥¢¥Ã¥×¥ë¡Œ¥Á¥ó€Ç¡€false¡Ê¡á0¡Ë€ËœéŽü²œ€µ€ì€ë€³€È€òŽüÂÔ€·€Æ
+ *  €€€ë¡¥
+ */
+bool_t	kerflg = false;
+
+/*
+ *  ¥«¡Œ¥Í¥ë€Îµ¯Æ°
+ */
+void
+sta_ker(void)
+{
+	/*
+	 *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎœéŽü²œ
+	 */
+	target_initialize();
+
+	/*
+	 *  ³Æ¥â¥ž¥å¡Œ¥ë€ÎœéŽü²œ
+	 *
+	 *  ¥¿¥€¥à¥€¥Ù¥ó¥ÈŽÉÍý¥â¥ž¥å¡Œ¥ë€ÏÂŸ€Î¥â¥ž¥å¡Œ¥ë€è€êÀè€ËœéŽü²œ
+	 *  €¹€ëÉ¬Í×€¬€¢€ë¡¥
+	 */
+	initialize_kmm();
+	initialize_tmevt();
+	initialize_object();
+
+	/*
+	 *  œéŽü²œ¥ë¡Œ¥Á¥ó€ÎŒÂ¹Ô
+	 */ 
+	call_inirtn();
+
+	/*
+	 *  ¥«¡Œ¥Í¥ëÆ°ºî€Î³«»Ï
+	 */
+	kerflg = true;
+	LOG_KER_ENTER();
+	start_dispatch();
+	assert(0);
+}
+
+#endif /* TOPPERS_sta_ker */
+
+/*
+ *  ¥«¡Œ¥Í¥ë€ÎœªÎ»
+ */
+#ifdef TOPPERS_ext_ker
+
+ER
+ext_ker(void)
+{
+	SIL_PRE_LOC;
+
+	LOG_EXT_KER_ENTER();
+
+	/*
+	 *  ³ä¹þ€ß¥í¥Ã¥¯ŸõÂÖ€Ë°Ü¹Ô
+	 */
+	SIL_LOC_INT();
+
+	/*
+	 *  ¥«¡Œ¥Í¥ëÆ°ºî€ÎœªÎ»
+	 */
+	LOG_KER_LEAVE();
+	kerflg = false;
+
+	/*
+	 *  ¥«¡Œ¥Í¥ë€ÎœªÎ»œèÍý€ÎžÆœÐ€·
+	 *
+	 *  Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€ËÀÚ€êŽ¹€š€Æ¡€exit_kernel€òžÆ€ÓœÐ€¹¡¥
+	 */
+	call_exit_kernel();
+
+	/*
+	 *  ¥³¥ó¥Ñ¥€¥é€Î·Ù¹ðÂÐºö¡Ê€³€³€ØÍè€ë€³€È€Ï€Ê€€€Ï€º¡Ë
+	 */
+	SIL_UNL_INT();
+	LOG_EXT_KER_LEAVE(E_SYS);
+	return(E_SYS);
+}
+
+/*
+ *  ¥«¡Œ¥Í¥ë€ÎœªÎ»œèÍý
+ */
+void
+exit_kernel(void)
+{
+	/*
+	 *  œªÎ»œèÍý¥ë¡Œ¥Á¥ó€ÎŒÂ¹Ô
+	 */
+	call_terrtn();
+
+	/*
+	 *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎœªÎ»œèÍý
+	 */
+	target_exit();
+	assert(0);
+}
+
+#endif /* TOPPERS_ext_ker */
+
+/*
+ *  ¥«¡Œ¥Í¥ë€Î³ä€êÉÕ€±€ë¥á¥â¥êÎÎ°è€ÎŽÉÍý
+ *
+ *  ¥á¥â¥êÎÎ°è€òÀèÆ¬€«€éœç€Ë³ä€êÅö€Æ¡€²òÊü€µ€ì€¿¥á¥â¥êÎÎ°è€òºÆÍøÍÑ€·€Ê
+ *  €€¥á¥â¥êŽÉÍý¥â¥ž¥å¡Œ¥ë¡¥
+ */
+#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: /extension/dcre/kernel/task.c
===================================================================
--- /extension/dcre/kernel/task.c	(revision 7)
+++ /extension/dcre/kernel/task.c	(revision 7)
@@ -0,0 +1,497 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  $Id$
+ */
+
+/*
+ *		¥¿¥¹¥¯ŽÉÍý¥â¥ž¥å¡Œ¥ë
+ */
+
+#include "kernel_impl.h"
+#include "wait.h"
+#include "task.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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
+
+/*
+ *  ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯
+ */
+TCB		*p_runtsk;
+
+/*
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯
+ */
+TCB		*p_schedtsk;
+
+/*
+ *  ¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á¡¿¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óµ¯Æ°Í×µá¥Õ¥é¥°
+ */
+bool_t	reqflg;
+
+/*
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ
+ */
+bool_t	ipmflg;
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ
+ */
+bool_t	disdsp;
+
+/*
+ *  ¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á²ÄÇœŸõÂÖ
+ */
+bool_t	dspflg;
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ
+ */
+QUEUE	ready_queue[TNUM_TPRI];
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ¥µ¡Œ¥Á€Î€¿€á€Î¥Ó¥Ã¥È¥Þ¥Ã¥×
+ */
+uint16_t	ready_primap;
+
+/*
+ *  »ÈÍÑ€·€Æ€€€Ê€€TCB€Î¥ê¥¹¥È
+ */
+QUEUE	free_tcb;
+
+/*
+ *  ¥¿¥¹¥¯ŽÉÍý¥â¥ž¥å¡Œ¥ë€ÎœéŽü²œ
+ */
+void
+initialize_task(void)
+{
+	uint_t	i, j;
+	TCB		*p_tcb;
+	TINIB	*p_tinib;
+
+	p_runtsk = NULL;
+	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) {
+			(void) 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 */
+
+/*
+ *  ¥Ó¥Ã¥È¥Þ¥Ã¥×¥µ¡Œ¥ÁŽØ¿ô
+ *
+ *  bitmapÆâ€Î1€Î¥Ó¥Ã¥È€ÎÆâ¡€ºÇ€â²Œ°Ì¡Ê±Š¡Ë€Î€â€Î€ò¥µ¡Œ¥Á€·¡€€œ€Î¥Ó¥Ã
+ *  ¥ÈÈÖ¹æ€òÊÖ€¹¡¥¥Ó¥Ã¥ÈÈÖ¹æ€Ï¡€ºÇ²Œ°Ì¥Ó¥Ã¥È€ò0€È€¹€ë¡¥bitmap€Ë0€ò»ØÄê
+ *  €·€Æ€Ï€Ê€é€Ê€€¡¥€³€ÎŽØ¿ô€Ç€Ï¡€bitmap€¬16¥Ó¥Ã¥È€Ç€¢€ë€³€È€ò²ŸÄê€·¡€
+ *  uint16_t·¿€È€·€Æ€€€ë¡¥
+ *
+ *  ¥Ó¥Ã¥È¥µ¡Œ¥ÁÌ¿Îá€ò»ý€Ä¥×¥í¥»¥Ã¥µ€Ç€Ï¡€¥Ó¥Ã¥È¥µ¡Œ¥ÁÌ¿Îá€ò»È€Š€è€Š€Ë
+ *  œñ€­ÄŸ€·€¿Êý€¬žúÎš€¬ÎÉ€€Ÿì¹ç€¬€¢€ë¡¥€³€Î€è€Š€ÊŸì¹ç€Ë€Ï¡€¥¿¡Œ¥²¥Ã¥È
+ *  °ÍÂžÉô€Ç¥Ó¥Ã¥È¥µ¡Œ¥ÁÌ¿Îá€ò»È€Ã€¿bitmap_search€òÄêµÁ€·¡€
+ *  OMIT_BITMAP_SEARCH€ò¥Þ¥¯¥íÄêµÁ€¹€ì€Ð€è€€¡¥€Þ€¿¡€¥Ó¥Ã¥È¥µ¡Œ¥ÁÌ¿Îá€Î
+ *  ¥µ¡Œ¥ÁÊýžþ€¬µÕ€Ê€É€ÎÍýÍ³€ÇÍ¥ÀèÅÙ€È¥Ó¥Ã¥È€È€ÎÂÐ±þ€òÊÑ¹¹€·€¿€€Ÿì¹ç€Ë
+ *  €Ï¡€PRIMAP_BIT€ò¥Þ¥¯¥íÄêµÁ€¹€ì€Ð€è€€¡¥
+ *
+ *  €Þ€¿¡€¥é¥€¥Ö¥é¥ê€Ëffs€¬€¢€ë€Ê€é¡€Œ¡€Î€è€Š€ËÄêµÁ€·€Æ¥é¥€¥Ö¥é¥êŽØ¿ô€ò
+ *  »È€Ã€¿Êý€¬žúÎš€¬ÎÉ€€²ÄÇœÀ­€â€¢€ë¡¥
+ *		#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 */
+
+/*
+ *  Í¥ÀèÅÙ¥Ó¥Ã¥È¥Þ¥Ã¥×€¬¶õ€«€Î¥Á¥§¥Ã¥¯
+ */
+Inline bool_t
+primap_empty(void)
+{
+	return(ready_primap == 0U);
+}
+
+/*
+ *  Í¥ÀèÅÙ¥Ó¥Ã¥È¥Þ¥Ã¥×€Î¥µ¡Œ¥Á
+ */
+Inline uint_t
+primap_search(void)
+{
+	return(bitmap_search(ready_primap));
+}
+
+/*
+ *  Í¥ÀèÅÙ¥Ó¥Ã¥È¥Þ¥Ã¥×€Î¥»¥Ã¥È
+ */
+Inline void
+primap_set(uint_t pri)
+{
+	ready_primap |= PRIMAP_BIT(pri);
+}
+
+/*
+ *  Í¥ÀèÅÙ¥Ó¥Ã¥È¥Þ¥Ã¥×€Î¥¯¥ê¥¢
+ */
+Inline void
+primap_clear(uint_t pri)
+{
+	ready_primap &= ~PRIMAP_BIT(pri);
+}
+
+/*
+ *  ºÇ¹âÍ¥Àèœç°Ì¥¿¥¹¥¯€Î¥µ¡Œ¥Á
+ */
+#ifdef TOPPERS_tsksched
+
+TCB *
+search_schedtsk(void)
+{
+	uint_t	schedpri;
+
+	schedpri = primap_search();
+	return((TCB *)(ready_queue[schedpri].p_next));
+}
+
+#endif /* TOPPERS_tsksched */
+
+/*
+ *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€¹€ë€Î€Ï¡€ŒÂ¹Ô€Ç€­€ë¥¿¥¹¥¯€¬€Ê€«€Ã€¿Ÿì¹ç
+ *  €È¡€p_tcb€ÎÍ¥ÀèÅÙ€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€è€ê€â¹â€€Ÿì¹ç€Ç€¢
+ *  €ë¡¥
+ */
+#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 */
+
+/*
+ *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€«€éÂŸ€ÎŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€¹€ë€Î€Ï¡€p_tcb€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€Ç
+ *  €¢€Ã€¿Ÿì¹ç€Ç€¢€ë¡¥p_tcb€ÈÆ±€žÍ¥ÀèÅÙ€Î¥¿¥¹¥¯€¬ÂŸ€Ë€¢€ëŸì¹ç€Ï¡€p_tcb
+ *  €ÎŒ¡€Î¥¿¥¹¥¯€¬ºÇ¹âÍ¥Àèœç°Ì€Ë€Ê€ë¡¥€œ€Š€Ç€Ê€€Ÿì¹ç€Ï¡€¥ì¥Ç¥£¥­¥å¡Œ€ò
+ *  ¥µ¡Œ¥Á€¹€ëÉ¬Í×€¬€¢€ë¡¥
+ */
+#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 */
+
+/*
+ *  µÙ»ßŸõÂÖ€Ø€ÎÁ«°Ü
+ */
+#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 */
+
+/*
+ *  µÙ»ßŸõÂÖ€«€éŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ø€ÎÁ«°Ü
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€ÎÊÑ¹¹
+ *
+ *  ¥¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂÖ€ÎŸì¹ç€Ë€Ï¡€¥ì¥Ç¥£¥­¥å¡Œ€ÎÃæ€Ç€Î°ÌÃÖ€òÊÑ¹¹€¹
+ *  €ë¡¥¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€Á¥­¥å¡Œ€ÎÃæ€ÇÂÔ€ÁŸõÂÖ€Ë€Ê€Ã€Æ€€€ëŸì¹ç€Ë€Ï¡€ÂÔ
+ *  €Á¥­¥å¡Œ€ÎÃæ€Ç€Î°ÌÃÖ€òÊÑ¹¹€¹€ë¡¥
+ *
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€¹€ë€Î€Ï¡€(1) p_tcb€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹
+ *  ¥¯€Ç€¢€Ã€Æ¡€€œ€ÎÍ¥ÀèÅÙ€ò²Œ€²€¿Ÿì¹ç¡€(2) p_tcb€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹
+ *  ¥¯€Ç€Ï€Ê€¯¡€ÊÑ¹¹žå€ÎÍ¥ÀèÅÙ€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€è€ê€â¹â€€
+ *  Ÿì¹ç€Ç€¢€ë¡¥(1)€ÎŸì¹ç€Ë€Ï¡€¥ì¥Ç¥£¥­¥å¡Œ€ò¥µ¡Œ¥Á€¹€ëÉ¬Í×€¬€¢€ë¡¥
+ */
+#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)) {
+		/*
+		 *  ¥¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂÖ€ÎŸì¹ç
+		 */
+		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)) {
+			/*
+			 *  ¥¿¥¹¥¯€¬¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉô
+			 *  Ê¬¡ÊWOBJCB¡Ë€ÎÂÔ€Á¥­¥å¡Œ€Ë€Ä€Ê€¬€ì€Æ€€€ëŸì¹ç
+			 */
+			wobj_change_priority(((WINFO_WOBJ *)(p_tcb->p_winfo))->p_wobjcb,
+																	p_tcb);
+		}
+	}
+	return(false);
+}
+
+#endif /* TOPPERS_tskpri */
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ€Î²óÅŸ
+ *
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€¹€ë€Î€Ï¡€ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€¬¥¿¥¹¥¯¥­
+ *  ¥å¡Œ€ÎËöÈø€Ë°ÜÆ°€·€¿Ÿì¹ç€Ç€¢€ë¡¥
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎžÆœÐ€·
+ *
+ *  ASP¥«¡Œ¥Í¥ë€Ç€Ï¡€¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óÆâ€ÇCPU¥í¥Ã¥¯ŸõÂÖ€ËÁ«°Ü€·¡€
+ *  žµ€ÎŸõÂÖ€ËÌá€µ€º€Ë¥ê¥¿¡Œ¥ó€·€¿Ÿì¹ç¡€¥«¡Œ¥Í¥ë€¬žµ€ÎŸõÂÖ€ËÌá€¹¡¥
+ */
+#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€òžÆ€ÓœÐ€¹œèÍý€Ï¡€ÁêžßºÆµ¢žÆœÐ€·€Ë€Ê€Ã€Æ
+			 *  €€€ë€¬¡€dispatch€òžÆ€ÖÁ°€Ëp_runtsk->enatex€òfalse€Ë€·€Æ
+			 *  €ª€±€Ð»ÙŸã€¬€Ê€€¡¥€œ€ÎÍýÍ³€Ë€Ä€€€Æ€Ï¡€¡ÖTOPPERS/ASP ¥«¡Œ
+			 *  ¥Í¥ë Àß·×¥á¥â¡×€ò»²ŸÈ€Î€³€È¡¥
+			 */
+			dispatch();
+		}
+	} while (p_runtsk->texptn != 0U);
+	p_runtsk->enatex = true;
+}
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€Îµ¯Æ°
+ */
+#ifndef OMIT_CALLTEX
+
+void
+calltex(void)
+{
+	if (p_runtsk->enatex && p_runtsk->texptn != 0U && ipmflg) {
+		call_texrtn();
+	}
+}
+
+#endif /* OMIT_CALLTEX */
+#endif /* TOPPERS_tsktex */
Index: /extension/dcre/kernel/task.h
===================================================================
--- /extension/dcre/kernel/task.h	(revision 7)
+++ /extension/dcre/kernel/task.h	(revision 7)
@@ -0,0 +1,488 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  $Id$
+ */
+
+/*
+ *		¥¿¥¹¥¯ŽÉÍý¥â¥ž¥å¡Œ¥ë
+ */
+
+#ifndef TOPPERS_TASK_H
+#define TOPPERS_TASK_H
+
+#include <queue.h>
+#include "time_event.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#ifndef LOG_TSKSTAT
+#define LOG_TSKSTAT(p_tcb)
+#endif /* LOG_TSKSTAT */
+
+/*
+ *  ¥¿¥¹¥¯Í¥ÀèÅÙ€ÎÆâÉôÉœžœ¡Š³°ÉôÉœžœÊÑŽ¹¥Þ¥¯¥í
+ */
+#define INT_PRIORITY(x)		((uint_t)((x) - TMIN_TPRI))
+#define EXT_TSKPRI(x)		((PRI)(x) + TMIN_TPRI)
+
+/*
+ *  ¥¿¥¹¥¯ŸõÂÖ€ÎÆâÉôÉœžœ
+ *
+ *  TCBÃæ€Î¥¿¥¹¥¯ŸõÂÖ€Ç€Ï¡€ŒÂ¹ÔŸõÂÖ¡ÊRUNNING¡Ë€ÈŒÂ¹Ô²ÄÇœŸõÂÖ¡ÊREADY¡Ë
+ *  €Ï¶èÊÌ€·€Ê€€¡¥ÎŸŸõÂÖ€òÁíŸÎ€·€Æ¡€ŒÂ¹Ô€Ç€­€ëŸõÂÖ¡ÊRUNNABLE¡Ë€ÈžÆ€Ö¡¥
+ *  ÆóœÅÂÔ€ÁŸõÂÖ€Ï¡€(TS_WAITING | TS_SUSPENDED)€ÇÉœ€¹¡¥TS_WAIT_???€ÏÂÔ
+ *  €ÁÍ×°ø€òÉœ€·¡€ÂÔ€ÁŸõÂÖ¡ÊÆóœÅÂÔ€ÁŸõÂÖ€òŽÞ€à¡Ë€ÎŸì¹ç€Ë€Î€ßÀßÄê€¹€ë¡¥
+ */
+#define TS_DORMANT		0x00U			/* µÙ»ßŸõÂÖ */
+#define TS_RUNNABLE		0x01U			/* ŒÂ¹Ô€Ç€­€ëŸõÂÖ */
+#define TS_WAITING		0x02U			/* ÂÔ€ÁŸõÂÖ */
+#define TS_SUSPENDED	0x04U			/* ¶¯À©ÂÔ€ÁŸõÂÖ */
+
+#define TS_WAIT_DLY		(0x00U << 3)	/* »þŽÖ·Ð²áÂÔ€Á */
+#define TS_WAIT_SLP		(0x01U << 3)	/* µ¯Ÿ²ÂÔ€Á */
+#define TS_WAIT_RDTQ	(0x02U << 3)	/* ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TS_WAIT_RPDQ	(0x03U << 3)	/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TS_WAIT_SEM		(0x04U << 3)	/* ¥»¥Þ¥Õ¥©»ñž»€Î³ÍÆÀÂÔ€Á */
+#define TS_WAIT_FLG		(0x05U << 3)	/* ¥€¥Ù¥ó¥È¥Õ¥é¥°ÂÔ€Á */
+#define TS_WAIT_SDTQ	(0x06U << 3)	/* ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®ÂÔ€Á */
+#define TS_WAIT_SPDQ	(0x07U << 3)	/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®ÂÔ€Á */
+#define TS_WAIT_MBX		(0x08U << 3)	/* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TS_WAIT_MPF		(0x09U << 3)	/* žÇÄêÄ¹¥á¥â¥ê¥Ö¥í¥Ã¥¯€Î³ÍÆÀÂÔ€Á */
+
+/*
+ *  ¥¿¥¹¥¯ŸõÂÖÈœÊÌ¥Þ¥¯¥í
+ *
+ *  TSTAT_DORMANT€Ï¥¿¥¹¥¯€¬µÙ»ßŸõÂÖ€Ç€¢€ë€«€É€Š€«€ò¡€TSTAT_RUNNABLE€Ï
+ *  ¥¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ç€¢€ë€«€É€Š€«€òÈœÊÌ€¹€ë¡¥TSTAT_WAITING€ÏÂÔ
+ *  €ÁŸõÂÖ€ÈÆóœÅÂÔ€ÁŸõÂÖ€Î€€€º€ì€«€Ç€¢€ë€«€É€Š€«€ò¡€TSTAT_SUSPENDED€Ï
+ *  ¶¯À©ÂÔ€ÁŸõÂÖ€ÈÆóœÅÂÔ€ÁŸõÂÖ€Î€€€º€ì€«€Ç€¢€ë€«€É€Š€«€òÈœÊÌ€¹€ë¡¥
+ */
+#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)
+
+/*
+ *  ¥¿¥¹¥¯ÂÔ€ÁÍ×°øÈœÊÌ¥Þ¥¯¥í
+ *
+ *  TSTAT_WAIT_SLP€Ï¥¿¥¹¥¯€¬µ¯Ÿ²ÂÔ€Á€Ç€¢€ë€«€É€Š€«€ò¡€TSTAT_WAIT_WOBJ
+ *  €Ï¥¿¥¹¥¯€¬Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ËÂÐ€¹€ëÂÔ€Á€Ç€¢€ë€«¡ÊžÀ€€Ž¹€š€ë€È¡€
+ *  Æ±ŽüÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€Á¥­¥å¡Œ€Ë€Ä€Ê€¬€ì€Æ€€€ë€«¡Ë€É€Š€«€òÈœÊÌ€¹
+ *  €ë¡¥€Þ€¿¡€TSTAT_WAIT_WOBJCB€Ï¥¿¥¹¥¯€¬Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý
+ *  ¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬¡ÊWOBJCB¡Ë€ÎÂÔ€Á¥­¥å¡Œ€Ë€Ä€Ê€¬€ì€Æ€€€ë€«€É€Š€«€ò
+ *  ÈœÊÌ€¹€ë¡¥
+ *
+ *  TSTAT_WAIT_SLP€Ï¡€Ç€°Õ€Î¥¿¥¹¥¯ŸõÂÖ€ÎÃæ€«€é¡€¥¿¥¹¥¯€¬µ¯Ÿ²ÂÔ€Á€Ç€¢€ë
+ *  €³€È€òÈœÊÌ€Ç€­€ë¡¥€¹€Ê€ï€Á¡€TSTAT_WAITING€Ë€è€êÂÔ€ÁŸõÂÖ€Ç€¢€ë€³€È€ò
+ *  ÈœÊÌ€»€º€Ë¡€TSTAT_SLP€À€±€òÍÑ€€€Æµ¯Ÿ²ÂÔ€ÁŸõÂÖ€Ç€¢€ë€³€È€òÈœÊÌ€Ç€­€ë¡¥
+ *  €³€ì€òžúÎšÅª€ËŒÂžœ€¹€ë€¿€á€Ë¡€TS_WAIT_SLP€ÎÃÍ€ò¡€(0x00U << 3)€Ç€Ï€Ê
+ *  €¯(0x01U << 3)€È€·€Æ€€€ë¡¥€œ€Î€¿€á¡€¥¿¥¹¥¯€¬»þŽÖ·Ð²áÂÔ€ÁŸõÂÖ€Ç€¢€ë
+ *  €³€È€òÈœÊÌ€¹€ë€¿€á€ÎTSTAT_WAIT_DLY€ò¡€TSTAT_WAIT_SLP€ÈÆ±ÍÍ€ÎÊýË¡€Ç
+ *  ŒÂžœ€¹€ë€³€È€Ï€Ç€­€Ê€€¡¥
+ */
+#define TS_WAIT_MASK	(0x0fU << 3)	/* ÂÔ€ÁÍ×°ø€ÎŒèœÐ€·¥Þ¥¹¥¯ */
+
+#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)
+
+/*
+ *  ÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯¡ÊWINFO¡Ë€ÎÄêµÁ
+ *
+ *  ¥¿¥¹¥¯€¬ÂÔ€ÁŸõÂÖ€ÎŽÖ€Ï¡€TCB€ª€è€Ó€œ€Îp_winfo€Ç»Ø€µ€ì€ëWINFO€òŒ¡€Î
+ *  €è€Š€ËÀßÄê€·€Ê€±€ì€Ð€Ê€é€Ê€€¡¥
+ *
+ *  (a) TCB€Î¥¿¥¹¥¯ŸõÂÖ€òÂÔ€ÁŸõÂÖ¡ÊTS_WAITING¡Ë€Ë€¹€ë¡¥€œ€ÎºÝ€Ë¡€ÂÔ€Á
+ *  Í×°ø¡ÊTS_WAIT_???¡Ë€âÀßÄê€¹€ë¡¥
+ *
+ *  (b) ¥¿¥€¥à¥¢¥Š¥È€òŽÆ»ë€¹€ë€¿€á€Ë¡€¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯€òÅÐÏ¿€¹€ë¡¥
+ *  ÅÐÏ¿€¹€ë¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯€Ï¡€ÂÔ€Á€ËÆþ€ë¥µ¡Œ¥Ó¥¹¥³¡Œ¥ëœèÍýŽØ¿ô
+ *  €Î¥í¡Œ¥«¥ëÊÑ¿ô€È€·€Æ³ÎÊÝ€·¡€€œ€ì€Ø€Î¥Ý¥€¥ó¥¿€òWINFO€Îp_tmevtb€Ëµ­
+ *  ²±€¹€ë¡¥¥¿¥€¥à¥¢¥Š¥È€ÎŽÆ»ë€¬É¬Í×€Ê€€Ÿì¹ç¡Ê±Êµ×ÂÔ€Á€ÎŸì¹ç¡Ë€Ë€Ï¡€
+ *  p_tmevtb€òNULL€Ë€¹€ë¡¥
+ *
+ *  Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ËÂÐ€¹€ëÂÔ€ÁŸõÂÖ€ÎŸì¹ç€Ë€Ï¡€Éžœà€ÎWINFO€Ë
+ *  p_wobjcb¥Õ¥£¡Œ¥ë¥É€òÄÉ²Ã€·€¿¹œÂ€ÂÎ¡ÊWINFO_WOBJ¡€wait.h€ÇÄêµÁ¡Ë€ò»È
+ *  €Š¡¥€Þ€¿¡€°Ê²Œ€Î(c)¡Á(e)€ÎÀßÄê€ò¹Ô€ŠÉ¬Í×€¬€¢€ë¡¥Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§
+ *  ¥¯¥È€ËŽØ·ž€·€Ê€€ÂÔ€Á¡Êµ¯Ÿ²ÂÔ€Á¡€»þŽÖ·Ð²áÂÔ€Á¡Ë€ÎŸì¹ç€Ë€Ï¡€(c)¡Á(e)
+ *  €ÏÉ¬Í×€Ê€€¡¥
+ *
+ *  (c) TCB€òÂÔ€ÁÂÐŸÝ€ÎÆ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€Á¥­¥å¡Œ€Ë€Ä€Ê€°¡¥ÂÔ
+ *  €Á¥­¥å¡Œ€Ë€Ä€Ê€°€¿€á€Ë¡€task_queue€ò»È€Š¡¥
+ *
+ *  (d) ÂÔ€ÁÂÐŸÝ€ÎÆ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿€ò¡€
+ *  WINFO_WOBJ€Îp_wobjcb€Ëµ­²±€¹€ë¡¥
+ *
+ *  (e) ÂÔ€ÁÂÐŸÝ€ÎÆ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€Ë°ÍÂž€·€Æµ­²±€¹€ë€³€È€¬É¬Í×€Ê
+ *  ŸðÊó€¬€¢€ëŸì¹ç€Ë€Ï¡€WINFO_WOBJ€ËÉ¬Í×€ÊŸðÊó€Î€¿€á€Î¥Õ¥£¡Œ¥ë¥É€òÄÉ²Ã
+ *  €·€¿¹œÂ€ÂÎ€òÄêµÁ€·¡€WINFO_WOBJ€ÎÂå€ï€ê€ËÍÑ€€€ë¡¥
+ *
+ *  ÂÔ€ÁŸõÂÖ€ò²òœü€¹€ëºÝ€Ë€Ï¡€ÂÔ€Á²òœü€·€¿¥¿¥¹¥¯€ËÂÐ€¹€ëÊÖÃÍ€òWINFO€Î
+ *  wercd€ËÀßÄê€¹€ë¡¥wercd€¬É¬Í×€Ê€Î€ÏÂÔ€Á²òœü°Ê¹ß€Ç€¢€ë€Î€ËÂÐ€·€Æ¡€
+ *  p_tmevtb€ÏÂÔ€Á²òœüžå€ÏÉ¬Í×€Ê€€€¿€á¡€¥á¥â¥êÀáÌó€Î€¿€á€Ë¶ŠÍÑÂÎ€ò»È€Ã
+ *  €Æ€€€ë¡¥€œ€Î€¿€á¡€wercd€Ø¥š¥é¡Œ¥³¡Œ¥É€òÀßÄê€¹€ë€Î€Ï¡€¥¿¥€¥à¥€¥Ù¥ó¥È
+ *  ¥Ö¥í¥Ã¥¯€òÅÐÏ¿²òœü€·€¿žå€Ë€·€Ê€±€ì€Ð€Ê€é€Ê€€¡¥
+ */
+typedef union waiting_information {
+	ER		wercd;			/* ÂÔ€Á²òœü»þ€Î¥š¥é¡Œ¥³¡Œ¥É */
+	TMEVTB	*p_tmevtb;		/* ÂÔ€ÁŸõÂÖÍÑ€Î¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯ */
+} WINFO;
+
+/*
+ *  ¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯
+ *
+ *  ¥¿¥¹¥¯€ËŽØ€¹€ëŸðÊó€ò¡€ÃÍ€¬ÊÑ€ï€é€Ê€€€¿€á€ËROM€ËÃÖ€±€ëÉôÊ¬¡Ê¥¿¥¹¥¯
+ *  œéŽü²œ¥Ö¥í¥Ã¥¯¡Ë€È¡€ÃÍ€¬ÊÑ²œ€¹€ë€¿€á€ËRAM€ËÃÖ€«€Ê€±€ì€Ð€Ê€é€Ê€€Éô
+ *  Ê¬¡Ê¥¿¥¹¥¯ŽÉÍý¥Ö¥í¥Ã¥¯¡€TCB¡Ë€ËÊ¬Î¥€·¡€TCBÆâ€ËÂÐ±þ€¹€ë¥¿¥¹¥¯œéŽü²œ
+ *  ¥Ö¥í¥Ã¥¯€ò»Ø€¹¥Ý¥€¥ó¥¿€òÆþ€ì€ë¡¥¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯Æâ€ËÂÐ±þ€¹€ë
+ *  TCB€ò»Ø€¹¥Ý¥€¥ó¥¿€òÆþ€ì€ëÊýË¡€ÎÊý€¬¡€RAM€ÎÀáÌó€ÎŽÑÅÀ€«€é€ÏËŸ€Þ€·€€
+ *  €¬¡€ŒÂ¹ÔžúÎš€¬°­€¯€Ê€ë€¿€á€ËºÎÍÑ€·€Æ€€€Ê€€¡¥ÂŸ€Î¥ª¥Ö¥ž¥§¥¯¥È€Ë€Ä€€
+ *  €Æ€âÆ±ÍÍ€Ë°·€Š¡¥
+ *
+ *  ¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯€Ë€Ï¡€DEF_TEX€ÇÄêµÁ€µ€ì€ë¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á
+ *  ¥ó€ËŽØ€¹€ëŸðÊó€âŽÞ€à¡¥
+ */
+typedef struct task_initialization_block {
+	ATR			tskatr;			/* ¥¿¥¹¥¯Â°À­ */
+	intptr_t	exinf;			/* ¥¿¥¹¥¯€Î³ÈÄ¥ŸðÊó */
+	TASK		task;			/* ¥¿¥¹¥¯€Îµ¯Æ°ÈÖÃÏ */
+	uint_t		ipriority;		/* ¥¿¥¹¥¯€Îµ¯Æ°»þÍ¥ÀèÅÙ¡ÊÆâÉôÉœžœ¡Ë */
+
+#ifdef USE_TSKINICTXB
+	TSKINICTXB	tskinictxb;		/* ¥¿¥¹¥¯œéŽü²œ¥³¥ó¥Æ¥­¥¹¥È¥Ö¥í¥Ã¥¯ */
+#else /* USE_TSKINICTXB */
+	SIZE		stksz;			/* ¥¹¥¿¥Ã¥¯ÎÎ°è€Î¥µ¥€¥º¡ÊŽÝ€á€¿ÃÍ¡Ë */
+	void		*stk;			/* ¥¹¥¿¥Ã¥¯ÎÎ°è€ÎÀèÆ¬ÈÖÃÏ */
+#endif /* USE_TSKINICTXB */
+
+	ATR			texatr;			/* ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óÂ°À­ */
+	TEXRTN		texrtn;			/* ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€Îµ¯Æ°ÈÖÃÏ */
+} TINIB;
+
+/*
+ *  TCBÃæ€Î¥Õ¥£¡Œ¥ë¥É€Î¥Ó¥Ã¥ÈÉý€ÎÄêµÁ
+ *
+ *  ¥×¥í¥»¥Ã¥µ€Ë€è€Ã€Æ€Ï¡€TCBÃæ€Î¥Õ¥£¡Œ¥ë¥É€Î¥Ó¥Ã¥ÈÉý€Ç¥á¥â¥ê»ÈÍÑÎÌ€È
+ *  À­Çœ€¬¥È¥ì¡Œ¥É¥ª¥Õ€Ë€Ê€ë€¿€á¡€¥¿¡Œ¥²¥Ã¥È°ÍÂž€Ë¥Õ¥£¡Œ¥ë¥É€Î¥Ó¥Ã¥ÈÉý
+ *  €òÊÑ¹¹€¹€ë€³€È€òµö€·€Æ€€€ë¡¥
+ */
+#ifndef TBIT_TCB_PRIORITY
+#define	TBIT_TCB_PRIORITY		8		/* priority¥Õ¥£¡Œ¥ë¥É€Î¥Ó¥Ã¥ÈÉý */
+#endif /* TBIT_TCB_PRIORITY */
+
+/*
+ *  ¥¿¥¹¥¯ŽÉÍý¥Ö¥í¥Ã¥¯¡ÊTCB¡Ë
+ *
+ *  ASP¥«¡Œ¥Í¥ë€Ç€Ï¡€¥¿¥¹¥¯€Îµ¯Æ°Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô€ÎºÇÂçÃÍ¡ÊTMAX_ACTCNT¡Ë
+ *  €Èµ¯Ÿ²Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô€ÎºÇÂçÃÍ¡ÊTMAX_WUPCNT¡Ë€Ï1€ËžÇÄê€µ€ì€Æ€€€ë
+ *  €¿€á¡€¥­¥å¡Œ¥€¥ó¥°€µ€ì€Æ€€€ë€«€É€Š€«€Î¿¿µ¶ÃÍ€ÇÉœžœ€¹€ë€³€È€¬€Ç€­€ë¡¥
+ *  €Þ€¿¡€¶¯À©ÂÔ€ÁÍ×µá¥Í¥¹¥È¿ô€ÎºÇÂçÃÍ¡ÊTMAX_SUSCNT¡Ë€¬1€ËžÇÄê€µ€ì€Æ€€
+ *  €ë€Î€Ç¡€¶¯À©ÂÔ€ÁÍ×µá¥Í¥¹¥È¿ô¡Êsuscnt¡Ë€ÏÉ¬Í×€Ê€€¡¥
+ *
+ *  TCB€Î€€€¯€Ä€«€Î¥Õ¥£¡Œ¥ë¥É€Ï¡€ÆÃÄê€Î¥¿¥¹¥¯ŸõÂÖ€Ç€Î€ßÍ­žú€ÊÃÍ€òÊÝ»ý€·¡€
+ *  €œ€ì°Ê³°€ÎŸì¹ç€ÏÃÍ€¬ÊÝŸÚ€µ€ì€Ê€€¡Ê€è€Ã€Æ¡€»²ŸÈ€·€Æ€Ï€Ê€é€Ê€€¡Ë¡¥³Æ
+ *  ¥Õ¥£¡Œ¥ë¥É€¬Í­žú€ÊÃÍ€òÊÝ»ý€¹€ëŸò·ï€ÏŒ¡€ÎÄÌ€ê¡¥
+ *
+ *  ¡ŠœéŽü²œžå€ÏŸï€ËÍ­žú¡§
+ *  		p_tinib¡€tstat¡€actque
+ *  ¡ŠµÙ»ßŸõÂÖ°Ê³°€ÇÍ­žú¡ÊµÙ»ßŸõÂÖ€Ç€ÏœéŽüÃÍ€Ë€Ê€Ã€Æ€€€ë¡Ë¡§
+ *  		priority¡€wupque¡€enatex¡€texptn
+ *  ¡ŠÂÔ€ÁŸõÂÖ¡ÊÆóœÅÂÔ€ÁŸõÂÖ€òŽÞ€à¡Ë€ÇÍ­žú¡§
+ *  		p_winfo
+ *  ¡ŠŒÂ¹Ô€Ç€­€ëŸõÂÖ€ÈÆ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ËÂÐ€¹€ëÂÔ€ÁŸõÂÖ€ÇÍ­žú¡§
+ *  		task_queue
+ *  ¡ŠŒÂ¹Ô²ÄÇœŸõÂÖ¡€ÂÔ€ÁŸõÂÖ¡€¶¯À©ÂÔ€ÁŸõÂÖ¡€ÆóœÅÂÔ€ÁŸõÂÖ€ÇÍ­žú¡§
+ *  		tskctxb
+ */
+typedef struct task_control_block {
+	QUEUE			task_queue;		/* ¥¿¥¹¥¯¥­¥å¡Œ */
+	const TINIB		*p_tinib;		/* œéŽü²œ¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿ */
+
+#ifdef UINT8_MAX
+	uint8_t			tstat;			/* ¥¿¥¹¥¯ŸõÂÖ¡ÊÆâÉôÉœžœ¡Ë*/
+#else /* UINT8_MAX */
+	BIT_FIELD_UINT	tstat : 8;		/* ¥¿¥¹¥¯ŸõÂÖ¡ÊÆâÉôÉœžœ¡Ë*/
+#endif /* UINT8_MAX */
+#if defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8)
+	uint8_t			priority;		/* žœºß€ÎÍ¥ÀèÅÙ¡ÊÆâÉôÉœžœ¡Ë*/
+#else /* defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8) */
+	BIT_FIELD_UINT	priority : TBIT_TCB_PRIORITY;
+									/* žœºß€ÎÍ¥ÀèÅÙ¡ÊÆâÉôÉœžœ¡Ë*/
+#endif /* defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8) */
+	BIT_FIELD_BOOL	actque : 1;		/* µ¯Æ°Í×µá¥­¥å¡Œ¥€¥ó¥° */
+	BIT_FIELD_BOOL	wupque : 1;		/* µ¯Ÿ²Í×µá¥­¥å¡Œ¥€¥ó¥° */
+	BIT_FIELD_BOOL	enatex : 1;		/* ¥¿¥¹¥¯Îã³°œèÍýµö²ÄŸõÂÖ */
+
+	TEXPTN			texptn;			/* ÊÝÎ±Îã³°Í×°ø */
+	WINFO			*p_winfo;		/* ÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿ */
+	TSKCTXB			tskctxb;		/* ¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È¥Ö¥í¥Ã¥¯ */
+} TCB;
+
+/*
+ *  ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯
+ *
+ *  ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯¡Ê¡á¥×¥í¥»¥Ã¥µ€¬¥³¥ó¥Æ¥­¥¹¥È€ò»ý€Ã€Æ€€€ë¥¿¥¹¥¯¡Ë€Î
+ *  TCB€ò»Ø€¹¥Ý¥€¥ó¥¿¡¥ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€¬€Ê€€Ÿì¹ç€ÏNULL€Ë€¹€ë¡¥
+ *
+ *  ¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎœèÍýÃæ€Ç¡€Œ«¥¿¥¹¥¯¡Ê¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€òžÆ€ÓœÐ€·€¿¥¿¥¹
+ *  ¥¯¡Ë€ËŽØ€¹€ëŸðÊó€ò»²ŸÈ€¹€ëŸì¹ç€Ïp_runtsk€ò»È€Š¡¥p_runtsk€òœñ€­Ž¹€š
+ *  €ë€Î€Ï¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã¡Ê€ÈœéŽü²œœèÍý¡Ë€Î€ß€Ç€¢€ë¡¥
+ */
+extern TCB	*p_runtsk;
+
+/*
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯
+ *
+ *  ŒÂ¹Ô€Ç€­€ë¥¿¥¹¥¯€ÎÃæ€ÇºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ÎTCB€ò»Ø€¹¥Ý¥€¥ó¥¿¡¥ŒÂ
+ *  ¹Ô€Ç€­€ë¥¿¥¹¥¯€¬€Ê€€Ÿì¹ç€ÏNULL€Ë€¹€ë¡¥
+ *
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ€Ê€É¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬ÊÝÎ±€µ€ì€Æ€€€ëŽÖ€Ïp_runtsk
+ *  €È°ìÃ×€·€Æ€€€ë€È€ÏžÂ€é€Ê€€¡¥
+ */
+extern TCB	*p_schedtsk;
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¡¿¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óµ¯Æ°Í×µá¥Õ¥é¥°
+ *
+ *  ³ä¹þ€ß¥Ï¥ó¥É¥é¡¿CPUÎã³°¥Ï¥ó¥É¥é€ÎœÐžýœèÍý€Ë¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á€Þ€¿€Ï
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€Îµ¯Æ°€òÍ×µá€¹€ë€³€È€òŒš€¹¥Õ¥é¥°¡¥
+ */
+extern bool_t	reqflg;
+
+/*
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ
+ *
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ€Ç€¢€ë€³€È€òŒš€¹¥Õ¥é¥°¡¥
+ */
+extern bool_t	ipmflg;
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ
+ *
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ€Ç€¢€ë€³€È€òŒš€¹¥Õ¥é¥°¡¥
+ */
+extern bool_t	disdsp;
+
+/*
+ *  ¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á²ÄÇœŸõÂÖ
+ *
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ€Ç€¢€ê¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ€Ç€¢€ë¡Ê¥Ç¥£
+ *  ¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ€Ç€Ê€€¡Ë€³€È€òŒš€¹¥Õ¥é¥°¡¥
+ */
+extern bool_t	dspflg;
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ
+ *
+ *  ¥ì¥Ç¥£¥­¥å¡Œ€Ï¡€ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Î¥¿¥¹¥¯€òŽÉÍý€¹€ë€¿€á€Î¥­¥å¡Œ€Ç€¢€ë¡¥
+ *  ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€âŽÉÍý€·€Æ€€€ë€¿€á¡€¥ì¥Ç¥£¡ÊŒÂ¹Ô²ÄÇœ¡Ë¥­¥å¡Œ€È€€€Š
+ *  ÌŸŸÎ€ÏÀµ³Î€Ç€Ï€Ê€€€¬¡€¥ì¥Ç¥£¥­¥å¡Œ€È€€€ŠÌŸŸÎ€¬ÄêÃå€·€Æ€€€ë€¿€á¡€€³
+ *  €ÎÌŸŸÎ€ÇžÆ€Ö€³€È€Ë€¹€ë¡¥
+ *
+ *  ¥ì¥Ç¥£¥­¥å¡Œ€Ï¡€Í¥ÀèÅÙ€Ž€È€Î¥¿¥¹¥¯¥­¥å¡Œ€Ç¹œÀ®€µ€ì€Æ€€€ë¡¥¥¿¥¹¥¯€Î
+ *  TCB€Ï¡€³ºÅö€¹€ëÍ¥ÀèÅÙ€Î¥­¥å¡Œ€ËÅÐÏ¿€µ€ì€ë¡¥
+ */
+extern QUEUE	ready_queue[TNUM_TPRI];
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ¥µ¡Œ¥Á€Î€¿€á€Î¥Ó¥Ã¥È¥Þ¥Ã¥×
+ *
+ *  ¥ì¥Ç¥£¥­¥å¡Œ€Î¥µ¡Œ¥Á€òžúÎš€è€¯¹Ô€Š€¿€á€Ë¡€Í¥ÀèÅÙ€Ž€È€Î¥¿¥¹¥¯¥­¥å¡Œ
+ *  €Ë¥¿¥¹¥¯€¬Æþ€Ã€Æ€€€ë€«€É€Š€«€òŒš€¹¥Ó¥Ã¥È¥Þ¥Ã¥×€òÍÑ°Õ€·€Æ€€€ë¡¥¥Ó¥Ã
+ *  ¥È¥Þ¥Ã¥×€ò»È€Š€³€È€Ç¡€¥á¥â¥ê¥¢¥¯¥»¥¹€Î²ó¿ô€òžº€é€¹€³€È€¬€Ç€­€ë€¬¡€
+ *  ¥Ó¥Ã¥ÈÁàºîÌ¿Îá€¬œŒŒÂ€·€Æ€€€Ê€€¥×¥í¥»¥Ã¥µ€Ç¡€Í¥ÀèÅÙ€ÎÃÊ³¬¿ô€¬Ÿ¯€Ê€€
+ *  Ÿì¹ç€Ë€Ï¡€¥Ó¥Ã¥È¥Þ¥Ã¥×Áàºî€Î¥ª¡Œ¥Ð¡Œ¥Ø¥Ã¥É€Î€¿€á€Ë¡€µÕ€ËžúÎš€¬Íî€Á
+ *  €ë²ÄÇœÀ­€â€¢€ë¡¥
+ *
+ *  Í¥ÀèÅÙ€¬16ÃÊ³¬€Ç€¢€ë€³€È€ò²ŸÄê€·€Æ€€€ë€¿€á¡€uint16_t·¿€È€·€Æ€€€ë¡¥
+ */
+extern uint16_t	ready_primap;
+
+/*
+ *  »ÈÍÑ€·€Æ€€€Ê€€TCB€Î¥ê¥¹¥È
+ */
+extern QUEUE	free_tcb;
+
+/*
+ *  ¥¿¥¹¥¯ID€ÎºÇÂçÃÍ¡Êkernel_cfg.c¡Ë
+ */
+extern const ID	tmax_tskid;
+extern const ID	tmax_stskid;
+
+/*
+ *  ¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern const TINIB	tinib_table[];
+extern TINIB		atinib_table[];
+
+/*
+ *  ¥¿¥¹¥¯ÀžÀ®œçœø¥Æ¡Œ¥Ö¥ë¡Êkernel_cfg.c¡Ë
+ */
+extern const ID	torder_table[];
+
+/*
+ *  TCB€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern TCB	tcb_table[];
+
+/*
+ *  ¥¿¥¹¥¯€Î¿ô
+ */
+#define tnum_tsk	((uint_t)(tmax_tskid - TMIN_TSKID + 1))
+#define tnum_stsk	((uint_t)(tmax_stskid - TMIN_TSKID + 1))
+
+/*
+ *  ¥¿¥¹¥¯ID€«€éTCB€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#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€«€é¥¿¥¹¥¯ID€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#define	TSKID(p_tcb)	((ID)(((p_tcb) - tcb_table) + TMIN_TSKID))
+
+/*
+ *  ¥¿¥¹¥¯ŽÉÍý¥â¥ž¥å¡Œ¥ë€ÎœéŽü²œ
+ */
+extern void	initialize_task(void);
+
+/*
+ *  ºÇ¹âÍ¥Àèœç°Ì¥¿¥¹¥¯€Î¥µ¡Œ¥Á
+ *
+ *  ¥ì¥Ç¥£¥­¥å¡ŒÃæ€ÎºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¥µ¡Œ¥Á€·¡€€œ€ÎTCB€Ø€Î¥Ý¥€¥ó¥¿
+ *  €òÊÖ€¹¡¥¥ì¥Ç¥£¥­¥å¡Œ€¬¶õ€ÎŸì¹ç€Ë€Ï¡€€³€ÎŽØ¿ô€òžÆ€ÓœÐ€·€Æ€Ï€Ê€é€Ê€€¡¥
+ */
+extern TCB	*search_schedtsk(void);
+
+/*
+ *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ò¥ì¥Ç¥£¥­¥å¡Œ€ËÁÞÆþ€¹€ë¡¥¥ì¥Ç¥£¥­¥å¡Œ€ËÁÞÆþ
+ *  €·€¿¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€¬¡€ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€è€ê€â¹â€€Ÿì¹ç€Ï¡€
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€·¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ€Ç€¢€ì€Ðtrue€òÊÖ
+ *  €¹¡¥€œ€Š€Ç€Ê€€Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥
+ */
+extern bool_t	make_runnable(TCB *p_tcb);
+
+/*
+ *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€«€éÂŸ€ÎŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ò¥ì¥Ç¥£¥­¥å¡Œ€«€éºïœü€¹€ë¡¥p_tcb€Ç»ØÄê€·€¿
+ *  ¥¿¥¹¥¯€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€Ç€¢€Ã€¿Ÿì¹ç€Ë€Ï¡€ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯
+ *  €òÀßÄê€·€Ê€ª€·¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ€Ç€¢€ì€Ðtrue€òÊÖ€¹¡¥€œ€Š€Ç€Ê€€
+ *  Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥¥¿¥¹¥¯€ÎŸõÂÖ€Ï¹¹¿·€·€Ê€€¡¥
+ */
+extern bool_t	make_non_runnable(TCB *p_tcb);
+
+/*
+ *  µÙ»ßŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ÎŸõÂÖ€òµÙ»ßŸõÂÖ€È€¹€ë¡¥€Þ€¿¡€¥¿¥¹¥¯€Îµ¯Æ°
+ *  »þ€ËœéŽü²œ€¹€Ù€­ÊÑ¿ô€ÎœéŽü²œ€È¡€¥¿¥¹¥¯µ¯Æ°€Î€¿€á€Î¥³¥ó¥Æ¥­¥¹¥È€òÀß
+ *  Äê€¹€ë¡¥
+ */
+extern void	make_dormant(TCB *p_tcb);
+
+/*
+ *  µÙ»ßŸõÂÖ€«€éŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ÎŸõÂÖ€òµÙ»ßŸõÂÖ€«€éŒÂ¹Ô€Ç€­€ëŸõÂÖ€È€¹€ë¡¥
+ *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€ËÁ«°Ü€·€¿¥¿¥¹¥¯€Ø€Î¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬É¬Í×€ÊŸì¹ç€Ïtrue¡€
+ *  €œ€Š€Ç€Ê€€Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥
+ */
+extern bool_t	make_active(TCB *p_tcb);
+
+/*
+ *  ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€ÎÊÑ¹¹
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€ònewpri¡ÊÆâÉôÉœžœ¡Ë€ËÊÑ¹¹€¹€ë¡¥€Þ€¿¡€
+ *  É¬Í×€ÊŸì¹ç€Ë€ÏºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€·¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ€Ç
+ *  €¢€ì€Ðtrue€òÊÖ€¹¡¥€œ€Š€Ç€Ê€€Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥
+ */
+extern bool_t	change_priority(TCB *p_tcb, uint_t newpri);
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ€Î²óÅŸ
+ *
+ *  ¥ì¥Ç¥£¥­¥å¡ŒÃæ€Î¡€pri€Ç»ØÄê€µ€ì€ëÍ¥ÀèÅÙ€Î¥¿¥¹¥¯¥­¥å¡Œ€ò²óÅŸ€µ€»€ë¡¥
+ *  €Þ€¿¡€É¬Í×€ÊŸì¹ç€Ë€ÏºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€òÊÑ¹¹€·¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬ÊÝ
+ *  Î±€µ€ì€Æ€€€Ê€±€ì€Ðtrue€òÊÖ€¹¡¥€œ€Š€Ç€Ê€€Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥
+ */
+extern bool_t	rotate_ready_queue(uint_t pri);
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎžÆœÐ€·
+ *
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€òžÆ€ÓœÐ€¹¡¥žÆ€ÓœÐ€¹Á°€Ë¡€ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€Î
+ *  ÊÝÎ±Îã³°Í×°ø€ò¥¯¥ê¥¢€·¡€¥¿¥¹¥¯Îã³°œèÍý¶Ø»ßŸõÂÖ€Ë€·¡€CPU¥í¥Ã¥¯€ò²ò
+ *  œü€¹€ë¡¥
+ *
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€«€éÌá€ë€È¡€€Þ€ºCPU¥í¥Ã¥¯ŸõÂÖ€ËÌá€·¡€€œ€ÎŽÖ
+ *  €ËÊÝÎ±Îã³°Í×°ø€¬0€Ç€Ê€¯€Ê€Ã€Æ€€€ì€Ð¡€ºÆ€Ó¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ò
+ *  žÆ€ÓœÐ€¹¡¥ÊÝÎ±Îã³°Í×°ø€¬0€ÎŸì¹ç€Ë€Ï¡€Îã³°œèÍýµö²ÄŸõÂÖ€Ë€·€ÆŽØ¿ô€«
+ *  €é¥ê¥¿¡Œ¥ó€¹€ë¡¥
+ *
+ *  €³€ÎŽØ¿ô€Ï¡€ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€¬¡€¥¿¥¹¥¯Îã³°œèÍýµö²ÄŸõÂÖ¡Êenatex€¬
+ *  true¡Ë€Ç¡€ÊÝÎ±Îã³°Í×°ø€¬0€Ç€Ê€€¡Êtexptn€¬0€Ç€Ê€€¡ËŸì¹ç€ËžÆ€ÓœÐ€¹€³
+ *  €È€òÁÛÄê€·€Æ€€€ë¡¥€³€ÎŽØ¿ô€Ï¡€CPU¥í¥Ã¥¯ŸõÂÖ€ÇžÆ€ÓœÐ€µ€Ê€±€ì€Ð€Ê€é
+ *  €Ê€€¡¥
+ */
+extern void	call_texrtn(void);
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€Îµ¯Æ°
+ *
+ *  ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€¬¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€Îµ¯Æ°Ÿò·ï€òËþ€¿€·€Æ€€€ì€Ð¡€
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€òžÆ€ÓœÐ€¹¡¥CPUÎã³°œèÍý¥ë¡Œ¥Á¥ó€òžÆ€ÓœÐ€¹»þ
+ *  €Ï¡€°ì»þÅª€ËCPU¥í¥Ã¥¯€ò²òœü€¹€ë¡¥
+ *
+ *  €³€ÎŽØ¿ô€Ï¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã€ä³ä¹þ€ß¥Ï¥ó¥É¥é¡¿CPUÎã³°¥Ï¥ó¥É¥é€ÎœÐžý
+ *  œèÍý€«€éžÆ€ÓœÐ€µ€ì€ë€³€È€òÁÛÄê€·€Æ€€€ë¡¥€³€ÎŽØ¿ô€Ï¡€CPU¥í¥Ã¥¯ŸõÂÖ
+ *  €ÇžÆ€ÓœÐ€µ€Ê€±€ì€Ð€Ê€é€Ê€€¡¥
+ *
+ *  ŒÂ¹ÔžúÎš€òŸå€²€ë€¿€á€Ë¡€€³€ÎŽØ¿ô€ò¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€Çµ­œÒ€·€Æ€â€è€€¡¥
+ *  €œ€ÎŸì¹ç€Ë€Ï¡€OMIT_CALLTEX€ò¥Þ¥¯¥íÄêµÁ€¹€ë¡¥
+ */
+extern void	calltex(void);
+
+#endif /* TOPPERS_TASK_H */
Index: /extension/dcre/kernel/task_except.c
===================================================================
--- /extension/dcre/kernel/task_except.c	(revision 7)
+++ /extension/dcre/kernel/task_except.c	(revision 7)
@@ -0,0 +1,368 @@
+/*
+ *  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-2014 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$
+ */
+
+/*
+ *		¥¿¥¹¥¯Îã³°œèÍýµ¡Çœ
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎÄêµÁ
+ */
+#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 (p_tcb->p_tinib->tskatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else if (TSKID(p_tcb) > tmax_stskid) {
+		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;
+			}
+		}
+	}
+	else {
+		ercd = E_OBJ;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_DEF_TEX_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_def_tex */
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý€ÎÍ×µá
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý€ÎÍ×µá¡ÊÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý€Î¶Ø»ß
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý€Îµö²Ä
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý¶Ø»ßŸõÂÖ€Î»²ŸÈ
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý€ÎŸõÂÖ»²ŸÈ
+ */
+#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: /extension/dcre/kernel/task_manage.c
===================================================================
--- /extension/dcre/kernel/task_manage.c	(revision 7)
+++ /extension/dcre/kernel/task_manage.c	(revision 7)
@@ -0,0 +1,588 @@
+/*
+ *  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-2014 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$
+ */
+
+/*
+ *		¥¿¥¹¥¯ŽÉÍýµ¡Çœ
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯€ÎÀžÀ®
+ */
+#ifdef TOPPERS_acre_tsk
+
+#ifndef TARGET_MIN_STKSZ
+#define TARGET_MIN_STKSZ	1U		/* Ì€ÄêµÁ€ÎŸì¹ç€Ï0€Ç€Ê€€€³€È€ò¥Á¥§¥Ã¥¯ */
+#endif /* TARGET_MIN_STKSZ */
+
+ER_UINT
+acre_tsk(const T_CTSK *pk_ctsk)
+{
+	TCB		*p_tcb;
+	TINIB	*p_tinib;
+	ATR		tskatr;
+	void	*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_PAR(pk_ctsk->stksz >= TARGET_MIN_STKSZ);
+	if (pk_ctsk->stk != NULL) {
+		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(ROUND_STK_T(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 */
+
+/*
+ *  ¥¿¥¹¥¯€Îºïœü
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯€Îµ¯Æ°
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯€Îµ¯Æ°¡ÊÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯µ¯Æ°Í×µá€Î¥­¥ã¥ó¥»¥ë
+ */
+#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 */
+
+/*
+ *  Œ«¥¿¥¹¥¯€ÎœªÎ»
+ */
+#ifdef TOPPERS_ext_tsk
+
+ER
+ext_tsk(void)
+{
+	ER		ercd;
+
+	LOG_EXT_TSK_ENTER();
+	CHECK_TSKCTX();
+
+	if (t_sense_lock()) {
+		/*
+		 *  CPU¥í¥Ã¥¯ŸõÂÖ€Çext_tsk€¬žÆ€Ð€ì€¿Ÿì¹ç€Ï¡€CPU¥í¥Ã¥¯€ò²òœü€·
+		 *  €Æ€«€é¥¿¥¹¥¯€òœªÎ»€¹€ë¡¥ŒÂÁõŸå€Ï¡€¥µ¡Œ¥Ó¥¹¥³¡Œ¥ëÆâ€Ç€ÎCPU
+		 *  ¥í¥Ã¥¯€òŸÊÎ¬€¹€ì€Ð€è€€€À€±¡¥
+		 */
+	}
+	else {
+		t_lock_cpu();
+	}
+	if (disdsp) {
+		/*
+		 *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ€Çext_tsk€¬žÆ€Ð€ì€¿Ÿì¹ç€Ï¡€¥Ç¥£¥¹¥Ñ¥Ã
+		 *  ¥Áµö²ÄŸõÂÖ€Ë€·€Æ€«€é¥¿¥¹¥¯€òœªÎ»€¹€ë¡¥
+		 */
+		disdsp = false;
+	}
+	if (!ipmflg) {
+		/*
+		 *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡ÊIPM¡Ë€¬TIPM_ENAALL°Ê³°€ÎŸõÂÖ€Çext_tsk
+		 *  €¬žÆ€Ð€ì€¿Ÿì¹ç€Ï¡€IPM€òTIPM_ENAALL€Ë€·€Æ€«€é¥¿¥¹¥¯€òœªÎ»€¹
+		 *  €ë¡¥
+		 */
+		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 */
+
+/*
+ *  ¥¿¥¹¥¯€Î¶¯À©œªÎ»
+ */
+#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€ÏŒ«¥¿¥¹¥¯€Ç€Ê€€€¿€á¡€¡Ê¥·¥ó¥°¥ë¥×¥í¥»¥Ã¥µ€Ç€Ï¡ËŒÂ
+			 *  ¹ÔŸõÂÖ€Ç€Ê€¯¡€make_non_runnable(p_tcb)€Ç¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã
+			 *  ¥Á€¬É¬Í×€Ë€Ê€ë€³€È€Ï€Ê€€¡¥
+			 */
+			(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 */
+
+/*
+ *  ¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ€ÎÊÑ¹¹
+ */
+#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);
+
+	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 {
+		newpri = (tskpri == TPRI_INI) ? p_tcb->p_tinib->ipriority
+											: INT_PRIORITY(tskpri);
+		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 */
+
+/*
+ *  ¥¿¥¹¥¯Í¥ÀèÅÙ€Î»²ŸÈ
+ */
+#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 */
+
+/*
+ *  Œ«¥¿¥¹¥¯€Î³ÈÄ¥ŸðÊó€Î»²ŸÈ
+ */
+#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: /extension/dcre/kernel/task_refer.c
===================================================================
--- /extension/dcre/kernel/task_refer.c	(revision 7)
+++ /extension/dcre/kernel/task_refer.c	(revision 7)
@@ -0,0 +1,209 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2005-2014 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$
+ */
+
+/*
+ *		¥¿¥¹¥¯€ÎŸõÂÖ»²ŸÈµ¡Çœ
+ */
+
+#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"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯€ÎŸõÂÖ»²ŸÈ
+ */
+#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();
+	if (p_tcb->p_tinib->tskatr == TA_NOEXS) {
+		ercd = E_NOEXS;
+	}
+	else {
+		tstat = p_tcb->tstat;
+		if (TSTAT_DORMANT(tstat)) {
+			/*
+	 		 *  ÂÐŸÝ¥¿¥¹¥¯€¬µÙ»ßŸõÂÖ€ÎŸì¹ç
+			 */
+			pk_rtsk->tskstat = TTS_DMT;
+		}
+		else {
+			/*
+	 		 *  ¥¿¥¹¥¯ŸõÂÖ€ÎŒèœÐ€·
+			 */
+			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;
+			}
+
+			/*
+	 		 *  žœºßÍ¥ÀèÅÙ€È¥Ù¡Œ¥¹Í¥ÀèÅÙ€ÎŒèœÐ€·
+			 */
+			pk_rtsk->tskpri = EXT_TSKPRI(p_tcb->priority);
+			pk_rtsk->tskbpri = EXT_TSKPRI(p_tcb->priority);
+
+			if (TSTAT_WAITING(tstat)) {
+				/*
+		 		 *  ÂÔ€ÁÍ×°ø€ÈÂÔ€ÁÂÐŸÝ€Î¥ª¥Ö¥ž¥§¥¯¥È€ÎID€ÎŒèœÐ€·
+				 */
+				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;
+				}
+
+				/*
+		 		 *  ¥¿¥€¥à¥¢¥Š¥È€¹€ë€Þ€Ç€Î»þŽÖ€ÎŒèœÐ€·
+				 */
+				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;
+				}
+			}
+
+			/*
+	 		 *  µ¯Ÿ²Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô€ÎŒèœÐ€·
+			 */
+			pk_rtsk->wupcnt = p_tcb->wupque ? 1U : 0U;
+		}
+
+		/*
+		 *  µ¯Æ°Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô€ÎŒèœÐ€·
+		 */
+		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: /extension/dcre/kernel/task_sync.c
===================================================================
--- /extension/dcre/kernel/task_sync.c	(revision 7)
+++ /extension/dcre/kernel/task_sync.c	(revision 7)
@@ -0,0 +1,552 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥¿¥¹¥¯ÉÕÂ°Æ±Žüµ¡Çœ
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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 */
+
+/*
+ *  µ¯Ÿ²ÂÔ€Á
+ */
+#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 */
+
+/*
+ *  µ¯Ÿ²ÂÔ€Á¡Ê¥¿¥€¥à¥¢¥Š¥È€¢€ê¡Ë
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯€Îµ¯Ÿ²
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯€Îµ¯Ÿ²¡ÊÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯µ¯Ÿ²Í×µá€Î¥­¥ã¥ó¥»¥ë
+ */
+#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 */
+
+/*
+ *  ÂÔ€ÁŸõÂÖ€Î¶¯À©²òœü¡ÊÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ */
+#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 */
+
+/*
+ *  ¶¯À©ÂÔ€ÁŸõÂÖ€Ø€Î°Ü¹Ô
+ */
+#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)) {
+		/*
+		 *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€«€é¶¯À©ÂÔ€ÁŸõÂÖ€Ø€ÎÁ«°Ü
+		 */
+		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 {
+		/*
+		 *  ÂÔ€ÁŸõÂÖ€«€éÆóœÅÂÔ€ÁŸõÂÖ€Ø€ÎÁ«°Ü
+		 */
+		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 */
+
+/*
+ *  ¶¯À©ÂÔ€ÁŸõÂÖ€«€é€ÎºÆ³«
+ */
+#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)) {
+		/*
+		 *  ¶¯À©ÂÔ€ÁŸõÂÖ€«€éŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ø€ÎÁ«°Ü
+		 */
+		p_tcb->tstat = TS_RUNNABLE;
+		LOG_TSKSTAT(p_tcb);
+		if (make_runnable(p_tcb)) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else {
+		/*
+		 *  ÆóœÅÂÔ€ÁŸõÂÖ€«€éÂÔ€ÁŸõÂÖ€Ø€ÎÁ«°Ü
+		 */
+		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 */
+
+/*
+ *  Œ«¥¿¥¹¥¯€ÎÃÙ±ä
+ */
+#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: /extension/dcre/sample/sample1.c
===================================================================
--- /extension/dcre/sample/sample1.c	(revision 7)
+++ /extension/dcre/sample/sample1.c	(revision 7)
@@ -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) 2004-2012 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  $Id$
+ */
+
+/* 
+ *  ¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à(1)€ÎËÜÂÎ
+ *
+ *  ASP¥«¡Œ¥Í¥ë€ÎŽðËÜÅª€ÊÆ°ºî€ò³ÎÇ§€¹€ë€¿€á€Î¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à¡¥
+ *
+ *  ¥×¥í¥°¥é¥à€Î³µÍ×:
+ *
+ *  ¥æ¡Œ¥¶¥€¥ó¥¿¥Õ¥§¡Œ¥¹€òŒõ€±»ý€Ä¥á¥€¥ó¥¿¥¹¥¯¡Ê¥¿¥¹¥¯ID: MAIN_TASK¡€Í¥
+ *  ÀèÅÙ: MAIN_PRIORITY¡Ë€È¡€3€Ä€ÎÊÂ¹ÔŒÂ¹Ô€µ€ì€ë¥¿¥¹¥¯¡Ê¥¿¥¹¥¯ID:
+ *  TASK1¡ÁTASK3¡€œéŽüÍ¥ÀèÅÙ: MID_PRIORITY¡Ë€Ç¹œÀ®€µ€ì€ë¡¥€Þ€¿¡€µ¯Æ°Œþ
+ *  Žü€¬2ÉÃ€ÎŒþŽü¥Ï¥ó¥É¥é¡ÊŒþŽü¥Ï¥ó¥É¥éID: CYCHDR1¡Ë€òÍÑ€€€ë¡¥
+ *
+ *  ÊÂ¹ÔŒÂ¹Ô€µ€ì€ë¥¿¥¹¥¯€Ï¡€task_loop²ó¶õ¥ë¡Œ¥×€òŒÂ¹Ô€¹€ëÅÙ€Ë¡€¥¿¥¹¥¯€¬
+ *  ŒÂ¹ÔÃæ€Ç€¢€ë€³€È€ò€¢€é€ï€¹¥á¥Ã¥»¡Œ¥ž€òÉœŒš€¹€ë¡¥¶õ¥ë¡Œ¥×€òŒÂ¹Ô€¹€ë
+ *  €Î€Ï¡€¶õ¥ë¡Œ¥×€Ê€·€Ç¥á¥Ã¥»¡Œ¥ž€òœÐÎÏ€¹€ë€È¡€Â¿ÎÌ€Î¥á¥Ã¥»¡Œ¥ž€¬œÐÎÏ
+ *  €µ€ì¡€¥×¥í¥°¥é¥à€ÎÆ°ºî€¬³ÎÇ§€·€º€é€¯€Ê€ë€¿€á€Ç€¢€ë¡¥€Þ€¿¡€ÄãÂ®€Ê¥·
+ *  ¥ê¥¢¥ë¥Ý¡Œ¥È€òÍÑ€€€Æ¥á¥Ã¥»¡Œ¥ž€òœÐÎÏ€¹€ëŸì¹ç€Ë¡€€¹€Ù€Æ€Î¥á¥Ã¥»¡Œ¥ž
+ *  €¬œÐÎÏ€Ç€­€ë€è€Š€Ë¡€¥á¥Ã¥»¡Œ¥ž€ÎÎÌ€òÀ©žÂ€¹€ë€È€€€ŠÍýÍ³€â€¢€ë¡¥
+ *
+ *  ŒþŽü¥Ï¥ó¥É¥é€Ï¡€»°€Ä€ÎÍ¥ÀèÅÙ¡ÊHIGH_PRIORITY¡€MID_PRIORITY¡€
+ *  LOW_PRIORITY¡Ë€Î¥ì¥Ç¥£¥­¥å¡Œ€ò²óÅŸ€µ€»€ë¡¥¥×¥í¥°¥é¥à€Îµ¯Æ°ÄŸžå€Ï¡€
+ *  ŒþŽü¥Ï¥ó¥É¥é€ÏÄä»ßŸõÂÖ€Ë€Ê€Ã€Æ€€€ë¡¥
+ *
+ *  ¥á¥€¥ó¥¿¥¹¥¯€Ï¡€¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€«€é€ÎÊž»úÆþÎÏ€ò¹Ô€€¡ÊÊž»úÆþÎÏ€ò
+ *  ÂÔ€Ã€Æ€€€ëŽÖ€Ï¡€ÊÂ¹ÔŒÂ¹Ô€µ€ì€ë¥¿¥¹¥¯€¬ŒÂ¹Ô€µ€ì€Æ€€€ë¡Ë¡€ÆþÎÏ€µ€ì€¿
+ *  Êž»ú€ËÂÐ±þ€·€¿œèÍý€òŒÂ¹Ô€¹€ë¡¥ÆþÎÏ€µ€ì€¿Êž»ú€ÈœèÍý€ÎŽØ·ž€ÏŒ¡€ÎÄÌ€ê¡¥
+ *  Control-C€Þ€¿€Ï'Q'€¬ÆþÎÏ€µ€ì€ë€È¡€¥×¥í¥°¥é¥à€òœªÎ»€¹€ë¡¥
+ *
+ *  '1' : ÂÐŸÝ¥¿¥¹¥¯€òTASK1€ËÀÚ€êŽ¹€š€ë¡ÊœéŽüÀßÄê¡Ë¡¥
+ *  '2' : ÂÐŸÝ¥¿¥¹¥¯€òTASK2€ËÀÚ€êŽ¹€š€ë¡¥
+ *  '3' : ÂÐŸÝ¥¿¥¹¥¯€òTASK3€ËÀÚ€êŽ¹€š€ë¡¥
+ *  'a' : ÂÐŸÝ¥¿¥¹¥¯€òact_tsk€Ë€è€êµ¯Æ°€¹€ë¡¥
+ *  'A' : ÂÐŸÝ¥¿¥¹¥¯€ËÂÐ€¹€ëµ¯Æ°Í×µá€òcan_act€Ë€è€ê¥­¥ã¥ó¥»¥ë€¹€ë¡¥
+ *  'e' : ÂÐŸÝ¥¿¥¹¥¯€Ëext_tsk€òžÆ€ÓœÐ€µ€»¡€œªÎ»€µ€»€ë¡¥
+ *  't' : ÂÐŸÝ¥¿¥¹¥¯€òter_tsk€Ë€è€ê¶¯À©œªÎ»€¹€ë¡¥
+ *  '>' : ÂÐŸÝ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€òHIGH_PRIORITY€Ë€¹€ë¡¥
+ *  '=' : ÂÐŸÝ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€òMID_PRIORITY€Ë€¹€ë¡¥
+ *  '<' : ÂÐŸÝ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€òLOW_PRIORITY€Ë€¹€ë¡¥
+ *  'G' : ÂÐŸÝ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€òget_pri€ÇÆÉ€ßœÐ€¹¡¥
+ *  's' : ÂÐŸÝ¥¿¥¹¥¯€Ëslp_tsk€òžÆ€ÓœÐ€µ€»¡€µ¯Ÿ²ÂÔ€Á€Ë€µ€»€ë¡¥
+ *  'S' : ÂÐŸÝ¥¿¥¹¥¯€Ëtslp_tsk(10ÉÃ)€òžÆ€ÓœÐ€µ€»¡€µ¯Ÿ²ÂÔ€Á€Ë€µ€»€ë¡¥
+ *  'w' : ÂÐŸÝ¥¿¥¹¥¯€òwup_tsk€Ë€è€êµ¯Ÿ²€¹€ë¡¥
+ *  'W' : ÂÐŸÝ¥¿¥¹¥¯€ËÂÐ€¹€ëµ¯Ÿ²Í×µá€òcan_wup€Ë€è€ê¥­¥ã¥ó¥»¥ë€¹€ë¡¥
+ *  'l' : ÂÐŸÝ¥¿¥¹¥¯€òrel_wai€Ë€è€ê¶¯À©Åª€ËÂÔ€Á²òœü€Ë€¹€ë¡¥
+ *  'u' : ÂÐŸÝ¥¿¥¹¥¯€òsus_tsk€Ë€è€ê¶¯À©ÂÔ€ÁŸõÂÖ€Ë€¹€ë¡¥
+ *  'm' : ÂÐŸÝ¥¿¥¹¥¯€Î¶¯À©ÂÔ€ÁŸõÂÖ€òrsm_tsk€Ë€è€ê²òœü€¹€ë¡¥
+ *  'd' : ÂÐŸÝ¥¿¥¹¥¯€Ëdly_tsk(10ÉÃ)€òžÆ€ÓœÐ€µ€»¡€»þŽÖ·Ð²áÂÔ€Á€Ë€µ€»€ë¡¥
+ *  'x' : ÂÐŸÝ¥¿¥¹¥¯€ËÎã³°¥Ñ¥¿¡Œ¥ó0x0001€ÎÎã³°œèÍý€òÍ×µá€¹€ë¡¥
+ *  'X' : ÂÐŸÝ¥¿¥¹¥¯€ËÎã³°¥Ñ¥¿¡Œ¥ó0x0002€ÎÎã³°œèÍý€òÍ×µá€¹€ë¡¥
+ *  'y' : ÂÐŸÝ¥¿¥¹¥¯€Ëdis_tex€òžÆ€ÓœÐ€µ€»¡€¥¿¥¹¥¯Îã³°€ò¶Ø»ß€¹€ë¡¥
+ *  'Y' : ÂÐŸÝ¥¿¥¹¥¯€Ëena_tex€òžÆ€ÓœÐ€µ€»¡€¥¿¥¹¥¯Îã³°€òµö²Ä€¹€ë¡¥
+ *  'r' : 3€Ä€ÎÍ¥ÀèÅÙ¡ÊHIGH_PRIORITY¡€MID_PRIORITY¡€LOW_PRIORITY¡Ë€Î¥ì
+ *        ¥Ç¥£¥­¥å¡Œ€ò²óÅŸ€µ€»€ë¡¥
+ *  'c' : ŒþŽü¥Ï¥ó¥É¥é€òÆ°ºî³«»Ï€µ€»€ë¡¥
+ *  'C' : ŒþŽü¥Ï¥ó¥É¥é€òÆ°ºîÄä»ß€µ€»€ë¡¥
+ *  'b' : ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ò5ÉÃžå€Ëµ¯Æ°€¹€ë€è€ŠÆ°ºî³«»Ï€µ€»€ë¡¥
+ *  'B' : ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€òÆ°ºîÄä»ß€µ€»€ë¡¥
+ *  'z' : ÂÐŸÝ¥¿¥¹¥¯€ËCPUÎã³°€òÈ¯Àž€µ€»€ë¡Ê¥¿¥¹¥¯€òœªÎ»€µ€»€ë¡Ë¡¥
+ *  'Z' : ÂÐŸÝ¥¿¥¹¥¯€ËCPU¥í¥Ã¥¯ŸõÂÖ€ÇCPUÎã³°€òÈ¯Àž€µ€»€ë¡Ê¥×¥í¥°¥é¥à€ò
+ *        œªÎ»€¹€ë¡Ë¡¥
+ *  '@' : ¥¿¥¹¥¯3€òacre_tsk€Ë€è€êÀžÀ®€·¡€def_tex€Ë€è€ê¥¿¥¹¥¯Îã³°œèÍý
+ *        ¥ë¡Œ¥Á¥ó€òÀßÄê€¹€ë¡¥
+ *  '!' : ÂÐŸÝ¥¿¥¹¥¯€òdel_tsk€Ë€è€êºïœü€¹€ë¡¥
+ *  'V' : get_utm€ÇÀ­ÇœÉŸ²ÁÍÑ¥·¥¹¥Æ¥à»þ¹ï€ò2²óÆÉ€à¡¥
+ *  'v' : È¯¹Ô€·€¿¥·¥¹¥Æ¥à¥³¡Œ¥ë€òÉœŒš€¹€ë¡Ê¥Ç¥Õ¥©¥ë¥È¡Ë¡¥
+ *  'q' : È¯¹Ô€·€¿¥·¥¹¥Æ¥à¥³¡Œ¥ë€òÉœŒš€·€Ê€€¡¥
+ */
+
+#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"
+
+/*
+ *  ¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€Î¥š¥é¡Œ€Î¥í¥°œÐÎÏ
+ */
+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))
+
+/*
+ *  ÊÂ¹ÔŒÂ¹Ô€µ€ì€ë¥¿¥¹¥¯€Ø€Î¥á¥Ã¥»¡Œ¥žÎÎ°è
+ */
+char	message[3];
+
+/*
+ *  ¥ë¡Œ¥×²ó¿ô
+ */
+ulong_t	task_loop;		/* ¥¿¥¹¥¯Æâ€Ç€Î¥ë¡Œ¥×²ó¿ô */
+ulong_t	tex_loop;		/* Îã³°œèÍý¥ë¡Œ¥Á¥óÆâ€Ç€Î¥ë¡Œ¥×²ó¿ô */
+
+/*
+ *  ÊÂ¹ÔŒÂ¹Ô€µ€ì€ë¥¿¥¹¥¯
+ */
+void task(intptr_t exinf)
+{
+	volatile ulong_t	i;
+	int_t		n = 0;
+	int_t		tskno = (int_t) exinf;
+	const char	*graph[] = { "|", "  +", "    *" };
+	char		c;
+
+	SVC_PERROR(ena_tex());
+	while (true) {
+		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;
+		}
+	}
+}
+
+/*
+ *  ÊÂ¹Ô€·€ÆŒÂ¹Ô€µ€ì€ë¥¿¥¹¥¯ÍÑ€Î¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó
+ */
+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Îã³°¥Ï¥ó¥É¥é
+ */
+#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 */
+
+/*
+ *  ŒþŽü¥Ï¥ó¥É¥é
+ *
+ *  HIGH_PRIORITY¡€MID_PRIORITY¡€LOW_PRIORITY €Î³ÆÍ¥ÀèÅÙ€Î¥ì¥Ç¥£¥­¥å¡Œ
+ *  €ò²óÅŸ€µ€»€ë¡¥
+ */
+void cyclic_handler(intptr_t exinf)
+{
+	SVC_PERROR(irot_rdq(HIGH_PRIORITY));
+	SVC_PERROR(irot_rdq(MID_PRIORITY));
+	SVC_PERROR(irot_rdq(LOW_PRIORITY));
+}
+
+/*
+ *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é
+ *
+ *  HIGH_PRIORITY¡€MID_PRIORITY¡€LOW_PRIORITY €Î³ÆÍ¥ÀèÅÙ€Î¥ì¥Ç¥£¥­¥å¡Œ
+ *  €ò²óÅŸ€µ€»€ë¡¥
+ */
+void alarm_handler(intptr_t exinf)
+{
+	SVC_PERROR(irot_rdq(HIGH_PRIORITY));
+	SVC_PERROR(irot_rdq(MID_PRIORITY));
+	SVC_PERROR(irot_rdq(LOW_PRIORITY));
+}
+
+/*
+ *  ¥á¥€¥ó¥¿¥¹¥¯
+ */
+void main_task(intptr_t exinf)
+{
+	char	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);
+
+	/*
+	 *  ¥·¥ê¥¢¥ë¥Ý¡Œ¥È€ÎœéŽü²œ
+	 *
+	 *  ¥·¥¹¥Æ¥à¥í¥°¥¿¥¹¥¯€ÈÆ±€ž¥·¥ê¥¢¥ë¥Ý¡Œ¥È€ò»È€ŠŸì¹ç€Ê€É¡€¥·¥ê¥¢¥ë
+	 *  ¥Ý¡Œ¥È€¬¥ª¡Œ¥×¥óºÑ€ß€ÎŸì¹ç€Ë€Ï€³€³€ÇE_OBJ¥š¥é¡Œ€Ë€Ê€ë€¬¡€»ÙŸã€Ï
+	 *  €Ê€€¡¥
+	 */
+	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)));
+
+	/*
+ 	 *  ¥ë¡Œ¥×²ó¿ô€ÎÀßÄê
+	 *
+	 *  ÊÂ¹ÔŒÂ¹Ô€µ€ì€ë¥¿¥¹¥¯Æâ€Ç€Î¶õ¥ë¡Œ¥×€Î²ó¿ô¡Êtask_loop¡Ë€Ï¡€¶õ¥ë¡Œ
+	 *  ¥×€ÎŒÂ¹Ô»þŽÖ€¬Ìó0.4ÉÃ€Ë€Ê€ë€è€Š€ËÀßÄê€¹€ë¡¥€³€ÎÀßÄê€Î€¿€á€Ë¡€
+	 *  LOOP_REF²ó€Î¶õ¥ë¡Œ¥×€ÎŒÂ¹Ô»þŽÖ€ò¡€€œ€ÎÁ°žå€Çget_tim€òžÆ€Ö€³€È€Ç
+	 *  Â¬Äê€·¡€€œ€ÎÂ¬Äê·ë²Ì€«€é¶õ¥ë¡Œ¥×€ÎŒÂ¹Ô»þŽÖ€¬0.4ÉÃ€Ë€Ê€ë¥ë¡Œ¥×²ó
+	 *  ¿ô€òµá€á¡€task_loop€ËÀßÄê€¹€ë¡¥
+	 *
+	 *  LOOP_REF€Ï¡€¥Ç¥Õ¥©¥ë¥È€Ç€Ï1,000,000€ËÀßÄê€·€Æ€€€ë€¬¡€ÁÛÄê€·€¿€è
+	 *  €êÃÙ€€¥×¥í¥»¥Ã¥µ€Ç€Ï¡€¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à€ÎŒÂ¹Ô³«»Ï€Ë»þŽÖ€¬€«€«
+	 *  €ê€¹€®€ë€È€€€ŠÌäÂê€òÀž€ž€ë¡¥µÕ€ËÁÛÄê€·€¿€è€êÂ®€€¥×¥í¥»¥Ã¥µ€Ç€Ï¡€
+	 *  LOOP_REF²ó€Î¶õ¥ë¡Œ¥×€ÎŒÂ¹Ô»þŽÖ€¬Ã»€¯€Ê€ê¡€task_loop€ËÀßÄê€¹€ëÃÍ
+	 *  €Îžíº¹€¬Âç€­€¯€Ê€ë€È€€€ŠÌäÂê€¬€¢€ë¡¥
+	 *
+	 *  €œ€³€Ç¡€€œ€Î€è€Š€Ê¥¿¡Œ¥²¥Ã¥È€Ç€Ï¡€target_test.h€Ç¡€LOOP_REF€òÅ¬
+	 *  ÀÚ€ÊÃÍ€ËÄêµÁ€¹€ë€Î€¬ËŸ€Þ€·€€¡¥
+	 *
+	 *  €Þ€¿¡€task_loop€ÎÃÍ€òžÇÄê€·€¿€€Ÿì¹ç€Ë€Ï¡€€œ€ÎÃÍ€òTASK_LOOP€Ë¥Þ
+	 *  ¥¯¥íÄêµÁ€¹€ë¡¥TASK_LOOP€¬¥Þ¥¯¥íÄêµÁ€µ€ì€Æ€€€ëŸì¹ç¡€Ÿåµ­€ÎÂ¬Äê€ò
+	 *  ¹Ô€ï€º€Ë¡€TASK_LOOP€ËÄêµÁ€µ€ì€¿ÃÍ€ò¶õ¥ë¡Œ¥×€Î²ó¿ô€È€¹€ë¡¥
+	 *
+	 * ¥¿¡Œ¥²¥Ã¥È€Ë€è€Ã€Æ€Ï¡€¶õ¥ë¡Œ¥×€ÎŒÂ¹Ô»þŽÖ€Î1²óÌÜ€ÎÂ¬Äê€Ç¡€ËÜÍè€è
+	 * €ê€âÄ¹€á€Ë€Ê€ë€â€Î€¬€¢€ë¡¥€³€Î€è€Š€Ê¥¿¡Œ¥²¥Ã¥È€Ç€Ï¡€MEASURE_TWICE
+	 * €ò¥Þ¥¯¥íÄêµÁ€¹€ë€³€È€Ç¡€1²óÌÜ€ÎÂ¬Äê·ë²Ì€òŒÎ€Æ€Æ¡€2²óÌÜ€ÎÂ¬Äê·ë²Ì
+	 * €ò»È€Š¡¥
+	 *
+	 *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óÆâ€Ç€Î¶õ¥ë¡Œ¥×€Î²ó¿ô¡Êtex_loop¡Ë€Ï¡€
+	 *  task_loop€Î4Ê¬€Î1€ÎÃÍ¡Ê¶õ¥ë¡Œ¥×€ÎŒÂ¹Ô»þŽÖ€¬0.1ÉÃ€Ë€Ê€ë¥ë¡Œ¥×²ó
+	 *  ¿ô¡Ë€ËÀßÄê€¹€ë¡¥
+	 */
+#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 / 4;
+
+	/*
+ 	 *  ¥¿¥¹¥¯€Îµ¯Æ°
+	 */
+	SVC_PERROR(act_tsk(TASK1));
+	SVC_PERROR(act_tsk(TASK2));
+
+	/*
+ 	 *  ¥á¥€¥ó¥ë¡Œ¥×
+	 */
+	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: /extension/dcre/sample/sample1.cfg
===================================================================
--- /extension/dcre/sample/sample1.cfg	(revision 7)
+++ /extension/dcre/sample/sample1.cfg	(revision 7)
@@ -0,0 +1,26 @@
+/*
+ *  $Id$
+ */
+
+/*
+ *  ¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à(1)€Î¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+ */
+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: /extension/dcre/sample/sample1.h
===================================================================
--- /extension/dcre/sample/sample1.h	(revision 7)
+++ /extension/dcre/sample/sample1.h	(revision 7)
@@ -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
+ *
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ *
+ *  $Id$
+ */
+
+/*
+ *		¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à(1)€Î¥Ø¥Ã¥À¥Õ¥¡¥€¥ë
+ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎÄêµÁ
+ */
+#include "target_test.h"
+
+/*
+ *  ³Æ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€ÎÄêµÁ
+ */
+
+#define MAIN_PRIORITY	5		/* ¥á¥€¥ó¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ */
+								/* HIGH_PRIORITY€è€ê¹â€¯€¹€ë€³€È */
+
+#define HIGH_PRIORITY	9		/* ÊÂ¹ÔŒÂ¹Ô€µ€ì€ë¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ */
+#define MID_PRIORITY	10
+#define LOW_PRIORITY	11
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È€Ë°ÍÂž€¹€ë²ÄÇœÀ­€Î€¢€ëÄê¿ô€ÎÄêµÁ
+ */
+
+#ifndef TASK_PORTID
+#define	TASK_PORTID		1			/* Êž»úÆþÎÏ€¹€ë¥·¥ê¥¢¥ë¥Ý¡Œ¥ÈID */
+#endif /* TASK_PORTID */
+
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯¥µ¥€¥º */
+#endif /* STACK_SIZE */
+
+#ifndef KMM_SIZE
+#define	KMM_SIZE		(STACK_SIZE * 16)	/* ¥«¡Œ¥Í¥ë€¬³ä€êÉÕ€±€ë   */
+#endif /* KMM_SIZE */						/*     ¥á¥â¥êÎÎ°è€Î¥µ¥€¥º */
+
+#ifndef LOOP_REF
+#define LOOP_REF		ULONG_C(1000000)	/* Â®ÅÙ·×Â¬ÍÑ€Î¥ë¡Œ¥×²ó¿ô */
+#endif /* LOOP_REF */
+
+/*
+ *  ŽØ¿ô€Î¥×¥í¥È¥¿¥€¥×ÀëžÀ
+ */
+#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: /extension/messagebuf/include/kernel.h
===================================================================
--- /extension/messagebuf/include/kernel.h	(revision 7)
+++ /extension/messagebuf/include/kernel.h	(revision 7)
@@ -0,0 +1,527 @@
+/*
+ *  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-2014 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$
+ */
+
+/*
+ *		TOPPERS/ASP¥«¡Œ¥Í¥ë Éžœà¥Ø¥Ã¥À¥Õ¥¡¥€¥ë
+ *
+ *  TOPPERS/ASP¥«¡Œ¥Í¥ë€¬¥µ¥Ý¡Œ¥È€¹€ë¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎÀëžÀ€È¡€É¬Í×€Ê¥Ç¡Œ
+ *  ¥¿·¿¡€Äê¿ô¡€¥Þ¥¯¥í€ÎÄêµÁ€òŽÞ€à¥Ø¥Ã¥À¥Õ¥¡¥€¥ë¡¥
+ *
+ *  ¥¢¥»¥ó¥Ö¥êžÀžì€Î¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€«€é€³€Î¥Õ¥¡¥€¥ë€ò¥€¥ó¥¯¥ë¡Œ¥É€¹€ë»þ
+ *  €Ï¡€TOPPERS_MACRO_ONLY€òÄêµÁ€·€Æ€ª€¯¡¥€³€ì€Ë€è€ê¡€¥Þ¥¯¥íÄêµÁ°Ê³°€ò
+ *  œü€¯€è€Š€Ë€Ê€Ã€Æ€€€ë¡¥
+ *
+ *  €³€Î¥Õ¥¡¥€¥ë€ò¥€¥ó¥¯¥ë¡Œ¥É€¹€ëÁ°€Ë¥€¥ó¥¯¥ë¡Œ¥É€·€Æ€ª€¯€Ù€­¥Õ¥¡¥€¥ë
+ *  €Ï€Ê€€¡¥
+ */
+
+#ifndef TOPPERS_KERNEL_H
+#define TOPPERS_KERNEL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *	TOPPERS¶ŠÄÌ€Î¥Ç¡Œ¥¿·¿¡ŠÄê¿ô¡Š¥Þ¥¯¥í
+ */
+#include <t_stddef.h>
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô
+ */
+#include "target_kernel.h"
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  ¥Ç¡Œ¥¿·¿€ÎÄêµÁ
+ */
+
+/*
+ *  ¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó€ä¥ª¥Ö¥ž¥§¥¯¥ÈÈÖ¹æ€Î·¿ÄêµÁ
+ */
+typedef	uint_t		TEXPTN;		/* ¥¿¥¹¥¯Îã³°Í×°ø€Î¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó */
+typedef	uint_t		FLGPTN;		/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€Î¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó */
+typedef	uint_t		INTNO;		/* ³ä¹þ€ßÈÖ¹æ */
+typedef	uint_t		INHNO;		/* ³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ */
+typedef	uint_t		EXCNO;		/* CPUÎã³°¥Ï¥ó¥É¥éÈÖ¹æ */
+
+/*
+ *  œèÍýÃ±°Ì€Î·¿ÄêµÁ
+ */
+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);
+
+/*
+ *  ¥á¥â¥êÎÎ°è³ÎÊÝ€Î€¿€á€Î·¿ÄêµÁ
+ */
+#ifndef TOPPERS_STK_T
+#define TOPPERS_STK_T	intptr_t
+#endif /* TOPPERS_STK_T */
+typedef	TOPPERS_STK_T	STK_T;	/* ¥¹¥¿¥Ã¥¯ÎÎ°è€ò³ÎÊÝ€¹€ë€¿€á€Î·¿ */
+
+#ifndef TOPPERS_MPF_T
+#define TOPPERS_MPF_T	intptr_t
+#endif /* TOPPERS_MPF_T */
+typedef	TOPPERS_MPF_T	MPF_T;	/* žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÎÎ°è€ò³ÎÊÝ€¹€ë€¿€á€Î·¿ */
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ø¥Ã¥À€Î·¿ÄêµÁ
+ */
+typedef	struct t_msg {			/* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€Î¥á¥Ã¥»¡Œ¥ž¥Ø¥Ã¥À */
+	struct t_msg	*pk_next;
+} T_MSG;
+
+typedef	struct t_msg_pri {		/* Í¥ÀèÅÙÉÕ€­¥á¥Ã¥»¡Œ¥ž¥Ø¥Ã¥À */
+	T_MSG	msgque;				/* ¥á¥Ã¥»¡Œ¥ž¥Ø¥Ã¥À */
+	PRI		msgpri;				/* ¥á¥Ã¥»¡Œ¥žÍ¥ÀèÅÙ */
+} T_MSG_PRI;
+
+/*
+ *  ¥Ñ¥±¥Ã¥È·ÁŒ°€ÎÄêµÁ
+ */
+typedef struct t_rtsk {
+	STAT	tskstat;	/* ¥¿¥¹¥¯ŸõÂÖ */
+	PRI		tskpri;		/* ¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ */
+	PRI		tskbpri;	/* ¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ */
+	STAT	tskwait;	/* ÂÔ€ÁÍ×°ø */
+	ID		wobjid;		/* ÂÔ€ÁÂÐŸÝ€Î¥ª¥Ö¥ž¥§¥¯¥È€ÎID */
+	TMO		lefttmo;	/* ¥¿¥€¥à¥¢¥Š¥È€¹€ë€Þ€Ç€Î»þŽÖ */
+	uint_t	actcnt;		/* µ¯Æ°Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô */
+	uint_t	wupcnt;		/* µ¯Ÿ²Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô */
+} T_RTSK;
+
+typedef struct t_rtex {
+	STAT	texstat;	/* ¥¿¥¹¥¯Îã³°œèÍý€ÎŸõÂÖ */
+	TEXPTN	pndptn;		/* ÊÝÎ±Îã³°Í×°ø */
+} T_RTEX;
+
+typedef struct t_rsem {
+	ID		wtskid;		/* ¥»¥Þ¥Õ¥©€ÎÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
+	uint_t	semcnt;		/* ¥»¥Þ¥Õ¥©€Îžœºß€Î»ñž»¿ô */
+} T_RSEM;
+
+typedef struct t_rflg {
+	ID		wtskid;		/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
+	FLGPTN	flgptn;		/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€Îžœºß€Î¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó */
+} T_RFLG;
+
+typedef struct t_rdtq {
+	ID		stskid;		/* ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎÁ÷¿®ÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
+	ID		rtskid;		/* ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎŒõ¿®ÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
+	uint_t	sdtqcnt;	/* ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€Ë³ÊÇŒ€µ€ì€Æ€€€ë¥Ç¡Œ¥¿€Î¿ô */
+} T_RDTQ;
+
+typedef struct t_rpdq {
+	ID		stskid;		/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎÁ÷¿®ÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯
+						   €ÎIDÈÖ¹æ */
+	ID		rtskid;		/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎŒõ¿®ÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯
+						   €ÎIDÈÖ¹æ */
+	uint_t	spdqcnt;	/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€Ë³ÊÇŒ€µ€ì€Æ€€€ë¥Ç¡Œ
+						   ¥¿€Î¿ô */
+} T_RPDQ;
+
+typedef struct t_rmbx {
+	ID		wtskid;		/* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€ÎÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
+	T_MSG	*pk_msg;	/* ¥á¥Ã¥»¡Œ¥ž¥­¥å¡Œ€ÎÀèÆ¬€Ë€Ä€Ê€¬€ì€¿¥á¥Ã¥»¡Œ¥ž
+						   €ÎÀèÆ¬ÈÖÃÏ */
+} T_RMBX;
+
+typedef struct t_rmbf {
+	ID		stskid;		/* ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€ÎÁ÷¿®ÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯
+						   €ÎIDÈÖ¹æ */
+	ID		rtskid;		/* ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€ÎŒõ¿®ÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯
+						   €ÎIDÈÖ¹æ */
+	uint_t	smbfcnt;	/* ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡ŽÉÍýÎÎ°è€Ë³ÊÇŒ€µ€ì€Æ€€€ë¥á¥Ã
+						   ¥»¡Œ¥ž€Î¿ô */
+	SIZE	fmbfsz;		/* ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡ŽÉÍýÎÎ°èÃæ€Î¶õ€­ÎÎ°è€Î¥µ¥€¥º */
+} T_RMBF;
+
+typedef struct t_rmpf {
+	ID		wtskid;		/* žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ë€ÎÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€Î
+						   IDÈÖ¹æ */
+	uint_t	fblkcnt;	/* žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÎÎ°è€Î¶õ€­¥á¥â¥êÎÎ°è€Ë³ä€ê
+						   ÉÕ€±€ë€³€È€¬€Ç€­€ëžÇÄêÄ¹¥á¥â¥ê¥Ö¥í¥Ã¥¯€Î¿ô */
+} T_RMPF;
+
+typedef struct t_rcyc {
+	STAT	cycstat;	/* ŒþŽü¥Ï¥ó¥É¥é€ÎÆ°ºîŸõÂÖ */
+	RELTIM	lefttim;	/* Œ¡€ËŒþŽü¥Ï¥ó¥É¥é€òµ¯Æ°€¹€ë»þ¹ï€Þ€Ç€ÎÁêÂÐ»þŽÖ */
+} T_RCYC;
+
+typedef struct t_ralm {
+	STAT	almstat;	/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ÎÆ°ºîŸõÂÖ */
+	RELTIM	lefttim;	/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€òµ¯Æ°€¹€ë»þ¹ï€Þ€Ç€ÎÁêÂÐ»þŽÖ */
+} T_RALM;
+
+/*
+ *  ¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎÀëžÀ
+ */
+
+/*
+ *  ¥¿¥¹¥¯ŽÉÍýµ¡Çœ
+ */
+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();
+
+/*
+ *  ¥¿¥¹¥¯ÉÕÂ°Æ±Žüµ¡Çœ
+ */
+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();
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍýµ¡Çœ
+ */
+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();
+
+/*
+ *  Æ±Žü¡ŠÄÌ¿®µ¡Çœ
+ */
+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		snd_mbf(ID mbfid, const void *msg, uint_t msgsz) throw();
+extern ER		psnd_mbf(ID mbfid, const void *msg, uint_t msgsz) throw();
+extern ER		tsnd_mbf(ID mbfid, const void *msg,
+										uint_t msgsz, TMO tmout) throw();
+extern ER_UINT	rcv_mbf(ID mbfid, void *msg) throw();
+extern ER_UINT	prcv_mbf(ID mbfid, void *msg) throw();
+extern ER_UINT	trcv_mbf(ID mbfid, void *msg, TMO tmout) throw();
+extern ER		ini_mbf(ID mbfid) throw();
+extern ER		ref_mbf(ID mbfid, T_RMBF *pk_rmbf) 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		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		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Îã³°ŽÉÍýµ¡Çœ
+ */
+extern bool_t	xsns_dpn(void *p_excinf) throw();
+extern bool_t	xsns_xpn(void *p_excinf) throw();
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  ¥ª¥Ö¥ž¥§¥¯¥ÈÂ°À­€ÎÄêµÁ
+ */
+#define TA_ACT			UINT_C(0x02)	/* ¥¿¥¹¥¯€òµ¯Æ°€µ€ì€¿ŸõÂÖ€ÇÀžÀ® */
+
+#define TA_TPRI			UINT_C(0x01)	/* ¥¿¥¹¥¯€ÎÂÔ€Á¹ÔÎó€òÍ¥ÀèÅÙœç€Ë */
+#define TA_MPRI			UINT_C(0x02)	/* ¥á¥Ã¥»¡Œ¥ž¥­¥å¡Œ€òÍ¥ÀèÅÙœç€Ë */
+
+#define TA_WMUL			UINT_C(0x02)	/* Ê£¿ô€ÎÂÔ€Á¥¿¥¹¥¯ */
+#define TA_CLR			UINT_C(0x04)	/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€Î¥¯¥ê¥¢»ØÄê */
+
+#define TA_STA			UINT_C(0x02)	/* ŒþŽü¥Ï¥ó¥É¥é€òÆ°ºîŸõÂÖ€ÇÀžÀ® */
+
+#define TA_NONKERNEL	UINT_C(0x02)	/* ¥«¡Œ¥Í¥ëŽÉÍý³°€Î³ä¹þ€ß */
+
+#define TA_ENAINT		UINT_C(0x01)	/* ³ä¹þ€ßÍ×µá¶Ø»ß¥Õ¥é¥°€ò¥¯¥ê¥¢ */
+#define TA_EDGE			UINT_C(0x02)	/* ¥š¥Ã¥ž¥È¥ê¥¬ */
+
+/*
+ *  ¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎÆ°ºî¥â¡Œ¥É€ÎÄêµÁ
+ */
+#define TWF_ORW			UINT_C(0x01)	/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎORÂÔ€Á */
+#define TWF_ANDW		UINT_C(0x02)	/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎANDÂÔ€Á */
+
+/*
+ *  ¥ª¥Ö¥ž¥§¥¯¥È€ÎŸõÂÖ€ÎÄêµÁ
+ */
+#define TTS_RUN			UINT_C(0x01)	/* ŒÂ¹ÔŸõÂÖ */
+#define TTS_RDY			UINT_C(0x02)	/* ŒÂ¹Ô²ÄÇœŸõÂÖ */
+#define TTS_WAI			UINT_C(0x04)	/* ÂÔ€ÁŸõÂÖ */
+#define TTS_SUS			UINT_C(0x08)	/* ¶¯À©ÂÔ€ÁŸõÂÖ */
+#define TTS_WAS			UINT_C(0x0c)	/* ÆóœÅÂÔ€ÁŸõÂÖ */
+#define TTS_DMT			UINT_C(0x10)	/* µÙ»ßŸõÂÖ */
+
+#define TTW_SLP			UINT_C(0x0001)	/* µ¯Ÿ²ÂÔ€Á */
+#define TTW_DLY			UINT_C(0x0002)	/* »þŽÖ·Ð²áÂÔ€Á */
+#define TTW_SEM			UINT_C(0x0004)	/* ¥»¥Þ¥Õ¥©€Î»ñž»³ÍÆÀÂÔ€Á */
+#define TTW_FLG			UINT_C(0x0008)	/* ¥€¥Ù¥ó¥È¥Õ¥é¥°ÂÔ€Á */
+#define TTW_SDTQ		UINT_C(0x0010)	/* ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®ÂÔ€Á */
+#define TTW_RDTQ		UINT_C(0x0020)	/* ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TTW_SPDQ		UINT_C(0x0100)	/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®ÂÔ€Á */
+#define TTW_RPDQ		UINT_C(0x0200)	/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TTW_MBX			UINT_C(0x0040)	/* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TTW_SMBF		UINT_C(0x0400)	/* ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€Ø€ÎÁ÷¿®ÂÔ€Á */
+#define TTW_RMBF		UINT_C(0x0800)	/* ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TTW_MPF			UINT_C(0x2000)	/* žÇÄêÄ¹¥á¥â¥ê¥Ö¥í¥Ã¥¯€Î³ÍÆÀÂÔ€Á */
+
+#define TTEX_ENA		UINT_C(0x01)	/* ¥¿¥¹¥¯Îã³°œèÍýµö²ÄŸõÂÖ */
+#define TTEX_DIS		UINT_C(0x02)	/* ¥¿¥¹¥¯Îã³°œèÍý¶Ø»ßŸõÂÖ */
+
+#define TCYC_STP		UINT_C(0x01)	/* ŒþŽü¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€Ê€€ */
+#define TCYC_STA		UINT_C(0x02)	/* ŒþŽü¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€ë */
+
+#define TALM_STP		UINT_C(0x01)	/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€Ê€€ */
+#define TALM_STA		UINT_C(0x02)	/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€ë */
+
+/*
+ *  €œ€ÎÂŸ€ÎÄê¿ô€ÎÄêµÁ
+ */
+#define TSK_SELF		0			/* Œ«¥¿¥¹¥¯»ØÄê */
+#define TSK_NONE		0			/* ³ºÅö€¹€ë¥¿¥¹¥¯€¬€Ê€€ */
+
+#define TPRI_SELF		0			/* Œ«¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ */
+#define TPRI_INI		0			/* ¥¿¥¹¥¯€Îµ¯Æ°»þÍ¥ÀèÅÙ */
+
+#define TIPM_ENAALL		0			/* ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœü */
+
+/*
+ *  ¹œÀ®Äê¿ô€È¥Þ¥¯¥í
+ */
+
+/*
+ *  ¥µ¥Ý¡Œ¥È€¹€ëµ¡Çœ
+ */
+#ifdef TOPPERS_TARGET_SUPPORT_DIS_INT
+#define TOPPERS_SUPPORT_DIS_INT			/* dis_int€¬¥µ¥Ý¡Œ¥È€µ€ì€Æ€€€ë */
+#endif /* TOPPERS_TARGET_SUPPORT_DIS_INT */
+
+#ifdef TOPPERS_TARGET_SUPPORT_ENA_INT
+#define TOPPERS_SUPPORT_ENA_INT			/* ena_int€¬¥µ¥Ý¡Œ¥È€µ€ì€Æ€€€ë */
+#endif /* TOPPERS_TARGET_SUPPORT_ENA_INT */
+
+#ifdef TOPPERS_TARGET_SUPPORT_GET_UTM
+#define TOPPERS_SUPPORT_GET_UTM			/* get_utm€¬¥µ¥Ý¡Œ¥È€µ€ì€Æ€€€ë */
+#endif /* TOPPERS_TARGET_SUPPORT_GET_UTM */
+
+#define TOPPERS_SUPPORT_MESSAGEBUF		/* ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡µ¡Çœ³ÈÄ¥ */
+
+/*
+ *  Í¥ÀèÅÙ€ÎÈÏ°Ï
+ */
+#define TMIN_TPRI		1			/* ¥¿¥¹¥¯Í¥ÀèÅÙ€ÎºÇŸ®ÃÍ¡ÊºÇ¹âÃÍ¡Ë*/
+#define TMAX_TPRI		16			/* ¥¿¥¹¥¯Í¥ÀèÅÙ€ÎºÇÂçÃÍ¡ÊºÇÄãÃÍ¡Ë*/
+#define TMIN_DPRI		1			/* ¥Ç¡Œ¥¿Í¥ÀèÅÙ€ÎºÇŸ®ÃÍ¡ÊºÇ¹âÃÍ¡Ë*/
+#define TMAX_DPRI		16			/* ¥Ç¡Œ¥¿Í¥ÀèÅÙ€ÎºÇÂçÃÍ¡ÊºÇÄãÃÍ¡Ë*/
+#define TMIN_MPRI		1			/* ¥á¥Ã¥»¡Œ¥žÍ¥ÀèÅÙ€ÎºÇŸ®ÃÍ¡ÊºÇ¹âÃÍ¡Ë*/
+#define TMAX_MPRI		16			/* ¥á¥Ã¥»¡Œ¥žÍ¥ÀèÅÙ€ÎºÇÂçÃÍ¡ÊºÇÄãÃÍ¡Ë*/
+#define TMIN_ISRPRI		1			/* ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óÍ¥ÀèÅÙ€ÎºÇŸ®ÃÍ */
+#define TMAX_ISRPRI		16			/* ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óÍ¥ÀèÅÙ€ÎºÇÂçÃÍ */
+
+/*
+ *  ¥Ð¡Œ¥ž¥ç¥óŸðÊó
+ */
+#define TKERNEL_MAKER	UINT_C(0x0118)	/* ¥«¡Œ¥Í¥ë€Î¥á¡Œ¥«¡Œ¥³¡Œ¥É */
+#define TKERNEL_PRID	UINT_C(0x0007)	/* ¥«¡Œ¥Í¥ë€ÎŒ±ÊÌÈÖ¹æ */
+#define TKERNEL_SPVER	UINT_C(0xf517)	/* ¥«¡Œ¥Í¥ë»ÅÍÍ€Î¥Ð¡Œ¥ž¥ç¥óÈÖ¹æ */
+#define TKERNEL_PRVER	UINT_C(0x1092)	/* ¥«¡Œ¥Í¥ë€Î¥Ð¡Œ¥ž¥ç¥óÈÖ¹æ */
+
+/*
+ *  ¥­¥å¡Œ¥€¥ó¥°²ó¿ô€ÎºÇÂçÃÍ
+ */
+#define TMAX_ACTCNT		UINT_C(1)		/* µ¯Æ°Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô€ÎºÇÂçÃÍ */
+#define TMAX_WUPCNT		UINT_C(1)		/* µ¯Ÿ²Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô€ÎºÇÂçÃÍ */
+
+/*
+ *  ¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó€Î¥Ó¥Ã¥È¿ô
+ */
+#ifndef TBIT_TEXPTN					/* ¥¿¥¹¥¯Îã³°Í×°ø€Î¥Ó¥Ã¥È¿ô */
+#define TBIT_TEXPTN		(sizeof(TEXPTN) * CHAR_BIT)
+#endif /* TBIT_TEXPTN */
+
+#ifndef TBIT_FLGPTN					/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€Î¥Ó¥Ã¥È¿ô */
+#define TBIT_FLGPTN		(sizeof(FLGPTN) * CHAR_BIT)
+#endif /* TBIT_FLGPTN */
+
+/*
+ *  ¥á¥â¥êÎÎ°è³ÎÊÝ€Î€¿€á€Î¥Þ¥¯¥í
+ *
+ *  °Ê²Œ€ÎTOPPERS_COUNT_SZ€ÈTOPPERS_ROUND_SZ€ÎÄêµÁ€Ï¡€unit€¬2€Î¶ÒŸè€Ç€¢
+ *  €ë€³€È€ò²ŸÄê€·€Æ€€€ë¡¥
+ */
+#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 TSZ_MBFMB(msgcnt, msgsz) \
+	((msgcnt) * (sizeof(uint_t) + TOPPERS_ROUND_SZ(msgsz, sizeof(uint_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	/* ¥»¥Þ¥Õ¥©€ÎºÇÂç»ñž»¿ô€ÎºÇÂçÃÍ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* TOPPERS_KERNEL_H */
Index: /extension/messagebuf/kernel/Makefile.kernel
===================================================================
--- /extension/messagebuf/kernel/Makefile.kernel	(revision 7)
+++ /extension/messagebuf/kernel/Makefile.kernel	(revision 7)
@@ -0,0 +1,142 @@
+#
+#  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-2014 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$
+# 
+
+#
+#		¥«¡Œ¥Í¥ë€Î¥Õ¥¡¥€¥ë¹œÀ®€ÎÄêµÁ
+#
+
+#
+#  1€Ä€Î¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€«€éÊ£¿ô€Î¥ª¥Ö¥ž¥§¥¯¥È¥Õ¥¡¥€¥ë€òÀžÀ®€¹€ë€è€Š€Ëºî
+#  À®€µ€ì€¿¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€Î¥ê¥¹¥È
+#
+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 \
+				messagebuf.c mempfix.c time_manage.c cyclic.c alarm.c \
+				sys_manage.c interrupt.c exception.c
+
+#
+#  ³Æ¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€«€éÀžÀ®€µ€ì€ë¥ª¥Ö¥ž¥§¥¯¥È¥Õ¥¡¥€¥ë€Î¥ê¥¹¥È
+#
+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 waiwobj.o waicmp.o waitmo.o waitmook.o \
+		wairel.o wobjwai.o wobjwaitmo.o wobjpri.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
+
+messagebuf = mbfhook.o mbfini.o mbfenq.o mbfdeq.o \
+		mbfsnd.o mbfsig.o mbfrcv.o mbfwobj.o mbfpri.o \
+		snd_mbf.o psnd_mbf.o tsnd_mbf.o \
+		rcv_mbf.o prcv_mbf.o trcv_mbf.o ini_mbf.o ref_mbf.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
+
+#
+#  ÀžÀ®€µ€ì€ë¥ª¥Ö¥ž¥§¥¯¥È¥Õ¥¡¥€¥ë€Î°ÍÂžŽØ·ž€ÎÄêµÁ
+#
+$(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
+$(messagebuf) $(messagebuf:.o=.s) $(messagebuf:.o=.d): messagebuf.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: /extension/messagebuf/kernel/allfunc.h
===================================================================
--- /extension/messagebuf/kernel/allfunc.h	(revision 7)
+++ /extension/messagebuf/kernel/allfunc.h	(revision 7)
@@ -0,0 +1,262 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2005-2014 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$
+ */
+
+/*
+ *		€¹€Ù€Æ€ÎŽØ¿ô€ò¥³¥ó¥Ñ¥€¥ë€¹€ë€¿€á€ÎÄêµÁ
+ */
+
+#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_waiwobj
+#define TOPPERS_waicmp
+#define TOPPERS_waitmo
+#define TOPPERS_waitmook
+#define TOPPERS_wairel
+#define TOPPERS_wobjwai
+#define TOPPERS_wobjwaitmo
+#define TOPPERS_wobjpri
+#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
+
+/* messagebuf.c */
+#define TOPPERS_mbfhook
+#define TOPPERS_mbfini
+#define TOPPERS_mbfenq
+#define TOPPERS_mbfdeq
+#define TOPPERS_mbfsnd
+#define TOPPERS_mbfsig
+#define TOPPERS_mbfrcv
+#define TOPPERS_mbfwobj
+#define TOPPERS_mbfpri
+#define TOPPERS_snd_mbf
+#define TOPPERS_psnd_mbf
+#define TOPPERS_tsnd_mbf
+#define TOPPERS_rcv_mbf
+#define TOPPERS_prcv_mbf
+#define TOPPERS_trcv_mbf
+#define TOPPERS_ini_mbf
+#define TOPPERS_ref_mbf
+
+/* 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: /extension/messagebuf/kernel/check.h
===================================================================
--- /extension/messagebuf/kernel/check.h	(revision 7)
+++ /extension/messagebuf/kernel/check.h	(revision 7)
@@ -0,0 +1,292 @@
+/*
+ *  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-2014 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$
+ */
+
+/*
+ *		¥š¥é¡Œ¥Á¥§¥Ã¥¯ÍÑ¥Þ¥¯¥í
+ */
+
+#ifndef TOPPERS_CHECK_H
+#define TOPPERS_CHECK_H
+
+/*
+ *  Í¥ÀèÅÙ€ÎÈÏ°Ï€ÎÈœÄê
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯Í¥ÀèÅÙ€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
+ */
+#define CHECK_TPRI(tpri) do {								\
+	if (!VALID_TPRI(tpri)) {								\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_TPRI_INI(tpri) do {							\
+	if (!(VALID_TPRI(tpri) || (tpri) == TPRI_INI)) {		\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_TPRI_SELF(tpri) do {							\
+	if (!(VALID_TPRI(tpri) || (tpri) == TPRI_SELF)) {		\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  ¥¿¥€¥à¥¢¥Š¥È»ØÄêÃÍ€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
+ */
+#define CHECK_TMOUT(tmout) do {								\
+	if (!(TMO_FEVR <= (tmout))) {							\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
+ */
+#define CHECK_INTPRI_CHGIPM(intpri) do {					\
+	if (!VALID_INTPRI_CHGIPM(intpri)) {						\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  ³ä¹þ€ßÈÖ¹æ€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
+ */
+#define CHECK_INTNO_DISINT(intno) do {						\
+	if (!VALID_INTNO_DISINT(intno)) {						\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  €œ€ÎÂŸ€Î¥Ñ¥é¥á¡Œ¥¿¥š¥é¡Œ€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
+ */
+#define CHECK_PAR(exp) do {									\
+	if (!(exp)) {											\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  ¥ª¥Ö¥ž¥§¥¯¥ÈID€ÎÈÏ°Ï€ÎÈœÄê
+ */
+#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_MBFID(mbfid)	(TMIN_MBFID <= (mbfid) && (mbfid) <= tmax_mbfid)
+#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)
+
+/*
+ *  ¥ª¥Ö¥ž¥§¥¯¥ÈID€Î¥Á¥§¥Ã¥¯¡ÊE_ID¡Ë
+ */
+#define CHECK_TSKID(tskid) do {								\
+	if (!VALID_TSKID(tskid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_TSKID_SELF(tskid) do {						\
+	if (!(VALID_TSKID(tskid) || (tskid) == TSK_SELF)) {		\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_SEMID(semid) do {								\
+	if (!VALID_SEMID(semid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_FLGID(flgid) do {								\
+	if (!VALID_FLGID(flgid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_DTQID(dtqid) do {								\
+	if (!VALID_DTQID(dtqid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_PDQID(pdqid) do {								\
+	if (!VALID_PDQID(pdqid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_MBXID(mbxid) do {								\
+	if (!VALID_MBXID(mbxid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_MBFID(mbfid) do {								\
+	if (!VALID_MBFID(mbfid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_MPFID(mpfid) do {								\
+	if (!VALID_MPFID(mpfid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_CYCID(cycid) do {								\
+	if (!VALID_CYCID(cycid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_ALMID(almid) do {								\
+	if (!VALID_ALMID(almid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  žÆœÐ€·¥³¥ó¥Æ¥­¥¹¥È€Î¥Á¥§¥Ã¥¯¡ÊE_CTX¡Ë
+ */
+#define CHECK_TSKCTX() do {									\
+	if (sense_context()) {									\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_INTCTX() do {									\
+	if (!sense_context()) {									\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  žÆœÐ€·¥³¥ó¥Æ¥­¥¹¥È€ÈCPU¥í¥Ã¥¯ŸõÂÖ€Î¥Á¥§¥Ã¥¯¡ÊE_CTX¡Ë
+ */
+#define CHECK_TSKCTX_UNL() do {								\
+	if (sense_context() || t_sense_lock()) {				\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_INTCTX_UNL() do {								\
+	if (!sense_context() || i_sense_lock()) {				\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥ÁÊÝÎ±ŸõÂÖ€Ç€Ê€€€«€Î¥Á¥§¥Ã¥¯¡ÊE_CTX¡Ë
+ */
+#define CHECK_DISPATCH() do {								\
+	if (sense_context() || t_sense_lock() || !dspflg) {		\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  €œ€ÎÂŸ€Î¥³¥ó¥Æ¥­¥¹¥È¥š¥é¡Œ€Î¥Á¥§¥Ã¥¯¡ÊE_CTX¡Ë
+ */
+#define CHECK_CTX(exp) do {									\
+	if (!(exp)) {											\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  Œ«¥¿¥¹¥¯€ò»ØÄê€·€Æ€€€Ê€€€«€Î¥Á¥§¥Ã¥¯¡ÊE_ILUSE¡Ë
+ */
+#define CHECK_NONSELF(p_tcb) do {							\
+	if ((p_tcb) == p_runtsk) {								\
+		ercd = E_ILUSE;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  €œ€ÎÂŸ€ÎÉÔÀµ»ÈÍÑ¥š¥é¡Œ€Î¥Á¥§¥Ã¥¯¡ÊE_ILUSE¡Ë
+ */
+#define CHECK_ILUSE(exp) do {								\
+	if (!(exp)) {											\
+		ercd = E_ILUSE;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#endif /* TOPPERS_CHECK_H */
Index: /extension/messagebuf/kernel/kernel.tf
===================================================================
--- /extension/messagebuf/kernel/kernel.tf	(revision 7)
+++ /extension/messagebuf/kernel/kernel.tf	(revision 7)
@@ -0,0 +1,1160 @@
+$ ======================================================================
+$ 
+$   TOPPERS/ASP Kernel
+$       Toyohashi Open Platform for Embedded Real-Time Systems/
+$       Advanced Standard Profile Kernel
+$ 
+$   Copyright (C) 2007 by TAKAGI Nobuhisa
+$   Copyright (C) 2007-2015 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$
+$  
+$ =====================================================================
+
+$ =====================================================================
+$ 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_MBFID	$LENGTH(MBF.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 MBF.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$
+#if TKERNEL_PRID != 0x07u$NL$
+#error The kernel does not match this configuration file.$NL$
+#endif$NL$
+$NL$
+
+$ 
+$  ¥€¥ó¥¯¥ë¡Œ¥É¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¡Ê#include¡Ë
+$ 
+/*$NL$
+$SPC$*  Include Directives (#include)$NL$
+$SPC$*/$NL$
+$NL$
+$INCLUDES$
+$NL$
+
+$ 
+$  ¥ª¥Ö¥ž¥§¥¯¥È€Î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 MBF.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$
+
+$
+$  ¥¹¥¿¥Ã¥¯ÎÎ°è€Î³ÎÊÝŽØ¿ô
+$
+$IF !ISFUNCTION("ALLOC_STACK")$
+$FUNCTION ALLOC_STACK$
+$	// Âç€­€€Êý€ËŽÝ€á€¿¥µ¥€¥º€Ç³ÎÊÝ€¹€ë
+	static STK_T $ARGV[1]$[COUNT_STK_T($ARGV[2]$)];$NL$
+	$RESULT = FORMAT("ROUND_STK_T(%1%)", ARGV[2])$
+$END$
+$END$
+
+$ 
+$  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+$ 
+/*$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$
+
+$ 
+$  ¥¿¥¹¥¯
+$ 
+/*$NL$
+$SPC$*  Task Management Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ¥¿¥¹¥¯€¬1žÄ°ÊŸåÂžºß€¹€ë€³€È€Î¥Á¥§¥Ã¥¯
+$IF !LENGTH(TSK.ID_LIST)$
+	$ERROR$$FORMAT(_("no task is registered"))$$END$
+$END$
+
+$ ¥¿¥¹¥¯IDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_tskid = (TMIN_TSKID + TNUM_TSKID - 1);$NL$
+$NL$
+
+$ ¥š¥é¡Œ¥Á¥§¥Ã¥¯
+$FOREACH tskid TSK.ID_LIST$
+$	// tskatr€¬¡Ê¡ÎTA_ACT¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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$
+
+$ ¥¹¥¿¥Ã¥¯ÎÎ°è€ÎÀžÀ®€È€œ€ì€ËŽØ€¹€ë¥š¥é¡Œ¥Á¥§¥Ã¥¯
+$FOREACH tskid TSK.ID_LIST$
+$	// stksz€¬0°Ê²Œ€«¡€¥¿¡Œ¥²¥Ã¥ÈÄêµÁ€ÎºÇŸ®ÃÍ¡ÊTARGET_MIN_STKSZ¡Ë€è€ê€â
+$	// Ÿ®€µ€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$IF TSK.STKSZ[tskid] <= 0 || (TARGET_MIN_STKSZ
+									&& TSK.STKSZ[tskid] < TARGET_MIN_STKSZ)$
+		$ERROR TSK.TEXT_LINE[tskid]$E_PAR: $FORMAT(_("too small %1% `%2%\' of `%3%\' in %4%"), "stksz", TSK.STKSZ[tskid], tskid, "CRE_TSK")$$END$
+	$END$
+
+$ 	// stksz€¬¥¹¥¿¥Ã¥¯ÎÎ°è€Î¥µ¥€¥º€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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")$
+		$TSK.TINIB_STKSZ[tskid] = ALLOC_STACK(CONCAT("_kernel_stack_",
+												tskid), TSK.STKSZ[tskid])$
+		$TSK.TINIB_STK[tskid] = CONCAT("_kernel_stack_", tskid)$
+	$ELSE$
+		$TSK.TINIB_STKSZ[tskid] = FORMAT("(%1%)", TSK.STKSZ[tskid])$
+		$TSK.TINIB_STK[tskid] = FORMAT("(void *)(%1%)", TSK.STK[tskid])$
+	$END$
+$END$
+$NL$
+
+$ ¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®¡Ê¥¿¥¹¥¯€Ï1žÄ°ÊŸåÂžºß€¹€ë¡Ë
+const TINIB _kernel_tinib_table[TNUM_TSKID] = {$NL$
+$JOINEACH tskid TSK.ID_LIST ",\n"$
+$	// ¥¿¥¹¥¯Â°À­¡€³ÈÄ¥ŸðÊó¡€µ¯Æ°ÈÖÃÏ¡€µ¯Æ°»þÍ¥ÀèÅÙ
+	$TAB${
+	$SPC$($TSK.TSKATR[tskid]$), (intptr_t)($TSK.EXINF[tskid]$),
+	$SPC$((TASK)($TSK.TASK[tskid]$)), INT_PRIORITY($TSK.ITSKPRI[tskid]$),
+
+$	// ¥¿¥¹¥¯œéŽü²œ¥³¥ó¥Æ¥­¥¹¥È¥Ö¥í¥Ã¥¯¡€¥¹¥¿¥Ã¥¯ÎÎ°è
+	$IF USE_TSKINICTXB$
+		$GENERATE_TSKINICTXB(tskid)$
+	$ELSE$
+		$SPC$$TSK.TINIB_STKSZ[tskid]$, $TSK.TINIB_STK[tskid]$,
+	$END$
+
+$	// ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎÂ°À­€Èµ¯Æ°ÈÖÃÏ
+	$SPC$($ALT(TSK.TEXATR[tskid],"TA_NULL")$), ($ALT(TSK.TEXRTN[tskid],"NULL")$) }
+$END$$NL$
+};$NL$
+$NL$
+
+$ ¥¿¥¹¥¯ŽÉÍý¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+TCB _kernel_tcb_table[TNUM_TSKID];$NL$
+$NL$
+
+$ ¥¿¥¹¥¯ÀžÀ®œçœø¥Æ¡Œ¥Ö¥ë€ÎÀžÀ®
+const ID _kernel_torder_table[TNUM_TSKID] = {$NL$
+$TAB$$JOINEACH tskid TSK.ORDER_LIST ", "$$tskid$$END$$NL$
+};$NL$
+$NL$
+
+$ 
+$  ¥»¥Þ¥Õ¥©
+$ 
+/*$NL$
+$SPC$*  Semaphore Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ¥»¥Þ¥Õ¥©IDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_semid = (TMIN_SEMID + TNUM_SEMID - 1);$NL$
+$NL$
+
+$ ¥»¥Þ¥Õ¥©œéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF LENGTH(SEM.ID_LIST)$
+	const SEMINIB _kernel_seminib_table[TNUM_SEMID] = {$NL$
+	$JOINEACH semid SEM.ID_LIST ",\n"$
+$		// sematr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$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)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$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$
+
+$		// ¥»¥Þ¥Õ¥©œéŽü²œ¥Ö¥í¥Ã¥¯
+		$TAB${ ($SEM.SEMATR[semid]$), ($SEM.ISEMCNT[semid]$), ($SEM.MAXSEM[semid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// ¥»¥Þ¥Õ¥©ŽÉÍý¥Ö¥í¥Ã¥¯
+	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$
+
+$ 
+$  ¥€¥Ù¥ó¥È¥Õ¥é¥°
+$ 
+/*$NL$
+$SPC$*  Eventflag Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ¥€¥Ù¥ó¥È¥Õ¥é¥°IDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_flgid = (TMIN_FLGID + TNUM_FLGID - 1);$NL$
+$NL$
+
+$ ¥€¥Ù¥ó¥È¥Õ¥é¥°œéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF LENGTH(FLG.ID_LIST)$
+	const FLGINIB _kernel_flginib_table[TNUM_FLGID] = {$NL$
+	$JOINEACH flgid FLG.ID_LIST ",\n"$
+$		// flgatr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ã¡ÎTA_WMUL¡Ï¡Ã¡ÎTA_CLR¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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$
+
+$		// iflgptn€¬FLGPTN€Ë³ÊÇŒ€Ç€­€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$IF (FLG.IFLGPTN[flgid] & ~((1 << TBIT_FLGPTN) - 1)) != 0$
+			$ERROR FLG.TEXT_LINE[flgid]$E_PAR: $FORMAT(_("too large %1% `%2%\' of `%3%\' in %4%"), "iflgptn", FLG.IFLGPTN[flgid], flgid, "CRE_FLG")$$END$
+		$END$
+
+$		// ¥€¥Ù¥ó¥È¥Õ¥é¥°œéŽü²œ¥Ö¥í¥Ã¥¯
+		$TAB${ ($FLG.FLGATR[flgid]$), ($FLG.IFLGPTN[flgid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// ¥€¥Ù¥ó¥È¥Õ¥é¥°ŽÉÍý¥Ö¥í¥Ã¥¯
+	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$
+
+$ 
+$  ¥Ç¡Œ¥¿¥­¥å¡Œ
+$ 
+/*$NL$
+$SPC$*  Dataqueue Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ¥Ç¡Œ¥¿¥­¥å¡ŒIDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_dtqid = (TMIN_DTQID + TNUM_DTQID - 1);$NL$
+$NL$
+
+$IF LENGTH(DTQ.ID_LIST)$
+	$FOREACH dtqid DTQ.ID_LIST$
+$		// dtqatr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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$
+
+$		// dtqcnt€¬Éé€ÎŸì¹ç¡ÊE_PAR¡Ë
+		$IF DTQ.DTQCNT[dtqid] < 0$
+			$ERROR DTQ.TEXT_LINE[dtqid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "dtqcnt", DTQ.DTQCNT[dtqid], dtqid, "CRE_DTQ")$$END$
+		$END$
+
+$		// dtqmb€¬NULL€Ç€Ê€€Ÿì¹ç¡ÊE_NOSPT¡Ë
+		$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$
+
+$		// ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è
+		$IF DTQ.DTQCNT[dtqid]$
+			static DTQMB _kernel_dtqmb_$dtqid$[$DTQ.DTQCNT[dtqid]$];$NL$
+		$END$
+	$END$
+
+$	// ¥Ç¡Œ¥¿¥­¥å¡ŒœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+	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$
+
+$	// ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍý¥Ö¥í¥Ã¥¯
+	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$
+
+$ 
+$  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ
+$ 
+/*$NL$
+$SPC$*  Priority Dataqueue Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒIDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_pdqid = (TMIN_PDQID + TNUM_PDQID - 1);$NL$
+$NL$
+
+$IF LENGTH(PDQ.ID_LIST)$
+	$FOREACH pdqid PDQ.ID_LIST$
+$		// pdqatr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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$
+
+$		// pdqcnt€¬Éé€ÎŸì¹ç¡ÊE_PAR¡Ë
+		$IF PDQ.PDQCNT[pdqid] < 0$
+			$ERROR PDQ.TEXT_LINE[pdqid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "pdqcnt", PDQ.PDQCNT[pdqid], pdqid, "CRE_PDQ")$$END$
+		$END$
+
+$		// (TMIN_DPRI <= maxdpri && maxdpri <= TMAX_DPRI)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$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€Ç€Ê€€Ÿì¹ç¡ÊE_NOSPT¡Ë
+		$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$
+
+$		// Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è
+		$IF PDQ.PDQCNT[pdqid]$
+			static PDQMB _kernel_pdqmb_$pdqid$[$PDQ.PDQCNT[pdqid]$];$NL$
+		$END$
+	$END$
+
+$	// Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+	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$
+
+$	// Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍý¥Ö¥í¥Ã¥¯
+	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$
+
+$ 
+$  ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹
+$ 
+/*$NL$
+$SPC$*  Mailbox Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹IDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_mbxid = (TMIN_MBXID + TNUM_MBXID - 1);$NL$
+$NL$
+
+$ ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹œéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF LENGTH(MBX.ID_LIST)$
+	const MBXINIB _kernel_mbxinib_table[TNUM_MBXID] = {$NL$
+	$JOINEACH mbxid MBX.ID_LIST ",\n"$
+$		// mbxatr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ã¡ÎTA_MPRI¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$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€Ç€Ê€€Ÿì¹ç¡ÊE_NOSPT¡Ë
+		$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$
+
+$		// ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹œéŽü²œ¥Ö¥í¥Ã¥¯
+		$TAB${ ($MBX.MBXATR[mbxid]$), ($MBX.MAXMPRI[mbxid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹ŽÉÍý¥Ö¥í¥Ã¥¯
+	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$
+
+$
+$  ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡
+$
+/*$NL$
+$SPC$*  Message Buffer Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡IDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_mbfid = (TMIN_MBFID + TNUM_MBFID - 1);$NL$
+$NL$
+
+$IF LENGTH(MBF.ID_LIST)$
+	$FOREACH mbfid MBF.ID_LIST$
+$		// mbfatr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$IF (MBF.MBFATR[mbfid] & ~TA_TPRI) != 0$
+			$ERROR MBF.TEXT_LINE[mbfid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "mbfatr", MBF.MBFATR[mbfid], mbfid, "CRE_MBF")$$END$
+		$END$
+
+$		// maxmsz€¬0°Ê²Œ€ÎŸì¹ç¡ÊE_PAR¡Ë
+		$IF MBF.MAXMSZ[mbfid] <= 0$
+			$ERROR MBF.TEXT_LINE[mbfid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "maxmsz", MBF.MAXMSZ[mbfid], mbfid, "CRE_MBF")$$END$
+		$END$
+
+$		// mbfsz€¬Éé€ÎŸì¹ç¡ÊE_PAR¡Ë
+		$IF MBF.MBFSZ[mbfid] < 0$
+			$ERROR MBF.TEXT_LINE[mbfid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "mbfsz", MBF.MBFSZ[mbfid], mbfid, "CRE_MBF")$$END$
+		$END$
+
+$		// mbfmb€¬NULL€Ç€Ê€€Ÿì¹ç¡ÊE_NOSPT¡Ë
+		$IF !EQ(MBF.MBFMB[mbfid], "NULL")$
+			$ERROR MBF.TEXT_LINE[mbfid]$E_NOSPT: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "mbfmb", MBF.MBFMB[mbfid], mbfid, "CRE_MBF")$$END$
+		$END$
+
+$		// ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡ŽÉÍýÎÎ°è
+		$IF MBF.MBFSZ[mbfid]$
+			static uint_t _kernel_mbfmb_$mbfid$[TOPPERS_COUNT_SZ($MBF.MBFSZ[mbfid]$, sizeof(uint_t))];$NL$
+		$END$
+	$END$
+
+$	// ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡œéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+	const MBFINIB _kernel_mbfinib_table[TNUM_MBFID] = {$NL$
+	$JOINEACH mbfid MBF.ID_LIST ",\n"$
+		$TAB${ ($MBF.MBFATR[mbfid]$), ($MBF.MAXMSZ[mbfid]$), TOPPERS_ROUND_SZ($MBF.MBFSZ[mbfid]$, sizeof(uint_t)), $IF MBF.MBFSZ[mbfid]$(_kernel_mbfmb_$mbfid$)$ELSE$NULL$END$ }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡ŽÉÍý¥Ö¥í¥Ã¥¯
+	MBFCB _kernel_mbfcb_table[TNUM_MBFID];$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const MBFINIB, _kernel_mbfinib_table);$NL$
+	TOPPERS_EMPTY_LABEL(MBFCB, _kernel_mbfcb_table);$NL$
+$END$$NL$
+
+$ 
+$  žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ë
+$ 
+/*$NL$
+$SPC$*  Fixed-sized Memorypool Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëIDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_mpfid = (TMIN_MPFID + TNUM_MPFID - 1);$NL$
+$NL$
+
+$IF LENGTH(MPF.ID_LIST)$
+	$FOREACH mpfid MPF.ID_LIST$
+$		// mpfatr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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°Ê²Œ€ÎŸì¹ç¡ÊE_PAR¡Ë
+		$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°Ê²Œ€ÎŸì¹ç¡ÊE_PAR¡Ë
+		$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$
+
+$		// žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÎÎ°è
+		$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€Ç€Ê€€Ÿì¹ç¡ÊE_NOSPT¡Ë
+		$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$
+
+$		// žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëŽÉÍýÎÎ°è
+		static MPFMB _kernel_mpfmb_$mpfid$[$MPF.BLKCNT[mpfid]$];$NL$
+	$END$
+
+$	// žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+	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$(void *)($MPF.MPF[mpfid]$)$END$, (_kernel_mpfmb_$mpfid$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëŽÉÍý¥Ö¥í¥Ã¥¯
+	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$
+
+$ 
+$  ŒþŽü¥Ï¥ó¥É¥é
+$ 
+/*$NL$
+$SPC$*  Cyclic Handler Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ŒþŽü¥Ï¥ó¥É¥éIDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_cycid = (TMIN_CYCID + TNUM_CYCID - 1);$NL$
+$NL$
+
+$ ŒþŽü¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF LENGTH(CYC.ID_LIST)$
+	const CYCINIB _kernel_cycinib_table[TNUM_CYCID] = {$NL$
+	$JOINEACH cycid CYC.ID_LIST ",\n"$
+$		// cycatr€¬¡Ê¡ÎTA_STA¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$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)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$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$
+
+$		// ·Ù¹ð¡§cycatr€ËTA_STA€¬ÀßÄê€µ€ì€Æ€€€Æ¡€(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$
+
+$		// ŒþŽü¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯
+		$TAB${ ($CYC.CYCATR[cycid]$), (intptr_t)($CYC.EXINF[cycid]$), ($CYC.CYCHDR[cycid]$), ($CYC.CYCTIM[cycid]$), ($CYC.CYCPHS[cycid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// ŒþŽü¥Ï¥ó¥É¥éŽÉÍý¥Ö¥í¥Ã¥¯
+	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$
+
+$ 
+$  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é
+$ 
+/*$NL$
+$SPC$*  Alarm Handler Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éIDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_almid = (TMIN_ALMID + TNUM_ALMID - 1);$NL$
+$NL$
+
+$ ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF LENGTH(ALM.ID_LIST)$
+	const ALMINIB _kernel_alminib_table[TNUM_ALMID] = {$NL$
+	$JOINEACH almid ALM.ID_LIST ",\n"$
+$		// almatr€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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$
+
+$		// ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯
+		$TAB${ ($ALM.ALMATR[almid]$), (intptr_t)($ALM.EXINF[almid]$), ($ALM.ALMHDR[almid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éŽÉÍý¥Ö¥í¥Ã¥¯
+	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$
+
+$ ³ä¹þ€ßÈÖ¹æ€È³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ€ÎÊÑŽ¹¥Æ¡Œ¥Ö¥ë€ÎºîÀ®
+$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$
+
+$ ³ä¹þ€ßÍ×µá¥é¥€¥ó€ËŽØ€¹€ë¥š¥é¡Œ¥Á¥§¥Ã¥¯
+$i = 0$
+$FOREACH intno INT.ORDER_LIST$
+$	// intno€¬CFG_INT€ËÂÐ€¹€ë³ä¹þ€ßÈÖ¹æ€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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€Ë€è€Ã€ÆÀßÄêºÑ€ß€ÎŸì¹ç¡ÊE_OBJ¡Ë
+	$j = 0$
+	$FOREACH intno2 INT.ORDER_LIST$
+		$IF j < i && INT.INTNO[intno] == INT.INTNO[intno2]$
+			$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€¬¡Ê¡ÎTA_ENAINT¡Ï¡Ã¡ÎTA_EDGE¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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€ËÂÐ€¹€ë³ä¹þ€ßÍ¥ÀèÅÙ€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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$
+
+$	// ¥«¡Œ¥Í¥ëŽÉÍý€ËžÇÄê€µ€ì€Æ€€€ëintno€ËÂÐ€·€Æ¡€intpri€ËTMIN_INTPRI
+$	// €è€ê€âŸ®€µ€€ÃÍ€¬»ØÄê€µ€ì€¿Ÿì¹ç¡ÊE_OBJ¡Ë
+	$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$
+
+$	// ¥«¡Œ¥Í¥ëŽÉÍý³°€ËžÇÄê€µ€ì€Æ€€€ëintno€ËÂÐ€·€Æ¡€intpri€ËTMIN_INTPRI
+$	// €è€ê€âŸ®€µ€€ÃÍ€¬»ØÄê€µ€ì€Ê€«€Ã€¿Ÿì¹ç¡ÊE_OBJ¡Ë
+	$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$
+
+$ ³ä¹þ€ß¥Ï¥ó¥É¥é€ËŽØ€¹€ë¥š¥é¡Œ¥Á¥§¥Ã¥¯
+$i = 0$
+$FOREACH inhno INH.ORDER_LIST$
+$	// inhno€¬DEF_INH€ËÂÐ€¹€ë³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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€Ë€è€Ã€ÆÀßÄêºÑ€ß€ÎŸì¹ç¡ÊE_OBJ¡Ë
+	$j = 0$
+	$FOREACH inhno2 INH.ORDER_LIST$
+		$IF j < i && INH.INHNO[inhno] == INH.INHNO[inhno2]$
+			$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€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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$
+
+$	// ¥«¡Œ¥Í¥ëŽÉÍý€ËžÇÄê€µ€ì€Æ€€€ëinhno€ËÂÐ€·€Æ¡€inhatr€ËTA_NONKERNEL
+$	//¡¡€¬»ØÄê€µ€ì€Æ€€€ëŸì¹ç¡ÊE_RSATR¡Ë
+	$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$
+
+$	// ¥«¡Œ¥Í¥ëŽÉÍý³°€ËžÇÄê€µ€ì€Æ€€€ëinhno€ËÂÐ€·€Æ¡€inhatr€ËTA_NONKERNEL
+$	// €¬»ØÄê€µ€ì€Æ€€€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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€¬€Ê€€Ÿì¹ç¡ÊE_OBJ¡Ë
+		$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", intno, "inhno", INH.INHNO[inhno], "CFG_INT")$$END$
+		$ELSE$
+			$IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$
+$				// inhatr€ËTA_NONKERNEL€¬»ØÄê€µ€ì€Æ€ª€é€º¡€inhno€ËÂÐ±þ
+$				// €¹€ëintno€ËÂÐ€·€ÆCFG_INT€ÇÀßÄê€µ€ì€¿³ä¹þ€ßÍ¥ÀèÅÙ€¬
+$				// TMIN_INTPRI€è€ê€âŸ®€µ€€Ÿì¹ç¡ÊE_OBJ¡Ë
+				$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€¬»ØÄê€µ€ì€Æ€ª€ê¡€inhno€ËÂÐ±þ
+$				// €¹€ëintno€ËÂÐ€·€ÆCFG_INT€ÇÀßÄê€µ€ì€¿³ä¹þ€ßÍ¥ÀèÅÙ€¬
+$				// TMIN_INTPRI°ÊŸå€Ç€¢€ëŸì¹ç¡ÊE_OBJ¡Ë
+				$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$
+
+$ ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó¡ÊISR¡Ë€ËŽØ€¹€ë¥š¥é¡Œ¥Á¥§¥Ã¥¯€È³ä¹þ€ß¥Ï¥ó¥É¥é€ÎÀžÀ®
+$FOREACH order ISR.ORDER_LIST$
+$	// isratr€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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€ËÂÐ€¹€ë³ä¹þ€ßÈÖ¹æ€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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€ËÂÐ€·€ÆÅÐÏ¿€µ€ì€¿ISR€Î¥ê¥¹¥È€ÎºîÀ®
+	$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€ËÂÐ€·€ÆÅÐÏ¿€µ€ì€¿ISR€¬Âžºß€¹€ëŸì¹ç
+	$IF LENGTH(isr_order_list) > 0$
+$		// intno€ËÂÐ±þ€¹€ëinhno€ËÂÐ€·€ÆDEF_INH€¬€¢€ëŸì¹ç¡ÊE_OBJ¡Ë
+		$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€¬€Ê€€Ÿì¹ç¡ÊE_OBJ¡Ë
+		$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€ÇÀßÄê€µ€ì€¿³ä¹þ€ßÍ¥ÀèÅÙ€¬TMIN_INTPRI
+$			// €è€ê€âŸ®€µ€€Ÿì¹ç¡ÊE_OBJ¡Ë
+			$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)$
+
+$		// ISRÍÑ€Î³ä¹þ€ß¥Ï¥ó¥É¥é
+		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€òÍ¥ÀèÅÙœç€ËžÆ€ÓœÐ€¹
+		$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$
+
+$ 
+$  ³ä¹þ€ßŽÉÍýµ¡Çœ€Î€¿€á€ÎÉžœàÅª€ÊœéŽü²œŸðÊó€ÎÀžÀ®
+$ 
+$ ³ä¹þ€ß¥Ï¥ó¥É¥é€ÎœéŽü²œ€ËÉ¬Í×€ÊŸðÊó
+$IF !OMIT_INITIALIZE_INTERRUPT || ALT(USE_INHINIB_TABLE,0)$
+
+$ ³ä¹þ€ß¥Ï¥ó¥É¥é¿ô
+#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$
+
+$ ³ä¹þ€ß¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯
+$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$
+
+$ ³ä¹þ€ßÍ×µá¥é¥€¥ó€ÎœéŽü²œ€ËÉ¬Í×€ÊŸðÊó
+$IF !OMIT_INITIALIZE_INTERRUPT || ALT(USE_INTINIB_TABLE,0)$
+
+$ ³ä¹þ€ßÍ×µá¥é¥€¥ó¿ô
+#define TNUM_INTNO	$LENGTH(INT.ORDER_LIST)$$NL$
+const uint_t _kernel_tnum_intno = TNUM_INTNO;$NL$
+$NL$
+
+$ ³ä¹þ€ßÍ×µá¥é¥€¥óœéŽü²œ¥Ö¥í¥Ã¥¯
+$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Îã³°ŽÉÍýµ¡Çœ
+$ 
+/*$NL$
+$SPC$*  CPU Exception Management Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ CPUÎã³°¥Ï¥ó¥É¥é€ËŽØ€¹€ë¥š¥é¡Œ¥Á¥§¥Ã¥¯
+$i = 0$
+$FOREACH excno EXC.ORDER_LIST$
+$	// excno€¬DEF_EXC€ËÂÐ€¹€ëCPUÎã³°¥Ï¥ó¥É¥éÈÖ¹æ€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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€Ë€è€Ã€ÆÀßÄêºÑ€ß€ÎŸì¹ç¡ÊE_OBJ¡Ë
+	$j = 0$
+	$FOREACH excno2 EXC.ORDER_LIST$
+		$IF j < i && EXC.EXCNO[excno] == EXC.EXCNO[excno2]$
+			$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€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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Îã³°¥Ï¥ó¥É¥é€Î€¿€á€ÎÉžœàÅª€ÊœéŽü²œŸðÊó€ÎÀžÀ®
+$IF !OMIT_INITIALIZE_EXCEPTION$
+
+$ CPUÎã³°¥Ï¥ó¥É¥é¿ô
+#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Îã³°¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯
+$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$
+
+$ 
+$  Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ€Î¥¹¥¿¥Ã¥¯ÎÎ°è
+$ 
+/*$NL$
+$SPC$*  Stack Area for Non-task Context$NL$
+$SPC$*/$NL$
+$NL$
+
+$IF !LENGTH(ICS.ORDER_LIST)$
+$	// DEF_ICS€¬€Ê€€Ÿì¹ç€Î¥Ç¥Õ¥©¥ë¥ÈÃÍ€ÎÀßÄê
+	#ifdef DEFAULT_ISTK$NL$
+	$NL$
+	#define TOPPERS_ISTKSZ		DEFAULT_ISTKSZ$NL$
+	#define TOPPERS_ISTK		DEFAULT_ISTK$NL$
+	$NL$
+	#else /* DEAULT_ISTK */$NL$
+	$NL$
+	$istksz = ALLOC_STACK("_kernel_istack", "DEFAULT_ISTKSZ")$$NL$
+	#define TOPPERS_ISTKSZ		$istksz$$NL$
+	#define TOPPERS_ISTK		_kernel_istack$NL$
+	$NL$
+	#endif /* DEAULT_ISTK */$NL$
+$ELSE$
+
+$	// ÀÅÅªAPI¡ÖDEF_ICS¡×€¬Ê£¿ô€¢€ë¡ÊE_OBJ¡Ë
+	$IF LENGTH(ICS.ORDER_LIST) > 1$
+		$ERROR$E_OBJ: $FORMAT(_("too many %1%"), "DEF_ICS")$$END$
+	$END$
+
+$	// istksz€¬0°Ê²Œ€«¡€¥¿¡Œ¥²¥Ã¥ÈÄêµÁ€ÎºÇŸ®ÃÍ¡ÊTARGET_MIN_ISTKSZ¡Ë€è€ê€â
+$	// Ÿ®€µ€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$IF ICS.ISTKSZ[1] <= 0 || (TARGET_MIN_ISTKSZ
+									&& ICS.ISTKSZ[1] < TARGET_MIN_ISTKSZ)$
+		$ERROR ICS.TEXT_LINE[1]$E_PAR: $FORMAT(_("too small %1% `%2%\' in %3%"), "istksz", ICS.ISTKSZ[1], "DEF_ICS")$$END$
+	$END$
+
+$ 	// istksz€¬¥¹¥¿¥Ã¥¯ÎÎ°è€Î¥µ¥€¥º€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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")$
+$		// ¥¹¥¿¥Ã¥¯ÎÎ°è€ÎŒ«Æ°³äÉÕ€±
+		$istksz = ALLOC_STACK("_kernel_istack", ICS.ISTKSZ[1])$$NL$
+		#define TOPPERS_ISTKSZ		$istksz$$NL$
+		#define TOPPERS_ISTK		_kernel_istack$NL$
+	$ELSE$
+		#define TOPPERS_ISTKSZ		($ICS.ISTKSZ[1]$)$NL$
+		#define TOPPERS_ISTK		(void *)($ICS.ISTK[1]$)$NL$
+	$END$
+$END$
+$NL$
+
+$ Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ€Î¥¹¥¿¥Ã¥¯ÎÎ°è
+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$
+
+$ 
+$  ¥¿¥€¥à¥€¥Ù¥ó¥ÈŽÉÍý
+$ 
+/*$NL$
+$SPC$*  Time Event Management$NL$
+$SPC$*/$NL$
+$NL$
+TMEVTN   _kernel_tmevt_heap[TNUM_TSKID + TNUM_CYCID + TNUM_ALMID];$NL$
+$NL$
+
+$ 
+$  ³Æ¥â¥ž¥å¡Œ¥ë€ÎœéŽü²œŽØ¿ô
+$ 
+/*$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)$$TAB$_kernel_initialize_semaphore();$NL$$END$
+$IF LENGTH(FLG.ID_LIST)$$TAB$_kernel_initialize_eventflag();$NL$$END$
+$IF LENGTH(DTQ.ID_LIST)$$TAB$_kernel_initialize_dataqueue();$NL$$END$
+$IF LENGTH(PDQ.ID_LIST)$$TAB$_kernel_initialize_pridataq();$NL$$END$
+$IF LENGTH(MBX.ID_LIST)$$TAB$_kernel_initialize_mailbox();$NL$$END$
+$IF LENGTH(MBF.ID_LIST)$$TAB$_kernel_initialize_messagebuf();$NL$$END$
+$IF LENGTH(MPF.ID_LIST)$$TAB$_kernel_initialize_mempfix();$NL$$END$
+$IF LENGTH(CYC.ID_LIST)$$TAB$_kernel_initialize_cyclic();$NL$$END$
+$IF LENGTH(ALM.ID_LIST)$$TAB$_kernel_initialize_alarm();$NL$$END$
+$TAB$_kernel_initialize_interrupt();$NL$
+$TAB$_kernel_initialize_exception();$NL$
+}$NL$
+$NL$
+
+$ 
+$  œéŽü²œ¥ë¡Œ¥Á¥ó€ÎŒÂ¹ÔŽØ¿ô
+$ 
+/*$NL$
+$SPC$*  Initialization Routine$NL$
+$SPC$*/$NL$
+$NL$
+void$NL$
+_kernel_call_inirtn(void)$NL$
+{$NL$
+$FOREACH order INI.ORDER_LIST$
+$ 	// iniatr€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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$
+
+$ 
+$  œªÎ»œèÍý¥ë¡Œ¥Á¥ó€ÎŒÂ¹ÔŽØ¿ô
+$ 
+/*$NL$
+$SPC$*  Termination Routine$NL$
+$SPC$*/$NL$
+$NL$
+void$NL$
+_kernel_call_terrtn(void)$NL$
+{$NL$
+$FOREACH rorder TER.RORDER_LIST$
+$ 	// teratr€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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: /extension/messagebuf/kernel/kernel_api.csv
===================================================================
--- /extension/messagebuf/kernel/kernel_api.csv	(revision 7)
+++ /extension/messagebuf/kernel/kernel_api.csv	(revision 7)
@@ -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 },,
+mbf,CRE_MBF,#mbfid { .mbfatr .maxmsz .mbfsz &mbfmb },,
+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 },,
+exc,DEF_EXC,.excno { .excatr &exchdr },,
+ics,DEF_ICS,{ .istksz &istk },-1,
+ini,ATT_INI,{ .iniatr &exinf &inirtn },-1,
+ter,ATT_TER,{ .teratr &exinf &terrtn },-1,
Index: /extension/messagebuf/kernel/kernel_def.csv
===================================================================
--- /extension/messagebuf/kernel/kernel_def.csv	(revision 7)
+++ /extension/messagebuf/kernel/kernel_def.csv	(revision 7)
@@ -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
+TBIT_TEXPTN,TBIT_TEXPTN
+TBIT_FLGPTN,TBIT_FLGPTN
+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
+TARGET_MIN_ISTKSZ,#defined(TARGET_MIN_ISTKSZ),,TARGET_MIN_ISTKSZ
+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_MBFINIB,sizeof(MBFINIB)
+offsetof_MBFINIB_mbfatr,"offsetof(MBFINIB,mbfatr)"
+offsetof_MBFINIB_maxmsz,"offsetof(MBFINIB,maxmsz)"
+offsetof_MBFINIB_mbfsz,"offsetof(MBFINIB,mbfsz)"
+offsetof_MBFINIB_mbfmb,"offsetof(MBFINIB,mbfmb)"
+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: /extension/messagebuf/kernel/kernel_impl.h
===================================================================
--- /extension/messagebuf/kernel/kernel_impl.h	(revision 7)
+++ /extension/messagebuf/kernel/kernel_impl.h	(revision 7)
@@ -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-2014 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$
+ */
+
+/*
+ *		TOPPERS/ASP¥«¡Œ¥Í¥ëÆâÉôžþ€±Éžœà¥Ø¥Ã¥À¥Õ¥¡¥€¥ë
+ *
+ *  €³€Î¥Ø¥Ã¥À¥Õ¥¡¥€¥ë€Ï¡€¥«¡Œ¥Í¥ë€ò¹œÀ®€¹€ë¥×¥í¥°¥é¥à€Î¥œ¡Œ¥¹¥Õ¥¡¥€¥ë
+ *  €ÇÉ¬€º¥€¥ó¥¯¥ë¡Œ¥É€¹€ë€Ù€­Éžœà¥Ø¥Ã¥À¥Õ¥¡¥€¥ë€Ç€¢€ë¡¥
+ *
+ *  ¥¢¥»¥ó¥Ö¥êžÀžì€Î¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€«€é€³€Î¥Õ¥¡¥€¥ë€ò¥€¥ó¥¯¥ë¡Œ¥É€¹€ë»þ
+ *  €Ï¡€TOPPERS_MACRO_ONLY€òÄêµÁ€·€Æ€ª€¯¡¥€³€ì€Ë€è€ê¡€¥Þ¥¯¥íÄêµÁ°Ê³°€ò
+ *  œü€¯€è€Š€Ë€Ê€Ã€Æ€€€ë¡¥
+ */
+
+#ifndef TOPPERS_KERNEL_IMPL_H
+#define TOPPERS_KERNEL_IMPL_H
+
+/*
+ *  ¥«¡Œ¥Í¥ë€ÎÆâÉôŒ±ÊÌÌŸ€Î¥ê¥Í¡Œ¥à
+ */
+#include "kernel_rename.h"
+
+/*
+ *  ¥¢¥×¥ê¥±¡Œ¥·¥ç¥ó€È¶ŠÄÌ€Î¥Ø¥Ã¥À¥Õ¥¡¥€¥ë
+ */
+#include <kernel.h>
+
+/*
+ *  ¥·¥¹¥Æ¥à¥í¥°µ¡Çœ€Î€¿€á€ÎÄêµÁ
+ */
+#include <t_syslog.h>
+
+/*
+ *  ·¿¥­¥ã¥¹¥È€ò¹Ô€Š¥Þ¥¯¥í€ÎÄêµÁ
+ */
+#ifndef CAST
+#define CAST(type, val)		((type)(val))
+#endif /* CAST */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂžŸðÊó€ÎÄêµÁ
+ */
+#include "target_config.h"
+
+/*
+ *  €¹€Ù€Æ€ÎŽØ¿ô€ò¥³¥ó¥Ñ¥€¥ë€¹€ë€¿€á€ÎÄêµÁ
+ */
+#ifdef ALLFUNC
+#include "allfunc.h"
+#endif /* ALLFUNC */
+
+/*
+ *  ¥Ó¥Ã¥È¥Õ¥£¡Œ¥ë¥É€Ç€ÎÉä¹æÌµ€·À°¿ô·¿
+ *
+ *  8¥Ó¥Ã¥È°Ê²Œ€ÎÉý€Î¥Ó¥Ã¥È¥Õ¥£¡Œ¥ë¥É€Ç¡€Éä¹æÌµ€·À°¿ôÃÍ€òÊÝ»ý€·€¿€€Ÿì¹ç
+ *  €ËÍÑ€€€ë€Ù€­¥Ç¡Œ¥¿·¿¡¥ANSI C€Ç€Ï¡€¥Ó¥Ã¥È¥Õ¥£¡Œ¥ë¥É€Î¥Ç¡Œ¥¿·¿€Ë€Ï
+ *  int€Èunsigned int€·€«µö€µ€ì€Ê€€€¿€á¡€¥Ç¥Õ¥©¥ë¥È€ÎÄêµÁ€Ïunsigned
+ *  int€È€·€Æ€€€ë€¬¡€¥¿¡Œ¥²¥Ã¥È€ª€è€Ó¥Ä¡Œ¥ë°ÍÂž€Ç¡€unsigned char€Þ€¿€Ï
+ *  unsigned short€ËÄêµÁ€·€¿Êý€¬žúÎš€¬ÎÉ€€Ÿì¹ç€¬€¢€ë¡¥
+ */
+#ifndef BIT_FIELD_UINT
+#define BIT_FIELD_UINT		unsigned int
+#endif /* BIT_FIELD_UINT */
+
+/*
+ *  ¥Ó¥Ã¥È¥Õ¥£¡Œ¥ë¥É€Ç€Î¥Ö¡Œ¥ë·¿
+ *
+ *  1¥Ó¥Ã¥ÈÉý€Î¥Ó¥Ã¥È¥Õ¥£¡Œ¥ë¥É€Ç¡€¥Ö¡Œ¥ëÃÍ€òÊÝ»ý€·€¿€€Ÿì¹ç€ËÍÑ€€€ë€Ù€­
+ *  ¥Ç¡Œ¥¿·¿¡¥¥Ç¥Õ¥©¥ë¥È€Ç€ÏBIT_FIELD_UINT€ÈÆ±°ì€ËÄêµÁ€·€Æ€€€ë€¬¡€¥Ö¡Œ
+ *  ¥ëÃÍ€òÊÝ»ý€¹€ë€³€È€òÌÀŒš€¹€ë€¿€á€ËÊÌ€ÎÌŸŸÎ€È€·€Æ€€€ë¡¥
+ */
+#ifndef BIT_FIELD_BOOL
+#define BIT_FIELD_BOOL		BIT_FIELD_UINT
+#endif /* BIT_FIELD_BOOL */
+
+/*
+ *  ¥ª¥Ö¥ž¥§¥¯¥ÈID€ÎºÇŸ®ÃÍ€ÎÄêµÁ
+ */
+#define TMIN_TSKID		1		/* ¥¿¥¹¥¯ID€ÎºÇŸ®ÃÍ */
+#define TMIN_SEMID		1		/* ¥»¥Þ¥Õ¥©ID€ÎºÇŸ®ÃÍ */
+#define TMIN_FLGID		1		/* ¥Õ¥é¥°ID€ÎºÇŸ®ÃÍ */
+#define TMIN_DTQID		1		/* ¥Ç¡Œ¥¿¥­¥å¡ŒID€ÎºÇŸ®ÃÍ */
+#define TMIN_PDQID		1		/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒID€ÎºÇŸ®ÃÍ */
+#define TMIN_MBXID		1		/* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹ID€ÎºÇŸ®ÃÍ */
+#define TMIN_MBFID		1		/* ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡ID€ÎºÇŸ®ÃÍ */
+#define TMIN_MPFID		1		/* žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëID€ÎºÇŸ®ÃÍ */
+#define TMIN_CYCID		1		/* ŒþŽü¥Ï¥ó¥É¥éID€ÎºÇŸ®ÃÍ */
+#define TMIN_ALMID		1		/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éID€ÎºÇŸ®ÃÍ */
+
+/*
+ *  Í¥ÀèÅÙ€ÎÃÊ³¬¿ô€ÎÄêµÁ
+ */
+#define TNUM_TPRI		(TMAX_TPRI - TMIN_TPRI + 1)
+#define TNUM_MPRI		(TMAX_MPRI - TMIN_MPRI + 1)
+#define TNUM_INTPRI		(TMAX_INTPRI - TMIN_INTPRI + 1)
+
+/*
+ *  ¥Ø¥Ã¥À¥Õ¥¡¥€¥ë€ò»ý€¿€Ê€€¥â¥ž¥å¡Œ¥ë€ÎŽØ¿ô¡ŠÊÑ¿ô€ÎÀëžÀ
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  ³Æ¥â¥ž¥å¡Œ¥ë€ÎœéŽü²œ¡Êkernel_cfg.c¡Ë
+ */
+extern void	initialize_object(void);
+
+/*
+ *  œéŽü²œ¥ë¡Œ¥Á¥ó€ÎŒÂ¹Ô¡Êkernel_cfg.c¡Ë
+ */
+extern void	call_inirtn(void);
+
+/*
+ *  œªÎ»œèÍý¥ë¡Œ¥Á¥ó€ÎŒÂ¹Ô¡Êkernel_cfg.c¡Ë
+ */
+extern void	call_terrtn(void);
+
+/*
+ *  Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ€Î¥¹¥¿¥Ã¥¯ÎÎ°è¡Êkernel_cfg.c¡Ë
+ */
+extern const SIZE	istksz;		/* ¥¹¥¿¥Ã¥¯ÎÎ°è€Î¥µ¥€¥º¡ÊŽÝ€á€¿ÃÍ¡Ë */
+extern STK_T *const	istk;		/* ¥¹¥¿¥Ã¥¯ÎÎ°è€ÎÀèÆ¬ÈÖÃÏ */
+#ifdef TOPPERS_ISTKPT
+extern STK_T *const	istkpt;		/* ¥¹¥¿¥Ã¥¯¥Ý¥€¥ó¥¿€ÎœéŽüÃÍ */
+#endif /* TOPPERS_ISTKPT */
+
+/*
+ *  ¥«¡Œ¥Í¥ëÆ°ºîŸõÂÖ¥Õ¥é¥°¡Êstartup.c¡Ë
+ */
+extern bool_t	kerflg;
+
+/*
+ *  ¥«¡Œ¥Í¥ë€Îµ¯Æ°¡Êstartup.c¡Ë
+ */
+extern void	sta_ker(void);
+
+/*
+ *  ¥«¡Œ¥Í¥ë€ÎœªÎ»œèÍý¡Êstartup.c¡Ë
+ */
+extern void	exit_kernel(void);
+
+#endif /* TOPPERS_MACRO_ONLY */
+#endif /* TOPPERS_KERNEL_IMPL_H */
Index: /extension/messagebuf/kernel/kernel_int.h
===================================================================
--- /extension/messagebuf/kernel/kernel_int.h	(revision 7)
+++ /extension/messagebuf/kernel/kernel_int.h	(revision 7)
@@ -0,0 +1,84 @@
+/*
+ *  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-2014 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$
+ */
+
+/*
+ *		kernel_cfg.c¡Ê€ª€è€Ócfg1_out.c¡ËÍÑ¥Ø¥Ã¥À¥Õ¥¡¥€¥ë
+ */
+
+#ifndef TOPPERS_KERNEL_INT_H
+#define TOPPERS_KERNEL_INT_H
+
+/*
+ *  ¥«¡Œ¥Í¥ëÉžœà¥Ø¥Ã¥À¥Õ¥¡¥€¥ë
+ */
+#include "kernel_impl.h"
+
+/*
+ *  ¥«¡Œ¥Í¥ë€Î³Æ¥Ø¥Ã¥À¥Õ¥¡¥€¥ë
+ */
+#include "task.h"
+#include "semaphore.h"
+#include "eventflag.h"
+#include "dataqueue.h"
+#include "pridataq.h"
+#include "mailbox.h"
+#include "messagebuf.h"
+#include "mempfix.h"
+#include "cyclic.h"
+#include "alarm.h"
+#include "interrupt.h"
+#include "exception.h"
+#include "time_event.h"
+
+/*
+ *  ¥ê¥Í¡Œ¥à€·€¿¥·¥ó¥Ü¥ë€òžµ€ËÌá€¹€¿€á€Î¥Ø¥Ã¥À¥Õ¥¡¥€¥ë
+ */
+#include "kernel_unrename.h"
+
+/*
+ *  ÆâÍÆ€¬¶õ€ÎÇÛÎó€òÀžÀ®€¹€ë€¿€á€Î¥Þ¥¯¥í
+ */
+#ifndef TOPPERS_EMPTY_LABEL
+#define TOPPERS_EMPTY_LABEL(type, var)		type var[0]
+#endif
+
+#endif /* TOPPERS_KERNEL_INT_H */
Index: /extension/messagebuf/kernel/kernel_rename.def
===================================================================
--- /extension/messagebuf/kernel/kernel_rename.def	(revision 7)
+++ /extension/messagebuf/kernel/kernel_rename.def	(revision 7)
@@ -0,0 +1,153 @@
+# 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_dequeue_wobj
+wait_complete
+wait_tmout
+wait_tmout_ok
+wait_release
+wobj_make_wait
+wobj_make_wait_tmout
+wobj_change_priority
+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
+
+# messagebuf.c
+mbfhook_dequeue_wobj
+mbfhook_change_priority
+initialize_messagebuf
+enqueue_message
+dequeue_message
+send_message
+messagebuf_signal
+receive_message
+messagebuf_dequeue_wobj
+messagebuf_change_priority
+
+# 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
+dtqinib_table
+dtqcb_table
+tmax_pdqid
+pdqinib_table
+pdqcb_table
+tmax_mbxid
+mbxinib_table
+mbxcb_table
+tmax_mbfid
+mbfinib_table
+mbfcb_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: /extension/messagebuf/kernel/kernel_rename.h
===================================================================
--- /extension/messagebuf/kernel/kernel_rename.h	(revision 7)
+++ /extension/messagebuf/kernel/kernel_rename.h	(revision 7)
@@ -0,0 +1,382 @@
+/* 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_dequeue_wobj			_kernel_wait_dequeue_wobj
+#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 wobj_change_priority		_kernel_wobj_change_priority
+#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
+
+/*
+ *  messagebuf.c
+ */
+#define mbfhook_dequeue_wobj		_kernel_mbfhook_dequeue_wobj
+#define mbfhook_change_priority		_kernel_mbfhook_change_priority
+#define initialize_messagebuf		_kernel_initialize_messagebuf
+#define enqueue_message				_kernel_enqueue_message
+#define dequeue_message				_kernel_dequeue_message
+#define send_message				_kernel_send_message
+#define messagebuf_signal			_kernel_messagebuf_signal
+#define receive_message				_kernel_receive_message
+#define messagebuf_dequeue_wobj		_kernel_messagebuf_dequeue_wobj
+#define messagebuf_change_priority	_kernel_messagebuf_change_priority
+
+/*
+ *  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 dtqinib_table				_kernel_dtqinib_table
+#define dtqcb_table					_kernel_dtqcb_table
+#define tmax_pdqid					_kernel_tmax_pdqid
+#define pdqinib_table				_kernel_pdqinib_table
+#define pdqcb_table					_kernel_pdqcb_table
+#define tmax_mbxid					_kernel_tmax_mbxid
+#define mbxinib_table				_kernel_mbxinib_table
+#define mbxcb_table					_kernel_mbxcb_table
+#define tmax_mbfid					_kernel_tmax_mbfid
+#define mbfinib_table				_kernel_mbfinib_table
+#define mbfcb_table					_kernel_mbfcb_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_dequeue_wobj			__kernel_wait_dequeue_wobj
+#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 _wobj_change_priority		__kernel_wobj_change_priority
+#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
+
+/*
+ *  messagebuf.c
+ */
+#define _mbfhook_dequeue_wobj		__kernel_mbfhook_dequeue_wobj
+#define _mbfhook_change_priority	__kernel_mbfhook_change_priority
+#define _initialize_messagebuf		__kernel_initialize_messagebuf
+#define _enqueue_message			__kernel_enqueue_message
+#define _dequeue_message			__kernel_dequeue_message
+#define _send_message				__kernel_send_message
+#define _messagebuf_signal			__kernel_messagebuf_signal
+#define _receive_message			__kernel_receive_message
+#define _messagebuf_dequeue_wobj	__kernel_messagebuf_dequeue_wobj
+#define _messagebuf_change_priority	__kernel_messagebuf_change_priority
+
+/*
+ *  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 _dtqinib_table				__kernel_dtqinib_table
+#define _dtqcb_table				__kernel_dtqcb_table
+#define _tmax_pdqid					__kernel_tmax_pdqid
+#define _pdqinib_table				__kernel_pdqinib_table
+#define _pdqcb_table				__kernel_pdqcb_table
+#define _tmax_mbxid					__kernel_tmax_mbxid
+#define _mbxinib_table				__kernel_mbxinib_table
+#define _mbxcb_table				__kernel_mbxcb_table
+#define _tmax_mbfid					__kernel_tmax_mbfid
+#define _mbfinib_table				__kernel_mbfinib_table
+#define _mbfcb_table				__kernel_mbfcb_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: /extension/messagebuf/kernel/kernel_unrename.h
===================================================================
--- /extension/messagebuf/kernel/kernel_unrename.h	(revision 7)
+++ /extension/messagebuf/kernel/kernel_unrename.h	(revision 7)
@@ -0,0 +1,383 @@
+/* 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_dequeue_wobj
+#undef wait_complete
+#undef wait_tmout
+#undef wait_tmout_ok
+#undef wait_release
+#undef wobj_make_wait
+#undef wobj_make_wait_tmout
+#undef wobj_change_priority
+#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
+
+/*
+ *  messagebuf.c
+ */
+#undef mbfhook_dequeue_wobj
+#undef mbfhook_change_priority
+#undef initialize_messagebuf
+#undef enqueue_message
+#undef dequeue_message
+#undef send_message
+#undef messagebuf_signal
+#undef receive_message
+#undef messagebuf_dequeue_wobj
+#undef messagebuf_change_priority
+
+/*
+ *  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 dtqinib_table
+#undef dtqcb_table
+#undef tmax_pdqid
+#undef pdqinib_table
+#undef pdqcb_table
+#undef tmax_mbxid
+#undef mbxinib_table
+#undef mbxcb_table
+#undef tmax_mbfid
+#undef mbfinib_table
+#undef mbfcb_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_dequeue_wobj
+#undef _wait_complete
+#undef _wait_tmout
+#undef _wait_tmout_ok
+#undef _wait_release
+#undef _wobj_make_wait
+#undef _wobj_make_wait_tmout
+#undef _wobj_change_priority
+#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
+
+/*
+ *  messagebuf.c
+ */
+#undef _mbfhook_dequeue_wobj
+#undef _mbfhook_change_priority
+#undef _initialize_messagebuf
+#undef _enqueue_message
+#undef _dequeue_message
+#undef _send_message
+#undef _messagebuf_signal
+#undef _receive_message
+#undef _messagebuf_dequeue_wobj
+#undef _messagebuf_change_priority
+
+/*
+ *  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 _dtqinib_table
+#undef _dtqcb_table
+#undef _tmax_pdqid
+#undef _pdqinib_table
+#undef _pdqcb_table
+#undef _tmax_mbxid
+#undef _mbxinib_table
+#undef _mbxcb_table
+#undef _tmax_mbfid
+#undef _mbfinib_table
+#undef _mbfcb_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: /extension/messagebuf/kernel/messagebuf.c
===================================================================
--- /extension/messagebuf/kernel/messagebuf.c	(revision 7)
+++ /extension/messagebuf/kernel/messagebuf.c	(revision 7)
@@ -0,0 +1,731 @@
+/*
+ *  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-2014 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$
+ */
+
+/*
+ *		¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡µ¡Çœ
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+#include "messagebuf.h"
+#include <string.h>
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#ifndef LOG_SND_MBF_ENTER
+#define LOG_SND_MBF_ENTER(mbfid, msg, msgsz)
+#endif /* LOG_SND_MBF_ENTER */
+
+#ifndef LOG_SND_MBF_LEAVE
+#define LOG_SND_MBF_LEAVE(ercd)
+#endif /* LOG_SND_MBF_LEAVE */
+
+#ifndef LOG_PSND_MBF_ENTER
+#define LOG_PSND_MBF_ENTER(mbfid, msg, msgsz)
+#endif /* LOG_PSND_MBF_ENTER */
+
+#ifndef LOG_PSND_MBF_LEAVE
+#define LOG_PSND_MBF_LEAVE(ercd)
+#endif /* LOG_PSND_MBF_LEAVE */
+
+#ifndef LOG_TSND_MBF_ENTER
+#define LOG_TSND_MBF_ENTER(mbfid, msg, msgsz, tmout)
+#endif /* LOG_TSND_MBF_ENTER */
+
+#ifndef LOG_TSND_MBF_LEAVE
+#define LOG_TSND_MBF_LEAVE(ercd)
+#endif /* LOG_TSND_MBF_LEAVE */
+
+#ifndef LOG_RCV_MBF_ENTER
+#define LOG_RCV_MBF_ENTER(mbfid, msg)
+#endif /* LOG_RCV_MBF_ENTER */
+
+#ifndef LOG_RCV_MBF_LEAVE
+#define LOG_RCV_MBF_LEAVE(msgsz, msg)
+#endif /* LOG_RCV_MBF_LEAVE */
+
+#ifndef LOG_PRCV_MBF_ENTER
+#define LOG_PRCV_MBF_ENTER(mbfid, msg)
+#endif /* LOG_PRCV_MBF_ENTER */
+
+#ifndef LOG_PRCV_MBF_LEAVE
+#define LOG_PRCV_MBF_LEAVE(msgsz, msg)
+#endif /* LOG_PRCV_MBF_LEAVE */
+
+#ifndef LOG_TRCV_MBF_ENTER
+#define LOG_TRCV_MBF_ENTER(mbfid, msg, tmout)
+#endif /* LOG_TRCV_MBF_ENTER */
+
+#ifndef LOG_TRCV_MBF_LEAVE
+#define LOG_TRCV_MBF_LEAVE(msgsz, msg)
+#endif /* LOG_TRCV_MBF_LEAVE */
+
+#ifndef LOG_INI_MBF_ENTER
+#define LOG_INI_MBF_ENTER(mbfid)
+#endif /* LOG_INI_MBF_ENTER */
+
+#ifndef LOG_INI_MBF_LEAVE
+#define LOG_INI_MBF_LEAVE(ercd)
+#endif /* LOG_INI_MBF_LEAVE */
+
+#ifndef LOG_REF_MBF_ENTER
+#define LOG_REF_MBF_ENTER(mbfid, pk_rmbf)
+#endif /* LOG_REF_MBF_ENTER */
+
+#ifndef LOG_REF_MBF_LEAVE
+#define LOG_REF_MBF_LEAVE(ercd, pk_rmbf)
+#endif /* LOG_REF_MBF_LEAVE */
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€Î¿ô
+ */
+#define tnum_mbf	((uint_t)(tmax_mbfid - TMIN_MBFID + 1))
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡ID€«€é¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡ŽÉÍý¥Ö¥í¥Ã¥¯€òŒè€êœÐ€¹€¿
+ *  €á€Î¥Þ¥¯¥í
+ */
+#define INDEX_MBF(mbfid)	((uint_t)((mbfid) - TMIN_MBFID))
+#define get_mbfcb(mbfid)	(&(mbfcb_table[INDEX_MBF(mbfid)]))
+
+/*
+ *  ¥Õ¥Ã¥¯¥ë¡Œ¥Á¥óžÆœÐ€·ÍÑ€ÎÊÑ¿ô
+ */
+#ifdef TOPPERS_mbfhook
+
+bool_t	(*mbfhook_dequeue_wobj)(TCB *p_tcb) = NULL;
+bool_t	(*mbfhook_change_priority)(WOBJCB *p_wobjcb) = NULL;
+
+#endif /* TOPPERS_mbfhook */
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡µ¡Çœ€ÎœéŽü²œ
+ */
+#ifdef TOPPERS_mbfini
+
+void
+initialize_messagebuf(void)
+{
+	uint_t	i;
+	MBFCB	*p_mbfcb;
+
+	mbfhook_dequeue_wobj = messagebuf_dequeue_wobj;
+	mbfhook_change_priority = messagebuf_change_priority;
+
+	for (i = 0; i < tnum_mbf; i++) {
+		p_mbfcb = &(mbfcb_table[i]);
+		queue_initialize(&(p_mbfcb->swait_queue));
+		p_mbfcb->p_mbfinib = &(mbfinib_table[i]);
+		queue_initialize(&(p_mbfcb->rwait_queue));
+		p_mbfcb->fmbfsz = p_mbfcb->p_mbfinib->mbfsz;
+		p_mbfcb->head = 0U;
+		p_mbfcb->tail = 0U;
+		p_mbfcb->smbfcnt = 0U;
+	}
+}
+
+#endif /* TOPPERS_mbfini */
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡ŽÉÍýÎÎ°è€Ø€Î¥á¥Ã¥»¡Œ¥ž€Î³ÊÇŒ
+ */
+#ifdef TOPPERS_mbfenq
+
+bool_t
+enqueue_message(MBFCB *p_mbfcb, const void *msg, uint_t msgsz)
+{
+	const MBFINIB	*p_mbfinib = p_mbfcb->p_mbfinib;
+	char	*mbuffer = (char *)(p_mbfinib->mbfmb);
+	uint_t	allocsz;
+	SIZE	remsz;
+
+	allocsz = sizeof(uint_t) + TOPPERS_ROUND_SZ(msgsz, sizeof(uint_t));
+	if (allocsz <= p_mbfcb->fmbfsz) {
+		*((uint_t *) &(mbuffer[p_mbfcb->tail])) = msgsz;
+		p_mbfcb->tail += sizeof(uint_t);
+		if (p_mbfcb->tail >= p_mbfinib->mbfsz) {
+			p_mbfcb->tail = 0U;
+		}
+
+		remsz = p_mbfinib->mbfsz - p_mbfcb->tail;
+		if (remsz < msgsz) {
+			memcpy(&(mbuffer[p_mbfcb->tail]), msg, remsz);
+			msg = ((char *) msg) + remsz;
+			msgsz -= remsz;
+			p_mbfcb->tail = 0U;
+		}
+		memcpy(&(mbuffer[p_mbfcb->tail]), msg, msgsz);
+		p_mbfcb->tail += TOPPERS_ROUND_SZ(msgsz, sizeof(uint_t));
+		if (p_mbfcb->tail >= p_mbfinib->mbfsz) {
+			p_mbfcb->tail = 0U;
+		}
+
+		p_mbfcb->fmbfsz -= allocsz;
+		p_mbfcb->smbfcnt++;
+		return(true);
+	}
+	return(false);
+}
+
+#endif /* TOPPERS_mbfenq */
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡ŽÉÍýÎÎ°è€«€é€Î¥á¥Ã¥»¡Œ¥ž€ÎŒèœÐ€·
+ */
+#ifdef TOPPERS_mbfdeq
+
+uint_t
+dequeue_message(MBFCB *p_mbfcb, void *msg)
+{
+	const MBFINIB	*p_mbfinib = p_mbfcb->p_mbfinib;
+	char	*mbuffer = (char *)(p_mbfinib->mbfmb);
+	uint_t	msgsz, copysz;
+	SIZE	remsz;
+
+	assert(p_mbfcb->smbfcnt > 0);
+	msgsz = *((uint_t *) &(mbuffer[p_mbfcb->head]));
+	p_mbfcb->head += sizeof(uint_t);
+	if (p_mbfcb->head >= p_mbfcb->p_mbfinib->mbfsz) {
+		p_mbfcb->head = 0U;
+	}
+
+	remsz = p_mbfcb->p_mbfinib->mbfsz - p_mbfcb->head;
+	copysz = msgsz;
+	if (remsz < copysz) {
+		memcpy(msg, &(mbuffer[p_mbfcb->head]), remsz);
+		msg = ((char *) msg) + remsz;
+		copysz -= remsz;
+		p_mbfcb->head = 0U;
+	}
+	memcpy(msg, &(mbuffer[p_mbfcb->head]), copysz);
+	p_mbfcb->head += TOPPERS_ROUND_SZ(copysz, sizeof(uint_t));
+	if (p_mbfcb->head >= p_mbfcb->p_mbfinib->mbfsz) {
+		p_mbfcb->head = 0U;
+	}
+
+	p_mbfcb->fmbfsz += sizeof(uint_t) + TOPPERS_ROUND_SZ(msgsz, sizeof(uint_t));
+	p_mbfcb->smbfcnt--;
+	return(msgsz);
+}
+
+#endif /* TOPPERS_mbfdeq */
+
+/*
+ *  Á÷¿®ÂÔ€Á¹ÔÎó€ËŒ«¥¿¥¹¥¯€è€êÍ¥Àè€·€Æ¥á¥Ã¥»¡Œ¥ž€òÁ÷¿®€Ç€­€ë¥¿¥¹¥¯€¬Âž
+ *  ºß€·€Ê€€Ÿì¹ç€Ëtrue€òÊÖ€¹ŽØ¿ô
+ */
+Inline bool_t
+have_precedence(MBFCB *p_mbfcb)
+{
+	if (queue_empty(&(p_mbfcb->swait_queue))) {
+		/* Á÷¿®ÂÔ€Á¹ÔÎó€¬¶õ€Î»þ */
+		return(true);
+	}
+	else if ((p_mbfcb->p_mbfinib->mbfatr & TA_TPRI) != 0) {
+		if (((TCB *)(p_mbfcb->swait_queue.p_next))->priority
+												> p_runtsk->priority) {
+			/* Á÷¿®ÂÔ€Á¹ÔÎó€¬¥¿¥¹¥¯€ÎÍ¥ÀèÅÙœç€Ç¡€
+					ÀèÆ¬€Î¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€¬Œ«¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€è€ê€âÄã€€»þ */
+			return(true);
+		}
+	}
+	return(false);
+}
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€Ø€Î¥á¥Ã¥»¡Œ¥žÁ÷¿®
+ */
+#ifdef TOPPERS_mbfsnd
+
+bool_t
+send_message(MBFCB *p_mbfcb, const void *msg, uint_t msgsz, bool_t *p_dspreq)
+{
+	TCB		*p_tcb;
+
+	if (!queue_empty(&(p_mbfcb->rwait_queue))) {
+		p_tcb = (TCB *) queue_delete_next(&(p_mbfcb->rwait_queue));
+		memcpy(((WINFO_MBF *)(p_tcb->p_winfo))->msg, msg, msgsz);
+		((WINFO_MBF *)(p_tcb->p_winfo))->msgsz = msgsz;
+		*p_dspreq = wait_complete(p_tcb);
+		return(true);
+	}
+	else if (have_precedence(p_mbfcb)
+							&& enqueue_message(p_mbfcb, msg, msgsz)) {
+		*p_dspreq = false;
+		return(true);
+	}
+	else {
+		return(false);
+	}
+}
+
+#endif /* TOPPERS_mbfsnd */
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡Á÷¿®ÂÔ€Á¥¿¥¹¥¯€Î¥Á¥§¥Ã¥¯
+ *
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡Á÷¿®ÂÔ€Á¥­¥å¡Œ€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎÁ÷¿®¥á¥Ã¥»¡Œ¥ž€¬¡€
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡ŽÉÍýÎÎ°è€Ë³ÊÇŒ€¹€ë€³€È€Ç€­€ì€Ð³ÊÇŒ€·¡€ÂÔ€Á²òœü€¹
+ *  €ë¡¥€³€ÎœèÍý€ò¡€ÀèÆ¬€Î¥¿¥¹¥¯€ÎÁ÷¿®¥á¥Ã¥»¡Œ¥ž€¬³ÊÇŒ€Ç€­€Ê€¯€Ê€ë€Þ€Ç
+ *  ·«€êÊÖ€¹¡¥
+ */
+#ifdef TOPPERS_mbfsig
+
+bool_t
+messagebuf_signal(MBFCB *p_mbfcb)
+{
+	TCB		*p_tcb;
+	bool_t	dspreq = false;
+
+	while (!queue_empty(&(p_mbfcb->swait_queue))) {
+		p_tcb = (TCB *)(p_mbfcb->swait_queue.p_next);
+		if (enqueue_message(p_mbfcb, ((WINFO_MBF *)(p_tcb->p_winfo))->msg,
+									((WINFO_MBF *)(p_tcb->p_winfo))->msgsz)) {
+			queue_delete(&(p_tcb->task_queue));
+			if (wait_complete(p_tcb)) {
+				dspreq = true;
+			}
+		}
+		else {
+			break;
+		}
+	}
+	return(dspreq);
+}
+
+#endif /* TOPPERS_mbfsig */
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€«€é€Î¥á¥Ã¥»¡Œ¥žŒõ¿®
+ */
+#ifdef TOPPERS_mbfrcv
+
+uint_t
+receive_message(MBFCB *p_mbfcb, void *msg, bool_t *p_dspreq)
+{
+	TCB		*p_tcb;
+	uint_t	msgsz;
+
+	if (p_mbfcb->smbfcnt > 0) {
+		msgsz = dequeue_message(p_mbfcb, msg);
+		*p_dspreq = messagebuf_signal(p_mbfcb);
+		return(msgsz);
+	}
+	else if (!queue_empty(&(p_mbfcb->swait_queue))) {
+		p_tcb = (TCB *) queue_delete_next(&(p_mbfcb->swait_queue));
+		msgsz = ((WINFO_MBF *)(p_tcb->p_winfo))->msgsz;
+		memcpy(msg, ((WINFO_MBF *)(p_tcb->p_winfo))->msg, msgsz);
+		*p_dspreq = wait_complete(p_tcb);
+		return(msgsz);
+	}
+	else {
+		return(0U);
+	}
+}
+
+#endif /* TOPPERS_mbfrcv */
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡Á÷¿®ÂÔ€Á¥¿¥¹¥¯€ÎÂÔ€Á²òœü»þœèÍý
+ */
+#ifdef TOPPERS_mbfwobj
+
+bool_t
+messagebuf_dequeue_wobj(TCB *p_tcb)
+{
+	return(messagebuf_signal(((WINFO_MBF *)(p_tcb->p_winfo))->p_mbfcb));
+}
+
+#endif /* TOPPERS_mbfwobj */
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡Á÷¿®ÂÔ€Á¥¿¥¹¥¯€ÎÍ¥ÀèÅÙÊÑ¹¹»þœèÍý
+ */
+#ifdef TOPPERS_mbfpri
+
+bool_t
+messagebuf_change_priority(WOBJCB *p_wobjcb)
+{
+	return(messagebuf_signal((MBFCB *) p_wobjcb));
+}
+
+#endif /* TOPPERS_mbfpri */
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€Ø€ÎÁ÷¿®
+ */
+#ifdef TOPPERS_snd_mbf
+
+ER
+snd_mbf(ID mbfid, const void *msg, uint_t msgsz)
+{
+	MBFCB	*p_mbfcb;
+	WINFO_MBF winfo_mbf;
+	bool_t	dspreq;
+	ER		ercd;
+
+	LOG_SND_MBF_ENTER(mbfid, msg, msgsz);
+	CHECK_DISPATCH();
+	CHECK_MBFID(mbfid);
+	p_mbfcb = get_mbfcb(mbfid);
+	CHECK_PAR(0 < msgsz && msgsz <= p_mbfcb->p_mbfinib->maxmsz);
+
+	t_lock_cpu();
+	if (send_message(p_mbfcb, msg, msgsz, &dspreq)) {
+		if (dspreq) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else {
+		winfo_mbf.msg = (void *) msg;
+		winfo_mbf.msgsz = msgsz;
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_SMBF);
+		wobj_make_wait((WOBJCB *) p_mbfcb, (WINFO_WOBJ *) &winfo_mbf);
+		dispatch();
+		ercd = winfo_mbf.winfo.wercd;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_SND_MBF_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_snd_mbf */
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€Ø€ÎÁ÷¿®¡Ê¥Ý¡Œ¥ê¥ó¥°¡Ë
+ */
+#ifdef TOPPERS_psnd_mbf
+
+ER
+psnd_mbf(ID mbfid, const void *msg, uint_t msgsz)
+{
+	MBFCB	*p_mbfcb;
+	bool_t	dspreq;
+	ER		ercd;
+
+	LOG_PSND_MBF_ENTER(mbfid, msg, msgsz);
+	CHECK_TSKCTX_UNL();
+	CHECK_MBFID(mbfid);
+	p_mbfcb = get_mbfcb(mbfid);
+	CHECK_PAR(0 < msgsz && msgsz <= p_mbfcb->p_mbfinib->maxmsz);
+
+	t_lock_cpu();
+	if (send_message(p_mbfcb, msg, msgsz, &dspreq)) {
+		if (dspreq) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_TMOUT;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_PSND_MBF_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_psnd_mbf */
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€Ø€ÎÁ÷¿®¡Ê¥¿¥€¥à¥¢¥Š¥È€¢€ê¡Ë
+ */
+#ifdef TOPPERS_tsnd_mbf
+
+ER
+tsnd_mbf(ID mbfid, const void *msg, uint_t msgsz, TMO tmout)
+{
+	MBFCB	*p_mbfcb;
+	WINFO_MBF winfo_mbf;
+	TMEVTB	tmevtb;
+	bool_t	dspreq;
+	ER		ercd;
+
+	LOG_TSND_MBF_ENTER(mbfid, msg, msgsz, tmout);
+	CHECK_DISPATCH();
+	CHECK_MBFID(mbfid);
+	CHECK_TMOUT(tmout);
+	p_mbfcb = get_mbfcb(mbfid);
+	CHECK_PAR(0 < msgsz && msgsz <= p_mbfcb->p_mbfinib->maxmsz);
+
+	t_lock_cpu();
+	if (send_message(p_mbfcb, msg, msgsz, &dspreq)) {
+		if (dspreq) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else if (tmout == TMO_POL) {
+		ercd = E_TMOUT;
+	}
+	else {
+		winfo_mbf.msg = (void *) msg;
+		winfo_mbf.msgsz = msgsz;
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_SMBF);
+		wobj_make_wait_tmout((WOBJCB *) p_mbfcb, (WINFO_WOBJ *) &winfo_mbf,
+														&tmevtb, tmout);
+		dispatch();
+		ercd = winfo_mbf.winfo.wercd;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_TSND_MBF_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_tsnd_mbf */
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€«€é€ÎŒõ¿®
+ */
+#ifdef TOPPERS_rcv_mbf
+
+ER_UINT
+rcv_mbf(ID mbfid, void *msg)
+{
+	MBFCB	*p_mbfcb;
+	WINFO_MBF winfo_mbf;
+	uint_t	msgsz;
+	bool_t	dspreq;
+	ER_UINT	ercd;
+
+	LOG_RCV_MBF_ENTER(mbfid, msg);
+	CHECK_DISPATCH();
+	CHECK_MBFID(mbfid);
+	p_mbfcb = get_mbfcb(mbfid);
+
+	t_lock_cpu();
+	if ((msgsz = receive_message(p_mbfcb, msg, &dspreq)) > 0U) {
+		if (dspreq) {
+			dispatch();
+		}
+		ercd = (ER_UINT) msgsz;
+	}
+	else {
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_RMBF);
+		make_wait(&(winfo_mbf.winfo));
+		queue_insert_prev(&(p_mbfcb->rwait_queue), &(p_runtsk->task_queue));
+		winfo_mbf.p_mbfcb = p_mbfcb;
+		winfo_mbf.msg = msg;
+		LOG_TSKSTAT(p_runtsk);
+		dispatch();
+		ercd = winfo_mbf.winfo.wercd;
+		if (ercd == E_OK) {
+			ercd = (ER_UINT)(winfo_mbf.msgsz);
+		}
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_RCV_MBF_LEAVE(ercd, msg);
+	return(ercd);
+}
+
+#endif /* TOPPERS_rcv_mbf */
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€«€é€ÎŒõ¿®¡Ê¥Ý¡Œ¥ê¥ó¥°¡Ë
+ */
+#ifdef TOPPERS_prcv_mbf
+
+ER
+prcv_mbf(ID mbfid, void *msg)
+{
+	MBFCB	*p_mbfcb;
+	uint_t	msgsz;
+	bool_t	dspreq;
+	ER_UINT	ercd;
+
+	LOG_PRCV_MBF_ENTER(mbfid, msg);
+	CHECK_TSKCTX_UNL();
+	CHECK_MBFID(mbfid);
+	p_mbfcb = get_mbfcb(mbfid);
+
+	t_lock_cpu();
+	if ((msgsz = receive_message(p_mbfcb, msg, &dspreq)) > 0U) {
+		if (dspreq) {
+			dispatch();
+		}
+		ercd = (ER_UINT) msgsz;
+	}
+	else {
+		ercd = E_TMOUT;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_PRCV_MBF_LEAVE(ercd, msg);
+	return(ercd);
+}
+
+#endif /* TOPPERS_prcv_mbf */
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€«€é€ÎŒõ¿®¡Ê¥¿¥€¥à¥¢¥Š¥È€¢€ê¡Ë
+ */
+#ifdef TOPPERS_trcv_mbf
+
+ER
+trcv_mbf(ID mbfid, void *msg, TMO tmout)
+{
+	MBFCB	*p_mbfcb;
+	WINFO_MBF winfo_mbf;
+	TMEVTB	tmevtb;
+	uint_t	msgsz;
+	bool_t	dspreq;
+	ER_UINT	ercd;
+
+	LOG_TRCV_MBF_ENTER(mbfid, msg, tmout);
+	CHECK_DISPATCH();
+	CHECK_MBFID(mbfid);
+	CHECK_TMOUT(tmout);
+	p_mbfcb = get_mbfcb(mbfid);
+
+	t_lock_cpu();
+	if ((msgsz = receive_message(p_mbfcb, msg, &dspreq)) > 0U) {
+		if (dspreq) {
+			dispatch();
+		}
+		ercd = (ER_UINT) msgsz;
+	}
+	else if (tmout == TMO_POL) {
+		ercd = E_TMOUT;
+	}
+	else {
+		p_runtsk->tstat = (TS_WAITING | TS_WAIT_RMBF);
+		make_wait_tmout(&(winfo_mbf.winfo), &tmevtb, tmout);
+		queue_insert_prev(&(p_mbfcb->rwait_queue), &(p_runtsk->task_queue));
+		winfo_mbf.p_mbfcb = p_mbfcb;
+		winfo_mbf.msg = msg;
+		LOG_TSKSTAT(p_runtsk);
+		dispatch();
+		ercd = winfo_mbf.winfo.wercd;
+		if (ercd == E_OK) {
+			ercd = (ER_UINT)(winfo_mbf.msgsz);
+		}
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_TRCV_MBF_LEAVE(ercd, msg);
+	return(ercd);
+}
+
+#endif /* TOPPERS_trcv_mbf */
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€ÎºÆœéŽü²œ
+ */
+#ifdef TOPPERS_ini_mbf
+
+ER
+ini_mbf(ID mbfid)
+{
+	MBFCB	*p_mbfcb;
+	bool_t	dspreq;
+	ER		ercd;
+    
+	LOG_INI_MBF_ENTER(mbfid);
+	CHECK_TSKCTX_UNL();
+	CHECK_MBFID(mbfid);
+	p_mbfcb = get_mbfcb(mbfid);
+
+	t_lock_cpu();
+	dspreq = init_wait_queue(&(p_mbfcb->swait_queue));
+	if (init_wait_queue(&(p_mbfcb->rwait_queue))) {
+		dspreq = true;
+	}
+	p_mbfcb->fmbfsz = p_mbfcb->p_mbfinib->mbfsz;
+	p_mbfcb->head = 0U;
+	p_mbfcb->tail = 0U;
+	p_mbfcb->smbfcnt = 0U;
+	if (dspreq) {
+		dispatch();
+	}
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_INI_MBF_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ini_mbf */
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€ÎŸõÂÖ»²ŸÈ
+ */
+#ifdef TOPPERS_ref_mbf
+
+ER
+ref_mbf(ID mbfid, T_RMBF *pk_rmbf)
+{
+	MBFCB	*p_mbfcb;
+	ER		ercd;
+    
+	LOG_REF_MBF_ENTER(mbfid, pk_rmbf);
+	CHECK_TSKCTX_UNL();
+	CHECK_MBFID(mbfid);
+	p_mbfcb = get_mbfcb(mbfid);
+
+	t_lock_cpu();
+	pk_rmbf->stskid = wait_tskid(&(p_mbfcb->swait_queue));
+	pk_rmbf->rtskid = wait_tskid(&(p_mbfcb->rwait_queue));
+	pk_rmbf->smbfcnt = p_mbfcb->smbfcnt;
+	pk_rmbf->fmbfsz = p_mbfcb->fmbfsz;
+	ercd = E_OK;
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_REF_MBF_LEAVE(ercd, pk_rmbf);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ref_mbf */
Index: /extension/messagebuf/kernel/messagebuf.h
===================================================================
--- /extension/messagebuf/kernel/messagebuf.h	(revision 7)
+++ /extension/messagebuf/kernel/messagebuf.h	(revision 7)
@@ -0,0 +1,163 @@
+/*
+ *  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-2014 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$
+ */
+
+/*
+ *		¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡µ¡Çœ
+ */
+
+#ifndef TOPPERS_MESSAGEBUF_H
+#define TOPPERS_MESSAGEBUF_H
+
+#include "wait.h"
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡œéŽü²œ¥Ö¥í¥Ã¥¯
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎœéŽü²œ¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬
+ *  ¡ÊWOBJINIB¡Ë€ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀžì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç¡€
+ *  ºÇœé€Î¥Õ¥£¡Œ¥ë¥É€¬¶ŠÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥
+ */
+typedef struct messagebuf_initialization_block {
+	ATR			mbfatr;			/* ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡Â°À­ */
+	uint_t		maxmsz;			/* ¥á¥Ã¥»¡Œ¥ž€ÎºÇÂçÄ¹ */
+	SIZE		mbfsz;			/* ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡ŽÉÍýÎÎ°è€Î¥µ¥€¥º */
+	void		*mbfmb;			/* ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡ŽÉÍýÎÎ°è€ÎÀèÆ¬ÈÖÃÏ */
+} MBFINIB;
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡ŽÉÍý¥Ö¥í¥Ã¥¯
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬¡ÊWOBJCB¡Ë
+ *  €ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀžì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç¡€ºÇœé€Î2€Ä€Î
+ *  ¥Õ¥£¡Œ¥ë¥É€¬¶ŠÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥
+ */
+typedef struct messagebuf_control_block {
+	QUEUE		swait_queue;	/* ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡Á÷¿®ÂÔ€Á¥­¥å¡Œ */
+	const MBFINIB *p_mbfinib;	/* œéŽü²œ¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿ */
+	QUEUE		rwait_queue;	/* ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡Œõ¿®ÂÔ€Á¥­¥å¡Œ */
+	SIZE		fmbfsz;			/* ¶õ€­ÎÎ°è€Î¥µ¥€¥º */
+	SIZE		head;			/* ºÇœé€Î¥á¥Ã¥»¡Œ¥ž€Î³ÊÇŒŸìœê */
+	SIZE		tail;			/* ºÇžå€Î¥á¥Ã¥»¡Œ¥ž€Î³ÊÇŒŸìœê€ÎŒ¡ */
+	uint_t		smbfcnt;		/* ŽÉÍýÎÎ°è€Ë³ÊÇŒ€µ€ì€Æ€€€ë¥á¥Ã¥»¡Œ¥ž€Î¿ô */
+} MBFCB;
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡ÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯€ÎÄêµÁ
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬
+ *  ¡ÊWINFO_WOBJ¡Ë€ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀžì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç¡€
+ *  ºÇœé€Î2€Ä€Î¥Õ¥£¡Œ¥ë¥É€¬¶ŠÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€Ø€ÎÁ÷¿®ÂÔ€Á€È¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€«€é€ÎŒõ¿®ÂÔ€Á€Ç¡€
+ *  Æ±€žÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯€ò»È€Š¡¥
+ */
+typedef struct messagebuf_waiting_information {
+	WINFO		winfo;			/* Éžœà€ÎÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯ */
+	MBFCB		*p_mbfcb;		/* ÂÔ€Ã€Æ€€€ë¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€ÎŽÉÍý¥Ö¥í¥Ã¥¯ */
+	void		*msg;			/* Á÷Œõ¿®¥á¥Ã¥»¡Œ¥ž */
+	uint_t		msgsz;			/* Á÷Œõ¿®¥á¥Ã¥»¡Œ¥ž¥µ¥€¥º */
+} WINFO_MBF;
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡ID€ÎºÇÂçÃÍ¡Êkernel_cfg.c¡Ë
+ */
+extern const ID	tmax_mbfid;
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡œéŽü²œ¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern const MBFINIB	mbfinib_table[];
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡ŽÉÍý¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern MBFCB	mbfcb_table[];
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡ŽÉÍý¥Ö¥í¥Ã¥¯€«€é¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡ID€òŒè€êœÐ€¹€¿
+ *  €á€Î¥Þ¥¯¥í
+ */
+#define	MBFID(p_mbfcb)	((ID)(((p_mbfcb) - mbfcb_table) + TMIN_MBFID))
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡µ¡Çœ€ÎœéŽü²œ
+ */
+extern void	initialize_messagebuf(void);
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡ŽÉÍýÎÎ°è€Ø€Î¥á¥Ã¥»¡Œ¥ž€Î³ÊÇŒ
+ */
+extern bool_t	enqueue_message(MBFCB *p_mbfcb, const void *msg, uint_t msgsz);
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡ŽÉÍýÎÎ°è€«€é€Î¥á¥Ã¥»¡Œ¥ž€ÎŒèœÐ€·
+ */
+extern uint_t	dequeue_message(MBFCB *p_mbfcb, void *msg);
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€Ø€Î¥á¥Ã¥»¡Œ¥žÁ÷¿®
+ */
+extern bool_t	send_message(MBFCB *p_mbfcb, const void *msg,
+											uint_t msgsz, bool_t *p_dspreq);
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡Á÷¿®ÂÔ€Á¥¿¥¹¥¯€Î¥Á¥§¥Ã¥¯
+ */
+extern bool_t	messagebuf_signal(MBFCB *p_mbfcb);
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€«€é€Î¥á¥Ã¥»¡Œ¥žŒõ¿®
+ */
+extern uint_t	receive_message(MBFCB *p_mbfcb, void *msg, bool_t *p_dspreq);
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡Á÷¿®ÂÔ€Á¥¿¥¹¥¯€ÎÂÔ€Á²òœü»þœèÍý
+ */
+extern bool_t	(*mbfhook_dequeue_wobj)(TCB *p_tcb);
+extern bool_t	messagebuf_dequeue_wobj(TCB *p_tcb);
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡Á÷¿®ÂÔ€Á¥¿¥¹¥¯€ÎÍ¥ÀèÅÙÊÑ¹¹»þœèÍý
+ */
+extern bool_t	(*mbfhook_change_priority)(WOBJCB *p_wobjcb);
+extern bool_t	messagebuf_change_priority(WOBJCB *p_wobjcb);
+
+#endif /* TOPPERS_MESSAGEBUF_H */
Index: /extension/messagebuf/kernel/task.c
===================================================================
--- /extension/messagebuf/kernel/task.c	(revision 7)
+++ /extension/messagebuf/kernel/task.c	(revision 7)
@@ -0,0 +1,483 @@
+/*
+ *  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-2014 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$
+ */
+
+/*
+ *		¥¿¥¹¥¯ŽÉÍý¥â¥ž¥å¡Œ¥ë
+ */
+
+#include "kernel_impl.h"
+#include "wait.h"
+#include "task.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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
+
+/*
+ *  ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯
+ */
+TCB		*p_runtsk;
+
+/*
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯
+ */
+TCB		*p_schedtsk;
+
+/*
+ *  ¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á¡¿¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óµ¯Æ°Í×µá¥Õ¥é¥°
+ */
+bool_t	reqflg;
+
+/*
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ
+ */
+bool_t	ipmflg;
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ
+ */
+bool_t	disdsp;
+
+/*
+ *  ¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á²ÄÇœŸõÂÖ
+ */
+bool_t	dspflg;
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ
+ */
+QUEUE	ready_queue[TNUM_TPRI];
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ¥µ¡Œ¥Á€Î€¿€á€Î¥Ó¥Ã¥È¥Þ¥Ã¥×
+ */
+uint16_t	ready_primap;
+
+/*
+ *  ¥¿¥¹¥¯ŽÉÍý¥â¥ž¥å¡Œ¥ë€ÎœéŽü²œ
+ */
+void
+initialize_task(void)
+{
+	uint_t	i, j;
+	TCB		*p_tcb;
+
+	p_runtsk = NULL;
+	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) {
+			(void) make_active(p_tcb);
+		}
+	}
+}
+
+#endif /* TOPPERS_tskini */
+
+/*
+ *  ¥Ó¥Ã¥È¥Þ¥Ã¥×¥µ¡Œ¥ÁŽØ¿ô
+ *
+ *  bitmapÆâ€Î1€Î¥Ó¥Ã¥È€ÎÆâ¡€ºÇ€â²Œ°Ì¡Ê±Š¡Ë€Î€â€Î€ò¥µ¡Œ¥Á€·¡€€œ€Î¥Ó¥Ã
+ *  ¥ÈÈÖ¹æ€òÊÖ€¹¡¥¥Ó¥Ã¥ÈÈÖ¹æ€Ï¡€ºÇ²Œ°Ì¥Ó¥Ã¥È€ò0€È€¹€ë¡¥bitmap€Ë0€ò»ØÄê
+ *  €·€Æ€Ï€Ê€é€Ê€€¡¥€³€ÎŽØ¿ô€Ç€Ï¡€bitmap€¬16¥Ó¥Ã¥È€Ç€¢€ë€³€È€ò²ŸÄê€·¡€
+ *  uint16_t·¿€È€·€Æ€€€ë¡¥
+ *
+ *  ¥Ó¥Ã¥È¥µ¡Œ¥ÁÌ¿Îá€ò»ý€Ä¥×¥í¥»¥Ã¥µ€Ç€Ï¡€¥Ó¥Ã¥È¥µ¡Œ¥ÁÌ¿Îá€ò»È€Š€è€Š€Ë
+ *  œñ€­ÄŸ€·€¿Êý€¬žúÎš€¬ÎÉ€€Ÿì¹ç€¬€¢€ë¡¥€³€Î€è€Š€ÊŸì¹ç€Ë€Ï¡€¥¿¡Œ¥²¥Ã¥È
+ *  °ÍÂžÉô€Ç¥Ó¥Ã¥È¥µ¡Œ¥ÁÌ¿Îá€ò»È€Ã€¿bitmap_search€òÄêµÁ€·¡€
+ *  OMIT_BITMAP_SEARCH€ò¥Þ¥¯¥íÄêµÁ€¹€ì€Ð€è€€¡¥€Þ€¿¡€¥Ó¥Ã¥È¥µ¡Œ¥ÁÌ¿Îá€Î
+ *  ¥µ¡Œ¥ÁÊýžþ€¬µÕ€Ê€É€ÎÍýÍ³€ÇÍ¥ÀèÅÙ€È¥Ó¥Ã¥È€È€ÎÂÐ±þ€òÊÑ¹¹€·€¿€€Ÿì¹ç€Ë
+ *  €Ï¡€PRIMAP_BIT€ò¥Þ¥¯¥íÄêµÁ€¹€ì€Ð€è€€¡¥
+ *
+ *  €Þ€¿¡€¥é¥€¥Ö¥é¥ê€Ëffs€¬€¢€ë€Ê€é¡€Œ¡€Î€è€Š€ËÄêµÁ€·€Æ¥é¥€¥Ö¥é¥êŽØ¿ô€ò
+ *  »È€Ã€¿Êý€¬žúÎš€¬ÎÉ€€²ÄÇœÀ­€â€¢€ë¡¥
+ *		#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 */
+
+/*
+ *  Í¥ÀèÅÙ¥Ó¥Ã¥È¥Þ¥Ã¥×€¬¶õ€«€Î¥Á¥§¥Ã¥¯
+ */
+Inline bool_t
+primap_empty(void)
+{
+	return(ready_primap == 0U);
+}
+
+/*
+ *  Í¥ÀèÅÙ¥Ó¥Ã¥È¥Þ¥Ã¥×€Î¥µ¡Œ¥Á
+ */
+Inline uint_t
+primap_search(void)
+{
+	return(bitmap_search(ready_primap));
+}
+
+/*
+ *  Í¥ÀèÅÙ¥Ó¥Ã¥È¥Þ¥Ã¥×€Î¥»¥Ã¥È
+ */
+Inline void
+primap_set(uint_t pri)
+{
+	ready_primap |= PRIMAP_BIT(pri);
+}
+
+/*
+ *  Í¥ÀèÅÙ¥Ó¥Ã¥È¥Þ¥Ã¥×€Î¥¯¥ê¥¢
+ */
+Inline void
+primap_clear(uint_t pri)
+{
+	ready_primap &= ~PRIMAP_BIT(pri);
+}
+
+/*
+ *  ºÇ¹âÍ¥Àèœç°Ì¥¿¥¹¥¯€Î¥µ¡Œ¥Á
+ */
+#ifdef TOPPERS_tsksched
+
+TCB *
+search_schedtsk(void)
+{
+	uint_t	schedpri;
+
+	schedpri = primap_search();
+	return((TCB *)(ready_queue[schedpri].p_next));
+}
+
+#endif /* TOPPERS_tsksched */
+
+/*
+ *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€¹€ë€Î€Ï¡€ŒÂ¹Ô€Ç€­€ë¥¿¥¹¥¯€¬€Ê€«€Ã€¿Ÿì¹ç
+ *  €È¡€p_tcb€ÎÍ¥ÀèÅÙ€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€è€ê€â¹â€€Ÿì¹ç€Ç€¢
+ *  €ë¡¥
+ */
+#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 */
+
+/*
+ *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€«€éÂŸ€ÎŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€¹€ë€Î€Ï¡€p_tcb€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€Ç
+ *  €¢€Ã€¿Ÿì¹ç€Ç€¢€ë¡¥p_tcb€ÈÆ±€žÍ¥ÀèÅÙ€Î¥¿¥¹¥¯€¬ÂŸ€Ë€¢€ëŸì¹ç€Ï¡€p_tcb
+ *  €ÎŒ¡€Î¥¿¥¹¥¯€¬ºÇ¹âÍ¥Àèœç°Ì€Ë€Ê€ë¡¥€œ€Š€Ç€Ê€€Ÿì¹ç€Ï¡€¥ì¥Ç¥£¥­¥å¡Œ€ò
+ *  ¥µ¡Œ¥Á€¹€ëÉ¬Í×€¬€¢€ë¡¥
+ */
+#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 */
+
+/*
+ *  µÙ»ßŸõÂÖ€Ø€ÎÁ«°Ü
+ */
+#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 */
+
+/*
+ *  µÙ»ßŸõÂÖ€«€éŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ø€ÎÁ«°Ü
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€ÎÊÑ¹¹
+ *
+ *  ¥¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂÖ€ÎŸì¹ç€Ë€Ï¡€¥ì¥Ç¥£¥­¥å¡Œ€ÎÃæ€Ç€Î°ÌÃÖ€òÊÑ¹¹€¹
+ *  €ë¡¥¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€Á¥­¥å¡Œ€ÎÃæ€ÇÂÔ€ÁŸõÂÖ€Ë€Ê€Ã€Æ€€€ëŸì¹ç€Ë€Ï¡€ÂÔ
+ *  €Á¥­¥å¡Œ€ÎÃæ€Ç€Î°ÌÃÖ€òÊÑ¹¹€¹€ë¡¥
+ *
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€¹€ë€Î€Ï¡€(1) p_tcb€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹
+ *  ¥¯€Ç€¢€Ã€Æ¡€€œ€ÎÍ¥ÀèÅÙ€ò²Œ€²€¿Ÿì¹ç¡€(2) p_tcb€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹
+ *  ¥¯€Ç€Ï€Ê€¯¡€ÊÑ¹¹žå€ÎÍ¥ÀèÅÙ€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€è€ê€â¹â€€
+ *  Ÿì¹ç€Ç€¢€ë¡¥(1)€ÎŸì¹ç€Ë€Ï¡€¥ì¥Ç¥£¥­¥å¡Œ€ò¥µ¡Œ¥Á€¹€ëÉ¬Í×€¬€¢€ë¡¥
+ */
+#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)) {
+		/*
+		 *  ¥¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂÖ€ÎŸì¹ç
+		 */
+		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)) {
+			/*
+			 *  ¥¿¥¹¥¯€¬¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉô
+			 *  Ê¬¡ÊWOBJCB¡Ë€ÎÂÔ€Á¥­¥å¡Œ€Ë€Ä€Ê€¬€ì€Æ€€€ëŸì¹ç
+			 */
+			return(wobj_change_priority(((WINFO_WOBJ *)(p_tcb->p_winfo))
+														->p_wobjcb, p_tcb));
+		}
+	}
+	return(false);
+}
+
+#endif /* TOPPERS_tskpri */
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ€Î²óÅŸ
+ *
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€¹€ë€Î€Ï¡€ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€¬¥¿¥¹¥¯¥­
+ *  ¥å¡Œ€ÎËöÈø€Ë°ÜÆ°€·€¿Ÿì¹ç€Ç€¢€ë¡¥
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎžÆœÐ€·
+ *
+ *  ASP¥«¡Œ¥Í¥ë€Ç€Ï¡€¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óÆâ€ÇCPU¥í¥Ã¥¯ŸõÂÖ€ËÁ«°Ü€·¡€
+ *  žµ€ÎŸõÂÖ€ËÌá€µ€º€Ë¥ê¥¿¡Œ¥ó€·€¿Ÿì¹ç¡€¥«¡Œ¥Í¥ë€¬žµ€ÎŸõÂÖ€ËÌá€¹¡¥
+ */
+#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€òžÆ€ÓœÐ€¹œèÍý€Ï¡€ÁêžßºÆµ¢žÆœÐ€·€Ë€Ê€Ã€Æ
+			 *  €€€ë€¬¡€dispatch€òžÆ€ÖÁ°€Ëp_runtsk->enatex€òfalse€Ë€·€Æ
+			 *  €ª€±€Ð»ÙŸã€¬€Ê€€¡¥€œ€ÎÍýÍ³€Ë€Ä€€€Æ€Ï¡€¡ÖTOPPERS/ASP ¥«¡Œ
+			 *  ¥Í¥ë Àß·×¥á¥â¡×€ò»²ŸÈ€Î€³€È¡¥
+			 */
+			dispatch();
+		}
+	} while (p_runtsk->texptn != 0U);
+	p_runtsk->enatex = true;
+}
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€Îµ¯Æ°
+ */
+#ifndef OMIT_CALLTEX
+
+void
+calltex(void)
+{
+	if (p_runtsk->enatex && p_runtsk->texptn != 0U && ipmflg) {
+		call_texrtn();
+	}
+}
+
+#endif /* OMIT_CALLTEX */
+#endif /* TOPPERS_tsktex */
Index: /extension/messagebuf/kernel/task.h
===================================================================
--- /extension/messagebuf/kernel/task.h	(revision 7)
+++ /extension/messagebuf/kernel/task.h	(revision 7)
@@ -0,0 +1,483 @@
+/*
+ *  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-2014 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$
+ */
+
+/*
+ *		¥¿¥¹¥¯ŽÉÍý¥â¥ž¥å¡Œ¥ë
+ */
+
+#ifndef TOPPERS_TASK_H
+#define TOPPERS_TASK_H
+
+#include <queue.h>
+#include "time_event.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#ifndef LOG_TSKSTAT
+#define LOG_TSKSTAT(p_tcb)
+#endif /* LOG_TSKSTAT */
+
+/*
+ *  ¥¿¥¹¥¯Í¥ÀèÅÙ€ÎÆâÉôÉœžœ¡Š³°ÉôÉœžœÊÑŽ¹¥Þ¥¯¥í
+ */
+#define INT_PRIORITY(x)		((uint_t)((x) - TMIN_TPRI))
+#define EXT_TSKPRI(x)		((PRI)(x) + TMIN_TPRI)
+
+/*
+ *  ¥¿¥¹¥¯ŸõÂÖ€ÎÆâÉôÉœžœ
+ *
+ *  TCBÃæ€Î¥¿¥¹¥¯ŸõÂÖ€Ç€Ï¡€ŒÂ¹ÔŸõÂÖ¡ÊRUNNING¡Ë€ÈŒÂ¹Ô²ÄÇœŸõÂÖ¡ÊREADY¡Ë
+ *  €Ï¶èÊÌ€·€Ê€€¡¥ÎŸŸõÂÖ€òÁíŸÎ€·€Æ¡€ŒÂ¹Ô€Ç€­€ëŸõÂÖ¡ÊRUNNABLE¡Ë€ÈžÆ€Ö¡¥
+ *  ÆóœÅÂÔ€ÁŸõÂÖ€Ï¡€(TS_WAITING | TS_SUSPENDED)€ÇÉœ€¹¡¥TS_WAIT_???€ÏÂÔ
+ *  €ÁÍ×°ø€òÉœ€·¡€ÂÔ€ÁŸõÂÖ¡ÊÆóœÅÂÔ€ÁŸõÂÖ€òŽÞ€à¡Ë€ÎŸì¹ç€Ë€Î€ßÀßÄê€¹€ë¡¥
+ */
+#define TS_DORMANT		0x00U			/* µÙ»ßŸõÂÖ */
+#define TS_RUNNABLE		0x01U			/* ŒÂ¹Ô€Ç€­€ëŸõÂÖ */
+#define TS_WAITING		0x02U			/* ÂÔ€ÁŸõÂÖ */
+#define TS_SUSPENDED	0x04U			/* ¶¯À©ÂÔ€ÁŸõÂÖ */
+
+#define TS_WAIT_DLY		(0x00U << 3)	/* »þŽÖ·Ð²áÂÔ€Á */
+#define TS_WAIT_SLP		(0x01U << 3)	/* µ¯Ÿ²ÂÔ€Á */
+#define TS_WAIT_RDTQ	(0x02U << 3)	/* ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TS_WAIT_RPDQ	(0x03U << 3)	/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TS_WAIT_RMBF	(0x04U << 3)	/* ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TS_WAIT_SEM		(0x05U << 3)	/* ¥»¥Þ¥Õ¥©»ñž»€Î³ÍÆÀÂÔ€Á */
+#define TS_WAIT_FLG		(0x06U << 3)	/* ¥€¥Ù¥ó¥È¥Õ¥é¥°ÂÔ€Á */
+#define TS_WAIT_SDTQ	(0x07U << 3)	/* ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®ÂÔ€Á */
+#define TS_WAIT_SPDQ	(0x08U << 3)	/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®ÂÔ€Á */
+#define TS_WAIT_MBX		(0x09U << 3)	/* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TS_WAIT_SMBF	(0x0aU << 3)	/* ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€Ø€ÎÁ÷¿®ÂÔ€Á */
+#define TS_WAIT_MPF		(0x0bU << 3)	/* žÇÄêÄ¹¥á¥â¥ê¥Ö¥í¥Ã¥¯€Î³ÍÆÀÂÔ€Á */
+
+/*
+ *  ¥¿¥¹¥¯ŸõÂÖÈœÊÌ¥Þ¥¯¥í
+ *
+ *  TSTAT_DORMANT€Ï¥¿¥¹¥¯€¬µÙ»ßŸõÂÖ€Ç€¢€ë€«€É€Š€«€ò¡€TSTAT_RUNNABLE€Ï
+ *  ¥¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ç€¢€ë€«€É€Š€«€òÈœÊÌ€¹€ë¡¥TSTAT_WAITING€ÏÂÔ
+ *  €ÁŸõÂÖ€ÈÆóœÅÂÔ€ÁŸõÂÖ€Î€€€º€ì€«€Ç€¢€ë€«€É€Š€«€ò¡€TSTAT_SUSPENDED€Ï
+ *  ¶¯À©ÂÔ€ÁŸõÂÖ€ÈÆóœÅÂÔ€ÁŸõÂÖ€Î€€€º€ì€«€Ç€¢€ë€«€É€Š€«€òÈœÊÌ€¹€ë¡¥
+ */
+#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)
+
+/*
+ *  ¥¿¥¹¥¯ÂÔ€ÁÍ×°øÈœÊÌ¥Þ¥¯¥í
+ *
+ *  TSTAT_WAIT_SLP€Ï¥¿¥¹¥¯€¬µ¯Ÿ²ÂÔ€Á€Ç€¢€ë€«€É€Š€«€ò¡€TSTAT_WAIT_WOBJ
+ *  €Ï¥¿¥¹¥¯€¬Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ËÂÐ€¹€ëÂÔ€Á€Ç€¢€ë€«¡ÊžÀ€€Ž¹€š€ë€È¡€
+ *  Æ±ŽüÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€Á¥­¥å¡Œ€Ë€Ä€Ê€¬€ì€Æ€€€ë€«¡Ë€É€Š€«€òÈœÊÌ€¹
+ *  €ë¡¥€Þ€¿¡€TSTAT_WAIT_WOBJCB€Ï¥¿¥¹¥¯€¬Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý
+ *  ¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬¡ÊWOBJCB¡Ë€ÎÂÔ€Á¥­¥å¡Œ€Ë€Ä€Ê€¬€ì€Æ€€€ë€«€É€Š€«€ò
+ *  ÈœÊÌ€¹€ë¡¥
+ *
+ *  TSTAT_WAIT_SLP€Ï¡€Ç€°Õ€Î¥¿¥¹¥¯ŸõÂÖ€ÎÃæ€«€é¡€¥¿¥¹¥¯€¬µ¯Ÿ²ÂÔ€Á€Ç€¢€ë
+ *  €³€È€òÈœÊÌ€Ç€­€ë¡¥€¹€Ê€ï€Á¡€TSTAT_WAITING€Ë€è€êÂÔ€ÁŸõÂÖ€Ç€¢€ë€³€È€ò
+ *  ÈœÊÌ€»€º€Ë¡€TSTAT_SLP€À€±€òÍÑ€€€Æµ¯Ÿ²ÂÔ€ÁŸõÂÖ€Ç€¢€ë€³€È€òÈœÊÌ€Ç€­€ë¡¥
+ *  €³€ì€òžúÎšÅª€ËŒÂžœ€¹€ë€¿€á€Ë¡€TS_WAIT_SLP€ÎÃÍ€ò¡€(0x00U << 3)€Ç€Ï€Ê
+ *  €¯(0x01U << 3)€È€·€Æ€€€ë¡¥€œ€Î€¿€á¡€¥¿¥¹¥¯€¬»þŽÖ·Ð²áÂÔ€ÁŸõÂÖ€Ç€¢€ë
+ *  €³€È€òÈœÊÌ€¹€ë€¿€á€ÎTSTAT_WAIT_DLY€ò¡€TSTAT_WAIT_SLP€ÈÆ±ÍÍ€ÎÊýË¡€Ç
+ *  ŒÂžœ€¹€ë€³€È€Ï€Ç€­€Ê€€¡¥
+ */
+#define TS_WAIT_MASK	(0x0fU << 3)	/* ÂÔ€ÁÍ×°ø€ÎŒèœÐ€·¥Þ¥¹¥¯ */
+
+#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_SMBF(tstat)		(((tstat) & TS_WAIT_MASK) == TS_WAIT_SMBF)
+
+/*
+ *  ÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯¡ÊWINFO¡Ë€ÎÄêµÁ
+ *
+ *  ¥¿¥¹¥¯€¬ÂÔ€ÁŸõÂÖ€ÎŽÖ€Ï¡€TCB€ª€è€Ó€œ€Îp_winfo€Ç»Ø€µ€ì€ëWINFO€òŒ¡€Î
+ *  €è€Š€ËÀßÄê€·€Ê€±€ì€Ð€Ê€é€Ê€€¡¥
+ *
+ *  (a) TCB€Î¥¿¥¹¥¯ŸõÂÖ€òÂÔ€ÁŸõÂÖ¡ÊTS_WAITING¡Ë€Ë€¹€ë¡¥€œ€ÎºÝ€Ë¡€ÂÔ€Á
+ *  Í×°ø¡ÊTS_WAIT_???¡Ë€âÀßÄê€¹€ë¡¥
+ *
+ *  (b) ¥¿¥€¥à¥¢¥Š¥È€òŽÆ»ë€¹€ë€¿€á€Ë¡€¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯€òÅÐÏ¿€¹€ë¡¥
+ *  ÅÐÏ¿€¹€ë¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯€Ï¡€ÂÔ€Á€ËÆþ€ë¥µ¡Œ¥Ó¥¹¥³¡Œ¥ëœèÍýŽØ¿ô
+ *  €Î¥í¡Œ¥«¥ëÊÑ¿ô€È€·€Æ³ÎÊÝ€·¡€€œ€ì€Ø€Î¥Ý¥€¥ó¥¿€òWINFO€Îp_tmevtb€Ëµ­
+ *  ²±€¹€ë¡¥¥¿¥€¥à¥¢¥Š¥È€ÎŽÆ»ë€¬É¬Í×€Ê€€Ÿì¹ç¡Ê±Êµ×ÂÔ€Á€ÎŸì¹ç¡Ë€Ë€Ï¡€
+ *  p_tmevtb€òNULL€Ë€¹€ë¡¥
+ *
+ *  Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ËÂÐ€¹€ëÂÔ€ÁŸõÂÖ€ÎŸì¹ç€Ë€Ï¡€Éžœà€ÎWINFO€Ë
+ *  p_wobjcb¥Õ¥£¡Œ¥ë¥É€òÄÉ²Ã€·€¿¹œÂ€ÂÎ¡ÊWINFO_WOBJ¡€wait.h€ÇÄêµÁ¡Ë€ò»È
+ *  €Š¡¥€Þ€¿¡€°Ê²Œ€Î(c)¡Á(e)€ÎÀßÄê€ò¹Ô€ŠÉ¬Í×€¬€¢€ë¡¥Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§
+ *  ¥¯¥È€ËŽØ·ž€·€Ê€€ÂÔ€Á¡Êµ¯Ÿ²ÂÔ€Á¡€»þŽÖ·Ð²áÂÔ€Á¡Ë€ÎŸì¹ç€Ë€Ï¡€(c)¡Á(e)
+ *  €ÏÉ¬Í×€Ê€€¡¥
+ *
+ *  (c) TCB€òÂÔ€ÁÂÐŸÝ€ÎÆ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€Á¥­¥å¡Œ€Ë€Ä€Ê€°¡¥ÂÔ
+ *  €Á¥­¥å¡Œ€Ë€Ä€Ê€°€¿€á€Ë¡€task_queue€ò»È€Š¡¥
+ *
+ *  (d) ÂÔ€ÁÂÐŸÝ€ÎÆ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿€ò¡€
+ *  WINFO_WOBJ€Îp_wobjcb€Ëµ­²±€¹€ë¡¥
+ *
+ *  (e) ÂÔ€ÁÂÐŸÝ€ÎÆ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€Ë°ÍÂž€·€Æµ­²±€¹€ë€³€È€¬É¬Í×€Ê
+ *  ŸðÊó€¬€¢€ëŸì¹ç€Ë€Ï¡€WINFO_WOBJ€ËÉ¬Í×€ÊŸðÊó€Î€¿€á€Î¥Õ¥£¡Œ¥ë¥É€òÄÉ²Ã
+ *  €·€¿¹œÂ€ÂÎ€òÄêµÁ€·¡€WINFO_WOBJ€ÎÂå€ï€ê€ËÍÑ€€€ë¡¥
+ *
+ *  ÂÔ€ÁŸõÂÖ€ò²òœü€¹€ëºÝ€Ë€Ï¡€ÂÔ€Á²òœü€·€¿¥¿¥¹¥¯€ËÂÐ€¹€ëÊÖÃÍ€òWINFO€Î
+ *  wercd€ËÀßÄê€¹€ë¡¥wercd€¬É¬Í×€Ê€Î€ÏÂÔ€Á²òœü°Ê¹ß€Ç€¢€ë€Î€ËÂÐ€·€Æ¡€
+ *  p_tmevtb€ÏÂÔ€Á²òœüžå€ÏÉ¬Í×€Ê€€€¿€á¡€¥á¥â¥êÀáÌó€Î€¿€á€Ë¶ŠÍÑÂÎ€ò»È€Ã
+ *  €Æ€€€ë¡¥€œ€Î€¿€á¡€wercd€Ø¥š¥é¡Œ¥³¡Œ¥É€òÀßÄê€¹€ë€Î€Ï¡€¥¿¥€¥à¥€¥Ù¥ó¥È
+ *  ¥Ö¥í¥Ã¥¯€òÅÐÏ¿²òœü€·€¿žå€Ë€·€Ê€±€ì€Ð€Ê€é€Ê€€¡¥
+ */
+typedef union waiting_information {
+	ER		wercd;			/* ÂÔ€Á²òœü»þ€Î¥š¥é¡Œ¥³¡Œ¥É */
+	TMEVTB	*p_tmevtb;		/* ÂÔ€ÁŸõÂÖÍÑ€Î¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯ */
+} WINFO;
+
+/*
+ *  ¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯
+ *
+ *  ¥¿¥¹¥¯€ËŽØ€¹€ëŸðÊó€ò¡€ÃÍ€¬ÊÑ€ï€é€Ê€€€¿€á€ËROM€ËÃÖ€±€ëÉôÊ¬¡Ê¥¿¥¹¥¯
+ *  œéŽü²œ¥Ö¥í¥Ã¥¯¡Ë€È¡€ÃÍ€¬ÊÑ²œ€¹€ë€¿€á€ËRAM€ËÃÖ€«€Ê€±€ì€Ð€Ê€é€Ê€€Éô
+ *  Ê¬¡Ê¥¿¥¹¥¯ŽÉÍý¥Ö¥í¥Ã¥¯¡€TCB¡Ë€ËÊ¬Î¥€·¡€TCBÆâ€ËÂÐ±þ€¹€ë¥¿¥¹¥¯œéŽü²œ
+ *  ¥Ö¥í¥Ã¥¯€ò»Ø€¹¥Ý¥€¥ó¥¿€òÆþ€ì€ë¡¥¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯Æâ€ËÂÐ±þ€¹€ë
+ *  TCB€ò»Ø€¹¥Ý¥€¥ó¥¿€òÆþ€ì€ëÊýË¡€ÎÊý€¬¡€RAM€ÎÀáÌó€ÎŽÑÅÀ€«€é€ÏËŸ€Þ€·€€
+ *  €¬¡€ŒÂ¹ÔžúÎš€¬°­€¯€Ê€ë€¿€á€ËºÎÍÑ€·€Æ€€€Ê€€¡¥ÂŸ€Î¥ª¥Ö¥ž¥§¥¯¥È€Ë€Ä€€
+ *  €Æ€âÆ±ÍÍ€Ë°·€Š¡¥
+ *
+ *  ¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯€Ë€Ï¡€DEF_TEX€ÇÄêµÁ€µ€ì€ë¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á
+ *  ¥ó€ËŽØ€¹€ëŸðÊó€âŽÞ€à¡¥
+ */
+typedef struct task_initialization_block {
+	ATR			tskatr;			/* ¥¿¥¹¥¯Â°À­ */
+	intptr_t	exinf;			/* ¥¿¥¹¥¯€Î³ÈÄ¥ŸðÊó */
+	TASK		task;			/* ¥¿¥¹¥¯€Îµ¯Æ°ÈÖÃÏ */
+	uint_t		ipriority;		/* ¥¿¥¹¥¯€Îµ¯Æ°»þÍ¥ÀèÅÙ¡ÊÆâÉôÉœžœ¡Ë */
+
+#ifdef USE_TSKINICTXB
+	TSKINICTXB	tskinictxb;		/* ¥¿¥¹¥¯œéŽü²œ¥³¥ó¥Æ¥­¥¹¥È¥Ö¥í¥Ã¥¯ */
+#else /* USE_TSKINICTXB */
+	SIZE		stksz;			/* ¥¹¥¿¥Ã¥¯ÎÎ°è€Î¥µ¥€¥º¡ÊŽÝ€á€¿ÃÍ¡Ë */
+	void		*stk;			/* ¥¹¥¿¥Ã¥¯ÎÎ°è€ÎÀèÆ¬ÈÖÃÏ */
+#endif /* USE_TSKINICTXB */
+
+	ATR			texatr;			/* ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óÂ°À­ */
+	TEXRTN		texrtn;			/* ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€Îµ¯Æ°ÈÖÃÏ */
+} TINIB;
+
+/*
+ *  TCBÃæ€Î¥Õ¥£¡Œ¥ë¥É€Î¥Ó¥Ã¥ÈÉý€ÎÄêµÁ
+ *
+ *  ¥×¥í¥»¥Ã¥µ€Ë€è€Ã€Æ€Ï¡€TCBÃæ€Î¥Õ¥£¡Œ¥ë¥É€Î¥Ó¥Ã¥ÈÉý€Ç¥á¥â¥ê»ÈÍÑÎÌ€È
+ *  À­Çœ€¬¥È¥ì¡Œ¥É¥ª¥Õ€Ë€Ê€ë€¿€á¡€¥¿¡Œ¥²¥Ã¥È°ÍÂž€Ë¥Õ¥£¡Œ¥ë¥É€Î¥Ó¥Ã¥ÈÉý
+ *  €òÊÑ¹¹€¹€ë€³€È€òµö€·€Æ€€€ë¡¥
+ */
+#ifndef TBIT_TCB_PRIORITY
+#define	TBIT_TCB_PRIORITY		8		/* priority¥Õ¥£¡Œ¥ë¥É€Î¥Ó¥Ã¥ÈÉý */
+#endif /* TBIT_TCB_PRIORITY */
+
+/*
+ *  ¥¿¥¹¥¯ŽÉÍý¥Ö¥í¥Ã¥¯¡ÊTCB¡Ë
+ *
+ *  ASP¥«¡Œ¥Í¥ë€Ç€Ï¡€¥¿¥¹¥¯€Îµ¯Æ°Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô€ÎºÇÂçÃÍ¡ÊTMAX_ACTCNT¡Ë
+ *  €Èµ¯Ÿ²Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô€ÎºÇÂçÃÍ¡ÊTMAX_WUPCNT¡Ë€Ï1€ËžÇÄê€µ€ì€Æ€€€ë
+ *  €¿€á¡€¥­¥å¡Œ¥€¥ó¥°€µ€ì€Æ€€€ë€«€É€Š€«€Î¿¿µ¶ÃÍ€ÇÉœžœ€¹€ë€³€È€¬€Ç€­€ë¡¥
+ *  €Þ€¿¡€¶¯À©ÂÔ€ÁÍ×µá¥Í¥¹¥È¿ô€ÎºÇÂçÃÍ¡ÊTMAX_SUSCNT¡Ë€¬1€ËžÇÄê€µ€ì€Æ€€
+ *  €ë€Î€Ç¡€¶¯À©ÂÔ€ÁÍ×µá¥Í¥¹¥È¿ô¡Êsuscnt¡Ë€ÏÉ¬Í×€Ê€€¡¥
+ *
+ *  TCB€Î€€€¯€Ä€«€Î¥Õ¥£¡Œ¥ë¥É€Ï¡€ÆÃÄê€Î¥¿¥¹¥¯ŸõÂÖ€Ç€Î€ßÍ­žú€ÊÃÍ€òÊÝ»ý€·¡€
+ *  €œ€ì°Ê³°€ÎŸì¹ç€ÏÃÍ€¬ÊÝŸÚ€µ€ì€Ê€€¡Ê€è€Ã€Æ¡€»²ŸÈ€·€Æ€Ï€Ê€é€Ê€€¡Ë¡¥³Æ
+ *  ¥Õ¥£¡Œ¥ë¥É€¬Í­žú€ÊÃÍ€òÊÝ»ý€¹€ëŸò·ï€ÏŒ¡€ÎÄÌ€ê¡¥
+ *
+ *  ¡ŠœéŽü²œžå€ÏŸï€ËÍ­žú¡§
+ *  		p_tinib¡€tstat¡€actque
+ *  ¡ŠµÙ»ßŸõÂÖ°Ê³°€ÇÍ­žú¡ÊµÙ»ßŸõÂÖ€Ç€ÏœéŽüÃÍ€Ë€Ê€Ã€Æ€€€ë¡Ë¡§
+ *  		priority¡€wupque¡€enatex¡€texptn
+ *  ¡ŠÂÔ€ÁŸõÂÖ¡ÊÆóœÅÂÔ€ÁŸõÂÖ€òŽÞ€à¡Ë€ÇÍ­žú¡§
+ *  		p_winfo
+ *  ¡ŠŒÂ¹Ô€Ç€­€ëŸõÂÖ€ÈÆ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ËÂÐ€¹€ëÂÔ€ÁŸõÂÖ€ÇÍ­žú¡§
+ *  		task_queue
+ *  ¡ŠŒÂ¹Ô²ÄÇœŸõÂÖ¡€ÂÔ€ÁŸõÂÖ¡€¶¯À©ÂÔ€ÁŸõÂÖ¡€ÆóœÅÂÔ€ÁŸõÂÖ€ÇÍ­žú¡§
+ *  		tskctxb
+ */
+typedef struct task_control_block {
+	QUEUE			task_queue;		/* ¥¿¥¹¥¯¥­¥å¡Œ */
+	const TINIB		*p_tinib;		/* œéŽü²œ¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿ */
+
+#ifdef UINT8_MAX
+	uint8_t			tstat;			/* ¥¿¥¹¥¯ŸõÂÖ¡ÊÆâÉôÉœžœ¡Ë*/
+#else /* UINT8_MAX */
+	BIT_FIELD_UINT	tstat : 8;		/* ¥¿¥¹¥¯ŸõÂÖ¡ÊÆâÉôÉœžœ¡Ë*/
+#endif /* UINT8_MAX */
+#if defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8)
+	uint8_t			priority;		/* žœºß€ÎÍ¥ÀèÅÙ¡ÊÆâÉôÉœžœ¡Ë*/
+#else /* defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8) */
+	BIT_FIELD_UINT	priority : TBIT_TCB_PRIORITY;
+									/* žœºß€ÎÍ¥ÀèÅÙ¡ÊÆâÉôÉœžœ¡Ë*/
+#endif /* defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8) */
+	BIT_FIELD_BOOL	actque : 1;		/* µ¯Æ°Í×µá¥­¥å¡Œ¥€¥ó¥° */
+	BIT_FIELD_BOOL	wupque : 1;		/* µ¯Ÿ²Í×µá¥­¥å¡Œ¥€¥ó¥° */
+	BIT_FIELD_BOOL	enatex : 1;		/* ¥¿¥¹¥¯Îã³°œèÍýµö²ÄŸõÂÖ */
+
+	TEXPTN			texptn;			/* ÊÝÎ±Îã³°Í×°ø */
+	WINFO			*p_winfo;		/* ÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿ */
+	TSKCTXB			tskctxb;		/* ¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È¥Ö¥í¥Ã¥¯ */
+} TCB;
+
+/*
+ *  ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯
+ *
+ *  ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯¡Ê¡á¥×¥í¥»¥Ã¥µ€¬¥³¥ó¥Æ¥­¥¹¥È€ò»ý€Ã€Æ€€€ë¥¿¥¹¥¯¡Ë€Î
+ *  TCB€ò»Ø€¹¥Ý¥€¥ó¥¿¡¥ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€¬€Ê€€Ÿì¹ç€ÏNULL€Ë€¹€ë¡¥
+ *
+ *  ¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎœèÍýÃæ€Ç¡€Œ«¥¿¥¹¥¯¡Ê¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€òžÆ€ÓœÐ€·€¿¥¿¥¹
+ *  ¥¯¡Ë€ËŽØ€¹€ëŸðÊó€ò»²ŸÈ€¹€ëŸì¹ç€Ïp_runtsk€ò»È€Š¡¥p_runtsk€òœñ€­Ž¹€š
+ *  €ë€Î€Ï¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã¡Ê€ÈœéŽü²œœèÍý¡Ë€Î€ß€Ç€¢€ë¡¥
+ */
+extern TCB	*p_runtsk;
+
+/*
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯
+ *
+ *  ŒÂ¹Ô€Ç€­€ë¥¿¥¹¥¯€ÎÃæ€ÇºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ÎTCB€ò»Ø€¹¥Ý¥€¥ó¥¿¡¥ŒÂ
+ *  ¹Ô€Ç€­€ë¥¿¥¹¥¯€¬€Ê€€Ÿì¹ç€ÏNULL€Ë€¹€ë¡¥
+ *
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ€Ê€É¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬ÊÝÎ±€µ€ì€Æ€€€ëŽÖ€Ïp_runtsk
+ *  €È°ìÃ×€·€Æ€€€ë€È€ÏžÂ€é€Ê€€¡¥
+ */
+extern TCB	*p_schedtsk;
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¡¿¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óµ¯Æ°Í×µá¥Õ¥é¥°
+ *
+ *  ³ä¹þ€ß¥Ï¥ó¥É¥é¡¿CPUÎã³°¥Ï¥ó¥É¥é€ÎœÐžýœèÍý€Ë¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á€Þ€¿€Ï
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€Îµ¯Æ°€òÍ×µá€¹€ë€³€È€òŒš€¹¥Õ¥é¥°¡¥
+ */
+extern bool_t	reqflg;
+
+/*
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ
+ *
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ€Ç€¢€ë€³€È€òŒš€¹¥Õ¥é¥°¡¥
+ */
+extern bool_t	ipmflg;
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ
+ *
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ€Ç€¢€ë€³€È€òŒš€¹¥Õ¥é¥°¡¥
+ */
+extern bool_t	disdsp;
+
+/*
+ *  ¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á²ÄÇœŸõÂÖ
+ *
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ€Ç€¢€ê¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ€Ç€¢€ë¡Ê¥Ç¥£
+ *  ¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ€Ç€Ê€€¡Ë€³€È€òŒš€¹¥Õ¥é¥°¡¥
+ */
+extern bool_t	dspflg;
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ
+ *
+ *  ¥ì¥Ç¥£¥­¥å¡Œ€Ï¡€ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Î¥¿¥¹¥¯€òŽÉÍý€¹€ë€¿€á€Î¥­¥å¡Œ€Ç€¢€ë¡¥
+ *  ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€âŽÉÍý€·€Æ€€€ë€¿€á¡€¥ì¥Ç¥£¡ÊŒÂ¹Ô²ÄÇœ¡Ë¥­¥å¡Œ€È€€€Š
+ *  ÌŸŸÎ€ÏÀµ³Î€Ç€Ï€Ê€€€¬¡€¥ì¥Ç¥£¥­¥å¡Œ€È€€€ŠÌŸŸÎ€¬ÄêÃå€·€Æ€€€ë€¿€á¡€€³
+ *  €ÎÌŸŸÎ€ÇžÆ€Ö€³€È€Ë€¹€ë¡¥
+ *
+ *  ¥ì¥Ç¥£¥­¥å¡Œ€Ï¡€Í¥ÀèÅÙ€Ž€È€Î¥¿¥¹¥¯¥­¥å¡Œ€Ç¹œÀ®€µ€ì€Æ€€€ë¡¥¥¿¥¹¥¯€Î
+ *  TCB€Ï¡€³ºÅö€¹€ëÍ¥ÀèÅÙ€Î¥­¥å¡Œ€ËÅÐÏ¿€µ€ì€ë¡¥
+ */
+extern QUEUE	ready_queue[TNUM_TPRI];
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ¥µ¡Œ¥Á€Î€¿€á€Î¥Ó¥Ã¥È¥Þ¥Ã¥×
+ *
+ *  ¥ì¥Ç¥£¥­¥å¡Œ€Î¥µ¡Œ¥Á€òžúÎš€è€¯¹Ô€Š€¿€á€Ë¡€Í¥ÀèÅÙ€Ž€È€Î¥¿¥¹¥¯¥­¥å¡Œ
+ *  €Ë¥¿¥¹¥¯€¬Æþ€Ã€Æ€€€ë€«€É€Š€«€òŒš€¹¥Ó¥Ã¥È¥Þ¥Ã¥×€òÍÑ°Õ€·€Æ€€€ë¡¥¥Ó¥Ã
+ *  ¥È¥Þ¥Ã¥×€ò»È€Š€³€È€Ç¡€¥á¥â¥ê¥¢¥¯¥»¥¹€Î²ó¿ô€òžº€é€¹€³€È€¬€Ç€­€ë€¬¡€
+ *  ¥Ó¥Ã¥ÈÁàºîÌ¿Îá€¬œŒŒÂ€·€Æ€€€Ê€€¥×¥í¥»¥Ã¥µ€Ç¡€Í¥ÀèÅÙ€ÎÃÊ³¬¿ô€¬Ÿ¯€Ê€€
+ *  Ÿì¹ç€Ë€Ï¡€¥Ó¥Ã¥È¥Þ¥Ã¥×Áàºî€Î¥ª¡Œ¥Ð¡Œ¥Ø¥Ã¥É€Î€¿€á€Ë¡€µÕ€ËžúÎš€¬Íî€Á
+ *  €ë²ÄÇœÀ­€â€¢€ë¡¥
+ *
+ *  Í¥ÀèÅÙ€¬16ÃÊ³¬€Ç€¢€ë€³€È€ò²ŸÄê€·€Æ€€€ë€¿€á¡€uint16_t·¿€È€·€Æ€€€ë¡¥
+ */
+extern uint16_t	ready_primap;
+
+/*
+ *  ¥¿¥¹¥¯ID€ÎºÇÂçÃÍ¡Êkernel_cfg.c¡Ë
+ */
+extern const ID	tmax_tskid;
+
+/*
+ *  ¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern const TINIB	tinib_table[];
+
+/*
+ *  ¥¿¥¹¥¯ÀžÀ®œçœø¥Æ¡Œ¥Ö¥ë¡Êkernel_cfg.c¡Ë
+ */
+extern const ID	torder_table[];
+
+/*
+ *  TCB€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern TCB	tcb_table[];
+
+/*
+ *  ¥¿¥¹¥¯€Î¿ô
+ */
+#define tnum_tsk	((uint_t)(tmax_tskid - TMIN_TSKID + 1))
+
+/*
+ *  ¥¿¥¹¥¯ID€«€éTCB€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#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€«€é¥¿¥¹¥¯ID€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#define	TSKID(p_tcb)	((ID)(((p_tcb) - tcb_table) + TMIN_TSKID))
+
+/*
+ *  ¥¿¥¹¥¯ŽÉÍý¥â¥ž¥å¡Œ¥ë€ÎœéŽü²œ
+ */
+extern void	initialize_task(void);
+
+/*
+ *  ºÇ¹âÍ¥Àèœç°Ì¥¿¥¹¥¯€Î¥µ¡Œ¥Á
+ *
+ *  ¥ì¥Ç¥£¥­¥å¡ŒÃæ€ÎºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¥µ¡Œ¥Á€·¡€€œ€ÎTCB€Ø€Î¥Ý¥€¥ó¥¿
+ *  €òÊÖ€¹¡¥¥ì¥Ç¥£¥­¥å¡Œ€¬¶õ€ÎŸì¹ç€Ë€Ï¡€€³€ÎŽØ¿ô€òžÆ€ÓœÐ€·€Æ€Ï€Ê€é€Ê€€¡¥
+ */
+extern TCB	*search_schedtsk(void);
+
+/*
+ *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ò¥ì¥Ç¥£¥­¥å¡Œ€ËÁÞÆþ€¹€ë¡¥¥ì¥Ç¥£¥­¥å¡Œ€ËÁÞÆþ
+ *  €·€¿¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€¬¡€ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€è€ê€â¹â€€Ÿì¹ç€Ï¡€
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€·¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ€Ç€¢€ì€Ðtrue€òÊÖ
+ *  €¹¡¥€œ€Š€Ç€Ê€€Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥
+ */
+extern bool_t	make_runnable(TCB *p_tcb);
+
+/*
+ *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€«€éÂŸ€ÎŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ò¥ì¥Ç¥£¥­¥å¡Œ€«€éºïœü€¹€ë¡¥p_tcb€Ç»ØÄê€·€¿
+ *  ¥¿¥¹¥¯€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€Ç€¢€Ã€¿Ÿì¹ç€Ë€Ï¡€ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯
+ *  €òÀßÄê€·€Ê€ª€·¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ€Ç€¢€ì€Ðtrue€òÊÖ€¹¡¥€œ€Š€Ç€Ê€€
+ *  Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥¥¿¥¹¥¯€ÎŸõÂÖ€Ï¹¹¿·€·€Ê€€¡¥
+ */
+extern bool_t	make_non_runnable(TCB *p_tcb);
+
+/*
+ *  µÙ»ßŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ÎŸõÂÖ€òµÙ»ßŸõÂÖ€È€¹€ë¡¥€Þ€¿¡€¥¿¥¹¥¯€Îµ¯Æ°
+ *  »þ€ËœéŽü²œ€¹€Ù€­ÊÑ¿ô€ÎœéŽü²œ€È¡€¥¿¥¹¥¯µ¯Æ°€Î€¿€á€Î¥³¥ó¥Æ¥­¥¹¥È€òÀß
+ *  Äê€¹€ë¡¥
+ */
+extern void	make_dormant(TCB *p_tcb);
+
+/*
+ *  µÙ»ßŸõÂÖ€«€éŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ÎŸõÂÖ€òµÙ»ßŸõÂÖ€«€éŒÂ¹Ô€Ç€­€ëŸõÂÖ€È€¹€ë¡¥
+ *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€ËÁ«°Ü€·€¿¥¿¥¹¥¯€Ø€Î¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬É¬Í×€ÊŸì¹ç€Ïtrue¡€
+ *  €œ€Š€Ç€Ê€€Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥
+ */
+extern bool_t	make_active(TCB *p_tcb);
+
+/*
+ *  ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€ÎÊÑ¹¹
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€ònewpri¡ÊÆâÉôÉœžœ¡Ë€ËÊÑ¹¹€¹€ë¡¥€Þ€¿¡€
+ *  É¬Í×€ÊŸì¹ç€Ë€ÏºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€·¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ€Ç
+ *  €¢€ì€Ðtrue€òÊÖ€¹¡¥€œ€Š€Ç€Ê€€Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥
+ */
+extern bool_t	change_priority(TCB *p_tcb, uint_t newpri);
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ€Î²óÅŸ
+ *
+ *  ¥ì¥Ç¥£¥­¥å¡ŒÃæ€Î¡€pri€Ç»ØÄê€µ€ì€ëÍ¥ÀèÅÙ€Î¥¿¥¹¥¯¥­¥å¡Œ€ò²óÅŸ€µ€»€ë¡¥
+ *  €Þ€¿¡€É¬Í×€ÊŸì¹ç€Ë€ÏºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€òÊÑ¹¹€·¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬ÊÝ
+ *  Î±€µ€ì€Æ€€€Ê€±€ì€Ðtrue€òÊÖ€¹¡¥€œ€Š€Ç€Ê€€Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥
+ */
+extern bool_t	rotate_ready_queue(uint_t pri);
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎžÆœÐ€·
+ *
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€òžÆ€ÓœÐ€¹¡¥žÆ€ÓœÐ€¹Á°€Ë¡€ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€Î
+ *  ÊÝÎ±Îã³°Í×°ø€ò¥¯¥ê¥¢€·¡€¥¿¥¹¥¯Îã³°œèÍý¶Ø»ßŸõÂÖ€Ë€·¡€CPU¥í¥Ã¥¯€ò²ò
+ *  œü€¹€ë¡¥
+ *
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€«€éÌá€ë€È¡€€Þ€ºCPU¥í¥Ã¥¯ŸõÂÖ€ËÌá€·¡€€œ€ÎŽÖ
+ *  €ËÊÝÎ±Îã³°Í×°ø€¬0€Ç€Ê€¯€Ê€Ã€Æ€€€ì€Ð¡€ºÆ€Ó¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ò
+ *  žÆ€ÓœÐ€¹¡¥ÊÝÎ±Îã³°Í×°ø€¬0€ÎŸì¹ç€Ë€Ï¡€Îã³°œèÍýµö²ÄŸõÂÖ€Ë€·€ÆŽØ¿ô€«
+ *  €é¥ê¥¿¡Œ¥ó€¹€ë¡¥
+ *
+ *  €³€ÎŽØ¿ô€Ï¡€ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€¬¡€¥¿¥¹¥¯Îã³°œèÍýµö²ÄŸõÂÖ¡Êenatex€¬
+ *  true¡Ë€Ç¡€ÊÝÎ±Îã³°Í×°ø€¬0€Ç€Ê€€¡Êtexptn€¬0€Ç€Ê€€¡ËŸì¹ç€ËžÆ€ÓœÐ€¹€³
+ *  €È€òÁÛÄê€·€Æ€€€ë¡¥€³€ÎŽØ¿ô€Ï¡€CPU¥í¥Ã¥¯ŸõÂÖ€ÇžÆ€ÓœÐ€µ€Ê€±€ì€Ð€Ê€é
+ *  €Ê€€¡¥
+ */
+extern void	call_texrtn(void);
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€Îµ¯Æ°
+ *
+ *  ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€¬¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€Îµ¯Æ°Ÿò·ï€òËþ€¿€·€Æ€€€ì€Ð¡€
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€òžÆ€ÓœÐ€¹¡¥CPUÎã³°œèÍý¥ë¡Œ¥Á¥ó€òžÆ€ÓœÐ€¹»þ
+ *  €Ï¡€°ì»þÅª€ËCPU¥í¥Ã¥¯€ò²òœü€¹€ë¡¥
+ *
+ *  €³€ÎŽØ¿ô€Ï¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã€ä³ä¹þ€ß¥Ï¥ó¥É¥é¡¿CPUÎã³°¥Ï¥ó¥É¥é€ÎœÐžý
+ *  œèÍý€«€éžÆ€ÓœÐ€µ€ì€ë€³€È€òÁÛÄê€·€Æ€€€ë¡¥€³€ÎŽØ¿ô€Ï¡€CPU¥í¥Ã¥¯ŸõÂÖ
+ *  €ÇžÆ€ÓœÐ€µ€Ê€±€ì€Ð€Ê€é€Ê€€¡¥
+ *
+ *  ŒÂ¹ÔžúÎš€òŸå€²€ë€¿€á€Ë¡€€³€ÎŽØ¿ô€ò¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€Çµ­œÒ€·€Æ€â€è€€¡¥
+ *  €œ€ÎŸì¹ç€Ë€Ï¡€OMIT_CALLTEX€ò¥Þ¥¯¥íÄêµÁ€¹€ë¡¥
+ */
+extern void	calltex(void);
+
+#endif /* TOPPERS_TASK_H */
Index: /extension/messagebuf/kernel/task_manage.c
===================================================================
--- /extension/messagebuf/kernel/task_manage.c	(revision 7)
+++ /extension/messagebuf/kernel/task_manage.c	(revision 7)
@@ -0,0 +1,435 @@
+/*
+ *  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-2014 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$
+ */
+
+/*
+ *		¥¿¥¹¥¯ŽÉÍýµ¡Çœ
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯€Îµ¯Æ°
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯€Îµ¯Æ°¡ÊÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯µ¯Æ°Í×µá€Î¥­¥ã¥ó¥»¥ë
+ */
+#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 */
+
+/*
+ *  Œ«¥¿¥¹¥¯€ÎœªÎ»
+ */
+#ifdef TOPPERS_ext_tsk
+
+ER
+ext_tsk(void)
+{
+	ER		ercd;
+
+	LOG_EXT_TSK_ENTER();
+	CHECK_TSKCTX();
+
+	if (t_sense_lock()) {
+		/*
+		 *  CPU¥í¥Ã¥¯ŸõÂÖ€Çext_tsk€¬žÆ€Ð€ì€¿Ÿì¹ç€Ï¡€CPU¥í¥Ã¥¯€ò²òœü€·
+		 *  €Æ€«€é¥¿¥¹¥¯€òœªÎ»€¹€ë¡¥ŒÂÁõŸå€Ï¡€¥µ¡Œ¥Ó¥¹¥³¡Œ¥ëÆâ€Ç€ÎCPU
+		 *  ¥í¥Ã¥¯€òŸÊÎ¬€¹€ì€Ð€è€€€À€±¡¥
+		 */
+	}
+	else {
+		t_lock_cpu();
+	}
+	if (disdsp) {
+		/*
+		 *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ€Çext_tsk€¬žÆ€Ð€ì€¿Ÿì¹ç€Ï¡€¥Ç¥£¥¹¥Ñ¥Ã
+		 *  ¥Áµö²ÄŸõÂÖ€Ë€·€Æ€«€é¥¿¥¹¥¯€òœªÎ»€¹€ë¡¥
+		 */
+		disdsp = false;
+	}
+	if (!ipmflg) {
+		/*
+		 *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡ÊIPM¡Ë€¬TIPM_ENAALL°Ê³°€ÎŸõÂÖ€Çext_tsk
+		 *  €¬žÆ€Ð€ì€¿Ÿì¹ç€Ï¡€IPM€òTIPM_ENAALL€Ë€·€Æ€«€é¥¿¥¹¥¯€òœªÎ»€¹
+		 *  €ë¡¥
+		 */
+		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 */
+
+/*
+ *  ¥¿¥¹¥¯€Î¶¯À©œªÎ»
+ */
+#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€ÏŒ«¥¿¥¹¥¯€Ç€Ê€€€¿€á¡€¡Ê¥·¥ó¥°¥ë¥×¥í¥»¥Ã¥µ€Ç€Ï¡ËŒÂ
+			 *  ¹ÔŸõÂÖ€Ç€Ê€¯¡€make_non_runnable(p_tcb)€Ç¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã
+			 *  ¥Á€¬É¬Í×€Ë€Ê€ë€³€È€Ï€Ê€€¡¥
+			 */
+			(void) make_non_runnable(p_tcb);
+		}
+		else if (TSTAT_WAITING(p_tcb->tstat)) {
+			if (wait_dequeue_wobj(p_tcb)) {
+				dspreq = true;
+			}
+			wait_dequeue_tmevtb(p_tcb);
+		}
+		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 */
+
+/*
+ *  ¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ€ÎÊÑ¹¹
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯Í¥ÀèÅÙ€Î»²ŸÈ
+ */
+#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 */
+
+/*
+ *  Œ«¥¿¥¹¥¯€Î³ÈÄ¥ŸðÊó€Î»²ŸÈ
+ */
+#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: /extension/messagebuf/kernel/task_refer.c
===================================================================
--- /extension/messagebuf/kernel/task_refer.c	(revision 7)
+++ /extension/messagebuf/kernel/task_refer.c	(revision 7)
@@ -0,0 +1,215 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2005-2014 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$
+ */
+
+/*
+ *		¥¿¥¹¥¯€ÎŸõÂÖ»²ŸÈµ¡Çœ
+ */
+
+#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 "messagebuf.h"
+#include "mempfix.h"
+#include "time_event.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯€ÎŸõÂÖ»²ŸÈ
+ */
+#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)) {
+		/*
+ 		 *  ÂÐŸÝ¥¿¥¹¥¯€¬µÙ»ßŸõÂÖ€ÎŸì¹ç
+		 */
+		pk_rtsk->tskstat = TTS_DMT;
+	}
+	else {
+		/*
+ 		 *  ¥¿¥¹¥¯ŸõÂÖ€ÎŒèœÐ€·
+		 */
+		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;
+		}
+
+		/*
+ 		 *  žœºßÍ¥ÀèÅÙ€È¥Ù¡Œ¥¹Í¥ÀèÅÙ€ÎŒèœÐ€·
+		 */
+		pk_rtsk->tskpri = EXT_TSKPRI(p_tcb->priority);
+		pk_rtsk->tskbpri = EXT_TSKPRI(p_tcb->priority);
+
+		if (TSTAT_WAITING(tstat)) {
+			/*
+	 		 *  ÂÔ€ÁÍ×°ø€ÈÂÔ€ÁÂÐŸÝ€Î¥ª¥Ö¥ž¥§¥¯¥È€ÎID€ÎŒèœÐ€·
+			 */
+			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_SMBF:
+				pk_rtsk->tskwait = TTW_SMBF;
+				pk_rtsk->wobjid = MBFID(((WINFO_MBF *)(p_tcb->p_winfo))
+																->p_mbfcb);
+				break;
+			case TS_WAIT_RMBF:
+				pk_rtsk->tskwait = TTW_RMBF;
+				pk_rtsk->wobjid = MBFID(((WINFO_MBF *)(p_tcb->p_winfo))
+																->p_mbfcb);
+				break;
+			case TS_WAIT_MPF:
+				pk_rtsk->tskwait = TTW_MPF;
+				pk_rtsk->wobjid = MPFID(((WINFO_MPF *)(p_tcb->p_winfo))
+																->p_mpfcb);
+				break;
+			}
+
+			/*
+	 		 *  ¥¿¥€¥à¥¢¥Š¥È€¹€ë€Þ€Ç€Î»þŽÖ€ÎŒèœÐ€·
+			 */
+			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;
+			}
+		}
+
+		/*
+ 		 *  µ¯Ÿ²Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô€ÎŒèœÐ€·
+		 */
+		pk_rtsk->wupcnt = p_tcb->wupque ? 1U : 0U;
+	}
+
+	/*
+	 *  µ¯Æ°Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô€ÎŒèœÐ€·
+	 */
+	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: /extension/messagebuf/kernel/wait.c
===================================================================
--- /extension/messagebuf/kernel/wait.c	(revision 7)
+++ /extension/messagebuf/kernel/wait.c	(revision 7)
@@ -0,0 +1,262 @@
+/*
+ *  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-2014 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$
+ */
+
+/*
+ *		ÂÔ€ÁŸõÂÖŽÉÍý¥â¥ž¥å¡Œ¥ë
+ */
+
+#include "kernel_impl.h"
+#include "wait.h"
+#include "messagebuf.h"
+
+/*
+ *  ÂÔ€ÁŸõÂÖ€Ø€ÎÁ«°Ü¡Ê¥¿¥€¥à¥¢¥Š¥È»ØÄê¡Ë
+ */
+#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_waiwobj
+
+bool_t
+wait_dequeue_wobj(TCB *p_tcb)
+{
+	if (TSTAT_WAIT_WOBJ(p_tcb->tstat)) {
+		queue_delete(&(p_tcb->task_queue));
+		if (TSTAT_WAIT_SMBF(p_tcb->tstat)) {
+			return((*mbfhook_dequeue_wobj)(p_tcb));
+		}
+	}
+	return(false);
+}
+
+#endif /* TOPPERS_waiwobj */
+
+/*
+ *  ÂÔ€Á²òœü
+ */
+#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 */
+
+/*
+ *  ¥¿¥€¥à¥¢¥Š¥È€ËÈŒ€ŠÂÔ€Á²òœü
+ */
+#ifdef TOPPERS_waitmo
+
+void
+wait_tmout(TCB *p_tcb)
+{
+	if (wait_dequeue_wobj(p_tcb)) {
+		reqflg = true;
+	}
+	p_tcb->p_winfo->wercd = E_TMOUT;
+	if (make_non_wait(p_tcb)) {
+		reqflg = true;
+	}
+
+	/*
+	 *  €³€³€ÇÍ¥ÀèÅÙ€Î¹â€€³ä¹þ€ß€òŒõ€±ÉÕ€±€ë¡¥
+	 */
+	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;
+	}
+
+	/*
+	 *  €³€³€ÇÍ¥ÀèÅÙ€Î¹â€€³ä¹þ€ß€òŒõ€±ÉÕ€±€ë¡¥
+	 */
+	i_unlock_cpu();
+	i_lock_cpu();
+}
+
+#endif /* TOPPERS_waitmook */
+
+/*
+ *  ÂÔ€ÁŸõÂÖ€Î¶¯À©²òœü
+ */
+#ifdef TOPPERS_wairel
+
+bool_t
+wait_release(TCB *p_tcb)
+{
+	bool_t	dspreq = false;
+
+	if (wait_dequeue_wobj(p_tcb)) {
+		dspreq = true;
+	}
+	wait_dequeue_tmevtb(p_tcb);
+	p_tcb->p_winfo->wercd = E_RLWAI;
+	if (make_non_wait(p_tcb)) {
+		dspreq = true;
+	}
+	return(dspreq);
+}
+
+#endif /* TOPPERS_wairel */
+
+/*
+ *  ŒÂ¹ÔÃæ€Î¥¿¥¹¥¯€ÎÆ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€Á¥­¥å¡Œ€Ø€ÎÁÞÆþ
+ *
+ *  ŒÂ¹ÔÃæ€Î¥¿¥¹¥¯€ò¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€Á¥­¥å¡Œ€ØÁÞÆþ€¹€ë¡¥¥ª
+ *  ¥Ö¥ž¥§¥¯¥È€ÎÂ°À­€Ë±þ€ž€Æ¡€FIFOœç€Þ€¿€Ï¥¿¥¹¥¯Í¥ÀèÅÙœç€ÇÁÞÆþ€¹€ë¡¥
+ */
+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));
+	}
+}
+
+/*
+ *  Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ËÂÐ€¹€ëÂÔ€ÁŸõÂÖ€Ø€ÎÁ«°Ü
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯Í¥ÀèÅÙÊÑ¹¹»þ€ÎœèÍý
+ */
+#ifdef TOPPERS_wobjpri
+
+bool_t
+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);
+		if (TSTAT_WAIT_SMBF(p_tcb->tstat)) {
+			return((*mbfhook_change_priority)(p_wobjcb));
+		}
+	}
+	return(false);
+}
+
+#endif /* TOPPERS_wobjpri */
+
+/*
+ *  ÂÔ€Á¥­¥å¡Œ€ÎœéŽü²œ
+ */
+#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: /extension/messagebuf/kernel/wait.h
===================================================================
--- /extension/messagebuf/kernel/wait.h	(revision 7)
+++ /extension/messagebuf/kernel/wait.h	(revision 7)
@@ -0,0 +1,277 @@
+/*
+ *  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-2014 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$
+ */
+
+/*
+ *		ÂÔ€ÁŸõÂÖŽÉÍý¥â¥ž¥å¡Œ¥ë
+ */
+
+#ifndef TOPPERS_WAIT_H
+#define TOPPERS_WAIT_H
+
+#include "task.h"
+#include "time_event.h"
+
+/*
+ *  ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙœç€ÎÂÔ€Á¥­¥å¡Œ€Ø€ÎÁÞÆþ
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ò¡€¥¿¥¹¥¯Í¥ÀèÅÙœç€Î¥­¥å¡Œp_queue€ËÁÞÆþ€¹€ë¡¥
+ *  ¥­¥å¡Œ€ÎÃæ€ËÆ±€žÍ¥ÀèÅÙ€Î¥¿¥¹¥¯€¬€¢€ëŸì¹ç€Ë€Ï¡€€œ€ÎºÇžå€ËÁÞÆþ€¹€ë¡¥
+ */
+Inline void
+queue_insert_tpri(QUEUE *p_queue, TCB *p_tcb)
+{
+	QUEUE	*p_entry;
+	uint_t	pri = p_tcb->priority;
+
+	for (p_entry = p_queue->p_next; p_entry != p_queue;
+										p_entry = p_entry->p_next) {
+		if (pri < ((TCB *) p_entry)->priority) {
+			break;
+		}
+	}
+	queue_insert_prev(p_entry, &(p_tcb->task_queue));
+}
+
+/*
+ *  ÂÔ€ÁŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  ŒÂ¹ÔÃæ€Î¥¿¥¹¥¯€òÂÔ€ÁŸõÂÖ€ËÁ«°Ü€µ€»€ë¡¥¶ñÂÎÅª€Ë€Ï¡€ŒÂ¹ÔÃæ€Î¥¿¥¹¥¯€ò
+ *  ¥ì¥Ç¥£¥­¥å¡Œ€«€éºïœü€·¡€TCB€Îp_winfo¥Õ¥£¡Œ¥ë¥É¡€WINFO€Îp_tmevtb¥Õ¥£¡Œ
+ *  ¥ë¥É€òÀßÄê€¹€ë¡¥
+ */
+Inline void
+make_wait(WINFO *p_winfo)
+{
+	(void) make_non_runnable(p_runtsk);
+	p_runtsk->p_winfo = p_winfo;
+	p_winfo->p_tmevtb = NULL;
+}
+
+/*
+ *  ÂÔ€ÁŸõÂÖ€Ø€ÎÁ«°Ü¡Ê¥¿¥€¥à¥¢¥Š¥È»ØÄê¡Ë
+ *
+ *  ŒÂ¹ÔÃæ€Î¥¿¥¹¥¯€ò¡€¥¿¥€¥à¥¢¥Š¥È»ØÄêÉÕ€­€ÇÂÔ€ÁŸõÂÖ€ËÁ«°Ü€µ€»€ë¡¥¶ñÂÎ
+ *  Åª€Ë€Ï¡€ŒÂ¹ÔÃæ€Î¥¿¥¹¥¯€ò¥ì¥Ç¥£¥­¥å¡Œ€«€éºïœü€·¡€TCB€Îp_winfo¥Õ¥£¡Œ
+ *  ¥ë¥É¡€WINFO€Îp_tmevtb¥Õ¥£¡Œ¥ë¥É€òÀßÄê€¹€ë¡¥€Þ€¿¡€¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö
+ *  ¥í¥Ã¥¯€òÅÐÏ¿€¹€ë¡¥
+ */
+extern void	make_wait_tmout(WINFO *p_winfo, TMEVTB *p_tmevtb, TMO tmout);
+
+/*
+ *  ÂÔ€Á²òœü€Î€¿€á€Î¥¿¥¹¥¯ŸõÂÖ€Î¹¹¿·
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ò¡€ÂÔ€Á²òœü€¹€ë€è€Š¥¿¥¹¥¯ŸõÂÖ€ò¹¹¿·€¹€ë¡¥
+ *  ÂÔ€Á²òœü€¹€ë¥¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ë€Ê€ëŸì¹ç€Ï¡€¥ì¥Ç¥£¥­¥å¡Œ€Ë€Ä€Ê
+ *  €°¡¥€Þ€¿¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬É¬Í×€ÊŸì¹ç€Ë€Ïtrue€òÊÖ€¹¡¥
+ */
+Inline bool_t
+make_non_wait(TCB *p_tcb)
+{
+	assert(TSTAT_WAITING(p_tcb->tstat));
+
+	if (!TSTAT_SUSPENDED(p_tcb->tstat)) {
+		/*
+		 *  ÂÔ€ÁŸõÂÖ€«€éŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ø€ÎÁ«°Ü
+		 */
+		p_tcb->tstat = TS_RUNNABLE;
+		LOG_TSKSTAT(p_tcb);
+		return(make_runnable(p_tcb));
+	}
+	else {
+		/*
+		 *  ÆóœÅÂÔ€ÁŸõÂÖ€«€é¶¯À©ÂÔ€ÁŸõÂÖ€Ø€ÎÁ«°Ü
+		 */
+		p_tcb->tstat = TS_SUSPENDED;
+		LOG_TSKSTAT(p_tcb);
+		return(false);
+	}
+}
+
+/*
+ *  ¥ª¥Ö¥ž¥§¥¯¥ÈÂÔ€Á¥­¥å¡Œ€«€é€Îºïœü
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€¬¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€Á¥­¥å¡Œ€Ë€Ä
+ *  €Ê€¬€ì€Æ€€€ì€Ð¡€ÂÔ€Á¥­¥å¡Œ€«€éºïœü€¹€ë¡¥¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬É¬Í×€ÊŸì¹ç€Ë
+ *  €Ïtrue€òÊÖ€¹¡¥
+ */
+extern bool_t	wait_dequeue_wobj(TCB *p_tcb);
+
+/*
+ *  »þŽÖÂÔ€Á€Î€¿€á€Î¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯€ÎÅÐÏ¿²òœü
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ËÂÐ€·€Æ¡€»þŽÖÂÔ€Á€Î€¿€á€Î¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö
+ *  ¥í¥Ã¥¯€¬ÅÐÏ¿€µ€ì€Æ€€€ì€Ð¡€€œ€ì€òÅÐÏ¿²òœü€¹€ë¡¥
+ */
+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€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ÎÂÔ€ÁŸõÂÖ€ò²òœü€¹€ë¡¥¶ñÂÎÅª€Ë€Ï¡€¥¿¥€¥à¥€
+ *  ¥Ù¥ó¥È¥Ö¥í¥Ã¥¯€¬ÅÐÏ¿€µ€ì€Æ€€€ì€Ð¡€€œ€ì€òÅÐÏ¿²òœü€¹€ë¡¥€Þ€¿¡€¥¿¥¹¥¯
+ *  ŸõÂÖ€ò¹¹¿·€·¡€ÂÔ€Á²òœü€·€¿¥¿¥¹¥¯€«€é€ÎÊÖÃÍ€òE_OK€È€¹€ë¡¥ÂÔ€Á¥­¥å¡Œ
+ *  €«€é€Îºïœü€Ï¹Ô€ï€Ê€€¡¥ÂÔ€Á²òœü€·€¿¥¿¥¹¥¯€Ø€Î¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬É¬Í×€ÊŸì
+ *  ¹ç€Ë€Ïtrue€òÊÖ€¹¡¥
+ */
+extern bool_t	wait_complete(TCB *p_tcb);
+
+/*
+ *  ¥¿¥€¥à¥¢¥Š¥È€ËÈŒ€ŠÂÔ€Á²òœü
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€¬¡€ÂÔ€Á¥­¥å¡Œ€Ë€Ä€Ê€¬€ì€Æ€€€ì€ÐÂÔ€Á¥­¥å¡Œ
+ *  €«€éºïœü€·¡€¥¿¥¹¥¯ŸõÂÖ€ò¹¹¿·€¹€ë¡¥€Þ€¿¡€ÂÔ€Á²òœü€·€¿¥¿¥¹¥¯€«€é€ÎÊÖ
+ *  ÃÍ€ò¡€wait_tmout€Ç€ÏE_TMOUT¡€wait_tmout_ok€Ç€ÏE_OK€È€¹€ë¡¥ÂÔ€Á²òœü
+ *  €·€¿¥¿¥¹¥¯€Ø€Î¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬É¬Í×€Ê»þ€Ï¡€reqflg€òtrue€Ë€¹€ë¡¥
+ *
+ *  wait_tmout_ok€Ï¡€dly_tsk€Ç»È€Š€¿€á€Î€â€Î€Ç¡€ÂÔ€Á¥­¥å¡Œ€«€éºïœü€¹€ë
+ *  œèÍý€ò¹Ô€ï€Ê€€¡¥
+ *
+ *  €€€º€ì€ÎŽØ¿ô€â¡€¥¿¥€¥à¥€¥Ù¥ó¥È€Î¥³¡Œ¥ë¥Ð¥Ã¥¯ŽØ¿ô€È€·€ÆÍÑ€€€ë€¿€á€Î
+ *  €â€Î€Ç¡€³ä¹þ€ß¥Ï¥ó¥É¥é€«€éžÆ€ÓœÐ€µ€ì€ë€³€È€òÁÛÄê€·€Æ€€€ë¡¥
+ */
+extern void	wait_tmout(TCB *p_tcb);
+extern void	wait_tmout_ok(TCB *p_tcb);
+
+/*
+ *  ÂÔ€ÁŸõÂÖ€Î¶¯À©²òœü
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ÎÂÔ€ÁŸõÂÖ€ò¶¯À©Åª€Ë²òœü€¹€ë¡¥¶ñÂÎÅª€Ë€Ï¡€
+ *  ¥¿¥¹¥¯€¬ÂÔ€Á¥­¥å¡Œ€Ë€Ä€Ê€¬€ì€Æ€€€ì€ÐÂÔ€Á¥­¥å¡Œ€«€éºïœü€·¡€¥¿¥€¥à¥€
+ *  ¥Ù¥ó¥È¥Ö¥í¥Ã¥¯€¬ÅÐÏ¿€µ€ì€Æ€€€ì€Ð€œ€ì€òÅÐÏ¿²òœü€¹€ë¡¥€Þ€¿¡€¥¿¥¹¥¯€Î
+ *  ŸõÂÖ€ò¹¹¿·€·¡€ÂÔ€Á²òœü€·€¿¥¿¥¹¥¯€«€é€ÎÊÖÃÍ€òE_RLWAI€È€¹€ë¡¥€Þ€¿¡€
+ *  ÂÔ€Á²òœü€·€¿¥¿¥¹¥¯€Ø€Î¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬É¬Í×€ÊŸì¹ç€Ë€Ïtrue€òÊÖ€¹¡¥
+ */
+extern bool_t	wait_release(TCB *p_tcb);
+
+/*
+ *  ÂÔ€Á¥­¥å¡Œ€ÎÀèÆ¬€Î¥¿¥¹¥¯ID
+ *
+ *  p_wait_queue€Ç»ØÄê€·€¿ÂÔ€Á¥­¥å¡Œ€ÎÀèÆ¬€Î¥¿¥¹¥¯ID€òÊÖ€¹¡¥ÂÔ€Á¥­¥å¡Œ
+ *  €¬¶õ€ÎŸì¹ç€Ë€Ï¡€TSK_NONE€òÊÖ€¹¡¥
+ */
+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);
+	}
+}
+
+/*
+ *  Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬Áàºî¥ë¡Œ¥Á¥ó
+ *
+ *  Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎœéŽü²œ¥Ö¥í¥Ã¥¯€ÈŽÉÍý¥Ö¥í¥Ã¥¯€ÎÀèÆ¬ÉôÊ¬€Ï¶Š
+ *  ÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥°Ê²Œ€Ï¡€€œ€Î¶ŠÄÌÉôÊ¬€ò°·€Š€¿€á€Î·¿€ª€è€Ó¥ë¡Œ¥Á¥ó·²
+ *  €Ç€¢€ë¡¥
+ *
+ *  Ê£¿ô€ÎÂÔ€Á¥­¥å¡Œ€ò»ý€ÄÆ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŸì¹ç¡€ÀèÆ¬°Ê³°€ÎÂÔ€Á
+ *  ¥­¥å¡Œ€òÁàºî€¹€ëŸì¹ç€Ë€Ï¡€€³€ì€é€Î¥ë¡Œ¥Á¥ó€Ï»È€š€Ê€€¡¥€Þ€¿¡€¥ª¥Ö¥ž¥§
+ *  ¥¯¥ÈÂ°À­€ÎTA_TPRI¥Ó¥Ã¥È€ò»²ŸÈ€¹€ë€Î€Ç¡€€³€Î¥Ó¥Ã¥È€òÂŸ€ÎÌÜÅª€Ë»È€Ã€Æ
+ *  €€€ëŸì¹ç€â¡€€³€ì€é€Î¥ë¡Œ¥Á¥ó€Ï»È€š€Ê€€¡¥
+ */
+
+/*
+ *  Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎœéŽü²œ¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬
+ */
+typedef struct wait_object_initialization_block {
+	ATR			wobjatr;		/* ¥ª¥Ö¥ž¥§¥¯¥ÈÂ°À­ */
+} WOBJINIB;
+
+/*
+ *  Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬
+ */
+typedef struct wait_object_control_block {
+	QUEUE		wait_queue;		/* ÂÔ€Á¥­¥å¡Œ */
+	const WOBJINIB *p_wobjinib;	/* œéŽü²œ¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿ */
+} WOBJCB;
+
+/*
+ *  Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€ÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯¡ÊWINFO¡Ë€ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀ
+ *  žì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç€¢€ë€¬¡€WINFO€¬¶ŠÍÑÂÎ€ÇÄêµÁ€µ€ì€Æ€€€ë€¿
+ *  €á€Ë¡€1€Ä€Î¥Õ¥£¡Œ¥ë¥É€È€·€ÆŽÞ€á€Æ€€€ë¡¥
+ */
+typedef struct wait_object_waiting_information {
+	WINFO	winfo;			/* Éžœà€ÎÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯ */
+	WOBJCB	*p_wobjcb;		/* ÂÔ€Á¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý¥Ö¥í¥Ã¥¯ */
+} WINFO_WOBJ;
+
+/*
+ *  Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ËÂÐ€¹€ëÂÔ€ÁŸõÂÖ€Ø€ÎÁ«°Ü
+ *  
+ *  ŒÂ¹ÔÃæ€Î¥¿¥¹¥¯€òÂÔ€ÁŸõÂÖ€ËÁ«°Ü€µ€»¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€Á¥­¥å¡Œ
+ *  €Ë€Ä€Ê€°¡¥€Þ€¿¡€ÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯¡ÊWINFO¡Ë€Îp_wobjcb€òÀßÄê€¹€ë¡¥
+ *  wobj_make_wait_tmout€Ï¡€¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯€ÎÅÐÏ¿€â¹Ô€Š¡¥
+ */
+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);
+
+/*
+ *  ¥¿¥¹¥¯Í¥ÀèÅÙÊÑ¹¹»þ€ÎœèÍý
+ *
+ *  Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ËÂÐ€¹€ëÂÔ€ÁŸõÂÖ€Ë€¢€ë¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€¬ÊÑ¹¹€µ
+ *  €ì€¿Ÿì¹ç€Ë¡€ÂÔ€Á¥­¥å¡Œ€ÎÃæ€Ç€Î¥¿¥¹¥¯€Î°ÌÃÖ€òœ€Àµ€¹€ë¡¥¥Ç¥£¥¹¥Ñ¥Ã¥Á
+ *  €¬É¬Í×€ÊŸì¹ç€Ë€Ïtrue€òÊÖ€¹¡¥
+ */
+extern bool_t	wobj_change_priority(WOBJCB *p_wobjcb, TCB *p_tcb);
+
+/*
+ *  ÂÔ€Á¥­¥å¡Œ€ÎœéŽü²œ
+ *
+ *  ÂÔ€Á¥­¥å¡Œ€Ë€Ä€Ê€¬€ì€Æ€€€ë¥¿¥¹¥¯€ò€¹€Ù€ÆÂÔ€Á²òœü€¹€ë¡¥ÂÔ€Á²òœü€·€¿
+ *  ¥¿¥¹¥¯€«€é€ÎÊÖÃÍ€Ï¡€E_DLT€È€¹€ë¡¥ÂÔ€Á²òœü€·€¿¥¿¥¹¥¯€Ø€Î¥Ç¥£¥¹¥Ñ¥Ã¥Á
+ *  €¬É¬Í×€ÊŸì¹ç€Ïtrue¡€€œ€Š€Ç€Ê€€Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥
+ */
+extern bool_t	init_wait_queue(QUEUE *p_wait_queue);
+
+#endif /* TOPPERS_WAIT_H */
Index: /extension/messagebuf/test/bit_kernel.c
===================================================================
--- /extension/messagebuf/test/bit_kernel.c	(revision 7)
+++ /extension/messagebuf/test/bit_kernel.c	(revision 7)
@@ -0,0 +1,494 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2005-2014 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$
+ */
+
+/*
+ *		¥«¡Œ¥Í¥ë€ÎÀ°¹çÀ­ž¡ºº
+ */
+
+#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/messagebuf.h"
+#include "kernel/mempfix.h"
+#include "kernel/time_event.h"
+
+/*
+ *   ¥š¥é¡Œ¥³¡Œ¥É€ÎÄêµÁ
+ */
+#define E_SYS_LINENO	ERCD(E_SYS, -(__LINE__))
+
+/*
+ *  ŽÉÍý¥Ö¥í¥Ã¥¯€Î¥¢¥É¥ì¥¹€ÎÀµÅöÀ­€Î¥Á¥§¥Ã¥¯
+ */
+#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_MBFCB(p_mbfcb) \
+		((((char *) p_mbfcb) - ((char *) mbfcb_table)) % sizeof(MBFCB) == 0 \
+			&& TMIN_MBFID <= MBFID(p_mbfcb) && MBFID(p_mbfcb) <= tmax_mbfid)
+
+#define VALID_MPFCB(p_mpfcb) \
+		((((char *) p_mpfcb) - ((char *) mpfcb_table)) % sizeof(MPFCB) == 0 \
+			&& TMIN_MPFID <= MPFID(p_mpfcb) && MPFID(p_mpfcb) <= tmax_mpfid)
+
+/*
+ *  ¥­¥å¡Œ€Î¥Á¥§¥Ã¥¯€Î€¿€á€ÎŽØ¿ô
+ *
+ *  p_queue€Ëp_entry€¬ŽÞ€Þ€ì€Æ€€€ë€«€òÄŽ€Ù€ë¡¥ŽÞ€Þ€ì€Æ€€€ì€Ðtrue¡€ŽÞ€Þ
+ *  €ì€Æ€€€Ê€€Ÿì¹ç€Ë€Ïfalse€òÊÖ€¹¡¥¥À¥Ö¥ë¥ê¥ó¥¯€ÎÉÔÀ°¹ç€ÎŸì¹ç€Ë€â¡€
+ *  false€òÊÖ€¹¡¥
+ */
+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);					/* ¥À¥Ö¥ë¥ê¥ó¥¯€ÎÉÔÀ°¹ç */
+	}
+	while (p_current != p_queue) {
+		if (p_current == p_entry) {
+			return(true);				/* p_entry€¬ŽÞ€Þ€ì€Æ€€€¿ */
+		}
+
+		/*
+		 *  ¥­¥å¡Œ€ÎŒ¡€ÎÍ×ÁÇ€Ë¿Ê€à
+		 */
+		p_next = p_current->p_next;
+		if (p_next->p_prev != p_current) {
+			return(false);				 /* ¥À¥Ö¥ë¥ê¥ó¥¯€ÎÉÔÀ°¹ç */
+		}
+		p_current = p_next;
+	}
+	return(false);
+}
+
+/*
+ *  ¥¹¥¿¥Ã¥¯Ÿå€ò»Ø€·€Æ€€€ë€«€Îž¡ºº
+ */
+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);
+}
+
+/*
+ *  ¥¿¥¹¥¯Ëè€ÎÀ°¹çÀ­ž¡ºº
+ */
+static ER
+bit_task(ID tskid)
+{
+	TCB			*p_tcb;
+	const TINIB	*p_tinib;
+	uint_t		tstat, tstat_wait, pri;
+	TMEVTB		*p_tmevtb;
+	SEMCB		*p_semcb;
+	FLGCB		*p_flgcb;
+	DTQCB		*p_dtqcb;
+	PDQCB		*p_pdqcb;
+	MBXCB		*p_mbxcb;
+	MBFCB		*p_mbfcb;
+	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);
+	pri = p_tcb->priority;
+
+	/*
+	 *  œéŽü²œ¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿€Îž¡ºº
+	 */
+	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);
+	}
+
+	/*
+	 *  ¥¿¥¹¥¯Í¥ÀèÅÙ€Îž¡ºº
+	 */
+	if (pri >= TNUM_TPRI) {
+		return(E_SYS_LINENO);
+	}
+
+	/*
+	 *  texptn€Îž¡ºº
+	 */
+	if (p_tcb->p_tinib->texrtn == NULL && p_tcb->texptn != 0U) {
+		return(E_SYS_LINENO);
+	}
+
+	/*
+	 *  µÙ»ßŸõÂÖ€Ë€ª€±€ë¥Á¥§¥Ã¥¯
+	 */
+	if (TSTAT_DORMANT(tstat)) {
+		if (!(pri == p_tinib->ipriority)
+					&& (p_tcb->wupque == false)
+					&& (p_tcb->enatex == false)
+					&& (p_tcb->texptn == 0U)) {
+			return(E_SYS_LINENO);
+		}
+	}
+
+	/*
+	 *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ë€ª€±€ë¥Á¥§¥Ã¥¯
+	 */
+	if (TSTAT_RUNNABLE(tstat)) {
+		if (!in_queue(&ready_queue[pri], &(p_tcb->task_queue))) {
+			return(E_SYS_LINENO);
+		}
+	}
+
+	/*
+	 *  ÂÔ€ÁŸõÂÖ€Ë€ª€±€ë¥Á¥§¥Ã¥¯
+	 */
+	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)€Îž¡ºº¡ÊÌ€Ž°À®¡Ë
+			 */
+		}
+
+		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_SMBF:
+				p_mbfcb = ((WINFO_MBF *)(p_tcb->p_winfo))->p_mbfcb;
+				if (!VALID_MBFCB(p_mbfcb)) {
+					return(E_SYS_LINENO);
+				}
+				if (!in_queue(&(p_mbfcb->swait_queue), &(p_tcb->task_queue))) {
+					return(E_SYS_LINENO);
+				}
+				break;
+
+			case TS_WAIT_RMBF:
+				p_mbfcb = ((WINFO_MBF *)(p_tcb->p_winfo))->p_mbfcb;
+				if (!VALID_MBFCB(p_mbfcb)) {
+					return(E_SYS_LINENO);
+				}
+				if (!in_queue(&(p_mbfcb->rwait_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) {
+		/*
+		 *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€Îž¡ºº
+		 */
+#if 0
+		if (bit_tskctxb(&(p_tcb->tskctxb))) {
+			return(E_SYS_LINENO);
+		}
+#endif
+	}
+	return(E_OK);
+}
+
+/*
+ *  ¥»¥Þ¥Õ¥©Ëè€ÎÀ°¹çÀ­ž¡ºº
+ */
+#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;
+
+	/*
+	 *  œéŽü²œ¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿€Îž¡ºº
+	 */
+	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;
+
+	/*
+	 *  ¥¿¥¹¥¯Ëè€Îž¡ºº
+	 */
+	for (tskid = TMIN_TSKID; tskid <= tmax_tskid; tskid++) {
+		ercd = bit_task(tskid);
+		if (ercd != E_OK) {
+			return(ercd);
+		}
+	}
+
+	/*
+	 *  ¥»¥Þ¥Õ¥©Ëè€Îž¡ºº
+	 */
+	for (semid = TMIN_SEMID; semid <= tmax_semid; semid++) {
+		ercd = bit_semaphore(semid);
+		if (ercd != E_OK) {
+			return(ercd);
+		}
+	}
+
+	return(E_OK);
+}
Index: /extension/messagebuf/test/test_messagebuf1.c
===================================================================
--- /extension/messagebuf/test/test_messagebuf1.c	(revision 7)
+++ /extension/messagebuf/test/test_messagebuf1.c	(revision 7)
@@ -0,0 +1,395 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2014 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$
+ */
+
+/* 
+ *		¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€Î¥Æ¥¹¥È(1)
+ *
+ * ¡Ú¥Æ¥¹¥È€ÎÌÜÅª¡Û
+ *
+ *  FIFOœç¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€Ë¡€¥á¥Ã¥»¡Œ¥ž€òÁ÷¿®€¹€ëœèÍý€ÈŒõ¿®€¹€ëœèÍý
+ *  €ò°ìÄÌ€ê¥Æ¥¹¥È€¹€ë¡¥
+ *
+ * ¡Ú¥Æ¥¹¥È¹àÌÜ¡Û
+ *
+ *	(A) ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€Ø€ÎÁ÷¿®œèÍý¡Êsnd_mbf¡€send_message¡Ë
+ *		(A-1) Œõ¿®ÂÔ€Á¥­¥å¡Œ€ÎÀèÆ¬¥¿¥¹¥¯€¬Œõ¿®¡Ê¥¿¥¹¥¯ÀÚŽ¹€š€Ê€·¡Ë
+ *		(A-2) Œõ¿®ÂÔ€Á¥­¥å¡Œ€ÎÀèÆ¬¥¿¥¹¥¯€¬Œõ¿®¡Ê¥¿¥¹¥¯ÀÚŽ¹€š€¢€ê¡Ë
+ *		(A-3) ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡ŽÉÍýÎÎ°è€Ë³ÊÇŒ
+ *		(A-4) Á÷¿®ÂÔ€Á¥­¥å¡Œ€Ë¥¿¥¹¥¯€¬€¢€ë€¿€á€ËÁ÷¿®ÂÔ€ÁŸõÂÖ€Ë
+ *		(A-5) ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡ŽÉÍýÎÎ°è€Ë¶õ€­€¬€Ê€€€¿€á€ËÁ÷¿®ÂÔ€ÁŸõÂÖ€Ë
+ *	(B) ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€«€é€ÎŒõ¿®œèÍý¡Êrcv_mbf¡€receive_message¡Ë
+ *		(B-1) ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡ŽÉÍýÎÎ°è€«€éŒõ¿®
+ *		(B-2) (B-1)¡ÜÁ÷¿®ÂÔ€Á¥¿¥¹¥¯¡Ê1€Ä€Þ€¿€ÏÊ£¿ô¡Ë€¬ÂÔ€Á²òœü¡Ê¥¿¥¹¥¯
+ *			  ÀÚŽ¹€š€Ê€·¡Ë
+ *		(B-3) (B-1)¡ÜÁ÷¿®ÂÔ€Á¥¿¥¹¥¯¡Ê1€Ä€Þ€¿€ÏÊ£¿ô¡Ë€¬ÂÔ€Á²òœü¡Ê¥¿¥¹¥¯
+ *			  ÀÚŽ¹€š€¢€ê¡Ë
+ *		(B-4) Á÷¿®ÂÔ€Á¥­¥å¡Œ€ÎÀèÆ¬€Î¥¿¥¹¥¯€Î¥á¥Ã¥»¡Œ¥ž€òŒõ¿®¡Ê¥¿¥¹¥¯ÀÚ
+ *			  Ž¹€š€Ê€·¡Ë
+ *		(B-5) Á÷¿®ÂÔ€Á¥­¥å¡Œ€ÎÀèÆ¬€Î¥¿¥¹¥¯€Î¥á¥Ã¥»¡Œ¥ž€òŒõ¿®¡Ê¥¿¥¹¥¯ÀÚ
+ *			  Ž¹€š€¢€ê¡Ë
+ *		(B-6) Œõ¿®ÂÔ€ÁŸõÂÖ€Ë
+ *	(C) ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡ŽÉÍýÎÎ°è€Ø€Î¥á¥Ã¥»¡Œ¥ž€Î³ÊÇŒ¡Êenqueue_message¡Ë
+ *		(C-1) ¥µ¥€¥º€È¥á¥Ã¥»¡Œ¥žËÜÂÎ€ò°ìÏ¢€ÎÎÎ°è€Ë³ÊÇŒ
+ *		(C-2) ¥µ¥€¥º€ò³ÊÇŒžå€ËŽÉÍýÎÎ°è€ÎÀèÆ¬€ËÌá€ë
+ *		(C-3) ¥á¥Ã¥»¡Œ¥žËÜÂÎ€Î³ÊÇŒÅÓÃæ€ÇŽÉÍýÎÎ°è€ÎÀèÆ¬€ËÌá€ë
+ *		(C-4) ¥á¥Ã¥»¡Œ¥žËÜÂÎ€Î³ÊÇŒžå€ËŽÉÍýÎÎ°è€ÎÀèÆ¬€ËÌá€ë
+ *	(D) ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡ŽÉÍýÎÎ°è€«€é€Î¥á¥Ã¥»¡Œ¥ž€ÎŒèœÐ€·¡Êdequeue_message¡Ë
+ *		(D-1) ¥µ¥€¥º€È¥á¥Ã¥»¡Œ¥žËÜÂÎ€ò°ìÏ¢€ÎÎÎ°è€«€éŒèœÐ€·
+ *		(D-2) ¥µ¥€¥º€òŒèœÐ€·žå€ËŽÉÍýÎÎ°è€ÎÀèÆ¬€ËÌá€ë
+ *		(D-3) ¥á¥Ã¥»¡Œ¥žËÜÂÎ€ÎŒèœÐ€·ÅÓÃæ€ÇŽÉÍýÎÎ°è€ÎÀèÆ¬€ËÌá€ë
+ *		(D-4) ¥á¥Ã¥»¡Œ¥žËÜÂÎ€ÎŒèœÐ€·žå€ËŽÉÍýÎÎ°è€ÎÀèÆ¬€ËÌá€ë
+ *
+ * ¡Ú»ÈÍÑ¥ê¥œ¡Œ¥¹¡Û
+ *
+ *	TASK1: ¹âÍ¥ÀèÅÙ¥¿¥¹¥¯¡€¥á¥€¥ó¥¿¥¹¥¯¡€ºÇœé€«€éµ¯Æ°
+ *	TASK2: ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	TASK3: ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	MBF1: ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡¡ÊTA_NULLÂ°À­¡€ºÇÂç¥á¥Ã¥»¡Œ¥ž¥µ¥€¥º¡§26¡€¥á¥Ã
+ *		  ¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡ŽÉÍýÎÎ°è€Î¥µ¥€¥º¡§26¢ªŒÂºÝ€Ë€Ï28¡Ë
+ *
+ * ¡Ú¥Æ¥¹¥È¥·¡Œ¥±¥ó¥¹¡Û
+ *
+ *	== TASK1¡ÊÍ¥ÀèÅÙ¡§¹â¡Ë==
+ *		call(set_bit_func(bit_kernel))
+ *	1:	act_tsk(TASK2)
+ *		act_tsk(TASK3)
+ *		ref_mbf(MBF1, &rmbf)
+ *		assert(rmbf.stskid == TSK_NONE)
+ *		assert(rmbf.rtskid == TSK_NONE)
+ *		assert(rmbf.smbfcnt == 0)
+ *		snd_mbf(MBF1, string1, 9)		... (A-3)(C-1)¡€»ÈÍÑ¡§0¡Á15
+ *	2:	snd_mbf(MBF1, string2, 5)		... (A-3)(C-4)¡€»ÈÍÑ¡§0¡Á27
+ *	3:	snd_mbf(MBF1, string3, 4)		... (A-5)
+ *	== TASK2¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë==
+ *	4:	ref_mbf(MBF1, &rmbf)
+ *		assert(rmbf.stskid == TASK1)
+ *		assert(rmbf.rtskid == TSK_NONE)
+ *		assert(rmbf.smbfcnt == 2)
+ *	5:	snd_mbf(MBF1, string1, 4)		... (A-4)
+ *	== TASK3¡ÊÍ¥ÀèÅÙ¡§Äã¡Ë==
+ *	6:	rcv_mbf(MBF1, buf1) -> 9		... (B-3)(D-1)(C-1)¡€»ÈÍÑ¡§16¡Á27,0¡Á15
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	7:	assert(strncmp(buf1, string1, 9) == 0)
+ *		slp_tsk()
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	8:	rcv_mbf(MBF1, buf1) -> 5		... (B-1)(D-4)¡€»ÈÍÑ¡§0¡Á15
+ *		assert(strncmp(buf1, string2, 5) == 0)
+ *		rcv_mbf(MBF1, buf1) -> 4		... (B-1)(D-1)¡€»ÈÍÑ¡§8¡Á15
+ *		assert(strncmp(buf1, string3, 4) == 0)
+ *		rcv_mbf(MBF1, buf1) -> 4		... (B-1)(D-1)¡€»ÈÍÑ¡§€Ê€·
+ *		assert(strncmp(buf1, string1, 4) == 0)
+ *	9:	rcv_mbf(MBF1, buf1) -> 10		... (B-6)
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	10:	ref_mbf(MBF1, &rmbf)
+ *		assert(rmbf.stskid == TSK_NONE)
+ *		assert(rmbf.rtskid == TASK2)
+ *		assert(rmbf.smbfcnt == 0)
+ *	11:	snd_mbf(MBF1, string2, 10)		... (A-2)
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	12:	assert(strncmp(buf1, string2, 10) == 0)
+ *		rcv_mbf(MBF1, buf1) -> 11		... (B-6)
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	13:	wup_tsk(TASK1)
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	14:	snd_mbf(MBF1, string3, 11)		... (A-1)
+ *		assert(strncmp(buf1, string3, 11) == 0)
+ *		snd_mbf(MBF1, string1, 16)		... (A-3)(C-3)¡€»ÈÍÑ¡§16¡Á27,0¡Á7
+ *		tslp_tsk(1) -> E_TMOUT
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	15:	slp_tsk()
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	16:	snd_mbf(MBF1, string2, 12)		... (A-5)
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	17:	wup_tsk(TASK2)
+ *		tslp_tsk(1) -> E_TMOUT
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	18:	snd_mbf(MBF1, string3, 4)		... (A-4)
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	19:	rcv_mbf(MBF1, buf1) -> 16		... (B-2)(D-3)(C-1)(C-2)¡€
+ *										... 				»ÈÍÑ¡§8¡Á27,0¡Á3
+ *		assert(strncmp(buf1, string1, 16) == 0)
+ *		slp_tsk()
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	20:	rcv_mbf(MBF1, buf1) -> 12		... (B-1)(D-1)¡€»ÈÍÑ¡§24¡Á27¡€0¡Á3
+ *		assert(strncmp(buf1, string2, 12) == 0)
+ *	21:	snd_mbf(MBF1, string1, 25)		... (A-5)
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	22:	rcv_mbf(MBF1, buf1) -> 4		... (B-1)(D-2)¡€»ÈÍÑ¡§€Ê€·
+ *		assert(strncmp(buf1, string3, 4) == 0)
+ *		rcv_mbf(MBF1, buf1) -> 25		... (B-5)
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	23:	assert(strncmp(buf1, string1, 25) == 0)
+ *		snd_mbf(MBF1, string2, 26)		... (A-5)
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	24:	wup_tsk(TASK1)
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	25:	rcv_mbf(MBF1, buf1) -> 26		... (B-4)
+ *		assert(strncmp(buf1, string2, 26) == 0)
+ *		slp_tsk()
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	26:	slp_tsk()
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	27:	END
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include "kernel_cfg.h"
+#include "test_lib.h"
+#include "test_messagebuf1.h"
+#include <string.h>
+
+const char string1[26] = "abcdefghijklmnopqrstuvwxyz";
+const char string2[26] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+const char string3[16] = "0123456789abcdef";
+
+char buf1[26];
+
+extern ER	bit_kernel(void);
+
+/* DO NOT DELETE THIS LINE -- gentest depends on it. */
+
+void
+task1(intptr_t exinf)
+{
+	ER_UINT	ercd;
+	T_RMBF	rmbf;
+
+	test_start(__FILE__);
+
+	set_bit_func(bit_kernel);
+
+	check_point(1);
+	ercd = act_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	ercd = act_tsk(TASK3);
+	check_ercd(ercd, E_OK);
+
+	ercd = ref_mbf(MBF1, &rmbf);
+	check_ercd(ercd, E_OK);
+
+	check_assert(rmbf.stskid == TSK_NONE);
+
+	check_assert(rmbf.rtskid == TSK_NONE);
+
+	check_assert(rmbf.smbfcnt == 0);
+
+	ercd = snd_mbf(MBF1, string1, 9);
+	check_ercd(ercd, E_OK);
+
+	check_point(2);
+	ercd = snd_mbf(MBF1, string2, 5);
+	check_ercd(ercd, E_OK);
+
+	check_point(3);
+	ercd = snd_mbf(MBF1, string3, 4);
+	check_ercd(ercd, E_OK);
+
+	check_point(7);
+	check_assert(strncmp(buf1, string1, 9) == 0);
+
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(14);
+	ercd = snd_mbf(MBF1, string3, 11);
+	check_ercd(ercd, E_OK);
+
+	check_assert(strncmp(buf1, string3, 11) == 0);
+
+	ercd = snd_mbf(MBF1, string1, 16);
+	check_ercd(ercd, E_OK);
+
+	ercd = tslp_tsk(1);
+	check_ercd(ercd, E_TMOUT);
+
+	check_point(17);
+	ercd = wup_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	ercd = tslp_tsk(1);
+	check_ercd(ercd, E_TMOUT);
+
+	check_point(19);
+	ercd = rcv_mbf(MBF1, buf1);
+	check_ercd(ercd, 16);
+
+	check_assert(strncmp(buf1, string1, 16) == 0);
+
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(25);
+	ercd = rcv_mbf(MBF1, buf1);
+	check_ercd(ercd, 26);
+
+	check_assert(strncmp(buf1, string2, 26) == 0);
+
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(0);
+}
+
+void
+task2(intptr_t exinf)
+{
+	ER_UINT	ercd;
+	T_RMBF	rmbf;
+
+	check_point(4);
+	ercd = ref_mbf(MBF1, &rmbf);
+	check_ercd(ercd, E_OK);
+
+	check_assert(rmbf.stskid == TASK1);
+
+	check_assert(rmbf.rtskid == TSK_NONE);
+
+	check_assert(rmbf.smbfcnt == 2);
+
+	check_point(5);
+	ercd = snd_mbf(MBF1, string1, 4);
+	check_ercd(ercd, E_OK);
+
+	check_point(8);
+	ercd = rcv_mbf(MBF1, buf1);
+	check_ercd(ercd, 5);
+
+	check_assert(strncmp(buf1, string2, 5) == 0);
+
+	ercd = rcv_mbf(MBF1, buf1);
+	check_ercd(ercd, 4);
+
+	check_assert(strncmp(buf1, string3, 4) == 0);
+
+	ercd = rcv_mbf(MBF1, buf1);
+	check_ercd(ercd, 4);
+
+	check_assert(strncmp(buf1, string1, 4) == 0);
+
+	check_point(9);
+	ercd = rcv_mbf(MBF1, buf1);
+	check_ercd(ercd, 10);
+
+	check_point(12);
+	check_assert(strncmp(buf1, string2, 10) == 0);
+
+	ercd = rcv_mbf(MBF1, buf1);
+	check_ercd(ercd, 11);
+
+	check_point(15);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(18);
+	ercd = snd_mbf(MBF1, string3, 4);
+	check_ercd(ercd, E_OK);
+
+	check_point(20);
+	ercd = rcv_mbf(MBF1, buf1);
+	check_ercd(ercd, 12);
+
+	check_assert(strncmp(buf1, string2, 12) == 0);
+
+	check_point(21);
+	ercd = snd_mbf(MBF1, string1, 25);
+	check_ercd(ercd, E_OK);
+
+	check_point(23);
+	check_assert(strncmp(buf1, string1, 25) == 0);
+
+	ercd = snd_mbf(MBF1, string2, 26);
+	check_ercd(ercd, E_OK);
+
+	check_point(26);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(0);
+}
+
+void
+task3(intptr_t exinf)
+{
+	ER_UINT	ercd;
+	T_RMBF	rmbf;
+
+	check_point(6);
+	ercd = rcv_mbf(MBF1, buf1);
+	check_ercd(ercd, 9);
+
+	check_point(10);
+	ercd = ref_mbf(MBF1, &rmbf);
+	check_ercd(ercd, E_OK);
+
+	check_assert(rmbf.stskid == TSK_NONE);
+
+	check_assert(rmbf.rtskid == TASK2);
+
+	check_assert(rmbf.smbfcnt == 0);
+
+	check_point(11);
+	ercd = snd_mbf(MBF1, string2, 10);
+	check_ercd(ercd, E_OK);
+
+	check_point(13);
+	ercd = wup_tsk(TASK1);
+	check_ercd(ercd, E_OK);
+
+	check_point(16);
+	ercd = snd_mbf(MBF1, string2, 12);
+	check_ercd(ercd, E_OK);
+
+	check_point(22);
+	ercd = rcv_mbf(MBF1, buf1);
+	check_ercd(ercd, 4);
+
+	check_assert(strncmp(buf1, string3, 4) == 0);
+
+	ercd = rcv_mbf(MBF1, buf1);
+	check_ercd(ercd, 25);
+
+	check_point(24);
+	ercd = wup_tsk(TASK1);
+	check_ercd(ercd, E_OK);
+
+	check_finish(27);
+	check_point(0);
+}
Index: /extension/messagebuf/test/test_messagebuf1.cfg
===================================================================
--- /extension/messagebuf/test/test_messagebuf1.cfg	(revision 7)
+++ /extension/messagebuf/test/test_messagebuf1.cfg	(revision 7)
@@ -0,0 +1,18 @@
+/*
+ *  $Id$
+ */
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€Î¥Æ¥¹¥È(1)€Î¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+ */
+INCLUDE("target_timer.cfg");
+INCLUDE("syssvc/syslog.cfg");
+INCLUDE("syssvc/banner.cfg");
+INCLUDE("syssvc/serial.cfg");
+
+#include "test_messagebuf1.h"
+
+CRE_TSK(TASK1, { TA_ACT, 1, task1, HIGH_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK2, { TA_NULL, 2, task2, MID_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK3, { TA_NULL, 3, task3, LOW_PRIORITY, STACK_SIZE, NULL });
+CRE_MBF(MBF1, { TA_NULL, 26, 26, NULL });
Index: /extension/messagebuf/test/test_messagebuf1.h
===================================================================
--- /extension/messagebuf/test/test_messagebuf1.h	(revision 7)
+++ /extension/messagebuf/test/test_messagebuf1.h	(revision 7)
@@ -0,0 +1,72 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2014 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$
+ */
+
+/* 
+ *		¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€Î¥Æ¥¹¥È(1)
+ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎÄêµÁ
+ */
+#include "target_test.h"
+
+/*
+ *  Í¥ÀèÅÙ€ÎÄêµÁ
+ */
+#define HIGH_PRIORITY	9		/* ¹âÍ¥ÀèÅÙ */
+#define MID_PRIORITY	10		/* ÃæÍ¥ÀèÅÙ */
+#define LOW_PRIORITY	11		/* ÄãÍ¥ÀèÅÙ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È€Ë°ÍÂž€¹€ë²ÄÇœÀ­€Î€¢€ëÄê¿ô€ÎÄêµÁ
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯¥µ¥€¥º */
+#endif /* STACK_SIZE */
+
+/*
+ *  ŽØ¿ô€Î¥×¥í¥È¥¿¥€¥×ÀëžÀ
+ */
+#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: /extension/messagebuf/test/test_messagebuf2.c
===================================================================
--- /extension/messagebuf/test/test_messagebuf2.c	(revision 7)
+++ /extension/messagebuf/test/test_messagebuf2.c	(revision 7)
@@ -0,0 +1,685 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2014 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$
+ */
+
+/* 
+ *		¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€Î¥Æ¥¹¥È(2)
+ *
+ * ¡Ú¥Æ¥¹¥È€ÎÌÜÅª¡Û
+ *
+ *  FIFOœç¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€ÎÁ÷¿®ÂÔ€Á¥¿¥¹¥¯€¬¡€¶¯À©Åª€ËÂÔ€Á²òœü€µ€ì€¿
+ *  Ÿì¹ç€ò°ìÄÌ€ê¥Æ¥¹¥È€¹€ë¡¥
+ *
+ * ¡Ú¥Æ¥¹¥È¹àÌÜ¡Û
+ *
+ *	(A) Á÷¿®ÂÔ€Á¥¿¥¹¥¯€¬¶¯À©œªÎ»¡Êter_tsk¡Ë
+ *		(A-1) Á÷¿®ÂÔ€Á¥¿¥¹¥¯€ÎÂÔ€Á²òœü€Ê€·
+ *		(A-2) Á÷¿®ÂÔ€Á¥¿¥¹¥¯¡Ê1€Ä€Þ€¿€ÏÊ£¿ô¡Ë€¬ÂÔ€Á²òœü¡Ê¥¿¥¹¥¯ÀÚŽ¹€š€Ê€·¡Ë
+ *		(A-3) Á÷¿®ÂÔ€Á¥¿¥¹¥¯¡Ê1€Ä€Þ€¿€ÏÊ£¿ô¡Ë€¬ÂÔ€Á²òœü¡Ê¥¿¥¹¥¯ÀÚŽ¹€š€¢€ê¡Ë
+ *	(B) Á÷¿®ÂÔ€Á¥¿¥¹¥¯€¬¶¯À©ÂÔ€Á²òœü¡Êrel_wai¡Ë
+ *		(B-1) Á÷¿®ÂÔ€Á¥¿¥¹¥¯€ÎÂÔ€Á²òœü€Ê€·
+ *		(B-2) Á÷¿®ÂÔ€Á¥¿¥¹¥¯¡Ê1€Ä€Þ€¿€ÏÊ£¿ô¡Ë€¬ÂÔ€Á²òœü¡Ê¥¿¥¹¥¯ÀÚŽ¹€š€Ê€·¡Ë
+ *		(B-3) Á÷¿®ÂÔ€Á¥¿¥¹¥¯¡Ê1€Ä€Þ€¿€ÏÊ£¿ô¡Ë€¬ÂÔ€Á²òœü¡Ê¥¿¥¹¥¯ÀÚŽ¹€š€¢€ê¡Ë
+ *	(C) Á÷¿®ÂÔ€Á¥¿¥¹¥¯€¬¶¯À©ÂÔ€Á²òœü¡Êirel_wai¡Ë
+ *		(C-1) Á÷¿®ÂÔ€Á¥¿¥¹¥¯€ÎÂÔ€Á²òœü€Ê€·
+ *		(C-2) Á÷¿®ÂÔ€Á¥¿¥¹¥¯¡Ê1€Ä€Þ€¿€ÏÊ£¿ô¡Ë€¬ÂÔ€Á²òœü¡Ê¥¿¥¹¥¯ÀÚŽ¹€š€Ê€·¡Ë
+ *		(C-3) Á÷¿®ÂÔ€Á¥¿¥¹¥¯¡Ê1€Ä€Þ€¿€ÏÊ£¿ô¡Ë€¬ÂÔ€Á²òœü¡Ê¥¿¥¹¥¯ÀÚŽ¹€š€¢€ê¡Ë
+ *	(D) Á÷¿®ÂÔ€Á¥¿¥¹¥¯€¬¥¿¥€¥à¥¢¥Š¥È€ÇÂÔ€Á²òœü
+ *		(D-1) Á÷¿®ÂÔ€Á¥¿¥¹¥¯€ÎÂÔ€Á²òœü€Ê€·
+ *		(D-2) Á÷¿®ÂÔ€Á¥¿¥¹¥¯¡Ê1€Ä€Þ€¿€ÏÊ£¿ô¡Ë€¬ÂÔ€Á²òœü¡Ê¥¿¥¹¥¯ÀÚŽ¹€š€Ê€·¡Ë
+ *		(D-3) Á÷¿®ÂÔ€Á¥¿¥¹¥¯¡Ê1€Ä€Þ€¿€ÏÊ£¿ô¡Ë€¬ÂÔ€Á²òœü¡Ê¥¿¥¹¥¯ÀÚŽ¹€š€¢€ê¡Ë
+ *
+ * ¡Ú»ÈÍÑ¥ê¥œ¡Œ¥¹¡Û
+ *
+ *	TASK1: ¹âÍ¥ÀèÅÙ¥¿¥¹¥¯¡€¥á¥€¥ó¥¿¥¹¥¯¡€ºÇœé€«€éµ¯Æ°
+ *	TASK2: ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	TASK3: ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	MBF1: ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡¡ÊTA_NULLÂ°À­¡€ºÇÂç¥á¥Ã¥»¡Œ¥ž¥µ¥€¥º¡§26¡€¥á¥Ã
+ *		  ¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡ŽÉÍýÎÎ°è€Î¥µ¥€¥º¡§26¢ªŒÂºÝ€Ë€Ï28¡Ë
+ *
+ * ¡Ú¥Æ¥¹¥È¥·¡Œ¥±¥ó¥¹¡Û
+ *
+ *	== TASK1¡ÊÍ¥ÀèÅÙ¡§¹â¡Ë==
+ *		call(set_bit_func(bit_kernel))
+ *	1:	act_tsk(TASK2)
+ *		act_tsk(TASK3)
+ *		tslp_tsk(1) -> E_TMOUT
+ *	== TASK2-1¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë1²ó€á ==
+ *	2:	snd_mbf(MBF1, string1, 26)
+ *	== TASK3¡ÊÍ¥ÀèÅÙ¡§Äã¡Ë==
+ *	3:	snd_mbf(MBF1, string2, 26)
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	4:	ter_tsk(TASK2)									... (A-1)
+ *		tslp_tsk(1) -> E_TMOUT
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	5:	rcv_mbf(MBF1, buf1) -> 26
+ *		assert(strncmp(buf1, string2, 26) == 0)
+ *		act_tsk(TASK2)
+ *		tslp_tsk(1) -> E_TMOUT
+ *	== TASK2-2¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë2²ó€á ==
+ *	6:	snd_mbf(MBF1, string1, 26)
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	7:	snd_mbf(MBF1, string3, 10)
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	8:	ter_tsk(TASK2)									... (A-2)
+ *		slp_tsk()
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	9:	rcv_mbf(MBF1, buf1) -> 10
+ *		assert(strncmp(buf1, string3, 10) == 0)
+ *	10:	act_tsk(TASK2)
+ *	== TASK2-3¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë3²ó€á ==
+ *	11:	snd_mbf(MBF1, string1, 26)
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	12:	wup_tsk(TASK1)
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	13:	snd_mbf(MBF1, string3, 10)
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	14:	ter_tsk(TASK2)									... (A-3)
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	15:	rcv_mbf(MBF1, buf1) -> 10
+ *		assert(strncmp(buf1, string3, 10) == 0)
+ *		act_tsk(TASK2)
+ *		tslp_tsk(1) -> E_TMOUT
+ *	== TASK2-4¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë4²ó€á ==
+ *	16:	snd_mbf(MBF1, string1, 26) -> E_RLWAI
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	17:	snd_mbf(MBF1, string2, 26)
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	18:	rel_wai(TASK2)									... (B-1)
+ *		tslp_tsk(1) -> E_TMOUT
+ *	== TASK2-4¡ÊÂ³€­¡Ë==
+ *	19:	slp_tsk()
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	20:	rcv_mbf(MBF1, buf1) -> 26
+ *		assert(strncmp(buf1, string2, 26) == 0)
+ *		wup_tsk(TASK2)
+ *		tslp_tsk(1) -> E_TMOUT
+ *	== TASK2-4¡ÊÂ³€­¡Ë==
+ *	21:	snd_mbf(MBF1, string1, 26) -> E_RLWAI
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	22:	snd_mbf(MBF1, string3, 10)
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	23:	rel_wai(TASK2)									... (B-2)
+ *		slp_tsk()
+ *	== TASK2-4¡ÊÂ³€­¡Ë==
+ *	24:	slp_tsk()
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	25:	rcv_mbf(MBF1, buf1) -> 10
+ *		assert(strncmp(buf1, string3, 10) == 0)
+ *	26:	wup_tsk(TASK2)
+ *	== TASK2-4¡ÊÂ³€­¡Ë==
+ *	27:	snd_mbf(MBF1, string1, 26) -> E_RLWAI
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	28:	wup_tsk(TASK1)
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	29:	snd_mbf(MBF1, string3, 10)
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	30:	rel_wai(TASK2)									... (B-3)
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	31:	rcv_mbf(MBF1, buf1) -> 10
+ *		assert(strncmp(buf1, string3, 10) == 0)
+ *		tslp_tsk(1) -> E_TMOUT
+ *	== TASK2-4¡ÊÂ³€­¡Ë==
+ *	32:	snd_mbf(MBF1, string1, 26) -> E_RLWAI
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	33:	snd_mbf(MBF1, string2, 26)
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	34:	sta_alm(ALM1, 1U)
+ *		slp_tsk()
+ *	== ALM1-1 ==
+ *	35:	irel_wai(TASK2)									... (C-1)
+ *		iwup_tsk(TASK1)
+ *		RETURN
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	36:	tslp_tsk(1) -> E_TMOUT
+ *	== TASK2-4¡ÊÂ³€­¡Ë==
+ *	37:	slp_tsk()
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	38:	rcv_mbf(MBF1, buf1) -> 26
+ *		assert(strncmp(buf1, string2, 26) == 0)
+ *		wup_tsk(TASK2)
+ *		tslp_tsk(1) -> E_TMOUT
+ *	== TASK2-4¡ÊÂ³€­¡Ë==
+ *	39:	snd_mbf(MBF1, string1, 26) -> E_RLWAI
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	40:	snd_mbf(MBF1, string3, 10)
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	41:	sta_alm(ALM1, 1U)
+ *		slp_tsk()
+ *	== ALM1-2 ==
+ *	42:	irel_wai(TASK2)									... (C-2)
+ *		RETURN
+ *	== TASK2-4¡ÊÂ³€­¡Ë==
+ *	43:	slp_tsk()
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	44:	rcv_mbf(MBF1, buf1) -> 10
+ *		assert(strncmp(buf1, string3, 10) == 0)
+ *	45:	wup_tsk(TASK2)
+ *	== TASK2-4¡ÊÂ³€­¡Ë==
+ *	46:	snd_mbf(MBF1, string1, 26) -> E_RLWAI
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	47:	wup_tsk(TASK1)
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	48:	snd_mbf(MBF1, string3, 10)
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	49:	sta_alm(ALM1, 1U)
+ *		slp_tsk()
+ *	== ALM1-3 ==
+ *	50:	irel_wai(TASK2)									... (C-3)
+ *		RETURN
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	51:	rcv_mbf(MBF1, buf1) -> 10
+ *		assert(strncmp(buf1, string3, 10) == 0)
+ *		wup_tsk(TASK3)
+ *		slp_tsk()
+ *	== TASK2-4¡ÊÂ³€­¡Ë==
+  *	52:	tsnd_mbf(MBF1, string1, 26, 1) -> E_TMOUT		... (D-1)
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	53:	snd_mbf(MBF1, string2, 26)
+ *	== TASK2-4¡ÊÂ³€­¡Ë==
+ *	54:	tslp_tsk(1) -> E_TMOUT
+ *	== TASK2-4¡ÊÂ³€­¡Ë==
+ *	55:	rcv_mbf(MBF1, buf1) -> 26
+ *		assert(strncmp(buf1, string2, 26) == 0)
+ *	56:	tsnd_mbf(MBF1, string1, 26, 1) -> E_TMOUT		... (D-2)
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	57:	snd_mbf(MBF1, string3, 10)
+ *	== TASK2-4¡ÊÂ³€­¡Ë==
+ *	58:	slp_tsk()
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	59:	rcv_mbf(MBF1, buf1) -> 10
+ *		assert(strncmp(buf1, string3, 10) == 0)
+ *	60:	wup_tsk(TASK2)
+ *	== TASK2-4¡ÊÂ³€­¡Ë==
+ *	61:	tsnd_mbf(MBF1, string1, 26, 1) -> E_TMOUT		... (D-3)
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	62:	wup_tsk(TASK1)
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	63:	snd_mbf(MBF1, string3, 10)
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	64:	slp_tsk()
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	65:	rcv_mbf(MBF1, buf1) -> 10
+ *		assert(strncmp(buf1, string3, 10) == 0)
+ *		slp_tsk()
+ *	== TASK2-4¡ÊÂ³€­¡Ë==
+ *	66:	END
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include "kernel_cfg.h"
+#include "test_lib.h"
+#include "test_messagebuf2.h"
+#include <string.h>
+
+const char string1[26] = "abcdefghijklmnopqrstuvwxyz";
+const char string2[26] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+const char string3[16] = "0123456789abcdef";
+
+char buf1[26];
+
+extern ER	bit_kernel(void);
+
+/* DO NOT DELETE THIS LINE -- gentest depends on it. */
+
+static uint_t	alarm1_count = 0;
+
+void
+alarm1_handler(intptr_t exinf)
+{
+	ER_UINT	ercd;
+
+	switch (++alarm1_count) {
+	case 1:
+		check_point(35);
+		ercd = irel_wai(TASK2);
+		check_ercd(ercd, E_OK);
+
+		ercd = iwup_tsk(TASK1);
+		check_ercd(ercd, E_OK);
+
+		return;
+
+		check_point(0);
+
+	case 2:
+		check_point(42);
+		ercd = irel_wai(TASK2);
+		check_ercd(ercd, E_OK);
+
+		return;
+
+		check_point(0);
+
+	case 3:
+		check_point(50);
+		ercd = irel_wai(TASK2);
+		check_ercd(ercd, E_OK);
+
+		return;
+
+		check_point(0);
+
+	default:
+		check_point(0);
+	}
+	check_point(0);
+}
+
+void
+task1(intptr_t exinf)
+{
+	ER_UINT	ercd;
+
+	test_start(__FILE__);
+
+	set_bit_func(bit_kernel);
+
+	check_point(1);
+	ercd = act_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	ercd = act_tsk(TASK3);
+	check_ercd(ercd, E_OK);
+
+	ercd = tslp_tsk(1);
+	check_ercd(ercd, E_TMOUT);
+
+	check_point(4);
+	ercd = ter_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	ercd = tslp_tsk(1);
+	check_ercd(ercd, E_TMOUT);
+
+	check_point(5);
+	ercd = rcv_mbf(MBF1, buf1);
+	check_ercd(ercd, 26);
+
+	check_assert(strncmp(buf1, string2, 26) == 0);
+
+	ercd = act_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	ercd = tslp_tsk(1);
+	check_ercd(ercd, E_TMOUT);
+
+	check_point(8);
+	ercd = ter_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(13);
+	ercd = snd_mbf(MBF1, string3, 10);
+	check_ercd(ercd, E_OK);
+
+	check_point(15);
+	ercd = rcv_mbf(MBF1, buf1);
+	check_ercd(ercd, 10);
+
+	check_assert(strncmp(buf1, string3, 10) == 0);
+
+	ercd = act_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	ercd = tslp_tsk(1);
+	check_ercd(ercd, E_TMOUT);
+
+	check_point(18);
+	ercd = rel_wai(TASK2);
+	check_ercd(ercd, E_OK);
+
+	ercd = tslp_tsk(1);
+	check_ercd(ercd, E_TMOUT);
+
+	check_point(20);
+	ercd = rcv_mbf(MBF1, buf1);
+	check_ercd(ercd, 26);
+
+	check_assert(strncmp(buf1, string2, 26) == 0);
+
+	ercd = wup_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	ercd = tslp_tsk(1);
+	check_ercd(ercd, E_TMOUT);
+
+	check_point(23);
+	ercd = rel_wai(TASK2);
+	check_ercd(ercd, E_OK);
+
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(29);
+	ercd = snd_mbf(MBF1, string3, 10);
+	check_ercd(ercd, E_OK);
+
+	check_point(31);
+	ercd = rcv_mbf(MBF1, buf1);
+	check_ercd(ercd, 10);
+
+	check_assert(strncmp(buf1, string3, 10) == 0);
+
+	ercd = tslp_tsk(1);
+	check_ercd(ercd, E_TMOUT);
+
+	check_point(34);
+	ercd = sta_alm(ALM1, 1U);
+	check_ercd(ercd, E_OK);
+
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(36);
+	ercd = tslp_tsk(1);
+	check_ercd(ercd, E_TMOUT);
+
+	check_point(38);
+	ercd = rcv_mbf(MBF1, buf1);
+	check_ercd(ercd, 26);
+
+	check_assert(strncmp(buf1, string2, 26) == 0);
+
+	ercd = wup_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	ercd = tslp_tsk(1);
+	check_ercd(ercd, E_TMOUT);
+
+	check_point(41);
+	ercd = sta_alm(ALM1, 1U);
+	check_ercd(ercd, E_OK);
+
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(48);
+	ercd = snd_mbf(MBF1, string3, 10);
+	check_ercd(ercd, E_OK);
+
+	check_point(51);
+	ercd = rcv_mbf(MBF1, buf1);
+	check_ercd(ercd, 10);
+
+	check_assert(strncmp(buf1, string3, 10) == 0);
+
+	ercd = wup_tsk(TASK3);
+	check_ercd(ercd, E_OK);
+
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(63);
+	ercd = snd_mbf(MBF1, string3, 10);
+	check_ercd(ercd, E_OK);
+
+	check_point(65);
+	ercd = rcv_mbf(MBF1, buf1);
+	check_ercd(ercd, 10);
+
+	check_assert(strncmp(buf1, string3, 10) == 0);
+
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(0);
+}
+
+static uint_t	task2_count = 0;
+
+void
+task2(intptr_t exinf)
+{
+	ER_UINT	ercd;
+
+	switch (++task2_count) {
+	case 1:
+		check_point(2);
+		ercd = snd_mbf(MBF1, string1, 26);
+		check_ercd(ercd, E_OK);
+
+		check_point(0);
+
+	case 2:
+		check_point(6);
+		ercd = snd_mbf(MBF1, string1, 26);
+		check_ercd(ercd, E_OK);
+
+		check_point(0);
+
+	case 3:
+		check_point(11);
+		ercd = snd_mbf(MBF1, string1, 26);
+		check_ercd(ercd, E_OK);
+
+		check_point(0);
+
+	case 4:
+		check_point(16);
+		ercd = snd_mbf(MBF1, string1, 26);
+		check_ercd(ercd, E_RLWAI);
+
+		check_point(19);
+		ercd = slp_tsk();
+		check_ercd(ercd, E_OK);
+
+		check_point(21);
+		ercd = snd_mbf(MBF1, string1, 26);
+		check_ercd(ercd, E_RLWAI);
+
+		check_point(24);
+		ercd = slp_tsk();
+		check_ercd(ercd, E_OK);
+
+		check_point(27);
+		ercd = snd_mbf(MBF1, string1, 26);
+		check_ercd(ercd, E_RLWAI);
+
+		check_point(32);
+		ercd = snd_mbf(MBF1, string1, 26);
+		check_ercd(ercd, E_RLWAI);
+
+		check_point(37);
+		ercd = slp_tsk();
+		check_ercd(ercd, E_OK);
+
+		check_point(39);
+		ercd = snd_mbf(MBF1, string1, 26);
+		check_ercd(ercd, E_RLWAI);
+
+		check_point(43);
+		ercd = slp_tsk();
+		check_ercd(ercd, E_OK);
+
+		check_point(46);
+		ercd = snd_mbf(MBF1, string1, 26);
+		check_ercd(ercd, E_RLWAI);
+
+		check_point(52);
+		ercd = tsnd_mbf(MBF1, string1, 26, 1);
+		check_ercd(ercd, E_TMOUT);
+
+		check_point(54);
+		ercd = tslp_tsk(1);
+		check_ercd(ercd, E_TMOUT);
+
+		check_point(55);
+		ercd = rcv_mbf(MBF1, buf1);
+		check_ercd(ercd, 26);
+
+		check_assert(strncmp(buf1, string2, 26) == 0);
+
+		check_point(56);
+		ercd = tsnd_mbf(MBF1, string1, 26, 1);
+		check_ercd(ercd, E_TMOUT);
+
+		check_point(58);
+		ercd = slp_tsk();
+		check_ercd(ercd, E_OK);
+
+		check_point(61);
+		ercd = tsnd_mbf(MBF1, string1, 26, 1);
+		check_ercd(ercd, E_TMOUT);
+
+		check_finish(66);
+		check_point(0);
+
+	default:
+		check_point(0);
+	}
+	check_point(0);
+}
+
+void
+task3(intptr_t exinf)
+{
+	ER_UINT	ercd;
+
+	check_point(3);
+	ercd = snd_mbf(MBF1, string2, 26);
+	check_ercd(ercd, E_OK);
+
+	check_point(7);
+	ercd = snd_mbf(MBF1, string3, 10);
+	check_ercd(ercd, E_OK);
+
+	check_point(9);
+	ercd = rcv_mbf(MBF1, buf1);
+	check_ercd(ercd, 10);
+
+	check_assert(strncmp(buf1, string3, 10) == 0);
+
+	check_point(10);
+	ercd = act_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_point(12);
+	ercd = wup_tsk(TASK1);
+	check_ercd(ercd, E_OK);
+
+	check_point(14);
+	ercd = ter_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_point(17);
+	ercd = snd_mbf(MBF1, string2, 26);
+	check_ercd(ercd, E_OK);
+
+	check_point(22);
+	ercd = snd_mbf(MBF1, string3, 10);
+	check_ercd(ercd, E_OK);
+
+	check_point(25);
+	ercd = rcv_mbf(MBF1, buf1);
+	check_ercd(ercd, 10);
+
+	check_assert(strncmp(buf1, string3, 10) == 0);
+
+	check_point(26);
+	ercd = wup_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_point(28);
+	ercd = wup_tsk(TASK1);
+	check_ercd(ercd, E_OK);
+
+	check_point(30);
+	ercd = rel_wai(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_point(33);
+	ercd = snd_mbf(MBF1, string2, 26);
+	check_ercd(ercd, E_OK);
+
+	check_point(40);
+	ercd = snd_mbf(MBF1, string3, 10);
+	check_ercd(ercd, E_OK);
+
+	check_point(44);
+	ercd = rcv_mbf(MBF1, buf1);
+	check_ercd(ercd, 10);
+
+	check_assert(strncmp(buf1, string3, 10) == 0);
+
+	check_point(45);
+	ercd = wup_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_point(47);
+	ercd = wup_tsk(TASK1);
+	check_ercd(ercd, E_OK);
+
+	check_point(49);
+	ercd = sta_alm(ALM1, 1U);
+	check_ercd(ercd, E_OK);
+
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(53);
+	ercd = snd_mbf(MBF1, string2, 26);
+	check_ercd(ercd, E_OK);
+
+	check_point(57);
+	ercd = snd_mbf(MBF1, string3, 10);
+	check_ercd(ercd, E_OK);
+
+	check_point(59);
+	ercd = rcv_mbf(MBF1, buf1);
+	check_ercd(ercd, 10);
+
+	check_assert(strncmp(buf1, string3, 10) == 0);
+
+	check_point(60);
+	ercd = wup_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_point(62);
+	ercd = wup_tsk(TASK1);
+	check_ercd(ercd, E_OK);
+
+	check_point(64);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(0);
+}
Index: /extension/messagebuf/test/test_messagebuf2.cfg
===================================================================
--- /extension/messagebuf/test/test_messagebuf2.cfg	(revision 7)
+++ /extension/messagebuf/test/test_messagebuf2.cfg	(revision 7)
@@ -0,0 +1,19 @@
+/*
+ *  $Id$
+ */
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€Î¥Æ¥¹¥È(2)€Î¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+ */
+INCLUDE("target_timer.cfg");
+INCLUDE("syssvc/syslog.cfg");
+INCLUDE("syssvc/banner.cfg");
+INCLUDE("syssvc/serial.cfg");
+
+#include "test_messagebuf2.h"
+
+CRE_TSK(TASK1, { TA_ACT, 1, task1, HIGH_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK2, { TA_NULL, 2, task2, MID_PRIORITY, STACK_SIZE, NULL });
+CRE_TSK(TASK3, { TA_NULL, 3, task3, LOW_PRIORITY, STACK_SIZE, NULL });
+CRE_MBF(MBF1, { TA_NULL, 26, 26, NULL });
+CRE_ALM(ALM1, { TA_NULL, 1, alarm1_handler });
Index: /extension/messagebuf/test/test_messagebuf2.h
===================================================================
--- /extension/messagebuf/test/test_messagebuf2.h	(revision 7)
+++ /extension/messagebuf/test/test_messagebuf2.h	(revision 7)
@@ -0,0 +1,74 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2014 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$
+ */
+
+/* 
+ *		¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€Î¥Æ¥¹¥È(2)
+ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎÄêµÁ
+ */
+#include "target_test.h"
+
+/*
+ *  Í¥ÀèÅÙ€ÎÄêµÁ
+ */
+#define HIGH_PRIORITY	9		/* ¹âÍ¥ÀèÅÙ */
+#define MID_PRIORITY	10		/* ÃæÍ¥ÀèÅÙ */
+#define LOW_PRIORITY	11		/* ÄãÍ¥ÀèÅÙ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È€Ë°ÍÂž€¹€ë²ÄÇœÀ­€Î€¢€ëÄê¿ô€ÎÄêµÁ
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯¥µ¥€¥º */
+#endif /* STACK_SIZE */
+
+/*
+ *  ŽØ¿ô€Î¥×¥í¥È¥¿¥€¥×ÀëžÀ
+ */
+#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: /extension/messagebuf/test/test_messagebuf3.c
===================================================================
--- /extension/messagebuf/test/test_messagebuf3.c	(revision 7)
+++ /extension/messagebuf/test/test_messagebuf3.c	(revision 7)
@@ -0,0 +1,472 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2014 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$
+ */
+
+/* 
+ *		¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€Î¥Æ¥¹¥È(3)
+ *
+ * ¡Ú¥Æ¥¹¥È€ÎÌÜÅª¡Û
+ *
+ *  ¥¿¥¹¥¯Í¥ÀèÅÙœç¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€Î¡€FIFOœç¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€È°Û€Ê
+ *  €ë¿¶Éñ€€€ò¥Æ¥¹¥È€¹€ë¡¥
+ *
+ * ¡Ú¥Æ¥¹¥È¹àÌÜ¡Û
+ *
+ *	(A) Á÷¿®ÂÔ€Á¥­¥å¡Œ€¬¥¿¥¹¥¯Í¥ÀèÅÙ€Ç€¢€ë€³€È
+ *		(A-1) žå€«€éÅþÃå€·€¿¹âÍ¥ÀèÅÙ¥¿¥¹¥¯€¬Á°€Ë€Ä€Ê€¬€ì€ë€³€È
+ *		(A-2) Æ±€žÍ¥ÀèÅÙ€Î¥¿¥¹¥¯€ÏFIFOœç€Ç€¢€ë€³€È
+ *	(B) Á÷¿®ÂÔ€Á¥­¥å¡Œ€Ë¥¿¥¹¥¯€¬€¢€ë€¿€á€ËÁ÷¿®ÂÔ€ÁŸõÂÖ€Ë€Ê€ëŸò·ï€Î°ã€€
+ *		(B-1) Á÷¿®ÂÔ€Á¥­¥å¡Œ€¬¶õ€ÎŸì¹ç
+ *		(B-2) Á÷¿®ÂÔ€Á¥­¥å¡Œ€ËÄã€€Í¥ÀèÅÙ€Î¥¿¥¹¥¯€Î€ß€¬€¢€ëŸì¹ç
+ *		(B-3) Á÷¿®ÂÔ€Á¥­¥å¡Œ€ËÆ±€ž€«¹â€€Í¥ÀèÅÙ€Î¥¿¥¹¥¯€¬€¢€ëŸì¹ç
+ *	(C) Á÷¿®ÂÔ€Á¥­¥å¡Œ€ÎÀèÆ¬¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€ò²Œ€²€ÆÀèÆ¬¥¿¥¹¥¯€¬ÊÑ€ï€ëŸì¹ç
+ *		(C-1) Á÷¿®ÂÔ€Á¥¿¥¹¥¯€ÎÂÔ€Á²òœü€Ê€·
+ *		(C-2) Á÷¿®ÂÔ€Á¥¿¥¹¥¯¡Ê1€Ä€Þ€¿€ÏÊ£¿ô¡Ë€¬ÂÔ€Á²òœü¡Ê¥¿¥¹¥¯ÀÚŽ¹€š€Ê€·¡Ë
+ *		(C-3) Á÷¿®ÂÔ€Á¥¿¥¹¥¯¡Ê1€Ä€Þ€¿€ÏÊ£¿ô¡Ë€¬ÂÔ€Á²òœü¡Ê¥¿¥¹¥¯ÀÚŽ¹€š€¢€ê¡Ë
+ *	(D) Á÷¿®ÂÔ€Á¥­¥å¡Œ€ÎÅÓÃæ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€òŸå€²€ÆÀèÆ¬¥¿¥¹¥¯€¬ÊÑ€ï€ëŸì¹ç
+ *		(D-1) Á÷¿®ÂÔ€Á¥¿¥¹¥¯€ÎÂÔ€Á²òœü€Ê€·
+ *		(D-2) Á÷¿®ÂÔ€Á¥¿¥¹¥¯¡Ê1€Ä€Þ€¿€ÏÊ£¿ô¡Ë€¬ÂÔ€Á²òœü¡Ê¥¿¥¹¥¯ÀÚŽ¹€š€Ê€·¡Ë
+ *		(D-3) Á÷¿®ÂÔ€Á¥¿¥¹¥¯¡Ê1€Ä€Þ€¿€ÏÊ£¿ô¡Ë€¬ÂÔ€Á²òœü¡Ê¥¿¥¹¥¯ÀÚŽ¹€š€¢€ê¡Ë
+ *
+ * ¡Ú»ÈÍÑ¥ê¥œ¡Œ¥¹¡Û
+ *
+ *	TASK1: ¹âÍ¥ÀèÅÙ¥¿¥¹¥¯¡€¥á¥€¥ó¥¿¥¹¥¯¡€ºÇœé€«€éµ¯Æ°
+ *	TASK2: ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	TASK3: ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	TASK4: ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	MBF1: ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡¡ÊTA_TPRIÂ°À­¡€ºÇÂç¥á¥Ã¥»¡Œ¥ž¥µ¥€¥º¡§26¡€¥á¥Ã
+ *		  ¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡ŽÉÍýÎÎ°è€Î¥µ¥€¥º¡§26¢ªŒÂºÝ€Ë€Ï28¡Ë
+ *
+ * ¡Ú¥Æ¥¹¥È¥·¡Œ¥±¥ó¥¹¡Û
+ *
+ *	== TASK1¡ÊÍ¥ÀèÅÙ¡§¹â¡Ë==
+ *		call(set_bit_func(bit_kernel))
+ *	1:	act_tsk(TASK2)
+ *		act_tsk(TASK4)
+ *		slp_tsk()
+ *	== TASK2¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë==
+ *	2:	snd_mbf(MBF1, string1, 26)
+ *	== TASK4¡ÊÍ¥ÀèÅÙ¡§Äã¡Ë==
+ *	3:	wup_tsk(TASK1)
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	4:	snd_mbf(MBF1, string2, 25)						... (A-1)
+ *	== TASK4¡ÊÂ³€­¡Ë==
+ *	5:	ref_mbf(MBF1, &rmbf)
+ *		assert(rmbf.stskid == TASK1)
+ *		assert(rmbf.rtskid == TSK_NONE)
+ *		assert(rmbf.smbfcnt == 0)
+ *		rcv_mbf(MBF1, buf1) -> 25
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	6:	assert(strncmp(buf1, string2, 25) == 0)
+ *		act_tsk(TASK3)
+ *		slp_tsk()
+ *	== TASK3¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë==
+ *	7:	snd_mbf(MBF1, string2, 26)						... (A-2)
+ *	== TASK4¡ÊÂ³€­¡Ë==
+ *	8:	rcv_mbf(MBF1, buf1) -> 26
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	9:	assert(strncmp(buf1, string1, 26) == 0)
+ *		rcv_mbf(MBF1, buf1) -> 26
+ *		assert(strncmp(buf1, string2, 26) == 0)
+ *	10:	snd_mbf(MBF1, string3, 10)						... (B-1)
+ *		rcv_mbf(MBF1, buf1) -> 10
+ *		assert(strncmp(buf1, string3, 10) == 0)
+ *	11:	snd_mbf(MBF1, string1, 26)
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	12:	wup_tsk(TASK1)
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	13:	snd_mbf(MBF1, string2, 10)						... (B-2)
+ *		rcv_mbf(MBF1, buf1) -> 10
+ *		assert(strncmp(buf1, string2, 10) == 0)
+ *		slp_tsk()
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	14:	snd_mbf(MBF1, string3, 10)						... (B-3)
+ *	== TASK4¡ÊÂ³€­¡Ë==
+ *	15:	rcv_mbf(MBF1, buf1) -> 26
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	16:	assert(strncmp(buf1, string1, 26) == 0)
+ *		rcv_mbf(MBF1, buf1) -> 10
+ *		assert(strncmp(buf1, string3, 10) == 0)
+ *	17:	snd_mbf(MBF1, string1, 26)
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	18:	snd_mbf(MBF1, string2, 26)
+ *	== TASK4¡ÊÂ³€­¡Ë==
+ *	19:	chg_pri(TASK2, LOW_PRIORITY)					... (C-1)
+ *		rcv_mbf(MBF1, buf1) -> 26
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	20:	assert(strncmp(buf1, string2, 26) == 0)
+ *		rcv_mbf(MBF1, buf1) -> 26
+ *		assert(strncmp(buf1, string1, 26) == 0)
+ *		chg_pri(TASK2, TPRI_INI)						... žµ€ËÌá€¹
+ *	21:	snd_mbf(MBF1, string1, 26)
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	22:	snd_mbf(MBF1, string2, 10)
+ *	== TASK4¡ÊÂ³€­¡Ë==
+ *	23:	wup_tsk(TASK1)
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	24:	chg_pri(TASK3, LOW_PRIORITY)					... (C-2)
+ *		slp_tsk()
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	25:	rcv_mbf(MBF1, buf1) -> 10
+ *		assert(strncmp(buf1, string2, 10) == 0)
+ *		chg_pri(TASK3, TPRI_INI)						... žµ€ËÌá€¹
+ *	26:	snd_mbf(MBF1, string3, 10)
+ *	== TASK4¡ÊÂ³€­¡Ë==
+ *	27:	chg_pri(TASK3, LOW_PRIORITY)					... (C-3)
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	28:	rcv_mbf(MBF1, buf1) -> 10
+ *		assert(strncmp(buf1, string3, 10) == 0)
+ *		chg_pri(TASK3, TPRI_INI)						... žµ€ËÌá€¹
+ *	29:	snd_mbf(MBF1, string1, 26)
+ *	== TASK4¡ÊÂ³€­¡Ë==
+ *	30:	chg_pri(TASK2, HIGH_PRIORITY)					... (D-1)
+ *		rcv_mbf(MBF1, buf1) -> 26
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	31:	assert(strncmp(buf1, string1, 26) == 0)
+ *		chg_pri(TSK_SELF, TPRI_INI)						... žµ€ËÌá€¹
+ *	32:	snd_mbf(MBF1, string2, 10)
+ *	== TASK4¡ÊÂ³€­¡Ë==
+ *	33:	wup_tsk(TASK1)
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	34:	chg_pri(TASK2, HIGH_PRIORITY)					... (D-2)
+ *		slp_tsk()
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	35:	rcv_mbf(MBF1, buf1) -> 10
+ *		assert(strncmp(buf1, string2, 10) == 0)
+ *		chg_pri(TSK_SELF, TPRI_INI)						... žµ€ËÌá€¹
+ *	36:	snd_mbf(MBF1, string3, 10)
+ *	== TASK4¡ÊÂ³€­¡Ë==
+ *	37:	chg_pri(TASK2, HIGH_PRIORITY)					... (D-3)
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	38:	rcv_mbf(MBF1, buf1) -> 10
+ *		assert(strncmp(buf1, string3, 10) == 0)
+ *		rcv_mbf(MBF1, buf1) -> 26
+ *		assert(strncmp(buf1, string1, 26) == 0)
+ *	39:	END
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include "kernel_cfg.h"
+#include "test_lib.h"
+#include "test_messagebuf3.h"
+#include <string.h>
+
+const char string1[26] = "abcdefghijklmnopqrstuvwxyz";
+const char string2[26] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+const char string3[16] = "0123456789abcdef";
+
+char buf1[26];
+
+extern ER	bit_kernel(void);
+
+/* DO NOT DELETE THIS LINE -- gentest depends on it. */
+
+void
+task1(intptr_t exinf)
+{
+	ER_UINT	ercd;
+
+	test_start(__FILE__);
+
+	set_bit_func(bit_kernel);
+
+	check_point(1);
+	ercd = act_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	ercd = act_tsk(TASK4);
+	check_ercd(ercd, E_OK);
+
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(4);
+	ercd = snd_mbf(MBF1, string2, 25);
+	check_ercd(ercd, E_OK);
+
+	check_point(6);
+	check_assert(strncmp(buf1, string2, 25) == 0);
+
+	ercd = act_tsk(TASK3);
+	check_ercd(ercd, E_OK);
+
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(13);
+	ercd = snd_mbf(MBF1, string2, 10);
+	check_ercd(ercd, E_OK);
+
+	ercd = rcv_mbf(MBF1, buf1);
+	check_ercd(ercd, 10);
+
+	check_assert(strncmp(buf1, string2, 10) == 0);
+
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(24);
+	ercd = chg_pri(TASK3, LOW_PRIORITY);
+	check_ercd(ercd, E_OK);
+
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(34);
+	ercd = chg_pri(TASK2, HIGH_PRIORITY);
+	check_ercd(ercd, E_OK);
+
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(0);
+}
+
+void
+task2(intptr_t exinf)
+{
+	ER_UINT	ercd;
+
+	check_point(2);
+	ercd = snd_mbf(MBF1, string1, 26);
+	check_ercd(ercd, E_OK);
+
+	check_point(9);
+	check_assert(strncmp(buf1, string1, 26) == 0);
+
+	ercd = rcv_mbf(MBF1, buf1);
+	check_ercd(ercd, 26);
+
+	check_assert(strncmp(buf1, string2, 26) == 0);
+
+	check_point(10);
+	ercd = snd_mbf(MBF1, string3, 10);
+	check_ercd(ercd, E_OK);
+
+	ercd = rcv_mbf(MBF1, buf1);
+	check_ercd(ercd, 10);
+
+	check_assert(strncmp(buf1, string3, 10) == 0);
+
+	check_point(11);
+	ercd = snd_mbf(MBF1, string1, 26);
+	check_ercd(ercd, E_OK);
+
+	check_point(16);
+	check_assert(strncmp(buf1, string1, 26) == 0);
+
+	ercd = rcv_mbf(MBF1, buf1);
+	check_ercd(ercd, 10);
+
+	check_assert(strncmp(buf1, string3, 10) == 0);
+
+	check_point(17);
+	ercd = snd_mbf(MBF1, string1, 26);
+	check_ercd(ercd, E_OK);
+
+	check_point(22);
+	ercd = snd_mbf(MBF1, string2, 10);
+	check_ercd(ercd, E_OK);
+
+	check_point(25);
+	ercd = rcv_mbf(MBF1, buf1);
+	check_ercd(ercd, 10);
+
+	check_assert(strncmp(buf1, string2, 10) == 0);
+
+	ercd = chg_pri(TASK3, TPRI_INI);
+	check_ercd(ercd, E_OK);
+
+	check_point(26);
+	ercd = snd_mbf(MBF1, string3, 10);
+	check_ercd(ercd, E_OK);
+
+	check_point(28);
+	ercd = rcv_mbf(MBF1, buf1);
+	check_ercd(ercd, 10);
+
+	check_assert(strncmp(buf1, string3, 10) == 0);
+
+	ercd = chg_pri(TASK3, TPRI_INI);
+	check_ercd(ercd, E_OK);
+
+	check_point(29);
+	ercd = snd_mbf(MBF1, string1, 26);
+	check_ercd(ercd, E_OK);
+
+	check_point(31);
+	check_assert(strncmp(buf1, string1, 26) == 0);
+
+	ercd = chg_pri(TSK_SELF, TPRI_INI);
+	check_ercd(ercd, E_OK);
+
+	check_point(32);
+	ercd = snd_mbf(MBF1, string2, 10);
+	check_ercd(ercd, E_OK);
+
+	check_point(35);
+	ercd = rcv_mbf(MBF1, buf1);
+	check_ercd(ercd, 10);
+
+	check_assert(strncmp(buf1, string2, 10) == 0);
+
+	ercd = chg_pri(TSK_SELF, TPRI_INI);
+	check_ercd(ercd, E_OK);
+
+	check_point(36);
+	ercd = snd_mbf(MBF1, string3, 10);
+	check_ercd(ercd, E_OK);
+
+	check_point(38);
+	ercd = rcv_mbf(MBF1, buf1);
+	check_ercd(ercd, 10);
+
+	check_assert(strncmp(buf1, string3, 10) == 0);
+
+	ercd = rcv_mbf(MBF1, buf1);
+	check_ercd(ercd, 26);
+
+	check_assert(strncmp(buf1, string1, 26) == 0);
+
+	check_finish(39);
+	check_point(0);
+}
+
+void
+task3(intptr_t exinf)
+{
+	ER_UINT	ercd;
+
+	check_point(7);
+	ercd = snd_mbf(MBF1, string2, 26);
+	check_ercd(ercd, E_OK);
+
+	check_point(12);
+	ercd = wup_tsk(TASK1);
+	check_ercd(ercd, E_OK);
+
+	check_point(14);
+	ercd = snd_mbf(MBF1, string3, 10);
+	check_ercd(ercd, E_OK);
+
+	check_point(18);
+	ercd = snd_mbf(MBF1, string2, 26);
+	check_ercd(ercd, E_OK);
+
+	check_point(20);
+	check_assert(strncmp(buf1, string2, 26) == 0);
+
+	ercd = rcv_mbf(MBF1, buf1);
+	check_ercd(ercd, 26);
+
+	check_assert(strncmp(buf1, string1, 26) == 0);
+
+	ercd = chg_pri(TASK2, TPRI_INI);
+	check_ercd(ercd, E_OK);
+
+	check_point(21);
+	ercd = snd_mbf(MBF1, string1, 26);
+	check_ercd(ercd, E_OK);
+
+	check_point(0);
+}
+
+void
+task4(intptr_t exinf)
+{
+	ER_UINT	ercd;
+	T_RMBF	rmbf;
+
+	check_point(3);
+	ercd = wup_tsk(TASK1);
+	check_ercd(ercd, E_OK);
+
+	check_point(5);
+	ercd = ref_mbf(MBF1, &rmbf);
+	check_ercd(ercd, E_OK);
+
+	check_assert(rmbf.stskid == TASK1);
+
+	check_assert(rmbf.rtskid == TSK_NONE);
+
+	check_assert(rmbf.smbfcnt == 0);
+
+	ercd = rcv_mbf(MBF1, buf1);
+	check_ercd(ercd, 25);
+
+	check_point(8);
+	ercd = rcv_mbf(MBF1, buf1);
+	check_ercd(ercd, 26);
+
+	check_point(15);
+	ercd = rcv_mbf(MBF1, buf1);
+	check_ercd(ercd, 26);
+
+	check_point(19);
+	ercd = chg_pri(TASK2, LOW_PRIORITY);
+	check_ercd(ercd, E_OK);
+
+	ercd = rcv_mbf(MBF1, buf1);
+	check_ercd(ercd, 26);
+
+	check_point(23);
+	ercd = wup_tsk(TASK1);
+	check_ercd(ercd, E_OK);
+
+	check_point(27);
+	ercd = chg_pri(TASK3, LOW_PRIORITY);
+	check_ercd(ercd, E_OK);
+
+	check_point(30);
+	ercd = chg_pri(TASK2, HIGH_PRIORITY);
+	check_ercd(ercd, E_OK);
+
+	ercd = rcv_mbf(MBF1, buf1);
+	check_ercd(ercd, 26);
+
+	check_point(33);
+	ercd = wup_tsk(TASK1);
+	check_ercd(ercd, E_OK);
+
+	check_point(37);
+	ercd = chg_pri(TASK2, HIGH_PRIORITY);
+	check_ercd(ercd, E_OK);
+
+	check_point(0);
+}
Index: /extension/messagebuf/test/test_messagebuf3.cfg
===================================================================
--- /extension/messagebuf/test/test_messagebuf3.cfg	(revision 7)
+++ /extension/messagebuf/test/test_messagebuf3.cfg	(revision 7)
@@ -0,0 +1,19 @@
+/*
+ *  $Id$
+ */
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€Î¥Æ¥¹¥È(3)€Î¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+ */
+INCLUDE("target_timer.cfg");
+INCLUDE("syssvc/syslog.cfg");
+INCLUDE("syssvc/banner.cfg");
+INCLUDE("syssvc/serial.cfg");
+
+#include "test_messagebuf3.h"
+
+CRE_TSK(TASK1, { TA_ACT, 1, task1, HIGH_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_MBF(MBF1, { TA_TPRI, 26, 26, NULL });
Index: /extension/messagebuf/test/test_messagebuf3.h
===================================================================
--- /extension/messagebuf/test/test_messagebuf3.h	(revision 7)
+++ /extension/messagebuf/test/test_messagebuf3.h	(revision 7)
@@ -0,0 +1,73 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2014 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$
+ */
+
+/* 
+ *		¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€Î¥Æ¥¹¥È(3)
+ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎÄêµÁ
+ */
+#include "target_test.h"
+
+/*
+ *  Í¥ÀèÅÙ€ÎÄêµÁ
+ */
+#define HIGH_PRIORITY	9		/* ¹âÍ¥ÀèÅÙ */
+#define MID_PRIORITY	10		/* ÃæÍ¥ÀèÅÙ */
+#define LOW_PRIORITY	11		/* ÄãÍ¥ÀèÅÙ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È€Ë°ÍÂž€¹€ë²ÄÇœÀ­€Î€¢€ëÄê¿ô€ÎÄêµÁ
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯¥µ¥€¥º */
+#endif /* STACK_SIZE */
+
+/*
+ *  ŽØ¿ô€Î¥×¥í¥È¥¿¥€¥×ÀëžÀ
+ */
+#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: /extension/mutex/include/kernel.h
===================================================================
--- /extension/mutex/include/kernel.h	(revision 7)
+++ /extension/mutex/include/kernel.h	(revision 7)
@@ -0,0 +1,517 @@
+/*
+ *  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-2014 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$
+ */
+
+/*
+ *		TOPPERS/ASP¥«¡Œ¥Í¥ë Éžœà¥Ø¥Ã¥À¥Õ¥¡¥€¥ë
+ *
+ *  TOPPERS/ASP¥«¡Œ¥Í¥ë€¬¥µ¥Ý¡Œ¥È€¹€ë¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎÀëžÀ€È¡€É¬Í×€Ê¥Ç¡Œ
+ *  ¥¿·¿¡€Äê¿ô¡€¥Þ¥¯¥í€ÎÄêµÁ€òŽÞ€à¥Ø¥Ã¥À¥Õ¥¡¥€¥ë¡¥
+ *
+ *  ¥¢¥»¥ó¥Ö¥êžÀžì€Î¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€«€é€³€Î¥Õ¥¡¥€¥ë€ò¥€¥ó¥¯¥ë¡Œ¥É€¹€ë»þ
+ *  €Ï¡€TOPPERS_MACRO_ONLY€òÄêµÁ€·€Æ€ª€¯¡¥€³€ì€Ë€è€ê¡€¥Þ¥¯¥íÄêµÁ°Ê³°€ò
+ *  œü€¯€è€Š€Ë€Ê€Ã€Æ€€€ë¡¥
+ *
+ *  €³€Î¥Õ¥¡¥€¥ë€ò¥€¥ó¥¯¥ë¡Œ¥É€¹€ëÁ°€Ë¥€¥ó¥¯¥ë¡Œ¥É€·€Æ€ª€¯€Ù€­¥Õ¥¡¥€¥ë
+ *  €Ï€Ê€€¡¥
+ */
+
+#ifndef TOPPERS_KERNEL_H
+#define TOPPERS_KERNEL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *	TOPPERS¶ŠÄÌ€Î¥Ç¡Œ¥¿·¿¡ŠÄê¿ô¡Š¥Þ¥¯¥í
+ */
+#include <t_stddef.h>
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô
+ */
+#include "target_kernel.h"
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  ¥Ç¡Œ¥¿·¿€ÎÄêµÁ
+ */
+
+/*
+ *  ¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó€ä¥ª¥Ö¥ž¥§¥¯¥ÈÈÖ¹æ€Î·¿ÄêµÁ
+ */
+typedef	uint_t		TEXPTN;		/* ¥¿¥¹¥¯Îã³°Í×°ø€Î¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó */
+typedef	uint_t		FLGPTN;		/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€Î¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó */
+typedef	uint_t		INTNO;		/* ³ä¹þ€ßÈÖ¹æ */
+typedef	uint_t		INHNO;		/* ³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ */
+typedef	uint_t		EXCNO;		/* CPUÎã³°¥Ï¥ó¥É¥éÈÖ¹æ */
+
+/*
+ *  œèÍýÃ±°Ì€Î·¿ÄêµÁ
+ */
+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);
+
+/*
+ *  ¥á¥â¥êÎÎ°è³ÎÊÝ€Î€¿€á€Î·¿ÄêµÁ
+ */
+#ifndef TOPPERS_STK_T
+#define TOPPERS_STK_T	intptr_t
+#endif /* TOPPERS_STK_T */
+typedef	TOPPERS_STK_T	STK_T;	/* ¥¹¥¿¥Ã¥¯ÎÎ°è€ò³ÎÊÝ€¹€ë€¿€á€Î·¿ */
+
+#ifndef TOPPERS_MPF_T
+#define TOPPERS_MPF_T	intptr_t
+#endif /* TOPPERS_MPF_T */
+typedef	TOPPERS_MPF_T	MPF_T;	/* žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÎÎ°è€ò³ÎÊÝ€¹€ë€¿€á€Î·¿ */
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ø¥Ã¥À€Î·¿ÄêµÁ
+ */
+typedef	struct t_msg {			/* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€Î¥á¥Ã¥»¡Œ¥ž¥Ø¥Ã¥À */
+	struct t_msg	*pk_next;
+} T_MSG;
+
+typedef	struct t_msg_pri {		/* Í¥ÀèÅÙÉÕ€­¥á¥Ã¥»¡Œ¥ž¥Ø¥Ã¥À */
+	T_MSG	msgque;				/* ¥á¥Ã¥»¡Œ¥ž¥Ø¥Ã¥À */
+	PRI		msgpri;				/* ¥á¥Ã¥»¡Œ¥žÍ¥ÀèÅÙ */
+} T_MSG_PRI;
+
+/*
+ *  ¥Ñ¥±¥Ã¥È·ÁŒ°€ÎÄêµÁ
+ */
+typedef struct t_rtsk {
+	STAT	tskstat;	/* ¥¿¥¹¥¯ŸõÂÖ */
+	PRI		tskpri;		/* ¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ */
+	PRI		tskbpri;	/* ¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ */
+	STAT	tskwait;	/* ÂÔ€ÁÍ×°ø */
+	ID		wobjid;		/* ÂÔ€ÁÂÐŸÝ€Î¥ª¥Ö¥ž¥§¥¯¥È€ÎID */
+	TMO		lefttmo;	/* ¥¿¥€¥à¥¢¥Š¥È€¹€ë€Þ€Ç€Î»þŽÖ */
+	uint_t	actcnt;		/* µ¯Æ°Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô */
+	uint_t	wupcnt;		/* µ¯Ÿ²Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô */
+} T_RTSK;
+
+typedef struct t_rtex {
+	STAT	texstat;	/* ¥¿¥¹¥¯Îã³°œèÍý€ÎŸõÂÖ */
+	TEXPTN	pndptn;		/* ÊÝÎ±Îã³°Í×°ø */
+} T_RTEX;
+
+typedef struct t_rsem {
+	ID		wtskid;		/* ¥»¥Þ¥Õ¥©€ÎÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
+	uint_t	semcnt;		/* ¥»¥Þ¥Õ¥©€Îžœºß€Î»ñž»¿ô */
+} T_RSEM;
+
+typedef struct t_rflg {
+	ID		wtskid;		/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
+	FLGPTN	flgptn;		/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€Îžœºß€Î¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó */
+} T_RFLG;
+
+typedef struct t_rdtq {
+	ID		stskid;		/* ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎÁ÷¿®ÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
+	ID		rtskid;		/* ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎŒõ¿®ÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
+	uint_t	sdtqcnt;	/* ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€Ë³ÊÇŒ€µ€ì€Æ€€€ë¥Ç¡Œ¥¿€Î¿ô */
+} T_RDTQ;
+
+typedef struct t_rpdq {
+	ID		stskid;		/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎÁ÷¿®ÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯
+						   €ÎIDÈÖ¹æ */
+	ID		rtskid;		/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎŒõ¿®ÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯
+						   €ÎIDÈÖ¹æ */
+	uint_t	spdqcnt;	/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€Ë³ÊÇŒ€µ€ì€Æ€€€ë¥Ç¡Œ
+						   ¥¿€Î¿ô */
+} T_RPDQ;
+
+typedef struct t_rmbx {
+	ID		wtskid;		/* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€ÎÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
+	T_MSG	*pk_msg;	/* ¥á¥Ã¥»¡Œ¥ž¥­¥å¡Œ€ÎÀèÆ¬€Ë€Ä€Ê€¬€ì€¿¥á¥Ã¥»¡Œ¥ž
+						   €ÎÀèÆ¬ÈÖÃÏ */
+} T_RMBX;
+
+typedef struct t_rmtx {
+	ID		htskid;		/* ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€€ë¥¿¥¹¥¯€ÎIDÈÖ¹æ */
+	ID		wtskid;		/* ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
+} T_RMTX;
+
+typedef struct t_rmpf {
+	ID		wtskid;		/* žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ë€ÎÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€Î
+						   IDÈÖ¹æ */
+	uint_t	fblkcnt;	/* žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÎÎ°è€Î¶õ€­¥á¥â¥êÎÎ°è€Ë³ä€ê
+						   ÉÕ€±€ë€³€È€¬€Ç€­€ëžÇÄêÄ¹¥á¥â¥ê¥Ö¥í¥Ã¥¯€Î¿ô */
+} T_RMPF;
+
+typedef struct t_rcyc {
+	STAT	cycstat;	/* ŒþŽü¥Ï¥ó¥É¥é€ÎÆ°ºîŸõÂÖ */
+	RELTIM	lefttim;	/* Œ¡€ËŒþŽü¥Ï¥ó¥É¥é€òµ¯Æ°€¹€ë»þ¹ï€Þ€Ç€ÎÁêÂÐ»þŽÖ */
+} T_RCYC;
+
+typedef struct t_ralm {
+	STAT	almstat;	/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ÎÆ°ºîŸõÂÖ */
+	RELTIM	lefttim;	/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€òµ¯Æ°€¹€ë»þ¹ï€Þ€Ç€ÎÁêÂÐ»þŽÖ */
+} T_RALM;
+
+/*
+ *  ¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎÀëžÀ
+ */
+
+/*
+ *  ¥¿¥¹¥¯ŽÉÍýµ¡Çœ
+ */
+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();
+
+/*
+ *  ¥¿¥¹¥¯ÉÕÂ°Æ±Žüµ¡Çœ
+ */
+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();
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍýµ¡Çœ
+ */
+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();
+
+/*
+ *  Æ±Žü¡ŠÄÌ¿®µ¡Çœ
+ */
+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();
+
+/*
+ *  ¥á¥â¥ê¥×¡Œ¥ëŽÉÍýµ¡Çœ
+ */
+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		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Îã³°ŽÉÍýµ¡Çœ
+ */
+extern bool_t	xsns_dpn(void *p_excinf) throw();
+extern bool_t	xsns_xpn(void *p_excinf) throw();
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  ¥ª¥Ö¥ž¥§¥¯¥ÈÂ°À­€ÎÄêµÁ
+ */
+#define TA_ACT			UINT_C(0x02)	/* ¥¿¥¹¥¯€òµ¯Æ°€µ€ì€¿ŸõÂÖ€ÇÀžÀ® */
+
+#define TA_TPRI			UINT_C(0x01)	/* ¥¿¥¹¥¯€ÎÂÔ€Á¹ÔÎó€òÍ¥ÀèÅÙœç€Ë */
+#define TA_MPRI			UINT_C(0x02)	/* ¥á¥Ã¥»¡Œ¥ž¥­¥å¡Œ€òÍ¥ÀèÅÙœç€Ë */
+
+#define TA_WMUL			UINT_C(0x02)	/* Ê£¿ô€ÎÂÔ€Á¥¿¥¹¥¯ */
+#define TA_CLR			UINT_C(0x04)	/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€Î¥¯¥ê¥¢»ØÄê */
+
+#define TA_CEILING		UINT_C(0x03)	/* Í¥ÀèÅÙŸåžÂ¥×¥í¥È¥³¥ë */
+
+#define TA_STA			UINT_C(0x02)	/* ŒþŽü¥Ï¥ó¥É¥é€òÆ°ºîŸõÂÖ€ÇÀžÀ® */
+
+#define TA_NONKERNEL	UINT_C(0x02)	/* ¥«¡Œ¥Í¥ëŽÉÍý³°€Î³ä¹þ€ß */
+
+#define TA_ENAINT		UINT_C(0x01)	/* ³ä¹þ€ßÍ×µá¶Ø»ß¥Õ¥é¥°€ò¥¯¥ê¥¢ */
+#define TA_EDGE			UINT_C(0x02)	/* ¥š¥Ã¥ž¥È¥ê¥¬ */
+
+/*
+ *  ¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎÆ°ºî¥â¡Œ¥É€ÎÄêµÁ
+ */
+#define TWF_ORW			UINT_C(0x01)	/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎORÂÔ€Á */
+#define TWF_ANDW		UINT_C(0x02)	/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎANDÂÔ€Á */
+
+/*
+ *  ¥ª¥Ö¥ž¥§¥¯¥È€ÎŸõÂÖ€ÎÄêµÁ
+ */
+#define TTS_RUN			UINT_C(0x01)	/* ŒÂ¹ÔŸõÂÖ */
+#define TTS_RDY			UINT_C(0x02)	/* ŒÂ¹Ô²ÄÇœŸõÂÖ */
+#define TTS_WAI			UINT_C(0x04)	/* ÂÔ€ÁŸõÂÖ */
+#define TTS_SUS			UINT_C(0x08)	/* ¶¯À©ÂÔ€ÁŸõÂÖ */
+#define TTS_WAS			UINT_C(0x0c)	/* ÆóœÅÂÔ€ÁŸõÂÖ */
+#define TTS_DMT			UINT_C(0x10)	/* µÙ»ßŸõÂÖ */
+
+#define TTW_SLP			UINT_C(0x0001)	/* µ¯Ÿ²ÂÔ€Á */
+#define TTW_DLY			UINT_C(0x0002)	/* »þŽÖ·Ð²áÂÔ€Á */
+#define TTW_SEM			UINT_C(0x0004)	/* ¥»¥Þ¥Õ¥©€Î»ñž»³ÍÆÀÂÔ€Á */
+#define TTW_FLG			UINT_C(0x0008)	/* ¥€¥Ù¥ó¥È¥Õ¥é¥°ÂÔ€Á */
+#define TTW_SDTQ		UINT_C(0x0010)	/* ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®ÂÔ€Á */
+#define TTW_RDTQ		UINT_C(0x0020)	/* ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TTW_SPDQ		UINT_C(0x0100)	/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®ÂÔ€Á */
+#define TTW_RPDQ		UINT_C(0x0200)	/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TTW_MBX			UINT_C(0x0040)	/* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TTW_MTX			UINT_C(0x0080)	/* ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯ÂÔ€ÁŸõÂÖ */
+#define TTW_MPF			UINT_C(0x2000)	/* žÇÄêÄ¹¥á¥â¥ê¥Ö¥í¥Ã¥¯€Î³ÍÆÀÂÔ€Á */
+
+#define TTEX_ENA		UINT_C(0x01)	/* ¥¿¥¹¥¯Îã³°œèÍýµö²ÄŸõÂÖ */
+#define TTEX_DIS		UINT_C(0x02)	/* ¥¿¥¹¥¯Îã³°œèÍý¶Ø»ßŸõÂÖ */
+
+#define TCYC_STP		UINT_C(0x01)	/* ŒþŽü¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€Ê€€ */
+#define TCYC_STA		UINT_C(0x02)	/* ŒþŽü¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€ë */
+
+#define TALM_STP		UINT_C(0x01)	/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€Ê€€ */
+#define TALM_STA		UINT_C(0x02)	/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€ë */
+
+/*
+ *  €œ€ÎÂŸ€ÎÄê¿ô€ÎÄêµÁ
+ */
+#define TSK_SELF		0			/* Œ«¥¿¥¹¥¯»ØÄê */
+#define TSK_NONE		0			/* ³ºÅö€¹€ë¥¿¥¹¥¯€¬€Ê€€ */
+
+#define TPRI_SELF		0			/* Œ«¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ */
+#define TPRI_INI		0			/* ¥¿¥¹¥¯€Îµ¯Æ°»þÍ¥ÀèÅÙ */
+
+#define TIPM_ENAALL		0			/* ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœü */
+
+/*
+ *  ¹œÀ®Äê¿ô€È¥Þ¥¯¥í
+ */
+
+/*
+ *  ¥µ¥Ý¡Œ¥È€¹€ëµ¡Çœ
+ */
+#ifdef TOPPERS_TARGET_SUPPORT_DIS_INT
+#define TOPPERS_SUPPORT_DIS_INT			/* dis_int€¬¥µ¥Ý¡Œ¥È€µ€ì€Æ€€€ë */
+#endif /* TOPPERS_TARGET_SUPPORT_DIS_INT */
+
+#ifdef TOPPERS_TARGET_SUPPORT_ENA_INT
+#define TOPPERS_SUPPORT_ENA_INT			/* ena_int€¬¥µ¥Ý¡Œ¥È€µ€ì€Æ€€€ë */
+#endif /* TOPPERS_TARGET_SUPPORT_ENA_INT */
+
+#ifdef TOPPERS_TARGET_SUPPORT_GET_UTM
+#define TOPPERS_SUPPORT_GET_UTM			/* get_utm€¬¥µ¥Ý¡Œ¥È€µ€ì€Æ€€€ë */
+#endif /* TOPPERS_TARGET_SUPPORT_GET_UTM */
+
+#define TOPPERS_SUPPORT_MUTEX			/* ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹µ¡Çœ³ÈÄ¥ */
+
+/*
+ *  Í¥ÀèÅÙ€ÎÈÏ°Ï
+ */
+#define TMIN_TPRI		1			/* ¥¿¥¹¥¯Í¥ÀèÅÙ€ÎºÇŸ®ÃÍ¡ÊºÇ¹âÃÍ¡Ë*/
+#define TMAX_TPRI		16			/* ¥¿¥¹¥¯Í¥ÀèÅÙ€ÎºÇÂçÃÍ¡ÊºÇÄãÃÍ¡Ë*/
+#define TMIN_DPRI		1			/* ¥Ç¡Œ¥¿Í¥ÀèÅÙ€ÎºÇŸ®ÃÍ¡ÊºÇ¹âÃÍ¡Ë*/
+#define TMAX_DPRI		16			/* ¥Ç¡Œ¥¿Í¥ÀèÅÙ€ÎºÇÂçÃÍ¡ÊºÇÄãÃÍ¡Ë*/
+#define TMIN_MPRI		1			/* ¥á¥Ã¥»¡Œ¥žÍ¥ÀèÅÙ€ÎºÇŸ®ÃÍ¡ÊºÇ¹âÃÍ¡Ë*/
+#define TMAX_MPRI		16			/* ¥á¥Ã¥»¡Œ¥žÍ¥ÀèÅÙ€ÎºÇÂçÃÍ¡ÊºÇÄãÃÍ¡Ë*/
+#define TMIN_ISRPRI		1			/* ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óÍ¥ÀèÅÙ€ÎºÇŸ®ÃÍ */
+#define TMAX_ISRPRI		16			/* ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óÍ¥ÀèÅÙ€ÎºÇÂçÃÍ */
+
+/*
+ *  ¥Ð¡Œ¥ž¥ç¥óŸðÊó
+ */
+#define TKERNEL_MAKER	UINT_C(0x0118)	/* ¥«¡Œ¥Í¥ë€Î¥á¡Œ¥«¡Œ¥³¡Œ¥É */
+#define TKERNEL_PRID	UINT_C(0x0007)	/* ¥«¡Œ¥Í¥ë€ÎŒ±ÊÌÈÖ¹æ */
+#define TKERNEL_SPVER	UINT_C(0xf517)	/* ¥«¡Œ¥Í¥ë»ÅÍÍ€Î¥Ð¡Œ¥ž¥ç¥óÈÖ¹æ */
+#define TKERNEL_PRVER	UINT_C(0x1092)	/* ¥«¡Œ¥Í¥ë€Î¥Ð¡Œ¥ž¥ç¥óÈÖ¹æ */
+
+/*
+ *  ¥­¥å¡Œ¥€¥ó¥°²ó¿ô€ÎºÇÂçÃÍ
+ */
+#define TMAX_ACTCNT		UINT_C(1)		/* µ¯Æ°Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô€ÎºÇÂçÃÍ */
+#define TMAX_WUPCNT		UINT_C(1)		/* µ¯Ÿ²Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô€ÎºÇÂçÃÍ */
+
+/*
+ *  ¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó€Î¥Ó¥Ã¥È¿ô
+ */
+#ifndef TBIT_TEXPTN					/* ¥¿¥¹¥¯Îã³°Í×°ø€Î¥Ó¥Ã¥È¿ô */
+#define TBIT_TEXPTN		(sizeof(TEXPTN) * CHAR_BIT)
+#endif /* TBIT_TEXPTN */
+
+#ifndef TBIT_FLGPTN					/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€Î¥Ó¥Ã¥È¿ô */
+#define TBIT_FLGPTN		(sizeof(FLGPTN) * CHAR_BIT)
+#endif /* TBIT_FLGPTN */
+
+/*
+ *  ¥á¥â¥êÎÎ°è³ÎÊÝ€Î€¿€á€Î¥Þ¥¯¥í
+ *
+ *  °Ê²Œ€ÎTOPPERS_COUNT_SZ€ÈTOPPERS_ROUND_SZ€ÎÄêµÁ€Ï¡€unit€¬2€Î¶ÒŸè€Ç€¢
+ *  €ë€³€È€ò²ŸÄê€·€Æ€€€ë¡¥
+ */
+#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	/* ¥»¥Þ¥Õ¥©€ÎºÇÂç»ñž»¿ô€ÎºÇÂçÃÍ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* TOPPERS_KERNEL_H */
Index: /extension/mutex/kernel/Makefile.kernel
===================================================================
--- /extension/mutex/kernel/Makefile.kernel	(revision 7)
+++ /extension/mutex/kernel/Makefile.kernel	(revision 7)
@@ -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-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$
+# 
+
+#
+#		¥«¡Œ¥Í¥ë€Î¥Õ¥¡¥€¥ë¹œÀ®€ÎÄêµÁ
+#
+
+#
+#  1€Ä€Î¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€«€éÊ£¿ô€Î¥ª¥Ö¥ž¥§¥¯¥È¥Õ¥¡¥€¥ë€òÀžÀ®€¹€ë€è€Š€Ëºî
+#  À®€µ€ì€¿¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€Î¥ê¥¹¥È
+#
+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
+
+#
+#  ³Æ¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€«€éÀžÀ®€µ€ì€ë¥ª¥Ö¥ž¥§¥¯¥È¥Õ¥¡¥€¥ë€Î¥ê¥¹¥È
+#
+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
+
+#
+#  ÀžÀ®€µ€ì€ë¥ª¥Ö¥ž¥§¥¯¥È¥Õ¥¡¥€¥ë€Î°ÍÂžŽØ·ž€ÎÄêµÁ
+#
+$(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: /extension/mutex/kernel/allfunc.h
===================================================================
--- /extension/mutex/kernel/allfunc.h	(revision 7)
+++ /extension/mutex/kernel/allfunc.h	(revision 7)
@@ -0,0 +1,256 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		€¹€Ù€Æ€ÎŽØ¿ô€ò¥³¥ó¥Ñ¥€¥ë€¹€ë€¿€á€ÎÄêµÁ
+ */
+
+#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: /extension/mutex/kernel/check.h
===================================================================
--- /extension/mutex/kernel/check.h	(revision 7)
+++ /extension/mutex/kernel/check.h	(revision 7)
@@ -0,0 +1,292 @@
+/*
+ *  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-2012 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥š¥é¡Œ¥Á¥§¥Ã¥¯ÍÑ¥Þ¥¯¥í
+ */
+
+#ifndef TOPPERS_CHECK_H
+#define TOPPERS_CHECK_H
+
+/*
+ *  Í¥ÀèÅÙ€ÎÈÏ°Ï€ÎÈœÄê
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯Í¥ÀèÅÙ€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
+ */
+#define CHECK_TPRI(tpri) do {								\
+	if (!VALID_TPRI(tpri)) {								\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_TPRI_INI(tpri) do {							\
+	if (!(VALID_TPRI(tpri) || (tpri) == TPRI_INI)) {		\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_TPRI_SELF(tpri) do {							\
+	if (!(VALID_TPRI(tpri) || (tpri) == TPRI_SELF)) {		\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  ¥¿¥€¥à¥¢¥Š¥È»ØÄêÃÍ€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
+ */
+#define CHECK_TMOUT(tmout) do {								\
+	if (!(TMO_FEVR <= (tmout))) {							\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
+ */
+#define CHECK_INTPRI_CHGIPM(intpri) do {					\
+	if (!VALID_INTPRI_CHGIPM(intpri)) {						\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  ³ä¹þ€ßÈÖ¹æ€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
+ */
+#define CHECK_INTNO_DISINT(intno) do {						\
+	if (!VALID_INTNO_DISINT(intno)) {						\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  €œ€ÎÂŸ€Î¥Ñ¥é¥á¡Œ¥¿¥š¥é¡Œ€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
+ */
+#define CHECK_PAR(exp) do {									\
+	if (!(exp)) {											\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  ¥ª¥Ö¥ž¥§¥¯¥ÈID€ÎÈÏ°Ï€ÎÈœÄê
+ */
+#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)
+
+/*
+ *  ¥ª¥Ö¥ž¥§¥¯¥ÈID€Î¥Á¥§¥Ã¥¯¡ÊE_ID¡Ë
+ */
+#define CHECK_TSKID(tskid) do {								\
+	if (!VALID_TSKID(tskid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_TSKID_SELF(tskid) do {						\
+	if (!(VALID_TSKID(tskid) || (tskid) == TSK_SELF)) {		\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_SEMID(semid) do {								\
+	if (!VALID_SEMID(semid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_FLGID(flgid) do {								\
+	if (!VALID_FLGID(flgid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_DTQID(dtqid) do {								\
+	if (!VALID_DTQID(dtqid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_PDQID(pdqid) do {								\
+	if (!VALID_PDQID(pdqid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_MBXID(mbxid) do {								\
+	if (!VALID_MBXID(mbxid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_MTXID(mtxid) do {								\
+	if (!VALID_MTXID(mtxid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_MPFID(mpfid) do {								\
+	if (!VALID_MPFID(mpfid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_CYCID(cycid) do {								\
+	if (!VALID_CYCID(cycid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_ALMID(almid) do {								\
+	if (!VALID_ALMID(almid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  žÆœÐ€·¥³¥ó¥Æ¥­¥¹¥È€Î¥Á¥§¥Ã¥¯¡ÊE_CTX¡Ë
+ */
+#define CHECK_TSKCTX() do {									\
+	if (sense_context()) {									\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_INTCTX() do {									\
+	if (!sense_context()) {									\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  žÆœÐ€·¥³¥ó¥Æ¥­¥¹¥È€ÈCPU¥í¥Ã¥¯ŸõÂÖ€Î¥Á¥§¥Ã¥¯¡ÊE_CTX¡Ë
+ */
+#define CHECK_TSKCTX_UNL() do {								\
+	if (sense_context() || t_sense_lock()) {				\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_INTCTX_UNL() do {								\
+	if (!sense_context() || i_sense_lock()) {				\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥ÁÊÝÎ±ŸõÂÖ€Ç€Ê€€€«€Î¥Á¥§¥Ã¥¯¡ÊE_CTX¡Ë
+ */
+#define CHECK_DISPATCH() do {								\
+	if (sense_context() || t_sense_lock() || !dspflg) {		\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  €œ€ÎÂŸ€Î¥³¥ó¥Æ¥­¥¹¥È¥š¥é¡Œ€Î¥Á¥§¥Ã¥¯¡ÊE_CTX¡Ë
+ */
+#define CHECK_CTX(exp) do {									\
+	if (!(exp)) {											\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  Œ«¥¿¥¹¥¯€ò»ØÄê€·€Æ€€€Ê€€€«€Î¥Á¥§¥Ã¥¯¡ÊE_ILUSE¡Ë
+ */
+#define CHECK_NONSELF(p_tcb) do {							\
+	if ((p_tcb) == p_runtsk) {								\
+		ercd = E_ILUSE;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  €œ€ÎÂŸ€ÎÉÔÀµ»ÈÍÑ¥š¥é¡Œ€Î¥Á¥§¥Ã¥¯¡ÊE_ILUSE¡Ë
+ */
+#define CHECK_ILUSE(exp) do {								\
+	if (!(exp)) {											\
+		ercd = E_ILUSE;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#endif /* TOPPERS_CHECK_H */
Index: /extension/mutex/kernel/kernel.tf
===================================================================
--- /extension/mutex/kernel/kernel.tf	(revision 7)
+++ /extension/mutex/kernel/kernel.tf	(revision 7)
@@ -0,0 +1,1148 @@
+$ ======================================================================
+$ 
+$   TOPPERS/ASP Kernel
+$       Toyohashi Open Platform for Embedded Real-Time Systems/
+$       Advanced Standard Profile Kernel
+$ 
+$   Copyright (C) 2007 by TAKAGI Nobuhisa
+$   Copyright (C) 2007-2015 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$
+$  
+$ =====================================================================
+
+$ =====================================================================
+$ 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$
+#if TKERNEL_PRID != 0x07u$NL$
+#error The kernel does not match this configuration file.$NL$
+#endif$NL$
+$NL$
+
+$ 
+$  ¥€¥ó¥¯¥ë¡Œ¥É¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¡Ê#include¡Ë
+$ 
+/*$NL$
+$SPC$*  Include Directives (#include)$NL$
+$SPC$*/$NL$
+$NL$
+$INCLUDES$
+$NL$
+
+$ 
+$  ¥ª¥Ö¥ž¥§¥¯¥È€Î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$
+
+$
+$  ¥¹¥¿¥Ã¥¯ÎÎ°è€Î³ÎÊÝŽØ¿ô
+$
+$IF !ISFUNCTION("ALLOC_STACK")$
+$FUNCTION ALLOC_STACK$
+$	// Âç€­€€Êý€ËŽÝ€á€¿¥µ¥€¥º€Ç³ÎÊÝ€¹€ë
+	static STK_T $ARGV[1]$[COUNT_STK_T($ARGV[2]$)];$NL$
+	$RESULT = FORMAT("ROUND_STK_T(%1%)", ARGV[2])$
+$END$
+$END$
+
+$ 
+$  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+$ 
+/*$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$
+
+$ 
+$  ¥¿¥¹¥¯
+$ 
+/*$NL$
+$SPC$*  Task Management Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ¥¿¥¹¥¯€¬1žÄ°ÊŸåÂžºß€¹€ë€³€È€Î¥Á¥§¥Ã¥¯
+$IF !LENGTH(TSK.ID_LIST)$
+	$ERROR$$FORMAT(_("no task is registered"))$$END$
+$END$
+
+$ ¥¿¥¹¥¯IDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_tskid = (TMIN_TSKID + TNUM_TSKID - 1);$NL$
+$NL$
+
+$ ¥š¥é¡Œ¥Á¥§¥Ã¥¯
+$FOREACH tskid TSK.ID_LIST$
+$	// tskatr€¬¡Ê¡ÎTA_ACT¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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$
+
+$ ¥¹¥¿¥Ã¥¯ÎÎ°è€ÎÀžÀ®€È€œ€ì€ËŽØ€¹€ë¥š¥é¡Œ¥Á¥§¥Ã¥¯
+$FOREACH tskid TSK.ID_LIST$
+$	// stksz€¬0°Ê²Œ€«¡€¥¿¡Œ¥²¥Ã¥ÈÄêµÁ€ÎºÇŸ®ÃÍ¡ÊTARGET_MIN_STKSZ¡Ë€è€ê€â
+$	// Ÿ®€µ€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$IF TSK.STKSZ[tskid] <= 0 || (TARGET_MIN_STKSZ
+									&& TSK.STKSZ[tskid] < TARGET_MIN_STKSZ)$
+		$ERROR TSK.TEXT_LINE[tskid]$E_PAR: $FORMAT(_("too small %1% `%2%\' of `%3%\' in %4%"), "stksz", TSK.STKSZ[tskid], tskid, "CRE_TSK")$$END$
+	$END$
+
+$ 	// stksz€¬¥¹¥¿¥Ã¥¯ÎÎ°è€Î¥µ¥€¥º€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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")$
+		$TSK.TINIB_STKSZ[tskid] = ALLOC_STACK(CONCAT("_kernel_stack_",
+												tskid), TSK.STKSZ[tskid])$
+		$TSK.TINIB_STK[tskid] = CONCAT("_kernel_stack_", tskid)$
+	$ELSE$
+		$TSK.TINIB_STKSZ[tskid] = FORMAT("(%1%)", TSK.STKSZ[tskid])$
+		$TSK.TINIB_STK[tskid] = FORMAT("(void *)(%1%)", TSK.STK[tskid])$
+	$END$
+$END$
+$NL$
+
+$ ¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®¡Ê¥¿¥¹¥¯€Ï1žÄ°ÊŸåÂžºß€¹€ë¡Ë
+const TINIB _kernel_tinib_table[TNUM_TSKID] = {$NL$
+$JOINEACH tskid TSK.ID_LIST ",\n"$
+$	// ¥¿¥¹¥¯Â°À­¡€³ÈÄ¥ŸðÊó¡€µ¯Æ°ÈÖÃÏ¡€µ¯Æ°»þÍ¥ÀèÅÙ
+	$TAB${
+	$SPC$($TSK.TSKATR[tskid]$), (intptr_t)($TSK.EXINF[tskid]$),
+	$SPC$((TASK)($TSK.TASK[tskid]$)), INT_PRIORITY($TSK.ITSKPRI[tskid]$),
+
+$	// ¥¿¥¹¥¯œéŽü²œ¥³¥ó¥Æ¥­¥¹¥È¥Ö¥í¥Ã¥¯¡€¥¹¥¿¥Ã¥¯ÎÎ°è
+	$IF USE_TSKINICTXB$
+		$GENERATE_TSKINICTXB(tskid)$
+	$ELSE$
+		$SPC$$TSK.TINIB_STKSZ[tskid]$, $TSK.TINIB_STK[tskid]$,
+	$END$
+
+$	// ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎÂ°À­€Èµ¯Æ°ÈÖÃÏ
+	$SPC$($ALT(TSK.TEXATR[tskid],"TA_NULL")$), ($ALT(TSK.TEXRTN[tskid],"NULL")$) }
+$END$$NL$
+};$NL$
+$NL$
+
+$ ¥¿¥¹¥¯ŽÉÍý¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+TCB _kernel_tcb_table[TNUM_TSKID];$NL$
+$NL$
+
+$ ¥¿¥¹¥¯ÀžÀ®œçœø¥Æ¡Œ¥Ö¥ë€ÎÀžÀ®
+const ID _kernel_torder_table[TNUM_TSKID] = {$NL$
+$TAB$$JOINEACH tskid TSK.ORDER_LIST ", "$$tskid$$END$$NL$
+};$NL$
+$NL$
+
+$ 
+$  ¥»¥Þ¥Õ¥©
+$ 
+/*$NL$
+$SPC$*  Semaphore Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ¥»¥Þ¥Õ¥©IDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_semid = (TMIN_SEMID + TNUM_SEMID - 1);$NL$
+$NL$
+
+$ ¥»¥Þ¥Õ¥©œéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF LENGTH(SEM.ID_LIST)$
+	const SEMINIB _kernel_seminib_table[TNUM_SEMID] = {$NL$
+	$JOINEACH semid SEM.ID_LIST ",\n"$
+$		// sematr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$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)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$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$
+
+$		// ¥»¥Þ¥Õ¥©œéŽü²œ¥Ö¥í¥Ã¥¯
+		$TAB${ ($SEM.SEMATR[semid]$), ($SEM.ISEMCNT[semid]$), ($SEM.MAXSEM[semid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// ¥»¥Þ¥Õ¥©ŽÉÍý¥Ö¥í¥Ã¥¯
+	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$
+
+$ 
+$  ¥€¥Ù¥ó¥È¥Õ¥é¥°
+$ 
+/*$NL$
+$SPC$*  Eventflag Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ¥€¥Ù¥ó¥È¥Õ¥é¥°IDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_flgid = (TMIN_FLGID + TNUM_FLGID - 1);$NL$
+$NL$
+
+$ ¥€¥Ù¥ó¥È¥Õ¥é¥°œéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF LENGTH(FLG.ID_LIST)$
+	const FLGINIB _kernel_flginib_table[TNUM_FLGID] = {$NL$
+	$JOINEACH flgid FLG.ID_LIST ",\n"$
+$		// flgatr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ã¡ÎTA_WMUL¡Ï¡Ã¡ÎTA_CLR¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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$
+
+$		// iflgptn€¬FLGPTN€Ë³ÊÇŒ€Ç€­€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$IF (FLG.IFLGPTN[flgid] & ~((1 << TBIT_FLGPTN) - 1)) != 0$
+			$ERROR FLG.TEXT_LINE[flgid]$E_PAR: $FORMAT(_("too large %1% `%2%\' of `%3%\' in %4%"), "iflgptn", FLG.IFLGPTN[flgid], flgid, "CRE_FLG")$$END$
+		$END$
+
+$		// ¥€¥Ù¥ó¥È¥Õ¥é¥°œéŽü²œ¥Ö¥í¥Ã¥¯
+		$TAB${ ($FLG.FLGATR[flgid]$), ($FLG.IFLGPTN[flgid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// ¥€¥Ù¥ó¥È¥Õ¥é¥°ŽÉÍý¥Ö¥í¥Ã¥¯
+	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$
+
+$ 
+$  ¥Ç¡Œ¥¿¥­¥å¡Œ
+$ 
+/*$NL$
+$SPC$*  Dataqueue Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ¥Ç¡Œ¥¿¥­¥å¡ŒIDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_dtqid = (TMIN_DTQID + TNUM_DTQID - 1);$NL$
+$NL$
+
+$IF LENGTH(DTQ.ID_LIST)$
+	$FOREACH dtqid DTQ.ID_LIST$
+$		// dtqatr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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$
+
+$		// dtqcnt€¬Éé€ÎŸì¹ç¡ÊE_PAR¡Ë
+		$IF DTQ.DTQCNT[dtqid] < 0$
+			$ERROR DTQ.TEXT_LINE[dtqid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "dtqcnt", DTQ.DTQCNT[dtqid], dtqid, "CRE_DTQ")$$END$
+		$END$
+
+$		// dtqmb€¬NULL€Ç€Ê€€Ÿì¹ç¡ÊE_NOSPT¡Ë
+		$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$
+
+$		// ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è
+		$IF DTQ.DTQCNT[dtqid]$
+			static DTQMB _kernel_dtqmb_$dtqid$[$DTQ.DTQCNT[dtqid]$];$NL$
+		$END$
+	$END$
+
+$	// ¥Ç¡Œ¥¿¥­¥å¡ŒœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+	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$
+
+$	// ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍý¥Ö¥í¥Ã¥¯
+	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$
+
+$ 
+$  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ
+$ 
+/*$NL$
+$SPC$*  Priority Dataqueue Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒIDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_pdqid = (TMIN_PDQID + TNUM_PDQID - 1);$NL$
+$NL$
+
+$IF LENGTH(PDQ.ID_LIST)$
+	$FOREACH pdqid PDQ.ID_LIST$
+$		// pdqatr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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$
+
+$		// pdqcnt€¬Éé€ÎŸì¹ç¡ÊE_PAR¡Ë
+		$IF PDQ.PDQCNT[pdqid] < 0$
+			$ERROR PDQ.TEXT_LINE[pdqid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "pdqcnt", PDQ.PDQCNT[pdqid], pdqid, "CRE_PDQ")$$END$
+		$END$
+
+$		// (TMIN_DPRI <= maxdpri && maxdpri <= TMAX_DPRI)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$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€Ç€Ê€€Ÿì¹ç¡ÊE_NOSPT¡Ë
+		$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$
+
+$		// Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è
+		$IF PDQ.PDQCNT[pdqid]$
+			static PDQMB _kernel_pdqmb_$pdqid$[$PDQ.PDQCNT[pdqid]$];$NL$
+		$END$
+	$END$
+
+$	// Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+	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$
+
+$	// Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍý¥Ö¥í¥Ã¥¯
+	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$
+
+$ 
+$  ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹
+$ 
+/*$NL$
+$SPC$*  Mailbox Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹IDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_mbxid = (TMIN_MBXID + TNUM_MBXID - 1);$NL$
+$NL$
+
+$ ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹œéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF LENGTH(MBX.ID_LIST)$
+	const MBXINIB _kernel_mbxinib_table[TNUM_MBXID] = {$NL$
+	$JOINEACH mbxid MBX.ID_LIST ",\n"$
+$		// mbxatr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ã¡ÎTA_MPRI¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$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€Ç€Ê€€Ÿì¹ç¡ÊE_NOSPT¡Ë
+		$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$
+
+$		// ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹œéŽü²œ¥Ö¥í¥Ã¥¯
+		$TAB${ ($MBX.MBXATR[mbxid]$), ($MBX.MAXMPRI[mbxid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹ŽÉÍý¥Ö¥í¥Ã¥¯
+	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$
+
+$ 
+$  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹
+$ 
+/*$NL$
+$SPC$*  Mutex Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹IDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_mtxid = (TMIN_MTXID + TNUM_MTXID - 1);$NL$
+$NL$
+
+$ ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹œéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF LENGTH(MTX.ID_LIST)$
+	const MTXINIB _kernel_mtxinib_table[TNUM_MTXID] = {$NL$
+	$JOINEACH mtxid MTX.ID_LIST ",\n"$
+$		// mtxatr€¬¡Ê¡ÎTA_TPRI¡ÃTA_CEILING¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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€¬Ì€»ØÄê€ÎŸì¹ç€Ï0€Èž«€Ê€¹
+		$IF !LENGTH(MTX.CEILPRI[mtxid])$
+			$MTX.CEILPRI[mtxid] = 0$
+		$END$
+$		// (TMIN_TPRI <= ceilpri && ceilpri <= TMAX_TPRI)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$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$
+
+$		// ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹œéŽü²œ¥Ö¥í¥Ã¥¯
+		$TAB${ ($MTX.MTXATR[mtxid]$), INT_PRIORITY($MTX.CEILPRI[mtxid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹ŽÉÍý¥Ö¥í¥Ã¥¯
+	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$
+
+$ 
+$  žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ë
+$ 
+/*$NL$
+$SPC$*  Fixed-sized Memorypool Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëIDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_mpfid = (TMIN_MPFID + TNUM_MPFID - 1);$NL$
+$NL$
+
+$IF LENGTH(MPF.ID_LIST)$
+	$FOREACH mpfid MPF.ID_LIST$
+$		// mpfatr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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°Ê²Œ€ÎŸì¹ç¡ÊE_PAR¡Ë
+		$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°Ê²Œ€ÎŸì¹ç¡ÊE_PAR¡Ë
+		$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$
+
+$		// žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÎÎ°è
+		$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€Ç€Ê€€Ÿì¹ç¡ÊE_NOSPT¡Ë
+		$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$
+
+$		// žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëŽÉÍýÎÎ°è
+		static MPFMB _kernel_mpfmb_$mpfid$[$MPF.BLKCNT[mpfid]$];$NL$
+	$END$
+
+$	// žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+	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$(void *)($MPF.MPF[mpfid]$)$END$, (_kernel_mpfmb_$mpfid$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëŽÉÍý¥Ö¥í¥Ã¥¯
+	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$
+
+$ 
+$  ŒþŽü¥Ï¥ó¥É¥é
+$ 
+/*$NL$
+$SPC$*  Cyclic Handler Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ŒþŽü¥Ï¥ó¥É¥éIDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_cycid = (TMIN_CYCID + TNUM_CYCID - 1);$NL$
+$NL$
+
+$ ŒþŽü¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF LENGTH(CYC.ID_LIST)$
+	const CYCINIB _kernel_cycinib_table[TNUM_CYCID] = {$NL$
+	$JOINEACH cycid CYC.ID_LIST ",\n"$
+$		// cycatr€¬¡Ê¡ÎTA_STA¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$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)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$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$
+
+$		// ·Ù¹ð¡§cycatr€ËTA_STA€¬ÀßÄê€µ€ì€Æ€€€Æ¡€(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$
+
+$		// ŒþŽü¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯
+		$TAB${ ($CYC.CYCATR[cycid]$), (intptr_t)($CYC.EXINF[cycid]$), ($CYC.CYCHDR[cycid]$), ($CYC.CYCTIM[cycid]$), ($CYC.CYCPHS[cycid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// ŒþŽü¥Ï¥ó¥É¥éŽÉÍý¥Ö¥í¥Ã¥¯
+	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$
+
+$ 
+$  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é
+$ 
+/*$NL$
+$SPC$*  Alarm Handler Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éIDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_almid = (TMIN_ALMID + TNUM_ALMID - 1);$NL$
+$NL$
+
+$ ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF LENGTH(ALM.ID_LIST)$
+	const ALMINIB _kernel_alminib_table[TNUM_ALMID] = {$NL$
+	$JOINEACH almid ALM.ID_LIST ",\n"$
+$		// almatr€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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$
+
+$		// ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯
+		$TAB${ ($ALM.ALMATR[almid]$), (intptr_t)($ALM.EXINF[almid]$), ($ALM.ALMHDR[almid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éŽÉÍý¥Ö¥í¥Ã¥¯
+	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$
+
+$ ³ä¹þ€ßÈÖ¹æ€È³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ€ÎÊÑŽ¹¥Æ¡Œ¥Ö¥ë€ÎºîÀ®
+$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$
+
+$ ³ä¹þ€ßÍ×µá¥é¥€¥ó€ËŽØ€¹€ë¥š¥é¡Œ¥Á¥§¥Ã¥¯
+$i = 0$
+$FOREACH intno INT.ORDER_LIST$
+$	// intno€¬CFG_INT€ËÂÐ€¹€ë³ä¹þ€ßÈÖ¹æ€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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€Ë€è€Ã€ÆÀßÄêºÑ€ß€ÎŸì¹ç¡ÊE_OBJ¡Ë
+	$j = 0$
+	$FOREACH intno2 INT.ORDER_LIST$
+		$IF j < i && INT.INTNO[intno] == INT.INTNO[intno2]$
+			$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€¬¡Ê¡ÎTA_ENAINT¡Ï¡Ã¡ÎTA_EDGE¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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€ËÂÐ€¹€ë³ä¹þ€ßÍ¥ÀèÅÙ€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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$
+
+$	// ¥«¡Œ¥Í¥ëŽÉÍý€ËžÇÄê€µ€ì€Æ€€€ëintno€ËÂÐ€·€Æ¡€intpri€ËTMIN_INTPRI
+$	// €è€ê€âŸ®€µ€€ÃÍ€¬»ØÄê€µ€ì€¿Ÿì¹ç¡ÊE_OBJ¡Ë
+	$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$
+
+$	// ¥«¡Œ¥Í¥ëŽÉÍý³°€ËžÇÄê€µ€ì€Æ€€€ëintno€ËÂÐ€·€Æ¡€intpri€ËTMIN_INTPRI
+$	// €è€ê€âŸ®€µ€€ÃÍ€¬»ØÄê€µ€ì€Ê€«€Ã€¿Ÿì¹ç¡ÊE_OBJ¡Ë
+	$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$
+
+$ ³ä¹þ€ß¥Ï¥ó¥É¥é€ËŽØ€¹€ë¥š¥é¡Œ¥Á¥§¥Ã¥¯
+$i = 0$
+$FOREACH inhno INH.ORDER_LIST$
+$	// inhno€¬DEF_INH€ËÂÐ€¹€ë³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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€Ë€è€Ã€ÆÀßÄêºÑ€ß€ÎŸì¹ç¡ÊE_OBJ¡Ë
+	$j = 0$
+	$FOREACH inhno2 INH.ORDER_LIST$
+		$IF j < i && INH.INHNO[inhno] == INH.INHNO[inhno2]$
+			$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€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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$
+
+$	// ¥«¡Œ¥Í¥ëŽÉÍý€ËžÇÄê€µ€ì€Æ€€€ëinhno€ËÂÐ€·€Æ¡€inhatr€ËTA_NONKERNEL
+$	//¡¡€¬»ØÄê€µ€ì€Æ€€€ëŸì¹ç¡ÊE_RSATR¡Ë
+	$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$
+
+$	// ¥«¡Œ¥Í¥ëŽÉÍý³°€ËžÇÄê€µ€ì€Æ€€€ëinhno€ËÂÐ€·€Æ¡€inhatr€ËTA_NONKERNEL
+$	// €¬»ØÄê€µ€ì€Æ€€€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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€¬€Ê€€Ÿì¹ç¡ÊE_OBJ¡Ë
+		$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", intno, "inhno", INH.INHNO[inhno], "CFG_INT")$$END$
+		$ELSE$
+			$IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$
+$				// inhatr€ËTA_NONKERNEL€¬»ØÄê€µ€ì€Æ€ª€é€º¡€inhno€ËÂÐ±þ
+$				// €¹€ëintno€ËÂÐ€·€ÆCFG_INT€ÇÀßÄê€µ€ì€¿³ä¹þ€ßÍ¥ÀèÅÙ€¬
+$				// TMIN_INTPRI€è€ê€âŸ®€µ€€Ÿì¹ç¡ÊE_OBJ¡Ë
+				$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€¬»ØÄê€µ€ì€Æ€ª€ê¡€inhno€ËÂÐ±þ
+$				// €¹€ëintno€ËÂÐ€·€ÆCFG_INT€ÇÀßÄê€µ€ì€¿³ä¹þ€ßÍ¥ÀèÅÙ€¬
+$				// TMIN_INTPRI°ÊŸå€Ç€¢€ëŸì¹ç¡ÊE_OBJ¡Ë
+				$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$
+
+$ ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó¡ÊISR¡Ë€ËŽØ€¹€ë¥š¥é¡Œ¥Á¥§¥Ã¥¯€È³ä¹þ€ß¥Ï¥ó¥É¥é€ÎÀžÀ®
+$FOREACH order ISR.ORDER_LIST$
+$	// isratr€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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€ËÂÐ€¹€ë³ä¹þ€ßÈÖ¹æ€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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€ËÂÐ€·€ÆÅÐÏ¿€µ€ì€¿ISR€Î¥ê¥¹¥È€ÎºîÀ®
+	$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€ËÂÐ€·€ÆÅÐÏ¿€µ€ì€¿ISR€¬Âžºß€¹€ëŸì¹ç
+	$IF LENGTH(isr_order_list) > 0$
+$		// intno€ËÂÐ±þ€¹€ëinhno€ËÂÐ€·€ÆDEF_INH€¬€¢€ëŸì¹ç¡ÊE_OBJ¡Ë
+		$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€¬€Ê€€Ÿì¹ç¡ÊE_OBJ¡Ë
+		$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€ÇÀßÄê€µ€ì€¿³ä¹þ€ßÍ¥ÀèÅÙ€¬TMIN_INTPRI
+$			// €è€ê€âŸ®€µ€€Ÿì¹ç¡ÊE_OBJ¡Ë
+			$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)$
+
+$		// ISRÍÑ€Î³ä¹þ€ß¥Ï¥ó¥É¥é
+		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€òÍ¥ÀèÅÙœç€ËžÆ€ÓœÐ€¹
+		$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$
+
+$ 
+$  ³ä¹þ€ßŽÉÍýµ¡Çœ€Î€¿€á€ÎÉžœàÅª€ÊœéŽü²œŸðÊó€ÎÀžÀ®
+$ 
+$ ³ä¹þ€ß¥Ï¥ó¥É¥é€ÎœéŽü²œ€ËÉ¬Í×€ÊŸðÊó
+$IF !OMIT_INITIALIZE_INTERRUPT || ALT(USE_INHINIB_TABLE,0)$
+
+$ ³ä¹þ€ß¥Ï¥ó¥É¥é¿ô
+#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$
+
+$ ³ä¹þ€ß¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯
+$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$
+
+$ ³ä¹þ€ßÍ×µá¥é¥€¥ó€ÎœéŽü²œ€ËÉ¬Í×€ÊŸðÊó
+$IF !OMIT_INITIALIZE_INTERRUPT || ALT(USE_INTINIB_TABLE,0)$
+
+$ ³ä¹þ€ßÍ×µá¥é¥€¥ó¿ô
+#define TNUM_INTNO	$LENGTH(INT.ORDER_LIST)$$NL$
+const uint_t _kernel_tnum_intno = TNUM_INTNO;$NL$
+$NL$
+
+$ ³ä¹þ€ßÍ×µá¥é¥€¥óœéŽü²œ¥Ö¥í¥Ã¥¯
+$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Îã³°ŽÉÍýµ¡Çœ
+$ 
+/*$NL$
+$SPC$*  CPU Exception Management Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ CPUÎã³°¥Ï¥ó¥É¥é€ËŽØ€¹€ë¥š¥é¡Œ¥Á¥§¥Ã¥¯
+$i = 0$
+$FOREACH excno EXC.ORDER_LIST$
+$	// excno€¬DEF_EXC€ËÂÐ€¹€ëCPUÎã³°¥Ï¥ó¥É¥éÈÖ¹æ€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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€Ë€è€Ã€ÆÀßÄêºÑ€ß€ÎŸì¹ç¡ÊE_OBJ¡Ë
+	$j = 0$
+	$FOREACH excno2 EXC.ORDER_LIST$
+		$IF j < i && EXC.EXCNO[excno] == EXC.EXCNO[excno2]$
+			$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€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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Îã³°¥Ï¥ó¥É¥é€Î€¿€á€ÎÉžœàÅª€ÊœéŽü²œŸðÊó€ÎÀžÀ®
+$IF !OMIT_INITIALIZE_EXCEPTION$
+
+$ CPUÎã³°¥Ï¥ó¥É¥é¿ô
+#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Îã³°¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯
+$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$
+
+$ 
+$  Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ€Î¥¹¥¿¥Ã¥¯ÎÎ°è
+$ 
+/*$NL$
+$SPC$*  Stack Area for Non-task Context$NL$
+$SPC$*/$NL$
+$NL$
+
+$IF !LENGTH(ICS.ORDER_LIST)$
+$	// DEF_ICS€¬€Ê€€Ÿì¹ç€Î¥Ç¥Õ¥©¥ë¥ÈÃÍ€ÎÀßÄê
+	#ifdef DEFAULT_ISTK$NL$
+	$NL$
+	#define TOPPERS_ISTKSZ		DEFAULT_ISTKSZ$NL$
+	#define TOPPERS_ISTK		DEFAULT_ISTK$NL$
+	$NL$
+	#else /* DEAULT_ISTK */$NL$
+	$NL$
+	$istksz = ALLOC_STACK("_kernel_istack", "DEFAULT_ISTKSZ")$$NL$
+	#define TOPPERS_ISTKSZ		$istksz$$NL$
+	#define TOPPERS_ISTK		_kernel_istack$NL$
+	$NL$
+	#endif /* DEAULT_ISTK */$NL$
+$ELSE$
+
+$	// ÀÅÅªAPI¡ÖDEF_ICS¡×€¬Ê£¿ô€¢€ë¡ÊE_OBJ¡Ë
+	$IF LENGTH(ICS.ORDER_LIST) > 1$
+		$ERROR$E_OBJ: $FORMAT(_("too many %1%"), "DEF_ICS")$$END$
+	$END$
+
+$	// istksz€¬0°Ê²Œ€«¡€¥¿¡Œ¥²¥Ã¥ÈÄêµÁ€ÎºÇŸ®ÃÍ¡ÊTARGET_MIN_ISTKSZ¡Ë€è€ê€â
+$	// Ÿ®€µ€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$IF ICS.ISTKSZ[1] <= 0 || (TARGET_MIN_ISTKSZ
+									&& ICS.ISTKSZ[1] < TARGET_MIN_ISTKSZ)$
+		$ERROR ICS.TEXT_LINE[1]$E_PAR: $FORMAT(_("too small %1% `%2%\' in %3%"), "istksz", ICS.ISTKSZ[1], "DEF_ICS")$$END$
+	$END$
+
+$ 	// istksz€¬¥¹¥¿¥Ã¥¯ÎÎ°è€Î¥µ¥€¥º€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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")$
+$		// ¥¹¥¿¥Ã¥¯ÎÎ°è€ÎŒ«Æ°³äÉÕ€±
+		$istksz = ALLOC_STACK("_kernel_istack", ICS.ISTKSZ[1])$$NL$
+		#define TOPPERS_ISTKSZ		$istksz$$NL$
+		#define TOPPERS_ISTK		_kernel_istack$NL$
+	$ELSE$
+		#define TOPPERS_ISTKSZ		($ICS.ISTKSZ[1]$)$NL$
+		#define TOPPERS_ISTK		(void *)($ICS.ISTK[1]$)$NL$
+	$END$
+$END$
+$NL$
+
+$ Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ€Î¥¹¥¿¥Ã¥¯ÎÎ°è
+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$
+
+$ 
+$  ¥¿¥€¥à¥€¥Ù¥ó¥ÈŽÉÍý
+$ 
+/*$NL$
+$SPC$*  Time Event Management$NL$
+$SPC$*/$NL$
+$NL$
+TMEVTN   _kernel_tmevt_heap[TNUM_TSKID + TNUM_CYCID + TNUM_ALMID];$NL$
+$NL$
+
+$ 
+$  ³Æ¥â¥ž¥å¡Œ¥ë€ÎœéŽü²œŽØ¿ô
+$ 
+/*$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)$$TAB$_kernel_initialize_semaphore();$NL$$END$
+$IF LENGTH(FLG.ID_LIST)$$TAB$_kernel_initialize_eventflag();$NL$$END$
+$IF LENGTH(DTQ.ID_LIST)$$TAB$_kernel_initialize_dataqueue();$NL$$END$
+$IF LENGTH(PDQ.ID_LIST)$$TAB$_kernel_initialize_pridataq();$NL$$END$
+$IF LENGTH(MBX.ID_LIST)$$TAB$_kernel_initialize_mailbox();$NL$$END$
+$IF LENGTH(MTX.ID_LIST)$$TAB$_kernel_initialize_mutex();$NL$$END$
+$IF LENGTH(MPF.ID_LIST)$$TAB$_kernel_initialize_mempfix();$NL$$END$
+$IF LENGTH(CYC.ID_LIST)$$TAB$_kernel_initialize_cyclic();$NL$$END$
+$IF LENGTH(ALM.ID_LIST)$$TAB$_kernel_initialize_alarm();$NL$$END$
+$TAB$_kernel_initialize_interrupt();$NL$
+$TAB$_kernel_initialize_exception();$NL$
+}$NL$
+$NL$
+
+$ 
+$  œéŽü²œ¥ë¡Œ¥Á¥ó€ÎŒÂ¹ÔŽØ¿ô
+$ 
+/*$NL$
+$SPC$*  Initialization Routine$NL$
+$SPC$*/$NL$
+$NL$
+void$NL$
+_kernel_call_inirtn(void)$NL$
+{$NL$
+$FOREACH order INI.ORDER_LIST$
+$ 	// iniatr€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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$
+
+$ 
+$  œªÎ»œèÍý¥ë¡Œ¥Á¥ó€ÎŒÂ¹ÔŽØ¿ô
+$ 
+/*$NL$
+$SPC$*  Termination Routine$NL$
+$SPC$*/$NL$
+$NL$
+void$NL$
+_kernel_call_terrtn(void)$NL$
+{$NL$
+$FOREACH rorder TER.RORDER_LIST$
+$ 	// teratr€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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: /extension/mutex/kernel/kernel_api.csv
===================================================================
--- /extension/mutex/kernel/kernel_api.csv	(revision 7)
+++ /extension/mutex/kernel/kernel_api.csv	(revision 7)
@@ -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 },,
+exc,DEF_EXC,.excno { .excatr &exchdr },,
+ics,DEF_ICS,{ .istksz &istk },-1,
+ini,ATT_INI,{ .iniatr &exinf &inirtn },-1,
+ter,ATT_TER,{ .teratr &exinf &terrtn },-1,
Index: /extension/mutex/kernel/kernel_def.csv
===================================================================
--- /extension/mutex/kernel/kernel_def.csv	(revision 7)
+++ /extension/mutex/kernel/kernel_def.csv	(revision 7)
@@ -0,0 +1,115 @@
+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
+TBIT_TEXPTN,TBIT_TEXPTN
+TBIT_FLGPTN,TBIT_FLGPTN
+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
+TARGET_MIN_ISTKSZ,#defined(TARGET_MIN_ISTKSZ),,TARGET_MIN_ISTKSZ
+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_MTXINIB,sizeof(MTXINIB)
+offsetof_MTXINIB_mtxatr,"offsetof(MTXINIB,mtxatr)"
+offsetof_MTXINIB_ceilpri,"offsetof(MTXINIB,ceilpri)"
+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: /extension/mutex/kernel/kernel_impl.h
===================================================================
--- /extension/mutex/kernel/kernel_impl.h	(revision 7)
+++ /extension/mutex/kernel/kernel_impl.h	(revision 7)
@@ -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-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$
+ */
+
+/*
+ *		TOPPERS/ASP¥«¡Œ¥Í¥ëÆâÉôžþ€±Éžœà¥Ø¥Ã¥À¥Õ¥¡¥€¥ë
+ *
+ *  €³€Î¥Ø¥Ã¥À¥Õ¥¡¥€¥ë€Ï¡€¥«¡Œ¥Í¥ë€ò¹œÀ®€¹€ë¥×¥í¥°¥é¥à€Î¥œ¡Œ¥¹¥Õ¥¡¥€¥ë
+ *  €ÇÉ¬€º¥€¥ó¥¯¥ë¡Œ¥É€¹€ë€Ù€­Éžœà¥Ø¥Ã¥À¥Õ¥¡¥€¥ë€Ç€¢€ë¡¥
+ *
+ *  ¥¢¥»¥ó¥Ö¥êžÀžì€Î¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€«€é€³€Î¥Õ¥¡¥€¥ë€ò¥€¥ó¥¯¥ë¡Œ¥É€¹€ë»þ
+ *  €Ï¡€TOPPERS_MACRO_ONLY€òÄêµÁ€·€Æ€ª€¯¡¥€³€ì€Ë€è€ê¡€¥Þ¥¯¥íÄêµÁ°Ê³°€ò
+ *  œü€¯€è€Š€Ë€Ê€Ã€Æ€€€ë¡¥
+ */
+
+#ifndef TOPPERS_KERNEL_IMPL_H
+#define TOPPERS_KERNEL_IMPL_H
+
+/*
+ *  ¥«¡Œ¥Í¥ë€ÎÆâÉôŒ±ÊÌÌŸ€Î¥ê¥Í¡Œ¥à
+ */
+#include "kernel_rename.h"
+
+/*
+ *  ¥¢¥×¥ê¥±¡Œ¥·¥ç¥ó€È¶ŠÄÌ€Î¥Ø¥Ã¥À¥Õ¥¡¥€¥ë
+ */
+#include <kernel.h>
+
+/*
+ *  ¥·¥¹¥Æ¥à¥í¥°µ¡Çœ€Î€¿€á€ÎÄêµÁ
+ */
+#include <t_syslog.h>
+
+/*
+ *  ·¿¥­¥ã¥¹¥È€ò¹Ô€Š¥Þ¥¯¥í€ÎÄêµÁ
+ */
+#ifndef CAST
+#define CAST(type, val)		((type)(val))
+#endif /* CAST */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂžŸðÊó€ÎÄêµÁ
+ */
+#include "target_config.h"
+
+/*
+ *  €¹€Ù€Æ€ÎŽØ¿ô€ò¥³¥ó¥Ñ¥€¥ë€¹€ë€¿€á€ÎÄêµÁ
+ */
+#ifdef ALLFUNC
+#include "allfunc.h"
+#endif /* ALLFUNC */
+
+/*
+ *  ¥Ó¥Ã¥È¥Õ¥£¡Œ¥ë¥É€Ç€ÎÉä¹æÌµ€·À°¿ô·¿
+ *
+ *  8¥Ó¥Ã¥È°Ê²Œ€ÎÉý€Î¥Ó¥Ã¥È¥Õ¥£¡Œ¥ë¥É€Ç¡€Éä¹æÌµ€·À°¿ôÃÍ€òÊÝ»ý€·€¿€€Ÿì¹ç
+ *  €ËÍÑ€€€ë€Ù€­¥Ç¡Œ¥¿·¿¡¥ANSI C€Ç€Ï¡€¥Ó¥Ã¥È¥Õ¥£¡Œ¥ë¥É€Î¥Ç¡Œ¥¿·¿€Ë€Ï
+ *  int€Èunsigned int€·€«µö€µ€ì€Ê€€€¿€á¡€¥Ç¥Õ¥©¥ë¥È€ÎÄêµÁ€Ïunsigned
+ *  int€È€·€Æ€€€ë€¬¡€¥¿¡Œ¥²¥Ã¥È€ª€è€Ó¥Ä¡Œ¥ë°ÍÂž€Ç¡€unsigned char€Þ€¿€Ï
+ *  unsigned short€ËÄêµÁ€·€¿Êý€¬žúÎš€¬ÎÉ€€Ÿì¹ç€¬€¢€ë¡¥
+ */
+#ifndef BIT_FIELD_UINT
+#define BIT_FIELD_UINT		unsigned int
+#endif /* BIT_FIELD_UINT */
+
+/*
+ *  ¥Ó¥Ã¥È¥Õ¥£¡Œ¥ë¥É€Ç€Î¥Ö¡Œ¥ë·¿
+ *
+ *  1¥Ó¥Ã¥ÈÉý€Î¥Ó¥Ã¥È¥Õ¥£¡Œ¥ë¥É€Ç¡€¥Ö¡Œ¥ëÃÍ€òÊÝ»ý€·€¿€€Ÿì¹ç€ËÍÑ€€€ë€Ù€­
+ *  ¥Ç¡Œ¥¿·¿¡¥¥Ç¥Õ¥©¥ë¥È€Ç€ÏBIT_FIELD_UINT€ÈÆ±°ì€ËÄêµÁ€·€Æ€€€ë€¬¡€¥Ö¡Œ
+ *  ¥ëÃÍ€òÊÝ»ý€¹€ë€³€È€òÌÀŒš€¹€ë€¿€á€ËÊÌ€ÎÌŸŸÎ€È€·€Æ€€€ë¡¥
+ */
+#ifndef BIT_FIELD_BOOL
+#define BIT_FIELD_BOOL		BIT_FIELD_UINT
+#endif /* BIT_FIELD_BOOL */
+
+/*
+ *  ¥ª¥Ö¥ž¥§¥¯¥ÈID€ÎºÇŸ®ÃÍ€ÎÄêµÁ
+ */
+#define TMIN_TSKID		1		/* ¥¿¥¹¥¯ID€ÎºÇŸ®ÃÍ */
+#define TMIN_SEMID		1		/* ¥»¥Þ¥Õ¥©ID€ÎºÇŸ®ÃÍ */
+#define TMIN_FLGID		1		/* ¥Õ¥é¥°ID€ÎºÇŸ®ÃÍ */
+#define TMIN_DTQID		1		/* ¥Ç¡Œ¥¿¥­¥å¡ŒID€ÎºÇŸ®ÃÍ */
+#define TMIN_PDQID		1		/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒID€ÎºÇŸ®ÃÍ */
+#define TMIN_MBXID		1		/* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹ID€ÎºÇŸ®ÃÍ */
+#define TMIN_MTXID		1		/* ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹ID€ÎºÇŸ®ÃÍ */
+#define TMIN_MPFID		1		/* žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëID€ÎºÇŸ®ÃÍ */
+#define TMIN_CYCID		1		/* ŒþŽü¥Ï¥ó¥É¥éID€ÎºÇŸ®ÃÍ */
+#define TMIN_ALMID		1		/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éID€ÎºÇŸ®ÃÍ */
+
+/*
+ *  Í¥ÀèÅÙ€ÎÃÊ³¬¿ô€ÎÄêµÁ
+ */
+#define TNUM_TPRI		(TMAX_TPRI - TMIN_TPRI + 1)
+#define TNUM_MPRI		(TMAX_MPRI - TMIN_MPRI + 1)
+#define TNUM_INTPRI		(TMAX_INTPRI - TMIN_INTPRI + 1)
+
+/*
+ *  ¥Ø¥Ã¥À¥Õ¥¡¥€¥ë€ò»ý€¿€Ê€€¥â¥ž¥å¡Œ¥ë€ÎŽØ¿ô¡ŠÊÑ¿ô€ÎÀëžÀ
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  ³Æ¥â¥ž¥å¡Œ¥ë€ÎœéŽü²œ¡Êkernel_cfg.c¡Ë
+ */
+extern void	initialize_object(void);
+
+/*
+ *  œéŽü²œ¥ë¡Œ¥Á¥ó€ÎŒÂ¹Ô¡Êkernel_cfg.c¡Ë
+ */
+extern void	call_inirtn(void);
+
+/*
+ *  œªÎ»œèÍý¥ë¡Œ¥Á¥ó€ÎŒÂ¹Ô¡Êkernel_cfg.c¡Ë
+ */
+extern void	call_terrtn(void);
+
+/*
+ *  Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ€Î¥¹¥¿¥Ã¥¯ÎÎ°è¡Êkernel_cfg.c¡Ë
+ */
+extern const SIZE	istksz;		/* ¥¹¥¿¥Ã¥¯ÎÎ°è€Î¥µ¥€¥º¡ÊŽÝ€á€¿ÃÍ¡Ë */
+extern STK_T *const	istk;		/* ¥¹¥¿¥Ã¥¯ÎÎ°è€ÎÀèÆ¬ÈÖÃÏ */
+#ifdef TOPPERS_ISTKPT
+extern STK_T *const	istkpt;		/* ¥¹¥¿¥Ã¥¯¥Ý¥€¥ó¥¿€ÎœéŽüÃÍ */
+#endif /* TOPPERS_ISTKPT */
+
+/*
+ *  ¥«¡Œ¥Í¥ëÆ°ºîŸõÂÖ¥Õ¥é¥°¡Êstartup.c¡Ë
+ */
+extern bool_t	kerflg;
+
+/*
+ *  ¥«¡Œ¥Í¥ë€Îµ¯Æ°¡Êstartup.c¡Ë
+ */
+extern void	sta_ker(void);
+
+/*
+ *  ¥«¡Œ¥Í¥ë€ÎœªÎ»œèÍý¡Êstartup.c¡Ë
+ */
+extern void	exit_kernel(void);
+
+#endif /* TOPPERS_MACRO_ONLY */
+#endif /* TOPPERS_KERNEL_IMPL_H */
Index: /extension/mutex/kernel/kernel_int.h
===================================================================
--- /extension/mutex/kernel/kernel_int.h	(revision 7)
+++ /extension/mutex/kernel/kernel_int.h	(revision 7)
@@ -0,0 +1,84 @@
+/*
+ *  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-2012 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		kernel_cfg.c¡Ê€ª€è€Ócfg1_out.c¡ËÍÑ¥Ø¥Ã¥À¥Õ¥¡¥€¥ë
+ */
+
+#ifndef TOPPERS_KERNEL_INT_H
+#define TOPPERS_KERNEL_INT_H
+
+/*
+ *  ¥«¡Œ¥Í¥ëÉžœà¥Ø¥Ã¥À¥Õ¥¡¥€¥ë
+ */
+#include "kernel_impl.h"
+
+/*
+ *  ¥«¡Œ¥Í¥ë€Î³Æ¥Ø¥Ã¥À¥Õ¥¡¥€¥ë
+ */
+#include "task.h"
+#include "semaphore.h"
+#include "eventflag.h"
+#include "dataqueue.h"
+#include "pridataq.h"
+#include "mailbox.h"
+#include "mutex.h"
+#include "mempfix.h"
+#include "cyclic.h"
+#include "alarm.h"
+#include "interrupt.h"
+#include "exception.h"
+#include "time_event.h"
+
+/*
+ *  ¥ê¥Í¡Œ¥à€·€¿¥·¥ó¥Ü¥ë€òžµ€ËÌá€¹€¿€á€Î¥Ø¥Ã¥À¥Õ¥¡¥€¥ë
+ */
+#include "kernel_unrename.h"
+
+/*
+ *  ÆâÍÆ€¬¶õ€ÎÇÛÎó€òÀžÀ®€¹€ë€¿€á€Î¥Þ¥¯¥í
+ */
+#ifndef TOPPERS_EMPTY_LABEL
+#define TOPPERS_EMPTY_LABEL(type, var)		type var[0]
+#endif
+
+#endif /* TOPPERS_KERNEL_INT_H */
Index: /extension/mutex/kernel/kernel_rename.def
===================================================================
--- /extension/mutex/kernel/kernel_rename.def	(revision 7)
+++ /extension/mutex/kernel/kernel_rename.def	(revision 7)
@@ -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
+
+# 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
+
+# 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
+dtqinib_table
+dtqcb_table
+tmax_pdqid
+pdqinib_table
+pdqcb_table
+tmax_mbxid
+mbxinib_table
+mbxcb_table
+tmax_mtxid
+mtxinib_table
+mtxcb_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: /extension/mutex/kernel/kernel_rename.h
===================================================================
--- /extension/mutex/kernel/kernel_rename.h	(revision 7)
+++ /extension/mutex/kernel/kernel_rename.h	(revision 7)
@@ -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
+
+/*
+ *  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
+
+/*
+ *  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 dtqinib_table				_kernel_dtqinib_table
+#define dtqcb_table					_kernel_dtqcb_table
+#define tmax_pdqid					_kernel_tmax_pdqid
+#define pdqinib_table				_kernel_pdqinib_table
+#define pdqcb_table					_kernel_pdqcb_table
+#define tmax_mbxid					_kernel_tmax_mbxid
+#define mbxinib_table				_kernel_mbxinib_table
+#define mbxcb_table					_kernel_mbxcb_table
+#define tmax_mtxid					_kernel_tmax_mtxid
+#define mtxinib_table				_kernel_mtxinib_table
+#define mtxcb_table					_kernel_mtxcb_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
+
+/*
+ *  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
+
+/*
+ *  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 _dtqinib_table				__kernel_dtqinib_table
+#define _dtqcb_table				__kernel_dtqcb_table
+#define _tmax_pdqid					__kernel_tmax_pdqid
+#define _pdqinib_table				__kernel_pdqinib_table
+#define _pdqcb_table				__kernel_pdqcb_table
+#define _tmax_mbxid					__kernel_tmax_mbxid
+#define _mbxinib_table				__kernel_mbxinib_table
+#define _mbxcb_table				__kernel_mbxcb_table
+#define _tmax_mtxid					__kernel_tmax_mtxid
+#define _mtxinib_table				__kernel_mtxinib_table
+#define _mtxcb_table				__kernel_mtxcb_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: /extension/mutex/kernel/kernel_unrename.h
===================================================================
--- /extension/mutex/kernel/kernel_unrename.h	(revision 7)
+++ /extension/mutex/kernel/kernel_unrename.h	(revision 7)
@@ -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
+
+/*
+ *  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
+
+/*
+ *  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 dtqinib_table
+#undef dtqcb_table
+#undef tmax_pdqid
+#undef pdqinib_table
+#undef pdqcb_table
+#undef tmax_mbxid
+#undef mbxinib_table
+#undef mbxcb_table
+#undef tmax_mtxid
+#undef mtxinib_table
+#undef mtxcb_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
+
+/*
+ *  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
+
+/*
+ *  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 _dtqinib_table
+#undef _dtqcb_table
+#undef _tmax_pdqid
+#undef _pdqinib_table
+#undef _pdqcb_table
+#undef _tmax_mbxid
+#undef _mbxinib_table
+#undef _mbxcb_table
+#undef _tmax_mtxid
+#undef _mtxinib_table
+#undef _mtxcb_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: /extension/mutex/kernel/mutex.c
===================================================================
--- /extension/mutex/kernel/mutex.c	(revision 7)
+++ /extension/mutex/kernel/mutex.c	(revision 7)
@@ -0,0 +1,623 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2005-2014 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$
+ */
+
+/*
+ *		¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹µ¡Çœ
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+#include "mutex.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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 */
+
+/*
+ *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¿ô
+ */
+#define tnum_mtx	((uint_t)(tmax_mtxid - TMIN_MTXID + 1))
+
+/*
+ *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹ID€«€é¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹ŽÉÍý¥Ö¥í¥Ã¥¯€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#define INDEX_MTX(mtxid)	((uint_t)((mtxid) - TMIN_MTXID))
+#define get_mtxcb(mtxid)	(&(mtxcb_table[INDEX_MTX(mtxid)]))
+
+/*
+ *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹ŽÉÍý¥Ö¥í¥Ã¥¯Ãæ€Îmutex_queue€Ø€Î¥Ý¥€¥ó¥¿€«€é¡€¥ß¥å¡Œ¥Æ¥Ã
+ *  ¥¯¥¹ŽÉÍý¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#define MTXCB_QUEUE(p_queue) \
+			((MTXCB *)(((char *) p_queue) - offsetof(MTXCB, mutex_queue)))
+
+/*
+ *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥×¥í¥È¥³¥ë€òÈœÃÇ€¹€ë¥Þ¥¯¥í
+ */
+#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)
+
+/*
+ *  ¥Õ¥Ã¥¯¥ë¡Œ¥Á¥óžÆœÐ€·ÍÑ€ÎÊÑ¿ô
+ */
+#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 */
+
+/* 
+ *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹µ¡Çœ€ÎœéŽü²œ
+ */
+#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 (i = 0; i < tnum_mtx; i++) {
+		p_mtxcb = &(mtxcb_table[i]);
+		queue_initialize(&(p_mtxcb->wait_queue));
+		p_mtxcb->p_mtxinib = &(mtxinib_table[i]);
+		p_mtxcb->p_loctsk = NULL;
+	}
+}
+
+#endif /* TOPPERS_mtxini */
+
+/* 
+ *  ŸåžÂÍ¥ÀèÅÙ°ãÈ¿€Î¥Á¥§¥Ã¥¯
+ */
+#ifdef TOPPERS_mtxchk
+
+bool_t
+mutex_check_ceilpri(TCB *p_tcb, uint_t bpriority)
+{
+	QUEUE	*p_queue;
+	MTXCB	*p_mtxcb;
+
+	/*
+	 *  ¥¿¥¹¥¯€¬¥í¥Ã¥¯€·€Æ€€€ëÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎÃæ€Ç¡€ŸåžÂÍ¥Àè
+	 *  ÅÙ€¬bpriority€è€ê€âÄã€€€â€Î€¬€¢€ì€Ð¡€false€òÊÖ€¹¡¥
+	 */
+	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;
+	}
+
+	/*
+	 *  ¥¿¥¹¥¯€¬Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯€òÂÔ€Ã€Æ€€€ëŸì¹ç€Ë¡€€œ
+	 *  €ÎŸåžÂÍ¥ÀèÅÙ€¬bpriority€è€ê€âÄã€¯€±€ì€Ð¡€false€òÊÖ€¹¡¥
+	 */
+	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€òÊÖ€¹¡¥
+	 */
+	return(true);
+}
+
+#endif /* TOPPERS_mtxchk */
+
+/* 
+ *  Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€€ë€«€Î¥Á¥§¥Ã¥¯
+ */
+#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 */
+
+/* 
+ *  ¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€Î·×»»
+ */
+#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 */
+
+/*
+ *  Í×ÁÇÍ¥ÀèÅÙ€¬Ÿå€¬€ë¡Ê€Þ€¿€ÏÁý€š€ë¡ËŸì¹ç€ÎžœºßÍ¥ÀèÅÙÊÑ¹¹œèÍý
+ */
+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);
+}
+
+/*
+ *  Í×ÁÇÍ¥ÀèÅÙ€¬²Œ€¬€ë¡Ê€Þ€¿€Ïžº€ë¡ËŸì¹ç€ÎžœºßÍ¥ÀèÅÙÊÑ¹¹œèÍý
+ */
+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);
+}
+
+/*
+ *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€¿Ÿì¹ç€ÎœèÍý
+ */
+Inline bool_t
+mutex_acquire(TCB *p_loctsk, MTXCB *p_mtxcb)
+{
+	p_mtxcb->p_loctsk = p_loctsk;
+	queue_insert_next(&(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);
+}
+
+/*
+ *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯²òœü
+ */
+#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 {
+		/*
+		 *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹ÂÔ€Á¥­¥å¡Œ€ÎÀèÆ¬¥¿¥¹¥¯¡Êp_tcb¡Ë€Ë¡€¥ß¥å¡Œ¥Æ¥Ã
+		 *  ¥¯¥¹€ò¥í¥Ã¥¯€µ€»€ë¡¥
+		 */
+		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 */
+
+/*
+ *  ¥¿¥¹¥¯€¬¥í¥Ã¥¯€·€Æ€€€ë€¹€Ù€Æ€Î¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯²òœü
+ */
+#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 */
+
+/*
+ *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯
+ */
+#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);
+		/*
+		 *  Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€¿Ÿì¹ç¡€p_runtsk€ÎÍ¥ÀèÅÙ
+		 *  €¬Ÿå€¬€ë²ÄÇœÀ­€¬€¢€ë€¬¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬É¬Í×€Ë€Ê€ë€³€È€Ï€Ê€€¡¥
+		 */
+		assert(!(p_runtsk != p_schedtsk && dspflg));
+		ercd = E_OK;
+	}
+	else if (p_mtxcb->p_loctsk == p_runtsk) {
+		ercd = E_OBJ;
+	}
+	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 */
+
+/*
+ *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯¡Ê¥Ý¡Œ¥ê¥ó¥°¡Ë
+ */
+#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);
+		/*
+		 *  Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€¿Ÿì¹ç¡€p_runtsk€ÎÍ¥ÀèÅÙ
+		 *  €¬Ÿå€¬€ë²ÄÇœÀ­€¬€¢€ë€¬¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬É¬Í×€Ë€Ê€ë€³€È€Ï€Ê€€¡¥
+		 */
+		assert(!(p_runtsk != p_schedtsk && dspflg));
+		ercd = E_OK;
+	}
+	else if (p_mtxcb->p_loctsk == p_runtsk) {
+		ercd = E_OBJ;
+	}
+	else {
+		ercd = E_TMOUT;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_PLOC_MTX_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ploc_mtx */
+
+/*
+ *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯¡Ê¥¿¥€¥à¥¢¥Š¥È€¢€ê¡Ë
+ */
+#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);
+		/*
+		 *  Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€¿Ÿì¹ç¡€p_runtsk€ÎÍ¥ÀèÅÙ
+		 *  €¬Ÿå€¬€ë²ÄÇœÀ­€¬€¢€ë€¬¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬É¬Í×€Ë€Ê€ë€³€È€Ï€Ê€€¡¥
+		 */
+		assert(!(p_runtsk != p_schedtsk && dspflg));
+		ercd = E_OK;
+	}
+	else if (p_mtxcb->p_loctsk == p_runtsk) {
+		ercd = E_OBJ;
+	}
+	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 */
+
+/*
+ *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯²òœü
+ */
+#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_OBJ;
+	}
+	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 */
+
+/*
+ *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎœéŽü²œ
+ */
+#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 */
+
+/*
+ *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎŸõÂÖ»²ŸÈ
+ */
+#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: /extension/mutex/kernel/mutex.h
===================================================================
--- /extension/mutex/kernel/mutex.h	(revision 7)
+++ /extension/mutex/kernel/mutex.h	(revision 7)
@@ -0,0 +1,165 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2005-2012 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹µ¡Çœ
+ */
+
+#ifndef TOPPERS_MUTEX_H
+#define TOPPERS_MUTEX_H
+
+#include "wait.h"
+
+/*
+ *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹œéŽü²œ¥Ö¥í¥Ã¥¯
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎœéŽü²œ¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬
+ *  ¡ÊWOBJINIB¡Ë€ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀžì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç¡€
+ *  ºÇœé€Î¥Õ¥£¡Œ¥ë¥É€¬¶ŠÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥
+ */
+typedef struct mutex_initialization_block {
+	ATR			mtxatr;			/* ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹Â°À­ */
+	uint_t		ceilpri;		/* ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎŸåžÂÍ¥ÀèÅÙ¡ÊÆâÉôÉœžœ¡Ë*/
+} MTXINIB;
+
+/*
+ *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹ŽÉÍý¥Ö¥í¥Ã¥¯
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬¡ÊWOBJCB¡Ë
+ *  €ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀžì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç¡€ºÇœé€Î2€Ä€Î
+ *  ¥Õ¥£¡Œ¥ë¥É€¬¶ŠÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥
+ */
+typedef struct mutex_control_block {
+	QUEUE		wait_queue;		/* ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹ÂÔ€Á¥­¥å¡Œ */
+	const MTXINIB *p_mtxinib;	/* œéŽü²œ¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿ */
+	TCB			*p_loctsk;		/* ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€€ë¥¿¥¹¥¯ */
+	QUEUE		mutex_queue;	/* ¥í¥Ã¥¯€·€Æ€€€ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥­¥å¡Œ */
+} MTXCB;
+
+/*
+ *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹ÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯€ÎÄêµÁ
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬
+ *  ¡ÊWINFO_WOBJ¡Ë€ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀžì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç¡€
+ *  €¹€Ù€Æ€Î¥Õ¥£¡Œ¥ë¥É€¬¶ŠÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥
+ */
+typedef struct mutex_waiting_information {
+	WINFO	winfo;			/* Éžœà€ÎÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯ */
+	MTXCB	*p_mtxcb;		/* ÂÔ€Ã€Æ€€€ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎŽÉÍý¥Ö¥í¥Ã¥¯ */
+} WINFO_MTX;
+
+/*
+ *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹ID€ÎºÇÂçÃÍ¡Êkernel_cfg.c¡Ë
+ */
+extern const ID	tmax_mtxid;
+
+/*
+ *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹œéŽü²œ¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern const MTXINIB	mtxinib_table[];
+
+/*
+ *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹ŽÉÍý¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern MTXCB	mtxcb_table[];
+
+/*
+ *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹ŽÉÍý¥Ö¥í¥Ã¥¯€«€é¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹ID€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#define	MTXID(p_mtxcb)	((ID)(((p_mtxcb) - mtxcb_table) + TMIN_MTXID))
+
+/*
+ *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹µ¡Çœ€ÎœéŽü²œ
+ */
+extern void	initialize_mutex(void);
+
+/*
+ *  ŸåžÂÍ¥ÀèÅÙ°ãÈ¿€Î¥Á¥§¥Ã¥¯
+ *
+ *  chg_pri€ÎÃæ€ÇŸåžÂÍ¥ÀèÅÙ°ãÈ¿€Î¥Á¥§¥Ã¥¯€ò¹Ô€Š€¿€á€ËÍÑ€€€ëŽØ¿ô€Ç€¢€ê¡€
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€¬¥í¥Ã¥¯€·€Æ€€€ëÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€È¡€
+ *  ¥í¥Ã¥¯€òÂÔ€Ã€Æ€€€ëÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎÃæ€Ç¡€ŸåžÂÍ¥ÀèÅÙ€¬
+ *  bpriority€è€ê€âÄã€€€â€Î€¬€¢€ì€Ðfalse€ò¡€€œ€Š€Ç€Ê€±€ì€Ðtrue€òÊÖ€¹¡¥
+ */
+extern bool_t	(*mtxhook_check_ceilpri)(TCB *p_tcb, uint_t bpriority);
+extern bool_t	mutex_check_ceilpri(TCB *p_tcb, uint_t bpriority);
+
+/* 
+ *  Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€€ë€«€Î¥Á¥§¥Ã¥¯
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€¬Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€€ì€Ð
+ *  true¡€€œ€Š€Ç€Ê€±€ì€Ðfalse€òÊÖ€¹¡¥
+ */
+extern bool_t	(*mtxhook_scan_ceilmtx)(TCB *p_tcb);
+extern bool_t	mutex_scan_ceilmtx(TCB *p_tcb);
+
+/* 
+ *  ¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€Î·×»»
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ¡Ê€ËÀßÄê€¹€Ù€­ÃÍ¡Ë€ò·×»»€¹€ë¡¥
+ */
+extern uint_t	mutex_calc_priority(TCB *p_tcb);
+
+/*
+ *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯²òœü
+ *
+ *  p_mtxcb€Ç»ØÄê€µ€ì€ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯²òœü€¹€ë¡¥¥í¥Ã¥¯²òœü€·€¿
+ *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Ë¡€¥í¥Ã¥¯ÂÔ€ÁŸõÂÖ€Î¥¿¥¹¥¯€¬€¢€ëŸì¹ç€Ë€Ï¡€€œ€Î¥¿¥¹¥¯
+ *  €Ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€µ€»€ë¡¥
+ */
+extern bool_t	mutex_release(MTXCB *p_mtxcb);
+
+/*
+ *  ¥¿¥¹¥¯€¬¥í¥Ã¥¯€·€Æ€€€ë€¹€Ù€Æ€Î¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯²òœü
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€Ë¡€€œ€ì€¬¥í¥Ã¥¯€·€Æ€€€ë€¹€Ù€Æ€Î¥ß¥å¡Œ¥Æ¥Ã¥¯
+ *  ¥¹€ò¥í¥Ã¥¯²òœü€µ€»€ë¡¥¥í¥Ã¥¯²òœü€·€¿¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Ë¡€¥í¥Ã¥¯ÂÔ€ÁŸõ
+ *  ÂÖ€Î¥¿¥¹¥¯€¬€¢€ëŸì¹ç€Ë€Ï¡€€œ€Î¥¿¥¹¥¯€Ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€µ€»€ë¡¥
+ *
+ *  €³€ÎŽØ¿ô€Ï¡€¥¿¥¹¥¯€ÎœªÎ»»þ€Ë»È€ï€ì€ë€â€Î€Ç€¢€ë€¿€á¡€p_tcb€Ç»ØÄê€µ€ì
+ *  €ë¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€òÊÑ¹¹€¹€ëœèÍý€Ï¹Ô€ï€Ê€€¡¥€¿€À€·¡€€³€ÎŽØ¿ô€ÎÃæ€ÇÂŸ
+ *  €Î¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€¬ÊÑ²œ€·¡€ŒÂ¹Ô€¹€Ù€­¥¿¥¹¥¯€¬ÊÑ€ï€ë€³€È€¬€¢€ë¡¥€œ€Î
+ *  €¿€á¡€€³€ÎŽØ¿ô€«€éÌá€Ã€¿žå€Ë¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬É¬Í×€«ÈœÊÌ€·€Æ¡€É¬Í×€Ê
+ *  Ÿì¹ç€Ë€Ï¥Ç¥£¥¹¥Ñ¥Ã¥Á€ò¹Ô€ï€Ê€±€ì€Ð€Ê€é€Ê€€¡¥
+ */
+extern bool_t	(*mtxhook_release_all)(TCB *p_tcb);
+extern bool_t	mutex_release_all(TCB *p_tcb);
+
+#endif /* TOPPERS_MUTEX_H */
Index: /extension/mutex/kernel/sys_manage.c
===================================================================
--- /extension/mutex/kernel/sys_manage.c	(revision 7)
+++ /extension/mutex/kernel/sys_manage.c	(revision 7)
@@ -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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥·¥¹¥Æ¥àŸõÂÖŽÉÍýµ¡Çœ
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯€ÎÍ¥Àèœç°Ì€Î²óÅŸ
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯€ÎÍ¥Àèœç°Ì€Î²óÅŸ¡ÊÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ */
+#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 */
+
+/*
+ *  ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯ID€Î»²ŸÈ
+ */
+#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 */
+
+/*
+ *  ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯ID€Î»²ŸÈ¡ÊÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ */
+#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 */
+
+/*
+ *  CPU¥í¥Ã¥¯ŸõÂÖ€Ø€Î°Ü¹Ô
+ */
+#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 */
+
+/*
+ *  CPU¥í¥Ã¥¯ŸõÂÖ€Ø€Î°Ü¹Ô¡ÊÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ */
+#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 */
+
+/*
+ *  CPU¥í¥Ã¥¯ŸõÂÖ€Î²òœü
+ *
+ *  CPU¥í¥Ã¥¯Ãæ€Ï¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬É¬Í×€È€Ê€ë¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€òžÆ€ÓœÐ€¹€³
+ *  €È€Ï€Ç€­€Ê€€€¿€á¡€CPU¥í¥Ã¥¯ŸõÂÖ€Î²òœü»þ€Ë¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã€òµ¯Æ°€¹€ë
+ *  É¬Í×€Ï€Ê€€¡¥
+ */
+#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 */
+
+/*
+ *  CPU¥í¥Ã¥¯ŸõÂÖ€Î²òœü¡ÊÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ *
+ *  CPU¥í¥Ã¥¯Ãæ€Ï¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬É¬Í×€È€Ê€ë¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€òžÆ€ÓœÐ€¹€³
+ *  €È€Ï€Ç€­€Ê€€€¿€á¡€CPU¥í¥Ã¥¯ŸõÂÖ€Î²òœü»þ€Ë¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã€Îµ¯Æ°€òÍ×
+ *  µá€¹€ëÉ¬Í×€Ï€Ê€€¡¥
+ */
+#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 */
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á€Î¶Ø»ß
+ */
+#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 */
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á€Îµö²Ä
+ */
+#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 */
+
+/*
+ *  ¥³¥ó¥Æ¥­¥¹¥È€Î»²ŸÈ
+ */
+#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 */
+
+/*
+ *  CPU¥í¥Ã¥¯ŸõÂÖ€Î»²ŸÈ
+ */
+#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 */
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ€Î»²ŸÈ
+ */
+#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 */
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥ÁÊÝÎ±ŸõÂÖ€Î»²ŸÈ
+ */
+#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 */
+
+/*
+ *  ¥«¡Œ¥Í¥ëÈóÆ°ºîŸõÂÖ€Î»²ŸÈ
+ */
+#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: /extension/mutex/kernel/task.c
===================================================================
--- /extension/mutex/kernel/task.c	(revision 7)
+++ /extension/mutex/kernel/task.c	(revision 7)
@@ -0,0 +1,491 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  $Id$
+ */
+
+/*
+ *		¥¿¥¹¥¯ŽÉÍý¥â¥ž¥å¡Œ¥ë
+ */
+
+#include "kernel_impl.h"
+#include "wait.h"
+#include "task.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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
+
+/*
+ *  ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯
+ */
+TCB		*p_runtsk;
+
+/*
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯
+ */
+TCB		*p_schedtsk;
+
+/*
+ *  ¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á¡¿¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óµ¯Æ°Í×µá¥Õ¥é¥°
+ */
+bool_t	reqflg;
+
+/*
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ
+ */
+bool_t	ipmflg;
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ
+ */
+bool_t	disdsp;
+
+/*
+ *  ¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á²ÄÇœŸõÂÖ
+ */
+bool_t	dspflg;
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ
+ */
+QUEUE	ready_queue[TNUM_TPRI];
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ¥µ¡Œ¥Á€Î€¿€á€Î¥Ó¥Ã¥È¥Þ¥Ã¥×
+ */
+uint16_t	ready_primap;
+
+/*
+ *  ¥¿¥¹¥¯ŽÉÍý¥â¥ž¥å¡Œ¥ë€ÎœéŽü²œ
+ */
+void
+initialize_task(void)
+{
+	uint_t	i, j;
+	TCB		*p_tcb;
+
+	p_runtsk = NULL;
+	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) {
+			(void) make_active(p_tcb);
+		}
+	}
+}
+
+#endif /* TOPPERS_tskini */
+
+/*
+ *  ¥Ó¥Ã¥È¥Þ¥Ã¥×¥µ¡Œ¥ÁŽØ¿ô
+ *
+ *  bitmapÆâ€Î1€Î¥Ó¥Ã¥È€ÎÆâ¡€ºÇ€â²Œ°Ì¡Ê±Š¡Ë€Î€â€Î€ò¥µ¡Œ¥Á€·¡€€œ€Î¥Ó¥Ã
+ *  ¥ÈÈÖ¹æ€òÊÖ€¹¡¥¥Ó¥Ã¥ÈÈÖ¹æ€Ï¡€ºÇ²Œ°Ì¥Ó¥Ã¥È€ò0€È€¹€ë¡¥bitmap€Ë0€ò»ØÄê
+ *  €·€Æ€Ï€Ê€é€Ê€€¡¥€³€ÎŽØ¿ô€Ç€Ï¡€bitmap€¬16¥Ó¥Ã¥È€Ç€¢€ë€³€È€ò²ŸÄê€·¡€
+ *  uint16_t·¿€È€·€Æ€€€ë¡¥
+ *
+ *  ¥Ó¥Ã¥È¥µ¡Œ¥ÁÌ¿Îá€ò»ý€Ä¥×¥í¥»¥Ã¥µ€Ç€Ï¡€¥Ó¥Ã¥È¥µ¡Œ¥ÁÌ¿Îá€ò»È€Š€è€Š€Ë
+ *  œñ€­ÄŸ€·€¿Êý€¬žúÎš€¬ÎÉ€€Ÿì¹ç€¬€¢€ë¡¥€³€Î€è€Š€ÊŸì¹ç€Ë€Ï¡€¥¿¡Œ¥²¥Ã¥È
+ *  °ÍÂžÉô€Ç¥Ó¥Ã¥È¥µ¡Œ¥ÁÌ¿Îá€ò»È€Ã€¿bitmap_search€òÄêµÁ€·¡€
+ *  OMIT_BITMAP_SEARCH€ò¥Þ¥¯¥íÄêµÁ€¹€ì€Ð€è€€¡¥€Þ€¿¡€¥Ó¥Ã¥È¥µ¡Œ¥ÁÌ¿Îá€Î
+ *  ¥µ¡Œ¥ÁÊýžþ€¬µÕ€Ê€É€ÎÍýÍ³€ÇÍ¥ÀèÅÙ€È¥Ó¥Ã¥È€È€ÎÂÐ±þ€òÊÑ¹¹€·€¿€€Ÿì¹ç€Ë
+ *  €Ï¡€PRIMAP_BIT€ò¥Þ¥¯¥íÄêµÁ€¹€ì€Ð€è€€¡¥
+ *
+ *  €Þ€¿¡€¥é¥€¥Ö¥é¥ê€Ëffs€¬€¢€ë€Ê€é¡€Œ¡€Î€è€Š€ËÄêµÁ€·€Æ¥é¥€¥Ö¥é¥êŽØ¿ô€ò
+ *  »È€Ã€¿Êý€¬žúÎš€¬ÎÉ€€²ÄÇœÀ­€â€¢€ë¡¥
+ *		#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 */
+
+/*
+ *  Í¥ÀèÅÙ¥Ó¥Ã¥È¥Þ¥Ã¥×€¬¶õ€«€Î¥Á¥§¥Ã¥¯
+ */
+Inline bool_t
+primap_empty(void)
+{
+	return(ready_primap == 0U);
+}
+
+/*
+ *  Í¥ÀèÅÙ¥Ó¥Ã¥È¥Þ¥Ã¥×€Î¥µ¡Œ¥Á
+ */
+Inline uint_t
+primap_search(void)
+{
+	return(bitmap_search(ready_primap));
+}
+
+/*
+ *  Í¥ÀèÅÙ¥Ó¥Ã¥È¥Þ¥Ã¥×€Î¥»¥Ã¥È
+ */
+Inline void
+primap_set(uint_t pri)
+{
+	ready_primap |= PRIMAP_BIT(pri);
+}
+
+/*
+ *  Í¥ÀèÅÙ¥Ó¥Ã¥È¥Þ¥Ã¥×€Î¥¯¥ê¥¢
+ */
+Inline void
+primap_clear(uint_t pri)
+{
+	ready_primap &= ~PRIMAP_BIT(pri);
+}
+
+/*
+ *  ºÇ¹âÍ¥Àèœç°Ì¥¿¥¹¥¯€Î¥µ¡Œ¥Á
+ */
+#ifdef TOPPERS_tsksched
+
+TCB *
+search_schedtsk(void)
+{
+	uint_t	schedpri;
+
+	schedpri = primap_search();
+	return((TCB *)(ready_queue[schedpri].p_next));
+}
+
+#endif /* TOPPERS_tsksched */
+
+/*
+ *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€¹€ë€Î€Ï¡€ŒÂ¹Ô€Ç€­€ë¥¿¥¹¥¯€¬€Ê€«€Ã€¿Ÿì¹ç
+ *  €È¡€p_tcb€ÎÍ¥ÀèÅÙ€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€è€ê€â¹â€€Ÿì¹ç€Ç€¢
+ *  €ë¡¥
+ */
+#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 */
+
+/*
+ *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€«€éÂŸ€ÎŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€¹€ë€Î€Ï¡€p_tcb€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€Ç
+ *  €¢€Ã€¿Ÿì¹ç€Ç€¢€ë¡¥p_tcb€ÈÆ±€žÍ¥ÀèÅÙ€Î¥¿¥¹¥¯€¬ÂŸ€Ë€¢€ëŸì¹ç€Ï¡€p_tcb
+ *  €ÎŒ¡€Î¥¿¥¹¥¯€¬ºÇ¹âÍ¥Àèœç°Ì€Ë€Ê€ë¡¥€œ€Š€Ç€Ê€€Ÿì¹ç€Ï¡€¥ì¥Ç¥£¥­¥å¡Œ€ò
+ *  ¥µ¡Œ¥Á€¹€ëÉ¬Í×€¬€¢€ë¡¥
+ */
+#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 */
+
+/*
+ *  µÙ»ßŸõÂÖ€Ø€ÎÁ«°Ü
+ */
+#ifdef TOPPERS_tskdmt
+
+void
+make_dormant(TCB *p_tcb)
+{
+	p_tcb->tstat = TS_DORMANT;
+	p_tcb->bpriority = p_tcb->p_tinib->ipriority;
+	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 */
+
+/*
+ *  µÙ»ßŸõÂÖ€«€éŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ø€ÎÁ«°Ü
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€ÎÊÑ¹¹
+ *
+ *  ¥¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂÖ€ÎŸì¹ç€Ë€Ï¡€¥ì¥Ç¥£¥­¥å¡Œ€ÎÃæ€Ç€Î°ÌÃÖ€òÊÑ¹¹€¹
+ *  €ë¡¥¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€Á¥­¥å¡Œ€ÎÃæ€ÇÂÔ€ÁŸõÂÖ€Ë€Ê€Ã€Æ€€€ëŸì¹ç€Ë€Ï¡€ÂÔ
+ *  €Á¥­¥å¡Œ€ÎÃæ€Ç€Î°ÌÃÖ€òÊÑ¹¹€¹€ë¡¥
+ *
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€¹€ë€Î€Ï¡€(1) p_tcb€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹
+ *  ¥¯€Ç€¢€Ã€Æ¡€€œ€ÎÍ¥ÀèÅÙ€ò²Œ€²€¿Ÿì¹ç¡€(2) p_tcb€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹
+ *  ¥¯€Ç€Ï€Ê€¯¡€ÊÑ¹¹žå€ÎÍ¥ÀèÅÙ€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€è€ê€â¹â€€
+ *  Ÿì¹ç€Ç€¢€ë¡¥(1)€ÎŸì¹ç€Ë€Ï¡€¥ì¥Ç¥£¥­¥å¡Œ€ò¥µ¡Œ¥Á€¹€ëÉ¬Í×€¬€¢€ë¡¥
+ */
+#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)) {
+		/*
+		 *  ¥¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂÖ€ÎŸì¹ç
+		 */
+		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)) {
+			/*
+			 *  ¥¿¥¹¥¯€¬¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉô
+			 *  Ê¬¡ÊWOBJCB¡Ë€ÎÂÔ€Á¥­¥å¡Œ€Ë€Ä€Ê€¬€ì€Æ€€€ëŸì¹ç
+			 */
+			wobj_change_priority(((WINFO_WOBJ *)(p_tcb->p_winfo))->p_wobjcb,
+																	p_tcb);
+		}
+	}
+	return(false);
+}
+
+#endif /* TOPPERS_tskpri */
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ€Î²óÅŸ
+ *
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€¹€ë€Î€Ï¡€ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€¬¥¿¥¹¥¯¥­
+ *  ¥å¡Œ€ÎËöÈø€Ë°ÜÆ°€·€¿Ÿì¹ç€Ç€¢€ë¡¥
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎžÆœÐ€·
+ *
+ *  ASP¥«¡Œ¥Í¥ë€Ç€Ï¡€¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óÆâ€ÇCPU¥í¥Ã¥¯ŸõÂÖ€ËÁ«°Ü€·¡€
+ *  žµ€ÎŸõÂÖ€ËÌá€µ€º€Ë¥ê¥¿¡Œ¥ó€·€¿Ÿì¹ç¡€¥«¡Œ¥Í¥ë€¬žµ€ÎŸõÂÖ€ËÌá€¹¡¥
+ */
+#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€òžÆ€ÓœÐ€¹œèÍý€Ï¡€ÁêžßºÆµ¢žÆœÐ€·€Ë€Ê€Ã€Æ
+			 *  €€€ë€¬¡€dispatch€òžÆ€ÖÁ°€Ëp_runtsk->enatex€òfalse€Ë€·€Æ
+			 *  €ª€±€Ð»ÙŸã€¬€Ê€€¡¥€œ€ÎÍýÍ³€Ë€Ä€€€Æ€Ï¡€¡ÖTOPPERS/ASP ¥«¡Œ
+			 *  ¥Í¥ë Àß·×¥á¥â¡×€ò»²ŸÈ€Î€³€È¡¥
+			 */
+			dispatch();
+		}
+	} while (p_runtsk->texptn != 0U);
+	p_runtsk->enatex = true;
+}
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€Îµ¯Æ°
+ */
+#ifndef OMIT_CALLTEX
+
+void
+calltex(void)
+{
+	if (p_runtsk->enatex && p_runtsk->texptn != 0U && ipmflg) {
+		call_texrtn();
+	}
+}
+
+#endif /* OMIT_CALLTEX */
+#endif /* TOPPERS_tsktex */
Index: /extension/mutex/kernel/task.h
===================================================================
--- /extension/mutex/kernel/task.h	(revision 7)
+++ /extension/mutex/kernel/task.h	(revision 7)
@@ -0,0 +1,490 @@
+/*
+ *  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-2012 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  $Id$
+ */
+
+/*
+ *		¥¿¥¹¥¯ŽÉÍý¥â¥ž¥å¡Œ¥ë
+ */
+
+#ifndef TOPPERS_TASK_H
+#define TOPPERS_TASK_H
+
+#include <queue.h>
+#include "time_event.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#ifndef LOG_TSKSTAT
+#define LOG_TSKSTAT(p_tcb)
+#endif /* LOG_TSKSTAT */
+
+/*
+ *  ¥¿¥¹¥¯Í¥ÀèÅÙ€ÎÆâÉôÉœžœ¡Š³°ÉôÉœžœÊÑŽ¹¥Þ¥¯¥í
+ */
+#define INT_PRIORITY(x)		((uint_t)((x) - TMIN_TPRI))
+#define EXT_TSKPRI(x)		((PRI)(x) + TMIN_TPRI)
+
+/*
+ *  ¥¿¥¹¥¯ŸõÂÖ€ÎÆâÉôÉœžœ
+ *
+ *  TCBÃæ€Î¥¿¥¹¥¯ŸõÂÖ€Ç€Ï¡€ŒÂ¹ÔŸõÂÖ¡ÊRUNNING¡Ë€ÈŒÂ¹Ô²ÄÇœŸõÂÖ¡ÊREADY¡Ë
+ *  €Ï¶èÊÌ€·€Ê€€¡¥ÎŸŸõÂÖ€òÁíŸÎ€·€Æ¡€ŒÂ¹Ô€Ç€­€ëŸõÂÖ¡ÊRUNNABLE¡Ë€ÈžÆ€Ö¡¥
+ *  ÆóœÅÂÔ€ÁŸõÂÖ€Ï¡€(TS_WAITING | TS_SUSPENDED)€ÇÉœ€¹¡¥TS_WAIT_???€ÏÂÔ
+ *  €ÁÍ×°ø€òÉœ€·¡€ÂÔ€ÁŸõÂÖ¡ÊÆóœÅÂÔ€ÁŸõÂÖ€òŽÞ€à¡Ë€ÎŸì¹ç€Ë€Î€ßÀßÄê€¹€ë¡¥
+ */
+#define TS_DORMANT		0x00U			/* µÙ»ßŸõÂÖ */
+#define TS_RUNNABLE		0x01U			/* ŒÂ¹Ô€Ç€­€ëŸõÂÖ */
+#define TS_WAITING		0x02U			/* ÂÔ€ÁŸõÂÖ */
+#define TS_SUSPENDED	0x04U			/* ¶¯À©ÂÔ€ÁŸõÂÖ */
+
+#define TS_WAIT_DLY		(0x00U << 3)	/* »þŽÖ·Ð²áÂÔ€Á */
+#define TS_WAIT_SLP		(0x01U << 3)	/* µ¯Ÿ²ÂÔ€Á */
+#define TS_WAIT_RDTQ	(0x02U << 3)	/* ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TS_WAIT_RPDQ	(0x03U << 3)	/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TS_WAIT_SEM		(0x04U << 3)	/* ¥»¥Þ¥Õ¥©»ñž»€Î³ÍÆÀÂÔ€Á */
+#define TS_WAIT_FLG		(0x05U << 3)	/* ¥€¥Ù¥ó¥È¥Õ¥é¥°ÂÔ€Á */
+#define TS_WAIT_SDTQ	(0x06U << 3)	/* ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®ÂÔ€Á */
+#define TS_WAIT_SPDQ	(0x07U << 3)	/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®ÂÔ€Á */
+#define TS_WAIT_MBX		(0x08U << 3)	/* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TS_WAIT_MPF		(0x09U << 3)	/* žÇÄêÄ¹¥á¥â¥ê¥Ö¥í¥Ã¥¯€Î³ÍÆÀÂÔ€Á */
+#define TS_WAIT_MTX		(0x0aU << 3)	/* ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯ÂÔ€Á */
+
+/*
+ *  ¥¿¥¹¥¯ŸõÂÖÈœÊÌ¥Þ¥¯¥í
+ *
+ *  TSTAT_DORMANT€Ï¥¿¥¹¥¯€¬µÙ»ßŸõÂÖ€Ç€¢€ë€«€É€Š€«€ò¡€TSTAT_RUNNABLE€Ï
+ *  ¥¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ç€¢€ë€«€É€Š€«€òÈœÊÌ€¹€ë¡¥TSTAT_WAITING€ÏÂÔ
+ *  €ÁŸõÂÖ€ÈÆóœÅÂÔ€ÁŸõÂÖ€Î€€€º€ì€«€Ç€¢€ë€«€É€Š€«€ò¡€TSTAT_SUSPENDED€Ï
+ *  ¶¯À©ÂÔ€ÁŸõÂÖ€ÈÆóœÅÂÔ€ÁŸõÂÖ€Î€€€º€ì€«€Ç€¢€ë€«€É€Š€«€òÈœÊÌ€¹€ë¡¥
+ */
+#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)
+
+/*
+ *  ¥¿¥¹¥¯ÂÔ€ÁÍ×°øÈœÊÌ¥Þ¥¯¥í
+ *
+ *  TSTAT_WAIT_SLP€Ï¥¿¥¹¥¯€¬µ¯Ÿ²ÂÔ€Á€Ç€¢€ë€«€É€Š€«€ò¡€TSTAT_WAIT_WOBJ
+ *  €Ï¥¿¥¹¥¯€¬Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ËÂÐ€¹€ëÂÔ€Á€Ç€¢€ë€«¡ÊžÀ€€Ž¹€š€ë€È¡€
+ *  Æ±ŽüÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€Á¥­¥å¡Œ€Ë€Ä€Ê€¬€ì€Æ€€€ë€«¡Ë€É€Š€«€òÈœÊÌ€¹
+ *  €ë¡¥€Þ€¿¡€TSTAT_WAIT_WOBJCB€Ï¥¿¥¹¥¯€¬Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý
+ *  ¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬¡ÊWOBJCB¡Ë€ÎÂÔ€Á¥­¥å¡Œ€Ë€Ä€Ê€¬€ì€Æ€€€ë€«€É€Š€«€ò
+ *  ÈœÊÌ€¹€ë¡¥
+ *
+ *  TSTAT_WAIT_SLP€Ï¡€Ç€°Õ€Î¥¿¥¹¥¯ŸõÂÖ€ÎÃæ€«€é¡€¥¿¥¹¥¯€¬µ¯Ÿ²ÂÔ€Á€Ç€¢€ë
+ *  €³€È€òÈœÊÌ€Ç€­€ë¡¥€¹€Ê€ï€Á¡€TSTAT_WAITING€Ë€è€êÂÔ€ÁŸõÂÖ€Ç€¢€ë€³€È€ò
+ *  ÈœÊÌ€»€º€Ë¡€TSTAT_SLP€À€±€òÍÑ€€€Æµ¯Ÿ²ÂÔ€ÁŸõÂÖ€Ç€¢€ë€³€È€òÈœÊÌ€Ç€­€ë¡¥
+ *  €³€ì€òžúÎšÅª€ËŒÂžœ€¹€ë€¿€á€Ë¡€TS_WAIT_SLP€ÎÃÍ€ò¡€(0x00U << 3)€Ç€Ï€Ê
+ *  €¯(0x01U << 3)€È€·€Æ€€€ë¡¥€œ€Î€¿€á¡€¥¿¥¹¥¯€¬»þŽÖ·Ð²áÂÔ€ÁŸõÂÖ€Ç€¢€ë
+ *  €³€È€òÈœÊÌ€¹€ë€¿€á€ÎTSTAT_WAIT_DLY€ò¡€TSTAT_WAIT_SLP€ÈÆ±ÍÍ€ÎÊýË¡€Ç
+ *  ŒÂžœ€¹€ë€³€È€Ï€Ç€­€Ê€€¡¥
+ */
+#define TS_WAIT_MASK	(0x0fU << 3)	/* ÂÔ€ÁÍ×°ø€ÎŒèœÐ€·¥Þ¥¹¥¯ */
+
+#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)
+
+/*
+ *  ÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯¡ÊWINFO¡Ë€ÎÄêµÁ
+ *
+ *  ¥¿¥¹¥¯€¬ÂÔ€ÁŸõÂÖ€ÎŽÖ€Ï¡€TCB€ª€è€Ó€œ€Îp_winfo€Ç»Ø€µ€ì€ëWINFO€òŒ¡€Î
+ *  €è€Š€ËÀßÄê€·€Ê€±€ì€Ð€Ê€é€Ê€€¡¥
+ *
+ *  (a) TCB€Î¥¿¥¹¥¯ŸõÂÖ€òÂÔ€ÁŸõÂÖ¡ÊTS_WAITING¡Ë€Ë€¹€ë¡¥€œ€ÎºÝ€Ë¡€ÂÔ€Á
+ *  Í×°ø¡ÊTS_WAIT_???¡Ë€âÀßÄê€¹€ë¡¥
+ *
+ *  (b) ¥¿¥€¥à¥¢¥Š¥È€òŽÆ»ë€¹€ë€¿€á€Ë¡€¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯€òÅÐÏ¿€¹€ë¡¥
+ *  ÅÐÏ¿€¹€ë¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯€Ï¡€ÂÔ€Á€ËÆþ€ë¥µ¡Œ¥Ó¥¹¥³¡Œ¥ëœèÍýŽØ¿ô
+ *  €Î¥í¡Œ¥«¥ëÊÑ¿ô€È€·€Æ³ÎÊÝ€·¡€€œ€ì€Ø€Î¥Ý¥€¥ó¥¿€òWINFO€Îp_tmevtb€Ëµ­
+ *  ²±€¹€ë¡¥¥¿¥€¥à¥¢¥Š¥È€ÎŽÆ»ë€¬É¬Í×€Ê€€Ÿì¹ç¡Ê±Êµ×ÂÔ€Á€ÎŸì¹ç¡Ë€Ë€Ï¡€
+ *  p_tmevtb€òNULL€Ë€¹€ë¡¥
+ *
+ *  Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ËÂÐ€¹€ëÂÔ€ÁŸõÂÖ€ÎŸì¹ç€Ë€Ï¡€Éžœà€ÎWINFO€Ë
+ *  p_wobjcb¥Õ¥£¡Œ¥ë¥É€òÄÉ²Ã€·€¿¹œÂ€ÂÎ¡ÊWINFO_WOBJ¡€wait.h€ÇÄêµÁ¡Ë€ò»È
+ *  €Š¡¥€Þ€¿¡€°Ê²Œ€Î(c)¡Á(e)€ÎÀßÄê€ò¹Ô€ŠÉ¬Í×€¬€¢€ë¡¥Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§
+ *  ¥¯¥È€ËŽØ·ž€·€Ê€€ÂÔ€Á¡Êµ¯Ÿ²ÂÔ€Á¡€»þŽÖ·Ð²áÂÔ€Á¡Ë€ÎŸì¹ç€Ë€Ï¡€(c)¡Á(e)
+ *  €ÏÉ¬Í×€Ê€€¡¥
+ *
+ *  (c) TCB€òÂÔ€ÁÂÐŸÝ€ÎÆ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€Á¥­¥å¡Œ€Ë€Ä€Ê€°¡¥ÂÔ
+ *  €Á¥­¥å¡Œ€Ë€Ä€Ê€°€¿€á€Ë¡€task_queue€ò»È€Š¡¥
+ *
+ *  (d) ÂÔ€ÁÂÐŸÝ€ÎÆ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿€ò¡€
+ *  WINFO_WOBJ€Îp_wobjcb€Ëµ­²±€¹€ë¡¥
+ *
+ *  (e) ÂÔ€ÁÂÐŸÝ€ÎÆ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€Ë°ÍÂž€·€Æµ­²±€¹€ë€³€È€¬É¬Í×€Ê
+ *  ŸðÊó€¬€¢€ëŸì¹ç€Ë€Ï¡€WINFO_WOBJ€ËÉ¬Í×€ÊŸðÊó€Î€¿€á€Î¥Õ¥£¡Œ¥ë¥É€òÄÉ²Ã
+ *  €·€¿¹œÂ€ÂÎ€òÄêµÁ€·¡€WINFO_WOBJ€ÎÂå€ï€ê€ËÍÑ€€€ë¡¥
+ *
+ *  ÂÔ€ÁŸõÂÖ€ò²òœü€¹€ëºÝ€Ë€Ï¡€ÂÔ€Á²òœü€·€¿¥¿¥¹¥¯€ËÂÐ€¹€ëÊÖÃÍ€òWINFO€Î
+ *  wercd€ËÀßÄê€¹€ë¡¥wercd€¬É¬Í×€Ê€Î€ÏÂÔ€Á²òœü°Ê¹ß€Ç€¢€ë€Î€ËÂÐ€·€Æ¡€
+ *  p_tmevtb€ÏÂÔ€Á²òœüžå€ÏÉ¬Í×€Ê€€€¿€á¡€¥á¥â¥êÀáÌó€Î€¿€á€Ë¶ŠÍÑÂÎ€ò»È€Ã
+ *  €Æ€€€ë¡¥€œ€Î€¿€á¡€wercd€Ø¥š¥é¡Œ¥³¡Œ¥É€òÀßÄê€¹€ë€Î€Ï¡€¥¿¥€¥à¥€¥Ù¥ó¥È
+ *  ¥Ö¥í¥Ã¥¯€òÅÐÏ¿²òœü€·€¿žå€Ë€·€Ê€±€ì€Ð€Ê€é€Ê€€¡¥
+ */
+typedef union waiting_information {
+	ER		wercd;			/* ÂÔ€Á²òœü»þ€Î¥š¥é¡Œ¥³¡Œ¥É */
+	TMEVTB	*p_tmevtb;		/* ÂÔ€ÁŸõÂÖÍÑ€Î¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯ */
+} WINFO;
+
+/*
+ *  ¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯
+ *
+ *  ¥¿¥¹¥¯€ËŽØ€¹€ëŸðÊó€ò¡€ÃÍ€¬ÊÑ€ï€é€Ê€€€¿€á€ËROM€ËÃÖ€±€ëÉôÊ¬¡Ê¥¿¥¹¥¯
+ *  œéŽü²œ¥Ö¥í¥Ã¥¯¡Ë€È¡€ÃÍ€¬ÊÑ²œ€¹€ë€¿€á€ËRAM€ËÃÖ€«€Ê€±€ì€Ð€Ê€é€Ê€€Éô
+ *  Ê¬¡Ê¥¿¥¹¥¯ŽÉÍý¥Ö¥í¥Ã¥¯¡€TCB¡Ë€ËÊ¬Î¥€·¡€TCBÆâ€ËÂÐ±þ€¹€ë¥¿¥¹¥¯œéŽü²œ
+ *  ¥Ö¥í¥Ã¥¯€ò»Ø€¹¥Ý¥€¥ó¥¿€òÆþ€ì€ë¡¥¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯Æâ€ËÂÐ±þ€¹€ë
+ *  TCB€ò»Ø€¹¥Ý¥€¥ó¥¿€òÆþ€ì€ëÊýË¡€ÎÊý€¬¡€RAM€ÎÀáÌó€ÎŽÑÅÀ€«€é€ÏËŸ€Þ€·€€
+ *  €¬¡€ŒÂ¹ÔžúÎš€¬°­€¯€Ê€ë€¿€á€ËºÎÍÑ€·€Æ€€€Ê€€¡¥ÂŸ€Î¥ª¥Ö¥ž¥§¥¯¥È€Ë€Ä€€
+ *  €Æ€âÆ±ÍÍ€Ë°·€Š¡¥
+ *
+ *  ¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯€Ë€Ï¡€DEF_TEX€ÇÄêµÁ€µ€ì€ë¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á
+ *  ¥ó€ËŽØ€¹€ëŸðÊó€âŽÞ€à¡¥
+ */
+typedef struct task_initialization_block {
+	ATR			tskatr;			/* ¥¿¥¹¥¯Â°À­ */
+	intptr_t	exinf;			/* ¥¿¥¹¥¯€Î³ÈÄ¥ŸðÊó */
+	TASK		task;			/* ¥¿¥¹¥¯€Îµ¯Æ°ÈÖÃÏ */
+	uint_t		ipriority;		/* ¥¿¥¹¥¯€Îµ¯Æ°»þÍ¥ÀèÅÙ¡ÊÆâÉôÉœžœ¡Ë */
+
+#ifdef USE_TSKINICTXB
+	TSKINICTXB	tskinictxb;		/* ¥¿¥¹¥¯œéŽü²œ¥³¥ó¥Æ¥­¥¹¥È¥Ö¥í¥Ã¥¯ */
+#else /* USE_TSKINICTXB */
+	SIZE		stksz;			/* ¥¹¥¿¥Ã¥¯ÎÎ°è€Î¥µ¥€¥º¡ÊŽÝ€á€¿ÃÍ¡Ë */
+	void		*stk;			/* ¥¹¥¿¥Ã¥¯ÎÎ°è€ÎÀèÆ¬ÈÖÃÏ */
+#endif /* USE_TSKINICTXB */
+
+	ATR			texatr;			/* ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óÂ°À­ */
+	TEXRTN		texrtn;			/* ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€Îµ¯Æ°ÈÖÃÏ */
+} TINIB;
+
+/*
+ *  TCBÃæ€Î¥Õ¥£¡Œ¥ë¥É€Î¥Ó¥Ã¥ÈÉý€ÎÄêµÁ
+ *
+ *  ¥×¥í¥»¥Ã¥µ€Ë€è€Ã€Æ€Ï¡€TCBÃæ€Î¥Õ¥£¡Œ¥ë¥É€Î¥Ó¥Ã¥ÈÉý€Ç¥á¥â¥ê»ÈÍÑÎÌ€È
+ *  À­Çœ€¬¥È¥ì¡Œ¥É¥ª¥Õ€Ë€Ê€ë€¿€á¡€¥¿¡Œ¥²¥Ã¥È°ÍÂž€Ë¥Õ¥£¡Œ¥ë¥É€Î¥Ó¥Ã¥ÈÉý
+ *  €òÊÑ¹¹€¹€ë€³€È€òµö€·€Æ€€€ë¡¥
+ */
+#ifndef TBIT_TCB_PRIORITY
+#define	TBIT_TCB_PRIORITY		8		/* priority¥Õ¥£¡Œ¥ë¥É€Î¥Ó¥Ã¥ÈÉý */
+#endif /* TBIT_TCB_PRIORITY */
+
+/*
+ *  ¥¿¥¹¥¯ŽÉÍý¥Ö¥í¥Ã¥¯¡ÊTCB¡Ë
+ *
+ *  ASP¥«¡Œ¥Í¥ë€Ç€Ï¡€¥¿¥¹¥¯€Îµ¯Æ°Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô€ÎºÇÂçÃÍ¡ÊTMAX_ACTCNT¡Ë
+ *  €Èµ¯Ÿ²Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô€ÎºÇÂçÃÍ¡ÊTMAX_WUPCNT¡Ë€Ï1€ËžÇÄê€µ€ì€Æ€€€ë
+ *  €¿€á¡€¥­¥å¡Œ¥€¥ó¥°€µ€ì€Æ€€€ë€«€É€Š€«€Î¿¿µ¶ÃÍ€ÇÉœžœ€¹€ë€³€È€¬€Ç€­€ë¡¥
+ *  €Þ€¿¡€¶¯À©ÂÔ€ÁÍ×µá¥Í¥¹¥È¿ô€ÎºÇÂçÃÍ¡ÊTMAX_SUSCNT¡Ë€¬1€ËžÇÄê€µ€ì€Æ€€
+ *  €ë€Î€Ç¡€¶¯À©ÂÔ€ÁÍ×µá¥Í¥¹¥È¿ô¡Êsuscnt¡Ë€ÏÉ¬Í×€Ê€€¡¥
+ *
+ *  TCB€Î€€€¯€Ä€«€Î¥Õ¥£¡Œ¥ë¥É€Ï¡€ÆÃÄê€Î¥¿¥¹¥¯ŸõÂÖ€Ç€Î€ßÍ­žú€ÊÃÍ€òÊÝ»ý€·¡€
+ *  €œ€ì°Ê³°€ÎŸì¹ç€ÏÃÍ€¬ÊÝŸÚ€µ€ì€Ê€€¡Ê€è€Ã€Æ¡€»²ŸÈ€·€Æ€Ï€Ê€é€Ê€€¡Ë¡¥³Æ
+ *  ¥Õ¥£¡Œ¥ë¥É€¬Í­žú€ÊÃÍ€òÊÝ»ý€¹€ëŸò·ï€ÏŒ¡€ÎÄÌ€ê¡¥
+ *
+ *  ¡ŠœéŽü²œžå€ÏŸï€ËÍ­žú¡§
+ *  		p_tinib¡€tstat¡€actque
+ *  ¡ŠµÙ»ßŸõÂÖ°Ê³°€ÇÍ­žú¡ÊµÙ»ßŸõÂÖ€Ç€ÏœéŽüÃÍ€Ë€Ê€Ã€Æ€€€ë¡Ë¡§
+ *  		bpriority¡€priority¡€wupque¡€enatex¡€texptn¡€mutex_queue
+ *  ¡ŠÂÔ€ÁŸõÂÖ¡ÊÆóœÅÂÔ€ÁŸõÂÖ€òŽÞ€à¡Ë€ÇÍ­žú¡§
+ *  		p_winfo
+ *  ¡ŠŒÂ¹Ô€Ç€­€ëŸõÂÖ€ÈÆ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ËÂÐ€¹€ëÂÔ€ÁŸõÂÖ€ÇÍ­žú¡§
+ *  		task_queue
+ *  ¡ŠŒÂ¹Ô²ÄÇœŸõÂÖ¡€ÂÔ€ÁŸõÂÖ¡€¶¯À©ÂÔ€ÁŸõÂÖ¡€ÆóœÅÂÔ€ÁŸõÂÖ€ÇÍ­žú¡§
+ *  		tskctxb
+ */
+typedef struct task_control_block {
+	QUEUE			task_queue;		/* ¥¿¥¹¥¯¥­¥å¡Œ */
+	const TINIB		*p_tinib;		/* œéŽü²œ¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿ */
+
+#ifdef UINT8_MAX
+	uint8_t			tstat;			/* ¥¿¥¹¥¯ŸõÂÖ¡ÊÆâÉôÉœžœ¡Ë*/
+#else /* UINT8_MAX */
+	BIT_FIELD_UINT	tstat : 8;		/* ¥¿¥¹¥¯ŸõÂÖ¡ÊÆâÉôÉœžœ¡Ë*/
+#endif /* UINT8_MAX */
+#if defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8)
+	uint8_t			bpriority;		/* ¥Ù¡Œ¥¹Í¥ÀèÅÙ¡ÊÆâÉôÉœžœ¡Ë*/
+	uint8_t			priority;		/* žœºß€ÎÍ¥ÀèÅÙ¡ÊÆâÉôÉœžœ¡Ë*/
+#else /* defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8) */
+	BIT_FIELD_UINT	bpriority : TBIT_TCB_PRIORITY;
+									/* ¥Ù¡Œ¥¹Í¥ÀèÅÙ¡ÊÆâÉôÉœžœ¡Ë*/
+	BIT_FIELD_UINT	priority : TBIT_TCB_PRIORITY;
+									/* žœºß€ÎÍ¥ÀèÅÙ¡ÊÆâÉôÉœžœ¡Ë*/
+#endif /* defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8) */
+	BIT_FIELD_BOOL	actque : 1;		/* µ¯Æ°Í×µá¥­¥å¡Œ¥€¥ó¥° */
+	BIT_FIELD_BOOL	wupque : 1;		/* µ¯Ÿ²Í×µá¥­¥å¡Œ¥€¥ó¥° */
+	BIT_FIELD_BOOL	enatex : 1;		/* ¥¿¥¹¥¯Îã³°œèÍýµö²ÄŸõÂÖ */
+
+	TEXPTN			texptn;			/* ÊÝÎ±Îã³°Í×°ø */
+	WINFO			*p_winfo;		/* ÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿ */
+	QUEUE			mutex_queue;	/* ¥í¥Ã¥¯€·€Æ€€€ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥­¥å¡Œ */
+	TSKCTXB			tskctxb;		/* ¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È¥Ö¥í¥Ã¥¯ */
+} TCB;
+
+/*
+ *  ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯
+ *
+ *  ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯¡Ê¡á¥×¥í¥»¥Ã¥µ€¬¥³¥ó¥Æ¥­¥¹¥È€ò»ý€Ã€Æ€€€ë¥¿¥¹¥¯¡Ë€Î
+ *  TCB€ò»Ø€¹¥Ý¥€¥ó¥¿¡¥ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€¬€Ê€€Ÿì¹ç€ÏNULL€Ë€¹€ë¡¥
+ *
+ *  ¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎœèÍýÃæ€Ç¡€Œ«¥¿¥¹¥¯¡Ê¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€òžÆ€ÓœÐ€·€¿¥¿¥¹
+ *  ¥¯¡Ë€ËŽØ€¹€ëŸðÊó€ò»²ŸÈ€¹€ëŸì¹ç€Ïp_runtsk€ò»È€Š¡¥p_runtsk€òœñ€­Ž¹€š
+ *  €ë€Î€Ï¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã¡Ê€ÈœéŽü²œœèÍý¡Ë€Î€ß€Ç€¢€ë¡¥
+ */
+extern TCB	*p_runtsk;
+
+/*
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯
+ *
+ *  ŒÂ¹Ô€Ç€­€ë¥¿¥¹¥¯€ÎÃæ€ÇºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ÎTCB€ò»Ø€¹¥Ý¥€¥ó¥¿¡¥ŒÂ
+ *  ¹Ô€Ç€­€ë¥¿¥¹¥¯€¬€Ê€€Ÿì¹ç€ÏNULL€Ë€¹€ë¡¥
+ *
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ€Ê€É¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬ÊÝÎ±€µ€ì€Æ€€€ëŽÖ€Ïp_runtsk
+ *  €È°ìÃ×€·€Æ€€€ë€È€ÏžÂ€é€Ê€€¡¥
+ */
+extern TCB	*p_schedtsk;
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¡¿¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óµ¯Æ°Í×µá¥Õ¥é¥°
+ *
+ *  ³ä¹þ€ß¥Ï¥ó¥É¥é¡¿CPUÎã³°¥Ï¥ó¥É¥é€ÎœÐžýœèÍý€Ë¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á€Þ€¿€Ï
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€Îµ¯Æ°€òÍ×µá€¹€ë€³€È€òŒš€¹¥Õ¥é¥°¡¥
+ */
+extern bool_t	reqflg;
+
+/*
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ
+ *
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ€Ç€¢€ë€³€È€òŒš€¹¥Õ¥é¥°¡¥
+ */
+extern bool_t	ipmflg;
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ
+ *
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ€Ç€¢€ë€³€È€òŒš€¹¥Õ¥é¥°¡¥
+ */
+extern bool_t	disdsp;
+
+/*
+ *  ¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á²ÄÇœŸõÂÖ
+ *
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ€Ç€¢€ê¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ€Ç€¢€ë¡Ê¥Ç¥£
+ *  ¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ€Ç€Ê€€¡Ë€³€È€òŒš€¹¥Õ¥é¥°¡¥
+ */
+extern bool_t	dspflg;
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ
+ *
+ *  ¥ì¥Ç¥£¥­¥å¡Œ€Ï¡€ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Î¥¿¥¹¥¯€òŽÉÍý€¹€ë€¿€á€Î¥­¥å¡Œ€Ç€¢€ë¡¥
+ *  ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€âŽÉÍý€·€Æ€€€ë€¿€á¡€¥ì¥Ç¥£¡ÊŒÂ¹Ô²ÄÇœ¡Ë¥­¥å¡Œ€È€€€Š
+ *  ÌŸŸÎ€ÏÀµ³Î€Ç€Ï€Ê€€€¬¡€¥ì¥Ç¥£¥­¥å¡Œ€È€€€ŠÌŸŸÎ€¬ÄêÃå€·€Æ€€€ë€¿€á¡€€³
+ *  €ÎÌŸŸÎ€ÇžÆ€Ö€³€È€Ë€¹€ë¡¥
+ *
+ *  ¥ì¥Ç¥£¥­¥å¡Œ€Ï¡€Í¥ÀèÅÙ€Ž€È€Î¥¿¥¹¥¯¥­¥å¡Œ€Ç¹œÀ®€µ€ì€Æ€€€ë¡¥¥¿¥¹¥¯€Î
+ *  TCB€Ï¡€³ºÅö€¹€ëÍ¥ÀèÅÙ€Î¥­¥å¡Œ€ËÅÐÏ¿€µ€ì€ë¡¥
+ */
+extern QUEUE	ready_queue[TNUM_TPRI];
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ¥µ¡Œ¥Á€Î€¿€á€Î¥Ó¥Ã¥È¥Þ¥Ã¥×
+ *
+ *  ¥ì¥Ç¥£¥­¥å¡Œ€Î¥µ¡Œ¥Á€òžúÎš€è€¯¹Ô€Š€¿€á€Ë¡€Í¥ÀèÅÙ€Ž€È€Î¥¿¥¹¥¯¥­¥å¡Œ
+ *  €Ë¥¿¥¹¥¯€¬Æþ€Ã€Æ€€€ë€«€É€Š€«€òŒš€¹¥Ó¥Ã¥È¥Þ¥Ã¥×€òÍÑ°Õ€·€Æ€€€ë¡¥¥Ó¥Ã
+ *  ¥È¥Þ¥Ã¥×€ò»È€Š€³€È€Ç¡€¥á¥â¥ê¥¢¥¯¥»¥¹€Î²ó¿ô€òžº€é€¹€³€È€¬€Ç€­€ë€¬¡€
+ *  ¥Ó¥Ã¥ÈÁàºîÌ¿Îá€¬œŒŒÂ€·€Æ€€€Ê€€¥×¥í¥»¥Ã¥µ€Ç¡€Í¥ÀèÅÙ€ÎÃÊ³¬¿ô€¬Ÿ¯€Ê€€
+ *  Ÿì¹ç€Ë€Ï¡€¥Ó¥Ã¥È¥Þ¥Ã¥×Áàºî€Î¥ª¡Œ¥Ð¡Œ¥Ø¥Ã¥É€Î€¿€á€Ë¡€µÕ€ËžúÎš€¬Íî€Á
+ *  €ë²ÄÇœÀ­€â€¢€ë¡¥
+ *
+ *  Í¥ÀèÅÙ€¬16ÃÊ³¬€Ç€¢€ë€³€È€ò²ŸÄê€·€Æ€€€ë€¿€á¡€uint16_t·¿€È€·€Æ€€€ë¡¥
+ */
+extern uint16_t	ready_primap;
+
+/*
+ *  ¥¿¥¹¥¯ID€ÎºÇÂçÃÍ¡Êkernel_cfg.c¡Ë
+ */
+extern const ID	tmax_tskid;
+
+/*
+ *  ¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern const TINIB	tinib_table[];
+
+/*
+ *  ¥¿¥¹¥¯ÀžÀ®œçœø¥Æ¡Œ¥Ö¥ë¡Êkernel_cfg.c¡Ë
+ */
+extern const ID	torder_table[];
+
+/*
+ *  TCB€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern TCB	tcb_table[];
+
+/*
+ *  ¥¿¥¹¥¯€Î¿ô
+ */
+#define tnum_tsk	((uint_t)(tmax_tskid - TMIN_TSKID + 1))
+
+/*
+ *  ¥¿¥¹¥¯ID€«€éTCB€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#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€«€é¥¿¥¹¥¯ID€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#define	TSKID(p_tcb)	((ID)(((p_tcb) - tcb_table) + TMIN_TSKID))
+
+/*
+ *  ¥¿¥¹¥¯ŽÉÍý¥â¥ž¥å¡Œ¥ë€ÎœéŽü²œ
+ */
+extern void	initialize_task(void);
+
+/*
+ *  ºÇ¹âÍ¥Àèœç°Ì¥¿¥¹¥¯€Î¥µ¡Œ¥Á
+ *
+ *  ¥ì¥Ç¥£¥­¥å¡ŒÃæ€ÎºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¥µ¡Œ¥Á€·¡€€œ€ÎTCB€Ø€Î¥Ý¥€¥ó¥¿
+ *  €òÊÖ€¹¡¥¥ì¥Ç¥£¥­¥å¡Œ€¬¶õ€ÎŸì¹ç€Ë€Ï¡€€³€ÎŽØ¿ô€òžÆ€ÓœÐ€·€Æ€Ï€Ê€é€Ê€€¡¥
+ */
+extern TCB	*search_schedtsk(void);
+
+/*
+ *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ò¥ì¥Ç¥£¥­¥å¡Œ€ËÁÞÆþ€¹€ë¡¥¥ì¥Ç¥£¥­¥å¡Œ€ËÁÞÆþ
+ *  €·€¿¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€¬¡€ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€è€ê€â¹â€€Ÿì¹ç€Ï¡€
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€·¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ€Ç€¢€ì€Ðtrue€òÊÖ
+ *  €¹¡¥€œ€Š€Ç€Ê€€Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥
+ */
+extern bool_t	make_runnable(TCB *p_tcb);
+
+/*
+ *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€«€éÂŸ€ÎŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ò¥ì¥Ç¥£¥­¥å¡Œ€«€éºïœü€¹€ë¡¥p_tcb€Ç»ØÄê€·€¿
+ *  ¥¿¥¹¥¯€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€Ç€¢€Ã€¿Ÿì¹ç€Ë€Ï¡€ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯
+ *  €òÀßÄê€·€Ê€ª€·¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ€Ç€¢€ì€Ðtrue€òÊÖ€¹¡¥€œ€Š€Ç€Ê€€
+ *  Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥¥¿¥¹¥¯€ÎŸõÂÖ€Ï¹¹¿·€·€Ê€€¡¥
+ */
+extern bool_t	make_non_runnable(TCB *p_tcb);
+
+/*
+ *  µÙ»ßŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ÎŸõÂÖ€òµÙ»ßŸõÂÖ€È€¹€ë¡¥€Þ€¿¡€¥¿¥¹¥¯€Îµ¯Æ°
+ *  »þ€ËœéŽü²œ€¹€Ù€­ÊÑ¿ô€ÎœéŽü²œ€È¡€¥¿¥¹¥¯µ¯Æ°€Î€¿€á€Î¥³¥ó¥Æ¥­¥¹¥È€òÀß
+ *  Äê€¹€ë¡¥
+ */
+extern void	make_dormant(TCB *p_tcb);
+
+/*
+ *  µÙ»ßŸõÂÖ€«€éŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ÎŸõÂÖ€òµÙ»ßŸõÂÖ€«€éŒÂ¹Ô€Ç€­€ëŸõÂÖ€È€¹€ë¡¥
+ *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€ËÁ«°Ü€·€¿¥¿¥¹¥¯€Ø€Î¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬É¬Í×€ÊŸì¹ç€Ïtrue¡€
+ *  €œ€Š€Ç€Ê€€Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥
+ */
+extern bool_t	make_active(TCB *p_tcb);
+
+/*
+ *  ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€ÎÊÑ¹¹
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€ònewpri¡ÊÆâÉôÉœžœ¡Ë€ËÊÑ¹¹€¹€ë¡¥€Þ€¿¡€
+ *  É¬Í×€ÊŸì¹ç€Ë€ÏºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€·¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ€Ç
+ *  €¢€ì€Ðtrue€òÊÖ€¹¡¥€œ€Š€Ç€Ê€€Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ÎÍ¥Àèœç°Ì€Ï¡€mtxmode€¬false€Î»þ€ÏÆ±€žÍ¥ÀèÅÙ
+ *  €Î¥¿¥¹¥¯€ÎÃæ€ÇºÇÄã¡€mtxmode€¬true€Î»þ€ÏÆ±€žÍ¥ÀèÅÙ€Î¥¿¥¹¥¯€ÎÃæ€ÇºÇ¹â
+ *  €È€¹€ë¡¥
+ */
+extern bool_t	change_priority(TCB *p_tcb, uint_t newpri, bool_t mtxmode);
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ€Î²óÅŸ
+ *
+ *  ¥ì¥Ç¥£¥­¥å¡ŒÃæ€Î¡€pri€Ç»ØÄê€µ€ì€ëÍ¥ÀèÅÙ€Î¥¿¥¹¥¯¥­¥å¡Œ€ò²óÅŸ€µ€»€ë¡¥
+ *  €Þ€¿¡€É¬Í×€ÊŸì¹ç€Ë€ÏºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€òÊÑ¹¹€·¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬ÊÝ
+ *  Î±€µ€ì€Æ€€€Ê€±€ì€Ðtrue€òÊÖ€¹¡¥€œ€Š€Ç€Ê€€Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥
+ */
+extern bool_t	rotate_ready_queue(uint_t pri);
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎžÆœÐ€·
+ *
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€òžÆ€ÓœÐ€¹¡¥žÆ€ÓœÐ€¹Á°€Ë¡€ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€Î
+ *  ÊÝÎ±Îã³°Í×°ø€ò¥¯¥ê¥¢€·¡€¥¿¥¹¥¯Îã³°œèÍý¶Ø»ßŸõÂÖ€Ë€·¡€CPU¥í¥Ã¥¯€ò²ò
+ *  œü€¹€ë¡¥
+ *
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€«€éÌá€ë€È¡€€Þ€ºCPU¥í¥Ã¥¯ŸõÂÖ€ËÌá€·¡€€œ€ÎŽÖ
+ *  €ËÊÝÎ±Îã³°Í×°ø€¬0€Ç€Ê€¯€Ê€Ã€Æ€€€ì€Ð¡€ºÆ€Ó¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ò
+ *  žÆ€ÓœÐ€¹¡¥ÊÝÎ±Îã³°Í×°ø€¬0€ÎŸì¹ç€Ë€Ï¡€Îã³°œèÍýµö²ÄŸõÂÖ€Ë€·€ÆŽØ¿ô€«
+ *  €é¥ê¥¿¡Œ¥ó€¹€ë¡¥
+ *
+ *  €³€ÎŽØ¿ô€Ï¡€ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€¬¡€¥¿¥¹¥¯Îã³°œèÍýµö²ÄŸõÂÖ¡Êenatex€¬
+ *  true¡Ë€Ç¡€ÊÝÎ±Îã³°Í×°ø€¬0€Ç€Ê€€¡Êtexptn€¬0€Ç€Ê€€¡ËŸì¹ç€ËžÆ€ÓœÐ€¹€³
+ *  €È€òÁÛÄê€·€Æ€€€ë¡¥€³€ÎŽØ¿ô€Ï¡€CPU¥í¥Ã¥¯ŸõÂÖ€ÇžÆ€ÓœÐ€µ€Ê€±€ì€Ð€Ê€é
+ *  €Ê€€¡¥
+ */
+extern void	call_texrtn(void);
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€Îµ¯Æ°
+ *
+ *  ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€¬¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€Îµ¯Æ°Ÿò·ï€òËþ€¿€·€Æ€€€ì€Ð¡€
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€òžÆ€ÓœÐ€¹¡¥CPUÎã³°œèÍý¥ë¡Œ¥Á¥ó€òžÆ€ÓœÐ€¹»þ
+ *  €Ï¡€°ì»þÅª€ËCPU¥í¥Ã¥¯€ò²òœü€¹€ë¡¥
+ *
+ *  €³€ÎŽØ¿ô€Ï¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã€ä³ä¹þ€ß¥Ï¥ó¥É¥é¡¿CPUÎã³°¥Ï¥ó¥É¥é€ÎœÐžý
+ *  œèÍý€«€éžÆ€ÓœÐ€µ€ì€ë€³€È€òÁÛÄê€·€Æ€€€ë¡¥€³€ÎŽØ¿ô€Ï¡€CPU¥í¥Ã¥¯ŸõÂÖ
+ *  €ÇžÆ€ÓœÐ€µ€Ê€±€ì€Ð€Ê€é€Ê€€¡¥
+ *
+ *  ŒÂ¹ÔžúÎš€òŸå€²€ë€¿€á€Ë¡€€³€ÎŽØ¿ô€ò¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€Çµ­œÒ€·€Æ€â€è€€¡¥
+ *  €œ€ÎŸì¹ç€Ë€Ï¡€OMIT_CALLTEX€ò¥Þ¥¯¥íÄêµÁ€¹€ë¡¥
+ */
+extern void	calltex(void);
+
+#endif /* TOPPERS_TASK_H */
Index: /extension/mutex/kernel/task_manage.c
===================================================================
--- /extension/mutex/kernel/task_manage.c	(revision 7)
+++ /extension/mutex/kernel/task_manage.c	(revision 7)
@@ -0,0 +1,451 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥¿¥¹¥¯ŽÉÍýµ¡Çœ
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+#include "mutex.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯€Îµ¯Æ°
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯€Îµ¯Æ°¡ÊÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯µ¯Æ°Í×µá€Î¥­¥ã¥ó¥»¥ë
+ */
+#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 */
+
+/*
+ *  Œ«¥¿¥¹¥¯€ÎœªÎ»
+ */
+#ifdef TOPPERS_ext_tsk
+
+ER
+ext_tsk(void)
+{
+	ER		ercd;
+
+	LOG_EXT_TSK_ENTER();
+	CHECK_TSKCTX();
+
+	if (t_sense_lock()) {
+		/*
+		 *  CPU¥í¥Ã¥¯ŸõÂÖ€Çext_tsk€¬žÆ€Ð€ì€¿Ÿì¹ç€Ï¡€CPU¥í¥Ã¥¯€ò²òœü€·
+		 *  €Æ€«€é¥¿¥¹¥¯€òœªÎ»€¹€ë¡¥ŒÂÁõŸå€Ï¡€¥µ¡Œ¥Ó¥¹¥³¡Œ¥ëÆâ€Ç€ÎCPU
+		 *  ¥í¥Ã¥¯€òŸÊÎ¬€¹€ì€Ð€è€€€À€±¡¥
+		 */
+	}
+	else {
+		t_lock_cpu();
+	}
+	if (disdsp) {
+		/*
+		 *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ€Çext_tsk€¬žÆ€Ð€ì€¿Ÿì¹ç€Ï¡€¥Ç¥£¥¹¥Ñ¥Ã
+		 *  ¥Áµö²ÄŸõÂÖ€Ë€·€Æ€«€é¥¿¥¹¥¯€òœªÎ»€¹€ë¡¥
+		 */
+		disdsp = false;
+	}
+	if (!ipmflg) {
+		/*
+		 *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡ÊIPM¡Ë€¬TIPM_ENAALL°Ê³°€ÎŸõÂÖ€Çext_tsk
+		 *  €¬žÆ€Ð€ì€¿Ÿì¹ç€Ï¡€IPM€òTIPM_ENAALL€Ë€·€Æ€«€é¥¿¥¹¥¯€òœªÎ»€¹
+		 *  €ë¡¥
+		 */
+		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 */
+
+/*
+ *  ¥¿¥¹¥¯€Î¶¯À©œªÎ»
+ */
+#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€ÏŒ«¥¿¥¹¥¯€Ç€Ê€€€¿€á¡€¡Ê¥·¥ó¥°¥ë¥×¥í¥»¥Ã¥µ€Ç€Ï¡ËŒÂ
+			 *  ¹ÔŸõÂÖ€Ç€Ê€¯¡€make_non_runnable(p_tcb)€Ç¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã
+			 *  ¥Á€¬É¬Í×€Ë€Ê€ë€³€È€Ï€Ê€€¡¥
+			 */
+			(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 */
+
+/*
+ *  ¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ€ÎÊÑ¹¹
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯Í¥ÀèÅÙ€Î»²ŸÈ
+ */
+#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 */
+
+/*
+ *  Œ«¥¿¥¹¥¯€Î³ÈÄ¥ŸðÊó€Î»²ŸÈ
+ */
+#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: /extension/mutex/kernel/task_refer.c
===================================================================
--- /extension/mutex/kernel/task_refer.c	(revision 7)
+++ /extension/mutex/kernel/task_refer.c	(revision 7)
@@ -0,0 +1,210 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2005-2012 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  $Id$
+ */
+
+/*
+ *		¥¿¥¹¥¯€ÎŸõÂÖ»²ŸÈµ¡Çœ
+ */
+
+#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 "mutex.h"
+#include "mempfix.h"
+#include "time_event.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯€ÎŸõÂÖ»²ŸÈ
+ */
+#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)) {
+		/*
+ 		 *  ÂÐŸÝ¥¿¥¹¥¯€¬µÙ»ßŸõÂÖ€ÎŸì¹ç
+		 */
+		pk_rtsk->tskstat = TTS_DMT;
+	}
+	else {
+		/*
+ 		 *  ¥¿¥¹¥¯ŸõÂÖ€ÎŒèœÐ€·
+		 */
+		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;
+		}
+
+		/*
+ 		 *  žœºßÍ¥ÀèÅÙ€È¥Ù¡Œ¥¹Í¥ÀèÅÙ€ÎŒèœÐ€·
+		 */
+		pk_rtsk->tskpri = EXT_TSKPRI(p_tcb->priority);
+		pk_rtsk->tskbpri = EXT_TSKPRI(p_tcb->bpriority);
+
+		if (TSTAT_WAITING(tstat)) {
+			/*
+	 		 *  ÂÔ€ÁÍ×°ø€ÈÂÔ€ÁÂÐŸÝ€Î¥ª¥Ö¥ž¥§¥¯¥È€ÎID€ÎŒèœÐ€·
+			 */
+			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_MTX:
+				pk_rtsk->tskwait = TTW_MTX;
+				pk_rtsk->wobjid = MTXID(((WINFO_MTX *)(p_tcb->p_winfo))
+																->p_mtxcb);
+				break;
+			case TS_WAIT_MPF:
+				pk_rtsk->tskwait = TTW_MPF;
+				pk_rtsk->wobjid = MPFID(((WINFO_MPF *)(p_tcb->p_winfo))
+																->p_mpfcb);
+				break;
+			}
+
+			/*
+	 		 *  ¥¿¥€¥à¥¢¥Š¥È€¹€ë€Þ€Ç€Î»þŽÖ€ÎŒèœÐ€·
+			 */
+			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;
+			}
+		}
+
+		/*
+ 		 *  µ¯Ÿ²Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô€ÎŒèœÐ€·
+		 */
+		pk_rtsk->wupcnt = p_tcb->wupque ? 1U : 0U;
+	}
+
+	/*
+	 *  µ¯Æ°Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô€ÎŒèœÐ€·
+	 */
+	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: /extension/mutex/test/bit_kernel.c
===================================================================
--- /extension/mutex/test/bit_kernel.c	(revision 7)
+++ /extension/mutex/test/bit_kernel.c	(revision 7)
@@ -0,0 +1,484 @@
+/*
+ *  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$
+ */
+
+/*
+ *		¥«¡Œ¥Í¥ë€ÎÀ°¹çÀ­ž¡ºº
+ */
+
+#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"
+
+/*
+ *   ¥š¥é¡Œ¥³¡Œ¥É€ÎÄêµÁ
+ */
+#define E_SYS_LINENO	ERCD(E_SYS, -(__LINE__))
+
+/*
+ *  ŽÉÍý¥Ö¥í¥Ã¥¯€Î¥¢¥É¥ì¥¹€ÎÀµÅöÀ­€Î¥Á¥§¥Ã¥¯
+ */
+#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)
+
+/*
+ *  ¥­¥å¡Œ€Î¥Á¥§¥Ã¥¯€Î€¿€á€ÎŽØ¿ô
+ *
+ *  p_queue€Ëp_entry€¬ŽÞ€Þ€ì€Æ€€€ë€«€òÄŽ€Ù€ë¡¥ŽÞ€Þ€ì€Æ€€€ì€Ðtrue¡€ŽÞ€Þ
+ *  €ì€Æ€€€Ê€€Ÿì¹ç€Ë€Ïfalse€òÊÖ€¹¡¥¥À¥Ö¥ë¥ê¥ó¥¯€ÎÉÔÀ°¹ç€ÎŸì¹ç€Ë€â¡€
+ *  false€òÊÖ€¹¡¥
+ */
+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);					/* ¥À¥Ö¥ë¥ê¥ó¥¯€ÎÉÔÀ°¹ç */
+	}
+	while (p_current != p_queue) {
+		if (p_current == p_entry) {
+			return(true);				/* p_entry€¬ŽÞ€Þ€ì€Æ€€€¿ */
+		}
+
+		/*
+		 *  ¥­¥å¡Œ€ÎŒ¡€ÎÍ×ÁÇ€Ë¿Ê€à
+		 */
+		p_next = p_current->p_next;
+		if (p_next->p_prev != p_current) {
+			return(false);				 /* ¥À¥Ö¥ë¥ê¥ó¥¯€ÎÉÔÀ°¹ç */
+		}
+		p_current = p_next;
+	}
+	return(false);
+}
+
+/*
+ *  ¥¹¥¿¥Ã¥¯Ÿå€ò»Ø€·€Æ€€€ë€«€Îž¡ºº
+ */
+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);
+}
+
+/*
+ *  ¥¿¥¹¥¯Ëè€ÎÀ°¹çÀ­ž¡ºº
+ */
+static ER
+bit_task(ID tskid)
+{
+	TCB			*p_tcb;
+	const TINIB	*p_tinib;
+	uint_t		tstat, tstat_wait, pri;
+	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);
+	pri = p_tcb->priority;
+
+	/*
+	 *  œéŽü²œ¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿€Îž¡ºº
+	 */
+	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);
+	}
+
+	/*
+	 *  ¥¿¥¹¥¯Í¥ÀèÅÙ€Îž¡ºº
+	 */
+	if (pri >= TNUM_TPRI) {
+		return(E_SYS_LINENO);
+	}
+
+	/*
+	 *  texptn€Îž¡ºº
+	 */
+	if (p_tcb->p_tinib->texrtn == NULL && p_tcb->texptn != 0U) {
+		return(E_SYS_LINENO);
+	}
+
+	/*
+	 *  µÙ»ßŸõÂÖ€Ë€ª€±€ë¥Á¥§¥Ã¥¯
+	 */
+	if (TSTAT_DORMANT(tstat)) {
+		if (!(pri == p_tinib->ipriority)
+					&& (p_tcb->wupque == false)
+					&& (p_tcb->enatex == false)
+					&& (p_tcb->texptn == 0U)) {
+			return(E_SYS_LINENO);
+		}
+	}
+
+	/*
+	 *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ë€ª€±€ë¥Á¥§¥Ã¥¯
+	 */
+	if (TSTAT_RUNNABLE(tstat)) {
+		if (!in_queue(&ready_queue[pri], &(p_tcb->task_queue))) {
+			return(E_SYS_LINENO);
+		}
+	}
+
+	/*
+	 *  ÂÔ€ÁŸõÂÖ€Ë€ª€±€ë¥Á¥§¥Ã¥¯
+	 */
+	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)€Îž¡ºº¡ÊÌ€Ž°À®¡Ë
+			 */
+		}
+
+		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) {
+		/*
+		 *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€Îž¡ºº
+		 */
+#if 0
+		if (bit_tskctxb(&(p_tcb->tskctxb))) {
+			return(E_SYS_LINENO);
+		}
+#endif
+	}
+	return(E_OK);
+}
+
+/*
+ *  ¥»¥Þ¥Õ¥©Ëè€ÎÀ°¹çÀ­ž¡ºº
+ */
+#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;
+
+	/*
+	 *  œéŽü²œ¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿€Îž¡ºº
+	 */
+	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;
+
+	/*
+	 *  ¥¿¥¹¥¯Ëè€Îž¡ºº
+	 */
+	for (tskid = TMIN_TSKID; tskid <= tmax_tskid; tskid++) {
+		ercd = bit_task(tskid);
+		if (ercd != E_OK) {
+			return(ercd);
+		}
+	}
+
+	/*
+	 *  ¥»¥Þ¥Õ¥©Ëè€Îž¡ºº
+	 */
+	for (semid = TMIN_SEMID; semid <= tmax_semid; semid++) {
+		ercd = bit_semaphore(semid);
+		if (ercd != E_OK) {
+			return(ercd);
+		}
+	}
+
+	return(E_OK);
+}
Index: /extension/mutex/test/bit_mutex.c
===================================================================
--- /extension/mutex/test/bit_mutex.c	(revision 7)
+++ /extension/mutex/test/bit_mutex.c	(revision 7)
@@ -0,0 +1,340 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      High Reliable system 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$
+ */
+
+/*
+ *		¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹µ¡Çœ€ÎÀ°¹çÀ­ž¡ºº
+ */
+
+#include "kernel/kernel_impl.h"
+#include "kernel/task.h"
+#include "kernel/mutex.h"
+
+/*
+ *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹ID€«€é¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹ŽÉÍý¥Ö¥í¥Ã¥¯€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯
+ *  ¥í¡Êmutex.c€è€ê¡Ë
+ */
+#define INDEX_MTX(mtxid)	((uint_t)((mtxid) - TMIN_MTXID))
+#define get_mtxcb(mtxid)	(&(mtxcb_table[INDEX_MTX(mtxid)]))
+
+/*
+ *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹ŽÉÍý¥Ö¥í¥Ã¥¯Ãæ€Îmutex_queue€Ø€Î¥Ý¥€¥ó¥¿€«€é¡€¥ß¥å¡Œ¥Æ¥Ã
+ *  ¥¯¥¹ŽÉÍý¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í¡Êmutex.c€è€ê¡Ë
+ */
+#define MTXCB_QUEUE(p_queue) \
+			((MTXCB *)(((char *) p_queue) - offsetof(MTXCB, mutex_queue)))
+
+/*
+ *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥×¥í¥È¥³¥ë€òÈœÃÇ€¹€ë¥Þ¥¯¥í¡Êmutex.c€è€ê¡Ë
+ */
+#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)
+
+/*
+ *   ¥š¥é¡Œ¥³¡Œ¥É€ÎÄêµÁ
+ */
+#define E_SYS_LINENO	ERCD(E_SYS, -(__LINE__))
+
+/*
+ *  ŽÉÍý¥Ö¥í¥Ã¥¯€Î¥¢¥É¥ì¥¹€ÎÀµÅöÀ­€Î¥Á¥§¥Ã¥¯
+ */
+#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)
+				
+/*
+ *  ¥­¥å¡Œ€Î¥Á¥§¥Ã¥¯€Î€¿€á€ÎŽØ¿ô
+ *
+ *  p_queue€Ëp_entry€¬ŽÞ€Þ€ì€Æ€€€ë€«€òÄŽ€Ù€ë¡¥ŽÞ€Þ€ì€Æ€€€ì€Ðtrue¡€ŽÞ€Þ
+ *  €ì€Æ€€€Ê€€Ÿì¹ç€Ë€Ïfalse€òÊÖ€¹¡¥¥À¥Ö¥ë¥ê¥ó¥¯€ÎÉÔÀ°¹ç€ÎŸì¹ç€Ë€â¡€
+ *  false€òÊÖ€¹¡¥
+ */
+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);					/* ¥À¥Ö¥ë¥ê¥ó¥¯€ÎÉÔÀ°¹ç */
+	}
+	while (p_current != p_queue) {
+		if (p_current == p_entry) {
+			return(true);				/* p_entry€¬ŽÞ€Þ€ì€Æ€€€¿ */
+		}
+
+		/*
+		 *  ¥­¥å¡Œ€ÎŒ¡€ÎÍ×ÁÇ€Ë¿Ê€à
+		 */
+		p_next = p_current->p_next;
+		if (p_next->p_prev != p_current) {
+			return(false);				 /* ¥À¥Ö¥ë¥ê¥ó¥¯€ÎÉÔÀ°¹ç */
+		}
+		p_current = p_next;
+	}
+	return(false);
+}
+
+/*
+ *  ¥¿¥¹¥¯Ëè€Îž¡ºº
+ */
+static ER
+bit_mutex_task(ID tskid)
+{
+	TCB			*p_tcb;
+	MTXCB		*p_mtxcb;
+	QUEUE		*p_queue, *p_next;
+	uint_t		pri;
+
+	if (!(TMIN_TSKID <= (tskid) && (tskid) <= tmax_tskid)) {
+		return(E_ID);
+	}
+	p_tcb = get_tcb(tskid);
+	pri = p_tcb->bpriority;
+
+	/*
+	 *  ¥¿¥¹¥¯€¬¥í¥Ã¥¯€·€Æ€€€ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥­¥å¡Œ€Îž¡ºº
+	 */
+	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);
+		}
+
+		/*
+		 *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€€ë¥¿¥¹¥¯€Î¥Á¥§¥Ã¥¯
+		 */
+		if (p_mtxcb->p_loctsk != p_tcb) {
+			return(E_SYS_LINENO);
+		}
+
+		/*
+		 *  žœºßÍ¥ÀèÅÙ€Î·×»»
+		 */
+		if (MTXPROTO(p_mtxcb)) {
+			if (p_mtxcb->p_mtxinib->ceilpri < pri) {
+				pri = p_mtxcb->p_mtxinib->ceilpri;
+			}
+		}
+
+		/*
+		 *  ¥­¥å¡Œ€ÎŒ¡€ÎÍ×ÁÇ€Ë¿Ê€à
+		 */
+		p_next = p_queue->p_next;
+		if (p_next->p_prev != p_queue) {
+			return(E_SYS_LINENO);
+		}
+		p_queue = p_next;
+	}
+
+	/*
+	 *  žœºßÍ¥ÀèÅÙ€Îž¡ºº
+	 */
+	if (p_tcb->priority != pri) {
+		return(E_SYS_LINENO);
+	}
+
+	/*
+	 *  ¥¿¥¹¥¯€¬ÂÔ€Ã€Æ€€€ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ËŽØ€¹€ëž¡ºº
+	 */
+	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);
+}
+
+/*
+ *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹Ëè€Îž¡ºº
+ */
+static ER
+bit_mutex_mutex(ID mtxid)
+{
+	MTXCB		*p_mtxcb;
+	TCB			*p_tcb;
+	QUEUE		*p_queue, *p_next;
+	uint_t		pri;
+
+	if (!(TMIN_MTXID <= (mtxid) && (mtxid) <= tmax_mtxid)) {
+		return(E_ID);
+	}
+	p_mtxcb = get_mtxcb(mtxid);
+
+	/*
+	 *  œéŽü²œ¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿€Îž¡ºº
+	 */
+	if (p_mtxcb->p_mtxinib != &(mtxinib_table[INDEX_MTX(mtxid)])) {
+		return(E_SYS_LINENO);
+	}
+
+	/*
+	 *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹ÂÔ€Á¥­¥å¡Œ€Îž¡ºº
+	 */
+	p_queue = p_mtxcb->wait_queue.p_next;
+	if (p_queue->p_prev != &(p_mtxcb->wait_queue)) {
+		return(E_SYS_LINENO);
+	}
+	pri = TMIN_TPRI;
+	while (p_queue != &(p_mtxcb->wait_queue)) {
+		p_tcb = (TCB *) p_queue;
+		if (!VALID_TCB(p_tcb)) {
+			return(E_SYS_LINENO);
+		}
+
+		/*
+		 *  ¥­¥å¡Œ€¬¥¿¥¹¥¯Í¥ÀèÅÙœç€Ë€Ê€Ã€Æ€€€ë€«€Îž¡ºº
+		 */
+		if (MTXPROTO(p_mtxcb) != TA_NULL) {
+			if (p_tcb->priority < pri) {
+				return(E_SYS_LINENO);
+			}
+		}
+		pri = p_tcb->priority;
+
+		/*
+		 *  ¥¿¥¹¥¯ŸõÂÖ€Îž¡ºº
+		 *
+		 *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹ÂÔ€ÁŸõÂÖ€Î¥¿¥¹¥¯€Îž¡ºº€Ï¡€¥¿¥¹¥¯Ëè€Îž¡ºº€Ç¹Ô€Ã
+		 *  €Æ€€€ë€¿€á¡€€³€³€Ç€Ï¹Ô€ï€Ê€€¡¥
+		 */
+		if (!TSTAT_WAIT_MTX(p_tcb->tstat)) {
+			return(E_SYS_LINENO);
+		}
+
+		/*
+		 *  Í¥ÀèÅÙŸåžÂ€Îž¡ºº
+		 */
+		if (MTXPROTO(p_mtxcb) == TA_CEILING) {
+			if (p_tcb->bpriority < p_mtxcb->p_mtxinib->ceilpri) {
+				return(E_SYS_LINENO);
+			}
+		}
+
+		/*
+		 *  ¥­¥å¡Œ€ÎŒ¡€ÎÍ×ÁÇ€Ë¿Ê€à
+		 */
+		p_next = p_queue->p_next;
+		if (p_next->p_prev != p_queue) {
+			return(E_SYS_LINENO);
+		}
+		p_queue = p_next;
+	}
+
+	/*
+	 *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€€ë¥¿¥¹¥¯€Îž¡ºº
+	 */
+	p_tcb = p_mtxcb->p_loctsk;
+	if (p_tcb == NULL) {
+		/*
+		 *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€¬¥í¥Ã¥¯€µ€ì€Æ€€€Ê€€»þ
+		 */
+		if (!queue_empty(&(p_mtxcb->wait_queue))) {
+			return(E_SYS_LINENO);
+		}
+	}
+	else {
+		/*
+		 *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€¬¥í¥Ã¥¯€µ€ì€Æ€€€ë»þ
+		 *
+		 *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€€ë¥¿¥¹¥¯€Îž¡ºº€Ï¡€¥¿¥¹¥¯Ëè€Îž¡
+		 *  ºº€Ç¹Ô€Ã€Æ€€€ë€¿€á¡€€³€³€Ç€Ï¹Ô€ï€Ê€€¡¥
+		 */
+		if (!VALID_TCB(p_tcb)) {
+			return(E_SYS_LINENO);
+		}
+		if (!in_queue(&(p_tcb->mutex_queue), &(p_mtxcb->mutex_queue))) {
+			return(E_SYS_LINENO);
+		}
+
+		/*
+		 *  Í¥ÀèÅÙŸåžÂ€Îž¡ºº
+		 */
+		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;
+
+	/*
+	 *  ¥¿¥¹¥¯Ëè€Îž¡ºº
+	 */
+	for (tskid = TMIN_TSKID; tskid <= tmax_tskid; tskid++) {
+		ercd = bit_mutex_task(tskid);
+		if (ercd != E_OK) {
+			return(ercd);
+		}
+	}
+
+	/*
+	 *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹Ëè€Îž¡ºº
+	 */
+	for (mtxid = TMIN_MTXID; mtxid <= tmax_mtxid; mtxid++) {
+		ercd = bit_mutex_mutex(mtxid);
+		if (ercd != E_OK) {
+			return(ercd);
+		}
+	}
+	return(E_OK);
+}
Index: /extension/mutex/test/test_mutex.h
===================================================================
--- /extension/mutex/test/test_mutex.h	(revision 7)
+++ /extension/mutex/test/test_mutex.h	(revision 7)
@@ -0,0 +1,72 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/* 
+ *		¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥Æ¥¹¥È(1)¡Á(3)
+ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎÄêµÁ
+ */
+#include "target_test.h"
+
+/*
+ *  Í¥ÀèÅÙ€ÎÄêµÁ
+ */
+#define HIGH_PRIORITY	9		/* ¹âÍ¥ÀèÅÙ */
+#define MID_PRIORITY	10		/* ÃæÍ¥ÀèÅÙ */
+#define LOW_PRIORITY	11		/* ÄãÍ¥ÀèÅÙ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È€Ë°ÍÂž€¹€ë²ÄÇœÀ­€Î€¢€ëÄê¿ô€ÎÄêµÁ
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯¥µ¥€¥º */
+#endif /* STACK_SIZE */
+
+/*
+ *  ŽØ¿ô€Î¥×¥í¥È¥¿¥€¥×ÀëžÀ
+ */
+#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: /extension/mutex/test/test_mutex1.c
===================================================================
--- /extension/mutex/test/test_mutex1.c	(revision 7)
+++ /extension/mutex/test/test_mutex1.c	(revision 7)
@@ -0,0 +1,281 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2014 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$
+ */
+
+/* 
+ *		¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥Æ¥¹¥È(1)
+ *
+ * ¡Ú¥Æ¥¹¥È€ÎÌÜÅª¡Û
+ *
+ *  FIFOœç¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¡€¥í¥Ã¥¯€¹€ëœèÍý€È¥í¥Ã¥¯²òœü€¹€ëœèÍý€ò°ìÄÌ€ê
+ *  ¥Æ¥¹¥È€¹€ë¡¥
+ *
+ * ¡Ú¥Æ¥¹¥È¹àÌÜ¡Û
+ *
+ *	(A) ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯œèÍý¡Êloc_mtx¡Ë
+ *		(A-1) ¥í¥Ã¥¯€µ€ì€Æ€€€Ê€€Ÿì¹ç€Ë€Ï¡€€¹€°€Ë¥í¥Ã¥¯€Ç€­€ë€³€È
+ *		(A-2) Â¿œÅ€Ë¥í¥Ã¥¯€·€è€Š€È€¹€ë€È¡€E_OBJ¥š¥é¡Œ€Ë€Ê€ë€³€È
+ *		(A-3) ¥í¥Ã¥¯€µ€ì€Æ€€€ëŸì¹ç€Ë€Ï¡€FIFOœç€ÇÂÔ€ÁŸõÂÖ€Ë€Ê€ë€³€È
+ *	(B) ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯²òœüœèÍý¡Êunl_mtx¡Ë
+ *		(B-1) ÂŸ¥¿¥¹¥¯€¬¥í¥Ã¥¯€·€Æ€€€ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò²òÊü€·€è€Š€È€¹€ë€È
+ *		¡¡¡¡¡¡E_OBJ¥š¥é¡Œ€Ë€Ê€ë€³€È
+ *		(B-2) ÂÔ€Á¥¿¥¹¥¯€¬€Ê€€€È¡€Ã±€Ë¥í¥Ã¥¯²òœü€¹€ë€³€È
+ *		(B-3) ÂÔ€Á¥¿¥¹¥¯€Ë¥í¥Ã¥¯€òÅÏ€¹€³€È
+ *		(B-4) ÂÔ€Á¥¿¥¹¥¯€Ë¥í¥Ã¥¯€òÅÏ€·€Æ¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬µ¯€³€ë€³€È
+ *	(C) ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯œèÍý¡Êploc_mtx¡Ë
+ *		(C-1) ¥í¥Ã¥¯€µ€ì€Æ€€€ëŸì¹ç€Ë€Ï¡€€¹€°€ËE_TMOUT¥š¥é¡Œ€Ë€Ê€ë€³€È
+ *	(D) ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯œèÍý¡Êtloc_mtx¡Ë
+ *		(D-1) ¥í¥Ã¥¯€µ€ì€Æ€€€ëŸì¹ç€Ë€Ï¡€¥¿¥€¥à¥¢¥Š¥ÈÉÕ€­€ÎÂÔ€ÁŸõÂÖ€Ë€Ê
+ *		¡¡¡¡¡¡€ë€³€È
+ *	(E) €ª€Þ€±
+ *		(E-1) ¥¿¥¹¥¯€òœªÎ»€¹€ë€È¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯²òœü€¹€ë€³€È
+ *
+ * ¡Ú»ÈÍÑ¥ê¥œ¡Œ¥¹¡Û
+ *
+ *	TASK1: ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡€¥á¥€¥ó¥¿¥¹¥¯¡€ºÇœé€«€éµ¯Æ°
+ *	TASK2: ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	TASK3: ¹âÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	MTX1: ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊTA_NULLÂ°À­¡Ë
+ *
+ * ¡Ú¥Æ¥¹¥È¥·¡Œ¥±¥ó¥¹¡Û
+ *
+ *	== TASK1¡ÊÍ¥ÀèÅÙ¡§Äã¡Ë==
+ *		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_OBJ			... (A-2)
+ *	3:	ref_mtx(MTX1, &rmtx)
+ *		assert(rmtx.htskid == TASK1)
+ *		assert(rmtx.wtskid == TSK_NONE)
+ *		act_tsk(TASK2)
+ *	== TASK2¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë==
+ *	4:	ploc_mtx(MTX1) -> E_TMOUT		... (C-1)
+ *		loc_mtx(MTX1)					... (A-3)
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	5:	ref_mtx(MTX1, &rmtx)
+ *		assert(rmtx.htskid == TASK1)
+ *		assert(rmtx.wtskid == TASK2)
+ *		act_tsk(TASK3)
+ *	== TASK3¡ÊÍ¥ÀèÅÙ¡§¹â¡Ë==
+ *	6:	unl_mtx(MTX1) -> E_OBJ			... (B-1)
+ *	7:	loc_mtx(MTX1)					... (A-3)
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	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()
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	10:	unl_mtx(MTX1)					... (B-4)
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	11:	ext_tsk() -> noreturn			... (E-1)
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	12:	loc_mtx(MTX1)
+ *	13:	slp_tsk()
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	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)
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	16:	unl_mtx(MTX1)					... (B-2)
+ *	17:	ext_tsk() -> noreturn
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	18:	END
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include "kernel_cfg.h"
+#include "test_lib.h"
+#include "test_mutex.h"
+
+extern ER	bit_mutex(void);
+
+/* DO NOT DELETE THIS LINE -- gentest depends on it. */
+
+void
+task1(intptr_t exinf)
+{
+	ER_UINT	ercd;
+	T_RMTX	rmtx;
+
+	test_start(__FILE__);
+
+	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_OBJ);
+
+	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_UINT	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_UINT	ercd;
+
+	check_point(6);
+	ercd = unl_mtx(MTX1);
+	check_ercd(ercd, E_OBJ);
+
+	check_point(7);
+	ercd = loc_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	check_point(11);
+	ercd = ext_tsk();
+
+	check_point(0);
+}
Index: /extension/mutex/test/test_mutex1.cfg
===================================================================
--- /extension/mutex/test/test_mutex1.cfg	(revision 7)
+++ /extension/mutex/test/test_mutex1.cfg	(revision 7)
@@ -0,0 +1,18 @@
+/*
+ *  @(#) $Id$
+ */
+
+/*
+ *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥Æ¥¹¥È(1)€Î¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+ */
+INCLUDE("target_timer.cfg");
+INCLUDE("syssvc/syslog.cfg");
+INCLUDE("syssvc/banner.cfg");
+INCLUDE("syssvc/serial.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: /extension/mutex/test/test_mutex2.c
===================================================================
--- /extension/mutex/test/test_mutex2.c	(revision 7)
+++ /extension/mutex/test/test_mutex2.c	(revision 7)
@@ -0,0 +1,280 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2014 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$
+ */
+
+/* 
+ *		¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥Æ¥¹¥È(2)
+ *
+ * ¡Ú¥Æ¥¹¥È€ÎÌÜÅª¡Û
+ *
+ *  Í¥ÀèÅÙœç¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¡€¥í¥Ã¥¯€¹€ëœèÍý€È¥í¥Ã¥¯²òœü€¹€ëœèÍý€ò°ìÄÌ
+ *  €ê¥Æ¥¹¥È€¹€ë¡¥
+ *
+ * ¡Ú¥Æ¥¹¥È¹àÌÜ¡Û
+ *
+ *	(A) ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯œèÍý¡Êloc_mtx¡Ë
+ *		(A-1) ¥í¥Ã¥¯€µ€ì€Æ€€€Ê€€Ÿì¹ç€Ë€Ï¡€€¹€°€Ë¥í¥Ã¥¯€Ç€­€ë€³€È
+ *		(A-2) Â¿œÅ€Ë¥í¥Ã¥¯€·€è€Š€È€¹€ë€È¡€E_OBJ¥š¥é¡Œ€Ë€Ê€ë€³€È
+ *		(A-3) ¥í¥Ã¥¯€µ€ì€Æ€€€ëŸì¹ç€Ë€Ï¡€Í¥ÀèÅÙœç€ÇÂÔ€ÁŸõÂÖ€Ë€Ê€ë€³€È
+ *	(B) ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯²òœüœèÍý¡Êunl_mtx¡Ë
+ *		(B-1) ÂŸ¥¿¥¹¥¯€¬¥í¥Ã¥¯€·€Æ€€€ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò²òÊü€·€è€Š€È€¹€ë€È
+ *		¡¡¡¡¡¡E_OBJ¥š¥é¡Œ€Ë€Ê€ë€³€È
+ *		(B-2) ÂÔ€Á¥¿¥¹¥¯€¬€Ê€€€È¡€Ã±€Ë¥í¥Ã¥¯²òœü€¹€ë€³€È
+ *		(B-3) ÂÔ€Á¥¿¥¹¥¯€Ë¥í¥Ã¥¯€òÅÏ€¹€³€È
+ *		(B-4) ÂÔ€Á¥¿¥¹¥¯€Ë¥í¥Ã¥¯€òÅÏ€·€Æ¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬µ¯€³€ë€³€È
+ *	(C) ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯œèÍý¡Êploc_mtx¡Ë
+ *		(C-1) ¥í¥Ã¥¯€µ€ì€Æ€€€ëŸì¹ç€Ë€Ï¡€€¹€°€ËE_TMOUT¥š¥é¡Œ€Ë€Ê€ë€³€È
+ *	(D) ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯œèÍý¡Êtloc_mtx¡Ë
+ *		(D-1) ¥í¥Ã¥¯€µ€ì€Æ€€€ëŸì¹ç€Ë€Ï¡€¥¿¥€¥à¥¢¥Š¥ÈÉÕ€­€ÎÂÔ€ÁŸõÂÖ€Ë€Ê
+ *		¡¡¡¡¡¡€ë€³€È
+ *	(E) €ª€Þ€±
+ *		(E-1) ¥¿¥¹¥¯€òœªÎ»€¹€ë€È¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯²òœü€¹€ë€³€È
+ *
+ * ¡Ú»ÈÍÑ¥ê¥œ¡Œ¥¹¡Û
+ *
+ *	TASK1: ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡€¥á¥€¥ó¥¿¥¹¥¯¡€ºÇœé€«€éµ¯Æ°
+ *	TASK2: ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	TASK3: ¹âÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	MTX1: ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊTA_TPRIÂ°À­¡Ë
+ *
+ * ¡Ú¥Æ¥¹¥È¥·¡Œ¥±¥ó¥¹¡Û
+ *
+ *	== TASK1¡ÊÍ¥ÀèÅÙ¡§Äã¡Ë==
+ *		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_OBJ			... (A-2)
+ *	3:	ref_mtx(MTX1, &rmtx)
+ *		assert(rmtx.htskid == TASK1)
+ *		assert(rmtx.wtskid == TSK_NONE)
+ *		act_tsk(TASK2)
+ *	== TASK2¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë==
+ *	4:	ploc_mtx(MTX1) -> E_TMOUT		... (C-1)
+ *		loc_mtx(MTX1)					... (A-3)
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	5:	ref_mtx(MTX1, &rmtx)
+ *		assert(rmtx.htskid == TASK1)
+ *		assert(rmtx.wtskid == TASK2)
+ *		act_tsk(TASK3)
+ *	== TASK3¡ÊÍ¥ÀèÅÙ¡§¹â¡Ë==
+ *	6:	unl_mtx(MTX1) -> E_OBJ			... (B-1)
+ *	7:	loc_mtx(MTX1)					... (A-3)
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	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()
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	10:	ext_tsk() -> noreturn			... (E-1)
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	11:	unl_mtx(MTX1)					... (B-4)
+ *	12:	loc_mtx(MTX1)
+ *	13:	slp_tsk()
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	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)
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	16:	unl_mtx(MTX1)					... (B-2)
+ *	17:	ext_tsk() -> noreturn
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	18:	END
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include "kernel_cfg.h"
+#include "test_lib.h"
+#include "test_mutex.h"
+
+extern ER	bit_mutex(void);
+
+/* DO NOT DELETE THIS LINE -- gentest depends on it. */
+
+void
+task1(intptr_t exinf)
+{
+	ER_UINT	ercd;
+	T_RMTX	rmtx;
+
+	test_start(__FILE__);
+
+	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_OBJ);
+
+	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_UINT	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_UINT	ercd;
+
+	check_point(6);
+	ercd = unl_mtx(MTX1);
+	check_ercd(ercd, E_OBJ);
+
+	check_point(7);
+	ercd = loc_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	check_point(10);
+	ercd = ext_tsk();
+
+	check_point(0);
+}
Index: /extension/mutex/test/test_mutex2.cfg
===================================================================
--- /extension/mutex/test/test_mutex2.cfg	(revision 7)
+++ /extension/mutex/test/test_mutex2.cfg	(revision 7)
@@ -0,0 +1,18 @@
+/*
+ *  @(#) $Id$
+ */
+
+/*
+ *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥Æ¥¹¥È(2)€Î¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+ */
+INCLUDE("target_timer.cfg");
+INCLUDE("syssvc/syslog.cfg");
+INCLUDE("syssvc/banner.cfg");
+INCLUDE("syssvc/serial.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: /extension/mutex/test/test_mutex3.c
===================================================================
--- /extension/mutex/test/test_mutex3.c	(revision 7)
+++ /extension/mutex/test/test_mutex3.c	(revision 7)
@@ -0,0 +1,323 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2014 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$
+ */
+
+/* 
+ *		¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥Æ¥¹¥È(3)
+ *
+ * ¡Ú¥Æ¥¹¥È€ÎÌÜÅª¡Û
+ *
+ *  Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¡€¥í¥Ã¥¯€¹€ëœèÍý€È¥í¥Ã¥¯²òœü€¹€ëœèÍý€ò°ì
+ *  ÄÌ€ê¥Æ¥¹¥È€¹€ë¡¥ref_tsk€Ë€è€ë¥Ù¡Œ¥¹Í¥ÀèÅÙ€ÈžœºßÍ¥ÀèÅÙ€Î»²ŸÈœèÍý€Î¥Æ
+ *  ¥¹¥È€â·ó€Í€Æ€€€ë¡¥
+ *
+ * ¡Ú¥Æ¥¹¥È¹àÌÜ¡Û
+ *
+ *	(A) ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯œèÍý¡Êloc_mtx¡Ë
+ *		(A-1) ¥í¥Ã¥¯€µ€ì€Æ€€€Ê€€Ÿì¹ç€Ë€Ï¡€€¹€°€Ë¥í¥Ã¥¯€Ç€­€ë€³€È
+ *		(A-2) Â¿œÅ€Ë¥í¥Ã¥¯€·€è€Š€È€¹€ë€È¡€E_OBJ¥š¥é¡Œ€Ë€Ê€ë€³€È
+ *		(A-3) ¥í¥Ã¥¯€µ€ì€Æ€€€ëŸì¹ç€Ë€Ï¡€Í¥ÀèÅÙœç€ÇÂÔ€ÁŸõÂÖ€Ë€Ê€ë€³€È
+ *	(B) ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯²òœüœèÍý¡Êunl_mtx¡Ë
+ *		(B-1) ÂŸ¥¿¥¹¥¯€¬¥í¥Ã¥¯€·€Æ€€€ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò²òÊü€·€è€Š€È€¹€ë€È
+ *		¡¡¡¡¡¡E_OBJ¥š¥é¡Œ€Ë€Ê€ë€³€È
+ *		(B-2) ÂÔ€Á¥¿¥¹¥¯€¬€Ê€€€È¡€Ã±€Ë¥í¥Ã¥¯²òœü€¹€ë€³€È
+ *		(B-3) ÂÔ€Á¥¿¥¹¥¯€Ë¥í¥Ã¥¯€òÅÏ€¹€³€È
+ *		(B-4) ÂÔ€Á¥¿¥¹¥¯€Ë¥í¥Ã¥¯€òÅÏ€·€Æ¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬µ¯€³€ë€³€È
+ *	(C) ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯œèÍý¡Êploc_mtx¡Ë
+ *		(C-1) ¥í¥Ã¥¯€µ€ì€Æ€€€ëŸì¹ç€Ë€Ï¡€€¹€°€ËE_TMOUT¥š¥é¡Œ€Ë€Ê€ë€³€È
+ *	(D) ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯œèÍý¡Êtloc_mtx¡Ë
+ *		(D-1) ¥í¥Ã¥¯€µ€ì€Æ€€€ëŸì¹ç€Ë€Ï¡€¥¿¥€¥à¥¢¥Š¥ÈÉÕ€­€ÎÂÔ€ÁŸõÂÖ€Ë€Ê
+ *		¡¡¡¡¡¡€ë€³€È
+ *	(E) €ª€Þ€±
+ *		(E-1) ¥¿¥¹¥¯€òœªÎ»€¹€ë€È¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯²òœü€¹€ë€³€È
+ *
+ * ¡Ú»ÈÍÑ¥ê¥œ¡Œ¥¹¡Û
+ *
+ *	TASK1: ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡€¥á¥€¥ó¥¿¥¹¥¯¡€ºÇœé€«€éµ¯Æ°
+ *	TASK2: ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	TASK3: ¹âÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	MTX1: ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊTA_CEILINGÂ°À­¡€ŸåžÂ€Ï¹âÍ¥ÀèÅÙ¡Ë
+ *
+ * ¡Ú¥Æ¥¹¥È¥·¡Œ¥±¥ó¥¹¡Û
+ *
+ *	== TASK1¡ÊÍ¥ÀèÅÙ¡§Äã¡Ë==
+ *		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_OBJ			... (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
+ *	== TASK2¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë==
+ *	5:	ploc_mtx(MTX1) -> E_TMOUT		... (C-1)
+ *		loc_mtx(MTX1)					... (A-3)
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	6:	ref_mtx(MTX1, &rmtx)
+ *		assert(rmtx.htskid == TASK1)
+ *		assert(rmtx.wtskid == TASK2)
+ *		act_tsk(TASK3)
+ *	7:	tslp_tsk(10) -> E_TMOUT
+ *	== TASK3¡ÊÍ¥ÀèÅÙ¡§¹â¡Ë==
+ *	8:	unl_mtx(MTX1) -> E_OBJ			... (B-1)
+ *	9:	loc_mtx(MTX1)					... (A-3)
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	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()
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	12:	ext_tsk() -> noreturn			... (E-1)
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	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()
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	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)
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	18:	unl_mtx(MTX1)					... (B-2)
+ *	19:	ext_tsk() -> noreturn
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	20:	END
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include "kernel_cfg.h"
+#include "test_lib.h"
+#include "test_mutex.h"
+
+extern ER	bit_mutex(void);
+
+/* DO NOT DELETE THIS LINE -- gentest depends on it. */
+
+void
+task1(intptr_t exinf)
+{
+	ER_UINT	ercd;
+	T_RTSK	rtsk;
+	T_RMTX	rmtx;
+
+	test_start(__FILE__);
+
+	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_OBJ);
+
+	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_UINT	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_UINT	ercd;
+
+	check_point(8);
+	ercd = unl_mtx(MTX1);
+	check_ercd(ercd, E_OBJ);
+
+	check_point(9);
+	ercd = loc_mtx(MTX1);
+	check_ercd(ercd, E_OK);
+
+	check_point(12);
+	ercd = ext_tsk();
+
+	check_point(0);
+}
Index: /extension/mutex/test/test_mutex3.cfg
===================================================================
--- /extension/mutex/test/test_mutex3.cfg	(revision 7)
+++ /extension/mutex/test/test_mutex3.cfg	(revision 7)
@@ -0,0 +1,18 @@
+/*
+ *  @(#) $Id$
+ */
+
+/*
+ *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥Æ¥¹¥È(3)€Î¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+ */
+INCLUDE("target_timer.cfg");
+INCLUDE("syssvc/syslog.cfg");
+INCLUDE("syssvc/banner.cfg");
+INCLUDE("syssvc/serial.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: /extension/mutex/test/test_mutex4.c
===================================================================
--- /extension/mutex/test/test_mutex4.c	(revision 7)
+++ /extension/mutex/test/test_mutex4.c	(revision 7)
@@ -0,0 +1,724 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2013 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$
+ */
+
+/* 
+ *		¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥Æ¥¹¥È(4)
+ *
+ * ¡Ú¥Æ¥¹¥È€ÎÌÜÅª¡Û
+ *
+ *  Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ËÂÐ€·€Æ¡€loc_mtx€Èunl_mtx€ËÈŒ€ŠÍ¥ÀèÅÙ€ÎÊÑ
+ *  ¹¹œèÍý€òÌÖÍåÅª€Ë¥Æ¥¹¥È€¹€ë¡¥€¿€À€·¡€change_priority€È
+ *  mutex_calc_priority€ÎÆâÍÆ€Ë€ÏÆ§€ß¹þ€Þ€Ê€€¡¥
+ *
+ * ¡Ú¥Æ¥¹¥È¹àÌÜ¡Û
+ *
+ *	(A) ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯œèÍý¡Êloc_mtx¡Ë€ËÈŒ€ŠÍ¥ÀèÅÙÊÑ¹¹
+ *		(A-1) ¥í¥Ã¥¯€·€¿¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎÍ¥ÀèÅÙŸåžÂ€¬Œ«¥¿¥¹¥¯€ÎžœºßÍ¥Àè
+ *			  ÅÙ€è€ê€â¹â€€Ÿì¹ç€Ë¡€Œ«¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€¬€œ€ÎÍ¥ÀèÅÙŸåžÂ€Þ€Ç
+ *			  Ÿå€¬€ë€³€È¡¥€Þ€¿¡€Æ±€žÍ¥ÀèÅÙÆâ€Ç€ÎÍ¥Àèœç°Ì€¬ºÇ¹â€Ë€Ê€ë€³
+ *			  €È
+ *		(A-2) ¥í¥Ã¥¯€·€¿¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎÍ¥ÀèÅÙŸåžÂ€¬Œ«¥¿¥¹¥¯€ÎžœºßÍ¥Àè
+ *			  ÅÙ€ÈÆ±€žŸì¹ç€Ë¡€Œ«¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€¬ÊÑ€ï€é€Ê€€€³€È¡¥€Þ€¿¡€
+ *			  Æ±€žÍ¥ÀèÅÙÆâ€Ç€ÎÍ¥Àèœç°Ì€¬ÊÑ€ï€é€Ê€€€³€È
+ *		(A-3) ¥í¥Ã¥¯€·€¿¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎÍ¥ÀèÅÙŸåžÂ€¬Œ«¥¿¥¹¥¯€ÎžœºßÍ¥Àè
+ *			  ÅÙ€è€ê€âÄã€€Ÿì¹ç€Ë¡€Œ«¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€¬ÊÑ€ï€é€Ê€€€³€È¡¥€Þ
+ *			  €¿¡€Æ±€žÍ¥ÀèÅÙÆâ€Ç€ÎÍ¥Àèœç°Ì€¬ÊÑ€ï€é€Ê€€€³€È
+ *	(B) ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯²òœüœèÍý¡Êunl_mtx¡Ë€ËÈŒ€Š¥í¥Ã¥¯²òœü€·€¿
+ * 		¥¿¥¹¥¯€ÎÍ¥ÀèÅÙÊÑ¹¹
+ *		(B-1) ¥í¥Ã¥¯²òœü€·€¿¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎŸåžÂÍ¥ÀèÅÙ€¬Œ«¥¿¥¹¥¯€Îžœºß
+ *			  Í¥ÀèÅÙ€ÈÆ±€ž€Ç¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯²òœü€ÇÍ¥ÀèÅÙ€¬²Œ€¬
+ *			  €ë€Ù€­Ÿì¹ç€Ë¡€Œ«¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€¬Å¬ÀÚ€Ë²Œ€²€é€ì€ë€³€È¡¥€Þ
+ *			  €¿¡€Æ±€žÍ¥ÀèÅÙÆâ€Ç€ÎÍ¥Àèœç°Ì€¬ºÇ¹â€Ë€Ê€ë€³€È
+ *		(B-2) ¥í¥Ã¥¯²òœü€·€¿¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎŸåžÂÍ¥ÀèÅÙ€¬Œ«¥¿¥¹¥¯€Îžœºß
+ *			  Í¥ÀèÅÙ€ÈÆ±€ž€Ç¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯²òœü€ÇÍ¥ÀèÅÙ€¬ÊÑ€ï
+ *			  €ë€Ù€­€Ç€Ê€€Ÿì¹ç€Ë¡€Œ«¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€¬ÊÑ€ï€é€Ê€€€³€È¡¥€Þ
+ *			  €¿¡€Æ±€žÍ¥ÀèÅÙÆâ€Ç€ÎÍ¥Àèœç°Ì€¬ÊÑ€ï€é€Ê€€€³€È
+ *		(B-3) ¥í¥Ã¥¯²òœü€·€¿¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎŸåžÂÍ¥ÀèÅÙ€¬Œ«¥¿¥¹¥¯€Îžœºß
+ *			  Í¥ÀèÅÙ€è€ê€âÄã€€Ÿì¹ç€Ë¡€Œ«¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€¬ÊÑ€ï€é€Ê€€€³€È¡¥
+ *			  €Þ€¿¡€Æ±€žÍ¥ÀèÅÙÆâ€Ç€ÎÍ¥Àèœç°Ì€¬ÊÑ€ï€é€Ê€€€³€È
+ *	(C) ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯²òœüœèÍý¡Êunl_mtx¡Ë€ËÈŒ€€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò
+ *		¥í¥Ã¥¯€·€¿¥¿¥¹¥¯€ÎÍ¥ÀèÅÙÊÑ¹¹
+ *		(C-1) ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎÍ¥ÀèÅÙŸåžÂ€¬¿·€¿€Ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯
+ *			  €·€¿¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€è€ê€â¹â€€Ÿì¹ç€Ë¡€Åö³º¥¿¥¹¥¯€ÎÍ¥Àè
+ *			  ÅÙ€¬€œ€ÎÍ¥ÀèÅÙŸåžÂ€Þ€ÇŸå€¬€ë€³€È¡¥€Þ€¿¡€Æ±€žÍ¥ÀèÅÙÆâ€Ç€Î
+ *			  Í¥Àèœç°Ì€¬ºÇÄã€Ë€Ê€ë€³€È
+ *		(C-2) ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎÍ¥ÀèÅÙŸåžÂ€¬¿·€¿€Ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯
+ *			  €·€¿¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€ÈÆ±€žŸì¹ç€Ë¡€Åö³º¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€¬
+ *			  ÊÑ€ï€é€Ê€€€³€È¡¥€Þ€¿¡€Æ±€žÍ¥ÀèÅÙÆâ€Ç€ÎÍ¥Àèœç°Ì€¬ºÇÄã€Ë€Ê
+ *			  €ë€³€È
+ *		(C-3) ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎÍ¥ÀèÅÙŸåžÂ€¬¿·€¿€Ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯
+ *			  €·€¿¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€è€ê€âÄã€€Ÿì¹ç€Ë¡€Åö³º¥¿¥¹¥¯€ÎÍ¥Àè
+ *			  ÅÙ€¬ÊÑ€ï€é€Ê€€€³€È¡¥€Þ€¿¡€Æ±€žÍ¥ÀèÅÙÆâ€Ç€ÎÍ¥Àèœç°Ì€¬ºÇÄã
+ *			  €Ë€Ê€ë€³€È
+ *	(D) ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯œèÍý¡Êloc_mtx¡Ë€ÎE_ILUSE¥š¥é¡Œ
+ *		(D-1) Œ«¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ€¬¡€¥í¥Ã¥¯€·€è€Š€È€·€¿¥ß¥å¡Œ¥Æ¥Ã¥¯
+ *			  ¥¹€ÎŸåžÂÍ¥ÀèÅÙ€è€ê€â¹â€€»þ¡€E_ILUSE¥š¥é¡Œ€Ë€Ê€ë€³€È
+ *		(D-2) Œ«¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ€¬¡€¥í¥Ã¥¯€·€è€Š€È€·€¿¥ß¥å¡Œ¥Æ¥Ã¥¯
+ *			  ¥¹€ÎŸåžÂÍ¥ÀèÅÙ€ÈÆ±€ž€«€œ€ì€è€êÄã€±€ì€Ð¡€Œ«¥¿¥¹¥¯€ÎžœºßÍ¥
+ *			  ÀèÅÙ€¬€œ€ì€è€ê¹â€¯€Æ€â¡€E_ILUSE¥š¥é¡Œ€Ë€Ê€é€Ê€€€³€È
+ *
+ * ¡Ú¥Æ¥¹¥È¹àÌÜ€ÎŒÂžœÊýË¡¡Û
+ *
+ *	(A-1)
+ *		ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€Ë¡€¹âÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX2¡Ë€ò
+ *		¥í¥Ã¥¯€µ€»¡€¹âÍ¥ÀèÅÙ€Ë€Ê€ë€³€È€ò³ÎÇ§€¹€ë¡¥€Þ€¿¡€ŒÂ¹Ô²ÄÇœŸõÂÖ€Î
+ *		¹âÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK4¡Ë€è€ê€â¡€Í¥Àèœç°Ì€¬¹â€¯€Ê€ë€³€È€ò³ÎÇ§€¹€ë¡¥
+ *		¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ€ÇŒÂ»Ü€¹€ë¡¥
+ *	(A-2)
+ *		ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€Ë¡€ÃæÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX1¡Ë€ò
+ *		¥í¥Ã¥¯€µ€»¡€Í¥ÀèÅÙ€¬ÊÑ€ï€é€Ê€€€³€È€ò³ÎÇ§€¹€ë¡¥€Þ€¿¡€ŒÂ¹Ô²ÄÇœŸõ
+ *		ÂÖ€ÎÃæÍ¥ÀèÅÙ¥¿¥¹¥¯€ò2€Ä¡ÊTASK2¡€TASK3¡Ë€òÍÑ°Õ€·€Æ€ª€­¡€Í¥Àèœç°Ì
+ *		€¬ÊÑ€ï€é€Ê€€€³€È€ò³ÎÇ§€¹€ë¡¥¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ€ÇŒÂ»Ü€¹€ë¡¥
+ *	(A-3)
+ *		ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€¬¹âÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX2¡Ë€ò¥í¥Ã
+ *		¥¯€·€Æ¹âÍ¥ÀèÅÙ€Ë€Ê€Ã€Æ€€€ëŸõÂÖ€Ç¡€ÃæÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹
+ *		¡ÊMTX1¡Ë€ò¥í¥Ã¥¯€µ€»¡€Í¥ÀèÅÙ€¬ÊÑ€ï€é€Ê€€€³€È€ò³ÎÇ§€¹€ë¡¥€Þ€¿¡€
+ *		ŒÂ¹Ô²ÄÇœŸõÂÖ€Î¹âÍ¥ÀèÅÙ¥¿¥¹¥¯€ò2€Ä¡ÊTASK4¡€TASK5¡Ë€òÍÑ°Õ€·€Æ€ª€­¡€
+ *		Í¥Àèœç°Ì€¬ÊÑ€ï€é€Ê€€€³€È€ò³ÎÇ§€¹€ë¡¥¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ€ÇŒÂ»Ü
+ *		€¹€ë¡¥
+ *	(B-1)
+ *		ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€Ë¹âÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX2¡Ë€Î€ß
+ *		€ò¥í¥Ã¥¯€µ€»€Æ€€€ëŸõÂÖ€Ç¡€€œ€ì€ò¥í¥Ã¥¯²òœü€µ€»¡€ÃæÍ¥ÀèÅÙ€Ë€Ê€ë
+ *		€³€È€ò³ÎÇ§€¹€ë¡¥€Þ€¿¡€ŒÂ¹Ô²ÄÇœŸõÂÖ€ÎÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK2¡Ë€è€ê
+ *		€â¡€Í¥Àèœç°Ì€¬¹â€¯€Ê€ë€³€È€ò³ÎÇ§€¹€ë¡¥
+ *	(B-2)
+ *		ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€ËÃæÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX1¡Ë€Î€ß
+ *		€ò¥í¥Ã¥¯€µ€»€Æ€€€ëŸõÂÖ€Ç¡€€œ€ì€ò¥í¥Ã¥¯²òœü€µ€»¡€Í¥ÀèÅÙ€¬ÊÑ€ï€é
+ *		€Ê€€€³€È€ò³ÎÇ§€¹€ë¡¥€Þ€¿¡€ŒÂ¹Ô²ÄÇœŸõÂÖ€ÎÃæÍ¥ÀèÅÙ¥¿¥¹¥¯€ò2€Ä
+ *		¡ÊTASK2¡€TASK3¡Ë€òÍÑ°Õ€·€Æ€ª€­¡€Í¥Àèœç°Ì€¬ÊÑ€ï€é€Ê€€€³€È€ò³ÎÇ§
+ *		€¹€ë¡¥¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ€ÇŒÂ»Ü€¹€ë¡¥
+ *	(B-3)
+ *		ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€Ë¹âÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX2¡Ë€ÈÃæ
+ *		Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX1¡Ë€ò¥í¥Ã¥¯€µ€»€Æ€€€ëŸõÂÖ€Ç¡€ÃæÍ¥
+ *		ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX1¡Ë€ò¥í¥Ã¥¯²òœü€µ€»¡€Í¥ÀèÅÙ€¬ÊÑ€ï€é
+ *		€Ê€€€³€È€ò³ÎÇ§€¹€ë¡¥€Þ€¿¡€ŒÂ¹Ô²ÄÇœŸõÂÖ€Î¹âÍ¥ÀèÅÙ¥¿¥¹¥¯€ò2€Ä
+ *		¡ÊTASK4¡€TASK5¡Ë€òÍÑ°Õ€·€Æ€ª€­¡€Í¥Àèœç°Ì€¬ÊÑ€ï€é€Ê€€€³€È€ò³ÎÇ§
+ *		€¹€ë¡¥¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ€ÇŒÂ»Ü€¹€ë¡¥
+ *	(C-1)
+ *		ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€Ë¹âÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò2€Ä¡ÊMTX2¡€
+ *		MTX3¡Ë¥í¥Ã¥¯€µ€»¡€ÊÌ€ÎÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK2¡Ë€¬MTX2€òÂÔ€Ã€Æ€€€ë
+ *		ŸõÂÖ€Ç¡€TASK1€ËMTX2€ò¥í¥Ã¥¯²òœü€µ€»¡€TASK2€ÎÍ¥ÀèÅÙ€¬¹âÍ¥ÀèÅÙ€Ë
+ *		€Ê€ë€³€È€ò³ÎÇ§€¹€ë¡¥€Þ€¿¡€TASK2€ÎÍ¥Àèœç°Ì€¬¡€TASK1€è€ê€âÄã€¯€Ê
+ *		€ë€³€È€ò³ÎÇ§€¹€ë¡¥
+ *	(C-2)
+ *		ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK2¡Ë€ËÃæÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX1¡Ë€ò¥í¥Ã
+ *		¥¯€µ€»¡€ÊÌ€ÎÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€¬MTX1€òÂÔ€Ã€Æ€€€ëŸõÂÖ€Ç¡€
+ *		TASK2€ËMTX1€ò¥í¥Ã¥¯²òœü€µ€»¡€TASK1€ÎÍ¥ÀèÅÙ€¬ÃæÍ¥ÀèÅÙ€Î€Þ€ÞÊÑ²œ
+ *		€·€Ê€€€³€È€ò³ÎÇ§€¹€ë¡¥€Þ€¿¡€ŒÂ¹Ô²ÄÇœŸõÂÖ€ÎÃæÍ¥ÀèÅÙ¥¿¥¹¥¯€ò€â€Š
+ *		1€Ä¡ÊTASK3¡ËÍÑ°Õ€·€Æ€ª€­¡€TASK1€ÎÍ¥Àèœç°Ì€¬TASK3€è€ê€âÄã€¯€Ê€ë
+ *		€³€È€ò³ÎÇ§€¹€ë¡¥
+ *	(C-3)
+ *		ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€ËÃæÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX1¡Ë€È¹â
+ *		Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX3¡Ë€ò¥í¥Ã¥¯€µ€»¡€ÊÌ€ÎÃæÍ¥ÀèÅÙ¥¿¥¹
+ *		¥¯¡ÊTASK2¡Ë€¬ÊÌ€Î¹âÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX2¡Ë€ò¥í¥Ã¥¯€·€Æ
+ *		MTX1€òÂÔ€Ã€Æ€€€ëŸõÂÖ€Ç¡€TASK1€ËMTX1€ò¥í¥Ã¥¯²òœü€µ€»¡€TASK2€ÎÍ¥
+ *		ÀèÅÙ€¬¹âÍ¥ÀèÅÙ€Î€Þ€ÞÊÑ²œ€·€Ê€€€³€È€ò³ÎÇ§€¹€ë¡¥€Þ€¿¡€TASK2€ÎÍ¥Àè
+ *		œç°Ì€¬¡€TASK1€è€ê€âÄã€¯€Ê€ë€³€È€ò³ÎÇ§€¹€ë¡¥
+ *	(D-1)
+ *		¹âÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK4¡Ë€Ë¡€ÃæÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX1¡Ë€ò
+ *		¥í¥Ã¥¯€µ€»¡€E_ILUSE¥š¥é¡Œ€Ë€Ê€ë€³€È€ò³ÎÇ§€¹€ë¡¥
+ *	(D-2)
+ *		ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€¬¹âÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX2¡Ë€ò¥í¥Ã
+ *		¥¯€·€Æ¹âÍ¥ÀèÅÙ€Ë€Ê€Ã€Æ€€€ëŸõÂÖ€Ç¡€ÃæÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹
+ *		¡ÊMTX1¡Ë€ò¥í¥Ã¥¯€µ€»¡€E_ILUSE¥š¥é¡Œ€Ë€Ê€ë€Ê€€€³€È€ò³ÎÇ§€¹€ë¡¥
+ *
+ * ¡Ú»ÈÍÑ¥ê¥œ¡Œ¥¹¡Û
+ *
+ *	TASK1: ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡€¥á¥€¥ó¥¿¥¹¥¯¡€ºÇœé€«€éµ¯Æ°
+ *	TASK2: ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	TASK3: ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	TASK4: ¹âÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	TASK5: ¹âÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	MTX1: ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊTA_CEILINGÂ°À­¡€ŸåžÂ€ÏÃæÍ¥ÀèÅÙ¡Ë
+ *	MTX2: ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊTA_CEILINGÂ°À­¡€ŸåžÂ€Ï¹âÍ¥ÀèÅÙ¡Ë
+ *	MTX3: ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊTA_CEILINGÂ°À­¡€ŸåžÂ€Ï¹âÍ¥ÀèÅÙ¡Ë
+ *
+ * ¡Ú¥Æ¥¹¥È¥·¡Œ¥±¥ó¥¹¡Û
+ *
+ *	== TASK1¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë==
+ *		call(set_bit_func(bit_mutex))
+ *	1:	dis_dsp()
+ *	2:	act_tsk(TASK2)
+ *		act_tsk(TASK4)
+ *	//		¹â¡§TASK4¡€Ãæ¡§TASK1¢ªTASK2
+ *	3:	ploc_mtx(MTX2)								... (A-1)
+ *	//		¹â¡§TASK1¢ªTASK4¡€Ãæ¡§TASK2¡€MTX2¡§TASK1
+ *		get_pri(TSK_SELF, &tskpri)
+ *		assert(tskpri == HIGH_PRIORITY)
+ *	4:	ena_dsp()
+ *	5:	unl_mtx(MTX2)								... (B-1)
+ *	//		¹â¡§TASK4¡€Ãæ¡§TASK1¢ªTASK2
+ *	== TASK4¡ÊÍ¥ÀèÅÙ¡§¹â¡Ë==
+ *	6:	loc_mtx(MTX1) -> E_ILUSE					... (D-1)
+ *	7:	slp_tsk()
+ *	//		Ãæ¡§TASK1¢ªTASK2
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	8:	get_pri(TSK_SELF, &tskpri)
+ *		assert(tskpri == MID_PRIORITY)
+ *
+ *	9:	dis_dsp()
+ *	10:	rot_rdq(MID_PRIORITY)
+ *	//		Ãæ¡§TASK2¢ªTASK1
+ *	11:	act_tsk(TASK3)
+ *	//		Ãæ¡§TASK2¢ªTASK1¢ªTASK3
+ *	12:	ploc_mtx(MTX1)								... (A-2)
+ *	//		Ãæ¡§TASK2¢ªTASK1¢ªTASK3¡€MTX1¡§TASK1
+ *		get_pri(TSK_SELF, &tskpri)
+ *		assert(tskpri == MID_PRIORITY)
+ *	13:	ena_dsp()
+ *	== TASK2¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë==
+ *	14:	slp_tsk()
+ *	//		Ãæ¡§TASK1¢ªTASK3¡€MTX1¡§TASK1
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	15:	slp_tsk()
+ *	//		Ãæ¡§TASK3¡€MTX1¡§TASK1
+ *	== TASK3¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë==
+ *	16:	wup_tsk(TASK1)
+ *	//		Ãæ¡§TASK3¢ªTASK1¡€MTX1¡§TASK1
+ *	17:	slp_tsk()
+ *	//		Ãæ¡§TASK1¡€MTX1¡§TASK1
+ *
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	18:	wup_tsk(TASK2)
+ *	//		Ãæ¡§TASK1¢ªTASK2¡€MTX1¡§TASK1
+ *	19:	dis_dsp()
+ *	20:	rot_rdq(MID_PRIORITY)
+ *	//		Ãæ¡§TASK2¢ªTASK1¡€MTX1¡§TASK1
+ *	21:	wup_tsk(TASK3)
+ *	//		Ãæ¡§TASK2¢ªTASK1¢ªTASK3¡€MTX1¡§TASK1
+ *	22:	unl_mtx(MTX1)								... (B-2)
+ *	//		Ãæ¡§TASK2¢ªTASK1¢ªTASK3
+ *		get_pri(TSK_SELF, &tskpri)
+ *		assert(tskpri == MID_PRIORITY)
+ *	23:	ena_dsp()
+ *	== TASK2¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë==
+ *	24:	slp_tsk()
+ *	//		Ãæ¡§TASK1¢ªTASK3
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	25:	slp_tsk()
+ *	//		Ãæ¡§TASK3
+ *	== TASK3¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë==
+ *	26:	wup_tsk(TASK1)
+ *	//		Ãæ¡§TASK3¢ªTASK1
+ *	27:	slp_tsk()
+ *	//		Ãæ¡§TASK1
+ *
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	28:	dis_dsp()
+ *	29:	wup_tsk(TASK4)
+ *	//		¹â¡§TASK4¡€Ãæ¡§TASK1
+ *	30:	ploc_mtx(MTX2)
+ *	//		¹â¡§TASK1¢ªTASK4¡€MTX2¡§TASK1
+ *	31:	rot_rdq(HIGH_PRIORITY)
+ *	//		¹â¡§TASK4¢ªTASK1¡€MTX2¡§TASK1
+ *	32:	act_tsk(TASK5)
+ *	//		¹â¡§TASK4¢ªTASK1¢ªTASK5¡€MTX2¡§TASK1
+ *	33:	ploc_mtx(MTX1)								... (A-3)(D-2)
+ *	//		¹â¡§TASK4¢ªTASK1¢ªTASK5¡€MTX2¡§TASK1¡€MTX1¡§TASK1
+ *		get_pri(TSK_SELF, &tskpri)
+ *		assert(tskpri == HIGH_PRIORITY)
+ *	34:	ena_dsp()
+ *	== TASK4¡ÊÂ³€­¡Ë==
+ *	35:	slp_tsk()
+ *	//		¹â¡§TASK1¢ªTASK5¡€MTX2¡§TASK1¡€MTX1¡§TASK1
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	36:	slp_tsk()
+ *	//		¹â¡§TASK5¡€MTX2¡§TASK1¡€MTX1¡§TASK1
+ *	== TASK5¡ÊÍ¥ÀèÅÙ¡§¹â¡Ë==
+ *	37:	wup_tsk(TASK1)
+ *	//		¹â¡§TASK5¢ªTASK1¡€MTX2¡§TASK1¡€MTX1¡§TASK1
+ *	38:	slp_tsk()
+ *	//		¹â¡§TASK1¡€MTX2¡§TASK1¡€MTX1¡§TASK1
+ *
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	39:	dis_dsp()
+ *	40:	wup_tsk(TASK4)
+ *	//		¹â¡§TASK1¢ªTASK4¡€MTX2¡§TASK1¡€MTX1¡§TASK1
+ *	41:	rot_rdq(HIGH_PRIORITY)
+ *	//		¹â¡§TASK4¢ªTASK1¡€MTX2¡§TASK1¡€MTX1¡§TASK1
+ *	42:	wup_tsk(TASK5)
+ *	//		¹â¡§TASK4¢ªTASK1¢ªTASK5¡€MTX2¡§TASK1¡€MTX1¡§TASK1
+ *	43:	unl_mtx(MTX1)								... (B-3)
+ *	//		¹â¡§TASK4¢ªTASK1¢ªTASK5¡€MTX2¡§TASK1
+ *		get_pri(TSK_SELF, &tskpri)
+ *		assert(tskpri == HIGH_PRIORITY)
+ *	44:	ena_dsp()
+ *	== TASK4¡ÊÂ³€­¡Ë==
+ *	45:	slp_tsk()
+ *	//		¹â¡§TASK1¢ªTASK5¡€MTX2¡§TASK1
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	46:	slp_tsk()
+ *	//		¹â¡§TASK5¡€MTX2¡§TASK1
+ *	== TASK5¡ÊÂ³€­¡Ë==
+ *	47:	wup_tsk(TASK1)
+ *	//		¹â¡§TASK5¢ªTASK1¡€MTX2¡§TASK1
+ *	48:	slp_tsk()
+ *	//		¹â¡§TASK1¡€MTX2¡§TASK1
+ *
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	49:	wup_tsk(TASK2)
+ *		wup_tsk(TASK3)
+ *		slp_tsk()
+ *	//		Ãæ¡§TASK2¢ªTASK3¡€MTX2¡§TASK1
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	50:	loc_mtx(MTX2)
+ *	//		Ãæ¡§TASK3¡€MTX2¡§TASK1¢ªTASK2
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	51:	wup_tsk(TASK1)
+ *	//		¹â¡§TASK1¡€Ãæ¡§TASK3¡€MTX2¡§TASK1¢ªTASK2
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	52:	loc_mtx(MTX3)
+ *	//		¹â¡§TASK1¡€Ãæ¡§TASK3¡€MTX2¡§TASK1¢ªTASK2¡€MTX3¡§TASK1
+ *	53:	unl_mtx(MTX2)								... (C-1)
+ *	//		¹â¡§TASK1¢ªTASK2¡€Ãæ¡§TASK3¡€MTX2¡§TASK2¡€MTX3¡§TASK1
+ *		get_pri(TASK2, &tskpri)
+ *		assert(tskpri == HIGH_PRIORITY)
+ *	54:	loc_mtx(MTX1)
+ *	//		¹â¡§TASK1¢ªTASK2¡€Ãæ¡§TASK3¡€MTX1¡§TASK1¡€MTX2¡§TASK2¡€MTX3¡§TASK1
+ *	55:	slp_tsk()
+ *	//		¹â¡§TASK2¡€Ãæ¡§TASK3¡€MTX1¡§TASK1¡€MTX2¡§TASK2¡€MTX3¡§TASK1
+ *
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	56:	wup_tsk(TASK1)
+ *	//		¹â¡§TASK2¢ªTASK1¡€Ãæ¡§TASK3¡€MTX1¡§TASK1¡€MTX2¡§TASK2¡€MTX3¡§TASK1
+ *	57:	loc_mtx(MTX1)
+ *	//		¹â¡§TASK1¡€Ãæ¡§TASK3¡€MTX1¡§TASK1¢ªTASK2¡€MTX2¡§TASK2¡€MTX3¡§TASK1
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	58:	unl_mtx(MTX1)								... (C-3)
+ *	//		¹â¡§TASK1¢ªTASK2¡€Ãæ¡§TASK3¡€MTX1¡§TASK2¡€MTX2¡§TASK2¡€MTX3¡§TASK1
+ *		get_pri(TASK2, &tskpri)
+ *		assert(tskpri == HIGH_PRIORITY)
+ *	59:	unl_mtx(MTX3)
+ *	//		¹â¡§TASK2¡€Ãæ¡§TASK1¢ªTASK3¡€MTX1¡§TASK2¡€MTX2¡§TASK2
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	60:	unl_mtx(MTX2)
+ *	//		Ãæ¡§TASK2¢ªTASK1¢ªTASK3¡€MTX1¡§TASK2
+ *
+ *	61:	rot_rdq(MID_PRIORITY)
+ *	//		Ãæ¡§TASK1¢ªTASK3¢ªTASK2¡€MTX1¡§TASK2
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	62:	loc_mtx(MTX1)
+ *	//		Ãæ¡§TASK3¢ªTASK2¡€MTX1¡§TASK2¢ªTASK1
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	63:	rot_rdq(MID_PRIORITY)
+ *	//		Ãæ¡§TASK2¢ªTASK3¡€MTX1¡§TASK2¢ªTASK1
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	64:	unl_mtx(MTX1)								... (C-2)
+ *	//		Ãæ¡§TASK2¢ªTASK3¢ªTASK1¡€MTX1¡§TASK1
+ *		get_pri(TASK1, &tskpri)
+ *		assert(tskpri == MID_PRIORITY)
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	65:	ext_tsk() -> noreturn
+ *	//		Ãæ¡§TASK3¢ªTASK1¡€MTX1¡§TASK1
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	66:	ext_tsk() -> noreturn
+ *	//		Ãæ¡§TASK1¡€MTX1¡§TASK1
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	67:	END
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include "kernel_cfg.h"
+#include "test_lib.h"
+#include "test_mutex4.h"
+
+extern ER	bit_mutex(void);
+
+/* DO NOT DELETE THIS LINE -- gentest depends on it. */
+
+void
+task1(intptr_t exinf)
+{
+	ER_UINT	ercd;
+	PRI		tskpri;
+
+	test_start(__FILE__);
+
+	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_UINT	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_UINT	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_UINT	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_UINT	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: /extension/mutex/test/test_mutex4.cfg
===================================================================
--- /extension/mutex/test/test_mutex4.cfg	(revision 7)
+++ /extension/mutex/test/test_mutex4.cfg	(revision 7)
@@ -0,0 +1,22 @@
+/*
+ *  @(#) $Id$
+ */
+
+/*
+ *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥Æ¥¹¥È(4)€Î¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+ */
+INCLUDE("target_timer.cfg");
+INCLUDE("syssvc/syslog.cfg");
+INCLUDE("syssvc/banner.cfg");
+INCLUDE("syssvc/serial.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: /extension/mutex/test/test_mutex4.h
===================================================================
--- /extension/mutex/test/test_mutex4.h	(revision 7)
+++ /extension/mutex/test/test_mutex4.h	(revision 7)
@@ -0,0 +1,74 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/* 
+ *		¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥Æ¥¹¥È(4)
+ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎÄêµÁ
+ */
+#include "target_test.h"
+
+/*
+ *  Í¥ÀèÅÙ€ÎÄêµÁ
+ */
+#define HIGH_PRIORITY	9		/* ¹âÍ¥ÀèÅÙ */
+#define MID_PRIORITY	10		/* ÃæÍ¥ÀèÅÙ */
+#define LOW_PRIORITY	11		/* ÄãÍ¥ÀèÅÙ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È€Ë°ÍÂž€¹€ë²ÄÇœÀ­€Î€¢€ëÄê¿ô€ÎÄêµÁ
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯¥µ¥€¥º */
+#endif /* STACK_SIZE */
+
+/*
+ *  ŽØ¿ô€Î¥×¥í¥È¥¿¥€¥×ÀëžÀ
+ */
+#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: /extension/mutex/test/test_mutex5.c
===================================================================
--- /extension/mutex/test/test_mutex5.c	(revision 7)
+++ /extension/mutex/test/test_mutex5.c	(revision 7)
@@ -0,0 +1,962 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2013 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$
+ */
+
+/* 
+ *		¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥Æ¥¹¥È(5)
+ *
+ * ¡Ú¥Æ¥¹¥È€ÎÌÜÅª¡Û
+ *
+ *  Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ËÂÐ€·€Æ¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎºÆœéŽü²œœèÍý€òÌÖ
+ *  ÍåÅª€Ë¥Æ¥¹¥È€¹€ë¡¥€¿€À€·¡€change_priority€Èmutex_calc_priority€ÎÆâ
+ *  ÍÆ€Ë€ÏÆ§€ß¹þ€Þ€Ê€€¡¥
+ *
+ * ¡Ú¥Æ¥¹¥È¹àÌÜ¡Û
+ *
+ *	(A) ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎœéŽü²œ¡Êini_mtx¡Ë€ËÈŒ€Š¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·
+ *		€Æ€€€¿¥¿¥¹¥¯¡ÊŒÂ¹Ô€Ç€­€ëŸõÂÖ¡Ë€ÎÍ¥ÀèÅÙÊÑ¹¹
+ *		(A-1) œéŽü²œ€·€¿¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎŸåžÂÍ¥ÀèÅÙ€¬¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò
+ *			  ¥í¥Ã¥¯€·€Æ€€€¿¥¿¥¹¥¯¡ÊŒÂ¹Ô€Ç€­€ëŸõÂÖ¡Ë€ÎžœºßÍ¥ÀèÅÙ€ÈÆ±€ž
+ *			  €Ç¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯²òœü€ÇÍ¥ÀèÅÙ€¬²Œ€¬€ë€Ù€­Ÿì¹ç€Ë¡€
+ *			  Åö³º¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€¬Å¬ÀÚ€Ë²Œ€²€é€ì€ë€³€È¡¥€Þ€¿¡€Æ±€žÍ¥Àè
+ *			  ÅÙÆâ€Ç€ÎÍ¥Àèœç°Ì€¬ºÇ¹â€Ë€Ê€ë€³€È
+ *		(A-2) œéŽü²œ€·€¿¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎŸåžÂÍ¥ÀèÅÙ€¬¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò
+ *			  ¥í¥Ã¥¯€·€Æ€€€¿¥¿¥¹¥¯¡ÊŒÂ¹Ô€Ç€­€ëŸõÂÖ¡Ë€ÎžœºßÍ¥ÀèÅÙ€ÈÆ±€ž
+ *			  €Ç¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯²òœü€ÇÍ¥ÀèÅÙ€¬ÊÑ€ï€ë€Ù€­€Ç€Ê€€
+ *			  Ÿì¹ç€Ë¡€Åö³º¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€¬ÊÑ€ï€é€Ê€€€³€È¡¥€Þ€¿¡€Æ±€žÍ¥
+ *			  ÀèÅÙÆâ€Ç€ÎÍ¥Àèœç°Ì€¬ÊÑ€ï€é€Ê€€€³€È
+ *		(A-3) œéŽü²œ€·€¿¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎŸåžÂÍ¥ÀèÅÙ€¬¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò
+ *			  ¥í¥Ã¥¯€·€Æ€€€¿¥¿¥¹¥¯¡ÊŒÂ¹Ô€Ç€­€ëŸõÂÖ¡Ë€ÎžœºßÍ¥ÀèÅÙ€è€ê€â
+ *			  Äã€€Ÿì¹ç€Ë¡€Åö³º¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€¬ÊÑ€ï€é€Ê€€€³€È¡¥€Þ€¿¡€Æ±
+ *			  €žÍ¥ÀèÅÙÆâ€Ç€ÎÍ¥Àèœç°Ì€¬ÊÑ€ï€é€Ê€€€³€È
+ *		(A-4) (A-1)€Î·ë²Ì¡€¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬µ¯€³€ë€³€È¡¥
+ *	(B) ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎœéŽü²œ¡Êini_mtx¡Ë€ËÈŒ€Š¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·
+ *		€Æ€€€¿¥¿¥¹¥¯¡ÊÂÔ€ÁŸõÂÖ¡Ë€ÎÍ¥ÀèÅÙÊÑ¹¹
+ *		(B-1) œéŽü²œ€·€¿¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎŸåžÂÍ¥ÀèÅÙ€¬¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò
+ *			  ¥í¥Ã¥¯€·€Æ€€€¿¥¿¥¹¥¯¡ÊÂÔ€ÁŸõÂÖ¡Ë€ÎžœºßÍ¥ÀèÅÙ€ÈÆ±€ž€Ç¡€
+ *			  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯²òœü€ÇÍ¥ÀèÅÙ€¬²Œ€¬€ë€Ù€­Ÿì¹ç€Ë¡€Åö
+ *			  ³º¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€¬Å¬ÀÚ€Ë²Œ€²€é€ì€ë€³€È¡¥€Þ€¿¡€Æ±€žÍ¥ÀèÅÙ
+ *			  Æâ€Ç€Îœçœø€¬ºÇžå€Ë€Ê€ë€³€È
+ *		(B-2) œéŽü²œ€·€¿¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎŸåžÂÍ¥ÀèÅÙ€¬¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò
+ *			  ¥í¥Ã¥¯€·€Æ€€€¿¥¿¥¹¥¯¡ÊÂÔ€ÁŸõÂÖ¡Ë€ÎžœºßÍ¥ÀèÅÙ€ÈÆ±€ž€Ç¡€
+ *			  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥í¥Ã¥¯²òœü€ÇÍ¥ÀèÅÙ€¬ÊÑ€ï€ë€Ù€­€Ç€Ê€€Ÿì¹ç
+ *			  €Ë¡€Åö³º¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€¬ÊÑ€ï€é€Ê€€€³€È¡¥€Þ€¿¡€Æ±€žÍ¥ÀèÅÙ
+ *			  Æâ€Ç€Îœçœø€¬ÊÑ€ï€é€Ê€€€³€È
+ *		(B-3) œéŽü²œ€·€¿¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎŸåžÂÍ¥ÀèÅÙ€¬¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò
+ *			  ¥í¥Ã¥¯€·€Æ€€€¿¥¿¥¹¥¯¡ÊÂÔ€ÁŸõÂÖ¡Ë€ÎžœºßÍ¥ÀèÅÙ€è€ê€âÄã€€Ÿì
+ *			  ¹ç€Ë¡€Åö³º¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€¬ÊÑ€ï€é€Ê€€€³€È¡¥€Þ€¿¡€Æ±€žÍ¥Àè
+ *			  ÅÙÆâ€Ç€Îœçœø€¬ÊÑ€ï€é€Ê€€€³€È
+ *	(C) ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎœéŽü²œ¡Êini_mtx¡Ë€ËÈŒ€Š¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€òÂÔ€Ã€Æ€€
+ *		€¿¥¿¥¹¥¯€ÎŸõÂÖÊÑ²œ
+ *		(C-1) ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€òÂÔ€Ã€Æ€€€¿¥¿¥¹¥¯€¬ÂÔ€Á²òœü€µ€ì€ë€³€È¡¥
+ *		(C-2) (C-1)€Î·ë²Ì¡€¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬µ¯€³€ë€³€È¡¥
+ *
+ * ¡Ú¥Æ¥¹¥È¹àÌÜ€ÎŒÂžœÊýË¡¡Û
+ *
+ *	(A-1)
+ *		ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€¬¡€ÃæÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX1¡Ë€ò
+ *		¥í¥Ã¥¯€·€¿ŸõÂÖ€Ç¡€¹âÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK5¡Ë€«€éMTX1€òºÆœéŽü²œ€·¡€
+ *		TASK1€ÎÍ¥ÀèÅÙ€¬ÄãÍ¥ÀèÅÙ€Ë²Œ€¬€ë€³€È€ò³ÎÇ§€¹€ë¡¥€Þ€¿¡€ŒÂ¹Ô²ÄÇœŸõ
+ *		ÂÖ€ÎÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK2¡Ë€è€ê€â¡€Í¥Àèœç°Ì€¬¹â€¯€Ê€ë€³€È€ò³ÎÇ§
+ *		€¹€ë¡¥¡¡
+ *	(A-2)
+ *		ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€¬¡€ÃæÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò2€Ä
+ *		¡ÊMTX1¡€MTX2¡Ë€ò¥í¥Ã¥¯€·€¿ŸõÂÖ€Ç¡€¹âÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK5¡Ë€«€é
+ *		MTX1€òºÆœéŽü²œ€·¡€TASK1€ÎÍ¥ÀèÅÙ€¬ÊÑ²œ€·€Ê€€€³€È€ò³ÎÇ§€¹€ë¡¥€Þ€¿¡€
+ *		ŒÂ¹Ô²ÄÇœŸõÂÖ€ÎÃæÍ¥ÀèÅÙ¥¿¥¹¥¯€ò2€Ä¡ÊTASK3¡€TASK4¡Ë€òÍÑ°Õ€·€Æ€ª€­¡€
+ *		Í¥Àèœç°Ì€¬ÊÑ€ï€é€Ê€€€³€È€ò³ÎÇ§€¹€ë¡¥
+ *	(A-3)
+ *		ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€¬¡€ÃæÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX2¡Ë€È
+ *		ÄãÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX3¡Ë€ò¥í¥Ã¥¯€·€¿ŸõÂÖ€Ç¡€¹âÍ¥ÀèÅÙ
+ *		¥¿¥¹¥¯¡ÊTASK5¡Ë€«€éMTX3€òºÆœéŽü²œ€·¡€TASK1€ÎÍ¥ÀèÅÙ€¬ÊÑ²œ€·€Ê€€
+ *		€³€È€ò³ÎÇ§€¹€ë¡¥€Þ€¿¡€ŒÂ¹Ô²ÄÇœŸõÂÖ€ÎÃæÍ¥ÀèÅÙ¥¿¥¹¥¯€ò2€Ä¡ÊTASK3¡€
+ *		TASK4¡Ë€òÍÑ°Õ€·€Æ€ª€­¡€Í¥Àèœç°Ì€¬ÊÑ€ï€é€Ê€€€³€È€ò³ÎÇ§€¹€ë¡¥
+ *	(A-4)
+ *		ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€¬¡€ÃæÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX2¡Ë€ò
+ *		¥í¥Ã¥¯€·€¿ŸõÂÖ€Ç¡€TASK1€«€éMTX2€òºÆœéŽü²œ€·¡€TASK1€ÎÍ¥ÀèÅÙ€¬Äã
+ *		Í¥ÀèÅÙ€Ë²Œ€¬€ê¡€ŒÂ¹Ô²ÄÇœŸõÂÖ€ÎÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK4¡Ë€ËÀÚ€êŽ¹€ï
+ *		€ë€³€È€ò³ÎÇ§€¹€ë¡¥€Þ€¿¡€ŒÂ¹Ô²ÄÇœŸõÂÖ€ÎÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK2¡Ë€è
+ *		€ê€â¡€Í¥Àèœç°Ì€¬¹â€¯€Ê€ë€³€È€ò³ÎÇ§€¹€ë¡¥¡¡
+ *	(B-1)
+ *		ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€¬¡€ÃæÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX1¡Ë€ò
+ *		¥í¥Ã¥¯€·€¿ŸõÂÖ€Ç¡€ÊÌ€Î¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX4¡ËÂÔ€ÁŸõÂÖ€È€·¡€¹âÍ¥
+ *		ÀèÅÙ¥¿¥¹¥¯¡ÊTASK5¡Ë€«€éMTX1€òºÆœéŽü²œ€·¡€TASK1€ÎÍ¥ÀèÅÙ€¬ÄãÍ¥Àè
+ *		ÅÙ€Ë²Œ€¬€ë€³€È€ò³ÎÇ§€¹€ë¡¥€Þ€¿¡€MTX4ÂÔ€ÁŸõÂÖ€ÎÄãÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *		¡ÊTASK2¡Ë€è€ê€â¡€ÂÔ€Á¹ÔÎóÃæ€Ç€Îœçœø€¬žå€Ë€Ê€ë€³€È€ò³ÎÇ§€¹€ë¡¥
+ *	(B-2)
+ *		ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€¬¡€ÃæÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò2€Ä
+ *		¡ÊMTX1¡€MTX2¡Ë€ò¥í¥Ã¥¯€·€¿ŸõÂÖ€Ç¡€ÊÌ€Î¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX4¡ËÂÔ
+ *		€ÁŸõÂÖ€È€·¡€¹âÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK5¡Ë€«€éMTX1€òºÆœéŽü²œ€·¡€TASK1
+ *		€ÎÍ¥ÀèÅÙ€¬ÊÑ²œ€·€Ê€€€³€È€ò³ÎÇ§€¹€ë¡¥€Þ€¿¡€MTX4ÂÔ€ÁŸõÂÖ€ÎÃæÍ¥Àè
+ *		ÅÙ¥¿¥¹¥¯€ò2€Ä¡ÊTASK3¡€TASK4¡Ë€òÍÑ°Õ€·€Æ€ª€­¡€ÂÔ€Á¹ÔÎóÃæ€Ç€Îœçœø
+ *		€¬ÊÑ€ï€é€Ê€€€³€È€ò³ÎÇ§€¹€ë¡¥
+ *	(B-3)
+ *		ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€¬¡€ÃæÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX2¡Ë€È
+ *		ÄãÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX3¡Ë€ò¥í¥Ã¥¯€·€¿ŸõÂÖ€Ç¡€ÊÌ€Î¥ß¥å¡Œ
+ *		¥Æ¥Ã¥¯¥¹¡ÊMTX4¡ËÂÔ€ÁŸõÂÖ€È€·¡€¹âÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK5¡Ë€«€éMTX3€ò
+ *		ºÆœéŽü²œ€·¡€TASK1€ÎÍ¥ÀèÅÙ€¬ÊÑ²œ€·€Ê€€€³€È€ò³ÎÇ§€¹€ë¡¥€Þ€¿¡€
+ *		MTX4ÂÔ€ÁŸõÂÖ€ÎÃæÍ¥ÀèÅÙ¥¿¥¹¥¯€ò2€Ä¡ÊTASK3¡€TASK4¡Ë€òÍÑ°Õ€·€Æ€ª€­¡€
+ *		ÂÔ€Á¹ÔÎóÃæ€Ç€Îœçœø€¬ÊÑ€ï€é€Ê€€€³€È€ò³ÎÇ§€¹€ë¡¥
+ *	(C-1)
+ *		ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€¬ÃæÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX1¡Ë€ò¥í¥Ã
+ *		¥¯€·¡€ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK3¡Ë€¬MTX1€òÂÔ€Ã€Æ€€€ëŸõÂÖ€Ç¡€¹âÍ¥ÀèÅÙ
+ *		¥¿¥¹¥¯¡ÊTASK5¡Ë€«€éMTX1€òºÆœéŽü²œ€·¡€TASK3€¬ÂÔ€Á²òœü€µ€ì€ë€³€È
+ *		€ò³ÎÇ§€¹€ë¡¥€Þ€¿¡€ŒÂ¹Ô²ÄÇœŸõÂÖ€ÎÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK4¡Ë€è€ê€â¡€
+ *		TASK3€ÎÊý€¬Í¥Àèœç°Ì€¬Äã€¯€Ê€ë€³€È€ò³ÎÇ§€¹€ë¡¥¡¡
+ *	(C-2)
+ *		ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€¬ÃæÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX1¡Ë€ò¥í¥Ã
+ *		¥¯€·¡€ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK3¡Ë€¬MTX1€òÂÔ€Á¡€TASK1€òµ¯Ÿ²ÂÔ€ÁŸõÂÖ
+ *		€È€·€¿ŸõÂÖ€Ç¡€ÊÌ€ÎÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK2¡Ë€«€éMTX1€òºÆœéŽü²œ€·¡€
+ *		TASK3€¬ÂÔ€Á²òœü€µ€ì¡€TASK3€ËÀÚ€êŽ¹€ï€ë€³€È€ò³ÎÇ§€¹€ë¡¥
+ *
+ * ¡Ú»ÈÍÑ¥ê¥œ¡Œ¥¹¡Û
+ *
+ *	TASK1: ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡€¥á¥€¥ó¥¿¥¹¥¯¡€ºÇœé€«€éµ¯Æ°
+ *	TASK2: ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	TASK3: ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	TASK4: ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	TASK5: ¹âÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	MTX1: ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊTA_CEILINGÂ°À­¡€ŸåžÂ€ÏÃæÍ¥ÀèÅÙ¡Ë
+ *	MTX2: ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊTA_CEILINGÂ°À­¡€ŸåžÂ€ÏÃæÍ¥ÀèÅÙ¡Ë
+ *	MTX3: ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊTA_CEILINGÂ°À­¡€ŸåžÂ€ÏÄãÍ¥ÀèÅÙ¡Ë
+ *	MTX4: ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊTA_CEILINGÂ°À­¡€ŸåžÂ€Ï¹âÍ¥ÀèÅÙ¡Ë
+ *
+ * ¡Ú¥Æ¥¹¥È¥·¡Œ¥±¥ó¥¹¡Û
+ *
+ *	== TASK1¡ÊÍ¥ÀèÅÙ¡§Äã¡Ë==
+ *		call(set_bit_func(bit_mutex))
+ *	1:	loc_mtx(MTX1)
+ *	2:	act_tsk(TASK2)
+ *	3:	act_tsk(TASK5)
+ *	//		¹â¡§TASK5¡€Ãæ¡§TASK1¡€Äã¡§TASK2¡€MTX1¡§TASK1
+ *	== TASK5¡ÊÍ¥ÀèÅÙ¡§¹â¡Ë==
+ *	4:	ini_mtx(MTX1)			... (A-1)
+ *	//		¹â¡§TASK5¡€Äã¡§TASK1¢ªTASK2
+ *		get_pri(TASK1, &tskpri)
+ *		assert(tskpri == LOW_PRIORITY)
+ *	5:	slp_tsk()
+ *	//		Äã¡§TASK1¢ªTASK2
+ *
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	6:	sus_tsk(TASK2)
+ *	7:	loc_mtx(MTX1)
+ *		loc_mtx(MTX2)
+ *	8:	act_tsk(TASK3)
+ *	//		Ãæ¡§TASK1¢ªTASK3¡€MTX1¡§TASK1¡€MTX2¡§TASK1
+ *	9:	dis_dsp()
+ *	10:	rot_rdq(MID_PRIORITY)
+ *	//		Ãæ¡§TASK3¢ªTASK1¡€MTX1¡§TASK1¡€MTX2¡§TASK1
+ *	11:	act_tsk(TASK4)
+ *	//		Ãæ¡§TASK3¢ªTASK1¢ªTASK4¡€MTX1¡§TASK1¡€MTX2¡§TASK1
+ *	12:	wup_tsk(TASK5)
+ *	//		¹â¡§TASK5¡€Ãæ¡§TASK3¢ªTASK1¢ªTASK4¡€MTX1¡§TASK1¡€MTX2¡§TASK1
+ *	13:	ena_dsp()
+ *	== TASK5¡ÊÂ³€­¡Ë==
+ *	14:	ini_mtx(MTX1)			... (A-2)
+ *	//		¹â¡§TASK5¡€Ãæ¡§TASK3¢ªTASK1¢ªTASK4¡€MTX2¡§TASK1
+ *		get_pri(TASK1, &tskpri)
+ *		assert(tskpri == MID_PRIORITY)
+ *	15:	slp_tsk()
+ *	//		Ãæ¡§TASK3¢ªTASK1¢ªTASK4¡€MTX2¡§TASK1
+ *	== TASK3¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë==
+ *	16:	slp_tsk()
+ *	//		Ãæ¡§TASK1¢ªTASK4¡€MTX2¡§TASK1
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	17:	slp_tsk()
+ *	//		Ãæ¡§TASK4¡€MTX2¡§TASK1
+ *	== TASK4¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë==
+ *	18:	wup_tsk(TASK1)
+ *	//		Ãæ¡§TASK4¢ªTASK1¡€MTX2¡§TASK1
+ *	19:	slp_tsk()
+ *	//		Ãæ¡§TASK1¡€MTX2¡§TASK1
+ *
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	20:	loc_mtx(MTX3)
+ *	//		Ãæ¡§TASK1¡€MTX2¡§TASK1¡€MTX3¡§TASK1
+ *	21:	wup_tsk(TASK3)
+ *	//		Ãæ¡§TASK1¢ªTASK3¡€MTX2¡§TASK1¡€MTX3¡§TASK1
+ *	22:	dis_dsp()
+ *	23:	rot_rdq(MID_PRIORITY)
+ *	//		Ãæ¡§TASK3¢ªTASK1¡€MTX2¡§TASK1¡€MTX3¡§TASK1
+ *	24:	wup_tsk(TASK4)
+ *	//		Ãæ¡§TASK3¢ªTASK1¢ªTASK4¡€MTX2¡§TASK1¡€MTX3¡§TASK1
+ *	25:	wup_tsk(TASK5)
+ *	//		¹â¡§TASK5¡€Ãæ¡§TASK3¢ªTASK1¢ªTASK4¡€MTX2¡§TASK1¡€MTX3¡§TASK1
+ *	26:	ena_dsp()
+ *	== TASK5¡ÊÂ³€­¡Ë==
+ *	27:	ini_mtx(MTX3)			... (A-3)
+ *	//		¹â¡§TASK5¡€Ãæ¡§TASK3¢ªTASK1¢ªTASK4¡€MTX2¡§TASK1
+ *		get_pri(TASK1, &tskpri)
+ *		assert(tskpri == MID_PRIORITY)
+ *	28:	slp_tsk()
+ *	//		Ãæ¡§TASK3¢ªTASK1¢ªTASK4¡€MTX2¡§TASK1
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	29:	slp_tsk()
+ *	//		Ãæ¡§TASK1¢ªTASK4¡€MTX2¡§TASK1
+ *
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	30:	slp_tsk()
+ *	//		Ãæ¡§TASK4¡€MTX2¡§TASK1
+ *	== TASK4¡ÊÂ³€­¡Ë==
+ *	31:	wup_tsk(TASK1)
+ *	//		Ãæ¡§TASK4¢ªTASK1¡€MTX2¡§TASK1
+ *	32:	rot_rdq(MID_PRIORITY)
+ *	//		Ãæ¡§TASK1¢ªTASK4¡€MTX2¡§TASK1
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	33:	rsm_tsk(TASK2)
+ *	//		Ãæ¡§TASK1¢ªTASK4¡€Äã¡§TASK2¡€MTX2¡§TASK1
+ *	34:	ini_mtx(MTX2)			... (A-4)
+ *	//		Ãæ¡§TASK4¡€Äã¡§TASK1¢ªTASK2
+ *	== TASK4¡ÊÂ³€­¡Ë==
+ *	35:	get_pri(TASK1, &tskpri)
+ *		assert(tskpri == LOW_PRIORITY)
+ *	36:	slp_tsk()
+ *	//		Äã¡§TASK1¢ªTASK2
+ *
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	37:	wup_tsk(TASK5)
+ *	== TASK5¡ÊÂ³€­¡Ë==
+ *	38:	loc_mtx(MTX4)
+ *	39:	tslp_tsk(10) -> E_TMOUT
+ *	//		Äã¡§TASK1¢ªTASK2¡€MTX4¡§TASK5
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	40:	loc_mtx(MTX1)
+ *	//		Ãæ¡§TASK1¡€Äã¡§TASK2¡€MTX1¡§TASK1¡€MTX4¡§TASK5
+ *	41:	loc_mtx(MTX4)
+ *	//		Äã¡§TASK2¡€MTX1¡§TASK1¡€MTX4¡§TASK5¢ªTASK1
+ *	== TASK2¡ÊÍ¥ÀèÅÙ¡§Äã¡Ë==
+ *	42:	loc_mtx(MTX4)
+ *	//		MTX1¡§TASK1¡€MTX4¡§TASK5¢ªTASK1¢ªTASK2
+ *	//		¥¿¥€¥à¥¢¥Š¥ÈÂÔ€Á
+ *	//		¹â¡§TASK5¡€MTX1¡§TASK1¡€MTX4¡§TASK5¢ªTASK1¢ªTASK2
+ *	== TASK5¡ÊÂ³€­¡Ë==
+ *	43:	ini_mtx(MTX1)			... (B-1)
+ *	//		¹â¡§TASK5¡€MTX4¡§TASK5¢ªTASK2¢ªTASK1
+ *		get_pri(TASK1, &tskpri)
+ *		assert(tskpri == LOW_PRIORITY)
+ *	44:	unl_mtx(MTX4)
+ *	//		¹â¡§TASK5¢ªTASK2¡€MTX4¡§TASK2¢ªTASK1
+ *	45:	slp_tsk()
+ *	//		¹â¡§TASK2¡€MTX4¡§TASK2¢ªTASK1
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	46:	unl_mtx(MTX4)
+ *	//		¹â¡§TASK1¡€Äã¡§TASK2¡€MTX4¡§TASK1
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	47:	unl_mtx(MTX4)
+ *	//		Äã¡§TASK1¢ªTASK2
+ *
+ *	48:	wup_tsk(TASK5)
+ *	== TASK5¡ÊÂ³€­¡Ë==
+ *	49:	loc_mtx(MTX4)
+ *	50:	slp_tsk()
+ *	//		Äã¡§TASK1¢ªTASK2¡€MTX4¡§TASK5
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	51:	wup_tsk(TASK3)
+ *	//		Ãæ¡§TASK3¡€Äã¡§TASK1¢ªTASK2¡€MTX4¡§TASK5
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	52:	loc_mtx(MTX4)
+ *	//		Äã¡§TASK1¢ªTASK2¡€MTX4¡§TASK5¢ªTASK3
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	53:	loc_mtx(MTX1)
+ *		loc_mtx(MTX2)
+ *	//		Ãæ¡§TASK1¡€Äã¡§TASK2¡€MTX1¡§TASK1¡€MTX2¡§TASK1¡€MTX4¡§TASK5¢ªTASK3
+ *	54:	loc_mtx(MTX4)
+ *	//		Äã¡§TASK2¡€MTX1¡§TASK1¡€MTX2¡§TASK1¡€MTX4¡§TASK5¢ªTASK3¢ªTASK1
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	55:	wup_tsk(TASK4)
+ *	== TASK4¡ÊÂ³€­¡Ë==
+ *	56:	loc_mtx(MTX4)
+ *	//		Äã¡§TASK2¡€MTX1¡§TASK1¡€MTX2¡§TASK1¡€
+ *	//								MTX4¡§TASK5¢ªTASK3¢ªTASK1¢ªTASK4
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	57:	wup_tsk(TASK5)
+ *	//		¹â¡§TASK5¡€Äã¡§TASK2¡€MTX1¡§TASK1¡€MTX2¡§TASK1¡€
+ *	//								MTX4¡§TASK5¢ªTASK3¢ªTASK1¢ªTASK4
+ *	== TASK5¡ÊÂ³€­¡Ë==
+ *	58:	ini_mtx(MTX1)			... (B-2)
+ *	//		¹â¡§TASK5¡€Äã¡§TASK2¡€MTX2¡§TASK1¡€MTX4¡§TASK5¢ªTASK3¢ªTASK1¢ªTASK4
+ *		get_pri(TASK1, &tskpri)
+ *		assert(tskpri == MID_PRIORITY)
+ *	59:	unl_mtx(MTX4)
+ *	//		¹â¡§TASK5¢ªTASK3¡€Äã¡§TASK2¡€MTX2¡§TASK1¡€MTX4¡§TASK3¢ªTASK1¢ªTASK4
+ *	60:	slp_tsk()
+ *	//		¹â¡§TASK3¡€Äã¡§TASK2¡€MTX2¡§TASK1¡€MTX4¡§TASK3¢ªTASK1¢ªTASK4
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	61:	unl_mtx(MTX4)
+ *	//		¹â¡§TASK1¡€Ãæ¡§TASK3¡€Äã¡§TASK2¡€MTX2¡§TASK1¡€MTX4¡§TASK1¢ªTASK4
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	62:	unl_mtx(MTX4)
+ *	//		¹â¡§TASK4¡€Ãæ¡§TASK1¢ªTASK3¡€Äã¡§TASK2¡€MTX2¡§TASK1¡€MTX4¡§TASK4
+ *	== TASK4¡ÊÂ³€­¡Ë==
+ *	63:	unl_mtx(MTX4)
+ *	//		Ãæ¡§TASK4¢ªTASK1¢ªTASK3¡€Äã¡§TASK2¡€MTX2¡§TASK1
+ *	64:	slp_tsk()
+ *	//		Ãæ¡§TASK1¢ªTASK3¡€Äã¡§TASK2¡€MTX2¡§TASK1
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	65:	slp_tsk()
+ *	//		Ãæ¡§TASK3¡€Äã¡§TASK2¡€MTX2¡§TASK1
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	66:	slp_tsk()
+ *	//		Äã¡§TASK2¡€MTX2¡§TASK1
+ *
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	67: wup_tsk(TASK5)
+ *	== TASK5¡ÊÂ³€­¡Ë==
+ *	68:	loc_mtx(MTX4)
+ *	69:	slp_tsk()
+ *	//		Äã¡§TASK2¡€MTX4¡§TASK5
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	70:	wup_tsk(TASK3)
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	71:	loc_mtx(MTX4)
+ *	//		Äã¡§TASK2¡€MTX4¡§TASK5¢ªTASK3
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	72:	wup_tsk(TASK1)
+ *	//		Ãæ¡§TASK1¡€Äã¡§TASK2¡€MTX4¡§TASK5
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	73:	loc_mtx(MTX3)
+ *	//		Ãæ¡§TASK1¡€Äã¡§TASK2¡€MTX2¡§TASK1¡€MTX3¡§TASK1¡€MTX4¡§TASK5¢ªTASK3
+ *	74:	loc_mtx(MTX4)
+ *	//		Äã¡§TASK2¡€MTX2¡§TASK1¡€MTX3¡§TASK1¡€MTX4¡§TASK5¢ªTASK3¢ªTASK1
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	75:	wup_tsk(TASK4)
+ *	== TASK4¡ÊÂ³€­¡Ë==
+ *	76:	loc_mtx(MTX4)
+ *	//		Äã¡§TASK2¡€MTX2¡§TASK1¡€MTX3¡§TASK1¡€
+ *	//								MTX4¡§TASK5¢ªTASK3¢ªTASK1¢ªTASK4
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	77:	wup_tsk(TASK5)
+ *	//		¹â¡§TASK5¡€Äã¡§TASK2¡€MTX2¡§TASK1¡€MTX3¡§TASK1¡€
+ *	//								MTX4¡§TASK5¢ªTASK3¢ªTASK1¢ªTASK4
+ *	== TASK5¡ÊÂ³€­¡Ë==
+ *	78:	ini_mtx(MTX3)			... (B-3)
+ *	//		¹â¡§TASK5¡€Äã¡§TASK2¡€MTX2¡§TASK1¡€MTX4¡§TASK5¢ªTASK3¢ªTASK1¢ªTASK4
+ *		get_pri(TASK1, &tskpri)
+ *		assert(tskpri == MID_PRIORITY)
+ *	79:	unl_mtx(MTX4)
+ *	//		¹â¡§TASK5¢ªTASK3¡€Äã¡§TASK2¡€MTX2¡§TASK1¡€MTX4¡§TASK3¢ªTASK1¢ªTASK4
+ *	80:	slp_tsk()
+ *	//		¹â¡§TASK3¡€Äã¡§TASK2¡€MTX2¡§TASK1¡€MTX4¡§TASK3¢ªTASK1¢ªTASK4
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	81:	unl_mtx(MTX4)
+ *	//		¹â¡§TASK1¡€Ãæ¡§TASK3¡€Äã¡§TASK2¡€MTX2¡§TASK1¡€MTX4¡§TASK1¢ªTASK4
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	82:	unl_mtx(MTX4)
+ *	//		¹â¡§TASK4¡€Ãæ¡§TASK1¢ªTASK3¡€Äã¡§TASK2¡€MTX2¡§TASK1¡€MTX4¡§TASK4
+ *	== TASK4¡ÊÂ³€­¡Ë==
+ *	83:	unl_mtx(MTX4)
+ *	//		Ãæ¡§TASK4¢ªTASK1¢ªTASK3¡€Äã¡§TASK2¡€MTX2¡§TASK1
+ *	84:	slp_tsk()
+ *	//		Ãæ¡§TASK1¢ªTASK3¡€Äã¡§TASK2¡€MTX2¡§TASK1
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	85:	unl_mtx(MTX2)
+ *	//		Ãæ¡§TASK3¡€Äã¡§TASK1¢ªTASK2
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	86:	slp_tsk()
+ *	//		Äã¡§TASK1¢ªTASK2
+ *
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	87:	sus_tsk(TASK2)
+ *	//		Äã¡§TASK1
+ *	88:	loc_mtx(MTX1)
+ *	//		Ãæ¡§TASK1¡€MTX1¡§TASK1
+ *	89:	wup_tsk(TASK3)
+ *	//		Ãæ¡§TASK1¢ªTASK3¡€MTX1¡§TASK1
+ *	90:	rot_rdq(MID_PRIORITY)
+ *	//		Ãæ¡§TASK3¢ªTASK1¡€MTX1¡§TASK1
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	91:	loc_mtx(MTX1) -> E_DLT
+ *	//		Ãæ¡§TASK1¡€MTX1¡§TASK1¢ªTASK3
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	92:	wup_tsk(TASK5)
+ *	//		¹â¡§TASK5¡€Ãæ¡§TASK1¡€MTX1¡§TASK1¢ªTASK3
+ *	== TASK5¡ÊÂ³€­¡Ë==
+ *	93:	wup_tsk(TASK4)
+ *	//		¹â¡§TASK5¡€Ãæ¡§TASK1¢ªTASK4¡€MTX1¡§TASK1¢ªTASK3
+ *	94:	ini_mtx(MTX1)			... (C-1)
+ *	//		¹â¡§TASK5¡€Ãæ¡§TASK4¢ªTASK3¡€Äã¡§TASK1
+ *	95:	ext_tsk() -> noreturn
+ *	//		Ãæ¡§TASK4¢ªTASK3¡€Äã¡§TASK1
+ *	== TASK4¡ÊÂ³€­¡Ë==
+ *	96:	ext_tsk() -> noreturn
+ *	//		Ãæ¡§TASK3¡€Äã¡§TASK1
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	97:	slp_tsk()
+ *	//		Äã¡§TASK1
+ *
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	98:	loc_mtx(MTX1)
+ *	//		Ãæ¡§TASK1¡€MTX1¡§TASK1
+ *	99:	wup_tsk(TASK3)
+ *	//		Ãæ¡§TASK1¢ªTASK3¡€MTX1¡§TASK1
+ * 100:	rot_rdq(MID_PRIORITY)
+ *	//		Ãæ¡§TASK3¢ªTASK1¡€MTX1¡§TASK1
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ * 101:	loc_mtx(MTX1) -> E_DLT
+ *	//		Ãæ¡§TASK1¡€MTX1¡§TASK1¢ªTASK3
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ * 102:	rsm_tsk(TASK2)
+ *	//		Ãæ¡§TASK1¡€Äã¡§TASK2¡€MTX1¡§TASK1¢ªTASK3
+ * 103:	slp_tsk()
+ *	//		Äã¡§TASK2¡€MTX1¡§TASK1¢ªTASK3
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ * 104:	ini_mtx(MTX1)			... (C-2)
+ *	//		Ãæ¡§TASK3¡€Äã¡§TASK2
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ * 105:	ext_tsk() -> noreturn
+ *	//		Äã¡§TASK2
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ * 106:	ter_tsk(TASK1)
+ * 107:	END
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include "kernel_cfg.h"
+#include "test_lib.h"
+#include "test_mutex5.h"
+
+extern ER	bit_mutex(void);
+
+/* DO NOT DELETE THIS LINE -- gentest depends on it. */
+
+void
+task1(intptr_t exinf)
+{
+	ER_UINT	ercd;
+
+	test_start(__FILE__);
+
+	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_UINT	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_UINT	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_UINT	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_UINT	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: /extension/mutex/test/test_mutex5.cfg
===================================================================
--- /extension/mutex/test/test_mutex5.cfg	(revision 7)
+++ /extension/mutex/test/test_mutex5.cfg	(revision 7)
@@ -0,0 +1,23 @@
+/*
+ *  @(#) $Id$
+ */
+
+/*
+ *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥Æ¥¹¥È(5)€Î¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+ */
+INCLUDE("target_timer.cfg");
+INCLUDE("syssvc/syslog.cfg");
+INCLUDE("syssvc/banner.cfg");
+INCLUDE("syssvc/serial.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: /extension/mutex/test/test_mutex5.h
===================================================================
--- /extension/mutex/test/test_mutex5.h	(revision 7)
+++ /extension/mutex/test/test_mutex5.h	(revision 7)
@@ -0,0 +1,74 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/* 
+ *		¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥Æ¥¹¥È(5)
+ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎÄêµÁ
+ */
+#include "target_test.h"
+
+/*
+ *  Í¥ÀèÅÙ€ÎÄêµÁ
+ */
+#define HIGH_PRIORITY	9		/* ¹âÍ¥ÀèÅÙ */
+#define MID_PRIORITY	10		/* ÃæÍ¥ÀèÅÙ */
+#define LOW_PRIORITY	11		/* ÄãÍ¥ÀèÅÙ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È€Ë°ÍÂž€¹€ë²ÄÇœÀ­€Î€¢€ëÄê¿ô€ÎÄêµÁ
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯¥µ¥€¥º */
+#endif /* STACK_SIZE */
+
+/*
+ *  ŽØ¿ô€Î¥×¥í¥È¥¿¥€¥×ÀëžÀ
+ */
+#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: /extension/mutex/test/test_mutex6.c
===================================================================
--- /extension/mutex/test/test_mutex6.c	(revision 7)
+++ /extension/mutex/test/test_mutex6.c	(revision 7)
@@ -0,0 +1,474 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2014 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$
+ */
+
+/* 
+ *		¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥Æ¥¹¥È(6)
+ *
+ * ¡Ú¥Æ¥¹¥È€ÎÌÜÅª¡Û
+ *
+ *  Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ËÂÐ€·€Æ¡€¥¿¥¹¥¯€ÎœªÎ»»þ¡€¥¿¥¹¥¯€ÎÍ¥Àèœç°Ì
+ *  €Î²óÅŸ»þ€Î¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹ŽØÏ¢€ÎœèÍý€òÌÖÍåÅª€Ë¥Æ¥¹¥È€¹€ë¡¥
+ *
+ * ¡Ú¥Æ¥¹¥È¹àÌÜ¡Û
+ *
+ *	(A) ¥¿¥¹¥¯€ÎœªÎ»»þ¡Êext_tsk¡Ë
+ *		(A-1) ¥í¥Ã¥¯€·€Æ€€€¿¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡Ê1€Ä¡Ë€¬¥í¥Ã¥¯²òœü€µ€ì€ë€³€È¡¥
+ *		(A-2) ¥í¥Ã¥¯€·€Æ€€€¿¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡Ê1€Ä¡Ë€¬¥í¥Ã¥¯²òœü€µ€ì¡€¥í¥Ã
+ *			  ¥¯€òÂÔ€Ã€Æ€€€¿¥¿¥¹¥¯€¬€œ€ì€ò¥í¥Ã¥¯€·¡€Í¥ÀèÅÙ€¬ÊÑ²œ€·¡€ÂÔ
+ *			  €Á²òœü€µ€ì€ë€³€È¡¥
+ *		(A-3) ¥í¥Ã¥¯€·€Æ€€€¿¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊÊ£¿ô¡Ë€¬€¹€Ù€Æ¥í¥Ã¥¯²òœü€µ
+ *			  €ì€ë€³€È¡¥
+ *		(A-4) ¥í¥Ã¥¯€·€Æ€€€¿¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊÊ£¿ô¡Ë€¬¥í¥Ã¥¯²òœü€µ€ì¡€¥í¥Ã
+ *			  ¥¯€òÂÔ€Ã€Æ€€€¿¥¿¥¹¥¯¡ÊÊ£¿ô¡Ë€¬€œ€ì€ò¥í¥Ã¥¯€·¡€Í¥ÀèÅÙ€¬ÊÑ
+ *			  ²œ€·¡€ÂÔ€Á²òœü€µ€ì€ë€³€È¡¥€œ€Î»þ€Ë¡€žå€Ç¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò
+ *			  ¥í¥Ã¥¯€·€¿¥¿¥¹¥¯¡ÊÀè€Ë¥í¥Ã¥¯€·€Æ€€€¿¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€òÂÔ€Ã
+ *			  €Æ€€€¿¥¿¥¹¥¯¡Ë€ÎÊý€¬¡€Í¥Àèœç°Ì€¬¹â€¯€Ê€ë€³€È¡¥
+ *	(B) ¥¿¥¹¥¯€ÎÍ¥Àèœç°Ì€Î²óÅŸ¡Êrot_rdq¡Ë
+ *		(B-1) TPRI_SELF€ò»ØÄê€·€¿»þ€Ë¡€¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ€ÎÍ¥Àèœç°Ì€¬
+ *		¡¡¡¡¡¡²óÅŸ€¹€ë€³€È¡¥
+ *		(B-2) TPRI_SELF€ò»ØÄê€·€¿»þ€Ë¡€¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ€ÎÍ¥Àèœç°Ì€¬²ó
+ *		¡¡¡¡¡¡ÅŸ€·€Ê€€€³€È¡¥
+ *
+ * ¡Ú¥Æ¥¹¥È¹àÌÜ€ÎŒÂžœÊýË¡¡Û
+ *
+ *	(A-1)
+ *		ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK2¡Ë€Ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX1¡Ë€ò¥í¥Ã¥¯€µ€»¡€
+ *		ext_tsk€¹€ë€È¡€¥í¥Ã¥¯€¬²òœü€µ€ì€ë€³€È€ò³ÎÇ§€¹€ë¡¥
+ *	(A-2)
+ *		ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK2¡Ë€Ë¹âÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX1¡Ë€ò¥í¥Ã
+ *		¥¯€µ€»¡€ÊÌ€ÎÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK3¡Ë€ËMTX1€òÂÔ€¿€»€¿ŸõÂÖ€Ç¡€
+ *		TASK2 €¬ext_tsk€¹€ë€È¡€TASK3€¬¹âÍ¥ÀèÅÙ€Ë€Ê€Ã€ÆÂÔ€Á²òœü€µ€ì€ë€³
+ *		€È€ò³ÎÇ§€¹€ë¡¥
+ *	(A-3)
+ *		ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK2¡Ë€Ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò2€Ä¡ÊMTX1¡€MTX2¡Ë¥í¥Ã
+ *		¥¯€µ€»¡€ext_tsk€¹€ë€È¡€ÎŸÊý€Î¥í¥Ã¥¯€¬²òœü€µ€ì€ë€³€È€ò³ÎÇ§€¹€ë¡¥
+ *	(A-4)
+ *		ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK2¡Ë€Ë¹âÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹2€Ä¡ÊMTX1¡€
+ *		MTX2¡Ë€ò€³€Îœç€Ç¥í¥Ã¥¯€µ€»¡€ÊÌ€ÎÄãÍ¥ÀèÅÙ¥¿¥¹¥¯2€Ä¡ÊTASK3¡€
+ *		TASK4¡Ë€Ë€œ€ì€Ÿ€ì€Î¥í¥Ã¥¯€òÂÔ€¿€»€¿ŸõÂÖ€Ç¡€TASK2€òext_tsk€¹€ë€È¡€
+ *		TASK3€ÈTASK4€¬¹âÍ¥ÀèÅÙ€Ë€Ê€Ã€ÆÂÔ€Á²òœü€µ€ì€ë€³€È€ò³ÎÇ§€¹€ë¡¥€Þ
+ *		€¿¡€Àè€Ë¥í¥Ã¥¯€·€Æ€€€¿¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX1¡Ë€òÂÔ€Ã€Æ€€€¿¥¿¥¹¥¯
+ *		¡ÊTASK3¡Ë€¬¡€TASK4€è€ê€âÍ¥Àèœç°Ì€¬¹â€¯€Ê€ë€³€È€ò³ÎÇ§€¹€ë¡¥
+ *	(B-1)
+ *		ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯€¬3€Ä¡ÊTASK2¡€TASK3¡€TASK4¡Ë€¬ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Î»þ
+ *		€Ë¡€1€Ä€ÎÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK2¡Ë€Ë¹âÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò
+ *		¥í¥Ã¥¯€µ€»¡€rot_rdq(TPRI_SELF)€¹€ë€È¡€»Ä€ê€Î2€Ä€ÎÄãÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *		€ÎÍ¥Àèœç°Ì€¬²óÅŸ€¹€ë€³€È€ò³ÎÇ§€¹€ë¡¥
+ *	(B-2)
+ *		Ÿå€ÈÆ±€žŸõ¶·€Ç¡€¹âÍ¥ÀèÅÙ¥¿¥¹¥¯€ÎÍ¥Àèœç°Ì€¬²óÅŸ€·€Ê€€€³€È€ò³ÎÇ§
+ *		€¹€ë¡¥
+ *
+ * ¡Ú»ÈÍÑ¥ê¥œ¡Œ¥¹¡Û
+ *
+ *	TASK1: ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡€¥á¥€¥ó¥¿¥¹¥¯¡€ºÇœé€«€éµ¯Æ°
+ *	TASK2: ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	TASK3: ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	TASK4: ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	MTX1: ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊTA_CEILINGÂ°À­¡€ŸåžÂ€Ï¹âÍ¥ÀèÅÙ¡Ë
+ *	MTX2: ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊTA_CEILINGÂ°À­¡€ŸåžÂ€Ï¹âÍ¥ÀèÅÙ¡Ë
+ *
+ * ¡Ú¥Æ¥¹¥È¥·¡Œ¥±¥ó¥¹¡Û
+ *
+ *	== TASK1¡ÊÍ¥ÀèÅÙ¡§Äã¡Ë==
+ *		call(set_bit_func(bit_mutex))
+ *	1:	act_tsk(TASK2)
+ *	2:	rot_rdq(TPRI_SELF)
+ *	//		Äã¡§TASK2¢ªTASK1
+ *	== TASK2-1¡ÊÍ¥ÀèÅÙ¡§Äã¡Ë1²ó€á ==
+ *	3:	loc_mtx(MTX1)
+ *	//		¹â¡§TASK2¡€Äã¡§TASK1¡€MTX1¡§TASK2
+ *	4:	ext_tsk() -> noreturn			... (A-1)
+ *	//		Äã¡§TASK1
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	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)
+ *	//		Äã¡§TASK2¢ªTASK3¢ªTASK1
+ *	== TASK2-2¡ÊÍ¥ÀèÅÙ¡§Äã¡Ë2²ó€á ==
+ *	8:	loc_mtx(MTX1)
+ *	//		¹â¡§TASK2¡€Äã¡§TASK3¢ªTASK1¡€MTX1¡§TASK2
+ *	9:	slp_tsk()
+ *	//		Äã¡§TASK3¢ªTASK1¡€MTX1¡§TASK2
+ *	== TASK3¡ÊÍ¥ÀèÅÙ¡§Äã¡Ë==
+ *	10:	loc_mtx(MTX1)
+ *	//		Äã¡§TASK1¡€MTX1¡§TASK2¢ªTASK3
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	11:	wup_tsk(TASK2)
+ *	//		¹â¡§TASK2¡€Äã¡§TASK1¡€MTX1¡§TASK2¢ªTASK3
+ *	== TASK2-2¡ÊÂ³€­¡Ë==
+ *	12:	ext_tsk() -> noreturn			... (A-2)
+ *	//		¹â¡§TASK3¡€Äã¡§TASK1¡€MTX1¡§TASK3
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	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()
+ *	//		Äã¡§TASK1
+ *
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	14:	act_tsk(TASK2)
+ *	15:	rot_rdq(TPRI_SELF)
+ *	//		Äã¡§TASK2¢ªTASK1
+ *	== TASK2-3¡ÊÍ¥ÀèÅÙ¡§Äã¡Ë3²ó€á ==
+ *	16:	loc_mtx(MTX1)
+ *		loc_mtx(MTX2)
+ *	//		¹â¡§TASK2¡€Äã¡§TASK1¡€MTX1¡§TASK2¡€MTX2¡§TASK2
+ *	17:	ext_tsk() -> noreturn			... (A-3)
+ *	//		Äã¡§TASK1
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	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)
+ *	//		Äã¡§TASK2¢ªTASK3¢ªTASK4¢ªTASK1
+ *	== TASK2-4¡ÊÍ¥ÀèÅÙ¡§Äã¡Ë4²ó€á ==
+ *	21:	loc_mtx(MTX1)
+ *		loc_mtx(MTX2)
+ *	//		¹â¡§TASK2¡€Äã¡§TASK3¢ªTASK4¢ªTASK1¡€MTX1¡§TASK2¡€MTX2¡§TASK2
+ *	22:	chg_pri(TASK1, HIGH_PRIORITY)
+ *	//		¹â¡§TASK2¢ªTASK1¡€Äã¡§TASK3¢ªTASK4¡€MTX1¡§TASK2¡€MTX2¡§TASK2
+ *	23:	rot_rdq(TPRI_SELF)				... (B-1)(B-2)
+ *	//		¹â¡§TASK2¢ªTASK1¡€Äã¡§TASK4¢ªTASK3¡€MTX1¡§TASK2¡€MTX2¡§TASK2
+ *	24:	slp_tsk()
+ *	//		¹â¡§TASK1¡€Äã¡§TASK4¢ªTASK3¡€MTX1¡§TASK2¡€MTX2¡§TASK2
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	25:	chg_pri(TSK_SELF, TPRI_INI)
+ *	//		Äã¡§TASK4¢ªTASK3¢ªTASK1¡€MTX1¡§TASK2¡€MTX2¡§TASK2
+ *	== TASK4¡ÊÍ¥ÀèÅÙ¡§Äã¡Ë==
+ *	26:	loc_mtx(MTX2)
+ *	//		Äã¡§TASK3¢ªTASK1¡€MTX1¡§TASK2¡€MTX2¡§TASK2¢ªTASK4
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	27:	loc_mtx(MTX1)
+ *	//		Äã¡§TASK1¡€MTX1¡§TASK2¢ªTASK3¡€MTX2¡§TASK2¢ªTASK4
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	28:	wup_tsk(TASK2)
+ *	//		¹â¡§TASK2¡€Äã¡§TASK1¡€MTX1¡§TASK2¢ªTASK3¡€MTX2¡§TASK2¢ªTASK4
+ *	== TASK2-4¡ÊÂ³€­¡Ë==
+ *	29:	ext_tsk() -> noreturn			... (A-4)
+ *	//		¹â¡§TASK4¢ªTASK3¡€Äã¡§TASK1¡€MTX1¡§TASK3¡€MTX2¡§TASK4
+ *	== TASK4¡ÊÂ³€­¡Ë==
+ *	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
+ *	//		¹â¡§TASK3¡€Äã¡§TASK1¡€MTX2¡§TASK4
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	31:	get_pri(TPRI_SELF, &tskpri)
+ *		assert(tskpri == HIGH_PRIORITY)
+ *		ext_tsk() -> noreturn
+ *	//		Äã¡§TASK1
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	32:	END
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include "kernel_cfg.h"
+#include "test_lib.h"
+#include "test_mutex6.h"
+
+extern ER	bit_mutex(void);
+
+/* DO NOT DELETE THIS LINE -- gentest depends on it. */
+
+void
+task1(intptr_t exinf)
+{
+	ER_UINT	ercd;
+	T_RMTX	rmtx;
+
+	test_start(__FILE__);
+
+	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_UINT	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);
+
+	default:
+		check_point(0);
+	}
+	check_point(0);
+}
+
+void
+task3(intptr_t exinf)
+{
+	ER_UINT	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(31);
+	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_UINT	ercd;
+	PRI		tskpri;
+	T_RMTX	rmtx;
+
+	check_point(26);
+	ercd = loc_mtx(MTX2);
+	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);
+}
Index: /extension/mutex/test/test_mutex6.cfg
===================================================================
--- /extension/mutex/test/test_mutex6.cfg	(revision 7)
+++ /extension/mutex/test/test_mutex6.cfg	(revision 7)
@@ -0,0 +1,20 @@
+/*
+ *  @(#) $Id$
+ */
+
+/*
+ *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥Æ¥¹¥È(6)€Î¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+ */
+INCLUDE("target_timer.cfg");
+INCLUDE("syssvc/syslog.cfg");
+INCLUDE("syssvc/banner.cfg");
+INCLUDE("syssvc/serial.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: /extension/mutex/test/test_mutex6.h
===================================================================
--- /extension/mutex/test/test_mutex6.h	(revision 7)
+++ /extension/mutex/test/test_mutex6.h	(revision 7)
@@ -0,0 +1,73 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/* 
+ *		¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥Æ¥¹¥È(6)
+ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎÄêµÁ
+ */
+#include "target_test.h"
+
+/*
+ *  Í¥ÀèÅÙ€ÎÄêµÁ
+ */
+#define HIGH_PRIORITY	9		/* ¹âÍ¥ÀèÅÙ */
+#define MID_PRIORITY	10		/* ÃæÍ¥ÀèÅÙ */
+#define LOW_PRIORITY	11		/* ÄãÍ¥ÀèÅÙ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È€Ë°ÍÂž€¹€ë²ÄÇœÀ­€Î€¢€ëÄê¿ô€ÎÄêµÁ
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯¥µ¥€¥º */
+#endif /* STACK_SIZE */
+
+/*
+ *  ŽØ¿ô€Î¥×¥í¥È¥¿¥€¥×ÀëžÀ
+ */
+#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: /extension/mutex/test/test_mutex7.c
===================================================================
--- /extension/mutex/test/test_mutex7.c	(revision 7)
+++ /extension/mutex/test/test_mutex7.c	(revision 7)
@@ -0,0 +1,697 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2008-2014 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$
+ */
+
+/* 
+ *		¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥Æ¥¹¥È(7)
+ *
+ * ¡Ú¥Æ¥¹¥È€ÎÌÜÅª¡Û
+ *
+ *  Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ËÂÐ€·€Æ¡€¥¿¥¹¥¯€Î¶¯À©œªÎ»»þ€Î¥ß¥å¡Œ¥Æ¥Ã¥¯
+ *  ¥¹ŽØÏ¢€ÎœèÍý€òÌÖÍåÅª€Ë¥Æ¥¹¥È€¹€ë¡¥
+ *
+ * ¡Ú¥Æ¥¹¥È¹àÌÜ¡Û
+ *
+ *	(A) ¥¿¥¹¥¯€Î¶¯À©œªÎ»»þ¡Êter_tsk¡Ë
+ *		(A-1) ¥í¥Ã¥¯€·€Æ€€€¿¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡Ê1€Ä¡Ë€¬¥í¥Ã¥¯²òœü€µ€ì€ë€³€È¡¥
+ *		(A-2) ¥í¥Ã¥¯€·€Æ€€€¿¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡Ê1€Ä¡Ë€¬¥í¥Ã¥¯²òœü€µ€ì¡€¥í¥Ã
+ *			  ¥¯€òÂÔ€Ã€Æ€€€¿¥¿¥¹¥¯€¬€œ€ì€ò¥í¥Ã¥¯€·¡€Í¥ÀèÅÙ€¬ÊÑ²œ€·¡€ÂÔ
+ *			  €Á²òœü€µ€ì€ë€³€È¡¥
+ *		(A-3) (A-2)€Î·ë²Ì¡€¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬µ¯€³€ë€³€È¡¥
+ *		(A-4) ¥í¥Ã¥¯€·€Æ€€€¿¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊÊ£¿ô¡Ë€¬€¹€Ù€Æ¥í¥Ã¥¯²òœü€µ
+ *			  €ì€ë€³€È¡¥
+ *		(A-5) ¥í¥Ã¥¯€·€Æ€€€¿¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊÊ£¿ô¡Ë€¬¥í¥Ã¥¯²òœü€µ€ì¡€¥í¥Ã
+ *			  ¥¯€òÂÔ€Ã€Æ€€€¿¥¿¥¹¥¯¡ÊÊ£¿ô¡Ë€¬€œ€ì€ò¥í¥Ã¥¯€·¡€Í¥ÀèÅÙ€¬ÊÑ
+ *			  ²œ€·¡€ÂÔ€Á²òœü€µ€ì€ë€³€È¡¥€œ€Î»þ€Ë¡€žå€Ç¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò
+ *			  ¥í¥Ã¥¯€·€¿¥¿¥¹¥¯¡ÊÀè€Ë¥í¥Ã¥¯€·€Æ€€€¿¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€òÂÔ€Ã
+ *			  €Æ€€€¿¥¿¥¹¥¯¡Ë€ÎÊý€¬¡€Í¥Àèœç°Ì€¬¹â€¯€Ê€ë€³€È¡¥
+ *		(A-6) (A-5)€Î·ë²Ì¡€¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬µ¯€³€ë€³€È¡¥
+ *
+ * ¡Ú¥Æ¥¹¥È¹àÌÜ€ÎŒÂžœÊýË¡¡Û
+ *
+ *	(A-1)
+ *		ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK2¡Ë€Ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX1¡Ë€ò¥í¥Ã¥¯€µ€»¡€ÊÌ
+ *		€Î¥¿¥¹¥¯¡ÊTASK1¡Ë€«€éTASK2€òter_tsk€¹€ë€È¡€¥í¥Ã¥¯€¬²òœü€µ€ì€ë€³
+ *		€È€ò³ÎÇ§€¹€ë¡¥
+ *	(A-2)
+ *		ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK2¡Ë€ËÃæÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX1¡Ë€ò¥í¥Ã
+ *		¥¯€µ€»¡€ÊÌ€ÎÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK3¡Ë€ËMTX1€òÂÔ€¿€»€¿ŸõÂÖ€Ç¡€¹âÍ¥
+ *		ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€«€éTASK2€òter_tsk€¹€ë€È¡€TASK3€¬ÃæÍ¥ÀèÅÙ€Ë
+ *		€Ê€Ã€ÆÂÔ€Á²òœü€µ€ì€ë€³€È€ò³ÎÇ§€¹€ë¡¥
+ *	(A-3)
+ *		ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK2¡Ë€ËÃæÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX1¡Ë€ò¥í¥Ã
+ *		¥¯€µ€»¡€ÊÌ€ÎÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK3¡Ë€ËMTX1€òÂÔ€¿€»€¿ŸõÂÖ€Ç¡€ÊÌ€Î
+ *		ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€«€éTASK2€òter_tsk€¹€ë€È¡€TASK3€¬ÃæÍ¥Àè
+ *		ÅÙ€Ë€Ê€Ã€ÆÂÔ€Á²òœü€µ€ì¡€TASK3€ËÀÚ€êŽ¹€ï€ë€³€È€ò³ÎÇ§€¹€ë¡¥
+ *	(A-4)
+ *		ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK2¡Ë€Ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò2€Ä¡ÊMTX1¡€MTX2¡Ë¥í¥Ã
+ *		¥¯€µ€»¡€ÊÌ€Î¥¿¥¹¥¯¡ÊTASK1¡Ë€«€éTASK2€òter_tsk€¹€ë€È¡€ÎŸÊý€Î¥í¥Ã
+ *		¥¯€¬²òœü€µ€ì€ë€³€È€ò³ÎÇ§€¹€ë¡¥
+ *	(A-5)
+ *		ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK2¡Ë€Ë¹âÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹2€Ä¡ÊMTX1¡€
+ *		MTX2¡Ë€ò€³€Îœç€Ç¥í¥Ã¥¯€µ€»¡€ÊÌ€ÎÄãÍ¥ÀèÅÙ¥¿¥¹¥¯2€Ä¡ÊTASK3¡€
+ *		TASK4¡Ë€Ë€œ€ì€Ÿ€ì€Î¥í¥Ã¥¯€òÂÔ€¿€»€¿ŸõÂÖ€Ç¡€¹âÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *		¡ÊTASK1¡Ë€«€éTASK2€òter_tsk€¹€ë€È¡€TASK3€ÈTASK4€¬ÃæÍ¥ÀèÅÙ€Ë€Ê€Ã
+ *		€ÆÂÔ€Á²òœü€µ€ì€ë€³€È€ò³ÎÇ§€¹€ë¡¥€Þ€¿¡€Àè€Ë¥í¥Ã¥¯€·€Æ€€€¿¥ß¥å¡Œ
+ *		¥Æ¥Ã¥¯¥¹¡ÊMTX1¡Ë€òÂÔ€Ã€Æ€€€¿¥¿¥¹¥¯¡ÊTASK3¡Ë€¬¡€TASK4€è€ê€âÍ¥Àè
+ *		œç°Ì€¬¹â€¯€Ê€ë€³€È€ò³ÎÇ§€¹€ë¡¥
+ *	(A-6)
+ *		ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK2¡Ë€Ë¹âÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹2€Ä¡ÊMTX1¡€
+ *		MTX2¡Ë€ò€³€Îœç€Ç¥í¥Ã¥¯€µ€»¡€ÊÌ€ÎÄãÍ¥ÀèÅÙ¥¿¥¹¥¯2€Ä¡ÊTASK3¡€
+ *		TASK4¡Ë€Ë€œ€ì€Ÿ€ì€Î¥í¥Ã¥¯€òÂÔ€¿€»€¿ŸõÂÖ€Ç¡€ÊÌ€ÎÄãÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *		¡ÊTASK1¡Ë€«€éTASK2 €òter_tsk€¹€ë€È¡€TASK3€ÈTASK4€¬ÃæÍ¥ÀèÅÙ€Ë€Ê€Ã
+ *		€ÆÂÔ€Á²òœü€µ€ì¡€TASK3€ËÀÚ€êŽ¹€ï€ë€³€È€ò³ÎÇ§€¹€ë¡¥
+ *
+ * ¡Ú»ÈÍÑ¥ê¥œ¡Œ¥¹¡Û
+ *
+ *	TASK1: ¹âÍ¥ÀèÅÙ¥¿¥¹¥¯¡€¥á¥€¥ó¥¿¥¹¥¯¡€ºÇœé€«€éµ¯Æ°
+ *	TASK2: ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	TASK3: ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	TASK4: ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	MTX1: ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊTA_CEILINGÂ°À­¡€ŸåžÂ€ÏÃæÍ¥ÀèÅÙ¡Ë
+ *	MTX2: ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊTA_CEILINGÂ°À­¡€ŸåžÂ€ÏÃæÍ¥ÀèÅÙ¡Ë
+ *
+ * ¡Ú¥Æ¥¹¥È¥·¡Œ¥±¥ó¥¹¡Û
+ *
+ *	== TASK1¡ÊÍ¥ÀèÅÙ¡§¹â¡Ë==
+ *		call(set_bit_func(bit_mutex))
+ *	1:	act_tsk(TASK2)
+ *	2:	slp_tsk()
+ *	//		Äã¡§TASK2
+ *	== TASK2-1¡ÊÍ¥ÀèÅÙ¡§Äã¡Ë==
+ *	3:	loc_mtx(MTX1)
+ *	//		Ãæ¡§TASK2¡€MTX1¡§TASK2
+ *	4:	wup_tsk(TASK1)
+ *	//		¹â¡§TASK1¡€Ãæ¡§TASK2¡€MTX1¡§TASK2
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	5:	ter_tsk(TASK2)			... (A-1)
+ *	//		¹â¡§TASK1
+ *	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¢ªTASK3
+ *	== TASK2-2¡ÊÍ¥ÀèÅÙ¡§Äã¡Ë==
+ *	9:	loc_mtx(MTX1)
+ *	//		Ãæ¡§TASK2¡€Äã¡§TASK3¡€MTX1¡§TASK2
+ *	10:	tslp_tsk(10) -> E_TMOUT
+ *	//		Äã¡§TASK3¡€MTX1¡§TASK2
+ *	== TASK3-1¡ÊÍ¥ÀèÅÙ¡§Äã¡Ë==
+ *	11:	loc_mtx(MTX1)
+ *	//		MTX1¡§TASK2¢ªTASK3
+ *	//		¥¿¥€¥à¥¢¥Š¥Èžå
+ *	//		Ãæ¡§TASK2¡€MTX1¡§TASK2¢ªTASK3
+ *	== TASK2-2¡ÊÂ³€­¡Ë==
+ *	12:	wup_tsk(TASK1)
+ *	//		¹â¡§TASK1¡€Ãæ¡§TASK2¡€MTX1¡§TASK2¢ªTASK3
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	13:	ter_tsk(TASK2)			... (A-2)
+ *	//		¹â¡§TASK1¡€Ãæ¡§TASK3¡€MTX1¡§TASK3
+ *	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)
+ *	//		¹â¡§TASK1
+ *
+ *	16:	act_tsk(TASK2)
+ *		act_tsk(TASK3)
+ *	17:	chg_pri(TSK_SELF, LOW_PRIORITY)
+ *	//		Äã¡§TASK2¢ªTASK3¢ªTASK1
+ *	== TASK2-3¡ÊÍ¥ÀèÅÙ¡§Äã¡Ë==
+ *	18:	loc_mtx(MTX1)
+ *	//		Ãæ¡§TASK2¡€Äã¡§TASK3¢ªTASK1¡€MTX1¡§TASK2
+ *	19:	slp_tsk()
+ *	//		Äã¡§TASK3¢ªTASK1¡€MTX1¡§TASK2
+ *	== TASK3-2¡ÊÍ¥ÀèÅÙ¡§Äã¡Ë==
+ *	20:	loc_mtx(MTX1)
+ *	//		Äã¡§TASK1¡€MTX1¡§TASK2¢ªTASK3
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	21:	ter_tsk(TASK2)			... (A-3)
+ *	//		Ãæ¡§TASK3¡€Äã¡§TASK1¡€MTX1¡§TASK3
+ *	== TASK3-2¡ÊÂ³€­¡Ë==
+ *	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
+ *	//		Äã¡§TASK1
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	24:	chg_pri(TSK_SELF, HIGH_PRIORITY)
+ *	//		¹â¡§TASK1
+ *
+ *	25:	act_tsk(TASK2)
+ *	26:	slp_tsk()
+ *	//		Äã¡§TASK2
+ *	== TASK2-4¡ÊÍ¥ÀèÅÙ¡§Äã¡Ë==
+ *	27:	loc_mtx(MTX1)
+ *		loc_mtx(MTX2)
+ *	//		Ãæ¡§TASK2¡€MTX1¡§TASK2¡€MTX2¡§TASK2
+ *	28:	wup_tsk(TASK1)
+ *	//		¹â¡§TASK1¡€Ãæ¡§TASK2¡€MTX1¡§TASK2¡€MTX2¡§TASK2
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	29:	ter_tsk(TASK2)			... (A-4)
+ *	//		¹â¡§TASK1
+ *	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:	act_tsk(TASK2)
+ *		act_tsk(TASK3)
+ *		act_tsk(TASK4)
+ *	32:	slp_tsk()
+ *	//		Äã¡§TASK2¢ªTASK3¢ªTASK4
+ *	== TASK2-5¡ÊÍ¥ÀèÅÙ¡§Äã¡Ë==
+ *	33:	loc_mtx(MTX1)
+ *		loc_mtx(MTX2)
+ *	//		Ãæ¡§TASK2¡€Äã¡§TASK3¢ªTASK4¡€MTX1¡§TASK2¡€MTX2¡§TASK2
+ *	34:	tslp_tsk(10) -> E_TMOUT
+ *	//		Äã¡§TASK3¢ªTASK4¡€MTX1¡§TASK2¡€MTX2¡§TASK2
+ *	== TASK3-3¡ÊÍ¥ÀèÅÙ¡§Äã¡Ë==
+ *	35:	loc_mtx(MTX1)
+ *	//		Äã¡§TASK4¡€MTX1¡§TASK2¢ªTASK3¡€MTX2¡§TASK2
+ *	== TASK4-1¡ÊÍ¥ÀèÅÙ¡§Äã¡Ë==
+ *	36:	loc_mtx(MTX2)
+ *	//		MTX1¡§TASK2¢ªTASK3¡€MTX2¡§TASK2¢ªTASK4
+ *	//		¥¿¥€¥à¥¢¥Š¥Èžå
+ *	//		Ãæ¡§TASK2¡€MTX1¡§TASK2¢ªTASK3¡€MTX2¡§TASK2¢ªTASK4
+ *	== TASK2-5¡ÊÂ³€­¡Ë==
+ *	37:	wup_tsk(TASK1)
+ *	//		¹â¡§TASK1¡€Ãæ¡§TASK2¡€MTX1¡§TASK2¢ªTASK3¡€MTX2¡§TASK2¢ªTASK4
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	38:	ter_tsk(TASK2)			... (A-5)
+ *	//		¹â¡§TASK1¡€Ãæ¡§TASK4¢ªTASK3¡€MTX1¡§TASK3¡€MTX2¡§TASK4
+ *	39:	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)
+ *	40:	chg_pri(TSK_SELF, LOW_PRIORITY)
+ *	//		Ãæ¡§TASK4¢ªTASK3¡€Äã¡§TASK1¡€MTX1¡§TASK3¡€MTX2¡§TASK4
+ *	== TASK4-1¡ÊÂ³€­¡Ë==
+ *	41:	ext_tsk() -> noreturn
+ *	//		Ãæ¡§TASK3¡€Äã¡§TASK1¡€MTX1¡§TASK3
+ *	== TASK3-3¡ÊÂ³€­¡Ë==
+ *	42:	ext_tsk() -> noreturn
+ *	//		Äã¡§TASK1
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	43:	act_tsk(TASK2)
+ *		act_tsk(TASK3)
+ *		act_tsk(TASK4)
+ *	//		Äã¡§TASK1¢ªTASK2¢ªTASK3¢ªTASK4
+ *	44:	chg_pri(TSK_SELF, LOW_PRIORITY)
+ *	//		Äã¡§TASK2¢ªTASK3¢ªTASK4¢ªTASK1
+ *	== TASK2-6¡ÊÍ¥ÀèÅÙ¡§Äã¡Ë==
+ *	45:	loc_mtx(MTX1)
+ *		loc_mtx(MTX2)
+ *	//		Ãæ¡§TASK2¡€Äã¡§TASK3¢ªTASK4¢ªTASK1¡€MTX1¡§TASK2¡€MTX2¡§TASK2
+ *	46:	slp_tsk()
+ *	//		Äã¡§TASK3¢ªTASK4¢ªTASK1¡€MTX1¡§TASK2¡€MTX2¡§TASK2
+ *	== TASK3-4¡ÊÍ¥ÀèÅÙ¡§Äã¡Ë==
+ *	47:	loc_mtx(MTX1)
+ *	//		Äã¡§TASK4¢ªTASK1¡€MTX1¡§TASK2¢ªTASK3¡€MTX2¡§TASK2
+ *	== TASK4-2¡ÊÍ¥ÀèÅÙ¡§Äã¡Ë==
+ *	48:	loc_mtx(MTX2)
+ *	//		Äã¡§TASK1¡€MTX1¡§TASK2¢ªTASK3¡€MTX2¡§TASK2¢ªTASK4
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	49:	ter_tsk(TASK2)			... (A-6)
+ *	//		Ãæ¡§TASK4¢ªTASK3¡€Äã¡§TASK1¡€MTX1¡§TASK3¡€MTX2¡§TASK4
+ *	== TASK4-2¡ÊÂ³€­¡Ë==
+ *	50:	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)
+ *	51:	ext_tsk() -> noreturn
+ *	//		Ãæ¡§TASK3¡€Äã¡§TASK1¡€MTX1¡§TASK3
+ *	== TASK3-4¡ÊÂ³€­¡Ë==
+ *	52:	ext_tsk() -> noreturn
+ *	//		Äã¡§TASK1
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	53:	END
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include "kernel_cfg.h"
+#include "test_lib.h"
+#include "test_mutex7.h"
+
+extern ER	bit_mutex(void);
+
+/* DO NOT DELETE THIS LINE -- gentest depends on it. */
+
+void
+task1(intptr_t exinf)
+{
+	ER_UINT	ercd;
+	PRI		tskpri;
+	T_RMTX	rmtx;
+
+	test_start(__FILE__);
+
+	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);
+	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(32);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(38);
+	ercd = ter_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_point(39);
+	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(40);
+	ercd = chg_pri(TSK_SELF, LOW_PRIORITY);
+	check_ercd(ercd, E_OK);
+
+	check_point(43);
+	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(44);
+	ercd = chg_pri(TSK_SELF, LOW_PRIORITY);
+	check_ercd(ercd, E_OK);
+
+	check_point(49);
+	ercd = ter_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_finish(53);
+	check_point(0);
+}
+
+static uint_t	task2_count = 0;
+
+void
+task2(intptr_t exinf)
+{
+	ER_UINT	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(33);
+		ercd = loc_mtx(MTX1);
+		check_ercd(ercd, E_OK);
+
+		ercd = loc_mtx(MTX2);
+		check_ercd(ercd, E_OK);
+
+		check_point(34);
+		ercd = tslp_tsk(10);
+		check_ercd(ercd, E_TMOUT);
+
+		check_point(37);
+		ercd = wup_tsk(TASK1);
+		check_ercd(ercd, E_OK);
+
+		check_point(0);
+
+	case 6:
+		check_point(45);
+		ercd = loc_mtx(MTX1);
+		check_ercd(ercd, E_OK);
+
+		ercd = loc_mtx(MTX2);
+		check_ercd(ercd, E_OK);
+
+		check_point(46);
+		ercd = slp_tsk();
+		check_ercd(ercd, E_OK);
+
+		check_point(0);
+
+	default:
+		check_point(0);
+	}
+	check_point(0);
+}
+
+static uint_t	task3_count = 0;
+
+void
+task3(intptr_t exinf)
+{
+	ER_UINT	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(35);
+		ercd = loc_mtx(MTX1);
+		check_ercd(ercd, E_OK);
+
+		check_point(42);
+		ercd = ext_tsk();
+
+		check_point(0);
+
+	case 4:
+		check_point(47);
+		ercd = loc_mtx(MTX1);
+		check_ercd(ercd, E_OK);
+
+		check_point(52);
+		ercd = ext_tsk();
+
+		check_point(0);
+
+	default:
+		check_point(0);
+	}
+	check_point(0);
+}
+
+static uint_t	task4_count = 0;
+
+void
+task4(intptr_t exinf)
+{
+	ER_UINT	ercd;
+	PRI		tskpri;
+	T_RMTX	rmtx;
+
+	switch (++task4_count) {
+	case 1:
+		check_point(36);
+		ercd = loc_mtx(MTX2);
+		check_ercd(ercd, E_OK);
+
+		check_point(41);
+		ercd = ext_tsk();
+
+		check_point(0);
+
+	case 2:
+		check_point(48);
+		ercd = loc_mtx(MTX2);
+		check_ercd(ercd, E_OK);
+
+		check_point(50);
+		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(51);
+		ercd = ext_tsk();
+
+		check_point(0);
+
+	default:
+		check_point(0);
+	}
+	check_point(0);
+}
Index: /extension/mutex/test/test_mutex7.cfg
===================================================================
--- /extension/mutex/test/test_mutex7.cfg	(revision 7)
+++ /extension/mutex/test/test_mutex7.cfg	(revision 7)
@@ -0,0 +1,20 @@
+/*
+ *  @(#) $Id$
+ */
+
+/*
+ *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥Æ¥¹¥È(7)€Î¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+ */
+INCLUDE("target_timer.cfg");
+INCLUDE("syssvc/syslog.cfg");
+INCLUDE("syssvc/banner.cfg");
+INCLUDE("syssvc/serial.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: /extension/mutex/test/test_mutex7.h
===================================================================
--- /extension/mutex/test/test_mutex7.h	(revision 7)
+++ /extension/mutex/test/test_mutex7.h	(revision 7)
@@ -0,0 +1,73 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/* 
+ *		¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥Æ¥¹¥È(7)
+ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎÄêµÁ
+ */
+#include "target_test.h"
+
+/*
+ *  Í¥ÀèÅÙ€ÎÄêµÁ
+ */
+#define HIGH_PRIORITY	9		/* ¹âÍ¥ÀèÅÙ */
+#define MID_PRIORITY	10		/* ÃæÍ¥ÀèÅÙ */
+#define LOW_PRIORITY	11		/* ÄãÍ¥ÀèÅÙ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È€Ë°ÍÂž€¹€ë²ÄÇœÀ­€Î€¢€ëÄê¿ô€ÎÄêµÁ
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯¥µ¥€¥º */
+#endif /* STACK_SIZE */
+
+/*
+ *  ŽØ¿ô€Î¥×¥í¥È¥¿¥€¥×ÀëžÀ
+ */
+#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: /extension/mutex/test/test_mutex8.c
===================================================================
--- /extension/mutex/test/test_mutex8.c	(revision 7)
+++ /extension/mutex/test/test_mutex8.c	(revision 7)
@@ -0,0 +1,710 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2009-2013 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$
+ */
+
+/* 
+ *		¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥Æ¥¹¥È(8)
+ *
+ * ¡Ú¥Æ¥¹¥È€ÎÌÜÅª¡Û
+ *
+ *  Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ËÂÐ€·€Æ¡€chg_pri€ËÈŒ€Š¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹ŽØÏ¢€Î
+ *  Í¥ÀèÅÙÊÑ¹¹œèÍý€òÌÖÍåÅª€Ë¥Æ¥¹¥È€¹€ë¡¥€¿€À€·¡€change_priority€È
+ *  mutex_calc_priority€ÎÆâÍÆ€Ë€ÏÆ§€ß¹þ€Þ€Ê€€¡¥
+ *
+ * ¡Ú¥Æ¥¹¥È¹àÌÜ¡Û
+ *
+ *	(A) ¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ€ÎÊÑ¹¹œèÍý¡Êchg_pri¡Ë
+ *		(A-1) ÂÐŸÝ¥¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ç¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ
+ *			  €€€Ê€€Ÿì¹ç€Ë¡€Æ±€žÍ¥ÀèÅÙÆâ€Ç€ÎÍ¥Àèœç°Ì€¬ºÇÄã€Ë€Ê€ë€³€È
+ *		(A-2) ÂÐŸÝ¥¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ç¡€Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹°Ê
+ *			  ³°€Î¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î€ß€ò¥í¥Ã¥¯€·€Æ€€€ëŸì¹ç€Ë¡€Æ±€žÍ¥ÀèÅÙ
+ *			  Æâ€Ç€ÎÍ¥Àèœç°Ì€¬ºÇÄã€Ë€Ê€ë€³€È
+ *		(A-3) ÂÐŸÝ¥¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ç¡€Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò
+ *			  ¥í¥Ã¥¯€·€Æ€€€ëŸì¹ç€Ë¡€Æ±€žÍ¥ÀèÅÙÆâ€Ç€ÎÍ¥Àèœç°Ì€¬ÊÑ€ï€é€Ê
+ *			  €€€³€È
+ *		(A-4) ÂÐŸÝ¥¿¥¹¥¯€¬ÂÔ€ÁŸõÂÖ€Ç¡€Í¥ÀèÅÙœç€ÎÂÔ€Á¹ÔÎó€Ë€Ä€Ê€¬€ì€Æ€ª
+ *			  €ê¡€¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€€Ê€€Ÿì¹ç€Ë¡€Í¥ÀèÅÙ€¬Àµ€·
+ *			  €¯ÊÑ¹¹€µ€ì¡€Æ±€žÍ¥ÀèÅÙÆâ€Ç€Îœçœø€¬ºÇžå€Ë€Ê€ë€³€È
+ *		(A-5) ÂÐŸÝ¥¿¥¹¥¯€¬ÂÔ€ÁŸõÂÖ€Ç¡€Í¥ÀèÅÙœç€ÎÂÔ€Á¹ÔÎó€Ë€Ä€Ê€¬€ì€Æ€ª
+ *			  €ê¡€Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹°Ê³°€Î¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î€ß€ò¥í¥Ã
+ *			  ¥¯€·€Æ€€€ëŸì¹ç€Ë¡€Í¥ÀèÅÙ€¬Àµ€·€¯ÊÑ¹¹€µ€ì¡€Æ±€žÍ¥ÀèÅÙÆâ€Ç
+ *			  €Îœçœø€¬ºÇžå€Ë€Ê€ë€³€È
+ *		(A-6) ÂÐŸÝ¥¿¥¹¥¯€¬ÂÔ€ÁŸõÂÖ€Ç¡€Í¥ÀèÅÙœç€ÎÂÔ€Á¹ÔÎó€Ë€Ä€Ê€¬€ì€Æ€ª
+ *			  €ê¡€Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€€ëŸì¹ç€Ë¡€Æ±€ž
+ *			  Í¥ÀèÅÙÆâ€Ç€Îœçœø€¬ÊÑ€ï€é€Ê€€€³€È
+ *	(B) ¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ€ÎÊÑ¹¹œèÍý¡Êchg_pri¡Ë€ÎE_ILUSE¥š¥é¡Œ
+ *		(B-1) ÂÐŸÝ¥¿¥¹¥¯€¬¥í¥Ã¥¯€·€Æ€€€ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎŸåžÂÍ¥ÀèÅÙ€è€ê
+ *			  €â¡€¥Ù¡Œ¥¹Í¥ÀèÅÙ€ò¹â€¯€·€è€Š€È€·€¿»þ¡€E_ILUSE¥š¥é¡Œ€Ë€Ê€ë
+ *			  €³€È
+ *		(B-2) ÂÐŸÝ¥¿¥¹¥¯€¬Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ò¥í¥Ã¥¯€·€Æ€€€Æ€â¡€
+ *			  ¥í¥Ã¥¯€·€Æ€€€ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎŸåžÂÍ¥ÀèÅÙ€è€ê€â¡€¥Ù¡Œ¥¹Í¥
+ *			  ÀèÅÙ€ò¹â€¯€·€è€Š€È€·€Ê€€Ÿì¹ç€Ë€Ï¡€E_ILUSE¥š¥é¡Œ€Ë€Ê€é€Ê€€
+ *			  €³€È
+ *		(B-3) ÂÐŸÝ¥¿¥¹¥¯€¬¥í¥Ã¥¯€òÂÔ€Ã€Æ€€€ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎŸåžÂÍ¥ÀèÅÙ
+ *			  €è€ê€â¡€¥Ù¡Œ¥¹Í¥ÀèÅÙ€ò¹â€¯€·€è€Š€È€·€¿»þ¡€E_ILUSE¥š¥é¡Œ€Ë
+ *			  €Ê€ë€³€È
+ *		(B-4) ÂÐŸÝ¥¿¥¹¥¯€¬Í¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹ÂÔ€Á€Ç€¢€Ã€Æ€â¡€¥í¥Ã
+ *			  ¥¯€òÂÔ€Ã€Æ€€€ë¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€ÎŸåžÂÍ¥ÀèÅÙ€è€ê€â¡€¥Ù¡Œ¥¹Í¥
+ *			  ÀèÅÙ€ò¹â€¯€·€è€Š€È€·€Ê€€Ÿì¹ç€Ë€Ï¡€E_ILUSE¥š¥é¡Œ€Ë€Ê€é€Ê€€
+ *			  €³€È
+ *
+ * ¡Ú¥Æ¥¹¥È¹àÌÜ€ÎŒÂžœÊýË¡¡Û
+ *
+ *	(A-1)
+ *		ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€¬ŒÂ¹Ô²ÄÇœŸõÂÖ€Î»þ€Ë¡€¹âÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *		¡ÊTASK5¡Ë€«€éTASK1€òÄãÍ¥ÀèÅÙ€Ëchg_pri€¹€ë€È¡€ŒÂ¹Ô²ÄÇœŸõÂÖ€ÎÂŸ€Î
+ *		ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK4¡Ë€è€ê€â¡€Í¥Àèœç°Ì€¬Äã€¯€Ê€ë€³€È€ò³ÎÇ§€¹€ë¡¥
+ *	(A-2)
+ *		ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€¬Í¥ÀèÅÙœç¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX3¡Ë€ò¥í¥Ã¥¯
+ *		€·¡€ŒÂ¹Ô²ÄÇœŸõÂÖ€Î»þ€Ë¡€¹âÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK5¡Ë€«€éTASK1€òÄãÍ¥
+ *		ÀèÅÙ€Ëchg_pri€¹€ë€È¡€ŒÂ¹Ô²ÄÇœŸõÂÖ€ÎÂŸ€ÎÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK4¡Ë
+ *		€è€ê€â¡€Í¥Àèœç°Ì€¬Äã€¯€Ê€ë€³€È€ò³ÎÇ§€¹€ë¡¥
+ *	(A-3)
+ *		ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€¬ÃæÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX1¡Ë€ò¥í¥Ã
+ *		¥¯€·¡€ŒÂ¹Ô²ÄÇœŸõÂÖ€Î»þ€Ë¡€¹âÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK5¡Ë€«€éTASK1€òÄã
+ *		Í¥ÀèÅÙ€Ëchg_pri€¹€ë€È¡€TASK1€ÎÍ¥ÀèÅÙ€¬ÊÑ²œ€·€Ê€€€³€È€ò³ÎÇ§€¹€ë¡¥
+ *		€Þ€¿¡€ŒÂ¹Ô²ÄÇœŸõÂÖ€ÎÃæÍ¥ÀèÅÙ¥¿¥¹¥¯€ò2€Ä¡ÊTASK2¡€TASK3¡Ë€òÍÑ°Õ€·
+ *		€Æ€ª€­¡€Í¥Àèœç°Ì€¬ÊÑ€ï€é€Ê€€€³€È€ò³ÎÇ§€¹€ë¡¥
+ *	(A-4)
+ *		ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€¬¹âÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX2¡Ë€òÂÔ€Ã
+ *		€Æ€€€ë»þ€Ë¡€¹âÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK5¡Ë€«€éTASK1€òÄãÍ¥ÀèÅÙ€Ë
+ *		chg_pri€¹€ë€È¡€MTX2€òÂÔ€Ã€Æ€€€ëÂŸ€ÎÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK4¡Ë€è€ê
+ *		€â¡€ÂÔ€Á¹ÔÎóÃæ€Ç€Îœçœø€¬žå€Ë€Ê€ë€³€È€ò³ÎÇ§€¹€ë¡¥
+ *	(A-5)
+ *		ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€¬Í¥ÀèÅÙœç¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX3¡Ë€ò¥í¥Ã¥¯
+ *		€·¡€¹âÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX2¡Ë€òÂÔ€Ã€Æ€€€ë»þ€Ë¡€¹âÍ¥ÀèÅÙ¥¿
+ *		¥¹¥¯¡ÊTASK5¡Ë€«€éTASK1€òÄãÍ¥ÀèÅÙ€Ëchg_pri€¹€ë€È¡€MTX2€òÂÔ€Ã€Æ€€
+ *		€ëÂŸ€ÎÄãÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK4¡Ë€è€ê€â¡€ÂÔ€Á¹ÔÎóÃæ€Ç€Îœçœø€¬ÊÑ€ï€é
+ *		€Ê€€€³€È€ò³ÎÇ§€¹€ë¡¥
+ *	(A-6)
+ *		ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€¬ÃæÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX1¡Ë€ò¥í¥Ã
+ *		¥¯€·¡€¹âÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX2¡Ë€òÂÔ€Ã€Æ€€€ë»þ€Ë¡€¹âÍ¥
+ *		ÀèÅÙ¥¿¥¹¥¯¡ÊTASK5¡Ë€«€éTASK1€òÄãÍ¥ÀèÅÙ€Ëchg_pri€¹€ë€È¡€TASK1€Î
+ *		Í¥ÀèÅÙ€¬ÊÑ²œ€·€Ê€€€³€È€ò³ÎÇ§€¹€ë¡¥€Þ€¿¡€MTX2€òÂÔ€Ã€Æ€€€ëÃæÍ¥Àè
+ *		ÅÙ¥¿¥¹¥¯€ò2€Ä¡ÊTASK2¡€TASK3¡Ë€òÍÑ°Õ€·€Æ€ª€­¡€ÂÔ€Á¹ÔÎóÃæ€Ç€Îœçœø
+ *		€¬ÊÑ€ï€é€Ê€€€³€È€ò³ÎÇ§€¹€ë¡¥
+ *	(B-1)
+ *		ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK1¡Ë€¬ÃæÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX1¡Ë€ò¥í¥Ã
+ *		¥¯€·¡€ŒÂ¹Ô²ÄÇœŸõÂÖ€Î»þ€Ë¡€¹âÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK5¡Ë€«€éTASK1€ò¹â
+ *		Í¥ÀèÅÙ€Ëchg_pri€¹€ë€È¡€E_ILUSE¥š¥é¡Œ€Ë€Ê€ë€³€È€ò³ÎÇ§€¹€ë¡¥
+ *	(B-2)
+ *		(A-3)€Î¥Æ¥¹¥È¹àÌÜ€Ç¡€chg_pri€¬E_ILUSE¥š¥é¡Œ€Ë€Ê€é€Ê€€€³€È€Ç³ÎÇ§
+ *		€Ç€­€Æ€€€ë¡¥
+ *	(B-3)
+ *		ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK2¡Ë€¬ÃæÍ¥ÀèÅÙŸåžÂ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊMTX1¡Ë€Î¥í¥Ã
+ *		¥¯€òÂÔ€Ã€Æ€€€ë»þ€Ë¡€¹âÍ¥ÀèÅÙ¥¿¥¹¥¯¡ÊTASK5¡Ë€«€éTASK2€ò¹âÍ¥ÀèÅÙ
+ *		€Ëchg_pri€¹€ë€È¡€E_ILUSE¥š¥é¡Œ€Ë€Ê€ë€³€È€ò³ÎÇ§€¹€ë¡¥
+ *	(B-4)
+ *		(A-6)€Î¥Æ¥¹¥È¹àÌÜ€Ç¡€chg_pri€¬E_ILUSE¥š¥é¡Œ€Ë€Ê€é€Ê€€€³€È€Ç³ÎÇ§
+ *		€Ç€­€Æ€€€ë¡¥
+ *
+ * ¡Ú»ÈÍÑ¥ê¥œ¡Œ¥¹¡Û
+ *
+ *	TASK1: ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡€¥á¥€¥ó¥¿¥¹¥¯¡€ºÇœé€«€éµ¯Æ°
+ *	TASK2: ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	TASK3: ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	TASK4: ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	TASK5: ¹âÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	MTX1: ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊTA_CEILINGÂ°À­¡€ŸåžÂ€ÏÃæÍ¥ÀèÅÙ¡Ë
+ *	MTX2: ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊTA_CEILINGÂ°À­¡€ŸåžÂ€Ï¹âÍ¥ÀèÅÙ¡Ë
+ *	MTX3: ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹¡ÊTA_TPRIÂ°À­¡Ë
+ *
+ * ¡Ú¥Æ¥¹¥È¥·¡Œ¥±¥ó¥¹¡Û
+ *
+ *	== TASK1¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë==
+ *		call(set_bit_func(bit_mutex))
+ *	1:	act_tsk(TASK4)
+ *	2:	act_tsk(TASK5)
+ *	//		¹â¡§TASK5¡€Ãæ¡§TASK1¡€Äã¡§TASK4
+ *	== TASK5¡ÊÍ¥ÀèÅÙ¡§¹â¡Ë==
+ *	3:	chg_pri(TASK1, LOW_PRIORITY)		... (A-1)
+ *	//		¹â¡§TASK5¡€Äã¡§TASK4¢ªTASK1
+ *	4:	slp_tsk()
+ *	== TASK4¡ÊÍ¥ÀèÅÙ¡§Äã¡Ë==
+ *	5:	slp_tsk()
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	6:	chg_pri(TSK_SELF, TPRI_INI)
+ *
+ *	7:	loc_mtx(MTX3)
+ *	8:	wup_tsk(TASK4)
+ *	9:	wup_tsk(TASK5)
+ *	//		¹â¡§TASK5¡€Ãæ¡§TASK1¡€Äã¡§TASK4¡€MTX3¡§TASK1
+ *	== TASK5¡ÊÂ³€­¡Ë==
+ *	10:	chg_pri(TASK1, LOW_PRIORITY)		... (A-2)
+ *	//		¹â¡§TASK5¡€Äã¡§TASK4¢ªTASK1¡€MTX3¡§TASK1
+ *	11:	slp_tsk()
+ *	== TASK4¡ÊÂ³€­¡Ë==
+ *	12:	slp_tsk()
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	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)
+ *	//		Ãæ¡§TASK2¢ªTASK1¢ªTASK3¡€MTX1¡§TASK1
+ *	19:	wup_tsk(TASK5)
+ *	//		¹â¡§TASK5¡€Ãæ¡§TASK2¢ªTASK1¢ªTASK3¡€MTX1¡§TASK1
+ *	20:	ena_dsp()
+ *	== TASK5¡ÊÂ³€­¡Ë==
+ *	21:	chg_pri(TASK1, LOW_PRIORITY)		... (A-3)(B-2)
+ *	//		¹â¡§TASK5¡€Ãæ¡§TASK2¢ªTASK1¢ªTASK3¡€MTX1¡§TASK1
+ *		get_pri(TASK1, &tskpri)
+ *		assert(tskpri == MID_PRIORITY)
+ *	22:	slp_tsk()
+ *	//		Ãæ¡§TASK2¢ªTASK1¢ªTASK3¡€MTX1¡§TASK1
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	23:	slp_tsk()
+ *	//		Ãæ¡§TASK1¢ªTASK3¡€MTX1¡§TASK1
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	24:	unl_mtx(MTX1)
+ *	//		Ãæ¡§TASK3¡€Äã¡§TASK1
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	25:	slp_tsk()
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	26:	chg_pri(TSK_SELF, TPRI_INI)
+ *
+ *	27:	wup_tsk(TASK5)
+ *	== TASK5¡ÊÂ³€­¡Ë==
+ *	28:	loc_mtx(MTX2)
+ *	29:	tslp_tsk(10) -> E_TMOUT
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	30:	wup_tsk(TASK4)
+ *	31:	loc_mtx(MTX2)
+ *	== TASK4¡ÊÂ³€­¡Ë==
+ *	32:	loc_mtx(MTX2)
+ *	//		MTX2¡§TASK5¢ªTASK1¢ªTASK4
+ *	//		¥¿¥€¥à¥¢¥Š¥ÈÂÔ€Á
+ *	//		¹â¡§TASK5¡€MTX2¡§TASK5¢ªTASK1¢ªTASK4
+ *	== TASK5¡ÊÂ³€­¡Ë==
+ *	33:	chg_pri(TASK1, LOW_PRIORITY)		... (A-4)
+ *	//		¹â¡§TASK5¡€MTX2¡§TASK5¢ªTASK4¢ªTASK1
+ *	34:	unl_mtx(MTX2)
+ *	//		¹â¡§TASK5¢ªTASK4¡€MTX2¡§TASK4¢ªTASK1
+ *	35:	slp_tsk()
+ *	//		¹â¡§TASK4¡€MTX2¡§TASK4¢ªTASK1
+ *	== TASK4¡ÊÂ³€­¡Ë==
+ *	36:	unl_mtx(MTX2)
+ *	//		¹â¡§TASK1¡€Äã¡§TASK4¡€MTX2¡§TASK1
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	37:	unl_mtx(MTX2)
+ *	//		Äã¡§TASK1¢ªTASK4
+ *	38:	chg_pri(TSK_SELF, TPRI_INI)
+ *
+ *	39:	loc_mtx(MTX3)
+ *	40:	wup_tsk(TASK5)
+ *	//		¹â¡§TASK5¡€Ãæ¡§TASK1¡€Äã¡§TASK4¡€MTX3¡§TASK1
+ *	== TASK5¡ÊÂ³€­¡Ë==
+ *	41:	loc_mtx(MTX2)
+ *	42:	tslp_tsk(10) -> E_TMOUT
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	43:	loc_mtx(MTX2)
+ *	== TASK4¡ÊÂ³€­¡Ë==
+ *	44:	loc_mtx(MTX2)
+ *	//		MTX2¡§TASK5¢ªTASK1¢ªTASK4¡€MTX3¡§TASK1
+ *	//		¥¿¥€¥à¥¢¥Š¥ÈÂÔ€Á
+ *	//		¹â¡§TASK5¡€MTX2¡§TASK5¢ªTASK1¢ªTASK4¡€MTX3¡§TASK1
+ *	== TASK5¡ÊÂ³€­¡Ë==
+ *	45:	chg_pri(TASK1, LOW_PRIORITY)		... (A-5)
+ *	//		¹â¡§TASK5¡€MTX2¡§TASK5¢ªTASK4¢ªTASK1¡€MTX3¡§TASK1
+ *	46:	unl_mtx(MTX2)
+ *	//		¹â¡§TASK5¢ªTASK4¡€MTX2¡§TASK4¢ªTASK1¡€MTX3¡§TASK1
+ *	47:	slp_tsk()
+ *	//		¹â¡§TASK4¡€MTX2¡§TASK4¢ªTASK1¡€MTX3¡§TASK1
+ *	== TASK4¡ÊÂ³€­¡Ë==
+ *	48:	unl_mtx(MTX2)
+ *	//		¹â¡§TASK1¡€Äã¡§TASK4¡€MTX2¡§TASK1¡€MTX3¡§TASK1
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	49:	unl_mtx(MTX2)
+ *	//		Äã¡§TASK1¢ªTASK4¡€MTX3¡§TASK1
+ *	50:	unl_mtx(MTX3)
+ *	//		Äã¡§TASK1¢ªTASK4
+ *	51:	ter_tsk(TASK4)
+ *	52:	chg_pri(TSK_SELF, TPRI_INI)
+ *
+ *	53:	loc_mtx(MTX1)
+ *	54:	wup_tsk(TASK5)
+ *	//		¹â¡§TASK5¡€Ãæ¡§TASK1¡€MTX1¡§TASK1
+ *	== TASK5¡ÊÂ³€­¡Ë==
+ *	55:	loc_mtx(MTX2)
+ *	56:	tslp_tsk(10) -> E_TMOUT
+ *	//		Ãæ¡§TASK1¡€MTX1¡§TASK1¡€MTX2¡§TASK5
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	57:	wup_tsk(TASK2)
+ *	58:	rot_rdq(MID_PRIORITY)
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	59:	loc_mtx(MTX2)
+ *	//		Ãæ¡§TASK1¡€MTX1¡§TASK1¡€MTX2¡§TASK5¢ªTASK2
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	60:	wup_tsk(TASK3)
+ *	61:	loc_mtx(MTX2)
+ *	//		Ãæ¡§TASK3¡€MTX1¡§TASK1¡€MTX2¡§TASK5¢ªTASK2¢ªTASK1
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	62:	loc_mtx(MTX2)
+ *	//		MTX1¡§TASK1¡€MTX2¡§TASK5¢ªTASK2¢ªTASK1¢ªTASK3
+ *	//		¥¿¥€¥à¥¢¥Š¥ÈÂÔ€Á
+ *	//		¹â¡§TASK5¡€MTX1¡§TASK1¡€MTX2¡§TASK5¢ªTASK2¢ªTASK1¢ªTASK3
+ *	== TASK5¡ÊÂ³€­¡Ë==
+ *	63:	chg_pri(TASK1, LOW_PRIORITY)		... (A-6)(B-4)
+ *	//		¹â¡§TASK5¡€MTX1¡§TASK1¡€MTX2¡§TASK5¢ªTASK2¢ªTASK1¢ªTASK3
+ *		get_pri(TASK1, &tskpri)
+ *		assert(tskpri == MID_PRIORITY)
+ *	64:	unl_mtx(MTX2)
+ *	//		¹â¡§TASK5¢ªTASK2¡€MTX1¡§TASK1¡€MTX2¡§TASK2¢ªTASK1¢ªTASK3
+ *	65:	slp_tsk()
+ *	//		¹â¡§TASK2¡€MTX1¡§TASK1¡€MTX2¡§TASK2¢ªTASK1¢ªTASK3
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	66:	unl_mtx(MTX2)
+ *	//		¹â¡§TASK1¡€Ãæ¡§TASK2¡€MTX1¡§TASK1¡€MTX2¡§TASK1¢ªTASK3
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	67:	unl_mtx(MTX2)
+ *	//		¹â¡§TASK3¡€Ãæ¡§TASK1¢ªTASK2¡€MTX1¡§TASK1¡€MTX2¡§TASK3
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	68:	unl_mtx(MTX2)
+ *	//		Ãæ¡§TASK3¢ªTASK1¢ªTASK2¡€MTX1¡§TASK1
+ *	69:	ext_tsk() -> noreturn
+ *	//		Ãæ¡§TASK1¢ªTASK2¡€MTX1¡§TASK1
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	70:	chg_pri(TSK_SELF, TPRI_INI)
+ *	//		Ãæ¡§TASK1¢ªTASK2¡€MTX1¡§TASK1
+ *
+ *	71:	rot_rdq(MID_PRIORITY)
+ *	//		Ãæ¡§TASK2¢ªTASK1¡€MTX1¡§TASK1
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	72:	loc_mtx(MTX1)
+ *	//		Ãæ¡§TASK1¡€MTX1¡§TASK1¢ªTASK2
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	73:	wup_tsk(TASK5)
+ *	//		¹â¡§TASK5¡€Ãæ¡§TASK1¡€MTX1¡§TASK1¢ªTASK2
+ *	== TASK5¡ÊÂ³€­¡Ë==
+ *	74:	chg_pri(TASK1, HIGH_PRIORITY) -> E_ILUSE	... (B-1)
+ *	75:	chg_pri(TASK2, HIGH_PRIORITY) -> E_ILUSE	... (B-3)
+ *	76:	ext_tsk() -> noreturn
+ *	//		Ãæ¡§TASK1¡€MTX1¡§TASK1¢ªTASK2
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	77:	unl_mtx(MTX1)
+ *	//		Ãæ¡§TASK1¢ªTASK2¡€MTX1¡§TASK2
+ *	78:	ext_tsk() -> noreturn
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	79:	unl_mtx(MTX1)
+ *	80:	END
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include "kernel_cfg.h"
+#include "test_lib.h"
+#include "test_mutex8.h"
+
+extern ER	bit_mutex(void);
+
+/* DO NOT DELETE THIS LINE -- gentest depends on it. */
+
+void
+task1(intptr_t exinf)
+{
+	ER_UINT	ercd;
+
+	test_start(__FILE__);
+
+	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_UINT	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_UINT	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_UINT	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_UINT	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: /extension/mutex/test/test_mutex8.cfg
===================================================================
--- /extension/mutex/test/test_mutex8.cfg	(revision 7)
+++ /extension/mutex/test/test_mutex8.cfg	(revision 7)
@@ -0,0 +1,22 @@
+/*
+ *  @(#) $Id$
+ */
+
+/*
+ *  ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥Æ¥¹¥È(8)€Î¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+ */
+INCLUDE("target_timer.cfg");
+INCLUDE("syssvc/syslog.cfg");
+INCLUDE("syssvc/banner.cfg");
+INCLUDE("syssvc/serial.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: /extension/mutex/test/test_mutex8.h
===================================================================
--- /extension/mutex/test/test_mutex8.h	(revision 7)
+++ /extension/mutex/test/test_mutex8.h	(revision 7)
@@ -0,0 +1,74 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/* 
+ *		¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹€Î¥Æ¥¹¥È(8)
+ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎÄêµÁ
+ */
+#include "target_test.h"
+
+/*
+ *  Í¥ÀèÅÙ€ÎÄêµÁ
+ */
+#define HIGH_PRIORITY	9		/* ¹âÍ¥ÀèÅÙ */
+#define MID_PRIORITY	10		/* ÃæÍ¥ÀèÅÙ */
+#define LOW_PRIORITY	11		/* ÄãÍ¥ÀèÅÙ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È€Ë°ÍÂž€¹€ë²ÄÇœÀ­€Î€¢€ëÄê¿ô€ÎÄêµÁ
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯¥µ¥€¥º */
+#endif /* STACK_SIZE */
+
+/*
+ *  ŽØ¿ô€Î¥×¥í¥È¥¿¥€¥×ÀëžÀ
+ */
+#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: /extension/ovrhdr/include/kernel.h
===================================================================
--- /extension/ovrhdr/include/kernel.h	(revision 7)
+++ /extension/ovrhdr/include/kernel.h	(revision 7)
@@ -0,0 +1,527 @@
+/*
+ *  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-2014 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$
+ */
+
+/*
+ *		TOPPERS/ASP¥«¡Œ¥Í¥ë Éžœà¥Ø¥Ã¥À¥Õ¥¡¥€¥ë
+ *
+ *  TOPPERS/ASP¥«¡Œ¥Í¥ë€¬¥µ¥Ý¡Œ¥È€¹€ë¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎÀëžÀ€È¡€É¬Í×€Ê¥Ç¡Œ
+ *  ¥¿·¿¡€Äê¿ô¡€¥Þ¥¯¥í€ÎÄêµÁ€òŽÞ€à¥Ø¥Ã¥À¥Õ¥¡¥€¥ë¡¥
+ *
+ *  ¥¢¥»¥ó¥Ö¥êžÀžì€Î¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€«€é€³€Î¥Õ¥¡¥€¥ë€ò¥€¥ó¥¯¥ë¡Œ¥É€¹€ë»þ
+ *  €Ï¡€TOPPERS_MACRO_ONLY€òÄêµÁ€·€Æ€ª€¯¡¥€³€ì€Ë€è€ê¡€¥Þ¥¯¥íÄêµÁ°Ê³°€ò
+ *  œü€¯€è€Š€Ë€Ê€Ã€Æ€€€ë¡¥
+ *
+ *  €³€Î¥Õ¥¡¥€¥ë€ò¥€¥ó¥¯¥ë¡Œ¥É€¹€ëÁ°€Ë¥€¥ó¥¯¥ë¡Œ¥É€·€Æ€ª€¯€Ù€­¥Õ¥¡¥€¥ë
+ *  €Ï€Ê€€¡¥
+ */
+
+#ifndef TOPPERS_KERNEL_H
+#define TOPPERS_KERNEL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *	TOPPERS¶ŠÄÌ€Î¥Ç¡Œ¥¿·¿¡ŠÄê¿ô¡Š¥Þ¥¯¥í
+ */
+#include <t_stddef.h>
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô
+ */
+#include "target_kernel.h"
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  ¥Ç¡Œ¥¿·¿€ÎÄêµÁ
+ */
+
+/*
+ *  ¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó€ä¥ª¥Ö¥ž¥§¥¯¥ÈÈÖ¹æ€Î·¿ÄêµÁ
+ */
+typedef	uint_t		TEXPTN;		/* ¥¿¥¹¥¯Îã³°Í×°ø€Î¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó */
+typedef	uint_t		FLGPTN;		/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€Î¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó */
+typedef	ulong_t		OVRTIM;		/* ¥×¥í¥»¥Ã¥µ»þŽÖ */
+typedef	uint_t		INTNO;		/* ³ä¹þ€ßÈÖ¹æ */
+typedef	uint_t		INHNO;		/* ³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ */
+typedef	uint_t		EXCNO;		/* CPUÎã³°¥Ï¥ó¥É¥éÈÖ¹æ */
+
+/*
+ *  œèÍýÃ±°Ì€Î·¿ÄêµÁ
+ */
+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);
+
+/*
+ *  ¥á¥â¥êÎÎ°è³ÎÊÝ€Î€¿€á€Î·¿ÄêµÁ
+ */
+#ifndef TOPPERS_STK_T
+#define TOPPERS_STK_T	intptr_t
+#endif /* TOPPERS_STK_T */
+typedef	TOPPERS_STK_T	STK_T;	/* ¥¹¥¿¥Ã¥¯ÎÎ°è€ò³ÎÊÝ€¹€ë€¿€á€Î·¿ */
+
+#ifndef TOPPERS_MPF_T
+#define TOPPERS_MPF_T	intptr_t
+#endif /* TOPPERS_MPF_T */
+typedef	TOPPERS_MPF_T	MPF_T;	/* žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÎÎ°è€ò³ÎÊÝ€¹€ë€¿€á€Î·¿ */
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ø¥Ã¥À€Î·¿ÄêµÁ
+ */
+typedef	struct t_msg {			/* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€Î¥á¥Ã¥»¡Œ¥ž¥Ø¥Ã¥À */
+	struct t_msg	*pk_next;
+} T_MSG;
+
+typedef	struct t_msg_pri {		/* Í¥ÀèÅÙÉÕ€­¥á¥Ã¥»¡Œ¥ž¥Ø¥Ã¥À */
+	T_MSG	msgque;				/* ¥á¥Ã¥»¡Œ¥ž¥Ø¥Ã¥À */
+	PRI		msgpri;				/* ¥á¥Ã¥»¡Œ¥žÍ¥ÀèÅÙ */
+} T_MSG_PRI;
+
+/*
+ *  ¥Ñ¥±¥Ã¥È·ÁŒ°€ÎÄêµÁ
+ */
+typedef struct t_rtsk {
+	STAT	tskstat;	/* ¥¿¥¹¥¯ŸõÂÖ */
+	PRI		tskpri;		/* ¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ */
+	PRI		tskbpri;	/* ¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ */
+	STAT	tskwait;	/* ÂÔ€ÁÍ×°ø */
+	ID		wobjid;		/* ÂÔ€ÁÂÐŸÝ€Î¥ª¥Ö¥ž¥§¥¯¥È€ÎID */
+	TMO		lefttmo;	/* ¥¿¥€¥à¥¢¥Š¥È€¹€ë€Þ€Ç€Î»þŽÖ */
+	uint_t	actcnt;		/* µ¯Æ°Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô */
+	uint_t	wupcnt;		/* µ¯Ÿ²Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô */
+} T_RTSK;
+
+typedef struct t_rtex {
+	STAT	texstat;	/* ¥¿¥¹¥¯Îã³°œèÍý€ÎŸõÂÖ */
+	TEXPTN	pndptn;		/* ÊÝÎ±Îã³°Í×°ø */
+} T_RTEX;
+
+typedef struct t_rsem {
+	ID		wtskid;		/* ¥»¥Þ¥Õ¥©€ÎÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
+	uint_t	semcnt;		/* ¥»¥Þ¥Õ¥©€Îžœºß€Î»ñž»¿ô */
+} T_RSEM;
+
+typedef struct t_rflg {
+	ID		wtskid;		/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
+	FLGPTN	flgptn;		/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€Îžœºß€Î¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó */
+} T_RFLG;
+
+typedef struct t_rdtq {
+	ID		stskid;		/* ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎÁ÷¿®ÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
+	ID		rtskid;		/* ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎŒõ¿®ÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
+	uint_t	sdtqcnt;	/* ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€Ë³ÊÇŒ€µ€ì€Æ€€€ë¥Ç¡Œ¥¿€Î¿ô */
+} T_RDTQ;
+
+typedef struct t_rpdq {
+	ID		stskid;		/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎÁ÷¿®ÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯
+						   €ÎIDÈÖ¹æ */
+	ID		rtskid;		/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎŒõ¿®ÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯
+						   €ÎIDÈÖ¹æ */
+	uint_t	spdqcnt;	/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€Ë³ÊÇŒ€µ€ì€Æ€€€ë¥Ç¡Œ
+						   ¥¿€Î¿ô */
+} T_RPDQ;
+
+typedef struct t_rmbx {
+	ID		wtskid;		/* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€ÎÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
+	T_MSG	*pk_msg;	/* ¥á¥Ã¥»¡Œ¥ž¥­¥å¡Œ€ÎÀèÆ¬€Ë€Ä€Ê€¬€ì€¿¥á¥Ã¥»¡Œ¥ž
+						   €ÎÀèÆ¬ÈÖÃÏ */
+} T_RMBX;
+
+typedef struct t_rmpf {
+	ID		wtskid;		/* žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ë€ÎÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€Î
+						   IDÈÖ¹æ */
+	uint_t	fblkcnt;	/* žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÎÎ°è€Î¶õ€­¥á¥â¥êÎÎ°è€Ë³ä€ê
+						   ÉÕ€±€ë€³€È€¬€Ç€­€ëžÇÄêÄ¹¥á¥â¥ê¥Ö¥í¥Ã¥¯€Î¿ô */
+} T_RMPF;
+
+typedef struct t_rcyc {
+	STAT	cycstat;	/* ŒþŽü¥Ï¥ó¥É¥é€ÎÆ°ºîŸõÂÖ */
+	RELTIM	lefttim;	/* Œ¡€ËŒþŽü¥Ï¥ó¥É¥é€òµ¯Æ°€¹€ë»þ¹ï€Þ€Ç€ÎÁêÂÐ»þŽÖ */
+} T_RCYC;
+
+typedef struct t_ralm {
+	STAT	almstat;	/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ÎÆ°ºîŸõÂÖ */
+	RELTIM	lefttim;	/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€òµ¯Æ°€¹€ë»þ¹ï€Þ€Ç€ÎÁêÂÐ»þŽÖ */
+} T_RALM;
+
+typedef struct t_rovr {
+	STAT	ovrstat;	/* ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€ÎÆ°ºîŸõÂÖ */
+	OVRTIM	leftotm;	/* »Ä€ê¥×¥í¥»¥Ã¥µ»þŽÖ */
+} T_ROVR;
+
+/*
+ *  ¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎÀëžÀ
+ */
+
+/*
+ *  ¥¿¥¹¥¯ŽÉÍýµ¡Çœ
+ */
+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();
+
+/*
+ *  ¥¿¥¹¥¯ÉÕÂ°Æ±Žüµ¡Çœ
+ */
+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();
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍýµ¡Çœ
+ */
+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();
+
+/*
+ *  Æ±Žü¡ŠÄÌ¿®µ¡Çœ
+ */
+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		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();
+
+/*
+ *  ¥·¥¹¥Æ¥àŸõÂÖŽÉÍýµ¡Çœ
+ */
+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Îã³°ŽÉÍýµ¡Çœ
+ */
+extern bool_t	xsns_dpn(void *p_excinf) throw();
+extern bool_t	xsns_xpn(void *p_excinf) throw();
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  ¥ª¥Ö¥ž¥§¥¯¥ÈÂ°À­€ÎÄêµÁ
+ */
+#define TA_ACT			UINT_C(0x02)	/* ¥¿¥¹¥¯€òµ¯Æ°€µ€ì€¿ŸõÂÖ€ÇÀžÀ® */
+
+#define TA_TPRI			UINT_C(0x01)	/* ¥¿¥¹¥¯€ÎÂÔ€Á¹ÔÎó€òÍ¥ÀèÅÙœç€Ë */
+#define TA_MPRI			UINT_C(0x02)	/* ¥á¥Ã¥»¡Œ¥ž¥­¥å¡Œ€òÍ¥ÀèÅÙœç€Ë */
+
+#define TA_WMUL			UINT_C(0x02)	/* Ê£¿ô€ÎÂÔ€Á¥¿¥¹¥¯ */
+#define TA_CLR			UINT_C(0x04)	/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€Î¥¯¥ê¥¢»ØÄê */
+
+#define TA_STA			UINT_C(0x02)	/* ŒþŽü¥Ï¥ó¥É¥é€òÆ°ºîŸõÂÖ€ÇÀžÀ® */
+
+#define TA_NONKERNEL	UINT_C(0x02)	/* ¥«¡Œ¥Í¥ëŽÉÍý³°€Î³ä¹þ€ß */
+
+#define TA_ENAINT		UINT_C(0x01)	/* ³ä¹þ€ßÍ×µá¶Ø»ß¥Õ¥é¥°€ò¥¯¥ê¥¢ */
+#define TA_EDGE			UINT_C(0x02)	/* ¥š¥Ã¥ž¥È¥ê¥¬ */
+
+/*
+ *  ¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎÆ°ºî¥â¡Œ¥É€ÎÄêµÁ
+ */
+#define TWF_ORW			UINT_C(0x01)	/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎORÂÔ€Á */
+#define TWF_ANDW		UINT_C(0x02)	/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎANDÂÔ€Á */
+
+/*
+ *  ¥ª¥Ö¥ž¥§¥¯¥È€ÎŸõÂÖ€ÎÄêµÁ
+ */
+#define TTS_RUN			UINT_C(0x01)	/* ŒÂ¹ÔŸõÂÖ */
+#define TTS_RDY			UINT_C(0x02)	/* ŒÂ¹Ô²ÄÇœŸõÂÖ */
+#define TTS_WAI			UINT_C(0x04)	/* ÂÔ€ÁŸõÂÖ */
+#define TTS_SUS			UINT_C(0x08)	/* ¶¯À©ÂÔ€ÁŸõÂÖ */
+#define TTS_WAS			UINT_C(0x0c)	/* ÆóœÅÂÔ€ÁŸõÂÖ */
+#define TTS_DMT			UINT_C(0x10)	/* µÙ»ßŸõÂÖ */
+
+#define TTW_SLP			UINT_C(0x0001)	/* µ¯Ÿ²ÂÔ€Á */
+#define TTW_DLY			UINT_C(0x0002)	/* »þŽÖ·Ð²áÂÔ€Á */
+#define TTW_SEM			UINT_C(0x0004)	/* ¥»¥Þ¥Õ¥©€Î»ñž»³ÍÆÀÂÔ€Á */
+#define TTW_FLG			UINT_C(0x0008)	/* ¥€¥Ù¥ó¥È¥Õ¥é¥°ÂÔ€Á */
+#define TTW_SDTQ		UINT_C(0x0010)	/* ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®ÂÔ€Á */
+#define TTW_RDTQ		UINT_C(0x0020)	/* ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TTW_SPDQ		UINT_C(0x0100)	/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®ÂÔ€Á */
+#define TTW_RPDQ		UINT_C(0x0200)	/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TTW_MBX			UINT_C(0x0040)	/* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TTW_MPF			UINT_C(0x2000)	/* žÇÄêÄ¹¥á¥â¥ê¥Ö¥í¥Ã¥¯€Î³ÍÆÀÂÔ€Á */
+
+#define TTEX_ENA		UINT_C(0x01)	/* ¥¿¥¹¥¯Îã³°œèÍýµö²ÄŸõÂÖ */
+#define TTEX_DIS		UINT_C(0x02)	/* ¥¿¥¹¥¯Îã³°œèÍý¶Ø»ßŸõÂÖ */
+
+#define TCYC_STP		UINT_C(0x01)	/* ŒþŽü¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€Ê€€ */
+#define TCYC_STA		UINT_C(0x02)	/* ŒþŽü¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€ë */
+
+#define TALM_STP		UINT_C(0x01)	/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€Ê€€ */
+#define TALM_STA		UINT_C(0x02)	/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€ë */
+
+#define TOVR_STP		UINT_C(0x01)	/* ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€Ê€€*/
+#define TOVR_STA		UINT_C(0x02)	/* ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€ë */
+
+/*
+ *  €œ€ÎÂŸ€ÎÄê¿ô€ÎÄêµÁ
+ */
+#define TSK_SELF		0			/* Œ«¥¿¥¹¥¯»ØÄê */
+#define TSK_NONE		0			/* ³ºÅö€¹€ë¥¿¥¹¥¯€¬€Ê€€ */
+
+#define TPRI_SELF		0			/* Œ«¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ */
+#define TPRI_INI		0			/* ¥¿¥¹¥¯€Îµ¯Æ°»þÍ¥ÀèÅÙ */
+
+#define TIPM_ENAALL		0			/* ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœü */
+
+/*
+ *  ¹œÀ®Äê¿ô€È¥Þ¥¯¥í
+ */
+
+/*
+ *  ¥µ¥Ý¡Œ¥È€¹€ëµ¡Çœ
+ */
+#ifdef TOPPERS_TARGET_SUPPORT_DIS_INT
+#define TOPPERS_SUPPORT_DIS_INT			/* dis_int€¬¥µ¥Ý¡Œ¥È€µ€ì€Æ€€€ë */
+#endif /* TOPPERS_TARGET_SUPPORT_DIS_INT */
+
+#ifdef TOPPERS_TARGET_SUPPORT_ENA_INT
+#define TOPPERS_SUPPORT_ENA_INT			/* ena_int€¬¥µ¥Ý¡Œ¥È€µ€ì€Æ€€€ë */
+#endif /* TOPPERS_TARGET_SUPPORT_ENA_INT */
+
+#ifdef TOPPERS_TARGET_SUPPORT_GET_UTM
+#define TOPPERS_SUPPORT_GET_UTM			/* get_utm€¬¥µ¥Ý¡Œ¥È€µ€ì€Æ€€€ë */
+#endif /* TOPPERS_TARGET_SUPPORT_GET_UTM */
+
+#ifdef TOPPERS_TARGET_SUPPORT_OVRHDR
+#define TOPPERS_SUPPORT_OVRHDR			/* ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éµ¡Çœ³ÈÄ¥ */
+#endif /* TOPPERS_TARGET_SUPPORT_OVRHDR */
+
+/*
+ *  Í¥ÀèÅÙ€ÎÈÏ°Ï
+ */
+#define TMIN_TPRI		1			/* ¥¿¥¹¥¯Í¥ÀèÅÙ€ÎºÇŸ®ÃÍ¡ÊºÇ¹âÃÍ¡Ë*/
+#define TMAX_TPRI		16			/* ¥¿¥¹¥¯Í¥ÀèÅÙ€ÎºÇÂçÃÍ¡ÊºÇÄãÃÍ¡Ë*/
+#define TMIN_DPRI		1			/* ¥Ç¡Œ¥¿Í¥ÀèÅÙ€ÎºÇŸ®ÃÍ¡ÊºÇ¹âÃÍ¡Ë*/
+#define TMAX_DPRI		16			/* ¥Ç¡Œ¥¿Í¥ÀèÅÙ€ÎºÇÂçÃÍ¡ÊºÇÄãÃÍ¡Ë*/
+#define TMIN_MPRI		1			/* ¥á¥Ã¥»¡Œ¥žÍ¥ÀèÅÙ€ÎºÇŸ®ÃÍ¡ÊºÇ¹âÃÍ¡Ë*/
+#define TMAX_MPRI		16			/* ¥á¥Ã¥»¡Œ¥žÍ¥ÀèÅÙ€ÎºÇÂçÃÍ¡ÊºÇÄãÃÍ¡Ë*/
+#define TMIN_ISRPRI		1			/* ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óÍ¥ÀèÅÙ€ÎºÇŸ®ÃÍ */
+#define TMAX_ISRPRI		16			/* ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óÍ¥ÀèÅÙ€ÎºÇÂçÃÍ */
+
+/*
+ *  ¥Ð¡Œ¥ž¥ç¥óŸðÊó
+ */
+#define TKERNEL_MAKER	UINT_C(0x0118)	/* ¥«¡Œ¥Í¥ë€Î¥á¡Œ¥«¡Œ¥³¡Œ¥É */
+#define TKERNEL_PRID	UINT_C(0x0007)	/* ¥«¡Œ¥Í¥ë€ÎŒ±ÊÌÈÖ¹æ */
+#define TKERNEL_SPVER	UINT_C(0xf517)	/* ¥«¡Œ¥Í¥ë»ÅÍÍ€Î¥Ð¡Œ¥ž¥ç¥óÈÖ¹æ */
+#define TKERNEL_PRVER	UINT_C(0x1092)	/* ¥«¡Œ¥Í¥ë€Î¥Ð¡Œ¥ž¥ç¥óÈÖ¹æ */
+
+/*
+ *  ¥­¥å¡Œ¥€¥ó¥°²ó¿ô€ÎºÇÂçÃÍ
+ */
+#define TMAX_ACTCNT		UINT_C(1)		/* µ¯Æ°Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô€ÎºÇÂçÃÍ */
+#define TMAX_WUPCNT		UINT_C(1)		/* µ¯Ÿ²Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô€ÎºÇÂçÃÍ */
+
+/*
+ *  ¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó€Î¥Ó¥Ã¥È¿ô
+ */
+#ifndef TBIT_TEXPTN					/* ¥¿¥¹¥¯Îã³°Í×°ø€Î¥Ó¥Ã¥È¿ô */
+#define TBIT_TEXPTN		(sizeof(TEXPTN) * CHAR_BIT)
+#endif /* TBIT_TEXPTN */
+
+#ifndef TBIT_FLGPTN					/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€Î¥Ó¥Ã¥È¿ô */
+#define TBIT_FLGPTN		(sizeof(FLGPTN) * CHAR_BIT)
+#endif /* TBIT_FLGPTN */
+
+/*
+ *  ¥×¥í¥»¥Ã¥µ»þŽÖ¡ÊOVRTIM¡Ë€ÎºÇÂçÃÍ
+ */
+#ifndef TMAX_OVRTIM
+#define TMAX_OVRTIM		ULONG_MAX
+#endif /* TMAX_OVRTIM */
+
+/*
+ *  ¥á¥â¥êÎÎ°è³ÎÊÝ€Î€¿€á€Î¥Þ¥¯¥í
+ *
+ *  °Ê²Œ€ÎTOPPERS_COUNT_SZ€ÈTOPPERS_ROUND_SZ€ÎÄêµÁ€Ï¡€unit€¬2€Î¶ÒŸè€Ç€¢
+ *  €ë€³€È€ò²ŸÄê€·€Æ€€€ë¡¥
+ */
+#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	/* ¥»¥Þ¥Õ¥©€ÎºÇÂç»ñž»¿ô€ÎºÇÂçÃÍ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* TOPPERS_KERNEL_H */
Index: /extension/ovrhdr/kernel/Makefile.kernel
===================================================================
--- /extension/ovrhdr/kernel/Makefile.kernel	(revision 7)
+++ /extension/ovrhdr/kernel/Makefile.kernel	(revision 7)
@@ -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
+# 
+#  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+#  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+#  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+#  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+#      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+#      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+#  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+#      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+#      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+#      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+#  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+#      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+#      €È¡¥
+#    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+#        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+#    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+#        Êó¹ð€¹€ë€³€È¡¥
+#  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+#      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+#      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+#      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+#      ÌÈÀÕ€¹€ë€³€È¡¥
+# 
+#  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+#  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+#  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+#  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+#  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+# 
+#  @(#) $Id$
+# 
+
+#
+#		¥«¡Œ¥Í¥ë€Î¥Õ¥¡¥€¥ë¹œÀ®€ÎÄêµÁ
+#
+
+#
+#  1€Ä€Î¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€«€éÊ£¿ô€Î¥ª¥Ö¥ž¥§¥¯¥È¥Õ¥¡¥€¥ë€òÀžÀ®€¹€ë€è€Š€Ëºî
+#  À®€µ€ì€¿¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€Î¥ê¥¹¥È
+#
+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
+
+#
+#  ³Æ¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€«€éÀžÀ®€µ€ì€ë¥ª¥Ö¥ž¥§¥¯¥È¥Õ¥¡¥€¥ë€Î¥ê¥¹¥È
+#
+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
+
+#
+#  ÀžÀ®€µ€ì€ë¥ª¥Ö¥ž¥§¥¯¥È¥Õ¥¡¥€¥ë€Î°ÍÂžŽØ·ž€ÎÄêµÁ
+#
+$(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: /extension/ovrhdr/kernel/allfunc.h
===================================================================
--- /extension/ovrhdr/kernel/allfunc.h	(revision 7)
+++ /extension/ovrhdr/kernel/allfunc.h	(revision 7)
@@ -0,0 +1,252 @@
+/*
+ *  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$
+ */
+
+/*
+ *		€¹€Ù€Æ€ÎŽØ¿ô€ò¥³¥ó¥Ñ¥€¥ë€¹€ë€¿€á€ÎÄêµÁ
+ */
+
+#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: /extension/ovrhdr/kernel/check.h
===================================================================
--- /extension/ovrhdr/kernel/check.h	(revision 7)
+++ /extension/ovrhdr/kernel/check.h	(revision 7)
@@ -0,0 +1,294 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥š¥é¡Œ¥Á¥§¥Ã¥¯ÍÑ¥Þ¥¯¥í
+ */
+
+#ifndef TOPPERS_CHECK_H
+#define TOPPERS_CHECK_H
+
+/*
+ *  Í¥ÀèÅÙ€ÎÈÏ°Ï€ÎÈœÄê
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯Í¥ÀèÅÙ€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
+ */
+#define CHECK_TPRI(tpri) do {								\
+	if (!VALID_TPRI(tpri)) {								\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_TPRI_INI(tpri) do {							\
+	if (!(VALID_TPRI(tpri) || (tpri) == TPRI_INI)) {		\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_TPRI_SELF(tpri) do {							\
+	if (!(VALID_TPRI(tpri) || (tpri) == TPRI_SELF)) {		\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  ¥¿¥€¥à¥¢¥Š¥È»ØÄêÃÍ€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
+ */
+#define CHECK_TMOUT(tmout) do {								\
+	if (!(TMO_FEVR <= (tmout))) {							\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
+ */
+#define CHECK_INTPRI_CHGIPM(intpri) do {					\
+	if (!VALID_INTPRI_CHGIPM(intpri)) {						\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  ³ä¹þ€ßÈÖ¹æ€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
+ */
+#define CHECK_INTNO_DISINT(intno) do {						\
+	if (!VALID_INTNO_DISINT(intno)) {						\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  €œ€ÎÂŸ€Î¥Ñ¥é¥á¡Œ¥¿¥š¥é¡Œ€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
+ */
+#define CHECK_PAR(exp) do {									\
+	if (!(exp)) {											\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  ¥ª¥Ö¥ž¥§¥¯¥ÈID€ÎÈÏ°Ï€ÎÈœÄê
+ */
+#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)
+
+/*
+ *  ¥ª¥Ö¥ž¥§¥¯¥ÈID€Î¥Á¥§¥Ã¥¯¡ÊE_ID¡Ë
+ */
+#define CHECK_TSKID(tskid) do {								\
+	if (!VALID_TSKID(tskid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_TSKID_SELF(tskid) do {						\
+	if (!(VALID_TSKID(tskid) || (tskid) == TSK_SELF)) {		\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_SEMID(semid) do {								\
+	if (!VALID_SEMID(semid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_FLGID(flgid) do {								\
+	if (!VALID_FLGID(flgid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_DTQID(dtqid) do {								\
+	if (!VALID_DTQID(dtqid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_PDQID(pdqid) do {								\
+	if (!VALID_PDQID(pdqid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_MBXID(mbxid) do {								\
+	if (!VALID_MBXID(mbxid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_MPFID(mpfid) do {								\
+	if (!VALID_MPFID(mpfid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_CYCID(cycid) do {								\
+	if (!VALID_CYCID(cycid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_ALMID(almid) do {								\
+	if (!VALID_ALMID(almid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  žÆœÐ€·¥³¥ó¥Æ¥­¥¹¥È€Î¥Á¥§¥Ã¥¯¡ÊE_CTX¡Ë
+ */
+#define CHECK_TSKCTX() do {									\
+	if (sense_context()) {									\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_INTCTX() do {									\
+	if (!sense_context()) {									\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  žÆœÐ€·¥³¥ó¥Æ¥­¥¹¥È€ÈCPU¥í¥Ã¥¯ŸõÂÖ€Î¥Á¥§¥Ã¥¯¡ÊE_CTX¡Ë
+ */
+#define CHECK_TSKCTX_UNL() do {								\
+	if (sense_context() || t_sense_lock()) {				\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_INTCTX_UNL() do {								\
+	if (!sense_context() || i_sense_lock()) {				\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥ÁÊÝÎ±ŸõÂÖ€Ç€Ê€€€«€Î¥Á¥§¥Ã¥¯¡ÊE_CTX¡Ë
+ */
+#define CHECK_DISPATCH() do {								\
+	if (sense_context() || t_sense_lock() || !dspflg) {		\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  €œ€ÎÂŸ€Î¥³¥ó¥Æ¥­¥¹¥È¥š¥é¡Œ€Î¥Á¥§¥Ã¥¯¡ÊE_CTX¡Ë
+ */
+#define CHECK_CTX(exp) do {									\
+	if (!(exp)) {											\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  Œ«¥¿¥¹¥¯€ò»ØÄê€·€Æ€€€Ê€€€«€Î¥Á¥§¥Ã¥¯¡ÊE_ILUSE¡Ë
+ */
+#define CHECK_NONSELF(p_tcb) do {							\
+	if ((p_tcb) == p_runtsk) {								\
+		ercd = E_ILUSE;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  €œ€ÎÂŸ€ÎÉÔÀµ»ÈÍÑ¥š¥é¡Œ€Î¥Á¥§¥Ã¥¯¡ÊE_ILUSE¡Ë
+ */
+#define CHECK_ILUSE(exp) do {								\
+	if (!(exp)) {											\
+		ercd = E_ILUSE;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  ÀÅÅª€Ê¥ª¥Ö¥ž¥§¥¯¥ÈŸõÂÖ¥š¥é¡Œ€Î¥Á¥§¥Ã¥¯¡ÊE_OBJ¡Ë
+ */
+#define CHECK_OBJ(exp) do {									\
+	if (!(exp)) {											\
+		ercd = E_OBJ;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#endif /* TOPPERS_CHECK_H */
Index: /extension/ovrhdr/kernel/kernel.tf
===================================================================
--- /extension/ovrhdr/kernel/kernel.tf	(revision 7)
+++ /extension/ovrhdr/kernel/kernel.tf	(revision 7)
@@ -0,0 +1,1133 @@
+$ ======================================================================
+$ 
+$   TOPPERS/ASP Kernel
+$       Toyohashi Open Platform for Embedded Real-Time Systems/
+$       Advanced Standard Profile Kernel
+$ 
+$   Copyright (C) 2007 by TAKAGI Nobuhisa
+$   Copyright (C) 2007-2015 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$
+$  
+$ =====================================================================
+
+$ =====================================================================
+$ 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$
+#if TKERNEL_PRID != 0x07u$NL$
+#error The kernel does not match this configuration file.$NL$
+#endif$NL$
+$NL$
+
+$ 
+$  ¥€¥ó¥¯¥ë¡Œ¥É¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¡Ê#include¡Ë
+$ 
+/*$NL$
+$SPC$*  Include Directives (#include)$NL$
+$SPC$*/$NL$
+$NL$
+$INCLUDES$
+$NL$
+
+$ 
+$  ¥ª¥Ö¥ž¥§¥¯¥È€Î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$
+
+$
+$  ¥¹¥¿¥Ã¥¯ÎÎ°è€Î³ÎÊÝŽØ¿ô
+$
+$IF !ISFUNCTION("ALLOC_STACK")$
+$FUNCTION ALLOC_STACK$
+$	// Âç€­€€Êý€ËŽÝ€á€¿¥µ¥€¥º€Ç³ÎÊÝ€¹€ë
+	static STK_T $ARGV[1]$[COUNT_STK_T($ARGV[2]$)];$NL$
+	$RESULT = FORMAT("ROUND_STK_T(%1%)", ARGV[2])$
+$END$
+$END$
+
+$ 
+$  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+$ 
+/*$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$
+
+$ 
+$  ¥¿¥¹¥¯
+$ 
+/*$NL$
+$SPC$*  Task Management Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ¥¿¥¹¥¯€¬1žÄ°ÊŸåÂžºß€¹€ë€³€È€Î¥Á¥§¥Ã¥¯
+$IF !LENGTH(TSK.ID_LIST)$
+	$ERROR$$FORMAT(_("no task is registered"))$$END$
+$END$
+
+$ ¥¿¥¹¥¯IDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_tskid = (TMIN_TSKID + TNUM_TSKID - 1);$NL$
+$NL$
+
+$ ¥š¥é¡Œ¥Á¥§¥Ã¥¯
+$FOREACH tskid TSK.ID_LIST$
+$	// tskatr€¬¡Ê¡ÎTA_ACT¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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$
+
+$ ¥¹¥¿¥Ã¥¯ÎÎ°è€ÎÀžÀ®€È€œ€ì€ËŽØ€¹€ë¥š¥é¡Œ¥Á¥§¥Ã¥¯
+$FOREACH tskid TSK.ID_LIST$
+$	// stksz€¬0°Ê²Œ€«¡€¥¿¡Œ¥²¥Ã¥ÈÄêµÁ€ÎºÇŸ®ÃÍ¡ÊTARGET_MIN_STKSZ¡Ë€è€ê€â
+$	// Ÿ®€µ€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$IF TSK.STKSZ[tskid] <= 0 || (TARGET_MIN_STKSZ
+									&& TSK.STKSZ[tskid] < TARGET_MIN_STKSZ)$
+		$ERROR TSK.TEXT_LINE[tskid]$E_PAR: $FORMAT(_("too small %1% `%2%\' of `%3%\' in %4%"), "stksz", TSK.STKSZ[tskid], tskid, "CRE_TSK")$$END$
+	$END$
+
+$ 	// stksz€¬¥¹¥¿¥Ã¥¯ÎÎ°è€Î¥µ¥€¥º€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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")$
+		$TSK.TINIB_STKSZ[tskid] = ALLOC_STACK(CONCAT("_kernel_stack_",
+												tskid), TSK.STKSZ[tskid])$
+		$TSK.TINIB_STK[tskid] = CONCAT("_kernel_stack_", tskid)$
+	$ELSE$
+		$TSK.TINIB_STKSZ[tskid] = FORMAT("(%1%)", TSK.STKSZ[tskid])$
+		$TSK.TINIB_STK[tskid] = FORMAT("(void *)(%1%)", TSK.STK[tskid])$
+	$END$
+$END$
+$NL$
+
+$ ¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®¡Ê¥¿¥¹¥¯€Ï1žÄ°ÊŸåÂžºß€¹€ë¡Ë
+const TINIB _kernel_tinib_table[TNUM_TSKID] = {$NL$
+$JOINEACH tskid TSK.ID_LIST ",\n"$
+$	// ¥¿¥¹¥¯Â°À­¡€³ÈÄ¥ŸðÊó¡€µ¯Æ°ÈÖÃÏ¡€µ¯Æ°»þÍ¥ÀèÅÙ
+	$TAB${
+	$SPC$($TSK.TSKATR[tskid]$), (intptr_t)($TSK.EXINF[tskid]$),
+	$SPC$((TASK)($TSK.TASK[tskid]$)), INT_PRIORITY($TSK.ITSKPRI[tskid]$),
+
+$	// ¥¿¥¹¥¯œéŽü²œ¥³¥ó¥Æ¥­¥¹¥È¥Ö¥í¥Ã¥¯¡€¥¹¥¿¥Ã¥¯ÎÎ°è
+	$IF USE_TSKINICTXB$
+		$GENERATE_TSKINICTXB(tskid)$
+	$ELSE$
+		$SPC$$TSK.TINIB_STKSZ[tskid]$, $TSK.TINIB_STK[tskid]$,
+	$END$
+
+$	// ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎÂ°À­€Èµ¯Æ°ÈÖÃÏ
+	$SPC$($ALT(TSK.TEXATR[tskid],"TA_NULL")$), ($ALT(TSK.TEXRTN[tskid],"NULL")$) }
+$END$$NL$
+};$NL$
+$NL$
+
+$ ¥¿¥¹¥¯ŽÉÍý¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+TCB _kernel_tcb_table[TNUM_TSKID];$NL$
+$NL$
+
+$ ¥¿¥¹¥¯ÀžÀ®œçœø¥Æ¡Œ¥Ö¥ë€ÎÀžÀ®
+const ID _kernel_torder_table[TNUM_TSKID] = {$NL$
+$TAB$$JOINEACH tskid TSK.ORDER_LIST ", "$$tskid$$END$$NL$
+};$NL$
+$NL$
+
+$ 
+$  ¥»¥Þ¥Õ¥©
+$ 
+/*$NL$
+$SPC$*  Semaphore Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ¥»¥Þ¥Õ¥©IDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_semid = (TMIN_SEMID + TNUM_SEMID - 1);$NL$
+$NL$
+
+$ ¥»¥Þ¥Õ¥©œéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF LENGTH(SEM.ID_LIST)$
+	const SEMINIB _kernel_seminib_table[TNUM_SEMID] = {$NL$
+	$JOINEACH semid SEM.ID_LIST ",\n"$
+$		// sematr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$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)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$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$
+
+$		// ¥»¥Þ¥Õ¥©œéŽü²œ¥Ö¥í¥Ã¥¯
+		$TAB${ ($SEM.SEMATR[semid]$), ($SEM.ISEMCNT[semid]$), ($SEM.MAXSEM[semid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// ¥»¥Þ¥Õ¥©ŽÉÍý¥Ö¥í¥Ã¥¯
+	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$
+
+$ 
+$  ¥€¥Ù¥ó¥È¥Õ¥é¥°
+$ 
+/*$NL$
+$SPC$*  Eventflag Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ¥€¥Ù¥ó¥È¥Õ¥é¥°IDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_flgid = (TMIN_FLGID + TNUM_FLGID - 1);$NL$
+$NL$
+
+$ ¥€¥Ù¥ó¥È¥Õ¥é¥°œéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF LENGTH(FLG.ID_LIST)$
+	const FLGINIB _kernel_flginib_table[TNUM_FLGID] = {$NL$
+	$JOINEACH flgid FLG.ID_LIST ",\n"$
+$		// flgatr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ã¡ÎTA_WMUL¡Ï¡Ã¡ÎTA_CLR¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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$
+
+$		// iflgptn€¬FLGPTN€Ë³ÊÇŒ€Ç€­€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$IF (FLG.IFLGPTN[flgid] & ~((1 << TBIT_FLGPTN) - 1)) != 0$
+			$ERROR FLG.TEXT_LINE[flgid]$E_PAR: $FORMAT(_("too large %1% `%2%\' of `%3%\' in %4%"), "iflgptn", FLG.IFLGPTN[flgid], flgid, "CRE_FLG")$$END$
+		$END$
+
+$		// ¥€¥Ù¥ó¥È¥Õ¥é¥°œéŽü²œ¥Ö¥í¥Ã¥¯
+		$TAB${ ($FLG.FLGATR[flgid]$), ($FLG.IFLGPTN[flgid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// ¥€¥Ù¥ó¥È¥Õ¥é¥°ŽÉÍý¥Ö¥í¥Ã¥¯
+	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$
+
+$ 
+$  ¥Ç¡Œ¥¿¥­¥å¡Œ
+$ 
+/*$NL$
+$SPC$*  Dataqueue Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ¥Ç¡Œ¥¿¥­¥å¡ŒIDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_dtqid = (TMIN_DTQID + TNUM_DTQID - 1);$NL$
+$NL$
+
+$IF LENGTH(DTQ.ID_LIST)$
+	$FOREACH dtqid DTQ.ID_LIST$
+$		// dtqatr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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$
+
+$		// dtqcnt€¬Éé€ÎŸì¹ç¡ÊE_PAR¡Ë
+		$IF DTQ.DTQCNT[dtqid] < 0$
+			$ERROR DTQ.TEXT_LINE[dtqid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "dtqcnt", DTQ.DTQCNT[dtqid], dtqid, "CRE_DTQ")$$END$
+		$END$
+
+$		// dtqmb€¬NULL€Ç€Ê€€Ÿì¹ç¡ÊE_NOSPT¡Ë
+		$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$
+
+$		// ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è
+		$IF DTQ.DTQCNT[dtqid]$
+			static DTQMB _kernel_dtqmb_$dtqid$[$DTQ.DTQCNT[dtqid]$];$NL$
+		$END$
+	$END$
+
+$	// ¥Ç¡Œ¥¿¥­¥å¡ŒœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+	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$
+
+$	// ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍý¥Ö¥í¥Ã¥¯
+	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$
+
+$ 
+$  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ
+$ 
+/*$NL$
+$SPC$*  Priority Dataqueue Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒIDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_pdqid = (TMIN_PDQID + TNUM_PDQID - 1);$NL$
+$NL$
+
+$IF LENGTH(PDQ.ID_LIST)$
+	$FOREACH pdqid PDQ.ID_LIST$
+$		// pdqatr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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$
+
+$		// pdqcnt€¬Éé€ÎŸì¹ç¡ÊE_PAR¡Ë
+		$IF PDQ.PDQCNT[pdqid] < 0$
+			$ERROR PDQ.TEXT_LINE[pdqid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "pdqcnt", PDQ.PDQCNT[pdqid], pdqid, "CRE_PDQ")$$END$
+		$END$
+
+$		// (TMIN_DPRI <= maxdpri && maxdpri <= TMAX_DPRI)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$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€Ç€Ê€€Ÿì¹ç¡ÊE_NOSPT¡Ë
+		$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$
+
+$		// Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è
+		$IF PDQ.PDQCNT[pdqid]$
+			static PDQMB _kernel_pdqmb_$pdqid$[$PDQ.PDQCNT[pdqid]$];$NL$
+		$END$
+	$END$
+
+$	// Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+	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$
+
+$	// Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍý¥Ö¥í¥Ã¥¯
+	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$
+
+$ 
+$  ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹
+$ 
+/*$NL$
+$SPC$*  Mailbox Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹IDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_mbxid = (TMIN_MBXID + TNUM_MBXID - 1);$NL$
+$NL$
+
+$ ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹œéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF LENGTH(MBX.ID_LIST)$
+	const MBXINIB _kernel_mbxinib_table[TNUM_MBXID] = {$NL$
+	$JOINEACH mbxid MBX.ID_LIST ",\n"$
+$		// mbxatr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ã¡ÎTA_MPRI¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$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€Ç€Ê€€Ÿì¹ç¡ÊE_NOSPT¡Ë
+		$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$
+
+$		// ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹œéŽü²œ¥Ö¥í¥Ã¥¯
+		$TAB${ ($MBX.MBXATR[mbxid]$), ($MBX.MAXMPRI[mbxid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹ŽÉÍý¥Ö¥í¥Ã¥¯
+	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$
+
+$ 
+$  žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ë
+$ 
+/*$NL$
+$SPC$*  Fixed-sized Memorypool Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëIDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_mpfid = (TMIN_MPFID + TNUM_MPFID - 1);$NL$
+$NL$
+
+$IF LENGTH(MPF.ID_LIST)$
+	$FOREACH mpfid MPF.ID_LIST$
+$		// mpfatr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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°Ê²Œ€ÎŸì¹ç¡ÊE_PAR¡Ë
+		$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°Ê²Œ€ÎŸì¹ç¡ÊE_PAR¡Ë
+		$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$
+
+$		// žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÎÎ°è
+		$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€Ç€Ê€€Ÿì¹ç¡ÊE_NOSPT¡Ë
+		$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$
+
+$		// žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëŽÉÍýÎÎ°è
+		static MPFMB _kernel_mpfmb_$mpfid$[$MPF.BLKCNT[mpfid]$];$NL$
+	$END$
+
+$	// žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+	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$(void *)($MPF.MPF[mpfid]$)$END$, (_kernel_mpfmb_$mpfid$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëŽÉÍý¥Ö¥í¥Ã¥¯
+	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$
+
+$ 
+$  ŒþŽü¥Ï¥ó¥É¥é
+$ 
+/*$NL$
+$SPC$*  Cyclic Handler Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ŒþŽü¥Ï¥ó¥É¥éIDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_cycid = (TMIN_CYCID + TNUM_CYCID - 1);$NL$
+$NL$
+
+$ ŒþŽü¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF LENGTH(CYC.ID_LIST)$
+	const CYCINIB _kernel_cycinib_table[TNUM_CYCID] = {$NL$
+	$JOINEACH cycid CYC.ID_LIST ",\n"$
+$		// cycatr€¬¡Ê¡ÎTA_STA¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$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)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$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$
+
+$		// ·Ù¹ð¡§cycatr€ËTA_STA€¬ÀßÄê€µ€ì€Æ€€€Æ¡€(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$
+
+$		// ŒþŽü¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯
+		$TAB${ ($CYC.CYCATR[cycid]$), (intptr_t)($CYC.EXINF[cycid]$), ($CYC.CYCHDR[cycid]$), ($CYC.CYCTIM[cycid]$), ($CYC.CYCPHS[cycid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// ŒþŽü¥Ï¥ó¥É¥éŽÉÍý¥Ö¥í¥Ã¥¯
+	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$
+
+$ 
+$  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é
+$ 
+/*$NL$
+$SPC$*  Alarm Handler Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éIDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_almid = (TMIN_ALMID + TNUM_ALMID - 1);$NL$
+$NL$
+
+$ ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF LENGTH(ALM.ID_LIST)$
+	const ALMINIB _kernel_alminib_table[TNUM_ALMID] = {$NL$
+	$JOINEACH almid ALM.ID_LIST ",\n"$
+$		// almatr€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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$
+
+$		// ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯
+		$TAB${ ($ALM.ALMATR[almid]$), (intptr_t)($ALM.EXINF[almid]$), ($ALM.ALMHDR[almid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éŽÉÍý¥Ö¥í¥Ã¥¯
+	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$
+
+$ 
+$  ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é
+$ 
+$IF !TOPPERS_SUPPORT_OVRHDR$
+$	// ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€¬¥µ¥Ý¡Œ¥È€µ€ì€Æ€€€Ê€€Ÿì¹ç
+	$IF LENGTH(OVR.ORDER_LIST)$
+		$ERROR$E_NOSPT: $FORMAT(_("%1% is not supported on this target"), "DEF_OVR")$$END$
+	$END$
+$ELSE$
+	/*$NL$
+	$SPC$*  Overrun Handler Functions$NL$
+	$SPC$*/$NL$
+	$NL$
+
+$	// ÀÅÅªAPI¡ÖDEF_OVR¡×€¬Ê£¿ô€¢€ë¡ÊE_OBJ¡Ë
+	$IF LENGTH(OVR.ORDER_LIST) > 1$
+		$ERROR$E_OBJ: $FORMAT(_("too many %1%"), "DEF_OVR")$$END$
+	$END$
+
+$	// ovratr€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$IF OVR.OVRATR[1] != 0$
+		$ERROR OVR.TEXT_LINE[1]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "ovratr", OVR.OVRATR[1], "DEF_OVR")$
+		$END$
+	$END$
+
+$	// ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+	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$
+$END$
+
+$ 
+$  ³ä¹þ€ßŽÉÍýµ¡Çœ
+$ 
+/*$NL$
+$SPC$*  Interrupt Management Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ³ä¹þ€ßÈÖ¹æ€È³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ€ÎÊÑŽ¹¥Æ¡Œ¥Ö¥ë€ÎºîÀ®
+$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$
+
+$ ³ä¹þ€ßÍ×µá¥é¥€¥ó€ËŽØ€¹€ë¥š¥é¡Œ¥Á¥§¥Ã¥¯
+$i = 0$
+$FOREACH intno INT.ORDER_LIST$
+$	// intno€¬CFG_INT€ËÂÐ€¹€ë³ä¹þ€ßÈÖ¹æ€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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€Ë€è€Ã€ÆÀßÄêºÑ€ß€ÎŸì¹ç¡ÊE_OBJ¡Ë
+	$j = 0$
+	$FOREACH intno2 INT.ORDER_LIST$
+		$IF j < i && INT.INTNO[intno] == INT.INTNO[intno2]$
+			$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€¬¡Ê¡ÎTA_ENAINT¡Ï¡Ã¡ÎTA_EDGE¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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€ËÂÐ€¹€ë³ä¹þ€ßÍ¥ÀèÅÙ€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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$
+
+$	// ¥«¡Œ¥Í¥ëŽÉÍý€ËžÇÄê€µ€ì€Æ€€€ëintno€ËÂÐ€·€Æ¡€intpri€ËTMIN_INTPRI
+$	// €è€ê€âŸ®€µ€€ÃÍ€¬»ØÄê€µ€ì€¿Ÿì¹ç¡ÊE_OBJ¡Ë
+	$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$
+
+$	// ¥«¡Œ¥Í¥ëŽÉÍý³°€ËžÇÄê€µ€ì€Æ€€€ëintno€ËÂÐ€·€Æ¡€intpri€ËTMIN_INTPRI
+$	// €è€ê€âŸ®€µ€€ÃÍ€¬»ØÄê€µ€ì€Ê€«€Ã€¿Ÿì¹ç¡ÊE_OBJ¡Ë
+	$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$
+
+$ ³ä¹þ€ß¥Ï¥ó¥É¥é€ËŽØ€¹€ë¥š¥é¡Œ¥Á¥§¥Ã¥¯
+$i = 0$
+$FOREACH inhno INH.ORDER_LIST$
+$	// inhno€¬DEF_INH€ËÂÐ€¹€ë³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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€Ë€è€Ã€ÆÀßÄêºÑ€ß€ÎŸì¹ç¡ÊE_OBJ¡Ë
+	$j = 0$
+	$FOREACH inhno2 INH.ORDER_LIST$
+		$IF j < i && INH.INHNO[inhno] == INH.INHNO[inhno2]$
+			$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€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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$
+
+$	// ¥«¡Œ¥Í¥ëŽÉÍý€ËžÇÄê€µ€ì€Æ€€€ëinhno€ËÂÐ€·€Æ¡€inhatr€ËTA_NONKERNEL
+$	//¡¡€¬»ØÄê€µ€ì€Æ€€€ëŸì¹ç¡ÊE_RSATR¡Ë
+	$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$
+
+$	// ¥«¡Œ¥Í¥ëŽÉÍý³°€ËžÇÄê€µ€ì€Æ€€€ëinhno€ËÂÐ€·€Æ¡€inhatr€ËTA_NONKERNEL
+$	// €¬»ØÄê€µ€ì€Æ€€€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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€¬€Ê€€Ÿì¹ç¡ÊE_OBJ¡Ë
+		$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", intno, "inhno", INH.INHNO[inhno], "CFG_INT")$$END$
+		$ELSE$
+			$IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$
+$				// inhatr€ËTA_NONKERNEL€¬»ØÄê€µ€ì€Æ€ª€é€º¡€inhno€ËÂÐ±þ
+$				// €¹€ëintno€ËÂÐ€·€ÆCFG_INT€ÇÀßÄê€µ€ì€¿³ä¹þ€ßÍ¥ÀèÅÙ€¬
+$				// TMIN_INTPRI€è€ê€âŸ®€µ€€Ÿì¹ç¡ÊE_OBJ¡Ë
+				$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€¬»ØÄê€µ€ì€Æ€ª€ê¡€inhno€ËÂÐ±þ
+$				// €¹€ëintno€ËÂÐ€·€ÆCFG_INT€ÇÀßÄê€µ€ì€¿³ä¹þ€ßÍ¥ÀèÅÙ€¬
+$				// TMIN_INTPRI°ÊŸå€Ç€¢€ëŸì¹ç¡ÊE_OBJ¡Ë
+				$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$
+
+$ ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó¡ÊISR¡Ë€ËŽØ€¹€ë¥š¥é¡Œ¥Á¥§¥Ã¥¯€È³ä¹þ€ß¥Ï¥ó¥É¥é€ÎÀžÀ®
+$FOREACH order ISR.ORDER_LIST$
+$	// isratr€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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€ËÂÐ€¹€ë³ä¹þ€ßÈÖ¹æ€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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€ËÂÐ€·€ÆÅÐÏ¿€µ€ì€¿ISR€Î¥ê¥¹¥È€ÎºîÀ®
+	$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€ËÂÐ€·€ÆÅÐÏ¿€µ€ì€¿ISR€¬Âžºß€¹€ëŸì¹ç
+	$IF LENGTH(isr_order_list) > 0$
+$		// intno€ËÂÐ±þ€¹€ëinhno€ËÂÐ€·€ÆDEF_INH€¬€¢€ëŸì¹ç¡ÊE_OBJ¡Ë
+		$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€¬€Ê€€Ÿì¹ç¡ÊE_OBJ¡Ë
+		$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€ÇÀßÄê€µ€ì€¿³ä¹þ€ßÍ¥ÀèÅÙ€¬TMIN_INTPRI
+$			// €è€ê€âŸ®€µ€€Ÿì¹ç¡ÊE_OBJ¡Ë
+			$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)$
+
+$		// ISRÍÑ€Î³ä¹þ€ß¥Ï¥ó¥É¥é
+		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€òÍ¥ÀèÅÙœç€ËžÆ€ÓœÐ€¹
+		$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$
+
+$ 
+$  ³ä¹þ€ßŽÉÍýµ¡Çœ€Î€¿€á€ÎÉžœàÅª€ÊœéŽü²œŸðÊó€ÎÀžÀ®
+$ 
+$ ³ä¹þ€ß¥Ï¥ó¥É¥é€ÎœéŽü²œ€ËÉ¬Í×€ÊŸðÊó
+$IF !OMIT_INITIALIZE_INTERRUPT || ALT(USE_INHINIB_TABLE,0)$
+
+$ ³ä¹þ€ß¥Ï¥ó¥É¥é¿ô
+#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$
+
+$ ³ä¹þ€ß¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯
+$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$
+
+$ ³ä¹þ€ßÍ×µá¥é¥€¥ó€ÎœéŽü²œ€ËÉ¬Í×€ÊŸðÊó
+$IF !OMIT_INITIALIZE_INTERRUPT || ALT(USE_INTINIB_TABLE,0)$
+
+$ ³ä¹þ€ßÍ×µá¥é¥€¥ó¿ô
+#define TNUM_INTNO	$LENGTH(INT.ORDER_LIST)$$NL$
+const uint_t _kernel_tnum_intno = TNUM_INTNO;$NL$
+$NL$
+
+$ ³ä¹þ€ßÍ×µá¥é¥€¥óœéŽü²œ¥Ö¥í¥Ã¥¯
+$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Îã³°ŽÉÍýµ¡Çœ
+$ 
+/*$NL$
+$SPC$*  CPU Exception Management Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ CPUÎã³°¥Ï¥ó¥É¥é€ËŽØ€¹€ë¥š¥é¡Œ¥Á¥§¥Ã¥¯
+$i = 0$
+$FOREACH excno EXC.ORDER_LIST$
+$	// excno€¬DEF_EXC€ËÂÐ€¹€ëCPUÎã³°¥Ï¥ó¥É¥éÈÖ¹æ€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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€Ë€è€Ã€ÆÀßÄêºÑ€ß€ÎŸì¹ç¡ÊE_OBJ¡Ë
+	$j = 0$
+	$FOREACH excno2 EXC.ORDER_LIST$
+		$IF j < i && EXC.EXCNO[excno] == EXC.EXCNO[excno2]$
+			$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€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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Îã³°¥Ï¥ó¥É¥é€Î€¿€á€ÎÉžœàÅª€ÊœéŽü²œŸðÊó€ÎÀžÀ®
+$IF !OMIT_INITIALIZE_EXCEPTION$
+
+$ CPUÎã³°¥Ï¥ó¥É¥é¿ô
+#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Îã³°¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯
+$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$
+
+$ 
+$  Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ€Î¥¹¥¿¥Ã¥¯ÎÎ°è
+$ 
+/*$NL$
+$SPC$*  Stack Area for Non-task Context$NL$
+$SPC$*/$NL$
+$NL$
+
+$IF !LENGTH(ICS.ORDER_LIST)$
+$	// DEF_ICS€¬€Ê€€Ÿì¹ç€Î¥Ç¥Õ¥©¥ë¥ÈÃÍ€ÎÀßÄê
+	#ifdef DEFAULT_ISTK$NL$
+	$NL$
+	#define TOPPERS_ISTKSZ		DEFAULT_ISTKSZ$NL$
+	#define TOPPERS_ISTK		DEFAULT_ISTK$NL$
+	$NL$
+	#else /* DEAULT_ISTK */$NL$
+	$NL$
+	$istksz = ALLOC_STACK("_kernel_istack", "DEFAULT_ISTKSZ")$$NL$
+	#define TOPPERS_ISTKSZ		$istksz$$NL$
+	#define TOPPERS_ISTK		_kernel_istack$NL$
+	$NL$
+	#endif /* DEAULT_ISTK */$NL$
+$ELSE$
+
+$	// ÀÅÅªAPI¡ÖDEF_ICS¡×€¬Ê£¿ô€¢€ë¡ÊE_OBJ¡Ë
+	$IF LENGTH(ICS.ORDER_LIST) > 1$
+		$ERROR$E_OBJ: $FORMAT(_("too many %1%"), "DEF_ICS")$$END$
+	$END$
+
+$	// istksz€¬0°Ê²Œ€«¡€¥¿¡Œ¥²¥Ã¥ÈÄêµÁ€ÎºÇŸ®ÃÍ¡ÊTARGET_MIN_ISTKSZ¡Ë€è€ê€â
+$	// Ÿ®€µ€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$IF ICS.ISTKSZ[1] <= 0 || (TARGET_MIN_ISTKSZ
+									&& ICS.ISTKSZ[1] < TARGET_MIN_ISTKSZ)$
+		$ERROR ICS.TEXT_LINE[1]$E_PAR: $FORMAT(_("too small %1% `%2%\' in %3%"), "istksz", ICS.ISTKSZ[1], "DEF_ICS")$$END$
+	$END$
+
+$ 	// istksz€¬¥¹¥¿¥Ã¥¯ÎÎ°è€Î¥µ¥€¥º€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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")$
+$		// ¥¹¥¿¥Ã¥¯ÎÎ°è€ÎŒ«Æ°³äÉÕ€±
+		$istksz = ALLOC_STACK("_kernel_istack", ICS.ISTKSZ[1])$$NL$
+		#define TOPPERS_ISTKSZ		$istksz$$NL$
+		#define TOPPERS_ISTK		_kernel_istack$NL$
+	$ELSE$
+		#define TOPPERS_ISTKSZ		($ICS.ISTKSZ[1]$)$NL$
+		#define TOPPERS_ISTK		(void *)($ICS.ISTK[1]$)$NL$
+	$END$
+$END$
+$NL$
+
+$ Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ€Î¥¹¥¿¥Ã¥¯ÎÎ°è
+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$
+
+$ 
+$  ¥¿¥€¥à¥€¥Ù¥ó¥ÈŽÉÍý
+$ 
+/*$NL$
+$SPC$*  Time Event Management$NL$
+$SPC$*/$NL$
+$NL$
+TMEVTN   _kernel_tmevt_heap[TNUM_TSKID + TNUM_CYCID + TNUM_ALMID];$NL$
+$NL$
+
+$ 
+$  ³Æ¥â¥ž¥å¡Œ¥ë€ÎœéŽü²œŽØ¿ô
+$ 
+/*$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)$$TAB$_kernel_initialize_semaphore();$NL$$END$
+$IF LENGTH(FLG.ID_LIST)$$TAB$_kernel_initialize_eventflag();$NL$$END$
+$IF LENGTH(DTQ.ID_LIST)$$TAB$_kernel_initialize_dataqueue();$NL$$END$
+$IF LENGTH(PDQ.ID_LIST)$$TAB$_kernel_initialize_pridataq();$NL$$END$
+$IF LENGTH(MBX.ID_LIST)$$TAB$_kernel_initialize_mailbox();$NL$$END$
+$IF LENGTH(MPF.ID_LIST)$$TAB$_kernel_initialize_mempfix();$NL$$END$
+$IF LENGTH(CYC.ID_LIST)$$TAB$_kernel_initialize_cyclic();$NL$$END$
+$IF LENGTH(ALM.ID_LIST)$$TAB$_kernel_initialize_alarm();$NL$$END$
+$IF TOPPERS_SUPPORT_OVRHDR$$TAB$_kernel_initialize_overrun();$NL$$END$
+$TAB$_kernel_initialize_interrupt();$NL$
+$TAB$_kernel_initialize_exception();$NL$
+}$NL$
+$NL$
+
+$ 
+$  œéŽü²œ¥ë¡Œ¥Á¥ó€ÎŒÂ¹ÔŽØ¿ô
+$ 
+/*$NL$
+$SPC$*  Initialization Routine$NL$
+$SPC$*/$NL$
+$NL$
+void$NL$
+_kernel_call_inirtn(void)$NL$
+{$NL$
+$FOREACH order INI.ORDER_LIST$
+$ 	// iniatr€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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$
+
+$ 
+$  œªÎ»œèÍý¥ë¡Œ¥Á¥ó€ÎŒÂ¹ÔŽØ¿ô
+$ 
+/*$NL$
+$SPC$*  Termination Routine$NL$
+$SPC$*/$NL$
+$NL$
+void$NL$
+_kernel_call_terrtn(void)$NL$
+{$NL$
+$FOREACH rorder TER.RORDER_LIST$
+$ 	// teratr€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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: /extension/ovrhdr/kernel/kernel_api.csv
===================================================================
--- /extension/ovrhdr/kernel/kernel_api.csv	(revision 7)
+++ /extension/ovrhdr/kernel/kernel_api.csv	(revision 7)
@@ -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 },,
+exc,DEF_EXC,.excno { .excatr &exchdr },,
+ics,DEF_ICS,{ .istksz &istk },-1,
+ini,ATT_INI,{ .iniatr &exinf &inirtn },-1,
+ter,ATT_TER,{ .teratr &exinf &terrtn },-1,
Index: /extension/ovrhdr/kernel/kernel_check.tf
===================================================================
--- /extension/ovrhdr/kernel/kernel_check.tf	(revision 7)
+++ /extension/ovrhdr/kernel/kernel_check.tf	(revision 7)
@@ -0,0 +1,198 @@
+$ ======================================================================
+$ 
+$   TOPPERS/ASP Kernel
+$       Toyohashi Open Platform for Embedded Real-Time Systems/
+$       Advanced Standard Profile Kernel
+$ 
+$   Copyright (C) 2008-2013 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$
+$  
+$ =====================================================================
+
+$
+$  ¥Ç¡Œ¥¿¥»¥¯¥·¥ç¥ó€ÎLMA€«€éVMA€Ø€Î¥³¥Ô¡Œ
+$
+$FOREACH lma LMA.ORDER_LIST$
+	$start_data = SYMBOL(LMA.START_DATA[lma])$
+	$end_data = SYMBOL(LMA.END_DATA[lma])$
+	$start_idata = SYMBOL(LMA.START_IDATA[lma])$
+	$IF !LENGTH(start_data)$
+		$ERROR$$FORMAT(_("symbol '%1%' not found"), LMA.START_DATA[lma])$$END$
+	$ELIF !LENGTH(end_data)$
+		$ERROR$$FORMAT(_("symbol '%1%' not found"), LMA.END_DATA[lma])$$END$
+	$ELIF !LENGTH(start_idata)$
+		$ERROR$$FORMAT(_("symbol '%1%' not found"), LMA.START_IDATA[lma])$$END$
+	$ELSE$
+		$BCOPY(start_idata, start_data, end_data - start_data)$
+	$END$
+$END$
+
+$ 
+$  ŽØ¿ô€ÎÀèÆ¬ÈÖÃÏ€Î¥Á¥§¥Ã¥¯
+$ 
+$IF CHECK_FUNC_ALIGN || CHECK_FUNC_NONNULL$
+$	// ¥¿¥¹¥¯€È¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎÀèÆ¬ÈÖÃÏ€Î¥Á¥§¥Ã¥¯
+	$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$
+
+$	// ŒþŽü¥Ï¥ó¥É¥é€ÎÀèÆ¬ÈÖÃÏ€Î¥Á¥§¥Ã¥¯
+	$cycinib = SYMBOL("_kernel_cycinib_table")$
+	$FOREACH cycid CYC.ID_LIST$
+		$cychdr = PEEK(cycinib + offsetof_CYCINIB_cychdr, sizeof_FP)$
+		$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$
+
+$	// ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ÎÀèÆ¬ÈÖÃÏ€Î¥Á¥§¥Ã¥¯
+	$alminib = SYMBOL("_kernel_alminib_table")$
+	$FOREACH almid ALM.ID_LIST$
+		$almhdr = PEEK(alminib + offsetof_ALMINIB_almhdr, sizeof_FP)$
+		$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$
+
+$	// ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€ÎÀèÆ¬ÈÖÃÏ€Î¥Á¥§¥Ã¥¯
+	$ovrinib = SYMBOL("_kernel_ovrinib")$
+	$IF LENGTH(OVR.ORDER_LIST)$
+		$ovrhdr = PEEK(ovrinib + offsetof_OVRINIB_ovrhdr, sizeof_FP)$
+		$IF CHECK_FUNC_ALIGN && (ovrhdr & (CHECK_FUNC_ALIGN - 1)) != 0$
+			$ERROR OVR.TEXT_LINE[1]$E_PAR: 
+				$FORMAT(_("%1% `%2%\' in %4% is not aligned"),
+				"ovrhdr", OVR.OVRHDR[1], "DEF_OVR")$$END$
+		$END$
+		$IF CHECK_FUNC_NONNULL && ovrhdr == 0$
+			$ERROR OVR.TEXT_LINE[1]$E_PAR: 
+				$FORMAT(_("%1% `%2%\' in %3% is null"),
+				"ovrhdr", OVR.OVRHDR[1], "DEF_OVR")$$END$
+		$END$
+	$END$
+$END$
+
+$ 
+$  ¥¹¥¿¥Ã¥¯ÎÎ°è€ÎÀèÆ¬ÈÖÃÏ€Î¥Á¥§¥Ã¥¯
+$ 
+$IF CHECK_STACK_ALIGN || CHECK_STACK_NONNULL$
+$	// ¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯ÎÎ°è€ÎÀèÆ¬ÈÖÃÏ€Î¥Á¥§¥Ã¥¯
+	$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$
+
+$	// Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ€Î¥¹¥¿¥Ã¥¯ÎÎ°è€ÎÀèÆ¬ÈÖÃÏ€Î¥Á¥§¥Ã¥¯
+	$istk = PEEK(SYMBOL("_kernel_istk"), sizeof_void_ptr)$
+	$IF CHECK_STACK_ALIGN && (istk & (CHECK_STACK_ALIGN - 1)) != 0$
+		$ERROR ICS.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 ICS.TEXT_LINE[1]$E_PAR: 
+			$FORMAT(_("%1% `%2%\' in %3% is null"),
+			"istk", ICS.ISTK[1], "DEF_ICS")$$END$
+	$END$
+$END$
+
+$ 
+$  žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÎÎ°è€ÎÀèÆ¬ÈÖÃÏ€Î¥Á¥§¥Ã¥¯
+$ 
+$IF CHECK_MPF_ALIGN || CHECK_MPF_NONNULL$
+$	// žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÎÎ°è€ÎÀèÆ¬ÈÖÃÏ€Î¥Á¥§¥Ã¥¯
+	$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: /extension/ovrhdr/kernel/kernel_def.csv
===================================================================
--- /extension/ovrhdr/kernel/kernel_def.csv	(revision 7)
+++ /extension/ovrhdr/kernel/kernel_def.csv	(revision 7)
@@ -0,0 +1,115 @@
+TOPPERS_SUPPORT_OVRHDR,#defined(TOPPERS_SUPPORT_OVRHDR)
+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
+TBIT_TEXPTN,TBIT_TEXPTN
+TBIT_FLGPTN,TBIT_FLGPTN
+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
+TARGET_MIN_ISTKSZ,#defined(TARGET_MIN_ISTKSZ),,TARGET_MIN_ISTKSZ
+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_OVRINIB,#defined(TOPPERS_SUPPORT_OVRHDR),,sizeof(OVRINIB)
+offsetof_OVRINIB_ovratr,#defined(TOPPERS_SUPPORT_OVRHDR),,"offsetof(OVRINIB,ovratr)"
+offsetof_OVRINIB_ovrhdr,#defined(TOPPERS_SUPPORT_OVRHDR),,"offsetof(OVRINIB,ovrhdr)"
+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: /extension/ovrhdr/kernel/kernel_int.h
===================================================================
--- /extension/ovrhdr/kernel/kernel_int.h	(revision 7)
+++ /extension/ovrhdr/kernel/kernel_int.h	(revision 7)
@@ -0,0 +1,84 @@
+/*
+ *  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-2012 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		kernel_cfg.c¡Ê€ª€è€Ócfg1_out.c¡ËÍÑ¥Ø¥Ã¥À¥Õ¥¡¥€¥ë
+ */
+
+#ifndef TOPPERS_KERNEL_INT_H
+#define TOPPERS_KERNEL_INT_H
+
+/*
+ *  ¥«¡Œ¥Í¥ëÉžœà¥Ø¥Ã¥À¥Õ¥¡¥€¥ë
+ */
+#include "kernel_impl.h"
+
+/*
+ *  ¥«¡Œ¥Í¥ë€Î³Æ¥Ø¥Ã¥À¥Õ¥¡¥€¥ë
+ */
+#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"
+
+/*
+ *  ¥ê¥Í¡Œ¥à€·€¿¥·¥ó¥Ü¥ë€òžµ€ËÌá€¹€¿€á€Î¥Ø¥Ã¥À¥Õ¥¡¥€¥ë
+ */
+#include "kernel_unrename.h"
+
+/*
+ *  ÆâÍÆ€¬¶õ€ÎÇÛÎó€òÀžÀ®€¹€ë€¿€á€Î¥Þ¥¯¥í
+ */
+#ifndef TOPPERS_EMPTY_LABEL
+#define TOPPERS_EMPTY_LABEL(type, var)		type var[0]
+#endif
+
+#endif /* TOPPERS_KERNEL_INT_H */
Index: /extension/ovrhdr/kernel/kernel_rename.def
===================================================================
--- /extension/ovrhdr/kernel/kernel_rename.def	(revision 7)
+++ /extension/ovrhdr/kernel/kernel_rename.def	(revision 7)
@@ -0,0 +1,144 @@
+# 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
+ovrtimer_flag
+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
+dtqinib_table
+dtqcb_table
+tmax_pdqid
+pdqinib_table
+pdqcb_table
+tmax_mbxid
+mbxinib_table
+mbxcb_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: /extension/ovrhdr/kernel/kernel_rename.h
===================================================================
--- /extension/ovrhdr/kernel/kernel_rename.h	(revision 7)
+++ /extension/ovrhdr/kernel/kernel_rename.h	(revision 7)
@@ -0,0 +1,364 @@
+/* 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 ovrtimer_flag				_kernel_ovrtimer_flag
+#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 dtqinib_table				_kernel_dtqinib_table
+#define dtqcb_table					_kernel_dtqcb_table
+#define tmax_pdqid					_kernel_tmax_pdqid
+#define pdqinib_table				_kernel_pdqinib_table
+#define pdqcb_table					_kernel_pdqcb_table
+#define tmax_mbxid					_kernel_tmax_mbxid
+#define mbxinib_table				_kernel_mbxinib_table
+#define mbxcb_table					_kernel_mbxcb_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 _ovrtimer_flag				__kernel_ovrtimer_flag
+#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 _dtqinib_table				__kernel_dtqinib_table
+#define _dtqcb_table				__kernel_dtqcb_table
+#define _tmax_pdqid					__kernel_tmax_pdqid
+#define _pdqinib_table				__kernel_pdqinib_table
+#define _pdqcb_table				__kernel_pdqcb_table
+#define _tmax_mbxid					__kernel_tmax_mbxid
+#define _mbxinib_table				__kernel_mbxinib_table
+#define _mbxcb_table				__kernel_mbxcb_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: /extension/ovrhdr/kernel/kernel_unrename.h
===================================================================
--- /extension/ovrhdr/kernel/kernel_unrename.h	(revision 7)
+++ /extension/ovrhdr/kernel/kernel_unrename.h	(revision 7)
@@ -0,0 +1,365 @@
+/* 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 ovrtimer_flag
+#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 dtqinib_table
+#undef dtqcb_table
+#undef tmax_pdqid
+#undef pdqinib_table
+#undef pdqcb_table
+#undef tmax_mbxid
+#undef mbxinib_table
+#undef mbxcb_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 _ovrtimer_flag
+#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 _dtqinib_table
+#undef _dtqcb_table
+#undef _tmax_pdqid
+#undef _pdqinib_table
+#undef _pdqcb_table
+#undef _tmax_mbxid
+#undef _mbxinib_table
+#undef _mbxcb_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: /extension/ovrhdr/kernel/overrun.c
===================================================================
--- /extension/ovrhdr/kernel/overrun.c	(revision 7)
+++ /extension/ovrhdr/kernel/overrun.c	(revision 7)
@@ -0,0 +1,365 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2005-2014 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$
+ */
+
+/*
+ *		¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éµ¡Çœ
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "overrun.h"
+
+#ifdef TOPPERS_SUPPORT_OVRHDR
+#include "target_timer.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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
+
+/*
+ *  ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€¬Æ°ºîÃæ€«€òŒš€¹¥Õ¥é¥°
+ */
+bool_t	ovrtimer_flag;
+
+/*
+ *  ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éµ¡Çœ€ÎœéŽü²œ
+ */
+void
+initialize_overrun(void)
+{
+	ovrtimer_flag = false;
+}
+
+#endif /* TOPPERS_ovrini */
+
+/*
+ *  ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éÍÑ¥¿¥€¥Þ€ÎÆ°ºî³«»Ï
+ */
+#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 */
+
+/*
+ *  ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éÍÑ¥¿¥€¥Þ€ÎÄä»ß
+ */
+#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 */
+
+/*
+ *  ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€ÎÆ°ºî³«»Ï
+ */
+#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 */
+
+/*
+ *  ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€ÎÆ°ºî³«»Ï¡ÊÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ */
+#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 */
+
+/*
+ *  ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€ÎÆ°ºîÄä»ß
+ */
+#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 */
+
+/*
+ *  ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€ÎÆ°ºîÄä»ß¡ÊÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ */
+#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 */
+
+/*
+ *  ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€ÎŸõÂÖ»²ŸÈ
+ */
+#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 */
+
+/*
+ *  ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éµ¯Æ°¥ë¡Œ¥Á¥ó
+ *
+ *  ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€ÎžÆœÐ€·žå€Ë¡€žÆœÐ€·Á°€ÎŸõÂÖ¡ÊCPU¥í¥Ã¥¯¥Õ¥é¥°¡€³ä
+ *  ¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡Ë€ËÌá€µ€Ê€€€Î€Ï¡€€³€Î¥ë¡Œ¥Á¥ó€«€é€Î¥ê¥¿¡Œ¥óžå€Ë¡€
+ *  ³ä¹þ€ßœÐžýœèÍý€Çžµ€ÎŸõÂÖ€ËÌá€¹€¿€á€Ç€¢€ë¡¥
+ */
+#ifdef TOPPERS_ovrcal
+
+void
+call_ovrhdr(void)
+{
+	assert(sense_context());
+	assert(!i_sense_lock());
+	assert(ovrinib.ovrhdr != NULL);
+
+	i_lock_cpu();
+	if (p_runtsk!= NULL && p_runtsk->leftotm == 1U) {
+		p_runtsk->leftotm = 0U;
+		i_unlock_cpu();
+
+		LOG_OVR_ENTER(p_runtsk);
+		((OVRHDR)(ovrinib.ovrhdr))(TSKID(p_runtsk), p_runtsk->p_tinib->exinf);
+		LOG_OVR_LEAVE(p_runtsk);
+	}
+	else {
+		/*
+		 *  €³€Î¥ë¡Œ¥Á¥ó€¬žÆ€ÓœÐ€µ€ì€ëÁ°€Ë¡€¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€Îµ¯Æ°€¬
+		 *  ¥­¥ã¥ó¥»¥ë€µ€ì€¿Ÿì¹ç
+		 */
+		i_unlock_cpu();
+	}
+}
+
+#endif /* TOPPERS_ovrcal */
+#endif /* TOPPERS_SUPPORT_OVRHDR */
Index: /extension/ovrhdr/kernel/overrun.h
===================================================================
--- /extension/ovrhdr/kernel/overrun.h	(revision 7)
+++ /extension/ovrhdr/kernel/overrun.h	(revision 7)
@@ -0,0 +1,105 @@
+/*
+ *  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$
+ */
+
+/*
+ *		¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éµ¡Çœ
+ */
+
+#ifndef TOPPERS_OVERRUN_H
+#define TOPPERS_OVERRUN_H
+
+#ifdef TOPPERS_SUPPORT_OVRHDR
+#include "target_timer.h"
+
+/*
+ *  ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯
+ */
+typedef struct overrun_handler_initialization_block {
+	ATR			ovratr;			/* ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éÂ°À­ */
+	OVRHDR		ovrhdr;			/* ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€Îµ¯Æ°ÈÖÃÏ */
+} OVRINIB;
+
+/*
+ *  ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern const OVRINIB	ovrinib;
+
+/*
+ *  ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€¬Æ°ºîÃæ€«€òŒš€¹¥Õ¥é¥°
+ */
+extern bool_t	ovrtimer_flag;
+
+/*
+ *  ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éµ¡Çœ€ÎœéŽü²œ
+ */
+extern void	initialize_overrun(void);
+
+/*
+ *  ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éÍÑ¥¿¥€¥Þ€ÎÆ°ºî³«»Ï
+ */
+extern void	ovrtimer_start(void);
+
+/*
+ *  ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éÍÑ¥¿¥€¥Þ€ÎÄä»ß
+ */
+#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 */
+
+/*
+ *  ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éµ¯Æ°¥ë¡Œ¥Á¥ó
+ */
+extern void	call_ovrhdr(void);
+
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+#endif /* TOPPERS_OVERRUN_H */
Index: /extension/ovrhdr/kernel/task.c
===================================================================
--- /extension/ovrhdr/kernel/task.c	(revision 7)
+++ /extension/ovrhdr/kernel/task.c	(revision 7)
@@ -0,0 +1,486 @@
+/*
+ *  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-2012 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  $Id$
+ */
+
+/*
+ *		¥¿¥¹¥¯ŽÉÍý¥â¥ž¥å¡Œ¥ë
+ */
+
+#include "kernel_impl.h"
+#include "wait.h"
+#include "task.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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
+
+/*
+ *  ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯
+ */
+TCB		*p_runtsk;
+
+/*
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯
+ */
+TCB		*p_schedtsk;
+
+/*
+ *  ¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á¡¿¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óµ¯Æ°Í×µá¥Õ¥é¥°
+ */
+bool_t	reqflg;
+
+/*
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ
+ */
+bool_t	ipmflg;
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ
+ */
+bool_t	disdsp;
+
+/*
+ *  ¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á²ÄÇœŸõÂÖ
+ */
+bool_t	dspflg;
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ
+ */
+QUEUE	ready_queue[TNUM_TPRI];
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ¥µ¡Œ¥Á€Î€¿€á€Î¥Ó¥Ã¥È¥Þ¥Ã¥×
+ */
+uint16_t	ready_primap;
+
+/*
+ *  ¥¿¥¹¥¯ŽÉÍý¥â¥ž¥å¡Œ¥ë€ÎœéŽü²œ
+ */
+void
+initialize_task(void)
+{
+	uint_t	i, j;
+	TCB		*p_tcb;
+
+	p_runtsk = NULL;
+	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) {
+			(void) make_active(p_tcb);
+		}
+	}
+}
+
+#endif /* TOPPERS_tskini */
+
+/*
+ *  ¥Ó¥Ã¥È¥Þ¥Ã¥×¥µ¡Œ¥ÁŽØ¿ô
+ *
+ *  bitmapÆâ€Î1€Î¥Ó¥Ã¥È€ÎÆâ¡€ºÇ€â²Œ°Ì¡Ê±Š¡Ë€Î€â€Î€ò¥µ¡Œ¥Á€·¡€€œ€Î¥Ó¥Ã
+ *  ¥ÈÈÖ¹æ€òÊÖ€¹¡¥¥Ó¥Ã¥ÈÈÖ¹æ€Ï¡€ºÇ²Œ°Ì¥Ó¥Ã¥È€ò0€È€¹€ë¡¥bitmap€Ë0€ò»ØÄê
+ *  €·€Æ€Ï€Ê€é€Ê€€¡¥€³€ÎŽØ¿ô€Ç€Ï¡€bitmap€¬16¥Ó¥Ã¥È€Ç€¢€ë€³€È€ò²ŸÄê€·¡€
+ *  uint16_t·¿€È€·€Æ€€€ë¡¥
+ *
+ *  ¥Ó¥Ã¥È¥µ¡Œ¥ÁÌ¿Îá€ò»ý€Ä¥×¥í¥»¥Ã¥µ€Ç€Ï¡€¥Ó¥Ã¥È¥µ¡Œ¥ÁÌ¿Îá€ò»È€Š€è€Š€Ë
+ *  œñ€­ÄŸ€·€¿Êý€¬žúÎš€¬ÎÉ€€Ÿì¹ç€¬€¢€ë¡¥€³€Î€è€Š€ÊŸì¹ç€Ë€Ï¡€¥¿¡Œ¥²¥Ã¥È
+ *  °ÍÂžÉô€Ç¥Ó¥Ã¥È¥µ¡Œ¥ÁÌ¿Îá€ò»È€Ã€¿bitmap_search€òÄêµÁ€·¡€
+ *  OMIT_BITMAP_SEARCH€ò¥Þ¥¯¥íÄêµÁ€¹€ì€Ð€è€€¡¥€Þ€¿¡€¥Ó¥Ã¥È¥µ¡Œ¥ÁÌ¿Îá€Î
+ *  ¥µ¡Œ¥ÁÊýžþ€¬µÕ€Ê€É€ÎÍýÍ³€ÇÍ¥ÀèÅÙ€È¥Ó¥Ã¥È€È€ÎÂÐ±þ€òÊÑ¹¹€·€¿€€Ÿì¹ç€Ë
+ *  €Ï¡€PRIMAP_BIT€ò¥Þ¥¯¥íÄêµÁ€¹€ì€Ð€è€€¡¥
+ *
+ *  €Þ€¿¡€¥é¥€¥Ö¥é¥ê€Ëffs€¬€¢€ë€Ê€é¡€Œ¡€Î€è€Š€ËÄêµÁ€·€Æ¥é¥€¥Ö¥é¥êŽØ¿ô€ò
+ *  »È€Ã€¿Êý€¬žúÎš€¬ÎÉ€€²ÄÇœÀ­€â€¢€ë¡¥
+ *		#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 */
+
+/*
+ *  Í¥ÀèÅÙ¥Ó¥Ã¥È¥Þ¥Ã¥×€¬¶õ€«€Î¥Á¥§¥Ã¥¯
+ */
+Inline bool_t
+primap_empty(void)
+{
+	return(ready_primap == 0U);
+}
+
+/*
+ *  Í¥ÀèÅÙ¥Ó¥Ã¥È¥Þ¥Ã¥×€Î¥µ¡Œ¥Á
+ */
+Inline uint_t
+primap_search(void)
+{
+	return(bitmap_search(ready_primap));
+}
+
+/*
+ *  Í¥ÀèÅÙ¥Ó¥Ã¥È¥Þ¥Ã¥×€Î¥»¥Ã¥È
+ */
+Inline void
+primap_set(uint_t pri)
+{
+	ready_primap |= PRIMAP_BIT(pri);
+}
+
+/*
+ *  Í¥ÀèÅÙ¥Ó¥Ã¥È¥Þ¥Ã¥×€Î¥¯¥ê¥¢
+ */
+Inline void
+primap_clear(uint_t pri)
+{
+	ready_primap &= ~PRIMAP_BIT(pri);
+}
+
+/*
+ *  ºÇ¹âÍ¥Àèœç°Ì¥¿¥¹¥¯€Î¥µ¡Œ¥Á
+ */
+#ifdef TOPPERS_tsksched
+
+TCB *
+search_schedtsk(void)
+{
+	uint_t	schedpri;
+
+	schedpri = primap_search();
+	return((TCB *)(ready_queue[schedpri].p_next));
+}
+
+#endif /* TOPPERS_tsksched */
+
+/*
+ *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€¹€ë€Î€Ï¡€ŒÂ¹Ô€Ç€­€ë¥¿¥¹¥¯€¬€Ê€«€Ã€¿Ÿì¹ç
+ *  €È¡€p_tcb€ÎÍ¥ÀèÅÙ€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€è€ê€â¹â€€Ÿì¹ç€Ç€¢
+ *  €ë¡¥
+ */
+#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 */
+
+/*
+ *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€«€éÂŸ€ÎŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€¹€ë€Î€Ï¡€p_tcb€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€Ç
+ *  €¢€Ã€¿Ÿì¹ç€Ç€¢€ë¡¥p_tcb€ÈÆ±€žÍ¥ÀèÅÙ€Î¥¿¥¹¥¯€¬ÂŸ€Ë€¢€ëŸì¹ç€Ï¡€p_tcb
+ *  €ÎŒ¡€Î¥¿¥¹¥¯€¬ºÇ¹âÍ¥Àèœç°Ì€Ë€Ê€ë¡¥€œ€Š€Ç€Ê€€Ÿì¹ç€Ï¡€¥ì¥Ç¥£¥­¥å¡Œ€ò
+ *  ¥µ¡Œ¥Á€¹€ëÉ¬Í×€¬€¢€ë¡¥
+ */
+#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 */
+
+/*
+ *  µÙ»ßŸõÂÖ€Ø€ÎÁ«°Ü
+ */
+#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_OVRHDR
+	p_tcb->leftotm = 0U;
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+	LOG_TSKSTAT(p_tcb);
+}
+
+#endif /* TOPPERS_tskdmt */
+
+/*
+ *  µÙ»ßŸõÂÖ€«€éŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ø€ÎÁ«°Ü
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€ÎÊÑ¹¹
+ *
+ *  ¥¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂÖ€ÎŸì¹ç€Ë€Ï¡€¥ì¥Ç¥£¥­¥å¡Œ€ÎÃæ€Ç€Î°ÌÃÖ€òÊÑ¹¹€¹
+ *  €ë¡¥¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€Á¥­¥å¡Œ€ÎÃæ€ÇÂÔ€ÁŸõÂÖ€Ë€Ê€Ã€Æ€€€ëŸì¹ç€Ë€Ï¡€ÂÔ
+ *  €Á¥­¥å¡Œ€ÎÃæ€Ç€Î°ÌÃÖ€òÊÑ¹¹€¹€ë¡¥
+ *
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€¹€ë€Î€Ï¡€(1) p_tcb€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹
+ *  ¥¯€Ç€¢€Ã€Æ¡€€œ€ÎÍ¥ÀèÅÙ€ò²Œ€²€¿Ÿì¹ç¡€(2) p_tcb€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹
+ *  ¥¯€Ç€Ï€Ê€¯¡€ÊÑ¹¹žå€ÎÍ¥ÀèÅÙ€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€è€ê€â¹â€€
+ *  Ÿì¹ç€Ç€¢€ë¡¥(1)€ÎŸì¹ç€Ë€Ï¡€¥ì¥Ç¥£¥­¥å¡Œ€ò¥µ¡Œ¥Á€¹€ëÉ¬Í×€¬€¢€ë¡¥
+ */
+#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)) {
+		/*
+		 *  ¥¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂÖ€ÎŸì¹ç
+		 */
+		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)) {
+			/*
+			 *  ¥¿¥¹¥¯€¬¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉô
+			 *  Ê¬¡ÊWOBJCB¡Ë€ÎÂÔ€Á¥­¥å¡Œ€Ë€Ä€Ê€¬€ì€Æ€€€ëŸì¹ç
+			 */
+			wobj_change_priority(((WINFO_WOBJ *)(p_tcb->p_winfo))->p_wobjcb,
+																	p_tcb);
+		}
+	}
+	return(false);
+}
+
+#endif /* TOPPERS_tskpri */
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ€Î²óÅŸ
+ *
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€¹€ë€Î€Ï¡€ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€¬¥¿¥¹¥¯¥­
+ *  ¥å¡Œ€ÎËöÈø€Ë°ÜÆ°€·€¿Ÿì¹ç€Ç€¢€ë¡¥
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎžÆœÐ€·
+ *
+ *  ASP¥«¡Œ¥Í¥ë€Ç€Ï¡€¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óÆâ€ÇCPU¥í¥Ã¥¯ŸõÂÖ€ËÁ«°Ü€·¡€
+ *  žµ€ÎŸõÂÖ€ËÌá€µ€º€Ë¥ê¥¿¡Œ¥ó€·€¿Ÿì¹ç¡€¥«¡Œ¥Í¥ë€¬žµ€ÎŸõÂÖ€ËÌá€¹¡¥
+ */
+#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€òžÆ€ÓœÐ€¹œèÍý€Ï¡€ÁêžßºÆµ¢žÆœÐ€·€Ë€Ê€Ã€Æ
+			 *  €€€ë€¬¡€dispatch€òžÆ€ÖÁ°€Ëp_runtsk->enatex€òfalse€Ë€·€Æ
+			 *  €ª€±€Ð»ÙŸã€¬€Ê€€¡¥€œ€ÎÍýÍ³€Ë€Ä€€€Æ€Ï¡€¡ÖTOPPERS/ASP ¥«¡Œ
+			 *  ¥Í¥ë Àß·×¥á¥â¡×€ò»²ŸÈ€Î€³€È¡¥
+			 */
+			dispatch();
+		}
+	} while (p_runtsk->texptn != 0U);
+	p_runtsk->enatex = true;
+}
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€Îµ¯Æ°
+ */
+#ifndef OMIT_CALLTEX
+
+void
+calltex(void)
+{
+	if (p_runtsk->enatex && p_runtsk->texptn != 0U && ipmflg) {
+		call_texrtn();
+	}
+}
+
+#endif /* OMIT_CALLTEX */
+#endif /* TOPPERS_tsktex */
Index: /extension/ovrhdr/kernel/task.h
===================================================================
--- /extension/ovrhdr/kernel/task.h	(revision 7)
+++ /extension/ovrhdr/kernel/task.h	(revision 7)
@@ -0,0 +1,483 @@
+/*
+ *  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-2012 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  $Id$
+ */
+
+/*
+ *		¥¿¥¹¥¯ŽÉÍý¥â¥ž¥å¡Œ¥ë
+ */
+
+#ifndef TOPPERS_TASK_H
+#define TOPPERS_TASK_H
+
+#include <queue.h>
+#include "time_event.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#ifndef LOG_TSKSTAT
+#define LOG_TSKSTAT(p_tcb)
+#endif /* LOG_TSKSTAT */
+
+/*
+ *  ¥¿¥¹¥¯Í¥ÀèÅÙ€ÎÆâÉôÉœžœ¡Š³°ÉôÉœžœÊÑŽ¹¥Þ¥¯¥í
+ */
+#define INT_PRIORITY(x)		((uint_t)((x) - TMIN_TPRI))
+#define EXT_TSKPRI(x)		((PRI)(x) + TMIN_TPRI)
+
+/*
+ *  ¥¿¥¹¥¯ŸõÂÖ€ÎÆâÉôÉœžœ
+ *
+ *  TCBÃæ€Î¥¿¥¹¥¯ŸõÂÖ€Ç€Ï¡€ŒÂ¹ÔŸõÂÖ¡ÊRUNNING¡Ë€ÈŒÂ¹Ô²ÄÇœŸõÂÖ¡ÊREADY¡Ë
+ *  €Ï¶èÊÌ€·€Ê€€¡¥ÎŸŸõÂÖ€òÁíŸÎ€·€Æ¡€ŒÂ¹Ô€Ç€­€ëŸõÂÖ¡ÊRUNNABLE¡Ë€ÈžÆ€Ö¡¥
+ *  ÆóœÅÂÔ€ÁŸõÂÖ€Ï¡€(TS_WAITING | TS_SUSPENDED)€ÇÉœ€¹¡¥TS_WAIT_???€ÏÂÔ
+ *  €ÁÍ×°ø€òÉœ€·¡€ÂÔ€ÁŸõÂÖ¡ÊÆóœÅÂÔ€ÁŸõÂÖ€òŽÞ€à¡Ë€ÎŸì¹ç€Ë€Î€ßÀßÄê€¹€ë¡¥
+ */
+#define TS_DORMANT		0x00U			/* µÙ»ßŸõÂÖ */
+#define TS_RUNNABLE		0x01U			/* ŒÂ¹Ô€Ç€­€ëŸõÂÖ */
+#define TS_WAITING		0x02U			/* ÂÔ€ÁŸõÂÖ */
+#define TS_SUSPENDED	0x04U			/* ¶¯À©ÂÔ€ÁŸõÂÖ */
+
+#define TS_WAIT_DLY		(0x00U << 3)	/* »þŽÖ·Ð²áÂÔ€Á */
+#define TS_WAIT_SLP		(0x01U << 3)	/* µ¯Ÿ²ÂÔ€Á */
+#define TS_WAIT_RDTQ	(0x02U << 3)	/* ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TS_WAIT_RPDQ	(0x03U << 3)	/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TS_WAIT_SEM		(0x04U << 3)	/* ¥»¥Þ¥Õ¥©»ñž»€Î³ÍÆÀÂÔ€Á */
+#define TS_WAIT_FLG		(0x05U << 3)	/* ¥€¥Ù¥ó¥È¥Õ¥é¥°ÂÔ€Á */
+#define TS_WAIT_SDTQ	(0x06U << 3)	/* ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®ÂÔ€Á */
+#define TS_WAIT_SPDQ	(0x07U << 3)	/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®ÂÔ€Á */
+#define TS_WAIT_MBX		(0x08U << 3)	/* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TS_WAIT_MPF		(0x09U << 3)	/* žÇÄêÄ¹¥á¥â¥ê¥Ö¥í¥Ã¥¯€Î³ÍÆÀÂÔ€Á */
+
+/*
+ *  ¥¿¥¹¥¯ŸõÂÖÈœÊÌ¥Þ¥¯¥í
+ *
+ *  TSTAT_DORMANT€Ï¥¿¥¹¥¯€¬µÙ»ßŸõÂÖ€Ç€¢€ë€«€É€Š€«€ò¡€TSTAT_RUNNABLE€Ï
+ *  ¥¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ç€¢€ë€«€É€Š€«€òÈœÊÌ€¹€ë¡¥TSTAT_WAITING€ÏÂÔ
+ *  €ÁŸõÂÖ€ÈÆóœÅÂÔ€ÁŸõÂÖ€Î€€€º€ì€«€Ç€¢€ë€«€É€Š€«€ò¡€TSTAT_SUSPENDED€Ï
+ *  ¶¯À©ÂÔ€ÁŸõÂÖ€ÈÆóœÅÂÔ€ÁŸõÂÖ€Î€€€º€ì€«€Ç€¢€ë€«€É€Š€«€òÈœÊÌ€¹€ë¡¥
+ */
+#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)
+
+/*
+ *  ¥¿¥¹¥¯ÂÔ€ÁÍ×°øÈœÊÌ¥Þ¥¯¥í
+ *
+ *  TSTAT_WAIT_SLP€Ï¥¿¥¹¥¯€¬µ¯Ÿ²ÂÔ€Á€Ç€¢€ë€«€É€Š€«€ò¡€TSTAT_WAIT_WOBJ
+ *  €Ï¥¿¥¹¥¯€¬Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ËÂÐ€¹€ëÂÔ€Á€Ç€¢€ë€«¡ÊžÀ€€Ž¹€š€ë€È¡€
+ *  Æ±ŽüÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€Á¥­¥å¡Œ€Ë€Ä€Ê€¬€ì€Æ€€€ë€«¡Ë€É€Š€«€òÈœÊÌ€¹
+ *  €ë¡¥€Þ€¿¡€TSTAT_WAIT_WOBJCB€Ï¥¿¥¹¥¯€¬Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý
+ *  ¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬¡ÊWOBJCB¡Ë€ÎÂÔ€Á¥­¥å¡Œ€Ë€Ä€Ê€¬€ì€Æ€€€ë€«€É€Š€«€ò
+ *  ÈœÊÌ€¹€ë¡¥
+ *
+ *  TSTAT_WAIT_SLP€Ï¡€Ç€°Õ€Î¥¿¥¹¥¯ŸõÂÖ€ÎÃæ€«€é¡€¥¿¥¹¥¯€¬µ¯Ÿ²ÂÔ€Á€Ç€¢€ë
+ *  €³€È€òÈœÊÌ€Ç€­€ë¡¥€¹€Ê€ï€Á¡€TSTAT_WAITING€Ë€è€êÂÔ€ÁŸõÂÖ€Ç€¢€ë€³€È€ò
+ *  ÈœÊÌ€»€º€Ë¡€TSTAT_SLP€À€±€òÍÑ€€€Æµ¯Ÿ²ÂÔ€ÁŸõÂÖ€Ç€¢€ë€³€È€òÈœÊÌ€Ç€­€ë¡¥
+ *  €³€ì€òžúÎšÅª€ËŒÂžœ€¹€ë€¿€á€Ë¡€TS_WAIT_SLP€ÎÃÍ€ò¡€(0x00U << 3)€Ç€Ï€Ê
+ *  €¯(0x01U << 3)€È€·€Æ€€€ë¡¥€œ€Î€¿€á¡€¥¿¥¹¥¯€¬»þŽÖ·Ð²áÂÔ€ÁŸõÂÖ€Ç€¢€ë
+ *  €³€È€òÈœÊÌ€¹€ë€¿€á€ÎTSTAT_WAIT_DLY€ò¡€TSTAT_WAIT_SLP€ÈÆ±ÍÍ€ÎÊýË¡€Ç
+ *  ŒÂžœ€¹€ë€³€È€Ï€Ç€­€Ê€€¡¥
+ */
+#define TS_WAIT_MASK	(0x0fU << 3)	/* ÂÔ€ÁÍ×°ø€ÎŒèœÐ€·¥Þ¥¹¥¯ */
+
+#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)
+
+/*
+ *  ÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯¡ÊWINFO¡Ë€ÎÄêµÁ
+ *
+ *  ¥¿¥¹¥¯€¬ÂÔ€ÁŸõÂÖ€ÎŽÖ€Ï¡€TCB€ª€è€Ó€œ€Îp_winfo€Ç»Ø€µ€ì€ëWINFO€òŒ¡€Î
+ *  €è€Š€ËÀßÄê€·€Ê€±€ì€Ð€Ê€é€Ê€€¡¥
+ *
+ *  (a) TCB€Î¥¿¥¹¥¯ŸõÂÖ€òÂÔ€ÁŸõÂÖ¡ÊTS_WAITING¡Ë€Ë€¹€ë¡¥€œ€ÎºÝ€Ë¡€ÂÔ€Á
+ *  Í×°ø¡ÊTS_WAIT_???¡Ë€âÀßÄê€¹€ë¡¥
+ *
+ *  (b) ¥¿¥€¥à¥¢¥Š¥È€òŽÆ»ë€¹€ë€¿€á€Ë¡€¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯€òÅÐÏ¿€¹€ë¡¥
+ *  ÅÐÏ¿€¹€ë¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯€Ï¡€ÂÔ€Á€ËÆþ€ë¥µ¡Œ¥Ó¥¹¥³¡Œ¥ëœèÍýŽØ¿ô
+ *  €Î¥í¡Œ¥«¥ëÊÑ¿ô€È€·€Æ³ÎÊÝ€·¡€€œ€ì€Ø€Î¥Ý¥€¥ó¥¿€òWINFO€Îp_tmevtb€Ëµ­
+ *  ²±€¹€ë¡¥¥¿¥€¥à¥¢¥Š¥È€ÎŽÆ»ë€¬É¬Í×€Ê€€Ÿì¹ç¡Ê±Êµ×ÂÔ€Á€ÎŸì¹ç¡Ë€Ë€Ï¡€
+ *  p_tmevtb€òNULL€Ë€¹€ë¡¥
+ *
+ *  Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ËÂÐ€¹€ëÂÔ€ÁŸõÂÖ€ÎŸì¹ç€Ë€Ï¡€Éžœà€ÎWINFO€Ë
+ *  p_wobjcb¥Õ¥£¡Œ¥ë¥É€òÄÉ²Ã€·€¿¹œÂ€ÂÎ¡ÊWINFO_WOBJ¡€wait.h€ÇÄêµÁ¡Ë€ò»È
+ *  €Š¡¥€Þ€¿¡€°Ê²Œ€Î(c)¡Á(e)€ÎÀßÄê€ò¹Ô€ŠÉ¬Í×€¬€¢€ë¡¥Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§
+ *  ¥¯¥È€ËŽØ·ž€·€Ê€€ÂÔ€Á¡Êµ¯Ÿ²ÂÔ€Á¡€»þŽÖ·Ð²áÂÔ€Á¡Ë€ÎŸì¹ç€Ë€Ï¡€(c)¡Á(e)
+ *  €ÏÉ¬Í×€Ê€€¡¥
+ *
+ *  (c) TCB€òÂÔ€ÁÂÐŸÝ€ÎÆ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€Á¥­¥å¡Œ€Ë€Ä€Ê€°¡¥ÂÔ
+ *  €Á¥­¥å¡Œ€Ë€Ä€Ê€°€¿€á€Ë¡€task_queue€ò»È€Š¡¥
+ *
+ *  (d) ÂÔ€ÁÂÐŸÝ€ÎÆ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿€ò¡€
+ *  WINFO_WOBJ€Îp_wobjcb€Ëµ­²±€¹€ë¡¥
+ *
+ *  (e) ÂÔ€ÁÂÐŸÝ€ÎÆ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€Ë°ÍÂž€·€Æµ­²±€¹€ë€³€È€¬É¬Í×€Ê
+ *  ŸðÊó€¬€¢€ëŸì¹ç€Ë€Ï¡€WINFO_WOBJ€ËÉ¬Í×€ÊŸðÊó€Î€¿€á€Î¥Õ¥£¡Œ¥ë¥É€òÄÉ²Ã
+ *  €·€¿¹œÂ€ÂÎ€òÄêµÁ€·¡€WINFO_WOBJ€ÎÂå€ï€ê€ËÍÑ€€€ë¡¥
+ *
+ *  ÂÔ€ÁŸõÂÖ€ò²òœü€¹€ëºÝ€Ë€Ï¡€ÂÔ€Á²òœü€·€¿¥¿¥¹¥¯€ËÂÐ€¹€ëÊÖÃÍ€òWINFO€Î
+ *  wercd€ËÀßÄê€¹€ë¡¥wercd€¬É¬Í×€Ê€Î€ÏÂÔ€Á²òœü°Ê¹ß€Ç€¢€ë€Î€ËÂÐ€·€Æ¡€
+ *  p_tmevtb€ÏÂÔ€Á²òœüžå€ÏÉ¬Í×€Ê€€€¿€á¡€¥á¥â¥êÀáÌó€Î€¿€á€Ë¶ŠÍÑÂÎ€ò»È€Ã
+ *  €Æ€€€ë¡¥€œ€Î€¿€á¡€wercd€Ø¥š¥é¡Œ¥³¡Œ¥É€òÀßÄê€¹€ë€Î€Ï¡€¥¿¥€¥à¥€¥Ù¥ó¥È
+ *  ¥Ö¥í¥Ã¥¯€òÅÐÏ¿²òœü€·€¿žå€Ë€·€Ê€±€ì€Ð€Ê€é€Ê€€¡¥
+ */
+typedef union waiting_information {
+	ER		wercd;			/* ÂÔ€Á²òœü»þ€Î¥š¥é¡Œ¥³¡Œ¥É */
+	TMEVTB	*p_tmevtb;		/* ÂÔ€ÁŸõÂÖÍÑ€Î¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯ */
+} WINFO;
+
+/*
+ *  ¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯
+ *
+ *  ¥¿¥¹¥¯€ËŽØ€¹€ëŸðÊó€ò¡€ÃÍ€¬ÊÑ€ï€é€Ê€€€¿€á€ËROM€ËÃÖ€±€ëÉôÊ¬¡Ê¥¿¥¹¥¯
+ *  œéŽü²œ¥Ö¥í¥Ã¥¯¡Ë€È¡€ÃÍ€¬ÊÑ²œ€¹€ë€¿€á€ËRAM€ËÃÖ€«€Ê€±€ì€Ð€Ê€é€Ê€€Éô
+ *  Ê¬¡Ê¥¿¥¹¥¯ŽÉÍý¥Ö¥í¥Ã¥¯¡€TCB¡Ë€ËÊ¬Î¥€·¡€TCBÆâ€ËÂÐ±þ€¹€ë¥¿¥¹¥¯œéŽü²œ
+ *  ¥Ö¥í¥Ã¥¯€ò»Ø€¹¥Ý¥€¥ó¥¿€òÆþ€ì€ë¡¥¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯Æâ€ËÂÐ±þ€¹€ë
+ *  TCB€ò»Ø€¹¥Ý¥€¥ó¥¿€òÆþ€ì€ëÊýË¡€ÎÊý€¬¡€RAM€ÎÀáÌó€ÎŽÑÅÀ€«€é€ÏËŸ€Þ€·€€
+ *  €¬¡€ŒÂ¹ÔžúÎš€¬°­€¯€Ê€ë€¿€á€ËºÎÍÑ€·€Æ€€€Ê€€¡¥ÂŸ€Î¥ª¥Ö¥ž¥§¥¯¥È€Ë€Ä€€
+ *  €Æ€âÆ±ÍÍ€Ë°·€Š¡¥
+ *
+ *  ¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯€Ë€Ï¡€DEF_TEX€ÇÄêµÁ€µ€ì€ë¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á
+ *  ¥ó€ËŽØ€¹€ëŸðÊó€âŽÞ€à¡¥
+ */
+typedef struct task_initialization_block {
+	ATR			tskatr;			/* ¥¿¥¹¥¯Â°À­ */
+	intptr_t	exinf;			/* ¥¿¥¹¥¯€Î³ÈÄ¥ŸðÊó */
+	TASK		task;			/* ¥¿¥¹¥¯€Îµ¯Æ°ÈÖÃÏ */
+	uint_t		ipriority;		/* ¥¿¥¹¥¯€Îµ¯Æ°»þÍ¥ÀèÅÙ¡ÊÆâÉôÉœžœ¡Ë */
+
+#ifdef USE_TSKINICTXB
+	TSKINICTXB	tskinictxb;		/* ¥¿¥¹¥¯œéŽü²œ¥³¥ó¥Æ¥­¥¹¥È¥Ö¥í¥Ã¥¯ */
+#else /* USE_TSKINICTXB */
+	SIZE		stksz;			/* ¥¹¥¿¥Ã¥¯ÎÎ°è€Î¥µ¥€¥º¡ÊŽÝ€á€¿ÃÍ¡Ë */
+	void		*stk;			/* ¥¹¥¿¥Ã¥¯ÎÎ°è€ÎÀèÆ¬ÈÖÃÏ */
+#endif /* USE_TSKINICTXB */
+
+	ATR			texatr;			/* ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óÂ°À­ */
+	TEXRTN		texrtn;			/* ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€Îµ¯Æ°ÈÖÃÏ */
+} TINIB;
+
+/*
+ *  TCBÃæ€Î¥Õ¥£¡Œ¥ë¥É€Î¥Ó¥Ã¥ÈÉý€ÎÄêµÁ
+ *
+ *  ¥×¥í¥»¥Ã¥µ€Ë€è€Ã€Æ€Ï¡€TCBÃæ€Î¥Õ¥£¡Œ¥ë¥É€Î¥Ó¥Ã¥ÈÉý€Ç¥á¥â¥ê»ÈÍÑÎÌ€È
+ *  À­Çœ€¬¥È¥ì¡Œ¥É¥ª¥Õ€Ë€Ê€ë€¿€á¡€¥¿¡Œ¥²¥Ã¥È°ÍÂž€Ë¥Õ¥£¡Œ¥ë¥É€Î¥Ó¥Ã¥ÈÉý
+ *  €òÊÑ¹¹€¹€ë€³€È€òµö€·€Æ€€€ë¡¥
+ */
+#ifndef TBIT_TCB_PRIORITY
+#define	TBIT_TCB_PRIORITY		8		/* priority¥Õ¥£¡Œ¥ë¥É€Î¥Ó¥Ã¥ÈÉý */
+#endif /* TBIT_TCB_PRIORITY */
+
+/*
+ *  ¥¿¥¹¥¯ŽÉÍý¥Ö¥í¥Ã¥¯¡ÊTCB¡Ë
+ *
+ *  ASP¥«¡Œ¥Í¥ë€Ç€Ï¡€¥¿¥¹¥¯€Îµ¯Æ°Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô€ÎºÇÂçÃÍ¡ÊTMAX_ACTCNT¡Ë
+ *  €Èµ¯Ÿ²Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô€ÎºÇÂçÃÍ¡ÊTMAX_WUPCNT¡Ë€Ï1€ËžÇÄê€µ€ì€Æ€€€ë
+ *  €¿€á¡€¥­¥å¡Œ¥€¥ó¥°€µ€ì€Æ€€€ë€«€É€Š€«€Î¿¿µ¶ÃÍ€ÇÉœžœ€¹€ë€³€È€¬€Ç€­€ë¡¥
+ *  €Þ€¿¡€¶¯À©ÂÔ€ÁÍ×µá¥Í¥¹¥È¿ô€ÎºÇÂçÃÍ¡ÊTMAX_SUSCNT¡Ë€¬1€ËžÇÄê€µ€ì€Æ€€
+ *  €ë€Î€Ç¡€¶¯À©ÂÔ€ÁÍ×µá¥Í¥¹¥È¿ô¡Êsuscnt¡Ë€ÏÉ¬Í×€Ê€€¡¥
+ *
+ *  TCB€Î€€€¯€Ä€«€Î¥Õ¥£¡Œ¥ë¥É€Ï¡€ÆÃÄê€Î¥¿¥¹¥¯ŸõÂÖ€Ç€Î€ßÍ­žú€ÊÃÍ€òÊÝ»ý€·¡€
+ *  €œ€ì°Ê³°€ÎŸì¹ç€ÏÃÍ€¬ÊÝŸÚ€µ€ì€Ê€€¡Ê€è€Ã€Æ¡€»²ŸÈ€·€Æ€Ï€Ê€é€Ê€€¡Ë¡¥³Æ
+ *  ¥Õ¥£¡Œ¥ë¥É€¬Í­žú€ÊÃÍ€òÊÝ»ý€¹€ëŸò·ï€ÏŒ¡€ÎÄÌ€ê¡¥
+ *
+ *  ¡ŠœéŽü²œžå€ÏŸï€ËÍ­žú¡§
+ *  		p_tinib¡€tstat¡€actque
+ *  ¡ŠµÙ»ßŸõÂÖ°Ê³°€ÇÍ­žú¡ÊµÙ»ßŸõÂÖ€Ç€ÏœéŽüÃÍ€Ë€Ê€Ã€Æ€€€ë¡Ë¡§
+ *  		priority¡€wupque¡€enatex¡€texptn¡€leftotm
+ *  ¡ŠÂÔ€ÁŸõÂÖ¡ÊÆóœÅÂÔ€ÁŸõÂÖ€òŽÞ€à¡Ë€ÇÍ­žú¡§
+ *  		p_winfo
+ *  ¡ŠŒÂ¹Ô€Ç€­€ëŸõÂÖ€ÈÆ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ËÂÐ€¹€ëÂÔ€ÁŸõÂÖ€ÇÍ­žú¡§
+ *  		task_queue
+ *  ¡ŠŒÂ¹Ô²ÄÇœŸõÂÖ¡€ÂÔ€ÁŸõÂÖ¡€¶¯À©ÂÔ€ÁŸõÂÖ¡€ÆóœÅÂÔ€ÁŸõÂÖ€ÇÍ­žú¡§
+ *  		tskctxb
+ */
+typedef struct task_control_block {
+	QUEUE			task_queue;		/* ¥¿¥¹¥¯¥­¥å¡Œ */
+	const TINIB		*p_tinib;		/* œéŽü²œ¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿ */
+
+#ifdef UINT8_MAX
+	uint8_t			tstat;			/* ¥¿¥¹¥¯ŸõÂÖ¡ÊÆâÉôÉœžœ¡Ë*/
+#else /* UINT8_MAX */
+	BIT_FIELD_UINT	tstat : 8;		/* ¥¿¥¹¥¯ŸõÂÖ¡ÊÆâÉôÉœžœ¡Ë*/
+#endif /* UINT8_MAX */
+#if defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8)
+	uint8_t			priority;		/* žœºß€ÎÍ¥ÀèÅÙ¡ÊÆâÉôÉœžœ¡Ë*/
+#else /* defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8) */
+	BIT_FIELD_UINT	priority : TBIT_TCB_PRIORITY;
+									/* žœºß€ÎÍ¥ÀèÅÙ¡ÊÆâÉôÉœžœ¡Ë*/
+#endif /* defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8) */
+	BIT_FIELD_BOOL	actque : 1;		/* µ¯Æ°Í×µá¥­¥å¡Œ¥€¥ó¥° */
+	BIT_FIELD_BOOL	wupque : 1;		/* µ¯Ÿ²Í×µá¥­¥å¡Œ¥€¥ó¥° */
+	BIT_FIELD_BOOL	enatex : 1;		/* ¥¿¥¹¥¯Îã³°œèÍýµö²ÄŸõÂÖ */
+
+	TEXPTN			texptn;			/* ÊÝÎ±Îã³°Í×°ø */
+	WINFO			*p_winfo;		/* ÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿ */
+#ifdef TOPPERS_SUPPORT_OVRHDR
+	OVRTIM			leftotm;		/* »Ä€ê¥×¥í¥»¥Ã¥µ»þŽÖ */
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+	TSKCTXB			tskctxb;		/* ¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È¥Ö¥í¥Ã¥¯ */
+} TCB;
+
+/*
+ *  ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯
+ *
+ *  ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯¡Ê¡á¥×¥í¥»¥Ã¥µ€¬¥³¥ó¥Æ¥­¥¹¥È€ò»ý€Ã€Æ€€€ë¥¿¥¹¥¯¡Ë€Î
+ *  TCB€ò»Ø€¹¥Ý¥€¥ó¥¿¡¥ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€¬€Ê€€Ÿì¹ç€ÏNULL€Ë€¹€ë¡¥
+ *
+ *  ¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎœèÍýÃæ€Ç¡€Œ«¥¿¥¹¥¯¡Ê¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€òžÆ€ÓœÐ€·€¿¥¿¥¹
+ *  ¥¯¡Ë€ËŽØ€¹€ëŸðÊó€ò»²ŸÈ€¹€ëŸì¹ç€Ïp_runtsk€ò»È€Š¡¥p_runtsk€òœñ€­Ž¹€š
+ *  €ë€Î€Ï¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã¡Ê€ÈœéŽü²œœèÍý¡Ë€Î€ß€Ç€¢€ë¡¥
+ */
+extern TCB	*p_runtsk;
+
+/*
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯
+ *
+ *  ŒÂ¹Ô€Ç€­€ë¥¿¥¹¥¯€ÎÃæ€ÇºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ÎTCB€ò»Ø€¹¥Ý¥€¥ó¥¿¡¥ŒÂ
+ *  ¹Ô€Ç€­€ë¥¿¥¹¥¯€¬€Ê€€Ÿì¹ç€ÏNULL€Ë€¹€ë¡¥
+ *
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ€Ê€É¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬ÊÝÎ±€µ€ì€Æ€€€ëŽÖ€Ïp_runtsk
+ *  €È°ìÃ×€·€Æ€€€ë€È€ÏžÂ€é€Ê€€¡¥
+ */
+extern TCB	*p_schedtsk;
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¡¿¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óµ¯Æ°Í×µá¥Õ¥é¥°
+ *
+ *  ³ä¹þ€ß¥Ï¥ó¥É¥é¡¿CPUÎã³°¥Ï¥ó¥É¥é€ÎœÐžýœèÍý€Ë¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á€Þ€¿€Ï
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€Îµ¯Æ°€òÍ×µá€¹€ë€³€È€òŒš€¹¥Õ¥é¥°¡¥
+ */
+extern bool_t	reqflg;
+
+/*
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ
+ *
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ€Ç€¢€ë€³€È€òŒš€¹¥Õ¥é¥°¡¥
+ */
+extern bool_t	ipmflg;
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ
+ *
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ€Ç€¢€ë€³€È€òŒš€¹¥Õ¥é¥°¡¥
+ */
+extern bool_t	disdsp;
+
+/*
+ *  ¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á²ÄÇœŸõÂÖ
+ *
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ€Ç€¢€ê¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ€Ç€¢€ë¡Ê¥Ç¥£
+ *  ¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ€Ç€Ê€€¡Ë€³€È€òŒš€¹¥Õ¥é¥°¡¥
+ */
+extern bool_t	dspflg;
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ
+ *
+ *  ¥ì¥Ç¥£¥­¥å¡Œ€Ï¡€ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Î¥¿¥¹¥¯€òŽÉÍý€¹€ë€¿€á€Î¥­¥å¡Œ€Ç€¢€ë¡¥
+ *  ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€âŽÉÍý€·€Æ€€€ë€¿€á¡€¥ì¥Ç¥£¡ÊŒÂ¹Ô²ÄÇœ¡Ë¥­¥å¡Œ€È€€€Š
+ *  ÌŸŸÎ€ÏÀµ³Î€Ç€Ï€Ê€€€¬¡€¥ì¥Ç¥£¥­¥å¡Œ€È€€€ŠÌŸŸÎ€¬ÄêÃå€·€Æ€€€ë€¿€á¡€€³
+ *  €ÎÌŸŸÎ€ÇžÆ€Ö€³€È€Ë€¹€ë¡¥
+ *
+ *  ¥ì¥Ç¥£¥­¥å¡Œ€Ï¡€Í¥ÀèÅÙ€Ž€È€Î¥¿¥¹¥¯¥­¥å¡Œ€Ç¹œÀ®€µ€ì€Æ€€€ë¡¥¥¿¥¹¥¯€Î
+ *  TCB€Ï¡€³ºÅö€¹€ëÍ¥ÀèÅÙ€Î¥­¥å¡Œ€ËÅÐÏ¿€µ€ì€ë¡¥
+ */
+extern QUEUE	ready_queue[TNUM_TPRI];
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ¥µ¡Œ¥Á€Î€¿€á€Î¥Ó¥Ã¥È¥Þ¥Ã¥×
+ *
+ *  ¥ì¥Ç¥£¥­¥å¡Œ€Î¥µ¡Œ¥Á€òžúÎš€è€¯¹Ô€Š€¿€á€Ë¡€Í¥ÀèÅÙ€Ž€È€Î¥¿¥¹¥¯¥­¥å¡Œ
+ *  €Ë¥¿¥¹¥¯€¬Æþ€Ã€Æ€€€ë€«€É€Š€«€òŒš€¹¥Ó¥Ã¥È¥Þ¥Ã¥×€òÍÑ°Õ€·€Æ€€€ë¡¥¥Ó¥Ã
+ *  ¥È¥Þ¥Ã¥×€ò»È€Š€³€È€Ç¡€¥á¥â¥ê¥¢¥¯¥»¥¹€Î²ó¿ô€òžº€é€¹€³€È€¬€Ç€­€ë€¬¡€
+ *  ¥Ó¥Ã¥ÈÁàºîÌ¿Îá€¬œŒŒÂ€·€Æ€€€Ê€€¥×¥í¥»¥Ã¥µ€Ç¡€Í¥ÀèÅÙ€ÎÃÊ³¬¿ô€¬Ÿ¯€Ê€€
+ *  Ÿì¹ç€Ë€Ï¡€¥Ó¥Ã¥È¥Þ¥Ã¥×Áàºî€Î¥ª¡Œ¥Ð¡Œ¥Ø¥Ã¥É€Î€¿€á€Ë¡€µÕ€ËžúÎš€¬Íî€Á
+ *  €ë²ÄÇœÀ­€â€¢€ë¡¥
+ *
+ *  Í¥ÀèÅÙ€¬16ÃÊ³¬€Ç€¢€ë€³€È€ò²ŸÄê€·€Æ€€€ë€¿€á¡€uint16_t·¿€È€·€Æ€€€ë¡¥
+ */
+extern uint16_t	ready_primap;
+
+/*
+ *  ¥¿¥¹¥¯ID€ÎºÇÂçÃÍ¡Êkernel_cfg.c¡Ë
+ */
+extern const ID	tmax_tskid;
+
+/*
+ *  ¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern const TINIB	tinib_table[];
+
+/*
+ *  ¥¿¥¹¥¯ÀžÀ®œçœø¥Æ¡Œ¥Ö¥ë¡Êkernel_cfg.c¡Ë
+ */
+extern const ID	torder_table[];
+
+/*
+ *  TCB€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern TCB	tcb_table[];
+
+/*
+ *  ¥¿¥¹¥¯€Î¿ô
+ */
+#define tnum_tsk	((uint_t)(tmax_tskid - TMIN_TSKID + 1))
+
+/*
+ *  ¥¿¥¹¥¯ID€«€éTCB€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#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€«€é¥¿¥¹¥¯ID€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#define	TSKID(p_tcb)	((ID)(((p_tcb) - tcb_table) + TMIN_TSKID))
+
+/*
+ *  ¥¿¥¹¥¯ŽÉÍý¥â¥ž¥å¡Œ¥ë€ÎœéŽü²œ
+ */
+extern void	initialize_task(void);
+
+/*
+ *  ºÇ¹âÍ¥Àèœç°Ì¥¿¥¹¥¯€Î¥µ¡Œ¥Á
+ *
+ *  ¥ì¥Ç¥£¥­¥å¡ŒÃæ€ÎºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¥µ¡Œ¥Á€·¡€€œ€ÎTCB€Ø€Î¥Ý¥€¥ó¥¿
+ *  €òÊÖ€¹¡¥¥ì¥Ç¥£¥­¥å¡Œ€¬¶õ€ÎŸì¹ç€Ë€Ï¡€€³€ÎŽØ¿ô€òžÆ€ÓœÐ€·€Æ€Ï€Ê€é€Ê€€¡¥
+ */
+extern TCB	*search_schedtsk(void);
+
+/*
+ *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ò¥ì¥Ç¥£¥­¥å¡Œ€ËÁÞÆþ€¹€ë¡¥¥ì¥Ç¥£¥­¥å¡Œ€ËÁÞÆþ
+ *  €·€¿¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€¬¡€ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€è€ê€â¹â€€Ÿì¹ç€Ï¡€
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€·¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ€Ç€¢€ì€Ðtrue€òÊÖ
+ *  €¹¡¥€œ€Š€Ç€Ê€€Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥
+ */
+extern bool_t	make_runnable(TCB *p_tcb);
+
+/*
+ *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€«€éÂŸ€ÎŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ò¥ì¥Ç¥£¥­¥å¡Œ€«€éºïœü€¹€ë¡¥p_tcb€Ç»ØÄê€·€¿
+ *  ¥¿¥¹¥¯€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€Ç€¢€Ã€¿Ÿì¹ç€Ë€Ï¡€ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯
+ *  €òÀßÄê€·€Ê€ª€·¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ€Ç€¢€ì€Ðtrue€òÊÖ€¹¡¥€œ€Š€Ç€Ê€€
+ *  Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥¥¿¥¹¥¯€ÎŸõÂÖ€Ï¹¹¿·€·€Ê€€¡¥
+ */
+extern bool_t	make_non_runnable(TCB *p_tcb);
+
+/*
+ *  µÙ»ßŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ÎŸõÂÖ€òµÙ»ßŸõÂÖ€È€¹€ë¡¥€Þ€¿¡€¥¿¥¹¥¯€Îµ¯Æ°
+ *  »þ€ËœéŽü²œ€¹€Ù€­ÊÑ¿ô€ÎœéŽü²œ€È¡€¥¿¥¹¥¯µ¯Æ°€Î€¿€á€Î¥³¥ó¥Æ¥­¥¹¥È€òÀß
+ *  Äê€¹€ë¡¥
+ */
+extern void	make_dormant(TCB *p_tcb);
+
+/*
+ *  µÙ»ßŸõÂÖ€«€éŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ÎŸõÂÖ€òµÙ»ßŸõÂÖ€«€éŒÂ¹Ô€Ç€­€ëŸõÂÖ€È€¹€ë¡¥
+ *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€ËÁ«°Ü€·€¿¥¿¥¹¥¯€Ø€Î¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬É¬Í×€ÊŸì¹ç€Ïtrue¡€
+ *  €œ€Š€Ç€Ê€€Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥
+ */
+extern bool_t	make_active(TCB *p_tcb);
+
+/*
+ *  ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€ÎÊÑ¹¹
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€ònewpri¡ÊÆâÉôÉœžœ¡Ë€ËÊÑ¹¹€¹€ë¡¥€Þ€¿¡€
+ *  É¬Í×€ÊŸì¹ç€Ë€ÏºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€·¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ€Ç
+ *  €¢€ì€Ðtrue€òÊÖ€¹¡¥€œ€Š€Ç€Ê€€Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥
+ */
+extern bool_t	change_priority(TCB *p_tcb, uint_t newpri);
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ€Î²óÅŸ
+ *
+ *  ¥ì¥Ç¥£¥­¥å¡ŒÃæ€Î¡€pri€Ç»ØÄê€µ€ì€ëÍ¥ÀèÅÙ€Î¥¿¥¹¥¯¥­¥å¡Œ€ò²óÅŸ€µ€»€ë¡¥
+ *  €Þ€¿¡€É¬Í×€ÊŸì¹ç€Ë€ÏºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€òÊÑ¹¹€·¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬ÊÝ
+ *  Î±€µ€ì€Æ€€€Ê€±€ì€Ðtrue€òÊÖ€¹¡¥€œ€Š€Ç€Ê€€Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥
+ */
+extern bool_t	rotate_ready_queue(uint_t pri);
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎžÆœÐ€·
+ *
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€òžÆ€ÓœÐ€¹¡¥žÆ€ÓœÐ€¹Á°€Ë¡€ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€Î
+ *  ÊÝÎ±Îã³°Í×°ø€ò¥¯¥ê¥¢€·¡€¥¿¥¹¥¯Îã³°œèÍý¶Ø»ßŸõÂÖ€Ë€·¡€CPU¥í¥Ã¥¯€ò²ò
+ *  œü€¹€ë¡¥
+ *
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€«€éÌá€ë€È¡€€Þ€ºCPU¥í¥Ã¥¯ŸõÂÖ€ËÌá€·¡€€œ€ÎŽÖ
+ *  €ËÊÝÎ±Îã³°Í×°ø€¬0€Ç€Ê€¯€Ê€Ã€Æ€€€ì€Ð¡€ºÆ€Ó¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ò
+ *  žÆ€ÓœÐ€¹¡¥ÊÝÎ±Îã³°Í×°ø€¬0€ÎŸì¹ç€Ë€Ï¡€Îã³°œèÍýµö²ÄŸõÂÖ€Ë€·€ÆŽØ¿ô€«
+ *  €é¥ê¥¿¡Œ¥ó€¹€ë¡¥
+ *
+ *  €³€ÎŽØ¿ô€Ï¡€ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€¬¡€¥¿¥¹¥¯Îã³°œèÍýµö²ÄŸõÂÖ¡Êenatex€¬
+ *  true¡Ë€Ç¡€ÊÝÎ±Îã³°Í×°ø€¬0€Ç€Ê€€¡Êtexptn€¬0€Ç€Ê€€¡ËŸì¹ç€ËžÆ€ÓœÐ€¹€³
+ *  €È€òÁÛÄê€·€Æ€€€ë¡¥€³€ÎŽØ¿ô€Ï¡€CPU¥í¥Ã¥¯ŸõÂÖ€ÇžÆ€ÓœÐ€µ€Ê€±€ì€Ð€Ê€é
+ *  €Ê€€¡¥
+ */
+extern void	call_texrtn(void);
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€Îµ¯Æ°
+ *
+ *  ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€¬¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€Îµ¯Æ°Ÿò·ï€òËþ€¿€·€Æ€€€ì€Ð¡€
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€òžÆ€ÓœÐ€¹¡¥CPUÎã³°œèÍý¥ë¡Œ¥Á¥ó€òžÆ€ÓœÐ€¹»þ
+ *  €Ï¡€°ì»þÅª€ËCPU¥í¥Ã¥¯€ò²òœü€¹€ë¡¥
+ *
+ *  €³€ÎŽØ¿ô€Ï¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã€ä³ä¹þ€ß¥Ï¥ó¥É¥é¡¿CPUÎã³°¥Ï¥ó¥É¥é€ÎœÐžý
+ *  œèÍý€«€éžÆ€ÓœÐ€µ€ì€ë€³€È€òÁÛÄê€·€Æ€€€ë¡¥€³€ÎŽØ¿ô€Ï¡€CPU¥í¥Ã¥¯ŸõÂÖ
+ *  €ÇžÆ€ÓœÐ€µ€Ê€±€ì€Ð€Ê€é€Ê€€¡¥
+ *
+ *  ŒÂ¹ÔžúÎš€òŸå€²€ë€¿€á€Ë¡€€³€ÎŽØ¿ô€ò¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€Çµ­œÒ€·€Æ€â€è€€¡¥
+ *  €œ€ÎŸì¹ç€Ë€Ï¡€OMIT_CALLTEX€ò¥Þ¥¯¥íÄêµÁ€¹€ë¡¥
+ */
+extern void	calltex(void);
+
+#endif /* TOPPERS_TASK_H */
Index: /extension/ovrhdr/kernel/task_manage.c
===================================================================
--- /extension/ovrhdr/kernel/task_manage.c	(revision 7)
+++ /extension/ovrhdr/kernel/task_manage.c	(revision 7)
@@ -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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥¿¥¹¥¯ŽÉÍýµ¡Çœ
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+#include "overrun.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯€Îµ¯Æ°
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯€Îµ¯Æ°¡ÊÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯µ¯Æ°Í×µá€Î¥­¥ã¥ó¥»¥ë
+ */
+#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 */
+
+/*
+ *  Œ«¥¿¥¹¥¯€ÎœªÎ»
+ */
+#ifdef TOPPERS_ext_tsk
+
+ER
+ext_tsk(void)
+{
+	ER		ercd;
+
+	LOG_EXT_TSK_ENTER();
+	CHECK_TSKCTX();
+
+	if (t_sense_lock()) {
+		/*
+		 *  CPU¥í¥Ã¥¯ŸõÂÖ€Çext_tsk€¬žÆ€Ð€ì€¿Ÿì¹ç€Ï¡€CPU¥í¥Ã¥¯€ò²òœü€·
+		 *  €Æ€«€é¥¿¥¹¥¯€òœªÎ»€¹€ë¡¥ŒÂÁõŸå€Ï¡€¥µ¡Œ¥Ó¥¹¥³¡Œ¥ëÆâ€Ç€ÎCPU
+		 *  ¥í¥Ã¥¯€òŸÊÎ¬€¹€ì€Ð€è€€€À€±¡¥
+		 */
+	}
+	else {
+		t_lock_cpu();
+	}
+	if (disdsp) {
+		/*
+		 *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ€Çext_tsk€¬žÆ€Ð€ì€¿Ÿì¹ç€Ï¡€¥Ç¥£¥¹¥Ñ¥Ã
+		 *  ¥Áµö²ÄŸõÂÖ€Ë€·€Æ€«€é¥¿¥¹¥¯€òœªÎ»€¹€ë¡¥
+		 */
+		disdsp = false;
+	}
+	if (!ipmflg) {
+		/*
+		 *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡ÊIPM¡Ë€¬TIPM_ENAALL°Ê³°€ÎŸõÂÖ€Çext_tsk
+		 *  €¬žÆ€Ð€ì€¿Ÿì¹ç€Ï¡€IPM€òTIPM_ENAALL€Ë€·€Æ€«€é¥¿¥¹¥¯€òœªÎ»€¹
+		 *  €ë¡¥
+		 */
+		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 */
+
+/*
+ *  ¥¿¥¹¥¯€Î¶¯À©œªÎ»
+ */
+#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€ÏŒ«¥¿¥¹¥¯€Ç€Ê€€€¿€á¡€¡Ê¥·¥ó¥°¥ë¥×¥í¥»¥Ã¥µ€Ç€Ï¡ËŒÂ
+			 *  ¹ÔŸõÂÖ€Ç€Ê€¯¡€make_non_runnable(p_tcb)€Ç¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã
+			 *  ¥Á€¬É¬Í×€Ë€Ê€ë€³€È€Ï€Ê€€¡¥
+			 */
+			(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 */
+
+/*
+ *  ¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ€ÎÊÑ¹¹
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯Í¥ÀèÅÙ€Î»²ŸÈ
+ */
+#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 */
+
+/*
+ *  Œ«¥¿¥¹¥¯€Î³ÈÄ¥ŸðÊó€Î»²ŸÈ
+ */
+#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: /extension/ovrhdr/sample/sample1.c
===================================================================
--- /extension/ovrhdr/sample/sample1.c	(revision 7)
+++ /extension/ovrhdr/sample/sample1.c	(revision 7)
@@ -0,0 +1,585 @@
+/*
+ *  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-2012 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  $Id$
+ */
+
+/* 
+ *  ¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à(1)€ÎËÜÂÎ
+ *
+ *  ASP¥«¡Œ¥Í¥ë€ÎŽðËÜÅª€ÊÆ°ºî€ò³ÎÇ§€¹€ë€¿€á€Î¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à¡¥
+ *
+ *  ¥×¥í¥°¥é¥à€Î³µÍ×:
+ *
+ *  ¥æ¡Œ¥¶¥€¥ó¥¿¥Õ¥§¡Œ¥¹€òŒõ€±»ý€Ä¥á¥€¥ó¥¿¥¹¥¯¡Ê¥¿¥¹¥¯ID: MAIN_TASK¡€Í¥
+ *  ÀèÅÙ: MAIN_PRIORITY¡Ë€È¡€3€Ä€ÎÊÂ¹ÔŒÂ¹Ô€µ€ì€ë¥¿¥¹¥¯¡Ê¥¿¥¹¥¯ID:
+ *  TASK1¡ÁTASK3¡€œéŽüÍ¥ÀèÅÙ: MID_PRIORITY¡Ë€Ç¹œÀ®€µ€ì€ë¡¥€Þ€¿¡€µ¯Æ°Œþ
+ *  Žü€¬2ÉÃ€ÎŒþŽü¥Ï¥ó¥É¥é¡ÊŒþŽü¥Ï¥ó¥É¥éID: CYCHDR1¡Ë€òÍÑ€€€ë¡¥
+ *
+ *  ÊÂ¹ÔŒÂ¹Ô€µ€ì€ë¥¿¥¹¥¯€Ï¡€task_loop²ó¶õ¥ë¡Œ¥×€òŒÂ¹Ô€¹€ëÅÙ€Ë¡€¥¿¥¹¥¯€¬
+ *  ŒÂ¹ÔÃæ€Ç€¢€ë€³€È€ò€¢€é€ï€¹¥á¥Ã¥»¡Œ¥ž€òÉœŒš€¹€ë¡¥¶õ¥ë¡Œ¥×€òŒÂ¹Ô€¹€ë
+ *  €Î€Ï¡€¶õ¥ë¡Œ¥×€Ê€·€Ç¥á¥Ã¥»¡Œ¥ž€òœÐÎÏ€¹€ë€È¡€Â¿ÎÌ€Î¥á¥Ã¥»¡Œ¥ž€¬œÐÎÏ
+ *  €µ€ì¡€¥×¥í¥°¥é¥à€ÎÆ°ºî€¬³ÎÇ§€·€º€é€¯€Ê€ë€¿€á€Ç€¢€ë¡¥€Þ€¿¡€ÄãÂ®€Ê¥·
+ *  ¥ê¥¢¥ë¥Ý¡Œ¥È€òÍÑ€€€Æ¥á¥Ã¥»¡Œ¥ž€òœÐÎÏ€¹€ëŸì¹ç€Ë¡€€¹€Ù€Æ€Î¥á¥Ã¥»¡Œ¥ž
+ *  €¬œÐÎÏ€Ç€­€ë€è€Š€Ë¡€¥á¥Ã¥»¡Œ¥ž€ÎÎÌ€òÀ©žÂ€¹€ë€È€€€ŠÍýÍ³€â€¢€ë¡¥
+ *
+ *  ŒþŽü¥Ï¥ó¥É¥é€Ï¡€»°€Ä€ÎÍ¥ÀèÅÙ¡ÊHIGH_PRIORITY¡€MID_PRIORITY¡€
+ *  LOW_PRIORITY¡Ë€Î¥ì¥Ç¥£¥­¥å¡Œ€ò²óÅŸ€µ€»€ë¡¥¥×¥í¥°¥é¥à€Îµ¯Æ°ÄŸžå€Ï¡€
+ *  ŒþŽü¥Ï¥ó¥É¥é€ÏÄä»ßŸõÂÖ€Ë€Ê€Ã€Æ€€€ë¡¥
+ *
+ *  ¥á¥€¥ó¥¿¥¹¥¯€Ï¡€¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€«€é€ÎÊž»úÆþÎÏ€ò¹Ô€€¡ÊÊž»úÆþÎÏ€ò
+ *  ÂÔ€Ã€Æ€€€ëŽÖ€Ï¡€ÊÂ¹ÔŒÂ¹Ô€µ€ì€ë¥¿¥¹¥¯€¬ŒÂ¹Ô€µ€ì€Æ€€€ë¡Ë¡€ÆþÎÏ€µ€ì€¿
+ *  Êž»ú€ËÂÐ±þ€·€¿œèÍý€òŒÂ¹Ô€¹€ë¡¥ÆþÎÏ€µ€ì€¿Êž»ú€ÈœèÍý€ÎŽØ·ž€ÏŒ¡€ÎÄÌ€ê¡¥
+ *  Control-C€Þ€¿€Ï'Q'€¬ÆþÎÏ€µ€ì€ë€È¡€¥×¥í¥°¥é¥à€òœªÎ»€¹€ë¡¥
+ *
+ *  '1' : ÂÐŸÝ¥¿¥¹¥¯€òTASK1€ËÀÚ€êŽ¹€š€ë¡ÊœéŽüÀßÄê¡Ë¡¥
+ *  '2' : ÂÐŸÝ¥¿¥¹¥¯€òTASK2€ËÀÚ€êŽ¹€š€ë¡¥
+ *  '3' : ÂÐŸÝ¥¿¥¹¥¯€òTASK3€ËÀÚ€êŽ¹€š€ë¡¥
+ *  'a' : ÂÐŸÝ¥¿¥¹¥¯€òact_tsk€Ë€è€êµ¯Æ°€¹€ë¡¥
+ *  'A' : ÂÐŸÝ¥¿¥¹¥¯€ËÂÐ€¹€ëµ¯Æ°Í×µá€òcan_act€Ë€è€ê¥­¥ã¥ó¥»¥ë€¹€ë¡¥
+ *  'e' : ÂÐŸÝ¥¿¥¹¥¯€Ëext_tsk€òžÆ€ÓœÐ€µ€»¡€œªÎ»€µ€»€ë¡¥
+ *  't' : ÂÐŸÝ¥¿¥¹¥¯€òter_tsk€Ë€è€ê¶¯À©œªÎ»€¹€ë¡¥
+ *  '>' : ÂÐŸÝ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€òHIGH_PRIORITY€Ë€¹€ë¡¥
+ *  '=' : ÂÐŸÝ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€òMID_PRIORITY€Ë€¹€ë¡¥
+ *  '<' : ÂÐŸÝ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€òLOW_PRIORITY€Ë€¹€ë¡¥
+ *  'G' : ÂÐŸÝ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€òget_pri€ÇÆÉ€ßœÐ€¹¡¥
+ *  's' : ÂÐŸÝ¥¿¥¹¥¯€Ëslp_tsk€òžÆ€ÓœÐ€µ€»¡€µ¯Ÿ²ÂÔ€Á€Ë€µ€»€ë¡¥
+ *  'S' : ÂÐŸÝ¥¿¥¹¥¯€Ëtslp_tsk(10ÉÃ)€òžÆ€ÓœÐ€µ€»¡€µ¯Ÿ²ÂÔ€Á€Ë€µ€»€ë¡¥
+ *  'w' : ÂÐŸÝ¥¿¥¹¥¯€òwup_tsk€Ë€è€êµ¯Ÿ²€¹€ë¡¥
+ *  'W' : ÂÐŸÝ¥¿¥¹¥¯€ËÂÐ€¹€ëµ¯Ÿ²Í×µá€òcan_wup€Ë€è€ê¥­¥ã¥ó¥»¥ë€¹€ë¡¥
+ *  'l' : ÂÐŸÝ¥¿¥¹¥¯€òrel_wai€Ë€è€ê¶¯À©Åª€ËÂÔ€Á²òœü€Ë€¹€ë¡¥
+ *  'u' : ÂÐŸÝ¥¿¥¹¥¯€òsus_tsk€Ë€è€ê¶¯À©ÂÔ€ÁŸõÂÖ€Ë€¹€ë¡¥
+ *  'm' : ÂÐŸÝ¥¿¥¹¥¯€Î¶¯À©ÂÔ€ÁŸõÂÖ€òrsm_tsk€Ë€è€ê²òœü€¹€ë¡¥
+ *  'd' : ÂÐŸÝ¥¿¥¹¥¯€Ëdly_tsk(10ÉÃ)€òžÆ€ÓœÐ€µ€»¡€»þŽÖ·Ð²áÂÔ€Á€Ë€µ€»€ë¡¥
+ *  'x' : ÂÐŸÝ¥¿¥¹¥¯€ËÎã³°¥Ñ¥¿¡Œ¥ó0x0001€ÎÎã³°œèÍý€òÍ×µá€¹€ë¡¥
+ *  'X' : ÂÐŸÝ¥¿¥¹¥¯€ËÎã³°¥Ñ¥¿¡Œ¥ó0x0002€ÎÎã³°œèÍý€òÍ×µá€¹€ë¡¥
+ *  'y' : ÂÐŸÝ¥¿¥¹¥¯€Ëdis_tex€òžÆ€ÓœÐ€µ€»¡€¥¿¥¹¥¯Îã³°€ò¶Ø»ß€¹€ë¡¥
+ *  'Y' : ÂÐŸÝ¥¿¥¹¥¯€Ëena_tex€òžÆ€ÓœÐ€µ€»¡€¥¿¥¹¥¯Îã³°€òµö²Ä€¹€ë¡¥
+ *  'r' : 3€Ä€ÎÍ¥ÀèÅÙ¡ÊHIGH_PRIORITY¡€MID_PRIORITY¡€LOW_PRIORITY¡Ë€Î¥ì
+ *        ¥Ç¥£¥­¥å¡Œ€ò²óÅŸ€µ€»€ë¡¥
+ *  'c' : ŒþŽü¥Ï¥ó¥É¥é€òÆ°ºî³«»Ï€µ€»€ë¡¥
+ *  'C' : ŒþŽü¥Ï¥ó¥É¥é€òÆ°ºîÄä»ß€µ€»€ë¡¥
+ *  'b' : ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ò5ÉÃžå€Ëµ¯Æ°€¹€ë€è€ŠÆ°ºî³«»Ï€µ€»€ë¡¥
+ *  'B' : ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€òÆ°ºîÄä»ß€µ€»€ë¡¥
+ *  'z' : ÂÐŸÝ¥¿¥¹¥¯€ËCPUÎã³°€òÈ¯Àž€µ€»€ë¡Ê¥¿¥¹¥¯€òœªÎ»€µ€»€ë¡Ë¡¥
+ *  'Z' : ÂÐŸÝ¥¿¥¹¥¯€ËCPU¥í¥Ã¥¯ŸõÂÖ€ÇCPUÎã³°€òÈ¯Àž€µ€»€ë¡Ê¥×¥í¥°¥é¥à€ò
+ *        œªÎ»€¹€ë¡Ë¡¥
+ *  'V' : get_utm€ÇÀ­ÇœÉŸ²ÁÍÑ¥·¥¹¥Æ¥à»þ¹ï€ò2²óÆÉ€à¡¥
+ *  'o' : ÂÐŸÝ¥¿¥¹¥¯€ËÂÐ€·€Æ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€òÆ°ºî³«»Ï€µ€»€ë
+ *  'O' : ÂÐŸÝ¥¿¥¹¥¯€ËÂÐ€·€Æ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€òÆ°ºîÄä»ß€µ€»€ë
+ *  'v' : È¯¹Ô€·€¿¥·¥¹¥Æ¥à¥³¡Œ¥ë€òÉœŒš€¹€ë¡Ê¥Ç¥Õ¥©¥ë¥È¡Ë¡¥
+ *  'q' : È¯¹Ô€·€¿¥·¥¹¥Æ¥à¥³¡Œ¥ë€òÉœŒš€·€Ê€€¡¥
+ */
+
+#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"
+
+/*
+ *  ¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€Î¥š¥é¡Œ€Î¥í¥°œÐÎÏ
+ */
+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))
+
+/*
+ *  ÊÂ¹ÔŒÂ¹Ô€µ€ì€ë¥¿¥¹¥¯€Ø€Î¥á¥Ã¥»¡Œ¥žÎÎ°è
+ */
+char	message[3];
+
+/*
+ *  ¥ë¡Œ¥×²ó¿ô
+ */
+ulong_t	task_loop;		/* ¥¿¥¹¥¯Æâ€Ç€Î¥ë¡Œ¥×²ó¿ô */
+ulong_t	tex_loop;		/* Îã³°œèÍý¥ë¡Œ¥Á¥óÆâ€Ç€Î¥ë¡Œ¥×²ó¿ô */
+
+/*
+ *  ÊÂ¹ÔŒÂ¹Ô€µ€ì€ë¥¿¥¹¥¯
+ */
+void task(intptr_t exinf)
+{
+	volatile ulong_t	i;
+	int_t		n = 0;
+	int_t		tskno = (int_t) exinf;
+	const char	*graph[] = { "|    ", "  +  ", "    *" };
+	char		c;
+#ifdef TOPPERS_SUPPORT_OVRHDR
+	T_ROVR		pk_rovr;
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+
+	SVC_PERROR(ena_tex());
+	while (true) {
+#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;
+		}
+	}
+}
+
+/*
+ *  ÊÂ¹Ô€·€ÆŒÂ¹Ô€µ€ì€ë¥¿¥¹¥¯ÍÑ€Î¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó
+ */
+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Îã³°¥Ï¥ó¥É¥é
+ */
+#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 */
+
+/*
+ *  ŒþŽü¥Ï¥ó¥É¥é
+ *
+ *  HIGH_PRIORITY¡€MID_PRIORITY¡€LOW_PRIORITY €Î³ÆÍ¥ÀèÅÙ€Î¥ì¥Ç¥£¥­¥å¡Œ
+ *  €ò²óÅŸ€µ€»€ë¡¥
+ */
+void cyclic_handler(intptr_t exinf)
+{
+	SVC_PERROR(irot_rdq(HIGH_PRIORITY));
+	SVC_PERROR(irot_rdq(MID_PRIORITY));
+	SVC_PERROR(irot_rdq(LOW_PRIORITY));
+}
+
+/*
+ *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é
+ *
+ *  HIGH_PRIORITY¡€MID_PRIORITY¡€LOW_PRIORITY €Î³ÆÍ¥ÀèÅÙ€Î¥ì¥Ç¥£¥­¥å¡Œ
+ *  €ò²óÅŸ€µ€»€ë¡¥
+ */
+void alarm_handler(intptr_t exinf)
+{
+	SVC_PERROR(irot_rdq(HIGH_PRIORITY));
+	SVC_PERROR(irot_rdq(MID_PRIORITY));
+	SVC_PERROR(irot_rdq(LOW_PRIORITY));
+}
+
+/*
+ *  ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é
+ */
+#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 */
+
+/*
+ *  ¥á¥€¥ó¥¿¥¹¥¯
+ */
+void main_task(intptr_t exinf)
+{
+	char	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);
+
+	/*
+	 *  ¥·¥ê¥¢¥ë¥Ý¡Œ¥È€ÎœéŽü²œ
+	 *
+	 *  ¥·¥¹¥Æ¥à¥í¥°¥¿¥¹¥¯€ÈÆ±€ž¥·¥ê¥¢¥ë¥Ý¡Œ¥È€ò»È€ŠŸì¹ç€Ê€É¡€¥·¥ê¥¢¥ë
+	 *  ¥Ý¡Œ¥È€¬¥ª¡Œ¥×¥óºÑ€ß€ÎŸì¹ç€Ë€Ï€³€³€ÇE_OBJ¥š¥é¡Œ€Ë€Ê€ë€¬¡€»ÙŸã€Ï
+	 *  €Ê€€¡¥
+	 */
+	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)));
+
+	/*
+ 	 *  ¥ë¡Œ¥×²ó¿ô€ÎÀßÄê
+	 *
+	 *  ÊÂ¹ÔŒÂ¹Ô€µ€ì€ë¥¿¥¹¥¯Æâ€Ç€Î¶õ¥ë¡Œ¥×€Î²ó¿ô¡Êtask_loop¡Ë€Ï¡€¶õ¥ë¡Œ
+	 *  ¥×€ÎŒÂ¹Ô»þŽÖ€¬Ìó0.4ÉÃ€Ë€Ê€ë€è€Š€ËÀßÄê€¹€ë¡¥€³€ÎÀßÄê€Î€¿€á€Ë¡€
+	 *  LOOP_REF²ó€Î¶õ¥ë¡Œ¥×€ÎŒÂ¹Ô»þŽÖ€ò¡€€œ€ÎÁ°žå€Çget_tim€òžÆ€Ö€³€È€Ç
+	 *  Â¬Äê€·¡€€œ€ÎÂ¬Äê·ë²Ì€«€é¶õ¥ë¡Œ¥×€ÎŒÂ¹Ô»þŽÖ€¬0.4ÉÃ€Ë€Ê€ë¥ë¡Œ¥×²ó
+	 *  ¿ô€òµá€á¡€task_loop€ËÀßÄê€¹€ë¡¥
+	 *
+	 *  LOOP_REF€Ï¡€¥Ç¥Õ¥©¥ë¥È€Ç€Ï1,000,000€ËÀßÄê€·€Æ€€€ë€¬¡€ÁÛÄê€·€¿€è
+	 *  €êÃÙ€€¥×¥í¥»¥Ã¥µ€Ç€Ï¡€¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à€ÎŒÂ¹Ô³«»Ï€Ë»þŽÖ€¬€«€«
+	 *  €ê€¹€®€ë€È€€€ŠÌäÂê€òÀž€ž€ë¡¥µÕ€ËÁÛÄê€·€¿€è€êÂ®€€¥×¥í¥»¥Ã¥µ€Ç€Ï¡€
+	 *  LOOP_REF²ó€Î¶õ¥ë¡Œ¥×€ÎŒÂ¹Ô»þŽÖ€¬Ã»€¯€Ê€ê¡€task_loop€ËÀßÄê€¹€ëÃÍ
+	 *  €Îžíº¹€¬Âç€­€¯€Ê€ë€È€€€ŠÌäÂê€¬€¢€ë¡¥
+	 *
+	 *  €œ€³€Ç¡€€œ€Î€è€Š€Ê¥¿¡Œ¥²¥Ã¥È€Ç€Ï¡€target_test.h€Ç¡€LOOP_REF€òÅ¬
+	 *  ÀÚ€ÊÃÍ€ËÄêµÁ€¹€ë€Î€¬ËŸ€Þ€·€€¡¥
+	 *
+	 *  €Þ€¿¡€task_loop€ÎÃÍ€òžÇÄê€·€¿€€Ÿì¹ç€Ë€Ï¡€€œ€ÎÃÍ€òTASK_LOOP€Ë¥Þ
+	 *  ¥¯¥íÄêµÁ€¹€ë¡¥TASK_LOOP€¬¥Þ¥¯¥íÄêµÁ€µ€ì€Æ€€€ëŸì¹ç¡€Ÿåµ­€ÎÂ¬Äê€ò
+	 *  ¹Ô€ï€º€Ë¡€TASK_LOOP€ËÄêµÁ€µ€ì€¿ÃÍ€ò¶õ¥ë¡Œ¥×€Î²ó¿ô€È€¹€ë¡¥
+	 *
+	 * ¥¿¡Œ¥²¥Ã¥È€Ë€è€Ã€Æ€Ï¡€¶õ¥ë¡Œ¥×€ÎŒÂ¹Ô»þŽÖ€Î1²óÌÜ€ÎÂ¬Äê€Ç¡€ËÜÍè€è
+	 * €ê€âÄ¹€á€Ë€Ê€ë€â€Î€¬€¢€ë¡¥€³€Î€è€Š€Ê¥¿¡Œ¥²¥Ã¥È€Ç€Ï¡€MEASURE_TWICE
+	 * €ò¥Þ¥¯¥íÄêµÁ€¹€ë€³€È€Ç¡€1²óÌÜ€ÎÂ¬Äê·ë²Ì€òŒÎ€Æ€Æ¡€2²óÌÜ€ÎÂ¬Äê·ë²Ì
+	 * €ò»È€Š¡¥
+	 *
+	 *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óÆâ€Ç€Î¶õ¥ë¡Œ¥×€Î²ó¿ô¡Êtex_loop¡Ë€Ï¡€
+	 *  task_loop€Î4Ê¬€Î1€ÎÃÍ¡Ê¶õ¥ë¡Œ¥×€ÎŒÂ¹Ô»þŽÖ€¬0.1ÉÃ€Ë€Ê€ë¥ë¡Œ¥×²ó
+	 *  ¿ô¡Ë€ËÀßÄê€¹€ë¡¥
+	 */
+#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 / 4;
+
+	/*
+ 	 *  ¥¿¥¹¥¯€Îµ¯Æ°
+	 */
+	SVC_PERROR(act_tsk(TASK1));
+	SVC_PERROR(act_tsk(TASK2));
+	SVC_PERROR(act_tsk(TASK3));
+
+	/*
+ 	 *  ¥á¥€¥ó¥ë¡Œ¥×
+	 */
+	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: /extension/ovrhdr/sample/sample1.cfg
===================================================================
--- /extension/ovrhdr/sample/sample1.cfg	(revision 7)
+++ /extension/ovrhdr/sample/sample1.cfg	(revision 7)
@@ -0,0 +1,29 @@
+/*
+ *  $Id$
+ */
+
+/*
+ *  ¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à(1)€Î¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+ */
+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 TOPPERS_SUPPORT_OVRHDR
+DEF_OVR({ TA_NULL, overrun_handler });
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+#ifdef CPUEXC1
+DEF_EXC(CPUEXC1, { TA_NULL, cpuexc_handler });
+#endif /* CPUEXC1 */
Index: /extension/ovrhdr/sample/sample1.h
===================================================================
--- /extension/ovrhdr/sample/sample1.h	(revision 7)
+++ /extension/ovrhdr/sample/sample1.h	(revision 7)
@@ -0,0 +1,96 @@
+/*
+ *  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
+ *
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ *
+ *  $Id$
+ */
+
+/*
+ *		¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à(1)€Î¥Ø¥Ã¥À¥Õ¥¡¥€¥ë
+ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎÄêµÁ
+ */
+#include "target_test.h"
+
+/*
+ *  ³Æ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€ÎÄêµÁ
+ */
+
+#define MAIN_PRIORITY	5		/* ¥á¥€¥ó¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ */
+								/* HIGH_PRIORITY€è€ê¹â€¯€¹€ë€³€È */
+
+#define HIGH_PRIORITY	9		/* ÊÂ¹ÔŒÂ¹Ô€µ€ì€ë¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ */
+#define MID_PRIORITY	10
+#define LOW_PRIORITY	11
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È€Ë°ÍÂž€¹€ë²ÄÇœÀ­€Î€¢€ëÄê¿ô€ÎÄêµÁ
+ */
+
+#ifndef TASK_PORTID
+#define	TASK_PORTID		1			/* Êž»úÆþÎÏ€¹€ë¥·¥ê¥¢¥ë¥Ý¡Œ¥ÈID */
+#endif /* TASK_PORTID */
+
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯¥µ¥€¥º */
+#endif /* STACK_SIZE */
+
+#ifndef LOOP_REF
+#define LOOP_REF		ULONG_C(1000000)	/* Â®ÅÙ·×Â¬ÍÑ€Î¥ë¡Œ¥×²ó¿ô */
+#endif /* LOOP_REF */
+
+/*
+ *  ŽØ¿ô€Î¥×¥í¥È¥¿¥€¥×ÀëžÀ
+ */
+#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: /extension/pri_level/include/kernel.h
===================================================================
--- /extension/pri_level/include/kernel.h	(revision 7)
+++ /extension/pri_level/include/kernel.h	(revision 7)
@@ -0,0 +1,502 @@
+/*
+ *  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-2013 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$
+ */
+
+/*
+ *		TOPPERS/ASP¥«¡Œ¥Í¥ë Éžœà¥Ø¥Ã¥À¥Õ¥¡¥€¥ë
+ *
+ *  TOPPERS/ASP¥«¡Œ¥Í¥ë€¬¥µ¥Ý¡Œ¥È€¹€ë¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎÀëžÀ€È¡€É¬Í×€Ê¥Ç¡Œ
+ *  ¥¿·¿¡€Äê¿ô¡€¥Þ¥¯¥í€ÎÄêµÁ€òŽÞ€à¥Ø¥Ã¥À¥Õ¥¡¥€¥ë¡¥
+ *
+ *  ¥¢¥»¥ó¥Ö¥êžÀžì€Î¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€«€é€³€Î¥Õ¥¡¥€¥ë€ò¥€¥ó¥¯¥ë¡Œ¥É€¹€ë»þ
+ *  €Ï¡€TOPPERS_MACRO_ONLY€òÄêµÁ€·€Æ€ª€¯¡¥€³€ì€Ë€è€ê¡€¥Þ¥¯¥íÄêµÁ°Ê³°€ò
+ *  œü€¯€è€Š€Ë€Ê€Ã€Æ€€€ë¡¥
+ *
+ *  €³€Î¥Õ¥¡¥€¥ë€ò¥€¥ó¥¯¥ë¡Œ¥É€¹€ëÁ°€Ë¥€¥ó¥¯¥ë¡Œ¥É€·€Æ€ª€¯€Ù€­¥Õ¥¡¥€¥ë
+ *  €Ï€Ê€€¡¥
+ */
+
+#ifndef TOPPERS_KERNEL_H
+#define TOPPERS_KERNEL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *	TOPPERS¶ŠÄÌ€Î¥Ç¡Œ¥¿·¿¡ŠÄê¿ô¡Š¥Þ¥¯¥í
+ */
+#include <t_stddef.h>
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô
+ */
+#include "target_kernel.h"
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  ¥Ç¡Œ¥¿·¿€ÎÄêµÁ
+ */
+
+/*
+ *  ¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó€ä¥ª¥Ö¥ž¥§¥¯¥ÈÈÖ¹æ€Î·¿ÄêµÁ
+ */
+typedef	uint_t		TEXPTN;		/* ¥¿¥¹¥¯Îã³°Í×°ø€Î¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó */
+typedef	uint_t		FLGPTN;		/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€Î¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó */
+typedef	uint_t		INTNO;		/* ³ä¹þ€ßÈÖ¹æ */
+typedef	uint_t		INHNO;		/* ³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ */
+typedef	uint_t		EXCNO;		/* CPUÎã³°¥Ï¥ó¥É¥éÈÖ¹æ */
+
+/*
+ *  œèÍýÃ±°Ì€Î·¿ÄêµÁ
+ */
+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);
+
+/*
+ *  ¥á¥â¥êÎÎ°è³ÎÊÝ€Î€¿€á€Î·¿ÄêµÁ
+ */
+#ifndef TOPPERS_STK_T
+#define TOPPERS_STK_T	intptr_t
+#endif /* TOPPERS_STK_T */
+typedef	TOPPERS_STK_T	STK_T;	/* ¥¹¥¿¥Ã¥¯ÎÎ°è€ò³ÎÊÝ€¹€ë€¿€á€Î·¿ */
+
+#ifndef TOPPERS_MPF_T
+#define TOPPERS_MPF_T	intptr_t
+#endif /* TOPPERS_MPF_T */
+typedef	TOPPERS_MPF_T	MPF_T;	/* žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÎÎ°è€ò³ÎÊÝ€¹€ë€¿€á€Î·¿ */
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ø¥Ã¥À€Î·¿ÄêµÁ
+ */
+typedef	struct t_msg {			/* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€Î¥á¥Ã¥»¡Œ¥ž¥Ø¥Ã¥À */
+	struct t_msg	*pk_next;
+} T_MSG;
+
+typedef	struct t_msg_pri {		/* Í¥ÀèÅÙÉÕ€­¥á¥Ã¥»¡Œ¥ž¥Ø¥Ã¥À */
+	T_MSG	msgque;				/* ¥á¥Ã¥»¡Œ¥ž¥Ø¥Ã¥À */
+	PRI		msgpri;				/* ¥á¥Ã¥»¡Œ¥žÍ¥ÀèÅÙ */
+} T_MSG_PRI;
+
+/*
+ *  ¥Ñ¥±¥Ã¥È·ÁŒ°€ÎÄêµÁ
+ */
+typedef struct t_rtsk {
+	STAT	tskstat;	/* ¥¿¥¹¥¯ŸõÂÖ */
+	PRI		tskpri;		/* ¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ */
+	PRI		tskbpri;	/* ¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ */
+	STAT	tskwait;	/* ÂÔ€ÁÍ×°ø */
+	ID		wobjid;		/* ÂÔ€ÁÂÐŸÝ€Î¥ª¥Ö¥ž¥§¥¯¥È€ÎID */
+	TMO		lefttmo;	/* ¥¿¥€¥à¥¢¥Š¥È€¹€ë€Þ€Ç€Î»þŽÖ */
+	uint_t	actcnt;		/* µ¯Æ°Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô */
+	uint_t	wupcnt;		/* µ¯Ÿ²Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô */
+} T_RTSK;
+
+typedef struct t_rtex {
+	STAT	texstat;	/* ¥¿¥¹¥¯Îã³°œèÍý€ÎŸõÂÖ */
+	TEXPTN	pndptn;		/* ÊÝÎ±Îã³°Í×°ø */
+} T_RTEX;
+
+typedef struct t_rsem {
+	ID		wtskid;		/* ¥»¥Þ¥Õ¥©€ÎÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
+	uint_t	semcnt;		/* ¥»¥Þ¥Õ¥©€Îžœºß€Î»ñž»¿ô */
+} T_RSEM;
+
+typedef struct t_rflg {
+	ID		wtskid;		/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
+	FLGPTN	flgptn;		/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€Îžœºß€Î¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó */
+} T_RFLG;
+
+typedef struct t_rdtq {
+	ID		stskid;		/* ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎÁ÷¿®ÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
+	ID		rtskid;		/* ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎŒõ¿®ÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
+	uint_t	sdtqcnt;	/* ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€Ë³ÊÇŒ€µ€ì€Æ€€€ë¥Ç¡Œ¥¿€Î¿ô */
+} T_RDTQ;
+
+typedef struct t_rpdq {
+	ID		stskid;		/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎÁ÷¿®ÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯
+						   €ÎIDÈÖ¹æ */
+	ID		rtskid;		/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎŒõ¿®ÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯
+						   €ÎIDÈÖ¹æ */
+	uint_t	spdqcnt;	/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€Ë³ÊÇŒ€µ€ì€Æ€€€ë¥Ç¡Œ
+						   ¥¿€Î¿ô */
+} T_RPDQ;
+
+typedef struct t_rmbx {
+	ID		wtskid;		/* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€ÎÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
+	T_MSG	*pk_msg;	/* ¥á¥Ã¥»¡Œ¥ž¥­¥å¡Œ€ÎÀèÆ¬€Ë€Ä€Ê€¬€ì€¿¥á¥Ã¥»¡Œ¥ž
+						   €ÎÀèÆ¬ÈÖÃÏ */
+} T_RMBX;
+
+typedef struct t_rmpf {
+	ID		wtskid;		/* žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ë€ÎÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€Î
+						   IDÈÖ¹æ */
+	uint_t	fblkcnt;	/* žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÎÎ°è€Î¶õ€­¥á¥â¥êÎÎ°è€Ë³ä€ê
+						   ÉÕ€±€ë€³€È€¬€Ç€­€ëžÇÄêÄ¹¥á¥â¥ê¥Ö¥í¥Ã¥¯€Î¿ô */
+} T_RMPF;
+
+typedef struct t_rcyc {
+	STAT	cycstat;	/* ŒþŽü¥Ï¥ó¥É¥é€ÎÆ°ºîŸõÂÖ */
+	RELTIM	lefttim;	/* Œ¡€ËŒþŽü¥Ï¥ó¥É¥é€òµ¯Æ°€¹€ë»þ¹ï€Þ€Ç€ÎÁêÂÐ»þŽÖ */
+} T_RCYC;
+
+typedef struct t_ralm {
+	STAT	almstat;	/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ÎÆ°ºîŸõÂÖ */
+	RELTIM	lefttim;	/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€òµ¯Æ°€¹€ë»þ¹ï€Þ€Ç€ÎÁêÂÐ»þŽÖ */
+} T_RALM;
+
+/*
+ *  ¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎÀëžÀ
+ */
+
+/*
+ *  ¥¿¥¹¥¯ŽÉÍýµ¡Çœ
+ */
+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();
+
+/*
+ *  ¥¿¥¹¥¯ÉÕÂ°Æ±Žüµ¡Çœ
+ */
+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();
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍýµ¡Çœ
+ */
+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();
+
+/*
+ *  Æ±Žü¡ŠÄÌ¿®µ¡Çœ
+ */
+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		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		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Îã³°ŽÉÍýµ¡Çœ
+ */
+extern bool_t	xsns_dpn(void *p_excinf) throw();
+extern bool_t	xsns_xpn(void *p_excinf) throw();
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  ¥ª¥Ö¥ž¥§¥¯¥ÈÂ°À­€ÎÄêµÁ
+ */
+#define TA_ACT			UINT_C(0x02)	/* ¥¿¥¹¥¯€òµ¯Æ°€µ€ì€¿ŸõÂÖ€ÇÀžÀ® */
+
+#define TA_TPRI			UINT_C(0x01)	/* ¥¿¥¹¥¯€ÎÂÔ€Á¹ÔÎó€òÍ¥ÀèÅÙœç€Ë */
+#define TA_MPRI			UINT_C(0x02)	/* ¥á¥Ã¥»¡Œ¥ž¥­¥å¡Œ€òÍ¥ÀèÅÙœç€Ë */
+
+#define TA_WMUL			UINT_C(0x02)	/* Ê£¿ô€ÎÂÔ€Á¥¿¥¹¥¯ */
+#define TA_CLR			UINT_C(0x04)	/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€Î¥¯¥ê¥¢»ØÄê */
+
+#define TA_STA			UINT_C(0x02)	/* ŒþŽü¥Ï¥ó¥É¥é€òÆ°ºîŸõÂÖ€ÇÀžÀ® */
+
+#define TA_NONKERNEL	UINT_C(0x02)	/* ¥«¡Œ¥Í¥ëŽÉÍý³°€Î³ä¹þ€ß */
+
+#define TA_ENAINT		UINT_C(0x01)	/* ³ä¹þ€ßÍ×µá¶Ø»ß¥Õ¥é¥°€ò¥¯¥ê¥¢ */
+#define TA_EDGE			UINT_C(0x02)	/* ¥š¥Ã¥ž¥È¥ê¥¬ */
+
+/*
+ *  ¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎÆ°ºî¥â¡Œ¥É€ÎÄêµÁ
+ */
+#define TWF_ORW			UINT_C(0x01)	/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎORÂÔ€Á */
+#define TWF_ANDW		UINT_C(0x02)	/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎANDÂÔ€Á */
+
+/*
+ *  ¥ª¥Ö¥ž¥§¥¯¥È€ÎŸõÂÖ€ÎÄêµÁ
+ */
+#define TTS_RUN			UINT_C(0x01)	/* ŒÂ¹ÔŸõÂÖ */
+#define TTS_RDY			UINT_C(0x02)	/* ŒÂ¹Ô²ÄÇœŸõÂÖ */
+#define TTS_WAI			UINT_C(0x04)	/* ÂÔ€ÁŸõÂÖ */
+#define TTS_SUS			UINT_C(0x08)	/* ¶¯À©ÂÔ€ÁŸõÂÖ */
+#define TTS_WAS			UINT_C(0x0c)	/* ÆóœÅÂÔ€ÁŸõÂÖ */
+#define TTS_DMT			UINT_C(0x10)	/* µÙ»ßŸõÂÖ */
+
+#define TTW_SLP			UINT_C(0x0001)	/* µ¯Ÿ²ÂÔ€Á */
+#define TTW_DLY			UINT_C(0x0002)	/* »þŽÖ·Ð²áÂÔ€Á */
+#define TTW_SEM			UINT_C(0x0004)	/* ¥»¥Þ¥Õ¥©€Î»ñž»³ÍÆÀÂÔ€Á */
+#define TTW_FLG			UINT_C(0x0008)	/* ¥€¥Ù¥ó¥È¥Õ¥é¥°ÂÔ€Á */
+#define TTW_SDTQ		UINT_C(0x0010)	/* ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®ÂÔ€Á */
+#define TTW_RDTQ		UINT_C(0x0020)	/* ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TTW_SPDQ		UINT_C(0x0100)	/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®ÂÔ€Á */
+#define TTW_RPDQ		UINT_C(0x0200)	/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TTW_MBX			UINT_C(0x0040)	/* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TTW_MPF			UINT_C(0x2000)	/* žÇÄêÄ¹¥á¥â¥ê¥Ö¥í¥Ã¥¯€Î³ÍÆÀÂÔ€Á */
+
+#define TTEX_ENA		UINT_C(0x01)	/* ¥¿¥¹¥¯Îã³°œèÍýµö²ÄŸõÂÖ */
+#define TTEX_DIS		UINT_C(0x02)	/* ¥¿¥¹¥¯Îã³°œèÍý¶Ø»ßŸõÂÖ */
+
+#define TCYC_STP		UINT_C(0x01)	/* ŒþŽü¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€Ê€€ */
+#define TCYC_STA		UINT_C(0x02)	/* ŒþŽü¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€ë */
+
+#define TALM_STP		UINT_C(0x01)	/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€Ê€€ */
+#define TALM_STA		UINT_C(0x02)	/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€ë */
+
+/*
+ *  €œ€ÎÂŸ€ÎÄê¿ô€ÎÄêµÁ
+ */
+#define TSK_SELF		0			/* Œ«¥¿¥¹¥¯»ØÄê */
+#define TSK_NONE		0			/* ³ºÅö€¹€ë¥¿¥¹¥¯€¬€Ê€€ */
+
+#define TPRI_SELF		0			/* Œ«¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ */
+#define TPRI_INI		0			/* ¥¿¥¹¥¯€Îµ¯Æ°»þÍ¥ÀèÅÙ */
+
+#define TIPM_ENAALL		0			/* ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœü */
+
+/*
+ *  ¹œÀ®Äê¿ô€È¥Þ¥¯¥í
+ */
+
+/*
+ *  ¥µ¥Ý¡Œ¥È€¹€ëµ¡Çœ
+ */
+#ifdef TOPPERS_TARGET_SUPPORT_DIS_INT
+#define TOPPERS_SUPPORT_DIS_INT			/* dis_int€¬¥µ¥Ý¡Œ¥È€µ€ì€Æ€€€ë */
+#endif /* TOPPERS_TARGET_SUPPORT_DIS_INT */
+
+#ifdef TOPPERS_TARGET_SUPPORT_ENA_INT
+#define TOPPERS_SUPPORT_ENA_INT			/* ena_int€¬¥µ¥Ý¡Œ¥È€µ€ì€Æ€€€ë */
+#endif /* TOPPERS_TARGET_SUPPORT_ENA_INT */
+
+#ifdef TOPPERS_TARGET_SUPPORT_GET_UTM
+#define TOPPERS_SUPPORT_GET_UTM			/* get_utm€¬¥µ¥Ý¡Œ¥È€µ€ì€Æ€€€ë */
+#endif /* TOPPERS_TARGET_SUPPORT_GET_UTM */
+
+#define TOPPERS_SUPPORT_PRI_LEVEL		/* ¥¿¥¹¥¯Í¥ÀèÅÙ€ÎÈÏ°Ï€Î³ÈÄ¥ */
+
+/*
+ *  Í¥ÀèÅÙ€ÎÈÏ°Ï
+ */
+#define TMIN_TPRI		1			/* ¥¿¥¹¥¯Í¥ÀèÅÙ€ÎºÇŸ®ÃÍ¡ÊºÇ¹âÃÍ¡Ë*/
+#define TMAX_TPRI		256			/* ¥¿¥¹¥¯Í¥ÀèÅÙ€ÎºÇÂçÃÍ¡ÊºÇÄãÃÍ¡Ë*/
+#define TMIN_DPRI		1			/* ¥Ç¡Œ¥¿Í¥ÀèÅÙ€ÎºÇŸ®ÃÍ¡ÊºÇ¹âÃÍ¡Ë*/
+#define TMAX_DPRI		256			/* ¥Ç¡Œ¥¿Í¥ÀèÅÙ€ÎºÇÂçÃÍ¡ÊºÇÄãÃÍ¡Ë*/
+#define TMIN_MPRI		1			/* ¥á¥Ã¥»¡Œ¥žÍ¥ÀèÅÙ€ÎºÇŸ®ÃÍ¡ÊºÇ¹âÃÍ¡Ë*/
+#define TMAX_MPRI		256			/* ¥á¥Ã¥»¡Œ¥žÍ¥ÀèÅÙ€ÎºÇÂçÃÍ¡ÊºÇÄãÃÍ¡Ë*/
+#define TMIN_ISRPRI		1			/* ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óÍ¥ÀèÅÙ€ÎºÇŸ®ÃÍ */
+#define TMAX_ISRPRI		256			/* ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óÍ¥ÀèÅÙ€ÎºÇÂçÃÍ */
+
+/*
+ *  ¥Ð¡Œ¥ž¥ç¥óŸðÊó
+ */
+#define TKERNEL_MAKER	UINT_C(0x0118)	/* ¥«¡Œ¥Í¥ë€Î¥á¡Œ¥«¡Œ¥³¡Œ¥É */
+#define TKERNEL_PRID	UINT_C(0x0007)	/* ¥«¡Œ¥Í¥ë€ÎŒ±ÊÌÈÖ¹æ */
+#define TKERNEL_SPVER	UINT_C(0xf516)	/* ¥«¡Œ¥Í¥ë»ÅÍÍ€Î¥Ð¡Œ¥ž¥ç¥óÈÖ¹æ */
+#define TKERNEL_PRVER	UINT_C(0x1092)	/* ¥«¡Œ¥Í¥ë€Î¥Ð¡Œ¥ž¥ç¥óÈÖ¹æ */
+
+/*
+ *  ¥­¥å¡Œ¥€¥ó¥°²ó¿ô€ÎºÇÂçÃÍ
+ */
+#define TMAX_ACTCNT		UINT_C(1)		/* µ¯Æ°Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô€ÎºÇÂçÃÍ */
+#define TMAX_WUPCNT		UINT_C(1)		/* µ¯Ÿ²Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô€ÎºÇÂçÃÍ */
+
+/*
+ *  ¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó€Î¥Ó¥Ã¥È¿ô
+ */
+#ifndef TBIT_TEXPTN					/* ¥¿¥¹¥¯Îã³°Í×°ø€Î¥Ó¥Ã¥È¿ô */
+#define TBIT_TEXPTN		(sizeof(TEXPTN) * CHAR_BIT)
+#endif /* TBIT_TEXPTN */
+
+#ifndef TBIT_FLGPTN					/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€Î¥Ó¥Ã¥È¿ô */
+#define TBIT_FLGPTN		(sizeof(FLGPTN) * CHAR_BIT)
+#endif /* TBIT_FLGPTN */
+
+/*
+ *  ¥á¥â¥êÎÎ°è³ÎÊÝ€Î€¿€á€Î¥Þ¥¯¥í
+ *
+ *  °Ê²Œ€ÎTOPPERS_COUNT_SZ€ÈTOPPERS_ROUND_SZ€ÎÄêµÁ€Ï¡€unit€¬2€Î¶ÒŸè€Ç€¢
+ *  €ë€³€È€ò²ŸÄê€·€Æ€€€ë¡¥
+ */
+#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	/* ¥»¥Þ¥Õ¥©€ÎºÇÂç»ñž»¿ô€ÎºÇÂçÃÍ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* TOPPERS_KERNEL_H */
Index: /extension/pri_level/kernel/kernel_rename.def
===================================================================
--- /extension/pri_level/kernel/kernel_rename.def	(revision 7)
+++ /extension/pri_level/kernel/kernel_rename.def	(revision 7)
@@ -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
+dtqinib_table
+dtqcb_table
+tmax_pdqid
+pdqinib_table
+pdqcb_table
+tmax_mbxid
+mbxinib_table
+mbxcb_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: /extension/pri_level/kernel/kernel_rename.h
===================================================================
--- /extension/pri_level/kernel/kernel_rename.h	(revision 7)
+++ /extension/pri_level/kernel/kernel_rename.h	(revision 7)
@@ -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 dtqinib_table				_kernel_dtqinib_table
+#define dtqcb_table					_kernel_dtqcb_table
+#define tmax_pdqid					_kernel_tmax_pdqid
+#define pdqinib_table				_kernel_pdqinib_table
+#define pdqcb_table					_kernel_pdqcb_table
+#define tmax_mbxid					_kernel_tmax_mbxid
+#define mbxinib_table				_kernel_mbxinib_table
+#define mbxcb_table					_kernel_mbxcb_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 _dtqinib_table				__kernel_dtqinib_table
+#define _dtqcb_table				__kernel_dtqcb_table
+#define _tmax_pdqid					__kernel_tmax_pdqid
+#define _pdqinib_table				__kernel_pdqinib_table
+#define _pdqcb_table				__kernel_pdqcb_table
+#define _tmax_mbxid					__kernel_tmax_mbxid
+#define _mbxinib_table				__kernel_mbxinib_table
+#define _mbxcb_table				__kernel_mbxcb_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: /extension/pri_level/kernel/kernel_unrename.h
===================================================================
--- /extension/pri_level/kernel/kernel_unrename.h	(revision 7)
+++ /extension/pri_level/kernel/kernel_unrename.h	(revision 7)
@@ -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 dtqinib_table
+#undef dtqcb_table
+#undef tmax_pdqid
+#undef pdqinib_table
+#undef pdqcb_table
+#undef tmax_mbxid
+#undef mbxinib_table
+#undef mbxcb_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 _dtqinib_table
+#undef _dtqcb_table
+#undef _tmax_pdqid
+#undef _pdqinib_table
+#undef _pdqcb_table
+#undef _tmax_mbxid
+#undef _mbxinib_table
+#undef _mbxcb_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: /extension/pri_level/kernel/task.c
===================================================================
--- /extension/pri_level/kernel/task.c	(revision 7)
+++ /extension/pri_level/kernel/task.c	(revision 7)
@@ -0,0 +1,518 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  $Id$
+ */
+
+/*
+ *		¥¿¥¹¥¯ŽÉÍý¥â¥ž¥å¡Œ¥ë
+ */
+
+#include "kernel_impl.h"
+#include "wait.h"
+#include "task.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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
+
+/*
+ *  ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯
+ */
+TCB		*p_runtsk;
+
+/*
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯
+ */
+TCB		*p_schedtsk;
+
+/*
+ *  ¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á¡¿¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óµ¯Æ°Í×µá¥Õ¥é¥°
+ */
+bool_t	reqflg;
+
+/*
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ
+ */
+bool_t	ipmflg;
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ
+ */
+bool_t	disdsp;
+
+/*
+ *  ¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á²ÄÇœŸõÂÖ
+ */
+bool_t	dspflg;
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ
+ */
+QUEUE	ready_queue[TNUM_TPRI];
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ¥µ¡Œ¥Á€Î€¿€á€Î¥Ó¥Ã¥È¥Þ¥Ã¥×
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯ŽÉÍý¥â¥ž¥å¡Œ¥ë€ÎœéŽü²œ
+ */
+void
+initialize_task(void)
+{
+	uint_t	i, j;
+	TCB		*p_tcb;
+
+	p_runtsk = NULL;
+	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) {
+			(void) make_active(p_tcb);
+		}
+	}
+}
+
+#endif /* TOPPERS_tskini */
+
+/*
+ *  ¥Ó¥Ã¥È¥Þ¥Ã¥×¥µ¡Œ¥ÁŽØ¿ô
+ *
+ *  bitmapÆâ€Î1€Î¥Ó¥Ã¥È€ÎÆâ¡€ºÇ€â²Œ°Ì¡Ê±Š¡Ë€Î€â€Î€ò¥µ¡Œ¥Á€·¡€€œ€Î¥Ó¥Ã
+ *  ¥ÈÈÖ¹æ€òÊÖ€¹¡¥¥Ó¥Ã¥ÈÈÖ¹æ€Ï¡€ºÇ²Œ°Ì¥Ó¥Ã¥È€ò0€È€¹€ë¡¥bitmap€Ë0€ò»ØÄê
+ *  €·€Æ€Ï€Ê€é€Ê€€¡¥€³€ÎŽØ¿ô€Ç€Ï¡€bitmap€¬16¥Ó¥Ã¥È€Ç€¢€ë€³€È€ò²ŸÄê€·¡€
+ *  uint16_t·¿€È€·€Æ€€€ë¡¥
+ *
+ *  ¥Ó¥Ã¥È¥µ¡Œ¥ÁÌ¿Îá€ò»ý€Ä¥×¥í¥»¥Ã¥µ€Ç€Ï¡€¥Ó¥Ã¥È¥µ¡Œ¥ÁÌ¿Îá€ò»È€Š€è€Š€Ë
+ *  œñ€­ÄŸ€·€¿Êý€¬žúÎš€¬ÎÉ€€Ÿì¹ç€¬€¢€ë¡¥€³€Î€è€Š€ÊŸì¹ç€Ë€Ï¡€¥¿¡Œ¥²¥Ã¥È
+ *  °ÍÂžÉô€Ç¥Ó¥Ã¥È¥µ¡Œ¥ÁÌ¿Îá€ò»È€Ã€¿bitmap_search€òÄêµÁ€·¡€
+ *  OMIT_BITMAP_SEARCH€ò¥Þ¥¯¥íÄêµÁ€¹€ì€Ð€è€€¡¥€Þ€¿¡€¥Ó¥Ã¥È¥µ¡Œ¥ÁÌ¿Îá€Î
+ *  ¥µ¡Œ¥ÁÊýžþ€¬µÕ€Ê€É€ÎÍýÍ³€ÇÍ¥ÀèÅÙ€È¥Ó¥Ã¥È€È€ÎÂÐ±þ€òÊÑ¹¹€·€¿€€Ÿì¹ç€Ë
+ *  €Ï¡€PRIMAP_BIT€ò¥Þ¥¯¥íÄêµÁ€¹€ì€Ð€è€€¡¥
+ *
+ *  €Þ€¿¡€¥é¥€¥Ö¥é¥ê€Ëffs€¬€¢€ë€Ê€é¡€Œ¡€Î€è€Š€ËÄêµÁ€·€Æ¥é¥€¥Ö¥é¥êŽØ¿ô€ò
+ *  »È€Ã€¿Êý€¬žúÎš€¬ÎÉ€€²ÄÇœÀ­€â€¢€ë¡¥
+ *		#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 */
+
+/*
+ *  Í¥ÀèÅÙ¥Ó¥Ã¥È¥Þ¥Ã¥×€¬¶õ€«€Î¥Á¥§¥Ã¥¯
+ */
+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 */
+}
+
+/*
+ *  Í¥ÀèÅÙ¥Ó¥Ã¥È¥Þ¥Ã¥×€Î¥µ¡Œ¥Á
+ */
+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 */
+}
+
+/*
+ *  Í¥ÀèÅÙ¥Ó¥Ã¥È¥Þ¥Ã¥×€Î¥»¥Ã¥È
+ */
+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 */
+}
+
+/*
+ *  Í¥ÀèÅÙ¥Ó¥Ã¥È¥Þ¥Ã¥×€Î¥¯¥ê¥¢
+ */
+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 */
+}
+
+/*
+ *  ºÇ¹âÍ¥Àèœç°Ì¥¿¥¹¥¯€Î¥µ¡Œ¥Á
+ */
+#ifdef TOPPERS_tsksched
+
+TCB *
+search_schedtsk(void)
+{
+	uint_t	schedpri;
+
+	schedpri = primap_search();
+	return((TCB *)(ready_queue[schedpri].p_next));
+}
+
+#endif /* TOPPERS_tsksched */
+
+/*
+ *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€¹€ë€Î€Ï¡€ŒÂ¹Ô€Ç€­€ë¥¿¥¹¥¯€¬€Ê€«€Ã€¿Ÿì¹ç
+ *  €È¡€p_tcb€ÎÍ¥ÀèÅÙ€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€è€ê€â¹â€€Ÿì¹ç€Ç€¢
+ *  €ë¡¥
+ */
+#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 */
+
+/*
+ *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€«€éÂŸ€ÎŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€¹€ë€Î€Ï¡€p_tcb€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€Ç
+ *  €¢€Ã€¿Ÿì¹ç€Ç€¢€ë¡¥p_tcb€ÈÆ±€žÍ¥ÀèÅÙ€Î¥¿¥¹¥¯€¬ÂŸ€Ë€¢€ëŸì¹ç€Ï¡€p_tcb
+ *  €ÎŒ¡€Î¥¿¥¹¥¯€¬ºÇ¹âÍ¥Àèœç°Ì€Ë€Ê€ë¡¥€œ€Š€Ç€Ê€€Ÿì¹ç€Ï¡€¥ì¥Ç¥£¥­¥å¡Œ€ò
+ *  ¥µ¡Œ¥Á€¹€ëÉ¬Í×€¬€¢€ë¡¥
+ */
+#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 */
+
+/*
+ *  µÙ»ßŸõÂÖ€Ø€ÎÁ«°Ü
+ */
+#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 */
+
+/*
+ *  µÙ»ßŸõÂÖ€«€éŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ø€ÎÁ«°Ü
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€ÎÊÑ¹¹
+ *
+ *  ¥¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂÖ€ÎŸì¹ç€Ë€Ï¡€¥ì¥Ç¥£¥­¥å¡Œ€ÎÃæ€Ç€Î°ÌÃÖ€òÊÑ¹¹€¹
+ *  €ë¡¥¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€Á¥­¥å¡Œ€ÎÃæ€ÇÂÔ€ÁŸõÂÖ€Ë€Ê€Ã€Æ€€€ëŸì¹ç€Ë€Ï¡€ÂÔ
+ *  €Á¥­¥å¡Œ€ÎÃæ€Ç€Î°ÌÃÖ€òÊÑ¹¹€¹€ë¡¥
+ *
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€¹€ë€Î€Ï¡€(1) p_tcb€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹
+ *  ¥¯€Ç€¢€Ã€Æ¡€€œ€ÎÍ¥ÀèÅÙ€ò²Œ€²€¿Ÿì¹ç¡€(2) p_tcb€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹
+ *  ¥¯€Ç€Ï€Ê€¯¡€ÊÑ¹¹žå€ÎÍ¥ÀèÅÙ€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€è€ê€â¹â€€
+ *  Ÿì¹ç€Ç€¢€ë¡¥(1)€ÎŸì¹ç€Ë€Ï¡€¥ì¥Ç¥£¥­¥å¡Œ€ò¥µ¡Œ¥Á€¹€ëÉ¬Í×€¬€¢€ë¡¥
+ */
+#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)) {
+		/*
+		 *  ¥¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂÖ€ÎŸì¹ç
+		 */
+		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)) {
+			/*
+			 *  ¥¿¥¹¥¯€¬¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉô
+			 *  Ê¬¡ÊWOBJCB¡Ë€ÎÂÔ€Á¥­¥å¡Œ€Ë€Ä€Ê€¬€ì€Æ€€€ëŸì¹ç
+			 */
+			wobj_change_priority(((WINFO_WOBJ *)(p_tcb->p_winfo))->p_wobjcb,
+																	p_tcb);
+		}
+	}
+	return(false);
+}
+
+#endif /* TOPPERS_tskpri */
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ€Î²óÅŸ
+ *
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€¹€ë€Î€Ï¡€ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€¬¥¿¥¹¥¯¥­
+ *  ¥å¡Œ€ÎËöÈø€Ë°ÜÆ°€·€¿Ÿì¹ç€Ç€¢€ë¡¥
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎžÆœÐ€·
+ *
+ *  ASP¥«¡Œ¥Í¥ë€Ç€Ï¡€¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óÆâ€ÇCPU¥í¥Ã¥¯ŸõÂÖ€ËÁ«°Ü€·¡€
+ *  žµ€ÎŸõÂÖ€ËÌá€µ€º€Ë¥ê¥¿¡Œ¥ó€·€¿Ÿì¹ç¡€¥«¡Œ¥Í¥ë€¬žµ€ÎŸõÂÖ€ËÌá€¹¡¥
+ */
+#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€òžÆ€ÓœÐ€¹œèÍý€Ï¡€ÁêžßºÆµ¢žÆœÐ€·€Ë€Ê€Ã€Æ
+			 *  €€€ë€¬¡€dispatch€òžÆ€ÖÁ°€Ëp_runtsk->enatex€òfalse€Ë€·€Æ
+			 *  €ª€±€Ð»ÙŸã€¬€Ê€€¡¥€œ€ÎÍýÍ³€Ë€Ä€€€Æ€Ï¡€¡ÖTOPPERS/ASP ¥«¡Œ
+			 *  ¥Í¥ë Àß·×¥á¥â¡×€ò»²ŸÈ€Î€³€È¡¥
+			 */
+			dispatch();
+		}
+	} while (p_runtsk->texptn != 0U);
+	p_runtsk->enatex = true;
+}
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€Îµ¯Æ°
+ */
+#ifndef OMIT_CALLTEX
+
+void
+calltex(void)
+{
+	if (p_runtsk->enatex && p_runtsk->texptn != 0U && ipmflg) {
+		call_texrtn();
+	}
+}
+
+#endif /* OMIT_CALLTEX */
+#endif /* TOPPERS_tsktex */
Index: /extension/pri_level/kernel/task.h
===================================================================
--- /extension/pri_level/kernel/task.h	(revision 7)
+++ /extension/pri_level/kernel/task.h	(revision 7)
@@ -0,0 +1,497 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  $Id$
+ */
+
+/*
+ *		¥¿¥¹¥¯ŽÉÍý¥â¥ž¥å¡Œ¥ë
+ */
+
+#ifndef TOPPERS_TASK_H
+#define TOPPERS_TASK_H
+
+#include <queue.h>
+#include "time_event.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#ifndef LOG_TSKSTAT
+#define LOG_TSKSTAT(p_tcb)
+#endif /* LOG_TSKSTAT */
+
+/*
+ *  ¥¿¥¹¥¯Í¥ÀèÅÙ€ÎÆâÉôÉœžœ¡Š³°ÉôÉœžœÊÑŽ¹¥Þ¥¯¥í
+ */
+#define INT_PRIORITY(x)		((uint_t)((x) - TMIN_TPRI))
+#define EXT_TSKPRI(x)		((PRI)(x) + TMIN_TPRI)
+
+/*
+ *  ¥¿¥¹¥¯ŸõÂÖ€ÎÆâÉôÉœžœ
+ *
+ *  TCBÃæ€Î¥¿¥¹¥¯ŸõÂÖ€Ç€Ï¡€ŒÂ¹ÔŸõÂÖ¡ÊRUNNING¡Ë€ÈŒÂ¹Ô²ÄÇœŸõÂÖ¡ÊREADY¡Ë
+ *  €Ï¶èÊÌ€·€Ê€€¡¥ÎŸŸõÂÖ€òÁíŸÎ€·€Æ¡€ŒÂ¹Ô€Ç€­€ëŸõÂÖ¡ÊRUNNABLE¡Ë€ÈžÆ€Ö¡¥
+ *  ÆóœÅÂÔ€ÁŸõÂÖ€Ï¡€(TS_WAITING | TS_SUSPENDED)€ÇÉœ€¹¡¥TS_WAIT_???€ÏÂÔ
+ *  €ÁÍ×°ø€òÉœ€·¡€ÂÔ€ÁŸõÂÖ¡ÊÆóœÅÂÔ€ÁŸõÂÖ€òŽÞ€à¡Ë€ÎŸì¹ç€Ë€Î€ßÀßÄê€¹€ë¡¥
+ */
+#define TS_DORMANT		0x00U			/* µÙ»ßŸõÂÖ */
+#define TS_RUNNABLE		0x01U			/* ŒÂ¹Ô€Ç€­€ëŸõÂÖ */
+#define TS_WAITING		0x02U			/* ÂÔ€ÁŸõÂÖ */
+#define TS_SUSPENDED	0x04U			/* ¶¯À©ÂÔ€ÁŸõÂÖ */
+
+#define TS_WAIT_DLY		(0x00U << 3)	/* »þŽÖ·Ð²áÂÔ€Á */
+#define TS_WAIT_SLP		(0x01U << 3)	/* µ¯Ÿ²ÂÔ€Á */
+#define TS_WAIT_RDTQ	(0x02U << 3)	/* ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TS_WAIT_RPDQ	(0x03U << 3)	/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TS_WAIT_SEM		(0x04U << 3)	/* ¥»¥Þ¥Õ¥©»ñž»€Î³ÍÆÀÂÔ€Á */
+#define TS_WAIT_FLG		(0x05U << 3)	/* ¥€¥Ù¥ó¥È¥Õ¥é¥°ÂÔ€Á */
+#define TS_WAIT_SDTQ	(0x06U << 3)	/* ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®ÂÔ€Á */
+#define TS_WAIT_SPDQ	(0x07U << 3)	/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®ÂÔ€Á */
+#define TS_WAIT_MBX		(0x08U << 3)	/* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TS_WAIT_MPF		(0x09U << 3)	/* žÇÄêÄ¹¥á¥â¥ê¥Ö¥í¥Ã¥¯€Î³ÍÆÀÂÔ€Á */
+
+/*
+ *  ¥¿¥¹¥¯ŸõÂÖÈœÊÌ¥Þ¥¯¥í
+ *
+ *  TSTAT_DORMANT€Ï¥¿¥¹¥¯€¬µÙ»ßŸõÂÖ€Ç€¢€ë€«€É€Š€«€ò¡€TSTAT_RUNNABLE€Ï
+ *  ¥¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ç€¢€ë€«€É€Š€«€òÈœÊÌ€¹€ë¡¥TSTAT_WAITING€ÏÂÔ
+ *  €ÁŸõÂÖ€ÈÆóœÅÂÔ€ÁŸõÂÖ€Î€€€º€ì€«€Ç€¢€ë€«€É€Š€«€ò¡€TSTAT_SUSPENDED€Ï
+ *  ¶¯À©ÂÔ€ÁŸõÂÖ€ÈÆóœÅÂÔ€ÁŸõÂÖ€Î€€€º€ì€«€Ç€¢€ë€«€É€Š€«€òÈœÊÌ€¹€ë¡¥
+ */
+#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)
+
+/*
+ *  ¥¿¥¹¥¯ÂÔ€ÁÍ×°øÈœÊÌ¥Þ¥¯¥í
+ *
+ *  TSTAT_WAIT_SLP€Ï¥¿¥¹¥¯€¬µ¯Ÿ²ÂÔ€Á€Ç€¢€ë€«€É€Š€«€ò¡€TSTAT_WAIT_WOBJ
+ *  €Ï¥¿¥¹¥¯€¬Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ËÂÐ€¹€ëÂÔ€Á€Ç€¢€ë€«¡ÊžÀ€€Ž¹€š€ë€È¡€
+ *  Æ±ŽüÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€Á¥­¥å¡Œ€Ë€Ä€Ê€¬€ì€Æ€€€ë€«¡Ë€É€Š€«€òÈœÊÌ€¹
+ *  €ë¡¥€Þ€¿¡€TSTAT_WAIT_WOBJCB€Ï¥¿¥¹¥¯€¬Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý
+ *  ¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬¡ÊWOBJCB¡Ë€ÎÂÔ€Á¥­¥å¡Œ€Ë€Ä€Ê€¬€ì€Æ€€€ë€«€É€Š€«€ò
+ *  ÈœÊÌ€¹€ë¡¥
+ *
+ *  TSTAT_WAIT_SLP€Ï¡€Ç€°Õ€Î¥¿¥¹¥¯ŸõÂÖ€ÎÃæ€«€é¡€¥¿¥¹¥¯€¬µ¯Ÿ²ÂÔ€Á€Ç€¢€ë
+ *  €³€È€òÈœÊÌ€Ç€­€ë¡¥€¹€Ê€ï€Á¡€TSTAT_WAITING€Ë€è€êÂÔ€ÁŸõÂÖ€Ç€¢€ë€³€È€ò
+ *  ÈœÊÌ€»€º€Ë¡€TSTAT_SLP€À€±€òÍÑ€€€Æµ¯Ÿ²ÂÔ€ÁŸõÂÖ€Ç€¢€ë€³€È€òÈœÊÌ€Ç€­€ë¡¥
+ *  €³€ì€òžúÎšÅª€ËŒÂžœ€¹€ë€¿€á€Ë¡€TS_WAIT_SLP€ÎÃÍ€ò¡€(0x00U << 3)€Ç€Ï€Ê
+ *  €¯(0x01U << 3)€È€·€Æ€€€ë¡¥€œ€Î€¿€á¡€¥¿¥¹¥¯€¬»þŽÖ·Ð²áÂÔ€ÁŸõÂÖ€Ç€¢€ë
+ *  €³€È€òÈœÊÌ€¹€ë€¿€á€ÎTSTAT_WAIT_DLY€ò¡€TSTAT_WAIT_SLP€ÈÆ±ÍÍ€ÎÊýË¡€Ç
+ *  ŒÂžœ€¹€ë€³€È€Ï€Ç€­€Ê€€¡¥
+ */
+#define TS_WAIT_MASK	(0x0fU << 3)	/* ÂÔ€ÁÍ×°ø€ÎŒèœÐ€·¥Þ¥¹¥¯ */
+
+#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)
+
+/*
+ *  ÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯¡ÊWINFO¡Ë€ÎÄêµÁ
+ *
+ *  ¥¿¥¹¥¯€¬ÂÔ€ÁŸõÂÖ€ÎŽÖ€Ï¡€TCB€ª€è€Ó€œ€Îp_winfo€Ç»Ø€µ€ì€ëWINFO€òŒ¡€Î
+ *  €è€Š€ËÀßÄê€·€Ê€±€ì€Ð€Ê€é€Ê€€¡¥
+ *
+ *  (a) TCB€Î¥¿¥¹¥¯ŸõÂÖ€òÂÔ€ÁŸõÂÖ¡ÊTS_WAITING¡Ë€Ë€¹€ë¡¥€œ€ÎºÝ€Ë¡€ÂÔ€Á
+ *  Í×°ø¡ÊTS_WAIT_???¡Ë€âÀßÄê€¹€ë¡¥
+ *
+ *  (b) ¥¿¥€¥à¥¢¥Š¥È€òŽÆ»ë€¹€ë€¿€á€Ë¡€¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯€òÅÐÏ¿€¹€ë¡¥
+ *  ÅÐÏ¿€¹€ë¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯€Ï¡€ÂÔ€Á€ËÆþ€ë¥µ¡Œ¥Ó¥¹¥³¡Œ¥ëœèÍýŽØ¿ô
+ *  €Î¥í¡Œ¥«¥ëÊÑ¿ô€È€·€Æ³ÎÊÝ€·¡€€œ€ì€Ø€Î¥Ý¥€¥ó¥¿€òWINFO€Îp_tmevtb€Ëµ­
+ *  ²±€¹€ë¡¥¥¿¥€¥à¥¢¥Š¥È€ÎŽÆ»ë€¬É¬Í×€Ê€€Ÿì¹ç¡Ê±Êµ×ÂÔ€Á€ÎŸì¹ç¡Ë€Ë€Ï¡€
+ *  p_tmevtb€òNULL€Ë€¹€ë¡¥
+ *
+ *  Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ËÂÐ€¹€ëÂÔ€ÁŸõÂÖ€ÎŸì¹ç€Ë€Ï¡€Éžœà€ÎWINFO€Ë
+ *  p_wobjcb¥Õ¥£¡Œ¥ë¥É€òÄÉ²Ã€·€¿¹œÂ€ÂÎ¡ÊWINFO_WOBJ¡€wait.h€ÇÄêµÁ¡Ë€ò»È
+ *  €Š¡¥€Þ€¿¡€°Ê²Œ€Î(c)¡Á(e)€ÎÀßÄê€ò¹Ô€ŠÉ¬Í×€¬€¢€ë¡¥Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§
+ *  ¥¯¥È€ËŽØ·ž€·€Ê€€ÂÔ€Á¡Êµ¯Ÿ²ÂÔ€Á¡€»þŽÖ·Ð²áÂÔ€Á¡Ë€ÎŸì¹ç€Ë€Ï¡€(c)¡Á(e)
+ *  €ÏÉ¬Í×€Ê€€¡¥
+ *
+ *  (c) TCB€òÂÔ€ÁÂÐŸÝ€ÎÆ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€Á¥­¥å¡Œ€Ë€Ä€Ê€°¡¥ÂÔ
+ *  €Á¥­¥å¡Œ€Ë€Ä€Ê€°€¿€á€Ë¡€task_queue€ò»È€Š¡¥
+ *
+ *  (d) ÂÔ€ÁÂÐŸÝ€ÎÆ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿€ò¡€
+ *  WINFO_WOBJ€Îp_wobjcb€Ëµ­²±€¹€ë¡¥
+ *
+ *  (e) ÂÔ€ÁÂÐŸÝ€ÎÆ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€Ë°ÍÂž€·€Æµ­²±€¹€ë€³€È€¬É¬Í×€Ê
+ *  ŸðÊó€¬€¢€ëŸì¹ç€Ë€Ï¡€WINFO_WOBJ€ËÉ¬Í×€ÊŸðÊó€Î€¿€á€Î¥Õ¥£¡Œ¥ë¥É€òÄÉ²Ã
+ *  €·€¿¹œÂ€ÂÎ€òÄêµÁ€·¡€WINFO_WOBJ€ÎÂå€ï€ê€ËÍÑ€€€ë¡¥
+ *
+ *  ÂÔ€ÁŸõÂÖ€ò²òœü€¹€ëºÝ€Ë€Ï¡€ÂÔ€Á²òœü€·€¿¥¿¥¹¥¯€ËÂÐ€¹€ëÊÖÃÍ€òWINFO€Î
+ *  wercd€ËÀßÄê€¹€ë¡¥wercd€¬É¬Í×€Ê€Î€ÏÂÔ€Á²òœü°Ê¹ß€Ç€¢€ë€Î€ËÂÐ€·€Æ¡€
+ *  p_tmevtb€ÏÂÔ€Á²òœüžå€ÏÉ¬Í×€Ê€€€¿€á¡€¥á¥â¥êÀáÌó€Î€¿€á€Ë¶ŠÍÑÂÎ€ò»È€Ã
+ *  €Æ€€€ë¡¥€œ€Î€¿€á¡€wercd€Ø¥š¥é¡Œ¥³¡Œ¥É€òÀßÄê€¹€ë€Î€Ï¡€¥¿¥€¥à¥€¥Ù¥ó¥È
+ *  ¥Ö¥í¥Ã¥¯€òÅÐÏ¿²òœü€·€¿žå€Ë€·€Ê€±€ì€Ð€Ê€é€Ê€€¡¥
+ */
+typedef union waiting_information {
+	ER		wercd;			/* ÂÔ€Á²òœü»þ€Î¥š¥é¡Œ¥³¡Œ¥É */
+	TMEVTB	*p_tmevtb;		/* ÂÔ€ÁŸõÂÖÍÑ€Î¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯ */
+} WINFO;
+
+/*
+ *  ¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯
+ *
+ *  ¥¿¥¹¥¯€ËŽØ€¹€ëŸðÊó€ò¡€ÃÍ€¬ÊÑ€ï€é€Ê€€€¿€á€ËROM€ËÃÖ€±€ëÉôÊ¬¡Ê¥¿¥¹¥¯
+ *  œéŽü²œ¥Ö¥í¥Ã¥¯¡Ë€È¡€ÃÍ€¬ÊÑ²œ€¹€ë€¿€á€ËRAM€ËÃÖ€«€Ê€±€ì€Ð€Ê€é€Ê€€Éô
+ *  Ê¬¡Ê¥¿¥¹¥¯ŽÉÍý¥Ö¥í¥Ã¥¯¡€TCB¡Ë€ËÊ¬Î¥€·¡€TCBÆâ€ËÂÐ±þ€¹€ë¥¿¥¹¥¯œéŽü²œ
+ *  ¥Ö¥í¥Ã¥¯€ò»Ø€¹¥Ý¥€¥ó¥¿€òÆþ€ì€ë¡¥¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯Æâ€ËÂÐ±þ€¹€ë
+ *  TCB€ò»Ø€¹¥Ý¥€¥ó¥¿€òÆþ€ì€ëÊýË¡€ÎÊý€¬¡€RAM€ÎÀáÌó€ÎŽÑÅÀ€«€é€ÏËŸ€Þ€·€€
+ *  €¬¡€ŒÂ¹ÔžúÎš€¬°­€¯€Ê€ë€¿€á€ËºÎÍÑ€·€Æ€€€Ê€€¡¥ÂŸ€Î¥ª¥Ö¥ž¥§¥¯¥È€Ë€Ä€€
+ *  €Æ€âÆ±ÍÍ€Ë°·€Š¡¥
+ *
+ *  ¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯€Ë€Ï¡€DEF_TEX€ÇÄêµÁ€µ€ì€ë¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á
+ *  ¥ó€ËŽØ€¹€ëŸðÊó€âŽÞ€à¡¥
+ */
+typedef struct task_initialization_block {
+	ATR			tskatr;			/* ¥¿¥¹¥¯Â°À­ */
+	intptr_t	exinf;			/* ¥¿¥¹¥¯€Î³ÈÄ¥ŸðÊó */
+	TASK		task;			/* ¥¿¥¹¥¯€Îµ¯Æ°ÈÖÃÏ */
+	uint_t		ipriority;		/* ¥¿¥¹¥¯€Îµ¯Æ°»þÍ¥ÀèÅÙ¡ÊÆâÉôÉœžœ¡Ë */
+
+#ifdef USE_TSKINICTXB
+	TSKINICTXB	tskinictxb;		/* ¥¿¥¹¥¯œéŽü²œ¥³¥ó¥Æ¥­¥¹¥È¥Ö¥í¥Ã¥¯ */
+#else /* USE_TSKINICTXB */
+	SIZE		stksz;			/* ¥¹¥¿¥Ã¥¯ÎÎ°è€Î¥µ¥€¥º¡ÊŽÝ€á€¿ÃÍ¡Ë */
+	void		*stk;			/* ¥¹¥¿¥Ã¥¯ÎÎ°è€ÎÀèÆ¬ÈÖÃÏ */
+#endif /* USE_TSKINICTXB */
+
+	ATR			texatr;			/* ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óÂ°À­ */
+	TEXRTN		texrtn;			/* ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€Îµ¯Æ°ÈÖÃÏ */
+} TINIB;
+
+/*
+ *  TCBÃæ€Î¥Õ¥£¡Œ¥ë¥É€Î¥Ó¥Ã¥ÈÉý€ÎÄêµÁ
+ *
+ *  ¥×¥í¥»¥Ã¥µ€Ë€è€Ã€Æ€Ï¡€TCBÃæ€Î¥Õ¥£¡Œ¥ë¥É€Î¥Ó¥Ã¥ÈÉý€Ç¥á¥â¥ê»ÈÍÑÎÌ€È
+ *  À­Çœ€¬¥È¥ì¡Œ¥É¥ª¥Õ€Ë€Ê€ë€¿€á¡€¥¿¡Œ¥²¥Ã¥È°ÍÂž€Ë¥Õ¥£¡Œ¥ë¥É€Î¥Ó¥Ã¥ÈÉý
+ *  €òÊÑ¹¹€¹€ë€³€È€òµö€·€Æ€€€ë¡¥
+ */
+#ifndef TBIT_TCB_PRIORITY
+#define	TBIT_TCB_PRIORITY		8		/* priority¥Õ¥£¡Œ¥ë¥É€Î¥Ó¥Ã¥ÈÉý */
+#endif /* TBIT_TCB_PRIORITY */
+
+/*
+ *  ¥¿¥¹¥¯ŽÉÍý¥Ö¥í¥Ã¥¯¡ÊTCB¡Ë
+ *
+ *  ASP¥«¡Œ¥Í¥ë€Ç€Ï¡€¥¿¥¹¥¯€Îµ¯Æ°Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô€ÎºÇÂçÃÍ¡ÊTMAX_ACTCNT¡Ë
+ *  €Èµ¯Ÿ²Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô€ÎºÇÂçÃÍ¡ÊTMAX_WUPCNT¡Ë€Ï1€ËžÇÄê€µ€ì€Æ€€€ë
+ *  €¿€á¡€¥­¥å¡Œ¥€¥ó¥°€µ€ì€Æ€€€ë€«€É€Š€«€Î¿¿µ¶ÃÍ€ÇÉœžœ€¹€ë€³€È€¬€Ç€­€ë¡¥
+ *  €Þ€¿¡€¶¯À©ÂÔ€ÁÍ×µá¥Í¥¹¥È¿ô€ÎºÇÂçÃÍ¡ÊTMAX_SUSCNT¡Ë€¬1€ËžÇÄê€µ€ì€Æ€€
+ *  €ë€Î€Ç¡€¶¯À©ÂÔ€ÁÍ×µá¥Í¥¹¥È¿ô¡Êsuscnt¡Ë€ÏÉ¬Í×€Ê€€¡¥
+ *
+ *  TCB€Î€€€¯€Ä€«€Î¥Õ¥£¡Œ¥ë¥É€Ï¡€ÆÃÄê€Î¥¿¥¹¥¯ŸõÂÖ€Ç€Î€ßÍ­žú€ÊÃÍ€òÊÝ»ý€·¡€
+ *  €œ€ì°Ê³°€ÎŸì¹ç€ÏÃÍ€¬ÊÝŸÚ€µ€ì€Ê€€¡Ê€è€Ã€Æ¡€»²ŸÈ€·€Æ€Ï€Ê€é€Ê€€¡Ë¡¥³Æ
+ *  ¥Õ¥£¡Œ¥ë¥É€¬Í­žú€ÊÃÍ€òÊÝ»ý€¹€ëŸò·ï€ÏŒ¡€ÎÄÌ€ê¡¥
+ *
+ *  ¡ŠœéŽü²œžå€ÏŸï€ËÍ­žú¡§
+ *  		p_tinib¡€tstat¡€actque
+ *  ¡ŠµÙ»ßŸõÂÖ°Ê³°€ÇÍ­žú¡ÊµÙ»ßŸõÂÖ€Ç€ÏœéŽüÃÍ€Ë€Ê€Ã€Æ€€€ë¡Ë¡§
+ *  		priority¡€wupque¡€enatex¡€texptn
+ *  ¡ŠÂÔ€ÁŸõÂÖ¡ÊÆóœÅÂÔ€ÁŸõÂÖ€òŽÞ€à¡Ë€ÇÍ­žú¡§
+ *  		p_winfo
+ *  ¡ŠŒÂ¹Ô€Ç€­€ëŸõÂÖ€ÈÆ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ËÂÐ€¹€ëÂÔ€ÁŸõÂÖ€ÇÍ­žú¡§
+ *  		task_queue
+ *  ¡ŠŒÂ¹Ô²ÄÇœŸõÂÖ¡€ÂÔ€ÁŸõÂÖ¡€¶¯À©ÂÔ€ÁŸõÂÖ¡€ÆóœÅÂÔ€ÁŸõÂÖ€ÇÍ­žú¡§
+ *  		tskctxb
+ */
+typedef struct task_control_block {
+	QUEUE			task_queue;		/* ¥¿¥¹¥¯¥­¥å¡Œ */
+	const TINIB		*p_tinib;		/* œéŽü²œ¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿ */
+
+#ifdef UINT8_MAX
+	uint8_t			tstat;			/* ¥¿¥¹¥¯ŸõÂÖ¡ÊÆâÉôÉœžœ¡Ë*/
+#else /* UINT8_MAX */
+	BIT_FIELD_UINT	tstat : 8;		/* ¥¿¥¹¥¯ŸõÂÖ¡ÊÆâÉôÉœžœ¡Ë*/
+#endif /* UINT8_MAX */
+#if defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8)
+	uint8_t			priority;		/* žœºß€ÎÍ¥ÀèÅÙ¡ÊÆâÉôÉœžœ¡Ë*/
+#else /* defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8) */
+	BIT_FIELD_UINT	priority : TBIT_TCB_PRIORITY;
+									/* žœºß€ÎÍ¥ÀèÅÙ¡ÊÆâÉôÉœžœ¡Ë*/
+#endif /* defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8) */
+	BIT_FIELD_BOOL	actque : 1;		/* µ¯Æ°Í×µá¥­¥å¡Œ¥€¥ó¥° */
+	BIT_FIELD_BOOL	wupque : 1;		/* µ¯Ÿ²Í×µá¥­¥å¡Œ¥€¥ó¥° */
+	BIT_FIELD_BOOL	enatex : 1;		/* ¥¿¥¹¥¯Îã³°œèÍýµö²ÄŸõÂÖ */
+
+	TEXPTN			texptn;			/* ÊÝÎ±Îã³°Í×°ø */
+	WINFO			*p_winfo;		/* ÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿ */
+	TSKCTXB			tskctxb;		/* ¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È¥Ö¥í¥Ã¥¯ */
+} TCB;
+
+/*
+ *  ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯
+ *
+ *  ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯¡Ê¡á¥×¥í¥»¥Ã¥µ€¬¥³¥ó¥Æ¥­¥¹¥È€ò»ý€Ã€Æ€€€ë¥¿¥¹¥¯¡Ë€Î
+ *  TCB€ò»Ø€¹¥Ý¥€¥ó¥¿¡¥ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€¬€Ê€€Ÿì¹ç€ÏNULL€Ë€¹€ë¡¥
+ *
+ *  ¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎœèÍýÃæ€Ç¡€Œ«¥¿¥¹¥¯¡Ê¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€òžÆ€ÓœÐ€·€¿¥¿¥¹
+ *  ¥¯¡Ë€ËŽØ€¹€ëŸðÊó€ò»²ŸÈ€¹€ëŸì¹ç€Ïp_runtsk€ò»È€Š¡¥p_runtsk€òœñ€­Ž¹€š
+ *  €ë€Î€Ï¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã¡Ê€ÈœéŽü²œœèÍý¡Ë€Î€ß€Ç€¢€ë¡¥
+ */
+extern TCB	*p_runtsk;
+
+/*
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯
+ *
+ *  ŒÂ¹Ô€Ç€­€ë¥¿¥¹¥¯€ÎÃæ€ÇºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ÎTCB€ò»Ø€¹¥Ý¥€¥ó¥¿¡¥ŒÂ
+ *  ¹Ô€Ç€­€ë¥¿¥¹¥¯€¬€Ê€€Ÿì¹ç€ÏNULL€Ë€¹€ë¡¥
+ *
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ€Ê€É¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬ÊÝÎ±€µ€ì€Æ€€€ëŽÖ€Ïp_runtsk
+ *  €È°ìÃ×€·€Æ€€€ë€È€ÏžÂ€é€Ê€€¡¥
+ */
+extern TCB	*p_schedtsk;
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¡¿¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óµ¯Æ°Í×µá¥Õ¥é¥°
+ *
+ *  ³ä¹þ€ß¥Ï¥ó¥É¥é¡¿CPUÎã³°¥Ï¥ó¥É¥é€ÎœÐžýœèÍý€Ë¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á€Þ€¿€Ï
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€Îµ¯Æ°€òÍ×µá€¹€ë€³€È€òŒš€¹¥Õ¥é¥°¡¥
+ */
+extern bool_t	reqflg;
+
+/*
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ
+ *
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ€Ç€¢€ë€³€È€òŒš€¹¥Õ¥é¥°¡¥
+ */
+extern bool_t	ipmflg;
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ
+ *
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ€Ç€¢€ë€³€È€òŒš€¹¥Õ¥é¥°¡¥
+ */
+extern bool_t	disdsp;
+
+/*
+ *  ¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á²ÄÇœŸõÂÖ
+ *
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ€Ç€¢€ê¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ€Ç€¢€ë¡Ê¥Ç¥£
+ *  ¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ€Ç€Ê€€¡Ë€³€È€òŒš€¹¥Õ¥é¥°¡¥
+ */
+extern bool_t	dspflg;
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ
+ *
+ *  ¥ì¥Ç¥£¥­¥å¡Œ€Ï¡€ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Î¥¿¥¹¥¯€òŽÉÍý€¹€ë€¿€á€Î¥­¥å¡Œ€Ç€¢€ë¡¥
+ *  ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€âŽÉÍý€·€Æ€€€ë€¿€á¡€¥ì¥Ç¥£¡ÊŒÂ¹Ô²ÄÇœ¡Ë¥­¥å¡Œ€È€€€Š
+ *  ÌŸŸÎ€ÏÀµ³Î€Ç€Ï€Ê€€€¬¡€¥ì¥Ç¥£¥­¥å¡Œ€È€€€ŠÌŸŸÎ€¬ÄêÃå€·€Æ€€€ë€¿€á¡€€³
+ *  €ÎÌŸŸÎ€ÇžÆ€Ö€³€È€Ë€¹€ë¡¥
+ *
+ *  ¥ì¥Ç¥£¥­¥å¡Œ€Ï¡€Í¥ÀèÅÙ€Ž€È€Î¥¿¥¹¥¯¥­¥å¡Œ€Ç¹œÀ®€µ€ì€Æ€€€ë¡¥¥¿¥¹¥¯€Î
+ *  TCB€Ï¡€³ºÅö€¹€ëÍ¥ÀèÅÙ€Î¥­¥å¡Œ€ËÅÐÏ¿€µ€ì€ë¡¥
+ */
+extern QUEUE	ready_queue[TNUM_TPRI];
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ¥µ¡Œ¥Á€Î€¿€á€Î¥Ó¥Ã¥È¥Þ¥Ã¥×
+ *
+ *  ¥ì¥Ç¥£¥­¥å¡Œ€Î¥µ¡Œ¥Á€òžúÎš€è€¯¹Ô€Š€¿€á€Ë¡€Í¥ÀèÅÙ€Ž€È€Î¥¿¥¹¥¯¥­¥å¡Œ
+ *  €Ë¥¿¥¹¥¯€¬Æþ€Ã€Æ€€€ë€«€É€Š€«€òŒš€¹¥Ó¥Ã¥È¥Þ¥Ã¥×€òÍÑ°Õ€·€Æ€€€ë¡¥¥Ó¥Ã
+ *  ¥È¥Þ¥Ã¥×€ò»È€Š€³€È€Ç¡€¥á¥â¥ê¥¢¥¯¥»¥¹€Î²ó¿ô€òžº€é€¹€³€È€¬€Ç€­€ë€¬¡€
+ *  ¥Ó¥Ã¥ÈÁàºîÌ¿Îá€¬œŒŒÂ€·€Æ€€€Ê€€¥×¥í¥»¥Ã¥µ€Ç¡€Í¥ÀèÅÙ€ÎÃÊ³¬¿ô€¬Ÿ¯€Ê€€
+ *  Ÿì¹ç€Ë€Ï¡€¥Ó¥Ã¥È¥Þ¥Ã¥×Áàºî€Î¥ª¡Œ¥Ð¡Œ¥Ø¥Ã¥É€Î€¿€á€Ë¡€µÕ€ËžúÎš€¬Íî€Á
+ *  €ë²ÄÇœÀ­€â€¢€ë¡¥
+ *
+ *  Í¥ÀèÅÙ€ÎÃÊ³¬¿ô€Ë€è€ê¡€¥Ó¥Ã¥È¥Þ¥Ã¥×€ò1ÃÊ³¬€Ë€¹€ë€«2ÃÊ³¬€Ë€¹€ë€«€ò·è
+ *  Äê€¹€ë¡¥2ÃÊ³¬€ÇÂ­€ê€Ê€€Ÿì¹ç€Ë€ÏÂÐ±þ€·€Æ€€€Ê€€¡¥
+ */
+#define TBIT_PRIMAP		16				/* ¥Ó¥Ã¥È¥Þ¥Ã¥×1€Ä€¢€¿€ê€ÎÃÊ³¬¿ô */
+
+#if TNUM_TPRI <= TBIT_PRIMAP
+#define PRIMAP_LEVEL_1					/* ¥Ó¥Ã¥È¥Þ¥Ã¥×€ò1ÃÊ³¬€Ë */
+#elif TNUM_TPRI <= TBIT_PRIMAP * TBIT_PRIMAP
+#define PRIMAP_LEVEL_2					/* ¥Ó¥Ã¥È¥Þ¥Ã¥×€ò2ÃÊ³¬€Ë */
+#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;					/* Í¥ÀèÅÙ¥Ó¥Ã¥È¥Þ¥Ã¥× */
+#else /* PRIMAP_LEVEL_1 */
+extern uint16_t	ready_primap1;					/* 1ÃÊÌÜ€ÎÍ¥ÀèÅÙ¥Ó¥Ã¥È¥Þ¥Ã¥× */
+extern uint16_t	ready_primap2[TNUM_PRIMAP2];	/* 2ÃÊÌÜ€ÎÍ¥ÀèÅÙ¥Ó¥Ã¥È¥Þ¥Ã¥× */
+#endif /* PRIMAP_LEVEL_1 */
+
+/*
+ *  ¥¿¥¹¥¯ID€ÎºÇÂçÃÍ¡Êkernel_cfg.c¡Ë
+ */
+extern const ID	tmax_tskid;
+
+/*
+ *  ¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern const TINIB	tinib_table[];
+
+/*
+ *  ¥¿¥¹¥¯ÀžÀ®œçœø¥Æ¡Œ¥Ö¥ë¡Êkernel_cfg.c¡Ë
+ */
+extern const ID	torder_table[];
+
+/*
+ *  TCB€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern TCB	tcb_table[];
+
+/*
+ *  ¥¿¥¹¥¯€Î¿ô
+ */
+#define tnum_tsk	((uint_t)(tmax_tskid - TMIN_TSKID + 1))
+
+/*
+ *  ¥¿¥¹¥¯ID€«€éTCB€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#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€«€é¥¿¥¹¥¯ID€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#define	TSKID(p_tcb)	((ID)(((p_tcb) - tcb_table) + TMIN_TSKID))
+
+/*
+ *  ¥¿¥¹¥¯ŽÉÍý¥â¥ž¥å¡Œ¥ë€ÎœéŽü²œ
+ */
+extern void	initialize_task(void);
+
+/*
+ *  ºÇ¹âÍ¥Àèœç°Ì¥¿¥¹¥¯€Î¥µ¡Œ¥Á
+ *
+ *  ¥ì¥Ç¥£¥­¥å¡ŒÃæ€ÎºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¥µ¡Œ¥Á€·¡€€œ€ÎTCB€Ø€Î¥Ý¥€¥ó¥¿
+ *  €òÊÖ€¹¡¥¥ì¥Ç¥£¥­¥å¡Œ€¬¶õ€ÎŸì¹ç€Ë€Ï¡€€³€ÎŽØ¿ô€òžÆ€ÓœÐ€·€Æ€Ï€Ê€é€Ê€€¡¥
+ */
+extern TCB	*search_schedtsk(void);
+
+/*
+ *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ò¥ì¥Ç¥£¥­¥å¡Œ€ËÁÞÆþ€¹€ë¡¥¥ì¥Ç¥£¥­¥å¡Œ€ËÁÞÆþ
+ *  €·€¿¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€¬¡€ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€è€ê€â¹â€€Ÿì¹ç€Ï¡€
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€·¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ€Ç€¢€ì€Ðtrue€òÊÖ
+ *  €¹¡¥€œ€Š€Ç€Ê€€Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥
+ */
+extern bool_t	make_runnable(TCB *p_tcb);
+
+/*
+ *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€«€éÂŸ€ÎŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ò¥ì¥Ç¥£¥­¥å¡Œ€«€éºïœü€¹€ë¡¥p_tcb€Ç»ØÄê€·€¿
+ *  ¥¿¥¹¥¯€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€Ç€¢€Ã€¿Ÿì¹ç€Ë€Ï¡€ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯
+ *  €òÀßÄê€·€Ê€ª€·¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ€Ç€¢€ì€Ðtrue€òÊÖ€¹¡¥€œ€Š€Ç€Ê€€
+ *  Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥¥¿¥¹¥¯€ÎŸõÂÖ€Ï¹¹¿·€·€Ê€€¡¥
+ */
+extern bool_t	make_non_runnable(TCB *p_tcb);
+
+/*
+ *  µÙ»ßŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ÎŸõÂÖ€òµÙ»ßŸõÂÖ€È€¹€ë¡¥€Þ€¿¡€¥¿¥¹¥¯€Îµ¯Æ°
+ *  »þ€ËœéŽü²œ€¹€Ù€­ÊÑ¿ô€ÎœéŽü²œ€È¡€¥¿¥¹¥¯µ¯Æ°€Î€¿€á€Î¥³¥ó¥Æ¥­¥¹¥È€òÀß
+ *  Äê€¹€ë¡¥
+ */
+extern void	make_dormant(TCB *p_tcb);
+
+/*
+ *  µÙ»ßŸõÂÖ€«€éŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ÎŸõÂÖ€òµÙ»ßŸõÂÖ€«€éŒÂ¹Ô€Ç€­€ëŸõÂÖ€È€¹€ë¡¥
+ *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€ËÁ«°Ü€·€¿¥¿¥¹¥¯€Ø€Î¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬É¬Í×€ÊŸì¹ç€Ïtrue¡€
+ *  €œ€Š€Ç€Ê€€Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥
+ */
+extern bool_t	make_active(TCB *p_tcb);
+
+/*
+ *  ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€ÎÊÑ¹¹
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€ònewpri¡ÊÆâÉôÉœžœ¡Ë€ËÊÑ¹¹€¹€ë¡¥€Þ€¿¡€
+ *  É¬Í×€ÊŸì¹ç€Ë€ÏºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€·¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ€Ç
+ *  €¢€ì€Ðtrue€òÊÖ€¹¡¥€œ€Š€Ç€Ê€€Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥
+ */
+extern bool_t	change_priority(TCB *p_tcb, uint_t newpri);
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ€Î²óÅŸ
+ *
+ *  ¥ì¥Ç¥£¥­¥å¡ŒÃæ€Î¡€pri€Ç»ØÄê€µ€ì€ëÍ¥ÀèÅÙ€Î¥¿¥¹¥¯¥­¥å¡Œ€ò²óÅŸ€µ€»€ë¡¥
+ *  €Þ€¿¡€É¬Í×€ÊŸì¹ç€Ë€ÏºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€òÊÑ¹¹€·¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬ÊÝ
+ *  Î±€µ€ì€Æ€€€Ê€±€ì€Ðtrue€òÊÖ€¹¡¥€œ€Š€Ç€Ê€€Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥
+ */
+extern bool_t	rotate_ready_queue(uint_t pri);
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎžÆœÐ€·
+ *
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€òžÆ€ÓœÐ€¹¡¥žÆ€ÓœÐ€¹Á°€Ë¡€ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€Î
+ *  ÊÝÎ±Îã³°Í×°ø€ò¥¯¥ê¥¢€·¡€¥¿¥¹¥¯Îã³°œèÍý¶Ø»ßŸõÂÖ€Ë€·¡€CPU¥í¥Ã¥¯€ò²ò
+ *  œü€¹€ë¡¥
+ *
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€«€éÌá€ë€È¡€€Þ€ºCPU¥í¥Ã¥¯ŸõÂÖ€ËÌá€·¡€€œ€ÎŽÖ
+ *  €ËÊÝÎ±Îã³°Í×°ø€¬0€Ç€Ê€¯€Ê€Ã€Æ€€€ì€Ð¡€ºÆ€Ó¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ò
+ *  žÆ€ÓœÐ€¹¡¥ÊÝÎ±Îã³°Í×°ø€¬0€ÎŸì¹ç€Ë€Ï¡€Îã³°œèÍýµö²ÄŸõÂÖ€Ë€·€ÆŽØ¿ô€«
+ *  €é¥ê¥¿¡Œ¥ó€¹€ë¡¥
+ *
+ *  €³€ÎŽØ¿ô€Ï¡€ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€¬¡€¥¿¥¹¥¯Îã³°œèÍýµö²ÄŸõÂÖ¡Êenatex€¬
+ *  true¡Ë€Ç¡€ÊÝÎ±Îã³°Í×°ø€¬0€Ç€Ê€€¡Êtexptn€¬0€Ç€Ê€€¡ËŸì¹ç€ËžÆ€ÓœÐ€¹€³
+ *  €È€òÁÛÄê€·€Æ€€€ë¡¥€³€ÎŽØ¿ô€Ï¡€CPU¥í¥Ã¥¯ŸõÂÖ€ÇžÆ€ÓœÐ€µ€Ê€±€ì€Ð€Ê€é
+ *  €Ê€€¡¥
+ */
+extern void	call_texrtn(void);
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€Îµ¯Æ°
+ *
+ *  ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€¬¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€Îµ¯Æ°Ÿò·ï€òËþ€¿€·€Æ€€€ì€Ð¡€
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€òžÆ€ÓœÐ€¹¡¥CPUÎã³°œèÍý¥ë¡Œ¥Á¥ó€òžÆ€ÓœÐ€¹»þ
+ *  €Ï¡€°ì»þÅª€ËCPU¥í¥Ã¥¯€ò²òœü€¹€ë¡¥
+ *
+ *  €³€ÎŽØ¿ô€Ï¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã€ä³ä¹þ€ß¥Ï¥ó¥É¥é¡¿CPUÎã³°¥Ï¥ó¥É¥é€ÎœÐžý
+ *  œèÍý€«€éžÆ€ÓœÐ€µ€ì€ë€³€È€òÁÛÄê€·€Æ€€€ë¡¥€³€ÎŽØ¿ô€Ï¡€CPU¥í¥Ã¥¯ŸõÂÖ
+ *  €ÇžÆ€ÓœÐ€µ€Ê€±€ì€Ð€Ê€é€Ê€€¡¥
+ *
+ *  ŒÂ¹ÔžúÎš€òŸå€²€ë€¿€á€Ë¡€€³€ÎŽØ¿ô€ò¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€Çµ­œÒ€·€Æ€â€è€€¡¥
+ *  €œ€ÎŸì¹ç€Ë€Ï¡€OMIT_CALLTEX€ò¥Þ¥¯¥íÄêµÁ€¹€ë¡¥
+ */
+extern void	calltex(void);
+
+#endif /* TOPPERS_TASK_H */
Index: /extension/pri_level/test/test_task1.h
===================================================================
--- /extension/pri_level/test/test_task1.h	(revision 7)
+++ /extension/pri_level/test/test_task1.h	(revision 7)
@@ -0,0 +1,76 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/* 
+ *		¥¿¥¹¥¯ŽÉÍý¥â¥ž¥å¡Œ¥ë€Î¥Æ¥¹¥È(1)
+ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎÄêµÁ
+ */
+#include "target_test.h"
+
+/*
+ *  Í¥ÀèÅÙ€ÎÄêµÁ
+ */
+#define HIGH_PRIORITY	18		/* ¹âÍ¥ÀèÅÙ */
+#define MID_PRIORITY	137		/* ÃæÍ¥ÀèÅÙ */
+#define LOW_PRIORITY	255		/* ÄãÍ¥ÀèÅÙ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È€Ë°ÍÂž€¹€ë²ÄÇœÀ­€Î€¢€ëÄê¿ô€ÎÄêµÁ
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯¥µ¥€¥º */
+#endif /* STACK_SIZE */
+
+/*
+ *  ŽØ¿ô€Î¥×¥í¥È¥¿¥€¥×ÀëžÀ
+ */
+#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: /extension/rstr_task/include/kernel.h
===================================================================
--- /extension/rstr_task/include/kernel.h	(revision 7)
+++ /extension/rstr_task/include/kernel.h	(revision 7)
@@ -0,0 +1,504 @@
+/*
+ *  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-2014 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$
+ */
+
+/*
+ *		TOPPERS/ASP¥«¡Œ¥Í¥ë Éžœà¥Ø¥Ã¥À¥Õ¥¡¥€¥ë
+ *
+ *  TOPPERS/ASP¥«¡Œ¥Í¥ë€¬¥µ¥Ý¡Œ¥È€¹€ë¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎÀëžÀ€È¡€É¬Í×€Ê¥Ç¡Œ
+ *  ¥¿·¿¡€Äê¿ô¡€¥Þ¥¯¥í€ÎÄêµÁ€òŽÞ€à¥Ø¥Ã¥À¥Õ¥¡¥€¥ë¡¥
+ *
+ *  ¥¢¥»¥ó¥Ö¥êžÀžì€Î¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€«€é€³€Î¥Õ¥¡¥€¥ë€ò¥€¥ó¥¯¥ë¡Œ¥É€¹€ë»þ
+ *  €Ï¡€TOPPERS_MACRO_ONLY€òÄêµÁ€·€Æ€ª€¯¡¥€³€ì€Ë€è€ê¡€¥Þ¥¯¥íÄêµÁ°Ê³°€ò
+ *  œü€¯€è€Š€Ë€Ê€Ã€Æ€€€ë¡¥
+ *
+ *  €³€Î¥Õ¥¡¥€¥ë€ò¥€¥ó¥¯¥ë¡Œ¥É€¹€ëÁ°€Ë¥€¥ó¥¯¥ë¡Œ¥É€·€Æ€ª€¯€Ù€­¥Õ¥¡¥€¥ë
+ *  €Ï€Ê€€¡¥
+ */
+
+#ifndef TOPPERS_KERNEL_H
+#define TOPPERS_KERNEL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *	TOPPERS¶ŠÄÌ€Î¥Ç¡Œ¥¿·¿¡ŠÄê¿ô¡Š¥Þ¥¯¥í
+ */
+#include <t_stddef.h>
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô
+ */
+#include "target_kernel.h"
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  ¥Ç¡Œ¥¿·¿€ÎÄêµÁ
+ */
+
+/*
+ *  ¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó€ä¥ª¥Ö¥ž¥§¥¯¥ÈÈÖ¹æ€Î·¿ÄêµÁ
+ */
+typedef	uint_t		TEXPTN;		/* ¥¿¥¹¥¯Îã³°Í×°ø€Î¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó */
+typedef	uint_t		FLGPTN;		/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€Î¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó */
+typedef	uint_t		INTNO;		/* ³ä¹þ€ßÈÖ¹æ */
+typedef	uint_t		INHNO;		/* ³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ */
+typedef	uint_t		EXCNO;		/* CPUÎã³°¥Ï¥ó¥É¥éÈÖ¹æ */
+
+/*
+ *  œèÍýÃ±°Ì€Î·¿ÄêµÁ
+ */
+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);
+
+/*
+ *  ¥á¥â¥êÎÎ°è³ÎÊÝ€Î€¿€á€Î·¿ÄêµÁ
+ */
+#ifndef TOPPERS_STK_T
+#define TOPPERS_STK_T	intptr_t
+#endif /* TOPPERS_STK_T */
+typedef	TOPPERS_STK_T	STK_T;	/* ¥¹¥¿¥Ã¥¯ÎÎ°è€ò³ÎÊÝ€¹€ë€¿€á€Î·¿ */
+
+#ifndef TOPPERS_MPF_T
+#define TOPPERS_MPF_T	intptr_t
+#endif /* TOPPERS_MPF_T */
+typedef	TOPPERS_MPF_T	MPF_T;	/* žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÎÎ°è€ò³ÎÊÝ€¹€ë€¿€á€Î·¿ */
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ø¥Ã¥À€Î·¿ÄêµÁ
+ */
+typedef	struct t_msg {			/* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€Î¥á¥Ã¥»¡Œ¥ž¥Ø¥Ã¥À */
+	struct t_msg	*pk_next;
+} T_MSG;
+
+typedef	struct t_msg_pri {		/* Í¥ÀèÅÙÉÕ€­¥á¥Ã¥»¡Œ¥ž¥Ø¥Ã¥À */
+	T_MSG	msgque;				/* ¥á¥Ã¥»¡Œ¥ž¥Ø¥Ã¥À */
+	PRI		msgpri;				/* ¥á¥Ã¥»¡Œ¥žÍ¥ÀèÅÙ */
+} T_MSG_PRI;
+
+/*
+ *  ¥Ñ¥±¥Ã¥È·ÁŒ°€ÎÄêµÁ
+ */
+typedef struct t_rtsk {
+	STAT	tskstat;	/* ¥¿¥¹¥¯ŸõÂÖ */
+	PRI		tskpri;		/* ¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ */
+	PRI		tskbpri;	/* ¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ */
+	STAT	tskwait;	/* ÂÔ€ÁÍ×°ø */
+	ID		wobjid;		/* ÂÔ€ÁÂÐŸÝ€Î¥ª¥Ö¥ž¥§¥¯¥È€ÎID */
+	TMO		lefttmo;	/* ¥¿¥€¥à¥¢¥Š¥È€¹€ë€Þ€Ç€Î»þŽÖ */
+	uint_t	actcnt;		/* µ¯Æ°Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô */
+	uint_t	wupcnt;		/* µ¯Ÿ²Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô */
+} T_RTSK;
+
+typedef struct t_rtex {
+	STAT	texstat;	/* ¥¿¥¹¥¯Îã³°œèÍý€ÎŸõÂÖ */
+	TEXPTN	pndptn;		/* ÊÝÎ±Îã³°Í×°ø */
+} T_RTEX;
+
+typedef struct t_rsem {
+	ID		wtskid;		/* ¥»¥Þ¥Õ¥©€ÎÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
+	uint_t	semcnt;		/* ¥»¥Þ¥Õ¥©€Îžœºß€Î»ñž»¿ô */
+} T_RSEM;
+
+typedef struct t_rflg {
+	ID		wtskid;		/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
+	FLGPTN	flgptn;		/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€Îžœºß€Î¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó */
+} T_RFLG;
+
+typedef struct t_rdtq {
+	ID		stskid;		/* ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎÁ÷¿®ÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
+	ID		rtskid;		/* ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎŒõ¿®ÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
+	uint_t	sdtqcnt;	/* ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€Ë³ÊÇŒ€µ€ì€Æ€€€ë¥Ç¡Œ¥¿€Î¿ô */
+} T_RDTQ;
+
+typedef struct t_rpdq {
+	ID		stskid;		/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎÁ÷¿®ÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯
+						   €ÎIDÈÖ¹æ */
+	ID		rtskid;		/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎŒõ¿®ÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯
+						   €ÎIDÈÖ¹æ */
+	uint_t	spdqcnt;	/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€Ë³ÊÇŒ€µ€ì€Æ€€€ë¥Ç¡Œ
+						   ¥¿€Î¿ô */
+} T_RPDQ;
+
+typedef struct t_rmbx {
+	ID		wtskid;		/* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€ÎÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
+	T_MSG	*pk_msg;	/* ¥á¥Ã¥»¡Œ¥ž¥­¥å¡Œ€ÎÀèÆ¬€Ë€Ä€Ê€¬€ì€¿¥á¥Ã¥»¡Œ¥ž
+						   €ÎÀèÆ¬ÈÖÃÏ */
+} T_RMBX;
+
+typedef struct t_rmpf {
+	ID		wtskid;		/* žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ë€ÎÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€Î
+						   IDÈÖ¹æ */
+	uint_t	fblkcnt;	/* žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÎÎ°è€Î¶õ€­¥á¥â¥êÎÎ°è€Ë³ä€ê
+						   ÉÕ€±€ë€³€È€¬€Ç€­€ëžÇÄêÄ¹¥á¥â¥ê¥Ö¥í¥Ã¥¯€Î¿ô */
+} T_RMPF;
+
+typedef struct t_rcyc {
+	STAT	cycstat;	/* ŒþŽü¥Ï¥ó¥É¥é€ÎÆ°ºîŸõÂÖ */
+	RELTIM	lefttim;	/* Œ¡€ËŒþŽü¥Ï¥ó¥É¥é€òµ¯Æ°€¹€ë»þ¹ï€Þ€Ç€ÎÁêÂÐ»þŽÖ */
+} T_RCYC;
+
+typedef struct t_ralm {
+	STAT	almstat;	/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ÎÆ°ºîŸõÂÖ */
+	RELTIM	lefttim;	/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€òµ¯Æ°€¹€ë»þ¹ï€Þ€Ç€ÎÁêÂÐ»þŽÖ */
+} T_RALM;
+
+/*
+ *  ¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎÀëžÀ
+ */
+
+/*
+ *  ¥¿¥¹¥¯ŽÉÍýµ¡Çœ
+ */
+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();
+
+/*
+ *  ¥¿¥¹¥¯ÉÕÂ°Æ±Žüµ¡Çœ
+ */
+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();
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍýµ¡Çœ
+ */
+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();
+
+/*
+ *  Æ±Žü¡ŠÄÌ¿®µ¡Çœ
+ */
+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		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		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Îã³°ŽÉÍýµ¡Çœ
+ */
+extern bool_t	xsns_dpn(void *p_excinf) throw();
+extern bool_t	xsns_xpn(void *p_excinf) throw();
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  ¥ª¥Ö¥ž¥§¥¯¥ÈÂ°À­€ÎÄêµÁ
+ */
+#define TA_ACT			UINT_C(0x02)	/* ¥¿¥¹¥¯€òµ¯Æ°€µ€ì€¿ŸõÂÖ€ÇÀžÀ® */
+#define TA_RSTR			UINT_C(0x04)	/* À©Ìó¥¿¥¹¥¯ */
+
+#define TA_TPRI			UINT_C(0x01)	/* ¥¿¥¹¥¯€ÎÂÔ€Á¹ÔÎó€òÍ¥ÀèÅÙœç€Ë */
+#define TA_MPRI			UINT_C(0x02)	/* ¥á¥Ã¥»¡Œ¥ž¥­¥å¡Œ€òÍ¥ÀèÅÙœç€Ë */
+
+#define TA_WMUL			UINT_C(0x02)	/* Ê£¿ô€ÎÂÔ€Á¥¿¥¹¥¯ */
+#define TA_CLR			UINT_C(0x04)	/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€Î¥¯¥ê¥¢»ØÄê */
+
+#define TA_STA			UINT_C(0x02)	/* ŒþŽü¥Ï¥ó¥É¥é€òÆ°ºîŸõÂÖ€ÇÀžÀ® */
+
+#define TA_NONKERNEL	UINT_C(0x02)	/* ¥«¡Œ¥Í¥ëŽÉÍý³°€Î³ä¹þ€ß */
+
+#define TA_ENAINT		UINT_C(0x01)	/* ³ä¹þ€ßÍ×µá¶Ø»ß¥Õ¥é¥°€ò¥¯¥ê¥¢ */
+#define TA_EDGE			UINT_C(0x02)	/* ¥š¥Ã¥ž¥È¥ê¥¬ */
+
+/*
+ *  ¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎÆ°ºî¥â¡Œ¥É€ÎÄêµÁ
+ */
+#define TWF_ORW			UINT_C(0x01)	/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎORÂÔ€Á */
+#define TWF_ANDW		UINT_C(0x02)	/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎANDÂÔ€Á */
+
+/*
+ *  ¥ª¥Ö¥ž¥§¥¯¥È€ÎŸõÂÖ€ÎÄêµÁ
+ */
+#define TTS_RUN			UINT_C(0x01)	/* ŒÂ¹ÔŸõÂÖ */
+#define TTS_RDY			UINT_C(0x02)	/* ŒÂ¹Ô²ÄÇœŸõÂÖ */
+#define TTS_WAI			UINT_C(0x04)	/* ÂÔ€ÁŸõÂÖ */
+#define TTS_SUS			UINT_C(0x08)	/* ¶¯À©ÂÔ€ÁŸõÂÖ */
+#define TTS_WAS			UINT_C(0x0c)	/* ÆóœÅÂÔ€ÁŸõÂÖ */
+#define TTS_DMT			UINT_C(0x10)	/* µÙ»ßŸõÂÖ */
+
+#define TTW_SLP			UINT_C(0x0001)	/* µ¯Ÿ²ÂÔ€Á */
+#define TTW_DLY			UINT_C(0x0002)	/* »þŽÖ·Ð²áÂÔ€Á */
+#define TTW_SEM			UINT_C(0x0004)	/* ¥»¥Þ¥Õ¥©€Î»ñž»³ÍÆÀÂÔ€Á */
+#define TTW_FLG			UINT_C(0x0008)	/* ¥€¥Ù¥ó¥È¥Õ¥é¥°ÂÔ€Á */
+#define TTW_SDTQ		UINT_C(0x0010)	/* ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®ÂÔ€Á */
+#define TTW_RDTQ		UINT_C(0x0020)	/* ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TTW_SPDQ		UINT_C(0x0100)	/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®ÂÔ€Á */
+#define TTW_RPDQ		UINT_C(0x0200)	/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TTW_MBX			UINT_C(0x0040)	/* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TTW_MPF			UINT_C(0x2000)	/* žÇÄêÄ¹¥á¥â¥ê¥Ö¥í¥Ã¥¯€Î³ÍÆÀÂÔ€Á */
+
+#define TTEX_ENA		UINT_C(0x01)	/* ¥¿¥¹¥¯Îã³°œèÍýµö²ÄŸõÂÖ */
+#define TTEX_DIS		UINT_C(0x02)	/* ¥¿¥¹¥¯Îã³°œèÍý¶Ø»ßŸõÂÖ */
+
+#define TCYC_STP		UINT_C(0x01)	/* ŒþŽü¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€Ê€€ */
+#define TCYC_STA		UINT_C(0x02)	/* ŒþŽü¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€ë */
+
+#define TALM_STP		UINT_C(0x01)	/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€Ê€€ */
+#define TALM_STA		UINT_C(0x02)	/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€ë */
+
+/*
+ *  €œ€ÎÂŸ€ÎÄê¿ô€ÎÄêµÁ
+ */
+#define TSK_SELF		0			/* Œ«¥¿¥¹¥¯»ØÄê */
+#define TSK_NONE		0			/* ³ºÅö€¹€ë¥¿¥¹¥¯€¬€Ê€€ */
+
+#define TPRI_SELF		0			/* Œ«¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ */
+#define TPRI_INI		0			/* ¥¿¥¹¥¯€Îµ¯Æ°»þÍ¥ÀèÅÙ */
+
+#define TIPM_ENAALL		0			/* ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœü */
+
+/*
+ *  ¹œÀ®Äê¿ô€È¥Þ¥¯¥í
+ */
+
+/*
+ *  ¥µ¥Ý¡Œ¥È€¹€ëµ¡Çœ
+ */
+#ifdef TOPPERS_TARGET_SUPPORT_DIS_INT
+#define TOPPERS_SUPPORT_DIS_INT			/* dis_int€¬¥µ¥Ý¡Œ¥È€µ€ì€Æ€€€ë */
+#endif /* TOPPERS_TARGET_SUPPORT_DIS_INT */
+
+#ifdef TOPPERS_TARGET_SUPPORT_ENA_INT
+#define TOPPERS_SUPPORT_ENA_INT			/* ena_int€¬¥µ¥Ý¡Œ¥È€µ€ì€Æ€€€ë */
+#endif /* TOPPERS_TARGET_SUPPORT_ENA_INT */
+
+#ifdef TOPPERS_TARGET_SUPPORT_GET_UTM
+#define TOPPERS_SUPPORT_GET_UTM			/* get_utm€¬¥µ¥Ý¡Œ¥È€µ€ì€Æ€€€ë */
+#endif /* TOPPERS_TARGET_SUPPORT_GET_UTM */
+
+#define TOPPERS_SUPPORT_RSTR_TASK		/* À©Ìó¥¿¥¹¥¯µ¡Çœ³ÈÄ¥ */
+
+/*
+ *  Í¥ÀèÅÙ€ÎÈÏ°Ï
+ */
+#define TMIN_TPRI		1			/* ¥¿¥¹¥¯Í¥ÀèÅÙ€ÎºÇŸ®ÃÍ¡ÊºÇ¹âÃÍ¡Ë*/
+#define TMAX_TPRI		16			/* ¥¿¥¹¥¯Í¥ÀèÅÙ€ÎºÇÂçÃÍ¡ÊºÇÄãÃÍ¡Ë*/
+#define TMIN_DPRI		1			/* ¥Ç¡Œ¥¿Í¥ÀèÅÙ€ÎºÇŸ®ÃÍ¡ÊºÇ¹âÃÍ¡Ë*/
+#define TMAX_DPRI		16			/* ¥Ç¡Œ¥¿Í¥ÀèÅÙ€ÎºÇÂçÃÍ¡ÊºÇÄãÃÍ¡Ë*/
+#define TMIN_MPRI		1			/* ¥á¥Ã¥»¡Œ¥žÍ¥ÀèÅÙ€ÎºÇŸ®ÃÍ¡ÊºÇ¹âÃÍ¡Ë*/
+#define TMAX_MPRI		16			/* ¥á¥Ã¥»¡Œ¥žÍ¥ÀèÅÙ€ÎºÇÂçÃÍ¡ÊºÇÄãÃÍ¡Ë*/
+#define TMIN_ISRPRI		1			/* ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óÍ¥ÀèÅÙ€ÎºÇŸ®ÃÍ */
+#define TMAX_ISRPRI		16			/* ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óÍ¥ÀèÅÙ€ÎºÇÂçÃÍ */
+
+/*
+ *  ¥Ð¡Œ¥ž¥ç¥óŸðÊó
+ */
+#define TKERNEL_MAKER	UINT_C(0x0118)	/* ¥«¡Œ¥Í¥ë€Î¥á¡Œ¥«¡Œ¥³¡Œ¥É */
+#define TKERNEL_PRID	UINT_C(0x0007)	/* ¥«¡Œ¥Í¥ë€ÎŒ±ÊÌÈÖ¹æ */
+#define TKERNEL_SPVER	UINT_C(0xf517)	/* ¥«¡Œ¥Í¥ë»ÅÍÍ€Î¥Ð¡Œ¥ž¥ç¥óÈÖ¹æ */
+#define TKERNEL_PRVER	UINT_C(0x1092)	/* ¥«¡Œ¥Í¥ë€Î¥Ð¡Œ¥ž¥ç¥óÈÖ¹æ */
+
+/*
+ *  ¥­¥å¡Œ¥€¥ó¥°²ó¿ô€ÎºÇÂçÃÍ
+ */
+#define TMAX_ACTCNT		UINT_C(1)		/* µ¯Æ°Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô€ÎºÇÂçÃÍ */
+#define TMAX_WUPCNT		UINT_C(1)		/* µ¯Ÿ²Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô€ÎºÇÂçÃÍ */
+
+/*
+ *  ¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó€Î¥Ó¥Ã¥È¿ô
+ */
+#ifndef TBIT_TEXPTN					/* ¥¿¥¹¥¯Îã³°Í×°ø€Î¥Ó¥Ã¥È¿ô */
+#define TBIT_TEXPTN		(sizeof(TEXPTN) * CHAR_BIT)
+#endif /* TBIT_TEXPTN */
+
+#ifndef TBIT_FLGPTN					/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€Î¥Ó¥Ã¥È¿ô */
+#define TBIT_FLGPTN		(sizeof(FLGPTN) * CHAR_BIT)
+#endif /* TBIT_FLGPTN */
+
+/*
+ *  ¥á¥â¥êÎÎ°è³ÎÊÝ€Î€¿€á€Î¥Þ¥¯¥í
+ *
+ *  °Ê²Œ€ÎTOPPERS_COUNT_SZ€ÈTOPPERS_ROUND_SZ€ÎÄêµÁ€Ï¡€unit€¬2€Î¶ÒŸè€Ç€¢
+ *  €ë€³€È€ò²ŸÄê€·€Æ€€€ë¡¥
+ */
+#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	/* ¥»¥Þ¥Õ¥©€ÎºÇÂç»ñž»¿ô€ÎºÇÂçÃÍ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* TOPPERS_KERNEL_H */
Index: /extension/rstr_task/kernel/Makefile.kernel
===================================================================
--- /extension/rstr_task/kernel/Makefile.kernel	(revision 7)
+++ /extension/rstr_task/kernel/Makefile.kernel	(revision 7)
@@ -0,0 +1,136 @@
+#
+#  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
+# 
+#  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+#  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+#  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+#  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+#      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+#      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+#  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+#      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+#      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+#      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+#  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+#      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+#      €È¡¥
+#    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+#        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+#    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+#        Êó¹ð€¹€ë€³€È¡¥
+#  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+#      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+#      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+#      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+#      ÌÈÀÕ€¹€ë€³€È¡¥
+# 
+#  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+#  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+#  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+#  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+#  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+# 
+#  $Id$
+# 
+
+#
+#		¥«¡Œ¥Í¥ë€Î¥Õ¥¡¥€¥ë¹œÀ®€ÎÄêµÁ
+#
+
+#
+#  1€Ä€Î¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€«€éÊ£¿ô€Î¥ª¥Ö¥ž¥§¥¯¥È¥Õ¥¡¥€¥ë€òÀžÀ®€¹€ë€è€Š€Ëºî
+#  À®€µ€ì€¿¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€Î¥ê¥¹¥È
+#
+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
+
+#
+#  ³Æ¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€«€éÀžÀ®€µ€ì€ë¥ª¥Ö¥ž¥§¥¯¥È¥Õ¥¡¥€¥ë€Î¥ê¥¹¥È
+#
+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
+
+#
+#  ÀžÀ®€µ€ì€ë¥ª¥Ö¥ž¥§¥¯¥È¥Õ¥¡¥€¥ë€Î°ÍÂžŽØ·ž€ÎÄêµÁ
+#
+$(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: /extension/rstr_task/kernel/allfunc.h
===================================================================
--- /extension/rstr_task/kernel/allfunc.h	(revision 7)
+++ /extension/rstr_task/kernel/allfunc.h	(revision 7)
@@ -0,0 +1,243 @@
+/*
+ *  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$
+ */
+
+/*
+ *		€¹€Ù€Æ€ÎŽØ¿ô€ò¥³¥ó¥Ñ¥€¥ë€¹€ë€¿€á€ÎÄêµÁ
+ */
+
+#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: /extension/rstr_task/kernel/check.h
===================================================================
--- /extension/rstr_task/kernel/check.h	(revision 7)
+++ /extension/rstr_task/kernel/check.h	(revision 7)
@@ -0,0 +1,299 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  $Id$
+ */
+
+/*
+ *		¥š¥é¡Œ¥Á¥§¥Ã¥¯ÍÑ¥Þ¥¯¥í
+ */
+
+#ifndef TOPPERS_CHECK_H
+#define TOPPERS_CHECK_H
+
+/*
+ *  Í¥ÀèÅÙ€ÎÈÏ°Ï€ÎÈœÄê
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯Í¥ÀèÅÙ€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
+ */
+#define CHECK_TPRI(tpri) do {								\
+	if (!VALID_TPRI(tpri)) {								\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_TPRI_INI(tpri) do {							\
+	if (!(VALID_TPRI(tpri) || (tpri) == TPRI_INI)) {		\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_TPRI_SELF(tpri) do {							\
+	if (!(VALID_TPRI(tpri) || (tpri) == TPRI_SELF)) {		\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  ¥¿¥€¥à¥¢¥Š¥È»ØÄêÃÍ€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
+ */
+#define CHECK_TMOUT(tmout) do {								\
+	if (!(TMO_FEVR <= (tmout))) {							\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
+ */
+#define CHECK_INTPRI_CHGIPM(intpri) do {					\
+	if (!VALID_INTPRI_CHGIPM(intpri)) {						\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  ³ä¹þ€ßÈÖ¹æ€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
+ */
+#define CHECK_INTNO_DISINT(intno) do {						\
+	if (!VALID_INTNO_DISINT(intno)) {						\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  €œ€ÎÂŸ€Î¥Ñ¥é¥á¡Œ¥¿¥š¥é¡Œ€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
+ */
+#define CHECK_PAR(exp) do {									\
+	if (!(exp)) {											\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  ¥ª¥Ö¥ž¥§¥¯¥ÈID€ÎÈÏ°Ï€ÎÈœÄê
+ */
+#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)
+
+/*
+ *  ¥ª¥Ö¥ž¥§¥¯¥ÈID€Î¥Á¥§¥Ã¥¯¡ÊE_ID¡Ë
+ */
+#define CHECK_TSKID(tskid) do {								\
+	if (!VALID_TSKID(tskid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_TSKID_SELF(tskid) do {						\
+	if (!(VALID_TSKID(tskid) || (tskid) == TSK_SELF)) {		\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_SEMID(semid) do {								\
+	if (!VALID_SEMID(semid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_FLGID(flgid) do {								\
+	if (!VALID_FLGID(flgid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_DTQID(dtqid) do {								\
+	if (!VALID_DTQID(dtqid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_PDQID(pdqid) do {								\
+	if (!VALID_PDQID(pdqid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_MBXID(mbxid) do {								\
+	if (!VALID_MBXID(mbxid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_MPFID(mpfid) do {								\
+	if (!VALID_MPFID(mpfid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_CYCID(cycid) do {								\
+	if (!VALID_CYCID(cycid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_ALMID(almid) do {								\
+	if (!VALID_ALMID(almid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  žÆœÐ€·¥³¥ó¥Æ¥­¥¹¥È€Î¥Á¥§¥Ã¥¯¡ÊE_CTX¡Ë
+ */
+#define CHECK_TSKCTX() do {									\
+	if (sense_context()) {									\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_INTCTX() do {									\
+	if (!sense_context()) {									\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  žÆœÐ€·¥³¥ó¥Æ¥­¥¹¥È€ÈCPU¥í¥Ã¥¯ŸõÂÖ€Î¥Á¥§¥Ã¥¯¡ÊE_CTX¡Ë
+ */
+#define CHECK_TSKCTX_UNL() do {								\
+	if (sense_context() || t_sense_lock()) {				\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_INTCTX_UNL() do {								\
+	if (!sense_context() || i_sense_lock()) {				\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥ÁÊÝÎ±ŸõÂÖ€Ç€Ê€€€«€Î¥Á¥§¥Ã¥¯¡ÊE_CTX¡Ë
+ *  Œ«¥¿¥¹¥¯€¬À©Ìó¥¿¥¹¥¯€Ç€Ê€€€«€Î¥Á¥§¥Ã¥¯¡ÊE_NOSPT¡Ë
+ */
+#define CHECK_DISPATCH() do {								\
+	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;									\
+	}														\
+} while (false)
+
+/*
+ *  ÂÐŸÝ¥¿¥¹¥¯€¬À©Ìó¥¿¥¹¥¯€Ç€Ê€€€«€Î¥Á¥§¥Ã¥¯¡ÊE_NOSPT¡Ë
+ */
+#define CHECK_NONRSTR(p_tcb) do {							\
+	if (((p_tcb)->p_tinib->tskatr & TA_RSTR) != 0U) {		\
+		ercd = E_NOSPT;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  €œ€ÎÂŸ€Î¥³¥ó¥Æ¥­¥¹¥È¥š¥é¡Œ€Î¥Á¥§¥Ã¥¯¡ÊE_CTX¡Ë
+ */
+#define CHECK_CTX(exp) do {									\
+	if (!(exp)) {											\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  Œ«¥¿¥¹¥¯€ò»ØÄê€·€Æ€€€Ê€€€«€Î¥Á¥§¥Ã¥¯¡ÊE_ILUSE¡Ë
+ */
+#define CHECK_NONSELF(p_tcb) do {							\
+	if ((p_tcb) == p_runtsk) {								\
+		ercd = E_ILUSE;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  €œ€ÎÂŸ€ÎÉÔÀµ»ÈÍÑ¥š¥é¡Œ€Î¥Á¥§¥Ã¥¯¡ÊE_ILUSE¡Ë
+ */
+#define CHECK_ILUSE(exp) do {								\
+	if (!(exp)) {											\
+		ercd = E_ILUSE;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#endif /* TOPPERS_CHECK_H */
Index: /extension/rstr_task/kernel/kernel.tf
===================================================================
--- /extension/rstr_task/kernel/kernel.tf	(revision 7)
+++ /extension/rstr_task/kernel/kernel.tf	(revision 7)
@@ -0,0 +1,1116 @@
+$ ======================================================================
+$ 
+$   TOPPERS/ASP Kernel
+$       Toyohashi Open Platform for Embedded Real-Time Systems/
+$       Advanced Standard Profile Kernel
+$ 
+$   Copyright (C) 2007 by TAKAGI Nobuhisa
+$   Copyright (C) 2007-2015 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$
+$  
+$ =====================================================================
+
+$ =====================================================================
+$ 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$
+#if TKERNEL_PRID != 0x07u$NL$
+#error The kernel does not match this configuration file.$NL$
+#endif$NL$
+$NL$
+
+$ 
+$  ¥€¥ó¥¯¥ë¡Œ¥É¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¡Ê#include¡Ë
+$ 
+/*$NL$
+$SPC$*  Include Directives (#include)$NL$
+$SPC$*/$NL$
+$NL$
+$INCLUDES$
+$NL$
+
+$ 
+$  ¥ª¥Ö¥ž¥§¥¯¥È€Î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$
+
+$
+$  ¥¹¥¿¥Ã¥¯ÎÎ°è€Î³ÎÊÝŽØ¿ô
+$
+$IF !ISFUNCTION("ALLOC_STACK")$
+$FUNCTION ALLOC_STACK$
+$	// Âç€­€€Êý€ËŽÝ€á€¿¥µ¥€¥º€Ç³ÎÊÝ€¹€ë
+	static STK_T $ARGV[1]$[COUNT_STK_T($ARGV[2]$)];$NL$
+	$RESULT = FORMAT("ROUND_STK_T(%1%)", ARGV[2])$
+$END$
+$END$
+
+$ 
+$  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+$ 
+/*$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$
+
+$ 
+$  ¥¿¥¹¥¯
+$ 
+/*$NL$
+$SPC$*  Task Management Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ¥¿¥¹¥¯€¬1žÄ°ÊŸåÂžºß€¹€ë€³€È€Î¥Á¥§¥Ã¥¯
+$IF !LENGTH(TSK.ID_LIST)$
+	$ERROR$$FORMAT(_("no task is registered"))$$END$
+$END$
+
+$ ¥¿¥¹¥¯IDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_tskid = (TMIN_TSKID + TNUM_TSKID - 1);$NL$
+$NL$
+
+$ ¥š¥é¡Œ¥Á¥§¥Ã¥¯
+$FOREACH tskid TSK.ID_LIST$
+$	// tskatr€¬¡Ê¡ÎTA_ACT|TA_RSTR¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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$
+
+$ ¥¹¥¿¥Ã¥¯ÎÎ°è€ËŽØ€¹€ë¥š¥é¡Œ¥Á¥§¥Ã¥¯
+$FOREACH tskid TSK.ID_LIST$
+$	// stksz€¬0°Ê²Œ€«¡€¥¿¡Œ¥²¥Ã¥ÈÄêµÁ€ÎºÇŸ®ÃÍ¡ÊTARGET_MIN_STKSZ¡Ë€è€ê€â
+$	// Ÿ®€µ€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$IF TSK.STKSZ[tskid] <= 0 || (TARGET_MIN_STKSZ
+									&& TSK.STKSZ[tskid] < TARGET_MIN_STKSZ)$
+		$ERROR TSK.TEXT_LINE[tskid]$E_PAR: $FORMAT(_("too small %1% `%2%\' of `%3%\' in %4%"), "stksz", TSK.STKSZ[tskid], tskid, "CRE_TSK")$$END$
+	$END$
+
+$ 	// stksz€¬¥¹¥¿¥Ã¥¯ÎÎ°è€Î¥µ¥€¥º€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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$
+
+$ ¥¹¥¿¥Ã¥¯ÎÎ°è€ÎÀžÀ®
+$FOREACH tskid TSK.ID_LIST$
+	$IF EQ(TSK.STK[tskid],"NULL")$
+		$IF (TSK.TSKATR[tskid] & TA_RSTR) == 0$
+			$TSK.TINIB_STKSZ[tskid] = ALLOC_STACK(CONCAT("_kernel_stack_",
+												tskid), 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])$
+$ 			// À©Ìó¥¿¥¹¥¯ÍÑ€Î¶ŠÍ­¥¹¥¿¥Ã¥¯€Î¥µ¥€¥º€òµá€á€ë
+			$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] = FORMAT("(%1%)", TSK.STKSZ[tskid])$
+		$TSK.TINIB_STK[tskid] = FORMAT("(void *)(%1%)", TSK.STK[tskid])$
+	$END$
+$END$
+$FOREACH tskpri RANGE(TMIN_TPRI, TMAX_TPRI)$
+	$IF LENGTH(shared_stack_size[tskpri])$
+		$RESULT = ALLOC_STACK(CONCAT("_kernel_shared_stack_", tskpri), 
+												shared_stack_size[tskpri])$
+	$END$
+$END$
+$NL$
+
+$ ¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®¡Ê¥¿¥¹¥¯€Ï1žÄ°ÊŸåÂžºß€¹€ë¡Ë
+const TINIB _kernel_tinib_table[TNUM_TSKID] = {$NL$
+$JOINEACH tskid TSK.ID_LIST ",\n"$
+$	// ¥¿¥¹¥¯Â°À­¡€³ÈÄ¥ŸðÊó¡€µ¯Æ°ÈÖÃÏ¡€µ¯Æ°»þÍ¥ÀèÅÙ
+	$TAB${
+	$SPC$($TSK.TSKATR[tskid]$), (intptr_t)($TSK.EXINF[tskid]$),
+	$SPC$((TASK)($TSK.TASK[tskid]$)), INT_PRIORITY($TSK.ITSKPRI[tskid]$),
+
+$	// ¥¿¥¹¥¯œéŽü²œ¥³¥ó¥Æ¥­¥¹¥È¥Ö¥í¥Ã¥¯¡€¥¹¥¿¥Ã¥¯ÎÎ°è
+	$IF USE_TSKINICTXB$
+		$GENERATE_TSKINICTXB(tskid)$
+	$ELSE$
+		$SPC$$TSK.TINIB_STKSZ[tskid]$, $TSK.TINIB_STK[tskid]$,
+	$END$
+
+$	// ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎÂ°À­€Èµ¯Æ°ÈÖÃÏ
+	$SPC$($ALT(TSK.TEXATR[tskid],"TA_NULL")$), ($ALT(TSK.TEXRTN[tskid],"NULL")$) }
+$END$$NL$
+};$NL$
+$NL$
+
+$ ¥¿¥¹¥¯ŽÉÍý¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+TCB _kernel_tcb_table[TNUM_TSKID];$NL$
+$NL$
+
+$ ¥¿¥¹¥¯ÀžÀ®œçœø¥Æ¡Œ¥Ö¥ë€ÎÀžÀ®
+const ID _kernel_torder_table[TNUM_TSKID] = {$NL$
+$TAB$$JOINEACH tskid TSK.ORDER_LIST ", "$$tskid$$END$$NL$
+};$NL$
+$NL$
+
+$ 
+$  ¥»¥Þ¥Õ¥©
+$ 
+/*$NL$
+$SPC$*  Semaphore Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ¥»¥Þ¥Õ¥©IDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_semid = (TMIN_SEMID + TNUM_SEMID - 1);$NL$
+$NL$
+
+$ ¥»¥Þ¥Õ¥©œéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF LENGTH(SEM.ID_LIST)$
+	const SEMINIB _kernel_seminib_table[TNUM_SEMID] = {$NL$
+	$JOINEACH semid SEM.ID_LIST ",\n"$
+$		// sematr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$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)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$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$
+
+$		// ¥»¥Þ¥Õ¥©œéŽü²œ¥Ö¥í¥Ã¥¯
+		$TAB${ ($SEM.SEMATR[semid]$), ($SEM.ISEMCNT[semid]$), ($SEM.MAXSEM[semid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// ¥»¥Þ¥Õ¥©ŽÉÍý¥Ö¥í¥Ã¥¯
+	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$
+
+$ 
+$  ¥€¥Ù¥ó¥È¥Õ¥é¥°
+$ 
+/*$NL$
+$SPC$*  Eventflag Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ¥€¥Ù¥ó¥È¥Õ¥é¥°IDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_flgid = (TMIN_FLGID + TNUM_FLGID - 1);$NL$
+$NL$
+
+$ ¥€¥Ù¥ó¥È¥Õ¥é¥°œéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF LENGTH(FLG.ID_LIST)$
+	const FLGINIB _kernel_flginib_table[TNUM_FLGID] = {$NL$
+	$JOINEACH flgid FLG.ID_LIST ",\n"$
+$		// flgatr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ã¡ÎTA_WMUL¡Ï¡Ã¡ÎTA_CLR¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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$
+
+$		// iflgptn€¬FLGPTN€Ë³ÊÇŒ€Ç€­€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$IF (FLG.IFLGPTN[flgid] & ~((1 << TBIT_FLGPTN) - 1)) != 0$
+			$ERROR FLG.TEXT_LINE[flgid]$E_PAR: $FORMAT(_("too large %1% `%2%\' of `%3%\' in %4%"), "iflgptn", FLG.IFLGPTN[flgid], flgid, "CRE_FLG")$$END$
+		$END$
+
+$		// ¥€¥Ù¥ó¥È¥Õ¥é¥°œéŽü²œ¥Ö¥í¥Ã¥¯
+		$TAB${ ($FLG.FLGATR[flgid]$), ($FLG.IFLGPTN[flgid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// ¥€¥Ù¥ó¥È¥Õ¥é¥°ŽÉÍý¥Ö¥í¥Ã¥¯
+	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$
+
+$ 
+$  ¥Ç¡Œ¥¿¥­¥å¡Œ
+$ 
+/*$NL$
+$SPC$*  Dataqueue Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ¥Ç¡Œ¥¿¥­¥å¡ŒIDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_dtqid = (TMIN_DTQID + TNUM_DTQID - 1);$NL$
+$NL$
+
+$IF LENGTH(DTQ.ID_LIST)$
+	$FOREACH dtqid DTQ.ID_LIST$
+$		// dtqatr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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$
+
+$		// dtqcnt€¬Éé€ÎŸì¹ç¡ÊE_PAR¡Ë
+		$IF DTQ.DTQCNT[dtqid] < 0$
+			$ERROR DTQ.TEXT_LINE[dtqid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "dtqcnt", DTQ.DTQCNT[dtqid], dtqid, "CRE_DTQ")$$END$
+		$END$
+
+$		// dtqmb€¬NULL€Ç€Ê€€Ÿì¹ç¡ÊE_NOSPT¡Ë
+		$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$
+
+$		// ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è
+		$IF DTQ.DTQCNT[dtqid]$
+			static DTQMB _kernel_dtqmb_$dtqid$[$DTQ.DTQCNT[dtqid]$];$NL$
+		$END$
+	$END$
+
+$	// ¥Ç¡Œ¥¿¥­¥å¡ŒœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+	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$
+
+$	// ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍý¥Ö¥í¥Ã¥¯
+	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$
+
+$ 
+$  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ
+$ 
+/*$NL$
+$SPC$*  Priority Dataqueue Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒIDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_pdqid = (TMIN_PDQID + TNUM_PDQID - 1);$NL$
+$NL$
+
+$IF LENGTH(PDQ.ID_LIST)$
+	$FOREACH pdqid PDQ.ID_LIST$
+$		// pdqatr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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$
+
+$		// pdqcnt€¬Éé€ÎŸì¹ç¡ÊE_PAR¡Ë
+		$IF PDQ.PDQCNT[pdqid] < 0$
+			$ERROR PDQ.TEXT_LINE[pdqid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "pdqcnt", PDQ.PDQCNT[pdqid], pdqid, "CRE_PDQ")$$END$
+		$END$
+
+$		// (TMIN_DPRI <= maxdpri && maxdpri <= TMAX_DPRI)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$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€Ç€Ê€€Ÿì¹ç¡ÊE_NOSPT¡Ë
+		$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$
+
+$		// Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è
+		$IF PDQ.PDQCNT[pdqid]$
+			static PDQMB _kernel_pdqmb_$pdqid$[$PDQ.PDQCNT[pdqid]$];$NL$
+		$END$
+	$END$
+
+$	// Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+	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$
+
+$	// Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍý¥Ö¥í¥Ã¥¯
+	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$
+
+$ 
+$  ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹
+$ 
+/*$NL$
+$SPC$*  Mailbox Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹IDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_mbxid = (TMIN_MBXID + TNUM_MBXID - 1);$NL$
+$NL$
+
+$ ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹œéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF LENGTH(MBX.ID_LIST)$
+	const MBXINIB _kernel_mbxinib_table[TNUM_MBXID] = {$NL$
+	$JOINEACH mbxid MBX.ID_LIST ",\n"$
+$		// mbxatr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ã¡ÎTA_MPRI¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$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€Ç€Ê€€Ÿì¹ç¡ÊE_NOSPT¡Ë
+		$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$
+
+$		// ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹œéŽü²œ¥Ö¥í¥Ã¥¯
+		$TAB${ ($MBX.MBXATR[mbxid]$), ($MBX.MAXMPRI[mbxid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹ŽÉÍý¥Ö¥í¥Ã¥¯
+	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$
+
+$ 
+$  žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ë
+$ 
+/*$NL$
+$SPC$*  Fixed-sized Memorypool Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëIDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_mpfid = (TMIN_MPFID + TNUM_MPFID - 1);$NL$
+$NL$
+
+$IF LENGTH(MPF.ID_LIST)$
+	$FOREACH mpfid MPF.ID_LIST$
+$		// mpfatr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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°Ê²Œ€ÎŸì¹ç¡ÊE_PAR¡Ë
+		$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°Ê²Œ€ÎŸì¹ç¡ÊE_PAR¡Ë
+		$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$
+
+$		// žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÎÎ°è
+		$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€Ç€Ê€€Ÿì¹ç¡ÊE_NOSPT¡Ë
+		$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$
+
+$		// žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëŽÉÍýÎÎ°è
+		static MPFMB _kernel_mpfmb_$mpfid$[$MPF.BLKCNT[mpfid]$];$NL$
+	$END$
+
+$	// žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+	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$(void *)($MPF.MPF[mpfid]$)$END$, (_kernel_mpfmb_$mpfid$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëŽÉÍý¥Ö¥í¥Ã¥¯
+	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$
+
+$ 
+$  ŒþŽü¥Ï¥ó¥É¥é
+$ 
+/*$NL$
+$SPC$*  Cyclic Handler Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ŒþŽü¥Ï¥ó¥É¥éIDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_cycid = (TMIN_CYCID + TNUM_CYCID - 1);$NL$
+$NL$
+
+$ ŒþŽü¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF LENGTH(CYC.ID_LIST)$
+	const CYCINIB _kernel_cycinib_table[TNUM_CYCID] = {$NL$
+	$JOINEACH cycid CYC.ID_LIST ",\n"$
+$		// cycatr€¬¡Ê¡ÎTA_STA¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$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)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$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$
+
+$		// ·Ù¹ð¡§cycatr€ËTA_STA€¬ÀßÄê€µ€ì€Æ€€€Æ¡€(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$
+
+$		// ŒþŽü¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯
+		$TAB${ ($CYC.CYCATR[cycid]$), (intptr_t)($CYC.EXINF[cycid]$), ($CYC.CYCHDR[cycid]$), ($CYC.CYCTIM[cycid]$), ($CYC.CYCPHS[cycid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// ŒþŽü¥Ï¥ó¥É¥éŽÉÍý¥Ö¥í¥Ã¥¯
+	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$
+
+$ 
+$  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é
+$ 
+/*$NL$
+$SPC$*  Alarm Handler Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éIDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_almid = (TMIN_ALMID + TNUM_ALMID - 1);$NL$
+$NL$
+
+$ ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF LENGTH(ALM.ID_LIST)$
+	const ALMINIB _kernel_alminib_table[TNUM_ALMID] = {$NL$
+	$JOINEACH almid ALM.ID_LIST ",\n"$
+$		// almatr€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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$
+
+$		// ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯
+		$TAB${ ($ALM.ALMATR[almid]$), (intptr_t)($ALM.EXINF[almid]$), ($ALM.ALMHDR[almid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éŽÉÍý¥Ö¥í¥Ã¥¯
+	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$
+
+$ ³ä¹þ€ßÈÖ¹æ€È³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ€ÎÊÑŽ¹¥Æ¡Œ¥Ö¥ë€ÎºîÀ®
+$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$
+
+$ ³ä¹þ€ßÍ×µá¥é¥€¥ó€ËŽØ€¹€ë¥š¥é¡Œ¥Á¥§¥Ã¥¯
+$i = 0$
+$FOREACH intno INT.ORDER_LIST$
+$	// intno€¬CFG_INT€ËÂÐ€¹€ë³ä¹þ€ßÈÖ¹æ€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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€Ë€è€Ã€ÆÀßÄêºÑ€ß€ÎŸì¹ç¡ÊE_OBJ¡Ë
+	$j = 0$
+	$FOREACH intno2 INT.ORDER_LIST$
+		$IF j < i && INT.INTNO[intno] == INT.INTNO[intno2]$
+			$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€¬¡Ê¡ÎTA_ENAINT¡Ï¡Ã¡ÎTA_EDGE¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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€ËÂÐ€¹€ë³ä¹þ€ßÍ¥ÀèÅÙ€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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$
+
+$	// ¥«¡Œ¥Í¥ëŽÉÍý€ËžÇÄê€µ€ì€Æ€€€ëintno€ËÂÐ€·€Æ¡€intpri€ËTMIN_INTPRI
+$	// €è€ê€âŸ®€µ€€ÃÍ€¬»ØÄê€µ€ì€¿Ÿì¹ç¡ÊE_OBJ¡Ë
+	$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$
+
+$	// ¥«¡Œ¥Í¥ëŽÉÍý³°€ËžÇÄê€µ€ì€Æ€€€ëintno€ËÂÐ€·€Æ¡€intpri€ËTMIN_INTPRI
+$	// €è€ê€âŸ®€µ€€ÃÍ€¬»ØÄê€µ€ì€Ê€«€Ã€¿Ÿì¹ç¡ÊE_OBJ¡Ë
+	$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$
+
+$ ³ä¹þ€ß¥Ï¥ó¥É¥é€ËŽØ€¹€ë¥š¥é¡Œ¥Á¥§¥Ã¥¯
+$i = 0$
+$FOREACH inhno INH.ORDER_LIST$
+$	// inhno€¬DEF_INH€ËÂÐ€¹€ë³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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€Ë€è€Ã€ÆÀßÄêºÑ€ß€ÎŸì¹ç¡ÊE_OBJ¡Ë
+	$j = 0$
+	$FOREACH inhno2 INH.ORDER_LIST$
+		$IF j < i && INH.INHNO[inhno] == INH.INHNO[inhno2]$
+			$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€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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$
+
+$	// ¥«¡Œ¥Í¥ëŽÉÍý€ËžÇÄê€µ€ì€Æ€€€ëinhno€ËÂÐ€·€Æ¡€inhatr€ËTA_NONKERNEL
+$	//¡¡€¬»ØÄê€µ€ì€Æ€€€ëŸì¹ç¡ÊE_RSATR¡Ë
+	$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$
+
+$	// ¥«¡Œ¥Í¥ëŽÉÍý³°€ËžÇÄê€µ€ì€Æ€€€ëinhno€ËÂÐ€·€Æ¡€inhatr€ËTA_NONKERNEL
+$	// €¬»ØÄê€µ€ì€Æ€€€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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€¬€Ê€€Ÿì¹ç¡ÊE_OBJ¡Ë
+		$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", intno, "inhno", INH.INHNO[inhno], "CFG_INT")$$END$
+		$ELSE$
+			$IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$
+$				// inhatr€ËTA_NONKERNEL€¬»ØÄê€µ€ì€Æ€ª€é€º¡€inhno€ËÂÐ±þ
+$				// €¹€ëintno€ËÂÐ€·€ÆCFG_INT€ÇÀßÄê€µ€ì€¿³ä¹þ€ßÍ¥ÀèÅÙ€¬
+$				// TMIN_INTPRI€è€ê€âŸ®€µ€€Ÿì¹ç¡ÊE_OBJ¡Ë
+				$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€¬»ØÄê€µ€ì€Æ€ª€ê¡€inhno€ËÂÐ±þ
+$				// €¹€ëintno€ËÂÐ€·€ÆCFG_INT€ÇÀßÄê€µ€ì€¿³ä¹þ€ßÍ¥ÀèÅÙ€¬
+$				// TMIN_INTPRI°ÊŸå€Ç€¢€ëŸì¹ç¡ÊE_OBJ¡Ë
+				$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$
+
+$ ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó¡ÊISR¡Ë€ËŽØ€¹€ë¥š¥é¡Œ¥Á¥§¥Ã¥¯€È³ä¹þ€ß¥Ï¥ó¥É¥é€ÎÀžÀ®
+$FOREACH order ISR.ORDER_LIST$
+$	// isratr€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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€ËÂÐ€¹€ë³ä¹þ€ßÈÖ¹æ€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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€ËÂÐ€·€ÆÅÐÏ¿€µ€ì€¿ISR€Î¥ê¥¹¥È€ÎºîÀ®
+	$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€ËÂÐ€·€ÆÅÐÏ¿€µ€ì€¿ISR€¬Âžºß€¹€ëŸì¹ç
+	$IF LENGTH(isr_order_list) > 0$
+$		// intno€ËÂÐ±þ€¹€ëinhno€ËÂÐ€·€ÆDEF_INH€¬€¢€ëŸì¹ç¡ÊE_OBJ¡Ë
+		$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€¬€Ê€€Ÿì¹ç¡ÊE_OBJ¡Ë
+		$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€ÇÀßÄê€µ€ì€¿³ä¹þ€ßÍ¥ÀèÅÙ€¬TMIN_INTPRI
+$			// €è€ê€âŸ®€µ€€Ÿì¹ç¡ÊE_OBJ¡Ë
+			$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)$
+
+$		// ISRÍÑ€Î³ä¹þ€ß¥Ï¥ó¥É¥é
+		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€òÍ¥ÀèÅÙœç€ËžÆ€ÓœÐ€¹
+		$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$
+
+$ 
+$  ³ä¹þ€ßŽÉÍýµ¡Çœ€Î€¿€á€ÎÉžœàÅª€ÊœéŽü²œŸðÊó€ÎÀžÀ®
+$ 
+$ ³ä¹þ€ß¥Ï¥ó¥É¥é€ÎœéŽü²œ€ËÉ¬Í×€ÊŸðÊó
+$IF !OMIT_INITIALIZE_INTERRUPT || ALT(USE_INHINIB_TABLE,0)$
+
+$ ³ä¹þ€ß¥Ï¥ó¥É¥é¿ô
+#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$
+
+$ ³ä¹þ€ß¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯
+$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$
+
+$ ³ä¹þ€ßÍ×µá¥é¥€¥ó€ÎœéŽü²œ€ËÉ¬Í×€ÊŸðÊó
+$IF !OMIT_INITIALIZE_INTERRUPT || ALT(USE_INTINIB_TABLE,0)$
+
+$ ³ä¹þ€ßÍ×µá¥é¥€¥ó¿ô
+#define TNUM_INTNO	$LENGTH(INT.ORDER_LIST)$$NL$
+const uint_t _kernel_tnum_intno = TNUM_INTNO;$NL$
+$NL$
+
+$ ³ä¹þ€ßÍ×µá¥é¥€¥óœéŽü²œ¥Ö¥í¥Ã¥¯
+$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Îã³°ŽÉÍýµ¡Çœ
+$ 
+/*$NL$
+$SPC$*  CPU Exception Management Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ CPUÎã³°¥Ï¥ó¥É¥é€ËŽØ€¹€ë¥š¥é¡Œ¥Á¥§¥Ã¥¯
+$i = 0$
+$FOREACH excno EXC.ORDER_LIST$
+$	// excno€¬DEF_EXC€ËÂÐ€¹€ëCPUÎã³°¥Ï¥ó¥É¥éÈÖ¹æ€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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€Ë€è€Ã€ÆÀßÄêºÑ€ß€ÎŸì¹ç¡ÊE_OBJ¡Ë
+	$j = 0$
+	$FOREACH excno2 EXC.ORDER_LIST$
+		$IF j < i && EXC.EXCNO[excno] == EXC.EXCNO[excno2]$
+			$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€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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Îã³°¥Ï¥ó¥É¥é€Î€¿€á€ÎÉžœàÅª€ÊœéŽü²œŸðÊó€ÎÀžÀ®
+$IF !OMIT_INITIALIZE_EXCEPTION$
+
+$ CPUÎã³°¥Ï¥ó¥É¥é¿ô
+#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Îã³°¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯
+$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$
+
+$ 
+$  Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ€Î¥¹¥¿¥Ã¥¯ÎÎ°è
+$ 
+/*$NL$
+$SPC$*  Stack Area for Non-task Context$NL$
+$SPC$*/$NL$
+$NL$
+
+$IF !LENGTH(ICS.ORDER_LIST)$
+$	// DEF_ICS€¬€Ê€€Ÿì¹ç€Î¥Ç¥Õ¥©¥ë¥ÈÃÍ€ÎÀßÄê
+	#ifdef DEFAULT_ISTK$NL$
+	$NL$
+	#define TOPPERS_ISTKSZ		DEFAULT_ISTKSZ$NL$
+	#define TOPPERS_ISTK		DEFAULT_ISTK$NL$
+	$NL$
+	#else /* DEAULT_ISTK */$NL$
+	$NL$
+	$istksz = ALLOC_STACK("_kernel_istack", "DEFAULT_ISTKSZ")$$NL$
+	#define TOPPERS_ISTKSZ		$istksz$$NL$
+	#define TOPPERS_ISTK		_kernel_istack$NL$
+	$NL$
+	#endif /* DEAULT_ISTK */$NL$
+$ELSE$
+
+$	// ÀÅÅªAPI¡ÖDEF_ICS¡×€¬Ê£¿ô€¢€ë¡ÊE_OBJ¡Ë
+	$IF LENGTH(ICS.ORDER_LIST) > 1$
+		$ERROR$E_OBJ: $FORMAT(_("too many %1%"), "DEF_ICS")$$END$
+	$END$
+
+$	// istksz€¬0°Ê²Œ€«¡€¥¿¡Œ¥²¥Ã¥ÈÄêµÁ€ÎºÇŸ®ÃÍ¡ÊTARGET_MIN_ISTKSZ¡Ë€è€ê€â
+$	// Ÿ®€µ€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$IF ICS.ISTKSZ[1] <= 0 || (TARGET_MIN_ISTKSZ
+									&& ICS.ISTKSZ[1] < TARGET_MIN_ISTKSZ)$
+		$ERROR ICS.TEXT_LINE[1]$E_PAR: $FORMAT(_("too small %1% `%2%\' in %3%"), "istksz", ICS.ISTKSZ[1], "DEF_ICS")$$END$
+	$END$
+
+$ 	// istksz€¬¥¹¥¿¥Ã¥¯ÎÎ°è€Î¥µ¥€¥º€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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")$
+$		// ¥¹¥¿¥Ã¥¯ÎÎ°è€ÎŒ«Æ°³äÉÕ€±
+		$istksz = ALLOC_STACK("_kernel_istack", ICS.ISTKSZ[1])$$NL$
+		#define TOPPERS_ISTKSZ		$istksz$$NL$
+		#define TOPPERS_ISTK		_kernel_istack$NL$
+	$ELSE$
+		#define TOPPERS_ISTKSZ		($ICS.ISTKSZ[1]$)$NL$
+		#define TOPPERS_ISTK		(void *)($ICS.ISTK[1]$)$NL$
+	$END$
+$END$
+$NL$
+
+$ Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ€Î¥¹¥¿¥Ã¥¯ÎÎ°è
+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$
+
+$ 
+$  ¥¿¥€¥à¥€¥Ù¥ó¥ÈŽÉÍý
+$ 
+/*$NL$
+$SPC$*  Time Event Management$NL$
+$SPC$*/$NL$
+$NL$
+TMEVTN   _kernel_tmevt_heap[TNUM_TSKID + TNUM_CYCID + TNUM_ALMID];$NL$
+$NL$
+
+$ 
+$  ³Æ¥â¥ž¥å¡Œ¥ë€ÎœéŽü²œŽØ¿ô
+$ 
+/*$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)$$TAB$_kernel_initialize_semaphore();$NL$$END$
+$IF LENGTH(FLG.ID_LIST)$$TAB$_kernel_initialize_eventflag();$NL$$END$
+$IF LENGTH(DTQ.ID_LIST)$$TAB$_kernel_initialize_dataqueue();$NL$$END$
+$IF LENGTH(PDQ.ID_LIST)$$TAB$_kernel_initialize_pridataq();$NL$$END$
+$IF LENGTH(MBX.ID_LIST)$$TAB$_kernel_initialize_mailbox();$NL$$END$
+$IF LENGTH(MPF.ID_LIST)$$TAB$_kernel_initialize_mempfix();$NL$$END$
+$IF LENGTH(CYC.ID_LIST)$$TAB$_kernel_initialize_cyclic();$NL$$END$
+$IF LENGTH(ALM.ID_LIST)$$TAB$_kernel_initialize_alarm();$NL$$END$
+$TAB$_kernel_initialize_interrupt();$NL$
+$TAB$_kernel_initialize_exception();$NL$
+}$NL$
+$NL$
+
+$ 
+$  œéŽü²œ¥ë¡Œ¥Á¥ó€ÎŒÂ¹ÔŽØ¿ô
+$ 
+/*$NL$
+$SPC$*  Initialization Routine$NL$
+$SPC$*/$NL$
+$NL$
+void$NL$
+_kernel_call_inirtn(void)$NL$
+{$NL$
+$FOREACH order INI.ORDER_LIST$
+$ 	// iniatr€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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$
+
+$ 
+$  œªÎ»œèÍý¥ë¡Œ¥Á¥ó€ÎŒÂ¹ÔŽØ¿ô
+$ 
+/*$NL$
+$SPC$*  Termination Routine$NL$
+$SPC$*/$NL$
+$NL$
+void$NL$
+_kernel_call_terrtn(void)$NL$
+{$NL$
+$FOREACH rorder TER.RORDER_LIST$
+$ 	// teratr€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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: /extension/rstr_task/kernel/kernel_def.csv
===================================================================
--- /extension/rstr_task/kernel/kernel_def.csv	(revision 7)
+++ /extension/rstr_task/kernel/kernel_def.csv	(revision 7)
@@ -0,0 +1,112 @@
+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
+TBIT_TEXPTN,TBIT_TEXPTN
+TBIT_FLGPTN,TBIT_FLGPTN
+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
+TARGET_MIN_ISTKSZ,#defined(TARGET_MIN_ISTKSZ),,TARGET_MIN_ISTKSZ
+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: /extension/rstr_task/kernel/kernel_rename.def
===================================================================
--- /extension/rstr_task/kernel/kernel_rename.def	(revision 7)
+++ /extension/rstr_task/kernel/kernel_rename.def	(revision 7)
@@ -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
+dtqinib_table
+dtqcb_table
+tmax_pdqid
+pdqinib_table
+pdqcb_table
+tmax_mbxid
+mbxinib_table
+mbxcb_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: /extension/rstr_task/kernel/kernel_rename.h
===================================================================
--- /extension/rstr_task/kernel/kernel_rename.h	(revision 7)
+++ /extension/rstr_task/kernel/kernel_rename.h	(revision 7)
@@ -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 dtqinib_table				_kernel_dtqinib_table
+#define dtqcb_table					_kernel_dtqcb_table
+#define tmax_pdqid					_kernel_tmax_pdqid
+#define pdqinib_table				_kernel_pdqinib_table
+#define pdqcb_table					_kernel_pdqcb_table
+#define tmax_mbxid					_kernel_tmax_mbxid
+#define mbxinib_table				_kernel_mbxinib_table
+#define mbxcb_table					_kernel_mbxcb_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 _dtqinib_table				__kernel_dtqinib_table
+#define _dtqcb_table				__kernel_dtqcb_table
+#define _tmax_pdqid					__kernel_tmax_pdqid
+#define _pdqinib_table				__kernel_pdqinib_table
+#define _pdqcb_table				__kernel_pdqcb_table
+#define _tmax_mbxid					__kernel_tmax_mbxid
+#define _mbxinib_table				__kernel_mbxinib_table
+#define _mbxcb_table				__kernel_mbxcb_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: /extension/rstr_task/kernel/kernel_unrename.h
===================================================================
--- /extension/rstr_task/kernel/kernel_unrename.h	(revision 7)
+++ /extension/rstr_task/kernel/kernel_unrename.h	(revision 7)
@@ -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 dtqinib_table
+#undef dtqcb_table
+#undef tmax_pdqid
+#undef pdqinib_table
+#undef pdqcb_table
+#undef tmax_mbxid
+#undef mbxinib_table
+#undef mbxcb_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 _dtqinib_table
+#undef _dtqcb_table
+#undef _tmax_pdqid
+#undef _pdqinib_table
+#undef _pdqcb_table
+#undef _tmax_mbxid
+#undef _mbxinib_table
+#undef _mbxcb_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: /extension/rstr_task/kernel/sys_manage.c
===================================================================
--- /extension/rstr_task/kernel/sys_manage.c	(revision 7)
+++ /extension/rstr_task/kernel/sys_manage.c	(revision 7)
@@ -0,0 +1,555 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  $Id$
+ */
+
+/*
+ *		¥·¥¹¥Æ¥àŸõÂÖŽÉÍýµ¡Çœ
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯€ÎÍ¥Àèœç°Ì€Î²óÅŸ
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯€ÎÍ¥Àèœç°Ì€Î²óÅŸ¡ÊÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ */
+#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 */
+
+/*
+ *  ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯ID€Î»²ŸÈ
+ */
+#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 */
+
+/*
+ *  ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯ID€Î»²ŸÈ¡ÊÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ */
+#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 */
+
+/*
+ *  CPU¥í¥Ã¥¯ŸõÂÖ€Ø€Î°Ü¹Ô
+ */
+#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 */
+
+/*
+ *  CPU¥í¥Ã¥¯ŸõÂÖ€Ø€Î°Ü¹Ô¡ÊÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ */
+#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 */
+
+/*
+ *  CPU¥í¥Ã¥¯ŸõÂÖ€Î²òœü
+ *
+ *  CPU¥í¥Ã¥¯Ãæ€Ï¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬É¬Í×€È€Ê€ë¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€òžÆ€ÓœÐ€¹€³
+ *  €È€Ï€Ç€­€Ê€€€¿€á¡€CPU¥í¥Ã¥¯ŸõÂÖ€Î²òœü»þ€Ë¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã€òµ¯Æ°€¹€ë
+ *  É¬Í×€Ï€Ê€€¡¥
+ */
+#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 */
+
+/*
+ *  CPU¥í¥Ã¥¯ŸõÂÖ€Î²òœü¡ÊÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ *
+ *  CPU¥í¥Ã¥¯Ãæ€Ï¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬É¬Í×€È€Ê€ë¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€òžÆ€ÓœÐ€¹€³
+ *  €È€Ï€Ç€­€Ê€€€¿€á¡€CPU¥í¥Ã¥¯ŸõÂÖ€Î²òœü»þ€Ë¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã€Îµ¯Æ°€òÍ×
+ *  µá€¹€ëÉ¬Í×€Ï€Ê€€¡¥
+ */
+#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 */
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á€Î¶Ø»ß
+ */
+#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 */
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á€Îµö²Ä
+ */
+#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 */
+
+/*
+ *  ¥³¥ó¥Æ¥­¥¹¥È€Î»²ŸÈ
+ */
+#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 */
+
+/*
+ *  CPU¥í¥Ã¥¯ŸõÂÖ€Î»²ŸÈ
+ */
+#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 */
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ€Î»²ŸÈ
+ */
+#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 */
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥ÁÊÝÎ±ŸõÂÖ€Î»²ŸÈ
+ */
+#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 */
+
+/*
+ *  ¥«¡Œ¥Í¥ëÈóÆ°ºîŸõÂÖ€Î»²ŸÈ
+ */
+#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: /extension/rstr_task/kernel/task.c
===================================================================
--- /extension/rstr_task/kernel/task.c	(revision 7)
+++ /extension/rstr_task/kernel/task.c	(revision 7)
@@ -0,0 +1,519 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  $Id$
+ */
+
+/*
+ *		¥¿¥¹¥¯ŽÉÍý¥â¥ž¥å¡Œ¥ë
+ */
+
+#include "kernel_impl.h"
+#include "wait.h"
+#include "task.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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
+
+/*
+ *  ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯
+ */
+TCB		*p_runtsk;
+
+/*
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯
+ */
+TCB		*p_schedtsk;
+
+/*
+ *  ¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á¡¿¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óµ¯Æ°Í×µá¥Õ¥é¥°
+ */
+bool_t	reqflg;
+
+/*
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ
+ */
+bool_t	ipmflg;
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ
+ */
+bool_t	disdsp;
+
+/*
+ *  ¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á²ÄÇœŸõÂÖ
+ */
+bool_t	dspflg;
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ
+ */
+QUEUE	ready_queue[TNUM_TPRI];
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ¥µ¡Œ¥Á€Î€¿€á€Î¥Ó¥Ã¥È¥Þ¥Ã¥×
+ */
+uint16_t	ready_primap;
+
+/*
+ *  ¥¿¥¹¥¯ŽÉÍý¥â¥ž¥å¡Œ¥ë€ÎœéŽü²œ
+ */
+void
+initialize_task(void)
+{
+	uint_t	i, j;
+	TCB		*p_tcb;
+
+	p_runtsk = NULL;
+	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) {
+			(void) make_active(p_tcb);
+		}
+	}
+}
+
+#endif /* TOPPERS_tskini */
+
+/*
+ *  ¥Ó¥Ã¥È¥Þ¥Ã¥×¥µ¡Œ¥ÁŽØ¿ô
+ *
+ *  bitmapÆâ€Î1€Î¥Ó¥Ã¥È€ÎÆâ¡€ºÇ€â²Œ°Ì¡Ê±Š¡Ë€Î€â€Î€ò¥µ¡Œ¥Á€·¡€€œ€Î¥Ó¥Ã
+ *  ¥ÈÈÖ¹æ€òÊÖ€¹¡¥¥Ó¥Ã¥ÈÈÖ¹æ€Ï¡€ºÇ²Œ°Ì¥Ó¥Ã¥È€ò0€È€¹€ë¡¥bitmap€Ë0€ò»ØÄê
+ *  €·€Æ€Ï€Ê€é€Ê€€¡¥€³€ÎŽØ¿ô€Ç€Ï¡€bitmap€¬16¥Ó¥Ã¥È€Ç€¢€ë€³€È€ò²ŸÄê€·¡€
+ *  uint16_t·¿€È€·€Æ€€€ë¡¥
+ *
+ *  ¥Ó¥Ã¥È¥µ¡Œ¥ÁÌ¿Îá€ò»ý€Ä¥×¥í¥»¥Ã¥µ€Ç€Ï¡€¥Ó¥Ã¥È¥µ¡Œ¥ÁÌ¿Îá€ò»È€Š€è€Š€Ë
+ *  œñ€­ÄŸ€·€¿Êý€¬žúÎš€¬ÎÉ€€Ÿì¹ç€¬€¢€ë¡¥€³€Î€è€Š€ÊŸì¹ç€Ë€Ï¡€¥¿¡Œ¥²¥Ã¥È
+ *  °ÍÂžÉô€Ç¥Ó¥Ã¥È¥µ¡Œ¥ÁÌ¿Îá€ò»È€Ã€¿bitmap_search€òÄêµÁ€·¡€
+ *  OMIT_BITMAP_SEARCH€ò¥Þ¥¯¥íÄêµÁ€¹€ì€Ð€è€€¡¥€Þ€¿¡€¥Ó¥Ã¥È¥µ¡Œ¥ÁÌ¿Îá€Î
+ *  ¥µ¡Œ¥ÁÊýžþ€¬µÕ€Ê€É€ÎÍýÍ³€ÇÍ¥ÀèÅÙ€È¥Ó¥Ã¥È€È€ÎÂÐ±þ€òÊÑ¹¹€·€¿€€Ÿì¹ç€Ë
+ *  €Ï¡€PRIMAP_BIT€ò¥Þ¥¯¥íÄêµÁ€¹€ì€Ð€è€€¡¥
+ *
+ *  €Þ€¿¡€¥é¥€¥Ö¥é¥ê€Ëffs€¬€¢€ë€Ê€é¡€Œ¡€Î€è€Š€ËÄêµÁ€·€Æ¥é¥€¥Ö¥é¥êŽØ¿ô€ò
+ *  »È€Ã€¿Êý€¬žúÎš€¬ÎÉ€€²ÄÇœÀ­€â€¢€ë¡¥
+ *		#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 */
+
+/*
+ *  Í¥ÀèÅÙ¥Ó¥Ã¥È¥Þ¥Ã¥×€¬¶õ€«€Î¥Á¥§¥Ã¥¯
+ */
+Inline bool_t
+primap_empty(void)
+{
+	return(ready_primap == 0U);
+}
+
+/*
+ *  Í¥ÀèÅÙ¥Ó¥Ã¥È¥Þ¥Ã¥×€Î¥µ¡Œ¥Á
+ */
+Inline uint_t
+primap_search(void)
+{
+	return(bitmap_search(ready_primap));
+}
+
+/*
+ *  Í¥ÀèÅÙ¥Ó¥Ã¥È¥Þ¥Ã¥×€Î¥»¥Ã¥È
+ */
+Inline void
+primap_set(uint_t pri)
+{
+	ready_primap |= PRIMAP_BIT(pri);
+}
+
+/*
+ *  Í¥ÀèÅÙ¥Ó¥Ã¥È¥Þ¥Ã¥×€Î¥¯¥ê¥¢
+ */
+Inline void
+primap_clear(uint_t pri)
+{
+	ready_primap &= ~PRIMAP_BIT(pri);
+}
+
+/*
+ *  ºÇ¹âÍ¥Àèœç°Ì¥¿¥¹¥¯€Î¥µ¡Œ¥Á
+ */
+#ifdef TOPPERS_tsksched
+
+TCB *
+search_schedtsk(void)
+{
+	uint_t	schedpri;
+
+	schedpri = primap_search();
+	return((TCB *)(ready_queue[schedpri].p_next));
+}
+
+#endif /* TOPPERS_tsksched */
+
+/*
+ *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€¹€ë€Î€Ï¡€ŒÂ¹Ô€Ç€­€ë¥¿¥¹¥¯€¬€Ê€«€Ã€¿Ÿì¹ç
+ *  €È¡€p_tcb€ÎÍ¥ÀèÅÙ€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€è€ê€â¹â€€Ÿì¹ç€Ç€¢
+ *  €ë¡¥
+ */
+#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 */
+
+/*
+ *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€«€éÂŸ€ÎŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€¹€ë€Î€Ï¡€p_tcb€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€Ç
+ *  €¢€Ã€¿Ÿì¹ç€Ç€¢€ë¡¥p_tcb€ÈÆ±€žÍ¥ÀèÅÙ€Î¥¿¥¹¥¯€¬ÂŸ€Ë€¢€ëŸì¹ç€Ï¡€p_tcb
+ *  €ÎŒ¡€Î¥¿¥¹¥¯€¬ºÇ¹âÍ¥Àèœç°Ì€Ë€Ê€ë¡¥€œ€Š€Ç€Ê€€Ÿì¹ç€Ï¡€¥ì¥Ç¥£¥­¥å¡Œ€ò
+ *  ¥µ¡Œ¥Á€¹€ëÉ¬Í×€¬€¢€ë¡¥
+ */
+#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 */
+
+/*
+ *  µÙ»ßŸõÂÖ€Ø€ÎÁ«°Ü
+ */
+#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 */
+
+/*
+ *  µÙ»ßŸõÂÖ€«€éŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ø€ÎÁ«°Ü
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€ÎÊÑ¹¹
+ *
+ *  ¥¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂÖ€ÎŸì¹ç€Ë€Ï¡€¥ì¥Ç¥£¥­¥å¡Œ€ÎÃæ€Ç€Î°ÌÃÖ€òÊÑ¹¹€¹
+ *  €ë¡¥¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€Á¥­¥å¡Œ€ÎÃæ€ÇÂÔ€ÁŸõÂÖ€Ë€Ê€Ã€Æ€€€ëŸì¹ç€Ë€Ï¡€ÂÔ
+ *  €Á¥­¥å¡Œ€ÎÃæ€Ç€Î°ÌÃÖ€òÊÑ¹¹€¹€ë¡¥
+ *
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€¹€ë€Î€Ï¡€(1) p_tcb€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹
+ *  ¥¯€Ç€¢€Ã€Æ¡€€œ€ÎÍ¥ÀèÅÙ€ò²Œ€²€¿Ÿì¹ç¡€(2) p_tcb€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹
+ *  ¥¯€Ç€Ï€Ê€¯¡€ÊÑ¹¹žå€ÎÍ¥ÀèÅÙ€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€è€ê€â¹â€€
+ *  Ÿì¹ç€Ç€¢€ë¡¥(1)€ÎŸì¹ç€Ë€Ï¡€¥ì¥Ç¥£¥­¥å¡Œ€ò¥µ¡Œ¥Á€¹€ëÉ¬Í×€¬€¢€ë¡¥
+ */
+#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)) {
+		/*
+		 *  ¥¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂÖ€ÎŸì¹ç
+		 */
+		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)) {
+			/*
+			 *  ¥¿¥¹¥¯€¬¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉô
+			 *  Ê¬¡ÊWOBJCB¡Ë€ÎÂÔ€Á¥­¥å¡Œ€Ë€Ä€Ê€¬€ì€Æ€€€ëŸì¹ç
+			 */
+			wobj_change_priority(((WINFO_WOBJ *)(p_tcb->p_winfo))->p_wobjcb,
+																	p_tcb);
+		}
+	}
+	return(false);
+}
+
+#endif /* TOPPERS_tskpri */
+
+/*
+ *  Œ«¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€Î°ú€­Ÿå€²
+ */
+#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 */
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ€Î²óÅŸ
+ *
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€¹€ë€Î€Ï¡€ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€¬¥¿¥¹¥¯¥­
+ *  ¥å¡Œ€ÎËöÈø€Ë°ÜÆ°€·€¿Ÿì¹ç€Ç€¢€ë¡¥
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎžÆœÐ€·
+ *
+ *  ASP¥«¡Œ¥Í¥ë€Ç€Ï¡€¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óÆâ€ÇCPU¥í¥Ã¥¯ŸõÂÖ€ËÁ«°Ü€·¡€
+ *  žµ€ÎŸõÂÖ€ËÌá€µ€º€Ë¥ê¥¿¡Œ¥ó€·€¿Ÿì¹ç¡€¥«¡Œ¥Í¥ë€¬žµ€ÎŸõÂÖ€ËÌá€¹¡¥
+ */
+#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€òžÆ€ÓœÐ€¹œèÍý€Ï¡€ÁêžßºÆµ¢žÆœÐ€·€Ë€Ê€Ã€Æ
+			 *  €€€ë€¬¡€dispatch€òžÆ€ÖÁ°€Ëp_runtsk->enatex€òfalse€Ë€·€Æ
+			 *  €ª€±€Ð»ÙŸã€¬€Ê€€¡¥€œ€ÎÍýÍ³€Ë€Ä€€€Æ€Ï¡€¡ÖTOPPERS/ASP ¥«¡Œ
+			 *  ¥Í¥ë Àß·×¥á¥â¡×€ò»²ŸÈ€Î€³€È¡¥
+			 */
+			dispatch();
+		}
+	} while (p_runtsk->texptn != 0U);
+	p_runtsk->enatex = true;
+}
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€Îµ¯Æ°
+ */
+#ifndef OMIT_CALLTEX
+
+void
+calltex(void)
+{
+	if (p_runtsk->enatex && p_runtsk->texptn != 0U && ipmflg) {
+		call_texrtn();
+	}
+}
+
+#endif /* OMIT_CALLTEX */
+#endif /* TOPPERS_tsktex */
Index: /extension/rstr_task/kernel/task.h
===================================================================
--- /extension/rstr_task/kernel/task.h	(revision 7)
+++ /extension/rstr_task/kernel/task.h	(revision 7)
@@ -0,0 +1,489 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  $Id$
+ */
+
+/*
+ *		¥¿¥¹¥¯ŽÉÍý¥â¥ž¥å¡Œ¥ë
+ */
+
+#ifndef TOPPERS_TASK_H
+#define TOPPERS_TASK_H
+
+#include <queue.h>
+#include "time_event.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#ifndef LOG_TSKSTAT
+#define LOG_TSKSTAT(p_tcb)
+#endif /* LOG_TSKSTAT */
+
+/*
+ *  ¥¿¥¹¥¯Í¥ÀèÅÙ€ÎÆâÉôÉœžœ¡Š³°ÉôÉœžœÊÑŽ¹¥Þ¥¯¥í
+ */
+#define INT_PRIORITY(x)		((uint_t)((x) - TMIN_TPRI))
+#define EXT_TSKPRI(x)		((PRI)(x) + TMIN_TPRI)
+
+/*
+ *  ¥¿¥¹¥¯ŸõÂÖ€ÎÆâÉôÉœžœ
+ *
+ *  TCBÃæ€Î¥¿¥¹¥¯ŸõÂÖ€Ç€Ï¡€ŒÂ¹ÔŸõÂÖ¡ÊRUNNING¡Ë€ÈŒÂ¹Ô²ÄÇœŸõÂÖ¡ÊREADY¡Ë
+ *  €Ï¶èÊÌ€·€Ê€€¡¥ÎŸŸõÂÖ€òÁíŸÎ€·€Æ¡€ŒÂ¹Ô€Ç€­€ëŸõÂÖ¡ÊRUNNABLE¡Ë€ÈžÆ€Ö¡¥
+ *  ÆóœÅÂÔ€ÁŸõÂÖ€Ï¡€(TS_WAITING | TS_SUSPENDED)€ÇÉœ€¹¡¥TS_WAIT_???€ÏÂÔ
+ *  €ÁÍ×°ø€òÉœ€·¡€ÂÔ€ÁŸõÂÖ¡ÊÆóœÅÂÔ€ÁŸõÂÖ€òŽÞ€à¡Ë€ÎŸì¹ç€Ë€Î€ßÀßÄê€¹€ë¡¥
+ */
+#define TS_DORMANT		0x00U			/* µÙ»ßŸõÂÖ */
+#define TS_RUNNABLE		0x01U			/* ŒÂ¹Ô€Ç€­€ëŸõÂÖ */
+#define TS_WAITING		0x02U			/* ÂÔ€ÁŸõÂÖ */
+#define TS_SUSPENDED	0x04U			/* ¶¯À©ÂÔ€ÁŸõÂÖ */
+
+#define TS_WAIT_DLY		(0x00U << 3)	/* »þŽÖ·Ð²áÂÔ€Á */
+#define TS_WAIT_SLP		(0x01U << 3)	/* µ¯Ÿ²ÂÔ€Á */
+#define TS_WAIT_RDTQ	(0x02U << 3)	/* ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TS_WAIT_RPDQ	(0x03U << 3)	/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TS_WAIT_SEM		(0x04U << 3)	/* ¥»¥Þ¥Õ¥©»ñž»€Î³ÍÆÀÂÔ€Á */
+#define TS_WAIT_FLG		(0x05U << 3)	/* ¥€¥Ù¥ó¥È¥Õ¥é¥°ÂÔ€Á */
+#define TS_WAIT_SDTQ	(0x06U << 3)	/* ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®ÂÔ€Á */
+#define TS_WAIT_SPDQ	(0x07U << 3)	/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®ÂÔ€Á */
+#define TS_WAIT_MBX		(0x08U << 3)	/* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TS_WAIT_MPF		(0x09U << 3)	/* žÇÄêÄ¹¥á¥â¥ê¥Ö¥í¥Ã¥¯€Î³ÍÆÀÂÔ€Á */
+
+/*
+ *  ¥¿¥¹¥¯ŸõÂÖÈœÊÌ¥Þ¥¯¥í
+ *
+ *  TSTAT_DORMANT€Ï¥¿¥¹¥¯€¬µÙ»ßŸõÂÖ€Ç€¢€ë€«€É€Š€«€ò¡€TSTAT_RUNNABLE€Ï
+ *  ¥¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ç€¢€ë€«€É€Š€«€òÈœÊÌ€¹€ë¡¥TSTAT_WAITING€ÏÂÔ
+ *  €ÁŸõÂÖ€ÈÆóœÅÂÔ€ÁŸõÂÖ€Î€€€º€ì€«€Ç€¢€ë€«€É€Š€«€ò¡€TSTAT_SUSPENDED€Ï
+ *  ¶¯À©ÂÔ€ÁŸõÂÖ€ÈÆóœÅÂÔ€ÁŸõÂÖ€Î€€€º€ì€«€Ç€¢€ë€«€É€Š€«€òÈœÊÌ€¹€ë¡¥
+ */
+#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)
+
+/*
+ *  ¥¿¥¹¥¯ÂÔ€ÁÍ×°øÈœÊÌ¥Þ¥¯¥í
+ *
+ *  TSTAT_WAIT_SLP€Ï¥¿¥¹¥¯€¬µ¯Ÿ²ÂÔ€Á€Ç€¢€ë€«€É€Š€«€ò¡€TSTAT_WAIT_WOBJ
+ *  €Ï¥¿¥¹¥¯€¬Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ËÂÐ€¹€ëÂÔ€Á€Ç€¢€ë€«¡ÊžÀ€€Ž¹€š€ë€È¡€
+ *  Æ±ŽüÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€Á¥­¥å¡Œ€Ë€Ä€Ê€¬€ì€Æ€€€ë€«¡Ë€É€Š€«€òÈœÊÌ€¹
+ *  €ë¡¥€Þ€¿¡€TSTAT_WAIT_WOBJCB€Ï¥¿¥¹¥¯€¬Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý
+ *  ¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬¡ÊWOBJCB¡Ë€ÎÂÔ€Á¥­¥å¡Œ€Ë€Ä€Ê€¬€ì€Æ€€€ë€«€É€Š€«€ò
+ *  ÈœÊÌ€¹€ë¡¥
+ *
+ *  TSTAT_WAIT_SLP€Ï¡€Ç€°Õ€Î¥¿¥¹¥¯ŸõÂÖ€ÎÃæ€«€é¡€¥¿¥¹¥¯€¬µ¯Ÿ²ÂÔ€Á€Ç€¢€ë
+ *  €³€È€òÈœÊÌ€Ç€­€ë¡¥€¹€Ê€ï€Á¡€TSTAT_WAITING€Ë€è€êÂÔ€ÁŸõÂÖ€Ç€¢€ë€³€È€ò
+ *  ÈœÊÌ€»€º€Ë¡€TSTAT_SLP€À€±€òÍÑ€€€Æµ¯Ÿ²ÂÔ€ÁŸõÂÖ€Ç€¢€ë€³€È€òÈœÊÌ€Ç€­€ë¡¥
+ *  €³€ì€òžúÎšÅª€ËŒÂžœ€¹€ë€¿€á€Ë¡€TS_WAIT_SLP€ÎÃÍ€ò¡€(0x00U << 3)€Ç€Ï€Ê
+ *  €¯(0x01U << 3)€È€·€Æ€€€ë¡¥€œ€Î€¿€á¡€¥¿¥¹¥¯€¬»þŽÖ·Ð²áÂÔ€ÁŸõÂÖ€Ç€¢€ë
+ *  €³€È€òÈœÊÌ€¹€ë€¿€á€ÎTSTAT_WAIT_DLY€ò¡€TSTAT_WAIT_SLP€ÈÆ±ÍÍ€ÎÊýË¡€Ç
+ *  ŒÂžœ€¹€ë€³€È€Ï€Ç€­€Ê€€¡¥
+ */
+#define TS_WAIT_MASK	(0x0fU << 3)	/* ÂÔ€ÁÍ×°ø€ÎŒèœÐ€·¥Þ¥¹¥¯ */
+
+#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)
+
+/*
+ *  ÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯¡ÊWINFO¡Ë€ÎÄêµÁ
+ *
+ *  ¥¿¥¹¥¯€¬ÂÔ€ÁŸõÂÖ€ÎŽÖ€Ï¡€TCB€ª€è€Ó€œ€Îp_winfo€Ç»Ø€µ€ì€ëWINFO€òŒ¡€Î
+ *  €è€Š€ËÀßÄê€·€Ê€±€ì€Ð€Ê€é€Ê€€¡¥
+ *
+ *  (a) TCB€Î¥¿¥¹¥¯ŸõÂÖ€òÂÔ€ÁŸõÂÖ¡ÊTS_WAITING¡Ë€Ë€¹€ë¡¥€œ€ÎºÝ€Ë¡€ÂÔ€Á
+ *  Í×°ø¡ÊTS_WAIT_???¡Ë€âÀßÄê€¹€ë¡¥
+ *
+ *  (b) ¥¿¥€¥à¥¢¥Š¥È€òŽÆ»ë€¹€ë€¿€á€Ë¡€¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯€òÅÐÏ¿€¹€ë¡¥
+ *  ÅÐÏ¿€¹€ë¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯€Ï¡€ÂÔ€Á€ËÆþ€ë¥µ¡Œ¥Ó¥¹¥³¡Œ¥ëœèÍýŽØ¿ô
+ *  €Î¥í¡Œ¥«¥ëÊÑ¿ô€È€·€Æ³ÎÊÝ€·¡€€œ€ì€Ø€Î¥Ý¥€¥ó¥¿€òWINFO€Îp_tmevtb€Ëµ­
+ *  ²±€¹€ë¡¥¥¿¥€¥à¥¢¥Š¥È€ÎŽÆ»ë€¬É¬Í×€Ê€€Ÿì¹ç¡Ê±Êµ×ÂÔ€Á€ÎŸì¹ç¡Ë€Ë€Ï¡€
+ *  p_tmevtb€òNULL€Ë€¹€ë¡¥
+ *
+ *  Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ËÂÐ€¹€ëÂÔ€ÁŸõÂÖ€ÎŸì¹ç€Ë€Ï¡€Éžœà€ÎWINFO€Ë
+ *  p_wobjcb¥Õ¥£¡Œ¥ë¥É€òÄÉ²Ã€·€¿¹œÂ€ÂÎ¡ÊWINFO_WOBJ¡€wait.h€ÇÄêµÁ¡Ë€ò»È
+ *  €Š¡¥€Þ€¿¡€°Ê²Œ€Î(c)¡Á(e)€ÎÀßÄê€ò¹Ô€ŠÉ¬Í×€¬€¢€ë¡¥Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§
+ *  ¥¯¥È€ËŽØ·ž€·€Ê€€ÂÔ€Á¡Êµ¯Ÿ²ÂÔ€Á¡€»þŽÖ·Ð²áÂÔ€Á¡Ë€ÎŸì¹ç€Ë€Ï¡€(c)¡Á(e)
+ *  €ÏÉ¬Í×€Ê€€¡¥
+ *
+ *  (c) TCB€òÂÔ€ÁÂÐŸÝ€ÎÆ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€Á¥­¥å¡Œ€Ë€Ä€Ê€°¡¥ÂÔ
+ *  €Á¥­¥å¡Œ€Ë€Ä€Ê€°€¿€á€Ë¡€task_queue€ò»È€Š¡¥
+ *
+ *  (d) ÂÔ€ÁÂÐŸÝ€ÎÆ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿€ò¡€
+ *  WINFO_WOBJ€Îp_wobjcb€Ëµ­²±€¹€ë¡¥
+ *
+ *  (e) ÂÔ€ÁÂÐŸÝ€ÎÆ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€Ë°ÍÂž€·€Æµ­²±€¹€ë€³€È€¬É¬Í×€Ê
+ *  ŸðÊó€¬€¢€ëŸì¹ç€Ë€Ï¡€WINFO_WOBJ€ËÉ¬Í×€ÊŸðÊó€Î€¿€á€Î¥Õ¥£¡Œ¥ë¥É€òÄÉ²Ã
+ *  €·€¿¹œÂ€ÂÎ€òÄêµÁ€·¡€WINFO_WOBJ€ÎÂå€ï€ê€ËÍÑ€€€ë¡¥
+ *
+ *  ÂÔ€ÁŸõÂÖ€ò²òœü€¹€ëºÝ€Ë€Ï¡€ÂÔ€Á²òœü€·€¿¥¿¥¹¥¯€ËÂÐ€¹€ëÊÖÃÍ€òWINFO€Î
+ *  wercd€ËÀßÄê€¹€ë¡¥wercd€¬É¬Í×€Ê€Î€ÏÂÔ€Á²òœü°Ê¹ß€Ç€¢€ë€Î€ËÂÐ€·€Æ¡€
+ *  p_tmevtb€ÏÂÔ€Á²òœüžå€ÏÉ¬Í×€Ê€€€¿€á¡€¥á¥â¥êÀáÌó€Î€¿€á€Ë¶ŠÍÑÂÎ€ò»È€Ã
+ *  €Æ€€€ë¡¥€œ€Î€¿€á¡€wercd€Ø¥š¥é¡Œ¥³¡Œ¥É€òÀßÄê€¹€ë€Î€Ï¡€¥¿¥€¥à¥€¥Ù¥ó¥È
+ *  ¥Ö¥í¥Ã¥¯€òÅÐÏ¿²òœü€·€¿žå€Ë€·€Ê€±€ì€Ð€Ê€é€Ê€€¡¥
+ */
+typedef union waiting_information {
+	ER		wercd;			/* ÂÔ€Á²òœü»þ€Î¥š¥é¡Œ¥³¡Œ¥É */
+	TMEVTB	*p_tmevtb;		/* ÂÔ€ÁŸõÂÖÍÑ€Î¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯ */
+} WINFO;
+
+/*
+ *  ¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯
+ *
+ *  ¥¿¥¹¥¯€ËŽØ€¹€ëŸðÊó€ò¡€ÃÍ€¬ÊÑ€ï€é€Ê€€€¿€á€ËROM€ËÃÖ€±€ëÉôÊ¬¡Ê¥¿¥¹¥¯
+ *  œéŽü²œ¥Ö¥í¥Ã¥¯¡Ë€È¡€ÃÍ€¬ÊÑ²œ€¹€ë€¿€á€ËRAM€ËÃÖ€«€Ê€±€ì€Ð€Ê€é€Ê€€Éô
+ *  Ê¬¡Ê¥¿¥¹¥¯ŽÉÍý¥Ö¥í¥Ã¥¯¡€TCB¡Ë€ËÊ¬Î¥€·¡€TCBÆâ€ËÂÐ±þ€¹€ë¥¿¥¹¥¯œéŽü²œ
+ *  ¥Ö¥í¥Ã¥¯€ò»Ø€¹¥Ý¥€¥ó¥¿€òÆþ€ì€ë¡¥¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯Æâ€ËÂÐ±þ€¹€ë
+ *  TCB€ò»Ø€¹¥Ý¥€¥ó¥¿€òÆþ€ì€ëÊýË¡€ÎÊý€¬¡€RAM€ÎÀáÌó€ÎŽÑÅÀ€«€é€ÏËŸ€Þ€·€€
+ *  €¬¡€ŒÂ¹ÔžúÎš€¬°­€¯€Ê€ë€¿€á€ËºÎÍÑ€·€Æ€€€Ê€€¡¥ÂŸ€Î¥ª¥Ö¥ž¥§¥¯¥È€Ë€Ä€€
+ *  €Æ€âÆ±ÍÍ€Ë°·€Š¡¥
+ *
+ *  ¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯€Ë€Ï¡€DEF_TEX€ÇÄêµÁ€µ€ì€ë¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á
+ *  ¥ó€ËŽØ€¹€ëŸðÊó€âŽÞ€à¡¥
+ */
+typedef struct task_initialization_block {
+	ATR			tskatr;			/* ¥¿¥¹¥¯Â°À­ */
+	intptr_t	exinf;			/* ¥¿¥¹¥¯€Î³ÈÄ¥ŸðÊó */
+	TASK		task;			/* ¥¿¥¹¥¯€Îµ¯Æ°ÈÖÃÏ */
+	uint_t		ipriority;		/* ¥¿¥¹¥¯€Îµ¯Æ°»þÍ¥ÀèÅÙ¡ÊÆâÉôÉœžœ¡Ë */
+
+#ifdef USE_TSKINICTXB
+	TSKINICTXB	tskinictxb;		/* ¥¿¥¹¥¯œéŽü²œ¥³¥ó¥Æ¥­¥¹¥È¥Ö¥í¥Ã¥¯ */
+#else /* USE_TSKINICTXB */
+	SIZE		stksz;			/* ¥¹¥¿¥Ã¥¯ÎÎ°è€Î¥µ¥€¥º¡ÊŽÝ€á€¿ÃÍ¡Ë */
+	void		*stk;			/* ¥¹¥¿¥Ã¥¯ÎÎ°è€ÎÀèÆ¬ÈÖÃÏ */
+#endif /* USE_TSKINICTXB */
+
+	ATR			texatr;			/* ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óÂ°À­ */
+	TEXRTN		texrtn;			/* ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€Îµ¯Æ°ÈÖÃÏ */
+} TINIB;
+
+/*
+ *  TCBÃæ€Î¥Õ¥£¡Œ¥ë¥É€Î¥Ó¥Ã¥ÈÉý€ÎÄêµÁ
+ *
+ *  ¥×¥í¥»¥Ã¥µ€Ë€è€Ã€Æ€Ï¡€TCBÃæ€Î¥Õ¥£¡Œ¥ë¥É€Î¥Ó¥Ã¥ÈÉý€Ç¥á¥â¥ê»ÈÍÑÎÌ€È
+ *  À­Çœ€¬¥È¥ì¡Œ¥É¥ª¥Õ€Ë€Ê€ë€¿€á¡€¥¿¡Œ¥²¥Ã¥È°ÍÂž€Ë¥Õ¥£¡Œ¥ë¥É€Î¥Ó¥Ã¥ÈÉý
+ *  €òÊÑ¹¹€¹€ë€³€È€òµö€·€Æ€€€ë¡¥
+ */
+#ifndef TBIT_TCB_PRIORITY
+#define	TBIT_TCB_PRIORITY		8		/* priority¥Õ¥£¡Œ¥ë¥É€Î¥Ó¥Ã¥ÈÉý */
+#endif /* TBIT_TCB_PRIORITY */
+
+/*
+ *  ¥¿¥¹¥¯ŽÉÍý¥Ö¥í¥Ã¥¯¡ÊTCB¡Ë
+ *
+ *  ASP¥«¡Œ¥Í¥ë€Ç€Ï¡€¥¿¥¹¥¯€Îµ¯Æ°Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô€ÎºÇÂçÃÍ¡ÊTMAX_ACTCNT¡Ë
+ *  €Èµ¯Ÿ²Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô€ÎºÇÂçÃÍ¡ÊTMAX_WUPCNT¡Ë€Ï1€ËžÇÄê€µ€ì€Æ€€€ë
+ *  €¿€á¡€¥­¥å¡Œ¥€¥ó¥°€µ€ì€Æ€€€ë€«€É€Š€«€Î¿¿µ¶ÃÍ€ÇÉœžœ€¹€ë€³€È€¬€Ç€­€ë¡¥
+ *  €Þ€¿¡€¶¯À©ÂÔ€ÁÍ×µá¥Í¥¹¥È¿ô€ÎºÇÂçÃÍ¡ÊTMAX_SUSCNT¡Ë€¬1€ËžÇÄê€µ€ì€Æ€€
+ *  €ë€Î€Ç¡€¶¯À©ÂÔ€ÁÍ×µá¥Í¥¹¥È¿ô¡Êsuscnt¡Ë€ÏÉ¬Í×€Ê€€¡¥
+ *
+ *  TCB€Î€€€¯€Ä€«€Î¥Õ¥£¡Œ¥ë¥É€Ï¡€ÆÃÄê€Î¥¿¥¹¥¯ŸõÂÖ€Ç€Î€ßÍ­žú€ÊÃÍ€òÊÝ»ý€·¡€
+ *  €œ€ì°Ê³°€ÎŸì¹ç€ÏÃÍ€¬ÊÝŸÚ€µ€ì€Ê€€¡Ê€è€Ã€Æ¡€»²ŸÈ€·€Æ€Ï€Ê€é€Ê€€¡Ë¡¥³Æ
+ *  ¥Õ¥£¡Œ¥ë¥É€¬Í­žú€ÊÃÍ€òÊÝ»ý€¹€ëŸò·ï€ÏŒ¡€ÎÄÌ€ê¡¥
+ *
+ *  ¡ŠœéŽü²œžå€ÏŸï€ËÍ­žú¡§
+ *  		p_tinib¡€tstat¡€actque
+ *  ¡ŠµÙ»ßŸõÂÖ°Ê³°€ÇÍ­žú¡ÊµÙ»ßŸõÂÖ€Ç€ÏœéŽüÃÍ€Ë€Ê€Ã€Æ€€€ë¡Ë¡§
+ *  		priority¡€wupque¡€enatex¡€texptn
+ *  ¡ŠÂÔ€ÁŸõÂÖ¡ÊÆóœÅÂÔ€ÁŸõÂÖ€òŽÞ€à¡Ë€ÇÍ­žú¡§
+ *  		p_winfo
+ *  ¡ŠŒÂ¹Ô€Ç€­€ëŸõÂÖ€ÈÆ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ËÂÐ€¹€ëÂÔ€ÁŸõÂÖ€ÇÍ­žú¡§
+ *  		task_queue
+ *  ¡ŠŒÂ¹Ô²ÄÇœŸõÂÖ¡€ÂÔ€ÁŸõÂÖ¡€¶¯À©ÂÔ€ÁŸõÂÖ¡€ÆóœÅÂÔ€ÁŸõÂÖ€ÇÍ­žú¡§
+ *  		tskctxb
+ */
+typedef struct task_control_block {
+	QUEUE			task_queue;		/* ¥¿¥¹¥¯¥­¥å¡Œ */
+	const TINIB		*p_tinib;		/* œéŽü²œ¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿ */
+
+#ifdef UINT8_MAX
+	uint8_t			tstat;			/* ¥¿¥¹¥¯ŸõÂÖ¡ÊÆâÉôÉœžœ¡Ë*/
+#else /* UINT8_MAX */
+	BIT_FIELD_UINT	tstat : 8;		/* ¥¿¥¹¥¯ŸõÂÖ¡ÊÆâÉôÉœžœ¡Ë*/
+#endif /* UINT8_MAX */
+#if defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8)
+	uint8_t			priority;		/* žœºß€ÎÍ¥ÀèÅÙ¡ÊÆâÉôÉœžœ¡Ë*/
+#else /* defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8) */
+	BIT_FIELD_UINT	priority : TBIT_TCB_PRIORITY;
+									/* žœºß€ÎÍ¥ÀèÅÙ¡ÊÆâÉôÉœžœ¡Ë*/
+#endif /* defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8) */
+	BIT_FIELD_BOOL	actque : 1;		/* µ¯Æ°Í×µá¥­¥å¡Œ¥€¥ó¥° */
+	BIT_FIELD_BOOL	wupque : 1;		/* µ¯Ÿ²Í×µá¥­¥å¡Œ¥€¥ó¥° */
+	BIT_FIELD_BOOL	enatex : 1;		/* ¥¿¥¹¥¯Îã³°œèÍýµö²ÄŸõÂÖ */
+
+	TEXPTN			texptn;			/* ÊÝÎ±Îã³°Í×°ø */
+	WINFO			*p_winfo;		/* ÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿ */
+	TSKCTXB			tskctxb;		/* ¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È¥Ö¥í¥Ã¥¯ */
+} TCB;
+
+/*
+ *  ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯
+ *
+ *  ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯¡Ê¡á¥×¥í¥»¥Ã¥µ€¬¥³¥ó¥Æ¥­¥¹¥È€ò»ý€Ã€Æ€€€ë¥¿¥¹¥¯¡Ë€Î
+ *  TCB€ò»Ø€¹¥Ý¥€¥ó¥¿¡¥ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€¬€Ê€€Ÿì¹ç€ÏNULL€Ë€¹€ë¡¥
+ *
+ *  ¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎœèÍýÃæ€Ç¡€Œ«¥¿¥¹¥¯¡Ê¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€òžÆ€ÓœÐ€·€¿¥¿¥¹
+ *  ¥¯¡Ë€ËŽØ€¹€ëŸðÊó€ò»²ŸÈ€¹€ëŸì¹ç€Ïp_runtsk€ò»È€Š¡¥p_runtsk€òœñ€­Ž¹€š
+ *  €ë€Î€Ï¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã¡Ê€ÈœéŽü²œœèÍý¡Ë€Î€ß€Ç€¢€ë¡¥
+ */
+extern TCB	*p_runtsk;
+
+/*
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯
+ *
+ *  ŒÂ¹Ô€Ç€­€ë¥¿¥¹¥¯€ÎÃæ€ÇºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ÎTCB€ò»Ø€¹¥Ý¥€¥ó¥¿¡¥ŒÂ
+ *  ¹Ô€Ç€­€ë¥¿¥¹¥¯€¬€Ê€€Ÿì¹ç€ÏNULL€Ë€¹€ë¡¥
+ *
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ€Ê€É¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬ÊÝÎ±€µ€ì€Æ€€€ëŽÖ€Ïp_runtsk
+ *  €È°ìÃ×€·€Æ€€€ë€È€ÏžÂ€é€Ê€€¡¥
+ */
+extern TCB	*p_schedtsk;
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¡¿¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óµ¯Æ°Í×µá¥Õ¥é¥°
+ *
+ *  ³ä¹þ€ß¥Ï¥ó¥É¥é¡¿CPUÎã³°¥Ï¥ó¥É¥é€ÎœÐžýœèÍý€Ë¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á€Þ€¿€Ï
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€Îµ¯Æ°€òÍ×µá€¹€ë€³€È€òŒš€¹¥Õ¥é¥°¡¥
+ */
+extern bool_t	reqflg;
+
+/*
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ
+ *
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ€Ç€¢€ë€³€È€òŒš€¹¥Õ¥é¥°¡¥
+ */
+extern bool_t	ipmflg;
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ
+ *
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ€Ç€¢€ë€³€È€òŒš€¹¥Õ¥é¥°¡¥
+ */
+extern bool_t	disdsp;
+
+/*
+ *  ¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á²ÄÇœŸõÂÖ
+ *
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ€Ç€¢€ê¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ€Ç€¢€ë¡Ê¥Ç¥£
+ *  ¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ€Ç€Ê€€¡Ë€³€È€òŒš€¹¥Õ¥é¥°¡¥
+ */
+extern bool_t	dspflg;
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ
+ *
+ *  ¥ì¥Ç¥£¥­¥å¡Œ€Ï¡€ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Î¥¿¥¹¥¯€òŽÉÍý€¹€ë€¿€á€Î¥­¥å¡Œ€Ç€¢€ë¡¥
+ *  ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€âŽÉÍý€·€Æ€€€ë€¿€á¡€¥ì¥Ç¥£¡ÊŒÂ¹Ô²ÄÇœ¡Ë¥­¥å¡Œ€È€€€Š
+ *  ÌŸŸÎ€ÏÀµ³Î€Ç€Ï€Ê€€€¬¡€¥ì¥Ç¥£¥­¥å¡Œ€È€€€ŠÌŸŸÎ€¬ÄêÃå€·€Æ€€€ë€¿€á¡€€³
+ *  €ÎÌŸŸÎ€ÇžÆ€Ö€³€È€Ë€¹€ë¡¥
+ *
+ *  ¥ì¥Ç¥£¥­¥å¡Œ€Ï¡€Í¥ÀèÅÙ€Ž€È€Î¥¿¥¹¥¯¥­¥å¡Œ€Ç¹œÀ®€µ€ì€Æ€€€ë¡¥¥¿¥¹¥¯€Î
+ *  TCB€Ï¡€³ºÅö€¹€ëÍ¥ÀèÅÙ€Î¥­¥å¡Œ€ËÅÐÏ¿€µ€ì€ë¡¥
+ */
+extern QUEUE	ready_queue[TNUM_TPRI];
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ¥µ¡Œ¥Á€Î€¿€á€Î¥Ó¥Ã¥È¥Þ¥Ã¥×
+ *
+ *  ¥ì¥Ç¥£¥­¥å¡Œ€Î¥µ¡Œ¥Á€òžúÎš€è€¯¹Ô€Š€¿€á€Ë¡€Í¥ÀèÅÙ€Ž€È€Î¥¿¥¹¥¯¥­¥å¡Œ
+ *  €Ë¥¿¥¹¥¯€¬Æþ€Ã€Æ€€€ë€«€É€Š€«€òŒš€¹¥Ó¥Ã¥È¥Þ¥Ã¥×€òÍÑ°Õ€·€Æ€€€ë¡¥¥Ó¥Ã
+ *  ¥È¥Þ¥Ã¥×€ò»È€Š€³€È€Ç¡€¥á¥â¥ê¥¢¥¯¥»¥¹€Î²ó¿ô€òžº€é€¹€³€È€¬€Ç€­€ë€¬¡€
+ *  ¥Ó¥Ã¥ÈÁàºîÌ¿Îá€¬œŒŒÂ€·€Æ€€€Ê€€¥×¥í¥»¥Ã¥µ€Ç¡€Í¥ÀèÅÙ€ÎÃÊ³¬¿ô€¬Ÿ¯€Ê€€
+ *  Ÿì¹ç€Ë€Ï¡€¥Ó¥Ã¥È¥Þ¥Ã¥×Áàºî€Î¥ª¡Œ¥Ð¡Œ¥Ø¥Ã¥É€Î€¿€á€Ë¡€µÕ€ËžúÎš€¬Íî€Á
+ *  €ë²ÄÇœÀ­€â€¢€ë¡¥
+ *
+ *  Í¥ÀèÅÙ€¬16ÃÊ³¬€Ç€¢€ë€³€È€ò²ŸÄê€·€Æ€€€ë€¿€á¡€uint16_t·¿€È€·€Æ€€€ë¡¥
+ */
+extern uint16_t	ready_primap;
+
+/*
+ *  ¥¿¥¹¥¯ID€ÎºÇÂçÃÍ¡Êkernel_cfg.c¡Ë
+ */
+extern const ID	tmax_tskid;
+
+/*
+ *  ¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern const TINIB	tinib_table[];
+
+/*
+ *  ¥¿¥¹¥¯ÀžÀ®œçœø¥Æ¡Œ¥Ö¥ë¡Êkernel_cfg.c¡Ë
+ */
+extern const ID	torder_table[];
+
+/*
+ *  TCB€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern TCB	tcb_table[];
+
+/*
+ *  ¥¿¥¹¥¯€Î¿ô
+ */
+#define tnum_tsk	((uint_t)(tmax_tskid - TMIN_TSKID + 1))
+
+/*
+ *  ¥¿¥¹¥¯ID€«€éTCB€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#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€«€é¥¿¥¹¥¯ID€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#define	TSKID(p_tcb)	((ID)(((p_tcb) - tcb_table) + TMIN_TSKID))
+
+/*
+ *  ¥¿¥¹¥¯ŽÉÍý¥â¥ž¥å¡Œ¥ë€ÎœéŽü²œ
+ */
+extern void	initialize_task(void);
+
+/*
+ *  ºÇ¹âÍ¥Àèœç°Ì¥¿¥¹¥¯€Î¥µ¡Œ¥Á
+ *
+ *  ¥ì¥Ç¥£¥­¥å¡ŒÃæ€ÎºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¥µ¡Œ¥Á€·¡€€œ€ÎTCB€Ø€Î¥Ý¥€¥ó¥¿
+ *  €òÊÖ€¹¡¥¥ì¥Ç¥£¥­¥å¡Œ€¬¶õ€ÎŸì¹ç€Ë€Ï¡€€³€ÎŽØ¿ô€òžÆ€ÓœÐ€·€Æ€Ï€Ê€é€Ê€€¡¥
+ */
+extern TCB	*search_schedtsk(void);
+
+/*
+ *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ò¥ì¥Ç¥£¥­¥å¡Œ€ËÁÞÆþ€¹€ë¡¥¥ì¥Ç¥£¥­¥å¡Œ€ËÁÞÆþ
+ *  €·€¿¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€¬¡€ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€è€ê€â¹â€€Ÿì¹ç€Ï¡€
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€·¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ€Ç€¢€ì€Ðtrue€òÊÖ
+ *  €¹¡¥€œ€Š€Ç€Ê€€Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥
+ */
+extern bool_t	make_runnable(TCB *p_tcb);
+
+/*
+ *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€«€éÂŸ€ÎŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ò¥ì¥Ç¥£¥­¥å¡Œ€«€éºïœü€¹€ë¡¥p_tcb€Ç»ØÄê€·€¿
+ *  ¥¿¥¹¥¯€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€Ç€¢€Ã€¿Ÿì¹ç€Ë€Ï¡€ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯
+ *  €òÀßÄê€·€Ê€ª€·¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ€Ç€¢€ì€Ðtrue€òÊÖ€¹¡¥€œ€Š€Ç€Ê€€
+ *  Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥¥¿¥¹¥¯€ÎŸõÂÖ€Ï¹¹¿·€·€Ê€€¡¥
+ */
+extern bool_t	make_non_runnable(TCB *p_tcb);
+
+/*
+ *  µÙ»ßŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ÎŸõÂÖ€òµÙ»ßŸõÂÖ€È€¹€ë¡¥€Þ€¿¡€¥¿¥¹¥¯€Îµ¯Æ°
+ *  »þ€ËœéŽü²œ€¹€Ù€­ÊÑ¿ô€ÎœéŽü²œ€È¡€¥¿¥¹¥¯µ¯Æ°€Î€¿€á€Î¥³¥ó¥Æ¥­¥¹¥È€òÀß
+ *  Äê€¹€ë¡¥
+ */
+extern void	make_dormant(TCB *p_tcb);
+
+/*
+ *  µÙ»ßŸõÂÖ€«€éŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ÎŸõÂÖ€òµÙ»ßŸõÂÖ€«€éŒÂ¹Ô€Ç€­€ëŸõÂÖ€È€¹€ë¡¥
+ *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€ËÁ«°Ü€·€¿¥¿¥¹¥¯€Ø€Î¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬É¬Í×€ÊŸì¹ç€Ïtrue¡€
+ *  €œ€Š€Ç€Ê€€Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥
+ */
+extern bool_t	make_active(TCB *p_tcb);
+
+/*
+ *  ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€ÎÊÑ¹¹
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€ònewpri¡ÊÆâÉôÉœžœ¡Ë€ËÊÑ¹¹€¹€ë¡¥€Þ€¿¡€
+ *  É¬Í×€ÊŸì¹ç€Ë€ÏºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€·¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ€Ç
+ *  €¢€ì€Ðtrue€òÊÖ€¹¡¥€œ€Š€Ç€Ê€€Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥
+ */
+extern bool_t	change_priority(TCB *p_tcb, uint_t newpri);
+
+/*
+ *  Œ«¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€Î°ú€­Ÿå€²
+ *
+ *  Œ«¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€ònewpri¡ÊÆâÉôÉœžœ¡Ë€ËÊÑ¹¹€¹€ë¡¥€Þ€¿¡€É¬Í×€ÊŸì¹ç€Ë
+ *  €ÏºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€·¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ€Ç€¢€ì€Ðtrue€ò
+ *  ÊÖ€¹¡¥€œ€Š€Ç€Ê€€Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥
+ */
+extern bool_t	raise_priority(uint_t newpri);
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ€Î²óÅŸ
+ *
+ *  ¥ì¥Ç¥£¥­¥å¡ŒÃæ€Î¡€p_queue€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯¥­¥å¡Œ€ò²óÅŸ€µ€»€ë¡¥€Þ€¿¡€
+ *  É¬Í×€ÊŸì¹ç€Ë€ÏºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€òÊÑ¹¹€·¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬ÊÝÎ±€µ€ì
+ *  €Æ€€€Ê€±€ì€Ðtrue€òÊÖ€¹¡¥€œ€Š€Ç€Ê€€Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥
+ */
+extern bool_t	rotate_ready_queue(QUEUE *p_queue);
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎžÆœÐ€·
+ *
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€òžÆ€ÓœÐ€¹¡¥žÆ€ÓœÐ€¹Á°€Ë¡€ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€Î
+ *  ÊÝÎ±Îã³°Í×°ø€ò¥¯¥ê¥¢€·¡€¥¿¥¹¥¯Îã³°œèÍý¶Ø»ßŸõÂÖ€Ë€·¡€CPU¥í¥Ã¥¯€ò²ò
+ *  œü€¹€ë¡¥
+ *
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€«€éÌá€ë€È¡€€Þ€ºCPU¥í¥Ã¥¯ŸõÂÖ€ËÌá€·¡€€œ€ÎŽÖ
+ *  €ËÊÝÎ±Îã³°Í×°ø€¬0€Ç€Ê€¯€Ê€Ã€Æ€€€ì€Ð¡€ºÆ€Ó¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ò
+ *  žÆ€ÓœÐ€¹¡¥ÊÝÎ±Îã³°Í×°ø€¬0€ÎŸì¹ç€Ë€Ï¡€Îã³°œèÍýµö²ÄŸõÂÖ€Ë€·€ÆŽØ¿ô€«
+ *  €é¥ê¥¿¡Œ¥ó€¹€ë¡¥
+ *
+ *  €³€ÎŽØ¿ô€Ï¡€ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€¬¡€¥¿¥¹¥¯Îã³°œèÍýµö²ÄŸõÂÖ¡Êenatex€¬
+ *  true¡Ë€Ç¡€ÊÝÎ±Îã³°Í×°ø€¬0€Ç€Ê€€¡Êtexptn€¬0€Ç€Ê€€¡ËŸì¹ç€ËžÆ€ÓœÐ€¹€³
+ *  €È€òÁÛÄê€·€Æ€€€ë¡¥€³€ÎŽØ¿ô€Ï¡€CPU¥í¥Ã¥¯ŸõÂÖ€ÇžÆ€ÓœÐ€µ€Ê€±€ì€Ð€Ê€é
+ *  €Ê€€¡¥
+ */
+extern void	call_texrtn(void);
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€Îµ¯Æ°
+ *
+ *  ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€¬¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€Îµ¯Æ°Ÿò·ï€òËþ€¿€·€Æ€€€ì€Ð¡€
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€òžÆ€ÓœÐ€¹¡¥CPUÎã³°œèÍý¥ë¡Œ¥Á¥ó€òžÆ€ÓœÐ€¹»þ
+ *  €Ï¡€°ì»þÅª€ËCPU¥í¥Ã¥¯€ò²òœü€¹€ë¡¥
+ *
+ *  €³€ÎŽØ¿ô€Ï¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã€ä³ä¹þ€ß¥Ï¥ó¥É¥é¡¿CPUÎã³°¥Ï¥ó¥É¥é€ÎœÐžý
+ *  œèÍý€«€éžÆ€ÓœÐ€µ€ì€ë€³€È€òÁÛÄê€·€Æ€€€ë¡¥€³€ÎŽØ¿ô€Ï¡€CPU¥í¥Ã¥¯ŸõÂÖ
+ *  €ÇžÆ€ÓœÐ€µ€Ê€±€ì€Ð€Ê€é€Ê€€¡¥
+ *
+ *  ŒÂ¹ÔžúÎš€òŸå€²€ë€¿€á€Ë¡€€³€ÎŽØ¿ô€ò¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€Çµ­œÒ€·€Æ€â€è€€¡¥
+ *  €œ€ÎŸì¹ç€Ë€Ï¡€OMIT_CALLTEX€ò¥Þ¥¯¥íÄêµÁ€¹€ë¡¥
+ */
+extern void	calltex(void);
+
+#endif /* TOPPERS_TASK_H */
Index: /extension/rstr_task/kernel/task_manage.c
===================================================================
--- /extension/rstr_task/kernel/task_manage.c	(revision 7)
+++ /extension/rstr_task/kernel/task_manage.c	(revision 7)
@@ -0,0 +1,474 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  $Id$
+ */
+
+/*
+ *		¥¿¥¹¥¯ŽÉÍýµ¡Çœ
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯€Îµ¯Æ°
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯€Îµ¯Æ°¡ÊÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯µ¯Æ°Í×µá€Î¥­¥ã¥ó¥»¥ë
+ */
+#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 */
+
+/*
+ *  Œ«¥¿¥¹¥¯€ÎœªÎ»
+ */
+#ifdef TOPPERS_ext_tsk
+
+ER
+ext_tsk(void)
+{
+	ER		ercd;
+
+	LOG_EXT_TSK_ENTER();
+	CHECK_TSKCTX();
+
+	if (t_sense_lock()) {
+		/*
+		 *  CPU¥í¥Ã¥¯ŸõÂÖ€Çext_tsk€¬žÆ€Ð€ì€¿Ÿì¹ç€Ï¡€CPU¥í¥Ã¥¯€ò²òœü€·
+		 *  €Æ€«€é¥¿¥¹¥¯€òœªÎ»€¹€ë¡¥ŒÂÁõŸå€Ï¡€¥µ¡Œ¥Ó¥¹¥³¡Œ¥ëÆâ€Ç€ÎCPU
+		 *  ¥í¥Ã¥¯€òŸÊÎ¬€¹€ì€Ð€è€€€À€±¡¥
+		 */
+	}
+	else {
+		t_lock_cpu();
+	}
+	if (disdsp) {
+		/*
+		 *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ€Çext_tsk€¬žÆ€Ð€ì€¿Ÿì¹ç€Ï¡€¥Ç¥£¥¹¥Ñ¥Ã
+		 *  ¥Áµö²ÄŸõÂÖ€Ë€·€Æ€«€é¥¿¥¹¥¯€òœªÎ»€¹€ë¡¥
+		 */
+		disdsp = false;
+	}
+	if (!ipmflg) {
+		/*
+		 *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡ÊIPM¡Ë€¬TIPM_ENAALL°Ê³°€ÎŸõÂÖ€Çext_tsk
+		 *  €¬žÆ€Ð€ì€¿Ÿì¹ç€Ï¡€IPM€òTIPM_ENAALL€Ë€·€Æ€«€é¥¿¥¹¥¯€òœªÎ»€¹
+		 *  €ë¡¥
+		 */
+		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 */
+
+/*
+ *  ¥¿¥¹¥¯€Î¶¯À©œªÎ»
+ */
+#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€ÏŒ«¥¿¥¹¥¯€Ç€Ê€€€¿€á¡€¡Ê¥·¥ó¥°¥ë¥×¥í¥»¥Ã¥µ€Ç€Ï¡ËŒÂ
+			 *  ¹ÔŸõÂÖ€Ç€Ê€¯¡€make_non_runnable(p_tcb)€Ç¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã
+			 *  ¥Á€¬É¬Í×€Ë€Ê€ë€³€È€Ï€Ê€€¡¥
+			 */
+			(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 */
+
+/*
+ *  ¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ€ÎÊÑ¹¹
+ */
+#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 */
+
+/*
+ *  Œ«¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€Î°ú€­Ÿå€²
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯Í¥ÀèÅÙ€Î»²ŸÈ
+ */
+#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 */
+
+/*
+ *  Œ«¥¿¥¹¥¯€Î³ÈÄ¥ŸðÊó€Î»²ŸÈ
+ */
+#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: /extension/rstr_task/kernel/task_sync.c
===================================================================
--- /extension/rstr_task/kernel/task_sync.c	(revision 7)
+++ /extension/rstr_task/kernel/task_sync.c	(revision 7)
@@ -0,0 +1,538 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  $Id$
+ */
+
+/*
+ *		¥¿¥¹¥¯ÉÕÂ°Æ±Žüµ¡Çœ
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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 */
+
+/*
+ *  µ¯Ÿ²ÂÔ€Á
+ */
+#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 */
+
+/*
+ *  µ¯Ÿ²ÂÔ€Á¡Ê¥¿¥€¥à¥¢¥Š¥È€¢€ê¡Ë
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯€Îµ¯Ÿ²
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯€Îµ¯Ÿ²¡ÊÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯µ¯Ÿ²Í×µá€Î¥­¥ã¥ó¥»¥ë
+ */
+#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 */
+
+/*
+ *  ÂÔ€ÁŸõÂÖ€Î¶¯À©²òœü¡ÊÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ */
+#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 */
+
+/*
+ *  ¶¯À©ÂÔ€ÁŸõÂÖ€Ø€Î°Ü¹Ô
+ */
+#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)) {
+		/*
+		 *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€«€é¶¯À©ÂÔ€ÁŸõÂÖ€Ø€ÎÁ«°Ü
+		 */
+		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 {
+		/*
+		 *  ÂÔ€ÁŸõÂÖ€«€éÆóœÅÂÔ€ÁŸõÂÖ€Ø€ÎÁ«°Ü
+		 */
+		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 */
+
+/*
+ *  ¶¯À©ÂÔ€ÁŸõÂÖ€«€é€ÎºÆ³«
+ */
+#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)) {
+		/*
+		 *  ¶¯À©ÂÔ€ÁŸõÂÖ€«€éŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ø€ÎÁ«°Ü
+		 */
+		p_tcb->tstat = TS_RUNNABLE;
+		LOG_TSKSTAT(p_tcb);
+		if (make_runnable(p_tcb)) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else {
+		/*
+		 *  ÆóœÅÂÔ€ÁŸõÂÖ€«€éÂÔ€ÁŸõÂÖ€Ø€ÎÁ«°Ü
+		 */
+		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 */
+
+/*
+ *  Œ«¥¿¥¹¥¯€ÎÃÙ±ä
+ */
+#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: /extension/rstr_task/test/test_rstr1.c
===================================================================
--- /extension/rstr_task/test/test_rstr1.c	(revision 7)
+++ /extension/rstr_task/test/test_rstr1.c	(revision 7)
@@ -0,0 +1,353 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2010-2013 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$
+ */
+
+/* 
+ *		À©Ìó¥¿¥¹¥¯€Î¥Æ¥¹¥È(1)
+ *
+ * ¡Ú¥Æ¥¹¥È€ÎÌÜÅª¡Û
+ *
+ *  À©Ìó¥¿¥¹¥¯€ÎŽðËÜÅª€Ê¿¶Éñ€€¡Êras_pri¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë°Ê³°€ÎÆ°ºî¡Ë€ò¥Æ¥¹
+ *  ¥È€¹€ë¡¥
+ *
+ * ¡Ú¥Æ¥¹¥È¹àÌÜ¡Û
+ *
+ *	(A) À©Ìó¥¿¥¹¥¯€¬¡€Œ«¥¿¥¹¥¯€òÂÔ€ÁŸõÂÖ€Ë€¹€ë²ÄÇœÀ­€Î€¢€ë¥µ¡Œ¥Ó¥¹¥³¡Œ
+ *      ¥ë€òžÆ€ÓœÐ€·€¿Ÿì¹ç¡€E_NOSPT¥š¥é¡Œ€È€Ê€ë
+ *		(A-1) slp_tsk
+ *		(A-2) tslp_tsk
+ *		(A-3) dly_tsk
+ *      ¢š ÂŸ€Ë€â€¢€ë€¬¡€€³€ì€À€±€ËÎ±€á€ë
+ *	(B) À©Ìó¥¿¥¹¥¯€òÂÐŸÝ€È€·€Æ¡€chg_pri¡€wup_tsk¡€iwup_tsk¡€can_wup¡€
+ *	    rel_wai¡€irel_wai¡€sus_tsk¡€rsm_tsk€òžÆ€ÓœÐ€·€¿Ÿì¹ç¡€E_NOSPT¥š
+ *	    ¥é¡Œ€È€Ê€ë
+ *		(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_rdq¡€irot_rdq€Ï¡€ÂÐŸÝÍ¥ÀèÅÙ€ò»ý€ÄŒÂ¹Ô€Ç€­€ëŸõÂÖ€Î¥¿¥¹¥¯€ÎÃæ
+ *      €ÇºÇ€âÍ¥Àèœç°Ì€¬¹â€€¥¿¥¹¥¯€¬À©Ìó¥¿¥¹¥¯€Ç€¢€ëŸì¹ç¡€E_NOSPT¥š¥é¡Œ
+ *      €È€Ê€ë
+ *		(C-1) rot_rdq€¬Àµ€·€¯Æ°ºî€¹€ë
+ *		(C-2) rot_rdq€¬E_NOSPT€òÊÖ€¹
+ *		(C-3) irot_rdq€¬Àµ€·€¯Æ°ºî€¹€ë
+ *		(C-4) irot_rdq€¬E_NOSPT€òÊÖ€¹
+ *
+ * ¡Ú»ÈÍÑ¥ê¥œ¡Œ¥¹¡Û
+ *
+ *	TASK1: ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡€¥á¥€¥ó¥¿¥¹¥¯¡€ºÇœé€«€éµ¯Æ°
+ *	TASK2: ¹âÍ¥ÀèÅÙ¥¿¥¹¥¯¡€À©Ìó¥¿¥¹¥¯
+ *	TASK3: ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡€À©Ìó¥¿¥¹¥¯
+ *	TASK4: ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡€À©Ìó¥¿¥¹¥¯
+ *	ALM1:  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é
+ *
+ * ¡Ú¥Æ¥¹¥È¥·¡Œ¥±¥ó¥¹¡Û
+ *
+ *	== TASK1¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë==
+ *	1:	act_tsk(TASK2)
+ *	== TASK2-1¡ÊÍ¥ÀèÅÙ¡§¹â¡Ë==
+ *	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()
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	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-1¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë==
+ *	22:	act_tsk(TASK2)
+ *	== TASK2-2¡ÊÍ¥ÀèÅÙ¡§¹â¡Ë2²ó€á ==
+ *	23:	rot_rdq(MID_PRIORITY) -> E_NOSPT			... (C-2)
+ *	24:	ext_tsk()
+ *	== TASK3-1¡ÊÂ³€­¡Ë==
+ *	25:	ext_tsk()
+ *	== TASK4-1¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë1²ó€á ==
+ *	26:	ext_tsk()
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	27:	act_tsk(TASK3)
+ *	28:	act_tsk(TASK4)
+ *	29:	act_tsk(TASK2)
+ *	== TASK2-3¡ÊÍ¥ÀèÅÙ¡§¹â¡Ë3²ó€á ==
+ *	30:	rot_rdq(MID_PRIORITY)						... (C-1)
+ *	31:	ext_tsk()
+ *	== TASK3-2¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë2²ó€á ==
+ *	32:	ext_tsk()
+ *	== TASK4-2¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë2²ó€á ==
+ *	33:	ext_tsk()
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	34: END
+ */
+
+#include <kernel.h>
+#include <test_lib.h>
+#include <t_syslog.h>
+#include "kernel_cfg.h"
+#include "test_rstr1.h"
+
+/* DO NOT DELETE THIS LINE -- gentest depends on it. */
+
+void
+alarm1_handler(intptr_t exinf)
+{
+	ER_UINT	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_UINT	ercd;
+
+	test_start(__FILE__);
+
+	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_UINT	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);
+
+	default:
+		check_point(0);
+	}
+	check_point(0);
+}
+
+static uint_t	task3_count = 0;
+
+void
+task3(intptr_t exinf)
+{
+	ER_UINT	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);
+
+	default:
+		check_point(0);
+	}
+	check_point(0);
+}
+
+static uint_t	task4_count = 0;
+
+void
+task4(intptr_t exinf)
+{
+	ER_UINT	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);
+
+	default:
+		check_point(0);
+	}
+	check_point(0);
+}
Index: /extension/rstr_task/test/test_rstr1.cfg
===================================================================
--- /extension/rstr_task/test/test_rstr1.cfg	(revision 7)
+++ /extension/rstr_task/test/test_rstr1.cfg	(revision 7)
@@ -0,0 +1,19 @@
+/*
+ *  $Id$
+ */
+
+/*
+ *  À©Ìó¥¿¥¹¥¯€Î¥Æ¥¹¥È(1)€Î¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+ */
+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: /extension/rstr_task/test/test_rstr1.h
===================================================================
--- /extension/rstr_task/test/test_rstr1.h	(revision 7)
+++ /extension/rstr_task/test/test_rstr1.h	(revision 7)
@@ -0,0 +1,74 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  $Id$
+ */
+
+/* 
+ *		À©Ìó¥¿¥¹¥¯€Î¥Æ¥¹¥È(1)
+ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎÄêµÁ
+ */
+#include "target_test.h"
+
+/*
+ *  Í¥ÀèÅÙ€ÎÄêµÁ
+ */
+#define HIGH_PRIORITY	4		/* ¹âÍ¥ÀèÅÙ */
+#define MID_PRIORITY	9		/* ÃæÍ¥ÀèÅÙ */
+#define LOW_PRIORITY	14		/* ÄãÍ¥ÀèÅÙ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È€Ë°ÍÂž€¹€ë²ÄÇœÀ­€Î€¢€ëÄê¿ô€ÎÄêµÁ
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯¥µ¥€¥º */
+#endif /* STACK_SIZE */
+
+/*
+ *  ŽØ¿ô€Î¥×¥í¥È¥¿¥€¥×ÀëžÀ
+ */
+#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: /extension/rstr_task/test/test_rstr2.c
===================================================================
--- /extension/rstr_task/test/test_rstr2.c	(revision 7)
+++ /extension/rstr_task/test/test_rstr2.c	(revision 7)
@@ -0,0 +1,226 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2010-2013 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$
+ */
+
+/* 
+ *		À©Ìó¥¿¥¹¥¯€Î¥Æ¥¹¥È(2)
+ *
+ * ¡Ú¥Æ¥¹¥È€ÎÌÜÅª¡Û
+ *
+ *  ras_pri¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎÆ°ºî€ò¥Æ¥¹¥È€¹€ë¡¥
+ *
+ * ¡Ú¥Æ¥¹¥È¹àÌÜ¡Û
+ *
+ *	(A) À©Ìó¥¿¥¹¥¯€«€éras_pri€òžÆ€ÓœÐ€·¡€Í¥ÀèÅÙ€òŸå€²€ë
+ *		(A-1) ¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ€ÇžÆ€ÓœÐ€·€¿Ÿì¹ç
+ *		(A-2) ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ€Ç¡€ºÇ¹âÍ¥Àèœç°Ì¥¿¥¹¥¯€¬ŒÂ¹ÔŸõÂÖ€Ç€Ê
+ *		      €€Ÿì¹ç€ËžÆ€ÓœÐ€·€¿Ÿì¹ç
+ *	(B) Í¥ÀèÅÙ€¬Ÿå€¬€Ã€¿À©Ìó¥¿¥¹¥¯€«€éras_pri(TPRI_INI)€òžÆ€ÓœÐ€·¡€µ¯Æ°
+ *      »þÍ¥ÀèÅÙ€ËÌá€¹
+ *		(B-1) µ¯Æ°»þÍ¥ÀèÅÙ€è€ê€â¹â€€Í¥ÀèÅÙ€Î¥¿¥¹¥¯€¬ŒÂ¹Ô²ÄÇœ€ÎŸì¹ç€Ë¡€
+ *		      ¥¿¥¹¥¯ÀÚŽ¹€š€¬µ¯€³€ë€³€È€ò³ÎÇ§€¹€ë
+ *		(B-2) µ¯Æ°»þÍ¥ÀèÅÙ€ÈÆ±€žÍ¥ÀèÅÙ€Î¥¿¥¹¥¯€¬ŒÂ¹Ô²ÄÇœ€ÎŸì¹ç€Ë¡€¥¿¥¹
+ *		      ¥¯ÀÚŽ¹€š€¬µ¯€³€é€Ê€€€³€È€ò³ÎÇ§€¹€ë
+ *		(B-3) µ¯Æ°»þÍ¥ÀèÅÙ€è€ê€âÄã€€Í¥ÀèÅÙ€Î¥¿¥¹¥¯€¬ŒÂ¹Ô²ÄÇœ€ÎŸì¹ç€Ë¡€
+ *		      ¥¿¥¹¥¯ÀÚŽ¹€š€¬µ¯€³€é€Ê€€€³€È€ò³ÎÇ§€¹€ë
+ *	(C) À©Ìó¥¿¥¹¥¯€«€éras_pri€òžÆ€ÓœÐ€·¡€µ¯Æ°»þÍ¥ÀèÅÙ€è€ê€âÄã€€Í¥ÀèÅÙ€Ë
+ *	    ÊÑ¹¹€·€è€Š€È€¹€ë€È¡€E_ILUSE€Ë€Ê€ë€³€È€ò³ÎÇ§€¹€ë
+ *
+ * ¡Ú»ÈÍÑ¥ê¥œ¡Œ¥¹¡Û
+ *
+ *	TASK1: ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡€¥á¥€¥ó¥¿¥¹¥¯¡€ºÇœé€«€éµ¯Æ°
+ *	TASK2: ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡€À©Ìó¥¿¥¹¥¯
+ *	TASK3: ¹âÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *
+ * ¡Ú¥Æ¥¹¥È¥·¡Œ¥±¥ó¥¹¡Û
+ *
+ *	== TASK1¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë==
+ *	1:	act_tsk(TASK2)
+ *	2:	slp_tsk()
+ *	== TASK2¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë==
+ *	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)
+ *	== TASK3¡ÊÍ¥ÀèÅÙ¡§¹â¡Ë==
+ *	9:	get_pri(TASK2, &tskpri)
+ *		assert(tskpri == MID_PRIORITY)
+ *	10:	slp_tsk()
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	11:	dis_dsp()
+ *	12:	wup_tsk(TASK3)
+ *	13:	ras_pri(HIGH_PRIORITY)						... (A-2)
+ *	14:	ena_dsp()
+ *	15:	ras_pri(TPRI_INI)							... (B-3)
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	16:	chg_pri(TSK_SELF, LOW_PRIORITY)
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	17:	ras_pri(HIGH_PRIORITY)
+ *	18:	wup_tsk(TASK1)
+ *	19:	ras_pri(TPRI_INI)							... (B-2)
+ *	20:	ext_tsk()
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	21: END
+ */
+
+#include <kernel.h>
+#include <test_lib.h>
+#include <t_syslog.h>
+#include "kernel_cfg.h"
+#include "test_rstr1.h"
+
+/* DO NOT DELETE THIS LINE -- gentest depends on it. */
+
+void
+task1(intptr_t exinf)
+{
+	ER_UINT	ercd;
+
+	test_start(__FILE__);
+
+	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_UINT	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_UINT	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: /extension/rstr_task/test/test_rstr2.cfg
===================================================================
--- /extension/rstr_task/test/test_rstr2.cfg	(revision 7)
+++ /extension/rstr_task/test/test_rstr2.cfg	(revision 7)
@@ -0,0 +1,17 @@
+/*
+ *  $Id$
+ */
+
+/*
+ *  À©Ìó¥¿¥¹¥¯€Î¥Æ¥¹¥È(2)€Î¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+ */
+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: /extension/rstr_task/test/test_rstr2.h
===================================================================
--- /extension/rstr_task/test/test_rstr2.h	(revision 7)
+++ /extension/rstr_task/test/test_rstr2.h	(revision 7)
@@ -0,0 +1,72 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  $Id$
+ */
+
+/* 
+ *		À©Ìó¥¿¥¹¥¯€Î¥Æ¥¹¥È(2)
+ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎÄêµÁ
+ */
+#include "target_test.h"
+
+/*
+ *  Í¥ÀèÅÙ€ÎÄêµÁ
+ */
+#define HIGH_PRIORITY	4		/* ¹âÍ¥ÀèÅÙ */
+#define MID_PRIORITY	9		/* ÃæÍ¥ÀèÅÙ */
+#define LOW_PRIORITY	14		/* ÄãÍ¥ÀèÅÙ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È€Ë°ÍÂž€¹€ë²ÄÇœÀ­€Î€¢€ëÄê¿ô€ÎÄêµÁ
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯¥µ¥€¥º */
+#endif /* STACK_SIZE */
+
+/*
+ *  ŽØ¿ô€Î¥×¥í¥È¥¿¥€¥×ÀëžÀ
+ */
+#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: /include/histogram.h
===================================================================
--- /include/histogram.h	(revision 7)
+++ /include/histogram.h	(revision 7)
@@ -0,0 +1,75 @@
+/*
+ *  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$
+ */
+
+/*
+ *		ŒÂ¹Ô»þŽÖÊ¬ÉÛœž·×¥â¥ž¥å¡Œ¥ë
+ */
+
+#ifndef TOPPERS_HISTOGRAM_H
+#define TOPPERS_HISTOGRAM_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *  ŒÂ¹Ô»þŽÖÊ¬ÉÛ·×Â¬€ÎœéŽü²œ
+ */
+extern void	init_hist(ID histid, uint_t maxval, uint_t histarea[]);
+
+/*
+ *  ŒÂ¹Ô»þŽÖ·×Â¬€Î³«»Ï
+ */
+extern void	begin_measure(ID histid);
+
+/*
+ *  ŒÂ¹Ô»þŽÖ·×Â¬€ÎœªÎ»
+ */
+extern void	end_measure(ID histid);
+
+/*
+ *  ŒÂ¹Ô»þŽÖÊ¬ÉÛ·×Â¬€ÎÉœŒš
+ */
+extern void	print_hist(ID histid);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* TOPPERS_HISTOGRAM_H */
Index: /include/itron.h
===================================================================
--- /include/itron.h	(revision 7)
+++ /include/itron.h	(revision 7)
@@ -0,0 +1,137 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 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$
+ */
+
+/*
+ *		ITRON»ÅÍÍ¶ŠÄÌµ¬Äê€Î¥Ç¡Œ¥¿·¿¡ŠÄê¿ô¡Š¥Þ¥¯¥í
+ *
+ *  €³€Î¥Ø¥Ã¥À¥Õ¥¡¥€¥ë€Ï¡€ITRON»ÅÍÍ¶ŠÄÌµ¬Äê€Î¥Ç¡Œ¥¿·¿¡ŠÄê¿ô¡Š¥Þ¥¯¥í€ÎÃæ
+ *  €Ç¡€TOPPERS¶ŠÄÌ¥Ø¥Ã¥À¥Õ¥¡¥€¥ë€ËŽÞ€Þ€ì€Ê€€€â€Î€ÎÄêµÁ€òŽÞ€à¡¥ITRON»Å
+ *  ÍÍ€È€ÎžßŽ¹À­€òÉ¬Í×€È€¹€ë¥¢¥×¥ê¥±¡Œ¥·¥ç¥ó€¬¥€¥ó¥¯¥ë¡Œ¥É€¹€ë€³€È€òÁÛ
+ *  Äê€·€Æ€€€ë¡¥
+ *
+ *  ¥¢¥»¥ó¥Ö¥êžÀžì€Î¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€«€é€³€Î¥Õ¥¡¥€¥ë€ò¥€¥ó¥¯¥ë¡Œ¥É€¹€ë»þ
+ *  €Ï¡€TOPPERS_MACRO_ONLY€òÄêµÁ€·€Æ€ª€¯¡¥€³€ì€Ë€è€ê¡€¥Þ¥¯¥íÄêµÁ°Ê³°€ò
+ *  œü€¯€è€Š€Ë€Ê€Ã€Æ€€€ë¡¥
+ */
+
+#ifndef TOPPERS_ITRON_H
+#define TOPPERS_ITRON_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *  TOPPERS¶ŠÄÌ¥Ø¥Ã¥À¥Õ¥¡¥€¥ë
+ */
+#include "t_stddef.h"
+
+/*
+ *  ITRON»ÅÍÍ¶ŠÄÌ¥Ç¡Œ¥¿·¿
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+#ifdef INT8_MAX
+typedef	int8_t			B;			/* Éä¹æÉÕ€­8¥Ó¥Ã¥ÈÀ°¿ô */
+#endif /* INT8_MAX */
+
+#ifdef UINT8_MAX
+typedef	uint8_t			UB;			/* Éä¹æÌµ€·8¥Ó¥Ã¥ÈÀ°¿ô */
+typedef	uint8_t			VB;			/* ·¿€¬Äê€Þ€é€Ê€€8¥Ó¥Ã¥È€ÎÃÍ */
+#endif /* UINT8_MAX */
+
+typedef	int16_t			H;			/* Éä¹æÉÕ€­16¥Ó¥Ã¥ÈÀ°¿ô */
+typedef	uint16_t		UH;			/* Éä¹æÌµ€·16¥Ó¥Ã¥ÈÀ°¿ô */
+typedef	uint16_t		VH;			/* ·¿€¬Äê€Þ€é€Ê€€16¥Ó¥Ã¥È€ÎÃÍ */
+
+typedef	int32_t			W;			/* Éä¹æÉÕ€­32¥Ó¥Ã¥ÈÀ°¿ô */
+typedef	uint32_t		UW;			/* Éä¹æÌµ€·32¥Ó¥Ã¥ÈÀ°¿ô */
+typedef	uint32_t		VW;			/* ·¿€¬Äê€Þ€é€Ê€€32¥Ó¥Ã¥È€ÎÃÍ */
+
+#ifdef INT64_MAX
+typedef	int64_t			D;			/* Éä¹æÉÕ€­64¥Ó¥Ã¥ÈÀ°¿ô */
+#endif /* INT64_MAX */
+
+#ifdef UINT64_MAX
+typedef	uint64_t		UD;			/* Éä¹æÌµ€·64¥Ó¥Ã¥ÈÀ°¿ô */
+typedef	uint64_t		VD;			/* ·¿€¬Äê€Þ€é€Ê€€64¥Ó¥Ã¥È€ÎÃÍ */
+#endif /* UINT64_MAX */
+
+typedef	void			*VP;		/* ·¿€¬Äê€Þ€é€Ê€€€â€Î€Ø€Î¥Ý¥€¥ó¥¿ */
+
+typedef int_t			INT;		/* Œ«Á³€Ê¥µ¥€¥º€ÎÉä¹æÉÕ€­À°¿ô */
+typedef uint_t			UINT;		/* Œ«Á³€Ê¥µ¥€¥º€ÎÉä¹æÌµ€·À°¿ô */
+
+typedef bool_t			BOOL;		/* ¿¿µ¶ÃÍ */
+
+typedef	intptr_t		VP_INT;		/* ¥Ý¥€¥ó¥¿€Þ€¿€ÏÉä¹æÉÕ€­À°¿ô */
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  ITRON»ÅÍÍ¶ŠÄÌÄê¿ô
+ */
+#define	TRUE		true			/* ¿¿ */
+#define	FALSE		false			/* µ¶ */
+
+/*
+ *  ¥ª¥Ö¥ž¥§¥¯¥ÈÂ°À­€ÎÄêµÁ
+ */
+#define TA_HLNG			UINT_C(0x00)	/* ¹âµéžÀžìÍÑ¥€¥ó¥¿¥Õ¥§¡Œ¥¹ */
+#define TA_TFIFO		UINT_C(0x00)	/* ¥¿¥¹¥¯€ÎÂÔ€Á¹ÔÎó€òFIFOœç€Ë */
+#define TA_MFIFO		UINT_C(0x00)	/* ¥á¥Ã¥»¡Œ¥ž¥­¥å¡Œ€òFIFOœç€Ë */
+#define TA_WSGL			UINT_C(0x00)	/* ÂÔ€Á¥¿¥¹¥¯€Ï1€Ä€Î€ß */
+
+/*
+ *  ¥Í¥¹¥È²ó¿ô€ÎºÇÂçÃÍ
+ */
+#define TMAX_SUSCNT		UINT_C(1)		/* ¶¯À©ÂÔ€ÁÍ×µá¥Í¥¹¥È¿ô€ÎºÇÂçÃÍ */
+
+/*
+ *  ¶¯À©ÂÔ€ÁŸõÂÖ€«€é€Î¶¯À©ºÆ³«
+ */
+#define frsm_tsk(tskid)		rsm_tsk(tskid)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* TOPPERS_ITRON_H */
Index: /include/kernel.h
===================================================================
--- /include/kernel.h	(revision 7)
+++ /include/kernel.h	(revision 7)
@@ -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) 2004-2014 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$
+ */
+
+/*
+ *		TOPPERS/ASP¥«¡Œ¥Í¥ë Éžœà¥Ø¥Ã¥À¥Õ¥¡¥€¥ë
+ *
+ *  TOPPERS/ASP¥«¡Œ¥Í¥ë€¬¥µ¥Ý¡Œ¥È€¹€ë¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎÀëžÀ€È¡€É¬Í×€Ê¥Ç¡Œ
+ *  ¥¿·¿¡€Äê¿ô¡€¥Þ¥¯¥í€ÎÄêµÁ€òŽÞ€à¥Ø¥Ã¥À¥Õ¥¡¥€¥ë¡¥
+ *
+ *  ¥¢¥»¥ó¥Ö¥êžÀžì€Î¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€«€é€³€Î¥Õ¥¡¥€¥ë€ò¥€¥ó¥¯¥ë¡Œ¥É€¹€ë»þ
+ *  €Ï¡€TOPPERS_MACRO_ONLY€òÄêµÁ€·€Æ€ª€¯¡¥€³€ì€Ë€è€ê¡€¥Þ¥¯¥íÄêµÁ°Ê³°€ò
+ *  œü€¯€è€Š€Ë€Ê€Ã€Æ€€€ë¡¥
+ *
+ *  €³€Î¥Õ¥¡¥€¥ë€ò¥€¥ó¥¯¥ë¡Œ¥É€¹€ëÁ°€Ë¥€¥ó¥¯¥ë¡Œ¥É€·€Æ€ª€¯€Ù€­¥Õ¥¡¥€¥ë
+ *  €Ï€Ê€€¡¥
+ */
+
+#ifndef TOPPERS_KERNEL_H
+#define TOPPERS_KERNEL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *	TOPPERS¶ŠÄÌ€Î¥Ç¡Œ¥¿·¿¡ŠÄê¿ô¡Š¥Þ¥¯¥í
+ */
+#include <t_stddef.h>
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô
+ */
+#include "target_kernel.h"
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  ¥Ç¡Œ¥¿·¿€ÎÄêµÁ
+ */
+
+/*
+ *  ¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó€ä¥ª¥Ö¥ž¥§¥¯¥ÈÈÖ¹æ€Î·¿ÄêµÁ
+ */
+typedef	uint_t		TEXPTN;		/* ¥¿¥¹¥¯Îã³°Í×°ø€Î¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó */
+typedef	uint_t		FLGPTN;		/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€Î¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó */
+typedef	uint_t		INTNO;		/* ³ä¹þ€ßÈÖ¹æ */
+typedef	uint_t		INHNO;		/* ³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ */
+typedef	uint_t		EXCNO;		/* CPUÎã³°¥Ï¥ó¥É¥éÈÖ¹æ */
+
+/*
+ *  œèÍýÃ±°Ì€Î·¿ÄêµÁ
+ */
+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);
+
+/*
+ *  ¥á¥â¥êÎÎ°è³ÎÊÝ€Î€¿€á€Î·¿ÄêµÁ
+ */
+#ifndef TOPPERS_STK_T
+#define TOPPERS_STK_T	intptr_t
+#endif /* TOPPERS_STK_T */
+typedef	TOPPERS_STK_T	STK_T;	/* ¥¹¥¿¥Ã¥¯ÎÎ°è€ò³ÎÊÝ€¹€ë€¿€á€Î·¿ */
+
+#ifndef TOPPERS_MPF_T
+#define TOPPERS_MPF_T	intptr_t
+#endif /* TOPPERS_MPF_T */
+typedef	TOPPERS_MPF_T	MPF_T;	/* žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÎÎ°è€ò³ÎÊÝ€¹€ë€¿€á€Î·¿ */
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥ž¥Ø¥Ã¥À€Î·¿ÄêµÁ
+ */
+typedef	struct t_msg {			/* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€Î¥á¥Ã¥»¡Œ¥ž¥Ø¥Ã¥À */
+	struct t_msg	*pk_next;
+} T_MSG;
+
+typedef	struct t_msg_pri {		/* Í¥ÀèÅÙÉÕ€­¥á¥Ã¥»¡Œ¥ž¥Ø¥Ã¥À */
+	T_MSG	msgque;				/* ¥á¥Ã¥»¡Œ¥ž¥Ø¥Ã¥À */
+	PRI		msgpri;				/* ¥á¥Ã¥»¡Œ¥žÍ¥ÀèÅÙ */
+} T_MSG_PRI;
+
+/*
+ *  ¥Ñ¥±¥Ã¥È·ÁŒ°€ÎÄêµÁ
+ */
+typedef struct t_rtsk {
+	STAT	tskstat;	/* ¥¿¥¹¥¯ŸõÂÖ */
+	PRI		tskpri;		/* ¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ */
+	PRI		tskbpri;	/* ¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ */
+	STAT	tskwait;	/* ÂÔ€ÁÍ×°ø */
+	ID		wobjid;		/* ÂÔ€ÁÂÐŸÝ€Î¥ª¥Ö¥ž¥§¥¯¥È€ÎID */
+	TMO		lefttmo;	/* ¥¿¥€¥à¥¢¥Š¥È€¹€ë€Þ€Ç€Î»þŽÖ */
+	uint_t	actcnt;		/* µ¯Æ°Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô */
+	uint_t	wupcnt;		/* µ¯Ÿ²Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô */
+} T_RTSK;
+
+typedef struct t_rtex {
+	STAT	texstat;	/* ¥¿¥¹¥¯Îã³°œèÍý€ÎŸõÂÖ */
+	TEXPTN	pndptn;		/* ÊÝÎ±Îã³°Í×°ø */
+} T_RTEX;
+
+typedef struct t_rsem {
+	ID		wtskid;		/* ¥»¥Þ¥Õ¥©€ÎÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
+	uint_t	semcnt;		/* ¥»¥Þ¥Õ¥©€Îžœºß€Î»ñž»¿ô */
+} T_RSEM;
+
+typedef struct t_rflg {
+	ID		wtskid;		/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
+	FLGPTN	flgptn;		/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€Îžœºß€Î¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó */
+} T_RFLG;
+
+typedef struct t_rdtq {
+	ID		stskid;		/* ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎÁ÷¿®ÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
+	ID		rtskid;		/* ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎŒõ¿®ÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
+	uint_t	sdtqcnt;	/* ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€Ë³ÊÇŒ€µ€ì€Æ€€€ë¥Ç¡Œ¥¿€Î¿ô */
+} T_RDTQ;
+
+typedef struct t_rpdq {
+	ID		stskid;		/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎÁ÷¿®ÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯
+						   €ÎIDÈÖ¹æ */
+	ID		rtskid;		/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎŒõ¿®ÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯
+						   €ÎIDÈÖ¹æ */
+	uint_t	spdqcnt;	/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€Ë³ÊÇŒ€µ€ì€Æ€€€ë¥Ç¡Œ
+						   ¥¿€Î¿ô */
+} T_RPDQ;
+
+typedef struct t_rmbx {
+	ID		wtskid;		/* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€ÎÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
+	T_MSG	*pk_msg;	/* ¥á¥Ã¥»¡Œ¥ž¥­¥å¡Œ€ÎÀèÆ¬€Ë€Ä€Ê€¬€ì€¿¥á¥Ã¥»¡Œ¥ž
+						   €ÎÀèÆ¬ÈÖÃÏ */
+} T_RMBX;
+
+typedef struct t_rmpf {
+	ID		wtskid;		/* žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ë€ÎÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€Î
+						   IDÈÖ¹æ */
+	uint_t	fblkcnt;	/* žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÎÎ°è€Î¶õ€­¥á¥â¥êÎÎ°è€Ë³ä€ê
+						   ÉÕ€±€ë€³€È€¬€Ç€­€ëžÇÄêÄ¹¥á¥â¥ê¥Ö¥í¥Ã¥¯€Î¿ô */
+} T_RMPF;
+
+typedef struct t_rcyc {
+	STAT	cycstat;	/* ŒþŽü¥Ï¥ó¥É¥é€ÎÆ°ºîŸõÂÖ */
+	RELTIM	lefttim;	/* Œ¡€ËŒþŽü¥Ï¥ó¥É¥é€òµ¯Æ°€¹€ë»þ¹ï€Þ€Ç€ÎÁêÂÐ»þŽÖ */
+} T_RCYC;
+
+typedef struct t_ralm {
+	STAT	almstat;	/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ÎÆ°ºîŸõÂÖ */
+	RELTIM	lefttim;	/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€òµ¯Æ°€¹€ë»þ¹ï€Þ€Ç€ÎÁêÂÐ»þŽÖ */
+} T_RALM;
+
+/*
+ *  ¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎÀëžÀ
+ */
+
+/*
+ *  ¥¿¥¹¥¯ŽÉÍýµ¡Çœ
+ */
+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();
+
+/*
+ *  ¥¿¥¹¥¯ÉÕÂ°Æ±Žüµ¡Çœ
+ */
+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();
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍýµ¡Çœ
+ */
+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();
+
+/*
+ *  Æ±Žü¡ŠÄÌ¿®µ¡Çœ
+ */
+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		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		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Îã³°ŽÉÍýµ¡Çœ
+ */
+extern bool_t	xsns_dpn(void *p_excinf) throw();
+extern bool_t	xsns_xpn(void *p_excinf) throw();
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  ¥ª¥Ö¥ž¥§¥¯¥ÈÂ°À­€ÎÄêµÁ
+ */
+#define TA_ACT			UINT_C(0x02)	/* ¥¿¥¹¥¯€òµ¯Æ°€µ€ì€¿ŸõÂÖ€ÇÀžÀ® */
+
+#define TA_TPRI			UINT_C(0x01)	/* ¥¿¥¹¥¯€ÎÂÔ€Á¹ÔÎó€òÍ¥ÀèÅÙœç€Ë */
+#define TA_MPRI			UINT_C(0x02)	/* ¥á¥Ã¥»¡Œ¥ž¥­¥å¡Œ€òÍ¥ÀèÅÙœç€Ë */
+
+#define TA_WMUL			UINT_C(0x02)	/* Ê£¿ô€ÎÂÔ€Á¥¿¥¹¥¯ */
+#define TA_CLR			UINT_C(0x04)	/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€Î¥¯¥ê¥¢»ØÄê */
+
+#define TA_STA			UINT_C(0x02)	/* ŒþŽü¥Ï¥ó¥É¥é€òÆ°ºîŸõÂÖ€ÇÀžÀ® */
+
+#define TA_NONKERNEL	UINT_C(0x02)	/* ¥«¡Œ¥Í¥ëŽÉÍý³°€Î³ä¹þ€ß */
+
+#define TA_ENAINT		UINT_C(0x01)	/* ³ä¹þ€ßÍ×µá¶Ø»ß¥Õ¥é¥°€ò¥¯¥ê¥¢ */
+#define TA_EDGE			UINT_C(0x02)	/* ¥š¥Ã¥ž¥È¥ê¥¬ */
+
+/*
+ *  ¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎÆ°ºî¥â¡Œ¥É€ÎÄêµÁ
+ */
+#define TWF_ORW			UINT_C(0x01)	/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎORÂÔ€Á */
+#define TWF_ANDW		UINT_C(0x02)	/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎANDÂÔ€Á */
+
+/*
+ *  ¥ª¥Ö¥ž¥§¥¯¥È€ÎŸõÂÖ€ÎÄêµÁ
+ */
+#define TTS_RUN			UINT_C(0x01)	/* ŒÂ¹ÔŸõÂÖ */
+#define TTS_RDY			UINT_C(0x02)	/* ŒÂ¹Ô²ÄÇœŸõÂÖ */
+#define TTS_WAI			UINT_C(0x04)	/* ÂÔ€ÁŸõÂÖ */
+#define TTS_SUS			UINT_C(0x08)	/* ¶¯À©ÂÔ€ÁŸõÂÖ */
+#define TTS_WAS			UINT_C(0x0c)	/* ÆóœÅÂÔ€ÁŸõÂÖ */
+#define TTS_DMT			UINT_C(0x10)	/* µÙ»ßŸõÂÖ */
+
+#define TTW_SLP			UINT_C(0x0001)	/* µ¯Ÿ²ÂÔ€Á */
+#define TTW_DLY			UINT_C(0x0002)	/* »þŽÖ·Ð²áÂÔ€Á */
+#define TTW_SEM			UINT_C(0x0004)	/* ¥»¥Þ¥Õ¥©€Î»ñž»³ÍÆÀÂÔ€Á */
+#define TTW_FLG			UINT_C(0x0008)	/* ¥€¥Ù¥ó¥È¥Õ¥é¥°ÂÔ€Á */
+#define TTW_SDTQ		UINT_C(0x0010)	/* ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®ÂÔ€Á */
+#define TTW_RDTQ		UINT_C(0x0020)	/* ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TTW_SPDQ		UINT_C(0x0100)	/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®ÂÔ€Á */
+#define TTW_RPDQ		UINT_C(0x0200)	/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TTW_MBX			UINT_C(0x0040)	/* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TTW_MPF			UINT_C(0x2000)	/* žÇÄêÄ¹¥á¥â¥ê¥Ö¥í¥Ã¥¯€Î³ÍÆÀÂÔ€Á */
+
+#define TTEX_ENA		UINT_C(0x01)	/* ¥¿¥¹¥¯Îã³°œèÍýµö²ÄŸõÂÖ */
+#define TTEX_DIS		UINT_C(0x02)	/* ¥¿¥¹¥¯Îã³°œèÍý¶Ø»ßŸõÂÖ */
+
+#define TCYC_STP		UINT_C(0x01)	/* ŒþŽü¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€Ê€€ */
+#define TCYC_STA		UINT_C(0x02)	/* ŒþŽü¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€ë */
+
+#define TALM_STP		UINT_C(0x01)	/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€Ê€€ */
+#define TALM_STA		UINT_C(0x02)	/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€ë */
+
+/*
+ *  €œ€ÎÂŸ€ÎÄê¿ô€ÎÄêµÁ
+ */
+#define TSK_SELF		0			/* Œ«¥¿¥¹¥¯»ØÄê */
+#define TSK_NONE		0			/* ³ºÅö€¹€ë¥¿¥¹¥¯€¬€Ê€€ */
+
+#define TPRI_SELF		0			/* Œ«¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ */
+#define TPRI_INI		0			/* ¥¿¥¹¥¯€Îµ¯Æ°»þÍ¥ÀèÅÙ */
+
+#define TIPM_ENAALL		0			/* ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœü */
+
+/*
+ *  ¹œÀ®Äê¿ô€È¥Þ¥¯¥í
+ */
+
+/*
+ *  ¥µ¥Ý¡Œ¥È€¹€ëµ¡Çœ
+ */
+#ifdef TOPPERS_TARGET_SUPPORT_DIS_INT
+#define TOPPERS_SUPPORT_DIS_INT			/* dis_int€¬¥µ¥Ý¡Œ¥È€µ€ì€Æ€€€ë */
+#endif /* TOPPERS_TARGET_SUPPORT_DIS_INT */
+
+#ifdef TOPPERS_TARGET_SUPPORT_ENA_INT
+#define TOPPERS_SUPPORT_ENA_INT			/* ena_int€¬¥µ¥Ý¡Œ¥È€µ€ì€Æ€€€ë */
+#endif /* TOPPERS_TARGET_SUPPORT_ENA_INT */
+
+#ifdef TOPPERS_TARGET_SUPPORT_GET_UTM
+#define TOPPERS_SUPPORT_GET_UTM			/* get_utm€¬¥µ¥Ý¡Œ¥È€µ€ì€Æ€€€ë */
+#endif /* TOPPERS_TARGET_SUPPORT_GET_UTM */
+
+/*
+ *  Í¥ÀèÅÙ€ÎÈÏ°Ï
+ */
+#define TMIN_TPRI		1			/* ¥¿¥¹¥¯Í¥ÀèÅÙ€ÎºÇŸ®ÃÍ¡ÊºÇ¹âÃÍ¡Ë*/
+#define TMAX_TPRI		16			/* ¥¿¥¹¥¯Í¥ÀèÅÙ€ÎºÇÂçÃÍ¡ÊºÇÄãÃÍ¡Ë*/
+#define TMIN_DPRI		1			/* ¥Ç¡Œ¥¿Í¥ÀèÅÙ€ÎºÇŸ®ÃÍ¡ÊºÇ¹âÃÍ¡Ë*/
+#define TMAX_DPRI		16			/* ¥Ç¡Œ¥¿Í¥ÀèÅÙ€ÎºÇÂçÃÍ¡ÊºÇÄãÃÍ¡Ë*/
+#define TMIN_MPRI		1			/* ¥á¥Ã¥»¡Œ¥žÍ¥ÀèÅÙ€ÎºÇŸ®ÃÍ¡ÊºÇ¹âÃÍ¡Ë*/
+#define TMAX_MPRI		16			/* ¥á¥Ã¥»¡Œ¥žÍ¥ÀèÅÙ€ÎºÇÂçÃÍ¡ÊºÇÄãÃÍ¡Ë*/
+#define TMIN_ISRPRI		1			/* ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óÍ¥ÀèÅÙ€ÎºÇŸ®ÃÍ */
+#define TMAX_ISRPRI		16			/* ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óÍ¥ÀèÅÙ€ÎºÇÂçÃÍ */
+
+/*
+ *  ¥Ð¡Œ¥ž¥ç¥óŸðÊó
+ */
+#define TKERNEL_MAKER	UINT_C(0x0118)	/* ¥«¡Œ¥Í¥ë€Î¥á¡Œ¥«¡Œ¥³¡Œ¥É */
+#define TKERNEL_PRID	UINT_C(0x0007)	/* ¥«¡Œ¥Í¥ë€ÎŒ±ÊÌÈÖ¹æ */
+#define TKERNEL_SPVER	UINT_C(0xf517)	/* ¥«¡Œ¥Í¥ë»ÅÍÍ€Î¥Ð¡Œ¥ž¥ç¥óÈÖ¹æ */
+#define TKERNEL_PRVER	UINT_C(0x1092)	/* ¥«¡Œ¥Í¥ë€Î¥Ð¡Œ¥ž¥ç¥óÈÖ¹æ */
+
+/*
+ *  ¥­¥å¡Œ¥€¥ó¥°²ó¿ô€ÎºÇÂçÃÍ
+ */
+#define TMAX_ACTCNT		UINT_C(1)		/* µ¯Æ°Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô€ÎºÇÂçÃÍ */
+#define TMAX_WUPCNT		UINT_C(1)		/* µ¯Ÿ²Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô€ÎºÇÂçÃÍ */
+
+/*
+ *  ¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó€Î¥Ó¥Ã¥È¿ô
+ */
+#ifndef TBIT_TEXPTN					/* ¥¿¥¹¥¯Îã³°Í×°ø€Î¥Ó¥Ã¥È¿ô */
+#define TBIT_TEXPTN		(sizeof(TEXPTN) * CHAR_BIT)
+#endif /* TBIT_TEXPTN */
+
+#ifndef TBIT_FLGPTN					/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€Î¥Ó¥Ã¥È¿ô */
+#define TBIT_FLGPTN		(sizeof(FLGPTN) * CHAR_BIT)
+#endif /* TBIT_FLGPTN */
+
+/*
+ *  ¥á¥â¥êÎÎ°è³ÎÊÝ€Î€¿€á€Î¥Þ¥¯¥í
+ *
+ *  °Ê²Œ€ÎTOPPERS_COUNT_SZ€ÈTOPPERS_ROUND_SZ€ÎÄêµÁ€Ï¡€unit€¬2€Î¶ÒŸè€Ç€¢
+ *  €ë€³€È€ò²ŸÄê€·€Æ€€€ë¡¥
+ */
+#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	/* ¥»¥Þ¥Õ¥©€ÎºÇÂç»ñž»¿ô€ÎºÇÂçÃÍ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* TOPPERS_KERNEL_H */
Index: /include/log_output.h
===================================================================
--- /include/log_output.h	(revision 7)
+++ /include/log_output.h	(revision 7)
@@ -0,0 +1,84 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥·¥¹¥Æ¥à¥í¥°€Î¥Õ¥©¡Œ¥Þ¥Ã¥ÈœÐÎÏ
+ */
+
+#ifndef TOPPERS_LOG_OUTPUT_H
+#define TOPPERS_LOG_OUTPUT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <t_syslog.h>
+
+/*
+ *  Êž»úÎóÀ°·ÁœÐÎÏ
+ *
+ *  format€Ç»ØÄê€µ€ì€ë¥Õ¥©¡Œ¥Þ¥Ã¥Èµ­œÒ€Èp_args€Ç»ØÄê€µ€ì€ë°ú¿ôÎó€«€éºî
+ *  À®€·€¿¥á¥Ã¥»¡Œ¥ž€ò¡€1Êž»úœÐÎÏŽØ¿ôputc€òÍÑ€€€ÆœÐÎÏ€¹€ë¡¥
+ */
+extern void	syslog_printf(const char *format, const intptr_t *p_args,
+										void (*putc)(char)) throw();
+
+/*
+ *  ¥í¥°ŸðÊó€ÎœÐÎÏ
+ *
+ *  p_syslog€Ç»ØÄê€µ€ì€ë¥í¥°ŸðÊó€òÊž»úÎó€ËÀ°·Á€·¡€1Êž»úœÐÎÏŽØ¿ôputc€òÍÑ
+ *  €€€ÆœÐÎÏ€¹€ë¡¥
+ */
+extern void	syslog_print(const SYSLOG *p_syslog, void (*putc)(char)) throw();
+
+/*
+ *  ¥í¥°ŸðÊóÁÓŒº¥á¥Ã¥»¡Œ¥žÊž»úÎó
+ *
+ *  lostlogžÄ€Î¥í¥°ŸðÊó€¬Œº€ï€ì€¿»Ý€Î¥á¥Ã¥»¡Œ¥ž€ò¡€1Êž»úœÐÎÏŽØ¿ôputc€ò
+ *  ÍÑ€€€ÆœÐÎÏ€¹€ë¡¥
+ */
+extern void	syslog_lostmsg(uint_t lostlog, void (*putc)(char)) throw();
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* TOPPERS_LOG_OUTPUT_H */
Index: /include/queue.h
===================================================================
--- /include/queue.h	(revision 7)
+++ /include/queue.h	(revision 7)
@@ -0,0 +1,161 @@
+/*
+ *  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-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$
+ */
+
+/*
+ *		¥­¥å¡ŒÁàºî¥é¥€¥Ö¥é¥ê
+ *
+ *  €³€Î¥­¥å¡ŒÁàºî¥é¥€¥Ö¥é¥ê€Ç€Ï¡€¥­¥å¡Œ¥Ø¥Ã¥À€òŽÞ€à¥ê¥ó¥°¹œÂ€€Î¥À¥Ö¥ë
+ *  ¥ê¥ó¥¯¥­¥å¡Œ€ò°·€Š¡¥¶ñÂÎÅª€Ë€Ï¡€¥­¥å¡Œ¥Ø¥Ã¥À€ÎŒ¡¥š¥ó¥È¥ê€Ï¥­¥å¡Œ€Î
+ *  ÀèÆ¬€Î¥š¥ó¥È¥ê¡€Á°¥š¥ó¥È¥ê€Ï¥­¥å¡Œ€ÎËöÈø€Î¥š¥ó¥È¥ê€È€¹€ë¡¥€Þ€¿¡€¥­
+ *  ¥å¡Œ€ÎÀèÆ¬€Î¥š¥ó¥È¥ê€ÎÁ°¥š¥ó¥È¥ê€È¡€¥­¥å¡Œ€ÎËöÈø€Î¥š¥ó¥È¥ê€ÎŒ¡¥š¥ó
+ *  ¥È¥ê€Ï¡€¥­¥å¡Œ¥Ø¥Ã¥À€È€¹€ë¡¥¶õ€Î¥­¥å¡Œ€Ï¡€Œ¡¥š¥ó¥È¥ê¡€Á°¥š¥ó¥È¥ê€È
+ *  €âŒ«Ê¬Œ«¿È€ò»Ø€¹¥­¥å¡Œ¥Ø¥Ã¥À€Ç€¢€é€ï€¹¡¥
+ */
+
+#ifndef	TOPPERS_QUEUE_H
+#define	TOPPERS_QUEUE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *  ¥­¥å¡Œ€Î¥Ç¡Œ¥¿¹œÂ€€ÎÄêµÁ
+ */
+typedef struct queue {
+	struct queue *p_next;		/* Œ¡¥š¥ó¥È¥ê€Ø€Î¥Ý¥€¥ó¥¿ */
+	struct queue *p_prev;		/* Á°¥š¥ó¥È¥ê€Ø€Î¥Ý¥€¥ó¥¿ */
+} QUEUE;
+
+/*
+ *  ¥­¥å¡Œ€ÎœéŽü²œ
+ *
+ *  p_queue€Ë€Ï¥­¥å¡Œ¥Ø¥Ã¥À€ò»ØÄê€¹€ë¡¥
+ */
+Inline void
+queue_initialize(QUEUE *p_queue)
+{
+	p_queue->p_prev = p_queue;
+	p_queue->p_next = p_queue;
+}
+
+/*
+ *  ¥­¥å¡Œ€ÎÁ°¥š¥ó¥È¥ê€Ø€ÎÁÞÆþ
+ *
+ *  p_queue€ÎÁ°€Ëp_entry€òÁÞÆþ€¹€ë¡¥p_queue€Ë¥­¥å¡Œ¥Ø¥Ã¥À€ò»ØÄê€·€¿Ÿì
+ *  ¹ç€Ë€Ï¡€¥­¥å¡Œ€ÎËöÈø€Ëp_entry€òÁÞÆþ€¹€ë€³€È€Ë€Ê€ë¡¥
+ */
+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;
+}
+
+/*
+ *  ¥­¥å¡Œ€ÎŒ¡¥š¥ó¥È¥ê€Ø€ÎÁÞÆþ
+ *
+ *  p_queue€ÎŒ¡€Ëp_entry€òÁÞÆþ€¹€ë¡¥p_queue€Ë¥­¥å¡Œ¥Ø¥Ã¥À€ò»ØÄê€·€¿Ÿì
+ *  ¹ç€Ë€Ï¡€¥­¥å¡Œ€ÎÀèÆ¬€Ëp_entry€òÁÞÆþ€¹€ë€³€È€Ë€Ê€ë¡¥
+ */
+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;
+}
+
+/*
+ *  ¥š¥ó¥È¥ê€Îºïœü
+ *
+ *  p_entry€ò¥­¥å¡Œ€«€éºïœü€¹€ë¡¥
+ */
+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;
+}
+
+/*
+ *  ¥­¥å¡Œ€ÎŒ¡¥š¥ó¥È¥ê€ÎŒèœÐ€·
+ *
+ *  p_queue€ÎŒ¡¥š¥ó¥È¥ê€ò¥­¥å¡Œ€«€éºïœü€·¡€ºïœü€·€¿¥š¥ó¥È¥ê€òÊÖ€¹¡¥
+ *  p_queue€Ë¥­¥å¡Œ¥Ø¥Ã¥À€ò»ØÄê€·€¿Ÿì¹ç€Ë€Ï¡€¥­¥å¡Œ€ÎÀèÆ¬€Î¥š¥ó¥È¥ê€ò
+ *  Œè€êœÐ€¹€³€È€Ë€Ê€ë¡¥p_queue€Ë¶õ€Î¥­¥å¡Œ€ò»ØÄê€·€ÆžÆ€ÓœÐ€·€Æ€Ï€Ê€é
+ *  €Ê€€¡¥
+ */
+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);
+}
+
+/*
+ *  ¥­¥å¡Œ€¬¶õ€«€É€Š€«€Î¥Á¥§¥Ã¥¯
+ *
+ *  p_queue€Ë€Ï¥­¥å¡Œ¥Ø¥Ã¥À€ò»ØÄê€¹€ë¡¥
+ */
+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: /include/sil.h
===================================================================
--- /include/sil.h	(revision 7)
+++ /include/sil.h	(revision 7)
@@ -0,0 +1,287 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥·¥¹¥Æ¥à¥€¥ó¥¿¥Õ¥§¡Œ¥¹¥ì¥€¥ä
+ *
+ *  ¥·¥¹¥Æ¥à¥€¥ó¥¿¥Õ¥§¡Œ¥¹¥ì¥€¥ä€Î¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎÄêµÁ¡ŠÀëžÀ€È¥Þ¥¯¥í€Ê
+ *  €É€ÎÄêµÁ€òŽÞ€à¥Ø¥Ã¥À¥Õ¥¡¥€¥ë¡¥
+ *
+ *  ¥¢¥»¥ó¥Ö¥êžÀžì€Î¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€«€é€³€Î¥Õ¥¡¥€¥ë€ò¥€¥ó¥¯¥ë¡Œ¥É€¹€ë»þ
+ *  €Ï¡€TOPPERS_MACRO_ONLY€òÄêµÁ€·€Æ€ª€¯€³€È€Ç¡€¥Þ¥¯¥íÄêµÁ°Ê³°€Îµ­œÒ€ò
+ *  œü€¯€³€È€¬€Ç€­€ë¡¥
+ *
+ *  €³€Î¥Õ¥¡¥€¥ë€ò¥€¥ó¥¯¥ë¡Œ¥É€¹€ëÁ°€Ë¥€¥ó¥¯¥ë¡Œ¥É€·€Æ€ª€¯€Ù€­¥Õ¥¡¥€¥ë
+ *  €Ï€Ê€€¡¥
+ */
+
+#ifndef TOPPERS_SIL_H
+#define TOPPERS_SIL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *	TOPPERS¶ŠÄÌ€Î¥Ç¡Œ¥¿·¿¡ŠÄê¿ô¡Š¥Þ¥¯¥í
+ */
+#include <t_stddef.h>
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô
+ */
+#include "target_sil.h"
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  ÁŽ³ä¹þ€ß¥í¥Ã¥¯ŸõÂÖ€ÎÀ©žæ
+ *
+ *  SIL_PRE_LOC¡€SIL_LOC_INT()¡€SIL_UNL_INT()€Ï¡€¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€ÇÍÑ
+ *  °Õ€¹€ë¡¥¥Ç¥Õ¥©¥ë¥È€ÎÄêµÁ€ÏÍÑ°Õ€·€Æ€€€Ê€€¡¥
+ */
+
+/*
+ *  ÈùŸ¯»þŽÖÂÔ€Á
+ */
+extern void	sil_dly_nse(ulong_t dlytim) throw();
+
+/*
+ *  ¥š¥ó¥Ç¥£¥¢¥ó€ÎÈ¿ÅŸ
+ */
+#ifndef TOPPERS_SIL_REV_ENDIAN_UINT16
+#define	TOPPERS_SIL_REV_ENDIAN_UINT16(data) \
+				((((data) & 0xffU) << 8) | (((data) >> 8) & 0xffU))
+#endif /* TOPPERS_SIL_REV_ENDIAN_UINT16 */
+
+#ifndef TOPPERS_SIL_REV_ENDIAN_UINT32
+#define	TOPPERS_SIL_REV_ENDIAN_UINT32(data) \
+				((((data) & 0xffU) << 24) | (((data) & 0xff00U) << 8) \
+					| (((data) >> 8) & 0xff00U) | (((data) >> 24) & 0xffU))
+#endif /* TOPPERS_SIL_REV_ENDIAN_UINT32 */
+
+/*
+ *  ¥á¥â¥ê¶õŽÖ¥¢¥¯¥»¥¹ŽØ¿ô
+ */
+#ifndef TOPPERS_OMIT_SIL_ACCESS
+
+/*
+ *  8¥Ó¥Ã¥ÈÃ±°Ì€ÎÆÉœÐ€·¡¿œñ¹þ€ß
+ */
+#ifdef UINT8_MAX
+
+Inline uint8_t
+sil_reb_mem(const uint8_t *mem)
+{
+	uint8_t	data;
+
+	data = *((const 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 */
+
+/*
+ *  16¥Ó¥Ã¥ÈÃ±°Ì€ÎÆÉœÐ€·¡¿œñ¹þ€ß
+ */
+
+Inline uint16_t
+sil_reh_mem(const uint16_t *mem)
+{
+	uint16_t	data;
+
+	data = *((const 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			/* ¥Ó¥Ã¥°¥š¥ó¥Ç¥£¥¢¥ó¥×¥í¥»¥Ã¥µ */
+
+#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(const uint16_t *mem)
+{
+	uint16_t	data;
+
+	data = *((const 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		/* ¥ê¥È¥ë¥š¥ó¥Ç¥£¥¢¥ó¥×¥í¥»¥Ã¥µ */
+
+#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(const uint16_t *mem)
+{
+	uint16_t	data;
+
+	data = *((const 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 */
+
+/*
+ *  32¥Ó¥Ã¥ÈÃ±°Ì€ÎÆÉœÐ€·¡¿œñ¹þ€ß
+ */
+
+Inline uint32_t
+sil_rew_mem(const uint32_t *mem)
+{
+	uint32_t	data;
+
+	data = *((const 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			/* ¥Ó¥Ã¥°¥š¥ó¥Ç¥£¥¢¥ó¥×¥í¥»¥Ã¥µ */
+
+#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(const uint32_t *mem)
+{
+	uint32_t	data;
+
+	data = *((const 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 */		/* ¥ê¥È¥ë¥š¥ó¥Ç¥£¥¢¥ó¥×¥í¥»¥Ã¥µ */
+
+#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(const uint32_t *mem)
+{
+	uint32_t	data;
+
+	data = *((const 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: /include/t_stddef.h
===================================================================
--- /include/t_stddef.h	(revision 7)
+++ /include/t_stddef.h	(revision 7)
@@ -0,0 +1,286 @@
+/*
+ *  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-2012 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		TOPPERS¶ŠÄÌ¥Ø¥Ã¥À¥Õ¥¡¥€¥ë
+ *
+ *  TOPPERSŽØÏ¢€Î€¹€Ù€Æ€Î¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€Ç¥€¥ó¥¯¥ë¡Œ¥É€¹€Ù€­¥Ø¥Ã¥À¥Õ¥¡¥€
+ *  ¥ë¡¥³ÆŒï€Î¥«¡Œ¥Í¥ë€ä¥œ¥Õ¥È¥Š¥§¥¢ÉôÉÊ€Ç¶ŠÄÌ€ËÍÑ€€€ë€³€È€òÁÛÄê€·€Æ€€
+ *  €ë¡¥TOPPERS€Î³ÆŒï€Î¥«¡Œ¥Í¥ë€ä¥œ¥Õ¥È¥Š¥§¥¢ÉôÉÊ€Ç¶ŠÄÌ€ËÍÑ€€€ë¥Ç¡Œ¥¿·¿¡€
+ *  Äê¿ô¡€¥Þ¥¯¥í€ÎÄêµÁ€Ê€É€òŽÞ€à¡¥
+ *
+ *  ¥¢¥»¥ó¥Ö¥êžÀžì€Î¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€«€é€³€Î¥Õ¥¡¥€¥ë€ò¥€¥ó¥¯¥ë¡Œ¥É€¹€ë»þ
+ *  €Ï¡€TOPPERS_MACRO_ONLY€òÄêµÁ€·€Æ€ª€¯¡¥€³€ì€Ë€è€ê¡€¥Þ¥¯¥íÄêµÁ°Ê³°€ò
+ *  œü€¯€è€Š€Ë€Ê€Ã€Æ€€€ë¡¥
+ *
+ *  €³€Î¥Õ¥¡¥€¥ë€ò¥€¥ó¥¯¥ë¡Œ¥É€¹€ëÁ°€Ë¥€¥ó¥¯¥ë¡Œ¥É€·€Æ€ª€¯€Ù€­¥Õ¥¡¥€¥ë
+ *  €Ï€Ê€€¡¥
+ */
+
+#ifndef TOPPERS_T_STDDEF_H
+#define TOPPERS_T_STDDEF_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô
+ */
+#include "target_stddef.h"
+
+/*
+ *  CžÀžì/EC++€Çthrow()€ËÂÐœè€¹€ë€¿€á€ÎÄêµÁ
+ */
+#if !defined(__cplusplus) || defined(__embedded_cplusplus)
+#define throw()
+#endif
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€Î¥Ç¡Œ¥¿·¿€Î¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#ifndef TOPPERS_bool
+#define TOPPERS_bool	int				/* ¥Ö¡Œ¥ë·¿ */
+#endif /* TOPPERS_bool */
+
+#ifndef TOPPERS_size
+#define TOPPERS_size	uintptr_t		/* ¥µ¥€¥º·¿ */
+#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	/* ¥×¥í¥°¥é¥à€Îµ¯Æ°ÈÖÃÏ */
+#endif /* TOPPERS_fp */
+
+/*
+ *  ¶ŠÄÌ¥Ç¡Œ¥¿·¿
+ */
+typedef TOPPERS_bool	bool_t;		/* ¿¿µ¶ÃÍ */
+
+typedef signed int		int_t;		/* Œ«Á³€Ê¥µ¥€¥º€ÎÉä¹æÉÕ€­À°¿ô */
+typedef unsigned int	uint_t;		/* Œ«Á³€Ê¥µ¥€¥º€ÎÉä¹æÌµ€·À°¿ô */
+
+typedef signed long		long_t;		/* Ä¹€á€Î¥µ¥€¥º€ÎÉä¹æÉÕ€­À°¿ô */
+typedef unsigned long	ulong_t;	/* Ä¹€á€Î¥µ¥€¥º€ÎÉä¹æÌµ€·À°¿ô */
+
+typedef int_t			FN;			/* µ¡Çœ¥³¡Œ¥É */
+typedef	int_t			ER;			/* ¥š¥é¡Œ¥³¡Œ¥É */
+typedef	int_t			ID;			/* ¥ª¥Ö¥ž¥§¥¯¥È€ÎIDÈÖ¹æ */
+typedef	uint_t			ATR;		/* ¥ª¥Ö¥ž¥§¥¯¥È€ÎÂ°À­ */
+typedef	uint_t			STAT;		/* ¥ª¥Ö¥ž¥§¥¯¥È€ÎŸõÂÖ */
+typedef	uint_t			MODE;		/* ¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎÆ°ºî¥â¡Œ¥É */
+typedef	int_t			PRI;		/* Í¥ÀèÅÙ */
+typedef	TOPPERS_size	SIZE;		/* ¥á¥â¥êÎÎ°è€Î¥µ¥€¥º */
+
+typedef	int_t			TMO;		/* ¥¿¥€¥à¥¢¥Š¥È»ØÄê */
+typedef	uint_t			RELTIM;		/* ÁêÂÐ»þŽÖ */
+typedef	ulong_t			SYSTIM;		/* ¥·¥¹¥Æ¥à»þ¹ï */
+typedef	ulong_t			SYSUTM;		/* À­ÇœÉŸ²ÁÍÑ¥·¥¹¥Æ¥à»þ¹ï */
+
+typedef	TOPPERS_fp		FP;			/* ¥×¥í¥°¥é¥à€Îµ¯Æ°ÈÖÃÏ */
+
+typedef	int_t			ER_BOOL;	/* ¥š¥é¡Œ¥³¡Œ¥É€Þ€¿€Ï¿¿µ¶ÃÍ */
+typedef	int_t			ER_ID;		/* ¥š¥é¡Œ¥³¡Œ¥É€Þ€¿€ÏIDÈÖ¹æ */
+typedef	int_t			ER_UINT;	/* ¥š¥é¡Œ¥³¡Œ¥É€Þ€¿€ÏÉä¹æÌµ€·À°¿ô */
+
+typedef uintptr_t		MB_T;		/* ŽÉÍýÎÎ°è€ò³ÎÊÝ€¹€ë€¿€á€Î¥Ç¡Œ¥¿·¿ */
+
+typedef	uint32_t		ACPTN;		/* ¥¢¥¯¥»¥¹µö²Ä¥Ñ¥¿¡Œ¥ó */
+typedef	struct acvct {				/* ¥¢¥¯¥»¥¹µö²Ä¥Ù¥¯¥¿ */
+	ACPTN		acptn1;				/* ÄÌŸïÁàºî1€Î¥¢¥¯¥»¥¹µö²Ä¥Ñ¥¿¡Œ¥ó */
+	ACPTN		acptn2;				/* ÄÌŸïÁàºî2€Î¥¢¥¯¥»¥¹µö²Ä¥Ñ¥¿¡Œ¥ó */
+	ACPTN		acptn3;				/* ŽÉÍýÁàºî€Î¥¢¥¯¥»¥¹µö²Ä¥Ñ¥¿¡Œ¥ó */
+	ACPTN		acptn4;				/* »²ŸÈÁàºî€Î¥¢¥¯¥»¥¹µö²Ä¥Ñ¥¿¡Œ¥ó */
+} ACVCT;
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  À°¿ôÄê¿ô€òºî€ë¥Þ¥¯¥í
+ */
+#ifndef UINT_C
+#define UINT_C(val)		(val ## U)		/* uint_t·¿€ÎÄê¿ô€òºî€ë¥Þ¥¯¥í */
+#endif /* UINT_C */
+
+#ifndef ULONG_C
+#define ULONG_C(val)	(val ## UL)		/* ulong_t·¿€ÎÄê¿ô€òºî€ë¥Þ¥¯¥í */
+#endif /* ULONG_C */
+
+/*
+ *  °ìÈÌÄê¿ô
+ */
+#ifndef NULL
+#define NULL		0			/* Ìµžú¥Ý¥€¥ó¥¿ */
+#endif /* NULL */
+
+#ifndef true
+#define true		1			/* ¿¿ */
+#endif /* true */
+
+#ifndef false
+#define false		0			/* µ¶ */
+#endif /* false */
+
+#define E_OK		0			/* ÀµŸïœªÎ» */
+
+/*
+ *  ¥á¥€¥ó¥š¥é¡Œ¥³¡Œ¥É
+ */
+#define E_SYS		(-5)		/* ¥·¥¹¥Æ¥à¥š¥é¡Œ */
+#define E_NOSPT		(-9)		/* Ì€¥µ¥Ý¡Œ¥Èµ¡Çœ */
+#define E_RSFN		(-10)		/* ÍœÌóµ¡Çœ¥³¡Œ¥É */
+#define E_RSATR		(-11)		/* ÍœÌóÂ°À­ */
+#define E_PAR		(-17)		/* ¥Ñ¥é¥á¡Œ¥¿¥š¥é¡Œ */
+#define E_ID		(-18)		/* ÉÔÀµIDÈÖ¹æ */
+#define E_CTX		(-25)		/* ¥³¥ó¥Æ¥­¥¹¥È¥š¥é¡Œ */
+#define E_MACV		(-26)		/* ¥á¥â¥ê¥¢¥¯¥»¥¹°ãÈ¿ */
+#define E_OACV		(-27)		/* ¥ª¥Ö¥ž¥§¥¯¥È¥¢¥¯¥»¥¹°ãÈ¿ */
+#define E_ILUSE		(-28)		/* ¥µ¡Œ¥Ó¥¹¥³¡Œ¥ëÉÔÀµ»ÈÍÑ */
+#define E_NOMEM		(-33)		/* ¥á¥â¥êÉÔÂ­ */
+#define E_NOID		(-34)		/* IDÈÖ¹æÉÔÂ­ */
+#define E_NORES		(-35)		/* »ñž»ÉÔÂ­ */
+#define E_OBJ		(-41)		/* ¥ª¥Ö¥ž¥§¥¯¥ÈŸõÂÖ¥š¥é¡Œ */
+#define E_NOEXS		(-42)		/* ¥ª¥Ö¥ž¥§¥¯¥ÈÌ€ÀžÀ® */
+#define E_QOVR		(-43)		/* ¥­¥å¡Œ¥€¥ó¥°¥ª¡Œ¥Ð¡Œ¥Õ¥í¡Œ */
+#define E_RLWAI		(-49)		/* ÂÔ€ÁŸõÂÖ€Î¶¯À©²òœü */
+#define E_TMOUT		(-50)		/* ¥Ý¡Œ¥ê¥ó¥°ŒºÇÔ€Þ€¿€Ï¥¿¥€¥à¥¢¥Š¥È */
+#define E_DLT		(-51)		/* ÂÔ€Á¥ª¥Ö¥ž¥§¥¯¥È€Îºïœü */
+#define E_CLS		(-52)		/* ÂÔ€Á¥ª¥Ö¥ž¥§¥¯¥È€ÎŸõÂÖÊÑ²œ */
+#define E_WBLK		(-57)		/* ¥Î¥ó¥Ö¥í¥Ã¥­¥ó¥°ŒõÉÕ€± */
+#define E_BOVR		(-58)		/* ¥Ð¥Ã¥Õ¥¡¥ª¡Œ¥Ð¡Œ¥Õ¥í¡Œ */
+
+/*
+ *  ¥ª¥Ö¥ž¥§¥¯¥ÈÂ°À­
+ */
+#define TA_NULL		UINT_C(0)	/* ¥ª¥Ö¥ž¥§¥¯¥ÈÂ°À­€ò»ØÄê€·€Ê€€ */
+
+/*
+ *  ¥¿¥€¥à¥¢¥Š¥È»ØÄê
+ */
+#define TMO_POL		0			/* ¥Ý¡Œ¥ê¥ó¥° */
+#define TMO_FEVR	(-1)		/* ±Êµ×ÂÔ€Á */
+#define TMO_NBLK	(-2)		/* ¥Î¥ó¥Ö¥í¥Ã¥­¥ó¥° */
+
+/*
+ *  ¥¢¥¯¥»¥¹µö²Ä¥Ñ¥¿¡Œ¥ó
+ */
+#define TACP_KERNEL		(0U)	/* ¥«¡Œ¥Í¥ë¥É¥á¥€¥ó€À€±€Ë¥¢¥¯¥»¥¹€òµö²Ä */
+#define TACP_SHARED		(~0U)	/* €¹€Ù€Æ€Î¥É¥á¥€¥ó€«€é¥¢¥¯¥»¥¹€òµö²Ä */
+
+/*
+ *  ·¿€ËŽØ€¹€ëŸðÊó€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ *
+ *  °Ê²Œ€ÎALIGN_TYPE€ÎÄêµÁ€Ï¡€¥¢¥é¥€¥ó¥á¥ó¥È€ÎÃ±°Ì€¬2€Î¶ÒŸè€Ç€¢€ë€³€È€ò
+ *  ²ŸÄê€·€Æ€€€ë¡¥
+ */
+#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				/* ¥¢¥é¥€¥ó¥á¥ó¥È€Î¥Á¥§¥Ã¥¯ */
+#define ALIGN_TYPE(addr, type) \
+						((((uintptr_t)(addr)) & (alignof(type) - 1)) == 0U)
+#endif /* ALIGN_TYPE */
+
+/*
+ *  assert¥Þ¥¯¥í
+ */
+#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
+
+/*
+ *  ¥š¥é¡Œ¥³¡Œ¥ÉÀžÀ®¡ŠÊ¬²ò¥Þ¥¯¥í
+ *
+ *  °Ê²Œ€Î¥Þ¥¯¥íÄêµÁ€Ï¡€Éä¹æÉÕ€­À°¿ô€¬2€ÎÊä¿ô€ÇÉœžœ€µ€ì€Æ€ª€ê¡€±Š¥·¥Õ¥È
+ *  ±é»»»Ò¡Ê>>¡Ë€¬»»œÑ¥·¥Õ¥È€µ€ì€ë€³€È€ò²ŸÄê€·€Æ€€€ë¡¥€œ€Š€Ç€Ê€€³«È¯ŽÄ
+ *  ¶­€Ç€Ï¡€target_stddef.h€Ç€³€ì€é€ÎÄêµÁ€òŸåœñ€­€·€Ê€±€ì€Ð€Ê€é€Ê€€¡¥
+ *
+ *  MERCD¥Þ¥¯¥í€ÎÄêµÁ€Ï¡€¥á¥€¥ó¥š¥é¡Œ¥³¡Œ¥É€¬Éé€Ç€¢€ë€³€È€ò²ŸÄê€·€Æ€€€ë¡¥
+ *  €œ€Š€Ç€Ê€€Ÿì¹ç¡€2€Ä€ÎÄêµÁ€¬°ìÃ×€·€Ê€¯€Ê€ë¡¥
+ */
+#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 */
+
+/*
+ *  ¥¢¥¯¥»¥¹µö²Ä¥Ñ¥¿¡Œ¥óÀžÀ®¥Þ¥¯¥í
+ */
+#define TACP(domid)		(1U << ((domid) - 1))	/* domid€À€±€Ë¥¢¥¯¥»¥¹€òµö²Ä */
+
+/*
+ *  ÁêÂÐ»þŽÖ¡ÊRELTIM¡Ë€Ë»ØÄê€Ç€­€ëºÇÂçÃÍ
+ */
+#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: /include/t_stdlib.h
===================================================================
--- /include/t_stdlib.h	(revision 7)
+++ /include/t_stdlib.h	(revision 7)
@@ -0,0 +1,74 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2004-2006 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		ŽðËÜÅª€Ê¥é¥€¥Ö¥é¥êŽØ¿ô
+ */
+
+#ifndef TOPPERS_T_STDLIB_H
+#define TOPPERS_T_STDLIB_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *  ¥š¥é¡Œ¥á¥Ã¥»¡Œ¥žÊž»úÎó€òÊÖ€¹ŽØ¿ô
+ *
+ *  ercd€Ç»ØÄê€µ€ì€¿¥š¥é¡Œ¥³¡Œ¥É€Î¥á¥€¥ó¥š¥é¡Œ¥³¡Œ¥É€ÎÌŸŸÎ¡ÊE_PAR¡€
+ *  E_OBJ€Ê€É¡Ë€ÎÊž»úÎó€òÊÖ€¹ŽØ¿ô¡¥
+ */
+extern const char	*itron_strerror(ER ercd) throw();
+
+/*
+ *  ¥š¥é¡Œ¥á¥Ã¥»¡Œ¥ž€Î¥í¥°œÐÎÏ
+ *
+ *  ¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€¬¥š¥é¡Œ€òÊÖ€·€¿Ÿì¹ç€Ë¡€€œ€Î¥Õ¥¡¥€¥ëÌŸ¡€¹ÔÈÖ¹æ¡€¥á¥€
+ *  ¥ó¥š¥é¡Œ¥³¡Œ¥ÉÅù€òÉœŒš€¹€ë€¿€á€ÎŽØ¿ô¡¥
+ */
+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: /include/t_syslog.h
===================================================================
--- /include/t_syslog.h	(revision 7)
+++ /include/t_syslog.h	(revision 7)
@@ -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) 2004-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$
+ */
+
+/*
+ *		¥·¥¹¥Æ¥à¥í¥°œÐÎÏ€ò¹Ô€Š€¿€á€ÎÄêµÁ
+ *
+ *  ¥·¥¹¥Æ¥à¥í¥°¥µ¡Œ¥Ó¥¹€Ï¡€¥·¥¹¥Æ¥à€Î¥í¥°ŸðÊó€òœÐÎÏ€¹€ë€¿€á€Î¥µ¡Œ¥Ó¥¹
+ *  €Ç€¢€ë¡¥¥«¡Œ¥Í¥ë€«€é€Î¥í¥°ŸðÊó€ÎœÐÎÏ€Ë€âÍÑ€€€ë€¿€á¡€ÆâÉô€ÇÂÔ€ÁŸõÂÖ
+ *  €Ë€Ï€€€ë€³€È€Ï€Ê€€¡¥
+ *
+ *  ¥í¥°ŸðÊó€Ï¡€¥«¡Œ¥Í¥ëÆâ€Î¥í¥°¥Ð¥Ã¥Õ¥¡€Ëœñ€­¹þ€à€«¡€Äã¥ì¥Ù¥ë€ÎÊž»úœÐ
+ *  ÎÏŽØ¿ô€òÍÑ€€€ÆœÐÎÏ€¹€ë¡¥€É€Á€é€ò»È€Š€«€Ï¡€³ÈÄ¥¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÇÀÚ€ê
+ *  Ž¹€š€ë€³€È€¬€Ç€­€ë¡¥
+ *
+ *  ¥í¥°¥Ð¥Ã¥Õ¥¡ÎÎ°è€¬¥ª¡Œ¥Ð¥Õ¥í¡Œ€·€¿Ÿì¹ç€Ë€Ï¡€žÅ€€¥í¥°ŸðÊó€òŸÃ€·€ÆŸå
+ *  œñ€­€¹€ë¡¥
+ *
+ *  ¥¢¥»¥ó¥Ö¥êžÀžì€Î¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€«€é€³€Î¥Õ¥¡¥€¥ë€ò¥€¥ó¥¯¥ë¡Œ¥É€¹€ë»þ
+ *  €Ï¡€TOPPERS_MACRO_ONLY€òÄêµÁ€·€Æ€ª€¯€³€È€Ç¡€¥Þ¥¯¥íÄêµÁ°Ê³°€Îµ­œÒ€ò
+ *  œü€¯€³€È€¬€Ç€­€ë¡¥
+ *
+ *  €³€Î¥Õ¥¡¥€¥ë€ò¥€¥ó¥¯¥ë¡Œ¥É€¹€ëÁ°€Ë¡€t_stddef.h€ò¥€¥ó¥¯¥ë¡Œ¥É€·€Æ€ª
+ *  €¯€³€È€¬É¬Í×€Ç€¢€ë¡¥
+ */
+
+#ifndef TOPPERS_T_SYSLOG_H
+#define TOPPERS_T_SYSLOG_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *  ¥í¥°ŸðÊó€ÎŒïÊÌ€ÎÄêµÁ
+ */
+#define LOG_TYPE_COMMENT	UINT_C(0x01)	/* ¥³¥á¥ó¥È */
+#define LOG_TYPE_ASSERT		UINT_C(0x02)	/* ¥¢¥µ¡Œ¥·¥ç¥ó€ÎŒºÇÔ */
+
+#define LOG_TYPE_INH		UINT_C(0x11)	/* ³ä¹þ€ß¥Ï¥ó¥É¥é */
+#define LOG_TYPE_ISR		UINT_C(0x12)	/* ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó */
+#define LOG_TYPE_CYC		UINT_C(0x13)	/* ŒþŽü¥Ï¥ó¥É¥é */
+#define LOG_TYPE_ALM		UINT_C(0x14)	/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é */
+#define LOG_TYPE_OVR		UINT_C(0x15)	/* ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é */
+#define LOG_TYPE_EXC		UINT_C(0x16)	/* CPUÎã³°¥Ï¥ó¥É¥é */
+#define LOG_TYPE_TEX		UINT_C(0x17)	/* ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó */
+#define LOG_TYPE_TSKSTAT	UINT_C(0x18)	/* ¥¿¥¹¥¯ŸõÂÖÊÑ²œ */
+#define LOG_TYPE_DSP		UINT_C(0x19)	/* ¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã */
+#define LOG_TYPE_SVC		UINT_C(0x1a)	/* ¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë */
+
+#define LOG_ENTER			UINT_C(0x00)	/* Æþžý¡¿³«»Ï */
+#define LOG_LEAVE			UINT_C(0x80)	/* œÐžý¡¿œªÎ» */
+
+/*
+ *  ¥í¥°ŸðÊó€ÎœÅÍ×ÅÙ€ÎÄêµÁ
+ */
+#define LOG_EMERG			UINT_C(0)		/* ¥·¥ã¥Ã¥È¥À¥Š¥ó€ËÃÍ€¹€ë¥š¥é¡Œ */
+#define LOG_ALERT			UINT_C(1)
+#define LOG_CRIT			UINT_C(2)
+#define LOG_ERROR			UINT_C(3)		/* ¥·¥¹¥Æ¥à¥š¥é¡Œ */
+#define LOG_WARNING			UINT_C(4)		/* ·Ù¹ð¥á¥Ã¥»¡Œ¥ž */
+#define LOG_NOTICE			UINT_C(5)
+#define LOG_INFO			UINT_C(6)
+#define LOG_DEBUG			UINT_C(7)		/* ¥Ç¥Ð¥Ã¥°ÍÑ¥á¥Ã¥»¡Œ¥ž */
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  ¥í¥°ŸðÊó€Î¥Ç¡Œ¥¿¹œÂ€
+ */
+
+#define TMAX_LOGINFO	6
+
+typedef struct {
+	uint_t		logtype;				/* ¥í¥°ŸðÊó€ÎŒïÊÌ */
+	SYSTIM		logtim;					/* ¥í¥°»þ¹ï */
+	intptr_t	loginfo[TMAX_LOGINFO];	/* €œ€ÎÂŸ€Î¥í¥°ŸðÊó */
+} SYSLOG;
+
+/*
+ *  ¥í¥°ŸðÊó€ÎœÅÍ×ÅÙ€Î¥Ó¥Ã¥È¥Þ¥Ã¥×€òºî€ë€¿€á€Î¥Þ¥¯¥í
+ */
+#define LOG_MASK(prio)		(1U << (prio))
+#define LOG_UPTO(prio)		((1U << ((prio) + 1)) - 1)
+
+/*
+ *  ¥Ñ¥±¥Ã¥È·ÁŒ°€ÎÄêµÁ
+ */
+typedef struct t_syslog_rlog {
+	uint_t	count;		/* ¥í¥°¥Ð¥Ã¥Õ¥¡Ãæ€Î¥í¥°€Î¿ô */
+	uint_t	lost;		/* Œº€ï€ì€¿¥í¥°€Î¿ô */
+	uint_t	logmask;	/* ¥í¥°¥Ð¥Ã¥Õ¥¡€Ëµ­Ï¿€¹€Ù€­œÅÍ×ÅÙ */
+	uint_t	lowmask;	/* Äã¥ì¥Ù¥ëœÐÎÏ€¹€Ù€­œÅÍ×ÅÙ */
+} T_SYSLOG_RLOG;
+
+/*
+ *  ¥í¥°ŸðÊó€òœÐÎÏ€¹€ë€¿€á€Î¥é¥€¥Ö¥é¥êŽØ¿ô
+ */
+
+#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	logbuf;
+
+	logbuf.logtype = type;
+	(void) syslog_wri_log(prio, &logbuf);
+}
+
+Inline void
+_syslog_1(uint_t prio, uint_t type, intptr_t arg1)
+{
+	SYSLOG	logbuf;
+
+	logbuf.logtype = type;
+	logbuf.loginfo[0] = arg1;
+	(void) syslog_wri_log(prio, &logbuf);
+}
+
+Inline void
+_syslog_2(uint_t prio, uint_t type, intptr_t arg1, intptr_t arg2)
+{
+	SYSLOG	logbuf;
+
+	logbuf.logtype = type;
+	logbuf.loginfo[0] = arg1;
+	logbuf.loginfo[1] = arg2;
+	(void) syslog_wri_log(prio, &logbuf);
+}
+
+Inline void
+_syslog_3(uint_t prio, uint_t type, intptr_t arg1, intptr_t arg2,
+														intptr_t arg3)
+{
+	SYSLOG	logbuf;
+
+	logbuf.logtype = type;
+	logbuf.loginfo[0] = arg1;
+	logbuf.loginfo[1] = arg2;
+	logbuf.loginfo[2] = arg3;
+	(void) syslog_wri_log(prio, &logbuf);
+}
+
+Inline void
+_syslog_4(uint_t prio, uint_t type, intptr_t arg1, intptr_t arg2,
+										intptr_t arg3, intptr_t arg4)
+{
+	SYSLOG	logbuf;
+
+	logbuf.logtype = type;
+	logbuf.loginfo[0] = arg1;
+	logbuf.loginfo[1] = arg2;
+	logbuf.loginfo[2] = arg3;
+	logbuf.loginfo[3] = arg4;
+	(void) syslog_wri_log(prio, &logbuf);
+}
+
+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	logbuf;
+
+	logbuf.logtype = type;
+	logbuf.loginfo[0] = arg1;
+	logbuf.loginfo[1] = arg2;
+	logbuf.loginfo[2] = arg3;
+	logbuf.loginfo[3] = arg4;
+	logbuf.loginfo[4] = arg5;
+	(void) syslog_wri_log(prio, &logbuf);
+}
+
+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	logbuf;
+
+	logbuf.logtype = type;
+	logbuf.loginfo[0] = arg1;
+	logbuf.loginfo[1] = arg2;
+	logbuf.loginfo[2] = arg3;
+	logbuf.loginfo[3] = arg4;
+	logbuf.loginfo[4] = arg5;
+	logbuf.loginfo[5] = arg6;
+	(void) syslog_wri_log(prio, &logbuf);
+}
+
+/*
+ *  ¥í¥°ŸðÊó¡Ê¥³¥á¥ó¥È¡Ë€òœÐÎÏ€¹€ë€¿€á€Î¥é¥€¥Ö¥é¥êŽØ¿ô¡Êvasyslog.c¡Ë
+ */
+extern void	syslog(uint_t prio, const char *format, ...) throw();
+
+#else /* TOPPERS_OMIT_SYSLOG */
+
+/*
+ *  ¥·¥¹¥Æ¥à¥í¥°œÐÎÏ€òÍÞ»ß€¹€ëŸì¹ç
+ */
+
+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 */
+
+/*
+ *  ¥í¥°ŸðÊó¡Ê¥³¥á¥ó¥È¡Ë€òœÐÎÏ€¹€ë€¿€á€Î¥Þ¥¯¥í
+ *
+ *  format€ª€è€ÓžåÂ³€Î°ú¿ô€«€éºîÀ®€·€¿¥á¥Ã¥»¡Œ¥ž€ò¡€œÅÂçÅÙprio€Ç¥í¥°Ÿð
+ *  Êó€È€·€ÆœÐÎÏ€¹€ë€¿€á€Î¥Þ¥¯¥í¡¥arg1¡Áargn€Ïintptr_t·¿€Ë¥­¥ã¥¹¥È€¹€ë
+ *  €¿€á¡€intptr_t·¿€Ë·¿ÊÑŽ¹€Ç€­€ëÇ€°Õ€Î·¿€Ç€è€€¡¥
+ */
+
+#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))
+
+/*
+ *  ¥í¥°ŸðÊó¡Ê¥¢¥µ¡Œ¥·¥ç¥ó€ÎŒºÇÔ¡Ë€òœÐÎÏ€¹€ë€¿€á€Î¥Þ¥¯¥í
+ */
+#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: /include/test_lib.h
===================================================================
--- /include/test_lib.h	(revision 7)
+++ /include/test_lib.h	(revision 7)
@@ -0,0 +1,150 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2005-2013 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$
+ */
+
+/* 
+ *		¥Æ¥¹¥È¥×¥í¥°¥é¥àÍÑ¥é¥€¥Ö¥é¥ê
+ */
+
+#ifndef TOPPERS_TEST_LIB_H
+#define TOPPERS_TEST_LIB_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <t_stddef.h>
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎÄêµÁ
+ */
+#include "target_test.h"
+
+/*
+ *	Œ«žÊ¿ÇÃÇŽØ¿ô€Î·¿
+ */
+typedef ER (*BIT_FUNC)(void);
+
+/*
+ *	Œ«žÊ¿ÇÃÇŽØ¿ô€ÎÀßÄê
+ */
+extern void	set_bit_func(BIT_FUNC bit_func);
+
+/*
+ *  ¥Æ¥¹¥È¥×¥í¥°¥é¥à€Î³«»Ï
+ */
+extern void	test_start(char *progname);
+
+/*
+ *  ¥·¥¹¥Æ¥à¥í¥°€ÎœÐÎÏœèÍý
+ */
+extern void	syslog_flush(void);
+
+/*
+ *	¥Æ¥¹¥È¥×¥í¥°¥é¥à€ÎœªÎ»
+ */
+extern void	test_finish(void);
+
+/*
+ *	¥Á¥§¥Ã¥¯¥Ý¥€¥ó¥È
+ */
+extern void	check_point(uint_t count);
+
+/*
+ *	Ž°Î»¥Á¥§¥Ã¥¯¥Ý¥€¥ó¥È
+ */
+extern void	check_finish(uint_t count);
+
+/*
+ *	Ÿò·ï¥Á¥§¥Ã¥¯
+ */
+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))
+
+/*
+ *	¥š¥é¡Œ¥³¡Œ¥É¥Á¥§¥Ã¥¯
+ */
+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))
+
+/*
+ *	¥·¥¹¥Æ¥àŸõÂÖ€Î¥Á¥§¥Ã¥¯
+ */
+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€Î¥Á¥§¥Ã¥¯€Ï¡€CPU¥í¥Ã¥¯²òœüŸõÂÖ€ÎŸì¹ç€Ë€Î€ß¹Ô€Š¡¥
+		 */
+		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);
+}
+
+/*
+ *	¥·¥¹¥Æ¥àŸõÂÖ€Î¥Á¥§¥Ã¥¯¡ÊÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ */
+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);
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* TOPPERS_TEST_LIB_H */
Index: /kernel/Makefile.kernel
===================================================================
--- /kernel/Makefile.kernel	(revision 7)
+++ /kernel/Makefile.kernel	(revision 7)
@@ -0,0 +1,136 @@
+#
+#  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
+# 
+#  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+#  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+#  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+#  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+#      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+#      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+#  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+#      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+#      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+#      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+#  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+#      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+#      €È¡¥
+#    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+#        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+#    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+#        Êó¹ð€¹€ë€³€È¡¥
+#  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+#      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+#      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+#      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+#      ÌÈÀÕ€¹€ë€³€È¡¥
+# 
+#  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+#  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+#  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+#  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+#  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+# 
+#  @(#) $Id$
+# 
+
+#
+#		¥«¡Œ¥Í¥ë€Î¥Õ¥¡¥€¥ë¹œÀ®€ÎÄêµÁ
+#
+
+#
+#  1€Ä€Î¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€«€éÊ£¿ô€Î¥ª¥Ö¥ž¥§¥¯¥È¥Õ¥¡¥€¥ë€òÀžÀ®€¹€ë€è€Š€Ëºî
+#  À®€µ€ì€¿¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€Î¥ê¥¹¥È
+#
+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
+
+#
+#  ³Æ¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€«€éÀžÀ®€µ€ì€ë¥ª¥Ö¥ž¥§¥¯¥È¥Õ¥¡¥€¥ë€Î¥ê¥¹¥È
+#
+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
+
+#
+#  ÀžÀ®€µ€ì€ë¥ª¥Ö¥ž¥§¥¯¥È¥Õ¥¡¥€¥ë€Î°ÍÂžŽØ·ž€ÎÄêµÁ
+#
+$(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: /kernel/alarm.c
===================================================================
--- /kernel/alarm.c	(revision 7)
+++ /kernel/alarm.c	(revision 7)
@@ -0,0 +1,332 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éµ¡Çœ
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "alarm.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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 */
+
+/*
+ *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€Î¿ô
+ */
+#define tnum_alm	((uint_t)(tmax_almid - TMIN_ALMID + 1))
+
+/*
+ *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éID€«€é¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éŽÉÍý¥Ö¥í¥Ã¥¯€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#define INDEX_ALM(almid)	((uint_t)((almid) - TMIN_ALMID))
+#define get_almcb(almid)	(&(almcb_table[INDEX_ALM(almid)]))
+
+/*
+ *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éµ¡Çœ€ÎœéŽü²œ
+ */
+#ifdef TOPPERS_almini
+
+void
+initialize_alarm(void)
+{
+	uint_t	i;
+	ALMCB	*p_almcb;
+
+	for (i = 0; i < tnum_alm; i++) {
+		p_almcb = &(almcb_table[i]);
+		p_almcb->p_alminib = &(alminib_table[i]);
+		p_almcb->almsta = false;
+	}
+}
+
+#endif /* TOPPERS_almini */
+
+/*
+ *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ÎÆ°ºî³«»Ï
+ */
+#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 */
+
+/*
+ *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ÎÆ°ºî³«»Ï¡ÊÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ */
+#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 */
+
+/*
+ *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ÎÆ°ºîÄä»ß
+ */
+#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 */
+
+/*
+ *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ÎÆ°ºîÄä»ß¡ÊÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ */
+#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 */
+
+/*
+ *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ÎŸõÂÖ»²ŸÈ
+ */
+#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 */
+
+/*
+ *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éµ¯Æ°¥ë¡Œ¥Á¥ó
+ */
+#ifdef TOPPERS_almcal
+
+void
+call_almhdr(ALMCB *p_almcb)
+{
+	PRI		saved_ipm;
+
+	/*
+	 *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€òÄä»ßŸõÂÖ€Ë€¹€ë¡¥
+	 */
+	p_almcb->almsta = false;
+
+	/*
+	 *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ò¡€CPU¥í¥Ã¥¯²òœüŸõÂÖ€ÇžÆ€ÓœÐ€¹¡¥
+	 */
+	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: /kernel/alarm.h
===================================================================
--- /kernel/alarm.h	(revision 7)
+++ /kernel/alarm.h	(revision 7)
@@ -0,0 +1,95 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éµ¡Çœ
+ */
+
+#ifndef TOPPERS_ALARM_H
+#define TOPPERS_ALARM_H
+
+#include "time_event.h"
+
+/*
+ *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯
+ */
+typedef struct alarm_handler_initialization_block {
+	ATR			almatr;			/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éÂ°À­ */
+	intptr_t	exinf;			/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€Î³ÈÄ¥ŸðÊó */
+	ALMHDR		almhdr;			/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€Îµ¯Æ°ÈÖÃÏ */
+} ALMINIB;
+
+/*
+ *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éŽÉÍý¥Ö¥í¥Ã¥¯
+ */
+typedef struct alarm_handler_control_block {
+	const ALMINIB *p_alminib;	/* œéŽü²œ¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿ */
+	bool_t		almsta;			/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ÎÆ°ºîŸõÂÖ */
+	TMEVTB		tmevtb;			/* ¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯ */
+} ALMCB;
+
+/*
+ *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éID€ÎºÇÂçÃÍ¡Êkernel_cfg.c¡Ë
+ */
+extern const ID	tmax_almid;
+
+/*
+ *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern const ALMINIB	alminib_table[];
+
+/*
+ *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éŽÉÍý¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern ALMCB	almcb_table[];
+
+/*
+ *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éµ¡Çœ€ÎœéŽü²œ
+ */
+extern void	initialize_alarm(void);
+
+/*
+ *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éµ¯Æ°¥ë¡Œ¥Á¥ó
+ */
+extern void	call_almhdr(ALMCB *p_almcb);
+
+#endif /* TOPPERS_ALARM_H */
Index: /kernel/allfunc.h
===================================================================
--- /kernel/allfunc.h	(revision 7)
+++ /kernel/allfunc.h	(revision 7)
@@ -0,0 +1,241 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		€¹€Ù€Æ€ÎŽØ¿ô€ò¥³¥ó¥Ñ¥€¥ë€¹€ë€¿€á€ÎÄêµÁ
+ */
+
+#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: /kernel/check.h
===================================================================
--- /kernel/check.h	(revision 7)
+++ /kernel/check.h	(revision 7)
@@ -0,0 +1,284 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥š¥é¡Œ¥Á¥§¥Ã¥¯ÍÑ¥Þ¥¯¥í
+ */
+
+#ifndef TOPPERS_CHECK_H
+#define TOPPERS_CHECK_H
+
+/*
+ *  Í¥ÀèÅÙ€ÎÈÏ°Ï€ÎÈœÄê
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯Í¥ÀèÅÙ€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
+ */
+#define CHECK_TPRI(tpri) do {								\
+	if (!VALID_TPRI(tpri)) {								\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_TPRI_INI(tpri) do {							\
+	if (!(VALID_TPRI(tpri) || (tpri) == TPRI_INI)) {		\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_TPRI_SELF(tpri) do {							\
+	if (!(VALID_TPRI(tpri) || (tpri) == TPRI_SELF)) {		\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  ¥¿¥€¥à¥¢¥Š¥È»ØÄêÃÍ€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
+ */
+#define CHECK_TMOUT(tmout) do {								\
+	if (!(TMO_FEVR <= (tmout))) {							\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
+ */
+#define CHECK_INTPRI_CHGIPM(intpri) do {					\
+	if (!VALID_INTPRI_CHGIPM(intpri)) {						\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  ³ä¹þ€ßÈÖ¹æ€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
+ */
+#define CHECK_INTNO_DISINT(intno) do {						\
+	if (!VALID_INTNO_DISINT(intno)) {						\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  €œ€ÎÂŸ€Î¥Ñ¥é¥á¡Œ¥¿¥š¥é¡Œ€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
+ */
+#define CHECK_PAR(exp) do {									\
+	if (!(exp)) {											\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  ¥ª¥Ö¥ž¥§¥¯¥ÈID€ÎÈÏ°Ï€ÎÈœÄê
+ */
+#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)
+
+/*
+ *  ¥ª¥Ö¥ž¥§¥¯¥ÈID€Î¥Á¥§¥Ã¥¯¡ÊE_ID¡Ë
+ */
+#define CHECK_TSKID(tskid) do {								\
+	if (!VALID_TSKID(tskid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_TSKID_SELF(tskid) do {						\
+	if (!(VALID_TSKID(tskid) || (tskid) == TSK_SELF)) {		\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_SEMID(semid) do {								\
+	if (!VALID_SEMID(semid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_FLGID(flgid) do {								\
+	if (!VALID_FLGID(flgid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_DTQID(dtqid) do {								\
+	if (!VALID_DTQID(dtqid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_PDQID(pdqid) do {								\
+	if (!VALID_PDQID(pdqid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_MBXID(mbxid) do {								\
+	if (!VALID_MBXID(mbxid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_MPFID(mpfid) do {								\
+	if (!VALID_MPFID(mpfid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_CYCID(cycid) do {								\
+	if (!VALID_CYCID(cycid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_ALMID(almid) do {								\
+	if (!VALID_ALMID(almid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  žÆœÐ€·¥³¥ó¥Æ¥­¥¹¥È€Î¥Á¥§¥Ã¥¯¡ÊE_CTX¡Ë
+ */
+#define CHECK_TSKCTX() do {									\
+	if (sense_context()) {									\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_INTCTX() do {									\
+	if (!sense_context()) {									\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  žÆœÐ€·¥³¥ó¥Æ¥­¥¹¥È€ÈCPU¥í¥Ã¥¯ŸõÂÖ€Î¥Á¥§¥Ã¥¯¡ÊE_CTX¡Ë
+ */
+#define CHECK_TSKCTX_UNL() do {								\
+	if (sense_context() || t_sense_lock()) {				\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#define CHECK_INTCTX_UNL() do {								\
+	if (!sense_context() || i_sense_lock()) {				\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥ÁÊÝÎ±ŸõÂÖ€Ç€Ê€€€«€Î¥Á¥§¥Ã¥¯¡ÊE_CTX¡Ë
+ */
+#define CHECK_DISPATCH() do {								\
+	if (sense_context() || t_sense_lock() || !dspflg) {		\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  €œ€ÎÂŸ€Î¥³¥ó¥Æ¥­¥¹¥È¥š¥é¡Œ€Î¥Á¥§¥Ã¥¯¡ÊE_CTX¡Ë
+ */
+#define CHECK_CTX(exp) do {									\
+	if (!(exp)) {											\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  Œ«¥¿¥¹¥¯€ò»ØÄê€·€Æ€€€Ê€€€«€Î¥Á¥§¥Ã¥¯¡ÊE_ILUSE¡Ë
+ */
+#define CHECK_NONSELF(p_tcb) do {							\
+	if ((p_tcb) == p_runtsk) {								\
+		ercd = E_ILUSE;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+/*
+ *  €œ€ÎÂŸ€ÎÉÔÀµ»ÈÍÑ¥š¥é¡Œ€Î¥Á¥§¥Ã¥¯¡ÊE_ILUSE¡Ë
+ */
+#define CHECK_ILUSE(exp) do {								\
+	if (!(exp)) {											\
+		ercd = E_ILUSE;										\
+		goto error_exit;									\
+	}														\
+} while (false)
+
+#endif /* TOPPERS_CHECK_H */
Index: /kernel/cyclic.c
===================================================================
--- /kernel/cyclic.c	(revision 7)
+++ /kernel/cyclic.c	(revision 7)
@@ -0,0 +1,268 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		ŒþŽü¥Ï¥ó¥É¥éµ¡Çœ
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "cyclic.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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 */
+
+/*
+ *  ŒþŽü¥Ï¥ó¥É¥é€Î¿ô
+ */
+#define tnum_cyc	((uint_t)(tmax_cycid - TMIN_CYCID + 1))
+
+/*
+ *  ŒþŽü¥Ï¥ó¥É¥éID€«€éŒþŽü¥Ï¥ó¥É¥éŽÉÍý¥Ö¥í¥Ã¥¯€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#define INDEX_CYC(cycid)	((uint_t)((cycid) - TMIN_CYCID))
+#define get_cyccb(cycid)	(&(cyccb_table[INDEX_CYC(cycid)]))
+
+/*
+ *  ŒþŽü¥Ï¥ó¥É¥éµ¯Æ°€Î€¿€á€Î¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯€ÎÅÐÏ¿
+ */
+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
+
+void
+initialize_cyclic(void)
+{
+	uint_t	i;
+	CYCCB	*p_cyccb;
+
+	for (i = 0; i < tnum_cyc; i++) {
+		p_cyccb = &(cyccb_table[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 */
+
+/*
+ *  ŒþŽü¥Ï¥ó¥É¥é€ÎÆ°ºî³«»Ï
+ */
+#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 */
+
+/*
+ *  ŒþŽü¥Ï¥ó¥É¥é€ÎÆ°ºîÄä»ß
+ */
+#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 */
+
+/*
+ *  ŒþŽü¥Ï¥ó¥É¥é€ÎŸõÂÖ»²ŸÈ
+ */
+#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 */
+
+/*
+ *  ŒþŽü¥Ï¥ó¥É¥éµ¯Æ°¥ë¡Œ¥Á¥ó
+ */
+#ifdef TOPPERS_cyccal
+
+void
+call_cychdr(CYCCB *p_cyccb)
+{
+	PRI		saved_ipm;
+
+	/*
+	 *  Œ¡²ó€Îµ¯Æ°€Î€¿€á€Î¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯€òÅÐÏ¿€¹€ë¡¥
+	 *
+	 *  Æ±€ž¥¿¥€¥à¥Æ¥£¥Ã¥¯€ÇŒþŽü¥Ï¥ó¥É¥é€òºÆÅÙµ¯Æ°€¹€Ù€­Ÿì¹ç€Ë€Ï¡€€³€Î
+	 *  ŽØ¿ô€«€ésignal_time€ËÌá€Ã€¿žå€Ë¡€ºÆÅÙ€³€ÎŽØ¿ô€¬žÆ€Ð€ì€ë€³€È€Ë€Ê
+	 *  €ë¡¥
+	 */
+	tmevtb_enqueue_cyc(p_cyccb, p_cyccb->evttim + p_cyccb->p_cycinib->cyctim);
+
+	/*
+	 *  ŒþŽü¥Ï¥ó¥É¥é€ò¡€CPU¥í¥Ã¥¯²òœüŸõÂÖ€ÇžÆ€ÓœÐ€¹¡¥
+	 */
+	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: /kernel/cyclic.h
===================================================================
--- /kernel/cyclic.h	(revision 7)
+++ /kernel/cyclic.h	(revision 7)
@@ -0,0 +1,98 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		ŒþŽü¥Ï¥ó¥É¥éµ¡Çœ
+ */
+
+#ifndef TOPPERS_CYCLIC_H
+#define TOPPERS_CYCLIC_H
+
+#include "time_event.h"
+
+/*
+ *  ŒþŽü¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯
+ */
+typedef struct cyclic_handler_initialization_block {
+	ATR			cycatr;			/* ŒþŽü¥Ï¥ó¥É¥éÂ°À­ */
+	intptr_t	exinf;			/* ŒþŽü¥Ï¥ó¥É¥é€Î³ÈÄ¥ŸðÊó */
+	CYCHDR		cychdr;			/* ŒþŽü¥Ï¥ó¥É¥é€Îµ¯Æ°ÈÖÃÏ */
+	RELTIM		cyctim;			/* ŒþŽü¥Ï¥ó¥É¥é€Îµ¯Æ°ŒþŽü */
+	RELTIM		cycphs;			/* ŒþŽü¥Ï¥ó¥É¥é€Îµ¯Æ°°ÌÁê */
+} CYCINIB;
+
+/*
+ *  ŒþŽü¥Ï¥ó¥É¥éŽÉÍý¥Ö¥í¥Ã¥¯
+ */
+typedef struct cyclic_handler_control_block {
+	const CYCINIB *p_cycinib;	/* œéŽü²œ¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿ */
+	bool_t		cycsta;			/* ŒþŽü¥Ï¥ó¥É¥é€ÎÆ°ºîŸõÂÖ */
+	EVTTIM		evttim;			/* Œ¡€ËŒþŽü¥Ï¥ó¥É¥é€òµ¯Æ°€¹€ë»þ¹ï */
+	TMEVTB		tmevtb;			/* ¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯ */
+} CYCCB;
+
+/*
+ *  ŒþŽü¥Ï¥ó¥É¥éID€ÎºÇÂçÃÍ¡Êkernel_cfg.c¡Ë
+ */
+extern const ID	tmax_cycid;
+
+/*
+ *  ŒþŽü¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern const CYCINIB	cycinib_table[];
+
+/*
+ *  ŒþŽü¥Ï¥ó¥É¥éŽÉÍý¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern CYCCB	cyccb_table[];
+
+/*
+ *  ŒþŽü¥Ï¥ó¥É¥éµ¡Çœ€ÎœéŽü²œ
+ */
+extern void	initialize_cyclic(void);
+
+/*
+ *  ŒþŽü¥Ï¥ó¥É¥éµ¯Æ°¥ë¡Œ¥Á¥ó
+ */
+extern void	call_cychdr(CYCCB *p_cyccb);
+
+#endif /* TOPPERS_CYCLIC_H */
Index: /kernel/dataqueue.c
===================================================================
--- /kernel/dataqueue.c	(revision 7)
+++ /kernel/dataqueue.c	(revision 7)
@@ -0,0 +1,747 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2013 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥Ç¡Œ¥¿¥­¥å¡Œµ¡Çœ
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+#include "dataqueue.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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 */
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œ€Î¿ô
+ */
+#define tnum_dtq	((uint_t)(tmax_dtqid - TMIN_DTQID + 1))
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡ŒID€«€é¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍý¥Ö¥í¥Ã¥¯€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#define INDEX_DTQ(dtqid)	((uint_t)((dtqid) - TMIN_DTQID))
+#define get_dtqcb(dtqid)	(&(dtqcb_table[INDEX_DTQ(dtqid)]))
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œµ¡Çœ€ÎœéŽü²œ
+ */
+#ifdef TOPPERS_dtqini
+
+void
+initialize_dataqueue(void)
+{
+	uint_t	i;
+	DTQCB	*p_dtqcb;
+
+	for (i = 0; i < tnum_dtq; i++) {
+		p_dtqcb = &(dtqcb_table[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 */
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€Ø€Î¥Ç¡Œ¥¿€Î³ÊÇŒ
+ */
+#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 */
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€Ø€Î¥Ç¡Œ¥¿€Î¶¯À©³ÊÇŒ
+ */
+#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 */
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€«€é€Î¥Ç¡Œ¥¿€ÎŒèœÐ€·
+ */
+#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 */
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€Î¥Ç¡Œ¥¿Á÷¿®
+ */
+#ifdef TOPPERS_dtqsnd
+
+bool_t
+send_data(DTQCB *p_dtqcb, intptr_t data, bool_t *p_dspreq)
+{
+	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_dspreq = wait_complete(p_tcb);
+		return(true);
+	}
+	else if (p_dtqcb->count < p_dtqcb->p_dtqinib->dtqcnt) {
+		enqueue_data(p_dtqcb, data);
+		*p_dspreq = false;
+		return(true);
+	}
+	else {
+		return(false);
+	}
+}
+
+#endif /* TOPPERS_dtqsnd */
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€Î¥Ç¡Œ¥¿¶¯À©Á÷¿®
+ */
+#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 */
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€Î¥Ç¡Œ¥¿Œõ¿®
+ */
+#ifdef TOPPERS_dtqrcv
+
+bool_t
+receive_data(DTQCB *p_dtqcb, intptr_t *p_data, bool_t *p_dspreq)
+{
+	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_dspreq = wait_complete(p_tcb);
+		}
+		else {
+			*p_dspreq = 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_dspreq = wait_complete(p_tcb);
+		return(true);
+	}
+	else {
+		return(false);
+	}
+}
+
+#endif /* TOPPERS_dtqrcv */
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®
+ */
+#ifdef TOPPERS_snd_dtq
+
+ER
+snd_dtq(ID dtqid, intptr_t data)
+{
+	DTQCB	*p_dtqcb;
+	WINFO_DTQ winfo_dtq;
+	bool_t	dspreq;
+	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, &dspreq)) {
+		if (dspreq) {
+			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 */
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®¡Ê¥Ý¡Œ¥ê¥ó¥°¡Ë
+ */
+#ifdef TOPPERS_psnd_dtq
+
+ER
+psnd_dtq(ID dtqid, intptr_t data)
+{
+	DTQCB	*p_dtqcb;
+	bool_t	dspreq;
+	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, &dspreq)) {
+		if (dspreq) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_TMOUT;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_PSND_DTQ_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_psnd_dtq */
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®¡Ê¥Ý¡Œ¥ê¥ó¥°¡€Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ */
+#ifdef TOPPERS_ipsnd_dtq
+
+ER
+ipsnd_dtq(ID dtqid, intptr_t data)
+{
+	DTQCB	*p_dtqcb;
+	bool_t	dspreq;
+	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, &dspreq)) {
+		if (dspreq) {
+			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 */
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®¡Ê¥¿¥€¥à¥¢¥Š¥È€¢€ê¡Ë
+ */
+#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	dspreq;
+	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, &dspreq)) {
+		if (dspreq) {
+			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 */
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€Î¶¯À©Á÷¿®
+ */
+#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 */
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€Î¶¯À©Á÷¿®¡ÊÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ */
+#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 */
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®
+ */
+#ifdef TOPPERS_rcv_dtq
+
+ER
+rcv_dtq(ID dtqid, intptr_t *p_data)
+{
+	DTQCB	*p_dtqcb;
+	WINFO_DTQ winfo_dtq;
+	bool_t	dspreq;
+	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, &dspreq)) {
+		if (dspreq) {
+			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 */
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®¡Ê¥Ý¡Œ¥ê¥ó¥°¡Ë
+ */
+#ifdef TOPPERS_prcv_dtq
+
+ER
+prcv_dtq(ID dtqid, intptr_t *p_data)
+{
+	DTQCB	*p_dtqcb;
+	bool_t	dspreq;
+	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, &dspreq)) {
+		if (dspreq) {
+			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 */
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®¡Ê¥¿¥€¥à¥¢¥Š¥È€¢€ê¡Ë
+ */
+#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	dspreq;
+	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, &dspreq)) {
+		if (dspreq) {
+			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 */
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎºÆœéŽü²œ
+ */
+#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 */
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎŸõÂÖ»²ŸÈ
+ */
+#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: /kernel/dataqueue.h
===================================================================
--- /kernel/dataqueue.h	(revision 7)
+++ /kernel/dataqueue.h	(revision 7)
@@ -0,0 +1,159 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2013 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥Ç¡Œ¥¿¥­¥å¡Œµ¡Çœ
+ */
+
+#ifndef TOPPERS_DATAQUEUE_H
+#define TOPPERS_DATAQUEUE_H
+
+#include "wait.h"
+
+/*
+ *  ¥Ç¡Œ¥¿ŽÉÍý¥Ö¥í¥Ã¥¯
+ */
+typedef struct data_management_block {
+	intptr_t	data;			/* ¥Ç¡Œ¥¿ËÜÂÎ */
+} DTQMB;
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡ŒœéŽü²œ¥Ö¥í¥Ã¥¯
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎœéŽü²œ¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬
+ *  ¡ÊWOBJINIB¡Ë€ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀžì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç¡€
+ *  ºÇœé€Î¥Õ¥£¡Œ¥ë¥É€¬¶ŠÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥
+ */
+typedef struct dataqueue_initialization_block {
+	ATR			dtqatr;			/* ¥Ç¡Œ¥¿¥­¥å¡ŒÂ°À­ */
+	uint_t		dtqcnt;			/* ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎÍÆÎÌ */
+	DTQMB		*p_dtqmb;		/* ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€ÎÀèÆ¬ÈÖÃÏ */
+} DTQINIB;
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍý¥Ö¥í¥Ã¥¯
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬¡ÊWOBJCB¡Ë
+ *  €ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀžì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç¡€ºÇœé€Î2€Ä€Î
+ *  ¥Õ¥£¡Œ¥ë¥É€¬¶ŠÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥
+ */
+typedef struct dataqueue_control_block {
+	QUEUE		swait_queue;	/* ¥Ç¡Œ¥¿¥­¥å¡ŒÁ÷¿®ÂÔ€Á¥­¥å¡Œ */
+	const DTQINIB *p_dtqinib;	/* œéŽü²œ¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿ */
+	QUEUE		rwait_queue;	/* ¥Ç¡Œ¥¿¥­¥å¡ŒŒõ¿®ÂÔ€Á¥­¥å¡Œ */
+	uint_t		count;			/* ¥Ç¡Œ¥¿¥­¥å¡ŒÃæ€Î¥Ç¡Œ¥¿€Î¿ô */
+	uint_t		head;			/* ºÇœé€Î¥Ç¡Œ¥¿€Î³ÊÇŒŸìœê */
+	uint_t		tail;			/* ºÇžå€Î¥Ç¡Œ¥¿€Î³ÊÇŒŸìœê€ÎŒ¡ */
+} DTQCB;
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡ŒÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯€ÎÄêµÁ
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬
+ *  ¡ÊWINFO_WOBJ¡Ë€ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀžì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç¡€
+ *  ºÇœé€Î2€Ä€Î¥Õ¥£¡Œ¥ë¥É€¬¶ŠÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®ÂÔ€Á€È¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®ÂÔ€Á€Ç¡€Æ±€žÂÔ€ÁŸð
+ *  Êó¥Ö¥í¥Ã¥¯€ò»È€Š¡¥
+ */
+typedef struct dataqueue_waiting_information {
+	WINFO		winfo;			/* Éžœà€ÎÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯ */
+	DTQCB		*p_dtqcb;		/* ÂÔ€Ã€Æ€€€ë¥Ç¡Œ¥¿¥­¥å¡Œ€ÎŽÉÍý¥Ö¥í¥Ã¥¯ */
+	intptr_t	data;			/* Á÷Œõ¿®¥Ç¡Œ¥¿ */
+} WINFO_DTQ;
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡ŒID€ÎºÇÂçÃÍ¡Êkernel_cfg.c¡Ë
+ */
+extern const ID	tmax_dtqid;
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡ŒœéŽü²œ¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern const DTQINIB	dtqinib_table[];
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍý¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern DTQCB	dtqcb_table[];
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍý¥Ö¥í¥Ã¥¯€«€é¥Ç¡Œ¥¿¥­¥å¡ŒID€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#define	DTQID(p_dtqcb)	((ID)(((p_dtqcb) - dtqcb_table) + TMIN_DTQID))
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œµ¡Çœ€ÎœéŽü²œ
+ */
+extern void	initialize_dataqueue(void);
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€Ø€Î¥Ç¡Œ¥¿€Î³ÊÇŒ
+ */
+extern void	enqueue_data(DTQCB *p_dtqcb, intptr_t data);
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€Ø€Î¥Ç¡Œ¥¿€Î¶¯À©³ÊÇŒ
+ */
+extern void	force_enqueue_data(DTQCB *p_dtqcb, intptr_t data);
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€«€é€Î¥Ç¡Œ¥¿€ÎŒèœÐ€·
+ */
+extern void	dequeue_data(DTQCB *p_dtqcb, intptr_t *p_data);
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€Î¥Ç¡Œ¥¿Á÷¿®
+ */
+extern bool_t	send_data(DTQCB *p_dtqcb, intptr_t data, bool_t *p_dspreq);
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€Î¥Ç¡Œ¥¿¶¯À©Á÷¿®
+ */
+extern bool_t	force_send_data(DTQCB *p_dtqcb, intptr_t data);
+
+/*
+ *  ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€Î¥Ç¡Œ¥¿Œõ¿®
+ */
+extern bool_t	receive_data(DTQCB *p_dtqcb, intptr_t *p_data,
+													bool_t *p_dspreq);
+
+#endif /* TOPPERS_DATAQUEUE_H */
Index: /kernel/eventflag.c
===================================================================
--- /kernel/eventflag.c	(revision 7)
+++ /kernel/eventflag.c	(revision 7)
@@ -0,0 +1,497 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥€¥Ù¥ó¥È¥Õ¥é¥°µ¡Çœ
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+#include "eventflag.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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 */
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°€Î¿ô
+ */
+#define tnum_flg	((uint_t)(tmax_flgid - TMIN_FLGID + 1))
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°ID€«€é¥€¥Ù¥ó¥È¥Õ¥é¥°ŽÉÍý¥Ö¥í¥Ã¥¯€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#define INDEX_FLG(flgid)	((uint_t)((flgid) - TMIN_FLGID))
+#define get_flgcb(flgid)	(&(flgcb_table[INDEX_FLG(flgid)]))
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°µ¡Çœ€ÎœéŽü²œ
+ */
+#ifdef TOPPERS_flgini
+
+void
+initialize_eventflag(void)
+{
+	uint_t	i;
+	FLGCB	*p_flgcb;
+
+	for (i = 0; i < tnum_flg; i++) {
+		p_flgcb = &(flgcb_table[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 */
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°ÂÔ€Á²òœüŸò·ï€Î¥Á¥§¥Ã¥¯
+ */
+#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 */
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°€Î¥»¥Ã¥È
+ */
+#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 */
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°€Î¥»¥Ã¥È¡ÊÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ */
+#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 */
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°€Î¥¯¥ê¥¢
+ */
+#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 */
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°ÂÔ€Á
+ */
+#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 */
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°ÂÔ€Á¡Ê¥Ý¡Œ¥ê¥ó¥°¡Ë
+ */
+#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 */
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°ÂÔ€Á¡Ê¥¿¥€¥à¥¢¥Š¥È€¢€ê¡Ë
+ */
+#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 */
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎºÆœéŽü²œ
+ */
+#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 */
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎŸõÂÖ»²ŸÈ
+ */
+#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: /kernel/eventflag.h
===================================================================
--- /kernel/eventflag.h	(revision 7)
+++ /kernel/eventflag.h	(revision 7)
@@ -0,0 +1,126 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥€¥Ù¥ó¥È¥Õ¥é¥°µ¡Çœ
+ */
+
+#ifndef TOPPERS_EVENTFLAG_H
+#define TOPPERS_EVENTFLAG_H
+
+#include "wait.h"
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°œéŽü²œ¥Ö¥í¥Ã¥¯
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎœéŽü²œ¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬
+ *  ¡ÊWOBJINIB¡Ë€ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀžì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç¡€
+ *  ºÇœé€Î¥Õ¥£¡Œ¥ë¥É€¬¶ŠÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥
+ */
+typedef struct eventflag_initialization_block {
+	ATR			flgatr;			/* ¥€¥Ù¥ó¥È¥Õ¥é¥°Â°À­ */
+	FLGPTN		iflgptn;		/* ¥€¥Ù¥ó¥È¥Õ¥é¥°€Î¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó€ÎœéŽüÃÍ */
+} FLGINIB;
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°ŽÉÍý¥Ö¥í¥Ã¥¯
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬¡ÊWOBJCB¡Ë
+ *  €ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀžì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç¡€ºÇœé€Î2€Ä€Î
+ *  ¥Õ¥£¡Œ¥ë¥É€¬¶ŠÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥
+ */
+typedef struct eventflag_control_block {
+	QUEUE		wait_queue;		/* ¥€¥Ù¥ó¥È¥Õ¥é¥°ÂÔ€Á¥­¥å¡Œ */
+	const FLGINIB *p_flginib;	/* œéŽü²œ¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿ */
+	FLGPTN		flgptn;			/* ¥€¥Ù¥ó¥È¥Õ¥é¥°žœºß¥Ñ¥¿¡Œ¥ó */
+} FLGCB;
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°ÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯€ÎÄêµÁ
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬
+ *  ¡ÊWINFO_WOBJ¡Ë€ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀžì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç¡€
+ *  ºÇœé€Î2€Ä€Î¥Õ¥£¡Œ¥ë¥É€¬¶ŠÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥
+ *
+ *  flgptn€Ï¡€waiptn€ª€è€Ówfmode€ÈÆ±»þ€Ë»È€Š€³€È€Ï€Ê€€€¿€á¡€¶ŠÍÑÂÎ€ò»È
+ *  €š€Ð¥á¥â¥ê€òÀáÌó€¹€ë€³€È€¬²ÄÇœ€Ç€¢€ë¡¥
+ */
+typedef struct eventflag_waiting_information {
+	WINFO		winfo;			/* Éžœà€ÎÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯ */
+	FLGCB		*p_flgcb;		/* ÂÔ€Ã€Æ€€€ë¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎŽÉÍý¥Ö¥í¥Ã¥¯ */
+	FLGPTN		waiptn;			/* ÂÔ€Á¥Ñ¥¿¡Œ¥ó */
+	MODE		wfmode;			/* ÂÔ€Á¥â¡Œ¥É */
+	FLGPTN		flgptn;			/* ÂÔ€Á²òœü»þ€Î¥Ñ¥¿¡Œ¥ó */
+} WINFO_FLG;
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°ID€ÎºÇÂçÃÍ¡Êkernel_cfg.c¡Ë
+ */
+extern const ID	tmax_flgid;
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°œéŽü²œ¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern const FLGINIB	flginib_table[];
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°ŽÉÍý¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern FLGCB	flgcb_table[];
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°ŽÉÍý¥Ö¥í¥Ã¥¯€«€é¥€¥Ù¥ó¥È¥Õ¥é¥°ID€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#define	FLGID(p_flgcb)	((ID)(((p_flgcb) - flgcb_table) + TMIN_FLGID))
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°µ¡Çœ€ÎœéŽü²œ
+ */
+extern void	initialize_eventflag(void);
+
+/*
+ *  ¥€¥Ù¥ó¥È¥Õ¥é¥°ÂÔ€Á²òœüŸò·ï€Î¥Á¥§¥Ã¥¯
+ */
+extern bool_t	check_flg_cond(FLGCB *p_flgcb, FLGPTN waiptn,
+								MODE wfmode, FLGPTN *p_flgptn);
+
+#endif /* TOPPERS_EVENTFLAG_H */
Index: /kernel/exception.c
===================================================================
--- /kernel/exception.c	(revision 7)
+++ /kernel/exception.c	(revision 7)
@@ -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-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$
+ */
+
+/*
+ *		CPUÎã³°ŽÉÍýµ¡Çœ
+ */
+
+#include "kernel_impl.h"
+#include "task.h"
+#include "exception.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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Îã³°¥Ï¥ó¥É¥éŽÉÍýµ¡Çœ€ÎœéŽü²œ
+ */
+#ifdef TOPPERS_excini
+#ifndef OMIT_INITIALIZE_EXCEPTION
+
+void
+initialize_exception(void)
+{
+	uint_t			i;
+	const EXCINIB	*p_excinib;
+
+	for (i = 0; i < tnum_excno; i++) {
+		p_excinib = &(excinib_table[i]);
+		x_define_exc(p_excinib->excno, p_excinib->exc_entry);
+	}
+}
+
+#endif /* OMIT_INITIALIZE_EXCEPTION */
+#endif /* TOPPERS_excini */
+
+/*
+ *  CPUÎã³°€ÎÈ¯Àž€·€¿¥³¥ó¥Æ¥­¥¹¥È€Î»²ŸÈ
+ */
+
+/*
+ *  CPUÎã³°È¯Àž»þ€Î¥Ç¥£¥¹¥Ñ¥Ã¥ÁÊÝÎ±ŸõÂÖ€Î»²ŸÈ
+ *
+ *  CPUÎã³°¥Ï¥ó¥É¥éÃæ€Çdisdsp€¬ÊÑ²œ€¹€ë€³€È€Ï€Ê€€€¿€á¡€CPUÎã³°€¬È¯Àž€·
+ *  €¿»þ€Îdisdsp€òÊÝÂž€·€Æ€ª€¯É¬Í×€Ï€Ê€€¡¥
+ */
+#ifdef TOPPERS_xsns_dpn
+
+bool_t
+xsns_dpn(void *p_excinf)
+{
+	bool_t	state;
+
+	LOG_XSNS_DPN_ENTER(p_excinf);
+	state = (kerflg && exc_sense_intmask(p_excinf)
+									&& !disdsp) ? false : true;
+	LOG_XSNS_DPN_LEAVE(state);
+	return(state);
+}
+
+#endif /* TOPPERS_xsns_dpn */
+
+/*
+ *  CPUÎã³°È¯Àž»þ€Î¥¿¥¹¥¯Îã³°œèÍýÊÝÎ±ŸõÂÖ€Î»²ŸÈ
+ *
+ *  CPUÎã³°¥Ï¥ó¥É¥éÃæ€Çp_runtsk€Èp_runtsk->enatex€¬ÊÑ²œ€¹€ë€³€È€Ï€Ê€€
+ *  €¿€á¡€CPUÎã³°€¬È¯Àž€·€¿»þ€Îp_runtsk->enatex€òÊÝÂž€·€Æ€ª€¯É¬Í×€Ï€Ê
+ *  €€¡¥
+ */
+#ifdef TOPPERS_xsns_xpn
+
+bool_t
+xsns_xpn(void *p_excinf)
+{
+	bool_t	state;
+
+	LOG_XSNS_XPN_ENTER(p_excinf);
+	state = (kerflg && exc_sense_intmask(p_excinf)
+									&& p_runtsk->enatex) ? false : true;
+	LOG_XSNS_XPN_LEAVE(state);
+	return(state);
+}
+
+#endif /* TOPPERS_xsns_xpn */
Index: /kernel/exception.h
===================================================================
--- /kernel/exception.h	(revision 7)
+++ /kernel/exception.h	(revision 7)
@@ -0,0 +1,78 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		CPUÎã³°ŽÉÍýµ¡Çœ
+ */
+
+#ifndef TOPPERS_EXCEPTION_H
+#define TOPPERS_EXCEPTION_H
+
+#ifndef OMIT_INITIALIZE_EXCEPTION
+
+/*
+ *  CPUÎã³°¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯
+ */
+typedef struct cpu_exception_handler_initialization_block {
+	EXCNO		excno;			/* CPUÎã³°¥Ï¥ó¥É¥éÈÖ¹æ */
+	ATR			excatr;			/* CPUÎã³°¥Ï¥ó¥É¥éÂ°À­ */
+	FP			exc_entry;		/* CPUÎã³°¥Ï¥ó¥É¥é€ÎœÐÆþžýœèÍý€ÎÈÖÃÏ */
+} EXCINIB;
+
+/*
+ *  CPUÎã³°¥Ï¥ó¥É¥éÈÖ¹æ€Î¿ô¡Êkernel_cfg.c¡Ë
+ */
+extern const uint_t	tnum_excno;
+
+/*
+ *  CPUÎã³°¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern const EXCINIB	excinib_table[];
+
+#endif /* OMIT_INITIALIZE_EXCEPTION */
+
+/*
+ *  CPUÎã³°¥Ï¥ó¥É¥éŽÉÍýµ¡Çœ€ÎœéŽü²œ
+ */
+extern void	initialize_exception(void);
+
+#endif /* TOPPERS_EXCEPTION_H */
Index: /kernel/genoffset.tf
===================================================================
--- /kernel/genoffset.tf	(revision 7)
+++ /kernel/genoffset.tf	(revision 7)
@@ -0,0 +1,146 @@
+$ ======================================================================
+$ 
+$   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
+$  
+$   Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+$   ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+$   ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+$   (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+$       ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+$       ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+$   (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+$       ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+$       ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+$       €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+$   (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+$       ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+$       €È¡¥
+$     (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+$         ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+$     (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+$         Êó¹ð€¹€ë€³€È¡¥
+$   (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+$       ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+$       €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+$       Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+$       ÌÈÀÕ€¹€ë€³€È¡¥
+$  
+$   ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+$   €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+$   €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+$   ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+$   €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+$ 
+$   $Id$
+$ 
+$ =====================================================================
+
+$ 
+$  #define¥Ç¥£¥ì¥¯¥Æ¥£¥Ö€ÎÀžÀ®
+$ 
+$FUNCTION DEFINE$
+	#define $ARGV[1]$$TAB$$FORMAT("%d", +ARGV[2])$$NL$
+$END$
+
+$ 
+$  ¥Ó¥Ã¥È€Î¥µ¡Œ¥Á
+$ 
+$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$
+
+$ 
+$  ¥Ó¥Ã¥È¥Õ¥£¡Œ¥ë¥É€Î¥ª¥Õ¥»¥Ã¥È€È¥Ó¥Ã¥È°ÌÃÖ€ÎÄêµÁ€ÎÀžÀ®
+$ 
+$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$
+
+$ 
+$  ¥Ð¥€¥ÈÇÛÃÖ€Î¥Á¥§¥Ã¥¯
+$ 
+$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 })$
+
+$ 
+$  ¥Õ¥¡¥€¥ë¥Ø¥Ã¥À€ÎÀžÀ®
+$ 
+$FILE "offset.h"$
+/* offset.h */$NL$
+$NL$
Index: /kernel/interrupt.c
===================================================================
--- /kernel/interrupt.c	(revision 7)
+++ /kernel/interrupt.c	(revision 7)
@@ -0,0 +1,254 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		³ä¹þ€ßŽÉÍýµ¡Çœ
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "interrupt.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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 (i = 0; i < tnum_inhno; i++) {
+		p_inhinib = &(inhinib_table[i]);
+		x_define_inh(p_inhinib->inhno, p_inhinib->int_entry);
+	}
+	for (i = 0; i < tnum_intno; i++) {
+		p_intinib = &(intinib_table[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 */
+
+/*
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€ÎÊÑ¹¹
+ */
+#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 */
+
+/*
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€Î»²ŸÈ
+ */
+#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: /kernel/interrupt.h
===================================================================
--- /kernel/interrupt.h	(revision 7)
+++ /kernel/interrupt.h	(revision 7)
@@ -0,0 +1,97 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		³ä¹þ€ßŽÉÍýµ¡Çœ
+ */
+
+#ifndef TOPPERS_INTERRUPT_H
+#define TOPPERS_INTERRUPT_H
+
+#ifndef OMIT_INITIALIZE_INTERRUPT
+
+/*
+ *  ³ä¹þ€ß¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯
+ */
+typedef struct interrupt_handler_initialization_block {
+	INHNO		inhno;			/* ³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ */
+	ATR			inhatr;			/* ³ä¹þ€ß¥Ï¥ó¥É¥éÂ°À­ */
+	FP			int_entry;		/* ³ä¹þ€ß¥Ï¥ó¥É¥é€ÎœÐÆþžýœèÍý€ÎÈÖÃÏ */
+} INHINIB;
+
+/*
+ *  ³ä¹þ€ßÍ×µá¥é¥€¥óœéŽü²œ¥Ö¥í¥Ã¥¯
+ */
+typedef struct interrupt_request_initialization_block {
+	INTNO		intno;			/* ³ä¹þ€ßÈÖ¹æ */
+	ATR			intatr;			/* ³ä¹þ€ßÂ°À­ */
+	PRI			intpri;			/* ³ä¹þ€ßÍ¥ÀèÅÙ */
+} INTINIB;
+
+/*
+ *  ³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ€Î¿ô¡Êkernel_cfg.c¡Ë
+ */
+extern const uint_t	tnum_inhno;
+
+/*
+ *  ³ä¹þ€ß¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern const INHINIB	inhinib_table[];
+
+/*
+ *  ³ä¹þ€ßÍ×µá¥é¥€¥ó€Î¿ô¡Êkernel_cfg.c¡Ë
+ */
+extern const uint_t	tnum_intno;
+
+/*
+ *  ³ä¹þ€ßÍ×µá¥é¥€¥óœéŽü²œ¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern const INTINIB	intinib_table[];
+
+#endif /* OMIT_INITIALIZE_INTERRUPT */
+
+/*
+ *  ³ä¹þ€ßŽÉÍýµ¡Çœ€ÎœéŽü²œ
+ */
+extern void	initialize_interrupt(void);
+
+#endif /* TOPPERS_INTERRUPT_H */
Index: /kernel/kernel.tf
===================================================================
--- /kernel/kernel.tf	(revision 7)
+++ /kernel/kernel.tf	(revision 7)
@@ -0,0 +1,1097 @@
+$ ======================================================================
+$ 
+$   TOPPERS/ASP Kernel
+$       Toyohashi Open Platform for Embedded Real-Time Systems/
+$       Advanced Standard Profile Kernel
+$ 
+$   Copyright (C) 2007 by TAKAGI Nobuhisa
+$   Copyright (C) 2007-2015 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$
+$  
+$ =====================================================================
+
+$ =====================================================================
+$ 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$
+#if TKERNEL_PRID != 0x07u$NL$
+#error The kernel does not match this configuration file.$NL$
+#endif$NL$
+$NL$
+
+$ 
+$  ¥€¥ó¥¯¥ë¡Œ¥É¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¡Ê#include¡Ë
+$ 
+/*$NL$
+$SPC$*  Include Directives (#include)$NL$
+$SPC$*/$NL$
+$NL$
+$INCLUDES$
+$NL$
+
+$ 
+$  ¥ª¥Ö¥ž¥§¥¯¥È€Î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$
+
+$
+$  ¥¹¥¿¥Ã¥¯ÎÎ°è€Î³ÎÊÝŽØ¿ô
+$
+$IF !ISFUNCTION("ALLOC_STACK")$
+$FUNCTION ALLOC_STACK$
+$	// Âç€­€€Êý€ËŽÝ€á€¿¥µ¥€¥º€Ç³ÎÊÝ€¹€ë
+	static STK_T $ARGV[1]$[COUNT_STK_T($ARGV[2]$)];$NL$
+	$RESULT = FORMAT("ROUND_STK_T(%1%)", ARGV[2])$
+$END$
+$END$
+
+$ 
+$  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+$ 
+/*$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$
+
+$ 
+$  ¥¿¥¹¥¯
+$ 
+/*$NL$
+$SPC$*  Task Management Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ¥¿¥¹¥¯€¬1žÄ°ÊŸåÂžºß€¹€ë€³€È€Î¥Á¥§¥Ã¥¯
+$IF !LENGTH(TSK.ID_LIST)$
+	$ERROR$$FORMAT(_("no task is registered"))$$END$
+$END$
+
+$ ¥¿¥¹¥¯IDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_tskid = (TMIN_TSKID + TNUM_TSKID - 1);$NL$
+$NL$
+
+$ ¥š¥é¡Œ¥Á¥§¥Ã¥¯
+$FOREACH tskid TSK.ID_LIST$
+$	// tskatr€¬¡Ê¡ÎTA_ACT¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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$
+
+$ ¥¹¥¿¥Ã¥¯ÎÎ°è€ÎÀžÀ®€È€œ€ì€ËŽØ€¹€ë¥š¥é¡Œ¥Á¥§¥Ã¥¯
+$FOREACH tskid TSK.ID_LIST$
+$	// stksz€¬0°Ê²Œ€«¡€¥¿¡Œ¥²¥Ã¥ÈÄêµÁ€ÎºÇŸ®ÃÍ¡ÊTARGET_MIN_STKSZ¡Ë€è€ê€â
+$	// Ÿ®€µ€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$IF TSK.STKSZ[tskid] <= 0 || (TARGET_MIN_STKSZ
+									&& TSK.STKSZ[tskid] < TARGET_MIN_STKSZ)$
+		$ERROR TSK.TEXT_LINE[tskid]$E_PAR: $FORMAT(_("too small %1% `%2%\' of `%3%\' in %4%"), "stksz", TSK.STKSZ[tskid], tskid, "CRE_TSK")$$END$
+	$END$
+
+$ 	// stksz€¬¥¹¥¿¥Ã¥¯ÎÎ°è€Î¥µ¥€¥º€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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")$
+		$TSK.TINIB_STKSZ[tskid] = ALLOC_STACK(CONCAT("_kernel_stack_",
+												tskid), TSK.STKSZ[tskid])$
+		$TSK.TINIB_STK[tskid] = CONCAT("_kernel_stack_", tskid)$
+	$ELSE$
+		$TSK.TINIB_STKSZ[tskid] = FORMAT("(%1%)", TSK.STKSZ[tskid])$
+		$TSK.TINIB_STK[tskid] = FORMAT("(void *)(%1%)", TSK.STK[tskid])$
+	$END$
+$END$
+$NL$
+
+$ ¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®¡Ê¥¿¥¹¥¯€Ï1žÄ°ÊŸåÂžºß€¹€ë¡Ë
+const TINIB _kernel_tinib_table[TNUM_TSKID] = {$NL$
+$JOINEACH tskid TSK.ID_LIST ",\n"$
+$	// ¥¿¥¹¥¯Â°À­¡€³ÈÄ¥ŸðÊó¡€µ¯Æ°ÈÖÃÏ¡€µ¯Æ°»þÍ¥ÀèÅÙ
+	$TAB${
+	$SPC$($TSK.TSKATR[tskid]$), (intptr_t)($TSK.EXINF[tskid]$),
+	$SPC$((TASK)($TSK.TASK[tskid]$)), INT_PRIORITY($TSK.ITSKPRI[tskid]$),
+
+$	// ¥¿¥¹¥¯œéŽü²œ¥³¥ó¥Æ¥­¥¹¥È¥Ö¥í¥Ã¥¯¡€¥¹¥¿¥Ã¥¯ÎÎ°è
+	$IF USE_TSKINICTXB$
+		$GENERATE_TSKINICTXB(tskid)$
+	$ELSE$
+		$SPC$$TSK.TINIB_STKSZ[tskid]$, $TSK.TINIB_STK[tskid]$,
+	$END$
+
+$	// ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎÂ°À­€Èµ¯Æ°ÈÖÃÏ
+	$SPC$($ALT(TSK.TEXATR[tskid],"TA_NULL")$), ($ALT(TSK.TEXRTN[tskid],"NULL")$) }
+$END$$NL$
+};$NL$
+$NL$
+
+$ ¥¿¥¹¥¯ŽÉÍý¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+TCB _kernel_tcb_table[TNUM_TSKID];$NL$
+$NL$
+
+$ ¥¿¥¹¥¯ÀžÀ®œçœø¥Æ¡Œ¥Ö¥ë€ÎÀžÀ®
+const ID _kernel_torder_table[TNUM_TSKID] = {$NL$
+$TAB$$JOINEACH tskid TSK.ORDER_LIST ", "$$tskid$$END$$NL$
+};$NL$
+$NL$
+
+$ 
+$  ¥»¥Þ¥Õ¥©
+$ 
+/*$NL$
+$SPC$*  Semaphore Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ¥»¥Þ¥Õ¥©IDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_semid = (TMIN_SEMID + TNUM_SEMID - 1);$NL$
+$NL$
+
+$ ¥»¥Þ¥Õ¥©œéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF LENGTH(SEM.ID_LIST)$
+	const SEMINIB _kernel_seminib_table[TNUM_SEMID] = {$NL$
+	$JOINEACH semid SEM.ID_LIST ",\n"$
+$		// sematr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$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)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$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$
+
+$		// ¥»¥Þ¥Õ¥©œéŽü²œ¥Ö¥í¥Ã¥¯
+		$TAB${ ($SEM.SEMATR[semid]$), ($SEM.ISEMCNT[semid]$), ($SEM.MAXSEM[semid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// ¥»¥Þ¥Õ¥©ŽÉÍý¥Ö¥í¥Ã¥¯
+	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$
+
+$ 
+$  ¥€¥Ù¥ó¥È¥Õ¥é¥°
+$ 
+/*$NL$
+$SPC$*  Eventflag Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ¥€¥Ù¥ó¥È¥Õ¥é¥°IDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_flgid = (TMIN_FLGID + TNUM_FLGID - 1);$NL$
+$NL$
+
+$ ¥€¥Ù¥ó¥È¥Õ¥é¥°œéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF LENGTH(FLG.ID_LIST)$
+	const FLGINIB _kernel_flginib_table[TNUM_FLGID] = {$NL$
+	$JOINEACH flgid FLG.ID_LIST ",\n"$
+$		// flgatr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ã¡ÎTA_WMUL¡Ï¡Ã¡ÎTA_CLR¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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$
+
+$		// iflgptn€¬FLGPTN€Ë³ÊÇŒ€Ç€­€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$IF (FLG.IFLGPTN[flgid] & ~((1 << TBIT_FLGPTN) - 1)) != 0$
+			$ERROR FLG.TEXT_LINE[flgid]$E_PAR: $FORMAT(_("too large %1% `%2%\' of `%3%\' in %4%"), "iflgptn", FLG.IFLGPTN[flgid], flgid, "CRE_FLG")$$END$
+		$END$
+
+$		// ¥€¥Ù¥ó¥È¥Õ¥é¥°œéŽü²œ¥Ö¥í¥Ã¥¯
+		$TAB${ ($FLG.FLGATR[flgid]$), ($FLG.IFLGPTN[flgid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// ¥€¥Ù¥ó¥È¥Õ¥é¥°ŽÉÍý¥Ö¥í¥Ã¥¯
+	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$
+
+$ 
+$  ¥Ç¡Œ¥¿¥­¥å¡Œ
+$ 
+/*$NL$
+$SPC$*  Dataqueue Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ¥Ç¡Œ¥¿¥­¥å¡ŒIDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_dtqid = (TMIN_DTQID + TNUM_DTQID - 1);$NL$
+$NL$
+
+$IF LENGTH(DTQ.ID_LIST)$
+	$FOREACH dtqid DTQ.ID_LIST$
+$		// dtqatr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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$
+
+$		// dtqcnt€¬Éé€ÎŸì¹ç¡ÊE_PAR¡Ë
+		$IF DTQ.DTQCNT[dtqid] < 0$
+			$ERROR DTQ.TEXT_LINE[dtqid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "dtqcnt", DTQ.DTQCNT[dtqid], dtqid, "CRE_DTQ")$$END$
+		$END$
+
+$		// dtqmb€¬NULL€Ç€Ê€€Ÿì¹ç¡ÊE_NOSPT¡Ë
+		$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$
+
+$		// ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è
+		$IF DTQ.DTQCNT[dtqid]$
+			static DTQMB _kernel_dtqmb_$dtqid$[$DTQ.DTQCNT[dtqid]$];$NL$
+		$END$
+	$END$
+
+$	// ¥Ç¡Œ¥¿¥­¥å¡ŒœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+	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$
+
+$	// ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍý¥Ö¥í¥Ã¥¯
+	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$
+
+$ 
+$  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ
+$ 
+/*$NL$
+$SPC$*  Priority Dataqueue Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒIDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_pdqid = (TMIN_PDQID + TNUM_PDQID - 1);$NL$
+$NL$
+
+$IF LENGTH(PDQ.ID_LIST)$
+	$FOREACH pdqid PDQ.ID_LIST$
+$		// pdqatr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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$
+
+$		// pdqcnt€¬Éé€ÎŸì¹ç¡ÊE_PAR¡Ë
+		$IF PDQ.PDQCNT[pdqid] < 0$
+			$ERROR PDQ.TEXT_LINE[pdqid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "pdqcnt", PDQ.PDQCNT[pdqid], pdqid, "CRE_PDQ")$$END$
+		$END$
+
+$		// (TMIN_DPRI <= maxdpri && maxdpri <= TMAX_DPRI)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$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€Ç€Ê€€Ÿì¹ç¡ÊE_NOSPT¡Ë
+		$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$
+
+$		// Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è
+		$IF PDQ.PDQCNT[pdqid]$
+			static PDQMB _kernel_pdqmb_$pdqid$[$PDQ.PDQCNT[pdqid]$];$NL$
+		$END$
+	$END$
+
+$	// Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+	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$
+
+$	// Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍý¥Ö¥í¥Ã¥¯
+	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$
+
+$ 
+$  ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹
+$ 
+/*$NL$
+$SPC$*  Mailbox Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹IDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_mbxid = (TMIN_MBXID + TNUM_MBXID - 1);$NL$
+$NL$
+
+$ ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹œéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF LENGTH(MBX.ID_LIST)$
+	const MBXINIB _kernel_mbxinib_table[TNUM_MBXID] = {$NL$
+	$JOINEACH mbxid MBX.ID_LIST ",\n"$
+$		// mbxatr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ã¡ÎTA_MPRI¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$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€Ç€Ê€€Ÿì¹ç¡ÊE_NOSPT¡Ë
+		$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$
+
+$		// ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹œéŽü²œ¥Ö¥í¥Ã¥¯
+		$TAB${ ($MBX.MBXATR[mbxid]$), ($MBX.MAXMPRI[mbxid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹ŽÉÍý¥Ö¥í¥Ã¥¯
+	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$
+
+$ 
+$  žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ë
+$ 
+/*$NL$
+$SPC$*  Fixed-sized Memorypool Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëIDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_mpfid = (TMIN_MPFID + TNUM_MPFID - 1);$NL$
+$NL$
+
+$IF LENGTH(MPF.ID_LIST)$
+	$FOREACH mpfid MPF.ID_LIST$
+$		// mpfatr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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°Ê²Œ€ÎŸì¹ç¡ÊE_PAR¡Ë
+		$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°Ê²Œ€ÎŸì¹ç¡ÊE_PAR¡Ë
+		$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$
+
+$		// žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÎÎ°è
+		$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€Ç€Ê€€Ÿì¹ç¡ÊE_NOSPT¡Ë
+		$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$
+
+$		// žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëŽÉÍýÎÎ°è
+		static MPFMB _kernel_mpfmb_$mpfid$[$MPF.BLKCNT[mpfid]$];$NL$
+	$END$
+
+$	// žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+	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$(void *)($MPF.MPF[mpfid]$)$END$, (_kernel_mpfmb_$mpfid$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëŽÉÍý¥Ö¥í¥Ã¥¯
+	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$
+
+$ 
+$  ŒþŽü¥Ï¥ó¥É¥é
+$ 
+/*$NL$
+$SPC$*  Cyclic Handler Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ŒþŽü¥Ï¥ó¥É¥éIDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_cycid = (TMIN_CYCID + TNUM_CYCID - 1);$NL$
+$NL$
+
+$ ŒþŽü¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF LENGTH(CYC.ID_LIST)$
+	const CYCINIB _kernel_cycinib_table[TNUM_CYCID] = {$NL$
+	$JOINEACH cycid CYC.ID_LIST ",\n"$
+$		// cycatr€¬¡Ê¡ÎTA_STA¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$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)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+		$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$
+
+$		// ·Ù¹ð¡§cycatr€ËTA_STA€¬ÀßÄê€µ€ì€Æ€€€Æ¡€(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$
+
+$		// ŒþŽü¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯
+		$TAB${ ($CYC.CYCATR[cycid]$), (intptr_t)($CYC.EXINF[cycid]$), ($CYC.CYCHDR[cycid]$), ($CYC.CYCTIM[cycid]$), ($CYC.CYCPHS[cycid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// ŒþŽü¥Ï¥ó¥É¥éŽÉÍý¥Ö¥í¥Ã¥¯
+	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$
+
+$ 
+$  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é
+$ 
+/*$NL$
+$SPC$*  Alarm Handler Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éIDÈÖ¹æ€ÎºÇÂçÃÍ
+const ID _kernel_tmax_almid = (TMIN_ALMID + TNUM_ALMID - 1);$NL$
+$NL$
+
+$ ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÀžÀ®
+$IF LENGTH(ALM.ID_LIST)$
+	const ALMINIB _kernel_alminib_table[TNUM_ALMID] = {$NL$
+	$JOINEACH almid ALM.ID_LIST ",\n"$
+$		// almatr€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+		$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$
+
+$		// ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯
+		$TAB${ ($ALM.ALMATR[almid]$), (intptr_t)($ALM.EXINF[almid]$), ($ALM.ALMHDR[almid]$) }
+	$END$$NL$
+	};$NL$
+	$NL$
+
+$	// ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éŽÉÍý¥Ö¥í¥Ã¥¯
+	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$
+
+$ ³ä¹þ€ßÈÖ¹æ€È³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ€ÎÊÑŽ¹¥Æ¡Œ¥Ö¥ë€ÎºîÀ®
+$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$
+
+$ ³ä¹þ€ßÍ×µá¥é¥€¥ó€ËŽØ€¹€ë¥š¥é¡Œ¥Á¥§¥Ã¥¯
+$i = 0$
+$FOREACH intno INT.ORDER_LIST$
+$	// intno€¬CFG_INT€ËÂÐ€¹€ë³ä¹þ€ßÈÖ¹æ€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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€Ë€è€Ã€ÆÀßÄêºÑ€ß€ÎŸì¹ç¡ÊE_OBJ¡Ë
+	$j = 0$
+	$FOREACH intno2 INT.ORDER_LIST$
+		$IF j < i && INT.INTNO[intno] == INT.INTNO[intno2]$
+			$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€¬¡Ê¡ÎTA_ENAINT¡Ï¡Ã¡ÎTA_EDGE¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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€ËÂÐ€¹€ë³ä¹þ€ßÍ¥ÀèÅÙ€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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$
+
+$	// ¥«¡Œ¥Í¥ëŽÉÍý€ËžÇÄê€µ€ì€Æ€€€ëintno€ËÂÐ€·€Æ¡€intpri€ËTMIN_INTPRI
+$	// €è€ê€âŸ®€µ€€ÃÍ€¬»ØÄê€µ€ì€¿Ÿì¹ç¡ÊE_OBJ¡Ë
+	$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$
+
+$	// ¥«¡Œ¥Í¥ëŽÉÍý³°€ËžÇÄê€µ€ì€Æ€€€ëintno€ËÂÐ€·€Æ¡€intpri€ËTMIN_INTPRI
+$	// €è€ê€âŸ®€µ€€ÃÍ€¬»ØÄê€µ€ì€Ê€«€Ã€¿Ÿì¹ç¡ÊE_OBJ¡Ë
+	$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$
+
+$ ³ä¹þ€ß¥Ï¥ó¥É¥é€ËŽØ€¹€ë¥š¥é¡Œ¥Á¥§¥Ã¥¯
+$i = 0$
+$FOREACH inhno INH.ORDER_LIST$
+$	// inhno€¬DEF_INH€ËÂÐ€¹€ë³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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€Ë€è€Ã€ÆÀßÄêºÑ€ß€ÎŸì¹ç¡ÊE_OBJ¡Ë
+	$j = 0$
+	$FOREACH inhno2 INH.ORDER_LIST$
+		$IF j < i && INH.INHNO[inhno] == INH.INHNO[inhno2]$
+			$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€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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$
+
+$	// ¥«¡Œ¥Í¥ëŽÉÍý€ËžÇÄê€µ€ì€Æ€€€ëinhno€ËÂÐ€·€Æ¡€inhatr€ËTA_NONKERNEL
+$	//¡¡€¬»ØÄê€µ€ì€Æ€€€ëŸì¹ç¡ÊE_RSATR¡Ë
+	$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$
+
+$	// ¥«¡Œ¥Í¥ëŽÉÍý³°€ËžÇÄê€µ€ì€Æ€€€ëinhno€ËÂÐ€·€Æ¡€inhatr€ËTA_NONKERNEL
+$	// €¬»ØÄê€µ€ì€Æ€€€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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€¬€Ê€€Ÿì¹ç¡ÊE_OBJ¡Ë
+		$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", intno, "inhno", INH.INHNO[inhno], "CFG_INT")$$END$
+		$ELSE$
+			$IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$
+$				// inhatr€ËTA_NONKERNEL€¬»ØÄê€µ€ì€Æ€ª€é€º¡€inhno€ËÂÐ±þ
+$				// €¹€ëintno€ËÂÐ€·€ÆCFG_INT€ÇÀßÄê€µ€ì€¿³ä¹þ€ßÍ¥ÀèÅÙ€¬
+$				// TMIN_INTPRI€è€ê€âŸ®€µ€€Ÿì¹ç¡ÊE_OBJ¡Ë
+				$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€¬»ØÄê€µ€ì€Æ€ª€ê¡€inhno€ËÂÐ±þ
+$				// €¹€ëintno€ËÂÐ€·€ÆCFG_INT€ÇÀßÄê€µ€ì€¿³ä¹þ€ßÍ¥ÀèÅÙ€¬
+$				// TMIN_INTPRI°ÊŸå€Ç€¢€ëŸì¹ç¡ÊE_OBJ¡Ë
+				$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$
+
+$ ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó¡ÊISR¡Ë€ËŽØ€¹€ë¥š¥é¡Œ¥Á¥§¥Ã¥¯€È³ä¹þ€ß¥Ï¥ó¥É¥é€ÎÀžÀ®
+$FOREACH order ISR.ORDER_LIST$
+$	// isratr€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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€ËÂÐ€¹€ë³ä¹þ€ßÈÖ¹æ€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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€ËÂÐ€·€ÆÅÐÏ¿€µ€ì€¿ISR€Î¥ê¥¹¥È€ÎºîÀ®
+	$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€ËÂÐ€·€ÆÅÐÏ¿€µ€ì€¿ISR€¬Âžºß€¹€ëŸì¹ç
+	$IF LENGTH(isr_order_list) > 0$
+$		// intno€ËÂÐ±þ€¹€ëinhno€ËÂÐ€·€ÆDEF_INH€¬€¢€ëŸì¹ç¡ÊE_OBJ¡Ë
+		$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€¬€Ê€€Ÿì¹ç¡ÊE_OBJ¡Ë
+		$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€ÇÀßÄê€µ€ì€¿³ä¹þ€ßÍ¥ÀèÅÙ€¬TMIN_INTPRI
+$			// €è€ê€âŸ®€µ€€Ÿì¹ç¡ÊE_OBJ¡Ë
+			$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)$
+
+$		// ISRÍÑ€Î³ä¹þ€ß¥Ï¥ó¥É¥é
+		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€òÍ¥ÀèÅÙœç€ËžÆ€ÓœÐ€¹
+		$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$
+
+$ 
+$  ³ä¹þ€ßŽÉÍýµ¡Çœ€Î€¿€á€ÎÉžœàÅª€ÊœéŽü²œŸðÊó€ÎÀžÀ®
+$ 
+$ ³ä¹þ€ß¥Ï¥ó¥É¥é€ÎœéŽü²œ€ËÉ¬Í×€ÊŸðÊó
+$IF !OMIT_INITIALIZE_INTERRUPT || ALT(USE_INHINIB_TABLE,0)$
+
+$ ³ä¹þ€ß¥Ï¥ó¥É¥é¿ô
+#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$
+
+$ ³ä¹þ€ß¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯
+$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$
+
+$ ³ä¹þ€ßÍ×µá¥é¥€¥ó€ÎœéŽü²œ€ËÉ¬Í×€ÊŸðÊó
+$IF !OMIT_INITIALIZE_INTERRUPT || ALT(USE_INTINIB_TABLE,0)$
+
+$ ³ä¹þ€ßÍ×µá¥é¥€¥ó¿ô
+#define TNUM_INTNO	$LENGTH(INT.ORDER_LIST)$$NL$
+const uint_t _kernel_tnum_intno = TNUM_INTNO;$NL$
+$NL$
+
+$ ³ä¹þ€ßÍ×µá¥é¥€¥óœéŽü²œ¥Ö¥í¥Ã¥¯
+$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Îã³°ŽÉÍýµ¡Çœ
+$ 
+/*$NL$
+$SPC$*  CPU Exception Management Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ CPUÎã³°¥Ï¥ó¥É¥é€ËŽØ€¹€ë¥š¥é¡Œ¥Á¥§¥Ã¥¯
+$i = 0$
+$FOREACH excno EXC.ORDER_LIST$
+$	// excno€¬DEF_EXC€ËÂÐ€¹€ëCPUÎã³°¥Ï¥ó¥É¥éÈÖ¹æ€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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€Ë€è€Ã€ÆÀßÄêºÑ€ß€ÎŸì¹ç¡ÊE_OBJ¡Ë
+	$j = 0$
+	$FOREACH excno2 EXC.ORDER_LIST$
+		$IF j < i && EXC.EXCNO[excno] == EXC.EXCNO[excno2]$
+			$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€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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Îã³°¥Ï¥ó¥É¥é€Î€¿€á€ÎÉžœàÅª€ÊœéŽü²œŸðÊó€ÎÀžÀ®
+$IF !OMIT_INITIALIZE_EXCEPTION$
+
+$ CPUÎã³°¥Ï¥ó¥É¥é¿ô
+#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Îã³°¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯
+$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$
+
+$ 
+$  Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ€Î¥¹¥¿¥Ã¥¯ÎÎ°è
+$ 
+/*$NL$
+$SPC$*  Stack Area for Non-task Context$NL$
+$SPC$*/$NL$
+$NL$
+
+$IF !LENGTH(ICS.ORDER_LIST)$
+$	// DEF_ICS€¬€Ê€€Ÿì¹ç€Î¥Ç¥Õ¥©¥ë¥ÈÃÍ€ÎÀßÄê
+	#ifdef DEFAULT_ISTK$NL$
+	$NL$
+	#define TOPPERS_ISTKSZ		DEFAULT_ISTKSZ$NL$
+	#define TOPPERS_ISTK		DEFAULT_ISTK$NL$
+	$NL$
+	#else /* DEAULT_ISTK */$NL$
+	$NL$
+	$istksz = ALLOC_STACK("_kernel_istack", "DEFAULT_ISTKSZ")$$NL$
+	#define TOPPERS_ISTKSZ		$istksz$$NL$
+	#define TOPPERS_ISTK		_kernel_istack$NL$
+	$NL$
+	#endif /* DEAULT_ISTK */$NL$
+$ELSE$
+
+$	// ÀÅÅªAPI¡ÖDEF_ICS¡×€¬Ê£¿ô€¢€ë¡ÊE_OBJ¡Ë
+	$IF LENGTH(ICS.ORDER_LIST) > 1$
+		$ERROR$E_OBJ: $FORMAT(_("too many %1%"), "DEF_ICS")$$END$
+	$END$
+
+$	// istksz€¬0°Ê²Œ€«¡€¥¿¡Œ¥²¥Ã¥ÈÄêµÁ€ÎºÇŸ®ÃÍ¡ÊTARGET_MIN_ISTKSZ¡Ë€è€ê€â
+$	// Ÿ®€µ€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$IF ICS.ISTKSZ[1] <= 0 || (TARGET_MIN_ISTKSZ
+									&& ICS.ISTKSZ[1] < TARGET_MIN_ISTKSZ)$
+		$ERROR ICS.TEXT_LINE[1]$E_PAR: $FORMAT(_("too small %1% `%2%\' in %3%"), "istksz", ICS.ISTKSZ[1], "DEF_ICS")$$END$
+	$END$
+
+$ 	// istksz€¬¥¹¥¿¥Ã¥¯ÎÎ°è€Î¥µ¥€¥º€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
+	$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")$
+$		// ¥¹¥¿¥Ã¥¯ÎÎ°è€ÎŒ«Æ°³äÉÕ€±
+		$istksz = ALLOC_STACK("_kernel_istack", ICS.ISTKSZ[1])$$NL$
+		#define TOPPERS_ISTKSZ		$istksz$$NL$
+		#define TOPPERS_ISTK		_kernel_istack$NL$
+	$ELSE$
+		#define TOPPERS_ISTKSZ		($ICS.ISTKSZ[1]$)$NL$
+		#define TOPPERS_ISTK		(void *)($ICS.ISTK[1]$)$NL$
+	$END$
+$END$
+$NL$
+
+$ Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ€Î¥¹¥¿¥Ã¥¯ÎÎ°è
+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$
+
+$ 
+$  ¥¿¥€¥à¥€¥Ù¥ó¥ÈŽÉÍý
+$ 
+/*$NL$
+$SPC$*  Time Event Management$NL$
+$SPC$*/$NL$
+$NL$
+TMEVTN   _kernel_tmevt_heap[TNUM_TSKID + TNUM_CYCID + TNUM_ALMID];$NL$
+$NL$
+
+$ 
+$  ³Æ¥â¥ž¥å¡Œ¥ë€ÎœéŽü²œŽØ¿ô
+$ 
+/*$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)$$TAB$_kernel_initialize_semaphore();$NL$$END$
+$IF LENGTH(FLG.ID_LIST)$$TAB$_kernel_initialize_eventflag();$NL$$END$
+$IF LENGTH(DTQ.ID_LIST)$$TAB$_kernel_initialize_dataqueue();$NL$$END$
+$IF LENGTH(PDQ.ID_LIST)$$TAB$_kernel_initialize_pridataq();$NL$$END$
+$IF LENGTH(MBX.ID_LIST)$$TAB$_kernel_initialize_mailbox();$NL$$END$
+$IF LENGTH(MPF.ID_LIST)$$TAB$_kernel_initialize_mempfix();$NL$$END$
+$IF LENGTH(CYC.ID_LIST)$$TAB$_kernel_initialize_cyclic();$NL$$END$
+$IF LENGTH(ALM.ID_LIST)$$TAB$_kernel_initialize_alarm();$NL$$END$
+$TAB$_kernel_initialize_interrupt();$NL$
+$TAB$_kernel_initialize_exception();$NL$
+}$NL$
+$NL$
+
+$ 
+$  œéŽü²œ¥ë¡Œ¥Á¥ó€ÎŒÂ¹ÔŽØ¿ô
+$ 
+/*$NL$
+$SPC$*  Initialization Routine$NL$
+$SPC$*/$NL$
+$NL$
+void$NL$
+_kernel_call_inirtn(void)$NL$
+{$NL$
+$FOREACH order INI.ORDER_LIST$
+$ 	// iniatr€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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$
+
+$ 
+$  œªÎ»œèÍý¥ë¡Œ¥Á¥ó€ÎŒÂ¹ÔŽØ¿ô
+$ 
+/*$NL$
+$SPC$*  Termination Routine$NL$
+$SPC$*/$NL$
+$NL$
+void$NL$
+_kernel_call_terrtn(void)$NL$
+{$NL$
+$FOREACH rorder TER.RORDER_LIST$
+$ 	// teratr€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
+	$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: /kernel/kernel_api.csv
===================================================================
--- /kernel/kernel_api.csv	(revision 7)
+++ /kernel/kernel_api.csv	(revision 7)
@@ -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 },,
+exc,DEF_EXC,.excno { .excatr &exchdr },,
+ics,DEF_ICS,{ .istksz &istk },-1,
+ini,ATT_INI,{ .iniatr &exinf &inirtn },-1,
+ter,ATT_TER,{ .teratr &exinf &terrtn },-1,
Index: /kernel/kernel_check.tf
===================================================================
--- /kernel/kernel_check.tf	(revision 7)
+++ /kernel/kernel_check.tf	(revision 7)
@@ -0,0 +1,182 @@
+$ ======================================================================
+$ 
+$   TOPPERS/ASP Kernel
+$       Toyohashi Open Platform for Embedded Real-Time Systems/
+$       Advanced Standard Profile Kernel
+$ 
+$   Copyright (C) 2008-2013 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$
+$  
+$ =====================================================================
+
+$
+$  ¥Ç¡Œ¥¿¥»¥¯¥·¥ç¥ó€ÎLMA€«€éVMA€Ø€Î¥³¥Ô¡Œ
+$
+$FOREACH lma LMA.ORDER_LIST$
+	$start_data = SYMBOL(LMA.START_DATA[lma])$
+	$end_data = SYMBOL(LMA.END_DATA[lma])$
+	$start_idata = SYMBOL(LMA.START_IDATA[lma])$
+	$IF !LENGTH(start_data)$
+		$ERROR$$FORMAT(_("symbol '%1%' not found"), LMA.START_DATA[lma])$$END$
+	$ELIF !LENGTH(end_data)$
+		$ERROR$$FORMAT(_("symbol '%1%' not found"), LMA.END_DATA[lma])$$END$
+	$ELIF !LENGTH(start_idata)$
+		$ERROR$$FORMAT(_("symbol '%1%' not found"), LMA.START_IDATA[lma])$$END$
+	$ELSE$
+		$BCOPY(start_idata, start_data, end_data - start_data)$
+	$END$
+$END$
+
+$ 
+$  ŽØ¿ô€ÎÀèÆ¬ÈÖÃÏ€Î¥Á¥§¥Ã¥¯
+$ 
+$IF CHECK_FUNC_ALIGN || CHECK_FUNC_NONNULL$
+$	// ¥¿¥¹¥¯€È¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎÀèÆ¬ÈÖÃÏ€Î¥Á¥§¥Ã¥¯
+	$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$
+
+$	// ŒþŽü¥Ï¥ó¥É¥é€ÎÀèÆ¬ÈÖÃÏ€Î¥Á¥§¥Ã¥¯
+	$cycinib = SYMBOL("_kernel_cycinib_table")$
+	$FOREACH cycid CYC.ID_LIST$
+		$cychdr = PEEK(cycinib + offsetof_CYCINIB_cychdr, sizeof_FP)$
+		$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$
+
+$	// ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ÎÀèÆ¬ÈÖÃÏ€Î¥Á¥§¥Ã¥¯
+	$alminib = SYMBOL("_kernel_alminib_table")$
+	$FOREACH almid ALM.ID_LIST$
+		$almhdr = PEEK(alminib + offsetof_ALMINIB_almhdr, sizeof_FP)$
+		$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$
+
+$ 
+$  ¥¹¥¿¥Ã¥¯ÎÎ°è€ÎÀèÆ¬ÈÖÃÏ€Î¥Á¥§¥Ã¥¯
+$ 
+$IF CHECK_STACK_ALIGN || CHECK_STACK_NONNULL$
+$	// ¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯ÎÎ°è€ÎÀèÆ¬ÈÖÃÏ€Î¥Á¥§¥Ã¥¯
+	$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$
+
+$	// Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ€Î¥¹¥¿¥Ã¥¯ÎÎ°è€ÎÀèÆ¬ÈÖÃÏ€Î¥Á¥§¥Ã¥¯
+	$istk = PEEK(SYMBOL("_kernel_istk"), sizeof_void_ptr)$
+	$IF CHECK_STACK_ALIGN && (istk & (CHECK_STACK_ALIGN - 1)) != 0$
+		$ERROR ICS.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 ICS.TEXT_LINE[1]$E_PAR: 
+			$FORMAT(_("%1% `%2%\' in %3% is null"),
+			"istk", ICS.ISTK[1], "DEF_ICS")$$END$
+	$END$
+$END$
+
+$ 
+$  žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÎÎ°è€ÎÀèÆ¬ÈÖÃÏ€Î¥Á¥§¥Ã¥¯
+$ 
+$IF CHECK_MPF_ALIGN || CHECK_MPF_NONNULL$
+$	// žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÎÎ°è€ÎÀèÆ¬ÈÖÃÏ€Î¥Á¥§¥Ã¥¯
+	$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: /kernel/kernel_def.csv
===================================================================
--- /kernel/kernel_def.csv	(revision 7)
+++ /kernel/kernel_def.csv	(revision 7)
@@ -0,0 +1,111 @@
+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
+TBIT_TEXPTN,TBIT_TEXPTN
+TBIT_FLGPTN,TBIT_FLGPTN
+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
+TARGET_MIN_ISTKSZ,#defined(TARGET_MIN_ISTKSZ),,TARGET_MIN_ISTKSZ
+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: /kernel/kernel_impl.h
===================================================================
--- /kernel/kernel_impl.h	(revision 7)
+++ /kernel/kernel_impl.h	(revision 7)
@@ -0,0 +1,180 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		TOPPERS/ASP¥«¡Œ¥Í¥ëÆâÉôžþ€±Éžœà¥Ø¥Ã¥À¥Õ¥¡¥€¥ë
+ *
+ *  €³€Î¥Ø¥Ã¥À¥Õ¥¡¥€¥ë€Ï¡€¥«¡Œ¥Í¥ë€ò¹œÀ®€¹€ë¥×¥í¥°¥é¥à€Î¥œ¡Œ¥¹¥Õ¥¡¥€¥ë
+ *  €ÇÉ¬€º¥€¥ó¥¯¥ë¡Œ¥É€¹€ë€Ù€­Éžœà¥Ø¥Ã¥À¥Õ¥¡¥€¥ë€Ç€¢€ë¡¥
+ *
+ *  ¥¢¥»¥ó¥Ö¥êžÀžì€Î¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€«€é€³€Î¥Õ¥¡¥€¥ë€ò¥€¥ó¥¯¥ë¡Œ¥É€¹€ë»þ
+ *  €Ï¡€TOPPERS_MACRO_ONLY€òÄêµÁ€·€Æ€ª€¯¡¥€³€ì€Ë€è€ê¡€¥Þ¥¯¥íÄêµÁ°Ê³°€ò
+ *  œü€¯€è€Š€Ë€Ê€Ã€Æ€€€ë¡¥
+ */
+
+#ifndef TOPPERS_KERNEL_IMPL_H
+#define TOPPERS_KERNEL_IMPL_H
+
+/*
+ *  ¥«¡Œ¥Í¥ë€ÎÆâÉôŒ±ÊÌÌŸ€Î¥ê¥Í¡Œ¥à
+ */
+#include "kernel_rename.h"
+
+/*
+ *  ¥¢¥×¥ê¥±¡Œ¥·¥ç¥ó€È¶ŠÄÌ€Î¥Ø¥Ã¥À¥Õ¥¡¥€¥ë
+ */
+#include <kernel.h>
+
+/*
+ *  ¥·¥¹¥Æ¥à¥í¥°µ¡Çœ€Î€¿€á€ÎÄêµÁ
+ */
+#include <t_syslog.h>
+
+/*
+ *  ·¿¥­¥ã¥¹¥È€ò¹Ô€Š¥Þ¥¯¥í€ÎÄêµÁ
+ */
+#ifndef CAST
+#define CAST(type, val)		((type)(val))
+#endif /* CAST */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂžŸðÊó€ÎÄêµÁ
+ */
+#include "target_config.h"
+
+/*
+ *  €¹€Ù€Æ€ÎŽØ¿ô€ò¥³¥ó¥Ñ¥€¥ë€¹€ë€¿€á€ÎÄêµÁ
+ */
+#ifdef ALLFUNC
+#include "allfunc.h"
+#endif /* ALLFUNC */
+
+/*
+ *  ¥Ó¥Ã¥È¥Õ¥£¡Œ¥ë¥É€Ç€ÎÉä¹æÌµ€·À°¿ô·¿
+ *
+ *  8¥Ó¥Ã¥È°Ê²Œ€ÎÉý€Î¥Ó¥Ã¥È¥Õ¥£¡Œ¥ë¥É€Ç¡€Éä¹æÌµ€·À°¿ôÃÍ€òÊÝ»ý€·€¿€€Ÿì¹ç
+ *  €ËÍÑ€€€ë€Ù€­¥Ç¡Œ¥¿·¿¡¥ANSI C€Ç€Ï¡€¥Ó¥Ã¥È¥Õ¥£¡Œ¥ë¥É€Î¥Ç¡Œ¥¿·¿€Ë€Ï
+ *  int€Èunsigned int€·€«µö€µ€ì€Ê€€€¿€á¡€¥Ç¥Õ¥©¥ë¥È€ÎÄêµÁ€Ïunsigned
+ *  int€È€·€Æ€€€ë€¬¡€¥¿¡Œ¥²¥Ã¥È€ª€è€Ó¥Ä¡Œ¥ë°ÍÂž€Ç¡€unsigned char€Þ€¿€Ï
+ *  unsigned short€ËÄêµÁ€·€¿Êý€¬žúÎš€¬ÎÉ€€Ÿì¹ç€¬€¢€ë¡¥
+ */
+#ifndef BIT_FIELD_UINT
+#define BIT_FIELD_UINT		unsigned int
+#endif /* BIT_FIELD_UINT */
+
+/*
+ *  ¥Ó¥Ã¥È¥Õ¥£¡Œ¥ë¥É€Ç€Î¥Ö¡Œ¥ë·¿
+ *
+ *  1¥Ó¥Ã¥ÈÉý€Î¥Ó¥Ã¥È¥Õ¥£¡Œ¥ë¥É€Ç¡€¥Ö¡Œ¥ëÃÍ€òÊÝ»ý€·€¿€€Ÿì¹ç€ËÍÑ€€€ë€Ù€­
+ *  ¥Ç¡Œ¥¿·¿¡¥¥Ç¥Õ¥©¥ë¥È€Ç€ÏBIT_FIELD_UINT€ÈÆ±°ì€ËÄêµÁ€·€Æ€€€ë€¬¡€¥Ö¡Œ
+ *  ¥ëÃÍ€òÊÝ»ý€¹€ë€³€È€òÌÀŒš€¹€ë€¿€á€ËÊÌ€ÎÌŸŸÎ€È€·€Æ€€€ë¡¥
+ */
+#ifndef BIT_FIELD_BOOL
+#define BIT_FIELD_BOOL		BIT_FIELD_UINT
+#endif /* BIT_FIELD_BOOL */
+
+/*
+ *  ¥ª¥Ö¥ž¥§¥¯¥ÈID€ÎºÇŸ®ÃÍ€ÎÄêµÁ
+ */
+#define TMIN_TSKID		1		/* ¥¿¥¹¥¯ID€ÎºÇŸ®ÃÍ */
+#define TMIN_SEMID		1		/* ¥»¥Þ¥Õ¥©ID€ÎºÇŸ®ÃÍ */
+#define TMIN_FLGID		1		/* ¥Õ¥é¥°ID€ÎºÇŸ®ÃÍ */
+#define TMIN_DTQID		1		/* ¥Ç¡Œ¥¿¥­¥å¡ŒID€ÎºÇŸ®ÃÍ */
+#define TMIN_PDQID		1		/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒID€ÎºÇŸ®ÃÍ */
+#define TMIN_MBXID		1		/* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹ID€ÎºÇŸ®ÃÍ */
+#define TMIN_MPFID		1		/* žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëID€ÎºÇŸ®ÃÍ */
+#define TMIN_CYCID		1		/* ŒþŽü¥Ï¥ó¥É¥éID€ÎºÇŸ®ÃÍ */
+#define TMIN_ALMID		1		/* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éID€ÎºÇŸ®ÃÍ */
+
+/*
+ *  Í¥ÀèÅÙ€ÎÃÊ³¬¿ô€ÎÄêµÁ
+ */
+#define TNUM_TPRI		(TMAX_TPRI - TMIN_TPRI + 1)
+#define TNUM_MPRI		(TMAX_MPRI - TMIN_MPRI + 1)
+#define TNUM_INTPRI		(TMAX_INTPRI - TMIN_INTPRI + 1)
+
+/*
+ *  ¥Ø¥Ã¥À¥Õ¥¡¥€¥ë€ò»ý€¿€Ê€€¥â¥ž¥å¡Œ¥ë€ÎŽØ¿ô¡ŠÊÑ¿ô€ÎÀëžÀ
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  ³Æ¥â¥ž¥å¡Œ¥ë€ÎœéŽü²œ¡Êkernel_cfg.c¡Ë
+ */
+extern void	initialize_object(void);
+
+/*
+ *  œéŽü²œ¥ë¡Œ¥Á¥ó€ÎŒÂ¹Ô¡Êkernel_cfg.c¡Ë
+ */
+extern void	call_inirtn(void);
+
+/*
+ *  œªÎ»œèÍý¥ë¡Œ¥Á¥ó€ÎŒÂ¹Ô¡Êkernel_cfg.c¡Ë
+ */
+extern void	call_terrtn(void);
+
+/*
+ *  Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ€Î¥¹¥¿¥Ã¥¯ÎÎ°è¡Êkernel_cfg.c¡Ë
+ */
+extern const SIZE	istksz;		/* ¥¹¥¿¥Ã¥¯ÎÎ°è€Î¥µ¥€¥º¡ÊŽÝ€á€¿ÃÍ¡Ë */
+extern STK_T *const	istk;		/* ¥¹¥¿¥Ã¥¯ÎÎ°è€ÎÀèÆ¬ÈÖÃÏ */
+#ifdef TOPPERS_ISTKPT
+extern STK_T *const	istkpt;		/* ¥¹¥¿¥Ã¥¯¥Ý¥€¥ó¥¿€ÎœéŽüÃÍ */
+#endif /* TOPPERS_ISTKPT */
+
+/*
+ *  ¥«¡Œ¥Í¥ëÆ°ºîŸõÂÖ¥Õ¥é¥°¡Êstartup.c¡Ë
+ */
+extern bool_t	kerflg;
+
+/*
+ *  ¥«¡Œ¥Í¥ë€Îµ¯Æ°¡Êstartup.c¡Ë
+ */
+extern void	sta_ker(void);
+
+/*
+ *  ¥«¡Œ¥Í¥ë€ÎœªÎ»œèÍý¡Êstartup.c¡Ë
+ */
+extern void	exit_kernel(void);
+
+#endif /* TOPPERS_MACRO_ONLY */
+#endif /* TOPPERS_KERNEL_IMPL_H */
Index: /kernel/kernel_int.h
===================================================================
--- /kernel/kernel_int.h	(revision 7)
+++ /kernel/kernel_int.h	(revision 7)
@@ -0,0 +1,83 @@
+/*
+ *  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-2012 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		kernel_cfg.c¡Ê€ª€è€Ócfg1_out.c¡ËÍÑ¥Ø¥Ã¥À¥Õ¥¡¥€¥ë
+ */
+
+#ifndef TOPPERS_KERNEL_INT_H
+#define TOPPERS_KERNEL_INT_H
+
+/*
+ *  ¥«¡Œ¥Í¥ëÉžœà¥Ø¥Ã¥À¥Õ¥¡¥€¥ë
+ */
+#include "kernel_impl.h"
+
+/*
+ *  ¥«¡Œ¥Í¥ë€Î³Æ¥Ø¥Ã¥À¥Õ¥¡¥€¥ë
+ */
+#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"
+
+/*
+ *  ¥ê¥Í¡Œ¥à€·€¿¥·¥ó¥Ü¥ë€òžµ€ËÌá€¹€¿€á€Î¥Ø¥Ã¥À¥Õ¥¡¥€¥ë
+ */
+#include "kernel_unrename.h"
+
+/*
+ *  ÆâÍÆ€¬¶õ€ÎÇÛÎó€òÀžÀ®€¹€ë€¿€á€Î¥Þ¥¯¥í
+ */
+#ifndef TOPPERS_EMPTY_LABEL
+#define TOPPERS_EMPTY_LABEL(type, var)		type var[0]
+#endif
+
+#endif /* TOPPERS_KERNEL_INT_H */
Index: /kernel/kernel_rename.def
===================================================================
--- /kernel/kernel_rename.def	(revision 7)
+++ /kernel/kernel_rename.def	(revision 7)
@@ -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
+dtqinib_table
+dtqcb_table
+tmax_pdqid
+pdqinib_table
+pdqcb_table
+tmax_mbxid
+mbxinib_table
+mbxcb_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: /kernel/kernel_rename.h
===================================================================
--- /kernel/kernel_rename.h	(revision 7)
+++ /kernel/kernel_rename.h	(revision 7)
@@ -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 dtqinib_table				_kernel_dtqinib_table
+#define dtqcb_table					_kernel_dtqcb_table
+#define tmax_pdqid					_kernel_tmax_pdqid
+#define pdqinib_table				_kernel_pdqinib_table
+#define pdqcb_table					_kernel_pdqcb_table
+#define tmax_mbxid					_kernel_tmax_mbxid
+#define mbxinib_table				_kernel_mbxinib_table
+#define mbxcb_table					_kernel_mbxcb_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 _dtqinib_table				__kernel_dtqinib_table
+#define _dtqcb_table				__kernel_dtqcb_table
+#define _tmax_pdqid					__kernel_tmax_pdqid
+#define _pdqinib_table				__kernel_pdqinib_table
+#define _pdqcb_table				__kernel_pdqcb_table
+#define _tmax_mbxid					__kernel_tmax_mbxid
+#define _mbxinib_table				__kernel_mbxinib_table
+#define _mbxcb_table				__kernel_mbxcb_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: /kernel/kernel_unrename.h
===================================================================
--- /kernel/kernel_unrename.h	(revision 7)
+++ /kernel/kernel_unrename.h	(revision 7)
@@ -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 dtqinib_table
+#undef dtqcb_table
+#undef tmax_pdqid
+#undef pdqinib_table
+#undef pdqcb_table
+#undef tmax_mbxid
+#undef mbxinib_table
+#undef mbxcb_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 _dtqinib_table
+#undef _dtqcb_table
+#undef _tmax_pdqid
+#undef _pdqinib_table
+#undef _pdqcb_table
+#undef _tmax_mbxid
+#undef _mbxinib_table
+#undef _mbxcb_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: /kernel/mailbox.c
===================================================================
--- /kernel/mailbox.c	(revision 7)
+++ /kernel/mailbox.c	(revision 7)
@@ -0,0 +1,394 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹µ¡Çœ
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+#include "mailbox.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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 */
+
+/*
+ *  ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€Î¿ô
+ */
+#define tnum_mbx	((uint_t)(tmax_mbxid - TMIN_MBXID + 1))
+
+/*
+ *  ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹ID€«€é¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹ŽÉÍý¥Ö¥í¥Ã¥¯€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#define INDEX_MBX(mbxid)	((uint_t)((mbxid) - TMIN_MBXID))
+#define get_mbxcb(mbxid)	(&(mbxcb_table[INDEX_MBX(mbxid)]))
+
+/* 
+ *  ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹µ¡Çœ€ÎœéŽü²œ
+ */
+#ifdef TOPPERS_mbxini
+
+void
+initialize_mailbox(void)
+{
+	uint_t	i;
+	MBXCB	*p_mbxcb;
+
+	for (i = 0; i < tnum_mbx; i++) {
+		p_mbxcb = &(mbxcb_table[i]);
+		queue_initialize(&(p_mbxcb->wait_queue));
+		p_mbxcb->p_mbxinib = &(mbxinib_table[i]);
+		p_mbxcb->pk_head = NULL;
+	}
+}
+
+#endif /* TOPPERS_mbxini */
+
+/*
+ *  ¥á¥Ã¥»¡Œ¥žÍ¥ÀèÅÙ€ÎŒèœÐ€·
+ */
+#define	MSGPRI(pk_msg)	(((T_MSG_PRI *)(pk_msg))->msgpri)
+
+/*
+ *  Í¥ÀèÅÙœç¥á¥Ã¥»¡Œ¥ž¥­¥å¡Œ€Ø€ÎÁÞÆþ
+ */
+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;
+}
+
+/*
+ *  ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€Ø€ÎÁ÷¿®
+ */
+#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 */
+
+/*
+ *  ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€«€é€ÎŒõ¿®
+ */
+#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 */
+
+/*
+ *  ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€«€é€ÎŒõ¿®¡Ê¥Ý¡Œ¥ê¥ó¥°¡Ë
+ */
+#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 */
+
+/*
+ *  ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€«€é€ÎŒõ¿®¡Ê¥¿¥€¥à¥¢¥Š¥È€¢€ê¡Ë
+ */
+#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 */
+
+/*
+ *  ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€ÎºÆœéŽü²œ
+ */
+#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 */
+
+/*
+ *  ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€ÎŸõÂÖ»²ŸÈ
+ */
+#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: /kernel/mailbox.h
===================================================================
--- /kernel/mailbox.h	(revision 7)
+++ /kernel/mailbox.h	(revision 7)
@@ -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-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$
+ */
+
+/*
+ *		¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹µ¡Çœ
+ */
+
+#ifndef TOPPERS_MAILBOX_H
+#define TOPPERS_MAILBOX_H
+
+#include "wait.h"
+
+/*
+ *  ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹œéŽü²œ¥Ö¥í¥Ã¥¯
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎœéŽü²œ¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬
+ *  ¡ÊWOBJINIB¡Ë€ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀžì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç¡€
+ *  ºÇœé€Î¥Õ¥£¡Œ¥ë¥É€¬¶ŠÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥
+ */
+typedef struct mailbox_initialization_block {
+	ATR			mbxatr;			/* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹Â°À­ */
+	PRI			maxmpri;		/* ¥á¥Ã¥»¡Œ¥žÍ¥ÀèÅÙ€ÎºÇÂçÃÍ */
+} MBXINIB;
+
+/*
+ *  ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹ŽÉÍý¥Ö¥í¥Ã¥¯
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬¡ÊWOBJCB¡Ë
+ *  €ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀžì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç¡€ºÇœé€Î2€Ä€Î
+ *  ¥Õ¥£¡Œ¥ë¥É€¬¶ŠÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥
+ *
+ *  ¥á¥Ã¥»¡Œ¥ž¥­¥å¡Œ€¬¥á¥Ã¥»¡Œ¥ž€ÎÍ¥ÀèÅÙœç€ÎŸì¹ç€Ë€Ï¡€pk_last€Ï»È€ï€Ê
+ *  €€¡¥€Þ€¿¡€¥á¥Ã¥»¡Œ¥ž¥­¥å¡Œ€¬¶õ€ÎŸì¹ç¡Êpk_head€¬NULL€ÎŸì¹ç¡Ë€Ë€â¡€
+ *  pk_last€ÏÌµžú€Ç€¢€ë¡¥
+ */
+typedef struct mailbox_control_block {
+	QUEUE		wait_queue;		/* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹ÂÔ€Á¥­¥å¡Œ */
+	const MBXINIB *p_mbxinib;	/* œéŽü²œ¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿ */
+	T_MSG		*pk_head;		/* ÀèÆ¬€Î¥á¥Ã¥»¡Œ¥ž */
+	T_MSG		*pk_last;		/* ËöÈø€Î¥á¥Ã¥»¡Œ¥ž */
+} MBXCB;
+
+/*
+ *  ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹ÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯€ÎÄêµÁ
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬
+ *  ¡ÊWINFO_WOBJ¡Ë€ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀžì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç¡€
+ *  ºÇœé€Î2€Ä€Î¥Õ¥£¡Œ¥ë¥É€¬¶ŠÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥
+ */
+typedef struct mailbox_waiting_information {
+	WINFO		winfo;			/* Éžœà€ÎÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯ */
+	MBXCB		*p_mbxcb;		/* ÂÔ€Ã€Æ€€€ë¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€ÎŽÉÍý¥Ö¥í¥Ã¥¯ */
+	T_MSG		*pk_msg;		/* Œõ¿®€·€¿¥á¥Ã¥»¡Œ¥ž */
+} WINFO_MBX;
+
+/*
+ *  ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹ID€ÎºÇÂçÃÍ¡Êkernel_cfg.c¡Ë
+ */
+extern const ID	tmax_mbxid;
+
+/*
+ *  ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹œéŽü²œ¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern const MBXINIB	mbxinib_table[];
+
+/*
+ *  ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹ŽÉÍý¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern MBXCB	mbxcb_table[];
+
+/*
+ *  ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹ŽÉÍý¥Ö¥í¥Ã¥¯€«€é¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹ID€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#define	MBXID(p_mbxcb)	((ID)(((p_mbxcb) - mbxcb_table) + TMIN_MBXID))
+
+/*
+ *  ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹µ¡Çœ€ÎœéŽü²œ
+ */
+extern void	initialize_mailbox(void);
+
+#endif /* TOPPERS_MAILBOX_H */
Index: /kernel/mempfix.c
===================================================================
--- /kernel/mempfix.c	(revision 7)
+++ /kernel/mempfix.c	(revision 7)
@@ -0,0 +1,401 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëµ¡Çœ
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+#include "mempfix.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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 */
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ë€Î¿ô
+ */
+#define tnum_mpf	((uint_t)(tmax_mpfid - TMIN_MPFID + 1))
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëID€«€éžÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëŽÉÍý¥Ö¥í¥Ã¥¯€òŒè€êœÐ€¹€¿
+ *  €á€Î¥Þ¥¯¥í
+ */
+#define INDEX_MPF(mpfid)	((uint_t)((mpfid) - TMIN_MPFID))
+#define get_mpfcb(mpfid)	(&(mpfcb_table[INDEX_MPF(mpfid)]))
+
+/*
+ *  ÆÃŒì€Ê¥€¥ó¥Ç¥Ã¥¯¥¹ÃÍ€ÎÄêµÁ
+ */
+#define INDEX_NULL		(~0U)		/* ¶õ€­¥Ö¥í¥Ã¥¯¥ê¥¹¥È€ÎºÇžå */
+#define INDEX_ALLOC		(~1U)		/* ³äÅö€ÆºÑ€ß€Î¥Ö¥í¥Ã¥¯ */
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëµ¡Çœ€ÎœéŽü²œ
+ */
+#ifdef TOPPERS_mpfini
+
+void
+initialize_mempfix(void)
+{
+	uint_t	i;
+	MPFCB	*p_mpfcb;
+
+	for (i = 0; i < tnum_mpf; i++) {
+		p_mpfcb = &(mpfcb_table[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 */
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ë€«€é¥Ö¥í¥Ã¥¯€ò³ÍÆÀ
+ */
+#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 */
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥Ö¥í¥Ã¥¯€Î³ÍÆÀ
+ */
+#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 */
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥Ö¥í¥Ã¥¯€Î³ÍÆÀ¡Ê¥Ý¡Œ¥ê¥ó¥°¡Ë
+ */
+#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 */
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥Ö¥í¥Ã¥¯€Î³ÍÆÀ¡Ê¥¿¥€¥à¥¢¥Š¥È€¢€ê¡Ë
+ */
+#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 */
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥Ö¥í¥Ã¥¯€ÎÊÖµÑ
+ */
+#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 */
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ë€ÎºÆœéŽü²œ
+ */
+#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 */
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ë€ÎŸõÂÖ»²ŸÈ
+ */
+#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: /kernel/mempfix.h
===================================================================
--- /kernel/mempfix.h	(revision 7)
+++ /kernel/mempfix.h	(revision 7)
@@ -0,0 +1,137 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëµ¡Çœ
+ */
+
+#ifndef TOPPERS_MEMPFIX_H
+#define TOPPERS_MEMPFIX_H
+
+#include "wait.h"
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥Ö¥í¥Ã¥¯ŽÉÍý¥Ö¥í¥Ã¥¯
+ *
+ *  next¥Õ¥£¡Œ¥ë¥É€Ë€Ï¡€¥á¥â¥ê¥Ö¥í¥Ã¥¯€¬³äÅö€ÆºÑ€ß€ÎŸì¹ç€ÏINDEX_ALLOC€ò¡€
+ *  Ì€³äÅö€Æ€ÎŸì¹ç€ÏŒ¡€ÎÌ€³äÅö€Æ¥Ö¥í¥Ã¥¯€Î¥€¥ó¥Ç¥Ã¥¯¥¹ÈÖ¹æ€ò³ÊÇŒ€¹€ë¡¥
+ *  ºÇžå€ÎÌ€³äÅö€Æ¥Ö¥í¥Ã¥¯€ÎŸì¹ç€Ë€Ï¡€INDEX_NULL€ò³ÊÇŒ€¹€ë¡¥
+ */
+typedef struct fixed_memoryblock_management_block {
+	uint_t		next;			/* Œ¡€ÎÌ€³äÅö€Æ¥Ö¥í¥Ã¥¯ */
+} MPFMB;
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëœéŽü²œ¥Ö¥í¥Ã¥¯
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎœéŽü²œ¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬
+ *  ¡ÊWOBJINIB¡Ë€ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀžì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç¡€
+ *  ºÇœé€Î¥Õ¥£¡Œ¥ë¥É€¬¶ŠÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥
+ */
+typedef struct fixed_memorypool_initialization_block {
+	ATR			mpfatr;			/* žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÂ°À­ */
+	uint_t		blkcnt;			/* ¥á¥â¥ê¥Ö¥í¥Ã¥¯¿ô */
+	uint_t		blksz;			/* ¥á¥â¥ê¥Ö¥í¥Ã¥¯€Î¥µ¥€¥º¡ÊŽÝ€á€¿ÃÍ¡Ë */
+	void		*mpf;			/* žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÎÎ°è€ÎÀèÆ¬ÈÖÃÏ */
+	MPFMB		*p_mpfmb;		/* žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëŽÉÍýÎÎ°è€ÎÀèÆ¬ÈÖÃÏ */
+} MPFINIB;
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëŽÉÍý¥Ö¥í¥Ã¥¯
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬¡ÊWOBJCB¡Ë
+ *  €ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀžì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç¡€ºÇœé€Î2€Ä€Î
+ *  ¥Õ¥£¡Œ¥ë¥É€¬¶ŠÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥
+ */
+typedef struct fixed_memorypool_control_block {
+	QUEUE		wait_queue;		/* žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÂÔ€Á¥­¥å¡Œ */
+	const MPFINIB *p_mpfinib;	/* œéŽü²œ¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿ */
+	uint_t		fblkcnt;		/* Ì€³äÅö€Æ¥Ö¥í¥Ã¥¯¿ô */
+	uint_t		unused;			/* Ì€»ÈÍÑ¥Ö¥í¥Ã¥¯€ÎÀèÆ¬ */
+	uint_t		freelist;		/* Ì€³äÅö€Æ¥Ö¥í¥Ã¥¯€Î¥ê¥¹¥È */
+} MPFCB;
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯€ÎÄêµÁ
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬
+ *  ¡ÊWINFO_WOBJ¡Ë€ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀžì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç¡€
+ *  ºÇœé€Î2€Ä€Î¥Õ¥£¡Œ¥ë¥É€¬¶ŠÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥
+ */
+typedef struct fixed_memorypool_waiting_information {
+	WINFO		winfo;			/* Éžœà€ÎÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯ */
+	MPFCB		*p_mpfcb;		/* ÂÔ€Ã€Æ€€€ëžÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ë€ÎŽÉÍý¥Ö¥í¥Ã¥¯*/
+	void		*blk;			/* ³ÍÆÀ€·€¿¥á¥â¥ê¥Ö¥í¥Ã¥¯ */
+} WINFO_MPF;
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëID€ÎºÇÂçÃÍ¡Êkernel_cfg.c¡Ë
+ */
+extern const ID	tmax_mpfid;
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëœéŽü²œ¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern const MPFINIB	mpfinib_table[];
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëŽÉÍý¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern MPFCB	mpfcb_table[];
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëŽÉÍý¥Ö¥í¥Ã¥¯€«€éžÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëID€òŒè€êœÐ€¹€¿
+ *  €á€Î¥Þ¥¯¥í
+ */
+#define	MPFID(p_mpfcb)	((ID)(((p_mpfcb) - mpfcb_table) + TMIN_MPFID))
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëµ¡Çœ€ÎœéŽü²œ
+ */
+extern void	initialize_mempfix(void);
+
+/*
+ *  žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ë€«€é¥Ö¥í¥Ã¥¯€ò³ÍÆÀ
+ */
+extern void	get_mpf_block(MPFCB *p_mpfcb, void **p_blk);
+
+#endif /* TOPPERS_MEMPFIX_H */
Index: /kernel/pridataq.c
===================================================================
--- /kernel/pridataq.c	(revision 7)
+++ /kernel/pridataq.c	(revision 7)
@@ -0,0 +1,663 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2013 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œµ¡Çœ
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+#include "pridataq.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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 */
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€Î¿ô
+ */
+#define tnum_pdq	((uint_t)(tmax_pdqid - TMIN_PDQID + 1))
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒID€«€éÍ¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍý¥Ö¥í¥Ã¥¯€òŒè€êœÐ€¹€¿
+ *  €á€Î¥Þ¥¯¥í
+ */
+#define INDEX_PDQ(pdqid)	((uint_t)((pdqid) - TMIN_PDQID))
+#define get_pdqcb(pdqid)	(&(pdqcb_table[INDEX_PDQ(pdqid)]))
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œµ¡Çœ€ÎœéŽü²œ
+ */
+#ifdef TOPPERS_pdqini
+
+void
+initialize_pridataq(void)
+{
+	uint_t	i;
+	PDQCB	*p_pdqcb;
+
+	for (i = 0; i < tnum_pdq; i++) {
+		p_pdqcb = &(pdqcb_table[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 */
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€Ø€Î¥Ç¡Œ¥¿€Î³ÊÇŒ
+ */
+#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 */
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€«€é€Î¥Ç¡Œ¥¿€ÎŒèœÐ€·
+ */
+#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 */
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€Î¥Ç¡Œ¥¿Á÷¿®
+ */
+#ifdef TOPPERS_pdqsnd
+
+bool_t
+send_pridata(PDQCB *p_pdqcb, intptr_t data, PRI datapri, bool_t *p_dspreq)
+{
+	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_dspreq = wait_complete(p_tcb);
+		return(true);
+	}
+	else if (p_pdqcb->count < p_pdqcb->p_pdqinib->pdqcnt) {
+		enqueue_pridata(p_pdqcb, data, datapri);
+		*p_dspreq = false;
+		return(true);
+	}
+	else {
+		return(false);
+	}
+}
+
+#endif /* TOPPERS_pdqsnd */
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€Î¥Ç¡Œ¥¿Œõ¿®
+ */
+#ifdef TOPPERS_pdqrcv
+
+bool_t
+receive_pridata(PDQCB *p_pdqcb, intptr_t *p_data,
+									PRI *p_datapri, bool_t *p_dspreq)
+{
+	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_dspreq = wait_complete(p_tcb);
+		}
+		else {
+			*p_dspreq = 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_dspreq = wait_complete(p_tcb);
+		return(true);
+	}
+	else {
+		return(false);
+	}
+}
+
+#endif /* TOPPERS_pdqrcv */
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®
+ */
+#ifdef TOPPERS_snd_pdq
+
+ER
+snd_pdq(ID pdqid, intptr_t data, PRI datapri)
+{
+	PDQCB	*p_pdqcb;
+	WINFO_PDQ winfo_pdq;
+	bool_t	dspreq;
+	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, &dspreq)) {
+		if (dspreq) {
+			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 */
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®¡Ê¥Ý¡Œ¥ê¥ó¥°¡Ë
+ */
+#ifdef TOPPERS_psnd_pdq
+
+ER
+psnd_pdq(ID pdqid, intptr_t data, PRI datapri)
+{
+	PDQCB	*p_pdqcb;
+	bool_t	dspreq;
+	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, &dspreq)) {
+		if (dspreq) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_TMOUT;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_PSND_PDQ_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_psnd_pdq */
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®¡Ê¥Ý¡Œ¥ê¥ó¥°¡€Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ */
+#ifdef TOPPERS_ipsnd_pdq
+
+ER
+ipsnd_pdq(ID pdqid, intptr_t data, PRI datapri)
+{
+	PDQCB	*p_pdqcb;
+	bool_t	dspreq;
+	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, &dspreq)) {
+		if (dspreq) {
+			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 */
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®¡Ê¥¿¥€¥à¥¢¥Š¥È€¢€ê¡Ë
+ */
+#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	dspreq;
+	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, &dspreq)) {
+		if (dspreq) {
+			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 */
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®
+ */
+#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	dspreq;
+	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, &dspreq)) {
+		if (dspreq) {
+			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 */
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®¡Ê¥Ý¡Œ¥ê¥ó¥°¡Ë
+ */
+#ifdef TOPPERS_prcv_pdq
+
+ER
+prcv_pdq(ID pdqid, intptr_t *p_data, PRI *p_datapri)
+{
+	PDQCB	*p_pdqcb;
+	bool_t	dspreq;
+	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, &dspreq)) {
+		if (dspreq) {
+			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 */
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®¡Ê¥¿¥€¥à¥¢¥Š¥È€¢€ê¡Ë
+ */
+#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	dspreq;
+	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, &dspreq)) {
+		if (dspreq) {
+			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 */
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎºÆœéŽü²œ
+ */
+#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 */
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎŸõÂÖ»²ŸÈ
+ */
+#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: /kernel/pridataq.h
===================================================================
--- /kernel/pridataq.h	(revision 7)
+++ /kernel/pridataq.h	(revision 7)
@@ -0,0 +1,158 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2013 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œµ¡Çœ
+ */
+
+#ifndef TOPPERS_PRIDATAQ_H
+#define TOPPERS_PRIDATAQ_H
+
+#include "wait.h"
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿ŽÉÍý¥Ö¥í¥Ã¥¯
+ */
+typedef struct pridata_management_block PDQMB;
+
+struct pridata_management_block {
+	PDQMB		*p_next;		/* Œ¡€Î¥Ç¡Œ¥¿ */
+	intptr_t	data;			/* ¥Ç¡Œ¥¿ËÜÂÎ */
+	PRI			datapri;		/* ¥Ç¡Œ¥¿Í¥ÀèÅÙ */
+};
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒœéŽü²œ¥Ö¥í¥Ã¥¯
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎœéŽü²œ¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬
+ *  ¡ÊWOBJINIB¡Ë€ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀžì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç¡€
+ *  ºÇœé€Î¥Õ¥£¡Œ¥ë¥É€¬¶ŠÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥
+ */
+typedef struct pridataq_initialization_block {
+	ATR			pdqatr;			/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒÂ°À­ */
+	uint_t		pdqcnt;			/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎÍÆÎÌ */
+	PRI			maxdpri;		/* ¥Ç¡Œ¥¿Í¥ÀèÅÙ€ÎºÇÂçÃÍ */
+	PDQMB		*p_pdqmb;		/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€ÎÀèÆ¬ÈÖÃÏ */
+} PDQINIB;
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍý¥Ö¥í¥Ã¥¯
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬¡ÊWOBJCB¡Ë
+ *  €ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀžì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç¡€ºÇœé€Î2€Ä€Î
+ *  ¥Õ¥£¡Œ¥ë¥É€¬¶ŠÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥
+ */
+typedef struct pridataq_control_block {
+	QUEUE		swait_queue;	/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒÁ÷¿®ÂÔ€Á¥­¥å¡Œ */
+	const PDQINIB *p_pdqinib;	/* œéŽü²œ¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿ */
+	QUEUE		rwait_queue;	/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŒõ¿®ÂÔ€Á¥­¥å¡Œ */
+	uint_t		count;			/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒÃæ€Î¥Ç¡Œ¥¿€Î¿ô */
+	PDQMB		*p_head;		/* ºÇœé€Î¥Ç¡Œ¥¿ */
+	uint_t		unused;			/* Ì€»ÈÍÑ¥Ç¡Œ¥¿ŽÉÍý¥Ö¥í¥Ã¥¯€ÎÀèÆ¬ */
+	PDQMB		*p_freelist;	/* Ì€³äÅö€Æ¥Ç¡Œ¥¿ŽÉÍý¥Ö¥í¥Ã¥¯€Î¥ê¥¹¥È */
+} PDQCB;
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯€ÎÄêµÁ
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬
+ *  ¡ÊWINFO_WOBJ¡Ë€ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀžì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç¡€
+ *  ºÇœé€Î2€Ä€Î¥Õ¥£¡Œ¥ë¥É€¬¶ŠÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®ÂÔ€Á€ÈÍ¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®ÂÔ€Á€Ç¡€
+ *  Æ±€žÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯€ò»È€Š¡¥
+ */
+typedef struct pridataq_waiting_information {
+	WINFO		winfo;			/* Éžœà€ÎÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯ */
+	PDQCB		*p_pdqcb;		/* ÂÔ€Ã€Æ€€€ëÍ¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎŽÉÍý¥Ö¥í¥Ã¥¯*/
+	intptr_t	data;			/* Á÷Œõ¿®¥Ç¡Œ¥¿ */
+	PRI			datapri;		/* ¥Ç¡Œ¥¿Í¥ÀèÅÙ */
+} WINFO_PDQ;
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒID€ÎºÇÂçÃÍ¡Êkernel_cfg.c¡Ë
+ */
+extern const ID	tmax_pdqid;
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒœéŽü²œ¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern const PDQINIB	pdqinib_table[];
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍý¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern PDQCB	pdqcb_table[];
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍý¥Ö¥í¥Ã¥¯€«€éÍ¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒID€òŒè€êœÐ€¹€¿
+ *  €á€Î¥Þ¥¯¥í
+ */
+#define	PDQID(p_pdqcb)	((ID)(((p_pdqcb) - pdqcb_table) + TMIN_PDQID))
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œµ¡Çœ€ÎœéŽü²œ
+ */
+extern void	initialize_pridataq(void);
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€Ø€Î¥Ç¡Œ¥¿€Î³ÊÇŒ
+ */
+extern void	enqueue_pridata(PDQCB *p_pdqcb, intptr_t data, PRI datapri);
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎÎ°è€«€é€Î¥Ç¡Œ¥¿€ÎŒèœÐ€·
+ */
+extern void	dequeue_pridata(PDQCB *p_pdqcb, intptr_t *p_data, PRI *p_datapri);
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€Î¥Ç¡Œ¥¿Á÷¿®
+ */
+extern bool_t	send_pridata(PDQCB *p_pdqcb, intptr_t data,
+											PRI datapri, bool_t *p_dspreq);
+
+/*
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€Î¥Ç¡Œ¥¿Œõ¿®
+ */
+extern bool_t	receive_pridata(PDQCB *p_pdqcb, intptr_t *p_data,
+											PRI *p_datapri, bool_t *p_dspreq);
+
+#endif /* TOPPERS_PRIDATAQ_H */
Index: /kernel/semaphore.c
===================================================================
--- /kernel/semaphore.c	(revision 7)
+++ /kernel/semaphore.c	(revision 7)
@@ -0,0 +1,399 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥»¥Þ¥Õ¥©µ¡Çœ
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+#include "semaphore.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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 */
+
+/*
+ *  ¥»¥Þ¥Õ¥©€Î¿ô
+ */
+#define tnum_sem	((uint_t)(tmax_semid - TMIN_SEMID + 1))
+
+/*
+ *  ¥»¥Þ¥Õ¥©ID€«€é¥»¥Þ¥Õ¥©ŽÉÍý¥Ö¥í¥Ã¥¯€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#define INDEX_SEM(semid)	((uint_t)((semid) - TMIN_SEMID))
+#define get_semcb(semid)	(&(semcb_table[INDEX_SEM(semid)]))
+
+/* 
+ *  ¥»¥Þ¥Õ¥©µ¡Çœ€ÎœéŽü²œ
+ */
+#ifdef TOPPERS_semini
+
+void
+initialize_semaphore(void)
+{
+	uint_t	i;
+	SEMCB	*p_semcb;
+
+	for (i = 0; i < tnum_sem; i++) {
+		p_semcb = &(semcb_table[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 */
+
+/*
+ *  ¥»¥Þ¥Õ¥©»ñž»€ÎÊÖµÑ
+ */
+#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 */
+
+/*
+ *  ¥»¥Þ¥Õ¥©»ñž»€ÎÊÖµÑ¡ÊÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ */
+#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 */
+
+/*
+ *  ¥»¥Þ¥Õ¥©»ñž»€Î³ÍÆÀ
+ */
+#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 */
+
+/*
+ *  ¥»¥Þ¥Õ¥©»ñž»€Î³ÍÆÀ¡Ê¥Ý¡Œ¥ê¥ó¥°¡Ë
+ */
+#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 */
+
+/*
+ *  ¥»¥Þ¥Õ¥©»ñž»€Î³ÍÆÀ¡Ê¥¿¥€¥à¥¢¥Š¥È€¢€ê¡Ë
+ */
+#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 */
+
+/*
+ *  ¥»¥Þ¥Õ¥©€ÎºÆœéŽü²œ
+ */
+#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 */
+
+/*
+ *  ¥»¥Þ¥Õ¥©€ÎŸõÂÖ»²ŸÈ
+ */
+#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: /kernel/semaphore.h
===================================================================
--- /kernel/semaphore.h	(revision 7)
+++ /kernel/semaphore.h	(revision 7)
@@ -0,0 +1,115 @@
+/*
+ *  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-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$
+ */
+
+/*
+ *		¥»¥Þ¥Õ¥©µ¡Çœ
+ */
+
+#ifndef TOPPERS_SEMAPHORE_H
+#define TOPPERS_SEMAPHORE_H
+
+#include "wait.h"
+
+/*
+ *  ¥»¥Þ¥Õ¥©œéŽü²œ¥Ö¥í¥Ã¥¯
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎœéŽü²œ¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬
+ *  ¡ÊWOBJINIB¡Ë€ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀžì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç¡€
+ *  ºÇœé€Î¥Õ¥£¡Œ¥ë¥É€¬¶ŠÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥
+ */
+typedef struct semaphore_initialization_block {
+	ATR			sematr;			/* ¥»¥Þ¥Õ¥©Â°À­ */
+	uint_t		isemcnt;		/* ¥»¥Þ¥Õ¥©€Î»ñž»¿ô€ÎœéŽüÃÍ */
+	uint_t		maxsem;			/* ¥»¥Þ¥Õ¥©€ÎºÇÂç»ñž»¿ô */
+} SEMINIB;
+
+/*
+ *  ¥»¥Þ¥Õ¥©ŽÉÍý¥Ö¥í¥Ã¥¯
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬¡ÊWOBJCB¡Ë
+ *  €ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀžì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç¡€ºÇœé€Î2€Ä€Î
+ *  ¥Õ¥£¡Œ¥ë¥É€¬¶ŠÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥
+ */
+typedef struct semaphore_control_block {
+	QUEUE		wait_queue;		/* ¥»¥Þ¥Õ¥©ÂÔ€Á¥­¥å¡Œ */
+	const SEMINIB *p_seminib;	/* œéŽü²œ¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿ */
+	uint_t		semcnt;			/* ¥»¥Þ¥Õ¥©žœºß¥«¥Š¥ó¥ÈÃÍ */
+} SEMCB;
+
+/*
+ *  ¥»¥Þ¥Õ¥©ÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯€ÎÄêµÁ
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬
+ *  ¡ÊWINFO_WOBJ¡Ë€ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀžì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç¡€
+ *  €¹€Ù€Æ€Î¥Õ¥£¡Œ¥ë¥É€¬¶ŠÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥
+ */
+typedef struct semaphore_waiting_information {
+	WINFO	winfo;			/* Éžœà€ÎÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯ */
+	SEMCB	*p_semcb;		/* ÂÔ€Ã€Æ€€€ë¥»¥Þ¥Õ¥©€ÎŽÉÍý¥Ö¥í¥Ã¥¯ */
+} WINFO_SEM;
+
+/*
+ *  ¥»¥Þ¥Õ¥©ID€ÎºÇÂçÃÍ¡Êkernel_cfg.c¡Ë
+ */
+extern const ID	tmax_semid;
+
+/*
+ *  ¥»¥Þ¥Õ¥©œéŽü²œ¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern const SEMINIB	seminib_table[];
+
+/*
+ *  ¥»¥Þ¥Õ¥©ŽÉÍý¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern SEMCB	semcb_table[];
+
+/*
+ *  ¥»¥Þ¥Õ¥©ŽÉÍý¥Ö¥í¥Ã¥¯€«€é¥»¥Þ¥Õ¥©ID€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#define	SEMID(p_semcb)	((ID)(((p_semcb) - semcb_table) + TMIN_SEMID))
+
+/*
+ *  ¥»¥Þ¥Õ¥©µ¡Çœ€ÎœéŽü²œ
+ */
+extern void	initialize_semaphore(void);
+
+#endif /* TOPPERS_SEMAPHORE_H */
Index: /kernel/startup.c
===================================================================
--- /kernel/startup.c	(revision 7)
+++ /kernel/startup.c	(revision 7)
@@ -0,0 +1,172 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥«¡Œ¥Í¥ë€ÎœéŽü²œ€ÈœªÎ»œèÍý
+ */
+
+#include "kernel_impl.h"
+#include "time_event.h"
+#include <sil.h>
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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
+
+/*
+ *  ¥«¡Œ¥Í¥ëÆ°ºîŸõÂÖ¥Õ¥é¥°
+ *
+ *  ¥¹¥¿¡Œ¥È¥¢¥Ã¥×¥ë¡Œ¥Á¥ó€Ç¡€false¡Ê¡á0¡Ë€ËœéŽü²œ€µ€ì€ë€³€È€òŽüÂÔ€·€Æ
+ *  €€€ë¡¥
+ */
+bool_t	kerflg = false;
+
+/*
+ *  ¥«¡Œ¥Í¥ë€Îµ¯Æ°
+ */
+void
+sta_ker(void)
+{
+	/*
+	 *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎœéŽü²œ
+	 */
+	target_initialize();
+
+	/*
+	 *  ³Æ¥â¥ž¥å¡Œ¥ë€ÎœéŽü²œ
+	 *
+	 *  ¥¿¥€¥à¥€¥Ù¥ó¥ÈŽÉÍý¥â¥ž¥å¡Œ¥ë€ÏÂŸ€Î¥â¥ž¥å¡Œ¥ë€è€êÀè€ËœéŽü²œ
+	 *  €¹€ëÉ¬Í×€¬€¢€ë¡¥
+	 */
+	initialize_tmevt();
+	initialize_object();
+
+	/*
+	 *  œéŽü²œ¥ë¡Œ¥Á¥ó€ÎŒÂ¹Ô
+	 */ 
+	call_inirtn();
+
+	/*
+	 *  ¥«¡Œ¥Í¥ëÆ°ºî€Î³«»Ï
+	 */
+	kerflg = true;
+	LOG_KER_ENTER();
+	start_dispatch();
+	assert(0);
+}
+
+#endif /* TOPPERS_sta_ker */
+
+/*
+ *  ¥«¡Œ¥Í¥ë€ÎœªÎ»
+ */
+#ifdef TOPPERS_ext_ker
+
+ER
+ext_ker(void)
+{
+	SIL_PRE_LOC;
+
+	LOG_EXT_KER_ENTER();
+
+	/*
+	 *  ³ä¹þ€ß¥í¥Ã¥¯ŸõÂÖ€Ë°Ü¹Ô
+	 */
+	SIL_LOC_INT();
+
+	/*
+	 *  ¥«¡Œ¥Í¥ëÆ°ºî€ÎœªÎ»
+	 */
+	LOG_KER_LEAVE();
+	kerflg = false;
+
+	/*
+	 *  ¥«¡Œ¥Í¥ë€ÎœªÎ»œèÍý€ÎžÆœÐ€·
+	 *
+	 *  Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€ËÀÚ€êŽ¹€š€Æ¡€exit_kernel€òžÆ€ÓœÐ€¹¡¥
+	 */
+	call_exit_kernel();
+
+	/*
+	 *  ¥³¥ó¥Ñ¥€¥é€Î·Ù¹ðÂÐºö¡Ê€³€³€ØÍè€ë€³€È€Ï€Ê€€€Ï€º¡Ë
+	 */
+	SIL_UNL_INT();
+	LOG_EXT_KER_LEAVE(E_SYS);
+	return(E_SYS);
+}
+
+/*
+ *  ¥«¡Œ¥Í¥ë€ÎœªÎ»œèÍý
+ */
+void
+exit_kernel(void)
+{
+	/*
+	 *  œªÎ»œèÍý¥ë¡Œ¥Á¥ó€ÎŒÂ¹Ô
+	 */
+	call_terrtn();
+
+	/*
+	 *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎœªÎ»œèÍý
+	 */
+	target_exit();
+	assert(0);
+}
+
+#endif /* TOPPERS_ext_ker */
Index: /kernel/sys_manage.c
===================================================================
--- /kernel/sys_manage.c	(revision 7)
+++ /kernel/sys_manage.c	(revision 7)
@@ -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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥·¥¹¥Æ¥àŸõÂÖŽÉÍýµ¡Çœ
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯€ÎÍ¥Àèœç°Ì€Î²óÅŸ
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯€ÎÍ¥Àèœç°Ì€Î²óÅŸ¡ÊÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ */
+#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 */
+
+/*
+ *  ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯ID€Î»²ŸÈ
+ */
+#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 */
+
+/*
+ *  ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯ID€Î»²ŸÈ¡ÊÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ */
+#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 */
+
+/*
+ *  CPU¥í¥Ã¥¯ŸõÂÖ€Ø€Î°Ü¹Ô
+ */
+#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 */
+
+/*
+ *  CPU¥í¥Ã¥¯ŸõÂÖ€Ø€Î°Ü¹Ô¡ÊÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ */
+#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 */
+
+/*
+ *  CPU¥í¥Ã¥¯ŸõÂÖ€Î²òœü
+ *
+ *  CPU¥í¥Ã¥¯Ãæ€Ï¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬É¬Í×€È€Ê€ë¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€òžÆ€ÓœÐ€¹€³
+ *  €È€Ï€Ç€­€Ê€€€¿€á¡€CPU¥í¥Ã¥¯ŸõÂÖ€Î²òœü»þ€Ë¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã€òµ¯Æ°€¹€ë
+ *  É¬Í×€Ï€Ê€€¡¥
+ */
+#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 */
+
+/*
+ *  CPU¥í¥Ã¥¯ŸõÂÖ€Î²òœü¡ÊÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ *
+ *  CPU¥í¥Ã¥¯Ãæ€Ï¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬É¬Í×€È€Ê€ë¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€òžÆ€ÓœÐ€¹€³
+ *  €È€Ï€Ç€­€Ê€€€¿€á¡€CPU¥í¥Ã¥¯ŸõÂÖ€Î²òœü»þ€Ë¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã€Îµ¯Æ°€òÍ×
+ *  µá€¹€ëÉ¬Í×€Ï€Ê€€¡¥
+ */
+#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 */
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á€Î¶Ø»ß
+ */
+#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 */
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á€Îµö²Ä
+ */
+#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 */
+
+/*
+ *  ¥³¥ó¥Æ¥­¥¹¥È€Î»²ŸÈ
+ */
+#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 */
+
+/*
+ *  CPU¥í¥Ã¥¯ŸõÂÖ€Î»²ŸÈ
+ */
+#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 */
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ€Î»²ŸÈ
+ */
+#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 */
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥ÁÊÝÎ±ŸõÂÖ€Î»²ŸÈ
+ */
+#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 */
+
+/*
+ *  ¥«¡Œ¥Í¥ëÈóÆ°ºîŸõÂÖ€Î»²ŸÈ
+ */
+#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: /kernel/task.c
===================================================================
--- /kernel/task.c	(revision 7)
+++ /kernel/task.c	(revision 7)
@@ -0,0 +1,483 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  $Id$
+ */
+
+/*
+ *		¥¿¥¹¥¯ŽÉÍý¥â¥ž¥å¡Œ¥ë
+ */
+
+#include "kernel_impl.h"
+#include "wait.h"
+#include "task.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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
+
+/*
+ *  ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯
+ */
+TCB		*p_runtsk;
+
+/*
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯
+ */
+TCB		*p_schedtsk;
+
+/*
+ *  ¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á¡¿¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óµ¯Æ°Í×µá¥Õ¥é¥°
+ */
+bool_t	reqflg;
+
+/*
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ
+ */
+bool_t	ipmflg;
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ
+ */
+bool_t	disdsp;
+
+/*
+ *  ¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á²ÄÇœŸõÂÖ
+ */
+bool_t	dspflg;
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ
+ */
+QUEUE	ready_queue[TNUM_TPRI];
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ¥µ¡Œ¥Á€Î€¿€á€Î¥Ó¥Ã¥È¥Þ¥Ã¥×
+ */
+uint16_t	ready_primap;
+
+/*
+ *  ¥¿¥¹¥¯ŽÉÍý¥â¥ž¥å¡Œ¥ë€ÎœéŽü²œ
+ */
+void
+initialize_task(void)
+{
+	uint_t	i, j;
+	TCB		*p_tcb;
+
+	p_runtsk = NULL;
+	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) {
+			(void) make_active(p_tcb);
+		}
+	}
+}
+
+#endif /* TOPPERS_tskini */
+
+/*
+ *  ¥Ó¥Ã¥È¥Þ¥Ã¥×¥µ¡Œ¥ÁŽØ¿ô
+ *
+ *  bitmapÆâ€Î1€Î¥Ó¥Ã¥È€ÎÆâ¡€ºÇ€â²Œ°Ì¡Ê±Š¡Ë€Î€â€Î€ò¥µ¡Œ¥Á€·¡€€œ€Î¥Ó¥Ã
+ *  ¥ÈÈÖ¹æ€òÊÖ€¹¡¥¥Ó¥Ã¥ÈÈÖ¹æ€Ï¡€ºÇ²Œ°Ì¥Ó¥Ã¥È€ò0€È€¹€ë¡¥bitmap€Ë0€ò»ØÄê
+ *  €·€Æ€Ï€Ê€é€Ê€€¡¥€³€ÎŽØ¿ô€Ç€Ï¡€bitmap€¬16¥Ó¥Ã¥È€Ç€¢€ë€³€È€ò²ŸÄê€·¡€
+ *  uint16_t·¿€È€·€Æ€€€ë¡¥
+ *
+ *  ¥Ó¥Ã¥È¥µ¡Œ¥ÁÌ¿Îá€ò»ý€Ä¥×¥í¥»¥Ã¥µ€Ç€Ï¡€¥Ó¥Ã¥È¥µ¡Œ¥ÁÌ¿Îá€ò»È€Š€è€Š€Ë
+ *  œñ€­ÄŸ€·€¿Êý€¬žúÎš€¬ÎÉ€€Ÿì¹ç€¬€¢€ë¡¥€³€Î€è€Š€ÊŸì¹ç€Ë€Ï¡€¥¿¡Œ¥²¥Ã¥È
+ *  °ÍÂžÉô€Ç¥Ó¥Ã¥È¥µ¡Œ¥ÁÌ¿Îá€ò»È€Ã€¿bitmap_search€òÄêµÁ€·¡€
+ *  OMIT_BITMAP_SEARCH€ò¥Þ¥¯¥íÄêµÁ€¹€ì€Ð€è€€¡¥€Þ€¿¡€¥Ó¥Ã¥È¥µ¡Œ¥ÁÌ¿Îá€Î
+ *  ¥µ¡Œ¥ÁÊýžþ€¬µÕ€Ê€É€ÎÍýÍ³€ÇÍ¥ÀèÅÙ€È¥Ó¥Ã¥È€È€ÎÂÐ±þ€òÊÑ¹¹€·€¿€€Ÿì¹ç€Ë
+ *  €Ï¡€PRIMAP_BIT€ò¥Þ¥¯¥íÄêµÁ€¹€ì€Ð€è€€¡¥
+ *
+ *  €Þ€¿¡€¥é¥€¥Ö¥é¥ê€Ëffs€¬€¢€ë€Ê€é¡€Œ¡€Î€è€Š€ËÄêµÁ€·€Æ¥é¥€¥Ö¥é¥êŽØ¿ô€ò
+ *  »È€Ã€¿Êý€¬žúÎš€¬ÎÉ€€²ÄÇœÀ­€â€¢€ë¡¥
+ *		#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 */
+
+/*
+ *  Í¥ÀèÅÙ¥Ó¥Ã¥È¥Þ¥Ã¥×€¬¶õ€«€Î¥Á¥§¥Ã¥¯
+ */
+Inline bool_t
+primap_empty(void)
+{
+	return(ready_primap == 0U);
+}
+
+/*
+ *  Í¥ÀèÅÙ¥Ó¥Ã¥È¥Þ¥Ã¥×€Î¥µ¡Œ¥Á
+ */
+Inline uint_t
+primap_search(void)
+{
+	return(bitmap_search(ready_primap));
+}
+
+/*
+ *  Í¥ÀèÅÙ¥Ó¥Ã¥È¥Þ¥Ã¥×€Î¥»¥Ã¥È
+ */
+Inline void
+primap_set(uint_t pri)
+{
+	ready_primap |= PRIMAP_BIT(pri);
+}
+
+/*
+ *  Í¥ÀèÅÙ¥Ó¥Ã¥È¥Þ¥Ã¥×€Î¥¯¥ê¥¢
+ */
+Inline void
+primap_clear(uint_t pri)
+{
+	ready_primap &= ~PRIMAP_BIT(pri);
+}
+
+/*
+ *  ºÇ¹âÍ¥Àèœç°Ì¥¿¥¹¥¯€Î¥µ¡Œ¥Á
+ */
+#ifdef TOPPERS_tsksched
+
+TCB *
+search_schedtsk(void)
+{
+	uint_t	schedpri;
+
+	schedpri = primap_search();
+	return((TCB *)(ready_queue[schedpri].p_next));
+}
+
+#endif /* TOPPERS_tsksched */
+
+/*
+ *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€¹€ë€Î€Ï¡€ŒÂ¹Ô€Ç€­€ë¥¿¥¹¥¯€¬€Ê€«€Ã€¿Ÿì¹ç
+ *  €È¡€p_tcb€ÎÍ¥ÀèÅÙ€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€è€ê€â¹â€€Ÿì¹ç€Ç€¢
+ *  €ë¡¥
+ */
+#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 */
+
+/*
+ *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€«€éÂŸ€ÎŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€¹€ë€Î€Ï¡€p_tcb€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€Ç
+ *  €¢€Ã€¿Ÿì¹ç€Ç€¢€ë¡¥p_tcb€ÈÆ±€žÍ¥ÀèÅÙ€Î¥¿¥¹¥¯€¬ÂŸ€Ë€¢€ëŸì¹ç€Ï¡€p_tcb
+ *  €ÎŒ¡€Î¥¿¥¹¥¯€¬ºÇ¹âÍ¥Àèœç°Ì€Ë€Ê€ë¡¥€œ€Š€Ç€Ê€€Ÿì¹ç€Ï¡€¥ì¥Ç¥£¥­¥å¡Œ€ò
+ *  ¥µ¡Œ¥Á€¹€ëÉ¬Í×€¬€¢€ë¡¥
+ */
+#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 */
+
+/*
+ *  µÙ»ßŸõÂÖ€Ø€ÎÁ«°Ü
+ */
+#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 */
+
+/*
+ *  µÙ»ßŸõÂÖ€«€éŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ø€ÎÁ«°Ü
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€ÎÊÑ¹¹
+ *
+ *  ¥¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂÖ€ÎŸì¹ç€Ë€Ï¡€¥ì¥Ç¥£¥­¥å¡Œ€ÎÃæ€Ç€Î°ÌÃÖ€òÊÑ¹¹€¹
+ *  €ë¡¥¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€Á¥­¥å¡Œ€ÎÃæ€ÇÂÔ€ÁŸõÂÖ€Ë€Ê€Ã€Æ€€€ëŸì¹ç€Ë€Ï¡€ÂÔ
+ *  €Á¥­¥å¡Œ€ÎÃæ€Ç€Î°ÌÃÖ€òÊÑ¹¹€¹€ë¡¥
+ *
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€¹€ë€Î€Ï¡€(1) p_tcb€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹
+ *  ¥¯€Ç€¢€Ã€Æ¡€€œ€ÎÍ¥ÀèÅÙ€ò²Œ€²€¿Ÿì¹ç¡€(2) p_tcb€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹
+ *  ¥¯€Ç€Ï€Ê€¯¡€ÊÑ¹¹žå€ÎÍ¥ÀèÅÙ€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€è€ê€â¹â€€
+ *  Ÿì¹ç€Ç€¢€ë¡¥(1)€ÎŸì¹ç€Ë€Ï¡€¥ì¥Ç¥£¥­¥å¡Œ€ò¥µ¡Œ¥Á€¹€ëÉ¬Í×€¬€¢€ë¡¥
+ */
+#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)) {
+		/*
+		 *  ¥¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂÖ€ÎŸì¹ç
+		 */
+		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)) {
+			/*
+			 *  ¥¿¥¹¥¯€¬¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉô
+			 *  Ê¬¡ÊWOBJCB¡Ë€ÎÂÔ€Á¥­¥å¡Œ€Ë€Ä€Ê€¬€ì€Æ€€€ëŸì¹ç
+			 */
+			wobj_change_priority(((WINFO_WOBJ *)(p_tcb->p_winfo))->p_wobjcb,
+																	p_tcb);
+		}
+	}
+	return(false);
+}
+
+#endif /* TOPPERS_tskpri */
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ€Î²óÅŸ
+ *
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€¹€ë€Î€Ï¡€ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€¬¥¿¥¹¥¯¥­
+ *  ¥å¡Œ€ÎËöÈø€Ë°ÜÆ°€·€¿Ÿì¹ç€Ç€¢€ë¡¥
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎžÆœÐ€·
+ *
+ *  ASP¥«¡Œ¥Í¥ë€Ç€Ï¡€¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óÆâ€ÇCPU¥í¥Ã¥¯ŸõÂÖ€ËÁ«°Ü€·¡€
+ *  žµ€ÎŸõÂÖ€ËÌá€µ€º€Ë¥ê¥¿¡Œ¥ó€·€¿Ÿì¹ç¡€¥«¡Œ¥Í¥ë€¬žµ€ÎŸõÂÖ€ËÌá€¹¡¥
+ */
+#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€òžÆ€ÓœÐ€¹œèÍý€Ï¡€ÁêžßºÆµ¢žÆœÐ€·€Ë€Ê€Ã€Æ
+			 *  €€€ë€¬¡€dispatch€òžÆ€ÖÁ°€Ëp_runtsk->enatex€òfalse€Ë€·€Æ
+			 *  €ª€±€Ð»ÙŸã€¬€Ê€€¡¥€œ€ÎÍýÍ³€Ë€Ä€€€Æ€Ï¡€¡ÖTOPPERS/ASP ¥«¡Œ
+			 *  ¥Í¥ë Àß·×¥á¥â¡×€ò»²ŸÈ€Î€³€È¡¥
+			 */
+			dispatch();
+		}
+	} while (p_runtsk->texptn != 0U);
+	p_runtsk->enatex = true;
+}
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€Îµ¯Æ°
+ */
+#ifndef OMIT_CALLTEX
+
+void
+calltex(void)
+{
+	if (p_runtsk->enatex && p_runtsk->texptn != 0U && ipmflg) {
+		call_texrtn();
+	}
+}
+
+#endif /* OMIT_CALLTEX */
+#endif /* TOPPERS_tsktex */
Index: /kernel/task.h
===================================================================
--- /kernel/task.h	(revision 7)
+++ /kernel/task.h	(revision 7)
@@ -0,0 +1,480 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  $Id$
+ */
+
+/*
+ *		¥¿¥¹¥¯ŽÉÍý¥â¥ž¥å¡Œ¥ë
+ */
+
+#ifndef TOPPERS_TASK_H
+#define TOPPERS_TASK_H
+
+#include <queue.h>
+#include "time_event.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#ifndef LOG_TSKSTAT
+#define LOG_TSKSTAT(p_tcb)
+#endif /* LOG_TSKSTAT */
+
+/*
+ *  ¥¿¥¹¥¯Í¥ÀèÅÙ€ÎÆâÉôÉœžœ¡Š³°ÉôÉœžœÊÑŽ¹¥Þ¥¯¥í
+ */
+#define INT_PRIORITY(x)		((uint_t)((x) - TMIN_TPRI))
+#define EXT_TSKPRI(x)		((PRI)(x) + TMIN_TPRI)
+
+/*
+ *  ¥¿¥¹¥¯ŸõÂÖ€ÎÆâÉôÉœžœ
+ *
+ *  TCBÃæ€Î¥¿¥¹¥¯ŸõÂÖ€Ç€Ï¡€ŒÂ¹ÔŸõÂÖ¡ÊRUNNING¡Ë€ÈŒÂ¹Ô²ÄÇœŸõÂÖ¡ÊREADY¡Ë
+ *  €Ï¶èÊÌ€·€Ê€€¡¥ÎŸŸõÂÖ€òÁíŸÎ€·€Æ¡€ŒÂ¹Ô€Ç€­€ëŸõÂÖ¡ÊRUNNABLE¡Ë€ÈžÆ€Ö¡¥
+ *  ÆóœÅÂÔ€ÁŸõÂÖ€Ï¡€(TS_WAITING | TS_SUSPENDED)€ÇÉœ€¹¡¥TS_WAIT_???€ÏÂÔ
+ *  €ÁÍ×°ø€òÉœ€·¡€ÂÔ€ÁŸõÂÖ¡ÊÆóœÅÂÔ€ÁŸõÂÖ€òŽÞ€à¡Ë€ÎŸì¹ç€Ë€Î€ßÀßÄê€¹€ë¡¥
+ */
+#define TS_DORMANT		0x00U			/* µÙ»ßŸõÂÖ */
+#define TS_RUNNABLE		0x01U			/* ŒÂ¹Ô€Ç€­€ëŸõÂÖ */
+#define TS_WAITING		0x02U			/* ÂÔ€ÁŸõÂÖ */
+#define TS_SUSPENDED	0x04U			/* ¶¯À©ÂÔ€ÁŸõÂÖ */
+
+#define TS_WAIT_DLY		(0x00U << 3)	/* »þŽÖ·Ð²áÂÔ€Á */
+#define TS_WAIT_SLP		(0x01U << 3)	/* µ¯Ÿ²ÂÔ€Á */
+#define TS_WAIT_RDTQ	(0x02U << 3)	/* ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TS_WAIT_RPDQ	(0x03U << 3)	/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TS_WAIT_SEM		(0x04U << 3)	/* ¥»¥Þ¥Õ¥©»ñž»€Î³ÍÆÀÂÔ€Á */
+#define TS_WAIT_FLG		(0x05U << 3)	/* ¥€¥Ù¥ó¥È¥Õ¥é¥°ÂÔ€Á */
+#define TS_WAIT_SDTQ	(0x06U << 3)	/* ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®ÂÔ€Á */
+#define TS_WAIT_SPDQ	(0x07U << 3)	/* Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®ÂÔ€Á */
+#define TS_WAIT_MBX		(0x08U << 3)	/* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€«€é€ÎŒõ¿®ÂÔ€Á */
+#define TS_WAIT_MPF		(0x09U << 3)	/* žÇÄêÄ¹¥á¥â¥ê¥Ö¥í¥Ã¥¯€Î³ÍÆÀÂÔ€Á */
+
+/*
+ *  ¥¿¥¹¥¯ŸõÂÖÈœÊÌ¥Þ¥¯¥í
+ *
+ *  TSTAT_DORMANT€Ï¥¿¥¹¥¯€¬µÙ»ßŸõÂÖ€Ç€¢€ë€«€É€Š€«€ò¡€TSTAT_RUNNABLE€Ï
+ *  ¥¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ç€¢€ë€«€É€Š€«€òÈœÊÌ€¹€ë¡¥TSTAT_WAITING€ÏÂÔ
+ *  €ÁŸõÂÖ€ÈÆóœÅÂÔ€ÁŸõÂÖ€Î€€€º€ì€«€Ç€¢€ë€«€É€Š€«€ò¡€TSTAT_SUSPENDED€Ï
+ *  ¶¯À©ÂÔ€ÁŸõÂÖ€ÈÆóœÅÂÔ€ÁŸõÂÖ€Î€€€º€ì€«€Ç€¢€ë€«€É€Š€«€òÈœÊÌ€¹€ë¡¥
+ */
+#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)
+
+/*
+ *  ¥¿¥¹¥¯ÂÔ€ÁÍ×°øÈœÊÌ¥Þ¥¯¥í
+ *
+ *  TSTAT_WAIT_SLP€Ï¥¿¥¹¥¯€¬µ¯Ÿ²ÂÔ€Á€Ç€¢€ë€«€É€Š€«€ò¡€TSTAT_WAIT_WOBJ
+ *  €Ï¥¿¥¹¥¯€¬Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ËÂÐ€¹€ëÂÔ€Á€Ç€¢€ë€«¡ÊžÀ€€Ž¹€š€ë€È¡€
+ *  Æ±ŽüÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€Á¥­¥å¡Œ€Ë€Ä€Ê€¬€ì€Æ€€€ë€«¡Ë€É€Š€«€òÈœÊÌ€¹
+ *  €ë¡¥€Þ€¿¡€TSTAT_WAIT_WOBJCB€Ï¥¿¥¹¥¯€¬Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý
+ *  ¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬¡ÊWOBJCB¡Ë€ÎÂÔ€Á¥­¥å¡Œ€Ë€Ä€Ê€¬€ì€Æ€€€ë€«€É€Š€«€ò
+ *  ÈœÊÌ€¹€ë¡¥
+ *
+ *  TSTAT_WAIT_SLP€Ï¡€Ç€°Õ€Î¥¿¥¹¥¯ŸõÂÖ€ÎÃæ€«€é¡€¥¿¥¹¥¯€¬µ¯Ÿ²ÂÔ€Á€Ç€¢€ë
+ *  €³€È€òÈœÊÌ€Ç€­€ë¡¥€¹€Ê€ï€Á¡€TSTAT_WAITING€Ë€è€êÂÔ€ÁŸõÂÖ€Ç€¢€ë€³€È€ò
+ *  ÈœÊÌ€»€º€Ë¡€TSTAT_SLP€À€±€òÍÑ€€€Æµ¯Ÿ²ÂÔ€ÁŸõÂÖ€Ç€¢€ë€³€È€òÈœÊÌ€Ç€­€ë¡¥
+ *  €³€ì€òžúÎšÅª€ËŒÂžœ€¹€ë€¿€á€Ë¡€TS_WAIT_SLP€ÎÃÍ€ò¡€(0x00U << 3)€Ç€Ï€Ê
+ *  €¯(0x01U << 3)€È€·€Æ€€€ë¡¥€œ€Î€¿€á¡€¥¿¥¹¥¯€¬»þŽÖ·Ð²áÂÔ€ÁŸõÂÖ€Ç€¢€ë
+ *  €³€È€òÈœÊÌ€¹€ë€¿€á€ÎTSTAT_WAIT_DLY€ò¡€TSTAT_WAIT_SLP€ÈÆ±ÍÍ€ÎÊýË¡€Ç
+ *  ŒÂžœ€¹€ë€³€È€Ï€Ç€­€Ê€€¡¥
+ */
+#define TS_WAIT_MASK	(0x0fU << 3)	/* ÂÔ€ÁÍ×°ø€ÎŒèœÐ€·¥Þ¥¹¥¯ */
+
+#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)
+
+/*
+ *  ÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯¡ÊWINFO¡Ë€ÎÄêµÁ
+ *
+ *  ¥¿¥¹¥¯€¬ÂÔ€ÁŸõÂÖ€ÎŽÖ€Ï¡€TCB€ª€è€Ó€œ€Îp_winfo€Ç»Ø€µ€ì€ëWINFO€òŒ¡€Î
+ *  €è€Š€ËÀßÄê€·€Ê€±€ì€Ð€Ê€é€Ê€€¡¥
+ *
+ *  (a) TCB€Î¥¿¥¹¥¯ŸõÂÖ€òÂÔ€ÁŸõÂÖ¡ÊTS_WAITING¡Ë€Ë€¹€ë¡¥€œ€ÎºÝ€Ë¡€ÂÔ€Á
+ *  Í×°ø¡ÊTS_WAIT_???¡Ë€âÀßÄê€¹€ë¡¥
+ *
+ *  (b) ¥¿¥€¥à¥¢¥Š¥È€òŽÆ»ë€¹€ë€¿€á€Ë¡€¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯€òÅÐÏ¿€¹€ë¡¥
+ *  ÅÐÏ¿€¹€ë¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯€Ï¡€ÂÔ€Á€ËÆþ€ë¥µ¡Œ¥Ó¥¹¥³¡Œ¥ëœèÍýŽØ¿ô
+ *  €Î¥í¡Œ¥«¥ëÊÑ¿ô€È€·€Æ³ÎÊÝ€·¡€€œ€ì€Ø€Î¥Ý¥€¥ó¥¿€òWINFO€Îp_tmevtb€Ëµ­
+ *  ²±€¹€ë¡¥¥¿¥€¥à¥¢¥Š¥È€ÎŽÆ»ë€¬É¬Í×€Ê€€Ÿì¹ç¡Ê±Êµ×ÂÔ€Á€ÎŸì¹ç¡Ë€Ë€Ï¡€
+ *  p_tmevtb€òNULL€Ë€¹€ë¡¥
+ *
+ *  Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ËÂÐ€¹€ëÂÔ€ÁŸõÂÖ€ÎŸì¹ç€Ë€Ï¡€Éžœà€ÎWINFO€Ë
+ *  p_wobjcb¥Õ¥£¡Œ¥ë¥É€òÄÉ²Ã€·€¿¹œÂ€ÂÎ¡ÊWINFO_WOBJ¡€wait.h€ÇÄêµÁ¡Ë€ò»È
+ *  €Š¡¥€Þ€¿¡€°Ê²Œ€Î(c)¡Á(e)€ÎÀßÄê€ò¹Ô€ŠÉ¬Í×€¬€¢€ë¡¥Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§
+ *  ¥¯¥È€ËŽØ·ž€·€Ê€€ÂÔ€Á¡Êµ¯Ÿ²ÂÔ€Á¡€»þŽÖ·Ð²áÂÔ€Á¡Ë€ÎŸì¹ç€Ë€Ï¡€(c)¡Á(e)
+ *  €ÏÉ¬Í×€Ê€€¡¥
+ *
+ *  (c) TCB€òÂÔ€ÁÂÐŸÝ€ÎÆ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€Á¥­¥å¡Œ€Ë€Ä€Ê€°¡¥ÂÔ
+ *  €Á¥­¥å¡Œ€Ë€Ä€Ê€°€¿€á€Ë¡€task_queue€ò»È€Š¡¥
+ *
+ *  (d) ÂÔ€ÁÂÐŸÝ€ÎÆ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿€ò¡€
+ *  WINFO_WOBJ€Îp_wobjcb€Ëµ­²±€¹€ë¡¥
+ *
+ *  (e) ÂÔ€ÁÂÐŸÝ€ÎÆ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€Ë°ÍÂž€·€Æµ­²±€¹€ë€³€È€¬É¬Í×€Ê
+ *  ŸðÊó€¬€¢€ëŸì¹ç€Ë€Ï¡€WINFO_WOBJ€ËÉ¬Í×€ÊŸðÊó€Î€¿€á€Î¥Õ¥£¡Œ¥ë¥É€òÄÉ²Ã
+ *  €·€¿¹œÂ€ÂÎ€òÄêµÁ€·¡€WINFO_WOBJ€ÎÂå€ï€ê€ËÍÑ€€€ë¡¥
+ *
+ *  ÂÔ€ÁŸõÂÖ€ò²òœü€¹€ëºÝ€Ë€Ï¡€ÂÔ€Á²òœü€·€¿¥¿¥¹¥¯€ËÂÐ€¹€ëÊÖÃÍ€òWINFO€Î
+ *  wercd€ËÀßÄê€¹€ë¡¥wercd€¬É¬Í×€Ê€Î€ÏÂÔ€Á²òœü°Ê¹ß€Ç€¢€ë€Î€ËÂÐ€·€Æ¡€
+ *  p_tmevtb€ÏÂÔ€Á²òœüžå€ÏÉ¬Í×€Ê€€€¿€á¡€¥á¥â¥êÀáÌó€Î€¿€á€Ë¶ŠÍÑÂÎ€ò»È€Ã
+ *  €Æ€€€ë¡¥€œ€Î€¿€á¡€wercd€Ø¥š¥é¡Œ¥³¡Œ¥É€òÀßÄê€¹€ë€Î€Ï¡€¥¿¥€¥à¥€¥Ù¥ó¥È
+ *  ¥Ö¥í¥Ã¥¯€òÅÐÏ¿²òœü€·€¿žå€Ë€·€Ê€±€ì€Ð€Ê€é€Ê€€¡¥
+ */
+typedef union waiting_information {
+	ER		wercd;			/* ÂÔ€Á²òœü»þ€Î¥š¥é¡Œ¥³¡Œ¥É */
+	TMEVTB	*p_tmevtb;		/* ÂÔ€ÁŸõÂÖÍÑ€Î¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯ */
+} WINFO;
+
+/*
+ *  ¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯
+ *
+ *  ¥¿¥¹¥¯€ËŽØ€¹€ëŸðÊó€ò¡€ÃÍ€¬ÊÑ€ï€é€Ê€€€¿€á€ËROM€ËÃÖ€±€ëÉôÊ¬¡Ê¥¿¥¹¥¯
+ *  œéŽü²œ¥Ö¥í¥Ã¥¯¡Ë€È¡€ÃÍ€¬ÊÑ²œ€¹€ë€¿€á€ËRAM€ËÃÖ€«€Ê€±€ì€Ð€Ê€é€Ê€€Éô
+ *  Ê¬¡Ê¥¿¥¹¥¯ŽÉÍý¥Ö¥í¥Ã¥¯¡€TCB¡Ë€ËÊ¬Î¥€·¡€TCBÆâ€ËÂÐ±þ€¹€ë¥¿¥¹¥¯œéŽü²œ
+ *  ¥Ö¥í¥Ã¥¯€ò»Ø€¹¥Ý¥€¥ó¥¿€òÆþ€ì€ë¡¥¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯Æâ€ËÂÐ±þ€¹€ë
+ *  TCB€ò»Ø€¹¥Ý¥€¥ó¥¿€òÆþ€ì€ëÊýË¡€ÎÊý€¬¡€RAM€ÎÀáÌó€ÎŽÑÅÀ€«€é€ÏËŸ€Þ€·€€
+ *  €¬¡€ŒÂ¹ÔžúÎš€¬°­€¯€Ê€ë€¿€á€ËºÎÍÑ€·€Æ€€€Ê€€¡¥ÂŸ€Î¥ª¥Ö¥ž¥§¥¯¥È€Ë€Ä€€
+ *  €Æ€âÆ±ÍÍ€Ë°·€Š¡¥
+ *
+ *  ¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯€Ë€Ï¡€DEF_TEX€ÇÄêµÁ€µ€ì€ë¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á
+ *  ¥ó€ËŽØ€¹€ëŸðÊó€âŽÞ€à¡¥
+ */
+typedef struct task_initialization_block {
+	ATR			tskatr;			/* ¥¿¥¹¥¯Â°À­ */
+	intptr_t	exinf;			/* ¥¿¥¹¥¯€Î³ÈÄ¥ŸðÊó */
+	TASK		task;			/* ¥¿¥¹¥¯€Îµ¯Æ°ÈÖÃÏ */
+	uint_t		ipriority;		/* ¥¿¥¹¥¯€Îµ¯Æ°»þÍ¥ÀèÅÙ¡ÊÆâÉôÉœžœ¡Ë */
+
+#ifdef USE_TSKINICTXB
+	TSKINICTXB	tskinictxb;		/* ¥¿¥¹¥¯œéŽü²œ¥³¥ó¥Æ¥­¥¹¥È¥Ö¥í¥Ã¥¯ */
+#else /* USE_TSKINICTXB */
+	SIZE		stksz;			/* ¥¹¥¿¥Ã¥¯ÎÎ°è€Î¥µ¥€¥º¡ÊŽÝ€á€¿ÃÍ¡Ë */
+	void		*stk;			/* ¥¹¥¿¥Ã¥¯ÎÎ°è€ÎÀèÆ¬ÈÖÃÏ */
+#endif /* USE_TSKINICTXB */
+
+	ATR			texatr;			/* ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óÂ°À­ */
+	TEXRTN		texrtn;			/* ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€Îµ¯Æ°ÈÖÃÏ */
+} TINIB;
+
+/*
+ *  TCBÃæ€Î¥Õ¥£¡Œ¥ë¥É€Î¥Ó¥Ã¥ÈÉý€ÎÄêµÁ
+ *
+ *  ¥×¥í¥»¥Ã¥µ€Ë€è€Ã€Æ€Ï¡€TCBÃæ€Î¥Õ¥£¡Œ¥ë¥É€Î¥Ó¥Ã¥ÈÉý€Ç¥á¥â¥ê»ÈÍÑÎÌ€È
+ *  À­Çœ€¬¥È¥ì¡Œ¥É¥ª¥Õ€Ë€Ê€ë€¿€á¡€¥¿¡Œ¥²¥Ã¥È°ÍÂž€Ë¥Õ¥£¡Œ¥ë¥É€Î¥Ó¥Ã¥ÈÉý
+ *  €òÊÑ¹¹€¹€ë€³€È€òµö€·€Æ€€€ë¡¥
+ */
+#ifndef TBIT_TCB_PRIORITY
+#define	TBIT_TCB_PRIORITY		8		/* priority¥Õ¥£¡Œ¥ë¥É€Î¥Ó¥Ã¥ÈÉý */
+#endif /* TBIT_TCB_PRIORITY */
+
+/*
+ *  ¥¿¥¹¥¯ŽÉÍý¥Ö¥í¥Ã¥¯¡ÊTCB¡Ë
+ *
+ *  ASP¥«¡Œ¥Í¥ë€Ç€Ï¡€¥¿¥¹¥¯€Îµ¯Æ°Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô€ÎºÇÂçÃÍ¡ÊTMAX_ACTCNT¡Ë
+ *  €Èµ¯Ÿ²Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô€ÎºÇÂçÃÍ¡ÊTMAX_WUPCNT¡Ë€Ï1€ËžÇÄê€µ€ì€Æ€€€ë
+ *  €¿€á¡€¥­¥å¡Œ¥€¥ó¥°€µ€ì€Æ€€€ë€«€É€Š€«€Î¿¿µ¶ÃÍ€ÇÉœžœ€¹€ë€³€È€¬€Ç€­€ë¡¥
+ *  €Þ€¿¡€¶¯À©ÂÔ€ÁÍ×µá¥Í¥¹¥È¿ô€ÎºÇÂçÃÍ¡ÊTMAX_SUSCNT¡Ë€¬1€ËžÇÄê€µ€ì€Æ€€
+ *  €ë€Î€Ç¡€¶¯À©ÂÔ€ÁÍ×µá¥Í¥¹¥È¿ô¡Êsuscnt¡Ë€ÏÉ¬Í×€Ê€€¡¥
+ *
+ *  TCB€Î€€€¯€Ä€«€Î¥Õ¥£¡Œ¥ë¥É€Ï¡€ÆÃÄê€Î¥¿¥¹¥¯ŸõÂÖ€Ç€Î€ßÍ­žú€ÊÃÍ€òÊÝ»ý€·¡€
+ *  €œ€ì°Ê³°€ÎŸì¹ç€ÏÃÍ€¬ÊÝŸÚ€µ€ì€Ê€€¡Ê€è€Ã€Æ¡€»²ŸÈ€·€Æ€Ï€Ê€é€Ê€€¡Ë¡¥³Æ
+ *  ¥Õ¥£¡Œ¥ë¥É€¬Í­žú€ÊÃÍ€òÊÝ»ý€¹€ëŸò·ï€ÏŒ¡€ÎÄÌ€ê¡¥
+ *
+ *  ¡ŠœéŽü²œžå€ÏŸï€ËÍ­žú¡§
+ *  		p_tinib¡€tstat¡€actque
+ *  ¡ŠµÙ»ßŸõÂÖ°Ê³°€ÇÍ­žú¡ÊµÙ»ßŸõÂÖ€Ç€ÏœéŽüÃÍ€Ë€Ê€Ã€Æ€€€ë¡Ë¡§
+ *  		priority¡€wupque¡€enatex¡€texptn
+ *  ¡ŠÂÔ€ÁŸõÂÖ¡ÊÆóœÅÂÔ€ÁŸõÂÖ€òŽÞ€à¡Ë€ÇÍ­žú¡§
+ *  		p_winfo
+ *  ¡ŠŒÂ¹Ô€Ç€­€ëŸõÂÖ€ÈÆ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ËÂÐ€¹€ëÂÔ€ÁŸõÂÖ€ÇÍ­žú¡§
+ *  		task_queue
+ *  ¡ŠŒÂ¹Ô²ÄÇœŸõÂÖ¡€ÂÔ€ÁŸõÂÖ¡€¶¯À©ÂÔ€ÁŸõÂÖ¡€ÆóœÅÂÔ€ÁŸõÂÖ€ÇÍ­žú¡§
+ *  		tskctxb
+ */
+typedef struct task_control_block {
+	QUEUE			task_queue;		/* ¥¿¥¹¥¯¥­¥å¡Œ */
+	const TINIB		*p_tinib;		/* œéŽü²œ¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿ */
+
+#ifdef UINT8_MAX
+	uint8_t			tstat;			/* ¥¿¥¹¥¯ŸõÂÖ¡ÊÆâÉôÉœžœ¡Ë*/
+#else /* UINT8_MAX */
+	BIT_FIELD_UINT	tstat : 8;		/* ¥¿¥¹¥¯ŸõÂÖ¡ÊÆâÉôÉœžœ¡Ë*/
+#endif /* UINT8_MAX */
+#if defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8)
+	uint8_t			priority;		/* žœºß€ÎÍ¥ÀèÅÙ¡ÊÆâÉôÉœžœ¡Ë*/
+#else /* defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8) */
+	BIT_FIELD_UINT	priority : TBIT_TCB_PRIORITY;
+									/* žœºß€ÎÍ¥ÀèÅÙ¡ÊÆâÉôÉœžœ¡Ë*/
+#endif /* defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8) */
+	BIT_FIELD_BOOL	actque : 1;		/* µ¯Æ°Í×µá¥­¥å¡Œ¥€¥ó¥° */
+	BIT_FIELD_BOOL	wupque : 1;		/* µ¯Ÿ²Í×µá¥­¥å¡Œ¥€¥ó¥° */
+	BIT_FIELD_BOOL	enatex : 1;		/* ¥¿¥¹¥¯Îã³°œèÍýµö²ÄŸõÂÖ */
+
+	TEXPTN			texptn;			/* ÊÝÎ±Îã³°Í×°ø */
+	WINFO			*p_winfo;		/* ÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿ */
+	TSKCTXB			tskctxb;		/* ¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È¥Ö¥í¥Ã¥¯ */
+} TCB;
+
+/*
+ *  ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯
+ *
+ *  ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯¡Ê¡á¥×¥í¥»¥Ã¥µ€¬¥³¥ó¥Æ¥­¥¹¥È€ò»ý€Ã€Æ€€€ë¥¿¥¹¥¯¡Ë€Î
+ *  TCB€ò»Ø€¹¥Ý¥€¥ó¥¿¡¥ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€¬€Ê€€Ÿì¹ç€ÏNULL€Ë€¹€ë¡¥
+ *
+ *  ¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎœèÍýÃæ€Ç¡€Œ«¥¿¥¹¥¯¡Ê¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€òžÆ€ÓœÐ€·€¿¥¿¥¹
+ *  ¥¯¡Ë€ËŽØ€¹€ëŸðÊó€ò»²ŸÈ€¹€ëŸì¹ç€Ïp_runtsk€ò»È€Š¡¥p_runtsk€òœñ€­Ž¹€š
+ *  €ë€Î€Ï¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã¡Ê€ÈœéŽü²œœèÍý¡Ë€Î€ß€Ç€¢€ë¡¥
+ */
+extern TCB	*p_runtsk;
+
+/*
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯
+ *
+ *  ŒÂ¹Ô€Ç€­€ë¥¿¥¹¥¯€ÎÃæ€ÇºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ÎTCB€ò»Ø€¹¥Ý¥€¥ó¥¿¡¥ŒÂ
+ *  ¹Ô€Ç€­€ë¥¿¥¹¥¯€¬€Ê€€Ÿì¹ç€ÏNULL€Ë€¹€ë¡¥
+ *
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ€Ê€É¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬ÊÝÎ±€µ€ì€Æ€€€ëŽÖ€Ïp_runtsk
+ *  €È°ìÃ×€·€Æ€€€ë€È€ÏžÂ€é€Ê€€¡¥
+ */
+extern TCB	*p_schedtsk;
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¡¿¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óµ¯Æ°Í×µá¥Õ¥é¥°
+ *
+ *  ³ä¹þ€ß¥Ï¥ó¥É¥é¡¿CPUÎã³°¥Ï¥ó¥É¥é€ÎœÐžýœèÍý€Ë¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á€Þ€¿€Ï
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€Îµ¯Æ°€òÍ×µá€¹€ë€³€È€òŒš€¹¥Õ¥é¥°¡¥
+ */
+extern bool_t	reqflg;
+
+/*
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ
+ *
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ€Ç€¢€ë€³€È€òŒš€¹¥Õ¥é¥°¡¥
+ */
+extern bool_t	ipmflg;
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ
+ *
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ€Ç€¢€ë€³€È€òŒš€¹¥Õ¥é¥°¡¥
+ */
+extern bool_t	disdsp;
+
+/*
+ *  ¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á²ÄÇœŸõÂÖ
+ *
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ€Ç€¢€ê¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ€Ç€¢€ë¡Ê¥Ç¥£
+ *  ¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ€Ç€Ê€€¡Ë€³€È€òŒš€¹¥Õ¥é¥°¡¥
+ */
+extern bool_t	dspflg;
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ
+ *
+ *  ¥ì¥Ç¥£¥­¥å¡Œ€Ï¡€ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Î¥¿¥¹¥¯€òŽÉÍý€¹€ë€¿€á€Î¥­¥å¡Œ€Ç€¢€ë¡¥
+ *  ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€âŽÉÍý€·€Æ€€€ë€¿€á¡€¥ì¥Ç¥£¡ÊŒÂ¹Ô²ÄÇœ¡Ë¥­¥å¡Œ€È€€€Š
+ *  ÌŸŸÎ€ÏÀµ³Î€Ç€Ï€Ê€€€¬¡€¥ì¥Ç¥£¥­¥å¡Œ€È€€€ŠÌŸŸÎ€¬ÄêÃå€·€Æ€€€ë€¿€á¡€€³
+ *  €ÎÌŸŸÎ€ÇžÆ€Ö€³€È€Ë€¹€ë¡¥
+ *
+ *  ¥ì¥Ç¥£¥­¥å¡Œ€Ï¡€Í¥ÀèÅÙ€Ž€È€Î¥¿¥¹¥¯¥­¥å¡Œ€Ç¹œÀ®€µ€ì€Æ€€€ë¡¥¥¿¥¹¥¯€Î
+ *  TCB€Ï¡€³ºÅö€¹€ëÍ¥ÀèÅÙ€Î¥­¥å¡Œ€ËÅÐÏ¿€µ€ì€ë¡¥
+ */
+extern QUEUE	ready_queue[TNUM_TPRI];
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ¥µ¡Œ¥Á€Î€¿€á€Î¥Ó¥Ã¥È¥Þ¥Ã¥×
+ *
+ *  ¥ì¥Ç¥£¥­¥å¡Œ€Î¥µ¡Œ¥Á€òžúÎš€è€¯¹Ô€Š€¿€á€Ë¡€Í¥ÀèÅÙ€Ž€È€Î¥¿¥¹¥¯¥­¥å¡Œ
+ *  €Ë¥¿¥¹¥¯€¬Æþ€Ã€Æ€€€ë€«€É€Š€«€òŒš€¹¥Ó¥Ã¥È¥Þ¥Ã¥×€òÍÑ°Õ€·€Æ€€€ë¡¥¥Ó¥Ã
+ *  ¥È¥Þ¥Ã¥×€ò»È€Š€³€È€Ç¡€¥á¥â¥ê¥¢¥¯¥»¥¹€Î²ó¿ô€òžº€é€¹€³€È€¬€Ç€­€ë€¬¡€
+ *  ¥Ó¥Ã¥ÈÁàºîÌ¿Îá€¬œŒŒÂ€·€Æ€€€Ê€€¥×¥í¥»¥Ã¥µ€Ç¡€Í¥ÀèÅÙ€ÎÃÊ³¬¿ô€¬Ÿ¯€Ê€€
+ *  Ÿì¹ç€Ë€Ï¡€¥Ó¥Ã¥È¥Þ¥Ã¥×Áàºî€Î¥ª¡Œ¥Ð¡Œ¥Ø¥Ã¥É€Î€¿€á€Ë¡€µÕ€ËžúÎš€¬Íî€Á
+ *  €ë²ÄÇœÀ­€â€¢€ë¡¥
+ *
+ *  Í¥ÀèÅÙ€¬16ÃÊ³¬€Ç€¢€ë€³€È€ò²ŸÄê€·€Æ€€€ë€¿€á¡€uint16_t·¿€È€·€Æ€€€ë¡¥
+ */
+extern uint16_t	ready_primap;
+
+/*
+ *  ¥¿¥¹¥¯ID€ÎºÇÂçÃÍ¡Êkernel_cfg.c¡Ë
+ */
+extern const ID	tmax_tskid;
+
+/*
+ *  ¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern const TINIB	tinib_table[];
+
+/*
+ *  ¥¿¥¹¥¯ÀžÀ®œçœø¥Æ¡Œ¥Ö¥ë¡Êkernel_cfg.c¡Ë
+ */
+extern const ID	torder_table[];
+
+/*
+ *  TCB€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern TCB	tcb_table[];
+
+/*
+ *  ¥¿¥¹¥¯€Î¿ô
+ */
+#define tnum_tsk	((uint_t)(tmax_tskid - TMIN_TSKID + 1))
+
+/*
+ *  ¥¿¥¹¥¯ID€«€éTCB€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#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€«€é¥¿¥¹¥¯ID€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#define	TSKID(p_tcb)	((ID)(((p_tcb) - tcb_table) + TMIN_TSKID))
+
+/*
+ *  ¥¿¥¹¥¯ŽÉÍý¥â¥ž¥å¡Œ¥ë€ÎœéŽü²œ
+ */
+extern void	initialize_task(void);
+
+/*
+ *  ºÇ¹âÍ¥Àèœç°Ì¥¿¥¹¥¯€Î¥µ¡Œ¥Á
+ *
+ *  ¥ì¥Ç¥£¥­¥å¡ŒÃæ€ÎºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¥µ¡Œ¥Á€·¡€€œ€ÎTCB€Ø€Î¥Ý¥€¥ó¥¿
+ *  €òÊÖ€¹¡¥¥ì¥Ç¥£¥­¥å¡Œ€¬¶õ€ÎŸì¹ç€Ë€Ï¡€€³€ÎŽØ¿ô€òžÆ€ÓœÐ€·€Æ€Ï€Ê€é€Ê€€¡¥
+ */
+extern TCB	*search_schedtsk(void);
+
+/*
+ *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ò¥ì¥Ç¥£¥­¥å¡Œ€ËÁÞÆþ€¹€ë¡¥¥ì¥Ç¥£¥­¥å¡Œ€ËÁÞÆþ
+ *  €·€¿¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€¬¡€ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€è€ê€â¹â€€Ÿì¹ç€Ï¡€
+ *  ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€·¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ€Ç€¢€ì€Ðtrue€òÊÖ
+ *  €¹¡¥€œ€Š€Ç€Ê€€Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥
+ */
+extern bool_t	make_runnable(TCB *p_tcb);
+
+/*
+ *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€«€éÂŸ€ÎŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ò¥ì¥Ç¥£¥­¥å¡Œ€«€éºïœü€¹€ë¡¥p_tcb€Ç»ØÄê€·€¿
+ *  ¥¿¥¹¥¯€¬ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€Ç€¢€Ã€¿Ÿì¹ç€Ë€Ï¡€ºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯
+ *  €òÀßÄê€·€Ê€ª€·¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ€Ç€¢€ì€Ðtrue€òÊÖ€¹¡¥€œ€Š€Ç€Ê€€
+ *  Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥¥¿¥¹¥¯€ÎŸõÂÖ€Ï¹¹¿·€·€Ê€€¡¥
+ */
+extern bool_t	make_non_runnable(TCB *p_tcb);
+
+/*
+ *  µÙ»ßŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ÎŸõÂÖ€òµÙ»ßŸõÂÖ€È€¹€ë¡¥€Þ€¿¡€¥¿¥¹¥¯€Îµ¯Æ°
+ *  »þ€ËœéŽü²œ€¹€Ù€­ÊÑ¿ô€ÎœéŽü²œ€È¡€¥¿¥¹¥¯µ¯Æ°€Î€¿€á€Î¥³¥ó¥Æ¥­¥¹¥È€òÀß
+ *  Äê€¹€ë¡¥
+ */
+extern void	make_dormant(TCB *p_tcb);
+
+/*
+ *  µÙ»ßŸõÂÖ€«€éŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ÎŸõÂÖ€òµÙ»ßŸõÂÖ€«€éŒÂ¹Ô€Ç€­€ëŸõÂÖ€È€¹€ë¡¥
+ *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€ËÁ«°Ü€·€¿¥¿¥¹¥¯€Ø€Î¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬É¬Í×€ÊŸì¹ç€Ïtrue¡€
+ *  €œ€Š€Ç€Ê€€Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥
+ */
+extern bool_t	make_active(TCB *p_tcb);
+
+/*
+ *  ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€ÎÊÑ¹¹
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€ònewpri¡ÊÆâÉôÉœžœ¡Ë€ËÊÑ¹¹€¹€ë¡¥€Þ€¿¡€
+ *  É¬Í×€ÊŸì¹ç€Ë€ÏºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€ò¹¹¿·€·¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ€Ç
+ *  €¢€ì€Ðtrue€òÊÖ€¹¡¥€œ€Š€Ç€Ê€€Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥
+ */
+extern bool_t	change_priority(TCB *p_tcb, uint_t newpri);
+
+/*
+ *  ¥ì¥Ç¥£¥­¥å¡Œ€Î²óÅŸ
+ *
+ *  ¥ì¥Ç¥£¥­¥å¡ŒÃæ€Î¡€pri€Ç»ØÄê€µ€ì€ëÍ¥ÀèÅÙ€Î¥¿¥¹¥¯¥­¥å¡Œ€ò²óÅŸ€µ€»€ë¡¥
+ *  €Þ€¿¡€É¬Í×€ÊŸì¹ç€Ë€ÏºÇ¹âÍ¥Àèœç°Ì€Î¥¿¥¹¥¯€òÊÑ¹¹€·¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬ÊÝ
+ *  Î±€µ€ì€Æ€€€Ê€±€ì€Ðtrue€òÊÖ€¹¡¥€œ€Š€Ç€Ê€€Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥
+ */
+extern bool_t	rotate_ready_queue(uint_t pri);
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎžÆœÐ€·
+ *
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€òžÆ€ÓœÐ€¹¡¥žÆ€ÓœÐ€¹Á°€Ë¡€ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€Î
+ *  ÊÝÎ±Îã³°Í×°ø€ò¥¯¥ê¥¢€·¡€¥¿¥¹¥¯Îã³°œèÍý¶Ø»ßŸõÂÖ€Ë€·¡€CPU¥í¥Ã¥¯€ò²ò
+ *  œü€¹€ë¡¥
+ *
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€«€éÌá€ë€È¡€€Þ€ºCPU¥í¥Ã¥¯ŸõÂÖ€ËÌá€·¡€€œ€ÎŽÖ
+ *  €ËÊÝÎ±Îã³°Í×°ø€¬0€Ç€Ê€¯€Ê€Ã€Æ€€€ì€Ð¡€ºÆ€Ó¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ò
+ *  žÆ€ÓœÐ€¹¡¥ÊÝÎ±Îã³°Í×°ø€¬0€ÎŸì¹ç€Ë€Ï¡€Îã³°œèÍýµö²ÄŸõÂÖ€Ë€·€ÆŽØ¿ô€«
+ *  €é¥ê¥¿¡Œ¥ó€¹€ë¡¥
+ *
+ *  €³€ÎŽØ¿ô€Ï¡€ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€¬¡€¥¿¥¹¥¯Îã³°œèÍýµö²ÄŸõÂÖ¡Êenatex€¬
+ *  true¡Ë€Ç¡€ÊÝÎ±Îã³°Í×°ø€¬0€Ç€Ê€€¡Êtexptn€¬0€Ç€Ê€€¡ËŸì¹ç€ËžÆ€ÓœÐ€¹€³
+ *  €È€òÁÛÄê€·€Æ€€€ë¡¥€³€ÎŽØ¿ô€Ï¡€CPU¥í¥Ã¥¯ŸõÂÖ€ÇžÆ€ÓœÐ€µ€Ê€±€ì€Ð€Ê€é
+ *  €Ê€€¡¥
+ */
+extern void	call_texrtn(void);
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€Îµ¯Æ°
+ *
+ *  ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€¬¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€Îµ¯Æ°Ÿò·ï€òËþ€¿€·€Æ€€€ì€Ð¡€
+ *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€òžÆ€ÓœÐ€¹¡¥CPUÎã³°œèÍý¥ë¡Œ¥Á¥ó€òžÆ€ÓœÐ€¹»þ
+ *  €Ï¡€°ì»þÅª€ËCPU¥í¥Ã¥¯€ò²òœü€¹€ë¡¥
+ *
+ *  €³€ÎŽØ¿ô€Ï¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã€ä³ä¹þ€ß¥Ï¥ó¥É¥é¡¿CPUÎã³°¥Ï¥ó¥É¥é€ÎœÐžý
+ *  œèÍý€«€éžÆ€ÓœÐ€µ€ì€ë€³€È€òÁÛÄê€·€Æ€€€ë¡¥€³€ÎŽØ¿ô€Ï¡€CPU¥í¥Ã¥¯ŸõÂÖ
+ *  €ÇžÆ€ÓœÐ€µ€Ê€±€ì€Ð€Ê€é€Ê€€¡¥
+ *
+ *  ŒÂ¹ÔžúÎš€òŸå€²€ë€¿€á€Ë¡€€³€ÎŽØ¿ô€ò¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€Çµ­œÒ€·€Æ€â€è€€¡¥
+ *  €œ€ÎŸì¹ç€Ë€Ï¡€OMIT_CALLTEX€ò¥Þ¥¯¥íÄêµÁ€¹€ë¡¥
+ */
+extern void	calltex(void);
+
+#endif /* TOPPERS_TASK_H */
Index: /kernel/task_except.c
===================================================================
--- /kernel/task_except.c	(revision 7)
+++ /kernel/task_except.c	(revision 7)
@@ -0,0 +1,289 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  $Id$
+ */
+
+/*
+ *		¥¿¥¹¥¯Îã³°œèÍýµ¡Çœ
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý€ÎÍ×µá
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý€ÎÍ×µá¡ÊÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý€Î¶Ø»ß
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý€Îµö²Ä
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý¶Ø»ßŸõÂÖ€Î»²ŸÈ
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý€ÎŸõÂÖ»²ŸÈ
+ */
+#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: /kernel/task_manage.c
===================================================================
--- /kernel/task_manage.c	(revision 7)
+++ /kernel/task_manage.c	(revision 7)
@@ -0,0 +1,429 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥¿¥¹¥¯ŽÉÍýµ¡Çœ
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯€Îµ¯Æ°
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯€Îµ¯Æ°¡ÊÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯µ¯Æ°Í×µá€Î¥­¥ã¥ó¥»¥ë
+ */
+#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 */
+
+/*
+ *  Œ«¥¿¥¹¥¯€ÎœªÎ»
+ */
+#ifdef TOPPERS_ext_tsk
+
+ER
+ext_tsk(void)
+{
+	ER		ercd;
+
+	LOG_EXT_TSK_ENTER();
+	CHECK_TSKCTX();
+
+	if (t_sense_lock()) {
+		/*
+		 *  CPU¥í¥Ã¥¯ŸõÂÖ€Çext_tsk€¬žÆ€Ð€ì€¿Ÿì¹ç€Ï¡€CPU¥í¥Ã¥¯€ò²òœü€·
+		 *  €Æ€«€é¥¿¥¹¥¯€òœªÎ»€¹€ë¡¥ŒÂÁõŸå€Ï¡€¥µ¡Œ¥Ó¥¹¥³¡Œ¥ëÆâ€Ç€ÎCPU
+		 *  ¥í¥Ã¥¯€òŸÊÎ¬€¹€ì€Ð€è€€€À€±¡¥
+		 */
+	}
+	else {
+		t_lock_cpu();
+	}
+	if (disdsp) {
+		/*
+		 *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ€Çext_tsk€¬žÆ€Ð€ì€¿Ÿì¹ç€Ï¡€¥Ç¥£¥¹¥Ñ¥Ã
+		 *  ¥Áµö²ÄŸõÂÖ€Ë€·€Æ€«€é¥¿¥¹¥¯€òœªÎ»€¹€ë¡¥
+		 */
+		disdsp = false;
+	}
+	if (!ipmflg) {
+		/*
+		 *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡ÊIPM¡Ë€¬TIPM_ENAALL°Ê³°€ÎŸõÂÖ€Çext_tsk
+		 *  €¬žÆ€Ð€ì€¿Ÿì¹ç€Ï¡€IPM€òTIPM_ENAALL€Ë€·€Æ€«€é¥¿¥¹¥¯€òœªÎ»€¹
+		 *  €ë¡¥
+		 */
+		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 */
+
+/*
+ *  ¥¿¥¹¥¯€Î¶¯À©œªÎ»
+ */
+#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€ÏŒ«¥¿¥¹¥¯€Ç€Ê€€€¿€á¡€¡Ê¥·¥ó¥°¥ë¥×¥í¥»¥Ã¥µ€Ç€Ï¡ËŒÂ
+			 *  ¹ÔŸõÂÖ€Ç€Ê€¯¡€make_non_runnable(p_tcb)€Ç¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã
+			 *  ¥Á€¬É¬Í×€Ë€Ê€ë€³€È€Ï€Ê€€¡¥
+			 */
+			(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 */
+
+/*
+ *  ¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ€ÎÊÑ¹¹
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯Í¥ÀèÅÙ€Î»²ŸÈ
+ */
+#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 */
+
+/*
+ *  Œ«¥¿¥¹¥¯€Î³ÈÄ¥ŸðÊó€Î»²ŸÈ
+ */
+#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: /kernel/task_refer.c
===================================================================
--- /kernel/task_refer.c	(revision 7)
+++ /kernel/task_refer.c	(revision 7)
@@ -0,0 +1,204 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥¿¥¹¥¯€ÎŸõÂÖ»²ŸÈµ¡Çœ
+ */
+
+#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"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯€ÎŸõÂÖ»²ŸÈ
+ */
+#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)) {
+		/*
+ 		 *  ÂÐŸÝ¥¿¥¹¥¯€¬µÙ»ßŸõÂÖ€ÎŸì¹ç
+		 */
+		pk_rtsk->tskstat = TTS_DMT;
+	}
+	else {
+		/*
+ 		 *  ¥¿¥¹¥¯ŸõÂÖ€ÎŒèœÐ€·
+		 */
+		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;
+		}
+
+		/*
+ 		 *  žœºßÍ¥ÀèÅÙ€È¥Ù¡Œ¥¹Í¥ÀèÅÙ€ÎŒèœÐ€·
+		 */
+		pk_rtsk->tskpri = EXT_TSKPRI(p_tcb->priority);
+		pk_rtsk->tskbpri = EXT_TSKPRI(p_tcb->priority);
+
+		if (TSTAT_WAITING(tstat)) {
+			/*
+	 		 *  ÂÔ€ÁÍ×°ø€ÈÂÔ€ÁÂÐŸÝ€Î¥ª¥Ö¥ž¥§¥¯¥È€ÎID€ÎŒèœÐ€·
+			 */
+			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;
+			}
+
+			/*
+	 		 *  ¥¿¥€¥à¥¢¥Š¥È€¹€ë€Þ€Ç€Î»þŽÖ€ÎŒèœÐ€·
+			 */
+			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;
+			}
+		}
+
+		/*
+ 		 *  µ¯Ÿ²Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô€ÎŒèœÐ€·
+		 */
+		pk_rtsk->wupcnt = p_tcb->wupque ? 1U : 0U;
+	}
+
+	/*
+	 *  µ¯Æ°Í×µá¥­¥å¡Œ¥€¥ó¥°¿ô€ÎŒèœÐ€·
+	 */
+	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: /kernel/task_sync.c
===================================================================
--- /kernel/task_sync.c	(revision 7)
+++ /kernel/task_sync.c	(revision 7)
@@ -0,0 +1,531 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥¿¥¹¥¯ÉÕÂ°Æ±Žüµ¡Çœ
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "wait.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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 */
+
+/*
+ *  µ¯Ÿ²ÂÔ€Á
+ */
+#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 */
+
+/*
+ *  µ¯Ÿ²ÂÔ€Á¡Ê¥¿¥€¥à¥¢¥Š¥È€¢€ê¡Ë
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯€Îµ¯Ÿ²
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯€Îµ¯Ÿ²¡ÊÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ */
+#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 */
+
+/*
+ *  ¥¿¥¹¥¯µ¯Ÿ²Í×µá€Î¥­¥ã¥ó¥»¥ë
+ */
+#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 */
+
+/*
+ *  ÂÔ€ÁŸõÂÖ€Î¶¯À©²òœü¡ÊÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¡Ë
+ */
+#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 */
+
+/*
+ *  ¶¯À©ÂÔ€ÁŸõÂÖ€Ø€Î°Ü¹Ô
+ */
+#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)) {
+		/*
+		 *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€«€é¶¯À©ÂÔ€ÁŸõÂÖ€Ø€ÎÁ«°Ü
+		 */
+		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 {
+		/*
+		 *  ÂÔ€ÁŸõÂÖ€«€éÆóœÅÂÔ€ÁŸõÂÖ€Ø€ÎÁ«°Ü
+		 */
+		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 */
+
+/*
+ *  ¶¯À©ÂÔ€ÁŸõÂÖ€«€é€ÎºÆ³«
+ */
+#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)) {
+		/*
+		 *  ¶¯À©ÂÔ€ÁŸõÂÖ€«€éŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ø€ÎÁ«°Ü
+		 */
+		p_tcb->tstat = TS_RUNNABLE;
+		LOG_TSKSTAT(p_tcb);
+		if (make_runnable(p_tcb)) {
+			dispatch();
+		}
+		ercd = E_OK;
+	}
+	else {
+		/*
+		 *  ÆóœÅÂÔ€ÁŸõÂÖ€«€éÂÔ€ÁŸõÂÖ€Ø€ÎÁ«°Ü
+		 */
+		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 */
+
+/*
+ *  Œ«¥¿¥¹¥¯€ÎÃÙ±ä
+ */
+#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: /kernel/time_event.c
===================================================================
--- /kernel/time_event.c	(revision 7)
+++ /kernel/time_event.c	(revision 7)
@@ -0,0 +1,399 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2013 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  $Id$
+ */
+
+/*
+ *		¥¿¥€¥à¥€¥Ù¥ó¥ÈŽÉÍý¥â¥ž¥å¡Œ¥ë
+ */
+
+#include "kernel_impl.h"
+#include "time_event.h"
+
+/*
+ *  ¥¿¥€¥à¥€¥Ù¥ó¥È¥Ò¡Œ¥×Áàºî¥Þ¥¯¥í
+ */
+#define	PARENT(index)		((index) >> 1)		/* ¿Æ¥Î¡Œ¥É€òµá€á€ë */
+#define	LCHILD(index)		((index) << 1)		/* ºž€Î»Ò¥Î¡Œ¥É€òµá€á€ë */
+#define	TMEVT_NODE(index)	(tmevt_heap[(index) - 1])
+
+/*
+ *  ¥€¥Ù¥ó¥ÈÈ¯Àž»þ¹ïÈæ³Ó¥Þ¥¯¥í
+ *
+ *  ¥€¥Ù¥ó¥ÈÈ¯Àž»þ¹ï€Ï¡€min_time€«€é€ÎÁêÂÐÃÍ€ÇÈæ³Ó€¹€ë¡¥€¹€Ê€ï€Á¡€
+ *  min_time€òºÇŸ®ÃÍ¡ÊºÇ€â¶á€€»þ¹ï¡Ë¡€mit_time-1€¬ºÇÂçÃÍ¡ÊºÇ€â±ó€€»þ¹ï¡Ë
+ *  €È€ß€Ê€·€ÆÈæ³Ó€¹€ë¡¥
+ */
+#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
+
+/*
+ *  žœºß€Î¥·¥¹¥Æ¥à»þ¹ï¡ÊÃ±°Ì: 1¥ß¥êÉÃ¡Ë
+ *
+ *  ž·Ì©€Ë€Ï¡€Á°€Î¥¿¥€¥à¥Æ¥£¥Ã¥¯€Î¥·¥¹¥Æ¥à»þ¹ï¡¥
+ */
+EVTTIM	current_time;
+
+/*
+ *  ¥¿¥€¥à¥€¥Ù¥ó¥È¥Ò¡Œ¥×Ãæ€ÇÍ­žú€ÊºÇŸ®€Î¥·¥¹¥Æ¥à»þ¹ï¡ÊÃ±°Ì: 1¥ß¥êÉÃ¡Ë
+ */
+EVTTIM	min_time;
+
+/*
+ *  Œ¡€Î¥¿¥€¥à¥Æ¥£¥Ã¥¯€Î¥·¥¹¥Æ¥à»þ¹ï¡ÊÃ±°Ì: 1¥ß¥êÉÃ¡Ë
+ */
+EVTTIM	next_time;
+
+/*
+ *  ¥·¥¹¥Æ¥à»þ¹ïÀÑ»»ÍÑÊÑ¿ô¡ÊÃ±°Ì: 1/TIC_DENO¥ß¥êÉÃ¡Ë
+ */
+#if TIC_DENO != 1U
+uint_t	next_subtime;
+#endif /* TIC_DENO != 1U */
+
+/*
+ *  ¥¿¥€¥à¥€¥Ù¥ó¥È¥Ò¡Œ¥×€ÎºÇžå€Î»ÈÍÑÎÎ°è€Î¥€¥ó¥Ç¥Ã¥¯¥¹
+ */
+uint_t	last_index;
+
+/*
+ *  ¥¿¥€¥Þ¥â¥ž¥å¡Œ¥ë€ÎœéŽü²œ
+ */
+void
+initialize_tmevt(void)
+{
+	current_time = 0U;
+	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 */
+
+/*
+ *  ¥¿¥€¥à¥€¥Ù¥ó¥È€ÎÁÞÆþ°ÌÃÖ€òŸåžþ€­€ËÃµº÷
+ *
+ *  »þ¹ïtime€ËÈ¯Àž€¹€ë¥¿¥€¥à¥€¥Ù¥ó¥È€òÁÞÆþ€¹€ë¥Î¡Œ¥É€ò¶õ€±€ë€¿€á€Ë¡€
+ *  ¥Ò¡Œ¥×€ÎŸå€Ëžþ€«€Ã€Æ¶õ¥Î¡Œ¥É€ò°ÜÆ°€µ€»€ë¡¥°ÜÆ°Á°€Î¶õ¥Î¡Œ¥É€Î°ÌÃÖ€ò
+ *  index€ËÅÏ€¹€È¡€°ÜÆ°žå€Î¶õ¥Î¡Œ¥É€Î°ÌÃÖ¡Ê€¹€Ê€ï€ÁÁÞÆþ°ÌÃÖ¡Ë€òÊÖ€¹¡¥
+ */
+#ifdef TOPPERS_tmeup
+
+uint_t
+tmevt_up(uint_t index, EVTTIM time)
+{
+	uint_t	parent;
+
+	while (index > 1) {
+		/*
+		 *  ¿Æ¥Î¡Œ¥É€Î¥€¥Ù¥ó¥ÈÈ¯Àž»þ¹ï€ÎÊý€¬Áá€€¡Ê€Þ€¿€ÏÆ±€ž¡Ë€Ê€é€Ð¡€
+		 *  index€¬ÁÞÆþ°ÌÃÖ€Ê€Î€Ç¥ë¡Œ¥×€òÈŽ€±€ë¡¥
+		 */
+		parent = PARENT(index);
+		if (EVTTIM_LE(TMEVT_NODE(parent).time, time)) {
+			break;
+		}
+
+		/*
+		 *  ¿Æ¥Î¡Œ¥É€òindex€Î°ÌÃÖ€Ë°ÜÆ°€µ€»€ë¡¥
+		 */
+		TMEVT_NODE(index) = TMEVT_NODE(parent);
+		TMEVT_NODE(index).p_tmevtb->index = index;
+
+		/*
+		 *  index€ò¿Æ¥Î¡Œ¥É€Î°ÌÃÖ€Ë¹¹¿·¡¥
+		 */
+		index = parent;
+	}
+	return(index);
+}
+
+#endif /* TOPPERS_tmeup */
+
+/*
+ *  ¥¿¥€¥à¥€¥Ù¥ó¥È€ÎÁÞÆþ°ÌÃÖ€ò²Œžþ€­€ËÃµº÷
+ *
+ *  »þ¹ïtime€ËÈ¯Àž€¹€ë¥¿¥€¥à¥€¥Ù¥ó¥È€òÁÞÆþ€¹€ë¥Î¡Œ¥É€ò¶õ€±€ë€¿€á€Ë¡€
+ *  ¥Ò¡Œ¥×€Î²Œ€Ëžþ€«€Ã€Æ¶õ¥Î¡Œ¥É€ò°ÜÆ°€µ€»€ë¡¥°ÜÆ°Á°€Î¶õ¥Î¡Œ¥É€Î°ÌÃÖ€ò 
+ *  index€ËÅÏ€¹€È¡€°ÜÆ°žå€Î¶õ¥Î¡Œ¥É€Î°ÌÃÖ¡Ê€¹€Ê€ï€ÁÁÞÆþ°ÌÃÖ¡Ë€òÊÖ€¹¡¥
+ */
+#ifdef TOPPERS_tmedown
+
+uint_t
+tmevt_down(uint_t index, EVTTIM time)
+{
+	uint_t	child;
+
+	while ((child = LCHILD(index)) <= last_index) {
+		/*
+		 *  ºž±Š€Î»Ò¥Î¡Œ¥É€Î¥€¥Ù¥ó¥ÈÈ¯Àž»þ¹ï€òÈæ³Ó€·¡€Áá€€Êý€Î»Ò¥Î¡Œ¥É
+		 *  €Î°ÌÃÖ€òchild€ËÀßÄê€¹€ë¡¥°Ê²Œ€Î»Ò¥Î¡Œ¥É€Ï¡€€³€³€ÇÁª€Ð€ì€¿Êý
+		 *  €Î»Ò¥Î¡Œ¥É€Î€³€È¡¥
+		 */
+		if (child + 1 <= last_index
+						&& EVTTIM_LT(TMEVT_NODE(child + 1).time,
+										TMEVT_NODE(child).time)) {
+			child = child + 1;
+		}
+
+		/*
+		 *  »Ò¥Î¡Œ¥É€Î¥€¥Ù¥ó¥ÈÈ¯Àž»þ¹ï€ÎÊý€¬ÃÙ€€¡Ê€Þ€¿€ÏÆ±€ž¡Ë€Ê€é€Ð¡€
+		 *  index€¬ÁÞÆþ°ÌÃÖ€Ê€Î€Ç¥ë¡Œ¥×€òÈŽ€±€ë¡¥
+		 */
+		if (EVTTIM_LE(time, TMEVT_NODE(child).time)) {
+			break;
+		}
+
+		/*
+		 *  »Ò¥Î¡Œ¥É€òindex€Î°ÌÃÖ€Ë°ÜÆ°€µ€»€ë¡¥
+		 */
+		TMEVT_NODE(index) = TMEVT_NODE(child);
+		TMEVT_NODE(index).p_tmevtb->index = index;
+
+		/*
+		 *  index€ò»Ò¥Î¡Œ¥É€Î°ÌÃÖ€Ë¹¹¿·¡¥
+		 */
+		index = child;
+	}
+	return(index);
+}
+
+#endif /* TOPPERS_tmedown */
+
+/*
+ *  ¥¿¥€¥à¥€¥Ù¥ó¥È¥Ò¡Œ¥×€Ø€ÎÅÐÏ¿
+ *
+ *  p_tmevtb€Ç»ØÄê€·€¿¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯€ò¡€time€Ç»ØÄê€·€¿»þŽÖ€¬·Ð
+ *  ²ážå€Ë¥€¥Ù¥ó¥È€¬È¯Àž€¹€ë€è€Š€Ë¡€¥¿¥€¥à¥€¥Ù¥ó¥È¥Ò¡Œ¥×€ËÅÐÏ¿€¹€ë¡¥
+ */
+#ifdef TOPPERS_tmeins
+
+void
+tmevtb_insert(TMEVTB *p_tmevtb, EVTTIM time)
+{
+	uint_t	index;
+
+	/*
+	 *  last_index€ò¥€¥ó¥¯¥ê¥á¥ó¥È€·¡€€œ€³€«€éŸå€ËÁÞÆþ°ÌÃÖ€òÃµ€¹¡¥
+	 */
+	index = tmevt_up(++last_index, time);
+
+	/*
+	 *  ¥¿¥€¥à¥€¥Ù¥ó¥È€òindex€Î°ÌÃÖ€ËÁÞÆþ€¹€ë¡¥
+	 */ 
+	TMEVT_NODE(index).time = time;
+	TMEVT_NODE(index).p_tmevtb = p_tmevtb;
+	p_tmevtb->index = index;
+}
+
+#endif /* TOPPERS_tmeins */
+
+/*
+ *  ¥¿¥€¥à¥€¥Ù¥ó¥È¥Ò¡Œ¥×€«€é€Îºïœü
+ */
+#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;
+
+	/*
+	 *  ºïœü€Ë€è€ê¥¿¥€¥à¥€¥Ù¥ó¥È¥Ò¡Œ¥×€¬¶õ€Ë€Ê€ëŸì¹ç€Ï²¿€â€·€Ê€€¡¥
+	 */
+	if (--last_index == 0) {
+		return;
+	}
+
+	/*
+	 *  ºïœü€·€¿¥Î¡Œ¥É€Î°ÌÃÖ€ËºÇžå€Î¥Î¡Œ¥É¡Êlast_index+1€Î°ÌÃÖ€Î¥Î¡Œ¥É¡Ë
+	 *  €òÁÞÆþ€·¡€€œ€ì€òÅ¬ÀÚ€Ê°ÌÃÖ€Ø°ÜÆ°€µ€»€ë¡¥ŒÂºÝ€Ë€Ï¡€ºÇžå€Î¥Î¡Œ¥É
+	 *  €òŒÂºÝ€ËÁÞÆþ€¹€ë€Î€Ç€Ï€Ê€¯¡€ºïœü€·€¿¥Î¡Œ¥É€Î°ÌÃÖ€¬¶õ¥Î¡Œ¥É€Ë€Ê
+	 *  €ë€Î€Ç¡€ºÇžå€Î¥Î¡Œ¥É€òÁÞÆþ€¹€Ù€­°ÌÃÖ€Øžþ€±€Æ¶õ¥Î¡Œ¥É€ò°ÜÆ°€µ€»
+	 *  €ë¡¥
+	 *  ºÇžå€Î¥Î¡Œ¥É€Î¥€¥Ù¥ó¥ÈÈ¯Àž»þ¹ï€¬¡€ºïœü€·€¿¥Î¡Œ¥É€Î¿Æ¥Î¡Œ¥É€Î¥€
+	 *  ¥Ù¥ó¥ÈÈ¯Àž»þ¹ï€è€êÁ°€ÎŸì¹ç€Ë€Ï¡€Ÿå€Ëžþ€«€Ã€ÆÁÞÆþ°ÌÃÖ€òÃµ€¹¡¥€œ
+	 *  €Š€Ç€Ê€€Ÿì¹ç€Ë€Ï¡€²Œ€Ëžþ€«€Ã€ÆÃµ€¹¡¥
+	 */
+	if (index > 1 && EVTTIM_LT(event_time,
+								TMEVT_NODE(parent = PARENT(index)).time)) {
+		/*
+		 *  ¿Æ¥Î¡Œ¥É€òindex€Î°ÌÃÖ€Ë°ÜÆ°€µ€»€ë¡¥
+		 */
+		TMEVT_NODE(index) = TMEVT_NODE(parent);
+		TMEVT_NODE(index).p_tmevtb->index = index;
+
+		/*
+		 *  ºïœü€·€¿¥Î¡Œ¥É€Î¿Æ¥Î¡Œ¥É€«€éŸå€Ëžþ€«€Ã€ÆÁÞÆþ°ÌÃÖ€òÃµ€¹¡¥
+		 */
+		index = tmevt_up(parent, event_time);
+	}
+	else {
+		/*
+		 *  ºïœü€·€¿¥Î¡Œ¥É€«€é²Œ€Ëžþ€«€Ã€ÆÁÞÆþ°ÌÃÖ€òÃµ€¹¡¥
+		 */
+		index = tmevt_down(index, event_time);
+	}
+
+	/*
+	 *  ºÇžå€Î¥Î¡Œ¥É€òindex€Î°ÌÃÖ€ËÁÞÆþ€¹€ë¡¥
+	 */ 
+	TMEVT_NODE(index) = TMEVT_NODE(last_index + 1);
+	TMEVT_NODE(index).p_tmevtb->index = index;
+}
+
+#endif /* TOPPERS_tmedel */
+
+/*
+ *  ¥¿¥€¥à¥€¥Ù¥ó¥È¥Ò¡Œ¥×€ÎÀèÆ¬€Î¥Î¡Œ¥É€Îºïœü
+ */
+Inline void
+tmevtb_delete_top(void)
+{
+	uint_t	index;
+	EVTTIM	event_time = TMEVT_NODE(last_index).time;
+
+	/*
+	 *  ºïœü€Ë€è€ê¥¿¥€¥à¥€¥Ù¥ó¥È¥Ò¡Œ¥×€¬¶õ€Ë€Ê€ëŸì¹ç€Ï²¿€â€·€Ê€€¡¥
+	 */
+	if (--last_index == 0) {
+		return;
+	}
+
+	/*
+	 *  ¥ë¡Œ¥È¥Î¡Œ¥É€ËºÇžå€Î¥Î¡Œ¥É¡Êlast_index + 1 €Î°ÌÃÖ€Î¥Î¡Œ¥É¡Ë€ò
+	 *  ÁÞÆþ€·¡€€œ€ì€òÅ¬ÀÚ€Ê°ÌÃÖ€Ø°ÜÆ°€µ€»€ë¡¥ŒÂºÝ€Ë€Ï¡€ºÇžå€Î¥Î¡Œ¥É€ò
+	 *  ŒÂºÝ€ËÁÞÆþ€¹€ë€Î€Ç€Ï€Ê€¯¡€¥ë¡Œ¥È¥Î¡Œ¥É€¬¶õ¥Î¡Œ¥É€Ë€Ê€ë€Î€Ç¡€ºÇ
+	 *  žå€Î¥Î¡Œ¥É€òÁÞÆþ€¹€Ù€­°ÌÃÖ€Øžþ€±€Æ¶õ¥Î¡Œ¥É€ò°ÜÆ°€µ€»€ë¡¥
+	 */
+	index = tmevt_down(1, event_time);
+
+	/*
+	 *  ºÇžå€Î¥Î¡Œ¥É€òindex€Î°ÌÃÖ€ËÁÞÆþ€¹€ë¡¥
+	 */ 
+	TMEVT_NODE(index) = TMEVT_NODE(last_index + 1);
+	TMEVT_NODE(index).p_tmevtb->index = index;
+}
+
+/*
+ *  ¥¿¥€¥à¥€¥Ù¥ó¥È€Þ€Ç€Î»Ä€ê»þŽÖ€Î·×»»
+ */
+#ifdef TOPPERS_tmeltim
+
+RELTIM
+tmevt_lefttim(TMEVTB *p_tmevtb)
+{
+	EVTTIM	time;
+
+	time = TMEVT_NODE(p_tmevtb->index).time;
+	if (EVTTIM_LE(time, next_time)) {
+		/*
+		 *  Œ¡€Î¥¿¥€¥à¥Æ¥£¥Ã¥¯€ÇœèÍý€µ€ì€ëŸì¹ç€Ë€Ï0€òÊÖ€¹¡¥
+		 */
+		return(0U);
+	}
+	else {
+		return((RELTIM)(time - base_time));
+	}
+}
+
+#endif /* TOPPERS_tmeltim */
+
+/*
+ *  ¥¿¥€¥à¥Æ¥£¥Ã¥¯€Î¶¡µë
+ */
+#ifdef TOPPERS_sigtim
+
+void
+signal_time(void)
+{
+	TMEVTB	*p_tmevtb;
+
+	assert(sense_context());
+	assert(!i_sense_lock());
+
+	i_lock_cpu();
+
+	/*
+	 *  current_time€ò¹¹¿·€¹€ë¡¥
+	 */
+	current_time = next_time;
+
+	/*
+	 *  next_time¡€next_subtime€ò¹¹¿·€¹€ë¡¥
+	 */
+#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€è€ê¥€¥Ù¥ó¥ÈÈ¯Àž»þ¹ï€ÎÁá€€¡Ê€Þ€¿€ÏÆ±€ž¡Ë¥¿¥€¥à¥€¥Ù
+	 *  ¥ó¥È€ò¡€¥¿¥€¥à¥€¥Ù¥ó¥È¥Ò¡Œ¥×€«€éºïœü€·¡€¥³¡Œ¥ë¥Ð¥Ã¥¯ŽØ¿ô€òžÆ€Ó
+	 *  œÐ€¹¡¥
+	 */
+	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€ò¹¹¿·€¹€ë¡¥
+	 */
+	min_time = current_time;
+
+	i_unlock_cpu();
+}
+
+#endif /* TOPPERS_sigtim */
Index: /kernel/time_event.h
===================================================================
--- /kernel/time_event.h	(revision 7)
+++ /kernel/time_event.h	(revision 7)
@@ -0,0 +1,200 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  $Id$
+ */
+
+/*
+ *		¥¿¥€¥à¥€¥Ù¥ó¥ÈŽÉÍý¥â¥ž¥å¡Œ¥ë
+ */
+
+#ifndef TOPPERS_TIME_EVENT_H
+#define TOPPERS_TIME_EVENT_H
+
+/*
+ *  ¥€¥Ù¥ó¥ÈÈ¯Àž»þ¹ï€Î¥Ç¡Œ¥¿·¿€ÎÄêµÁ
+ *
+ *  EVTTIM€Ï¡€RELTIM€È€·€Æ»ØÄê€Ç€­€ëÈÏ°Ï€è€ê€â¹­€€ÈÏ°Ï€òÉœžœ€Ç€­€ëÉ¬Í×
+ *  €¬€¢€ë¡¥ŠÌITRON4.0»ÅÍÍ€Î¥¹¥¿¥ó¥À¡Œ¥É¥×¥í¥Õ¥¡¥€¥ë€Ç€Ï¡€RELTIM€¬16¥Ó¥Ã
+ *  ¥È°ÊŸå€Ç€Ê€±€ì€Ð€Ê€é€Ê€€€¿€á¡€EVTTIM€Ï17¥Ó¥Ã¥È°ÊŸå€Ç€¢€ë€³€È€¬É¬Í×
+ *  €Ç€¢€ë¡¥€œ€Î€¿€á¡€16¥Ó¥Ã¥È€Ë€Ê€ëŸì¹ç€¬€¢€ëuint_t€Ç€Ï€Ê€¯¡€ulong_t€Ë
+ *  ÄêµÁ€·€Æ€€€ë¡¥
+ */
+typedef ulong_t	EVTTIM;
+
+/* 
+ *  ¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯€Î¥Ç¡Œ¥¿·¿€ÎÄêµÁ
+ */
+typedef void	(*CBACK)(void *);	/* ¥³¡Œ¥ë¥Ð¥Ã¥¯ŽØ¿ô€Î·¿ */
+
+typedef struct time_event_block {
+	uint_t	index;			/* ¥¿¥€¥à¥€¥Ù¥ó¥È¥Ò¡Œ¥×Ãæ€Ç€Î°ÌÃÖ */
+	CBACK	callback;		/* ¥³¡Œ¥ë¥Ð¥Ã¥¯ŽØ¿ô */
+	void	*arg;			/* ¥³¡Œ¥ë¥Ð¥Ã¥¯ŽØ¿ô€ØÅÏ€¹°ú¿ô */
+} TMEVTB;
+
+/*
+ *  ¥¿¥€¥à¥€¥Ù¥ó¥È¥Ò¡Œ¥×Ãæ€Î¥Î¡Œ¥É€Î¥Ç¡Œ¥¿·¿€ÎÄêµÁ
+ */
+typedef struct time_event_node {
+	EVTTIM	time;			/* ¥€¥Ù¥ó¥ÈÈ¯Àž»þ¹ï */
+	TMEVTB	*p_tmevtb;		/* ÂÐ±þ€¹€ë¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯ */
+} TMEVTN;
+
+/*
+ *  ¥¿¥€¥à¥€¥Ù¥ó¥È¥Ò¡Œ¥×¡Êkernel_cfg.c¡Ë
+ */
+extern TMEVTN	tmevt_heap[];
+
+/*
+ *  žœºß€Î¥·¥¹¥Æ¥à»þ¹ï¡ÊÃ±°Ì: 1¥ß¥êÉÃ¡Ë
+ *
+ *  ¥·¥¹¥Æ¥àµ¯Æ°»þ€Ë0€ËœéŽü²œ€µ€ì¡€°Ê¹ß¡€¥¿¥€¥à¥Æ¥£¥Ã¥¯€¬¶¡µë€µ€ì€ëÅÙ€Ë
+ *  Ã±ÄŽ€ËÁý²Ã€¹€ë¡¥
+ */
+extern EVTTIM	current_time;
+
+/*
+ *  ¥¿¥€¥à¥€¥Ù¥ó¥È¥Ò¡Œ¥×Ãæ€ÇÍ­žú€ÊºÇŸ®€Î¥·¥¹¥Æ¥à»þ¹ï¡ÊÃ±°Ì: 1¥ß¥êÉÃ¡Ë
+ */
+extern EVTTIM	min_time;
+
+/*
+ *  Œ¡€Î¥¿¥€¥à¥Æ¥£¥Ã¥¯€Î¥·¥¹¥Æ¥à»þ¹ï¡ÊÃ±°Ì: 1¥ß¥êÉÃ¡Ë
+ */
+extern EVTTIM	next_time;
+
+/*
+ *  ¥·¥¹¥Æ¥à»þ¹ïÀÑ»»ÍÑÊÑ¿ô¡ÊÃ±°Ì: 1/TIC_DENO¥ß¥êÉÃ¡Ë
+ *
+ *  Œ¡€Î¥¿¥€¥à¥Æ¥£¥Ã¥¯€Î¥·¥¹¥Æ¥à»þ¹ï€Î²Œ°Ì·å€òŒš€¹¡ÊŸå°Ì·å€Ïnext_time¡Ë¡¥
+ *  TIC_DENO€¬1€Î»þ€Ï¡€²Œ°Ì·å€ÏŸï€Ë0€Ç€¢€ë€¿€á¡€€³€ÎÊÑ¿ô€ÏÉ¬Í×€Ê€€¡¥
+ */
+#if TIC_DENO != 1U
+extern uint_t	next_subtime;
+#endif /* TIC_DENO != 1U */
+
+/*
+ *  ÁêÂÐ»þŽÖ€ÎŽðœà»þ¹ï¡ÊÃ±°Ì: 1¥ß¥êÉÃ¡Ë
+ *
+ *  Œ¡€Î¥¿¥€¥à¥Æ¥£¥Ã¥¯€Î¥·¥¹¥Æ¥à»þ¹ï€òÀÚ€êŸå€²€¿»þ¹ï¡¥TIC_DENO€¬1€Î»þ
+ *  €Ï¡€next_time€Ë°ìÃ×€¹€ë¡¥
+ */
+#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 */
+
+/*
+ *  ¥¿¥€¥à¥€¥Ù¥ó¥È¥Ò¡Œ¥×€ÎºÇžå€Î»ÈÍÑÎÎ°è€Î¥€¥ó¥Ç¥Ã¥¯¥¹
+ *
+ *  ¥¿¥€¥à¥€¥Ù¥ó¥È¥Ò¡Œ¥×€ËÅÐÏ¿€µ€ì€Æ€€€ë¥¿¥€¥à¥€¥Ù¥ó¥È€Î¿ô€Ë°ìÃ×€¹€ë¡¥
+ */
+extern uint_t	last_index;
+
+/*
+ *  ¥¿¥€¥à¥€¥Ù¥ó¥ÈŽÉÍý¥â¥ž¥å¡Œ¥ë€ÎœéŽü²œ
+ */
+extern void	initialize_tmevt(void);
+
+/*
+ *  ¥¿¥€¥à¥€¥Ù¥ó¥È€ÎÁÞÆþ°ÌÃÖ€ÎÃµº÷
+ */
+extern uint_t	tmevt_up(uint_t index, EVTTIM time);
+extern uint_t	tmevt_down(uint_t index, EVTTIM time);
+
+/*
+ *  ¥¿¥€¥à¥€¥Ù¥ó¥È¥Ò¡Œ¥×€Ø€ÎÅÐÏ¿€Èºïœü
+ */
+extern void	tmevtb_insert(TMEVTB *p_tmevtb, EVTTIM time);
+extern void	tmevtb_delete(TMEVTB *p_tmevtb);
+
+/*
+ *  ¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯€ÎÅÐÏ¿¡ÊÁêÂÐ»þŽÖ»ØÄê¡Ë
+ *
+ *  time€Ç»ØÄê€·€¿ÁêÂÐ»þŽÖ€¬·Ð²á€·€¿žå€Ë¡€arg€ò°ú¿ô€È€·€Æcallback€¬žÆ
+ *  €ÓœÐ€µ€ì€ë€è€Š€Ë¡€p_tmevtb€Ç»ØÄê€·€¿¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯€òÅÐÏ¿€¹
+ *  €ë¡¥
+ *  
+ */
+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);
+}
+
+/*
+ *  ¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯€ÎÅÐÏ¿¡Ê¥€¥Ù¥ó¥ÈÈ¯Àž»þ¹ï»ØÄê¡Ë
+ *
+ *  time€Ç»ØÄê€·€¿¥€¥Ù¥ó¥ÈÈ¯Àž»þ¹ï€Ë¡€arg€ò°ú¿ô€È€·€Æcallback€¬žÆ€ÓœÐ
+ *  €µ€ì€ë€è€Š€Ë¡€p_tmevtb€Ç»ØÄê€·€¿¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯€òÅÐÏ¿€¹€ë¡¥
+ */
+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);
+}
+
+/*
+ *  ¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯€ÎÅÐÏ¿²òœü
+ */
+Inline void
+tmevtb_dequeue(TMEVTB *p_tmevtb)
+{
+	tmevtb_delete(p_tmevtb);
+}
+
+/*
+ *  ¥¿¥€¥à¥€¥Ù¥ó¥È€Þ€Ç€Î»Ä€ê»þŽÖ€Î·×»»
+ */
+extern RELTIM	tmevt_lefttim(TMEVTB *p_tmevtb);
+
+/*
+ *  ¥¿¥€¥à¥Æ¥£¥Ã¥¯€Î¶¡µë
+ */
+extern void	signal_time(void);
+
+#endif /* TOPPERS_TIME_EVENT_H */
Index: /kernel/time_manage.c
===================================================================
--- /kernel/time_manage.c	(revision 7)
+++ /kernel/time_manage.c	(revision 7)
@@ -0,0 +1,144 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  $Id$
+ */
+
+/*
+ *		¥·¥¹¥Æ¥à»þ¹ïŽÉÍýµ¡Çœ
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "time_event.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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 */
+
+/*
+ *  ¥·¥¹¥Æ¥à»þ¹ï€Î»²ŸÈ
+ */
+#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 */
+
+/*
+ *  À­ÇœÉŸ²ÁÍÑ¥·¥¹¥Æ¥à»þ¹ï€Î»²ŸÈ
+ */
+#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: /kernel/wait.c
===================================================================
--- /kernel/wait.c	(revision 7)
+++ /kernel/wait.c	(revision 7)
@@ -0,0 +1,213 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		ÂÔ€ÁŸõÂÖŽÉÍý¥â¥ž¥å¡Œ¥ë
+ */
+
+#include "kernel_impl.h"
+#include "wait.h"
+
+/*
+ *  ÂÔ€ÁŸõÂÖ€Ø€ÎÁ«°Ü¡Ê¥¿¥€¥à¥¢¥Š¥È»ØÄê¡Ë
+ */
+#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 */
+
+/*
+ *  ¥¿¥€¥à¥¢¥Š¥È€ËÈŒ€ŠÂÔ€Á²òœü
+ */
+#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;
+	}
+
+	/*
+	 *  €³€³€ÇÍ¥ÀèÅÙ€Î¹â€€³ä¹þ€ß€òŒõ€±ÉÕ€±€ë¡¥
+	 */
+	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;
+	}
+
+	/*
+	 *  €³€³€ÇÍ¥ÀèÅÙ€Î¹â€€³ä¹þ€ß€òŒõ€±ÉÕ€±€ë¡¥
+	 */
+	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 */
+
+/*
+ *  ŒÂ¹ÔÃæ€Î¥¿¥¹¥¯€ÎÆ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€Á¥­¥å¡Œ€Ø€ÎÁÞÆþ
+ *
+ *  ŒÂ¹ÔÃæ€Î¥¿¥¹¥¯€ò¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€Á¥­¥å¡Œ€ØÁÞÆþ€¹€ë¡¥¥ª
+ *  ¥Ö¥ž¥§¥¯¥È€ÎÂ°À­€Ë±þ€ž€Æ¡€FIFOœç€Þ€¿€Ï¥¿¥¹¥¯Í¥ÀèÅÙœç€ÇÁÞÆþ€¹€ë¡¥
+ */
+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));
+	}
+}
+
+/*
+ *  Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ËÂÐ€¹€ëÂÔ€ÁŸõÂÖ€Ø€ÎÁ«°Ü
+ */
+#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 */
+
+/*
+ *  ÂÔ€Á¥­¥å¡Œ€ÎœéŽü²œ
+ */
+#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: /kernel/wait.h
===================================================================
--- /kernel/wait.h	(revision 7)
+++ /kernel/wait.h	(revision 7)
@@ -0,0 +1,288 @@
+/*
+ *  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-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$
+ */
+
+/*
+ *		ÂÔ€ÁŸõÂÖŽÉÍý¥â¥ž¥å¡Œ¥ë
+ */
+
+#ifndef TOPPERS_WAIT_H
+#define TOPPERS_WAIT_H
+
+#include "task.h"
+#include "time_event.h"
+
+/*
+ *  ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙœç€ÎÂÔ€Á¥­¥å¡Œ€Ø€ÎÁÞÆþ
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ò¡€¥¿¥¹¥¯Í¥ÀèÅÙœç€Î¥­¥å¡Œp_queue€ËÁÞÆþ€¹€ë¡¥
+ *  ¥­¥å¡Œ€ÎÃæ€ËÆ±€žÍ¥ÀèÅÙ€Î¥¿¥¹¥¯€¬€¢€ëŸì¹ç€Ë€Ï¡€€œ€ÎºÇžå€ËÁÞÆþ€¹€ë¡¥
+ */
+Inline void
+queue_insert_tpri(QUEUE *p_queue, TCB *p_tcb)
+{
+	QUEUE	*p_entry;
+	uint_t	pri = p_tcb->priority;
+
+	for (p_entry = p_queue->p_next; p_entry != p_queue;
+										p_entry = p_entry->p_next) {
+		if (pri < ((TCB *) p_entry)->priority) {
+			break;
+		}
+	}
+	queue_insert_prev(p_entry, &(p_tcb->task_queue));
+}
+
+/*
+ *  ÂÔ€ÁŸõÂÖ€Ø€ÎÁ«°Ü
+ *
+ *  ŒÂ¹ÔÃæ€Î¥¿¥¹¥¯€òÂÔ€ÁŸõÂÖ€ËÁ«°Ü€µ€»€ë¡¥¶ñÂÎÅª€Ë€Ï¡€ŒÂ¹ÔÃæ€Î¥¿¥¹¥¯€ò
+ *  ¥ì¥Ç¥£¥­¥å¡Œ€«€éºïœü€·¡€TCB€Îp_winfo¥Õ¥£¡Œ¥ë¥É¡€WINFO€Îp_tmevtb¥Õ¥£¡Œ
+ *  ¥ë¥É€òÀßÄê€¹€ë¡¥
+ */
+Inline void
+make_wait(WINFO *p_winfo)
+{
+	(void) make_non_runnable(p_runtsk);
+	p_runtsk->p_winfo = p_winfo;
+	p_winfo->p_tmevtb = NULL;
+}
+
+/*
+ *  ÂÔ€ÁŸõÂÖ€Ø€ÎÁ«°Ü¡Ê¥¿¥€¥à¥¢¥Š¥È»ØÄê¡Ë
+ *
+ *  ŒÂ¹ÔÃæ€Î¥¿¥¹¥¯€ò¡€¥¿¥€¥à¥¢¥Š¥È»ØÄêÉÕ€­€ÇÂÔ€ÁŸõÂÖ€ËÁ«°Ü€µ€»€ë¡¥¶ñÂÎ
+ *  Åª€Ë€Ï¡€ŒÂ¹ÔÃæ€Î¥¿¥¹¥¯€ò¥ì¥Ç¥£¥­¥å¡Œ€«€éºïœü€·¡€TCB€Îp_winfo¥Õ¥£¡Œ
+ *  ¥ë¥É¡€WINFO€Îp_tmevtb¥Õ¥£¡Œ¥ë¥É€òÀßÄê€¹€ë¡¥€Þ€¿¡€¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö
+ *  ¥í¥Ã¥¯€òÅÐÏ¿€¹€ë¡¥
+ */
+extern void	make_wait_tmout(WINFO *p_winfo, TMEVTB *p_tmevtb, TMO tmout);
+
+/*
+ *  ÂÔ€Á²òœü€Î€¿€á€Î¥¿¥¹¥¯ŸõÂÖ€Î¹¹¿·
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ò¡€ÂÔ€Á²òœü€¹€ë€è€Š¥¿¥¹¥¯ŸõÂÖ€ò¹¹¿·€¹€ë¡¥
+ *  ÂÔ€Á²òœü€¹€ë¥¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ë€Ê€ëŸì¹ç€Ï¡€¥ì¥Ç¥£¥­¥å¡Œ€Ë€Ä€Ê
+ *  €°¡¥€Þ€¿¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬É¬Í×€ÊŸì¹ç€Ë€Ïtrue€òÊÖ€¹¡¥
+ */
+Inline bool_t
+make_non_wait(TCB *p_tcb)
+{
+	assert(TSTAT_WAITING(p_tcb->tstat));
+
+	if (!TSTAT_SUSPENDED(p_tcb->tstat)) {
+		/*
+		 *  ÂÔ€ÁŸõÂÖ€«€éŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ø€ÎÁ«°Ü
+		 */
+		p_tcb->tstat = TS_RUNNABLE;
+		LOG_TSKSTAT(p_tcb);
+		return(make_runnable(p_tcb));
+	}
+	else {
+		/*
+		 *  ÆóœÅÂÔ€ÁŸõÂÖ€«€é¶¯À©ÂÔ€ÁŸõÂÖ€Ø€ÎÁ«°Ü
+		 */
+		p_tcb->tstat = TS_SUSPENDED;
+		LOG_TSKSTAT(p_tcb);
+		return(false);
+	}
+}
+
+/*
+ *  ¥ª¥Ö¥ž¥§¥¯¥ÈÂÔ€Á¥­¥å¡Œ€«€é€Îºïœü
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€¬¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€Á¥­¥å¡Œ€Ë€Ä
+ *  €Ê€¬€ì€Æ€€€ì€Ð¡€ÂÔ€Á¥­¥å¡Œ€«€éºïœü€¹€ë¡¥
+ */
+Inline void
+wait_dequeue_wobj(TCB *p_tcb)
+{
+	if (TSTAT_WAIT_WOBJ(p_tcb->tstat)) {
+		queue_delete(&(p_tcb->task_queue));
+	}
+}
+
+/*
+ *  »þŽÖÂÔ€Á€Î€¿€á€Î¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯€ÎÅÐÏ¿²òœü
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ËÂÐ€·€Æ¡€»þŽÖÂÔ€Á€Î€¿€á€Î¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö
+ *  ¥í¥Ã¥¯€¬ÅÐÏ¿€µ€ì€Æ€€€ì€Ð¡€€œ€ì€òÅÐÏ¿²òœü€¹€ë¡¥
+ */
+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€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ÎÂÔ€ÁŸõÂÖ€ò²òœü€¹€ë¡¥¶ñÂÎÅª€Ë€Ï¡€¥¿¥€¥à¥€
+ *  ¥Ù¥ó¥È¥Ö¥í¥Ã¥¯€¬ÅÐÏ¿€µ€ì€Æ€€€ì€Ð¡€€œ€ì€òÅÐÏ¿²òœü€¹€ë¡¥€Þ€¿¡€¥¿¥¹¥¯
+ *  ŸõÂÖ€ò¹¹¿·€·¡€ÂÔ€Á²òœü€·€¿¥¿¥¹¥¯€«€é€ÎÊÖÃÍ€òE_OK€È€¹€ë¡¥ÂÔ€Á¥­¥å¡Œ
+ *  €«€é€Îºïœü€Ï¹Ô€ï€Ê€€¡¥ÂÔ€Á²òœü€·€¿¥¿¥¹¥¯€Ø€Î¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬É¬Í×€ÊŸì
+ *  ¹ç€Ë€Ïtrue€òÊÖ€¹¡¥
+ */
+extern bool_t	wait_complete(TCB *p_tcb);
+
+/*
+ *  ¥¿¥€¥à¥¢¥Š¥È€ËÈŒ€ŠÂÔ€Á²òœü
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€¬¡€ÂÔ€Á¥­¥å¡Œ€Ë€Ä€Ê€¬€ì€Æ€€€ì€ÐÂÔ€Á¥­¥å¡Œ
+ *  €«€éºïœü€·¡€¥¿¥¹¥¯ŸõÂÖ€ò¹¹¿·€¹€ë¡¥€Þ€¿¡€ÂÔ€Á²òœü€·€¿¥¿¥¹¥¯€«€é€ÎÊÖ
+ *  ÃÍ€ò¡€wait_tmout€Ç€ÏE_TMOUT¡€wait_tmout_ok€Ç€ÏE_OK€È€¹€ë¡¥ÂÔ€Á²òœü
+ *  €·€¿¥¿¥¹¥¯€Ø€Î¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬É¬Í×€Ê»þ€Ï¡€reqflg€òtrue€Ë€¹€ë¡¥
+ *
+ *  wait_tmout_ok€Ï¡€dly_tsk€Ç»È€Š€¿€á€Î€â€Î€Ç¡€ÂÔ€Á¥­¥å¡Œ€«€éºïœü€¹€ë
+ *  œèÍý€ò¹Ô€ï€Ê€€¡¥
+ *
+ *  €€€º€ì€ÎŽØ¿ô€â¡€¥¿¥€¥à¥€¥Ù¥ó¥È€Î¥³¡Œ¥ë¥Ð¥Ã¥¯ŽØ¿ô€È€·€ÆÍÑ€€€ë€¿€á€Î
+ *  €â€Î€Ç¡€³ä¹þ€ß¥Ï¥ó¥É¥é€«€éžÆ€ÓœÐ€µ€ì€ë€³€È€òÁÛÄê€·€Æ€€€ë¡¥
+ */
+extern void	wait_tmout(TCB *p_tcb);
+extern void	wait_tmout_ok(TCB *p_tcb);
+
+/*
+ *  ÂÔ€ÁŸõÂÖ€Î¶¯À©²òœü
+ *
+ *  p_tcb€Ç»ØÄê€µ€ì€ë¥¿¥¹¥¯€ÎÂÔ€ÁŸõÂÖ€ò¶¯À©Åª€Ë²òœü€¹€ë¡¥¶ñÂÎÅª€Ë€Ï¡€
+ *  ¥¿¥¹¥¯€¬ÂÔ€Á¥­¥å¡Œ€Ë€Ä€Ê€¬€ì€Æ€€€ì€ÐÂÔ€Á¥­¥å¡Œ€«€éºïœü€·¡€¥¿¥€¥à¥€
+ *  ¥Ù¥ó¥È¥Ö¥í¥Ã¥¯€¬ÅÐÏ¿€µ€ì€Æ€€€ì€Ð€œ€ì€òÅÐÏ¿²òœü€¹€ë¡¥€Þ€¿¡€¥¿¥¹¥¯€Î
+ *  ŸõÂÖ€ò¹¹¿·€·¡€ÂÔ€Á²òœü€·€¿¥¿¥¹¥¯€«€é€ÎÊÖÃÍ€òE_RLWAI€È€¹€ë¡¥€Þ€¿¡€
+ *  ÂÔ€Á²òœü€·€¿¥¿¥¹¥¯€Ø€Î¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬É¬Í×€ÊŸì¹ç€Ë€Ïtrue€òÊÖ€¹¡¥
+ */
+extern bool_t	wait_release(TCB *p_tcb);
+
+/*
+ *  ÂÔ€Á¥­¥å¡Œ€ÎÀèÆ¬€Î¥¿¥¹¥¯ID
+ *
+ *  p_wait_queue€Ç»ØÄê€·€¿ÂÔ€Á¥­¥å¡Œ€ÎÀèÆ¬€Î¥¿¥¹¥¯ID€òÊÖ€¹¡¥ÂÔ€Á¥­¥å¡Œ
+ *  €¬¶õ€ÎŸì¹ç€Ë€Ï¡€TSK_NONE€òÊÖ€¹¡¥
+ */
+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);
+	}
+}
+
+/*
+ *  Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬Áàºî¥ë¡Œ¥Á¥ó
+ *
+ *  Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎœéŽü²œ¥Ö¥í¥Ã¥¯€ÈŽÉÍý¥Ö¥í¥Ã¥¯€ÎÀèÆ¬ÉôÊ¬€Ï¶Š
+ *  ÄÌ€Ë€Ê€Ã€Æ€€€ë¡¥°Ê²Œ€Ï¡€€œ€Î¶ŠÄÌÉôÊ¬€ò°·€Š€¿€á€Î·¿€ª€è€Ó¥ë¡Œ¥Á¥ó·²
+ *  €Ç€¢€ë¡¥
+ *
+ *  Ê£¿ô€ÎÂÔ€Á¥­¥å¡Œ€ò»ý€ÄÆ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŸì¹ç¡€ÀèÆ¬°Ê³°€ÎÂÔ€Á
+ *  ¥­¥å¡Œ€òÁàºî€¹€ëŸì¹ç€Ë€Ï¡€€³€ì€é€Î¥ë¡Œ¥Á¥ó€Ï»È€š€Ê€€¡¥€Þ€¿¡€¥ª¥Ö¥ž¥§
+ *  ¥¯¥ÈÂ°À­€ÎTA_TPRI¥Ó¥Ã¥È€ò»²ŸÈ€¹€ë€Î€Ç¡€€³€Î¥Ó¥Ã¥È€òÂŸ€ÎÌÜÅª€Ë»È€Ã€Æ
+ *  €€€ëŸì¹ç€â¡€€³€ì€é€Î¥ë¡Œ¥Á¥ó€Ï»È€š€Ê€€¡¥
+ */
+
+/*
+ *  Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎœéŽü²œ¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬
+ */
+typedef struct wait_object_initialization_block {
+	ATR			wobjatr;		/* ¥ª¥Ö¥ž¥§¥¯¥ÈÂ°À­ */
+} WOBJINIB;
+
+/*
+ *  Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬
+ */
+typedef struct wait_object_control_block {
+	QUEUE		wait_queue;		/* ÂÔ€Á¥­¥å¡Œ */
+	const WOBJINIB *p_wobjinib;	/* œéŽü²œ¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿ */
+} WOBJCB;
+
+/*
+ *  Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯€Î¶ŠÄÌÉôÊ¬
+ *
+ *  €³€Î¹œÂ€ÂÎ€Ï¡€ÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯¡ÊWINFO¡Ë€ò³ÈÄ¥¡Ê¥ª¥Ö¥ž¥§¥¯¥È»ØžþžÀ
+ *  žì€Î·ÑŸµ€ËÁêÅö¡Ë€·€¿€â€Î€Ç€¢€ë€¬¡€WINFO€¬¶ŠÍÑÂÎ€ÇÄêµÁ€µ€ì€Æ€€€ë€¿
+ *  €á€Ë¡€1€Ä€Î¥Õ¥£¡Œ¥ë¥É€È€·€ÆŽÞ€á€Æ€€€ë¡¥
+ */
+typedef struct wait_object_waiting_information {
+	WINFO	winfo;			/* Éžœà€ÎÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯ */
+	WOBJCB	*p_wobjcb;		/* ÂÔ€Á¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý¥Ö¥í¥Ã¥¯ */
+} WINFO_WOBJ;
+
+/*
+ *  Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ËÂÐ€¹€ëÂÔ€ÁŸõÂÖ€Ø€ÎÁ«°Ü
+ *  
+ *  ŒÂ¹ÔÃæ€Î¥¿¥¹¥¯€òÂÔ€ÁŸõÂÖ€ËÁ«°Ü€µ€»¡€Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ÎÂÔ€Á¥­¥å¡Œ
+ *  €Ë€Ä€Ê€°¡¥€Þ€¿¡€ÂÔ€ÁŸðÊó¥Ö¥í¥Ã¥¯¡ÊWINFO¡Ë€Îp_wobjcb€òÀßÄê€¹€ë¡¥
+ *  wobj_make_wait_tmout€Ï¡€¥¿¥€¥à¥€¥Ù¥ó¥È¥Ö¥í¥Ã¥¯€ÎÅÐÏ¿€â¹Ô€Š¡¥
+ */
+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);
+
+/*
+ *  ¥¿¥¹¥¯Í¥ÀèÅÙÊÑ¹¹»þ€ÎœèÍý
+ *
+ *  Æ±Žü¡ŠÄÌ¿®¥ª¥Ö¥ž¥§¥¯¥È€ËÂÐ€¹€ëÂÔ€ÁŸõÂÖ€Ë€¢€ë¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€¬ÊÑ¹¹€µ
+ *  €ì€¿Ÿì¹ç€Ë¡€ÂÔ€Á¥­¥å¡Œ€ÎÃæ€Ç€Î¥¿¥¹¥¯€Î°ÌÃÖ€òœ€Àµ€¹€ë¡¥
+ */
+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);
+	}
+}
+
+/*
+ *  ÂÔ€Á¥­¥å¡Œ€ÎœéŽü²œ
+ *
+ *  ÂÔ€Á¥­¥å¡Œ€Ë€Ä€Ê€¬€ì€Æ€€€ë¥¿¥¹¥¯€ò€¹€Ù€ÆÂÔ€Á²òœü€¹€ë¡¥ÂÔ€Á²òœü€·€¿
+ *  ¥¿¥¹¥¯€«€é€ÎÊÖÃÍ€Ï¡€E_DLT€È€¹€ë¡¥ÂÔ€Á²òœü€·€¿¥¿¥¹¥¯€Ø€Î¥Ç¥£¥¹¥Ñ¥Ã¥Á
+ *  €¬É¬Í×€ÊŸì¹ç€Ïtrue¡€€œ€Š€Ç€Ê€€Ÿì¹ç€Ïfalse€òÊÖ€¹¡¥
+ */
+extern bool_t	init_wait_queue(QUEUE *p_wait_queue);
+
+#endif /* TOPPERS_WAIT_H */
Index: /library/histogram.c
===================================================================
--- /library/histogram.c	(revision 7)
+++ /library/histogram.c	(revision 7)
@@ -0,0 +1,189 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2006-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$
+ */
+
+/*
+ *		ŒÂ¹Ô»þŽÖÊ¬ÉÛœž·×¥â¥ž¥å¡Œ¥ë
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include <test_lib.h>
+#include <histogram.h>
+#include "target_test.h"
+
+/*
+ *  ŒÂ¹Ô»þŽÖÊ¬ÉÛ·×Â¬€Î¿ô
+ */
+#ifndef TNUM_HIST
+#define TNUM_HIST		10
+#endif /* TNUM_HIST */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€ÇÀßÄêÊÑ¹¹€¹€ë€¿€á€Î¥Þ¥¯¥í
+ */
+#ifndef HISTTIM						/* ŒÂ¹Ô»þŽÖ·×Â¬ÍÑ€Î»þ¹ï€Î¥Ç¡Œ¥¿·¿ */
+#define HISTTIM			SYSUTM
+#endif /* HISTTIM */
+
+#ifndef HIST_GET_TIM				/* ŒÂ¹Ô»þŽÖ·×Â¬ÍÑ€Îžœºß»þ¹ï€ÎŒèÆÀ */
+#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				/* »þ¹ï€Îº¹€«€éŒÂ¹Ô»þŽÖ€Ø€ÎÊÑŽ¹ */
+#define HIST_CONV_TIM(time)		((uint_t)(time))
+#endif /* HIST_CONV_TIM */
+
+#ifndef HIST_BM_HOOK				/* ŒÂ¹Ô»þŽÖ·×Â¬ÄŸÁ°€Ë¹Ô€Š€Ù€­œèÍý */
+#define HIST_BM_HOOK()			((void) 0)
+#endif
+
+/*
+ *  ŒÂ¹Ô»þŽÖÊ¬ÉÛ·×Â¬ŽÉÍý¥Ö¥í¥Ã¥¯
+ */
+typedef struct histogram_control_block {
+	HISTTIM		begin_time;			/* ·×Â¬³«»Ï»þ¹ï */
+	uint_t		maxval;				/* Ê¬ÉÛ€òµ­Ï¿€¹€ëºÇÂç»þŽÖ */
+	uint_t		*histarea;			/* Ê¬ÉÛ€òµ­Ï¿€¹€ë¥á¥â¥êÎÎ°è */
+	uint_t		over;				/* ºÇÂç»þŽÖ€òÄ¶€š€¿ÅÙ¿ô */
+	uint_t		under;				/* »þŽÖ€ÎµÕÅŸ€¬µ¿€ï€ì€ëÅÙ¿ô */
+} HISTCB;
+
+/*
+ *  ŒÂ¹Ô»þŽÖÊ¬ÉÛ·×Â¬ŽÉÍý¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢
+ */
+static HISTCB	histcb_table[TNUM_HIST];
+
+/*
+ *  ŒÂ¹Ô»þŽÖÊ¬ÉÛ·×Â¬ID€ÎºÇŸ®ÃÍ€ÈºÇÂçÃÍ
+ */
+#define TMIN_HISTID		1
+#define TMAX_HISTID		(TMIN_HISTID + TNUM_HIST - 1)
+
+/*
+ *  ŒÂ¹Ô»þŽÖÊ¬ÉÛ·×Â¬€ÎœéŽü²œ
+ */
+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;
+}
+
+/*
+ *  ŒÂ¹Ô»þŽÖ·×Â¬€Î³«»Ï
+ */
+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));
+}
+
+/*
+ *  ŒÂ¹Ô»þŽÖ·×Â¬€ÎœªÎ»
+ */
+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++;
+	}
+}
+
+/*
+ *  ŒÂ¹Ô»þŽÖÊ¬ÉÛ·×Â¬€ÎÉœŒš
+ */
+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: /library/log_output.c
===================================================================
--- /library/log_output.c	(revision 7)
+++ /library/log_output.c	(revision 7)
@@ -0,0 +1,200 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥·¥¹¥Æ¥à¥í¥°€Î¥Õ¥©¡Œ¥Þ¥Ã¥ÈœÐÎÏ
+ */
+
+#include <t_stddef.h>
+#include <t_syslog.h>
+#include <log_output.h>
+
+/*
+ *  ¿ôÃÍ€òÊž»úÎó€ËÊÑŽ¹
+ */
+#define CONVERT_BUFLEN	((sizeof(uintptr_t) * CHAR_BIT + 2) / 3)
+										/* uintptr_t·¿€Î¿ôÃÍ€ÎºÇÂçÊž»ú¿ô */
+static void
+convert(uintptr_t val, uint_t radix, const char *radchar,
+			uint_t width, bool_t minus, bool_t padzero, void (*putc)(char))
+{
+	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)(padzero ? '0' : ' ');
+	}
+	if (minus && !padzero) {
+		(*putc)('-');
+	}
+	while (i > 0U) {
+		(*putc)(buf[--i]);
+	}
+}
+
+/*
+ *  Êž»úÎóÀ°·ÁœÐÎÏ
+ */
+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))
+{
+	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)(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;
+		}
+	}
+}
+
+/*
+ *  ¥í¥°ŸðÊó€ÎœÐÎÏ
+ */
+void
+syslog_print(const SYSLOG *p_syslog, void (*putc)(char))
+{
+	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;
+	default:
+		/*
+		 *  ÂŸ€ÎŒïÊÌ€Î¥í¥°ŸðÊó€Ë€ÏÂÐ±þ€·€Æ€€€Ê€€¡¥
+		 */
+		break;
+	}
+}
+
+/*
+ *  ¥í¥°ŸðÊóÁÓŒº¥á¥Ã¥»¡Œ¥ž€ÎœÐÎÏ
+ */
+void
+syslog_lostmsg(uint_t lostlog, void (*putc)(char))
+{
+	intptr_t	lostinfo[1];
+
+	lostinfo[0] = (intptr_t) lostlog;
+	syslog_printf("%d messages are lost.", lostinfo, putc);
+	(*putc)('\n');
+}
Index: /library/strerror.c
===================================================================
--- /library/strerror.c	(revision 7)
+++ /library/strerror.c	(revision 7)
@@ -0,0 +1,110 @@
+/*
+ *  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$
+ */
+
+/*
+ *		¥š¥é¡Œ¥á¥Ã¥»¡Œ¥žÊž»úÎó€òÊÖ€¹ŽØ¿ô
+ */
+
+#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: /library/t_perror.c
===================================================================
--- /library/t_perror.c	(revision 7)
+++ /library/t_perror.c	(revision 7)
@@ -0,0 +1,56 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2004-2006 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥š¥é¡Œ¥á¥Ã¥»¡Œ¥ž€ÎœÐÎÏ
+ */
+
+#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: /library/test_lib.c
===================================================================
--- /library/test_lib.c	(revision 7)
+++ /library/test_lib.c	(revision 7)
@@ -0,0 +1,203 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2005-2013 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$
+ */
+
+/* 
+ *		¥Æ¥¹¥È¥×¥í¥°¥é¥àÍÑ¥é¥€¥Ö¥é¥ê
+ */
+
+#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>
+
+/*
+ *	¥Á¥§¥Ã¥¯¥Ý¥€¥ó¥È
+ */
+static uint_t	check_count = 0u;
+
+/*
+ *	Œ«žÊ¿ÇÃÇŽØ¿ô
+ */
+static BIT_FUNC	check_bit_func = NULL;
+
+/*
+ *	Œ«žÊ¿ÇÃÇŽØ¿ô€ÎÀßÄê
+ */
+void
+set_bit_func(BIT_FUNC bit_func)
+{
+	check_bit_func = bit_func;
+}
+
+/*
+ *  ¥Æ¥¹¥È¥×¥í¥°¥é¥à€Î³«»Ï
+ */
+void
+test_start(char *progname)
+{
+	syslog_1(LOG_NOTICE, "Test program: %s", progname);
+}
+
+/*
+ *  ¥·¥¹¥Æ¥à¥í¥°€ÎœÐÎÏœèÍý
+ */
+void
+syslog_flush(void)
+{
+	SYSLOG	logbuf;
+	ER_UINT	rercd;
+
+	/*
+	 *  ¥í¥°¥Ð¥Ã¥Õ¥¡€Ëµ­Ï¿€µ€ì€¿¥í¥°ŸðÊó€ò¡€Äã¥ì¥Ù¥ëœÐÎÏµ¡Çœ€òÍÑ€€€ÆœÐ
+	 *  ÎÏ€¹€ë¡¥
+	 */
+	while ((rercd = syslog_rea_log(&logbuf)) >= 0) {
+		if (rercd > 0) {
+			syslog_lostmsg((uint_t) rercd, target_fput_log);
+		}
+		if (logbuf.logtype >= LOG_TYPE_COMMENT) {
+			syslog_print(&logbuf, target_fput_log);
+			target_fput_log('\n');
+		}
+	}
+}
+
+/*
+ *	¥Æ¥¹¥È¥×¥í¥°¥é¥à€ÎœªÎ»
+ */
+void
+test_finish(void)
+{
+	SIL_PRE_LOC;
+
+	SIL_LOC_INT();
+	syslog_flush();
+	(void) ext_ker();
+
+	/* €³€³€ØÍè€ë€³€È€Ï€Ê€€€Ï€º */
+	SIL_UNL_INT();
+}
+
+/*
+ *	¥Á¥§¥Ã¥¯¥Ý¥€¥ó¥È
+ */
+void
+check_point(uint_t count)
+{
+	bool_t	errorflag = false;
+	ER		rercd;
+	SIL_PRE_LOC;
+
+	/*
+	 *  ³ä¹þ€ß¥í¥Ã¥¯ŸõÂÖ€Ë
+	 */
+	SIL_LOC_INT();
+
+	/*
+	 *  ¥·¡Œ¥±¥ó¥¹¥Á¥§¥Ã¥¯
+	 */
+	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;
+	}
+
+	/*
+	 *  ¥«¡Œ¥Í¥ë€ÎÆâÉôŸõÂÖ€Îž¡ºº
+	 */
+	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;
+		}
+	}
+
+	/*
+	 *  ¥š¥é¡Œ€¬ž¡œÐ€µ€ì€¿Ÿì¹ç€Ï¡€¥Æ¥¹¥È¥×¥í¥°¥é¥à€òœªÎ»€¹€ë¡¥
+	 */
+	if (errorflag) {
+		test_finish();
+	}
+
+	/*
+	 *  ³ä¹þ€ß¥í¥Ã¥¯ŸõÂÖ€ò²òœü
+	 */
+	SIL_UNL_INT();
+}
+
+/*
+ *	Ž°Î»¥Á¥§¥Ã¥¯¥Ý¥€¥ó¥È
+ */
+void
+check_finish(uint_t count)
+{
+	check_point(count);
+	syslog_0(LOG_NOTICE, "All check points passed.");
+	test_finish();
+}
+
+/*
+ *	Ÿò·ï¥Á¥§¥Ã¥¯€Î¥š¥é¡ŒœèÍý
+ */
+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();
+}
+
+/*
+ *	¥š¥é¡Œ¥³¡Œ¥É¥Á¥§¥Ã¥¯€Î¥š¥é¡ŒœèÍý
+ */
+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: /library/vasyslog.c
===================================================================
--- /library/vasyslog.c	(revision 7)
+++ /library/vasyslog.c	(revision 7)
@@ -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-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$
+ */
+
+/*
+ *		²ÄÊÑ¿ô°ú¿ô€Î¥·¥¹¥Æ¥à¥í¥°¥é¥€¥Ö¥é¥ê
+ */
+
+#include <t_stddef.h>
+#include <t_syslog.h>
+#include <stdarg.h>
+
+#ifndef TOPPERS_OMIT_SYSLOG
+
+void
+syslog(uint_t prio, const char *format, ...)
+{
+	SYSLOG	logbuf;
+	va_list	ap;
+	uint_t	i;
+	char	c;
+	bool_t	lflag;
+
+	logbuf.logtype = LOG_TYPE_COMMENT;
+	logbuf.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':
+			logbuf.loginfo[i++] = lflag ? (intptr_t) va_arg(ap, long_t)
+										: (intptr_t) va_arg(ap, int_t);
+			break;
+		case 'u':
+		case 'x':
+		case 'X':
+			logbuf.loginfo[i++] = lflag ? (intptr_t) va_arg(ap, ulong_t)
+										: (intptr_t) va_arg(ap, uint_t);
+			break;
+		case 'p':
+			logbuf.loginfo[i++] = (intptr_t) va_arg(ap, void *);
+			break;
+		case 'c':
+			logbuf.loginfo[i++] = (intptr_t) va_arg(ap, int);
+			break;
+		case 's':
+			logbuf.loginfo[i++] = (intptr_t) va_arg(ap, const char *);
+			break;
+		case '\0':
+			format--;
+			break;
+		default:
+			break;
+		}
+	}
+	va_end(ap);
+	(void) syslog_wri_log(prio, &logbuf);
+}
+
+#endif /* TOPPERS_OMIT_SYSLOG */
Index: /pdic/upd72001/MANIFEST
===================================================================
--- /pdic/upd72001/MANIFEST	(revision 7)
+++ /pdic/upd72001/MANIFEST	(revision 7)
@@ -0,0 +1,5 @@
+PACKAGE asp
+
+MANIFEST
+upd72001.c
+upd72001.h
Index: /pdic/upd72001/upd72001.c
===================================================================
--- /pdic/upd72001/upd72001.c	(revision 7)
+++ /pdic/upd72001/upd72001.c	(revision 7)
@@ -0,0 +1,445 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		ŠÌPD72001ÍÑ ŽÊ°×SIO¥É¥é¥€¥Ð
+ */
+
+#include <sil.h>
+#include "target_syssvc.h"
+#include "upd72001.h"
+
+/*
+ *  ¥Ç¥Ð¥€¥¹¥ì¥ž¥¹¥¿€Î¥¢¥¯¥»¥¹ŽÖ³Ö»þŽÖ¡ÊnsecÃ±°Ì¡Ë
+ *
+ *  200€È€€€ŠÃÍ€Ë€¢€Þ€êº¬µò€Ï€Ê€€¡¥
+ */
+#define	UPD72001_DELAY	200U
+
+/*
+ *  ŠÌPD72001€Î¥ì¥ž¥¹¥¿€ÎÈÖ¹æ
+ */
+#define	UPD72001_CR0	0x00U		/* ¥³¥ó¥È¥í¡Œ¥ë¥ì¥ž¥¹¥¿ */
+#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		/* ¥¹¥Æ¡Œ¥¿¥¹¥ì¥ž¥¹¥¿ */
+
+/*
+ *  ¥³¥ó¥È¥í¡Œ¥ë¥ì¥ž¥¹¥¿€ÎÀßÄêÃÍ
+ */
+#define CR_RESET	0x18U		/* ¥Ý¡Œ¥È¥ê¥»¥Ã¥È¥³¥Þ¥ó¥É */
+
+#define CR0_EOI		0x38U		/* EOI¡ÊEnd of Interrupt¡Ë*/
+
+#define CR1_DOWN	0x00U		/* ÁŽ³ä¹þ€ß€ò¶Ø»ß */
+#define CR1_RECV	0x10U		/* Œõ¿®³ä¹þ€ßµö²Ä¥Ó¥Ã¥È */
+#define CR1_SEND	0x02U		/* Á÷¿®³ä¹þ€ßµö²Ä¥Ó¥Ã¥È */
+
+#define CR3_DEF		0xc1U		/* ¥Ç¡Œ¥¿ 8bit¡€Œõ¿®¥€¥Í¡Œ¥Ö¥ë */
+#define CR4_DEF		0x44U		/* ¥¹¥È¥Ã¥×¥Ó¥Ã¥È 1bit¡€¥Ñ¥ê¥Æ¥£€Ê€· */
+#define CR5_DEF		0xeaU		/* ¥Ç¡Œ¥¿ 8bit¡€Á÷¿®¥€¥Í¡Œ¥Ö¥ë */
+
+#define CR10_DEF	0x00U		/* NRZ */
+#define CR14_DEF	0x07U		/* ¥Ü¡Œ¥ì¡Œ¥È¥ž¥§¥Í¥ì¡Œ¥¿¥€¥Í¡Œ¥Ö¥ë */
+#define CR15_DEF	0x56U		/* ¥Ü¡Œ¥ì¡Œ¥È¥ž¥§¥Í¥ì¡Œ¥¿»ÈÍÑ */
+
+#define SR0_RECV	0x01U		/* Œõ¿®ÄÌÃÎ¥Ó¥Ã¥È */
+#define SR0_SEND	0x04U		/* Á÷¿®²ÄÇœ¥Ó¥Ã¥È */
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥ÈœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÄêµÁ
+ */
+typedef struct sio_port_initialization_block {
+	void		*data;			/* ¥Ç¡Œ¥¿¥ì¥ž¥¹¥¿€ÎÈÖÃÏ */
+	void		*ctrl;			/* ¥³¥ó¥È¥í¡Œ¥ë¥ì¥ž¥¹¥¿€ÎÈÖÃÏ */
+
+	uint8_t		cr3_def;		/* CR3€ÎÀßÄêÃÍ¡ÊŒõ¿®¥Ó¥Ã¥È¿ô¡Ë*/
+	uint8_t		cr4_def;		/* CR4€ÎÀßÄêÃÍ¡Ê¥¹¥È¥Ã¥×¥Ó¥Ã¥È¡€¥Ñ¥ê¥Æ¥£¡Ë*/
+	uint8_t		cr5_def;		/* CR5€ÎÀßÄêÃÍ¡ÊÁ÷¿®¥Ó¥Ã¥È¿ô¡Ë*/
+	uint8_t		brg1_def;		/* ¥Ü¡Œ¥ì¡Œ¥ÈŸå°Ì€ÎÀßÄêÃÍ */
+	uint8_t		brg2_def;		/* ¥Ü¡Œ¥ì¡Œ¥È²Œ°Ì€ÎÀßÄêÃÍ */
+} SIOPINIB;
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥ÈŽÉÍý¥Ö¥í¥Ã¥¯€ÎÄêµÁ
+ */
+struct sio_port_control_block {
+	const SIOPINIB *p_siopinib;	/* ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥ÈœéŽü²œ¥Ö¥í¥Ã¥¯ */
+	intptr_t	exinf;			/* ³ÈÄ¥ŸðÊó */
+	bool_t		openflag;		/* ¥ª¡Œ¥×¥óºÑ€ß¥Õ¥é¥° */
+	uint8_t		cr1;			/* CR1€ÎÀßÄêÃÍ¡Ê³ä¹þ€ßµö²Ä¡Ë*/
+	bool_t		getready;		/* Êž»ú€òŒõ¿®€·€¿ŸõÂÖ */
+	bool_t		putready;		/* Êž»ú€òÁ÷¿®€Ç€­€ëŸõÂÖ */
+};
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥ÈœéŽü²œ¥Ö¥í¥Ã¥¯
+ */
+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 }
+};
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥ÈŽÉÍý¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢
+ */
+SIOPCB	siopcb_table[TNUM_SIOP];
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥ÈID€«€éŽÉÍý¥Ö¥í¥Ã¥¯€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#define INDEX_SIOP(siopid)	((uint_t)((siopid) - 1))
+#define get_siopcb(siopid)	(&(siopcb_table[INDEX_SIOP(siopid)]))
+
+/*
+ *  ¥Ç¥Ð¥€¥¹¥ì¥ž¥¹¥¿€Ø€Î¥¢¥¯¥»¥¹ŽØ¿ô
+ */
+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);		/* ¥À¥ß¡Œ¥ê¡Œ¥É */
+}
+
+/*
+ *  ŸõÂÖ€ÎÆÉœÐ€·¡ÊSR0€ÎÆÉœÐ€·¡Ë
+ *
+ *  ŠÌPD72001€Ï¡€ŸõÂÖ¡ÊSR0¡Ë€ò°ìÅÙÆÉ€à€ÈŒõ¿®ÄÌÃÎ¥Ó¥Ã¥È€¬Íî€Á€Æ€·€Þ€Š€¿
+ *  €á¡€ŸõÂÖ€òÆÉ€ßœÐ€¹ŽØ¿ô€òÀß€±¡€¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥ÈŽÉÍý¥Ö¥í¥Ã¥¯Ãæ€Î
+ *  getready€ËŒõ¿®ÄÌÃÎŸõÂÖ¡€putready€ËÁ÷¿®²ÄÇœŸõÂÖ€òÊÝÂž€·€Æ€€€ë¡ÊÁ÷¿®
+ *  ²ÄÇœŸõÂÖ€ÎÊÝÂž€ÏÉÔÍ×€«€â€·€ì€Ê€€¡Ë¡¥
+ *  ŸõÂÖ¥ì¥ž¥¹¥¿€òÆÉ€ó€Ç€âŒõ¿®ÄÌÃÎ¥Ó¥Ã¥È€¬Íî€Á€Ê€€¥Ç¥Ð¥€¥¹¡Ê€³€Á€é€¬Éá
+ *  ÄÌ€È»×€ï€ì€ë¡Ë€Ç€Ï¡€€³€ÎŽØ¿ô€ÏÉ¬Í×€Ê€€¡¥
+ */
+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;
+	}
+}
+
+/*
+ *  Êž»ú€òŒõ¿®€Ç€­€ë€«¡©
+ */
+Inline bool_t
+upd72001_getready(SIOPCB *p_siopcb)
+{
+	upd72001_get_stat(p_siopcb);
+	return(p_siopcb->getready);
+}
+
+/*
+ *  Êž»ú€òÁ÷¿®€Ç€­€ë€«¡©
+ */
+Inline bool_t
+upd72001_putready(SIOPCB *p_siopcb)
+{
+	upd72001_get_stat(p_siopcb);
+	return(p_siopcb->putready);
+}
+
+/*
+ *  Œõ¿®€·€¿Êž»ú€ÎŒèœÐ€·
+ */
+Inline char
+upd72001_getchar(SIOPCB *p_siopcb)
+{
+	p_siopcb->getready = false;
+	return((char) upd72001_read_reg(p_siopcb->p_siopinib->data));
+}
+
+/*
+ *  Á÷¿®€¹€ëÊž»ú€Îœñ¹þ€ß
+ */
+Inline void
+upd72001_putchar(SIOPCB *p_siopcb, char c)
+{
+	p_siopcb->putready = false;
+	upd72001_write_reg(p_siopcb->p_siopinib->data, (uint8_t) c);
+}
+
+/*
+ *  EOI¡ÊEnd Of Interrupt¡ËÈ¯¹Ô
+ */
+Inline void
+upd72001_eoi(void)
+{
+	upd72001_write_ctrl((void *) TADR_UPD72001_CTRLA, UPD72001_CR0, CR0_EOI);
+}
+
+/*
+ *  SIO¥É¥é¥€¥Ð€ÎœéŽü²œ
+ */
+void
+upd72001_initialize(void)
+{
+	SIOPCB	*p_siopcb;
+	uint_t	i;
+
+	/*
+	 *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥ÈŽÉÍý¥Ö¥í¥Ã¥¯€ÎœéŽü²œ
+	 */
+	for (i = 0; i < TNUM_SIOP; i++) {
+		p_siopcb = &(siopcb_table[i]);
+		p_siopcb->p_siopinib = &(siopinib_table[i]);
+		p_siopcb->openflag = false;
+	}
+}
+
+/*
+ *  ¥ª¡Œ¥×¥ó€·€Æ€€€ë¥Ý¡Œ¥È€¬€¢€ë€«¡©
+ */
+bool_t
+upd72001_openflag(void)
+{
+	return(siopcb_table[0].openflag || siopcb_table[1].openflag);
+}
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€Î¥ª¡Œ¥×¥ó
+ */
+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 = false;
+	p_siopcb->putready = false;
+	p_siopcb->openflag = true;
+	return(p_siopcb);
+}
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€Î¥¯¥í¡Œ¥º
+ */
+void
+upd72001_cls_por(SIOPCB *p_siopcb)
+{
+	upd72001_write_ctrl(p_siopcb->p_siopinib->ctrl, UPD72001_CR1, CR1_DOWN);
+	p_siopcb->openflag = false;
+}
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€Ø€ÎÊž»úÁ÷¿®
+ */
+bool_t
+upd72001_snd_chr(SIOPCB *p_siopcb, char c)
+{
+	if (upd72001_putready(p_siopcb)) {
+		upd72001_putchar(p_siopcb, c);
+		return(true);
+	}
+	return(false);
+}
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€«€é€ÎÊž»úŒõ¿®
+ */
+int_t
+upd72001_rcv_chr(SIOPCB *p_siopcb)
+{
+	if (upd72001_getready(p_siopcb)) {
+		return((int_t)(uint8_t) upd72001_getchar(p_siopcb));
+	}
+	return(-1);
+}
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€«€é€Î¥³¡Œ¥ë¥Ð¥Ã¥¯€Îµö²Ä
+ */
+void
+upd72001_ena_cbr(SIOPCB *p_siopcb, uint_t cbrtn)
+{
+	uint8_t	cr1_bit;
+
+	switch (cbrtn) {
+	case SIO_RDY_SND:
+		cr1_bit = CR1_SEND;
+		break;
+	case SIO_RDY_RCV:
+		cr1_bit = CR1_RECV;
+		break;
+	default:
+		cr1_bit = 0U;
+		break;
+	}
+	p_siopcb->cr1 |= cr1_bit;
+	upd72001_write_ctrl(p_siopcb->p_siopinib->ctrl,
+									UPD72001_CR1, p_siopcb->cr1);
+}
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€«€é€Î¥³¡Œ¥ë¥Ð¥Ã¥¯€Î¶Ø»ß
+ */
+void
+upd72001_dis_cbr(SIOPCB *p_siopcb, uint_t cbrtn)
+{
+	uint8_t	cr1_bit;
+
+	switch (cbrtn) {
+	case SIO_RDY_SND:
+		cr1_bit = CR1_SEND;
+		break;
+	case SIO_RDY_RCV:
+		cr1_bit = CR1_RECV;
+		break;
+	default:
+		cr1_bit = 0U;
+		break;
+	}
+	p_siopcb->cr1 &= ~cr1_bit;
+	upd72001_write_ctrl(p_siopcb->p_siopinib->ctrl,
+									UPD72001_CR1, p_siopcb->cr1);
+}
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€ËÂÐ€¹€ë³ä¹þ€ßœèÍý
+ */
+static void
+upd72001_isr_siop(SIOPCB *p_siopcb)
+{
+	if ((p_siopcb->cr1 & CR1_RECV) != 0U) {
+		if (upd72001_getready(p_siopcb)) {
+			/*
+			 *  Œõ¿®ÄÌÃÎ¥³¡Œ¥ë¥Ð¥Ã¥¯¥ë¡Œ¥Á¥ó€òžÆ€ÓœÐ€¹¡¥
+			 */
+			upd72001_irdy_rcv(p_siopcb->exinf);
+		}
+	}
+	if ((p_siopcb->cr1 & CR1_SEND) != 0U) {
+		if (upd72001_putready(p_siopcb)) {
+			/*
+			 *  Á÷¿®²ÄÇœ¥³¡Œ¥ë¥Ð¥Ã¥¯¥ë¡Œ¥Á¥ó€òžÆ€ÓœÐ€¹¡¥
+			 */
+			upd72001_irdy_snd(p_siopcb->exinf);
+		}
+	}
+}
+
+/*
+ *  SIO€Î³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó
+ */
+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: /pdic/upd72001/upd72001.h
===================================================================
--- /pdic/upd72001/upd72001.h	(revision 7)
+++ /pdic/upd72001/upd72001.h	(revision 7)
@@ -0,0 +1,124 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		ŠÌPD72001ÍÑ ŽÊ°×SIO¥É¥é¥€¥Ð
+ */
+
+#ifndef TOPPERS_UPD72001_H
+#define TOPPERS_UPD72001_H
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È¿ô€ÎÄêµÁ
+ */
+#define TNUM_SIOP		2		/* ¥µ¥Ý¡Œ¥È€¹€ë¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€Î¿ô */
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥ÈŽÉÍý¥Ö¥í¥Ã¥¯€ÎÄêµÁ
+ */
+typedef struct sio_port_control_block	SIOPCB;
+
+/*
+ *  ¥³¡Œ¥ë¥Ð¥Ã¥¯¥ë¡Œ¥Á¥ó€ÎŒ±ÊÌÈÖ¹æ
+ */
+#define SIO_RDY_SND		1U		/* Á÷¿®²ÄÇœ¥³¡Œ¥ë¥Ð¥Ã¥¯ */
+#define SIO_RDY_RCV		2U		/* Œõ¿®ÄÌÃÎ¥³¡Œ¥ë¥Ð¥Ã¥¯ */
+
+/*
+ *  SIO¥É¥é¥€¥Ð€ÎœéŽü²œ¥ë¡Œ¥Á¥ó
+ */
+extern void		upd72001_initialize(void);
+
+/*
+ *  ¥ª¡Œ¥×¥ó€·€Æ€€€ë¥Ý¡Œ¥È€¬€¢€ë€«¡©
+ */
+extern bool_t	upd72001_openflag(void);
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€Î¥ª¡Œ¥×¥ó
+ */
+extern SIOPCB	*upd72001_opn_por(ID siopid, intptr_t exinf);
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€Î¥¯¥í¡Œ¥º
+ */
+extern void		upd72001_cls_por(SIOPCB *p_siopcb);
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€Ø€ÎÊž»úÁ÷¿®
+ */
+extern bool_t	upd72001_snd_chr(SIOPCB *p_siopcb, char c);
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€«€é€ÎÊž»úŒõ¿®
+ */
+extern int_t	upd72001_rcv_chr(SIOPCB *p_siopcb);
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€«€é€Î¥³¡Œ¥ë¥Ð¥Ã¥¯€Îµö²Ä
+ */
+extern void		upd72001_ena_cbr(SIOPCB *p_siopcb, uint_t cbrtn);
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€«€é€Î¥³¡Œ¥ë¥Ð¥Ã¥¯€Î¶Ø»ß
+ */
+extern void		upd72001_dis_cbr(SIOPCB *p_siopcb, uint_t cbrtn);
+
+/*
+ *  SIO€Î³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó
+ */
+extern void		upd72001_isr(void);
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€«€é€ÎÁ÷¿®²ÄÇœ¥³¡Œ¥ë¥Ð¥Ã¥¯
+ */
+extern void		upd72001_irdy_snd(intptr_t exinf);
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€«€é€ÎŒõ¿®ÄÌÃÎ¥³¡Œ¥ë¥Ð¥Ã¥¯
+ */
+extern void		upd72001_irdy_rcv(intptr_t exinf);
+
+#endif /* TOPPERS_MACRO_ONLY */
+#endif /* TOPPERS_UPD72001_H */
Index: /sample/Makefile
===================================================================
--- /sample/Makefile	(revision 7)
+++ /sample/Makefile	(revision 7)
@@ -0,0 +1,572 @@
+#
+#  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-2014 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$
+# 
+
+#
+#  ¥¿¡Œ¥²¥Ã¥È€Î»ØÄê¡ÊMakefile.target€ÇŸåœñ€­€µ€ì€ë€Î€òËÉ€°€¿€á¡Ë
+#
+all:
+
+#
+#  ¥¿¡Œ¥²¥Ã¥ÈÎ¬ŸÎ€ÎÄêµÁ
+#
+TARGET = @(TARGET)
+
+#
+#  ¥×¥í¥°¥é¥ß¥ó¥°žÀžì€ÎÄêµÁ
+#
+SRCLANG = @(SRCLANG)
+ifeq ($(SRCLANG),c)
+  LIBS = -lc
+endif
+ifeq ($(SRCLANG),c++)
+  USE_CXX = true
+  CXXLIBS = -lstdc++ -lm -lc
+  CXXRTS = cxxrt.o newlibrt.o
+endif
+
+#
+#  ¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€Î¥Ç¥£¥ì¥¯¥È¥ê€ÎÄêµÁ
+#
+SRCDIR = @(SRCDIR)
+
+#
+#  ¥ª¥Ö¥ž¥§¥¯¥È¥Õ¥¡¥€¥ëÌŸ€Î³ÈÄ¥»Ò€ÎÀßÄê
+#
+OBJEXT = @(OBJEXT)
+
+#
+#  ŒÂ¹ÔŽÄ¶­€ÎÄêµÁ¡Ê¥¿¡Œ¥²¥Ã¥È°ÍÂž€ËŸåœñ€­€µ€ì€ëŸì¹ç€¬€¢€ë¡Ë
+#
+DBGENV := @(DBGENV)
+
+#
+#  ¥«¡Œ¥Í¥ë¥é¥€¥Ö¥é¥ê¡Êlibkernel.a¡Ë€Î¥Ç¥£¥ì¥¯¥È¥êÌŸ
+#  ¡Ê¥«¡Œ¥Í¥ë¥é¥€¥Ö¥é¥ê€âmakeÂÐŸÝ€Ë€¹€ë»þ€Ï¡€¶õ€ËÄêµÁ€¹€ë¡Ë
+#
+KERNEL_LIB = @(KERNEL_LIB)
+
+#
+#  ¥«¡Œ¥Í¥ë€òŽØ¿ôÃ±°Ì€Ç¥³¥ó¥Ñ¥€¥ë€¹€ë€«€É€Š€«€ÎÄêµÁ
+#
+KERNEL_FUNCOBJS = @(KERNEL_FUNCOBJS)
+
+#
+#  ¥È¥ì¡Œ¥¹¥í¥°€òŒèÆÀ€¹€ë€«€É€Š€«€ÎÄêµÁ
+#
+ENABLE_TRACE = @(ENABLE_TRACE)
+
+#
+#  ¥æ¡Œ¥Æ¥£¥ê¥Æ¥£¥×¥í¥°¥é¥à€ÎÌŸŸÎ
+#
+PERL = @(PERL)
+CFG = @(CFG)
+
+#
+#  ¥ª¥Ö¥ž¥§¥¯¥È¥Õ¥¡¥€¥ëÌŸ€ÎÄêµÁ
+#
+OBJNAME = asp
+ifdef OBJEXT
+  OBJFILE = $(OBJNAME).$(OBJEXT)
+  CFG1_OUT = cfg1_out.$(OBJEXT)
+else
+  OBJFILE = $(OBJNAME)
+  CFG1_OUT = cfg1_out
+endif
+
+#
+#  ¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€Î¥Ç¥£¥ì¥¯¥È¥ê€ÎÄêµÁ
+#
+TARGETDIR = $(SRCDIR)/target/$(TARGET)
+
+#
+#  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎÄêµÁ€Î¥€¥ó¥¯¥ë¡Œ¥É
+#
+include $(TARGETDIR)/Makefile.target
+
+#
+#  ¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿ŽØ·ž€ÎÊÑ¿ô€ÎÄêµÁ
+#
+CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.csv \
+			--cfg1-def-table $(SRCDIR)/kernel/kernel_def.csv $(CFG_TABS)
+
+CFG_ASMOBJS := $(CFG_ASMOBJS)
+CFG_COBJS := kernel_cfg.o $(CFG_COBJS)
+CFG_OBJS := $(CFG_ASMOBJS) $(CFG_COBJS)
+CFG2_OUT_SRCS := kernel_cfg.h kernel_cfg.c $(CFG2_OUT_SRCS)
+
+#
+#  ¶ŠÄÌ¥³¥ó¥Ñ¥€¥ë¥ª¥×¥·¥ç¥ó€ÎÄêµÁ
+#
+COPTS := $(COPTS) -g @(COPTS)
+ifndef OMIT_WARNING_ALL
+  COPTS := $(COPTS) -Wall
+endif
+ifndef OMIT_OPTIMIZATION
+  COPTS := $(COPTS) -O2
+endif
+CDEFS := $(CDEFS) @(CDEFS)
+INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR)/arch -I$(SRCDIR) $(INCLUDES)
+LDFLAGS := $(LDFLAGS) @(LDFLAGS)
+CFG1_OUT_LDFLAGS := $(CFG1_OUT_LDFLAGS) @(LDFLAGS)
+LIBS := $(LIBS) $(CXXLIBS)
+CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES)
+
+#
+#  ¥¢¥×¥ê¥±¡Œ¥·¥ç¥ó¥×¥í¥°¥é¥à€ËŽØ€¹€ëÄêµÁ
+#
+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_COBJS := $(APPL_COBJS) log_output.o vasyslog.o t_perror.o strerror.o
+APPL_CFLAGS =
+APPL_LIBS =
+ifdef APPLDIR
+  INCLUDES := $(INCLUDES) $(foreach dir,$(APPLDIR),-I$(dir))
+endif
+
+#
+#  ¥·¥¹¥Æ¥à¥µ¡Œ¥Ó¥¹€ËŽØ€¹€ëÄêµÁ
+#
+SYSSVC_DIR := $(SYSSVC_DIR) $(SRCDIR)/syssvc $(SRCDIR)/library
+SYSSVC_ASMOBJS := $(SYSSVC_ASMOBJS)
+SYSSVC_COBJS := $(SYSSVC_COBJS) banner.o syslog.o serial.o logtask.o \
+				@(SYSSVCOBJS) $(CXXRTS)
+SYSSVC_CFLAGS := $(SYSSVC_CFLAGS)
+SYSSVC_LIBS := $(SYSSVC_LIBS)
+INCLUDES := $(INCLUDES)
+
+#
+#  ¥«¡Œ¥Í¥ë€ËŽØ€¹€ëÄêµÁ
+#
+#  KERNEL_ASMOBJS: ¥«¡Œ¥Í¥ë¥é¥€¥Ö¥é¥ê€ËŽÞ€á€ë¡€¥œ¡Œ¥¹€¬¥¢¥»¥ó¥Ö¥êžÀžì€Î
+#				   ¥ª¥Ö¥ž¥§¥¯¥È¥Õ¥¡¥€¥ë¡¥
+#  KERNEL_COBJS: ¥«¡Œ¥Í¥ë€Î¥é¥€¥Ö¥é¥ê€ËŽÞ€á€ë¡€¥œ¡Œ¥¹€¬CžÀžì€Ç¡€¥œ¡Œ¥¹
+#				 ¥Õ¥¡¥€¥ë€È1ÂÐ1€ËÂÐ±þ€¹€ë¥ª¥Ö¥ž¥§¥¯¥È¥Õ¥¡¥€¥ë¡¥
+#  KERNEL_LCSRCS: ¥«¡Œ¥Í¥ë€Î¥é¥€¥Ö¥é¥ê€ËŽÞ€á€ëCžÀžì€Î¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€Ç¡€
+#				  1€Ä€Î¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€«€éÊ£¿ô€Î¥ª¥Ö¥ž¥§¥¯¥È¥Õ¥¡¥€¥ë€òÀž
+#				  À®€¹€ë€â€Î¡¥
+#  KERNEL_LCOBJS: Ÿå€Î¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€«€éÀžÀ®€µ€ì€ë¥ª¥Ö¥ž¥§¥¯¥È¥Õ¥¡¥€¥ë¡¥
+#  KERNEL_AUX_COBJS: ¥í¡Œ¥É¥â¥ž¥å¡Œ¥ë€ËŽÞ€á€Ê€€€¬¡€¥«¡Œ¥Í¥ë€Î¥œ¡Œ¥¹¥Õ¥¡
+#					 ¥€¥ë€ÈÆ±€ž¥ª¥×¥·¥ç¥ó€òÅ¬ÍÑ€·€Æ¥³¥ó¥Ñ¥€¥ë€¹€Ù€­¡€¥œ¡Œ
+#					 ¥¹€¬CžÀžì€Î¥ª¥Ö¥ž¥§¥¯¥È¥Õ¥¡¥€¥ë¡¥
+#
+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
+
+#
+#  ¥¿¡Œ¥²¥Ã¥È¥Õ¥¡¥€¥ë¡ÊÊ£¿ô€òÆ±»þ€ËÁªÂò€·€Æ€Ï€Ê€é€Ê€€¡Ë
+#
+all: $(OBJFILE)
+#all: $(OBJNAME).bin
+#all: $(OBJNAME).srec
+
+##### °Ê²Œ€ÏÊÔœž€·€Ê€€€³€È #####
+
+#
+#  ŽÄ¶­€Ë°ÍÂž€¹€ë¥³¥ó¥Ñ¥€¥ë¥ª¥×¥·¥ç¥ó€ÎÄêµÁ
+#
+ifdef DBGENV
+  CDEFS := $(CDEFS) -D$(DBGENV)
+endif
+
+#
+#  ¥«¡Œ¥Í¥ë€Î¥Õ¥¡¥€¥ë¹œÀ®€ÎÄêµÁ
+#
+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
+
+#
+#  ¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€Î€¢€ë¥Ç¥£¥ì¥¯¥È¥ê€ËŽØ€¹€ëÄêµÁ
+#
+vpath %.c $(KERNEL_DIR) $(SYSSVC_DIR) $(APPL_DIR)
+vpath %.S $(KERNEL_DIR) $(SYSSVC_DIR) $(APPL_DIR)
+vpath %.cfg $(APPL_DIR)
+
+#
+#  ¥³¥ó¥Ñ¥€¥ë€Î€¿€á€ÎÊÑ¿ô€ÎÄêµÁ
+#
+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)
+ifdef KERNEL_LIB
+  ALL_LIBS = $(APPL_LIBS) $(SYSSVC_LIBS) -lkernel $(LIBS)
+  LIBS_DEP = $(filter %.a,$(ALL_LIBS)) $(KERNEL_LIB)/libkernel.a
+  LDFLAGS := $(LDFLAGS) -L$(KERNEL_LIB)
+  REALCLEAN_FILES := libkernel.a $(REALCLEAN_FILES)
+else
+  ALL_LIBS = $(APPL_LIBS) $(SYSSVC_LIBS) libkernel.a $(LIBS)
+  LIBS_DEP = $(filter %.a,$(ALL_LIBS))
+endif
+
+ifdef TEXT_START_ADDRESS
+  LDFLAGS := $(LDFLAGS) -Wl,-Ttext,$(TEXT_START_ADDRESS)
+  CFG1_OUT_LDFLAGS := $(CFG1_OUT_LDFLAGS) -Wl,-Ttext,$(TEXT_START_ADDRESS)
+endif
+ifdef DATA_START_ADDRESS
+  LDFLAGS := $(LDFLAGS) -Wl,-Tdata,$(DATA_START_ADDRESS)
+  CFG1_OUT_LDFLAGS := $(CFG1_OUT_LDFLAGS) -Wl,-Tdata,$(DATA_START_ADDRESS)
+endif
+ifdef LDSCRIPT
+  LDFLAGS := $(LDFLAGS) -T $(LDSCRIPT)
+  CFG1_OUT_LDFLAGS := $(CFG1_OUT_LDFLAGS) -T $(LDSCRIPT)
+endif
+
+#
+#  ¥ª¥Õ¥»¥Ã¥È¥Õ¥¡¥€¥ë¡Êoffset.h¡Ë€ÎÀžÀ®µ¬Â§
+#
+ifdef OFFSET_TF
+offset.h: $(APPL_CFG) kernel_cfg.timestamp
+	$(CFG) --pass 3 --kernel asp $(INCLUDES) \
+				--rom-image cfg1_out.srec --symbol-table cfg1_out.syms \
+				-T $(OFFSET_TF) $(CFG_TABS) $<
+else
+offset.h: makeoffset.s $(SRCDIR)/utils/genoffset
+	$(PERL) $(SRCDIR)/utils/genoffset makeoffset.s > offset.h
+endif
+
+#
+#  ¥«¡Œ¥Í¥ë€Î¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë€ÎÀžÀ®
+#
+cfg1_out.c: $(APPL_CFG)
+	$(CFG) --pass 1 --kernel asp $(INCLUDES) $(CFG_TABS) $<
+
+$(CFG2_OUT_SRCS): kernel_cfg.timestamp
+kernel_cfg.timestamp: $(APPL_CFG) \
+						$(START_OBJS) cfg1_out.o $(END_OBJS) $(HIDDEN_OBJS)
+	$(LINK) $(CFLAGS) $(CFG1_OUT_LDFLAGS) -o $(CFG1_OUT) \
+						$(START_OBJS) cfg1_out.o $(END_OBJS)
+	$(NM) -n $(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 -r kernel_cfg.c kernel_cfg.timestamp
+
+#
+#  ¥«¡Œ¥Í¥ë¥é¥€¥Ö¥é¥ê¥Õ¥¡¥€¥ë€ÎÀžÀ®
+#
+libkernel.a: $(OFFSET_H) $(KERNEL_LIB_OBJS)
+	rm -f libkernel.a
+	$(AR) -rcs libkernel.a $(KERNEL_LIB_OBJS)
+	$(RANLIB) libkernel.a
+
+#
+#  ÆÃÊÌ€Ê°ÍÂžŽØ·ž€ÎÄêµÁ
+#
+banner.o: kernel_cfg.timestamp $(filter-out banner.o,$(ALL_OBJS)) $(LIBS_DEP)
+
+#
+#  ÁŽÂÎ€Î¥ê¥ó¥¯
+#
+$(OBJFILE): $(APPL_CFG) kernel_cfg.timestamp $(ALL_OBJS) $(LIBS_DEP)
+	$(LINK) $(CFLAGS) $(LDFLAGS) -o $(OBJFILE) $(START_OBJS) \
+			$(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) $(ALL_LIBS) $(END_OBJS)
+	$(NM) -n $(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) $<
+
+#
+#  ¥Ð¥€¥Ê¥ê¥Õ¥¡¥€¥ë€ÎÀžÀ®
+#
+$(OBJNAME).bin: $(OBJFILE)
+	$(OBJCOPY) -O binary -S $(OBJFILE) $(OBJNAME).bin
+
+#
+#  S¥ì¥³¡Œ¥É¥Õ¥¡¥€¥ë€ÎÀžÀ®
+#
+$(OBJNAME).srec: $(OBJFILE)
+	$(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).srec
+
+#
+#  ¥³¥ó¥Ñ¥€¥ë·ë²Ì€ÎŸÃµî
+#
+.PHONY: clean
+clean:
+	rm -f \#* *~ *.o $(CLEAN_FILES)
+	rm -f $(OBJFILE) $(OBJNAME).syms $(OBJNAME).srec $(OBJNAME).bin
+	rm -f kernel_cfg.timestamp $(CFG2_OUT_SRCS)
+	rm -f cfg1_out.c $(CFG1_OUT) cfg1_out.syms cfg1_out.srec
+ifndef KERNEL_LIB
+	rm -f libkernel.a
+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_SRCS); \
+		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)
+
+#
+#  ¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿€¬ÀžÀ®€·€¿¥Õ¥¡¥€¥ë€Î¥³¥ó¥Ñ¥€¥ë¥ë¡Œ¥ë€È°ÍÂžŽØ·žºîÀ®
+#  ¥ë¡Œ¥ë€ÎÄêµÁ
+#
+#  ¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿€¬ÀžÀ®€·€¿¥Õ¥¡¥€¥ë€Ï¡€¥¢¥×¥ê¥±¡Œ¥·¥ç¥ó¥×¥í¥°¥é¥àÍÑ¡€
+#  ¥·¥¹¥Æ¥à¥µ¡Œ¥Ó¥¹ÍÑ¡€¥«¡Œ¥Í¥ëÍÑ€Î€¹€Ù€Æ€Î¥ª¥×¥·¥ç¥ó€òÉÕ€±€Æ¥³¥ó¥Ñ¥€¥ë
+#  €¹€ë¡¥
+#
+ALL_CFG_COBJS = $(CFG_COBJS) cfg1_out.o
+ALL_CFG_ASMOBJS = $(CFG_ASMOBJS)
+CFG_CFLAGS = $(APPL_CFLAGS) $(SYSSVC_CFLAGS) $(KERNEL_CFLAGS)
+
+$(ALL_CFG_COBJS): %.o: %.c
+	$(CC) -c $(CFLAGS) $(CFG_CFLAGS) $<
+
+$(ALL_CFG_COBJS:.o=.s): %.s: %.c
+	$(CC) -S $(CFLAGS) $(CFG_CFLAGS) $<
+
+$(ALL_CFG_COBJS:.o=.d): %.d: %.c
+	@$(PERL) $(SRCDIR)/utils/makedep -C $(CC) $(MAKEDEP_OPTS) \
+		-O "$(CFLAGS) $(CFG_CFLAGS)" $< >> Makefile.depend
+
+$(ALL_CFG_ASMOBJS): %.o: %.S
+	$(CC) -c $(CFLAGS) $(CFG_CFLAGS) $<
+
+$(ALL_CFG_ASMOBJS:.o=.d): %.d: %.S
+	@$(PERL) $(SRCDIR)/utils/makedep -C $(CC) $(MAKEDEP_OPTS) \
+		-O "$(CFLAGS) $(CFG_CFLAGS)" $< >> Makefile.depend
+
+#
+#  ÆÃŒì€Ê°ÍÂžŽØ·žºîÀ®¥ë¡Œ¥ë€ÎÄêµÁ
+#
+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
+
+#
+#  °ÍÂžŽØ·ž¥Õ¥¡¥€¥ë€ÎÀžÀ®
+#
+.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
+
+#
+#  °ÍÂžŽØ·ž¥Õ¥¡¥€¥ë€ò¥€¥ó¥¯¥ë¡Œ¥É
+#
+-include Makefile.depend
+
+#
+#  ³«È¯¥Ä¡Œ¥ë€Î¥³¥Þ¥ó¥ÉÌŸ€ÎÄêµÁ
+#
+ifeq ($(TOOL),gcc)
+  #
+  #  GNU³«È¯ŽÄ¶­ÍÑ
+  #
+  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
+
+#
+#  ¥³¥ó¥Ñ¥€¥ë¥ë¡Œ¥ë€ÎÄêµÁ
+#
+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) $<
+
+#
+#  °ÍÂžŽØ·žºîÀ®¥ë¡Œ¥ë€ÎÄêµÁ
+#
+$(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
+
+#
+#  ¥Ç¥Õ¥©¥ë¥È¥³¥ó¥Ñ¥€¥ë¥ë¡Œ¥ë€òŸåœñ€­
+#
+%.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: /sample/sample1.c
===================================================================
--- /sample/sample1.c	(revision 7)
+++ /sample/sample1.c	(revision 7)
@@ -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) 2004-2012 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  $Id$
+ */
+
+/* 
+ *  ¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à(1)€ÎËÜÂÎ
+ *
+ *  ASP¥«¡Œ¥Í¥ë€ÎŽðËÜÅª€ÊÆ°ºî€ò³ÎÇ§€¹€ë€¿€á€Î¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à¡¥
+ *
+ *  ¥×¥í¥°¥é¥à€Î³µÍ×:
+ *
+ *  ¥æ¡Œ¥¶¥€¥ó¥¿¥Õ¥§¡Œ¥¹€òŒõ€±»ý€Ä¥á¥€¥ó¥¿¥¹¥¯¡Ê¥¿¥¹¥¯ID: MAIN_TASK¡€Í¥
+ *  ÀèÅÙ: MAIN_PRIORITY¡Ë€È¡€3€Ä€ÎÊÂ¹ÔŒÂ¹Ô€µ€ì€ë¥¿¥¹¥¯¡Ê¥¿¥¹¥¯ID:
+ *  TASK1¡ÁTASK3¡€œéŽüÍ¥ÀèÅÙ: MID_PRIORITY¡Ë€Ç¹œÀ®€µ€ì€ë¡¥€Þ€¿¡€µ¯Æ°Œþ
+ *  Žü€¬2ÉÃ€ÎŒþŽü¥Ï¥ó¥É¥é¡ÊŒþŽü¥Ï¥ó¥É¥éID: CYCHDR1¡Ë€òÍÑ€€€ë¡¥
+ *
+ *  ÊÂ¹ÔŒÂ¹Ô€µ€ì€ë¥¿¥¹¥¯€Ï¡€task_loop²ó¶õ¥ë¡Œ¥×€òŒÂ¹Ô€¹€ëÅÙ€Ë¡€¥¿¥¹¥¯€¬
+ *  ŒÂ¹ÔÃæ€Ç€¢€ë€³€È€ò€¢€é€ï€¹¥á¥Ã¥»¡Œ¥ž€òÉœŒš€¹€ë¡¥¶õ¥ë¡Œ¥×€òŒÂ¹Ô€¹€ë
+ *  €Î€Ï¡€¶õ¥ë¡Œ¥×€Ê€·€Ç¥á¥Ã¥»¡Œ¥ž€òœÐÎÏ€¹€ë€È¡€Â¿ÎÌ€Î¥á¥Ã¥»¡Œ¥ž€¬œÐÎÏ
+ *  €µ€ì¡€¥×¥í¥°¥é¥à€ÎÆ°ºî€¬³ÎÇ§€·€º€é€¯€Ê€ë€¿€á€Ç€¢€ë¡¥€Þ€¿¡€ÄãÂ®€Ê¥·
+ *  ¥ê¥¢¥ë¥Ý¡Œ¥È€òÍÑ€€€Æ¥á¥Ã¥»¡Œ¥ž€òœÐÎÏ€¹€ëŸì¹ç€Ë¡€€¹€Ù€Æ€Î¥á¥Ã¥»¡Œ¥ž
+ *  €¬œÐÎÏ€Ç€­€ë€è€Š€Ë¡€¥á¥Ã¥»¡Œ¥ž€ÎÎÌ€òÀ©žÂ€¹€ë€È€€€ŠÍýÍ³€â€¢€ë¡¥
+ *
+ *  ŒþŽü¥Ï¥ó¥É¥é€Ï¡€»°€Ä€ÎÍ¥ÀèÅÙ¡ÊHIGH_PRIORITY¡€MID_PRIORITY¡€
+ *  LOW_PRIORITY¡Ë€Î¥ì¥Ç¥£¥­¥å¡Œ€ò²óÅŸ€µ€»€ë¡¥¥×¥í¥°¥é¥à€Îµ¯Æ°ÄŸžå€Ï¡€
+ *  ŒþŽü¥Ï¥ó¥É¥é€ÏÄä»ßŸõÂÖ€Ë€Ê€Ã€Æ€€€ë¡¥
+ *
+ *  ¥á¥€¥ó¥¿¥¹¥¯€Ï¡€¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€«€é€ÎÊž»úÆþÎÏ€ò¹Ô€€¡ÊÊž»úÆþÎÏ€ò
+ *  ÂÔ€Ã€Æ€€€ëŽÖ€Ï¡€ÊÂ¹ÔŒÂ¹Ô€µ€ì€ë¥¿¥¹¥¯€¬ŒÂ¹Ô€µ€ì€Æ€€€ë¡Ë¡€ÆþÎÏ€µ€ì€¿
+ *  Êž»ú€ËÂÐ±þ€·€¿œèÍý€òŒÂ¹Ô€¹€ë¡¥ÆþÎÏ€µ€ì€¿Êž»ú€ÈœèÍý€ÎŽØ·ž€ÏŒ¡€ÎÄÌ€ê¡¥
+ *  Control-C€Þ€¿€Ï'Q'€¬ÆþÎÏ€µ€ì€ë€È¡€¥×¥í¥°¥é¥à€òœªÎ»€¹€ë¡¥
+ *
+ *  '1' : ÂÐŸÝ¥¿¥¹¥¯€òTASK1€ËÀÚ€êŽ¹€š€ë¡ÊœéŽüÀßÄê¡Ë¡¥
+ *  '2' : ÂÐŸÝ¥¿¥¹¥¯€òTASK2€ËÀÚ€êŽ¹€š€ë¡¥
+ *  '3' : ÂÐŸÝ¥¿¥¹¥¯€òTASK3€ËÀÚ€êŽ¹€š€ë¡¥
+ *  'a' : ÂÐŸÝ¥¿¥¹¥¯€òact_tsk€Ë€è€êµ¯Æ°€¹€ë¡¥
+ *  'A' : ÂÐŸÝ¥¿¥¹¥¯€ËÂÐ€¹€ëµ¯Æ°Í×µá€òcan_act€Ë€è€ê¥­¥ã¥ó¥»¥ë€¹€ë¡¥
+ *  'e' : ÂÐŸÝ¥¿¥¹¥¯€Ëext_tsk€òžÆ€ÓœÐ€µ€»¡€œªÎ»€µ€»€ë¡¥
+ *  't' : ÂÐŸÝ¥¿¥¹¥¯€òter_tsk€Ë€è€ê¶¯À©œªÎ»€¹€ë¡¥
+ *  '>' : ÂÐŸÝ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€òHIGH_PRIORITY€Ë€¹€ë¡¥
+ *  '=' : ÂÐŸÝ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€òMID_PRIORITY€Ë€¹€ë¡¥
+ *  '<' : ÂÐŸÝ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€òLOW_PRIORITY€Ë€¹€ë¡¥
+ *  'G' : ÂÐŸÝ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€òget_pri€ÇÆÉ€ßœÐ€¹¡¥
+ *  's' : ÂÐŸÝ¥¿¥¹¥¯€Ëslp_tsk€òžÆ€ÓœÐ€µ€»¡€µ¯Ÿ²ÂÔ€Á€Ë€µ€»€ë¡¥
+ *  'S' : ÂÐŸÝ¥¿¥¹¥¯€Ëtslp_tsk(10ÉÃ)€òžÆ€ÓœÐ€µ€»¡€µ¯Ÿ²ÂÔ€Á€Ë€µ€»€ë¡¥
+ *  'w' : ÂÐŸÝ¥¿¥¹¥¯€òwup_tsk€Ë€è€êµ¯Ÿ²€¹€ë¡¥
+ *  'W' : ÂÐŸÝ¥¿¥¹¥¯€ËÂÐ€¹€ëµ¯Ÿ²Í×µá€òcan_wup€Ë€è€ê¥­¥ã¥ó¥»¥ë€¹€ë¡¥
+ *  'l' : ÂÐŸÝ¥¿¥¹¥¯€òrel_wai€Ë€è€ê¶¯À©Åª€ËÂÔ€Á²òœü€Ë€¹€ë¡¥
+ *  'u' : ÂÐŸÝ¥¿¥¹¥¯€òsus_tsk€Ë€è€ê¶¯À©ÂÔ€ÁŸõÂÖ€Ë€¹€ë¡¥
+ *  'm' : ÂÐŸÝ¥¿¥¹¥¯€Î¶¯À©ÂÔ€ÁŸõÂÖ€òrsm_tsk€Ë€è€ê²òœü€¹€ë¡¥
+ *  'd' : ÂÐŸÝ¥¿¥¹¥¯€Ëdly_tsk(10ÉÃ)€òžÆ€ÓœÐ€µ€»¡€»þŽÖ·Ð²áÂÔ€Á€Ë€µ€»€ë¡¥
+ *  'x' : ÂÐŸÝ¥¿¥¹¥¯€ËÎã³°¥Ñ¥¿¡Œ¥ó0x0001€ÎÎã³°œèÍý€òÍ×µá€¹€ë¡¥
+ *  'X' : ÂÐŸÝ¥¿¥¹¥¯€ËÎã³°¥Ñ¥¿¡Œ¥ó0x0002€ÎÎã³°œèÍý€òÍ×µá€¹€ë¡¥
+ *  'y' : ÂÐŸÝ¥¿¥¹¥¯€Ëdis_tex€òžÆ€ÓœÐ€µ€»¡€¥¿¥¹¥¯Îã³°€ò¶Ø»ß€¹€ë¡¥
+ *  'Y' : ÂÐŸÝ¥¿¥¹¥¯€Ëena_tex€òžÆ€ÓœÐ€µ€»¡€¥¿¥¹¥¯Îã³°€òµö²Ä€¹€ë¡¥
+ *  'r' : 3€Ä€ÎÍ¥ÀèÅÙ¡ÊHIGH_PRIORITY¡€MID_PRIORITY¡€LOW_PRIORITY¡Ë€Î¥ì
+ *        ¥Ç¥£¥­¥å¡Œ€ò²óÅŸ€µ€»€ë¡¥
+ *  'c' : ŒþŽü¥Ï¥ó¥É¥é€òÆ°ºî³«»Ï€µ€»€ë¡¥
+ *  'C' : ŒþŽü¥Ï¥ó¥É¥é€òÆ°ºîÄä»ß€µ€»€ë¡¥
+ *  'b' : ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ò5ÉÃžå€Ëµ¯Æ°€¹€ë€è€ŠÆ°ºî³«»Ï€µ€»€ë¡¥
+ *  'B' : ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€òÆ°ºîÄä»ß€µ€»€ë¡¥
+ *  'z' : ÂÐŸÝ¥¿¥¹¥¯€ËCPUÎã³°€òÈ¯Àž€µ€»€ë¡Ê¥¿¥¹¥¯€òœªÎ»€µ€»€ë¡Ë¡¥
+ *  'Z' : ÂÐŸÝ¥¿¥¹¥¯€ËCPU¥í¥Ã¥¯ŸõÂÖ€ÇCPUÎã³°€òÈ¯Àž€µ€»€ë¡Ê¥×¥í¥°¥é¥à€ò
+ *        œªÎ»€¹€ë¡Ë¡¥
+ *  'V' : get_utm€ÇÀ­ÇœÉŸ²ÁÍÑ¥·¥¹¥Æ¥à»þ¹ï€ò2²óÆÉ€à¡¥
+ *  'v' : È¯¹Ô€·€¿¥·¥¹¥Æ¥à¥³¡Œ¥ë€òÉœŒš€¹€ë¡Ê¥Ç¥Õ¥©¥ë¥È¡Ë¡¥
+ *  'q' : È¯¹Ô€·€¿¥·¥¹¥Æ¥à¥³¡Œ¥ë€òÉœŒš€·€Ê€€¡¥
+ */
+
+#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"
+
+/*
+ *  ¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€Î¥š¥é¡Œ€Î¥í¥°œÐÎÏ
+ */
+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))
+
+/*
+ *  ÊÂ¹ÔŒÂ¹Ô€µ€ì€ë¥¿¥¹¥¯€Ø€Î¥á¥Ã¥»¡Œ¥žÎÎ°è
+ */
+char	message[3];
+
+/*
+ *  ¥ë¡Œ¥×²ó¿ô
+ */
+ulong_t	task_loop;		/* ¥¿¥¹¥¯Æâ€Ç€Î¥ë¡Œ¥×²ó¿ô */
+ulong_t	tex_loop;		/* Îã³°œèÍý¥ë¡Œ¥Á¥óÆâ€Ç€Î¥ë¡Œ¥×²ó¿ô */
+
+/*
+ *  ÊÂ¹ÔŒÂ¹Ô€µ€ì€ë¥¿¥¹¥¯
+ */
+void task(intptr_t exinf)
+{
+	volatile ulong_t	i;
+	int_t		n = 0;
+	int_t		tskno = (int_t) exinf;
+	const char	*graph[] = { "|", "  +", "    *" };
+	char		c;
+
+	SVC_PERROR(ena_tex());
+	while (true) {
+		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;
+		}
+	}
+}
+
+/*
+ *  ÊÂ¹Ô€·€ÆŒÂ¹Ô€µ€ì€ë¥¿¥¹¥¯ÍÑ€Î¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó
+ */
+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Îã³°¥Ï¥ó¥É¥é
+ */
+#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 */
+
+/*
+ *  ŒþŽü¥Ï¥ó¥É¥é
+ *
+ *  HIGH_PRIORITY¡€MID_PRIORITY¡€LOW_PRIORITY €Î³ÆÍ¥ÀèÅÙ€Î¥ì¥Ç¥£¥­¥å¡Œ
+ *  €ò²óÅŸ€µ€»€ë¡¥
+ */
+void cyclic_handler(intptr_t exinf)
+{
+	SVC_PERROR(irot_rdq(HIGH_PRIORITY));
+	SVC_PERROR(irot_rdq(MID_PRIORITY));
+	SVC_PERROR(irot_rdq(LOW_PRIORITY));
+}
+
+/*
+ *  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é
+ *
+ *  HIGH_PRIORITY¡€MID_PRIORITY¡€LOW_PRIORITY €Î³ÆÍ¥ÀèÅÙ€Î¥ì¥Ç¥£¥­¥å¡Œ
+ *  €ò²óÅŸ€µ€»€ë¡¥
+ */
+void alarm_handler(intptr_t exinf)
+{
+	SVC_PERROR(irot_rdq(HIGH_PRIORITY));
+	SVC_PERROR(irot_rdq(MID_PRIORITY));
+	SVC_PERROR(irot_rdq(LOW_PRIORITY));
+}
+
+/*
+ *  ¥á¥€¥ó¥¿¥¹¥¯
+ */
+void main_task(intptr_t exinf)
+{
+	char	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);
+
+	/*
+	 *  ¥·¥ê¥¢¥ë¥Ý¡Œ¥È€ÎœéŽü²œ
+	 *
+	 *  ¥·¥¹¥Æ¥à¥í¥°¥¿¥¹¥¯€ÈÆ±€ž¥·¥ê¥¢¥ë¥Ý¡Œ¥È€ò»È€ŠŸì¹ç€Ê€É¡€¥·¥ê¥¢¥ë
+	 *  ¥Ý¡Œ¥È€¬¥ª¡Œ¥×¥óºÑ€ß€ÎŸì¹ç€Ë€Ï€³€³€ÇE_OBJ¥š¥é¡Œ€Ë€Ê€ë€¬¡€»ÙŸã€Ï
+	 *  €Ê€€¡¥
+	 */
+	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)));
+
+	/*
+ 	 *  ¥ë¡Œ¥×²ó¿ô€ÎÀßÄê
+	 *
+	 *  ÊÂ¹ÔŒÂ¹Ô€µ€ì€ë¥¿¥¹¥¯Æâ€Ç€Î¶õ¥ë¡Œ¥×€Î²ó¿ô¡Êtask_loop¡Ë€Ï¡€¶õ¥ë¡Œ
+	 *  ¥×€ÎŒÂ¹Ô»þŽÖ€¬Ìó0.4ÉÃ€Ë€Ê€ë€è€Š€ËÀßÄê€¹€ë¡¥€³€ÎÀßÄê€Î€¿€á€Ë¡€
+	 *  LOOP_REF²ó€Î¶õ¥ë¡Œ¥×€ÎŒÂ¹Ô»þŽÖ€ò¡€€œ€ÎÁ°žå€Çget_tim€òžÆ€Ö€³€È€Ç
+	 *  Â¬Äê€·¡€€œ€ÎÂ¬Äê·ë²Ì€«€é¶õ¥ë¡Œ¥×€ÎŒÂ¹Ô»þŽÖ€¬0.4ÉÃ€Ë€Ê€ë¥ë¡Œ¥×²ó
+	 *  ¿ô€òµá€á¡€task_loop€ËÀßÄê€¹€ë¡¥
+	 *
+	 *  LOOP_REF€Ï¡€¥Ç¥Õ¥©¥ë¥È€Ç€Ï1,000,000€ËÀßÄê€·€Æ€€€ë€¬¡€ÁÛÄê€·€¿€è
+	 *  €êÃÙ€€¥×¥í¥»¥Ã¥µ€Ç€Ï¡€¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à€ÎŒÂ¹Ô³«»Ï€Ë»þŽÖ€¬€«€«
+	 *  €ê€¹€®€ë€È€€€ŠÌäÂê€òÀž€ž€ë¡¥µÕ€ËÁÛÄê€·€¿€è€êÂ®€€¥×¥í¥»¥Ã¥µ€Ç€Ï¡€
+	 *  LOOP_REF²ó€Î¶õ¥ë¡Œ¥×€ÎŒÂ¹Ô»þŽÖ€¬Ã»€¯€Ê€ê¡€task_loop€ËÀßÄê€¹€ëÃÍ
+	 *  €Îžíº¹€¬Âç€­€¯€Ê€ë€È€€€ŠÌäÂê€¬€¢€ë¡¥
+	 *
+	 *  €œ€³€Ç¡€€œ€Î€è€Š€Ê¥¿¡Œ¥²¥Ã¥È€Ç€Ï¡€target_test.h€Ç¡€LOOP_REF€òÅ¬
+	 *  ÀÚ€ÊÃÍ€ËÄêµÁ€¹€ë€Î€¬ËŸ€Þ€·€€¡¥
+	 *
+	 *  €Þ€¿¡€task_loop€ÎÃÍ€òžÇÄê€·€¿€€Ÿì¹ç€Ë€Ï¡€€œ€ÎÃÍ€òTASK_LOOP€Ë¥Þ
+	 *  ¥¯¥íÄêµÁ€¹€ë¡¥TASK_LOOP€¬¥Þ¥¯¥íÄêµÁ€µ€ì€Æ€€€ëŸì¹ç¡€Ÿåµ­€ÎÂ¬Äê€ò
+	 *  ¹Ô€ï€º€Ë¡€TASK_LOOP€ËÄêµÁ€µ€ì€¿ÃÍ€ò¶õ¥ë¡Œ¥×€Î²ó¿ô€È€¹€ë¡¥
+	 *
+	 * ¥¿¡Œ¥²¥Ã¥È€Ë€è€Ã€Æ€Ï¡€¶õ¥ë¡Œ¥×€ÎŒÂ¹Ô»þŽÖ€Î1²óÌÜ€ÎÂ¬Äê€Ç¡€ËÜÍè€è
+	 * €ê€âÄ¹€á€Ë€Ê€ë€â€Î€¬€¢€ë¡¥€³€Î€è€Š€Ê¥¿¡Œ¥²¥Ã¥È€Ç€Ï¡€MEASURE_TWICE
+	 * €ò¥Þ¥¯¥íÄêµÁ€¹€ë€³€È€Ç¡€1²óÌÜ€ÎÂ¬Äê·ë²Ì€òŒÎ€Æ€Æ¡€2²óÌÜ€ÎÂ¬Äê·ë²Ì
+	 * €ò»È€Š¡¥
+	 *
+	 *  ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óÆâ€Ç€Î¶õ¥ë¡Œ¥×€Î²ó¿ô¡Êtex_loop¡Ë€Ï¡€
+	 *  task_loop€Î4Ê¬€Î1€ÎÃÍ¡Ê¶õ¥ë¡Œ¥×€ÎŒÂ¹Ô»þŽÖ€¬0.1ÉÃ€Ë€Ê€ë¥ë¡Œ¥×²ó
+	 *  ¿ô¡Ë€ËÀßÄê€¹€ë¡¥
+	 */
+#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 / 4;
+
+	/*
+ 	 *  ¥¿¥¹¥¯€Îµ¯Æ°
+	 */
+	SVC_PERROR(act_tsk(TASK1));
+	SVC_PERROR(act_tsk(TASK2));
+	SVC_PERROR(act_tsk(TASK3));
+
+	/*
+ 	 *  ¥á¥€¥ó¥ë¡Œ¥×
+	 */
+	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: /sample/sample1.cfg
===================================================================
--- /sample/sample1.cfg	(revision 7)
+++ /sample/sample1.cfg	(revision 7)
@@ -0,0 +1,26 @@
+/*
+ *  $Id$
+ */
+
+/*
+ *  ¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à(1)€Î¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+ */
+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: /sample/sample1.h
===================================================================
--- /sample/sample1.h	(revision 7)
+++ /sample/sample1.h	(revision 7)
@@ -0,0 +1,93 @@
+/*
+ *  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
+ *
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ *
+ *  $Id$
+ */
+
+/*
+ *		¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à(1)€Î¥Ø¥Ã¥À¥Õ¥¡¥€¥ë
+ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎÄêµÁ
+ */
+#include "target_test.h"
+
+/*
+ *  ³Æ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€ÎÄêµÁ
+ */
+
+#define MAIN_PRIORITY	5		/* ¥á¥€¥ó¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ */
+								/* HIGH_PRIORITY€è€ê¹â€¯€¹€ë€³€È */
+
+#define HIGH_PRIORITY	9		/* ÊÂ¹ÔŒÂ¹Ô€µ€ì€ë¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ */
+#define MID_PRIORITY	10
+#define LOW_PRIORITY	11
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È€Ë°ÍÂž€¹€ë²ÄÇœÀ­€Î€¢€ëÄê¿ô€ÎÄêµÁ
+ */
+
+#ifndef TASK_PORTID
+#define	TASK_PORTID		1			/* Êž»úÆþÎÏ€¹€ë¥·¥ê¥¢¥ë¥Ý¡Œ¥ÈID */
+#endif /* TASK_PORTID */
+
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯¥µ¥€¥º */
+#endif /* STACK_SIZE */
+
+#ifndef LOOP_REF
+#define LOOP_REF		ULONG_C(1000000)	/* Â®ÅÙ·×Â¬ÍÑ€Î¥ë¡Œ¥×²ó¿ô */
+#endif /* LOOP_REF */
+
+/*
+ *  ŽØ¿ô€Î¥×¥í¥È¥¿¥€¥×ÀëžÀ
+ */
+#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: /syssvc/banner.c
===================================================================
--- /syssvc/banner.c	(revision 7)
+++ /syssvc/banner.c	(revision 7)
@@ -0,0 +1,72 @@
+/*
+ *  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-2014 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$
+ */
+
+/*
+ *		¥«¡Œ¥Í¥ëµ¯Æ°¥á¥Ã¥»¡Œ¥ž€ÎœÐÎÏ
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include "target_syssvc.h"
+#include "banner.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-2014 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: /syssvc/banner.cfg
===================================================================
--- /syssvc/banner.cfg	(revision 7)
+++ /syssvc/banner.cfg	(revision 7)
@@ -0,0 +1,10 @@
+/*
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥«¡Œ¥Í¥ëµ¯Æ°¥á¥Ã¥»¡Œ¥ž€ÎœÐÎÏ€Î¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+ */
+
+#include "syssvc/banner.h"
+ATT_INI({ TA_NULL, 0, print_banner });
Index: /syssvc/banner.h
===================================================================
--- /syssvc/banner.h	(revision 7)
+++ /syssvc/banner.h	(revision 7)
@@ -0,0 +1,53 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥«¡Œ¥Í¥ëµ¯Æ°¥á¥Ã¥»¡Œ¥ž€ÎœÐÎÏ
+ */
+
+#ifndef TOPPERS_BANNER_H
+#define TOPPERS_BANNER_H
+
+/*
+ *  ¥«¡Œ¥Í¥ëµ¯Æ°¥á¥Ã¥»¡Œ¥ž€ÎœÐÎÏ
+ */
+extern void	print_banner(intptr_t exinf) throw();
+
+#endif /* TOPPERS_BANNER_H */
Index: /syssvc/logtask.c
===================================================================
--- /syssvc/logtask.c	(revision 7)
+++ /syssvc/logtask.c	(revision 7)
@@ -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-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$
+ */
+
+/*
+ *		¥·¥¹¥Æ¥à¥í¥°¥¿¥¹¥¯
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include <log_output.h>
+#include "syssvc/serial.h"
+#include "syssvc/syslog.h"
+#include "logtask.h"
+
+/*
+ *  ¥·¥¹¥Æ¥à¥í¥°¥¿¥¹¥¯€ÎœÐÎÏÀè€Î¥Ý¡Œ¥ÈID
+ */
+static ID	logtask_portid;
+
+/*
+ *  ¥·¥ê¥¢¥ë¥€¥ó¥¿¥Õ¥§¡Œ¥¹€Ø€Î1Êž»úœÐÎÏ
+ */
+static void
+logtask_putc(char c)
+{
+	(void) serial_wri_dat(logtask_portid, &c, 1);
+}
+
+/*
+ *  ¥·¥¹¥Æ¥à¥í¥°œÐÎÏ€ÎÂÔ€Á¹ç€ï€»
+ */
+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€ÎŸì¹ç€Ë€Ï¡€¥·¥ê¥¢¥ë¥Ð¥Ã¥Õ¥¡€¬¶õ€«€ò³Î
+					 *  Ç§€¹€ë¡¥
+					 */
+					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¥ß¥êÉÃÂÔ€Ä¡¥
+			 */
+			rercd = dly_tsk(LOGTASK_FLUSH_WAIT);
+			if (rercd < 0) {
+				ercd = (rercd == E_RLWAI) ? rercd : E_SYS;
+				goto error_exit;
+			}
+		}
+	}
+
+  error_exit:
+	return(ercd);
+}
+
+/*
+ *  ¥·¥¹¥Æ¥à¥í¥°¥¿¥¹¥¯€ÎËÜÂÎ
+ */
+void
+logtask_main(intptr_t exinf)
+{
+	SYSLOG	logbuf;
+	uint_t	lostlog;
+	ER_UINT	rercd;
+
+	logtask_portid = (ID) exinf;
+	(void) serial_opn_por(logtask_portid);
+	(void) 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 (;;) {
+		lostlog = 0U;
+		while ((rercd = syslog_rea_log(&logbuf)) >= 0) {
+			lostlog += (uint_t) rercd;
+			if (logbuf.logtype >= LOG_TYPE_COMMENT) {
+				if (lostlog > 0U) {
+					syslog_lostmsg(lostlog, logtask_putc);
+					lostlog = 0U;
+				}
+				syslog_print(&logbuf, logtask_putc);
+				logtask_putc('\n');
+			}
+		}
+		if (lostlog > 0U) {
+			syslog_lostmsg(lostlog, logtask_putc);
+		}
+		(void) dly_tsk(LOGTASK_INTERVAL);
+	}
+}
+
+/*
+ *  ¥·¥¹¥Æ¥à¥í¥°¥¿¥¹¥¯€ÎœªÎ»œèÍý
+ */
+void
+logtask_terminate(intptr_t exinf)
+{
+	char	c;
+	SYSLOG	logbuf;
+	bool_t	msgflg = false;
+	ER_UINT	rercd;
+
+	/*
+	 *  ¥·¥ê¥¢¥ë¥€¥ó¥¿¥Õ¥§¡Œ¥¹¥É¥é¥€¥Ð€ÎÁ÷¿®¥Ð¥Ã¥Õ¥¡€ËÃßÀÑ€µ€ì€¿¥Ç¡Œ¥¿
+	 *  €ò¡€Äã¥ì¥Ù¥ëœÐÎÏµ¡Çœ€òÍÑ€€€ÆœÐÎÏ€¹€ë¡¥
+	 */
+	while (serial_get_chr(logtask_portid, &c)) {
+		target_fput_log(c);
+	}
+
+	/*
+	 *  ¥í¥°¥Ð¥Ã¥Õ¥¡€Ëµ­Ï¿€µ€ì€¿¥í¥°ŸðÊó€ò¡€Äã¥ì¥Ù¥ëœÐÎÏµ¡Çœ€òÍÑ€€€ÆœÐ
+	 *  ÎÏ€¹€ë¡¥
+	 */
+	while ((rercd = syslog_rea_log(&logbuf)) >= 0) {
+		if (!msgflg) {
+			/*
+			 *  ¥í¥°¥Ð¥Ã¥Õ¥¡€Ë»Ä€Ã€¿¥í¥°ŸðÊó€Ç€¢€ë€³€È€òŒš€¹Êž»úÎó€òœÐ
+			 *  ÎÏ€¹€ë¡¥
+			 */
+			syslog_printf("-- buffered messages --\n", NULL, target_fput_log);
+			msgflg = true;
+		}
+		if (rercd > 0) {
+			syslog_lostmsg((uint_t) rercd, target_fput_log);
+		}
+		if (logbuf.logtype >= LOG_TYPE_COMMENT) {
+			syslog_print(&logbuf, target_fput_log);
+			target_fput_log('\n');
+		}
+	}
+}
Index: /syssvc/logtask.cfg
===================================================================
--- /syssvc/logtask.cfg	(revision 7)
+++ /syssvc/logtask.cfg	(revision 7)
@@ -0,0 +1,12 @@
+/*
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥·¥¹¥Æ¥à¥í¥°¥¿¥¹¥¯€Î¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+ */
+
+#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: /syssvc/logtask.h
===================================================================
--- /syssvc/logtask.h	(revision 7)
+++ /syssvc/logtask.h	(revision 7)
@@ -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-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$
+ */
+
+/*
+ *		¥·¥¹¥Æ¥à¥í¥°¥¿¥¹¥¯
+ */
+
+#ifndef TOPPERS_LOGTASK_H
+#define TOPPERS_LOGTASK_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "target_syssvc.h"
+
+/*
+ *  ¥·¥¹¥Æ¥à¥í¥°¥¿¥¹¥¯ŽØÏ¢€ÎÄê¿ô€Î¥Ç¥Õ¥©¥ë¥ÈÃÍ€ÎÄêµÁ
+ */ 
+#ifndef LOGTASK_PRIORITY
+#define LOGTASK_PRIORITY	3		/* œéŽüÍ¥ÀèÅÙ */
+#endif /* LOGTASK_PRIORITY */
+
+#ifndef LOGTASK_STACK_SIZE
+#define LOGTASK_STACK_SIZE	1024	/* ¥¹¥¿¥Ã¥¯ÎÎ°è€Î¥µ¥€¥º */
+#endif /* LOGTASK_STACK_SIZE */
+
+#ifndef LOGTASK_PORTID
+#define LOGTASK_PORTID		1		/* ¥·¥¹¥Æ¥à¥í¥°ÍÑ€Î¥·¥ê¥¢¥ë¥Ý¡Œ¥ÈÈÖ¹æ */
+#endif /* LOGTASK_PORTID */
+
+#ifndef LOGTASK_INTERVAL
+#define LOGTASK_INTERVAL	10U		/* ¥·¥¹¥Æ¥à¥í¥°¥¿¥¹¥¯€ÎÆ°ºîŽÖ³Ö¡Ê¥ß¥êÉÃ¡Ë*/
+#endif /* LOGTASK_INTERVAL */
+
+#ifndef LOGTASK_FLUSH_WAIT
+#define LOGTASK_FLUSH_WAIT	1U		/* ¥Õ¥é¥Ã¥·¥åÂÔ€Á€ÎÃ±°Ì»þŽÖ¡Ê¥ß¥êÉÃ¡Ë*/
+#endif /* LOGTASK_FLUSH_WAIT */
+
+/*
+ *  ¥·¥¹¥Æ¥à¥í¥°œÐÎÏ€ÎÂÔ€Á¹ç€ï€»
+ *
+ *  ¥í¥°¥Ð¥Ã¥Õ¥¡Ãæ€Î¥í¥°€Î¿ô€¬count°Ê²Œ€Ë€Ê€ë€Þ€ÇÂÔ€Ä¡¥count€¬0€ÎŸì¹ç€Ë
+ *  €Ï¡€¥·¥ê¥¢¥ë¥Ð¥Ã¥Õ¥¡€¬¶õ€Ë€Ê€ë€Î€âÂÔ€Ä¡¥
+ */
+extern ER	logtask_flush(uint_t count) throw();
+
+/*
+ *  ¥·¥¹¥Æ¥à¥í¥°¥¿¥¹¥¯€ÎËÜÂÎ
+ */
+extern void	logtask_main(intptr_t exinf) throw();
+
+/*
+ *  ¥·¥¹¥Æ¥à¥í¥°¥¿¥¹¥¯€ÎœªÎ»œèÍý
+ */
+extern void	logtask_terminate(intptr_t exinf) throw();
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* TOPPERS_LOGTASK_H */
Index: /syssvc/serial.c
===================================================================
--- /syssvc/serial.c	(revision 7)
+++ /syssvc/serial.c	(revision 7)
@@ -0,0 +1,786 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2006-2013 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥·¥ê¥¢¥ë¥€¥ó¥¿¥Õ¥§¡Œ¥¹¥É¥é¥€¥Ð
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include "target_syssvc.h"
+#include "target_serial.h"
+#include "serial.h"
+#include "kernel_cfg.h"
+
+/*
+ *  ¥Ð¥Ã¥Õ¥¡¥µ¥€¥º€Î¥Ç¥Õ¥©¥ë¥ÈÃÍ€È¥Ð¥Ã¥Õ¥¡€ÎÄêµÁ
+ */
+#ifndef SERIAL_RCV_BUFSZ1
+#define	SERIAL_RCV_BUFSZ1	256			/* ¥Ý¡Œ¥È1€ÎŒõ¿®¥Ð¥Ã¥Õ¥¡¥µ¥€¥º */
+#endif /* SERIAL_RCV_BUFSZ1 */
+
+#ifndef SERIAL_SND_BUFSZ1
+#define	SERIAL_SND_BUFSZ1	256			/* ¥Ý¡Œ¥È1€ÎÁ÷¿®¥Ð¥Ã¥Õ¥¡¥µ¥€¥º */
+#endif /* SERIAL_SND_BUFSZ1 */
+
+static char	rcv_buffer1[SERIAL_RCV_BUFSZ1];
+static char	snd_buffer1[SERIAL_SND_BUFSZ1];
+
+#if TNUM_PORT >= 2						/* ¥Ý¡Œ¥È2€ËŽØ€¹€ëÄêµÁ */
+
+#ifndef SERIAL_RCV_BUFSZ2
+#define	SERIAL_RCV_BUFSZ2	256			/* ¥Ý¡Œ¥È2€ÎŒõ¿®¥Ð¥Ã¥Õ¥¡¥µ¥€¥º */
+#endif /* SERIAL_RCV_BUFSZ2 */
+
+#ifndef SERIAL_SND_BUFSZ2
+#define	SERIAL_SND_BUFSZ2	256			/* ¥Ý¡Œ¥È2€ÎÁ÷¿®¥Ð¥Ã¥Õ¥¡¥µ¥€¥º */
+#endif /* SERIAL_SND_BUFSZ2 */
+
+static char	rcv_buffer2[SERIAL_RCV_BUFSZ2];
+static char	snd_buffer2[SERIAL_SND_BUFSZ2];
+
+#endif /* TNUM_PORT >= 2 */
+
+#if TNUM_PORT >= 3						/* ¥Ý¡Œ¥È3€ËŽØ€¹€ëÄêµÁ */
+
+#ifndef SERIAL_RCV_BUFSZ3
+#define	SERIAL_RCV_BUFSZ3	256			/* ¥Ý¡Œ¥È3€ÎŒõ¿®¥Ð¥Ã¥Õ¥¡¥µ¥€¥º */
+#endif /* SERIAL_RCV_BUFSZ3 */
+
+#ifndef SERIAL_SND_BUFSZ3
+#define	SERIAL_SND_BUFSZ3	256			/* ¥Ý¡Œ¥È3€ÎÁ÷¿®¥Ð¥Ã¥Õ¥¡¥µ¥€¥º */
+#endif /* SERIAL_SND_BUFSZ3 */
+
+static char	rcv_buffer3[SERIAL_RCV_BUFSZ3];
+static char	snd_buffer3[SERIAL_SND_BUFSZ3];
+
+#endif /* TNUM_PORT >= 3 */
+
+#if TNUM_PORT >= 4						/* ¥Ý¡Œ¥È4€ËŽØ€¹€ëÄêµÁ */
+
+#ifndef SERIAL_RCV_BUFSZ4
+#define	SERIAL_RCV_BUFSZ4	256			/* ¥Ý¡Œ¥È4€ÎŒõ¿®¥Ð¥Ã¥Õ¥¡¥µ¥€¥º */
+#endif /* SERIAL_RCV_BUFSZ4 */
+
+#ifndef SERIAL_SND_BUFSZ4
+#define	SERIAL_SND_BUFSZ4	256			/* ¥Ý¡Œ¥È4€ÎÁ÷¿®¥Ð¥Ã¥Õ¥¡¥µ¥€¥º */
+#endif /* SERIAL_SND_BUFSZ4 */
+
+static char	rcv_buffer4[SERIAL_RCV_BUFSZ4];
+static char	snd_buffer4[SERIAL_SND_BUFSZ4];
+
+#endif /* TNUM_PORT >= 4 */
+
+#if TNUM_PORT >= 5
+#error Serial interface driver supports up to 4 ports.
+#endif /* TNUM_PORT >= 5 */
+
+/*
+ *  ¥Õ¥í¡ŒÀ©žæ€ËŽØÏ¢€¹€ëÄê¿ô€È¥Þ¥¯¥í
+ */
+#define	FC_STOP			'\023'		/* ¥³¥ó¥È¥í¡Œ¥ë-S */
+#define	FC_START		'\021'		/* ¥³¥ó¥È¥í¡Œ¥ë-Q */
+
+#define BUFCNT_STOP(bufsz)		((bufsz) * 3 / 4)	/* STOP€òÁ÷€ëŽðœàÊž»ú¿ô */
+#define BUFCNT_START(bufsz)		((bufsz) / 2)		/* START€òÁ÷€ëŽðœàÊž»ú¿ô */
+
+/*
+ *  ¥·¥ê¥¢¥ë¥Ý¡Œ¥ÈœéŽü²œ¥Ö¥í¥Ã¥¯
+ */
+typedef struct serial_port_initialization_block {
+	ID		rcv_semid;		/* Œõ¿®¥Ð¥Ã¥Õ¥¡ŽÉÍýÍÑ¥»¥Þ¥Õ¥©€ÎID */
+	ID		snd_semid;		/* Á÷¿®¥Ð¥Ã¥Õ¥¡ŽÉÍýÍÑ¥»¥Þ¥Õ¥©€ÎID */
+	uint_t	rcv_bufsz;		/* Œõ¿®¥Ð¥Ã¥Õ¥¡¥µ¥€¥º */
+	char	*rcv_buffer;	/* Œõ¿®¥Ð¥Ã¥Õ¥¡ */
+	uint_t	snd_bufsz;		/* Á÷¿®¥Ð¥Ã¥Õ¥¡¥µ¥€¥º */
+	char	*snd_buffer;	/* Á÷¿®¥Ð¥Ã¥Õ¥¡ */
+} 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 */
+};
+
+/*
+ *  ¥·¥ê¥¢¥ë¥Ý¡Œ¥ÈŽÉÍý¥Ö¥í¥Ã¥¯
+ */
+typedef struct serial_port_control_block {
+	const SPINIB *p_spinib;		/* ¥·¥ê¥¢¥ë¥Ý¡Œ¥ÈœéŽü²œ¥Ö¥í¥Ã¥¯ */
+	SIOPCB	*p_siopcb;			/* ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥ÈŽÉÍý¥Ö¥í¥Ã¥¯ */
+	bool_t	openflag;			/* ¥ª¡Œ¥×¥óºÑ€ß¥Õ¥é¥° */
+	bool_t	errorflag;			/* ¥š¥é¡Œ¥Õ¥é¥° */
+	uint_t	ioctl;				/* Æ°ºîÀ©žæ€ÎÀßÄêÃÍ */
+
+	uint_t	rcv_read_ptr;		/* Œõ¿®¥Ð¥Ã¥Õ¥¡ÆÉœÐ€·¥Ý¥€¥ó¥¿ */
+	uint_t	rcv_write_ptr;		/* Œõ¿®¥Ð¥Ã¥Õ¥¡œñ¹þ€ß¥Ý¥€¥ó¥¿ */
+	uint_t	rcv_count;			/* Œõ¿®¥Ð¥Ã¥Õ¥¡Ãæ€ÎÊž»ú¿ô */
+	char	rcv_fc_chr;			/* Á÷€ë€Ù€­START/STOP */
+	bool_t	rcv_stopped;		/* STOP€òÁ÷€Ã€¿ŸõÂÖ€«¡© */
+
+	uint_t	snd_read_ptr;		/* Á÷¿®¥Ð¥Ã¥Õ¥¡ÆÉœÐ€·¥Ý¥€¥ó¥¿ */
+	uint_t	snd_write_ptr;		/* Á÷¿®¥Ð¥Ã¥Õ¥¡œñ¹þ€ß¥Ý¥€¥ó¥¿ */
+	uint_t	snd_count;			/* Á÷¿®¥Ð¥Ã¥Õ¥¡Ãæ€ÎÊž»ú¿ô */
+	bool_t	snd_stopped;		/* STOP€òŒõ€±Œè€Ã€¿ŸõÂÖ€«¡© */
+} SPCB;
+
+static SPCB	spcb_table[TNUM_PORT];
+
+/*
+ *  ¥·¥ê¥¢¥ë¥Ý¡Œ¥ÈID€«€é¥·¥ê¥¢¥ë¥Ý¡Œ¥ÈŽÉÍý¥Ö¥í¥Ã¥¯€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#define INDEX_PORT(portid)	((uint_t)((portid) - 1))
+#define get_spcb(portid)	(&(spcb_table[INDEX_PORT(portid)]))
+
+/*
+ *  ¥Ý¥€¥ó¥¿€Î¥€¥ó¥¯¥ê¥á¥ó¥È
+ */
+#define INC_PTR(ptr, bufsz) do {	\
+	if (++(ptr) == (bufsz)) {		\
+		(ptr) = 0;					\
+	 }								\
+} while (false)
+
+/*
+ *  ¥µ¡Œ¥Ó¥¹¥³¡Œ¥ëžÆœÐ€·¥Þ¥¯¥í
+ *
+ *  ¥µ¡Œ¥Ó¥¹¥³¡Œ¥ëžÆœÐ€·€òŽÞ€àŒ°exp€òÉŸ²Á€·¡€ÊÖÃÍ€¬¥š¥é¡Œ¡ÊÉé€ÎÃÍ¡Ë€ÎŸì
+ *  ¹ç€Ë€Ï¡€erc€Ëercd_exp€òÉŸ²Á€·€¿ÃÍ€òÂåÆþ€·¡€error_exit€Ëgoto€¹€ë¡¥
+ */
+#define SVC(exp, ercd_exp) do {		\
+	if ((exp) < 0) {				\
+		ercd = (ercd_exp);			\
+		goto error_exit;			\
+	}								\
+} while (false)
+
+/*
+ *  E_SYS¥š¥é¡Œ€ÎÀžÀ®
+ */
+static ER
+gen_ercd_sys(SPCB *p_spcb)
+{
+	p_spcb->errorflag = true;
+	return(E_SYS);
+}
+
+/*
+ *  ÂÔ€Á€ËÆþ€ë¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€«€é€Î¥š¥é¡Œ€ÎÊÑŽ¹
+ */
+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);
+	}
+}
+
+/*
+ *  ¥·¥ê¥¢¥ë¥€¥ó¥¿¥Õ¥§¡Œ¥¹¥É¥é¥€¥Ð€ÎœéŽü²œ¥ë¡Œ¥Á¥ó
+ */
+void
+serial_initialize(intptr_t exinf)
+{
+	uint_t	i;
+	SPCB	*p_spcb;
+
+	for (i = 0; i < TNUM_PORT; i++) {
+		p_spcb = &(spcb_table[i]);
+		p_spcb->p_spinib = &(spinib_table[i]);
+		p_spcb->openflag = false;
+	}
+}
+
+/*
+ *  ¥·¥ê¥¢¥ë¥Ý¡Œ¥È€Î¥ª¡Œ¥×¥ó¡Ê¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë¡Ë
+ */
+ER
+serial_opn_por(ID portid)
+{
+	SPCB	*p_spcb;
+	ER		ercd;
+
+	if (sns_dpn()) {				/* ¥³¥ó¥Æ¥­¥¹¥È€Î¥Á¥§¥Ã¥¯ */
+		return(E_CTX);
+	}
+	if (!(1 <= portid && portid <= TNUM_PORT)) {
+		return(E_ID);				/* ¥Ý¡Œ¥ÈÈÖ¹æ€Î¥Á¥§¥Ã¥¯ */
+	}
+	p_spcb = get_spcb(portid);
+
+	SVC(dis_dsp(), gen_ercd_sys(p_spcb));
+	if (p_spcb->openflag) {			/* ¥ª¡Œ¥×¥óºÑ€ß€«€Î¥Á¥§¥Ã¥¯ */
+		ercd = E_OBJ;
+	}
+	else {
+		/*
+		 *  ÊÑ¿ô€ÎœéŽü²œ
+		 */
+		p_spcb->ioctl = (IOCTL_ECHO | IOCTL_CRLF | IOCTL_FCSND | IOCTL_FCRCV);
+
+		p_spcb->rcv_read_ptr = 0U;
+		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 = 0U;
+		p_spcb->snd_write_ptr = 0U;
+		p_spcb->snd_count = 0U;
+		p_spcb->snd_stopped = false;
+
+		/*
+		 *  €³€ì°Ê¹ß¡€³ä¹þ€ß€ò¶Ø»ß€¹€ë¡¥
+		 */
+		if (loc_cpu() < 0) {
+			ercd = E_SYS;
+			goto error_exit_enadsp;
+		}
+
+		/*
+		 *  ¥Ï¡Œ¥É¥Š¥§¥¢°ÍÂž€Î¥ª¡Œ¥×¥óœèÍý
+		 */
+		p_spcb->p_siopcb = sio_opn_por(portid, (intptr_t) p_spcb);
+
+		/*
+		 *  Œõ¿®ÄÌÃÎ¥³¡Œ¥ë¥Ð¥Ã¥¯€òµö²Ä€¹€ë¡¥
+		 */
+		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);
+}
+
+/*
+ *  ¥·¥ê¥¢¥ë¥Ý¡Œ¥È€Î¥¯¥í¡Œ¥º¡Ê¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë¡Ë
+ */
+ER
+serial_cls_por(ID portid)
+{
+	SPCB	*p_spcb;
+	ER		ercd;
+	bool_t	eflag = false;
+
+	if (sns_dpn()) {				/* ¥³¥ó¥Æ¥­¥¹¥È€Î¥Á¥§¥Ã¥¯ */
+		return(E_CTX);
+	}
+	if (!(1 <= portid && portid <= TNUM_PORT)) {
+		return(E_ID);				/* ¥Ý¡Œ¥ÈÈÖ¹æ€Î¥Á¥§¥Ã¥¯ */
+	}
+	p_spcb = get_spcb(portid);
+
+	SVC(dis_dsp(), gen_ercd_sys(p_spcb));
+	if (!(p_spcb->openflag)) {		/* ¥ª¡Œ¥×¥óºÑ€ß€«€Î¥Á¥§¥Ã¥¯ */
+		ercd = E_OBJ;
+	}
+	else {
+		/*
+		 *  ¥Ï¡Œ¥É¥Š¥§¥¢°ÍÂž€Î¥¯¥í¡Œ¥ºœèÍý
+		 */
+		if (loc_cpu() < 0) {
+			eflag = true;
+		}
+		sio_cls_por(p_spcb->p_siopcb);
+		p_spcb->openflag = false;
+		if (unl_cpu() < 0) {
+			eflag = true;
+		}
+
+		/*
+		 *  ¥»¥Þ¥Õ¥©€ÎœéŽü²œ
+		 */
+		if (ini_sem(p_spcb->p_spinib->snd_semid) < 0) {
+			eflag = true;
+		}
+		if (ini_sem(p_spcb->p_spinib->rcv_semid) < 0) {
+			eflag = true;
+		}
+
+		/*
+		 *  ¥š¥é¡Œ¥³¡Œ¥É€ÎÀßÄê
+		 */
+		if (eflag) {
+			ercd = gen_ercd_sys(p_spcb);
+		}
+		else {
+			ercd = E_OK;
+		}
+	}
+	SVC(ena_dsp(), gen_ercd_sys(p_spcb));
+
+  error_exit:
+	return(ercd);
+}
+
+/*
+ *  ¥·¥ê¥¢¥ë¥Ý¡Œ¥È€Ø€ÎÊž»úÁ÷¿®
+ *
+ *  p_spcb€Ç»ØÄê€µ€ì€ë¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€ËÂÐ€·€Æ¡€Êž»úc€òÁ÷¿®€¹€ë¡¥Êž»ú
+ *  €òÁ÷¿®¥ì¥ž¥¹¥¿€Ë€€€ì€¿Ÿì¹ç€Ë€Ïtrue€òÊÖ€¹¡¥€œ€Š€Ç€Ê€€Ÿì¹ç€Ë€Ï¡€Á÷¿®
+ *  ¥ì¥ž¥¹¥¿€¬¶õ€€€¿€³€È€òÄÌÃÎ€¹€ë¥³¡Œ¥ë¥Ð¥Ã¥¯ŽØ¿ô€òµö²Ä€·¡€false€òÊÖ€¹¡¥
+ *  €³€ÎŽØ¿ô€Ï¡€CPU¥í¥Ã¥¯ŸõÂÖ€ÇžÆ€ÓœÐ€µ€ì€ë¡¥
+ */
+Inline bool_t
+serial_snd_chr(SPCB *p_spcb, char 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);
+	}
+}
+
+/*
+ *  ¥·¥ê¥¢¥ë¥Ý¡Œ¥È€Ø€Î1Êž»úÁ÷¿®
+ */
+static ER_BOOL
+serial_wri_chr(SPCB *p_spcb, char c)
+{
+	bool_t	buffer_full;
+	ER		ercd, rercd;
+
+	/*
+	 *  LF€ÎÁ°€ËCR€òÁ÷¿®€¹€ë¡¥
+	 */
+	if (c == '\n' && (p_spcb->ioctl & IOCTL_CRLF) != 0U) {
+		/*
+		 *  °Ê²Œ€Î¥³¡Œ¥É€ÏºÆµ¢žÆœÐ€·€Ë€Ê€Ã€Æ€€€ë€¬¡€°ú¿ôc€¬'\n'€ÎŸì¹ç€Ë
+		 *  °ú¿ôc€ò'\r'€È€·€ÆžÆ€ÓœÐ€¹€³€È€«€é¡€€³€ÎºÆµ¢žÆœÐ€·€Ï2²óÌÜ€Î
+		 *  žÆ€ÓœÐ€·€ÇÉ¬€º»ß€Þ€ë¡¥
+		 */
+		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)) {
+		/*
+		 *  ¥·¥ê¥¢¥ëI/O¥Ç¥Ð¥€¥¹€ÎÁ÷¿®¥ì¥ž¥¹¥¿€ËÊž»ú€òÆþ€ì€ë€³€È€ËÀ®žù€·
+		 *  €¿Ÿì¹ç¡¥
+		 */
+		buffer_full = false;
+	}
+	else {
+		/*
+		 *  Á÷¿®¥Ð¥Ã¥Õ¥¡€ËÊž»ú€òÆþ€ì€ë¡¥
+		 */
+		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);
+}
+
+/*
+ *  ¥·¥ê¥¢¥ë¥Ý¡Œ¥È€Ø€ÎÊž»úÎóÁ÷¿®¡Ê¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë¡Ë
+ */
+ER_UINT
+serial_wri_dat(ID portid, const char *buf, uint_t len)
+{
+	SPCB	*p_spcb;
+	bool_t	buffer_full;
+	uint_t	wricnt = 0U;
+	ER		ercd, rercd;
+
+	if (sns_dpn()) {				/* ¥³¥ó¥Æ¥­¥¹¥È€Î¥Á¥§¥Ã¥¯ */
+		return(E_CTX);
+	}
+	if (!(1 <= portid && portid <= TNUM_PORT)) {
+		return(E_ID);				/* ¥Ý¡Œ¥ÈÈÖ¹æ€Î¥Á¥§¥Ã¥¯ */
+	}
+
+	p_spcb = get_spcb(portid);
+	if (!(p_spcb->openflag)) {		/* ¥ª¡Œ¥×¥óºÑ€ß€«€Î¥Á¥§¥Ã¥¯ */
+		return(E_OBJ);
+	}
+	if (p_spcb->errorflag) {		/* ¥š¥é¡ŒŸõÂÖ€«€Î¥Á¥§¥Ã¥¯ */
+		return(E_SYS);
+	}
+
+	buffer_full = true;				/* ¥ë¡Œ¥×€Î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);
+}
+
+/*
+ *  ¥·¥ê¥¢¥ë¥Ý¡Œ¥È€«€é€Î1Êž»úŒõ¿®
+ */
+static bool_t
+serial_rea_chr(SPCB *p_spcb, char *p_c)
+{
+	bool_t	buffer_empty;
+	ER		ercd;
+
+	SVC(loc_cpu(), gen_ercd_sys(p_spcb));
+
+	/*
+	 *  Œõ¿®¥Ð¥Ã¥Õ¥¡€«€éÊž»ú€òŒè€êœÐ€¹¡¥
+	 */
+	*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€òÁ÷¿®€¹€ë¡¥
+	 */
+	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);
+}
+
+/*
+ *  ¥·¥ê¥¢¥ë¥Ý¡Œ¥È€«€é€ÎÊž»úÎóŒõ¿®¡Ê¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë¡Ë
+ */
+ER_UINT
+serial_rea_dat(ID portid, char *buf, uint_t len)
+{
+	SPCB	*p_spcb;
+	bool_t	buffer_empty;
+	uint_t	reacnt = 0U;
+	char	c = '\0';		/* ¥³¥ó¥Ñ¥€¥é€Î·Ù¹ð€òÍÞ»ß€¹€ë€¿€á€ËœéŽü²œ€¹€ë */
+	ER		ercd, rercd;
+
+	if (sns_dpn()) {				/* ¥³¥ó¥Æ¥­¥¹¥È€Î¥Á¥§¥Ã¥¯ */
+		return(E_CTX);
+	}
+	if (!(1 <= portid && portid <= TNUM_PORT)) {
+		return(E_ID);				/* ¥Ý¡Œ¥ÈÈÖ¹æ€Î¥Á¥§¥Ã¥¯ */
+	}
+
+	p_spcb = get_spcb(portid);
+	if (!(p_spcb->openflag)) {		/* ¥ª¡Œ¥×¥óºÑ€ß€«€Î¥Á¥§¥Ã¥¯ */
+		return(E_OBJ);
+	}
+	if (p_spcb->errorflag) {		/* ¥š¥é¡ŒŸõÂÖ€«€Î¥Á¥§¥Ã¥¯ */
+		return(E_SYS);
+	}
+
+	buffer_empty = true;			/* ¥ë¡Œ¥×€Î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;
+
+		/*
+		 *  ¥š¥³¡Œ¥Ð¥Ã¥¯œèÍý¡¥
+		 */
+		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);
+}
+
+/*
+ *  ¥·¥ê¥¢¥ë¥Ý¡Œ¥È€ÎÀ©žæ¡Ê¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë¡Ë
+ */
+ER
+serial_ctl_por(ID portid, uint_t ioctl)
+{
+	SPCB	*p_spcb;
+
+	if (sns_dpn()) {				/* ¥³¥ó¥Æ¥­¥¹¥È€Î¥Á¥§¥Ã¥¯ */
+		return(E_CTX);
+	}
+	if (!(1 <= portid && portid <= TNUM_PORT)) {
+		return(E_ID);				/* ¥Ý¡Œ¥ÈÈÖ¹æ€Î¥Á¥§¥Ã¥¯ */
+	}
+
+	p_spcb = get_spcb(portid);
+	if (!(p_spcb->openflag)) {		/* ¥ª¡Œ¥×¥óºÑ€ß€«€Î¥Á¥§¥Ã¥¯ */
+		return(E_OBJ);
+	}
+	if (p_spcb->errorflag) {		/* ¥š¥é¡ŒŸõÂÖ€«€Î¥Á¥§¥Ã¥¯ */
+		return(E_SYS);
+	}
+
+	p_spcb->ioctl = ioctl;
+	return(E_OK);
+}
+
+/*
+ *  ¥·¥ê¥¢¥ë¥Ý¡Œ¥ÈŸõÂÖ€Î»²ŸÈ¡Ê¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë¡Ë
+ */
+ER
+serial_ref_por(ID portid, T_SERIAL_RPOR *pk_rpor)
+{
+	SPCB	*p_spcb;
+
+	if (sns_dpn()) {				/* ¥³¥ó¥Æ¥­¥¹¥È€Î¥Á¥§¥Ã¥¯ */
+		return(E_CTX);
+	}
+	if (!(1 <= portid && portid <= TNUM_PORT)) {
+		return(E_ID);				/* ¥Ý¡Œ¥ÈÈÖ¹æ€Î¥Á¥§¥Ã¥¯ */
+	}
+
+	p_spcb = get_spcb(portid);
+	if (!(p_spcb->openflag)) {		/* ¥ª¡Œ¥×¥óºÑ€ß€«€Î¥Á¥§¥Ã¥¯ */
+		return(E_OBJ);
+	}
+	if (p_spcb->errorflag) {		/* ¥š¥é¡ŒŸõÂÖ€«€Î¥Á¥§¥Ã¥¯ */
+		return(E_SYS);
+	}
+
+	pk_rpor->reacnt = p_spcb->rcv_count;
+	pk_rpor->wricnt = p_spcb->snd_count;
+	return(E_OK);
+}
+
+/*
+ *  ¥·¥ê¥¢¥ë¥Ý¡Œ¥È€«€é€ÎÁ÷¿®²ÄÇœ¥³¡Œ¥ë¥Ð¥Ã¥¯
+ */
+void
+sio_irdy_snd(intptr_t exinf)
+{
+	SPCB	*p_spcb;
+
+	p_spcb = (SPCB *) exinf;
+	if (p_spcb->rcv_fc_chr != '\0') {
+		/*
+		 *  START/STOP €òÁ÷¿®€¹€ë¡¥
+		 */
+		(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) {
+		/*
+		 *  Á÷¿®¥Ð¥Ã¥Õ¥¡Ãæ€«€éÊž»ú€òŒè€êœÐ€·€ÆÁ÷¿®€¹€ë¡¥
+		 */
+		(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 {
+		/*
+		 *  Á÷¿®€¹€Ù€­Êž»ú€¬€Ê€€Ÿì¹ç€Ï¡€Á÷¿®²ÄÇœ¥³¡Œ¥ë¥Ð¥Ã¥¯€ò¶Ø»ß€¹€ë¡¥
+		 */
+		sio_dis_cbr(p_spcb->p_siopcb, SIO_RDY_SND);
+	}
+}
+
+/*
+ *  ¥·¥ê¥¢¥ë¥Ý¡Œ¥È€«€é€ÎŒõ¿®ÄÌÃÎ¥³¡Œ¥ë¥Ð¥Ã¥¯
+ */
+void
+sio_irdy_rcv(intptr_t exinf)
+{
+	SPCB	*p_spcb;
+	char	c;
+
+	p_spcb = (SPCB *) exinf;
+	c = (char) sio_rcv_chr(p_spcb->p_siopcb);
+	if ((p_spcb->ioctl & IOCTL_FCSND) != 0U && c == FC_STOP) {
+		/*
+		 *  Á÷¿®€ò°ì»þÄä»ß€¹€ë¡¥Á÷¿®Ãæ€ÎÊž»ú€Ï€œ€Î€Þ€ÞÁ÷¿®€¹€ë¡¥
+		 */
+		p_spcb->snd_stopped = true;
+	}
+	else if (p_spcb->snd_stopped && (c == FC_START
+				|| (p_spcb->ioctl & IOCTL_FCANY) != 0U)) {
+		/*
+		 *  Á÷¿®€òºÆ³«€¹€ë¡¥
+		 */
+		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) {
+		/*
+		 *  Á÷¿®€ËÂÐ€·€Æ¥Õ¥í¡ŒÀ©žæ€·€Æ€€€ëŸì¹ç¡€START €ÏŒÎ€Æ€ë¡¥
+		 */
+	}
+	else if (p_spcb->rcv_count == p_spcb->p_spinib->rcv_bufsz) {
+		/*
+		 *  ¥Ð¥Ã¥Õ¥¡¥Õ¥ë€ÎŸì¹ç¡€Œõ¿®€·€¿Êž»ú€òŒÎ€Æ€ë¡¥
+		 */
+	}
+	else {
+		/*
+		 *  Œõ¿®€·€¿Êž»ú€òŒõ¿®¥Ð¥Ã¥Õ¥¡€ËÆþ€ì€ë¡¥
+		 */
+		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€òÁ÷¿®€¹€ë¡¥
+		 */
+		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;
+		}
+	}
+}
+
+/*
+ *  ¥·¥ê¥¢¥ë¥€¥ó¥¿¥Õ¥§¡Œ¥¹¥É¥é¥€¥Ð€«€é€ÎÌ€Á÷¿®Êž»ú€ÎŒèœÐ€·
+ */
+bool_t
+serial_get_chr(ID portid, char *p_c)
+{
+	SPCB	*p_spcb;
+
+	if (1 <= portid && portid <= TNUM_PORT) {	/* ¥Ý¡Œ¥ÈÈÖ¹æ€Î¥Á¥§¥Ã¥¯ */
+		p_spcb = get_spcb(portid);
+		if (p_spcb->openflag) {					/* ¥ª¡Œ¥×¥óºÑ€ß€«€Î¥Á¥§¥Ã¥¯ */
+			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: /syssvc/serial.cfg
===================================================================
--- /syssvc/serial.cfg	(revision 7)
+++ /syssvc/serial.cfg	(revision 7)
@@ -0,0 +1,28 @@
+/*
+ *  @(#) $Id$
+ */
+
+/*
+ *  ¥·¥ê¥¢¥ë¥€¥ó¥¿¥Õ¥§¡Œ¥¹¥É¥é¥€¥Ð€Î¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+ */
+
+#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: /syssvc/serial.h
===================================================================
--- /syssvc/serial.h	(revision 7)
+++ /syssvc/serial.h	(revision 7)
@@ -0,0 +1,98 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥·¥ê¥¢¥ë¥€¥ó¥¿¥Õ¥§¡Œ¥¹¥É¥é¥€¥Ð
+ */
+
+#ifndef TOPPERS_SERIAL_H
+#define TOPPERS_SERIAL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *  ¥·¥ê¥¢¥ë¥€¥ó¥¿¥Õ¥§¡Œ¥¹¥É¥é¥€¥Ð€ÎÍÑ€€€ë¥Ñ¥±¥Ã¥È
+ */
+typedef struct {
+	uint_t		reacnt;			/* Œõ¿®¥Ð¥Ã¥Õ¥¡Ãæ€ÎÊž»ú¿ô */
+	uint_t		wricnt;			/* Á÷¿®¥Ð¥Ã¥Õ¥¡Ãæ€ÎÊž»ú¿ô */
+} T_SERIAL_RPOR;
+
+/*
+ *  ¥·¥ê¥¢¥ë¥€¥ó¥¿¥Õ¥§¡Œ¥¹¥É¥é¥€¥Ð€ÎœéŽü²œ¥ë¡Œ¥Á¥ó
+ */
+extern void		serial_initialize(intptr_t exinf) throw();
+
+/*
+ *  ¥·¥ê¥¢¥ë¥€¥ó¥¿¥Õ¥§¡Œ¥¹¥É¥é¥€¥Ð€«€é€ÎÌ€Á÷¿®Êž»ú€ÎŒèœÐ€·
+ */
+extern bool_t	serial_get_chr(ID portid, char *p_c) throw();
+
+/*
+ *  ¥·¥ê¥¢¥ë¥€¥ó¥¿¥Õ¥§¡Œ¥¹¥É¥é¥€¥Ð€Î¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë
+ */
+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 *buf, uint_t len) throw();
+extern ER_UINT	serial_wri_dat(ID portid, const char *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();
+
+/*
+ *  ¥·¥ê¥¢¥ë¥€¥ó¥¿¥Õ¥§¡Œ¥¹¥É¥é¥€¥Ð€ÎÆ°ºîÀ©žæÍÑ€Î€¿€á€ÎÄê¿ô
+ *
+ *  °Ê²Œ€ÎÄê¿ô€Ï¡€¥Ó¥Ã¥ÈËè€ËÏÀÍýÏÂ€ò€È€Ã€ÆÍÑ€€€ë¡¥
+ */
+#define	IOCTL_NULL	0U			/* »ØÄê€Ê€· */
+#define	IOCTL_ECHO	0x0001U		/* Œõ¿®€·€¿Êž»ú€ò¥š¥³¡Œ¥Ð¥Ã¥¯ */
+#define	IOCTL_CRLF	0x0010U		/* LF€òÁ÷¿®€¹€ëÁ°€ËCR€òÉÕ²Ã */
+#define	IOCTL_FCSND	0x0100U		/* Á÷¿®€ËÂÐ€·€Æ¥Õ¥í¡ŒÀ©žæ€ò¹Ô€Š */
+#define	IOCTL_FCANY	0x0200U		/* €É€Î€è€Š€ÊÊž»ú€Ç€âÁ÷¿®ºÆ³« */
+#define	IOCTL_FCRCV	0x0400U		/* Œõ¿®€ËÂÐ€·€Æ¥Õ¥í¡ŒÀ©žæ€ò¹Ô€Š */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* TOPPERS_SERIAL_H */
Index: /syssvc/syslog.c
===================================================================
--- /syssvc/syslog.c	(revision 7)
+++ /syssvc/syslog.c	(revision 7)
@@ -0,0 +1,243 @@
+/*
+ *  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-2015 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$
+ */
+
+/*
+ *		¥·¥¹¥Æ¥à¥í¥°µ¡Çœ
+ */
+
+#include <sil.h>
+#undef TOPPERS_OMIT_SYSLOG
+#include <t_syslog.h>
+#include <log_output.h>
+#include "target_syssvc.h"
+#include "syslog.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#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(ercd, pk_rlog)
+#endif /* LOG_SYSLOG_REF_LOG_LEAVE */
+
+/*
+ *  žœºß€Î¥·¥¹¥Æ¥à»þ¹ï
+ *
+ *  ¥í¥°»þ¹ï€òŒè€êœÐ€¹€¿€á€Ë¡€€ä€à€Ê€¯¡€¥«¡Œ¥Í¥ë€ÎÆâÉôÊÑ¿ô€ò»²ŸÈ€·€Æ€€
+ *  €ë¡¥
+ */
+extern ulong_t	_kernel_current_time;
+
+/*
+ *  ¥í¥°¥Ð¥Ã¥Õ¥¡€È€œ€ì€Ë¥¢¥¯¥»¥¹€¹€ë€¿€á€Î¥Ý¥€¥ó¥¿
+ */
+static SYSLOG	syslog_buffer[TCNT_SYSLOG_BUFFER];	/* ¥í¥°¥Ð¥Ã¥Õ¥¡ */
+static uint_t	syslog_count;			/* ¥í¥°¥Ð¥Ã¥Õ¥¡Ãæ€Î¥í¥°€Î¿ô */
+static uint_t	syslog_head;			/* ÀèÆ¬€Î¥í¥°€Î³ÊÇŒ°ÌÃÖ */
+static uint_t	syslog_tail;			/* Œ¡€Î¥í¥°€Î³ÊÇŒ°ÌÃÖ */
+static uint_t	syslog_lost;			/* Œº€ï€ì€¿¥í¥°€Î¿ô */
+
+/*
+ *  œÐÎÏ€¹€Ù€­¥í¥°ŸðÊó€ÎœÅÍ×ÅÙ¡Ê¥Ó¥Ã¥È¥Þ¥Ã¥×¡Ë
+ */
+static uint_t	syslog_logmask;			/* ¥í¥°¥Ð¥Ã¥Õ¥¡€Ëµ­Ï¿€¹€Ù€­œÅÍ×ÅÙ */
+static uint_t	syslog_lowmask_not;		/* Äã¥ì¥Ù¥ëœÐÎÏ€¹€Ù€­œÅÍ×ÅÙ¡ÊÈ¿ÅŸ¡Ë*/
+
+/*
+ *  ¥·¥¹¥Æ¥à¥í¥°µ¡Çœ€ÎœéŽü²œ
+ */
+void
+syslog_initialize(intptr_t exinf)
+{
+	syslog_count = 0U;
+	syslog_head = 0U;
+	syslog_tail = 0U;
+	syslog_lost = 0U;
+	syslog_logmask = 0U;
+	syslog_lowmask_not = 0U;
+}     
+
+/* 
+ *  ¥í¥°ŸðÊó€ÎœÐÎÏ
+ *
+ *  CPU¥í¥Ã¥¯ŸõÂÖ€äŒÂ¹Ô¥³¥ó¥Æ¥­¥¹¥È€Ë€è€é€ºÆ°ºî€Ç€­€ë€è€Š€ËŒÂÁõ€·€Æ€¢€ë¡¥
+ */
+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();
+
+	/*
+	 *  ¥í¥°»þ¹ï€ÎÀßÄê
+	 */
+	((SYSLOG *) p_syslog)->logtim = _kernel_current_time;
+
+	/*
+	 *  ¥í¥°¥Ð¥Ã¥Õ¥¡€Ëµ­Ï¿
+	 */
+	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++;
+		}
+	}
+
+	/*
+	 *  Äã¥ì¥Ù¥ëœÐÎÏ
+	 */
+	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);
+}
+
+/*
+ *  ¥í¥°¥Ð¥Ã¥Õ¥¡€«€é€ÎÆÉœÐ€·
+ *
+ *  CPU¥í¥Ã¥¯ŸõÂÖ€äŒÂ¹Ô¥³¥ó¥Æ¥­¥¹¥È€Ë€è€é€ºÆ°ºî€Ç€­€ë€è€Š€ËŒÂÁõ€·€Æ€¢€ë¡¥
+ */
+ER_UINT
+syslog_rea_log(SYSLOG *p_syslog)
+{
+	ER_UINT	ercd;
+	SIL_PRE_LOC;
+
+	LOG_SYSLOG_REA_LOG_ENTER(p_syslog);
+	SIL_LOC_INT();
+
+	/*
+	 *  ¥í¥°¥Ð¥Ã¥Õ¥¡€«€é€ÎŒèœÐ€·
+	 */
+	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);
+}
+
+/* 
+ *  œÐÎÏ€¹€Ù€­¥í¥°ŸðÊó€ÎœÅÍ×ÅÙ€ÎÀßÄê
+ */
+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);
+}
+
+/*
+ *  ¥í¥°¥Ð¥Ã¥Õ¥¡€ÎŸõÂÖ»²ŸÈ
+ */
+ER
+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(E_OK, pk_rlog);
+	return(E_OK);
+}
Index: /syssvc/syslog.cfg
===================================================================
--- /syssvc/syslog.cfg	(revision 7)
+++ /syssvc/syslog.cfg	(revision 7)
@@ -0,0 +1,10 @@
+/*
+ *  $Id$
+ */
+
+/*
+ *		¥·¥¹¥Æ¥à¥í¥°µ¡Çœ€Î¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+ */
+
+#include "syssvc/syslog.h"
+ATT_INI({ TA_NULL, 0, syslog_initialize });
Index: /syssvc/syslog.h
===================================================================
--- /syssvc/syslog.h	(revision 7)
+++ /syssvc/syslog.h	(revision 7)
@@ -0,0 +1,95 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  $Id$
+ */
+
+/*
+ *		¥·¥¹¥Æ¥à¥í¥°µ¡Çœ
+ */
+
+#ifndef TOPPERS_SYSLOG_H
+#define TOPPERS_SYSLOG_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *  ¥·¥¹¥Æ¥à¥í¥°œÐÎÏ€ò¹Ô€Š€¿€á€ÎÄêµÁ
+ */
+#include <t_syslog.h>
+
+/*
+ *  ¥í¥°¥Ð¥Ã¥Õ¥¡€È€œ€ì€Ë¥¢¥¯¥»¥¹€¹€ë€¿€á€Î¥Ý¥€¥ó¥¿
+ */
+#ifndef TCNT_SYSLOG_BUFFER
+#define TCNT_SYSLOG_BUFFER	32		/* ¥í¥°¥Ð¥Ã¥Õ¥¡€Î¥µ¥€¥º */
+#endif /* TCNT_SYSLOG_BUFFER */
+
+/*
+ *  ¥·¥¹¥Æ¥à¥í¥°µ¡Çœ€ÎœéŽü²œ
+ */
+extern void	syslog_initialize(intptr_t exinf) throw();
+
+/*
+ *  ¥í¥°ŸðÊó€ÎœÐÎÏ
+ */
+extern ER	syslog_wri_log(uint_t prio, const SYSLOG *p_syslog) throw();
+
+/*
+ *  ¥í¥°¥Ð¥Ã¥Õ¥¡€«€é€Î¥í¥°ŸðÊó€ÎÆÉœÐ€·
+ */
+extern ER_UINT	syslog_rea_log(SYSLOG *p_syslog) throw();
+
+/* 
+ *  œÐÎÏ€¹€Ù€­¥í¥°ŸðÊó€ÎœÅÍ×ÅÙ€ÎÀßÄê
+ */
+extern ER	syslog_msk_log(uint_t logmask, uint_t lowmask) throw();
+
+/* 
+ *  ¥í¥°¥Ð¥Ã¥Õ¥¡€ÎŸõÂÖ»²ŸÈ
+ */
+extern ER	syslog_ref_log(T_SYSLOG_RLOG *pk_rlog) throw();
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* TOPPERS_SYSLOG_H */
Index: /target/dummy_gcc/MANIFEST
===================================================================
--- /target/dummy_gcc/MANIFEST	(revision 7)
+++ /target/dummy_gcc/MANIFEST	(revision 7)
@@ -0,0 +1,26 @@
+PACKAGE asp_target_dummy_gcc
+VERSION 1.9.0
+
+MANIFEST
+Makefile.target
+dummy.h
+target.tf
+target_cfg1_out.h
+target_check.tf
+target_config.c
+target_config.h
+target_def.csv
+target_kernel.h
+target_rename.def
+target_rename.h
+target_serial.c
+target_serial.cfg
+target_serial.h
+target_sil.h
+target_stddef.h
+target_syssvc.h
+target_test.h
+target_timer.c
+target_timer.cfg
+target_timer.h
+target_unrename.h
Index: /target/dummy_gcc/Makefile.target
===================================================================
--- /target/dummy_gcc/Makefile.target	(revision 7)
+++ /target/dummy_gcc/Makefile.target	(revision 7)
@@ -0,0 +1,73 @@
+#
+#  $Id$
+# 
+
+#
+#		Makefile €Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô¡Ê¥À¥ß¡Œ¥¿¡Œ¥²¥Ã¥ÈÍÑ¡Ë
+#
+
+#
+#  ¥·¥¹¥Æ¥àÌŸ¡€³«È¯ŽÄ¶­ÌŸ€ÎÄêµÁ
+#
+#  GNU³«È¯ŽÄ¶­€ÎÉžœàÀßÄê€ò»È€š€Ê€€€Î€Ç¡€TOOL€ò"gcc_"€È€·€Æ€€€ë¡¥
+#
+SYS = dummy
+TOOL = gcc_
+
+#
+#  ³«È¯¥Ä¡Œ¥ë€Î¥³¥Þ¥ó¥ÉÌŸ€ÎÄêµÁ
+#
+#  nm¡€objcopy¡€objdump€Ï¡€€œ€ì€Ÿ€ì¡€gnm¡€gobjcopy¡€gobjdump€òÍÑ€€€ë¡¥
+#
+CC = gcc
+CXX = g++
+AS = as
+LD = ld
+AR = ar
+NM = gnm
+RANLIB = ranlib
+OBJCOPY = gobjcopy
+OBJDUMP = gobjdump
+
+#
+#  makeoffset€Ï»ÈÍÑ€·€Ê€€
+#
+OMIT_MAKEOFFSET = true
+
+#
+#  ¥³¥ó¥Ñ¥€¥ë¥ª¥×¥·¥ç¥ó
+#
+INCLUDES := $(INCLUDES) -I$(TARGETDIR)
+COPTS := $(COPTS) -Werror -m32
+
+#
+#  ¥«¡Œ¥Í¥ë€ËŽØ€¹€ëÄêµÁ
+#
+KERNEL_DIR := $(KERNEL_DIR) $(TARGETDIR)
+KERNEL_COBJS := $(KERNEL_COBJS) target_config.o target_timer.o
+
+#
+#  ¥·¥¹¥Æ¥à¥µ¡Œ¥Ó¥¹€ËŽØ€¹€ëÄêµÁ
+#
+SYSSVC_COBJS := $(SYSSVC_COBJS) target_serial.o
+
+#
+#  ¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿ŽØ·ž€ÎÊÑ¿ô€ÎÄêµÁ
+#
+CFG_TABS := $(CFG_TABS) --cfg1-def-table $(TARGETDIR)/target_def.csv
+
+#
+#  ¥È¥ì¡Œ¥¹¥í¥°µ­Ï¿€Î¥µ¥ó¥×¥ë¥³¡Œ¥É€ËŽØ€¹€ëÄêµÁ
+#
+ifeq ($(ENABLE_TRACE),true)
+	COPTS := $(COPTS) -DTOPPERS_ENABLE_TRACE
+	KERNEL_DIR := $(KERNEL_DIR) $(SRCDIR)/arch/logtrace
+	KERNEL_COBJS := $(KERNEL_COBJS) trace_config.o trace_dump.o
+endif
+
+#
+#  °ÍÂžŽØ·ž€ÎÄêµÁ
+#
+cfg1_out.c: $(TARGETDIR)/target_def.csv
+kernel_cfg.timestamp: $(TARGETDIR)/target.tf
+$(OBJFILE): $(TARGETDIR)/target_check.tf
Index: /target/dummy_gcc/dummy.h
===================================================================
--- /target/dummy_gcc/dummy.h	(revision 7)
+++ /target/dummy_gcc/dummy.h	(revision 7)
@@ -0,0 +1,54 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2013-2014 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$
+ */
+
+/*
+ *		¥À¥ß¡Œ¥¿¡Œ¥²¥Ã¥È€Î¥Ï¡Œ¥É¥Š¥§¥¢»ñž»€ÎÄêµÁ
+ */
+
+#ifndef TOPPERS_DUMMY_H
+#define TOPPERS_DUMMY_H
+
+/*
+ *  ³ä¹þ€ßÈÖ¹æ¡Êintno¡Ë€ÎÄêµÁ
+ */
+#define TINTNO_TIMER	0		/* ¥¿¥€¥Þ */
+#define TINTNO_SIO		1		/* ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È */
+
+#endif /* TOPPERS_DUMMY_H */
Index: /target/dummy_gcc/target.tf
===================================================================
--- /target/dummy_gcc/target.tf	(revision 7)
+++ /target/dummy_gcc/target.tf	(revision 7)
@@ -0,0 +1,32 @@
+$ 
+$ 		¥Ñ¥¹2€Î¥¿¡Œ¥²¥Ã¥È°ÍÂž¥Æ¥ó¥×¥ì¡Œ¥È¡Ê¥À¥ß¡Œ¥¿¡Œ¥²¥Ã¥ÈÍÑ¡Ë
+$ 
+
+$ 
+$  »ÈÍÑ€Ç€­€ë³ä¹þ€ßÈÖ¹æ€È€œ€ì€ËÂÐ±þ€¹€ë³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ
+$ 
+$INTNO_VALID = { 0, 1,..., 31 }$
+$INHNO_VALID = INTNO_VALID$
+
+$ 
+$  ATT_ISR€Ç»ÈÍÑ€Ç€­€ë³ä¹þ€ßÈÖ¹æ€È€œ€ì€ËÂÐ±þ€¹€ë³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ
+$ 
+$INTNO_ATTISR_VALID = INTNO_VALID$
+$INHNO_ATTISR_VALID = INHNO_VALID$
+
+$ 
+$  DEF_INT¡¿DEF_EXC€Ç»ÈÍÑ€Ç€­€ë³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ¡¿CPUÎã³°¥Ï¥ó¥É¥éÈÖ¹æ
+$ 
+$INHNO_DEFINH_VALID = INHNO_VALID$
+$EXCNO_DEFEXC_VALID = INHNO_VALID$
+
+$ 
+$  CFG_INT€Ç»ÈÍÑ€Ç€­€ë³ä¹þ€ßÈÖ¹æ€È³ä¹þ€ßÍ¥ÀèÅÙ
+$ 
+$INTNO_CFGINT_VALID = INTNO_VALID$
+$INTPRI_CFGINT_VALID = { -1, -2,..., -7 }$
+
+$ 
+$  Éžœà¥Æ¥ó¥×¥ì¡Œ¥È¥Õ¥¡¥€¥ë€Î¥€¥ó¥¯¥ë¡Œ¥É
+$ 
+$INCLUDE "kernel/kernel.tf"$
Index: /target/dummy_gcc/target_cfg1_out.h
===================================================================
--- /target/dummy_gcc/target_cfg1_out.h	(revision 7)
+++ /target/dummy_gcc/target_cfg1_out.h	(revision 7)
@@ -0,0 +1,12 @@
+/*
+ *  $Id$
+ */
+
+/*
+ *		cfg1_out.c€Î¥ê¥ó¥¯€ËÉ¬Í×€Ê¥¹¥¿¥Ö€ÎÄêµÁ
+ */
+
+int main()
+{
+	return(0);
+}
Index: /target/dummy_gcc/target_check.tf
===================================================================
--- /target/dummy_gcc/target_check.tf	(revision 7)
+++ /target/dummy_gcc/target_check.tf	(revision 7)
@@ -0,0 +1,8 @@
+$ 
+$ 		¥Ñ¥¹3€Î¥¿¡Œ¥²¥Ã¥È°ÍÂž¥Æ¥ó¥×¥ì¡Œ¥È¡Ê¥À¥ß¡Œ¥¿¡Œ¥²¥Ã¥ÈÍÑ¡Ë
+$ 
+
+$ 
+$  Éžœà¥Æ¥ó¥×¥ì¡Œ¥È¥Õ¥¡¥€¥ë€Î¥€¥ó¥¯¥ë¡Œ¥É
+$ 
+$INCLUDE "kernel/kernel_check.tf"$
Index: /target/dummy_gcc/target_config.c
===================================================================
--- /target/dummy_gcc/target_config.c	(revision 7)
+++ /target/dummy_gcc/target_config.c	(revision 7)
@@ -0,0 +1,242 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2013-2014 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$
+ */
+
+/*
+ *		¥¿¡Œ¥²¥Ã¥È°ÍÂž¥â¥ž¥å¡Œ¥ë¡Ê¥À¥ß¡Œ¥¿¡Œ¥²¥Ã¥ÈÍÑ¡Ë
+ */
+
+#include "kernel_impl.h"
+#include "task.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#ifndef LOG_DSP_ENTER
+#define LOG_DSP_ENTER(p_tcb)
+#endif /* LOG_DSP_ENTER */
+
+#ifndef LOG_DSP_LEAVE
+#define LOG_DSP_LEAVE(p_tcb)
+#endif /* LOG_DSP_LEAVE */
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ãËÜÂÎ
+ */
+static void
+dispatcher(void)
+{
+	LOG_DSP_ENTER(p_runtsk);
+	while ((p_runtsk = p_schedtsk) == NULL) {
+		/* ³ä¹þ€ß€òµö²Ä€·€¿€éCPU¥í¥Ã¥¯²òœüŸõÂÖ€Ë€Ê€ë€è€ŠœàÈ÷€¹€ë */
+		/* Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€ËÀÚ€êŽ¹€š€ë */
+		do {
+			/* ³ä¹þ€ß€ò€¹€Ù€Æµö²Ä€·¡€³ä¹þ€ßÈ¯Àž€òÂÔ€Ä */
+			/* ³ä¹þ€ßµö²ÄÁ°€ÎŸõÂÖ€ËÌá€¹¡Ê¡á¥«¡Œ¥Í¥ëŽÉÍý€Î³ä¹þ€ß€ò¶Ø»ß€¹€ë¡Ë*/
+		} while (!reqflg);
+		reqflg = false;
+		/* ¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€ËÌá€¹ */
+		/* CPU¥í¥Ã¥¯ŸõÂÖ€ËÌá€¹ */
+	}
+	/* Œ«¥¿¥¹¥¯¡Êp_runtsk¡Ë€ÎTCB€«€é¥¹¥¿¥Ã¥¯¥Ý¥€¥ó¥¿€òÉüµ¢€¹€ë */
+	LOG_DSP_LEAVE(p_runtsk);
+	/* Œ«¥¿¥¹¥¯€ÎTCB€«€éŒÂ¹ÔºÆ³«ÈÖÃÏ€òÉüµ¢€·¡€€œ€³€ØÊ¬Žô€¹€ë */
+}
+
+/*
+ *  ºÇ¹âÍ¥Àèœç°Ì¥¿¥¹¥¯€Ø€Î¥Ç¥£¥¹¥Ñ¥Ã¥Á
+ */
+void
+dispatch(void)
+{
+#ifdef TOPPERS_SUPPORT_OVRHDR
+	ovrtimer_stop();					/* ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÎÄä»ß */
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+	/* ¥¹¥¯¥é¥Ã¥Á¥ì¥ž¥¹¥¿€òœü€¯€¹€Ù€Æ€Î¥ì¥ž¥¹¥¿€ò¥¹¥¿¥Ã¥¯€ËÊÝÂž€¹€ë */
+	/* ¥¹¥¿¥Ã¥¯¥Ý¥€¥ó¥¿€òŒ«¥¿¥¹¥¯¡Êp_runtsk¡Ë€ÎTCB€ËÊÝÂž€¹€ë */
+	/* dispatch_r€ò¡€ŒÂ¹ÔºÆ³«ÈÖÃÏ€È€·€ÆŒ«¥¿¥¹¥¯€ÎTCB€ËÊÝÂž€¹€ë */
+	dispatcher();
+
+/* dispatch_r: */
+	/* ¥¹¥¯¥é¥Ã¥Á¥ì¥ž¥¹¥¿€òœü€¯€¹€Ù€Æ€Î¥ì¥ž¥¹¥¿€ò¥¹¥¿¥Ã¥¯€«€éÉüµ¢€¹€ë */
+#ifdef TOPPERS_SUPPORT_OVRHDR
+	ovrtimer_start();					/* ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÎÆ°ºî³«»Ï */
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+	calltex();
+}
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã€ÎÆ°ºî³«»Ï
+ */
+void
+start_dispatch(void)
+{
+	/* ¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€ËÀÚ€êŽ¹€š€ë */
+	/* CPU¥í¥Ã¥¯ŸõÂÖ¡Š³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ€Ë€¹€ë */
+	/* dispatcher_0€ËÊ¬Žô€¹€ë */
+}
+
+/*
+ *  žœºß€Î¥³¥ó¥Æ¥­¥¹¥È€òŒÎ€Æ€Æ¥Ç¥£¥¹¥Ñ¥Ã¥Á
+ */
+void
+exit_and_dispatch(void)
+{
+	/* dispatcher€ËÊ¬Žô€¹€ë */
+}
+
+/*
+ *  ³ä¹þ€ß¥Ï¥ó¥É¥éœÐžýœèÍý
+ *
+ *  ³ä¹þ€ß¥Ï¥ó¥É¥éÃæ€Ç€Ï¡€¥«¡Œ¥Í¥ëŽÉÍý€Î³ä¹þ€ß€ò¶Ø»ß€·€Æ€€€ë€¿€á¡€œÐžý
+ *  œèÍý€Ç³ä¹þ€ß€ò¶Ø»ß€¹€ëÉ¬Í×€Ï€Ê€€¡¥
+ */
+void
+ret_int(void)
+{
+}
+
+/*
+ *  CPUÎã³°¥Ï¥ó¥É¥éœÐžýœèÍý
+ */
+void
+ret_exc(void)
+{
+}
+
+/*
+ *  ¥«¡Œ¥Í¥ë€ÎœªÎ»œèÍý€ÎžÆœÐ€·
+ */
+void
+call_exit_kernel(void)
+{
+	/* Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€ËÀÚ€êŽ¹€š€ë */
+	/* exit_kernel€ËÊ¬Žô€¹€ë */
+	while (true);
+}
+
+/*
+ *  ¥¿¥¹¥¯³«»Ï»þœèÍý
+ */
+void
+start_r(void)
+{
+#ifdef TOPPERS_SUPPORT_OVRHDR
+	ovrtimer_start();					/* ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÎÆ°ºî³«»Ï */
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+	/* CPU¥í¥Ã¥¯²òœüŸõÂÖ€Ë€¹€ë */
+	/* Œ«¥¿¥¹¥¯¡Êp_runtsk¡Ë€Îµ¯Æ°ÈÖÃÏ€ò¡€³ÈÄ¥ŸðÊó€ò¥Ñ¥é¥á¡Œ¥¿€È€·€ÆžÆ€ÓœÐ€¹ */
+	/* ext_tsk€ËÊ¬Žô€¹€ë */
+}
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎœéŽü²œ
+ */
+void
+target_initialize(void)
+{
+}
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎœªÎ»œèÍý
+ */
+void
+target_exit(void)
+{
+	exit(0);
+}
+
+/*
+ *  ¥·¥¹¥Æ¥à¥í¥°€ÎÄã¥ì¥Ù¥ëœÐÎÏ€Î€¿€á€ÎÊž»úœÐÎÏ
+ */
+void
+target_fput_log(char c)
+{
+	/* Êž»úc€òÉœŒš/œÐÎÏ/ÊÝÂž€¹€ë */
+}
+
+/*
+ *  ¥á¥€¥óŽØ¿ô
+ */
+int
+main()
+{
+	sta_ker();
+	return(0);
+}
+
+/*
+ *  ¥«¡Œ¥Í¥ë€Î³ä€êÉÕ€±€ë¥á¥â¥êÎÎ°è€ÎŽÉÍý
+ *
+ *  TLSF¡Ê¥ª¡Œ¥×¥ó¥œ¡Œ¥¹€Î¥á¥â¥êŽÉÍý¥é¥€¥Ö¥é¥ê¡Ë€òÍÑ€€€ÆŒÂžœ¡¥
+ */
+#ifdef TOPPERS_SUPPORT_DYNAMIC_CRE
+
+#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);
+	}
+}
+
+#endif /* TOPPERS_SUPPORT_DYNAMIC_CRE */
Index: /target/dummy_gcc/target_config.h
===================================================================
--- /target/dummy_gcc/target_config.h	(revision 7)
+++ /target/dummy_gcc/target_config.h	(revision 7)
@@ -0,0 +1,415 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2013-2014 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$
+ */
+
+/*
+ *		¥¿¡Œ¥²¥Ã¥È°ÍÂž¥â¥ž¥å¡Œ¥ë¡Ê¥À¥ß¡Œ¥¿¡Œ¥²¥Ã¥ÈÍÑ¡Ë
+ *
+ *  ¥«¡Œ¥Í¥ë€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€Î¥€¥ó¥¯¥ë¡Œ¥É¥Õ¥¡¥€¥ë¡¥kernel_impl.h€Î¥¿¡Œ
+ *  ¥²¥Ã¥È°ÍÂžÉô€Î°ÌÃÖÉÕ€±€È€Ê€ë¡¥
+ */
+
+#ifndef TOPPERS_TARGET_CONFIG_H
+#define TOPPERS_TARGET_CONFIG_H
+
+#ifndef TOPPERS_MACRO_ONLY
+#ifdef TOPPERS_SUPPORT_OVRHDR
+#include "overrun.h"
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È¥·¥¹¥Æ¥à€Î¥Ï¡Œ¥É¥Š¥§¥¢»ñž»€ÎÄêµÁ
+ */
+#include "dummy.h"
+
+/*
+ *  ¥š¥é¡Œ¥Á¥§¥Ã¥¯ÊýË¡€Î»ØÄê
+ */
+#define CHECK_STKSZ_ALIGN	4	/* ¥¹¥¿¥Ã¥¯¥µ¥€¥º€Î¥¢¥é¥€¥óÃ±°Ì */
+#define CHECK_FUNC_ALIGN	4	/* ŽØ¿ô€Î¥¢¥é¥€¥óÃ±°Ì */
+#define CHECK_FUNC_NONNULL		/* ŽØ¿ô€ÎÈóNULL¥Á¥§¥Ã¥¯ */
+#define CHECK_STACK_ALIGN	4	/* ¥¹¥¿¥Ã¥¯ÎÎ°è€Î¥¢¥é¥€¥óÃ±°Ì */
+#define CHECK_STACK_NONNULL		/* ¥¹¥¿¥Ã¥¯ÎÎ°è€ÎÈóNULL¥Á¥§¥Ã¥¯ */
+#define CHECK_MPF_ALIGN		4	/* žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÎÎ°è€Î¥¢¥é¥€¥óÃ±°Ì */
+#define CHECK_MPF_NONNULL		/* žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÎÎ°è€ÎÈóNULL¥Á¥§¥Ã¥¯ */
+#define CHECK_MB_ALIGN		4	/* ŽÉÍýÎÎ°è€Î¥¢¥é¥€¥óÃ±°Ì */
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°€ËŽØ€¹€ëÀßÄê
+ */
+#ifdef TOPPERS_ENABLE_TRACE
+#include "logtrace/trace_config.h"
+#endif /* TOPPERS_ENABLE_TRACE */
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#ifndef LOG_INH_ENTER
+#define LOG_INH_ENTER(inhno)
+#endif /* LOG_INH_ENTER */
+
+#ifndef LOG_INH_LEAVE
+#define LOG_INH_LEAVE(inhno)
+#endif /* LOG_INH_LEAVE */
+
+#ifndef LOG_EXC_ENTER
+#define LOG_EXC_ENTER(excno)
+#endif /* LOG_EXC_ENTER */
+
+#ifndef LOG_EXC_LEAVE
+#define LOG_EXC_LEAVE(excno)
+#endif /* LOG_EXC_LEAVE */
+
+/*
+ *  Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ¥¹¥¿¥Ã¥¯€Î¥Ç¥Õ¥©¥ë¥È€Î¥µ¥€¥º
+ */
+#define DEFAULT_ISTKSZ			4096
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  ¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È¥Ö¥í¥Ã¥¯€ÎÄêµÁ
+ */
+typedef struct task_context_block {
+	void		*sp;			/* ¥¹¥¿¥Ã¥¯¥Ý¥€¥ó¥¿ */
+	void		*pc;			/* ŒÂ¹ÔºÆ³«ÈÖÃÏ */
+} TSKCTXB;
+
+/*
+ *  ¥³¥ó¥Æ¥­¥¹¥È€Î»²ŸÈ
+ */
+Inline bool_t
+sense_context(void)
+{
+	return(false);
+}
+
+/*
+ *  CPU¥í¥Ã¥¯ŸõÂÖ€Ø€Î°Ü¹Ô
+ */
+Inline void
+x_lock_cpu(void)
+{
+}
+
+#define t_lock_cpu()	x_lock_cpu()
+#define i_lock_cpu()	x_lock_cpu()
+
+/*
+ *  CPU¥í¥Ã¥¯ŸõÂÖ€Î²òœü
+ */
+Inline void
+x_unlock_cpu(void)
+{
+}
+
+#define t_unlock_cpu()	x_unlock_cpu()
+#define i_unlock_cpu()	x_unlock_cpu()
+
+/*
+ *  CPU¥í¥Ã¥¯ŸõÂÖ€Î»²ŸÈ
+ */
+Inline bool_t
+x_sense_lock(void)
+{
+	return(false);
+}
+
+#define t_sense_lock()	x_sense_lock()
+#define i_sense_lock()	x_sense_lock()
+
+/*
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€ÎÀßÄê
+ */
+Inline void
+x_set_ipm(PRI intpri)
+{
+}
+
+#define t_set_ipm(intpri)	x_set_ipm(intpri)
+#define i_set_ipm(intpri)	x_set_ipm(intpri)
+
+/*
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€Î»²ŸÈ
+ */
+Inline PRI
+x_get_ipm(void)
+{
+	return(TIPM_ENAALL);
+}
+
+#define t_get_ipm()	x_get_ipm()
+#define i_get_ipm()	x_get_ipm()
+
+/*
+ *  ³ä¹þ€ßÈÖ¹æ€ÎÈÏ°Ï€ÎÈœÄê
+ */
+#define	VALID_INTNO(intno)	(0 <= (intno) && (intno) <= 31)
+#define	VALID_INTNO_CREISR(intno)	VALID_INTNO(intno)
+#define	VALID_INTNO_DISINT(intno)	VALID_INTNO(intno)
+
+/*
+ *  ³ä¹þ€ßÍ×µá¶Ø»ß¥Õ¥é¥°€Î¥»¥Ã¥È
+ *
+ *  ³ä¹þ€ßÂ°À­€¬ÀßÄê€µ€ì€Æ€€€Ê€€³ä¹þ€ßÍ×µá¥é¥€¥ó€ËÂÐ€·€Æ³ä¹þ€ßÍ×µá¶Ø»ß
+ *  ¥Õ¥é¥°€ò¥»¥Ã¥È€·€è€Š€È€·€¿Ÿì¹ç€Ë€Ï¡€false€òÊÖ€¹¡¥
+ */
+Inline bool_t
+x_disable_int(INTNO intno)
+{
+	return(true);
+}
+
+#define t_disable_int(intno)	x_disable_int(intno)
+#define i_disable_int(intno)	x_disable_int(intno)
+
+/*
+ *  ³ä¹þ€ßÍ×µá¶Ø»ß¥Õ¥é¥°€Î¥¯¥ê¥¢
+ *
+ *  ³ä¹þ€ßÂ°À­€¬ÀßÄê€µ€ì€Æ€€€Ê€€³ä¹þ€ßÍ×µá¥é¥€¥ó€ËÂÐ€·€Æ³ä¹þ€ßÍ×µá¶Ø»ß
+ *  ¥Õ¥é¥°€ò¥¯¥ê¥¢€·€è€Š€È€·€¿Ÿì¹ç€Ë€Ï¡€false€òÊÖ€¹¡¥
+ */
+Inline bool_t
+x_enable_int(INTNO intno)
+{
+	return(true);
+}
+
+#define t_enable_int(intno)		x_enable_int(intno)
+#define i_enable_int(intno)		x_enable_int(intno)
+
+/*
+ *  ³ä¹þ€ßÍ×µá€Î¥¯¥ê¥¢
+ */
+Inline void
+x_clear_int(INTNO intno)
+{
+}
+
+#define t_clear_int(intno)		x_clear_int(intno)
+#define i_clear_int(intno)		x_clear_int(intno)
+
+/*
+ *  ³ä¹þ€ßÍ×µá€Î¥Á¥§¥Ã¥¯
+ */
+Inline bool_t
+x_probe_int(INTNO intno)
+{
+	return(true);
+}
+
+#define t_probe_int(intno)		x_probe_int(intno)
+#define i_probe_int(intno)		x_probe_int(intno)
+
+/*
+ *  ³ä¹þ€ß¥Ï¥ó¥É¥é€ÎÆþžý€ÇÉ¬Í×€ÊIRCÁàºî
+ */
+Inline void
+i_begin_int(INTNO intno)
+{
+}
+
+/*
+ *  ³ä¹þ€ß¥Ï¥ó¥É¥é€ÎœÐžý€ÇÉ¬Í×€ÊIRCÁàºî
+ */
+Inline void
+i_end_int(INTNO intno)
+{
+}
+
+/*
+ *  ºÇ¹âÍ¥Àèœç°Ì¥¿¥¹¥¯€Ø€Î¥Ç¥£¥¹¥Ñ¥Ã¥Á
+ */
+extern void	dispatch(void);
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã€ÎÆ°ºî³«»Ï
+ */
+extern void start_dispatch(void);
+
+/*
+ *  žœºß€Î¥³¥ó¥Æ¥­¥¹¥È€òŒÎ€Æ€Æ¥Ç¥£¥¹¥Ñ¥Ã¥Á
+ */
+extern void	exit_and_dispatch(void);
+
+/*
+ *  ³ä¹þ€ß¥Ï¥ó¥É¥éœÐžýœèÍý
+ */
+extern void	ret_int(void);
+
+/*
+ *  CPUÎã³°¥Ï¥ó¥É¥éœÐžýœèÍý
+ */
+extern void	ret_exc(void);
+
+/*
+ *  ¥«¡Œ¥Í¥ë€ÎœªÎ»œèÍý€ÎžÆœÐ€·
+ */
+extern void call_exit_kernel(void) NoReturn;
+
+/*
+ *  ¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€ÎœéŽü²œ
+ */
+extern void	start_r(void);
+
+#define activate_context(p_tcb)
+
+/*
+ *  ³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ€ÈCPUÎã³°¥Ï¥ó¥É¥éÈÖ¹æ€ÎÈÏ°Ï€ÎÈœÄê
+ */
+#define VALID_INHNO_DEFINH(inhno)		VALID_INTNO((INTNO)(inhno))
+#define VALID_EXCNO_DEFEXC(excno)		VALID_INTNO((INTNO)(excno))
+
+/*
+ *  ³ä¹þ€ß¥Ï¥ó¥É¥é€ÎÀßÄê
+ *
+ *  ¥Ù¥¯¥È¥ëÈÖ¹æinhno€Î³ä¹þ€ß¥Ï¥ó¥É¥é€ÎœÐÆþžýœèÍý€ÎÈÖÃÏ€òint_entry€Ë
+ *  ÀßÄê€¹€ë¡¥
+ */
+Inline void
+x_define_inh(INHNO inhno, FP int_entry)
+{
+}
+
+/*
+ *  ³ä¹þ€ßÍ×µá¥é¥€¥óÂ°À­€ÎÀßÄê
+ */
+Inline void
+x_config_int(INTNO intno, ATR intatr, PRI intpri)
+{
+}
+
+/*
+ *  CPUÎã³°¥Ï¥ó¥É¥é€ÎÀßÄê
+ *
+ *  ¥Ù¥¯¥È¥ëÈÖ¹æexcno€ÎCPUÎã³°¥Ï¥ó¥É¥é€ÎœÐÆþžýœèÍý€ÎÈÖÃÏ€òexc_entry€ËÀß
+ *  Äê€¹€ë¡¥
+ */
+Inline void
+x_define_exc(EXCNO excno, FP exc_entry)
+{
+}
+
+/*
+ *  ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éÄä»ß€Î€¿€á€Î¥Þ¥¯¥í
+ */
+#ifdef TOPPERS_SUPPORT_OVRHDR
+#define OVRTIMER_STOP()	{				\
+			i_lock_cpu();				\
+			_kernel_ovrtimer_stop();	\
+			i_unlock_cpu();				\
+		}
+#else /* TOPPERS_SUPPORT_OVRHDR */
+#define OVRTIMER_STOP()
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+
+/*
+ *  ³ä¹þ€ß¥Ï¥ó¥É¥é€ÎÆþžýœèÍý€ÎÀžÀ®¥Þ¥¯¥í
+ */
+#define INT_ENTRY(inhno, inthdr)	inthdr
+#define INTHDR_ENTRY(inhno, inthdr, intpri)
+
+/*
+ *  CPUÎã³°¥Ï¥ó¥É¥é€ÎÆþžýœèÍý€ÎÀžÀ®¥Þ¥¯¥í
+ */
+#define EXC_ENTRY(excno, exchdr)	exchdr
+#define EXCHDR_ENTRY(excno, excno_num, exchdr)
+
+/*
+ *  CPUÎã³°€ÎÈ¯Àž€·€¿»þ€Î¥³¥ó¥Æ¥­¥¹¥È€Î»²ŸÈ
+ *
+ *  CPUÎã³°€ÎÈ¯Àž€·€¿»þ€Î¥³¥ó¥Æ¥­¥¹¥È€¬¡€¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€Î»þ€Ëfalse¡€
+ *  €œ€Š€Ç€Ê€€»þ€Ëtrue€òÊÖ€¹¡¥
+ */
+Inline bool_t
+exc_sense_context(void *p_excinf)
+{
+	return(true);
+}
+
+/*
+ *  ¥«¡Œ¥Í¥ëŽÉÍý³°€ÎCPUÎã³°€ÎÈœÊÌ
+ *
+ *  ¥«¡Œ¥Í¥ëŽÉÍý³°€ÎCPUÎã³°€Î»þ€Ëtrue¡€€œ€Š€Ç€Ê€€»þ€Ëfalse€òÊÖ€¹¡¥
+ */
+Inline bool_t
+exc_sense_nonkernel(void *p_excinf)
+{
+	return(true);
+}
+
+/*
+ *  CPUÎã³°€ÎÈ¯Àž€·€¿»þ€Î¥³¥ó¥Æ¥­¥¹¥È€È³ä¹þ€ß€Î¥Þ¥¹¥¯ŸõÂÖ€Î»²ŸÈ
+ *
+ *  CPUÎã³°€ÎÈ¯Àž€·€¿»þ€Î¥·¥¹¥Æ¥àŸõÂÖ€¬¡€¥«¡Œ¥Í¥ëŒÂ¹ÔÃæ€Ç€Ê€¯¡€¥¿¥¹¥¯¥³
+ *  ¥ó¥Æ¥­¥¹¥È€Ç€¢€ê¡€ÁŽ³ä¹þ€ß¥í¥Ã¥¯ŸõÂÖ€Ç€Ê€¯¡€CPU¥í¥Ã¥¯ŸõÂÖ€Ç€Ê€¯¡€³ä
+ *  ¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ€Ç€¢€ë»þ€Ëtrue¡€€œ€Š€Ç€Ê€€»þ€Ëfalse€òÊÖ€¹
+ *  ¡ÊCPUÎã³°€¬¥«¡Œ¥Í¥ëŽÉÍý³°€Î³ä¹þ€ßœèÍýÃæ€ÇÈ¯Àž€·€¿Ÿì¹ç€Ë€âfalse€òÊÖ
+ *  €¹¡Ë¡¥
+ */
+Inline bool_t
+exc_sense_intmask(void *p_excinf)
+{
+	return(true);
+}
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È¥·¥¹¥Æ¥à°ÍÂž€ÎœéŽü²œ
+ */
+extern void	target_initialize(void);
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È¥·¥¹¥Æ¥à€ÎœªÎ»
+ *
+ *  ¥·¥¹¥Æ¥à€òœªÎ»€¹€ë»þ€Ë»È€Š¡¥
+ */
+extern void	target_exit(void) NoReturn;
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  ¥«¡Œ¥Í¥ë€Î³ä€êÉÕ€±€ë¥á¥â¥êÎÎ°è€ÎŽÉÍý
+ *
+ *  target_config.c€Ë¡€TLSF¡Ê¥ª¡Œ¥×¥ó¥œ¡Œ¥¹€Î¥á¥â¥êŽÉÍý¥é¥€¥Ö¥é¥ê¡Ë€òÍÑ
+ *  €€€¿¥á¥â¥êŽÉÍý¥ë¡Œ¥Á¥ó€òŽÞ€á€Æ€€€ë¡¥
+ */
+#define OMIT_KMM_ALLOCONLY
+
+#endif /* TOPPERS_TARGET_CONFIG_H */
Index: /target/dummy_gcc/target_kernel.h
===================================================================
--- /target/dummy_gcc/target_kernel.h	(revision 7)
+++ /target/dummy_gcc/target_kernel.h	(revision 7)
@@ -0,0 +1,74 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2013-2014 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$
+ */
+
+/*
+ *		kernel.h€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô¡Ê¥À¥ß¡Œ¥¿¡Œ¥²¥Ã¥ÈÍÑ¡Ë
+ *
+ *  €³€Î¥€¥ó¥¯¥ë¡Œ¥É¥Õ¥¡¥€¥ë€Ï¡€kernel.h€Ç¥€¥ó¥¯¥ë¡Œ¥É€µ€ì€ë¡¥ÂŸ€Î¥Õ¥¡
+ *  ¥€¥ë€«€éÄŸÀÜ¥€¥ó¥¯¥ë¡Œ¥É€¹€ë€³€È€Ï€Ê€€¡¥€³€Î¥Õ¥¡¥€¥ë€ò¥€¥ó¥¯¥ë¡Œ¥É
+ *  €¹€ëÁ°€Ë¡€t_stddef.h€¬¥€¥ó¥¯¥ë¡Œ¥É€µ€ì€ë€Î€Ç¡€€œ€ì€é€Ë°ÍÂž€·€Æ€â€è
+ *  €€¡¥
+ */
+
+#ifndef TOPPERS_TARGET_KERNEL_H
+#define TOPPERS_TARGET_KERNEL_H
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€Ç¥µ¥Ý¡Œ¥È€Ç€­€ëµ¡Çœ
+ */
+#define TOPPERS_TARGET_SUPPORT_DIS_INT		/* dis_int */
+#define TOPPERS_TARGET_SUPPORT_ENA_INT		/* ena_int */
+#define TOPPERS_TARGET_SUPPORT_GET_UTM		/* get_utm */
+
+/*
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ€ÎÈÏ°Ï
+ */
+#define TMIN_INTPRI		(-7)		/* ³ä¹þ€ßÍ¥ÀèÅÙ€ÎºÇŸ®ÃÍ¡ÊºÇ¹âÃÍ¡Ë*/
+#define TMAX_INTPRI		(-1)		/* ³ä¹þ€ßÍ¥ÀèÅÙ€ÎºÇÂçÃÍ¡ÊºÇÄãÃÍ¡Ë */
+
+/*
+ *  ¥¿¥€¥à¥Æ¥£¥Ã¥¯€ÎÄêµÁ
+ */
+#ifndef TIC_NUME
+#define	TIC_NUME		1U			/* ¥¿¥€¥à¥Æ¥£¥Ã¥¯€ÎŒþŽü€ÎÊ¬»Ò */
+#define	TIC_DENO		1U			/* ¥¿¥€¥à¥Æ¥£¥Ã¥¯€ÎŒþŽü€ÎÊ¬Êì */
+#endif /* TIC_NUME */
+
+#endif /* TOPPERS_TARGET_KERNEL_H */
Index: /target/dummy_gcc/target_rename.def
===================================================================
--- /target/dummy_gcc/target_rename.def	(revision 7)
+++ /target/dummy_gcc/target_rename.def	(revision 7)
@@ -0,0 +1,25 @@
+# target_config.c
+dispatch
+start_dispatch
+exit_and_dispatch
+ret_int
+ret_exc
+call_exit_kernel
+start_r
+target_initialize
+target_exit
+
+# target_timer.c
+target_timer_get_current
+target_timer_probe_int
+target_ovrtimer_start
+target_ovrtimer_stop
+target_ovrtimer_get_current
+
+# trace_config.c
+log_dsp_enter
+log_dsp_leave
+log_inh_enter
+log_inh_leave
+log_exc_enter
+log_exc_leave
Index: /target/dummy_gcc/target_rename.h
===================================================================
--- /target/dummy_gcc/target_rename.h	(revision 7)
+++ /target/dummy_gcc/target_rename.h	(revision 7)
@@ -0,0 +1,75 @@
+/* This file is generated from target_rename.def by genrename. */
+
+#ifndef TOPPERS_TARGET_RENAME_H
+#define TOPPERS_TARGET_RENAME_H
+
+/*
+ *  target_config.c
+ */
+#define dispatch					_kernel_dispatch
+#define start_dispatch				_kernel_start_dispatch
+#define exit_and_dispatch			_kernel_exit_and_dispatch
+#define ret_int						_kernel_ret_int
+#define ret_exc						_kernel_ret_exc
+#define call_exit_kernel			_kernel_call_exit_kernel
+#define start_r						_kernel_start_r
+#define target_initialize			_kernel_target_initialize
+#define target_exit					_kernel_target_exit
+
+/*
+ *  target_timer.c
+ */
+#define target_timer_get_current	_kernel_target_timer_get_current
+#define target_timer_probe_int		_kernel_target_timer_probe_int
+#define target_ovrtimer_start		_kernel_target_ovrtimer_start
+#define target_ovrtimer_stop		_kernel_target_ovrtimer_stop
+#define target_ovrtimer_get_current	_kernel_target_ovrtimer_get_current
+
+/*
+ *  trace_config.c
+ */
+#define log_dsp_enter				_kernel_log_dsp_enter
+#define log_dsp_leave				_kernel_log_dsp_leave
+#define log_inh_enter				_kernel_log_inh_enter
+#define log_inh_leave				_kernel_log_inh_leave
+#define log_exc_enter				_kernel_log_exc_enter
+#define log_exc_leave				_kernel_log_exc_leave
+
+#ifdef TOPPERS_LABEL_ASM
+
+/*
+ *  target_config.c
+ */
+#define _dispatch					__kernel_dispatch
+#define _start_dispatch				__kernel_start_dispatch
+#define _exit_and_dispatch			__kernel_exit_and_dispatch
+#define _ret_int					__kernel_ret_int
+#define _ret_exc					__kernel_ret_exc
+#define _call_exit_kernel			__kernel_call_exit_kernel
+#define _start_r					__kernel_start_r
+#define _target_initialize			__kernel_target_initialize
+#define _target_exit				__kernel_target_exit
+
+/*
+ *  target_timer.c
+ */
+#define _target_timer_get_current	__kernel_target_timer_get_current
+#define _target_timer_probe_int		__kernel_target_timer_probe_int
+#define _target_ovrtimer_start		__kernel_target_ovrtimer_start
+#define _target_ovrtimer_stop		__kernel_target_ovrtimer_stop
+#define _target_ovrtimer_get_current	__kernel_target_ovrtimer_get_current
+
+/*
+ *  trace_config.c
+ */
+#define _log_dsp_enter				__kernel_log_dsp_enter
+#define _log_dsp_leave				__kernel_log_dsp_leave
+#define _log_inh_enter				__kernel_log_inh_enter
+#define _log_inh_leave				__kernel_log_inh_leave
+#define _log_exc_enter				__kernel_log_exc_enter
+#define _log_exc_leave				__kernel_log_exc_leave
+
+#endif /* TOPPERS_LABEL_ASM */
+
+
+#endif /* TOPPERS_TARGET_RENAME_H */
Index: /target/dummy_gcc/target_serial.c
===================================================================
--- /target/dummy_gcc/target_serial.c	(revision 7)
+++ /target/dummy_gcc/target_serial.c	(revision 7)
@@ -0,0 +1,231 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2013-2014 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$
+ */
+
+/*
+ *		¥·¥ê¥¢¥ëI/O¥Ç¥Ð¥€¥¹¡ÊSIO¡Ë¥É¥é¥€¥Ð¡Ê¥À¥ß¡Œ¥¿¡Œ¥²¥Ã¥ÈÍÑ¡Ë
+ */
+
+#include "target_serial.h"
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥ÈœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÄêµÁ
+ */
+typedef struct sio_port_initialization_block {
+	int_t		dummy;			/* ¥À¥ß¡Œ¥Õ¥£¡Œ¥ë¥É */
+	/* SIO€Î¥ì¥ž¥¹¥¿€ÎÈÖÃÏ€Ê€É */
+} SIOPINIB;
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥ÈŽÉÍý¥Ö¥í¥Ã¥¯€ÎÄêµÁ
+ */
+struct sio_port_control_block {
+	const SIOPINIB *p_siopinib;	/* ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥ÈœéŽü²œ¥Ö¥í¥Ã¥¯ */
+	intptr_t	exinf;			/* ³ÈÄ¥ŸðÊó */
+	bool_t		openflag;		/* ¥ª¡Œ¥×¥óºÑ€ß¥Õ¥é¥° */
+	/* SIO€ÎŸõÂÖ€Ê€É */
+};
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥ÈœéŽü²œ¥Ö¥í¥Ã¥¯
+ */
+const SIOPINIB siopinib_table[TNUM_SIOP] = {
+	{ 0 }
+};
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥ÈŽÉÍý¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢
+ */
+SIOPCB	siopcb_table[TNUM_SIOP];
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥ÈID€«€éŽÉÍý¥Ö¥í¥Ã¥¯€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#define INDEX_SIOP(siopid)	((uint_t)((siopid) - 1))
+#define get_siopcb(siopid)	(&(siopcb_table[INDEX_SIOP(siopid)]))
+
+/*
+ *  SIO¥É¥é¥€¥Ð€ÎœéŽü²œ
+ */
+void
+sio_initialize(intptr_t exinf)
+{
+	SIOPCB	*p_siopcb;
+	uint_t	i;
+
+	/*
+	 *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥ÈŽÉÍý¥Ö¥í¥Ã¥¯€ÎœéŽü²œ
+	 */
+	for (i = 0; i < TNUM_SIOP; i++) {
+		p_siopcb = &(siopcb_table[i]);
+		p_siopcb->p_siopinib = &(siopinib_table[i]);
+		p_siopcb->openflag = false;
+		/* €œ€ÎÂŸ€Î¥Õ¥£¡Œ¥ë¥É€ÎœéŽü²œ */
+	}
+}
+
+/*
+ *  SIO¥É¥é¥€¥Ð€ÎœªÎ»œèÍý
+ */
+void
+sio_terminate(intptr_t exinf)
+{
+	SIOPCB	*p_siopcb;
+	uint_t	i;
+
+	/*
+	 *  ¥ª¡Œ¥×¥ó€µ€ì€Æ€€€ë¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€Î¥¯¥í¡Œ¥º
+	 */
+	for (i = 0; i < TNUM_SIOP; i++) {
+		p_siopcb = &(siopcb_table[i]);
+		if (p_siopcb->openflag) {
+			/* SIO€Î¥¯¥í¡Œ¥ºœèÍý */
+		}
+	}
+}
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€Î¥ª¡Œ¥×¥ó
+ */
+SIOPCB *
+sio_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;
+
+	/* SIO€Î¥ª¡Œ¥×¥óœèÍý */
+
+	p_siopcb->exinf = exinf;
+	p_siopcb->openflag = true;
+	return(p_siopcb);
+}
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€Î¥¯¥í¡Œ¥º
+ */
+void
+sio_cls_por(SIOPCB *p_siopcb)
+{
+	/* SIO€Î¥¯¥í¡Œ¥ºœèÍý */
+
+	p_siopcb->openflag = false;
+}
+
+/*
+ *  SIO€Î³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó
+ */
+void
+sio_isr(intptr_t exinf)
+{
+	SIOPCB	*p_siopcb = &(siopcb_table[(int_t) exinf]);
+	
+	if (1/* Á÷¿®Ž°Î»³ä¹þ€ß€ÎŸì¹ç */) {
+		sio_irdy_snd(p_siopcb->exinf);
+	}
+	if (1/* Œõ¿®Ž°Î»³ä¹þ€ß€ÎŸì¹ç */) {
+		sio_irdy_rcv(p_siopcb->exinf);
+	}
+}
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€Ø€ÎÊž»úÁ÷¿®
+ */
+bool_t
+sio_snd_chr(SIOPCB *p_siopcb, char c)
+{
+	if (1/* Á÷¿®¥ì¥ž¥¹¥¿€Ë¶õ€­€¬€¢€ëŸì¹ç */) {
+		/* Á÷¿®¥ì¥ž¥¹¥¿€ËÊž»úc€òÆþ€ì€ë */
+		return(true);
+	}
+	else {
+		return(false);
+	}
+}
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€«€é€ÎÊž»úŒõ¿®
+ */
+int_t
+sio_rcv_chr(SIOPCB *p_siopcb)
+{
+	char	c;
+
+	if (1/* Œõ¿®¥ì¥ž¥¹¥¿€ËÊž»ú€¬€¢€ëŸì¹ç */) {
+		/* Œõ¿®¥ì¥ž¥¹¥¿€ÎÊž»ú€òc€ËÆþ€ì€ë */
+		return((int_t) c);
+	}
+	else {
+		return(-1);
+	}
+}
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€«€é€Î¥³¡Œ¥ë¥Ð¥Ã¥¯€Îµö²Ä
+ */
+void
+sio_ena_cbr(SIOPCB *p_siopcb, uint_t cbrtn)
+{
+	switch (cbrtn) {
+	case SIO_RDY_SND:
+		/* Á÷¿®Ž°Î»³ä¹þ€ß€òµö²Ä */
+		break;
+	case SIO_RDY_RCV:
+		/* Œõ¿®Ž°Î»³ä¹þ€ß€òµö²Ä */
+		break;
+	}
+}
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€«€é€Î¥³¡Œ¥ë¥Ð¥Ã¥¯€Î¶Ø»ß
+ */
+void
+sio_dis_cbr(SIOPCB *p_siopcb, uint_t cbrtn)
+{
+	switch (cbrtn) {
+	case SIO_RDY_SND:
+		/* Á÷¿®Ž°Î»³ä¹þ€ß€ò¶Ø»ß */
+		break;
+	case SIO_RDY_RCV:
+		/* Œõ¿®Ž°Î»³ä¹þ€ß€ò¶Ø»ß */
+		break;
+	}
+}
Index: /target/dummy_gcc/target_serial.cfg
===================================================================
--- /target/dummy_gcc/target_serial.cfg	(revision 7)
+++ /target/dummy_gcc/target_serial.cfg	(revision 7)
@@ -0,0 +1,13 @@
+/*
+ *  $Id$
+ */
+
+/*
+ *		SIO¥É¥é¥€¥Ð¡Ê¥À¥ß¡Œ¥¿¡Œ¥²¥Ã¥ÈÍÑ¡Ë€Î¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+ */
+
+#include "target_serial.h"
+ATT_INI({ TA_NULL, 0, sio_initialize });
+ATT_TER({ TA_NULL, 0, sio_terminate });
+CFG_INT(INTNO_SIO, { INTATR_SIO, INTPRI_SIO });
+ATT_ISR({ TA_NULL, 0, INTNO_SIO, sio_isr, 1 });
Index: /target/dummy_gcc/target_serial.h
===================================================================
--- /target/dummy_gcc/target_serial.h	(revision 7)
+++ /target/dummy_gcc/target_serial.h	(revision 7)
@@ -0,0 +1,132 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2013-2014 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$
+ */
+
+/*
+ *		¥·¥ê¥¢¥ëI/O¥Ç¥Ð¥€¥¹¡ÊSIO¡Ë¥É¥é¥€¥Ð¡Ê¥À¥ß¡Œ¥¿¡Œ¥²¥Ã¥ÈÍÑ¡Ë
+ */
+
+#ifndef TOPPERS_TARGET_SERIAL_H
+#define TOPPERS_TARGET_SERIAL_H
+
+#include "dummy.h"
+#include <t_stddef.h>
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È¿ô€ÎÄêµÁ
+ */
+#define TNUM_SIOP		1		/* ¥µ¥Ý¡Œ¥È€¹€ë¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€Î¿ô */
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€Î³ä¹þ€ßŽØÏ¢ŸðÊó
+ */
+#define INTNO_SIO		TINTNO_SIO		/* ³ä¹þ€ßÈÖ¹æ */
+#define INTPRI_SIO		-1				/* ³ä¹þ€ßÍ¥ÀèÅÙ */
+#define INTATR_SIO		TA_NULL			/* ³ä¹þ€ßÂ°À­ */
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥ÈŽÉÍý¥Ö¥í¥Ã¥¯€ÎÄêµÁ
+ */
+typedef struct sio_port_control_block	SIOPCB;
+
+/*
+ *  ¥³¡Œ¥ë¥Ð¥Ã¥¯¥ë¡Œ¥Á¥ó€ÎŒ±ÊÌÈÖ¹æ
+ */
+#define SIO_RDY_SND		1U		/* Á÷¿®²ÄÇœ¥³¡Œ¥ë¥Ð¥Ã¥¯ */
+#define SIO_RDY_RCV		2U		/* Œõ¿®ÄÌÃÎ¥³¡Œ¥ë¥Ð¥Ã¥¯ */
+
+/*
+ *  SIO¥É¥é¥€¥Ð€ÎœéŽü²œ
+ */
+extern void		sio_initialize(intptr_t exinf);
+
+/*
+ *  SIO¥É¥é¥€¥Ð€ÎœªÎ»œèÍý
+ */
+extern void		sio_terminate(intptr_t exinf);
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€Î¥ª¡Œ¥×¥ó
+ */
+extern SIOPCB	*sio_opn_por(ID siopid, intptr_t exinf);
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€Î¥¯¥í¡Œ¥º
+ */
+extern void		sio_cls_por(SIOPCB *p_siopcb);
+
+/*
+ *  SIO€Î³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó
+ */
+extern void		sio_isr(intptr_t exinf);
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€Ø€ÎÊž»úÁ÷¿®
+ */
+extern bool_t	sio_snd_chr(SIOPCB *siopcb, char c);
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€«€é€ÎÊž»úŒõ¿®
+ */
+extern int_t	sio_rcv_chr(SIOPCB *siopcb);
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€«€é€Î¥³¡Œ¥ë¥Ð¥Ã¥¯€Îµö²Ä
+ */
+extern void		sio_ena_cbr(SIOPCB *siopcb, uint_t cbrtn);
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€«€é€Î¥³¡Œ¥ë¥Ð¥Ã¥¯€Î¶Ø»ß
+ */
+extern void		sio_dis_cbr(SIOPCB *siopcb, uint_t cbrtn);
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€«€é€ÎÁ÷¿®²ÄÇœ¥³¡Œ¥ë¥Ð¥Ã¥¯
+ */
+extern void		sio_irdy_snd(intptr_t exinf);
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€«€é€ÎŒõ¿®ÄÌÃÎ¥³¡Œ¥ë¥Ð¥Ã¥¯
+ */
+extern void		sio_irdy_rcv(intptr_t exinf);
+
+#endif /* TOPPERS_MACRO_ONLY */
+#endif /* TOPPERS_TARGET_SERIAL_H */
Index: /target/dummy_gcc/target_sil.h
===================================================================
--- /target/dummy_gcc/target_sil.h	(revision 7)
+++ /target/dummy_gcc/target_sil.h	(revision 7)
@@ -0,0 +1,76 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2013-2014 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$
+ */
+
+/*
+ *		sil.h€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô¡Ê¥À¥ß¡Œ¥¿¡Œ¥²¥Ã¥ÈÍÑ¡Ë
+ *
+ *  €³€Î¥€¥ó¥¯¥ë¡Œ¥É¥Õ¥¡¥€¥ë€Ï¡€sil.h€ÎÀèÆ¬€Ç¥€¥ó¥¯¥ë¡Œ¥É€µ€ì€ë¡¥ÂŸ€Î¥Õ¥¡
+ *  ¥€¥ë€«€é€ÏÄŸÀÜ¥€¥ó¥¯¥ë¡Œ¥É€¹€ë€³€È€Ï€Ê€€¡¥€³€Î¥Õ¥¡¥€¥ë€ò¥€¥ó¥¯¥ë¡Œ
+ *  ¥É€¹€ëÁ°€Ë¡€t_stddef.h€¬¥€¥ó¥¯¥ë¡Œ¥É€µ€ì€ë€Î€Ç¡€€œ€ì€é€Ë°ÍÂž€·€Æ€â
+ *  €è€€¡¥
+ */
+
+#ifndef TOPPERS_TARGET_SIL_H
+#define TOPPERS_TARGET_SIL_H
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  ÁŽ³ä¹þ€ß¥í¥Ã¥¯ŸõÂÖ€ÎÀ©žæ
+ */
+#define SIL_PRE_LOC		int_t intmask
+#define SIL_LOC_INT()	(intmask = 1)
+#define SIL_UNL_INT()	(intmask = 0)
+
+/*
+ *  ÈùŸ¯»þŽÖÂÔ€Á
+ */
+Inline void
+sil_dly_nse(ulong_t dlytim)
+{
+}
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  ¥×¥í¥»¥Ã¥µ€Î¥š¥ó¥Ç¥£¥¢¥ó
+ */
+#define SIL_ENDIAN_LITTLE			/* ¥ê¥È¥ë¥š¥ó¥Ç¥£¥¢¥ó */
+
+#endif /* TOPPERS_TARGET_SIL_H */
Index: /target/dummy_gcc/target_stddef.h
===================================================================
--- /target/dummy_gcc/target_stddef.h	(revision 7)
+++ /target/dummy_gcc/target_stddef.h	(revision 7)
@@ -0,0 +1,86 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2013-2014 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$
+ */
+
+/*
+ *		t_stddef.h€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô¡Ê¥À¥ß¡Œ¥¿¡Œ¥²¥Ã¥ÈÍÑ¡Ë
+ *
+ *  €³€Î¥€¥ó¥¯¥ë¡Œ¥É¥Õ¥¡¥€¥ë€Ï¡€t_stddef.h€ÎÀèÆ¬€Ç¥€¥ó¥¯¥ë¡Œ¥É€µ€ì€ë¡¥
+ *  ÂŸ€Î¥Õ¥¡¥€¥ë€«€é€ÏÄŸÀÜ¥€¥ó¥¯¥ë¡Œ¥É€¹€ë€³€È€Ï€Ê€€¡¥ÂŸ€Î¥€¥ó¥¯¥ë¡Œ¥É
+ *  ¥Õ¥¡¥€¥ë€ËÀèÎ©€Ã€ÆœèÍý€µ€ì€ë€¿€á¡€ÂŸ€Î¥€¥ó¥¯¥ë¡Œ¥É¥Õ¥¡¥€¥ë€Ë°ÍÂž€·
+ *  €Æ€Ï€Ê€é€Ê€€¡¥
+ */
+
+#ifndef TOPPERS_TARGET_STDDEF_H
+#define TOPPERS_TARGET_STDDEF_H
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È€òŒ±ÊÌ€¹€ë€¿€á€Î¥Þ¥¯¥í€ÎÄêµÁ
+ */
+#define TOPPERS_DUMMY				/* ¥·¥¹¥Æ¥àÎ¬ŸÎ */
+
+/*
+ *  ³«È¯ŽÄ¶­€Ç¶ŠÄÌ€ÊÄêµÁ
+ */
+#define TOPPERS_STDFLOAT_TYPE1
+#include "gcc/tool_stddef.h"
+
+/*
+ *  ³«È¯ŽÄ¶­€ÎÉžœà¥€¥ó¥¯¥ë¡Œ¥É¥Õ¥¡¥€¥ë€ÎÍøÍÑ
+ *
+ *  C99žßŽ¹€ÎÀ°¿ô·¿€ÎÄêµÁ€òstdint.h€«€éŒè€ê¹þ€à¡¥stdlib.h€Ï¡€abort€ÎÀë
+ *  žÀ€òŒè€ê¹þ€à€¿€á€Ë¥€¥ó¥¯¥ë¡Œ¥É€·€Æ€€€ë¡¥
+ */
+#ifndef TOPPERS_MACRO_ONLY
+#include <stdint.h>
+#include <stdlib.h>
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  ¥¢¥µ¡Œ¥·¥ç¥ó€ÎŒºÇÔ»þ€ÎŒÂ¹ÔÃæÃÇœèÍý
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+Inline void
+TOPPERS_assert_abort(void)
+{
+	abort();
+}
+
+#endif /* TOPPERS_MACRO_ONLY */
+#endif /* TOPPERS_TARGET_STDDEF_H */
Index: /target/dummy_gcc/target_syssvc.h
===================================================================
--- /target/dummy_gcc/target_syssvc.h	(revision 7)
+++ /target/dummy_gcc/target_syssvc.h	(revision 7)
@@ -0,0 +1,81 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2013-2014 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$
+ */
+
+/*
+ *		¥·¥¹¥Æ¥à¥µ¡Œ¥Ó¥¹€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô¡Ê¥À¥ß¡Œ¥¿¡Œ¥²¥Ã¥ÈÍÑ¡Ë
+ *
+ *  ¥·¥¹¥Æ¥à¥µ¡Œ¥Ó¥¹€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€Î¥€¥ó¥¯¥ë¡Œ¥É¥Õ¥¡¥€¥ë¡¥€³€Î¥Õ¥¡
+ *  ¥€¥ë€ÎÆâÍÆ€Ï¡€¥³¥ó¥Ý¡Œ¥Í¥ó¥Èµ­œÒ¥Õ¥¡¥€¥ë€Ëµ­œÒ€µ€ì¡€€³€Î¥Õ¥¡¥€¥ë€Ï
+ *  Ìµ€¯€Ê€ëž«¹þ€ß¡¥
+ */
+
+#ifndef TOPPERS_TARGET_SYSSVC_H
+#define TOPPERS_TARGET_SYSSVC_H
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°€ËŽØ€¹€ëÀßÄê
+ */
+#ifdef TOPPERS_ENABLE_TRACE
+#include "logtrace/trace_config.h"
+#endif /* TOPPERS_ENABLE_TRACE */
+
+/*
+ *  µ¯Æ°¥á¥Ã¥»¡Œ¥ž€Î¥¿¡Œ¥²¥Ã¥È¥·¥¹¥Æ¥àÌŸ
+ */
+#define TARGET_NAME	"Dummy Target"
+
+/*
+ *  ¥·¥¹¥Æ¥à¥í¥°€ÎÄã¥ì¥Ù¥ëœÐÎÏ€Î€¿€á€ÎÊž»úœÐÎÏ
+ *
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎÊýË¡€Ç¡€Êž»úc€òÉœŒš/œÐÎÏ/ÊÝÂž€¹€ë¡¥
+ */
+extern void	target_fput_log(char c);
+
+/*
+ *  ¥·¥ê¥¢¥ë¥Ý¡Œ¥È¿ô€ÎÄêµÁ
+ */
+#define TNUM_PORT		1		/* ¥µ¥Ý¡Œ¥È€¹€ë¥·¥ê¥¢¥ë¥Ý¡Œ¥È€Î¿ô */
+
+/*
+ *  ¥·¥¹¥Æ¥à¥í¥°¥¿¥¹¥¯ŽØÏ¢€ÎÄê¿ô€ÎÄêµÁ
+ */
+#define LOGTASK_STACK_SIZE	4096		/* ¥¹¥¿¥Ã¥¯ÎÎ°è€Î¥µ¥€¥º */
+
+#endif /* TOPPERS_TARGET_SYSSVC_H */
Index: /target/dummy_gcc/target_test.h
===================================================================
--- /target/dummy_gcc/target_test.h	(revision 7)
+++ /target/dummy_gcc/target_test.h	(revision 7)
@@ -0,0 +1,51 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2013-2014 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$
+ */
+
+/*
+ *		¥Æ¥¹¥È¥×¥í¥°¥é¥à€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÄêµÁ¡Ê¥À¥ß¡Œ¥¿¡Œ¥²¥Ã¥ÈÍÑ¡Ë
+ */
+
+#ifndef TOPPERS_TARGET_TEST_H
+#define TOPPERS_TARGET_TEST_H
+
+#define CPUEXC1					1
+#define RAISE_CPU_EXCEPTION		{ int *p = NULL; *p = 0; }
+
+#endif /* TOPPERS_TARGET_TEST_H */
Index: /target/dummy_gcc/target_timer.c
===================================================================
--- /target/dummy_gcc/target_timer.c	(revision 7)
+++ /target/dummy_gcc/target_timer.c	(revision 7)
@@ -0,0 +1,141 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2013-2014 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$
+ */
+
+/*
+ *		¥¿¥€¥Þ¥É¥é¥€¥Ð¡Ê¥À¥ß¡Œ¥¿¡Œ¥²¥Ã¥ÈÍÑ¡Ë
+ */
+
+#include "kernel_impl.h"
+#include "time_event.h"
+#include "target_timer.h"
+
+/*
+ *  ¥¿¥€¥Þ€Îµ¯Æ°œèÍý
+ */
+void
+target_timer_initialize(intptr_t exinf)
+{
+	CLOCK	cyc = TO_CLOCK(TIC_NUME, TIC_DENO);
+
+	assert(cyc <= MAX_CLOCK);
+}
+
+/*
+ *  ¥¿¥€¥Þ€ÎÄä»ßœèÍý
+ */
+void
+target_timer_terminate(intptr_t exinf)
+{
+}
+
+/*
+ *  ¥¿¥€¥Þ€ÎžœºßÃÍ€ÎÆÉœÐ€·
+ */
+CLOCK
+target_timer_get_current(void)
+{
+	return(0);
+}
+
+/*
+ *  ¥¿¥€¥Þ³ä¹þ€ßÍ×µá€Î¥Á¥§¥Ã¥¯
+ */
+bool_t
+target_timer_probe_int(void)
+{
+	return(false);
+}
+
+#ifdef TOPPERS_SUPPORT_OVRHDR
+
+/*
+ *  ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÎœéŽü²œœèÍý
+ */
+void
+target_ovrtimer_initialize(intptr_t exinf)
+{
+}
+
+/*
+ *  ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÎÄä»ßœèÍý
+ */
+void
+target_ovrtimer_terminate(intptr_t exinf)
+{
+}
+
+/*
+ *  ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÎÆ°ºî³«»Ï
+ */
+void
+target_ovrtimer_start(OVRTIM ovrtim)
+{
+}
+
+/*
+ *  ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÎÄä»ß
+ */
+OVRTIM
+target_ovrtimer_stop(void)
+{
+	return(0);
+}
+
+/*
+ *  ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÎžœºßÃÍ€ÎÆÉœÐ€·
+ */
+OVRTIM
+target_ovrtimer_get_current(void)
+{
+	return(0);
+}
+
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+
+/*
+ *  ¥¿¥€¥Þ³ä¹þ€ß¥Ï¥ó¥É¥é
+ */
+void
+target_timer_handler(void)
+{
+	i_begin_int(INTNO_TIMER);
+	signal_time();				/* ¥¿¥€¥à¥Æ¥£¥Ã¥¯€Î¶¡µë */
+	i_end_int(INTNO_TIMER);
+}
Index: /target/dummy_gcc/target_timer.cfg
===================================================================
--- /target/dummy_gcc/target_timer.cfg	(revision 7)
+++ /target/dummy_gcc/target_timer.cfg	(revision 7)
@@ -0,0 +1,18 @@
+/*
+ *  $Id$
+ */
+
+/*
+ *		¥¿¥€¥Þ¥É¥é¥€¥Ð¡Ê¥À¥ß¡Œ¥¿¡Œ¥²¥Ã¥ÈÍÑ¡Ë€Î¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+ */
+
+#include "target_timer.h"
+ATT_INI({ TA_NULL, 0, target_timer_initialize });
+ATT_TER({ TA_NULL, 0, target_timer_terminate });
+CFG_INT(INTNO_TIMER, { TA_ENAINT | INTATR_TIMER, INTPRI_TIMER });
+DEF_INH(INHNO_TIMER, { TA_NULL, target_timer_handler });
+
+#ifdef TOPPERS_SUPPORT_OVRHDR
+ATT_INI({ TA_NULL, 0, target_ovrtimer_initialize });
+ATT_TER({ TA_NULL, 0, target_ovrtimer_terminate });
+#endif /* TOPPERS_SUPPORT_OVRHDR */
Index: /target/dummy_gcc/target_timer.h
===================================================================
--- /target/dummy_gcc/target_timer.h	(revision 7)
+++ /target/dummy_gcc/target_timer.h	(revision 7)
@@ -0,0 +1,137 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2013-2014 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$
+ */
+
+/*
+ *		¥¿¥€¥Þ¥É¥é¥€¥Ð¡Ê¥À¥ß¡Œ¥¿¡Œ¥²¥Ã¥ÈÍÑ¡Ë
+ */
+
+#ifndef TOPPERS_TARGET_TIMER_H
+#define TOPPERS_TARGET_TIMER_H
+
+#include <sil.h>
+#include "dummy.h"
+
+/*
+ *  ¥¿¥€¥Þ³ä¹þ€ß¥Ï¥ó¥É¥éÅÐÏ¿€Î€¿€á€ÎÄê¿ô
+ */
+#define INHNO_TIMER		TINTNO_TIMER		/* ³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ */
+#define INTNO_TIMER		TINTNO_TIMER		/* ³ä¹þ€ßÈÖ¹æ */
+#define INTPRI_TIMER	(TMAX_INTPRI - 1)	/* ³ä¹þ€ßÍ¥ÀèÅÙ */
+#define INTATR_TIMER	TA_EDGE				/* ³ä¹þ€ßÂ°À­ */
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  ¥¿¥€¥ÞÃÍ€ÎÆâÉôÉœžœ€Î·¿
+ */
+typedef uint32_t	CLOCK;
+
+/*
+ *  ¥¿¥€¥ÞÃÍ€ÎÆâÉôÉœžœ€È¥ß¥êÉÃ¡Š¥Þ¥€¥¯¥íÉÃÃ±°Ì€È€ÎÊÑŽ¹
+ */
+#define TIMER_CLOCK				1000U
+#define TO_CLOCK(nume, deno)	((CLOCK)(TIMER_CLOCK * (nume) / (deno)))
+#define TO_USEC(clock)			((SYSUTM) clock)
+
+/*
+ *  ÀßÄê€Ç€­€ëºÇÂç€Î¥¿¥€¥ÞŒþŽü¡ÊÃ±°Ì€ÏÆâÉôÉœžœ¡Ë
+ */
+#define MAX_CLOCK		((CLOCK) 999999U)
+
+/*
+ *  ¥¿¥€¥Þ€Îµ¯Æ°œèÍý
+ *
+ *  ¥¿¥€¥Þ€òœéŽü²œ€·¡€ŒþŽüÅª€Ê¥¿¥€¥Þ³ä¹þ€ßÍ×µá€òÈ¯Àž€µ€»€ë¡¥
+ */
+extern void	target_timer_initialize(intptr_t exinf);
+
+/*
+ *  ¥¿¥€¥Þ€ÎÄä»ßœèÍý
+ *
+ *  ¥¿¥€¥Þ€ÎÆ°ºî€òÄä»ß€µ€»€ë¡¥
+ */
+extern void	target_timer_terminate(intptr_t exinf);
+
+/*
+ *  ¥¿¥€¥Þ€ÎžœºßÃÍ€ÎÆÉœÐ€·
+ */
+extern CLOCK target_timer_get_current(void);
+
+/*
+ *  ¥¿¥€¥Þ³ä¹þ€ßÍ×µá€Î¥Á¥§¥Ã¥¯
+ */
+extern bool_t target_timer_probe_int(void);
+
+#ifdef TOPPERS_SUPPORT_OVRHDR
+
+/*
+ *  ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÎœéŽü²œœèÍý
+ */
+extern void target_ovrtimer_initialize(intptr_t exinf);
+
+/*
+ *  ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÎÄä»ßœèÍý
+ */
+extern void target_ovrtimer_terminate(intptr_t exinf);
+
+/*
+ *  ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÎÆ°ºî³«»Ï
+ */
+extern void target_ovrtimer_start(OVRTIM ovrtim);
+
+/*
+ *  ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÎÄä»ß
+ */
+extern OVRTIM target_ovrtimer_stop(void);
+
+/*
+ *  ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÎžœºßÃÍ€ÎÆÉœÐ€·
+ */
+extern OVRTIM target_ovrtimer_get_current(void);
+
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+
+/*
+ *  ¥¿¥€¥Þ³ä¹þ€ß¥Ï¥ó¥É¥é
+ */
+extern void	target_timer_handler(void);
+
+#endif /* TOPPERS_MACRO_ONLY */
+#endif /* TOPPERS_TARGET_TIMER_H */
Index: /target/dummy_gcc/target_unrename.h
===================================================================
--- /target/dummy_gcc/target_unrename.h	(revision 7)
+++ /target/dummy_gcc/target_unrename.h	(revision 7)
@@ -0,0 +1,76 @@
+/* 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 dispatch
+#undef start_dispatch
+#undef exit_and_dispatch
+#undef ret_int
+#undef ret_exc
+#undef call_exit_kernel
+#undef start_r
+#undef target_initialize
+#undef target_exit
+
+/*
+ *  target_timer.c
+ */
+#undef target_timer_get_current
+#undef target_timer_probe_int
+#undef target_ovrtimer_start
+#undef target_ovrtimer_stop
+#undef target_ovrtimer_get_current
+
+/*
+ *  trace_config.c
+ */
+#undef log_dsp_enter
+#undef log_dsp_leave
+#undef log_inh_enter
+#undef log_inh_leave
+#undef log_exc_enter
+#undef log_exc_leave
+
+#ifdef TOPPERS_LABEL_ASM
+
+/*
+ *  target_config.c
+ */
+#undef _dispatch
+#undef _start_dispatch
+#undef _exit_and_dispatch
+#undef _ret_int
+#undef _ret_exc
+#undef _call_exit_kernel
+#undef _start_r
+#undef _target_initialize
+#undef _target_exit
+
+/*
+ *  target_timer.c
+ */
+#undef _target_timer_get_current
+#undef _target_timer_probe_int
+#undef _target_ovrtimer_start
+#undef _target_ovrtimer_stop
+#undef _target_ovrtimer_get_current
+
+/*
+ *  trace_config.c
+ */
+#undef _log_dsp_enter
+#undef _log_dsp_leave
+#undef _log_inh_enter
+#undef _log_inh_leave
+#undef _log_exc_enter
+#undef _log_exc_leave
+
+#endif /* TOPPERS_LABEL_ASM */
+
+
+#endif /* TOPPERS_TARGET_RENAME_H */
Index: /target/dve68k_gcc/MANIFEST
===================================================================
--- /target/dve68k_gcc/MANIFEST	(revision 7)
+++ /target/dve68k_gcc/MANIFEST	(revision 7)
@@ -0,0 +1,26 @@
+PACKAGE asp
+
+MANIFEST
+Makefile.target
+dve68k.h
+target.tf
+target_cfg1_out.h
+target_check.tf
+target_config.c
+target_config.h
+target_def.csv
+target_kernel.h
+target_rename.def
+target_rename.h
+target_serial.c
+target_serial.cfg
+target_serial.h
+target_sil.h
+target_stddef.h
+target_support.S
+target_syssvc.h
+target_test.h
+target_timer.c
+target_timer.cfg
+target_timer.h
+target_unrename.h
Index: /target/dve68k_gcc/Makefile.target
===================================================================
--- /target/dve68k_gcc/Makefile.target	(revision 7)
+++ /target/dve68k_gcc/Makefile.target	(revision 7)
@@ -0,0 +1,84 @@
+#
+#		Makefile€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô¡ÊDVE68K/40ÍÑ¡Ë
+#
+
+#
+#  ¥Ü¡Œ¥ÉÌŸ¡€¥×¥í¥»¥Ã¥µÌŸ¡€³«È¯ŽÄ¶­ÌŸ€ÎÄêµÁ
+#
+BOARD = dve68k
+PRC = m68k
+TOOL = gcc
+
+#
+#  ¥³¥ó¥Ñ¥€¥ë¥ª¥×¥·¥ç¥ó
+#
+INCLUDES := $(INCLUDES) -I$(TARGETDIR)
+
+#
+#  ¥«¡Œ¥Í¥ë€ËŽØ€¹€ëÄêµÁ
+#
+KERNEL_DIR := $(KERNEL_DIR) $(TARGETDIR)
+KERNEL_ASMOBJS := $(KERNEL_ASMOBJS) target_support.o
+KERNEL_COBJS := $(KERNEL_COBJS) target_config.o target_timer.o
+
+#
+#  ¥·¥¹¥Æ¥à¥µ¡Œ¥Ó¥¹€ËŽØ€¹€ëÄêµÁ
+#
+SYSSVC_DIR := $(SYSSVC_DIR) $(SRCDIR)/pdic/upd72001
+SYSSVC_COBJS := $(SYSSVC_COBJS) target_serial.o upd72001.o
+
+#
+#  ¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿ŽØ·ž€ÎÊÑ¿ô€ÎÄêµÁ
+#
+CFG_TABS := $(CFG_TABS) --cfg1-def-table $(TARGETDIR)/target_def.csv
+
+#
+#  ¥È¥ì¡Œ¥¹¥í¥°µ­Ï¿€Î¥µ¥ó¥×¥ë¥³¡Œ¥É€ËŽØ€¹€ëÄêµÁ
+#
+ifeq ($(ENABLE_TRACE),true)
+	COPTS := $(COPTS) -DTOPPERS_ENABLE_TRACE
+	KERNEL_DIR := $(KERNEL_DIR) $(SRCDIR)/arch/logtrace
+	KERNEL_COBJS := $(KERNEL_COBJS) trace_config.o trace_dump.o
+endif
+
+#
+#  ³Æ¥»¥°¥á¥ó¥È€Î³«»Ï¥¢¥É¥ì¥¹€ÎÄêµÁ
+#
+TEXT_START_ADDRESS = 00010000
+DATA_START_ADDRESS = 00100000
+
+#
+#  ¥ê¥ó¥«¥¹¥¯¥ê¥×¥È€ÎÄêµÁ
+#
+LDSCRIPT = $(SRCDIR)/arch/$(PRC)_$(TOOL)/m68kelf.ld
+
+#
+#  ¥¹¥¿¡Œ¥È¥¢¥Ã¥×¥â¥ž¥å¡Œ¥ë€ËŽØ€¹€ëÄêµÁ
+#
+#  m68kelf.ld€Ë¡ÖSTARTUP(start.o)¡×€òµ­œÒ€·€¿€¿€á¡€¥¹¥¿¡Œ¥È¥¢¥Ã¥×¥â¥ž¥å¡Œ
+#  ¥ë€ÎÌŸÁ°€òHIDDEN_OBJS€ËÄêµÁ€¹€ë¡¥€Þ€¿¡€LDFLAGS€Ë-nostdlib€òÄÉ²Ã€·€Æ€€€ë¡¥
+#
+HIDDEN_OBJS = start.o
+
+$(HIDDEN_OBJS): %.o: %.S
+	$(CC) -c $(CFLAGS) $(KERNEL_CFLAGS) $<
+
+$(HIDDEN_OBJS:.o=.d): %.d: %.S
+	@$(PERL) $(SRCDIR)/utils/makedep -C $(CC) $(MAKEDEP_OPTS) \
+		-O "$(CFLAGS) $(KERNEL_CFLAGS)" $< >> Makefile.depend
+
+LDFLAGS := -nostdlib $(LDFLAGS)
+CFG1_OUT_LDFLAGS := -nostdlib $(CFG1_OUT_LDFLAGS)
+LIBS := $(LIBS) -lgcc
+
+#
+#  °ÍÂžŽØ·ž€ÎÄêµÁ
+#
+cfg1_out.c: $(TARGETDIR)/target_def.csv
+kernel_cfg.timestamp: $(TARGETDIR)/target.tf
+$(OBJFILE): $(TARGETDIR)/target_check.tf
+
+#
+#  ¥×¥í¥»¥Ã¥µ°ÍÂžÉô€Î¥€¥ó¥¯¥ë¡Œ¥É
+#
+include $(SRCDIR)/arch/$(PRC)_$(TOOL)/Makefile.prc
Index: /target/dve68k_gcc/dve68k.h
===================================================================
--- /target/dve68k_gcc/dve68k.h	(revision 7)
+++ /target/dve68k_gcc/dve68k.h	(revision 7)
@@ -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-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$
+ */
+
+/*
+ *		DVE-68K/40 CPU¥Ü¡Œ¥É€Î¥Ï¡Œ¥É¥Š¥§¥¢»ñž»€ÎÄêµÁ
+ */
+
+#ifndef TOPPERS_DVE68K_H
+#define TOPPERS_DVE68K_H
+
+#include <sil.h>
+
+/*
+ *  ³ä¹þ€ßÈÖ¹æ¡Êintno¡Ë€ÎÄêµÁ
+ */
+#define TINTNO_ACF		1U			/* ACFAIL³ä¹þ€ß */
+#define TINTNO_ABT		2U			/* ¥¢¥Ü¡Œ¥È³ä¹þ€ß */
+#define TINTNO_SF		3U			/* SYSFAIL³ä¹þ€ß */
+#define TINTNO_BER		4U			/* ¥Ð¥¹¥š¥é¡Œ³ä¹þ€ß */
+#define TINTNO_IAK		5U			/* IAK³ä¹þ€ß */
+#define TINTNO_SRQ		6U			/* SRQ³ä¹þ€ß */
+#define TINTNO_SAK		7U			/* SAK³ä¹þ€ß */
+#define TINTNO_GP7		9U			/* GP7³ä¹þ€ß */
+#define TINTNO_DMA		10U			/* DMA³ä¹þ€ß */
+#define TINTNO_TT1		11U			/* ¥¿¥€¥Þ1³ä¹þ€ß */
+#define TINTNO_TT0		12U			/* ¥¿¥€¥Þ0³ä¹þ€ß */
+#define TINTNO_GP3		13U			/* ¥Õ¥é¥Ã¥·¥å¥á¥â¥ê³ä¹þ€ß */
+#define TINTNO_GP2		14U			/* SCSI³ä¹þ€ß */
+#define TINTNO_GP1		15U			/* Ethernet³ä¹þ€ß */
+#define TINTNO_GP0		16U			/* ¥·¥ê¥¢¥ëI/O³ä¹þ€ß */
+#define TINTNO_SWI7		17U			/* ¥œ¥Õ¥È¥Š¥§¥¢³ä¹þ€ß7 */
+#define TINTNO_SWI6		18U			/* ¥œ¥Õ¥È¥Š¥§¥¢³ä¹þ€ß6 */
+#define TINTNO_SWI5		19U			/* ¥œ¥Õ¥È¥Š¥§¥¢³ä¹þ€ß5 */
+#define TINTNO_SWI4		20U			/* ¥œ¥Õ¥È¥Š¥§¥¢³ä¹þ€ß4 */
+#define TINTNO_SWI3		21U			/* ¥œ¥Õ¥È¥Š¥§¥¢³ä¹þ€ß3 */
+#define TINTNO_SWI2		22U			/* ¥œ¥Õ¥È¥Š¥§¥¢³ä¹þ€ß2 */
+#define TINTNO_SWI1		23U			/* ¥œ¥Õ¥È¥Š¥§¥¢³ä¹þ€ß1 */
+#define TINTNO_SWI0		24U			/* ¥œ¥Õ¥È¥Š¥§¥¢³ä¹þ€ß0 */
+#define TINTNO_VM7		25U			/* VME³ä¹þ€ß7 */
+#define TINTNO_VM6		26U			/* VME³ä¹þ€ß6 */
+#define TINTNO_VM5		27U			/* VME³ä¹þ€ß5 */
+#define TINTNO_VM4		28U			/* VME³ä¹þ€ß4 */
+#define TINTNO_VM3		29U			/* VME³ä¹þ€ß3 */
+#define TINTNO_VM2		30U			/* VME³ä¹þ€ß2 */
+#define TINTNO_VM1		31U			/* VME³ä¹þ€ß1 */
+
+/*
+ *  ³ä¹þ€ß¥Ù¥¯¥È¥ë€ÎÀßÄêÃÍ€ÎÄêµÁ
+ */
+#define TVEC_G0I		0x40U		/* ¥°¥ë¡Œ¥×0³ä¹þ€ß¥Ù¥¯¥È¥ë */
+#define TVEC_G1I		0x48U		/* ¥°¥ë¡Œ¥×1³ä¹þ€ß¥Ù¥¯¥È¥ë */
+#define TVEC_SWI		0x50U		/* ¥œ¥Õ¥È¥Š¥§¥¢³ä¹þ€ß¥Ù¥¯¥È¥ë */
+#define TVEC_SPRI		0x40U		/* ¥¹¥×¥ê¥¢¥¹³ä¹þ€ß¥Ù¥¯¥È¥ë */
+
+/*
+ *  ³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ¡Êinhno¡Ë€ÎÄêµÁ
+ */
+#define TINHNO_ACF		0x47U		/* ACFAIL³ä¹þ€ß */
+#define TINHNO_ABT		0x46U		/* ¥¢¥Ü¡Œ¥È³ä¹þ€ß */
+#define TINHNO_SF		0x45U		/* SYSFAIL³ä¹þ€ß */
+#define TINHNO_BER		0x44U		/* ¥Ð¥¹¥š¥é¡Œ³ä¹þ€ß */
+#define TINHNO_IAK		0x43U		/* IAK³ä¹þ€ß */
+#define TINHNO_SRQ		0x42U		/* SRQ³ä¹þ€ß */
+#define TINHNO_SAK		0x41U		/* SAK³ä¹þ€ß */
+#define TINHNO_GP7		0x4fU		/* GP7³ä¹þ€ß */
+#define TINHNO_DMA		0x4eU		/* DMA³ä¹þ€ß */
+#define TINHNO_TT1		0x4dU		/* ¥¿¥€¥Þ1³ä¹þ€ß */
+#define TINHNO_TT0		0x4cU		/* ¥¿¥€¥Þ0³ä¹þ€ß */
+#define TINHNO_GP3		0x4bU		/* ¥Õ¥é¥Ã¥·¥å¥á¥â¥ê³ä¹þ€ß */
+#define TINHNO_GP2		0x4aU		/* SCSI³ä¹þ€ß */
+#define TINHNO_GP1		0x49U		/* Ethernet³ä¹þ€ß */
+#define TINHNO_GP0		0x48U		/* ¥·¥ê¥¢¥ëI/O³ä¹þ€ß */
+#define TINHNO_SWI7		0x57U		/* ¥œ¥Õ¥È¥Š¥§¥¢³ä¹þ€ß7 */
+#define TINHNO_SWI6		0x56U		/* ¥œ¥Õ¥È¥Š¥§¥¢³ä¹þ€ß6 */
+#define TINHNO_SWI5		0x55U		/* ¥œ¥Õ¥È¥Š¥§¥¢³ä¹þ€ß5 */
+#define TINHNO_SWI4		0x54U		/* ¥œ¥Õ¥È¥Š¥§¥¢³ä¹þ€ß4 */
+#define TINHNO_SWI3		0x53U		/* ¥œ¥Õ¥È¥Š¥§¥¢³ä¹þ€ß3 */
+#define TINHNO_SWI2		0x52U		/* ¥œ¥Õ¥È¥Š¥§¥¢³ä¹þ€ß2 */
+#define TINHNO_SWI1		0x51U		/* ¥œ¥Õ¥È¥Š¥§¥¢³ä¹þ€ß1 */
+#define TINHNO_SWI0		0x50U		/* ¥œ¥Õ¥È¥Š¥§¥¢³ä¹þ€ß0 */
+#define TINHNO_SPRI		0x40U		/* ¥¹¥×¥ê¥¢¥¹³ä¹þ€ß */
+
+/*
+ *  CPU¥Ü¡Œ¥ÉŸå€Î¥ì¥ž¥¹¥¿
+ */
+#define TADR_BOARD_REG0		0xfff48000
+#define TADR_BOARD_REG1		0xfff48004
+#define TADR_BOARD_REG2		0xfff48008
+
+/*
+ *  DGA-001€Î¥ì¥ž¥¹¥¿€Î¥¢¥É¥ì¥¹
+ */
+#define TADR_DGA_CSR0		0xfff44000
+#define TADR_DGA_CSR1		0xfff44004
+#define TADR_DGA_CSR3		0xfff4400c
+#define TADR_DGA_CSR4		0xfff44010
+#define TADR_DGA_CSR5		0xfff44014
+#define TADR_DGA_CSR12		0xfff44030
+#define TADR_DGA_CSR13		0xfff44034
+#define TADR_DGA_CSR14		0xfff44038
+#define TADR_DGA_CSR15		0xfff4403c
+#define TADR_DGA_CSR18		0xfff44048
+#define TADR_DGA_CSR19		0xfff4404c
+#define TADR_DGA_CSR20		0xfff44050
+#define TADR_DGA_CSR21		0xfff44054
+#define TADR_DGA_CSR23		0xfff4405c
+#define TADR_DGA_CSR24		0xfff44060
+#define TADR_DGA_IFR0		0xfff44070
+#define TADR_DGA_IFR3		0xfff4407c
+
+/*
+ *  DGA-001€Î³ä¹þ€ßÍ¥ÀèÅÙÀßÄê€Î€¿€á€ÎÄêµÁ
+ */
+#define TIRQ_NMI		(-7)		/* ¥Î¥ó¥Þ¥¹¥«¥Ö¥ë³ä¹þ€ß */
+#define TIRQ_LEVEL6		(-6)		/* ³ä¹þ€ß¥ì¥Ù¥ë6 */
+#define TIRQ_LEVEL5		(-5)		/* ³ä¹þ€ß¥ì¥Ù¥ë5 */
+#define TIRQ_LEVEL4		(-4)		/* ³ä¹þ€ß¥ì¥Ù¥ë4 */
+#define TIRQ_LEVEL3		(-3)		/* ³ä¹þ€ß¥ì¥Ù¥ë3 */
+#define TIRQ_LEVEL2		(-2)		/* ³ä¹þ€ß¥ì¥Ù¥ë2 */
+#define TIRQ_LEVEL1		(-1)		/* ³ä¹þ€ß¥ì¥Ù¥ë1 */
+
+/*
+ *  DGA€Ø€Î¥¢¥¯¥»¥¹ŽØ¿ô
+ */
+#define dga_rew_reg(addr)			sil_rew_mem(((uint32_t *) addr))
+#define dga_wrw_reg(addr, val)		sil_wrw_mem(((uint32_t *) addr), val)
+
+/*
+ *  DGA€Î¥ì¥ž¥¹¥¿€Ø€Î¥¢¥¯¥»¥¹ŽØ¿ô
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+Inline uint32_t
+dga_read(void *addr)
+{
+	return(dga_rew_reg(addr));
+}
+
+Inline void
+dga_write(void *addr, uint32_t val)
+{
+	dga_wrw_reg(addr, val);
+}
+
+Inline void
+dga_bit_or(void *addr, uint32_t bitpat)
+{
+	dga_write(addr, dga_read(addr) | bitpat);
+}
+
+Inline void
+dga_bit_and(void *addr, uint32_t bitpat)
+{
+	dga_write(addr, dga_read(addr) & bitpat);
+}
+
+Inline void
+dga_set_ilv(void *addr, uint_t shift, uint_t level)
+{
+	dga_write(addr, (dga_read(addr) & ~(0x07 << shift)) | (level << shift));
+} 
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  ŠÌPD72001¡ÊMPSC¡Ë€Î¥ì¥ž¥¹¥¿€Î¥¢¥É¥ì¥¹
+ */
+#define TADR_UPD72001_DATAA		0xfff45003U
+#define TADR_UPD72001_CTRLA		0xfff45007U
+#define TADR_UPD72001_DATAB		0xfff4500bU
+#define TADR_UPD72001_CTRLB		0xfff4500fU
+
+/*
+ *  ŠÌPD72001€Ø€Î¥¢¥¯¥»¥¹ŽØ¿ô
+ */
+#define upd72001_reb_reg(addr)			sil_reb_mem(((uint8_t *) addr))
+#define upd72001_wrb_reg(addr, val)		sil_wrb_mem(((uint8_t *) addr), val)
+
+/*
+ *  ³«È¯ŽÄ¶­°ÍÂž€ÎœèÍý
+ */
+#ifndef TOPPERS_MACRO_ONLY
+#ifdef TOPPERS_GDB_STUB				/* GDB¥¹¥¿¥Ö */
+
+Inline void
+dve68k_exit(void)
+{
+	Asm("trap #2");
+}
+
+Inline void
+dve68k_putc(char c)
+{
+	Asm("move.l %0, %%d1; trap #3"
+	  : /* no output */
+	  : "g"(c)
+	  : "d0", "d1", "d2", "d6", "d7");
+}
+
+#else /* TOPPERS_GDB_STUB */		/* €œ€ÎÂŸ€Î³«È¯ŽÄ¶­ */
+
+extern void		dve68k_exit(void) NoReturn;
+extern void		dve68k_putc(char c);
+
+#endif /* TOPPERS_GDB_STUB */
+#endif /* TOPPERS_MACRO_ONLY */
+#endif /* TOPPERS_DVE68K_H */
Index: /target/dve68k_gcc/target.tf
===================================================================
--- /target/dve68k_gcc/target.tf	(revision 7)
+++ /target/dve68k_gcc/target.tf	(revision 7)
@@ -0,0 +1,56 @@
+$ 
+$ 		¥Ñ¥¹2€Î¥¿¡Œ¥²¥Ã¥È°ÍÂž¥Æ¥ó¥×¥ì¡Œ¥È¡ÊDVE68K/40ÍÑ¡Ë
+$ 
+
+$ 
+$  ATT_ISR€Ç»ÈÍÑ€Ç€­€ë³ä¹þ€ßÈÖ¹æ€È€œ€ì€ËÂÐ±þ€¹€ë³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ
+$ 
+$INTNO_ATTISR_VALID = { 1,2,...,7;9,10,...,16;17,18,...,24 }$
+$INHNO_ATTISR_VALID = { 0x47,0x46,...,0x41;0x4f,0x4e,...,0x48;
+						0x57,0x56,...,0x50 }$
+
+$ 
+$  DEF_INT¡¿DEF_EXC€Ç»ÈÍÑ€Ç€­€ë³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ¡¿CPUÎã³°¥Ï¥ó¥É¥éÈÖ¹æ
+$ 
+$INHNO_DEFINH_VALID = { 0x10,0x11,...,0x1f;0x40,0x41,...,0xff }$
+$EXCNO_DEFEXC_VALID = { 0x02,0x03,...,0x0f;0x20,0x21,...,0x3f }$
+
+$ 
+$  CFG_INT€Ç»ÈÍÑ€Ç€­€ë³ä¹þ€ßÈÖ¹æ€È³ä¹þ€ßÍ¥ÀèÅÙ
+$ 
+$INTNO_CFGINT_VALID = { 1,2,...,7;9,10,...,31 }$
+$INTPRI_CFGINT_VALID = { -7,-6,...,-1 }$
+
+$ 
+$  Éžœà¥Æ¥ó¥×¥ì¡Œ¥È¥Õ¥¡¥€¥ë€Î¥€¥ó¥¯¥ë¡Œ¥É
+$ 
+$INCLUDE "kernel/kernel.tf"$
+
+/*$NL$
+$SPC$*  Target-dependent Definitions (DVE68K/40)$NL$
+$SPC$*/$NL$
+$NL$
+
+$ 
+$   CFG_INT€Î¥¿¡Œ¥²¥Ã¥È°ÍÂž€Î¥š¥é¡Œ¥Á¥§¥Ã¥¯€È_kernel_bitpat_cfgint€ÎÀžÀ®
+$ 
+$bitpat_cfgint = 0$
+
+$FOREACH intno INT.ORDER_LIST$
+	$bitpat = (1 << (32 - INT.INTNO[intno]))$
+	$bitpat_cfgint = bitpat_cfgint | bitpat$
+
+	$IF (bitpat & DGA_INT_TRG_LEVEL) != 0$
+		$IF (INT.INTATR[intno] & TA_EDGE) != 0$
+			$ERROR INT.TEXT_LINE[intno]$E_RSATR: $FORMAT("Edge trigger (TA_EDGE) is not supported for intno `%1%\' in CFG_INT", INT.INTNO[intno])$$END$
+		$END$
+	$ELSE$
+	$IF (bitpat & DGA_INT_TRG_EDGE) != 0$
+		$IF (INT.INTATR[intno] & TA_EDGE) == 0$
+			$ERROR INT.TEXT_LINE[intno]$E_RSATR: $FORMAT("Level trigger is not supported for intno `%1%\' in CFG_INT", INT.INTNO[intno])$$END$
+		$END$
+	$END$
+	$END$
+$END$
+const uint32_t	_kernel_bitpat_cfgint = UINT32_C($FORMAT("0x%08x", bitpat_cfgint)$);
+$NL$
Index: /target/dve68k_gcc/target_cfg1_out.h
===================================================================
--- /target/dve68k_gcc/target_cfg1_out.h	(revision 7)
+++ /target/dve68k_gcc/target_cfg1_out.h	(revision 7)
@@ -0,0 +1,9 @@
+/*
+ *  @(#) $Id$
+ */
+
+/*
+ *		cfg1_out.c€Î¥ê¥ó¥¯€ËÉ¬Í×€Ê¥¹¥¿¥Ö€ÎÄêµÁ
+ */
+
+#include "m68k_gcc/prc_cfg1_out.h"
Index: /target/dve68k_gcc/target_check.tf
===================================================================
--- /target/dve68k_gcc/target_check.tf	(revision 7)
+++ /target/dve68k_gcc/target_check.tf	(revision 7)
@@ -0,0 +1,8 @@
+$ 
+$ 		¥Ñ¥¹3€Î¥¿¡Œ¥²¥Ã¥È°ÍÂž¥Æ¥ó¥×¥ì¡Œ¥È¡ÊDVE68K/40ÍÑ¡Ë
+$ 
+
+$ 
+$  Éžœà¥Æ¥ó¥×¥ì¡Œ¥È¥Õ¥¡¥€¥ë€Î¥€¥ó¥¯¥ë¡Œ¥É
+$ 
+$INCLUDE "kernel/kernel_check.tf"$
Index: /target/dve68k_gcc/target_config.c
===================================================================
--- /target/dve68k_gcc/target_config.c	(revision 7)
+++ /target/dve68k_gcc/target_config.c	(revision 7)
@@ -0,0 +1,222 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥¿¡Œ¥²¥Ã¥È°ÍÂž¥â¥ž¥å¡Œ¥ë¡ÊDVE68K/40ÍÑ¡Ë
+ */
+
+#include "kernel_impl.h"
+#include <sil.h>
+
+/*
+ *  ¥×¥í¥»¥Ã¥µŒ±ÊÌ€Î€¿€á€ÎÊÑ¿ô¡Ê¥Þ¥ë¥Á¥×¥í¥»¥Ã¥µÂÐ±þ¡Ë
+ */
+uint_t	board_id;			/* ¥Ü¡Œ¥ÉID */
+void	*board_addr;		/* ¥í¡Œ¥«¥ë¥á¥â¥ê€ÎÀèÆ¬¥¢¥É¥ì¥¹ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎœéŽü²œ
+ */
+void
+target_initialize(void)
+{
+	/*
+	 *  ¥×¥í¥»¥Ã¥µ°ÍÂž€ÎœéŽü²œ
+	 */
+	prc_initialize();
+
+	/*
+	 *  ¥×¥í¥»¥Ã¥µŒ±ÊÌ€Î€¿€á€ÎÊÑ¿ô€ÎœéŽü²œ
+	 */
+	board_id = ((uint_t)(sil_rew_mem((void *) TADR_BOARD_REG0)) & 0x1fU);
+	board_addr = (void *)(board_id << 24);
+
+	/*
+	 *  ³ä¹þ€ßŽØÏ¢€ÎœéŽü²œ
+	 *
+	 *  ³ä¹þ€ßÂ°À­€¬ÀßÄê€µ€ì€Æ€€€ë€«€òÈœÊÌ€¹€ë€¿€á€ÎÊÑ¿ô€òœéŽü²œ€¹€ë¡¥
+	 *  €Þ€¿¡€€¹€Ù€Æ€Î³ä¹þ€ß€ò¥Þ¥¹¥¯¡Š¥¯¥ê¥¢€·¡€³ä¹þ€ß¥Ù¥¯¥È¥ë€òÀßÄê€¹
+	 *  €ë¡¥
+	 */
+	dga_write((void *) TADR_DGA_CSR21, 0U);
+	dga_write((void *) TADR_DGA_CSR23, ~0U);
+	dga_write((void *) TADR_DGA_CSR19, (TVEC_G0I << 24) | (TVEC_G1I << 16)
+										| (TVEC_SWI << 8) | TVEC_SPRI);
+
+	/*
+	 *  ¥¢¥Ü¡Œ¥È³ä¹þ€ß€ÎÀßÄê¡ÊNMI¡Ë
+	 *
+	 *  ¥¢¥Ü¡Œ¥È³ä¹þ€ß€ò¥š¥Ã¥ž¥È¥ê¥¬¡€³ä¹þ€ß¥ì¥Ù¥ë€òNMI€ËÀßÄê€·¡€¥Þ¥¹¥¯
+	 *  €ò²òœü€¹€ë¡¥
+	 */
+	x_config_int(TINTNO_ABT, TA_EDGE, TIRQ_NMI);
+
+	/*
+	 *  ¥á¥â¥êÎÎ°è€ÎÀßÄê
+	 *
+	 *  ¥í¡Œ¥«¥ë¥á¥â¥ê€ÎVME¥Ð¥¹Ÿå€Ç€ÎÀèÆ¬¥¢¥É¥ì¥¹€È¥µ¥€¥º¡Ê16MB¡Ë€·¡€¥¢
+	 *  ¥¯¥»¥¹€òŒõ€±ÉÕ€±€ë€è€Š€ËÀßÄê€¹€ë¡¥€Þ€¿¡€VME¥Ð¥¹€«€é³ÈÄ¥¥¢¥É¥ì¥¹
+	 *  ¥¢¥¯¥»¥¹€òŒõ€±ÉÕ€±€ë€è€Š€Ë€ËÀßÄê€¹€ë¡¥
+	 */
+	dga_write((void *) TADR_DGA_CSR4, (uint32_t) board_addr | 0x00ffU);
+	dga_write((void *) TADR_DGA_CSR5, 0x0000012fU);
+
+	/*
+	 *  ¥€¥ó¥¿¥Õ¥§¡Œ¥¹¥ì¥ž¥¹¥¿¡ÊIFR¡Ë€ÎÀßÄê
+	 *
+	 *  ¥€¥ó¥¿¥Õ¥§¡Œ¥¹¥ì¥ž¥¹¥¿€Î¥Ù¡Œ¥¹¥¢¥É¥ì¥¹€òÀßÄê€¹€ë¡¥€Þ€¿¡€¥€¥ó¥¿
+	 *  ¥Õ¥§¡Œ¥¹¥ì¥ž¥¹¥¿0€Î¥µ¡Œ¥Ó¥¹¥ê¥¯¥š¥¹¥È¥Õ¥é¥°€ò¥¯¥ê¥¢¡¥¥€¥ó¥¿¥Õ¥§¡Œ
+	 *  ¥¹¥ì¥ž¥¹¥¿3€Ë¥Ü¡Œ¥É€ÎIDÈÖ¹æ€òÀßÄê¡¥
+	 */
+	dga_write((void *) TADR_DGA_CSR3, (board_id << 4) | 0x3U);
+	dga_write((void *) TADR_DGA_IFR0, 0x80000000U);
+	dga_write((void *) TADR_DGA_IFR3, board_id);
+
+	/*
+	 *  ¥é¥Š¥ó¥É¥í¥Ó¥ó¥â¡Œ¥É€ËÀßÄê¡Ê¥Þ¥ë¥Á¥×¥í¥»¥Ã¥µÂÐ±þ¡Ë
+	 */
+	dga_write((void *) TADR_DGA_CSR1,
+						(dga_read((void *) TADR_DGA_CSR1) & 0xffeffcffU)
+									| (1U << 20) | ((board_id % 4) << 8));
+}
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎœªÎ»œèÍý
+ */
+void
+target_exit(void)
+{
+	/*
+	 *  ¥×¥í¥»¥Ã¥µ°ÍÂž€ÎœªÎ»œèÍý
+	 */
+	prc_terminate();
+
+	/*
+	 *  €¹€Ù€Æ€Î³ä¹þ€ß€ò¥Þ¥¹¥¯¡Š¥¯¥ê¥¢€¹€ë¡¥
+	 */
+	dga_write((void *) TADR_DGA_CSR21, 0U);
+	dga_write((void *) TADR_DGA_CSR23, ~0U);
+
+	/*
+	 *  ³«È¯ŽÄ¶­°ÍÂž€ÎœªÎ»œèÍý
+	 */
+	dve68k_exit();
+}
+
+/*
+ *  ¥·¥¹¥Æ¥à¥í¥°€ÎÄã¥ì¥Ù¥ëœÐÎÏ€Î€¿€á€ÎÊž»úœÐÎÏ
+ */
+void
+target_fput_log(char c)
+{
+	if (c == '\n') {
+		dve68k_putc('\r');
+	}
+	dve68k_putc(c);
+}
+
+/*
+ *  ³ä¹þ€ßÍ×µá¥é¥€¥ó€ÎÂ°À­€ÎÀßÄê
+ *
+ *  ASP¥«¡Œ¥Í¥ë€Ç€ÎÍøÍÑ€òÁÛÄê€·€Æ¡€¥Ñ¥é¥á¡Œ¥¿¥š¥é¡Œ€Ï¥¢¥µ¡Œ¥·¥ç¥ó€Ç¥Á¥§¥Ã
+ *  ¥¯€·€Æ€€€ë¡¥cfg_int¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€òÀß€±€ëŸì¹ç€Ë€Ï¡€¥š¥é¡Œ€òÊÖ€¹€è€Š
+ *  €Ë€¹€Ù€­€Ç€¢€í€Š¡¥
+ */
+void
+x_config_int(INTNO intno, ATR intatr, PRI intpri)
+{
+	uint32_t	bitpat = DGA_INT_BITPAT(intno);
+
+	assert(VALID_INTNO_CFGINT(intno));
+	assert(TIRQ_NMI <= intpri && intpri <= TIRQ_LEVEL1);
+
+	/*
+	 *  ³ä¹þ€ß€Î¥Þ¥¹¥¯
+	 *
+	 *  ³ä¹þ€ß€òŒõ€±ÉÕ€±€¿€Þ€Þ¡€¥ì¥Ù¥ë¥È¥ê¥¬¡¿¥š¥Ã¥ž¥È¥ê¥¬€ÎÀßÄê€ä¡€³ä
+	 *  ¹þ€ßÍ¥ÀèÅÙ€ÎÀßÄê€ò¹Ô€Š€Î€ÏŽíž±€Ê€¿€á¡€³ä¹þ€ßÂ°À­€Ë€«€«€ï€é€º¡€
+	 *  °ìÃ¶¥Þ¥¹¥¯€¹€ë¡¥
+	 */
+	(void) x_disable_int(intno);
+
+	/*
+	 *  ¥ì¥Ù¥ë¥È¥ê¥¬¡¿¥š¥Ã¥ž¥È¥ê¥¬€ÎÀßÄê
+	 */
+	if ((bitpat & DGA_INT_TRG_CONF) != 0U) {
+		/*
+		 *  €€€º€ì€Ë€âÀßÄê€Ç€­€ëŸì¹ç
+		 */
+		if ((intatr & TA_EDGE) != 0U) {
+			dga_bit_or((void *) TADR_DGA_CSR18, (1U << (24 - (intno))));
+			x_clear_int(intno);
+		}
+		else {
+			dga_bit_and((void *) TADR_DGA_CSR18, ~(1U << (24 - (intno))));
+		}
+	}
+	else if ((bitpat & DGA_INT_TRG_EDGE) != 0U) {
+		/*
+		 *  ¥š¥Ã¥ž¥È¥ê¥¬€ËžÇÄê€µ€ì€Æ€€€ëŸì¹ç
+		 */
+		assert((intatr & TA_EDGE) != 0U);
+		x_clear_int(intno);
+	}
+	else {
+		/*
+		 *  ¥ì¥Ù¥ë¥È¥ê¥¬€ËžÇÄê€µ€ì€Æ€€€ëŸì¹ç
+		 */
+		assert((intatr & TA_EDGE) == 0U);
+	}
+
+	/*
+	 *  ³ä¹þ€ßÍ¥ÀèÅÙ€ÎÀßÄê
+	 */
+	dga_set_ilv((void *)(TADR_DGA_CSR24 + (intno - 1) / 8 * 4),
+				(uint_t)(((32 - intno) % 8) * 4), (uint_t)(7 + intpri));
+
+	/*
+	 *  ³ä¹þ€ß€Î¥Þ¥¹¥¯²òœü¡ÊÉ¬Í×€ÊŸì¹ç¡Ë
+ 	 */
+	if ((intatr & TA_ENAINT) != 0U) {
+		(void) x_enable_int(intno);
+	}
+}
Index: /target/dve68k_gcc/target_config.h
===================================================================
--- /target/dve68k_gcc/target_config.h	(revision 7)
+++ /target/dve68k_gcc/target_config.h	(revision 7)
@@ -0,0 +1,267 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥¿¡Œ¥²¥Ã¥È°ÍÂž¥â¥ž¥å¡Œ¥ë¡ÊDVE-68K/40ÍÑ¡Ë
+ *
+ *  ¥«¡Œ¥Í¥ë€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€Î¥€¥ó¥¯¥ë¡Œ¥É¥Õ¥¡¥€¥ë¡¥kernel_impl.h€Î¥¿¡Œ
+ *  ¥²¥Ã¥È°ÍÂžÉô€Î°ÌÃÖÉÕ€±€È€Ê€ë¡¥
+ */
+
+#ifndef TOPPERS_TARGET_CONFIG_H
+#define TOPPERS_TARGET_CONFIG_H
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È¥·¥¹¥Æ¥à€Î¥Ï¡Œ¥É¥Š¥§¥¢»ñž»€ÎÄêµÁ
+ */
+#include "dve68k.h"
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥ÈÄêµÁ€Î¥ª¥Ö¥ž¥§¥¯¥ÈÂ°À­
+ */
+#define TARGET_INHATR	TA_NONKERNEL	/* ¥«¡Œ¥Í¥ëŽÉÍý³°€Î³ä¹þ€ß */
+
+/*
+ *  ¥š¥é¡Œ¥Á¥§¥Ã¥¯ÊýË¡€Î»ØÄê
+ */
+#define CHECK_STKSZ_ALIGN	4	/* ¥¹¥¿¥Ã¥¯¥µ¥€¥º€Î¥¢¥é¥€¥óÃ±°Ì */
+#define CHECK_FUNC_ALIGN	2	/* ŽØ¿ô€Î¥¢¥é¥€¥óÃ±°Ì */
+#define CHECK_FUNC_NONNULL		/* ŽØ¿ô€ÎÈóNULL¥Á¥§¥Ã¥¯ */
+#define CHECK_STACK_ALIGN	4	/* ¥¹¥¿¥Ã¥¯ÎÎ°è€Î¥¢¥é¥€¥óÃ±°Ì */
+#define CHECK_STACK_NONNULL		/* ¥¹¥¿¥Ã¥¯ÎÎ°è€ÎÈóNULL¥Á¥§¥Ã¥¯ */
+#define CHECK_MPF_ALIGN		4	/* žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÎÎ°è€Î¥¢¥é¥€¥óÃ±°Ì */
+#define CHECK_MPF_NONNULL		/* žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÎÎ°è€ÎÈóNULL¥Á¥§¥Ã¥¯ */
+#define CHECK_MB_ALIGN		4	/* ŽÉÍýÎÎ°è€Î¥¢¥é¥€¥óÃ±°Ì */
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°€ËŽØ€¹€ëÀßÄê
+ */
+#ifdef TOPPERS_ENABLE_TRACE
+#include "logtrace/trace_config.h"
+#endif /* TOPPERS_ENABLE_TRACE */
+
+/*
+ *  ASP¥«¡Œ¥Í¥ëÆ°ºî»þ€Î¥á¥â¥ê¥Þ¥Ã¥×€ÈŽØÏ¢€¹€ëÄêµÁ
+ *
+ *	00000000 - 0000ffff		ROM¥â¥Ë¥¿¡¿¥¹¥¿¥Ö¥ï¡Œ¥¯¥š¥ê¥¢¡Ê64KB¡Ë
+ *	00010000 - 000fffff		¥³¡Œ¥ÉÎÎ°è¡ÊÌó1MB¡Ë
+ *	00100000 -				¥Ç¡Œ¥¿ÎÎ°è¡ÊÌó3MB¡Ë
+ *			 - 003fffff		¥Ç¥Õ¥©¥ë¥È€ÎÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ€Î¥¹¥¿¥Ã¥¯ÎÎ°è
+ */
+
+/*
+ *  ¥Ç¥Õ¥©¥ë¥È€ÎÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ€Î¥¹¥¿¥Ã¥¯ÎÎ°è€ÎÄêµÁ
+ */
+#define DEFAULT_ISTKSZ		0x2000U
+#define DEFAULT_ISTK		(void *)(0x00400000U - DEFAULT_ISTKSZ)
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  ¥×¥í¥»¥Ã¥µŒ±ÊÌ€Î€¿€á€ÎÊÑ¿ô¡Ê¥Þ¥ë¥Á¥×¥í¥»¥Ã¥µÂÐ±þ¡Ë
+ */
+extern uint_t	board_id;		/* ¥Ü¡Œ¥ÉID */
+extern void		*board_addr;	/* ¥í¡Œ¥«¥ë¥á¥â¥ê€ÎÀèÆ¬¥¢¥É¥ì¥¹ */
+
+/*
+ *  ³ä¹þ€ßÈÖ¹æ€ÎÈÏ°Ï€ÎÈœÄê
+ *
+ *  ¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó€òµá€á€ë€Î€òÍÆ°×€Ë€¹€ë€¿€á€Ë¡€8€Ï·çÈÖ€Ë€Ê€Ã€Æ€€€ë¡¥
+ */
+#define VALID_INTNO(intno)	(1U <= (intno) && (intno) <= 31U && (intno) != 8U)
+#define	VALID_INTNO_CREISR(intno)	VALID_INTNO(intno)
+#define VALID_INTNO_DISINT(intno)	VALID_INTNO(intno)
+#define VALID_INTNO_CFGINT(intno)	VALID_INTNO(intno)
+
+/*
+ *  ³ä¹þ€ßÍ×µá€òÁàºî€¹€ë€¿€á€Î¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó€òµá€á€ë¥Þ¥¯¥í
+ *
+ *  ¥·¥Õ¥È±é»»€ÎÃÙ€€¥×¥í¥»¥Ã¥µ€Ç¡€¥á¥â¥ê€ËÍŸÍµ€¬€¢€ëŸì¹ç€Ë€Ï¡€Éœ€ò°ú€¯
+ *  ·Á€ÇŒÂÁõ€·€¿Êý€¬€è€€€À€í€Š¡¥Éœ€ò°ú€¯€Ê€é¡€³ä¹þ€ßÈÖ¹æ8€ò·çÈÖ€Ë€¹€ë
+ *  É¬Í×€Ï€Ê€€¡¥
+ */
+#define DGA_INT_BITPAT(intno)	(1U << (32U - (intno)))
+
+/*
+ *  ¥ì¥Ù¥ë¥È¥ê¥¬¡¿¥š¥Ã¥ž¥È¥ê¥¬€¬ÀßÄê€Ç€­€ë€«€ÎÈœÄêÍÑÄê¿ô
+ */
+#define DGA_INT_TRG_CONF	(0xe0000000U)	/* €€€º€ì€Ë€âÀßÄê€Ç€­€ë */
+#define DGA_INT_TRG_LEVEL	(0x108f00feU)	/* ¥ì¥Ù¥ë¥È¥ê¥¬€ËžÇÄê */
+#define DGA_INT_TRG_EDGE	(0x0e70ff00U)	/* ¥š¥Ã¥ž¥È¥ê¥¬€ËžÇÄê */
+
+/*
+ *  ³ä¹þ€ßÂ°À­€¬ÀßÄê€µ€ì€Æ€€€ë€«€òÈœÊÌ€¹€ë€¿€á€ÎÊÑ¿ô¡Êkernel_cfg.c¡Ë
+ */
+extern const uint32_t	bitpat_cfgint;
+
+/*
+ *  ³ä¹þ€ßÍ×µá¶Ø»ß¥Õ¥é¥°€Î¥»¥Ã¥È
+ *
+ *  ³ä¹þ€ßÂ°À­€¬ÀßÄê€µ€ì€Æ€€€Ê€€³ä¹þ€ßÍ×µá¥é¥€¥ó€ËÂÐ€·€Æ³ä¹þ€ßÍ×µá¶Ø»ß
+ *  ¥Õ¥é¥°€ò¥»¥Ã¥È€·€è€Š€È€·€¿Ÿì¹ç€Ë€Ï¡€false€òÊÖ€¹¡¥
+ */
+Inline bool_t
+x_disable_int(INTNO intno)
+{
+	uint32_t	bitpat = DGA_INT_BITPAT(intno);
+
+	if ((bitpat_cfgint & bitpat) == 0U) {
+		return(false);
+	}
+	dga_bit_and((void *) TADR_DGA_CSR21, ~bitpat);
+	return(true);
+}
+
+#define t_disable_int(intno)	x_disable_int(intno)
+#define i_disable_int(intno)	x_disable_int(intno)
+
+/*
+ *  ³ä¹þ€ßÍ×µá¶Ø»ß¥Õ¥é¥°€Î¥¯¥ê¥¢
+ *
+ *  ³ä¹þ€ßÂ°À­€¬ÀßÄê€µ€ì€Æ€€€Ê€€³ä¹þ€ßÍ×µá¥é¥€¥ó€ËÂÐ€·€Æ³ä¹þ€ßÍ×µá¶Ø»ß
+ *  ¥Õ¥é¥°€ò¥¯¥ê¥¢€·€è€Š€È€·€¿Ÿì¹ç€Ë€Ï¡€false€òÊÖ€¹¡¥
+ */
+Inline bool_t
+x_enable_int(INTNO intno)
+{
+	uint32_t	bitpat = DGA_INT_BITPAT(intno);
+
+	if ((bitpat_cfgint & bitpat) == 0U) {
+		return(false);
+	}
+	dga_bit_or((void *) TADR_DGA_CSR21, bitpat);
+	return(true);
+}
+
+#define t_enable_int(intno)		x_enable_int(intno)
+#define i_enable_int(intno)		x_enable_int(intno)
+
+/*
+ *  ³ä¹þ€ßÍ×µá€Î¥¯¥ê¥¢
+ */
+Inline void
+x_clear_int(INTNO intno)
+{
+	dga_write((void *) TADR_DGA_CSR23, DGA_INT_BITPAT(intno));
+}
+
+#define t_clear_int(intno)		x_clear_int(intno)
+#define i_clear_int(intno)		x_clear_int(intno)
+
+/*
+ *  ³ä¹þ€ßÍ×µá€Î¥Á¥§¥Ã¥¯
+ */
+Inline bool_t
+x_probe_int(INTNO intno)
+{
+	return((dga_read((void *) TADR_DGA_CSR20) & DGA_INT_BITPAT(intno)) != 0U);
+}
+
+#define t_probe_int(intno)		x_probe_int(intno)
+#define i_probe_int(intno)		x_probe_int(intno)
+
+/*
+ *  ³ä¹þ€ßÍ×µá¥é¥€¥ó€ÎÂ°À­€ÎÀßÄê
+ *
+ *  DVE-68K/40€ÎIRC€Ç€Ï¡€³ä¹þ€ßÍ×µá¥é¥€¥ó€Î³ä¹þ€ßÍ¥ÀèÅÙ€ËNMI€ò»ØÄê€¹€ë
+ *  €³€È€¬€Ç€­€¿€á¡€-7€òÍ¿€š€ë€ÈNMI€ËÀßÄê€µ€ì€ë€³€È€È€¹€ë¡Ê¥¿¡Œ¥²¥Ã¥ÈÄê
+ *  µÁ€Î³ÈÄ¥¡Ë¡¥
+ */
+extern void	x_config_int(INTNO intno, ATR intatr, PRI intpri);
+
+/*
+ *  ³ä¹þ€ß¥Ï¥ó¥É¥é€ÎÆþžý€ÇÉ¬Í×€ÊIRCÁàºî
+ *
+ *  ¥š¥Ã¥ž¥È¥ê¥¬€ÎŸì¹ç€Ë€Ï¡€³ä¹þ€ßÍ×µá€ò¥¯¥ê¥¢€¹€ë¡¥¥š¥Ã¥ž¥È¥ê¥¬€«¥ì¥Ù
+ *  ¥ë¥È¥ê¥¬€«€¬ÀßÄê€Ç€­€ëŸì¹ç€â¡€žœºß€ÎÀßÄêÃÍ€òž«€º€Ë¥¯¥ê¥¢€·€Æ€€€ë¡¥
+ *  ¥ì¥Ù¥ë¥È¥ê¥¬€ÎŸì¹ç€â¥¯¥ê¥¢œèÍý€ò€·€Æº¹€·»Ù€š€Ê€€€¬¡€ºÇÅ¬²œ€ÇŸÃ€š€ë
+ *  €³€È€òŽüÂÔ€·€Æ¡€¥¯¥ê¥¢€·€Ê€€€³€È€È€·€Æ€€€ë¡¥
+ */
+Inline void
+i_begin_int(INTNO intno)
+{
+	if ((DGA_INT_BITPAT(intno) & (DGA_INT_TRG_CONF | DGA_INT_TRG_EDGE))
+																!= 0U) {
+		i_clear_int(intno);
+	}
+}
+
+/*
+ *  ³ä¹þ€ß¥Ï¥ó¥É¥é€ÎœÐžý€ÇÉ¬Í×€ÊIRCÁàºî
+ *
+ *  DVE-68K/40€Ç€ÏÉ¬Í×€ÊIRCÁàºî€Ï€Ê€€¡¥
+ */
+Inline void
+i_end_int(INTNO intno)
+{
+}
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È¥·¥¹¥Æ¥à°ÍÂž€ÎœéŽü²œ
+ */
+extern void	target_initialize(void);
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È¥·¥¹¥Æ¥à€ÎœªÎ»
+ *
+ *  ¥·¥¹¥Æ¥à€òœªÎ»€¹€ë»þ€Ë»È€Š¡¥
+ */
+extern void	target_exit(void) NoReturn;
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  ÈùŸ¯»þŽÖÂÔ€Á€Î€¿€á€ÎÄêµÁ¡ÊËÜÍè€ÏSIL€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô¡Ë
+ */
+#define SIL_DLY_TIM1	420
+#define SIL_DLY_TIM2	90
+
+/*
+ *  ¥×¥í¥»¥Ã¥µ°ÍÂž¥â¥ž¥å¡Œ¥ë¡ÊM68040ÍÑ¡Ë
+ */
+#include "m68k_gcc/prc_config.h"
+
+#endif /* TOPPERS_TARGET_CONFIG_H */
Index: /target/dve68k_gcc/target_def.csv
===================================================================
--- /target/dve68k_gcc/target_def.csv	(revision 7)
+++ /target/dve68k_gcc/target_def.csv	(revision 7)
@@ -0,0 +1,3 @@
+DGA_INT_TRG_CONF,DGA_INT_TRG_CONF
+DGA_INT_TRG_LEVEL,DGA_INT_TRG_LEVEL
+DGA_INT_TRG_EDGE,DGA_INT_TRG_EDGE
Index: /target/dve68k_gcc/target_kernel.h
===================================================================
--- /target/dve68k_gcc/target_kernel.h	(revision 7)
+++ /target/dve68k_gcc/target_kernel.h	(revision 7)
@@ -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-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$
+ */
+
+/*
+ *		kernel.h€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô¡ÊDVE68K/40ÍÑ¡Ë
+ *
+ *  €³€Î¥€¥ó¥¯¥ë¡Œ¥É¥Õ¥¡¥€¥ë€Ï¡€kernel.h€Ç¥€¥ó¥¯¥ë¡Œ¥É€µ€ì€ë¡¥ÂŸ€Î¥Õ¥¡
+ *  ¥€¥ë€«€éÄŸÀÜ¥€¥ó¥¯¥ë¡Œ¥É€¹€ë€³€È€Ï€Ê€€¡¥€³€Î¥Õ¥¡¥€¥ë€ò¥€¥ó¥¯¥ë¡Œ¥É
+ *  €¹€ëÁ°€Ë¡€t_stddef.h€¬¥€¥ó¥¯¥ë¡Œ¥É€µ€ì€ë€Î€Ç¡€€œ€ì€é€Ë°ÍÂž€·€Æ€â€è
+ *  €€¡¥
+ */
+
+#ifndef TOPPERS_TARGET_KERNEL_H
+#define TOPPERS_TARGET_KERNEL_H
+
+/*
+ *  ¥×¥í¥»¥Ã¥µ€Ç¶ŠÄÌ€ÊÄêµÁ
+ */
+#include "m68k_gcc/prc_kernel.h"
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€Ç¥µ¥Ý¡Œ¥È€Ç€­€ëµ¡Çœ
+ */
+#define TOPPERS_TARGET_SUPPORT_DIS_INT		/* dis_int */
+#define TOPPERS_TARGET_SUPPORT_ENA_INT		/* ena_int */
+#define TOPPERS_TARGET_SUPPORT_GET_UTM		/* get_utm */
+
+/*
+ *  ¥¿¥€¥à¥Æ¥£¥Ã¥¯€ÎÄêµÁ
+ */
+#ifndef TIC_NUME
+#define	TIC_NUME		1U			/* ¥¿¥€¥à¥Æ¥£¥Ã¥¯€ÎŒþŽü€ÎÊ¬»Ò */
+#define	TIC_DENO		1U			/* ¥¿¥€¥à¥Æ¥£¥Ã¥¯€ÎŒþŽü€ÎÊ¬Êì */
+#endif /* TIC_NUME */
+
+#endif /* TOPPERS_TARGET_KERNEL_H */
Index: /target/dve68k_gcc/target_rename.def
===================================================================
--- /target/dve68k_gcc/target_rename.def	(revision 7)
+++ /target/dve68k_gcc/target_rename.def	(revision 7)
@@ -0,0 +1,19 @@
+# kernel_cfg.c
+bitpat_cfgint
+
+# target_config.c
+board_id
+board_addr
+target_initialize
+target_exit
+x_config_int
+
+# trace_config.c
+log_dsp_enter
+log_dsp_leave
+log_inh_enter
+log_inh_leave
+log_exc_enter
+log_exc_leave
+
+INCLUDE "m68k_gcc/prc"
Index: /target/dve68k_gcc/target_rename.h
===================================================================
--- /target/dve68k_gcc/target_rename.h	(revision 7)
+++ /target/dve68k_gcc/target_rename.h	(revision 7)
@@ -0,0 +1,62 @@
+/* This file is generated from target_rename.def by genrename. */
+
+#ifndef TOPPERS_TARGET_RENAME_H
+#define TOPPERS_TARGET_RENAME_H
+
+/*
+ *  kernel_cfg.c
+ */
+#define bitpat_cfgint				_kernel_bitpat_cfgint
+
+/*
+ *  target_config.c
+ */
+#define board_id					_kernel_board_id
+#define board_addr					_kernel_board_addr
+#define target_initialize			_kernel_target_initialize
+#define target_exit					_kernel_target_exit
+#define x_config_int				_kernel_x_config_int
+
+/*
+ *  trace_config.c
+ */
+#define log_dsp_enter				_kernel_log_dsp_enter
+#define log_dsp_leave				_kernel_log_dsp_leave
+#define log_inh_enter				_kernel_log_inh_enter
+#define log_inh_leave				_kernel_log_inh_leave
+#define log_exc_enter				_kernel_log_exc_enter
+#define log_exc_leave				_kernel_log_exc_leave
+
+
+#ifdef TOPPERS_LABEL_ASM
+
+/*
+ *  kernel_cfg.c
+ */
+#define _bitpat_cfgint				__kernel_bitpat_cfgint
+
+/*
+ *  target_config.c
+ */
+#define _board_id					__kernel_board_id
+#define _board_addr					__kernel_board_addr
+#define _target_initialize			__kernel_target_initialize
+#define _target_exit				__kernel_target_exit
+#define _x_config_int				__kernel_x_config_int
+
+/*
+ *  trace_config.c
+ */
+#define _log_dsp_enter				__kernel_log_dsp_enter
+#define _log_dsp_leave				__kernel_log_dsp_leave
+#define _log_inh_enter				__kernel_log_inh_enter
+#define _log_inh_leave				__kernel_log_inh_leave
+#define _log_exc_enter				__kernel_log_exc_enter
+#define _log_exc_leave				__kernel_log_exc_leave
+
+
+#endif /* TOPPERS_LABEL_ASM */
+
+#include "m68k_gcc/prc_rename.h"
+
+#endif /* TOPPERS_TARGET_RENAME_H */
Index: /target/dve68k_gcc/target_serial.c
===================================================================
--- /target/dve68k_gcc/target_serial.c	(revision 7)
+++ /target/dve68k_gcc/target_serial.c	(revision 7)
@@ -0,0 +1,175 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥·¥ê¥¢¥ëI/O¥Ç¥Ð¥€¥¹¡ÊSIO¡Ë¥É¥é¥€¥Ð¡ÊDVE68K/40ÍÑ¡Ë
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include "dve68k.h"
+#include "pdic/upd72001/upd72001.h"
+#include "target_serial.h"
+
+/*
+ *  SIO¥É¥é¥€¥Ð€ÎœéŽü²œ
+ */
+void
+sio_initialize(intptr_t exinf)
+{
+	upd72001_initialize();
+}
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€Î¥ª¡Œ¥×¥ó
+ */
+SIOPCB *
+sio_opn_por(ID siopid, intptr_t exinf)
+{
+	SIOPCB	*p_siopcb;
+	bool_t	opnflg;
+	ER		ercd;
+
+	/*
+	 *  ¥ª¡Œ¥×¥ó€·€¿¥Ý¡Œ¥È€¬€¢€ë€«€òopnflg€ËÆÉ€ó€Ç€ª€¯¡¥
+	 */
+	opnflg = upd72001_openflag();
+
+	/*
+	 *  ¥Ç¥Ð¥€¥¹°ÍÂž€Î¥ª¡Œ¥×¥óœèÍý¡¥
+	 */
+	p_siopcb = upd72001_opn_por(siopid, exinf);
+
+	/*
+	 *  ¥·¥ê¥¢¥ëI/O³ä¹þ€ß€Î¥Þ¥¹¥¯€ò²òœü€¹€ë¡¥
+	 */
+	if (!opnflg) {
+		ercd = ena_int(INTNO_SIO);
+		assert(ercd == E_OK);
+	}
+	return(p_siopcb);
+}
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€Î¥¯¥í¡Œ¥º
+ */
+void
+sio_cls_por(SIOPCB *p_siopcb)
+{
+	ER		ercd;
+
+	/*
+	 *  ¥Ç¥Ð¥€¥¹°ÍÂž€Î¥¯¥í¡Œ¥ºœèÍý¡¥
+	 */
+	upd72001_cls_por(p_siopcb);
+
+	/*
+	 *  ¥·¥ê¥¢¥ëI/O³ä¹þ€ß€ò¥Þ¥¹¥¯€¹€ë¡¥
+	 */
+	if (!upd72001_openflag()) {
+		ercd = dis_int(INTNO_SIO);
+		assert(ercd == E_OK);
+	}
+}
+
+/*
+ *  SIO€Î³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó
+ */
+void
+sio_isr(intptr_t exinf)
+{
+	upd72001_isr();
+}
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€Ø€ÎÊž»úÁ÷¿®
+ */
+bool_t
+sio_snd_chr(SIOPCB *siopcb, char c)
+{
+	return(upd72001_snd_chr(siopcb, c));
+}
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€«€é€ÎÊž»úŒõ¿®
+ */
+int_t
+sio_rcv_chr(SIOPCB *siopcb)
+{
+	return(upd72001_rcv_chr(siopcb));
+}
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€«€é€Î¥³¡Œ¥ë¥Ð¥Ã¥¯€Îµö²Ä
+ */
+void
+sio_ena_cbr(SIOPCB *siopcb, uint_t cbrtn)
+{
+	upd72001_ena_cbr(siopcb, cbrtn);
+}
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€«€é€Î¥³¡Œ¥ë¥Ð¥Ã¥¯€Î¶Ø»ß
+ */
+void
+sio_dis_cbr(SIOPCB *siopcb, uint_t cbrtn)
+{
+	upd72001_dis_cbr(siopcb, cbrtn);
+}
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€«€é€ÎÁ÷¿®²ÄÇœ¥³¡Œ¥ë¥Ð¥Ã¥¯
+ */
+void
+upd72001_irdy_snd(intptr_t exinf)
+{
+	sio_irdy_snd(exinf);
+}
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€«€é€ÎŒõ¿®ÄÌÃÎ¥³¡Œ¥ë¥Ð¥Ã¥¯
+ */
+void
+upd72001_irdy_rcv(intptr_t exinf)
+{
+	sio_irdy_rcv(exinf);
+}
Index: /target/dve68k_gcc/target_serial.cfg
===================================================================
--- /target/dve68k_gcc/target_serial.cfg	(revision 7)
+++ /target/dve68k_gcc/target_serial.cfg	(revision 7)
@@ -0,0 +1,12 @@
+/*
+ *  @(#) $Id$
+ */
+
+/*
+ *		SIO¥É¥é¥€¥Ð¡ÊDVE68K/40ÍÑ¡Ë€Î¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+ */
+
+#include "target_serial.h"
+ATT_INI({ TA_NULL, 0, sio_initialize });
+ATT_ISR({ TA_NULL, 0, INTNO_SIO, sio_isr, 1 });
+CFG_INT(INTNO_SIO, { INTATR_SIO, INTPRI_SIO });
Index: /target/dve68k_gcc/target_serial.h
===================================================================
--- /target/dve68k_gcc/target_serial.h	(revision 7)
+++ /target/dve68k_gcc/target_serial.h	(revision 7)
@@ -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-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$
+ */
+
+/*
+ *		¥·¥ê¥¢¥ëI/O¥Ç¥Ð¥€¥¹¡ÊSIO¡Ë¥É¥é¥€¥Ð¡ÊDVE68K/40ÍÑ¡Ë
+ */
+
+#ifndef TOPPERS_TARGET_SERIAL_H
+#define TOPPERS_TARGET_SERIAL_H
+
+#include "dve68k.h"
+#include "pdic/upd72001/upd72001.h"
+
+/*
+ *  SIO€Î³ä¹þ€ßÈÖ¹æ¡€Í¥ÀèÅÙ¡€Â°À­€ÎÄêµÁ
+ */
+#define INTNO_SIO		TINTNO_GP0		/* ³ä¹þ€ßÈÖ¹æ */
+#define INTPRI_SIO		TIRQ_LEVEL6		/* ³ä¹þ€ßÍ¥ÀèÅÙ */
+#define INTATR_SIO		TA_NULL			/* ³ä¹þ€ßÂ°À­ */
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  SIO¥É¥é¥€¥Ð€ÎœéŽü²œ
+ */
+extern void		sio_initialize(intptr_t exinf);
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€Î¥ª¡Œ¥×¥ó
+ */
+extern SIOPCB	*sio_opn_por(ID siopid, intptr_t exinf);
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€Î¥¯¥í¡Œ¥º
+ */
+extern void		sio_cls_por(SIOPCB *p_siopcb);
+
+/*
+ *  SIO€Î³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó
+ */
+extern void		sio_isr(intptr_t exinf);
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€Ø€ÎÊž»úÁ÷¿®
+ */
+extern bool_t	sio_snd_chr(SIOPCB *siopcb, char c);
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€«€é€ÎÊž»úŒõ¿®
+ */
+extern int_t	sio_rcv_chr(SIOPCB *siopcb);
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€«€é€Î¥³¡Œ¥ë¥Ð¥Ã¥¯€Îµö²Ä
+ */
+extern void		sio_ena_cbr(SIOPCB *siopcb, uint_t cbrtn);
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€«€é€Î¥³¡Œ¥ë¥Ð¥Ã¥¯€Î¶Ø»ß
+ */
+extern void		sio_dis_cbr(SIOPCB *siopcb, uint_t cbrtn);
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€«€é€ÎÁ÷¿®²ÄÇœ¥³¡Œ¥ë¥Ð¥Ã¥¯
+ */
+extern void		sio_irdy_snd(intptr_t exinf);
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€«€é€ÎŒõ¿®ÄÌÃÎ¥³¡Œ¥ë¥Ð¥Ã¥¯
+ */
+extern void		sio_irdy_rcv(intptr_t exinf);
+
+#endif /* TOPPERS_MACRO_ONLY */
+#endif /* TOPPERS_TARGET_SERIAL_H */
Index: /target/dve68k_gcc/target_sil.h
===================================================================
--- /target/dve68k_gcc/target_sil.h	(revision 7)
+++ /target/dve68k_gcc/target_sil.h	(revision 7)
@@ -0,0 +1,59 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2004-2006 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		sil.h€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô¡ÊDVE68K/40ÍÑ¡Ë
+ *
+ *  €³€Î¥€¥ó¥¯¥ë¡Œ¥É¥Õ¥¡¥€¥ë€Ï¡€sil.h€ÎÀèÆ¬€Ç¥€¥ó¥¯¥ë¡Œ¥É€µ€ì€ë¡¥ÂŸ€Î¥Õ¥¡
+ *  ¥€¥ë€«€é€ÏÄŸÀÜ¥€¥ó¥¯¥ë¡Œ¥É€¹€ë€³€È€Ï€Ê€€¡¥€³€Î¥Õ¥¡¥€¥ë€ò¥€¥ó¥¯¥ë¡Œ
+ *  ¥É€¹€ëÁ°€Ë¡€t_stddef.h€¬¥€¥ó¥¯¥ë¡Œ¥É€µ€ì€ë€Î€Ç¡€€œ€ì€é€Ë°ÍÂž€·€Æ€â
+ *  €è€€¡¥
+ */
+
+#ifndef TOPPERS_TARGET_SIL_H
+#define TOPPERS_TARGET_SIL_H
+
+/*
+ *  ¥×¥í¥»¥Ã¥µ€Ç¶ŠÄÌ€ÊÄêµÁ
+ */
+#include "m68k_gcc/prc_sil.h"
+
+#endif /* TOPPERS_TARGET_SIL_H */
Index: /target/dve68k_gcc/target_stddef.h
===================================================================
--- /target/dve68k_gcc/target_stddef.h	(revision 7)
+++ /target/dve68k_gcc/target_stddef.h	(revision 7)
@@ -0,0 +1,92 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2004-2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		t_stddef.h€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô¡ÊDVE68K/40ÍÑ¡Ë
+ *
+ *  €³€Î¥€¥ó¥¯¥ë¡Œ¥É¥Õ¥¡¥€¥ë€Ï¡€t_stddef.h€ÎÀèÆ¬€Ç¥€¥ó¥¯¥ë¡Œ¥É€µ€ì€ë¡¥
+ *  ÂŸ€Î¥Õ¥¡¥€¥ë€«€é€ÏÄŸÀÜ¥€¥ó¥¯¥ë¡Œ¥É€¹€ë€³€È€Ï€Ê€€¡¥ÂŸ€Î¥€¥ó¥¯¥ë¡Œ¥É
+ *  ¥Õ¥¡¥€¥ë€ËÀèÎ©€Ã€ÆœèÍý€µ€ì€ë€¿€á¡€ÂŸ€Î¥€¥ó¥¯¥ë¡Œ¥É¥Õ¥¡¥€¥ë€Ë°ÍÂž€·
+ *  €Æ€Ï€Ê€é€Ê€€¡¥
+ */
+
+#ifndef TOPPERS_TARGET_STDDEF_H
+#define TOPPERS_TARGET_STDDEF_H
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È€òŒ±ÊÌ€¹€ë€¿€á€Î¥Þ¥¯¥í€ÎÄêµÁ
+ */
+#define TOPPERS_DVE68K				/* ¥·¥¹¥Æ¥àÎ¬ŸÎ */
+
+/*
+ *  ³«È¯ŽÄ¶­€Ç¶ŠÄÌ€ÊÄêµÁ
+ *
+ *  ³«È¯ŽÄ¶­€Çstdint.h€¬ÍÑ°Õ€µ€ì€Æ€€€ëŸì¹ç€Ë€Ï¡€TOPPERS_STDINT_TYPE1€Î
+ *  ¥Þ¥¯¥íÄêµÁ€òºïœü€·¡€stdint.h€ò¥€¥ó¥¯¥ë¡Œ¥É€¹€ì€Ð€è€€¡¥
+ */
+#define TOPPERS_STDINT_TYPE1
+#define TOPPERS_STDFLOAT_TYPE1
+#include "gcc/tool_stddef.h"
+
+/*
+ *  ¥×¥í¥»¥Ã¥µ€Ç¶ŠÄÌ€ÊÄêµÁ
+ */
+#include "m68k_gcc/prc_stddef.h"
+
+/*
+ *  ¥¢¥µ¡Œ¥·¥ç¥ó€ÎŒºÇÔ»þ€ÎŒÂ¹ÔÃæÃÇœèÍý
+ */
+#ifndef TOPPERS_MACRO_ONLY
+#ifdef TOPPERS_GDB_STUB				/* GDB¥¹¥¿¥Ö */
+
+Inline void
+TOPPERS_assert_abort(void)
+{
+	Asm("trap #2");
+}
+
+#else /* TOPPERS_GDB_STUB */		/* €œ€ÎÂŸ€Î³«È¯ŽÄ¶­ */
+
+extern void		TOPPERS_assert_abort(void);
+
+#endif /* TOPPERS_GDB_STUB */
+#endif /* TOPPERS_MACRO_ONLY */
+#endif /* TOPPERS_TARGET_STDDEF_H */
Index: /target/dve68k_gcc/target_support.S
===================================================================
--- /target/dve68k_gcc/target_support.S	(revision 7)
+++ /target/dve68k_gcc/target_support.S	(revision 7)
@@ -0,0 +1,61 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥¿¡Œ¥²¥Ã¥È°ÍÂž¥â¥ž¥å¡Œ¥ë ¥¢¥»¥ó¥Ö¥êžÀžìÉô¡ÊDVE-68K/40ÍÑ¡Ë
+ */
+
+#define	TOPPERS_MACRO_ONLY
+#include "kernel_impl.h"
+
+/*
+ *  Äã¥ì¥Ù¥ë€Î¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎœéŽü²œ
+ *
+ *  ¥¹¥¿¡Œ¥È¥¢¥Ã¥×¥â¥ž¥å¡Œ¥ë€ÎÃæ€Ç¡€¥á¥â¥ê€ÎœéŽü²œ€ÎÁ°€ËžÆ€ÓœÐ€µ€ì€ë¡¥
+ */
+	.text
+	.globl hardware_init_hook
+hardware_init_hook:	
+	move.l #0x09, TADR_BOARD_REG1
+	move.l #0x2c07e000, TADR_DGA_CSR0
+	move.l #0x60000300, TADR_DGA_CSR1
+	rts
Index: /target/dve68k_gcc/target_syssvc.h
===================================================================
--- /target/dve68k_gcc/target_syssvc.h	(revision 7)
+++ /target/dve68k_gcc/target_syssvc.h	(revision 7)
@@ -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) 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$
+ */
+
+/*
+ *		¥·¥¹¥Æ¥à¥µ¡Œ¥Ó¥¹€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô¡ÊDVE-68K/40ÍÑ¡Ë
+ *
+ *  ¥·¥¹¥Æ¥à¥µ¡Œ¥Ó¥¹€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€Î¥€¥ó¥¯¥ë¡Œ¥É¥Õ¥¡¥€¥ë¡¥€³€Î¥Õ¥¡
+ *  ¥€¥ë€ÎÆâÍÆ€Ï¡€¥³¥ó¥Ý¡Œ¥Í¥ó¥Èµ­œÒ¥Õ¥¡¥€¥ë€Ëµ­œÒ€µ€ì¡€€³€Î¥Õ¥¡¥€¥ë€Ï
+ *  Ìµ€¯€Ê€ëž«¹þ€ß¡¥
+ */
+
+#ifndef TOPPERS_TARGET_SYSSVC_H
+#define TOPPERS_TARGET_SYSSVC_H
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È¥·¥¹¥Æ¥à€Î¥Ï¡Œ¥É¥Š¥§¥¢»ñž»€ÎÄêµÁ
+ */
+#include "dve68k.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°€ËŽØ€¹€ëÀßÄê
+ */
+#ifdef TOPPERS_ENABLE_TRACE
+#include "logtrace/trace_config.h"
+#endif /* TOPPERS_ENABLE_TRACE */
+
+/*
+ *  µ¯Æ°¥á¥Ã¥»¡Œ¥ž€Î¥¿¡Œ¥²¥Ã¥È¥·¥¹¥Æ¥àÌŸ
+ */
+#define TARGET_NAME	"DVE-68K/40"
+
+/*
+ *  ¥·¥¹¥Æ¥à¥í¥°€ÎÄã¥ì¥Ù¥ëœÐÎÏ€Î€¿€á€ÎÊž»úœÐÎÏ
+ *
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎÊýË¡€Ç¡€Êž»úc€òÉœŒš/œÐÎÏ/ÊÝÂž€¹€ë¡¥
+ */
+extern void	target_fput_log(char c);
+
+/*
+ *  ¥·¥ê¥¢¥ë¥Ý¡Œ¥È¿ô€ÎÄêµÁ
+ */
+#define TNUM_PORT		2		/* ¥µ¥Ý¡Œ¥È€¹€ë¥·¥ê¥¢¥ë¥Ý¡Œ¥È€Î¿ô */
+
+/*
+ *  ¥·¥ê¥¢¥ë¥Ý¡Œ¥È€Î¥Ü¡Œ¥ì¡Œ¥È€ËŽØ€¹€ëÄêµÁ
+ *
+ *  ŠÌPD72001€Î¥Ü¡Œ¥ì¡Œ¥È¥ž¥§¥Í¥ì¡Œ¥¿€ËÀßÄê€¹€Ù€­ÃÍ¡¥
+ */
+#define BRG1_DEF	0x00U		/* 9600bps¡ÊŸå°Ì¡Ë*/
+#define BRG2_DEF	0x1eU		/* 9600bps¡Ê²Œ°Ì¡Ë*/
+
+/*
+ *  ¥·¥¹¥Æ¥à¥í¥°¥¿¥¹¥¯ŽØÏ¢€ÎÄê¿ô€ÎÄêµÁ
+ *
+ *  ¥Ç¥Õ¥©¥ë¥ÈÃÍ€ÎÄÌ€ê¡¥
+ */
+
+#endif /* TOPPERS_TARGET_SYSSVC_H */
Index: /target/dve68k_gcc/target_test.h
===================================================================
--- /target/dve68k_gcc/target_test.h	(revision 7)
+++ /target/dve68k_gcc/target_test.h	(revision 7)
@@ -0,0 +1,53 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2006,2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥Æ¥¹¥È¥×¥í¥°¥é¥à€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÄêµÁ¡ÊDVE-68K/40ÍÑ¡Ë
+ */
+
+#ifndef TOPPERS_TARGET_TEST_H
+#define TOPPERS_TARGET_TEST_H
+
+/*
+ *  ¥×¥í¥»¥Ã¥µ€Ç¶ŠÄÌ€ÊÄêµÁ
+ */
+#include "m68k_gcc/prc_test.h"
+
+#endif /* TOPPERS_TARGET_TEST_H */
Index: /target/dve68k_gcc/target_timer.c
===================================================================
--- /target/dve68k_gcc/target_timer.c	(revision 7)
+++ /target/dve68k_gcc/target_timer.c	(revision 7)
@@ -0,0 +1,91 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2005,2006 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥¿¥€¥Þ¥É¥é¥€¥Ð¡ÊDVE68K/40ÍÑ¡Ë
+ */
+
+#include "kernel_impl.h"
+#include "time_event.h"
+#include <sil.h>
+#include "target_timer.h"
+
+/*
+ *  ¥¿¥€¥Þ€Îµ¯Æ°œèÍý
+ */
+void
+target_timer_initialize(intptr_t exinf)
+{
+	CLOCK	cyc = TO_CLOCK(TIC_NUME, TIC_DENO);
+
+	/*
+	 *  ¥¿¥€¥ÞŒþŽü€òÀßÄê€·¡€¥¿¥€¥Þ€ÎÆ°ºî€ò³«»Ï€¹€ë¡¥
+	 */
+	assert(cyc <= MAX_CLOCK);
+	dga_write((void *) TADR_DGA_CSR12, CSR12_START | cyc);
+
+	/*
+	 *  ¥¿¥€¥Þ³ä¹þ€ßÍ×µá€ò¥¯¥ê¥¢€¹€ë¡¥
+	 */
+	x_clear_int(INTNO_TIMER);
+}
+
+/*
+ *  ¥¿¥€¥Þ€ÎÄä»ßœèÍý
+ */
+void
+target_timer_terminate(intptr_t exinf)
+{
+	/*
+	 *  ¥¿¥€¥Þ€ÎÆ°ºî€òÄä»ß€¹€ë¡¥
+	 */
+	dga_write((void *) TADR_DGA_CSR12, CSR12_STOP);
+}
+
+/*
+ *  ¥¿¥€¥Þ³ä¹þ€ß¥Ï¥ó¥É¥é
+ */
+void
+target_timer_handler(void)
+{
+	i_begin_int(INTNO_TIMER);
+	signal_time();					/* ¥¿¥€¥à¥Æ¥£¥Ã¥¯€Î¶¡µë */
+	i_end_int(INTNO_TIMER);
+}
Index: /target/dve68k_gcc/target_timer.cfg
===================================================================
--- /target/dve68k_gcc/target_timer.cfg	(revision 7)
+++ /target/dve68k_gcc/target_timer.cfg	(revision 7)
@@ -0,0 +1,13 @@
+/*
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥¿¥€¥Þ¥É¥é¥€¥Ð€Î¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+ */
+
+#include "target_timer.h"
+ATT_INI({ TA_NULL, 0, target_timer_initialize });
+ATT_TER({ TA_NULL, 0, target_timer_terminate });
+CFG_INT(INTNO_TIMER, { TA_ENAINT | INTATR_TIMER, INTPRI_TIMER });
+DEF_INH(INHNO_TIMER, { TA_NULL, target_timer_handler });
Index: /target/dve68k_gcc/target_timer.h
===================================================================
--- /target/dve68k_gcc/target_timer.h	(revision 7)
+++ /target/dve68k_gcc/target_timer.h	(revision 7)
@@ -0,0 +1,150 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥¿¥€¥Þ¥É¥é¥€¥Ð¡ÊDVE68K/40ÍÑ¡Ë
+ */
+
+#ifndef TOPPERS_TARGET_TIMER_H
+#define TOPPERS_TARGET_TIMER_H
+
+#include <sil.h>
+#include "dve68k.h"
+
+/*
+ *  ¥¿¥€¥Þ³ä¹þ€ß¥Ï¥ó¥É¥éÅÐÏ¿€Î€¿€á€ÎÄê¿ô
+ */
+#define INHNO_TIMER		TINHNO_TT0		/* ³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ */
+#define INTNO_TIMER		TINTNO_TT0		/* ³ä¹þ€ßÈÖ¹æ */
+#define INTPRI_TIMER	TIRQ_LEVEL4		/* ³ä¹þ€ßÍ¥ÀèÅÙ */
+#define INTATR_TIMER	TA_EDGE			/* ³ä¹þ€ßÂ°À­ */
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  ¥¿¥€¥ÞÃÍ€ÎÆâÉôÉœžœ€Î·¿
+ */
+typedef uint32_t	CLOCK;
+
+/*
+ *  ¥¿¥€¥ÞÃÍ€ÎÆâÉôÉœžœ€È¥ß¥êÉÃ¡ŠŠÌÉÃÃ±°Ì€È€ÎÊÑŽ¹
+ *
+ *  DVE68K/40€Ç€Ï¡€¥¿¥€¥Þ€Ï1ŠÌÉÃËè€Ë¥«¥Š¥ó¥È¥¢¥Ã¥×€¹€ë¡¥
+ */
+#define TIMER_CLOCK				1000U
+#define TO_CLOCK(nume, deno)	((CLOCK)(TIMER_CLOCK * (nume) / (deno)))
+#define TO_USEC(clock)			(((SYSUTM) clock) * 1000U / TIMER_CLOCK)
+
+/*
+ *  ÀßÄê€Ç€­€ëºÇÂç€Î¥¿¥€¥ÞŒþŽü¡ÊÃ±°Ì€ÏÆâÉôÉœžœ¡Ë
+ */
+#define MAX_CLOCK		((CLOCK) 0xffffffU)
+
+/*
+ *  ¥¿¥€¥ÞÄä»ß€Þ€Ç€Î»þŽÖ¡ÊnsecÃ±°Ì¡Ë
+ *
+ *  ÃÍ€Ëº¬µò€Ï€Ê€€¡¥
+ */
+#define TIMER_STOP_DELAY	200U
+
+/*
+ *  ¥ì¥ž¥¹¥¿€ÎÀßÄêÃÍ
+ */
+#define CSR12_START		0x80000000U		/* ¥¿¥€¥ÞÆ°ºî */
+#define CSR12_STOP		0x00000000U		/* ¥¿¥€¥ÞÄä»ß */
+
+/*
+ *  ¥¿¥€¥Þ€Îµ¯Æ°œèÍý
+ *
+ *  ¥¿¥€¥Þ€òœéŽü²œ€·¡€ŒþŽüÅª€Ê¥¿¥€¥Þ³ä¹þ€ßÍ×µá€òÈ¯Àž€µ€»€ë¡¥
+ */
+extern void	target_timer_initialize(intptr_t exinf);
+
+/*
+ *  ¥¿¥€¥Þ€ÎÄä»ßœèÍý
+ *
+ *  ¥¿¥€¥Þ€ÎÆ°ºî€òÄä»ß€µ€»€ë¡¥
+ */
+extern void	target_timer_terminate(intptr_t exinf);
+
+/*
+ *  ¥¿¥€¥Þ€ÎžœºßÃÍ€ÎÆÉœÐ€·
+ */
+Inline CLOCK
+target_timer_get_current(void)
+{
+	CLOCK		clk;
+	uint32_t	saved_csr12;
+	SIL_PRE_LOC;
+
+	/*
+	 *  ¥¿¥€¥Þ€ÎÆ°ºî€ò°ì»þÅª€ËÄä»ß€·¡€¥¿¥€¥ÞÃÍ€òÆÉ€ßœÐ€¹¡¥¥¿¥€¥Þ€ÎÆ°ºî
+	 *  €ò°ì»þÅª€ËÄä»ß€µ€»€ë€È¡€¥·¥¹¥Æ¥à»þ¹ï€¬€º€ì€ë€¿€á€ËËŸ€Þ€·€¯€Ê€€
+	 *  €¬¡€DVE68K/40€Î¥Ï¡Œ¥É¥Š¥§¥¢Åª€ÊÀ©Ìó€Ç€¢€ê¡€€ä€à€ò€š€Ê€€¡¥€º€ì€ò
+	 *  ºÇŸ®€ËÍÞ€š€ë€¿€á€Ë¡€³ä¹þ€ß¥í¥Ã¥¯ŸõÂÖ€È€¹€ë¡¥
+	 */
+	SIL_LOC_INT();
+	saved_csr12 = dga_read((void *) TADR_DGA_CSR12);
+	dga_write((void *) TADR_DGA_CSR12, CSR12_STOP);
+	sil_dly_nse(TIMER_STOP_DELAY);
+	clk = dga_read((void *) TADR_DGA_CSR13) & 0x00ffffffU;
+	dga_write((void *) TADR_DGA_CSR12, saved_csr12);
+	SIL_UNL_INT();
+	return(clk);
+}
+
+/*
+ *  ¥¿¥€¥Þ³ä¹þ€ßÍ×µá€Î¥Á¥§¥Ã¥¯
+ */
+Inline bool_t
+target_timer_probe_int(void)
+{
+	return(x_probe_int(INTNO_TIMER));
+}
+
+/*
+ *  ¥¿¥€¥Þ³ä¹þ€ß¥Ï¥ó¥É¥é
+ */
+extern void	target_timer_handler(void);
+
+#endif /* TOPPERS_MACRO_ONLY */
+#endif /* TOPPERS_TARGET_TIMER_H */
Index: /target/dve68k_gcc/target_unrename.h
===================================================================
--- /target/dve68k_gcc/target_unrename.h	(revision 7)
+++ /target/dve68k_gcc/target_unrename.h	(revision 7)
@@ -0,0 +1,63 @@
+/* This file is generated from target_rename.def by genrename. */
+
+/* This file is included only when target_rename.h has been included. */
+#ifdef TOPPERS_TARGET_RENAME_H
+#undef TOPPERS_TARGET_RENAME_H
+
+/*
+ *  kernel_cfg.c
+ */
+#undef bitpat_cfgint
+
+/*
+ *  target_config.c
+ */
+#undef board_id
+#undef board_addr
+#undef target_initialize
+#undef target_exit
+#undef x_config_int
+
+/*
+ *  trace_config.c
+ */
+#undef log_dsp_enter
+#undef log_dsp_leave
+#undef log_inh_enter
+#undef log_inh_leave
+#undef log_exc_enter
+#undef log_exc_leave
+
+
+#ifdef TOPPERS_LABEL_ASM
+
+/*
+ *  kernel_cfg.c
+ */
+#undef _bitpat_cfgint
+
+/*
+ *  target_config.c
+ */
+#undef _board_id
+#undef _board_addr
+#undef _target_initialize
+#undef _target_exit
+#undef _x_config_int
+
+/*
+ *  trace_config.c
+ */
+#undef _log_dsp_enter
+#undef _log_dsp_leave
+#undef _log_inh_enter
+#undef _log_inh_leave
+#undef _log_exc_enter
+#undef _log_exc_leave
+
+
+#endif /* TOPPERS_LABEL_ASM */
+
+#include "m68k_gcc/prc_unrename.h"
+
+#endif /* TOPPERS_TARGET_RENAME_H */
Index: /target/macosx_gcc/E_PACKAGE
===================================================================
--- /target/macosx_gcc/E_PACKAGE	(revision 7)
+++ /target/macosx_gcc/E_PACKAGE	(revision 7)
@@ -0,0 +1,7 @@
+E_PACKAGE asp_macosx_gcc
+VERSION %date
+
+INCLUDE ../../MANIFEST
+INCLUDE MANIFEST
+INCLUDE ../../cfg/MANIFEST
+../../cfg/cfg/cfg
Index: /target/macosx_gcc/MANIFEST
===================================================================
--- /target/macosx_gcc/MANIFEST	(revision 7)
+++ /target/macosx_gcc/MANIFEST	(revision 7)
@@ -0,0 +1,30 @@
+PACKAGE asp_target_macosx_gcc
+VERSION 1.9.1
+
+E_PACKAGE
+MANIFEST
+Makefile.target
+macosx.h
+target.tf
+target_cfg1_out.h
+target_check.tf
+target_config.c
+target_config.h
+target_def.csv
+target_kernel.h
+target_rename.def
+target_rename.h
+target_serial.c
+target_serial.cfg
+target_serial.h
+target_sil.h
+target_stddef.h
+target_syssvc.h
+target_test.h
+target_timer.c
+target_timer.cfg
+target_timer.h
+target_unrename.h
+target_user.txt
+unix_sigio.cfg
+unix_sigio.h
Index: /target/macosx_gcc/Makefile.target
===================================================================
--- /target/macosx_gcc/Makefile.target	(revision 7)
+++ /target/macosx_gcc/Makefile.target	(revision 7)
@@ -0,0 +1,77 @@
+#
+#  @(#) $Id$
+# 
+
+#
+#		Makefile €Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô¡ÊMac OS XÍÑ¡Ë
+#
+
+#
+#  ¥·¥¹¥Æ¥àÌŸ¡€³«È¯ŽÄ¶­ÌŸ€ÎÄêµÁ
+#
+#  GNU³«È¯ŽÄ¶­€ÎÉžœàÀßÄê€ò»È€š€Ê€€€Î€Ç¡€TOOL€ò"gcc_"€È€·€Æ€€€ë¡¥
+#
+SYS = macosx
+TOOL = gcc_
+
+#
+#  ³«È¯¥Ä¡Œ¥ë€Î¥³¥Þ¥ó¥ÉÌŸ€ÎÄêµÁ
+#
+#  nm¡€objcopy¡€objdump€Ï¡€€œ€ì€Ÿ€ì¡€gnm¡€gobjcopy¡€gobjdump€òÍÑ€€€ë¡¥
+#
+CC = gcc
+CXX = g++
+AS = as
+LD = ld
+AR = ar
+NM = gnm
+RANLIB = ranlib
+OBJCOPY = gobjcopy
+OBJDUMP = gobjdump
+
+#
+#  makeoffset€Ï»ÈÍÑ€·€Ê€€
+#
+OMIT_MAKEOFFSET = true
+
+#
+#  ¥³¥ó¥Ñ¥€¥ë¥ª¥×¥·¥ç¥ó
+#
+INCLUDES := $(INCLUDES) -I$(TARGETDIR)
+ifdef KERNEL_FUNCOBJS
+  COPTS := $(COPTS) -m32
+else
+  COPTS := $(COPTS) -Werror -m32
+endif
+
+#
+#  ¥«¡Œ¥Í¥ë€ËŽØ€¹€ëÄêµÁ
+#
+KERNEL_DIR := $(KERNEL_DIR) $(TARGETDIR)
+KERNEL_COBJS := $(KERNEL_COBJS) target_config.o target_timer.o
+
+#
+#  ¥·¥¹¥Æ¥à¥µ¡Œ¥Ó¥¹€ËŽØ€¹€ëÄêµÁ
+#
+SYSSVC_COBJS := $(SYSSVC_COBJS) target_serial.o
+
+#
+#  ¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿ŽØ·ž€ÎÊÑ¿ô€ÎÄêµÁ
+#
+CFG_TABS := $(CFG_TABS) --cfg1-def-table $(TARGETDIR)/target_def.csv
+
+#
+#  ¥È¥ì¡Œ¥¹¥í¥°µ­Ï¿€Î¥µ¥ó¥×¥ë¥³¡Œ¥É€ËŽØ€¹€ëÄêµÁ
+#
+ifeq ($(ENABLE_TRACE),true)
+	COPTS := $(COPTS) -DTOPPERS_ENABLE_TRACE
+	KERNEL_DIR := $(KERNEL_DIR) $(SRCDIR)/arch/logtrace
+	KERNEL_COBJS := $(KERNEL_COBJS) trace_config.o trace_dump.o
+endif
+
+#
+#  °ÍÂžŽØ·ž€ÎÄêµÁ
+#
+cfg1_out.c: $(TARGETDIR)/target_def.csv
+kernel_cfg.timestamp: $(TARGETDIR)/target.tf
+$(OBJFILE): $(TARGETDIR)/target_check.tf
Index: /target/macosx_gcc/macosx.h
===================================================================
--- /target/macosx_gcc/macosx.h	(revision 7)
+++ /target/macosx_gcc/macosx.h	(revision 7)
@@ -0,0 +1,54 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2006,2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		Mac OS X€ÎOS»ñž»€ÎÄêµÁ
+ */
+
+#ifndef TOPPERS_MACOSX_H
+#define TOPPERS_MACOSX_H
+
+/*
+ *  ¥·¥°¥Ê¥ëÈÖ¹æ€ÎÄêµÁ
+ */
+#ifndef TOPPERS_MACRO_ONLY
+#include <signal.h>
+#endif /* TOPPERS_MACRO_ONLY */
+#endif /* TOPPERS_MACOSX_H */
Index: /target/macosx_gcc/target.tf
===================================================================
--- /target/macosx_gcc/target.tf	(revision 7)
+++ /target/macosx_gcc/target.tf	(revision 7)
@@ -0,0 +1,167 @@
+$ 
+$ 		¥Ñ¥¹2€Î¥¿¡Œ¥²¥Ã¥È°ÍÂž¥Æ¥ó¥×¥ì¡Œ¥È¡ÊMac OS XÍÑ¡Ë
+$ 
+
+$ 
+$  »ÈÍÑ€Ç€­€ë³ä¹þ€ßÈÖ¹æ€È€œ€ì€ËÂÐ±þ€¹€ë³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ
+$ 
+$  ³ä¹þ€ßÈÖ¹æ€È³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ€Ï¡€¥·¥°¥Ê¥ëÈÖ¹æ€Ë°ìÃ×€µ€»€ë¡¥1¡Á31€Î
+$  ¥·¥°¥Ê¥ëÈÖ¹æ€ÎÆâ¡€SIGKILL¡Ê¡á9¡Ë¡€SIGSTOP¡Ê¡á17¡Ë¡€SIGUSR2¡Ê¡á31¡Ë°Ê
+$  ³°€¬»ÈÍÑ€Ç€­€ë¡¥
+$ 
+$INTNO_VALID = { 1, 2,..., 8; 10, 11,..., 16; 18, 19,..., 30 }$
+$INHNO_VALID = INTNO_VALID$
+
+$ 
+$  ATT_ISR€Ç»ÈÍÑ€Ç€­€ë³ä¹þ€ßÈÖ¹æ€È€œ€ì€ËÂÐ±þ€¹€ë³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ
+$ 
+$INTNO_ATTISR_VALID = INTNO_VALID$
+$INHNO_ATTISR_VALID = INHNO_VALID$
+
+$ 
+$  DEF_INT¡¿DEF_EXC€Ç»ÈÍÑ€Ç€­€ë³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ¡¿CPUÎã³°¥Ï¥ó¥É¥éÈÖ¹æ
+$ 
+$INHNO_DEFINH_VALID = INHNO_VALID$
+$EXCNO_DEFEXC_VALID = INHNO_VALID$
+
+$ 
+$  CFG_INT€Ç»ÈÍÑ€Ç€­€ë³ä¹þ€ßÈÖ¹æ€È³ä¹þ€ßÍ¥ÀèÅÙ
+$ 
+$  ³ä¹þ€ßÍ¥ÀèÅÙ€Ï¡€-1¡Á-7€¬»ÈÍÑ€Ç€­€ë¡¥-7€ÏNMI€È°·€Š¡¥
+$ 
+$INTNO_CFGINT_VALID = INTNO_VALID$
+$INTPRI_CFGINT_VALID = { -1, -2,..., -7 }$
+
+$
+$  ¥¹¥¿¥Ã¥¯ÎÎ°è€Î³ÎÊÝŽØ¿ô
+$
+$  Intel¥×¥í¥»¥Ã¥µ€Ç€Ï¡€¥¹¥¿¥Ã¥¯¥Ý¥€¥ó¥¿€ò16¥Ð¥€¥È¶­³Š€Ë¥¢¥é¥€¥ó€µ€»€ë
+$  É¬Í×€¬€¢€ë¡¥
+$
+$FUNCTION ALLOC_STACK$
+	static STK_T $ARGV[1]$[COUNT_STK_T($ARGV[2]$)]
+						$SPC$__attribute__((aligned(16)));$NL$
+	$RESULT = FORMAT("ROUND_STK_T(%1%)", ARGV[2])$
+$END$
+
+$ 
+$  Éžœà¥Æ¥ó¥×¥ì¡Œ¥È¥Õ¥¡¥€¥ë€Î¥€¥ó¥¯¥ë¡Œ¥É
+$ 
+$INCLUDE "kernel/kernel.tf"$
+
+/*$NL$
+$SPC$*  Target-dependent Definitions (Mac OS X)$NL$
+$SPC$*/$NL$
+$NL$
+
+$ 
+$  ¥Þ¥¹¥¯€Ç€­€Ê€€¥·¥°¥Ê¥ë€È¥«¡Œ¥Í¥ë€¬»È€Š¥·¥°¥Ê¥ë€ËŽØ€¹€ëÀßÄê
+$ 
+$  SIGKILL¡Ê¥Þ¥¹¥¯ÉÔ²Ä¡Ë
+$  SIGSTOP¡Ê¥Þ¥¹¥¯ÉÔ²Ä¡Ë
+$  SIGUSR2¡Ê¥«¡Œ¥Í¥ë€¬ÍøÍÑ¡Ë
+$ 
+$INT.INTPRI[SIGKILL] = -7$
+$INT.INTPRI[SIGSTOP] = -7$
+$INT.INTPRI[SIGUSR2] = -7$
+
+$ 
+$   CFG_INT€Î¥¿¡Œ¥²¥Ã¥È°ÍÂž€Î¥š¥é¡Œ¥Á¥§¥Ã¥¯
+$ 
+$FOREACH intno INT.ORDER_LIST$
+	$IF (INT.INTATR[intno] & TA_EDGE) == 0$
+		$ERROR INT.TEXT_LINE[intno]$E_RSATR: $FORMAT("Level trigger is not supported for intno `%1%\' in CFG_INT", INT.INTNO[intno])$$END$
+	$END$
+$END$
+
+$ 
+$  CPUÎã³°¥Ï¥ó¥É¥é€ËŽØ€¹€ëœèÍý
+$ 
+$FOREACH excno EXC.ORDER_LIST$
+$	// ³ä¹þ€ß¥Ï¥ó¥É¥é€È€ÎœÅÊ£¥Á¥§¥Ã¥¯
+	$IF LENGTH(INH.INHNO[excno])$
+		$ERROR EXC.TEXT_LINE[excno]$E_OBJ: $FORMAT(_("%1% `%2%\' in %3% is duplicated with %4% `%5%\'"), "excno", EXC.EXCNO[excno], "DEF_EXC", "inhno", INH.INHNO[excno])$$END$
+	$END$
+
+$	// CPUÎã³°¥Ï¥ó¥É¥é€òÅÐÏ¿€·€¿¥·¥°¥Ê¥ë€ËŽØ€¹€ëÀßÄê
+	$IF LENGTH(INTNO[excno])$
+		$INT.INTPRI[INTNO[excno]] = -7$
+	$END$
+$END$
+
+$ 
+$  ¥Ç¥Ð¥Ã¥°ÍÑ€Ë¥Þ¥¹¥¯€·€Ê€€¥·¥°¥Ê¥ë€ËŽØ€¹€ëÀßÄê
+$ 
+$  SIGINT¡Ê¥Ç¥Ð¥Ã¥°ÍÑ¡Ë
+$  SIGBUS¡Ê¥Ç¥Ð¥Ã¥°ÍÑ¡Ë
+$  SIGSEGV¡Ê¥Ç¥Ð¥Ã¥°ÍÑ¡Ë
+$ 
+$IF !LENGTH(INT.INTPRI[SIGINT])$
+	$INT.INTPRI[SIGINT] = -7$
+$END$
+$IF !LENGTH(INT.INTPRI[SIGBUS])$
+	$INT.INTPRI[SIGBUS] = -7$
+$END$
+$IF !LENGTH(INT.INTPRI[SIGSEGV])$
+	$INT.INTPRI[SIGSEGV] = -7$
+$END$
+
+$ 
+$  ³ä¹þ€ß¥Ï¥ó¥É¥é€ÎœéŽü²œ€ËÉ¬Í×€ÊŸðÊó
+$ 
+
+$ ³ä¹þ€ß¥Ï¥ó¥É¥é¿ô
+#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.INTHDR[inhno]$, $INT.INTPRI[INTNO[inhno]]$)$NL$
+	$END$
+$END$
+$NL$
+
+$ ³ä¹þ€ß¥Ï¥ó¥É¥éœéŽü²œ¥Æ¡Œ¥Ö¥ë
+$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]$)), ($INT.INTPRI[INTNO[INH.INHNO[inhno]]]$) }
+		$ELSE$
+			$TAB${ ($INH.INHNO[inhno]$), ($INH.INHATR[inhno]$), (FP)($INH.INTHDR[inhno]$), ($INT.INTPRI[INTNO[INH.INHNO[inhno]]]$) }
+		$END$
+	$END$$NL$
+	};$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const INHINIB, _kernel_inhinib_table);$NL$
+$END$
+$NL$
+
+$ 
+$  ³ä¹þ€ßÍ¥ÀèÅÙËè€Î€œ€ì°Ê²Œ€Î³ä¹þ€ßÍ×µá€ò¥Þ¥¹¥¯€¹€ë€¿€á€ÎŸðÊó€Î¥Æ¡Œ¥Ö¥ë
+$ 
+const sigset_t _kernel_sigmask_table[8] = {$NL$
+$FOREACH intpri { 0, -1,..., -6 }$
+	$intmask = 0$
+	$FOREACH intno { 1, 2, ..., 31 }$
+		$IF ALT(INT.INTPRI[intno], 0) >= intpri$
+			$intmask = intmask | (1 << (intno - 1))$
+		$END$
+	$END$
+	$TAB$UINT32_C($FORMAT("0x%08x", intmask)$),$NL$
+$END$
+$TAB$UINT32_C($FORMAT("0x%08x", intmask)$)$NL$
+};$NL$
+
+$ 
+$  ³ä¹þ€ßÍ×µá¶Ø»ß¥Õ¥é¥°ŒÂžœ€Î€¿€á€ÎÊÑ¿ô€ÎœéŽüÃÍ
+$ 
+$sigmask_disint_init = 0$
+$FOREACH intno INT.ORDER_LIST$
+	$IF (INT.INTATR[intno] & TA_ENAINT) == 0$
+		$sigmask_disint_init = sigmask_disint_init | (1 << (INT.INTNO[intno] - 1))$
+	$END$
+$END$
+$NL$
+const sigset_t	_kernel_sigmask_disint_init = 
+		UINT32_C($FORMAT("0x%08x", sigmask_disint_init)$);$NL$
Index: /target/macosx_gcc/target_cfg1_out.h
===================================================================
--- /target/macosx_gcc/target_cfg1_out.h	(revision 7)
+++ /target/macosx_gcc/target_cfg1_out.h	(revision 7)
@@ -0,0 +1,12 @@
+/*
+ *  @(#) $Id$
+ */
+
+/*
+ *		cfg1_out.c€Î¥ê¥ó¥¯€ËÉ¬Í×€Ê¥¹¥¿¥Ö€ÎÄêµÁ
+ */
+
+int main()
+{
+	return(0);
+}
Index: /target/macosx_gcc/target_check.tf
===================================================================
--- /target/macosx_gcc/target_check.tf	(revision 7)
+++ /target/macosx_gcc/target_check.tf	(revision 7)
@@ -0,0 +1,8 @@
+$ 
+$ 		¥Ñ¥¹3€Î¥¿¡Œ¥²¥Ã¥È°ÍÂž¥Æ¥ó¥×¥ì¡Œ¥È¡ÊMac OS XÍÑ¡Ë
+$ 
+
+$ 
+$  Éžœà¥Æ¥ó¥×¥ì¡Œ¥È¥Õ¥¡¥€¥ë€Î¥€¥ó¥¯¥ë¡Œ¥É
+$ 
+$INCLUDE "kernel/kernel_check.tf"$
Index: /target/macosx_gcc/target_config.c
===================================================================
--- /target/macosx_gcc/target_config.c	(revision 7)
+++ /target/macosx_gcc/target_config.c	(revision 7)
@@ -0,0 +1,503 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2006-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$
+ */
+
+/*
+ *		¥¿¡Œ¥²¥Ã¥È°ÍÂž¥â¥ž¥å¡Œ¥ë¡ÊMac OS XÍÑ¡Ë
+ */
+
+#include "kernel_impl.h"
+#include "task.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#ifndef LOG_DSP_ENTER
+#define LOG_DSP_ENTER(p_tcb)
+#endif /* LOG_DSP_ENTER */
+
+#ifndef LOG_DSP_LEAVE
+#define LOG_DSP_LEAVE(p_tcb)
+#endif /* LOG_DSP_LEAVE */
+
+/*
+ *  TMIN_INTPRI€ÎÈÏ°Ï€Î¥Á¥§¥Ã¥¯
+ */
+#if (TMIN_INTPRI > -1) || (-6 > TMIN_INTPRI)
+#error TMIN_INTPRI out of range.
+#endif /* (TMIN_INTPRI > -1) || (-6 > TMIN_INTPRI) */
+
+/*
+ *  ³ä¹þ€ß¥í¥Ã¥¯¡¿CPU¥í¥Ã¥¯€Ø€Î°Ü¹Ô€Ç¥Þ¥¹¥¯€¹€ë¥·¥°¥Ê¥ë€òÊÝ»ý€¹€ëÊÑ¿ô
+ */
+sigset_t	sigmask_intlock;	/* ³ä¹þ€ß¥í¥Ã¥¯€Ç¥Þ¥¹¥¯€¹€ë¥·¥°¥Ê¥ë */
+sigset_t	sigmask_cpulock;	/* CPU¥í¥Ã¥¯€Ç¥Þ¥¹¥¯€¹€ë¥·¥°¥Ê¥ë */
+
+/*
+ *  CPU¥í¥Ã¥¯¥Õ¥é¥°ŒÂžœ€Î€¿€á€ÎÊÑ¿ô
+ */
+volatile bool_t		lock_flag;		/* CPU¥í¥Ã¥¯¥Õ¥é¥°€òÉœ€¹ÊÑ¿ô */
+volatile sigset_t	saved_sigmask;	/* ¥·¥°¥Ê¥ë¥Þ¥¹¥¯€òÊÝÂž€¹€ëÊÑ¿ô */
+
+/*
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ŒÂžœ€Î€¿€á€ÎÊÑ¿ô
+ */
+volatile PRI		ipm_value;		/* ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€òÉœ€¹ÊÑ¿ô */
+
+/*
+ *  ³ä¹þ€ßÍ×µá¶Ø»ß¥Õ¥é¥°ŒÂžœ€Î€¿€á€ÎÊÑ¿ô
+ */
+volatile sigset_t	sigmask_disint;	/* žÄÊÌ€Ë¥Þ¥¹¥¯€·€Æ€€€ë¥·¥°¥Ê¥ë */
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ãËÜÂÎ€Î³ä¹þ€ßÂÔ€ÁÃæ€Ç€¢€ë€³€È€òŒš€¹ÊÑ¿ô
+ */
+static bool_t	dispatcher_idle;	/* ³ä¹þ€ßÂÔ€ÁÃæ€Ç€¢€ë */
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ãËÜÂÎ
+ *
+ *  LOG_DSP_ENTER€ÈLOG_DSP_LEAVE€ò¡€dispatcher€ËÆþ€ì€º¡€€³€ì€òžÆ€ÓœÐ€¹
+ *  ŽØ¿ô€ÎÂŠ€ËÆþ€ì€Æ€€€ëÍýÍ³€ÏŒ¡€ÎÄÌ€ê¡¥LOG_DSP_ENTER€Ï¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á€Î
+ *  Æ°ºî³«»Ï»þ¡Êmain€«€éžÆ€Ð€ì€¿»þ¡Ë€Ë€Ï¡€žÆ€ÓœÐ€·€Æ€Ï€Ê€é€Ê€€€¿€á¡€
+ *  dispatcher€ËÆþ€ì€ë€³€È€¬€Ç€­€Ê€€¡¥LOG_DSP_LEAVE€Ï¡€ÀÚŽ¹€šžå€Î¥¿¥¹¥¯
+ *  €Î¥¹¥¿¥Ã¥¯€ÇžÆ€ÓœÐ€µ€Ê€±€ì€Ð€Ê€é€Ê€€€¿€á¡€_longjmp€òŒÂ¹Ô€·€¿žå€ËžÆ
+ *  €ÓœÐ€¹É¬Í×€¬€¢€ê¡€dispatcher€òžÆ€ÓœÐ€¹ŽØ¿ô€ÎÂŠ€ËÆþ€ì€Ê€±€ì€Ð€Ê€é€Ê
+ *  €€¡¥
+ */
+static void
+dispatcher(void)
+{
+	sigset_t	sigmask;
+
+	while ((p_runtsk = p_schedtsk) == NULL) {
+		/*
+		 *  CPU¥í¥Ã¥¯ŸõÂÖ€ò²òœü€¹€ëœàÈ÷€ò€¹€ë¡¥sigmask€Ë€Ï¡€CPU¥í¥Ã¥¯Ÿõ
+		 *  ÂÖ€Ë°Ü¹Ô€¹€ëÁ°€Î¥·¥°¥Ê¥ë¥Þ¥¹¥¯€òŒè€êœÐ€¹¡¥
+		 */
+		lock_flag = false;
+		sigassignset(&sigmask, &saved_sigmask);
+		do {
+			/*
+			 *  ³ä¹þ€ßÂÔ€Á€ÎŽÖ€ËÈ¯Àž€·€¿³ä¹þ€ß¥Ï¥ó¥É¥é€Ç€ÏSIGUSR2€ò
+			 *  raise€·€Ê€€€è€Š€Ë¡€dispatcher_idle€òtrue€Ë€¹€ë¡¥
+			 */
+			dispatcher_idle = true;
+			sigsuspend(&sigmask);			/* ³ä¹þ€ßÂÔ€Á */
+			dispatcher_idle = false;
+		} while (!reqflg);
+		reqflg = false;
+
+		/*
+		 *  CPU¥í¥Ã¥¯ŸõÂÖ€ËÌá€¹¡¥³ä¹þ€ßÂÔ€Á€ÎŽÖ€ËŒÂ¹Ô€·€¿³ä¹þ€ß¥Ï¥ó¥É¥é
+		 *  €Ë€è€ê¡€saved_sigmask€Ïœñ€­Ž¹€ï€ë²ÄÇœÀ­€¬€¢€ë€¿€á¡€žµ€ÎÃÍ€Ë
+		 *  Ìá€¹É¬Í×€¬€¢€ë¡¥
+		 */
+		sigassignset(&saved_sigmask, &sigmask);
+		lock_flag = true;
+	}
+	_longjmp(p_runtsk->tskctxb.env, 1);
+}
+
+/*
+ *  ºÇ¹âÍ¥Àèœç°Ì¥¿¥¹¥¯€Ø€Î¥Ç¥£¥¹¥Ñ¥Ã¥Á
+ */
+void
+dispatch(void)
+{
+#ifdef TOPPERS_SUPPORT_OVRHDR
+	ovrtimer_stop();					/* ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÎÄä»ß */
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+	if (_setjmp(p_runtsk->tskctxb.env) == 0) {
+		LOG_DSP_ENTER(p_runtsk);
+		dispatcher();
+		assert(0);
+	}
+	LOG_DSP_LEAVE(p_runtsk);
+#ifdef TOPPERS_SUPPORT_OVRHDR
+	ovrtimer_start();					/* ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÎÆ°ºî³«»Ï */
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+	calltex();
+}
+
+/*
+ *  ºÇ¹âÍ¥Àèœç°Ì¥¿¥¹¥¯€Ø€Î¥Ç¥£¥¹¥Ñ¥Ã¥Á¡Ê¥·¥°¥Ê¥ë¥Ï¥ó¥É¥éÍÑ¡Ë
+ */
+static void
+dispatch_handler(int sig, struct __siginfo *p_info, void *p_ctx)
+{
+#ifdef TOPPERS_SUPPORT_OVRHDR
+	/*
+	 *  ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éµ¡Çœ€ò¥µ¥Ý¡Œ¥È€¹€ëŸì¹ç€Ë€Ï¡€dispatch_handler
+	 *  €ÏÉ¬€ºµ¯Æ°€µ€ì€ë¡¥¥Ç¥£¥¹¥Ñ¥Ã¥Á€¬É¬Í×€Ê€€Ÿì¹ç€Ë€Ï¡€¥ª¡Œ¥Ð¥é¥ó¥Ï
+	 *  ¥ó¥É¥é€ÎÆ°ºî³«»Ï€Î€ß€ò¹Ô€Š¡¥
+	 */
+	if (!(!dispatcher_idle && reqflg)) {
+		ovrtimer_start();				/* ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÎÆ°ºî³«»Ï */
+		return;
+	}
+	reqflg = false;
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+
+	/*
+	 *  ¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é€ÎŒÂ¹Ô³«»ÏÁ°€Î¥·¥°¥Ê¥ë¥Þ¥¹¥¯€òsaved_sigmask€ËÂå
+	 *  Æþ€·¡€CPU¥í¥Ã¥¯ŸõÂÖ€Ë°Ü¹Ô€¹€ë¡¥
+	 */
+	sigassignset(&saved_sigmask, &(((ucontext_t *) p_ctx)->uc_sigmask));
+	lock_flag = true;
+
+	if (dspflg && p_runtsk != p_schedtsk) {
+		if (_setjmp(p_runtsk->tskctxb.env) == 0) {
+			LOG_DSP_ENTER(p_runtsk);
+			dispatcher();
+			assert(0);
+		}
+		LOG_DSP_LEAVE(p_runtsk);
+	}
+#ifdef TOPPERS_SUPPORT_OVRHDR
+	ovrtimer_start();					/* ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÎÆ°ºî³«»Ï */
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+	calltex();
+
+	/*
+	 *  ¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é€«€é€Î¥ê¥¿¡Œ¥óžå€Î¥·¥°¥Ê¥ë¥Þ¥¹¥¯€¬saved_sigmask
+	 *  €Ë€Ê€ë€è€Š€ËÀßÄê€·¡€CPU¥í¥Ã¥¯ŸõÂÖ€ò²òœü€¹€ë¡¥
+	 */
+	lock_flag = false;
+	sigassignset(&(((ucontext_t *) p_ctx)->uc_sigmask), &saved_sigmask);
+}
+
+/*
+ *  žœºß€Î¥³¥ó¥Æ¥­¥¹¥È€òŒÎ€Æ€Æ¥Ç¥£¥¹¥Ñ¥Ã¥Á
+ */
+void
+exit_and_dispatch(void)
+{
+	LOG_DSP_ENTER(p_runtsk);
+	dispatcher();
+	assert(0);
+}
+
+/*
+ *  ³ä¹þ€ß¥Ï¥ó¥É¥éœÐžýœèÍý
+ *
+ *  ³ä¹þ€ß¥Ï¥ó¥É¥éÃæ€Ç€Ï¡€¥«¡Œ¥Í¥ëŽÉÍý€Î³ä¹þ€ß€ò¶Ø»ß€·€Æ€€€ë€¿€á¡€œÐžý
+ *  œèÍý€Ç³ä¹þ€ß€ò¶Ø»ß€¹€ëÉ¬Í×€Ï€Ê€€¡¥
+ */
+void
+ret_int(void)
+{
+#ifndef TOPPERS_SUPPORT_OVRHDR
+	/*
+	 *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã€Îµ¯Æ°€òÍ×µá€¹€ë¡¥
+	 *
+	 *  reqflg€ò¥Á¥§¥Ã¥¯€·€¿ÄŸžå€Ë³ä¹þ€ß€¬Æþ€Ã€Æ€â¡€Æþ€Ã€¿ÂŠ€Î³ä¹þ€ß€Ç
+	 *  ¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã€Îµ¯Æ°€òÍ×µá€¹€ë€¿€á¡€reqflg€ò¥Á¥§¥Ã¥¯€¹€ë
+	 *  Á°€Ë³ä¹þ€ß€ò¶Ø»ß€¹€ëÉ¬Í×€¬€Ê€€¡¥
+	 */
+	if (!dispatcher_idle && reqflg) {
+		reqflg = false;
+		raise(SIGUSR2);
+	}
+#else /* TOPPERS_SUPPORT_OVRHDR */
+	/*
+	 *  ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éµ¡Çœ€ò¥µ¥Ý¡Œ¥È€¹€ëŸì¹ç€Ë€Ï¡€¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ
+	 *  €òÆ°ºî³«»Ï€¹€ë€¿€á€Ë¡€dispatch_handler€òÉ¬€ºµ¯Æ°€¹€ë¡¥
+	 */
+	raise(SIGUSR2);
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+}
+
+/*
+ *  CPUÎã³°¥Ï¥ó¥É¥éœÐžýœèÍý
+ */
+void
+ret_exc(void)
+{
+#ifndef TOPPERS_SUPPORT_OVRHDR
+	/*
+	 *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã€Îµ¯Æ°€òÍ×µá€¹€ë¡¥
+	 *
+	 *  reqflg€ò¥Á¥§¥Ã¥¯€·€¿ÄŸžå€Ë³ä¹þ€ß€¬Æþ€Ã€Æ€â¡€Æþ€Ã€¿ÂŠ€Î³ä¹þ€ß€Ç
+	 *  ¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã€Îµ¯Æ°€òÍ×µá€¹€ë€¿€á¡€reqflg€ò¥Á¥§¥Ã¥¯€¹€ë
+	 *  Á°€Ë³ä¹þ€ß€ò¶Ø»ß€¹€ëÉ¬Í×€¬€Ê€€¡¥
+	 */
+	if (!dispatcher_idle && reqflg) {
+		reqflg = false;
+		raise(SIGUSR2);
+	}
+#else /* TOPPERS_SUPPORT_OVRHDR */
+	/*
+	 *  ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éµ¡Çœ€ò¥µ¥Ý¡Œ¥È€¹€ëŸì¹ç€Ë€Ï¡€¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ
+	 *  €òÆ°ºî³«»Ï€¹€ë€¿€á€Ë¡€dispatch_handler€òÉ¬€ºµ¯Æ°€¹€ë¡¥
+	 */
+	raise(SIGUSR2);
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+}
+
+/*
+ *  ¥«¡Œ¥Í¥ë€ÎœªÎ»œèÍý€ÎžÆœÐ€·
+ */
+void
+call_exit_kernel(void)
+{
+	sigset_t			sigmask;
+	struct sigaction	sigact;
+
+	/*
+	 *  SIGUSR2€Î¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é€Ëexit_kernel€òÅÐÏ¿
+	 */
+	sigact.sa_handler = (void (*)(int)) exit_kernel;
+	sigact.sa_flags = SA_ONSTACK;
+	sigemptyset(&(sigact.sa_mask));
+	sigaction(SIGUSR2, &sigact, NULL);
+
+	/*
+	 *  SIGUSR2€Î¥Þ¥¹¥¯€ò²òœü
+	 */
+	sigemptyset(&sigmask);
+	sigaddset(&sigmask, SIGUSR2);
+	sigprocmask(SIG_UNBLOCK, &sigmask, NULL);
+
+	/*
+	 *  exit_kernel€ÎžÆœÐ€·
+	 */
+	raise(SIGUSR2);
+	assert(0);
+	while (true);
+}
+
+/*
+ *  ¥¿¥¹¥¯³«»Ï»þœèÍý
+ */
+void
+start_r(void)
+{
+#ifdef TOPPERS_SUPPORT_OVRHDR
+	ovrtimer_start();					/* ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÎÆ°ºî³«»Ï */
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+	t_unlock_cpu();
+	(*(p_runtsk->p_tinib->task))(p_runtsk->p_tinib->exinf);
+	(void) ext_tsk();
+	assert(0);
+}
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎœéŽü²œ
+ */
+void
+target_initialize(void)
+{
+	struct sigaction	sigact;
+
+	/*
+	 *  ³ä¹þ€ß¥í¥Ã¥¯€Ø€Î°Ü¹Ô€Ç¥Þ¥¹¥¯€¹€ë¥·¥°¥Ê¥ë€òÊÝ»ý€¹€ëÊÑ¿ô€ÎœéŽü²œ
+	 */
+	sigassignset(&sigmask_intlock, &(sigmask_table[6]));
+	sigaddset(&sigmask_intlock, SIGUSR2);
+
+	/*
+	 *  CPU¥í¥Ã¥¯€Ø€Î°Ü¹Ô€Ç¥Þ¥¹¥¯€¹€ë¥·¥°¥Ê¥ë€òÊÝ»ý€¹€ëÊÑ¿ô€ÎœéŽü²œ
+	 */
+	sigassignset(&sigmask_cpulock, &(sigmask_table[-TMIN_INTPRI]));
+	sigaddset(&sigmask_cpulock, SIGUSR2);
+
+	/*
+	 *  CPU¥í¥Ã¥¯¥Õ¥é¥°ŒÂžœ€Î€¿€á€ÎÊÑ¿ô€ÎœéŽü²œ
+	 *
+	 *  saved_sigmask€Ï¡€¥«¡Œ¥Í¥ëµ¯Æ°»þ€ËžÆ€ÓœÐ€¹set_sigmask€ÇœéŽü²œ€µ
+	 *  €ì€ë¡¥
+	 */
+	lock_flag = true;
+
+	/*
+	 *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ŒÂžœ€Î€¿€á€ÎÊÑ¿ô€ÎœéŽü²œ
+	 */
+	ipm_value = TIPM_ENAALL;
+
+	/*
+	 *  ³ä¹þ€ßÍ×µá¶Ø»ß¥Õ¥é¥°ŒÂžœ€Î€¿€á€ÎÊÑ¿ô€ÎœéŽü²œ
+	 */
+	sigassignset(&sigmask_disint, &sigmask_disint_init);
+
+	/*
+	 *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ãËÜÂÎ€Î¥¢¥€¥É¥ë¥ë¡Œ¥×Ãæ€Ç€¢€ë€³€È€òŒš€¹ÊÑ¿ô€ÎœéŽü²œ
+	 */
+	dispatcher_idle = false;
+
+	/*
+	 *  SIGUSR2€Î¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é€Ë¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã€òÅÐÏ¿
+	 */
+	sigact.sa_sigaction = dispatch_handler;
+	sigact.sa_flags = SA_SIGINFO;
+	sigassignset(&(sigact.sa_mask), &sigmask_cpulock);
+	sigaction(SIGUSR2, &sigact, NULL);
+}
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎœªÎ»œèÍý
+ */
+void
+target_exit(void)
+{
+	/*
+	 *  ¥×¥í¥»¥¹€ÎœªÎ»œèÍý
+	 */
+	exit(0);
+}
+
+/*
+ *  ¥·¥¹¥Æ¥à¥í¥°€ÎÄã¥ì¥Ù¥ëœÐÎÏ€Î€¿€á€ÎÊž»úœÐÎÏ
+ */
+void
+target_fput_log(char c)
+{
+	write(STDERR_FILENO, &c, 1);
+}
+
+/*
+ *  ³ä¹þ€ßŽÉÍýµ¡Çœ€ÎœéŽü²œ
+ */
+void
+initialize_interrupt(void)
+{
+	uint_t			i;
+	const INHINIB	*p_inhinib;
+
+	for (i = 0; i < tnum_inhno; i++) {
+		p_inhinib = &(inhinib_table[i]);
+		x_define_inh(p_inhinib->inhno, p_inhinib->int_entry,
+												p_inhinib->intpri);
+	}
+}
+
+/*
+ *  ¥á¥€¥óŽØ¿ô
+ */
+int
+main()
+{
+	sigset_t			sigmask;
+	stack_t				ss;
+	struct sigaction	sigact;
+
+	/*
+	 *  SIGUSR2°Ê³°€Î€¹€Ù€Æ€Î¥·¥°¥Ê¥ë€ò¥Þ¥¹¥¯
+	 */
+	sigfillset(&sigmask);
+	sigdelset(&sigmask, SIGUSR2);
+	sigprocmask(SIG_BLOCK, &sigmask, NULL);
+
+	/*
+	 *  ¥·¥°¥Ê¥ë¥¹¥¿¥Ã¥¯¡ÊÈó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍÑ€Î¥¹¥¿¥Ã¥¯¡Ë€ÎÀßÄê
+	 */
+	ss.ss_sp = (char *)(istk);
+	ss.ss_size = (int)(istksz);
+	ss.ss_flags = 0;
+	sigaltstack(&ss, NULL);
+
+	/*
+	 *  SIGUSR2€Î¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é€Ësta_ker€òÅÐÏ¿
+	 */
+	sigact.sa_handler = (void (*)(int)) sta_ker;
+	sigact.sa_flags = SA_ONSTACK;
+	sigemptyset(&(sigact.sa_mask));
+	sigaction(SIGUSR2, &sigact, NULL);
+
+	/*
+	 *  sta_ker€ÎžÆœÐ€·
+	 */
+	raise(SIGUSR2);
+
+	/*
+	 *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã€ÎÆ°ºî³«»Ï
+	 *
+	 *  target_initialize€Ç¡€lock_flag€òtrue€Ë¡€ipm_value€òTIPM_ENAALL
+	 *  €ËœéŽü²œ€·€Æ€€€ë€¿€á¡€set_sigmask€òžÆ€ÓœÐ€·€Æ¥·¥°¥Ê¥ë¥Þ¥¹¥¯€È
+	 *  saved_sigmask€òÀßÄê€¹€ë€³€È€Ç¡€CPU¥í¥Ã¥¯ŸõÂÖ¡Š¡Ê¥â¥Ç¥ëŸå€Î¡Ë³ä
+	 *  ¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€¬TIPM_ENAALL€ÎŸõÂÖ€Ë€Ê€ë¡¥
+	 *
+	 *  €Þ€¿¡€initialize_task€Çdisdsp€òfalse€ËœéŽü²œ€·€Æ€€€ë€¿€á¡€¥Ç¥£
+	 *  ¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ€Ë€Ê€Ã€Æ€€€ë¡¥
+	 */
+	set_sigmask();
+	dispatcher();
+	assert(0);
+	return(0);
+}
+
+/*
+ *  ¥«¡Œ¥Í¥ë€Î³ä€êÉÕ€±€ë¥á¥â¥êÎÎ°è€ÎŽÉÍý
+ *
+ *  TLSF¡Ê¥ª¡Œ¥×¥ó¥œ¡Œ¥¹€Î¥á¥â¥êŽÉÍý¥é¥€¥Ö¥é¥ê¡Ë€òÍÑ€€€ÆŒÂžœ¡¥
+ */
+#ifdef TOPPERS_SUPPORT_DYNAMIC_CRE
+
+#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);
+	}
+}
+
+#endif /* TOPPERS_SUPPORT_DYNAMIC_CRE */
Index: /target/macosx_gcc/target_config.h
===================================================================
--- /target/macosx_gcc/target_config.h	(revision 7)
+++ /target/macosx_gcc/target_config.h	(revision 7)
@@ -0,0 +1,671 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2006-2014 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$
+ */
+
+/*
+ *		¥¿¡Œ¥²¥Ã¥È°ÍÂž¥â¥ž¥å¡Œ¥ë¡ÊMac OS XÍÑ¡Ë
+ *
+ *  ¥«¡Œ¥Í¥ë€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€Î¥€¥ó¥¯¥ë¡Œ¥É¥Õ¥¡¥€¥ë¡¥kernel_impl.h€Î¥¿¡Œ
+ *  ¥²¥Ã¥È°ÍÂžÉô€Î°ÌÃÖÉÕ€±€È€Ê€ë¡¥
+ */
+
+#ifndef TOPPERS_TARGET_CONFIG_H
+#define TOPPERS_TARGET_CONFIG_H
+
+/*
+ *  Éžœà€Î¥€¥ó¥¯¥ë¡Œ¥É¥Õ¥¡¥€¥ë
+ */
+#ifndef TOPPERS_MACRO_ONLY
+#include <sys/types.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <setjmp.h>
+#include <signal.h>
+#include <stdio.h>
+
+#ifdef TOPPERS_SUPPORT_OVRHDR
+#include "overrun.h"
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È¥·¥¹¥Æ¥à€ÎOS°ÍÂž€ÎÄêµÁ
+ */
+#include "macosx.h"
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥ÈÄêµÁ€Î¥ª¥Ö¥ž¥§¥¯¥ÈÂ°À­
+ */
+#define TARGET_INHATR	TA_NONKERNEL	/* ¥«¡Œ¥Í¥ëŽÉÍý³°€Î³ä¹þ€ß */
+
+/*
+ *  ¥š¥é¡Œ¥Á¥§¥Ã¥¯ÊýË¡€Î»ØÄê
+ */
+#define CHECK_STKSZ_ALIGN	16	/* ¥¹¥¿¥Ã¥¯¥µ¥€¥º€Î¥¢¥é¥€¥óÃ±°Ì */
+#define CHECK_FUNC_ALIGN	4	/* ŽØ¿ô€Î¥¢¥é¥€¥óÃ±°Ì */
+#define CHECK_FUNC_NONNULL		/* ŽØ¿ô€ÎÈóNULL¥Á¥§¥Ã¥¯ */
+#define CHECK_STACK_ALIGN	16	/* ¥¹¥¿¥Ã¥¯ÎÎ°è€Î¥¢¥é¥€¥óÃ±°Ì */
+#define CHECK_STACK_NONNULL		/* ¥¹¥¿¥Ã¥¯ÎÎ°è€ÎÈóNULL¥Á¥§¥Ã¥¯ */
+#define CHECK_MPF_ALIGN		4	/* žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÎÎ°è€Î¥¢¥é¥€¥óÃ±°Ì */
+#define CHECK_MPF_NONNULL		/* žÇÄêÄ¹¥á¥â¥ê¥×¡Œ¥ëÎÎ°è€ÎÈóNULL¥Á¥§¥Ã¥¯ */
+#define CHECK_MB_ALIGN		4	/* ŽÉÍýÎÎ°è€Î¥¢¥é¥€¥óÃ±°Ì */
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°€ËŽØ€¹€ëÀßÄê
+ */
+#ifdef TOPPERS_ENABLE_TRACE
+#include "logtrace/trace_config.h"
+#endif /* TOPPERS_ENABLE_TRACE */
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
+ */
+#ifndef LOG_INH_ENTER
+#define LOG_INH_ENTER(inhno)
+#endif /* LOG_INH_ENTER */
+
+#ifndef LOG_INH_LEAVE
+#define LOG_INH_LEAVE(inhno)
+#endif /* LOG_INH_LEAVE */
+
+#ifndef LOG_EXC_ENTER
+#define LOG_EXC_ENTER(excno)
+#endif /* LOG_EXC_ENTER */
+
+#ifndef LOG_EXC_LEAVE
+#define LOG_EXC_LEAVE(excno)
+#endif /* LOG_EXC_LEAVE */
+
+/*
+ *  ¥¢¡Œ¥­¥Æ¥¯¥Á¥ã¡Ê¥×¥í¥»¥Ã¥µ¡Ë°ÍÂž€ÎÄêµÁ
+ */
+#if defined(__ppc__)
+
+#define JMPBUF_PC				21			/* jmp_bufÃæ€Ç€ÎPC€Î°ÌÃÖ */
+#define JMPBUF_SP				0			/* jmp_bufÃæ€Ç€ÎSP€Î°ÌÃÖ */
+#define TASK_STACK_MERGIN		4U
+#define DEFAULT_ISTKSZ			SIGSTKSZ	/* ¥·¥°¥Ê¥ë¥¹¥¿¥Ã¥¯€Î¥µ¥€¥º */
+
+#elif defined(__i386__)
+
+#define JMPBUF_PC				12			/* jmp_bufÃæ€Ç€ÎPC€Î°ÌÃÖ */
+#define JMPBUF_SP				9			/* jmp_bufÃæ€Ç€ÎSP€Î°ÌÃÖ */
+#define TASK_STACK_MERGIN		4U 
+#define DEFAULT_ISTKSZ			SIGSTKSZ	/* ¥·¥°¥Ê¥ë¥¹¥¿¥Ã¥¯€Î¥µ¥€¥º */
+
+#elif defined(__x86_64__)
+
+#error architecture not supported
+#define JMPBUF_PC				7			/* jmp_bufÃæ€Ç€ÎPC€Î°ÌÃÖ */
+#define JMPBUF_SP				2			/* jmp_bufÃæ€Ç€ÎSP€Î°ÌÃÖ */
+#define TASK_STACK_MERGIN		8U 
+#define DEFAULT_ISTKSZ			SIGSTKSZ	/* ¥·¥°¥Ê¥ë¥¹¥¿¥Ã¥¯€Î¥µ¥€¥º */
+
+#else
+#error architecture not supported
+#endif
+
+/* 
+ *  Éžœà€Î³ä¹þ€ßŽÉÍýµ¡Çœ€ÎœéŽü²œ€ò¹Ô€ï€Ê€€€¿€á€ÎÄêµÁ
+ */
+#define OMIT_INITIALIZE_INTERRUPT
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  ¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È¥Ö¥í¥Ã¥¯€ÎÄêµÁ
+ */
+typedef struct task_context_block {
+	jmp_buf		env;			/* ¥³¥ó¥Æ¥­¥¹¥ÈŸðÊó */
+} TSKCTXB;
+
+/*
+ *  ³ä¹þ€ß¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯
+ *
+ *  Éžœà€Î³ä¹þ€ß¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯€Ë¡€³ä¹þ€ßÍ¥ÀèÅÙ€òÄÉ²Ã€·€¿€â€Î¡¥
+ */
+typedef struct interrupt_handler_initialization_block {
+	INHNO		inhno;			/* ³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ */
+	ATR			inhatr;			/* ³ä¹þ€ß¥Ï¥ó¥É¥éÂ°À­ */
+	FP			int_entry;		/* ³ä¹þ€ß¥Ï¥ó¥É¥é€ÎœÐÆþžýœèÍý€ÎÈÖÃÏ */
+	PRI			intpri;			/* ³ä¹þ€ßÍ¥ÀèÅÙ */
+} INHINIB;
+
+/*
+ *  ³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ€Î¿ô¡Êkernel_cfg.c¡Ë
+ */
+extern const uint_t	tnum_inhno;
+
+/*
+ *  ³ä¹þ€ß¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢¡Êkernel_cfg.c¡Ë
+ */
+extern const INHINIB	inhinib_table[];
+
+/*
+ *  ¥·¥°¥Ê¥ë¥»¥Ã¥ÈÁàºî¥Þ¥¯¥í
+ */
+#define sigequalset(set1, set2)		(*(set1) == *(set2))
+#define sigassignset(set1, set2)	(*(set1) = *(set2))
+#define sigjoinset(set1, set2)		(*(set1) |= *(set2))
+
+/*
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€Ë€è€ë¥·¥°¥Ê¥ë¥Þ¥¹¥¯¡Êkernel_cfg.c¡Ë
+ *
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€Ë€è€Ã€Æ¥Þ¥¹¥¯€µ€ì€Æ€€€ë³ä¹þ€ß€È¡€³ä¹þ€ßÂ°À­€¬Àß
+ *  Äê€µ€ì€Æ€€€Ê€€³ä¹þ€ß€ËÂÐ±þ€¹€ë¥·¥°¥Ê¥ë€ò¥Þ¥¹¥¯€¹€ë€¿€á€Î¥·¥°¥Ê¥ë¥Þ
+ *  ¥¹¥¯€òÊÝ»ý€¹€ëÇÛÎó¡¥ÇÛÎó€Î¥€¥ó¥Ç¥Ã¥¯¥¹€Ï¡€³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€ÎÉä¹æ
+ *  €òÈ¿ÅŸ€·€¿€â€Î¡¥
+ *
+ *  sigmask_table[0]¡§³ä¹þ€ßÂ°À­€¬ÀßÄê€µ€ì€Æ€€€Ê€€³ä¹þ€ß€ËÂÐ±þ€¹€ë¥·¥°
+ *                    ¥Ê¥ë€Î€ß€ò¥Þ¥¹¥¯€¹€ë¥·¥°¥Ê¥ë¥Þ¥¹¥¯
+ *  sigmask_table[-TMIN_INTPRI]¡§¥«¡Œ¥Í¥ëŽÉÍý€Î³ä¹þ€ß€¹€Ù€Æ€È¡€³ä¹þ€ßÂ°
+ *                    À­€¬ÀßÄê€µ€ì€Æ€€€Ê€€³ä¹þ€ß€ËÂÐ±þ€¹€ë¥·¥°¥Ê¥ë€ò¥Þ
+ *                    ¥¹¥¯€¹€ë¥·¥°¥Ê¥ë¥Þ¥¹¥¯
+ *  sigmask_table[6]¡§NMI€ÈSIGUSR2€òœü€¯€¹€Ù€Æ€Î³ä¹þ€ß€È¡€³ä¹þ€ßÂ°À­€¬Àß
+ *                    Äê€µ€ì€Æ€€€Ê€€³ä¹þ€ß€ËÂÐ±þ€¹€ë¥·¥°¥Ê¥ë€ò¥Þ¥¹¥¯€¹€ë
+ *                    ¥·¥°¥Ê¥ë¥Þ¥¹¥¯
+ *  sigmask_table[7]¡§sigmask_table[6]€ÈÆ±€žÃÍ
+ */
+extern const sigset_t sigmask_table[8];
+
+/*
+ *  ³ä¹þ€ßÍ×µá¶Ø»ß¥Õ¥é¥°ŒÂžœ€Î€¿€á€ÎÊÑ¿ô€ÎœéŽüÃÍ¡Êkernel_cfg.c¡Ë
+ */
+extern const sigset_t sigmask_disint_init;
+
+/*
+ *  ³ä¹þ€ß¥í¥Ã¥¯¡¿CPU¥í¥Ã¥¯€Ø€Î°Ü¹Ô€Ç¥Þ¥¹¥¯€¹€ë¥·¥°¥Ê¥ë€òÊÝ»ý€¹€ëÊÑ¿ô
+ */
+extern sigset_t	sigmask_intlock;	/* ³ä¹þ€ß¥í¥Ã¥¯€Ç¥Þ¥¹¥¯€¹€ë¥·¥°¥Ê¥ë */
+extern sigset_t	sigmask_cpulock;	/* CPU¥í¥Ã¥¯€Ç¥Þ¥¹¥¯€¹€ë¥·¥°¥Ê¥ë */
+
+/*
+ *  ¥³¥ó¥Æ¥­¥¹¥È€Î»²ŸÈ
+ */
+Inline bool_t
+sense_context(void)
+{
+	stack_t	ss;
+
+	sigaltstack(NULL, &ss);
+	return((ss.ss_flags & SA_ONSTACK) != 0);
+}
+
+/*
+ *  CPU¥í¥Ã¥¯¥Õ¥é¥°ŒÂžœ€Î€¿€á€ÎÊÑ¿ô
+ */
+extern volatile bool_t		lock_flag;		/* CPU¥í¥Ã¥¯¥Õ¥é¥°€òÉœ€¹ÊÑ¿ô */
+extern volatile sigset_t	saved_sigmask;	/* ¥·¥°¥Ê¥ë¥Þ¥¹¥¯€òÊÝÂž€¹€ëÊÑ¿ô */
+
+/*
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ŒÂžœ€Î€¿€á€ÎÊÑ¿ô
+ */
+extern volatile PRI			ipm_value;		/* ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€òÉœ€¹ÊÑ¿ô */
+
+/*
+ *  ³ä¹þ€ßÍ×µá¶Ø»ß¥Õ¥é¥°ŒÂžœ€Î€¿€á€ÎÊÑ¿ô
+ */
+extern volatile sigset_t	sigmask_disint;	/* žÄÊÌ€Ë¥Þ¥¹¥¯€·€Æ€€€ë¥·¥°¥Ê¥ë */
+
+/*
+ *  ¥·¥°¥Ê¥ë¥Þ¥¹¥¯€ÎÀßÄê
+ *
+ *  žœºß€ÎŸõÂÖ¡Ê¥³¥ó¥Æ¥­¥¹¥È¡€CPU¥í¥Ã¥¯¥Õ¥é¥°¡€³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡€³ä¹þ
+ *  €ß¶Ø»ß¥Õ¥é¥°¡Ë€ò»²ŸÈ€·€Æ¡€žœºß€Î¥·¥°¥Ê¥ë¥Þ¥¹¥¯€Èsaved_sigmask€òÅ¬ÀÚ
+ *  €ÊÃÍ€ËÀßÄê€¹€ë¡¥
+ */
+Inline void
+set_sigmask(void)
+{
+	sigset_t	sigmask;
+
+	sigassignset(&sigmask, &(sigmask_table[-ipm_value]));
+	sigjoinset(&sigmask, &sigmask_disint);
+	if (sense_context()) {
+		sigaddset(&sigmask, SIGUSR2);
+	}
+	if (lock_flag) {
+		sigassignset(&saved_sigmask, &sigmask);
+		sigjoinset(&sigmask, &sigmask_cpulock);
+	}
+	sigprocmask(SIG_SETMASK, &sigmask, NULL);
+}
+
+/*
+ *  CPU¥í¥Ã¥¯ŸõÂÖ€Ø€Î°Ü¹Ô
+ */
+Inline void
+x_lock_cpu(void)
+{
+	assert(!lock_flag);
+	sigprocmask(SIG_BLOCK, &sigmask_cpulock, (sigset_t *) &saved_sigmask);
+	lock_flag = true;
+}
+
+#define t_lock_cpu()	x_lock_cpu()
+#define i_lock_cpu()	x_lock_cpu()
+
+/*
+ *  CPU¥í¥Ã¥¯ŸõÂÖ€Î²òœü
+ */
+Inline void
+x_unlock_cpu(void)
+{
+	assert(lock_flag);
+	lock_flag = false;
+	sigprocmask(SIG_SETMASK, (sigset_t *) &saved_sigmask, NULL);
+}
+
+#define t_unlock_cpu()	x_unlock_cpu()
+#define i_unlock_cpu()	x_unlock_cpu()
+
+/*
+ *  CPU¥í¥Ã¥¯ŸõÂÖ€Î»²ŸÈ
+ */
+Inline bool_t
+x_sense_lock(void)
+{
+	return(lock_flag);
+}
+
+#define t_sense_lock()	x_sense_lock()
+#define i_sense_lock()	x_sense_lock()
+
+/*
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€ÎÀßÄê
+ */
+Inline void
+x_set_ipm(PRI intpri)
+{
+	ipm_value = intpri;
+	set_sigmask();
+}
+
+#define t_set_ipm(intpri)	x_set_ipm(intpri)
+#define i_set_ipm(intpri)	x_set_ipm(intpri)
+
+/*
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€Î»²ŸÈ
+ */
+Inline PRI
+x_get_ipm(void)
+{
+	return(ipm_value);
+}
+
+#define t_get_ipm()	x_get_ipm()
+#define i_get_ipm()	x_get_ipm()
+
+/*
+ *  ³ä¹þ€ßÈÖ¹æ€ÎÈÏ°Ï€ÎÈœÄê
+ */
+#define	VALID_INTNO(intno)	(1 <= (intno) && (intno) <= 30 \
+								&& (intno) != SIGKILL && (intno) != SIGSTOP)
+#define	VALID_INTNO_CREISR(intno)	VALID_INTNO(intno)
+#define	VALID_INTNO_DISINT(intno)	VALID_INTNO(intno)
+
+/*
+ *  ³ä¹þ€ßÍ×µá¶Ø»ß¥Õ¥é¥°€Î¥»¥Ã¥È
+ *
+ *  ³ä¹þ€ßÂ°À­€¬ÀßÄê€µ€ì€Æ€€€Ê€€³ä¹þ€ßÍ×µá¥é¥€¥ó€ËÂÐ€·€Æ³ä¹þ€ßÍ×µá¶Ø»ß
+ *  ¥Õ¥é¥°€ò¥»¥Ã¥È€·€è€Š€È€·€¿Ÿì¹ç€Ë€Ï¡€false€òÊÖ€¹¡¥
+ */
+Inline bool_t
+x_disable_int(INTNO intno)
+{
+	if (sigismember(&(sigmask_table[0]), intno)
+				|| !sigismember(&(sigmask_table[7]), intno)) {
+		return(false);
+	}
+	sigaddset(&sigmask_disint, intno);
+	set_sigmask();
+	return(true);
+}
+
+#define t_disable_int(intno)	x_disable_int(intno)
+#define i_disable_int(intno)	x_disable_int(intno)
+
+/*
+ *  ³ä¹þ€ßÍ×µá¶Ø»ß¥Õ¥é¥°€Î¥¯¥ê¥¢
+ *
+ *  ³ä¹þ€ßÂ°À­€¬ÀßÄê€µ€ì€Æ€€€Ê€€³ä¹þ€ßÍ×µá¥é¥€¥ó€ËÂÐ€·€Æ³ä¹þ€ßÍ×µá¶Ø»ß
+ *  ¥Õ¥é¥°€ò¥¯¥ê¥¢€·€è€Š€È€·€¿Ÿì¹ç€Ë€Ï¡€false€òÊÖ€¹¡¥
+ */
+Inline bool_t
+x_enable_int(INTNO intno)
+{
+	if (sigismember(&(sigmask_table[0]), intno)
+				|| !sigismember(&(sigmask_table[7]), intno)) {
+		return(false);
+	}
+	sigdelset(&sigmask_disint, intno);
+	set_sigmask();
+	return(true);
+}
+
+#define t_enable_int(intno)		x_enable_int(intno)
+#define i_enable_int(intno)		x_enable_int(intno)
+
+/*
+ *  ³ä¹þ€ßÍ×µá€Î¥¯¥ê¥¢
+ */
+Inline void
+x_clear_int(INTNO intno)
+{
+}
+
+#define t_clear_int(intno)		x_clear_int(intno)
+#define i_clear_int(intno)		x_clear_int(intno)
+
+/*
+ *  ³ä¹þ€ßÍ×µá€Î¥Á¥§¥Ã¥¯
+ */
+Inline bool_t
+x_probe_int(INTNO intno)
+{
+	sigset_t	sigmask;
+
+	sigpending(&sigmask);
+	return(sigismember(&sigmask, intno));
+}
+
+#define t_probe_int(intno)		x_probe_int(intno)
+#define i_probe_int(intno)		x_probe_int(intno)
+
+/*
+ *  ³ä¹þ€ß¥Ï¥ó¥É¥é€ÎÆþžý€ÇÉ¬Í×€ÊIRCÁàºî
+ */
+Inline void
+i_begin_int(INTNO intno)
+{
+}
+
+/*
+ *  ³ä¹þ€ß¥Ï¥ó¥É¥é€ÎœÐžý€ÇÉ¬Í×€ÊIRCÁàºî
+ */
+Inline void
+i_end_int(INTNO intno)
+{
+}
+
+/*
+ *  ºÇ¹âÍ¥Àèœç°Ì¥¿¥¹¥¯€Ø€Î¥Ç¥£¥¹¥Ñ¥Ã¥Á
+ *
+ *  dispatch€Ï¡€¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€«€éžÆ€ÓœÐ€µ€ì€¿¥µ¡Œ¥Ó¥¹¥³¡Œ¥ëœèÍý€«
+ *  €éžÆ€ÓœÐ€¹€Ù€­€â€Î€Ç¡€¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È¡ŠCPU¥í¥Ã¥¯ŸõÂÖ¡Š¥Ç¥£¥¹¥Ñ¥Ã
+ *  ¥Áµö²ÄŸõÂÖ¡Š¡Ê¥â¥Ç¥ëŸå€Î¡Ë³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ€ÇžÆ€ÓœÐ€µ€Ê
+ *  €±€ì€Ð€Ê€é€Ê€€¡¥
+ */
+extern void	dispatch(void);
+
+/*
+ *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã€ÎÆ°ºî³«»Ï
+ *
+ *  start_dispatch€òreturn€Ë¥Þ¥¯¥íÄêµÁ€¹€ë€³€È€Ç¡€¥«¡Œ¥Í¥ë€ÎœéŽü²œŽ°Î»
+ *  žå€Ësta_ker€«€émain€Ë¥ê¥¿¡Œ¥ó€µ€»¡€¥·¥°¥Ê¥ë¥¹¥¿¥Ã¥¯€«€éžµ€Î¥¹¥¿¥Ã¥¯
+ *  €ËÌá€¹¡¥
+ */
+#define start_dispatch()	return
+
+/*
+ *  žœºß€Î¥³¥ó¥Æ¥­¥¹¥È€òŒÎ€Æ€Æ¥Ç¥£¥¹¥Ñ¥Ã¥Á
+ *
+ *  exit_and_dispatch€Ï¡€ext_tsk€«€éžÆ€ÓœÐ€¹€Ù€­€â€Î€Ç¡€¥¿¥¹¥¯¥³¥ó¥Æ¥­
+ *  ¥¹¥È¡ŠCPU¥í¥Ã¥¯ŸõÂÖ¡Š¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ¡Š¡Ê¥â¥Ç¥ëŸå€Î¡Ë³ä¹þ€ßÍ¥Àè
+ *  ÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ€ÇžÆ€ÓœÐ€µ€Ê€±€ì€Ð€Ê€é€Ê€€¡¥
+ */
+extern void	exit_and_dispatch(void);
+
+/*
+ *  ³ä¹þ€ß¥Ï¥ó¥É¥éœÐžýœèÍý
+ */
+extern void	ret_int(void);
+
+/*
+ *  CPUÎã³°¥Ï¥ó¥É¥éœÐžýœèÍý
+ */
+extern void	ret_exc(void);
+
+/*
+ *  ¥«¡Œ¥Í¥ë€ÎœªÎ»œèÍý€ÎžÆœÐ€·
+ *
+ *  call_exit_kernel€Ï¡€¥«¡Œ¥Í¥ë€ÎœªÎ»»þ€ËžÆ€ÓœÐ€¹€Ù€­€â€Î€Ç¡€Èó¥¿¥¹¥¯
+ *  ¥³¥ó¥Æ¥­¥¹¥È€ËÀÚ€êŽ¹€š€Æ¡€¥«¡Œ¥Í¥ë€ÎœªÎ»œèÍý¡Êexit_kernel¡Ë€òžÆ€ÓœÐ
+ *  €¹¡¥
+ */
+extern void call_exit_kernel(void) NoReturn;
+
+/*
+ *  ¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€ÎœéŽü²œ
+ *
+ *  ¥¿¥¹¥¯€¬µÙ»ßŸõÂÖ€«€éŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ë°Ü¹Ô€¹€ë»þ€ËžÆ€Ð€ì€ë¡¥€³€Î»þÅÀ
+ *  €Ç¥¹¥¿¥Ã¥¯ÎÎ°è€ò»È€Ã€Æ€Ï€Ê€é€Ê€€¡¥
+ *
+ *  activate_context€ò¡€¥€¥ó¥é¥€¥óŽØ¿ô€Ç€Ï€Ê€¯¥Þ¥¯¥íÄêµÁ€È€·€Æ€€€ë€Î€Ï¡€
+ *  €³€Î»þÅÀ€Ç€ÏTCB€¬ÄêµÁ€µ€ì€Æ€€€Ê€€€¿€á€Ç€¢€ë¡¥
+ *
+ *  Intel¥×¥í¥»¥Ã¥µ€Ç€Ï¡€¥¹¥¿¥Ã¥¯€Ï16¥Ó¥Ã¥È¶­³Š€Ë¥¢¥é¥€¥ó€·€Æ€€€Ê€±€ì€Ð
+ *  €Ê€é€Ê€€¡¥
+ */
+extern void	start_r(void);
+
+#define activate_context(p_tcb)											\
+{																		\
+	((intptr_t *) &((p_tcb)->tskctxb.env))[JMPBUF_PC]					\
+											= (intptr_t) start_r;		\
+	((intptr_t *) &((p_tcb)->tskctxb.env))[JMPBUF_SP]					\
+						= ((((intptr_t)((char *)((p_tcb)->p_tinib->stk)	\
+								+ (p_tcb)->p_tinib->stksz)) & ~0x0f)	\
+								- TASK_STACK_MERGIN);					\
+}
+
+/*
+ *  ³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ€ÈCPUÎã³°¥Ï¥ó¥É¥éÈÖ¹æ€ÎÈÏ°Ï€ÎÈœÄê
+ */
+#define VALID_INHNO_DEFINH(inhno)		VALID_INTNO((INTNO)(inhno))
+#define VALID_EXCNO_DEFEXC(excno)		VALID_INTNO((INTNO)(excno))
+
+/*
+ *  ³ä¹þ€ß¥Ï¥ó¥É¥é€ÎÀßÄê
+ *
+ *  ¥Ù¥¯¥È¥ëÈÖ¹æinhno€Î³ä¹þ€ß¥Ï¥ó¥É¥é€ÎœÐÆþžýœèÍý€ÎÈÖÃÏ€òint_entry€Ë¡€
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ€òintpri€ËÀßÄê€¹€ë¡¥
+ */
+Inline void
+x_define_inh(INHNO inhno, FP int_entry, PRI intpri)
+{
+	struct sigaction	sigact;
+
+	assert(VALID_INHNO_DEFINH(inhno));
+	sigact.sa_handler = (void (*)(int))(int_entry);
+	sigact.sa_flags = SA_ONSTACK;
+	sigassignset(&(sigact.sa_mask), &(sigmask_table[-intpri]));
+	sigaddset(&(sigact.sa_mask), SIGUSR2);
+	sigaction(inhno, &sigact, NULL);
+}
+
+/*
+ *  CPUÎã³°¥Ï¥ó¥É¥é€ÎÀßÄê
+ *
+ *  ¥Ù¥¯¥È¥ëÈÖ¹æexcno€ÎCPUÎã³°¥Ï¥ó¥É¥é€ÎœÐÆþžýœèÍý€ÎÈÖÃÏ€òexc_entry€ËÀß
+ *  Äê€¹€ë¡¥
+ *
+ *  SA_NODEFER€Ë€è€ê¡€¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é€Îµ¯Æ°»þ€Ë¡€€œ€Î¥·¥°¥Ê¥ë€ò¥Þ¥¹¥¯
+ *  €¹€ë€Î€òÍÞ»ß€·€Æ€€€ë¡¥
+ */
+Inline void
+x_define_exc(EXCNO excno, FP exc_entry)
+{
+	struct sigaction	sigact;
+
+	assert(VALID_EXCNO_DEFEXC(excno));
+	sigact.sa_sigaction =
+				(void (*)(int, struct __siginfo *, void *))(exc_entry);
+	sigact.sa_flags = (SA_ONSTACK | SA_SIGINFO | SA_NODEFER);
+	sigemptyset(&(sigact.sa_mask));
+	sigaddset(&(sigact.sa_mask), SIGUSR2);
+	sigaction(excno, &sigact, NULL);
+}
+
+/*
+ *  ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éÄä»ß€Î€¿€á€Î¥Þ¥¯¥í
+ */
+#ifdef TOPPERS_SUPPORT_OVRHDR
+#define OVRTIMER_STOP()	{				\
+			i_lock_cpu();				\
+			_kernel_ovrtimer_stop();	\
+			i_unlock_cpu();				\
+		}
+#else /* TOPPERS_SUPPORT_OVRHDR */
+#define OVRTIMER_STOP()
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+
+/*
+ *  ³ä¹þ€ß¥Ï¥ó¥É¥é€ÎÆþžýœèÍý€ÎÀžÀ®¥Þ¥¯¥í
+ */
+#define INT_ENTRY(inhno, inthdr)	_kernel_##inthdr##_##inhno
+
+#define INTHDR_ENTRY(inhno, inthdr, intpri)						\
+void _kernel_##inthdr##_##inhno(void)							\
+{																\
+	PRI		saved_ipm;											\
+																\
+	saved_ipm = _kernel_ipm_value;								\
+	_kernel_ipm_value = intpri;									\
+	OVRTIMER_STOP();											\
+	LOG_INH_ENTER(inhno);										\
+	inthdr();			/* ³ä¹þ€ß¥Ï¥ó¥É¥é€òžÆ€ÓœÐ€¹ */			\
+	LOG_INH_LEAVE(inhno);										\
+	_kernel_ret_int();	/* ³ä¹þ€ß¥Ï¥ó¥É¥éœÐžýœèÍý€òžÆ€ÓœÐ€¹ */	\
+	_kernel_ipm_value = saved_ipm;								\
+	_kernel_lock_flag = false;									\
+}
+
+/*
+ *  CPUÎã³°¥Ï¥ó¥É¥é€ÎÆþžýœèÍý€ÎÀžÀ®¥Þ¥¯¥í
+ */
+#define EXC_ENTRY(excno, exchdr)	_kernel_##exchdr##_##excno
+
+#define EXCHDR_ENTRY(excno, excno_num, exchdr)							\
+void _kernel_##exchdr##_##excno(int sig,								\
+						struct __siginfo *p_info, void *p_ctx)			\
+{																		\
+	bool_t		saved_lock_flag;										\
+																		\
+	saved_lock_flag = _kernel_lock_flag;								\
+	if (exc_sense_nonkernel(p_ctx)) {									\
+		/* ¥«¡Œ¥Í¥ëŽÉÍý³°€ÎCPUÎã³°¥Ï¥ó¥É¥é€ÎŸì¹ç */						\
+		exchdr(p_ctx);			/* CPUÎã³°¥Ï¥ó¥É¥é€òžÆ€ÓœÐ€¹ */			\
+	}																	\
+	else {																\
+		/* ¥«¡Œ¥Í¥ëŽÉÍý€ÎCPUÎã³°¥Ï¥ó¥É¥é€ÎŸì¹ç */						\
+		OVRTIMER_STOP();												\
+		LOG_EXC_ENTER(excno);											\
+		exchdr(p_ctx);			/* CPUÎã³°¥Ï¥ó¥É¥é€òžÆ€ÓœÐ€¹ */			\
+		LOG_EXC_LEAVE(excno);											\
+		_kernel_ret_exc();		/* CPUÎã³°¥Ï¥ó¥É¥éœÐžýœèÍý€òžÆ€ÓœÐ€¹ */	\
+	}																	\
+	_kernel_lock_flag = saved_lock_flag;								\
+}
+
+/*
+ *  CPUÎã³°€ÎÈ¯Àž€·€¿»þ€Î¥³¥ó¥Æ¥­¥¹¥È€Î»²ŸÈ
+ *
+ *  CPUÎã³°€ÎÈ¯Àž€·€¿»þ€Î¥³¥ó¥Æ¥­¥¹¥È€¬¡€¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€Î»þ€Ëfalse¡€
+ *  €œ€Š€Ç€Ê€€»þ€Ëtrue€òÊÖ€¹¡¥
+ */
+Inline bool_t
+exc_sense_context(void *p_excinf)
+{
+	return(((ucontext_t *) p_excinf)->uc_onstack != 0);
+}
+
+/*
+ *  ¥«¡Œ¥Í¥ëŽÉÍý³°€ÎCPUÎã³°€ÎÈœÊÌ
+ *
+ *  ¥«¡Œ¥Í¥ëŽÉÍý³°€ÎCPUÎã³°€Î»þ€Ëtrue¡€€œ€Š€Ç€Ê€€»þ€Ëfalse€òÊÖ€¹¡¥
+ */
+Inline bool_t
+exc_sense_nonkernel(void *p_excinf)
+{
+	sigset_t	sigmask;
+
+	sigassignset(&sigmask, &(((ucontext_t *) p_excinf)->uc_sigmask));
+	return(sigismember(&sigmask, SIGUSR2));
+}
+
+/*
+ *  CPUÎã³°€ÎÈ¯Àž€·€¿»þ€Î¥³¥ó¥Æ¥­¥¹¥È€È³ä¹þ€ß€Î¥Þ¥¹¥¯ŸõÂÖ€Î»²ŸÈ
+ *
+ *  CPUÎã³°€ÎÈ¯Àž€·€¿»þ€Î¥·¥¹¥Æ¥àŸõÂÖ€¬¡€¥«¡Œ¥Í¥ëŒÂ¹ÔÃæ€Ç€Ê€¯¡€¥¿¥¹¥¯¥³
+ *  ¥ó¥Æ¥­¥¹¥È€Ç€¢€ê¡€ÁŽ³ä¹þ€ß¥í¥Ã¥¯ŸõÂÖ€Ç€Ê€¯¡€CPU¥í¥Ã¥¯ŸõÂÖ€Ç€Ê€¯¡€³ä
+ *  ¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ€Ç€¢€ë»þ€Ëtrue¡€€œ€Š€Ç€Ê€€»þ€Ëfalse€òÊÖ€¹
+ *  ¡ÊCPUÎã³°€¬¥«¡Œ¥Í¥ëŽÉÍý³°€Î³ä¹þ€ßœèÍýÃæ€ÇÈ¯Àž€·€¿Ÿì¹ç€Ë€âfalse€òÊÖ
+ *  €¹¡Ë¡¥
+ */
+Inline bool_t
+exc_sense_intmask(void *p_excinf)
+{
+	return(!exc_sense_context(p_excinf) && !exc_sense_nonkernel(p_excinf)
+												&& ipm_value == TIPM_ENAALL);
+}
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È¥·¥¹¥Æ¥à°ÍÂž€ÎœéŽü²œ
+ */
+extern void	target_initialize(void);
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È¥·¥¹¥Æ¥à€ÎœªÎ»
+ *
+ *  ¥·¥¹¥Æ¥à€òœªÎ»€¹€ë»þ€Ë»È€Š¡¥
+ */
+extern void	target_exit(void) NoReturn;
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  ¥«¡Œ¥Í¥ë€Î³ä€êÉÕ€±€ë¥á¥â¥êÎÎ°è€ÎŽÉÍý
+ *
+ *  target_config.c€Ë¡€TLSF¡Ê¥ª¡Œ¥×¥ó¥œ¡Œ¥¹€Î¥á¥â¥êŽÉÍý¥é¥€¥Ö¥é¥ê¡Ë€òÍÑ
+ *  €€€¿¥á¥â¥êŽÉÍý¥ë¡Œ¥Á¥ó€òŽÞ€á€Æ€€€ë¡¥
+ */
+#define OMIT_KMM_ALLOCONLY
+
+#endif /* TOPPERS_TARGET_CONFIG_H */
Index: /target/macosx_gcc/target_def.csv
===================================================================
--- /target/macosx_gcc/target_def.csv	(revision 7)
+++ /target/macosx_gcc/target_def.csv	(revision 7)
@@ -0,0 +1,6 @@
+SIGINT,SIGINT
+SIGKILL,SIGKILL
+SIGBUS,SIGBUS
+SIGSEGV,SIGSEGV
+SIGSTOP,SIGSTOP
+SIGUSR2,SIGUSR2
Index: /target/macosx_gcc/target_kernel.h
===================================================================
--- /target/macosx_gcc/target_kernel.h	(revision 7)
+++ /target/macosx_gcc/target_kernel.h	(revision 7)
@@ -0,0 +1,87 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		kernel.h€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô¡ÊMac OS XÍÑ¡Ë
+ *
+ *  €³€Î¥€¥ó¥¯¥ë¡Œ¥É¥Õ¥¡¥€¥ë€Ï¡€kernel.h€Ç¥€¥ó¥¯¥ë¡Œ¥É€µ€ì€ë¡¥ÂŸ€Î¥Õ¥¡
+ *  ¥€¥ë€«€éÄŸÀÜ¥€¥ó¥¯¥ë¡Œ¥É€¹€ë€³€È€Ï€Ê€€¡¥€³€Î¥Õ¥¡¥€¥ë€ò¥€¥ó¥¯¥ë¡Œ¥É
+ *  €¹€ëÁ°€Ë¡€t_stddef.h€¬¥€¥ó¥¯¥ë¡Œ¥É€µ€ì€ë€Î€Ç¡€€œ€ì€é€Ë°ÍÂž€·€Æ€â€è
+ *  €€¡¥
+ */
+
+#ifndef TOPPERS_TARGET_KERNEL_H
+#define TOPPERS_TARGET_KERNEL_H
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€Ç¥µ¥Ý¡Œ¥È€Ç€­€ëµ¡Çœ
+ */
+#define TOPPERS_TARGET_SUPPORT_DIS_INT		/* dis_int */
+#define TOPPERS_TARGET_SUPPORT_ENA_INT		/* ena_int */
+#define TOPPERS_TARGET_SUPPORT_GET_UTM		/* get_utm */
+#define TOPPERS_TARGET_SUPPORT_OVRHDR		/* ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é */
+
+/*
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ€ÎÈÏ°Ï
+ *
+ *  TMIN_INTPRI€ÎÄêµÁ€òÊÑ¹¹€¹€ë€³€È€Ç¡€€É€Î¥ì¥Ù¥ë€è€ê€â¹â€€³ä¹þ€ßÍ¥ÀèÅÙ
+ *  €ò»ý€Ä€â€Î€ò¥«¡Œ¥Í¥ëŽÉÍý³°€Î³ä¹þ€ß€È€¹€ë€«€òÊÑ¹¹€Ç€­€ë¡¥
+ *
+ *  TMIN_INTPRI€ËÀßÄê€Ç€­€ëÃÍ€Ï¡€-6¡Á-1€ÎÈÏ°Ï€Ç€¢€ë¡¥Îã€š€ÐTMIN_INTPRI
+ *  €ò-5€ËÀßÄê€¹€ë€È¡€¥ì¥Ù¥ë7¡ÊNMI¡Ë€È¥ì¥Ù¥ë6€Î³ä¹þ€ß€¬¥«¡Œ¥Í¥ëŽÉÍý³°€È
+ *  €Ê€ë¡¥TMIN_INTPRI€ò-6€ËÀßÄê€¹€ë€È¡€¥ì¥Ù¥ë7€Î³ä¹þ€ß¡ÊNMI¡Ë°Ê³°€Ë¥«¡Œ
+ *  ¥Í¥ëŽÉÍý³°€Î³ä¹þ€ß€òÀß€±€Ê€€€³€È€Ë€Ê€ë¡¥
+ */
+#ifndef TMIN_INTPRI
+#define TMIN_INTPRI		(-6)		/* ³ä¹þ€ßÍ¥ÀèÅÙ€ÎºÇŸ®ÃÍ¡ÊºÇ¹âÃÍ¡Ë*/
+#endif /* TMIN_INTPRI */
+#define TMAX_INTPRI		(-1)		/* ³ä¹þ€ßÍ¥ÀèÅÙ€ÎºÇÂçÃÍ¡ÊºÇÄãÃÍ¡Ë */
+
+/*
+ *  ¥¿¥€¥à¥Æ¥£¥Ã¥¯€ÎÄêµÁ
+ */
+#ifndef TIC_NUME
+#define	TIC_NUME		10U			/* ¥¿¥€¥à¥Æ¥£¥Ã¥¯€ÎŒþŽü€ÎÊ¬»Ò */
+#define	TIC_DENO		1U			/* ¥¿¥€¥à¥Æ¥£¥Ã¥¯€ÎŒþŽü€ÎÊ¬Êì */
+#endif /* TIC_NUME */
+
+#endif /* TOPPERS_TARGET_KERNEL_H */
Index: /target/macosx_gcc/target_rename.def
===================================================================
--- /target/macosx_gcc/target_rename.def	(revision 7)
+++ /target/macosx_gcc/target_rename.def	(revision 7)
@@ -0,0 +1,34 @@
+# kernel_cfg.c
+sigmask_table
+sigmask_disint_init
+
+# target_config.c
+sigmask_intlock
+sigmask_cpulock
+lock_flag
+saved_sigmask
+ipm_value
+sigmask_disint
+dispatch
+exit_and_dispatch
+ret_int
+ret_exc
+call_exit_kernel
+start_r
+target_initialize
+target_exit
+
+# target_timer.c
+target_timer_get_current
+target_timer_probe_int
+target_ovrtimer_start
+target_ovrtimer_stop
+target_ovrtimer_get_current
+
+# trace_config.c
+log_dsp_enter
+log_dsp_leave
+log_inh_enter
+log_inh_leave
+log_exc_enter
+log_exc_leave
Index: /target/macosx_gcc/target_rename.h
===================================================================
--- /target/macosx_gcc/target_rename.h	(revision 7)
+++ /target/macosx_gcc/target_rename.h	(revision 7)
@@ -0,0 +1,97 @@
+/* This file is generated from target_rename.def by genrename. */
+
+#ifndef TOPPERS_TARGET_RENAME_H
+#define TOPPERS_TARGET_RENAME_H
+
+/*
+ *  kernel_cfg.c
+ */
+#define sigmask_table				_kernel_sigmask_table
+#define sigmask_disint_init			_kernel_sigmask_disint_init
+
+/*
+ *  target_config.c
+ */
+#define sigmask_intlock				_kernel_sigmask_intlock
+#define sigmask_cpulock				_kernel_sigmask_cpulock
+#define lock_flag					_kernel_lock_flag
+#define saved_sigmask				_kernel_saved_sigmask
+#define ipm_value					_kernel_ipm_value
+#define sigmask_disint				_kernel_sigmask_disint
+#define dispatch					_kernel_dispatch
+#define exit_and_dispatch			_kernel_exit_and_dispatch
+#define ret_int						_kernel_ret_int
+#define ret_exc						_kernel_ret_exc
+#define call_exit_kernel			_kernel_call_exit_kernel
+#define start_r						_kernel_start_r
+#define target_initialize			_kernel_target_initialize
+#define target_exit					_kernel_target_exit
+
+/*
+ *  target_timer.c
+ */
+#define target_timer_get_current	_kernel_target_timer_get_current
+#define target_timer_probe_int		_kernel_target_timer_probe_int
+#define target_ovrtimer_start		_kernel_target_ovrtimer_start
+#define target_ovrtimer_stop		_kernel_target_ovrtimer_stop
+#define target_ovrtimer_get_current	_kernel_target_ovrtimer_get_current
+
+/*
+ *  trace_config.c
+ */
+#define log_dsp_enter				_kernel_log_dsp_enter
+#define log_dsp_leave				_kernel_log_dsp_leave
+#define log_inh_enter				_kernel_log_inh_enter
+#define log_inh_leave				_kernel_log_inh_leave
+#define log_exc_enter				_kernel_log_exc_enter
+#define log_exc_leave				_kernel_log_exc_leave
+
+#ifdef TOPPERS_LABEL_ASM
+
+/*
+ *  kernel_cfg.c
+ */
+#define _sigmask_table				__kernel_sigmask_table
+#define _sigmask_disint_init		__kernel_sigmask_disint_init
+
+/*
+ *  target_config.c
+ */
+#define _sigmask_intlock			__kernel_sigmask_intlock
+#define _sigmask_cpulock			__kernel_sigmask_cpulock
+#define _lock_flag					__kernel_lock_flag
+#define _saved_sigmask				__kernel_saved_sigmask
+#define _ipm_value					__kernel_ipm_value
+#define _sigmask_disint				__kernel_sigmask_disint
+#define _dispatch					__kernel_dispatch
+#define _exit_and_dispatch			__kernel_exit_and_dispatch
+#define _ret_int					__kernel_ret_int
+#define _ret_exc					__kernel_ret_exc
+#define _call_exit_kernel			__kernel_call_exit_kernel
+#define _start_r					__kernel_start_r
+#define _target_initialize			__kernel_target_initialize
+#define _target_exit				__kernel_target_exit
+
+/*
+ *  target_timer.c
+ */
+#define _target_timer_get_current	__kernel_target_timer_get_current
+#define _target_timer_probe_int		__kernel_target_timer_probe_int
+#define _target_ovrtimer_start		__kernel_target_ovrtimer_start
+#define _target_ovrtimer_stop		__kernel_target_ovrtimer_stop
+#define _target_ovrtimer_get_current	__kernel_target_ovrtimer_get_current
+
+/*
+ *  trace_config.c
+ */
+#define _log_dsp_enter				__kernel_log_dsp_enter
+#define _log_dsp_leave				__kernel_log_dsp_leave
+#define _log_inh_enter				__kernel_log_inh_enter
+#define _log_inh_leave				__kernel_log_inh_leave
+#define _log_exc_enter				__kernel_log_exc_enter
+#define _log_exc_leave				__kernel_log_exc_leave
+
+#endif /* TOPPERS_LABEL_ASM */
+
+
+#endif /* TOPPERS_TARGET_RENAME_H */
Index: /target/macosx_gcc/target_serial.c
===================================================================
--- /target/macosx_gcc/target_serial.c	(revision 7)
+++ /target/macosx_gcc/target_serial.c	(revision 7)
@@ -0,0 +1,301 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2006-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$
+ */
+
+/*
+ *		¥·¥ê¥¢¥ëI/O¥Ç¥Ð¥€¥¹¡ÊSIO¡Ë¥É¥é¥€¥Ð¡ÊMac OS XÍÑ¡Ë
+ */
+
+#include "macosx.h"
+#include <t_stddef.h>
+#include <t_syslog.h>
+#include <errno.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <termios.h>
+#include "target_serial.h"
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥ÈœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÄêµÁ
+ */
+typedef struct sio_port_initialization_block {
+	char		*path;			/* ¥Õ¥¡¥€¥ë€Î¥Ñ¥¹ÌŸ */
+} SIOPINIB;
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥ÈŽÉÍý¥Ö¥í¥Ã¥¯€ÎÄêµÁ
+ */
+struct sio_port_control_block {
+	const SIOPINIB *p_siopinib;	/* ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥ÈœéŽü²œ¥Ö¥í¥Ã¥¯ */
+	intptr_t	exinf;			/* ³ÈÄ¥ŸðÊó */
+	bool_t		openflag;		/* ¥ª¡Œ¥×¥óºÑ€ß¥Õ¥é¥° */
+	struct termios saved_term;	/* žµ€ÎÃŒËöÀ©žæŸðÊó */
+
+	int_t		read_fd;		/* ÆÉœÐ€·ÍÑ¥Õ¥¡¥€¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿ */
+	bool_t		rcv_flag;		/* Œõ¿®Êž»ú¥Ð¥Ã¥Õ¥¡Í­žú¥Õ¥é¥° */
+	char		rcv_buf;		/* Œõ¿®Êž»ú¥Ð¥Ã¥Õ¥¡ */
+	bool_t		rcv_rdy;		/* Œõ¿®ÄÌÃÎ¥³¡Œ¥ë¥Ð¥Ã¥¯µö²Ä¥Õ¥é¥° */
+
+	int_t		write_fd;		/* œñ¹þ€ßÍÑ¥Õ¥¡¥€¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿ */
+	bool_t		snd_flag;		/* Á÷¿®Êž»ú¥Ð¥Ã¥Õ¥¡Í­žú¥Õ¥é¥° */
+	char		snd_buf;		/* Á÷¿®Êž»ú¥Ð¥Ã¥Õ¥¡ */
+	bool_t		snd_rdy;		/* Á÷¿®ÄÌÃÎ¥³¡Œ¥ë¥Ð¥Ã¥¯µö²Ä¥Õ¥é¥° */
+};
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥ÈœéŽü²œ¥Ö¥í¥Ã¥¯
+ */
+const SIOPINIB siopinib_table[TNUM_SIOP] = {
+	{ NULL }
+};
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥ÈŽÉÍý¥Ö¥í¥Ã¥¯€Î¥š¥ê¥¢
+ */
+SIOPCB	siopcb_table[TNUM_SIOP];
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥ÈID€«€éŽÉÍý¥Ö¥í¥Ã¥¯€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
+ */
+#define INDEX_SIOP(siopid)	((uint_t)((siopid) - 1))
+#define get_siopcb(siopid)	(&(siopcb_table[INDEX_SIOP(siopid)]))
+
+/*
+ *  SIO¥É¥é¥€¥Ð€ÎœéŽü²œ
+ */
+void
+sio_initialize(intptr_t exinf)
+{
+	SIOPCB	*p_siopcb;
+	uint_t	i;
+
+	/*
+	 *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥ÈŽÉÍý¥Ö¥í¥Ã¥¯€ÎœéŽü²œ
+	 */
+	for (i = 0; i < TNUM_SIOP; i++) {
+		p_siopcb = &(siopcb_table[i]);
+		p_siopcb->p_siopinib = &(siopinib_table[i]);
+		p_siopcb->openflag = false;
+	}
+}
+
+/*
+ *  SIO¥É¥é¥€¥Ð€ÎœªÎ»œèÍý
+ */
+void
+sio_terminate(intptr_t exinf)
+{
+	SIOPCB	*p_siopcb;
+	uint_t	i;
+
+	/*
+	 *  ¥ª¡Œ¥×¥ó€µ€ì€Æ€€€ë¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€Î¥¯¥í¡Œ¥º
+	 */
+	for (i = 0; i < TNUM_SIOP; i++) {
+		p_siopcb = &(siopcb_table[i]);
+		if (p_siopcb->openflag) {
+			sio_cls_por(p_siopcb);
+		}
+	}
+}
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€Î¥ª¡Œ¥×¥ó
+ */
+SIOPCB *
+sio_opn_por(ID siopid, intptr_t exinf)
+{
+	SIOPCB			*p_siopcb;
+	const SIOPINIB	*p_siopinib;
+	int_t			fd;
+	struct termios	term;
+
+	p_siopcb = get_siopcb(siopid);
+	p_siopinib = p_siopcb->p_siopinib;
+
+	if (p_siopinib->path != NULL) {
+		fd = open(p_siopinib->path, O_RDWR, 0777);
+		assert(fd >= 0);
+		p_siopcb->read_fd = fd;
+		p_siopcb->write_fd = fd;
+	}
+	else {
+		fd = STDIN_FILENO;					/* ÉžœàÆþœÐÎÏ€ò»È€Š */
+		p_siopcb->read_fd = STDIN_FILENO;
+		p_siopcb->write_fd = STDOUT_FILENO;
+	}
+	fcntl(fd, F_SETOWN, getpid());
+	fcntl(fd, F_SETFL, (O_NONBLOCK | O_ASYNC));
+
+	tcgetattr(fd, &(p_siopcb->saved_term));
+	term = p_siopcb->saved_term;
+	term.c_lflag &= ~(ECHO | ICANON);
+	tcsetattr(fd, TCSAFLUSH, &term);
+
+	p_siopcb->exinf = exinf;
+	p_siopcb->rcv_flag = false;
+	p_siopcb->rcv_rdy = false;
+	p_siopcb->snd_flag = false;
+	p_siopcb->snd_rdy = false;
+	p_siopcb->openflag = true;
+	return(p_siopcb);
+}
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€Î¥¯¥í¡Œ¥º
+ */
+void
+sio_cls_por(SIOPCB *p_siopcb)
+{
+	int_t	fd;
+
+	fd = p_siopcb->read_fd;
+	tcsetattr(fd, TCSAFLUSH, &(p_siopcb->saved_term));
+	fcntl(fd, F_SETFL, 0);
+
+	if (p_siopcb->p_siopinib->path != NULL) {
+		close(p_siopcb->read_fd);
+	}
+	p_siopcb->openflag = false;
+}
+
+/*
+ *  SIO€Î³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó
+ */
+void
+sio_isr(intptr_t exinf)
+{
+	SIOPCB	*p_siopcb = &(siopcb_table[0]);
+	int_t	n;
+
+	if (p_siopcb->snd_flag) {
+		if ((n = write(p_siopcb->write_fd, &(p_siopcb->snd_buf), 1)) > 0) {
+			p_siopcb->snd_flag = false;
+			if (p_siopcb->snd_rdy) {
+				sio_irdy_snd(p_siopcb->exinf);
+			}
+		}
+	}
+	if (!p_siopcb->rcv_flag) {
+		if ((n = read(p_siopcb->read_fd, &(p_siopcb->rcv_buf), 1)) > 0) {
+			p_siopcb->rcv_flag = true;
+			if (p_siopcb->rcv_rdy) {
+				sio_irdy_rcv(p_siopcb->exinf);
+			}
+		}
+	}
+}
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€Ø€ÎÊž»úÁ÷¿®
+ */
+bool_t
+sio_snd_chr(SIOPCB *p_siopcb, char c)
+{
+	int_t	n;
+
+	if (!p_siopcb->snd_flag) {
+		if ((n = write(p_siopcb->write_fd, &c, 1)) > 0) {
+			return(true);
+		}
+		else {
+			assert(n < 0 && errno == EAGAIN);
+			p_siopcb->snd_flag = true;
+			p_siopcb->snd_buf = c;
+			return(true);
+		}
+	}
+	else {
+		return(false);
+	}
+}
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€«€é€ÎÊž»úŒõ¿®
+ */
+int_t
+sio_rcv_chr(SIOPCB *p_siopcb)
+{
+	char	c;
+	int_t	n;
+
+	if (p_siopcb->rcv_flag) {
+		p_siopcb->rcv_flag = false;
+		return((int_t)(uint8_t)(p_siopcb->rcv_buf));
+	}
+	else if ((n = read(p_siopcb->read_fd, &c, 1)) > 0) {
+		return((int_t)(uint8_t) c);
+	}
+	else {
+		assert(n < 0 && errno == EAGAIN);
+		return(-1);
+	}
+}
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€«€é€Î¥³¡Œ¥ë¥Ð¥Ã¥¯€Îµö²Ä
+ */
+void
+sio_ena_cbr(SIOPCB *p_siopcb, uint_t cbrtn)
+{
+	switch (cbrtn) {
+	case SIO_RDY_SND:
+		p_siopcb->snd_rdy = true;
+		break;
+	case SIO_RDY_RCV:
+		p_siopcb->rcv_rdy = true;
+		break;
+	}
+}
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€«€é€Î¥³¡Œ¥ë¥Ð¥Ã¥¯€Î¶Ø»ß
+ */
+void
+sio_dis_cbr(SIOPCB *p_siopcb, uint_t cbrtn)
+{
+	switch (cbrtn) {
+	case SIO_RDY_SND:
+		p_siopcb->snd_rdy = false;
+		break;
+	case SIO_RDY_RCV:
+		p_siopcb->rcv_rdy = false;
+		break;
+	}
+}
Index: /target/macosx_gcc/target_serial.cfg
===================================================================
--- /target/macosx_gcc/target_serial.cfg	(revision 7)
+++ /target/macosx_gcc/target_serial.cfg	(revision 7)
@@ -0,0 +1,13 @@
+/*
+ *  @(#) $Id$
+ */
+
+/*
+ *		SIO¥É¥é¥€¥Ð¡ÊMac OS XÍÑ¡Ë€Î¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+ */
+
+#include "target_serial.h"
+INCLUDE("unix_sigio.cfg");
+ATT_INI({ TA_NULL, 0, sio_initialize });
+ATT_TER({ TA_NULL, 0, sio_terminate });
+ATT_ISR({ TA_NULL, 0, INTNO_SIGIO, sio_isr, 1 });
Index: /target/macosx_gcc/target_serial.h
===================================================================
--- /target/macosx_gcc/target_serial.h	(revision 7)
+++ /target/macosx_gcc/target_serial.h	(revision 7)
@@ -0,0 +1,125 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2006-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$
+ */
+
+/*
+ *		¥·¥ê¥¢¥ëI/O¥Ç¥Ð¥€¥¹¡ÊSIO¡Ë¥É¥é¥€¥Ð¡ÊMac OS XÍÑ¡Ë
+ */
+
+#ifndef TOPPERS_TARGET_SERIAL_H
+#define TOPPERS_TARGET_SERIAL_H
+
+#include "macosx.h"
+#include <t_stddef.h>
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È¿ô€ÎÄêµÁ
+ */
+#define TNUM_SIOP		1		/* ¥µ¥Ý¡Œ¥È€¹€ë¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€Î¿ô */
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥ÈŽÉÍý¥Ö¥í¥Ã¥¯€ÎÄêµÁ
+ */
+typedef struct sio_port_control_block	SIOPCB;
+
+/*
+ *  ¥³¡Œ¥ë¥Ð¥Ã¥¯¥ë¡Œ¥Á¥ó€ÎŒ±ÊÌÈÖ¹æ
+ */
+#define SIO_RDY_SND		1U		/* Á÷¿®²ÄÇœ¥³¡Œ¥ë¥Ð¥Ã¥¯ */
+#define SIO_RDY_RCV		2U		/* Œõ¿®ÄÌÃÎ¥³¡Œ¥ë¥Ð¥Ã¥¯ */
+
+/*
+ *  SIO¥É¥é¥€¥Ð€ÎœéŽü²œ
+ */
+extern void		sio_initialize(intptr_t exinf);
+
+/*
+ *  SIO¥É¥é¥€¥Ð€ÎœªÎ»œèÍý
+ */
+extern void		sio_terminate(intptr_t exinf);
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€Î¥ª¡Œ¥×¥ó
+ */
+extern SIOPCB	*sio_opn_por(ID siopid, intptr_t exinf);
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€Î¥¯¥í¡Œ¥º
+ */
+extern void		sio_cls_por(SIOPCB *p_siopcb);
+
+/*
+ *  SIO€Î³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó
+ */
+extern void		sio_isr(intptr_t exinf);
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€Ø€ÎÊž»úÁ÷¿®
+ */
+extern bool_t	sio_snd_chr(SIOPCB *siopcb, char c);
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€«€é€ÎÊž»úŒõ¿®
+ */
+extern int_t	sio_rcv_chr(SIOPCB *siopcb);
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€«€é€Î¥³¡Œ¥ë¥Ð¥Ã¥¯€Îµö²Ä
+ */
+extern void		sio_ena_cbr(SIOPCB *siopcb, uint_t cbrtn);
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€«€é€Î¥³¡Œ¥ë¥Ð¥Ã¥¯€Î¶Ø»ß
+ */
+extern void		sio_dis_cbr(SIOPCB *siopcb, uint_t cbrtn);
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€«€é€ÎÁ÷¿®²ÄÇœ¥³¡Œ¥ë¥Ð¥Ã¥¯
+ */
+extern void		sio_irdy_snd(intptr_t exinf);
+
+/*
+ *  ¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€«€é€ÎŒõ¿®ÄÌÃÎ¥³¡Œ¥ë¥Ð¥Ã¥¯
+ */
+extern void		sio_irdy_rcv(intptr_t exinf);
+
+#endif /* TOPPERS_MACRO_ONLY */
+#endif /* TOPPERS_TARGET_SERIAL_H */
Index: /target/macosx_gcc/target_sil.h
===================================================================
--- /target/macosx_gcc/target_sil.h	(revision 7)
+++ /target/macosx_gcc/target_sil.h	(revision 7)
@@ -0,0 +1,110 @@
+/*
+ *  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$
+ */
+
+/*
+ *		sil.h€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô¡ÊMac OS XÍÑ¡Ë
+ *
+ *  €³€Î¥€¥ó¥¯¥ë¡Œ¥É¥Õ¥¡¥€¥ë€Ï¡€sil.h€ÎÀèÆ¬€Ç¥€¥ó¥¯¥ë¡Œ¥É€µ€ì€ë¡¥ÂŸ€Î¥Õ¥¡
+ *  ¥€¥ë€«€é€ÏÄŸÀÜ¥€¥ó¥¯¥ë¡Œ¥É€¹€ë€³€È€Ï€Ê€€¡¥€³€Î¥Õ¥¡¥€¥ë€ò¥€¥ó¥¯¥ë¡Œ
+ *  ¥É€¹€ëÁ°€Ë¡€t_stddef.h€¬¥€¥ó¥¯¥ë¡Œ¥É€µ€ì€ë€Î€Ç¡€€œ€ì€é€Ë°ÍÂž€·€Æ€â
+ *  €è€€¡¥
+ */
+
+#ifndef TOPPERS_TARGET_SIL_H
+#define TOPPERS_TARGET_SIL_H
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  Éžœà€Î¥€¥ó¥¯¥ë¡Œ¥É¥Õ¥¡¥€¥ë
+ */
+#include <signal.h>
+
+/*
+ *  NMI€òœü€¯€¹€Ù€Æ€Î³ä¹þ€ß€Î¶Ø»ß
+ */
+Inline void
+TOPPERS_dissig(sigset_t *p_sigmask)
+{
+	extern sigset_t	_kernel_sigmask_intlock;
+
+	sigprocmask(SIG_BLOCK, &_kernel_sigmask_intlock, p_sigmask);
+}
+
+/*
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡ÊÆâÉôÉœžœ¡Ë€ÎžœºßÃÍ€ÎÀßÄê
+ */
+Inline void
+TOPPERS_setsig(sigset_t *p_sigmask)
+{
+	sigprocmask(SIG_SETMASK, p_sigmask, NULL);
+}
+
+/*
+ *  ÁŽ³ä¹þ€ß¥í¥Ã¥¯ŸõÂÖ€ÎÀ©žæ
+ */
+#define SIL_PRE_LOC		sigset_t TOPPERS_sigmask
+#define SIL_LOC_INT()	(TOPPERS_dissig(&TOPPERS_sigmask))
+#define SIL_UNL_INT()	(TOPPERS_setsig(&TOPPERS_sigmask))
+
+/*
+ *  ÈùŸ¯»þŽÖÂÔ€Á
+ */
+Inline void
+sil_dly_nse(ulong_t dlytim)
+{
+	/*
+	 *  ¥·¥ß¥å¥ì¡Œ¥·¥ç¥óŽÄ¶­€Ç€Ï°ÕÌ£€¬€Ê€€€¿€á¡€²¿€â€·€Ê€€¡¥
+	 */
+}
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  ¥×¥í¥»¥Ã¥µ€Î¥š¥ó¥Ç¥£¥¢¥ó
+ */
+#if defined(__ppc__)
+#define SIL_ENDIAN_BIG				/* ¥Ó¥Ã¥°¥š¥ó¥Ç¥£¥¢¥ó */
+#elif defined(__i386__) || defined(__x86_64__)
+#define SIL_ENDIAN_LITTLE			/* ¥ê¥È¥ë¥š¥ó¥Ç¥£¥¢¥ó */
+#endif
+
+#endif /* TOPPERS_TARGET_SIL_H */
Index: /target/macosx_gcc/target_stddef.h
===================================================================
--- /target/macosx_gcc/target_stddef.h	(revision 7)
+++ /target/macosx_gcc/target_stddef.h	(revision 7)
@@ -0,0 +1,94 @@
+/*
+ *  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-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$
+ */
+
+/*
+ *		t_stddef.h€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô¡ÊMac OS XÍÑ¡Ë
+ *
+ *  €³€Î¥€¥ó¥¯¥ë¡Œ¥É¥Õ¥¡¥€¥ë€Ï¡€t_stddef.h€ÎÀèÆ¬€Ç¥€¥ó¥¯¥ë¡Œ¥É€µ€ì€ë¡¥
+ *  ÂŸ€Î¥Õ¥¡¥€¥ë€«€é€ÏÄŸÀÜ¥€¥ó¥¯¥ë¡Œ¥É€¹€ë€³€È€Ï€Ê€€¡¥ÂŸ€Î¥€¥ó¥¯¥ë¡Œ¥É
+ *  ¥Õ¥¡¥€¥ë€ËÀèÎ©€Ã€ÆœèÍý€µ€ì€ë€¿€á¡€ÂŸ€Î¥€¥ó¥¯¥ë¡Œ¥É¥Õ¥¡¥€¥ë€Ë°ÍÂž€·
+ *  €Æ€Ï€Ê€é€Ê€€¡¥
+ */
+
+#ifndef TOPPERS_TARGET_STDDEF_H
+#define TOPPERS_TARGET_STDDEF_H
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È€òŒ±ÊÌ€¹€ë€¿€á€Î¥Þ¥¯¥í€ÎÄêµÁ
+ */
+#define TOPPERS_MACOSX				/* ¥·¥¹¥Æ¥àÎ¬ŸÎ */
+
+/*
+ *  ³«È¯ŽÄ¶­€Ç¶ŠÄÌ€ÊÄêµÁ
+ */
+#define TOPPERS_STDFLOAT_TYPE1
+#include "gcc/tool_stddef.h"
+
+/*
+ *  ³«È¯ŽÄ¶­€ÎÉžœà¥€¥ó¥¯¥ë¡Œ¥É¥Õ¥¡¥€¥ë€ÎÍøÍÑ
+ *
+ *  C99žßŽ¹€ÎÀ°¿ô·¿€ÎÄêµÁ€òstdint.h€«€éŒè€ê¹þ€à¡¥stdlib.h€Ï¡€abort€ÎÀë
+ *  žÀ€òŒè€ê¹þ€à€¿€á€Ë¥€¥ó¥¯¥ë¡Œ¥É€·€Æ€€€ë¡¥
+ */
+#ifndef TOPPERS_MACRO_ONLY
+#include <stdint.h>
+#include <stdlib.h>
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  ¥¢¥µ¡Œ¥·¥ç¥ó€ÎŒºÇÔ»þ€ÎŒÂ¹ÔÃæÃÇœèÍý
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+Inline void
+TOPPERS_assert_abort(void)
+{
+	abort();
+}
+
+/*
+ *  software_init_hook€Èsoftware_term_hook€òžÆ€ÓœÐ€¹€¿€á€ÎÀëžÀ
+ */
+extern void	software_init_hook(void) __attribute__((constructor));
+extern void	software_term_hook(void) __attribute__((destructor));
+
+#endif /* TOPPERS_MACRO_ONLY */
+#endif /* TOPPERS_TARGET_STDDEF_H */
Index: /target/macosx_gcc/target_syssvc.h
===================================================================
--- /target/macosx_gcc/target_syssvc.h	(revision 7)
+++ /target/macosx_gcc/target_syssvc.h	(revision 7)
@@ -0,0 +1,86 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2006-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$
+ */
+
+/*
+ *		¥·¥¹¥Æ¥à¥µ¡Œ¥Ó¥¹€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô¡ÊMac OS XÍÑ¡Ë
+ *
+ *  ¥·¥¹¥Æ¥à¥µ¡Œ¥Ó¥¹€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€Î¥€¥ó¥¯¥ë¡Œ¥É¥Õ¥¡¥€¥ë¡¥€³€Î¥Õ¥¡
+ *  ¥€¥ë€ÎÆâÍÆ€Ï¡€¥³¥ó¥Ý¡Œ¥Í¥ó¥Èµ­œÒ¥Õ¥¡¥€¥ë€Ëµ­œÒ€µ€ì¡€€³€Î¥Õ¥¡¥€¥ë€Ï
+ *  Ìµ€¯€Ê€ëž«¹þ€ß¡¥
+ */
+
+#ifndef TOPPERS_TARGET_SYSSVC_H
+#define TOPPERS_TARGET_SYSSVC_H
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È¥·¥¹¥Æ¥à€ÎOS°ÍÂž€ÎÄêµÁ
+ */
+#include "macosx.h"
+
+/*
+ *  ¥È¥ì¡Œ¥¹¥í¥°€ËŽØ€¹€ëÀßÄê
+ */
+#ifdef TOPPERS_ENABLE_TRACE
+#include "logtrace/trace_config.h"
+#endif /* TOPPERS_ENABLE_TRACE */
+
+/*
+ *  µ¯Æ°¥á¥Ã¥»¡Œ¥ž€Î¥¿¡Œ¥²¥Ã¥È¥·¥¹¥Æ¥àÌŸ
+ */
+#define TARGET_NAME	"Mac OS X"
+
+/*
+ *  ¥·¥¹¥Æ¥à¥í¥°€ÎÄã¥ì¥Ù¥ëœÐÎÏ€Î€¿€á€ÎÊž»úœÐÎÏ
+ *
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎÊýË¡€Ç¡€Êž»úc€òÉœŒš/œÐÎÏ/ÊÝÂž€¹€ë¡¥
+ */
+extern void	target_fput_log(char c);
+
+/*
+ *  ¥·¥ê¥¢¥ë¥Ý¡Œ¥È¿ô€ÎÄêµÁ
+ */
+#define TNUM_PORT		1		/* ¥µ¥Ý¡Œ¥È€¹€ë¥·¥ê¥¢¥ë¥Ý¡Œ¥È€Î¿ô */
+
+/*
+ *  ¥·¥¹¥Æ¥à¥í¥°¥¿¥¹¥¯ŽØÏ¢€ÎÄê¿ô€ÎÄêµÁ
+ */
+#define LOGTASK_STACK_SIZE	SIGSTKSZ	/* ¥¹¥¿¥Ã¥¯ÎÎ°è€Î¥µ¥€¥º */
+
+#endif /* TOPPERS_TARGET_SYSSVC_H */
Index: /target/macosx_gcc/target_test.h
===================================================================
--- /target/macosx_gcc/target_test.h	(revision 7)
+++ /target/macosx_gcc/target_test.h	(revision 7)
@@ -0,0 +1,55 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2006,2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥Æ¥¹¥È¥×¥í¥°¥é¥à€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÄêµÁ¡ÊMac OS XÍÑ¡Ë
+ */
+
+#ifndef TOPPERS_TARGET_TEST_H
+#define TOPPERS_TARGET_TEST_H
+
+#include <macosx.h>
+#define CPUEXC1					SIGINFO
+#define RAISE_CPU_EXCEPTION		(raise(SIGINFO))
+#define	STACK_SIZE				SIGSTKSZ
+#define LOOP_REF				ULONG_C(10000000)
+#define MEASURE_TWICE
+
+#endif /* TOPPERS_TARGET_TEST_H */
Index: /target/macosx_gcc/target_timer.c
===================================================================
--- /target/macosx_gcc/target_timer.c	(revision 7)
+++ /target/macosx_gcc/target_timer.c	(revision 7)
@@ -0,0 +1,517 @@
+/*
+ *  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$
+ */
+
+/*
+ *		¥¿¥€¥Þ¥É¥é¥€¥Ð¡ÊMac OS XÍÑ¡Ë
+ */
+
+#include "kernel_impl.h"
+#include "time_event.h"
+#include "target_timer.h"
+#include <sys/time.h>
+
+#ifndef TOPPERS_SUPPORT_OVRHDR
+
+/*
+ *		¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éµ¡Çœ€ò¥µ¥Ý¡Œ¥È€·€Ê€€Ÿì¹ç
+ */
+
+#if 0
+/*
+ *		¥€¥ó¥¿¡Œ¥Ð¥ë¥¿¥€¥Þ€òŒþŽü¥¿¥€¥Þ€È€·€Æ»ÈÍÑ€¹€ëÊýË¡
+ *
+ *  ¥€¥ó¥¿¡Œ¥Ð¥ë¥¿¥€¥Þ€òŒþŽü¥¿¥€¥Þ€È€·€Æ»ÈÍÑ€¹€ë€Î€¬ÁÇÄŸ€Ç€¢€ë€¬¡€žœºß
+ *  €ÎMac OS X€Ç€Ï¡€SIGALRM€ÎÇÛÁ÷€¬ÃÙ±ä€¹€ë€³€È€¬€¢€ë€¿€á€«¡€¥¿¥€¥Þ€¬Œ¡
+ *  €ÎŒþŽü€Ë¿Ê€ó€À€Ë€â€«€«€ï€é€º¡€SIGALRM€ÎÇÛÁ÷€¬sigpending€Çž¡œÐ€Ç€­€Ê
+ *  €€Ÿì¹ç€¬€¢€ë¡¥€³€ì€Ë€è€ê¡€À­ÇœÉŸ²ÁÍÑ¥·¥¹¥Æ¥à»þ¹ï€Î»²ŸÈ€¬Àµ€·€¯Æ°ºî
+ *  €·€Ê€€€¿€á¡€€³€Î¥³¡Œ¥É€Ï»ÈÍÑ€·€Æ€€€Ê€€¡¥
+ */
+
+/*
+ *  ¥¿¥€¥Þ€Îµ¯Æ°œèÍý
+ */
+void
+target_timer_initialize(intptr_t exinf)
+{
+	CLOCK	cyc = TO_CLOCK(TIC_NUME, TIC_DENO);
+	struct itimerval	val;
+
+	/*
+	 *  ¥¿¥€¥ÞŒþŽü€òÀßÄê€·¡€¥¿¥€¥Þ€ÎÆ°ºî€ò³«»Ï€¹€ë¡¥
+	 */
+	assert(cyc <= MAX_CLOCK);
+	val.it_interval.tv_sec = 0;
+	val.it_interval.tv_usec = cyc;
+	val.it_value = val.it_interval;
+	setitimer(ITIMER_REAL, &val, NULL);
+}
+
+/*
+ *  ¥¿¥€¥Þ€ÎÄä»ßœèÍý
+ */
+void
+target_timer_terminate(intptr_t exinf)
+{
+	struct itimerval	val;
+
+	/*
+	 *  ¥¿¥€¥Þ€ÎÆ°ºî€òÄä»ß€¹€ë¡¥
+	 */
+	val.it_interval.tv_sec = 0;
+	val.it_interval.tv_usec = 0;
+	val.it_value = val.it_interval;
+	setitimer(ITIMER_REAL, &val, NULL);
+}
+
+/*
+ *  ¥¿¥€¥Þ€ÎžœºßÃÍ€ÎÆÉœÐ€·
+ */
+CLOCK
+target_timer_get_current(void)
+{
+	struct itimerval	val;
+
+	getitimer(ITIMER_REAL, &val);
+	return(TO_CLOCK(TIC_NUME, TIC_DENO) - val.it_value.tv_usec);
+}
+
+/*
+ *  ¥¿¥€¥Þ³ä¹þ€ßÍ×µá€Î¥Á¥§¥Ã¥¯
+ */
+bool_t
+target_timer_probe_int(void)
+{
+	return(x_probe_int(INTNO_TIMER));
+}
+
+/*
+ *  ¥¿¥€¥Þ³ä¹þ€ß¥Ï¥ó¥É¥é
+ */
+void
+target_timer_handler(void)
+{
+	i_begin_int(INTNO_TIMER);
+	signal_time();					/* ¥¿¥€¥à¥Æ¥£¥Ã¥¯€Î¶¡µë */
+	i_end_int(INTNO_TIMER);
+}
+
+#else /* 0 */
+/*
+ *		¥€¥ó¥¿¡Œ¥Ð¥ë¥¿¥€¥Þ€ò¥ï¥ó¥·¥ç¥Ã¥È¥¿¥€¥Þ€È€·€Æ»ÈÍÑ€¹€ëÊýË¡
+ */
+
+/*
+ *  ¥¿¥€¥Þ€ÎÆ°ºî³«»Ï
+ */
+Inline void
+itimer_start(void)
+{
+	CLOCK	cyc = TO_CLOCK(TIC_NUME, TIC_DENO);
+	struct itimerval	val;
+
+	/*
+	 *  ¥¿¥€¥ÞŒþŽü€òÀßÄê€·¡€¥¿¥€¥Þ€ÎÆ°ºî€ò³«»Ï€¹€ë¡¥
+	 */
+	assert(cyc <= MAX_CLOCK);
+	val.it_interval.tv_sec = 0;
+	val.it_interval.tv_usec = 0;
+	val.it_value.tv_sec = 0;
+	val.it_value.tv_usec = cyc;
+	setitimer(ITIMER_REAL, &val, NULL);
+}
+
+/*
+ *  ¥¿¥€¥Þ€Îµ¯Æ°œèÍý
+ */
+void
+target_timer_initialize(intptr_t exinf)
+{
+	itimer_start();
+}
+
+/*
+ *  ¥¿¥€¥Þ€ÎÄä»ßœèÍý
+ */
+void
+target_timer_terminate(intptr_t exinf)
+{
+	struct itimerval	val;
+
+	/*
+	 *  ¥¿¥€¥Þ€ÎÆ°ºî€òÄä»ß€¹€ë¡¥
+	 */
+	val.it_interval.tv_sec = 0;
+	val.it_interval.tv_usec = 0;
+	val.it_value = val.it_interval;
+	setitimer(ITIMER_REAL, &val, NULL);
+}
+
+/*
+ *  ¥¿¥€¥Þ€ÎžœºßÃÍ€ÎÆÉœÐ€·
+ */
+CLOCK
+target_timer_get_current(void)
+{
+	struct itimerval	val;
+
+	getitimer(ITIMER_REAL, &val);
+	return(TO_CLOCK(TIC_NUME, TIC_DENO) - val.it_value.tv_usec);
+}
+
+/*
+ *  ¥¿¥€¥Þ³ä¹þ€ßÍ×µá€Î¥Á¥§¥Ã¥¯
+ */
+bool_t
+target_timer_probe_int(void)
+{
+	return(false);
+}
+
+/*
+ *  ¥¿¥€¥Þ³ä¹þ€ß¥Ï¥ó¥É¥é
+ */
+void
+target_timer_handler(void)
+{
+	i_begin_int(INTNO_TIMER);
+	i_lock_cpu();
+	itimer_start();
+	i_unlock_cpu();
+	signal_time();					/* ¥¿¥€¥à¥Æ¥£¥Ã¥¯€Î¶¡µë */
+	i_end_int(INTNO_TIMER);
+}
+
+#endif /* 0 */
+#else /* TOPPERS_SUPPORT_OVRHDR */
+
+/*
+ *		¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éµ¡Çœ€ò¥µ¥Ý¡Œ¥È€¹€ëŸì¹ç
+ *
+ *  ¥¿¥€¥à¥Æ¥£¥Ã¥¯¶¡µë€Î€¿€á€Î¥¿¥€¥Þ¡Ê¥Æ¥£¥Ã¥¯¥¿¥€¥Þ¡Ë€È¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó
+ *  ¥É¥éµ¡Çœ€Î€¿€á€Î¥¿¥€¥Þ¡Ê¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ¡Ë€ò¡€1€Ä€Î¥€¥ó¥¿¡Œ¥Ð¥ë¥¿¥€
+ *  ¥Þ€òÂ¿œÅ²œ€·€ÆŒÂžœ€·€Æ€€€ë¡¥€³€ÎÊýË¡€Ï¡€¥Æ¥£¥Ã¥¯€ÎŒþŽü€¬€º€ì€ë€¿€á
+ *  €Ë¿äŸ©€Ç€­€Ê€€€¬¡€¥Þ¥€¥¯¥íÉÃÀºÅÙ€Î¥¿¥€¥Þ€¬1€Ä€·€«€Ê€¯¡€¥·¥ß¥å¥ì¡Œ¥·¥ç
+ *  ¥óŽÄ¶­€Ç¥Æ¥£¥Ã¥¯ŒþŽü€Î€º€ì€ÏÂç€­€€ÌäÂê€Ç€Ï€Ê€€€¿€á¡€€³€ÎÊýË¡€òºÎÍÑ
+ *  €·€Æ€€€ë¡¥
+ */
+#include "task.h"
+#include "overrun.h"
+
+static CLOCK	ticktimer_cyc;		/* ¥Æ¥£¥Ã¥¯¥¿¥€¥Þ€ÎŒþŽü */
+
+static bool_t	itimer_ticktimer;	/* ¥€¥ó¥¿¡Œ¥Ð¥ë¥¿¥€¥Þ€Ë
+											¥Æ¥£¥Ã¥¯¥¿¥€¥Þ€¬ÀßÄê€µ€ì€Æ€€€ë */
+static CLOCK	ticktimer_left;		/* ¥Æ¥£¥Ã¥¯¥¿¥€¥Þ€Î»Ä€ê»þŽÖ */
+static bool_t	ovrtimer_active;	/* ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€¬Í­žú */
+static OVRTIM	ovrtimer_left;		/* ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€Î»Ä€ê»þŽÖ */
+
+#define CLOCK_TO_OVRTIM(clock)		((OVRTIM) clock)
+#define OVRTIM_TO_CLOCK(ovrtim)		((CLOCK) ovrtim)
+
+static const struct itimerval		itimerval_stop = {{ 0, 0 }, { 0, 0 }};
+
+/*
+ *  ¥¿¥€¥Þ€ÎÆ°ºî³«»Ï
+ */
+Inline void
+itimer_start(void)
+{
+	struct itimerval	val;
+
+	/*
+	 *  ¥¿¥€¥Þ€òÀßÄê€·¡€¥¿¥€¥Þ€ÎÆ°ºî€ò³«»Ï€¹€ë¡¥
+	 */
+	if (!ovrtimer_active || CLOCK_TO_OVRTIM(ticktimer_left) <= ovrtimer_left) {
+		val.it_value.tv_sec = 0;
+		val.it_value.tv_usec = ticktimer_left;
+		itimer_ticktimer = true;
+	}
+	else {
+		val.it_value.tv_sec = 0;
+		val.it_value.tv_usec = OVRTIM_TO_CLOCK(ovrtimer_left);
+		itimer_ticktimer = false;
+	}
+	val.it_interval.tv_sec = 0;
+	val.it_interval.tv_usec = 0;
+	setitimer(ITIMER_REAL, &val, NULL);
+}
+
+/*
+ *  ¥¿¥€¥Þ€ÎÆ°ºîÄä»ß
+ */
+Inline void
+itimer_stop(void)
+{
+	struct itimerval	val;
+	CLOCK				left;
+
+	/*
+	 *  ¥¿¥€¥Þ€ÎÆ°ºî€òÄä»ß€·¡€€œ€Î»þÅÀ€Î»Ä€ê»þŽÖ€òleft€ËŒè€êœÐ€¹¡¥»Ä€ê
+	 *  »þŽÖ€¬0€Ë€Ê€Ã€Æ€€€ì€Ð1€ËÆÉ€ßŽ¹€š€ë¡¥€³€Î»þ€Ë¡€¥¹¥×¥ê¥¢¥¹³ä¹þ€ß
+	 *  €òÈ¯Àž€µ€»€ë²ÄÇœÀ­€¬€¢€ë¡¥
+	 */
+	setitimer(ITIMER_REAL, &itimerval_stop, &val);
+	left = val.it_value.tv_usec;
+	if (left == 0) {
+		left = 1;
+	}
+
+	/*
+	 *  ¥¿¥€¥Þ€Î»Ä€ê»þŽÖ€«€é¡€¥Æ¥£¥Ã¥¯¥¿¥€¥Þ€È¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€Î»Ä€ê»þ
+	 *  ŽÖ€òÀßÄê€·ÄŸ€¹¡¥
+	 */
+	if (itimer_ticktimer) {
+		if (ovrtimer_active) {
+			ovrtimer_left -= CLOCK_TO_OVRTIM(ticktimer_left - left);
+		}
+		ticktimer_left = left;
+	}
+	else {
+		ticktimer_left -= (OVRTIM_TO_CLOCK(ovrtimer_left) - left);
+		ovrtimer_left = CLOCK_TO_OVRTIM(left);
+	}
+}
+
+/*
+ *  ¥¿¥€¥Þ€Îµ¯Æ°œèÍý
+ */
+void
+target_timer_initialize(intptr_t exinf)
+{
+	ticktimer_cyc = TO_CLOCK(TIC_NUME, TIC_DENO);
+	assert(ticktimer_cyc <= MAX_CLOCK);
+
+	ticktimer_left = ticktimer_cyc;
+	ovrtimer_active = false;
+	itimer_start();
+}
+
+/*
+ *  ¥¿¥€¥Þ€ÎÄä»ßœèÍý
+ */
+void
+target_timer_terminate(intptr_t exinf)
+{
+	/*
+	 *  ¥¿¥€¥Þ€ÎÆ°ºî€òÄä»ß€¹€ë¡¥
+	 */
+	setitimer(ITIMER_REAL, &itimerval_stop, NULL);
+}
+
+/*
+ *  ¥¿¥€¥Þ€ÎžœºßÃÍ€ÎÆÉœÐ€·
+ */
+CLOCK
+target_timer_get_current(void)
+{
+	struct itimerval	val;
+
+	if (itimer_ticktimer) {
+		getitimer(ITIMER_REAL, &val);
+		if (val.it_value.tv_usec == 0) {
+			return(0);
+		}
+		else {
+			return(TO_CLOCK(TIC_NUME, TIC_DENO) - val.it_value.tv_usec);
+		}
+	}
+	else {
+		getitimer(ITIMER_REAL, &val);
+		return(ticktimer_left - (OVRTIM_TO_CLOCK(ovrtimer_left)
+												- val.it_value.tv_usec));
+	}
+}
+
+/*
+ *  ¥¿¥€¥Þ³ä¹þ€ßÍ×µá€Î¥Á¥§¥Ã¥¯
+ */
+bool_t
+target_timer_probe_int(void)
+{
+	struct itimerval	val;
+
+	if (itimer_ticktimer) {
+		getitimer(ITIMER_REAL, &val);
+		return(val.it_value.tv_usec == 0);
+	}
+	else {
+		return(false);
+	}
+}
+
+/*
+ *  ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÎœéŽü²œœèÍý
+ *
+ *  É¬Í×€ÊœèÍý€ò€¹€Ù€Ætarget_timer_initialize€Ç¹Ô€Ã€Æ€€€ë€Î€Ç¡€€³€Á€é€Ç
+ *  €Ï²¿€â€·€Ê€€¡¥
+ */
+void
+target_ovrtimer_initialize(intptr_t exinf)
+{
+}
+
+/*
+ *  ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÎÄä»ßœèÍý
+ *
+ *  É¬Í×€ÊœèÍý€ò€¹€Ù€Ætarget_timer_terminate€Ç¹Ô€Ã€Æ€€€ë€Î€Ç¡€€³€Á€é€Ç
+ *  €Ï²¿€â€·€Ê€€¡¥
+ */
+void
+target_ovrtimer_terminate(intptr_t exinf)
+{
+}
+
+/*
+ *  ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÎÆ°ºî³«»Ï
+ */
+void
+target_ovrtimer_start(OVRTIM ovrtim)
+{
+	assert(!ovrtimer_active);
+	itimer_stop();
+	ovrtimer_active = true;
+	ovrtimer_left = ovrtim;
+	itimer_start();
+}
+
+/*
+ *  ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÎÄä»ß
+ */
+OVRTIM
+target_ovrtimer_stop(void)
+{
+	struct itimerval	val;
+
+	assert(ovrtimer_active);
+	if (itimer_ticktimer) {
+		getitimer(ITIMER_REAL, &val);
+		ovrtimer_left -= CLOCK_TO_OVRTIM(ticktimer_left
+												- val.it_value.tv_usec);
+		if (ovrtimer_left == 0) {
+			ovrtimer_left = 1;
+		}
+		ovrtimer_active = false;
+	}
+	else {
+		itimer_stop();
+		ovrtimer_active = false;
+		itimer_start();
+	}
+	return(ovrtimer_left);
+}
+
+/*
+ *  ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÎžœºßÃÍ€ÎÆÉœÐ€·
+ */
+OVRTIM
+target_ovrtimer_get_current(void)
+{
+	struct itimerval	val;
+	OVRTIM				ovrtimer_current;
+
+	assert(ovrtimer_active);
+	if (itimer_ticktimer) {
+		getitimer(ITIMER_REAL, &val);
+		ovrtimer_current = ovrtimer_left
+					- CLOCK_TO_OVRTIM(ticktimer_left - val.it_value.tv_usec);
+	}
+	else {
+		getitimer(ITIMER_REAL, &val);
+		ovrtimer_current = CLOCK_TO_OVRTIM(val.it_value.tv_usec);
+	}
+	return(ovrtimer_current);
+}
+
+/*
+ *  ¥¿¥€¥Þ³ä¹þ€ß¥Ï¥ó¥É¥é
+ *
+ *  ¥¿¥€¥Þ³ä¹þ€ß¥Ï¥ó¥É¥é€ÎÆþžýœèÍý€Ç¡€ovrtimer_stop€¬žÆ€ÓœÐ€µ€ì€ë¡¥¥ª¡Œ
+ *  ¥Ð¥é¥ó¥¿¥€¥Þ€¬Æ°ºî€·€Æ€€€¿Ÿì¹ç€Ë€Ï¡€€œ€³€«€étarget_ovrtimer_stop€¬
+ *  žÆ€ÓœÐ€µ€ì€ë¡¥¥€¥ó¥¿¡Œ¥Ð¥ë¥¿¥€¥Þ€Ë¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€¬ÀßÄê€µ€ì€Æ€€€¿
+ *  Ÿì¹ç€Ë€Ï¡€€œ€³€«€éitimer_stop€Èitimer_start€¬žÆ€ÓœÐ€µ€ì€Æ¡€¥€¥ó¥¿¡Œ
+ *  ¥Ð¥ë¥¿¥€¥Þ€Ë¥Æ¥£¥Ã¥¯¥¿¥€¥Þ€¬ÀßÄê€µ€ì¡€¥€¥ó¥¿¡Œ¥Ð¥ë¥¿¥€¥Þ€¬Æ°ºî³«»Ï
+ *  €µ€ì€ë¡¥µÕ€Ë¡€¥€¥ó¥¿¡Œ¥Ð¥ë¥¿¥€¥Þ€Ë¥Æ¥£¥Ã¥¯¥¿¥€¥Þ€¬ÀßÄê€µ€ì€Æ€€€¿Ÿì
+ *  ¹ç€Ë€Ï¡€¥€¥ó¥¿¡Œ¥Ð¥ë¥¿¥€¥Þ€ÏÄä»ß€·€¿€Þ€Þ€È€Ê€Ã€Æ€€€ë¡¥
+ */
+void
+target_timer_handler(void)
+{
+	struct itimerval			val;
+
+	i_begin_int(INTNO_TIMER);
+	i_lock_cpu();
+	getitimer(ITIMER_REAL, &val);
+	if (val.it_value.tv_usec == 0) {
+		/*
+		 *  ¥€¥ó¥¿¡Œ¥Ð¥ë¥¿¥€¥Þ€¬Ää»ß€·€Æ€€€ë€Î€Ï¡€¥€¥ó¥¿¡Œ¥Ð¥ë¥¿¥€¥Þ€Ë
+		 *  ¥Æ¥£¥Ã¥¯¥¿¥€¥Þ€¬ÀßÄê€µ€ì€Æ€€€¿Ÿì¹ç€Ç€¢€ë¡¥
+		 */
+		ticktimer_left = ticktimer_cyc;
+
+		val.it_value.tv_sec = 0;
+		val.it_value.tv_usec = ticktimer_left;
+		val.it_interval.tv_sec = 0;
+		val.it_interval.tv_usec = 0;
+		setitimer(ITIMER_REAL, &val, NULL);
+
+		i_unlock_cpu();
+		signal_time();				/* ¥¿¥€¥à¥Æ¥£¥Ã¥¯€Î¶¡µë */
+	}
+	else {
+		/*
+		 *  ¥€¥ó¥¿¡Œ¥Ð¥ë¥¿¥€¥Þ€¬Æ°ºî€·€Æ€€€ë€Î€Ï¡€¥€¥ó¥¿¡Œ¥Ð¥ë¥¿¥€¥Þ€Ë
+		 *  ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€¬ÀßÄê€µ€ì€Æ€€€¿Ÿì¹ç€Ç€¢€ë¡¥
+		 */
+		if (p_runtsk->leftotm == 1) {
+			/*
+			 *  ¥¹¥×¥ê¥¢¥¹³ä¹þ€ß€Ç€Ê€€Ÿì¹ç€Ë¡€¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€òµ¯Æ°€¹
+			 *  €ë¡¥
+			 */
+			i_unlock_cpu();
+			call_ovrhdr();			/* ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥é€Îµ¯Æ° */
+		}
+		else {
+			i_unlock_cpu();
+		}
+	}
+	i_end_int(INTNO_TIMER);
+}
+
+#endif /* TOPPERS_SUPPORT_OVRHDR */
Index: /target/macosx_gcc/target_timer.cfg
===================================================================
--- /target/macosx_gcc/target_timer.cfg	(revision 7)
+++ /target/macosx_gcc/target_timer.cfg	(revision 7)
@@ -0,0 +1,18 @@
+/*
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥¿¥€¥Þ¥É¥é¥€¥Ð€Î¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+ */
+
+#include "target_timer.h"
+ATT_INI({ TA_NULL, 0, target_timer_initialize });
+ATT_TER({ TA_NULL, 0, target_timer_terminate });
+CFG_INT(INTNO_TIMER, { TA_ENAINT | INTATR_TIMER, INTPRI_TIMER });
+DEF_INH(INHNO_TIMER, { TA_NULL, target_timer_handler });
+
+#ifdef TOPPERS_SUPPORT_OVRHDR
+ATT_INI({ TA_NULL, 0, target_ovrtimer_initialize });
+ATT_TER({ TA_NULL, 0, target_ovrtimer_terminate });
+#endif /* TOPPERS_SUPPORT_OVRHDR */
Index: /target/macosx_gcc/target_timer.h
===================================================================
--- /target/macosx_gcc/target_timer.h	(revision 7)
+++ /target/macosx_gcc/target_timer.h	(revision 7)
@@ -0,0 +1,144 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥¿¥€¥Þ¥É¥é¥€¥Ð¡ÊMac OS XÍÑ¡Ë
+ */
+
+#ifndef TOPPERS_TARGET_TIMER_H
+#define TOPPERS_TARGET_TIMER_H
+
+#include <sil.h>
+#include "macosx.h"
+#ifndef TOPPERS_MACRO_ONLY
+#include <sys/time.h>
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  ¥¿¥€¥Þ³ä¹þ€ß¥Ï¥ó¥É¥éÅÐÏ¿€Î€¿€á€ÎÄê¿ô
+ */
+#define INHNO_TIMER		SIGALRM				/* ³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ */
+#define INTNO_TIMER		SIGALRM				/* ³ä¹þ€ßÈÖ¹æ */
+#define INTPRI_TIMER	(TMAX_INTPRI - 1)	/* ³ä¹þ€ßÍ¥ÀèÅÙ */
+#define INTATR_TIMER	TA_EDGE				/* ³ä¹þ€ßÂ°À­ */
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  ¥¿¥€¥ÞÃÍ€ÎÆâÉôÉœžœ€Î·¿
+ */
+typedef uint32_t	CLOCK;
+
+/*
+ *  ¥¿¥€¥ÞÃÍ€ÎÆâÉôÉœžœ€È¥ß¥êÉÃ¡Š¥Þ¥€¥¯¥íÉÃÃ±°Ì€È€ÎÊÑŽ¹
+ *
+ *  Mac OS X€Ç€Ï¡€¥€¥ó¥¿¡Œ¥Ð¥ë¥¿¥€¥Þ€Ï1¥Þ¥€¥¯¥íÉÃËè€Ë¥«¥Š¥ó¥È¥¢¥Ã¥×€¹€ë¡¥
+ */
+#define TIMER_CLOCK				1000U
+#define TO_CLOCK(nume, deno)	((CLOCK)(TIMER_CLOCK * (nume) / (deno)))
+#define TO_USEC(clock)			((SYSUTM) clock)
+
+/*
+ *  ÀßÄê€Ç€­€ëºÇÂç€Î¥¿¥€¥ÞŒþŽü¡ÊÃ±°Ì€ÏÆâÉôÉœžœ¡Ë
+ */
+#define MAX_CLOCK		((CLOCK) 999999U)
+
+/*
+ *  ¥¿¥€¥Þ€Îµ¯Æ°œèÍý
+ *
+ *  ¥¿¥€¥Þ€òœéŽü²œ€·¡€ŒþŽüÅª€Ê¥¿¥€¥Þ³ä¹þ€ßÍ×µá€òÈ¯Àž€µ€»€ë¡¥
+ */
+extern void	target_timer_initialize(intptr_t exinf);
+
+/*
+ *  ¥¿¥€¥Þ€ÎÄä»ßœèÍý
+ *
+ *  ¥¿¥€¥Þ€ÎÆ°ºî€òÄä»ß€µ€»€ë¡¥
+ */
+extern void	target_timer_terminate(intptr_t exinf);
+
+/*
+ *  ¥¿¥€¥Þ€ÎžœºßÃÍ€ÎÆÉœÐ€·
+ */
+extern CLOCK target_timer_get_current(void);
+
+/*
+ *  ¥¿¥€¥Þ³ä¹þ€ßÍ×µá€Î¥Á¥§¥Ã¥¯
+ */
+extern bool_t target_timer_probe_int(void);
+
+#ifdef TOPPERS_SUPPORT_OVRHDR
+
+/*
+ *  ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÎœéŽü²œœèÍý
+ */
+extern void target_ovrtimer_initialize(intptr_t exinf);
+
+/*
+ *  ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÎÄä»ßœèÍý
+ */
+extern void target_ovrtimer_terminate(intptr_t exinf);
+
+/*
+ *  ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÎÆ°ºî³«»Ï
+ */
+extern void target_ovrtimer_start(OVRTIM ovrtim);
+
+/*
+ *  ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÎÄä»ß
+ */
+extern OVRTIM target_ovrtimer_stop(void);
+
+/*
+ *  ¥ª¡Œ¥Ð¥é¥ó¥¿¥€¥Þ€ÎžœºßÃÍ€ÎÆÉœÐ€·
+ */
+extern OVRTIM target_ovrtimer_get_current(void);
+
+#endif /* TOPPERS_SUPPORT_OVRHDR */
+
+/*
+ *  ¥¿¥€¥Þ³ä¹þ€ß¥Ï¥ó¥É¥é
+ */
+extern void	target_timer_handler(void);
+
+#endif /* TOPPERS_MACRO_ONLY */
+#endif /* TOPPERS_TARGET_TIMER_H */
Index: /target/macosx_gcc/target_unrename.h
===================================================================
--- /target/macosx_gcc/target_unrename.h	(revision 7)
+++ /target/macosx_gcc/target_unrename.h	(revision 7)
@@ -0,0 +1,98 @@
+/* This file is generated from target_rename.def by genrename. */
+
+/* This file is included only when target_rename.h has been included. */
+#ifdef TOPPERS_TARGET_RENAME_H
+#undef TOPPERS_TARGET_RENAME_H
+
+/*
+ *  kernel_cfg.c
+ */
+#undef sigmask_table
+#undef sigmask_disint_init
+
+/*
+ *  target_config.c
+ */
+#undef sigmask_intlock
+#undef sigmask_cpulock
+#undef lock_flag
+#undef saved_sigmask
+#undef ipm_value
+#undef sigmask_disint
+#undef dispatch
+#undef exit_and_dispatch
+#undef ret_int
+#undef ret_exc
+#undef call_exit_kernel
+#undef start_r
+#undef target_initialize
+#undef target_exit
+
+/*
+ *  target_timer.c
+ */
+#undef target_timer_get_current
+#undef target_timer_probe_int
+#undef target_ovrtimer_start
+#undef target_ovrtimer_stop
+#undef target_ovrtimer_get_current
+
+/*
+ *  trace_config.c
+ */
+#undef log_dsp_enter
+#undef log_dsp_leave
+#undef log_inh_enter
+#undef log_inh_leave
+#undef log_exc_enter
+#undef log_exc_leave
+
+#ifdef TOPPERS_LABEL_ASM
+
+/*
+ *  kernel_cfg.c
+ */
+#undef _sigmask_table
+#undef _sigmask_disint_init
+
+/*
+ *  target_config.c
+ */
+#undef _sigmask_intlock
+#undef _sigmask_cpulock
+#undef _lock_flag
+#undef _saved_sigmask
+#undef _ipm_value
+#undef _sigmask_disint
+#undef _dispatch
+#undef _exit_and_dispatch
+#undef _ret_int
+#undef _ret_exc
+#undef _call_exit_kernel
+#undef _start_r
+#undef _target_initialize
+#undef _target_exit
+
+/*
+ *  target_timer.c
+ */
+#undef _target_timer_get_current
+#undef _target_timer_probe_int
+#undef _target_ovrtimer_start
+#undef _target_ovrtimer_stop
+#undef _target_ovrtimer_get_current
+
+/*
+ *  trace_config.c
+ */
+#undef _log_dsp_enter
+#undef _log_dsp_leave
+#undef _log_inh_enter
+#undef _log_inh_leave
+#undef _log_exc_enter
+#undef _log_exc_leave
+
+#endif /* TOPPERS_LABEL_ASM */
+
+
+#endif /* TOPPERS_TARGET_RENAME_H */
Index: /target/macosx_gcc/target_user.txt
===================================================================
--- /target/macosx_gcc/target_user.txt	(revision 7)
+++ /target/macosx_gcc/target_user.txt	(revision 7)
@@ -0,0 +1,447 @@
+
+		TOPPERS/ASP¥«¡Œ¥Í¥ë
+		Mac OS X¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô ¥æ¡Œ¥¶¡Œ¥º¥Þ¥Ë¥å¥¢¥ë
+
+		ÂÐ±þ¥Ð¡Œ¥ž¥ç¥ó: Release 1.9.1
+		ºÇœª¹¹¿·: 2014Ç¯11·î17Æü
+
+€³€Î¥É¥­¥å¥á¥ó¥È€Ï¡€TOPPERS/ASP¥«¡Œ¥Í¥ë€ÎMac OS X¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€ò»ÈÍÑ
+€¹€ë€¿€á€ËÉ¬Í×€Ê»ö¹à€òÀâÌÀ€¹€ë€â€Î€Ç€¢€ë¡¥
+
+----------------------------------------------------------------------
+ TOPPERS/ASP Kernel
+     Toyohashi Open Platform for Embedded Real-Time Systems/
+     Advanced Standard Profile Kernel
+
+ Copyright (C) 2008-2014 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$
+----------------------------------------------------------------------
+
+¡ûÌÜŒ¡
+
+£±¡¥Mac OS X¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€Î³µÍ×
+	1.1 ÂÐ±þ€¹€ë¥¿¡Œ¥²¥Ã¥È¥·¥¹¥Æ¥à€È¥¿¡Œ¥²¥Ã¥ÈÎ¬ŸÎ
+	1.2 ¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€Î¹œÀ®
+	1.3 °ÍÂž€·€Æ€€€ëžÄÊÌ¥Ñ¥Ã¥±¡Œ¥ž€Î¥Ð¡Œ¥ž¥ç¥óÈÖ¹æ
+	1.4 ³«È¯ŽÄ¶­€ÈÆ°ºî³ÎÇ§Ÿò·ï
+	1.5 ¥á¥â¥ê¥Þ¥Ã¥×
+£²¡¥¥¿¡Œ¥²¥Ã¥ÈÄêµÁ»ö¹à€Îµ¬Äê
+	2.1 ¥Ç¡Œ¥¿·¿€ËŽØ€¹€ëµ¬Äê
+	2.2 ³ä¹þ€ßœèÍý€ÈCPUÎã³°œèÍý€ËŽØ€¹€ëµ¬Äê
+	2.3 À­ÇœÉŸ²ÁÍÑ¥·¥¹¥Æ¥à»þ¹ï€Î»²ŸÈ€ËŽØ€¹€ëµ¬Äê
+	2.4 ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹µ¡Çœ³ÈÄ¥€Î¥µ¥Ý¡Œ¥È€ËŽØ€¹€ëµ¬Äê
+	2.5 ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éµ¡Çœ³ÈÄ¥€Î¥µ¥Ý¡Œ¥È€ËŽØ€¹€ëµ¬Äê
+	2.6 ¥¿¥¹¥¯Í¥ÀèÅÙ³ÈÄ¥€Î¥µ¥Ý¡Œ¥È€ËŽØ€¹€ëµ¬Äê
+	2.7 À©Ìó¥¿¥¹¥¯³ÈÄ¥€Î¥µ¥Ý¡Œ¥È€ËŽØ€¹€ëµ¬Äê
+	2.8 Æ°ÅªÀžÀ®µ¡Çœ³ÈÄ¥€Î¥µ¥Ý¡Œ¥È€ËŽØ€¹€ëµ¬Äê
+	2.9 €œ€ÎÂŸ€ÎÀ©žÂ»ö¹à
+£³¡¥¥É¥é¥€¥ÐŽØÏ¢€ÎŸðÊó
+	3.1 ¥¿¥€¥Þ¥É¥é¥€¥Ð
+	3.2 ¥·¥ê¥¢¥ë¥€¥ó¥¿¥Õ¥§¡Œ¥¹¥É¥é¥€¥Ð
+	3.3 ¥·¥¹¥Æ¥à¥í¥°€ÎÄã¥ì¥Ù¥ëœÐÎÏ
+	3.4 ¥Î¥ó¥Ö¥í¥Ã¥­¥ó¥°I/O¥µ¥Ý¡Œ¥È¥â¥ž¥å¡Œ¥ë
+£Ž¡¥¥·¥¹¥Æ¥à¹œÃÛŒêœç€ÈŒÂ¹ÔŒêœç
+	4.1 ¥·¥¹¥Æ¥à¹œÃÛ€ÈŒÂ¹Ô
+	4.2 ¥Ç¥Ð¥Ã¥¬€Î»ÈÍÑÊýË¡
+£µ¡¥»²¹ÍŸðÊó
+	5.1 Îà»÷€Î¥¿¡Œ¥²¥Ã¥È€Ø€Î¥Ý¡Œ¥Æ¥£¥ó¥°
+£¶¡¥¥ê¥Õ¥¡¥ì¥ó¥¹
+	6.1 ¥Ç¥£¥ì¥¯¥È¥ê¹œÀ®¡Š¥Õ¥¡¥€¥ë¹œÀ®
+	6.2 ¥Ð¡Œ¥ž¥ç¥óÍúÎò
+
+
+£±¡¥Mac OS X¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€Î³µÍ×
+
+Mac OS X¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€Ï¡€TOPPERS/ASP¥«¡Œ¥Í¥ë€ò¡€Intel¥×¥í¥»¥Ã¥µ€Þ€¿
+€ÏPowerPC¥×¥í¥»¥Ã¥µ€ÇÆ°ºî€¹€ëMac OS XŸå€Î1€Ä€Î¥×¥í¥»¥¹€Ç¥·¥ß¥å¥ì¡Œ¥·¥ç
+¥óÆ°ºî€µ€»€ëŽÄ¶­¡Ê€³€ì€ò¡€ASP¥«¡Œ¥Í¥ë€ÎMac OS X¥·¥ß¥å¥ì¡Œ¥·¥ç¥óŽÄ¶­€ÈžÆ
+€Ö¡Ë€ò¹œÀ®€¹€ë€¿€á€Î€â€Î€Ç€¢€ë¡¥€³€Î¥·¥ß¥å¥ì¡Œ¥·¥ç¥óŽÄ¶­€Ç€Ï¡€ASP¥«¡Œ¥Í
+¥ë€Î³Æ¥¿¥¹¥¯€¬¡€¥×¥í¥»¥¹Æâ€Î¥æ¡Œ¥¶¥ì¥Ù¥ë¥¹¥ì¥Ã¥É€È€·€ÆÆ°ºî€¹€ë¡¥
+
+1.1 ÂÐ±þ€¹€ë¥¿¡Œ¥²¥Ã¥È¥·¥¹¥Æ¥à€È¥¿¡Œ¥²¥Ã¥ÈÎ¬ŸÎ
+
+Æ°ºî³ÎÇ§€ò¹Ô€Ã€¿¥¿¡Œ¥²¥Ã¥È¥·¥¹¥Æ¥à€ª€è€ÓOS€Î¥Ð¡Œ¥ž¥ç¥ó€ÏŒ¡€ÎÄÌ€ê¡¥
+
+	Intel¥×¥í¥»¥Ã¥µ
+		¥Þ¥·¥óÌŸ¡§MacBook Air
+		¥×¥í¥»¥Ã¥µ¡§1.7GHz Intel Core i7
+		OS¡§Mac OS X ¥Ð¡Œ¥ž¥ç¥ó 10.9.5
+
+€Ê€ª¡€žœ»þÅÀ€Ç€Ï¡€Intel¥×¥í¥»¥Ã¥µ€Î32¥Ó¥Ã¥ÈŽÄ¶­¡ÊIA-32¡Ë€Î€ß€ò¥µ¥Ý¡Œ¥È
+€·€Æ€ª€ê¡€64¥Ó¥Ã¥ÈŽÄ¶­¡Êx86-64¡Ë€Ï¥µ¥Ý¡Œ¥È€·€Æ€€€Ê€€¡¥64¥Ó¥Ã¥ÈŽÄ¶­€ò¥µ
+¥Ý¡Œ¥È€¹€ë€¿€á€ÎºÇÂç€Î²ÝÂê€Ï¡€¥â¥È¥í¡Œ¥éS¥ì¥³¡Œ¥É¥Õ¥©¡Œ¥Þ¥Ã¥È€¬64¥Ó¥Ã¥È
+¥¢¥É¥ì¥¹€ËÂÐ±þ€·€Æ€€€Ê€€€³€È€Ç€¢€ë¡¥
+
+€Þ€¿¡€¥¿¡Œ¥²¥Ã¥ÈÎ¬ŸÎÅù€ÏŒ¡€ÎÄÌ€ê¡¥
+
+	¥¿¡Œ¥²¥Ã¥ÈÎ¬ŸÎ¡§macosx_gcc
+	¥·¥¹¥Æ¥àÎ¬ŸÎ¡§macosx
+	³«È¯ŽÄ¶­Î¬ŸÎ¡§gcc
+
+1.2 ¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€Î¹œÀ®
+
+Mac OS X¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€Î»ÈÍÑ€¹€ë¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô¡Êtarget¥Ç¥£¥ì¥¯¥È¥ê¡Ë
+€ª€è€Ó¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€Î¶ŠÄÌÉô¡Êarch¥Ç¥£¥ì¥¯¥È¥ê¡Ë€Î¥Ç¥£¥ì¥¯¥È¥ê€ÏŒ¡€Î
+ÄÌ€ê¡¥€Ê€ª¡€Mac OS X¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€Ï¡€PDIC€Ï»ÈÍÑ€·€Æ€€€Ê€€¡¥
+
+	target/
+		macosx_gcc/		Mac OS X¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô
+	arch/
+		gcc/			GCC³«È¯ŽÄ¶­°ÍÂžÉô
+		logtrace/		¥È¥ì¡Œ¥¹¥í¥°µ­Ï¿€Î¥µ¥ó¥×¥ë¥³¡Œ¥É
+
+Xcode€ËÉÕÂ°€ÎC¥³¥ó¥Ñ¥€¥é€ÏClang€Ç€¢€ê¡€GCC€Ç€Ï€Ê€€€¬¡€€³€ÎÈÏ°Ï€Ç€ÏžßŽ¹
+€Ç»È€š€ë€¿€á¡€GCC³«È¯ŽÄ¶­°ÍÂžÉô€òÎ®ÍÑ€·€Æ€€€ë¡¥
+
+1.3 °ÍÂž€·€Æ€€€ëžÄÊÌ¥Ñ¥Ã¥±¡Œ¥ž€Î¥Ð¡Œ¥ž¥ç¥óÈÖ¹æ
+
+Mac OS X¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô¡Ê¥Ð¡Œ¥ž¥ç¥ó 1.9.1¡Ë€ÎžÄÊÌ¥Ñ¥Ã¥±¡Œ¥ž€¬°ÍÂž€·€Æ
+€€€ëžÄÊÌ¥Ñ¥Ã¥±¡Œ¥ž€È¡€Æ°ºî³ÎÇ§€ò¹Ô€Ã€¿¥Ð¡Œ¥ž¥ç¥ó€ÏŒ¡€ÎÄÌ€ê¡¥
+
+	žÄÊÌ¥Ñ¥Ã¥±¡Œ¥ž€ÎÌŸŸÎ	¥Ð¡Œ¥ž¥ç¥ó	žÄÊÌ¥Ñ¥Ã¥±¡Œ¥ž¥Õ¥¡¥€¥ëÌŸ
+	------------------------------------------------------------------
+	¥¿¡Œ¥²¥Ã¥ÈÈó°ÍÂžÉô		1.9.1		asp-1.9.1.tar.gz
+
+1.4 ³«È¯ŽÄ¶­€ÈÆ°ºî³ÎÇ§Ÿò·ï
+
+³«È¯ŽÄ¶­€È€·€Æ¡€Xcode€ËÉÕÂ°€ÎC¥³¥ó¥Ñ¥€¥é¡ÊCC¡Ë€È¡€GNU¥Ð¥€¥Ê¥ê¥æ¡Œ¥Æ¥£¥ê
+¥Æ¥£¡Êbinutils¡Ë€òÍÑ€€€ë¡¥Æ°ºî³ÎÇ§€ò¹Ô€Ã€¿¥Ð¡Œ¥ž¥ç¥ó€ÏŒ¡€ÎÄÌ€ê¡¥
+
+	Clang: Apple LLVM version 6.0 (clang-600.0.51) (based on LLVM 3.5svn)
+	GDB¡§7.7
+	binutils¡Êobjcopy¡€objdump¡Ë¡§2.24
+
+Ÿåµ­€ÎCC€Ï¡€Xcode 6.0.1€ËŽÞ€Þ€ì€ë€â€Î€Ç€¢€ë¡¥Xcode€Ï¡€Command Line
+Tools€ò¥€¥ó¥¹¥È¡Œ¥ë€¹€ë€³€È¡¥
+
+GDB€Èbinutils€Ï¡€HomeBrew€Ë€è€ê¥€¥ó¥¹¥È¡Œ¥ë€·€¿€â€Î€òÍÑ€€€ÆÆ°ºî³ÎÇ§€·€¿¡¥
+HomeBrew€Ï¡€binutils€Î³Æ¥×¥í¥°¥é¥à€ò"g"€Ç»Ï€Þ€ëÌŸŸÎ€Ç¥€¥ó¥¹¥È¡Œ¥ë€¹€ë€¿
+€á¡€Makefile.target€Ç¡€nm€Èobjcopy€ËÂå€š€Æ¡€gnm€Ègobjcopy€òÍÑ€€€ë€è€Š€Ë
+€·€Æ€€€ë¡Ênm€ÏXcode€Ë€âŽÞ€Þ€ì€Æ€€€ë€¬¡€Æ°ºî³ÎÇ§€Ç€Ïbinutils€ËŽÞ€Þ€ì€Æ€€
+€ënm€òÍÑ€€€¿¡Ë¡¥
+
+1.5 ¥á¥â¥ê¥Þ¥Ã¥×
+
+Mac OS X¥·¥ß¥å¥ì¡Œ¥·¥ç¥óŽÄ¶­€Ç€Ï¡€TOPPERS/ASP¥«¡Œ¥Í¥ë€ª€è€Ó¥¢¥×¥ê¥±¡Œ¥·¥ç
+¥ó¥œ¥Õ¥È¥Š¥§¥¢€¬¡€Mac OS XŸå€Î1€Ä€Î¥×¥í¥»¥¹€ÇÆ°ºî€¹€ë€¿€á¡€¥á¥â¥ê¥Þ¥Ã¥×
+€Ë€Ä€€€Æ€Ï¡€Mac OS X€Î¥×¥í¥»¥¹€ÎÉžœà€Î°·€€€ËœŸ€Š¡¥
+
+
+£²¡¥¥¿¡Œ¥²¥Ã¥ÈÄêµÁ»ö¹à€Îµ¬Äê
+
+2.1 ¥Ç¡Œ¥¿·¿€ËŽØ€¹€ëµ¬Äê
+
+¥¿¡Œ¥²¥Ã¥È°ÍÂž€Î¥Ç¡Œ¥¿·¿€Î¥µ¥€¥º€ÏŒ¡€ÎÄÌ€ê¡¥
+
+	int_t			32¥Ó¥Ã¥È
+	long_t			32¥Ó¥Ã¥È
+
+	char			8¥Ó¥Ã¥È
+	int_least8_t	8¥Ó¥Ã¥È
+	void *			32¥Ó¥Ã¥È
+	intptr_t		32¥Ó¥Ã¥È
+
+¥¿¡Œ¥²¥Ã¥È°ÍÂž€Î¥Ç¡Œ¥¿·¿€ÎÍ­Ìµ€ÏŒ¡€ÎÄÌ€ê¡¥
+
+	int8_t¡€uint8_t			€¢€ê
+	int64_t¡€uint64_t		€¢€ê
+	int128_t¡€uint128_t		€Ê€·
+	float32_t				€¢€ê
+	double64_t				€¢€ê
+
+2.2 ³ä¹þ€ßœèÍý€ÈCPUÎã³°œèÍý€ËŽØ€¹€ëµ¬Äê
+
+Mac OS X¥·¥ß¥å¥ì¡Œ¥·¥ç¥óŽÄ¶­€Ç€Ï¡€¥×¥í¥»¥¹€ËÂÐ€¹€ë¥·¥°¥Ê¥ë€ò¡€³ä¹þ€ß€Þ
+€¿€ÏCPUÎã³°€È€·€Æ°·€Š¡¥€¿€À€·¡€SIGKILL€ÈSIGSTOP€Î2€Ä€Î¥·¥°¥Ê¥ë€Ï¡€€œ€ì
+€é€ËÂÐ€¹€ë¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é€òÅÐÏ¿€Ç€­€Ê€€€¿€á¡€³ä¹þ€ß€Þ€¿€ÏCPUÎã³°€È€·€Æ
+°·€Š€³€È€¬€Ç€­€Ê€€¡¥€Þ€¿¡€SIGUSR2€â¡€Mac OS X¥·¥ß¥å¥ì¡Œ¥·¥ç¥óŽÄ¶­€ÎŒÂžœ
+€Î€¿€á€Ë»ÈÍÑ€¹€ë€¿€á¡€³ä¹þ€ß€Þ€¿€ÏCPUÎã³°€È€·€Æ°·€Š€³€È€¬€Ç€­€Ê€€¡¥
+
+€³€ì€é€Î3€Ä€Î¥·¥°¥Ê¥ë€òœü€¯€È¡€€€€º€ì€Î¥·¥°¥Ê¥ë€â¡€³ä¹þ€ß€È€·€Æ°·€Š€³€È
+€â¡€CPUÎã³°€È€·€Æ°·€Š€³€È€â€Ç€­€ë¡¥¶ñÂÎÅª€Ë€Ï¡€DEF_INH€Ë€è€Ã€Æ³ä¹þ€ß¥Ï
+¥ó¥É¥é€òÅÐÏ¿€¹€ë€«¡€ATT_ISR€Ë€è€Ã€Æ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó€òÅÐÏ¿€·€¿Ÿì¹ç
+€Ë€Ï¡€³ä¹þ€ß€È€·€Æ°·€ï€ì¡€DEF_EXC€Ë€è€Ã€ÆCPUÎã³°¥Ï¥ó¥É¥é€òÅÐÏ¿€·€¿Ÿì¹ç
+€Ë€Ï¡€CPUÎã³°€È€·€Æ°·€ï€ì€ë¡¥
+
+³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ¡Êinhno¡Ë¡€³ä¹þ€ßÈÖ¹æ¡Êintno¡Ë¡€CPUÎã³°¥Ï¥ó¥É¥éÈÖ¹æ
+¡Êexcno¡Ë€ÎÃÍ€Ï¡€€€€º€ì€â¡€¥·¥°¥Ê¥ëÈÖ¹æ€È°ìÃ×€µ€»€Æ€€€ë¡¥¥·¥°¥Ê¥ëÌŸ€È¥·
+¥°¥Ê¥ëÈÖ¹æ€Ï¡€/usr/include/sys/signal.h€ËÄêµÁ€µ€ì€Æ€€€ë¡¥€Ê€ª¡€macosx.h
+€«€é€³€Î¥Ø¥Ã¥À¥Õ¥¡¥€¥ë€ò¥€¥ó¥¯¥ë¡Œ¥É€·€Æ€€€ë€¿€á¡€¥·¥°¥Ê¥ëÌŸ€òÍÑ€€€ëŸì
+¹ç€Ë€Ï¡€macosx.h€ò¥€¥ó¥¯¥ë¡Œ¥É€¹€ë€ÈÎÉ€€¡¥
+
+³ä¹þ€ßÍ¥ÀèÅÙ€È€·€Æ€Ï¡€-7¡Á-1€Î7ÃÊ³¬€ò¥µ¥Ý¡Œ¥È€·€Æ€€€ë€¬¡€-7€ÏNMI°·€€€È
+€·€Æ€ª€ê¡€¥«¡Œ¥Í¥ëŽÉÍý€Î³ä¹þ€ß€È€Ç€­€ë€Î€Ï¡€-6¡Á-1€ÎÈÏ°Ï€Ç€¢€ë¡¥¥Ç¥Õ¥©
+¥ë¥È€Ç€Ï¡€target_kernel.h€Ë€ª€€€ÆTMIN_INTPRI€ò-6€ËÀßÄê€·€Æ€ª€ê¡€€³€ì€Ï¡€
+NMI°Ê³°€Ë¥«¡Œ¥Í¥ëŽÉÍý³°€Î³ä¹þ€ß€òÀß€±€Ê€€€³€È€ò°ÕÌ£€·€Æ€€€ë¡¥€³€ÎÃÍ€òÎã
+€š€Ð-5€ËÊÑ¹¹€¹€ë€È¡€NMI€Ë²Ã€š€Æ¡€³ä¹þ€ßÍ¥ÀèÅÙ€¬-6€Î³ä¹þ€ß€¬¥«¡Œ¥Í¥ëŽÉÍý
+³°€È€Ê€ë¡¥€Ê€ª¡€TMIN_INTPRI€ËÄêµÁ€Ç€­€ëÃÍ€Ï¡€-6¡Á-1€ÎÈÏ°Ï€Ç€¢€ë¡¥
+
+€¢€ë³ä¹þ€ß€ò¥«¡Œ¥Í¥ëŽÉÍý³°€Î³ä¹þ€ß€È€·€Æ»ÈÍÑ€¹€ëŸì¹ç€Ë€Ï¡€CFG_INT€Ë€ª€€
+€Æ³ä¹þ€ßÍ¥ÀèÅÙ€òTMIN_INTPRI€è€ê¹â€€¥ì¥Ù¥ë¡ÊÃÍ€È€·€Æ€Ï¡€€è€êŸ®€µ€€ÃÍ¡Ë€Ë
+ÀßÄê€·¡€³ä¹þ€ß¥Ï¥ó¥É¥éÂ°À­€ËTA_NONKERNEL€ò»ØÄê€·€ÆDEF_INH€Ë€è€ê³ä¹þ€ß¥Ï
+¥ó¥É¥é€òÄêµÁ€¹€ì€Ð€è€€¡Ê¥«¡Œ¥Í¥ëŽÉÍý³°€Î³ä¹þ€ß€ËÂÐ€·€Æ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ
+¥Á¥ó€òÅÐÏ¿€¹€ë€³€È€Ï€Ç€­€Ê€€€Î€ÇÃí°Õ¡Ë¡¥
+
+¥«¡Œ¥Í¥ëŽÉÍý³°€Î³ä¹þ€ß¥Ï¥ó¥É¥é€Ï¡€¥«¡Œ¥Í¥ëÆâ€Î³ä¹þ€ßœÐÆþžýœèÍý€ò·ÐÍ³€»
+€º€ËžÆ€ÓœÐ€µ€ì€ë¡¥€¹€Ê€ï€Á¡€¥«¡Œ¥Í¥ëŽÉÍý³°€Î³ä¹þ€ß¥Ï¥ó¥É¥é€Îµ­œÒÊýË¡€Ï¡€
+Mac OS X€Î¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é€ÈÆ±€ž€Ç€¢€ë¡¥
+
+dis_int€Èena_int€Ï¡€NMI°Ê³°€Î³ä¹þ€ßÍ×µá¥é¥€¥ó€ËÂÐ€·€Æ¥µ¥Ý¡Œ¥È€·€Æ€€€ë¡¥
+µÕ€ËžÀ€Š€È¡€³ä¹þ€ßÍ¥ÀèÅÙ€¬-7¡ÊNMI¡Ë€Î³ä¹þ€ßÍ×µá¥é¥€¥ó¡€CPUÎã³°€È€·€Æ°·€Ã
+€Æ€€€ë¥·¥°¥Ê¥ë¡€³ä¹þ€ßÂ°À­€¬ÀßÄê€µ€ì€Æ€€€Ê€€³ä¹þ€ßÍ×µá¥é¥€¥ó€ËÂÐ€¹€ë
+dis_int€Èena_int€Ï¡€E_OBJ¥š¥é¡Œ€È€Ê€ë¡¥
+
+CFG_INT€ËÂÐ€¹€ëÀ©žÂ»ö¹à€È€·€Æ¡€¥ì¥Ù¥ë¥È¥ê¥¬€¬¥µ¥Ý¡Œ¥È€µ€ì€Æ€ª€é€º¡€³ä¹þ
+€ßÂ°À­€ËTA_EDGE€ò»ØÄê€·€Ê€€€È¡€E_RSATR¥š¥é¡Œ€È€Ê€ë¡¥€³€ì€Ï¡€¥×¥í¥»¥¹€Ë
+ÂÐ€¹€ë¥·¥°¥Ê¥ë€Ï¡€¥š¥Ã¥ž¥È¥ê¥¬€ÈÆ±ÍÍ€Ë¿¶€ëÉñ€€¡€¥ì¥Ù¥ë¥È¥ê¥¬€Î€è€Š€Ë¿¶
+€ëÉñ€ï€»€ë€³€È€¬€Ç€­€Ê€€€¿€á€Ç€¢€ë¡¥
+
+xsns_xpn€ËÂÐ€¹€ëÀ©žÂ»ö¹à€Ï€Ê€€¡ÊÀµ³Î€ËÈœÄê€µ€ì€ë¡Ë¡¥
+
+°Ê²Œ€Î3€Ä€Î¥·¥°¥Ê¥ë€Ï¡€³ä¹þ€ß€È€·€Æ€âCPUÎã³°€È€·€Æ€â°·€ï€Ê€€Ÿì¹ç€Ë¡€¥·
+¥°¥Ê¥ë€ò¥Þ¥¹¥¯€»€º€Ë¡€ÉžœàÅª€Ê¿¶Éñ€€€ò€µ€»€ë¡¥€³€ì€Ï¡€¥Ç¥Ð¥Ã¥°€òÍÆ°×€Ë
+€¹€ë€¿€á€Ç€¢€ë¡ÊÎã€š€Ð¡€SIGINT€ò¥Þ¥¹¥¯€¹€ë€È¡€CTRL+C€Ç¥×¥í¥°¥é¥à€ÎŒÂ¹Ô
+€¬Ää»ß€·€Ê€¯€Ê€ë¡Ë¡¥
+
+	SIGINT		³ä¹þ€ß¡ÊCTRL+C¡Ë
+	SIGBUS		¥Ð¥¹¥š¥é¡Œ
+	SIGSEGV		¥»¥°¥á¥ó¥Æ¡Œ¥·¥ç¥ó°ãÈ¿
+
+2.3 À­ÇœÉŸ²ÁÍÑ¥·¥¹¥Æ¥à»þ¹ï€Î»²ŸÈ€ËŽØ€¹€ëµ¬Äê
+
+get_utm€ò¥µ¥Ý¡Œ¥È€·€Æ€€€ë€¬¡€¥·¥ß¥å¥ì¡Œ¥·¥ç¥óŽÄ¶­€ÎÀ©žÂŸå¡€Àµ³Î€ÊÀ­ÇœÉŸ
+²Á€Ë»ÈÍÑ€¹€ë€³€È€Ï€Ç€­€Ê€€¡¥
+
+2.4 ¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹µ¡Çœ³ÈÄ¥€Î¥µ¥Ý¡Œ¥È€ËŽØ€¹€ëµ¬Äê
+
+¥ß¥å¡Œ¥Æ¥Ã¥¯¥¹µ¡Çœ³ÈÄ¥¥Ñ¥Ã¥±¡Œ¥ž€ò¥µ¥Ý¡Œ¥È€·€Æ€€€ë¡¥
+
+2.5 ¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éµ¡Çœ³ÈÄ¥€Î¥µ¥Ý¡Œ¥È€ËŽØ€¹€ëµ¬Äê
+
+¥ª¡Œ¥Ð¥é¥ó¥Ï¥ó¥É¥éµ¡Çœ³ÈÄ¥¥Ñ¥Ã¥±¡Œ¥ž€ò¥µ¥Ý¡Œ¥È€·€Æ€€€ë€¬¡€¥·¥ß¥å¥ì¡Œ¥·¥ç
+¥óŽÄ¶­€ÎÀ©žÂŸå¡€¥×¥í¥»¥Ã¥µ»þŽÖ€ÎÂ¬Äê€Ë€Ï€«€Ê€ê€Îžíº¹€¬ŽÞ€Þ€ì€ë¡¥¥×¥í¥»¥Ã
+¥µ»þŽÖ€Ë»ØÄê€Ç€­€ëÃÍ€ËÀ©žÂ€Ï€Ê€€¡Ê€Ä€Þ€ê¡€TMAX_OVRTIM€ÏULONG_MAX€Ç€¢
+€ë¡Ë¡¥
+
+2.6 ¥¿¥¹¥¯Í¥ÀèÅÙ³ÈÄ¥€Î¥µ¥Ý¡Œ¥È€ËŽØ€¹€ëµ¬Äê
+
+¥¿¥¹¥¯Í¥ÀèÅÙ³ÈÄ¥¥Ñ¥Ã¥±¡Œ¥ž€ò¥µ¥Ý¡Œ¥È€·€Æ€€€ë¡¥
+
+2.7 À©Ìó¥¿¥¹¥¯³ÈÄ¥€Î¥µ¥Ý¡Œ¥È€ËŽØ€¹€ëµ¬Äê
+
+À©Ìó¥¿¥¹¥¯³ÈÄ¥¥Ñ¥Ã¥±¡Œ¥ž€ò¥µ¥Ý¡Œ¥È€·€Æ€€€ë¡¥
+
+2.8 Æ°ÅªÀžÀ®µ¡Çœ³ÈÄ¥€Î¥µ¥Ý¡Œ¥È€ËŽØ€¹€ëµ¬Äê
+
+Æ°ÅªÀžÀ®µ¡Çœ³ÈÄ¥¥Ñ¥Ã¥±¡Œ¥ž€ò¥µ¥Ý¡Œ¥È€·€Æ€€€ë¡¥
+
+Æ°Åª¥á¥â¥êŽÉÍý€Ï¡€¥ª¡Œ¥×¥ó¥œ¡Œ¥¹€Î¥á¥â¥ê³äÉÕ€±¥é¥€¥Ö¥é¥ê€Ç€¢€ëTLSF€òÍÑ
+€€€ëÊýË¡€òÉžœà€Ë€·€Æ€€€ë¡¥€œ€Î€¿€á¡€Æ°ÅªÀžÀ®µ¡Çœ³ÈÄ¥€ò»ÈÍÑ€¹€ëŸì¹ç€Ë€Ï¡€
+TLSF€Î¥Ñ¥Ã¥±¡Œ¥ž€ËŽÞ€Þ€ì€ëtlsf.h€Ètlsf.c€ò¡€¥«¡Œ¥Í¥ë€ò¥Ó¥ë¥É€¹€ë¥Ç¥£¥ì
+¥¯¥È¥ê€«¡€vpath€Ç»ØÄê€µ€ì€¿¥Ç¥£¥ì¥¯¥È¥ê€ËÃÖ€€€Æ€ª€¯É¬Í×€¬€¢€ë¡¥€Þ€¿¡€
+Makefile€ÎKERNEL_COBJS€ÎÄêµÁ€Ë¡€°Ê²Œ€Î€è€Š€Ëtlsf.o€òÄÉ²Ã€¹€ëÉ¬Í×€¬€¢€ë¡¥
+
+----------------------------------------
+KERNEL_COBJS := $(KERNEL_COBJS) tlsf.o
+----------------------------------------
+
+€Ê€ª¡€TLSF¡ÊÆ°ºî³ÎÇ§€Ï¡€Version 2.4.6¡Ë€Ï¡€°Ê²Œ€Î¥Š¥§¥Ö¥µ¥€¥È€«€é¥À¥Š¥ó
+¥í¡Œ¥É€¹€ë€³€È€¬€Ç€­€ë¡¥
+
+	http://rtportal.upv.es/rtmalloc/
+
+2.9 €œ€ÎÂŸ€ÎÀ©žÂ»ö¹à
+
+sil_dly_nse€Ï¡€¥·¥ß¥å¥ì¡Œ¥·¥ç¥óŽÄ¶­€Ç€Ï°ÕÌ£€¬€Ê€€€³€È€«€é¡€²¿€â€·€Ê€€¥€
+¥ó¥é¥€¥óŽØ¿ô€È€·€Æ€€€ë¡¥
+
+
+£³¡¥¥É¥é¥€¥ÐŽØÏ¢€ÎŸðÊó
+
+3.1 ¥¿¥€¥Þ¥É¥é¥€¥Ð
+
+¥¿¥€¥Þ¥É¥é¥€¥Ð€Ï¡€Mac OS X€Î¥€¥ó¥¿¡Œ¥Ð¥ë¥¿¥€¥Þµ¡Çœ€ò»ÈÍÑ€·€Æ€€€ë¡¥€œ€Î
+€¿€á¡€¥€¥ó¥¿¡Œ¥Ð¥ë¥¿¥€¥Þ€òÊÌ€ÎÌÜÅª€Ç»ÈÍÑ€¹€ë€³€È€Ï€Ç€­€Ê€€¡¥
+
+¥¿¥€¥à¥Æ¥£¥Ã¥¯€ÎŒþŽü€Ï¡€¥Ç¥Õ¥©¥ë¥È€Ç€Ï10¥ß¥êÉÃ€È€·€Æ€€€ë¡¥target_kernel.h
+€ÇÄêµÁ€µ€ì€Æ€€€ëTIC_NUME€ÈTIC_DENO€òœñ€­Ž¹€š€ë€³€È€Ç¡€¥¿¥€¥à¥Æ¥£¥Ã¥¯€Î
+ŒþŽü€òÊÑ¹¹€¹€ë€³€È€¬€Ç€­€ë¡¥
+
+3.2 ¥·¥ê¥¢¥ë¥€¥ó¥¿¥Õ¥§¡Œ¥¹¥É¥é¥€¥Ð
+
+¥·¥ê¥¢¥ë¥€¥ó¥¿¥Õ¥§¡Œ¥¹¥É¥é¥€¥Ð€Ç€Ï¡€¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€ò1€Ä€Î€ß¥µ¥Ý¡Œ¥È
+€·€Æ€ª€ê¡€¥×¥í¥»¥¹€ÎÉžœàÆþœÐÎÏ€ËÂÐ€¹€ëÊž»ú€ÎÆþœÐÎÏ€ÇŒÂžœ€·€Æ€€€ë¡¥€¹€Ê
+€ï€Á¡€¥·¥ê¥¢¥ë¥€¥ó¥¿¥Õ¥§¡Œ¥¹¥É¥é¥€¥Ð€ËÁ÷¿®€·€¿Êž»ú€Ï¡€¥×¥í¥»¥¹€ÎÉžœàœÐ
+ÎÏ€ËœÐÎÏ€µ€ì¡€¥·¥ê¥¢¥ë¥€¥ó¥¿¥Õ¥§¡Œ¥¹¥É¥é¥€¥Ð€«€éÊž»ú€òŒõ¿®€·€è€Š€È€¹€ë
+€È¡€¥×¥í¥»¥¹€ÎÉžœàÆþÎÏ€ËÆþÎÏ€µ€ì€ë¡¥
+
+Ê£¿ô€Î¥·¥ê¥¢¥ëI/O¥Ý¡Œ¥È€ò¥µ¥Ý¡Œ¥È€·¡€ÉžœàÆþœÐÎÏ°Ê³°€ËÂÐ€¹€ëÊž»ú€ÎÆþœÐÎÏ
+€ò²ÄÇœ€Ë€¹€ë€³€È€â¹ÍÎž€·€Æ¥³¡Œ¥É€¬ºîÀ®€·€Æ€¢€ë€¬¡€žœ»þÅÀ€Ç€ÏÌ€ž¡ŸÚ€Ç€¢
+€ë¡¥
+
+3.3 ¥·¥¹¥Æ¥à¥í¥°€ÎÄã¥ì¥Ù¥ëœÐÎÏ
+
+¥·¥¹¥Æ¥à¥í¥°€ÎÄã¥ì¥Ù¥ëœÐÎÏ€Ï¡€¥×¥í¥»¥¹€ÎÉžœà¥š¥é¡Œ€ËÂÐ€·€ÆÊž»ú€òœÐÎÏ€¹
+€ëÊýË¡€ÇŒÂžœ€·€Æ€€€ë¡¥
+
+3.4 ¥Î¥ó¥Ö¥í¥Ã¥­¥ó¥°I/O¥µ¥Ý¡Œ¥È¥â¥ž¥å¡Œ¥ë
+
+Mac OS X¥·¥ß¥å¥ì¡Œ¥·¥ç¥óŽÄ¶­€Ç¥Î¥ó¥Ö¥í¥Ã¥­¥ó¥°I/Oµ¡Çœ€Î»ÈÍÑ€ò¥µ¥Ý¡Œ¥È€¹
+€ë¥â¥ž¥å¡Œ¥ë€È€·€Æ¡€unix_sigio.cfg€ª€è€Óunix_sigio.h€òÍÑ°Õ€·€Æ€€€ë¡¥
+
+¥Î¥ó¥Ö¥í¥Ã¥­¥ó¥°I/Oµ¡Çœ€òÍÑ€€€ë€È¡€I/O€ÎŸõÂÖ€ËÊÑ²œ€¬€¢€Ã€¿Ÿì¹ç€Ë¡€¥×¥í
+¥»¥¹€ËÂÐ€·€ÆSIGIO¥·¥°¥Ê¥ë€¬ÇÛÁ÷€µ€ì€ë¡¥¥Î¥ó¥Ö¥í¥Ã¥­¥ó¥°I/Oµ¡Çœ€òÍÑ€€€ë
+¥â¥ž¥å¡Œ¥ë€Ï¡€SIGIO¥·¥°¥Ê¥ë€¬ÇÛÁ÷€µ€ì€¿Ÿì¹ç€ÎœèÍý€òÍÑ°Õ€¹€ëÉ¬Í×€¬€¢€ë¡¥
+
+€³€Î¥µ¥Ý¡Œ¥È¥â¥ž¥å¡Œ¥ë€òÍÑ€€€ëŸì¹ç¡€¥¢¥×¥ê¥±¡Œ¥·¥ç¥ó€Ï¡€SIGIO¥·¥°¥Ê¥ë€¬
+ÇÛÁ÷€µ€ì€¿Ÿì¹ç€ÎœèÍý€ò³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó€È€·€ÆÍÑ°Õ€·¡€ATT_ISR€Ë€è€ê
+³ä¹þ€ßÈÖ¹æINTNO_SIGIO€ËÂÐ€·€ÆÅÐÏ¿€¹€ë€³€È€Ç¡€SIGIO¥·¥°¥Ê¥ëÇÛÁ÷»þ€ËžÆ€Ó
+œÐ€µ€ì€ë€è€Š€Ë€Ç€­€ë¡¥
+
+€Ê€ª¡€¥·¥ê¥¢¥ë¥€¥ó¥¿¥Õ¥§¡Œ¥¹¥É¥é¥€¥Ð€Ï¡€€³€Îµ¡Çœ€òÍÑ€€€ÆŒÂžœ€·€Æ€€€ë¡¥
+
+
+£Ž¡¥¥·¥¹¥Æ¥à¹œÃÛŒêœç€ÈŒÂ¹ÔŒêœç
+
+4.1 ¥·¥¹¥Æ¥à¹œÃÛ€ÈŒÂ¹Ô
+
+Mac OS X¥·¥ß¥å¥ì¡Œ¥·¥ç¥óŽÄ¶­€ò¹œÃÛ€¹€ëŒêœç€Ï¡€¡ÖTOPPERS/ASP¥«¡Œ¥Í¥ë ¥æ¡Œ
+¥¶¡Œ¥º¥Þ¥Ë¥å¥¢¥ë¡×€Î¡Ö£³¡¥¥¯¥€¥Ã¥¯¥¹¥¿¡Œ¥È¥¬¥€¥É¡×€ÎŸÏ€Ëµ­œÒ€µ€ì€Æ€€€ë
+ÄÌ€ê€Ç€¢€ë¡¥
+
+¹œÃÛ€·€¿¥·¥ß¥å¥ì¡Œ¥·¥ç¥óŽÄ¶­€ÎŒÂ¹Ô€Ï¡€ŒÂ¹Ô·ÁŒ°¥Õ¥¡¥€¥ë€È€·€ÆÀžÀ®€µ€ì€ë
+asp€òŒÂ¹Ô€¹€ë€À€±€Ç€è€€¡¥
+
+4.2 ¥Ç¥Ð¥Ã¥¬€Î»ÈÍÑÊýË¡
+
+Œ¡€Î€è€Š€ÊŒêœç€Ë€è€ê¡€GDB¥Ç¥Ð¥Ã¥¬€ÎŽÉÍý²Œ€ÇMac OS X¥·¥ß¥å¥ì¡Œ¥·¥ç¥óŽÄ¶­
+€òŒÂ¹Ô€¹€ë€³€È€¬€Ç€­€ë¡¥€Ê€ª¡€Xcode 6.0.1€Ç€Ï¡€GDB€ËÂå€š€ÆLLDB€¬Éžœà€Î
+¥Ç¥Ð¥Ã¥¬€È€Ê€Ã€Æ€€€ë¡¥GDB€ò¥€¥ó¥¹¥È¡Œ¥ë€¹€ë€Î€ÏÌÌÅÝ€Ç€¢€ë¡¥
+
+	% gdb asp
+	<GDB€Îµ¯Æ°¥á¥Ã¥»¡Œ¥ž>
+	(gdb) handle SIGUSR2 nostop noprint
+	(gdb) run
+
+€³€³€Ç¡€¡Öhandle SIGUSR2 nostop noprint¡×€Ï¡€SIGUSR2€Ë€è€Ã€Æ¥Ç¥Ð¥Ã¥¬€¬
+Ää»ß€¹€ë€Î€òËÉ€°€¿€á€Î¥³¥Þ¥ó¥É€Ç€¢€ë¡¥€³€ì€òŸÊ€¯€È¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á€ÎÅÙ€Ë
+¥Ç¥Ð¥Ã¥¬€¬Ää»ß€·€Æ€·€Þ€Š¡¥€Þ€¿¡€¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à¡Êsample1¡Ë€òŒÂ¹Ô€¹€ë
+ºÝ€Ë€Ï¡€CPUÎã³°€È€·€ÆÍÑ€€€Æ€€€ëSIGINFO€Ë€è€Ã€Æ¥Ç¥Ð¥Ã¥¬€¬Ää»ß€¹€ë€³€È€â
+ËÉ€€€Ç€ª€¯€³€È€¬É¬Í×€Ç€¢€ë¡¥
+
+	(gdb) handle SIGINFO nostop noprint
+
+€³€ì€é€Î¥³¥Þ¥ó¥É€ò¡€.gdbinit€ËÀßÄê€·€Æ€ª€¯€ÈÊØÍø€Ç€¢€ë¡¥
+
+€Þ€¿¡€Ÿò·ïÉÕ€­¥Ö¥ì¡Œ¥¯¥Ý¥€¥ó¥È€ò»È€Š€È¡€ÆÃÄê€Î¥¿¥¹¥¯€¬ÆÃÄê€Î¥¢¥É¥ì¥¹€ò
+ŒÂ¹Ô€·€¿Ÿì¹ç€Ë€Î€ßŒÂ¹Ô€òÄä»ß€µ€»€ë€³€È€¬€Ç€­€ë¡¥€¿€À€·¡€¥Ö¥ì¡Œ¥¯Ÿò·ï€ò
+µ­œÒ€¹€ë€Ë€Ï¡€¥«¡Œ¥Í¥ë€ÎÆâÉô¹œÂ€€òÃÎ€Ã€Æ€€€ë€³€È€¬É¬Í×€Ç€¢€ë¡¥
+
+
+£µ¡¥»²¹ÍŸðÊó
+
+5.1 Îà»÷€Î¥¿¡Œ¥²¥Ã¥È€Ø€Î¥Ý¡Œ¥Æ¥£¥ó¥°
+
+Max OS X€Î¥«¡Œ¥Í¥ë€Ï¡€BSD UNIX¥Ù¡Œ¥¹€Ç€¢€ê¡€Mac OS X¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€Ë
+€ª€€€Æ€â¡€Mac OS X€ËÆÃÍ­€Îµ¡Çœ€Ï€Û€È€ó€É»ÈÍÑ€·€Æ€€€Ê€€¡¥€œ€Î€¿€á¡€ÂŸ€Î
+BSD UNIX¥Ù¡Œ¥¹€ÎOS€ä¡€Linux€Ø€Î¥Ý¡Œ¥Æ¥£¥ó¥°€â²ÄÇœ€È»×€ï€ì€ë¡¥
+
+€¿€À€·¡€ÌÀ€é€«€ËOS€ä¥×¥í¥»¥Ã¥µ€Ë°ÍÂž€¹€ëÉôÊ¬€È€·€Æ¡€¥¿¥¹¥¯€Îµ¯Æ°»þ€Ë¥¿
+¥¹¥¯€Î¥á¥€¥ó¥ë¡Œ¥Á¥ó€ËÊ¬Žô€¹€ë€¿€á€Ë¡€jmp_buf¹œÂ€ÂÎ€ËPC€äSP€òÄŸÀÜÀßÄê€·
+€Ælongjmp€·€Æ€€€ë¥³¡Œ¥É€¬€¢€ë¡¥jmp_buf¹œÂ€ÂÎ€ÎÃæ€ÇPC€äSP€Î°ÌÃÖ€Ï¥×¥í¥»¥Ã
+¥µ€äOS¡Êž·Ì©€Ë€Ï¥é¥€¥Ö¥é¥ê¡Ë€Ë€è€Ã€Æ°Û€Ê€ë€·¡€¥×¥í¥»¥Ã¥µ€Ë€è€Ã€Æ€ÏÂŸ€Î
+¥ì¥ž¥¹¥¿€âÀßÄê€·€Ê€±€ì€Ð€Ê€é€Ê€€Ÿì¹ç€¬€¢€ë¡¥
+
+
+£¶¡¥¥ê¥Õ¥¡¥ì¥ó¥¹
+
+6.1 ¥Ç¥£¥ì¥¯¥È¥ê¹œÀ®¡Š¥Õ¥¡¥€¥ë¹œÀ®
+
+	target/macosx_gcc/
+		E_PACKAGE				ŽÊ°×¥Ñ¥Ã¥±¡Œ¥ž€Î¥Õ¥¡¥€¥ë¥ê¥¹¥È
+		MANIFEST				žÄÊÌ¥Ñ¥Ã¥±¡Œ¥ž€Î¥Õ¥¡¥€¥ë¥ê¥¹¥È
+		Makefile.target			Makefile€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô
+		macosx.h				¥¿¡Œ¥²¥Ã¥È€Î¥Ï¡Œ¥É¥Š¥§¥¢»ñž»€ÎÄêµÁ
+		target.tf				kernel.tf€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô
+		target_cfg1_out.h		cfg1_out.c€Î¥ê¥ó¥¯€ËÉ¬Í×€Ê¥¹¥¿¥Ö€ÎÄêµÁ
+		target_check.tf			kernel_check.tf€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô
+		target_config.c			¥«¡Œ¥Í¥ëŒÂÁõ€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉôŽØÏ¢€ÎÄêµÁ
+		target_config.h			¥«¡Œ¥Í¥ëŒÂÁõ€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô
+		target_def.csv			kernel_def.csv€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô
+		target_kernel.h			kernel.h€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô
+		target_rename.def		¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€ÎÆâÉôŒ±ÊÌÌŸ€Î¥ê¥Í¡Œ¥àÄêµÁ
+		target_rename.h			¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€ÎÆâÉôŒ±ÊÌÌŸ€Î¥ê¥Í¡Œ¥à
+		target_serial.c			serial.c€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô
+		target_serial.cfg		serial.cfg€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô
+		target_serial.h			serial.h€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô
+		target_sil.h			sil.h€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô
+		target_stddef.h			t_stddef.h€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô
+		target_syssvc.h			¥·¥¹¥Æ¥à¥µ¡Œ¥Ó¥¹€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÄêµÁ
+		target_test.h			¥Æ¥¹¥È¥×¥í¥°¥é¥à€Î¥¿¡Œ¥²¥Ã¥È°ÍÂžÄêµÁ
+		target_timer.c			¥¿¥€¥Þ¥É¥é¥€¥Ð
+		target_timer.cfg		¥¿¥€¥Þ¥É¥é¥€¥Ð€Î¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+		target_timer.h			¥¿¥€¥Þ¥É¥é¥€¥Ð€ò»ÈÍÑ€¹€ë€¿€á€ÎÄêµÁ
+		target_unrename.h		¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€ÎÆâÉôŒ±ÊÌÌŸ€Î¥ê¥Í¡Œ¥à²òœü
+		target_user.txt			¥¿¡Œ¥²¥Ã¥È°ÍÂžÉô€Î¥æ¡Œ¥¶¡Œ¥º¥Þ¥Ë¥å¥¢¥ë
+		unix_sigio.cfg			¥Î¥ó¥Ö¥í¥Ã¥­¥ó¥°I/O¥µ¥Ý¡Œ¥È¥â¥ž¥å¡Œ¥ë€Î¥³¥ó
+								¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+		unix_sigio.h			¥Î¥ó¥Ö¥í¥Ã¥­¥ó¥°I/O¥µ¥Ý¡Œ¥È¥â¥ž¥å¡Œ¥ë€ÎÄêµÁ
+
+6.2 ¥Ð¡Œ¥ž¥ç¥óÍúÎò
+
+	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Ç¯7·î22Æü	Release 1.5.0		³ÈÄ¥¥Ñ¥Ã¥±¡Œ¥ž€ò°ìÈÌžø³«
+	2010Ç¯8·î1Æü	Release 1.6.0		cfg-1.6€ËÂÐ±þ
+	2011Ç¯5·î9Æü	Release 1.7.0		Æ°ÅªÀžÀ®µ¡Çœ³ÈÄ¥¥Ñ¥Ã¥±¡Œ¥ž€ÎÄÉ²Ã
+	2012Ç¯12·î26Æü	Release 1.8.0
+	2014Ç¯1·î6Æü	Release 1.9.0		¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡µ¡Çœ³ÈÄ¥€ÎÄÉ²Ã
+	2014Ç¯11·î17Æü	Release 1.9.1
+
+°ÊŸå
Index: /target/macosx_gcc/unix_sigio.cfg
===================================================================
--- /target/macosx_gcc/unix_sigio.cfg	(revision 7)
+++ /target/macosx_gcc/unix_sigio.cfg	(revision 7)
@@ -0,0 +1,12 @@
+/*
+ *  @(#) $Id$
+ */
+
+/*
+ *		UNIXÍÑ¥Î¥ó¥Ö¥í¥Ã¥­¥ó¥°I/O¥µ¥Ý¡Œ¥È¥â¥ž¥å¡Œ¥ë€Î
+ *		¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+ */
+#pragma once
+
+#include "unix_sigio.h"
+CFG_INT(INTNO_SIGIO, { TA_ENAINT | INTATR_SIGIO, INTPRI_SIGIO });
Index: /target/macosx_gcc/unix_sigio.h
===================================================================
--- /target/macosx_gcc/unix_sigio.h	(revision 7)
+++ /target/macosx_gcc/unix_sigio.h	(revision 7)
@@ -0,0 +1,57 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2006-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$
+ */
+
+/*
+ *		UNIXÍÑ¥Î¥ó¥Ö¥í¥Ã¥­¥ó¥°I/O¥µ¥Ý¡Œ¥È¥â¥ž¥å¡Œ¥ë
+ *
+ */
+
+#ifndef	TOPPERS_UNIX_SIGIO_H
+#define	TOPPERS_UNIX_SIGIO_H
+
+/*
+ *  SIGIO¥Ï¥ó¥É¥éÅÐÏ¿€Î€¿€á€ÎÄê¿ô
+ */
+#define	INHNO_SIGIO		SIGIO			/* ³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ */
+#define INTNO_SIGIO		SIGIO			/* ³ä¹þ€ßÈÖ¹æ */
+#define INTPRI_SIGIO	TMAX_INTPRI		/* ³ä¹þ€ßÍ¥ÀèÅÙ¡ÊºÇÄãÍ¥ÀèÅÙ¡Ë*/
+#define INTATR_SIGIO	TA_EDGE			/* ³ä¹þ€ßÂ°À­ */
+
+#endif /* TOPPERS_UNIX_SIGIO_H */
Index: /test/MANIFEST
===================================================================
--- /test/MANIFEST	(revision 7)
+++ /test/MANIFEST	(revision 7)
@@ -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: /test/bit_kernel.c
===================================================================
--- /test/bit_kernel.c	(revision 7)
+++ /test/bit_kernel.c	(revision 7)
@@ -0,0 +1,468 @@
+/*
+ *  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$
+ */
+
+/*
+ *		¥«¡Œ¥Í¥ë€ÎÀ°¹çÀ­ž¡ºº
+ */
+
+#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"
+
+/*
+ *   ¥š¥é¡Œ¥³¡Œ¥É€ÎÄêµÁ
+ */
+#define E_SYS_LINENO	ERCD(E_SYS, -(__LINE__))
+
+/*
+ *  ŽÉÍý¥Ö¥í¥Ã¥¯€Î¥¢¥É¥ì¥¹€ÎÀµÅöÀ­€Î¥Á¥§¥Ã¥¯
+ */
+#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)
+
+/*
+ *  ¥­¥å¡Œ€Î¥Á¥§¥Ã¥¯€Î€¿€á€ÎŽØ¿ô
+ *
+ *  p_queue€Ëp_entry€¬ŽÞ€Þ€ì€Æ€€€ë€«€òÄŽ€Ù€ë¡¥ŽÞ€Þ€ì€Æ€€€ì€Ðtrue¡€ŽÞ€Þ
+ *  €ì€Æ€€€Ê€€Ÿì¹ç€Ë€Ïfalse€òÊÖ€¹¡¥¥À¥Ö¥ë¥ê¥ó¥¯€ÎÉÔÀ°¹ç€ÎŸì¹ç€Ë€â¡€
+ *  false€òÊÖ€¹¡¥
+ */
+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);					/* ¥À¥Ö¥ë¥ê¥ó¥¯€ÎÉÔÀ°¹ç */
+	}
+	while (p_current != p_queue) {
+		if (p_current == p_entry) {
+			return(true);				/* p_entry€¬ŽÞ€Þ€ì€Æ€€€¿ */
+		}
+
+		/*
+		 *  ¥­¥å¡Œ€ÎŒ¡€ÎÍ×ÁÇ€Ë¿Ê€à
+		 */
+		p_next = p_current->p_next;
+		if (p_next->p_prev != p_current) {
+			return(false);				 /* ¥À¥Ö¥ë¥ê¥ó¥¯€ÎÉÔÀ°¹ç */
+		}
+		p_current = p_next;
+	}
+	return(false);
+}
+
+/*
+ *  ¥¹¥¿¥Ã¥¯Ÿå€ò»Ø€·€Æ€€€ë€«€Îž¡ºº
+ */
+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);
+}
+
+/*
+ *  ¥¿¥¹¥¯Ëè€ÎÀ°¹çÀ­ž¡ºº
+ */
+static ER
+bit_task(ID tskid)
+{
+	TCB			*p_tcb;
+	const TINIB	*p_tinib;
+	uint_t		tstat, tstat_wait, pri;
+	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);
+	pri = p_tcb->priority;
+
+	/*
+	 *  œéŽü²œ¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿€Îž¡ºº
+	 */
+	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);
+	}
+
+	/*
+	 *  ¥¿¥¹¥¯Í¥ÀèÅÙ€Îž¡ºº
+	 */
+	if (pri >= TNUM_TPRI) {
+		return(E_SYS_LINENO);
+	}
+
+	/*
+	 *  texptn€Îž¡ºº
+	 */
+	if (p_tcb->p_tinib->texrtn == NULL && p_tcb->texptn != 0U) {
+		return(E_SYS_LINENO);
+	}
+
+	/*
+	 *  µÙ»ßŸõÂÖ€Ë€ª€±€ë¥Á¥§¥Ã¥¯
+	 */
+	if (TSTAT_DORMANT(tstat)) {
+		if (!(pri == p_tinib->ipriority)
+					&& (p_tcb->wupque == false)
+					&& (p_tcb->enatex == false)
+					&& (p_tcb->texptn == 0U)) {
+			return(E_SYS_LINENO);
+		}
+	}
+
+	/*
+	 *  ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ë€ª€±€ë¥Á¥§¥Ã¥¯
+	 */
+	if (TSTAT_RUNNABLE(tstat)) {
+		if (!in_queue(&ready_queue[pri], &(p_tcb->task_queue))) {
+			return(E_SYS_LINENO);
+		}
+	}
+
+	/*
+	 *  ÂÔ€ÁŸõÂÖ€Ë€ª€±€ë¥Á¥§¥Ã¥¯
+	 */
+	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)€Îž¡ºº¡ÊÌ€Ž°À®¡Ë
+			 */
+		}
+
+		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) {
+		/*
+		 *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€Îž¡ºº
+		 */
+#if 0
+		if (bit_tskctxb(&(p_tcb->tskctxb))) {
+			return(E_SYS_LINENO);
+		}
+#endif
+	}
+	return(E_OK);
+}
+
+/*
+ *  ¥»¥Þ¥Õ¥©Ëè€ÎÀ°¹çÀ­ž¡ºº
+ */
+#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;
+
+	/*
+	 *  œéŽü²œ¥Ö¥í¥Ã¥¯€Ø€Î¥Ý¥€¥ó¥¿€Îž¡ºº
+	 */
+	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;
+
+	/*
+	 *  ¥¿¥¹¥¯Ëè€Îž¡ºº
+	 */
+	for (tskid = TMIN_TSKID; tskid <= tmax_tskid; tskid++) {
+		ercd = bit_task(tskid);
+		if (ercd != E_OK) {
+			return(ercd);
+		}
+	}
+
+	/*
+	 *  ¥»¥Þ¥Õ¥©Ëè€Îž¡ºº
+	 */
+	for (semid = TMIN_SEMID; semid <= tmax_semid; semid++) {
+		ercd = bit_semaphore(semid);
+		if (ercd != E_OK) {
+			return(ercd);
+		}
+	}
+
+	return(E_OK);
+}
Index: /test/perf0.c
===================================================================
--- /test/perf0.c	(revision 7)
+++ /test/perf0.c	(revision 7)
@@ -0,0 +1,83 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥«¡Œ¥Í¥ëÀ­ÇœÉŸ²Á¥×¥í¥°¥é¥à(0)
+ *
+ *  »þŽÖ·×Â¬€Î¥ª¡Œ¥Ð¥Ø¥Ã¥É€ò·×Â¬€¹€ë€¿€á€Î¥×¥í¥°¥é¥à¡¥
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include <test_lib.h>
+#include <histogram.h>
+#include "kernel_cfg.h"
+#include "perf0.h"
+
+/*
+ *  ·×Â¬²ó¿ô€ÈŒÂ¹Ô»þŽÖÊ¬ÉÛ€òµ­Ï¿€¹€ëºÇÂç»þŽÖ
+ */
+#define NO_MEASURE	10000U			/* ·×Â¬²ó¿ô */
+#define MAX_TIME	1000U			/* ŒÂ¹Ô»þŽÖÊ¬ÉÛ€òµ­Ï¿€¹€ëºÇÂç»þŽÖ */
+
+/*
+ *  ŒÂ¹Ô»þŽÖÊ¬ÉÛ€òµ­Ï¿€¹€ë¥á¥â¥êÎÎ°è
+ */
+static uint_t	histarea1[MAX_TIME + 1];
+
+/*
+ *  ¥á¥€¥ó¥¿¥¹¥¯
+ */
+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: /test/perf0.cfg
===================================================================
--- /test/perf0.cfg	(revision 7)
+++ /test/perf0.cfg	(revision 7)
@@ -0,0 +1,14 @@
+/*
+ *  @(#) $Id$
+ */
+
+/*
+ *  ¥«¡Œ¥Í¥ëÀ­ÇœÉŸ²Á¥×¥í¥°¥é¥à(0)€Î¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+ */
+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: /test/perf0.h
===================================================================
--- /test/perf0.h	(revision 7)
+++ /test/perf0.h	(revision 7)
@@ -0,0 +1,64 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥«¡Œ¥Í¥ëÀ­ÇœÉŸ²Á¥×¥í¥°¥é¥à(0)
+ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎÄêµÁ
+ */
+#include "target_test.h"
+
+/*
+ *  ³Æ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€ÎÄêµÁ
+ */
+#define MAIN_PRIORITY	11		/* ¥á¥€¥ó¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È€Ë°ÍÂž€¹€ë²ÄÇœÀ­€Î€¢€ëÄê¿ô€ÎÄêµÁ
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯¥µ¥€¥º */
+#endif /* STACK_SIZE */
+
+/*
+ *  ŽØ¿ô€Î¥×¥í¥È¥¿¥€¥×ÀëžÀ
+ */
+extern void	main_task(intptr_t exinf);
Index: /test/perf1.c
===================================================================
--- /test/perf1.c	(revision 7)
+++ /test/perf1.c	(revision 7)
@@ -0,0 +1,116 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥«¡Œ¥Í¥ëÀ­ÇœÉŸ²Á¥×¥í¥°¥é¥à(1)
+ *
+ *  slp_tsk¡€wup_tsk€Ë€è€ë¥¿¥¹¥¯ÀÚŽ¹€š»þŽÖ€ò·×Â¬€¹€ë€¿€á€Î¥×¥í¥°¥é¥à¡¥
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include <test_lib.h>
+#include <histogram.h>
+#include "kernel_cfg.h"
+#include "perf1.h"
+
+/*
+ *  ·×Â¬²ó¿ô€ÈŒÂ¹Ô»þŽÖÊ¬ÉÛ€òµ­Ï¿€¹€ëºÇÂç»þŽÖ
+ */
+#define NO_MEASURE	10000U			/* ·×Â¬²ó¿ô */
+#define MAX_TIME	1000U			/* ŒÂ¹Ô»þŽÖÊ¬ÉÛ€òµ­Ï¿€¹€ëºÇÂç»þŽÖ */
+
+/*
+ *  ŒÂ¹Ô»þŽÖÊ¬ÉÛ€òµ­Ï¿€¹€ë¥á¥â¥êÎÎ°è
+ */
+static uint_t	histarea1[MAX_TIME + 1];
+static uint_t	histarea2[MAX_TIME + 1];
+
+/*
+ *  ·×Â¬¥¿¥¹¥¯1¡Ê¹âÍ¥ÀèÅÙ¡Ë
+ */
+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();
+}
+
+/*
+ *  ·×Â¬¥¿¥¹¥¯2¡ÊÃæÍ¥ÀèÅÙ¡Ë
+ */
+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);
+}
+
+/*
+ *  ¥á¥€¥ó¥¿¥¹¥¯¡ÊÄãÍ¥ÀèÅÙ¡Ë
+ */
+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: /test/perf1.cfg
===================================================================
--- /test/perf1.cfg	(revision 7)
+++ /test/perf1.cfg	(revision 7)
@@ -0,0 +1,16 @@
+/*
+ *  @(#) $Id$
+ */
+
+/*
+ *  ¥«¡Œ¥Í¥ëÀ­ÇœÉŸ²Á¥×¥í¥°¥é¥à(1)€Î¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+ */
+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: /test/perf1.h
===================================================================
--- /test/perf1.h	(revision 7)
+++ /test/perf1.h	(revision 7)
@@ -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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥«¡Œ¥Í¥ëÀ­ÇœÉŸ²Á¥×¥í¥°¥é¥à(1)
+ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎÄêµÁ
+ */
+#include "target_test.h"
+
+/*
+ *  ³Æ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€ÎÄêµÁ
+ */
+#define TASK1_PRIORITY	9		/* ·×Â¬¥¿¥¹¥¯1€ÎÍ¥ÀèÅÙ */
+#define TASK2_PRIORITY	10		/* ·×Â¬¥¿¥¹¥¯2€ÎÍ¥ÀèÅÙ */
+#define MAIN_PRIORITY	11		/* ¥á¥€¥ó¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È€Ë°ÍÂž€¹€ë²ÄÇœÀ­€Î€¢€ëÄê¿ô€ÎÄêµÁ
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯¥µ¥€¥º */
+#endif /* STACK_SIZE */
+
+/*
+ *  ŽØ¿ô€Î¥×¥í¥È¥¿¥€¥×ÀëžÀ
+ */
+extern void	task1(intptr_t exinf);
+extern void	task2(intptr_t exinf);
+extern void	main_task(intptr_t exinf);
Index: /test/perf2.c
===================================================================
--- /test/perf2.c	(revision 7)
+++ /test/perf2.c	(revision 7)
@@ -0,0 +1,115 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥«¡Œ¥Í¥ëÀ­ÇœÉŸ²Á¥×¥í¥°¥é¥à(2)
+ *
+ *  Í¥ÀèÅÙ¥Ç¡Œ¥¿¥­¥å¡Œ€ËÃßÀÑ€µ€ì€Æ€€€ë¥Ç¡Œ¥¿€Î¿ô€Ë€è€ê¡€snd_pdq€ÎœèÍý»þ
+ *  ŽÖ€¬€É€Î€è€Š€ËÊÑ²œ€¹€ë€«€ò·×Â¬€¹€ë€¿€á€Î¥×¥í¥°¥é¥à¡¥
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include <test_lib.h>
+#include <histogram.h>
+#include "kernel_cfg.h"
+#include "perf2.h"
+
+/*
+ *  ·×Â¬²ó¿ô€ÈŒÂ¹Ô»þŽÖÊ¬ÉÛ€òµ­Ï¿€¹€ëºÇÂç»þŽÖ
+ */
+#define NO_MEASURE	10000U			/* ·×Â¬²ó¿ô */
+#define MAX_TIME	1000U			/* ŒÂ¹Ô»þŽÖÊ¬ÉÛ€òµ­Ï¿€¹€ëºÇÂç»þŽÖ */
+
+/*
+ *  ŒÂ¹Ô»þŽÖÊ¬ÉÛ€òµ­Ï¿€¹€ë¥á¥â¥êÎÎ°è
+ */
+static uint_t	histarea1[MAX_TIME + 1];
+
+/*
+ *  ·×Â¬¥ë¡Œ¥Á¥ó
+ */
+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();
+}
+
+/*
+ *  ¥á¥€¥ó¥¿¥¹¥¯¡ÊÄãÍ¥ÀèÅÙ¡Ë
+ */
+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: /test/perf2.cfg
===================================================================
--- /test/perf2.cfg	(revision 7)
+++ /test/perf2.cfg	(revision 7)
@@ -0,0 +1,15 @@
+/*
+ *  @(#) $Id$
+ */
+
+/*
+ *  ¥«¡Œ¥Í¥ëÀ­ÇœÉŸ²Á¥×¥í¥°¥é¥à(2)€Î¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+ */
+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: /test/perf2.h
===================================================================
--- /test/perf2.h	(revision 7)
+++ /test/perf2.h	(revision 7)
@@ -0,0 +1,64 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥«¡Œ¥Í¥ëÀ­ÇœÉŸ²Á¥×¥í¥°¥é¥à(2)
+ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎÄêµÁ
+ */
+#include "target_test.h"
+
+/*
+ *  ³Æ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€ÎÄêµÁ
+ */
+#define MAIN_PRIORITY	11		/* ¥á¥€¥ó¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È€Ë°ÍÂž€¹€ë²ÄÇœÀ­€Î€¢€ëÄê¿ô€ÎÄêµÁ
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯¥µ¥€¥º */
+#endif /* STACK_SIZE */
+
+/*
+ *  ŽØ¿ô€Î¥×¥í¥È¥¿¥€¥×ÀëžÀ
+ */
+extern void	main_task(intptr_t exinf);
Index: /test/perf3.c
===================================================================
--- /test/perf3.c	(revision 7)
+++ /test/perf3.c	(revision 7)
@@ -0,0 +1,136 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥«¡Œ¥Í¥ëÀ­ÇœÉŸ²Á¥×¥í¥°¥é¥à(3)
+ *
+ *  ÂÔ€Á²òœü€¹€ë¥¿¥¹¥¯€Î¿ô€Ë€è€ê¡€set_flg€ÎœèÍý»þŽÖ€¬€É€Î€è€Š€ËÊÑ²œ€¹€ë
+ *  €«€ò·×Â¬€¹€ë€¿€á€Î¥×¥í¥°¥é¥à¡¥
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include <test_lib.h>
+#include <histogram.h>
+#include "kernel_cfg.h"
+#include "perf3.h"
+
+/*
+ *  ·×Â¬²ó¿ô€ÈŒÂ¹Ô»þŽÖÊ¬ÉÛ€òµ­Ï¿€¹€ëºÇÂç»þŽÖ
+ */
+#define NO_MEASURE	10000U			/* ·×Â¬²ó¿ô */
+#define MAX_TIME	1000U			/* ŒÂ¹Ô»þŽÖÊ¬ÉÛ€òµ­Ï¿€¹€ëºÇÂç»þŽÖ */
+
+/*
+ *  ŒÂ¹Ô»þŽÖÊ¬ÉÛ€òµ­Ï¿€¹€ë¥á¥â¥êÎÎ°è
+ */
+static uint_t	histarea1[MAX_TIME + 1];
+
+/*
+ *  ·×Â¬¥¿¥¹¥¯€Î¥ê¥¹¥È
+ */
+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
+};
+
+/*
+ *  ·×Â¬¥¿¥¹¥¯¡ÊÃæÍ¥ÀèÅÙ¡Ë
+ */
+void task(intptr_t exinf)
+{
+	FLGPTN	flgptn;
+
+	wai_flg(FLG1, 0x01U, TWF_ORW, &flgptn);
+}
+
+/*
+ *  ·×Â¬¥ë¡Œ¥Á¥ó
+ */
+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);
+		/* ¥¿¥¹¥¯€¬ÂÔ€ÁŸõÂÖ€ËÆþ€ë€Î€òÂÔ€Ä */
+		chg_pri(TSK_SELF, TPRI_INI);
+
+		begin_measure(1);
+		set_flg(FLG1, 0x01U);
+		end_measure(1);
+
+		chg_pri(TSK_SELF, MAIN_PRIORITY_LOW);
+		/* ¥¿¥¹¥¯€¬œªÎ»€¹€ë€Î€òÂÔ€Ä */
+		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();
+}
+
+/*
+ *  ¥á¥€¥ó¥¿¥¹¥¯¡Ê¹âÍ¥ÀèÅÙ¡Ë
+ */
+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: /test/perf3.cfg
===================================================================
--- /test/perf3.cfg	(revision 7)
+++ /test/perf3.cfg	(revision 7)
@@ -0,0 +1,35 @@
+/*
+ *  @(#) $Id$
+ */
+
+/*
+ *  ¥«¡Œ¥Í¥ëÀ­ÇœÉŸ²Á¥×¥í¥°¥é¥à(3)€Î¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+ */
+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: /test/perf3.h
===================================================================
--- /test/perf3.h	(revision 7)
+++ /test/perf3.h	(revision 7)
@@ -0,0 +1,67 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥«¡Œ¥Í¥ëÀ­ÇœÉŸ²Á¥×¥í¥°¥é¥à(3)
+ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎÄêµÁ
+ */
+#include "target_test.h"
+
+/*
+ *  ³Æ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€ÎÄêµÁ
+ */
+#define TASK_PRIORITY		10		/* ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ */
+#define MAIN_PRIORITY		9		/* ¥á¥€¥ó¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ */
+#define MAIN_PRIORITY_LOW	11		/* ¥á¥€¥ó¥¿¥¹¥¯€ÎÄãÍ¥ÀèÅÙ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È€Ë°ÍÂž€¹€ë²ÄÇœÀ­€Î€¢€ëÄê¿ô€ÎÄêµÁ
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯¥µ¥€¥º */
+#endif /* STACK_SIZE */
+
+/*
+ *  ŽØ¿ô€Î¥×¥í¥È¥¿¥€¥×ÀëžÀ
+ */
+extern void	task(intptr_t exinf);
+extern void	main_task(intptr_t exinf);
Index: /test/perf4.c
===================================================================
--- /test/perf4.c	(revision 7)
+++ /test/perf4.c	(revision 7)
@@ -0,0 +1,179 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥«¡Œ¥Í¥ëÀ­ÇœÉŸ²Á¥×¥í¥°¥é¥à(4)
+ *
+ *  act_tsk¡€iact_tsk€ÎœèÍý»þŽÖ€È¥¿¥¹¥¯ÀÚŽ¹€š»þŽÖ€ò·×Â¬€¹€ë€¿€á€Î¥×¥í¥°
+ *  ¥é¥à¡¥°Ê²Œ€Î3€Ä€Î»þŽÖ€òÂ¬Äê€¹€ë¡¥
+ *
+ *  (1) ¥¿¥¹¥¯ÀÚŽ¹€š€òµ¯€³€µ€Ê€€act_tsk€ÎœèÍý»þŽÖ¡¥Œ«¥¿¥¹¥¯€è€ê€âÍ¥ÀèÅÙ
+ *      €ÎÄã€€¥¿¥¹¥¯€ËÂÐ€·€Æact_tsk€òÈ¯¹Ô€·¡€µÙ»ßŸõÂÖ€«€éŒÂ¹Ô€Ç€­€ëŸõÂÖ
+ *      €ËÁ«°Ü€µ€»€ëœèÍý€Î»þŽÖ¡¥
+ *
+ *  (2) ¥¿¥¹¥¯ÀÚŽ¹€š€òµ¯€³€¹act_tsk€ÎœèÍý»þŽÖ¡¥Œ«¥¿¥¹¥¯€è€ê€âÍ¥ÀèÅÙ€Î¹â
+ *      €€¥¿¥¹¥¯€ËÂÐ€·€Æact_tsk€òÈ¯¹Ô€·¡€µÙ»ßŸõÂÖ€«€éŒÂ¹Ô€Ç€­€ëŸõÂÖ€ËÁ«
+ *      °Ü€µ€»¡€¥¿¥¹¥¯ÀÚŽ¹€š€òµ¯€³€·€Æ¡€¹â€€Í¥ÀèÅÙ€Î¥¿¥¹¥¯€ÎŒÂ¹Ô€¬»Ï€Þ
+ *      €ë€Þ€Ç€Î»þŽÖ¡¥
+ *
+ *  (3) ¥¿¥¹¥¯ÀÚŽ¹€š€òµ¯€³€¹iact_tsk€ÎœèÍý»þŽÖ¡¥ŒþŽü¥Ï¥ó¥É¥é€«€é¡€ŒÂ¹Ô
+ *      ŸõÂÖ€Î¥¿¥¹¥¯€è€ê€â¹â€€Í¥ÀèÅÙ€Î¥¿¥¹¥¯€ËÂÐ€·€Æact_tsk€òÈ¯¹Ô€·¡€µÙ
+ *      »ßŸõÂÖ€«€éŒÂ¹Ô€Ç€­€ëŸõÂÖ€ËÁ«°Ü€µ€»€¿€¢€È€ËŒþŽü¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ
+ *      ¥ó€·¡€¥¿¥¹¥¯ÀÚŽ¹€š€òµ¯€³€·€Æ¡€¹â€€Í¥ÀèÅÙ€Î¥¿¥¹¥¯€ÎŒÂ¹Ô€¬»Ï€Þ€ë
+ *      €Þ€Ç€Î»þŽÖ¡¥
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include <test_lib.h>
+#include <histogram.h>
+#include "kernel_cfg.h"
+#include "perf4.h"
+
+/*
+ *  ·×Â¬²ó¿ô€ÈŒÂ¹Ô»þŽÖÊ¬ÉÛ€òµ­Ï¿€¹€ëºÇÂç»þŽÖ
+ */
+#define NO_MEASURE	10000U			/* ·×Â¬²ó¿ô */
+#define MAX_TIME	1000U			/* ŒÂ¹Ô»þŽÖÊ¬ÉÛ€òµ­Ï¿€¹€ëºÇÂç»þŽÖ */
+
+/*
+ *  ŒÂ¹Ô»þŽÖÊ¬ÉÛ€òµ­Ï¿€¹€ë¥á¥â¥êÎÎ°è
+ */
+static uint_t	histarea1[MAX_TIME + 1];
+static uint_t	histarea2[MAX_TIME + 1];
+static uint_t	histarea3[MAX_TIME + 1];
+
+/*
+ *  ·×Â¬¥¿¥¹¥¯1¡Ê¹âÍ¥ÀèÅÙ¡Ë
+ */
+void task1(intptr_t exinf)
+{
+	end_measure(2);
+	ext_tsk();
+}
+
+/*
+ *  ·×Â¬¥¿¥¹¥¯2€È¥á¥€¥ó¥¿¥¹¥¯€Î¶ŠÍ­ÊÑ¿ô
+ */
+volatile uint_t		task2_count;
+
+/*
+ *  ·×Â¬¥¿¥¹¥¯2¡Ê¹âÍ¥ÀèÅÙ¡Ë
+ */
+void task2(intptr_t exinf)
+{
+	end_measure(3);
+	task2_count++;
+	ext_tsk();
+}
+
+/*
+ *  ·×Â¬¥¿¥¹¥¯3¡ÊÄãÍ¥ÀèÅÙ¡Ë
+ */
+void task3(intptr_t exinf)
+{
+	ext_tsk();
+}
+
+/*
+ *  ·×Â¬¥¿¥¹¥¯4¡ÊºÇÄãÍ¥ÀèÅÙ¡Ë
+ */
+void task4(intptr_t exinf)
+{
+	while (true) {
+		wup_tsk(MAIN_TASK);
+	}
+}
+
+/*
+ *  ŒþŽü¥Ï¥ó¥É¥é
+ */
+void cyclic_handler(intptr_t exinf)
+{
+	begin_measure(3);
+	iact_tsk(TASK2);
+}
+
+/*
+ *  ¥á¥€¥ó¥¿¥¹¥¯¡ÊÃæÍ¥ÀèÅÙ¡Ë
+ */
+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();
+
+	/*
+	 *  ¥¿¥¹¥¯ÀÚŽ¹€š€òµ¯€³€µ€Ê€€act_tsk€ÎœèÍý»þŽÖ€ÎÂ¬Äê
+	 */
+	for (i = 0; i < NO_MEASURE; i++) {
+		begin_measure(1);
+		act_tsk(TASK3);
+		end_measure(1);
+		slp_tsk();
+	}
+
+	/*
+	 *  ¥¿¥¹¥¯ÀÚŽ¹€š€òµ¯€³€¹act_tsk€ÎœèÍý»þŽÖ€ÎÂ¬Äê
+	 */
+	for (i = 0; i < NO_MEASURE; i++) {
+		begin_measure(2);
+		act_tsk(TASK1);
+	}
+
+	/*
+	 *  ¥¿¥¹¥¯ÀÚŽ¹€š€òµ¯€³€¹iact_tsk€ÎœèÍý»þŽÖ€ÎÂ¬Äê¡ÊÂ¬Äê²ó¿ô€Ï10Ê¬€Î1¡Ë
+	 */
+	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: /test/perf4.cfg
===================================================================
--- /test/perf4.cfg	(revision 7)
+++ /test/perf4.cfg	(revision 7)
@@ -0,0 +1,21 @@
+/*
+ *  @(#) $Id$
+ */
+
+/*
+ *  ¥«¡Œ¥Í¥ëÀ­ÇœÉŸ²Á¥×¥í¥°¥é¥à(4)€Î¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+ */
+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: /test/perf4.h
===================================================================
--- /test/perf4.h	(revision 7)
+++ /test/perf4.h	(revision 7)
@@ -0,0 +1,73 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		¥«¡Œ¥Í¥ëÀ­ÇœÉŸ²Á¥×¥í¥°¥é¥à(4)
+ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎÄêµÁ
+ */
+#include "target_test.h"
+
+/*
+ *  ³Æ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€ÎÄêµÁ
+ */
+#define TASK1_PRIORITY	9		/* ·×Â¬¥¿¥¹¥¯1€ÎÍ¥ÀèÅÙ */
+#define TASK2_PRIORITY	9		/* ·×Â¬¥¿¥¹¥¯2€ÎÍ¥ÀèÅÙ */
+#define TASK3_PRIORITY	11		/* ·×Â¬¥¿¥¹¥¯3€ÎÍ¥ÀèÅÙ */
+#define TASK4_PRIORITY	12		/* ·×Â¬¥¿¥¹¥¯4€ÎÍ¥ÀèÅÙ */
+#define MAIN_PRIORITY	10		/* ¥á¥€¥ó¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È€Ë°ÍÂž€¹€ë²ÄÇœÀ­€Î€¢€ëÄê¿ô€ÎÄêµÁ
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯¥µ¥€¥º */
+#endif /* STACK_SIZE */
+
+/*
+ *  ŽØ¿ô€Î¥×¥í¥È¥¿¥€¥×ÀëžÀ
+ */
+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: /test/test_cpuexc.cfg
===================================================================
--- /test/test_cpuexc.cfg	(revision 7)
+++ /test/test_cpuexc.cfg	(revision 7)
@@ -0,0 +1,22 @@
+/*
+ *  @(#) $Id$
+ */
+
+/*
+ *  CPUÎã³°œèÍý€Î¥Æ¥¹¥È(1)¡Á(13)€Î¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+ */
+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: /test/test_cpuexc.h
===================================================================
--- /test/test_cpuexc.h	(revision 7)
+++ /test/test_cpuexc.h	(revision 7)
@@ -0,0 +1,76 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/* 
+ *		CPUÎã³°œèÍý€Î¥Æ¥¹¥È(1)¡Á(13)
+ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎÄêµÁ
+ */
+#include "target_test.h"
+
+/*
+ *  ³Æ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€ÎÄêµÁ
+ */
+#define HIGH_PRIORITY	9		/* ¹âÍ¥ÀèÅÙ */
+#define MID_PRIORITY	10		/* ÃæÍ¥ÀèÅÙ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È€Ë°ÍÂž€¹€ë²ÄÇœÀ­€Î€¢€ëÄê¿ô€ÎÄêµÁ
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯¥µ¥€¥º */
+#endif /* STACK_SIZE */
+
+/*
+ *  ŽØ¿ô€Î¥×¥í¥È¥¿¥€¥×ÀëžÀ
+ */
+#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: /test/test_cpuexc.txt
===================================================================
--- /test/test_cpuexc.txt	(revision 7)
+++ /test/test_cpuexc.txt	(revision 7)
@@ -0,0 +1,127 @@
+
+		CPUÎã³°œèÍý€Î¥Æ¥¹¥È
+
+¡Ú¥Æ¥¹¥È€ÎÌÜÅª¡Û
+
+CPUÎã³°¥Ï¥ó¥É¥é€ÎŒÂ¹Ô³«»Ï¡¿¥ê¥¿¡Œ¥ó»þ€Î¥·¥¹¥Æ¥àŸõÂÖ€È¡€CPUÎã³°¥Ï¥ó¥É¥é
+Ãæ€Ç€Îxsns_dpn€Èxsns_xpn€ÎÆ°ºî€òÌÖÍåÅª€Ë¥Æ¥¹¥È€¹€ë¡¥
+
+¡Ú¥Æ¥¹¥È¹àÌÜ¡Û
+
+(A) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€ËCPU¥í¥Ã¥¯¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+
+(B) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€Ë³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€¬ÊÑ²œ€·€Ê€€€³€È
+	¡ªCPUÎã³°¥Ï¥ó¥É¥éÃæ€Ç³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€òÆÉ€á€Ê€€€¿€á¡€¥Æ¥¹¥È€Ç€­€Ê
+	¡¡€€¡¥
+
+(C) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€Ë¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+
+(D) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€Ë¥¿¥¹¥¯Îã³°œèÍý¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+
+(E) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€ËCPU¥í¥Ã¥¯¥Õ¥é¥°€¬žµ€ËÌá€ë€³€È
+
+(F) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€Ë³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€¬žµ€ËÌá€ë€³€È
+
+(G) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€Ë¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+
+(H) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€Ë¥¿¥¹¥¯Îã³°œèÍý¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+
+(I) xsns_xpn€¬Àµ€·€€ÃÍ€òÊÖ€¹€³€È
+
+xsns_xpn€Ï¡€CPUÎã³°€¬È¯Àž€·€¿Ÿõ¶·€¬Œ¡€ÎŸò·ï€ò€¹€Ù€ÆËþ€¿€¹Ÿì¹ç€Ëfalse¡€
+€œ€Š€Ç€Ê€€Ÿì¹ç€Ëtrue€òÊÖ€¹¡¥
+¡¡¡Š¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È
+¡¡¡Š³ä¹þ€ß¥í¥Ã¥¯²òœüŸõÂÖ
+¡¡¡ŠCPU¥í¥Ã¥¯²òœüŸõÂÖ
+¡¡¡Š³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ
+¡¡¡Š¥¿¥¹¥¯Îã³°µö²ÄŸõÂÖ
+
+(J) xsns_dpn€¬Àµ€·€€ÃÍ€òÊÖ€¹€³€È
+
+xsns_dpn€Ï¡€CPUÎã³°€¬È¯Àž€·€¿Ÿõ¶·€¬Œ¡€ÎŸò·ï€ò€¹€Ù€ÆËþ€¿€¹Ÿì¹ç€Ëfalse¡€
+€œ€Š€Ç€Ê€€Ÿì¹ç€Ëtrue€òÊÖ€¹¡¥
+¡¡¡Š¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È
+¡¡¡Š³ä¹þ€ß¥í¥Ã¥¯²òœüŸõÂÖ
+¡¡¡ŠCPU¥í¥Ã¥¯²òœüŸõÂÖ
+¡¡¡Š³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ
+¡¡¡Š¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ
+
+(K) ¥¿¥¹¥¯ÀÚŽ¹€š€Ë€è€ë¥ê¥«¥Ð¥ê¡Œ€¬€Ç€­€ë€³€È
+
+(L) ¥¿¥¹¥¯Îã³°€Ë€è€ë¥ê¥«¥Ð¥ê¡Œ€¬€Ç€­€ë€³€È
+
+¡Ú¥Æ¥¹¥È€òŒÂ»Ü€¹€ëŸõ¶·¡Û
+
+CPUÎã³°€ÎÈ¯Àž€¹€ëŸõ¶·€Ï¡€Œ¡€Î€è€Š€ËÊ¬Îà€¹€ë€³€È€¬€Ç€­€ë¡¥€³€ì€é€ÎŸõ¶·Ëè
+€Ë¥Æ¥¹¥È¥×¥í¥°¥é¥à€òÍÑ°Õ€¹€ë¡¥
+
+(a-1) Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È
+(a-2) ¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È
+
+(b-1) ³ä¹þ€ß¥í¥Ã¥¯ŸõÂÖ
+(b-2) ³ä¹þ€ß¥í¥Ã¥¯²òœüŸõÂÖ
+
+(c-1) CPU¥í¥Ã¥¯ŸõÂÖ
+(c-2) CPU¥í¥Ã¥¯²òœüŸõÂÖ
+
+(d-1) ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡áTIPM_ENAALL
+(d-2) ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡áTMAX_INTPRI
+	 ¡ªTMAX_INTPRI¡áTMIN_INTPRI€ÎŸì¹ç€Ï(d-3)€ÈÆ±€ž€Ë€Ê€ë€Î€ÇŒÂ»Ü€·€Ê€€¡¥
+(d-3) ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡áTMIN_INTPRI
+(d-4) ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡áTMIN_INTPRI-1
+	 ¡ªTMIN_INTPRI-1€¬ÀßÄê€Ç€­€ë€«€Ï¥¿¡Œ¥²¥Ã¥È€Ë°ÍÂž€¹€ë¡¥
+
+(e-1) ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ
+(e-2) ¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ
+
+(f-1) ¥¿¥¹¥¯Îã³°¶Ø»ßŸõÂÖ
+(f-2) ¥¿¥¹¥¯Îã³°µö²ÄŸõÂÖ
+
+€³€ÎÁÈ€ß¹ç€ï€»€ò€¹€Ù€Æ¥Æ¥¹¥È€¹€ë€³€È€ÏžœŒÂÅª€Ç€Ê€€€¿€á¡€ÂåÉœÅª€Ê¥Ñ¥¿¡Œ
+¥ó€Ë¹Ê€ê¹þ€à¡¥
+
+€Þ€º¡€(a)¡Á(c)€ÎÁÈ€ß¹ç€ï€»€Ç¡€Œ¡€Î5€Ä€Î¥Ñ¥¿¡Œ¥ó€ò¥Æ¥¹¥È€¹€ë¡¥€³€ì€é€Î¥Æ
+¥¹¥È€ò€¹€ëºÝ€Ë€Ï¡€(d)¡Á(f)€Ë€Ä€€€Æ€Ï¡€(d-1)(e-1)(f-2)€ÎÁÈ€ß¹ç€ï€»€ËžÇÄê
+€¹€ë¡¥
+
+(1) (a-1)(b-1)(c-2) ¢ª ¥ê¥«¥Ð¥ê¡ŒÉÔ²Ä
+	¡ª(a-1)(b-1)(c-1)€Î¥Æ¥¹¥È€ÏŸÊ€¯¡¥
+(2) (a-1)(b-2)(c-1) ¢ª ¥ê¥«¥Ð¥ê¡ŒÉÔ²Ä
+(3) (a-1)(b-2)(c-2) ¢ª ¥ê¥«¥Ð¥ê¡ŒÉÔ²Ä
+
+(4) (a-2)(b-1)(c-2) ¢ª ¥ê¥«¥Ð¥ê¡ŒÉÔ²Ä
+	¡ª(a-2)(b-1)(c-1)€Î¥Æ¥¹¥È€ÏŸÊ€¯¡¥
+(5) (a-2)(b-2)(c-1) ¢ª ¥ê¥«¥Ð¥ê¡ŒÉÔ²Ä
+
+Œ¡€Ë¡€(a)¡Á(c)€ò(a-2)(b-2)(c-2)€ËžÇÄê€·€Æ¡€(d)¡Á(f)€ÎÁÈ€ß¹ç€ï€»€Ç¡€Œ¡€Î
+8€Ä€Î¥Ñ¥¿¡Œ¥ó€ò¥Æ¥¹¥È€¹€ë¡¥
+
+(6) (d-1)(e-2)(f-1) ¢ª ¥¿¥¹¥¯ÀÚŽ¹€š€Ë€è€ë¥ê¥«¥Ð¥ê¡Œ²ÄÇœ
+
+(7) (d-1)(e-1)(f-2) ¢ª ¥¿¥¹¥¯Îã³°€Ë€è€ë¥ê¥«¥Ð¥ê¡Œ²ÄÇœ
+
+(8) (d-2)(e-2)(f-2) ¢ª ¥ê¥«¥Ð¥ê¡ŒÉÔ²Ä
+	¡ª(d-2)(e-1)(f-2)€Î¥Æ¥¹¥È€ÏŸÊ€¯¡¥
+
+(9) (d-3)(e-2)(f-2) ¢ª ¥ê¥«¥Ð¥ê¡ŒÉÔ²Ä
+	¡ª(d-3)(e-1)(f-2)€Î¥Æ¥¹¥È€ÏŸÊ€¯¡¥
+
+(10) (d-4)(e-2)(f-2) ¢ª ¥ê¥«¥Ð¥ê¡ŒÉÔ²Ä
+	¡ª(d-4)(e-1)(f-2)€Î¥Æ¥¹¥È€ÏŸÊ€¯¡¥
+
+(11) (d-1)(e-2)(f-2) ¢ª ÎŸÊýË¡€Ë€è€ë¥ê¥«¥Ð¥ê¡Œ²ÄÇœ
+
+(12) (d-1)(e-1)(f-1) ¢ª ¥ê¥«¥Ð¥ê¡ŒÉÔ²Ä
+		(d-2)¡Á(d-4)¡ß(e-1)¡ß(f-1) €Î¥Æ¥¹¥È¡Ê3¥Ñ¥¿¡Œ¥ó¡Ë€ÏŸÊ€¯¡¥
+
+(13) (d-3)(e-2)(f-1) ¢ª ¥ê¥«¥Ð¥ê¡ŒÉÔ²Ä
+		(d-2),(d-4)¡ß(e-2)¡ß(f-1) €Î¥Æ¥¹¥È¡Ê2¥Ñ¥¿¡Œ¥ó¡Ë€ÏŸÊ€¯¡¥
+
+¡Ú»ÈÍÑ¥ê¥œ¡Œ¥¹¡Û
+
+TASK1: TA_ACT¡€ÃæÍ¥ÀèÅÙ¡€¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óÅÐÏ¿
+TASK2: TA_NULL¡€¹âÍ¥ÀèÅÙ
+CPUEXC1: TA_NULL
+ALM1: TA_NULL
+
+°ÊŸå
Index: /test/test_cpuexc1.c
===================================================================
--- /test/test_cpuexc1.c	(revision 7)
+++ /test/test_cpuexc1.c	(revision 7)
@@ -0,0 +1,188 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2013 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$
+ */
+
+/* 
+ *		CPUÎã³°œèÍý€Î¥Æ¥¹¥È(1)
+ *
+ * ¡Ú¥Æ¥¹¥È€ÎÌÜÅª¡Û
+ *
+ *  Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È¡€³ä¹þ¥í¥Ã¥¯ŸõÂÖ€ÇÈ¯Àž€·€¿CPUÎã³°€Ë€ª€±€ë¥·¥¹¥Æ
+ *  ¥àŸõÂÖ€Î¥Æ¥¹¥È¡¥³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡áTIPM_ENAALL¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõ
+ *  ÂÖ¡€¥¿¥¹¥¯Îã³°µö²ÄŸõÂÖ€Ç¥Æ¥¹¥È€¹€ë¡¥
+ *
+ * ¡Ú¥Æ¥¹¥È¹àÌÜ¡Û
+ *
+ *  €€€º€ì€â¡€Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È¡€³ä¹þ¥í¥Ã¥¯ŸõÂÖ€ÇÈ¯Àž€·€¿CPUÎã³°€Ë€ª
+ *  €€€Æ¡€
+ *
+ *	(A) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€ËCPU¥í¥Ã¥¯¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *		¡ª³ä¹þ€ß¥í¥Ã¥¯ŸõÂÖ€ÇÈ¯Àž€·€¿CPUÎã³°€Ç€Ï¡€¥·¥¹¥Æ¥àŸõÂÖ€òÀµ€·€¯ÆÉ
+ *		€á€ë€³€È€¬ÊÝŸÚ€µ€ì€Ê€€€¿€á¡€¥Æ¥¹¥È€Ç€­€Ê€€¡¥
+ *	(B) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€Ë³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€¬ÊÑ²œ€·€Ê€€€³€È
+ *		¡ª³ä¹þ€ß¥í¥Ã¥¯ŸõÂÖ€ÇÈ¯Àž€·€¿CPUÎã³°€Ç€Ï¡€¥·¥¹¥Æ¥àŸõÂÖ€òÀµ€·€¯ÆÉ
+ *		€á€ë€³€È€¬ÊÝŸÚ€µ€ì€Ê€€€¿€á¡€¥Æ¥¹¥È€Ç€­€Ê€€¡¥
+ *	(C) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€Ë¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *		¡ª³ä¹þ€ß¥í¥Ã¥¯ŸõÂÖ€ÇÈ¯Àž€·€¿CPUÎã³°€Ç€Ï¡€¥·¥¹¥Æ¥àŸõÂÖ€òÀµ€·€¯ÆÉ
+ *		€á€ë€³€È€¬ÊÝŸÚ€µ€ì€Ê€€€¿€á¡€¥Æ¥¹¥È€Ç€­€Ê€€¡¥
+ *	(D) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€Ë¥¿¥¹¥¯Îã³°œèÍý¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *		¡ª³ä¹þ€ß¥í¥Ã¥¯ŸõÂÖ€ÇÈ¯Àž€·€¿CPUÎã³°€Ç€Ï¡€¥·¥¹¥Æ¥àŸõÂÖ€òÀµ€·€¯ÆÉ
+ *		€á€ë€³€È€¬ÊÝŸÚ€µ€ì€Ê€€€¿€á¡€¥Æ¥¹¥È€Ç€­€Ê€€¡¥
+ *	(E) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€ËCPU¥í¥Ã¥¯¥Õ¥é¥°€¬žµ€ËÌá€ë€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€ëŸì¹ç€Î€ß¥Æ¥¹¥È€¹€ë¡¥
+ *	(F) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€Ë³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€¬žµ€ËÌá€ë€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€ëŸì¹ç€Î€ß¥Æ¥¹¥È€¹€ë¡¥
+ *	(G) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€Ë¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€ëŸì¹ç€Î€ß¥Æ¥¹¥È€¹€ë¡¥
+ *	(H) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€Ë¥¿¥¹¥¯Îã³°œèÍý¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€ëŸì¹ç€Î€ß¥Æ¥¹¥È€¹€ë¡¥
+ *	(I) xsns_xpn€¬true€òÊÖ€¹€³€È
+ *	(J) xsns_dpn€¬true€òÊÖ€¹€³€È
+ *
+ * ¡Ú»ÈÍÑ¥ê¥œ¡Œ¥¹¡Û
+ *
+ *	TASK1: TA_ACT¡€ÃæÍ¥ÀèÅÙ¡€¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óÅÐÏ¿
+ *	CPUEXC1: TA_NULL
+ *	ALM1: TA_NULL
+ *
+ * ¡Ú¥Æ¥¹¥È¥·¡Œ¥±¥ó¥¹¡Û
+ *
+ *	== TASK1¡ÊÃæÍ¥ÀèÅÙ¡Ë==
+ *	1:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯
+ *		dis_dsp()
+ *		ena_tex()
+ *	2:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯
+ *		sta_alm(ALM1, 1U)
+ *		¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é1€ÎŒÂ¹Ô€òÂÔ€Ä
+ *	== ALM1 ==
+ *	3:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯
+ *		SIL_LOC_INT()
+ *		RAISE_CPU_EXCEPTION
+ *	== CPUEXC1 ==
+ *	4:	xsns_xpn() == true			... (I)
+ *		xsns_dpn() == true			... (J)
+ *	5:	CPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€Ê€€Ÿì¹ç€Ï¡€€³€³€ÇœªÎ»
+ *	5:	¥ê¥¿¡Œ¥ó
+ *	== ALM1¡ÊÂ³€­¡Ë==
+ *	6:	SIL_UNL_LOC()
+ *	7:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯				... (E)(G)(H)
+ *		¥ê¥¿¡Œ¥ó
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	8:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯				... (F)
+ *	9:	¥Æ¥¹¥ÈœªÎ»
+ */
+
+#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;
+
+	test_start(__FILE__);
+
+	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: /test/test_cpuexc10.c
===================================================================
--- /test/test_cpuexc10.c	(revision 7)
+++ /test/test_cpuexc10.c	(revision 7)
@@ -0,0 +1,162 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2015 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$
+ */
+
+/* 
+ *		CPUÎã³°œèÍý€Î¥Æ¥¹¥È(10)
+ *
+ * ¡Ú¥Æ¥¹¥È€ÎÌÜÅª¡Û
+ *
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡áTMIN_INTPRI-1¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ¡€¥¿¥¹¥¯Îã³°
+ *  µö²ÄŸõÂÖ€ÇÈ¯Àž€·€¿CPUÎã³°€Ë€ª€±€ë¥·¥¹¥Æ¥àŸõÂÖ€Î¥Æ¥¹¥È¡¥
+ *
+ *  €³€Î¥Æ¥¹¥È€Ï¡€³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€òTMIN_INTPRI-1€ËÀßÄê€Ç€­€ëŸì¹ç€Î€ß
+ *  ŒÂ»Ü€¹€ë¡¥
+ *
+ * ¡Ú¥Æ¥¹¥È¹àÌÜ¡Û
+ *
+ *  €€€º€ì€â¡€³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡áTMIN_INTPRI-1¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ¡€
+ *  ¥¿¥¹¥¯Îã³°µö²ÄŸõÂÖ€ÇÈ¯Àž€·€¿CPUÎã³°€Ë€ª€€€Æ¡€
+ *
+ *	(A) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€ËCPU¥í¥Ã¥¯¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *	(B) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€Ë³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€¬ÊÑ²œ€·€Ê€€€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥éÃæ€Ç³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€òÆÉ€á€Ê€€€¿€á¡€¥Æ¥¹¥È€Ç
+ *		€­€Ê€€¡¥
+ *	(C) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€Ë¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *	(D) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€Ë¥¿¥¹¥¯Îã³°œèÍý¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *	(E) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€ËCPU¥í¥Ã¥¯¥Õ¥é¥°€¬žµ€ËÌá€ë€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€ëŸì¹ç€Î€ß¥Æ¥¹¥È€¹€ë¡¥
+ *	(F) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€Ë³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€¬žµ€ËÌá€ë€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€ëŸì¹ç€Î€ß¥Æ¥¹¥È€¹€ë¡¥
+ *	(G) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€Ë¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€ëŸì¹ç€Î€ß¥Æ¥¹¥È€¹€ë¡¥
+ *	(H) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€Ë¥¿¥¹¥¯Îã³°œèÍý¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€ëŸì¹ç€Î€ß¥Æ¥¹¥È€¹€ë¡¥
+ *	(I) xsns_xpn€¬true€òÊÖ€¹€³€È
+ *	(J) xsns_dpn€¬true€òÊÖ€¹€³€È
+ *
+ * ¡Ú»ÈÍÑ¥ê¥œ¡Œ¥¹¡Û
+ *
+ *	TASK1: TA_ACT¡€ÃæÍ¥ÀèÅÙ¡€¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óÅÐÏ¿
+ *	CPUEXC1: TA_NULL
+ *
+ * ¡Ú¥Æ¥¹¥È¥·¡Œ¥±¥ó¥¹¡Û
+ *
+ *	== TASK1¡ÊÃæÍ¥ÀèÅÙ¡Ë==
+ *	1:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯
+ *		chg_ipm(TMIN_INTPRI-1)
+ *		ena_tex()
+ *	2:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯
+ *		RAISE_CPU_EXCEPTION
+ *	== CPUEXC1 ==
+ *	3:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯				... (A)(C)(D)
+ *		xsns_xpn() == true			... (I)
+ *		xsns_dpn() == true			... (J)
+ *	4:	CPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€Ê€€Ÿì¹ç€Ï¡€€³€³€ÇœªÎ»
+ *	4:	¥ê¥¿¡Œ¥ó
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	5:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯				... (E)(F)(G)(H)
+ *	6:	¥Æ¥¹¥ÈœªÎ»
+ */
+
+#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;
+
+	test_start(__FILE__);
+
+	check_point(1);
+	check_state(false, false, TIPM_ENAALL, false, false, true);
+	ercd = chg_ipm(TMIN_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, TMIN_INTPRI - 1, false, true, false);
+	RAISE_CPU_EXCEPTION;
+
+	check_point(5);
+	check_state(false, false, TMIN_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: /test/test_cpuexc11.c
===================================================================
--- /test/test_cpuexc11.c	(revision 7)
+++ /test/test_cpuexc11.c	(revision 7)
@@ -0,0 +1,256 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2013 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$
+ */
+
+/* 
+ *		CPUÎã³°œèÍý€Î¥Æ¥¹¥È(11)
+ *
+ * ¡Ú¥Æ¥¹¥È€ÎÌÜÅª¡Û
+ *
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡áTIPM_ENAALL¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ¡€¥¿¥¹¥¯Îã³°µö
+ *  ²ÄŸõÂÖ€ÇÈ¯Àž€·€¿CPUÎã³°€Ë€ª€±€ë¥·¥¹¥Æ¥àŸõÂÖ€Î¥Æ¥¹¥È¡¥¥¿¥¹¥¯ÀÚŽ¹€š€Ë
+ *  €è€ê¥ê¥«¥Ð¥ê¡Œ€Ç€­€ë€³€È€â¥Æ¥¹¥È€¹€ë¡¥
+ *
+ * ¡Ú¥Æ¥¹¥È¹àÌÜ¡Û
+ *
+ *  €€€º€ì€â¡€³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡áTIPM_ENAALL¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ¡€¥¿
+ *  ¥¹¥¯Îã³°µö²ÄŸõÂÖ€ÇÈ¯Àž€·€¿CPUÎã³°€Ë€ª€€€Æ¡€
+ *
+ *	(A) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€ËCPU¥í¥Ã¥¯¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *	(B) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€Ë³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€¬ÊÑ²œ€·€Ê€€€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥éÃæ€Ç³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€òÆÉ€á€Ê€€€¿€á¡€¥Æ¥¹¥È€Ç
+ *		€­€Ê€€¡¥
+ *	(C) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€Ë¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *	(D) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€Ë¥¿¥¹¥¯Îã³°œèÍý¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *	(E) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€ËCPU¥í¥Ã¥¯¥Õ¥é¥°€¬žµ€ËÌá€ë€³€È
+ *	(F) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€Ë³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€¬žµ€ËÌá€ë€³€È
+ *	(G) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€Ë¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *	(H) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€Ë¥¿¥¹¥¯Îã³°œèÍý¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *	(I) xsns_xpn€¬false€òÊÖ€¹€³€È
+ *	(J) xsns_dpn€¬false€òÊÖ€¹€³€È
+ *	(K) ¥¿¥¹¥¯ÀÚŽ¹€š€Ë€è€ë¥ê¥«¥Ð¥ê¡Œ€¬€Ç€­€ë€³€È
+ *	(L) ¥¿¥¹¥¯Îã³°€Ë€è€ë¥ê¥«¥Ð¥ê¡Œ€¬€Ç€­€ë€³€È
+ *
+ * ¡Ú»ÈÍÑ¥ê¥œ¡Œ¥¹¡Û
+ *
+ *	TASK1: TA_ACT¡€ÃæÍ¥ÀèÅÙ¡€¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óÅÐÏ¿
+ *	TASK2: TA_NULL¡€¹âÍ¥ÀèÅÙ
+ *	CPUEXC1: TA_NULL
+ *
+ * ¡Ú¥Æ¥¹¥È¥·¡Œ¥±¥ó¥¹¡Û
+ *
+ *	== TASK1¡ÊÃæÍ¥ÀèÅÙ¡€1²óÌÜ¡Ë==
+ *	1:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯
+ *		ena_tex()
+ *	2:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯
+ *		RAISE_CPU_EXCEPTION
+ *	== CPUEXC1¡Ê1²óÌÜ¡Ë==
+ *	3:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯				... (A)(C)(D)
+ *		xsns_xpn() == false			... (I)
+ *		xsns_dpn() == false			... (J)
+ *	4:	iact_tsk(TASK2)
+ *		iloc_cpu()
+ *		¥ê¥¿¡Œ¥ó
+ *	== TASK2¡Ê¹âÍ¥ÀèÅÙ¡Ë==
+ *	5:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯				... (E)(F)(G)(H)
+ *	6:	ter_tsk(TASK1)				... (K)
+ *	7:	act_tsk(TASK1)				... (K)
+ *	8:	ext_tsk()
+ *	== TASK1¡ÊÃæÍ¥ÀèÅÙ¡€2²óÌÜ¡Ë==
+ *	9:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯				... (K)
+ *		ena_tex()
+ *	10:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯
+ *		RAISE_CPU_EXCEPTION
+ *	== CPUEXC1¡Ê2²óÌÜ¡Ë==
+ *	11:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯				... (A)(C)(D)
+ *		xsns_xpn() == false			... (I)
+ *		xsns_dpn() == false			... (J)
+ *	12:	iras_tex(TASK1, 1U)
+ *		iloc_cpu()
+ *		¥ê¥¿¡Œ¥ó
+ *	== TASK1€Î¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó ==
+ *	13:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯				... (E)(F)(G)(H)
+ *	14:	act_tsk(TASK1)				... (L)
+ *	15:	ext_tsk()					... (L)
+ *	== TASK1¡ÊÃæÍ¥ÀèÅÙ¡€3²óÌÜ¡Ë==
+ *	16:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯				... (L)
+ *	17:	¥Æ¥¹¥ÈœªÎ»
+ */
+
+#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:
+		test_start(__FILE__);
+
+		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: /test/test_cpuexc12.c
===================================================================
--- /test/test_cpuexc12.c	(revision 7)
+++ /test/test_cpuexc12.c	(revision 7)
@@ -0,0 +1,152 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2013 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$
+ */
+
+/* 
+ *		CPUÎã³°œèÍý€Î¥Æ¥¹¥È(12)
+ *
+ * ¡Ú¥Æ¥¹¥È€ÎÌÜÅª¡Û
+ *
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡áTIPM_ENAALL¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ¡€¥¿¥¹¥¯Îã³°¶Ø
+ *  »ßŸõÂÖ€ÇÈ¯Àž€·€¿CPUÎã³°€Ë€ª€±€ë¥·¥¹¥Æ¥àŸõÂÖ€Î¥Æ¥¹¥È¡¥
+ *
+ * ¡Ú¥Æ¥¹¥È¹àÌÜ¡Û
+ *
+ *  €€€º€ì€â¡€³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡áTIPM_ENAALL¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ¡€¥¿
+ *  ¥¹¥¯Îã³°¶Ø»ßŸõÂÖ€ÇÈ¯Àž€·€¿CPUÎã³°€Ë€ª€€€Æ¡€
+ *
+ *	(A) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€ËCPU¥í¥Ã¥¯¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *	(B) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€Ë³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€¬ÊÑ²œ€·€Ê€€€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥éÃæ€Ç³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€òÆÉ€á€Ê€€€¿€á¡€¥Æ¥¹¥È€Ç
+ *		€­€Ê€€¡¥
+ *	(C) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€Ë¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *	(D) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€Ë¥¿¥¹¥¯Îã³°œèÍý¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *	(E) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€ËCPU¥í¥Ã¥¯¥Õ¥é¥°€¬žµ€ËÌá€ë€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€ëŸì¹ç€Î€ß¥Æ¥¹¥È€¹€ë¡¥
+ *	(F) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€Ë³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€¬žµ€ËÌá€ë€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€ëŸì¹ç€Î€ß¥Æ¥¹¥È€¹€ë¡¥
+ *	(G) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€Ë¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€ëŸì¹ç€Î€ß¥Æ¥¹¥È€¹€ë¡¥
+ *	(H) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€Ë¥¿¥¹¥¯Îã³°œèÍý¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€ëŸì¹ç€Î€ß¥Æ¥¹¥È€¹€ë¡¥
+ *	(I) xsns_xpn€¬true€òÊÖ€¹€³€È
+ *	(J) xsns_dpn€¬true€òÊÖ€¹€³€È
+ *
+ * ¡Ú»ÈÍÑ¥ê¥œ¡Œ¥¹¡Û
+ *
+ *	TASK1: TA_ACT¡€ÃæÍ¥ÀèÅÙ¡€¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óÅÐÏ¿
+ *	CPUEXC1: TA_NULL
+ *
+ * ¡Ú¥Æ¥¹¥È¥·¡Œ¥±¥ó¥¹¡Û
+ *
+ *	== TASK1¡ÊÃæÍ¥ÀèÅÙ¡Ë==
+ *	1:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯
+ *		dis_dsp()
+ *	2:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯
+ *		RAISE_CPU_EXCEPTION
+ *	== CPUEXC1 ==
+ *	3:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯				... (A)(C)(D)
+ *		xsns_xpn() == true			... (I)
+ *		xsns_dpn() == true			... (J)
+ *	4:	CPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€Ê€€Ÿì¹ç€Ï¡€€³€³€ÇœªÎ»
+ *	4:	¥ê¥¿¡Œ¥ó
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	5:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯				... (E)(F)(G)(H)
+ *	6:	¥Æ¥¹¥ÈœªÎ»
+ */
+
+#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;
+
+	test_start(__FILE__);
+
+	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: /test/test_cpuexc13.c
===================================================================
--- /test/test_cpuexc13.c	(revision 7)
+++ /test/test_cpuexc13.c	(revision 7)
@@ -0,0 +1,152 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2013 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$
+ */
+
+/* 
+ *		CPUÎã³°œèÍý€Î¥Æ¥¹¥È(13)
+ *
+ * ¡Ú¥Æ¥¹¥È€ÎÌÜÅª¡Û
+ *
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡áTMIN_INTPRI¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ¡€¥¿¥¹¥¯Îã³°¶Ø
+ *  »ßŸõÂÖ€ÇÈ¯Àž€·€¿CPUÎã³°€Ë€ª€±€ë¥·¥¹¥Æ¥àŸõÂÖ€Î¥Æ¥¹¥È¡¥
+ *
+ * ¡Ú¥Æ¥¹¥È¹àÌÜ¡Û
+ *
+ *  €€€º€ì€â¡€³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡áTMIN_INTPRI¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ¡€¥¿
+ *  ¥¹¥¯Îã³°¶Ø»ßŸõÂÖ€ÇÈ¯Àž€·€¿CPUÎã³°€Ë€ª€€€Æ¡€
+ *
+ *	(A) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€ËCPU¥í¥Ã¥¯¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *	(B) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€Ë³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€¬ÊÑ²œ€·€Ê€€€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥éÃæ€Ç³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€òÆÉ€á€Ê€€€¿€á¡€¥Æ¥¹¥È€Ç
+ *		€­€Ê€€¡¥
+ *	(C) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€Ë¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *	(D) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€Ë¥¿¥¹¥¯Îã³°œèÍý¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *	(E) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€ËCPU¥í¥Ã¥¯¥Õ¥é¥°€¬žµ€ËÌá€ë€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€ëŸì¹ç€Î€ß¥Æ¥¹¥È€¹€ë¡¥
+ *	(F) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€Ë³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€¬žµ€ËÌá€ë€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€ëŸì¹ç€Î€ß¥Æ¥¹¥È€¹€ë¡¥
+ *	(G) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€Ë¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€ëŸì¹ç€Î€ß¥Æ¥¹¥È€¹€ë¡¥
+ *	(H) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€Ë¥¿¥¹¥¯Îã³°œèÍý¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€ëŸì¹ç€Î€ß¥Æ¥¹¥È€¹€ë¡¥
+ *	(I) xsns_xpn€¬true€òÊÖ€¹€³€È
+ *	(J) xsns_dpn€¬true€òÊÖ€¹€³€È
+ *
+ * ¡Ú»ÈÍÑ¥ê¥œ¡Œ¥¹¡Û
+ *
+ *	TASK1: TA_ACT¡€ÃæÍ¥ÀèÅÙ¡€¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óÅÐÏ¿
+ *	CPUEXC1: TA_NULL
+ *
+ * ¡Ú¥Æ¥¹¥È¥·¡Œ¥±¥ó¥¹¡Û
+ *
+ *	== TASK1¡ÊÃæÍ¥ÀèÅÙ¡Ë==
+ *	1:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯
+ *		chg_ipm(TMIN_INTPRI)
+ *	2:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯
+ *		RAISE_CPU_EXCEPTION
+ *	== CPUEXC1 ==
+ *	3:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯				... (A)(C)(D)
+ *		xsns_xpn() == true			... (I)
+ *		xsns_dpn() == true			... (J)
+ *	4:	CPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€Ê€€Ÿì¹ç€Ï¡€€³€³€ÇœªÎ»
+ *	4:	¥ê¥¿¡Œ¥ó
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	5:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯				... (E)(F)(G)(H)
+ *	6:	¥Æ¥¹¥ÈœªÎ»
+ */
+
+#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;
+
+	test_start(__FILE__);
+
+	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: /test/test_cpuexc2.c
===================================================================
--- /test/test_cpuexc2.c	(revision 7)
+++ /test/test_cpuexc2.c	(revision 7)
@@ -0,0 +1,180 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2013 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$
+ */
+
+/* 
+ *		CPUÎã³°œèÍý€Î¥Æ¥¹¥È(2)
+ *
+ * ¡Ú¥Æ¥¹¥È€ÎÌÜÅª¡Û
+ *
+ *  Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È¡€³ä¹þ¥í¥Ã¥¯²òœü¡€CPU¥í¥Ã¥¯ŸõÂÖ€ÇÈ¯Àž€·€¿CPUÎã
+ *  ³°€Ë€ª€±€ë¥·¥¹¥Æ¥àŸõÂÖ€Î¥Æ¥¹¥È¡¥³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡áTIPM_ENAALL¡€¥Ç¥£
+ *  ¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ¡€¥¿¥¹¥¯Îã³°µö²ÄŸõÂÖ€Ç¥Æ¥¹¥È€¹€ë¡¥
+ *
+ * ¡Ú¥Æ¥¹¥È¹àÌÜ¡Û
+ *
+ *  €€€º€ì€â¡€Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È¡€³ä¹þ¥í¥Ã¥¯²òœü¡€CPU¥í¥Ã¥¯ŸõÂÖ€ÇÈ¯Àž
+ *  €·€¿CPUÎã³°€Ë€ª€€€Æ¡€
+ *
+ *	(A) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€ËCPU¥í¥Ã¥¯¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *	(B) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€Ë³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€¬ÊÑ²œ€·€Ê€€€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥éÃæ€Ç³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€òÆÉ€á€Ê€€€¿€á¡€¥Æ¥¹¥È€Ç
+ *		€­€Ê€€¡¥
+ *	(C) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€Ë¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *	(D) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€Ë¥¿¥¹¥¯Îã³°œèÍý¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *	(E) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€ËCPU¥í¥Ã¥¯¥Õ¥é¥°€¬žµ€ËÌá€ë€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€ëŸì¹ç€Î€ß¥Æ¥¹¥È€¹€ë¡¥
+ *	(F) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€Ë³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€¬žµ€ËÌá€ë€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€ëŸì¹ç€Î€ß¥Æ¥¹¥È€¹€ë¡¥
+ *	(G) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€Ë¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€ëŸì¹ç€Î€ß¥Æ¥¹¥È€¹€ë¡¥
+ *	(H) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€Ë¥¿¥¹¥¯Îã³°œèÍý¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€ëŸì¹ç€Î€ß¥Æ¥¹¥È€¹€ë¡¥
+ *	(I) xsns_xpn€¬true€òÊÖ€¹€³€È
+ *	(J) xsns_dpn€¬true€òÊÖ€¹€³€È
+ *
+ * ¡Ú»ÈÍÑ¥ê¥œ¡Œ¥¹¡Û
+ *
+ *	TASK1: TA_ACT¡€ÃæÍ¥ÀèÅÙ¡€¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óÅÐÏ¿
+ *	CPUEXC1: TA_NULL
+ *	ALM1: TA_NULL
+ *
+ * ¡Ú¥Æ¥¹¥È¥·¡Œ¥±¥ó¥¹¡Û
+ *
+ *	== TASK1¡ÊÃæÍ¥ÀèÅÙ¡Ë==
+ *	1:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯
+ *		dis_dsp()
+ *		ena_tex()
+ *	2:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯
+ *		sta_alm(ALM1, 1U)
+ *		¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é1€ÎŒÂ¹Ô€òÂÔ€Ä
+ *	== ALM1 ==
+ *	3:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯
+ *		iloc_cpu()
+ *		RAISE_CPU_EXCEPTION
+ *	== CPUEXC1 ==
+ *	4:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯				... (A)(C)(D)
+ *		xsns_xpn() == true			... (I)
+ *		xsns_dpn() == true			... (J)
+ *	5:	CPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€Ê€€Ÿì¹ç€Ï¡€€³€³€ÇœªÎ»
+ *	5:	¥ê¥¿¡Œ¥ó
+ *	== ALM1¡ÊÂ³€­¡Ë==
+ *	6:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯				... (E)(G)(H)
+ *		¥ê¥¿¡Œ¥ó
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	7:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯				... (F)
+ *	8:	¥Æ¥¹¥ÈœªÎ»
+ */
+
+#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;
+
+	test_start(__FILE__);
+
+	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: /test/test_cpuexc3.c
===================================================================
--- /test/test_cpuexc3.c	(revision 7)
+++ /test/test_cpuexc3.c	(revision 7)
@@ -0,0 +1,175 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2013 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$
+ */
+
+/* 
+ *		CPUÎã³°œèÍý€Î¥Æ¥¹¥È(3)
+ *
+ * ¡Ú¥Æ¥¹¥È€ÎÌÜÅª¡Û
+ *
+ *  Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È¡€³ä¹þ¥í¥Ã¥¯²òœü¡€CPU¥í¥Ã¥¯²òœü€ÇÈ¯Àž€·€¿CPUÎã
+ *  ³°€Ë€ª€±€ë¥·¥¹¥Æ¥àŸõÂÖ€Î¥Æ¥¹¥È¡¥³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡áTIPM_ENAALL¡€¥Ç¥£
+ *  ¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ¡€¥¿¥¹¥¯Îã³°µö²ÄŸõÂÖ€Ç¥Æ¥¹¥È€¹€ë¡¥
+ *
+ * ¡Ú¥Æ¥¹¥È¹àÌÜ¡Û
+ *
+ *  €€€º€ì€â¡€Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È¡€³ä¹þ¥í¥Ã¥¯²òœü¡€CPU¥í¥Ã¥¯²òœü€ÇÈ¯Àž
+ *  €·€¿CPUÎã³°€Ë€ª€€€Æ¡€
+ *
+ *	(A) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€ËCPU¥í¥Ã¥¯¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *	(B) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€Ë³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€¬ÊÑ²œ€·€Ê€€€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥éÃæ€Ç³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€òÆÉ€á€Ê€€€¿€á¡€¥Æ¥¹¥È€Ç
+ *		€­€Ê€€¡¥
+ *	(C) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€Ë¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *	(D) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€Ë¥¿¥¹¥¯Îã³°œèÍý¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *	(E) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€ËCPU¥í¥Ã¥¯¥Õ¥é¥°€¬žµ€ËÌá€ë€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€ëŸì¹ç€Î€ß¥Æ¥¹¥È€¹€ë¡¥
+ *	(F) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€Ë³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€¬žµ€ËÌá€ë€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€ëŸì¹ç€Î€ß¥Æ¥¹¥È€¹€ë¡¥
+ *	(G) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€Ë¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€ëŸì¹ç€Î€ß¥Æ¥¹¥È€¹€ë¡¥
+ *	(H) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€Ë¥¿¥¹¥¯Îã³°œèÍý¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€ëŸì¹ç€Î€ß¥Æ¥¹¥È€¹€ë¡¥
+ *	(I) xsns_xpn€¬true€òÊÖ€¹€³€È
+ *	(J) xsns_dpn€¬true€òÊÖ€¹€³€È
+ *
+ * ¡Ú»ÈÍÑ¥ê¥œ¡Œ¥¹¡Û
+ *
+ *	TASK1: TA_ACT¡€ÃæÍ¥ÀèÅÙ¡€¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óÅÐÏ¿
+ *	CPUEXC1: TA_NULL
+ *	ALM1: TA_NULL
+ *
+ * ¡Ú¥Æ¥¹¥È¥·¡Œ¥±¥ó¥¹¡Û
+ *
+ *	== TASK1¡ÊÃæÍ¥ÀèÅÙ¡Ë==
+ *	1:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯
+ *		dis_dsp()
+ *		ena_tex()
+ *	2:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯
+ *		sta_alm(ALM1, 1U)
+ *		¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é1€ÎŒÂ¹Ô€òÂÔ€Ä
+ *	== ALM1 ==
+ *	3:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯
+ *		RAISE_CPU_EXCEPTION
+ *	== CPUEXC1 ==
+ *	4:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯				... (A)(C)(D)
+ *		xsns_xpn() == true			... (I)
+ *		xsns_dpn() == true			... (J)
+ *	5:	CPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€Ê€€Ÿì¹ç€Ï¡€€³€³€ÇœªÎ»
+ *	5:	¥ê¥¿¡Œ¥ó
+ *	== ALM1¡ÊÂ³€­¡Ë==
+ *	6:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯				... (E)(G)(H)
+ *		¥ê¥¿¡Œ¥ó
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	7:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯				... (F)
+ *	8:	¥Æ¥¹¥ÈœªÎ»
+ */
+
+#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;
+
+	test_start(__FILE__);
+
+	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: /test/test_cpuexc4.c
===================================================================
--- /test/test_cpuexc4.c	(revision 7)
+++ /test/test_cpuexc4.c	(revision 7)
@@ -0,0 +1,168 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2013 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$
+ */
+
+/* 
+ *		CPUÎã³°œèÍý€Î¥Æ¥¹¥È(4)
+ *
+ * ¡Ú¥Æ¥¹¥È€ÎÌÜÅª¡Û
+ *
+ *  ¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È¡€³ä¹þ¥í¥Ã¥¯ŸõÂÖ€ÇÈ¯Àž€·€¿CPUÎã³°€Ë€ª€±€ë¥·¥¹¥Æ¥à
+ *  ŸõÂÖ€Î¥Æ¥¹¥È¡¥³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡áTIPM_ENAALL¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ¡€
+ *  ¥¿¥¹¥¯Îã³°µö²ÄŸõÂÖ€Ç¥Æ¥¹¥È€¹€ë¡¥
+ *
+ * ¡Ú¥Æ¥¹¥È¹àÌÜ¡Û
+ *
+ *  €€€º€ì€â¡€¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È¡€³ä¹þ¥í¥Ã¥¯ŸõÂÖ€ÇÈ¯Àž€·€¿CPUÎã³°€Ë€ª€€
+ *  €Æ¡€
+ *
+ *	(A) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€ËCPU¥í¥Ã¥¯¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *		¡ª³ä¹þ€ß¥í¥Ã¥¯ŸõÂÖ€ÇÈ¯Àž€·€¿CPUÎã³°€Ç€Ï¡€¥·¥¹¥Æ¥àŸõÂÖ€òÀµ€·€¯ÆÉ
+ *		€á€ë€³€È€¬ÊÝŸÚ€µ€ì€Ê€€€¿€á¡€¥Æ¥¹¥È€Ç€­€Ê€€¡¥
+ *	(B) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€Ë³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€¬ÊÑ²œ€·€Ê€€€³€È
+ *		¡ª³ä¹þ€ß¥í¥Ã¥¯ŸõÂÖ€ÇÈ¯Àž€·€¿CPUÎã³°€Ç€Ï¡€¥·¥¹¥Æ¥àŸõÂÖ€òÀµ€·€¯ÆÉ
+ *		€á€ë€³€È€¬ÊÝŸÚ€µ€ì€Ê€€€¿€á¡€¥Æ¥¹¥È€Ç€­€Ê€€¡¥
+ *	(C) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€Ë¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *		¡ª³ä¹þ€ß¥í¥Ã¥¯ŸõÂÖ€ÇÈ¯Àž€·€¿CPUÎã³°€Ç€Ï¡€¥·¥¹¥Æ¥àŸõÂÖ€òÀµ€·€¯ÆÉ
+ *		€á€ë€³€È€¬ÊÝŸÚ€µ€ì€Ê€€€¿€á¡€¥Æ¥¹¥È€Ç€­€Ê€€¡¥
+ *	(D) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€Ë¥¿¥¹¥¯Îã³°œèÍý¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *		¡ª³ä¹þ€ß¥í¥Ã¥¯ŸõÂÖ€ÇÈ¯Àž€·€¿CPUÎã³°€Ç€Ï¡€¥·¥¹¥Æ¥àŸõÂÖ€òÀµ€·€¯ÆÉ
+ *		€á€ë€³€È€¬ÊÝŸÚ€µ€ì€Ê€€€¿€á¡€¥Æ¥¹¥È€Ç€­€Ê€€¡¥
+ *	(E) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€ËCPU¥í¥Ã¥¯¥Õ¥é¥°€¬žµ€ËÌá€ë€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€ëŸì¹ç€Î€ß¥Æ¥¹¥È€¹€ë¡¥
+ *	(F) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€Ë³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€¬žµ€ËÌá€ë€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€ëŸì¹ç€Î€ß¥Æ¥¹¥È€¹€ë¡¥
+ *	(G) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€Ë¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€ëŸì¹ç€Î€ß¥Æ¥¹¥È€¹€ë¡¥
+ *	(H) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€Ë¥¿¥¹¥¯Îã³°œèÍý¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€ëŸì¹ç€Î€ß¥Æ¥¹¥È€¹€ë¡¥
+ *	(I) xsns_xpn€¬true€òÊÖ€¹€³€È
+ *	(J) xsns_dpn€¬true€òÊÖ€¹€³€È
+ *
+ * ¡Ú»ÈÍÑ¥ê¥œ¡Œ¥¹¡Û
+ *
+ *	TASK1: TA_ACT¡€ÃæÍ¥ÀèÅÙ¡€¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óÅÐÏ¿
+ *	CPUEXC1: TA_NULL
+ *
+ * ¡Ú¥Æ¥¹¥È¥·¡Œ¥±¥ó¥¹¡Û
+ *
+ *	== TASK1¡ÊÃæÍ¥ÀèÅÙ¡Ë==
+ *	1:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯
+ *		dis_dsp()
+ *		ena_tex()
+ *	2:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯
+ *		SIL_LOC_INT()
+ *		RAISE_CPU_EXCEPTION
+ *	== CPUEXC1 ==
+ *	3:	xsns_xpn() == true			... (I)
+ *		xsns_dpn() == true			... (J)
+ *	4:	CPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€Ê€€Ÿì¹ç€Ï¡€€³€³€ÇœªÎ»
+ *	4:	¥ê¥¿¡Œ¥ó
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	5:	SIL_UNL_LOC()
+ *	6:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯				... (E)(F)(G)(H)
+ *	7:	¥Æ¥¹¥ÈœªÎ»
+ */
+
+#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;
+
+	test_start(__FILE__);
+
+	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: /test/test_cpuexc5.c
===================================================================
--- /test/test_cpuexc5.c	(revision 7)
+++ /test/test_cpuexc5.c	(revision 7)
@@ -0,0 +1,159 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2013 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$
+ */
+
+/* 
+ *		CPUÎã³°œèÍý€Î¥Æ¥¹¥È(5)
+ *
+ * ¡Ú¥Æ¥¹¥È€ÎÌÜÅª¡Û
+ *
+ *  ¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È¡€³ä¹þ¥í¥Ã¥¯²òœü¡€CPU¥í¥Ã¥¯ŸõÂÖ€ÇÈ¯Àž€·€¿CPUÎã³°
+ *  €Ë€ª€±€ë¥·¥¹¥Æ¥àŸõÂÖ€Î¥Æ¥¹¥È¡¥³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡áTIPM_ENAALL¡€¥Ç¥£
+ *  ¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ¡€¥¿¥¹¥¯Îã³°µö²ÄŸõÂÖ€Ç¥Æ¥¹¥È€¹€ë¡¥
+ *
+ * ¡Ú¥Æ¥¹¥È¹àÌÜ¡Û
+ *
+ *  €€€º€ì€â¡€¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È¡€³ä¹þ¥í¥Ã¥¯²òœü¡€CPU¥í¥Ã¥¯ŸõÂÖ€ÇÈ¯Àž€·
+ *  €¿CPUÎã³°€Ë€ª€€€Æ¡€
+ *
+ *	(A) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€ËCPU¥í¥Ã¥¯¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *	(B) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€Ë³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€¬ÊÑ²œ€·€Ê€€€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥éÃæ€Ç³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€òÆÉ€á€Ê€€€¿€á¡€¥Æ¥¹¥È€Ç
+ *		€­€Ê€€¡¥
+ *	(C) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€Ë¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *	(D) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€Ë¥¿¥¹¥¯Îã³°œèÍý¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *	(E) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€ËCPU¥í¥Ã¥¯¥Õ¥é¥°€¬žµ€ËÌá€ë€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€ëŸì¹ç€Î€ß¥Æ¥¹¥È€¹€ë¡¥
+ *	(F) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€Ë³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€¬žµ€ËÌá€ë€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€ëŸì¹ç€Î€ß¥Æ¥¹¥È€¹€ë¡¥
+ *	(G) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€Ë¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€ëŸì¹ç€Î€ß¥Æ¥¹¥È€¹€ë¡¥
+ *	(H) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€Ë¥¿¥¹¥¯Îã³°œèÍý¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€ëŸì¹ç€Î€ß¥Æ¥¹¥È€¹€ë¡¥
+ *	(I) xsns_xpn€¬true€òÊÖ€¹€³€È
+ *	(J) xsns_dpn€¬true€òÊÖ€¹€³€È
+ *
+ * ¡Ú»ÈÍÑ¥ê¥œ¡Œ¥¹¡Û
+ *
+ *	TASK1: TA_ACT¡€ÃæÍ¥ÀèÅÙ¡€¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óÅÐÏ¿
+ *	CPUEXC1: TA_NULL
+ *
+ * ¡Ú¥Æ¥¹¥È¥·¡Œ¥±¥ó¥¹¡Û
+ *
+ *	== TASK1¡ÊÃæÍ¥ÀèÅÙ¡Ë==
+ *	1:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯
+ *		dis_dsp()
+ *		ena_tex()
+ *		loc_cpu()
+ *	2:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯
+ *		RAISE_CPU_EXCEPTION
+ *	== CPUEXC1 ==
+ *	3:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯				... (A)(C)(D)
+ *		xsns_xpn() == true			... (I)
+ *		xsns_dpn() == true			... (J)
+ *	4:	CPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€Ê€€Ÿì¹ç€Ï¡€€³€³€ÇœªÎ»
+ *	4:	¥ê¥¿¡Œ¥ó
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	5:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯				... (E)(F)(G)(H)
+ *	6:	¥Æ¥¹¥ÈœªÎ»
+ */
+
+#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;
+
+	test_start(__FILE__);
+
+	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: /test/test_cpuexc6.c
===================================================================
--- /test/test_cpuexc6.c	(revision 7)
+++ /test/test_cpuexc6.c	(revision 7)
@@ -0,0 +1,183 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2013 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$
+ */
+
+/* 
+ *		CPUÎã³°œèÍý€Î¥Æ¥¹¥È(6)
+ *
+ * ¡Ú¥Æ¥¹¥È€ÎÌÜÅª¡Û
+ *
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡áTIPM_ENAALL¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ¡€¥¿¥¹¥¯Îã³°¶Ø
+ *  »ßŸõÂÖ€ÇÈ¯Àž€·€¿CPUÎã³°€Ë€ª€±€ë¥·¥¹¥Æ¥àŸõÂÖ€Î¥Æ¥¹¥È¡¥¥¿¥¹¥¯ÀÚŽ¹€š€Ë
+ *  €è€ê¥ê¥«¥Ð¥ê¡Œ€Ç€­€ë€³€È€â¥Æ¥¹¥È€¹€ë¡¥
+ *
+ * ¡Ú¥Æ¥¹¥È¹àÌÜ¡Û
+ *
+ *  €€€º€ì€â¡€³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡áTIPM_ENAALL¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ¡€¥¿
+ *  ¥¹¥¯Îã³°¶Ø»ßŸõÂÖ€ÇÈ¯Àž€·€¿CPUÎã³°€Ë€ª€€€Æ¡€
+ *
+ *	(A) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€ËCPU¥í¥Ã¥¯¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *	(B) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€Ë³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€¬ÊÑ²œ€·€Ê€€€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥éÃæ€Ç³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€òÆÉ€á€Ê€€€¿€á¡€¥Æ¥¹¥È€Ç
+ *		€­€Ê€€¡¥
+ *	(C) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€Ë¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *	(D) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€Ë¥¿¥¹¥¯Îã³°œèÍý¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *	(E) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€ËCPU¥í¥Ã¥¯¥Õ¥é¥°€¬žµ€ËÌá€ë€³€È
+ *	(F) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€Ë³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€¬žµ€ËÌá€ë€³€È
+ *	(G) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€Ë¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *	(H) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€Ë¥¿¥¹¥¯Îã³°œèÍý¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *	(I) xsns_xpn€¬true€òÊÖ€¹€³€È
+ *	(J) xsns_dpn€¬false€òÊÖ€¹€³€È
+ *	(K) ¥¿¥¹¥¯ÀÚŽ¹€š€Ë€è€ë¥ê¥«¥Ð¥ê¡Œ€¬€Ç€­€ë€³€È
+ *
+ * ¡Ú»ÈÍÑ¥ê¥œ¡Œ¥¹¡Û
+ *
+ *	TASK1: TA_ACT¡€ÃæÍ¥ÀèÅÙ¡€¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óÅÐÏ¿
+ *	TASK2: TA_NULL¡€¹âÍ¥ÀèÅÙ
+ *	CPUEXC1: TA_NULL
+ *
+ * ¡Ú¥Æ¥¹¥È¥·¡Œ¥±¥ó¥¹¡Û
+ *
+ *	== TASK1¡ÊÃæÍ¥ÀèÅÙ¡€1²óÌÜ¡Ë==
+ *	1:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯
+ *	2:	RAISE_CPU_EXCEPTION
+ *	== CPUEXC1 ==
+ *	3:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯				... (A),(C),(D)
+ *		xsns_xpn() == true			... (I)
+ *		xsns_dpn() == false			... (J)
+ *  4:	iact_tsk(TASK2)
+ *		iloc_cpu()
+ *  	¥ê¥¿¡Œ¥ó
+ *	== TASK2¡Ê¹âÍ¥ÀèÅÙ¡Ë==
+ *	5:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯				... (E),(F),(G),(H)
+ *	6:	ter_tsk(TASK1)				... (K)
+ *	7:	act_tsk(TASK1)				... (K)
+ *	8:	ext_tsk()
+ *	== TASK1¡ÊÃæÍ¥ÀèÅÙ¡€2²óÌÜ¡Ë==
+ *	9:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯				... (K)
+ *	10:	¥Æ¥¹¥ÈœªÎ»
+ */
+
+#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:
+		test_start(__FILE__);
+
+		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: /test/test_cpuexc7.c
===================================================================
--- /test/test_cpuexc7.c	(revision 7)
+++ /test/test_cpuexc7.c	(revision 7)
@@ -0,0 +1,187 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2013 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$
+ */
+
+/* 
+ *		CPUÎã³°œèÍý€Î¥Æ¥¹¥È(7)
+ *
+ * ¡Ú¥Æ¥¹¥È€ÎÌÜÅª¡Û
+ *
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡áTIPM_ENAALL¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ¡€¥¿¥¹¥¯Îã³°µö
+ *  ²ÄŸõÂÖ€ÇÈ¯Àž€·€¿CPUÎã³°€Ë€ª€±€ë¥·¥¹¥Æ¥àŸõÂÖ€Î¥Æ¥¹¥È¡¥¥¿¥¹¥¯Îã³°€Ë€è
+ *  €ê¥ê¥«¥Ð¥ê¡Œ€Ç€­€ë€³€È€â¥Æ¥¹¥È€¹€ë¡¥
+ *
+ * ¡Ú¥Æ¥¹¥È¹àÌÜ¡Û
+ *
+ *  €€€º€ì€â¡€³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡áTIPM_ENAALL¡€¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ¡€¥¿
+ *  ¥¹¥¯Îã³°µö²ÄŸõÂÖ€ÇÈ¯Àž€·€¿CPUÎã³°€Ë€ª€€€Æ¡€
+ *
+ *	(A) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€ËCPU¥í¥Ã¥¯¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *	(B) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€Ë³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€¬ÊÑ²œ€·€Ê€€€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥éÃæ€Ç³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€òÆÉ€á€Ê€€€¿€á¡€¥Æ¥¹¥È€Ç
+ *		€­€Ê€€¡¥
+ *	(C) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€Ë¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *	(D) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€Ë¥¿¥¹¥¯Îã³°œèÍý¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *	(E) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€ËCPU¥í¥Ã¥¯¥Õ¥é¥°€¬žµ€ËÌá€ë€³€È
+ *	(F) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€Ë³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€¬žµ€ËÌá€ë€³€È
+ *	(G) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€Ë¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *	(H) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€Ë¥¿¥¹¥¯Îã³°œèÍý¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *	(I) xsns_xpn€¬false€òÊÖ€¹€³€È
+ *	(J) xsns_dpn€¬true€òÊÖ€¹€³€È
+ *	(L) ¥¿¥¹¥¯Îã³°€Ë€è€ë¥ê¥«¥Ð¥ê¡Œ€¬€Ç€­€ë€³€È
+ *
+ * ¡Ú»ÈÍÑ¥ê¥œ¡Œ¥¹¡Û
+ *
+ *	TASK1: TA_ACT¡€ÃæÍ¥ÀèÅÙ¡€¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óÅÐÏ¿
+ *	CPUEXC1: TA_NULL
+ *
+ * ¡Ú¥Æ¥¹¥È¥·¡Œ¥±¥ó¥¹¡Û
+ *
+ *	== TASK1¡ÊÃæÍ¥ÀèÅÙ¡€1²óÌÜ¡Ë==
+ *	1:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯
+ *		dis_dsp()
+ *		ena_tex()
+ *	2:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯
+ *		RAISE_CPU_EXCEPTION
+ *	== CPUEXC1 ==
+ *	3:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯				... (A),(C),(D)
+ *		xsns_xpn() == false			... (I)
+ *		xsns_dpn() == true			... (J)
+ *	4:	iras_tex(TASK1, 1U)
+ *		iloc_cpu()
+ *		¥ê¥¿¡Œ¥ó
+ *	== TASK1€Î¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó ==
+ *	5:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯				... (E),(F),(G),(H)
+ *	6:	act_tsk(TASK1)				... (L)
+ *	7:	ext_tsk()					... (L)
+ *	== TASK1¡ÊÃæÍ¥ÀèÅÙ¡€2²óÌÜ¡Ë==
+ *	8:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯				... (L)
+ *	9:	¥Æ¥¹¥ÈœªÎ»
+ */
+
+#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:
+		test_start(__FILE__);
+
+		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: /test/test_cpuexc8.c
===================================================================
--- /test/test_cpuexc8.c	(revision 7)
+++ /test/test_cpuexc8.c	(revision 7)
@@ -0,0 +1,162 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2013 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$
+ */
+
+/* 
+ *		CPUÎã³°œèÍý€Î¥Æ¥¹¥È(8)
+ *
+ * ¡Ú¥Æ¥¹¥È€ÎÌÜÅª¡Û
+ *
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡áTMAX_INTPRI¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ¡€¥¿¥¹¥¯Îã³°µö
+ *  ²ÄŸõÂÖ€ÇÈ¯Àž€·€¿CPUÎã³°€Ë€ª€±€ë¥·¥¹¥Æ¥àŸõÂÖ€Î¥Æ¥¹¥È¡¥
+ *
+ *  €³€Î¥Æ¥¹¥È€Ï¡€TMAX_INTPRI€ÈTMIN_INTPRI€¬°Û€Ê€ëŸì¹ç€Î€ßŒÂ»Ü€¹€ë¡¥
+ *
+ * ¡Ú¥Æ¥¹¥È¹àÌÜ¡Û
+ *
+ *  €€€º€ì€â¡€³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡áTMAX_INTPRI¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ¡€¥¿
+ *  ¥¹¥¯Îã³°µö²ÄŸõÂÖ€ÇÈ¯Àž€·€¿CPUÎã³°€Ë€ª€€€Æ¡€
+ *
+ *	(A) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€ËCPU¥í¥Ã¥¯¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *	(B) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€Ë³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€¬ÊÑ²œ€·€Ê€€€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥éÃæ€Ç³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€òÆÉ€á€Ê€€€¿€á¡€¥Æ¥¹¥È€Ç
+ *		€­€Ê€€¡¥
+ *	(C) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€Ë¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *	(D) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€Ë¥¿¥¹¥¯Îã³°œèÍý¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *	(E) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€ËCPU¥í¥Ã¥¯¥Õ¥é¥°€¬žµ€ËÌá€ë€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€ëŸì¹ç€Î€ß¥Æ¥¹¥È€¹€ë¡¥
+ *	(F) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€Ë³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€¬žµ€ËÌá€ë€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€ëŸì¹ç€Î€ß¥Æ¥¹¥È€¹€ë¡¥
+ *	(G) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€Ë¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€ëŸì¹ç€Î€ß¥Æ¥¹¥È€¹€ë¡¥
+ *	(H) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€Ë¥¿¥¹¥¯Îã³°œèÍý¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€ëŸì¹ç€Î€ß¥Æ¥¹¥È€¹€ë¡¥
+ *	(I) xsns_xpn€¬true€òÊÖ€¹€³€È
+ *	(J) xsns_dpn€¬true€òÊÖ€¹€³€È
+ *
+ * ¡Ú»ÈÍÑ¥ê¥œ¡Œ¥¹¡Û
+ *
+ *	TASK1: TA_ACT¡€ÃæÍ¥ÀèÅÙ¡€¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óÅÐÏ¿
+ *	CPUEXC1: TA_NULL
+ *
+ * ¡Ú¥Æ¥¹¥È¥·¡Œ¥±¥ó¥¹¡Û
+ *
+ *	== TASK1¡ÊÃæÍ¥ÀèÅÙ¡Ë==
+ *	1:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯
+ *		chg_ipm(TMAX_INTPRI)
+ *		ena_tex()
+ *	2:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯
+ *		RAISE_CPU_EXCEPTION
+ *	== CPUEXC1 ==
+ *	3:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯				... (A)(C)(D)
+ *		xsns_xpn() == true			... (I)
+ *		xsns_dpn() == true			... (J)
+ *	4:	CPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€Ê€€Ÿì¹ç€Ï¡€€³€³€ÇœªÎ»
+ *	4:	¥ê¥¿¡Œ¥ó
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	5:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯				... (E)(F)(G)(H)
+ *	6:	¥Æ¥¹¥ÈœªÎ»
+ */
+
+#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;
+
+	test_start(__FILE__);
+
+	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: /test/test_cpuexc9.c
===================================================================
--- /test/test_cpuexc9.c	(revision 7)
+++ /test/test_cpuexc9.c	(revision 7)
@@ -0,0 +1,155 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2013 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$
+ */
+
+/* 
+ *		CPUÎã³°œèÍý€Î¥Æ¥¹¥È(9)
+ *
+ * ¡Ú¥Æ¥¹¥È€ÎÌÜÅª¡Û
+ *
+ *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡áTMIN_INTPRI¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ¡€¥¿¥¹¥¯Îã³°µö
+ *  ²ÄŸõÂÖ€ÇÈ¯Àž€·€¿CPUÎã³°€Ë€ª€±€ë¥·¥¹¥Æ¥àŸõÂÖ€Î¥Æ¥¹¥È¡¥
+ *
+ * ¡Ú¥Æ¥¹¥È¹àÌÜ¡Û
+ *
+ *  €€€º€ì€â¡€³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯¡áTMIN_INTPRI¡€¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²ÄŸõÂÖ¡€¥¿
+ *  ¥¹¥¯Îã³°µö²ÄŸõÂÖ€ÇÈ¯Àž€·€¿CPUÎã³°€Ë€ª€€€Æ¡€
+ *
+ *	(A) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€ËCPU¥í¥Ã¥¯¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *	(B) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€Ë³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€¬ÊÑ²œ€·€Ê€€€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥éÃæ€Ç³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€òÆÉ€á€Ê€€€¿€á¡€¥Æ¥¹¥È€Ç
+ *		€­€Ê€€¡¥
+ *	(C) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€Ë¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *	(D) CPUÎã³°¥Ï¥ó¥É¥éŒÂ¹Ô³«»Ï»þ€Ë¥¿¥¹¥¯Îã³°œèÍý¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *	(E) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€ËCPU¥í¥Ã¥¯¥Õ¥é¥°€¬žµ€ËÌá€ë€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€ëŸì¹ç€Î€ß¥Æ¥¹¥È€¹€ë¡¥
+ *	(F) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€Ë³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€¬žµ€ËÌá€ë€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€ëŸì¹ç€Î€ß¥Æ¥¹¥È€¹€ë¡¥
+ *	(G) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€Ë¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€ëŸì¹ç€Î€ß¥Æ¥¹¥È€¹€ë¡¥
+ *	(H) CPUÎã³°¥Ï¥ó¥É¥é¥ê¥¿¡Œ¥ó»þ€Ë¥¿¥¹¥¯Îã³°œèÍý¶Ø»ß¥Õ¥é¥°€¬ÊÑ²œ€·€Ê€€€³€È
+ *		¡ªCPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€ëŸì¹ç€Î€ß¥Æ¥¹¥È€¹€ë¡¥
+ *	(I) xsns_xpn€¬true€òÊÖ€¹€³€È
+ *	(J) xsns_dpn€¬true€òÊÖ€¹€³€È
+ *
+ * ¡Ú»ÈÍÑ¥ê¥œ¡Œ¥¹¡Û
+ *
+ *	TASK1: TA_ACT¡€ÃæÍ¥ÀèÅÙ¡€¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥óÅÐÏ¿
+ *	CPUEXC1: TA_NULL
+ *
+ * ¡Ú¥Æ¥¹¥È¥·¡Œ¥±¥ó¥¹¡Û
+ *
+ *	== TASK1¡ÊÃæÍ¥ÀèÅÙ¡Ë==
+ *	1:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯
+ *		chg_ipm(TMIN_INTPRI)
+ *		ena_tex()
+ *	2:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯
+ *		RAISE_CPU_EXCEPTION
+ *	== CPUEXC1 ==
+ *	3:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯				... (A)(C)(D)
+ *		xsns_xpn() == true			... (I)
+ *		xsns_dpn() == true			... (J)
+ *	4:	CPUÎã³°¥Ï¥ó¥É¥é€«€é¥ê¥¿¡Œ¥ó€Ç€­€Ê€€Ÿì¹ç€Ï¡€€³€³€ÇœªÎ»
+ *	4:	¥ê¥¿¡Œ¥ó
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	5:	ŸõÂÖ€Î¥Á¥§¥Ã¥¯				... (E)(F)(G)(H)
+ *	6:	¥Æ¥¹¥ÈœªÎ»
+ */
+
+#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;
+
+	test_start(__FILE__);
+
+	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: /test/test_dlynse.c
===================================================================
--- /test/test_dlynse.c	(revision 7)
+++ /test/test_dlynse.c	(revision 7)
@@ -0,0 +1,120 @@
+/*
+ *  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-2013 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$
+ */
+
+/*
+ *		sil_dly_nse€ËŽØ€¹€ë¥Æ¥¹¥È
+ */
+
+#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€ò»²ŸÈ€¹€ë€¿€á€Ë¡€¥«¡Œ¥Í¥ëÍÑ€Î¥Ø¥Ã¥À¥Õ¥¡
+ *  ¥€¥ë€ò¥€¥ó¥¯¥ë¡Œ¥É€¹€ë¡¥
+ */
+#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_start(__FILE__);
+
+	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: /test/test_dlynse.cfg
===================================================================
--- /test/test_dlynse.cfg	(revision 7)
+++ /test/test_dlynse.cfg	(revision 7)
@@ -0,0 +1,14 @@
+/*
+ *  @(#) $Id$
+ */
+
+/*
+ *  sil_dly_nse€ËŽØ€¹€ë¥Æ¥¹¥È€Î¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+ */
+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: /test/test_dlynse.h
===================================================================
--- /test/test_dlynse.h	(revision 7)
+++ /test/test_dlynse.h	(revision 7)
@@ -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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		sil_dly_nse€ËŽØ€¹€ë¥Æ¥¹¥È
+ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎÄêµÁ
+ */
+#include "target_test.h"
+
+/*
+ *  ³Æ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€ÎÄêµÁ
+ */
+#define MAIN_PRIORITY	10
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È€Ë°ÍÂž€¹€ë²ÄÇœÀ­€Î€¢€ëÄê¿ô€ÎÄêµÁ
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯¥µ¥€¥º */
+#endif /* STACK_SIZE */
+
+/*
+ *  ŽØ¿ô€Î¥×¥í¥È¥¿¥€¥×ÀëžÀ
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+extern void	main_task(intptr_t exinf);
+
+#endif /* TOPPERS_MACRO_ONLY */
Index: /test/test_sem1.c
===================================================================
--- /test/test_sem1.c	(revision 7)
+++ /test/test_sem1.c	(revision 7)
@@ -0,0 +1,615 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2008-2014 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$
+ */
+
+/* 
+ *		¥»¥Þ¥Õ¥©µ¡Çœ€Î¥Æ¥¹¥È(1)
+ *
+ * ¡Ú¥Æ¥¹¥È€ÎÌÜÅª¡Û
+ *
+ *  sig_sem¡€wai_sem¡€CRE_SEM€òÌÖÍåÅª€Ë¥Æ¥¹¥È€¹€ë¡¥
+ *  €¿€À€·¡€CRE_SEM€Î¥š¥é¡Œ€Î¥Æ¥¹¥È€Ïœü€¯¡¥
+ *
+ * ¡Ú¥Æ¥¹¥È¹àÌÜ¡Û
+ *
+ *	(A) sig_sem€ÎÀÅÅª¥š¥é¡Œ€Î¥Æ¥¹¥È
+ *		(A-1) Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€«€é€ÎžÆœÐ€·
+ *		(A-2) CPU¥í¥Ã¥¯ŸõÂÖ€«€é€ÎžÆœÐ€·
+ *		(A-3) semid€¬ÉÔÀµ¡ÊŸ®€µ€¹€®€ë¡Ë
+ *		(A-4) semid€¬ÉÔÀµ¡ÊÂç€­€¹€®€ë¡Ë
+ *	(B) sig_sem€Ë€è€ê¥»¥Þ¥Õ¥©ÂÔ€ÁŸõÂÖ€Î¥¿¥¹¥¯€¬ÂÔ€Á²òœü€µ€ì€ë
+ *		(B-1) ÂÔ€Á²òœü€µ€ì€¿¥¿¥¹¥¯€ËÀÚ€êŽ¹€ï€ë
+ *		(B-2) ¥Ç¥£¥¹¥Ñ¥Ã¥ÁÊÝÎ±ŸõÂÖ€Ç¡€ÀÚ€êŽ¹€ï€é€Ê€€
+ *		(B-3) ÂÔ€Á²òœü€µ€ì€¿¥¿¥¹¥¯€¬¶¯À©ÂÔ€ÁŸõÂÖ€Ç¡€ÀÚ€êŽ¹€ï€é€Ê€€
+ *		(B-4) ÂÔ€Á²òœü€µ€ì€¿¥¿¥¹¥¯€¬Í¥ÀèÅÙ€¬Äã€¯¡€ÀÚ€êŽ¹€ï€é€Ê€€
+ *	(C) sig_sem€Ë€è€ê¥»¥Þ¥Õ¥©€Î»ñž»¿ô€¬1Áý€š€ë
+ *		(C-1) ¥»¥Þ¥Õ¥©€Î»ñž»¿ô€¬0€«€é1€Ë€Ê€ë
+ *		(C-2) ¥»¥Þ¥Õ¥©€Î»ñž»¿ô€¬1€«€é2€Ë€Ê€ë
+ *	(D) sig_sem€¬E_QOVR¥š¥é¡Œ€È€Ê€ë
+ *		(D-1) ¥»¥Þ¥Õ¥©€ÎºÇÂç»ñž»¿ô€¬1€Î»þ
+ *		(D-2) ¥»¥Þ¥Õ¥©€ÎºÇÂç»ñž»¿ô€¬2€Î»þ
+ *	(E) wai_sem€ÎÀÅÅª¥š¥é¡Œ€Î¥Æ¥¹¥È
+ *		(E-1) Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€«€é€ÎžÆœÐ€·
+ *		(E-2) CPU¥í¥Ã¥¯ŸõÂÖ€«€é€ÎžÆœÐ€·
+ *		(E-3) ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ€«€é€ÎžÆœÐ€·
+ *		(E-4) ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœü€Ç€Ê€€ŸõÂÖ€«€é€ÎžÆœÐ€·
+ *		(E-5) semid€¬ÉÔÀµ¡ÊŸ®€µ€¹€®€ë¡Ë
+ *		(E-6) semid€¬ÉÔÀµ¡ÊÂç€­€¹€®€ë¡Ë
+ *	(F) wai_sem€Ë€è€ê¥»¥Þ¥Õ¥©€Î»ñž»¿ô€¬1žº€ë
+ *		(F-1) ¥»¥Þ¥Õ¥©€Î»ñž»¿ô€¬1€«€é0€Ë€Ê€ë
+ *		(F-2) ¥»¥Þ¥Õ¥©€Î»ñž»¿ô€¬2€«€é1€Ë€Ê€ë
+ *	(G) wai_sem€Ë€è€ê¥»¥Þ¥Õ¥©ÂÔ€ÁŸõÂÖ€Ë€Ê€ë
+ *		(G-1) TA_TNULLÂ°À­€Î¥»¥Þ¥Õ¥©€Ç¡€ÂÔ€Ã€Æ€€€ë¥¿¥¹¥¯€¬€Ê€«€Ã€¿Ÿì¹ç
+ *		(G-2) TA_TNULLÂ°À­€Î¥»¥Þ¥Õ¥©€Ç¡€ÂÔ€Ã€Æ€€€ë¥¿¥¹¥¯€¬€¢€Ã€¿Ÿì¹ç
+ *		(G-3) TA_TPRIÂ°À­€Î¥»¥Þ¥Õ¥©€Ç¡€ÂÔ€Ã€Æ€€€ë¥¿¥¹¥¯€¬€Ê€«€Ã€¿Ÿì¹ç
+ *		(G-4) TA_TPRIÂ°À­€Î¥»¥Þ¥Õ¥©€Ç¡€Í¥ÀèÅÙ€¬¹â€€¥¿¥¹¥¯€¬ÂÔ€Ã€Æ€€€ëŸì¹ç
+ *		(G-5) TA_TPRIÂ°À­€Î¥»¥Þ¥Õ¥©€Ç¡€Í¥ÀèÅÙ€¬Æ±€ž¥¿¥¹¥¯€¬ÂÔ€Ã€Æ€€€ëŸì¹ç
+ *		(G-6) TA_TPRIÂ°À­€Î¥»¥Þ¥Õ¥©€Ç¡€Í¥ÀèÅÙ€¬Äã€€¥¿¥¹¥¯€¬ÂÔ€Ã€Æ€€€ëŸì¹ç
+ *	(H) ¥»¥Þ¥Õ¥©ÂÔ€ÁŸõÂÖ€¬¶¯À©²òœü€µ€ì€ë
+ *	(I) ¥»¥Þ¥Õ¥©ÂÔ€ÁŸõÂÖ€ÎŽÖ€Ë¥»¥Þ¥Õ¥©€¬œéŽü²œ€µ€ì€ë
+ *	(J) ¥»¥Þ¥Õ¥©€Î»ñž»¿ô€ÎœéŽüÃÍ€¬Àµ€·€¯ÀßÄê€µ€ì€ë
+ *		(J-1) ¥»¥Þ¥Õ¥©€Î»ñž»¿ô€ÎœéŽüÃÍ€¬0
+ *		(J-2) ¥»¥Þ¥Õ¥©€Î»ñž»¿ô€ÎœéŽüÃÍ€¬1
+ *		(J-3) ¥»¥Þ¥Õ¥©€Î»ñž»¿ô€ÎœéŽüÃÍ€¬2
+ *
+ * ¡Ú»ÈÍÑ¥ê¥œ¡Œ¥¹¡Û
+ *
+ *	TASK1: ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡€TA_ACTÂ°À­
+ *	TASK2: ¹âÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	TASK3: ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	TASK4: ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	TASK5: ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	ALM1:  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é
+ *  SEM1:  TA_NULLÂ°À­¡€œéŽü»ñž»¿ô1¡€ºÇÂç»ñž»¿ô1
+ *  SEM2:  TA_NULLÂ°À­¡€œéŽü»ñž»¿ô2¡€ºÇÂç»ñž»¿ô2
+ *  SEM3:  TA_TPRIÂ°À­¡€œéŽü»ñž»¿ô0¡€ºÇÂç»ñž»¿ô1
+ *
+ * ¡Ú¥Æ¥¹¥È¥·¡Œ¥±¥ó¥¹¡Û
+ *
+ *	== TASK1¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë==
+ *  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()
+ *	== TASK3¡ÊÍ¥ÀèÅÙ¡§Äã¡Ë==
+ *	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
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	12:	act_tsk(TASK2)
+ *	== TASK2¡ÊÍ¥ÀèÅÙ¡§¹â¡Ë==
+ *	13:	wai_sem(SEM1)						... (G-2)
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *  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)
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	17:	wai_sem(SEM1)						... (G-1)
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	18: dis_dsp()
+ *	19:	sig_sem(SEM1)						... (B-2)
+ *	20:	ena_dsp()
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	21:	wai_sem(SEM1)						... (G-1)
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	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)
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	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)
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	32:	sig_sem(SEM2)						... (B-1)
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	33:	wai_sem(SEM3)						... (G-3)
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	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:	tslp_tsk(10) -> E_TMOUT
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	40:	wai_sem(SEM3)						... (G-4)
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	41:	act_tsk(TASK4)
+ *	42:	act_tsk(TASK5)
+ *	43:	rot_rdq(TPRI_SELF)
+ *	== TASK4¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë==
+ *	44:	wai_sem(SEM3)						... (G-6)
+ *	== TASK5¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë==
+ *	45:	wai_sem(SEM3)						... (G-5)
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	46:	sig_sem(SEM3)						... (B-1)
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	47:	wai_sem(SEM1)
+ *		wai_sem(SEM1) -> E_RLWAI
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	48:	sig_sem(SEM3)						... (B-4)
+ *	49:	tslp_tsk(10) -> E_TMOUT
+ *	== TASK4¡ÊÂ³€­¡Ë==
+ *	50:	ext_tsk() -> noreturn
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	51:	sig_sem(SEM3)						... (B-4)
+ *	52:	tslp_tsk(10) -> E_TMOUT
+ *	== TASK5¡ÊÂ³€­¡Ë==
+ *	53:	ext_tsk() -> noreturn
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	54:	sig_sem(SEM3)						... (B-4)
+ *	55:	tslp_tsk(10) -> E_TMOUT
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	56:	ext_tsk() -> noreturn
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	57: rel_wai(TASK2)						... (H)
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	58:	wai_sem(SEM1) -> E_DLT
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	59: ini_sem(SEM1)						... (I)
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	60: ext_tsk() -> noreturn
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	61: END
+ */
+
+#include <kernel.h>
+#include <test_lib.h>
+#include <t_syslog.h>
+#include "kernel_cfg.h"
+#include "test_sem1.h"
+
+/* DO NOT DELETE THIS LINE -- gentest depends on it. */
+
+void
+alarm1_handler(intptr_t exinf)
+{
+	ER_UINT	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_UINT	ercd;
+	T_RSEM	rsem;
+
+	test_start(__FILE__);
+
+	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);
+	ercd = tslp_tsk(10);
+	check_ercd(ercd, E_TMOUT);
+
+	check_point(41);
+	ercd = act_tsk(TASK4);
+	check_ercd(ercd, E_OK);
+
+	check_point(42);
+	ercd = act_tsk(TASK5);
+	check_ercd(ercd, E_OK);
+
+	check_point(43);
+	ercd = rot_rdq(TPRI_SELF);
+	check_ercd(ercd, E_OK);
+
+	check_point(46);
+	ercd = sig_sem(SEM3);
+	check_ercd(ercd, E_OK);
+
+	check_point(48);
+	ercd = sig_sem(SEM3);
+	check_ercd(ercd, E_OK);
+
+	check_point(49);
+	ercd = tslp_tsk(10);
+	check_ercd(ercd, E_TMOUT);
+
+	check_point(51);
+	ercd = sig_sem(SEM3);
+	check_ercd(ercd, E_OK);
+
+	check_point(52);
+	ercd = tslp_tsk(10);
+	check_ercd(ercd, E_TMOUT);
+
+	check_point(54);
+	ercd = sig_sem(SEM3);
+	check_ercd(ercd, E_OK);
+
+	check_point(55);
+	ercd = tslp_tsk(10);
+	check_ercd(ercd, E_TMOUT);
+
+	check_point(57);
+	ercd = rel_wai(TASK2);
+	check_ercd(ercd, E_OK);
+
+	check_point(59);
+	ercd = ini_sem(SEM1);
+	check_ercd(ercd, E_OK);
+
+	check_finish(61);
+	check_point(0);
+}
+
+void
+task2(intptr_t exinf)
+{
+	ER_UINT	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(47);
+	ercd = wai_sem(SEM1);
+	check_ercd(ercd, E_OK);
+
+	ercd = wai_sem(SEM1);
+	check_ercd(ercd, E_RLWAI);
+
+	check_point(58);
+	ercd = wai_sem(SEM1);
+	check_ercd(ercd, E_DLT);
+
+	check_point(60);
+	ercd = ext_tsk();
+
+	check_point(0);
+}
+
+void
+task3(intptr_t exinf)
+{
+	ER_UINT	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(40);
+	ercd = wai_sem(SEM3);
+	check_ercd(ercd, E_OK);
+
+	check_point(56);
+	ercd = ext_tsk();
+
+	check_point(0);
+}
+
+void
+task4(intptr_t exinf)
+{
+	ER_UINT	ercd;
+
+	check_point(44);
+	ercd = wai_sem(SEM3);
+	check_ercd(ercd, E_OK);
+
+	check_point(50);
+	ercd = ext_tsk();
+
+	check_point(0);
+}
+
+void
+task5(intptr_t exinf)
+{
+	ER_UINT	ercd;
+
+	check_point(45);
+	ercd = wai_sem(SEM3);
+	check_ercd(ercd, E_OK);
+
+	check_point(53);
+	ercd = ext_tsk();
+
+	check_point(0);
+}
Index: /test/test_sem1.cfg
===================================================================
--- /test/test_sem1.cfg	(revision 7)
+++ /test/test_sem1.cfg	(revision 7)
@@ -0,0 +1,23 @@
+/*
+ *  @(#) $Id$
+ */
+
+/*
+ *  ¥»¥Þ¥Õ¥©µ¡Çœ€Î¥Æ¥¹¥È(1)€Î¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+ */
+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: /test/test_sem1.h
===================================================================
--- /test/test_sem1.h	(revision 7)
+++ /test/test_sem1.h	(revision 7)
@@ -0,0 +1,75 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/* 
+ *		¥»¥Þ¥Õ¥©µ¡Çœ€Î¥Æ¥¹¥È(1)
+ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎÄêµÁ
+ */
+#include "target_test.h"
+
+/*
+ *  Í¥ÀèÅÙ€ÎÄêµÁ
+ */
+#define HIGH_PRIORITY	9		/* ¹âÍ¥ÀèÅÙ */
+#define MID_PRIORITY	10		/* ÃæÍ¥ÀèÅÙ */
+#define LOW_PRIORITY	11		/* ÄãÍ¥ÀèÅÙ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È€Ë°ÍÂž€¹€ë²ÄÇœÀ­€Î€¢€ëÄê¿ô€ÎÄêµÁ
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯¥µ¥€¥º */
+#endif /* STACK_SIZE */
+
+/*
+ *  ŽØ¿ô€Î¥×¥í¥È¥¿¥€¥×ÀëžÀ
+ */
+#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: /test/test_sem2.c
===================================================================
--- /test/test_sem2.c	(revision 7)
+++ /test/test_sem2.c	(revision 7)
@@ -0,0 +1,470 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2008-2013 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$
+ */
+
+/* 
+ *		¥»¥Þ¥Õ¥©µ¡Çœ€Î¥Æ¥¹¥È(2)
+ *
+ * ¡Ú¥Æ¥¹¥È€ÎÌÜÅª¡Û
+ *
+ *  isig_sem€ò¡€sig_sem€È€Î°ã€€€òÃæ¿Ž€Ë¥Æ¥¹¥È€¹€ë¡¥
+ *  pol_sem¡€twai_sem€ò¡€wai_sem€È€Î°ã€€€òÃæ¿Ž€Ë¥Æ¥¹¥È€¹€ë¡¥
+ *
+ * ¡Ú¥Æ¥¹¥È¹àÌÜ¡Û
+ *
+ *	(A) isig_sem€ÎÀÅÅª¥š¥é¡Œ€Î¥Æ¥¹¥È
+ *		(A-1) ¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€«€é€ÎžÆœÐ€·
+ *		(A-2) CPU¥í¥Ã¥¯ŸõÂÖ€«€é€ÎžÆœÐ€·
+ *	(B) isig_sem€Ë€è€ê¥»¥Þ¥Õ¥©ÂÔ€ÁŸõÂÖ€Î¥¿¥¹¥¯€¬ÂÔ€Á²òœü€µ€ì€ë
+ *		(B-1) ¥¢¥€¥É¥ëŸõÂÖ€«€é¡€ÂÔ€Á²òœü€µ€ì€¿¥¿¥¹¥¯€ËÀÚ€êŽ¹€ï€ë
+ *		(B-2) ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€«€é¡€ÂÔ€Á²òœü€µ€ì€¿¥¿¥¹¥¯€ËÀÚ€êŽ¹€ï€ë
+ *		(B-3) ¥Ç¥£¥¹¥Ñ¥Ã¥ÁÊÝÎ±ŸõÂÖ€Ç¡€ÀÚ€êŽ¹€ï€é€Ê€€
+ *		(B-4) ÂÔ€Á²òœü€µ€ì€¿¥¿¥¹¥¯€¬¶¯À©ÂÔ€ÁŸõÂÖ€Ç¡€ÀÚ€êŽ¹€ï€é€Ê€€
+ *		(B-5) ÂÔ€Á²òœü€µ€ì€¿¥¿¥¹¥¯€¬Í¥ÀèÅÙ€¬Äã€¯¡€ÀÚ€êŽ¹€ï€é€Ê€€
+ *	(C) pol_sem€ÎÀÅÅª¥š¥é¡Œ€Î¥Æ¥¹¥È
+ *		(C-1) Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€«€é€ÎžÆœÐ€·
+ *		(C-2) CPU¥í¥Ã¥¯ŸõÂÖ€«€é€ÎžÆœÐ€·
+ *		(C-3) ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ€«€é€ÎžÆœÐ€·¡ÊE_CTX¥š¥é¡Œ€Ë€Ê€é€Ê€€¡Ë
+ *		(C-4) ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœü€Ç€Ê€€ŸõÂÖ€«€é€ÎžÆœÐ€·¡ÊE_CTX¥š¥é¡Œ
+ *		      €Ë€Ê€é€Ê€€¡Ë
+ *	(D) pol_sem€Ç¥Ý¡Œ¥ê¥ó¥°ŒºÇÔ€¹€ë
+ *	(E) twai_sem€ÎÀÅÅª¥š¥é¡Œ€Î¥Æ¥¹¥È
+ *		(E-1) Èó¥¿¥¹¥¯¥³¥ó¥Æ¥­¥¹¥È€«€é€ÎžÆœÐ€·
+ *		(E-2) CPU¥í¥Ã¥¯ŸõÂÖ€«€é€ÎžÆœÐ€·
+ *		(E-3) ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ßŸõÂÖ€«€é€ÎžÆœÐ€·
+ *		(E-4) ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœü€Ç€Ê€€ŸõÂÖ€«€é€ÎžÆœÐ€·
+ *		(E-5) tmout€¬ÉÔÀµ
+ *	(F) twai_sem€Çtmout=TMO_POL€Î»þ€Ë¥Ý¡Œ¥ê¥ó¥°ŒºÇÔ€¹€ë
+ *	(G) twai_sem€Çtmout=TMO_FEVR€Î»þ€Ë¥»¥Þ¥Õ¥©ÂÔ€ÁŸõÂÖ€Ë€Ê€ë
+ *	(H) twai_sem€Çtmout€Ë¥¿¥€¥à¥¢¥Š¥È€òÀßÄê€·€¿»þ€Ë¡€¥¿¥€¥à¥¢¥Š¥ÈÉÕ€­€Î
+ *		¥»¥Þ¥Õ¥©ÂÔ€ÁŸõÂÖ€Ë€Ê€ë
+ *
+ * ¡Ú»ÈÍÑ¥ê¥œ¡Œ¥¹¡Û
+ *
+ *	TASK1: ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡€TA_ACTÂ°À­
+ *	TASK2: ¹âÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	TASK3: ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	TASK4: ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	TASK5: ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	ALM1:  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é
+ *  SEM1:  TA_NULLÂ°À­¡€œéŽü»ñž»¿ô1¡€ºÇÂç»ñž»¿ô1
+ *
+ * ¡Ú¥Æ¥¹¥È¥·¡Œ¥±¥ó¥¹¡Û
+ *
+ *	== TASK1¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë==
+ *  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
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	11:	act_tsk(TASK3)
+ *	12:	wai_sem(SEM1)
+ *	== TASK3¡ÊÍ¥ÀèÅÙ¡§Äã¡Ë==
+ *	13:	sta_alm(ALM1, 10)
+ *		call(wait_var())
+ *	== ALM1-2 ==
+ *	14:	isig_sem(SEM1)						... (B-2)
+ *		call(signal_var())
+ *		RETURN
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	15:	wai_sem(SEM1)
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	16:	sta_alm(ALM1, 10)
+ *		dis_dsp()
+ *		call(wait_var())
+ *	== ALM1-3 ==
+ *	17:	isig_sem(SEM1)						... (B-3)
+ *		call(signal_var())
+ *		RETURN
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	18:	ena_dsp()
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	19:	wai_sem(SEM1)
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	20:	sta_alm(ALM1, 10)
+ *		sus_tsk(TASK1)
+ *		call(wait_var())
+ *	== ALM1-4 ==
+ *	21:	isig_sem(SEM1)						... (B-4)
+ *		call(signal_var())
+ *		RETURN
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	22:	rsm_tsk(TASK1)
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	23:	act_tsk(TASK2)
+ *	== TASK2¡ÊÍ¥ÀèÅÙ¡§¹â¡Ë==
+ *	24:	tslp_tsk(10) -> E_TMOUT
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	25:	wai_sem(SEM1)
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	26:	ext_tsk() -> noreturn
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	27:	sta_alm(ALM1, 10)
+ *		call(wait_var())
+ *	== ALM1-5 ==
+ *	28:	isig_sem(SEM1)						... (B-5)
+ *		call(signal_var())
+ *		RETURN
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	29:	ext_tsk() -> noreturn
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	30:	sta_alm(ALM1, 10)
+ *	31:	twai_sem(SEM1, 100) -> E_RLWAI
+ *	== ALM1-6 ==
+ *	32:	irel_wai(TASK1)
+ *		RETURN
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	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;
+}
+
+/* DO NOT DELETE THIS LINE -- gentest depends on it. */
+
+static uint_t	alarm1_count = 0;
+
+void
+alarm1_handler(intptr_t exinf)
+{
+	ER_UINT	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);
+
+	default:
+		check_point(0);
+	}
+	check_point(0);
+}
+
+void
+task1(intptr_t exinf)
+{
+	ER_UINT	ercd;
+
+	test_start(__FILE__);
+
+	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_UINT	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_UINT	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: /test/test_sem2.cfg
===================================================================
--- /test/test_sem2.cfg	(revision 7)
+++ /test/test_sem2.cfg	(revision 7)
@@ -0,0 +1,20 @@
+/*
+ *  @(#) $Id$
+ */
+
+/*
+ *  ¥»¥Þ¥Õ¥©µ¡Çœ€Î¥Æ¥¹¥È(2)€Î¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+ */
+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: /test/test_sem2.h
===================================================================
--- /test/test_sem2.h	(revision 7)
+++ /test/test_sem2.h	(revision 7)
@@ -0,0 +1,73 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/* 
+ *		¥»¥Þ¥Õ¥©µ¡Çœ€Î¥Æ¥¹¥È(2)
+ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎÄêµÁ
+ */
+#include "target_test.h"
+
+/*
+ *  Í¥ÀèÅÙ€ÎÄêµÁ
+ */
+#define HIGH_PRIORITY	9		/* ¹âÍ¥ÀèÅÙ */
+#define MID_PRIORITY	10		/* ÃæÍ¥ÀèÅÙ */
+#define LOW_PRIORITY	11		/* ÄãÍ¥ÀèÅÙ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È€Ë°ÍÂž€¹€ë²ÄÇœÀ­€Î€¢€ëÄê¿ô€ÎÄêµÁ
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯¥µ¥€¥º */
+#endif /* STACK_SIZE */
+
+/*
+ *  ŽØ¿ô€Î¥×¥í¥È¥¿¥€¥×ÀëžÀ
+ */
+#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: /test/test_sysstat1.c
===================================================================
--- /test/test_sysstat1.c	(revision 7)
+++ /test/test_sysstat1.c	(revision 7)
@@ -0,0 +1,241 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2006-2013 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$
+ */
+
+/* 
+ *		¥·¥¹¥Æ¥àŸõÂÖ€ËŽØ€¹€ë¥Æ¥¹¥È(1)
+ *
+ *  ¥Æ¥¹¥È¥·¡Œ¥±¥ó¥¹¡§
+ *
+ *	== TASK1¡ÊÍ¥ÀèÅÙ¡§10¡Ë==
+ *	1:	œéŽüŸõÂÖ€Î¥Á¥§¥Ã¥¯
+ *	2:	loc_cpu() ... ¥·¥¹¥Æ¥àŸõÂÖ€ò¥é¥ó¥À¥à€ËÊÑ²œ€µ€»€ë
+ *		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() ... ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€òžÆ€ÓœÐ€¹œàÈ÷
+ *		ena_tex()
+ *	11:	ras_tex(TSK_SELF, 0x0001)
+ *	== TASK1¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó¡Ê1²óÌÜ¡Ë==
+ *	12:	œéŽüŸõÂÖ€Î¥Á¥§¥Ã¥¯
+ *	13:	ena_dsp() ... 3€Ä€ÎŸõÂÖ€òÊÑ²œ€µ€»¡€¥ê¥¿¡Œ¥ó€Çžµ€Ë€â€É€ë€«ÄŽ€Ù€ë
+ *		chg_ipm(TMIN_INTPRI)
+ *		ena_tex()
+ *		¥ê¥¿¡Œ¥ó
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	14:	Ìá€Ã€Æ€­€¿ŸõÂÖ€Î¥Á¥§¥Ã¥¯
+ *	15:	loc_cpu() ... CPU¥í¥Ã¥¯ŸõÂÖ€Î€Þ€Þ¥¿¥¹¥¯€òœªÎ»€µ€»€ë
+ *	16:	¥ê¥¿¡Œ¥ó¡Ê¡á¥¿¥¹¥¯œªÎ»¡Ë
+ *	== TASK2¡ÊÍ¥ÀèÅÙ¡§10¡Ë	==
+ *	17:	œéŽüŸõÂÖ€Î¥Á¥§¥Ã¥¯
+ *	18:	œªÎ»
+ */
+
+#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);
+
+		/*
+		 *  ¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²Ä¡€³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÊÑ¹¹¡€¥¿¥¹¥¯Îã³°œèÍýµö²Ä
+		 */
+		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;
+
+	test_start(__FILE__);
+
+	/*
+	 *  œéŽüŸõÂÖ€Î¥Á¥§¥Ã¥¯
+	 */
+	check_point(1);
+	check_state(false, false, TIPM_ENAALL, false, false, true);
+
+	/*
+	 *  CPU¥í¥Ã¥¯ŸõÂÖ€Î¥Á¥§¥Ã¥¯
+	 */
+	check_point(2);
+	ercd = loc_cpu();
+	check_ercd(ercd, E_OK);
+	check_state(false, true, TIPM_ENAALL, false, true, true);
+
+	/*
+	 *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÊÑ¹¹€Î¥Á¥§¥Ã¥¯
+	 */
+	ercd = chg_ipm(TMAX_INTPRI);
+	check_ercd(ercd, E_CTX);
+	check_state(false, true, TIPM_ENAALL, false, true, true);
+
+	/*
+	 *  CPU¥í¥Ã¥¯²òœü€Î¥Á¥§¥Ã¥¯
+	 */
+	check_point(3);
+	ercd = unl_cpu();
+	check_ercd(ercd, E_OK);
+	check_state(false, false, TIPM_ENAALL, false, false, true);
+
+	/*
+	 *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÊÑ¹¹€Î¥Á¥§¥Ã¥¯
+	 */
+	check_point(4);
+	ercd = chg_ipm(TMAX_INTPRI);
+	check_ercd(ercd, E_OK);
+	check_state(false, false, TMAX_INTPRI, false, true, true);
+
+	/*
+	 *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ß€Î¥Á¥§¥Ã¥¯
+	 */
+	check_point(5);
+	ercd = dis_dsp();
+	check_ercd(ercd, E_OK);
+	check_state(false, false, TMAX_INTPRI, true, true, true);
+
+	/*
+	 *  ¥¿¥¹¥¯Îã³°œèÍýµö²Ä€Î¥Á¥§¥Ã¥¯
+	 */
+	check_point(6);
+	ercd = ena_tex();
+	check_ercd(ercd, E_OK);
+	check_state(false, false, TMAX_INTPRI, true, true, false);
+
+	/*
+	 *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœü€Î¥Á¥§¥Ã¥¯
+	 */
+	check_point(7);
+	ercd = chg_ipm(TIPM_ENAALL);
+	check_ercd(ercd, E_OK);
+	check_state(false, false, TIPM_ENAALL, true, true, false);
+
+	/*
+	 *  ¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²Ä€Î¥Á¥§¥Ã¥¯
+	 */
+	check_point(8);
+	ercd = ena_dsp();
+	check_ercd(ercd, E_OK);
+	check_state(false, false, TIPM_ENAALL, false, false, false);
+
+	/*
+	 *  ¥¿¥¹¥¯Îã³°œèÍý¶Ø»ß€Î¥Á¥§¥Ã¥¯
+	 */
+	check_point(9);
+	ercd = dis_tex();
+	check_ercd(ercd, E_OK);
+	check_state(false, false, TIPM_ENAALL, false, false, true);
+
+	/*
+	 *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ß¡€¥¿¥¹¥¯Îã³°œèÍýµö²Ä
+	 */
+	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);
+
+	/*
+	 *  ¥¿¥¹¥¯Îã³°œèÍý€òÍ×µá
+	 */
+	check_point(11);
+	ercd = ras_tex(TSK_SELF, 0x0001);
+	/* €³€³€Ç¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€¬Æ°ºî€¹€ë */
+	check_ercd(ercd, E_OK);
+
+	/*
+	 *  ¥¿¥¹¥¯Îã³°œèÍý€«€é€Î¥ê¥¿¡Œ¥ó€Ë€è€êžµ€ÎŸõÂÖ€ËÌá€Ã€Æ€€€ë€³€È€ò
+	 *  ¥Á¥§¥Ã¥¯
+	 */
+	check_point(14);
+	check_state(false, false, TIPM_ENAALL, true, true, false);
+
+	/*
+	 *  CPU¥í¥Ã¥¯ŸõÂÖ€Ë
+	 */
+	check_point(15);
+	ercd = loc_cpu();
+	check_ercd(ercd, E_OK);
+
+	/*
+	 *  €œ€Î€Þ€Þ¥¿¥¹¥¯œªÎ»
+	 */
+	check_point(16);
+}
+
+void
+task2(intptr_t exinf)
+{
+	/*
+	 *  œéŽüŸõÂÖ€Î¥Á¥§¥Ã¥¯
+	 */
+	check_point(17);
+	check_state(false, false, TIPM_ENAALL, false, false, true);
+
+	check_finish(18);
+}
Index: /test/test_sysstat1.cfg
===================================================================
--- /test/test_sysstat1.cfg	(revision 7)
+++ /test/test_sysstat1.cfg	(revision 7)
@@ -0,0 +1,18 @@
+/*
+ *  @(#) $Id$
+ */
+
+/*
+ *  ¥·¥¹¥Æ¥àŸõÂÖ€ËŽØ€¹€ë¥Æ¥¹¥È(1)€Î¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+ */
+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: /test/test_sysstat1.h
===================================================================
--- /test/test_sysstat1.h	(revision 7)
+++ /test/test_sysstat1.h	(revision 7)
@@ -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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/* 
+ *		¥·¥¹¥Æ¥àŸõÂÖ€ËŽØ€¹€ë¥Æ¥¹¥È(1)
+ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎÄêµÁ
+ */
+#include "target_test.h"
+
+/*
+ *  ³Æ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€ÎÄêµÁ
+ */
+#define TASK1_PRIORITY	10		/* ¥¿¥¹¥¯1€ÎÍ¥ÀèÅÙ */
+#define TASK2_PRIORITY	10		/* ¥¿¥¹¥¯2€ÎÍ¥ÀèÅÙ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È€Ë°ÍÂž€¹€ë²ÄÇœÀ­€Î€¢€ëÄê¿ô€ÎÄêµÁ
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯¥µ¥€¥º */
+#endif /* STACK_SIZE */
+
+/*
+ *  ŽØ¿ô€Î¥×¥í¥È¥¿¥€¥×ÀëžÀ
+ */
+#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: /test/test_task1.c
===================================================================
--- /test/test_task1.c	(revision 7)
+++ /test/test_task1.c	(revision 7)
@@ -0,0 +1,364 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2013 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$
+ */
+
+/* 
+ *		¥¿¥¹¥¯ŽÉÍý¥â¥ž¥å¡Œ¥ë€Î¥Æ¥¹¥È(1)
+ *
+ * ¡Ú¥Æ¥¹¥È€ÎÌÜÅª¡Û
+ *
+ *  make_runnable€Èmake_non_runnable€òÌÖÍåÅª€Ë¥Æ¥¹¥È€¹€ë¡¥
+ *
+ * ¡Ú¥Æ¥¹¥È¹àÌÜ¡Û
+ *
+ *	(A) ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€è€ê€â¹â€€Í¥ÀèÅÙ€Î¥¿¥¹¥¯€òŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ë€¹€ë
+ *		(A-1) ¥Ç¥£¥¹¥Ñ¥Ã¥ÁÊÝÎ±ŸõÂÖ€Ç€Ï€Ê€€Ÿì¹ç
+ *		(A-2) ¥Ç¥£¥¹¥Ñ¥Ã¥ÁÊÝÎ±ŸõÂÖ€ÎŸì¹ç
+ *	(B) ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€ÈÆ±€žÍ¥ÀèÅÙ€Î¥¿¥¹¥¯€òŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ë€¹€ë
+ *		¡ªÆ±€žÍ¥ÀèÅÙ€Î¥¿¥¹¥¯€ÎÃæ€ÎËöÈø€ËÆþ€ë€³€È€ò³ÎÇ§€¹€ë
+ *	(C) ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€è€ê€âÄã€€Í¥ÀèÅÙ€Î¥¿¥¹¥¯€òŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ë€¹€ë
+ *		¡ªÆ±€žÍ¥ÀèÅÙ€Î¥¿¥¹¥¯€ÎÃæ€ÎËöÈø€ËÆþ€ë€³€È€ò³ÎÇ§€¹€ë
+ *	(D) ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Î¥¿¥¹¥¯€¬€Ê€€ŸõÂÖ€Ç¡€¥¿¥¹¥¯€òŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ë€¹€ë
+ *		¡ª€³€ÎŸì¹ç€Ï¡€¥Ç¥£¥¹¥Ñ¥Ã¥ÁÊÝÎ±ŸõÂÖ€Ç€Ï€Ê€€
+ *	(E) ¥Ç¥£¥¹¥Ñ¥Ã¥ÁÊÝÎ±ŸõÂÖ€Ç¡€ŒÂ¹ÔŸõÂÖ€Ë€Ê€ë€Ù€­€À€¬ŒÂ¹Ô²ÄÇœŸõÂÖ¥¿¥¹
+ *		¥¯€è€ê€â¹â€€Í¥ÀèÅÙ€Î¥¿¥¹¥¯€ò¡€ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ë€¹€ë
+ *	(F) ¥Ç¥£¥¹¥Ñ¥Ã¥ÁÊÝÎ±ŸõÂÖ€Ç¡€ŒÂ¹ÔŸõÂÖ€Ë€Ê€ë€Ù€­€À€¬ŒÂ¹Ô²ÄÇœŸõÂÖ¥¿¥¹
+ *		¥¯€ÈÆ±€žÍ¥ÀèÅÙ€Î¥¿¥¹¥¯€ò¡€ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ë€¹€ë
+ *	(G) ¥Ç¥£¥¹¥Ñ¥Ã¥ÁÊÝÎ±ŸõÂÖ€Ç¡€ŒÂ¹ÔŸõÂÖ€Ë€Ê€ë€Ù€­€À€¬ŒÂ¹Ô²ÄÇœŸõÂÖ¥¿¥¹
+ *		¥¯€è€ê€âÄã€€Í¥ÀèÅÙ€Î¥¿¥¹¥¯€ò¡€ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ë€¹€ë
+ *	(H) ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€ò¡€ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ç€Ê€¯€¹
+ *		(H-1) ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Î¥¿¥¹¥¯€¬€Ê€¯€Ê€ëŸì¹ç
+ *		(H-2) Æ±°ìÍ¥ÀèÅÙ€Î¥¿¥¹¥¯€¬€Ê€¯€Ê€ëŸì¹ç
+ *		(H-3) Æ±°ìÍ¥ÀèÅÙ€Î¥¿¥¹¥¯€¬€Ê€¯€Ê€é€Ê€€Ÿì¹ç
+ *	(I) ŒÂ¹Ô²ÄÇœŸõÂÖ€Î¥¿¥¹¥¯€ò¡€ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ç€Ê€¯€¹
+ *		(I-1) Æ±°ìÍ¥ÀèÅÙ€Î¥¿¥¹¥¯€¬€Ê€¯€Ê€ëŸì¹ç
+ *		(I-2) Æ±°ìÍ¥ÀèÅÙ€Î¥¿¥¹¥¯€¬€Ê€¯€Ê€é€Ê€€Ÿì¹ç
+ *	(J) ¥Ç¥£¥¹¥Ñ¥Ã¥ÁÊÝÎ±ŸõÂÖ€Ç¡€ŒÂ¹ÔŸõÂÖ€Ë€Ê€ë€Ù€­€À€¬ŒÂ¹Ô²ÄÇœŸõÂÖ€È€Ê€Ã
+ *		€Æ€€€ë¥¿¥¹¥¯€ò¡€ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ç€Ê€¯€¹
+ *		(J-1) Æ±°ìÍ¥ÀèÅÙ€Î¥¿¥¹¥¯€¬€Ê€¯€Ê€ëŸì¹ç
+ *		(J-2) Æ±°ìÍ¥ÀèÅÙ€Î¥¿¥¹¥¯€¬€Ê€¯€Ê€é€Ê€€Ÿì¹ç
+ *	(K) ¥Ç¥£¥¹¥Ñ¥Ã¥ÁÊÝÎ±ŸõÂÖ€Ç¡€ŒÂ¹Ô²ÄÇœŸõÂÖ€Ë€Ê€ë€Ù€­€À€¬ŒÂ¹ÔŸõÂÖ€Î¥¿
+ *		¥¹¥¯€ò¡€ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ç€Ê€¯€¹
+ *		¡ª¥Ç¥£¥¹¥Ñ¥Ã¥ÁÊÝÎ±€Ç€Ï¡€ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂÖ€Ç€Ê€¯
+ *		€Ê€ë€è€Š€ÊÁ«°Ü€òµ¯€³€¹€³€È€¬€Ç€­€Ê€€€¿€á¡€€³€ÎŸõ¶·€Ïµ¯€³€é€Ê€€¡¥
+ *
+ * ¡Ú»ÈÍÑ¥ê¥œ¡Œ¥¹¡Û
+ *
+ *	TASK1: ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡€¥á¥€¥ó¥¿¥¹¥¯¡€ºÇœé€«€éµ¯Æ°
+ *	TASK2: ¹âÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	TASK3: ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	TASK4: ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	TASK5: ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	TASK6: ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯
+ *	ALM1:  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é
+ *
+ * ¡Ú¥Æ¥¹¥È¥·¡Œ¥±¥ó¥¹¡Û
+ *
+ *	== TASK1¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë==
+ *	1:	act_tsk(TASK2)					... (A-1)
+ *	== TASK2¡ÊÍ¥ÀèÅÙ¡§¹â¡Ë==
+ *	2:	slp_tsk()						... (H-2)
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	3:	act_tsk(TASK3)					... (B)
+ *	4:	act_tsk(TASK4)					... (B)
+ *	5:	slp_tsk()						... (H-3)
+ *	== TASK3¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë==
+ *	6:	slp_tsk()						... (H-3)
+ *	== TASK4¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë==
+ *	7:	wup_tsk(TASK1)
+ *	8:	slp_tsk()						... (H-3)
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	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)
+ *	== TASK5¡ÊÍ¥ÀèÅÙ¡§Äã¡Ë==
+ *	16:	slp_tsk()						... (H-3)
+ *	== TASK6¡ÊÍ¥ÀèÅÙ¡§Äã¡Ë==
+ *	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()
+ *	== TASK3¡ÊÂ³€­¡Ë==
+ *	25:	slp_tsk()						... (H-3)
+ *	== TASK4¡ÊÂ³€­¡Ë==
+ *	26:	slp_tsk()						... (H-2)
+ *	== TASK6¡ÊÂ³€­¡Ë==
+ *	27:	dis_dsp()
+ *	28:	rsm_tsk(TASK1)					... (A-2)
+ *	29:	wup_tsk(TASK5)					... (G)
+ *	30:	ena_dsp()
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	31:	slp_tsk()						... (H-2)
+ *	== TASK6¡ÊÂ³€­¡Ë==
+ *	32:	slp_tsk()						... (H-3)
+ *	== TASK5¡ÊÂ³€­¡Ë==
+ *	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
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	38: END
+ */
+
+#include <kernel.h>
+#include <test_lib.h>
+#include <t_syslog.h>
+#include "kernel_cfg.h"
+#include "test_task1.h"
+
+/* DO NOT DELETE THIS LINE -- gentest depends on it. */
+
+void
+alarm1_handler(intptr_t exinf)
+{
+	ID		tskid;
+	ER_UINT	ercd;
+
+	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_UINT	ercd;
+
+	test_start(__FILE__);
+
+	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_UINT	ercd;
+
+	check_point(2);
+	ercd = slp_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(0);
+}
+
+void
+task3(intptr_t exinf)
+{
+	ER_UINT	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_UINT	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_UINT	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_UINT	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: /test/test_task1.cfg
===================================================================
--- /test/test_task1.cfg	(revision 7)
+++ /test/test_task1.cfg	(revision 7)
@@ -0,0 +1,21 @@
+/*
+ *  @(#) $Id$
+ */
+
+/*
+ *  ¥¿¥¹¥¯ŽÉÍý¥â¥ž¥å¡Œ¥ë€Î¥Æ¥¹¥È(1)€Î¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+ */
+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: /test/test_task1.h
===================================================================
--- /test/test_task1.h	(revision 7)
+++ /test/test_task1.h	(revision 7)
@@ -0,0 +1,76 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/* 
+ *		¥¿¥¹¥¯ŽÉÍý¥â¥ž¥å¡Œ¥ë€Î¥Æ¥¹¥È(1)
+ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎÄêµÁ
+ */
+#include "target_test.h"
+
+/*
+ *  Í¥ÀèÅÙ€ÎÄêµÁ
+ */
+#define HIGH_PRIORITY	4		/* ¹âÍ¥ÀèÅÙ */
+#define MID_PRIORITY	9		/* ÃæÍ¥ÀèÅÙ */
+#define LOW_PRIORITY	14		/* ÄãÍ¥ÀèÅÙ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È€Ë°ÍÂž€¹€ë²ÄÇœÀ­€Î€¢€ëÄê¿ô€ÎÄêµÁ
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯¥µ¥€¥º */
+#endif /* STACK_SIZE */
+
+/*
+ *  ŽØ¿ô€Î¥×¥í¥È¥¿¥€¥×ÀëžÀ
+ */
+#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: /test/test_tex1.c
===================================================================
--- /test/test_tex1.c	(revision 7)
+++ /test/test_tex1.c	(revision 7)
@@ -0,0 +1,567 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2006-2013 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$
+ */
+
+/* 
+ *		¥¿¥¹¥¯Îã³°œèÍý€ËŽØ€¹€ë¥Æ¥¹¥È(1)
+ *
+ * ¡Ú¥Æ¥¹¥È€ÎÌÜÅª¡Û
+ *
+ *  ¥¿¥¹¥¯€«€é¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€òµ¯Æ°€¹€ëœèÍý€òÌÖÍåÅª€Ë¥Æ¥¹¥È€¹€ë¡¥
+ *
+ * ¡Ú¥Æ¥¹¥È¹àÌÜ¡Û
+ *
+ *	(A) ras_tex€Î¥š¥é¡Œž¡œÐ
+ *		(A-1) ÂÐŸÝ¥¿¥¹¥¯€¬µÙ»ßŸõÂÖ¡ÎNGKI1413¡Ï
+ *		(A-2) ÂÐŸÝ¥¿¥¹¥¯€Î¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€¬ÄêµÁ€µ€ì€Æ€€€Ê€€¡ÎNGKI1414¡Ï
+ *	(B) dis_tex€Î¥š¥é¡Œž¡œÐ
+ *		(B-1) Œ«¥¿¥¹¥¯€Î¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€¬ÄêµÁ€µ€ì€Æ€€€Ê€€¡ÎNGKI1421¡Ï
+ *	(C) ena_tex€Î¥š¥é¡Œž¡œÐ
+ *		(C-1) Œ«¥¿¥¹¥¯€Î¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€¬ÄêµÁ€µ€ì€Æ€€€Ê€€¡ÎNGKI1426¡Ï
+ *	(D) ref_tex€Î¥š¥é¡Œž¡œÐ
+ *		(D-1) ÂÐŸÝ¥¿¥¹¥¯€¬µÙ»ßŸõÂÖ¡ÎNGKI1439¡Ï
+ *		(D-2) ÂÐŸÝ¥¿¥¹¥¯€Î¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€¬ÄêµÁ€µ€ì€Æ€€€Ê€€¡ÎNGKI1440¡Ï
+ *	(E) ras_tex€ÎÀµŸïœèÍý¡ÎNGKI1415¡Ï
+ *		(E-1) ÂÐŸÝ¥¿¥¹¥¯€¬Œ«¥¿¥¹¥¯¡€¥¿¥¹¥¯Îã³°œèÍýµö²Ä¡€€«€Ä³ä¹þ€ßÍ¥Àè
+ *			  ÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõÂÖ€Ç¡€€¹€°€ËŒÂ¹Ô³«»Ï
+ *		(E-2) ÂÐŸÝ¥¿¥¹¥¯€¬Œ«¥¿¥¹¥¯€Ç€Ê€€
+ *		(E-3) ÂÐŸÝ¥¿¥¹¥¯€¬Œ«¥¿¥¹¥¯€À€¬¡€¥¿¥¹¥¯Îã³°œèÍý¶Ø»ß
+ *		(E-4) ÂÐŸÝ¥¿¥¹¥¯€¬Œ«¥¿¥¹¥¯€Ç¥¿¥¹¥¯Îã³°œèÍýµö²Ä€À€¬¡€³ä¹þ€ßÍ¥Àè
+ *			  ÅÙ¥Þ¥¹¥¯€¬ÁŽ²òœü€Ç€Ê€€
+ *	(F) ena_tex€ÎÀµŸïœèÍý¡ÎNGKI1427¡Ï
+ *		(F-1) ¥¿¥¹¥¯Îã³°œèÍýÍ×µá€¬€¢€ê¡€€«€Ä³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯ÁŽ²òœüŸõ
+ *			  ÂÖ€Ç¡€€¹€°€ËŒÂ¹Ô³«»Ï
+ *		(F-2) ¥¿¥¹¥¯Îã³°œèÍýÍ×µá€¬€Ê€€
+ *		(F-3) ¥¿¥¹¥¯Îã³°œèÍýÍ×µá€¬€¢€ë€¬¡€³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€¬ÁŽ²òœü€Ç
+ *			  €Ê€€
+ *	(G) chg_ipm€ÎÀµŸïœèÍý
+ *		(G-1) ¥¿¥¹¥¯Îã³°œèÍýÍ×µá€¬€¢€ê¡€€«€Ä¥¿¥¹¥¯Îã³°œèÍýµö²Ä€Ç¡€€¹€°
+ *			  €ËŒÂ¹Ô³«»Ï
+ *		(G-2) ¥¿¥¹¥¯Îã³°œèÍýÍ×µá€¬€Ê€€
+ *		(G-3) ¥¿¥¹¥¯Îã³°œèÍýÍ×µá€¬€¢€ë€¬¡€¥¿¥¹¥¯Îã³°œèÍý¶Ø»ß
+ *		(G-4) ¥¿¥¹¥¯Îã³°œèÍýÍ×µá€¬€¢€ë€¬¡€³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯€¬ÁŽ²òœü€Ç
+ *			  €Ê€€
+ *	(H) ¥¿¥¹¥¯¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã€Ë€è€ëµ¯Æ°
+ *		(H-1) ¥Ç¥£¥¹¥Ñ¥Ã¥Ážå€Î¥¿¥¹¥¯€¬¥¿¥¹¥¯Îã³°µö²Ä€Ç¥¿¥¹¥¯Îã³°œèÍýÍ×
+ *			  µá€¢€ê
+ *	(I) ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€«€é€Î¥ê¥¿¡Œ¥ó€Ë€è€ëµ¯Æ°¡ÊÏ¢Â³µ¯Æ°¡Ë
+ *	(J) ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€«€é€ÎÌá€ê»þ€Ë€è€ëŸõÂÖÉüµ¢
+ *		(J-1) ¥¿¥¹¥¯€ËÌá€Ã€Æ€¯€ë»þ
+ *		(J-2) ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€¬Ï¢Â³µ¯Æ°€µ€ì€ë»þ
+ *	(K) ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎÂ¿œÅµ¯Æ°
+ *	(L) ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€«€é€ÎÌá€ê»þ€Î¥¿¥¹¥¯ÀÚŽ¹€š
+ *
+ * ¡Ú»ÈÍÑ¥ê¥œ¡Œ¥¹¡Û
+ *
+ *	TASK1: ¥á¥€¥ó€Î¥¿¥¹¥¯¡¥Œ«¥¿¥¹¥¯€ËÂÐ€·€Æ¥¿¥¹¥¯Îã³°œèÍý€òÍ×µá€¹€ë
+ *	TASK2: ÂŸ¥¿¥¹¥¯€ËÂÐ€·€Æ¥¿¥¹¥¯Îã³°œèÍý€òÍ×µá€¹€ëÂÐŸÝ¥¿¥¹¥¯
+ *	TASK3: ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€¬ÄêµÁ€µ€ì€Æ€€€Ê€€¥¿¥¹¥¯
+ *	TASK4: µÙ»ßŸõÂÖ€Î¥¿¥¹¥¯
+ *
+ * ¡Ú¥Æ¥¹¥È¥·¡Œ¥±¥ó¥¹¡Û
+ *
+ *	== TASK1¡ÊÍ¥ÀèÅÙ¡§10¡Ë==
+ *	1:	state(false, false, TIPM_ENAALL, false, false, true)
+ *		ref_tex(TSK_SELF, &rtex)
+ *		assert((rtex.texstat & TTEX_DIS) != 0U)
+ *		assert(rtex.pndptn == 0U)
+ *		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)
+ *		state(false, false, TIPM_ENAALL, false, false, false)
+ *		ref_tex(TSK_SELF, &rtex)
+ *		assert((rtex.texstat & TTEX_ENA) != 0U)
+ *		assert(rtex.pndptn == 0U)
+ *	3:	ras_tex(TSK_SELF, 0x0001)			... (E-1)
+ *	== TASK1-TEX-1¡Ê1²óÌÜ¡Ë==
+ *	4:	assert(texptn == 0x0001)
+ *		state(false, false, TIPM_ENAALL, false, false, true)
+ *	5:	dis_dsp() ... 4€Ä€ÎŸõÂÖ€ò€œ€ì€Ÿ€ìÊÑ²œ€µ€»€ë
+ *		chg_ipm(TMAX_INTPRI)
+ *		ena_tex()
+ *		loc_cpu()
+ *		state(false, true, TMAX_INTPRI, true, true, false)
+ *		RETURN
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	6:	state(false, false, TIPM_ENAALL, false, false, false)	... (J-1)
+ *	7:	dis_dsp() ... ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ß¡€¥¿¥¹¥¯Îã³°œèÍý¶Ø»ß
+ *		dis_tex()
+ *		state(false, false, TIPM_ENAALL, true, true, true)
+ *	8:	ras_tex(TASK1, 0x0002)				... (E-3)
+ *		ref_tex(TSK_SELF, &rtex)
+ *		assert((rtex.texstat & TTEX_DIS) != 0)
+ *		assert(rtex.pndptn == 0x0002)
+ *	9:	ena_tex()							... (F-1)
+ *	== TASK1-TEX-2¡Ê2²óÌÜ¡Ë==
+ *	10:	assert(texptn == 0x0002)
+ *		state(false, false, TIPM_ENAALL, true, true, true)
+ *	11:	ras_tex(TASK1, 0x0001)				... (E-3)
+ *		ras_tex(TASK1, 0x0002)				... (E-3)
+ *	12:	ena_dsp() ... 3€Ä€ÎŸõÂÖ€ò€œ€ì€Ÿ€ìÊÑ²œ€µ€»€ë
+ *		chg_ipm(TMAX_INTPRI)
+ *		loc_cpu()
+ *		state(false, true, TMAX_INTPRI, false, true, true)
+ *		RETURN								... (I)
+ *	== TASK1-TEX-3¡Ê3²óÌÜ¡Ë==
+ *	13:	assert(texptn == 0x0003)
+ *		state(false, false, TIPM_ENAALL, true, true, true)	... (J-2)
+ *	14:	ena_dsp() ... ¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²Ä¡€¥¿¥¹¥¯Îã³°µö²Ä
+ *		chg_ipm(TMAX_INTPRI)
+ *		ena_tex()
+ *		state(false, false, TMAX_INTPRI, false, true, false)
+ *		chg_ipm(TIPM_ENAALL)				... (G-2)
+ *		chg_ipm(TMAX_INTPRI)
+ *	15: ras_tex(TSK_SELF, 0x0004)			... (E-4)
+ *		chg_ipm(TMAX_INTPRI)				... (G-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-TEX-4¡Ê4²óÌÜ¡Ë==
+ *	17:	assert(texptn == 0x0004)
+ *		state(false, false, TIPM_ENAALL, false, false, true)
+ *	18:	dis_dsp() ... 3€Ä€ÎŸõÂÖ€ò€œ€ì€Ÿ€ìÊÑ²œ€µ€»€ë
+ *		chg_ipm(TMAX_INTPRI)
+ *		loc_cpu()
+ *		state(false, true, TMAX_INTPRI, true, true, true)
+ *		RETURN
+ *	== TASK1-TEX-3¡Ê3²óÌÜÂ³€­¡Ë==
+ *	19:	state(false, false, TIPM_ENAALL, false, false, false)
+ *		RETURN
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	20:	state(false, false, TIPM_ENAALL, true, true, false)	... (J-1)
+ *	21: ena_dsp()
+ *		rot_rdq(TPRI_SELF)
+ *	== TASK2¡ÊÍ¥ÀèÅÙ¡§10¡Ë	==
+ *	22:	state(false, false, TIPM_ENAALL, false, false, true)
+ *	23:	ena_tex()
+ *		state(false, false, TIPM_ENAALL, false, false, false)
+ *		rot_rdq(TPRI_SELF)
+ *	== TASK3¡ÊÍ¥ÀèÅÙ¡§10¡Ë	==
+ *	24:	state(false, false, TIPM_ENAALL, false, false, true)
+ *	25:	ena_tex() -> E_OBJ					... (C-1)
+ *		state(false, false, TIPM_ENAALL, false, false, true)
+ *	26:	dis_tex() -> E_OBJ					... (B-1)
+ *		state(false, false, TIPM_ENAALL, false, false, true)
+ *		ext_tsk()
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	27: ras_tex(TASK2, 0x0001)				... (E-2)
+ *		ref_tex(TASK2, &rtex)
+ *	28:	rot_rdq(TPRI_SELF)					... (H-1)
+ *	== TASK2-TEX-1¡Ê1²óÌÜ¡Ë==
+ *	29:	assert(texptn == 0x0001)
+ *		state(false, false, TIPM_ENAALL, false, false, true)
+ *		RETURN
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	30: ras_tex(TSK_SELF, 0x0002)
+ *	== TASK2-TEX-2¡Ê2²óÌÜ¡Ë==
+ *	31:	assert(texptn == 0x0002)
+ *		state(false, false, TIPM_ENAALL, false, false, true)
+ *	32:	dis_dsp()
+ *		rot_rdq(TPRI_SELF)
+ *	33:	RETURN
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	34:	RETURN
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	35:	END
+ */
+
+#include <kernel.h>
+#include <test_lib.h>
+#include <t_syslog.h>
+#include "kernel_cfg.h"
+#include "test_tex1.h"
+
+/*
+ *  task4€Ètex_task4€ÏÀžÀ®€µ€ì€Ê€€
+ */
+
+void
+task4(intptr_t exinf)
+{
+	check_point(0);
+}
+
+void
+tex_task4(TEXPTN texptn, intptr_t exinf)
+{
+	check_point(0);
+}
+
+/* DO NOT DELETE THIS LINE -- gentest depends on it. */
+
+void
+task1(intptr_t exinf)
+{
+	ER_UINT	ercd;
+	T_RTEX	rtex;
+
+	test_start(__FILE__);
+
+	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) != 0U);
+
+	check_assert(rtex.pndptn == 0U);
+
+	ercd = ras_tex(TASK3, 0x0001);
+	check_ercd(ercd, E_OBJ);
+
+	ercd = ras_tex(TASK4, 0x0001);
+	check_ercd(ercd, E_OBJ);
+
+	ercd = ref_tex(TASK3, &rtex);
+	check_ercd(ercd, E_OBJ);
+
+	ercd = ref_tex(TASK4, &rtex);
+	check_ercd(ercd, E_OBJ);
+
+	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) != 0U);
+
+	check_assert(rtex.pndptn == 0U);
+
+	check_point(3);
+	ercd = ras_tex(TSK_SELF, 0x0001);
+	check_ercd(ercd, E_OK);
+
+	check_point(6);
+	check_state(false, false, TIPM_ENAALL, false, false, false);
+
+	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);
+
+	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);
+
+	check_point(9);
+	ercd = ena_tex();
+	check_ercd(ercd, E_OK);
+
+	check_point(20);
+	check_state(false, false, TIPM_ENAALL, true, true, false);
+
+	check_point(21);
+	ercd = ena_dsp();
+	check_ercd(ercd, E_OK);
+
+	ercd = rot_rdq(TPRI_SELF);
+	check_ercd(ercd, E_OK);
+
+	check_point(27);
+	ercd = ras_tex(TASK2, 0x0001);
+	check_ercd(ercd, E_OK);
+
+	ercd = ref_tex(TASK2, &rtex);
+	check_ercd(ercd, E_OK);
+
+	check_point(28);
+	ercd = rot_rdq(TPRI_SELF);
+	check_ercd(ercd, E_OK);
+
+	check_point(34);
+	return;
+
+	check_point(0);
+}
+
+static uint_t	tex_task1_count = 0;
+
+void
+tex_task1(TEXPTN texptn, intptr_t exinf)
+{
+	ER_UINT	ercd;
+
+	switch (++tex_task1_count) {
+	case 1:
+		check_point(4);
+		check_assert(texptn == 0x0001);
+
+		check_state(false, false, TIPM_ENAALL, false, false, true);
+
+		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);
+
+		return;
+
+		check_point(0);
+
+	case 2:
+		check_point(10);
+		check_assert(texptn == 0x0002);
+
+		check_state(false, false, TIPM_ENAALL, true, true, true);
+
+		check_point(11);
+		ercd = ras_tex(TASK1, 0x0001);
+		check_ercd(ercd, E_OK);
+
+		ercd = ras_tex(TASK1, 0x0002);
+		check_ercd(ercd, E_OK);
+
+		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);
+
+		return;
+
+		check_point(0);
+
+	case 3:
+		check_point(13);
+		check_assert(texptn == 0x0003);
+
+		check_state(false, false, TIPM_ENAALL, true, true, true);
+
+		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);
+
+		check_point(15);
+		ercd = ras_tex(TSK_SELF, 0x0004);
+		check_ercd(ercd, E_OK);
+
+		ercd = chg_ipm(TMAX_INTPRI);
+		check_ercd(ercd, E_OK);
+
+		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);
+		check_ercd(ercd, E_OK);
+
+		check_point(19);
+		check_state(false, false, TIPM_ENAALL, false, false, false);
+
+		return;
+
+		check_point(0);
+
+	case 4:
+		check_point(17);
+		check_assert(texptn == 0x0004);
+
+		check_state(false, false, TIPM_ENAALL, false, false, true);
+
+		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);
+
+		return;
+
+		check_point(0);
+
+	default:
+		check_point(0);
+	}
+	check_point(0);
+}
+
+void
+task2(intptr_t exinf)
+{
+	ER_UINT	ercd;
+
+	check_point(22);
+	check_state(false, false, TIPM_ENAALL, false, false, true);
+
+	check_point(23);
+	ercd = ena_tex();
+	check_ercd(ercd, E_OK);
+
+	check_state(false, false, TIPM_ENAALL, false, false, false);
+
+	ercd = rot_rdq(TPRI_SELF);
+	check_ercd(ercd, E_OK);
+
+	check_point(30);
+	ercd = ras_tex(TSK_SELF, 0x0002);
+	check_ercd(ercd, E_OK);
+
+	check_finish(35);
+	check_point(0);
+}
+
+static uint_t	tex_task2_count = 0;
+
+void
+tex_task2(TEXPTN texptn, intptr_t exinf)
+{
+	ER_UINT	ercd;
+
+	switch (++tex_task2_count) {
+	case 1:
+		check_point(29);
+		check_assert(texptn == 0x0001);
+
+		check_state(false, false, TIPM_ENAALL, false, false, true);
+
+		return;
+
+		check_point(0);
+
+	case 2:
+		check_point(31);
+		check_assert(texptn == 0x0002);
+
+		check_state(false, false, TIPM_ENAALL, false, false, true);
+
+		check_point(32);
+		ercd = dis_dsp();
+		check_ercd(ercd, E_OK);
+
+		ercd = rot_rdq(TPRI_SELF);
+		check_ercd(ercd, E_OK);
+
+		check_point(33);
+		return;
+
+		check_point(0);
+
+	default:
+		check_point(0);
+	}
+	check_point(0);
+}
+
+void
+task3(intptr_t exinf)
+{
+	ER_UINT	ercd;
+
+	check_point(24);
+	check_state(false, false, TIPM_ENAALL, false, false, true);
+
+	check_point(25);
+	ercd = ena_tex();
+	check_ercd(ercd, E_OBJ);
+
+	check_state(false, false, TIPM_ENAALL, false, false, true);
+
+	check_point(26);
+	ercd = dis_tex();
+	check_ercd(ercd, E_OBJ);
+
+	check_state(false, false, TIPM_ENAALL, false, false, true);
+
+	ercd = ext_tsk();
+	check_ercd(ercd, E_OK);
+
+	check_point(0);
+}
Index: /test/test_tex1.cfg
===================================================================
--- /test/test_tex1.cfg	(revision 7)
+++ /test/test_tex1.cfg	(revision 7)
@@ -0,0 +1,24 @@
+/*
+ *  @(#) $Id$
+ */
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý€ËŽØ€¹€ë¥Æ¥¹¥È(1)€Î¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+ */
+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: /test/test_tex1.h
===================================================================
--- /test/test_tex1.h	(revision 7)
+++ /test/test_tex1.h	(revision 7)
@@ -0,0 +1,80 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/* 
+ *		¥¿¥¹¥¯Îã³°œèÍý€ËŽØ€¹€ë¥Æ¥¹¥È(1)
+ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎÄêµÁ
+ */
+#include "target_test.h"
+
+/*
+ *  ³Æ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€ÎÄêµÁ
+ */
+#define TASK1_PRIORITY	10		/* ¥¿¥¹¥¯1€ÎÍ¥ÀèÅÙ */
+#define TASK2_PRIORITY	10		/* ¥¿¥¹¥¯2€ÎÍ¥ÀèÅÙ */
+#define TASK3_PRIORITY	10		/* ¥¿¥¹¥¯3€ÎÍ¥ÀèÅÙ */
+#define TASK4_PRIORITY	10		/* ¥¿¥¹¥¯4€ÎÍ¥ÀèÅÙ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È€Ë°ÍÂž€¹€ë²ÄÇœÀ­€Î€¢€ëÄê¿ô€ÎÄêµÁ
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯¥µ¥€¥º */
+#endif /* STACK_SIZE */
+
+/*
+ *  ŽØ¿ô€Î¥×¥í¥È¥¿¥€¥×ÀëžÀ
+ */
+#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: /test/test_tex2.c
===================================================================
--- /test/test_tex2.c	(revision 7)
+++ /test/test_tex2.c	(revision 7)
@@ -0,0 +1,479 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2007-2013 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$
+ */
+
+/* 
+ *		¥¿¥¹¥¯Îã³°œèÍý€ËŽØ€¹€ë¥Æ¥¹¥È(2)
+ *
+ * ¡Ú¥Æ¥¹¥È€ÎÌÜÅª¡Û
+ *
+ *  ³ä¹þ€ß¥Ï¥ó¥É¥é¡Ê¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é¡Ë€ª€è€ÓCPUÎã³°¥Ï¥ó¥É¥é€«€é¥¿¥¹¥¯Îã
+ *  ³°œèÍý¥ë¡Œ¥Á¥ó€òµ¯Æ°€¹€ëœèÍý€òÌÖÍåÅª€Ë¥Æ¥¹¥È€¹€ë¡¥
+ *
+ * ¡Ú¥Æ¥¹¥È¹àÌÜ¡Û
+ *
+ *	(A) iras_tex€Î¥š¥é¡Œž¡œÐ
+ *		(A-1) ÂÐŸÝ¥¿¥¹¥¯€¬µÙ»ßŸõÂÖ
+ *		(A-2) ÂÐŸÝ¥¿¥¹¥¯€Î¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€¬ÄêµÁ€µ€ì€Æ€€€Ê€€
+ *	(B) ³ä¹þ€ß¥Ï¥ó¥É¥é€«€éžÆ€Ð€ì€¿iras_tex€ÎÀµŸïœèÍý
+ *		(B-1) ÂÐŸÝ¥¿¥¹¥¯€¬ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€«€Ä¥¿¥¹¥¯Îã³°œèÍýµö²Ä
+ *		(B-2) ÂÐŸÝ¥¿¥¹¥¯€¬ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€Ç€Ê€€
+ *		(B-3) ÂÐŸÝ¥¿¥¹¥¯€¬ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€À€¬¥¿¥¹¥¯Îã³°œèÍý¶Ø»ß
+ *	(C) CPUÎã³°¥Ï¥ó¥É¥é€«€éžÆ€Ð€ì€¿iras_tex€ÎÀµŸïœèÍý
+ *		(C-1) ÂÐŸÝ¥¿¥¹¥¯€¬ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€«€Ä¥¿¥¹¥¯Îã³°œèÍýµö²Ä
+ *		(C-2) ÂÐŸÝ¥¿¥¹¥¯€¬ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€Ç€Ê€€
+ *		(C-3) ÂÐŸÝ¥¿¥¹¥¯€¬ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€À€¬¥¿¥¹¥¯Îã³°œèÍý¶Ø»ß
+ *				¢ª ŒÂ»Ü€·€Ê€€¡Ê¥¿¡Œ¥²¥Ã¥ÈÈó°ÍÂž€ËŒÂžœ€Ç€­€Ê€€¡Ë
+ *	(D) ³ä¹þ€ß¥Ï¥ó¥É¥é€ÎœÐžýœèÍý€Ë€è€ëµ¯Æ°
+ *		(D-1) ¥Ç¥£¥¹¥Ñ¥Ã¥Ážå€Î¥¿¥¹¥¯€¬¥¿¥¹¥¯Îã³°µö²Ä€Ç¥¿¥¹¥¯Îã³°œèÍýÍ×
+ *			  µá€¢€ê
+ *	(E) CPUÎã³°¥Ï¥ó¥É¥é€ÎœÐžýœèÍý€Ë€è€ëµ¯Æ°
+ *		(E-1) ¥Ç¥£¥¹¥Ñ¥Ã¥Ážå€Î¥¿¥¹¥¯€¬¥¿¥¹¥¯Îã³°µö²Ä€Ç¥¿¥¹¥¯Îã³°œèÍýÍ×
+ *			  µá€¢€ê
+ *	(F) sns_tex€ÇŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€¬€Ê€€
+ *
+ * ¡Ú»ÈÍÑ¥ê¥œ¡Œ¥¹¡Û
+ *
+ *	TASK1: ¥á¥€¥ó€Î¥¿¥¹¥¯¡¥ŒÂ¹ÔŸõÂÖ€Î¥¿¥¹¥¯€ËÂÐ€·€Æ¥¿¥¹¥¯Îã³°œèÍý€òÍ×µá€¹
+ *		   €ëÂÐŸÝ¥¿¥¹¥¯
+ *	TASK2: ŒÂ¹ÔŸõÂÖ€Ç€Ê€€¥¿¥¹¥¯€ËÂÐ€·€Æ¥¿¥¹¥¯Îã³°œèÍý€òÍ×µá€¹€ëÂÐŸÝ¥¿¥¹¥¯
+ *	TASK3: ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€¬ÄêµÁ€µ€ì€Æ€€€Ê€€¥¿¥¹¥¯
+ *	TASK4: µÙ»ßŸõÂÖ€Î¥¿¥¹¥¯
+ *	ALM1:  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é1
+ *	ALM2:  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é2
+ *	ALM3:  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é3
+ *	CPUEXC: CPUÎã³°¥Ï¥ó¥É¥é
+ *
+ * ¡Ú¥Æ¥¹¥È¥·¡Œ¥±¥ó¥¹¡Û
+ *
+ *	== TASK1¡ÊÍ¥ÀèÅÙ¡§10¡Ë==
+ *	1:	state(false, false, TIPM_ENAALL, false, false, true)
+ *		ref_tex(TSK_SELF, &rtex)
+ *		assert((rtex.texstat & TTEX_DIS) != 0U)
+ *		assert(rtex.pndptn == 0U)
+ *	2:	sta_alm(ALM1, 1U)
+ *		DO(while (!(alm1_flag)))	... ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é1€ÎŒÂ¹Ô€òÂÔ€Ä
+ *	== ALM1 ==
+ *	3:	state_i(true, false, false, true, true)
+ *		iras_tex(TASK3, 0x0001) -> E_OBJ		... (A-2)
+ *		iras_tex(TASK4, 0x0001) -> E_OBJ		... (A-1)
+ *		iras_tex(TASK2, 0x0001)					... (B-2)
+ *		iras_tex(TASK1, 0x0001)					... (B-3)
+ *		DO(alm1_flag = true)
+ *		RETURN
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	4:	ena_tex()
+ *	== TASK1-TEX-1¡Ê1²óÌÜ¡Ë==
+ *	5:	assert(texptn == 0x0001)
+ *		state(false, false, TIPM_ENAALL, false, false, true)
+ *	6:	dis_dsp() ... 4€Ä€ÎŸõÂÖ€ò€œ€ì€Ÿ€ìÊÑ²œ€µ€»€ë
+ *		chg_ipm(TMAX_INTPRI)
+ *		ena_tex()
+ *		loc_cpu()
+ *		state(false, true, TMAX_INTPRI, true, true, false)
+ *		RETURN
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	7:	state(false, false, TIPM_ENAALL, false, false, false)
+ *		ref_tex(TSK_SELF, &rtex)
+ *		assert((rtex.texstat & TTEX_ENA) != 0U)
+ *		assert(rtex.pndptn == 0U)
+ *	8:	sta_alm(ALM2, 1U)
+ *		DO(while (!(alm2_flag)))
+ *	== ALM2 ==
+ *	9:	state_i(true, false, false, true, false)
+ *		iras_tex(TASK1, 0x0002)					... (B-1)
+ *		DO(alm2_flag = true)
+ *		RETURN									... (D-1)
+ *	== TASK1-TEX-2¡Ê2²óÌÜ¡Ë==
+ *	10:	assert(texptn == 0x0002)
+ *		state(false, false, TIPM_ENAALL, false, false, true)
+ *		RETURN
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	11:	sus_tsk(TASK2)
+ *		sus_tsk(TASK3)
+ *	12:	sta_alm(ALM3, 10U)
+ *	13:	dly_tsk(50U)
+ *	== ALM3 ==
+ *	14:	state_i(true, false, false, true, true)	... (F)¡Îsns_tex()€òŽÞ€à¡Ï
+ *		iget_tid(&tskid)
+ *		assert(tskid == TSK_NONE)
+ *		iras_tex(TASK1, 0x0004)
+ *		DO(alm3_flag = true)
+ *		RETURN
+ *	== TASK1-TEX-3¡Ê3²óÌÜ¡Ë==
+ *	15:	assert(texptn == 0x0004)
+ *		state(false, false, TIPM_ENAALL, false, false, true)
+ *		RETURN
+ *	== TASK1¡ÊÂ³€­¡Ë==
+ *	16:	rsm_tsk(TASK2)
+ *		rsm_tsk(TASK3)
+ *		dis_dsp()
+ *	17:	DO(RAISE_CPU_EXCEPTION)
+ *	== CPUEXC ==
+ *	18:	state_i(true, false, true, true, false)
+ *		assert(xsns_xpn(p_excinf) == false)
+ *		iras_tex(TASK3, 0x0010) -> E_OBJ		... (A-2)
+ *		iras_tex(TASK4, 0x0010) -> E_OBJ		... (A-1)
+ *		iras_tex(TASK2, 0x0010)					... (C-2)
+ *		iras_tex(TASK1, 0x0010)					... (C-1)
+ *		RETURN									... (E-1)
+ *	== TASK1-TEX-4¡Ê4²óÌÜ¡Ë==
+ *	19:	assert(texptn == 0x0010)
+ *		state(false, false, TIPM_ENAALL, true, true, true)
+ *	20:	ext_tsk()
+ *	== TASK2¡ÊÍ¥ÀèÅÙ¡§10¡Ë==
+ *	21:	state(false, false, TIPM_ENAALL, false, false, true)
+ *	22:	ena_tex()
+ *	== TASK2-TEX ==
+ *	23:	assert(texptn == 0x0011)
+ *		state(false, false, TIPM_ENAALL, false, false, true)
+ *		RETURN
+ *	== TASK2¡ÊÂ³€­¡Ë==
+ *	24:	sus_tsk(TASK3)
+ *	25:	END
+ */
+
+#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;
+
+/*
+ *  task3¡€task4€Ètex_task4€ÏÀžÀ®€µ€ì€Ê€€
+ */
+
+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);
+}
+
+/* DO NOT DELETE THIS LINE -- gentest depends on it. */
+
+void
+alarm1_handler(intptr_t exinf)
+{
+	ER_UINT	ercd;
+
+	check_point(3);
+	check_state_i(true, false, false, true, true);
+
+	ercd = iras_tex(TASK3, 0x0001);
+	check_ercd(ercd, E_OBJ);
+
+	ercd = iras_tex(TASK4, 0x0001);
+	check_ercd(ercd, E_OBJ);
+
+	ercd = iras_tex(TASK2, 0x0001);
+	check_ercd(ercd, E_OK);
+
+	ercd = iras_tex(TASK1, 0x0001);
+	check_ercd(ercd, E_OK);
+
+	alm1_flag = true;
+
+	return;
+
+	check_point(0);
+}
+
+void
+alarm2_handler(intptr_t exinf)
+{
+	ER_UINT	ercd;
+
+	check_point(9);
+	check_state_i(true, false, false, true, false);
+
+	ercd = iras_tex(TASK1, 0x0002);
+	check_ercd(ercd, E_OK);
+
+	alm2_flag = true;
+
+	return;
+
+	check_point(0);
+}
+
+void
+alarm3_handler(intptr_t exinf)
+{
+	ID		tskid;
+	ER_UINT	ercd;
+
+	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);
+
+	ercd = iras_tex(TASK1, 0x0004);
+	check_ercd(ercd, E_OK);
+
+	alm3_flag = true;
+
+	return;
+
+	check_point(0);
+}
+
+void
+cpuexc_handler(void *p_excinf)
+{
+	ER_UINT	ercd;
+
+	check_point(18);
+	check_state_i(true, false, true, true, false);
+
+	check_assert(xsns_xpn(p_excinf) == false);
+
+	ercd = iras_tex(TASK3, 0x0010);
+	check_ercd(ercd, E_OBJ);
+
+	ercd = iras_tex(TASK4, 0x0010);
+	check_ercd(ercd, E_OBJ);
+
+	ercd = iras_tex(TASK2, 0x0010);
+	check_ercd(ercd, E_OK);
+
+	ercd = iras_tex(TASK1, 0x0010);
+	check_ercd(ercd, E_OK);
+
+	return;
+
+	check_point(0);
+}
+
+void
+task1(intptr_t exinf)
+{
+	ER_UINT	ercd;
+	T_RTEX	rtex;
+
+	test_start(__FILE__);
+
+	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) != 0U);
+
+	check_assert(rtex.pndptn == 0U);
+
+	check_point(2);
+	ercd = sta_alm(ALM1, 1U);
+	check_ercd(ercd, E_OK);
+
+	while (!(alm1_flag));
+
+	check_point(4);
+	ercd = ena_tex();
+	check_ercd(ercd, E_OK);
+
+	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) != 0U);
+
+	check_assert(rtex.pndptn == 0U);
+
+	check_point(8);
+	ercd = sta_alm(ALM2, 1U);
+	check_ercd(ercd, E_OK);
+
+	while (!(alm2_flag));
+
+	check_point(11);
+	ercd = sus_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	ercd = sus_tsk(TASK3);
+	check_ercd(ercd, E_OK);
+
+	check_point(12);
+	ercd = sta_alm(ALM3, 10U);
+	check_ercd(ercd, E_OK);
+
+	check_point(13);
+	ercd = dly_tsk(50U);
+	check_ercd(ercd, E_OK);
+
+	check_point(16);
+	ercd = rsm_tsk(TASK2);
+	check_ercd(ercd, E_OK);
+
+	ercd = rsm_tsk(TASK3);
+	check_ercd(ercd, E_OK);
+
+	ercd = dis_dsp();
+	check_ercd(ercd, E_OK);
+
+	check_point(17);
+	RAISE_CPU_EXCEPTION;
+
+	check_point(0);
+}
+
+static uint_t	tex_task1_count = 0;
+
+void
+tex_task1(TEXPTN texptn, intptr_t exinf)
+{
+	ER_UINT	ercd;
+
+	switch (++tex_task1_count) {
+	case 1:
+		check_point(5);
+		check_assert(texptn == 0x0001);
+
+		check_state(false, false, TIPM_ENAALL, false, false, true);
+
+		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);
+
+		return;
+
+		check_point(0);
+
+	case 2:
+		check_point(10);
+		check_assert(texptn == 0x0002);
+
+		check_state(false, false, TIPM_ENAALL, false, false, true);
+
+		return;
+
+		check_point(0);
+
+	case 3:
+		check_point(15);
+		check_assert(texptn == 0x0004);
+
+		check_state(false, false, TIPM_ENAALL, false, false, true);
+
+		return;
+
+		check_point(0);
+
+	case 4:
+		check_point(19);
+		check_assert(texptn == 0x0010);
+
+		check_state(false, false, TIPM_ENAALL, true, true, true);
+
+		check_point(20);
+		ercd = ext_tsk();
+		check_ercd(ercd, E_OK);
+
+		check_point(0);
+
+	default:
+		check_point(0);
+	}
+	check_point(0);
+}
+
+void
+task2(intptr_t exinf)
+{
+	ER_UINT	ercd;
+
+	check_point(21);
+	check_state(false, false, TIPM_ENAALL, false, false, true);
+
+	check_point(22);
+	ercd = ena_tex();
+	check_ercd(ercd, E_OK);
+
+	check_point(24);
+	ercd = sus_tsk(TASK3);
+	check_ercd(ercd, E_OK);
+
+	check_finish(25);
+	check_point(0);
+}
+
+void
+tex_task2(TEXPTN texptn, intptr_t exinf)
+{
+
+	check_point(23);
+	check_assert(texptn == 0x0011);
+
+	check_state(false, false, TIPM_ENAALL, false, false, true);
+
+	return;
+
+	check_point(0);
+}
Index: /test/test_tex2.cfg
===================================================================
--- /test/test_tex2.cfg	(revision 7)
+++ /test/test_tex2.cfg	(revision 7)
@@ -0,0 +1,30 @@
+/*
+ *  @(#) $Id$
+ */
+
+/*
+ *  ¥¿¥¹¥¯Îã³°œèÍý€ËŽØ€¹€ë¥Æ¥¹¥È(2)€Î¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+ */
+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: /test/test_tex2.h
===================================================================
--- /test/test_tex2.h	(revision 7)
+++ /test/test_tex2.h	(revision 7)
@@ -0,0 +1,85 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  @(#) $Id$
+ */
+
+/* 
+ *		¥¿¥¹¥¯Îã³°œèÍý€ËŽØ€¹€ë¥Æ¥¹¥È(2)
+ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎÄêµÁ
+ */
+#include "target_test.h"
+
+/*
+ *  ³Æ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€ÎÄêµÁ
+ */
+#define TASK1_PRIORITY	10		/* ¥¿¥¹¥¯1€ÎÍ¥ÀèÅÙ */
+#define TASK2_PRIORITY	10		/* ¥¿¥¹¥¯2€ÎÍ¥ÀèÅÙ */
+#define TASK3_PRIORITY	10		/* ¥¿¥¹¥¯3€ÎÍ¥ÀèÅÙ */
+#define TASK4_PRIORITY	10		/* ¥¿¥¹¥¯4€ÎÍ¥ÀèÅÙ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È€Ë°ÍÂž€¹€ë²ÄÇœÀ­€Î€¢€ëÄê¿ô€ÎÄêµÁ
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯¥µ¥€¥º */
+#endif /* STACK_SIZE */
+
+/*
+ *  ŽØ¿ô€Î¥×¥í¥È¥¿¥€¥×ÀëžÀ
+ */
+#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: /test/test_utm1.c
===================================================================
--- /test/test_utm1.c	(revision 7)
+++ /test/test_utm1.c	(revision 7)
@@ -0,0 +1,124 @@
+/*
+ *  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
+ * 
+ *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
+ *  ÊÑ¡ŠºÆÇÛÉÛ¡Ê°Ê²Œ¡€ÍøÍÑ€ÈžÆ€Ö¡Ë€¹€ë€³€È€òÌµœþ€ÇµöÂú€¹€ë¡¥
+ *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
+ *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€¬¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
+ *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
+ *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
+ *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
+ *      €ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁÈ€ß¹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
+ *      ÍÑ€Ç€­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
+ *      €È¡¥
+ *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
+ *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€ÎÌµÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
+ *    (b) ºÆÇÛÉÛ€Î·ÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
+ *        Êó¹ð€¹€ë€³€È¡¥
+ *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€ë€€€«€Ê€ëÂ»
+ *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
+ *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
+ *      Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
+ *      ÌÈÀÕ€¹€ë€³€È¡¥
+ * 
+ *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
+ *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜÅª
+ *  €ËÂÐ€¹€ëÅ¬¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
+ *  ¥¢€ÎÍøÍÑ€Ë€è€êÄŸÀÜÅª€Þ€¿€ÏŽÖÀÜÅª€ËÀž€ž€¿€€€«€Ê€ëÂ»³²€ËŽØ€·€Æ€â¡€€œ
+ *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
+ * 
+ *  $Id$
+ */
+
+/*
+ *		get_utm€ËŽØ€¹€ë¥Æ¥¹¥È(1)
+ *
+ * ¡Ú¥Æ¥¹¥È€ÎÌÜÅª¡Û
+ *
+ *  À­ÇœÉŸ²ÁÍÑ¥·¥¹¥Æ¥à»þ¹ï€¬µÕ¹Ô€¹€ë€³€È€¬€Ê€€€³€È€ò¥Æ¥¹¥È€¹€ë¡¥
+ *
+ * ¡Ú¥Æ¥¹¥È€ÎÆâÍÆ¡Û
+ *
+ *  ¥á¥€¥ó¥¿¥¹¥¯€Ç€Ï¡€À­ÇœÉŸ²ÁÍÑ¥·¥¹¥Æ¥à»þ¹ï€ò·«€êÊÖ€·ŒèÆÀ€·¡€»þ¹ï€¬Ÿ®
+ *  €µ€¯€Ê€é€Ê€€€«€ò¥Á¥§¥Ã¥¯€¹€ë¡¥€œ€ì€ÈÊÂ¹Ô€·€Æ¡€ŒþŽü¥Ï¥ó¥É¥é€ò1¥ß¥êÉÃ
+ *  ŒþŽü€ÇŒÂ¹Ô€·¡€€œ€ÎÃæ€Ç€âÀ­ÇœÉŸ²ÁÍÑ¥·¥¹¥Æ¥à»þ¹ï€òŒèÆÀ€·€Æ¡€»þ¹ï€¬Ÿ®
+ *  €µ€¯€Ê€é€Ê€€€«€ò¥Á¥§¥Ã¥¯€¹€ë¡¥
+ *
+ *  €Ê€ª¡€À­ÇœÉŸ²ÁÍÑ¥·¥¹¥Æ¥à»þ¹ï€¬ºÇÂçÃÍ€òÄ¶€š€Æ0€ËÌá€ëŸõ¶·€Ï¹ÍÎž€·€Æ€€
+ *  €Ê€€¡¥
+ */
+
+#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: /test/test_utm1.cfg
===================================================================
--- /test/test_utm1.cfg	(revision 7)
+++ /test/test_utm1.cfg	(revision 7)
@@ -0,0 +1,16 @@
+/*
+ *  $Id$
+ */
+
+/*
+ *  get_utm€ËŽØ€¹€ë¥Æ¥¹¥È(1)€Î¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë
+ */
+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: /test/test_utm1.h
===================================================================
--- /test/test_utm1.h	(revision 7)
+++ /test/test_utm1.h	(revision 7)
@@ -0,0 +1,69 @@
+/*
+ *  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$
+ */
+
+/*
+ *		get_utm€ËŽØ€¹€ë¥Æ¥¹¥È(1)
+ */
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È°ÍÂž€ÎÄêµÁ
+ */
+#include "target_test.h"
+
+/*
+ *  ³Æ¥¿¥¹¥¯€ÎÍ¥ÀèÅÙ€ÎÄêµÁ
+ */
+#define MAIN_PRIORITY	10
+
+/*
+ *  ¥¿¡Œ¥²¥Ã¥È€Ë°ÍÂž€¹€ë²ÄÇœÀ­€Î€¢€ëÄê¿ô€ÎÄêµÁ
+ */
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯¥µ¥€¥º */
+#endif /* STACK_SIZE */
+
+/*
+ *  ŽØ¿ô€Î¥×¥í¥È¥¿¥€¥×ÀëžÀ
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+extern void	cyclic_handler(intptr_t exinf);
+extern void	main_task(intptr_t exinf);
+
+#endif /* TOPPERS_MACRO_ONLY */
Index: /utils/applyrename
===================================================================
--- /utils/applyrename	(revision 7)
+++ /utils/applyrename	(revision 7)
@@ -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-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$
+# 
+
+#
+#  ¥Õ¥¡¥€¥ë€Ë¥ê¥Í¡Œ¥à€òÅ¬ÍÑ€¹€ë
+#
+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);
+
+	applyrename($infile) if ($infile ne $deffile);
+}
Index: /utils/genoffset
===================================================================
--- /utils/genoffset	(revision 7)
+++ /utils/genoffset	(revision 7)
@@ -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-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$
+# 
+
+#
+#  œéŽü²œ
+#
+$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 = 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]+)/) {
+		parse_offset($1, $2);
+	}
+	elsif ($line =~ /^[ \t]*_?BIT_REF_([0-9]+):/) {
+		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]+):/) {
+		parse_bit($1, $2, $3);
+	}
+}
+close(INFILE);
+exit($error);
Index: /utils/genrename
===================================================================
--- /utils/genrename	(revision 7)
+++ /utils/genrename	(revision 7)
@@ -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-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$
+# 
+
+#
+#  ÀèÆ¬€Ë€Ä€±€ëÊž»úÎó
+#
+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,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]+(.*)$/) {
+		generate_include($1, "rename");
+	}
+	elsif ($sym ne "") {
+		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 "") {
+		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]+(.*)$/) {
+		generate_include($1, "unrename");
+	}
+	elsif ($sym ne "") {
+		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 "") {
+		generate_undef($sym, "_");
+	}
+	else {
+		print FILE "\n";
+	}
+}
+
+print FILE <<END;
+
+#endif /* TOPPERS_LABEL_ASM */
+
+$includes
+#endif /* $header_defsym */
+END
+
+close(FILE);
Index: /utils/gentest
===================================================================
--- /utils/gentest	(revision 7)
+++ /utils/gentest	(revision 7)
@@ -0,0 +1,364 @@
+#! /usr/bin/perl
+#
+#  TOPPERS Software
+#      Toyohashi Open Platform for Embedded Real-Time Systems
+# 
+#  Copyright (C) 2007-2014 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$
+# 
+
+#
+#		¥Æ¥¹¥È¥×¥í¥°¥é¥àÀžÀ®¥Ä¡Œ¥ë
+#
+
+use open ":encoding(euc-jp)";
+use encoding "euc-jp";
+
+$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_mbf" => 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_mbf" => "T_RMBF",
+	"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",
+);
+
+$last_check_point = 0;
+
+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);
+
+	${$TASKVAR{$tskid}}{"ER_UINT"} = "ercd";
+
+	push(@{$TASKCODE{$tskid}{$tskcnt}}, sprintf("\tercd = %s;", $svc_call));
+	gen_var_def($svc_call);
+
+	if ($error_code_string eq "") {
+		push(@{$TASKCODE{$tskid}{$tskcnt}},
+								sprintf("\tcheck_ercd(ercd, E_OK);"), "");
+	}
+	elsif ($error_code_string =~ /^\-\>\s*noreturn$/) {
+		push(@{$TASKCODE{$tskid}{$tskcnt}}, "");
+	}
+	else {
+		$error_code = $error_code_string;
+		$error_code =~ s/^\-\>\s*([A-Za-z0-9_]*)$/$1/;
+		push(@{$TASKCODE{$tskid}{$tskcnt}},
+						sprintf("\tcheck_ercd(ercd, %s);", $error_code), "");
+	}
+}
+
+sub parse_line {
+	local($line) = @_;
+
+	while ($line =~ s/\\$//) {
+		$line1 = <INFILE>;
+		$output_line .= $line1;
+		chomp $line1;
+		$line1 =~ s/^\s*\*\s*//;
+		$line1 =~ s/\s*\/\/.*$//;
+		$line1 =~ s/\s*\.\.\..*$//;
+		$line .= $line1;
+	}
+
+	if ($line =~ /^\.\./) {
+		# do nothing.
+	}
+	elsif ($line =~ /^==\s*((TASK|ALM|CPUEXC|EXTSVC)[0-9]*)(.*)$/) {
+		$procflag = 1;
+		$tskid = $1;
+		$line2 = $3;
+		if ($line2 =~ /^\-TEX(.*)$/) {
+			$tskid = $tskid."-TEX";
+			$line2 = $1;
+		}
+		if ($line2 =~ /^\-([0-9]+)(.*)$/) {
+			$tskcnt = $1;
+			if (!$TASKCOUNTVAR{$tskid}) {
+				if ($tskid =~ /^TASK([0-9]*)$/) {
+					$countvar = "task$1_count";
+				}
+				elsif ($tskid =~ /^TASK([0-9]*)-TEX$/) {
+					$countvar = "tex_task$1_count";
+				}
+				elsif ($tskid =~ /^ALM([0-9]*)$/) {
+					$countvar = "alarm$1_count";
+				}
+				elsif ($tskid =~ /^CPUEXC([0-9]*)$/) {
+					$countvar = "cpuexc$1_count";
+				}
+				elsif ($tskid =~ /^EXTSVC([0-9]*)$/) {
+					$countvar = "extsvc$1_count";
+				}
+				$TASKCOUNTVAR{$tskid} = $countvar;
+			}
+		}
+		else {
+			$tskcnt = "";
+		}
+		if ($startflag) {
+			push(@{$TASKCODE{$tskid}{$tskcnt}}, "\ttest_start(__FILE__);");
+			push(@{$TASKCODE{$tskid}{$tskcnt}}, "");
+			$startflag = 0;
+		}
+	}
+	elsif (!$procflag) {
+		# do nothing.
+	}
+	elsif ($line =~ /^([0-9]+\:)\s*END$/) {
+		$check_str = $1;
+		$check_no = ++$last_check_point;
+		push(@{$TASKCODE{$tskid}{$tskcnt}},
+								sprintf("\tcheck_finish(%d);", $check_no));
+		$procflag = 0;
+		$output_line =~ s/$check_str/$check_no:/;
+	}
+	else {
+		if ($line =~ /^([0-9]+\:)\s*(.*)/) {
+			$check_str = $1;
+			$line = $2;
+			$check_no = ++$last_check_point;
+			push(@{$TASKCODE{$tskid}{$tskcnt}},
+								sprintf("\tcheck_point(%d);", $check_no));
+			$output_line =~ s/$check_str/$check_no:/;
+		}
+		if ($line =~ /^(assert\(.*\))$/) {
+			$assert_string = $1;
+			push(@{$TASKCODE{$tskid}{$tskcnt}},
+								sprintf("\tcheck_%s;", $assert_string), "");
+		}
+		elsif ($line =~ /^(state(_i)?\(.*\))$/) {
+			$state_string = $1;
+			push(@{$TASKCODE{$tskid}{$tskcnt}},
+								sprintf("\tcheck_%s;", $state_string), "");
+		}
+		elsif ($line =~ /^call\((.*)\)$/ || $line =~ /^DO\((.*)\)$/) {
+			$call_string = $1;
+			push(@{$TASKCODE{$tskid}{$tskcnt}},
+									sprintf("\t%s;", $call_string), "");
+		}
+		elsif ($line =~ /^MISSING$/) {
+			push(@{$TASKCODE{$tskid}{$tskcnt}}, "");
+		}
+		elsif ($line =~ /^RETURN((\(.*\))?)$/) {
+			$return_string = $1;
+			push(@{$TASKCODE{$tskid}{$tskcnt}},
+									"\treturn".$return_string.";", "");
+		}
+		elsif ($line =~ /^GOTO\((.*)\)$/) {
+			$goto_string = $1;
+			push(@{$TASKCODE{$tskid}{$tskcnt}},
+									sprintf("\tgoto %s;", $goto_string), "");
+		}
+		elsif ($line =~ /^LABEL\((.*)\)$/) {
+			$label_string = $1;
+			$indent_string = $indentstr;
+			$indent_string =~ s/\t$//;
+			push(@{$TASKCODE{$tskid}{$tskcnt}},
+									sprintf("%s:", $label_string));
+		}
+		elsif ($line =~ /^([a-z_]+\(.*\))\s*(\-\>\s*[A-Za-z0-9_]*)?\s*$/) {
+			$svc_call = $1;
+			$error_code_string = $2;
+			gen_svc_call($svc_call, $error_code_string);
+		}
+		else {
+			print STDERR "Error: ",$line,"\n";
+		}
+	}
+}
+
+#
+#  ¥¹¥¯¥ê¥×¥È¥Õ¥¡¥€¥ëÆÉ¹þ€ßœèÍý
+#
+$procflag = 0;
+$startflag = 1;
+$outflag = 1;
+open(INFILE, $infile) || die "Cannot open $infile";
+while (($line = <INFILE>) && $outflag) {
+	$output_line = $line;
+	chomp $line;
+	$line =~ s/^\s*\*\s*//;
+	$line =~ s/\s*\/\/.*$//;
+	$line =~ s/\s*\.\.\..*$//;
+	if ($line) {
+		parse_line($line);
+	}
+	print $output_line;
+	if ($output_line =~ /DO NOT DELETE THIS LINE/) {
+		$outflag = 0;
+	}
+}
+close(INFILE);
+
+#
+#  ¥¿¥¹¥¯€ÎÊÑ¿ôÄêµÁ€Î¥³¡Œ¥ÉœÐÎÏ
+#
+sub output_task_vardef {
+	my($tskid) = @_;
+
+	foreach my $typename (keys(%{$TASKVAR{$tskid}})) {
+		print "\t",$typename, (length($typename) < 4 ? "\t\t" : "\t"),
+								${$TASKVAR{$tskid}}{$typename},";\n";
+	}
+}
+
+#
+#  ¥¿¥¹¥¯ËÜÂÎ€Î¥³¡Œ¥ÉœÐÎÏ
+#
+sub output_task_body {
+	my($tskid) = @_;
+
+	foreach my $tskcnt (sort {$a <=> $b} (keys(%{$TASKCODE{$tskid}}))) {
+		printf "\tcase %d:\n", $tskcnt;
+		foreach my $line (@{$TASKCODE{$tskid}{$tskcnt}}) {
+			print "\t",$line if ($line);
+			print "\n";
+		}
+		printf "\t\tcheck_point(0);\n\n";
+	}
+}
+
+#
+#  ¥¿¥¹¥¯¥³¡Œ¥É€ÎœÐÎÏ
+#
+sub output_task {
+	if ($TASKCOUNTVAR{$tskid}) {
+		printf "\nstatic uint_t\t%s = 0;\n", $TASKCOUNTVAR{$tskid};
+	}
+	if ($tskid =~ /^TASK([0-9]*)$/) {
+		print "\nvoid\n";
+		print "task$1(intptr_t exinf)\n";
+	}
+	elsif ($tskid =~ /^TASK([0-9]*)-TEX$/) {
+		print "\nvoid\n";
+		print "tex_task$1(TEXPTN texptn, intptr_t exinf)\n";
+	}
+	elsif ($tskid =~ /^ALM([0-9]*)$/) {
+		print "\nvoid\n";
+		print "alarm$1_handler(intptr_t exinf)\n";
+	}
+	elsif ($tskid =~ /^CPUEXC([0-9]*)$/) {
+		print "\nvoid\n";
+		print "cpuexc$1_handler(void *p_excinf)\n";
+	}
+	elsif ($tskid =~ /^EXTSVC([0-9]*)$/) {
+		print "\nER_UINT\n";
+		print "extsvc$1_routine(intptr_t par1, intptr_t par2, intptr_t par3,\n";
+		print "\t\t\t\t\t\t\t\tintptr_t par4, intptr_t par5, ID cdmid)\n";
+	}
+	print "{\n";
+	output_task_vardef($tskid);
+	print "\n";
+	if ($TASKCOUNTVAR{$tskid}) {
+		printf "\tswitch (++%s) {\n", $TASKCOUNTVAR{$tskid};
+		output_task_body($tskid);
+		printf "\tdefault:\n";
+		printf "\t\tcheck_point(0);\n";
+		printf "\t}\n";
+	}
+	else {
+		foreach my $line (@{$TASKCODE{$tskid}{""}}) {
+			print $line,"\n";
+		}
+	}
+	print "\tcheck_point(0);\n";
+	if ($tskid =~ /^EXTSVC([0-9]*)$/) {
+		print "\treturn(E_SYS);\n";
+	}
+	print "}\n";
+}
+
+#
+#  ¥Æ¥¹¥È¥×¥í¥°¥é¥àœÐÎÏœèÍý
+#
+foreach $tskid (sort(keys(%TASKCODE))) {
+	output_task();
+}
Index: /utils/makedep
===================================================================
--- /utils/makedep	(revision 7)
+++ /utils/makedep	(revision 7)
@@ -0,0 +1,179 @@
+#! /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-2013 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$
+# 
+
+use Getopt::Std;
+
+#  ¥ª¥×¥·¥ç¥ó€ÎÄêµÁ
+#
+#  -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¡Ë
+
+#
+#  ¥ª¥×¥·¥ç¥ó€ÎœèÍý
+#
+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ŽÄ¶­€ÎÈœÊÌ
+#
+if ($^O eq 'cygwin') {
+	$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 =~ /^\#[a-zA-Z]*\s*([0-9]+)\s*\"([^\"]+)\"/) {
+			$filename = $2;
+			$filename =~ s/ /\\ /g;
+			if ($filename !~ /^\<.*\>$/ && $filename !~ /\/$/) {
+				if ($cygwin) {
+					$filename =~ s/\\\\/\//g;
+					$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 = ();
+	makedepend_one($file);
+	if (%dependlist) {
+		if ($target_name) {
+			if ($opt_S) {
+				foreach $target (split(/[ \t]+/, $target_name)) {
+					output_dependlist($target);
+				}
+			}
+			else {
+				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;
+				}
+			}
+			output_dependlist($target);
+		}
+	}
+}
Index: /utils/makerelease
===================================================================
--- /utils/makerelease	(revision 7)
+++ /utils/makerelease	(revision 7)
@@ -0,0 +1,156 @@
+#! /usr/bin/perl
+#
+#  TOPPERS Software
+#      Toyohashi Open Platform for Embedded Real-Time Systems
+# 
+#  Copyright (C) 2006-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$
+# 
+
+use Cwd;
+
+$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 $filename";
+	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]+(.*)$/) {
+			read_file(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);
+}
+
+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";
