Hi Andreas, Finn,
On 3/05/23 04:51, Andreas Schwab wrote:
On Mai 02 2023, Finn Thain wrote:
From: Andreas Schwab <schwab@xxxxxxxxxxxxxx>
Signal delivery should only happen at insn boundaries, but due to the
way the 030 handles return from bus error exceptions (the insn is resumed,
not restarted like on the 040/060) the kernel may do it in the middle of
the faulting insn.
I don't think this will work properly when the address cannot be
resolved. The bus error exception will just be raised again
immediately.
Seems certain, even though we haven't observed that in testing yet
(haven't designed the test case for that specifically, mind you).
The (slighty hairy) sole solution to this (that I can see) would be to
only skip signal delivery on the condition that bus_error030 was able to
correct the bus fault.
In any other case bus_error030 will raise SIGKILL or SIGSEGV which must
be delivered right away.
Can we infer that from the state of the fault frame after bus_error030,
or do we have to modify bus_error030 to return success/error codes?
Cheers,
Michael