Message ID | 20240816072311.353234-1-richard.henderson@linaro.org (mailing list archive) |
---|---|
Headers | show |
Series | target/sparc: emulate floating point queue when raising fp traps | expand |
On 8/17/24 07:46, Carl Hauser wrote: > OK, I think the problem is the handling of dc->fsr_qne in trans_STDFQ, lines 4583 and 4593 > -- the code is evaluating dc->fsr_qne at translation time and not at runtime. That's what patch 4 does, ensure that the runtime value is available at translation time. r~
On 8/17/24 08:58, Carl Hauser wrote: > Yes, but ... > > isn't the state of dc->fsr_qne at translation time irrelevant? No, because patch 4 made it part of the hashed TB state. It's checked and verified, generating a new TB if state does not match. > And changing it at > translation time (line 4593) is dangerous (because it pertains to runtime, not translation > time); i.e. why is 0 stored at both translation time (4593) and at runtime (4591)? That keeps the translation time state in sync with the runtime state until the end of the TB. r~
On 8/17/24 09:48, Carl Hauser wrote: > netbsd panics in the kernel trap handler; unfortunately it does not include the fsr in the > panic message, but I expect it will be the same as on Solaris. Ok, I have reproduced this with netbsd 9.3. I'll have a look. r~
On 8/18/24 10:03, Carl Hauser wrote:
> I changed translate.c:4597 from return true; to return advance_pc(dc); and it worked.
Whoops, yes indeed. Thanks for the catch.
r~
On 8/21/24 02:59, Carl Hauser wrote:
> Do you want me to submit a patch set fixing this or will you?
I will.
r~