インテルのみ表示可能 — GUID: iga1409336837182
Ixiasoft
3.4.2.1. status レジスター
3.4.2.2. estatus レジスター
3.4.2.3. bstatus レジスター
3.4.2.4. ienable レジスター
3.4.2.5. ipending レジスター
3.4.2.6. cpuid レジスター
3.4.2.7. exception レジスター
3.4.2.8. pteaddr レジスター
3.4.2.9. tlbacc レジスター
3.4.2.10. tlbmisc レジスター
3.4.2.11. badaddr レジスター
3.4.2.12. config レジスター
3.4.2.13. mpubase レジスター
3.4.2.14. mpuacc レジスター
8.5.1. add
8.5.2. addi
8.5.3. and
8.5.4. andhi
8.5.5. andi
8.5.6. beq
8.5.7. bge
8.5.8. bgeu
8.5.9. bgt
8.5.10. bgtu
8.5.11. ble
8.5.12. bleu
8.5.13. blt
8.5.14. bltu
8.5.15. bne
8.5.16. br
8.5.17. break
8.5.18. bret
8.5.19. call
8.5.20. callr
8.5.21. cmpeq
8.5.22. cmpeqi
8.5.23. cmpge
8.5.24. cmpgei
8.5.25. cmpgeu
8.5.26. cmpgeui
8.5.27. cmpgt
8.5.28. cmpgti
8.5.29. cmpgtu
8.5.30. cmpgtui
8.5.31. cmple
8.5.32. cmplei
8.5.33. cmpleu
8.5.34. cmpleui
8.5.35. cmplt
8.5.36. cmplti
8.5.37. cmpltu
8.5.38. cmpltui
8.5.39. cmpne
8.5.40. cmpnei
8.5.41. custom
8.5.42. div
8.5.43. divu
8.5.44. eret
8.5.45. flushd
8.5.46. flushda
8.5.47. flushi
8.5.48. flushp
8.5.49. initd
8.5.50. initda
8.5.51. initi
8.5.52. jmp
8.5.53. jmpi
8.5.54. ldb / ldbio
8.5.55. ldbu / ldbuio
8.5.56. ldh / ldhio
8.5.57. ldhu / ldhuio
8.5.58. ldw / ldwio
8.5.59. mov
8.5.60. movhi
8.5.61. movi
8.5.62. movia
8.5.63. movui
8.5.64. mul
8.5.65. muli
8.5.66. mulxss
8.5.67. mulxsu
8.5.68. mulxuu
8.5.69. nextpc
8.5.70. nop
8.5.71. nor
8.5.72. or
8.5.73. orhi
8.5.74. ori
8.5.75. rdctl
8.5.76. rdprs
8.5.77. ret
8.5.78. rol
8.5.79. roli
8.5.80. ror
8.5.81. sll
8.5.82. slli
8.5.83. sra
8.5.84. srai
8.5.85. srl
8.5.86. srli
8.5.87. stb / stbio l
8.5.88. sth / sthio
8.5.89. stw / stwio
8.5.90. sub
8.5.91. subi
8.5.92. sync
8.5.93. trap
8.5.94. wrctl
8.5.95. wrprs
8.5.96. xor
8.5.97. xorhi
8.5.98. xori
インテルのみ表示可能 — GUID: iga1409336837182
Ixiasoft
3.7.13.4. 割り込みおよび命令関連の例外からの戻り値
eret命令は、例外前のアドレスで実行を再開するために使用されます。
例外ハンドラーがレジスターを変更すると、レジスターが戻る際にそれらが復元されるようにする必要があります。これは次のいずれかの方法で処理できます。
- ISR の場合、EIC インターフェイスとシャドー・レジスター・セットが実装されていて、ISR に専用のレジスターセットがある場合は、ソフトウェアのアクションは必要ではありません。Nios II プロセッサーはレジスター内容を復元する eretを実行すると、前のレジスターセットに戻ります。
- 詳しくは、この章の「外部割り込みコントローラーを使用したネスト式例外」のセクションを参照してください。
- 割り込み以外の例外、内部割り込みコントローラーのあるシステムの ISR、および専用のシャドー・レジスター・セットがない ISR の場合、例外ハンドラーはエントリー上のレジスターを保存し、終了時にそれらを復元する必要があります。レジスター内容をスタックに保存することは一般的であり、再入可能な実装です。
注: 例外一時 (et または r24) レジスターを保存および復元する必要はありません。
eret 命令を実行すると、プロセッサーは次のタスクを実行します。
- 次のように、statusの以前の内容を復元します。
- status.CRSが 0 の場合 estatus を statusにコピーする。
- status.CRSがゼロ以外の場合、 sstatus を statusにコピーする。
- status.CRSの元の値で指定されたレジスターセット内の ea レジスター (r29) のアドレスに、プログラム実行を転送します。
注: eret 命令はプロセッサーが NMI モードを終了させることができます。しかしながら、プロセッサーを NMI モードにすることはできません。言い換えると、status.NMI が 0 で estatus.NMI ( または sstatus.NMI) が 1 の場合、eretの実行後も、status.NMIはまだ 0 のままです。この制限は、プロセッサーが誤って NMI モードに入るのを防ぎます。
注: EIC インターフェイスおよびシャドー・レジスター・セットが Nios II コアに実装されている場合、ISR を含めたソフトウェアは Nios II EDS のバージョン 9.0 以降を含めた GCC コンパイラーのバージョンで構築されている必要があります。それ以前のバージョンはシャドー・レジスター・セットと互換性のない eret命令が実装されています。