QEMU が ARM プロセッサの割り込みを処理する方法を理解しようとしています。ARM1176 用にビルドされたベア メタル バイナリ BLOB (つまり、Linux ではなく、アセンブリ コードのみ) があります。QEMU で実行すると、初期化中にバイナリ blob のコードが CPSR のビット 13 を設定し、割り込みベクトル テーブルが にあることを示します0xFFFF0000
。GDB を接続してそのアドレスに命令をダンプすると、実際に対応する割り込みベクトル テーブルが表示されます。IRQ では、最初の irq_handler のコードを持つ に0xFFFF0018
ジャンプし0xFFFF00070
、最終的に 2 番目の irq_handler にジャンプします。
それは問題ありませんが、QEMU で割り込みを接続する方法を調べると、すべての参照が自分の irq_handler を接続していることがわかります。irq を割り当てるqemu_irq_handler
場合、IRQ が起動されたときに呼び出される を提供する必要があります。ただし、この場合、独自のハンドラーが呼び出されることは望ましくありません。私は、QEMU が ARM プロセッサをエミュレートし、0xFFFF0018
たとえば、呼び出しqemu_set_irq()
てそこでコードの実行を開始したときにジャンプすると想定していました。
私の理解に何かが欠けていると確信していますが、たとえば、割り込みをトリガーするときにQEMUを割り込みベクターテーブルにジャンプさせ、そこでコードを実行させる方法はありませんかqemu_set_irq()
?