Re: [hatari-devel] 68000: Wrong order of bus accesses for move.l xx,-(Ay) |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/hatari-devel Archives
]
Toni Wilen schrieb:
> There is even more unknowns, I did some quick tests with address error
> (bus error does not exist in Amigas) and different instruction variants
> modify address register differently:
>
> An = odd address, log An content and fault address in exception routine:
>
> movem.l d0,-(an) ; An not modified, fault address - 2
> move.l d0,-(an) ; An not modified, fault address - 2
> move.l -(an),d0 ; An - 4, fault address - 4
> not.l -(an) ; An - 4, fault address - 4
>
> In above cases it would be interesting to see what An contains in bus
> error exception when second word access causes bus error.
OK, here are the results for bus errors -- use monospaced font to view
the table:
FA An FA An
Bus cycle First Second
MOVEM.L D0,-(An) -2 0 -4 0 (sic!)
MOVE.L D0,-(An) -2 0 -4 -4
MOVE.L -(An),D0 -4 -4 -2 -4
NOT.L -(An) -4 -4 -2 -4
Bus cycle Third Fourth
NOT.L -(An) -2 -4 -4 -4
With some trickery, I managed to provoke bus errors on all four bus
cycles (2*read, 2*write) of NOT.L -(An) separately. "FA" in the table
above refers to the fault address in the stack frame, "An" is the value
of the address register in question.
> Same for (an)+ addressing mode, some instructions probably have already
> added An by 2 before second word access.
Can you propose some instructions to test? Same as above? As this is
quite a time-consuming process, it'll probably take a while until you
get results from me, though.
Regards
Christian
--
Christian Zietz - CHZ-Soft - czietz@xxxxxxx
WWW: http://www.chzsoft.de/
PGP/GnuPG-Key-ID: 0x52CB97F66DA025CA / 0x6DA025CA