Index: asp_wo_cfg/trunk/kernel/exception.c
===================================================================
--- asp_wo_cfg/trunk/kernel/exception.c	(revision 49)
+++ asp_wo_cfg/trunk/kernel/exception.c	(revision 50)
@@ -6,5 +6,5 @@
  *  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
+ *  Copyright (C) 2005-2012 by Embedded and Real-Time Systems Laboratory
  *              Graduate School of Information Science, Nagoya Univ., JAPAN
  * 
@@ -122,8 +122,7 @@
 		ercd = E_OBJ;
 	}
-	else {
+	else if ((ercd = target_check_dexc(excno, pk_dexc)) == E_OK) {
 		p_excinib->excatr = pk_dexc->excatr;
 		p_excinib->exchdr = pk_dexc->exchdr;
-		ercd = E_OK;
 	}
 
Index: asp_wo_cfg/trunk/kernel/interrupt.c
===================================================================
--- asp_wo_cfg/trunk/kernel/interrupt.c	(revision 49)
+++ asp_wo_cfg/trunk/kernel/interrupt.c	(revision 50)
@@ -316,7 +316,8 @@
 	p_intinib = get_intinib(intno);
 
-	p_intinib->intatr = pk_cint->intatr;
-	p_intinib->intpri = pk_cint->intpri;
-	ercd = E_OK;
+	if ((ercd = target_check_cint(intno, pk_cint)) == E_OK) {
+		p_intinib->intatr = pk_cint->intatr;
+		p_intinib->intpri = pk_cint->intpri;
+	}
 
   error_exit:
@@ -351,8 +352,7 @@
 		ercd = E_OBJ;
 	}
-	else {
+	else if ((ercd = target_check_dinh(inhno, pk_dinh)) == E_OK) {
 		p_inhinib->inhatr = pk_dinh->inhatr;
 		p_inhinib->inthdr = (IINTHDR)(pk_dinh->inthdr);
-		ercd = E_OK;
 	}
 
Index: asp_wo_cfg/trunk/kernel/task_manage.c
===================================================================
--- asp_wo_cfg/trunk/kernel/task_manage.c	(revision 49)
+++ asp_wo_cfg/trunk/kernel/task_manage.c	(revision 50)
@@ -164,5 +164,5 @@
 			ercd = E_NOMEM;
 		}
-		else {
+		else if ((ercd = target_check_ctsk(tskid, pk_ctsk)) == E_OK) {
 			p_tinib = (TINIB *)(p_tcb->p_tinib);
 			p_tinib->tskatr = tskatr;
@@ -184,5 +184,4 @@
 				make_active(p_tcb);
 			}
-			ercd = E_OK;
 		}
 	}
Index: asp_wo_cfg/trunk/target/macosx_gcc/target_config.c
===================================================================
--- asp_wo_cfg/trunk/target/macosx_gcc/target_config.c	(revision 49)
+++ asp_wo_cfg/trunk/target/macosx_gcc/target_config.c	(revision 50)
@@ -396,4 +396,39 @@
 
 /*
+ *  サービスコールのターゲット依存エラーチェックコード
+ */
+ER
+target_check_cint(INTNO intno, const T_CINT *pk_cint)
+{
+	if ((pk_cint->intatr & TA_EDGE) == 0U) {
+		/*
+		 *  レベルトリガはサポートしていない．
+		 */
+		return(E_RSATR);
+	}
+	else if (excinib_table[INDEX_INTNO(intno)].excatr != TA_NOEXS) {
+		/*
+		 *  CPU例外ハンドラが定義されたシグナルに対して，割込み要求ライ
+		 *  ンの属性を設定しようとした場合は，E_OBJエラーとする．
+		 */
+		return(E_OBJ);
+	}
+	return(E_OK);
+}
+
+ER
+target_check_dexc(EXCNO excno, const T_DEXC *pk_dexc)
+{
+	if (intinib_table[INDEX_EXCNO(excno)].intatr != TA_NOEXS) {
+		/*
+		 *  割込み要求ラインの属性が設定されたシグナルに対して，CPU例外
+		 *  ハンドラを定義しようとした場合は，E_OBJエラーとする．
+		 */
+		return(E_OBJ);
+	}
+	return(E_OK);
+}
+
+/*
  *  ターゲット依存の初期化
  */
Index: asp_wo_cfg/trunk/target/macosx_gcc/target_config.h
===================================================================
--- asp_wo_cfg/trunk/target/macosx_gcc/target_config.h	(revision 49)
+++ asp_wo_cfg/trunk/target/macosx_gcc/target_config.h	(revision 50)
@@ -533,4 +533,23 @@
 
 /*
+ *  サービスコールのターゲット依存エラーチェックコード
+ */
+Inline ER
+target_check_ctsk(ID tskid, const T_CTSK *pk_ctsk)
+{
+	return(E_OK);
+}
+
+extern ER target_check_cint(INTNO intno, const T_CINT *pk_cint);
+
+Inline ER
+target_check_dinh(INHNO inhno, const T_DINH *pk_dinh)
+{
+	return(E_OK);
+}
+
+extern ER target_check_dexc(EXCNO excno, const T_DEXC *pk_dexc);
+
+/*
  *  ターゲットシステム依存の初期化
  */
