S3MIPSシステム/例外処理コプロセッサ
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[S3MIPSシステム]]
*例外処理コプロセッサ [#d975304a]
例外処理コプロセッサの仕様。
----
#contents
**例外処理コプロセッサ [#odb3c7f3]
例外処理(主に割り込み)を担当するコプロセッサ。
***レジスタ割当て [#w1d8c3ff]
|レジスタ番号|レジスタ名|
|12|Status|
|13|Cause|
|14|EPC|
-Status Register
[31:16] -> Reserved
[15: 8] -> Interrupt mask
[ 7: 6] -> Reserved
[ 5] -> Reserved (old user-mode interrupt enable)
[ 4] -> Old kernel-mode interrupt enable
[ 3] -> Reserved (previous user-mode interrupt enable)
[ 2] -> Previous kernel-mode interrupt enable
[ 1] -> Reserved (current user-mode interrupt enable)
[ 0] -> Current kernel-mode interrupt enable
-Cause Register
[ 31] -> Exception in delay slot
[30:16] -> Reserved
[15: 8] -> Pending interrupt
[ 9: 6] -> Reserved
[ 5: 2] -> Exception code
[ 1: 0] -> Reserved
***割り込みコード割当て [#gbd40925]
|番号|割り込み種別|割り込みマスクビット|割り込みハンドラ登録先|
|0x01|タイマ|0|0x7fe0|
|0x02|KEY1|1|0x7fe4|
|0x04|KEY2|2|0x7fe8|
|0x08|KEY3|3|0x7fec|
|0x10|キーボード|4|0x7ff0|
|0x20||5|0x7ff4|
|0x40||6|0x7ff8|
|0x80||7|0x7ffc|
***例外コード [#b6b95500]
|番号|例外種別|
|0|外部割り込み|
**例外ハンドラ [#z7c38101]
例外ハンドラは命令メモリの一部として実装を行う。ただし命令を格納するアドレスは0x002cからとする。これはboot.sで定義される。
-例外ハンドラで行う処理
--レジスタの退避
--例外処理
---キー割り込みに対応するサブルーチンコール
---タイマ割り込みに対応するサブルーチンコール
--レジスタの復帰
--戻りアドレスの判定
---通常はEPC-4に復帰
---ディレイスロットの命令が実行中はEPC-8に復帰
--RFE
**割り込み [#g0af4e39]
-キー割り込み
-タイマ割り込み
終了行:
[[S3MIPSシステム]]
*例外処理コプロセッサ [#d975304a]
例外処理コプロセッサの仕様。
----
#contents
**例外処理コプロセッサ [#odb3c7f3]
例外処理(主に割り込み)を担当するコプロセッサ。
***レジスタ割当て [#w1d8c3ff]
|レジスタ番号|レジスタ名|
|12|Status|
|13|Cause|
|14|EPC|
-Status Register
[31:16] -> Reserved
[15: 8] -> Interrupt mask
[ 7: 6] -> Reserved
[ 5] -> Reserved (old user-mode interrupt enable)
[ 4] -> Old kernel-mode interrupt enable
[ 3] -> Reserved (previous user-mode interrupt enable)
[ 2] -> Previous kernel-mode interrupt enable
[ 1] -> Reserved (current user-mode interrupt enable)
[ 0] -> Current kernel-mode interrupt enable
-Cause Register
[ 31] -> Exception in delay slot
[30:16] -> Reserved
[15: 8] -> Pending interrupt
[ 9: 6] -> Reserved
[ 5: 2] -> Exception code
[ 1: 0] -> Reserved
***割り込みコード割当て [#gbd40925]
|番号|割り込み種別|割り込みマスクビット|割り込みハンドラ登録先|
|0x01|タイマ|0|0x7fe0|
|0x02|KEY1|1|0x7fe4|
|0x04|KEY2|2|0x7fe8|
|0x08|KEY3|3|0x7fec|
|0x10|キーボード|4|0x7ff0|
|0x20||5|0x7ff4|
|0x40||6|0x7ff8|
|0x80||7|0x7ffc|
***例外コード [#b6b95500]
|番号|例外種別|
|0|外部割り込み|
**例外ハンドラ [#z7c38101]
例外ハンドラは命令メモリの一部として実装を行う。ただし命令を格納するアドレスは0x002cからとする。これはboot.sで定義される。
-例外ハンドラで行う処理
--レジスタの退避
--例外処理
---キー割り込みに対応するサブルーチンコール
---タイマ割り込みに対応するサブルーチンコール
--レジスタの復帰
--戻りアドレスの判定
---通常はEPC-4に復帰
---ディレイスロットの命令が実行中はEPC-8に復帰
--RFE
**割り込み [#g0af4e39]
-キー割り込み
-タイマ割り込み
ページ名: