[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [xen-unstable-smoke test] 162597: regressions - FAIL
On 11.06.2021 03:49, Stefano Stabellini wrote: > In any case, I tried to figure it out. I guessed it could be a compiler > error. I followed the white rabbit down the ARM ARM hole. I disassebled > the Xen binary [1] from the failed job. "msr SPSR, r11" is 0x0026a38c. > > The encoding should be at B9.3.12 of the ARMv7-A DDI 0406C and F5.1.121 > of ARMv8 DDI 0487D.b. Unfortunately it doesn't seem to match either one > of them and I don't understand why. > > > The "mrs r11, SPSR" is generated as 0x00262ecc. That should be described > at F5.1.117 for ARMv8 and B9.3.9 for ARMv7. Also doesn't seem to match. According to my looking at the disassembly, the two numbers you've quoted are the addresses, not insn encodings. Using my own disassembler (i.e. there's room for that one being wrong), I do get E169F00B msr spsr_cf, r11 E14FB000 mrs r11, spsr the former of which doesn't look like an exact equivalent of the input instruction. I guess it really is "msr spsr_cxsf, r11" which is meant? In gas sources I find this: /* Unadorned APSR is equivalent to APSR_nzcvq/CPSR_f (for writes). This is deprecated, but allow it anyway. */ if (is_apsr && lhs) { psr_field |= PSR_f; as_tsktsk (_("writing to APSR without specifying a bitmask is " "deprecated")); } else if (!m_profile) /* These bits are never right for M-profile devices: don't set them (only code paths which read/write APSR reach here). */ psr_field |= (PSR_c | PSR_f); There's clearly a comment missing to talk about the "unadorned" SPSR case, but the effect is exactly what is observed: Rather than defaulting to the setting of all 4 bits, only two of them get set when plain "SPSR" is used. I've not been able to spot a place where the Arm ARM specifies this, but given its size I'm not surprised at all. I'd like to note though that the MSR description doesn't even allow for plain "SPSR" (unlike MRS); only SPSR_<...> is described there. Based on this analysis I guess I can make a patch despite not being able to test it, as I'm pretty certain you really want to restore all of PSR; not just the low half ... Jan
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |