[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: 65816 abort line on the AppleIIgs



Matthew Montchalin asked:

>On 31 Oct 2002, Michael J. Mahon wrote:
>|>Can you be more explicit?  If ror <address> involves a read of a
>|>specified memory address, and then rotate some internal register
>|>+carry, before write-back, are you suggesting that it makes no
>|>difference how far into the execution we go, if the abort occurs
>|>prior to the write-back, the whole instruction is executed over
>|>again, after we get back from the Abort handler?
>|
>|I said on the _first_ reference to the memory address.  So the
>|abort would be asserted when the location was read, and before
>|any data was returned.
>
>What about memory mapped I/O?
>
>|If the memory is not present, there can be no valid data.  The
>|important part is that no internal register is updated by the
>|aborted instruction, so that it can be re-executed later.

For a virtual memory implementation, memory-mapped I/O
would normally always be mapped, and so not subject to abort.

However, since a virtual memory system maps all process
addresses, including those associated with I/O, it would be
possible to implement a virtual memory-mapped I/O system,
in which the actual mapping to a device could be done only
if the process has the "rights" to access the device--just as
with data pages.

Again, since the unmapped condition is detected without
any access to real address space, the instruction can be
aborted and transparently re-executed when the mapping
has been made.

There are a number of systems that use virtual memory-
mapped I/O, because the OS's protection mechanism can
be enforced by the normal page table lookup.

-michael

Check out 8-bit Apple sound that will amaze you on my
Home page:  http://members.aol.com/MJMahon/