When restoring spsr values when handling traps use spsr_fsxc instead
authorjsg <jsg@openbsd.org>
Sun, 18 Jan 2015 16:26:39 +0000 (16:26 +0000)
committerjsg <jsg@openbsd.org>
Sun, 18 Jan 2015 16:26:39 +0000 (16:26 +0000)
commit3a5a103270b4bc42856519b66fa0218ad036241c
treebf7aeec05709e0ec6317134596657b8559ecd6ea
parentc0797b8192b4eb07c37a812f632ff4a703255c01
When restoring spsr values when handling traps use spsr_fsxc instead
of spsr_all so all the bits are restored.  Using the msr instruction
with spsr_all is treated the same as spsr_fc and does not include the
status and extension fields (bits 23:8).

This fixes the problem of some i.MX6 machines powering up with the
big endian bit set in the extension field causing them to crash
on returning from the first interrupt.

From NetBSD.
sys/arch/arm/include/frame.h