www.pudn.com > hos-v4_os.rar > hospac.h
/* ------------------------------------------------------------------------ */
/* Hyper Operating System V4 μITRON4.0仕様 Real-Time OS */
/* プロセッサ抽象化コンポーネント (ARM 用) */
/* */
/* Copyright (C) 1998-2002 by Project HOS */
/* http://sourceforge.jp/projects/hos/ */
/* ------------------------------------------------------------------------ */
#ifndef __HOS_V4__ARM__hospac_h__
#define __HOS_V4__ARM__hospac_h__
#include "itron.h"
/* ------------------------------------------ */
/* 定数定義 */
/* ------------------------------------------ */
/* ARM固有 割り込み管理機構 */
#define ARM_IMSK_USR_MODE 0x00000010 /* ユーザーモード */
#define ARM_IMSK_FIQ 0x00000040 /* FIQマスクビット */
#define ARM_IMSK_IRQ 0x00000080 /* IRQマスクビット */
/* ------------------------------------------ */
/* 型定義 */
/* ------------------------------------------ */
/* コンテキスト情報保存ブロック */
typedef struct t_hos_pac_ctxinf
{
VP sp; /* スタックポインタ保存領域 */
} T_HOSPAC_CTXINF;
/* ARM固有 割り込み管理機構 */
typedef UW IMSK; /* 割り込みマスク */
/* ---------------------------------- */
/* グローバル変数宣言 */
/* ---------------------------------- */
extern UW hospac_arm_imsk; /* 割り込みマスク */
extern UW hospac_arm_bimsk; /* ベース割り込みマスク */
/* ------------------------------------------ */
/* 関数宣言 */
/* ------------------------------------------ */
#ifdef __cplusplus
extern "C" {
#endif
#define hospac_ini_sys() hos_arm_ini_int() /* プロセッサ抽象化コンポーネントの初期化 */
void hospac_dis_int(void); /* 割り込み禁止 */
void hospac_ena_int(void); /* 割り込み許可 */
void hospac_cre_ctx_asm(T_HOSPAC_CTXINF *pk_ctxinf,
VP sp, FP task, VP_INT exinf); /* 実行コンテキストの作成(アセンブラ用) */
#define hospac_cre_ctx(pk_ctxinf, exinf, task, stksz, stk) \
hospac_cre_ctx_asm(pk_ctxinf, (VP)((UB *)(stk) + ((stksz) & 0xfffffffc)), task, exinf);
/* アセンブラ側で都合がいいように引数を入れ替え */
#define hospac_del_ctx(pk_ctxinf) /* 実行コンテキストの削除 */
void hospac_swi_ctx(T_HOSPAC_CTXINF *pk_pre_ctxinf,
T_HOSPAC_CTXINF *pk_nxt_ctxinf); /* 実行コンテキストの切替 */
#define hospac_idle() /* アイドル時処理 */
void hos_arm_ini_int(void); /* 割り込み処理の初期化(ユーザー作成関数) */
INTNO hos_arm_sta_irq(void); /* IRQ割り込み処理開始(ユーザー作成関数) */
void hos_arm_end_irq(void); /* IRQ割り込み処理終了(ユーザー作成関数) */
INTNO hos_arm_sta_fiq(void); /* FIQ割り込み処理開始(ユーザー作成関数) */
void hos_arm_end_fiq(void); /* FIQ割り込み処理終了(ユーザー作成関数) */
/* ARM固有 割り込み管理機構 */
ER chg_imsk(IMSK imsk); /* 割り込みマスク指定 */
ER get_imsk(IMSK *p_imsk); /* 割り込みマスクの参照 */
#ifdef __cplusplus
}
#endif
#endif /* __HOS_V4__ARM__hospac_h__ */
/* ------------------------------------------------------------------------ */
/* Copyright (C) 1998-2002 by Project HOS */
/* ------------------------------------------------------------------------ */