トラストゾーンエミュレーションでqemuを実行しています。64 ビット Linux は Normal world (NWD) EL1 で実行され、一部の独自コードは EL3 および Secure World (SWD) EL1 で実行されます。また、割り込みの構成は次のとおりです。1) FIQ は SWD に割り当てられます。2) IRQ は NWD に割り当てられます。
また、nwd が FIQ によって中断される可能性のある 3 つのケースがあります。
FIQ が発生すると、EL3 によってトラップされます。次に、NWD コンテキストが EL3 のコードによって保存され、FIQ のハンドラーが実行を開始します。el3 から NWD に戻った後、1)、2) ケースはすべて正常に動作します - 中断されたプロセスは引き続き動作します。しかし、ケース 3) で el3 から NWD に戻った後、中断されたプロセスに対してセグメンテーション フォールトが発生しました。また、これは el3 から NWD EL0 に戻る前の spsr_el3 レジスタの値 - 0x600f0010 - 正常に見えます。また、ケース3のEL3で保存および復元されたコンテキストをすでに比較しており、それも問題ないようです。これはqemuのバグのようです。何が問題なのか知っている人はいますか?