OSDN Git Service

add Cortex-M3 PendSV
[hos/hos-v4a.git] / cfgrtr / source / intstk.cpp
index 287ecba..7332136 100755 (executable)
@@ -1,9 +1,9 @@
 // ---------------------------------------------------------------------------
-//  Hyper Operating System V4  コンフィギュレーター                           
-//    HOS_INT_STK API の処理                                                  
-//                                                                            
-//                                    Copyright (C) 1998-2010 by Project HOS  
-//                                    http://sourceforge.jp/projects/hos/     
+//  Hyper Operating System V4  コンフィギュレーター
+//    HOS_INT_STK API の処理
+//
+//                                    Copyright (C) 1998-2010 by Project HOS
+//                                    http://sourceforge.jp/projects/hos/
 // ---------------------------------------------------------------------------
 
 
 #define INTSTK_STK                     1
 
 
+#define DEFAULT_SIZE           "256"
+#define DEFAULT_STACK          "NULL"
+
+
 // コンストラクタ
 CApiIntStack::CApiIntStack()
 {
@@ -76,8 +80,8 @@ void  CApiIntStack::WriteCfgDef(FILE* fp)
        // パラメータ読み出し
        if ( m_iObjs <= 0 )
        {
-               pszSize  = "256";
-               pszStack = "NULL";
+               pszSize  = DEFAULT_SIZE;
+               pszStack = DEFAULT_STACK;
        }
        else
        {
@@ -109,7 +113,6 @@ void  CApiIntStack::WriteCfgDef(FILE* fp)
                                "const VP _kernel_int_isp = (VP)((VB *)(%s) + (SIZE)(%s));\n",
                                pszStack, pszSize);
        }
-
 }
 
 
@@ -122,16 +125,16 @@ void CApiIntStack::WriteCfgIni(FILE* fp)
        // パラメータ読み出し
        if ( m_iObjs <= 0 )
        {
-               pszSize  = "256";
-               pszStack = "NULL";
+               pszSize  = DEFAULT_SIZE;
+               pszStack = DEFAULT_STACK;
        }
        else
        {
                pszSize  = m_pParamPacks[0]->GetParam(INTSTK_STKSZ);
                pszStack = m_pParamPacks[0]->GetParam(INTSTK_STK);
        }
-       
-               
+
+
        if ( strcmp(pszStack, "NULL") == 0 )
        {
                fprintf(
@@ -142,13 +145,64 @@ void CApiIntStack::WriteCfgIni(FILE* fp)
        {
                fprintf(
                        fp,
-                       "\t_KERNEL_SYS_INI_SYSSTK((SIZE)(%s), (VP)(%s));\n",
+                       "\t_KERNEL_SYS_INI_INTSTK((SIZE)(%s), (VP)(%s));\n",
                        pszSize, pszStack);
        }
 }
 
+void CApiIntStack::WriteStackMemory(FILE* fp)
+{
+       const char* pszSize;
+       const char* pszStack;
+
+       // パラメータ読み出し
+       if ( m_iObjs <= 0 )
+       {
+               pszSize  = DEFAULT_SIZE;
+               pszStack = DEFAULT_STACK;
+       }
+       else
+       {
+               pszSize  = m_pParamPacks[0]->GetParam(INTSTK_STKSZ);
+               pszStack = m_pParamPacks[0]->GetParam(INTSTK_STK);
+       }
+
+       if ( strcmp(pszStack, "NULL") == 0 )
+       {
+               fprintf(fp, "extern VP       _kernel_int_stkblk[((%s) + sizeof(VP) - 1) / sizeof(VP)];\n", pszSize);
+       }
+}
+
+
+void CApiIntStack::WriteStackPointer(FILE* fp)
+{
+       const char* pszSize;
+       const char* pszStack;
+
+       // パラメータ読み出し
+       if ( m_iObjs <= 0 )
+       {
+               pszSize  = DEFAULT_SIZE;
+               pszStack = DEFAULT_STACK;
+       }
+       else
+       {
+               pszSize  = m_pParamPacks[0]->GetParam(INTSTK_STKSZ);
+               pszStack = m_pParamPacks[0]->GetParam(INTSTK_STK);
+       }
+
+       if ( strcmp(pszStack, "NULL") == 0 )
+       {
+               fprintf(fp, "&_kernel_int_stkblk[((%s) + sizeof(VP) - 1) / sizeof(VP)]", pszSize);
+       }
+       else
+       {
+               fprintf(fp, "(VB *)(%s) + (SIZE)(%s)", pszStack, pszSize);
+       }
+}
+
 
 
 // ---------------------------------------------------------------------------
-//  end of file                           
+//  end of file
 // ---------------------------------------------------------------------------