#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 初版