ベクタ

SOLID-OSでは、ベクタ発生時に登録した関数を呼び出すことができます。

関数は、コアサービスが内部で所有しているスタックを使用して、SVCモードで呼び出されます。

登録がなければ、例外発生時にデフォルトの動作が呼び出されます。 JTAGデバッガが接続されている場合は、予め埋め込まれているブレークポイント命令によって 実行が停止し、IDE上に発生した例外の種類などの情報が表示されます。

ベクタ番号

SOLID_VECTOR_UNDEF
SOLID_VECTOR_SWI
SOLID_VECTOR_PREFETCH
SOLID_VECTOR_DATAABORT
SOLID_VECTOR_IRQ
SOLID_VECTOR_FIQ

定数

名前 説明
SOLID_VECTOR_UNDEF 0 未定義命令
SOLID_VECTOR_SWI 1 ソフトウェア割り込み
SOLID_VECTOR_PREFETCH 2 プリフェッチアボート
SOLID_VECTOR_DATAABORT 3 データアボート
SOLID_VECTOR_IRQ 4 割り込み要求
SOLID_VECTOR_FIQ 5 高速割り込み要求

SOLID_VECTOR_HANDLER

typedef struct _SOLID_VECTOR_HANDLER_ SOLID_VECTOR_HANDLER

説明

ベクタハンドラ登録用構造体

定義

typedef struct _SOLID_VECTOR_HANDLER_ {
   struct _SOLID_VECTOR_HANDLER_ *pNext;
   int (*func)(void*, SOLID_CPU_CONTEXT*);
   void* param;
} SOLID_VECTOR_HANDLER;

メンバー

pNext
コアサービス側で使用
func
ベクタ発生時に呼び出される関数
param
ベクタ発生時に呼び出される関数に渡す引数

SOLID_VECTOR_Register

int SOLID_VECTOR_Register(int vec, SOLID_VECTOR_HANDLER *pHandler)

割り込みベクタのハンドラを登録します

パラメータ:
戻り値:

SOLID_VECTOR_UnRegister

int SOLID_VECTOR_UnRegister(int vec, SOLID_VECTOR_HANDLER *pHandler)

割り込みベクタのハンドラの登録を解除します

パラメータ:
戻り値:

SOLID_VECTOR_IsInInterrupt

int SOLID_VECTOR_IsInInterrupt(void)

割り込みベクタ処理中かどうかを判定する

戻り値:
  • 0: 割り込み処理中でない
  • 1: 割り込み処理中である