OS_InitContext

構文

#include <iris/os.h>

void OS_InitContext( OSContext* context,
                     u32         newpc,
                     u32         newsp );

引数

context コンテキスト
newpc 開始アドレス
newsp スタック

返り値

なし。

説明

コンテキストを初期化します。

コンテキスト構造体 OSContext は以下のメンバーを持っています。

u32 cpsr CPSR (カレントプログラムステータスレジスタ)
u32 r[13] R0〜R12レジスタ
u32 sp スタックポインタ (R13 レジスタ)
u32 lr リンクレジスタ (R14 レジスタ)
u32 pc_plus4 プログラムカウンタ+4 (R15 レジスタ+4)
u32 sp_svc スーパバイザモードのスタック退避用 (*1)

(*1 … コンパイルオプションによっては存在しません)

初期化では、newsp から上位方向に svc 用スタックを確保します。(コンパイルオプションによってはこの処理は行いません)
cpsr は CPSRレジスタからプロセッサモード(ARM、THUMBの区別)を調べ適切に設定されます。r[13] (R0〜R12レジスタ)、lr (R14レジスタ)はゼロクリアされます。pc_plus4 は newpc で指定した値+4 となります。

参照

OS_SaveContext, OS_LoadContext, OS_DumpContext

履歴

2003/12/01 初版