Subject: Re: CAS and 020 bus error (was: Amiga 3000 video strangeness - next thing)
To: None <port-amiga@NetBSD.org>
From: Frank Wille <frank@phoenix.owl.de>
List: port-m68k
Date: 06/07/2007 16:41:50
Michael van Elst wrote:

> frank@phoenix.owl.de (Frank Wille) writes:
> 
>> I guess it gets into trouble when running into a bus-fault
>> (MMU-exception) while executing CAS. I don't know if the exception
>> handler is prepared to emulate the entire read-modify-write cycle of this
>> instruction?
> 
> The 68020 (unlike the 68040) is supposed to rerun the complete
> instruction.

That explains it. Code for this special case is obviously missing.

I made a test and compiled sys/arch/m68k/m68k/lock_stubs.s for 68010, and
the kernel booted without problems!

So we have these options:
- add the missing 020-support in the exception handler for CAS and TAS
- make the 68010-code in lock_stubs.s compile for 68020 as well

There are certainly more 020-based systems than my A2500 (some Suns?).
Crossposting to port-m68k because of that.

-- 
    _  Frank Wille (frank@phoenix.owl.de)
 _ //  http://sun.hasenbraten.de/~frank/
 \X/   Phx @ #AmigaGer