// ---------------------------------------------------------------------------
-// Hyper Operating System V4 コンフィギュレーター
-// DEF_INH API の処理
-//
-// Copyright (C) 1998-2002 by Project HOS
-// http://sourceforge.jp/projects/hos/
+// Hyper Operating System V4a コンフィギュレーター
+// DEF_INH API の処理
+//
+// Copyright (C) 1998-2011 by Project HOS
+// http://sourceforge.jp/projects/hos/
// ---------------------------------------------------------------------------
// %jp{cfgファイル定義部書き出し}
void CApiDefInh::WriteCfgDef(FILE* fp)
{
+#ifndef _KERNEL_PROCATR_ARM_CORTEX_M3
int i, j;
// コメント出力
"const "
#endif
"_KERNEL_T_INHINF _kernel_inh_tbl[%d] =\n"
- "{\n",
- KERNEL_TMAX_INH_INHNO - KERNEL_TMIN_INH_INHNO + 1);
-
- for ( i = KERNEL_TMIN_INH_INHNO; i <= KERNEL_TMAX_INH_INHNO; i++ )
+ "\t{\n",
+ _KERNEL_TMAX_INH_INHNO - _KERNEL_TMIN_INH_INHNO + 1);
+
+ for ( i = _KERNEL_TMIN_INH_INHNO; i <= _KERNEL_TMAX_INH_INHNO; i++ )
{
for ( j = 0; j < m_iObjs; j++ )
{
}
if ( j < m_iObjs )
{
- fprintf(fp, "\t(FP)(%s),\n", m_pParamPacks[j]->GetParam(DEFINH_INTHDR));
- }
-#if _KERNEL_SPT_ISR
- else if ( i >= _KERNEL_IRCATR_TMIN_INHNO && i <= _KERNEL_IRCATR_TMAX_INHNO )
- {
- fprintf(fp, "\t(FP)_KERNEL_EXE_IRC,\n");
+ fprintf(fp, "\t\t{(FP)(%s)},\n", m_pParamPacks[j]->GetParam(DEFINH_INTHDR));
}
-#endif
else
{
- fprintf(fp, "\tNULL,\n");
+ fprintf(fp, "\t\t{(FP)NULL},\n");
}
}
- fprintf(fp, "};\n\n");
+ fprintf(fp, "\t};\n\n");
+
+#endif
}
}
+void CApiDefInh::WriteVecter(FILE* fp, CApiIntStack *pIntStack)
+{
+#ifdef _KERNEL_PROCATR_ARM_CORTEX_M3
+ int i, j;
+
+ // コメント出力
+ fputs(
+ "\n\n\n"
+ "/* ------------------------------------------ */\n"
+ "/* define interrupt handler */\n"
+ "/* ------------------------------------------ */\n\n"
+ , fp);
+
+ pIntStack->WriteStackMemory(fp);
+
+ fprintf(fp,
+ "\n\n"
+#if !_KERNEL_SPT_DEF_INH
+ "const "
+#endif
+ "_KERNEL_T_INHINF _kernel_inh_tbl[%d] =\n"
+ "\t{\n",
+ _KERNEL_TMAX_INH_INHNO - _KERNEL_TMIN_INH_INHNO + 1);
+
+ for ( i = _KERNEL_TMIN_INH_INHNO; i <= _KERNEL_TMAX_INH_INHNO; i++ )
+ {
+ switch ( i )
+ {
+ case 0:
+ fprintf(fp, "\t\t{(FP)(");
+ pIntStack->WriteStackPointer(fp);
+ fprintf(fp, ")},\t\t/* stack pointer */\n");
+ break;
+
+ case 1:
+ fprintf(fp, "\t\t{(FP)(_kernel_reset_handler)},\t\t/* reset handler */\n");
+ break;
+
+ case 2:
+ fprintf(fp, "\t\t{(FP)(_kernel_nmi_handler)},\t\t/* non maskable intterupt handler */\n");
+ break;
+
+ case 3:
+ fprintf(fp, "\t\t{(FP)(_kernel_hw_fault_handler)},\t\t/* hard fault handler */\n");
+ break;
+
+ case 14:
+ fprintf(fp, "\t\t{(FP)(_kernel_pendsv_handler)},\t\t/* hard fault handler */\n");
+ break;
+
+ default:
+ for ( j = 0; j < m_iObjs; j++ )
+ {
+ if ( atoi(m_pParamPacks[j]->GetParam(DEFINH_INHNO)) == i )
+ {
+ break;
+ }
+ }
+ if ( j < m_iObjs )
+ {
+ fprintf(fp, "\t\t{(FP)(%s)},\n", m_pParamPacks[j]->GetParam(DEFINH_INTHDR));
+ }
+ else
+ {
+ fprintf(fp, "\t\t{(FP)NULL},\n");
+ }
+ break;
+ }
+ }
+ fprintf(fp, "\t};\n\n");
+
+#endif
+}
+
+
+
// ---------------------------------------------------------------------------
-// Copyright (C) 1998-2006 by Project HOS
+// end of file
// ---------------------------------------------------------------------------