CFGRTR = h4acfg-win32
-# %jp{C言語ファイルの追加}
-CSRCS += $(SRC_PROC_DIR)/ctxctl.c
+# %jp{アセンブラファイルの追加}
+ASRCS +=
-# アセンブラファイルの追加
-ASRCS +=
+# %jp{C言語ファイルの追加}
+CSRCS += $(SRC_PROC_DIR)/vsig_int.c
+CSRCS += $(SRC_PROC_DIR)/val_int.c
+CSRCS += $(SRC_PROC_DIR)/kcre_ctx.c
+CSRCS += $(SRC_PROC_DIR)/kdis_int.c
+CSRCS += $(SRC_PROC_DIR)/kena_int.c
+CSRCS += $(SRC_PROC_DIR)/kini_prc.c
+CSRCS += $(SRC_PROC_DIR)/krst_ctx.c
+CSRCS += $(SRC_PROC_DIR)/ksta_ctx.c
+CSRCS += $(SRC_PROC_DIR)/kswi_ctx.c
+CSRCS += $(SRC_PROC_DIR)/kwai_int.c
+
-# カーネル共通ソースの追加
+# %jp{カーネル共通ソースの追加}
include $(KERNEL_MAKINC_DIR)/knlsrc.inc
$(MAKE) -C $(CFGRTR_DIR) -f gmake.mak TARGET=$(CFGRTR) ARCH_PROC=$(ARCH_PROC) ARCH_IRC=$(ARCH_IRC) clean
$(RM) -f *.lst
+# depend
+.PHONY : depend
+depend:
+
# %jp{コンパイラ依存の設定読込み}
include $(KERNEL_MAKINC_DIR)/$(ARCH_CC)_d.inc
CFGRTR = h4acfg-win32
-# %jp{オブジェクトファイル定義}
-OBJS = $(OBJS) \
- $(OBJS_DIR)\ctxctl.obj \
+
+# %jp{アセンブリ言語ファイルの追加}
+
+# %jp{C言語ファイルの追加}
+CSRCS = $(CSRCS) $(SRC_PROC_DIR)/vsig_int.c
+CSRCS = $(CSRCS) $(SRC_PROC_DIR)/val_int.c
+CSRCS = $(CSRCS) $(SRC_PROC_DIR)/kcre_ctx.c
+CSRCS = $(CSRCS) $(SRC_PROC_DIR)/kdis_int.c
+CSRCS = $(CSRCS) $(SRC_PROC_DIR)/kena_int.c
+CSRCS = $(CSRCS) $(SRC_PROC_DIR)/kini_prc.c
+CSRCS = $(CSRCS) $(SRC_PROC_DIR)/krst_ctx.c
+CSRCS = $(CSRCS) $(SRC_PROC_DIR)/ksta_ctx.c
+CSRCS = $(CSRCS) $(SRC_PROC_DIR)/kswi_ctx.c
+CSRCS = $(CSRCS) $(SRC_PROC_DIR)/kwai_int.c
+
+# %jp{オブジェクトファイルの追加}
+OBJS = $(OBJS) $(OBJS_DIR)\vsig_int.$(EXT_OBJ)
+OBJS = $(OBJS) $(OBJS_DIR)\vsig_int.$(EXT_OBJ)
+OBJS = $(OBJS) $(OBJS_DIR)\val_int.$(EXT_OBJ)
+OBJS = $(OBJS) $(OBJS_DIR)\kcre_ctx.$(EXT_OBJ)
+OBJS = $(OBJS) $(OBJS_DIR)\kdis_int.$(EXT_OBJ)
+OBJS = $(OBJS) $(OBJS_DIR)\kena_int.$(EXT_OBJ)
+OBJS = $(OBJS) $(OBJS_DIR)\kini_prc.$(EXT_OBJ)
+OBJS = $(OBJS) $(OBJS_DIR)\krst_ctx.$(EXT_OBJ)
+OBJS = $(OBJS) $(OBJS_DIR)\ksta_ctx.$(EXT_OBJ)
+OBJS = $(OBJS) $(OBJS_DIR)\kswi_ctx.$(EXT_OBJ)
+OBJS = $(OBJS) $(OBJS_DIR)\kwai_int.$(EXT_OBJ)
+
# %jp{ALL}
# Begin Group "arch"\r
\r
# PROP Default_Filter ""\r
+# Begin Group "irc"\r
+\r
+# PROP Default_Filter ""\r
# Begin Group "simple"\r
\r
# PROP Default_Filter ""\r
SOURCE=..\..\..\..\source\arch\irc\simple\get_imsk.c\r
# End Source File\r
# End Group\r
+# End Group\r
+# Begin Group "proc"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Group "win"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Group "win32"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\source\arch\proc\win\win32\kcre_ctx.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\source\arch\proc\win\win32\kdis_int.c\r
+# End Source File\r
# Begin Source File\r
\r
-SOURCE=..\..\..\..\source\arch\proc\win\win32\ctxctl.c\r
+SOURCE=..\..\..\..\source\arch\proc\win\win32\kena_int.c\r
# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\source\arch\proc\win\win32\kini_prc.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\source\arch\proc\win\win32\krst_ctx.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\source\arch\proc\win\win32\ksta_ctx.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\source\arch\proc\win\win32\kswi_ctx.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\source\arch\proc\win\win32\kwai_int.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\source\arch\proc\win\win32\val_int.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\source\arch\proc\win\win32\vsig_int.c\r
+# End Source File\r
+# End Group\r
+# End Group\r
+# End Group\r
# End Group\r
# End Group\r
# End Target\r
/** %jp{コンテキスト情報保存ブロック} */
typedef struct _kernel_t_ctxcb
{
- BOOL blInterrupt; /**< %jp{割込み処理中フラグ} */
-
- HANDLE hEvent; /**< %jp{イベントハンドル} */
- HANDLE hThread; /**< %jp{スレッドハンドル} */
- DWORD dwThreadId; /**< %jp{スレッドID} */
-
- HANDLE hIntEvent; /**< %jp{イベントハンドル} */
- HANDLE hIntThread; /**< %jp{スレッドハンドル} */
- DWORD dwIntThreadId; /**< %jp{スレッドID} */
-
- FP entry; /**< %jp{エントリーアドレス} */
- VP_INT exinf1; /**< %jp{パラメータ1} */
- VP_INT exinf2; /**< %jp{パラメータ2} */
- jmp_buf jmpenv; /**< %jp{コンテキストリセット用のlongjmpデータ} */
+ FP entry; /**< %jp{エントリーアドレス} */
+ VP_INT exinf1; /**< %jp{パラメータ1} */
+ VP_INT exinf2; /**< %jp{パラメータ2} */
+ jmp_buf jmpenv; /**< %jp{コンテキストリセット用のlongjmpデータ} */
+
+ BOOL blInterrupt; /**< %jp{割込み処理中フラグ} */
+ HANDLE hEvent; /**< %jp{イベントハンドル} */
+ HANDLE hThread; /**< %jp{スレッドハンドル} */
+ DWORD dwThreadId; /**< %jp{スレッドID} */
+ HANDLE hIntEvent; /**< %jp{イベントハンドル} */
+ HANDLE hIntThread; /**< %jp{スレッドハンドル} */
+ DWORD dwIntThreadId; /**< %jp{スレッドID} */
} _KERNEL_T_CTXCB;
/** %jp{割込みコンテキスト制御ブロック} */
typedef struct _kernel_t_ictxcb
{
- CRITICAL_SECTION CriticalSection;
_KERNEL_T_CTXCB *runctxcb; /**< %jp{実行中のコンテキスト} */
INHNO inhno;
+ CRITICAL_SECTION CriticalSection; /**< %jp{クリティカルセクション} */
HANDLE hSemIntLock; /**< %jp{システムの排他制御用セマフォ} */
-
volatile BOOL blIntCtx; /**< %jp{割込み処理中フラグ} */
volatile BOOL blDisInt; /**< %jp{割込み禁止フラグ} */
volatile BOOL blIntDsp; /**< %jp{割込み時ディスパッチフラグ} */
extern "C" {
#endif
-void _kernel_ini_prc(void); /**< アーキテクチャ固有の初期化 */
+void _kernel_ini_prc(void); /**< %jp{アーキテクチャ固有の初期化} */
-void _kernel_ena_int(void); /**< 割り込み許可 */
-void _kernel_dis_int(void); /**< 割り込み禁止 */
-void _kernel_wai_int(void); /**< 割り込み待ち(アイドル時の処理) */
+void _kernel_ena_int(void); /**< %jp{割り込み許可} */
+void _kernel_dis_int(void); /**< %jp{割り込み禁止} */
+void _kernel_wai_int(void); /**< %jp{割り込み待ち(アイドル時の処理)} */
-void _kernel_cre_ctx(_KERNEL_T_CTXCB *ctxcb, FP entry, VP_INT exinf1, VP_INT exinf2); /**< 実行コンテキストの作成 */
-void _kernel_del_ctx(_KERNEL_T_CTXCB *ctxcb); /**< 実行コンテキストの削除 */
-void _kernel_rst_ctx(_KERNEL_T_CTXCB *ctxcb); /**< 実行コンテキストのリスタート */
-void _kernel_sta_ctx(_KERNEL_T_CTXCB *ctxcb); /**< 実行コンテキストの開始 */
-void _kernel_swi_ctx(_KERNEL_T_CTXCB *ctxcb_now, _KERNEL_T_CTXCB *ctxinf_nxt); /**< 実行コンテキストの切替 */
+void _kernel_cre_ctx(_KERNEL_T_CTXCB *ctxcb, FP entry, VP_INT exinf1, VP_INT exinf2); /**< %jp{実行コンテキストの作成} */
+void _kernel_del_ctx(_KERNEL_T_CTXCB *ctxcb); /**< %jp{実行コンテキストの削除} */
+void _kernel_rst_ctx(_KERNEL_T_CTXCB *ctxcb); /**< %jp{実行コンテキストのリスタート} */
+void _kernel_sta_ctx(_KERNEL_T_CTXCB *ctxcb); /**< %jp{実行コンテキストの開始} */
+void _kernel_swi_ctx(_KERNEL_T_CTXCB *ctxcb_now, _KERNEL_T_CTXCB *ctxinf_nxt); /**< %jp{実行コンテキストの切替} */
-void vsig_int(int inhno); /* %jp{割り込み} */
+void vsig_int(int inhno); /**< %jp{擬似割込みサポートAPI} */
#ifdef __cplusplus
}
#define _KERNEL_INI_PRC() _kernel_ini_prc()
#define _KERNEL_INI_INT(stksz, stk) do {} while(0)
-#define _KERNEL_ENA_INT() _kernel_ena_int() /**< 割り込み許可 */
-#define _KERNEL_DIS_INT() _kernel_dis_int() /**< 割り込み禁止 */
-#define _KERNEL_WAI_INT() _kernel_wai_int() /**< 割り込み待ち(アイドル時の処理) */
+#define _KERNEL_ENA_INT() _kernel_ena_int() /**< %jp{割り込み許可} */
+#define _KERNEL_DIS_INT() _kernel_dis_int() /**< %jp{割り込み禁止} */
+#define _KERNEL_WAI_INT() _kernel_wai_int() /**< %jp{割り込み待ち(アイドル時の処理)} */
#define _KERNEL_CRE_CTX(ctxcb, stksz, stk, isp, entry, par1, par2) \