Dear all,

I run qemu with trust zone emulation. 64 bit Linux is run in Normal world
(NWD) EL1 and some proprietary code are run in EL3 and Secure World (SWD)
EL1. Also i have such configuration for interrupts: 1) FIQ is assigned for
SWD; 2) IRQ is assigned for NWD.

Also there are three cases when nwd can be interrupted by FIQ: 1) NWD was
executed in kernel mode (64-bit Linux) 2) NWD was executed in 64-bit user
mode 3) NWD was executed in 32-bit user mode

When FIQ is occured it trapped by EL3. Then NWD context is saved by EL3's
code and handler of FIQ starts to execute. After returning from el3 to NWD
for 1),2)cases all works good - interrupted process continues to work. But
after returning from el3 to NWD for case 3) segmentaion fault occured for
interrupted proccess. Also this is value of spsr_el3 register before
returning from el3 to NWD EL0 - 0x600f0010 - looks ok. Also i have already
compared saved and restored context in EL3 for case 3 and it also looks ok.

Looks like qemu can't execute 32-bit code properly after returning from el3
64-bit code.
Does some one know what is the problem? Is it some limitation of qemu?

Thank you!

Reply via email to