第13章 システム・ダウン
本章では,RI600V4が提供しているシステム・ダウン機能について解説しています。
RI600V4の稼働中に回復不可能な事象が発生するとシステム・ダウンとなり,システム・ダウン・ルーチンが呼び出されます。
システム・ダウン・ルーチンは,ユーザ・オウン・コーディング部として実装する必要があります。
13.2.1 システム・ダウン・ルーチン(_RI_sys_dwn__( ) )
以下に,システム・ダウン・ルーチンを記述する場合の基本型を示します。システム・ダウン・ルーチンからリターンしてはなりません。
#include "kernel.h" /*標準ヘッダ・ファイルの定義*/
#include "kernel_id.h" /*cfg600が出力するヘッダ・ファイルの定義*/
/* プロトタイプ宣言 */
void _RI_sys_dwn__ ( W type, VW inf1, VW inf2, VW inf3 );
void _RI_sys_dwn__ ( W type, VW inf1, VW inf2, VW inf3 )
{
............
............
while(1);
}
|
備考 システム・ダウン・ルーチンの関数名は“_RI_sys_dwn__”です。
- スタック
システム・ダウン・ルーチンは,システム・スタックを使用します。
- サービス・コールの発行
システム・ダウン・ルーチンからサービス・コールを呼び出してはなりません。
表13−1 システム・ダウン・ルーチン処理開始時のPSW
|
|
|
|
|
|
|
- type≧0の場合:システム・ダウン発生前と同じ
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13.2.2 システム・ダウン・ルーチンのパラメータ
-
type == -1(カーネル管理割り込みハンドラ終了時のエラー)
表13−2 システム・ダウン・ルーチンのパラメータ(
type == -1)
|
|
|
|
|
|
|
カーネル管理割り込みハンドラ終了時点で,PSW.PMが1(ユーザ・モード)である。
|
|
|
カーネル管理割り込みハンドラ終了時点で,PSW.IPL>カーネル割り込みマスクレベルである。
|
|
|
カーネル管理割り込みハンドラ終了時点で,CPUロック状態である。
|
表13−3 システム・ダウン・ルーチンのパラメータ(
type == -2)
|
|
|
|
|
|
|
|
|
|
ext_tsk呼び出し時点で,PSW.IPL>カーネル割り込みマスクレベルである。
|
-
type == -3(組み込まれていないサービス・コールの呼び出し)
表13−4 システム・ダウン・ルーチンのパラメータ(
type == -3)
-
type == -16(未定義の可変ベクタ割り込み)
表13−5 システム・ダウン・ルーチンのパラメータ(
type == -16)
|
|
|
- cfg600で“-U ”オプションを指定しない場合 不定
- cfg600 で“-U ”オプションを指定した場合 ベクタ番号
|
CPUの割り込み処理によってスタックに退避されたPC
|
CPUの割り込み処理によってスタックに退避されたPSW
|
-
type == -17(未定義の固定ベクタ/例外ベクタ割り込み)
表13−6 システム・ダウン・ルーチンのパラメータ(
type == -17)
|
|
|
- cfg600で“-U ”オプションを指定しない場合 不定
- cfg600 で“-U ”オプションを指定した場合 ベクタ番号
|
CPUの割り込み処理によってスタックに退避されたPC
|
CPUの割り込み処理によってスタックに退避されたPSW
|
表13−7 システム・ダウン・ルーチンのパラメータ(
type > 0)