2 * Hyper Operating System V4 Advance
5 * @brief %jp{プロセッサアーキテクチャ固有機能(SH2 processor)}
7 * Copyright (C) 1998-2006 by Project HOS
8 * http://sourceforge.jp/projects/hos/
12 #ifndef _KERNEL__arch__proc__sh__sh2a_fpu__proc_h__
13 #define _KERNEL__arch__proc__sh__sh2a_fpu__proc_h__
16 /** %jp{コンテキスト情報保存ブロック}%en{Execution context control block} */
17 typedef struct _kernel_t_ctxcb
22 /** %jp{割込みコンテキスト制御ブロック} */
23 typedef struct _kernel_t_ictxcb
31 extern _KERNEL_T_ICTXCB _kernel_ictxcb; /**< %jp{割込みコンテキスト制御ブロック} */
38 void _kernel_ena_int(void); /**< %jp{割込み許可}%en{Enable interrupt} */
39 void _kernel_dis_int(void); /**< %jp{割込み禁止}%en{Disable interrupt} */
40 void _kernel_wai_int(void); /**< %jp{割込み待ち(アイドル時の処理)}%en{Wait for interrupt(sleep)} */
42 void _kernel_cre_ctx(_KERNEL_T_CTXCB *pk_ctxcb, VP isp, FP entry, VP_INT par1, VP_INT par2); /**< %jp{実行コンテキストの作成}%en{Create execution context)} */
43 void _kernel_sta_ctx(_KERNEL_T_CTXCB *pk_ctxcb); /**< %jp{実行コンテキストの開始}%en{Stert context)} */
44 void _kernel_rst_ctx(VP_INT par1, VP_INT par2, VP isp, FP entry); /**< %jp{実行コンテキストのリスタート}%en{Restert context)} */
45 void _kernel_swi_ctx(_KERNEL_T_CTXCB *pk_ctxcb_nxt, _KERNEL_T_CTXCB *pk_ctxcb_now); /**< %jp{実行コンテキストの切替}%en{Switch context)} */
54 #define _KERNEL_INI_PRC() do{}while(0) /**< %jp{プロセッサの初期化}%en{Initialize processor} */
56 #define _KERNEL_INI_INT(stksz, stk) do { _kernel_ictxcb.isp = (VB *)(stk) + (stksz); } while (0)
57 #define _KERNEL_ENA_INT() _kernel_ena_int() /**< %jp{割込み許可}%en{Enable interrupt} */
58 #define _KERNEL_DIS_INT() _kernel_dis_int() /**< %jp{割込み禁止}%en{Disable interrupt} */
59 #define _KERNEL_WAI_INT() _kernel_wai_int() /**< %jp{割込み待ち(アイドル時の処理)}%en{Wait for interrupt(sleep)} */
61 #define _KERNEL_CRE_CTX(pk_ctxcb, stksz, stk, isp, entry, par1, par2) \
62 _kernel_cre_ctx((pk_ctxcb), (isp), (entry), (par1), (par2)) /**< %jp{実行コンテキスト生成}%en{Create execution context)} */
63 #define _KERNEL_DEL_CTX(pk_ctxcb) _kernel_del_ctx(pk_ctxcb)
64 #define _KERNEL_RST_CTX(pk_ctxcb, stksz, stk, isp, entry, par1, par2) \
65 _kernel_rst_ctx((par1), (par2), (isp), (entry)) /**< %jp{実行コンテキストリスタート}%en{Restert context)} */
66 #define _KERNEL_STA_CTX(pk_ctxcb) _kernel_sta_ctx(pk_ctxcb)
67 #define _KERNEL_SWI_CTX(pk_ctxcb_now, pk_ctxcb_nxt) \
68 _kernel_swi_ctx((pk_ctxcb_nxt), (pk_ctxcb_now)) /**< %jp{コンテキストのスイッチ}%en{Switch context)} */
73 #endif /* _KERNEL__arch__proc__sh__sh2a_fpu__proc_h__ */