1 // ---------------------------------------------------------------------------
2 // Hyper Operating System V4a コンフィギュレーター
5 // Copyright (C) 1998-2011 by Project HOS
6 // http://sourceforge.jp/projects/hos/
7 // ---------------------------------------------------------------------------
19 #define DEFINH_INHNO 0
20 #define DEFINH_INHATR 1
21 #define DEFINH_INTHDR 2
25 CApiDefInh::CApiDefInh()
28 m_iParamSyntax[0] = 0; // 単独パラメーター
29 m_iParamSyntax[1] = 2; // 2個のパラメーターブロック
35 CApiDefInh::~CApiDefInh()
41 int CApiDefInh::AnalyzeApi(const char* pszApiName, const char* pszParams)
43 if ( strcmp(pszApiName, "DEF_INH") == 0 )
45 return AddParams(pszParams);
48 return CFG_ERR_NOPROC;
53 int CApiDefInh::AutoId(void)
59 // %jp{cfgファイル定義部書き出し}
60 void CApiDefInh::WriteCfgDef(FILE* fp)
62 #ifndef _KERNEL_PROCATR_ARM_CORTEX_M3
68 "/* ------------------------------------------ */\n"
69 "/* define interrupt handler */\n"
70 "/* ------------------------------------------ */\n"
75 #if !_KERNEL_SPT_DEF_INH
78 "_KERNEL_T_INHINF _kernel_inh_tbl[%d] =\n"
80 _KERNEL_TMAX_INH_INHNO - _KERNEL_TMIN_INH_INHNO + 1);
82 for ( i = _KERNEL_TMIN_INH_INHNO; i <= _KERNEL_TMAX_INH_INHNO; i++ )
84 for ( j = 0; j < m_iObjs; j++ )
86 if ( atoi(m_pParamPacks[j]->GetParam(DEFINH_INHNO)) == i )
93 fprintf(fp, "\t\t{(FP)(%s)},\n", m_pParamPacks[j]->GetParam(DEFINH_INTHDR));
97 fprintf(fp, "\t\t{(FP)NULL},\n");
100 fprintf(fp, "\t};\n\n");
106 // %jp{cfgファイル定義部書き出し}
107 void CApiDefInh::WriteCfgStart(FILE* fp)
112 void CApiDefInh::WriteVecter(FILE* fp, CApiIntStack *pIntStack)
114 #ifdef _KERNEL_PROCATR_ARM_CORTEX_M3
120 "/* ------------------------------------------ */\n"
121 "/* define interrupt handler */\n"
122 "/* ------------------------------------------ */\n\n"
125 pIntStack->WriteStackMemory(fp);
129 #if !_KERNEL_SPT_DEF_INH
132 "_KERNEL_T_INHINF _kernel_inh_tbl[%d] =\n"
134 _KERNEL_TMAX_INH_INHNO - _KERNEL_TMIN_INH_INHNO + 1);
136 for ( i = _KERNEL_TMIN_INH_INHNO; i <= _KERNEL_TMAX_INH_INHNO; i++ )
141 fprintf(fp, "\t\t{(FP)(_kernel_reset_handler)},\t\t/* reset handler */\n");
145 fprintf(fp, "\t\t{(FP)(");
146 pIntStack->WriteStackPointer(fp);
147 fprintf(fp, ")},\t\t/* stack pointer */\n");
151 fprintf(fp, "\t\t{(FP)(_kernel_nmi_handler)},\t\t/* non maskable intterupt handler */\n");
155 fprintf(fp, "\t\t{(FP)(_kernel_hw_fault_handler)},\t\t/* hard fault handler */\n");
159 for ( j = 0; j < m_iObjs; j++ )
161 if ( atoi(m_pParamPacks[j]->GetParam(DEFINH_INHNO)) == i )
168 fprintf(fp, "\t\t{(FP)(%s)},\n", m_pParamPacks[j]->GetParam(DEFINH_INTHDR));
172 fprintf(fp, "\t\t{(FP)NULL},\n");
177 fprintf(fp, "\t};\n\n");
184 // ---------------------------------------------------------------------------
186 // ---------------------------------------------------------------------------