1 // ---------------------------------------------------------------------------
2 // Hyper Operating System V4 コンフィギュレーター
5 // Copyright (C) 1998-2003 by Project HOS
6 // http://sourceforge.jp/projects/hos/
7 // ---------------------------------------------------------------------------
19 #define INTSTK_STKSZ 0
24 CApiIntStack::CApiIntStack()
27 m_iParamSyntax[0] = 0; // 単独パラメーター
31 m_szStackPointer[0] = '\0';
36 CApiIntStack::~CApiIntStack()
42 int CApiIntStack::AutoId(void)
49 int CApiIntStack::AnalyzeApi(const char* pszApiName, const char* pszParams)
51 if ( strcmp(pszApiName, "KERNEL_INT_STK") == 0 )
55 return CFG_ERR_MULTIDEF;
58 if ( m_szStackPointer[0] != '\0' )
60 return CFG_ERR_DEF_CONFLICT;
63 return AddParams(pszParams);
65 else if ( strcmp(pszApiName, "KERNEL_INT_ISP") == 0 )
69 return CFG_ERR_DEF_CONFLICT;
72 if ( m_szStackPointer[0] != '\0' )
74 return CFG_ERR_MULTIDEF;
77 strcpy(m_szStackPointer, pszParams);
81 return CFG_ERR_NOPROC;
86 void CApiIntStack::WriteCfgDef(FILE* fp)
93 if ( m_iObjs <= 0 && m_szStackPointer[0] == '\0' )
101 "/* ------------------------------------------ */\n"
102 "/* interrupt stack */\n"
103 "/* ------------------------------------------ */\n\n"
107 if ( m_szStackPointer[0] != '\0' )
111 "const VP _kernel_int_isp[1] = {(VP)(%s)};\t/* interrupt initial stack pointer */\n",
116 pszSize = m_pParamPacks[0]->GetParam(INTSTK_STKSZ);
117 pszStack = m_pParamPacks[0]->GetParam(INTSTK_STK);
119 if ( strcmp(pszStack, "NULL") == 0 )
123 "VP _kernel_int_stkblk[((%s) + sizeof(VP) - 1) / sizeof(VP)];\t/* interrupt stack block*/\n",
124 pszSize, _KERNE_INTSTK_NUM);
125 pszStack = "_kernel_int_stkblk";
131 "const VP _kernel_int_isp[1] = {(VP)((VB *)(%s) + (%s))};\t/* interrupt initial stack pointer */\n",
137 "\n/* interrupt initial stack pointer */\n"
138 "const VP _kernel_int_isp[%d] =\n{\n",
141 for ( i = 0; i < _KERNE_INTSTK_NUM; i++ )
145 "\t(VP)((VB *)(%s) + ((((%s) / %d) & ~(sizeof(VP) - 1)) * %d)),\n",
146 pszStack, pszSize, _KERNE_INTSTK_NUM, i+1);
156 // ---------------------------------------------------------------------------
157 // Copyright (C) 1998-2006 by Project HOS
158 // ---------------------------------------------------------------------------