On 10/19/21 9:44 AM, Warner Losh wrote:
> + cpsr_write(env, regs->uregs, 0xffffffff, CPSRWriteRaw);
This looks a bit suspicious.
Over in linux-user we use
cpsr_write(env, regs->uregs, CPSR_USER | CPSR_EXEC,
Are you setting something special in pt_regs that would warrant writing supervisor bits of
CPSR? In addition, CPSRWriteRaw won't rebuild hflags, which means that changes to Thumb
state won't be recognized properly.
Now that you highlight it, the code I posted looks wrong. The above code makes better
sense to me. I'll make the change in our bsd-user fork and run it through the FreeBSD
test harness that we have. I'll see if it introduces any regressions. Today I have an
environment that I maintain by hand that runs ~5900 tests, of which bsd-user's
qemu-arm passes like ~5500. My long term goal is to get that integrated first into the
bsd-user fork's CI and later into the optional FreeBSD CI in qemu project. In addition,
I'll be tagging 'testing qemu-user' in the testing environment so we can exclude things
not emulated and/or mark known problems with a bug pointer. The test takes about
3 hours to run in emulation is the only thing I'm worried about...