On 08/03/2017 03:13 PM, Richard Henderson wrote: > On 08/02/2017 09:43 AM, Peter Maydell wrote: >> + if (val & XPSR_EXCP) { >> + /* This is a CPSR format value from an older QEMU. (We can tell >> + * because values transferred in XPSR format always have zero >> + * for the EXCP field, and CPSR format will always have bit 4 >> + * set in CPSR_M.) Rearrange it into XPSR format. The >> significant >> + * differences are that the T bit is not in the same place, the >> + * primask/faultmask info may be in the CPSR I and F bits, and >> + * we do not want the mode bits. >> + */ >> + uint32_t newval = val; >> + >> + newval &= (CPSR_NZCV | CPSR_Q | CPSR_IT | CPSR_GE); >> + if (val & CPSR_T) { >> + newval |= XPSR_T; >> + } >> + /* If the I or F bits are set then this is a migration from >> + * an old QEMU which still stored the M profile FAULTMASK >> + * and PRIMASK in env->daif. For a new QEMU, the data is >> + * transferred using the vmstate_m_faultmask_primask subsection. >> + */ > > The second comment seems sort of redundant with the first now.
... and I meant to say, otherwise, Reviewed-by: Richard Henderson <richard.hender...@linaro.org> r~