Re: Fwd: newb question : list of elligible computers to debian-68k
I found the errata,
http://www.freescale.com/files/microcontrollers/doc/errata/MC68040DE_D.txt?fsrch=1
10.) (MC68040 & MC68LC040 only) If an A-line, Illegal, CHK, or
Unimplemented Floating Point instruction is in the last 16 bits of a
page and the next page does not exist (or is nonresident with pdt=0),
the proper exception is not reported. Instead of reporting the
proper exception, the 68040 attempts to prefetch the next instruction
on the missing page, and an instruction ATC fault is reported with
the fault address showing the first word of the missing page and the
program counter showing the address of the instruction on the
preceding page.
On Wed, 15 Oct 2008, Brad Boyer wrote:
> On Thu, Oct 16, 2008 at 03:09:06PM +1100, Finn Thain wrote:
>
> The demand-paged nature of executables should be able to trigger this
> bug on the first time through even without swap.
Seems so.
> I will note that this bug is known to affect the line-A trap that the
> classic Mac system uses for system calls. Apple had a workaround for
> this bug for line-A but not for FPU emulation.
I wonder why. Is it not possible to distinguish a false ATC fault from an
unimplemented FP instruction exception?
> ...it should cause both the emulation trap and the page fault on a good
> CPU. If you miss one, it's a broken CPU. It would most likely need to be
> done in an isolated thread to be safe.
I think we could just create a special initrd for the purpose and let the
ATC fault kill the box. Not sure how to arrange for the correct page to be
non-resident when you do this from userspace (is demand paging always done
one page at-a-time?). But if you use an FPU op to generate the fault, and
run it under an FPU emulation, it shouldn't kill any interesting boxes
(i.e. no bug, bug + FPU).
Finn
>
> Brad Boyer
> flar@allandria.com
>
>
>
Reply to: